[
  {
    "path": "README.md",
    "content": "<div align=\"center\">\n  <img height=\"15px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n  <div><b>compromise</b></div>\n  <img src=\"https://user-images.githubusercontent.com/399657/68222691-6597f180-ffb9-11e9-8a32-a7f38aa8bded.png\"/>\n  <div>modest natural language processing</div>\n  <div><code>npm install compromise</code></div>\n  <div align=\"center\">\n    <sub>\n      by\n      <a href=\"https://spencermounta.in/\">Spencer Kelly</a> and\n      <a href=\"https://github.com/spencermountain/compromise/graphs/contributors\">\n        many contributors\n      </a>\n    </sub>\n  </div>\n  <img height=\"22px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n</div>\n\n<div align=\"center\">\n  <div>\n    <a href=\"https://npmjs.org/package/compromise\">\n    <img src=\"https://img.shields.io/npm/v/compromise.svg?style=flat-square\" />\n  </a>\n  <a href=\"https://codecov.io/gh/spencermountain/compromise\">\n    <img src=\"https://codecov.io/gh/spencermountain/compromise/branch/master/graph/badge.svg\" />\n  </a>\n  <a href=\"https://bundlephobia.com/result?p=compromise\">\n    <img src=\"https://img.shields.io/bundlephobia/min/compromise\"/>\n    <!-- <img src=\"https://badge-size.herokuapp.com/spencermountain/compromise/master/builds/compromise.min.js\" /> -->\n  </a>\n  </div>\n  <div align=\"center\">\n    <sub>\n     <a href=\"https://github.com/nlp-compromise/fr-compromise\">french</a> • <a href=\"https://github.com/nlp-compromise/de-compromise\">german</a>  • <a href=\"https://github.com/nlp-compromise/it-compromise\">italian</a> • <a href=\"https://github.com/nlp-compromise/es-compromise\">spanish</a>\n    </sub>\n  </div>\n</div>\n\n<!-- spacer -->\n<img height=\"25px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<div align=\"left\">\ndon't you find it strange,\n<br/>\n<ul>\n  <img height=\"2px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n  <sub>how easy <b>text</b> is to <b>make</b>,</sub>\n  <br/>\n  <img height=\"2px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n&nbsp;<i>↬<sub>ᔐᖜ</sub><b>↬</b></i> &nbsp; <sub></sub>\nand how hard it is to actually <b>parse</b> and <i>use</i>?\n\n</ul>\n</div>\n\n<!-- spacer -->\n<img height=\"45px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<div align=\"left\">\n  <img height=\"10px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>compromise <i><a href=\"https://observablehq.com/@spencermountain/compromise-justification\">tries its best</a></i> to turn text into data.\n  <br/>\n  <img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>it makes limited and sensible decisions.\n  <br/>\n  <sub >\n   <img height=\"15px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/> it's not as smart as you'd think.\n  </sub>\n\n<img height=\"45px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n <!--\n  it is\n  <a href=\"https://docs.compromise.cool/compromise-filesize\">small,\n  <a href=\"https://docs.compromise.cool/compromise-performance\">quick</a>,\n  and often <i><a href=\"https://docs.compromise.cool/compromise-accuracy\">good-enough</a></i>.\n  <br/> -->\n</div>\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n```js\nimport nlp from 'compromise'\n\nlet doc = nlp('she sells seashells by the seashore.')\ndoc.verbs().toPastTense()\ndoc.text()\n// 'she sold seashells by the seashore.'\n```\n\n<!-- spacer -->\n<img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<div align=\"left\">\n<i>don't be fancy, at all:</i>\n</div>\n\n```js\nif (doc.has('simon says #Verb')) {\n  return true\n}\n```\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n<div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221814-05ed1680-ffb8-11e9-8b6b-c7528d163871.png\"/>\n</div>\n\n<div align=\"left\">\n<i>grab parts of the text:</i>\n</div>\n\n```js\nlet doc = nlp(entireNovel)\ndoc.match('the #Adjective of times').text()\n// \"the blurst of times?\"\n```\n\n<div align=\"right\">\n  <a href=\"https://docs.compromise.cool/compromise-match\">match docs</a>\n</div>\n<div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221837-0d142480-ffb8-11e9-9d30-90669f1b897c.png\"/>\n</div>\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<i>and get data:</i>\n\n```js\nimport plg from 'compromise-speech'\nnlp.extend(plg)\n\nlet doc = nlp('Milwaukee has certainly had its share of visitors..')\ndoc.compute('syllables')\ndoc.places().json()\n/*\n[{\n  \"text\": \"Milwaukee\",\n  \"terms\": [{\n    \"normal\": \"milwaukee\",\n    \"syllables\": [\"mil\", \"wau\", \"kee\"]\n  }]\n}]\n*/\n```\n\n<div align=\"right\">\n  <a href=\"https://docs.compromise.cool/compromise-json\">json docs</a>\n</div>\n<div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221814-05ed1680-ffb8-11e9-8b6b-c7528d163871.png\"/>\n</div>\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\navoid the problems of brittle parsers:\n\n```js\nlet doc = nlp(\"we're not gonna take it..\")\n\ndoc.has('gonna') // true\ndoc.has('going to') // true (implicit)\n\n// transform\ndoc.contractions().expand()\ndoc.text()\n// 'we are not going to take it..'\n```\n\n<div align=\"right\">\n  <a href=\"https://docs.compromise.cool/compromise-contractions\">contraction docs</a>\n</div>\n<div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221814-05ed1680-ffb8-11e9-8b6b-c7528d163871.png\"/>\n</div>\n<!-- spacer -->\n<img height=\"30\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\nand whip stuff around like it's data:\n\n```js\nlet doc = nlp('ninety five thousand and fifty two')\ndoc.numbers().add(20)\ndoc.text()\n// 'ninety five thousand and seventy two'\n```\n\n<div align=\"right\">\n  <a href=\"https://docs.compromise.cool/compromise-values\">number docs</a>\n</div>\n\n<div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221837-0d142480-ffb8-11e9-9d30-90669f1b897c.png\"/>\n</div>\n<!-- spacer -->\n<img height=\"30\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<sub>-because it actually is-</sub>\n\n```js\nlet doc = nlp('the purple dinosaur')\ndoc.nouns().toPlural()\ndoc.text()\n// 'the purple dinosaurs'\n```\n\n<div align=\"right\">\n  <a href=\"https://docs.compromise.cool/nouns\">noun docs</a>\n</div>\n<div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221731-e8b84800-ffb7-11e9-8453-6395e0e903fa.png\"/>\n</div>\n\n<!-- spacer -->\n<img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\nUse it on the client-side:\n\n```html\n<script src=\"https://unpkg.com/compromise\"></script>\n<script>\n  var doc = nlp('two bottles of beer')\n  doc.numbers().minus(1)\n  document.body.innerHTML = doc.text()\n  // 'one bottle of beer'\n</script>\n```\n\nor likewise:\n\n```typescript\nimport nlp from 'compromise'\n\nvar doc = nlp('London is calling')\ndoc.verbs().toNegative()\n// 'London is not calling'\n```\n\n<img height=\"75px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<!--\n  bragging graphs\n -->\n<!-- spacer -->\n<img height=\"30\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\ncompromise is **~250kb** (minified):\n\n<div align=\"center\">\n  <!-- filesize -->\n  <a href=\"https://bundlephobia.com/result?p=compromise\">\n    <img width=\"600\" src=\"https://user-images.githubusercontent.com/399657/68234819-14dfc300-ffd0-11e9-8b30-cb8545707b29.png\"/>\n  </a>\n</div>\n\nit's pretty fast. It can run on keypress:\n\n<div align=\"center\">\n  <a href=\"https://observablehq.com/@spencermountain/compromise-performance\">\n    <img width=\"600\" src=\"https://user-images.githubusercontent.com/399657/159795115-ed62440a-be41-424c-baa4-8dd15c48377d.png\"/>\n  </a>\n</div>\n\nit works mainly by <a href=\"https://observablehq.com/@spencermountain/verbs\">conjugating all forms</a> of a basic word list.\n\nThe final lexicon is <a href=\"https://observablehq.com/@spencermountain/compromise-lexicon\">~14,000 words</a>:\n\n<div align=\"center\">\n  <img width=\"600\" src=\"https://user-images.githubusercontent.com/399657/68234805-0d201e80-ffd0-11e9-8dc6-f7a600352555.png\"/>\n</div>\n\nyou can read more about how it works, [here](https://observablehq.com/@spencermountain/compromise-internals). it's weird.\n\n<!-- spacer -->\n<img height=\"75px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<!--\n  one/two/three parts\n -->\n<p align=\"left\">\n  <sub>okay -</sub>\n  <h1>\n    <code>compromise/one</code>\n  </h1>\n  <p align=\"center\">A <code>tokenizer</code> of words, sentences, and punctuation.</p>\n  <img height=\"15px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n<p>\n\n```js\nimport nlp from 'compromise/one'\n\nlet doc = nlp(\"Wayne's World, party time\")\nlet data = doc.json()\n/* [{\n  normal:\"wayne's world party time\",\n    terms:[{ text: \"Wayne's\", normal: \"wayne\" },\n      ...\n      ]\n  }]\n*/\n```\n\n<div align=\"right\">\n  <a href=\"https://docs.compromise.cool/compromise-tokenization\">tokenizer docs</a>\n</div>\n\n<b>compromise/one</b> splits your text up, wraps it in a handy API,\n\n<ul>\n  <sub>and does nothing else -</sub>\n</ul>\n\n<img height=\"25px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<b>/one</b> is quick - most sentences take a 10th of a millisecond.\n\nIt can do <b>~1mb</b> of text a second - or 10 wikipedia pages.\n\n<i>Infinite jest</i> takes 3s.\n\n<div align=\"right\">\n  You can also parallelize, or stream text to it with <a href=\"https://github.com/spencermountain/compromise/tree/master/plugins/speed\">compromise-speed</a>.\n</div>\n\n<!-- spacer -->\n<img height=\"60px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<!-- two -->\n<p align=\"center\">\n  <h1 align=\"left\">\n   <code>compromise/two</code>\n  </h1>\n  <p align=\"center\">A <code>part-of-speech</code> tagger, and grammar-interpreter.</p>\n  <img height=\"15px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n  <p>\n\n```js\nimport nlp from 'compromise/two'\n\nlet doc = nlp(\"Wayne's World, party time\")\nlet str = doc.match('#Possessive #Noun').text()\n// \"Wayne's World\"\n```\n\n<div align=\"right\">\n  <a href=\"https://docs.compromise.cool/compromise-tagger\">tagger docs</a>\n</div>\n\n<p>\n  <img height=\"25px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n</p>\n<b>compromise/two</b> automatically calculates the very basic grammar of each word.\n\n<sub>this is more useful than people sometimes realize.</sub>\n\nLight grammar helps you write cleaner templates, and get closer to the information.\n\n<!-- Part-of-speech tagging is profoundly-difficult task to get 100% on. It is also a profoundly easy task to get 85% on. -->\n\n<img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\ncompromise has <b>83 tags</b>, arranged in <a href=\"https://observablehq.com/@spencermountain/compromise-tags\">a handsome graph</a>.\n\n<b>#FirstName</b> → <b>#Person</b> → <b>#ProperNoun</b> → <b>#Noun</b>\n\nyou can see the grammar of each word by running `doc.debug()`\n\nyou can see the reasoning for each tag with `nlp.verbose('tagger')`.\n\nif you prefer <a href=\"https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html\"><i>Penn tags</i></a>, you can derive them with:\n\n```js\nlet doc = nlp('welcome thrillho')\ndoc.compute('penn')\ndoc.json()\n```\n\n<img height=\"60px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<!-- three -->\n<p align=\"center\">\n  <h1 align=\"left\">\n   <code>compromise/three</code>\n  </h1>\n  <p align=\"center\"><code>Phrase</code> and sentence tooling.</p>\n  <img height=\"15px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n  <p>\n\n```js\nimport nlp from 'compromise/three'\n\nlet doc = nlp(\"Wayne's World, party time\")\nlet str = doc.people().normalize().text()\n// \"wayne\"\n```\n\n<div align=\"right\">\n  <a href=\"https://docs.compromise.cool/compromise-selections\">selection docs</a>\n</div>\n\n<b>compromise/three</b> is a set of tooling to <i>zoom into</i> and operate on parts of a text.\n\n`.numbers()` grabs all the numbers in a document, for example - and extends it with new methods, like `.subtract()`.\n\nWhen you have a phrase, or group of words, you can see additional metadata about it with `.json()`\n\n```js\nlet doc = nlp('four out of five dentists')\nconsole.log(doc.fractions().json())\n/*[{\n    text: 'four out of five',\n    terms: [ [Object], [Object], [Object], [Object] ],\n    fraction: { numerator: 4, denominator: 5, decimal: 0.8 }\n  }\n]*/\n```\n\n```js\nlet doc = nlp('$4.09CAD')\ndoc.money().json()\n/*[{\n    text: '$4.09CAD',\n    terms: [ [Object] ],\n    number: { prefix: '$', num: 4.09, suffix: 'cad'}\n  }\n]*/\n```\n\n<img height=\"80px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n## API\n\n### Compromise/one\n\n##### Output\n\n- **[.text()](https://observablehq.com/@spencermountain/compromise-text)** - return the document as text\n- **[.json()](https://observablehq.com/@spencermountain/compromise-json)** - return the document as data\n- **[.debug()](https://observablehq.com/@spencermountain/compromise-output)** - pretty-print the interpreted document\n- **[.out()](https://observablehq.com/@spencermountain/compromise-output)** - a named or custom output\n- **[.html({})](https://observablehq.com/@spencermountain/compromise-html)** - output custom html tags for matches\n- **[.wrap({})](https://observablehq.com/@spencermountain/compromise-output)** - produce custom output for document matches\n\n##### Utils\n\n- **[.found](https://observablehq.com/@spencermountain/compromise-utils)** _[getter]_ - is this document empty?\n- **[.docs](https://observablehq.com/@spencermountain/compromise-utils)** _[getter]_ get term objects as json\n- **[.length](https://observablehq.com/@spencermountain/compromise-utils)** _[getter]_ - count the # of characters in the document (string length)\n- **[.isView](https://observablehq.com/@spencermountain/compromise-utils)** _[getter]_ - identify a compromise object\n- **[.compute()](https://observablehq.com/@spencermountain/compromise-compute)** - run a named analysis on the document\n- **[.clone()](https://observablehq.com/@spencermountain/compromise-utils)** - deep-copy the document, so that no references remain\n- **[.termList()](https://observablehq.com/@spencermountain/compromise-accessors)** - return a flat list of all Term objects in match\n- **[.cache({})](https://observablehq.com/@spencermountain/compromise-cache)** - freeze the current state of the document, for speed-purposes\n- **[.uncache()](https://observablehq.com/@spencermountain/compromise-cache)** - un-freezes the current state of the document, so it may be transformed\n- **[.freeze({})](https://observablehq.com/@spencermountain/compromise-freeze)** - prevent any tags from being removed, in these terms\n- **[.unfreeze({})](https://observablehq.com/@spencermountain/compromise-freeze)** - allow tags to change again, as default\n\n##### Accessors\n\n- **[.all()](https://observablehq.com/@spencermountain/compromise-utils)** - return the whole original document ('zoom out')\n- **[.terms()](https://observablehq.com/@spencermountain/compromise-selections)** - split-up results by each individual term\n- **[.first(n)](https://observablehq.com/@spencermountain/compromise-accessors)** - use only the first result(s)\n- **[.last(n)](https://observablehq.com/@spencermountain/compromise-accessors)** - use only the last result(s)\n- **[.slice(n,n)](https://observablehq.com/@spencermountain/compromise-accessors)** - grab a subset of the results\n- **[.eq(n)](https://observablehq.com/@spencermountain/compromise-accessors)** - use only the nth result\n- **[.firstTerms()](https://observablehq.com/@spencermountain/compromise-accessors)** - get the first word in each match\n- **[.lastTerms()](https://observablehq.com/@spencermountain/compromise-accessors)** - get the end word in each match\n- **[.fullSentences()](https://observablehq.com/@spencermountain/compromise-accessors)** - get the whole sentence for each match\n- **[.groups()](https://observablehq.com/@spencermountain/compromise-accessors)** - grab any named capture-groups from a match\n- **[.wordCount()](https://observablehq.com/@spencermountain/compromise-utils)** - count the # of terms in the document\n- **[.confidence()](https://observablehq.com/@spencermountain/compromise-utils)** - an average score for pos tag interpretations\n\n##### Match\n\n_(match methods use the [match-syntax](https://docs.compromise.cool/compromise-match-syntax).)_\n\n- **[.match('')](https://observablehq.com/@spencermountain/compromise-match)** - return a new Doc, with this one as a parent\n- **[.not('')](https://observablehq.com/@spencermountain/compromise-match)** - return all results except for this\n- **[.matchOne('')](https://observablehq.com/@spencermountain/compromise-match)** - return only the first match\n- **[.if('')](https://observablehq.com/@spencermountain/compromise-match)** - return each current phrase, only if it contains this match ('only')\n- **[.ifNo('')](https://observablehq.com/@spencermountain/compromise-match)** - Filter-out any current phrases that have this match ('notIf')\n- **[.has('')](https://observablehq.com/@spencermountain/compromise-match)** - Return a boolean if this match exists\n- **[.before('')](https://observablehq.com/@spencermountain/compromise-match)** - return all terms before a match, in each phrase\n- **[.after('')](https://observablehq.com/@spencermountain/compromise-match)** - return all terms after a match, in each phrase\n- **[.union()](https://observablehq.com/@spencermountain/compromise-set)** - return combined matches without duplicates\n- **[.intersection()](https://observablehq.com/@spencermountain/compromise-set)** - return only duplicate matches\n- **[.complement()](https://observablehq.com/@spencermountain/compromise-set)** - get everything not in another match\n- **[.settle()](https://observablehq.com/@spencermountain/compromise-set)** - remove overlaps from matches\n- **[.growRight('')](https://observablehq.com/@spencermountain/compromise-match)** - add any matching terms immediately after each match\n- **[.growLeft('')](https://observablehq.com/@spencermountain/compromise-match)** - add any matching terms immediately before each match\n- **[.grow('')](https://observablehq.com/@spencermountain/compromise-match)** - add any matching terms before or after each match\n- **[.sweep(net)](https://observablehq.com/@spencermountain/compromise-sweep)** - apply a series of match objects to the document\n- **[.splitOn('')](https://observablehq.com/@spencermountain/compromise-split)** - return a Document with three parts for every match ('splitOn')\n- **[.splitBefore('')](https://observablehq.com/@spencermountain/compromise-split)** - partition a phrase before each matching segment\n- **[.splitAfter('')](https://observablehq.com/@spencermountain/compromise-split)** - partition a phrase after each matching segment\n- **[.join()](https://observablehq.com/@spencermountain/compromise-split)** - merge any neighbouring terms in each match\n- **[.joinIf(leftMatch, rightMatch)](https://observablehq.com/@spencermountain/compromise-split)** - merge any neighbouring terms under given conditions\n- **[.lookup([])](https://observablehq.com/@spencermountain/compromise-match)** - quick find for an array of string matches\n- **[.autoFill()](https://observablehq.com/@spencermountain/compromise-typeahead)** - create type-ahead assumptions on the document\n\n##### Tag\n\n- **[.tag('')](https://observablehq.com/@spencermountain/compromise-tagger)** - Give all terms the given tag\n- **[.tagSafe('')](https://observablehq.com/@spencermountain/compromise-tagger)** - Only apply tag to terms if it is consistent with current tags\n- **[.unTag('')](https://observablehq.com/@spencermountain/compromise-tagger)** - Remove this term from the given terms\n- **[.canBe('')](https://observablehq.com/@spencermountain/compromise-tagger)** - return only the terms that can be this tag\n\n##### Case\n\n- **[.toLowerCase()](https://observablehq.com/@spencermountain/compromise-case)** - turn every letter of every term to lower-cse\n- **[.toUpperCase()](https://observablehq.com/@spencermountain/compromise-case)** - turn every letter of every term to upper case\n- **[.toTitleCase()](https://observablehq.com/@spencermountain/compromise-case)** - upper-case the first letter of each term\n- **[.toCamelCase()](https://observablehq.com/@spencermountain/compromise-case)** - remove whitespace and title-case each term\n\n##### Whitespace\n\n- **[.pre('')](https://observablehq.com/@spencermountain/compromise-whitespace)** - add this punctuation or whitespace before each match\n- **[.post('')](https://observablehq.com/@spencermountain/compromise-whitespace)** - add this punctuation or whitespace after each match\n- **[.trim()](https://observablehq.com/@spencermountain/compromise-whitespace)** - remove start and end whitespace\n- **[.hyphenate()](https://observablehq.com/@spencermountain/compromise-whitespace)** - connect words with hyphen, and remove whitespace\n- **[.dehyphenate()](https://observablehq.com/@spencermountain/compromise-whitespace)** - remove hyphens between words, and set whitespace\n- **[.toQuotations()](https://observablehq.com/@spencermountain/compromise-whitespace)** - add quotation marks around these matches\n- **[.toParentheses()](https://observablehq.com/@spencermountain/compromise-whitespace)** - add brackets around these matches\n\n##### Loops\n\n- **[.map(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - run each phrase through a function, and create a new document\n- **[.forEach(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - run a function on each phrase, as an individual document\n- **[.filter(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - return only the phrases that return true\n- **[.find(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - return a document with only the first phrase that matches\n- **[.some(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - return true or false if there is one matching phrase\n- **[.random(fn)](https://observablehq.com/@spencermountain/compromise-loops)** - sample a subset of the results\n\n##### Insert\n\n- **[.replace(match, replace)](https://observablehq.com/@spencermountain/compromise-insert)** - search and replace match with new content\n- **[.replaceWith(replace)](https://observablehq.com/@spencermountain/compromise-insert)** - substitute-in new text\n- **[.remove()](https://observablehq.com/@spencermountain/compromise-insert)** - fully remove these terms from the document\n- **[.insertBefore(str)](https://observablehq.com/@spencermountain/compromise-insert)** - add these new terms to the front of each match (prepend)\n- **[.insertAfter(str)](https://observablehq.com/@spencermountain/compromise-insert)** - add these new terms to the end of each match (append)\n- **[.concat()](https://observablehq.com/@spencermountain/compromise-insert)** - add these new things to the end\n- **[.swap(fromLemma, toLemma)](https://observablehq.com/@spencermountain/compromise-root)** - smart replace of root-words,using proper conjugation\n\n##### Transform\n\n- **[.sort('method')](https://observablehq.com/@spencermountain/compromise-sorting)** - re-arrange the order of the matches (in place)\n- **[.reverse()](https://observablehq.com/@spencermountain/compromise-sorting)** - reverse the order of the matches, but not the words\n- **[.unique()](https://observablehq.com/@spencermountain/compromise-sorting)** - remove any duplicate matches\n\n##### Lib\n\n_(these methods are on the main `nlp` object)_\n\n- **[nlp.tokenize(str)](https://observablehq.com/@spencermountain/compromise-tokenization)** - parse text without running POS-tagging\n- **[nlp.lazy(str, match)](https://observablehq.com/@spencermountain/compromise-performance)** - scan through a text with minimal analysis\n- **[nlp.plugin({})](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - mix in a compromise-plugin\n- **[nlp.parseMatch(str)](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - pre-parse any match statements into json\n- **[nlp.world()](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - grab or change library internals\n- **[nlp.model()](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - grab all current linguistic data\n- **[nlp.methods()](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - grab or change internal methods\n- **[nlp.hooks()](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - see which compute methods run automatically\n- **[nlp.verbose(mode)](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - log our decision-making for debugging\n- **[nlp.version](https://observablehq.com/@spencermountain/compromise-constructor-methods)** - current semver version of the library\n\n- **[nlp.addWords(obj, isFrozen?)](https://observablehq.com/@spencermountain/compromise-plugin)** - add new words to the lexicon\n- **[nlp.addTags(obj)](https://observablehq.com/@spencermountain/compromise-plugin)** - add new tags to the tagSet\n- **[nlp.typeahead(arr)](https://observablehq.com/@spencermountain/compromise-typeahead)** - add words to the auto-fill dictionary\n- **[nlp.buildTrie(arr)](https://observablehq.com/@spencermountain/compromise-lookup)** - compile a list of words into a fast lookup form\n- **[nlp.buildNet(arr)](https://observablehq.com/@spencermountain/compromise-sweep)** - compile a list of matches into a fast match form\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n### compromise/two:\n\n##### Contractions\n\n- **[.contractions()](https://observablehq.com/@spencermountain/compromise-contractions)** - things like \"didn't\"\n- **[.contractions().expand()](https://observablehq.com/@spencermountain/compromise-contractions)** - things like \"didn't\"\n- **[.contract()](https://observablehq.com/@spencermountain/compromise-contractions)** - things like \"didn't\"\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n### compromise/three:\n\n- **[.normalize({})](https://observablehq.com/@spencermountain/compromise-normalization)** - clean-up the text in various ways\n\n##### Nouns\n\n- **[.nouns()](https://observablehq.com/@spencermountain/nouns)** - return any subsequent terms tagged as a Noun\n  - **[.nouns().json()](https://observablehq.com/@spencermountain/nouns)** - overloaded output with noun metadata\n  - **[.nouns().parse()](https://observablehq.com/@spencermountain/nouns)** - get tokenized noun-phrase\n  - **[.nouns().isPlural()](https://observablehq.com/@spencermountain/nouns)** - return only plural nouns\n  - **[.nouns().isSingular()](https://observablehq.com/@spencermountain/nouns)** - return only singular nouns\n  - **[.nouns().toPlural()](https://observablehq.com/@spencermountain/nouns)** - `'football captain' → 'football captains'`\n  - **[.nouns().toSingular()](https://observablehq.com/@spencermountain/nouns)** - `'turnovers' → 'turnover'`\n  - **[.nouns().adjectives()](https://observablehq.com/@spencermountain/nouns)** - get any adjectives describing this noun\n\n##### Verbs\n\n- **[.verbs()](https://observablehq.com/@spencermountain/verbs)** - return any subsequent terms tagged as a Verb\n  - **[.verbs().json()](https://observablehq.com/@spencermountain/verbs)** - overloaded output with verb metadata\n  - **[.verbs().parse()](https://observablehq.com/@spencermountain/verbs)** - get tokenized verb-phrase\n  - **[.verbs().subjects()](https://observablehq.com/@spencermountain/verbs)** - what is doing the verb action\n  - **[.verbs().adverbs()](https://observablehq.com/@spencermountain/verbs)** - return the adverbs describing this verb.\n  - **[.verbs().isSingular()](https://observablehq.com/@spencermountain/verbs)** - return singular verbs like 'spencer walks'\n  - **[.verbs().isPlural()](https://observablehq.com/@spencermountain/verbs)** - return plural verbs like 'we walk'\n  - **[.verbs().isImperative()](https://observablehq.com/@spencermountain/verbs)** - only instruction verbs like 'eat it!'\n  - **[.verbs().toPastTense()](https://observablehq.com/@spencermountain/verbs)** - `'will go' → 'went'`\n  - **[.verbs().toPresentTense()](https://observablehq.com/@spencermountain/verbs)** - `'walked' → 'walks'`\n  - **[.verbs().toFutureTense()](https://observablehq.com/@spencermountain/verbs)** - `'walked' → 'will walk'`\n  - **[.verbs().toInfinitive()](https://observablehq.com/@spencermountain/verbs)** - `'walks' → 'walk'`\n  - **[.verbs().toGerund()](https://observablehq.com/@spencermountain/verbs)** - `'walks' → 'walking'`\n  - **[.verbs().toPastParticiple()](https://observablehq.com/@spencermountain/verbs)** - `'drive' → 'had driven'`\n  - **[.verbs().conjugate()](https://observablehq.com/@spencermountain/verbs)** - return all conjugations of these verbs\n  - **[.verbs().isNegative()](https://observablehq.com/@spencermountain/verbs)** - return verbs with 'not', 'never' or 'no'\n  - **[.verbs().isPositive()](https://observablehq.com/@spencermountain/verbs)** - only verbs without 'not', 'never' or 'no'\n  - **[.verbs().toNegative()](https://observablehq.com/@spencermountain/verbs)** - `'went' → 'did not go'`\n  - **[.verbs().toPositive()](https://observablehq.com/@spencermountain/verbs)** - `\"didn't study\" → 'studied'`\n\n##### Numbers\n\n- **[.numbers()](https://observablehq.com/@spencermountain/compromise-values)** - grab all written and numeric values\n  - **[.numbers().parse()](https://observablehq.com/@spencermountain/compromise-values)** - get tokenized number phrase\n  - **[.numbers().get()](https://observablehq.com/@spencermountain/compromise-values)** - get a simple javascript number\n  - **[.numbers().json()](https://observablehq.com/@spencermountain/compromise-values)** - overloaded output with number metadata\n  - **[.numbers().toNumber()](https://observablehq.com/@spencermountain/compromise-values)** - convert 'five' to `5`\n  - **[.numbers().toLocaleString()](https://observablehq.com/@spencermountain/compromise-values)** - add commas, or nicer formatting for numbers\n  - **[.numbers().toText()](https://observablehq.com/@spencermountain/compromise-values)** - convert '5' to `five`\n  - **[.numbers().toOrdinal()](https://observablehq.com/@spencermountain/compromise-values)** - convert 'five' to `fifth` or `5th`\n  - **[.numbers().toCardinal()](https://observablehq.com/@spencermountain/compromise-values)** - convert 'fifth' to `five` or `5`\n  - **[.numbers().isOrdinal()](https://observablehq.com/@spencermountain/compromise-values)** - return only ordinal numbers\n  - **[.numbers().isCardinal()](https://observablehq.com/@spencermountain/compromise-values)** - return only cardinal numbers\n  - **[.numbers().isEqual(n)](https://observablehq.com/@spencermountain/compromise-values)** - return numbers with this value\n  - **[.numbers().greaterThan(min)](https://observablehq.com/@spencermountain/compromise-values)** - return numbers bigger than n\n  - **[.numbers().lessThan(max)](https://observablehq.com/@spencermountain/compromise-values)** - return numbers smaller than n\n  - **[.numbers().between(min, max)](https://observablehq.com/@spencermountain/compromise-values)** - return numbers between min and max\n  - **[.numbers().isUnit(unit)](https://observablehq.com/@spencermountain/compromise-values)** - return only numbers in the given unit, like 'km'\n  - **[.numbers().set(n)](https://observablehq.com/@spencermountain/compromise-values)** - set number to n\n  - **[.numbers().add(n)](https://observablehq.com/@spencermountain/compromise-values)** - increase number by n\n  - **[.numbers().subtract(n)](https://observablehq.com/@spencermountain/compromise-values)** - decrease number by n\n  - **[.numbers().increment()](https://observablehq.com/@spencermountain/compromise-values)** - increase number by 1\n  - **[.numbers().decrement()](https://observablehq.com/@spencermountain/compromise-values)** - decrease number by 1\n- **[.money()](https://observablehq.com/@spencermountain/compromise-values)** - things like `'$2.50'`\n  - **[.money().get()](https://observablehq.com/@spencermountain/compromise-values)** - retrieve the parsed amount(s) of money\n  - **[.money().json()](https://observablehq.com/@spencermountain/compromise-values)** - currency + number info\n  - **[.money().currency()](https://observablehq.com/@spencermountain/compromise-values)** - which currency the money is in\n- **[.fractions()](https://observablehq.com/@spencermountain/compromise-values)** - like '2/3rds' or 'one out of five'\n  - **[.fractions().parse()](https://observablehq.com/@spencermountain/compromise-values)** - get tokenized fraction\n  - **[.fractions().get()](https://observablehq.com/@spencermountain/compromise-values)** - simple numerator, denominator data\n  - **[.fractions().json()](https://observablehq.com/@spencermountain/compromise-values)** - json method overloaded with fractions data\n  - **[.fractions().toDecimal()](https://observablehq.com/@spencermountain/compromise-values)** - '2/3' -> '0.66'\n  - **[.fractions().normalize()](https://observablehq.com/@spencermountain/compromise-values)** - 'four out of 10' -> '4/10'\n  - **[.fractions().toText()](https://observablehq.com/@spencermountain/compromise-values)** - '4/10' -> 'four tenths'\n  - **[.fractions().toPercentage()](https://observablehq.com/@spencermountain/compromise-values)** - '4/10' -> '40%'\n- **[.percentages()](https://observablehq.com/@spencermountain/compromise-values)** - like '2.5%'\n  - **[.percentages().get()](https://observablehq.com/@spencermountain/compromise-values)** - return the percentage number / 100\n  - **[.percentages().json()](https://observablehq.com/@spencermountain/compromise-values)** - json overloaded with percentage information\n  - **[.percentages().toFraction()](https://observablehq.com/@spencermountain/compromise-values)** - '80%' -> '8/10'\n\n##### Sentences\n\n- **[.sentences()](https://observablehq.com/@spencermountain/compromise-sentences)** - return a sentence class with additional methods\n  - **[.sentences().json()](https://observablehq.com/@spencermountain/compromise-sentences)** - overloaded output with sentence metadata\n  <!-- - **[.sentences().subjects()](https://observablehq.com/@spencermountain/compromise-sentences)** - return the main noun of each sentence -->\n  - **[.sentences().toPastTense()](https://observablehq.com/@spencermountain/compromise-sentences)** - `he walks` -> `he walked`\n  - **[.sentences().toPresentTense()](https://observablehq.com/@spencermountain/compromise-sentences)** - `he walked` -> `he walks`\n  - **[.sentences().toFutureTense()](https://observablehq.com/@spencermountain/compromise-sentences)** -- `he walks` -> `he will walk`\n  - **[.sentences().toInfinitive()](https://observablehq.com/@spencermountain/compromise-sentences)** -- verb root-form `he walks` -> `he walk`\n  - **[.sentences().toNegative()](https://observablehq.com/@spencermountain/compromise-sentences)** - - `he walks` -> `he didn't walk`\n  - **[.sentences().isQuestion()](https://observablehq.com/@spencermountain/compromise-sentences)** - return questions with a `?`\n  - **[.sentences().isExclamation()](https://observablehq.com/@spencermountain/compromise-sentences)** - return sentences with a `!`\n  - **[.sentences().isStatement()](https://observablehq.com/@spencermountain/compromise-sentences)** - return sentences without `?` or `!`\n\n##### Adjectives\n\n- **[.adjectives()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'quick'`\n  - **[.adjectives().json()](https://observablehq.com/@spencermountain/compromise-selections)** - get adjective metadata\n  - **[.adjectives().conjugate()](https://observablehq.com/@spencermountain/compromise-selections)** - return all inflections of these adjectives\n  - **[.adjectives().adverbs()](https://observablehq.com/@spencermountain/compromise-selections)** - get adverbs describing this adjective\n  - **[.adjectives().toComparative()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quicker'\n  - **[.adjectives().toSuperlative()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quickest'\n  - **[.adjectives().toAdverb()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quickly'\n  - **[.adjectives().toNoun()](https://observablehq.com/@spencermountain/compromise-selections)** - 'quick' -> 'quickness'\n\n##### Misc selections\n\n- **[.clauses()](https://observablehq.com/@spencermountain/compromise-selections)** - split-up sentences into multi-term phrases\n- **[.chunks()](https://observablehq.com/@spencermountain/compromise-selections)** - split-up sentences noun-phrases and verb-phrases\n- **[.hyphenated()](https://observablehq.com/@spencermountain/compromise-selections)** - all terms connected with a hyphen or dash like `'wash-out'`\n- **[.phoneNumbers()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'(939) 555-0113'`\n- **[.hashTags()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'#nlp'`\n- **[.emails()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'hi@compromise.cool'`\n- **[.emoticons()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `:)`\n- **[.emojis()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `💋`\n- **[.atMentions()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'@nlp_compromise'`\n- **[.urls()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'compromise.cool'`\n- **[.pronouns()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'he'`\n- **[.conjunctions()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'but'`\n- **[.prepositions()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'of'`\n- **[.abbreviations()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'Mrs.'`\n- **[.people()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - names like 'John F. Kennedy'\n  - **[.people().json()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - get person-name metadata\n  - **[.people().parse()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - get person-name interpretation\n- **[.places()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - like 'Paris, France'\n- **[.organizations()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - like 'Google, Inc'\n- **[.topics()](https://observablehq.com/@spencermountain/topics-named-entity-recognition)** - `people()` + `places()` + `organizations()`\n- **[.adverbs()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'quickly'`\n  - **[.adverbs().json()](https://observablehq.com/@spencermountain/compromise-selections)** - get adverb metadata\n- **[.acronyms()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `'FBI'`\n  - **[.acronyms().strip()](https://observablehq.com/@spencermountain/compromise-selections)** - remove periods from acronyms\n  - **[.acronyms().addPeriods()](https://observablehq.com/@spencermountain/compromise-selections)** - add periods to acronyms\n- **[.parentheses()](https://observablehq.com/@spencermountain/compromise-selections)** - return anything inside (parentheses)\n  - **[.parentheses().strip()](https://observablehq.com/@spencermountain/compromise-selections)** - remove brackets\n- **[.possessives()](https://observablehq.com/@spencermountain/compromise-selections)** - things like `\"Spencer's\"`\n  - **[.possessives().strip()](https://observablehq.com/@spencermountain/compromise-selections)** - \"Spencer's\" -> \"Spencer\"\n- **[.quotations()](https://observablehq.com/@spencermountain/compromise-selections)** - return any terms inside paired quotation marks\n  - **[.quotations().strip()](https://observablehq.com/@spencermountain/compromise-selections)** - remove quotation marks\n- **[.slashes()](https://observablehq.com/@spencermountain/compromise-selections)** - return any terms grouped by slashes\n  - **[.slashes().split()](https://observablehq.com/@spencermountain/compromise-selections)** - turn 'love/hate' into 'love hate'\n\n<p>\n<img height=\"85px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n</p>\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/399657/68221814-05ed1680-ffb8-11e9-8b6b-c7528d163871.png\"/>\n</div>\n\n### .extend():\n\nThis library comes with a considerate, common-sense baseline for english grammar.\n\nYou're free to change, or lay-waste to any settings - which is the fun part actually.\n\nthe easiest part is just to suggest tags for any given words:\n\n```js\nlet myWords = {\n  kermit: 'FirstName',\n  fozzie: 'FirstName',\n}\nlet doc = nlp(muppetText, myWords)\n```\n\nor make heavier changes with a [compromise-plugin](https://observablehq.com/@spencermountain/compromise-plugins).\n\n```js\nimport nlp from 'compromise'\nnlp.extend({\n  // add new tags\n  tags: {\n    Character: {\n      isA: 'Person',\n      notA: 'Adjective',\n    },\n  },\n  // add or change words in the lexicon\n  words: {\n    kermit: 'Character',\n    gonzo: 'Character',\n  },\n  // change inflections\n  irregulars: {\n    get: {\n      pastTense: 'gotten',\n      gerund: 'gettin',\n    },\n  },\n  // add new methods to compromise\n  api: View => {\n    View.prototype.kermitVoice = function () {\n      this.sentences().prepend('well,')\n      this.match('i [(am|was)]').prepend('um,')\n      return this\n    }\n  },\n})\n```\n\n<div align=\"right\">\n  <a href=\"https://docs.compromise.cool/compromise-plugins\">.plugin() docs</a>\n</div>\n<div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221848-11404200-ffb8-11e9-90cd-3adee8d8564f.png\"/>\n</div>\n\n<!-- spacer -->\n<div >\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n</div>\n\n### Docs:\n\n##### gentle introduction:\n\n- **[#1) Input → output](https://docs.compromise.cool/tutorial-1)**\n- **[#2) Match & transform](https://docs.compromise.cool/compromise-tutorial-2)**\n- **[#3) Making a chat-bot](https://docs.compromise.cool/compromise-making-a-bot)**\n  <!-- * **[Tutorial #4]()**  -  Making a plugin -->\n\n<div >\n  <img height=\"25px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n</div>\n\n##### Documentation:\n\n| Concepts                                                                                    |                                               API                                               |                                                                                Plugins |\n| ------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------: | -------------------------------------------------------------------------------------: |\n| [Accuracy](https://observablehq.com/@spencermountain/compromise-accuracy)                   |           [Accessors](https://observablehq.com/@spencermountain/compromise-accessors)           |          [Adjectives](https://observablehq.com/@spencermountain/compromise-adjectives) |\n| [Caching](https://observablehq.com/@spencermountain/compromise-cache)                       | [Constructor-methods](https://observablehq.com/@spencermountain/compromise-constructor-methods) |                    [Dates](https://observablehq.com/@spencermountain/compromise-dates) |\n| [Case](https://observablehq.com/@spencermountain/compromise-case)                           |        [Contractions](https://observablehq.com/@spencermountain/compromise-contractions)        |                  [Export](https://observablehq.com/@spencermountain/compromise-export) |\n| [Filesize](https://observablehq.com/@spencermountain/compromise-filesize)                   |              [Insert](https://observablehq.com/@spencermountain/compromise-insert)              |                      [Hash](https://observablehq.com/@spencermountain/compromise-hash) |\n| [Internals](https://observablehq.com/@spencermountain/compromise-internals)                 |                [Json](https://observablehq.com/@spencermountain/compromise-json)                |                      [Html](https://observablehq.com/@spencermountain/compromise-html) |\n| [Justification](https://observablehq.com/@spencermountain/compromise-justification)         |        [Character Offsets](https://observablehq.com/@spencermountain/compromise-offsets)        |              [Keypress](https://observablehq.com/@spencermountain/compromise-keypress) |\n| [Lexicon](https://observablehq.com/@spencermountain/compromise-lexicon)                     |               [Loops](https://observablehq.com/@spencermountain/compromise-loops)               |                   [Ngrams](https://observablehq.com/@spencermountain/compromise-ngram) |\n| [Match-syntax](https://observablehq.com/@spencermountain/compromise-match-syntax)           |               [Match](https://observablehq.com/@spencermountain/compromise-match)               |                 [Numbers](https://observablehq.com/@spencermountain/compromise-values) |\n| [Performance](https://observablehq.com/@spencermountain/compromise-performance)             |                    [Nouns](https://observablehq.com/@spencermountain/nouns)                     |          [Paragraphs](https://observablehq.com/@spencermountain/compromise-paragraphs) |\n| [Plugins](https://observablehq.com/@spencermountain/compromise-plugins)                     |              [Output](https://observablehq.com/@spencermountain/compromise-output)              |                      [Scan](https://observablehq.com/@spencermountain/compromise-scan) |\n| [Projects](https://observablehq.com/@spencermountain/compromise-projects)                   |          [Selections](https://observablehq.com/@spencermountain/compromise-selections)          |            [Sentences](https://observablehq.com/@spencermountain/compromise-sentences) |\n| [Tagger](https://observablehq.com/@spencermountain/compromise-tagger)                       |             [Sorting](https://observablehq.com/@spencermountain/compromise-sorting)             |            [Syllables](https://observablehq.com/@spencermountain/compromise-syllables) |\n| [Tags](https://observablehq.com/@spencermountain/compromise-tags)                           |               [Split](https://observablehq.com/@spencermountain/compromise-split)               |            [Pronounce](https://observablehq.com/@spencermountain/compromise-pronounce) |\n| [Tokenization](https://observablehq.com/@spencermountain/compromise-tokenization)           |                [Text](https://observablehq.com/@spencermountain/compromise-text)                |                  [Strict](https://observablehq.com/@spencermountain/compromise-strict) |\n| [Named-Entities](https://observablehq.com/@spencermountain/topics-named-entity-recognition) |               [Utils](https://observablehq.com/@spencermountain/compromise-utils)               |            [Penn-tags](https://observablehq.com/@spencermountain/compromise-penn-tags) |\n| [Whitespace](https://observablehq.com/@spencermountain/compromise-whitespace)               |                    [Verbs](https://observablehq.com/@spencermountain/verbs)                     | [Typeahead](https://observablehq.com/@spencermountain/compromise/compromise-typeahead) |\n| [World data](https://observablehq.com/@spencermountain/compromise-world)                    |       [Normalization](https://observablehq.com/@spencermountain/compromise-normalization)       |                    [Sweep](https://observablehq.com/@spencermountain/compromise-sweep) |\n| [Fuzzy-matching](https://observablehq.com/@spencermountain/compromise-fuzzy-matching)       |          [Typescript](https://observablehq.com/@spencermountain/compromise-typescript)          |              [Mutation](https://observablehq.com/@spencermountain/compromise-mutation) |\n| [Root-forms](https://observablehq.com/@spencermountain/compromise-root)                     |\n\n<div >\n  <img height=\"25px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n</div>\n\n##### Talks:\n\n- **[Language as an Interface](https://www.youtube.com/watch?v=WuPVS2tCg8s)** - by Spencer Kelly\n- **[Coding Chat Bots](https://www.youtube.com/watch?v=c_hmwFwvO0U)** - by KahWee Teng\n- **[On Typing and data](https://vimeo.com/496095722)** - by Spencer Kelly\n\n##### Articles:\n\n- **[Geocoding Social Conversations with NLP and JavaScript](http://compromise.cool)** - by Microsoft\n- **[Microservice Recipe](https://eventn.com/recipes/text-parsing-with-nlp-compromise)** - by Eventn\n- **[Adventure Game Sentence Parsing with Compromise](https://killalldefects.com/2020/02/20/adventure-game-sentence-parsing-with-compromise/)**\n- **[Building Text-Based Games](https://killalldefects.com/2019/09/24/building-text-based-games-with-compromise-nlp/)** - by Matt Eland\n- **[Fun with javascript in BigQuery](https://medium.com/@hoffa/new-in-bigquery-persistent-udfs-c9ea4100fd83#6e09)** - by Felipe Hoffa\n- **[Natural Language Processing... in the Browser?](https://dev.to/charlesdlandau/natural-language-processing-in-the-browser-52hj)** - by Charles Landau\n\n##### Some fun Applications:\n\n- **[Automated Bechdel Test](https://github.com/guardian/bechdel-test)** - by The Guardian\n- **[Story generation framework](https://perchance.org/welcome)** - by Jose Phrocca\n- **[Tumbler blog of lists](https://leanstooneside.tumblr.com/)** - horse-ebooks-like lists - by Michael Paulukonis\n- **[Video Editing from Transcription](https://newtheory.io/)** - by New Theory\n- **[Browser extension Fact-checking](https://github.com/AlexanderKidd/FactoidL)** - by Alexander Kidd\n- **[Siri shortcut](https://routinehub.co/shortcut/3260)** - by Michael Byrns\n- **[Amazon skill](https://github.com/tajddin/voiceplay)** - by Tajddin Maghni\n- **[Tasking Slack-bot](https://github.com/kevinsuh/toki)** - by Kevin Suh\n  [[see more]](https://observablehq.com/@spencermountain/compromise-projects)\n\n##### Comparisons\n\n- [Compromise and Spacy](https://observablehq.com/@spencermountain/compromise-and-spacy)\n- [Compromise and NLTK](https://observablehq.com/@spencermountain/compromise-and-nltk)\n\n<!-- spacer -->\n<div align=\"center\">\n  <img height=\"25px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n  <hr/>\n</div>\n<div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221632-b9094000-ffb7-11e9-99e0-b48edd6cdf8a.png\"/>\n</div>\n\n<!-- <div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221824-09809d80-ffb8-11e9-9ef0-6ed3574b0ce8.png\"/>\n</div> -->\n\n### Plugins:\n\nThese are some helpful extensions:\n\n##### Dates\n\n`npm install compromise-dates`\n\n- **[.dates()](https://observablehq.com/@spencermountain/compromise-dates)** - find dates like `June 8th` or `03/03/18`\n  - **[.dates().get()](https://observablehq.com/@spencermountain/compromise-dates)** - simple start/end json result\n  - **[.dates().json()](https://observablehq.com/@spencermountain/compromise-dates)** - overloaded output with date metadata\n  - **[.dates().format('')](https://observablehq.com/@spencermountain/compromise-dates)** - convert the dates to specific formats\n  - **[.dates().toShortForm()](https://observablehq.com/@spencermountain/compromise-dates)** - convert 'Wednesday' to 'Wed', etc\n  - **[.dates().toLongForm()](https://observablehq.com/@spencermountain/compromise-dates)** - convert 'Feb' to 'February', etc\n- **[.durations()](https://observablehq.com/@spencermountain/compromise-dates)** - `2 weeks` or `5mins`\n  - **[.durations().get()](https://observablehq.com/@spencermountain/compromise-dates)** - return simple json for duration\n  - **[.durations().json()](https://observablehq.com/@spencermountain/compromise-dates)** - overloaded output with duration metadata\n- **[.times()](https://observablehq.com/@spencermountain/compromise-dates)** - `4:30pm` or `half past five`\n  - **[.times().get()](https://observablehq.com/@spencermountain/compromise-dates)** - return simple json for times\n  - **[.times().json()](https://observablehq.com/@spencermountain/compromise-dates)** - overloaded output with time metadata\n\n##### Stats\n\n`npm install compromise-stats`\n\n- **[.tfidf({})](https://observablehq.com/@spencermountain/compromise-tfidf)** - rank words by frequency and uniqueness\n\n- **[.ngrams({})](https://observablehq.com/@spencermountain/compromise-ngram)** - list all repeating sub-phrases, by word-count\n- **[.unigrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams with one word\n- **[.bigrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams with two words\n- **[.trigrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams with three words\n- **[.startgrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams including the first term of a phrase\n- **[.endgrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams including the last term of a phrase\n- **[.edgegrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams including the first or last term of a phrase\n\n##### Speech\n\n`npm install compromise-syllables`\n\n- **[.syllables()](https://observablehq.com/@spencermountain/compromise-syllables)** - split each term by its typical pronunciation\n- **[.soundsLike()](https://observablehq.com/@spencermountain/compromise-soundsLike)** - produce a estimated pronunciation\n\n##### Wikipedia\n\n`npm install compromise-wikipedia`\n\n- **[.wikipedia()](https://observablehq.com/@spencermountain/compromise-wikipedia)** - compressed article reconciliation\n\n<!-- spacer -->\n<div >\n  <img height=\"25px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n  <hr/>\n</div>\n\n### Typescript\n\nwe're committed to typescript/deno support, both in main and in the official-plugins:\n\n```ts\nimport nlp from 'compromise'\nimport stats from 'compromise-stats'\n\nconst nlpEx = nlp.extend(stats)\n\nnlpEx('This is type safe!').ngrams({ min: 1 })\n```\n\n<div align=\"right\">\n  <a href=\"https://docs.compromise.cool/compromise-typescript\">typescript docs</a>\n</div>\n\n<div >\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n</div>\n\n#### Limitations:\n\n- **slash-support:**\n  We currently split slashes up as different words, like we do for hyphens. so things like this don't work:\n  <code>nlp('the koala eats/shoots/leaves').has('koala leaves') //false</code>\n\n- **inter-sentence match:**\n  By default, sentences are the top-level abstraction.\n  Inter-sentence, or multi-sentence matches aren't supported without <a href=\"https://github.com/spencermountain/compromise/tree/master/plugins/paragraphs\">a plugin</a>:\n  <code>nlp(\"that's it. Back to Winnipeg!\").has('it back')//false</code>\n\n- **nested match syntax:**\n  the <s>danger</s> beauty of regex is that you can recurse indefinitely.\n  Our match syntax is much weaker. Things like this are not <i>(yet)</i> possible:\n  <code>doc.match('(modern (major|minor))? general')</code>\n  complex matches must be achieved with successive **.match()** statements.\n\n- **dependency parsing:**\n  Proper sentence transformation requires understanding the [syntax tree](https://en.wikipedia.org/wiki/Parse_tree) of a sentence, which we don't currently do.\n  We should! Help wanted with this.\n\n##### FAQ\n\n<ul align=\"left\">\n  <p>\n    <details>\n      <summary>☂️ Isn't javascript too...</summary>\n      <p></p>\n      <ul>\n        yeah it is!\n        <br/>\n        it wasn't built to compete with NLTK, and may not fit every project.\n        <br/>\n        string processing is synchronous too, and parallelizing node processes is weird.\n        <br/>\n        See <a href=\"https://observablehq.com/@spencermountain/compromise-performance\">here</a> for information about speed & performance, and\n        <a href=\"https://observablehq.com/@spencermountain/compromise-justification\">here</a> for project motivations\n      </ul>\n      <p></p>\n    </details>\n  </p>\n  <p>\n    <details>\n      <summary>💃 Can it run on my arduino-watch?</summary>\n      <p></p>\n      <ul>\n        Only if it's water-proof!\n        <br/>\n        Read <a href=\"https://observablehq.com/@spencermountain/compromise-quickstart\">quick start</a> for running compromise in workers, mobile apps, and all sorts of funny environments.\n      </ul>\n      <p></p>\n    </details>\n  </p>\n  <p>\n    <details>\n      <summary>🌎 Compromise in other Languages?</summary>\n      <p></p>\n      <ul>\n        we've got work-in-progress forks for <a href=\"https://github.com/nlp-compromise/de-compromise\">German</a>, <a href=\"https://github.com/nlp-compromise/fr-compromise\">French</a>, <a href=\"https://github.com/nlp-compromise/es-compromise\">Spanish</a>, and <a href=\"https://github.com/nlp-compromise/it-compromise\">Italian</a> in the same philosophy.\n        <br/>\n        and need some help.\n      </ul>\n      <p></p>\n    </details>\n  </p>\n  <p>\n    <details>\n      <summary>✨ Partial builds?</summary>\n      <p></p>\n      <ul>\n        we do offer a <a href=\"https://observablehq.com/@spencermountain/compromise-filesize\">tokenize-only</a> build, which has the POS-tagger pulled-out.\n        <br/>\n        but otherwise, compromise isn't easily tree-shaken.\n        <br/>\n        the tagging methods are competitive, and greedy, so it's not recommended to pull things out.\n        <br/>\n        Note that without a full POS-tagging, the contraction-parser won't work perfectly. (<i>(spencer's cool)</i> vs. <i>(spencer's house)</i>)\n        <br/>\n        It's recommended to run the library fully.\n      </ul>\n      <p></p>\n    </details>\n  </p>\n</ul>\n\n<div align=\"center\">\n  <img src=\"https://user-images.githubusercontent.com/399657/68221731-e8b84800-ffb7-11e9-8453-6395e0e903fa.png\"/>\n</div>\n\n#### See Also:\n\n- &nbsp; **[en-pos](https://github.com/finnlp/en-pos)** - very clever javascript pos-tagger _by [Alex Corvi](https://github.com/alexcorvi)_\n- &nbsp; **[naturalNode](https://github.com/NaturalNode/natural)** - fancier statistical nlp in javascript\n- &nbsp; **[winkJS](https://winkjs.org/)** - POS-tagger, tokenizer, machine-learning in javascript\n- &nbsp; **[dariusk/pos-js ](https://github.com/dariusk/pos-js)** - fastTag fork in javascript\n- &nbsp; **[compendium-js](https://github.com/Ulflander/compendium-js)** - POS and sentiment analysis in javascript\n- &nbsp; **[nodeBox linguistics](https://www.nodebox.net/code/index.php/Linguistics)** - conjugation, inflection in javascript\n- &nbsp; **[reText](https://github.com/wooorm/retext)** - very impressive [text utilities](https://github.com/wooorm/retext/blob/master/doc/plugins.md) in javascript\n- &nbsp; **[superScript](https://github.com/superscriptjs/superscript)** - conversation engine in js\n- &nbsp; **[jsPos](https://code.google.com/archive/p/jspos/)** - javascript build of the time-tested Brill-tagger\n\n- &nbsp; **[spaCy](https://spacy.io/)** - speedy, multilingual tagger in C/python\n- &nbsp; **[Prose](https://github.com/jdkato/prose/)** - quick tagger in Go by Joseph Kato\n- &nbsp; **[TextBlob](https://github.com/sloria/TextBlob)** - python tagger\n\n<img height=\"25px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<b>MIT</b>\n"
  },
  {
    "path": "builds/compromise.js",
    "content": "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).nlp=t()}(this,(function(){\"use strict\";var e={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const t={compute:function(e){const{world:t}=this,n=t.compute;return\"string\"==typeof e&&n.hasOwnProperty(e)?n[e](this):(e=>\"[object Array]\"===Object.prototype.toString.call(e))(e)?e.forEach((r=>{t.compute.hasOwnProperty(r)?n[r](this):console.warn(\"no compute:\",e)})):\"function\"==typeof e?e(this):console.warn(\"no compute:\",e),this}};var n={forEach:function(e){return this.fullPointer.forEach(((t,n)=>{const r=this.update([t]);e(r,n)})),this},map:function(e,t){const n=this.fullPointer.map(((t,n)=>{const r=this.update([t]),o=e(r,n);return void 0===o?this.none():o}));if(0===n.length)return t||this.update([]);if(void 0!==n[0]){if(\"string\"==typeof n[0])return n;if(\"object\"==typeof n[0]&&(null===n[0]||!n[0].isView))return n}let r=[];return n.forEach((e=>{r=r.concat(e.fullPointer)})),this.toView(r)},filter:function(e){let t=this.fullPointer;t=t.filter(((t,n)=>{const r=this.update([t]);return e(r,n)}));return this.update(t)},find:function(e){const t=this.fullPointer.find(((t,n)=>{const r=this.update([t]);return e(r,n)}));return this.update([t])},some:function(e){return this.fullPointer.some(((t,n)=>{const r=this.update([t]);return e(r,n)}))},random:function(e=1){let t=this.fullPointer,n=Math.floor(Math.random()*t.length);return n+e>this.length&&(n=this.length-e,n=n<0?0:n),t=t.slice(n,n+e),this.update(t)}};const r={termList:function(){return this.methods.one.termList(this.docs)},terms:function(e){const t=this.match(\".\");return\"number\"==typeof e?t.eq(e):t},groups:function(e){if(e||0===e)return this.update(this._groups[e]||[]);const t={};return Object.keys(this._groups).forEach((e=>{t[e]=this.update(this._groups[e])})),t},eq:function(e){let t=this.pointer;return t||(t=this.docs.map(((e,t)=>[t]))),t[e]?this.update([t[e]]):this.none()},first:function(){return this.eq(0)},last:function(){const e=this.fullPointer.length-1;return this.eq(e)},firstTerms:function(){return this.match(\"^.\")},lastTerms:function(){return this.match(\".$\")},slice:function(e,t){let n=this.pointer||this.docs.map(((e,t)=>[t]));return n=n.slice(e,t),this.update(n)},all:function(){return this.update().toView()},fullSentences:function(){const e=this.fullPointer.map((e=>[e[0]]));return this.update(e).toView()},none:function(){return this.update([])},isDoc:function(e){if(!e||!e.isView)return!1;const t=this.fullPointer,n=e.fullPointer;return!t.length!==n.length&&t.every(((e,t)=>!!n[t]&&(e[0]===n[t][0]&&e[1]===n[t][1]&&e[2]===n[t][2])))},wordCount:function(){return this.docs.reduce(((e,t)=>(e+=t.filter((e=>\"\"!==e.text)).length,e)),0)},isFull:function(){const e=this.pointer;if(!e)return!0;if(0===e.length||0!==e[0][0])return!1;let t=0,n=0;return this.document.forEach((e=>t+=e.length)),this.docs.forEach((e=>n+=e.length)),t===n},getNth:function(e){return\"number\"==typeof e?this.eq(e):\"string\"==typeof e?this.if(e):this}};r.group=r.groups,r.fullSentence=r.fullSentences,r.sentence=r.fullSentences,r.lastTerm=r.lastTerms,r.firstTerm=r.firstTerms;const o=Object.assign({},r,t,n);o.get=o.eq;class View{constructor(t,n,r={}){[[\"document\",t],[\"world\",e],[\"_groups\",r],[\"_cache\",null],[\"viewType\",\"View\"]].forEach((e=>{Object.defineProperty(this,e[0],{value:e[1],writable:!0})})),this.ptrs=n}get docs(){let t=this.document;return this.ptrs&&(t=e.methods.one.getDoc(this.ptrs,this.document)),t}get pointer(){return this.ptrs}get methods(){return this.world.methods}get model(){return this.world.model}get hooks(){return this.world.hooks}get isView(){return!0}get found(){return this.docs.length>0}get length(){return this.docs.length}get fullPointer(){const{docs:e,ptrs:t,document:n}=this,r=t||e.map(((e,t)=>[t]));return r.map((e=>{let[t,r,o,a,i]=e;return r=r||0,o=o||(n[t]||[]).length,n[t]&&n[t][r]&&(a=a||n[t][r].id,n[t][o-1]&&(i=i||n[t][o-1].id)),[t,r,o,a,i]}))}update(e){const t=new View(this.document,e);if(this._cache&&e&&e.length>0){const n=[];e.forEach(((e,t)=>{const[r,o,a]=e;(1===e.length||0===o&&this.document[r].length===a)&&(n[t]=this._cache[r])})),n.length>0&&(t._cache=n)}return t.world=this.world,t}toView(e){return new View(this.document,e||this.pointer)}fromText(e){const{methods:t}=this,n=t.one.tokenize.fromString(e,this.world),r=new View(n);return r.world=this.world,r.compute([\"normal\",\"freeze\",\"lexicon\"]),this.world.compute.preTagger&&r.compute(\"preTagger\"),r.compute(\"unfreeze\"),r}clone(){let e=this.document.slice(0);e=e.map((e=>e.map((e=>((e=Object.assign({},e)).tags=new Set(e.tags),e)))));const t=this.update(this.pointer);return t.document=e,t._cache=this._cache,t}}Object.assign(View.prototype,o);const a=function(e){return e&&\"object\"==typeof e&&!Array.isArray(e)};function i(e,t){if(a(t))for(const n in t)a(t[n])?(e[n]||Object.assign(e,{[n]:{}}),i(e[n],t[n])):Object.assign(e,{[n]:t[n]});return e}const s=function(e,t,n,r){if(o=e,\"[object Array]\"===Object.prototype.toString.call(o))return void e.forEach((e=>s(e,t,n,r)));var o;const{methods:a,model:l,compute:u,hooks:c}=t;e.methods&&function(e,t){for(const n in t)e[n]=e[n]||{},Object.assign(e[n],t[n])}(a,e.methods),e.model&&i(l,e.model),e.irregulars&&function(e,t){const n=e.two.models||{};Object.keys(t).forEach((e=>{t[e].pastTense&&(n.toPast&&(n.toPast.ex[e]=t[e].pastTense),n.fromPast&&(n.fromPast.ex[t[e].pastTense]=e)),t[e].presentTense&&(n.toPresent&&(n.toPresent.ex[e]=t[e].presentTense),n.fromPresent&&(n.fromPresent.ex[t[e].presentTense]=e)),t[e].gerund&&(n.toGerund&&(n.toGerund.ex[e]=t[e].gerund),n.fromGerund&&(n.fromGerund.ex[t[e].gerund]=e)),t[e].comparative&&(n.toComparative&&(n.toComparative.ex[e]=t[e].comparative),n.fromComparative&&(n.fromComparative.ex[t[e].comparative]=e)),t[e].superlative&&(n.toSuperlative&&(n.toSuperlative.ex[e]=t[e].superlative),n.fromSuperlative&&(n.fromSuperlative.ex[t[e].superlative]=e))}))}(l,e.irregulars),e.compute&&Object.assign(u,e.compute),c&&(t.hooks=c.concat(e.hooks||[])),e.api&&e.api(n),e.lib&&Object.keys(e.lib).forEach((t=>r[t]=e.lib[t])),e.tags&&r.addTags(e.tags),e.words&&r.addWords(e.words),e.frozen&&r.addWords(e.frozen,!0),e.mutate&&e.mutate(t,r)},l=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},u=function(e,t,n){const{methods:r}=n,o=new t([]);if(o.world=n,\"number\"==typeof e&&(e=String(e)),!e)return o;if(\"string\"==typeof e){return new t(r.one.tokenize.fromString(e,n))}if(a=e,\"[object Object]\"===Object.prototype.toString.call(a)&&e.isView)return new t(e.document,e.ptrs);var a;if(l(e)){if(l(e[0])){const n=e.map((e=>e.map((e=>({text:e,normal:e,pre:\"\",post:\" \",tags:new Set})))));return new t(n)}const n=e.map((e=>e.terms.map((e=>(l(e.tags)&&(e.tags=new Set(e.tags)),e)))));return new t(n)}return o},c=Object.assign({},e),h=function(e,t){t&&h.addWords(t);const n=u(e,View,c);return e&&n.compute(c.hooks),n};Object.defineProperty(h,\"_world\",{value:c,writable:!0}),h.tokenize=function(e,t){const{compute:n}=this._world;t&&h.addWords(t);const r=u(e,View,c);return n.contractions&&r.compute([\"alias\",\"normal\",\"machine\",\"contractions\"]),r},h.plugin=function(e){return s(e,this._world,View,this),this},h.extend=h.plugin,h.world=function(){return this._world},h.model=function(){return this._world.model},h.methods=function(){return this._world.methods},h.hooks=function(){return this._world.hooks},h.verbose=function(e){const t=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};return t.DEBUG_TAGS=\"tagger\"===e||!0===e||\"\",t.DEBUG_MATCH=\"match\"===e||!0===e||\"\",t.DEBUG_CHUNKS=\"chunker\"===e||!0===e||\"\",this},h.version=\"14.15.0\";var d={one:{cacheDoc:function(e){const t=e.map((e=>{const t=new Set;return e.forEach((e=>{\"\"!==e.normal&&t.add(e.normal),e.switch&&t.add(`%${e.switch}%`),e.implicit&&t.add(e.implicit),e.machine&&t.add(e.machine),e.root&&t.add(e.root),e.alias&&e.alias.forEach((e=>t.add(e)));const n=Array.from(e.tags);for(let e=0;e<n.length;e+=1)t.add(\"#\"+n[e])})),t}));return t}}};const m={cache:function(){return this._cache=this.methods.one.cacheDoc(this.document),this},uncache:function(){return this._cache=null,this}};var p={api:function(e){Object.assign(e.prototype,m)},compute:{cache:function(e){e._cache=e.methods.one.cacheDoc(e.document)}},methods:d};const f=e=>/^\\p{Lu}[\\p{Ll}'’]/u.test(e)||/^\\p{Lu}$/u.test(e),b=(e,t,n)=>{if(n.forEach((e=>e.dirty=!0)),e){const r=[t,0].concat(n);Array.prototype.splice.apply(e,r)}return e},v=function(e){const t=e[e.length-1];!t||/ $/.test(t.post)||/[-–—]/.test(t.post)||(t.post+=\" \")},y=(e,t,n)=>{const r=/[-.?!,;:)–—'\"]/g,o=e[t-1];if(!o)return;const a=o.post;if(r.test(a)){const e=a.match(r).join(\"\"),t=n[n.length-1];t.post=e+t.post,o.post=o.post.replace(r,\"\")}},w=function(e,t,n,r){const[o,a,i]=t;0===a||i===r[o].length?v(n):(v(n),v([e[t[1]]])),function(e,t,n){const r=e[t];if(0!==t||!f(r.text))return;n[0].text=n[0].text.replace(/^\\p{Ll}/u,(e=>e.toUpperCase()));const o=e[t];o.tags.has(\"ProperNoun\")||o.tags.has(\"Acronym\")||f(o.text)&&o.text.length>1&&(o.text=(a=o.text,a.replace(/^\\p{Lu}/u,(e=>e.toLowerCase()))));var a}(e,a,n),b(e,a,n)};let k=0;const P=e=>(e=e.length<3?\"0\"+e:e).length<3?\"0\"+e:e,A=function(e){let[t,n]=e.index||[0,0];k+=1,k=k>46655?0:k,t=t>46655?0:t,n=n>1294?0:n;let r=P(k.toString(36));r+=P(t.toString(36));let o=n.toString(36);o=o.length<2?\"0\"+o:o,r+=o;return r+=parseInt(36*Math.random(),10).toString(36),e.normal+\"|\"+r.toUpperCase()},C=function(e){if(e.has(\"@hasContraction\")&&\"function\"==typeof e.contractions){e.grow(\"@hasContraction\").contractions().expand()}},N=e=>\"[object Array]\"===Object.prototype.toString.call(e),j=function(e,t,n){const{document:r,world:o}=t;t.uncache();const a=t.fullPointer,i=t.fullPointer;t.forEach(((s,l)=>{const u=s.fullPointer[0],[c]=u,h=r[c];let d=function(e,t){const{methods:n}=t;return\"string\"==typeof e?n.one.tokenize.fromString(e,t)[0]:\"object\"==typeof e&&e.isView?e.clone().docs[0]||[]:N(e)?N(e[0])?e[0]:e:[]}(e,o);0!==d.length&&(d=function(e){return e.map((e=>(e.id=A(e),e)))}(d),n?(C(t.update([u]).firstTerm()),w(h,u,d,r)):(C(t.update([u]).lastTerm()),function(e,t,n,r){const[o,,a]=t,i=(r[o]||[]).length;a<i?(y(e,a,n),v(n)):i===a&&(v(e),y(e,a,n),r[o+1]&&(n[n.length-1].post+=\" \")),b(e,t[2],n),t[4]=n[n.length-1].id}(h,u,d,r)),r[c]&&r[c][u[1]]&&(u[3]=r[c][u[1]].id),i[l]=u,u[2]+=d.length,a[l]=u)}));const s=t.toView(a);return t.ptrs=i,s.compute([\"id\",\"index\",\"freeze\",\"lexicon\"]),s.world.compute.preTagger&&s.compute(\"preTagger\"),s.compute(\"unfreeze\"),s},x={insertAfter:function(e){return j(e,this,!1)},insertBefore:function(e){return j(e,this,!0)}};x.append=x.insertAfter,x.prepend=x.insertBefore,x.insert=x.insertAfter;const I=/\\$[0-9a-z]+/g,T={},D=e=>e.replace(/^\\p{Ll}/u,(e=>e.toUpperCase())),H=e=>e.replace(/^\\p{Lu}/u,(e=>e.toLowerCase()));T.replaceWith=function(e,t={}){let n=this.fullPointer;const r=this;if(this.uncache(),\"function\"==typeof e)return function(e,t,n){return e.forEach((e=>{const r=t(e);e.replaceWith(r,n)})),e}(r,e,t);const o=r.docs[0];if(!o)return r;const a=t.possessives&&o[o.length-1].tags.has(\"Possessive\"),i=t.case&&(s=o[0].text,/^\\p{Lu}[\\p{Ll}'’]/u.test(s)||/^\\p{Lu}$/u.test(s));var s;e=function(e,t){if(\"string\"!=typeof e)return e;const n=t.groups();return e=e.replace(I,(e=>{const t=e.replace(/\\$/,\"\");return n.hasOwnProperty(t)?n[t].text():e})),e}(e,r);const l=this.update(n);n=n.map((e=>e.slice(0,3)));const u=(l.docs[0]||[]).map((e=>Array.from(e.tags))),c=l.docs[0][0].pre,h=l.docs[0][l.docs[0].length-1].post;if(\"string\"==typeof e&&(e=this.fromText(e).compute(\"id\")),r.insertAfter(e),l.has(\"@hasContraction\")&&r.contractions){r.grow(\"@hasContraction+\").contractions().expand()}if(r.delete(l),a){const e=r.docs[0],t=e[e.length-1];t.tags.has(\"Possessive\")||(t.text+=\"'s\",t.normal+=\"'s\",t.tags.add(\"Possessive\"))}if(c&&r.docs[0]&&(r.docs[0][0].pre=c),h&&r.docs[0]){const e=r.docs[0][r.docs[0].length-1];e.post.trim()||(e.post=h)}const d=r.toView(n).compute([\"index\",\"freeze\",\"lexicon\"]);if(d.world.compute.preTagger&&d.compute(\"preTagger\"),d.compute(\"unfreeze\"),t.tags&&d.terms().forEach(((e,t)=>{e.tagSafe(u[t])})),!d.docs[0]||!d.docs[0][0])return d;if(t.case){const e=i?D:H;d.docs[0][0].text=e(d.docs[0][0].text)}return d},T.replace=function(e,t,n){if(e&&!t)return this.replaceWith(e,n);const r=this.match(e);return r.found?(this.soften(),r.replaceWith(t,n)):this};const E={remove:function(e){const{indexN:t}=this.methods.one.pointer;this.uncache();let n=this.all(),r=this;e&&(n=this,r=this.match(e));const o=!n.ptrs;if(r.has(\"@hasContraction\")&&r.contractions){r.grow(\"@hasContraction\").contractions().expand()}let a=n.fullPointer;const i=r.fullPointer.reverse(),s=function(e,t){t.forEach((t=>{const[n,r,o]=t,a=o-r;e[n]&&(o===e[n].length&&o>1&&function(e,t){const n=e.length-1,r=e[n],o=e[n-t];o&&r&&(o.post+=r.post,o.post=o.post.replace(/ +([.?!,;:])/,\"$1\"),o.post=o.post.replace(/[,;:]+([.?!])/,\"$1\"))}(e[n],a),e[n].splice(r,a))}));for(let t=e.length-1;t>=0;t-=1)if(0===e[t].length&&(e.splice(t,1),t===e.length&&e[t-1])){const n=e[t-1],r=n[n.length-1];r&&(r.post=r.post.trimEnd())}return e}(this.document,i);if(a=function(e,t){return e=e.map((e=>{const[n]=e;return t[n]?(t[n].forEach((t=>{const n=t[2]-t[1];e[1]<=t[1]&&e[2]>=t[2]&&(e[2]-=n)})),e):e})),e.forEach(((t,n)=>{if(0===t[1]&&0==t[2])for(let t=n+1;t<e.length;t+=1)e[t][0]-=1,e[t][0]<0&&(e[t][0]=0)})),e=(e=e.filter((e=>e[2]-e[1]>0))).map((e=>(e[3]=null,e[4]=null,e)))}(a,t(i)),n.ptrs=a,n.document=s,n.compute(\"index\"),o&&(n.ptrs=void 0),!e)return this.ptrs=[],n.none();return n.toView(a)}};E.delete=E.remove;const G={pre:function(e,t){return void 0===e&&this.found?this.docs[0][0].pre:(this.docs.forEach((n=>{const r=n[0];!0===t?r.pre+=e:r.pre=e})),this)},post:function(e,t){if(void 0===e){const e=this.docs[this.docs.length-1];return e[e.length-1].post}return this.docs.forEach((n=>{const r=n[n.length-1];!0===t?r.post+=e:r.post=e})),this},trim:function(){if(!this.found)return this;const e=this.docs,t=e[0][0];t.pre=t.pre.trimStart();const n=e[e.length-1],r=n[n.length-1];return r.post=r.post.trimEnd(),this},hyphenate:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.pre=\"\"),e[n+1]&&(t.post=\"-\")}))})),this},dehyphenate:function(){const e=/[-–—]/;return this.docs.forEach((t=>{t.forEach((t=>{e.test(t.post)&&(t.post=\" \")}))})),this},toQuotations:function(e,t){return e=e||'\"',t=t||'\"',this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const r=n[n.length-1];r.post=t+r.post})),this},toParentheses:function(e,t){return e=e||\"(\",t=t||\")\",this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const r=n[n.length-1];r.post=t+r.post})),this}};G.deHyphenate=G.dehyphenate,G.toQuotation=G.toQuotations;var O={alpha:(e,t)=>e.normal<t.normal?-1:e.normal>t.normal?1:0,length:(e,t)=>{const n=e.normal.trim().length,r=t.normal.trim().length;return n<r?1:n>r?-1:0},wordCount:(e,t)=>e.words<t.words?1:e.words>t.words?-1:0,sequential:(e,t)=>e[0]<t[0]?1:e[0]>t[0]?-1:e[1]>t[1]?1:-1,byFreq:function(e){const t={};return e.forEach((e=>{t[e.normal]=t[e.normal]||0,t[e.normal]+=1})),e.sort(((e,n)=>{const r=t[e.normal],o=t[n.normal];return r<o?1:r>o?-1:0})),e}};const F=new Set([\"index\",\"sequence\",\"seq\",\"sequential\",\"chron\",\"chronological\"]),V=new Set([\"freq\",\"frequency\",\"topk\",\"repeats\"]),z=new Set([\"alpha\",\"alphabetical\"]);var B={unique:function(){const e=new Set,t=this.filter((t=>{const n=t.text(\"machine\");return!e.has(n)&&(e.add(n),!0)}));return t},reverse:function(){let e=this.pointer||this.docs.map(((e,t)=>[t]));return e=[].concat(e),e=e.reverse(),this._cache&&(this._cache=this._cache.reverse()),this.update(e)},sort:function(e){const{docs:t,pointer:n}=this;if(this.uncache(),\"function\"==typeof e)return function(e,t){let n=e.fullPointer;return n=n.sort(((n,r)=>(n=e.update([n]),r=e.update([r]),t(n,r)))),e.ptrs=n,e}(this,e);e=e||\"alpha\";const r=n||t.map(((e,t)=>[t]));let o=t.map(((e,t)=>({index:t,words:e.length,normal:e.map((e=>e.machine||e.normal||\"\")).join(\" \"),pointer:r[t]})));return F.has(e)&&(e=\"sequential\"),z.has(e)&&(e=\"alpha\"),V.has(e)?(o=O.byFreq(o),this.update(o.map((e=>e.pointer)))):\"function\"==typeof O[e]?(o=o.sort(O[e]),this.update(o.map((e=>e.pointer)))):this}};const S=function(e,t){if(e.length>0){const t=e[e.length-1],n=t[t.length-1];!1===/ /.test(n.post)&&(n.post+=\" \")}return e=e.concat(t)};var $={concat:function(e){if(\"string\"==typeof e){const t=this.fromText(e);if(this.found&&this.ptrs){const e=this.fullPointer,n=e[e.length-1][0];this.document.splice(n,0,...t.document)}else this.document=this.document.concat(t.document);return this.all().compute(\"index\")}if(\"object\"==typeof e&&e.isView)return function(e,t){if(e.document===t.document){const n=e.fullPointer.concat(t.fullPointer);return e.toView(n).compute(\"index\")}return t.fullPointer.forEach((t=>{t[0]+=e.document.length})),e.document=S(e.document,t.docs),e.all()}(this,e);if(t=e,\"[object Array]\"===Object.prototype.toString.call(t)){const t=S(this.document,e);return this.document=t,this.all()}var t;return this}};var M={harden:function(){return this.ptrs=this.fullPointer,this},soften:function(){let e=this.ptrs;return!e||e.length<1||(e=e.map((e=>e.slice(0,3))),this.ptrs=e),this}};const L=Object.assign({},{toLowerCase:function(){return this.termList().forEach((e=>{e.text=e.text.toLowerCase()})),this},toUpperCase:function(){return this.termList().forEach((e=>{e.text=e.text.toUpperCase()})),this},toTitleCase:function(){return this.termList().forEach((e=>{e.text=e.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))})),this},toCamelCase:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.text=t.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))),n!==e.length-1&&(t.post=\"\")}))})),this}},x,T,E,G,B,$,M),K={id:function(e){const t=e.docs;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1){const r=t[e][n];r.id=r.id||A(r)}}};var J={api:function(e){Object.assign(e.prototype,L)},compute:K};const W=!0;var q={one:{contractions:[{word:\"@\",out:[\"at\"]},{word:\"arent\",out:[\"are\",\"not\"]},{word:\"alot\",out:[\"a\",\"lot\"]},{word:\"brb\",out:[\"be\",\"right\",\"back\"]},{word:\"cannot\",out:[\"can\",\"not\"]},{word:\"dun\",out:[\"do\",\"not\"]},{word:\"can't\",out:[\"can\",\"not\"]},{word:\"shan't\",out:[\"should\",\"not\"]},{word:\"won't\",out:[\"will\",\"not\"]},{word:\"that's\",out:[\"that\",\"is\"]},{word:\"what's\",out:[\"what\",\"is\"]},{word:\"let's\",out:[\"let\",\"us\"]},{word:\"dunno\",out:[\"do\",\"not\",\"know\"]},{word:\"gonna\",out:[\"going\",\"to\"]},{word:\"gotta\",out:[\"have\",\"got\",\"to\"]},{word:\"gimme\",out:[\"give\",\"me\"]},{word:\"outta\",out:[\"out\",\"of\"]},{word:\"tryna\",out:[\"trying\",\"to\"]},{word:\"gtg\",out:[\"got\",\"to\",\"go\"]},{word:\"im\",out:[\"i\",\"am\"]},{word:\"imma\",out:[\"I\",\"will\"]},{word:\"imo\",out:[\"in\",\"my\",\"opinion\"]},{word:\"irl\",out:[\"in\",\"real\",\"life\"]},{word:\"ive\",out:[\"i\",\"have\"]},{word:\"rn\",out:[\"right\",\"now\"]},{word:\"tbh\",out:[\"to\",\"be\",\"honest\"]},{word:\"wanna\",out:[\"want\",\"to\"]},{word:\"c'mere\",out:[\"come\",\"here\"]},{word:\"c'mon\",out:[\"come\",\"on\"]},{word:\"shoulda\",out:[\"should\",\"have\"]},{word:\"coulda\",out:[\"coulda\",\"have\"]},{word:\"woulda\",out:[\"woulda\",\"have\"]},{word:\"musta\",out:[\"must\",\"have\"]},{word:\"tis\",out:[\"it\",\"is\"]},{word:\"twas\",out:[\"it\",\"was\"]},{word:\"y'know\",out:[\"you\",\"know\"]},{word:\"ne'er\",out:[\"never\"]},{word:\"o'er\",out:[\"over\"]},{after:\"ll\",out:[\"will\"]},{after:\"ve\",out:[\"have\"]},{after:\"re\",out:[\"are\"]},{after:\"m\",out:[\"am\"]},{before:\"c\",out:[\"ce\"]},{before:\"m\",out:[\"me\"]},{before:\"n\",out:[\"ne\"]},{before:\"qu\",out:[\"que\"]},{before:\"s\",out:[\"se\"]},{before:\"t\",out:[\"tu\"]},{word:\"shouldnt\",out:[\"should\",\"not\"]},{word:\"couldnt\",out:[\"could\",\"not\"]},{word:\"wouldnt\",out:[\"would\",\"not\"]},{word:\"hasnt\",out:[\"has\",\"not\"]},{word:\"wasnt\",out:[\"was\",\"not\"]},{word:\"isnt\",out:[\"is\",\"not\"]},{word:\"cant\",out:[\"can\",\"not\"]},{word:\"dont\",out:[\"do\",\"not\"]},{word:\"wont\",out:[\"will\",\"not\"]},{word:\"howd\",out:[\"how\",\"did\"]},{word:\"whatd\",out:[\"what\",\"did\"]},{word:\"whend\",out:[\"when\",\"did\"]},{word:\"whered\",out:[\"where\",\"did\"]}],numberSuffixes:{st:W,nd:W,rd:W,th:W,am:W,pm:W,max:W,\"°\":W,s:W,e:W,er:W,\"ère\":W,\"ème\":W}}};const U=function(e,t,n){const[r,o]=t;n&&0!==n.length&&(n=n.map(((e,t)=>(e.implicit=e.text,e.machine=e.text,e.pre=\"\",e.post=\"\",e.text=\"\",e.normal=\"\",e.index=[r,o+t],e))),n[0]&&(n[0].pre=e[r][o].pre,n[n.length-1].post=e[r][o].post,n[0].text=e[r][o].text,n[0].normal=e[r][o].normal),e[r].splice(o,1,...n))},R=/'/,Q=new Set([\"what\",\"how\",\"when\",\"where\",\"why\"]),Z=new Set([\"be\",\"go\",\"start\",\"think\",\"need\"]),_=new Set([\"been\",\"gone\"]),X=/'/,Y=/(e|é|aison|sion|tion)$/,ee=/(age|isme|acle|ege|oire)$/;var te=(e,t)=>[\"je\",e[t].normal.split(X)[1]],ne=(e,t)=>{const n=e[t].normal.split(X)[1];return n&&n.endsWith(\"e\")?[\"la\",n]:[\"le\",n]},re=(e,t)=>{const n=e[t].normal.split(X)[1];return n&&Y.test(n)&&!ee.test(n)?[\"du\",n]:n&&n.endsWith(\"s\")?[\"des\",n]:[\"de\",n]};const oe=/^([0-9.]{1,4}[a-z]{0,2}) ?[-–—] ?([0-9]{1,4}[a-z]{0,2})$/i,ae=/^([0-9]{1,2}(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9]{1,2}(:[0-9][0-9])?(am|pm)?)$/i,ie=/^[0-9]{3}-[0-9]{4}$/,se=function(e,t){const n=e[t];let r=n.text.match(oe);return null!==r?!0===n.tags.has(\"PhoneNumber\")||ie.test(n.text)?null:[r[1],\"to\",r[2]]:(r=n.text.match(ae),null!==r?[r[1],\"to\",r[4]]:null)},le=/^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/,ue=function(e,t,n){const r=n.model.one.numberSuffixes||{},o=e[t].text.match(le);if(null!==o){const e=o[2].toLowerCase().trim();return r.hasOwnProperty(e)?null:[o[1],e]}return null},ce=/'/,he=/^[0-9][^-–—]*[-–—].*?[0-9]/,de=function(e,t,n,r){const o=t.update();o.document=[e];let a=n+r;n>0&&(n-=1),e[a]&&(a+=1),o.ptrs=[[0,n,a]]},ge={t:(e,t)=>function(e,t){return\"ain't\"===e[t].normal||\"aint\"===e[t].normal?null:[e[t].normal.replace(/n't/,\"\"),\"not\"]}(e,t),d:(e,t)=>function(e,t){const n=e[t].normal.split(R)[0];if(Q.has(n))return[n,\"did\"];if(e[t+1]){if(_.has(e[t+1].normal))return[n,\"had\"];if(Z.has(e[t+1].normal))return[n,\"would\"]}return null}(e,t)},me={j:(e,t)=>te(e,t),l:(e,t)=>ne(e,t),d:(e,t)=>re(e,t)},pe=function(e,t,n,r){for(let o=0;o<e.length;o+=1){const a=e[o];if(a.word===t.normal)return a.out;if(null!==r&&r===a.after)return[n].concat(a.out);if(null!==n&&n===a.before&&r&&r.length>2)return a.out.concat(r)}return null},fe=function(e,t){const n=t.fromText(e.join(\" \"));return n.compute([\"id\",\"alias\"]),n.docs[0]},be=function(e,t){for(let n=t+1;n<5&&e[n];n+=1)if(\"been\"===e[n].normal)return[\"there\",\"has\"];return[\"there\",\"is\"]};var ve={contractions:e=>{const{world:t,document:n}=e,{model:r,methods:o}=t,a=r.one.contractions||[];n.forEach(((r,i)=>{for(let s=r.length-1;s>=0;s-=1){let l=null,u=null;if(!0===ce.test(r[s].normal)){const e=r[s].normal.split(ce);l=e[0],u=e[1]}let c=pe(a,r[s],l,u);!c&&ge.hasOwnProperty(u)&&(c=ge[u](r,s,t)),!c&&me.hasOwnProperty(l)&&(c=me[l](r,s)),\"there\"===l&&\"s\"===u&&(c=be(r,s)),c?(c=fe(c,e),U(n,[i,s],c),de(n[i],e,s,c.length)):he.test(r[s].normal)?(c=se(r,s),c&&(c=fe(c,e),U(n,[i,s],c),o.one.setTag(c,\"NumberRange\",t),c[2]&&c[2].tags.has(\"Time\")&&o.one.setTag([c[0]],\"Time\",t,null,\"time-range\"),de(n[i],e,s,c.length))):(c=ue(r,s,t),c&&(c=fe(c,e),U(n,[i,s],c),o.one.setTag([c[1]],\"Unit\",t,null,\"contraction-unit\")))}}))}};const ye={model:q,compute:ve,hooks:[\"contractions\"]},we=function(e){const t=e.world,{model:n,methods:r}=e.world,o=r.one.setTag,{frozenLex:a}=n.one,i=n.one._multiCache||{};e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const r=e[n],s=r.machine||r.normal;if(void 0!==i[s]&&e[n+1]){for(let r=n+i[s]-1;r>n;r-=1){const i=e.slice(n,r+1),s=i.map((e=>e.machine||e.normal)).join(\" \");!0!==a.hasOwnProperty(s)||(o(i,a[s],t,!1,\"1-frozen-multi-lexicon\"),i.forEach((e=>e.frozen=!0)))}}void 0!==a[s]&&a.hasOwnProperty(s)&&(o([r],a[s],t,!1,\"1-freeze-lexicon\"),r.frozen=!0)}}))};const ke=e=>\"\u001b[34m\"+e+\"\u001b[0m\",Pe=e=>\"\u001b[3m\u001b[2m\"+e+\"\u001b[0m\",Ae=function(e){e.docs.forEach((e=>{console.log(ke(\"\\n  ┌─────────\")),e.forEach((e=>{let t=`  ${Pe(\"│\")}  `;const n=e.implicit||e.text||\"-\";!0===e.frozen?t+=`${ke(n)} ❄️`:t+=Pe(n),console.log(t)}))}))};var Ce={compute:{frozen:we,freeze:we,unfreeze:function(e){return e.docs.forEach((e=>{e.forEach((e=>{delete e.frozen}))})),e}},mutate:e=>{const t=e.methods.one;t.termMethods.isFrozen=e=>!0===e.frozen,t.debug.freeze=Ae,t.debug.frozen=Ae},api:function(e){e.prototype.freeze=function(){return this.docs.forEach((e=>{e.forEach((e=>{e.frozen=!0}))})),this},e.prototype.unfreeze=function(){this.compute(\"unfreeze\")},e.prototype.isFrozen=function(){return this.match(\"@isFrozen+\")}},hooks:[\"freeze\"]};const Ne=function(e,t,n){const{model:r,methods:o}=n,a=o.one.setTag,i=r.one._multiCache||{},{lexicon:s}=r.one||{},l=e[t],u=l.machine||l.normal;if(void 0!==i[u]&&e[t+1]){for(let r=t+i[u]-1;r>t;r-=1){const o=e.slice(t,r+1);if(o.length<=1)return!1;const i=o.map((e=>e.machine||e.normal)).join(\" \");if(!0===s.hasOwnProperty(i)){const e=s[i];return a(o,e,n,!1,\"1-multi-lexicon\"),!e||2!==e.length||\"PhrasalVerb\"!==e[0]&&\"PhrasalVerb\"!==e[1]||a([o[1]],\"Particle\",n,!1,\"1-phrasal-particle\"),!0}}return!1}return null},je=/^(under|over|mis|re|un|dis|semi|pre|post)-?/,xe=new Set([\"Verb\",\"Infinitive\",\"PastTense\",\"Gerund\",\"PresentTense\",\"Adjective\",\"Participle\"]),Ie=function(e,t,n){const{model:r,methods:o}=n,a=o.one.setTag,{lexicon:i}=r.one,s=e[t],l=s.machine||s.normal;if(void 0!==i[l]&&i.hasOwnProperty(l))return a([s],i[l],n,!1,\"1-lexicon\"),!0;if(s.alias){const e=s.alias.find((e=>i.hasOwnProperty(e)));if(e)return a([s],i[e],n,!1,\"1-lexicon-alias\"),!0}if(!0===je.test(l)){const e=l.replace(je,\"\");if(i.hasOwnProperty(e)&&e.length>3&&xe.has(i[e]))return a([s],i[e],n,!1,\"1-lexicon-prefix\"),!0}return null};var Te={lexicon:function(e){const t=e.world;e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1)if(0===e[n].tags.size){let r=null;r=r||Ne(e,n,t),r=r||Ie(e,n,t)}}))}};var De={one:{expandLexicon:function(e){const t={},n={};return Object.keys(e).forEach((r=>{const o=e[r],a=(r=(r=r.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);a.length>1&&(void 0===n[a[0]]||a.length>n[a[0]])&&(n[a[0]]=a.length),t[r]=t[r]||o})),delete t[\"\"],delete t.null,delete t[\" \"],{lex:t,_multi:n}}}};var He={addWords:function(e,t=!1){const n=this.world(),{methods:r,model:o}=n;if(!e)return;if(Object.keys(e).forEach((t=>{\"string\"==typeof e[t]&&e[t].startsWith(\"#\")&&(e[t]=e[t].replace(/^#/,\"\"))})),!0===t){const{lex:t,_multi:a}=r.one.expandLexicon(e,n);return Object.assign(o.one._multiCache,a),void Object.assign(o.one.frozenLex,t)}if(r.two.expandLexicon){const{lex:t,_multi:a}=r.two.expandLexicon(e,n);Object.assign(o.one.lexicon,t),Object.assign(o.one._multiCache,a)}const{lex:a,_multi:i}=r.one.expandLexicon(e,n);Object.assign(o.one.lexicon,a),Object.assign(o.one._multiCache,i)}};var Ee={model:{one:{lexicon:{},_multiCache:{},frozenLex:{}}},methods:De,compute:Te,lib:He,hooks:[\"lexicon\"]};const Ge=function(e,t){const n=[{}],r=[null],o=[0],a=[];let i=0;e.forEach((function(e){let o=0;const a=function(e,t){const{methods:n,model:r}=t,o=n.one.tokenize.splitTerms(e,r).map((e=>n.one.tokenize.splitWhitespace(e,r)));return o.map((e=>e.text.toLowerCase()))}(e,t);for(let e=0;e<a.length;e++){const t=a[e];n[o]&&n[o].hasOwnProperty(t)?o=n[o][t]:(i++,n[o][t]=i,n[i]={},o=i,r[i]=null)}r[o]=[a.length]}));for(const e in n[0])i=n[0][e],o[i]=0,a.push(i);for(;a.length;){const e=a.shift(),t=Object.keys(n[e]);for(let s=0;s<t.length;s+=1){const l=t[s],u=n[e][l];for(a.push(u),i=o[e];i>0&&!n[i].hasOwnProperty(l);)i=o[i];if(n.hasOwnProperty(i)){const e=n[i][l];o[u]=e,r[e]&&(r[u]=r[u]||[],r[u]=r[u].concat(r[e]))}else o[u]=0}}return{goNext:n,endAs:r,failTo:o}},Oe=function(e,t,n){let r=0;const o=[];for(let a=0;a<e.length;a++){const i=e[a][n.form]||e[a].normal;for(;r>0&&(void 0===t.goNext[r]||!t.goNext[r].hasOwnProperty(i));)r=t.failTo[r]||0;if(t.goNext[r].hasOwnProperty(i)&&(r=t.goNext[r][i],t.endAs[r])){const n=t.endAs[r];for(let t=0;t<n.length;t++){const r=n[t],i=e[a-r+1],[s,l]=i.index;o.push([s,l,l+r,i.id])}}}return o},Fe=function(e,t){for(let n=0;n<e.length;n+=1)if(!0===t.has(e[n]))return!1;return!0};const Ve=(e,t)=>{for(let n=e.length-1;n>=0;n-=1)if(e[n]!==t)return e=e.slice(0,n+1);return e},ze={buildTrie:function(e){return function(e){return e.goNext=e.goNext.map((e=>{if(0!==Object.keys(e).length)return e})),e.goNext=Ve(e.goNext,void 0),e.failTo=Ve(e.failTo,0),e.endAs=Ve(e.endAs,null),e}(Ge(e,this.world()))}};ze.compile=ze.buildTrie;var Be={api:function(e){e.prototype.lookup=function(e,t={}){if(!e)return this.none();\"string\"==typeof e&&(e=[e]);var n;let r=function(e,t,n){let r=[];n.form=n.form||\"normal\";const o=e.docs;if(!t.goNext||!t.goNext[0])return console.error(\"Compromise invalid lookup trie\"),e.none();const a=Object.keys(t.goNext[0]);for(let i=0;i<o.length;i++){if(e._cache&&e._cache[i]&&!0===Fe(a,e._cache[i]))continue;const s=o[i],l=Oe(s,t,n);l.length>0&&(r=r.concat(l))}return e.update(r)}(this,(n=e,\"[object Object]\"===Object.prototype.toString.call(n)?e:Ge(e,this.world)),t);return r=r.settle(),r}},lib:ze};const Se=function(e,t){return t?(e.forEach((e=>{const n=e[0];t[n]&&(e[0]=t[n][0],e[1]+=t[n][1],e[2]+=t[n][1])})),e):e},$e=function(e,t){let{ptrs:n}=e;const{byGroup:r}=e;return n=Se(n,t),Object.keys(r).forEach((e=>{r[e]=Se(r[e],t)})),{ptrs:n,byGroup:r}},Me=function(e,t,n){const r=n.methods.one;return\"number\"==typeof e&&(e=String(e)),\"string\"==typeof e&&(e=r.killUnicode(e,n),e=r.parseMatch(e,t,n)),e},Le=e=>\"[object Object]\"===Object.prototype.toString.call(e),Ke=e=>e&&Le(e)&&!0===e.isView,Je=e=>e&&Le(e)&&!0===e.isNet;var We={matchOne:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.intersection(e).eq(0);if(Je(e))return this.sweep(e,{tagger:!1,matchOne:!0}).view;const o={regs:e=Me(e,n,this.world),group:t,justOne:!0},a=r.match(this.docs,o,this._cache),{ptrs:i,byGroup:s}=$e(a,this.fullPointer),l=this.toView(i);return l._groups=s,l},match:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.intersection(e);if(Je(e))return this.sweep(e,{tagger:!1}).view.settle();const o={regs:e=Me(e,n,this.world),group:t},a=r.match(this.docs,o,this._cache),{ptrs:i,byGroup:s}=$e(a,this.fullPointer),l=this.toView(i);return l._groups=s,l},has:function(e,t,n){const r=this.methods.one;if(Ke(e)){return this.intersection(e).fullPointer.length>0}if(Je(e))return this.sweep(e,{tagger:!1}).view.found;const o={regs:e=Me(e,n,this.world),group:t,justOne:!0};return r.match(this.docs,o,this._cache).ptrs.length>0},if:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.filter((t=>t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.if(t)}const o={regs:e=Me(e,n,this.world),group:t,justOne:!0};let a=this.fullPointer;const i=this._cache||[];a=a.filter(((e,t)=>{const n=this.update([e]);return r.match(n.docs,o,i[t]).ptrs.length>0}));const s=this.update(a);return this._cache&&(s._cache=a.map((e=>i[e[0]]))),s},ifNo:function(e,t,n){const{methods:r}=this,o=r.one;if(Ke(e))return this.filter((t=>!t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.ifNo(t)}e=Me(e,n,this.world);const a=this._cache||[],i=this.filter(((n,r)=>{const i={regs:e,group:t,justOne:!0};return 0===o.match(n.docs,i,a[r]).ptrs.length}));return this._cache&&(i._cache=i.ptrs.map((e=>a[e[0]]))),i}};var qe={before:function(e,t,n){const{indexN:r}=this.methods.one.pointer,o=[],a=r(this.fullPointer);Object.keys(a).forEach((e=>{const t=a[e].sort(((e,t)=>e[1]>t[1]?1:-1))[0];t[1]>0&&o.push([t[0],0,t[1]])}));const i=this.toView(o);return e?i.match(e,t,n):i},after:function(e,t,n){const{indexN:r}=this.methods.one.pointer,o=[],a=r(this.fullPointer),i=this.document;Object.keys(a).forEach((e=>{const t=a[e].sort(((e,t)=>e[1]>t[1]?-1:1))[0],[n,,r]=t;r<i[n].length&&o.push([n,r,i[n].length])}));const s=this.toView(o);return e?s.match(e,t,n):s},growLeft:function(e,t,n){\"string\"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[e.length-1].end=!0;const r=this.fullPointer;return this.forEach(((n,o)=>{const a=n.before(e,t);if(a.found){const e=a.terms();r[o][1]-=e.length,r[o][3]=e.docs[0][0].id}})),this.update(r)},growRight:function(e,t,n){\"string\"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[0].start=!0;const r=this.fullPointer;return this.forEach(((n,o)=>{const a=n.after(e,t);if(a.found){const e=a.terms();r[o][2]+=e.length,r[o][4]=null}})),this.update(r)},grow:function(e,t,n){return this.growRight(e,t,n).growLeft(e,t,n)}};const Ue=function(e,t){return[e[0],e[1],t[2]]},Re=(e,t,n)=>{return\"string\"==typeof e||(r=e,\"[object Array]\"===Object.prototype.toString.call(r))?t.match(e,n):e||t.none();var r},Qe=function(e,t){const[n,r,o]=e;return t.document[n]&&t.document[n][r]&&(e[3]=e[3]||t.document[n][r].id,t.document[n][o-1]&&(e[4]=e[4]||t.document[n][o-1].id)),e},Ze={splitOn:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);let a=[];return o.forEach((e=>{a.push(e.passthrough),a.push(e.before),a.push(e.match),a.push(e.after)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)},splitBefore:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);for(let e=0;e<o.length;e+=1)!o[e].after&&o[e+1]&&o[e+1].before&&o[e].match&&o[e].match[0]===o[e+1].before[0]&&(o[e].after=o[e+1].before,delete o[e+1].before);let a=[];return o.forEach((e=>{a.push(e.passthrough),a.push(e.before),e.match&&e.after?a.push(Ue(e.match,e.after)):a.push(e.match)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)},splitAfter:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);let a=[];return o.forEach((e=>{a.push(e.passthrough),e.before&&e.match?a.push(Ue(e.before,e.match)):(a.push(e.before),a.push(e.match)),a.push(e.after)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)}};Ze.split=Ze.splitAfter;const _e=function(e,t){return!(!e||!t)&&(e[0]===t[0]&&e[2]===t[1])},Xe=function(e,t,n){const r=e.world,o=r.methods.one.parseMatch;n=n||\"^.\";const a=o(t=t||\".$\",{},r),i=o(n,{},r);a[a.length-1].end=!0,i[0].start=!0;const s=e.fullPointer,l=[s[0]];for(let t=1;t<s.length;t+=1){const n=l[l.length-1],r=s[t],o=e.update([n]),u=e.update([r]);_e(n,r)&&o.has(a)&&u.has(i)?l[l.length-1]=[n[0],n[1],r[2],n[3],r[4]]:l.push(r)}return e.update(l)},Ye={joinIf:function(e,t){return Xe(this,e,t)},join:function(){return Xe(this)}},et=Object.assign({},We,qe,Ze,Ye);et.lookBehind=et.before,et.lookBefore=et.before,et.lookAhead=et.after,et.lookAfter=et.after,et.notIf=et.ifNo;const tt=/(?:^|\\s)([![^]*(?:<[^<]*>)?\\/.*?[^\\\\/]\\/[?\\]+*$~]*)(?:\\s|$)/,nt=/([!~[^]*(?:<[^<]*>)?\\([^)]+[^\\\\)]\\)[?\\]+*$~]*)(?:\\s|$)/,rt=/ /g,ot=e=>/^[![^]*(<[^<]*>)?\\//.test(e)&&/\\/[?\\]+*$~]*$/.test(e),at=function(e){return e=(e=e.map((e=>e.trim()))).filter((e=>e))},it=/\\{([0-9]+)?(, *[0-9]*)?\\}/,st=/&&/,lt=new RegExp(/^<\\s*(\\S+)\\s*>/),ut=e=>e.charAt(0).toUpperCase()+e.substring(1),ct=e=>e.charAt(e.length-1),ht=e=>e.charAt(0),dt=e=>e.substring(1),gt=e=>e.substring(0,e.length-1),mt=function(e){return e=dt(e),e=gt(e)},pt=function(e,t){const n={};for(let r=0;r<2;r+=1){if(\"$\"===ct(e)&&(n.end=!0,e=gt(e)),\"^\"===ht(e)&&(n.start=!0,e=dt(e)),\"?\"===ct(e)&&(n.optional=!0,e=gt(e)),(\"[\"===ht(e)||\"]\"===ct(e))&&(n.group=null,\"[\"===ht(e)&&(n.groupStart=!0),\"]\"===ct(e)&&(n.groupEnd=!0),e=(e=e.replace(/^\\[/,\"\")).replace(/\\]$/,\"\"),\"<\"===ht(e))){const t=lt.exec(e);t.length>=2&&(n.group=t[1],e=e.replace(t[0],\"\"))}if(\"+\"===ct(e)&&(n.greedy=!0,e=gt(e)),\"*\"!==e&&\"*\"===ct(e)&&\"\\\\*\"!==e&&(n.greedy=!0,e=gt(e)),\"!\"===ht(e)&&(n.negative=!0,e=dt(e)),\"~\"===ht(e)&&\"~\"===ct(e)&&e.length>2&&(e=mt(e),n.fuzzy=!0,n.min=t.fuzzy||.85,!1===/\\(/.test(e)))return n.word=e,n;if(\"/\"===ht(e)&&\"/\"===ct(e))return e=mt(e),t.caseSensitive&&(n.use=\"text\"),n.regex=new RegExp(e),n;if(!0===it.test(e)&&(e=e.replace(it,((e,t,r)=>(void 0===r?(n.min=Number(t),n.max=Number(t)):(r=r.replace(/, */,\"\"),void 0===t?(n.min=0,n.max=Number(r)):(n.min=Number(t),n.max=Number(r||999))),n.greedy=!0,n.min||(n.optional=!0),\"\")))),\"(\"===ht(e)&&\")\"===ct(e)){st.test(e)?(n.choices=e.split(st),n.operator=\"and\"):(n.choices=e.split(\"|\"),n.operator=\"or\"),n.choices[0]=dt(n.choices[0]);const r=n.choices.length-1;n.choices[r]=gt(n.choices[r]),n.choices=n.choices.map((e=>e.trim())),n.choices=n.choices.filter((e=>e)),n.choices=n.choices.map((e=>e.split(/ /g).map((e=>pt(e,t))))),e=\"\"}if(\"{\"===ht(e)&&\"}\"===ct(e)){if(e=mt(e),n.root=e,/\\//.test(e)){const e=n.root.split(/\\//);n.root=e[0],n.pos=e[1],\"adj\"===n.pos&&(n.pos=\"Adjective\"),n.pos=n.pos.charAt(0).toUpperCase()+n.pos.substr(1).toLowerCase(),void 0!==e[2]&&(n.sense=e[2])}return n}if(\"<\"===ht(e)&&\">\"===ct(e))return e=mt(e),n.chunk=ut(e),n.greedy=!0,n;if(\"%\"===ht(e)&&\"%\"===ct(e))return e=mt(e),n.switch=e,n}return\"#\"===ht(e)?(n.tag=dt(e),n.tag=ut(n.tag),n):\"@\"===ht(e)?(n.method=dt(e),n):\".\"===e?(n.anything=!0,n):\"*\"===e?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(e&&(e=(e=e.replace(\"\\\\*\",\"*\")).replace(\"\\\\.\",\".\"),t.caseSensitive?n.use=\"text\":e=e.toLowerCase(),n.word=e),n)},ft=/[a-z0-9][-–—][a-z]/i,bt=function(e,t){const{all:n}=t.methods.two.transform.verb||{},r=e.root;return n?n(r,t.model):[]},vt=function(e,t){const{all:n}=t.methods.two.transform.noun||{};return n?n(e.root,t.model):[e.root]},yt=function(e,t){const{all:n}=t.methods.two.transform.adjective||{};return n?n(e.root,t.model):[e.root]},wt=function(e){return e=function(e){let t=0,n=null;for(let r=0;r<e.length;r++){const o=e[r];!0===o.groupStart&&(n=o.group,null===n&&(n=String(t),t+=1)),null!==n&&(o.group=n),!0===o.groupEnd&&(n=null)}return e}(e),e=function(e){return e.map((e=>(e.fuzzy&&e.choices&&e.choices.forEach((t=>{1===t.length&&t[0].word&&(t[0].fuzzy=!0,t[0].min=e.min)})),e)))}(e=e.map((e=>{if(void 0!==e.choices){if(\"or\"!==e.operator)return e;if(!0===e.fuzzy)return e;!0===e.choices.every((e=>{if(1!==e.length)return!1;const t=e[0];return!0!==t.fuzzy&&!t.start&&!t.end&&void 0!==t.word&&!0!==t.negative&&!0!==t.optional&&!0!==t.method}))&&(e.fastOr=new Set,e.choices.forEach((t=>{e.fastOr.add(t[0].word)})),delete e.choices)}return e}))),e},kt=function(e,t){for(const n of t)if(e.has(n))return!0;return!1},Pt=function(e,t){for(let n=0;n<e.length;n+=1){const r=e[n];if(!0!==r.optional&&!0!==r.negative&&!0!==r.fuzzy){if(void 0!==r.word&&!1===t.has(r.word))return!0;if(void 0!==r.tag&&!1===t.has(\"#\"+r.tag))return!0;if(r.fastOr&&!1===kt(r.fastOr,t))return!1}}return!1},At=function(e,t,n=3){if(e===t)return 1;if(e.length<n||t.length<n)return 0;const r=function(e,t){const n=e.length,r=t.length;if(0===n)return r;if(0===r)return n;const o=(r>n?r:n)+1;if(Math.abs(n-r)>(o||100))return o||100;const a=[];for(let e=0;e<o;e++)a[e]=[e],a[e].length=o;for(let e=0;e<o;e++)a[0][e]=e;let i,s,l,u,c,h;for(let o=1;o<=n;++o)for(s=e[o-1],i=1;i<=r;++i){if(o===i&&a[o][i]>4)return n;l=t[i-1],u=s===l?0:1,c=a[o-1][i]+1,(h=a[o][i-1]+1)<c&&(c=h),(h=a[o-1][i-1]+u)<c&&(c=h);const r=o>1&&i>1&&s===t[i-2]&&e[o-2]===l&&(h=a[o-2][i-2]+u)<c;a[o][i]=r?h:c}return a[n][r]}(e,t),o=Math.max(e.length,t.length);return 1-(0===o?0:r/o)},Ct=/([\\u0022\\uFF02\\u0027\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F])/,Nt=/([\\u0022\\uFF02\\u0027\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4])/,jt=/^[-–—]$/,xt=/ [-–—]{1,3} /,It=(e,t)=>-1!==e.post.indexOf(t),Tt={hasQuote:e=>Ct.test(e.pre)||Nt.test(e.post),hasComma:e=>It(e,\",\"),hasPeriod:e=>!0===It(e,\".\")&&!1===It(e,\"...\"),hasExclamation:e=>It(e,\"!\"),hasQuestionMark:e=>It(e,\"?\")||It(e,\"¿\"),hasEllipses:e=>It(e,\"..\")||It(e,\"…\"),hasSemicolon:e=>It(e,\";\"),hasColon:e=>It(e,\":\"),hasSlash:e=>/\\//.test(e.text),hasHyphen:e=>jt.test(e.post)||jt.test(e.pre),hasDash:e=>xt.test(e.post)||xt.test(e.pre),hasContraction:e=>Boolean(e.implicit),isAcronym:e=>e.tags.has(\"Acronym\"),isKnown:e=>e.tags.size>0,isTitleCase:e=>/^\\p{Lu}[a-z'\\u00C0-\\u00FF]/u.test(e.text),isUpperCase:e=>/^\\p{Lu}+$/u.test(e.text)};Tt.hasQuotation=Tt.hasQuote;let Dt=function(){};Dt=function(e,t,n,r){const o=function(e,t,n,r){if(!0===t.anything)return!0;if(!0===t.start&&0!==n)return!1;if(!0===t.end&&n!==r-1)return!1;if(void 0!==t.id&&t.id===e.id)return!0;if(void 0!==t.word){if(t.use)return t.word===e[t.use];if(null!==e.machine&&e.machine===t.word)return!0;if(void 0!==e.alias&&e.alias.hasOwnProperty(t.word))return!0;if(!0===t.fuzzy){if(t.word===e.root)return!0;if(At(t.word,e.normal)>=t.min)return!0}return!(!e.alias||!e.alias.some((e=>e===t.word)))||t.word===e.text||t.word===e.normal}if(void 0!==t.tag)return!0===e.tags.has(t.tag);if(void 0!==t.method)return\"function\"==typeof Tt[t.method]&&!0===Tt[t.method](e);if(void 0!==t.pre)return e.pre&&e.pre.includes(t.pre);if(void 0!==t.post)return e.post&&e.post.includes(t.post);if(void 0!==t.regex){let n=e.normal;return t.use&&(n=e[t.use]),t.regex.test(n)}if(void 0!==t.chunk)return e.chunk===t.chunk;if(void 0!==t.switch)return e.switch===t.switch;if(void 0!==t.machine)return e.normal===t.machine||e.machine===t.machine||e.root===t.machine;if(void 0!==t.sense)return e.sense===t.sense;if(void 0!==t.fastOr){if(t.pos&&!e.tags.has(t.pos))return null;const n=e.root||e.implicit||e.machine||e.normal;return t.fastOr.has(n)||t.fastOr.has(e.text)}return void 0!==t.choices&&(\"and\"===t.operator?t.choices.every((t=>Dt(e,t,n,r))):t.choices.some((t=>Dt(e,t,n,r))))}(e,t,n,r);return!0===t.negative?!o:o};const Ht=function(e,t){if(!0===e.end&&!0===e.greedy&&t.start_i+t.t<t.phrase_length-1){const n=Object.assign({},e,{end:!1});if(!0===Dt(t.terms[t.t],n,t.start_i+t.t,t.phrase_length))return!0}return!1},Et=function(e,t){return e.groups[e.inGroup]||(e.groups[e.inGroup]={start:t,length:0}),e.groups[e.inGroup]},Gt=function(e){const{regs:t}=e,n=t[e.r],r=function(e,t){let n=e.t;if(!t)return e.terms.length;for(;n<e.terms.length;n+=1)if(!0===Dt(e.terms[n],t,e.start_i+n,e.phrase_length))return n;return null}(e,t[e.r+1]);if(null===r||0===r)return null;if(void 0!==n.min&&r-e.t<n.min)return null;if(void 0!==n.max&&r-e.t>n.max)return e.t=e.t+n.max,!0;if(!0===e.hasGroup){Et(e,e.t).length=r-e.t}return e.t=r,!0},Ot=function(e,t=0){const n=e.regs[e.r];let r=!1;for(let a=0;a<n.choices.length;a+=1){const i=n.choices[a];if(o=i,\"[object Array]\"!==Object.prototype.toString.call(o))return!1;if(r=i.every(((n,r)=>{let o=0;const a=e.t+r+t+o;if(void 0===e.terms[a])return!1;const i=Dt(e.terms[a],n,a+e.start_i,e.phrase_length);if(!0===i&&!0===n.greedy)for(let t=1;t<e.terms.length;t+=1){const r=e.terms[a+t];if(r){if(!0!==Dt(r,n,e.start_i+t,e.phrase_length))break;o+=1}}return t+=o,i})),r){t+=i.length;break}}var o;return r&&!0===n.greedy?Ot(e,t):t},Ft=function(e){const{regs:t}=e,n=t[e.r],r=Ot(e);if(r){if(!0===n.negative)return null;if(!0===e.hasGroup){Et(e,e.t).length+=r}if(!0===n.end){const t=e.phrase_length;if(e.t+e.start_i+r!==t)return null}return e.t+=r,!0}return!!n.optional||null},Vt=function(e){const{regs:t}=e,n=t[e.r],r=function(e){let t=0;return!0===e.regs[e.r].choices.every((n=>{const r=n.every(((t,n)=>{const r=e.t+n;return void 0!==e.terms[r]&&Dt(e.terms[r],t,r,e.phrase_length)}));return!0===r&&n.length>t&&(t=n.length),r}))&&t}(e);if(r){if(!0===n.negative)return null;if(!0===e.hasGroup){Et(e,e.t).length+=r}if(!0===n.end){const t=e.phrase_length-1;if(e.t+e.start_i!==t)return null}return e.t+=r,!0}return!!n.optional||null},zt=function(e){const{regs:t}=e,n=t[e.r],r=Object.assign({},n);r.negative=!1;if(Dt(e.terms[e.t],r,e.start_i+e.t,e.phrase_length))return!1;if(n.optional){const n=t[e.r+1];if(n){if(Dt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))e.r+=1;else if(n.optional&&t[e.r+2]){Dt(e.terms[e.t],t[e.r+2],e.start_i+e.t,e.phrase_length)&&(e.r+=2)}}}return n.greedy?function(e,t,n){let r=0;for(let o=e.t;o<e.terms.length;o+=1){let a=Dt(e.terms[o],t,e.start_i+e.t,e.phrase_length);if(a)break;if(n&&(a=Dt(e.terms[o],n,e.start_i+e.t,e.phrase_length),a))break;if(r+=1,void 0!==t.max&&r===t.max)break}return!(0===r||t.min&&t.min>r||(e.t+=r,0))}(e,r,t[e.r+1]):(e.t+=1,!0)},Bt=function(e){const{regs:t,phrase_length:n}=e,r=t[e.r];return e.t=function(e,t){const n=Object.assign({},e.regs[e.r],{start:!1,end:!1}),r=e.t;for(;e.t<e.terms.length;e.t+=1){if(t&&Dt(e.terms[e.t],t,e.start_i+e.t,e.phrase_length))return e.t;const o=e.t-r+1;if(void 0!==n.max&&o===n.max)return e.t;if(!1===Dt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))return void 0!==n.min&&o<n.min?null:e.t}return e.t}(e,t[e.r+1]),null===e.t||r.min&&r.min>e.t?null:!0!==r.end||e.start_i+e.t===n||null},St=function(e){const{regs:t}=e,n=t[e.r],r=e.terms[e.t],o=e.t;if(n.optional&&t[e.r+1]&&n.negative)return!0;if(n.optional&&t[e.r+1]&&function(e){const{regs:t}=e,n=t[e.r],r=e.terms[e.t],o=Dt(r,t[e.r+1],e.start_i+e.t,e.phrase_length);if(n.negative||o){const n=e.terms[e.t+1];n&&Dt(n,t[e.r+1],e.start_i+e.t,e.phrase_length)||(e.r+=1)}}(e),r.implicit&&e.terms[e.t+1]&&function(e){const t=e.terms[e.t],n=e.regs[e.r];if(t.implicit&&e.terms[e.t+1]){if(!e.terms[e.t+1].implicit)return;n.word===t.normal&&(e.t+=1),\"hasContraction\"===n.method&&(e.t+=1)}}(e),e.t+=1,!0===n.end&&e.t!==e.terms.length&&!0!==n.greedy)return null;if(!0===n.greedy){if(!Bt(e))return null}return!0===e.hasGroup&&function(e,t){const n=e.regs[e.r],r=Et(e,t);e.t>1&&n.greedy?r.length+=e.t-t:r.length++}(e,o),!0},$t=function(e,t,n,r){if(0===e.length||0===t.length)return null;const o={t:0,terms:e,r:0,regs:t,groups:{},start_i:n,phrase_length:r,inGroup:null};for(;o.r<t.length;o.r+=1){const e=t[o.r];if(o.hasGroup=Boolean(e.group),!0===o.hasGroup?o.inGroup=e.group:o.inGroup=null,!o.terms[o.t]){if(!1===t.slice(o.r).some((e=>!e.optional)))break;return null}if(!0===e.anything&&!0===e.greedy){if(!Gt(o))return null;continue}if(void 0!==e.choices&&\"or\"===e.operator){if(!Ft(o))return null;continue}if(void 0!==e.choices&&\"and\"===e.operator){if(!Vt(o))return null;continue}if(!0===e.anything){if(e.negative&&e.anything)return null;if(!St(o))return null;continue}if(!0===Ht(e,o)){if(!St(o))return null;continue}if(e.negative){if(!zt(o))return null;continue}if(!0!==Dt(o.terms[o.t],e,o.start_i+o.t,o.phrase_length)){if(!0!==e.optional)return null}else{if(!St(o))return null}}const a=[null,n,o.t+n];if(a[1]===a[2])return null;const i={};return Object.keys(o.groups).forEach((e=>{const t=o.groups[e],r=n+t.start;i[e]=[null,r,r+t.length]})),{pointer:a,groups:i}},Mt=function(e,t){return e.pointer[0]=t,Object.keys(e.groups).forEach((n=>{e.groups[n][0]=t})),e},Lt=function(e,t,n){let r=$t(e,t,0,e.length);return r?(r=Mt(r,n),r):null},Kt={one:{termMethods:Tt,parseMatch:function(e,t,n){if(null==e||\"\"===e)return[];t=t||{},\"number\"==typeof e&&(e=String(e));let r=function(e){const t=e.split(tt);let n=[];t.forEach((e=>{ot(e)?n.push(e):n=n.concat(e.split(nt))})),n=at(n);let r=[];return n.forEach((e=>{(e=>/^[![^]*(<[^<]*>)?\\(/.test(e)&&/\\)[?\\]+*$~]*$/.test(e))(e)||ot(e)?r.push(e):r=r.concat(e.split(rt))})),r=at(r),r}(e);return r=r.map((e=>pt(e,t))),r=function(e,t){const n=t.model.one.prefixes;for(let t=e.length-1;t>=0;t-=1){const r=e[t];if(r.word&&ft.test(r.word)){let o=r.word.split(/[-–—]/g);if(n.hasOwnProperty(o[0]))continue;o=o.filter((e=>e)).reverse(),e.splice(t,1),o.forEach((n=>{const o=Object.assign({},r);o.word=n,e.splice(t,0,o)}))}}return e}(r,n),r=function(e,t){return e.map((e=>{if(e.root)if(t.methods.two&&t.methods.two.transform){let n=[];e.pos?\"Verb\"===e.pos?n=n.concat(bt(e,t)):\"Noun\"===e.pos?n=n.concat(vt(e,t)):\"Adjective\"===e.pos&&(n=n.concat(yt(e,t))):(n=n.concat(bt(e,t)),n=n.concat(vt(e,t)),n=n.concat(yt(e,t))),n=n.filter((e=>e)),n.length>0&&(e.operator=\"or\",e.fastOr=new Set(n))}else e.machine=e.root,delete e.id,delete e.root;return e}))}(r,n),r=wt(r),r},match:function(e,t,n){n=n||[];const{regs:r,group:o,justOne:a}=t;let i=[];if(!r||0===r.length)return{ptrs:[],byGroup:{}};const s=r.filter((e=>!0!==e.optional&&!0!==e.negative)).length;e:for(let t=0;t<e.length;t+=1){const o=e[t];if(!n[t]||!Pt(r,n[t]))if(!0!==r[0].start)for(let e=0;e<o.length;e+=1){const n=o.slice(e);if(n.length<s)break;let l=$t(n,r,e,o.length);if(l){if(l=Mt(l,t),i.push(l),!0===a)break e;const n=l.pointer[2];Math.abs(n-1)>e&&(e=Math.abs(n-1))}}else{const e=Lt(o,r,t);e&&i.push(e)}}return!0===r[r.length-1].end&&(i=i.filter((t=>{const n=t.pointer[0];return e[n].length===t.pointer[2]}))),t.notIf&&(i=function(e,t,n){return e=e.filter((e=>{const[r,o,a]=e.pointer,i=n[r].slice(o,a);for(let e=0;e<i.length;e+=1){const n=i.slice(e);if(null!==$t(n,t,e,i.length))return!1}return!0})),e}(i,t.notIf,e)),i=function(e,t){const n=[],r={};return 0===e.length||(\"number\"==typeof t&&(t=String(t)),t?e.forEach((e=>{e.groups[t]&&n.push(e.groups[t])})):e.forEach((e=>{n.push(e.pointer),Object.keys(e.groups).forEach((t=>{r[t]=r[t]||[],r[t].push(e.groups[t])}))}))),{ptrs:n,byGroup:r}}(i,o),i.ptrs.forEach((t=>{const[n,r,o]=t;t[3]=e[n][r].id,t[4]=e[n][o-1].id})),i}}};var Jt={api:function(e){Object.assign(e.prototype,et)},methods:Kt,lib:{parseMatch:function(e,t){const n=this.world(),r=n.methods.one.killUnicode;return r&&(e=r(e,n)),n.methods.one.parseMatch(e,t,n)}}};const Wt=/^\\../,qt=/^#./,Ut=function(e,t){const n={},r={};return Object.keys(t).forEach((o=>{let a=t[o];const i=function(e){let t=\"\",n=\"</span>\";return e=e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&apos;\"),Wt.test(e)?t=`<span class=\"${e.replace(/^\\./,\"\")}\"`:qt.test(e)?t=`<span id=\"${e.replace(/^#/,\"\")}\"`:(t=`<${e}`,n=`</${e}>`),t+=\">\",{start:t,end:n}}(o);\"string\"==typeof a&&(a=e.match(a)),a.docs.forEach((e=>{if(e.every((e=>e.implicit)))return;const t=e[0].id;n[t]=n[t]||[],n[t].push(i.start);const o=e[e.length-1].id;r[o]=r[o]||[],r[o].push(i.end)}))})),{starts:n,ends:r}};var Rt={html:function(e){const{starts:t,ends:n}=Ut(this,e);let r=\"\";return this.docs.forEach((e=>{for(let o=0;o<e.length;o+=1){const a=e[o];t.hasOwnProperty(a.id)&&(r+=t[a.id].join(\"\")),r+=a.pre||\"\",r+=a.text||\"\",n.hasOwnProperty(a.id)&&(r+=n[a.id].join(\"\")),r+=a.post||\"\"}})),r}};const Qt=/[,:;)\\]*.?~!\\u0022\\uFF02\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4—-]+$/,Zt=/^[(['\"*~\\uFF02\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/,_t=/[,:;)('\"\\u201D\\]]/,Xt=/^[-–—]$/,Yt=/ /,en=function(e,t,n=!0){let r=\"\";return e.forEach((e=>{let n=e.pre||\"\",o=e.post||\"\";\"some\"===t.punctuation&&(n=n.replace(Zt,\"\"),Xt.test(o)&&(o=\" \"),o=o.replace(_t,\"\"),o=o.replace(/\\?!+/,\"?\"),o=o.replace(/!+/,\"!\"),o=o.replace(/\\?+/,\"?\"),o=o.replace(/\\.{2,}/,\"\"),e.tags.has(\"Abbreviation\")&&(o=o.replace(/\\./,\"\"))),\"some\"===t.whitespace&&(n=n.replace(/\\s/,\"\"),o=o.replace(/\\s+/,\" \")),t.keepPunct||(n=n.replace(Zt,\"\"),o=\"-\"===o?\" \":o.replace(Qt,\"\"));let a=e[t.form||\"text\"]||e.normal||\"\";\"implicit\"===t.form&&(a=e.implicit||e.text),\"root\"===t.form&&e.implicit&&(a=e.root||e.implicit||e.normal),\"machine\"!==t.form&&\"implicit\"!==t.form&&\"root\"!==t.form||!e.implicit||o&&Yt.test(o)||(o+=\" \"),r+=n+a+o})),!1===n&&(r=r.trim()),!0===t.lowerCase&&(r=r.toLowerCase()),r},tn={text:{form:\"text\"},normal:{whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"normal\"},machine:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"none\",unicode:\"some\",form:\"machine\"},root:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"root\"},implicit:{form:\"implicit\"}};tn.clean=tn.normal,tn.reduced=tn.root;const nn=[];let rn=0;for(;rn<64;)nn[rn]=0|4294967296*Math.sin(++rn%Math.PI);const on=function(e){let t,n,r,o=decodeURI(encodeURI(e))+\"\",a=o.length;const i=[t=1732584193,n=4023233417,~t,~n],s=[];for(e=--a/4+2|15,s[--e]=8*a;~a;)s[a>>2]|=o.charCodeAt(a)<<8*a--;for(rn=o=0;rn<e;rn+=16){for(a=i;o<64;a=[r=a[3],t+((r=a[0]+[t&n|~t&r,r&t|~r&n,t^n^r,n^(t|~r)][a=o>>4]+nn[o]+~~s[rn|15&[o,5*o+1,3*o+5,7*o][a]])<<(a=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*a+o++%4])|r>>>-a),t,n])t=0|a[1],n=a[2];for(o=4;o;)i[--o]+=a[o]}for(e=\"\";o<32;)e+=(i[o>>3]>>4*(1^o++)&15).toString(16);return e},an={text:!0,terms:!0},sn={case:\"none\",unicode:\"some\",form:\"machine\",punctuation:\"some\"},ln=function(e,t){return Object.assign({},e,t)},un={text:e=>en(e,{keepPunct:!0},!1),normal:e=>en(e,ln(tn.normal,{keepPunct:!0}),!1),implicit:e=>en(e,ln(tn.implicit,{keepPunct:!0}),!1),machine:e=>en(e,sn,!1),root:e=>en(e,ln(sn,{form:\"root\"}),!1),hash:e=>on(en(e,{keepPunct:!0},!1)),offset:e=>{const t=un.text(e).length;return{index:e[0].offset.index,start:e[0].offset.start,length:t}},terms:e=>e.map((e=>{const t=Object.assign({},e);return t.tags=Array.from(e.tags),t})),confidence:(e,t,n)=>t.eq(n).confidence(),syllables:(e,t,n)=>t.eq(n).syllables(),sentence:(e,t,n)=>t.eq(n).fullSentence().text(),dirty:e=>e.some((e=>!0===e.dirty))};un.sentences=un.sentence,un.clean=un.normal,un.reduced=un.root;const cn={json:function(e){const t=(n=this,\"string\"==typeof(r=(r=e)||{})&&(r={}),(r=Object.assign({},an,r)).offset&&n.compute(\"offset\"),n.docs.map(((e,t)=>{const o={};return Object.keys(r).forEach((a=>{r[a]&&un[a]&&(o[a]=un[a](e,n,t))})),o})));var n,r;return\"number\"==typeof e?t[e]:t}};cn.data=cn.json;const hn=function(e){const t=e.pre||\"\",n=e.post||\"\";return t+e.text+n},dn=function(e,t){const n=function(e,t){const n={};return Object.keys(t).forEach((r=>{e.match(r).fullPointer.forEach((e=>{n[e[3]]={fn:t[r],end:e[2]}}))})),n}(e,t);let r=\"\";return e.docs.forEach(((t,o)=>{for(let a=0;a<t.length;a+=1){const i=t[a];if(n.hasOwnProperty(i.id)){const{fn:s,end:l}=n[i.id],u=e.update([[o,a,l]]);r+=t[a].pre||\"\",r+=s(u),a=l-1,r+=t[a].post||\"\"}else r+=hn(i)}})),r},gn={debug:function(e){const t=this.methods.one.debug||{};return e&&t.hasOwnProperty(e)?(t[e](this),this):\"undefined\"!=typeof window&&window.document?(t.clientSide(this),this):(t.tags(this),this)},out:function(e){if(t=e,\"[object Object]\"===Object.prototype.toString.call(t))return dn(this,e);var t;if(\"text\"===e)return this.text();if(\"normal\"===e)return this.text(\"normal\");if(\"root\"===e)return this.text(\"root\");if(\"machine\"===e||\"reduced\"===e)return this.text(\"machine\");if(\"hash\"===e||\"md5\"===e)return on(this.text());if(\"json\"===e)return this.json();if(\"offset\"===e||\"offsets\"===e)return this.compute(\"offset\"),this.json({offset:!0});if(\"array\"===e){const e=this.docs.map((e=>e.reduce(((e,t)=>e+t.pre+t.text+t.post),\"\").trim()));return e.filter((e=>e))}if(\"freq\"===e||\"frequency\"===e||\"topk\"===e)return function(e){const t={};e.forEach((e=>{t[e]=t[e]||0,t[e]+=1}));const n=Object.keys(t).map((e=>({normal:e,count:t[e]})));return n.sort(((e,t)=>e.count>t.count?-1:0))}(this.json({normal:!0}).map((e=>e.normal)));if(\"terms\"===e){let e=[];return this.docs.forEach((t=>{let n=t.map((e=>e.text));n=n.filter((e=>e)),e=e.concat(n)})),e}return\"tags\"===e?this.docs.map((e=>e.reduce(((e,t)=>(e[t.implicit||t.normal]=Array.from(t.tags),e)),{}))):\"debug\"===e?this.debug():this.text()},wrap:function(e){return dn(this,e)}};var mn={text:function(e){let t={};var n;if(e&&\"string\"==typeof e&&tn.hasOwnProperty(e)?t=Object.assign({},tn[e]):e&&(n=e,\"[object Object]\"===Object.prototype.toString.call(n))&&(t=Object.assign({},e)),void 0!==t.keepSpace||this.isFull()||(t.keepSpace=!1),void 0===t.keepEndPunct&&this.pointer){const e=this.pointer[0];e&&e[1]?t.keepEndPunct=!1:t.keepEndPunct=!0}return void 0===t.keepPunct&&(t.keepPunct=!0),void 0===t.keepSpace&&(t.keepSpace=!0),function(e,t){let n=\"\";if(!e||!e[0]||!e[0][0])return n;for(let r=0;r<e.length;r+=1)n+=en(e[r],t,!0);if(t.keepSpace||(n=n.trim()),!1===t.keepEndPunct){e[0][0].tags.has(\"Emoticon\")||(n=n.replace(Zt,\"\"));const t=e[e.length-1];t[t.length-1].tags.has(\"Emoticon\")||(n=n.replace(Qt,\"\")),n.endsWith(\"'\")&&!n.endsWith(\"s'\")&&(n=n.replace(/'/,\"\"))}return!0===t.cleanWhitespace&&(n=n.trim()),n}(this.docs,t)}};const pn=Object.assign({},gn,mn,cn,Rt),fn=\"\u001b[0m\",bn={green:e=>\"\u001b[32m\"+e+fn,red:e=>\"\u001b[31m\"+e+fn,blue:e=>\"\u001b[34m\"+e+fn,magenta:e=>\"\u001b[35m\"+e+fn,cyan:e=>\"\u001b[36m\"+e+fn,yellow:e=>\"\u001b[33m\"+e+fn,black:e=>\"\u001b[30m\"+e+fn,dim:e=>\"\u001b[2m\"+e+fn,i:e=>\"\u001b[3m\"+e+fn},vn={tags:function(e){const{docs:t,model:n}=e;0===t.length&&console.log(bn.blue(\"\\n     ──────\")),t.forEach((t=>{console.log(bn.blue(\"\\n  ┌─────────\")),t.forEach((t=>{const r=[...t.tags||[]];let o=t.text||\"-\";t.sense&&(o=`{${t.normal}/${t.sense}}`),t.implicit&&(o=\"[\"+t.implicit+\"]\"),o=bn.yellow(o);let a=\"'\"+o+\"'\";if(t.reference){const n=e.update([t.reference]).text(\"normal\");a+=` - ${bn.dim(bn.i(\"[\"+n+\"]\"))}`}a=a.padEnd(18);const i=bn.blue(\"  │ \")+bn.i(a)+\"  - \"+function(e,t){return t.one.tagSet&&(e=e.map((e=>{if(!t.one.tagSet.hasOwnProperty(e))return e;const n=t.one.tagSet[e].color||\"blue\";return bn[n](e)}))),e.join(\", \")}(r,n);console.log(i)}))})),console.log(\"\\n\")},clientSide:function(e){console.log(\"%c -=-=- \",\"background-color:#6699cc;\"),e.forEach((e=>{console.groupCollapsed(e.text());const t=e.docs[0].map((e=>{let t=e.text||\"-\";e.implicit&&(t=\"[\"+e.implicit+\"]\");return{text:t,tags:\"[\"+Array.from(e.tags).join(\", \")+\"]\"}}));console.table(t,[\"text\",\"tags\"]),console.groupEnd()}))},chunks:function(e){const{docs:t}=e;console.log(\"\"),t.forEach((e=>{const t=[];e.forEach((e=>{\"Noun\"===e.chunk?t.push(bn.blue(e.implicit||e.normal)):\"Verb\"===e.chunk?t.push(bn.green(e.implicit||e.normal)):\"Adjective\"===e.chunk?t.push(bn.yellow(e.implicit||e.normal)):\"Pivot\"===e.chunk?t.push(bn.red(e.implicit||e.normal)):t.push(e.implicit||e.normal)})),console.log(t.join(\" \"),\"\\n\")})),console.log(\"\\n\")},highlight:function(e){if(!e.found)return;const t={};e.fullPointer.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),Object.keys(t).forEach((n=>{let r=e.update([[Number(n)]]).text();e.update(t[n]).json({offset:!0}).forEach(((e,t)=>{r=function(e,t,n){const r=((e,t,n)=>{const r=9*n,o=t.start+r,a=o+t.length;return[e.substring(0,o),e.substring(o,a),e.substring(a,e.length)]})(e,t,n);return`${r[0]}${bn.blue(r[1])}${r[2]}`}(r,e.offset,t)})),console.log(r)})),console.log(\"\\n\")}};var yn={api:function(e){Object.assign(e.prototype,pn)},methods:{one:{hash:on,debug:vn}}};const wn=function(e,t){if(e[0]!==t[0])return!1;const[,n,r]=e,[,o,a]=t;return n<=o&&r>o||o<=n&&a>n},kn=function(e){const t={};return e.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),t},Pn=function(e,t){const n=kn(t),r=[];return e.forEach((e=>{const[t]=e;let o=n[t]||[];if(o=o.filter((t=>function(e,t){return e[1]<=t[1]&&t[2]<=e[2]}(e,t))),0===o.length)return void r.push({passthrough:e});o=o.sort(((e,t)=>e[1]-t[1]));let a=e;o.forEach(((e,t)=>{const n=function(e,t){const[n,r]=e,o=t[1],a=t[2],i={};if(r<o){const t=o<e[2]?o:e[2];i.before=[n,r,t]}return i.match=t,e[2]>a&&(i.after=[n,a,e[2]]),i}(a,e);o[t+1]?(r.push({before:n.before,match:n.match}),n.after&&(a=n.after)):r.push(n)}))})),r};var An={one:{termList:function(e){const t=[];for(let n=0;n<e.length;n+=1)for(let r=0;r<e[n].length;r+=1)t.push(e[n][r]);return t},getDoc:function(e,t){let n=[];return e.forEach(((r,o)=>{if(!r)return;let[a,i,s,l,u]=r,c=t[a]||[];if(void 0===i&&(i=0),void 0===s&&(s=c.length),!l||c[i]&&c[i].id===l)c=c.slice(i,s);else{const n=function(e,t,n){for(let r=0;r<20;r+=1){if(t[n-r]){const o=t[n-r].findIndex((t=>t.id===e));if(-1!==o)return[n-r,o]}if(t[n+r]){const o=t[n+r].findIndex((t=>t.id===e));if(-1!==o)return[n+r,o]}}return null}(l,t,a);if(null!==n){const r=s-i;c=t[n[0]].slice(n[1],n[1]+r);const a=c[0]?c[0].id:null;e[o]=[n[0],n[1],n[1]+r,a]}}0!==c.length&&i!==s&&(u&&c[c.length-1].id!==u&&(c=function(e,t){const[n,r,,,o]=e,a=t[n],i=a.findIndex((e=>e.id===o));return-1===i?(e[2]=t[n].length,e[4]=a.length?a[a.length-1].id:null):e[2]=i,t[n].slice(r,e[2]+1)}(r,t)),n.push(c))})),n=n.filter((e=>e.length>0)),n},pointer:{indexN:kn,splitAll:Pn}}};const Cn=function(e,t){const n=e.concat(t),r=kn(n);let o=[];return n.forEach((e=>{const[t]=e;if(1===r[t].length)return void o.push(e);const n=r[t].filter((t=>wn(e,t)));n.push(e);const a=function(e){let t=e[0][1],n=e[0][2];return e.forEach((e=>{e[1]<t&&(t=e[1]),e[2]>n&&(n=e[2])})),[e[0][0],t,n]}(n);o.push(a)})),o=function(e){const t={};for(let n=0;n<e.length;n+=1)t[e[n].join(\",\")]=e[n];return Object.values(t)}(o),o},Nn=function(e,t){const n=[];return Pn(e,t).forEach((e=>{e.passthrough&&n.push(e.passthrough),e.before&&n.push(e.before),e.after&&n.push(e.after)})),n},jn=(e,t)=>{return\"string\"==typeof e||(n=e,\"[object Array]\"===Object.prototype.toString.call(n))?t.match(e):e||t.none();var n},xn=function(e,t){return e.map((e=>{const[n,r]=e;return t[n]&&t[n][r]&&(e[3]=t[n][r].id),e}))},In={union:function(e){e=jn(e,this);let t=Cn(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)}};In.and=In.union,In.intersection=function(e){e=jn(e,this);let t=function(e,t){const n=kn(t),r=[];return e.forEach((e=>{let t=n[e[0]]||[];t=t.filter((t=>wn(e,t))),0!==t.length&&t.forEach((t=>{const n=function(e,t){const n=e[1]<t[1]?t[1]:e[1],r=e[2]>t[2]?t[2]:e[2];return n<r?[e[0],n,r]:null}(e,t);n&&r.push(n)}))})),r}(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)},In.not=function(e){e=jn(e,this);let t=Nn(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)},In.difference=In.not,In.complement=function(){const e=this.all();let t=Nn(e.fullPointer,this.fullPointer);return t=xn(t,this.document),this.toView(t)},In.settle=function(){let e=this.fullPointer;return e.forEach((t=>{e=Cn(e,[t])})),e=xn(e,this.document),this.update(e)};var Tn={methods:An,api:function(e){Object.assign(e.prototype,In)}};const Dn=function(e){return!0===e.optional||!0===e.negative?null:e.tag?\"#\"+e.tag:e.word?e.word:e.switch?`%${e.switch}%`:null},Hn=function(e,t){const n=t.methods.one.parseMatch;return e.forEach((e=>{e.regs=n(e.match,{},t),\"string\"==typeof e.ifNo&&(e.ifNo=[e.ifNo]),e.notIf&&(e.notIf=n(e.notIf,{},t)),e.needs=function(e){const t=[];return e.forEach((e=>{t.push(Dn(e)),\"and\"===e.operator&&e.choices&&e.choices.forEach((e=>{e.forEach((e=>{t.push(Dn(e))}))}))})),t.filter((e=>e))}(e.regs);const{wants:r,count:o}=function(e){const t=[];let n=0;return e.forEach((e=>{\"or\"!==e.operator||e.optional||e.negative||(e.fastOr&&Array.from(e.fastOr).forEach((e=>{t.push(e)})),e.choices&&e.choices.forEach((e=>{e.forEach((e=>{const n=Dn(e);n&&t.push(n)}))})),n+=1)})),{wants:t,count:n}}(e.regs);e.wants=r,e.minWant=o,e.minWords=e.regs.filter((e=>!e.optional)).length})),e};var En={buildNet:function(e,t){e=Hn(e,t);const n={};e.forEach((e=>{e.needs.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)})),e.wants.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)}))})),Object.keys(n).forEach((e=>{const t={};n[e]=n[e].filter((e=>\"boolean\"!=typeof t[e.match]&&(t[e.match]=!0,!0)))}));const r=e.filter((e=>0===e.needs.length&&0===e.wants.length));return{hooks:n,always:r}},bulkMatch:function(e,t,n,r={}){const o=n.one.cacheDoc(e);let a=function(e,t){return e.map(((n,r)=>{let o=[];Object.keys(t).forEach((n=>{e[r].has(n)&&(o=o.concat(t[n]))}));const a={};return o=o.filter((e=>\"boolean\"!=typeof a[e.match]&&(a[e.match]=!0,!0))),o}))}(o,t.hooks);a=function(e,t){return e.map(((e,n)=>{const r=t[n];return(e=(e=e.filter((e=>e.needs.every((e=>r.has(e)))))).filter((e=>void 0===e.ifNo||!0!==e.ifNo.some((e=>r.has(e)))))).filter((e=>0===e.wants.length||e.wants.filter((e=>r.has(e))).length>=e.minWant))}))}(a,o),t.always.length>0&&(a=a.map((e=>e.concat(t.always)))),a=function(e,t){return e.map(((e,n)=>{const r=t[n].length;return e=e.filter((e=>r>=e.minWords)),e}))}(a,e);const i=function(e,t,n,r,o){const a=[];for(let n=0;n<e.length;n+=1)for(let i=0;i<e[n].length;i+=1){const s=e[n][i],l=r.one.match([t[n]],s);if(l.ptrs.length>0&&(l.ptrs.forEach((e=>{e[0]=n;const t=Object.assign({},s,{pointer:e});void 0!==s.unTag&&(t.unTag=s.unTag),a.push(t)})),!0===o.matchOne))return[a[0]]}return a}(a,e,0,n,r);return i},bulkTagger:function(e,t,n){const{model:r,methods:o}=n,{getDoc:a,setTag:i,unTag:s}=o.one,l=o.two.looksPlural;if(0===e.length)return e;return(\"undefined\"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_TAGS&&console.log(`\\n\\n  \u001b[32m→ ${e.length} post-tagger:\u001b[0m`),e.map((e=>{if(!e.tag&&!e.chunk&&!e.unTag)return;const o=e.reason||e.match,u=a([e.pointer],t)[0];if(!0===e.safe){if(!1===function(e,t,n){const r=n.one.tagSet;if(!r.hasOwnProperty(t))return!0;const o=r[t].not||[];for(let t=0;t<e.length;t+=1){const n=e[t];for(let e=0;e<o.length;e+=1)if(!0===n.tags.has(o[e]))return!1}return!0}(u,e.tag,r))return;if(\"-\"===u[u.length-1].post)return}if(void 0!==e.tag){if(i(u,e.tag,n,e.safe,`[post] '${o}'`),\"Noun\"===e.tag&&l){const t=u[u.length-1];l(t.text)?i([t],\"Plural\",n,e.safe,\"quick-plural\"):i([t],\"Singular\",n,e.safe,\"quick-singular\")}!0===e.freeze&&u.forEach((e=>e.frozen=!0))}void 0!==e.unTag&&s(u,e.unTag,n,e.safe,o),e.chunk&&u.forEach((t=>t.chunk=e.chunk))}))}},Gn={lib:{buildNet:function(e){const t=this.methods().one.buildNet(e,this.world());return t.isNet=!0,t}},api:function(e){e.prototype.sweep=function(e,t={}){const{world:n,docs:r}=this,{methods:o}=n;let a=o.one.bulkMatch(r,e,this.methods,t);!1!==t.tagger&&o.one.bulkTagger(a,r,this.world),a=a.map((e=>{const t=e.pointer,n=r[t[0]][t[1]],o=t[2]-t[1];return n.index&&(e.pointer=[n.index[0],n.index[1],t[1]+o]),e}));const i=a.map((e=>e.pointer));return a=a.map((e=>(e.view=this.update([e.pointer]),delete e.regs,delete e.needs,delete e.pointer,delete e._expanded,e))),{view:this.update(i),found:a}}},methods:{one:En}};const On=/ /,Fn=function(e,t){\"Noun\"===t&&(e.chunk=t),\"Verb\"===t&&(e.chunk=t)},Vn=function(e,t,n,r){if(!0===e.tags.has(t))return null;if(\".\"===t)return null;!0===e.frozen&&(r=!0);const o=n[t];if(o){if(o.not&&o.not.length>0)for(let t=0;t<o.not.length;t+=1){if(!0===r&&e.tags.has(o.not[t]))return null;e.tags.delete(o.not[t])}if(o.parents&&o.parents.length>0)for(let t=0;t<o.parents.length;t+=1)e.tags.add(o.parents[t]),Fn(e,o.parents[t])}return e.tags.add(t),e.dirty=!0,Fn(e,t),!0},zn=function(e,t,n={},r,o){const a=n.model.one.tagSet||{};if(!t)return;const i=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};var s;if(i&&i.DEBUG_TAGS&&((e,t,n=\"\")=>{const r=e.map((e=>e.text||\"[\"+e.implicit+\"]\")).join(\" \");var o;\"string\"!=typeof t&&t.length>2&&(t=t.slice(0,2).join(\", #\")+\" +\"),t=\"string\"!=typeof t?t.join(\", #\"):t,console.log(` ${(o=r,\"\u001b[33m\u001b[3m\"+o+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${t.padEnd(22)}  ${(e=>\"\u001b[3m\"+e+\"\u001b[0m\")(n)}`)})(e,t,o),!0!=(s=t,\"[object Array]\"===Object.prototype.toString.call(s)))if(\"string\"==typeof t)if(t=t.trim(),On.test(t))!function(e,t,n,r){const o=t.split(On);e.forEach(((e,t)=>{let a=o[t];a&&(a=a.replace(/^#/,\"\"),Vn(e,a,n,r))}))}(e,t,a,r);else{t=t.replace(/^#/,\"\");for(let n=0;n<e.length;n+=1)Vn(e[n],t,a,r)}else console.warn(`compromise: Invalid tag '${t}'`);else t.forEach((t=>zn(e,t,n,r)))},Bn=function(e){return e.children=e.children||[],e._cache=e._cache||{},e.props=e.props||{},e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],e},Sn=/^ *(#|\\/\\/)/,$n=function(e){let t=e.trim().split(/->/),n=[];t.forEach((e=>{n=n.concat(function(e){if(!(e=e.trim()))return null;if(/^\\[/.test(e)&&/\\]$/.test(e)){let t=(e=(e=e.replace(/^\\[/,\"\")).replace(/\\]$/,\"\")).split(/,/);return t=t.map((e=>e.trim())).filter((e=>e)),t=t.map((e=>Bn({id:e}))),t}return[Bn({id:e})]}(e))})),n=n.filter((e=>e));let r=n[0];for(let e=1;e<n.length;e+=1)r.children.push(n[e]),r=n[e];return n[0]},Mn=(e,t)=>{let n=[],r=[e];for(;r.length>0;){let e=r.pop();n.push(e),e.children&&e.children.forEach((n=>{t&&t(e,n),r.push(n)}))}return n},Ln=e=>\"[object Array]\"===Object.prototype.toString.call(e),Kn=e=>(e=e||\"\").trim(),Jn=function(e=[]){return\"string\"==typeof e?function(e){let t=e.split(/\\r?\\n/),n=[];t.forEach((e=>{if(!e.trim()||Sn.test(e))return;let t=(e=>{const t=/^( {2}|\\t)/;let n=0;for(;t.test(e);)e=e.replace(t,\"\"),n+=1;return n})(e);n.push({indent:t,node:$n(e)})}));let r=function(e){let t={children:[]};return e.forEach(((n,r)=>{0===n.indent?t.children=t.children.concat(n.node):e[r-1]&&function(e,t){let n=e[t].indent;for(;t>=0;t-=1)if(e[t].indent<n)return e[t];return e[0]}(e,r).node.children.push(n.node)})),t}(n);return r=Bn(r),r}(e):Ln(e)?function(e){let t={};e.forEach((e=>{t[e.id]=e}));let n=Bn({});return e.forEach((e=>{if((e=Bn(e)).parent)if(t.hasOwnProperty(e.parent)){let n=t[e.parent];delete e.parent,n.children.push(e)}else console.warn(`[Grad] - missing node '${e.parent}'`);else n.children.push(e)})),n}(e):(Mn(t=e).forEach(Bn),t);var t},Wn=function(e,t){let n=\"-> \";t&&(n=(e=>\"\u001b[2m\"+e+\"\u001b[0m\")(\"→ \"));let r=\"\";return Mn(e).forEach(((e,o)=>{let a=e.id||\"\";if(t&&(a=(e=>\"\u001b[31m\"+e+\"\u001b[0m\")(a)),0===o&&!e.id)return;let i=e._cache.parents.length;r+=\"    \".repeat(i)+n+a+\"\\n\"})),r},qn=function(e){let t=Mn(e);t.forEach((e=>{delete(e=Object.assign({},e)).children}));let n=t[0];return n&&!n.id&&0===Object.keys(n.props).length&&t.shift(),t},Un={text:Wn,txt:Wn,array:qn,flat:qn},Rn=function(e,t){return\"nested\"===t||\"json\"===t?e:\"debug\"===t?(console.log(Wn(e,!0)),null):Un.hasOwnProperty(t)?Un[t](e):e},Qn=e=>{Mn(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],t._cache.parents=e._cache.parents.concat([e.id]))}))},Zn=/\\//;let _n=class g{constructor(e={}){Object.defineProperty(this,\"json\",{enumerable:!1,value:e,writable:!0})}get children(){return this.json.children}get id(){return this.json.id}get found(){return this.json.id||this.json.children.length>0}props(e={}){let t=this.json.props||{};return\"string\"==typeof e&&(t[e]=!0),this.json.props=Object.assign(t,e),this}get(e){if(e=Kn(e),!Zn.test(e)){let t=this.json.children.find((t=>t.id===e));return new g(t)}let t=((e,t)=>{let n=(e=>\"string\"!=typeof e?e:(e=e.replace(/^\\//,\"\")).split(/\\//))(t=t||\"\");for(let t=0;t<n.length;t+=1){let r=e.children.find((e=>e.id===n[t]));if(!r)return null;e=r}return e})(this.json,e)||Bn({});return new g(t)}add(e,t={}){if(Ln(e))return e.forEach((e=>this.add(Kn(e),t))),this;e=Kn(e);let n=Bn({id:e,props:t});return this.json.children.push(n),new g(n)}remove(e){return e=Kn(e),this.json.children=this.json.children.filter((t=>t.id!==e)),this}nodes(){return Mn(this.json).map((e=>(delete(e=Object.assign({},e)).children,e)))}cache(){return(e=>{let t=Mn(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],t._cache.parents=e._cache.parents.concat([e.id]))})),n={};t.forEach((e=>{e.id&&(n[e.id]=e)})),t.forEach((e=>{e._cache.parents.forEach((t=>{n.hasOwnProperty(t)&&n[t]._cache.children.push(e.id)}))})),e._cache.children=Object.keys(n)})(this.json),this}list(){return Mn(this.json)}fillDown(){var e;return e=this.json,Mn(e,((e,t)=>{t.props=((e,t)=>(Object.keys(t).forEach((n=>{if(t[n]instanceof Set){let r=e[n]||new Set;e[n]=new Set([...r,...t[n]])}else if((e=>e&&\"object\"==typeof e&&!Array.isArray(e))(t[n])){let r=e[n]||{};e[n]=Object.assign({},t[n],r)}else Ln(t[n])?e[n]=t[n].concat(e[n]||[]):void 0===e[n]&&(e[n]=t[n])})),e))(t.props,e.props)})),this}depth(){Qn(this.json);let e=Mn(this.json),t=e.length>1?1:0;return e.forEach((e=>{if(0===e._cache.parents.length)return;let n=e._cache.parents.length+1;n>t&&(t=n)})),t}out(e){return Qn(this.json),Rn(this.json,e)}debug(){return Qn(this.json),Rn(this.json,\"debug\"),this}};const Xn=function(e){let t=Jn(e);return new _n(t)};Xn.prototype.plugin=function(e){e(this)};const Yn={Noun:\"blue\",Verb:\"green\",Negative:\"green\",Date:\"red\",Value:\"red\",Adjective:\"magenta\",Preposition:\"cyan\",Conjunction:\"cyan\",Determiner:\"cyan\",Hyphenated:\"cyan\",Adverb:\"cyan\"},er=function(e){if(Yn.hasOwnProperty(e.id))return Yn[e.id];if(Yn.hasOwnProperty(e.is))return Yn[e.is];const t=e._cache.parents.find((e=>Yn[e]));return Yn[t]},tr=function(e){return e?\"string\"==typeof e?[e]:e:[]},nr=function(e,t){return e=function(e,t){return Object.keys(e).forEach((n=>{e[n].isA&&(e[n].is=e[n].isA),e[n].notA&&(e[n].not=e[n].notA),e[n].is&&\"string\"==typeof e[n].is&&(t.hasOwnProperty(e[n].is)||e.hasOwnProperty(e[n].is)||(e[e[n].is]={})),e[n].not&&\"string\"==typeof e[n].not&&!e.hasOwnProperty(e[n].not)&&(t.hasOwnProperty(e[n].not)||e.hasOwnProperty(e[n].not)||(e[e[n].not]={}))})),e}(e,t),Object.keys(e).forEach((t=>{e[t].children=tr(e[t].children),e[t].not=tr(e[t].not)})),Object.keys(e).forEach((t=>{(e[t].not||[]).forEach((n=>{e[n]&&e[n].not&&e[n].not.push(t)}))})),e};var rr={one:{setTag:zn,unTag:function(e,t,n){t=t.trim().replace(/^#/,\"\");for(let r=0;r<e.length;r+=1){const o=e[r];if(!0===o.frozen)continue;if(\"*\"===t){o.tags.clear();continue}const a=n[t];if(a&&a.children.length>0)for(let e=0;e<a.children.length;e+=1)o.tags.delete(a.children[e]);o.tags.delete(t)}},addTags:function(e,t){Object.keys(t).length>0&&(e=function(e){return Object.keys(e).forEach((t=>{e[t]=Object.assign({},e[t]),e[t].novel=!0})),e}(e)),e=nr(e,t);const n=function(e){const t=Object.keys(e).map((t=>{const n=e[t],r={not:new Set(n.not),also:n.also,is:n.is,novel:n.novel};return{id:t,parent:n.is,props:r,children:[]}}));return Xn(t).cache().fillDown().out(\"array\")}(Object.assign({},t,e)),r=function(e){const t={};return e.forEach((e=>{const{not:n,also:r,is:o,novel:a}=e.props;let i=e._cache.parents;r&&(i=i.concat(r)),t[e.id]={is:o,not:n,novel:a,also:r,parents:i,children:e._cache.children,color:er(e)}})),Object.keys(t).forEach((e=>{const n=new Set(t[e].not);t[e].not.forEach((e=>{t[e]&&t[e].children.forEach((e=>n.add(e)))})),t[e].not=Array.from(n)})),t}(n);return r},canBe:function(e,t,n){if(!n.hasOwnProperty(t))return!0;const r=n[t].not||[];for(let t=0;t<r.length;t+=1)if(e.tags.has(r[t]))return!1;return!0}}};const or=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},ar={tag:function(e,t=\"\",n){if(!this.found||!e)return this;const r=this.termList();if(0===r.length)return this;const{methods:o,verbose:a,world:i}=this;return!0===a&&console.log(\" +  \",e,t||\"\"),or(e)?e.forEach((e=>o.one.setTag(r,e,i,n,t))):o.one.setTag(r,e,i,n,t),this.uncache(),this},tagSafe:function(e,t=\"\"){return this.tag(e,t,!0)},unTag:function(e,t){if(!this.found||!e)return this;const n=this.termList();if(0===n.length)return this;const{methods:r,verbose:o,model:a}=this;!0===o&&console.log(\" -  \",e,t||\"\");const i=a.one.tagSet;return or(e)?e.forEach((e=>r.one.unTag(n,e,i))):r.one.unTag(n,e,i),this.uncache(),this},canBe:function(e){e=e.replace(/^#/,\"\");const t=this.model.one.tagSet,n=this.methods.one.canBe,r=[];this.document.forEach(((o,a)=>{o.forEach(((o,i)=>{n(o,e,t)||r.push([a,i,i+1])}))}));const o=this.update(r);return this.difference(o)}};var ir={addTags:function(e){const{model:t,methods:n}=this.world(),r=t.one.tagSet,o=(0,n.one.addTags)(e,r);return t.one.tagSet=o,this}};const sr=new Set([\"Auxiliary\",\"Possessive\"]);var lr={model:{one:{tagSet:{}}},compute:{tagRank:function(e){const{document:t,world:n}=e,r=n.model.one.tagSet;t.forEach((e=>{e.forEach((e=>{const t=Array.from(e.tags);e.tagRank=function(e,t){return e=e.sort(((e,n)=>{if(sr.has(e)||!t.hasOwnProperty(n))return 1;if(sr.has(n)||!t.hasOwnProperty(e))return-1;let r=t[e].children||[];const o=r.length;return r=t[n].children||[],o-r.length})),e}(t,r)}))}))}},methods:rr,api:function(e){Object.assign(e.prototype,ar)},lib:ir};const ur=/([.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s)/g,cr=/^[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s$/,hr=/((?:\\r?\\n|\\r)+)/,dr=/[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i,gr=/\\S/,mr=function(e){return Boolean(e.match(/\\n$/))},pr={'\"':'\"',\"＂\":\"＂\",\"“\":\"”\",\"‟\":\"”\",\"„\":\"”\",\"⹂\":\"”\",\"‚\":\"’\",\"«\":\"»\",\"‹\":\"›\",\"‵\":\"′\",\"‶\":\"″\",\"‷\":\"‴\",\"〝\":\"〞\",\"〟\":\"〞\"},fr=RegExp(\"[\"+Object.keys(pr).join(\"\")+\"]\",\"g\"),br=RegExp(\"[\"+Object.values(pr).join(\"\")+\"]\",\"g\"),vr=function(e){if(!e)return!1;const t=e.match(br);return null!==t&&1===t.length},yr=/\\(/g,wr=/\\)/g,kr=/\\S/,Pr=/^\\s+/,Ar=function(e,t){const n=e.split(/[-–—]/);if(n.length<=1)return!1;const{prefixes:r,suffixes:o}=t.one;if(1===n[0].length&&/[a-z]/i.test(n[0]))return!1;if(r.hasOwnProperty(n[0]))return!1;if(n[1]=n[1].trim().replace(/[.?!]$/,\"\"),o.hasOwnProperty(n[1]))return!1;if(!0===/^([a-z\\u00C0-\\u00FF`\"'/]+)[-–—]([a-z0-9\\u00C0-\\u00FF].*)/i.test(e))return!0;return!0===/^[('\"]?([0-9]{1,4})[-–—]([a-z\\u00C0-\\u00FF`\"'/-]+[)'\"]?$)/i.test(e)},Cr=function(e){const t=[],n=e.split(/[-–—]/);let r=\"-\";const o=e.match(/[-–—]/);o&&o[0]&&(r=o);for(let e=0;e<n.length;e++)e===n.length-1?t.push(n[e]):t.push(n[e]+r);return t},Nr=/\\p{L} ?\\/ ?\\p{L}+$/u,jr=/\\S/,xr=/^[!?.]+$/,Ir=/(\\S+)/;let Tr=[\".\",\"?\",\"!\",\":\",\";\",\"-\",\"–\",\"—\",\"--\",\"...\",\"(\",\")\",\"[\",\"]\",'\"',\"'\",\"`\",\"«\",\"»\",\"*\",\"•\"];Tr=Tr.reduce(((e,t)=>(e[t]=!0,e)),{});const Dr=/\\p{Letter}/u,Hr=/[\\p{Number}\\p{Currency_Symbol}]/u,Er=/^[a-z]\\.([a-z]\\.)+/i,Gr=/[sn]['’]$/,Or=/([A-Z]\\.)+[A-Z]?,?$/,Fr=/^[A-Z]\\.,?$/,Vr=/[A-Z]{2,}('s|,)?$/,zr=/([a-z]\\.)+[a-z]\\.?$/,Br=function(e){return function(e){return!0===Or.test(e)||!0===zr.test(e)||!0===Fr.test(e)||!0===Vr.test(e)}(e)&&(e=e.replace(/\\./g,\"\")),e},Sr=function(e,t){const n=t.methods.one.killUnicode;let r=e.text||\"\";r=function(e){const t=e=(e=(e=e||\"\").toLowerCase()).trim();return e=(e=(e=e.replace(/[,;.!?]+$/,\"\")).replace(/\\u2026/g,\"...\")).replace(/\\u2013/g,\"-\"),!1===/^[:;]/.test(e)&&(e=(e=(e=e.replace(/\\.{3,}$/g,\"\")).replace(/[\",.!:;?)]+$/g,\"\")).replace(/^['\"(]+/g,\"\")),\"\"===(e=(e=e.replace(/[\\u200B-\\u200D\\uFEFF]/g,\"\")).trim())&&(e=t),e.replace(/([0-9]),([0-9])/g,\"$1$2\")}(r),r=n(r,t),r=Br(r),e.normal=r},$r=/[ .][A-Z]\\.? *$/i,Mr=/(?:\\u2026|\\.{2,}) *$/,Lr=/\\p{L}/u,Kr=/\\. *$/,Jr=/^[A-Z]\\. $/;var Wr={one:{killUnicode:function(e,t){const n=t.model.one.unicode||{},r=(e=e||\"\").split(\"\");return r.forEach(((e,t)=>{n[e]&&(r[t]=n[e])})),r.join(\"\")},tokenize:{splitSentences:function(e,t){if(e=e||\"\",!(e=String(e))||\"string\"!=typeof e||!1===kr.test(e))return[];const n=function(e){const t=[],n=e.split(hr);for(let e=0;e<n.length;e++){const r=n[e].split(ur);for(let e=0;e<r.length;e++)r[e+1]&&!0===cr.test(r[e+1])&&(r[e]+=r[e+1],r[e+1]=\"\"),\"\"!==r[e]&&t.push(r[e])}return t}(e=e.replace(\" \",\" \"));let r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(void 0!==r&&\"\"!==r){if(!1===gr.test(r)||!1===dr.test(r)){if(t[t.length-1]){t[t.length-1]+=r;continue}if(e[n+1]){e[n+1]=r+e[n+1];continue}}t.push(r)}}return t}(n);if(r=function(e,t){const n=t.methods.one.tokenize.isSentence,r=t.model.one.abbreviations||new Set,o=[];for(let t=0;t<e.length;t++){const a=e[t];!e[t+1]||n(a,r)||mr(a)?a&&a.length>0&&(o.push(a),e[t]=\"\"):e[t+1]=a+(e[t+1]||\"\")}return o}(r,t),r=function(e){const t=[];for(let n=0;n<e.length;n+=1){const r=e[n].match(fr);if(null!==r&&1===r.length){if(vr(e[n+1])&&e[n+1].length<280){e[n]+=e[n+1],t.push(e[n]),e[n+1]=\"\",n+=1;continue}if(vr(e[n+2])){const r=e[n+1]+e[n+2];if(r.length<280){e[n]+=r,t.push(e[n]),e[n+1]=\"\",e[n+2]=\"\",n+=2;continue}}}t.push(e[n])}return t}(r),r=function(e){const t=[];for(let n=0;n<e.length;n+=1){const r=e[n].match(yr);null!==r&&1===r.length&&e[n+1]&&e[n+1].length<250&&null!==e[n+1].match(wr)&&1===r.length&&!yr.test(e[n+1])?(e[n]+=e[n+1],t.push(e[n]),e[n+1]=\"\",n+=1):t.push(e[n])}return t}(r),0===r.length)return[e];for(let e=1;e<r.length;e+=1){const t=r[e].match(Pr);null!==t&&(r[e-1]+=t[0],r[e]=r[e].replace(Pr,\"\"))}return r},isSentence:function(e,t){if(!1===Lr.test(e))return!1;if(!0===$r.test(e))return!1;if(3===e.length&&Jr.test(e))return!1;if(!0===Mr.test(e))return!1;const n=e.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/,\"\").split(\" \"),r=n[n.length-1].toLowerCase();return!0!==t.hasOwnProperty(r)||!0!==Kr.test(e)},splitTerms:function(e,t){let n=[],r=[];if(\"number\"==typeof(e=e||\"\")&&(e=String(e)),function(e){return\"[object Array]\"===Object.prototype.toString.call(e)}(e))return e;const o=e.split(Ir);for(let e=0;e<o.length;e++)!0!==Ar(o[e],t)?r.push(o[e]):r=r.concat(Cr(o[e]));let a=\"\";for(let e=0;e<r.length;e++){const t=r[e];!0===jr.test(t)&&!1===Tr.hasOwnProperty(t)&&!1===xr.test(t)?(n.length>0?(n[n.length-1]+=a,n.push(t)):n.push(a+t),a=\"\"):a+=t}return a&&(0===n.length&&(n[0]=\"\"),n[n.length-1]+=a),n=function(e){for(let t=1;t<e.length-1;t++)Nr.test(e[t])&&(e[t-1]+=e[t]+e[t+1],e[t]=null,e[t+1]=null);return e}(n),n=function(e){const t=/^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?[-–—] ?$/,n=/^[0-9]{1,4}([a-z]{1,2})? ?$/;for(let r=0;r<e.length-1;r+=1)e[r+1]&&t.test(e[r])&&n.test(e[r+1])&&(e[r]=e[r]+e[r+1],e[r+1]=null);return e}(n),n=n.filter((e=>e)),n},splitWhitespace:(e,t)=>{const{str:n,pre:r,post:o}=function(e,t){const{prePunctuation:n,postPunctuation:r,emoticons:o}=t.one;let a=e,i=\"\",s=\"\";const l=Array.from(e);if(o.hasOwnProperty(e.trim()))return{str:e.trim(),pre:i,post:\" \"};let u=l.length;for(let e=0;e<u;e+=1){const e=l[0];if(!0!==n[e]){if((\"+\"===e||\"-\"===e)&&Hr.test(l[1]))break;if(\"'\"===e&&3===e.length&&Hr.test(l[1]))break;if(Dr.test(e)||Hr.test(e))break;i+=l.shift()}}u=l.length;for(let e=0;e<u;e+=1){const e=l[l.length-1];if(!0!==r[e]){if(Dr.test(e)||Hr.test(e))break;\".\"===e&&!0===Er.test(a)||\"'\"===e&&!0===Gr.test(a)||(s=l.pop()+s)}}return\"\"===(e=l.join(\"\"))&&(a=a.replace(/ *$/,(e=>(s=e||\"\",\"\"))),e=a,i=\"\"),{str:e,pre:i,post:s}}(e,t);return{text:n,pre:r,post:o,tags:new Set}},fromString:function(e,t){const{methods:n,model:r}=t,{splitSentences:o,splitTerms:a,splitWhitespace:i}=n.one.tokenize;return e=o(e=e||\"\",t).map((e=>{let n=a(e,r);return n=n.map((e=>i(e,r))),n.forEach((e=>{Sr(e,t)})),n})),e}}}};const qr={},Ur={};[[[\"approx\",\"apt\",\"bc\",\"cyn\",\"eg\",\"esp\",\"est\",\"etc\",\"ex\",\"exp\",\"prob\",\"pron\",\"gal\",\"min\",\"pseud\",\"fig\",\"jd\",\"lat\",\"lng\",\"vol\",\"fm\",\"def\",\"misc\",\"plz\",\"ea\",\"ps\",\"sec\",\"pt\",\"pref\",\"pl\",\"pp\",\"qt\",\"fr\",\"sq\",\"nee\",\"ss\",\"tel\",\"temp\",\"vet\",\"ver\",\"fem\",\"masc\",\"eng\",\"adj\",\"vb\",\"rb\",\"inf\",\"situ\",\"vivo\",\"vitro\",\"wr\"]],[[\"dl\",\"ml\",\"gal\",\"qt\",\"pt\",\"tbl\",\"tsp\",\"tbsp\",\"km\",\"dm\",\"cm\",\"mm\",\"mi\",\"td\",\"hr\",\"hrs\",\"kg\",\"hg\",\"dg\",\"cg\",\"mg\",\"µg\",\"lb\",\"oz\",\"sq ft\",\"hz\",\"mps\",\"mph\",\"kmph\",\"kb\",\"mb\",\"tb\",\"lx\",\"lm\",\"fl oz\",\"yb\"],\"Unit\"],[[\"ad\",\"al\",\"arc\",\"ba\",\"bl\",\"ca\",\"cca\",\"col\",\"corp\",\"ft\",\"fy\",\"ie\",\"lit\",\"ma\",\"md\",\"pd\",\"tce\"],\"Noun\"],[[\"adj\",\"adm\",\"adv\",\"asst\",\"atty\",\"bldg\",\"brig\",\"capt\",\"cmdr\",\"comdr\",\"cpl\",\"det\",\"dr\",\"esq\",\"gen\",\"gov\",\"hon\",\"jr\",\"llb\",\"lt\",\"maj\",\"messrs\",\"mlle\",\"mme\",\"mr\",\"mrs\",\"ms\",\"mstr\",\"phd\",\"prof\",\"pvt\",\"rep\",\"reps\",\"res\",\"rev\",\"sen\",\"sens\",\"sfc\",\"sgt\",\"sir\",\"sr\",\"supt\",\"surg\"],\"Honorific\"],[[\"jan\",\"feb\",\"mar\",\"apr\",\"jun\",\"jul\",\"aug\",\"sep\",\"sept\",\"oct\",\"nov\",\"dec\"],\"Month\"],[[\"dept\",\"univ\",\"assn\",\"bros\",\"inc\",\"ltd\",\"co\"],\"Organization\"],[[\"rd\",\"st\",\"dist\",\"mt\",\"ave\",\"blvd\",\"cl\",\"cres\",\"hwy\",\"ariz\",\"cal\",\"calif\",\"colo\",\"conn\",\"fla\",\"fl\",\"ga\",\"ida\",\"ia\",\"kan\",\"kans\",\"minn\",\"neb\",\"nebr\",\"okla\",\"penna\",\"penn\",\"pa\",\"dak\",\"tenn\",\"tex\",\"ut\",\"vt\",\"va\",\"wis\",\"wisc\",\"wy\",\"wyo\",\"usafa\",\"alta\",\"ont\",\"que\",\"sask\"],\"Place\"]].forEach((e=>{e[0].forEach((t=>{qr[t]=!0,Ur[t]=\"Abbreviation\",void 0!==e[1]&&(Ur[t]=[Ur[t],e[1]])}))}));var Rr=[\"anti\",\"bi\",\"co\",\"contra\",\"de\",\"extra\",\"infra\",\"inter\",\"intra\",\"macro\",\"micro\",\"mis\",\"mono\",\"multi\",\"peri\",\"pre\",\"pro\",\"proto\",\"pseudo\",\"re\",\"sub\",\"supra\",\"trans\",\"tri\",\"un\",\"out\",\"ex\"].reduce(((e,t)=>(e[t]=!0,e)),{});const Qr={\"!\":\"¡\",\"?\":\"¿Ɂ\",'\"':'“”\"❝❞',\"'\":\"‘‛❛❜’\",\"-\":\"—–\",a:\"ªÀÁÂÃÄÅàáâãäåĀāĂăĄąǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАаѦѧӐӑӒӓƛæ\",b:\"ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ\",c:\"¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼϲϹϽϾСсєҀҁҪҫ\",d:\"ÐĎďĐđƉƊȡƋƌ\",e:\"ÈÉÊËèéêëĒēĔĕĖėĘęĚěƐȄȅȆȇȨȩɆɇΈΕΞΣέεξϵЀЁЕеѐёҼҽҾҿӖӗễ\",f:\"ƑƒϜϝӺӻҒғſ\",g:\"ĜĝĞğĠġĢģƓǤǥǦǧǴǵ\",h:\"ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ\",I:\"ÌÍÎÏ\",i:\"ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇіїi̇\",j:\"ĴĵǰȷɈɉϳЈј\",k:\"ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ\",l:\"ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ\",m:\"ΜϺϻМмӍӎ\",n:\"ÑñŃńŅņŇňŉŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ\",o:\"ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϴОФоѲѳӦӧӨөӪӫ\",p:\"ƤΡρϷϸϼРрҎҏÞ\",q:\"Ɋɋ\",r:\"ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ\",s:\"ŚśŜŝŞşŠšƧƨȘșȿЅѕ\",t:\"ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт\",u:\"ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰυϋύ\",v:\"νѴѵѶѷ\",w:\"ŴŵƜωώϖϢϣШЩшщѡѿ\",x:\"×ΧχϗϰХхҲҳӼӽӾӿ\",y:\"ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ\",z:\"ŹźŻżŽžƵƶȤȥɀΖ\"},Zr={};Object.keys(Qr).forEach((function(e){Qr[e].split(\"\").forEach((function(t){Zr[t]=e}))}));const _r=/\\//,Xr=/[a-z]\\.[a-z]/i,Yr=/[0-9]/,eo=function(e,t){const n=e.normal||e.text||e.machine,r=t.model.one.aliases;if(r.hasOwnProperty(n)&&(e.alias=e.alias||[],e.alias.push(r[n])),_r.test(n)&&!Xr.test(n)&&!Yr.test(n)){const t=n.split(_r);t.length<=3&&t.forEach((t=>{\"\"!==(t=t.trim())&&(e.alias=e.alias||[],e.alias.push(t))}))}return e},to=/^\\p{Letter}+-\\p{Letter}+$/u,no=function(e){let t=e.implicit||e.normal||e.text;t=t.replace(/['’]s$/,\"\"),t=t.replace(/s['’]$/,\"s\"),t=t.replace(/([aeiou][ktrp])in'$/,\"$1ing\"),to.test(t)&&(t=t.replace(/-/g,\"\")),t=t.replace(/^[#@]/,\"\"),t!==e.normal&&(e.machine=t)},ro=function(e,t){const n=e.docs;for(let r=0;r<n.length;r+=1)for(let o=0;o<n[r].length;o+=1)t(n[r][o],e.world)},oo={alias:e=>ro(e,eo),machine:e=>ro(e,no),normal:e=>ro(e,Sr),freq:function(e){const t=e.docs,n={};for(let e=0;e<t.length;e+=1)for(let r=0;r<t[e].length;r+=1){const o=t[e][r],a=o.machine||o.normal;n[a]=n[a]||0,n[a]+=1}for(let e=0;e<t.length;e+=1)for(let r=0;r<t[e].length;r+=1){const o=t[e][r],a=o.machine||o.normal;o.freq=n[a]}},offset:function(e){let t=0,n=0;const r=e.document;for(let e=0;e<r.length;e+=1)for(let o=0;o<r[e].length;o+=1){const a=r[e][o];a.offset={index:n,start:t+a.pre.length,length:a.text.length},t+=a.pre.length+a.text.length+a.post.length,n+=1}},index:function(e){const t=e.document;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1)t[e][n].index=[e,n]},wordCount:function(e){let t=0;const n=e.docs;for(let e=0;e<n.length;e+=1)for(let r=0;r<n[e].length;r+=1)\"\"!==n[e][r].normal&&(t+=1,n[e][r].wordCount=t)}};var ao={compute:oo,methods:Wr,model:{one:{aliases:{\"&\":\"and\",\"@\":\"at\",\"%\":\"percent\",plz:\"please\",bein:\"being\"},abbreviations:qr,prefixes:Rr,suffixes:{like:!0,ish:!0,less:!0,able:!0,elect:!0,type:!0,designate:!0},prePunctuation:{\"#\":!0,\"@\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},postPunctuation:{\"%\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},lexicon:Ur,unicode:Zr,emoticons:{\"<3\":!0,\"</3\":!0,\"<\\\\3\":!0,\":^P\":!0,\":^p\":!0,\":^O\":!0,\":^3\":!0}}},hooks:[\"alias\",\"machine\",\"index\",\"id\"]};var io={typeahead:function(e){const t=e.model.one.typeahead,n=e.docs;if(0===n.length||0===Object.keys(t).length)return;const r=n[n.length-1]||[],o=r[r.length-1];if(!o.post&&t.hasOwnProperty(o.normal)){const n=t[o.normal];o.implicit=n,o.machine=n,o.typeahead=!0,e.compute.preTagger&&e.last().unTag(\"*\").compute([\"lexicon\",\"preTagger\"])}}};const so=function(){const e=this.docs;if(0===e.length)return this;const t=e[e.length-1]||[],n=t[t.length-1];return!0===n.typeahead&&n.machine&&(n.text=n.machine,n.normal=n.machine),this},lo={safe:!0,min:3};var uo={typeahead:function(e=[],t={}){const n=this.model();var r;t=Object.assign({},lo,t),r=e,\"[object Object]\"===Object.prototype.toString.call(r)&&(Object.assign(n.one.lexicon,e),e=Object.keys(e));const o=function(e,t,n){let r={};const o=[],a=n.prefixes||{};return e.forEach((e=>{let i=(e=e.toLowerCase().trim()).length;t.max&&i>t.max&&(i=t.max);for(let s=t.min;s<i;s+=1){const i=e.substring(0,s);t.safe&&n.model.one.lexicon.hasOwnProperty(i)||(!0!==a.hasOwnProperty(i)&&!0!==r.hasOwnProperty(i)?r[i]=e:o.push(i))}})),r=Object.assign({},a,r),o.forEach((e=>{delete r[e]})),r}(e,t,this.world());return Object.keys(o).forEach((e=>{n.one.typeahead.hasOwnProperty(e)?delete n.one.typeahead[e]:n.one.typeahead[e]=o[e]})),this}};var co={model:{one:{typeahead:{}}},api:function(e){e.prototype.autoFill=so},lib:uo,compute:io,hooks:[\"typeahead\"]};h.extend(J),h.extend(yn),h.extend(Jt),h.extend(Tn),h.extend(lr),h.plugin(ye),h.extend(ao),h.extend(Ce),h.plugin(p),h.extend(Be),h.extend(co),h.extend(Ee),h.extend(Gn);var ho={addendum:\"addenda\",corpus:\"corpora\",criterion:\"criteria\",curriculum:\"curricula\",genus:\"genera\",memorandum:\"memoranda\",opus:\"opera\",ovum:\"ova\",phenomenon:\"phenomena\",referendum:\"referenda\",alga:\"algae\",alumna:\"alumnae\",antenna:\"antennae\",formula:\"formulae\",larva:\"larvae\",nebula:\"nebulae\",vertebra:\"vertebrae\",analysis:\"analyses\",axis:\"axes\",diagnosis:\"diagnoses\",parenthesis:\"parentheses\",prognosis:\"prognoses\",synopsis:\"synopses\",thesis:\"theses\",neurosis:\"neuroses\",appendix:\"appendices\",index:\"indices\",matrix:\"matrices\",ox:\"oxen\",sex:\"sexes\",alumnus:\"alumni\",bacillus:\"bacilli\",cactus:\"cacti\",fungus:\"fungi\",hippopotamus:\"hippopotami\",libretto:\"libretti\",modulus:\"moduli\",nucleus:\"nuclei\",octopus:\"octopi\",radius:\"radii\",stimulus:\"stimuli\",syllabus:\"syllabi\",cookie:\"cookies\",calorie:\"calories\",auntie:\"aunties\",movie:\"movies\",pie:\"pies\",rookie:\"rookies\",tie:\"ties\",zombie:\"zombies\",leaf:\"leaves\",loaf:\"loaves\",thief:\"thieves\",foot:\"feet\",goose:\"geese\",tooth:\"teeth\",beau:\"beaux\",chateau:\"chateaux\",tableau:\"tableaux\",bus:\"buses\",gas:\"gases\",circus:\"circuses\",crisis:\"crises\",virus:\"viruses\",database:\"databases\",excuse:\"excuses\",abuse:\"abuses\",avocado:\"avocados\",barracks:\"barracks\",child:\"children\",clothes:\"clothes\",echo:\"echoes\",embargo:\"embargoes\",epoch:\"epochs\",deer:\"deer\",halo:\"halos\",man:\"men\",woman:\"women\",mosquito:\"mosquitoes\",mouse:\"mice\",person:\"people\",quiz:\"quizzes\",rodeo:\"rodeos\",shoe:\"shoes\",sombrero:\"sombreros\",stomach:\"stomachs\",tornado:\"tornados\",tuxedo:\"tuxedos\",volcano:\"volcanoes\"},go={Comparative:\"true¦bett1f0;arth0ew0in0;er\",Superlative:\"true¦earlier\",PresentTense:\"true¦bests,sounds\",Condition:\"true¦lest,unless\",PastTense:\"true¦began,came,d4had,kneel3l2m0sa4we1;ea0sg2;nt;eap0i0;ed;id\",Participle:\"true¦0:09;a06b01cZdXeat0fSgQhPoJprov0rHs7t6u4w1;ak0ithdra02o2r1;i02uY;k0v0;nd1pr04;ergoJoJ;ak0hHo3;e9h7lain,o6p5t4un3w1;o1um;rn;g,k;ol0reS;iQok0;ught,wn;ak0o1runk;ne,wn;en,wn;ewriNi1uJ;dd0s0;ut3ver1;do4se0t1;ak0h2;do2g1;roG;ne;ast0i7;iv0o1;ne,tt0;all0loBor1;bi3g2s1;ak0e0;iv0o9;dd0;ove,r1;a5eamt,iv0;hos0lu1;ng;e4i3lo2ui1;lt;wn;tt0;at0en,gun;r2w1;ak0ok0;is0;en\",Gerund:\"true¦accord0be0doin,go0result0stain0;ing\",Expression:\"true¦a0Yb0Uc0Sd0Oe0Mfarew0Lg0FhZjeez,lWmVnToOpLsJtIuFvEw7y0;a5e3i1u0;ck,p;k04p0;ee,pee;a0p,s;!h;!a,h,y;a5h2o1t0;af,f;rd up,w;atsoever,e1o0;a,ops;e,w;hoo,t;ery w06oi0L;gh,h0;! 0h,m;huh,oh;here nPsk,ut tut;h0ic;eesh,hh,it,oo;ff,h1l0ow,sst;ease,s,z;ew,ooey;h1i,mg,o0uch,w,y;h,o,ps;! 0h;hTmy go0wT;d,sh;a7evertheless,o0;!pe;eh,mm;ah,eh,m1ol0;!s;ao,fao;aCeBi9o2u0;h,mph,rra0zzC;h,y;l1o0;r6y9;la,y0;! 0;c1moCsmok0;es;ow;!p hip hoor0;ay;ck,e,llo,y;ha1i,lleluj0;ah;!ha;ah,ee4o1r0;eat scott,r;l1od0sh; grief,bye;ly;! whiz;ell;e0h,t cetera,ureka,ww,xcuse me;k,p;'oh,a0rat,uh;m0ng;mit,n0;!it;mon,o0;ngratulations,wabunga;a2oo1r0tw,ye;avo,r;!ya;h,m; 1h0ka,las,men,rgh,ye;!a,em,h,oy;la\",Negative:\"true¦n0;ever,o0;n,t\",QuestionWord:\"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",Reflexive:\"true¦h4it5my5o1the0your2;ir1m1;ne3ur0;sel0;f,ves;er0im0;self\",Plural:\"true¦dick0gre0ones,records;ens\",\"Unit|Noun\":\"true¦cEfDgChBinchAk9lb,m6newt5oz,p4qt,t1y0;ardEd;able1b0ea1sp;!l,sp;spo1;a,t,x;on9;!b,g,i1l,m,p0;h,s;!les;!b,elvin,g,m;!es;g,z;al,b;eet,oot,t;m,up0;!s\",Value:\"true¦a few\",Imperative:\"true¦bewa0come he0;re\",\"Plural|Verb\":\"true¦leaves\",Demonym:\"true¦0:15;1:12;a0Vb0Oc0Dd0Ce08f07g04h02iYjVkTlPmLnIomHpEqatari,rCs7t5u4v3welAz2;am0Gimbabwe0;enezuel0ietnam0I;gAkrai1;aiwTex0hai,rinida0Ju2;ni0Prkmen;a5cotti4e3ingapoOlovak,oma0Spaniard,udRw2y0W;ede,iss;negal0Cr09;sh;mo0uT;o5us0Jw2;and0;a2eru0Fhilippi0Nortugu07uerto r0S;kist3lesti1na2raguay0;ma1;ani;ami00i2orweP;caragu0geri2;an,en;a3ex0Lo2;ngo0Drocc0;cedo1la2;gasy,y07;a4eb9i2;b2thua1;e0Cy0;o,t01;azakh,eny0o2uwaiI;re0;a2orda1;ma0Ap2;anO;celandic,nd4r2sraeli,ta01vo05;a2iB;ni0qi;i0oneU;aiAin2ondur0unO;di;amEe2hanai0reek,uatemal0;or2rm0;gi0;ilipino,ren8;cuadoVgyp4mira3ngli2sto1thiopi0urope0;shm0;ti;ti0;aPominUut3;a9h6o4roat3ub0ze2;ch;!i0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el6o4r3ul2;gaE;azi9it;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;genti2me1;ne;ba1ge2;ri0;ni0;gh0r2;ic0;an\",Organization:\"true¦0:4Q;a3Tb3Bc2Od2He2Df27g1Zh1Ti1Pj1Nk1Ll1Gm12n0Po0Mp0Cqu0Br02sTtHuCv9w3xiaomi,y1;amaha,m1Bou1w1B;gov,tu3C;a4e2iki1orld trade organizati33;leaRped0O;lls fargo,st1;fie2Hinghou2R;l1rner br3U;gree3Jl street journ2Im1E;an halOeriz2Xisa,o1;dafo2Yl1;kswagMvo;b4kip,n2ps,s1;a tod3Aps;es3Mi1;lev3Fted natio3C;er,s; mobi32aco beRd bOe9gi frida3Lh3im horto3Amz,o1witt3D;shi49y1;ota,s r 05;e 1in lizzy;b3carpen3Jdaily ma3Dguess w2holli0s1w2;mashing pumpki35uprem0;ho;ea1lack eyed pe3Xyr0Q;ch bo3Dtl0;l2n3Qs1xas instrumen1U;co,la m1F;efoni0Kus;a8cientology,e5ieme2Ymirnoff,np,o3pice gir6quare0Ata1ubaru;rbuc1to34;ks;ny,undgard1;en;a2x pisto1;ls;g1Wrs;few2Minsbur31lesfor03msu2E;adiohead,b8e4o1yana3C;man empi1Xyal 1;b1dutch she4;ank;a3d 1max,vl20;bu1c2Ahot chili peppe2Ylobst2N;ll;ders dige1Ll madrid;c,s;ant3Aizn2Q;a8bs,e5fiz2Ihilip4i3r1;emier 1udenti1D;leagTo2K;nk floyd,zza hut; morrBs;psi2tro1uge0E;br33chi0Tn33;!co;lant2Un1yp16; 2ason27da2P;ld navy,pec,range juli2xf1;am;us;aAb9e6fl,h5i4o1sa,vid3wa;k2tre dame,vart1;is;ia;ke,ntendo,ss0QvZ;l,s;c,st1Otflix,w1; 1sweek;kids on the block,york0D;a,c;nd22s2t1;ional aca2Po,we0U;a,c02d0S;aDcdonalCe9i6lb,o3tv,y1;spa1;ce;b1Tnsanto,ody blu0t1;ley cr1or0T;ue;c2t1;as,subisO;helin,rosoft;dica2rcedes benz,talli1;ca;id,re;ds;cs milk,tt19z24;a3e1g,ittle caesa1P; ore09novo,x1;is,mark,us; 1bour party;pres0Dz boy;atv,fc,kk,lm,m1od1O;art;iffy lu0Roy divisi0Jpmorgan1sa;! cha09;bm,hop,k3n1tv;g,te1;l,rpol;ea;a5ewlett pack1Vi3o1sbc,yundai;me dep1n1P;ot;tac1zbollah;hi;lliburt08sbro;eneral 6hq,ithub,l5mb,o2reen d0Ou1;cci,ns n ros0;ldman sachs,o1;dye1g0H;ar;axo smith kli04encoW;electr0Nm1;oto0Z;a5bi,c barcelo4da,edex,i2leetwood m03o1rito l0G;rd,xcY;at,fa,nancial1restoZ; tim0;na;cebook,nnie mae;b0Asa,u3xxon1; m1m1;ob0J;!rosceptics;aiml0De5isney,o4u1;nkin donu2po0Zran dur1;an;ts;j,w jon0;a,f lepp12ll,peche mode,r spieg02stiny's chi1;ld;aJbc,hFiDloudflaCnn,o3r1;aigsli5eedence clearwater reviv1ossra09;al;c7inba6l4m1o0Est09;ca2p1;aq;st;dplSg1;ate;se;a c1o chanQ;ola;re;a,sco1tigroup;! systems;ev2i1;ck fil a,na daily;r1y;on;d2pital o1rls jr;ne;bury,ill1;ac;aEbc,eBf9l5mw,ni,o1p,rexiteeU;ei3mbardiIston 1;glo1pizza;be;ng;o2ue c1;roV;ckbuster video,omingda1;le; g1g1;oodriL;cht2e ge0rkshire hathaw1;ay;el;cardi,idu,nana republ3s1xt5y5;f,kin robbi1;ns;ic;bYcTdidSerosmith,iRlKmEnheuser busDol,ppleAr6s4u3v2y1;er;is,on;di,todesk;hland o1sociated E;il;b3g2m1;co;os;ys; compu1be0;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 5catel2ta1;ir;! lu1;ce1;nt;jazeera,qae1;da;g,rbnb;as;/dc,a3er,tivision1;! blizz1;ard;demy of scienc0;es;ba\",Possessive:\"true¦its,my,our0thy;!s\",\"Noun|Verb\":\"true¦0:9W;1:AA;2:96;3:A3;4:9R;5:A2;6:9K;7:8N;8:7L;9:A8;A:93;B:8D;C:8X;a9Ob8Qc7Id6Re6Gf5Sg5Hh55i4Xj4Uk4Rl4Em40n3Vo3Sp2Squ2Rr21s0Jt02u00vVwGyFzD;ip,oD;ne,om;awn,e6Fie68;aOeMhJiHoErD;ap,e9Oink2;nd0rDuC;kDry,sh5Hth;!shop;ck,nDpe,re,sh;!d,g;e86iD;p,sD;k,p0t2;aDed,lco8W;r,th0;it,lk,rEsDt4ve,x;h,te;!ehou1ra9;aGen5FiFoD;iDmAte,w;ce,d;be,ew,sA;cuum,l4B;pDr7;da5gra6Elo6A;aReQhrPiOoMrGuEwiDy5Z;n,st;nDrn;e,n7O;aGeFiEoDu6;t,ub2;bu5ck4Jgg0m,p;at,k,nd;ck,de,in,nsDp,v7J;f0i8R;ll,ne,p,r4Yss,t94uD;ch,r;ck,de,e,le,me,p,re;e5Wow,u6;ar,e,ll,mp0st,xt;g,lDng2rg7Ps5x;k,ly;a0Sc0Ne0Kh0Fi0Dk0Cl0Am08n06o05pXquaBtKuFwD;ea88iD;ng,pe,t4;bGit,m,ppErD;fa3ge,pri1v2U;lDo6S;e6Py;!je8;aMeLiKoHrEuDy2;dy,ff,mb2;a85eEiDo5Pugg2;ke,ng;am,ss,t4;ckEop,p,rD;e,m;ing,pi2;ck,nk,t4;er,m,p;ck,ff,ge,in,ke,lEmp,nd,p2rDte,y;!e,t;k,l;aJeIiHlGoFrDur,y;ay,e56inDu3;g,k2;ns8Bt;a5Qit;ll,n,r87te;ed,ll;m,n,rk;b,uC;aDee1Tow;ke,p;a5Je4FiDo53;le,rk;eep,iDou4;ce,p,t;ateboa7Ii;de,gnDl2Vnk,p,ze;!al;aGeFiEoDuff2;ck,p,re,w;ft,p,v0;d,i3Ylt0;ck,de,pe,re,ve;aEed,nDrv1It;se,t2N;l,r4t;aGhedu2oBrD;aEeDibb2o3Z;en,w;pe,t4;le,n,r2M;cDfegua72il,mp2;k,rifi3;aZeHhy6LiGoEuD;b,in,le,n,s5X;a6ck,ll,oDpe,u5;f,t;de,ng,ot,p,s1W;aTcSdo,el,fQgPje8lOmMnLo17pJque6sFturn,vDwa6V;eDi27;al,r1;er74oFpe8tEuD;lt,me;!a55;l71rt;air,eaDly,o53;l,t;dezvo2Zt;aDedy;ke,rk;ea1i4G;a6Iist0r5N;act6Yer1Vo71uD;nd,se;a38o6F;ch,s6G;c1Dge,iEke,lly,nDp1Wt1W;ge,k,t;n,se;es6Biv0;a04e00hYiXlToNrEsy4uD;mp,n4rcha1sh;aKeIiHoDu4O;be,ceFdu3fi2grDje8mi1p,te6;amDe6W;!me;ed,ss;ce,de,nt;sDy;er6Cs;cti3i1;iHlFoEp,re,sDuCw0;e,i5Yt;l,p;iDl;ce,sh;nt,s5V;aEce,e32uD;g,mp,n7;ce,nDy;!t;ck,le,n17pe,tNvot;a1oD;ne,tograph;ak,eFnErDt;fu55mA;!c32;!l,r;ckJiInHrFsEtDu1y;ch,e9;s,te;k,tD;!y;!ic;nt,r,se;!a7;bje8ff0il,oErDutli3Qver4B;bAd0ie9;ze;a4ReFoDur1;d,tD;e,i3;ed,gle8tD;!work;aMeKiIoEuD;rd0;ck,d3Rld,nEp,uDve;nt,th;it5EkD;ey;lk,n4Brr5CsDx;s,ta2B;asuBn4UrDss;ge,it;il,nFp,rk3WsEtD;ch,t0;h,k,t0;da5n0oeuvB;aLeJiHoEuD;mp,st;aEbby,ck,g,oDve;k,t;d,n;cDe,ft,mAnIst;en1k;aDc0Pe4vK;ch,d,k,p,se;bFcEnd,p,t4uD;gh,n4;e,k;el,o2U;eEiDno4E;ck,d,ll,ss;el,y;aEo1OuD;i3mp;m,zz;mpJnEr46ssD;ue;c1Rdex,fluGha2k,se2HteDvoi3;nt,rD;e6fa3viD;ew;en3;a8le2A;aJeHiGoEuD;g,nt;l3Ano2Dok,pDr1u1;!e;ghli1Fke,nt,re,t;aDd7lp;d,t;ck,mGndFrEsh,tDu9;ch,e;bo3Xm,ne4Eve6;!le;!m0;aMear,ift,lKossJrFuD;arDe4Alp,n;antee,d;aFiEoDumb2;uCwth;ll,nd,p;de,sp;ip;aBoDue;ss,w;g,in,me,ng,s,te,ze;aZeWiRlNoJrFuD;ck,el,nDss,zz;c38d;aEoDy;st,wn;cDgme,me,nchi1;tuB;cFg,il,ld,rD;ce,e29mDwa31;!at;us;aFe0Vip,oDy;at,ck,od,wD;!er;g,ke,me,re,sh,vo1E;eGgFlEnDre,sh,t,x;an3i0Q;e,m,t0;ht,uB;ld;aEeDn3;d,l;r,tuB;ce,il,ll,rm,vo2W;cho,d7ffe8nMsKxFyeD;!baD;ll;cGerci1hFpDtra8;eriDo0W;en3me9;au6ibA;el,han7u1;caDtima5;pe;count0d,vy;a01eSiMoJrEuDye;b,el,mp,pli2X;aGeFiEoD;ne,p;ft,ll,nk,p,ve;am,ss;ft,g,in;cEd7ubt,wnloD;ad;k,u0E;ge6p,sFt4vD;e,iDor3;de;char7gui1h,liEpD;at4lay,u5;ke;al,bKcJfeIlGmaCposAsEtaD;il;e07iD;gn,re;ay,ega5iD;ght;at,ct;li04rea1;a5ut;b,ma7n3rDte;e,t;a0Eent0Dh06irc2l03oKrFuD;be,e,rDt;b,e,l,ve;aGeFoEuDy;sh;p,ss,wd;dAep;ck,ft,sh;at,de,in,lTmMnFordina5py,re,st,uDv0;gh,nDp2rt;s01t;ceHdu8fli8glomeIsFtDveN;a8rD;a6ol;e9tru8;ct;ntDrn;ra5;bHfoGmFpD;leDouCromi1;me9;aCe9it,u5;rt;at,iD;ne;lap1oD;r,ur;aEiDoud,ub;ck,p;im,w;aEeDip;at,ck,er;iGllen7nErD;ge,m,t;ge,nD;el;n,r;er,re;ke,ll,mp,noe,pGrXsFtEuDve;se,ti0I;alog,ch;h,t;!tuB;re;a03eZiXlToPrHuEyD;pa11;bb2ck2dgEff0mp,rDst,zz;den,n;et;anJeHiFoadEuD;i1sh;ca6;be,d7;ge;aDed;ch,k;ch,d;aFg,mb,nEoDrd0tt2x,ycott;k,st,t;d,e;rd,st;aFeCiDoYur;nk,tz;nd;me;as,d,ke,nd,opsy,tD;!ch,e;aFef,lt,nDt;d,efA;it;r,t;ck,il,lan3nIrFsEtt2;le;e,h;!gDk;aDe;in;!d,g,k;bu1c05dZge,iYlVnTppQrLsIttGucEwaD;rd;tiD;on;aDempt;ck;k,sD;i6ocia5;st;chFmD;!oD;ur;!iD;ve;eEroa4;ch;al;chDg0sw0;or;aEt0;er;rm;d,m,r;dreHvD;an3oD;ca5;te;ce;ss;cDe,he,t;eFoD;rd,u9;nt;nt,ss;se\",Actor:\"true¦0:7B;1:7G;2:6A;3:7F;4:7O;5:7K;a6Nb62c4Ud4Be41f3Sg3Bh30i2Uj2Qkin2Pl2Km26n1Zo1Sp0Vqu0Tr0JsQtJuHvEw8yo6;gi,ut6;h,ub0;aAe9i8o7r6;estl0it0;m2rk0;fe,nn0t2Bza2H;atherm2ld0;ge earn0it0nder0rri1;eter7i6oyF;ll5Qp,s3Z;an,ina2U;n6s0;c6Uder03;aoisea23e9herapi5iktok0o8r6ut1yco6S;a6endseLo43;d0mp,nscri0Bvel0;ddl0u1G;a0Qchn7en6na4st0;ag0;i3Oo0D;aiXcUeRhPiMki0mu26oJpGquaFtBu7wee6;p0theart;lt2per7r6;f0ge6Iviv1;h6inten0Ist5Ivis1;ero,um2;a8ep7r6;ang0eam0;bro2Nc2Ofa2Nmo2Nsi20;ff0tesm2;tt0;ec7ir2Do6;kesp59u0M;ia5Jt3;l7me6An,rcere6ul;r,ss;di0oi5;n7s6;sy,t0;g0n0;am2ephe1Iow6;girl,m2r2Q;cretInior cit3Fr6;gea4v6;a4it1;hol4Xi7reen6ulpt1;wr2C;e01on;l1nt;aEe9o8u6;l0nn6;er up,ingE;g40le mod3Zof0;a4Zc8fug2Ppo32searQv6;ere4Uolution6;ary;e6luYru22;ptio3T;bbi,dic5Vpp0;arter6e2Z;back;aYeWhSiRlOoKr8sycho7u6;nk,p31;logi5;aGeDiBo6;d9fess1g7ph47s6;pe2Ktitu51;en6ramm0;it1y;igy,uc0;est4Nme mini0Unce6s3E;!ss;a7si6;de4;ch0;ctiti39nk0P;dca0Oet,li6pula50rnst42;c2Itic6;al scie6i2;nti5;a6umb0;nn0y6;er,ma4Lwright;lgrim,one0;a8iloso7otogra7ra6ysi1V;se;ph0;ntom,rmaci5;r6ssi1T;form0s4O;i3El,nel3Yr8st1tr6wn;i6on;arWot;ent4Wi42tn0;ccupa4ffBp8r7ut6;ca5l0B;ac4Iganiz0ig2Fph2;er3t6;i1Jomet6;ri5;ic0spring;aBe9ie4Xo7u6;n,rser3J;b6mad,vi4V;le2Vo4D;i6mesis,phew;ce,ghb1;nny,rr3t1X;aEeDiAo7u6yst1Y;m8si16;der3gul,m7n6th0;arDk;!my;ni7s6;f02s0Jt0;on,st0;chan1Qnt1rcha4;gi9k0n8rtyr,t6y1;e,riar6;ch;ag0iac;ci2stra3I;a7e2Aieutena4o6;rd,s0v0;bor0d7ndlo6ss,urea3Fwy0ym2;rd;!y;!s28;e8o7u6;ggl0;gg0urna2U;st0;c3Hdol,llu3Ummigra4n6; l9c1Qfa4habi42nov3s7ve6;nt1stig3;pe0Nt6;a1Fig3ru0M;aw;airFeBistoAo8u6ygie1K;man6sba2H;!ita8;bo,st6usekN;age,e3P;ri2;ir,r6;m7o6;!ine;it;dress0sty2C;aLeIhostGirl26ladi3oCrand7u6;e5ru;c9daug0Jfa8m7pa6s2Y;!re4;a,o6;th0;hi1B;al7d6lf0;!de3A;ie,k6te26;eep0;!wr6;it0;isha,n6;i6tl04;us;mbl0rden0;aDella,iAo7r6;eela2Nie1P;e,re6ster pare4;be1Hm2r6st0;unn0;an2ZgZlmm17nanci0r6tt0;e6st la2H; marsh2OfigXm2;rm0th0;conoEdDlectriCm8n7x6;amin0cellency,i2A;emy,trepreneur,vironmenta1J;c8p6;er1loye6;e,r;ee;ci2;it1;mi5;aKeBi8ork,ri7u6we02;de,tche2H;ft0v0;ct3eti7plom2Hre6va;ct1;ci2ti2;aDcor3fencCi0InAput9s7tectLvel6;op0;ce1Ge6ign0;rt0;ee,y;iz6;en;em2;c1Ml0;d8nc0redev7ug6;ht0;il;!dy;a06e04fo,hXitizenWlToBr9u6;r3stomer6;! representat6;ive;e3it6;ic;lJmGnAord9rpor1Nu7w6;boy,ork0;n6ri0;ciTte1Q;in3;fidantAgressSs9t6;e0Kr6;ibut1o6;ll0;tab13ul1O;!e;edi2m6pos0rade;a0EeQissi6;on0;leag8on7um6;ni5;el;ue;e6own;an0r6;ic,k;!s;a9e7i6um;ld;erle6f;ad0;ir7nce6plFract0;ll1;m2wI;lebri6o;ty;dBptAr6shi0;e7pe6;nt0;r,t6;ak0;ain;et;aMeLiJlogg0oErBu6;dd0Fild0rgl9siness6;m2p7w6;om2;ers05;ar;i7o6;!k0th0;cklay0de,gadi0;hemi2oge8y6;!frie6;nd;ym2;an;cyc6sR;li5;atbox0ings;by,nk0r6;b0on7te6;nd0;!e07;c04dWge4nQpLrHsFtAu7yatull6;ah;nt7t6;h1oG;!ie;h8t6;e6orney;nda4;ie5le6;te;sis00tron6;aut,om0;chbis8isto7tis6;an,t;crU;hop;ost9p6;ari6rentiS;ti6;on;le;a9cest1im3nou8y6;bo6;dy;nc0;ly5rc6;hi5;mi8v6;entur0is1;er;ni7r6;al;str3;at1;or;counBquaintanArob9t6;ivi5or,re6;ss;st;at;ce;ta4;nt\",\"Adj|Noun\":\"true¦0:16;a1Db17c0Ud0Re0Mf0Dg0Ah08i06ju05l02mWnUoSpNrIsBt7u4v1watershed;a1ision0Z;gabo4nilla,ria1;b0Vnt;ndergr1pstairs;adua14ou1;nd;a3e1oken,ri0;en,r1;min0rori13;boo,n;age,e5ilv0Flack,o3quat,ta2u1well;bordina0Xper5;b0Lndard;ciali0Yl1vereign;e,ve16;cret,n1ri0;ior;a4e2ou1ubbiL;nd,tiY;ar,bBl0Wnt0p1side11;resent0Vublican;ci0Qsh;a4eriodic0last0Zotenti0r1;emi2incip0o1;!fession0;er,um;rall4st,tie0U;ff1pposi0Hv0;ens0Oi0C;agg01ov1uts;el;a5e3iniatJo1;bi01der07r1;al,t0;di1tr0N;an,um;le,riG;attOi2u1;sh;ber0ght,qC;stice,veniT;de0mpressioYn1;cumbe0Edividu0no0Dsta0Eterim;alf,o1umdrum;bby,melF;en2old,ra1;ph0Bve;er0ious;a7e5i4l3u1;git03t1;ure;uid;ne;llow,m1;aFiL;ir,t,vo1;riOuriO;l3p00x1;c1ecutUpeV;ess;d1iK;er;ar2e1;mographUrivO;k,l2;hiGlassSo2rude,unn1;ing;m5n1operK;creCstitueOte2vertab1;le;mpor1nt;ary;ic,m2p1;anion,lex;er2u1;ni8;ci0;al;e5lank,o4r1;i2u1;te;ef;ttom,urgeois;st;cadem9d6l2ntarct9r1;ab,ct8;e3tern1;at1;ive;rt;oles1ult;ce1;nt;ic\",\"Adj|Past\":\"true¦0:4Q;1:4C;2:4H;3:4E;a44b3Tc36d2Je29f20g1Wh1Si1Jj1Gkno1Fl1Am15n12o0Xp0Mqu0Kr08sLtEuAv9w4yellow0;a7ea6o4rinkl0;r4u3Y;n,ri0;k31th3;rp0sh0tZ;ari0e1O;n5p4s0;d1li1Rset;cov3derstood,i4;fi0t0;a8e3Rhr7i6ouTr4urn0wi4C;a4imm0ou2G;ck0in0pp0;ed,r0;eat2Qi37;m0nn0r4;get0ni2T;aOcKeIhGimFm0Hoak0pDt7u4;bsid3Ogge44s4;pe4ta2Y;ct0nd0;a8e7i2Eok0r5u4;ff0mp0nn0;ength2Hip4;ed,p0;am0reotyp0;in0t0;eci4ik0oH;al3Efi0;pRul1;a4ock0ut;d0r0;a4c1Jle2t31;l0s3Ut0;a6or5r4;at4e25;ch0;r0tt3;t4ut0;is2Mur1;aEe5o4;tt0;cAdJf2Bg9je2l8m0Knew0p7qu6s4;eTpe2t4;or0ri2;e3Dir0;e1lac0;at0e2Q;i0Rul1;eiv0o4ycl0;mme2Lrd0v3;in0lli0ti2A;a4ot0;li28;aCer30iBlAo9r5u4;mp0zzl0;e6i2Oo4;ce2Fd4lo1Anou30pos0te2v0;uc0;fe1CocCp0Iss0;i2Kli1L;ann0e2CuS;ck0erc0ss0;ck0i2Hr4st0;allLk0;bse7c6pp13rgan2Dver4;lo4whelm0;ok0;cupi0;rv0;aJe5o4;t0uri1A;ed0gle2;a6e5ix0o4ut0ys1N;di1Nt15u26;as0Clt0;n4rk0;ag0ufact0A;e6i5o4;ad0ck0st,v0;cens0m04st0;ft,v4;el0;tt0wn;a5o15u4;dg0s1B;gg0;llumSmpAn4sol1;br0cre1Ldebt0f8jZspir0t5v4;it0olv0;e4ox0Y;gr1n4re23;d0si15;e2l1o1Wuri1;li0o01r4;ov0;a6e1o4um03;ok0r4;ri0Z;mm3rm0;i6r5u4;a1Bid0;a0Ui0Rown;ft0;aAe9i8l6oc0Ir4;a4i0oz0Y;ctHg19m0;avo0Ju4;st3;ni08tt0x0;ar0;d0il0sc4;in1;dCl1mBn9quipp0s8x4;agger1c6p4te0T;a0Se4os0;ct0rie1D;it0;cap0tabliZ;cha0XgFha1As4;ur0;a0Zbarra0N;i0Buc1;aMeDi5r4;a01i0;gni08miniSre2s4;a9c6grun0Ft4;o4re0Hu17;rt0;iplWou4;nt0r4;ag0;bl0;cBdRf9l8p7ra6t5v4;elop0ot0;ail0ermQ;ng0;re07;ay0ight0;e4in0o0M;rr0;ay0enTor1;m5t0z4;ed,zl0;ag0p4;en0;aPeLhIlHo9r6u4;lt4r0stom03;iv1;a5owd0u4;sh0;ck0mp0;d0loAm7n4ok0v3;centr1f5s4troC;id3olid1;us0;b5pl4;ic1;in0;r0ur0;assi9os0utt3;ar5i4;ll0;g0m0;lebr1n6r4;ti4;fi0;tralJ;g0lcul1;aDewild3iCl9o7r5urn4;ed,t;ok4uis0;en;il0r0t4und;tl0;e5i4;nd0;ss0;as0;ffl0k0laMs0tt3;bPcNdKfIg0lFmaz0nDppBrm0ss9u5wa4;rd0;g5thor4;iz0;me4;nt0;o6u4;m0r0;li0re4;ci1;im1ticip1;at0;a5leg0t3;er0;rm0;fe2;ct0;ju5o7va4;nc0;st0;ce4knowledg0;pt0;and5so4;rb0;on0;ed\",Singular:\"true¦0:5J;1:5H;2:4W;3:4S;4:52;5:57;6:5L;7:56;8:5B;a52b4Lc3Nd35e2Xf2Og2Jh28in24j23k22l1Um1Ln1Ho1Bp0Rqu0Qr0FsZtMuHvCw9x r58yo yo;a9ha3Po3Q;f3i4Rt0Gy9;! arou39;arCeAideo ga2Qo9;cabu4Jl5C;gOr9t;di4Zt1Y;iety,ni4P;nBp30rAs 9;do43s5E;bani1in0;coordinat3Ader9;estima1to24we41; rex,aKeJhHiFoErBuAv9;! show;m2On2rntLto1D;agedy,ib9o4E;e,u9;n0ta46;ni1p2rq3L;c,er,m9;etF;ing9ree26;!y;am,mp3F;ct2le6x return;aNcMeKhor4QiJkHoGpin off,tDuBy9;ll9ner7st4T;ab2X;b9i1n28per bowl,rro1X;st3Ltot0;atAipe2Go1Lrate7udent9;! lo0I;i39u1;ft ser4Lmeo1I;elet5i9;ll,r3V;b38gn2Tte;ab2Jc9min3B;t,urity gua2N;e6ho2Y;bbatic0la3Jndwi0Qpi5;av5eDhetor2iAo9;de6om,w;tAv9;erb2C;e,u0;bDcBf9publ2r10spi1;er9orm3;e6r0;i9ord label;p2Ht0;a1u46;estion mark,ot2F;aPeMhoLiIlGoErAu9yram1F;ddi3HpErpo1Js3J;eBo9;bl3Zs9;pe3Jta1;dic1Rmi1Fp1Qroga8ss relea1F;p9rt0;py;a9ebisci1;q2Dte;cn2eAg9;!gy;!r;ne call,tocoK;anut,dAr9t0yo1;cen3Jsp3K;al,est0;nop4rAt9;e,hog5;adi11i2V;atme0bj3FcBpia1rde0thers,utspok5ve9wn3;n,r9;ti0Pview;cuAe9;an;pi3;arBitAot9umb3;a2Fhi2R;e,ra1;cot2ra8;aFeCiAo9ur0;nopo4p18rni2Nsq1Rti36uld;c,li11n0As9tt5;chief,si34;dAnu,t9;al,i3;al,ic;gna1mm0nd15rsupi0te9yf4;ri0;aDegCiBu9;ddi1n9;ch;me,p09; Be0M;bor14y9; 9er;up;eyno1itt5;el4ourn0;cBdices,itia8ni25sAtel0Lvert9;eb1J;e28titu1;en8i2T;aIeEighDoAu9;man right,s22;me9rmoFsp1Ftb0K;! r9;un; scho0YriY;a9i1N;d9v5; start,pho9;ne;ndful,sh brown,v5ze;aBelat0Ilaci3r9ul4yp1S;an9enadi3id;a1Cd slam,ny;df4r9;l2ni1I;aGeti1HiFlu1oCrAun9;er0;ee market,i9onti3;ga1;l4ur9;so9;me;ePref4;br2mi4;conoFffi7gg,lecto0Rmbas1EnCpidem2s1Zth2venBxAyel9;id;ampZempl0Nte6;i19t;er7terp9;ri9;se;my;eLiEoBr9ump tru0U;agonf4i9;er,ve thru;cAg7i4or,ssi3wn9;side;to0EumenE;aEgniDnn3sAvide9;nd;conte6incen8p9tri11;osi9;ti0C;ta0H;le0X;athBcAf9ni0terre6;ault 05err0;al,im0;!b9;ed;aWeThMiLlJoDr9;edit caBuc9;ib9;le;rd;efficDke,lCmmuniqLnsApi3rr0t0Xus9yo1;in;erv9uI;ato02;ic,lQ;ie6;er7i9oth;e6n2;ty,vil wM;aDeqCick5ocoBr9;istmas car9ysanthemum;ol;la1;ue;ndeli3racteri9;st2;iAllEr9;e0tifica1;liZ;hi3nFpErCt9ucus;erpi9hedr0;ll9;ar;!bohyd9ri3;ra1;it0;aAe,nib0t9;on;l,ry;aMeLiop2leJoHrDu9;nny,r9tterf4;g9i0;la9;ry;eakAi9;ck;fa9throB;st;dy,ro9wl;ugh;mi9;sh;an,l4;nkiArri3;er;ng;cSdMlInFppeti1rDsBtt2utop9;sy;ic;ce6pe9;ct;r9sen0;ay;ecAoma4tiA;ly;do1;i5l9;er7y;gy;en; hominDjAvan9;tage;ec8;ti9;ve;em;cCeAqui9;tt0;ta1;te;iAru0;al;de6;nt\",\"Person|Noun\":\"true¦a0Eb07c03dWeUfQgOhLjHkiGlFmCnBolive,p7r4s3trini06v1wa0;ng,rd,tts;an,enus,iol0;a,et;ky,onPumm09;ay,e1o0uby;bin,d,se;ed,x;a2e1o0;l,tt04;aLnJ;dYge,tR;at,orm;a0eloW;t0x,ya;!s;a9eo,iH;ng,tP;a2e1o0;lGy;an,w3;de,smi4y;a0erb,iOolBuntR;ll,z0;el;ail,e0iLuy;ne;a1ern,i0lo;elds,nn;ith,n0;ny;a0dEmir,ula,ve;rl;a4e3i1j,ol0;ly;ck,x0;ie;an,ja;i0wn;sy;am,h0liff,rystal;a0in,ristian;mbers,ri0;ty;a4e3i2o,r0ud;an0ook;dy;ll;nedict,rg;k0nks;er;l0rt;fredo,ma\",\"Actor|Verb\":\"true¦aCb8c5doctor,engineAfool,g3host,judge,m2nerd,p1recruit,scout,ushAvolunteAwi0;mp,tneA;arent,ilot;an,ime;eek,oof,r0uide;adu8oom;ha1o0;ach,nscript,ok;mpion,uffeur;o2u0;lly,tch0;er;ss;ddi1ffili0rchite1;ate;ct\",MaleName:\"true¦0:H6;1:FZ;2:DS;3:GQ;4:CZ;5:FV;6:GM;7:FP;8:GW;9:ET;A:C2;B:GD;aF8bE1cCQdBMeASfA1g8Yh88i7Uj6Sk6Bl5Mm48n3So3Ip33qu31r26s1Et0Ru0Ov0CwTxSyHzC;aCor0;cChC1karia,nAT;!hDkC;!aF6;!ar7CeF5;aJevgenBSoEuC;en,rFVsCu3FvEF;if,uf;nDs6OusC;ouf,s6N;aCg;s,tC;an,h0;hli,nCrosE1ss09;is,nC;!iBU;avi2ho5;aPeNiDoCyaEL;jcieBJlfgang,odrFutR;lFnC;f8TsC;lCt1;ow;bGey,frEhe4QlC;aE5iCy;am,e,s;ed8iC;d,ed;eAur;i,ndeD2rn2sC;!l9t1;lDyC;l1ne;lDtC;!er;aCHy;aKernDAiFladDoC;jteB0lodymyr;!iC;mFQsDB;cFha0ktBZnceDrgCOvC;a0ek;!nC;t,zo;!e4StBV;lCnC7sily;!entC;in9J;ghE2lCm70nax,ri,sm0;riCyss87;ch,k;aWeRhNiLoGrEuDyC;!l2roEDs1;n6r6E;avD0eCist0oy,um0;ntCRvBKy;bFdAWmCny;!asDmCoharu;aFFie,y;!z;iA6y;mCt4;!my,othy;adEeoDia0SomC;!as;!dor91;!de4;dFrC;enBKrC;anBJeCy;ll,nBI;!dy;dgh,ha,iCnn2req,tsu5V;cDAka;aYcotWeThPiMlobod0oKpenc2tEurDvenAEyCzym1;ed,lvest2;aj,e9V;anFeDuC;!aA;fan17phEQvCwaA;e77ie;!islaCl9;v,w;lom1rBuC;leymaDHta;dDgmu9UlCm1yabonga;as,v8B;!dhart8Yn9;aEeClo75;lCrm0;d1t1;h9Jne,qu1Jun,wn,yne;aDbastiEDk2Yl5Mpp,rgCth,ymoCU;e1Dio;m4n;!tC;!ie,y;eDPlFmEnCq67tosCMul;dCj2UtiA5;e01ro;!iATkeB6mC4u5;!ik,vato9K;aZeUheC8iRoGuDyC;an,ou;b99dDf4peAssC;!elEG;ol00y;an,bLc7MdJel,geIh0lHmGnEry,sDyC;!ce;ar7Ocoe,s;!aCnBU;ld,n;an,eo;a7Ef;l7Jr;e3Eg2n9olfo,riC;go;bBNeDH;cCl9;ar87c86h54kCo;!ey,ie,y;cFeA3gDid,ubByCza;an8Ln06;g85iC;naC6s;ep;ch8Kfa5hHin2je8HlGmFndEoHpha5sDul,wi36yC;an,mo8O;h9Im4;alDSol3O;iD0on;f,ph;ul;e9CinC;cy,t1;aOeLhilJiFrCyoG;aDeC;m,st1;ka85v2O;eDoC;tr;r8GtC;er,ro;!ipCl6H;!p6U;dCLrcy,tC;ar,e9JrC;!o7;b9Udra8So9UscAHtri62ulCv8I;!ie,o7;ctav6Ji2lImHndrBRrGsDtCum6wB;is,to;aDc6k6m0vCwaBE;al79;ma;i,vR;ar,er;aDeksandr,ivC;er,i2;f,v;aNeLguyBiFoCu3O;aDel,j4l0ma0rC;beAm0;h,m;cFels,g5i9EkDlC;es,s;!au,h96l78olaC;!i,y;hCkCol76;ol75;al,d,il,ls1vC;ilAF;hom,tC;e,hC;anCy;!a5i5;aYeViLoGuDyC;l4Nr1;hamDr84staC;fa,p6E;ed,mG;di10e,hamEis4JntDritz,sCussa;es,he;e,y;ad,ed,mC;ad,ed;cGgu5hai,kFlEnDtchC;!e8O;a9Pik;house,o7t1;ae73eC3ha8Iolaj;ah,hDkC;!ey,y;aDeC;al,l;el,l;hDlv3rC;le,ri8Ev4T;di,met;ay0c00gn4hWjd,ks2NlTmadZnSrKsXtDuric7VxC;imilBKwe8B;eHhEi69tCus,y69;!eo,hCia7;ew,i67;eDiC;as,eu,s;us,w;j,o;cHiGkFlEqu8Qsha83tCv3;iCy;!m,n;in,on;el,o7us;a6Yo7us;!elCin,o7us;!l8o;frAEi5Zny,u5;achDcoCik;lm;ai,y;amDdi,e5VmC;oud;adCm6W;ou;aulCi9P;ay;aWeOiMloyd,oJuDyC;le,nd1;cFdEiDkCth2uk;a7e;gi,s,z;ov7Cv6Hw6H;!as,iC;a6Een;g0nn52renDuCvA4we7D;!iS;!zo;am,n4oC;n5r;a9Yevi,la5KnHoFst2thaEvC;eCi;nte;bo;nCpo8V;!a82el,id;!nC;aAy;mEnd1rDsz73urenCwr6K;ce,t;ry,s;ar,beAont;aOeIhalHiFla4onr63rDu5SylC;e,s;istCzysztof;i0oph2;er0ngsl9p,rC;ilA9k,ollos;ed,id;en0iGnDrmCv4Z;it;!dDnCt1;e2Ny;ri4Z;r,th;cp2j4mEna8BrDsp6them,uC;ri;im,l;al,il;a03eXiVoFuC;an,lCst3;en,iC;an,en,o,us;aQeOhKkub4AnIrGsDzC;ef;eDhCi9Wue;!ua;!f,ph;dCge;i,on;!aCny;h,s,th6J;anDnC;!ath6Hie,n72;!nC;!es;!l,sCy;ph;o,qu3;an,mC;!i,m6V;d,ffFns,rCs4;a7JemDmai7QoCry;me,ni1H;i9Dy;!e73rC;ey,y;cKdBkImHrEsDvi2yC;dBs1;on,p2;ed,oDrCv67;e6Qod;d,s61;al,es5Wis1;a,e,oCub;b,v;ob,qu13;aTbNchiMgLke53lija,nuKonut,rIsEtCv0;ai,suC;ki;aDha0i8XmaCsac;el,il;ac,iaC;h,s;a,vinCw3;!g;k,nngu6X;nac1Xor;ka;ai,rahC;im;aReLoIuCyd6;beAgGmFsC;eyDsC;a3e3;in,n;ber5W;h,o;m2raDsse3wC;a5Pie;c49t1K;a0Qct3XiGnDrC;beAman08;dr7VrC;iCy2N;!k,q1R;n0Tt3S;bKlJmza,nIo,rEsDyC;a5KdB;an,s0;lEo67r2IuCv9;hi5Hki,tC;a,o;an,ey;k,s;!im;ib;a08e00iUlenToQrMuCyorgy;iHnFsC;!taC;f,vC;!e,o;n6tC;er,h2;do,lC;herDlC;auCerQ;me;aEegCov2;!g,orC;!io,y;dy,h7C;dfr9nza3XrDttfC;ri6C;an,d47;!n;acoGlEno,oCuseppe;rgiCvan6O;!o,s;be6Ies,lC;es;mo;oFrC;aDha4HrCt;it,y;ld,rd8;ffErgC;!e7iCy;!os;!r9;bElBrCv3;eCla1Nr4Hth,y;th;e,rC;e3YielC;!i4;aXeSiQlOorrest,rCyod2E;aHedFiC;edDtC;s,z;ri18;!d42eri11riC;ck,k;nCs2;cEkC;ie,lC;in,yn;esLisC;!co,z3M;etch2oC;ri0yd;d5lConn;ip;deriFliEng,rC;dinaCg4nan0B;nd8;pe,x;co;bCdi,hd;iEriC;ce,zC;io;an,en,o;benez2dZfrYit0lTmMnJo3rFsteb0th0ugenEvCymBzra;an,eCge4D;ns,re3K;!e;gi,iDnCrol,v3w3;est8ie,st;cCk;!h,k;o0DriCzo;co,qC;ue;aHerGiDmC;aGe3A;lCrh0;!iC;a10o,s;s1y;nu5;beAd1iEliDm2t1viCwood;n,s;ot28s;!as,j5Hot,sC;ha;a3en;!dGg6mFoDua2QwC;a2Pin;arC;do;oZuZ;ie;a04eTiOmitrNoFrag0uEwDylC;an,l0;ay3Hig4D;a3Gdl9nc0st3;minFnDri0ugCvydGy2S;!lF;!a36nCov0;e1Eie,y;go,iDykC;as;cCk;!k;i,y;armuFetDll1mitri7neCon,rk;sh;er,m6riC;ch;id;andLepak,j0lbeAmetri4nIon,rGsEvDwCxt2;ay30ey;en,in;hawn,moC;nd;ek,riC;ck;is,nC;is,y;rt;re;an,le,mKnIrEvC;e,iC;!d;en,iEne0PrCyl;eCin,yl;l45n;n,o,us;!iCny;el,lo;iCon;an,en,on;a0Fe0Ch03iar0lRoJrFuDyrC;il,us;rtC;!is;aEistC;iaCob12;no;ig;dy,lInErC;ey,neliCy;s,us;nEor,rDstaC;nt3;ad;or;by,e,in,l3t1;aHeEiCyde;fCnt,ve;fo0Xt1;menDt4;us;s,t;rFuDyC;!t1;dCs;e,io;enC;ce;aHeGrisC;!toC;phCs;!eC;!r;st2t;d,rCs;b5leC;s,y;cDdrCs6;ic;il;lHmFrC;ey,lDroCy;ll;!o7t1;er1iC;lo;!eb,v3;a09eZiVjorn,laUoSrEuCyr1;ddy,rtKst2;er;aKeFiEuDyC;an,ce,on;ce,no;an,ce;nDtC;!t;dDtC;!on;an,on;dFnC;dDisC;lav;en,on;!foOl9y;bby,gd0rCyd;is;i0Lke;bElDshC;al;al,lL;ek;nIrCshoi;at,nEtC;!raC;m,nd;aDhaCie;rd;rd8;!iDjam3nCs1;ie,y;to;kaMlazs,nHrC;n9rDtC;!holomew;eCy;tt;ey;dCeD;ar,iC;le;ar1Nb1Dd16fon15gust3hm12i0Zja0Yl0Bm07nTputsiSrGsaFugustEveDyCziz;a0kh0;ry;o,us;hi;aMchiKiJjun,mHnEon,tCy0;em,hCie,ur8;ur;aDoC;!ld;ud,v;aCin;an,nd8;!el,ki;baCe;ld;ta;aq;aMdHgel8tCw6;hoFoC;iDnC;!i8y;ne;ny;er7rCy;eDzC;ej;!as,i,j,s,w;!s;s,tolC;iCy;!y;ar,iEmaCos;nu5r;el;ne,r,t;aVbSdBeJfHiGl01onFphonsEt1vC;aPin;on;e,o;so,zo;!sR;!onZrC;ed;c,jaHksFssaHxC;!andC;er,rC;e,os,u;andCei;ar,er,r;ndC;ro;en;eDrecC;ht;rt8;dd3in,n,sC;taC;ir;ni;dDm6;ar;an,en;ad,eC;d,t;in;so;aGi,olErDvC;ik;ian8;f8ph;!o;mCn;!a;dGeFraDuC;!bakr,lfazl;hCm;am;!l;allFel,oulaye,ulC;!lDrahm0;an;ah,o;ah;av,on\",Uncountable:\"true¦0:2E;1:2L;2:33;a2Ub2Lc29d22e1Rf1Ng1Eh16i11j0Yk0Wl0Rm0Hn0Do0Cp03rZsLt9uran2Jv7w3you gu0E;a5his17i4oo3;d,l;ldlife,ne;rm8t1;apor,ernacul29i3;neg28ol1Otae;eDhBiAo8r4un3yranny;a,gst1B;aff2Oea1Ko4ue nor3;th;o08u3;bleshoot2Ose1Tt;night,othpas1Vwn3;foEsfoE;me off,n;er3und1;e,mod2S;a,nnis;aDcCeBhAi9ki8o7p6t4u3weepstak0;g1Unshi2Hshi;ati08e3;am,el;ace2Keci0;ap,cc1meth2C;n,ttl0;lk;eep,ingl0or1C;lf,na1Gri0;ene1Kisso1C;d0Wfe2l4nd,t3;i0Iurn;m1Ut;abi0e4ic3;e,ke15;c3i01laxa11search;ogni10rea10;a9e8hys7luto,o5re3ut2;amble,mis0s3ten20;en1Zs0L;l3rk;i28l0EyH; 16i28;a24tr0F;nt3ti0M;i0s;bstetri24vercrowd1Qxyg09;a5e4owada3utella;ys;ptu1Ows;il poliZtional securi2;aAe8o5u3;m3s1H;ps;n3o1K;ey,o3;gamy;a3cha0Elancholy,rchandi1Htallurgy;sl0t;chine3g1Aj1Hrs,thema1Q; learn1Cry;aught1e6i5ogi4u3;ck,g12;c,s1M;ce,ghtn18nguis1LteratWv1;ath1isVss;ara0EindergartPn3;icke0Aowled0Y;e3upit1;a3llyfiGwel0G;ns;ce,gnor6mp5n3;forma00ter3;net,sta07;atiSort3rov;an18;a7e6isto09o3ung1;ckey,mework,ne4o3rseradi8spitali2use arrest;ky;s2y;adquarteXre;ir,libut,ppiHs3;hi3te;sh;ene8l6o5r3um,ymnas11;a3eZ;niUss;lf,re;ut3yce0F;en; 3ti0W;edit0Hpo3;ol;aNicFlour,o4urnit3;ure;od,rgive3uri1wl;ness;arCcono0LducaBlectr9n7quip8thi0Pvery6x3;ist4per3;ti0B;en0J;body,o08th07;joy3tertain3;ment;ici2o3;ni0H;tiS;nings,th;emi02i6o4raugh3ynas2;ts;pe,wnstai3;rs;abet0ce,s3;honZrepu3;te;aDelciChAivi07l8o3urrency;al,ld w6mmenta5n3ral,ttIuscoB;fusiHt 3;ed;ry;ar;assi01oth0;es;aos,e3;eMwK;us;d,rO;a8i6lood,owlHread5u3;ntGtt1;er;!th;lliarJs3;on;g3ss;ga3;ge;cKdviJeroGirFmBn6ppeal court,r4spi3thleL;rin;ithmet3sen3;ic;i6y3;o4th3;ing;ne;se;en5n3;es2;ty;ds;craft;bi8d3nau7;yna3;mi6;ce;id,ous3;ti3;cs\",Infinitive:\"true¦0:9G;1:9T;2:AD;3:90;4:9Z;5:84;6:AH;7:A9;8:92;9:A0;A:AG;B:AI;C:9V;D:8R;E:8O;F:97;G:6H;H:7D;a94b8Hc7Jd68e4Zf4Mg4Gh4Ai3Qj3Nk3Kl3Bm34nou48o2Vp2Equ2Dr1Es0CtZuTvRwI;aOeNiLors5rI;eJiI;ng,te;ak,st3;d5e8TthI;draw,er;a2d,ep;i2ke,nIrn;d1t;aIie;liADniAry;nJpI;ho8Llift;cov1dJear8Hfound8DlIplug,rav82tie,ve94;eaAo3X;erIo;cut,go,staAFvalA3w2G;aSeQhNoMrIu73;aIe72;ffi3Smp3nsI;aBfo7CpI;i8oD;pp3ugh5;aJiJrIwaD;eat5i2;nk;aImA0;ch,se;ck3ilor,keImp1r8L;! paD;a0Ic0He0Fh0Bi0Al08mugg3n07o05p02qu01tUuLwI;aJeeIim;p,t5;ll7Wy;bNccMffLggeCmmKppJrI;mouFpa6Zvi2;o0re6Y;ari0on;er,i4;e7Numb;li9KmJsiIveD;de,st;er9it;aMe8MiKrI;ang3eIi2;ng27w;fIng;f5le;b,gg1rI;t3ve;a4AiA;a4UeJit,l7DoI;il,of;ak,nd;lIot7Kw;icEve;atGeak,i0O;aIi6;m,y;ft,ng,t;aKi6CoJriIun;nk,v6Q;ot,rt5;ke,rp5tt1;eIll,nd,que8Gv1w;!k,m;aven9ul8W;dd5tis1Iy;a0FeKiJoI;am,t,ut;d,p5;a0Ab08c06d05f01group,hea00iZjoi4lXmWnVpTq3MsOtMup,vI;amp,eJiIo3B;sEve;l,rI;e,t;i8rI;ie2ofE;eLiKpo8PtIurfa4;o24rI;aHiBuctu8;de,gn,st;mb3nt;el,hra0lIreseF;a4e71;d1ew,o07;aHe3Fo2;a7eFiIo6Jy;e2nq41ve;mbur0nf38;r0t;inKleBocus,rJuI;el,rbiA;aBeA;an4e;aBu4;ei2k8Bla43oIyc3;gni39nci3up,v1;oot,uI;ff;ct,d,liIp;se,ze;tt3viA;aAenGit,o7;aWerUinpoiFlumm1LoTrLuI;b47ke,niArIt;poDsuI;aFe;eMoI;cKd,fe4XhibEmo7noJpo0sp1tru6vI;e,i6o5L;un4;la3Nu8;aGclu6dJf1occupy,sup0JvI;a6BeF;etermi4TiB;aGllu7rtr5Ksse4Q;cei2fo4NiAmea7plex,sIva6;eve8iCua6;mp1rItrol,ve;a6It6E;bOccuNmEpMutLverIwe;l07sJtu6Yu0wI;helm;ee,h1F;gr5Cnu2Cpa4;era7i4Ipo0;py,r;ey,seItaH;r2ss;aMe0ViJoIultiply;leCu6Pw;micJnIspla4;ce,g3us;!k;iIke,na9;m,ntaH;aPeLiIo0u3N;ke,ng1quIv5;eIi6S;fy;aKnIss5;d,gI;th5;rn,ve;ng2Gu1N;eep,idnJnI;e4Cow;ap;oHuI;gg3xtaI;po0;gno8mVnIrk;cTdRfQgeChPitia7ju8q1CsNtKun6EvI;a6eIo11;nt,rt,st;erJimi6BoxiPrI;odu4u6;aBn,pr03ru6C;iCpi8tIu8;all,il,ruB;abEibE;eCo3Eu0;iIul9;ca7;i7lu6;b5Xmer0pI;aLer4Uin9ly,oJrI;e3Ais6Bo2;rt,se,veI;riA;le,rt;aLeKiIoiCuD;de,jaInd1;ck;ar,iT;mp1ng,pp5raIve;ng5Mss;ath1et,iMle27oLrI;aJeIow;et;b,pp3ze;!ve5A;gg3ve;aTer45i5RlSorMrJuI;lf4Cndrai0r48;eJiIolic;ght5;e0Qsh5;b3XeLfeEgJsI;a3Dee;eIi2;!t;clo0go,shIwa4Z;ad3F;att1ee,i36;lt1st5;a0OdEl0Mm0FnXquip,rWsVtGvTxI;aRcPeDhOiNpJtIu6;ing0Yol;eKi8lIo0un9;aHoI;it,re;ct,di7l;st,t;a3oDu3B;e30lI;a10u6;lt,mi28;alua7oI;ke,l2;chew,pou0tab19;a0u4U;aYcVdTfSgQhan4joy,lPqOrNsuMtKvI;e0YisI;a9i50;er,i4rI;aHenGuC;e,re;iGol0F;ui8;ar9iC;a9eIra2ulf;nd1;or4;ang1oIu8;r0w;irc3lo0ou0ErJuI;mb1;oaGy4D;b3ct;bKer9pI;hasiIow1;ze;aKody,rI;a4oiI;d1l;lm,rk;ap0eBuI;ci40de;rIt;ma0Rn;a0Re04iKo,rIwind3;aw,ed9oI;wn;agno0e,ff1g,mi2Kne,sLvI;eIul9;rIst;ge,t;aWbVcQlod9mant3pNru3TsMtI;iIoDu37;lJngI;uiA;!l;ol2ua6;eJlIo0ro2;a4ea0;n0r0;a2Xe36lKoIu0S;uIv1;ra9;aIo0;im;a3Kur0;b3rm;af5b01cVduBep5fUliTmQnOpMrLsiCtaGvI;eIol2;lop;ch;a20i2;aDiBloIoD;re,y;oIy;te,un4;eJoI;liA;an;mEv1;a4i0Ao06raud,y;ei2iMla8oKrI;ee,yI;!pt;de,mIup3;missi34po0;de,ma7ph1;aJrief,uI;g,nk;rk;mp5rk5uF;a0Dea0h0Ai09l08oKrIurta1G;a2ea7ipp3uI;mb3;ales4e04habEinci6ll03m00nIrro6;cXdUfQju8no7qu1sLtKvI;eIin4;ne,r9y;aHin2Bribu7;er2iLoli2Epi8tJuI;lt,me;itu7raH;in;d1st;eKiJoIroFu0;rm;de,gu8rm;ss;eJoI;ne;mn,n0;eIlu6ur;al,i2;buCe,men4pI;eIi3ly;l,te;eBi6u6;r4xiC;ean0iT;rcumveFte;eJirp,oI;o0p;riAw;ncIre5t1ulk;el;a02eSi6lQoPrKuI;iXrIy;st,y;aLeaKiJoad5;en;ng;stfeLtX;ke;il,l11mba0WrrMth1;eIow;ed;!coQfrie1LgPhMliLqueaKstJtrIwild1;ay;ow;th;e2tt3;a2eJoI;ld;ad;!in,ui3;me;bysEckfi8ff3tI;he;b15c0Rd0Iff0Ggree,l0Cm09n03ppZrXsQttOuMvJwaE;it;eDoI;id;rt;gIto0X;meF;aIeCraB;ch,in;pi8sJtoI;niA;aKeIi04u8;mb3rt,ss;le;il;re;g0Hi0ou0rI;an9i2;eaKly,oiFrI;ai0o2;nt;r,se;aMi0GnJtI;icipa7;eJoIul;un4y;al;ly0;aJu0;se;lga08ze;iKlI;e9oIu6;t,w;gn;ix,oI;rd;a03jNmiKoJsoI;rb;pt,rn;niIt;st1;er;ouJuC;st;rn;cLhie2knowled9quiItiva7;es4re;ce;ge;eQliOoKrJusI;e,tom;ue;mIst;moJpI;any,liA;da7;ma7;te;pt;andPduBet,i6oKsI;coKol2;ve;liArt,uI;nd;sh;de;ct;on\",Person:\"true¦0:1Q;a29b1Zc1Md1Ee18f15g13h0Ri0Qj0Nk0Jl0Gm09n06o05p00rPsItCusain bolt,v9w4xzibit,y1;anni,oko on2uji,v1;an,es;en,o;a3ednesday adams,i2o1;lfram,o0Q;ll ferrell,z khalifa;lt disn1Qr1;hol,r0G;a2i1oltai06;n dies0Zrginia wo17;lentino rossi,n goG;a4h3i2ripp,u1yra banks;lZpac shakur;ger woods,mba07;eresa may,or;kashi,t1ylor;um,ya1B;a5carlett johanss0h4i3lobodan milosevic,no2ocr1Lpider1uperm0Fwami; m0Em0E;op dogg,w whi1H;egfried,nbad;akespeaTerlock holm1Sia labeouf;ddam hussa16nt1;a cla11ig9;aAe6i5o3u1za;mi,n dmc,paul,sh limbau1;gh;bin hood,d stew16nald1thko;in0Mo;han0Yngo starr,valdo;ese witherspo0i1mbrandt;ll2nh1;old;ey,y;chmaninoff,ffi,iJshid,y roma1H;a4e3i2la16o1uff daddy;cahont0Ie;lar,p19;le,rZ;lm17ris hilt0;leg,prah winfr0Sra;a2e1iles cra1Bostradam0J; yo,l5tt06wmQ;pole0s;a5e4i2o1ubar03;by,lie5net,rriss0N;randa ju1tt romn0M;ly;rl0GssiaB;cklemo1rkov,s0ta hari,ya angelou;re;ady gaga,e1ibera0Pu;bron jam0Xch wale1e;sa;anye west,e3i1obe bryant;d cudi,efer suther1;la0P;ats,sha;a2effers0fk,k rowling,rr tolki1;en;ck the ripp0Mwaharlal nehru,y z;liTnez,ron m7;a7e5i3u1;lk hog5mphrey1sa01;! bog05;l1tl0H;de; m1dwig,nry 4;an;ile selassFlle ber4m3rrison1;! 1;ford;id,mo09;ry;ast0iannis,o1;odwPtye;ergus0lorence nightinga08r1;an1ederic chopN;s,z;ff5m2nya,ustaXzeki1;el;eril lagasse,i1;le zatop1nem;ek;ie;a6e4i2octor w1rake;ho;ck w1ego maradoC;olf;g1mi lovaOnzel washingt0;as;l1nHrth vadR;ai lNt0;a8h5lint0o1thulhu;n1olio;an,fuci1;us;on;aucKop2ristian baMy1;na;in;millo,ptain beefhe4r1;dinal wols2son1;! palmF;ey;art;a8e5hatt,i3oHro1;ck,n1;te;ll g1ng crosby;atB;ck,nazir bhut2rtil,yon1;ce;to;nksy,rack ob1;ama;l 6r3shton kutch2vril lavig8yn ra1;nd;er;chimed2istot1;le;es;capo2paci1;no;ne\",Adjective:\"true¦0:AI;1:BS;2:BI;3:BA;4:A8;5:84;6:AV;7:AN;8:AF;9:7H;A:BQ;B:AY;C:BC;D:BH;E:9Y;aA2b9Ec8Fd7We79f6Ng6Eh61i4Xj4Wk4Tl4Im41n3Po36p2Oquart7Pr2Ds1Dt14uSvOwFye29;aMeKhIiHoF;man5oFrth7G;dADzy;despreB1n w97s86;acked1UoleF;!sa6;ather1PeFll o70ste1D;!k5;nt1Ist6Ate4;aHeGiFola5T;bBUce versa,gi3Lle;ng67rsa5R;ca1gBSluAV;lt0PnLpHrGsFttermoBL;ef9Ku3;b96ge1; Hb32pGsFtiAH;ca6ide d4R;er,i85;f52to da2;a0Fbeco0Hc0Bd04e02f01gu1XheaBGiXkn4OmUnTopp06pRrNsJtHus0wF;aFiel3K;nt0rra0P;app0eXoF;ld,uS;eHi37o5ApGuF;perv06spec39;e1ok9O;en,ttl0;eFu5;cogn06gul2RlGqu84sF;erv0olv0;at0en33;aFrecede0E;id,rallel0;am0otic0;aFet;rri0tF;ch0;nFq26vers3;sur0terFv7U;eFrupt0;st0;air,inish0orese98;mploy0n7Ov97xpF;ect0lain0;eHisFocume01ue;clFput0;os0;cid0rF;!a8Scov9ha8Jlyi8nea8Gprivileg0sMwF;aFei9I;t9y;hGircumcFonvin2U;is0;aFeck0;lleng0rt0;b20ppea85ssuGttend0uthorF;iz0;mi8;i4Ara;aLeIhoHip 25oGrF;anspare1encha1i2;geth9leADp notch,rpB;rny,ugh6H;ena8DmpGrFs6U;r49tia4;eCo8P;leFst4M;nt0;a0Dc09e07h06i04ki03l01mug,nobbi4XoVpRqueami4XtKuFymb94;bHccinAi generis,pFr5;erFre7N;! dup9b,vi70;du0li7Lp6IsFurb7J;eq9Atanda9X;aKeJi16o2QrGubboFy4Q;rn;aightFin5GungS; fFfF;or7V;adfa9Pri6;lwa6Ftu82;arHeGir6NlendBot Fry;on;c3Qe1S;k5se; call0lImb9phistic16rHuFviV;ndFth1B;proof;dBry;dFub6; o2A;e60ipF;pe4shod;ll0n d7R;g2HnF;ceEg6ist9;am3Se9;co1Zem5lfFn6Are7; suf4Xi43;aGholFient3A;ar5;rlFt4A;et;cr0me,tisfac7F;aOeIheumatoBiGoF;bu8Ztt7Gy3;ghtFv3; 1Sf6X;cJdu8PlInown0pro69sGtF;ard0;is47oF;lu2na1;e1Suc45;alcit8Xe1ondi2;bBci3mpa1;aSePicayu7laOoNrGuF;bl7Tnjabi;eKiIoF;b7VfGmi49pFxi2M;er,ort81;a7uD;maFor,sti7va2;!ry;ciDexis0Ima2CpaB;in55puli8G;cBid;ac2Ynt 3IrFti2;ma40tFv7W;!i3Z;i2YrFss7R;anoBtF; 5XiF;al,s5V;bSffQkPld OnMrLth9utKverF;!aIbMdHhGni75seas,t,wF;ei74rou74;a63e7A;ue;ll;do1Ger,si6A;d3Qg2Aotu5Z; bFbFe on o7g3Uli7;oa80;fashion0school;!ay; gua7XbFha5Uli7;eat;eHligGsF;ce7er0So1C;at0;diFse;a1e1;aOeNiMoGuF;anc0de; moEnHrthFt6V;!eFwe7L;a7Krn;chaGdescri7Iprof30sF;top;la1;ght5;arby,cessa4ighbor5wlyw0xt;k0usiaFv3;ti8;aQeNiLoHuF;dIltiF;facet0p6;deHlGnFot,rbBst;ochro4Xth5;dy;rn,st;ddle ag0nF;dbloZi,or;ag9diocEga,naGrFtropolit4Q;e,ry;ci8;cIgenta,inHj0Fkeshift,mmGnFri4Oscu61ver18;da5Dy;ali4Lo4U;!stream;abEho;aOeLiIoFumberi8;ngFuti1R;stan3RtF;erm,i4H;ghtGteraF;l,ry,te;heart0wei5O;ft JgFss9th3;al,eFi0M;nda4;nguBps0te5;apGind5noF;wi8;ut;ad0itte4uniW;ce co0Hgno6Mll0Cm04nHpso 2UrF;a2releF;va1; ZaYcoWdReQfOgrNhibi4Ri05nMoLsHtFvalu5M;aAeF;nDrdepe2K;a7iGolFuboI;ub6ve1;de,gF;nifica1;rdi5N;a2er;own;eriIiLluenVrF;ar0eq5H;pt,rt;eHiGoFul1O;or;e,reA;fiFpe26termi5E;ni2;mpFnsideCrreA;le2;ccuCdeq5Ene,ppr4J;fFsitu,vitro;ro1;mJpF;arHeGl15oFrop9;li2r11;n2LrfeA;ti3;aGeFi18;d4BnD;tuE;egGiF;c0YteC;al,iF;tiF;ma2;ld;aOelNiLoFuma7;a4meInHrrGsFur5;ti6;if4E;e58o3U; ma3GsF;ick;ghfalut2HspF;an49;li00pf33;i4llow0ndGrdFtM; 05coEworki8;sy,y;aLener44iga3Blob3oKrGuF;il1Nng ho;aFea1Fizzl0;cGtF;ef2Vis;ef2U;ld3Aod;iFuc2D;nf2R;aVeSiQlOoJrF;aGeFil5ug3;q43tf2O;gFnt3S;i6ra1;lk13oHrF; keeps,eFge0Vm9tu41;g0Ei2Ds3R;liF;sh;ag4Mowe4uF;e1or45;e4nF;al,i2;d Gmini7rF;ti6ve1;up;bl0lDmIr Fst pac0ux;oGreacF;hi8;ff;ed,ili0R;aXfVlTmQnOqu3rMthere3veryday,xF;aApIquisi2traHuF;be48lF;ta1;!va2L;edRlF;icF;it;eAstF;whi6; Famor0ough,tiE;rou2sui2;erGiF;ne1;ge1;dFe2Aoq34;er5;ficF;ie1;g9sF;t,ygF;oi8;er;aWeMiHoGrFue;ea4owY;ci6mina1ne,r31ti8ubQ;dact2Jfficult,m,sGverF;ge1se;creGePjoi1paCtF;a1inA;et,te; Nadp0WceMfiLgeneCliJmuEpeIreliAsGvoF;id,ut;pFtitu2ul1L;eCoF;nde1;ca2ghF;tf13;a1ni2;as0;facto;i5ngero0I;ar0Ce09h07i06l05oOrIuF;rmudgeon5stoma4teF;sy;ly;aIeHu1EystalF; cleFli7;ar;epy;fFv17z0;ty;erUgTloSmPnGrpoCunterclVveFy;rt;cLdJgr21jIsHtrF;aFi2;dic0Yry;eq1Yta1;oi1ug3;escenFuN;di8;a1QeFiD;it0;atoDmensuCpF;ass1SulF;so4;ni3ss3;e1niza1;ci1J;ockwiD;rcumspeAvil;eFintzy;e4wy;leGrtaF;in;ba2;diac,ef00;a00ePiLliJoGrFuck nak0;and new,isk,on22;gGldface,naF; fi05fi05;us;nd,tF;he;gGpartisFzarE;an;tiF;me;autifOhiNlLnHsFyoN;iWtselF;li8;eGiFt;gn;aFfi03;th;at0oF;v0w;nd;ul;ckwards,rF;e,rT; priori,b13c0Zd0Tf0Ng0Ihe0Hl09mp6nt06pZrTsQttracti0MuLvIwF;aGkF;wa1B;ke,re;ant garGeraF;ge;de;diIsteEtF;heFoimmu7;nt07;re;to4;hGlFtu2;eep;en;bitIchiv3roHtF;ifiFsy;ci3;ga1;ra4;ry;pFt;aHetizi8rF;oprF;ia2;llFre1;ed,i8;ng;iquFsy;at0e;ed;cohKiJkaHl,oGriFterX;ght;ne,of;li7;ne;ke,ve;olF;ic;ad;ain07gressiIi6rF;eeF;ab6;le;ve;fGraB;id;ectGlF;ue1;ioF;na2; JaIeGvF;erD;pt,qF;ua2;ma1;hoc,infinitum;cuCquiGtu3u2;al;esce1;ra2;erSjeAlPoNrKsGuF;nda1;e1olu2trF;aAuD;se;te;eaGuF;pt;st;aFve;rd;aFe;ze;ct;ra1;nt\",Pronoun:\"true¦elle,h3i2me,she,th0us,we,you;e0ou;e,m,y;!l,t;e,im\",Preposition:\"true¦aPbMcLdKexcept,fIinGmid,notwithstandiWoDpXqua,sCt7u4v2w0;/o,hereSith0;! whHin,oW;ersus,i0;a,s a vis;n1p0;!on;like,til;h1ill,oward0;!s;an,ereby,r0;ough0u;!oM;ans,ince,o that,uch G;f1n0ut;!to;!f;! 0to;effect,part;or,r0;om;espite,own,u3;hez,irca;ar1e0oBy;sides,tween;ri7;bo8cross,ft7lo6m4propos,round,s1t0;!op;! 0;a whole,long 0;as;id0ong0;!st;ng;er;ut\",SportsTeam:\"true¦0:18;1:1E;2:1D;3:14;a1Db15c0Sd0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Am01new UoRpKqueens parkJreal salt lake,sBt6utah jazz,vancouver whitecaps,w4yW;ashington 4h10;natio1Mredski2wizar0W;ampa bay 7e6o4;ronto 4ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasD;buccanee0ra0K;a8eattle 6porting kansas0Wt4; louis 4oke0V;c1Drams;marine0s4;eah13ounH;cramento Rn 4;antonio spu0diego 4francisco gJjose earthquak1;char08paB; ran07;a9h6ittsburgh 5ortland t4;imbe0rail blaze0;pirat1steele0;il4oenix su2;adelphia 4li1;eagl1philNunE;dr1;akland 4klahoma city thunder,rlando magic;athle0Lrai4;de0;england 8orleans 7york 4;g5je3knYme3red bul0Xy4;anke1;ian3;pelica2sain3;patrio3revolut4;ion;anchEeAi4ontreal impact;ami 8lwaukee b7nnesota 4;t5vi4;kings;imberwolv1wi2;rewe0uc0J;dolphi2heat,marli2;mphis grizz4ts;li1;a6eic5os angeles 4;clippe0dodFlaB;esterV; galaxy,ke0;ansas city 4nF;chiefs,roya0D; pace0polis col3;astr05dynamo,rocke3texa2;olden state warrio0reen bay pac4;ke0;allas 8e4i04od6;nver 6troit 4;lio2pisto2ti4;ge0;broncYnugge3;cowbo5maver4;icZ;ys;arEelLhAincinnati 8leveland 6ol4;orado r4umbus crew sc;api7ocki1;brow2cavalie0guar4in4;dia2;bengaVre4;ds;arlotte horAicago 4;b5cubs,fire,wh4;iteB;ea0ulQ;diff4olina panthe0; city;altimore Alackburn rove0oston 6rooklyn 4uffalo bilN;ne3;ts;cel5red4; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 4;brav1falco2h4;awA;ns;es;on villa,r4;os;c6di4;amondbac4;ks;ardi4;na4;ls\",Unit:\"true¦a07b04cXdWexVfTgRhePinYjoule0BkMlJmDnan08oCp9quart0Bsq ft,t7volts,w6y2ze3°1µ0;g,s;c,f,n;dVear1o0;ttR; 0s 0;old;att,b;erNon0;!ne02;ascals,e1i0;cXnt00;rcent,tJ;hms,unceY;/s,e4i0m²,²,³;/h,cro2l0;e0liK;!²;grLsR;gCtJ;it1u0;menQx;erPreP;b5elvins,ilo1m0notO;/h,ph,²;!byGgrEmCs;ct0rtzL;aJogrC;allonJb0ig3rB;ps;a0emtEl oz,t4;hrenheit,radG;aby9;eci3m1;aratDe1m0oulombD;²,³;lsius,nti0;gr2lit1m0;et0;er8;am7;b1y0;te5;l,ps;c2tt0;os0;econd1;re0;!s\",\"Noun|Gerund\":\"true¦0:3O;1:3M;2:3N;3:3D;4:32;5:2V;6:3E;7:3K;8:36;9:3J;A:3B;a3Pb37c2Jd27e23f1Vg1Sh1Mi1Ij1Gk1Dl18m13n11o0Wp0Pques0Sr0EsTtNunderMvKwFyDzB;eroi0oB;ni0o3P;aw2eB;ar2l3;aEed4hispe5i5oCrB;ap8est3i1;n0ErB;ki0r31;i1r2s9tc9;isualizi0oB;lunt1Vti0;stan4ta6;aFeDhin6iCraBy8;c6di0i2vel1M;mi0p8;aBs1;c9si0;l6n2s1;aUcReQhOiMkatKl2Wmo6nowJpeItFuCwB;ea5im37;b35f0FrB;fi0vB;e2Mi2J;aAoryt1KrCuB;d2KfS;etc9ugg3;l3n4;bCi0;ebBi0;oar4;gnBnAt1;a3i0;ip8oB;p8rte2u1;a1r27t1;hCo5reBulp1;a2Qe2;edu3oo3;i3yi0;aKeEi4oCuB;li0n2;oBwi0;fi0;aFcEhear7laxi0nDpor1sB;pon4tructB;r2Iu5;de5;or4yc3;di0so2;p8ti0;aFeacek20laEoCrBublis9;a1Teten4in1oces7;iso2siB;tio2;n2yi0;ckaAin1rB;ki0t1O;fEpeDrganiCvB;erco24ula1;si0zi0;ni0ra1;fe5;avi0QeBur7;gotia1twor6;aDeCi2oB;de3nito5;a2dita1e1ssaA;int0XnBrke1;ifUufactu5;aEeaDiBodAyi0;cen7f1mi1stB;e2i0;r2si0;n4ug9;iCnB;ea4it1;c6l3;ogAuB;dAgg3stif12;ci0llust0VmDnBro2;nova1sp0NterBven1;ac1vie02;agi2plo4;aDea1iCoBun1;l4w3;ki0ri0;nd3rB;roWvB;es1;aCene0Lli4rBui4;ee1ie0N;rde2the5;aHeGiDlCorBros1un4;e0Pmat1;ir1oo4;gh1lCnBs9;anZdi0;i0li0;e3nX;r0Zscina1;a1du01nCxB;erci7plo5;chan1di0ginB;ee5;aLeHiGoub1rCum8wB;el3;aDeCiB;bb3n6vi0;a0Qs7;wi0;rTscoDvi0;ba1coZlBvelo8;eCiB;ve5;ga1;nGti0;aVelebUhSlPoDrBur3yc3;aBos7yi0;f1w3;aLdi0lJmFnBo6pi0ve5;dDsCvinB;ci0;trBul1;uc1;muniDpB;lBo7;ai2;ca1;lBo5;ec1;c9ti0;ap8eaCimToBubT;ni0t9;ni0ri0;aBee5;n1t1;ra1;m8rCs1te5;ri0;vi0;aPeNitMlLoGrDuB;dge1il4llBr8;yi0;an4eat9oadB;cas1;di0;a1mEokB;i0kB;ee8;pi0;bi0;es7oa1;c9i0;gin2lonAt1;gi0;bysit1c6ki0tt3;li0;ki0;bando2cGdverti7gi0pproac9rgDssuCtB;trac1;mi0;ui0;hi0;si0;coun1ti0;ti0;ni0;ng\",PhrasalVerb:\"true¦0:92;1:96;2:8H;3:8V;4:8A;5:83;6:85;7:98;8:90;9:8G;A:8X;B:8R;C:8U;D:8S;E:70;F:97;G:8Y;H:81;I:7H;J:79;a9Fb7Uc6Rd6Le6Jf5Ig50h4Biron0j47k40l3Em31n2Yo2Wp2Cquiet Hr1Xs0KtZuXvacuu6QwNyammerBzK;ero Dip LonK;e0k0;by,ov9up;aQeMhLiKor0Mrit19;mp0n3Fpe0r5s5;ackAeel Di0S;aLiKn33;gh 3Wrd0;n Dr K;do1in,oJ;it 79k5lk Lrm 69sh Kt83v60;aw3do1o7up;aw3in,oC;rgeBsK;e 2herE;a00eYhViRoQrMuKypP;ckErn K;do1in,oJup;aLiKot0y 30;ckl7Zp F;ck HdK;e 5Y;n7Wp 3Es5K;ck MdLe Kghten 6me0p o0Rre0;aw3ba4do1in,up;e Iy 2;by,oG;ink Lrow K;aw3ba4in,up;ba4ov9up;aKe 77ll62;m 2r 5M;ckBke Llk K;ov9shit,u47;aKba4do1in,leave,o4Dup;ba4ft9pa69w3;a0Vc0Te0Mh0Ii0Fl09m08n07o06p01quar5GtQuOwK;earMiK;ngLtch K;aw3ba4o8K; by;cKi6Bm 2ss0;k 64;aReQiPoNrKud35;aigh2Det75iK;ke 7Sng K;al6Yup;p Krm2F;by,in,oG;c3Ln3Lr 2tc4O;p F;c3Jmp0nd LrKveAy 2O;e Ht 2L;ba4do1up;ar3GeNiMlLrKurB;ead0ingBuc5;a49it 6H;c5ll o3Cn 2;ak Fe1Xll0;a3Bber 2rt0und like;ap 5Vow Duggl5;ash 6Noke0;eep NiKow 6;cLp K;o6Dup;e 68;in,oK;ff,v9;de19gn 4NnKt 6Gz5;gKkE; al6Ale0;aMoKu5W;ot Kut0w 7M;aw3ba4f48oC;c2WdeEk6EveA;e Pll1Nnd Orv5tK; Ktl5J;do1foLin,o7upK;!on;ot,r5Z;aw3ba4do1in,o33up;oCto;al66out0rK;ap65ew 6J;ilAv5;aXeUiSoOuK;b 5Yle0n Kstl5;aLba4do1inKo2Ith4Nu5P;!to;c2Xr8w3;ll Mot LpeAuK;g3Ind17;a2Wf3Po7;ar8in,o7up;ng 68p oKs5;ff,p18;aKelAinEnt0;c6Hd K;o4Dup;c27t0;aZeYiWlToQrOsyc35uK;ll Mn5Kt K;aKba4do1in,oJto47up;pa4Dw3;a3Jdo1in,o21to45up;attleBess KiNop 2;ah2Fon;iLp Kr4Zu1Gwer 6N;do1in,o6Nup;nt0;aLuK;gEmp 6;ce u20y 6D;ck Kg0le 4An 6p5B;oJup;el 5NncilE;c53ir 39n0ss MtLy K;ba4oG; Hc2R;aw3ba4in,oJ;pKw4Y;e4Xt D;aLerd0oK;dAt53;il Hrrow H;aTeQiPoLuK;ddl5ll I;c1FnkeyMp 6uthAve K;aKdo1in,o4Lup;l4Nw3; wi4K;ss0x 2;asur5e3SlLss K;a21up;t 6;ke Ln 6rKs2Ax0;k 6ryA;do,fun,oCsure,up;a02eViQoLuK;ck0st I;aNc4Fg MoKse0;k Kse4D;aft9ba4do1forw37in56o0Zu46;in,oJ;d 6;e NghtMnLsKve 00;ten F;e 2k 2; 2e46;ar8do1in;aMt LvelK; oC;do1go,in,o7up;nEve K;in,oK;pKut;en;c5p 2sh LtchBughAy K;do1o59;in4Po7;eMick Lnock K;do1oCup;oCup;eLy K;in,up;l Ip K;aw3ba4do1f04in,oJto,up;aMoLuK;ic5mpE;ke3St H;c43zz 2;a01eWiToPuK;nLrrKsh 6;y 2;keLt K;ar8do1;r H;lKneErse3K;d Ke 2;ba4dKfast,o0Cup;ear,o1;de Lt K;ba4on,up;aw3o7;aKlp0;d Ml Ir Kt 2;fKof;rom;f11in,o03uW;cPm 2nLsh0ve Kz2P;at,it,to;d Lg KkerP;do1in,o2Tup;do1in,oK;ut,v9;k 2;aZeTive Rloss IoMrLunK; f0S;ab hold,in43ow 2U; Kof 2I;aMb1Mit,oLr8th1IuK;nd9;ff,n,v9;bo7ft9hQw3;aw3bKdo1in,oJrise,up,w3;a4ir2H;ar 6ek0t K;aLb1Fdo1in,oKr8up;ff,n,ut,v9;cLhKl2Fr8t,w3;ead;ross;d aKng 2;bo7;a0Ee07iYlUoQrMuK;ck Ke2N;ar8up;eLighten KownBy 2;aw3oG;eKshe27; 2z5;g 2lMol Krk I;aKwi20;bo7r8;d 6low 2;aLeKip0;sh0;g 6ke0mKrKtten H;e F;gRlPnNrLsKzzle0;h F;e Km 2;aw3ba4up;d0isK;h 2;e Kl 1T;aw3fPin,o7;ht ba4ure0;ePnLsK;s 2;cMd K;fKoG;or;e D;d04l 2;cNll Krm0t1G;aLbKdo1in,o09sho0Eth08victim;a4ehi2O;pa0C;e K;do1oGup;at Kdge0nd 12y5;in,o7up;aOi1HoNrK;aLess 6op KuN;aw3b03in,oC;gBwB; Ile0ubl1B;m 2;a0Ah05l02oOrLut K;aw3ba4do1oCup;ackBeep LoKy0;ss Dwd0;by,do1in,o0Uup;me NoLuntK; o2A;k 6l K;do1oG;aRbQforOin,oNtKu0O;hLoKrue;geth9;rough;ff,ut,v9;th,wK;ard;a4y;paKr8w3;rt;eaLose K;in,oCup;n 6r F;aNeLiK;ll0pE;ck Der Kw F;on,up;t 2;lRncel0rOsMtch LveE; in;o1Nup;h Dt K;doubt,oG;ry LvK;e 08;aw3oJ;l Km H;aLba4do1oJup;ff,n,ut;r8w3;a0Ve0MiteAl0Fo04rQuK;bblNckl05il0Dlk 6ndl05rLsKtMy FzzA;t 00;n 0HsK;t D;e I;ov9;anWeaUiLush K;oGup;ghQng K;aNba4do1forMin,oLuK;nd9p;n,ut;th;bo7lKr8w3;ong;teK;n 2;k K;do1in,o7up;ch0;arTg 6iRn5oPrNssMttlLunce Kx D;aw3ba4;e 6; ar8;e H;do1;k Dt 2;e 2;l 6;do1up;d 2;aPeed0oKurt0;cMw K;aw3ba4do1o7up;ck;k K;in,oC;ck0nk0stA; oQaNef 2lt0nd K;do1ov9up;er;up;r Lt K;do1in,oCup;do1o7;ff,nK;to;ck Pil0nMrgLsK;h D;ainBe D;g DkB; on;in,o7;aw3do1in,oCup;ff,ut;ay;ct FdQir0sk MuctionA; oG;ff;ar8o7;ouK;nd; o7;d K;do1oKup;ff,n;wn;o7up;ut\",ProperNoun:\"true¦aIbDc8dalhousHe7f5gosford,h4iron maiden,kirby,landsdowne,m2nis,r1s0wembF;herwood,paldiB;iel,othwe1;cgi0ercedes,issy;ll;intBudsB;airview,lorence,ra0;mpt9nco;lmo,uro;a1h0;arlt6es5risti;rl0talina;et4i0;ng;arb3e0;et1nt0rke0;ley;on;ie;bid,jax\",\"Person|Place\":\"true¦a8d6h4jordan,k3orlando,s1vi0;ctor9rgin9;a0ydney;lvador,mara,ntia4;ent,obe;amil0ous0;ton;arw2ie0;go;lexandr1ust0;in;ia\",LastName:\"true¦0:BR;1:BF;2:B5;3:BH;4:AX;5:9Y;6:B6;7:BK;8:B0;9:AV;A:AL;B:8Q;C:8G;D:7K;E:BM;F:AH;aBDb9Zc8Wd88e81f7Kg6Wh64i60j5Lk4Vl4Dm39n2Wo2Op25quispe,r1Ls0Pt0Ev03wTxSyKzG;aIhGimmerm6A;aGou,u;ng,o;khar5ytsE;aKeun9BiHoGun;koya32shiBU;!lG;diGmaz;rim,z;maGng;da,g52mo83sGzaC;aChiBV;iao,u;aLeJiHoGright,u;jcA5lff,ng;lGmm0nkl0sniewsC;kiB1liams33s3;bGiss,lt0;b,er,st0;a6Vgn0lHtG;anabe,s3;k0sh,tG;e2Non;aLeKiHoGukD;gt,lk5roby5;dHllalGnogr3Kr1Css0val3S;ba,ob1W;al,ov4;lasHsel8W;lJn dIrgBEsHzG;qu7;ilyEqu7siljE;en b6Aijk,yk;enzueAIverde;aPeix1VhKi2j8ka43oJrIsui,uG;om5UrG;c2n0un1;an,emblA7ynisC;dorAMlst3Km4rrAth;atch0i8UoG;mHrG;are84laci79;ps3sG;en,on;hirDkah9Mnaka,te,varA;a06ch01eYhUiRmOoMtIuHvGzabo;en9Jobod3N;ar7bot4lliv2zuC;aIeHoG;i7Bj4AyanAB;ele,in2FpheBvens25;l8rm0;kol5lovy5re7Tsa,to,uG;ng,sa;iGy72;rn5tG;!h;l71mHnGrbu;at9cla9Egh;moBo7M;aIeGimizu;hu,vchG;en8Luk;la,r1G;gu9infe5YmGoh,pulveA7rra5P;jGyG;on5;evi6iltz,miHneid0roed0uGwarz;be3Elz;dHtG;!t,z;!t;ar4Th8ito,ka4OlJnGr4saCto,unde19v4;ch7dHtGz;a5Le,os;b53e16;as,ihDm4Po0Y;aVeSiPoJuHyG;a6oo,u;bio,iz,sG;so,u;bKc8Fdrigue67ge10j9YmJosevelt,sItHux,wG;e,li6;a9Ch;enb4Usi;a54e4L;erts15i93;bei4JcHes,vGzzo;as,e9;ci,hards12;ag2es,iHut0yG;es,nol5N;s,t0;dImHnGsmu97v6C;tan1;ir7os;ic,u;aUeOhMiJoHrGut8;asad,if6Zochazk27;lishc2GpGrti72u10we76;e3Aov51;cHe45nG;as,to;as70hl0;aGillips;k,m,n6I;a3Hde3Wete0Bna,rJtG;ersHrovGters54;!a,ic;!en,on;eGic,kiBss3;i9ra,tz,z;h86k,padopoulIrk0tHvG;ic,l4N;el,te39;os;bMconn2Ag2TlJnei6PrHsbor6XweBzG;dem7Rturk;ella4DtGwe6N;ega,iz;iGof7Hs8I;vGyn1R;ei9;aSri1;aPeNiJoGune50ym2;rHvGwak;ak4Qik5otn66;odahl,r4S;cholsZeHkolGls4Jx3;ic,ov84;ls1miG;!n1;ils3mG;co4Xec;gy,kaGray2sh,var38;jiGmu9shiG;ma;a07c04eZiWoMuHyeG;rs;lJnIrGssoli6S;atGp03r7C;i,ov4;oz,te58;d0l0;h2lOnNo0RrHsGza1A;er,s;aKeJiIoz5risHtG;e56on;!on;!n7K;au,i9no,t5J;!lA;r1Btgome59;i3El0;cracFhhail5kkeHlG;l0os64;ls1;hmeJiIj30lHn3Krci0ssiGyer2N;!er;n0Po;er,j0;dDti;cartHlG;aughl8e2;hy;dQe7Egnu68i0jer3TkPmNnMrItHyG;er,r;ei,ic,su21thews;iHkDquAroqu8tinG;ez,s;a5Xc,nG;!o;ci5Vn;a5UmG;ad5;ar5e6Kin1;rig77s1;aVeOiLoJuHyG;!nch;k4nGo;d,gu;mbarGpe3Fvr4we;di;!nGu,yana2B;coln,dG;b21holm,strom;bedEfeKhIitn0kaHn8rGw35;oy;!j;m11tG;in1on1;bvGvG;re;iGmmy,ng,rs2Qu,voie,ws3;ne,t1F;aZeYh2iWlUnez50oNrJuHvar2woG;k,n;cerGmar68znets5;a,o34;aHem0isGyeziu;h23t3O;m0sni4Fus3KvG;ch4O;bay57ch,rh0Usk16vaIwalGzl5;czGsC;yk;cIlG;!cGen4K;huk;!ev4ic,s;e8uiveG;rt;eff0kGl4mu9nnun1;ucF;ll0nnedy;hn,llKminsCne,pIrHstra3Qto,ur,yGzl5;a,s0;j0Rls22;l2oG;or;oe;aPenOha6im14oHuG;ng,r4;e32hInHrge32u6vG;anD;es,ss3;anHnsG;en,on,t3;nesGs1R;en,s1;kiBnings,s1;cJkob4EnGrv0E;kDsG;en,sG;en0Ion;ks3obs2A;brahimDglesi5Nke5Fl0Qno07oneIshikHto,vanoG;u,v54;awa;scu;aVeOiNjaltal8oIrist50uG;!aGb0ghAynh;m2ng;a6dz4fIjgaa3Hk,lHpUrGwe,x3X;ak1Gvat;mAt;er,fm3WmG;ann;ggiBtchcock;iJmingw4BnHrGss;nand7re9;deGriks1;rs3;kkiHnG;on1;la,n1;dz4g1lvoQmOns0ZqNrMsJuIwHyG;asFes;kiB;g1ng;anHhiG;mo14;i,ov0J;di6p0r10t;ue;alaG;in1;rs1;aVeorgUheorghe,iSjonRoLrJuGw3;errGnnar3Co,staf3Ctierr7zm2;a,eG;ro;ayli6ee2Lg4iffithGub0;!s;lIme0UnHodGrbachE;e,m2;calvAzale0S;dGubE;bGs0E;erg;aj,i;bs3l,mGordaO;en7;iev3U;gnMlJmaIndFo,rGsFuthi0;cGdn0za;ia;ge;eaHlG;agh0i,o;no;e,on;aVerQiLjeldsted,lKoIrHuG;chs,entAji41ll0;eem2iedm2;ntaGrt8urni0wl0;na;emi6orA;lipIsHtzgeraG;ld;ch0h0;ovG;!ic;hatDnanIrG;arGei9;a,i;deY;ov4;b0rre1D;dKinsJriksIsGvaB;cob3GpGtra3D;inoza,osiQ;en,s3;te8;er,is3warG;ds;aXePiNjurhuMoKrisco15uHvorakG;!oT;arte,boHmitru,nn,rGt3C;and,ic;is;g2he0Omingu7nErd1ItG;to;us;aGcki2Hmitr2Ossanayake,x3;s,z; JbnaIlHmirGrvisFvi,w2;!ov4;gado,ic;th;bo0groot,jo6lHsilGvriA;va;a cruz,e3uG;ca;hl,mcevsCnIt2WviG;dGes,s;ov,s3;ielsGku22;!en;ki;a0Be06hRiobQlarkPoIrGunningh1H;awfo0RivGuz;elli;h1lKntJoIrGs2Nx;byn,reG;a,ia;ke,p0;i,rer2K;em2liB;ns;!e;anu;aOeMiu,oIristGu6we;eGiaG;ns1;i,ng,p9uHwGy;!dH;dGng;huJ;!n,onGu6;!g;kJnIpm2ttHudhGv7;ry;erjee,o14;!d,g;ma,raboG;rty;bJl0Cng4rG;eghetHnG;a,y;ti;an,ota1C;cerAlder3mpbeLrIstGvadi0B;iGro;llo;doHl0Er,t0uGvalho;so;so,zo;ll;a0Fe01hYiXlUoNrKuIyG;rLtyG;qi;chan2rG;ke,ns;ank5iem,oGyant;oks,wG;ne;gdan5nIruya,su,uchaHyKziG;c,n5;rd;darGik;enG;ko;ov;aGond15;nco,zG;ev4;ancFshw16;a08oGuiy2;umGwmG;ik;ckRethov1gu,ktPnNrG;gJisInG;ascoGds1;ni;ha;er,mG;anG;!n;gtGit7nP;ss3;asF;hi;er,hG;am;b4ch,ez,hRiley,kk0ldw8nMrIshHtAu0;es;ir;bInHtlGua;ett;es,i0;ieYosa;dGik;a9yoG;padhyG;ay;ra;k,ng;ic;bb0Acos09d07g04kht05lZnPrLsl2tJyG;aHd8;in;la;chis3kiG;ns3;aImstro6sl2;an;ng;ujo,ya;dJgelHsaG;ri;ovG;!a;ersJov,reG;aGjEws;ss1;en;en,on,s3;on;eksejEiyEmeiIvG;ar7es;ez;da;ev;arwHuilG;ar;al;ams,l0;er;ta;as\",Ordinal:\"true¦eBf7nin5s3t0zeroE;enDhir1we0;lfCn7;d,t3;e0ixt8;cond,vent7;et0th;e6ie7;i2o0;r0urt3;tie4;ft1rst;ight0lev1;e0h,ie1;en0;th\",Cardinal:\"true¦bEeBf5mEnine7one,s4t0zero;en,h2rDw0;e0o;lve,n5;irt6ousands,ree;even2ix2;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illions\",Multiple:\"true¦b3hundred,m3qu2se1t0;housand,r2;pt1xt1;adr0int0;illion\",City:\"true¦0:74;1:61;2:6G;3:6J;4:5S;a68b53c4Id48e44f3Wg3Hh39i31j2Wk2Fl23m1Mn1Co19p0Wq0Ur0Os05tRuQvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3H;greb,nzib5G;ang2e5okoha3Sunfu;katerin3Hrev0;a5n0Q;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1L;hi5Zkl3A;l63xford;aw;a8e6i5ladivost5Molgogr6L;en3lni6S;ni22r5;o3saill4N;lenc4Wncouv3Sr3ughn;lan bat1Crumqi,trecht;aFbilisi,eEheDiBo9r7u5;l21n63r5;in,ku;i5ondh62;es51poli;kyo,m2Zron1Pulo5;n,uS;an5jua3l2Tmisoa6Bra3;j4Tshui; hag62ssaloni2H;gucigal26hr0l av1U;briz,i6llinn,mpe56ng5rtu,shk2R;i3Esh0;an,chu1n0p2Eyu0;aEeDh8kopje,owe1Gt7u5;ra5zh4X;ba0Ht;aten is55ockholm,rasbou67uttga2V;an8e6i5;jiazhua1llo1m5Xy0;f50n5;ya1zh4H;gh3Kt4Q;att45o1Vv44;cramen16int ClBn5o paulo,ppo3Rrajevo; 7aa,t5;a 5o domin3E;a3fe,m1M;antonio,die3Cfrancisco,j5ped3Nsalvad0J;o5u0;se;em,t lake ci5Fz25;lou58peters24;a9e8i6o5;me,t59;ga,o5yadh;! de janei3F;cife,ims,nn3Jykjavik;b4Sip4lei2Inc2Pwalpindi;ingdao,u5;ez2i0Q;aFeEhDiCo9r7u6yong5;ya1;eb59ya1;a5etor3M;g52to;rt5zn0; 5la4Co;au prin0Melizabe24sa03;ls3Prae5Atts26;iladelph3Gnom pe1Aoenix;ki1tah tik3E;dua,lerYnaji,r4Ot5;na,r32;ak44des0Km1Mr6s5ttawa;a3Vlo;an,d06;a7ew5ing2Fovosibir1Jyc; 5cast36;del24orlea44taip14;g8iro4Wn5pl2Wshv33v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0W;aEeCi9o6u5;mb2Ani26sc3Y;gadishu,nt6s5;c13ul;evideo,pelli1Rre2Z;ami,l6n14s5;kolc,sissauga;an,waukee;cca,d5lbour2Mmph41ndo1Cssi3;an,ell2Xi3;cau,drAkass2Sl9n8r5shh4A;aca6ib5rakesh,se2L;or;i1Sy;a4EchFdal0Zi47;mo;id;aDeAi8o6u5vSy2;anMckn0Odhia3;n5s angel26;d2g bea1N;brev2Be3Lma5nz,sb2verpo28;!ss27; ma39i5;c5pzig;est16; p6g5ho2Wn0Cusan24;os;az,la33;aHharFiClaipeBo9rak0Du7y5;iv,o5;to;ala lump4n5;mi1sh0;hi0Hlka2Xpavog4si5wlo2;ce;da;ev,n5rkuk;gst2sha5;sa;k5toum;iv;bHdu3llakuric0Qmpa3Fn6ohsiu1ra5un1Iwaguc0Q;c0Pj;d5o,p4;ah1Ty;a7e6i5ohannesV;l1Vn0;dd36rusalem;ip4k5;ar2H;bad0mph1OnArkutUs7taXz5;mir,tapala5;pa;fah0l6tanb5;ul;am2Zi2H;che2d5;ianap2Mo20;aAe7o5yder2W; chi mi5ms,nolulu;nh;f6lsin5rakli2;ki;ei;ifa,lifax,mCn5rb1Dva3;g8nov01oi;aFdanEenDhCiPlasgBo9raz,u5;a5jr23;dal6ng5yaquil;zh1J;aja2Oupe;ld coa1Bthen5;bu2S;ow;ent;e0Uoa;sk;lw7n5za;dhi5gt1E;nag0U;ay;aisal29es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Pl paso;in5mont2;bur5;gh;aBe8ha0Xisp4o7resd0Lu5;b5esseldorf,nkirk,rb0shanbe;ai,l0I;ha,nggu0rtmu13;hradSl6nv5troit;er;hi;donghIe6k09l5masc1Zr es sala1KugavpiY;i0lU;gu,je2;aJebu,hAleve0Vo5raio02uriti1Q;lo7n6penhag0Ar5;do1Ok;akKst0V;gUm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;ng5ttogr14;ch8sha,zh07;gliari,i9lga8mayenJn6pe town,r5tanO;acCdiff;ber1Ac5;un;ry;ro;aWeNhKirmingh0WoJr9u5;chareTdapeTenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil8tisla7zzav5;il5;le;va;ia;goZst2;op6ubaneshw5;ar;al;iCl9ng8r5;g6l5n;in;en;aluru,hazi;fa6grade,o horizon5;te;st;ji1rut;ghd0BkFn9ot8r7s6yan n4;ur;el,r07;celo3i,ranquil09;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a05b02cc01ddis aba00gartaZhmedXizawl,lSmPnHqa00rEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a8c5kaOtwerp;hora6o3;na;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 7buquerq6eppo,giers,ma5;ty;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",Region:\"true¦0:2O;1:2L;2:2U;3:2F;a2Sb2Fc21d1Wes1Vf1Tg1Oh1Ki1Fj1Bk16l13m0Sn09o07pYqVrSsJtEuBverAw6y4zacatec2W;akut0o0Fu4;cat1k09;a5est 4isconsin,yomi1O;bengal,virgin0;rwick3shington4;! dc;acruz,mont;dmurt0t4;ah,tar4; 2Pa12;a6e5laxca1Vripu21u4;scaEva;langa2nnessee,x2J;bas10m4smQtar29;aulip2Hil nadu;a9elang07i7o5taf16u4ylh1J;ff02rr09s1E;me1Gno1Uuth 4;cZdY;ber0c4kkim,naloa;hu1ily;n5rawak,skatchew1xo4;ny; luis potosi,ta catari2;a4hodeA;j4ngp0C;asth1shahi;ingh29u4;e4intana roo;bec,en6retaro;aAe6rince edward4unjab; i4;sl0G;i,n5r4;ak,nambu0F;a0Rnsylv4;an0;ha0Pra4;!na;axa0Zdisha,h4klaho21ntar4reg7ss0Dx0I;io;aLeEo6u4;evo le4nav0X;on;r4tt18va scot0;f9mandy,th4; 4ampton3;c6d5yo4;rk3;ako1O;aroli2;olk;bras1Nva0Dw4; 6foundland4;! and labrad4;or;brunswick,hamp3jers5mexiTyork4;! state;ey;galPyarit;aAeghala0Mi6o4;nta2r4;dov0elos;ch6dlanDn5ss4zor11;issippi,ouri;as geraPneso18;ig1oac1;dhy12harasht0Gine,lac07ni5r4ssachusetts;anhao,i el,ylG;p4toba;ur;anca3e4incoln3ouisI;e4iR;ds;a6e5h4omi;aka06ul2;dah,lant1ntucky,ra01;bardino,lmyk0ns0Qr4;achay,el0nata0X;alis6har4iangxi;kh4;and;co;daho,llino7n4owa;d5gush4;et0;ia2;is;a6ert5i4un1;dalFm0D;ford3;mp3rya2waii;ansu,eorg0lou7oa,u4;an4izhou,jarat;ajuato,gdo4;ng;cester3;lori4uji1;da;sex;ageUe7o5uran4;go;rs4;et;lawaMrby3;aFeaEh9o4rim08umbr0;ahui7l6nnectic5rsi4ventry;ca;ut;i03orado;la;e5hattisgarh,i4uvash0;apRhuahua;chn5rke4;ss0;ya;ra;lGm4;bridge3peche;a9ihar,r8u4;ck4ryat0;ingham3;shi4;re;emen,itish columb0;h0ja cal8lk7s4v7;hkorto4que;st1;an;ar0;iforn0;ia;dygHguascalientes,lBndhr9r5ss4;am;izo2kans5un4;achal 7;as;na;a 4;pradesh;a6ber5t4;ai;ta;ba5s4;ka;ma;ea\",Place:\"true¦0:4T;1:4V;2:44;3:4B;4:3I;a4Eb3Gc2Td2Ge26f25g1Vh1Ji1Fk1Cl14m0Vn0No0Jp08r04sTtNuLvJw7y5;a5o0Syz;kut1Bngtze;aDeChitBi9o5upatki,ycom2P;ki26o5;d5l1B;b3Ps5;i4to3Y;c0SllowbroCn5;c2Qgh2;by,chur1P;ed0ntw3Gs22;ke6r3St5;erf1f1; is0Gf3V;auxha3Mirgin is0Jost5;ok;laanbaatar,pto5xb3E;n,wn;a9eotihuac43h7ive49o6ru2Nsarskoe selo,u5;l2Dzigo47;nto,rquay,tt2J;am3e 5orn3E;bronx,hamptons;hiti,j mah0Iu1N;aEcotts bluff,eCfo,herbroQoApring9t7u5yd2F;dbu1Wn5;der03set3B;aff1ock2Nr5;atf1oud;hi37w24;ho,uth5; 1Iam1Zwo3E;a5i2O;f2Tt0;int lawrence riv3Pkhal2D;ayleigh,ed7i5oc1Z;chmo1Eo gran4ver5;be1Dfr09si4; s39cliffe,hi2Y;aCe9h8i5ompeii,utn2;c6ne5tcai2T; 2Pc0G;keri13t0;l,x;k,lh2mbr6n5r2J;n1Hzance;oke;cif38pahanaumokuak30r5;k5then0;si4w1K;ak7r6x5;f1l2X;ange county,d,f1inoco;mTw1G;e8i1Uo5;r5tt2N;th5wi0E; 0Sam19;uschwanste1Pw5; eng6a5h2market,po36;rk;la0P;a8co,e6i5uc;dt1Yll0Z;adow5ko0H;lands;chu picchu,gad2Ridsto1Ql8n7ple6r5;kh2; g1Cw11;hatt2Osf2B;ibu,t0ve1Z;a8e7gw,hr,in5owlOynd02;coln memori5dl2C;al;asi4w3;kefr7mbe1On5s,x;ca2Ig5si05;f1l27t0;ont;azan kreml14e6itchen2Gosrae,rasnoyar5ul;sk;ns0Hs1U;ax,cn,lf1n6ps5st;wiN;d5glew0Lverness;ian27ochina;aDeBi6kg,nd,ov5unti2H;d,enweep;gh6llc5;reL;bu03l5;and5;!s;r5yw0C;ef1tf1;libu24mp6r5stings;f1lem,row;stead,t0;aDodavari,r5uelph;avenAe5imsS;at 8en5; 6f1Fwi5;ch;acr3vall1H;brita0Flak3;hur5;st;ng3y villa0W;airhavHco,ra;aAgli9nf17ppi8u7ver6x5;et1Lf1;glad3t0;rope,st0;ng;nt0;rls1Ls5;t 5;e5si4;nd;aCe9fw,ig8o7ryd6u5xb;mfri3nstab00rh2tt0;en;nca18rcKv19wnt0B;by;n6r5vonpo1D;ry;!h2;nu8r5;l6t5;f1moor;ingt0;be;aLdg,eIgk,hClBo5royd0;l6m5rnwa0B;pt0;c7lingw6osse5;um;ood;he0S;earwat0St;a8el6i5uuk;chen itza,mney ro07natSricahua;m0Zt5;enh2;mor5rlottetPth2;ro;dar 5ntervilA;breaks,faZg5;rove;ld9m8r5versh2;lis6rizo pla5;in;le;bLpbellf1;weQ;aZcn,eNingl01kk,lackLolt0r5uckV;aGiAo5;ckt0ok5wns cany0;lyn,s5;i4to5;ne;de;dge6gh5;am,t0;n6t5;own;or5;th;ceb6m5;lNpt0;rid5;ge;bu5pool,wa8;rn;aconsfEdf1lBr9verly7x5;hi5;ll; hi5;lls;wi5;ck; air,l5;ingh2;am;ie5;ld;ltimore,rnsl6tters5;ea;ey;bLct0driadic,frica,ginJlGmFn9rc8s7tl6yleOzor3;es;!ant8;hcroft,ia; de triomphe,t6;adyr,ca8dov9tarct5;ic5; oce5;an;st5;er;ericas,s;be6dersh5hambra,list0;ot;rt0;cou5;rt;bot7i5;ngd0;on;sf1;ord\",Country:\"true¦0:38;1:2L;2:3B;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om2pZqat1KrXsKtCu7v5wal4yemTz3;a25imbabwe;es,lis and futu2Y;a3enezue32ietnam;nuatu,tican city;gTk6nited 4ruXs3zbeE; 2Ca,sr;arab emirat0Kkingdom,states3;! of am2Y;!raiV;a8haCimor les0Co7rinidad 5u3;nis0rk3valu;ey,me2Zs and caic1V;and t3t3;oba1L;go,kel10nga;iw2ji3nz2T;ki2V;aDcotl1eCi9lov8o6pa2Dri lanka,u5w3yr0;az3edAitzerl1;il1;d2riname;lomon1Xmal0uth 3;afr2KkMsud2;ak0en0;erra leoFn3;gapo1Yt maart3;en;negLrb0ychellZ;int 3moa,n marino,udi arab0;hele26luc0mart21;epublic of ir0Eom2Euss0w3;an27;a4eIhilippinUitcairn1Mo3uerto riN;l1rtugF;ki2Dl4nama,pua new0Vra3;gu7;au,esti3;ne;aBe9i7or3;folk1Ith4w3;ay; k3ern mariana1D;or0O;caragua,ger3ue;!ia;p3ther1Aw zeal1;al;mib0u3;ru;a7exi6icro0Bo3yanm06;ldova,n3roc5zambA;a4gol0t3;enegro,serrat;co;cAdagasc01l7r5urit4yot3;te;an0i16;shall0Xtin3;ique;a4div3i,ta;es;wi,ys0;ao,ed02;a6e5i3uxembourg;b3echtenste12thu1G;er0ya;ban0Isotho;os,tv0;azakh1Fe4iriba04o3uwait,yrgyz1F;rXsovo;eling0Knya;a3erG;ma16p2;c7nd6r4s3taly,vory coast;le of m2rael;a3el1;n,q;ia,oJ;el1;aiTon3ungary;dur0Ng kong;aBermany,ha0QibraltAre8u3;a6ern5inea3ya0P;! biss3;au;sey;deloupe,m,tema0Q;e3na0N;ce,nl1;ar;bUmb0;a7i6r3;ance,ench 3;guia0Epoly3;nes0;ji,nl1;lklandUroeU;ast tim7cu6gypt,l salv6ngl1quatorial4ritr5st3thiop0;on0; guin3;ea;ad3;or;enmark,jibou5ominica4r con3;go;!n C;ti;aBentral african Ah8o5roat0u4yprRzech3; 9ia;ba,racao;c4lo3morQngo brazzaville,okGsta r04te de ivoiL;mb0;osE;i3ristmasG;le,na;republic;m3naUpe verde,ymanA;bod0ero3;on;aGeDhut2o9r5u3;lgar0r3;kina faso,ma,undi;azil,itish 3unei;virgin3; is3;lands;liv0nai5snia and herzegoviHtswaHuvet3; isl1;and;re;l3n8rmuG;ar3gium,ize;us;h4ngladesh,rbad3;os;am4ra3;in;as;fghaGlDmBn6r4ustr3zerbaij2;al0ia;genti3men0uba;na;dorra,g5t3;arct7igua and barbu3;da;o3uil3;la;er3;ica;b3ger0;an0;ia;ni3;st2;an\",FirstName:\"true¦aTblair,cQdOfrancoZgabMhinaLilya,jHkClBm6ni4quinn,re3s0;h0umit,yd;ay,e0iloh;a,lby;g9ne;co,ko0;!s;a1el0ina,org6;!okuhF;ds,naia,r1tt0xiB;i,y;ion,lo;ashawn,eif,uca;a3e1ir0rM;an;lsFn0rry;dall,yat5;i,sD;a0essIie,ude;i1m0;ie,mG;me;ta;rie0y;le;arcy,ev0;an,on;as1h0;arl8eyenne;ey,sidy;drien,kira,l4nd1ubr0vi;ey;i,r0;a,e0;a,y;ex2f1o0;is;ie;ei,is\",WeekDay:\"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",Month:\"true¦dec0february,july,nov0octo1sept0;em0;ber\",Date:\"true¦ago,on4som4t1week0yesterd5; end,ends;mr1o0;d2morrow;!w;ed0;ay\",Duration:\"true¦centurAd8h7m5q4se3w1y0;ear8r8;eek0k7;!end,s;ason,c5;tr,uarter;i0onth3;llisecond2nute2;our1r1;ay0ecade0;!s;ies,y\",FemaleName:\"true¦0:J7;1:JB;2:IJ;3:IK;4:J1;5:IO;6:JS;7:JO;8:HB;9:JK;A:H4;B:I2;C:IT;D:JH;E:IX;F:BA;G:I4;aGTbFLcDRdD0eBMfB4gADh9Ti9Gj8Dk7Cl5Wm48n3Lo3Hp33qu32r29s15t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof3;e3Sf3la,ra;h2iKlIna,ynH;ab,ep;da,ma;da,h2iHra;nab;aKeJi0FolB7uIvH;et8onDP;i0na;le0sen3;el,gm3Hn,rGLs8W;aoHme0nyi;m5XyAD;aMendDZhiDGiH;dele9lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;ck84kIl8oleAviH;anFenJ4;ky,toriBK;da,lA8rHs0;a,nHoniH9;a,iFR;leHnesH9;nILrH;i1y;g9rHs6xHA;su5te;aYeUhRiNoLrIuHy2;i,la;acJ3iHu0J;c3na,sH;hFta;nHr0F;iFya;aJffaEOnHs6;a,gtiH;ng;!nFSra;aIeHomasi0;a,l9Oo8Ares1;l3ndolwethu;g9Fo88rIssH;!a,ie;eHi,ri7;sa,za;bOlMmKnIrHs6tia0wa0;a60yn;iHya;a,ka,s6;arFe2iHm77ra;!ka;a,iH;a,t6;at6it6;a0Ecarlett,e0AhWiSkye,neza0oQri,tNuIyH;bIGlvi1;ha,mayIJniAsIzH;an3Net8ie,y;anHi7;!a,e,nH;aCe;aIeH;fan4l5Dphan6E;cI5r5;b3fiAAm0LnHphi1;d2ia,ja,ya;er2lJmon1nIobh8QtH;a,i;dy;lETv3;aMeIirHo0risFDy5;a,lDM;ba,e0i5lJrH;iHr6Jyl;!d8Ifa;ia,lDZ;hd,iMki2nJrIu0w0yH;la,ma,na;i,le9on,ron,yn;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye82vH;da,inj;e0ife;en1i0ma;anA9bLd5Oh1SiBkKlJmInd2rHs6vannaC;aCi0;ant6i2;lDOma,ome;ee0in8Tu2;in1ri0;a05eZhXiUoHuthDM;bScRghQl8LnPsJwIxH;anB3ie,y;an,e0;aIeHie,lD;ann7ll1marDGtA;!lHnn1;iHyn;e,nH;a,dF;da,i,na;ayy8G;hel67io;bDRerAyn;a,cIkHmas,nFta,ya;ki,o;h8Xki;ea,iannGMoH;da,n1P;an0bJemFgi0iInHta,y0;a8Bee;han86na;a,eH;cHkaC;a,ca;bi0chIe,i0mo0nHquETy0;di,ia;aERelHiB;!e,le;een4ia0;aPeOhMiLoJrHute6A;iHudenCV;scil3LyamvaB;lHrt3;i0ly;a,paluk;ilome0oebe,ylH;is,lis;ggy,nelope,r5t2;ige,m0VnKo5rvaDMtIulH;a,et8in1;ricHt4T;a,e,ia;do2i07;ctav3dIfD3is6ksa0lHphD3umC5yunbileg;a,ga,iv3;eHvAF;l3t8;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aCeEma;ll1mi;aNcLhariBQkKlaJna,sHta,vi;anHha;ur;!y;a,iDZki;hoGk9YolH;a,e4P;!mh;hir,lHna,risDEsreE;!a,iDDlBV;asuMdLh3i6Dl5nKomi7rgEVtH;aHhal4;lHs6;i1ya;cy,et8;e9iF0ya;nngu2X;a0Ackenz4e02iMoJrignayani,uriDJyH;a,rH;a,iOlNna,tG;bi0i2llBJnH;a,iH;ca,ka,qD9;a,cUdo4ZkaTlOmi,nMrItzi,yH;ar;aJiIlH;anET;am;!l,nB;dy,eHh,n4;nhGrva;aKdJe0iCUlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5DgNi,lKrH;edi7AiIjem,on,yH;em,l;em,sCG;an4iHliCF;nHsCJ;a,da;!an,han;b09cASd07e,g05ha,i04ja,l02n00rLsoum5YtKuIv84xBKyHz4;bell,ra,soBB;d7rH;a,eE;h8Gild1t4;a,cUgQiKjor4l7Un4s6tJwa,yH;!aHbe6Xja9lAE;m,nBL;a,ha,in1;!aJbCGeIja,lDna,sHt63;!a,ol,sa;!l1D;!h,mInH;!a,e,n1;!awit,i;arJeIie,oHr48ueri8;!t;!ry;et46i3B;el4Xi7Cy;dHon,ue5;akranAy;ak,en,iHlo3S;a,ka,nB;a,re,s4te;daHg4;!l3E;alDd4elHge,isDJon0;ei9in1yn;el,le;a0Ne0CiXoQuLyH;d3la,nH;!a,dIe2OnHsCT;!a,e2N;a,sCR;aD4cJel0Pis1lIna,pHz;e,iA;a,u,wa;iHy;a0Se,ja,l2NnB;is,l1UrItt1LuHvel4;el5is1;aKeIi7na,rH;aADi7;lHn1tA;ei;!in1;aTbb9HdSepa,lNnKsJvIzH;!a,be5Ret8z4;!ia;a,et8;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lH;iHy;aA8e;!aH;!nF;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx93y5;iHt4;c3t3;e2PlCO;la,nHra;a,ie,o2;a,or1;a,gh,laH;!ni;!h,nH;a,d2e,n5V;cOdon9DiNkes6mi9Gna,rMtJurIvHxmi,y5;ern1in3;a,e5Aie,yn;as6iIoH;nya,ya;fa,s6;a,isA9;a,la;ey,ie,y;a04eZhXiOlASoNrJyH;lHra;a,ee,ie;istHy6I;a,en,iIyH;!na;!e,n5F;nul,ri,urtnB8;aOerNlB7mJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stE;!na,ra;aHei2ongordzol;dij1w5;el7UiKjsi,lJnIrH;a,i,ri;d2na,za;ey,i,lBLs4y;ra,s6;biAcARdiat7MeBAiSlQmPnyakuma1DrNss6NtKviAyH;!e,lH;a,eH;e,i8T;!a6HeIhHi4TlDri0y;ar8Her8Hie,leErBAy;!lyn8Ori0;a,en,iHl5Xoli0yn;!ma,nFs95;a5il1;ei8Mi,lH;e,ie;a,tl6O;a0AeZiWoOuH;anMdLlHst88;es,iH;a8NeHs8X;!n9tH;!a,te;e5Mi3My;a,iA;!anNcelDdMelGhan7VleLni,sIva0yH;a,ce;eHie;fHlDph7Y;a,in1;en,n1;i7y;!a,e,n45;lHng;!i1DlH;!i1C;anNle0nKrJsH;i8JsH;!e,i8I;i,ri;!a,elGif2CnH;a,et8iHy;!e,f2A;a,eJiInH;a,eIiH;e,n1;!t8;cMda,mi,nIque4YsminFvie2y9zH;min7;a7eIiH;ce,e,n1s;!lHs82t0F;e,le;inIk6HlDquelH;in1yn;da,ta;da,lRmPnOo0rNsIvaHwo0zaro;!a0lu,na;aJiIlaHob89;!n9R;do2;belHdo2;!a,e,l3B;a7Ben1i0ma;di2es,gr72ji;a9elBogH;en1;a,e9iHo0se;a0na;aSeOiJoHus7Kyacin2C;da,ll4rten24snH;a,i9U;lImaH;ri;aIdHlaI;a,egard;ry;ath1BiJlInrietArmi9sH;sa,t1A;en2Uga,mi;di;bi2Fil8MlNnMrJsItHwa,yl8M;i5Tt4;n60ti;iHmo51ri53;etH;!te;aCnaC;a,ey,l4;a02eWiRlPoNrKunJwH;enHyne1R;!dolD;ay,el;acieIetHiselB;a,chE;!la;ld1CogooH;sh;adys,enHor3yn2K;a,da,na;aKgi,lIna,ov8EselHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald5Si,m3Etrud7;et8i4X;a,eHna;s29vieve;ma;bIle,mHrnet,yG;al5Si5;iIrielH;a,l1;!ja;aTeQiPlorOoz3rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0P;n1s66;!ca;a,enc3;en,o0;lIn0rnH;anB;ec3ic3;jr,nArKtHy7;emIiHma,oumaA;ha,ma,n;eh;ah,iBrah,za0;cr4Rd0Re0Qi0Pk0Ol07mXn54rUsOtNuMvHwa;aKelIiH;!e,ta;inFyn;!a;!ngel4V;geni1ni47;h5Yien9ta;mLperanKtH;eIhHrel5;er;l31r7;za;a,eralB;iHma,ne4Lyn;cHka,n;a,ka;aPeNiKmH;aHe21ie,y;!li9nuH;elG;lHn1;e7iHy;a,e,ja;lHrald;da,y;!nue5;aWeUiNlMma,no2oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c3da,e,f,nMsJzaH;!betHveA;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a,i;!in1na;ate1Rta;leEs6;vi;eIiHna,wi0;e,th;l,n;aYeMh3iLjeneKoH;lor5Vminiq4Ln3FrHtt4;a,eEis,la,othHthy;ea,y;ba;an09naCon9ya;anQbPde,eOiMlJmetr3nHsir5M;a,iH;ce,se;a,iIla,orHphi9;es,is;a,l6F;dHrdH;re;!d5Ena;!b2ForaCraC;a,d2nH;!a,e;hl3i0l0GmNnLphn1rIvi1WyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,et8iH;!ca,el1Aka,z;arHia;is;a0Re0Nh04i02lUoJristIynH;di,th3;al,i0;lPnMrIurH;tn1D;aJd2OiHn2Ori9;!nH;a,e,n1;!l4;cepci5Cn4sH;tanHuelo;ce,za;eHleE;en,t8;aJeoIotH;il54;!pat2;ir7rJudH;et8iH;a,ne;a,e,iH;ce,sZ;a2er2ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Sen,iHy;an1e,n1;deJlseIrH;!i7yl;a,y;li9;nMrH;isKlImH;ai9;a,eHot8;n1t8;!sa;d2elGtH;al,elG;cIlH;es8i47;el3ilH;e,ia,y;itlYlXmilWndVrMsKtHy5;aIeIhHri0;er1IleErDy;ri0;a38sH;a37ie;a,iOlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eIie,otHy;a,ta;ne,y;na,s1X;a0Ii0I;a,e,l1;isAl4;in,yn;a0Ke02iZlXoUrH;andi7eRiJoIyH;an0nn;nwDoke;an3HdgMgiLtH;n31tH;!aInH;ey,i,y;ny;d,t8;etH;!t7;an0e,nH;da,na;bbi7glarIlo07nH;iAn4;ka;ancHythe;a,he;an1Clja0nHsm3M;iAtH;ou;aWcVlinUniArPssOtJulaCvH;!erlH;ey,y;hJsy,tH;e,iHy7;e,na;!anH;ie,y;!ie;nItHyl;ha,ie;adIiH;ce;et8i9;ay,da;ca,ky;!triH;ce,z;rbJyaH;rmH;aa;a2o2ra;a2Ub2Od25g21i1Sj5l18m0Zn0Boi,r06sWtVuPvOwa,yIzH;ra,u0;aKes6gJlIn,seH;!l;in;un;!nH;a,na;a,i2K;drLguJrIsteH;ja;el3;stH;in1;a,ey,i,y;aahua,he0;hIi2Gja,miAs2DtrH;id;aMlIraqHt21;at;eIi7yH;!n;e,iHy;gh;!nH;ti;iJleIo6piA;ta;en,n1t8;aHelG;!n1J;a01dje5eZgViTjRnKohito,toHya;inet8nH;el5ia;te;!aKeIiHmJ;e,ka;!mHtt7;ar4;!belIliHmU;sa;!l1;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tH;a,te;!bImHstasiMya;ar3;el;aLberKeliJiHy;e,l3naH;!ta;a,ja;!ly;hGiIl3nB;da;a,ra;le;aWba,ePiMlKthJyH;a,c3sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c3is6jaKksaKna,sJxH;aHia;!nd2;ia,saH;nd2;ra;ia;i0nIyH;ah,na;a,is,naCoud;la;c6da,leEmNnLsH;haClH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lDsH;on;yn;!lH;i9yn;ne;aKbIiHrL;!e,gaK;ey,i7y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",Honorific:\"true¦director1field marsh2lieutenant1rear0sergeant major,vice0; admir1; gener0;al\",\"Adj|Gerund\":\"true¦0:3F;1:3H;2:31;3:2X;4:35;5:33;6:3C;7:2Z;8:36;9:29;a33b2Tc2Bd1Te1If19g12h0Zi0Rl0Nm0Gnu0Fo0Ap04rYsKtEuBvAw1Ayiel3;ar6e08;nBpA;l1Rs0B;fol3n1Zsett2;aEeDhrBi4ouc7rAwis0;e0Bif2oub2us0yi1;ea1SiA;l2vi1;l2mp0rr1J;nt1Vxi1;aMcreec7enten2NhLkyrocke0lo0Vmi2oJpHtDuBweA;e0Ul2;pp2ArA;gi1pri5roun3;aBea8iAri2Hun9;mula0r4;gge4rA;t2vi1;ark2eAraw2;e3llb2F;aAot7;ki1ri1;i9oc29;dYtisf6;aEeBive0oAus7;a4l2;assu4defi9fres7ig9juve07mai9s0vAwar3;ea2italiAol1G;si1zi1;gi1ll6mb2vi1;a6eDier23lun1VrAun2C;eBoA;mi5vo1Z;ce3s5vai2;n3rpleA;xi1;ffCpWutBverAwi1;arc7lap04p0Pri3whel8;goi1l6st1J;en3sA;et0;m2Jrtu4;aEeDiCoBuAyst0L;mb2;t1Jvi1;s5tiga0;an1Rl0n3smeri26;dAtu4;de9;aCeaBiAo0U;fesa0Tvi1;di1ni1;c1Fg19s0;llumiGmFnArri0R;cDfurHsCtBviA;go23ti1;e1Oimi21oxica0rig0V;pi4ul0;orpo20r0K;po5;na0;eaBorr02umilA;ia0;li1rtwar8;lFrA;atiDipCoBuelA;i1li1;undbrea10wi1;pi1;f6ng;a4ea8;a3etc7it0lEoCrBulfA;il2;ee1FighXust1L;rAun3;ebo3thco8;aCoA;a0wA;e4i1;mi1tte4;lectrJmHnExA;aCci0hBis0pA;an3lo3;aOila1B;c0spe1A;ab2coura0CdBergi13ga0Clive9ric7s02tA;hral2i0J;ea4u4;barras5er09pA;owe4;if6;aQeIiBrA;if0;sAzz6;aEgDhearCsen0tA;rAur11;ac0es5;te9;us0;ppoin0r8;biliGcDfi9gra3ligh0mBpres5sAvasG;erE;an3ea9orA;ali0L;a6eiBli9rA;ea5;vi1;ta0;maPri1s7un0zz2;aPhMlo5oAripp2ut0;mGnArrespon3;cer9fDspi4tA;inBrA;as0ibu0ol2;ui1;lic0u5;ni1;fDmCpA;eAromi5;l2ti1;an3;or0;aAil2;llenAnAr8;gi1;l8ptAri1;iva0;aff2eGin3lFoDrBuA;d3st2;eathtaAui5;ki1;gg2i2o8ri1unA;ci1;in3;co8wiA;lAtc7;de4;bsorVcOgonMlJmHnno6ppea2rFsA;pi4su4toA;nBun3;di1;is7;hi1;res0;li1;aFu5;si1;ar8lu4;ri1;mi1;iAzi1;zi1;cAhi1;eleDomA;moBpan6;yi1;da0;ra0;ti1;bi1;ng\",Comparable:\"true¦0:3C;1:3Q;2:3F;a3Tb3Cc33d2Te2Mf2Ag1Wh1Li1Fj1Ek1Bl13m0Xn0So0Rp0Iqu0Gr07sHtCug0vAw4y3za0Q;el10ouN;ary,e6hi5i3ry;ck0Cde,l3n1ry,se;d,y;ny,te;a3i3R;k,ry;a3erda2ulgar;gue,in,st;a6en2Xhi5i4ouZr3;anqu2Cen1ue;dy,g36me0ny;ck,rs28;ll,me,rt,wd3I;aRcaPeOhMiLkin0BlImGoEpDt6u4w3;eet,ift;b3dd0Wperfi21rre28;sta26t21;a8e7iff,r4u3;pUr1;a4ict,o3;ng;ig2Vn0N;a1ep,rn;le,rk,te0;e1Si2Vright0;ci1Yft,l3on,re;emn,id;a3el0;ll,rt;e4i3y;g2Mm0Z;ek,nd2T;ck24l0mp1L;a3iRrill,y;dy,l01rp;ve0Jxy;n1Jr3;ce,y;d,fe,int0l1Hv0V;a8e6i5o3ude;mantic,o19sy,u3;gh;pe,t1P;a3d,mo0A;dy,l;gg4iFndom,p3re,w;id;ed;ai2i3;ck,et;hoAi1Fl9o8r5u3;ny,r3;e,p11;egna2ic4o3;fouSud;ey,k0;liXor;ain,easa2;ny;dd,i0ld,ranL;aive,e5i4o3u14;b0Sisy,rm0Ysy;bb0ce,mb0R;a3r1w;r,t;ad,e5ild,o4u3;nda12te;ist,o1;a4ek,l3;low;s0ty;a8e7i6o3ucky;f0Jn4o15u3ve0w10y0N;d,sy;e0g;ke0l,mp,tt0Eve0;e1Qwd;me,r3te;ge;e4i3;nd;en;ol0ui19;cy,ll,n3;secu6t3;e3ima4;llege2rmedia3;te;re;aAe7i6o5u3;ge,m3ng1C;bYid;me0t;gh,l0;a3fXsita2;dy,rWv3;en0y;nd13ppy,r3;d3sh;!y;aFenEhCiBlAoofy,r3;a8e6i5o3ue0Z;o3ss;vy;m,s0;at,e3y;dy,n;nd,y;ad,ib,ooD;a2d1;a3o3;st0;tDuiS;u1y;aCeebBi9l8o6r5u3;ll,n3r0N;!ny;aCesh,iend0;a3nd,rmD;my;at,ir7;erce,nan3;ci9;le;r,ul3;ty;a6erie,sse4v3xtre0B;il;nti3;al;r4s3;tern,y;ly,th0;appZe9i5ru4u3;mb;nk;r5vi4z3;zy;ne;e,ty;a3ep,n9;d3f,r;!ly;agey,h8l7o5r4u3;dd0r0te;isp,uel;ar3ld,mmon,st0ward0zy;se;evKou1;e3il0;ap,e3;sy;aHiFlCoAr5u3;ff,r0sy;ly;a6i3oad;g4llia2;nt;ht;sh,ve;ld,un3;cy;a4o3ue;nd,o1;ck,nd;g,tt3;er;d,ld,w1;dy;bsu6ng5we3;so3;me;ry;rd\",Adverb:\"true¦a08b05d00eYfSheQinPjustOkinda,likewiZmMnJoEpCquite,r9s5t2u0very,well;ltima01p0; to,wards5;h1iny bit,o0wiO;o,t6;en,us;eldom,o0uch;!me1rt0; of;how,times,w0C;a1e0;alS;ndomRth05;ar excellenEer0oint blank; Lhaps;f3n0utright;ce0ly;! 0;ag05moX; courGten;ewJo0; longWt 0;onHwithstand9;aybe,eanwhiNore0;!ovT;! aboX;deed,steY;lla,n0;ce;or3u0;ck1l9rther0;!moK;ing; 0evK;exampCgood,suH;n mas0vI;se;e0irect2; 2fini0;te0;ly;juAtrop;ackward,y 0;far,no0; means,w; GbroFd nauseam,gEl7ny5part,s4t 2w0;ay,hi0;le;be7l0mo7wor7;arge,ea6; soon,i4;mo0way;re;l 3mo2ongsi1ready,so,togeth0ways;er;de;st;b1t0;hat;ut;ain;ad;lot,posteriori\",Conjunction:\"true¦aXbTcReNhowMiEjust00noBo9p8supposing,t5wh0yet;e1il0o3;e,st;n1re0thN; if,by,vM;evL;h0il,o;erefOo0;!uU;lus,rovided th9;r0therwiM;! not; mattEr,w0;! 0;since,th4w7;f4n0; 0asmuch;as mIcaForder t0;h0o;at;! 0;only,t0w0;hen;!ev3;ith2ven0;! 0;if,tB;er;o0uz;s,z;e0ut,y the time;cau1f0;ore;se;lt3nd,s 0;far1if,m0soon1t2;uch0; as;hou0;gh\",Currency:\"true¦$,aud,bQcOdJeurIfHgbp,hkd,iGjpy,kElDp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotyQł;en,uanP;af,of;h0t5;e0il5;k0q0;elK;oubleJp,upeeJ;e2ound st0;er0;lingG;n0soF;ceEnies;empi7i7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!os;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;e0ny;nt1;aht,itcoin0;!s\",Determiner:\"true¦aBboth,d9e6few,le5mu8neiDplenty,s4th2various,wh0;at0ich0;evC;a0e4is,ose;!t;everal,ome;!ast,s;a1l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\",\"Adj|Present\":\"true¦a07b04cVdQeNfJhollIidRlEmCnarrIoBp9qua8r7s3t2uttFw0;aKet,ro0;ng,u08;endChin;e2hort,l1mooth,our,pa9tray,u0;re,speU;i2ow;cu6da02leSpaN;eplica01i02;ck;aHerfePr0;eseUime,omV;bscu1pen,wn;atu0e3odeH;re;a2e1ive,ow0;er;an;st,y;ow;a2i1oul,r0;ee,inge;rm;iIke,ncy,st;l1mpty,x0;emHpress;abo4ic7;amp,e2i1oub0ry,ull;le;ffu9re6;fu8libe0;raE;alm,l5o0;mpleCn3ol,rr1unterfe0;it;e0u7;ct;juga8sum7;ea1o0;se;n,r;ankru1lu0;nt;pt;li2pproxi0rticula1;ma0;te;ght\",\"Person|Adj\":\"true¦b3du2earnest,frank,mi2r0san1woo1;an0ich,u1;dy;sty;ella,rown\",Modal:\"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ight,ust;an,o0;uld\",Verb:\"true¦born,cannot,gonna,has,keep tabs,msg\",\"Person|Verb\":\"true¦b8ch7dr6foster,gra5ja9lan4ma2ni9ollie,p1rob,s0wade;kip,pike,t5ue;at,eg,ier2;ck,r0;k,shal;ce;ce,nt;ew;ase,u1;iff,l1ob,u0;ck;aze,ossom\",\"Person|Date\":\"true¦a2j0sep;an0une;!uary;p0ugust,v0;ril\"};const mo=36,po=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",fo=po.split(\"\").reduce((function(e,t,n){return e[t]=n,e}),{});var bo=function(e){if(void 0!==fo[e])return fo[e];let t=0,n=1,r=mo,o=1;for(;n<e.length;t+=r,n++,r*=mo);for(let n=e.length-1;n>=0;n--,o*=mo){let r=e.charCodeAt(n)-48;r>10&&(r-=7),t+=r*o}return t};const vo=function(e,t,n){const r=bo(t);return r<e.symCount?e.syms[r]:n+r+1-e.symCount},yo=function(e){const t={nodes:e.split(\";\"),syms:[],symCount:0};return e.match(\":\")&&function(e){const t=new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");for(let n=0;n<e.nodes.length;n++){const r=t.exec(e.nodes[n]);if(!r){e.symCount=n;break}e.syms[bo(r[1])]=bo(r[2])}e.nodes=e.nodes.slice(e.symCount,e.nodes.length)}(t),function(e){const t=[],n=(r,o)=>{let a=e.nodes[r];\"!\"===a[0]&&(t.push(o),a=a.slice(1));const i=a.split(/([A-Z0-9,]+)/g);for(let a=0;a<i.length;a+=2){const s=i[a],l=i[a+1];if(!s)continue;const u=o+s;if(\",\"===l||void 0===l){t.push(u);continue}const c=vo(e,l,r);n(c,u)}};return n(0,\"\"),t}(t)},wo=[\"Possessive\",\"Pronoun\"];const ko={a:[[/(antenn|formul|nebul|vertebr|vit)a$/i,\"$1ae\"],[/ia$/i,\"ia\"]],e:[[/(kn|l|w)ife$/i,\"$1ives\"],[/(hive)$/i,\"$1s\"],[/([m|l])ouse$/i,\"$1ice\"],[/([m|l])ice$/i,\"$1ice\"]],f:[[/^(dwar|handkerchie|hoo|scar|whar)f$/i,\"$1ves\"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i,\"$1ves\"]],i:[[/(octop|vir)i$/i,\"$1i\"]],m:[[/([ti])um$/i,\"$1a\"]],n:[[/^(oxen)$/i,\"$1\"]],o:[[/(al|ad|at|er|et|ed)o$/i,\"$1oes\"]],s:[[/(ax|test)is$/i,\"$1es\"],[/(alias|status)$/i,\"$1es\"],[/sis$/i,\"ses\"],[/(bu)s$/i,\"$1ses\"],[/(sis)$/i,\"ses\"],[/^(?!talis|.*hu)(.*)man$/i,\"$1men\"],[/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,\"$1i\"]],x:[[/(matr|vert|ind|cort)(ix|ex)$/i,\"$1ices\"],[/^(ox)$/i,\"$1en\"]],y:[[/([^aeiouy]|qu)y$/i,\"$1ies\"]],z:[[/(quiz)$/i,\"$1zes\"]]},Po=/([xsz]|ch|sh)$/,Ao=function(e=\"\",t){const{irregularPlurals:n,uncountable:r}=t.two;if(r.hasOwnProperty(e))return e;if(n.hasOwnProperty(e))return n[e];const o=function(e){const t=e[e.length-1];if(!0===ko.hasOwnProperty(t))for(let n=0;n<ko[t].length;n+=1){const r=ko[t][n][0];if(!0===r.test(e))return e.replace(r,ko[t][n][1])}return null}(e);return null!==o?o:Po.test(e)?e+\"es\":e+\"s\"},Co=/\\|/,No={\"20th century fox\":\"Organization\",\"7 eleven\":\"Organization\",\"motel 6\":\"Organization\",g8:\"Organization\",vh1:\"Organization\",\"76ers\":\"SportsTeam\",\"49ers\":\"SportsTeam\",q1:\"Date\",q2:\"Date\",q3:\"Date\",q4:\"Date\",km2:\"Unit\",m2:\"Unit\",dm2:\"Unit\",cm2:\"Unit\",mm2:\"Unit\",mile2:\"Unit\",in2:\"Unit\",yd2:\"Unit\",ft2:\"Unit\",m3:\"Unit\",dm3:\"Unit\",cm3:\"Unit\",in3:\"Unit\",ft3:\"Unit\",yd3:\"Unit\",\"at&t\":\"Organization\",\"black & decker\":\"Organization\",\"h & m\":\"Organization\",\"johnson & johnson\":\"Organization\",\"procter & gamble\":\"Organization\",\"ben & jerry's\":\"Organization\",\"&\":\"Conjunction\",i:[\"Pronoun\",\"Singular\"],he:[\"Pronoun\",\"Singular\"],she:[\"Pronoun\",\"Singular\"],it:[\"Pronoun\",\"Singular\"],they:[\"Pronoun\",\"Plural\"],we:[\"Pronoun\",\"Plural\"],was:[\"Copula\",\"PastTense\"],is:[\"Copula\",\"PresentTense\"],are:[\"Copula\",\"PresentTense\"],am:[\"Copula\",\"PresentTense\"],were:[\"Copula\",\"PastTense\"],her:wo,his:wo,hers:wo,their:wo,theirs:wo,themselves:wo,your:wo,our:wo,ours:wo,my:wo,its:wo,vs:[\"Conjunction\",\"Abbreviation\"],if:[\"Condition\",\"Preposition\"],closer:\"Comparative\",closest:\"Superlative\",much:\"Adverb\",may:\"Modal\",babysat:\"PastTense\",blew:\"PastTense\",drank:\"PastTense\",drove:\"PastTense\",forgave:\"PastTense\",skiied:\"PastTense\",spilt:\"PastTense\",stung:\"PastTense\",swam:\"PastTense\",swung:\"PastTense\",guaranteed:\"PastTense\",shrunk:\"PastTense\",nears:\"PresentTense\",nearing:\"Gerund\",neared:\"PastTense\",no:[\"Negative\",\"Expression\"]},jo={},xo={two:{irregularPlurals:ho,uncountable:{}}};Object.keys(go).forEach((e=>{const t=function(e){if(!e)return{};const t=e.split(\"|\").reduce(((e,t)=>{const n=t.split(\"¦\");return e[n[0]]=n[1],e}),{}),n={};return Object.keys(t).forEach((function(e){const r=yo(t[e]);\"true\"===e&&(e=!0);for(let t=0;t<r.length;t++){const o=r[t];!0===n.hasOwnProperty(o)?!1===Array.isArray(n[o])?n[o]=[n[o],e]:n[o].push(e):n[o]=e}})),n}(go[e]);Co.test(e)?Object.keys(t).forEach((t=>{if(jo[t]=e,\"Noun|Verb\"===e){const e=Ao(t,xo);jo[e]=\"Plural|Verb\"}})):Object.keys(t).forEach((t=>{No[t]=e}))})),[\":(\",\":)\",\":P\",\":p\",\":O\",\";(\",\";)\",\";P\",\";p\",\";O\",\":3\",\":|\",\":/\",\":\\\\\",\":$\",\":*\",\":@\",\":-(\",\":-)\",\":-P\",\":-p\",\":-O\",\":-3\",\":-|\",\":-/\",\":-\\\\\",\":-$\",\":-*\",\":-@\",\":^(\",\":^)\",\":^P\",\":^p\",\":^O\",\":^3\",\":^|\",\":^/\",\":^\\\\\",\":^$\",\":^*\",\":^@\",\"):\",\"(:\",\"$:\",\"*:\",\")-:\",\"(-:\",\"$-:\",\"*-:\",\")^:\",\"(^:\",\"$^:\",\"*^:\",\"<3\",\"</3\",\"<\\\\3\",\"=(\"].forEach((e=>No[e]=\"Emoticon\")),delete No[\"\"],delete No.null,delete No[\" \"];const Io=\"Singular\";var To={beforeTags:{Determiner:Io,Possessive:Io,Acronym:Io,Noun:Io,Adjective:Io,PresentTense:Io,Gerund:Io,PastTense:Io,Infinitive:Io,Date:Io,Ordinal:Io,Demonym:Io},afterTags:{Value:Io,Modal:Io,Copula:Io,PresentTense:Io,PastTense:Io,Demonym:Io,Actor:Io},beforeWords:{the:Io,with:Io,without:Io,of:Io,for:Io,any:Io,all:Io,on:Io,cut:Io,cuts:Io,increase:Io,decrease:Io,raise:Io,drop:Io,save:Io,saved:Io,saves:Io,make:Io,makes:Io,made:Io,minus:Io,plus:Io,than:Io,another:Io,versus:Io,neither:Io,about:Io,favorite:Io,best:Io,daily:Io,weekly:Io,linear:Io,binary:Io,mobile:Io,lexical:Io,technical:Io,computer:Io,scientific:Io,security:Io,government:Io,popular:Io,formal:Io,no:Io,more:Io,one:Io,let:Io,her:Io,his:Io,their:Io,our:Io,us:Io,sheer:Io,monthly:Io,yearly:Io,current:Io,previous:Io,upcoming:Io,last:Io,next:Io,main:Io,initial:Io,final:Io,beginning:Io,end:Io,top:Io,bottom:Io,future:Io,past:Io,major:Io,minor:Io,side:Io,central:Io,peripheral:Io,public:Io,private:Io},afterWords:{of:Io,system:Io,aid:Io,method:Io,utility:Io,tool:Io,reform:Io,therapy:Io,philosophy:Io,room:Io,authority:Io,says:Io,said:Io,wants:Io,wanted:Io,is:Io,did:Io,do:Io,can:Io,wise:Io}};const Do=\"Infinitive\";var Ho={beforeTags:{Modal:Do,Adverb:Do,Negative:Do,Plural:Do},afterTags:{Determiner:Do,Adverb:Do,Possessive:Do,Reflexive:Do,Preposition:Do,Cardinal:Do,Comparative:Do,Superlative:Do},beforeWords:{i:Do,we:Do,you:Do,they:Do,to:Do,please:Do,will:Do,have:Do,had:Do,would:Do,could:Do,should:Do,do:Do,did:Do,does:Do,can:Do,must:Do,us:Do,me:Do,let:Do,even:Do,when:Do,help:Do,he:Do,she:Do,it:Do,being:Do,bi:Do,co:Do,contra:Do,de:Do,inter:Do,intra:Do,mis:Do,pre:Do,out:Do,counter:Do,nobody:Do,somebody:Do,anybody:Do,everybody:Do},afterWords:{the:Do,me:Do,you:Do,him:Do,us:Do,her:Do,his:Do,them:Do,they:Do,it:Do,himself:Do,herself:Do,itself:Do,myself:Do,ourselves:Do,themselves:Do,something:Do,anything:Do,a:Do,an:Do,up:Do,down:Do,by:Do,out:Do,off:Do,under:Do,what:Do,all:Do,to:Do,because:Do,although:Do,how:Do,otherwise:Do,together:Do,though:Do,into:Do,yet:Do,more:Do,here:Do,there:Do,away:Do}};const Eo={beforeTags:Object.assign({},Ho.beforeTags,To.beforeTags,{}),afterTags:Object.assign({},Ho.afterTags,To.afterTags,{}),beforeWords:Object.assign({},Ho.beforeWords,To.beforeWords,{}),afterWords:Object.assign({},Ho.afterWords,To.afterWords,{})},Go=\"Adjective\";var Oo={beforeTags:{Determiner:Go,Possessive:Go,Hyphenated:Go},afterTags:{Adjective:Go},beforeWords:{seem:Go,seemed:Go,seems:Go,feel:Go,feels:Go,felt:Go,stay:Go,appear:Go,appears:Go,appeared:Go,also:Go,over:Go,under:Go,too:Go,it:Go,but:Go,still:Go,really:Go,quite:Go,well:Go,very:Go,truly:Go,how:Go,deeply:Go,hella:Go,profoundly:Go,extremely:Go,so:Go,badly:Go,mostly:Go,totally:Go,awfully:Go,rather:Go,nothing:Go,something:Go,anything:Go,not:Go,me:Go,is:Go,face:Go,faces:Go,faced:Go,look:Go,looks:Go,looked:Go,reveal:Go,reveals:Go,revealed:Go,sound:Go,sounded:Go,sounds:Go,remains:Go,remained:Go,prove:Go,proves:Go,proved:Go,becomes:Go,stays:Go,tastes:Go,taste:Go,smells:Go,smell:Go,gets:Go,grows:Go,as:Go,rings:Go,radiates:Go,conveys:Go,convey:Go,conveyed:Go,of:Go},afterWords:{too:Go,also:Go,or:Go,enough:Go,as:Go}};const Fo=\"Gerund\";var Vo={beforeTags:{Adverb:Fo,Preposition:Fo,Conjunction:Fo},afterTags:{Adverb:Fo,Possessive:Fo,Person:Fo,Pronoun:Fo,Determiner:Fo,Copula:Fo,Preposition:Fo,Conjunction:Fo,Comparative:Fo},beforeWords:{been:Fo,keep:Fo,continue:Fo,stop:Fo,am:Fo,be:Fo,me:Fo,began:Fo,start:Fo,starts:Fo,started:Fo,stops:Fo,stopped:Fo,help:Fo,helps:Fo,avoid:Fo,avoids:Fo,love:Fo,loves:Fo,loved:Fo,hate:Fo,hates:Fo,hated:Fo},afterWords:{you:Fo,me:Fo,her:Fo,him:Fo,his:Fo,them:Fo,their:Fo,it:Fo,this:Fo,there:Fo,on:Fo,about:Fo,for:Fo,up:Fo,down:Fo}};const zo=\"Gerund\",Bo=\"Adjective\",So={beforeTags:Object.assign({},Oo.beforeTags,Vo.beforeTags,{Imperative:zo,Infinitive:Bo,Plural:zo}),afterTags:Object.assign({},Oo.afterTags,Vo.afterTags,{Noun:Bo}),beforeWords:Object.assign({},Oo.beforeWords,Vo.beforeWords,{is:Bo,are:zo,was:Bo,of:Bo,suggest:zo,suggests:zo,suggested:zo,recommend:zo,recommends:zo,recommended:zo,imagine:zo,imagines:zo,imagined:zo,consider:zo,considered:zo,considering:zo,resist:zo,resists:zo,resisted:zo,avoid:zo,avoided:zo,avoiding:zo,except:Bo,accept:Bo,assess:zo,explore:zo,fear:zo,fears:zo,appreciate:zo,question:zo,help:zo,embrace:zo,with:Bo}),afterWords:Object.assign({},Oo.afterWords,Vo.afterWords,{to:zo,not:zo,the:zo})},$o={beforeTags:{Determiner:void 0,Cardinal:\"Noun\",PhrasalVerb:\"Adjective\"},afterTags:{}},Mo={beforeTags:Object.assign({},Oo.beforeTags,To.beforeTags,$o.beforeTags),afterTags:Object.assign({},Oo.afterTags,To.afterTags,$o.afterTags),beforeWords:Object.assign({},Oo.beforeWords,To.beforeWords,{are:\"Adjective\",is:\"Adjective\",was:\"Adjective\",be:\"Adjective\",off:\"Adjective\",out:\"Adjective\"}),afterWords:Object.assign({},Oo.afterWords,To.afterWords)},Lo=\"PastTense\",Ko=\"Adjective\",Jo={beforeTags:{Adverb:Lo,Pronoun:Lo,ProperNoun:Lo,Auxiliary:Lo,Noun:Lo},afterTags:{Possessive:Lo,Pronoun:Lo,Determiner:Lo,Adverb:Lo,Comparative:Lo,Date:Lo,Gerund:Lo},beforeWords:{be:Lo,who:Lo,get:Ko,had:Lo,has:Lo,have:Lo,been:Lo,it:Lo,as:Lo,for:Ko,more:Ko,always:Ko},afterWords:{by:Lo,back:Lo,out:Lo,in:Lo,up:Lo,down:Lo,before:Lo,after:Lo,for:Lo,the:Lo,with:Lo,as:Lo,on:Lo,at:Lo,between:Lo,to:Lo,into:Lo,us:Lo,them:Lo,his:Lo,her:Lo,their:Lo,our:Lo,me:Lo,about:Ko}};var Wo={beforeTags:Object.assign({},Oo.beforeTags,Jo.beforeTags),afterTags:Object.assign({},Oo.afterTags,Jo.afterTags),beforeWords:Object.assign({},Oo.beforeWords,Jo.beforeWords),afterWords:Object.assign({},Oo.afterWords,Jo.afterWords)};const qo={afterTags:{Noun:\"Adjective\",Conjunction:void 0}},Uo={beforeTags:Object.assign({},Oo.beforeTags,Ho.beforeTags,{Adverb:void 0,Negative:void 0}),afterTags:Object.assign({},Oo.afterTags,Ho.afterTags,qo.afterTags),beforeWords:Object.assign({},Oo.beforeWords,Ho.beforeWords,{have:void 0,had:void 0,not:void 0,went:\"Adjective\",goes:\"Adjective\",got:\"Adjective\",be:\"Adjective\"}),afterWords:Object.assign({},Oo.afterWords,Ho.afterWords,{to:void 0,as:\"Adjective\"})},Ro={Copula:\"Gerund\",PastTense:\"Gerund\",PresentTense:\"Gerund\",Infinitive:\"Gerund\"},Qo={Value:\"Gerund\"},Zo={are:\"Gerund\",were:\"Gerund\",be:\"Gerund\",no:\"Gerund\",without:\"Gerund\",you:\"Gerund\",we:\"Gerund\",they:\"Gerund\",he:\"Gerund\",she:\"Gerund\",us:\"Gerund\",them:\"Gerund\"},_o={the:\"Gerund\",this:\"Gerund\",that:\"Gerund\",me:\"Gerund\",us:\"Gerund\",them:\"Gerund\"},Xo={beforeTags:Object.assign({},Vo.beforeTags,To.beforeTags,Ro),afterTags:Object.assign({},Vo.afterTags,To.afterTags,Qo),beforeWords:Object.assign({},Vo.beforeWords,To.beforeWords,Zo),afterWords:Object.assign({},Vo.afterWords,To.afterWords,_o)},Yo=\"Singular\",ea=\"Infinitive\",ta={beforeTags:Object.assign({},Ho.beforeTags,To.beforeTags,{Adjective:Yo,Particle:Yo}),afterTags:Object.assign({},Ho.afterTags,To.afterTags,{ProperNoun:ea,Gerund:ea,Adjective:ea,Copula:Yo}),beforeWords:Object.assign({},Ho.beforeWords,To.beforeWords,{is:Yo,was:Yo,of:Yo,have:null}),afterWords:Object.assign({},Ho.afterWords,To.afterWords,{instead:ea,about:ea,his:ea,her:ea,to:null,by:null,in:null})},na=\"Person\";var ra={beforeTags:{Honorific:na,Person:na},afterTags:{Person:na,ProperNoun:na,Verb:na},beforeWords:{hi:na,hey:na,yo:na,dear:na,hello:na},afterWords:{said:na,says:na,told:na,tells:na,feels:na,felt:na,seems:na,thinks:na,thought:na,spends:na,spendt:na,plays:na,played:na,sing:na,sang:na,learn:na,learned:na,wants:na,wanted:na}};const oa=\"Month\",aa={beforeTags:{Date:oa,Value:oa},afterTags:{Date:oa,Value:oa},beforeWords:{by:oa,in:oa,on:oa,during:oa,after:oa,before:oa,between:oa,until:oa,til:oa,sometime:oa,of:oa,this:oa,next:oa,last:oa,previous:oa,following:oa,with:\"Person\"},afterWords:{sometime:oa,in:oa,of:oa,until:oa,the:oa}};var ia={beforeTags:Object.assign({},ra.beforeTags,aa.beforeTags),afterTags:Object.assign({},ra.afterTags,aa.afterTags),beforeWords:Object.assign({},ra.beforeWords,aa.beforeWords),afterWords:Object.assign({},ra.afterWords,aa.afterWords)};const sa=\"Place\",la={beforeTags:{Place:sa},afterTags:{Place:sa,Abbreviation:sa},beforeWords:{in:sa,by:sa,near:sa,from:sa,to:sa},afterWords:{in:sa,by:sa,near:sa,from:sa,to:sa,government:sa,council:sa,region:sa,city:sa}},ua=\"Unit\",ca={\"Actor|Verb\":Eo,\"Adj|Gerund\":So,\"Adj|Noun\":Mo,\"Adj|Past\":Wo,\"Adj|Present\":Uo,\"Noun|Verb\":ta,\"Noun|Gerund\":Xo,\"Person|Noun\":{beforeTags:Object.assign({},To.beforeTags,ra.beforeTags),afterTags:Object.assign({},To.afterTags,ra.afterTags),beforeWords:Object.assign({},To.beforeWords,ra.beforeWords,{i:\"Infinitive\",we:\"Infinitive\"}),afterWords:Object.assign({},To.afterWords,ra.afterWords)},\"Person|Date\":ia,\"Person|Verb\":{beforeTags:Object.assign({},To.beforeTags,ra.beforeTags,Ho.beforeTags),afterTags:Object.assign({},To.afterTags,ra.afterTags,Ho.afterTags),beforeWords:Object.assign({},To.beforeWords,ra.beforeWords,Ho.beforeWords),afterWords:Object.assign({},To.afterWords,ra.afterWords,Ho.afterWords)},\"Person|Place\":{beforeTags:Object.assign({},la.beforeTags,ra.beforeTags),afterTags:Object.assign({},la.afterTags,ra.afterTags),beforeWords:Object.assign({},la.beforeWords,ra.beforeWords),afterWords:Object.assign({},la.afterWords,ra.afterWords)},\"Person|Adj\":{beforeTags:Object.assign({},ra.beforeTags,Oo.beforeTags),afterTags:Object.assign({},ra.afterTags,Oo.afterTags),beforeWords:Object.assign({},ra.beforeWords,Oo.beforeWords),afterWords:Object.assign({},ra.afterWords,Oo.afterWords)},\"Unit|Noun\":{beforeTags:{Value:ua},afterTags:{},beforeWords:{per:ua,every:ua,each:ua,square:ua,cubic:ua,sq:ua,metric:ua},afterWords:{per:ua,squared:ua,cubed:ua,long:ua}}},ha=(e,t)=>{const n=Object.keys(e).reduce(((t,n)=>(t[n]=\"Infinitive\"===e[n]?\"PresentTense\":\"Plural\",t)),{});return Object.assign(n,t)};ca[\"Plural|Verb\"]={beforeWords:ha(ca[\"Noun|Verb\"].beforeWords,{had:\"Plural\",have:\"Plural\"}),afterWords:ha(ca[\"Noun|Verb\"].afterWords,{his:\"PresentTense\",her:\"PresentTense\",its:\"PresentTense\",in:null,to:null,is:\"PresentTense\",by:\"PresentTense\"}),beforeTags:ha(ca[\"Noun|Verb\"].beforeTags,{Conjunction:\"PresentTense\",Noun:void 0,ProperNoun:\"PresentTense\"}),afterTags:ha(ca[\"Noun|Verb\"].afterTags,{Gerund:\"Plural\",Noun:\"PresentTense\",Value:\"PresentTense\"})};const da=\"Adjective\",ga=\"Infinitive\",ma=\"PresentTense\",pa=\"Singular\",fa=\"PastTense\",ba=\"Adverb\",va=\"Plural\",ya=\"Actor\",wa=\"Verb\",ka=\"Noun\",Pa=\"LastName\",Aa=\"Modal\",Ca=\"Place\",Na=\"Participle\";var ja=[null,null,{ea:pa,ia:ka,ic:da,ly:ba,\"'n\":wa,\"'t\":wa},{oed:fa,ued:fa,xed:fa,\" so\":ba,\"'ll\":Aa,\"'re\":\"Copula\",azy:da,eer:ka,end:wa,ped:fa,ffy:da,ify:ga,ing:\"Gerund\",ize:ga,ibe:ga,lar:da,mum:da,nes:ma,nny:da,ous:da,que:da,ger:ka,ber:ka,rol:pa,sis:pa,ogy:pa,oid:pa,ian:pa,zes:ma,eld:fa,ken:Na,ven:Na,ten:Na,ect:ga,ict:ga,ign:ga,oze:ga,ful:da,bal:da,ton:ka,pur:Ca},{amed:fa,aped:fa,ched:fa,lked:fa,rked:fa,reed:fa,nded:fa,mned:da,cted:fa,dged:fa,ield:pa,akis:Pa,cede:ga,chuk:Pa,czyk:Pa,ects:ma,iend:pa,ends:wa,enko:Pa,ette:pa,iary:pa,wner:pa,fies:ma,fore:ba,gate:ga,gone:da,ices:va,ints:va,ruct:ga,ines:va,ions:va,ners:va,pers:va,lers:va,less:da,llen:da,made:da,nsen:Pa,oses:ma,ould:Aa,some:da,sson:Pa,ians:va,tion:pa,tage:ka,ique:pa,tive:da,tors:ka,vice:pa,lier:pa,fier:pa,wned:fa,gent:pa,tist:ya,pist:ya,rist:ya,mist:ya,yist:ya,vist:ya,ists:ya,lite:pa,site:pa,rite:pa,mite:pa,bite:pa,mate:pa,date:pa,ndal:pa,vent:pa,uist:ya,gist:ya,note:pa,cide:pa,ence:pa,wide:da,vide:ga,ract:ga,duce:ga,pose:ga,eive:ga,lyze:ga,lyse:ga,iant:da,nary:da,ghty:da,uent:da,erer:ya,bury:Ca,dorf:ka,esty:ka,wych:Ca,dale:Ca,folk:Ca,vale:Ca,abad:Ca,sham:Ca,wick:Ca,view:Ca},{elist:ya,holic:pa,phite:pa,tized:fa,urned:fa,eased:fa,ances:va,bound:da,ettes:va,fully:ba,ishes:ma,ities:va,marek:Pa,nssen:Pa,ology:ka,osome:pa,tment:pa,ports:va,rough:da,tches:ma,tieth:\"Ordinal\",tures:va,wards:ba,where:ba,archy:ka,pathy:ka,opoly:ka,embly:ka,phate:ka,ndent:pa,scent:pa,onist:ya,anist:ya,alist:ya,olist:ya,icist:ya,ounce:ga,iable:da,borne:da,gnant:da,inant:da,igent:da,atory:da,rient:pa,dient:pa,maker:ya,burgh:Ca,mouth:Ca,ceter:Ca,ville:Ca,hurst:Ca,stead:Ca,endon:Ca,brook:Ca,shire:Ca,worth:ka,field:\"ProperNoun\",ridge:Ca},{auskas:Pa,parent:pa,cedent:pa,ionary:pa,cklist:pa,brooke:Ca,keeper:ya,logist:ya,teenth:\"Value\",worker:ya,master:ya,writer:ya,brough:Ca,cester:Ca,ington:Ca,cliffe:Ca,ingham:Ca},{chester:Ca,logists:ya,opoulos:Pa,borough:Ca,sdottir:Pa}];const xa=\"Adjective\",Ia=\"Noun\",Ta=\"Verb\";var Da=[null,null,{},{neo:Ia,bio:Ia,\"de-\":Ta,\"re-\":Ta,\"un-\":Ta,\"ex-\":Ia},{anti:Ia,auto:Ia,faux:xa,hexa:Ia,kilo:Ia,mono:Ia,nano:Ia,octa:Ia,poly:Ia,semi:xa,tele:Ia,\"pro-\":xa,\"mis-\":Ta,\"dis-\":Ta,\"pre-\":xa},{anglo:Ia,centi:Ia,ethno:Ia,ferro:Ia,grand:Ia,hepta:Ia,hydro:Ia,intro:Ia,macro:Ia,micro:Ia,milli:Ia,nitro:Ia,penta:Ia,quasi:xa,radio:Ia,tetra:Ia,\"omni-\":xa,\"post-\":xa},{pseudo:xa,\"extra-\":xa,\"hyper-\":xa,\"inter-\":xa,\"intra-\":xa,\"deca-\":xa},{electro:Ia}];const Ha=\"Adjective\",Ea=\"Infinitive\",Ga=\"PresentTense\",Oa=\"Singular\",Fa=\"PastTense\",Va=\"Adverb\",za=\"Expression\",Ba=\"Actor\",Sa=\"Verb\",$a=\"Noun\",Ma=\"LastName\";var La={a:[[/.[aeiou]na$/,$a,\"tuna\"],[/.[oau][wvl]ska$/,Ma],[/.[^aeiou]ica$/,Oa,\"harmonica\"],[/^([hyj]a+)+$/,za,\"haha\"]],c:[[/.[^aeiou]ic$/,Ha]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,Fa,\"popped\"],[/.[aeo]{2}[bdgmnprvz]ed$/,Fa,\"rammed\"],[/.[aeiou][sg]hed$/,Fa,\"gushed\"],[/.[aeiou]red$/,Fa,\"hired\"],[/.[aeiou]r?ried$/,Fa,\"hurried\"],[/[^aeiou]ard$/,Oa,\"steward\"],[/[aeiou][^aeiou]id$/,Ha,\"\"],[/.[vrl]id$/,Ha,\"livid\"],[/..led$/,Fa,\"hurled\"],[/.[iao]sed$/,Fa,\"\"],[/[aeiou]n?[cs]ed$/,Fa,\"\"],[/[aeiou][rl]?[mnf]ed$/,Fa,\"\"],[/[aeiou][ns]?c?ked$/,Fa,\"bunked\"],[/[aeiou]gned$/,Fa],[/[aeiou][nl]?ged$/,Fa],[/.[tdbwxyz]ed$/,Fa],[/[^aeiou][aeiou][tvx]ed$/,Fa],[/.[cdflmnprstv]ied$/,Fa,\"emptied\"]],e:[[/.[lnr]ize$/,Ea,\"antagonize\"],[/.[^aeiou]ise$/,Ea,\"antagonise\"],[/.[aeiou]te$/,Ea,\"bite\"],[/.[^aeiou][ai]ble$/,Ha,\"fixable\"],[/.[^aeiou]eable$/,Ha,\"maleable\"],[/.[ts]ive$/,Ha,\"festive\"],[/[a-z]-like$/,Ha,\"woman-like\"]],h:[[/.[^aeiouf]ish$/,Ha,\"cornish\"],[/.v[iy]ch$/,Ma,\"..ovich\"],[/^ug?h+$/,za,\"ughh\"],[/^uh[ -]?oh$/,za,\"uhoh\"],[/[a-z]-ish$/,Ha,\"cartoon-ish\"]],i:[[/.[oau][wvl]ski$/,Ma,\"polish-male\"]],k:[[/^(k){2}$/,za,\"kkkk\"]],l:[[/.[gl]ial$/,Ha,\"familial\"],[/.[^aeiou]ful$/,Ha,\"fitful\"],[/.[nrtumcd]al$/,Ha,\"natal\"],[/.[^aeiou][ei]al$/,Ha,\"familial\"]],m:[[/.[^aeiou]ium$/,Oa,\"magnesium\"],[/[^aeiou]ism$/,Oa,\"schism\"],[/^[hu]m+$/,za,\"hmm\"],[/^\\d+ ?[ap]m$/,\"Date\",\"3am\"]],n:[[/.[lsrnpb]ian$/,Ha,\"republican\"],[/[^aeiou]ician$/,Ba,\"musician\"],[/[aeiou][ktrp]in'$/,\"Gerund\",\"cookin'\"]],o:[[/^no+$/,za,\"noooo\"],[/^(yo)+$/,za,\"yoo\"],[/^wo{2,}[pt]?$/,za,\"woop\"]],r:[[/.[bdfklmst]ler$/,\"Noun\"],[/[aeiou][pns]er$/,Oa],[/[^i]fer$/,Ea],[/.[^aeiou][ao]pher$/,Ba],[/.[lk]er$/,\"Noun\"],[/.ier$/,\"Comparative\"]],t:[[/.[di]est$/,\"Superlative\"],[/.[icldtgrv]ent$/,Ha],[/[aeiou].*ist$/,Ha],[/^[a-z]et$/,Sa]],s:[[/.[^aeiou]ises$/,Ga],[/.[rln]ates$/,Ga],[/.[^z]ens$/,Sa],[/.[lstrn]us$/,Oa],[/.[aeiou]sks$/,Ga],[/.[aeiou]kes$/,Ga],[/[aeiou][^aeiou]is$/,Oa],[/[a-z]'s$/,$a],[/^yes+$/,za]],v:[[/.[^aeiou][ai][kln]ov$/,Ma]],y:[[/.[cts]hy$/,Ha],[/.[st]ty$/,Ha],[/.[tnl]ary$/,Ha],[/.[oe]ry$/,Oa],[/[rdntkbhs]ly$/,Va],[/.(gg|bb|zz)ly$/,Ha],[/...lly$/,Va],[/.[gk]y$/,Ha],[/[bszmp]{2}y$/,Ha],[/.[ai]my$/,Ha],[/[ea]{2}zy$/,Ha],[/.[^aeiou]ity$/,Oa]]};const Ka=\"Verb\",Ja=\"Noun\";var Wa={leftTags:[[\"Adjective\",Ja],[\"Possessive\",Ja],[\"Determiner\",Ja],[\"Adverb\",Ka],[\"Pronoun\",Ka],[\"Value\",Ja],[\"Ordinal\",Ja],[\"Modal\",Ka],[\"Superlative\",Ja],[\"Demonym\",Ja],[\"Honorific\",\"Person\"]],leftWords:[[\"i\",Ka],[\"first\",Ja],[\"it\",Ka],[\"there\",Ka],[\"not\",Ka],[\"because\",Ja],[\"if\",Ja],[\"but\",Ja],[\"who\",Ka],[\"this\",Ja],[\"his\",Ja],[\"when\",Ja],[\"you\",Ka],[\"very\",\"Adjective\"],[\"old\",Ja],[\"never\",Ka],[\"before\",Ja],[\"a\",Ja],[\"the\",Ja],[\"been\",Ka]],rightTags:[[\"Copula\",Ja],[\"PastTense\",Ja],[\"Conjunction\",Ja],[\"Modal\",Ja]],rightWords:[[\"there\",Ka],[\"me\",Ka],[\"man\",\"Adjective\"],[\"him\",Ka],[\"it\",Ka],[\"were\",Ja],[\"took\",Ja],[\"himself\",Ka],[\"went\",Ja],[\"who\",Ja],[\"jr\",\"Person\"]]},qa={fwd:\"3:ser,ier¦1er:h,t,f,l,n¦1r:e¦2er:ss,or,om\",both:\"3er:ver,ear,alm¦3ner:hin¦3ter:lat¦2mer:im¦2er:ng,rm,mb¦2ber:ib¦2ger:ig¦1er:w,p,k,d¦ier:y\",rev:\"1:tter,yer¦2:uer,ver,ffer,oner,eler,ller,iler,ster,cer,uler,sher,ener,gher,aner,adder,nter,eter,rter,hter,rner,fter¦3:oser,ooler,eafer,user,airer,bler,maler,tler,eater,uger,rger,ainer,urer,ealer,icher,pler,emner,icter,nser,iser¦4:arser,viner,ucher,rosser,somer,ndomer,moter,oother,uarer,hiter¦5:nuiner,esser,emier¦ar:urther\",ex:\"worse:bad¦better:good¦4er:fair,gray,poor¦1urther:far¦3ter:fat,hot,wet¦3der:mad,sad¦3er:shy,fun¦4der:glad¦:¦4r:cute,dire,fake,fine,free,lame,late,pale,rare,ripe,rude,safe,sore,tame,wide¦5r:eerie,stale\"},Ua={fwd:\"1:nning,tting,rring,pping,eing,mming,gging,dding,bbing,kking¦2:eking,oling,eling,eming¦3:velling,siting,uiting,fiting,loting,geting,ialing,celling¦4:graming\",both:\"1:aing,iing,fing,xing,ying,oing,hing,wing¦2:tzing,rping,izzing,bting,mning,sping,wling,rling,wding,rbing,uping,lming,wning,mping,oning,lting,mbing,lking,fting,hting,sking,gning,pting,cking,ening,nking,iling,eping,ering,rting,rming,cting,lping,ssing,nting,nding,lding,sting,rning,rding,rking¦3:belling,siping,toming,yaking,uaking,oaning,auling,ooping,aiding,naping,euring,tolling,uzzing,ganing,haning,ualing,halling,iasing,auding,ieting,ceting,ouling,voring,ralling,garing,joring,oaming,oaking,roring,nelling,ooring,uelling,eaming,ooding,eaping,eeting,ooting,ooming,xiting,keting,ooking,ulling,airing,oaring,biting,outing,oiting,earing,naling,oading,eeding,ouring,eaking,aiming,illing,oining,eaning,onging,ealing,aining,eading¦4:thoming,melling,aboring,ivoting,weating,dfilling,onoring,eriting,imiting,tialling,rgining,otoring,linging,winging,lleting,louding,spelling,mpelling,heating,feating,opelling,choring,welling,ymaking,ctoring,calling,peating,iloring,laiting,utoring,uditing,mmaking,loating,iciting,waiting,mbating,voiding,otalling,nsoring,nselling,ocusing,itoring,eloping¦5:rselling,umpeting,atrolling,treating,tselling,rpreting,pringing,ummeting,ossoming,elmaking,eselling,rediting,totyping,onmaking,rfeiting,ntrolling¦5e:chmaking,dkeeping,severing,erouting,ecreting,ephoning,uthoring,ravening,reathing,pediting,erfering,eotyping,fringing,entoring,ombining,ompeting¦4e:emaking,eething,twining,rruling,chuting,xciting,rseding,scoping,edoring,pinging,lunging,agining,craping,pleting,eleting,nciting,nfining,ncoding,tponing,ecoding,writing,esaling,nvening,gnoring,evoting,mpeding,rvening,dhering,mpiling,storing,nviting,ploring¦3e:tining,nuring,saking,miring,haling,ceding,xuding,rining,nuting,laring,caring,miling,riding,hoking,piring,lading,curing,uading,noting,taping,futing,paring,hading,loding,siring,guring,vading,voking,during,niting,laning,caping,luting,muting,ruding,ciding,juring,laming,caling,hining,uoting,liding,ciling,duling,tuting,puting,cuting,coring,uiding,tiring,turing,siding,rading,enging,haping,buting,lining,taking,anging,haring,uiring,coming,mining,moting,suring,viding,luding¦2e:tring,zling,uging,oging,gling,iging,vring,fling,lging,obing,psing,pling,ubing,cling,dling,wsing,iking,rsing,dging,kling,ysing,tling,rging,eging,nsing,uning,osing,uming,using,ibing,bling,aging,ising,asing,ating¦2ie:rlying¦1e:zing,uing,cing,ving\",rev:\"ying:ie¦1ing:se,ke,te,we,ne,re,de,pe,me,le,c,he¦2ing:ll,ng,dd,ee,ye,oe,rg,us¦2ning:un¦2ging:og,ag,ug,ig,eg¦2ming:um¦2bing:ub,ab,eb,ob¦3ning:lan,can,hin,pin,win¦3ring:cur,lur,tir,tar,pur,car¦3ing:ait,del,eel,fin,eat,oat,eem,lel,ool,ein,uin¦3ping:rop,rap,top,uip,wap,hip,hop,lap,rip,cap¦3ming:tem,wim,rim,kim,lim¦3ting:mat,cut,pot,lit,lot,hat,set,pit,put¦3ding:hed,bed,bid¦3king:rek¦3ling:cil,pel¦3bing:rib¦4ning:egin¦4ing:isit,ruit,ilot,nsit,dget,rkel,ival,rcel¦4ring:efer,nfer¦4ting:rmit,mmit,ysit,dmit,emit,bmit,tfit,gret¦4ling:evel,xcel,ivel¦4ding:hred¦5ing:arget,posit,rofit¦5ring:nsfer¦5ting:nsmit,orget,cquit¦5ling:ancel,istil\",ex:\"3:adding,eating,aiming,aiding,airing,outing,gassing,setting,getting,putting,cutting,winning,sitting,betting,mapping,tapping,letting,bidding,hitting,tanning,netting,popping,fitting,capping,lapping,barring,banning,vetting,topping,rotting,tipping,potting,wetting,pitting,dipping,budding,hemming,pinning,jetting,kidding,padding,podding,sipping,wedding,bedding,donning,warring,penning,gutting,cueing,wadding,petting,ripping,napping,matting,tinning,binning,dimming,hopping,mopping,nodding,panning,rapping,ridding,sinning¦4:selling,falling,calling,waiting,editing,telling,rolling,heating,boating,hanging,beating,coating,singing,tolling,felling,polling,discing,seating,voiding,gelling,yelling,baiting,reining,ruining,seeking,spanning,stepping,knitting,emitting,slipping,quitting,dialing,omitting,clipping,shutting,skinning,abutting,flipping,trotting,cramming,fretting,suiting¦5:bringing,treating,spelling,stalling,trolling,expelling,rivaling,wringing,deterring,singeing,befitting,refitting¦6:enrolling,distilling,scrolling,strolling,caucusing,travelling¦7:installing,redefining,stencilling,recharging,overeating,benefiting,unraveling,programing¦9:reprogramming¦is:being¦2e:using,aging,owing¦3e:making,taking,coming,noting,hiring,filing,coding,citing,doping,baking,coping,hoping,lading,caring,naming,voting,riding,mining,curing,lining,ruling,typing,boring,dining,firing,hiding,piling,taping,waning,baling,boning,faring,honing,wiping,luring,timing,wading,piping,fading,biting,zoning,daring,waking,gaming,raking,ceding,tiring,coking,wining,joking,paring,gaping,poking,pining,coring,liming,toting,roping,wiring,aching¦4e:writing,storing,eroding,framing,smoking,tasting,wasting,phoning,shaking,abiding,braking,flaking,pasting,priming,shoring,sloping,withing,hinging¦5e:defining,refining,renaming,swathing,fringing,reciting¦1ie:dying,tying,lying,vying¦7e:sunbathing\"},Ra={fwd:\"1:mt¦2:llen¦3:iven,aken¦:ne¦y:in\",both:\"1:wn¦2:me,aten¦3:seen,bidden,isen¦4:roven,asten¦3l:pilt¦3d:uilt¦2e:itten¦1im:wum¦1eak:poken¦1ine:hone¦1ose:osen¦1in:gun¦1ake:woken¦ear:orn¦eal:olen¦eeze:ozen¦et:otten¦ink:unk¦ing:ung\",rev:\"2:un¦oken:eak¦ought:eek¦oven:eave¦1ne:o¦1own:ly¦1den:de¦1in:ay¦2t:am¦2n:ee¦3en:all¦4n:rive,sake,take¦5n:rgive\",ex:\"2:been¦3:seen,run¦4:given,taken¦5:shaken¦2eak:broken¦1ive:dove¦2y:flown¦3e:hidden,ridden¦1eek:sought¦1ake:woken¦1eave:woven\"},Qa={fwd:\"1:oes¦1ve:as\",both:\"1:xes¦2:zzes,ches,shes,sses¦3:iases¦2y:llies,plies¦1y:cies,bies,ties,vies,nies,pies,dies,ries,fies¦:s\",rev:\"1ies:ly¦2es:us,go,do¦3es:cho,eto\",ex:\"2:does,goes¦3:gasses¦5:focuses¦is:are¦3y:relies¦2y:flies¦2ve:has\"},Za={fwd:\"1st:e¦1est:l,m,f,s¦1iest:cey¦2est:or,ir¦3est:ver\",both:\"4:east¦5:hwest¦5lest:erful¦4est:weet,lgar,tter,oung¦4most:uter¦3est:ger,der,rey,iet,ong,ear¦3test:lat¦3most:ner¦2est:pt,ft,nt,ct,rt,ht¦2test:it¦2gest:ig¦1est:b,k,n,p,h,d,w¦iest:y\",rev:\"1:ttest,nnest,yest¦2:sest,stest,rmest,cest,vest,lmest,olest,ilest,ulest,ssest,imest,uest¦3:rgest,eatest,oorest,plest,allest,urest,iefest,uelest,blest,ugest,amest,yalest,ealest,illest,tlest,itest¦4:cerest,eriest,somest,rmalest,ndomest,motest,uarest,tiffest¦5:leverest,rangest¦ar:urthest¦3ey:riciest\",ex:\"best:good¦worst:bad¦5est:great¦4est:fast,full,fair,dull¦3test:hot,wet,fat¦4nest:thin¦1urthest:far¦3est:gay,shy,ill¦4test:neat¦4st:late,wide,fine,safe,cute,fake,pale,rare,rude,sore,ripe,dire¦6st:severe\"},_a={fwd:\"1:tistic,eable,lful,sful,ting,tty¦2:onate,rtable,geous,ced,seful,ctful¦3:ortive,ented¦arity:ear¦y:etic¦fulness:begone¦1ity:re¦1y:tiful,gic¦2ity:ile,imous,ilous,ime¦2ion:ated¦2eness:iving¦2y:trious¦2ation:iring¦2tion:vant¦3ion:ect¦3ce:mant,mantic¦3tion:irable¦3y:est,estic¦3m:mistic,listic¦3ess:ning¦4n:utious¦4on:rative,native,vative,ective¦4ce:erant\",both:\"1:king,wing¦2:alous,ltuous,oyful,rdous¦3:gorous,ectable,werful,amatic¦4:oised,usical,agical,raceful,ocused,lined,ightful¦5ness:stful,lding,itous,nuous,ulous,otous,nable,gious,ayful,rvous,ntous,lsive,peful,entle,ciful,osive,leful,isive,ncise,reful,mious¦5ty:ivacious¦5ties:ubtle¦5ce:ilient,adiant,atient¦5cy:icient¦5sm:gmatic¦5on:sessive,dictive¦5ity:pular,sonal,eative,entic¦5sity:uminous¦5ism:conic¦5nce:mperate¦5ility:mitable¦5ment:xcited¦5n:bitious¦4cy:brant,etent,curate¦4ility:erable,acable,icable,ptable¦4ty:nacious,aive,oyal,dacious¦4n:icious¦4ce:vient,erent,stent,ndent,dient,quent,ident¦4ness:adic,ound,hing,pant,sant,oing,oist,tute¦4icity:imple¦4ment:fined,mused¦4ism:otic¦4ry:dantic¦4ity:tund,eral¦4edness:hand¦4on:uitive¦4lity:pitable¦4sm:eroic,namic¦4sity:nerous¦3th:arm¦3ility:pable,bable,dable,iable¦3cy:hant,nant,icate¦3ness:red,hin,nse,ict,iet,ite,oud,ind,ied,rce¦3ion:lute¦3ity:ual,gal,volous,ial¦3ce:sent,fensive,lant,gant,gent,lent,dant¦3on:asive¦3m:fist,sistic,iastic¦3y:terious,xurious,ronic,tastic¦3ur:amorous¦3e:tunate¦3ation:mined¦3sy:rteous¦3ty:ain¦3ry:ave¦3ment:azed¦2ness:de,on,ue,rn,ur,ft,rp,pe,om,ge,rd,od,ay,ss,er,ll,oy,ap,ht,ld,ad,rt¦2inousness:umous¦2ity:neous,ene,id,ane¦2cy:bate,late¦2ation:ized¦2ility:oble,ible¦2y:odic¦2e:oving,aring¦2s:ost¦2itude:pt¦2dom:ee¦2ance:uring¦2tion:reet¦2ion:oted¦2sion:ending¦2liness:an¦2or:rdent¦1th:ung¦1e:uable¦1ness:w,h,k,f¦1ility:mble¦1or:vent¦1ement:ging¦1tiquity:ncient¦1ment:hed¦verty:or¦ength:ong¦eat:ot¦pth:ep¦iness:y\",rev:\"\",ex:\"5:forceful,humorous¦8:charismatic¦13:understanding¦5ity:active¦11ness:adventurous,inquisitive,resourceful¦8on:aggressive,automatic,perceptive¦7ness:amorous,fatuous,furtive,ominous,serious¦5ness:ample,sweet¦12ness:apprehensive,cantankerous,contemptuous,ostentatious¦13ness:argumentative,conscientious¦9ness:assertive,facetious,imperious,inventive,oblivious,rapacious,receptive,seditious,whimsical¦10ness:attractive,expressive,impressive,loquacious,salubrious,thoughtful¦3edom:boring¦4ness:calm,fast,keen,tame¦8ness:cheerful,gracious,specious,spurious,timorous,unctuous¦5sity:curious¦9ion:deliberate¦8ion:desperate¦6e:expensive¦7ce:fragrant¦3y:furious¦9ility:ineluctable¦6ism:mystical¦8ity:physical,proactive,sensitive,vertical¦5cy:pliant¦7ity:positive¦9ity:practical¦12ism:professional¦6ce:prudent¦3ness:red¦6cy:vagrant¦3dom:wise\"};const Xa=function(e=\"\",t={}){let n=function(e,t={}){return t.hasOwnProperty(e)?t[e]:null}(e,t.ex);return n=n||function(e,t=[]){for(let n=0;n<t.length;n+=1)if(e.endsWith(t[n]))return e;return null}(e,t.same),n=n||function(e,t,n={}){t=t||{};for(let r=e.length-1;r>=1;r-=1){let o=e.length-r,a=e.substring(o,e.length);if(!0===t.hasOwnProperty(a))return e.slice(0,o)+t[a];if(!0===n.hasOwnProperty(a))return e.slice(0,o)+n[a]}return t.hasOwnProperty(\"\")?e+t[\"\"]:n.hasOwnProperty(\"\")?e+n[\"\"]:null}(e,t.fwd,t.both),n=n||e,n},Ya=function(e){return Object.entries(e).reduce(((e,t)=>(e[t[1]]=t[0],e)),{})},ei=function(e={}){return{reversed:!0,both:Ya(e.both),ex:Ya(e.ex),fwd:e.rev||{}}},ti=/^([0-9]+)/,ni=function(e){let t=function(e){let t={};return e.split(\"¦\").forEach((e=>{let[n,r]=e.split(\":\");r=(r||\"\").split(\",\"),r.forEach((e=>{t[e]=n}))})),t}(e);return Object.keys(t).reduce(((e,n)=>(e[n]=function(e=\"\",t=\"\"){let n=(t=String(t)).match(ti);if(null===n)return t;let r=Number(n[1])||0;return e.substring(0,r)+t.replace(ti,\"\")}(n,t[n]),e)),{})},ri=function(e={}){return\"string\"==typeof e&&(e=JSON.parse(e)),e.fwd=ni(e.fwd||\"\"),e.both=ni(e.both||\"\"),e.rev=ni(e.rev||\"\"),e.ex=ni(e.ex||\"\"),e},oi=ri({fwd:\"1:tted,wed,gged,nned,een,rred,pped,yed,bbed,oed,dded,rd,wn,mmed¦2:eed,nded,et,hted,st,oled,ut,emed,eled,lded,ken,rt,nked,apt,ant,eped,eked¦3:eared,eat,eaded,nelled,ealt,eeded,ooted,eaked,eaned,eeted,mited,bid,uit,ead,uited,ealed,geted,velled,ialed,belled¦4:ebuted,hined,comed¦y:ied¦ome:ame¦ear:ore¦ind:ound¦ing:ung,ang¦ep:pt¦ink:ank,unk¦ig:ug¦all:ell¦ee:aw¦ive:ave¦eeze:oze¦old:eld¦ave:ft¦ake:ook¦ell:old¦ite:ote¦ide:ode¦ine:one¦in:un,on¦eal:ole¦im:am¦ie:ay¦and:ood¦1ise:rose¦1eak:roke¦1ing:rought¦1ive:rove¦1el:elt¦1id:bade¦1et:got¦1y:aid¦1it:sat¦3e:lid¦3d:pent\",both:\"1:aed,fed,xed,hed¦2:sged,xted,wled,rped,lked,kied,lmed,lped,uped,bted,rbed,rked,wned,rled,mped,fted,mned,mbed,zzed,omed,ened,cked,gned,lted,sked,ued,zed,nted,ered,rted,rmed,ced,sted,rned,ssed,rded,pted,ved,cted¦3:cled,eined,siped,ooned,uked,ymed,jored,ouded,ioted,oaned,lged,asped,iged,mured,oided,eiled,yped,taled,moned,yled,lit,kled,oaked,gled,naled,fled,uined,oared,valled,koned,soned,aided,obed,ibed,meted,nicked,rored,micked,keted,vred,ooped,oaded,rited,aired,auled,filled,ouled,ooded,ceted,tolled,oited,bited,aped,tled,vored,dled,eamed,nsed,rsed,sited,owded,pled,sored,rged,osed,pelled,oured,psed,oated,loned,aimed,illed,eured,tred,ioned,celled,bled,wsed,ooked,oiled,itzed,iked,iased,onged,ased,ailed,uned,umed,ained,auded,nulled,ysed,eged,ised,aged,oined,ated,used,dged,doned¦4:ntied,efited,uaked,caded,fired,roped,halled,roked,himed,culed,tared,lared,tuted,uared,routed,pited,naked,miled,houted,helled,hared,cored,caled,tired,peated,futed,ciled,called,tined,moted,filed,sided,poned,iloted,honed,lleted,huted,ruled,cured,named,preted,vaded,sured,talled,haled,peded,gined,nited,uided,ramed,feited,laked,gured,ctored,unged,pired,cuted,voked,eloped,ralled,rined,coded,icited,vided,uaded,voted,mined,sired,noted,lined,nselled,luted,jured,fided,puted,piled,pared,olored,cided,hoked,enged,tured,geoned,cotted,lamed,uiled,waited,udited,anged,luded,mired,uired,raded¦5:modelled,izzled,eleted,umpeted,ailored,rseded,treated,eduled,ecited,rammed,eceded,atrolled,nitored,basted,twined,itialled,ncited,gnored,ploded,xcited,nrolled,namelled,plored,efeated,redited,ntrolled,nfined,pleted,llided,lcined,eathed,ibuted,lloted,dhered,cceded¦3ad:sled¦2aw:drew¦2ot:hot¦2ke:made¦2ow:hrew,grew¦2ose:hose¦2d:ilt¦2in:egan¦1un:ran¦1ink:hought¦1ick:tuck¦1ike:ruck¦1eak:poke,nuck¦1it:pat¦1o:did¦1ow:new¦1ake:woke¦go:went\",rev:\"3:rst,hed,hut,cut,set¦4:tbid¦5:dcast,eread,pread,erbid¦ought:uy,eek¦1ied:ny,ly,dy,ry,fy,py,vy,by,ty,cy¦1ung:ling,ting,wing¦1pt:eep¦1ank:rink¦1ore:bear,wear¦1ave:give¦1oze:reeze¦1ound:rind,wind¦1ook:take,hake¦1aw:see¦1old:sell¦1ote:rite¦1ole:teal¦1unk:tink¦1am:wim¦1ay:lie¦1ood:tand¦1eld:hold¦2d:he,ge,re,le,leed,ne,reed,be,ye,lee,pe,we¦2ed:dd,oy,or,ey,gg,rr,us,ew,to¦2ame:ecome,rcome¦2ped:ap¦2ged:ag,og,ug,eg¦2bed:ub,ab,ib,ob¦2lt:neel¦2id:pay¦2ang:pring¦2ove:trive¦2med:um¦2ode:rride¦2at:ysit¦3ted:mit,hat,mat,lat,pot,rot,bat¦3ed:low,end,tow,und,ond,eem,lay,cho,dow,xit,eld,ald,uld,law,lel,eat,oll,ray,ank,fin,oam,out,how,iek,tay,haw,ait,vet,say,cay,bow¦3d:ste,ede,ode,ete,ree,ude,ame,oke,ote,ime,ute,ade¦3red:lur,cur,pur,car¦3ped:hop,rop,uip,rip,lip,tep,top¦3ded:bed,rod,kid¦3ade:orbid¦3led:uel¦3ned:lan,can,kin,pan,tun¦3med:rim,lim¦4ted:quit,llot¦4ed:pear,rrow,rand,lean,mand,anel,pand,reet,link,abel,evel,imit,ceed,ruit,mind,peal,veal,hool,head,pell,well,mell,uell,band,hear,weak¦4led:nnel,qual,ebel,ivel¦4red:nfer,efer,sfer¦4n:sake,trew¦4d:ntee¦4ded:hred¦4ned:rpin¦5ed:light,nceal,right,ndear,arget,hread,eight,rtial,eboot¦5d:edite,nvite¦5ted:egret¦5led:ravel\",ex:\"2:been,upped¦3:added,aged,aided,aimed,aired,bid,died,dyed,egged,erred,eyed,fit,gassed,hit,lied,owed,pent,pied,tied,used,vied,oiled,outed,banned,barred,bet,canned,cut,dipped,donned,ended,feed,inked,jarred,let,manned,mowed,netted,padded,panned,pitted,popped,potted,put,set,sewn,sowed,tanned,tipped,topped,vowed,weed,bowed,jammed,binned,dimmed,hopped,mopped,nodded,pinned,rigged,sinned,towed,vetted¦4:ached,baked,baled,boned,bored,called,caned,cared,ceded,cited,coded,cored,cubed,cured,dared,dined,edited,exited,faked,fared,filed,fined,fired,fuelled,gamed,gelled,hired,hoped,joked,lined,mined,named,noted,piled,poked,polled,pored,pulled,reaped,roamed,rolled,ruled,seated,shed,sided,timed,tolled,toned,voted,waited,walled,waned,winged,wiped,wired,zoned,yelled,tamed,lubed,roped,faded,mired,caked,honed,banged,culled,heated,raked,welled,banded,beat,cast,cooled,cost,dealt,feared,folded,footed,handed,headed,heard,hurt,knitted,landed,leaked,leapt,linked,meant,minded,molded,neared,needed,peaked,plodded,plotted,pooled,quit,read,rooted,sealed,seeded,seeped,shipped,shunned,skimmed,slammed,sparred,stemmed,stirred,suited,thinned,twinned,swayed,winked,dialed,abutted,blotted,fretted,healed,heeded,peeled,reeled¦5:basted,cheated,equalled,eroded,exiled,focused,opined,pleated,primed,quoted,scouted,shored,sloped,smoked,sniped,spelled,spouted,routed,staked,stored,swelled,tasted,treated,wasted,smelled,dwelled,honored,prided,quelled,eloped,scared,coveted,sweated,breaded,cleared,debuted,deterred,freaked,modeled,pleaded,rebutted,speeded¦6:anchored,defined,endured,impaled,invited,refined,revered,strolled,cringed,recast,thrust,unfolded¦7:authored,combined,competed,conceded,convened,excreted,extruded,redefined,restored,secreted,rescinded,welcomed¦8:expedited,infringed¦9:interfered,intervened,persevered¦10:contravened¦eat:ate¦is:was¦go:went¦are:were¦3d:bent,lent,rent,sent¦3e:bit,fled,hid,lost¦3ed:bled,bred¦2ow:blew,grew¦1uy:bought¦2tch:caught¦1o:did¦1ive:dove,gave¦2aw:drew¦2ed:fed¦2y:flew,laid,paid,said¦1ight:fought¦1et:got¦2ve:had¦1ang:hung¦2ad:led¦2ght:lit¦2ke:made¦2et:met¦1un:ran¦1ise:rose¦1it:sat¦1eek:sought¦1each:taught¦1ake:woke,took¦1eave:wove¦2ise:arose¦1ear:bore,tore,wore¦1ind:bound,found,wound¦2eak:broke¦2ing:brought,wrung¦1ome:came¦2ive:drove¦1ig:dug¦1all:fell¦2el:felt¦4et:forgot¦1old:held¦2ave:left¦1ing:rang,sang¦1ide:rode¦1ink:sank¦1ee:saw¦2ine:shone¦4e:slid¦1ell:sold,told¦4d:spent¦2in:spun¦1in:won\"}),ai=ri(Qa),ii=ri(Ua),si=ri(Ra),li=ei(oi),ui=ei(ai),ci=ei(ii),hi=ei(si),di=ri(qa),gi=ri(Za);var mi={fromPast:oi,fromPresent:ai,fromGerund:ii,fromParticiple:si,toPast:li,toPresent:ui,toGerund:ci,toParticiple:hi,toComparative:di,toSuperlative:gi,fromComparative:ei(di),fromSuperlative:ei(gi),adjToNoun:ri(_a)},pi=[\"academy\",\"administration\",\"agence\",\"agences\",\"agencies\",\"agency\",\"airlines\",\"airways\",\"army\",\"assoc\",\"associates\",\"association\",\"assurance\",\"authority\",\"autorite\",\"aviation\",\"bank\",\"banque\",\"board\",\"boys\",\"brands\",\"brewery\",\"brotherhood\",\"brothers\",\"bureau\",\"cafe\",\"co\",\"caisse\",\"capital\",\"care\",\"cathedral\",\"center\",\"centre\",\"chemicals\",\"choir\",\"chronicle\",\"church\",\"circus\",\"clinic\",\"clinique\",\"club\",\"co\",\"coalition\",\"coffee\",\"collective\",\"college\",\"commission\",\"committee\",\"communications\",\"community\",\"company\",\"comprehensive\",\"computers\",\"confederation\",\"conference\",\"conseil\",\"consulting\",\"containers\",\"corporation\",\"corps\",\"corp\",\"council\",\"crew\",\"data\",\"departement\",\"department\",\"departments\",\"design\",\"development\",\"directorate\",\"division\",\"drilling\",\"education\",\"eglise\",\"electric\",\"electricity\",\"energy\",\"ensemble\",\"enterprise\",\"enterprises\",\"entertainment\",\"estate\",\"etat\",\"faculty\",\"faction\",\"federation\",\"financial\",\"fm\",\"foundation\",\"fund\",\"gas\",\"gazette\",\"girls\",\"government\",\"group\",\"guild\",\"herald\",\"holdings\",\"hospital\",\"hotel\",\"hotels\",\"inc\",\"industries\",\"institut\",\"institute\",\"institutes\",\"insurance\",\"international\",\"interstate\",\"investment\",\"investments\",\"investors\",\"journal\",\"laboratory\",\"labs\",\"llc\",\"ltd\",\"limited\",\"machines\",\"magazine\",\"management\",\"marine\",\"marketing\",\"markets\",\"media\",\"memorial\",\"ministere\",\"ministry\",\"military\",\"mobile\",\"motor\",\"motors\",\"musee\",\"museum\",\"news\",\"observatory\",\"office\",\"oil\",\"optical\",\"orchestra\",\"organization\",\"partners\",\"partnership\",\"petrol\",\"petroleum\",\"pharmacare\",\"pharmaceutical\",\"pharmaceuticals\",\"pizza\",\"plc\",\"police\",\"politburo\",\"polytechnic\",\"post\",\"power\",\"press\",\"productions\",\"quartet\",\"radio\",\"reserve\",\"resources\",\"restaurant\",\"restaurants\",\"savings\",\"school\",\"securities\",\"service\",\"services\",\"societe\",\"subsidiary\",\"society\",\"sons\",\"subcommittee\",\"syndicat\",\"systems\",\"telecommunications\",\"telegraph\",\"television\",\"times\",\"tribunal\",\"tv\",\"union\",\"university\",\"utilities\",\"workers\"].reduce(((e,t)=>(e[t]=!0,e)),{}),fi=[\"atoll\",\"basin\",\"bay\",\"beach\",\"bluff\",\"bog\",\"camp\",\"canyon\",\"canyons\",\"cape\",\"cave\",\"caves\",\"cliffs\",\"coast\",\"cove\",\"coves\",\"crater\",\"crossing\",\"creek\",\"desert\",\"dune\",\"dunes\",\"downs\",\"estates\",\"escarpment\",\"estuary\",\"falls\",\"fjord\",\"fjords\",\"forest\",\"forests\",\"glacier\",\"gorge\",\"gorges\",\"grove\",\"gulf\",\"gully\",\"highland\",\"heights\",\"hollow\",\"hill\",\"hills\",\"inlet\",\"island\",\"islands\",\"isthmus\",\"junction\",\"knoll\",\"lagoon\",\"lake\",\"lakeshore\",\"marsh\",\"marshes\",\"mount\",\"mountain\",\"mountains\",\"narrows\",\"peninsula\",\"plains\",\"plateau\",\"pond\",\"rapids\",\"ravine\",\"reef\",\"reefs\",\"ridge\",\"river\",\"rivers\",\"sandhill\",\"shoal\",\"shore\",\"shoreline\",\"shores\",\"strait\",\"straits\",\"springs\",\"stream\",\"swamp\",\"tombolo\",\"trail\",\"trails\",\"trench\",\"valley\",\"vallies\",\"village\",\"volcano\",\"waterfall\",\"watershed\",\"wetland\",\"woods\",\"acres\",\"burough\",\"county\",\"district\",\"municipality\",\"prefecture\",\"province\",\"region\",\"reservation\",\"state\",\"territory\",\"borough\",\"metropolis\",\"downtown\",\"uptown\",\"midtown\",\"city\",\"town\",\"township\",\"hamlet\",\"country\",\"kingdom\",\"enclave\",\"neighbourhood\",\"neighborhood\",\"kingdom\",\"ward\",\"zone\",\"airport\",\"amphitheater\",\"arch\",\"arena\",\"auditorium\",\"bar\",\"barn\",\"basilica\",\"battlefield\",\"bridge\",\"building\",\"castle\",\"centre\",\"coliseum\",\"cineplex\",\"complex\",\"dam\",\"farm\",\"field\",\"fort\",\"garden\",\"gardens\",\"gymnasium\",\"hall\",\"house\",\"levee\",\"library\",\"manor\",\"memorial\",\"monument\",\"museum\",\"gallery\",\"palace\",\"pillar\",\"pits\",\"plantation\",\"playhouse\",\"quarry\",\"sportsfield\",\"sportsplex\",\"stadium\",\"terrace\",\"terraces\",\"theater\",\"tower\",\"park\",\"parks\",\"site\",\"ranch\",\"raceway\",\"sportsplex\",\"ave\",\"st\",\"street\",\"rd\",\"road\",\"lane\",\"landing\",\"crescent\",\"cr\",\"way\",\"tr\",\"terrace\",\"avenue\"].reduce(((e,t)=>(e[t]=!0,e)),{}),bi=[[/([^v])ies$/i,\"$1y\"],[/(ise)s$/i,\"$1\"],[/(kn|[^o]l|w)ives$/i,\"$1ife\"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,\"$1f\"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,\"$1f\"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,\"$1a\"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,\"$1us\"],[/(buffal|tomat|tornad)(oes)$/i,\"$1o\"],[/(ause)s$/i,\"$1\"],[/(ease)s$/i,\"$1\"],[/(ious)es$/i,\"$1\"],[/(ouse)s$/i,\"$1\"],[/(ose)s$/i,\"$1\"],[/(..ase)s$/i,\"$1\"],[/(..[aeiu]s)es$/i,\"$1\"],[/(vert|ind|cort)(ices)$/i,\"$1ex\"],[/(matr|append)(ices)$/i,\"$1ix\"],[/([xo]|ch|ss|sh)es$/i,\"$1\"],[/men$/i,\"man\"],[/(n)ews$/i,\"$1ews\"],[/([ti])a$/i,\"$1um\"],[/([^aeiouy]|qu)ies$/i,\"$1y\"],[/(s)eries$/i,\"$1eries\"],[/(m)ovies$/i,\"$1ovie\"],[/(cris|ax|test)es$/i,\"$1is\"],[/(alias|status)es$/i,\"$1\"],[/(ss)$/i,\"$1\"],[/(ic)s$/i,\"$1\"],[/s$/i,\"\"]];const vi=function(e,t){const{irregularPlurals:n}=t.two,r=(o=n,Object.keys(o).reduce(((e,t)=>(e[o[t]]=t,e)),{}));var o;if(r.hasOwnProperty(e))return r[e];for(let t=0;t<bi.length;t++)if(!0===bi[t][0].test(e))return e=e.replace(bi[t][0],bi[t][1]);return e};var yi={toPlural:Ao,toSingular:vi,all:function(e,t){const n=[e],r=Ao(e,t);r!==e&&n.push(r);const o=vi(e,t);return o!==e&&n.push(o),n}};let wi={Gerund:[\"ing\"],Actor:[\"erer\"],Infinitive:[\"ate\",\"ize\",\"tion\",\"rify\",\"then\",\"ress\",\"ify\",\"age\",\"nce\",\"ect\",\"ise\",\"ine\",\"ish\",\"ace\",\"ash\",\"ure\",\"tch\",\"end\",\"ack\",\"and\",\"ute\",\"ade\",\"ock\",\"ite\",\"ase\",\"ose\",\"use\",\"ive\",\"int\",\"nge\",\"lay\",\"est\",\"ain\",\"ant\",\"ent\",\"eed\",\"er\",\"le\",\"unk\",\"ung\",\"upt\",\"en\"],PastTense:[\"ept\",\"ed\",\"lt\",\"nt\",\"ew\",\"ld\"],PresentTense:[\"rks\",\"cks\",\"nks\",\"ngs\",\"mps\",\"tes\",\"zes\",\"ers\",\"les\",\"acks\",\"ends\",\"ands\",\"ocks\",\"lays\",\"eads\",\"lls\",\"els\",\"ils\",\"ows\",\"nds\",\"ays\",\"ams\",\"ars\",\"ops\",\"ffs\",\"als\",\"urs\",\"lds\",\"ews\",\"ips\",\"es\",\"ts\",\"ns\"],Participle:[\"ken\",\"wn\"]};wi=Object.keys(wi).reduce(((e,t)=>(wi[t].forEach((n=>e[n]=t)),e)),{});const ki=function(e){const t=e.substring(e.length-3);if(!0===wi.hasOwnProperty(t))return wi[t];const n=e.substring(e.length-2);if(!0===wi.hasOwnProperty(n))return wi[n];return\"s\"===e.substring(e.length-1)?\"PresentTense\":null},Pi={are:\"be\",were:\"be\",been:\"be\",is:\"be\",am:\"be\",was:\"be\",be:\"be\",being:\"be\"},Ai=function(e,t,n){const{fromPast:r,fromPresent:o,fromGerund:a,fromParticiple:i}=t.two.models,{prefix:s,verb:l,particle:u}=function(e,t){let n=\"\",r={};t.one&&t.one.prefixes&&(r=t.one.prefixes);let[o,a]=e.split(/ /);return a&&!0===r[o]&&(n=o,o=a,a=\"\"),{prefix:n,verb:o,particle:a}}(e,t);let c=\"\";if(n||(n=ki(e)),Pi.hasOwnProperty(e))c=Pi[e];else if(\"Participle\"===n)c=Xa(l,i);else if(\"PastTense\"===n)c=Xa(l,r);else if(\"PresentTense\"===n)c=Xa(l,o);else{if(\"Gerund\"!==n)return e;c=Xa(l,a)}return u&&(c+=\" \"+u),s&&(c=s+\" \"+c),c},Ci=function(e,t){const{toPast:n,toPresent:r,toGerund:o,toParticiple:a}=t.two.models;if(\"be\"===e)return{Infinitive:e,Gerund:\"being\",PastTense:\"was\",PresentTense:\"is\"};const[i,s]=(e=>/ /.test(e)?e.split(/ /):[e,\"\"])(e),l={Infinitive:i,PastTense:Xa(i,n),PresentTense:Xa(i,r),Gerund:Xa(i,o),FutureTense:\"will \"+i};let u=Xa(i,a);if(u!==e&&u!==l.PastTense){const n=t.one.lexicon||{};\"Participle\"!==n[u]&&\"Adjective\"!==n[u]||(\"play\"===e&&(u=\"played\"),l.Participle=u)}return s&&Object.keys(l).forEach((e=>{l[e]+=\" \"+s})),l};var Ni={toInfinitive:Ai,conjugate:Ci,all:function(e,t){const n=Ci(e,t);return delete n.FutureTense,Object.values(n).filter((e=>e))}};const ji=function(e,t){const n=t.two.models.toSuperlative;return Xa(e,n)},xi=function(e,t){const n=t.two.models.toComparative;return Xa(e,n)},Ii=function(e=\"\",t=[]){const n=e.length;for(let r=n<=6?n-1:6;r>=1;r-=1){const o=e.substring(n-r,e.length);if(!0===t[o.length].hasOwnProperty(o)){return e.slice(0,n-r)+t[o.length][o]}}return null},Ti=\"ically\",Di=new Set([\"analyt\"+Ti,\"chem\"+Ti,\"class\"+Ti,\"clin\"+Ti,\"crit\"+Ti,\"ecolog\"+Ti,\"electr\"+Ti,\"empir\"+Ti,\"frant\"+Ti,\"grammat\"+Ti,\"ident\"+Ti,\"ideolog\"+Ti,\"log\"+Ti,\"mag\"+Ti,\"mathemat\"+Ti,\"mechan\"+Ti,\"med\"+Ti,\"method\"+Ti,\"method\"+Ti,\"mus\"+Ti,\"phys\"+Ti,\"phys\"+Ti,\"polit\"+Ti,\"pract\"+Ti,\"rad\"+Ti,\"satir\"+Ti,\"statist\"+Ti,\"techn\"+Ti,\"technolog\"+Ti,\"theoret\"+Ti,\"typ\"+Ti,\"vert\"+Ti,\"whims\"+Ti]),Hi=[null,{},{ly:\"\"},{ily:\"y\",bly:\"ble\",ply:\"ple\"},{ally:\"al\",rply:\"rp\"},{ually:\"ual\",ially:\"ial\",cally:\"cal\",eally:\"eal\",rally:\"ral\",nally:\"nal\",mally:\"mal\",eeply:\"eep\",eaply:\"eap\"},{ically:\"ic\"}],Ei=new Set([\"early\",\"only\",\"hourly\",\"daily\",\"weekly\",\"monthly\",\"yearly\",\"mostly\",\"duly\",\"unduly\",\"especially\",\"undoubtedly\",\"conversely\",\"namely\",\"exceedingly\",\"presumably\",\"accordingly\",\"overly\",\"best\",\"latter\",\"little\",\"long\",\"low\"]),Gi={wholly:\"whole\",fully:\"full\",truly:\"true\",gently:\"gentle\",singly:\"single\",customarily:\"customary\",idly:\"idle\",publically:\"public\",quickly:\"quick\",superbly:\"superb\",cynically:\"cynical\",well:\"good\"},Oi=[null,{y:\"ily\"},{ly:\"ly\",ic:\"ically\"},{ial:\"ially\",ual:\"ually\",tle:\"tly\",ble:\"bly\",ple:\"ply\",ary:\"arily\"},{},{},{}],Fi={cool:\"cooly\",whole:\"wholly\",full:\"fully\",good:\"well\",idle:\"idly\",public:\"publicly\",single:\"singly\",special:\"especially\"},Vi=function(e){if(Fi.hasOwnProperty(e))return Fi[e];let t=Ii(e,Oi);return t||(t=e+\"ly\"),t};var zi={toSuperlative:ji,toComparative:xi,toAdverb:Vi,toNoun:function(e,t){const n=t.two.models.adjToNoun;return Xa(e,n)},fromAdverb:function(e){return e.endsWith(\"ly\")?Di.has(e)?e.replace(/ically/,\"ical\"):Ei.has(e)?null:Gi.hasOwnProperty(e)?Gi[e]:Ii(e,Hi)||e:null},fromSuperlative:function(e,t){const n=t.two.models.fromSuperlative;return Xa(e,n)},fromComparative:function(e,t){const n=t.two.models.fromComparative;return Xa(e,n)},all:function(e,t){let n=[e];return n.push(ji(e,t)),n.push(xi(e,t)),n.push(Vi(e)),n=n.filter((e=>e)),n=new Set(n),Array.from(n)}},Bi={noun:yi,verb:Ni,adjective:zi},Si={Singular:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.noun.toPlural(e,r);o[a]||(t[a]=t[a]||\"Plural\")},Actor:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.noun.toPlural(e,r);o[a]||(t[a]=t[a]||[\"Plural\",\"Actor\"])},Comparable:(e,t,n,r)=>{const o=r.one.lexicon,{toSuperlative:a,toComparative:i}=n.two.transform.adjective,s=a(e,r);o[s]||(t[s]=t[s]||\"Superlative\");const l=i(e,r);o[l]||(t[l]=t[l]||\"Comparative\"),t[e]=\"Adjective\"},Demonym:(e,t,n,r)=>{const o=n.two.transform.noun.toPlural(e,r);t[o]=t[o]||[\"Demonym\",\"Plural\"]},Infinitive:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.verb.conjugate(e,r);Object.entries(a).forEach((e=>{o[e[1]]||t[e[1]]||\"FutureTense\"===e[0]||(t[e[1]]=e[0])}))},PhrasalVerb:(e,t,n,r)=>{const o=r.one.lexicon;t[e]=[\"PhrasalVerb\",\"Infinitive\"];const a=r.one._multiCache,[i,s]=e.split(\" \");o[i]||(t[i]=t[i]||\"Infinitive\");const l=n.two.transform.verb.conjugate(i,r);delete l.FutureTense,Object.entries(l).forEach((e=>{if(\"Actor\"===e[0]||\"\"===e[1])return;t[e[1]]||o[e[1]]||(t[e[1]]=e[0]),a[e[1]]=2;const n=e[1]+\" \"+s;t[n]=t[n]||[e[0],\"PhrasalVerb\"]}))},Multiple:(e,t)=>{t[e]=[\"Multiple\",\"Cardinal\"],t[e+\"th\"]=[\"Multiple\",\"Ordinal\"],t[e+\"ths\"]=[\"Multiple\",\"Fraction\"]},Cardinal:(e,t)=>{t[e]=[\"TextValue\",\"Cardinal\"]},Ordinal:(e,t)=>{t[e]=[\"TextValue\",\"Ordinal\"],t[e+\"s\"]=[\"TextValue\",\"Fraction\"]},Place:(e,t)=>{t[e]=[\"Place\",\"ProperNoun\"]},Region:(e,t)=>{t[e]=[\"Region\",\"ProperNoun\"]}};const $i={e:[\"mice\",\"louse\",\"antennae\",\"formulae\",\"nebulae\",\"vertebrae\",\"vitae\"],i:[\"tia\",\"octopi\",\"viri\",\"radii\",\"nuclei\",\"fungi\",\"cacti\",\"stimuli\"],n:[\"men\"],t:[\"feet\"]},Mi=new Set([\"israelis\",\"menus\",\"logos\"]),Li=[\"bus\",\"mas\",\"was\",\"ias\",\"xas\",\"vas\",\"cis\",\"lis\",\"nis\",\"ois\",\"ris\",\"sis\",\"tis\",\"xis\",\"aus\",\"cus\",\"eus\",\"fus\",\"gus\",\"ius\",\"lus\",\"nus\",\"das\",\"ous\",\"pus\",\"rus\",\"sus\",\"tus\",\"xus\",\"aos\",\"igos\",\"ados\",\"ogos\",\"'s\",\"ss\"],Ki=function(e){if(!e||e.length<=3)return!1;if(Mi.has(e))return!0;const t=e[e.length-1];return $i.hasOwnProperty(t)?$i[t].find((t=>e.endsWith(t))):\"s\"===t&&!Li.find((t=>e.endsWith(t)))};var Ji={two:{quickSplit:function(e){const t=/[,:;]/,n=[];return e.forEach((e=>{let r=0;e.forEach(((o,a)=>{t.test(o.post)&&function(e,t){const n=/^[0-9]+$/,r=e[t];if(!r)return!1;const o=new Set([\"may\",\"april\",\"august\",\"jan\"]);if(\"like\"===r.normal||o.has(r.normal))return!1;if(r.tags.has(\"Place\")||r.tags.has(\"Date\"))return!1;if(e[t-1]){const n=e[t-1];if(n.tags.has(\"Date\")||o.has(n.normal))return!1;if(n.tags.has(\"Adjective\")||r.tags.has(\"Adjective\"))return!1}const a=r.normal;return 1!==a.length&&2!==a.length&&4!==a.length||!n.test(a)}(e,a+1)&&(n.push(e.slice(r,a+1)),r=a+1)})),r<e.length&&n.push(e.slice(r,e.length))})),n},expandLexicon:function(e,t){const{methods:n,model:r}=t,o={},a={};return Object.keys(e).forEach((t=>{const i=e[t],s=(t=(t=t.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);s.length>1&&(void 0===a[s[0]]||s.length>a[s[0]])&&(a[s[0]]=s.length),!0===Si.hasOwnProperty(i)&&Si[i](t,o,n,r),o[t]=o[t]||i})),delete o[\"\"],delete o.null,delete o[\" \"],{lex:o,_multi:a}},transform:Bi,looksPlural:Ki}};const Wi={one:{lexicon:{}},two:{models:mi}},qi={\"Actor|Verb\":\"Actor\",\"Adj|Gerund\":\"Adjective\",\"Adj|Noun\":\"Adjective\",\"Adj|Past\":\"Adjective\",\"Adj|Present\":\"Adjective\",\"Noun|Verb\":\"Singular\",\"Noun|Gerund\":\"Gerund\",\"Person|Noun\":\"Noun\",\"Person|Date\":\"Month\",\"Person|Verb\":\"FirstName\",\"Person|Place\":\"Person\",\"Person|Adj\":\"Comparative\",\"Plural|Verb\":\"Plural\",\"Unit|Noun\":\"Noun\"},Ui=function(e,t){const n={model:t,methods:Ji},{lex:r,_multi:o}=Ji.two.expandLexicon(e,n);return Object.assign(t.one.lexicon,r),Object.assign(t.one._multiCache,o),t},Ri=function(e,t,n){const r=Ci(e,Wi);t[r.PastTense]=t[r.PastTense]||\"PastTense\",t[r.Gerund]=t[r.Gerund]||\"Gerund\",!0===n&&(t[r.PresentTense]=t[r.PresentTense]||\"PresentTense\")},Qi=function(e,t,n){const r=ji(e,n);t[r]=t[r]||\"Superlative\";const o=xi(e,n);t[o]=t[o]||\"Comparative\"},Zi=function(e,t){const n={},r=t.one.lexicon;return Object.keys(e).forEach((o=>{const a=e[o];if(n[o]=qi[a],\"Noun|Verb\"!==a&&\"Person|Verb\"!==a&&\"Actor|Verb\"!==a||Ri(o,r,!1),\"Adj|Present\"===a&&(Ri(o,r,!0),Qi(o,r,t)),\"Person|Adj\"===a&&Qi(o,r,t),\"Adj|Gerund\"===a||\"Noun|Gerund\"===a){const e=Ai(o,Wi,\"Gerund\");r[e]||(n[e]=\"Infinitive\")}if(\"Noun|Gerund\"!==a&&\"Adj|Noun\"!==a&&\"Person|Noun\"!==a||function(e,t,n){const r=Ao(e,n);t[r]=t[r]||\"Plural\"}(o,r,t),\"Adj|Past\"===a){const e=Ai(o,Wi,\"PastTense\");r[e]||(n[e]=\"Infinitive\")}})),t=Ui(n,t)};let _i={one:{_multiCache:{},lexicon:No,frozenLex:{\"20th century fox\":\"Organization\",\"7 eleven\":\"Organization\",\"motel 6\":\"Organization\",\"excuse me\":\"Expression\",\"financial times\":\"Organization\",\"guns n roses\":\"Organization\",\"la z boy\":\"Organization\",\"labour party\":\"Organization\",\"new kids on the block\":\"Organization\",\"new york times\":\"Organization\",\"the guess who\":\"Organization\",\"thin lizzy\":\"Organization\",\"prime minister\":\"Actor\",\"free market\":\"Singular\",\"lay up\":\"Singular\",\"living room\":\"Singular\",\"living rooms\":\"Plural\",\"spin off\":\"Singular\",\"appeal court\":\"Uncountable\",\"cold war\":\"Uncountable\",\"gene pool\":\"Uncountable\",\"machine learning\":\"Uncountable\",\"nail polish\":\"Uncountable\",\"time off\":\"Uncountable\",\"take part\":\"Infinitive\",\"bill gates\":\"Person\",\"doctor who\":\"Person\",\"dr who\":\"Person\",\"he man\":\"Person\",\"iron man\":\"Person\",\"kid cudi\":\"Person\",\"run dmc\":\"Person\",\"rush limbaugh\":\"Person\",\"snow white\":\"Person\",\"tiger woods\":\"Person\",\"brand new\":\"Adjective\",\"en route\":\"Adjective\",\"left wing\":\"Adjective\",\"off guard\":\"Adjective\",\"on board\":\"Adjective\",\"part time\":\"Adjective\",\"right wing\":\"Adjective\",\"so called\":\"Adjective\",\"spot on\":\"Adjective\",\"straight forward\":\"Adjective\",\"super duper\":\"Adjective\",\"tip top\":\"Adjective\",\"top notch\":\"Adjective\",\"up to date\":\"Adjective\",\"win win\":\"Adjective\",\"brooklyn nets\":\"SportsTeam\",\"chicago bears\":\"SportsTeam\",\"houston astros\":\"SportsTeam\",\"houston dynamo\":\"SportsTeam\",\"houston rockets\":\"SportsTeam\",\"houston texans\":\"SportsTeam\",\"minnesota twins\":\"SportsTeam\",\"orlando magic\":\"SportsTeam\",\"san antonio spurs\":\"SportsTeam\",\"san diego chargers\":\"SportsTeam\",\"san diego padres\":\"SportsTeam\",\"iron maiden\":\"ProperNoun\",\"isle of man\":\"Country\",\"united states\":\"Country\",\"united states of america\":\"Country\",\"prince edward island\":\"Region\",\"cedar breaks\":\"Place\",\"cedar falls\":\"Place\",\"point blank\":\"Adverb\",\"tiny bit\":\"Adverb\",\"by the time\":\"Conjunction\",\"no matter\":\"Conjunction\",\"civil wars\":\"Plural\",\"credit cards\":\"Plural\",\"default rates\":\"Plural\",\"free markets\":\"Plural\",\"head starts\":\"Plural\",\"home runs\":\"Plural\",\"lay ups\":\"Plural\",\"phone calls\":\"Plural\",\"press releases\":\"Plural\",\"record labels\":\"Plural\",\"soft serves\":\"Plural\",\"student loans\":\"Plural\",\"tax returns\":\"Plural\",\"tv shows\":\"Plural\",\"video games\":\"Plural\",\"took part\":\"PastTense\",\"takes part\":\"PresentTense\",\"taking part\":\"Gerund\",\"taken part\":\"Participle\",\"light bulb\":\"Noun\",\"rush hour\":\"Noun\",\"fluid ounce\":\"Unit\",\"the rolling stones\":\"Organization\"}},two:{irregularPlurals:ho,models:mi,suffixPatterns:ja,prefixPatterns:Da,endsWith:La,neighbours:Wa,regexNormal:[[/^[\\w.]+@[\\w.]+\\.[a-z]{2,3}$/,\"Email\"],[/^(https?:\\/\\/|www\\.)+\\w+\\.[a-z]{2,3}/,\"Url\",\"http..\"],[/^[a-z0-9./].+\\.(com|net|gov|org|ly|edu|info|biz|dev|ru|jp|de|in|uk|br|io|ai)/,\"Url\",\".com\"],[/^[PMCE]ST$/,\"Timezone\",\"EST\"],[/^ma?c'[a-z]{3}/,\"LastName\",\"mc'neil\"],[/^o'[a-z]{3}/,\"LastName\",\"o'connor\"],[/^ma?cd[aeiou][a-z]{3}/,\"LastName\",\"mcdonald\"],[/^(lol)+[sz]$/,\"Expression\",\"lol\"],[/^wo{2,}a*h?$/,\"Expression\",\"wooah\"],[/^(hee?){2,}h?$/,\"Expression\",\"hehe\"],[/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/,\"Verb\",\"un-vite\"],[/^(m|k|cm|km)\\/(s|h|hr)$/,\"Unit\",\"5 k/m\"],[/^(ug|ng|mg)\\/(l|m3|ft3)$/,\"Unit\",\"ug/L\"],[/[^:/]\\/\\p{Letter}/u,\"SlashedTerm\",\"love/hate\"]],regexText:[[/^#[\\p{Number}_]*\\p{Letter}/u,\"HashTag\"],[/^@\\w{2,}$/,\"AtMention\"],[/^([A-Z]\\.){2}[A-Z]?/i,[\"Acronym\",\"Noun\"],\"F.B.I\"],[/.{3}[lkmnp]in['‘’‛‵′`´]$/,\"Gerund\",\"chillin'\"],[/.{4}s['‘’‛‵′`´]$/,\"Possessive\",\"flanders'\"],[/^[\\p{Emoji_Presentation}\\p{Extended_Pictographic}]/u,\"Emoji\",\"emoji-class\"]],regexNumbers:[[/^@1?[0-9](am|pm)$/i,\"Time\",\"3pm\"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,\"Time\",\"3:30pm\"],[/^'[0-9]{2}$/,\"Year\"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,\"Time\",\"3:12:31\"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,\"Time\",\"1:12pm\"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,\"Time\",\"1:12:31pm\"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,\"Date\",\"iso-date\"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,\"Date\",\"iso-dash\"],[/^[0-9]{1,4}\\/[0-9]{1,2}\\/([0-9]{4}|[0-9]{2})$/,\"Date\",\"iso-slash\"],[/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/,\"Date\",\"iso-dot\"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,\"Date\",\"12-dec-2019\"],[/^utc ?[+-]?[0-9]+$/,\"Timezone\",\"utc-9\"],[/^(gmt|utc)[+-][0-9]{1,2}$/i,\"Timezone\",\"gmt-3\"],[/^[0-9]{3}-[0-9]{4}$/,\"PhoneNumber\",\"421-0029\"],[/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,\"PhoneNumber\",\"1-800-\"],[/^[-+]?\\p{Currency_Symbol}[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?([kmb]|bn)?\\+?$/u,[\"Money\",\"Value\"],\"$5.30\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\p{Currency_Symbol}\\+?$/u,[\"Money\",\"Value\"],\"5.30£\"],[/^[-+]?[$£]?[0-9]([0-9,.])+(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,[\"Money\",\"Value\"],\"$400usd\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/,[\"Cardinal\",\"NumericValue\"],\"5,999\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/,[\"Ordinal\",\"NumericValue\"],\"53rd\"],[/^\\.[0-9]+\\+?$/,[\"Cardinal\",\"NumericValue\"],\".73th\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/,[\"Percent\",\"Cardinal\",\"NumericValue\"],\"-4%\"],[/^\\.[0-9]+%$/,[\"Percent\",\"Cardinal\",\"NumericValue\"],\".3%\"],[/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/,[\"Fraction\",\"NumericValue\"],\"2/3rds\"],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,[\"Value\",\"NumberRange\"],\"3-4\"],[/^[0-9]{1,2}(:[0-9][0-9])?(am|pm)? ?[-–—] ?[0-9]{1,2}(:[0-9][0-9])?(am|pm)$/,[\"Time\",\"NumberRange\"],\"3-4pm\"],[/^[0-9.]+([a-z°]{1,4})$/,\"NumericValue\",\"9km\"]],switches:jo,clues:ca,uncountable:{},orgWords:pi,placeWords:fi}};_i=function(e){return e=function(e,t){return Object.keys(e).forEach((n=>{\"Uncountable\"===e[n]&&(t.two.uncountable[n]=!0,e[n]=\"Uncountable\")})),t}((e=Ui(e.one.lexicon,e)).one.lexicon,e),e=function(e){const{irregularPlurals:t}=e.two,{lexicon:n}=e.one;return Object.entries(t).forEach((e=>{n[e[0]]=n[e[0]]||\"Singular\",n[e[1]]=n[e[1]]||\"Plural\"})),e}(e=Zi(e.two.switches,e)),e}(_i);const Xi=function(e,t,n,r){const o=r.methods.one.setTag;\"-\"===e[t].post&&e[t+1]&&o([e[t],e[t+1]],\"Hyphenated\",r,null,\"1-punct-hyphen''\")},Yi=/^(under|over|mis|re|un|dis|semi)-?/,es=function(e,t,n){const r=n.two.switches,o=e[t];if(r.hasOwnProperty(o.normal))o.switch=r[o.normal];else if(Yi.test(o.normal)){const e=o.normal.replace(Yi,\"\");e.length>3&&r.hasOwnProperty(e)&&(o.switch=r[e])}},ts=function(e,t,n){if(!t||0===t.length)return;if(!0===e.frozen)return;const r=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};r&&r.DEBUG_TAGS&&((e,t,n=\"\")=>{const r=e.text||\"[\"+e.implicit+\"]\";var o;\"string\"!=typeof t&&t.length>2&&(t=t.slice(0,2).join(\", #\")+\" +\"),t=\"string\"!=typeof t?t.join(\", #\"):t,console.log(` ${(o=r,\"\u001b[33m\u001b[3m\"+o+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${t.padEnd(22)}  ${(e=>\"\u001b[3m\"+e+\"\u001b[0m\")(n)}`)})(e,t,n),e.tags=e.tags||new Set,\"string\"==typeof t?e.tags.add(t):t.forEach((t=>e.tags.add(t)))},ns=[\"Acronym\",\"Abbreviation\",\"ProperNoun\",\"Uncountable\",\"Possessive\",\"Pronoun\",\"Activity\",\"Honorific\",\"Month\"],rs=function(e,t,n){const r=e[t],o=Array.from(r.tags);for(let e=0;e<o.length;e+=1)if(n.one.tagSet[o[e]]){const t=n.one.tagSet[o[e]].parents;ts(r,t,` -inferred by #${o[e]}`)}!function(e){!e.tags.has(\"Noun\")||e.tags.has(\"Plural\")||e.tags.has(\"Singular\")||ns.find((t=>e.tags.has(t)))||(Ki(e.normal)?ts(e,\"Plural\",\"3-plural-guess\"):ts(e,\"Singular\",\"3-singular-guess\"))}(r),function(e){const t=e.tags;if(t.has(\"Verb\")&&1===t.size){const t=ki(e.normal);t&&ts(e,t,\"3-verb-tense-guess\")}}(r)},os=/^\\p{Lu}[\\p{Ll}'’]/u,as=/[0-9]/,is=[\"Date\",\"Month\",\"WeekDay\",\"Unit\",\"Expression\"],ss=/[IVX]/,ls=/^[IVXLCDM]{2,}$/,us=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,cs={li:!0,dc:!0,md:!0,dm:!0,ml:!0},hs=function(e,t,n){const r=e[t];r.index=r.index||[0,0];const o=r.index[1],a=r.text||\"\";return 0!==o&&!0===os.test(a)&&!1===as.test(a)?is.find((e=>r.tags.has(e)))||r.pre.match(/[\"']$/)||\"the\"===r.normal?null:(rs(e,t,n),r.tags.has(\"Noun\")||r.frozen||r.tags.clear(),ts(r,\"ProperNoun\",\"2-titlecase\"),!0):a.length>=2&&ls.test(a)&&ss.test(a)&&us.test(a)&&!cs[r.normal]?(ts(r,\"RomanNumeral\",\"2-xvii\"),!0):null},ds=function(e=\"\",t=[]){const n=e.length;let r=7;n<=r&&(r=n-1);for(let o=r;o>1;o-=1){const r=e.substring(n-o,n);if(!0===t[r.length].hasOwnProperty(r)){return t[r.length][r]}}return null},gs=function(e,t,n){const r=e[t];if(0===r.tags.size){let e=ds(r.normal,n.two.suffixPatterns);if(null!==e)return ts(r,e,\"2-suffix\"),r.confidence=.7,!0;if(r.implicit&&(e=ds(r.implicit,n.two.suffixPatterns),null!==e))return ts(r,e,\"2-implicit-suffix\"),r.confidence=.7,!0}return null},ms=/['‘’‛‵′`´]/,ps=function(e,t){for(let n=0;n<t.length;n+=1)if(!0===t[n][0].test(e))return t[n];return null},fs=function(e,t,n,r){const o=r.methods.one.setTag,{regexText:a,regexNormal:i,regexNumbers:s,endsWith:l}=n.two,u=e[t],c=u.machine||u.normal;let h=u.text;ms.test(u.post)&&!ms.test(u.pre)&&(h+=u.post.trim());let d=ps(h,a)||ps(c,i);return!d&&/[0-9]/.test(c)&&(d=ps(c,s)),d||0!==u.tags.size||(d=function(e=\"\",t){const n=e[e.length-1];if(!0===t.hasOwnProperty(n)){const r=t[n]||[];for(let t=0;t<r.length;t+=1)if(!0===r[t][0].test(e))return r[t]}return null}(c,l)),d?(o([u],d[1],r,null,`2-regex-'${d[2]||d[0]}'`),u.confidence=.6,!0):null},bs=function(e,t,n){const r=e[t];if(0===r.tags.size){const e=function(e=\"\",t=[]){const n=e.length;let r=7;r>n-3&&(r=n-3);for(let n=r;n>2;n-=1){const r=e.substring(0,n);if(!0===t[r.length].hasOwnProperty(r))return t[r.length][r]}return null}(r.normal,n.two.prefixPatterns);if(null!==e)return ts(r,e,\"2-prefix\"),r.confidence=.5,!0}return null},vs=new Set([\"in\",\"on\",\"by\",\"until\",\"for\",\"to\",\"during\",\"throughout\",\"through\",\"within\",\"before\",\"after\",\"of\",\"this\",\"next\",\"last\",\"circa\",\"around\",\"post\",\"pre\",\"budget\",\"classic\",\"plan\",\"may\"]),ys=function(e){if(!e)return!1;const t=e.normal||e.implicit;return!!vs.has(t)||(!!(e.tags.has(\"Date\")||e.tags.has(\"Month\")||e.tags.has(\"WeekDay\")||e.tags.has(\"Year\"))||!!e.tags.has(\"ProperNoun\"))},ws=function(e){return!!e&&(!!e.tags.has(\"Ordinal\")||(!!(e.tags.has(\"Cardinal\")&&e.normal.length<3)||(\"is\"===e.normal||\"was\"===e.normal)))},ks=function(e){return e&&(e.tags.has(\"Date\")||e.tags.has(\"Month\")||e.tags.has(\"WeekDay\")||e.tags.has(\"Year\"))},Ps=function(e,t){const n=e[t];if(n.tags.has(\"NumericValue\")&&n.tags.has(\"Cardinal\")&&4===n.normal.length){const r=Number(n.normal);if(r&&!isNaN(r)&&r>1400&&r<2100){const o=e[t-1],a=e[t+1];if(ys(o)||ys(a))return ts(n,\"Year\",\"2-tagYear\");if(r>=1920&&r<2025){if(ws(o)||ws(a))return ts(n,\"Year\",\"2-tagYear-close\");if(ks(e[t-2])||ks(e[t+2]))return ts(n,\"Year\",\"2-tagYear-far\");if(o&&(o.tags.has(\"Determiner\")||o.tags.has(\"Possessive\"))&&a&&a.tags.has(\"Noun\")&&!a.tags.has(\"Plural\"))return ts(n,\"Year\",\"2-tagYear-noun\")}}}return null},As=function(e,t,n,r){const o=r.methods.one.setTag,a=e[t],i=[\"PastTense\",\"PresentTense\",\"Auxiliary\",\"Modal\",\"Particle\"];if(a.tags.has(\"Verb\")){i.find((e=>a.tags.has(e)))||o([a],\"Infinitive\",r,null,\"2-verb-type''\")}},Cs=/^[A-Z]('s|,)?$/,Ns=/^[A-Z-]+$/,js=/^[A-Z]+s$/,xs=/([A-Z]\\.)+[A-Z]?,?$/,Is=/[A-Z]{2,}('s|,)?$/,Ts=/([a-z]\\.)+[a-z]\\.?$/,Ds={I:!0,A:!0},Hs={la:!0,ny:!0,us:!0,dc:!0,gb:!0},Es=function(e,t,n){const r=e[t];return r.tags.has(\"RomanNumeral\")||r.tags.has(\"Acronym\")||r.frozen?null:function(e,t){let n=e.text;if(!1===Ns.test(n)){if(!(n.length>3&&!0===js.test(n)))return!1;n=n.replace(/s$/,\"\")}return!(n.length>5||Ds.hasOwnProperty(n)||t.one.lexicon.hasOwnProperty(e.normal)||!0!==xs.test(n)&&!0!==Ts.test(n)&&!0!==Cs.test(n)&&!0!==Is.test(n))}(r,n)?(r.tags.clear(),ts(r,[\"Acronym\",\"Noun\"],\"3-no-period-acronym\"),!0===Hs[r.normal]&&ts(r,\"Place\",\"3-place-acronym\"),!0===js.test(r.text)&&ts(r,\"Plural\",\"3-plural-acronym\"),!0):!Ds.hasOwnProperty(r.text)&&Cs.test(r.text)?(r.tags.clear(),ts(r,[\"Acronym\",\"Noun\"],\"3-one-letter-acronym\"),!0):r.tags.has(\"Organization\")&&r.text.length<=3?(ts(r,\"Acronym\",\"3-org-acronym\"),!0):r.tags.has(\"Organization\")&&Ns.test(r.text)&&r.text.length<=6?(ts(r,\"Acronym\",\"3-titlecase-acronym\"),!0):null},Gs=function(e,t){if(!e)return null;const n=t.find((t=>e.normal===t[0]));return n?n[1]:null},Os=function(e,t){if(!e)return null;const n=t.find((t=>e.tags.has(t[0])));return n?n[1]:null},Fs=function(e,t,n){const{leftTags:r,leftWords:o,rightWords:a,rightTags:i}=n.two.neighbours,s=e[t];if(0===s.tags.size){let l=null;if(l=l||Gs(e[t-1],o),l=l||Gs(e[t+1],a),l=l||Os(e[t-1],r),l=l||Os(e[t+1],i),l)return ts(s,l,\"3-[neighbour]\"),rs(e,t,n),e[t].confidence=.2,!0}return null},Vs=function(e,t,n){return!!e&&(!e.tags.has(\"FirstName\")&&!e.tags.has(\"Place\")&&(!!(e.tags.has(\"ProperNoun\")||e.tags.has(\"Organization\")||e.tags.has(\"Acronym\"))||!(n||(r=e.text,!/^\\p{Lu}[\\p{Ll}'’]/u.test(r)))&&(0!==t||e.tags.has(\"Singular\"))));var r},zs=function(e,t,n,r){const o=n.model.two.orgWords,a=n.methods.one.setTag,i=e[t];if(!0===o[i.machine||i.normal]&&Vs(e[t-1],t-1,r)){a([e[t]],\"Organization\",n,null,\"3-[org-word]\");for(let o=t;o>=0&&Vs(e[o],o,r);o-=1)a([e[o]],\"Organization\",n,null,\"3-[org-word]\")}return null},Bs=/'s$/,Ss=new Set([\"athletic\",\"city\",\"community\",\"eastern\",\"federal\",\"financial\",\"great\",\"historic\",\"historical\",\"local\",\"memorial\",\"municipal\",\"national\",\"northern\",\"provincial\",\"southern\",\"state\",\"western\",\"spring\",\"pine\",\"sunset\",\"view\",\"oak\",\"maple\",\"spruce\",\"cedar\",\"willow\"]),$s=new Set([\"center\",\"centre\",\"way\",\"range\",\"bar\",\"bridge\",\"field\",\"pit\"]),Ms=function(e,t,n){if(!e)return!1;const r=e.tags;return!(r.has(\"Organization\")||r.has(\"Possessive\")||Bs.test(e.normal))&&(!(!r.has(\"ProperNoun\")&&!r.has(\"Place\"))||!(n||(o=e.text,!/^\\p{Lu}[\\p{Ll}'’]/u.test(o)))&&(0!==t||r.has(\"Singular\")));var o},Ls=function(e,t,n,r){const o=n.model.two.placeWords,a=n.methods.one.setTag,i=e[t],s=i.machine||i.normal;if(!0===o[s]){for(let o=t-1;o>=0;o-=1)if(!Ss.has(e[o].normal)){if(!Ms(e[o],o,r))break;a(e.slice(o,t+1),\"Place\",n,null,\"3-[place-of-foo]\")}if($s.has(s))return!1;for(let o=t+1;o<e.length;o+=1){if(Ms(e[o],o,r))return a(e.slice(t,o+1),\"Place\",n,null,\"3-[foo-place]\"),!0;if(\"of\"!==e[o].normal&&!Ss.has(e[o].normal))break}}return null},Ks=function(e,t,n){let r=!1;const o=e[t].tags;(0===o.size||1===o.size&&(o.has(\"Hyphenated\")||o.has(\"HashTag\")||o.has(\"Prefix\")||o.has(\"SlashedTerm\")))&&(r=!0),r&&(ts(e[t],\"Noun\",\"3-[fallback]\"),rs(e,t,n),e[t].confidence=.1)},Js=/^[A-Z][a-z]/,Ws=(e,t)=>e[t].tags.has(\"ProperNoun\")&&Js.test(e[t].text)?\"Noun\":null,qs=(e,t,n)=>0!==t||e[1]?null:n,Us={\"Adj|Gerund\":(e,t)=>Ws(e,t),\"Adj|Noun\":(e,t)=>Ws(e,t)||function(e,t){return!e[t+1]&&e[t-1]&&e[t-1].tags.has(\"Determiner\")?\"Noun\":null}(e,t),\"Actor|Verb\":(e,t)=>Ws(e,t),\"Adj|Past\":(e,t)=>Ws(e,t),\"Adj|Present\":(e,t)=>Ws(e,t),\"Noun|Gerund\":(e,t)=>Ws(e,t),\"Noun|Verb\":(e,t)=>t>0&&Ws(e,t)||qs(e,t,\"Infinitive\"),\"Plural|Verb\":(e,t)=>Ws(e,t)||qs(e,t,\"PresentTense\")||function(e,t,n){return 0===t&&e.length>3?n:null}(e,t,\"Plural\"),\"Person|Noun\":(e,t)=>Ws(e,t),\"Person|Verb\":(e,t)=>0!==t?Ws(e,t):null,\"Person|Adj\":(e,t)=>0===t&&e.length>1||Ws(e,t)?\"Person\":null},Rs=\"undefined\"!=typeof process&&process.env?process.env:self.env||{},Qs=/^(under|over|mis|re|un|dis|semi)-?/,Zs=(e,t)=>{if(!e||!t)return null;const n=e.normal||e.implicit;let r=null;return t.hasOwnProperty(n)&&(r=t[n]),r&&Rs.DEBUG_TAGS&&console.log(`\\n  \u001b[2m\u001b[3m     ↓ - '${n}' \u001b[0m`),r},_s=(e,t={},n)=>{if(!e||!t)return null;const r=Array.from(e.tags).sort(((e,t)=>(n[e]?n[e].parents.length:0)>(n[t]?n[t].parents.length:0)?-1:1));let o=r.find((e=>t[e]));return o&&Rs.DEBUG_TAGS&&console.log(`  \u001b[2m\u001b[3m      ↓ - '${e.normal||e.implicit}' (#${o})  \u001b[0m`),o=t[o],o},Xs=function(e,t,n){const r=n.model,o=n.methods.one.setTag,{switches:a,clues:i}=r.two,s=e[t];let l=s.normal||s.implicit||\"\";if(Qs.test(l)&&!a[l]&&(l=l.replace(Qs,\"\")),s.switch){const a=s.switch;if(s.tags.has(\"Acronym\")||s.tags.has(\"PhrasalVerb\"))return;let u=function(e,t,n,r){if(!n)return null;const o=\"also\"!==e[t-1]?.text?t-1:Math.max(0,t-2),a=r.one.tagSet;let i=Zs(e[t+1],n.afterWords);return i=i||Zs(e[o],n.beforeWords),i=i||_s(e[o],n.beforeTags,a),i=i||_s(e[t+1],n.afterTags,a),i}(e,t,i[a],r);Us[a]&&(u=Us[a](e,t)||u),u?(o([s],u,n,null,`3-[switch] (${a})`),rs(e,t,r)):Rs.DEBUG_TAGS&&console.log(`\\n -> X  - '${l}'  : (${a})  `)}},Ys={there:!0,this:!0,it:!0,him:!0,her:!0,us:!0},el=function(e){if(e.filter((e=>!e.tags.has(\"ProperNoun\"))).length<=3)return!1;const t=/^[a-z]/;return e.every((e=>!t.test(e.text)))},tl=function(e,t,n,r){for(let o=0;o<e.length;o+=1)!0!==e[o].frozen&&(es(e,o,t),!1===r&&hs(e,o,t),gs(e,o,t),fs(e,o,t,n),bs(e,o,t),Ps(e,o))},nl=function(e,t,n,r){for(let n=0;n<e.length;n+=1){let r=Es(e,n,t);rs(e,n,t),r=r||Fs(e,n,t),r=r||Ks(e,n,t)}for(let t=0;t<e.length;t+=1)!0!==e[t].frozen&&(zs(e,t,n,r),Ls(e,t,n,r),Xs(e,t,n),As(e,t,0,n),Xi(e,t,0,n));!function(e,t){const n=t.methods.one.setTag,r=t.model.one._multiCache||{},o=e[0];if((\"Noun|Verb\"===o.switch||o.tags.has(\"Infinitive\"))&&e.length>=2){if(e.length<4&&!Ys[e[1].normal])return;if(!o.tags.has(\"PhrasalVerb\")&&r.hasOwnProperty(o.normal))return;(e[1].tags.has(\"Noun\")||e[1].tags.has(\"Determiner\"))&&(e.slice(1,3).some((e=>e.tags.has(\"Verb\")))&&!o.tags.has(\"#PhrasalVerb\")||n([o],\"Imperative\",t,null,\"3-[imperative]\"))}}(e,n)},rl={Possessive:e=>{let t=e.machine||e.normal||e.text;return t=t.replace(/'s$/,\"\"),t},Plural:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.noun.toSingular(n,t.model)},Copula:()=>\"is\",PastTense:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,\"PastTense\")},Gerund:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,\"Gerund\")},PresentTense:(e,t)=>{const n=e.machine||e.normal||e.text;return e.tags.has(\"Infinitive\")?n:t.methods.two.transform.verb.toInfinitive(n,t.model,\"PresentTense\")},Comparative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromComparative(n,t.model)},Superlative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromSuperlative(n,t.model)},Adverb:(e,t)=>{const{fromAdverb:n}=t.methods.two.transform.adjective;return n(e.machine||e.normal||e.text)}},ol={Adverb:\"RB\",Comparative:\"JJR\",Superlative:\"JJS\",Adjective:\"JJ\",TO:\"Conjunction\",Modal:\"MD\",Auxiliary:\"MD\",Gerund:\"VBG\",PastTense:\"VBD\",Participle:\"VBN\",PresentTense:\"VBZ\",Infinitive:\"VB\",Particle:\"RP\",Verb:\"VB\",Pronoun:\"PRP\",Cardinal:\"CD\",Conjunction:\"CC\",Determiner:\"DT\",Preposition:\"IN\",QuestionWord:\"WP\",Expression:\"UH\",Possessive:\"POS\",ProperNoun:\"NNP\",Person:\"NNP\",Place:\"NNP\",Organization:\"NNP\",Singular:\"NN\",Plural:\"NNS\",Noun:\"NN\",There:\"EX\"};var al={preTagger:function(e){const{methods:t,model:n,world:r}=e,o=e.docs;!function(e,t,n){e.forEach((e=>{!function(e,t,n,r){const o=r.methods.one.setTag;if(e.length>=3){const t=/:/;if(e[0].post.match(t)){const t=e[1];if(t.tags.has(\"Value\")||t.tags.has(\"Email\")||t.tags.has(\"PhoneNumber\"))return;o([e[0]],\"Expression\",r,null,\"2-punct-colon''\")}}}(e,0,0,n)}))}(o,0,r);const a=t.two.quickSplit(o);for(let e=0;e<a.length;e+=1){const t=a[e],o=el(t);tl(t,n,r,o),nl(t,n,r,o)}return a},root:function(e){const t=e.world,n=Object.keys(rl);e.docs.forEach((e=>{for(let r=0;r<e.length;r+=1){const o=e[r];for(let e=0;e<n.length;e+=1)if(o.tags.has(n[e])){const r=(0,rl[n[e]])(o,t);o.normal!==r&&(o.root=r);break}}}))},penn:function(e){e.compute(\"tagRank\"),e.docs.forEach((e=>{e.forEach((e=>{e.penn=function(e){if(e.tags.has(\"ProperNoun\")&&e.tags.has(\"Plural\"))return\"NNPS\";if(e.tags.has(\"Possessive\")&&e.tags.has(\"Pronoun\"))return\"PRP$\";if(\"there\"===e.normal)return\"EX\";if(\"to\"===e.normal)return\"TO\";const t=e.tagRank||[];for(let e=0;e<t.length;e+=1)if(ol.hasOwnProperty(t[e]))return ol[t[e]];return null}(e)}))}))}};const il=[\"Person\",\"Place\",\"Organization\"];var sl={Noun:{not:[\"Verb\",\"Adjective\",\"Adverb\",\"Value\",\"Determiner\"]},Singular:{is:\"Noun\",not:[\"Plural\",\"Uncountable\"]},ProperNoun:{is:\"Noun\"},Person:{is:\"Singular\",also:[\"ProperNoun\"],not:[\"Place\",\"Organization\",\"Date\"]},FirstName:{is:\"Person\"},MaleName:{is:\"FirstName\",not:[\"FemaleName\",\"LastName\"]},FemaleName:{is:\"FirstName\",not:[\"MaleName\",\"LastName\"]},LastName:{is:\"Person\",not:[\"FirstName\"]},Honorific:{is:\"Person\",not:[\"FirstName\",\"LastName\",\"Value\"]},Place:{is:\"Singular\",not:[\"Person\",\"Organization\"]},Country:{is:\"Place\",also:[\"ProperNoun\"],not:[\"City\"]},City:{is:\"Place\",also:[\"ProperNoun\"],not:[\"Country\"]},Region:{is:\"Place\",also:[\"ProperNoun\"]},Address:{},Organization:{is:\"ProperNoun\",not:[\"Person\",\"Place\"]},SportsTeam:{is:\"Organization\"},School:{is:\"Organization\"},Company:{is:\"Organization\"},Plural:{is:\"Noun\",not:[\"Singular\",\"Uncountable\"]},Uncountable:{is:\"Noun\"},Pronoun:{is:\"Noun\",not:il},Actor:{is:\"Noun\",not:[\"Place\",\"Organization\"]},Activity:{is:\"Noun\",not:[\"Person\",\"Place\"]},Unit:{is:\"Noun\",not:il},Demonym:{is:\"Noun\",also:[\"ProperNoun\"],not:il},Possessive:{is:\"Noun\"},Reflexive:{is:\"Pronoun\"}};var ll={Adjective:{not:[\"Noun\",\"Verb\",\"Adverb\",\"Value\"]},Comparable:{is:\"Adjective\"},Comparative:{is:\"Adjective\"},Superlative:{is:\"Adjective\",not:[\"Comparative\"]},NumberRange:{},Adverb:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Value\"]},Determiner:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"QuestionWord\",\"Conjunction\"]},Conjunction:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"Value\",\"QuestionWord\"]},Preposition:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"QuestionWord\",\"Determiner\"]},QuestionWord:{not:[\"Determiner\"]},Currency:{is:\"Noun\"},Expression:{not:[\"Noun\",\"Adjective\",\"Verb\",\"Adverb\"]},Abbreviation:{},Url:{not:[\"HashTag\",\"PhoneNumber\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"Email\",\"SlashedTerm\"]},PhoneNumber:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"Email\"]},HashTag:{},AtMention:{is:\"Noun\",not:[\"HashTag\",\"Email\"]},Emoji:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\"]},Emoticon:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"SlashedTerm\"]},SlashedTerm:{not:[\"Emoticon\",\"Url\",\"Value\"]},Email:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\"]},Acronym:{not:[\"Plural\",\"RomanNumeral\",\"Pronoun\",\"Date\"]},Negative:{not:[\"Noun\",\"Adjective\",\"Value\",\"Expression\"]},Condition:{not:[\"Verb\",\"Adjective\",\"Noun\",\"Value\"]},There:{not:[\"Verb\",\"Adjective\",\"Noun\",\"Value\",\"Conjunction\",\"Preposition\"]},Prefix:{not:[\"Abbreviation\",\"Acronym\",\"ProperNoun\"]},Hyphenated:{}};const ul=Object.assign({},sl,{Verb:{not:[\"Noun\",\"Adjective\",\"Adverb\",\"Value\",\"Expression\"]},PresentTense:{is:\"Verb\",not:[\"PastTense\",\"FutureTense\"]},Infinitive:{is:\"PresentTense\",not:[\"Gerund\"]},Imperative:{is:\"Verb\",not:[\"PastTense\",\"Gerund\",\"Copula\"]},Gerund:{is:\"PresentTense\",not:[\"Copula\"]},PastTense:{is:\"Verb\",not:[\"PresentTense\",\"Gerund\",\"FutureTense\"]},FutureTense:{is:\"Verb\",not:[\"PresentTense\",\"PastTense\"]},Copula:{is:\"Verb\"},Modal:{is:\"Verb\",not:[\"Infinitive\"]},Participle:{is:\"PastTense\"},Auxiliary:{is:\"Verb\",not:[\"PastTense\",\"PresentTense\",\"Gerund\",\"Conjunction\"]},PhrasalVerb:{is:\"Verb\"},Particle:{is:\"PhrasalVerb\",not:[\"PastTense\",\"PresentTense\",\"Copula\",\"Gerund\"]},Passive:{is:\"Verb\"}},{Value:{not:[\"Verb\",\"Adjective\",\"Adverb\"]},Ordinal:{is:\"Value\",not:[\"Cardinal\"]},Cardinal:{is:\"Value\",not:[\"Ordinal\"]},Fraction:{is:\"Value\",not:[\"Noun\"]},Multiple:{is:\"TextValue\"},RomanNumeral:{is:\"Cardinal\",not:[\"TextValue\"]},TextValue:{is:\"Value\",not:[\"NumericValue\"]},NumericValue:{is:\"Value\",not:[\"TextValue\"]},Money:{is:\"Cardinal\"},Percent:{is:\"Value\"}},{Date:{not:[\"Verb\",\"Adverb\",\"Adjective\"]},Month:{is:\"Date\",also:[\"Noun\"],not:[\"Year\",\"WeekDay\",\"Time\"]},WeekDay:{is:\"Date\",also:[\"Noun\"]},Year:{is:\"Date\",not:[\"RomanNumeral\"]},FinancialQuarter:{is:\"Date\",not:\"Fraction\"},Holiday:{is:\"Date\",also:[\"Noun\"]},Season:{is:\"Date\"},Timezone:{is:\"Date\",also:[\"Noun\"],not:[\"ProperNoun\"]},Time:{is:\"Date\",not:[\"AtMention\"]},Duration:{is:\"Date\",also:[\"Noun\"]}},ll);var cl={compute:al,methods:Ji,model:_i,tags:ul,hooks:[\"preTagger\"]};const hl=/[,)\"';:\\-–—.…]/,dl=function(e,t){if(!e.found)return;const n=e.termList();for(let e=0;e<n.length-1;e++){const t=n[e];if(hl.test(t.post))return}n[0].implicit=n[0].normal,n[0].text+=t,n[0].normal+=t,n.slice(1).forEach((e=>{e.implicit=e.normal,e.text=\"\",e.normal=\"\"}));for(let e=0;e<n.length-1;e++)n[e].post=n[e].post.replace(/ /,\"\")},gl=function(){const e=this.not(\"@hasContraction\");let t=e.match(\"(we|they|you) are\");return dl(t,\"'re\"),t=e.match(\"(he|she|they|it|we|you) will\"),dl(t,\"'ll\"),t=e.match(\"(he|she|they|it|we) is\"),dl(t,\"'s\"),t=e.match(\"#Person is\"),dl(t,\"'s\"),t=e.match(\"#Person would\"),dl(t,\"'d\"),t=e.match(\"(is|was|had|would|should|could|do|does|have|has|can) not\"),dl(t,\"n't\"),t=e.match(\"(i|we|they) have\"),dl(t,\"'ve\"),t=e.match(\"(would|should|could) have\"),dl(t,\"'ve\"),t=e.match(\"i am\"),dl(t,\"'m\"),t=e.match(\"going to\"),this},ml=/^\\p{Lu}[\\p{Ll}'’]/u,pl=function(e,t,n){const[r,o]=t;n&&0!==n.length&&(n=n.map(((e,t)=>(e.implicit=e.text,e.machine=e.text,e.pre=\"\",e.post=\"\",e.text=\"\",e.normal=\"\",e.index=[r,o+t],e))),n[0]&&(n[0].pre=e[r][o].pre,n[n.length-1].post=e[r][o].post,n[0].text=e[r][o].text,n[0].normal=e[r][o].normal),e[r].splice(o,1,...n))},fl=/'/,bl=new Set([\"been\",\"become\"]),vl=new Set([\"what\",\"how\",\"when\",\"if\",\"too\"]),yl=new Set([\"too\",\"also\",\"enough\"]),wl=function(e,t){const n=e[t].normal.split(fl)[0];if(\"let\"===n)return[n,\"us\"];if(\"there\"===n){const r=e[t+1];if(r&&r.tags.has(\"Plural\"))return[n,\"are\"]}return\"has\"===((e,t)=>{for(let n=t+1;n<e.length;n+=1){const t=e[n];if(bl.has(t.normal))return\"has\";if(vl.has(t.normal))return\"is\";if(t.tags.has(\"Gerund\"))return\"is\";if(t.tags.has(\"Determiner\"))return\"is\";if(t.tags.has(\"Adjective\"))return\"is\";if(\"Adj|Past\"===t.switch&&e[n+1]){if(yl.has(e[n+1].normal))return\"is\";if(e[n+1].tags.has(\"Preposition\"))return\"is\"}if(t.tags.has(\"PastTense\"))return e[n+1]&&\"for\"===e[n+1].normal?\"is\":\"has\"}return\"is\"})(e,t)?[n,\"has\"]:[n,\"is\"]},kl=/'/,Pl=new Set([\"better\",\"done\",\"before\",\"it\",\"had\"]),Al=new Set([\"have\",\"be\"]),Cl=function(e,t){const n=e[t].normal.split(kl)[0];return\"how\"===n||\"what\"===n?[n,\"did\"]:\"had\"===((e,t)=>{for(let n=t+1;n<e.length;n+=1){const t=e[n];if(Pl.has(t.normal))return\"had\";if(Al.has(t.normal))return\"would\";if(t.tags.has(\"PastTense\")||\"Adj|Past\"===t.switch)return\"had\";if(t.tags.has(\"PresentTense\")||t.tags.has(\"Infinitive\"))return\"would\";if(t.tags.has(\"#Determiner\"))return\"had\";if(t.tags.has(\"Adjective\"))return\"would\"}return!1})(e,t)?[n,\"had\"]:[n,\"would\"]},Nl={that:!0,there:!0,let:!0,here:!0,everywhere:!0},jl={in:!0,by:!0,for:!0},xl=new Set([\"too\",\"also\",\"enough\",\"about\"]),Il=new Set([\"is\",\"are\",\"did\",\"were\",\"could\",\"should\",\"must\",\"had\",\"have\"]),Tl=/'/,Dl=function(e,t,n,r){const o=t.update();o.document=[e];let a=n+r;n>0&&(n-=1),e[a]&&(a+=1),o.ptrs=[[0,n,a]],o.compute([\"freeze\",\"lexicon\",\"preTagger\",\"unfreeze\"]),function(e){e.forEach(((e,t)=>{e.index&&(e.index[1]=t)}))}(e)},Hl={d:(e,t)=>Cl(e,t),t:(e,t)=>function(e,t){if(\"ain't\"===e[t].normal||\"aint\"===e[t].normal){if(e[t+1]&&\"never\"===e[t+1].normal)return[\"have\"];const n=function(e,t){for(let n=t-1;n>=0;n-=1)if(e[n].tags.has(\"Noun\")||e[n].tags.has(\"Pronoun\")||e[n].tags.has(\"Plural\")||e[n].tags.has(\"Singular\"))return e[n];return null}(e,t);if(n){if(\"we\"===n.normal||\"they\"===n.normal)return[\"are\",\"not\"];if(\"i\"===n.normal)return[\"am\",\"not\"];if(n.tags&&n.tags.has(\"Plural\"))return[\"are\",\"not\"]}return[\"is\",\"not\"]}return[e[t].normal.replace(/n't/,\"\"),\"not\"]}(e,t),s:(e,t,n)=>((e,t)=>{const n=e[t];if(Nl.hasOwnProperty(n.machine||n.normal))return!1;if(n.tags.has(\"Possessive\"))return!0;if(n.tags.has(\"QuestionWord\"))return!1;if(\"he's\"===n.normal||\"she's\"===n.normal)return!1;const r=e[t+1];if(!r)return!0;if(\"it's\"===n.normal)return!!r.tags.has(\"#Noun\");if(\"Noun|Gerund\"==r.switch){const r=e[t+2];return r?!!r.tags.has(\"Copula\")||(\"on\"===r.normal||r.normal,!1):!(!n.tags.has(\"Actor\")&&!n.tags.has(\"ProperNoun\"))}if(r.tags.has(\"Verb\"))return!!r.tags.has(\"Infinitive\")||!r.tags.has(\"Gerund\")&&!!r.tags.has(\"PresentTense\");if(\"Adj|Noun\"===r.switch){const n=e[t+2];if(!n)return!1;if(Il.has(n.normal))return!0;if(xl.has(n.normal))return!1}if(r.tags.has(\"Noun\")){const e=r.machine||r.normal;return!(\"here\"===e||\"there\"===e||\"everywhere\"===e||r.tags.has(\"Possessive\")||r.tags.has(\"ProperNoun\")&&!n.tags.has(\"ProperNoun\"))}if(e[t-1]&&!0===jl[e[t-1].normal])return!0;if(r.tags.has(\"Adjective\")){const n=e[t+2];if(!n)return!1;if(n.tags.has(\"Noun\")&&!n.tags.has(\"Pronoun\")){const e=r.normal;return\"above\"!==e&&\"below\"!==e&&\"behind\"!==e}return\"Noun|Verb\"===n.switch}return!!r.tags.has(\"Value\")})(e,t)?n.methods.one.setTag([e[t]],\"Possessive\",n,null,\"2-contraction\"):wl(e,t)},El=function(e,t){const n=t.fromText(e.join(\" \"));return n.compute(\"id\"),n.docs[0]};var Gl={contractionTwo:e=>{const{world:t,document:n}=e;n.forEach(((r,o)=>{for(let a=r.length-1;a>=0;a-=1){if(r[a].implicit)continue;let i=null;!0===Tl.test(r[a].normal)&&(i=r[a].normal.split(Tl)[1]);let s=null;Hl.hasOwnProperty(i)&&(s=Hl[i](r,a,t)),s&&(s=El(s,e),pl(n,[o,a],s),Dl(n[o],e,a,s.length))}}))}},Ol={compute:Gl,api:function(e){class Contractions extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Contraction\"}expand(){return this.docs.forEach((e=>{const t=ml.test(e[0].text);e.forEach(((t,n)=>{t.text=t.implicit||\"\",delete t.implicit,n<e.length-1&&\"\"===t.post&&(t.post+=\" \"),t.dirty=!0})),t&&(e[0].text=function(e=\"\"){return e.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))}(e[0].text))})),this.compute(\"normal\"),this}}e.prototype.contractions=function(){const e=this.match(\"@hasContraction+\");return new Contractions(this.document,e.pointer)},e.prototype.contract=gl},hooks:[\"contractionTwo\"]};const Fl=\"(hard|fast|late|early|high|right|deep|close|direct)\";const Vl=\"(i|we|they)\";const zl=[].concat([{match:\"(got|were|was|is|are|am) (#PastTense|#Participle)\",tag:\"Passive\",reason:\"got-walked\"},{match:\"(was|were|is|are|am) being (#PastTense|#Participle)\",tag:\"Passive\",reason:\"was-being\"},{match:\"(had|have|has) been (#PastTense|#Participle)\",tag:\"Passive\",reason:\"had-been\"},{match:\"will be being? (#PastTense|#Participle)\",tag:\"Passive\",reason:\"will-be-cleaned\"},{match:\"#Noun [(#PastTense|#Participle)] by (the|a) #Noun\",group:0,tag:\"Passive\",reason:\"suffered-by\"}],[{match:\"[(all|both)] #Determiner #Noun\",group:0,tag:\"Noun\",reason:\"all-noun\"},{match:\"#Copula [(just|alone)]$\",group:0,tag:\"Adjective\",reason:\"not-adverb\"},{match:\"#Singular is #Adverb? [#PastTense$]\",group:0,tag:\"Adjective\",reason:\"is-filled\"},{match:\"[#PastTense] #Singular is\",group:0,tag:\"Adjective\",reason:\"smoked-poutine\"},{match:\"[#PastTense] #Plural are\",group:0,tag:\"Adjective\",reason:\"baked-onions\"},{match:\"well [#PastTense]\",group:0,tag:\"Adjective\",reason:\"well-made\"},{match:\"#Copula [fucked up?]\",group:0,tag:\"Adjective\",reason:\"swears-adjective\"},{match:\"#Singular (seems|appears) #Adverb? [#PastTense$]\",group:0,tag:\"Adjective\",reason:\"seems-filled\"},{match:\"#Copula #Adjective? [(out|in|through)]$\",group:0,tag:\"Adjective\",reason:\"still-out\"},{match:\"^[#Adjective] (the|your) #Noun\",group:0,notIf:\"(all|even)\",tag:\"Infinitive\",reason:\"shut-the\"},{match:\"the [said] #Noun\",group:0,tag:\"Adjective\",reason:\"the-said-card\"},{match:\"[#Hyphenated (#Hyphenated && #PastTense)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",notIf:\"#Adverb\",reason:\"faith-based\"},{match:\"[#Hyphenated (#Hyphenated && #Gerund)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",notIf:\"#Adverb\",reason:\"self-driving\"},{match:\"[#PastTense (#Hyphenated && #PhrasalVerb)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",reason:\"dammed-up\"},{match:\"(#Hyphenated && #Value) fold\",tag:\"Adjective\",reason:\"two-fold\"},{match:\"must (#Hyphenated && #Infinitive)\",tag:\"Adjective\",reason:\"must-win\"},{match:\"(#Hyphenated && #Infinitive) #Hyphenated\",tag:\"Adjective\",notIf:\"#PhrasalVerb\",reason:\"vacuum-sealed\"},{match:\"too much\",tag:\"Adverb Adjective\",reason:\"bit-4\"},{match:\"a bit much\",tag:\"Determiner Adverb Adjective\",reason:\"bit-3\"},{match:\"[(un|contra|extra|inter|intra|macro|micro|mid|mis|mono|multi|pre|sub|tri|ex)] #Adjective\",group:0,tag:[\"Adjective\",\"Prefix\"],reason:\"un-skilled\"}],[{match:\"#Adverb [#Adverb] (and|or|then)\",group:0,tag:\"Adjective\",reason:\"kinda-sparkly-and\"},{match:\"[(dark|bright|flat|light|soft|pale|dead|dim|faux|little|wee|sheer|most|near|good|extra|all)] #Adjective\",group:0,tag:\"Adverb\",reason:\"dark-green\"},{match:\"#Copula [far too] #Adjective\",group:0,tag:\"Adverb\",reason:\"far-too\"},{match:\"#Copula [still] (in|#Gerund|#Adjective)\",group:0,tag:\"Adverb\",reason:\"was-still-walking\"},{match:`#Plural ${Fl}`,tag:\"#PresentTense #Adverb\",reason:\"studies-hard\"},{match:`#Verb [${Fl}] !#Noun?`,group:0,notIf:\"(#Copula|get|got|getting|become|became|becoming|feel|feels|feeling|#Determiner|#Preposition)\",tag:\"Adverb\",reason:\"shops-direct\"},{match:\"[#Plural] a lot\",tag:\"PresentTense\",reason:\"studies-a-lot\"}],[{match:\"as [#Gerund] as\",group:0,tag:\"Adjective\",reason:\"as-gerund-as\"},{match:\"more [#Gerund] than\",group:0,tag:\"Adjective\",reason:\"more-gerund-than\"},{match:\"(so|very|extremely) [#Gerund]\",group:0,tag:\"Adjective\",reason:\"so-gerund\"},{match:\"(found|found) it #Adverb? [#Gerund]\",group:0,tag:\"Adjective\",reason:\"found-it-gerund\"},{match:\"a (little|bit|wee) bit? [#Gerund]\",group:0,tag:\"Adjective\",reason:\"a-bit-gerund\"},{match:\"#Gerund [#Gerund]\",group:0,tag:\"Adjective\",notIf:\"(impersonating|practicing|considering|assuming)\",reason:\"looking-annoying\"},{match:\"(looked|look|looks) #Adverb? [%Adj|Gerund%]\",group:0,tag:\"Adjective\",notIf:\"(impersonating|practicing|considering|assuming)\",reason:\"looked-amazing\"},{match:\"[%Adj|Gerund%] #Determiner\",group:0,tag:\"Gerund\",reason:\"developing-a\"},{match:\"#Possessive [%Adj|Gerund%] #Noun\",group:0,tag:\"Adjective\",reason:\"leading-manufacturer\"},{match:\"%Noun|Gerund% %Adj|Gerund%\",tag:\"Gerund #Adjective\",reason:\"meaning-alluring\"},{match:\"(face|embrace|reveal|stop|start|resume) %Adj|Gerund%\",tag:\"#PresentTense #Adjective\",reason:\"face-shocking\"},{match:\"(are|were) [%Adj|Gerund%] #Plural\",group:0,tag:\"Adjective\",reason:\"are-enduring-symbols\"}],[{match:\"#Determiner [#Adjective] #Copula\",group:0,tag:\"Noun\",reason:\"the-adj-is\"},{match:\"#Adjective [#Adjective] #Copula\",group:0,tag:\"Noun\",reason:\"adj-adj-is\"},{match:\"(his|its) [%Adj|Noun%]\",group:0,tag:\"Noun\",notIf:\"#Hyphenated\",reason:\"his-fine\"},{match:\"#Copula #Adverb? [all]\",group:0,tag:\"Noun\",reason:\"is-all\"},{match:\"(have|had) [#Adjective] #Preposition .\",group:0,tag:\"Noun\",reason:\"have-fun\"},{match:\"#Gerund (giant|capital|center|zone|application)\",tag:\"Noun\",reason:\"brewing-giant\"},{match:\"#Preposition (a|an) [#Adjective]$\",group:0,tag:\"Noun\",reason:\"an-instant\"},{match:\"no [#Adjective] #Modal\",group:0,tag:\"Noun\",reason:\"no-golden\"},{match:\"[brand #Gerund?] new\",group:0,tag:\"Adverb\",reason:\"brand-new\"},{match:\"(#Determiner|#Comparative|new|different) [kind]\",group:0,tag:\"Noun\",reason:\"some-kind\"},{match:\"#Possessive [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",reason:\"her-favourite\"},{match:\"must && #Hyphenated .\",tag:\"Adjective\",reason:\"must-win\"},{match:\"#Determiner [#Adjective]$\",tag:\"Noun\",notIf:\"(this|that|#Comparative|#Superlative)\",reason:\"the-south\"},{match:\"(#Noun && #Hyphenated) (#Adjective && #Hyphenated)\",tag:\"Adjective\",notIf:\"(this|that|#Comparative|#Superlative)\",reason:\"company-wide\"},{match:\"#Determiner [#Adjective] (#Copula|#Determiner)\",notIf:\"(#Comparative|#Superlative)\",group:0,tag:\"Noun\",reason:\"the-poor\"},{match:\"[%Adj|Noun%] #Noun\",notIf:\"(#Pronoun|#ProperNoun)\",group:0,tag:\"Adjective\",reason:\"stable-foundations\"}],[{match:\"[still] #Adjective\",group:0,tag:\"Adverb\",reason:\"still-advb\"},{match:\"[still] #Verb\",group:0,tag:\"Adverb\",reason:\"still-verb\"},{match:\"[so] #Adjective\",group:0,tag:\"Adverb\",reason:\"so-adv\"},{match:\"[way] #Comparative\",group:0,tag:\"Adverb\",reason:\"way-adj\"},{match:\"[way] #Adverb #Adjective\",group:0,tag:\"Adverb\",reason:\"way-too-adj\"},{match:\"[all] #Verb\",group:0,tag:\"Adverb\",reason:\"all-verb\"},{match:\"#Verb  [like]\",group:0,notIf:\"(#Modal|#PhrasalVerb)\",tag:\"Adverb\",reason:\"verb-like\"},{match:\"(barely|hardly) even\",tag:\"Adverb\",reason:\"barely-even\"},{match:\"[even] #Verb\",group:0,tag:\"Adverb\",reason:\"even-walk\"},{match:\"[even] #Comparative\",group:0,tag:\"Adverb\",reason:\"even-worse\"},{match:\"[even] (#Determiner|#Possessive)\",group:0,tag:\"#Adverb\",reason:\"even-the\"},{match:\"even left\",tag:\"#Adverb #Verb\",reason:\"even-left\"},{match:\"[way] #Adjective\",group:0,tag:\"#Adverb\",reason:\"way-over\"},{match:\"#PresentTense [(hard|quick|bright|slow|fast|backwards|forwards)]\",notIf:\"#Copula\",group:0,tag:\"Adverb\",reason:\"lazy-ly\"},{match:\"[much] #Adjective\",group:0,tag:\"Adverb\",reason:\"bit-1\"},{match:\"#Copula [#Adverb]$\",group:0,tag:\"Adjective\",reason:\"is-well\"},{match:\"a [(little|bit|wee) bit?] #Adjective\",group:0,tag:\"Adverb\",reason:\"a-bit-cold\"},{match:\"[(super|pretty)] #Adjective\",group:0,tag:\"Adverb\",reason:\"super-strong\"},{match:\"(become|fall|grow) #Adverb? [#PastTense]\",group:0,tag:\"Adjective\",reason:\"overly-weakened\"},{match:\"(a|an) #Adverb [#Participle] #Noun\",group:0,tag:\"Adjective\",reason:\"completely-beaten\"},{match:\"#Determiner #Adverb? [close]\",group:0,tag:\"Adjective\",reason:\"a-close\"},{match:\"#Gerund #Adverb? [close]\",group:0,tag:\"Adverb\",notIf:\"(getting|becoming|feeling)\",reason:\"being-close\"},{match:\"(the|those|these|a|an) [#Participle] #Noun\",group:0,tag:\"Adjective\",reason:\"blown-motor\"},{match:\"(#PresentTense|#PastTense) [back]\",group:0,tag:\"Adverb\",notIf:\"(#PhrasalVerb|#Copula)\",reason:\"charge-back\"},{match:\"#Verb [around]\",group:0,tag:\"Adverb\",notIf:\"#PhrasalVerb\",reason:\"send-around\"},{match:\"[later] #PresentTense\",group:0,tag:\"Adverb\",reason:\"later-say\"},{match:\"#Determiner [well] !#PastTense?\",group:0,tag:\"Noun\",reason:\"the-well\"},{match:\"#Adjective [enough]\",group:0,tag:\"Adverb\",reason:\"high-enough\"}],[{match:\"[sun] the #Ordinal\",tag:\"WeekDay\",reason:\"sun-the-5th\"},{match:\"[sun] #Date\",group:0,tag:\"WeekDay\",reason:\"sun-feb\"},{match:\"#Date (on|this|next|last|during)? [sun]\",group:0,tag:\"WeekDay\",reason:\"1pm-sun\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [sat]\",group:0,tag:\"WeekDay\",reason:\"sat\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [wed]\",group:0,tag:\"WeekDay\",reason:\"wed\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [march]\",group:0,tag:\"Month\",reason:\"march\"},{match:\"[sat] #Date\",group:0,tag:\"WeekDay\",reason:\"sat-feb\"},{match:\"#Preposition [(march|may)]\",group:0,tag:\"Month\",reason:\"in-month\"},{match:\"(this|next|last) (march|may) !#Infinitive?\",tag:\"#Date #Month\",reason:\"this-month\"},{match:\"(march|may) the? #Value\",tag:\"#Month #Date #Date\",reason:\"march-5th\"},{match:\"#Value of? (march|may)\",tag:\"#Date #Date #Month\",reason:\"5th-of-march\"},{match:\"[(march|may)] .? #Date\",group:0,tag:\"Month\",reason:\"march-and-feb\"},{match:\"#Date .? [(march|may)]\",group:0,tag:\"Month\",reason:\"feb-and-march\"},{match:\"#Adverb [(march|may)]\",group:0,tag:\"Verb\",reason:\"quickly-march\"},{match:\"[(march|may)] #Adverb\",group:0,tag:\"Verb\",reason:\"march-quickly\"},{match:\"#Value (am|pm)\",tag:\"Time\",reason:\"2-am\"}],[{match:\"#Holiday (day|eve)\",tag:\"Holiday\",reason:\"holiday-day\"},{match:\"#Value of #Month\",tag:\"Date\",reason:\"value-of-month\"},{match:\"#Cardinal #Month\",tag:\"Date\",reason:\"cardinal-month\"},{match:\"#Month #Value to #Value\",tag:\"Date\",reason:\"value-to-value\"},{match:\"#Month the #Value\",tag:\"Date\",reason:\"month-the-value\"},{match:\"(#WeekDay|#Month) #Value\",tag:\"Date\",reason:\"date-value\"},{match:\"#Value (#WeekDay|#Month)\",tag:\"Date\",reason:\"value-date\"},{match:\"(#TextValue && #Date) #TextValue\",tag:\"Date\",reason:\"textvalue-date\"},{match:\"#Month #NumberRange\",tag:\"Date\",reason:\"aug 20-21\"},{match:\"#WeekDay #Month #Ordinal\",tag:\"Date\",reason:\"week mm-dd\"},{match:\"#Month #Ordinal #Cardinal\",tag:\"Date\",reason:\"mm-dd-yyy\"},{match:\"(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time\",tag:\"Timezone\",reason:\"std-time\"},{match:\"(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time\",tag:\"Timezone\",reason:\"eastern-time\"},{match:\"#Time [(eastern|mountain|pacific|central|est|pst|gmt)]\",group:0,tag:\"Timezone\",reason:\"5pm-central\"},{match:\"(central|western|eastern) european time\",tag:\"Timezone\",reason:\"cet\"}],[{match:\"(the|any) [more]\",group:0,tag:\"Singular\",reason:\"more-noun\"},{match:\"[more] #Noun\",group:0,tag:\"Adjective\",reason:\"more-noun\"},{match:\"(right|rights) of .\",tag:\"Noun\",reason:\"right-of\"},{match:\"a [bit]\",group:0,tag:\"Singular\",reason:\"bit-2\"},{match:\"a [must]\",group:0,tag:\"Singular\",reason:\"must-2\"},{match:\"(we|us) [all]\",group:0,tag:\"Noun\",reason:\"we all\"},{match:\"due to [#Verb]\",group:0,tag:\"Noun\",reason:\"due-to\"},{match:\"some [#Verb] #Plural\",group:0,tag:\"Noun\",reason:\"determiner6\"},{match:\"#Possessive #Ordinal [#PastTense]\",group:0,tag:\"Noun\",reason:\"first-thought\"},{match:\"(the|this|those|these) #Adjective [%Verb|Noun%]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"the-adj-verb\"},{match:\"(the|this|those|these) #Adverb #Adjective [#Verb]\",group:0,tag:\"Noun\",reason:\"determiner4\"},{match:\"the [#Verb] #Preposition .\",group:0,tag:\"Noun\",reason:\"determiner1\"},{match:\"(a|an|the) [#Verb] of\",group:0,tag:\"Noun\",reason:\"the-verb-of\"},{match:\"#Determiner #Noun of [#Verb]\",group:0,tag:\"Noun\",notIf:\"#Gerund\",reason:\"noun-of-noun\"},{match:\"#PastTense #Preposition [#PresentTense]\",group:0,notIf:\"#Gerund\",tag:\"Noun\",reason:\"ended-in-ruins\"},{match:\"#Conjunction [u]\",group:0,tag:\"Pronoun\",reason:\"u-pronoun-2\"},{match:\"[u] #Verb\",group:0,tag:\"Pronoun\",reason:\"u-pronoun-1\"},{match:\"#Determiner [(western|eastern|northern|southern|central)] #Noun\",group:0,tag:\"Noun\",reason:\"western-line\"},{match:\"(#Singular && @hasHyphen) #PresentTense\",tag:\"Noun\",reason:\"hyphen-verb\"},{match:\"is no [#Verb]\",group:0,tag:\"Noun\",reason:\"is-no-verb\"},{match:\"do [so]\",group:0,tag:\"Noun\",reason:\"so-noun\"},{match:\"#Determiner [(shit|damn|hell)]\",group:0,tag:\"Noun\",reason:\"swears-noun\"},{match:\"to [(shit|hell)]\",group:0,tag:\"Noun\",reason:\"to-swears\"},{match:\"(the|these) [#Singular] (were|are)\",group:0,tag:\"Plural\",reason:\"singular-were\"},{match:\"a #Noun+ or #Adverb+? [#Verb]\",group:0,tag:\"Noun\",reason:\"noun-or-noun\"},{match:\"(the|those|these|a|an) #Adjective? [#PresentTense #Particle?]\",group:0,tag:\"Noun\",notIf:\"(seem|appear|include|#Gerund|#Copula)\",reason:\"det-inf\"},{match:\"#Noun #Actor\",tag:\"Actor\",notIf:\"(#Person|#Pronoun)\",reason:\"thing-doer\"},{match:\"#Gerund #Actor\",tag:\"Actor\",reason:\"gerund-doer\"},{match:\"co #Singular\",tag:\"Actor\",reason:\"co-noun\"},{match:\"[#Noun+] #Actor\",group:0,tag:\"Actor\",notIf:\"(#Honorific|#Pronoun|#Possessive)\",reason:\"air-traffic-controller\"},{match:\"(urban|cardiac|cardiovascular|respiratory|medical|clinical|visual|graphic|creative|dental|exotic|fine|certified|registered|technical|virtual|professional|amateur|junior|senior|special|pharmaceutical|theoretical)+ #Noun? #Actor\",tag:\"Actor\",reason:\"fine-artist\"},{match:\"#Noun+ (coach|chef|king|engineer|fellow|personality|boy|girl|man|woman|master)\",tag:\"Actor\",reason:\"dance-coach\"},{match:\"chief . officer\",tag:\"Actor\",reason:\"chief-x-officer\"},{match:\"chief of #Noun+\",tag:\"Actor\",reason:\"chief-of-police\"},{match:\"senior? vice? president of #Noun+\",tag:\"Actor\",reason:\"president-of\"},{match:\"#Determiner [sun]\",group:0,tag:\"Singular\",reason:\"the-sun\"},{match:\"#Verb (a|an) [#Value]$\",group:0,tag:\"Singular\",reason:\"did-a-value\"},{match:\"the [(can|will|may)]\",group:0,tag:\"Singular\",reason:\"the can\"},{match:\"#FirstName #Acronym? (#Possessive && #LastName)\",tag:\"Possessive\",reason:\"name-poss\"},{match:\"#Organization+ #Possessive\",tag:\"Possessive\",reason:\"org-possessive\"},{match:\"#Place+ #Possessive\",tag:\"Possessive\",reason:\"place-possessive\"},{match:\"#Possessive #PresentTense #Particle?\",notIf:\"(#Gerund|her)\",tag:\"Noun\",reason:\"possessive-verb\"},{match:\"(my|our|their|her|his|its) [(#Plural && #Actor)] #Noun\",tag:\"Possessive\",reason:\"my-dads\"},{match:\"#Value of a [second]\",group:0,unTag:\"Value\",tag:\"Singular\",reason:\"10th-of-a-second\"},{match:\"#Value [seconds]\",group:0,unTag:\"Value\",tag:\"Plural\",reason:\"10-seconds\"},{match:\"in [#Infinitive]\",group:0,tag:\"Singular\",reason:\"in-age\"},{match:\"a [#Adjective] #Preposition\",group:0,tag:\"Noun\",reason:\"a-minor-in\"},{match:\"#Determiner [#Singular] said\",group:0,tag:\"Actor\",reason:\"the-actor-said\"},{match:\"#Determiner #Noun [(feel|sense|process|rush|side|bomb|bully|challenge|cover|crush|dump|exchange|flow|function|issue|lecture|limit|march|process)] !(#Preposition|to|#Adverb)?\",group:0,tag:\"Noun\",reason:\"the-noun-sense\"},{match:\"[#PresentTense] (of|by|for) (a|an|the) #Noun #Copula\",group:0,tag:\"Plural\",reason:\"photographs-of\"},{match:\"#Infinitive and [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"fight and win\"},{match:\"#Noun and [#Verb] and #Noun\",group:0,tag:\"Noun\",reason:\"peace-and-flowers\"},{match:\"the #Cardinal [%Adj|Noun%]\",group:0,tag:\"Noun\",reason:\"the-1992-classic\"},{match:\"#Copula the [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",reason:\"the-premier-university\"},{match:\"i #Verb [me] #Noun\",group:0,tag:\"Possessive\",reason:\"scottish-me\"},{match:\"[#PresentTense] (music|class|lesson|night|party|festival|league|ceremony)\",group:0,tag:\"Noun\",reason:\"dance-music\"},{match:\"[wit] (me|it)\",group:0,tag:\"Presposition\",reason:\"wit-me\"},{match:\"#PastTense #Possessive [#Verb]\",group:0,tag:\"Noun\",notIf:\"(saw|made)\",reason:\"left-her-boots\"},{match:\"#Value [%Plural|Verb%]\",group:0,tag:\"Plural\",notIf:\"(one|1|a|an)\",reason:\"35-signs\"},{match:\"had [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Gerund|come|become)\",reason:\"had-time\"},{match:\"%Adj|Noun% %Noun|Verb%\",tag:\"#Adjective #Noun\",notIf:\"#ProperNoun #Noun\",reason:\"instant-access\"},{match:\"#Determiner [%Adj|Noun%] #Conjunction\",group:0,tag:\"Noun\",reason:\"a-rep-to\"},{match:\"#Adjective #Noun [%Plural|Verb%]$\",group:0,tag:\"Plural\",notIf:\"#Pronoun\",reason:\"near-death-experiences\"},{match:\"#Possessive #Noun [%Plural|Verb%]$\",group:0,tag:\"Plural\",reason:\"your-guild-colors\"}],[{match:\"(this|that|the|a|an) [#Gerund #Infinitive]\",group:0,tag:\"Singular\",reason:\"the-planning-process\"},{match:\"(that|the) [#Gerund #PresentTense]\",group:0,ifNo:\"#Copula\",tag:\"Plural\",reason:\"the-paving-stones\"},{match:\"#Determiner [#Gerund] #Noun\",group:0,tag:\"Adjective\",reason:\"the-gerund-noun\"},{match:\"#Pronoun #Infinitive [#Gerund] #PresentTense\",group:0,tag:\"Noun\",reason:\"tipping-sucks\"},{match:\"#Adjective [#Gerund]\",group:0,tag:\"Noun\",notIf:\"(still|even|just)\",reason:\"early-warning\"},{match:\"[#Gerund] #Adverb? not? #Copula\",group:0,tag:\"Activity\",reason:\"gerund-copula\"},{match:\"#Copula [(#Gerund|#Activity)] #Copula\",group:0,tag:\"Gerund\",reason:\"are-doing-is\"},{match:\"[#Gerund] #Modal\",group:0,tag:\"Activity\",reason:\"gerund-modal\"},{match:\"#Singular for [%Noun|Gerund%]\",group:0,tag:\"Gerund\",reason:\"noun-for-gerund\"},{match:\"#Comparative (for|at) [%Noun|Gerund%]\",group:0,tag:\"Gerund\",reason:\"better-for-gerund\"},{match:\"#PresentTense the [#Gerund]\",group:0,tag:\"Noun\",reason:\"keep-the-touching\"}],[{match:\"#Infinitive (this|that|the) [#Infinitive]\",group:0,tag:\"Noun\",reason:\"do-this-dance\"},{match:\"#Gerund #Determiner [#Infinitive]\",group:0,tag:\"Noun\",reason:\"running-a-show\"},{match:\"#Determiner (only|further|just|more|backward) [#Infinitive]\",group:0,tag:\"Noun\",reason:\"the-only-reason\"},{match:\"(the|this|a|an) [#Infinitive] #Adverb? #Verb\",group:0,tag:\"Noun\",reason:\"determiner5\"},{match:\"#Determiner #Adjective #Adjective? [#Infinitive]\",group:0,tag:\"Noun\",reason:\"a-nice-inf\"},{match:\"#Determiner #Demonym [#PresentTense]\",group:0,tag:\"Noun\",reason:\"mexican-train\"},{match:\"#Adjective #Noun+ [#Infinitive] #Copula\",group:0,tag:\"Noun\",reason:\"career-move\"},{match:\"at some [#Infinitive]\",group:0,tag:\"Noun\",reason:\"at-some-inf\"},{match:\"(go|goes|went) to [#Infinitive]\",group:0,tag:\"Noun\",reason:\"goes-to-verb\"},{match:\"(a|an) #Adjective? #Noun [#Infinitive] (#Preposition|#Noun)\",group:0,notIf:\"from\",tag:\"Noun\",reason:\"a-noun-inf\"},{match:\"(a|an) #Noun [#Infinitive]$\",group:0,tag:\"Noun\",reason:\"a-noun-inf2\"},{match:\"#Gerund #Adjective? for [#Infinitive]\",group:0,tag:\"Noun\",reason:\"running-for\"},{match:\"about [#Infinitive]\",group:0,tag:\"Singular\",reason:\"about-love\"},{match:\"#Plural on [#Infinitive]\",group:0,tag:\"Noun\",reason:\"on-stage\"},{match:\"any [#Infinitive]\",group:0,tag:\"Noun\",reason:\"any-charge\"},{match:\"no [#Infinitive]\",group:0,tag:\"Noun\",reason:\"no-doubt\"},{match:\"number of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"number-of-x\"},{match:\"(taught|teaches|learns|learned) [#PresentTense]\",group:0,tag:\"Noun\",reason:\"teaches-x\"},{match:\"(try|use|attempt|build|make) [#Verb #Particle?]\",notIf:\"(#Copula|#Noun|sure|fun|up)\",group:0,tag:\"Noun\",reason:\"do-verb\"},{match:\"^[#Infinitive] (is|was)\",group:0,tag:\"Noun\",reason:\"checkmate-is\"},{match:\"#Infinitive much [#Infinitive]\",group:0,tag:\"Noun\",reason:\"get-much\"},{match:\"[cause] #Pronoun #Verb\",group:0,tag:\"Conjunction\",reason:\"cause-cuz\"},{match:\"the #Singular [#Infinitive] #Noun\",group:0,tag:\"Noun\",notIf:\"#Pronoun\",reason:\"cardio-dance\"},{match:\"#Determiner #Modal [#Noun]\",group:0,tag:\"PresentTense\",reason:\"should-smoke\"},{match:\"this [#Plural]\",group:0,tag:\"PresentTense\",notIf:\"(#Preposition|#Date)\",reason:\"this-verbs\"},{match:\"#Noun that [#Plural]\",group:0,tag:\"PresentTense\",notIf:\"(#Preposition|#Pronoun|way)\",reason:\"voice-that-rocks\"},{match:\"that [#Plural] to\",group:0,tag:\"PresentTense\",notIf:\"#Preposition\",reason:\"that-leads-to\"},{match:\"(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)\",group:0,tag:\"Infinitive\",reason:\"let-him-glue\"},{match:\"#Verb (all|every|each|most|some|no) [#PresentTense]\",notIf:\"#Modal\",group:0,tag:\"Noun\",reason:\"all-presentTense\"},{match:\"(had|have|#PastTense) #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"better\",reason:\"adj-presentTense\"},{match:\"#Value #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"one-big-reason\"},{match:\"#PastTense #Adjective+ [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Copula|better)\",reason:\"won-wide-support\"},{match:\"(many|few|several|couple) [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"many-poses\"},{match:\"#Determiner #Adverb #Adjective [%Noun|Verb%]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"very-big-dream\"},{match:\"from #Noun to [%Noun|Verb%]\",group:0,tag:\"Noun\",reason:\"start-to-finish\"},{match:\"(for|with|of) #Noun (and|or|not) [%Noun|Verb%]\",group:0,tag:\"Noun\",notIf:\"#Pronoun\",reason:\"for-food-and-gas\"},{match:\"#Adjective #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"adorable-little-store\"},{match:\"#Gerund #Adverb? #Comparative [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"higher-costs\"},{match:\"(#Noun && @hasComma) #Noun (and|or) [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"noun-list\"},{match:\"(many|any|some|several) [#PresentTense] for\",group:0,tag:\"Noun\",reason:\"any-verbs-for\"},{match:\"to #PresentTense #Noun [#PresentTense] #Preposition\",group:0,tag:\"Noun\",reason:\"gas-exchange\"},{match:\"#PastTense (until|as|through|without) [#PresentTense]\",group:0,tag:\"Noun\",reason:\"waited-until-release\"},{match:\"#Gerund like #Adjective? [#PresentTense]\",group:0,tag:\"Plural\",reason:\"like-hot-cakes\"},{match:\"some #Adjective [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-reason\"},{match:\"for some [#PresentTense]\",group:0,tag:\"Noun\",reason:\"for-some-reason\"},{match:\"(same|some|the|that|a) kind of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-kind-of\"},{match:\"(same|some|the|that|a) type of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-type-of\"},{match:\"#Gerund #Adjective #Preposition [#PresentTense]\",group:0,tag:\"Noun\",reason:\"doing-better-for-x\"},{match:\"(get|got|have) #Comparative [#PresentTense]\",group:0,tag:\"Noun\",reason:\"got-better-aim\"},{match:\"whose [#PresentTense] #Copula\",group:0,tag:\"Noun\",reason:\"whos-name-was\"},{match:\"#PhrasalVerb #Particle #Preposition [#PresentTense]\",group:0,tag:\"Noun\",reason:\"given-up-on-x\"},{match:\"there (are|were) #Adjective? [#PresentTense]\",group:0,tag:\"Plural\",reason:\"there-are\"},{match:\"#Value [#PresentTense] of\",group:0,notIf:\"(one|1|#Copula|#Infinitive)\",tag:\"Plural\",reason:\"2-trains\"},{match:\"[#PresentTense] (are|were) #Adjective\",group:0,tag:\"Plural\",reason:\"compromises-are-possible\"},{match:\"^[(hope|guess|thought|think)] #Pronoun #Verb\",group:0,tag:\"Infinitive\",reason:\"suppose-i\"},{match:\"#Possessive #Adjective [#Verb]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"our-full-support\"},{match:\"[(tastes|smells)] #Adverb? #Adjective\",group:0,tag:\"PresentTense\",reason:\"tastes-good\"},{match:\"#Copula #Gerund [#PresentTense] !by?\",group:0,tag:\"Noun\",notIf:\"going\",reason:\"ignoring-commute\"},{match:\"#Determiner #Adjective? [(shed|thought|rose|bid|saw|spelt)]\",group:0,tag:\"Noun\",reason:\"noun-past\"},{match:\"how to [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"how-to-noun\"},{match:\"which [%Noun|Verb%] #Noun\",group:0,tag:\"Infinitive\",reason:\"which-boost-it\"},{match:\"#Gerund [%Plural|Verb%]\",group:0,tag:\"Plural\",reason:\"asking-questions\"},{match:\"(ready|available|difficult|hard|easy|made|attempt|try) to [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"ready-to-noun\"},{match:\"(bring|went|go|drive|run|bike) to [%Noun|Verb%]\",group:0,tag:\"Noun\",reason:\"bring-to-noun\"},{match:\"#Modal #Noun [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"would-you-look\"},{match:\"#Copula just [#Infinitive]\",group:0,tag:\"Noun\",reason:\"is-just-spam\"},{match:\"^%Noun|Verb% %Plural|Verb%\",tag:\"Imperative #Plural\",reason:\"request-copies\"},{match:\"#Adjective #Plural and [%Plural|Verb%]\",group:0,tag:\"#Plural\",reason:\"pickles-and-drinks\"},{match:\"#Determiner #Year [#Verb]\",group:0,tag:\"Noun\",reason:\"the-1968-film\"},{match:\"#Determiner [#PhrasalVerb #Particle]\",group:0,tag:\"Noun\",reason:\"the-break-up\"},{match:\"#Determiner [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",notIf:\"(#Pronoun|#Possessive|#ProperNoun)\",reason:\"the-individual-goals\"},{match:\"[%Noun|Verb%] or #Infinitive\",group:0,tag:\"Infinitive\",reason:\"work-or-prepare\"},{match:\"to #Infinitive [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Gerund|#Copula|help)\",reason:\"to-give-thanks\"},{match:\"[#Noun] me\",group:0,tag:\"Verb\",reason:\"kills-me\"},{match:\"%Plural|Verb% %Plural|Verb%\",tag:\"#PresentTense #Plural\",reason:\"removes-wrinkles\"}],[{match:\"#Money and #Money #Currency?\",tag:\"Money\",reason:\"money-and-money\"},{match:\"#Value #Currency [and] #Value (cents|ore|centavos|sens)\",group:0,tag:\"money\",reason:\"and-5-cents\"},{match:\"#Value (mark|rand|won|rub|ore)\",tag:\"#Money #Currency\",reason:\"4-mark\"},{match:\"a pound\",tag:\"#Money #Unit\",reason:\"a-pound\"},{match:\"#Value (pound|pounds)\",tag:\"#Money #Unit\",reason:\"4-pounds\"}],[{match:\"[(half|quarter)] of? (a|an)\",group:0,tag:\"Fraction\",reason:\"millionth\"},{match:\"#Adverb [half]\",group:0,tag:\"Fraction\",reason:\"nearly-half\"},{match:\"[half] the\",group:0,tag:\"Fraction\",reason:\"half-the\"},{match:\"#Cardinal and a half\",tag:\"Fraction\",reason:\"and-a-half\"},{match:\"#Value (halves|halfs|quarters)\",tag:\"Fraction\",reason:\"two-halves\"},{match:\"a #Ordinal\",tag:\"Fraction\",reason:\"a-quarter\"},{match:\"[#Cardinal+] (#Fraction && /s$/)\",tag:\"Fraction\",reason:\"seven-fifths\"},{match:\"[#Cardinal+ #Ordinal] of .\",group:0,tag:\"Fraction\",reason:\"ordinal-of\"},{match:\"[(#NumericValue && #Ordinal)] of .\",group:0,tag:\"Fraction\",reason:\"num-ordinal-of\"},{match:\"(a|one) #Cardinal?+ #Ordinal\",tag:\"Fraction\",reason:\"a-ordinal\"},{match:\"#Cardinal+ out? of every? #Cardinal\",tag:\"Fraction\",reason:\"out-of\"}],[{match:\"#Cardinal [second]\",tag:\"Unit\",reason:\"one-second\"},{match:\"!once? [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)\",group:0,tag:\"Value\",reason:\"a-is-one\"},{match:\"1 #Value #PhoneNumber\",tag:\"PhoneNumber\",reason:\"1-800-Value\"},{match:\"#NumericValue #PhoneNumber\",tag:\"PhoneNumber\",reason:\"(800) PhoneNumber\"},{match:\"#Demonym #Currency\",tag:\"Currency\",reason:\"demonym-currency\"},{match:\"#Value [(buck|bucks|grand)]\",group:0,tag:\"Currency\",reason:\"value-bucks\"},{match:\"[#Value+] #Currency\",group:0,tag:\"Money\",reason:\"15 usd\"},{match:\"[second] #Noun\",group:0,tag:\"Ordinal\",reason:\"second-noun\"},{match:\"#Value+ [#Currency]\",group:0,tag:\"Unit\",reason:\"5-yan\"},{match:\"#Value [(foot|feet)]\",group:0,tag:\"Unit\",reason:\"foot-unit\"},{match:\"#Value [#Abbreviation]\",group:0,tag:\"Unit\",reason:\"value-abbr\"},{match:\"#Value [k]\",group:0,tag:\"Unit\",reason:\"value-k\"},{match:\"#Unit an hour\",tag:\"Unit\",reason:\"unit-an-hour\"},{match:\"(minus|negative) #Value\",tag:\"Value\",reason:\"minus-value\"},{match:\"#Value (point|decimal) #Value\",tag:\"Value\",reason:\"value-point-value\"},{match:\"#Determiner [(half|quarter)] #Ordinal\",group:0,tag:\"Value\",reason:\"half-ordinal\"},{match:\"#Multiple+ and #Value\",tag:\"Value\",reason:\"magnitude-and-value\"},{match:\"#Value #Unit [(per|an) (hr|hour|sec|second|min|minute)]\",group:0,tag:\"Unit\",reason:\"12-miles-per-second\"},{match:\"#Value [(square|cubic)] #Unit\",group:0,tag:\"Unit\",reason:\"square-miles\"}],[{match:\"#Copula [(#Noun|#PresentTense)] #LastName\",group:0,tag:\"FirstName\",reason:\"copula-noun-lastname\"},{match:\"(sister|pope|brother|father|aunt|uncle|grandpa|grandfather|grandma) #ProperNoun\",tag:\"Person\",reason:\"lady-titlecase\",safe:!0},{match:\"#FirstName [#Determiner #Noun] #LastName\",group:0,tag:\"Person\",reason:\"first-noun-last\"},{match:\"#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun\",tag:\"Person\",reason:\"titlecase-acronym-titlecase\",safe:!0},{match:\"#Acronym #LastName\",tag:\"Person\",reason:\"acronym-lastname\",safe:!0},{match:\"#Person (jr|sr|md)\",tag:\"Person\",reason:\"person-honorific\"},{match:\"#Honorific #Acronym\",tag:\"Person\",reason:\"Honorific-TitleCase\"},{match:\"#Person #Person the? #RomanNumeral\",tag:\"Person\",reason:\"roman-numeral\"},{match:\"#FirstName [/^[^aiurck]$/]\",group:0,tag:[\"Acronym\",\"Person\"],reason:\"john-e\"},{match:\"#Noun van der? #Noun\",tag:\"Person\",reason:\"van der noun\",safe:!0},{match:\"(king|queen|prince|saint|lady) of #Noun\",tag:\"Person\",reason:\"king-of-noun\",safe:!0},{match:\"(prince|lady) #Place\",tag:\"Person\",reason:\"lady-place\"},{match:\"(king|queen|prince|saint) #ProperNoun\",tag:\"Person\",notIf:\"#Place\",reason:\"saint-foo\"},{match:\"al (#Person|#ProperNoun)\",tag:\"Person\",reason:\"al-borlen\",safe:!0},{match:\"#FirstName de #Noun\",tag:\"Person\",reason:\"bill-de-noun\"},{match:\"#FirstName (bin|al) #Noun\",tag:\"Person\",reason:\"bill-al-noun\"},{match:\"#FirstName #Acronym #ProperNoun\",tag:\"Person\",reason:\"bill-acronym-title\"},{match:\"#FirstName #FirstName #ProperNoun\",tag:\"Person\",reason:\"bill-firstname-title\"},{match:\"#Honorific #FirstName? #ProperNoun\",tag:\"Person\",reason:\"dr-john-Title\"},{match:\"#FirstName the #Adjective\",tag:\"Person\",reason:\"name-the-great\"},{match:\"#ProperNoun (van|al|bin) #ProperNoun\",tag:\"Person\",reason:\"title-van-title\",safe:!0},{match:\"#ProperNoun (de|du) la? #ProperNoun\",tag:\"Person\",notIf:\"#Place\",reason:\"title-de-title\"},{match:\"#Singular #Acronym #LastName\",tag:\"#FirstName #Person .\",reason:\"title-acro-noun\",safe:!0},{match:\"[#ProperNoun] #Person\",group:0,tag:\"Person\",reason:\"proper-person\",safe:!0},{match:\"#Person [#ProperNoun #ProperNoun]\",group:0,tag:\"Person\",notIf:\"#Possessive\",reason:\"three-name-person\",safe:!0},{match:\"#FirstName #Acronym? [#ProperNoun]\",group:0,tag:\"LastName\",notIf:\"#Possessive\",reason:\"firstname-titlecase\"},{match:\"#FirstName [#FirstName]\",group:0,tag:\"LastName\",reason:\"firstname-firstname\"},{match:\"#FirstName #Acronym #Noun\",tag:\"Person\",reason:\"n-acro-noun\",safe:!0},{match:\"#FirstName [(de|di|du|van|von)] #Person\",group:0,tag:\"LastName\",reason:\"de-firstname\"},{match:\"[(lieutenant|corporal|sergeant|captain|qeen|king|admiral|major|colonel|marshal|president|queen|king)+] #ProperNoun\",group:0,tag:\"Honorific\",reason:\"seargeant-john\"},{match:\"[(private|general|major|rear|prime|field|count|miss)] #Honorific? #Person\",group:0,tag:[\"Honorific\",\"Person\"],reason:\"ambg-honorifics\"},{match:\"#Honorific #FirstName [#Singular]\",group:0,tag:\"LastName\",notIf:\"#Possessive\",reason:\"dr-john-foo\",safe:!0},{match:\"[(his|her) (majesty|honour|worship|excellency|honorable)] #Person\",group:0,tag:\"Honorific\",reason:\"his-excellency\"},{match:\"#Honorific #Actor\",tag:\"Honorific\",reason:\"Lieutenant colonel\"},{match:\"(first|second|third|1st|2nd|3rd) #Actor\",tag:\"Honorific\",reason:\"first lady\"},{match:\"#Person #RomanNumeral\",tag:\"Person\",reason:\"louis-IV\"}],[{match:\"#FirstName #Noun$\",tag:\". #LastName\",notIf:\"(#Possessive|#Organization|#Place|#Pronoun|@hasTitleCase)\",reason:\"firstname-noun\"},{match:\"%Person|Date% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"jan-thierson\"},{match:\"%Person|Noun% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"switch-person\",safe:!0},{match:\"%Person|Noun% #Organization\",tag:\"Organization\",reason:\"olive-garden\"},{match:\"%Person|Verb% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"verb-propernoun\",ifNo:\"#Actor\"},{match:\"[%Person|Verb%] (will|had|has|said|says|told|did|learned|wants|wanted)\",group:0,tag:\"Person\",reason:\"person-said\"},{match:\"[%Person|Place%] (harbor|harbour|pier|town|city|place|dump|landfill)\",group:0,tag:\"Place\",reason:\"sydney-harbour\"},{match:\"(west|east|north|south) [%Person|Place%]\",group:0,tag:\"Place\",reason:\"east-sydney\"},{match:\"#Modal [%Person|Verb%]\",group:0,tag:\"Verb\",reason:\"would-mark\"},{match:\"#Adverb [%Person|Verb%]\",group:0,tag:\"Verb\",reason:\"really-mark\"},{match:\"[%Person|Verb%] (#Adverb|#Comparative)\",group:0,tag:\"Verb\",reason:\"drew-closer\"},{match:\"%Person|Verb% #Person\",tag:\"Person\",reason:\"rob-smith\"},{match:\"%Person|Verb% #Acronym #ProperNoun\",tag:\"Person\",reason:\"rob-a-smith\"},{match:\"[will] #Verb\",group:0,tag:\"Modal\",reason:\"will-verb\"},{match:\"(will && @isTitleCase) #ProperNoun\",tag:\"Person\",reason:\"will-name\"},{match:\"(#FirstName && !#Possessive) [#Singular] #Verb\",group:0,safe:!0,tag:\"LastName\",reason:\"jack-layton\"},{match:\"^[#Singular] #Person #Verb\",group:0,safe:!0,tag:\"Person\",reason:\"sherwood-anderson\"},{match:\"(a|an) [#Person]$\",group:0,unTag:\"Person\",reason:\"a-warhol\"}],[{match:\"#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)\",tag:\"#Copula #Adverb #Adjective\",reason:\"sometimes-adverb\"},{match:\"(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense\",group:0,tag:\"Modal\",reason:\"i-better\"},{match:\"(#Modal|i|they|we|do) not? [like]\",group:0,tag:\"PresentTense\",reason:\"modal-like\"},{match:\"#Noun #Adverb? [left]\",group:0,tag:\"PastTense\",reason:\"left-verb\"},{match:\"will #Adverb? not? #Adverb? [be] #Gerund\",group:0,tag:\"Copula\",reason:\"will-be-copula\"},{match:\"will #Adverb? not? #Adverb? [be] #Adjective\",group:0,tag:\"Copula\",reason:\"be-copula\"},{match:\"[march] (up|down|back|toward)\",notIf:\"#Date\",group:0,tag:\"Infinitive\",reason:\"march-to\"},{match:\"#Modal [march]\",group:0,tag:\"Infinitive\",reason:\"must-march\"},{match:\"[may] be\",group:0,tag:\"Verb\",reason:\"may-be\"},{match:\"[(subject|subjects|subjected)] to\",group:0,tag:\"Verb\",reason:\"subject to\"},{match:\"[home] to\",group:0,tag:\"PresentTense\",reason:\"home to\"},{match:\"[open] #Determiner\",group:0,tag:\"Infinitive\",reason:\"open-the\"},{match:\"(were|was) being [#PresentTense]\",group:0,tag:\"PastTense\",reason:\"was-being\"},{match:\"(had|has|have) [been /en$/]\",group:0,tag:\"Auxiliary Participle\",reason:\"had-been-broken\"},{match:\"(had|has|have) [been /ed$/]\",group:0,tag:\"Auxiliary PastTense\",reason:\"had-been-smoked\"},{match:\"(had|has) #Adverb? [been] #Adverb? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"had-been-adj\"},{match:\"(had|has) to [#Noun] (#Determiner|#Possessive)\",group:0,tag:\"Infinitive\",reason:\"had-to-noun\"},{match:\"have [#PresentTense]\",group:0,tag:\"PastTense\",notIf:\"(come|gotten)\",reason:\"have-read\"},{match:\"(does|will|#Modal) that [work]\",group:0,tag:\"PastTense\",reason:\"does-that-work\"},{match:\"[(sound|sounds)] #Adjective\",group:0,tag:\"PresentTense\",reason:\"sounds-fun\"},{match:\"[(look|looks)] #Adjective\",group:0,tag:\"PresentTense\",reason:\"looks-good\"},{match:\"[(start|starts|stop|stops|begin|begins)] #Gerund\",group:0,tag:\"Verb\",reason:\"starts-thinking\"},{match:\"(have|had) read\",tag:\"Modal #PastTense\",reason:\"read-read\"},{match:\"(is|was|were) [(under|over) #PastTense]\",group:0,tag:\"Adverb Adjective\",reason:\"was-under-cooked\"},{match:\"[shit] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear1-verb\"},{match:\"[damn] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear2-verb\"},{match:\"[fuck] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear3-verb\"},{match:\"#Plural that %Noun|Verb%\",tag:\". #Preposition #Infinitive\",reason:\"jobs-that-work\"},{match:\"[works] for me\",group:0,tag:\"PresentTense\",reason:\"works-for-me\"},{match:\"as #Pronoun [please]\",group:0,tag:\"Infinitive\",reason:\"as-we-please\"},{match:\"[(co|mis|de|inter|intra|pre|re|un|out|under|over|counter)] #Verb\",group:0,tag:[\"Verb\",\"Prefix\"],notIf:\"(#Copula|#PhrasalVerb)\",reason:\"co-write\"},{match:\"#PastTense and [%Adj|Past%]\",group:0,tag:\"PastTense\",reason:\"dressed-and-left\"},{match:\"[%Adj|Past%] and #PastTense\",group:0,tag:\"PastTense\",reason:\"dressed-and-left\"},{match:\"#Copula #Pronoun [%Adj|Past%]\",group:0,tag:\"Adjective\",reason:\"is-he-stoked\"},{match:\"to [%Noun|Verb%] #Preposition\",group:0,tag:\"Infinitive\",reason:\"to-dream-of\"}],[{match:\"(slowly|quickly) [#Adjective]\",group:0,tag:\"Verb\",reason:\"slowly-adj\"},{match:\"does (#Adverb|not)? [#Adjective]\",group:0,tag:\"PresentTense\",reason:\"does-mean\"},{match:\"[(fine|okay|cool|ok)] by me\",group:0,tag:\"Adjective\",reason:\"okay-by-me\"},{match:\"i (#Adverb|do)? not? [mean]\",group:0,tag:\"PresentTense\",reason:\"i-mean\"},{match:\"will #Adjective\",tag:\"Auxiliary Infinitive\",reason:\"will-adj\"},{match:\"#Pronoun [#Adjective] #Determiner #Adjective? #Noun\",group:0,tag:\"Verb\",reason:\"he-adj-the\"},{match:\"#Copula [%Adj|Present%] to #Verb\",group:0,tag:\"Verb\",reason:\"adj-to\"},{match:\"#Copula [#Adjective] (well|badly|quickly|slowly)\",group:0,tag:\"Verb\",reason:\"done-well\"},{match:\"#Adjective and [#Gerund] !#Preposition?\",group:0,tag:\"Adjective\",reason:\"rude-and-x\"},{match:\"#Copula #Adverb? (over|under) [#PastTense]\",group:0,tag:\"Adjective\",reason:\"over-cooked\"},{match:\"#Copula #Adjective+ (and|or) [#PastTense]$\",group:0,tag:\"Adjective\",reason:\"bland-and-overcooked\"},{match:\"got #Adverb? [#PastTense] of\",group:0,tag:\"Adjective\",reason:\"got-tired-of\"},{match:\"(seem|seems|seemed|appear|appeared|appears|feel|feels|felt|sound|sounds|sounded) (#Adverb|#Adjective)? [#PastTense]\",group:0,tag:\"Adjective\",reason:\"felt-loved\"},{match:\"(seem|feel|seemed|felt) [#PastTense #Particle?]\",group:0,tag:\"Adjective\",reason:\"seem-confused\"},{match:\"a (bit|little|tad) [#PastTense #Particle?]\",group:0,tag:\"Adjective\",reason:\"a-bit-confused\"},{match:\"not be [%Adj|Past% #Particle?]\",group:0,tag:\"Adjective\",reason:\"do-not-be-confused\"},{match:\"#Copula just [%Adj|Past% #Particle?]\",group:0,tag:\"Adjective\",reason:\"is-just-right\"},{match:\"as [#Infinitive] as\",group:0,tag:\"Adjective\",reason:\"as-pale-as\"},{match:\"[%Adj|Past%] and #Adjective\",group:0,tag:\"Adjective\",reason:\"faled-and-oppressive\"},{match:\"or [#PastTense] #Noun\",group:0,tag:\"Adjective\",notIf:\"(#Copula|#Pronoun)\",reason:\"or-heightened-emotion\"},{match:\"(become|became|becoming|becomes) [#Verb]\",group:0,tag:\"Adjective\",reason:\"become-verb\"},{match:\"#Possessive [#PastTense] #Noun\",group:0,tag:\"Adjective\",reason:\"declared-intentions\"},{match:\"#Copula #Pronoun [%Adj|Present%]\",group:0,tag:\"Adjective\",reason:\"is-he-cool\"},{match:\"#Copula [%Adj|Past%] with\",group:0,tag:\"Adjective\",notIf:\"(associated|worn|baked|aged|armed|bound|fried|loaded|mixed|packed|pumped|filled|sealed)\",reason:\"is-crowded-with\"},{match:\"#Copula #Adverb? [%Adj|Present%]$\",group:0,tag:\"Adjective\",reason:\"was-empty$\"}],[{match:\"will (#Adverb|not)+? [have] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"will-have-vb\"},{match:\"[#Copula] (#Adverb|not)+? (#Gerund|#PastTense)\",group:0,tag:\"Auxiliary\",reason:\"copula-walking\"},{match:\"[(#Modal|did)+] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"modal-verb\"},{match:\"#Modal (#Adverb|not)+? [have] (#Adverb|not)+? [had] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"would-have\"},{match:\"[(has|had)] (#Adverb|not)+? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"had-walked\"},{match:\"[(do|does|did|will|have|had|has|got)] (not|#Adverb)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"have-had\"},{match:\"[about to] #Adverb? #Verb\",group:0,tag:[\"Auxiliary\",\"Verb\"],reason:\"about-to\"},{match:\"#Modal (#Adverb|not)+? [be] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"would-be\"},{match:\"[(#Modal|had|has)] (#Adverb|not)+? [been] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"had-been\"},{match:\"[(be|being|been)] #Participle\",group:0,tag:\"Auxiliary\",reason:\"being-driven\"},{match:\"[may] #Adverb? #Infinitive\",group:0,tag:\"Auxiliary\",reason:\"may-want\"},{match:\"#Copula (#Adverb|not)+? [(be|being|been)] #Adverb+? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"being-walked\"},{match:\"will [be] #PastTense\",group:0,tag:\"Auxiliary\",reason:\"will-be-x\"},{match:\"[(be|been)] (#Adverb|not)+? #Gerund\",group:0,tag:\"Auxiliary\",reason:\"been-walking\"},{match:\"[used to] #PresentTense\",group:0,tag:\"Auxiliary\",reason:\"used-to-walk\"},{match:\"#Copula (#Adverb|not)+? [going to] #Adverb+? #PresentTense\",group:0,tag:\"Auxiliary\",reason:\"going-to-walk\"},{match:\"#Imperative [(me|him|her)]\",group:0,tag:\"Reflexive\",reason:\"tell-him\"},{match:\"(is|was) #Adverb? [no]\",group:0,tag:\"Negative\",reason:\"is-no\"},{match:\"[(been|had|became|came)] #PastTense\",group:0,notIf:\"#PhrasalVerb\",tag:\"Auxiliary\",reason:\"been-told\"},{match:\"[(being|having|getting)] #Verb\",group:0,tag:\"Auxiliary\",reason:\"being-born\"},{match:\"[be] #Gerund\",group:0,tag:\"Auxiliary\",reason:\"be-walking\"},{match:\"[better] #PresentTense\",group:0,tag:\"Modal\",notIf:\"(#Copula|#Gerund)\",reason:\"better-go\"},{match:\"even better\",tag:\"Adverb #Comparative\",reason:\"even-better\"}],[{match:\"(#Verb && @hasHyphen) up\",tag:\"PhrasalVerb\",reason:\"foo-up\"},{match:\"(#Verb && @hasHyphen) off\",tag:\"PhrasalVerb\",reason:\"foo-off\"},{match:\"(#Verb && @hasHyphen) over\",tag:\"PhrasalVerb\",reason:\"foo-over\"},{match:\"(#Verb && @hasHyphen) out\",tag:\"PhrasalVerb\",reason:\"foo-out\"},{match:\"[#Verb (in|out|up|down|off|back)] (on|in)\",notIf:\"#Copula\",tag:\"PhrasalVerb Particle\",reason:\"walk-in-on\"},{match:\"(lived|went|crept|go) [on] for\",group:0,tag:\"PhrasalVerb\",reason:\"went-on\"},{match:\"#Verb (up|down|in|on|for)$\",tag:\"PhrasalVerb #Particle\",notIf:\"#PhrasalVerb\",reason:\"come-down$\"},{match:\"help [(stop|end|make|start)]\",group:0,tag:\"Infinitive\",reason:\"help-stop\"},{match:\"#PhrasalVerb (in && #Particle) #Determiner\",tag:\"#Verb #Preposition #Determiner\",unTag:\"PhrasalVerb\",reason:\"work-in-the\"},{match:\"[(stop|start|finish|help)] #Gerund\",group:0,tag:\"Infinitive\",reason:\"start-listening\"},{match:\"#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]\",group:0,tag:\"Adverb\",reason:\"phrasal-pronoun-advb\"}],[{match:\"^do not? [#Infinitive #Particle?]\",notIf:Vl,group:0,tag:\"Imperative\",reason:\"do-eat\"},{match:\"^please do? not? [#Infinitive #Particle?]\",group:0,tag:\"Imperative\",reason:\"please-go\"},{match:\"^just do? not? [#Infinitive #Particle?]\",group:0,tag:\"Imperative\",reason:\"just-go\"},{match:\"^[#Infinitive] it #Comparative\",notIf:Vl,group:0,tag:\"Imperative\",reason:\"do-it-better\"},{match:\"^[#Infinitive] it (please|now|again|plz)\",notIf:Vl,group:0,tag:\"Imperative\",reason:\"do-it-please\"},{match:\"^[#Infinitive] (#Adjective|#Adverb)$\",group:0,tag:\"Imperative\",notIf:\"(so|such|rather|enough)\",reason:\"go-quickly\"},{match:\"^[#Infinitive] (up|down|over) #Determiner\",group:0,tag:\"Imperative\",reason:\"turn-down\"},{match:\"^[#Infinitive] (your|my|the|a|an|any|each|every|some|more|with|on)\",group:0,notIf:\"like\",tag:\"Imperative\",reason:\"eat-my-shorts\"},{match:\"^[#Infinitive] (him|her|it|us|me|there)\",group:0,tag:\"Imperative\",reason:\"tell-him\"},{match:\"^[#Infinitive] #Adjective #Noun$\",group:0,tag:\"Imperative\",reason:\"avoid-loud-noises\"},{match:\"^[#Infinitive] (#Adjective|#Adverb)? and #Infinitive\",group:0,tag:\"Imperative\",reason:\"call-and-reserve\"},{match:\"^(go|stop|wait|hurry) please?$\",tag:\"Imperative\",reason:\"go\"},{match:\"^(somebody|everybody) [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"somebody-call\"},{match:\"^let (us|me) [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"lets-leave\"},{match:\"^[(shut|close|open|start|stop|end|keep)] #Determiner #Noun\",group:0,tag:\"Imperative\",reason:\"shut-the-door\"},{match:\"^[#PhrasalVerb #Particle] #Determiner #Noun\",group:0,tag:\"Imperative\",reason:\"turn-off-the-light\"},{match:\"^[go] to .\",group:0,tag:\"Imperative\",reason:\"go-to-toronto\"},{match:\"^#Modal you [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"would-you-\"},{match:\"^never [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"never-stop\"},{match:\"^come #Infinitive\",tag:\"Imperative\",notIf:\"on\",reason:\"come-have\"},{match:\"^come and? #Infinitive\",tag:\"Imperative . Imperative\",notIf:\"#PhrasalVerb\",reason:\"come-and-have\"},{match:\"^stay (out|away|back)\",tag:\"Imperative\",reason:\"stay-away\"},{match:\"^[(stay|be|keep)] #Adjective\",group:0,tag:\"Imperative\",reason:\"stay-cool\"},{match:\"^[keep it] #Adjective\",group:0,tag:\"Imperative\",reason:\"keep-it-cool\"},{match:\"^do not [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"do-not-be\"},{match:\"[#Infinitive] (yourself|yourselves)\",group:0,tag:\"Imperative\",reason:\"allow-yourself\"},{match:\"[#Infinitive] what .\",group:0,tag:\"Imperative\",reason:\"look-what\"},{match:\"^[#Infinitive] #Gerund\",group:0,tag:\"Imperative\",reason:\"keep-playing\"},{match:\"^[#Infinitive] (to|for|into|toward|here|there)\",group:0,tag:\"Imperative\",reason:\"go-to\"},{match:\"^[#Infinitive] (and|or) #Infinitive\",group:0,tag:\"Imperative\",reason:\"inf-and-inf\"},{match:\"^[%Noun|Verb%] to\",group:0,tag:\"Imperative\",reason:\"commit-to\"},{match:\"^[#Infinitive] #Adjective? #Singular #Singular\",group:0,tag:\"Imperative\",reason:\"maintain-eye-contact\"},{match:\"do not (forget|omit|neglect) to [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"do-not-forget\"},{match:\"^[(ask|wear|pay|look|help|show|watch|act|fix|kill|stop|start|turn|try|win)] #Noun\",group:0,tag:\"Imperative\",reason:\"pay-attention\"}],[{match:\"(that|which) were [%Adj|Gerund%]\",group:0,tag:\"Gerund\",reason:\"that-were-growing\"},{match:\"#Gerund [#Gerund] #Plural\",group:0,tag:\"Adjective\",reason:\"hard-working-fam\"}],[{match:\"u r\",tag:\"#Pronoun #Copula\",reason:\"u r\"},{match:\"#Noun [(who|whom)]\",group:0,tag:\"Determiner\",reason:\"captain-who\"},{match:\"[had] #Noun+ #PastTense\",group:0,tag:\"Condition\",reason:\"had-he\"},{match:\"[were] #Noun+ to #Infinitive\",group:0,tag:\"Condition\",reason:\"were-he\"},{match:\"some sort of\",tag:\"Adjective Noun Conjunction\",reason:\"some-sort-of\"},{match:\"of some sort\",tag:\"Conjunction Adjective Noun\",reason:\"of-some-sort\"},{match:\"[such] (a|an|is)? #Noun\",group:0,tag:\"Determiner\",reason:\"such-skill\"},{match:\"[right] (before|after|in|into|to|toward)\",group:0,tag:\"#Adverb\",reason:\"right-into\"},{match:\"#Preposition [about]\",group:0,tag:\"Adjective\",reason:\"at-about\"},{match:\"(are|#Modal|see|do|for) [ya]\",group:0,tag:\"Pronoun\",reason:\"are-ya\"},{match:\"[long live] .\",group:0,tag:\"#Adjective #Infinitive\",reason:\"long-live\"},{match:\"[plenty] of\",group:0,tag:\"#Uncountable\",reason:\"plenty-of\"},{match:\"(always|nearly|barely|practically) [there]\",group:0,tag:\"Adjective\",reason:\"always-there\"},{match:\"[there] (#Adverb|#Pronoun)? #Copula\",group:0,tag:\"There\",reason:\"there-is\"},{match:\"#Copula [there] .\",group:0,tag:\"There\",reason:\"is-there\"},{match:\"#Modal #Adverb? [there]\",group:0,tag:\"There\",reason:\"should-there\"},{match:\"^[do] (you|we|they)\",group:0,tag:\"QuestionWord\",reason:\"do-you\"},{match:\"^[does] (he|she|it|#ProperNoun)\",group:0,tag:\"QuestionWord\",reason:\"does-he\"},{match:\"#Determiner #Noun+ [who] #Verb\",group:0,tag:\"Preposition\",reason:\"the-x-who\"},{match:\"#Determiner #Noun+ [which] #Verb\",group:0,tag:\"Preposition\",reason:\"the-x-which\"},{match:\"a [while]\",group:0,tag:\"Noun\",reason:\"a-while\"},{match:\"guess who\",tag:\"#Infinitive #QuestionWord\",reason:\"guess-who\"},{match:\"[fucking] !#Verb\",group:0,tag:\"#Gerund\",reason:\"f-as-gerund\"}],[{match:\"university of #Place\",tag:\"Organization\",reason:\"university-of-Foo\"},{match:\"#Noun (&|n) #Noun\",tag:\"Organization\",reason:\"Noun-&-Noun\"},{match:\"#Organization of the? #ProperNoun\",tag:\"Organization\",reason:\"org-of-place\",safe:!0},{match:\"#Organization #Country\",tag:\"Organization\",reason:\"org-country\"},{match:\"#ProperNoun #Organization\",tag:\"Organization\",notIf:\"#FirstName\",reason:\"titlecase-org\"},{match:\"#ProperNoun (ltd|co|inc|dept|assn|bros)\",tag:\"Organization\",reason:\"org-abbrv\"},{match:\"the [#Acronym]\",group:0,tag:\"Organization\",reason:\"the-acronym\",safe:!0},{match:\"government of the? [#Place+]\",tag:\"Organization\",reason:\"government-of-x\"},{match:\"(health|school|commerce) board\",tag:\"Organization\",reason:\"school-board\"},{match:\"(nominating|special|conference|executive|steering|central|congressional) committee\",tag:\"Organization\",reason:\"special-comittee\"},{match:\"(world|global|international|national|#Demonym) #Organization\",tag:\"Organization\",reason:\"global-org\"},{match:\"#Noun+ (public|private) school\",tag:\"School\",reason:\"noun-public-school\"},{match:\"#Place+ #SportsTeam\",tag:\"SportsTeam\",reason:\"place-sportsteam\"},{match:\"(dc|atlanta|minnesota|manchester|newcastle|sheffield) united\",tag:\"SportsTeam\",reason:\"united-sportsteam\"},{match:\"#Place+ fc\",tag:\"SportsTeam\",reason:\"fc-sportsteam\"},{match:\"#Place+ #Noun{0,2} (club|society|group|team|committee|commission|association|guild|crew)\",tag:\"Organization\",reason:\"place-noun-society\"}],[{match:\"(west|north|south|east|western|northern|southern|eastern)+ #Place\",tag:\"Region\",reason:\"west-norfolk\"},{match:\"#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]\",group:0,tag:\"Region\",reason:\"us-state\"},{match:\"portland [or]\",group:0,tag:\"Region\",reason:\"portland-or\"},{match:\"#ProperNoun+ (cliff|place|range|pit|place|point|room|grounds|ruins)\",tag:\"Place\",reason:\"foo-point\"},{match:\"in [#ProperNoun] #Place\",group:0,tag:\"Place\",reason:\"propernoun-place\"},{match:\"#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)\",tag:\"Address\",reason:\"address-st\"},{match:\"(port|mount|mt) #ProperName\",tag:\"Place\",reason:\"port-name\"}],[{match:\"[so] #Noun\",group:0,tag:\"Conjunction\",reason:\"so-conj\"},{match:\"[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)\",group:0,tag:\"Conjunction\",reason:\"how-he-is-x\"},{match:\"#Copula [(who|what|where|why|how|when)] #Noun\",group:0,tag:\"Conjunction\",reason:\"when-he\"},{match:\"#Verb [that] #Pronoun\",group:0,tag:\"Conjunction\",reason:\"said-that-he\"},{match:\"#Noun [that] #Copula\",group:0,tag:\"Conjunction\",reason:\"that-are\"},{match:\"#Noun [that] #Verb #Adjective\",group:0,tag:\"Conjunction\",reason:\"that-seem\"},{match:\"#Noun #Copula not? [that] #Adjective\",group:0,tag:\"Adverb\",reason:\"that-adj\"},{match:\"#Verb #Adverb? #Noun [(that|which)]\",group:0,tag:\"Preposition\",reason:\"that-prep\"},{match:\"@hasComma [which] (#Pronoun|#Verb)\",group:0,tag:\"Preposition\",reason:\"which-copula\"},{match:\"#Noun [like] #Noun\",group:0,tag:\"Preposition\",reason:\"noun-like\"},{match:\"^[like] #Determiner\",group:0,tag:\"Preposition\",reason:\"like-the\"},{match:\"a #Noun [like] (#Noun|#Determiner)\",group:0,tag:\"Preposition\",reason:\"a-noun-like\"},{match:\"#Adverb [like]\",group:0,tag:\"Verb\",reason:\"really-like\"},{match:\"(not|nothing|never) [like]\",group:0,tag:\"Preposition\",reason:\"nothing-like\"},{match:\"#Infinitive #Pronoun [like]\",group:0,tag:\"Preposition\",reason:\"treat-them-like\"},{match:\"[#QuestionWord] (#Pronoun|#Determiner)\",group:0,tag:\"Preposition\",reason:\"how-he\"},{match:\"[#QuestionWord] #Participle\",group:0,tag:\"Preposition\",reason:\"when-stolen\"},{match:\"[how] (#Determiner|#Copula|#Modal|#PastTense)\",group:0,tag:\"QuestionWord\",reason:\"how-is\"},{match:\"#Plural [(who|which|when)] .\",group:0,tag:\"Preposition\",reason:\"people-who\"}],[{match:\"holy (shit|fuck|hell)\",tag:\"Expression\",reason:\"swears-expression\"},{match:\"^[(well|so|okay|now)] !#Adjective?\",group:0,tag:\"Expression\",reason:\"well-\"},{match:\"^come on\",tag:\"Expression\",reason:\"come-on\"},{match:\"(say|says|said) [sorry]\",group:0,tag:\"Expression\",reason:\"say-sorry\"},{match:\"^(ok|alright|shoot|hell|anyways)\",tag:\"Expression\",reason:\"ok-\"},{match:\"^(say && @hasComma)\",tag:\"Expression\",reason:\"say-\"},{match:\"^(like && @hasComma)\",tag:\"Expression\",reason:\"like-\"},{match:\"^[(dude|man|girl)] #Pronoun\",group:0,tag:\"Expression\",reason:\"dude-i\"}]);let Bl=null;var Sl={postTagger:function(e){const{world:t}=e,{model:n,methods:r}=t;Bl=Bl||r.one.buildNet(n.two.matches,t);const o=r.two.quickSplit(e.document).map((e=>{const t=e[0];return[t.index[0],t.index[1],t.index[1]+e.length]})),a=e.update(o);return a.cache(),a.sweep(Bl),e.uncache(),e.unfreeze(),e},tagger:e=>e.compute([\"freeze\",\"lexicon\",\"preTagger\",\"postTagger\",\"unfreeze\"])};const $l={api:function(e){e.prototype.confidence=function(){let e=0,t=0;return this.docs.forEach((n=>{n.forEach((n=>{t+=1,e+=n.confidence||1}))})),0===t?1:(e=>Math.round(100*e)/100)(e/t)},e.prototype.tagger=function(){return this.compute([\"tagger\"])}},compute:Sl,model:{two:{matches:zl}},hooks:[\"postTagger\"]},Ml=function(e,t){const n=function(e){return Object.keys(e.hooks).filter((e=>!e.startsWith(\"#\")&&!e.startsWith(\"%\")))}(t);if(0===n.length)return e;e._cache||e.cache();const r=e._cache;return e.filter(((e,t)=>n.some((e=>r[t].has(e)))))};var Ll={lib:{lazy:function(e,t){let n=t;\"string\"==typeof t&&(n=this.buildNet([{match:t}]));const r=this.tokenize(e),o=Ml(r,n);return o.found?(o.compute([\"index\",\"tagger\"]),o.match(t)):r.none()}}};const Kl=function(e,t,n){let r=e.split(/ /g).map((e=>e.toLowerCase().trim()));r=r.filter((e=>e)),r=r.map((e=>`{${e}}`)).join(\" \");let o=this.match(r);return n&&(o=o.if(n)),o.has(\"#Verb\")?function(e,t){let n=t;return e.forEach((e=>{e.has(\"#Infinitive\")||(n=function(e,t){const n=(0,e.methods.two.transform.verb.conjugate)(t,e.model);return e.has(\"#Gerund\")?n.Gerund:e.has(\"#PastTense\")?n.PastTense:e.has(\"#PresentTense\")?n.PresentTense:e.has(\"#Gerund\")?n.Gerund:t}(e,t)),e.replaceWith(n)})),e}(o,t):o.has(\"#Noun\")?function(e,t){let n=t;e.has(\"#Plural\")&&(n=(0,e.methods.two.transform.noun.toPlural)(t,e.model));e.replaceWith(n,{possessives:!0})}(o,t):o.has(\"#Adverb\")?function(e,t){const{toAdverb:n}=e.methods.two.transform.adjective,r=n(t);r&&e.replaceWith(r)}(o,t):o.has(\"#Adjective\")?function(e,t){const{toComparative:n,toSuperlative:r}=e.methods.two.transform.adjective;let o=t;e.has(\"#Comparative\")?o=n(o,e.model):e.has(\"#Superlative\")&&(o=r(o,e.model)),o&&e.replaceWith(o)}(o,t):this};var Jl={api:function(e){e.prototype.swap=Kl}};h.plugin(cl),h.plugin(Ol),h.plugin($l),h.plugin(Ll),h.plugin(Jl);const Wl=function(e){const{fromComparative:t,fromSuperlative:n}=e.methods.two.transform.adjective,r=e.text(\"normal\");return e.has(\"#Comparative\")?t(r,e.model):e.has(\"#Superlative\")?n(r,e.model):r};var ql={api:function(e){class Adjectives extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Adjectives\"}json(e={}){const{toAdverb:t,toNoun:n,toSuperlative:r,toComparative:o}=this.methods.two.transform.adjective;return e.normal=!0,this.map((a=>{const i=a.toView().json(e)[0]||{},s=Wl(a);return i.adjective={adverb:t(s,this.model),noun:n(s,this.model),superlative:r(s,this.model),comparative:o(s,this.model)},i}),[])}adverbs(){return this.before(\"#Adverb+$\").concat(this.after(\"^#Adverb+\"))}conjugate(e){const{toComparative:t,toSuperlative:n,toNoun:r,toAdverb:o}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const a=Wl(e);return{Adjective:a,Comparative:t(a,this.model),Superlative:n(a,this.model),Noun:r(a,this.model),Adverb:o(a,this.model)}}),[])}toComparative(e){const{toComparative:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}toSuperlative(e){const{toSuperlative:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}toAdverb(e){const{toAdverb:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}toNoun(e){const{toNoun:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}}e.prototype.adjectives=function(e){let t=this.match(\"#Adjective\");return t=t.getNth(e),new Adjectives(t.document,t.pointer)},e.prototype.superlatives=function(e){let t=this.match(\"#Superlative\");return t=t.getNth(e),new Adjectives(t.document,t.pointer)},e.prototype.comparatives=function(e){let t=this.match(\"#Comparative\");return t=t.getNth(e),new Adjectives(t.document,t.pointer)}}};var Ul={api:function(e){class Adverbs extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Adverbs\"}conjugate(e){return this.getNth(e).map((e=>{const t=function(e){return e.compute(\"root\").text(\"root\")}(e);return{Adverb:e.text(\"normal\"),Adjective:t}}),[])}json(e={}){const t=this.methods.two.transform.adjective.fromAdverb;return e.normal=!0,this.map((n=>{const r=n.toView().json(e)[0]||{};return r.adverb={adjective:t(r.normal)},r}),[])}}e.prototype.adverbs=function(e){let t=this.match(\"#Adverb\");return t=t.getNth(e),new Adverbs(t.document,t.pointer)}}};const Rl=function(e){let t=this;t=function(e){let t=e.parentheses();return t=t.filter((e=>e.wordCount()>=3&&e.has(\"#Verb\")&&e.has(\"#Noun\"))),e.splitOn(t)}(t),t=function(e){let t=e.quotations();return t=t.filter((e=>e.wordCount()>=3&&e.has(\"#Verb\")&&e.has(\"#Noun\"))),e.splitOn(t)}(t),t=function(e){let t=e.match(\"@hasComma\");return t=t.filter((e=>{if(1===e.growLeft(\".\").wordCount())return!1;if(1===e.growRight(\". .\").wordCount())return!1;let t=e.grow(\".\");return t=t.ifNo(\"@hasComma @hasComma\"),t=t.ifNo(\"@hasComma (and|or) .\"),t=t.ifNo(\"(#City && @hasComma) #Country\"),t=t.ifNo(\"(#WeekDay && @hasComma) #Date\"),t=t.ifNo(\"(#Date+ && @hasComma) #Value\"),t=t.ifNo(\"(#Adjective && @hasComma) #Adjective\"),t.found})),e.splitAfter(t)}(t),t=t.splitAfter(\"(@hasEllipses|@hasSemicolon|@hasDash|@hasColon)\"),t=t.splitAfter(\"^#Pronoun (said|says)\"),t=t.splitBefore(\"(said|says) #ProperNoun$\"),t=t.splitBefore(\". . if .{4}\"),t=t.splitBefore(\"and while\"),t=t.splitBefore(\"now that\"),t=t.splitBefore(\"ever since\"),t=t.splitBefore(\"(supposing|although)\"),t=t.splitBefore(\"even (while|if|though)\"),t=t.splitBefore(\"(whereas|whose)\"),t=t.splitBefore(\"as (though|if)\"),t=t.splitBefore(\"(til|until)\");const n=t.match(\"#Verb .* [but] .* #Verb\",0);n.found&&(t=t.splitBefore(n));const r=t.if(\"if .{2,9} then .\").match(\"then\");return t=t.splitBefore(r),\"number\"==typeof e&&(t=t.get(e)),t},Ql={this:\"Noun\",then:\"Pivot\"},Zl=[{match:\"[that] #Determiner #Noun\",group:0,chunk:\"Pivot\"},{match:\"#PastTense [that]\",group:0,chunk:\"Pivot\"},{match:\"[so] #Determiner\",group:0,chunk:\"Pivot\"},{match:\"#Copula #Adverb+? [#Adjective]\",group:0,chunk:\"Adjective\"},{match:\"#Adjective and #Adjective\",chunk:\"Adjective\"},{match:\"#Adverb+ and #Adverb #Verb\",chunk:\"Verb\"},{match:\"#Gerund #Adjective$\",chunk:\"Verb\"},{match:\"#Gerund to #Verb\",chunk:\"Verb\"},{match:\"#PresentTense and #PresentTense\",chunk:\"Verb\"},{match:\"#Adverb #Negative\",chunk:\"Verb\"},{match:\"(want|wants|wanted) to #Infinitive\",chunk:\"Verb\"},{match:\"#Verb #Reflexive\",chunk:\"Verb\"},{match:\"#Verb [to] #Adverb? #Infinitive\",group:0,chunk:\"Verb\"},{match:\"[#Preposition] #Gerund\",group:0,chunk:\"Verb\"},{match:\"#Infinitive [that] <Noun>\",group:0,chunk:\"Verb\"},{match:\"#Noun of #Determiner? #Noun\",chunk:\"Noun\"},{match:\"#Value+ #Adverb? #Adjective\",chunk:\"Noun\"},{match:\"the [#Adjective] #Noun\",chunk:\"Noun\"},{match:\"#Singular in #Determiner? #Singular\",chunk:\"Noun\"},{match:\"#Plural [in] #Determiner? #Noun\",group:0,chunk:\"Pivot\"},{match:\"#Noun and #Determiner? #Noun\",notIf:\"(#Possessive|#Pronoun)\",chunk:\"Noun\"}];let _l=null;const Xl=function(e,t){if((\"undefined\"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_CHUNKS){const n=(e.normal+\"'\").padEnd(8);console.log(`  | '${n}  →  \u001b[34m${t.padEnd(12)}\u001b[0m \u001b[2m -fallback- \u001b[0m`)}e.chunk=t};var Yl={chunks:function(e){const{document:t,world:n}=e;!function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];!0!==Ql.hasOwnProperty(r.normal)?r.tags.has(\"Verb\")?r.chunk=\"Verb\":r.tags.has(\"Noun\")||r.tags.has(\"Determiner\")||r.tags.has(\"Value\")?r.chunk=\"Noun\":r.tags.has(\"QuestionWord\")&&(r.chunk=\"Pivot\"):r.chunk=Ql[r.normal]}}(t),function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];if(r.chunk)continue;const o=e[t][n+1],a=e[t][n-1];if(r.tags.has(\"Adjective\")){if(a&&a.tags.has(\"Copula\")){r.chunk=\"Adjective\";continue}if(a&&a.tags.has(\"Determiner\")){r.chunk=\"Noun\";continue}if(o&&o.tags.has(\"Noun\")){r.chunk=\"Noun\";continue}}else if(r.tags.has(\"Adverb\")||r.tags.has(\"Negative\")){if(a&&a.tags.has(\"Adjective\")){r.chunk=\"Adjective\";continue}if(a&&a.tags.has(\"Verb\")){r.chunk=\"Verb\";continue}if(o&&o.tags.has(\"Adjective\")){r.chunk=\"Adjective\";continue}if(o&&o.tags.has(\"Verb\")){r.chunk=\"Verb\";continue}}}}(t),function(e,t,n){const{methods:r}=n;_l=_l||r.one.buildNet(Zl,n),e.sweep(_l)}(e,0,n),function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];void 0===r.chunk&&(r.tags.has(\"Conjunction\")||r.tags.has(\"Preposition\")?Xl(r,\"Pivot\"):r.tags.has(\"Adverb\")?Xl(r,\"Verb\"):r.chunk=\"Noun\")}}(t),function(e){const t=[];let n=null;e.forEach((e=>{for(let r=0;r<e.length;r+=1){const o=e[r];n&&o.chunk===n?t[t.length-1].terms.push(o):(t.push({chunk:o.chunk,terms:[o]}),n=o.chunk)}})),t.forEach((e=>{if(\"Verb\"===e.chunk){const t=e.terms.find((e=>e.tags.has(\"Verb\")));t||e.terms.forEach((e=>e.chunk=null))}}))}(t)}},eu={compute:Yl,api:function(e){class Chunks extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Chunks\"}isVerb(){return this.filter((e=>e.has(\"<Verb>\")))}isNoun(){return this.filter((e=>e.has(\"<Noun>\")))}isAdjective(){return this.filter((e=>e.has(\"<Adjective>\")))}isPivot(){return this.filter((e=>e.has(\"<Pivot>\")))}debug(){return this.toView().debug(\"chunks\"),this}update(e){const t=new Chunks(this.document,e);return t._cache=this._cache,t}}e.prototype.chunks=function(e){let t=function(e){const t=[];let n=null;return e.clauses().docs.forEach((e=>{e.forEach((e=>{e.chunk&&e.chunk===n?t[t.length-1][2]=e.index[1]+1:(n=e.chunk,t.push([e.index[0],e.index[1],e.index[1]+1]))})),n=null})),e.update(t)}(this);return t=t.getNth(e),new Chunks(this.document,t.pointer)},e.prototype.clauses=Rl},hooks:[\"chunks\"]};const tu=/\\./g,nu=/\\(/,ru=/\\)/,ou=function(e,t){for(;t<e.length;t+=1)if(e[t].post&&ru.test(e[t].post)){let[,n]=e[t].index;return n=n||0,n}return null},au=function(e){class Parentheses extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Possessives\"}strip(){return function(e){return e.docs.forEach((e=>{e[0].pre=e[0].pre.replace(nu,\"\");const t=e[e.length-1];t.post=t.post.replace(ru,\"\")})),e}(this)}}e.prototype.parentheses=function(e){let t=function(e){const t=[];return e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const r=e[n];if(r.pre&&nu.test(r.pre)){const r=ou(e,n);if(null!==r){const[o,a]=e[n].index;t.push([o,a,r+1,e[n].id]),n=r}}}})),e.update(t)}(this);return t=t.getNth(e),new Parentheses(t.document,t.pointer)}},iu=/'s$/,su={'\"':'\"',\"＂\":\"＂\",\"'\":\"'\",\"“\":\"”\",\"‘\":\"’\",\"‟\":\"”\",\"‛\":\"’\",\"„\":\"”\",\"⹂\":\"”\",\"‚\":\"’\",\"«\":\"»\",\"‹\":\"›\",\"‵\":\"′\",\"‶\":\"″\",\"‷\":\"‴\",\"〝\":\"〞\",\"`\":\"´\",\"〟\":\"〞\"},lu=RegExp(\"[\"+Object.keys(su).join(\"\")+\"]\"),uu=RegExp(\"[\"+Object.values(su).join(\"\")+\"]\"),cu=function(e,t){const n=e[t].pre.match(lu)[0]||\"\";if(!n||!su[n])return null;const r=su[n];for(;t<e.length;t+=1)if(e[t].post&&e[t].post.match(r))return t;return null},hu=function(e){class Quotations extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Possessives\"}strip(){return function(e){e.docs.forEach((e=>{e[0].pre=e[0].pre.replace(lu,\"\");const t=e[e.length-1];t.post=t.post.replace(uu,\"\")}))}(this)}}e.prototype.quotations=function(e){let t=function(e){const t=[];return e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const r=e[n];if(r.pre&&lu.test(r.pre)){const r=cu(e,n);if(null!==r){const[o,a]=e[n].index;t.push([o,a,r+1,e[n].id]),n=r}}}})),e.update(t)}(this);return t=t.getNth(e),new Quotations(t.document,t.pointer)}},du=function(e){let t=this.splitAfter(\"@hasComma\");return t=t.match(\"#PhoneNumber+\"),t=t.getNth(e),t},gu=[[\"hyphenated\",\"@hasHyphen .\"],[\"hashTags\",\"#HashTag\"],[\"emails\",\"#Email\"],[\"emoji\",\"#Emoji\"],[\"emoticons\",\"#Emoticon\"],[\"atMentions\",\"#AtMention\"],[\"urls\",\"#Url\"],[\"conjunctions\",\"#Conjunction\"],[\"prepositions\",\"#Preposition\"],[\"abbreviations\",\"#Abbreviation\"],[\"honorifics\",\"#Honorific\"]],mu=[[\"emojis\",\"emoji\"],[\"atmentions\",\"atMentions\"]],pu=/\\//;var fu={api:function(e){!function(e){class Acronyms extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Acronyms\"}strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.replace(tu,\"\"),e.normal=e.normal.replace(tu,\"\")}))})),this}addPeriods(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.replace(tu,\"\"),e.normal=e.normal.replace(tu,\"\"),e.text=e.text.split(\"\").join(\".\")+\".\",e.normal=e.normal.split(\"\").join(\".\")+\".\"}))})),this}}e.prototype.acronyms=function(e){let t=this.match(\"#Acronym\");return t=t.getNth(e),new Acronyms(t.document,t.pointer)}}(e),au(e),function(e){class Possessives extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Possessives\"}strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.replace(iu,\"\"),e.normal=e.normal.replace(iu,\"\")}))})),this}}e.prototype.possessives=function(e){let t=function(e){let t=e.match(\"#Possessive+\");return t.has(\"#Person\")&&(t=t.growLeft(\"#Person+\")),t.has(\"#Place\")&&(t=t.growLeft(\"#Place+\")),t.has(\"#Organization\")&&(t=t.growLeft(\"#Organization+\")),t}(this);return t=t.getNth(e),new Possessives(t.document,t.pointer)}}(e),hu(e),function(e){gu.forEach((t=>{e.prototype[t[0]]=function(e){const n=this.match(t[1]);return\"number\"==typeof e?n.get(e):n}})),e.prototype.phoneNumbers=du,mu.forEach((t=>{e.prototype[t[0]]=e.prototype[t[1]]}))}(e),function(e){class Slashes extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Slashes\"}split(){return this.map((e=>{const t=e.text().split(pu);return(e=e.replaceWith(t.join(\" \"))).growRight(\"(\"+t.join(\"|\")+\")+\")}))}}e.prototype.slashes=function(e){let t=this.match(\"#SlashedTerm\");return t=t.getNth(e),new Slashes(t.document,t.pointer)}}(e)}};const bu=function(e,t){e.docs.forEach((e=>{e.forEach(t)}))};var vu={case:e=>{bu(e,(e=>{e.text=e.text.toLowerCase()}))},unicode:e=>{const t=e.world,n=t.methods.one.killUnicode;bu(e,(e=>e.text=n(e.text,t)))},whitespace:e=>{bu(e,(e=>{e.post=e.post.replace(/\\s+/g,\" \"),e.post=e.post.replace(/\\s([.,?!:;])/g,\"$1\"),e.pre=e.pre.replace(/\\s+/g,\"\")}))},punctuation:e=>{bu(e,(e=>{e.post=e.post.replace(/[–—-]/g,\" \"),e.post=e.post.replace(/[,:;]/g,\"\"),e.post=e.post.replace(/\\.{2,}/g,\"\"),e.post=e.post.replace(/\\?{2,}/g,\"?\"),e.post=e.post.replace(/!{2,}/g,\"!\"),e.post=e.post.replace(/\\?!+/g,\"?\")}));const t=e.docs,n=t[t.length-1];if(n&&n.length>0){const e=n[n.length-1];e.post=e.post.replace(/ /g,\"\")}},contractions:e=>{e.contractions().expand()},acronyms:e=>{e.acronyms().strip()},parentheses:e=>{e.parentheses().strip()},possessives:e=>{e.possessives().strip()},quotations:e=>{e.quotations().strip()},emoji:e=>{e.emojis().remove()},honorifics:e=>{e.match(\"#Honorific+ #Person\").honorifics().remove()},adverbs:e=>{e.adverbs().remove()},nouns:e=>{e.nouns().toSingular()},verbs:e=>{e.verbs().toInfinitive()},numbers:e=>{e.numbers().toNumber()},debullet:e=>{const t=/^\\s*([-–—*•])\\s*$/;return e.docs.forEach((e=>{t.test(e[0].pre)&&(e[0].pre=e[0].pre.replace(t,\"\"))})),e}};const yu=e=>e.split(\"|\").reduce(((e,t)=>(e[t]=!0,e)),{}),wu=\"unicode|punctuation|whitespace|acronyms\",ku=\"|case|contractions|parentheses|quotations|emoji|honorifics|debullet\",Pu={light:yu(wu),medium:yu(wu+ku),heavy:yu(wu+ku+\"|possessives|adverbs|nouns|verbs\")};var Au={api:function(e){e.prototype.normalize=function(e=\"light\"){return\"string\"==typeof e&&(e=Pu[e]),Object.keys(e).forEach((t=>{vu.hasOwnProperty(t)&&vu[t](this,e[t])})),this}}};const Cu=[\"after\",\"although\",\"as if\",\"as long as\",\"as\",\"because\",\"before\",\"even if\",\"even though\",\"ever since\",\"if\",\"in order that\",\"provided that\",\"since\",\"so that\",\"than\",\"that\",\"though\",\"unless\",\"until\",\"what\",\"whatever\",\"when\",\"whenever\",\"where\",\"whereas\",\"wherever\",\"whether\",\"which\",\"whichever\",\"who\",\"whoever\",\"whom\",\"whomever\",\"whose\"],Nu=function(e){if(e.before(\"#Preposition$\").found)return!0;if(!e.before().found)return!1;for(let t=0;t<Cu.length;t+=1)if(e.has(Cu[t]))return!0;return!1},ju=function(e,t){if(e.has(\"#Plural\"))return!0;if(e.has(\"#Noun and #Noun\"))return!0;if(e.has(\"(we|they)\"))return!0;if(!0===t.has(\"(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)\"))return!1;if(e.has(\"#Singular\"))return!1;const n=t.text(\"normal\");return n.length>3&&n.endsWith(\"s\")&&!n.endsWith(\"ss\")},xu=function(e){const t=function(e){let t=e.clone();return t=t.match(\"#Noun+\"),t=t.remove(\"(#Adjective|#Preposition|#Determiner|#Value)\"),t=t.not(\"#Possessive\"),t=t.first(),t.found?t:e}(e);return{determiner:e.match(\"#Determiner\").eq(0),adjectives:e.match(\"#Adjective\"),number:e.values(),isPlural:ju(e,t),isSubordinate:Nu(e),root:t}},Iu=e=>e.text(),Tu=e=>e.json({terms:!1,normal:!0}).map((e=>e.normal)),Du=function(e){if(!e.found)return null;const t=e.values(0);if(t.found){return(t.parse()[0]||{}).num}return null},Hu=function(e){return!e.has(\"^(#Uncountable|#ProperNoun|#Place|#Pronoun|#Acronym)+$\")},Eu={tags:!0},Gu={tags:!0};var Ou={api:function(e){class Nouns extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Nouns\"}parse(e){return this.getNth(e).map(xu)}json(e){const t=\"object\"==typeof e?e:{};return this.getNth(e).map((e=>{const n=e.toView().json(t)[0]||{};return t&&!1!==t.noun&&(n.noun=function(e){const t=xu(e);return{root:Iu(t.root),number:Du(t.number),determiner:Iu(t.determiner),adjectives:Tu(t.adjectives),isPlural:t.isPlural,isSubordinate:t.isSubordinate}}(e)),n}),[])}conjugate(e){const t=this.world.methods.two.transform.noun;return this.getNth(e).map((e=>{const n=xu(e),r=n.root.compute(\"root\").text(\"root\"),o={Singular:r};return Hu(n.root)&&(o.Plural=t.toPlural(r,this.model)),o.Singular===o.Plural&&delete o.Plural,o}),[])}isPlural(e){const t=this.filter((e=>xu(e).isPlural));return t.getNth(e)}isSingular(e){const t=this.filter((e=>!xu(e).isPlural));return t.getNth(e)}adjectives(e){let t=this.update([]);return this.forEach((e=>{const n=xu(e).adjectives;n.found&&(t=t.concat(n))})),t.getNth(e)}toPlural(e){return this.getNth(e).map((e=>function(e,t){if(!0===t.isPlural)return e;if(t.root.has(\"#Possessive\")&&(t.root=t.root.possessives().strip()),!Hu(t.root))return e;const{methods:n,model:r}=e.world,{toPlural:o}=n.two.transform.noun,a=o(t.root.text({keepPunct:!1}),r);e.match(t.root).replaceWith(a,Eu).tag(\"Plural\",\"toPlural\"),t.determiner.has(\"(a|an)\")&&e.remove(t.determiner);const i=t.root.after(\"not? #Adverb+? [#Copula]\",0);return i.found&&(i.has(\"is\")?e.replace(i,\"are\"):i.has(\"was\")&&e.replace(i,\"were\")),e}(e,xu(e))))}toSingular(e){return this.getNth(e).map((e=>function(e,t){if(!1===t.isPlural)return e;const{methods:n,model:r}=e.world,{toSingular:o}=n.two.transform.noun,a=o(t.root.text(\"normal\"),r);return e.replace(t.root,a,Gu).tag(\"Singular\",\"toPlural\"),e}(e,xu(e))))}update(e){const t=new Nouns(this.document,e);return t._cache=this._cache,t}}e.prototype.nouns=function(e){let t=function(e){let t=e.clauses().match(\"<Noun>\"),n=t.match(\"@hasComma\");return n=n.not(\"#Place\"),n.found&&(t=t.splitAfter(n)),t=t.splitOn(\"#Expression\"),t=t.splitOn(\"(he|she|we|you|they|i)\"),t=t.splitOn(\"(#Noun|#Adjective) [(he|him|she|it)]\",0),t=t.splitOn(\"[(he|him|she|it)] (#Determiner|#Value)\",0),t=t.splitBefore(\"#Noun [(the|a|an)] #Adjective? #Noun\",0),t=t.splitOn(\"[(here|there)] #Noun\",0),t=t.splitOn(\"[#Noun] (here|there)\",0),t=t.splitBefore(\"(our|my|their|your)\"),t=t.splitOn(\"#Noun [#Determiner]\",0),t=t.if(\"#Noun\"),t}(this);return t=t.getNth(e),new Nouns(this.document,t.pointer)}}};var Fu={ones:{zeroth:0,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,zero:0,one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9},teens:{tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,ten:10,eleven:11,twelve:12,thirteen:13,fourteen:14,fifteen:15,sixteen:16,seventeen:17,eighteen:18,nineteen:19},tens:{twentieth:20,thirtieth:30,fortieth:40,fourtieth:40,fiftieth:50,sixtieth:60,seventieth:70,eightieth:80,ninetieth:90,twenty:20,thirty:30,forty:40,fourty:40,fifty:50,sixty:60,seventy:70,eighty:80,ninety:90},multiples:{hundredth:100,thousandth:1e3,millionth:1e6,billionth:1e9,trillionth:1e12,quadrillionth:1e15,quintillionth:1e18,sextillionth:1e21,septillionth:1e24,hundred:100,thousand:1e3,million:1e6,billion:1e9,trillion:1e12,quadrillion:1e15,quintillion:1e18,sextillion:1e21,septillion:1e24,grand:1e3}};const Vu=(e,t)=>{if(Fu.ones.hasOwnProperty(e)){if(t.ones||t.teens)return!1}else if(Fu.teens.hasOwnProperty(e)){if(t.ones||t.teens||t.tens)return!1}else if(Fu.tens.hasOwnProperty(e)&&(t.ones||t.teens||t.tens))return!1;return!0},zu=function(e){let t=\"0.\";for(let n=0;n<e.length;n++){const r=e[n];if(!0===Fu.ones.hasOwnProperty(r))t+=Fu.ones[r];else if(!0===Fu.teens.hasOwnProperty(r))t+=Fu.teens[r];else if(!0===Fu.tens.hasOwnProperty(r))t+=Fu.tens[r];else{if(!0!==/^[0-9]$/.test(r))return 0;t+=r}}return parseFloat(t)},Bu=e=>e=(e=(e=(e=(e=(e=(e=(e=e.replace(/1st$/,\"1\")).replace(/2nd$/,\"2\")).replace(/3rd$/,\"3\")).replace(/([4567890])r?th$/,\"$1\")).replace(/^[$€¥£¢]/,\"\")).replace(/[%$€¥£¢]$/,\"\")).replace(/,/g,\"\")).replace(/([0-9])([a-z\\u00C0-\\u00FF]{1,2})$/,\"$1\"),Su=/^([0-9,. ]+)\\/([0-9,. ]+)$/,$u={\"a few\":3,\"a couple\":2,\"a dozen\":12,\"two dozen\":24,zero:0},Mu=e=>Object.keys(e).reduce(((t,n)=>t+=e[n]),0),Lu=function(e){if(!0===$u.hasOwnProperty(e))return $u[e];if(\"a\"===e||\"an\"===e)return 1;const t=(e=>{const t=[{reg:/^(minus|negative)[\\s-]/i,mult:-1},{reg:/^(a\\s)?half[\\s-](of\\s)?/i,mult:.5}];for(let n=0;n<t.length;n++)if(!0===t[n].reg.test(e))return{amount:t[n].mult,str:e.replace(t[n].reg,\"\")};return{amount:1,str:e}})(e);let n=null,r={},o=0,a=!1;const i=(e=t.str).split(/[ -]/);for(let e=0;e<i.length;e++){let s=i[e];if(s=Bu(s),!s||\"and\"===s)continue;if(\"-\"===s||\"negative\"===s){a=!0;continue}if(\"-\"===s.charAt(0)&&(a=!0,s=s.substring(1)),\"point\"===s)return o+=Mu(r),o+=zu(i.slice(e+1,i.length)),o*=t.amount,o;const l=s.match(Su);if(l){const e=parseFloat(l[1].replace(/[, ]/g,\"\")),t=parseFloat(l[2].replace(/[, ]/g,\"\"));t&&(o+=e/t||0)}else{if(Fu.tens.hasOwnProperty(s)&&r.ones&&1===Object.keys(r).length&&(o=100*r.ones,r={}),!1===Vu(s,r))return null;if(/^[0-9.]+$/.test(s))r.ones=parseFloat(s);else if(!0===Fu.ones.hasOwnProperty(s))r.ones=Fu.ones[s];else if(!0===Fu.teens.hasOwnProperty(s))r.teens=Fu.teens[s];else if(!0===Fu.tens.hasOwnProperty(s))r.tens=Fu.tens[s];else if(!0===Fu.multiples.hasOwnProperty(s)){let t=Fu.multiples[s];if(t===n)return null;if(100===t&&void 0!==i[e+1]){const n=i[e+1];Fu.multiples[n]&&(t*=Fu.multiples[n],e+=1)}null===n||t<n?(o+=(Mu(r)||1)*t,n=t,r={}):(o+=Mu(r),n=t,o=(o||1)*t,r={})}}}return o+=Mu(r),o*=t.amount,o*=a?-1:1,0===o&&0===Object.keys(r).length?null:o},Ku=/s$/,Ju=function(e){const t=e.text(\"reduced\");return Lu(t)},Wu={half:2,halve:2,quarter:4},qu=function(e){const t=function(e){const t=e.text(\"reduced\");return Wu.hasOwnProperty(t)?{numerator:1,denominator:Wu[t]}:null}(e=e.clone())||function(e){const t=e.text(\"reduced\").match(/^([-+]?[0-9]+)\\/([-+]?[0-9]+)(st|nd|rd|th)?s?$/);return t&&t[1]&&t[0]?{numerator:Number(t[1]),denominator:Number(t[2])}:null}(e)||function(e){const t=e.match(\"[<num>#Value+] out of every? [<den>#Value+]\");if(!0!==t.found)return null;let{num:n,den:r}=t.groups();return n&&r?(n=Ju(n),r=Ju(r),n&&r&&\"number\"==typeof n&&\"number\"==typeof r?{numerator:n,denominator:r}:null):null}(e)||function(e){const t=e.match(\"[<num>(#Cardinal|a)+] [<den>#Fraction+]\");if(!0!==t.found)return null;let{num:n,den:r}=t.groups();n=n.has(\"a\")?1:Ju(n);let o=r.text(\"reduced\");return Ku.test(o)&&(o=o.replace(Ku,\"\"),r=r.replaceWith(o)),r=Wu.hasOwnProperty(o)?Wu[o]:Ju(r),\"number\"==typeof n&&\"number\"==typeof r?{numerator:n,denominator:r}:null}(e)||function(e){const t=e.match(\"^#Ordinal$\");if(!0!==t.found)return null;if(e.lookAhead(\"^of .\"))return{numerator:1,denominator:Ju(t)};return null}(e)||null;return null!==t&&t.numerator&&t.denominator&&(t.decimal=t.numerator/t.denominator,t.decimal=(e=>{const t=Math.round(1e3*e)/1e3;return 0===t&&0!==e?e:t})(t.decimal)),t},Uu=function(e){if(e<1e6)return String(e);let t;return t=\"number\"==typeof e?e.toFixed(0):e,-1===t.indexOf(\"e+\")?t:t.replace(\".\",\"\").split(\"e+\").reduce((function(e,t){return e+Array(t-e.length+2).join(0)}))},Ru=[[\"ninety\",90],[\"eighty\",80],[\"seventy\",70],[\"sixty\",60],[\"fifty\",50],[\"forty\",40],[\"thirty\",30],[\"twenty\",20]],Qu=[\"\",\"one\",\"two\",\"three\",\"four\",\"five\",\"six\",\"seven\",\"eight\",\"nine\",\"ten\",\"eleven\",\"twelve\",\"thirteen\",\"fourteen\",\"fifteen\",\"sixteen\",\"seventeen\",\"eighteen\",\"nineteen\"],Zu=[[1e24,\"septillion\"],[1e20,\"hundred sextillion\"],[1e21,\"sextillion\"],[1e20,\"hundred quintillion\"],[1e18,\"quintillion\"],[1e17,\"hundred quadrillion\"],[1e15,\"quadrillion\"],[1e14,\"hundred trillion\"],[1e12,\"trillion\"],[1e11,\"hundred billion\"],[1e9,\"billion\"],[1e8,\"hundred million\"],[1e6,\"million\"],[1e5,\"hundred thousand\"],[1e3,\"thousand\"],[100,\"hundred\"],[1,\"one\"]],_u=function(e){const t=[];if(e>100)return t;for(let n=0;n<Ru.length;n++)e>=Ru[n][1]&&(e-=Ru[n][1],t.push(Ru[n][0]));return Qu[e]&&t.push(Qu[e]),t},Xu=function(e){let t=e.num;if(0===t||\"0\"===t)return\"zero\";t>1e21&&(t=Uu(t));let n=[];t<0&&(n.push(\"minus\"),t=Math.abs(t));const r=function(e){let t=e;const n=[];return Zu.forEach((r=>{if(e>=r[0]){const e=Math.floor(t/r[0]);t-=e*r[0],e&&n.push({unit:r[1],count:e})}})),n}(t);for(let e=0;e<r.length;e++){let t=r[e].unit;\"one\"===t&&(t=\"\",n.length>1&&n.push(\"and\")),n=n.concat(_u(r[e].count)),n.push(t)}return n=n.concat((e=>{const t=[\"zero\",\"one\",\"two\",\"three\",\"four\",\"five\",\"six\",\"seven\",\"eight\",\"nine\"],n=[],r=Uu(e).match(/\\.([0-9]+)/);if(!r||!r[0])return n;n.push(\"point\");const o=r[0].split(\"\");for(let e=0;e<o.length;e++)n.push(t[o[e]]);return n})(t)),n=n.filter((e=>e)),0===n.length&&(n[0]=\"\"),n.join(\" \")},Yu={one:\"first\",two:\"second\",three:\"third\",five:\"fifth\",eight:\"eighth\",nine:\"ninth\",twelve:\"twelfth\",twenty:\"twentieth\",thirty:\"thirtieth\",forty:\"fortieth\",fourty:\"fourtieth\",fifty:\"fiftieth\",sixty:\"sixtieth\",seventy:\"seventieth\",eighty:\"eightieth\",ninety:\"ninetieth\"},ec=e=>{const t=Xu(e).split(\" \"),n=t[t.length-1];return Yu.hasOwnProperty(n)?t[t.length-1]=Yu[n]:t[t.length-1]=n.replace(/y$/,\"i\")+\"th\",t.join(\" \")},tc=function(e){class Fractions extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Fractions\"}parse(e){return this.getNth(e).map(qu)}get(e){return this.getNth(e).map(qu)}json(e){return this.getNth(e).map((t=>{const n=t.toView().json(e)[0],r=qu(t);return n.fraction=r,n}),[])}toDecimal(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu(e);(e=e.replaceWith(String(t),!0)).tag(\"NumericValue\"),e.unTag(\"Fraction\")})),this}toFraction(e){return this.getNth(e).forEach((e=>{const t=qu(e);if(t&&\"number\"==typeof t.numerator&&\"number\"==typeof t.denominator){const n=`${t.numerator}/${t.denominator}`;this.replace(e,n)}})),this}toOrdinal(e){return this.getNth(e).forEach((e=>{let t=function(e){if(!e.numerator||!e.denominator)return\"\";const t=Xu({num:e.numerator});let n=ec({num:e.denominator});return 2===e.denominator&&(n=\"half\"),t&&n?(1!==e.numerator&&(n+=\"s\"),`${t} ${n}`):\"\"}(qu(e));e.after(\"^#Noun\").found&&(t+=\" of\"),e.replaceWith(t)})),this}toCardinal(e){return this.getNth(e).forEach((e=>{const t=function(e){return e.numerator&&e.denominator?`${Xu({num:e.numerator})} out of ${Xu({num:e.denominator})}`:\"\"}(qu(e));e.replaceWith(t)})),this}toPercentage(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu(e);let n=100*t;n=Math.round(100*n)/100,e.replaceWith(`${n}%`)})),this}}e.prototype.fractions=function(e){let t=function(e,t){let n=e.match(\"#Fraction+\");return n=n.filter((e=>!e.lookBehind(\"#Value and$\").found)),n=n.notIf(\"#Value seconds\"),n}(this);return t=t.getNth(e),new Fractions(this.document,t.pointer)}},nc=\"twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|fourty\",rc=function(e){let t=e.match(\"#Value+\");if(t.has(\"#NumericValue #NumericValue\")&&(t.has(\"#Value @hasComma #Value\")?t.splitAfter(\"@hasComma\"):t.has(\"#NumericValue #Fraction\")?t.splitAfter(\"#NumericValue #Fraction\"):t=t.splitAfter(\"#NumericValue\")),t.has(\"#Value #Value #Value\")&&!t.has(\"#Multiple\")&&t.has(\"(\"+nc+\") #Cardinal #Cardinal\")&&(t=t.splitAfter(\"(\"+nc+\") #Cardinal\")),t.has(\"#Value #Value\")){t.has(\"#NumericValue #NumericValue\")&&(t=t.splitOn(\"#Year\")),t.has(\"(\"+nc+\") (eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen)\")&&(t=t.splitAfter(\"(\"+nc+\")\"));const e=t.match(\"#Cardinal #Cardinal\");if(e.found&&!t.has(\"(point|decimal|#Fraction)\")&&!e.has(\"#Cardinal (#Multiple|point|decimal)\")){const n=t.has(`(one|two|three|four|five|six|seven|eight|nine) (${nc})`),r=e.has(\"(\"+nc+\") #Cardinal\"),o=e.has(\"#Multiple #Value\");n||r||o||e.terms().forEach((e=>{t=t.splitOn(e)}))}t.match(\"#Ordinal #Ordinal\").match(\"#TextValue\").found&&!t.has(\"#Multiple\")&&(t.has(\"(\"+nc+\") #Ordinal\")||(t=t.splitAfter(\"#Ordinal\"))),t=t.splitBefore(\"#Ordinal [#Cardinal]\",0),t.has(\"#TextValue #NumericValue\")&&!t.has(\"(\"+nc+\"|#Multiple)\")&&(t=t.splitBefore(\"#TextValue #NumericValue\"))}return t=t.splitAfter(\"#NumberRange\"),t=t.splitBefore(\"#Year\"),t},oc=function(e){if(\"string\"==typeof e)return{num:Lu(e)};let t=e.text(\"reduced\");const n=e.growRight(\"#Unit\").match(\"#Unit$\").text(\"machine\"),r=/[0-9],[0-9]/.test(e.text(\"text\"));if(1===e.terms().length&&!e.has(\"#Multiple\")){const o=function(e,t){const n=(e=e.replace(/,/g,\"\")).split(/([0-9.,]*)/);let[r,o]=n,a=n.slice(2).join(\"\");return\"\"!==o&&t.length<2?(o=Number(o||e),\"number\"!=typeof o&&(o=null),a=a||\"\",\"st\"!==a&&\"nd\"!==a&&\"rd\"!==a&&\"th\"!==a||(a=\"\"),{prefix:r||\"\",num:o,suffix:a}):null}(t,e);if(null!==o)return o.hasComma=r,o.unit=n,o}let o=e.match(\"#Fraction{2,}$\");o=!1===o.found?e.match(\"^#Fraction$\"):o;let a=null;o.found&&(o.has(\"#Value and #Value #Fraction\")&&(o=o.match(\"and #Value #Fraction\")),a=qu(o),t=(e=(e=e.not(o)).not(\"and$\")).text(\"reduced\"));let i=0;return t&&(i=Lu(t)||0),a&&a.decimal&&(i+=a.decimal),{hasComma:r,prefix:\"\",num:i,suffix:\"\",isOrdinal:e.has(\"#Ordinal\"),isText:e.has(\"#TextValue\"),isFraction:e.has(\"#Fraction\"),isMoney:e.has(\"#Money\"),unit:n}},ac={\"¢\":\"cents\",$:\"dollars\",\"£\":\"pounds\",\"¥\":\"yen\",\"€\":\"euros\",\"₡\":\"colón\",\"฿\":\"baht\",\"₭\":\"kip\",\"₩\":\"won\",\"₹\":\"rupees\",\"₽\":\"ruble\",\"₺\":\"liras\"},ic={\"%\":\"percent\",\"°\":\"degrees\"},sc=function(e){const t={suffix:\"\",prefix:e.prefix};return ac.hasOwnProperty(e.prefix)&&(t.suffix+=\" \"+ac[e.prefix],t.prefix=\"\"),ic.hasOwnProperty(e.suffix)&&(t.suffix+=\" \"+ic[e.suffix]),t.suffix&&1===e.num&&(t.suffix=t.suffix.replace(/s$/,\"\")),!t.suffix&&e.suffix&&(t.suffix+=\" \"+e.suffix),t},lc=function(e,t){if(\"TextOrdinal\"===t){const{prefix:t,suffix:n}=sc(e);return t+ec(e)+n}if(\"Ordinal\"===t)return e.prefix+function(e){const t=e.num;if(!t&&0!==t)return null;const n=t%100;if(n>10&&n<20)return String(t)+\"th\";const r={0:\"th\",1:\"st\",2:\"nd\",3:\"rd\"};let o=Uu(t);const a=o.slice(o.length-1,o.length);return o+=r[a]?r[a]:\"th\",o}(e)+e.suffix;if(\"TextCardinal\"===t){const{prefix:t,suffix:n}=sc(e);return t+Xu(e)+n}let n=e.num;return e.hasComma&&(n=n.toLocaleString()),e.prefix+String(n)+e.suffix},uc=function(e){if(\"string\"==typeof e||\"number\"==typeof e){const t={};return t[e]=!0,t}return t=e,\"[object Array]\"===Object.prototype.toString.call(t)?e.reduce(((e,t)=>(e[t]=!0,e)),{}):e||{};var t},cc=function(e){class Numbers extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Numbers\"}parse(e){return this.getNth(e).map(oc)}get(e){return this.getNth(e).map(oc).map((e=>e.num))}json(e){const t=\"object\"==typeof e?e:{};return this.getNth(e).map((e=>{const n=e.toView().json(t)[0],r=oc(e);return n.number={prefix:r.prefix,num:r.num,suffix:r.suffix,hasComma:r.hasComma,unit:r.unit},n}),[])}units(){return this.growRight(\"#Unit\").match(\"#Unit$\")}isUnit(e){return function(e,t={}){return t=uc(t),e.filter((e=>{const{unit:n}=oc(e);return!(!n||!0!==t[n])}))}(this,e)}isOrdinal(){return this.if(\"#Ordinal\")}isCardinal(){return this.if(\"#Cardinal\")}toNumber(){const e=this.map((e=>{if(!this.has(\"#TextValue\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#Ordinal\")?\"Ordinal\":\"Cardinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"NumericValue\")}));return new Numbers(e.document,e.pointer)}toLocaleString(){return this.forEach((e=>{const t=oc(e);if(null===t.num)return;let n=t.num.toLocaleString();if(e.has(\"#Ordinal\")){const e=lc(t,\"Ordinal\").match(/[a-z]+$/);e&&(n+=e[0]||\"\")}e.replaceWith(n,{tags:!0})})),this}toText(){const e=this.map((e=>{if(e.has(\"#TextValue\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#Ordinal\")?\"TextOrdinal\":\"TextCardinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"TextValue\"),e}));return new Numbers(e.document,e.pointer)}toCardinal(){const e=this.map((e=>{if(!e.has(\"#Ordinal\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#TextValue\")?\"TextCardinal\":\"Cardinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"Cardinal\"),e}));return new Numbers(e.document,e.pointer)}toOrdinal(){const e=this.map((e=>{if(e.has(\"#Ordinal\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#TextValue\")?\"TextOrdinal\":\"Ordinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"Ordinal\"),e}));return new Numbers(e.document,e.pointer)}isEqual(e){return this.filter((t=>oc(t).num===e))}greaterThan(e){return this.filter((t=>oc(t).num>e))}lessThan(e){return this.filter((t=>oc(t).num<e))}between(e,t){return this.filter((n=>{const r=oc(n).num;return r>e&&r<t}))}set(e){if(void 0===e)return this;\"string\"==typeof e&&(e=oc(e).num);const t=this.map((t=>{const n=oc(t);if(n.num=e,null===n.num)return t;let r=t.has(\"#Ordinal\")?\"Ordinal\":\"Cardinal\";t.has(\"#TextValue\")&&(r=t.has(\"#Ordinal\")?\"TextOrdinal\":\"TextCardinal\");let o=lc(n,r);return n.hasComma&&\"Cardinal\"===r&&(o=Number(o).toLocaleString()),(t=t.not(\"#Currency\")).replaceWith(o,{tags:!0}),t}));return new Numbers(t.document,t.pointer)}add(e){if(!e)return this;\"string\"==typeof e&&(e=oc(e).num);const t=this.map((t=>{const n=oc(t);if(null===n.num)return t;n.num+=e;let r=t.has(\"#Ordinal\")?\"Ordinal\":\"Cardinal\";n.isText&&(r=t.has(\"#Ordinal\")?\"TextOrdinal\":\"TextCardinal\");const o=lc(n,r);return t.replaceWith(o,{tags:!0}),t}));return new Numbers(t.document,t.pointer)}subtract(e,t){return this.add(-1*e,t)}increment(e){return this.add(1,e)}decrement(e){return this.add(-1,e)}update(e){const t=new Numbers(this.document,e);return t._cache=this._cache,t}}Numbers.prototype.toNice=Numbers.prototype.toLocaleString,Numbers.prototype.isBetween=Numbers.prototype.between,Numbers.prototype.minus=Numbers.prototype.subtract,Numbers.prototype.plus=Numbers.prototype.add,Numbers.prototype.equals=Numbers.prototype.isEqual,e.prototype.numbers=function(e){let t=rc(this);return t=t.getNth(e),new Numbers(this.document,t.pointer)},e.prototype.percentages=function(e){let t=rc(this);return t=t.filter((e=>e.has(\"#Percent\")||e.after(\"^percent\"))),t=t.getNth(e),new Numbers(this.document,t.pointer)},e.prototype.money=function(e){let t=rc(this);return t=t.filter((e=>e.has(\"#Money\")||e.after(\"^#Currency\"))),t=t.getNth(e),new Numbers(this.document,t.pointer)},e.prototype.values=e.prototype.numbers};var hc={api:function(e){tc(e),cc(e)}};const dc={people:!0,emails:!0,phoneNumbers:!0,places:!0},gc=function(e={}){return!1!==(e=Object.assign({},dc,e)).people&&this.people().replaceWith(\"██████████\"),!1!==e.emails&&this.emails().replaceWith(\"██████████\"),!1!==e.places&&this.places().replaceWith(\"██████████\"),!1!==e.phoneNumbers&&this.phoneNumbers().replaceWith(\"███████\"),this},mc={api:function(e){e.prototype.redact=gc}},pc=function(e){let t=null;return e.has(\"#PastTense\")?t=\"PastTense\":e.has(\"#FutureTense\")?t=\"FutureTense\":e.has(\"#PresentTense\")&&(t=\"PresentTense\"),{tense:t}},fc=function(e){const t=function(e){let t=e;return 1===t.length?t:(t=t.if(\"#Verb\"),1===t.length?t:(t=t.ifNo(\"(after|although|as|because|before|if|since|than|that|though|when|whenever|where|whereas|wherever|whether|while|why|unless|until|once)\"),t=t.ifNo(\"^even (if|though)\"),t=t.ifNo(\"^so that\"),t=t.ifNo(\"^rather than\"),t=t.ifNo(\"^provided that\"),1===t.length?t:(t=t.ifNo(\"(that|which|whichever|who|whoever|whom|whose|whomever)\"),1===t.length?t:(t=t.ifNo(\"(^despite|^during|^before|^through|^throughout)\"),1===t.length?t:(t=t.ifNo(\"^#Gerund\"),1===t.length?t:(0===t.length&&(t=e),t.eq(0)))))))}(e.clauses()),n=t.chunks();let r=e.none(),o=e.none(),a=e.none();return n.forEach(((e,t)=>{0!==t||e.has(\"<Verb>\")?o.found||!e.has(\"<Verb>\")?o.found&&(a=a.concat(e)):o=e:r=e})),o.found&&!r.found&&(r=o.before(\"<Noun>+\").first()),{subj:r,verb:o,pred:a,grammar:pc(o)}};var bc={api:function(e){class Sentences extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Sentences\"}json(e={}){return this.map((t=>{const n=t.toView().json(e)[0]||{},{subj:r,verb:o,pred:a,grammar:i}=fc(t);return n.sentence={subject:r.text(\"normal\"),verb:o.text(\"normal\"),predicate:a.text(\"normal\"),grammar:i},n}),[])}toPastTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let t=e.verbs();const n=t.eq(0);if(n.has(\"#PastTense\"))return e;if(n.toPastTense(),t.length>1){t=t.slice(1),t=t.filter((e=>!e.lookBehind(\"to$\").found)),t=t.if(\"#PresentTense\"),t=t.notIf(\"#Gerund\");const n=e.match(\"to #Verb+ #Conjunction #Verb\").terms();t=t.not(n),t.found&&t.verbs().toPastTense()}return e}(e))))}toPresentTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let t=e.verbs();return t.eq(0).toPresentTense(),t.length>1&&(t=t.slice(1),t=t.filter((e=>!e.lookBehind(\"to$\").found)),t=t.notIf(\"#Gerund\"),t.found&&t.verbs().toPresentTense()),e}(e))))}toFutureTense(e){return this.getNth(e).map((e=>(fc(e),e=function(e){let t=e.verbs();if(t.eq(0).toFutureTense(),t=(e=e.fullSentence()).verbs(),t.length>1){t=t.slice(1);const e=t.filter((e=>!(e.lookBehind(\"to$\").found||!e.has(\"#Copula #Gerund\")&&(e.has(\"#Gerund\")||!e.has(\"#Copula\")&&e.has(\"#PresentTense\")&&!e.has(\"#Infinitive\")&&e.lookBefore(\"(he|she|it|that|which)$\").found))));e.found&&e.forEach((e=>{if(e.has(\"#Copula\"))return e.match(\"was\").replaceWith(\"is\"),void e.match(\"is\").replaceWith(\"will be\");e.toInfinitive()}))}return e}(e),e)))}toInfinitive(e){return this.getNth(e).map((e=>(fc(e),function(e){return e.verbs().toInfinitive(),e}(e))))}toNegative(e){return this.getNth(e).map((e=>(fc(e),function(e){return e.verbs().first().toNegative().compute(\"chunks\"),e}(e))))}toPositive(e){return this.getNth(e).map((e=>(fc(e),function(e){return e.verbs().first().toPositive().compute(\"chunks\"),e}(e))))}isQuestion(e){return this.questions(e)}isExclamation(e){const t=this.filter((e=>e.lastTerm().has(\"@hasExclamation\")));return t.getNth(e)}isStatement(e){const t=this.filter((e=>!e.isExclamation().found&&!e.isQuestion().found));return t.getNth(e)}update(e){const t=new Sentences(this.document,e);return t._cache=this._cache,t}}Sentences.prototype.toPresent=Sentences.prototype.toPresentTense,Sentences.prototype.toPast=Sentences.prototype.toPastTense,Sentences.prototype.toFuture=Sentences.prototype.toFutureTense;const t={sentences:function(e){let t=this.map((e=>e.fullSentence()));return t=t.getNth(e),new Sentences(this.document,t.pointer)},questions:function(e){const t=function(e){const t=/\\?/,{document:n}=e;return e.filter((e=>{const r=e.docs[0]||[],o=r[r.length-1];return!(!o||n[o.index[0]].length!==r.length)&&(!!t.test(o.post)||function(e){const t=e.clauses();return!(/\\.\\.$/.test(e.out(\"text\"))||e.has(\"^#QuestionWord\")&&e.has(\"@hasComma\")||!e.has(\"or not$\")&&!e.has(\"^#QuestionWord\")&&!e.has(\"^(do|does|did|is|was|can|could|will|would|may) #Noun\")&&!e.has(\"^(have|must) you\")&&!t.has(\"(do|does|is|was) #Noun+ #Adverb? (#Adjective|#Infinitive)$\"))}(e))}))}(this);return t.getNth(e)}};Object.assign(e.prototype,t)}};const vc=function(e){const t={};t.firstName=e.match(\"#FirstName+\"),t.lastName=e.match(\"#LastName+\"),t.honorific=e.match(\"#Honorific+\");const n=t.lastName,r=t.firstName;return r.found&&n.found||r.found||n.found||!e.has(\"^#Honorific .$\")||(t.lastName=e.match(\".$\")),t},yc=\"male\",wc=\"female\",kc={mr:yc,mrs:wc,miss:wc,madam:wc,king:yc,queen:wc,duke:yc,duchess:wc,baron:yc,baroness:wc,count:yc,countess:wc,prince:yc,princess:wc,sire:yc,dame:wc,lady:wc,ayatullah:yc,congressman:yc,congresswoman:wc,\"first lady\":wc,mx:null},Pc=function(e,t){const{firstName:n,honorific:r}=e;if(n.has(\"#FemaleName\"))return wc;if(n.has(\"#MaleName\"))return yc;if(r.found){let e=r.text(\"normal\");if(e=e.replace(/\\./g,\"\"),kc.hasOwnProperty(e))return kc[e];if(/^her /.test(e))return wc;if(/^his /.test(e))return yc}const o=t.after();if(!o.has(\"#Person\")&&o.has(\"#Pronoun\")){const e=o.match(\"#Pronoun\");if(e.has(\"(they|their)\"))return null;const t=e.has(\"(he|his)\"),n=e.has(\"(she|her|hers)\");if(t&&!n)return yc;if(n&&!t)return wc}return null},Ac=function(e){const t=this.clauses();let n=t.people();return n=n.concat(t.places()),n=n.concat(t.organizations()),n=n.not(\"(someone|man|woman|mother|brother|sister|father)\"),n=n.sort(\"seq\"),n=n.getNth(e),n};var Cc={api:function(e){!function(e){class People extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"People\"}parse(e){return this.getNth(e).map(vc)}json(e){const t=\"object\"==typeof e?e:{};return this.getNth(e).map((e=>{const n=e.toView().json(t)[0],r=vc(e);return n.person={firstName:r.firstName.text(\"normal\"),lastName:r.lastName.text(\"normal\"),honorific:r.honorific.text(\"normal\"),presumed_gender:Pc(r,e)},n}),[])}presumedMale(){return this.filter((e=>e.has(\"(#MaleName|mr|mister|sr|jr|king|pope|prince|sir)\")))}presumedFemale(){return this.filter((e=>e.has(\"(#FemaleName|mrs|miss|queen|princess|madam)\")))}update(e){const t=new People(this.document,e);return t._cache=this._cache,t}}e.prototype.people=function(e){let t=function(e){let t=e.splitAfter(\"@hasComma\");t=t.match(\"#Honorific+? #Person+\");const n=t.match(\"#Possessive\").notIf(\"(his|her)\");return t=t.splitAfter(n),t}(this);return t=t.getNth(e),new People(this.document,t.pointer)}}(e),function(e){e.prototype.places=function(t){let n=function(e){let t=e.match(\"(#Place|#Address)+\"),n=t.match(\"@hasComma\");return n=n.filter((e=>!!e.has(\"(asia|africa|europe|america)$\")||!e.has(\"(#City|#Region|#ProperNoun)$\")||!e.after(\"^(#Country|#Region)\").found)),t=t.splitAfter(n),t}(this);return n=n.getNth(t),new e(this.document,n.pointer)}}(e),function(e){e.prototype.organizations=function(e){return this.match(\"#Organization+\").getNth(e)}}(e),function(e){e.prototype.topics=Ac}(e)}};const Nc=function(e,t){const n={pre:e.none(),post:e.none()};if(!e.has(\"#Adverb\"))return n;const r=e.splitOn(t);return 3===r.length?{pre:r.eq(0).adverbs(),post:r.eq(2).adverbs()}:r.eq(0).isDoc(t)?(n.post=r.eq(1).adverbs(),n):(n.pre=r.eq(0).adverbs(),n)},jc=function(e,t){const n=e.splitBefore(t);if(n.length<=1)return e.none();let r=n.eq(0);return r=r.not(\"(#Adverb|#Negative|#Prefix)\"),r},xc=function(e){return e.match(\"#Negative\")},Ic=function(e){if(!e.has(\"(#Particle|#PhrasalVerb)\"))return{verb:e.none(),particle:e.none()};const t=e.match(\"#Particle$\");return{verb:e.not(t),particle:t}},Tc=function(e){const t=e.clone();t.contractions().expand();const n=function(e){let t=e;return e.wordCount()>1&&(t=e.not(\"(#Negative|#Auxiliary|#Modal|#Adverb|#Prefix)\")),t.length>1&&!t.has(\"#Phrasal #Particle\")&&(t=t.last()),t=t.not(\"(want|wants|wanted) to\"),t.found||(t=e.not(\"#Negative\")),t}(t);return{root:n,prefix:t.match(\"#Prefix\"),adverbs:Nc(t,n),auxiliary:jc(t,n),negative:xc(t),phrasal:Ic(n)}},Dc={tense:\"PresentTense\"},Hc={conditional:!0},Ec={tense:\"FutureTense\"},Gc={progressive:!0},Oc={tense:\"PastTense\"},Fc={complete:!0,progressive:!1},Vc={passive:!0},zc=function(e){const t={};return e.forEach((e=>{Object.assign(t,e)})),t},Bc={imperative:[[\"#Imperative\",[]]],\"want-infinitive\":[[\"^(want|wants|wanted) to #Infinitive$\",[Dc]],[\"^wanted to #Infinitive$\",[Oc]],[\"^will want to #Infinitive$\",[Ec]]],\"gerund-phrase\":[[\"^#PastTense #Gerund$\",[Oc]],[\"^#PresentTense #Gerund$\",[Dc]],[\"^#Infinitive #Gerund$\",[Dc]],[\"^will #Infinitive #Gerund$\",[Ec]],[\"^have #PastTense #Gerund$\",[Oc]],[\"^will have #PastTense #Gerund$\",[Oc]]],\"simple-present\":[[\"^#PresentTense$\",[Dc]],[\"^#Infinitive$\",[Dc]]],\"simple-past\":[[\"^#PastTense$\",[Oc]]],\"simple-future\":[[\"^will #Adverb? #Infinitive\",[Ec]]],\"present-progressive\":[[\"^(is|are|am) #Gerund$\",[Dc,Gc]]],\"past-progressive\":[[\"^(was|were) #Gerund$\",[Oc,Gc]]],\"future-progressive\":[[\"^will be #Gerund$\",[Ec,Gc]]],\"present-perfect\":[[\"^(has|have) #PastTense$\",[Oc,Fc]]],\"past-perfect\":[[\"^had #PastTense$\",[Oc,Fc]],[\"^had #PastTense to #Infinitive\",[Oc,Fc]]],\"future-perfect\":[[\"^will have #PastTense$\",[Ec,Fc]]],\"present-perfect-progressive\":[[\"^(has|have) been #Gerund$\",[Oc,Gc]]],\"past-perfect-progressive\":[[\"^had been #Gerund$\",[Oc,Gc]]],\"future-perfect-progressive\":[[\"^will have been #Gerund$\",[Ec,Gc]]],\"passive-past\":[[\"(got|were|was) #Passive\",[Oc,Vc]],[\"^(was|were) being #Passive\",[Oc,Vc]],[\"^(had|have) been #Passive\",[Oc,Vc]]],\"passive-present\":[[\"^(is|are|am) #Passive\",[Dc,Vc]],[\"^(is|are|am) being #Passive\",[Dc,Vc]],[\"^has been #Passive\",[Dc,Vc]]],\"passive-future\":[[\"will have been #Passive\",[Ec,Vc,Hc]],[\"will be being? #Passive\",[Ec,Vc,Hc]]],\"present-conditional\":[[\"would be #PastTense\",[Dc,Hc]]],\"past-conditional\":[[\"would have been #PastTense\",[Oc,Hc]]],\"auxiliary-future\":[[\"(is|are|am|was) going to (#Infinitive|#PresentTense)\",[Ec]]],\"auxiliary-past\":[[\"^did #Infinitive$\",[Oc,{plural:!1}]],[\"^used to #Infinitive$\",[Oc,Fc]]],\"auxiliary-present\":[[\"^(does|do) #Infinitive$\",[Dc,Fc,{plural:!0}]]],\"modal-past\":[[\"^(could|must|should|shall) have #PastTense$\",[Oc]]],\"modal-infinitive\":[[\"^#Modal #Infinitive$\",[]]],infinitive:[[\"^#Infinitive$\",[]]]},Sc=[];Object.keys(Bc).map((e=>{Bc[e].forEach((t=>{Sc.push({name:e,match:t[0],data:zc(t[1])})}))}));const $c=function(e,t){const n={};e=function(e,t){return e=e.clone(),t.adverbs.post&&t.adverbs.post.found&&e.remove(t.adverbs.post),t.adverbs.pre&&t.adverbs.pre.found&&e.remove(t.adverbs.pre),e.has(\"#Negative\")&&(e=e.remove(\"#Negative\")),e.has(\"#Prefix\")&&(e=e.remove(\"#Prefix\")),t.root.has(\"#PhrasalVerb #Particle\")&&e.remove(\"#Particle$\"),e.not(\"#Adverb\")}(e,t);for(let t=0;t<Sc.length;t+=1){const r=Sc[t];if(!0===e.has(r.match)){n.form=r.name,Object.assign(n,r.data);break}}return n.form||e.has(\"^#Verb$\")&&(n.form=\"infinitive\"),n.tense||(n.tense=t.root.has(\"#PastTense\")?\"PastTense\":\"PresentTense\"),n.copula=t.root.has(\"#Copula\"),n.isInfinitive=function(e){if(e.has(\"#Infinitive\")&&e.growLeft(\"to\").has(\"^to #Infinitive\"))return!0;return!1}(e),n},Mc=function(e){if(e.length<=1)return!1;return(e.parse()[0]||{}).isSubordinate},Lc=function(e,t){return!!t.has(\"(are|were|does)\")||(!!e.has(\"(those|they|we)\")||!(!e.found||!e.isPlural)&&e.isPlural().found)},Kc=function(e){const t=function(e){let t=e.before();t=function(e){let t=e.clauses();return t=t.filter(((e,t)=>!(e.has(\"^(if|unless|while|but|for|per|at|by|that|which|who|from)\")||t>0&&e.has(\"^#Verb . #Noun+$\")||t>0&&e.has(\"^#Adverb\")))),0===t.length?e:t}(t);const n=t.nouns();let r=n.last();const o=r.match(\"(i|he|she|we|you|they)\");if(o.found)return o.nouns();let a=n.if(\"^(that|this|those)\");return a.found||!1===n.found&&(a=t.match(\"^(that|this|those)\"),a.found)?a:(r=n.last(),Mc(r)&&(n.remove(r),r=n.last()),Mc(r)&&(n.remove(r),r=n.last()),r)}(e);return{subject:t,plural:Lc(t,e)}},Jc=e=>e,Wc=(e,t)=>{const n=Kc(e),r=n.subject;return!(!r.has(\"i\")&&!r.has(\"we\"))||n.plural},qc=function(e,t){if(e.has(\"were\"))return\"are\";const{subject:n,plural:r}=Kc(e);return n.has(\"i\")?\"am\":n.has(\"we\")||r?\"are\":\"is\"},Uc=function(e,t){const n=Kc(e),r=n.subject;return r.has(\"i\")||r.has(\"we\")||n.plural?\"do\":\"does\"},Rc=function(e){return e.has(\"#Infinitive\")?\"Infinitive\":e.has(\"#Participle\")?\"Participle\":e.has(\"#PastTense\")?\"PastTense\":e.has(\"#Gerund\")?\"Gerund\":e.has(\"#PresentTense\")?\"PresentTense\":void 0},Qc=function(e,t){const{toInfinitive:n}=e.methods.two.transform.verb;let r=t.root.text({keepPunct:!1});return r=n(r,e.model,Rc(e)),r&&e.replace(t.root,r),e},Zc=e=>e.has(\"will not\")?e.replace(\"will not\",\"have not\"):e.remove(\"will\"),_c=function(e){if(!e||!e.isView)return[];return e.json({normal:!0,terms:!1,text:!1}).map((e=>e.normal))},Xc=function(e){return e&&e.isView?e.text(\"normal\"):\"\"},Yc=function(e){const{toInfinitive:t}=e.methods.two.transform.verb;return t(e.text(\"normal\"),e.model,Rc(e))},eh={tags:!0},th={tags:!0},nh={noAux:(e,t)=>(t.auxiliary.found&&(e=e.remove(t.auxiliary)),e),simple:(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;if(o.has(\"#Modal\"))return e;let a=o.text({keepPunct:!1});a=r(a,e.model,Rc(o));return a=n(a,e.model).PastTense,a=\"been\"===a?\"was\":a,\"was\"===a&&(a=((e,t)=>{const{subject:n,plural:r}=Kc(e);return r||n.has(\"we\")?\"were\":\"was\"})(e)),a&&e.replace(o,a,th),e},both:function(e,t){return t.negative.found?(e.replace(\"will\",\"did\"),e):(e=nh.simple(e,t),e=nh.noAux(e,t))},hasHad:e=>(e.replace(\"has\",\"had\",th),e),hasParticiple:(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text(\"normal\");return a=r(a,e.model,Rc(o)),n(a,e.model).Participle}},rh={infinitive:nh.simple,\"simple-present\":nh.simple,\"simple-past\":Jc,\"simple-future\":nh.both,\"present-progressive\":e=>(e.replace(\"are\",\"were\",th),e.replace(\"(is|are|am)\",\"was\",th),e),\"past-progressive\":Jc,\"future-progressive\":(e,t)=>(e.match(t.root).insertBefore(\"was\"),e.remove(\"(will|be)\"),e),\"present-perfect\":nh.hasHad,\"past-perfect\":Jc,\"future-perfect\":(e,t)=>(e.match(t.root).insertBefore(\"had\"),e.has(\"will\")&&(e=Zc(e)),e.remove(\"have\"),e),\"present-perfect-progressive\":nh.hasHad,\"past-perfect-progressive\":Jc,\"future-perfect-progressive\":e=>(e.remove(\"will\"),e.replace(\"have\",\"had\",th),e),\"passive-past\":e=>(e.replace(\"have\",\"had\",th),e),\"passive-present\":e=>(e.replace(\"(is|are)\",\"was\",th),e),\"passive-future\":(e,t)=>(t.auxiliary.has(\"will be\")&&(e.match(t.root).insertBefore(\"had been\"),e.remove(\"(will|be)\")),t.auxiliary.has(\"will have been\")&&(e.replace(\"have\",\"had\",th),e.remove(\"will\")),e),\"present-conditional\":e=>(e.replace(\"be\",\"have been\"),e),\"past-conditional\":Jc,\"auxiliary-future\":e=>(e.replace(\"(is|are|am)\",\"was\",th),e),\"auxiliary-past\":Jc,\"auxiliary-present\":e=>(e.replace(\"(do|does)\",\"did\",th),e),\"modal-infinitive\":(e,t)=>(e.has(\"can\")?e.replace(\"can\",\"could\",th):(nh.simple(e,t),e.match(\"#Modal\").insertAfter(\"have\").tag(\"Auxiliary\")),e),\"modal-past\":Jc,\"want-infinitive\":e=>(e.replace(\"(want|wants)\",\"wanted\",th),e.remove(\"will\"),e),\"gerund-phrase\":(e,t)=>(t.root=t.root.not(\"#Gerund$\"),nh.simple(e,t),Zc(e),e)},oh=function(e,t){const n=Kc(e),r=n.subject;return r.has(\"(i|we|you)\")?\"have\":!1===n.plural||r.has(\"he\")||r.has(\"she\")||r.has(\"#Person\")?\"has\":\"have\"},ah=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;if(o.has(\"#Modal\"))return e;let i=o.text({keepPunct:!1});i=r(i,e.model,Rc(o));const s=n(i,e.model);if(i=s.Participle||s.PastTense,i){e=e.replace(o,i);const t=oh(e);e.prepend(t).match(t).tag(\"Auxiliary\"),e.remove(a)}return e},ih={infinitive:ah,\"simple-present\":ah,\"simple-future\":(e,t)=>e.replace(\"will\",oh(e)),\"present-perfect\":Jc,\"past-perfect\":Jc,\"future-perfect\":(e,t)=>e.replace(\"will have\",oh(e)),\"present-perfect-progressive\":Jc,\"past-perfect-progressive\":Jc,\"future-perfect-progressive\":Jc},sh={tags:!0},lh=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text(\"normal\");return a=r(a,e.model,Rc(o)),!1===Wc(e)&&(a=n(a,e.model).PresentTense),o.has(\"#Copula\")&&(a=qc(e)),a&&(e=e.replace(o,a,sh)).not(\"#Particle\").tag(\"PresentTense\"),e},uh=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text(\"normal\");return a=r(a,e.model,Rc(o)),!1===Wc(e)&&(a=n(a,e.model).Gerund),a&&(e=e.replace(o,a,sh)).not(\"#Particle\").tag(\"Gerund\"),e},ch={infinitive:lh,\"simple-present\":(e,t)=>{const{conjugate:n}=e.methods.two.transform.verb,{root:r}=t;if(!r.has(\"#Infinitive\"))return lh(e,t);{const t=Kc(e).subject;if(Wc(e)||t.has(\"i\"))return e;const o=r.text(\"normal\"),a=n(o,e.model).PresentTense;o!==a&&e.replace(r,a,sh)}return e},\"simple-past\":lh,\"simple-future\":(e,t)=>{const{root:n,auxiliary:r}=t;if(r.has(\"will\")&&n.has(\"be\")){const t=qc(e);e.replace(n,t),(e=e.remove(\"will\")).replace(\"not \"+t,t+\" not\")}else lh(e,t),e=e.remove(\"will\");return e},\"present-progressive\":Jc,\"past-progressive\":(e,t)=>{const n=qc(e);return e.replace(\"(were|was)\",n,sh)},\"future-progressive\":e=>(e.match(\"will\").insertBefore(\"is\"),e.remove(\"be\"),e.remove(\"will\")),\"present-perfect\":(e,t)=>(lh(e,t),e=e.remove(\"(have|had|has)\")),\"past-perfect\":(e,t)=>{const n=Kc(e).subject;return Wc(e)||n.has(\"i\")?((e=Qc(e,t)).remove(\"had\"),e):(e.replace(\"had\",\"has\",sh),e)},\"future-perfect\":e=>(e.match(\"will\").insertBefore(\"has\"),e.remove(\"have\").remove(\"will\")),\"present-perfect-progressive\":Jc,\"past-perfect-progressive\":e=>e.replace(\"had\",\"has\",sh),\"future-perfect-progressive\":e=>(e.match(\"will\").insertBefore(\"has\"),e.remove(\"have\").remove(\"will\")),\"passive-past\":(e,t)=>{const n=qc(e);return e.has(\"(had|have|has)\")&&e.has(\"been\")?(e.replace(\"(had|have|has)\",n,sh),e.replace(\"been\",\"being\"),e):e.replace(\"(got|was|were)\",n)},\"passive-present\":Jc,\"passive-future\":e=>(e.replace(\"will\",\"is\"),e.replace(\"be\",\"being\")),\"present-conditional\":Jc,\"past-conditional\":e=>(e.replace(\"been\",\"be\"),e.remove(\"have\")),\"auxiliary-future\":(e,t)=>(uh(e,t),e.remove(\"(going|to)\"),e),\"auxiliary-past\":(e,t)=>{if(t.auxiliary.has(\"did\")){const n=Uc(e);return e.replace(t.auxiliary,n),e}return uh(e,t),e.replace(t.auxiliary,\"is\"),e},\"auxiliary-present\":Jc,\"modal-infinitive\":Jc,\"modal-past\":(e,t)=>(((e,t)=>{const{toInfinitive:n}=e.methods.two.transform.verb,r=t.root;let o=t.root.text(\"normal\");o=n(o,e.model,Rc(r)),o&&(e=e.replace(t.root,o,sh))})(e,t),e.remove(\"have\")),\"gerund-phrase\":(e,t)=>(t.root=t.root.not(\"#Gerund$\"),lh(e,t),e.remove(\"(will|have)\")),\"want-infinitive\":(e,t)=>{let n=\"wants\";return Wc(e)&&(n=\"want\"),e.replace(\"(want|wanted|wants)\",n,sh),e.remove(\"will\"),e}},hh={tags:!0},dh=(e,t)=>{const{toInfinitive:n}=e.methods.two.transform.verb,{root:r,auxiliary:o}=t;if(r.has(\"#Modal\"))return e;let a=r.text(\"normal\");return a=n(a,e.model,Rc(r)),a&&(e=e.replace(r,a,hh)).not(\"#Particle\").tag(\"Verb\"),e.prepend(\"will\").match(\"will\").tag(\"Auxiliary\"),e.remove(o),e},gh=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;let i=o.text(\"normal\");return i=r(i,e.model,Rc(o)),i&&(i=n(i,e.model).Gerund,e.replace(o,i,hh),e.not(\"#Particle\").tag(\"PresentTense\")),e.remove(a),e.prepend(\"will be\").match(\"will be\").tag(\"Auxiliary\"),e},mh={infinitive:dh,\"simple-present\":dh,\"simple-past\":dh,\"simple-future\":Jc,\"present-progressive\":gh,\"past-progressive\":gh,\"future-progressive\":Jc,\"present-perfect\":e=>(e.match(\"(have|has)\").replaceWith(\"will have\"),e),\"past-perfect\":e=>e.replace(\"(had|has)\",\"will have\"),\"future-perfect\":Jc,\"present-perfect-progressive\":e=>e.replace(\"has\",\"will have\"),\"past-perfect-progressive\":e=>e.replace(\"had\",\"will have\"),\"future-perfect-progressive\":Jc,\"passive-past\":e=>e.has(\"got\")?e.replace(\"got\",\"will get\"):e.has(\"(was|were)\")?(e.replace(\"(was|were)\",\"will be\"),e.remove(\"being\")):e.has(\"(have|has|had) been\")?e.replace(\"(have|has|had) been\",\"will be\"):e,\"passive-present\":e=>(e.replace(\"being\",\"will be\"),e.remove(\"(is|are|am)\"),e),\"passive-future\":Jc,\"present-conditional\":e=>e.replace(\"would\",\"will\"),\"past-conditional\":e=>e.replace(\"would\",\"will\"),\"auxiliary-future\":Jc,\"auxiliary-past\":e=>e.has(\"used\")&&e.has(\"to\")?(e.replace(\"used\",\"will\"),e.remove(\"to\")):(e.replace(\"did\",\"will\"),e),\"auxiliary-present\":e=>e.replace(\"(do|does)\",\"will\"),\"modal-infinitive\":Jc,\"modal-past\":Jc,\"gerund-phrase\":(e,t)=>(t.root=t.root.not(\"#Gerund$\"),dh(e,t),e.remove(\"(had|have)\")),\"want-infinitive\":e=>(e.replace(\"(want|wants|wanted)\",\"will want\"),e)},ph={tags:!0},fh={tags:!0},bh=function(e,t){const n=Uc(e);return e.prepend(n+\" not\"),e},vh=function(e){let t=e.match(\"be\");return t.found?(t.prepend(\"not\"),e):(t=e.match(\"(is|was|am|are|will|were)\"),t.found?(t.append(\"not\"),e):e)},yh=e=>e.has(\"(is|was|am|are|will|were|be)\"),wh={\"simple-present\":(e,t)=>!0===yh(e)?vh(e):(e=Qc(e,t),e=bh(e)),\"simple-past\":(e,t)=>!0===yh(e)?vh(e):((e=Qc(e,t)).prepend(\"did not\"),e),imperative:e=>(e.prepend(\"do not\"),e),infinitive:(e,t)=>!0===yh(e)?vh(e):bh(e),\"passive-past\":e=>{if(e.has(\"got\"))return e.replace(\"got\",\"get\",fh),e.prepend(\"did not\"),e;const t=e.match(\"(was|were|had|have)\");return t.found&&t.append(\"not\"),e},\"auxiliary-past\":e=>{if(e.has(\"used\"))return e.prepend(\"did not\"),e;const t=e.match(\"(did|does|do)\");return t.found&&t.append(\"not\"),e},\"want-infinitive\":(e,t)=>e=(e=bh(e)).replace(\"wants\",\"want\",fh)};var kh={api:function(e){class Verbs extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Verbs\"}parse(e){return this.getNth(e).map(Tc)}json(e,t){const n=this.getNth(t).map((t=>{const n=t.toView().json(e)[0]||{};return n.verb=function(e){const t=Tc(e);e=e.clone().toView();const n=$c(e,t);return{root:t.root.text(),preAdverbs:_c(t.adverbs.pre),postAdverbs:_c(t.adverbs.post),auxiliary:Xc(t.auxiliary),negative:t.negative.found,prefix:Xc(t.prefix),infinitive:Yc(t.root),grammar:n}}(t),n}),[]);return n}subjects(e){return this.getNth(e).map((e=>(Tc(e),Kc(e).subject)))}adverbs(e){return this.getNth(e).map((e=>e.match(\"#Adverb\")))}isSingular(e){return this.getNth(e).filter((e=>!0!==Kc(e).plural))}isPlural(e){return this.getNth(e).filter((e=>!0===Kc(e).plural))}isImperative(e){return this.getNth(e).filter((e=>e.has(\"#Imperative\")))}toInfinitive(e){return this.getNth(e).map((e=>{const t=Tc(e);return function(e,t){const{toInfinitive:n}=e.methods.two.transform.verb,{root:r,auxiliary:o}=t,a=o.terms().harden();let i=r.text(\"normal\");if(i=n(i,e.model,Rc(r)),i&&e.replace(r,i,eh).tag(\"Verb\").firstTerm().tag(\"Infinitive\"),a.found&&e.remove(a),t.negative.found){e.has(\"not\")||e.prepend(\"not\");const t=Uc(e);e.prepend(t)}return e.fullSentence().compute([\"freeze\",\"lexicon\",\"preTagger\",\"postTagger\",\"unfreeze\",\"chunks\"]),e}(e,t,$c(e,t).form)}))}toPresentTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return ch.hasOwnProperty(n)?((e=ch[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):e}(e,t,n.form)}))}toPastTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return rh.hasOwnProperty(n)?((e=rh[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):e}(e,t,n.form)}))}toFutureTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return e.has(\"will\")||e.has(\"going to\")?e:mh.hasOwnProperty(n)?((e=mh[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):e}(e,t,n.form)}))}toGerund(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t){const{toInfinitive:n,conjugate:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;if(e.has(\"#Gerund\"))return e;let i=o.text(\"normal\");i=n(i,e.model,Rc(o));const s=r(i,e.model).Gerund;if(s){const t=qc(e);e.replace(o,s,ph),e.remove(a),e.prepend(t)}return e.replace(\"not is\",\"is not\"),e.replace(\"not are\",\"are not\"),e.fullSentence().compute([\"tagger\",\"chunks\"]),e}(e,t,n.form)}))}toPastParticiple(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return ih.hasOwnProperty(n)?((e=ih[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):((e=ah(e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e)}(e,t,n.form)}))}conjugate(e){const{conjugate:t,toInfinitive:n}=this.world.methods.two.transform.verb;return this.getNth(e).map((e=>{const r=Tc(e),o=$c(e,r);\"imperative\"===o.form&&(o.form=\"simple-present\");let a=r.root.text(\"normal\");if(!r.root.has(\"#Infinitive\")){const t=Rc(r.root);a=n(a,e.model,t)||a}return t(a,e.model)}),[])}isNegative(){return this.if(\"#Negative\")}isPositive(){return this.ifNo(\"#Negative\")}toPositive(){const e=this.match(\"do not #Verb\");return e.found&&e.remove(\"do not\"),this.remove(\"#Negative\")}toNegative(e){return this.getNth(e).map((e=>{const t=Tc(e);return function(e,t,n){if(e.has(\"#Negative\"))return e;if(wh.hasOwnProperty(n))return wh[n](e,t);let r=e.matchOne(\"be\");return r.found?(r.prepend(\"not\"),e):!0===yh(e)?vh(e):(r=e.matchOne(\"(will|had|have|has|did|does|do|#Modal)\"),r.found?(r.append(\"not\"),e):e)}(e,t,$c(e,t).form)}))}update(e){const t=new Verbs(this.document,e);return t._cache=this._cache,t}}Verbs.prototype.toPast=Verbs.prototype.toPastTense,Verbs.prototype.toPresent=Verbs.prototype.toPresentTense,Verbs.prototype.toFuture=Verbs.prototype.toFutureTense,e.prototype.verbs=function(e){let t=function(e){let t=e.match(\"<Verb>\");return t=t.not(\"#Conjunction\"),t=t.not(\"#Preposition\"),t=t.splitAfter(\"@hasComma\"),t=t.splitAfter(\"[(do|did|am|was|is|will)] (is|was)\",0),t=t.splitBefore(\"(#Verb && !#Copula) [being] #Verb\",0),t=t.splitBefore(\"#Verb [to be] #Verb\",0),t=t.splitAfter(\"[help] #PresentTense\",0),t=t.splitBefore(\"(#PresentTense|#PastTense) [#Copula]$\",0),t=t.splitBefore(\"(#PresentTense|#PastTense) [will be]$\",0),t=t.splitBefore(\"(#PresentTense|#PastTense) [(had|has)]\",0),t=t.not(\"#Reflexive$\"),t=t.not(\"#Adjective\"),t=t.splitAfter(\"[#PastTense] #PastTense\",0),t=t.splitAfter(\"[#PastTense] #Auxiliary+ #PastTense\",0),t=t.splitAfter(\"#Copula [#Gerund] #PastTense\",0),t=t.if(\"#Verb\"),t.has(\"(#Verb && !#Auxiliary) #Adverb+? #Copula\")&&(t=t.splitBefore(\"#Copula\")),t}(this);return t=t.getNth(e),new Verbs(this.document,t.pointer)}}};const Ph=function(e,t){const n=t.match(e);if(n.found){const e=n.pronouns().refersTo();if(e.found)return e}return t.none()},Ah=function(e){if(!e.found)return e;const[t]=e.fullPointer[0];return t&&t>0?e.update([[t-1]]):e.none()},Ch=function(e,t){let n=e.people();return n=function(e,t){return\"m\"===t?e.filter((e=>!e.presumedFemale().found)):\"f\"===t?e.filter((e=>!e.presumedMale().found)):e}(n,t),n.found?n.last():(n=e.nouns(\"#Actor\"),n.found?n.last():\"f\"===t?Ph(\"(she|her|hers)\",e):\"m\"===t?Ph(\"(he|him|his)\",e):e.none())},Nh=function(e){const t=e.nouns();let n=t.isPlural().notIf(\"#Pronoun\");if(n.found)return n.last();const r=Ph(\"(they|their|theirs)\",e);return r.found?r:(n=t.match(\"(somebody|nobody|everybody|anybody|someone|noone|everyone|anyone)\"),n.found?n.last():e.none())},jh=function(e,t){let n=e.before(),r=t(n);return r.found?r:(n=Ah(e),r=t(n),r.found?r:(n=Ah(n),r=t(n),r.found?r:e.none()))};var xh={compute:{coreference:function(e){e.pronouns().if(\"(he|him|his|she|her|hers|they|their|theirs|it|its)\").forEach((e=>{let t=null;e.has(\"(he|him|his)\")?t=jh(e,(e=>Ch(e,\"m\"))):e.has(\"(she|her|hers)\")?t=jh(e,(e=>Ch(e,\"f\"))):e.has(\"(they|their|theirs)\")&&(t=jh(e,Nh)),t&&t.found&&function(e,t){t&&t.found&&(e.docs[0][0].reference=t.ptrs[0])}(e,t)}))}},api:function(e){class Pronouns extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Pronouns\"}hasReference(){return this.compute(\"coreference\"),this.filter((e=>e.docs[0][0].reference))}refersTo(){return this.compute(\"coreference\"),this.map((e=>{if(!e.found)return e.none();const t=e.docs[0][0];return t.reference?e.update([t.reference]):e.none()}))}update(e){const t=new Pronouns(this.document,e);return t._cache=this._cache,t}}e.prototype.pronouns=function(e){let t=this.match(\"#Pronoun\");return t=t.getNth(e),new Pronouns(t.document,t.pointer)}}};return h.plugin(ql),h.plugin(Ul),h.plugin(eu),h.plugin(xh),h.plugin(fu),h.plugin(Au),h.plugin(Ou),h.plugin(hc),h.plugin(mc),h.plugin(bc),h.plugin(Cc),h.plugin(kh),h}));\n"
  },
  {
    "path": "builds/one/compromise-one.cjs",
    "content": "!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).nlp=e()}(this,(function(){\"use strict\";var t={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const e={compute:function(t){const{world:e}=this,n=e.compute;return\"string\"==typeof t&&n.hasOwnProperty(t)?n[t](this):(t=>\"[object Array]\"===Object.prototype.toString.call(t))(t)?t.forEach((o=>{e.compute.hasOwnProperty(o)?n[o](this):console.warn(\"no compute:\",t)})):\"function\"==typeof t?t(this):console.warn(\"no compute:\",t),this}};var n={forEach:function(t){return this.fullPointer.forEach(((e,n)=>{const o=this.update([e]);t(o,n)})),this},map:function(t,e){const n=this.fullPointer.map(((e,n)=>{const o=this.update([e]),r=t(o,n);return void 0===r?this.none():r}));if(0===n.length)return e||this.update([]);if(void 0!==n[0]){if(\"string\"==typeof n[0])return n;if(\"object\"==typeof n[0]&&(null===n[0]||!n[0].isView))return n}let o=[];return n.forEach((t=>{o=o.concat(t.fullPointer)})),this.toView(o)},filter:function(t){let e=this.fullPointer;e=e.filter(((e,n)=>{const o=this.update([e]);return t(o,n)}));return this.update(e)},find:function(t){const e=this.fullPointer.find(((e,n)=>{const o=this.update([e]);return t(o,n)}));return this.update([e])},some:function(t){return this.fullPointer.some(((e,n)=>{const o=this.update([e]);return t(o,n)}))},random:function(t=1){let e=this.fullPointer,n=Math.floor(Math.random()*e.length);return n+t>this.length&&(n=this.length-t,n=n<0?0:n),e=e.slice(n,n+t),this.update(e)}};const o={termList:function(){return this.methods.one.termList(this.docs)},terms:function(t){const e=this.match(\".\");return\"number\"==typeof t?e.eq(t):e},groups:function(t){if(t||0===t)return this.update(this._groups[t]||[]);const e={};return Object.keys(this._groups).forEach((t=>{e[t]=this.update(this._groups[t])})),e},eq:function(t){let e=this.pointer;return e||(e=this.docs.map(((t,e)=>[e]))),e[t]?this.update([e[t]]):this.none()},first:function(){return this.eq(0)},last:function(){const t=this.fullPointer.length-1;return this.eq(t)},firstTerms:function(){return this.match(\"^.\")},lastTerms:function(){return this.match(\".$\")},slice:function(t,e){let n=this.pointer||this.docs.map(((t,e)=>[e]));return n=n.slice(t,e),this.update(n)},all:function(){return this.update().toView()},fullSentences:function(){const t=this.fullPointer.map((t=>[t[0]]));return this.update(t).toView()},none:function(){return this.update([])},isDoc:function(t){if(!t||!t.isView)return!1;const e=this.fullPointer,n=t.fullPointer;return!e.length!==n.length&&e.every(((t,e)=>!!n[e]&&(t[0]===n[e][0]&&t[1]===n[e][1]&&t[2]===n[e][2])))},wordCount:function(){return this.docs.reduce(((t,e)=>(t+=e.filter((t=>\"\"!==t.text)).length,t)),0)},isFull:function(){const t=this.pointer;if(!t)return!0;if(0===t.length||0!==t[0][0])return!1;let e=0,n=0;return this.document.forEach((t=>e+=t.length)),this.docs.forEach((t=>n+=t.length)),e===n},getNth:function(t){return\"number\"==typeof t?this.eq(t):\"string\"==typeof t?this.if(t):this}};o.group=o.groups,o.fullSentence=o.fullSentences,o.sentence=o.fullSentences,o.lastTerm=o.lastTerms,o.firstTerm=o.firstTerms;const r=Object.assign({},o,e,n);r.get=r.eq;class View{constructor(e,n,o={}){[[\"document\",e],[\"world\",t],[\"_groups\",o],[\"_cache\",null],[\"viewType\",\"View\"]].forEach((t=>{Object.defineProperty(this,t[0],{value:t[1],writable:!0})})),this.ptrs=n}get docs(){let e=this.document;return this.ptrs&&(e=t.methods.one.getDoc(this.ptrs,this.document)),e}get pointer(){return this.ptrs}get methods(){return this.world.methods}get model(){return this.world.model}get hooks(){return this.world.hooks}get isView(){return!0}get found(){return this.docs.length>0}get length(){return this.docs.length}get fullPointer(){const{docs:t,ptrs:e,document:n}=this,o=e||t.map(((t,e)=>[e]));return o.map((t=>{let[e,o,r,s,i]=t;return o=o||0,r=r||(n[e]||[]).length,n[e]&&n[e][o]&&(s=s||n[e][o].id,n[e][r-1]&&(i=i||n[e][r-1].id)),[e,o,r,s,i]}))}update(t){const e=new View(this.document,t);if(this._cache&&t&&t.length>0){const n=[];t.forEach(((t,e)=>{const[o,r,s]=t;(1===t.length||0===r&&this.document[o].length===s)&&(n[e]=this._cache[o])})),n.length>0&&(e._cache=n)}return e.world=this.world,e}toView(t){return new View(this.document,t||this.pointer)}fromText(t){const{methods:e}=this,n=e.one.tokenize.fromString(t,this.world),o=new View(n);return o.world=this.world,o.compute([\"normal\",\"freeze\",\"lexicon\"]),this.world.compute.preTagger&&o.compute(\"preTagger\"),o.compute(\"unfreeze\"),o}clone(){let t=this.document.slice(0);t=t.map((t=>t.map((t=>((t=Object.assign({},t)).tags=new Set(t.tags),t)))));const e=this.update(this.pointer);return e.document=t,e._cache=this._cache,e}}Object.assign(View.prototype,r);const s=function(t){return t&&\"object\"==typeof t&&!Array.isArray(t)};function i(t,e){if(s(e))for(const n in e)s(e[n])?(t[n]||Object.assign(t,{[n]:{}}),i(t[n],e[n])):Object.assign(t,{[n]:e[n]});return t}const c=function(t,e,n,o){if(r=t,\"[object Array]\"===Object.prototype.toString.call(r))return void t.forEach((t=>c(t,e,n,o)));var r;const{methods:s,model:u,compute:a,hooks:l}=e;t.methods&&function(t,e){for(const n in e)t[n]=t[n]||{},Object.assign(t[n],e[n])}(s,t.methods),t.model&&i(u,t.model),t.irregulars&&function(t,e){const n=t.two.models||{};Object.keys(e).forEach((t=>{e[t].pastTense&&(n.toPast&&(n.toPast.ex[t]=e[t].pastTense),n.fromPast&&(n.fromPast.ex[e[t].pastTense]=t)),e[t].presentTense&&(n.toPresent&&(n.toPresent.ex[t]=e[t].presentTense),n.fromPresent&&(n.fromPresent.ex[e[t].presentTense]=t)),e[t].gerund&&(n.toGerund&&(n.toGerund.ex[t]=e[t].gerund),n.fromGerund&&(n.fromGerund.ex[e[t].gerund]=t)),e[t].comparative&&(n.toComparative&&(n.toComparative.ex[t]=e[t].comparative),n.fromComparative&&(n.fromComparative.ex[e[t].comparative]=t)),e[t].superlative&&(n.toSuperlative&&(n.toSuperlative.ex[t]=e[t].superlative),n.fromSuperlative&&(n.fromSuperlative.ex[e[t].superlative]=t))}))}(u,t.irregulars),t.compute&&Object.assign(a,t.compute),l&&(e.hooks=l.concat(t.hooks||[])),t.api&&t.api(n),t.lib&&Object.keys(t.lib).forEach((e=>o[e]=t.lib[e])),t.tags&&o.addTags(t.tags),t.words&&o.addWords(t.words),t.frozen&&o.addWords(t.frozen,!0),t.mutate&&t.mutate(e,o)},u=function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},a=function(t,e,n){const{methods:o}=n,r=new e([]);if(r.world=n,\"number\"==typeof t&&(t=String(t)),!t)return r;if(\"string\"==typeof t){return new e(o.one.tokenize.fromString(t,n))}if(s=t,\"[object Object]\"===Object.prototype.toString.call(s)&&t.isView)return new e(t.document,t.ptrs);var s;if(u(t)){if(u(t[0])){const n=t.map((t=>t.map((t=>({text:t,normal:t,pre:\"\",post:\" \",tags:new Set})))));return new e(n)}const n=t.map((t=>t.terms.map((t=>(u(t.tags)&&(t.tags=new Set(t.tags)),t)))));return new e(n)}return r},l=Object.assign({},t),h=function(t,e){e&&h.addWords(e);const n=a(t,View,l);return t&&n.compute(l.hooks),n};Object.defineProperty(h,\"_world\",{value:l,writable:!0}),h.tokenize=function(t,e){const{compute:n}=this._world;e&&h.addWords(e);const o=a(t,View,l);return n.contractions&&o.compute([\"alias\",\"normal\",\"machine\",\"contractions\"]),o},h.plugin=function(t){return c(t,this._world,View,this),this},h.extend=h.plugin,h.world=function(){return this._world},h.model=function(){return this._world.model},h.methods=function(){return this._world.methods},h.hooks=function(){return this._world.hooks},h.verbose=function(t){const e=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};return e.DEBUG_TAGS=\"tagger\"===t||!0===t||\"\",e.DEBUG_MATCH=\"match\"===t||!0===t||\"\",e.DEBUG_CHUNKS=\"chunker\"===t||!0===t||\"\",this},h.version=\"14.15.0\";var f={one:{cacheDoc:function(t){const e=t.map((t=>{const e=new Set;return t.forEach((t=>{\"\"!==t.normal&&e.add(t.normal),t.switch&&e.add(`%${t.switch}%`),t.implicit&&e.add(t.implicit),t.machine&&e.add(t.machine),t.root&&e.add(t.root),t.alias&&t.alias.forEach((t=>e.add(t)));const n=Array.from(t.tags);for(let t=0;t<n.length;t+=1)e.add(\"#\"+n[t])})),e}));return e}}};const p={cache:function(){return this._cache=this.methods.one.cacheDoc(this.document),this},uncache:function(){return this._cache=null,this}};var d={api:function(t){Object.assign(t.prototype,p)},compute:{cache:function(t){t._cache=t.methods.one.cacheDoc(t.document)}},methods:f};const m=t=>/^\\p{Lu}[\\p{Ll}'’]/u.test(t)||/^\\p{Lu}$/u.test(t),w=(t,e,n)=>{if(n.forEach((t=>t.dirty=!0)),t){const o=[e,0].concat(n);Array.prototype.splice.apply(t,o)}return t},y=function(t){const e=t[t.length-1];!e||/ $/.test(e.post)||/[-–—]/.test(e.post)||(e.post+=\" \")},b=(t,e,n)=>{const o=/[-.?!,;:)–—'\"]/g,r=t[e-1];if(!r)return;const s=r.post;if(o.test(s)){const t=s.match(o).join(\"\"),e=n[n.length-1];e.post=t+e.post,r.post=r.post.replace(o,\"\")}},v=function(t,e,n,o){const[r,s,i]=e;0===s||i===o[r].length?y(n):(y(n),y([t[e[1]]])),function(t,e,n){const o=t[e];if(0!==e||!m(o.text))return;n[0].text=n[0].text.replace(/^\\p{Ll}/u,(t=>t.toUpperCase()));const r=t[e];r.tags.has(\"ProperNoun\")||r.tags.has(\"Acronym\")||m(r.text)&&r.text.length>1&&(r.text=(s=r.text,s.replace(/^\\p{Lu}/u,(t=>t.toLowerCase()))));var s}(t,s,n),w(t,s,n)};let x=0;const j=t=>(t=t.length<3?\"0\"+t:t).length<3?\"0\"+t:t,E=function(t){let[e,n]=t.index||[0,0];x+=1,x=x>46655?0:x,e=e>46655?0:e,n=n>1294?0:n;let o=j(x.toString(36));o+=j(e.toString(36));let r=n.toString(36);r=r.length<2?\"0\"+r:r,o+=r;return o+=parseInt(36*Math.random(),10).toString(36),t.normal+\"|\"+o.toUpperCase()},O=function(t){if(t.has(\"@hasContraction\")&&\"function\"==typeof t.contractions){t.grow(\"@hasContraction\").contractions().expand()}},k=t=>\"[object Array]\"===Object.prototype.toString.call(t),P=function(t,e,n){const{document:o,world:r}=e;e.uncache();const s=e.fullPointer,i=e.fullPointer;e.forEach(((c,u)=>{const a=c.fullPointer[0],[l]=a,h=o[l];let f=function(t,e){const{methods:n}=e;return\"string\"==typeof t?n.one.tokenize.fromString(t,e)[0]:\"object\"==typeof t&&t.isView?t.clone().docs[0]||[]:k(t)?k(t[0])?t[0]:t:[]}(t,r);0!==f.length&&(f=function(t){return t.map((t=>(t.id=E(t),t)))}(f),n?(O(e.update([a]).firstTerm()),v(h,a,f,o)):(O(e.update([a]).lastTerm()),function(t,e,n,o){const[r,,s]=e,i=(o[r]||[]).length;s<i?(b(t,s,n),y(n)):i===s&&(y(t),b(t,s,n),o[r+1]&&(n[n.length-1].post+=\" \")),w(t,e[2],n),e[4]=n[n.length-1].id}(h,a,f,o)),o[l]&&o[l][a[1]]&&(a[3]=o[l][a[1]].id),i[u]=a,a[2]+=f.length,s[u]=a)}));const c=e.toView(s);return e.ptrs=i,c.compute([\"id\",\"index\",\"freeze\",\"lexicon\"]),c.world.compute.preTagger&&c.compute(\"preTagger\"),c.compute(\"unfreeze\"),c},_={insertAfter:function(t){return P(t,this,!1)},insertBefore:function(t){return P(t,this,!0)}};_.append=_.insertAfter,_.prepend=_.insertBefore,_.insert=_.insertAfter;const S=/\\$[0-9a-z]+/g,z={},A=t=>t.replace(/^\\p{Ll}/u,(t=>t.toUpperCase())),$=t=>t.replace(/^\\p{Lu}/u,(t=>t.toLowerCase()));z.replaceWith=function(t,e={}){let n=this.fullPointer;const o=this;if(this.uncache(),\"function\"==typeof t)return function(t,e,n){return t.forEach((t=>{const o=e(t);t.replaceWith(o,n)})),t}(o,t,e);const r=o.docs[0];if(!r)return o;const s=e.possessives&&r[r.length-1].tags.has(\"Possessive\"),i=e.case&&(c=r[0].text,/^\\p{Lu}[\\p{Ll}'’]/u.test(c)||/^\\p{Lu}$/u.test(c));var c;t=function(t,e){if(\"string\"!=typeof t)return t;const n=e.groups();return t=t.replace(S,(t=>{const e=t.replace(/\\$/,\"\");return n.hasOwnProperty(e)?n[e].text():t})),t}(t,o);const u=this.update(n);n=n.map((t=>t.slice(0,3)));const a=(u.docs[0]||[]).map((t=>Array.from(t.tags))),l=u.docs[0][0].pre,h=u.docs[0][u.docs[0].length-1].post;if(\"string\"==typeof t&&(t=this.fromText(t).compute(\"id\")),o.insertAfter(t),u.has(\"@hasContraction\")&&o.contractions){o.grow(\"@hasContraction+\").contractions().expand()}if(o.delete(u),s){const t=o.docs[0],e=t[t.length-1];e.tags.has(\"Possessive\")||(e.text+=\"'s\",e.normal+=\"'s\",e.tags.add(\"Possessive\"))}if(l&&o.docs[0]&&(o.docs[0][0].pre=l),h&&o.docs[0]){const t=o.docs[0][o.docs[0].length-1];t.post.trim()||(t.post=h)}const f=o.toView(n).compute([\"index\",\"freeze\",\"lexicon\"]);if(f.world.compute.preTagger&&f.compute(\"preTagger\"),f.compute(\"unfreeze\"),e.tags&&f.terms().forEach(((t,e)=>{t.tagSafe(a[e])})),!f.docs[0]||!f.docs[0][0])return f;if(e.case){const t=i?A:$;f.docs[0][0].text=t(f.docs[0][0].text)}return f},z.replace=function(t,e,n){if(t&&!e)return this.replaceWith(t,n);const o=this.match(t);return o.found?(this.soften(),o.replaceWith(e,n)):this};const T={remove:function(t){const{indexN:e}=this.methods.one.pointer;this.uncache();let n=this.all(),o=this;t&&(n=this,o=this.match(t));const r=!n.ptrs;if(o.has(\"@hasContraction\")&&o.contractions){o.grow(\"@hasContraction\").contractions().expand()}let s=n.fullPointer;const i=o.fullPointer.reverse(),c=function(t,e){e.forEach((e=>{const[n,o,r]=e,s=r-o;t[n]&&(r===t[n].length&&r>1&&function(t,e){const n=t.length-1,o=t[n],r=t[n-e];r&&o&&(r.post+=o.post,r.post=r.post.replace(/ +([.?!,;:])/,\"$1\"),r.post=r.post.replace(/[,;:]+([.?!])/,\"$1\"))}(t[n],s),t[n].splice(o,s))}));for(let e=t.length-1;e>=0;e-=1)if(0===t[e].length&&(t.splice(e,1),e===t.length&&t[e-1])){const n=t[e-1],o=n[n.length-1];o&&(o.post=o.post.trimEnd())}return t}(this.document,i);if(s=function(t,e){return t=t.map((t=>{const[n]=t;return e[n]?(e[n].forEach((e=>{const n=e[2]-e[1];t[1]<=e[1]&&t[2]>=e[2]&&(t[2]-=n)})),t):t})),t.forEach(((e,n)=>{if(0===e[1]&&0==e[2])for(let e=n+1;e<t.length;e+=1)t[e][0]-=1,t[e][0]<0&&(t[e][0]=0)})),t=(t=t.filter((t=>t[2]-t[1]>0))).map((t=>(t[3]=null,t[4]=null,t)))}(s,e(i)),n.ptrs=s,n.document=c,n.compute(\"index\"),r&&(n.ptrs=void 0),!t)return this.ptrs=[],n.none();return n.toView(s)}};T.delete=T.remove;const C={pre:function(t,e){return void 0===t&&this.found?this.docs[0][0].pre:(this.docs.forEach((n=>{const o=n[0];!0===e?o.pre+=t:o.pre=t})),this)},post:function(t,e){if(void 0===t){const t=this.docs[this.docs.length-1];return t[t.length-1].post}return this.docs.forEach((n=>{const o=n[n.length-1];!0===e?o.post+=t:o.post=t})),this},trim:function(){if(!this.found)return this;const t=this.docs,e=t[0][0];e.pre=e.pre.trimStart();const n=t[t.length-1],o=n[n.length-1];return o.post=o.post.trimEnd(),this},hyphenate:function(){return this.docs.forEach((t=>{t.forEach(((e,n)=>{0!==n&&(e.pre=\"\"),t[n+1]&&(e.post=\"-\")}))})),this},dehyphenate:function(){const t=/[-–—]/;return this.docs.forEach((e=>{e.forEach((e=>{t.test(e.post)&&(e.post=\" \")}))})),this},toQuotations:function(t,e){return t=t||'\"',e=e||'\"',this.docs.forEach((n=>{n[0].pre=t+n[0].pre;const o=n[n.length-1];o.post=e+o.post})),this},toParentheses:function(t,e){return t=t||\"(\",e=e||\")\",this.docs.forEach((n=>{n[0].pre=t+n[0].pre;const o=n[n.length-1];o.post=e+o.post})),this}};C.deHyphenate=C.dehyphenate,C.toQuotation=C.toQuotations;var L={alpha:(t,e)=>t.normal<e.normal?-1:t.normal>e.normal?1:0,length:(t,e)=>{const n=t.normal.trim().length,o=e.normal.trim().length;return n<o?1:n>o?-1:0},wordCount:(t,e)=>t.words<e.words?1:t.words>e.words?-1:0,sequential:(t,e)=>t[0]<e[0]?1:t[0]>e[0]?-1:t[1]>e[1]?1:-1,byFreq:function(t){const e={};return t.forEach((t=>{e[t.normal]=e[t.normal]||0,e[t.normal]+=1})),t.sort(((t,n)=>{const o=e[t.normal],r=e[n.normal];return o<r?1:o>r?-1:0})),t}};const N=new Set([\"index\",\"sequence\",\"seq\",\"sequential\",\"chron\",\"chronological\"]),V=new Set([\"freq\",\"frequency\",\"topk\",\"repeats\"]),F=new Set([\"alpha\",\"alphabetical\"]);var q={unique:function(){const t=new Set;return this.filter((e=>{const n=e.text(\"machine\");return!t.has(n)&&(t.add(n),!0)}))},reverse:function(){let t=this.pointer||this.docs.map(((t,e)=>[e]));return t=[].concat(t),t=t.reverse(),this._cache&&(this._cache=this._cache.reverse()),this.update(t)},sort:function(t){const{docs:e,pointer:n}=this;if(this.uncache(),\"function\"==typeof t)return function(t,e){let n=t.fullPointer;return n=n.sort(((n,o)=>(n=t.update([n]),o=t.update([o]),e(n,o)))),t.ptrs=n,t}(this,t);t=t||\"alpha\";const o=n||e.map(((t,e)=>[e]));let r=e.map(((t,e)=>({index:e,words:t.length,normal:t.map((t=>t.machine||t.normal||\"\")).join(\" \"),pointer:o[e]})));return N.has(t)&&(t=\"sequential\"),F.has(t)&&(t=\"alpha\"),V.has(t)?(r=L.byFreq(r),this.update(r.map((t=>t.pointer)))):\"function\"==typeof L[t]?(r=r.sort(L[t]),this.update(r.map((t=>t.pointer)))):this}};const G=function(t,e){if(t.length>0){const e=t[t.length-1],n=e[e.length-1];!1===/ /.test(n.post)&&(n.post+=\" \")}return t=t.concat(e)};var B={concat:function(t){if(\"string\"==typeof t){const e=this.fromText(t);if(this.found&&this.ptrs){const t=this.fullPointer,n=t[t.length-1][0];this.document.splice(n,0,...e.document)}else this.document=this.document.concat(e.document);return this.all().compute(\"index\")}if(\"object\"==typeof t&&t.isView)return function(t,e){if(t.document===e.document){const n=t.fullPointer.concat(e.fullPointer);return t.toView(n).compute(\"index\")}return e.fullPointer.forEach((e=>{e[0]+=t.document.length})),t.document=G(t.document,e.docs),t.all()}(this,t);if(e=t,\"[object Array]\"===Object.prototype.toString.call(e)){const e=G(this.document,t);return this.document=e,this.all()}var e;return this}};var D={harden:function(){return this.ptrs=this.fullPointer,this},soften:function(){let t=this.ptrs;return!t||t.length<1||(t=t.map((t=>t.slice(0,3))),this.ptrs=t),this}};const M=Object.assign({},{toLowerCase:function(){return this.termList().forEach((t=>{t.text=t.text.toLowerCase()})),this},toUpperCase:function(){return this.termList().forEach((t=>{t.text=t.text.toUpperCase()})),this},toTitleCase:function(){return this.termList().forEach((t=>{t.text=t.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(t=>t.toUpperCase()))})),this},toCamelCase:function(){return this.docs.forEach((t=>{t.forEach(((e,n)=>{0!==n&&(e.text=e.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(t=>t.toUpperCase()))),n!==t.length-1&&(e.post=\"\")}))})),this}},_,z,T,C,q,B,D),U={id:function(t){const e=t.docs;for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const o=e[t][n];o.id=o.id||E(o)}}};var W={api:function(t){Object.assign(t.prototype,M)},compute:U};const I=!0;var R={one:{contractions:[{word:\"@\",out:[\"at\"]},{word:\"arent\",out:[\"are\",\"not\"]},{word:\"alot\",out:[\"a\",\"lot\"]},{word:\"brb\",out:[\"be\",\"right\",\"back\"]},{word:\"cannot\",out:[\"can\",\"not\"]},{word:\"dun\",out:[\"do\",\"not\"]},{word:\"can't\",out:[\"can\",\"not\"]},{word:\"shan't\",out:[\"should\",\"not\"]},{word:\"won't\",out:[\"will\",\"not\"]},{word:\"that's\",out:[\"that\",\"is\"]},{word:\"what's\",out:[\"what\",\"is\"]},{word:\"let's\",out:[\"let\",\"us\"]},{word:\"dunno\",out:[\"do\",\"not\",\"know\"]},{word:\"gonna\",out:[\"going\",\"to\"]},{word:\"gotta\",out:[\"have\",\"got\",\"to\"]},{word:\"gimme\",out:[\"give\",\"me\"]},{word:\"outta\",out:[\"out\",\"of\"]},{word:\"tryna\",out:[\"trying\",\"to\"]},{word:\"gtg\",out:[\"got\",\"to\",\"go\"]},{word:\"im\",out:[\"i\",\"am\"]},{word:\"imma\",out:[\"I\",\"will\"]},{word:\"imo\",out:[\"in\",\"my\",\"opinion\"]},{word:\"irl\",out:[\"in\",\"real\",\"life\"]},{word:\"ive\",out:[\"i\",\"have\"]},{word:\"rn\",out:[\"right\",\"now\"]},{word:\"tbh\",out:[\"to\",\"be\",\"honest\"]},{word:\"wanna\",out:[\"want\",\"to\"]},{word:\"c'mere\",out:[\"come\",\"here\"]},{word:\"c'mon\",out:[\"come\",\"on\"]},{word:\"shoulda\",out:[\"should\",\"have\"]},{word:\"coulda\",out:[\"coulda\",\"have\"]},{word:\"woulda\",out:[\"woulda\",\"have\"]},{word:\"musta\",out:[\"must\",\"have\"]},{word:\"tis\",out:[\"it\",\"is\"]},{word:\"twas\",out:[\"it\",\"was\"]},{word:\"y'know\",out:[\"you\",\"know\"]},{word:\"ne'er\",out:[\"never\"]},{word:\"o'er\",out:[\"over\"]},{after:\"ll\",out:[\"will\"]},{after:\"ve\",out:[\"have\"]},{after:\"re\",out:[\"are\"]},{after:\"m\",out:[\"am\"]},{before:\"c\",out:[\"ce\"]},{before:\"m\",out:[\"me\"]},{before:\"n\",out:[\"ne\"]},{before:\"qu\",out:[\"que\"]},{before:\"s\",out:[\"se\"]},{before:\"t\",out:[\"tu\"]},{word:\"shouldnt\",out:[\"should\",\"not\"]},{word:\"couldnt\",out:[\"could\",\"not\"]},{word:\"wouldnt\",out:[\"would\",\"not\"]},{word:\"hasnt\",out:[\"has\",\"not\"]},{word:\"wasnt\",out:[\"was\",\"not\"]},{word:\"isnt\",out:[\"is\",\"not\"]},{word:\"cant\",out:[\"can\",\"not\"]},{word:\"dont\",out:[\"do\",\"not\"]},{word:\"wont\",out:[\"will\",\"not\"]},{word:\"howd\",out:[\"how\",\"did\"]},{word:\"whatd\",out:[\"what\",\"did\"]},{word:\"whend\",out:[\"when\",\"did\"]},{word:\"whered\",out:[\"where\",\"did\"]}],numberSuffixes:{st:I,nd:I,rd:I,th:I,am:I,pm:I,max:I,\"°\":I,s:I,e:I,er:I,\"ère\":I,\"ème\":I}}};const Q=function(t,e,n){const[o,r]=e;n&&0!==n.length&&(n=n.map(((t,e)=>(t.implicit=t.text,t.machine=t.text,t.pre=\"\",t.post=\"\",t.text=\"\",t.normal=\"\",t.index=[o,r+e],t))),n[0]&&(n[0].pre=t[o][r].pre,n[n.length-1].post=t[o][r].post,n[0].text=t[o][r].text,n[0].normal=t[o][r].normal),t[o].splice(r,1,...n))},H=/'/,Z=new Set([\"what\",\"how\",\"when\",\"where\",\"why\"]),K=new Set([\"be\",\"go\",\"start\",\"think\",\"need\"]),J=new Set([\"been\",\"gone\"]),X=/'/,Y=/(e|é|aison|sion|tion)$/,tt=/(age|isme|acle|ege|oire)$/;var et=(t,e)=>[\"je\",t[e].normal.split(X)[1]],nt=(t,e)=>{const n=t[e].normal.split(X)[1];return n&&n.endsWith(\"e\")?[\"la\",n]:[\"le\",n]},ot=(t,e)=>{const n=t[e].normal.split(X)[1];return n&&Y.test(n)&&!tt.test(n)?[\"du\",n]:n&&n.endsWith(\"s\")?[\"des\",n]:[\"de\",n]};const rt=/^([0-9.]{1,4}[a-z]{0,2}) ?[-–—] ?([0-9]{1,4}[a-z]{0,2})$/i,st=/^([0-9]{1,2}(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9]{1,2}(:[0-9][0-9])?(am|pm)?)$/i,it=/^[0-9]{3}-[0-9]{4}$/,ct=function(t,e){const n=t[e];let o=n.text.match(rt);return null!==o?!0===n.tags.has(\"PhoneNumber\")||it.test(n.text)?null:[o[1],\"to\",o[2]]:(o=n.text.match(st),null!==o?[o[1],\"to\",o[4]]:null)},ut=/^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/,at=function(t,e,n){const o=n.model.one.numberSuffixes||{},r=t[e].text.match(ut);if(null!==r){const t=r[2].toLowerCase().trim();return o.hasOwnProperty(t)?null:[r[1],t]}return null},lt=/'/,ht=/^[0-9][^-–—]*[-–—].*?[0-9]/,ft=function(t,e,n,o){const r=e.update();r.document=[t];let s=n+o;n>0&&(n-=1),t[s]&&(s+=1),r.ptrs=[[0,n,s]]},pt={t:(t,e)=>function(t,e){return\"ain't\"===t[e].normal||\"aint\"===t[e].normal?null:[t[e].normal.replace(/n't/,\"\"),\"not\"]}(t,e),d:(t,e)=>function(t,e){const n=t[e].normal.split(H)[0];if(Z.has(n))return[n,\"did\"];if(t[e+1]){if(J.has(t[e+1].normal))return[n,\"had\"];if(K.has(t[e+1].normal))return[n,\"would\"]}return null}(t,e)},dt={j:(t,e)=>et(t,e),l:(t,e)=>nt(t,e),d:(t,e)=>ot(t,e)},mt=function(t,e,n,o){for(let r=0;r<t.length;r+=1){const s=t[r];if(s.word===e.normal)return s.out;if(null!==o&&o===s.after)return[n].concat(s.out);if(null!==n&&n===s.before&&o&&o.length>2)return s.out.concat(o)}return null},gt=function(t,e){const n=e.fromText(t.join(\" \"));return n.compute([\"id\",\"alias\"]),n.docs[0]},wt=function(t,e){for(let n=e+1;n<5&&t[n];n+=1)if(\"been\"===t[n].normal)return[\"there\",\"has\"];return[\"there\",\"is\"]};var yt={contractions:t=>{const{world:e,document:n}=t,{model:o,methods:r}=e,s=o.one.contractions||[];n.forEach(((o,i)=>{for(let c=o.length-1;c>=0;c-=1){let u=null,a=null;if(!0===lt.test(o[c].normal)){const t=o[c].normal.split(lt);u=t[0],a=t[1]}let l=mt(s,o[c],u,a);!l&&pt.hasOwnProperty(a)&&(l=pt[a](o,c,e)),!l&&dt.hasOwnProperty(u)&&(l=dt[u](o,c)),\"there\"===u&&\"s\"===a&&(l=wt(o,c)),l?(l=gt(l,t),Q(n,[i,c],l),ft(n[i],t,c,l.length)):ht.test(o[c].normal)?(l=ct(o,c),l&&(l=gt(l,t),Q(n,[i,c],l),r.one.setTag(l,\"NumberRange\",e),l[2]&&l[2].tags.has(\"Time\")&&r.one.setTag([l[0]],\"Time\",e,null,\"time-range\"),ft(n[i],t,c,l.length))):(l=at(o,c,e),l&&(l=gt(l,t),Q(n,[i,c],l),r.one.setTag([l[1]],\"Unit\",e,null,\"contraction-unit\")))}}))}};const bt={model:R,compute:yt,hooks:[\"contractions\"]},vt=function(t){const e=t.world,{model:n,methods:o}=t.world,r=o.one.setTag,{frozenLex:s}=n.one,i=n.one._multiCache||{};t.docs.forEach((t=>{for(let n=0;n<t.length;n+=1){const o=t[n],c=o.machine||o.normal;if(void 0!==i[c]&&t[n+1]){for(let o=n+i[c]-1;o>n;o-=1){const i=t.slice(n,o+1),c=i.map((t=>t.machine||t.normal)).join(\" \");!0!==s.hasOwnProperty(c)||(r(i,s[c],e,!1,\"1-frozen-multi-lexicon\"),i.forEach((t=>t.frozen=!0)))}}void 0!==s[c]&&s.hasOwnProperty(c)&&(r([o],s[c],e,!1,\"1-freeze-lexicon\"),o.frozen=!0)}}))};const xt=t=>\"\u001b[34m\"+t+\"\u001b[0m\",jt=t=>\"\u001b[3m\u001b[2m\"+t+\"\u001b[0m\",Et=function(t){t.docs.forEach((t=>{console.log(xt(\"\\n  ┌─────────\")),t.forEach((t=>{let e=`  ${jt(\"│\")}  `;const n=t.implicit||t.text||\"-\";!0===t.frozen?e+=`${xt(n)} ❄️`:e+=jt(n),console.log(e)}))}))};var Ot={compute:{frozen:vt,freeze:vt,unfreeze:function(t){return t.docs.forEach((t=>{t.forEach((t=>{delete t.frozen}))})),t}},mutate:t=>{const e=t.methods.one;e.termMethods.isFrozen=t=>!0===t.frozen,e.debug.freeze=Et,e.debug.frozen=Et},api:function(t){t.prototype.freeze=function(){return this.docs.forEach((t=>{t.forEach((t=>{t.frozen=!0}))})),this},t.prototype.unfreeze=function(){this.compute(\"unfreeze\")},t.prototype.isFrozen=function(){return this.match(\"@isFrozen+\")}},hooks:[\"freeze\"]};const kt=function(t,e,n){const{model:o,methods:r}=n,s=r.one.setTag,i=o.one._multiCache||{},{lexicon:c}=o.one||{},u=t[e],a=u.machine||u.normal;if(void 0!==i[a]&&t[e+1]){for(let o=e+i[a]-1;o>e;o-=1){const r=t.slice(e,o+1);if(r.length<=1)return!1;const i=r.map((t=>t.machine||t.normal)).join(\" \");if(!0===c.hasOwnProperty(i)){const t=c[i];return s(r,t,n,!1,\"1-multi-lexicon\"),!t||2!==t.length||\"PhrasalVerb\"!==t[0]&&\"PhrasalVerb\"!==t[1]||s([r[1]],\"Particle\",n,!1,\"1-phrasal-particle\"),!0}}return!1}return null},Pt=/^(under|over|mis|re|un|dis|semi|pre|post)-?/,_t=new Set([\"Verb\",\"Infinitive\",\"PastTense\",\"Gerund\",\"PresentTense\",\"Adjective\",\"Participle\"]),St=function(t,e,n){const{model:o,methods:r}=n,s=r.one.setTag,{lexicon:i}=o.one,c=t[e],u=c.machine||c.normal;if(void 0!==i[u]&&i.hasOwnProperty(u))return s([c],i[u],n,!1,\"1-lexicon\"),!0;if(c.alias){const t=c.alias.find((t=>i.hasOwnProperty(t)));if(t)return s([c],i[t],n,!1,\"1-lexicon-alias\"),!0}if(!0===Pt.test(u)){const t=u.replace(Pt,\"\");if(i.hasOwnProperty(t)&&t.length>3&&_t.has(i[t]))return s([c],i[t],n,!1,\"1-lexicon-prefix\"),!0}return null};var zt={lexicon:function(t){const e=t.world;t.docs.forEach((t=>{for(let n=0;n<t.length;n+=1)if(0===t[n].tags.size){let o=null;o=o||kt(t,n,e),o=o||St(t,n,e)}}))}};var At={one:{expandLexicon:function(t){const e={},n={};return Object.keys(t).forEach((o=>{const r=t[o],s=(o=(o=o.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);s.length>1&&(void 0===n[s[0]]||s.length>n[s[0]])&&(n[s[0]]=s.length),e[o]=e[o]||r})),delete e[\"\"],delete e.null,delete e[\" \"],{lex:e,_multi:n}}}};var $t={addWords:function(t,e=!1){const n=this.world(),{methods:o,model:r}=n;if(!t)return;if(Object.keys(t).forEach((e=>{\"string\"==typeof t[e]&&t[e].startsWith(\"#\")&&(t[e]=t[e].replace(/^#/,\"\"))})),!0===e){const{lex:e,_multi:s}=o.one.expandLexicon(t,n);return Object.assign(r.one._multiCache,s),void Object.assign(r.one.frozenLex,e)}if(o.two.expandLexicon){const{lex:e,_multi:s}=o.two.expandLexicon(t,n);Object.assign(r.one.lexicon,e),Object.assign(r.one._multiCache,s)}const{lex:s,_multi:i}=o.one.expandLexicon(t,n);Object.assign(r.one.lexicon,s),Object.assign(r.one._multiCache,i)}};var Tt={model:{one:{lexicon:{},_multiCache:{},frozenLex:{}}},methods:At,compute:zt,lib:$t,hooks:[\"lexicon\"]};const Ct=function(t,e){const n=[{}],o=[null],r=[0],s=[];let i=0;t.forEach((function(t){let r=0;const s=function(t,e){const{methods:n,model:o}=e,r=n.one.tokenize.splitTerms(t,o).map((t=>n.one.tokenize.splitWhitespace(t,o)));return r.map((t=>t.text.toLowerCase()))}(t,e);for(let t=0;t<s.length;t++){const e=s[t];n[r]&&n[r].hasOwnProperty(e)?r=n[r][e]:(i++,n[r][e]=i,n[i]={},r=i,o[i]=null)}o[r]=[s.length]}));for(const t in n[0])i=n[0][t],r[i]=0,s.push(i);for(;s.length;){const t=s.shift(),e=Object.keys(n[t]);for(let c=0;c<e.length;c+=1){const u=e[c],a=n[t][u];for(s.push(a),i=r[t];i>0&&!n[i].hasOwnProperty(u);)i=r[i];if(n.hasOwnProperty(i)){const t=n[i][u];r[a]=t,o[t]&&(o[a]=o[a]||[],o[a]=o[a].concat(o[t]))}else r[a]=0}}return{goNext:n,endAs:o,failTo:r}},Lt=function(t,e,n){let o=0;const r=[];for(let s=0;s<t.length;s++){const i=t[s][n.form]||t[s].normal;for(;o>0&&(void 0===e.goNext[o]||!e.goNext[o].hasOwnProperty(i));)o=e.failTo[o]||0;if(e.goNext[o].hasOwnProperty(i)&&(o=e.goNext[o][i],e.endAs[o])){const n=e.endAs[o];for(let e=0;e<n.length;e++){const o=n[e],i=t[s-o+1],[c,u]=i.index;r.push([c,u,u+o,i.id])}}}return r},Nt=function(t,e){for(let n=0;n<t.length;n+=1)if(!0===e.has(t[n]))return!1;return!0};const Vt=(t,e)=>{for(let n=t.length-1;n>=0;n-=1)if(t[n]!==e)return t=t.slice(0,n+1);return t},Ft={buildTrie:function(t){return function(t){return t.goNext=t.goNext.map((t=>{if(0!==Object.keys(t).length)return t})),t.goNext=Vt(t.goNext,void 0),t.failTo=Vt(t.failTo,0),t.endAs=Vt(t.endAs,null),t}(Ct(t,this.world()))}};Ft.compile=Ft.buildTrie;var qt={api:function(t){t.prototype.lookup=function(t,e={}){if(!t)return this.none();\"string\"==typeof t&&(t=[t]);var n;let o=function(t,e,n){let o=[];n.form=n.form||\"normal\";const r=t.docs;if(!e.goNext||!e.goNext[0])return console.error(\"Compromise invalid lookup trie\"),t.none();const s=Object.keys(e.goNext[0]);for(let i=0;i<r.length;i++){if(t._cache&&t._cache[i]&&!0===Nt(s,t._cache[i]))continue;const c=r[i],u=Lt(c,e,n);u.length>0&&(o=o.concat(u))}return t.update(o)}(this,(n=t,\"[object Object]\"===Object.prototype.toString.call(n)?t:Ct(t,this.world)),e);return o=o.settle(),o}},lib:Ft};const Gt=function(t,e){return e?(t.forEach((t=>{const n=t[0];e[n]&&(t[0]=e[n][0],t[1]+=e[n][1],t[2]+=e[n][1])})),t):t},Bt=function(t,e){let{ptrs:n}=t;const{byGroup:o}=t;return n=Gt(n,e),Object.keys(o).forEach((t=>{o[t]=Gt(o[t],e)})),{ptrs:n,byGroup:o}},Dt=function(t,e,n){const o=n.methods.one;return\"number\"==typeof t&&(t=String(t)),\"string\"==typeof t&&(t=o.killUnicode(t,n),t=o.parseMatch(t,e,n)),t},Mt=t=>\"[object Object]\"===Object.prototype.toString.call(t),Ut=t=>t&&Mt(t)&&!0===t.isView,Wt=t=>t&&Mt(t)&&!0===t.isNet;var It={matchOne:function(t,e,n){const o=this.methods.one;if(Ut(t))return this.intersection(t).eq(0);if(Wt(t))return this.sweep(t,{tagger:!1,matchOne:!0}).view;const r={regs:t=Dt(t,n,this.world),group:e,justOne:!0},s=o.match(this.docs,r,this._cache),{ptrs:i,byGroup:c}=Bt(s,this.fullPointer),u=this.toView(i);return u._groups=c,u},match:function(t,e,n){const o=this.methods.one;if(Ut(t))return this.intersection(t);if(Wt(t))return this.sweep(t,{tagger:!1}).view.settle();const r={regs:t=Dt(t,n,this.world),group:e},s=o.match(this.docs,r,this._cache),{ptrs:i,byGroup:c}=Bt(s,this.fullPointer),u=this.toView(i);return u._groups=c,u},has:function(t,e,n){const o=this.methods.one;if(Ut(t)){return this.intersection(t).fullPointer.length>0}if(Wt(t))return this.sweep(t,{tagger:!1}).view.found;const r={regs:t=Dt(t,n,this.world),group:e,justOne:!0};return o.match(this.docs,r,this._cache).ptrs.length>0},if:function(t,e,n){const o=this.methods.one;if(Ut(t))return this.filter((e=>e.intersection(t).found));if(Wt(t)){const e=this.sweep(t,{tagger:!1}).view.settle();return this.if(e)}const r={regs:t=Dt(t,n,this.world),group:e,justOne:!0};let s=this.fullPointer;const i=this._cache||[];s=s.filter(((t,e)=>{const n=this.update([t]);return o.match(n.docs,r,i[e]).ptrs.length>0}));const c=this.update(s);return this._cache&&(c._cache=s.map((t=>i[t[0]]))),c},ifNo:function(t,e,n){const{methods:o}=this,r=o.one;if(Ut(t))return this.filter((e=>!e.intersection(t).found));if(Wt(t)){const e=this.sweep(t,{tagger:!1}).view.settle();return this.ifNo(e)}t=Dt(t,n,this.world);const s=this._cache||[],i=this.filter(((n,o)=>{const i={regs:t,group:e,justOne:!0};return 0===r.match(n.docs,i,s[o]).ptrs.length}));return this._cache&&(i._cache=i.ptrs.map((t=>s[t[0]]))),i}};var Rt={before:function(t,e,n){const{indexN:o}=this.methods.one.pointer,r=[],s=o(this.fullPointer);Object.keys(s).forEach((t=>{const e=s[t].sort(((t,e)=>t[1]>e[1]?1:-1))[0];e[1]>0&&r.push([e[0],0,e[1]])}));const i=this.toView(r);return t?i.match(t,e,n):i},after:function(t,e,n){const{indexN:o}=this.methods.one.pointer,r=[],s=o(this.fullPointer),i=this.document;Object.keys(s).forEach((t=>{const e=s[t].sort(((t,e)=>t[1]>e[1]?-1:1))[0],[n,,o]=e;o<i[n].length&&r.push([n,o,i[n].length])}));const c=this.toView(r);return t?c.match(t,e,n):c},growLeft:function(t,e,n){\"string\"==typeof t&&(t=this.world.methods.one.parseMatch(t,n,this.world)),t[t.length-1].end=!0;const o=this.fullPointer;return this.forEach(((n,r)=>{const s=n.before(t,e);if(s.found){const t=s.terms();o[r][1]-=t.length,o[r][3]=t.docs[0][0].id}})),this.update(o)},growRight:function(t,e,n){\"string\"==typeof t&&(t=this.world.methods.one.parseMatch(t,n,this.world)),t[0].start=!0;const o=this.fullPointer;return this.forEach(((n,r)=>{const s=n.after(t,e);if(s.found){const t=s.terms();o[r][2]+=t.length,o[r][4]=null}})),this.update(o)},grow:function(t,e,n){return this.growRight(t,e,n).growLeft(t,e,n)}};const Qt=function(t,e){return[t[0],t[1],e[2]]},Ht=(t,e,n)=>{return\"string\"==typeof t||(o=t,\"[object Array]\"===Object.prototype.toString.call(o))?e.match(t,n):t||e.none();var o},Zt=function(t,e){const[n,o,r]=t;return e.document[n]&&e.document[n][o]&&(t[3]=t[3]||e.document[n][o].id,e.document[n][r-1]&&(t[4]=t[4]||e.document[n][r-1].id)),t},Kt={splitOn:function(t,e){const{splitAll:n}=this.methods.one.pointer,o=Ht(t,this,e).fullPointer,r=n(this.fullPointer,o);let s=[];return r.forEach((t=>{s.push(t.passthrough),s.push(t.before),s.push(t.match),s.push(t.after)})),s=s.filter((t=>t)),s=s.map((t=>Zt(t,this))),this.update(s)},splitBefore:function(t,e){const{splitAll:n}=this.methods.one.pointer,o=Ht(t,this,e).fullPointer,r=n(this.fullPointer,o);for(let t=0;t<r.length;t+=1)!r[t].after&&r[t+1]&&r[t+1].before&&r[t].match&&r[t].match[0]===r[t+1].before[0]&&(r[t].after=r[t+1].before,delete r[t+1].before);let s=[];return r.forEach((t=>{s.push(t.passthrough),s.push(t.before),t.match&&t.after?s.push(Qt(t.match,t.after)):s.push(t.match)})),s=s.filter((t=>t)),s=s.map((t=>Zt(t,this))),this.update(s)},splitAfter:function(t,e){const{splitAll:n}=this.methods.one.pointer,o=Ht(t,this,e).fullPointer,r=n(this.fullPointer,o);let s=[];return r.forEach((t=>{s.push(t.passthrough),t.before&&t.match?s.push(Qt(t.before,t.match)):(s.push(t.before),s.push(t.match)),s.push(t.after)})),s=s.filter((t=>t)),s=s.map((t=>Zt(t,this))),this.update(s)}};Kt.split=Kt.splitAfter;const Jt=function(t,e){return!(!t||!e)&&(t[0]===e[0]&&t[2]===e[1])},Xt=function(t,e,n){const o=t.world,r=o.methods.one.parseMatch;n=n||\"^.\";const s=r(e=e||\".$\",{},o),i=r(n,{},o);s[s.length-1].end=!0,i[0].start=!0;const c=t.fullPointer,u=[c[0]];for(let e=1;e<c.length;e+=1){const n=u[u.length-1],o=c[e],r=t.update([n]),a=t.update([o]);Jt(n,o)&&r.has(s)&&a.has(i)?u[u.length-1]=[n[0],n[1],o[2],n[3],o[4]]:u.push(o)}return t.update(u)},Yt={joinIf:function(t,e){return Xt(this,t,e)},join:function(){return Xt(this)}},te=Object.assign({},It,Rt,Kt,Yt);te.lookBehind=te.before,te.lookBefore=te.before,te.lookAhead=te.after,te.lookAfter=te.after,te.notIf=te.ifNo;const ee=/(?:^|\\s)([![^]*(?:<[^<]*>)?\\/.*?[^\\\\/]\\/[?\\]+*$~]*)(?:\\s|$)/,ne=/([!~[^]*(?:<[^<]*>)?\\([^)]+[^\\\\)]\\)[?\\]+*$~]*)(?:\\s|$)/,oe=/ /g,re=t=>/^[![^]*(<[^<]*>)?\\//.test(t)&&/\\/[?\\]+*$~]*$/.test(t),se=function(t){return t=(t=t.map((t=>t.trim()))).filter((t=>t))},ie=/\\{([0-9]+)?(, *[0-9]*)?\\}/,ce=/&&/,ue=new RegExp(/^<\\s*(\\S+)\\s*>/),ae=t=>t.charAt(0).toUpperCase()+t.substring(1),le=t=>t.charAt(t.length-1),he=t=>t.charAt(0),fe=t=>t.substring(1),pe=t=>t.substring(0,t.length-1),de=function(t){return t=fe(t),t=pe(t)},me=function(t,e){const n={};for(let o=0;o<2;o+=1){if(\"$\"===le(t)&&(n.end=!0,t=pe(t)),\"^\"===he(t)&&(n.start=!0,t=fe(t)),\"?\"===le(t)&&(n.optional=!0,t=pe(t)),(\"[\"===he(t)||\"]\"===le(t))&&(n.group=null,\"[\"===he(t)&&(n.groupStart=!0),\"]\"===le(t)&&(n.groupEnd=!0),t=(t=t.replace(/^\\[/,\"\")).replace(/\\]$/,\"\"),\"<\"===he(t))){const e=ue.exec(t);e.length>=2&&(n.group=e[1],t=t.replace(e[0],\"\"))}if(\"+\"===le(t)&&(n.greedy=!0,t=pe(t)),\"*\"!==t&&\"*\"===le(t)&&\"\\\\*\"!==t&&(n.greedy=!0,t=pe(t)),\"!\"===he(t)&&(n.negative=!0,t=fe(t)),\"~\"===he(t)&&\"~\"===le(t)&&t.length>2&&(t=de(t),n.fuzzy=!0,n.min=e.fuzzy||.85,!1===/\\(/.test(t)))return n.word=t,n;if(\"/\"===he(t)&&\"/\"===le(t))return t=de(t),e.caseSensitive&&(n.use=\"text\"),n.regex=new RegExp(t),n;if(!0===ie.test(t)&&(t=t.replace(ie,((t,e,o)=>(void 0===o?(n.min=Number(e),n.max=Number(e)):(o=o.replace(/, */,\"\"),void 0===e?(n.min=0,n.max=Number(o)):(n.min=Number(e),n.max=Number(o||999))),n.greedy=!0,n.min||(n.optional=!0),\"\")))),\"(\"===he(t)&&\")\"===le(t)){ce.test(t)?(n.choices=t.split(ce),n.operator=\"and\"):(n.choices=t.split(\"|\"),n.operator=\"or\"),n.choices[0]=fe(n.choices[0]);const o=n.choices.length-1;n.choices[o]=pe(n.choices[o]),n.choices=n.choices.map((t=>t.trim())),n.choices=n.choices.filter((t=>t)),n.choices=n.choices.map((t=>t.split(/ /g).map((t=>me(t,e))))),t=\"\"}if(\"{\"===he(t)&&\"}\"===le(t)){if(t=de(t),n.root=t,/\\//.test(t)){const t=n.root.split(/\\//);n.root=t[0],n.pos=t[1],\"adj\"===n.pos&&(n.pos=\"Adjective\"),n.pos=n.pos.charAt(0).toUpperCase()+n.pos.substr(1).toLowerCase(),void 0!==t[2]&&(n.sense=t[2])}return n}if(\"<\"===he(t)&&\">\"===le(t))return t=de(t),n.chunk=ae(t),n.greedy=!0,n;if(\"%\"===he(t)&&\"%\"===le(t))return t=de(t),n.switch=t,n}return\"#\"===he(t)?(n.tag=fe(t),n.tag=ae(n.tag),n):\"@\"===he(t)?(n.method=fe(t),n):\".\"===t?(n.anything=!0,n):\"*\"===t?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(t&&(t=(t=t.replace(\"\\\\*\",\"*\")).replace(\"\\\\.\",\".\"),e.caseSensitive?n.use=\"text\":t=t.toLowerCase(),n.word=t),n)},ge=/[a-z0-9][-–—][a-z]/i,we=function(t,e){const{all:n}=e.methods.two.transform.verb||{},o=t.root;return n?n(o,e.model):[]},ye=function(t,e){const{all:n}=e.methods.two.transform.noun||{};return n?n(t.root,e.model):[t.root]},be=function(t,e){const{all:n}=e.methods.two.transform.adjective||{};return n?n(t.root,e.model):[t.root]},ve=function(t){return t=function(t){let e=0,n=null;for(let o=0;o<t.length;o++){const r=t[o];!0===r.groupStart&&(n=r.group,null===n&&(n=String(e),e+=1)),null!==n&&(r.group=n),!0===r.groupEnd&&(n=null)}return t}(t),t=function(t){return t.map((t=>(t.fuzzy&&t.choices&&t.choices.forEach((e=>{1===e.length&&e[0].word&&(e[0].fuzzy=!0,e[0].min=t.min)})),t)))}(t=t.map((t=>{if(void 0!==t.choices){if(\"or\"!==t.operator)return t;if(!0===t.fuzzy)return t;!0===t.choices.every((t=>{if(1!==t.length)return!1;const e=t[0];return!0!==e.fuzzy&&!e.start&&!e.end&&void 0!==e.word&&!0!==e.negative&&!0!==e.optional&&!0!==e.method}))&&(t.fastOr=new Set,t.choices.forEach((e=>{t.fastOr.add(e[0].word)})),delete t.choices)}return t}))),t},xe=function(t,e){for(const n of e)if(t.has(n))return!0;return!1},je=function(t,e){for(let n=0;n<t.length;n+=1){const o=t[n];if(!0!==o.optional&&!0!==o.negative&&!0!==o.fuzzy){if(void 0!==o.word&&!1===e.has(o.word))return!0;if(void 0!==o.tag&&!1===e.has(\"#\"+o.tag))return!0;if(o.fastOr&&!1===xe(o.fastOr,e))return!1}}return!1},Ee=function(t,e,n=3){if(t===e)return 1;if(t.length<n||e.length<n)return 0;const o=function(t,e){const n=t.length,o=e.length;if(0===n)return o;if(0===o)return n;const r=(o>n?o:n)+1;if(Math.abs(n-o)>(r||100))return r||100;const s=[];for(let t=0;t<r;t++)s[t]=[t],s[t].length=r;for(let t=0;t<r;t++)s[0][t]=t;let i,c,u,a,l,h;for(let r=1;r<=n;++r)for(c=t[r-1],i=1;i<=o;++i){if(r===i&&s[r][i]>4)return n;u=e[i-1],a=c===u?0:1,l=s[r-1][i]+1,(h=s[r][i-1]+1)<l&&(l=h),(h=s[r-1][i-1]+a)<l&&(l=h);const o=r>1&&i>1&&c===e[i-2]&&t[r-2]===u&&(h=s[r-2][i-2]+a)<l;s[r][i]=o?h:l}return s[n][o]}(t,e),r=Math.max(t.length,e.length);return 1-(0===r?0:o/r)},Oe=/([\\u0022\\uFF02\\u0027\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F])/,ke=/([\\u0022\\uFF02\\u0027\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4])/,Pe=/^[-–—]$/,_e=/ [-–—]{1,3} /,Se=(t,e)=>-1!==t.post.indexOf(e),ze={hasQuote:t=>Oe.test(t.pre)||ke.test(t.post),hasComma:t=>Se(t,\",\"),hasPeriod:t=>!0===Se(t,\".\")&&!1===Se(t,\"...\"),hasExclamation:t=>Se(t,\"!\"),hasQuestionMark:t=>Se(t,\"?\")||Se(t,\"¿\"),hasEllipses:t=>Se(t,\"..\")||Se(t,\"…\"),hasSemicolon:t=>Se(t,\";\"),hasColon:t=>Se(t,\":\"),hasSlash:t=>/\\//.test(t.text),hasHyphen:t=>Pe.test(t.post)||Pe.test(t.pre),hasDash:t=>_e.test(t.post)||_e.test(t.pre),hasContraction:t=>Boolean(t.implicit),isAcronym:t=>t.tags.has(\"Acronym\"),isKnown:t=>t.tags.size>0,isTitleCase:t=>/^\\p{Lu}[a-z'\\u00C0-\\u00FF]/u.test(t.text),isUpperCase:t=>/^\\p{Lu}+$/u.test(t.text)};ze.hasQuotation=ze.hasQuote;let Ae=function(){};Ae=function(t,e,n,o){const r=function(t,e,n,o){if(!0===e.anything)return!0;if(!0===e.start&&0!==n)return!1;if(!0===e.end&&n!==o-1)return!1;if(void 0!==e.id&&e.id===t.id)return!0;if(void 0!==e.word){if(e.use)return e.word===t[e.use];if(null!==t.machine&&t.machine===e.word)return!0;if(void 0!==t.alias&&t.alias.hasOwnProperty(e.word))return!0;if(!0===e.fuzzy){if(e.word===t.root)return!0;if(Ee(e.word,t.normal)>=e.min)return!0}return!(!t.alias||!t.alias.some((t=>t===e.word)))||e.word===t.text||e.word===t.normal}if(void 0!==e.tag)return!0===t.tags.has(e.tag);if(void 0!==e.method)return\"function\"==typeof ze[e.method]&&!0===ze[e.method](t);if(void 0!==e.pre)return t.pre&&t.pre.includes(e.pre);if(void 0!==e.post)return t.post&&t.post.includes(e.post);if(void 0!==e.regex){let n=t.normal;return e.use&&(n=t[e.use]),e.regex.test(n)}if(void 0!==e.chunk)return t.chunk===e.chunk;if(void 0!==e.switch)return t.switch===e.switch;if(void 0!==e.machine)return t.normal===e.machine||t.machine===e.machine||t.root===e.machine;if(void 0!==e.sense)return t.sense===e.sense;if(void 0!==e.fastOr){if(e.pos&&!t.tags.has(e.pos))return null;const n=t.root||t.implicit||t.machine||t.normal;return e.fastOr.has(n)||e.fastOr.has(t.text)}return void 0!==e.choices&&(\"and\"===e.operator?e.choices.every((e=>Ae(t,e,n,o))):e.choices.some((e=>Ae(t,e,n,o))))}(t,e,n,o);return!0===e.negative?!r:r};const $e=function(t,e){if(!0===t.end&&!0===t.greedy&&e.start_i+e.t<e.phrase_length-1){const n=Object.assign({},t,{end:!1});if(!0===Ae(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))return!0}return!1},Te=function(t,e){return t.groups[t.inGroup]||(t.groups[t.inGroup]={start:e,length:0}),t.groups[t.inGroup]},Ce=function(t){const{regs:e}=t,n=e[t.r],o=function(t,e){let n=t.t;if(!e)return t.terms.length;for(;n<t.terms.length;n+=1)if(!0===Ae(t.terms[n],e,t.start_i+n,t.phrase_length))return n;return null}(t,e[t.r+1]);if(null===o||0===o)return null;if(void 0!==n.min&&o-t.t<n.min)return null;if(void 0!==n.max&&o-t.t>n.max)return t.t=t.t+n.max,!0;if(!0===t.hasGroup){Te(t,t.t).length=o-t.t}return t.t=o,!0},Le=function(t,e=0){const n=t.regs[t.r];let o=!1;for(let s=0;s<n.choices.length;s+=1){const i=n.choices[s];if(r=i,\"[object Array]\"!==Object.prototype.toString.call(r))return!1;if(o=i.every(((n,o)=>{let r=0;const s=t.t+o+e+r;if(void 0===t.terms[s])return!1;const i=Ae(t.terms[s],n,s+t.start_i,t.phrase_length);if(!0===i&&!0===n.greedy)for(let e=1;e<t.terms.length;e+=1){const o=t.terms[s+e];if(o){if(!0!==Ae(o,n,t.start_i+e,t.phrase_length))break;r+=1}}return e+=r,i})),o){e+=i.length;break}}var r;return o&&!0===n.greedy?Le(t,e):e},Ne=function(t){const{regs:e}=t,n=e[t.r],o=Le(t);if(o){if(!0===n.negative)return null;if(!0===t.hasGroup){Te(t,t.t).length+=o}if(!0===n.end){const e=t.phrase_length;if(t.t+t.start_i+o!==e)return null}return t.t+=o,!0}return!!n.optional||null},Ve=function(t){const{regs:e}=t,n=e[t.r],o=function(t){let e=0;return!0===t.regs[t.r].choices.every((n=>{const o=n.every(((e,n)=>{const o=t.t+n;return void 0!==t.terms[o]&&Ae(t.terms[o],e,o,t.phrase_length)}));return!0===o&&n.length>e&&(e=n.length),o}))&&e}(t);if(o){if(!0===n.negative)return null;if(!0===t.hasGroup){Te(t,t.t).length+=o}if(!0===n.end){const e=t.phrase_length-1;if(t.t+t.start_i!==e)return null}return t.t+=o,!0}return!!n.optional||null},Fe=function(t){const{regs:e}=t,n=e[t.r],o=Object.assign({},n);o.negative=!1;if(Ae(t.terms[t.t],o,t.start_i+t.t,t.phrase_length))return!1;if(n.optional){const n=e[t.r+1];if(n){if(Ae(t.terms[t.t],n,t.start_i+t.t,t.phrase_length))t.r+=1;else if(n.optional&&e[t.r+2]){Ae(t.terms[t.t],e[t.r+2],t.start_i+t.t,t.phrase_length)&&(t.r+=2)}}}return n.greedy?function(t,e,n){let o=0;for(let r=t.t;r<t.terms.length;r+=1){let s=Ae(t.terms[r],e,t.start_i+t.t,t.phrase_length);if(s)break;if(n&&(s=Ae(t.terms[r],n,t.start_i+t.t,t.phrase_length),s))break;if(o+=1,void 0!==e.max&&o===e.max)break}return!(0===o||e.min&&e.min>o||(t.t+=o,0))}(t,o,e[t.r+1]):(t.t+=1,!0)},qe=function(t){const{regs:e,phrase_length:n}=t,o=e[t.r];return t.t=function(t,e){const n=Object.assign({},t.regs[t.r],{start:!1,end:!1}),o=t.t;for(;t.t<t.terms.length;t.t+=1){if(e&&Ae(t.terms[t.t],e,t.start_i+t.t,t.phrase_length))return t.t;const r=t.t-o+1;if(void 0!==n.max&&r===n.max)return t.t;if(!1===Ae(t.terms[t.t],n,t.start_i+t.t,t.phrase_length))return void 0!==n.min&&r<n.min?null:t.t}return t.t}(t,e[t.r+1]),null===t.t||o.min&&o.min>t.t?null:!0!==o.end||t.start_i+t.t===n||null},Ge=function(t){const{regs:e}=t,n=e[t.r],o=t.terms[t.t],r=t.t;if(n.optional&&e[t.r+1]&&n.negative)return!0;if(n.optional&&e[t.r+1]&&function(t){const{regs:e}=t,n=e[t.r],o=t.terms[t.t],r=Ae(o,e[t.r+1],t.start_i+t.t,t.phrase_length);if(n.negative||r){const n=t.terms[t.t+1];n&&Ae(n,e[t.r+1],t.start_i+t.t,t.phrase_length)||(t.r+=1)}}(t),o.implicit&&t.terms[t.t+1]&&function(t){const e=t.terms[t.t],n=t.regs[t.r];if(e.implicit&&t.terms[t.t+1]){if(!t.terms[t.t+1].implicit)return;n.word===e.normal&&(t.t+=1),\"hasContraction\"===n.method&&(t.t+=1)}}(t),t.t+=1,!0===n.end&&t.t!==t.terms.length&&!0!==n.greedy)return null;if(!0===n.greedy){if(!qe(t))return null}return!0===t.hasGroup&&function(t,e){const n=t.regs[t.r],o=Te(t,e);t.t>1&&n.greedy?o.length+=t.t-e:o.length++}(t,r),!0},Be=function(t,e,n,o){if(0===t.length||0===e.length)return null;const r={t:0,terms:t,r:0,regs:e,groups:{},start_i:n,phrase_length:o,inGroup:null};for(;r.r<e.length;r.r+=1){const t=e[r.r];if(r.hasGroup=Boolean(t.group),!0===r.hasGroup?r.inGroup=t.group:r.inGroup=null,!r.terms[r.t]){if(!1===e.slice(r.r).some((t=>!t.optional)))break;return null}if(!0===t.anything&&!0===t.greedy){if(!Ce(r))return null;continue}if(void 0!==t.choices&&\"or\"===t.operator){if(!Ne(r))return null;continue}if(void 0!==t.choices&&\"and\"===t.operator){if(!Ve(r))return null;continue}if(!0===t.anything){if(t.negative&&t.anything)return null;if(!Ge(r))return null;continue}if(!0===$e(t,r)){if(!Ge(r))return null;continue}if(t.negative){if(!Fe(r))return null;continue}if(!0!==Ae(r.terms[r.t],t,r.start_i+r.t,r.phrase_length)){if(!0!==t.optional)return null}else{if(!Ge(r))return null}}const s=[null,n,r.t+n];if(s[1]===s[2])return null;const i={};return Object.keys(r.groups).forEach((t=>{const e=r.groups[t],o=n+e.start;i[t]=[null,o,o+e.length]})),{pointer:s,groups:i}},De=function(t,e){return t.pointer[0]=e,Object.keys(t.groups).forEach((n=>{t.groups[n][0]=e})),t},Me=function(t,e,n){let o=Be(t,e,0,t.length);return o?(o=De(o,n),o):null},Ue={one:{termMethods:ze,parseMatch:function(t,e,n){if(null==t||\"\"===t)return[];e=e||{},\"number\"==typeof t&&(t=String(t));let o=function(t){const e=t.split(ee);let n=[];e.forEach((t=>{re(t)?n.push(t):n=n.concat(t.split(ne))})),n=se(n);let o=[];return n.forEach((t=>{(t=>/^[![^]*(<[^<]*>)?\\(/.test(t)&&/\\)[?\\]+*$~]*$/.test(t))(t)||re(t)?o.push(t):o=o.concat(t.split(oe))})),o=se(o),o}(t);return o=o.map((t=>me(t,e))),o=function(t,e){const n=e.model.one.prefixes;for(let e=t.length-1;e>=0;e-=1){const o=t[e];if(o.word&&ge.test(o.word)){let r=o.word.split(/[-–—]/g);if(n.hasOwnProperty(r[0]))continue;r=r.filter((t=>t)).reverse(),t.splice(e,1),r.forEach((n=>{const r=Object.assign({},o);r.word=n,t.splice(e,0,r)}))}}return t}(o,n),o=function(t,e){return t.map((t=>{if(t.root)if(e.methods.two&&e.methods.two.transform){let n=[];t.pos?\"Verb\"===t.pos?n=n.concat(we(t,e)):\"Noun\"===t.pos?n=n.concat(ye(t,e)):\"Adjective\"===t.pos&&(n=n.concat(be(t,e))):(n=n.concat(we(t,e)),n=n.concat(ye(t,e)),n=n.concat(be(t,e))),n=n.filter((t=>t)),n.length>0&&(t.operator=\"or\",t.fastOr=new Set(n))}else t.machine=t.root,delete t.id,delete t.root;return t}))}(o,n),o=ve(o),o},match:function(t,e,n){n=n||[];const{regs:o,group:r,justOne:s}=e;let i=[];if(!o||0===o.length)return{ptrs:[],byGroup:{}};const c=o.filter((t=>!0!==t.optional&&!0!==t.negative)).length;t:for(let e=0;e<t.length;e+=1){const r=t[e];if(!n[e]||!je(o,n[e]))if(!0!==o[0].start)for(let t=0;t<r.length;t+=1){const n=r.slice(t);if(n.length<c)break;let u=Be(n,o,t,r.length);if(u){if(u=De(u,e),i.push(u),!0===s)break t;const n=u.pointer[2];Math.abs(n-1)>t&&(t=Math.abs(n-1))}}else{const t=Me(r,o,e);t&&i.push(t)}}return!0===o[o.length-1].end&&(i=i.filter((e=>{const n=e.pointer[0];return t[n].length===e.pointer[2]}))),e.notIf&&(i=function(t,e,n){return t=t.filter((t=>{const[o,r,s]=t.pointer,i=n[o].slice(r,s);for(let t=0;t<i.length;t+=1){const n=i.slice(t);if(null!==Be(n,e,t,i.length))return!1}return!0})),t}(i,e.notIf,t)),i=function(t,e){const n=[],o={};return 0===t.length||(\"number\"==typeof e&&(e=String(e)),e?t.forEach((t=>{t.groups[e]&&n.push(t.groups[e])})):t.forEach((t=>{n.push(t.pointer),Object.keys(t.groups).forEach((e=>{o[e]=o[e]||[],o[e].push(t.groups[e])}))}))),{ptrs:n,byGroup:o}}(i,r),i.ptrs.forEach((e=>{const[n,o,r]=e;e[3]=t[n][o].id,e[4]=t[n][r-1].id})),i}}};var We={api:function(t){Object.assign(t.prototype,te)},methods:Ue,lib:{parseMatch:function(t,e){const n=this.world(),o=n.methods.one.killUnicode;return o&&(t=o(t,n)),n.methods.one.parseMatch(t,e,n)}}};const Ie=/^\\../,Re=/^#./,Qe=function(t,e){const n={},o={};return Object.keys(e).forEach((r=>{let s=e[r];const i=function(t){let e=\"\",n=\"</span>\";return t=t.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&apos;\"),Ie.test(t)?e=`<span class=\"${t.replace(/^\\./,\"\")}\"`:Re.test(t)?e=`<span id=\"${t.replace(/^#/,\"\")}\"`:(e=`<${t}`,n=`</${t}>`),e+=\">\",{start:e,end:n}}(r);\"string\"==typeof s&&(s=t.match(s)),s.docs.forEach((t=>{if(t.every((t=>t.implicit)))return;const e=t[0].id;n[e]=n[e]||[],n[e].push(i.start);const r=t[t.length-1].id;o[r]=o[r]||[],o[r].push(i.end)}))})),{starts:n,ends:o}};var He={html:function(t){const{starts:e,ends:n}=Qe(this,t);let o=\"\";return this.docs.forEach((t=>{for(let r=0;r<t.length;r+=1){const s=t[r];e.hasOwnProperty(s.id)&&(o+=e[s.id].join(\"\")),o+=s.pre||\"\",o+=s.text||\"\",n.hasOwnProperty(s.id)&&(o+=n[s.id].join(\"\")),o+=s.post||\"\"}})),o}};const Ze=/[,:;)\\]*.?~!\\u0022\\uFF02\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4—-]+$/,Ke=/^[(['\"*~\\uFF02\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/,Je=/[,:;)('\"\\u201D\\]]/,Xe=/^[-–—]$/,Ye=/ /,tn=function(t,e,n=!0){let o=\"\";return t.forEach((t=>{let n=t.pre||\"\",r=t.post||\"\";\"some\"===e.punctuation&&(n=n.replace(Ke,\"\"),Xe.test(r)&&(r=\" \"),r=r.replace(Je,\"\"),r=r.replace(/\\?!+/,\"?\"),r=r.replace(/!+/,\"!\"),r=r.replace(/\\?+/,\"?\"),r=r.replace(/\\.{2,}/,\"\"),t.tags.has(\"Abbreviation\")&&(r=r.replace(/\\./,\"\"))),\"some\"===e.whitespace&&(n=n.replace(/\\s/,\"\"),r=r.replace(/\\s+/,\" \")),e.keepPunct||(n=n.replace(Ke,\"\"),r=\"-\"===r?\" \":r.replace(Ze,\"\"));let s=t[e.form||\"text\"]||t.normal||\"\";\"implicit\"===e.form&&(s=t.implicit||t.text),\"root\"===e.form&&t.implicit&&(s=t.root||t.implicit||t.normal),\"machine\"!==e.form&&\"implicit\"!==e.form&&\"root\"!==e.form||!t.implicit||r&&Ye.test(r)||(r+=\" \"),o+=n+s+r})),!1===n&&(o=o.trim()),!0===e.lowerCase&&(o=o.toLowerCase()),o},en={text:{form:\"text\"},normal:{whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"normal\"},machine:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"none\",unicode:\"some\",form:\"machine\"},root:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"root\"},implicit:{form:\"implicit\"}};en.clean=en.normal,en.reduced=en.root;const nn=[];let on=0;for(;on<64;)nn[on]=0|4294967296*Math.sin(++on%Math.PI);const rn=function(t){let e,n,o,r=decodeURI(encodeURI(t))+\"\",s=r.length;const i=[e=1732584193,n=4023233417,~e,~n],c=[];for(t=--s/4+2|15,c[--t]=8*s;~s;)c[s>>2]|=r.charCodeAt(s)<<8*s--;for(on=r=0;on<t;on+=16){for(s=i;r<64;s=[o=s[3],e+((o=s[0]+[e&n|~e&o,o&e|~o&n,e^n^o,n^(e|~o)][s=r>>4]+nn[r]+~~c[on|15&[r,5*r+1,3*r+5,7*r][s]])<<(s=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*s+r++%4])|o>>>-s),e,n])e=0|s[1],n=s[2];for(r=4;r;)i[--r]+=s[r]}for(t=\"\";r<32;)t+=(i[r>>3]>>4*(1^r++)&15).toString(16);return t},sn={text:!0,terms:!0},cn={case:\"none\",unicode:\"some\",form:\"machine\",punctuation:\"some\"},un=function(t,e){return Object.assign({},t,e)},an={text:t=>tn(t,{keepPunct:!0},!1),normal:t=>tn(t,un(en.normal,{keepPunct:!0}),!1),implicit:t=>tn(t,un(en.implicit,{keepPunct:!0}),!1),machine:t=>tn(t,cn,!1),root:t=>tn(t,un(cn,{form:\"root\"}),!1),hash:t=>rn(tn(t,{keepPunct:!0},!1)),offset:t=>{const e=an.text(t).length;return{index:t[0].offset.index,start:t[0].offset.start,length:e}},terms:t=>t.map((t=>{const e=Object.assign({},t);return e.tags=Array.from(t.tags),e})),confidence:(t,e,n)=>e.eq(n).confidence(),syllables:(t,e,n)=>e.eq(n).syllables(),sentence:(t,e,n)=>e.eq(n).fullSentence().text(),dirty:t=>t.some((t=>!0===t.dirty))};an.sentences=an.sentence,an.clean=an.normal,an.reduced=an.root;const ln={json:function(t){const e=(n=this,\"string\"==typeof(o=(o=t)||{})&&(o={}),(o=Object.assign({},sn,o)).offset&&n.compute(\"offset\"),n.docs.map(((t,e)=>{const r={};return Object.keys(o).forEach((s=>{o[s]&&an[s]&&(r[s]=an[s](t,n,e))})),r})));var n,o;return\"number\"==typeof t?e[t]:e}};ln.data=ln.json;const hn=function(t){const e=t.pre||\"\",n=t.post||\"\";return e+t.text+n},fn=function(t,e){const n=function(t,e){const n={};return Object.keys(e).forEach((o=>{t.match(o).fullPointer.forEach((t=>{n[t[3]]={fn:e[o],end:t[2]}}))})),n}(t,e);let o=\"\";return t.docs.forEach(((e,r)=>{for(let s=0;s<e.length;s+=1){const i=e[s];if(n.hasOwnProperty(i.id)){const{fn:c,end:u}=n[i.id],a=t.update([[r,s,u]]);o+=e[s].pre||\"\",o+=c(a),s=u-1,o+=e[s].post||\"\"}else o+=hn(i)}})),o},pn={debug:function(t){const e=this.methods.one.debug||{};return t&&e.hasOwnProperty(t)?(e[t](this),this):\"undefined\"!=typeof window&&window.document?(e.clientSide(this),this):(e.tags(this),this)},out:function(t){if(e=t,\"[object Object]\"===Object.prototype.toString.call(e))return fn(this,t);var e;if(\"text\"===t)return this.text();if(\"normal\"===t)return this.text(\"normal\");if(\"root\"===t)return this.text(\"root\");if(\"machine\"===t||\"reduced\"===t)return this.text(\"machine\");if(\"hash\"===t||\"md5\"===t)return rn(this.text());if(\"json\"===t)return this.json();if(\"offset\"===t||\"offsets\"===t)return this.compute(\"offset\"),this.json({offset:!0});if(\"array\"===t){const t=this.docs.map((t=>t.reduce(((t,e)=>t+e.pre+e.text+e.post),\"\").trim()));return t.filter((t=>t))}if(\"freq\"===t||\"frequency\"===t||\"topk\"===t)return function(t){const e={};t.forEach((t=>{e[t]=e[t]||0,e[t]+=1}));const n=Object.keys(e).map((t=>({normal:t,count:e[t]})));return n.sort(((t,e)=>t.count>e.count?-1:0))}(this.json({normal:!0}).map((t=>t.normal)));if(\"terms\"===t){let t=[];return this.docs.forEach((e=>{let n=e.map((t=>t.text));n=n.filter((t=>t)),t=t.concat(n)})),t}return\"tags\"===t?this.docs.map((t=>t.reduce(((t,e)=>(t[e.implicit||e.normal]=Array.from(e.tags),t)),{}))):\"debug\"===t?this.debug():this.text()},wrap:function(t){return fn(this,t)}};var dn={text:function(t){let e={};var n;if(t&&\"string\"==typeof t&&en.hasOwnProperty(t)?e=Object.assign({},en[t]):t&&(n=t,\"[object Object]\"===Object.prototype.toString.call(n))&&(e=Object.assign({},t)),void 0!==e.keepSpace||this.isFull()||(e.keepSpace=!1),void 0===e.keepEndPunct&&this.pointer){const t=this.pointer[0];t&&t[1]?e.keepEndPunct=!1:e.keepEndPunct=!0}return void 0===e.keepPunct&&(e.keepPunct=!0),void 0===e.keepSpace&&(e.keepSpace=!0),function(t,e){let n=\"\";if(!t||!t[0]||!t[0][0])return n;for(let o=0;o<t.length;o+=1)n+=tn(t[o],e,!0);if(e.keepSpace||(n=n.trim()),!1===e.keepEndPunct){t[0][0].tags.has(\"Emoticon\")||(n=n.replace(Ke,\"\"));const e=t[t.length-1];e[e.length-1].tags.has(\"Emoticon\")||(n=n.replace(Ze,\"\")),n.endsWith(\"'\")&&!n.endsWith(\"s'\")&&(n=n.replace(/'/,\"\"))}return!0===e.cleanWhitespace&&(n=n.trim()),n}(this.docs,e)}};const mn=Object.assign({},pn,dn,ln,He),gn=\"\u001b[0m\",wn={green:t=>\"\u001b[32m\"+t+gn,red:t=>\"\u001b[31m\"+t+gn,blue:t=>\"\u001b[34m\"+t+gn,magenta:t=>\"\u001b[35m\"+t+gn,cyan:t=>\"\u001b[36m\"+t+gn,yellow:t=>\"\u001b[33m\"+t+gn,black:t=>\"\u001b[30m\"+t+gn,dim:t=>\"\u001b[2m\"+t+gn,i:t=>\"\u001b[3m\"+t+gn},yn={tags:function(t){const{docs:e,model:n}=t;0===e.length&&console.log(wn.blue(\"\\n     ──────\")),e.forEach((e=>{console.log(wn.blue(\"\\n  ┌─────────\")),e.forEach((e=>{const o=[...e.tags||[]];let r=e.text||\"-\";e.sense&&(r=`{${e.normal}/${e.sense}}`),e.implicit&&(r=\"[\"+e.implicit+\"]\"),r=wn.yellow(r);let s=\"'\"+r+\"'\";if(e.reference){const n=t.update([e.reference]).text(\"normal\");s+=` - ${wn.dim(wn.i(\"[\"+n+\"]\"))}`}s=s.padEnd(18);const i=wn.blue(\"  │ \")+wn.i(s)+\"  - \"+function(t,e){return e.one.tagSet&&(t=t.map((t=>{if(!e.one.tagSet.hasOwnProperty(t))return t;const n=e.one.tagSet[t].color||\"blue\";return wn[n](t)}))),t.join(\", \")}(o,n);console.log(i)}))})),console.log(\"\\n\")},clientSide:function(t){console.log(\"%c -=-=- \",\"background-color:#6699cc;\"),t.forEach((t=>{console.groupCollapsed(t.text());const e=t.docs[0].map((t=>{let e=t.text||\"-\";t.implicit&&(e=\"[\"+t.implicit+\"]\");return{text:e,tags:\"[\"+Array.from(t.tags).join(\", \")+\"]\"}}));console.table(e,[\"text\",\"tags\"]),console.groupEnd()}))},chunks:function(t){const{docs:e}=t;console.log(\"\"),e.forEach((t=>{const e=[];t.forEach((t=>{\"Noun\"===t.chunk?e.push(wn.blue(t.implicit||t.normal)):\"Verb\"===t.chunk?e.push(wn.green(t.implicit||t.normal)):\"Adjective\"===t.chunk?e.push(wn.yellow(t.implicit||t.normal)):\"Pivot\"===t.chunk?e.push(wn.red(t.implicit||t.normal)):e.push(t.implicit||t.normal)})),console.log(e.join(\" \"),\"\\n\")})),console.log(\"\\n\")},highlight:function(t){if(!t.found)return;const e={};t.fullPointer.forEach((t=>{e[t[0]]=e[t[0]]||[],e[t[0]].push(t)})),Object.keys(e).forEach((n=>{let o=t.update([[Number(n)]]).text();t.update(e[n]).json({offset:!0}).forEach(((t,e)=>{o=function(t,e,n){const o=((t,e,n)=>{const o=9*n,r=e.start+o,s=r+e.length;return[t.substring(0,r),t.substring(r,s),t.substring(s,t.length)]})(t,e,n);return`${o[0]}${wn.blue(o[1])}${o[2]}`}(o,t.offset,e)})),console.log(o)})),console.log(\"\\n\")}};var bn={api:function(t){Object.assign(t.prototype,mn)},methods:{one:{hash:rn,debug:yn}}};const vn=function(t,e){if(t[0]!==e[0])return!1;const[,n,o]=t,[,r,s]=e;return n<=r&&o>r||r<=n&&s>n},xn=function(t){const e={};return t.forEach((t=>{e[t[0]]=e[t[0]]||[],e[t[0]].push(t)})),e},jn=function(t,e){const n=xn(e),o=[];return t.forEach((t=>{const[e]=t;let r=n[e]||[];if(r=r.filter((e=>function(t,e){return t[1]<=e[1]&&e[2]<=t[2]}(t,e))),0===r.length)return void o.push({passthrough:t});r=r.sort(((t,e)=>t[1]-e[1]));let s=t;r.forEach(((t,e)=>{const n=function(t,e){const[n,o]=t,r=e[1],s=e[2],i={};if(o<r){const e=r<t[2]?r:t[2];i.before=[n,o,e]}return i.match=e,t[2]>s&&(i.after=[n,s,t[2]]),i}(s,t);r[e+1]?(o.push({before:n.before,match:n.match}),n.after&&(s=n.after)):o.push(n)}))})),o};var En={one:{termList:function(t){const e=[];for(let n=0;n<t.length;n+=1)for(let o=0;o<t[n].length;o+=1)e.push(t[n][o]);return e},getDoc:function(t,e){let n=[];return t.forEach(((o,r)=>{if(!o)return;let[s,i,c,u,a]=o,l=e[s]||[];if(void 0===i&&(i=0),void 0===c&&(c=l.length),!u||l[i]&&l[i].id===u)l=l.slice(i,c);else{const n=function(t,e,n){for(let o=0;o<20;o+=1){if(e[n-o]){const r=e[n-o].findIndex((e=>e.id===t));if(-1!==r)return[n-o,r]}if(e[n+o]){const r=e[n+o].findIndex((e=>e.id===t));if(-1!==r)return[n+o,r]}}return null}(u,e,s);if(null!==n){const o=c-i;l=e[n[0]].slice(n[1],n[1]+o);const s=l[0]?l[0].id:null;t[r]=[n[0],n[1],n[1]+o,s]}}0!==l.length&&i!==c&&(a&&l[l.length-1].id!==a&&(l=function(t,e){const[n,o,,,r]=t,s=e[n],i=s.findIndex((t=>t.id===r));return-1===i?(t[2]=e[n].length,t[4]=s.length?s[s.length-1].id:null):t[2]=i,e[n].slice(o,t[2]+1)}(o,e)),n.push(l))})),n=n.filter((t=>t.length>0)),n},pointer:{indexN:xn,splitAll:jn}}};const On=function(t,e){const n=t.concat(e),o=xn(n);let r=[];return n.forEach((t=>{const[e]=t;if(1===o[e].length)return void r.push(t);const n=o[e].filter((e=>vn(t,e)));n.push(t);const s=function(t){let e=t[0][1],n=t[0][2];return t.forEach((t=>{t[1]<e&&(e=t[1]),t[2]>n&&(n=t[2])})),[t[0][0],e,n]}(n);r.push(s)})),r=function(t){const e={};for(let n=0;n<t.length;n+=1)e[t[n].join(\",\")]=t[n];return Object.values(e)}(r),r},kn=function(t,e){const n=[];return jn(t,e).forEach((t=>{t.passthrough&&n.push(t.passthrough),t.before&&n.push(t.before),t.after&&n.push(t.after)})),n},Pn=(t,e)=>{return\"string\"==typeof t||(n=t,\"[object Array]\"===Object.prototype.toString.call(n))?e.match(t):t||e.none();var n},_n=function(t,e){return t.map((t=>{const[n,o]=t;return e[n]&&e[n][o]&&(t[3]=e[n][o].id),t}))},Sn={union:function(t){t=Pn(t,this);let e=On(this.fullPointer,t.fullPointer);return e=_n(e,this.document),this.toView(e)}};Sn.and=Sn.union,Sn.intersection=function(t){t=Pn(t,this);let e=function(t,e){const n=xn(e),o=[];return t.forEach((t=>{let e=n[t[0]]||[];e=e.filter((e=>vn(t,e))),0!==e.length&&e.forEach((e=>{const n=function(t,e){const n=t[1]<e[1]?e[1]:t[1],o=t[2]>e[2]?e[2]:t[2];return n<o?[t[0],n,o]:null}(t,e);n&&o.push(n)}))})),o}(this.fullPointer,t.fullPointer);return e=_n(e,this.document),this.toView(e)},Sn.not=function(t){t=Pn(t,this);let e=kn(this.fullPointer,t.fullPointer);return e=_n(e,this.document),this.toView(e)},Sn.difference=Sn.not,Sn.complement=function(){const t=this.all();let e=kn(t.fullPointer,this.fullPointer);return e=_n(e,this.document),this.toView(e)},Sn.settle=function(){let t=this.fullPointer;return t.forEach((e=>{t=On(t,[e])})),t=_n(t,this.document),this.update(t)};var zn={methods:En,api:function(t){Object.assign(t.prototype,Sn)}};const An=function(t){return!0===t.optional||!0===t.negative?null:t.tag?\"#\"+t.tag:t.word?t.word:t.switch?`%${t.switch}%`:null},$n=function(t,e){const n=e.methods.one.parseMatch;return t.forEach((t=>{t.regs=n(t.match,{},e),\"string\"==typeof t.ifNo&&(t.ifNo=[t.ifNo]),t.notIf&&(t.notIf=n(t.notIf,{},e)),t.needs=function(t){const e=[];return t.forEach((t=>{e.push(An(t)),\"and\"===t.operator&&t.choices&&t.choices.forEach((t=>{t.forEach((t=>{e.push(An(t))}))}))})),e.filter((t=>t))}(t.regs);const{wants:o,count:r}=function(t){const e=[];let n=0;return t.forEach((t=>{\"or\"!==t.operator||t.optional||t.negative||(t.fastOr&&Array.from(t.fastOr).forEach((t=>{e.push(t)})),t.choices&&t.choices.forEach((t=>{t.forEach((t=>{const n=An(t);n&&e.push(n)}))})),n+=1)})),{wants:e,count:n}}(t.regs);t.wants=o,t.minWant=r,t.minWords=t.regs.filter((t=>!t.optional)).length})),t};var Tn={buildNet:function(t,e){t=$n(t,e);const n={};t.forEach((t=>{t.needs.forEach((e=>{n[e]=Array.isArray(n[e])?n[e]:[],n[e].push(t)})),t.wants.forEach((e=>{n[e]=Array.isArray(n[e])?n[e]:[],n[e].push(t)}))})),Object.keys(n).forEach((t=>{const e={};n[t]=n[t].filter((t=>\"boolean\"!=typeof e[t.match]&&(e[t.match]=!0,!0)))}));const o=t.filter((t=>0===t.needs.length&&0===t.wants.length));return{hooks:n,always:o}},bulkMatch:function(t,e,n,o={}){const r=n.one.cacheDoc(t);let s=function(t,e){return t.map(((n,o)=>{let r=[];Object.keys(e).forEach((n=>{t[o].has(n)&&(r=r.concat(e[n]))}));const s={};return r=r.filter((t=>\"boolean\"!=typeof s[t.match]&&(s[t.match]=!0,!0))),r}))}(r,e.hooks);s=function(t,e){return t.map(((t,n)=>{const o=e[n];return(t=(t=t.filter((t=>t.needs.every((t=>o.has(t)))))).filter((t=>void 0===t.ifNo||!0!==t.ifNo.some((t=>o.has(t)))))).filter((t=>0===t.wants.length||t.wants.filter((t=>o.has(t))).length>=t.minWant))}))}(s,r),e.always.length>0&&(s=s.map((t=>t.concat(e.always)))),s=function(t,e){return t.map(((t,n)=>{const o=e[n].length;return t=t.filter((t=>o>=t.minWords)),t}))}(s,t);const i=function(t,e,n,o,r){const s=[];for(let n=0;n<t.length;n+=1)for(let i=0;i<t[n].length;i+=1){const c=t[n][i],u=o.one.match([e[n]],c);if(u.ptrs.length>0&&(u.ptrs.forEach((t=>{t[0]=n;const e=Object.assign({},c,{pointer:t});void 0!==c.unTag&&(e.unTag=c.unTag),s.push(e)})),!0===r.matchOne))return[s[0]]}return s}(s,t,0,n,o);return i},bulkTagger:function(t,e,n){const{model:o,methods:r}=n,{getDoc:s,setTag:i,unTag:c}=r.one,u=r.two.looksPlural;if(0===t.length)return t;return(\"undefined\"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_TAGS&&console.log(`\\n\\n  \u001b[32m→ ${t.length} post-tagger:\u001b[0m`),t.map((t=>{if(!t.tag&&!t.chunk&&!t.unTag)return;const r=t.reason||t.match,a=s([t.pointer],e)[0];if(!0===t.safe){if(!1===function(t,e,n){const o=n.one.tagSet;if(!o.hasOwnProperty(e))return!0;const r=o[e].not||[];for(let e=0;e<t.length;e+=1){const n=t[e];for(let t=0;t<r.length;t+=1)if(!0===n.tags.has(r[t]))return!1}return!0}(a,t.tag,o))return;if(\"-\"===a[a.length-1].post)return}if(void 0!==t.tag){if(i(a,t.tag,n,t.safe,`[post] '${r}'`),\"Noun\"===t.tag&&u){const e=a[a.length-1];u(e.text)?i([e],\"Plural\",n,t.safe,\"quick-plural\"):i([e],\"Singular\",n,t.safe,\"quick-singular\")}!0===t.freeze&&a.forEach((t=>t.frozen=!0))}void 0!==t.unTag&&c(a,t.unTag,n,t.safe,r),t.chunk&&a.forEach((e=>e.chunk=t.chunk))}))}},Cn={lib:{buildNet:function(t){const e=this.methods().one.buildNet(t,this.world());return e.isNet=!0,e}},api:function(t){t.prototype.sweep=function(t,e={}){const{world:n,docs:o}=this,{methods:r}=n;let s=r.one.bulkMatch(o,t,this.methods,e);!1!==e.tagger&&r.one.bulkTagger(s,o,this.world),s=s.map((t=>{const e=t.pointer,n=o[e[0]][e[1]],r=e[2]-e[1];return n.index&&(t.pointer=[n.index[0],n.index[1],e[1]+r]),t}));const i=s.map((t=>t.pointer));return s=s.map((t=>(t.view=this.update([t.pointer]),delete t.regs,delete t.needs,delete t.pointer,delete t._expanded,t))),{view:this.update(i),found:s}}},methods:{one:Tn}};const Ln=/ /,Nn=function(t,e){\"Noun\"===e&&(t.chunk=e),\"Verb\"===e&&(t.chunk=e)},Vn=function(t,e,n,o){if(!0===t.tags.has(e))return null;if(\".\"===e)return null;!0===t.frozen&&(o=!0);const r=n[e];if(r){if(r.not&&r.not.length>0)for(let e=0;e<r.not.length;e+=1){if(!0===o&&t.tags.has(r.not[e]))return null;t.tags.delete(r.not[e])}if(r.parents&&r.parents.length>0)for(let e=0;e<r.parents.length;e+=1)t.tags.add(r.parents[e]),Nn(t,r.parents[e])}return t.tags.add(e),t.dirty=!0,Nn(t,e),!0},Fn=function(t,e,n={},o,r){const s=n.model.one.tagSet||{};if(!e)return;const i=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};var c;if(i&&i.DEBUG_TAGS&&((t,e,n=\"\")=>{const o=t.map((t=>t.text||\"[\"+t.implicit+\"]\")).join(\" \");var r;\"string\"!=typeof e&&e.length>2&&(e=e.slice(0,2).join(\", #\")+\" +\"),e=\"string\"!=typeof e?e.join(\", #\"):e,console.log(` ${(r=o,\"\u001b[33m\u001b[3m\"+r+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${e.padEnd(22)}  ${(t=>\"\u001b[3m\"+t+\"\u001b[0m\")(n)}`)})(t,e,r),!0!=(c=e,\"[object Array]\"===Object.prototype.toString.call(c)))if(\"string\"==typeof e)if(e=e.trim(),Ln.test(e))!function(t,e,n,o){const r=e.split(Ln);t.forEach(((t,e)=>{let s=r[e];s&&(s=s.replace(/^#/,\"\"),Vn(t,s,n,o))}))}(t,e,s,o);else{e=e.replace(/^#/,\"\");for(let n=0;n<t.length;n+=1)Vn(t[n],e,s,o)}else console.warn(`compromise: Invalid tag '${e}'`);else e.forEach((e=>Fn(t,e,n,o)))},qn=function(t){return t.children=t.children||[],t._cache=t._cache||{},t.props=t.props||{},t._cache.parents=t._cache.parents||[],t._cache.children=t._cache.children||[],t},Gn=/^ *(#|\\/\\/)/,Bn=function(t){let e=t.trim().split(/->/),n=[];e.forEach((t=>{n=n.concat(function(t){if(!(t=t.trim()))return null;if(/^\\[/.test(t)&&/\\]$/.test(t)){let e=(t=(t=t.replace(/^\\[/,\"\")).replace(/\\]$/,\"\")).split(/,/);return e=e.map((t=>t.trim())).filter((t=>t)),e=e.map((t=>qn({id:t}))),e}return[qn({id:t})]}(t))})),n=n.filter((t=>t));let o=n[0];for(let t=1;t<n.length;t+=1)o.children.push(n[t]),o=n[t];return n[0]},Dn=(t,e)=>{let n=[],o=[t];for(;o.length>0;){let t=o.pop();n.push(t),t.children&&t.children.forEach((n=>{e&&e(t,n),o.push(n)}))}return n},Mn=t=>\"[object Array]\"===Object.prototype.toString.call(t),Un=t=>(t=t||\"\").trim(),Wn=function(t=[]){return\"string\"==typeof t?function(t){let e=t.split(/\\r?\\n/),n=[];e.forEach((t=>{if(!t.trim()||Gn.test(t))return;let e=(t=>{const e=/^( {2}|\\t)/;let n=0;for(;e.test(t);)t=t.replace(e,\"\"),n+=1;return n})(t);n.push({indent:e,node:Bn(t)})}));let o=function(t){let e={children:[]};return t.forEach(((n,o)=>{0===n.indent?e.children=e.children.concat(n.node):t[o-1]&&function(t,e){let n=t[e].indent;for(;e>=0;e-=1)if(t[e].indent<n)return t[e];return t[0]}(t,o).node.children.push(n.node)})),e}(n);return o=qn(o),o}(t):Mn(t)?function(t){let e={};t.forEach((t=>{e[t.id]=t}));let n=qn({});return t.forEach((t=>{if((t=qn(t)).parent)if(e.hasOwnProperty(t.parent)){let n=e[t.parent];delete t.parent,n.children.push(t)}else console.warn(`[Grad] - missing node '${t.parent}'`);else n.children.push(t)})),n}(t):(Dn(e=t).forEach(qn),e);var e},In=function(t,e){let n=\"-> \";e&&(n=(t=>\"\u001b[2m\"+t+\"\u001b[0m\")(\"→ \"));let o=\"\";return Dn(t).forEach(((t,r)=>{let s=t.id||\"\";if(e&&(s=(t=>\"\u001b[31m\"+t+\"\u001b[0m\")(s)),0===r&&!t.id)return;let i=t._cache.parents.length;o+=\"    \".repeat(i)+n+s+\"\\n\"})),o},Rn=function(t){let e=Dn(t);e.forEach((t=>{delete(t=Object.assign({},t)).children}));let n=e[0];return n&&!n.id&&0===Object.keys(n.props).length&&e.shift(),e},Qn={text:In,txt:In,array:Rn,flat:Rn},Hn=function(t,e){return\"nested\"===e||\"json\"===e?t:\"debug\"===e?(console.log(In(t,!0)),null):Qn.hasOwnProperty(e)?Qn[e](t):t},Zn=t=>{Dn(t,((t,e)=>{t.id&&(t._cache.parents=t._cache.parents||[],e._cache.parents=t._cache.parents.concat([t.id]))}))},Kn=/\\//;class g{constructor(t={}){Object.defineProperty(this,\"json\",{enumerable:!1,value:t,writable:!0})}get children(){return this.json.children}get id(){return this.json.id}get found(){return this.json.id||this.json.children.length>0}props(t={}){let e=this.json.props||{};return\"string\"==typeof t&&(e[t]=!0),this.json.props=Object.assign(e,t),this}get(t){if(t=Un(t),!Kn.test(t)){let e=this.json.children.find((e=>e.id===t));return new g(e)}let e=((t,e)=>{let n=(t=>\"string\"!=typeof t?t:(t=t.replace(/^\\//,\"\")).split(/\\//))(e=e||\"\");for(let e=0;e<n.length;e+=1){let o=t.children.find((t=>t.id===n[e]));if(!o)return null;t=o}return t})(this.json,t)||qn({});return new g(e)}add(t,e={}){if(Mn(t))return t.forEach((t=>this.add(Un(t),e))),this;t=Un(t);let n=qn({id:t,props:e});return this.json.children.push(n),new g(n)}remove(t){return t=Un(t),this.json.children=this.json.children.filter((e=>e.id!==t)),this}nodes(){return Dn(this.json).map((t=>(delete(t=Object.assign({},t)).children,t)))}cache(){return(t=>{let e=Dn(t,((t,e)=>{t.id&&(t._cache.parents=t._cache.parents||[],t._cache.children=t._cache.children||[],e._cache.parents=t._cache.parents.concat([t.id]))})),n={};e.forEach((t=>{t.id&&(n[t.id]=t)})),e.forEach((t=>{t._cache.parents.forEach((e=>{n.hasOwnProperty(e)&&n[e]._cache.children.push(t.id)}))})),t._cache.children=Object.keys(n)})(this.json),this}list(){return Dn(this.json)}fillDown(){var t;return t=this.json,Dn(t,((t,e)=>{e.props=((t,e)=>(Object.keys(e).forEach((n=>{if(e[n]instanceof Set){let o=t[n]||new Set;t[n]=new Set([...o,...e[n]])}else if((t=>t&&\"object\"==typeof t&&!Array.isArray(t))(e[n])){let o=t[n]||{};t[n]=Object.assign({},e[n],o)}else Mn(e[n])?t[n]=e[n].concat(t[n]||[]):void 0===t[n]&&(t[n]=e[n])})),t))(e.props,t.props)})),this}depth(){Zn(this.json);let t=Dn(this.json),e=t.length>1?1:0;return t.forEach((t=>{if(0===t._cache.parents.length)return;let n=t._cache.parents.length+1;n>e&&(e=n)})),e}out(t){return Zn(this.json),Hn(this.json,t)}debug(){return Zn(this.json),Hn(this.json,\"debug\"),this}}const Jn=function(t){let e=Wn(t);return new g(e)};Jn.prototype.plugin=function(t){t(this)};const Xn={Noun:\"blue\",Verb:\"green\",Negative:\"green\",Date:\"red\",Value:\"red\",Adjective:\"magenta\",Preposition:\"cyan\",Conjunction:\"cyan\",Determiner:\"cyan\",Hyphenated:\"cyan\",Adverb:\"cyan\"},Yn=function(t){if(Xn.hasOwnProperty(t.id))return Xn[t.id];if(Xn.hasOwnProperty(t.is))return Xn[t.is];const e=t._cache.parents.find((t=>Xn[t]));return Xn[e]},to=function(t){return t?\"string\"==typeof t?[t]:t:[]},eo=function(t,e){return t=function(t,e){return Object.keys(t).forEach((n=>{t[n].isA&&(t[n].is=t[n].isA),t[n].notA&&(t[n].not=t[n].notA),t[n].is&&\"string\"==typeof t[n].is&&(e.hasOwnProperty(t[n].is)||t.hasOwnProperty(t[n].is)||(t[t[n].is]={})),t[n].not&&\"string\"==typeof t[n].not&&!t.hasOwnProperty(t[n].not)&&(e.hasOwnProperty(t[n].not)||t.hasOwnProperty(t[n].not)||(t[t[n].not]={}))})),t}(t,e),Object.keys(t).forEach((e=>{t[e].children=to(t[e].children),t[e].not=to(t[e].not)})),Object.keys(t).forEach((e=>{(t[e].not||[]).forEach((n=>{t[n]&&t[n].not&&t[n].not.push(e)}))})),t};var no={one:{setTag:Fn,unTag:function(t,e,n){e=e.trim().replace(/^#/,\"\");for(let o=0;o<t.length;o+=1){const r=t[o];if(!0===r.frozen)continue;if(\"*\"===e){r.tags.clear();continue}const s=n[e];if(s&&s.children.length>0)for(let t=0;t<s.children.length;t+=1)r.tags.delete(s.children[t]);r.tags.delete(e)}},addTags:function(t,e){Object.keys(e).length>0&&(t=function(t){return Object.keys(t).forEach((e=>{t[e]=Object.assign({},t[e]),t[e].novel=!0})),t}(t)),t=eo(t,e);const n=function(t){const e=Object.keys(t).map((e=>{const n=t[e],o={not:new Set(n.not),also:n.also,is:n.is,novel:n.novel};return{id:e,parent:n.is,props:o,children:[]}}));return Jn(e).cache().fillDown().out(\"array\")}(Object.assign({},e,t)),o=function(t){const e={};return t.forEach((t=>{const{not:n,also:o,is:r,novel:s}=t.props;let i=t._cache.parents;o&&(i=i.concat(o)),e[t.id]={is:r,not:n,novel:s,also:o,parents:i,children:t._cache.children,color:Yn(t)}})),Object.keys(e).forEach((t=>{const n=new Set(e[t].not);e[t].not.forEach((t=>{e[t]&&e[t].children.forEach((t=>n.add(t)))})),e[t].not=Array.from(n)})),e}(n);return o},canBe:function(t,e,n){if(!n.hasOwnProperty(e))return!0;const o=n[e].not||[];for(let e=0;e<o.length;e+=1)if(t.tags.has(o[e]))return!1;return!0}}};const oo=function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},ro={tag:function(t,e=\"\",n){if(!this.found||!t)return this;const o=this.termList();if(0===o.length)return this;const{methods:r,verbose:s,world:i}=this;return!0===s&&console.log(\" +  \",t,e||\"\"),oo(t)?t.forEach((t=>r.one.setTag(o,t,i,n,e))):r.one.setTag(o,t,i,n,e),this.uncache(),this},tagSafe:function(t,e=\"\"){return this.tag(t,e,!0)},unTag:function(t,e){if(!this.found||!t)return this;const n=this.termList();if(0===n.length)return this;const{methods:o,verbose:r,model:s}=this;!0===r&&console.log(\" -  \",t,e||\"\");const i=s.one.tagSet;return oo(t)?t.forEach((t=>o.one.unTag(n,t,i))):o.one.unTag(n,t,i),this.uncache(),this},canBe:function(t){t=t.replace(/^#/,\"\");const e=this.model.one.tagSet,n=this.methods.one.canBe,o=[];this.document.forEach(((r,s)=>{r.forEach(((r,i)=>{n(r,t,e)||o.push([s,i,i+1])}))}));const r=this.update(o);return this.difference(r)}};var so={addTags:function(t){const{model:e,methods:n}=this.world(),o=e.one.tagSet,r=(0,n.one.addTags)(t,o);return e.one.tagSet=r,this}};const io=new Set([\"Auxiliary\",\"Possessive\"]);var co={model:{one:{tagSet:{}}},compute:{tagRank:function(t){const{document:e,world:n}=t,o=n.model.one.tagSet;e.forEach((t=>{t.forEach((t=>{const e=Array.from(t.tags);t.tagRank=function(t,e){return t=t.sort(((t,n)=>{if(io.has(t)||!e.hasOwnProperty(n))return 1;if(io.has(n)||!e.hasOwnProperty(t))return-1;let o=e[t].children||[];const r=o.length;return o=e[n].children||[],r-o.length})),t}(e,o)}))}))}},methods:no,api:function(t){Object.assign(t.prototype,ro)},lib:so};const uo=/([.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s)/g,ao=/^[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s$/,lo=/((?:\\r?\\n|\\r)+)/,ho=/[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i,fo=/\\S/,po=function(t){return Boolean(t.match(/\\n$/))},mo={'\"':'\"',\"＂\":\"＂\",\"“\":\"”\",\"‟\":\"”\",\"„\":\"”\",\"⹂\":\"”\",\"‚\":\"’\",\"«\":\"»\",\"‹\":\"›\",\"‵\":\"′\",\"‶\":\"″\",\"‷\":\"‴\",\"〝\":\"〞\",\"〟\":\"〞\"},go=RegExp(\"[\"+Object.keys(mo).join(\"\")+\"]\",\"g\"),wo=RegExp(\"[\"+Object.values(mo).join(\"\")+\"]\",\"g\"),yo=function(t){if(!t)return!1;const e=t.match(wo);return null!==e&&1===e.length},bo=/\\(/g,vo=/\\)/g,xo=/\\S/,jo=/^\\s+/,Eo=function(t,e){const n=t.split(/[-–—]/);if(n.length<=1)return!1;const{prefixes:o,suffixes:r}=e.one;if(1===n[0].length&&/[a-z]/i.test(n[0]))return!1;if(o.hasOwnProperty(n[0]))return!1;if(n[1]=n[1].trim().replace(/[.?!]$/,\"\"),r.hasOwnProperty(n[1]))return!1;if(!0===/^([a-z\\u00C0-\\u00FF`\"'/]+)[-–—]([a-z0-9\\u00C0-\\u00FF].*)/i.test(t))return!0;return!0===/^[('\"]?([0-9]{1,4})[-–—]([a-z\\u00C0-\\u00FF`\"'/-]+[)'\"]?$)/i.test(t)},Oo=function(t){const e=[],n=t.split(/[-–—]/);let o=\"-\";const r=t.match(/[-–—]/);r&&r[0]&&(o=r);for(let t=0;t<n.length;t++)t===n.length-1?e.push(n[t]):e.push(n[t]+o);return e},ko=/\\p{L} ?\\/ ?\\p{L}+$/u,Po=/\\S/,_o=/^[!?.]+$/,So=/(\\S+)/;let zo=[\".\",\"?\",\"!\",\":\",\";\",\"-\",\"–\",\"—\",\"--\",\"...\",\"(\",\")\",\"[\",\"]\",'\"',\"'\",\"`\",\"«\",\"»\",\"*\",\"•\"];zo=zo.reduce(((t,e)=>(t[e]=!0,t)),{});const Ao=/\\p{Letter}/u,$o=/[\\p{Number}\\p{Currency_Symbol}]/u,To=/^[a-z]\\.([a-z]\\.)+/i,Co=/[sn]['’]$/,Lo=/([A-Z]\\.)+[A-Z]?,?$/,No=/^[A-Z]\\.,?$/,Vo=/[A-Z]{2,}('s|,)?$/,Fo=/([a-z]\\.)+[a-z]\\.?$/,qo=function(t){return function(t){return!0===Lo.test(t)||!0===Fo.test(t)||!0===No.test(t)||!0===Vo.test(t)}(t)&&(t=t.replace(/\\./g,\"\")),t},Go=function(t,e){const n=e.methods.one.killUnicode;let o=t.text||\"\";o=function(t){const e=t=(t=(t=t||\"\").toLowerCase()).trim();return t=(t=(t=t.replace(/[,;.!?]+$/,\"\")).replace(/\\u2026/g,\"...\")).replace(/\\u2013/g,\"-\"),!1===/^[:;]/.test(t)&&(t=(t=(t=t.replace(/\\.{3,}$/g,\"\")).replace(/[\",.!:;?)]+$/g,\"\")).replace(/^['\"(]+/g,\"\")),\"\"===(t=(t=t.replace(/[\\u200B-\\u200D\\uFEFF]/g,\"\")).trim())&&(t=e),t.replace(/([0-9]),([0-9])/g,\"$1$2\")}(o),o=n(o,e),o=qo(o),t.normal=o},Bo=/[ .][A-Z]\\.? *$/i,Do=/(?:\\u2026|\\.{2,}) *$/,Mo=/\\p{L}/u,Uo=/\\. *$/,Wo=/^[A-Z]\\. $/;var Io={one:{killUnicode:function(t,e){const n=e.model.one.unicode||{},o=(t=t||\"\").split(\"\");return o.forEach(((t,e)=>{n[t]&&(o[e]=n[t])})),o.join(\"\")},tokenize:{splitSentences:function(t,e){if(t=t||\"\",!(t=String(t))||\"string\"!=typeof t||!1===xo.test(t))return[];const n=function(t){const e=[],n=t.split(lo);for(let t=0;t<n.length;t++){const o=n[t].split(uo);for(let t=0;t<o.length;t++)o[t+1]&&!0===ao.test(o[t+1])&&(o[t]+=o[t+1],o[t+1]=\"\"),\"\"!==o[t]&&e.push(o[t])}return e}(t=t.replace(\" \",\" \"));let o=function(t){const e=[];for(let n=0;n<t.length;n++){const o=t[n];if(void 0!==o&&\"\"!==o){if(!1===fo.test(o)||!1===ho.test(o)){if(e[e.length-1]){e[e.length-1]+=o;continue}if(t[n+1]){t[n+1]=o+t[n+1];continue}}e.push(o)}}return e}(n);if(o=function(t,e){const n=e.methods.one.tokenize.isSentence,o=e.model.one.abbreviations||new Set,r=[];for(let e=0;e<t.length;e++){const s=t[e];!t[e+1]||n(s,o)||po(s)?s&&s.length>0&&(r.push(s),t[e]=\"\"):t[e+1]=s+(t[e+1]||\"\")}return r}(o,e),o=function(t){const e=[];for(let n=0;n<t.length;n+=1){const o=t[n].match(go);if(null!==o&&1===o.length){if(yo(t[n+1])&&t[n+1].length<280){t[n]+=t[n+1],e.push(t[n]),t[n+1]=\"\",n+=1;continue}if(yo(t[n+2])){const o=t[n+1]+t[n+2];if(o.length<280){t[n]+=o,e.push(t[n]),t[n+1]=\"\",t[n+2]=\"\",n+=2;continue}}}e.push(t[n])}return e}(o),o=function(t){const e=[];for(let n=0;n<t.length;n+=1){const o=t[n].match(bo);null!==o&&1===o.length&&t[n+1]&&t[n+1].length<250&&null!==t[n+1].match(vo)&&1===o.length&&!bo.test(t[n+1])?(t[n]+=t[n+1],e.push(t[n]),t[n+1]=\"\",n+=1):e.push(t[n])}return e}(o),0===o.length)return[t];for(let t=1;t<o.length;t+=1){const e=o[t].match(jo);null!==e&&(o[t-1]+=e[0],o[t]=o[t].replace(jo,\"\"))}return o},isSentence:function(t,e){if(!1===Mo.test(t))return!1;if(!0===Bo.test(t))return!1;if(3===t.length&&Wo.test(t))return!1;if(!0===Do.test(t))return!1;const n=t.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/,\"\").split(\" \"),o=n[n.length-1].toLowerCase();return!0!==e.hasOwnProperty(o)||!0!==Uo.test(t)},splitTerms:function(t,e){let n=[],o=[];if(\"number\"==typeof(t=t||\"\")&&(t=String(t)),function(t){return\"[object Array]\"===Object.prototype.toString.call(t)}(t))return t;const r=t.split(So);for(let t=0;t<r.length;t++)!0!==Eo(r[t],e)?o.push(r[t]):o=o.concat(Oo(r[t]));let s=\"\";for(let t=0;t<o.length;t++){const e=o[t];!0===Po.test(e)&&!1===zo.hasOwnProperty(e)&&!1===_o.test(e)?(n.length>0?(n[n.length-1]+=s,n.push(e)):n.push(s+e),s=\"\"):s+=e}return s&&(0===n.length&&(n[0]=\"\"),n[n.length-1]+=s),n=function(t){for(let e=1;e<t.length-1;e++)ko.test(t[e])&&(t[e-1]+=t[e]+t[e+1],t[e]=null,t[e+1]=null);return t}(n),n=function(t){const e=/^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?[-–—] ?$/,n=/^[0-9]{1,4}([a-z]{1,2})? ?$/;for(let o=0;o<t.length-1;o+=1)t[o+1]&&e.test(t[o])&&n.test(t[o+1])&&(t[o]=t[o]+t[o+1],t[o+1]=null);return t}(n),n=n.filter((t=>t)),n},splitWhitespace:(t,e)=>{const{str:n,pre:o,post:r}=function(t,e){const{prePunctuation:n,postPunctuation:o,emoticons:r}=e.one;let s=t,i=\"\",c=\"\";const u=Array.from(t);if(r.hasOwnProperty(t.trim()))return{str:t.trim(),pre:i,post:\" \"};let a=u.length;for(let t=0;t<a;t+=1){const t=u[0];if(!0!==n[t]){if((\"+\"===t||\"-\"===t)&&$o.test(u[1]))break;if(\"'\"===t&&3===t.length&&$o.test(u[1]))break;if(Ao.test(t)||$o.test(t))break;i+=u.shift()}}a=u.length;for(let t=0;t<a;t+=1){const t=u[u.length-1];if(!0!==o[t]){if(Ao.test(t)||$o.test(t))break;\".\"===t&&!0===To.test(s)||\"'\"===t&&!0===Co.test(s)||(c=u.pop()+c)}}return\"\"===(t=u.join(\"\"))&&(s=s.replace(/ *$/,(t=>(c=t||\"\",\"\"))),t=s,i=\"\"),{str:t,pre:i,post:c}}(t,e);return{text:n,pre:o,post:r,tags:new Set}},fromString:function(t,e){const{methods:n,model:o}=e,{splitSentences:r,splitTerms:s,splitWhitespace:i}=n.one.tokenize;return t=r(t=t||\"\",e).map((t=>{let n=s(t,o);return n=n.map((t=>i(t,o))),n.forEach((t=>{Go(t,e)})),n})),t}}}};const Ro={},Qo={};[[[\"approx\",\"apt\",\"bc\",\"cyn\",\"eg\",\"esp\",\"est\",\"etc\",\"ex\",\"exp\",\"prob\",\"pron\",\"gal\",\"min\",\"pseud\",\"fig\",\"jd\",\"lat\",\"lng\",\"vol\",\"fm\",\"def\",\"misc\",\"plz\",\"ea\",\"ps\",\"sec\",\"pt\",\"pref\",\"pl\",\"pp\",\"qt\",\"fr\",\"sq\",\"nee\",\"ss\",\"tel\",\"temp\",\"vet\",\"ver\",\"fem\",\"masc\",\"eng\",\"adj\",\"vb\",\"rb\",\"inf\",\"situ\",\"vivo\",\"vitro\",\"wr\"]],[[\"dl\",\"ml\",\"gal\",\"qt\",\"pt\",\"tbl\",\"tsp\",\"tbsp\",\"km\",\"dm\",\"cm\",\"mm\",\"mi\",\"td\",\"hr\",\"hrs\",\"kg\",\"hg\",\"dg\",\"cg\",\"mg\",\"µg\",\"lb\",\"oz\",\"sq ft\",\"hz\",\"mps\",\"mph\",\"kmph\",\"kb\",\"mb\",\"tb\",\"lx\",\"lm\",\"fl oz\",\"yb\"],\"Unit\"],[[\"ad\",\"al\",\"arc\",\"ba\",\"bl\",\"ca\",\"cca\",\"col\",\"corp\",\"ft\",\"fy\",\"ie\",\"lit\",\"ma\",\"md\",\"pd\",\"tce\"],\"Noun\"],[[\"adj\",\"adm\",\"adv\",\"asst\",\"atty\",\"bldg\",\"brig\",\"capt\",\"cmdr\",\"comdr\",\"cpl\",\"det\",\"dr\",\"esq\",\"gen\",\"gov\",\"hon\",\"jr\",\"llb\",\"lt\",\"maj\",\"messrs\",\"mlle\",\"mme\",\"mr\",\"mrs\",\"ms\",\"mstr\",\"phd\",\"prof\",\"pvt\",\"rep\",\"reps\",\"res\",\"rev\",\"sen\",\"sens\",\"sfc\",\"sgt\",\"sir\",\"sr\",\"supt\",\"surg\"],\"Honorific\"],[[\"jan\",\"feb\",\"mar\",\"apr\",\"jun\",\"jul\",\"aug\",\"sep\",\"sept\",\"oct\",\"nov\",\"dec\"],\"Month\"],[[\"dept\",\"univ\",\"assn\",\"bros\",\"inc\",\"ltd\",\"co\"],\"Organization\"],[[\"rd\",\"st\",\"dist\",\"mt\",\"ave\",\"blvd\",\"cl\",\"cres\",\"hwy\",\"ariz\",\"cal\",\"calif\",\"colo\",\"conn\",\"fla\",\"fl\",\"ga\",\"ida\",\"ia\",\"kan\",\"kans\",\"minn\",\"neb\",\"nebr\",\"okla\",\"penna\",\"penn\",\"pa\",\"dak\",\"tenn\",\"tex\",\"ut\",\"vt\",\"va\",\"wis\",\"wisc\",\"wy\",\"wyo\",\"usafa\",\"alta\",\"ont\",\"que\",\"sask\"],\"Place\"]].forEach((t=>{t[0].forEach((e=>{Ro[e]=!0,Qo[e]=\"Abbreviation\",void 0!==t[1]&&(Qo[e]=[Qo[e],t[1]])}))}));var Ho=[\"anti\",\"bi\",\"co\",\"contra\",\"de\",\"extra\",\"infra\",\"inter\",\"intra\",\"macro\",\"micro\",\"mis\",\"mono\",\"multi\",\"peri\",\"pre\",\"pro\",\"proto\",\"pseudo\",\"re\",\"sub\",\"supra\",\"trans\",\"tri\",\"un\",\"out\",\"ex\"].reduce(((t,e)=>(t[e]=!0,t)),{});const Zo={\"!\":\"¡\",\"?\":\"¿Ɂ\",'\"':'“”\"❝❞',\"'\":\"‘‛❛❜’\",\"-\":\"—–\",a:\"ªÀÁÂÃÄÅàáâãäåĀāĂăĄąǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАаѦѧӐӑӒӓƛæ\",b:\"ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ\",c:\"¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼϲϹϽϾСсєҀҁҪҫ\",d:\"ÐĎďĐđƉƊȡƋƌ\",e:\"ÈÉÊËèéêëĒēĔĕĖėĘęĚěƐȄȅȆȇȨȩɆɇΈΕΞΣέεξϵЀЁЕеѐёҼҽҾҿӖӗễ\",f:\"ƑƒϜϝӺӻҒғſ\",g:\"ĜĝĞğĠġĢģƓǤǥǦǧǴǵ\",h:\"ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ\",I:\"ÌÍÎÏ\",i:\"ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇіїi̇\",j:\"ĴĵǰȷɈɉϳЈј\",k:\"ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ\",l:\"ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ\",m:\"ΜϺϻМмӍӎ\",n:\"ÑñŃńŅņŇňŉŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ\",o:\"ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϴОФоѲѳӦӧӨөӪӫ\",p:\"ƤΡρϷϸϼРрҎҏÞ\",q:\"Ɋɋ\",r:\"ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ\",s:\"ŚśŜŝŞşŠšƧƨȘșȿЅѕ\",t:\"ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт\",u:\"ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰυϋύ\",v:\"νѴѵѶѷ\",w:\"ŴŵƜωώϖϢϣШЩшщѡѿ\",x:\"×ΧχϗϰХхҲҳӼӽӾӿ\",y:\"ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ\",z:\"ŹźŻżŽžƵƶȤȥɀΖ\"},Ko={};Object.keys(Zo).forEach((function(t){Zo[t].split(\"\").forEach((function(e){Ko[e]=t}))}));const Jo=/\\//,Xo=/[a-z]\\.[a-z]/i,Yo=/[0-9]/,tr=function(t,e){const n=t.normal||t.text||t.machine,o=e.model.one.aliases;if(o.hasOwnProperty(n)&&(t.alias=t.alias||[],t.alias.push(o[n])),Jo.test(n)&&!Xo.test(n)&&!Yo.test(n)){const e=n.split(Jo);e.length<=3&&e.forEach((e=>{\"\"!==(e=e.trim())&&(t.alias=t.alias||[],t.alias.push(e))}))}return t},er=/^\\p{Letter}+-\\p{Letter}+$/u,nr=function(t){let e=t.implicit||t.normal||t.text;e=e.replace(/['’]s$/,\"\"),e=e.replace(/s['’]$/,\"s\"),e=e.replace(/([aeiou][ktrp])in'$/,\"$1ing\"),er.test(e)&&(e=e.replace(/-/g,\"\")),e=e.replace(/^[#@]/,\"\"),e!==t.normal&&(t.machine=e)},or=function(t,e){const n=t.docs;for(let o=0;o<n.length;o+=1)for(let r=0;r<n[o].length;r+=1)e(n[o][r],t.world)},rr={alias:t=>or(t,tr),machine:t=>or(t,nr),normal:t=>or(t,Go),freq:function(t){const e=t.docs,n={};for(let t=0;t<e.length;t+=1)for(let o=0;o<e[t].length;o+=1){const r=e[t][o],s=r.machine||r.normal;n[s]=n[s]||0,n[s]+=1}for(let t=0;t<e.length;t+=1)for(let o=0;o<e[t].length;o+=1){const r=e[t][o],s=r.machine||r.normal;r.freq=n[s]}},offset:function(t){let e=0,n=0;const o=t.document;for(let t=0;t<o.length;t+=1)for(let r=0;r<o[t].length;r+=1){const s=o[t][r];s.offset={index:n,start:e+s.pre.length,length:s.text.length},e+=s.pre.length+s.text.length+s.post.length,n+=1}},index:function(t){const e=t.document;for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1)e[t][n].index=[t,n]},wordCount:function(t){let e=0;const n=t.docs;for(let t=0;t<n.length;t+=1)for(let o=0;o<n[t].length;o+=1)\"\"!==n[t][o].normal&&(e+=1,n[t][o].wordCount=e)}};var sr={compute:rr,methods:Io,model:{one:{aliases:{\"&\":\"and\",\"@\":\"at\",\"%\":\"percent\",plz:\"please\",bein:\"being\"},abbreviations:Ro,prefixes:Ho,suffixes:{like:!0,ish:!0,less:!0,able:!0,elect:!0,type:!0,designate:!0},prePunctuation:{\"#\":!0,\"@\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},postPunctuation:{\"%\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},lexicon:Qo,unicode:Ko,emoticons:{\"<3\":!0,\"</3\":!0,\"<\\\\3\":!0,\":^P\":!0,\":^p\":!0,\":^O\":!0,\":^3\":!0}}},hooks:[\"alias\",\"machine\",\"index\",\"id\"]};var ir={typeahead:function(t){const e=t.model.one.typeahead,n=t.docs;if(0===n.length||0===Object.keys(e).length)return;const o=n[n.length-1]||[],r=o[o.length-1];if(!r.post&&e.hasOwnProperty(r.normal)){const n=e[r.normal];r.implicit=n,r.machine=n,r.typeahead=!0,t.compute.preTagger&&t.last().unTag(\"*\").compute([\"lexicon\",\"preTagger\"])}}};const cr=function(){const t=this.docs;if(0===t.length)return this;const e=t[t.length-1]||[],n=e[e.length-1];return!0===n.typeahead&&n.machine&&(n.text=n.machine,n.normal=n.machine),this},ur={safe:!0,min:3};var ar={typeahead:function(t=[],e={}){const n=this.model();var o;e=Object.assign({},ur,e),o=t,\"[object Object]\"===Object.prototype.toString.call(o)&&(Object.assign(n.one.lexicon,t),t=Object.keys(t));const r=function(t,e,n){let o={};const r=[],s=n.prefixes||{};return t.forEach((t=>{let i=(t=t.toLowerCase().trim()).length;e.max&&i>e.max&&(i=e.max);for(let c=e.min;c<i;c+=1){const i=t.substring(0,c);e.safe&&n.model.one.lexicon.hasOwnProperty(i)||(!0!==s.hasOwnProperty(i)&&!0!==o.hasOwnProperty(i)?o[i]=t:r.push(i))}})),o=Object.assign({},s,o),r.forEach((t=>{delete o[t]})),o}(t,e,this.world());return Object.keys(r).forEach((t=>{n.one.typeahead.hasOwnProperty(t)?delete n.one.typeahead[t]:n.one.typeahead[t]=r[t]})),this}};var lr={model:{one:{typeahead:{}}},api:function(t){t.prototype.autoFill=cr},lib:ar,compute:ir,hooks:[\"typeahead\"]};return h.extend(W),h.extend(bn),h.extend(We),h.extend(zn),h.extend(co),h.plugin(bt),h.extend(sr),h.extend(Ot),h.plugin(d),h.extend(qt),h.extend(lr),h.extend(Tt),h.extend(Cn),h}));\n"
  },
  {
    "path": "builds/one/compromise-one.mjs",
    "content": "var t={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const e={compute:function(t){const{world:e}=this,n=e.compute;return\"string\"==typeof t&&n.hasOwnProperty(t)?n[t](this):(t=>\"[object Array]\"===Object.prototype.toString.call(t))(t)?t.forEach((o=>{e.compute.hasOwnProperty(o)?n[o](this):console.warn(\"no compute:\",t)})):\"function\"==typeof t?t(this):console.warn(\"no compute:\",t),this}};var n={forEach:function(t){return this.fullPointer.forEach(((e,n)=>{const o=this.update([e]);t(o,n)})),this},map:function(t,e){const n=this.fullPointer.map(((e,n)=>{const o=this.update([e]),r=t(o,n);return void 0===r?this.none():r}));if(0===n.length)return e||this.update([]);if(void 0!==n[0]){if(\"string\"==typeof n[0])return n;if(\"object\"==typeof n[0]&&(null===n[0]||!n[0].isView))return n}let o=[];return n.forEach((t=>{o=o.concat(t.fullPointer)})),this.toView(o)},filter:function(t){let e=this.fullPointer;e=e.filter(((e,n)=>{const o=this.update([e]);return t(o,n)}));return this.update(e)},find:function(t){const e=this.fullPointer.find(((e,n)=>{const o=this.update([e]);return t(o,n)}));return this.update([e])},some:function(t){return this.fullPointer.some(((e,n)=>{const o=this.update([e]);return t(o,n)}))},random:function(t=1){let e=this.fullPointer,n=Math.floor(Math.random()*e.length);return n+t>this.length&&(n=this.length-t,n=n<0?0:n),e=e.slice(n,n+t),this.update(e)}};const o={termList:function(){return this.methods.one.termList(this.docs)},terms:function(t){const e=this.match(\".\");return\"number\"==typeof t?e.eq(t):e},groups:function(t){if(t||0===t)return this.update(this._groups[t]||[]);const e={};return Object.keys(this._groups).forEach((t=>{e[t]=this.update(this._groups[t])})),e},eq:function(t){let e=this.pointer;return e||(e=this.docs.map(((t,e)=>[e]))),e[t]?this.update([e[t]]):this.none()},first:function(){return this.eq(0)},last:function(){const t=this.fullPointer.length-1;return this.eq(t)},firstTerms:function(){return this.match(\"^.\")},lastTerms:function(){return this.match(\".$\")},slice:function(t,e){let n=this.pointer||this.docs.map(((t,e)=>[e]));return n=n.slice(t,e),this.update(n)},all:function(){return this.update().toView()},fullSentences:function(){const t=this.fullPointer.map((t=>[t[0]]));return this.update(t).toView()},none:function(){return this.update([])},isDoc:function(t){if(!t||!t.isView)return!1;const e=this.fullPointer,n=t.fullPointer;return!e.length!==n.length&&e.every(((t,e)=>!!n[e]&&(t[0]===n[e][0]&&t[1]===n[e][1]&&t[2]===n[e][2])))},wordCount:function(){return this.docs.reduce(((t,e)=>(t+=e.filter((t=>\"\"!==t.text)).length,t)),0)},isFull:function(){const t=this.pointer;if(!t)return!0;if(0===t.length||0!==t[0][0])return!1;let e=0,n=0;return this.document.forEach((t=>e+=t.length)),this.docs.forEach((t=>n+=t.length)),e===n},getNth:function(t){return\"number\"==typeof t?this.eq(t):\"string\"==typeof t?this.if(t):this}};o.group=o.groups,o.fullSentence=o.fullSentences,o.sentence=o.fullSentences,o.lastTerm=o.lastTerms,o.firstTerm=o.firstTerms;const r=Object.assign({},o,e,n);r.get=r.eq;class View{constructor(e,n,o={}){[[\"document\",e],[\"world\",t],[\"_groups\",o],[\"_cache\",null],[\"viewType\",\"View\"]].forEach((t=>{Object.defineProperty(this,t[0],{value:t[1],writable:!0})})),this.ptrs=n}get docs(){let e=this.document;return this.ptrs&&(e=t.methods.one.getDoc(this.ptrs,this.document)),e}get pointer(){return this.ptrs}get methods(){return this.world.methods}get model(){return this.world.model}get hooks(){return this.world.hooks}get isView(){return!0}get found(){return this.docs.length>0}get length(){return this.docs.length}get fullPointer(){const{docs:t,ptrs:e,document:n}=this,o=e||t.map(((t,e)=>[e]));return o.map((t=>{let[e,o,r,s,i]=t;return o=o||0,r=r||(n[e]||[]).length,n[e]&&n[e][o]&&(s=s||n[e][o].id,n[e][r-1]&&(i=i||n[e][r-1].id)),[e,o,r,s,i]}))}update(t){const e=new View(this.document,t);if(this._cache&&t&&t.length>0){const n=[];t.forEach(((t,e)=>{const[o,r,s]=t;(1===t.length||0===r&&this.document[o].length===s)&&(n[e]=this._cache[o])})),n.length>0&&(e._cache=n)}return e.world=this.world,e}toView(t){return new View(this.document,t||this.pointer)}fromText(t){const{methods:e}=this,n=e.one.tokenize.fromString(t,this.world),o=new View(n);return o.world=this.world,o.compute([\"normal\",\"freeze\",\"lexicon\"]),this.world.compute.preTagger&&o.compute(\"preTagger\"),o.compute(\"unfreeze\"),o}clone(){let t=this.document.slice(0);t=t.map((t=>t.map((t=>((t=Object.assign({},t)).tags=new Set(t.tags),t)))));const e=this.update(this.pointer);return e.document=t,e._cache=this._cache,e}}Object.assign(View.prototype,r);const s=function(t){return t&&\"object\"==typeof t&&!Array.isArray(t)};function i(t,e){if(s(e))for(const n in e)s(e[n])?(t[n]||Object.assign(t,{[n]:{}}),i(t[n],e[n])):Object.assign(t,{[n]:e[n]});return t}const c=function(t,e,n,o){if(r=t,\"[object Array]\"===Object.prototype.toString.call(r))return void t.forEach((t=>c(t,e,n,o)));var r;const{methods:s,model:u,compute:a,hooks:l}=e;t.methods&&function(t,e){for(const n in e)t[n]=t[n]||{},Object.assign(t[n],e[n])}(s,t.methods),t.model&&i(u,t.model),t.irregulars&&function(t,e){const n=t.two.models||{};Object.keys(e).forEach((t=>{e[t].pastTense&&(n.toPast&&(n.toPast.ex[t]=e[t].pastTense),n.fromPast&&(n.fromPast.ex[e[t].pastTense]=t)),e[t].presentTense&&(n.toPresent&&(n.toPresent.ex[t]=e[t].presentTense),n.fromPresent&&(n.fromPresent.ex[e[t].presentTense]=t)),e[t].gerund&&(n.toGerund&&(n.toGerund.ex[t]=e[t].gerund),n.fromGerund&&(n.fromGerund.ex[e[t].gerund]=t)),e[t].comparative&&(n.toComparative&&(n.toComparative.ex[t]=e[t].comparative),n.fromComparative&&(n.fromComparative.ex[e[t].comparative]=t)),e[t].superlative&&(n.toSuperlative&&(n.toSuperlative.ex[t]=e[t].superlative),n.fromSuperlative&&(n.fromSuperlative.ex[e[t].superlative]=t))}))}(u,t.irregulars),t.compute&&Object.assign(a,t.compute),l&&(e.hooks=l.concat(t.hooks||[])),t.api&&t.api(n),t.lib&&Object.keys(t.lib).forEach((e=>o[e]=t.lib[e])),t.tags&&o.addTags(t.tags),t.words&&o.addWords(t.words),t.frozen&&o.addWords(t.frozen,!0),t.mutate&&t.mutate(e,o)},u=function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},a=function(t,e,n){const{methods:o}=n,r=new e([]);if(r.world=n,\"number\"==typeof t&&(t=String(t)),!t)return r;if(\"string\"==typeof t){return new e(o.one.tokenize.fromString(t,n))}if(s=t,\"[object Object]\"===Object.prototype.toString.call(s)&&t.isView)return new e(t.document,t.ptrs);var s;if(u(t)){if(u(t[0])){const n=t.map((t=>t.map((t=>({text:t,normal:t,pre:\"\",post:\" \",tags:new Set})))));return new e(n)}const n=t.map((t=>t.terms.map((t=>(u(t.tags)&&(t.tags=new Set(t.tags)),t)))));return new e(n)}return r},l=Object.assign({},t),h=function(t,e){e&&h.addWords(e);const n=a(t,View,l);return t&&n.compute(l.hooks),n};Object.defineProperty(h,\"_world\",{value:l,writable:!0}),h.tokenize=function(t,e){const{compute:n}=this._world;e&&h.addWords(e);const o=a(t,View,l);return n.contractions&&o.compute([\"alias\",\"normal\",\"machine\",\"contractions\"]),o},h.plugin=function(t){return c(t,this._world,View,this),this},h.extend=h.plugin,h.world=function(){return this._world},h.model=function(){return this._world.model},h.methods=function(){return this._world.methods},h.hooks=function(){return this._world.hooks},h.verbose=function(t){const e=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};return e.DEBUG_TAGS=\"tagger\"===t||!0===t||\"\",e.DEBUG_MATCH=\"match\"===t||!0===t||\"\",e.DEBUG_CHUNKS=\"chunker\"===t||!0===t||\"\",this},h.version=\"14.15.0\";var f={one:{cacheDoc:function(t){const e=t.map((t=>{const e=new Set;return t.forEach((t=>{\"\"!==t.normal&&e.add(t.normal),t.switch&&e.add(`%${t.switch}%`),t.implicit&&e.add(t.implicit),t.machine&&e.add(t.machine),t.root&&e.add(t.root),t.alias&&t.alias.forEach((t=>e.add(t)));const n=Array.from(t.tags);for(let t=0;t<n.length;t+=1)e.add(\"#\"+n[t])})),e}));return e}}};const p={cache:function(){return this._cache=this.methods.one.cacheDoc(this.document),this},uncache:function(){return this._cache=null,this}};var d={api:function(t){Object.assign(t.prototype,p)},compute:{cache:function(t){t._cache=t.methods.one.cacheDoc(t.document)}},methods:f};const m=t=>/^\\p{Lu}[\\p{Ll}'’]/u.test(t)||/^\\p{Lu}$/u.test(t),w=(t,e,n)=>{if(n.forEach((t=>t.dirty=!0)),t){const o=[e,0].concat(n);Array.prototype.splice.apply(t,o)}return t},b=function(t){const e=t[t.length-1];!e||/ $/.test(e.post)||/[-–—]/.test(e.post)||(e.post+=\" \")},y=(t,e,n)=>{const o=/[-.?!,;:)–—'\"]/g,r=t[e-1];if(!r)return;const s=r.post;if(o.test(s)){const t=s.match(o).join(\"\"),e=n[n.length-1];e.post=t+e.post,r.post=r.post.replace(o,\"\")}},v=function(t,e,n,o){const[r,s,i]=e;0===s||i===o[r].length?b(n):(b(n),b([t[e[1]]])),function(t,e,n){const o=t[e];if(0!==e||!m(o.text))return;n[0].text=n[0].text.replace(/^\\p{Ll}/u,(t=>t.toUpperCase()));const r=t[e];r.tags.has(\"ProperNoun\")||r.tags.has(\"Acronym\")||m(r.text)&&r.text.length>1&&(r.text=(s=r.text,s.replace(/^\\p{Lu}/u,(t=>t.toLowerCase()))));var s}(t,s,n),w(t,s,n)};let x=0;const j=t=>(t=t.length<3?\"0\"+t:t).length<3?\"0\"+t:t,E=function(t){let[e,n]=t.index||[0,0];x+=1,x=x>46655?0:x,e=e>46655?0:e,n=n>1294?0:n;let o=j(x.toString(36));o+=j(e.toString(36));let r=n.toString(36);r=r.length<2?\"0\"+r:r,o+=r;return o+=parseInt(36*Math.random(),10).toString(36),t.normal+\"|\"+o.toUpperCase()},O=function(t){if(t.has(\"@hasContraction\")&&\"function\"==typeof t.contractions){t.grow(\"@hasContraction\").contractions().expand()}},k=t=>\"[object Array]\"===Object.prototype.toString.call(t),P=function(t,e,n){const{document:o,world:r}=e;e.uncache();const s=e.fullPointer,i=e.fullPointer;e.forEach(((c,u)=>{const a=c.fullPointer[0],[l]=a,h=o[l];let f=function(t,e){const{methods:n}=e;return\"string\"==typeof t?n.one.tokenize.fromString(t,e)[0]:\"object\"==typeof t&&t.isView?t.clone().docs[0]||[]:k(t)?k(t[0])?t[0]:t:[]}(t,r);0!==f.length&&(f=function(t){return t.map((t=>(t.id=E(t),t)))}(f),n?(O(e.update([a]).firstTerm()),v(h,a,f,o)):(O(e.update([a]).lastTerm()),function(t,e,n,o){const[r,,s]=e,i=(o[r]||[]).length;s<i?(y(t,s,n),b(n)):i===s&&(b(t),y(t,s,n),o[r+1]&&(n[n.length-1].post+=\" \")),w(t,e[2],n),e[4]=n[n.length-1].id}(h,a,f,o)),o[l]&&o[l][a[1]]&&(a[3]=o[l][a[1]].id),i[u]=a,a[2]+=f.length,s[u]=a)}));const c=e.toView(s);return e.ptrs=i,c.compute([\"id\",\"index\",\"freeze\",\"lexicon\"]),c.world.compute.preTagger&&c.compute(\"preTagger\"),c.compute(\"unfreeze\"),c},_={insertAfter:function(t){return P(t,this,!1)},insertBefore:function(t){return P(t,this,!0)}};_.append=_.insertAfter,_.prepend=_.insertBefore,_.insert=_.insertAfter;const S=/\\$[0-9a-z]+/g,z={},A=t=>t.replace(/^\\p{Ll}/u,(t=>t.toUpperCase())),$=t=>t.replace(/^\\p{Lu}/u,(t=>t.toLowerCase()));z.replaceWith=function(t,e={}){let n=this.fullPointer;const o=this;if(this.uncache(),\"function\"==typeof t)return function(t,e,n){return t.forEach((t=>{const o=e(t);t.replaceWith(o,n)})),t}(o,t,e);const r=o.docs[0];if(!r)return o;const s=e.possessives&&r[r.length-1].tags.has(\"Possessive\"),i=e.case&&(c=r[0].text,/^\\p{Lu}[\\p{Ll}'’]/u.test(c)||/^\\p{Lu}$/u.test(c));var c;t=function(t,e){if(\"string\"!=typeof t)return t;const n=e.groups();return t=t.replace(S,(t=>{const e=t.replace(/\\$/,\"\");return n.hasOwnProperty(e)?n[e].text():t})),t}(t,o);const u=this.update(n);n=n.map((t=>t.slice(0,3)));const a=(u.docs[0]||[]).map((t=>Array.from(t.tags))),l=u.docs[0][0].pre,h=u.docs[0][u.docs[0].length-1].post;if(\"string\"==typeof t&&(t=this.fromText(t).compute(\"id\")),o.insertAfter(t),u.has(\"@hasContraction\")&&o.contractions){o.grow(\"@hasContraction+\").contractions().expand()}if(o.delete(u),s){const t=o.docs[0],e=t[t.length-1];e.tags.has(\"Possessive\")||(e.text+=\"'s\",e.normal+=\"'s\",e.tags.add(\"Possessive\"))}if(l&&o.docs[0]&&(o.docs[0][0].pre=l),h&&o.docs[0]){const t=o.docs[0][o.docs[0].length-1];t.post.trim()||(t.post=h)}const f=o.toView(n).compute([\"index\",\"freeze\",\"lexicon\"]);if(f.world.compute.preTagger&&f.compute(\"preTagger\"),f.compute(\"unfreeze\"),e.tags&&f.terms().forEach(((t,e)=>{t.tagSafe(a[e])})),!f.docs[0]||!f.docs[0][0])return f;if(e.case){const t=i?A:$;f.docs[0][0].text=t(f.docs[0][0].text)}return f},z.replace=function(t,e,n){if(t&&!e)return this.replaceWith(t,n);const o=this.match(t);return o.found?(this.soften(),o.replaceWith(e,n)):this};const T={remove:function(t){const{indexN:e}=this.methods.one.pointer;this.uncache();let n=this.all(),o=this;t&&(n=this,o=this.match(t));const r=!n.ptrs;if(o.has(\"@hasContraction\")&&o.contractions){o.grow(\"@hasContraction\").contractions().expand()}let s=n.fullPointer;const i=o.fullPointer.reverse(),c=function(t,e){e.forEach((e=>{const[n,o,r]=e,s=r-o;t[n]&&(r===t[n].length&&r>1&&function(t,e){const n=t.length-1,o=t[n],r=t[n-e];r&&o&&(r.post+=o.post,r.post=r.post.replace(/ +([.?!,;:])/,\"$1\"),r.post=r.post.replace(/[,;:]+([.?!])/,\"$1\"))}(t[n],s),t[n].splice(o,s))}));for(let e=t.length-1;e>=0;e-=1)if(0===t[e].length&&(t.splice(e,1),e===t.length&&t[e-1])){const n=t[e-1],o=n[n.length-1];o&&(o.post=o.post.trimEnd())}return t}(this.document,i);if(s=function(t,e){return t=t.map((t=>{const[n]=t;return e[n]?(e[n].forEach((e=>{const n=e[2]-e[1];t[1]<=e[1]&&t[2]>=e[2]&&(t[2]-=n)})),t):t})),t.forEach(((e,n)=>{if(0===e[1]&&0==e[2])for(let e=n+1;e<t.length;e+=1)t[e][0]-=1,t[e][0]<0&&(t[e][0]=0)})),t=(t=t.filter((t=>t[2]-t[1]>0))).map((t=>(t[3]=null,t[4]=null,t)))}(s,e(i)),n.ptrs=s,n.document=c,n.compute(\"index\"),r&&(n.ptrs=void 0),!t)return this.ptrs=[],n.none();return n.toView(s)}};T.delete=T.remove;const C={pre:function(t,e){return void 0===t&&this.found?this.docs[0][0].pre:(this.docs.forEach((n=>{const o=n[0];!0===e?o.pre+=t:o.pre=t})),this)},post:function(t,e){if(void 0===t){const t=this.docs[this.docs.length-1];return t[t.length-1].post}return this.docs.forEach((n=>{const o=n[n.length-1];!0===e?o.post+=t:o.post=t})),this},trim:function(){if(!this.found)return this;const t=this.docs,e=t[0][0];e.pre=e.pre.trimStart();const n=t[t.length-1],o=n[n.length-1];return o.post=o.post.trimEnd(),this},hyphenate:function(){return this.docs.forEach((t=>{t.forEach(((e,n)=>{0!==n&&(e.pre=\"\"),t[n+1]&&(e.post=\"-\")}))})),this},dehyphenate:function(){const t=/[-–—]/;return this.docs.forEach((e=>{e.forEach((e=>{t.test(e.post)&&(e.post=\" \")}))})),this},toQuotations:function(t,e){return t=t||'\"',e=e||'\"',this.docs.forEach((n=>{n[0].pre=t+n[0].pre;const o=n[n.length-1];o.post=e+o.post})),this},toParentheses:function(t,e){return t=t||\"(\",e=e||\")\",this.docs.forEach((n=>{n[0].pre=t+n[0].pre;const o=n[n.length-1];o.post=e+o.post})),this}};C.deHyphenate=C.dehyphenate,C.toQuotation=C.toQuotations;var L={alpha:(t,e)=>t.normal<e.normal?-1:t.normal>e.normal?1:0,length:(t,e)=>{const n=t.normal.trim().length,o=e.normal.trim().length;return n<o?1:n>o?-1:0},wordCount:(t,e)=>t.words<e.words?1:t.words>e.words?-1:0,sequential:(t,e)=>t[0]<e[0]?1:t[0]>e[0]?-1:t[1]>e[1]?1:-1,byFreq:function(t){const e={};return t.forEach((t=>{e[t.normal]=e[t.normal]||0,e[t.normal]+=1})),t.sort(((t,n)=>{const o=e[t.normal],r=e[n.normal];return o<r?1:o>r?-1:0})),t}};const N=new Set([\"index\",\"sequence\",\"seq\",\"sequential\",\"chron\",\"chronological\"]),V=new Set([\"freq\",\"frequency\",\"topk\",\"repeats\"]),F=new Set([\"alpha\",\"alphabetical\"]);var q={unique:function(){const t=new Set;return this.filter((e=>{const n=e.text(\"machine\");return!t.has(n)&&(t.add(n),!0)}))},reverse:function(){let t=this.pointer||this.docs.map(((t,e)=>[e]));return t=[].concat(t),t=t.reverse(),this._cache&&(this._cache=this._cache.reverse()),this.update(t)},sort:function(t){const{docs:e,pointer:n}=this;if(this.uncache(),\"function\"==typeof t)return function(t,e){let n=t.fullPointer;return n=n.sort(((n,o)=>(n=t.update([n]),o=t.update([o]),e(n,o)))),t.ptrs=n,t}(this,t);t=t||\"alpha\";const o=n||e.map(((t,e)=>[e]));let r=e.map(((t,e)=>({index:e,words:t.length,normal:t.map((t=>t.machine||t.normal||\"\")).join(\" \"),pointer:o[e]})));return N.has(t)&&(t=\"sequential\"),F.has(t)&&(t=\"alpha\"),V.has(t)?(r=L.byFreq(r),this.update(r.map((t=>t.pointer)))):\"function\"==typeof L[t]?(r=r.sort(L[t]),this.update(r.map((t=>t.pointer)))):this}};const G=function(t,e){if(t.length>0){const e=t[t.length-1],n=e[e.length-1];!1===/ /.test(n.post)&&(n.post+=\" \")}return t=t.concat(e)};var B={concat:function(t){if(\"string\"==typeof t){const e=this.fromText(t);if(this.found&&this.ptrs){const t=this.fullPointer,n=t[t.length-1][0];this.document.splice(n,0,...e.document)}else this.document=this.document.concat(e.document);return this.all().compute(\"index\")}if(\"object\"==typeof t&&t.isView)return function(t,e){if(t.document===e.document){const n=t.fullPointer.concat(e.fullPointer);return t.toView(n).compute(\"index\")}return e.fullPointer.forEach((e=>{e[0]+=t.document.length})),t.document=G(t.document,e.docs),t.all()}(this,t);if(e=t,\"[object Array]\"===Object.prototype.toString.call(e)){const e=G(this.document,t);return this.document=e,this.all()}var e;return this}};var D={harden:function(){return this.ptrs=this.fullPointer,this},soften:function(){let t=this.ptrs;return!t||t.length<1||(t=t.map((t=>t.slice(0,3))),this.ptrs=t),this}};const M=Object.assign({},{toLowerCase:function(){return this.termList().forEach((t=>{t.text=t.text.toLowerCase()})),this},toUpperCase:function(){return this.termList().forEach((t=>{t.text=t.text.toUpperCase()})),this},toTitleCase:function(){return this.termList().forEach((t=>{t.text=t.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(t=>t.toUpperCase()))})),this},toCamelCase:function(){return this.docs.forEach((t=>{t.forEach(((e,n)=>{0!==n&&(e.text=e.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(t=>t.toUpperCase()))),n!==t.length-1&&(e.post=\"\")}))})),this}},_,z,T,C,q,B,D),U={id:function(t){const e=t.docs;for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const o=e[t][n];o.id=o.id||E(o)}}};var W={api:function(t){Object.assign(t.prototype,M)},compute:U};const I=!0;var R={one:{contractions:[{word:\"@\",out:[\"at\"]},{word:\"arent\",out:[\"are\",\"not\"]},{word:\"alot\",out:[\"a\",\"lot\"]},{word:\"brb\",out:[\"be\",\"right\",\"back\"]},{word:\"cannot\",out:[\"can\",\"not\"]},{word:\"dun\",out:[\"do\",\"not\"]},{word:\"can't\",out:[\"can\",\"not\"]},{word:\"shan't\",out:[\"should\",\"not\"]},{word:\"won't\",out:[\"will\",\"not\"]},{word:\"that's\",out:[\"that\",\"is\"]},{word:\"what's\",out:[\"what\",\"is\"]},{word:\"let's\",out:[\"let\",\"us\"]},{word:\"dunno\",out:[\"do\",\"not\",\"know\"]},{word:\"gonna\",out:[\"going\",\"to\"]},{word:\"gotta\",out:[\"have\",\"got\",\"to\"]},{word:\"gimme\",out:[\"give\",\"me\"]},{word:\"outta\",out:[\"out\",\"of\"]},{word:\"tryna\",out:[\"trying\",\"to\"]},{word:\"gtg\",out:[\"got\",\"to\",\"go\"]},{word:\"im\",out:[\"i\",\"am\"]},{word:\"imma\",out:[\"I\",\"will\"]},{word:\"imo\",out:[\"in\",\"my\",\"opinion\"]},{word:\"irl\",out:[\"in\",\"real\",\"life\"]},{word:\"ive\",out:[\"i\",\"have\"]},{word:\"rn\",out:[\"right\",\"now\"]},{word:\"tbh\",out:[\"to\",\"be\",\"honest\"]},{word:\"wanna\",out:[\"want\",\"to\"]},{word:\"c'mere\",out:[\"come\",\"here\"]},{word:\"c'mon\",out:[\"come\",\"on\"]},{word:\"shoulda\",out:[\"should\",\"have\"]},{word:\"coulda\",out:[\"coulda\",\"have\"]},{word:\"woulda\",out:[\"woulda\",\"have\"]},{word:\"musta\",out:[\"must\",\"have\"]},{word:\"tis\",out:[\"it\",\"is\"]},{word:\"twas\",out:[\"it\",\"was\"]},{word:\"y'know\",out:[\"you\",\"know\"]},{word:\"ne'er\",out:[\"never\"]},{word:\"o'er\",out:[\"over\"]},{after:\"ll\",out:[\"will\"]},{after:\"ve\",out:[\"have\"]},{after:\"re\",out:[\"are\"]},{after:\"m\",out:[\"am\"]},{before:\"c\",out:[\"ce\"]},{before:\"m\",out:[\"me\"]},{before:\"n\",out:[\"ne\"]},{before:\"qu\",out:[\"que\"]},{before:\"s\",out:[\"se\"]},{before:\"t\",out:[\"tu\"]},{word:\"shouldnt\",out:[\"should\",\"not\"]},{word:\"couldnt\",out:[\"could\",\"not\"]},{word:\"wouldnt\",out:[\"would\",\"not\"]},{word:\"hasnt\",out:[\"has\",\"not\"]},{word:\"wasnt\",out:[\"was\",\"not\"]},{word:\"isnt\",out:[\"is\",\"not\"]},{word:\"cant\",out:[\"can\",\"not\"]},{word:\"dont\",out:[\"do\",\"not\"]},{word:\"wont\",out:[\"will\",\"not\"]},{word:\"howd\",out:[\"how\",\"did\"]},{word:\"whatd\",out:[\"what\",\"did\"]},{word:\"whend\",out:[\"when\",\"did\"]},{word:\"whered\",out:[\"where\",\"did\"]}],numberSuffixes:{st:I,nd:I,rd:I,th:I,am:I,pm:I,max:I,\"°\":I,s:I,e:I,er:I,\"ère\":I,\"ème\":I}}};const Q=function(t,e,n){const[o,r]=e;n&&0!==n.length&&(n=n.map(((t,e)=>(t.implicit=t.text,t.machine=t.text,t.pre=\"\",t.post=\"\",t.text=\"\",t.normal=\"\",t.index=[o,r+e],t))),n[0]&&(n[0].pre=t[o][r].pre,n[n.length-1].post=t[o][r].post,n[0].text=t[o][r].text,n[0].normal=t[o][r].normal),t[o].splice(r,1,...n))},H=/'/,Z=new Set([\"what\",\"how\",\"when\",\"where\",\"why\"]),K=new Set([\"be\",\"go\",\"start\",\"think\",\"need\"]),J=new Set([\"been\",\"gone\"]),X=/'/,Y=/(e|é|aison|sion|tion)$/,tt=/(age|isme|acle|ege|oire)$/;var et=(t,e)=>[\"je\",t[e].normal.split(X)[1]],nt=(t,e)=>{const n=t[e].normal.split(X)[1];return n&&n.endsWith(\"e\")?[\"la\",n]:[\"le\",n]},ot=(t,e)=>{const n=t[e].normal.split(X)[1];return n&&Y.test(n)&&!tt.test(n)?[\"du\",n]:n&&n.endsWith(\"s\")?[\"des\",n]:[\"de\",n]};const rt=/^([0-9.]{1,4}[a-z]{0,2}) ?[-–—] ?([0-9]{1,4}[a-z]{0,2})$/i,st=/^([0-9]{1,2}(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9]{1,2}(:[0-9][0-9])?(am|pm)?)$/i,it=/^[0-9]{3}-[0-9]{4}$/,ct=function(t,e){const n=t[e];let o=n.text.match(rt);return null!==o?!0===n.tags.has(\"PhoneNumber\")||it.test(n.text)?null:[o[1],\"to\",o[2]]:(o=n.text.match(st),null!==o?[o[1],\"to\",o[4]]:null)},ut=/^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/,at=function(t,e,n){const o=n.model.one.numberSuffixes||{},r=t[e].text.match(ut);if(null!==r){const t=r[2].toLowerCase().trim();return o.hasOwnProperty(t)?null:[r[1],t]}return null},lt=/'/,ht=/^[0-9][^-–—]*[-–—].*?[0-9]/,ft=function(t,e,n,o){const r=e.update();r.document=[t];let s=n+o;n>0&&(n-=1),t[s]&&(s+=1),r.ptrs=[[0,n,s]]},pt={t:(t,e)=>function(t,e){return\"ain't\"===t[e].normal||\"aint\"===t[e].normal?null:[t[e].normal.replace(/n't/,\"\"),\"not\"]}(t,e),d:(t,e)=>function(t,e){const n=t[e].normal.split(H)[0];if(Z.has(n))return[n,\"did\"];if(t[e+1]){if(J.has(t[e+1].normal))return[n,\"had\"];if(K.has(t[e+1].normal))return[n,\"would\"]}return null}(t,e)},dt={j:(t,e)=>et(t,e),l:(t,e)=>nt(t,e),d:(t,e)=>ot(t,e)},mt=function(t,e,n,o){for(let r=0;r<t.length;r+=1){const s=t[r];if(s.word===e.normal)return s.out;if(null!==o&&o===s.after)return[n].concat(s.out);if(null!==n&&n===s.before&&o&&o.length>2)return s.out.concat(o)}return null},gt=function(t,e){const n=e.fromText(t.join(\" \"));return n.compute([\"id\",\"alias\"]),n.docs[0]},wt=function(t,e){for(let n=e+1;n<5&&t[n];n+=1)if(\"been\"===t[n].normal)return[\"there\",\"has\"];return[\"there\",\"is\"]};var bt={contractions:t=>{const{world:e,document:n}=t,{model:o,methods:r}=e,s=o.one.contractions||[];n.forEach(((o,i)=>{for(let c=o.length-1;c>=0;c-=1){let u=null,a=null;if(!0===lt.test(o[c].normal)){const t=o[c].normal.split(lt);u=t[0],a=t[1]}let l=mt(s,o[c],u,a);!l&&pt.hasOwnProperty(a)&&(l=pt[a](o,c,e)),!l&&dt.hasOwnProperty(u)&&(l=dt[u](o,c)),\"there\"===u&&\"s\"===a&&(l=wt(o,c)),l?(l=gt(l,t),Q(n,[i,c],l),ft(n[i],t,c,l.length)):ht.test(o[c].normal)?(l=ct(o,c),l&&(l=gt(l,t),Q(n,[i,c],l),r.one.setTag(l,\"NumberRange\",e),l[2]&&l[2].tags.has(\"Time\")&&r.one.setTag([l[0]],\"Time\",e,null,\"time-range\"),ft(n[i],t,c,l.length))):(l=at(o,c,e),l&&(l=gt(l,t),Q(n,[i,c],l),r.one.setTag([l[1]],\"Unit\",e,null,\"contraction-unit\")))}}))}};const yt={model:R,compute:bt,hooks:[\"contractions\"]},vt=function(t){const e=t.world,{model:n,methods:o}=t.world,r=o.one.setTag,{frozenLex:s}=n.one,i=n.one._multiCache||{};t.docs.forEach((t=>{for(let n=0;n<t.length;n+=1){const o=t[n],c=o.machine||o.normal;if(void 0!==i[c]&&t[n+1]){for(let o=n+i[c]-1;o>n;o-=1){const i=t.slice(n,o+1),c=i.map((t=>t.machine||t.normal)).join(\" \");!0!==s.hasOwnProperty(c)||(r(i,s[c],e,!1,\"1-frozen-multi-lexicon\"),i.forEach((t=>t.frozen=!0)))}}void 0!==s[c]&&s.hasOwnProperty(c)&&(r([o],s[c],e,!1,\"1-freeze-lexicon\"),o.frozen=!0)}}))};const xt=t=>\"\u001b[34m\"+t+\"\u001b[0m\",jt=t=>\"\u001b[3m\u001b[2m\"+t+\"\u001b[0m\",Et=function(t){t.docs.forEach((t=>{console.log(xt(\"\\n  ┌─────────\")),t.forEach((t=>{let e=`  ${jt(\"│\")}  `;const n=t.implicit||t.text||\"-\";!0===t.frozen?e+=`${xt(n)} ❄️`:e+=jt(n),console.log(e)}))}))};var Ot={compute:{frozen:vt,freeze:vt,unfreeze:function(t){return t.docs.forEach((t=>{t.forEach((t=>{delete t.frozen}))})),t}},mutate:t=>{const e=t.methods.one;e.termMethods.isFrozen=t=>!0===t.frozen,e.debug.freeze=Et,e.debug.frozen=Et},api:function(t){t.prototype.freeze=function(){return this.docs.forEach((t=>{t.forEach((t=>{t.frozen=!0}))})),this},t.prototype.unfreeze=function(){this.compute(\"unfreeze\")},t.prototype.isFrozen=function(){return this.match(\"@isFrozen+\")}},hooks:[\"freeze\"]};const kt=function(t,e,n){const{model:o,methods:r}=n,s=r.one.setTag,i=o.one._multiCache||{},{lexicon:c}=o.one||{},u=t[e],a=u.machine||u.normal;if(void 0!==i[a]&&t[e+1]){for(let o=e+i[a]-1;o>e;o-=1){const r=t.slice(e,o+1);if(r.length<=1)return!1;const i=r.map((t=>t.machine||t.normal)).join(\" \");if(!0===c.hasOwnProperty(i)){const t=c[i];return s(r,t,n,!1,\"1-multi-lexicon\"),!t||2!==t.length||\"PhrasalVerb\"!==t[0]&&\"PhrasalVerb\"!==t[1]||s([r[1]],\"Particle\",n,!1,\"1-phrasal-particle\"),!0}}return!1}return null},Pt=/^(under|over|mis|re|un|dis|semi|pre|post)-?/,_t=new Set([\"Verb\",\"Infinitive\",\"PastTense\",\"Gerund\",\"PresentTense\",\"Adjective\",\"Participle\"]),St=function(t,e,n){const{model:o,methods:r}=n,s=r.one.setTag,{lexicon:i}=o.one,c=t[e],u=c.machine||c.normal;if(void 0!==i[u]&&i.hasOwnProperty(u))return s([c],i[u],n,!1,\"1-lexicon\"),!0;if(c.alias){const t=c.alias.find((t=>i.hasOwnProperty(t)));if(t)return s([c],i[t],n,!1,\"1-lexicon-alias\"),!0}if(!0===Pt.test(u)){const t=u.replace(Pt,\"\");if(i.hasOwnProperty(t)&&t.length>3&&_t.has(i[t]))return s([c],i[t],n,!1,\"1-lexicon-prefix\"),!0}return null};var zt={lexicon:function(t){const e=t.world;t.docs.forEach((t=>{for(let n=0;n<t.length;n+=1)if(0===t[n].tags.size){let o=null;o=o||kt(t,n,e),o=o||St(t,n,e)}}))}};var At={one:{expandLexicon:function(t){const e={},n={};return Object.keys(t).forEach((o=>{const r=t[o],s=(o=(o=o.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);s.length>1&&(void 0===n[s[0]]||s.length>n[s[0]])&&(n[s[0]]=s.length),e[o]=e[o]||r})),delete e[\"\"],delete e.null,delete e[\" \"],{lex:e,_multi:n}}}};var $t={addWords:function(t,e=!1){const n=this.world(),{methods:o,model:r}=n;if(!t)return;if(Object.keys(t).forEach((e=>{\"string\"==typeof t[e]&&t[e].startsWith(\"#\")&&(t[e]=t[e].replace(/^#/,\"\"))})),!0===e){const{lex:e,_multi:s}=o.one.expandLexicon(t,n);return Object.assign(r.one._multiCache,s),void Object.assign(r.one.frozenLex,e)}if(o.two.expandLexicon){const{lex:e,_multi:s}=o.two.expandLexicon(t,n);Object.assign(r.one.lexicon,e),Object.assign(r.one._multiCache,s)}const{lex:s,_multi:i}=o.one.expandLexicon(t,n);Object.assign(r.one.lexicon,s),Object.assign(r.one._multiCache,i)}};var Tt={model:{one:{lexicon:{},_multiCache:{},frozenLex:{}}},methods:At,compute:zt,lib:$t,hooks:[\"lexicon\"]};const Ct=function(t,e){const n=[{}],o=[null],r=[0],s=[];let i=0;t.forEach((function(t){let r=0;const s=function(t,e){const{methods:n,model:o}=e,r=n.one.tokenize.splitTerms(t,o).map((t=>n.one.tokenize.splitWhitespace(t,o)));return r.map((t=>t.text.toLowerCase()))}(t,e);for(let t=0;t<s.length;t++){const e=s[t];n[r]&&n[r].hasOwnProperty(e)?r=n[r][e]:(i++,n[r][e]=i,n[i]={},r=i,o[i]=null)}o[r]=[s.length]}));for(const t in n[0])i=n[0][t],r[i]=0,s.push(i);for(;s.length;){const t=s.shift(),e=Object.keys(n[t]);for(let c=0;c<e.length;c+=1){const u=e[c],a=n[t][u];for(s.push(a),i=r[t];i>0&&!n[i].hasOwnProperty(u);)i=r[i];if(n.hasOwnProperty(i)){const t=n[i][u];r[a]=t,o[t]&&(o[a]=o[a]||[],o[a]=o[a].concat(o[t]))}else r[a]=0}}return{goNext:n,endAs:o,failTo:r}},Lt=function(t,e,n){let o=0;const r=[];for(let s=0;s<t.length;s++){const i=t[s][n.form]||t[s].normal;for(;o>0&&(void 0===e.goNext[o]||!e.goNext[o].hasOwnProperty(i));)o=e.failTo[o]||0;if(e.goNext[o].hasOwnProperty(i)&&(o=e.goNext[o][i],e.endAs[o])){const n=e.endAs[o];for(let e=0;e<n.length;e++){const o=n[e],i=t[s-o+1],[c,u]=i.index;r.push([c,u,u+o,i.id])}}}return r},Nt=function(t,e){for(let n=0;n<t.length;n+=1)if(!0===e.has(t[n]))return!1;return!0};const Vt=(t,e)=>{for(let n=t.length-1;n>=0;n-=1)if(t[n]!==e)return t=t.slice(0,n+1);return t},Ft={buildTrie:function(t){return function(t){return t.goNext=t.goNext.map((t=>{if(0!==Object.keys(t).length)return t})),t.goNext=Vt(t.goNext,void 0),t.failTo=Vt(t.failTo,0),t.endAs=Vt(t.endAs,null),t}(Ct(t,this.world()))}};Ft.compile=Ft.buildTrie;var qt={api:function(t){t.prototype.lookup=function(t,e={}){if(!t)return this.none();\"string\"==typeof t&&(t=[t]);var n;let o=function(t,e,n){let o=[];n.form=n.form||\"normal\";const r=t.docs;if(!e.goNext||!e.goNext[0])return console.error(\"Compromise invalid lookup trie\"),t.none();const s=Object.keys(e.goNext[0]);for(let i=0;i<r.length;i++){if(t._cache&&t._cache[i]&&!0===Nt(s,t._cache[i]))continue;const c=r[i],u=Lt(c,e,n);u.length>0&&(o=o.concat(u))}return t.update(o)}(this,(n=t,\"[object Object]\"===Object.prototype.toString.call(n)?t:Ct(t,this.world)),e);return o=o.settle(),o}},lib:Ft};const Gt=function(t,e){return e?(t.forEach((t=>{const n=t[0];e[n]&&(t[0]=e[n][0],t[1]+=e[n][1],t[2]+=e[n][1])})),t):t},Bt=function(t,e){let{ptrs:n}=t;const{byGroup:o}=t;return n=Gt(n,e),Object.keys(o).forEach((t=>{o[t]=Gt(o[t],e)})),{ptrs:n,byGroup:o}},Dt=function(t,e,n){const o=n.methods.one;return\"number\"==typeof t&&(t=String(t)),\"string\"==typeof t&&(t=o.killUnicode(t,n),t=o.parseMatch(t,e,n)),t},Mt=t=>\"[object Object]\"===Object.prototype.toString.call(t),Ut=t=>t&&Mt(t)&&!0===t.isView,Wt=t=>t&&Mt(t)&&!0===t.isNet;var It={matchOne:function(t,e,n){const o=this.methods.one;if(Ut(t))return this.intersection(t).eq(0);if(Wt(t))return this.sweep(t,{tagger:!1,matchOne:!0}).view;const r={regs:t=Dt(t,n,this.world),group:e,justOne:!0},s=o.match(this.docs,r,this._cache),{ptrs:i,byGroup:c}=Bt(s,this.fullPointer),u=this.toView(i);return u._groups=c,u},match:function(t,e,n){const o=this.methods.one;if(Ut(t))return this.intersection(t);if(Wt(t))return this.sweep(t,{tagger:!1}).view.settle();const r={regs:t=Dt(t,n,this.world),group:e},s=o.match(this.docs,r,this._cache),{ptrs:i,byGroup:c}=Bt(s,this.fullPointer),u=this.toView(i);return u._groups=c,u},has:function(t,e,n){const o=this.methods.one;if(Ut(t)){return this.intersection(t).fullPointer.length>0}if(Wt(t))return this.sweep(t,{tagger:!1}).view.found;const r={regs:t=Dt(t,n,this.world),group:e,justOne:!0};return o.match(this.docs,r,this._cache).ptrs.length>0},if:function(t,e,n){const o=this.methods.one;if(Ut(t))return this.filter((e=>e.intersection(t).found));if(Wt(t)){const e=this.sweep(t,{tagger:!1}).view.settle();return this.if(e)}const r={regs:t=Dt(t,n,this.world),group:e,justOne:!0};let s=this.fullPointer;const i=this._cache||[];s=s.filter(((t,e)=>{const n=this.update([t]);return o.match(n.docs,r,i[e]).ptrs.length>0}));const c=this.update(s);return this._cache&&(c._cache=s.map((t=>i[t[0]]))),c},ifNo:function(t,e,n){const{methods:o}=this,r=o.one;if(Ut(t))return this.filter((e=>!e.intersection(t).found));if(Wt(t)){const e=this.sweep(t,{tagger:!1}).view.settle();return this.ifNo(e)}t=Dt(t,n,this.world);const s=this._cache||[],i=this.filter(((n,o)=>{const i={regs:t,group:e,justOne:!0};return 0===r.match(n.docs,i,s[o]).ptrs.length}));return this._cache&&(i._cache=i.ptrs.map((t=>s[t[0]]))),i}};var Rt={before:function(t,e,n){const{indexN:o}=this.methods.one.pointer,r=[],s=o(this.fullPointer);Object.keys(s).forEach((t=>{const e=s[t].sort(((t,e)=>t[1]>e[1]?1:-1))[0];e[1]>0&&r.push([e[0],0,e[1]])}));const i=this.toView(r);return t?i.match(t,e,n):i},after:function(t,e,n){const{indexN:o}=this.methods.one.pointer,r=[],s=o(this.fullPointer),i=this.document;Object.keys(s).forEach((t=>{const e=s[t].sort(((t,e)=>t[1]>e[1]?-1:1))[0],[n,,o]=e;o<i[n].length&&r.push([n,o,i[n].length])}));const c=this.toView(r);return t?c.match(t,e,n):c},growLeft:function(t,e,n){\"string\"==typeof t&&(t=this.world.methods.one.parseMatch(t,n,this.world)),t[t.length-1].end=!0;const o=this.fullPointer;return this.forEach(((n,r)=>{const s=n.before(t,e);if(s.found){const t=s.terms();o[r][1]-=t.length,o[r][3]=t.docs[0][0].id}})),this.update(o)},growRight:function(t,e,n){\"string\"==typeof t&&(t=this.world.methods.one.parseMatch(t,n,this.world)),t[0].start=!0;const o=this.fullPointer;return this.forEach(((n,r)=>{const s=n.after(t,e);if(s.found){const t=s.terms();o[r][2]+=t.length,o[r][4]=null}})),this.update(o)},grow:function(t,e,n){return this.growRight(t,e,n).growLeft(t,e,n)}};const Qt=function(t,e){return[t[0],t[1],e[2]]},Ht=(t,e,n)=>{return\"string\"==typeof t||(o=t,\"[object Array]\"===Object.prototype.toString.call(o))?e.match(t,n):t||e.none();var o},Zt=function(t,e){const[n,o,r]=t;return e.document[n]&&e.document[n][o]&&(t[3]=t[3]||e.document[n][o].id,e.document[n][r-1]&&(t[4]=t[4]||e.document[n][r-1].id)),t},Kt={splitOn:function(t,e){const{splitAll:n}=this.methods.one.pointer,o=Ht(t,this,e).fullPointer,r=n(this.fullPointer,o);let s=[];return r.forEach((t=>{s.push(t.passthrough),s.push(t.before),s.push(t.match),s.push(t.after)})),s=s.filter((t=>t)),s=s.map((t=>Zt(t,this))),this.update(s)},splitBefore:function(t,e){const{splitAll:n}=this.methods.one.pointer,o=Ht(t,this,e).fullPointer,r=n(this.fullPointer,o);for(let t=0;t<r.length;t+=1)!r[t].after&&r[t+1]&&r[t+1].before&&r[t].match&&r[t].match[0]===r[t+1].before[0]&&(r[t].after=r[t+1].before,delete r[t+1].before);let s=[];return r.forEach((t=>{s.push(t.passthrough),s.push(t.before),t.match&&t.after?s.push(Qt(t.match,t.after)):s.push(t.match)})),s=s.filter((t=>t)),s=s.map((t=>Zt(t,this))),this.update(s)},splitAfter:function(t,e){const{splitAll:n}=this.methods.one.pointer,o=Ht(t,this,e).fullPointer,r=n(this.fullPointer,o);let s=[];return r.forEach((t=>{s.push(t.passthrough),t.before&&t.match?s.push(Qt(t.before,t.match)):(s.push(t.before),s.push(t.match)),s.push(t.after)})),s=s.filter((t=>t)),s=s.map((t=>Zt(t,this))),this.update(s)}};Kt.split=Kt.splitAfter;const Jt=function(t,e){return!(!t||!e)&&(t[0]===e[0]&&t[2]===e[1])},Xt=function(t,e,n){const o=t.world,r=o.methods.one.parseMatch;n=n||\"^.\";const s=r(e=e||\".$\",{},o),i=r(n,{},o);s[s.length-1].end=!0,i[0].start=!0;const c=t.fullPointer,u=[c[0]];for(let e=1;e<c.length;e+=1){const n=u[u.length-1],o=c[e],r=t.update([n]),a=t.update([o]);Jt(n,o)&&r.has(s)&&a.has(i)?u[u.length-1]=[n[0],n[1],o[2],n[3],o[4]]:u.push(o)}return t.update(u)},Yt={joinIf:function(t,e){return Xt(this,t,e)},join:function(){return Xt(this)}},te=Object.assign({},It,Rt,Kt,Yt);te.lookBehind=te.before,te.lookBefore=te.before,te.lookAhead=te.after,te.lookAfter=te.after,te.notIf=te.ifNo;const ee=/(?:^|\\s)([![^]*(?:<[^<]*>)?\\/.*?[^\\\\/]\\/[?\\]+*$~]*)(?:\\s|$)/,ne=/([!~[^]*(?:<[^<]*>)?\\([^)]+[^\\\\)]\\)[?\\]+*$~]*)(?:\\s|$)/,oe=/ /g,re=t=>/^[![^]*(<[^<]*>)?\\//.test(t)&&/\\/[?\\]+*$~]*$/.test(t),se=function(t){return t=(t=t.map((t=>t.trim()))).filter((t=>t))},ie=/\\{([0-9]+)?(, *[0-9]*)?\\}/,ce=/&&/,ue=new RegExp(/^<\\s*(\\S+)\\s*>/),ae=t=>t.charAt(0).toUpperCase()+t.substring(1),le=t=>t.charAt(t.length-1),he=t=>t.charAt(0),fe=t=>t.substring(1),pe=t=>t.substring(0,t.length-1),de=function(t){return t=fe(t),t=pe(t)},me=function(t,e){const n={};for(let o=0;o<2;o+=1){if(\"$\"===le(t)&&(n.end=!0,t=pe(t)),\"^\"===he(t)&&(n.start=!0,t=fe(t)),\"?\"===le(t)&&(n.optional=!0,t=pe(t)),(\"[\"===he(t)||\"]\"===le(t))&&(n.group=null,\"[\"===he(t)&&(n.groupStart=!0),\"]\"===le(t)&&(n.groupEnd=!0),t=(t=t.replace(/^\\[/,\"\")).replace(/\\]$/,\"\"),\"<\"===he(t))){const e=ue.exec(t);e.length>=2&&(n.group=e[1],t=t.replace(e[0],\"\"))}if(\"+\"===le(t)&&(n.greedy=!0,t=pe(t)),\"*\"!==t&&\"*\"===le(t)&&\"\\\\*\"!==t&&(n.greedy=!0,t=pe(t)),\"!\"===he(t)&&(n.negative=!0,t=fe(t)),\"~\"===he(t)&&\"~\"===le(t)&&t.length>2&&(t=de(t),n.fuzzy=!0,n.min=e.fuzzy||.85,!1===/\\(/.test(t)))return n.word=t,n;if(\"/\"===he(t)&&\"/\"===le(t))return t=de(t),e.caseSensitive&&(n.use=\"text\"),n.regex=new RegExp(t),n;if(!0===ie.test(t)&&(t=t.replace(ie,((t,e,o)=>(void 0===o?(n.min=Number(e),n.max=Number(e)):(o=o.replace(/, */,\"\"),void 0===e?(n.min=0,n.max=Number(o)):(n.min=Number(e),n.max=Number(o||999))),n.greedy=!0,n.min||(n.optional=!0),\"\")))),\"(\"===he(t)&&\")\"===le(t)){ce.test(t)?(n.choices=t.split(ce),n.operator=\"and\"):(n.choices=t.split(\"|\"),n.operator=\"or\"),n.choices[0]=fe(n.choices[0]);const o=n.choices.length-1;n.choices[o]=pe(n.choices[o]),n.choices=n.choices.map((t=>t.trim())),n.choices=n.choices.filter((t=>t)),n.choices=n.choices.map((t=>t.split(/ /g).map((t=>me(t,e))))),t=\"\"}if(\"{\"===he(t)&&\"}\"===le(t)){if(t=de(t),n.root=t,/\\//.test(t)){const t=n.root.split(/\\//);n.root=t[0],n.pos=t[1],\"adj\"===n.pos&&(n.pos=\"Adjective\"),n.pos=n.pos.charAt(0).toUpperCase()+n.pos.substr(1).toLowerCase(),void 0!==t[2]&&(n.sense=t[2])}return n}if(\"<\"===he(t)&&\">\"===le(t))return t=de(t),n.chunk=ae(t),n.greedy=!0,n;if(\"%\"===he(t)&&\"%\"===le(t))return t=de(t),n.switch=t,n}return\"#\"===he(t)?(n.tag=fe(t),n.tag=ae(n.tag),n):\"@\"===he(t)?(n.method=fe(t),n):\".\"===t?(n.anything=!0,n):\"*\"===t?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(t&&(t=(t=t.replace(\"\\\\*\",\"*\")).replace(\"\\\\.\",\".\"),e.caseSensitive?n.use=\"text\":t=t.toLowerCase(),n.word=t),n)},ge=/[a-z0-9][-–—][a-z]/i,we=function(t,e){const{all:n}=e.methods.two.transform.verb||{},o=t.root;return n?n(o,e.model):[]},be=function(t,e){const{all:n}=e.methods.two.transform.noun||{};return n?n(t.root,e.model):[t.root]},ye=function(t,e){const{all:n}=e.methods.two.transform.adjective||{};return n?n(t.root,e.model):[t.root]},ve=function(t){return t=function(t){let e=0,n=null;for(let o=0;o<t.length;o++){const r=t[o];!0===r.groupStart&&(n=r.group,null===n&&(n=String(e),e+=1)),null!==n&&(r.group=n),!0===r.groupEnd&&(n=null)}return t}(t),t=function(t){return t.map((t=>(t.fuzzy&&t.choices&&t.choices.forEach((e=>{1===e.length&&e[0].word&&(e[0].fuzzy=!0,e[0].min=t.min)})),t)))}(t=t.map((t=>{if(void 0!==t.choices){if(\"or\"!==t.operator)return t;if(!0===t.fuzzy)return t;!0===t.choices.every((t=>{if(1!==t.length)return!1;const e=t[0];return!0!==e.fuzzy&&!e.start&&!e.end&&void 0!==e.word&&!0!==e.negative&&!0!==e.optional&&!0!==e.method}))&&(t.fastOr=new Set,t.choices.forEach((e=>{t.fastOr.add(e[0].word)})),delete t.choices)}return t}))),t},xe=function(t,e){for(const n of e)if(t.has(n))return!0;return!1},je=function(t,e){for(let n=0;n<t.length;n+=1){const o=t[n];if(!0!==o.optional&&!0!==o.negative&&!0!==o.fuzzy){if(void 0!==o.word&&!1===e.has(o.word))return!0;if(void 0!==o.tag&&!1===e.has(\"#\"+o.tag))return!0;if(o.fastOr&&!1===xe(o.fastOr,e))return!1}}return!1},Ee=function(t,e,n=3){if(t===e)return 1;if(t.length<n||e.length<n)return 0;const o=function(t,e){const n=t.length,o=e.length;if(0===n)return o;if(0===o)return n;const r=(o>n?o:n)+1;if(Math.abs(n-o)>(r||100))return r||100;const s=[];for(let t=0;t<r;t++)s[t]=[t],s[t].length=r;for(let t=0;t<r;t++)s[0][t]=t;let i,c,u,a,l,h;for(let r=1;r<=n;++r)for(c=t[r-1],i=1;i<=o;++i){if(r===i&&s[r][i]>4)return n;u=e[i-1],a=c===u?0:1,l=s[r-1][i]+1,(h=s[r][i-1]+1)<l&&(l=h),(h=s[r-1][i-1]+a)<l&&(l=h);const o=r>1&&i>1&&c===e[i-2]&&t[r-2]===u&&(h=s[r-2][i-2]+a)<l;s[r][i]=o?h:l}return s[n][o]}(t,e),r=Math.max(t.length,e.length);return 1-(0===r?0:o/r)},Oe=/([\\u0022\\uFF02\\u0027\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F])/,ke=/([\\u0022\\uFF02\\u0027\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4])/,Pe=/^[-–—]$/,_e=/ [-–—]{1,3} /,Se=(t,e)=>-1!==t.post.indexOf(e),ze={hasQuote:t=>Oe.test(t.pre)||ke.test(t.post),hasComma:t=>Se(t,\",\"),hasPeriod:t=>!0===Se(t,\".\")&&!1===Se(t,\"...\"),hasExclamation:t=>Se(t,\"!\"),hasQuestionMark:t=>Se(t,\"?\")||Se(t,\"¿\"),hasEllipses:t=>Se(t,\"..\")||Se(t,\"…\"),hasSemicolon:t=>Se(t,\";\"),hasColon:t=>Se(t,\":\"),hasSlash:t=>/\\//.test(t.text),hasHyphen:t=>Pe.test(t.post)||Pe.test(t.pre),hasDash:t=>_e.test(t.post)||_e.test(t.pre),hasContraction:t=>Boolean(t.implicit),isAcronym:t=>t.tags.has(\"Acronym\"),isKnown:t=>t.tags.size>0,isTitleCase:t=>/^\\p{Lu}[a-z'\\u00C0-\\u00FF]/u.test(t.text),isUpperCase:t=>/^\\p{Lu}+$/u.test(t.text)};ze.hasQuotation=ze.hasQuote;let Ae=function(){};Ae=function(t,e,n,o){const r=function(t,e,n,o){if(!0===e.anything)return!0;if(!0===e.start&&0!==n)return!1;if(!0===e.end&&n!==o-1)return!1;if(void 0!==e.id&&e.id===t.id)return!0;if(void 0!==e.word){if(e.use)return e.word===t[e.use];if(null!==t.machine&&t.machine===e.word)return!0;if(void 0!==t.alias&&t.alias.hasOwnProperty(e.word))return!0;if(!0===e.fuzzy){if(e.word===t.root)return!0;if(Ee(e.word,t.normal)>=e.min)return!0}return!(!t.alias||!t.alias.some((t=>t===e.word)))||e.word===t.text||e.word===t.normal}if(void 0!==e.tag)return!0===t.tags.has(e.tag);if(void 0!==e.method)return\"function\"==typeof ze[e.method]&&!0===ze[e.method](t);if(void 0!==e.pre)return t.pre&&t.pre.includes(e.pre);if(void 0!==e.post)return t.post&&t.post.includes(e.post);if(void 0!==e.regex){let n=t.normal;return e.use&&(n=t[e.use]),e.regex.test(n)}if(void 0!==e.chunk)return t.chunk===e.chunk;if(void 0!==e.switch)return t.switch===e.switch;if(void 0!==e.machine)return t.normal===e.machine||t.machine===e.machine||t.root===e.machine;if(void 0!==e.sense)return t.sense===e.sense;if(void 0!==e.fastOr){if(e.pos&&!t.tags.has(e.pos))return null;const n=t.root||t.implicit||t.machine||t.normal;return e.fastOr.has(n)||e.fastOr.has(t.text)}return void 0!==e.choices&&(\"and\"===e.operator?e.choices.every((e=>Ae(t,e,n,o))):e.choices.some((e=>Ae(t,e,n,o))))}(t,e,n,o);return!0===e.negative?!r:r};const $e=function(t,e){if(!0===t.end&&!0===t.greedy&&e.start_i+e.t<e.phrase_length-1){const n=Object.assign({},t,{end:!1});if(!0===Ae(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))return!0}return!1},Te=function(t,e){return t.groups[t.inGroup]||(t.groups[t.inGroup]={start:e,length:0}),t.groups[t.inGroup]},Ce=function(t){const{regs:e}=t,n=e[t.r],o=function(t,e){let n=t.t;if(!e)return t.terms.length;for(;n<t.terms.length;n+=1)if(!0===Ae(t.terms[n],e,t.start_i+n,t.phrase_length))return n;return null}(t,e[t.r+1]);if(null===o||0===o)return null;if(void 0!==n.min&&o-t.t<n.min)return null;if(void 0!==n.max&&o-t.t>n.max)return t.t=t.t+n.max,!0;if(!0===t.hasGroup){Te(t,t.t).length=o-t.t}return t.t=o,!0},Le=function(t,e=0){const n=t.regs[t.r];let o=!1;for(let s=0;s<n.choices.length;s+=1){const i=n.choices[s];if(r=i,\"[object Array]\"!==Object.prototype.toString.call(r))return!1;if(o=i.every(((n,o)=>{let r=0;const s=t.t+o+e+r;if(void 0===t.terms[s])return!1;const i=Ae(t.terms[s],n,s+t.start_i,t.phrase_length);if(!0===i&&!0===n.greedy)for(let e=1;e<t.terms.length;e+=1){const o=t.terms[s+e];if(o){if(!0!==Ae(o,n,t.start_i+e,t.phrase_length))break;r+=1}}return e+=r,i})),o){e+=i.length;break}}var r;return o&&!0===n.greedy?Le(t,e):e},Ne=function(t){const{regs:e}=t,n=e[t.r],o=Le(t);if(o){if(!0===n.negative)return null;if(!0===t.hasGroup){Te(t,t.t).length+=o}if(!0===n.end){const e=t.phrase_length;if(t.t+t.start_i+o!==e)return null}return t.t+=o,!0}return!!n.optional||null},Ve=function(t){const{regs:e}=t,n=e[t.r],o=function(t){let e=0;return!0===t.regs[t.r].choices.every((n=>{const o=n.every(((e,n)=>{const o=t.t+n;return void 0!==t.terms[o]&&Ae(t.terms[o],e,o,t.phrase_length)}));return!0===o&&n.length>e&&(e=n.length),o}))&&e}(t);if(o){if(!0===n.negative)return null;if(!0===t.hasGroup){Te(t,t.t).length+=o}if(!0===n.end){const e=t.phrase_length-1;if(t.t+t.start_i!==e)return null}return t.t+=o,!0}return!!n.optional||null},Fe=function(t){const{regs:e}=t,n=e[t.r],o=Object.assign({},n);o.negative=!1;if(Ae(t.terms[t.t],o,t.start_i+t.t,t.phrase_length))return!1;if(n.optional){const n=e[t.r+1];if(n){if(Ae(t.terms[t.t],n,t.start_i+t.t,t.phrase_length))t.r+=1;else if(n.optional&&e[t.r+2]){Ae(t.terms[t.t],e[t.r+2],t.start_i+t.t,t.phrase_length)&&(t.r+=2)}}}return n.greedy?function(t,e,n){let o=0;for(let r=t.t;r<t.terms.length;r+=1){let s=Ae(t.terms[r],e,t.start_i+t.t,t.phrase_length);if(s)break;if(n&&(s=Ae(t.terms[r],n,t.start_i+t.t,t.phrase_length),s))break;if(o+=1,void 0!==e.max&&o===e.max)break}return!(0===o||e.min&&e.min>o||(t.t+=o,0))}(t,o,e[t.r+1]):(t.t+=1,!0)},qe=function(t){const{regs:e,phrase_length:n}=t,o=e[t.r];return t.t=function(t,e){const n=Object.assign({},t.regs[t.r],{start:!1,end:!1}),o=t.t;for(;t.t<t.terms.length;t.t+=1){if(e&&Ae(t.terms[t.t],e,t.start_i+t.t,t.phrase_length))return t.t;const r=t.t-o+1;if(void 0!==n.max&&r===n.max)return t.t;if(!1===Ae(t.terms[t.t],n,t.start_i+t.t,t.phrase_length))return void 0!==n.min&&r<n.min?null:t.t}return t.t}(t,e[t.r+1]),null===t.t||o.min&&o.min>t.t?null:!0!==o.end||t.start_i+t.t===n||null},Ge=function(t){const{regs:e}=t,n=e[t.r],o=t.terms[t.t],r=t.t;if(n.optional&&e[t.r+1]&&n.negative)return!0;if(n.optional&&e[t.r+1]&&function(t){const{regs:e}=t,n=e[t.r],o=t.terms[t.t],r=Ae(o,e[t.r+1],t.start_i+t.t,t.phrase_length);if(n.negative||r){const n=t.terms[t.t+1];n&&Ae(n,e[t.r+1],t.start_i+t.t,t.phrase_length)||(t.r+=1)}}(t),o.implicit&&t.terms[t.t+1]&&function(t){const e=t.terms[t.t],n=t.regs[t.r];if(e.implicit&&t.terms[t.t+1]){if(!t.terms[t.t+1].implicit)return;n.word===e.normal&&(t.t+=1),\"hasContraction\"===n.method&&(t.t+=1)}}(t),t.t+=1,!0===n.end&&t.t!==t.terms.length&&!0!==n.greedy)return null;if(!0===n.greedy){if(!qe(t))return null}return!0===t.hasGroup&&function(t,e){const n=t.regs[t.r],o=Te(t,e);t.t>1&&n.greedy?o.length+=t.t-e:o.length++}(t,r),!0},Be=function(t,e,n,o){if(0===t.length||0===e.length)return null;const r={t:0,terms:t,r:0,regs:e,groups:{},start_i:n,phrase_length:o,inGroup:null};for(;r.r<e.length;r.r+=1){const t=e[r.r];if(r.hasGroup=Boolean(t.group),!0===r.hasGroup?r.inGroup=t.group:r.inGroup=null,!r.terms[r.t]){if(!1===e.slice(r.r).some((t=>!t.optional)))break;return null}if(!0===t.anything&&!0===t.greedy){if(!Ce(r))return null;continue}if(void 0!==t.choices&&\"or\"===t.operator){if(!Ne(r))return null;continue}if(void 0!==t.choices&&\"and\"===t.operator){if(!Ve(r))return null;continue}if(!0===t.anything){if(t.negative&&t.anything)return null;if(!Ge(r))return null;continue}if(!0===$e(t,r)){if(!Ge(r))return null;continue}if(t.negative){if(!Fe(r))return null;continue}if(!0!==Ae(r.terms[r.t],t,r.start_i+r.t,r.phrase_length)){if(!0!==t.optional)return null}else{if(!Ge(r))return null}}const s=[null,n,r.t+n];if(s[1]===s[2])return null;const i={};return Object.keys(r.groups).forEach((t=>{const e=r.groups[t],o=n+e.start;i[t]=[null,o,o+e.length]})),{pointer:s,groups:i}},De=function(t,e){return t.pointer[0]=e,Object.keys(t.groups).forEach((n=>{t.groups[n][0]=e})),t},Me=function(t,e,n){let o=Be(t,e,0,t.length);return o?(o=De(o,n),o):null},Ue={one:{termMethods:ze,parseMatch:function(t,e,n){if(null==t||\"\"===t)return[];e=e||{},\"number\"==typeof t&&(t=String(t));let o=function(t){const e=t.split(ee);let n=[];e.forEach((t=>{re(t)?n.push(t):n=n.concat(t.split(ne))})),n=se(n);let o=[];return n.forEach((t=>{(t=>/^[![^]*(<[^<]*>)?\\(/.test(t)&&/\\)[?\\]+*$~]*$/.test(t))(t)||re(t)?o.push(t):o=o.concat(t.split(oe))})),o=se(o),o}(t);return o=o.map((t=>me(t,e))),o=function(t,e){const n=e.model.one.prefixes;for(let e=t.length-1;e>=0;e-=1){const o=t[e];if(o.word&&ge.test(o.word)){let r=o.word.split(/[-–—]/g);if(n.hasOwnProperty(r[0]))continue;r=r.filter((t=>t)).reverse(),t.splice(e,1),r.forEach((n=>{const r=Object.assign({},o);r.word=n,t.splice(e,0,r)}))}}return t}(o,n),o=function(t,e){return t.map((t=>{if(t.root)if(e.methods.two&&e.methods.two.transform){let n=[];t.pos?\"Verb\"===t.pos?n=n.concat(we(t,e)):\"Noun\"===t.pos?n=n.concat(be(t,e)):\"Adjective\"===t.pos&&(n=n.concat(ye(t,e))):(n=n.concat(we(t,e)),n=n.concat(be(t,e)),n=n.concat(ye(t,e))),n=n.filter((t=>t)),n.length>0&&(t.operator=\"or\",t.fastOr=new Set(n))}else t.machine=t.root,delete t.id,delete t.root;return t}))}(o,n),o=ve(o),o},match:function(t,e,n){n=n||[];const{regs:o,group:r,justOne:s}=e;let i=[];if(!o||0===o.length)return{ptrs:[],byGroup:{}};const c=o.filter((t=>!0!==t.optional&&!0!==t.negative)).length;t:for(let e=0;e<t.length;e+=1){const r=t[e];if(!n[e]||!je(o,n[e]))if(!0!==o[0].start)for(let t=0;t<r.length;t+=1){const n=r.slice(t);if(n.length<c)break;let u=Be(n,o,t,r.length);if(u){if(u=De(u,e),i.push(u),!0===s)break t;const n=u.pointer[2];Math.abs(n-1)>t&&(t=Math.abs(n-1))}}else{const t=Me(r,o,e);t&&i.push(t)}}return!0===o[o.length-1].end&&(i=i.filter((e=>{const n=e.pointer[0];return t[n].length===e.pointer[2]}))),e.notIf&&(i=function(t,e,n){return t=t.filter((t=>{const[o,r,s]=t.pointer,i=n[o].slice(r,s);for(let t=0;t<i.length;t+=1){const n=i.slice(t);if(null!==Be(n,e,t,i.length))return!1}return!0})),t}(i,e.notIf,t)),i=function(t,e){const n=[],o={};return 0===t.length||(\"number\"==typeof e&&(e=String(e)),e?t.forEach((t=>{t.groups[e]&&n.push(t.groups[e])})):t.forEach((t=>{n.push(t.pointer),Object.keys(t.groups).forEach((e=>{o[e]=o[e]||[],o[e].push(t.groups[e])}))}))),{ptrs:n,byGroup:o}}(i,r),i.ptrs.forEach((e=>{const[n,o,r]=e;e[3]=t[n][o].id,e[4]=t[n][r-1].id})),i}}};var We={api:function(t){Object.assign(t.prototype,te)},methods:Ue,lib:{parseMatch:function(t,e){const n=this.world(),o=n.methods.one.killUnicode;return o&&(t=o(t,n)),n.methods.one.parseMatch(t,e,n)}}};const Ie=/^\\../,Re=/^#./,Qe=function(t,e){const n={},o={};return Object.keys(e).forEach((r=>{let s=e[r];const i=function(t){let e=\"\",n=\"</span>\";return t=t.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&apos;\"),Ie.test(t)?e=`<span class=\"${t.replace(/^\\./,\"\")}\"`:Re.test(t)?e=`<span id=\"${t.replace(/^#/,\"\")}\"`:(e=`<${t}`,n=`</${t}>`),e+=\">\",{start:e,end:n}}(r);\"string\"==typeof s&&(s=t.match(s)),s.docs.forEach((t=>{if(t.every((t=>t.implicit)))return;const e=t[0].id;n[e]=n[e]||[],n[e].push(i.start);const r=t[t.length-1].id;o[r]=o[r]||[],o[r].push(i.end)}))})),{starts:n,ends:o}};var He={html:function(t){const{starts:e,ends:n}=Qe(this,t);let o=\"\";return this.docs.forEach((t=>{for(let r=0;r<t.length;r+=1){const s=t[r];e.hasOwnProperty(s.id)&&(o+=e[s.id].join(\"\")),o+=s.pre||\"\",o+=s.text||\"\",n.hasOwnProperty(s.id)&&(o+=n[s.id].join(\"\")),o+=s.post||\"\"}})),o}};const Ze=/[,:;)\\]*.?~!\\u0022\\uFF02\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4—-]+$/,Ke=/^[(['\"*~\\uFF02\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/,Je=/[,:;)('\"\\u201D\\]]/,Xe=/^[-–—]$/,Ye=/ /,tn=function(t,e,n=!0){let o=\"\";return t.forEach((t=>{let n=t.pre||\"\",r=t.post||\"\";\"some\"===e.punctuation&&(n=n.replace(Ke,\"\"),Xe.test(r)&&(r=\" \"),r=r.replace(Je,\"\"),r=r.replace(/\\?!+/,\"?\"),r=r.replace(/!+/,\"!\"),r=r.replace(/\\?+/,\"?\"),r=r.replace(/\\.{2,}/,\"\"),t.tags.has(\"Abbreviation\")&&(r=r.replace(/\\./,\"\"))),\"some\"===e.whitespace&&(n=n.replace(/\\s/,\"\"),r=r.replace(/\\s+/,\" \")),e.keepPunct||(n=n.replace(Ke,\"\"),r=\"-\"===r?\" \":r.replace(Ze,\"\"));let s=t[e.form||\"text\"]||t.normal||\"\";\"implicit\"===e.form&&(s=t.implicit||t.text),\"root\"===e.form&&t.implicit&&(s=t.root||t.implicit||t.normal),\"machine\"!==e.form&&\"implicit\"!==e.form&&\"root\"!==e.form||!t.implicit||r&&Ye.test(r)||(r+=\" \"),o+=n+s+r})),!1===n&&(o=o.trim()),!0===e.lowerCase&&(o=o.toLowerCase()),o},en={text:{form:\"text\"},normal:{whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"normal\"},machine:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"none\",unicode:\"some\",form:\"machine\"},root:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"root\"},implicit:{form:\"implicit\"}};en.clean=en.normal,en.reduced=en.root;const nn=[];let on=0;for(;on<64;)nn[on]=0|4294967296*Math.sin(++on%Math.PI);const rn=function(t){let e,n,o,r=decodeURI(encodeURI(t))+\"\",s=r.length;const i=[e=1732584193,n=4023233417,~e,~n],c=[];for(t=--s/4+2|15,c[--t]=8*s;~s;)c[s>>2]|=r.charCodeAt(s)<<8*s--;for(on=r=0;on<t;on+=16){for(s=i;r<64;s=[o=s[3],e+((o=s[0]+[e&n|~e&o,o&e|~o&n,e^n^o,n^(e|~o)][s=r>>4]+nn[r]+~~c[on|15&[r,5*r+1,3*r+5,7*r][s]])<<(s=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*s+r++%4])|o>>>-s),e,n])e=0|s[1],n=s[2];for(r=4;r;)i[--r]+=s[r]}for(t=\"\";r<32;)t+=(i[r>>3]>>4*(1^r++)&15).toString(16);return t},sn={text:!0,terms:!0},cn={case:\"none\",unicode:\"some\",form:\"machine\",punctuation:\"some\"},un=function(t,e){return Object.assign({},t,e)},an={text:t=>tn(t,{keepPunct:!0},!1),normal:t=>tn(t,un(en.normal,{keepPunct:!0}),!1),implicit:t=>tn(t,un(en.implicit,{keepPunct:!0}),!1),machine:t=>tn(t,cn,!1),root:t=>tn(t,un(cn,{form:\"root\"}),!1),hash:t=>rn(tn(t,{keepPunct:!0},!1)),offset:t=>{const e=an.text(t).length;return{index:t[0].offset.index,start:t[0].offset.start,length:e}},terms:t=>t.map((t=>{const e=Object.assign({},t);return e.tags=Array.from(t.tags),e})),confidence:(t,e,n)=>e.eq(n).confidence(),syllables:(t,e,n)=>e.eq(n).syllables(),sentence:(t,e,n)=>e.eq(n).fullSentence().text(),dirty:t=>t.some((t=>!0===t.dirty))};an.sentences=an.sentence,an.clean=an.normal,an.reduced=an.root;const ln={json:function(t){const e=(n=this,\"string\"==typeof(o=(o=t)||{})&&(o={}),(o=Object.assign({},sn,o)).offset&&n.compute(\"offset\"),n.docs.map(((t,e)=>{const r={};return Object.keys(o).forEach((s=>{o[s]&&an[s]&&(r[s]=an[s](t,n,e))})),r})));var n,o;return\"number\"==typeof t?e[t]:e}};ln.data=ln.json;const hn=function(t){const e=t.pre||\"\",n=t.post||\"\";return e+t.text+n},fn=function(t,e){const n=function(t,e){const n={};return Object.keys(e).forEach((o=>{t.match(o).fullPointer.forEach((t=>{n[t[3]]={fn:e[o],end:t[2]}}))})),n}(t,e);let o=\"\";return t.docs.forEach(((e,r)=>{for(let s=0;s<e.length;s+=1){const i=e[s];if(n.hasOwnProperty(i.id)){const{fn:c,end:u}=n[i.id],a=t.update([[r,s,u]]);o+=e[s].pre||\"\",o+=c(a),s=u-1,o+=e[s].post||\"\"}else o+=hn(i)}})),o},pn={debug:function(t){const e=this.methods.one.debug||{};return t&&e.hasOwnProperty(t)?(e[t](this),this):\"undefined\"!=typeof window&&window.document?(e.clientSide(this),this):(e.tags(this),this)},out:function(t){if(e=t,\"[object Object]\"===Object.prototype.toString.call(e))return fn(this,t);var e;if(\"text\"===t)return this.text();if(\"normal\"===t)return this.text(\"normal\");if(\"root\"===t)return this.text(\"root\");if(\"machine\"===t||\"reduced\"===t)return this.text(\"machine\");if(\"hash\"===t||\"md5\"===t)return rn(this.text());if(\"json\"===t)return this.json();if(\"offset\"===t||\"offsets\"===t)return this.compute(\"offset\"),this.json({offset:!0});if(\"array\"===t){const t=this.docs.map((t=>t.reduce(((t,e)=>t+e.pre+e.text+e.post),\"\").trim()));return t.filter((t=>t))}if(\"freq\"===t||\"frequency\"===t||\"topk\"===t)return function(t){const e={};t.forEach((t=>{e[t]=e[t]||0,e[t]+=1}));const n=Object.keys(e).map((t=>({normal:t,count:e[t]})));return n.sort(((t,e)=>t.count>e.count?-1:0))}(this.json({normal:!0}).map((t=>t.normal)));if(\"terms\"===t){let t=[];return this.docs.forEach((e=>{let n=e.map((t=>t.text));n=n.filter((t=>t)),t=t.concat(n)})),t}return\"tags\"===t?this.docs.map((t=>t.reduce(((t,e)=>(t[e.implicit||e.normal]=Array.from(e.tags),t)),{}))):\"debug\"===t?this.debug():this.text()},wrap:function(t){return fn(this,t)}};var dn={text:function(t){let e={};var n;if(t&&\"string\"==typeof t&&en.hasOwnProperty(t)?e=Object.assign({},en[t]):t&&(n=t,\"[object Object]\"===Object.prototype.toString.call(n))&&(e=Object.assign({},t)),void 0!==e.keepSpace||this.isFull()||(e.keepSpace=!1),void 0===e.keepEndPunct&&this.pointer){const t=this.pointer[0];t&&t[1]?e.keepEndPunct=!1:e.keepEndPunct=!0}return void 0===e.keepPunct&&(e.keepPunct=!0),void 0===e.keepSpace&&(e.keepSpace=!0),function(t,e){let n=\"\";if(!t||!t[0]||!t[0][0])return n;for(let o=0;o<t.length;o+=1)n+=tn(t[o],e,!0);if(e.keepSpace||(n=n.trim()),!1===e.keepEndPunct){t[0][0].tags.has(\"Emoticon\")||(n=n.replace(Ke,\"\"));const e=t[t.length-1];e[e.length-1].tags.has(\"Emoticon\")||(n=n.replace(Ze,\"\")),n.endsWith(\"'\")&&!n.endsWith(\"s'\")&&(n=n.replace(/'/,\"\"))}return!0===e.cleanWhitespace&&(n=n.trim()),n}(this.docs,e)}};const mn=Object.assign({},pn,dn,ln,He),gn=\"\u001b[0m\",wn={green:t=>\"\u001b[32m\"+t+gn,red:t=>\"\u001b[31m\"+t+gn,blue:t=>\"\u001b[34m\"+t+gn,magenta:t=>\"\u001b[35m\"+t+gn,cyan:t=>\"\u001b[36m\"+t+gn,yellow:t=>\"\u001b[33m\"+t+gn,black:t=>\"\u001b[30m\"+t+gn,dim:t=>\"\u001b[2m\"+t+gn,i:t=>\"\u001b[3m\"+t+gn},bn={tags:function(t){const{docs:e,model:n}=t;0===e.length&&console.log(wn.blue(\"\\n     ──────\")),e.forEach((e=>{console.log(wn.blue(\"\\n  ┌─────────\")),e.forEach((e=>{const o=[...e.tags||[]];let r=e.text||\"-\";e.sense&&(r=`{${e.normal}/${e.sense}}`),e.implicit&&(r=\"[\"+e.implicit+\"]\"),r=wn.yellow(r);let s=\"'\"+r+\"'\";if(e.reference){const n=t.update([e.reference]).text(\"normal\");s+=` - ${wn.dim(wn.i(\"[\"+n+\"]\"))}`}s=s.padEnd(18);const i=wn.blue(\"  │ \")+wn.i(s)+\"  - \"+function(t,e){return e.one.tagSet&&(t=t.map((t=>{if(!e.one.tagSet.hasOwnProperty(t))return t;const n=e.one.tagSet[t].color||\"blue\";return wn[n](t)}))),t.join(\", \")}(o,n);console.log(i)}))})),console.log(\"\\n\")},clientSide:function(t){console.log(\"%c -=-=- \",\"background-color:#6699cc;\"),t.forEach((t=>{console.groupCollapsed(t.text());const e=t.docs[0].map((t=>{let e=t.text||\"-\";t.implicit&&(e=\"[\"+t.implicit+\"]\");return{text:e,tags:\"[\"+Array.from(t.tags).join(\", \")+\"]\"}}));console.table(e,[\"text\",\"tags\"]),console.groupEnd()}))},chunks:function(t){const{docs:e}=t;console.log(\"\"),e.forEach((t=>{const e=[];t.forEach((t=>{\"Noun\"===t.chunk?e.push(wn.blue(t.implicit||t.normal)):\"Verb\"===t.chunk?e.push(wn.green(t.implicit||t.normal)):\"Adjective\"===t.chunk?e.push(wn.yellow(t.implicit||t.normal)):\"Pivot\"===t.chunk?e.push(wn.red(t.implicit||t.normal)):e.push(t.implicit||t.normal)})),console.log(e.join(\" \"),\"\\n\")})),console.log(\"\\n\")},highlight:function(t){if(!t.found)return;const e={};t.fullPointer.forEach((t=>{e[t[0]]=e[t[0]]||[],e[t[0]].push(t)})),Object.keys(e).forEach((n=>{let o=t.update([[Number(n)]]).text();t.update(e[n]).json({offset:!0}).forEach(((t,e)=>{o=function(t,e,n){const o=((t,e,n)=>{const o=9*n,r=e.start+o,s=r+e.length;return[t.substring(0,r),t.substring(r,s),t.substring(s,t.length)]})(t,e,n);return`${o[0]}${wn.blue(o[1])}${o[2]}`}(o,t.offset,e)})),console.log(o)})),console.log(\"\\n\")}};var yn={api:function(t){Object.assign(t.prototype,mn)},methods:{one:{hash:rn,debug:bn}}};const vn=function(t,e){if(t[0]!==e[0])return!1;const[,n,o]=t,[,r,s]=e;return n<=r&&o>r||r<=n&&s>n},xn=function(t){const e={};return t.forEach((t=>{e[t[0]]=e[t[0]]||[],e[t[0]].push(t)})),e},jn=function(t,e){const n=xn(e),o=[];return t.forEach((t=>{const[e]=t;let r=n[e]||[];if(r=r.filter((e=>function(t,e){return t[1]<=e[1]&&e[2]<=t[2]}(t,e))),0===r.length)return void o.push({passthrough:t});r=r.sort(((t,e)=>t[1]-e[1]));let s=t;r.forEach(((t,e)=>{const n=function(t,e){const[n,o]=t,r=e[1],s=e[2],i={};if(o<r){const e=r<t[2]?r:t[2];i.before=[n,o,e]}return i.match=e,t[2]>s&&(i.after=[n,s,t[2]]),i}(s,t);r[e+1]?(o.push({before:n.before,match:n.match}),n.after&&(s=n.after)):o.push(n)}))})),o};var En={one:{termList:function(t){const e=[];for(let n=0;n<t.length;n+=1)for(let o=0;o<t[n].length;o+=1)e.push(t[n][o]);return e},getDoc:function(t,e){let n=[];return t.forEach(((o,r)=>{if(!o)return;let[s,i,c,u,a]=o,l=e[s]||[];if(void 0===i&&(i=0),void 0===c&&(c=l.length),!u||l[i]&&l[i].id===u)l=l.slice(i,c);else{const n=function(t,e,n){for(let o=0;o<20;o+=1){if(e[n-o]){const r=e[n-o].findIndex((e=>e.id===t));if(-1!==r)return[n-o,r]}if(e[n+o]){const r=e[n+o].findIndex((e=>e.id===t));if(-1!==r)return[n+o,r]}}return null}(u,e,s);if(null!==n){const o=c-i;l=e[n[0]].slice(n[1],n[1]+o);const s=l[0]?l[0].id:null;t[r]=[n[0],n[1],n[1]+o,s]}}0!==l.length&&i!==c&&(a&&l[l.length-1].id!==a&&(l=function(t,e){const[n,o,,,r]=t,s=e[n],i=s.findIndex((t=>t.id===r));return-1===i?(t[2]=e[n].length,t[4]=s.length?s[s.length-1].id:null):t[2]=i,e[n].slice(o,t[2]+1)}(o,e)),n.push(l))})),n=n.filter((t=>t.length>0)),n},pointer:{indexN:xn,splitAll:jn}}};const On=function(t,e){const n=t.concat(e),o=xn(n);let r=[];return n.forEach((t=>{const[e]=t;if(1===o[e].length)return void r.push(t);const n=o[e].filter((e=>vn(t,e)));n.push(t);const s=function(t){let e=t[0][1],n=t[0][2];return t.forEach((t=>{t[1]<e&&(e=t[1]),t[2]>n&&(n=t[2])})),[t[0][0],e,n]}(n);r.push(s)})),r=function(t){const e={};for(let n=0;n<t.length;n+=1)e[t[n].join(\",\")]=t[n];return Object.values(e)}(r),r},kn=function(t,e){const n=[];return jn(t,e).forEach((t=>{t.passthrough&&n.push(t.passthrough),t.before&&n.push(t.before),t.after&&n.push(t.after)})),n},Pn=(t,e)=>{return\"string\"==typeof t||(n=t,\"[object Array]\"===Object.prototype.toString.call(n))?e.match(t):t||e.none();var n},_n=function(t,e){return t.map((t=>{const[n,o]=t;return e[n]&&e[n][o]&&(t[3]=e[n][o].id),t}))},Sn={union:function(t){t=Pn(t,this);let e=On(this.fullPointer,t.fullPointer);return e=_n(e,this.document),this.toView(e)}};Sn.and=Sn.union,Sn.intersection=function(t){t=Pn(t,this);let e=function(t,e){const n=xn(e),o=[];return t.forEach((t=>{let e=n[t[0]]||[];e=e.filter((e=>vn(t,e))),0!==e.length&&e.forEach((e=>{const n=function(t,e){const n=t[1]<e[1]?e[1]:t[1],o=t[2]>e[2]?e[2]:t[2];return n<o?[t[0],n,o]:null}(t,e);n&&o.push(n)}))})),o}(this.fullPointer,t.fullPointer);return e=_n(e,this.document),this.toView(e)},Sn.not=function(t){t=Pn(t,this);let e=kn(this.fullPointer,t.fullPointer);return e=_n(e,this.document),this.toView(e)},Sn.difference=Sn.not,Sn.complement=function(){const t=this.all();let e=kn(t.fullPointer,this.fullPointer);return e=_n(e,this.document),this.toView(e)},Sn.settle=function(){let t=this.fullPointer;return t.forEach((e=>{t=On(t,[e])})),t=_n(t,this.document),this.update(t)};var zn={methods:En,api:function(t){Object.assign(t.prototype,Sn)}};const An=function(t){return!0===t.optional||!0===t.negative?null:t.tag?\"#\"+t.tag:t.word?t.word:t.switch?`%${t.switch}%`:null},$n=function(t,e){const n=e.methods.one.parseMatch;return t.forEach((t=>{t.regs=n(t.match,{},e),\"string\"==typeof t.ifNo&&(t.ifNo=[t.ifNo]),t.notIf&&(t.notIf=n(t.notIf,{},e)),t.needs=function(t){const e=[];return t.forEach((t=>{e.push(An(t)),\"and\"===t.operator&&t.choices&&t.choices.forEach((t=>{t.forEach((t=>{e.push(An(t))}))}))})),e.filter((t=>t))}(t.regs);const{wants:o,count:r}=function(t){const e=[];let n=0;return t.forEach((t=>{\"or\"!==t.operator||t.optional||t.negative||(t.fastOr&&Array.from(t.fastOr).forEach((t=>{e.push(t)})),t.choices&&t.choices.forEach((t=>{t.forEach((t=>{const n=An(t);n&&e.push(n)}))})),n+=1)})),{wants:e,count:n}}(t.regs);t.wants=o,t.minWant=r,t.minWords=t.regs.filter((t=>!t.optional)).length})),t};var Tn={buildNet:function(t,e){t=$n(t,e);const n={};t.forEach((t=>{t.needs.forEach((e=>{n[e]=Array.isArray(n[e])?n[e]:[],n[e].push(t)})),t.wants.forEach((e=>{n[e]=Array.isArray(n[e])?n[e]:[],n[e].push(t)}))})),Object.keys(n).forEach((t=>{const e={};n[t]=n[t].filter((t=>\"boolean\"!=typeof e[t.match]&&(e[t.match]=!0,!0)))}));const o=t.filter((t=>0===t.needs.length&&0===t.wants.length));return{hooks:n,always:o}},bulkMatch:function(t,e,n,o={}){const r=n.one.cacheDoc(t);let s=function(t,e){return t.map(((n,o)=>{let r=[];Object.keys(e).forEach((n=>{t[o].has(n)&&(r=r.concat(e[n]))}));const s={};return r=r.filter((t=>\"boolean\"!=typeof s[t.match]&&(s[t.match]=!0,!0))),r}))}(r,e.hooks);s=function(t,e){return t.map(((t,n)=>{const o=e[n];return(t=(t=t.filter((t=>t.needs.every((t=>o.has(t)))))).filter((t=>void 0===t.ifNo||!0!==t.ifNo.some((t=>o.has(t)))))).filter((t=>0===t.wants.length||t.wants.filter((t=>o.has(t))).length>=t.minWant))}))}(s,r),e.always.length>0&&(s=s.map((t=>t.concat(e.always)))),s=function(t,e){return t.map(((t,n)=>{const o=e[n].length;return t=t.filter((t=>o>=t.minWords)),t}))}(s,t);const i=function(t,e,n,o,r){const s=[];for(let n=0;n<t.length;n+=1)for(let i=0;i<t[n].length;i+=1){const c=t[n][i],u=o.one.match([e[n]],c);if(u.ptrs.length>0&&(u.ptrs.forEach((t=>{t[0]=n;const e=Object.assign({},c,{pointer:t});void 0!==c.unTag&&(e.unTag=c.unTag),s.push(e)})),!0===r.matchOne))return[s[0]]}return s}(s,t,0,n,o);return i},bulkTagger:function(t,e,n){const{model:o,methods:r}=n,{getDoc:s,setTag:i,unTag:c}=r.one,u=r.two.looksPlural;if(0===t.length)return t;return(\"undefined\"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_TAGS&&console.log(`\\n\\n  \u001b[32m→ ${t.length} post-tagger:\u001b[0m`),t.map((t=>{if(!t.tag&&!t.chunk&&!t.unTag)return;const r=t.reason||t.match,a=s([t.pointer],e)[0];if(!0===t.safe){if(!1===function(t,e,n){const o=n.one.tagSet;if(!o.hasOwnProperty(e))return!0;const r=o[e].not||[];for(let e=0;e<t.length;e+=1){const n=t[e];for(let t=0;t<r.length;t+=1)if(!0===n.tags.has(r[t]))return!1}return!0}(a,t.tag,o))return;if(\"-\"===a[a.length-1].post)return}if(void 0!==t.tag){if(i(a,t.tag,n,t.safe,`[post] '${r}'`),\"Noun\"===t.tag&&u){const e=a[a.length-1];u(e.text)?i([e],\"Plural\",n,t.safe,\"quick-plural\"):i([e],\"Singular\",n,t.safe,\"quick-singular\")}!0===t.freeze&&a.forEach((t=>t.frozen=!0))}void 0!==t.unTag&&c(a,t.unTag,n,t.safe,r),t.chunk&&a.forEach((e=>e.chunk=t.chunk))}))}},Cn={lib:{buildNet:function(t){const e=this.methods().one.buildNet(t,this.world());return e.isNet=!0,e}},api:function(t){t.prototype.sweep=function(t,e={}){const{world:n,docs:o}=this,{methods:r}=n;let s=r.one.bulkMatch(o,t,this.methods,e);!1!==e.tagger&&r.one.bulkTagger(s,o,this.world),s=s.map((t=>{const e=t.pointer,n=o[e[0]][e[1]],r=e[2]-e[1];return n.index&&(t.pointer=[n.index[0],n.index[1],e[1]+r]),t}));const i=s.map((t=>t.pointer));return s=s.map((t=>(t.view=this.update([t.pointer]),delete t.regs,delete t.needs,delete t.pointer,delete t._expanded,t))),{view:this.update(i),found:s}}},methods:{one:Tn}};const Ln=/ /,Nn=function(t,e){\"Noun\"===e&&(t.chunk=e),\"Verb\"===e&&(t.chunk=e)},Vn=function(t,e,n,o){if(!0===t.tags.has(e))return null;if(\".\"===e)return null;!0===t.frozen&&(o=!0);const r=n[e];if(r){if(r.not&&r.not.length>0)for(let e=0;e<r.not.length;e+=1){if(!0===o&&t.tags.has(r.not[e]))return null;t.tags.delete(r.not[e])}if(r.parents&&r.parents.length>0)for(let e=0;e<r.parents.length;e+=1)t.tags.add(r.parents[e]),Nn(t,r.parents[e])}return t.tags.add(e),t.dirty=!0,Nn(t,e),!0},Fn=function(t,e,n={},o,r){const s=n.model.one.tagSet||{};if(!e)return;const i=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};var c;if(i&&i.DEBUG_TAGS&&((t,e,n=\"\")=>{const o=t.map((t=>t.text||\"[\"+t.implicit+\"]\")).join(\" \");var r;\"string\"!=typeof e&&e.length>2&&(e=e.slice(0,2).join(\", #\")+\" +\"),e=\"string\"!=typeof e?e.join(\", #\"):e,console.log(` ${(r=o,\"\u001b[33m\u001b[3m\"+r+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${e.padEnd(22)}  ${(t=>\"\u001b[3m\"+t+\"\u001b[0m\")(n)}`)})(t,e,r),!0!=(c=e,\"[object Array]\"===Object.prototype.toString.call(c)))if(\"string\"==typeof e)if(e=e.trim(),Ln.test(e))!function(t,e,n,o){const r=e.split(Ln);t.forEach(((t,e)=>{let s=r[e];s&&(s=s.replace(/^#/,\"\"),Vn(t,s,n,o))}))}(t,e,s,o);else{e=e.replace(/^#/,\"\");for(let n=0;n<t.length;n+=1)Vn(t[n],e,s,o)}else console.warn(`compromise: Invalid tag '${e}'`);else e.forEach((e=>Fn(t,e,n,o)))},qn=function(t){return t.children=t.children||[],t._cache=t._cache||{},t.props=t.props||{},t._cache.parents=t._cache.parents||[],t._cache.children=t._cache.children||[],t},Gn=/^ *(#|\\/\\/)/,Bn=function(t){let e=t.trim().split(/->/),n=[];e.forEach((t=>{n=n.concat(function(t){if(!(t=t.trim()))return null;if(/^\\[/.test(t)&&/\\]$/.test(t)){let e=(t=(t=t.replace(/^\\[/,\"\")).replace(/\\]$/,\"\")).split(/,/);return e=e.map((t=>t.trim())).filter((t=>t)),e=e.map((t=>qn({id:t}))),e}return[qn({id:t})]}(t))})),n=n.filter((t=>t));let o=n[0];for(let t=1;t<n.length;t+=1)o.children.push(n[t]),o=n[t];return n[0]},Dn=(t,e)=>{let n=[],o=[t];for(;o.length>0;){let t=o.pop();n.push(t),t.children&&t.children.forEach((n=>{e&&e(t,n),o.push(n)}))}return n},Mn=t=>\"[object Array]\"===Object.prototype.toString.call(t),Un=t=>(t=t||\"\").trim(),Wn=function(t=[]){return\"string\"==typeof t?function(t){let e=t.split(/\\r?\\n/),n=[];e.forEach((t=>{if(!t.trim()||Gn.test(t))return;let e=(t=>{const e=/^( {2}|\\t)/;let n=0;for(;e.test(t);)t=t.replace(e,\"\"),n+=1;return n})(t);n.push({indent:e,node:Bn(t)})}));let o=function(t){let e={children:[]};return t.forEach(((n,o)=>{0===n.indent?e.children=e.children.concat(n.node):t[o-1]&&function(t,e){let n=t[e].indent;for(;e>=0;e-=1)if(t[e].indent<n)return t[e];return t[0]}(t,o).node.children.push(n.node)})),e}(n);return o=qn(o),o}(t):Mn(t)?function(t){let e={};t.forEach((t=>{e[t.id]=t}));let n=qn({});return t.forEach((t=>{if((t=qn(t)).parent)if(e.hasOwnProperty(t.parent)){let n=e[t.parent];delete t.parent,n.children.push(t)}else console.warn(`[Grad] - missing node '${t.parent}'`);else n.children.push(t)})),n}(t):(Dn(e=t).forEach(qn),e);var e},In=function(t,e){let n=\"-> \";e&&(n=(t=>\"\u001b[2m\"+t+\"\u001b[0m\")(\"→ \"));let o=\"\";return Dn(t).forEach(((t,r)=>{let s=t.id||\"\";if(e&&(s=(t=>\"\u001b[31m\"+t+\"\u001b[0m\")(s)),0===r&&!t.id)return;let i=t._cache.parents.length;o+=\"    \".repeat(i)+n+s+\"\\n\"})),o},Rn=function(t){let e=Dn(t);e.forEach((t=>{delete(t=Object.assign({},t)).children}));let n=e[0];return n&&!n.id&&0===Object.keys(n.props).length&&e.shift(),e},Qn={text:In,txt:In,array:Rn,flat:Rn},Hn=function(t,e){return\"nested\"===e||\"json\"===e?t:\"debug\"===e?(console.log(In(t,!0)),null):Qn.hasOwnProperty(e)?Qn[e](t):t},Zn=t=>{Dn(t,((t,e)=>{t.id&&(t._cache.parents=t._cache.parents||[],e._cache.parents=t._cache.parents.concat([t.id]))}))},Kn=/\\//;class g{constructor(t={}){Object.defineProperty(this,\"json\",{enumerable:!1,value:t,writable:!0})}get children(){return this.json.children}get id(){return this.json.id}get found(){return this.json.id||this.json.children.length>0}props(t={}){let e=this.json.props||{};return\"string\"==typeof t&&(e[t]=!0),this.json.props=Object.assign(e,t),this}get(t){if(t=Un(t),!Kn.test(t)){let e=this.json.children.find((e=>e.id===t));return new g(e)}let e=((t,e)=>{let n=(t=>\"string\"!=typeof t?t:(t=t.replace(/^\\//,\"\")).split(/\\//))(e=e||\"\");for(let e=0;e<n.length;e+=1){let o=t.children.find((t=>t.id===n[e]));if(!o)return null;t=o}return t})(this.json,t)||qn({});return new g(e)}add(t,e={}){if(Mn(t))return t.forEach((t=>this.add(Un(t),e))),this;t=Un(t);let n=qn({id:t,props:e});return this.json.children.push(n),new g(n)}remove(t){return t=Un(t),this.json.children=this.json.children.filter((e=>e.id!==t)),this}nodes(){return Dn(this.json).map((t=>(delete(t=Object.assign({},t)).children,t)))}cache(){return(t=>{let e=Dn(t,((t,e)=>{t.id&&(t._cache.parents=t._cache.parents||[],t._cache.children=t._cache.children||[],e._cache.parents=t._cache.parents.concat([t.id]))})),n={};e.forEach((t=>{t.id&&(n[t.id]=t)})),e.forEach((t=>{t._cache.parents.forEach((e=>{n.hasOwnProperty(e)&&n[e]._cache.children.push(t.id)}))})),t._cache.children=Object.keys(n)})(this.json),this}list(){return Dn(this.json)}fillDown(){var t;return t=this.json,Dn(t,((t,e)=>{e.props=((t,e)=>(Object.keys(e).forEach((n=>{if(e[n]instanceof Set){let o=t[n]||new Set;t[n]=new Set([...o,...e[n]])}else if((t=>t&&\"object\"==typeof t&&!Array.isArray(t))(e[n])){let o=t[n]||{};t[n]=Object.assign({},e[n],o)}else Mn(e[n])?t[n]=e[n].concat(t[n]||[]):void 0===t[n]&&(t[n]=e[n])})),t))(e.props,t.props)})),this}depth(){Zn(this.json);let t=Dn(this.json),e=t.length>1?1:0;return t.forEach((t=>{if(0===t._cache.parents.length)return;let n=t._cache.parents.length+1;n>e&&(e=n)})),e}out(t){return Zn(this.json),Hn(this.json,t)}debug(){return Zn(this.json),Hn(this.json,\"debug\"),this}}const Jn=function(t){let e=Wn(t);return new g(e)};Jn.prototype.plugin=function(t){t(this)};const Xn={Noun:\"blue\",Verb:\"green\",Negative:\"green\",Date:\"red\",Value:\"red\",Adjective:\"magenta\",Preposition:\"cyan\",Conjunction:\"cyan\",Determiner:\"cyan\",Hyphenated:\"cyan\",Adverb:\"cyan\"},Yn=function(t){if(Xn.hasOwnProperty(t.id))return Xn[t.id];if(Xn.hasOwnProperty(t.is))return Xn[t.is];const e=t._cache.parents.find((t=>Xn[t]));return Xn[e]},to=function(t){return t?\"string\"==typeof t?[t]:t:[]},eo=function(t,e){return t=function(t,e){return Object.keys(t).forEach((n=>{t[n].isA&&(t[n].is=t[n].isA),t[n].notA&&(t[n].not=t[n].notA),t[n].is&&\"string\"==typeof t[n].is&&(e.hasOwnProperty(t[n].is)||t.hasOwnProperty(t[n].is)||(t[t[n].is]={})),t[n].not&&\"string\"==typeof t[n].not&&!t.hasOwnProperty(t[n].not)&&(e.hasOwnProperty(t[n].not)||t.hasOwnProperty(t[n].not)||(t[t[n].not]={}))})),t}(t,e),Object.keys(t).forEach((e=>{t[e].children=to(t[e].children),t[e].not=to(t[e].not)})),Object.keys(t).forEach((e=>{(t[e].not||[]).forEach((n=>{t[n]&&t[n].not&&t[n].not.push(e)}))})),t};var no={one:{setTag:Fn,unTag:function(t,e,n){e=e.trim().replace(/^#/,\"\");for(let o=0;o<t.length;o+=1){const r=t[o];if(!0===r.frozen)continue;if(\"*\"===e){r.tags.clear();continue}const s=n[e];if(s&&s.children.length>0)for(let t=0;t<s.children.length;t+=1)r.tags.delete(s.children[t]);r.tags.delete(e)}},addTags:function(t,e){Object.keys(e).length>0&&(t=function(t){return Object.keys(t).forEach((e=>{t[e]=Object.assign({},t[e]),t[e].novel=!0})),t}(t)),t=eo(t,e);const n=function(t){const e=Object.keys(t).map((e=>{const n=t[e],o={not:new Set(n.not),also:n.also,is:n.is,novel:n.novel};return{id:e,parent:n.is,props:o,children:[]}}));return Jn(e).cache().fillDown().out(\"array\")}(Object.assign({},e,t)),o=function(t){const e={};return t.forEach((t=>{const{not:n,also:o,is:r,novel:s}=t.props;let i=t._cache.parents;o&&(i=i.concat(o)),e[t.id]={is:r,not:n,novel:s,also:o,parents:i,children:t._cache.children,color:Yn(t)}})),Object.keys(e).forEach((t=>{const n=new Set(e[t].not);e[t].not.forEach((t=>{e[t]&&e[t].children.forEach((t=>n.add(t)))})),e[t].not=Array.from(n)})),e}(n);return o},canBe:function(t,e,n){if(!n.hasOwnProperty(e))return!0;const o=n[e].not||[];for(let e=0;e<o.length;e+=1)if(t.tags.has(o[e]))return!1;return!0}}};const oo=function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},ro={tag:function(t,e=\"\",n){if(!this.found||!t)return this;const o=this.termList();if(0===o.length)return this;const{methods:r,verbose:s,world:i}=this;return!0===s&&console.log(\" +  \",t,e||\"\"),oo(t)?t.forEach((t=>r.one.setTag(o,t,i,n,e))):r.one.setTag(o,t,i,n,e),this.uncache(),this},tagSafe:function(t,e=\"\"){return this.tag(t,e,!0)},unTag:function(t,e){if(!this.found||!t)return this;const n=this.termList();if(0===n.length)return this;const{methods:o,verbose:r,model:s}=this;!0===r&&console.log(\" -  \",t,e||\"\");const i=s.one.tagSet;return oo(t)?t.forEach((t=>o.one.unTag(n,t,i))):o.one.unTag(n,t,i),this.uncache(),this},canBe:function(t){t=t.replace(/^#/,\"\");const e=this.model.one.tagSet,n=this.methods.one.canBe,o=[];this.document.forEach(((r,s)=>{r.forEach(((r,i)=>{n(r,t,e)||o.push([s,i,i+1])}))}));const r=this.update(o);return this.difference(r)}};var so={addTags:function(t){const{model:e,methods:n}=this.world(),o=e.one.tagSet,r=(0,n.one.addTags)(t,o);return e.one.tagSet=r,this}};const io=new Set([\"Auxiliary\",\"Possessive\"]);var co={model:{one:{tagSet:{}}},compute:{tagRank:function(t){const{document:e,world:n}=t,o=n.model.one.tagSet;e.forEach((t=>{t.forEach((t=>{const e=Array.from(t.tags);t.tagRank=function(t,e){return t=t.sort(((t,n)=>{if(io.has(t)||!e.hasOwnProperty(n))return 1;if(io.has(n)||!e.hasOwnProperty(t))return-1;let o=e[t].children||[];const r=o.length;return o=e[n].children||[],r-o.length})),t}(e,o)}))}))}},methods:no,api:function(t){Object.assign(t.prototype,ro)},lib:so};const uo=/([.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s)/g,ao=/^[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s$/,lo=/((?:\\r?\\n|\\r)+)/,ho=/[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i,fo=/\\S/,po=function(t){return Boolean(t.match(/\\n$/))},mo={'\"':'\"',\"＂\":\"＂\",\"“\":\"”\",\"‟\":\"”\",\"„\":\"”\",\"⹂\":\"”\",\"‚\":\"’\",\"«\":\"»\",\"‹\":\"›\",\"‵\":\"′\",\"‶\":\"″\",\"‷\":\"‴\",\"〝\":\"〞\",\"〟\":\"〞\"},go=RegExp(\"[\"+Object.keys(mo).join(\"\")+\"]\",\"g\"),wo=RegExp(\"[\"+Object.values(mo).join(\"\")+\"]\",\"g\"),bo=function(t){if(!t)return!1;const e=t.match(wo);return null!==e&&1===e.length},yo=/\\(/g,vo=/\\)/g,xo=/\\S/,jo=/^\\s+/,Eo=function(t,e){const n=t.split(/[-–—]/);if(n.length<=1)return!1;const{prefixes:o,suffixes:r}=e.one;if(1===n[0].length&&/[a-z]/i.test(n[0]))return!1;if(o.hasOwnProperty(n[0]))return!1;if(n[1]=n[1].trim().replace(/[.?!]$/,\"\"),r.hasOwnProperty(n[1]))return!1;if(!0===/^([a-z\\u00C0-\\u00FF`\"'/]+)[-–—]([a-z0-9\\u00C0-\\u00FF].*)/i.test(t))return!0;return!0===/^[('\"]?([0-9]{1,4})[-–—]([a-z\\u00C0-\\u00FF`\"'/-]+[)'\"]?$)/i.test(t)},Oo=function(t){const e=[],n=t.split(/[-–—]/);let o=\"-\";const r=t.match(/[-–—]/);r&&r[0]&&(o=r);for(let t=0;t<n.length;t++)t===n.length-1?e.push(n[t]):e.push(n[t]+o);return e},ko=/\\p{L} ?\\/ ?\\p{L}+$/u,Po=/\\S/,_o=/^[!?.]+$/,So=/(\\S+)/;let zo=[\".\",\"?\",\"!\",\":\",\";\",\"-\",\"–\",\"—\",\"--\",\"...\",\"(\",\")\",\"[\",\"]\",'\"',\"'\",\"`\",\"«\",\"»\",\"*\",\"•\"];zo=zo.reduce(((t,e)=>(t[e]=!0,t)),{});const Ao=/\\p{Letter}/u,$o=/[\\p{Number}\\p{Currency_Symbol}]/u,To=/^[a-z]\\.([a-z]\\.)+/i,Co=/[sn]['’]$/,Lo=/([A-Z]\\.)+[A-Z]?,?$/,No=/^[A-Z]\\.,?$/,Vo=/[A-Z]{2,}('s|,)?$/,Fo=/([a-z]\\.)+[a-z]\\.?$/,qo=function(t){return function(t){return!0===Lo.test(t)||!0===Fo.test(t)||!0===No.test(t)||!0===Vo.test(t)}(t)&&(t=t.replace(/\\./g,\"\")),t},Go=function(t,e){const n=e.methods.one.killUnicode;let o=t.text||\"\";o=function(t){const e=t=(t=(t=t||\"\").toLowerCase()).trim();return t=(t=(t=t.replace(/[,;.!?]+$/,\"\")).replace(/\\u2026/g,\"...\")).replace(/\\u2013/g,\"-\"),!1===/^[:;]/.test(t)&&(t=(t=(t=t.replace(/\\.{3,}$/g,\"\")).replace(/[\",.!:;?)]+$/g,\"\")).replace(/^['\"(]+/g,\"\")),\"\"===(t=(t=t.replace(/[\\u200B-\\u200D\\uFEFF]/g,\"\")).trim())&&(t=e),t.replace(/([0-9]),([0-9])/g,\"$1$2\")}(o),o=n(o,e),o=qo(o),t.normal=o},Bo=/[ .][A-Z]\\.? *$/i,Do=/(?:\\u2026|\\.{2,}) *$/,Mo=/\\p{L}/u,Uo=/\\. *$/,Wo=/^[A-Z]\\. $/;var Io={one:{killUnicode:function(t,e){const n=e.model.one.unicode||{},o=(t=t||\"\").split(\"\");return o.forEach(((t,e)=>{n[t]&&(o[e]=n[t])})),o.join(\"\")},tokenize:{splitSentences:function(t,e){if(t=t||\"\",!(t=String(t))||\"string\"!=typeof t||!1===xo.test(t))return[];const n=function(t){const e=[],n=t.split(lo);for(let t=0;t<n.length;t++){const o=n[t].split(uo);for(let t=0;t<o.length;t++)o[t+1]&&!0===ao.test(o[t+1])&&(o[t]+=o[t+1],o[t+1]=\"\"),\"\"!==o[t]&&e.push(o[t])}return e}(t=t.replace(\" \",\" \"));let o=function(t){const e=[];for(let n=0;n<t.length;n++){const o=t[n];if(void 0!==o&&\"\"!==o){if(!1===fo.test(o)||!1===ho.test(o)){if(e[e.length-1]){e[e.length-1]+=o;continue}if(t[n+1]){t[n+1]=o+t[n+1];continue}}e.push(o)}}return e}(n);if(o=function(t,e){const n=e.methods.one.tokenize.isSentence,o=e.model.one.abbreviations||new Set,r=[];for(let e=0;e<t.length;e++){const s=t[e];!t[e+1]||n(s,o)||po(s)?s&&s.length>0&&(r.push(s),t[e]=\"\"):t[e+1]=s+(t[e+1]||\"\")}return r}(o,e),o=function(t){const e=[];for(let n=0;n<t.length;n+=1){const o=t[n].match(go);if(null!==o&&1===o.length){if(bo(t[n+1])&&t[n+1].length<280){t[n]+=t[n+1],e.push(t[n]),t[n+1]=\"\",n+=1;continue}if(bo(t[n+2])){const o=t[n+1]+t[n+2];if(o.length<280){t[n]+=o,e.push(t[n]),t[n+1]=\"\",t[n+2]=\"\",n+=2;continue}}}e.push(t[n])}return e}(o),o=function(t){const e=[];for(let n=0;n<t.length;n+=1){const o=t[n].match(yo);null!==o&&1===o.length&&t[n+1]&&t[n+1].length<250&&null!==t[n+1].match(vo)&&1===o.length&&!yo.test(t[n+1])?(t[n]+=t[n+1],e.push(t[n]),t[n+1]=\"\",n+=1):e.push(t[n])}return e}(o),0===o.length)return[t];for(let t=1;t<o.length;t+=1){const e=o[t].match(jo);null!==e&&(o[t-1]+=e[0],o[t]=o[t].replace(jo,\"\"))}return o},isSentence:function(t,e){if(!1===Mo.test(t))return!1;if(!0===Bo.test(t))return!1;if(3===t.length&&Wo.test(t))return!1;if(!0===Do.test(t))return!1;const n=t.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/,\"\").split(\" \"),o=n[n.length-1].toLowerCase();return!0!==e.hasOwnProperty(o)||!0!==Uo.test(t)},splitTerms:function(t,e){let n=[],o=[];if(\"number\"==typeof(t=t||\"\")&&(t=String(t)),function(t){return\"[object Array]\"===Object.prototype.toString.call(t)}(t))return t;const r=t.split(So);for(let t=0;t<r.length;t++)!0!==Eo(r[t],e)?o.push(r[t]):o=o.concat(Oo(r[t]));let s=\"\";for(let t=0;t<o.length;t++){const e=o[t];!0===Po.test(e)&&!1===zo.hasOwnProperty(e)&&!1===_o.test(e)?(n.length>0?(n[n.length-1]+=s,n.push(e)):n.push(s+e),s=\"\"):s+=e}return s&&(0===n.length&&(n[0]=\"\"),n[n.length-1]+=s),n=function(t){for(let e=1;e<t.length-1;e++)ko.test(t[e])&&(t[e-1]+=t[e]+t[e+1],t[e]=null,t[e+1]=null);return t}(n),n=function(t){const e=/^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?[-–—] ?$/,n=/^[0-9]{1,4}([a-z]{1,2})? ?$/;for(let o=0;o<t.length-1;o+=1)t[o+1]&&e.test(t[o])&&n.test(t[o+1])&&(t[o]=t[o]+t[o+1],t[o+1]=null);return t}(n),n=n.filter((t=>t)),n},splitWhitespace:(t,e)=>{const{str:n,pre:o,post:r}=function(t,e){const{prePunctuation:n,postPunctuation:o,emoticons:r}=e.one;let s=t,i=\"\",c=\"\";const u=Array.from(t);if(r.hasOwnProperty(t.trim()))return{str:t.trim(),pre:i,post:\" \"};let a=u.length;for(let t=0;t<a;t+=1){const t=u[0];if(!0!==n[t]){if((\"+\"===t||\"-\"===t)&&$o.test(u[1]))break;if(\"'\"===t&&3===t.length&&$o.test(u[1]))break;if(Ao.test(t)||$o.test(t))break;i+=u.shift()}}a=u.length;for(let t=0;t<a;t+=1){const t=u[u.length-1];if(!0!==o[t]){if(Ao.test(t)||$o.test(t))break;\".\"===t&&!0===To.test(s)||\"'\"===t&&!0===Co.test(s)||(c=u.pop()+c)}}return\"\"===(t=u.join(\"\"))&&(s=s.replace(/ *$/,(t=>(c=t||\"\",\"\"))),t=s,i=\"\"),{str:t,pre:i,post:c}}(t,e);return{text:n,pre:o,post:r,tags:new Set}},fromString:function(t,e){const{methods:n,model:o}=e,{splitSentences:r,splitTerms:s,splitWhitespace:i}=n.one.tokenize;return t=r(t=t||\"\",e).map((t=>{let n=s(t,o);return n=n.map((t=>i(t,o))),n.forEach((t=>{Go(t,e)})),n})),t}}}};const Ro={},Qo={};[[[\"approx\",\"apt\",\"bc\",\"cyn\",\"eg\",\"esp\",\"est\",\"etc\",\"ex\",\"exp\",\"prob\",\"pron\",\"gal\",\"min\",\"pseud\",\"fig\",\"jd\",\"lat\",\"lng\",\"vol\",\"fm\",\"def\",\"misc\",\"plz\",\"ea\",\"ps\",\"sec\",\"pt\",\"pref\",\"pl\",\"pp\",\"qt\",\"fr\",\"sq\",\"nee\",\"ss\",\"tel\",\"temp\",\"vet\",\"ver\",\"fem\",\"masc\",\"eng\",\"adj\",\"vb\",\"rb\",\"inf\",\"situ\",\"vivo\",\"vitro\",\"wr\"]],[[\"dl\",\"ml\",\"gal\",\"qt\",\"pt\",\"tbl\",\"tsp\",\"tbsp\",\"km\",\"dm\",\"cm\",\"mm\",\"mi\",\"td\",\"hr\",\"hrs\",\"kg\",\"hg\",\"dg\",\"cg\",\"mg\",\"µg\",\"lb\",\"oz\",\"sq ft\",\"hz\",\"mps\",\"mph\",\"kmph\",\"kb\",\"mb\",\"tb\",\"lx\",\"lm\",\"fl oz\",\"yb\"],\"Unit\"],[[\"ad\",\"al\",\"arc\",\"ba\",\"bl\",\"ca\",\"cca\",\"col\",\"corp\",\"ft\",\"fy\",\"ie\",\"lit\",\"ma\",\"md\",\"pd\",\"tce\"],\"Noun\"],[[\"adj\",\"adm\",\"adv\",\"asst\",\"atty\",\"bldg\",\"brig\",\"capt\",\"cmdr\",\"comdr\",\"cpl\",\"det\",\"dr\",\"esq\",\"gen\",\"gov\",\"hon\",\"jr\",\"llb\",\"lt\",\"maj\",\"messrs\",\"mlle\",\"mme\",\"mr\",\"mrs\",\"ms\",\"mstr\",\"phd\",\"prof\",\"pvt\",\"rep\",\"reps\",\"res\",\"rev\",\"sen\",\"sens\",\"sfc\",\"sgt\",\"sir\",\"sr\",\"supt\",\"surg\"],\"Honorific\"],[[\"jan\",\"feb\",\"mar\",\"apr\",\"jun\",\"jul\",\"aug\",\"sep\",\"sept\",\"oct\",\"nov\",\"dec\"],\"Month\"],[[\"dept\",\"univ\",\"assn\",\"bros\",\"inc\",\"ltd\",\"co\"],\"Organization\"],[[\"rd\",\"st\",\"dist\",\"mt\",\"ave\",\"blvd\",\"cl\",\"cres\",\"hwy\",\"ariz\",\"cal\",\"calif\",\"colo\",\"conn\",\"fla\",\"fl\",\"ga\",\"ida\",\"ia\",\"kan\",\"kans\",\"minn\",\"neb\",\"nebr\",\"okla\",\"penna\",\"penn\",\"pa\",\"dak\",\"tenn\",\"tex\",\"ut\",\"vt\",\"va\",\"wis\",\"wisc\",\"wy\",\"wyo\",\"usafa\",\"alta\",\"ont\",\"que\",\"sask\"],\"Place\"]].forEach((t=>{t[0].forEach((e=>{Ro[e]=!0,Qo[e]=\"Abbreviation\",void 0!==t[1]&&(Qo[e]=[Qo[e],t[1]])}))}));var Ho=[\"anti\",\"bi\",\"co\",\"contra\",\"de\",\"extra\",\"infra\",\"inter\",\"intra\",\"macro\",\"micro\",\"mis\",\"mono\",\"multi\",\"peri\",\"pre\",\"pro\",\"proto\",\"pseudo\",\"re\",\"sub\",\"supra\",\"trans\",\"tri\",\"un\",\"out\",\"ex\"].reduce(((t,e)=>(t[e]=!0,t)),{});const Zo={\"!\":\"¡\",\"?\":\"¿Ɂ\",'\"':'“”\"❝❞',\"'\":\"‘‛❛❜’\",\"-\":\"—–\",a:\"ªÀÁÂÃÄÅàáâãäåĀāĂăĄąǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАаѦѧӐӑӒӓƛæ\",b:\"ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ\",c:\"¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼϲϹϽϾСсєҀҁҪҫ\",d:\"ÐĎďĐđƉƊȡƋƌ\",e:\"ÈÉÊËèéêëĒēĔĕĖėĘęĚěƐȄȅȆȇȨȩɆɇΈΕΞΣέεξϵЀЁЕеѐёҼҽҾҿӖӗễ\",f:\"ƑƒϜϝӺӻҒғſ\",g:\"ĜĝĞğĠġĢģƓǤǥǦǧǴǵ\",h:\"ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ\",I:\"ÌÍÎÏ\",i:\"ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇіїi̇\",j:\"ĴĵǰȷɈɉϳЈј\",k:\"ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ\",l:\"ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ\",m:\"ΜϺϻМмӍӎ\",n:\"ÑñŃńŅņŇňŉŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ\",o:\"ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϴОФоѲѳӦӧӨөӪӫ\",p:\"ƤΡρϷϸϼРрҎҏÞ\",q:\"Ɋɋ\",r:\"ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ\",s:\"ŚśŜŝŞşŠšƧƨȘșȿЅѕ\",t:\"ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт\",u:\"ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰυϋύ\",v:\"νѴѵѶѷ\",w:\"ŴŵƜωώϖϢϣШЩшщѡѿ\",x:\"×ΧχϗϰХхҲҳӼӽӾӿ\",y:\"ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ\",z:\"ŹźŻżŽžƵƶȤȥɀΖ\"},Ko={};Object.keys(Zo).forEach((function(t){Zo[t].split(\"\").forEach((function(e){Ko[e]=t}))}));const Jo=/\\//,Xo=/[a-z]\\.[a-z]/i,Yo=/[0-9]/,tr=function(t,e){const n=t.normal||t.text||t.machine,o=e.model.one.aliases;if(o.hasOwnProperty(n)&&(t.alias=t.alias||[],t.alias.push(o[n])),Jo.test(n)&&!Xo.test(n)&&!Yo.test(n)){const e=n.split(Jo);e.length<=3&&e.forEach((e=>{\"\"!==(e=e.trim())&&(t.alias=t.alias||[],t.alias.push(e))}))}return t},er=/^\\p{Letter}+-\\p{Letter}+$/u,nr=function(t){let e=t.implicit||t.normal||t.text;e=e.replace(/['’]s$/,\"\"),e=e.replace(/s['’]$/,\"s\"),e=e.replace(/([aeiou][ktrp])in'$/,\"$1ing\"),er.test(e)&&(e=e.replace(/-/g,\"\")),e=e.replace(/^[#@]/,\"\"),e!==t.normal&&(t.machine=e)},or=function(t,e){const n=t.docs;for(let o=0;o<n.length;o+=1)for(let r=0;r<n[o].length;r+=1)e(n[o][r],t.world)},rr={alias:t=>or(t,tr),machine:t=>or(t,nr),normal:t=>or(t,Go),freq:function(t){const e=t.docs,n={};for(let t=0;t<e.length;t+=1)for(let o=0;o<e[t].length;o+=1){const r=e[t][o],s=r.machine||r.normal;n[s]=n[s]||0,n[s]+=1}for(let t=0;t<e.length;t+=1)for(let o=0;o<e[t].length;o+=1){const r=e[t][o],s=r.machine||r.normal;r.freq=n[s]}},offset:function(t){let e=0,n=0;const o=t.document;for(let t=0;t<o.length;t+=1)for(let r=0;r<o[t].length;r+=1){const s=o[t][r];s.offset={index:n,start:e+s.pre.length,length:s.text.length},e+=s.pre.length+s.text.length+s.post.length,n+=1}},index:function(t){const e=t.document;for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1)e[t][n].index=[t,n]},wordCount:function(t){let e=0;const n=t.docs;for(let t=0;t<n.length;t+=1)for(let o=0;o<n[t].length;o+=1)\"\"!==n[t][o].normal&&(e+=1,n[t][o].wordCount=e)}};var sr={compute:rr,methods:Io,model:{one:{aliases:{\"&\":\"and\",\"@\":\"at\",\"%\":\"percent\",plz:\"please\",bein:\"being\"},abbreviations:Ro,prefixes:Ho,suffixes:{like:!0,ish:!0,less:!0,able:!0,elect:!0,type:!0,designate:!0},prePunctuation:{\"#\":!0,\"@\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},postPunctuation:{\"%\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},lexicon:Qo,unicode:Ko,emoticons:{\"<3\":!0,\"</3\":!0,\"<\\\\3\":!0,\":^P\":!0,\":^p\":!0,\":^O\":!0,\":^3\":!0}}},hooks:[\"alias\",\"machine\",\"index\",\"id\"]};var ir={typeahead:function(t){const e=t.model.one.typeahead,n=t.docs;if(0===n.length||0===Object.keys(e).length)return;const o=n[n.length-1]||[],r=o[o.length-1];if(!r.post&&e.hasOwnProperty(r.normal)){const n=e[r.normal];r.implicit=n,r.machine=n,r.typeahead=!0,t.compute.preTagger&&t.last().unTag(\"*\").compute([\"lexicon\",\"preTagger\"])}}};const cr=function(){const t=this.docs;if(0===t.length)return this;const e=t[t.length-1]||[],n=e[e.length-1];return!0===n.typeahead&&n.machine&&(n.text=n.machine,n.normal=n.machine),this},ur={safe:!0,min:3};var ar={typeahead:function(t=[],e={}){const n=this.model();var o;e=Object.assign({},ur,e),o=t,\"[object Object]\"===Object.prototype.toString.call(o)&&(Object.assign(n.one.lexicon,t),t=Object.keys(t));const r=function(t,e,n){let o={};const r=[],s=n.prefixes||{};return t.forEach((t=>{let i=(t=t.toLowerCase().trim()).length;e.max&&i>e.max&&(i=e.max);for(let c=e.min;c<i;c+=1){const i=t.substring(0,c);e.safe&&n.model.one.lexicon.hasOwnProperty(i)||(!0!==s.hasOwnProperty(i)&&!0!==o.hasOwnProperty(i)?o[i]=t:r.push(i))}})),o=Object.assign({},s,o),r.forEach((t=>{delete o[t]})),o}(t,e,this.world());return Object.keys(r).forEach((t=>{n.one.typeahead.hasOwnProperty(t)?delete n.one.typeahead[t]:n.one.typeahead[t]=r[t]})),this}};var lr={model:{one:{typeahead:{}}},api:function(t){t.prototype.autoFill=cr},lib:ar,compute:ir,hooks:[\"typeahead\"]};h.extend(W),h.extend(yn),h.extend(We),h.extend(zn),h.extend(co),h.plugin(yt),h.extend(sr),h.extend(Ot),h.plugin(d),h.extend(qt),h.extend(lr),h.extend(Tt),h.extend(Cn);export{h as default};\n"
  },
  {
    "path": "builds/three/compromise-three.cjs",
    "content": "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).nlp=t()}(this,(function(){\"use strict\";var e={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const t={compute:function(e){const{world:t}=this,n=t.compute;return\"string\"==typeof e&&n.hasOwnProperty(e)?n[e](this):(e=>\"[object Array]\"===Object.prototype.toString.call(e))(e)?e.forEach((r=>{t.compute.hasOwnProperty(r)?n[r](this):console.warn(\"no compute:\",e)})):\"function\"==typeof e?e(this):console.warn(\"no compute:\",e),this}};var n={forEach:function(e){return this.fullPointer.forEach(((t,n)=>{const r=this.update([t]);e(r,n)})),this},map:function(e,t){const n=this.fullPointer.map(((t,n)=>{const r=this.update([t]),o=e(r,n);return void 0===o?this.none():o}));if(0===n.length)return t||this.update([]);if(void 0!==n[0]){if(\"string\"==typeof n[0])return n;if(\"object\"==typeof n[0]&&(null===n[0]||!n[0].isView))return n}let r=[];return n.forEach((e=>{r=r.concat(e.fullPointer)})),this.toView(r)},filter:function(e){let t=this.fullPointer;t=t.filter(((t,n)=>{const r=this.update([t]);return e(r,n)}));return this.update(t)},find:function(e){const t=this.fullPointer.find(((t,n)=>{const r=this.update([t]);return e(r,n)}));return this.update([t])},some:function(e){return this.fullPointer.some(((t,n)=>{const r=this.update([t]);return e(r,n)}))},random:function(e=1){let t=this.fullPointer,n=Math.floor(Math.random()*t.length);return n+e>this.length&&(n=this.length-e,n=n<0?0:n),t=t.slice(n,n+e),this.update(t)}};const r={termList:function(){return this.methods.one.termList(this.docs)},terms:function(e){const t=this.match(\".\");return\"number\"==typeof e?t.eq(e):t},groups:function(e){if(e||0===e)return this.update(this._groups[e]||[]);const t={};return Object.keys(this._groups).forEach((e=>{t[e]=this.update(this._groups[e])})),t},eq:function(e){let t=this.pointer;return t||(t=this.docs.map(((e,t)=>[t]))),t[e]?this.update([t[e]]):this.none()},first:function(){return this.eq(0)},last:function(){const e=this.fullPointer.length-1;return this.eq(e)},firstTerms:function(){return this.match(\"^.\")},lastTerms:function(){return this.match(\".$\")},slice:function(e,t){let n=this.pointer||this.docs.map(((e,t)=>[t]));return n=n.slice(e,t),this.update(n)},all:function(){return this.update().toView()},fullSentences:function(){const e=this.fullPointer.map((e=>[e[0]]));return this.update(e).toView()},none:function(){return this.update([])},isDoc:function(e){if(!e||!e.isView)return!1;const t=this.fullPointer,n=e.fullPointer;return!t.length!==n.length&&t.every(((e,t)=>!!n[t]&&(e[0]===n[t][0]&&e[1]===n[t][1]&&e[2]===n[t][2])))},wordCount:function(){return this.docs.reduce(((e,t)=>(e+=t.filter((e=>\"\"!==e.text)).length,e)),0)},isFull:function(){const e=this.pointer;if(!e)return!0;if(0===e.length||0!==e[0][0])return!1;let t=0,n=0;return this.document.forEach((e=>t+=e.length)),this.docs.forEach((e=>n+=e.length)),t===n},getNth:function(e){return\"number\"==typeof e?this.eq(e):\"string\"==typeof e?this.if(e):this}};r.group=r.groups,r.fullSentence=r.fullSentences,r.sentence=r.fullSentences,r.lastTerm=r.lastTerms,r.firstTerm=r.firstTerms;const o=Object.assign({},r,t,n);o.get=o.eq;class View{constructor(t,n,r={}){[[\"document\",t],[\"world\",e],[\"_groups\",r],[\"_cache\",null],[\"viewType\",\"View\"]].forEach((e=>{Object.defineProperty(this,e[0],{value:e[1],writable:!0})})),this.ptrs=n}get docs(){let t=this.document;return this.ptrs&&(t=e.methods.one.getDoc(this.ptrs,this.document)),t}get pointer(){return this.ptrs}get methods(){return this.world.methods}get model(){return this.world.model}get hooks(){return this.world.hooks}get isView(){return!0}get found(){return this.docs.length>0}get length(){return this.docs.length}get fullPointer(){const{docs:e,ptrs:t,document:n}=this,r=t||e.map(((e,t)=>[t]));return r.map((e=>{let[t,r,o,a,i]=e;return r=r||0,o=o||(n[t]||[]).length,n[t]&&n[t][r]&&(a=a||n[t][r].id,n[t][o-1]&&(i=i||n[t][o-1].id)),[t,r,o,a,i]}))}update(e){const t=new View(this.document,e);if(this._cache&&e&&e.length>0){const n=[];e.forEach(((e,t)=>{const[r,o,a]=e;(1===e.length||0===o&&this.document[r].length===a)&&(n[t]=this._cache[r])})),n.length>0&&(t._cache=n)}return t.world=this.world,t}toView(e){return new View(this.document,e||this.pointer)}fromText(e){const{methods:t}=this,n=t.one.tokenize.fromString(e,this.world),r=new View(n);return r.world=this.world,r.compute([\"normal\",\"freeze\",\"lexicon\"]),this.world.compute.preTagger&&r.compute(\"preTagger\"),r.compute(\"unfreeze\"),r}clone(){let e=this.document.slice(0);e=e.map((e=>e.map((e=>((e=Object.assign({},e)).tags=new Set(e.tags),e)))));const t=this.update(this.pointer);return t.document=e,t._cache=this._cache,t}}Object.assign(View.prototype,o);const a=function(e){return e&&\"object\"==typeof e&&!Array.isArray(e)};function i(e,t){if(a(t))for(const n in t)a(t[n])?(e[n]||Object.assign(e,{[n]:{}}),i(e[n],t[n])):Object.assign(e,{[n]:t[n]});return e}const s=function(e,t,n,r){if(o=e,\"[object Array]\"===Object.prototype.toString.call(o))return void e.forEach((e=>s(e,t,n,r)));var o;const{methods:a,model:l,compute:u,hooks:c}=t;e.methods&&function(e,t){for(const n in t)e[n]=e[n]||{},Object.assign(e[n],t[n])}(a,e.methods),e.model&&i(l,e.model),e.irregulars&&function(e,t){const n=e.two.models||{};Object.keys(t).forEach((e=>{t[e].pastTense&&(n.toPast&&(n.toPast.ex[e]=t[e].pastTense),n.fromPast&&(n.fromPast.ex[t[e].pastTense]=e)),t[e].presentTense&&(n.toPresent&&(n.toPresent.ex[e]=t[e].presentTense),n.fromPresent&&(n.fromPresent.ex[t[e].presentTense]=e)),t[e].gerund&&(n.toGerund&&(n.toGerund.ex[e]=t[e].gerund),n.fromGerund&&(n.fromGerund.ex[t[e].gerund]=e)),t[e].comparative&&(n.toComparative&&(n.toComparative.ex[e]=t[e].comparative),n.fromComparative&&(n.fromComparative.ex[t[e].comparative]=e)),t[e].superlative&&(n.toSuperlative&&(n.toSuperlative.ex[e]=t[e].superlative),n.fromSuperlative&&(n.fromSuperlative.ex[t[e].superlative]=e))}))}(l,e.irregulars),e.compute&&Object.assign(u,e.compute),c&&(t.hooks=c.concat(e.hooks||[])),e.api&&e.api(n),e.lib&&Object.keys(e.lib).forEach((t=>r[t]=e.lib[t])),e.tags&&r.addTags(e.tags),e.words&&r.addWords(e.words),e.frozen&&r.addWords(e.frozen,!0),e.mutate&&e.mutate(t,r)},l=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},u=function(e,t,n){const{methods:r}=n,o=new t([]);if(o.world=n,\"number\"==typeof e&&(e=String(e)),!e)return o;if(\"string\"==typeof e){return new t(r.one.tokenize.fromString(e,n))}if(a=e,\"[object Object]\"===Object.prototype.toString.call(a)&&e.isView)return new t(e.document,e.ptrs);var a;if(l(e)){if(l(e[0])){const n=e.map((e=>e.map((e=>({text:e,normal:e,pre:\"\",post:\" \",tags:new Set})))));return new t(n)}const n=e.map((e=>e.terms.map((e=>(l(e.tags)&&(e.tags=new Set(e.tags)),e)))));return new t(n)}return o},c=Object.assign({},e),h=function(e,t){t&&h.addWords(t);const n=u(e,View,c);return e&&n.compute(c.hooks),n};Object.defineProperty(h,\"_world\",{value:c,writable:!0}),h.tokenize=function(e,t){const{compute:n}=this._world;t&&h.addWords(t);const r=u(e,View,c);return n.contractions&&r.compute([\"alias\",\"normal\",\"machine\",\"contractions\"]),r},h.plugin=function(e){return s(e,this._world,View,this),this},h.extend=h.plugin,h.world=function(){return this._world},h.model=function(){return this._world.model},h.methods=function(){return this._world.methods},h.hooks=function(){return this._world.hooks},h.verbose=function(e){const t=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};return t.DEBUG_TAGS=\"tagger\"===e||!0===e||\"\",t.DEBUG_MATCH=\"match\"===e||!0===e||\"\",t.DEBUG_CHUNKS=\"chunker\"===e||!0===e||\"\",this},h.version=\"14.15.0\";var d={one:{cacheDoc:function(e){const t=e.map((e=>{const t=new Set;return e.forEach((e=>{\"\"!==e.normal&&t.add(e.normal),e.switch&&t.add(`%${e.switch}%`),e.implicit&&t.add(e.implicit),e.machine&&t.add(e.machine),e.root&&t.add(e.root),e.alias&&e.alias.forEach((e=>t.add(e)));const n=Array.from(e.tags);for(let e=0;e<n.length;e+=1)t.add(\"#\"+n[e])})),t}));return t}}};const m={cache:function(){return this._cache=this.methods.one.cacheDoc(this.document),this},uncache:function(){return this._cache=null,this}};var p={api:function(e){Object.assign(e.prototype,m)},compute:{cache:function(e){e._cache=e.methods.one.cacheDoc(e.document)}},methods:d};const f=e=>/^\\p{Lu}[\\p{Ll}'’]/u.test(e)||/^\\p{Lu}$/u.test(e),b=(e,t,n)=>{if(n.forEach((e=>e.dirty=!0)),e){const r=[t,0].concat(n);Array.prototype.splice.apply(e,r)}return e},v=function(e){const t=e[e.length-1];!t||/ $/.test(t.post)||/[-–—]/.test(t.post)||(t.post+=\" \")},y=(e,t,n)=>{const r=/[-.?!,;:)–—'\"]/g,o=e[t-1];if(!o)return;const a=o.post;if(r.test(a)){const e=a.match(r).join(\"\"),t=n[n.length-1];t.post=e+t.post,o.post=o.post.replace(r,\"\")}},w=function(e,t,n,r){const[o,a,i]=t;0===a||i===r[o].length?v(n):(v(n),v([e[t[1]]])),function(e,t,n){const r=e[t];if(0!==t||!f(r.text))return;n[0].text=n[0].text.replace(/^\\p{Ll}/u,(e=>e.toUpperCase()));const o=e[t];o.tags.has(\"ProperNoun\")||o.tags.has(\"Acronym\")||f(o.text)&&o.text.length>1&&(o.text=(a=o.text,a.replace(/^\\p{Lu}/u,(e=>e.toLowerCase()))));var a}(e,a,n),b(e,a,n)};let k=0;const P=e=>(e=e.length<3?\"0\"+e:e).length<3?\"0\"+e:e,A=function(e){let[t,n]=e.index||[0,0];k+=1,k=k>46655?0:k,t=t>46655?0:t,n=n>1294?0:n;let r=P(k.toString(36));r+=P(t.toString(36));let o=n.toString(36);o=o.length<2?\"0\"+o:o,r+=o;return r+=parseInt(36*Math.random(),10).toString(36),e.normal+\"|\"+r.toUpperCase()},C=function(e){if(e.has(\"@hasContraction\")&&\"function\"==typeof e.contractions){e.grow(\"@hasContraction\").contractions().expand()}},N=e=>\"[object Array]\"===Object.prototype.toString.call(e),j=function(e,t,n){const{document:r,world:o}=t;t.uncache();const a=t.fullPointer,i=t.fullPointer;t.forEach(((s,l)=>{const u=s.fullPointer[0],[c]=u,h=r[c];let d=function(e,t){const{methods:n}=t;return\"string\"==typeof e?n.one.tokenize.fromString(e,t)[0]:\"object\"==typeof e&&e.isView?e.clone().docs[0]||[]:N(e)?N(e[0])?e[0]:e:[]}(e,o);0!==d.length&&(d=function(e){return e.map((e=>(e.id=A(e),e)))}(d),n?(C(t.update([u]).firstTerm()),w(h,u,d,r)):(C(t.update([u]).lastTerm()),function(e,t,n,r){const[o,,a]=t,i=(r[o]||[]).length;a<i?(y(e,a,n),v(n)):i===a&&(v(e),y(e,a,n),r[o+1]&&(n[n.length-1].post+=\" \")),b(e,t[2],n),t[4]=n[n.length-1].id}(h,u,d,r)),r[c]&&r[c][u[1]]&&(u[3]=r[c][u[1]].id),i[l]=u,u[2]+=d.length,a[l]=u)}));const s=t.toView(a);return t.ptrs=i,s.compute([\"id\",\"index\",\"freeze\",\"lexicon\"]),s.world.compute.preTagger&&s.compute(\"preTagger\"),s.compute(\"unfreeze\"),s},x={insertAfter:function(e){return j(e,this,!1)},insertBefore:function(e){return j(e,this,!0)}};x.append=x.insertAfter,x.prepend=x.insertBefore,x.insert=x.insertAfter;const I=/\\$[0-9a-z]+/g,T={},D=e=>e.replace(/^\\p{Ll}/u,(e=>e.toUpperCase())),H=e=>e.replace(/^\\p{Lu}/u,(e=>e.toLowerCase()));T.replaceWith=function(e,t={}){let n=this.fullPointer;const r=this;if(this.uncache(),\"function\"==typeof e)return function(e,t,n){return e.forEach((e=>{const r=t(e);e.replaceWith(r,n)})),e}(r,e,t);const o=r.docs[0];if(!o)return r;const a=t.possessives&&o[o.length-1].tags.has(\"Possessive\"),i=t.case&&(s=o[0].text,/^\\p{Lu}[\\p{Ll}'’]/u.test(s)||/^\\p{Lu}$/u.test(s));var s;e=function(e,t){if(\"string\"!=typeof e)return e;const n=t.groups();return e=e.replace(I,(e=>{const t=e.replace(/\\$/,\"\");return n.hasOwnProperty(t)?n[t].text():e})),e}(e,r);const l=this.update(n);n=n.map((e=>e.slice(0,3)));const u=(l.docs[0]||[]).map((e=>Array.from(e.tags))),c=l.docs[0][0].pre,h=l.docs[0][l.docs[0].length-1].post;if(\"string\"==typeof e&&(e=this.fromText(e).compute(\"id\")),r.insertAfter(e),l.has(\"@hasContraction\")&&r.contractions){r.grow(\"@hasContraction+\").contractions().expand()}if(r.delete(l),a){const e=r.docs[0],t=e[e.length-1];t.tags.has(\"Possessive\")||(t.text+=\"'s\",t.normal+=\"'s\",t.tags.add(\"Possessive\"))}if(c&&r.docs[0]&&(r.docs[0][0].pre=c),h&&r.docs[0]){const e=r.docs[0][r.docs[0].length-1];e.post.trim()||(e.post=h)}const d=r.toView(n).compute([\"index\",\"freeze\",\"lexicon\"]);if(d.world.compute.preTagger&&d.compute(\"preTagger\"),d.compute(\"unfreeze\"),t.tags&&d.terms().forEach(((e,t)=>{e.tagSafe(u[t])})),!d.docs[0]||!d.docs[0][0])return d;if(t.case){const e=i?D:H;d.docs[0][0].text=e(d.docs[0][0].text)}return d},T.replace=function(e,t,n){if(e&&!t)return this.replaceWith(e,n);const r=this.match(e);return r.found?(this.soften(),r.replaceWith(t,n)):this};const E={remove:function(e){const{indexN:t}=this.methods.one.pointer;this.uncache();let n=this.all(),r=this;e&&(n=this,r=this.match(e));const o=!n.ptrs;if(r.has(\"@hasContraction\")&&r.contractions){r.grow(\"@hasContraction\").contractions().expand()}let a=n.fullPointer;const i=r.fullPointer.reverse(),s=function(e,t){t.forEach((t=>{const[n,r,o]=t,a=o-r;e[n]&&(o===e[n].length&&o>1&&function(e,t){const n=e.length-1,r=e[n],o=e[n-t];o&&r&&(o.post+=r.post,o.post=o.post.replace(/ +([.?!,;:])/,\"$1\"),o.post=o.post.replace(/[,;:]+([.?!])/,\"$1\"))}(e[n],a),e[n].splice(r,a))}));for(let t=e.length-1;t>=0;t-=1)if(0===e[t].length&&(e.splice(t,1),t===e.length&&e[t-1])){const n=e[t-1],r=n[n.length-1];r&&(r.post=r.post.trimEnd())}return e}(this.document,i);if(a=function(e,t){return e=e.map((e=>{const[n]=e;return t[n]?(t[n].forEach((t=>{const n=t[2]-t[1];e[1]<=t[1]&&e[2]>=t[2]&&(e[2]-=n)})),e):e})),e.forEach(((t,n)=>{if(0===t[1]&&0==t[2])for(let t=n+1;t<e.length;t+=1)e[t][0]-=1,e[t][0]<0&&(e[t][0]=0)})),e=(e=e.filter((e=>e[2]-e[1]>0))).map((e=>(e[3]=null,e[4]=null,e)))}(a,t(i)),n.ptrs=a,n.document=s,n.compute(\"index\"),o&&(n.ptrs=void 0),!e)return this.ptrs=[],n.none();return n.toView(a)}};E.delete=E.remove;const G={pre:function(e,t){return void 0===e&&this.found?this.docs[0][0].pre:(this.docs.forEach((n=>{const r=n[0];!0===t?r.pre+=e:r.pre=e})),this)},post:function(e,t){if(void 0===e){const e=this.docs[this.docs.length-1];return e[e.length-1].post}return this.docs.forEach((n=>{const r=n[n.length-1];!0===t?r.post+=e:r.post=e})),this},trim:function(){if(!this.found)return this;const e=this.docs,t=e[0][0];t.pre=t.pre.trimStart();const n=e[e.length-1],r=n[n.length-1];return r.post=r.post.trimEnd(),this},hyphenate:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.pre=\"\"),e[n+1]&&(t.post=\"-\")}))})),this},dehyphenate:function(){const e=/[-–—]/;return this.docs.forEach((t=>{t.forEach((t=>{e.test(t.post)&&(t.post=\" \")}))})),this},toQuotations:function(e,t){return e=e||'\"',t=t||'\"',this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const r=n[n.length-1];r.post=t+r.post})),this},toParentheses:function(e,t){return e=e||\"(\",t=t||\")\",this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const r=n[n.length-1];r.post=t+r.post})),this}};G.deHyphenate=G.dehyphenate,G.toQuotation=G.toQuotations;var O={alpha:(e,t)=>e.normal<t.normal?-1:e.normal>t.normal?1:0,length:(e,t)=>{const n=e.normal.trim().length,r=t.normal.trim().length;return n<r?1:n>r?-1:0},wordCount:(e,t)=>e.words<t.words?1:e.words>t.words?-1:0,sequential:(e,t)=>e[0]<t[0]?1:e[0]>t[0]?-1:e[1]>t[1]?1:-1,byFreq:function(e){const t={};return e.forEach((e=>{t[e.normal]=t[e.normal]||0,t[e.normal]+=1})),e.sort(((e,n)=>{const r=t[e.normal],o=t[n.normal];return r<o?1:r>o?-1:0})),e}};const F=new Set([\"index\",\"sequence\",\"seq\",\"sequential\",\"chron\",\"chronological\"]),V=new Set([\"freq\",\"frequency\",\"topk\",\"repeats\"]),z=new Set([\"alpha\",\"alphabetical\"]);var B={unique:function(){const e=new Set,t=this.filter((t=>{const n=t.text(\"machine\");return!e.has(n)&&(e.add(n),!0)}));return t},reverse:function(){let e=this.pointer||this.docs.map(((e,t)=>[t]));return e=[].concat(e),e=e.reverse(),this._cache&&(this._cache=this._cache.reverse()),this.update(e)},sort:function(e){const{docs:t,pointer:n}=this;if(this.uncache(),\"function\"==typeof e)return function(e,t){let n=e.fullPointer;return n=n.sort(((n,r)=>(n=e.update([n]),r=e.update([r]),t(n,r)))),e.ptrs=n,e}(this,e);e=e||\"alpha\";const r=n||t.map(((e,t)=>[t]));let o=t.map(((e,t)=>({index:t,words:e.length,normal:e.map((e=>e.machine||e.normal||\"\")).join(\" \"),pointer:r[t]})));return F.has(e)&&(e=\"sequential\"),z.has(e)&&(e=\"alpha\"),V.has(e)?(o=O.byFreq(o),this.update(o.map((e=>e.pointer)))):\"function\"==typeof O[e]?(o=o.sort(O[e]),this.update(o.map((e=>e.pointer)))):this}};const S=function(e,t){if(e.length>0){const t=e[e.length-1],n=t[t.length-1];!1===/ /.test(n.post)&&(n.post+=\" \")}return e=e.concat(t)};var $={concat:function(e){if(\"string\"==typeof e){const t=this.fromText(e);if(this.found&&this.ptrs){const e=this.fullPointer,n=e[e.length-1][0];this.document.splice(n,0,...t.document)}else this.document=this.document.concat(t.document);return this.all().compute(\"index\")}if(\"object\"==typeof e&&e.isView)return function(e,t){if(e.document===t.document){const n=e.fullPointer.concat(t.fullPointer);return e.toView(n).compute(\"index\")}return t.fullPointer.forEach((t=>{t[0]+=e.document.length})),e.document=S(e.document,t.docs),e.all()}(this,e);if(t=e,\"[object Array]\"===Object.prototype.toString.call(t)){const t=S(this.document,e);return this.document=t,this.all()}var t;return this}};var M={harden:function(){return this.ptrs=this.fullPointer,this},soften:function(){let e=this.ptrs;return!e||e.length<1||(e=e.map((e=>e.slice(0,3))),this.ptrs=e),this}};const L=Object.assign({},{toLowerCase:function(){return this.termList().forEach((e=>{e.text=e.text.toLowerCase()})),this},toUpperCase:function(){return this.termList().forEach((e=>{e.text=e.text.toUpperCase()})),this},toTitleCase:function(){return this.termList().forEach((e=>{e.text=e.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))})),this},toCamelCase:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.text=t.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))),n!==e.length-1&&(t.post=\"\")}))})),this}},x,T,E,G,B,$,M),K={id:function(e){const t=e.docs;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1){const r=t[e][n];r.id=r.id||A(r)}}};var J={api:function(e){Object.assign(e.prototype,L)},compute:K};const W=!0;var q={one:{contractions:[{word:\"@\",out:[\"at\"]},{word:\"arent\",out:[\"are\",\"not\"]},{word:\"alot\",out:[\"a\",\"lot\"]},{word:\"brb\",out:[\"be\",\"right\",\"back\"]},{word:\"cannot\",out:[\"can\",\"not\"]},{word:\"dun\",out:[\"do\",\"not\"]},{word:\"can't\",out:[\"can\",\"not\"]},{word:\"shan't\",out:[\"should\",\"not\"]},{word:\"won't\",out:[\"will\",\"not\"]},{word:\"that's\",out:[\"that\",\"is\"]},{word:\"what's\",out:[\"what\",\"is\"]},{word:\"let's\",out:[\"let\",\"us\"]},{word:\"dunno\",out:[\"do\",\"not\",\"know\"]},{word:\"gonna\",out:[\"going\",\"to\"]},{word:\"gotta\",out:[\"have\",\"got\",\"to\"]},{word:\"gimme\",out:[\"give\",\"me\"]},{word:\"outta\",out:[\"out\",\"of\"]},{word:\"tryna\",out:[\"trying\",\"to\"]},{word:\"gtg\",out:[\"got\",\"to\",\"go\"]},{word:\"im\",out:[\"i\",\"am\"]},{word:\"imma\",out:[\"I\",\"will\"]},{word:\"imo\",out:[\"in\",\"my\",\"opinion\"]},{word:\"irl\",out:[\"in\",\"real\",\"life\"]},{word:\"ive\",out:[\"i\",\"have\"]},{word:\"rn\",out:[\"right\",\"now\"]},{word:\"tbh\",out:[\"to\",\"be\",\"honest\"]},{word:\"wanna\",out:[\"want\",\"to\"]},{word:\"c'mere\",out:[\"come\",\"here\"]},{word:\"c'mon\",out:[\"come\",\"on\"]},{word:\"shoulda\",out:[\"should\",\"have\"]},{word:\"coulda\",out:[\"coulda\",\"have\"]},{word:\"woulda\",out:[\"woulda\",\"have\"]},{word:\"musta\",out:[\"must\",\"have\"]},{word:\"tis\",out:[\"it\",\"is\"]},{word:\"twas\",out:[\"it\",\"was\"]},{word:\"y'know\",out:[\"you\",\"know\"]},{word:\"ne'er\",out:[\"never\"]},{word:\"o'er\",out:[\"over\"]},{after:\"ll\",out:[\"will\"]},{after:\"ve\",out:[\"have\"]},{after:\"re\",out:[\"are\"]},{after:\"m\",out:[\"am\"]},{before:\"c\",out:[\"ce\"]},{before:\"m\",out:[\"me\"]},{before:\"n\",out:[\"ne\"]},{before:\"qu\",out:[\"que\"]},{before:\"s\",out:[\"se\"]},{before:\"t\",out:[\"tu\"]},{word:\"shouldnt\",out:[\"should\",\"not\"]},{word:\"couldnt\",out:[\"could\",\"not\"]},{word:\"wouldnt\",out:[\"would\",\"not\"]},{word:\"hasnt\",out:[\"has\",\"not\"]},{word:\"wasnt\",out:[\"was\",\"not\"]},{word:\"isnt\",out:[\"is\",\"not\"]},{word:\"cant\",out:[\"can\",\"not\"]},{word:\"dont\",out:[\"do\",\"not\"]},{word:\"wont\",out:[\"will\",\"not\"]},{word:\"howd\",out:[\"how\",\"did\"]},{word:\"whatd\",out:[\"what\",\"did\"]},{word:\"whend\",out:[\"when\",\"did\"]},{word:\"whered\",out:[\"where\",\"did\"]}],numberSuffixes:{st:W,nd:W,rd:W,th:W,am:W,pm:W,max:W,\"°\":W,s:W,e:W,er:W,\"ère\":W,\"ème\":W}}};const U=function(e,t,n){const[r,o]=t;n&&0!==n.length&&(n=n.map(((e,t)=>(e.implicit=e.text,e.machine=e.text,e.pre=\"\",e.post=\"\",e.text=\"\",e.normal=\"\",e.index=[r,o+t],e))),n[0]&&(n[0].pre=e[r][o].pre,n[n.length-1].post=e[r][o].post,n[0].text=e[r][o].text,n[0].normal=e[r][o].normal),e[r].splice(o,1,...n))},R=/'/,Q=new Set([\"what\",\"how\",\"when\",\"where\",\"why\"]),Z=new Set([\"be\",\"go\",\"start\",\"think\",\"need\"]),_=new Set([\"been\",\"gone\"]),X=/'/,Y=/(e|é|aison|sion|tion)$/,ee=/(age|isme|acle|ege|oire)$/;var te=(e,t)=>[\"je\",e[t].normal.split(X)[1]],ne=(e,t)=>{const n=e[t].normal.split(X)[1];return n&&n.endsWith(\"e\")?[\"la\",n]:[\"le\",n]},re=(e,t)=>{const n=e[t].normal.split(X)[1];return n&&Y.test(n)&&!ee.test(n)?[\"du\",n]:n&&n.endsWith(\"s\")?[\"des\",n]:[\"de\",n]};const oe=/^([0-9.]{1,4}[a-z]{0,2}) ?[-–—] ?([0-9]{1,4}[a-z]{0,2})$/i,ae=/^([0-9]{1,2}(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9]{1,2}(:[0-9][0-9])?(am|pm)?)$/i,ie=/^[0-9]{3}-[0-9]{4}$/,se=function(e,t){const n=e[t];let r=n.text.match(oe);return null!==r?!0===n.tags.has(\"PhoneNumber\")||ie.test(n.text)?null:[r[1],\"to\",r[2]]:(r=n.text.match(ae),null!==r?[r[1],\"to\",r[4]]:null)},le=/^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/,ue=function(e,t,n){const r=n.model.one.numberSuffixes||{},o=e[t].text.match(le);if(null!==o){const e=o[2].toLowerCase().trim();return r.hasOwnProperty(e)?null:[o[1],e]}return null},ce=/'/,he=/^[0-9][^-–—]*[-–—].*?[0-9]/,de=function(e,t,n,r){const o=t.update();o.document=[e];let a=n+r;n>0&&(n-=1),e[a]&&(a+=1),o.ptrs=[[0,n,a]]},ge={t:(e,t)=>function(e,t){return\"ain't\"===e[t].normal||\"aint\"===e[t].normal?null:[e[t].normal.replace(/n't/,\"\"),\"not\"]}(e,t),d:(e,t)=>function(e,t){const n=e[t].normal.split(R)[0];if(Q.has(n))return[n,\"did\"];if(e[t+1]){if(_.has(e[t+1].normal))return[n,\"had\"];if(Z.has(e[t+1].normal))return[n,\"would\"]}return null}(e,t)},me={j:(e,t)=>te(e,t),l:(e,t)=>ne(e,t),d:(e,t)=>re(e,t)},pe=function(e,t,n,r){for(let o=0;o<e.length;o+=1){const a=e[o];if(a.word===t.normal)return a.out;if(null!==r&&r===a.after)return[n].concat(a.out);if(null!==n&&n===a.before&&r&&r.length>2)return a.out.concat(r)}return null},fe=function(e,t){const n=t.fromText(e.join(\" \"));return n.compute([\"id\",\"alias\"]),n.docs[0]},be=function(e,t){for(let n=t+1;n<5&&e[n];n+=1)if(\"been\"===e[n].normal)return[\"there\",\"has\"];return[\"there\",\"is\"]};var ve={contractions:e=>{const{world:t,document:n}=e,{model:r,methods:o}=t,a=r.one.contractions||[];n.forEach(((r,i)=>{for(let s=r.length-1;s>=0;s-=1){let l=null,u=null;if(!0===ce.test(r[s].normal)){const e=r[s].normal.split(ce);l=e[0],u=e[1]}let c=pe(a,r[s],l,u);!c&&ge.hasOwnProperty(u)&&(c=ge[u](r,s,t)),!c&&me.hasOwnProperty(l)&&(c=me[l](r,s)),\"there\"===l&&\"s\"===u&&(c=be(r,s)),c?(c=fe(c,e),U(n,[i,s],c),de(n[i],e,s,c.length)):he.test(r[s].normal)?(c=se(r,s),c&&(c=fe(c,e),U(n,[i,s],c),o.one.setTag(c,\"NumberRange\",t),c[2]&&c[2].tags.has(\"Time\")&&o.one.setTag([c[0]],\"Time\",t,null,\"time-range\"),de(n[i],e,s,c.length))):(c=ue(r,s,t),c&&(c=fe(c,e),U(n,[i,s],c),o.one.setTag([c[1]],\"Unit\",t,null,\"contraction-unit\")))}}))}};const ye={model:q,compute:ve,hooks:[\"contractions\"]},we=function(e){const t=e.world,{model:n,methods:r}=e.world,o=r.one.setTag,{frozenLex:a}=n.one,i=n.one._multiCache||{};e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const r=e[n],s=r.machine||r.normal;if(void 0!==i[s]&&e[n+1]){for(let r=n+i[s]-1;r>n;r-=1){const i=e.slice(n,r+1),s=i.map((e=>e.machine||e.normal)).join(\" \");!0!==a.hasOwnProperty(s)||(o(i,a[s],t,!1,\"1-frozen-multi-lexicon\"),i.forEach((e=>e.frozen=!0)))}}void 0!==a[s]&&a.hasOwnProperty(s)&&(o([r],a[s],t,!1,\"1-freeze-lexicon\"),r.frozen=!0)}}))};const ke=e=>\"\u001b[34m\"+e+\"\u001b[0m\",Pe=e=>\"\u001b[3m\u001b[2m\"+e+\"\u001b[0m\",Ae=function(e){e.docs.forEach((e=>{console.log(ke(\"\\n  ┌─────────\")),e.forEach((e=>{let t=`  ${Pe(\"│\")}  `;const n=e.implicit||e.text||\"-\";!0===e.frozen?t+=`${ke(n)} ❄️`:t+=Pe(n),console.log(t)}))}))};var Ce={compute:{frozen:we,freeze:we,unfreeze:function(e){return e.docs.forEach((e=>{e.forEach((e=>{delete e.frozen}))})),e}},mutate:e=>{const t=e.methods.one;t.termMethods.isFrozen=e=>!0===e.frozen,t.debug.freeze=Ae,t.debug.frozen=Ae},api:function(e){e.prototype.freeze=function(){return this.docs.forEach((e=>{e.forEach((e=>{e.frozen=!0}))})),this},e.prototype.unfreeze=function(){this.compute(\"unfreeze\")},e.prototype.isFrozen=function(){return this.match(\"@isFrozen+\")}},hooks:[\"freeze\"]};const Ne=function(e,t,n){const{model:r,methods:o}=n,a=o.one.setTag,i=r.one._multiCache||{},{lexicon:s}=r.one||{},l=e[t],u=l.machine||l.normal;if(void 0!==i[u]&&e[t+1]){for(let r=t+i[u]-1;r>t;r-=1){const o=e.slice(t,r+1);if(o.length<=1)return!1;const i=o.map((e=>e.machine||e.normal)).join(\" \");if(!0===s.hasOwnProperty(i)){const e=s[i];return a(o,e,n,!1,\"1-multi-lexicon\"),!e||2!==e.length||\"PhrasalVerb\"!==e[0]&&\"PhrasalVerb\"!==e[1]||a([o[1]],\"Particle\",n,!1,\"1-phrasal-particle\"),!0}}return!1}return null},je=/^(under|over|mis|re|un|dis|semi|pre|post)-?/,xe=new Set([\"Verb\",\"Infinitive\",\"PastTense\",\"Gerund\",\"PresentTense\",\"Adjective\",\"Participle\"]),Ie=function(e,t,n){const{model:r,methods:o}=n,a=o.one.setTag,{lexicon:i}=r.one,s=e[t],l=s.machine||s.normal;if(void 0!==i[l]&&i.hasOwnProperty(l))return a([s],i[l],n,!1,\"1-lexicon\"),!0;if(s.alias){const e=s.alias.find((e=>i.hasOwnProperty(e)));if(e)return a([s],i[e],n,!1,\"1-lexicon-alias\"),!0}if(!0===je.test(l)){const e=l.replace(je,\"\");if(i.hasOwnProperty(e)&&e.length>3&&xe.has(i[e]))return a([s],i[e],n,!1,\"1-lexicon-prefix\"),!0}return null};var Te={lexicon:function(e){const t=e.world;e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1)if(0===e[n].tags.size){let r=null;r=r||Ne(e,n,t),r=r||Ie(e,n,t)}}))}};var De={one:{expandLexicon:function(e){const t={},n={};return Object.keys(e).forEach((r=>{const o=e[r],a=(r=(r=r.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);a.length>1&&(void 0===n[a[0]]||a.length>n[a[0]])&&(n[a[0]]=a.length),t[r]=t[r]||o})),delete t[\"\"],delete t.null,delete t[\" \"],{lex:t,_multi:n}}}};var He={addWords:function(e,t=!1){const n=this.world(),{methods:r,model:o}=n;if(!e)return;if(Object.keys(e).forEach((t=>{\"string\"==typeof e[t]&&e[t].startsWith(\"#\")&&(e[t]=e[t].replace(/^#/,\"\"))})),!0===t){const{lex:t,_multi:a}=r.one.expandLexicon(e,n);return Object.assign(o.one._multiCache,a),void Object.assign(o.one.frozenLex,t)}if(r.two.expandLexicon){const{lex:t,_multi:a}=r.two.expandLexicon(e,n);Object.assign(o.one.lexicon,t),Object.assign(o.one._multiCache,a)}const{lex:a,_multi:i}=r.one.expandLexicon(e,n);Object.assign(o.one.lexicon,a),Object.assign(o.one._multiCache,i)}};var Ee={model:{one:{lexicon:{},_multiCache:{},frozenLex:{}}},methods:De,compute:Te,lib:He,hooks:[\"lexicon\"]};const Ge=function(e,t){const n=[{}],r=[null],o=[0],a=[];let i=0;e.forEach((function(e){let o=0;const a=function(e,t){const{methods:n,model:r}=t,o=n.one.tokenize.splitTerms(e,r).map((e=>n.one.tokenize.splitWhitespace(e,r)));return o.map((e=>e.text.toLowerCase()))}(e,t);for(let e=0;e<a.length;e++){const t=a[e];n[o]&&n[o].hasOwnProperty(t)?o=n[o][t]:(i++,n[o][t]=i,n[i]={},o=i,r[i]=null)}r[o]=[a.length]}));for(const e in n[0])i=n[0][e],o[i]=0,a.push(i);for(;a.length;){const e=a.shift(),t=Object.keys(n[e]);for(let s=0;s<t.length;s+=1){const l=t[s],u=n[e][l];for(a.push(u),i=o[e];i>0&&!n[i].hasOwnProperty(l);)i=o[i];if(n.hasOwnProperty(i)){const e=n[i][l];o[u]=e,r[e]&&(r[u]=r[u]||[],r[u]=r[u].concat(r[e]))}else o[u]=0}}return{goNext:n,endAs:r,failTo:o}},Oe=function(e,t,n){let r=0;const o=[];for(let a=0;a<e.length;a++){const i=e[a][n.form]||e[a].normal;for(;r>0&&(void 0===t.goNext[r]||!t.goNext[r].hasOwnProperty(i));)r=t.failTo[r]||0;if(t.goNext[r].hasOwnProperty(i)&&(r=t.goNext[r][i],t.endAs[r])){const n=t.endAs[r];for(let t=0;t<n.length;t++){const r=n[t],i=e[a-r+1],[s,l]=i.index;o.push([s,l,l+r,i.id])}}}return o},Fe=function(e,t){for(let n=0;n<e.length;n+=1)if(!0===t.has(e[n]))return!1;return!0};const Ve=(e,t)=>{for(let n=e.length-1;n>=0;n-=1)if(e[n]!==t)return e=e.slice(0,n+1);return e},ze={buildTrie:function(e){return function(e){return e.goNext=e.goNext.map((e=>{if(0!==Object.keys(e).length)return e})),e.goNext=Ve(e.goNext,void 0),e.failTo=Ve(e.failTo,0),e.endAs=Ve(e.endAs,null),e}(Ge(e,this.world()))}};ze.compile=ze.buildTrie;var Be={api:function(e){e.prototype.lookup=function(e,t={}){if(!e)return this.none();\"string\"==typeof e&&(e=[e]);var n;let r=function(e,t,n){let r=[];n.form=n.form||\"normal\";const o=e.docs;if(!t.goNext||!t.goNext[0])return console.error(\"Compromise invalid lookup trie\"),e.none();const a=Object.keys(t.goNext[0]);for(let i=0;i<o.length;i++){if(e._cache&&e._cache[i]&&!0===Fe(a,e._cache[i]))continue;const s=o[i],l=Oe(s,t,n);l.length>0&&(r=r.concat(l))}return e.update(r)}(this,(n=e,\"[object Object]\"===Object.prototype.toString.call(n)?e:Ge(e,this.world)),t);return r=r.settle(),r}},lib:ze};const Se=function(e,t){return t?(e.forEach((e=>{const n=e[0];t[n]&&(e[0]=t[n][0],e[1]+=t[n][1],e[2]+=t[n][1])})),e):e},$e=function(e,t){let{ptrs:n}=e;const{byGroup:r}=e;return n=Se(n,t),Object.keys(r).forEach((e=>{r[e]=Se(r[e],t)})),{ptrs:n,byGroup:r}},Me=function(e,t,n){const r=n.methods.one;return\"number\"==typeof e&&(e=String(e)),\"string\"==typeof e&&(e=r.killUnicode(e,n),e=r.parseMatch(e,t,n)),e},Le=e=>\"[object Object]\"===Object.prototype.toString.call(e),Ke=e=>e&&Le(e)&&!0===e.isView,Je=e=>e&&Le(e)&&!0===e.isNet;var We={matchOne:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.intersection(e).eq(0);if(Je(e))return this.sweep(e,{tagger:!1,matchOne:!0}).view;const o={regs:e=Me(e,n,this.world),group:t,justOne:!0},a=r.match(this.docs,o,this._cache),{ptrs:i,byGroup:s}=$e(a,this.fullPointer),l=this.toView(i);return l._groups=s,l},match:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.intersection(e);if(Je(e))return this.sweep(e,{tagger:!1}).view.settle();const o={regs:e=Me(e,n,this.world),group:t},a=r.match(this.docs,o,this._cache),{ptrs:i,byGroup:s}=$e(a,this.fullPointer),l=this.toView(i);return l._groups=s,l},has:function(e,t,n){const r=this.methods.one;if(Ke(e)){return this.intersection(e).fullPointer.length>0}if(Je(e))return this.sweep(e,{tagger:!1}).view.found;const o={regs:e=Me(e,n,this.world),group:t,justOne:!0};return r.match(this.docs,o,this._cache).ptrs.length>0},if:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.filter((t=>t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.if(t)}const o={regs:e=Me(e,n,this.world),group:t,justOne:!0};let a=this.fullPointer;const i=this._cache||[];a=a.filter(((e,t)=>{const n=this.update([e]);return r.match(n.docs,o,i[t]).ptrs.length>0}));const s=this.update(a);return this._cache&&(s._cache=a.map((e=>i[e[0]]))),s},ifNo:function(e,t,n){const{methods:r}=this,o=r.one;if(Ke(e))return this.filter((t=>!t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.ifNo(t)}e=Me(e,n,this.world);const a=this._cache||[],i=this.filter(((n,r)=>{const i={regs:e,group:t,justOne:!0};return 0===o.match(n.docs,i,a[r]).ptrs.length}));return this._cache&&(i._cache=i.ptrs.map((e=>a[e[0]]))),i}};var qe={before:function(e,t,n){const{indexN:r}=this.methods.one.pointer,o=[],a=r(this.fullPointer);Object.keys(a).forEach((e=>{const t=a[e].sort(((e,t)=>e[1]>t[1]?1:-1))[0];t[1]>0&&o.push([t[0],0,t[1]])}));const i=this.toView(o);return e?i.match(e,t,n):i},after:function(e,t,n){const{indexN:r}=this.methods.one.pointer,o=[],a=r(this.fullPointer),i=this.document;Object.keys(a).forEach((e=>{const t=a[e].sort(((e,t)=>e[1]>t[1]?-1:1))[0],[n,,r]=t;r<i[n].length&&o.push([n,r,i[n].length])}));const s=this.toView(o);return e?s.match(e,t,n):s},growLeft:function(e,t,n){\"string\"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[e.length-1].end=!0;const r=this.fullPointer;return this.forEach(((n,o)=>{const a=n.before(e,t);if(a.found){const e=a.terms();r[o][1]-=e.length,r[o][3]=e.docs[0][0].id}})),this.update(r)},growRight:function(e,t,n){\"string\"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[0].start=!0;const r=this.fullPointer;return this.forEach(((n,o)=>{const a=n.after(e,t);if(a.found){const e=a.terms();r[o][2]+=e.length,r[o][4]=null}})),this.update(r)},grow:function(e,t,n){return this.growRight(e,t,n).growLeft(e,t,n)}};const Ue=function(e,t){return[e[0],e[1],t[2]]},Re=(e,t,n)=>{return\"string\"==typeof e||(r=e,\"[object Array]\"===Object.prototype.toString.call(r))?t.match(e,n):e||t.none();var r},Qe=function(e,t){const[n,r,o]=e;return t.document[n]&&t.document[n][r]&&(e[3]=e[3]||t.document[n][r].id,t.document[n][o-1]&&(e[4]=e[4]||t.document[n][o-1].id)),e},Ze={splitOn:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);let a=[];return o.forEach((e=>{a.push(e.passthrough),a.push(e.before),a.push(e.match),a.push(e.after)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)},splitBefore:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);for(let e=0;e<o.length;e+=1)!o[e].after&&o[e+1]&&o[e+1].before&&o[e].match&&o[e].match[0]===o[e+1].before[0]&&(o[e].after=o[e+1].before,delete o[e+1].before);let a=[];return o.forEach((e=>{a.push(e.passthrough),a.push(e.before),e.match&&e.after?a.push(Ue(e.match,e.after)):a.push(e.match)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)},splitAfter:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);let a=[];return o.forEach((e=>{a.push(e.passthrough),e.before&&e.match?a.push(Ue(e.before,e.match)):(a.push(e.before),a.push(e.match)),a.push(e.after)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)}};Ze.split=Ze.splitAfter;const _e=function(e,t){return!(!e||!t)&&(e[0]===t[0]&&e[2]===t[1])},Xe=function(e,t,n){const r=e.world,o=r.methods.one.parseMatch;n=n||\"^.\";const a=o(t=t||\".$\",{},r),i=o(n,{},r);a[a.length-1].end=!0,i[0].start=!0;const s=e.fullPointer,l=[s[0]];for(let t=1;t<s.length;t+=1){const n=l[l.length-1],r=s[t],o=e.update([n]),u=e.update([r]);_e(n,r)&&o.has(a)&&u.has(i)?l[l.length-1]=[n[0],n[1],r[2],n[3],r[4]]:l.push(r)}return e.update(l)},Ye={joinIf:function(e,t){return Xe(this,e,t)},join:function(){return Xe(this)}},et=Object.assign({},We,qe,Ze,Ye);et.lookBehind=et.before,et.lookBefore=et.before,et.lookAhead=et.after,et.lookAfter=et.after,et.notIf=et.ifNo;const tt=/(?:^|\\s)([![^]*(?:<[^<]*>)?\\/.*?[^\\\\/]\\/[?\\]+*$~]*)(?:\\s|$)/,nt=/([!~[^]*(?:<[^<]*>)?\\([^)]+[^\\\\)]\\)[?\\]+*$~]*)(?:\\s|$)/,rt=/ /g,ot=e=>/^[![^]*(<[^<]*>)?\\//.test(e)&&/\\/[?\\]+*$~]*$/.test(e),at=function(e){return e=(e=e.map((e=>e.trim()))).filter((e=>e))},it=/\\{([0-9]+)?(, *[0-9]*)?\\}/,st=/&&/,lt=new RegExp(/^<\\s*(\\S+)\\s*>/),ut=e=>e.charAt(0).toUpperCase()+e.substring(1),ct=e=>e.charAt(e.length-1),ht=e=>e.charAt(0),dt=e=>e.substring(1),gt=e=>e.substring(0,e.length-1),mt=function(e){return e=dt(e),e=gt(e)},pt=function(e,t){const n={};for(let r=0;r<2;r+=1){if(\"$\"===ct(e)&&(n.end=!0,e=gt(e)),\"^\"===ht(e)&&(n.start=!0,e=dt(e)),\"?\"===ct(e)&&(n.optional=!0,e=gt(e)),(\"[\"===ht(e)||\"]\"===ct(e))&&(n.group=null,\"[\"===ht(e)&&(n.groupStart=!0),\"]\"===ct(e)&&(n.groupEnd=!0),e=(e=e.replace(/^\\[/,\"\")).replace(/\\]$/,\"\"),\"<\"===ht(e))){const t=lt.exec(e);t.length>=2&&(n.group=t[1],e=e.replace(t[0],\"\"))}if(\"+\"===ct(e)&&(n.greedy=!0,e=gt(e)),\"*\"!==e&&\"*\"===ct(e)&&\"\\\\*\"!==e&&(n.greedy=!0,e=gt(e)),\"!\"===ht(e)&&(n.negative=!0,e=dt(e)),\"~\"===ht(e)&&\"~\"===ct(e)&&e.length>2&&(e=mt(e),n.fuzzy=!0,n.min=t.fuzzy||.85,!1===/\\(/.test(e)))return n.word=e,n;if(\"/\"===ht(e)&&\"/\"===ct(e))return e=mt(e),t.caseSensitive&&(n.use=\"text\"),n.regex=new RegExp(e),n;if(!0===it.test(e)&&(e=e.replace(it,((e,t,r)=>(void 0===r?(n.min=Number(t),n.max=Number(t)):(r=r.replace(/, */,\"\"),void 0===t?(n.min=0,n.max=Number(r)):(n.min=Number(t),n.max=Number(r||999))),n.greedy=!0,n.min||(n.optional=!0),\"\")))),\"(\"===ht(e)&&\")\"===ct(e)){st.test(e)?(n.choices=e.split(st),n.operator=\"and\"):(n.choices=e.split(\"|\"),n.operator=\"or\"),n.choices[0]=dt(n.choices[0]);const r=n.choices.length-1;n.choices[r]=gt(n.choices[r]),n.choices=n.choices.map((e=>e.trim())),n.choices=n.choices.filter((e=>e)),n.choices=n.choices.map((e=>e.split(/ /g).map((e=>pt(e,t))))),e=\"\"}if(\"{\"===ht(e)&&\"}\"===ct(e)){if(e=mt(e),n.root=e,/\\//.test(e)){const e=n.root.split(/\\//);n.root=e[0],n.pos=e[1],\"adj\"===n.pos&&(n.pos=\"Adjective\"),n.pos=n.pos.charAt(0).toUpperCase()+n.pos.substr(1).toLowerCase(),void 0!==e[2]&&(n.sense=e[2])}return n}if(\"<\"===ht(e)&&\">\"===ct(e))return e=mt(e),n.chunk=ut(e),n.greedy=!0,n;if(\"%\"===ht(e)&&\"%\"===ct(e))return e=mt(e),n.switch=e,n}return\"#\"===ht(e)?(n.tag=dt(e),n.tag=ut(n.tag),n):\"@\"===ht(e)?(n.method=dt(e),n):\".\"===e?(n.anything=!0,n):\"*\"===e?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(e&&(e=(e=e.replace(\"\\\\*\",\"*\")).replace(\"\\\\.\",\".\"),t.caseSensitive?n.use=\"text\":e=e.toLowerCase(),n.word=e),n)},ft=/[a-z0-9][-–—][a-z]/i,bt=function(e,t){const{all:n}=t.methods.two.transform.verb||{},r=e.root;return n?n(r,t.model):[]},vt=function(e,t){const{all:n}=t.methods.two.transform.noun||{};return n?n(e.root,t.model):[e.root]},yt=function(e,t){const{all:n}=t.methods.two.transform.adjective||{};return n?n(e.root,t.model):[e.root]},wt=function(e){return e=function(e){let t=0,n=null;for(let r=0;r<e.length;r++){const o=e[r];!0===o.groupStart&&(n=o.group,null===n&&(n=String(t),t+=1)),null!==n&&(o.group=n),!0===o.groupEnd&&(n=null)}return e}(e),e=function(e){return e.map((e=>(e.fuzzy&&e.choices&&e.choices.forEach((t=>{1===t.length&&t[0].word&&(t[0].fuzzy=!0,t[0].min=e.min)})),e)))}(e=e.map((e=>{if(void 0!==e.choices){if(\"or\"!==e.operator)return e;if(!0===e.fuzzy)return e;!0===e.choices.every((e=>{if(1!==e.length)return!1;const t=e[0];return!0!==t.fuzzy&&!t.start&&!t.end&&void 0!==t.word&&!0!==t.negative&&!0!==t.optional&&!0!==t.method}))&&(e.fastOr=new Set,e.choices.forEach((t=>{e.fastOr.add(t[0].word)})),delete e.choices)}return e}))),e},kt=function(e,t){for(const n of t)if(e.has(n))return!0;return!1},Pt=function(e,t){for(let n=0;n<e.length;n+=1){const r=e[n];if(!0!==r.optional&&!0!==r.negative&&!0!==r.fuzzy){if(void 0!==r.word&&!1===t.has(r.word))return!0;if(void 0!==r.tag&&!1===t.has(\"#\"+r.tag))return!0;if(r.fastOr&&!1===kt(r.fastOr,t))return!1}}return!1},At=function(e,t,n=3){if(e===t)return 1;if(e.length<n||t.length<n)return 0;const r=function(e,t){const n=e.length,r=t.length;if(0===n)return r;if(0===r)return n;const o=(r>n?r:n)+1;if(Math.abs(n-r)>(o||100))return o||100;const a=[];for(let e=0;e<o;e++)a[e]=[e],a[e].length=o;for(let e=0;e<o;e++)a[0][e]=e;let i,s,l,u,c,h;for(let o=1;o<=n;++o)for(s=e[o-1],i=1;i<=r;++i){if(o===i&&a[o][i]>4)return n;l=t[i-1],u=s===l?0:1,c=a[o-1][i]+1,(h=a[o][i-1]+1)<c&&(c=h),(h=a[o-1][i-1]+u)<c&&(c=h);const r=o>1&&i>1&&s===t[i-2]&&e[o-2]===l&&(h=a[o-2][i-2]+u)<c;a[o][i]=r?h:c}return a[n][r]}(e,t),o=Math.max(e.length,t.length);return 1-(0===o?0:r/o)},Ct=/([\\u0022\\uFF02\\u0027\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F])/,Nt=/([\\u0022\\uFF02\\u0027\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4])/,jt=/^[-–—]$/,xt=/ [-–—]{1,3} /,It=(e,t)=>-1!==e.post.indexOf(t),Tt={hasQuote:e=>Ct.test(e.pre)||Nt.test(e.post),hasComma:e=>It(e,\",\"),hasPeriod:e=>!0===It(e,\".\")&&!1===It(e,\"...\"),hasExclamation:e=>It(e,\"!\"),hasQuestionMark:e=>It(e,\"?\")||It(e,\"¿\"),hasEllipses:e=>It(e,\"..\")||It(e,\"…\"),hasSemicolon:e=>It(e,\";\"),hasColon:e=>It(e,\":\"),hasSlash:e=>/\\//.test(e.text),hasHyphen:e=>jt.test(e.post)||jt.test(e.pre),hasDash:e=>xt.test(e.post)||xt.test(e.pre),hasContraction:e=>Boolean(e.implicit),isAcronym:e=>e.tags.has(\"Acronym\"),isKnown:e=>e.tags.size>0,isTitleCase:e=>/^\\p{Lu}[a-z'\\u00C0-\\u00FF]/u.test(e.text),isUpperCase:e=>/^\\p{Lu}+$/u.test(e.text)};Tt.hasQuotation=Tt.hasQuote;let Dt=function(){};Dt=function(e,t,n,r){const o=function(e,t,n,r){if(!0===t.anything)return!0;if(!0===t.start&&0!==n)return!1;if(!0===t.end&&n!==r-1)return!1;if(void 0!==t.id&&t.id===e.id)return!0;if(void 0!==t.word){if(t.use)return t.word===e[t.use];if(null!==e.machine&&e.machine===t.word)return!0;if(void 0!==e.alias&&e.alias.hasOwnProperty(t.word))return!0;if(!0===t.fuzzy){if(t.word===e.root)return!0;if(At(t.word,e.normal)>=t.min)return!0}return!(!e.alias||!e.alias.some((e=>e===t.word)))||t.word===e.text||t.word===e.normal}if(void 0!==t.tag)return!0===e.tags.has(t.tag);if(void 0!==t.method)return\"function\"==typeof Tt[t.method]&&!0===Tt[t.method](e);if(void 0!==t.pre)return e.pre&&e.pre.includes(t.pre);if(void 0!==t.post)return e.post&&e.post.includes(t.post);if(void 0!==t.regex){let n=e.normal;return t.use&&(n=e[t.use]),t.regex.test(n)}if(void 0!==t.chunk)return e.chunk===t.chunk;if(void 0!==t.switch)return e.switch===t.switch;if(void 0!==t.machine)return e.normal===t.machine||e.machine===t.machine||e.root===t.machine;if(void 0!==t.sense)return e.sense===t.sense;if(void 0!==t.fastOr){if(t.pos&&!e.tags.has(t.pos))return null;const n=e.root||e.implicit||e.machine||e.normal;return t.fastOr.has(n)||t.fastOr.has(e.text)}return void 0!==t.choices&&(\"and\"===t.operator?t.choices.every((t=>Dt(e,t,n,r))):t.choices.some((t=>Dt(e,t,n,r))))}(e,t,n,r);return!0===t.negative?!o:o};const Ht=function(e,t){if(!0===e.end&&!0===e.greedy&&t.start_i+t.t<t.phrase_length-1){const n=Object.assign({},e,{end:!1});if(!0===Dt(t.terms[t.t],n,t.start_i+t.t,t.phrase_length))return!0}return!1},Et=function(e,t){return e.groups[e.inGroup]||(e.groups[e.inGroup]={start:t,length:0}),e.groups[e.inGroup]},Gt=function(e){const{regs:t}=e,n=t[e.r],r=function(e,t){let n=e.t;if(!t)return e.terms.length;for(;n<e.terms.length;n+=1)if(!0===Dt(e.terms[n],t,e.start_i+n,e.phrase_length))return n;return null}(e,t[e.r+1]);if(null===r||0===r)return null;if(void 0!==n.min&&r-e.t<n.min)return null;if(void 0!==n.max&&r-e.t>n.max)return e.t=e.t+n.max,!0;if(!0===e.hasGroup){Et(e,e.t).length=r-e.t}return e.t=r,!0},Ot=function(e,t=0){const n=e.regs[e.r];let r=!1;for(let a=0;a<n.choices.length;a+=1){const i=n.choices[a];if(o=i,\"[object Array]\"!==Object.prototype.toString.call(o))return!1;if(r=i.every(((n,r)=>{let o=0;const a=e.t+r+t+o;if(void 0===e.terms[a])return!1;const i=Dt(e.terms[a],n,a+e.start_i,e.phrase_length);if(!0===i&&!0===n.greedy)for(let t=1;t<e.terms.length;t+=1){const r=e.terms[a+t];if(r){if(!0!==Dt(r,n,e.start_i+t,e.phrase_length))break;o+=1}}return t+=o,i})),r){t+=i.length;break}}var o;return r&&!0===n.greedy?Ot(e,t):t},Ft=function(e){const{regs:t}=e,n=t[e.r],r=Ot(e);if(r){if(!0===n.negative)return null;if(!0===e.hasGroup){Et(e,e.t).length+=r}if(!0===n.end){const t=e.phrase_length;if(e.t+e.start_i+r!==t)return null}return e.t+=r,!0}return!!n.optional||null},Vt=function(e){const{regs:t}=e,n=t[e.r],r=function(e){let t=0;return!0===e.regs[e.r].choices.every((n=>{const r=n.every(((t,n)=>{const r=e.t+n;return void 0!==e.terms[r]&&Dt(e.terms[r],t,r,e.phrase_length)}));return!0===r&&n.length>t&&(t=n.length),r}))&&t}(e);if(r){if(!0===n.negative)return null;if(!0===e.hasGroup){Et(e,e.t).length+=r}if(!0===n.end){const t=e.phrase_length-1;if(e.t+e.start_i!==t)return null}return e.t+=r,!0}return!!n.optional||null},zt=function(e){const{regs:t}=e,n=t[e.r],r=Object.assign({},n);r.negative=!1;if(Dt(e.terms[e.t],r,e.start_i+e.t,e.phrase_length))return!1;if(n.optional){const n=t[e.r+1];if(n){if(Dt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))e.r+=1;else if(n.optional&&t[e.r+2]){Dt(e.terms[e.t],t[e.r+2],e.start_i+e.t,e.phrase_length)&&(e.r+=2)}}}return n.greedy?function(e,t,n){let r=0;for(let o=e.t;o<e.terms.length;o+=1){let a=Dt(e.terms[o],t,e.start_i+e.t,e.phrase_length);if(a)break;if(n&&(a=Dt(e.terms[o],n,e.start_i+e.t,e.phrase_length),a))break;if(r+=1,void 0!==t.max&&r===t.max)break}return!(0===r||t.min&&t.min>r||(e.t+=r,0))}(e,r,t[e.r+1]):(e.t+=1,!0)},Bt=function(e){const{regs:t,phrase_length:n}=e,r=t[e.r];return e.t=function(e,t){const n=Object.assign({},e.regs[e.r],{start:!1,end:!1}),r=e.t;for(;e.t<e.terms.length;e.t+=1){if(t&&Dt(e.terms[e.t],t,e.start_i+e.t,e.phrase_length))return e.t;const o=e.t-r+1;if(void 0!==n.max&&o===n.max)return e.t;if(!1===Dt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))return void 0!==n.min&&o<n.min?null:e.t}return e.t}(e,t[e.r+1]),null===e.t||r.min&&r.min>e.t?null:!0!==r.end||e.start_i+e.t===n||null},St=function(e){const{regs:t}=e,n=t[e.r],r=e.terms[e.t],o=e.t;if(n.optional&&t[e.r+1]&&n.negative)return!0;if(n.optional&&t[e.r+1]&&function(e){const{regs:t}=e,n=t[e.r],r=e.terms[e.t],o=Dt(r,t[e.r+1],e.start_i+e.t,e.phrase_length);if(n.negative||o){const n=e.terms[e.t+1];n&&Dt(n,t[e.r+1],e.start_i+e.t,e.phrase_length)||(e.r+=1)}}(e),r.implicit&&e.terms[e.t+1]&&function(e){const t=e.terms[e.t],n=e.regs[e.r];if(t.implicit&&e.terms[e.t+1]){if(!e.terms[e.t+1].implicit)return;n.word===t.normal&&(e.t+=1),\"hasContraction\"===n.method&&(e.t+=1)}}(e),e.t+=1,!0===n.end&&e.t!==e.terms.length&&!0!==n.greedy)return null;if(!0===n.greedy){if(!Bt(e))return null}return!0===e.hasGroup&&function(e,t){const n=e.regs[e.r],r=Et(e,t);e.t>1&&n.greedy?r.length+=e.t-t:r.length++}(e,o),!0},$t=function(e,t,n,r){if(0===e.length||0===t.length)return null;const o={t:0,terms:e,r:0,regs:t,groups:{},start_i:n,phrase_length:r,inGroup:null};for(;o.r<t.length;o.r+=1){const e=t[o.r];if(o.hasGroup=Boolean(e.group),!0===o.hasGroup?o.inGroup=e.group:o.inGroup=null,!o.terms[o.t]){if(!1===t.slice(o.r).some((e=>!e.optional)))break;return null}if(!0===e.anything&&!0===e.greedy){if(!Gt(o))return null;continue}if(void 0!==e.choices&&\"or\"===e.operator){if(!Ft(o))return null;continue}if(void 0!==e.choices&&\"and\"===e.operator){if(!Vt(o))return null;continue}if(!0===e.anything){if(e.negative&&e.anything)return null;if(!St(o))return null;continue}if(!0===Ht(e,o)){if(!St(o))return null;continue}if(e.negative){if(!zt(o))return null;continue}if(!0!==Dt(o.terms[o.t],e,o.start_i+o.t,o.phrase_length)){if(!0!==e.optional)return null}else{if(!St(o))return null}}const a=[null,n,o.t+n];if(a[1]===a[2])return null;const i={};return Object.keys(o.groups).forEach((e=>{const t=o.groups[e],r=n+t.start;i[e]=[null,r,r+t.length]})),{pointer:a,groups:i}},Mt=function(e,t){return e.pointer[0]=t,Object.keys(e.groups).forEach((n=>{e.groups[n][0]=t})),e},Lt=function(e,t,n){let r=$t(e,t,0,e.length);return r?(r=Mt(r,n),r):null},Kt={one:{termMethods:Tt,parseMatch:function(e,t,n){if(null==e||\"\"===e)return[];t=t||{},\"number\"==typeof e&&(e=String(e));let r=function(e){const t=e.split(tt);let n=[];t.forEach((e=>{ot(e)?n.push(e):n=n.concat(e.split(nt))})),n=at(n);let r=[];return n.forEach((e=>{(e=>/^[![^]*(<[^<]*>)?\\(/.test(e)&&/\\)[?\\]+*$~]*$/.test(e))(e)||ot(e)?r.push(e):r=r.concat(e.split(rt))})),r=at(r),r}(e);return r=r.map((e=>pt(e,t))),r=function(e,t){const n=t.model.one.prefixes;for(let t=e.length-1;t>=0;t-=1){const r=e[t];if(r.word&&ft.test(r.word)){let o=r.word.split(/[-–—]/g);if(n.hasOwnProperty(o[0]))continue;o=o.filter((e=>e)).reverse(),e.splice(t,1),o.forEach((n=>{const o=Object.assign({},r);o.word=n,e.splice(t,0,o)}))}}return e}(r,n),r=function(e,t){return e.map((e=>{if(e.root)if(t.methods.two&&t.methods.two.transform){let n=[];e.pos?\"Verb\"===e.pos?n=n.concat(bt(e,t)):\"Noun\"===e.pos?n=n.concat(vt(e,t)):\"Adjective\"===e.pos&&(n=n.concat(yt(e,t))):(n=n.concat(bt(e,t)),n=n.concat(vt(e,t)),n=n.concat(yt(e,t))),n=n.filter((e=>e)),n.length>0&&(e.operator=\"or\",e.fastOr=new Set(n))}else e.machine=e.root,delete e.id,delete e.root;return e}))}(r,n),r=wt(r),r},match:function(e,t,n){n=n||[];const{regs:r,group:o,justOne:a}=t;let i=[];if(!r||0===r.length)return{ptrs:[],byGroup:{}};const s=r.filter((e=>!0!==e.optional&&!0!==e.negative)).length;e:for(let t=0;t<e.length;t+=1){const o=e[t];if(!n[t]||!Pt(r,n[t]))if(!0!==r[0].start)for(let e=0;e<o.length;e+=1){const n=o.slice(e);if(n.length<s)break;let l=$t(n,r,e,o.length);if(l){if(l=Mt(l,t),i.push(l),!0===a)break e;const n=l.pointer[2];Math.abs(n-1)>e&&(e=Math.abs(n-1))}}else{const e=Lt(o,r,t);e&&i.push(e)}}return!0===r[r.length-1].end&&(i=i.filter((t=>{const n=t.pointer[0];return e[n].length===t.pointer[2]}))),t.notIf&&(i=function(e,t,n){return e=e.filter((e=>{const[r,o,a]=e.pointer,i=n[r].slice(o,a);for(let e=0;e<i.length;e+=1){const n=i.slice(e);if(null!==$t(n,t,e,i.length))return!1}return!0})),e}(i,t.notIf,e)),i=function(e,t){const n=[],r={};return 0===e.length||(\"number\"==typeof t&&(t=String(t)),t?e.forEach((e=>{e.groups[t]&&n.push(e.groups[t])})):e.forEach((e=>{n.push(e.pointer),Object.keys(e.groups).forEach((t=>{r[t]=r[t]||[],r[t].push(e.groups[t])}))}))),{ptrs:n,byGroup:r}}(i,o),i.ptrs.forEach((t=>{const[n,r,o]=t;t[3]=e[n][r].id,t[4]=e[n][o-1].id})),i}}};var Jt={api:function(e){Object.assign(e.prototype,et)},methods:Kt,lib:{parseMatch:function(e,t){const n=this.world(),r=n.methods.one.killUnicode;return r&&(e=r(e,n)),n.methods.one.parseMatch(e,t,n)}}};const Wt=/^\\../,qt=/^#./,Ut=function(e,t){const n={},r={};return Object.keys(t).forEach((o=>{let a=t[o];const i=function(e){let t=\"\",n=\"</span>\";return e=e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&apos;\"),Wt.test(e)?t=`<span class=\"${e.replace(/^\\./,\"\")}\"`:qt.test(e)?t=`<span id=\"${e.replace(/^#/,\"\")}\"`:(t=`<${e}`,n=`</${e}>`),t+=\">\",{start:t,end:n}}(o);\"string\"==typeof a&&(a=e.match(a)),a.docs.forEach((e=>{if(e.every((e=>e.implicit)))return;const t=e[0].id;n[t]=n[t]||[],n[t].push(i.start);const o=e[e.length-1].id;r[o]=r[o]||[],r[o].push(i.end)}))})),{starts:n,ends:r}};var Rt={html:function(e){const{starts:t,ends:n}=Ut(this,e);let r=\"\";return this.docs.forEach((e=>{for(let o=0;o<e.length;o+=1){const a=e[o];t.hasOwnProperty(a.id)&&(r+=t[a.id].join(\"\")),r+=a.pre||\"\",r+=a.text||\"\",n.hasOwnProperty(a.id)&&(r+=n[a.id].join(\"\")),r+=a.post||\"\"}})),r}};const Qt=/[,:;)\\]*.?~!\\u0022\\uFF02\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4—-]+$/,Zt=/^[(['\"*~\\uFF02\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/,_t=/[,:;)('\"\\u201D\\]]/,Xt=/^[-–—]$/,Yt=/ /,en=function(e,t,n=!0){let r=\"\";return e.forEach((e=>{let n=e.pre||\"\",o=e.post||\"\";\"some\"===t.punctuation&&(n=n.replace(Zt,\"\"),Xt.test(o)&&(o=\" \"),o=o.replace(_t,\"\"),o=o.replace(/\\?!+/,\"?\"),o=o.replace(/!+/,\"!\"),o=o.replace(/\\?+/,\"?\"),o=o.replace(/\\.{2,}/,\"\"),e.tags.has(\"Abbreviation\")&&(o=o.replace(/\\./,\"\"))),\"some\"===t.whitespace&&(n=n.replace(/\\s/,\"\"),o=o.replace(/\\s+/,\" \")),t.keepPunct||(n=n.replace(Zt,\"\"),o=\"-\"===o?\" \":o.replace(Qt,\"\"));let a=e[t.form||\"text\"]||e.normal||\"\";\"implicit\"===t.form&&(a=e.implicit||e.text),\"root\"===t.form&&e.implicit&&(a=e.root||e.implicit||e.normal),\"machine\"!==t.form&&\"implicit\"!==t.form&&\"root\"!==t.form||!e.implicit||o&&Yt.test(o)||(o+=\" \"),r+=n+a+o})),!1===n&&(r=r.trim()),!0===t.lowerCase&&(r=r.toLowerCase()),r},tn={text:{form:\"text\"},normal:{whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"normal\"},machine:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"none\",unicode:\"some\",form:\"machine\"},root:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"root\"},implicit:{form:\"implicit\"}};tn.clean=tn.normal,tn.reduced=tn.root;const nn=[];let rn=0;for(;rn<64;)nn[rn]=0|4294967296*Math.sin(++rn%Math.PI);const on=function(e){let t,n,r,o=decodeURI(encodeURI(e))+\"\",a=o.length;const i=[t=1732584193,n=4023233417,~t,~n],s=[];for(e=--a/4+2|15,s[--e]=8*a;~a;)s[a>>2]|=o.charCodeAt(a)<<8*a--;for(rn=o=0;rn<e;rn+=16){for(a=i;o<64;a=[r=a[3],t+((r=a[0]+[t&n|~t&r,r&t|~r&n,t^n^r,n^(t|~r)][a=o>>4]+nn[o]+~~s[rn|15&[o,5*o+1,3*o+5,7*o][a]])<<(a=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*a+o++%4])|r>>>-a),t,n])t=0|a[1],n=a[2];for(o=4;o;)i[--o]+=a[o]}for(e=\"\";o<32;)e+=(i[o>>3]>>4*(1^o++)&15).toString(16);return e},an={text:!0,terms:!0},sn={case:\"none\",unicode:\"some\",form:\"machine\",punctuation:\"some\"},ln=function(e,t){return Object.assign({},e,t)},un={text:e=>en(e,{keepPunct:!0},!1),normal:e=>en(e,ln(tn.normal,{keepPunct:!0}),!1),implicit:e=>en(e,ln(tn.implicit,{keepPunct:!0}),!1),machine:e=>en(e,sn,!1),root:e=>en(e,ln(sn,{form:\"root\"}),!1),hash:e=>on(en(e,{keepPunct:!0},!1)),offset:e=>{const t=un.text(e).length;return{index:e[0].offset.index,start:e[0].offset.start,length:t}},terms:e=>e.map((e=>{const t=Object.assign({},e);return t.tags=Array.from(e.tags),t})),confidence:(e,t,n)=>t.eq(n).confidence(),syllables:(e,t,n)=>t.eq(n).syllables(),sentence:(e,t,n)=>t.eq(n).fullSentence().text(),dirty:e=>e.some((e=>!0===e.dirty))};un.sentences=un.sentence,un.clean=un.normal,un.reduced=un.root;const cn={json:function(e){const t=(n=this,\"string\"==typeof(r=(r=e)||{})&&(r={}),(r=Object.assign({},an,r)).offset&&n.compute(\"offset\"),n.docs.map(((e,t)=>{const o={};return Object.keys(r).forEach((a=>{r[a]&&un[a]&&(o[a]=un[a](e,n,t))})),o})));var n,r;return\"number\"==typeof e?t[e]:t}};cn.data=cn.json;const hn=function(e){const t=e.pre||\"\",n=e.post||\"\";return t+e.text+n},dn=function(e,t){const n=function(e,t){const n={};return Object.keys(t).forEach((r=>{e.match(r).fullPointer.forEach((e=>{n[e[3]]={fn:t[r],end:e[2]}}))})),n}(e,t);let r=\"\";return e.docs.forEach(((t,o)=>{for(let a=0;a<t.length;a+=1){const i=t[a];if(n.hasOwnProperty(i.id)){const{fn:s,end:l}=n[i.id],u=e.update([[o,a,l]]);r+=t[a].pre||\"\",r+=s(u),a=l-1,r+=t[a].post||\"\"}else r+=hn(i)}})),r},gn={debug:function(e){const t=this.methods.one.debug||{};return e&&t.hasOwnProperty(e)?(t[e](this),this):\"undefined\"!=typeof window&&window.document?(t.clientSide(this),this):(t.tags(this),this)},out:function(e){if(t=e,\"[object Object]\"===Object.prototype.toString.call(t))return dn(this,e);var t;if(\"text\"===e)return this.text();if(\"normal\"===e)return this.text(\"normal\");if(\"root\"===e)return this.text(\"root\");if(\"machine\"===e||\"reduced\"===e)return this.text(\"machine\");if(\"hash\"===e||\"md5\"===e)return on(this.text());if(\"json\"===e)return this.json();if(\"offset\"===e||\"offsets\"===e)return this.compute(\"offset\"),this.json({offset:!0});if(\"array\"===e){const e=this.docs.map((e=>e.reduce(((e,t)=>e+t.pre+t.text+t.post),\"\").trim()));return e.filter((e=>e))}if(\"freq\"===e||\"frequency\"===e||\"topk\"===e)return function(e){const t={};e.forEach((e=>{t[e]=t[e]||0,t[e]+=1}));const n=Object.keys(t).map((e=>({normal:e,count:t[e]})));return n.sort(((e,t)=>e.count>t.count?-1:0))}(this.json({normal:!0}).map((e=>e.normal)));if(\"terms\"===e){let e=[];return this.docs.forEach((t=>{let n=t.map((e=>e.text));n=n.filter((e=>e)),e=e.concat(n)})),e}return\"tags\"===e?this.docs.map((e=>e.reduce(((e,t)=>(e[t.implicit||t.normal]=Array.from(t.tags),e)),{}))):\"debug\"===e?this.debug():this.text()},wrap:function(e){return dn(this,e)}};var mn={text:function(e){let t={};var n;if(e&&\"string\"==typeof e&&tn.hasOwnProperty(e)?t=Object.assign({},tn[e]):e&&(n=e,\"[object Object]\"===Object.prototype.toString.call(n))&&(t=Object.assign({},e)),void 0!==t.keepSpace||this.isFull()||(t.keepSpace=!1),void 0===t.keepEndPunct&&this.pointer){const e=this.pointer[0];e&&e[1]?t.keepEndPunct=!1:t.keepEndPunct=!0}return void 0===t.keepPunct&&(t.keepPunct=!0),void 0===t.keepSpace&&(t.keepSpace=!0),function(e,t){let n=\"\";if(!e||!e[0]||!e[0][0])return n;for(let r=0;r<e.length;r+=1)n+=en(e[r],t,!0);if(t.keepSpace||(n=n.trim()),!1===t.keepEndPunct){e[0][0].tags.has(\"Emoticon\")||(n=n.replace(Zt,\"\"));const t=e[e.length-1];t[t.length-1].tags.has(\"Emoticon\")||(n=n.replace(Qt,\"\")),n.endsWith(\"'\")&&!n.endsWith(\"s'\")&&(n=n.replace(/'/,\"\"))}return!0===t.cleanWhitespace&&(n=n.trim()),n}(this.docs,t)}};const pn=Object.assign({},gn,mn,cn,Rt),fn=\"\u001b[0m\",bn={green:e=>\"\u001b[32m\"+e+fn,red:e=>\"\u001b[31m\"+e+fn,blue:e=>\"\u001b[34m\"+e+fn,magenta:e=>\"\u001b[35m\"+e+fn,cyan:e=>\"\u001b[36m\"+e+fn,yellow:e=>\"\u001b[33m\"+e+fn,black:e=>\"\u001b[30m\"+e+fn,dim:e=>\"\u001b[2m\"+e+fn,i:e=>\"\u001b[3m\"+e+fn},vn={tags:function(e){const{docs:t,model:n}=e;0===t.length&&console.log(bn.blue(\"\\n     ──────\")),t.forEach((t=>{console.log(bn.blue(\"\\n  ┌─────────\")),t.forEach((t=>{const r=[...t.tags||[]];let o=t.text||\"-\";t.sense&&(o=`{${t.normal}/${t.sense}}`),t.implicit&&(o=\"[\"+t.implicit+\"]\"),o=bn.yellow(o);let a=\"'\"+o+\"'\";if(t.reference){const n=e.update([t.reference]).text(\"normal\");a+=` - ${bn.dim(bn.i(\"[\"+n+\"]\"))}`}a=a.padEnd(18);const i=bn.blue(\"  │ \")+bn.i(a)+\"  - \"+function(e,t){return t.one.tagSet&&(e=e.map((e=>{if(!t.one.tagSet.hasOwnProperty(e))return e;const n=t.one.tagSet[e].color||\"blue\";return bn[n](e)}))),e.join(\", \")}(r,n);console.log(i)}))})),console.log(\"\\n\")},clientSide:function(e){console.log(\"%c -=-=- \",\"background-color:#6699cc;\"),e.forEach((e=>{console.groupCollapsed(e.text());const t=e.docs[0].map((e=>{let t=e.text||\"-\";e.implicit&&(t=\"[\"+e.implicit+\"]\");return{text:t,tags:\"[\"+Array.from(e.tags).join(\", \")+\"]\"}}));console.table(t,[\"text\",\"tags\"]),console.groupEnd()}))},chunks:function(e){const{docs:t}=e;console.log(\"\"),t.forEach((e=>{const t=[];e.forEach((e=>{\"Noun\"===e.chunk?t.push(bn.blue(e.implicit||e.normal)):\"Verb\"===e.chunk?t.push(bn.green(e.implicit||e.normal)):\"Adjective\"===e.chunk?t.push(bn.yellow(e.implicit||e.normal)):\"Pivot\"===e.chunk?t.push(bn.red(e.implicit||e.normal)):t.push(e.implicit||e.normal)})),console.log(t.join(\" \"),\"\\n\")})),console.log(\"\\n\")},highlight:function(e){if(!e.found)return;const t={};e.fullPointer.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),Object.keys(t).forEach((n=>{let r=e.update([[Number(n)]]).text();e.update(t[n]).json({offset:!0}).forEach(((e,t)=>{r=function(e,t,n){const r=((e,t,n)=>{const r=9*n,o=t.start+r,a=o+t.length;return[e.substring(0,o),e.substring(o,a),e.substring(a,e.length)]})(e,t,n);return`${r[0]}${bn.blue(r[1])}${r[2]}`}(r,e.offset,t)})),console.log(r)})),console.log(\"\\n\")}};var yn={api:function(e){Object.assign(e.prototype,pn)},methods:{one:{hash:on,debug:vn}}};const wn=function(e,t){if(e[0]!==t[0])return!1;const[,n,r]=e,[,o,a]=t;return n<=o&&r>o||o<=n&&a>n},kn=function(e){const t={};return e.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),t},Pn=function(e,t){const n=kn(t),r=[];return e.forEach((e=>{const[t]=e;let o=n[t]||[];if(o=o.filter((t=>function(e,t){return e[1]<=t[1]&&t[2]<=e[2]}(e,t))),0===o.length)return void r.push({passthrough:e});o=o.sort(((e,t)=>e[1]-t[1]));let a=e;o.forEach(((e,t)=>{const n=function(e,t){const[n,r]=e,o=t[1],a=t[2],i={};if(r<o){const t=o<e[2]?o:e[2];i.before=[n,r,t]}return i.match=t,e[2]>a&&(i.after=[n,a,e[2]]),i}(a,e);o[t+1]?(r.push({before:n.before,match:n.match}),n.after&&(a=n.after)):r.push(n)}))})),r};var An={one:{termList:function(e){const t=[];for(let n=0;n<e.length;n+=1)for(let r=0;r<e[n].length;r+=1)t.push(e[n][r]);return t},getDoc:function(e,t){let n=[];return e.forEach(((r,o)=>{if(!r)return;let[a,i,s,l,u]=r,c=t[a]||[];if(void 0===i&&(i=0),void 0===s&&(s=c.length),!l||c[i]&&c[i].id===l)c=c.slice(i,s);else{const n=function(e,t,n){for(let r=0;r<20;r+=1){if(t[n-r]){const o=t[n-r].findIndex((t=>t.id===e));if(-1!==o)return[n-r,o]}if(t[n+r]){const o=t[n+r].findIndex((t=>t.id===e));if(-1!==o)return[n+r,o]}}return null}(l,t,a);if(null!==n){const r=s-i;c=t[n[0]].slice(n[1],n[1]+r);const a=c[0]?c[0].id:null;e[o]=[n[0],n[1],n[1]+r,a]}}0!==c.length&&i!==s&&(u&&c[c.length-1].id!==u&&(c=function(e,t){const[n,r,,,o]=e,a=t[n],i=a.findIndex((e=>e.id===o));return-1===i?(e[2]=t[n].length,e[4]=a.length?a[a.length-1].id:null):e[2]=i,t[n].slice(r,e[2]+1)}(r,t)),n.push(c))})),n=n.filter((e=>e.length>0)),n},pointer:{indexN:kn,splitAll:Pn}}};const Cn=function(e,t){const n=e.concat(t),r=kn(n);let o=[];return n.forEach((e=>{const[t]=e;if(1===r[t].length)return void o.push(e);const n=r[t].filter((t=>wn(e,t)));n.push(e);const a=function(e){let t=e[0][1],n=e[0][2];return e.forEach((e=>{e[1]<t&&(t=e[1]),e[2]>n&&(n=e[2])})),[e[0][0],t,n]}(n);o.push(a)})),o=function(e){const t={};for(let n=0;n<e.length;n+=1)t[e[n].join(\",\")]=e[n];return Object.values(t)}(o),o},Nn=function(e,t){const n=[];return Pn(e,t).forEach((e=>{e.passthrough&&n.push(e.passthrough),e.before&&n.push(e.before),e.after&&n.push(e.after)})),n},jn=(e,t)=>{return\"string\"==typeof e||(n=e,\"[object Array]\"===Object.prototype.toString.call(n))?t.match(e):e||t.none();var n},xn=function(e,t){return e.map((e=>{const[n,r]=e;return t[n]&&t[n][r]&&(e[3]=t[n][r].id),e}))},In={union:function(e){e=jn(e,this);let t=Cn(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)}};In.and=In.union,In.intersection=function(e){e=jn(e,this);let t=function(e,t){const n=kn(t),r=[];return e.forEach((e=>{let t=n[e[0]]||[];t=t.filter((t=>wn(e,t))),0!==t.length&&t.forEach((t=>{const n=function(e,t){const n=e[1]<t[1]?t[1]:e[1],r=e[2]>t[2]?t[2]:e[2];return n<r?[e[0],n,r]:null}(e,t);n&&r.push(n)}))})),r}(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)},In.not=function(e){e=jn(e,this);let t=Nn(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)},In.difference=In.not,In.complement=function(){const e=this.all();let t=Nn(e.fullPointer,this.fullPointer);return t=xn(t,this.document),this.toView(t)},In.settle=function(){let e=this.fullPointer;return e.forEach((t=>{e=Cn(e,[t])})),e=xn(e,this.document),this.update(e)};var Tn={methods:An,api:function(e){Object.assign(e.prototype,In)}};const Dn=function(e){return!0===e.optional||!0===e.negative?null:e.tag?\"#\"+e.tag:e.word?e.word:e.switch?`%${e.switch}%`:null},Hn=function(e,t){const n=t.methods.one.parseMatch;return e.forEach((e=>{e.regs=n(e.match,{},t),\"string\"==typeof e.ifNo&&(e.ifNo=[e.ifNo]),e.notIf&&(e.notIf=n(e.notIf,{},t)),e.needs=function(e){const t=[];return e.forEach((e=>{t.push(Dn(e)),\"and\"===e.operator&&e.choices&&e.choices.forEach((e=>{e.forEach((e=>{t.push(Dn(e))}))}))})),t.filter((e=>e))}(e.regs);const{wants:r,count:o}=function(e){const t=[];let n=0;return e.forEach((e=>{\"or\"!==e.operator||e.optional||e.negative||(e.fastOr&&Array.from(e.fastOr).forEach((e=>{t.push(e)})),e.choices&&e.choices.forEach((e=>{e.forEach((e=>{const n=Dn(e);n&&t.push(n)}))})),n+=1)})),{wants:t,count:n}}(e.regs);e.wants=r,e.minWant=o,e.minWords=e.regs.filter((e=>!e.optional)).length})),e};var En={buildNet:function(e,t){e=Hn(e,t);const n={};e.forEach((e=>{e.needs.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)})),e.wants.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)}))})),Object.keys(n).forEach((e=>{const t={};n[e]=n[e].filter((e=>\"boolean\"!=typeof t[e.match]&&(t[e.match]=!0,!0)))}));const r=e.filter((e=>0===e.needs.length&&0===e.wants.length));return{hooks:n,always:r}},bulkMatch:function(e,t,n,r={}){const o=n.one.cacheDoc(e);let a=function(e,t){return e.map(((n,r)=>{let o=[];Object.keys(t).forEach((n=>{e[r].has(n)&&(o=o.concat(t[n]))}));const a={};return o=o.filter((e=>\"boolean\"!=typeof a[e.match]&&(a[e.match]=!0,!0))),o}))}(o,t.hooks);a=function(e,t){return e.map(((e,n)=>{const r=t[n];return(e=(e=e.filter((e=>e.needs.every((e=>r.has(e)))))).filter((e=>void 0===e.ifNo||!0!==e.ifNo.some((e=>r.has(e)))))).filter((e=>0===e.wants.length||e.wants.filter((e=>r.has(e))).length>=e.minWant))}))}(a,o),t.always.length>0&&(a=a.map((e=>e.concat(t.always)))),a=function(e,t){return e.map(((e,n)=>{const r=t[n].length;return e=e.filter((e=>r>=e.minWords)),e}))}(a,e);const i=function(e,t,n,r,o){const a=[];for(let n=0;n<e.length;n+=1)for(let i=0;i<e[n].length;i+=1){const s=e[n][i],l=r.one.match([t[n]],s);if(l.ptrs.length>0&&(l.ptrs.forEach((e=>{e[0]=n;const t=Object.assign({},s,{pointer:e});void 0!==s.unTag&&(t.unTag=s.unTag),a.push(t)})),!0===o.matchOne))return[a[0]]}return a}(a,e,0,n,r);return i},bulkTagger:function(e,t,n){const{model:r,methods:o}=n,{getDoc:a,setTag:i,unTag:s}=o.one,l=o.two.looksPlural;if(0===e.length)return e;return(\"undefined\"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_TAGS&&console.log(`\\n\\n  \u001b[32m→ ${e.length} post-tagger:\u001b[0m`),e.map((e=>{if(!e.tag&&!e.chunk&&!e.unTag)return;const o=e.reason||e.match,u=a([e.pointer],t)[0];if(!0===e.safe){if(!1===function(e,t,n){const r=n.one.tagSet;if(!r.hasOwnProperty(t))return!0;const o=r[t].not||[];for(let t=0;t<e.length;t+=1){const n=e[t];for(let e=0;e<o.length;e+=1)if(!0===n.tags.has(o[e]))return!1}return!0}(u,e.tag,r))return;if(\"-\"===u[u.length-1].post)return}if(void 0!==e.tag){if(i(u,e.tag,n,e.safe,`[post] '${o}'`),\"Noun\"===e.tag&&l){const t=u[u.length-1];l(t.text)?i([t],\"Plural\",n,e.safe,\"quick-plural\"):i([t],\"Singular\",n,e.safe,\"quick-singular\")}!0===e.freeze&&u.forEach((e=>e.frozen=!0))}void 0!==e.unTag&&s(u,e.unTag,n,e.safe,o),e.chunk&&u.forEach((t=>t.chunk=e.chunk))}))}},Gn={lib:{buildNet:function(e){const t=this.methods().one.buildNet(e,this.world());return t.isNet=!0,t}},api:function(e){e.prototype.sweep=function(e,t={}){const{world:n,docs:r}=this,{methods:o}=n;let a=o.one.bulkMatch(r,e,this.methods,t);!1!==t.tagger&&o.one.bulkTagger(a,r,this.world),a=a.map((e=>{const t=e.pointer,n=r[t[0]][t[1]],o=t[2]-t[1];return n.index&&(e.pointer=[n.index[0],n.index[1],t[1]+o]),e}));const i=a.map((e=>e.pointer));return a=a.map((e=>(e.view=this.update([e.pointer]),delete e.regs,delete e.needs,delete e.pointer,delete e._expanded,e))),{view:this.update(i),found:a}}},methods:{one:En}};const On=/ /,Fn=function(e,t){\"Noun\"===t&&(e.chunk=t),\"Verb\"===t&&(e.chunk=t)},Vn=function(e,t,n,r){if(!0===e.tags.has(t))return null;if(\".\"===t)return null;!0===e.frozen&&(r=!0);const o=n[t];if(o){if(o.not&&o.not.length>0)for(let t=0;t<o.not.length;t+=1){if(!0===r&&e.tags.has(o.not[t]))return null;e.tags.delete(o.not[t])}if(o.parents&&o.parents.length>0)for(let t=0;t<o.parents.length;t+=1)e.tags.add(o.parents[t]),Fn(e,o.parents[t])}return e.tags.add(t),e.dirty=!0,Fn(e,t),!0},zn=function(e,t,n={},r,o){const a=n.model.one.tagSet||{};if(!t)return;const i=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};var s;if(i&&i.DEBUG_TAGS&&((e,t,n=\"\")=>{const r=e.map((e=>e.text||\"[\"+e.implicit+\"]\")).join(\" \");var o;\"string\"!=typeof t&&t.length>2&&(t=t.slice(0,2).join(\", #\")+\" +\"),t=\"string\"!=typeof t?t.join(\", #\"):t,console.log(` ${(o=r,\"\u001b[33m\u001b[3m\"+o+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${t.padEnd(22)}  ${(e=>\"\u001b[3m\"+e+\"\u001b[0m\")(n)}`)})(e,t,o),!0!=(s=t,\"[object Array]\"===Object.prototype.toString.call(s)))if(\"string\"==typeof t)if(t=t.trim(),On.test(t))!function(e,t,n,r){const o=t.split(On);e.forEach(((e,t)=>{let a=o[t];a&&(a=a.replace(/^#/,\"\"),Vn(e,a,n,r))}))}(e,t,a,r);else{t=t.replace(/^#/,\"\");for(let n=0;n<e.length;n+=1)Vn(e[n],t,a,r)}else console.warn(`compromise: Invalid tag '${t}'`);else t.forEach((t=>zn(e,t,n,r)))},Bn=function(e){return e.children=e.children||[],e._cache=e._cache||{},e.props=e.props||{},e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],e},Sn=/^ *(#|\\/\\/)/,$n=function(e){let t=e.trim().split(/->/),n=[];t.forEach((e=>{n=n.concat(function(e){if(!(e=e.trim()))return null;if(/^\\[/.test(e)&&/\\]$/.test(e)){let t=(e=(e=e.replace(/^\\[/,\"\")).replace(/\\]$/,\"\")).split(/,/);return t=t.map((e=>e.trim())).filter((e=>e)),t=t.map((e=>Bn({id:e}))),t}return[Bn({id:e})]}(e))})),n=n.filter((e=>e));let r=n[0];for(let e=1;e<n.length;e+=1)r.children.push(n[e]),r=n[e];return n[0]},Mn=(e,t)=>{let n=[],r=[e];for(;r.length>0;){let e=r.pop();n.push(e),e.children&&e.children.forEach((n=>{t&&t(e,n),r.push(n)}))}return n},Ln=e=>\"[object Array]\"===Object.prototype.toString.call(e),Kn=e=>(e=e||\"\").trim(),Jn=function(e=[]){return\"string\"==typeof e?function(e){let t=e.split(/\\r?\\n/),n=[];t.forEach((e=>{if(!e.trim()||Sn.test(e))return;let t=(e=>{const t=/^( {2}|\\t)/;let n=0;for(;t.test(e);)e=e.replace(t,\"\"),n+=1;return n})(e);n.push({indent:t,node:$n(e)})}));let r=function(e){let t={children:[]};return e.forEach(((n,r)=>{0===n.indent?t.children=t.children.concat(n.node):e[r-1]&&function(e,t){let n=e[t].indent;for(;t>=0;t-=1)if(e[t].indent<n)return e[t];return e[0]}(e,r).node.children.push(n.node)})),t}(n);return r=Bn(r),r}(e):Ln(e)?function(e){let t={};e.forEach((e=>{t[e.id]=e}));let n=Bn({});return e.forEach((e=>{if((e=Bn(e)).parent)if(t.hasOwnProperty(e.parent)){let n=t[e.parent];delete e.parent,n.children.push(e)}else console.warn(`[Grad] - missing node '${e.parent}'`);else n.children.push(e)})),n}(e):(Mn(t=e).forEach(Bn),t);var t},Wn=function(e,t){let n=\"-> \";t&&(n=(e=>\"\u001b[2m\"+e+\"\u001b[0m\")(\"→ \"));let r=\"\";return Mn(e).forEach(((e,o)=>{let a=e.id||\"\";if(t&&(a=(e=>\"\u001b[31m\"+e+\"\u001b[0m\")(a)),0===o&&!e.id)return;let i=e._cache.parents.length;r+=\"    \".repeat(i)+n+a+\"\\n\"})),r},qn=function(e){let t=Mn(e);t.forEach((e=>{delete(e=Object.assign({},e)).children}));let n=t[0];return n&&!n.id&&0===Object.keys(n.props).length&&t.shift(),t},Un={text:Wn,txt:Wn,array:qn,flat:qn},Rn=function(e,t){return\"nested\"===t||\"json\"===t?e:\"debug\"===t?(console.log(Wn(e,!0)),null):Un.hasOwnProperty(t)?Un[t](e):e},Qn=e=>{Mn(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],t._cache.parents=e._cache.parents.concat([e.id]))}))},Zn=/\\//;let _n=class g{constructor(e={}){Object.defineProperty(this,\"json\",{enumerable:!1,value:e,writable:!0})}get children(){return this.json.children}get id(){return this.json.id}get found(){return this.json.id||this.json.children.length>0}props(e={}){let t=this.json.props||{};return\"string\"==typeof e&&(t[e]=!0),this.json.props=Object.assign(t,e),this}get(e){if(e=Kn(e),!Zn.test(e)){let t=this.json.children.find((t=>t.id===e));return new g(t)}let t=((e,t)=>{let n=(e=>\"string\"!=typeof e?e:(e=e.replace(/^\\//,\"\")).split(/\\//))(t=t||\"\");for(let t=0;t<n.length;t+=1){let r=e.children.find((e=>e.id===n[t]));if(!r)return null;e=r}return e})(this.json,e)||Bn({});return new g(t)}add(e,t={}){if(Ln(e))return e.forEach((e=>this.add(Kn(e),t))),this;e=Kn(e);let n=Bn({id:e,props:t});return this.json.children.push(n),new g(n)}remove(e){return e=Kn(e),this.json.children=this.json.children.filter((t=>t.id!==e)),this}nodes(){return Mn(this.json).map((e=>(delete(e=Object.assign({},e)).children,e)))}cache(){return(e=>{let t=Mn(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],t._cache.parents=e._cache.parents.concat([e.id]))})),n={};t.forEach((e=>{e.id&&(n[e.id]=e)})),t.forEach((e=>{e._cache.parents.forEach((t=>{n.hasOwnProperty(t)&&n[t]._cache.children.push(e.id)}))})),e._cache.children=Object.keys(n)})(this.json),this}list(){return Mn(this.json)}fillDown(){var e;return e=this.json,Mn(e,((e,t)=>{t.props=((e,t)=>(Object.keys(t).forEach((n=>{if(t[n]instanceof Set){let r=e[n]||new Set;e[n]=new Set([...r,...t[n]])}else if((e=>e&&\"object\"==typeof e&&!Array.isArray(e))(t[n])){let r=e[n]||{};e[n]=Object.assign({},t[n],r)}else Ln(t[n])?e[n]=t[n].concat(e[n]||[]):void 0===e[n]&&(e[n]=t[n])})),e))(t.props,e.props)})),this}depth(){Qn(this.json);let e=Mn(this.json),t=e.length>1?1:0;return e.forEach((e=>{if(0===e._cache.parents.length)return;let n=e._cache.parents.length+1;n>t&&(t=n)})),t}out(e){return Qn(this.json),Rn(this.json,e)}debug(){return Qn(this.json),Rn(this.json,\"debug\"),this}};const Xn=function(e){let t=Jn(e);return new _n(t)};Xn.prototype.plugin=function(e){e(this)};const Yn={Noun:\"blue\",Verb:\"green\",Negative:\"green\",Date:\"red\",Value:\"red\",Adjective:\"magenta\",Preposition:\"cyan\",Conjunction:\"cyan\",Determiner:\"cyan\",Hyphenated:\"cyan\",Adverb:\"cyan\"},er=function(e){if(Yn.hasOwnProperty(e.id))return Yn[e.id];if(Yn.hasOwnProperty(e.is))return Yn[e.is];const t=e._cache.parents.find((e=>Yn[e]));return Yn[t]},tr=function(e){return e?\"string\"==typeof e?[e]:e:[]},nr=function(e,t){return e=function(e,t){return Object.keys(e).forEach((n=>{e[n].isA&&(e[n].is=e[n].isA),e[n].notA&&(e[n].not=e[n].notA),e[n].is&&\"string\"==typeof e[n].is&&(t.hasOwnProperty(e[n].is)||e.hasOwnProperty(e[n].is)||(e[e[n].is]={})),e[n].not&&\"string\"==typeof e[n].not&&!e.hasOwnProperty(e[n].not)&&(t.hasOwnProperty(e[n].not)||e.hasOwnProperty(e[n].not)||(e[e[n].not]={}))})),e}(e,t),Object.keys(e).forEach((t=>{e[t].children=tr(e[t].children),e[t].not=tr(e[t].not)})),Object.keys(e).forEach((t=>{(e[t].not||[]).forEach((n=>{e[n]&&e[n].not&&e[n].not.push(t)}))})),e};var rr={one:{setTag:zn,unTag:function(e,t,n){t=t.trim().replace(/^#/,\"\");for(let r=0;r<e.length;r+=1){const o=e[r];if(!0===o.frozen)continue;if(\"*\"===t){o.tags.clear();continue}const a=n[t];if(a&&a.children.length>0)for(let e=0;e<a.children.length;e+=1)o.tags.delete(a.children[e]);o.tags.delete(t)}},addTags:function(e,t){Object.keys(t).length>0&&(e=function(e){return Object.keys(e).forEach((t=>{e[t]=Object.assign({},e[t]),e[t].novel=!0})),e}(e)),e=nr(e,t);const n=function(e){const t=Object.keys(e).map((t=>{const n=e[t],r={not:new Set(n.not),also:n.also,is:n.is,novel:n.novel};return{id:t,parent:n.is,props:r,children:[]}}));return Xn(t).cache().fillDown().out(\"array\")}(Object.assign({},t,e)),r=function(e){const t={};return e.forEach((e=>{const{not:n,also:r,is:o,novel:a}=e.props;let i=e._cache.parents;r&&(i=i.concat(r)),t[e.id]={is:o,not:n,novel:a,also:r,parents:i,children:e._cache.children,color:er(e)}})),Object.keys(t).forEach((e=>{const n=new Set(t[e].not);t[e].not.forEach((e=>{t[e]&&t[e].children.forEach((e=>n.add(e)))})),t[e].not=Array.from(n)})),t}(n);return r},canBe:function(e,t,n){if(!n.hasOwnProperty(t))return!0;const r=n[t].not||[];for(let t=0;t<r.length;t+=1)if(e.tags.has(r[t]))return!1;return!0}}};const or=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},ar={tag:function(e,t=\"\",n){if(!this.found||!e)return this;const r=this.termList();if(0===r.length)return this;const{methods:o,verbose:a,world:i}=this;return!0===a&&console.log(\" +  \",e,t||\"\"),or(e)?e.forEach((e=>o.one.setTag(r,e,i,n,t))):o.one.setTag(r,e,i,n,t),this.uncache(),this},tagSafe:function(e,t=\"\"){return this.tag(e,t,!0)},unTag:function(e,t){if(!this.found||!e)return this;const n=this.termList();if(0===n.length)return this;const{methods:r,verbose:o,model:a}=this;!0===o&&console.log(\" -  \",e,t||\"\");const i=a.one.tagSet;return or(e)?e.forEach((e=>r.one.unTag(n,e,i))):r.one.unTag(n,e,i),this.uncache(),this},canBe:function(e){e=e.replace(/^#/,\"\");const t=this.model.one.tagSet,n=this.methods.one.canBe,r=[];this.document.forEach(((o,a)=>{o.forEach(((o,i)=>{n(o,e,t)||r.push([a,i,i+1])}))}));const o=this.update(r);return this.difference(o)}};var ir={addTags:function(e){const{model:t,methods:n}=this.world(),r=t.one.tagSet,o=(0,n.one.addTags)(e,r);return t.one.tagSet=o,this}};const sr=new Set([\"Auxiliary\",\"Possessive\"]);var lr={model:{one:{tagSet:{}}},compute:{tagRank:function(e){const{document:t,world:n}=e,r=n.model.one.tagSet;t.forEach((e=>{e.forEach((e=>{const t=Array.from(e.tags);e.tagRank=function(e,t){return e=e.sort(((e,n)=>{if(sr.has(e)||!t.hasOwnProperty(n))return 1;if(sr.has(n)||!t.hasOwnProperty(e))return-1;let r=t[e].children||[];const o=r.length;return r=t[n].children||[],o-r.length})),e}(t,r)}))}))}},methods:rr,api:function(e){Object.assign(e.prototype,ar)},lib:ir};const ur=/([.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s)/g,cr=/^[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s$/,hr=/((?:\\r?\\n|\\r)+)/,dr=/[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i,gr=/\\S/,mr=function(e){return Boolean(e.match(/\\n$/))},pr={'\"':'\"',\"＂\":\"＂\",\"“\":\"”\",\"‟\":\"”\",\"„\":\"”\",\"⹂\":\"”\",\"‚\":\"’\",\"«\":\"»\",\"‹\":\"›\",\"‵\":\"′\",\"‶\":\"″\",\"‷\":\"‴\",\"〝\":\"〞\",\"〟\":\"〞\"},fr=RegExp(\"[\"+Object.keys(pr).join(\"\")+\"]\",\"g\"),br=RegExp(\"[\"+Object.values(pr).join(\"\")+\"]\",\"g\"),vr=function(e){if(!e)return!1;const t=e.match(br);return null!==t&&1===t.length},yr=/\\(/g,wr=/\\)/g,kr=/\\S/,Pr=/^\\s+/,Ar=function(e,t){const n=e.split(/[-–—]/);if(n.length<=1)return!1;const{prefixes:r,suffixes:o}=t.one;if(1===n[0].length&&/[a-z]/i.test(n[0]))return!1;if(r.hasOwnProperty(n[0]))return!1;if(n[1]=n[1].trim().replace(/[.?!]$/,\"\"),o.hasOwnProperty(n[1]))return!1;if(!0===/^([a-z\\u00C0-\\u00FF`\"'/]+)[-–—]([a-z0-9\\u00C0-\\u00FF].*)/i.test(e))return!0;return!0===/^[('\"]?([0-9]{1,4})[-–—]([a-z\\u00C0-\\u00FF`\"'/-]+[)'\"]?$)/i.test(e)},Cr=function(e){const t=[],n=e.split(/[-–—]/);let r=\"-\";const o=e.match(/[-–—]/);o&&o[0]&&(r=o);for(let e=0;e<n.length;e++)e===n.length-1?t.push(n[e]):t.push(n[e]+r);return t},Nr=/\\p{L} ?\\/ ?\\p{L}+$/u,jr=/\\S/,xr=/^[!?.]+$/,Ir=/(\\S+)/;let Tr=[\".\",\"?\",\"!\",\":\",\";\",\"-\",\"–\",\"—\",\"--\",\"...\",\"(\",\")\",\"[\",\"]\",'\"',\"'\",\"`\",\"«\",\"»\",\"*\",\"•\"];Tr=Tr.reduce(((e,t)=>(e[t]=!0,e)),{});const Dr=/\\p{Letter}/u,Hr=/[\\p{Number}\\p{Currency_Symbol}]/u,Er=/^[a-z]\\.([a-z]\\.)+/i,Gr=/[sn]['’]$/,Or=/([A-Z]\\.)+[A-Z]?,?$/,Fr=/^[A-Z]\\.,?$/,Vr=/[A-Z]{2,}('s|,)?$/,zr=/([a-z]\\.)+[a-z]\\.?$/,Br=function(e){return function(e){return!0===Or.test(e)||!0===zr.test(e)||!0===Fr.test(e)||!0===Vr.test(e)}(e)&&(e=e.replace(/\\./g,\"\")),e},Sr=function(e,t){const n=t.methods.one.killUnicode;let r=e.text||\"\";r=function(e){const t=e=(e=(e=e||\"\").toLowerCase()).trim();return e=(e=(e=e.replace(/[,;.!?]+$/,\"\")).replace(/\\u2026/g,\"...\")).replace(/\\u2013/g,\"-\"),!1===/^[:;]/.test(e)&&(e=(e=(e=e.replace(/\\.{3,}$/g,\"\")).replace(/[\",.!:;?)]+$/g,\"\")).replace(/^['\"(]+/g,\"\")),\"\"===(e=(e=e.replace(/[\\u200B-\\u200D\\uFEFF]/g,\"\")).trim())&&(e=t),e.replace(/([0-9]),([0-9])/g,\"$1$2\")}(r),r=n(r,t),r=Br(r),e.normal=r},$r=/[ .][A-Z]\\.? *$/i,Mr=/(?:\\u2026|\\.{2,}) *$/,Lr=/\\p{L}/u,Kr=/\\. *$/,Jr=/^[A-Z]\\. $/;var Wr={one:{killUnicode:function(e,t){const n=t.model.one.unicode||{},r=(e=e||\"\").split(\"\");return r.forEach(((e,t)=>{n[e]&&(r[t]=n[e])})),r.join(\"\")},tokenize:{splitSentences:function(e,t){if(e=e||\"\",!(e=String(e))||\"string\"!=typeof e||!1===kr.test(e))return[];const n=function(e){const t=[],n=e.split(hr);for(let e=0;e<n.length;e++){const r=n[e].split(ur);for(let e=0;e<r.length;e++)r[e+1]&&!0===cr.test(r[e+1])&&(r[e]+=r[e+1],r[e+1]=\"\"),\"\"!==r[e]&&t.push(r[e])}return t}(e=e.replace(\" \",\" \"));let r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(void 0!==r&&\"\"!==r){if(!1===gr.test(r)||!1===dr.test(r)){if(t[t.length-1]){t[t.length-1]+=r;continue}if(e[n+1]){e[n+1]=r+e[n+1];continue}}t.push(r)}}return t}(n);if(r=function(e,t){const n=t.methods.one.tokenize.isSentence,r=t.model.one.abbreviations||new Set,o=[];for(let t=0;t<e.length;t++){const a=e[t];!e[t+1]||n(a,r)||mr(a)?a&&a.length>0&&(o.push(a),e[t]=\"\"):e[t+1]=a+(e[t+1]||\"\")}return o}(r,t),r=function(e){const t=[];for(let n=0;n<e.length;n+=1){const r=e[n].match(fr);if(null!==r&&1===r.length){if(vr(e[n+1])&&e[n+1].length<280){e[n]+=e[n+1],t.push(e[n]),e[n+1]=\"\",n+=1;continue}if(vr(e[n+2])){const r=e[n+1]+e[n+2];if(r.length<280){e[n]+=r,t.push(e[n]),e[n+1]=\"\",e[n+2]=\"\",n+=2;continue}}}t.push(e[n])}return t}(r),r=function(e){const t=[];for(let n=0;n<e.length;n+=1){const r=e[n].match(yr);null!==r&&1===r.length&&e[n+1]&&e[n+1].length<250&&null!==e[n+1].match(wr)&&1===r.length&&!yr.test(e[n+1])?(e[n]+=e[n+1],t.push(e[n]),e[n+1]=\"\",n+=1):t.push(e[n])}return t}(r),0===r.length)return[e];for(let e=1;e<r.length;e+=1){const t=r[e].match(Pr);null!==t&&(r[e-1]+=t[0],r[e]=r[e].replace(Pr,\"\"))}return r},isSentence:function(e,t){if(!1===Lr.test(e))return!1;if(!0===$r.test(e))return!1;if(3===e.length&&Jr.test(e))return!1;if(!0===Mr.test(e))return!1;const n=e.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/,\"\").split(\" \"),r=n[n.length-1].toLowerCase();return!0!==t.hasOwnProperty(r)||!0!==Kr.test(e)},splitTerms:function(e,t){let n=[],r=[];if(\"number\"==typeof(e=e||\"\")&&(e=String(e)),function(e){return\"[object Array]\"===Object.prototype.toString.call(e)}(e))return e;const o=e.split(Ir);for(let e=0;e<o.length;e++)!0!==Ar(o[e],t)?r.push(o[e]):r=r.concat(Cr(o[e]));let a=\"\";for(let e=0;e<r.length;e++){const t=r[e];!0===jr.test(t)&&!1===Tr.hasOwnProperty(t)&&!1===xr.test(t)?(n.length>0?(n[n.length-1]+=a,n.push(t)):n.push(a+t),a=\"\"):a+=t}return a&&(0===n.length&&(n[0]=\"\"),n[n.length-1]+=a),n=function(e){for(let t=1;t<e.length-1;t++)Nr.test(e[t])&&(e[t-1]+=e[t]+e[t+1],e[t]=null,e[t+1]=null);return e}(n),n=function(e){const t=/^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?[-–—] ?$/,n=/^[0-9]{1,4}([a-z]{1,2})? ?$/;for(let r=0;r<e.length-1;r+=1)e[r+1]&&t.test(e[r])&&n.test(e[r+1])&&(e[r]=e[r]+e[r+1],e[r+1]=null);return e}(n),n=n.filter((e=>e)),n},splitWhitespace:(e,t)=>{const{str:n,pre:r,post:o}=function(e,t){const{prePunctuation:n,postPunctuation:r,emoticons:o}=t.one;let a=e,i=\"\",s=\"\";const l=Array.from(e);if(o.hasOwnProperty(e.trim()))return{str:e.trim(),pre:i,post:\" \"};let u=l.length;for(let e=0;e<u;e+=1){const e=l[0];if(!0!==n[e]){if((\"+\"===e||\"-\"===e)&&Hr.test(l[1]))break;if(\"'\"===e&&3===e.length&&Hr.test(l[1]))break;if(Dr.test(e)||Hr.test(e))break;i+=l.shift()}}u=l.length;for(let e=0;e<u;e+=1){const e=l[l.length-1];if(!0!==r[e]){if(Dr.test(e)||Hr.test(e))break;\".\"===e&&!0===Er.test(a)||\"'\"===e&&!0===Gr.test(a)||(s=l.pop()+s)}}return\"\"===(e=l.join(\"\"))&&(a=a.replace(/ *$/,(e=>(s=e||\"\",\"\"))),e=a,i=\"\"),{str:e,pre:i,post:s}}(e,t);return{text:n,pre:r,post:o,tags:new Set}},fromString:function(e,t){const{methods:n,model:r}=t,{splitSentences:o,splitTerms:a,splitWhitespace:i}=n.one.tokenize;return e=o(e=e||\"\",t).map((e=>{let n=a(e,r);return n=n.map((e=>i(e,r))),n.forEach((e=>{Sr(e,t)})),n})),e}}}};const qr={},Ur={};[[[\"approx\",\"apt\",\"bc\",\"cyn\",\"eg\",\"esp\",\"est\",\"etc\",\"ex\",\"exp\",\"prob\",\"pron\",\"gal\",\"min\",\"pseud\",\"fig\",\"jd\",\"lat\",\"lng\",\"vol\",\"fm\",\"def\",\"misc\",\"plz\",\"ea\",\"ps\",\"sec\",\"pt\",\"pref\",\"pl\",\"pp\",\"qt\",\"fr\",\"sq\",\"nee\",\"ss\",\"tel\",\"temp\",\"vet\",\"ver\",\"fem\",\"masc\",\"eng\",\"adj\",\"vb\",\"rb\",\"inf\",\"situ\",\"vivo\",\"vitro\",\"wr\"]],[[\"dl\",\"ml\",\"gal\",\"qt\",\"pt\",\"tbl\",\"tsp\",\"tbsp\",\"km\",\"dm\",\"cm\",\"mm\",\"mi\",\"td\",\"hr\",\"hrs\",\"kg\",\"hg\",\"dg\",\"cg\",\"mg\",\"µg\",\"lb\",\"oz\",\"sq ft\",\"hz\",\"mps\",\"mph\",\"kmph\",\"kb\",\"mb\",\"tb\",\"lx\",\"lm\",\"fl oz\",\"yb\"],\"Unit\"],[[\"ad\",\"al\",\"arc\",\"ba\",\"bl\",\"ca\",\"cca\",\"col\",\"corp\",\"ft\",\"fy\",\"ie\",\"lit\",\"ma\",\"md\",\"pd\",\"tce\"],\"Noun\"],[[\"adj\",\"adm\",\"adv\",\"asst\",\"atty\",\"bldg\",\"brig\",\"capt\",\"cmdr\",\"comdr\",\"cpl\",\"det\",\"dr\",\"esq\",\"gen\",\"gov\",\"hon\",\"jr\",\"llb\",\"lt\",\"maj\",\"messrs\",\"mlle\",\"mme\",\"mr\",\"mrs\",\"ms\",\"mstr\",\"phd\",\"prof\",\"pvt\",\"rep\",\"reps\",\"res\",\"rev\",\"sen\",\"sens\",\"sfc\",\"sgt\",\"sir\",\"sr\",\"supt\",\"surg\"],\"Honorific\"],[[\"jan\",\"feb\",\"mar\",\"apr\",\"jun\",\"jul\",\"aug\",\"sep\",\"sept\",\"oct\",\"nov\",\"dec\"],\"Month\"],[[\"dept\",\"univ\",\"assn\",\"bros\",\"inc\",\"ltd\",\"co\"],\"Organization\"],[[\"rd\",\"st\",\"dist\",\"mt\",\"ave\",\"blvd\",\"cl\",\"cres\",\"hwy\",\"ariz\",\"cal\",\"calif\",\"colo\",\"conn\",\"fla\",\"fl\",\"ga\",\"ida\",\"ia\",\"kan\",\"kans\",\"minn\",\"neb\",\"nebr\",\"okla\",\"penna\",\"penn\",\"pa\",\"dak\",\"tenn\",\"tex\",\"ut\",\"vt\",\"va\",\"wis\",\"wisc\",\"wy\",\"wyo\",\"usafa\",\"alta\",\"ont\",\"que\",\"sask\"],\"Place\"]].forEach((e=>{e[0].forEach((t=>{qr[t]=!0,Ur[t]=\"Abbreviation\",void 0!==e[1]&&(Ur[t]=[Ur[t],e[1]])}))}));var Rr=[\"anti\",\"bi\",\"co\",\"contra\",\"de\",\"extra\",\"infra\",\"inter\",\"intra\",\"macro\",\"micro\",\"mis\",\"mono\",\"multi\",\"peri\",\"pre\",\"pro\",\"proto\",\"pseudo\",\"re\",\"sub\",\"supra\",\"trans\",\"tri\",\"un\",\"out\",\"ex\"].reduce(((e,t)=>(e[t]=!0,e)),{});const Qr={\"!\":\"¡\",\"?\":\"¿Ɂ\",'\"':'“”\"❝❞',\"'\":\"‘‛❛❜’\",\"-\":\"—–\",a:\"ªÀÁÂÃÄÅàáâãäåĀāĂăĄąǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАаѦѧӐӑӒӓƛæ\",b:\"ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ\",c:\"¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼϲϹϽϾСсєҀҁҪҫ\",d:\"ÐĎďĐđƉƊȡƋƌ\",e:\"ÈÉÊËèéêëĒēĔĕĖėĘęĚěƐȄȅȆȇȨȩɆɇΈΕΞΣέεξϵЀЁЕеѐёҼҽҾҿӖӗễ\",f:\"ƑƒϜϝӺӻҒғſ\",g:\"ĜĝĞğĠġĢģƓǤǥǦǧǴǵ\",h:\"ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ\",I:\"ÌÍÎÏ\",i:\"ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇіїi̇\",j:\"ĴĵǰȷɈɉϳЈј\",k:\"ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ\",l:\"ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ\",m:\"ΜϺϻМмӍӎ\",n:\"ÑñŃńŅņŇňŉŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ\",o:\"ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϴОФоѲѳӦӧӨөӪӫ\",p:\"ƤΡρϷϸϼРрҎҏÞ\",q:\"Ɋɋ\",r:\"ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ\",s:\"ŚśŜŝŞşŠšƧƨȘșȿЅѕ\",t:\"ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт\",u:\"ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰυϋύ\",v:\"νѴѵѶѷ\",w:\"ŴŵƜωώϖϢϣШЩшщѡѿ\",x:\"×ΧχϗϰХхҲҳӼӽӾӿ\",y:\"ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ\",z:\"ŹźŻżŽžƵƶȤȥɀΖ\"},Zr={};Object.keys(Qr).forEach((function(e){Qr[e].split(\"\").forEach((function(t){Zr[t]=e}))}));const _r=/\\//,Xr=/[a-z]\\.[a-z]/i,Yr=/[0-9]/,eo=function(e,t){const n=e.normal||e.text||e.machine,r=t.model.one.aliases;if(r.hasOwnProperty(n)&&(e.alias=e.alias||[],e.alias.push(r[n])),_r.test(n)&&!Xr.test(n)&&!Yr.test(n)){const t=n.split(_r);t.length<=3&&t.forEach((t=>{\"\"!==(t=t.trim())&&(e.alias=e.alias||[],e.alias.push(t))}))}return e},to=/^\\p{Letter}+-\\p{Letter}+$/u,no=function(e){let t=e.implicit||e.normal||e.text;t=t.replace(/['’]s$/,\"\"),t=t.replace(/s['’]$/,\"s\"),t=t.replace(/([aeiou][ktrp])in'$/,\"$1ing\"),to.test(t)&&(t=t.replace(/-/g,\"\")),t=t.replace(/^[#@]/,\"\"),t!==e.normal&&(e.machine=t)},ro=function(e,t){const n=e.docs;for(let r=0;r<n.length;r+=1)for(let o=0;o<n[r].length;o+=1)t(n[r][o],e.world)},oo={alias:e=>ro(e,eo),machine:e=>ro(e,no),normal:e=>ro(e,Sr),freq:function(e){const t=e.docs,n={};for(let e=0;e<t.length;e+=1)for(let r=0;r<t[e].length;r+=1){const o=t[e][r],a=o.machine||o.normal;n[a]=n[a]||0,n[a]+=1}for(let e=0;e<t.length;e+=1)for(let r=0;r<t[e].length;r+=1){const o=t[e][r],a=o.machine||o.normal;o.freq=n[a]}},offset:function(e){let t=0,n=0;const r=e.document;for(let e=0;e<r.length;e+=1)for(let o=0;o<r[e].length;o+=1){const a=r[e][o];a.offset={index:n,start:t+a.pre.length,length:a.text.length},t+=a.pre.length+a.text.length+a.post.length,n+=1}},index:function(e){const t=e.document;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1)t[e][n].index=[e,n]},wordCount:function(e){let t=0;const n=e.docs;for(let e=0;e<n.length;e+=1)for(let r=0;r<n[e].length;r+=1)\"\"!==n[e][r].normal&&(t+=1,n[e][r].wordCount=t)}};var ao={compute:oo,methods:Wr,model:{one:{aliases:{\"&\":\"and\",\"@\":\"at\",\"%\":\"percent\",plz:\"please\",bein:\"being\"},abbreviations:qr,prefixes:Rr,suffixes:{like:!0,ish:!0,less:!0,able:!0,elect:!0,type:!0,designate:!0},prePunctuation:{\"#\":!0,\"@\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},postPunctuation:{\"%\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},lexicon:Ur,unicode:Zr,emoticons:{\"<3\":!0,\"</3\":!0,\"<\\\\3\":!0,\":^P\":!0,\":^p\":!0,\":^O\":!0,\":^3\":!0}}},hooks:[\"alias\",\"machine\",\"index\",\"id\"]};var io={typeahead:function(e){const t=e.model.one.typeahead,n=e.docs;if(0===n.length||0===Object.keys(t).length)return;const r=n[n.length-1]||[],o=r[r.length-1];if(!o.post&&t.hasOwnProperty(o.normal)){const n=t[o.normal];o.implicit=n,o.machine=n,o.typeahead=!0,e.compute.preTagger&&e.last().unTag(\"*\").compute([\"lexicon\",\"preTagger\"])}}};const so=function(){const e=this.docs;if(0===e.length)return this;const t=e[e.length-1]||[],n=t[t.length-1];return!0===n.typeahead&&n.machine&&(n.text=n.machine,n.normal=n.machine),this},lo={safe:!0,min:3};var uo={typeahead:function(e=[],t={}){const n=this.model();var r;t=Object.assign({},lo,t),r=e,\"[object Object]\"===Object.prototype.toString.call(r)&&(Object.assign(n.one.lexicon,e),e=Object.keys(e));const o=function(e,t,n){let r={};const o=[],a=n.prefixes||{};return e.forEach((e=>{let i=(e=e.toLowerCase().trim()).length;t.max&&i>t.max&&(i=t.max);for(let s=t.min;s<i;s+=1){const i=e.substring(0,s);t.safe&&n.model.one.lexicon.hasOwnProperty(i)||(!0!==a.hasOwnProperty(i)&&!0!==r.hasOwnProperty(i)?r[i]=e:o.push(i))}})),r=Object.assign({},a,r),o.forEach((e=>{delete r[e]})),r}(e,t,this.world());return Object.keys(o).forEach((e=>{n.one.typeahead.hasOwnProperty(e)?delete n.one.typeahead[e]:n.one.typeahead[e]=o[e]})),this}};var co={model:{one:{typeahead:{}}},api:function(e){e.prototype.autoFill=so},lib:uo,compute:io,hooks:[\"typeahead\"]};h.extend(J),h.extend(yn),h.extend(Jt),h.extend(Tn),h.extend(lr),h.plugin(ye),h.extend(ao),h.extend(Ce),h.plugin(p),h.extend(Be),h.extend(co),h.extend(Ee),h.extend(Gn);var ho={addendum:\"addenda\",corpus:\"corpora\",criterion:\"criteria\",curriculum:\"curricula\",genus:\"genera\",memorandum:\"memoranda\",opus:\"opera\",ovum:\"ova\",phenomenon:\"phenomena\",referendum:\"referenda\",alga:\"algae\",alumna:\"alumnae\",antenna:\"antennae\",formula:\"formulae\",larva:\"larvae\",nebula:\"nebulae\",vertebra:\"vertebrae\",analysis:\"analyses\",axis:\"axes\",diagnosis:\"diagnoses\",parenthesis:\"parentheses\",prognosis:\"prognoses\",synopsis:\"synopses\",thesis:\"theses\",neurosis:\"neuroses\",appendix:\"appendices\",index:\"indices\",matrix:\"matrices\",ox:\"oxen\",sex:\"sexes\",alumnus:\"alumni\",bacillus:\"bacilli\",cactus:\"cacti\",fungus:\"fungi\",hippopotamus:\"hippopotami\",libretto:\"libretti\",modulus:\"moduli\",nucleus:\"nuclei\",octopus:\"octopi\",radius:\"radii\",stimulus:\"stimuli\",syllabus:\"syllabi\",cookie:\"cookies\",calorie:\"calories\",auntie:\"aunties\",movie:\"movies\",pie:\"pies\",rookie:\"rookies\",tie:\"ties\",zombie:\"zombies\",leaf:\"leaves\",loaf:\"loaves\",thief:\"thieves\",foot:\"feet\",goose:\"geese\",tooth:\"teeth\",beau:\"beaux\",chateau:\"chateaux\",tableau:\"tableaux\",bus:\"buses\",gas:\"gases\",circus:\"circuses\",crisis:\"crises\",virus:\"viruses\",database:\"databases\",excuse:\"excuses\",abuse:\"abuses\",avocado:\"avocados\",barracks:\"barracks\",child:\"children\",clothes:\"clothes\",echo:\"echoes\",embargo:\"embargoes\",epoch:\"epochs\",deer:\"deer\",halo:\"halos\",man:\"men\",woman:\"women\",mosquito:\"mosquitoes\",mouse:\"mice\",person:\"people\",quiz:\"quizzes\",rodeo:\"rodeos\",shoe:\"shoes\",sombrero:\"sombreros\",stomach:\"stomachs\",tornado:\"tornados\",tuxedo:\"tuxedos\",volcano:\"volcanoes\"},go={Comparative:\"true¦bett1f0;arth0ew0in0;er\",Superlative:\"true¦earlier\",PresentTense:\"true¦bests,sounds\",Condition:\"true¦lest,unless\",PastTense:\"true¦began,came,d4had,kneel3l2m0sa4we1;ea0sg2;nt;eap0i0;ed;id\",Participle:\"true¦0:09;a06b01cZdXeat0fSgQhPoJprov0rHs7t6u4w1;ak0ithdra02o2r1;i02uY;k0v0;nd1pr04;ergoJoJ;ak0hHo3;e9h7lain,o6p5t4un3w1;o1um;rn;g,k;ol0reS;iQok0;ught,wn;ak0o1runk;ne,wn;en,wn;ewriNi1uJ;dd0s0;ut3ver1;do4se0t1;ak0h2;do2g1;roG;ne;ast0i7;iv0o1;ne,tt0;all0loBor1;bi3g2s1;ak0e0;iv0o9;dd0;ove,r1;a5eamt,iv0;hos0lu1;ng;e4i3lo2ui1;lt;wn;tt0;at0en,gun;r2w1;ak0ok0;is0;en\",Gerund:\"true¦accord0be0doin,go0result0stain0;ing\",Expression:\"true¦a0Yb0Uc0Sd0Oe0Mfarew0Lg0FhZjeez,lWmVnToOpLsJtIuFvEw7y0;a5e3i1u0;ck,p;k04p0;ee,pee;a0p,s;!h;!a,h,y;a5h2o1t0;af,f;rd up,w;atsoever,e1o0;a,ops;e,w;hoo,t;ery w06oi0L;gh,h0;! 0h,m;huh,oh;here nPsk,ut tut;h0ic;eesh,hh,it,oo;ff,h1l0ow,sst;ease,s,z;ew,ooey;h1i,mg,o0uch,w,y;h,o,ps;! 0h;hTmy go0wT;d,sh;a7evertheless,o0;!pe;eh,mm;ah,eh,m1ol0;!s;ao,fao;aCeBi9o2u0;h,mph,rra0zzC;h,y;l1o0;r6y9;la,y0;! 0;c1moCsmok0;es;ow;!p hip hoor0;ay;ck,e,llo,y;ha1i,lleluj0;ah;!ha;ah,ee4o1r0;eat scott,r;l1od0sh; grief,bye;ly;! whiz;ell;e0h,t cetera,ureka,ww,xcuse me;k,p;'oh,a0rat,uh;m0ng;mit,n0;!it;mon,o0;ngratulations,wabunga;a2oo1r0tw,ye;avo,r;!ya;h,m; 1h0ka,las,men,rgh,ye;!a,em,h,oy;la\",Negative:\"true¦n0;ever,o0;n,t\",QuestionWord:\"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",Reflexive:\"true¦h4it5my5o1the0your2;ir1m1;ne3ur0;sel0;f,ves;er0im0;self\",Plural:\"true¦dick0gre0ones,records;ens\",\"Unit|Noun\":\"true¦cEfDgChBinchAk9lb,m6newt5oz,p4qt,t1y0;ardEd;able1b0ea1sp;!l,sp;spo1;a,t,x;on9;!b,g,i1l,m,p0;h,s;!les;!b,elvin,g,m;!es;g,z;al,b;eet,oot,t;m,up0;!s\",Value:\"true¦a few\",Imperative:\"true¦bewa0come he0;re\",\"Plural|Verb\":\"true¦leaves\",Demonym:\"true¦0:15;1:12;a0Vb0Oc0Dd0Ce08f07g04h02iYjVkTlPmLnIomHpEqatari,rCs7t5u4v3welAz2;am0Gimbabwe0;enezuel0ietnam0I;gAkrai1;aiwTex0hai,rinida0Ju2;ni0Prkmen;a5cotti4e3ingapoOlovak,oma0Spaniard,udRw2y0W;ede,iss;negal0Cr09;sh;mo0uT;o5us0Jw2;and0;a2eru0Fhilippi0Nortugu07uerto r0S;kist3lesti1na2raguay0;ma1;ani;ami00i2orweP;caragu0geri2;an,en;a3ex0Lo2;ngo0Drocc0;cedo1la2;gasy,y07;a4eb9i2;b2thua1;e0Cy0;o,t01;azakh,eny0o2uwaiI;re0;a2orda1;ma0Ap2;anO;celandic,nd4r2sraeli,ta01vo05;a2iB;ni0qi;i0oneU;aiAin2ondur0unO;di;amEe2hanai0reek,uatemal0;or2rm0;gi0;ilipino,ren8;cuadoVgyp4mira3ngli2sto1thiopi0urope0;shm0;ti;ti0;aPominUut3;a9h6o4roat3ub0ze2;ch;!i0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el6o4r3ul2;gaE;azi9it;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;genti2me1;ne;ba1ge2;ri0;ni0;gh0r2;ic0;an\",Organization:\"true¦0:4Q;a3Tb3Bc2Od2He2Df27g1Zh1Ti1Pj1Nk1Ll1Gm12n0Po0Mp0Cqu0Br02sTtHuCv9w3xiaomi,y1;amaha,m1Bou1w1B;gov,tu3C;a4e2iki1orld trade organizati33;leaRped0O;lls fargo,st1;fie2Hinghou2R;l1rner br3U;gree3Jl street journ2Im1E;an halOeriz2Xisa,o1;dafo2Yl1;kswagMvo;b4kip,n2ps,s1;a tod3Aps;es3Mi1;lev3Fted natio3C;er,s; mobi32aco beRd bOe9gi frida3Lh3im horto3Amz,o1witt3D;shi49y1;ota,s r 05;e 1in lizzy;b3carpen3Jdaily ma3Dguess w2holli0s1w2;mashing pumpki35uprem0;ho;ea1lack eyed pe3Xyr0Q;ch bo3Dtl0;l2n3Qs1xas instrumen1U;co,la m1F;efoni0Kus;a8cientology,e5ieme2Ymirnoff,np,o3pice gir6quare0Ata1ubaru;rbuc1to34;ks;ny,undgard1;en;a2x pisto1;ls;g1Wrs;few2Minsbur31lesfor03msu2E;adiohead,b8e4o1yana3C;man empi1Xyal 1;b1dutch she4;ank;a3d 1max,vl20;bu1c2Ahot chili peppe2Ylobst2N;ll;ders dige1Ll madrid;c,s;ant3Aizn2Q;a8bs,e5fiz2Ihilip4i3r1;emier 1udenti1D;leagTo2K;nk floyd,zza hut; morrBs;psi2tro1uge0E;br33chi0Tn33;!co;lant2Un1yp16; 2ason27da2P;ld navy,pec,range juli2xf1;am;us;aAb9e6fl,h5i4o1sa,vid3wa;k2tre dame,vart1;is;ia;ke,ntendo,ss0QvZ;l,s;c,st1Otflix,w1; 1sweek;kids on the block,york0D;a,c;nd22s2t1;ional aca2Po,we0U;a,c02d0S;aDcdonalCe9i6lb,o3tv,y1;spa1;ce;b1Tnsanto,ody blu0t1;ley cr1or0T;ue;c2t1;as,subisO;helin,rosoft;dica2rcedes benz,talli1;ca;id,re;ds;cs milk,tt19z24;a3e1g,ittle caesa1P; ore09novo,x1;is,mark,us; 1bour party;pres0Dz boy;atv,fc,kk,lm,m1od1O;art;iffy lu0Roy divisi0Jpmorgan1sa;! cha09;bm,hop,k3n1tv;g,te1;l,rpol;ea;a5ewlett pack1Vi3o1sbc,yundai;me dep1n1P;ot;tac1zbollah;hi;lliburt08sbro;eneral 6hq,ithub,l5mb,o2reen d0Ou1;cci,ns n ros0;ldman sachs,o1;dye1g0H;ar;axo smith kli04encoW;electr0Nm1;oto0Z;a5bi,c barcelo4da,edex,i2leetwood m03o1rito l0G;rd,xcY;at,fa,nancial1restoZ; tim0;na;cebook,nnie mae;b0Asa,u3xxon1; m1m1;ob0J;!rosceptics;aiml0De5isney,o4u1;nkin donu2po0Zran dur1;an;ts;j,w jon0;a,f lepp12ll,peche mode,r spieg02stiny's chi1;ld;aJbc,hFiDloudflaCnn,o3r1;aigsli5eedence clearwater reviv1ossra09;al;c7inba6l4m1o0Est09;ca2p1;aq;st;dplSg1;ate;se;a c1o chanQ;ola;re;a,sco1tigroup;! systems;ev2i1;ck fil a,na daily;r1y;on;d2pital o1rls jr;ne;bury,ill1;ac;aEbc,eBf9l5mw,ni,o1p,rexiteeU;ei3mbardiIston 1;glo1pizza;be;ng;o2ue c1;roV;ckbuster video,omingda1;le; g1g1;oodriL;cht2e ge0rkshire hathaw1;ay;el;cardi,idu,nana republ3s1xt5y5;f,kin robbi1;ns;ic;bYcTdidSerosmith,iRlKmEnheuser busDol,ppleAr6s4u3v2y1;er;is,on;di,todesk;hland o1sociated E;il;b3g2m1;co;os;ys; compu1be0;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 5catel2ta1;ir;! lu1;ce1;nt;jazeera,qae1;da;g,rbnb;as;/dc,a3er,tivision1;! blizz1;ard;demy of scienc0;es;ba\",Possessive:\"true¦its,my,our0thy;!s\",\"Noun|Verb\":\"true¦0:9W;1:AA;2:96;3:A3;4:9R;5:A2;6:9K;7:8N;8:7L;9:A8;A:93;B:8D;C:8X;a9Ob8Qc7Id6Re6Gf5Sg5Hh55i4Xj4Uk4Rl4Em40n3Vo3Sp2Squ2Rr21s0Jt02u00vVwGyFzD;ip,oD;ne,om;awn,e6Fie68;aOeMhJiHoErD;ap,e9Oink2;nd0rDuC;kDry,sh5Hth;!shop;ck,nDpe,re,sh;!d,g;e86iD;p,sD;k,p0t2;aDed,lco8W;r,th0;it,lk,rEsDt4ve,x;h,te;!ehou1ra9;aGen5FiFoD;iDmAte,w;ce,d;be,ew,sA;cuum,l4B;pDr7;da5gra6Elo6A;aReQhrPiOoMrGuEwiDy5Z;n,st;nDrn;e,n7O;aGeFiEoDu6;t,ub2;bu5ck4Jgg0m,p;at,k,nd;ck,de,in,nsDp,v7J;f0i8R;ll,ne,p,r4Yss,t94uD;ch,r;ck,de,e,le,me,p,re;e5Wow,u6;ar,e,ll,mp0st,xt;g,lDng2rg7Ps5x;k,ly;a0Sc0Ne0Kh0Fi0Dk0Cl0Am08n06o05pXquaBtKuFwD;ea88iD;ng,pe,t4;bGit,m,ppErD;fa3ge,pri1v2U;lDo6S;e6Py;!je8;aMeLiKoHrEuDy2;dy,ff,mb2;a85eEiDo5Pugg2;ke,ng;am,ss,t4;ckEop,p,rD;e,m;ing,pi2;ck,nk,t4;er,m,p;ck,ff,ge,in,ke,lEmp,nd,p2rDte,y;!e,t;k,l;aJeIiHlGoFrDur,y;ay,e56inDu3;g,k2;ns8Bt;a5Qit;ll,n,r87te;ed,ll;m,n,rk;b,uC;aDee1Tow;ke,p;a5Je4FiDo53;le,rk;eep,iDou4;ce,p,t;ateboa7Ii;de,gnDl2Vnk,p,ze;!al;aGeFiEoDuff2;ck,p,re,w;ft,p,v0;d,i3Ylt0;ck,de,pe,re,ve;aEed,nDrv1It;se,t2N;l,r4t;aGhedu2oBrD;aEeDibb2o3Z;en,w;pe,t4;le,n,r2M;cDfegua72il,mp2;k,rifi3;aZeHhy6LiGoEuD;b,in,le,n,s5X;a6ck,ll,oDpe,u5;f,t;de,ng,ot,p,s1W;aTcSdo,el,fQgPje8lOmMnLo17pJque6sFturn,vDwa6V;eDi27;al,r1;er74oFpe8tEuD;lt,me;!a55;l71rt;air,eaDly,o53;l,t;dezvo2Zt;aDedy;ke,rk;ea1i4G;a6Iist0r5N;act6Yer1Vo71uD;nd,se;a38o6F;ch,s6G;c1Dge,iEke,lly,nDp1Wt1W;ge,k,t;n,se;es6Biv0;a04e00hYiXlToNrEsy4uD;mp,n4rcha1sh;aKeIiHoDu4O;be,ceFdu3fi2grDje8mi1p,te6;amDe6W;!me;ed,ss;ce,de,nt;sDy;er6Cs;cti3i1;iHlFoEp,re,sDuCw0;e,i5Yt;l,p;iDl;ce,sh;nt,s5V;aEce,e32uD;g,mp,n7;ce,nDy;!t;ck,le,n17pe,tNvot;a1oD;ne,tograph;ak,eFnErDt;fu55mA;!c32;!l,r;ckJiInHrFsEtDu1y;ch,e9;s,te;k,tD;!y;!ic;nt,r,se;!a7;bje8ff0il,oErDutli3Qver4B;bAd0ie9;ze;a4ReFoDur1;d,tD;e,i3;ed,gle8tD;!work;aMeKiIoEuD;rd0;ck,d3Rld,nEp,uDve;nt,th;it5EkD;ey;lk,n4Brr5CsDx;s,ta2B;asuBn4UrDss;ge,it;il,nFp,rk3WsEtD;ch,t0;h,k,t0;da5n0oeuvB;aLeJiHoEuD;mp,st;aEbby,ck,g,oDve;k,t;d,n;cDe,ft,mAnIst;en1k;aDc0Pe4vK;ch,d,k,p,se;bFcEnd,p,t4uD;gh,n4;e,k;el,o2U;eEiDno4E;ck,d,ll,ss;el,y;aEo1OuD;i3mp;m,zz;mpJnEr46ssD;ue;c1Rdex,fluGha2k,se2HteDvoi3;nt,rD;e6fa3viD;ew;en3;a8le2A;aJeHiGoEuD;g,nt;l3Ano2Dok,pDr1u1;!e;ghli1Fke,nt,re,t;aDd7lp;d,t;ck,mGndFrEsh,tDu9;ch,e;bo3Xm,ne4Eve6;!le;!m0;aMear,ift,lKossJrFuD;arDe4Alp,n;antee,d;aFiEoDumb2;uCwth;ll,nd,p;de,sp;ip;aBoDue;ss,w;g,in,me,ng,s,te,ze;aZeWiRlNoJrFuD;ck,el,nDss,zz;c38d;aEoDy;st,wn;cDgme,me,nchi1;tuB;cFg,il,ld,rD;ce,e29mDwa31;!at;us;aFe0Vip,oDy;at,ck,od,wD;!er;g,ke,me,re,sh,vo1E;eGgFlEnDre,sh,t,x;an3i0Q;e,m,t0;ht,uB;ld;aEeDn3;d,l;r,tuB;ce,il,ll,rm,vo2W;cho,d7ffe8nMsKxFyeD;!baD;ll;cGerci1hFpDtra8;eriDo0W;en3me9;au6ibA;el,han7u1;caDtima5;pe;count0d,vy;a01eSiMoJrEuDye;b,el,mp,pli2X;aGeFiEoD;ne,p;ft,ll,nk,p,ve;am,ss;ft,g,in;cEd7ubt,wnloD;ad;k,u0E;ge6p,sFt4vD;e,iDor3;de;char7gui1h,liEpD;at4lay,u5;ke;al,bKcJfeIlGmaCposAsEtaD;il;e07iD;gn,re;ay,ega5iD;ght;at,ct;li04rea1;a5ut;b,ma7n3rDte;e,t;a0Eent0Dh06irc2l03oKrFuD;be,e,rDt;b,e,l,ve;aGeFoEuDy;sh;p,ss,wd;dAep;ck,ft,sh;at,de,in,lTmMnFordina5py,re,st,uDv0;gh,nDp2rt;s01t;ceHdu8fli8glomeIsFtDveN;a8rD;a6ol;e9tru8;ct;ntDrn;ra5;bHfoGmFpD;leDouCromi1;me9;aCe9it,u5;rt;at,iD;ne;lap1oD;r,ur;aEiDoud,ub;ck,p;im,w;aEeDip;at,ck,er;iGllen7nErD;ge,m,t;ge,nD;el;n,r;er,re;ke,ll,mp,noe,pGrXsFtEuDve;se,ti0I;alog,ch;h,t;!tuB;re;a03eZiXlToPrHuEyD;pa11;bb2ck2dgEff0mp,rDst,zz;den,n;et;anJeHiFoadEuD;i1sh;ca6;be,d7;ge;aDed;ch,k;ch,d;aFg,mb,nEoDrd0tt2x,ycott;k,st,t;d,e;rd,st;aFeCiDoYur;nk,tz;nd;me;as,d,ke,nd,opsy,tD;!ch,e;aFef,lt,nDt;d,efA;it;r,t;ck,il,lan3nIrFsEtt2;le;e,h;!gDk;aDe;in;!d,g,k;bu1c05dZge,iYlVnTppQrLsIttGucEwaD;rd;tiD;on;aDempt;ck;k,sD;i6ocia5;st;chFmD;!oD;ur;!iD;ve;eEroa4;ch;al;chDg0sw0;or;aEt0;er;rm;d,m,r;dreHvD;an3oD;ca5;te;ce;ss;cDe,he,t;eFoD;rd,u9;nt;nt,ss;se\",Actor:\"true¦0:7B;1:7G;2:6A;3:7F;4:7O;5:7K;a6Nb62c4Ud4Be41f3Sg3Bh30i2Uj2Qkin2Pl2Km26n1Zo1Sp0Vqu0Tr0JsQtJuHvEw8yo6;gi,ut6;h,ub0;aAe9i8o7r6;estl0it0;m2rk0;fe,nn0t2Bza2H;atherm2ld0;ge earn0it0nder0rri1;eter7i6oyF;ll5Qp,s3Z;an,ina2U;n6s0;c6Uder03;aoisea23e9herapi5iktok0o8r6ut1yco6S;a6endseLo43;d0mp,nscri0Bvel0;ddl0u1G;a0Qchn7en6na4st0;ag0;i3Oo0D;aiXcUeRhPiMki0mu26oJpGquaFtBu7wee6;p0theart;lt2per7r6;f0ge6Iviv1;h6inten0Ist5Ivis1;ero,um2;a8ep7r6;ang0eam0;bro2Nc2Ofa2Nmo2Nsi20;ff0tesm2;tt0;ec7ir2Do6;kesp59u0M;ia5Jt3;l7me6An,rcere6ul;r,ss;di0oi5;n7s6;sy,t0;g0n0;am2ephe1Iow6;girl,m2r2Q;cretInior cit3Fr6;gea4v6;a4it1;hol4Xi7reen6ulpt1;wr2C;e01on;l1nt;aEe9o8u6;l0nn6;er up,ingE;g40le mod3Zof0;a4Zc8fug2Ppo32searQv6;ere4Uolution6;ary;e6luYru22;ptio3T;bbi,dic5Vpp0;arter6e2Z;back;aYeWhSiRlOoKr8sycho7u6;nk,p31;logi5;aGeDiBo6;d9fess1g7ph47s6;pe2Ktitu51;en6ramm0;it1y;igy,uc0;est4Nme mini0Unce6s3E;!ss;a7si6;de4;ch0;ctiti39nk0P;dca0Oet,li6pula50rnst42;c2Itic6;al scie6i2;nti5;a6umb0;nn0y6;er,ma4Lwright;lgrim,one0;a8iloso7otogra7ra6ysi1V;se;ph0;ntom,rmaci5;r6ssi1T;form0s4O;i3El,nel3Yr8st1tr6wn;i6on;arWot;ent4Wi42tn0;ccupa4ffBp8r7ut6;ca5l0B;ac4Iganiz0ig2Fph2;er3t6;i1Jomet6;ri5;ic0spring;aBe9ie4Xo7u6;n,rser3J;b6mad,vi4V;le2Vo4D;i6mesis,phew;ce,ghb1;nny,rr3t1X;aEeDiAo7u6yst1Y;m8si16;der3gul,m7n6th0;arDk;!my;ni7s6;f02s0Jt0;on,st0;chan1Qnt1rcha4;gi9k0n8rtyr,t6y1;e,riar6;ch;ag0iac;ci2stra3I;a7e2Aieutena4o6;rd,s0v0;bor0d7ndlo6ss,urea3Fwy0ym2;rd;!y;!s28;e8o7u6;ggl0;gg0urna2U;st0;c3Hdol,llu3Ummigra4n6; l9c1Qfa4habi42nov3s7ve6;nt1stig3;pe0Nt6;a1Fig3ru0M;aw;airFeBistoAo8u6ygie1K;man6sba2H;!ita8;bo,st6usekN;age,e3P;ri2;ir,r6;m7o6;!ine;it;dress0sty2C;aLeIhostGirl26ladi3oCrand7u6;e5ru;c9daug0Jfa8m7pa6s2Y;!re4;a,o6;th0;hi1B;al7d6lf0;!de3A;ie,k6te26;eep0;!wr6;it0;isha,n6;i6tl04;us;mbl0rden0;aDella,iAo7r6;eela2Nie1P;e,re6ster pare4;be1Hm2r6st0;unn0;an2ZgZlmm17nanci0r6tt0;e6st la2H; marsh2OfigXm2;rm0th0;conoEdDlectriCm8n7x6;amin0cellency,i2A;emy,trepreneur,vironmenta1J;c8p6;er1loye6;e,r;ee;ci2;it1;mi5;aKeBi8ork,ri7u6we02;de,tche2H;ft0v0;ct3eti7plom2Hre6va;ct1;ci2ti2;aDcor3fencCi0InAput9s7tectLvel6;op0;ce1Ge6ign0;rt0;ee,y;iz6;en;em2;c1Ml0;d8nc0redev7ug6;ht0;il;!dy;a06e04fo,hXitizenWlToBr9u6;r3stomer6;! representat6;ive;e3it6;ic;lJmGnAord9rpor1Nu7w6;boy,ork0;n6ri0;ciTte1Q;in3;fidantAgressSs9t6;e0Kr6;ibut1o6;ll0;tab13ul1O;!e;edi2m6pos0rade;a0EeQissi6;on0;leag8on7um6;ni5;el;ue;e6own;an0r6;ic,k;!s;a9e7i6um;ld;erle6f;ad0;ir7nce6plFract0;ll1;m2wI;lebri6o;ty;dBptAr6shi0;e7pe6;nt0;r,t6;ak0;ain;et;aMeLiJlogg0oErBu6;dd0Fild0rgl9siness6;m2p7w6;om2;ers05;ar;i7o6;!k0th0;cklay0de,gadi0;hemi2oge8y6;!frie6;nd;ym2;an;cyc6sR;li5;atbox0ings;by,nk0r6;b0on7te6;nd0;!e07;c04dWge4nQpLrHsFtAu7yatull6;ah;nt7t6;h1oG;!ie;h8t6;e6orney;nda4;ie5le6;te;sis00tron6;aut,om0;chbis8isto7tis6;an,t;crU;hop;ost9p6;ari6rentiS;ti6;on;le;a9cest1im3nou8y6;bo6;dy;nc0;ly5rc6;hi5;mi8v6;entur0is1;er;ni7r6;al;str3;at1;or;counBquaintanArob9t6;ivi5or,re6;ss;st;at;ce;ta4;nt\",\"Adj|Noun\":\"true¦0:16;a1Db17c0Ud0Re0Mf0Dg0Ah08i06ju05l02mWnUoSpNrIsBt7u4v1watershed;a1ision0Z;gabo4nilla,ria1;b0Vnt;ndergr1pstairs;adua14ou1;nd;a3e1oken,ri0;en,r1;min0rori13;boo,n;age,e5ilv0Flack,o3quat,ta2u1well;bordina0Xper5;b0Lndard;ciali0Yl1vereign;e,ve16;cret,n1ri0;ior;a4e2ou1ubbiL;nd,tiY;ar,bBl0Wnt0p1side11;resent0Vublican;ci0Qsh;a4eriodic0last0Zotenti0r1;emi2incip0o1;!fession0;er,um;rall4st,tie0U;ff1pposi0Hv0;ens0Oi0C;agg01ov1uts;el;a5e3iniatJo1;bi01der07r1;al,t0;di1tr0N;an,um;le,riG;attOi2u1;sh;ber0ght,qC;stice,veniT;de0mpressioYn1;cumbe0Edividu0no0Dsta0Eterim;alf,o1umdrum;bby,melF;en2old,ra1;ph0Bve;er0ious;a7e5i4l3u1;git03t1;ure;uid;ne;llow,m1;aFiL;ir,t,vo1;riOuriO;l3p00x1;c1ecutUpeV;ess;d1iK;er;ar2e1;mographUrivO;k,l2;hiGlassSo2rude,unn1;ing;m5n1operK;creCstitueOte2vertab1;le;mpor1nt;ary;ic,m2p1;anion,lex;er2u1;ni8;ci0;al;e5lank,o4r1;i2u1;te;ef;ttom,urgeois;st;cadem9d6l2ntarct9r1;ab,ct8;e3tern1;at1;ive;rt;oles1ult;ce1;nt;ic\",\"Adj|Past\":\"true¦0:4Q;1:4C;2:4H;3:4E;a44b3Tc36d2Je29f20g1Wh1Si1Jj1Gkno1Fl1Am15n12o0Xp0Mqu0Kr08sLtEuAv9w4yellow0;a7ea6o4rinkl0;r4u3Y;n,ri0;k31th3;rp0sh0tZ;ari0e1O;n5p4s0;d1li1Rset;cov3derstood,i4;fi0t0;a8e3Rhr7i6ouTr4urn0wi4C;a4imm0ou2G;ck0in0pp0;ed,r0;eat2Qi37;m0nn0r4;get0ni2T;aOcKeIhGimFm0Hoak0pDt7u4;bsid3Ogge44s4;pe4ta2Y;ct0nd0;a8e7i2Eok0r5u4;ff0mp0nn0;ength2Hip4;ed,p0;am0reotyp0;in0t0;eci4ik0oH;al3Efi0;pRul1;a4ock0ut;d0r0;a4c1Jle2t31;l0s3Ut0;a6or5r4;at4e25;ch0;r0tt3;t4ut0;is2Mur1;aEe5o4;tt0;cAdJf2Bg9je2l8m0Knew0p7qu6s4;eTpe2t4;or0ri2;e3Dir0;e1lac0;at0e2Q;i0Rul1;eiv0o4ycl0;mme2Lrd0v3;in0lli0ti2A;a4ot0;li28;aCer30iBlAo9r5u4;mp0zzl0;e6i2Oo4;ce2Fd4lo1Anou30pos0te2v0;uc0;fe1CocCp0Iss0;i2Kli1L;ann0e2CuS;ck0erc0ss0;ck0i2Hr4st0;allLk0;bse7c6pp13rgan2Dver4;lo4whelm0;ok0;cupi0;rv0;aJe5o4;t0uri1A;ed0gle2;a6e5ix0o4ut0ys1N;di1Nt15u26;as0Clt0;n4rk0;ag0ufact0A;e6i5o4;ad0ck0st,v0;cens0m04st0;ft,v4;el0;tt0wn;a5o15u4;dg0s1B;gg0;llumSmpAn4sol1;br0cre1Ldebt0f8jZspir0t5v4;it0olv0;e4ox0Y;gr1n4re23;d0si15;e2l1o1Wuri1;li0o01r4;ov0;a6e1o4um03;ok0r4;ri0Z;mm3rm0;i6r5u4;a1Bid0;a0Ui0Rown;ft0;aAe9i8l6oc0Ir4;a4i0oz0Y;ctHg19m0;avo0Ju4;st3;ni08tt0x0;ar0;d0il0sc4;in1;dCl1mBn9quipp0s8x4;agger1c6p4te0T;a0Se4os0;ct0rie1D;it0;cap0tabliZ;cha0XgFha1As4;ur0;a0Zbarra0N;i0Buc1;aMeDi5r4;a01i0;gni08miniSre2s4;a9c6grun0Ft4;o4re0Hu17;rt0;iplWou4;nt0r4;ag0;bl0;cBdRf9l8p7ra6t5v4;elop0ot0;ail0ermQ;ng0;re07;ay0ight0;e4in0o0M;rr0;ay0enTor1;m5t0z4;ed,zl0;ag0p4;en0;aPeLhIlHo9r6u4;lt4r0stom03;iv1;a5owd0u4;sh0;ck0mp0;d0loAm7n4ok0v3;centr1f5s4troC;id3olid1;us0;b5pl4;ic1;in0;r0ur0;assi9os0utt3;ar5i4;ll0;g0m0;lebr1n6r4;ti4;fi0;tralJ;g0lcul1;aDewild3iCl9o7r5urn4;ed,t;ok4uis0;en;il0r0t4und;tl0;e5i4;nd0;ss0;as0;ffl0k0laMs0tt3;bPcNdKfIg0lFmaz0nDppBrm0ss9u5wa4;rd0;g5thor4;iz0;me4;nt0;o6u4;m0r0;li0re4;ci1;im1ticip1;at0;a5leg0t3;er0;rm0;fe2;ct0;ju5o7va4;nc0;st0;ce4knowledg0;pt0;and5so4;rb0;on0;ed\",Singular:\"true¦0:5J;1:5H;2:4W;3:4S;4:52;5:57;6:5L;7:56;8:5B;a52b4Lc3Nd35e2Xf2Og2Jh28in24j23k22l1Um1Ln1Ho1Bp0Rqu0Qr0FsZtMuHvCw9x r58yo yo;a9ha3Po3Q;f3i4Rt0Gy9;! arou39;arCeAideo ga2Qo9;cabu4Jl5C;gOr9t;di4Zt1Y;iety,ni4P;nBp30rAs 9;do43s5E;bani1in0;coordinat3Ader9;estima1to24we41; rex,aKeJhHiFoErBuAv9;! show;m2On2rntLto1D;agedy,ib9o4E;e,u9;n0ta46;ni1p2rq3L;c,er,m9;etF;ing9ree26;!y;am,mp3F;ct2le6x return;aNcMeKhor4QiJkHoGpin off,tDuBy9;ll9ner7st4T;ab2X;b9i1n28per bowl,rro1X;st3Ltot0;atAipe2Go1Lrate7udent9;! lo0I;i39u1;ft ser4Lmeo1I;elet5i9;ll,r3V;b38gn2Tte;ab2Jc9min3B;t,urity gua2N;e6ho2Y;bbatic0la3Jndwi0Qpi5;av5eDhetor2iAo9;de6om,w;tAv9;erb2C;e,u0;bDcBf9publ2r10spi1;er9orm3;e6r0;i9ord label;p2Ht0;a1u46;estion mark,ot2F;aPeMhoLiIlGoErAu9yram1F;ddi3HpErpo1Js3J;eBo9;bl3Zs9;pe3Jta1;dic1Rmi1Fp1Qroga8ss relea1F;p9rt0;py;a9ebisci1;q2Dte;cn2eAg9;!gy;!r;ne call,tocoK;anut,dAr9t0yo1;cen3Jsp3K;al,est0;nop4rAt9;e,hog5;adi11i2V;atme0bj3FcBpia1rde0thers,utspok5ve9wn3;n,r9;ti0Pview;cuAe9;an;pi3;arBitAot9umb3;a2Fhi2R;e,ra1;cot2ra8;aFeCiAo9ur0;nopo4p18rni2Nsq1Rti36uld;c,li11n0As9tt5;chief,si34;dAnu,t9;al,i3;al,ic;gna1mm0nd15rsupi0te9yf4;ri0;aDegCiBu9;ddi1n9;ch;me,p09; Be0M;bor14y9; 9er;up;eyno1itt5;el4ourn0;cBdices,itia8ni25sAtel0Lvert9;eb1J;e28titu1;en8i2T;aIeEighDoAu9;man right,s22;me9rmoFsp1Ftb0K;! r9;un; scho0YriY;a9i1N;d9v5; start,pho9;ne;ndful,sh brown,v5ze;aBelat0Ilaci3r9ul4yp1S;an9enadi3id;a1Cd slam,ny;df4r9;l2ni1I;aGeti1HiFlu1oCrAun9;er0;ee market,i9onti3;ga1;l4ur9;so9;me;ePref4;br2mi4;conoFffi7gg,lecto0Rmbas1EnCpidem2s1Zth2venBxAyel9;id;ampZempl0Nte6;i19t;er7terp9;ri9;se;my;eLiEoBr9ump tru0U;agonf4i9;er,ve thru;cAg7i4or,ssi3wn9;side;to0EumenE;aEgniDnn3sAvide9;nd;conte6incen8p9tri11;osi9;ti0C;ta0H;le0X;athBcAf9ni0terre6;ault 05err0;al,im0;!b9;ed;aWeThMiLlJoDr9;edit caBuc9;ib9;le;rd;efficDke,lCmmuniqLnsApi3rr0t0Xus9yo1;in;erv9uI;ato02;ic,lQ;ie6;er7i9oth;e6n2;ty,vil wM;aDeqCick5ocoBr9;istmas car9ysanthemum;ol;la1;ue;ndeli3racteri9;st2;iAllEr9;e0tifica1;liZ;hi3nFpErCt9ucus;erpi9hedr0;ll9;ar;!bohyd9ri3;ra1;it0;aAe,nib0t9;on;l,ry;aMeLiop2leJoHrDu9;nny,r9tterf4;g9i0;la9;ry;eakAi9;ck;fa9throB;st;dy,ro9wl;ugh;mi9;sh;an,l4;nkiArri3;er;ng;cSdMlInFppeti1rDsBtt2utop9;sy;ic;ce6pe9;ct;r9sen0;ay;ecAoma4tiA;ly;do1;i5l9;er7y;gy;en; hominDjAvan9;tage;ec8;ti9;ve;em;cCeAqui9;tt0;ta1;te;iAru0;al;de6;nt\",\"Person|Noun\":\"true¦a0Eb07c03dWeUfQgOhLjHkiGlFmCnBolive,p7r4s3trini06v1wa0;ng,rd,tts;an,enus,iol0;a,et;ky,onPumm09;ay,e1o0uby;bin,d,se;ed,x;a2e1o0;l,tt04;aLnJ;dYge,tR;at,orm;a0eloW;t0x,ya;!s;a9eo,iH;ng,tP;a2e1o0;lGy;an,w3;de,smi4y;a0erb,iOolBuntR;ll,z0;el;ail,e0iLuy;ne;a1ern,i0lo;elds,nn;ith,n0;ny;a0dEmir,ula,ve;rl;a4e3i1j,ol0;ly;ck,x0;ie;an,ja;i0wn;sy;am,h0liff,rystal;a0in,ristian;mbers,ri0;ty;a4e3i2o,r0ud;an0ook;dy;ll;nedict,rg;k0nks;er;l0rt;fredo,ma\",\"Actor|Verb\":\"true¦aCb8c5doctor,engineAfool,g3host,judge,m2nerd,p1recruit,scout,ushAvolunteAwi0;mp,tneA;arent,ilot;an,ime;eek,oof,r0uide;adu8oom;ha1o0;ach,nscript,ok;mpion,uffeur;o2u0;lly,tch0;er;ss;ddi1ffili0rchite1;ate;ct\",MaleName:\"true¦0:H6;1:FZ;2:DS;3:GQ;4:CZ;5:FV;6:GM;7:FP;8:GW;9:ET;A:C2;B:GD;aF8bE1cCQdBMeASfA1g8Yh88i7Uj6Sk6Bl5Mm48n3So3Ip33qu31r26s1Et0Ru0Ov0CwTxSyHzC;aCor0;cChC1karia,nAT;!hDkC;!aF6;!ar7CeF5;aJevgenBSoEuC;en,rFVsCu3FvEF;if,uf;nDs6OusC;ouf,s6N;aCg;s,tC;an,h0;hli,nCrosE1ss09;is,nC;!iBU;avi2ho5;aPeNiDoCyaEL;jcieBJlfgang,odrFutR;lFnC;f8TsC;lCt1;ow;bGey,frEhe4QlC;aE5iCy;am,e,s;ed8iC;d,ed;eAur;i,ndeD2rn2sC;!l9t1;lDyC;l1ne;lDtC;!er;aCHy;aKernDAiFladDoC;jteB0lodymyr;!iC;mFQsDB;cFha0ktBZnceDrgCOvC;a0ek;!nC;t,zo;!e4StBV;lCnC7sily;!entC;in9J;ghE2lCm70nax,ri,sm0;riCyss87;ch,k;aWeRhNiLoGrEuDyC;!l2roEDs1;n6r6E;avD0eCist0oy,um0;ntCRvBKy;bFdAWmCny;!asDmCoharu;aFFie,y;!z;iA6y;mCt4;!my,othy;adEeoDia0SomC;!as;!dor91;!de4;dFrC;enBKrC;anBJeCy;ll,nBI;!dy;dgh,ha,iCnn2req,tsu5V;cDAka;aYcotWeThPiMlobod0oKpenc2tEurDvenAEyCzym1;ed,lvest2;aj,e9V;anFeDuC;!aA;fan17phEQvCwaA;e77ie;!islaCl9;v,w;lom1rBuC;leymaDHta;dDgmu9UlCm1yabonga;as,v8B;!dhart8Yn9;aEeClo75;lCrm0;d1t1;h9Jne,qu1Jun,wn,yne;aDbastiEDk2Yl5Mpp,rgCth,ymoCU;e1Dio;m4n;!tC;!ie,y;eDPlFmEnCq67tosCMul;dCj2UtiA5;e01ro;!iATkeB6mC4u5;!ik,vato9K;aZeUheC8iRoGuDyC;an,ou;b99dDf4peAssC;!elEG;ol00y;an,bLc7MdJel,geIh0lHmGnEry,sDyC;!ce;ar7Ocoe,s;!aCnBU;ld,n;an,eo;a7Ef;l7Jr;e3Eg2n9olfo,riC;go;bBNeDH;cCl9;ar87c86h54kCo;!ey,ie,y;cFeA3gDid,ubByCza;an8Ln06;g85iC;naC6s;ep;ch8Kfa5hHin2je8HlGmFndEoHpha5sDul,wi36yC;an,mo8O;h9Im4;alDSol3O;iD0on;f,ph;ul;e9CinC;cy,t1;aOeLhilJiFrCyoG;aDeC;m,st1;ka85v2O;eDoC;tr;r8GtC;er,ro;!ipCl6H;!p6U;dCLrcy,tC;ar,e9JrC;!o7;b9Udra8So9UscAHtri62ulCv8I;!ie,o7;ctav6Ji2lImHndrBRrGsDtCum6wB;is,to;aDc6k6m0vCwaBE;al79;ma;i,vR;ar,er;aDeksandr,ivC;er,i2;f,v;aNeLguyBiFoCu3O;aDel,j4l0ma0rC;beAm0;h,m;cFels,g5i9EkDlC;es,s;!au,h96l78olaC;!i,y;hCkCol76;ol75;al,d,il,ls1vC;ilAF;hom,tC;e,hC;anCy;!a5i5;aYeViLoGuDyC;l4Nr1;hamDr84staC;fa,p6E;ed,mG;di10e,hamEis4JntDritz,sCussa;es,he;e,y;ad,ed,mC;ad,ed;cGgu5hai,kFlEnDtchC;!e8O;a9Pik;house,o7t1;ae73eC3ha8Iolaj;ah,hDkC;!ey,y;aDeC;al,l;el,l;hDlv3rC;le,ri8Ev4T;di,met;ay0c00gn4hWjd,ks2NlTmadZnSrKsXtDuric7VxC;imilBKwe8B;eHhEi69tCus,y69;!eo,hCia7;ew,i67;eDiC;as,eu,s;us,w;j,o;cHiGkFlEqu8Qsha83tCv3;iCy;!m,n;in,on;el,o7us;a6Yo7us;!elCin,o7us;!l8o;frAEi5Zny,u5;achDcoCik;lm;ai,y;amDdi,e5VmC;oud;adCm6W;ou;aulCi9P;ay;aWeOiMloyd,oJuDyC;le,nd1;cFdEiDkCth2uk;a7e;gi,s,z;ov7Cv6Hw6H;!as,iC;a6Een;g0nn52renDuCvA4we7D;!iS;!zo;am,n4oC;n5r;a9Yevi,la5KnHoFst2thaEvC;eCi;nte;bo;nCpo8V;!a82el,id;!nC;aAy;mEnd1rDsz73urenCwr6K;ce,t;ry,s;ar,beAont;aOeIhalHiFla4onr63rDu5SylC;e,s;istCzysztof;i0oph2;er0ngsl9p,rC;ilA9k,ollos;ed,id;en0iGnDrmCv4Z;it;!dDnCt1;e2Ny;ri4Z;r,th;cp2j4mEna8BrDsp6them,uC;ri;im,l;al,il;a03eXiVoFuC;an,lCst3;en,iC;an,en,o,us;aQeOhKkub4AnIrGsDzC;ef;eDhCi9Wue;!ua;!f,ph;dCge;i,on;!aCny;h,s,th6J;anDnC;!ath6Hie,n72;!nC;!es;!l,sCy;ph;o,qu3;an,mC;!i,m6V;d,ffFns,rCs4;a7JemDmai7QoCry;me,ni1H;i9Dy;!e73rC;ey,y;cKdBkImHrEsDvi2yC;dBs1;on,p2;ed,oDrCv67;e6Qod;d,s61;al,es5Wis1;a,e,oCub;b,v;ob,qu13;aTbNchiMgLke53lija,nuKonut,rIsEtCv0;ai,suC;ki;aDha0i8XmaCsac;el,il;ac,iaC;h,s;a,vinCw3;!g;k,nngu6X;nac1Xor;ka;ai,rahC;im;aReLoIuCyd6;beAgGmFsC;eyDsC;a3e3;in,n;ber5W;h,o;m2raDsse3wC;a5Pie;c49t1K;a0Qct3XiGnDrC;beAman08;dr7VrC;iCy2N;!k,q1R;n0Tt3S;bKlJmza,nIo,rEsDyC;a5KdB;an,s0;lEo67r2IuCv9;hi5Hki,tC;a,o;an,ey;k,s;!im;ib;a08e00iUlenToQrMuCyorgy;iHnFsC;!taC;f,vC;!e,o;n6tC;er,h2;do,lC;herDlC;auCerQ;me;aEegCov2;!g,orC;!io,y;dy,h7C;dfr9nza3XrDttfC;ri6C;an,d47;!n;acoGlEno,oCuseppe;rgiCvan6O;!o,s;be6Ies,lC;es;mo;oFrC;aDha4HrCt;it,y;ld,rd8;ffErgC;!e7iCy;!os;!r9;bElBrCv3;eCla1Nr4Hth,y;th;e,rC;e3YielC;!i4;aXeSiQlOorrest,rCyod2E;aHedFiC;edDtC;s,z;ri18;!d42eri11riC;ck,k;nCs2;cEkC;ie,lC;in,yn;esLisC;!co,z3M;etch2oC;ri0yd;d5lConn;ip;deriFliEng,rC;dinaCg4nan0B;nd8;pe,x;co;bCdi,hd;iEriC;ce,zC;io;an,en,o;benez2dZfrYit0lTmMnJo3rFsteb0th0ugenEvCymBzra;an,eCge4D;ns,re3K;!e;gi,iDnCrol,v3w3;est8ie,st;cCk;!h,k;o0DriCzo;co,qC;ue;aHerGiDmC;aGe3A;lCrh0;!iC;a10o,s;s1y;nu5;beAd1iEliDm2t1viCwood;n,s;ot28s;!as,j5Hot,sC;ha;a3en;!dGg6mFoDua2QwC;a2Pin;arC;do;oZuZ;ie;a04eTiOmitrNoFrag0uEwDylC;an,l0;ay3Hig4D;a3Gdl9nc0st3;minFnDri0ugCvydGy2S;!lF;!a36nCov0;e1Eie,y;go,iDykC;as;cCk;!k;i,y;armuFetDll1mitri7neCon,rk;sh;er,m6riC;ch;id;andLepak,j0lbeAmetri4nIon,rGsEvDwCxt2;ay30ey;en,in;hawn,moC;nd;ek,riC;ck;is,nC;is,y;rt;re;an,le,mKnIrEvC;e,iC;!d;en,iEne0PrCyl;eCin,yl;l45n;n,o,us;!iCny;el,lo;iCon;an,en,on;a0Fe0Ch03iar0lRoJrFuDyrC;il,us;rtC;!is;aEistC;iaCob12;no;ig;dy,lInErC;ey,neliCy;s,us;nEor,rDstaC;nt3;ad;or;by,e,in,l3t1;aHeEiCyde;fCnt,ve;fo0Xt1;menDt4;us;s,t;rFuDyC;!t1;dCs;e,io;enC;ce;aHeGrisC;!toC;phCs;!eC;!r;st2t;d,rCs;b5leC;s,y;cDdrCs6;ic;il;lHmFrC;ey,lDroCy;ll;!o7t1;er1iC;lo;!eb,v3;a09eZiVjorn,laUoSrEuCyr1;ddy,rtKst2;er;aKeFiEuDyC;an,ce,on;ce,no;an,ce;nDtC;!t;dDtC;!on;an,on;dFnC;dDisC;lav;en,on;!foOl9y;bby,gd0rCyd;is;i0Lke;bElDshC;al;al,lL;ek;nIrCshoi;at,nEtC;!raC;m,nd;aDhaCie;rd;rd8;!iDjam3nCs1;ie,y;to;kaMlazs,nHrC;n9rDtC;!holomew;eCy;tt;ey;dCeD;ar,iC;le;ar1Nb1Dd16fon15gust3hm12i0Zja0Yl0Bm07nTputsiSrGsaFugustEveDyCziz;a0kh0;ry;o,us;hi;aMchiKiJjun,mHnEon,tCy0;em,hCie,ur8;ur;aDoC;!ld;ud,v;aCin;an,nd8;!el,ki;baCe;ld;ta;aq;aMdHgel8tCw6;hoFoC;iDnC;!i8y;ne;ny;er7rCy;eDzC;ej;!as,i,j,s,w;!s;s,tolC;iCy;!y;ar,iEmaCos;nu5r;el;ne,r,t;aVbSdBeJfHiGl01onFphonsEt1vC;aPin;on;e,o;so,zo;!sR;!onZrC;ed;c,jaHksFssaHxC;!andC;er,rC;e,os,u;andCei;ar,er,r;ndC;ro;en;eDrecC;ht;rt8;dd3in,n,sC;taC;ir;ni;dDm6;ar;an,en;ad,eC;d,t;in;so;aGi,olErDvC;ik;ian8;f8ph;!o;mCn;!a;dGeFraDuC;!bakr,lfazl;hCm;am;!l;allFel,oulaye,ulC;!lDrahm0;an;ah,o;ah;av,on\",Uncountable:\"true¦0:2E;1:2L;2:33;a2Ub2Lc29d22e1Rf1Ng1Eh16i11j0Yk0Wl0Rm0Hn0Do0Cp03rZsLt9uran2Jv7w3you gu0E;a5his17i4oo3;d,l;ldlife,ne;rm8t1;apor,ernacul29i3;neg28ol1Otae;eDhBiAo8r4un3yranny;a,gst1B;aff2Oea1Ko4ue nor3;th;o08u3;bleshoot2Ose1Tt;night,othpas1Vwn3;foEsfoE;me off,n;er3und1;e,mod2S;a,nnis;aDcCeBhAi9ki8o7p6t4u3weepstak0;g1Unshi2Hshi;ati08e3;am,el;ace2Keci0;ap,cc1meth2C;n,ttl0;lk;eep,ingl0or1C;lf,na1Gri0;ene1Kisso1C;d0Wfe2l4nd,t3;i0Iurn;m1Ut;abi0e4ic3;e,ke15;c3i01laxa11search;ogni10rea10;a9e8hys7luto,o5re3ut2;amble,mis0s3ten20;en1Zs0L;l3rk;i28l0EyH; 16i28;a24tr0F;nt3ti0M;i0s;bstetri24vercrowd1Qxyg09;a5e4owada3utella;ys;ptu1Ows;il poliZtional securi2;aAe8o5u3;m3s1H;ps;n3o1K;ey,o3;gamy;a3cha0Elancholy,rchandi1Htallurgy;sl0t;chine3g1Aj1Hrs,thema1Q; learn1Cry;aught1e6i5ogi4u3;ck,g12;c,s1M;ce,ghtn18nguis1LteratWv1;ath1isVss;ara0EindergartPn3;icke0Aowled0Y;e3upit1;a3llyfiGwel0G;ns;ce,gnor6mp5n3;forma00ter3;net,sta07;atiSort3rov;an18;a7e6isto09o3ung1;ckey,mework,ne4o3rseradi8spitali2use arrest;ky;s2y;adquarteXre;ir,libut,ppiHs3;hi3te;sh;ene8l6o5r3um,ymnas11;a3eZ;niUss;lf,re;ut3yce0F;en; 3ti0W;edit0Hpo3;ol;aNicFlour,o4urnit3;ure;od,rgive3uri1wl;ness;arCcono0LducaBlectr9n7quip8thi0Pvery6x3;ist4per3;ti0B;en0J;body,o08th07;joy3tertain3;ment;ici2o3;ni0H;tiS;nings,th;emi02i6o4raugh3ynas2;ts;pe,wnstai3;rs;abet0ce,s3;honZrepu3;te;aDelciChAivi07l8o3urrency;al,ld w6mmenta5n3ral,ttIuscoB;fusiHt 3;ed;ry;ar;assi01oth0;es;aos,e3;eMwK;us;d,rO;a8i6lood,owlHread5u3;ntGtt1;er;!th;lliarJs3;on;g3ss;ga3;ge;cKdviJeroGirFmBn6ppeal court,r4spi3thleL;rin;ithmet3sen3;ic;i6y3;o4th3;ing;ne;se;en5n3;es2;ty;ds;craft;bi8d3nau7;yna3;mi6;ce;id,ous3;ti3;cs\",Infinitive:\"true¦0:9G;1:9T;2:AD;3:90;4:9Z;5:84;6:AH;7:A9;8:92;9:A0;A:AG;B:AI;C:9V;D:8R;E:8O;F:97;G:6H;H:7D;a94b8Hc7Jd68e4Zf4Mg4Gh4Ai3Qj3Nk3Kl3Bm34nou48o2Vp2Equ2Dr1Es0CtZuTvRwI;aOeNiLors5rI;eJiI;ng,te;ak,st3;d5e8TthI;draw,er;a2d,ep;i2ke,nIrn;d1t;aIie;liADniAry;nJpI;ho8Llift;cov1dJear8Hfound8DlIplug,rav82tie,ve94;eaAo3X;erIo;cut,go,staAFvalA3w2G;aSeQhNoMrIu73;aIe72;ffi3Smp3nsI;aBfo7CpI;i8oD;pp3ugh5;aJiJrIwaD;eat5i2;nk;aImA0;ch,se;ck3ilor,keImp1r8L;! paD;a0Ic0He0Fh0Bi0Al08mugg3n07o05p02qu01tUuLwI;aJeeIim;p,t5;ll7Wy;bNccMffLggeCmmKppJrI;mouFpa6Zvi2;o0re6Y;ari0on;er,i4;e7Numb;li9KmJsiIveD;de,st;er9it;aMe8MiKrI;ang3eIi2;ng27w;fIng;f5le;b,gg1rI;t3ve;a4AiA;a4UeJit,l7DoI;il,of;ak,nd;lIot7Kw;icEve;atGeak,i0O;aIi6;m,y;ft,ng,t;aKi6CoJriIun;nk,v6Q;ot,rt5;ke,rp5tt1;eIll,nd,que8Gv1w;!k,m;aven9ul8W;dd5tis1Iy;a0FeKiJoI;am,t,ut;d,p5;a0Ab08c06d05f01group,hea00iZjoi4lXmWnVpTq3MsOtMup,vI;amp,eJiIo3B;sEve;l,rI;e,t;i8rI;ie2ofE;eLiKpo8PtIurfa4;o24rI;aHiBuctu8;de,gn,st;mb3nt;el,hra0lIreseF;a4e71;d1ew,o07;aHe3Fo2;a7eFiIo6Jy;e2nq41ve;mbur0nf38;r0t;inKleBocus,rJuI;el,rbiA;aBeA;an4e;aBu4;ei2k8Bla43oIyc3;gni39nci3up,v1;oot,uI;ff;ct,d,liIp;se,ze;tt3viA;aAenGit,o7;aWerUinpoiFlumm1LoTrLuI;b47ke,niArIt;poDsuI;aFe;eMoI;cKd,fe4XhibEmo7noJpo0sp1tru6vI;e,i6o5L;un4;la3Nu8;aGclu6dJf1occupy,sup0JvI;a6BeF;etermi4TiB;aGllu7rtr5Ksse4Q;cei2fo4NiAmea7plex,sIva6;eve8iCua6;mp1rItrol,ve;a6It6E;bOccuNmEpMutLverIwe;l07sJtu6Yu0wI;helm;ee,h1F;gr5Cnu2Cpa4;era7i4Ipo0;py,r;ey,seItaH;r2ss;aMe0ViJoIultiply;leCu6Pw;micJnIspla4;ce,g3us;!k;iIke,na9;m,ntaH;aPeLiIo0u3N;ke,ng1quIv5;eIi6S;fy;aKnIss5;d,gI;th5;rn,ve;ng2Gu1N;eep,idnJnI;e4Cow;ap;oHuI;gg3xtaI;po0;gno8mVnIrk;cTdRfQgeChPitia7ju8q1CsNtKun6EvI;a6eIo11;nt,rt,st;erJimi6BoxiPrI;odu4u6;aBn,pr03ru6C;iCpi8tIu8;all,il,ruB;abEibE;eCo3Eu0;iIul9;ca7;i7lu6;b5Xmer0pI;aLer4Uin9ly,oJrI;e3Ais6Bo2;rt,se,veI;riA;le,rt;aLeKiIoiCuD;de,jaInd1;ck;ar,iT;mp1ng,pp5raIve;ng5Mss;ath1et,iMle27oLrI;aJeIow;et;b,pp3ze;!ve5A;gg3ve;aTer45i5RlSorMrJuI;lf4Cndrai0r48;eJiIolic;ght5;e0Qsh5;b3XeLfeEgJsI;a3Dee;eIi2;!t;clo0go,shIwa4Z;ad3F;att1ee,i36;lt1st5;a0OdEl0Mm0FnXquip,rWsVtGvTxI;aRcPeDhOiNpJtIu6;ing0Yol;eKi8lIo0un9;aHoI;it,re;ct,di7l;st,t;a3oDu3B;e30lI;a10u6;lt,mi28;alua7oI;ke,l2;chew,pou0tab19;a0u4U;aYcVdTfSgQhan4joy,lPqOrNsuMtKvI;e0YisI;a9i50;er,i4rI;aHenGuC;e,re;iGol0F;ui8;ar9iC;a9eIra2ulf;nd1;or4;ang1oIu8;r0w;irc3lo0ou0ErJuI;mb1;oaGy4D;b3ct;bKer9pI;hasiIow1;ze;aKody,rI;a4oiI;d1l;lm,rk;ap0eBuI;ci40de;rIt;ma0Rn;a0Re04iKo,rIwind3;aw,ed9oI;wn;agno0e,ff1g,mi2Kne,sLvI;eIul9;rIst;ge,t;aWbVcQlod9mant3pNru3TsMtI;iIoDu37;lJngI;uiA;!l;ol2ua6;eJlIo0ro2;a4ea0;n0r0;a2Xe36lKoIu0S;uIv1;ra9;aIo0;im;a3Kur0;b3rm;af5b01cVduBep5fUliTmQnOpMrLsiCtaGvI;eIol2;lop;ch;a20i2;aDiBloIoD;re,y;oIy;te,un4;eJoI;liA;an;mEv1;a4i0Ao06raud,y;ei2iMla8oKrI;ee,yI;!pt;de,mIup3;missi34po0;de,ma7ph1;aJrief,uI;g,nk;rk;mp5rk5uF;a0Dea0h0Ai09l08oKrIurta1G;a2ea7ipp3uI;mb3;ales4e04habEinci6ll03m00nIrro6;cXdUfQju8no7qu1sLtKvI;eIin4;ne,r9y;aHin2Bribu7;er2iLoli2Epi8tJuI;lt,me;itu7raH;in;d1st;eKiJoIroFu0;rm;de,gu8rm;ss;eJoI;ne;mn,n0;eIlu6ur;al,i2;buCe,men4pI;eIi3ly;l,te;eBi6u6;r4xiC;ean0iT;rcumveFte;eJirp,oI;o0p;riAw;ncIre5t1ulk;el;a02eSi6lQoPrKuI;iXrIy;st,y;aLeaKiJoad5;en;ng;stfeLtX;ke;il,l11mba0WrrMth1;eIow;ed;!coQfrie1LgPhMliLqueaKstJtrIwild1;ay;ow;th;e2tt3;a2eJoI;ld;ad;!in,ui3;me;bysEckfi8ff3tI;he;b15c0Rd0Iff0Ggree,l0Cm09n03ppZrXsQttOuMvJwaE;it;eDoI;id;rt;gIto0X;meF;aIeCraB;ch,in;pi8sJtoI;niA;aKeIi04u8;mb3rt,ss;le;il;re;g0Hi0ou0rI;an9i2;eaKly,oiFrI;ai0o2;nt;r,se;aMi0GnJtI;icipa7;eJoIul;un4y;al;ly0;aJu0;se;lga08ze;iKlI;e9oIu6;t,w;gn;ix,oI;rd;a03jNmiKoJsoI;rb;pt,rn;niIt;st1;er;ouJuC;st;rn;cLhie2knowled9quiItiva7;es4re;ce;ge;eQliOoKrJusI;e,tom;ue;mIst;moJpI;any,liA;da7;ma7;te;pt;andPduBet,i6oKsI;coKol2;ve;liArt,uI;nd;sh;de;ct;on\",Person:\"true¦0:1Q;a29b1Zc1Md1Ee18f15g13h0Ri0Qj0Nk0Jl0Gm09n06o05p00rPsItCusain bolt,v9w4xzibit,y1;anni,oko on2uji,v1;an,es;en,o;a3ednesday adams,i2o1;lfram,o0Q;ll ferrell,z khalifa;lt disn1Qr1;hol,r0G;a2i1oltai06;n dies0Zrginia wo17;lentino rossi,n goG;a4h3i2ripp,u1yra banks;lZpac shakur;ger woods,mba07;eresa may,or;kashi,t1ylor;um,ya1B;a5carlett johanss0h4i3lobodan milosevic,no2ocr1Lpider1uperm0Fwami; m0Em0E;op dogg,w whi1H;egfried,nbad;akespeaTerlock holm1Sia labeouf;ddam hussa16nt1;a cla11ig9;aAe6i5o3u1za;mi,n dmc,paul,sh limbau1;gh;bin hood,d stew16nald1thko;in0Mo;han0Yngo starr,valdo;ese witherspo0i1mbrandt;ll2nh1;old;ey,y;chmaninoff,ffi,iJshid,y roma1H;a4e3i2la16o1uff daddy;cahont0Ie;lar,p19;le,rZ;lm17ris hilt0;leg,prah winfr0Sra;a2e1iles cra1Bostradam0J; yo,l5tt06wmQ;pole0s;a5e4i2o1ubar03;by,lie5net,rriss0N;randa ju1tt romn0M;ly;rl0GssiaB;cklemo1rkov,s0ta hari,ya angelou;re;ady gaga,e1ibera0Pu;bron jam0Xch wale1e;sa;anye west,e3i1obe bryant;d cudi,efer suther1;la0P;ats,sha;a2effers0fk,k rowling,rr tolki1;en;ck the ripp0Mwaharlal nehru,y z;liTnez,ron m7;a7e5i3u1;lk hog5mphrey1sa01;! bog05;l1tl0H;de; m1dwig,nry 4;an;ile selassFlle ber4m3rrison1;! 1;ford;id,mo09;ry;ast0iannis,o1;odwPtye;ergus0lorence nightinga08r1;an1ederic chopN;s,z;ff5m2nya,ustaXzeki1;el;eril lagasse,i1;le zatop1nem;ek;ie;a6e4i2octor w1rake;ho;ck w1ego maradoC;olf;g1mi lovaOnzel washingt0;as;l1nHrth vadR;ai lNt0;a8h5lint0o1thulhu;n1olio;an,fuci1;us;on;aucKop2ristian baMy1;na;in;millo,ptain beefhe4r1;dinal wols2son1;! palmF;ey;art;a8e5hatt,i3oHro1;ck,n1;te;ll g1ng crosby;atB;ck,nazir bhut2rtil,yon1;ce;to;nksy,rack ob1;ama;l 6r3shton kutch2vril lavig8yn ra1;nd;er;chimed2istot1;le;es;capo2paci1;no;ne\",Adjective:\"true¦0:AI;1:BS;2:BI;3:BA;4:A8;5:84;6:AV;7:AN;8:AF;9:7H;A:BQ;B:AY;C:BC;D:BH;E:9Y;aA2b9Ec8Fd7We79f6Ng6Eh61i4Xj4Wk4Tl4Im41n3Po36p2Oquart7Pr2Ds1Dt14uSvOwFye29;aMeKhIiHoF;man5oFrth7G;dADzy;despreB1n w97s86;acked1UoleF;!sa6;ather1PeFll o70ste1D;!k5;nt1Ist6Ate4;aHeGiFola5T;bBUce versa,gi3Lle;ng67rsa5R;ca1gBSluAV;lt0PnLpHrGsFttermoBL;ef9Ku3;b96ge1; Hb32pGsFtiAH;ca6ide d4R;er,i85;f52to da2;a0Fbeco0Hc0Bd04e02f01gu1XheaBGiXkn4OmUnTopp06pRrNsJtHus0wF;aFiel3K;nt0rra0P;app0eXoF;ld,uS;eHi37o5ApGuF;perv06spec39;e1ok9O;en,ttl0;eFu5;cogn06gul2RlGqu84sF;erv0olv0;at0en33;aFrecede0E;id,rallel0;am0otic0;aFet;rri0tF;ch0;nFq26vers3;sur0terFv7U;eFrupt0;st0;air,inish0orese98;mploy0n7Ov97xpF;ect0lain0;eHisFocume01ue;clFput0;os0;cid0rF;!a8Scov9ha8Jlyi8nea8Gprivileg0sMwF;aFei9I;t9y;hGircumcFonvin2U;is0;aFeck0;lleng0rt0;b20ppea85ssuGttend0uthorF;iz0;mi8;i4Ara;aLeIhoHip 25oGrF;anspare1encha1i2;geth9leADp notch,rpB;rny,ugh6H;ena8DmpGrFs6U;r49tia4;eCo8P;leFst4M;nt0;a0Dc09e07h06i04ki03l01mug,nobbi4XoVpRqueami4XtKuFymb94;bHccinAi generis,pFr5;erFre7N;! dup9b,vi70;du0li7Lp6IsFurb7J;eq9Atanda9X;aKeJi16o2QrGubboFy4Q;rn;aightFin5GungS; fFfF;or7V;adfa9Pri6;lwa6Ftu82;arHeGir6NlendBot Fry;on;c3Qe1S;k5se; call0lImb9phistic16rHuFviV;ndFth1B;proof;dBry;dFub6; o2A;e60ipF;pe4shod;ll0n d7R;g2HnF;ceEg6ist9;am3Se9;co1Zem5lfFn6Are7; suf4Xi43;aGholFient3A;ar5;rlFt4A;et;cr0me,tisfac7F;aOeIheumatoBiGoF;bu8Ztt7Gy3;ghtFv3; 1Sf6X;cJdu8PlInown0pro69sGtF;ard0;is47oF;lu2na1;e1Suc45;alcit8Xe1ondi2;bBci3mpa1;aSePicayu7laOoNrGuF;bl7Tnjabi;eKiIoF;b7VfGmi49pFxi2M;er,ort81;a7uD;maFor,sti7va2;!ry;ciDexis0Ima2CpaB;in55puli8G;cBid;ac2Ynt 3IrFti2;ma40tFv7W;!i3Z;i2YrFss7R;anoBtF; 5XiF;al,s5V;bSffQkPld OnMrLth9utKverF;!aIbMdHhGni75seas,t,wF;ei74rou74;a63e7A;ue;ll;do1Ger,si6A;d3Qg2Aotu5Z; bFbFe on o7g3Uli7;oa80;fashion0school;!ay; gua7XbFha5Uli7;eat;eHligGsF;ce7er0So1C;at0;diFse;a1e1;aOeNiMoGuF;anc0de; moEnHrthFt6V;!eFwe7L;a7Krn;chaGdescri7Iprof30sF;top;la1;ght5;arby,cessa4ighbor5wlyw0xt;k0usiaFv3;ti8;aQeNiLoHuF;dIltiF;facet0p6;deHlGnFot,rbBst;ochro4Xth5;dy;rn,st;ddle ag0nF;dbloZi,or;ag9diocEga,naGrFtropolit4Q;e,ry;ci8;cIgenta,inHj0Fkeshift,mmGnFri4Oscu61ver18;da5Dy;ali4Lo4U;!stream;abEho;aOeLiIoFumberi8;ngFuti1R;stan3RtF;erm,i4H;ghtGteraF;l,ry,te;heart0wei5O;ft JgFss9th3;al,eFi0M;nda4;nguBps0te5;apGind5noF;wi8;ut;ad0itte4uniW;ce co0Hgno6Mll0Cm04nHpso 2UrF;a2releF;va1; ZaYcoWdReQfOgrNhibi4Ri05nMoLsHtFvalu5M;aAeF;nDrdepe2K;a7iGolFuboI;ub6ve1;de,gF;nifica1;rdi5N;a2er;own;eriIiLluenVrF;ar0eq5H;pt,rt;eHiGoFul1O;or;e,reA;fiFpe26termi5E;ni2;mpFnsideCrreA;le2;ccuCdeq5Ene,ppr4J;fFsitu,vitro;ro1;mJpF;arHeGl15oFrop9;li2r11;n2LrfeA;ti3;aGeFi18;d4BnD;tuE;egGiF;c0YteC;al,iF;tiF;ma2;ld;aOelNiLoFuma7;a4meInHrrGsFur5;ti6;if4E;e58o3U; ma3GsF;ick;ghfalut2HspF;an49;li00pf33;i4llow0ndGrdFtM; 05coEworki8;sy,y;aLener44iga3Blob3oKrGuF;il1Nng ho;aFea1Fizzl0;cGtF;ef2Vis;ef2U;ld3Aod;iFuc2D;nf2R;aVeSiQlOoJrF;aGeFil5ug3;q43tf2O;gFnt3S;i6ra1;lk13oHrF; keeps,eFge0Vm9tu41;g0Ei2Ds3R;liF;sh;ag4Mowe4uF;e1or45;e4nF;al,i2;d Gmini7rF;ti6ve1;up;bl0lDmIr Fst pac0ux;oGreacF;hi8;ff;ed,ili0R;aXfVlTmQnOqu3rMthere3veryday,xF;aApIquisi2traHuF;be48lF;ta1;!va2L;edRlF;icF;it;eAstF;whi6; Famor0ough,tiE;rou2sui2;erGiF;ne1;ge1;dFe2Aoq34;er5;ficF;ie1;g9sF;t,ygF;oi8;er;aWeMiHoGrFue;ea4owY;ci6mina1ne,r31ti8ubQ;dact2Jfficult,m,sGverF;ge1se;creGePjoi1paCtF;a1inA;et,te; Nadp0WceMfiLgeneCliJmuEpeIreliAsGvoF;id,ut;pFtitu2ul1L;eCoF;nde1;ca2ghF;tf13;a1ni2;as0;facto;i5ngero0I;ar0Ce09h07i06l05oOrIuF;rmudgeon5stoma4teF;sy;ly;aIeHu1EystalF; cleFli7;ar;epy;fFv17z0;ty;erUgTloSmPnGrpoCunterclVveFy;rt;cLdJgr21jIsHtrF;aFi2;dic0Yry;eq1Yta1;oi1ug3;escenFuN;di8;a1QeFiD;it0;atoDmensuCpF;ass1SulF;so4;ni3ss3;e1niza1;ci1J;ockwiD;rcumspeAvil;eFintzy;e4wy;leGrtaF;in;ba2;diac,ef00;a00ePiLliJoGrFuck nak0;and new,isk,on22;gGldface,naF; fi05fi05;us;nd,tF;he;gGpartisFzarE;an;tiF;me;autifOhiNlLnHsFyoN;iWtselF;li8;eGiFt;gn;aFfi03;th;at0oF;v0w;nd;ul;ckwards,rF;e,rT; priori,b13c0Zd0Tf0Ng0Ihe0Hl09mp6nt06pZrTsQttracti0MuLvIwF;aGkF;wa1B;ke,re;ant garGeraF;ge;de;diIsteEtF;heFoimmu7;nt07;re;to4;hGlFtu2;eep;en;bitIchiv3roHtF;ifiFsy;ci3;ga1;ra4;ry;pFt;aHetizi8rF;oprF;ia2;llFre1;ed,i8;ng;iquFsy;at0e;ed;cohKiJkaHl,oGriFterX;ght;ne,of;li7;ne;ke,ve;olF;ic;ad;ain07gressiIi6rF;eeF;ab6;le;ve;fGraB;id;ectGlF;ue1;ioF;na2; JaIeGvF;erD;pt,qF;ua2;ma1;hoc,infinitum;cuCquiGtu3u2;al;esce1;ra2;erSjeAlPoNrKsGuF;nda1;e1olu2trF;aAuD;se;te;eaGuF;pt;st;aFve;rd;aFe;ze;ct;ra1;nt\",Pronoun:\"true¦elle,h3i2me,she,th0us,we,you;e0ou;e,m,y;!l,t;e,im\",Preposition:\"true¦aPbMcLdKexcept,fIinGmid,notwithstandiWoDpXqua,sCt7u4v2w0;/o,hereSith0;! whHin,oW;ersus,i0;a,s a vis;n1p0;!on;like,til;h1ill,oward0;!s;an,ereby,r0;ough0u;!oM;ans,ince,o that,uch G;f1n0ut;!to;!f;! 0to;effect,part;or,r0;om;espite,own,u3;hez,irca;ar1e0oBy;sides,tween;ri7;bo8cross,ft7lo6m4propos,round,s1t0;!op;! 0;a whole,long 0;as;id0ong0;!st;ng;er;ut\",SportsTeam:\"true¦0:18;1:1E;2:1D;3:14;a1Db15c0Sd0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Am01new UoRpKqueens parkJreal salt lake,sBt6utah jazz,vancouver whitecaps,w4yW;ashington 4h10;natio1Mredski2wizar0W;ampa bay 7e6o4;ronto 4ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasD;buccanee0ra0K;a8eattle 6porting kansas0Wt4; louis 4oke0V;c1Drams;marine0s4;eah13ounH;cramento Rn 4;antonio spu0diego 4francisco gJjose earthquak1;char08paB; ran07;a9h6ittsburgh 5ortland t4;imbe0rail blaze0;pirat1steele0;il4oenix su2;adelphia 4li1;eagl1philNunE;dr1;akland 4klahoma city thunder,rlando magic;athle0Lrai4;de0;england 8orleans 7york 4;g5je3knYme3red bul0Xy4;anke1;ian3;pelica2sain3;patrio3revolut4;ion;anchEeAi4ontreal impact;ami 8lwaukee b7nnesota 4;t5vi4;kings;imberwolv1wi2;rewe0uc0J;dolphi2heat,marli2;mphis grizz4ts;li1;a6eic5os angeles 4;clippe0dodFlaB;esterV; galaxy,ke0;ansas city 4nF;chiefs,roya0D; pace0polis col3;astr05dynamo,rocke3texa2;olden state warrio0reen bay pac4;ke0;allas 8e4i04od6;nver 6troit 4;lio2pisto2ti4;ge0;broncYnugge3;cowbo5maver4;icZ;ys;arEelLhAincinnati 8leveland 6ol4;orado r4umbus crew sc;api7ocki1;brow2cavalie0guar4in4;dia2;bengaVre4;ds;arlotte horAicago 4;b5cubs,fire,wh4;iteB;ea0ulQ;diff4olina panthe0; city;altimore Alackburn rove0oston 6rooklyn 4uffalo bilN;ne3;ts;cel5red4; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 4;brav1falco2h4;awA;ns;es;on villa,r4;os;c6di4;amondbac4;ks;ardi4;na4;ls\",Unit:\"true¦a07b04cXdWexVfTgRhePinYjoule0BkMlJmDnan08oCp9quart0Bsq ft,t7volts,w6y2ze3°1µ0;g,s;c,f,n;dVear1o0;ttR; 0s 0;old;att,b;erNon0;!ne02;ascals,e1i0;cXnt00;rcent,tJ;hms,unceY;/s,e4i0m²,²,³;/h,cro2l0;e0liK;!²;grLsR;gCtJ;it1u0;menQx;erPreP;b5elvins,ilo1m0notO;/h,ph,²;!byGgrEmCs;ct0rtzL;aJogrC;allonJb0ig3rB;ps;a0emtEl oz,t4;hrenheit,radG;aby9;eci3m1;aratDe1m0oulombD;²,³;lsius,nti0;gr2lit1m0;et0;er8;am7;b1y0;te5;l,ps;c2tt0;os0;econd1;re0;!s\",\"Noun|Gerund\":\"true¦0:3O;1:3M;2:3N;3:3D;4:32;5:2V;6:3E;7:3K;8:36;9:3J;A:3B;a3Pb37c2Jd27e23f1Vg1Sh1Mi1Ij1Gk1Dl18m13n11o0Wp0Pques0Sr0EsTtNunderMvKwFyDzB;eroi0oB;ni0o3P;aw2eB;ar2l3;aEed4hispe5i5oCrB;ap8est3i1;n0ErB;ki0r31;i1r2s9tc9;isualizi0oB;lunt1Vti0;stan4ta6;aFeDhin6iCraBy8;c6di0i2vel1M;mi0p8;aBs1;c9si0;l6n2s1;aUcReQhOiMkatKl2Wmo6nowJpeItFuCwB;ea5im37;b35f0FrB;fi0vB;e2Mi2J;aAoryt1KrCuB;d2KfS;etc9ugg3;l3n4;bCi0;ebBi0;oar4;gnBnAt1;a3i0;ip8oB;p8rte2u1;a1r27t1;hCo5reBulp1;a2Qe2;edu3oo3;i3yi0;aKeEi4oCuB;li0n2;oBwi0;fi0;aFcEhear7laxi0nDpor1sB;pon4tructB;r2Iu5;de5;or4yc3;di0so2;p8ti0;aFeacek20laEoCrBublis9;a1Teten4in1oces7;iso2siB;tio2;n2yi0;ckaAin1rB;ki0t1O;fEpeDrganiCvB;erco24ula1;si0zi0;ni0ra1;fe5;avi0QeBur7;gotia1twor6;aDeCi2oB;de3nito5;a2dita1e1ssaA;int0XnBrke1;ifUufactu5;aEeaDiBodAyi0;cen7f1mi1stB;e2i0;r2si0;n4ug9;iCnB;ea4it1;c6l3;ogAuB;dAgg3stif12;ci0llust0VmDnBro2;nova1sp0NterBven1;ac1vie02;agi2plo4;aDea1iCoBun1;l4w3;ki0ri0;nd3rB;roWvB;es1;aCene0Lli4rBui4;ee1ie0N;rde2the5;aHeGiDlCorBros1un4;e0Pmat1;ir1oo4;gh1lCnBs9;anZdi0;i0li0;e3nX;r0Zscina1;a1du01nCxB;erci7plo5;chan1di0ginB;ee5;aLeHiGoub1rCum8wB;el3;aDeCiB;bb3n6vi0;a0Qs7;wi0;rTscoDvi0;ba1coZlBvelo8;eCiB;ve5;ga1;nGti0;aVelebUhSlPoDrBur3yc3;aBos7yi0;f1w3;aLdi0lJmFnBo6pi0ve5;dDsCvinB;ci0;trBul1;uc1;muniDpB;lBo7;ai2;ca1;lBo5;ec1;c9ti0;ap8eaCimToBubT;ni0t9;ni0ri0;aBee5;n1t1;ra1;m8rCs1te5;ri0;vi0;aPeNitMlLoGrDuB;dge1il4llBr8;yi0;an4eat9oadB;cas1;di0;a1mEokB;i0kB;ee8;pi0;bi0;es7oa1;c9i0;gin2lonAt1;gi0;bysit1c6ki0tt3;li0;ki0;bando2cGdverti7gi0pproac9rgDssuCtB;trac1;mi0;ui0;hi0;si0;coun1ti0;ti0;ni0;ng\",PhrasalVerb:\"true¦0:92;1:96;2:8H;3:8V;4:8A;5:83;6:85;7:98;8:90;9:8G;A:8X;B:8R;C:8U;D:8S;E:70;F:97;G:8Y;H:81;I:7H;J:79;a9Fb7Uc6Rd6Le6Jf5Ig50h4Biron0j47k40l3Em31n2Yo2Wp2Cquiet Hr1Xs0KtZuXvacuu6QwNyammerBzK;ero Dip LonK;e0k0;by,ov9up;aQeMhLiKor0Mrit19;mp0n3Fpe0r5s5;ackAeel Di0S;aLiKn33;gh 3Wrd0;n Dr K;do1in,oJ;it 79k5lk Lrm 69sh Kt83v60;aw3do1o7up;aw3in,oC;rgeBsK;e 2herE;a00eYhViRoQrMuKypP;ckErn K;do1in,oJup;aLiKot0y 30;ckl7Zp F;ck HdK;e 5Y;n7Wp 3Es5K;ck MdLe Kghten 6me0p o0Rre0;aw3ba4do1in,up;e Iy 2;by,oG;ink Lrow K;aw3ba4in,up;ba4ov9up;aKe 77ll62;m 2r 5M;ckBke Llk K;ov9shit,u47;aKba4do1in,leave,o4Dup;ba4ft9pa69w3;a0Vc0Te0Mh0Ii0Fl09m08n07o06p01quar5GtQuOwK;earMiK;ngLtch K;aw3ba4o8K; by;cKi6Bm 2ss0;k 64;aReQiPoNrKud35;aigh2Det75iK;ke 7Sng K;al6Yup;p Krm2F;by,in,oG;c3Ln3Lr 2tc4O;p F;c3Jmp0nd LrKveAy 2O;e Ht 2L;ba4do1up;ar3GeNiMlLrKurB;ead0ingBuc5;a49it 6H;c5ll o3Cn 2;ak Fe1Xll0;a3Bber 2rt0und like;ap 5Vow Duggl5;ash 6Noke0;eep NiKow 6;cLp K;o6Dup;e 68;in,oK;ff,v9;de19gn 4NnKt 6Gz5;gKkE; al6Ale0;aMoKu5W;ot Kut0w 7M;aw3ba4f48oC;c2WdeEk6EveA;e Pll1Nnd Orv5tK; Ktl5J;do1foLin,o7upK;!on;ot,r5Z;aw3ba4do1in,o33up;oCto;al66out0rK;ap65ew 6J;ilAv5;aXeUiSoOuK;b 5Yle0n Kstl5;aLba4do1inKo2Ith4Nu5P;!to;c2Xr8w3;ll Mot LpeAuK;g3Ind17;a2Wf3Po7;ar8in,o7up;ng 68p oKs5;ff,p18;aKelAinEnt0;c6Hd K;o4Dup;c27t0;aZeYiWlToQrOsyc35uK;ll Mn5Kt K;aKba4do1in,oJto47up;pa4Dw3;a3Jdo1in,o21to45up;attleBess KiNop 2;ah2Fon;iLp Kr4Zu1Gwer 6N;do1in,o6Nup;nt0;aLuK;gEmp 6;ce u20y 6D;ck Kg0le 4An 6p5B;oJup;el 5NncilE;c53ir 39n0ss MtLy K;ba4oG; Hc2R;aw3ba4in,oJ;pKw4Y;e4Xt D;aLerd0oK;dAt53;il Hrrow H;aTeQiPoLuK;ddl5ll I;c1FnkeyMp 6uthAve K;aKdo1in,o4Lup;l4Nw3; wi4K;ss0x 2;asur5e3SlLss K;a21up;t 6;ke Ln 6rKs2Ax0;k 6ryA;do,fun,oCsure,up;a02eViQoLuK;ck0st I;aNc4Fg MoKse0;k Kse4D;aft9ba4do1forw37in56o0Zu46;in,oJ;d 6;e NghtMnLsKve 00;ten F;e 2k 2; 2e46;ar8do1in;aMt LvelK; oC;do1go,in,o7up;nEve K;in,oK;pKut;en;c5p 2sh LtchBughAy K;do1o59;in4Po7;eMick Lnock K;do1oCup;oCup;eLy K;in,up;l Ip K;aw3ba4do1f04in,oJto,up;aMoLuK;ic5mpE;ke3St H;c43zz 2;a01eWiToPuK;nLrrKsh 6;y 2;keLt K;ar8do1;r H;lKneErse3K;d Ke 2;ba4dKfast,o0Cup;ear,o1;de Lt K;ba4on,up;aw3o7;aKlp0;d Ml Ir Kt 2;fKof;rom;f11in,o03uW;cPm 2nLsh0ve Kz2P;at,it,to;d Lg KkerP;do1in,o2Tup;do1in,oK;ut,v9;k 2;aZeTive Rloss IoMrLunK; f0S;ab hold,in43ow 2U; Kof 2I;aMb1Mit,oLr8th1IuK;nd9;ff,n,v9;bo7ft9hQw3;aw3bKdo1in,oJrise,up,w3;a4ir2H;ar 6ek0t K;aLb1Fdo1in,oKr8up;ff,n,ut,v9;cLhKl2Fr8t,w3;ead;ross;d aKng 2;bo7;a0Ee07iYlUoQrMuK;ck Ke2N;ar8up;eLighten KownBy 2;aw3oG;eKshe27; 2z5;g 2lMol Krk I;aKwi20;bo7r8;d 6low 2;aLeKip0;sh0;g 6ke0mKrKtten H;e F;gRlPnNrLsKzzle0;h F;e Km 2;aw3ba4up;d0isK;h 2;e Kl 1T;aw3fPin,o7;ht ba4ure0;ePnLsK;s 2;cMd K;fKoG;or;e D;d04l 2;cNll Krm0t1G;aLbKdo1in,o09sho0Eth08victim;a4ehi2O;pa0C;e K;do1oGup;at Kdge0nd 12y5;in,o7up;aOi1HoNrK;aLess 6op KuN;aw3b03in,oC;gBwB; Ile0ubl1B;m 2;a0Ah05l02oOrLut K;aw3ba4do1oCup;ackBeep LoKy0;ss Dwd0;by,do1in,o0Uup;me NoLuntK; o2A;k 6l K;do1oG;aRbQforOin,oNtKu0O;hLoKrue;geth9;rough;ff,ut,v9;th,wK;ard;a4y;paKr8w3;rt;eaLose K;in,oCup;n 6r F;aNeLiK;ll0pE;ck Der Kw F;on,up;t 2;lRncel0rOsMtch LveE; in;o1Nup;h Dt K;doubt,oG;ry LvK;e 08;aw3oJ;l Km H;aLba4do1oJup;ff,n,ut;r8w3;a0Ve0MiteAl0Fo04rQuK;bblNckl05il0Dlk 6ndl05rLsKtMy FzzA;t 00;n 0HsK;t D;e I;ov9;anWeaUiLush K;oGup;ghQng K;aNba4do1forMin,oLuK;nd9p;n,ut;th;bo7lKr8w3;ong;teK;n 2;k K;do1in,o7up;ch0;arTg 6iRn5oPrNssMttlLunce Kx D;aw3ba4;e 6; ar8;e H;do1;k Dt 2;e 2;l 6;do1up;d 2;aPeed0oKurt0;cMw K;aw3ba4do1o7up;ck;k K;in,oC;ck0nk0stA; oQaNef 2lt0nd K;do1ov9up;er;up;r Lt K;do1in,oCup;do1o7;ff,nK;to;ck Pil0nMrgLsK;h D;ainBe D;g DkB; on;in,o7;aw3do1in,oCup;ff,ut;ay;ct FdQir0sk MuctionA; oG;ff;ar8o7;ouK;nd; o7;d K;do1oKup;ff,n;wn;o7up;ut\",ProperNoun:\"true¦aIbDc8dalhousHe7f5gosford,h4iron maiden,kirby,landsdowne,m2nis,r1s0wembF;herwood,paldiB;iel,othwe1;cgi0ercedes,issy;ll;intBudsB;airview,lorence,ra0;mpt9nco;lmo,uro;a1h0;arlt6es5risti;rl0talina;et4i0;ng;arb3e0;et1nt0rke0;ley;on;ie;bid,jax\",\"Person|Place\":\"true¦a8d6h4jordan,k3orlando,s1vi0;ctor9rgin9;a0ydney;lvador,mara,ntia4;ent,obe;amil0ous0;ton;arw2ie0;go;lexandr1ust0;in;ia\",LastName:\"true¦0:BR;1:BF;2:B5;3:BH;4:AX;5:9Y;6:B6;7:BK;8:B0;9:AV;A:AL;B:8Q;C:8G;D:7K;E:BM;F:AH;aBDb9Zc8Wd88e81f7Kg6Wh64i60j5Lk4Vl4Dm39n2Wo2Op25quispe,r1Ls0Pt0Ev03wTxSyKzG;aIhGimmerm6A;aGou,u;ng,o;khar5ytsE;aKeun9BiHoGun;koya32shiBU;!lG;diGmaz;rim,z;maGng;da,g52mo83sGzaC;aChiBV;iao,u;aLeJiHoGright,u;jcA5lff,ng;lGmm0nkl0sniewsC;kiB1liams33s3;bGiss,lt0;b,er,st0;a6Vgn0lHtG;anabe,s3;k0sh,tG;e2Non;aLeKiHoGukD;gt,lk5roby5;dHllalGnogr3Kr1Css0val3S;ba,ob1W;al,ov4;lasHsel8W;lJn dIrgBEsHzG;qu7;ilyEqu7siljE;en b6Aijk,yk;enzueAIverde;aPeix1VhKi2j8ka43oJrIsui,uG;om5UrG;c2n0un1;an,emblA7ynisC;dorAMlst3Km4rrAth;atch0i8UoG;mHrG;are84laci79;ps3sG;en,on;hirDkah9Mnaka,te,varA;a06ch01eYhUiRmOoMtIuHvGzabo;en9Jobod3N;ar7bot4lliv2zuC;aIeHoG;i7Bj4AyanAB;ele,in2FpheBvens25;l8rm0;kol5lovy5re7Tsa,to,uG;ng,sa;iGy72;rn5tG;!h;l71mHnGrbu;at9cla9Egh;moBo7M;aIeGimizu;hu,vchG;en8Luk;la,r1G;gu9infe5YmGoh,pulveA7rra5P;jGyG;on5;evi6iltz,miHneid0roed0uGwarz;be3Elz;dHtG;!t,z;!t;ar4Th8ito,ka4OlJnGr4saCto,unde19v4;ch7dHtGz;a5Le,os;b53e16;as,ihDm4Po0Y;aVeSiPoJuHyG;a6oo,u;bio,iz,sG;so,u;bKc8Fdrigue67ge10j9YmJosevelt,sItHux,wG;e,li6;a9Ch;enb4Usi;a54e4L;erts15i93;bei4JcHes,vGzzo;as,e9;ci,hards12;ag2es,iHut0yG;es,nol5N;s,t0;dImHnGsmu97v6C;tan1;ir7os;ic,u;aUeOhMiJoHrGut8;asad,if6Zochazk27;lishc2GpGrti72u10we76;e3Aov51;cHe45nG;as,to;as70hl0;aGillips;k,m,n6I;a3Hde3Wete0Bna,rJtG;ersHrovGters54;!a,ic;!en,on;eGic,kiBss3;i9ra,tz,z;h86k,padopoulIrk0tHvG;ic,l4N;el,te39;os;bMconn2Ag2TlJnei6PrHsbor6XweBzG;dem7Rturk;ella4DtGwe6N;ega,iz;iGof7Hs8I;vGyn1R;ei9;aSri1;aPeNiJoGune50ym2;rHvGwak;ak4Qik5otn66;odahl,r4S;cholsZeHkolGls4Jx3;ic,ov84;ls1miG;!n1;ils3mG;co4Xec;gy,kaGray2sh,var38;jiGmu9shiG;ma;a07c04eZiWoMuHyeG;rs;lJnIrGssoli6S;atGp03r7C;i,ov4;oz,te58;d0l0;h2lOnNo0RrHsGza1A;er,s;aKeJiIoz5risHtG;e56on;!on;!n7K;au,i9no,t5J;!lA;r1Btgome59;i3El0;cracFhhail5kkeHlG;l0os64;ls1;hmeJiIj30lHn3Krci0ssiGyer2N;!er;n0Po;er,j0;dDti;cartHlG;aughl8e2;hy;dQe7Egnu68i0jer3TkPmNnMrItHyG;er,r;ei,ic,su21thews;iHkDquAroqu8tinG;ez,s;a5Xc,nG;!o;ci5Vn;a5UmG;ad5;ar5e6Kin1;rig77s1;aVeOiLoJuHyG;!nch;k4nGo;d,gu;mbarGpe3Fvr4we;di;!nGu,yana2B;coln,dG;b21holm,strom;bedEfeKhIitn0kaHn8rGw35;oy;!j;m11tG;in1on1;bvGvG;re;iGmmy,ng,rs2Qu,voie,ws3;ne,t1F;aZeYh2iWlUnez50oNrJuHvar2woG;k,n;cerGmar68znets5;a,o34;aHem0isGyeziu;h23t3O;m0sni4Fus3KvG;ch4O;bay57ch,rh0Usk16vaIwalGzl5;czGsC;yk;cIlG;!cGen4K;huk;!ev4ic,s;e8uiveG;rt;eff0kGl4mu9nnun1;ucF;ll0nnedy;hn,llKminsCne,pIrHstra3Qto,ur,yGzl5;a,s0;j0Rls22;l2oG;or;oe;aPenOha6im14oHuG;ng,r4;e32hInHrge32u6vG;anD;es,ss3;anHnsG;en,on,t3;nesGs1R;en,s1;kiBnings,s1;cJkob4EnGrv0E;kDsG;en,sG;en0Ion;ks3obs2A;brahimDglesi5Nke5Fl0Qno07oneIshikHto,vanoG;u,v54;awa;scu;aVeOiNjaltal8oIrist50uG;!aGb0ghAynh;m2ng;a6dz4fIjgaa3Hk,lHpUrGwe,x3X;ak1Gvat;mAt;er,fm3WmG;ann;ggiBtchcock;iJmingw4BnHrGss;nand7re9;deGriks1;rs3;kkiHnG;on1;la,n1;dz4g1lvoQmOns0ZqNrMsJuIwHyG;asFes;kiB;g1ng;anHhiG;mo14;i,ov0J;di6p0r10t;ue;alaG;in1;rs1;aVeorgUheorghe,iSjonRoLrJuGw3;errGnnar3Co,staf3Ctierr7zm2;a,eG;ro;ayli6ee2Lg4iffithGub0;!s;lIme0UnHodGrbachE;e,m2;calvAzale0S;dGubE;bGs0E;erg;aj,i;bs3l,mGordaO;en7;iev3U;gnMlJmaIndFo,rGsFuthi0;cGdn0za;ia;ge;eaHlG;agh0i,o;no;e,on;aVerQiLjeldsted,lKoIrHuG;chs,entAji41ll0;eem2iedm2;ntaGrt8urni0wl0;na;emi6orA;lipIsHtzgeraG;ld;ch0h0;ovG;!ic;hatDnanIrG;arGei9;a,i;deY;ov4;b0rre1D;dKinsJriksIsGvaB;cob3GpGtra3D;inoza,osiQ;en,s3;te8;er,is3warG;ds;aXePiNjurhuMoKrisco15uHvorakG;!oT;arte,boHmitru,nn,rGt3C;and,ic;is;g2he0Omingu7nErd1ItG;to;us;aGcki2Hmitr2Ossanayake,x3;s,z; JbnaIlHmirGrvisFvi,w2;!ov4;gado,ic;th;bo0groot,jo6lHsilGvriA;va;a cruz,e3uG;ca;hl,mcevsCnIt2WviG;dGes,s;ov,s3;ielsGku22;!en;ki;a0Be06hRiobQlarkPoIrGunningh1H;awfo0RivGuz;elli;h1lKntJoIrGs2Nx;byn,reG;a,ia;ke,p0;i,rer2K;em2liB;ns;!e;anu;aOeMiu,oIristGu6we;eGiaG;ns1;i,ng,p9uHwGy;!dH;dGng;huJ;!n,onGu6;!g;kJnIpm2ttHudhGv7;ry;erjee,o14;!d,g;ma,raboG;rty;bJl0Cng4rG;eghetHnG;a,y;ti;an,ota1C;cerAlder3mpbeLrIstGvadi0B;iGro;llo;doHl0Er,t0uGvalho;so;so,zo;ll;a0Fe01hYiXlUoNrKuIyG;rLtyG;qi;chan2rG;ke,ns;ank5iem,oGyant;oks,wG;ne;gdan5nIruya,su,uchaHyKziG;c,n5;rd;darGik;enG;ko;ov;aGond15;nco,zG;ev4;ancFshw16;a08oGuiy2;umGwmG;ik;ckRethov1gu,ktPnNrG;gJisInG;ascoGds1;ni;ha;er,mG;anG;!n;gtGit7nP;ss3;asF;hi;er,hG;am;b4ch,ez,hRiley,kk0ldw8nMrIshHtAu0;es;ir;bInHtlGua;ett;es,i0;ieYosa;dGik;a9yoG;padhyG;ay;ra;k,ng;ic;bb0Acos09d07g04kht05lZnPrLsl2tJyG;aHd8;in;la;chis3kiG;ns3;aImstro6sl2;an;ng;ujo,ya;dJgelHsaG;ri;ovG;!a;ersJov,reG;aGjEws;ss1;en;en,on,s3;on;eksejEiyEmeiIvG;ar7es;ez;da;ev;arwHuilG;ar;al;ams,l0;er;ta;as\",Ordinal:\"true¦eBf7nin5s3t0zeroE;enDhir1we0;lfCn7;d,t3;e0ixt8;cond,vent7;et0th;e6ie7;i2o0;r0urt3;tie4;ft1rst;ight0lev1;e0h,ie1;en0;th\",Cardinal:\"true¦bEeBf5mEnine7one,s4t0zero;en,h2rDw0;e0o;lve,n5;irt6ousands,ree;even2ix2;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illions\",Multiple:\"true¦b3hundred,m3qu2se1t0;housand,r2;pt1xt1;adr0int0;illion\",City:\"true¦0:74;1:61;2:6G;3:6J;4:5S;a68b53c4Id48e44f3Wg3Hh39i31j2Wk2Fl23m1Mn1Co19p0Wq0Ur0Os05tRuQvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3H;greb,nzib5G;ang2e5okoha3Sunfu;katerin3Hrev0;a5n0Q;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1L;hi5Zkl3A;l63xford;aw;a8e6i5ladivost5Molgogr6L;en3lni6S;ni22r5;o3saill4N;lenc4Wncouv3Sr3ughn;lan bat1Crumqi,trecht;aFbilisi,eEheDiBo9r7u5;l21n63r5;in,ku;i5ondh62;es51poli;kyo,m2Zron1Pulo5;n,uS;an5jua3l2Tmisoa6Bra3;j4Tshui; hag62ssaloni2H;gucigal26hr0l av1U;briz,i6llinn,mpe56ng5rtu,shk2R;i3Esh0;an,chu1n0p2Eyu0;aEeDh8kopje,owe1Gt7u5;ra5zh4X;ba0Ht;aten is55ockholm,rasbou67uttga2V;an8e6i5;jiazhua1llo1m5Xy0;f50n5;ya1zh4H;gh3Kt4Q;att45o1Vv44;cramen16int ClBn5o paulo,ppo3Rrajevo; 7aa,t5;a 5o domin3E;a3fe,m1M;antonio,die3Cfrancisco,j5ped3Nsalvad0J;o5u0;se;em,t lake ci5Fz25;lou58peters24;a9e8i6o5;me,t59;ga,o5yadh;! de janei3F;cife,ims,nn3Jykjavik;b4Sip4lei2Inc2Pwalpindi;ingdao,u5;ez2i0Q;aFeEhDiCo9r7u6yong5;ya1;eb59ya1;a5etor3M;g52to;rt5zn0; 5la4Co;au prin0Melizabe24sa03;ls3Prae5Atts26;iladelph3Gnom pe1Aoenix;ki1tah tik3E;dua,lerYnaji,r4Ot5;na,r32;ak44des0Km1Mr6s5ttawa;a3Vlo;an,d06;a7ew5ing2Fovosibir1Jyc; 5cast36;del24orlea44taip14;g8iro4Wn5pl2Wshv33v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0W;aEeCi9o6u5;mb2Ani26sc3Y;gadishu,nt6s5;c13ul;evideo,pelli1Rre2Z;ami,l6n14s5;kolc,sissauga;an,waukee;cca,d5lbour2Mmph41ndo1Cssi3;an,ell2Xi3;cau,drAkass2Sl9n8r5shh4A;aca6ib5rakesh,se2L;or;i1Sy;a4EchFdal0Zi47;mo;id;aDeAi8o6u5vSy2;anMckn0Odhia3;n5s angel26;d2g bea1N;brev2Be3Lma5nz,sb2verpo28;!ss27; ma39i5;c5pzig;est16; p6g5ho2Wn0Cusan24;os;az,la33;aHharFiClaipeBo9rak0Du7y5;iv,o5;to;ala lump4n5;mi1sh0;hi0Hlka2Xpavog4si5wlo2;ce;da;ev,n5rkuk;gst2sha5;sa;k5toum;iv;bHdu3llakuric0Qmpa3Fn6ohsiu1ra5un1Iwaguc0Q;c0Pj;d5o,p4;ah1Ty;a7e6i5ohannesV;l1Vn0;dd36rusalem;ip4k5;ar2H;bad0mph1OnArkutUs7taXz5;mir,tapala5;pa;fah0l6tanb5;ul;am2Zi2H;che2d5;ianap2Mo20;aAe7o5yder2W; chi mi5ms,nolulu;nh;f6lsin5rakli2;ki;ei;ifa,lifax,mCn5rb1Dva3;g8nov01oi;aFdanEenDhCiPlasgBo9raz,u5;a5jr23;dal6ng5yaquil;zh1J;aja2Oupe;ld coa1Bthen5;bu2S;ow;ent;e0Uoa;sk;lw7n5za;dhi5gt1E;nag0U;ay;aisal29es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Pl paso;in5mont2;bur5;gh;aBe8ha0Xisp4o7resd0Lu5;b5esseldorf,nkirk,rb0shanbe;ai,l0I;ha,nggu0rtmu13;hradSl6nv5troit;er;hi;donghIe6k09l5masc1Zr es sala1KugavpiY;i0lU;gu,je2;aJebu,hAleve0Vo5raio02uriti1Q;lo7n6penhag0Ar5;do1Ok;akKst0V;gUm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;ng5ttogr14;ch8sha,zh07;gliari,i9lga8mayenJn6pe town,r5tanO;acCdiff;ber1Ac5;un;ry;ro;aWeNhKirmingh0WoJr9u5;chareTdapeTenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil8tisla7zzav5;il5;le;va;ia;goZst2;op6ubaneshw5;ar;al;iCl9ng8r5;g6l5n;in;en;aluru,hazi;fa6grade,o horizon5;te;st;ji1rut;ghd0BkFn9ot8r7s6yan n4;ur;el,r07;celo3i,ranquil09;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a05b02cc01ddis aba00gartaZhmedXizawl,lSmPnHqa00rEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a8c5kaOtwerp;hora6o3;na;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 7buquerq6eppo,giers,ma5;ty;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",Region:\"true¦0:2O;1:2L;2:2U;3:2F;a2Sb2Fc21d1Wes1Vf1Tg1Oh1Ki1Fj1Bk16l13m0Sn09o07pYqVrSsJtEuBverAw6y4zacatec2W;akut0o0Fu4;cat1k09;a5est 4isconsin,yomi1O;bengal,virgin0;rwick3shington4;! dc;acruz,mont;dmurt0t4;ah,tar4; 2Pa12;a6e5laxca1Vripu21u4;scaEva;langa2nnessee,x2J;bas10m4smQtar29;aulip2Hil nadu;a9elang07i7o5taf16u4ylh1J;ff02rr09s1E;me1Gno1Uuth 4;cZdY;ber0c4kkim,naloa;hu1ily;n5rawak,skatchew1xo4;ny; luis potosi,ta catari2;a4hodeA;j4ngp0C;asth1shahi;ingh29u4;e4intana roo;bec,en6retaro;aAe6rince edward4unjab; i4;sl0G;i,n5r4;ak,nambu0F;a0Rnsylv4;an0;ha0Pra4;!na;axa0Zdisha,h4klaho21ntar4reg7ss0Dx0I;io;aLeEo6u4;evo le4nav0X;on;r4tt18va scot0;f9mandy,th4; 4ampton3;c6d5yo4;rk3;ako1O;aroli2;olk;bras1Nva0Dw4; 6foundland4;! and labrad4;or;brunswick,hamp3jers5mexiTyork4;! state;ey;galPyarit;aAeghala0Mi6o4;nta2r4;dov0elos;ch6dlanDn5ss4zor11;issippi,ouri;as geraPneso18;ig1oac1;dhy12harasht0Gine,lac07ni5r4ssachusetts;anhao,i el,ylG;p4toba;ur;anca3e4incoln3ouisI;e4iR;ds;a6e5h4omi;aka06ul2;dah,lant1ntucky,ra01;bardino,lmyk0ns0Qr4;achay,el0nata0X;alis6har4iangxi;kh4;and;co;daho,llino7n4owa;d5gush4;et0;ia2;is;a6ert5i4un1;dalFm0D;ford3;mp3rya2waii;ansu,eorg0lou7oa,u4;an4izhou,jarat;ajuato,gdo4;ng;cester3;lori4uji1;da;sex;ageUe7o5uran4;go;rs4;et;lawaMrby3;aFeaEh9o4rim08umbr0;ahui7l6nnectic5rsi4ventry;ca;ut;i03orado;la;e5hattisgarh,i4uvash0;apRhuahua;chn5rke4;ss0;ya;ra;lGm4;bridge3peche;a9ihar,r8u4;ck4ryat0;ingham3;shi4;re;emen,itish columb0;h0ja cal8lk7s4v7;hkorto4que;st1;an;ar0;iforn0;ia;dygHguascalientes,lBndhr9r5ss4;am;izo2kans5un4;achal 7;as;na;a 4;pradesh;a6ber5t4;ai;ta;ba5s4;ka;ma;ea\",Place:\"true¦0:4T;1:4V;2:44;3:4B;4:3I;a4Eb3Gc2Td2Ge26f25g1Vh1Ji1Fk1Cl14m0Vn0No0Jp08r04sTtNuLvJw7y5;a5o0Syz;kut1Bngtze;aDeChitBi9o5upatki,ycom2P;ki26o5;d5l1B;b3Ps5;i4to3Y;c0SllowbroCn5;c2Qgh2;by,chur1P;ed0ntw3Gs22;ke6r3St5;erf1f1; is0Gf3V;auxha3Mirgin is0Jost5;ok;laanbaatar,pto5xb3E;n,wn;a9eotihuac43h7ive49o6ru2Nsarskoe selo,u5;l2Dzigo47;nto,rquay,tt2J;am3e 5orn3E;bronx,hamptons;hiti,j mah0Iu1N;aEcotts bluff,eCfo,herbroQoApring9t7u5yd2F;dbu1Wn5;der03set3B;aff1ock2Nr5;atf1oud;hi37w24;ho,uth5; 1Iam1Zwo3E;a5i2O;f2Tt0;int lawrence riv3Pkhal2D;ayleigh,ed7i5oc1Z;chmo1Eo gran4ver5;be1Dfr09si4; s39cliffe,hi2Y;aCe9h8i5ompeii,utn2;c6ne5tcai2T; 2Pc0G;keri13t0;l,x;k,lh2mbr6n5r2J;n1Hzance;oke;cif38pahanaumokuak30r5;k5then0;si4w1K;ak7r6x5;f1l2X;ange county,d,f1inoco;mTw1G;e8i1Uo5;r5tt2N;th5wi0E; 0Sam19;uschwanste1Pw5; eng6a5h2market,po36;rk;la0P;a8co,e6i5uc;dt1Yll0Z;adow5ko0H;lands;chu picchu,gad2Ridsto1Ql8n7ple6r5;kh2; g1Cw11;hatt2Osf2B;ibu,t0ve1Z;a8e7gw,hr,in5owlOynd02;coln memori5dl2C;al;asi4w3;kefr7mbe1On5s,x;ca2Ig5si05;f1l27t0;ont;azan kreml14e6itchen2Gosrae,rasnoyar5ul;sk;ns0Hs1U;ax,cn,lf1n6ps5st;wiN;d5glew0Lverness;ian27ochina;aDeBi6kg,nd,ov5unti2H;d,enweep;gh6llc5;reL;bu03l5;and5;!s;r5yw0C;ef1tf1;libu24mp6r5stings;f1lem,row;stead,t0;aDodavari,r5uelph;avenAe5imsS;at 8en5; 6f1Fwi5;ch;acr3vall1H;brita0Flak3;hur5;st;ng3y villa0W;airhavHco,ra;aAgli9nf17ppi8u7ver6x5;et1Lf1;glad3t0;rope,st0;ng;nt0;rls1Ls5;t 5;e5si4;nd;aCe9fw,ig8o7ryd6u5xb;mfri3nstab00rh2tt0;en;nca18rcKv19wnt0B;by;n6r5vonpo1D;ry;!h2;nu8r5;l6t5;f1moor;ingt0;be;aLdg,eIgk,hClBo5royd0;l6m5rnwa0B;pt0;c7lingw6osse5;um;ood;he0S;earwat0St;a8el6i5uuk;chen itza,mney ro07natSricahua;m0Zt5;enh2;mor5rlottetPth2;ro;dar 5ntervilA;breaks,faZg5;rove;ld9m8r5versh2;lis6rizo pla5;in;le;bLpbellf1;weQ;aZcn,eNingl01kk,lackLolt0r5uckV;aGiAo5;ckt0ok5wns cany0;lyn,s5;i4to5;ne;de;dge6gh5;am,t0;n6t5;own;or5;th;ceb6m5;lNpt0;rid5;ge;bu5pool,wa8;rn;aconsfEdf1lBr9verly7x5;hi5;ll; hi5;lls;wi5;ck; air,l5;ingh2;am;ie5;ld;ltimore,rnsl6tters5;ea;ey;bLct0driadic,frica,ginJlGmFn9rc8s7tl6yleOzor3;es;!ant8;hcroft,ia; de triomphe,t6;adyr,ca8dov9tarct5;ic5; oce5;an;st5;er;ericas,s;be6dersh5hambra,list0;ot;rt0;cou5;rt;bot7i5;ngd0;on;sf1;ord\",Country:\"true¦0:38;1:2L;2:3B;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om2pZqat1KrXsKtCu7v5wal4yemTz3;a25imbabwe;es,lis and futu2Y;a3enezue32ietnam;nuatu,tican city;gTk6nited 4ruXs3zbeE; 2Ca,sr;arab emirat0Kkingdom,states3;! of am2Y;!raiV;a8haCimor les0Co7rinidad 5u3;nis0rk3valu;ey,me2Zs and caic1V;and t3t3;oba1L;go,kel10nga;iw2ji3nz2T;ki2V;aDcotl1eCi9lov8o6pa2Dri lanka,u5w3yr0;az3edAitzerl1;il1;d2riname;lomon1Xmal0uth 3;afr2KkMsud2;ak0en0;erra leoFn3;gapo1Yt maart3;en;negLrb0ychellZ;int 3moa,n marino,udi arab0;hele26luc0mart21;epublic of ir0Eom2Euss0w3;an27;a4eIhilippinUitcairn1Mo3uerto riN;l1rtugF;ki2Dl4nama,pua new0Vra3;gu7;au,esti3;ne;aBe9i7or3;folk1Ith4w3;ay; k3ern mariana1D;or0O;caragua,ger3ue;!ia;p3ther1Aw zeal1;al;mib0u3;ru;a7exi6icro0Bo3yanm06;ldova,n3roc5zambA;a4gol0t3;enegro,serrat;co;cAdagasc01l7r5urit4yot3;te;an0i16;shall0Xtin3;ique;a4div3i,ta;es;wi,ys0;ao,ed02;a6e5i3uxembourg;b3echtenste12thu1G;er0ya;ban0Isotho;os,tv0;azakh1Fe4iriba04o3uwait,yrgyz1F;rXsovo;eling0Knya;a3erG;ma16p2;c7nd6r4s3taly,vory coast;le of m2rael;a3el1;n,q;ia,oJ;el1;aiTon3ungary;dur0Ng kong;aBermany,ha0QibraltAre8u3;a6ern5inea3ya0P;! biss3;au;sey;deloupe,m,tema0Q;e3na0N;ce,nl1;ar;bUmb0;a7i6r3;ance,ench 3;guia0Epoly3;nes0;ji,nl1;lklandUroeU;ast tim7cu6gypt,l salv6ngl1quatorial4ritr5st3thiop0;on0; guin3;ea;ad3;or;enmark,jibou5ominica4r con3;go;!n C;ti;aBentral african Ah8o5roat0u4yprRzech3; 9ia;ba,racao;c4lo3morQngo brazzaville,okGsta r04te de ivoiL;mb0;osE;i3ristmasG;le,na;republic;m3naUpe verde,ymanA;bod0ero3;on;aGeDhut2o9r5u3;lgar0r3;kina faso,ma,undi;azil,itish 3unei;virgin3; is3;lands;liv0nai5snia and herzegoviHtswaHuvet3; isl1;and;re;l3n8rmuG;ar3gium,ize;us;h4ngladesh,rbad3;os;am4ra3;in;as;fghaGlDmBn6r4ustr3zerbaij2;al0ia;genti3men0uba;na;dorra,g5t3;arct7igua and barbu3;da;o3uil3;la;er3;ica;b3ger0;an0;ia;ni3;st2;an\",FirstName:\"true¦aTblair,cQdOfrancoZgabMhinaLilya,jHkClBm6ni4quinn,re3s0;h0umit,yd;ay,e0iloh;a,lby;g9ne;co,ko0;!s;a1el0ina,org6;!okuhF;ds,naia,r1tt0xiB;i,y;ion,lo;ashawn,eif,uca;a3e1ir0rM;an;lsFn0rry;dall,yat5;i,sD;a0essIie,ude;i1m0;ie,mG;me;ta;rie0y;le;arcy,ev0;an,on;as1h0;arl8eyenne;ey,sidy;drien,kira,l4nd1ubr0vi;ey;i,r0;a,e0;a,y;ex2f1o0;is;ie;ei,is\",WeekDay:\"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",Month:\"true¦dec0february,july,nov0octo1sept0;em0;ber\",Date:\"true¦ago,on4som4t1week0yesterd5; end,ends;mr1o0;d2morrow;!w;ed0;ay\",Duration:\"true¦centurAd8h7m5q4se3w1y0;ear8r8;eek0k7;!end,s;ason,c5;tr,uarter;i0onth3;llisecond2nute2;our1r1;ay0ecade0;!s;ies,y\",FemaleName:\"true¦0:J7;1:JB;2:IJ;3:IK;4:J1;5:IO;6:JS;7:JO;8:HB;9:JK;A:H4;B:I2;C:IT;D:JH;E:IX;F:BA;G:I4;aGTbFLcDRdD0eBMfB4gADh9Ti9Gj8Dk7Cl5Wm48n3Lo3Hp33qu32r29s15t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof3;e3Sf3la,ra;h2iKlIna,ynH;ab,ep;da,ma;da,h2iHra;nab;aKeJi0FolB7uIvH;et8onDP;i0na;le0sen3;el,gm3Hn,rGLs8W;aoHme0nyi;m5XyAD;aMendDZhiDGiH;dele9lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;ck84kIl8oleAviH;anFenJ4;ky,toriBK;da,lA8rHs0;a,nHoniH9;a,iFR;leHnesH9;nILrH;i1y;g9rHs6xHA;su5te;aYeUhRiNoLrIuHy2;i,la;acJ3iHu0J;c3na,sH;hFta;nHr0F;iFya;aJffaEOnHs6;a,gtiH;ng;!nFSra;aIeHomasi0;a,l9Oo8Ares1;l3ndolwethu;g9Fo88rIssH;!a,ie;eHi,ri7;sa,za;bOlMmKnIrHs6tia0wa0;a60yn;iHya;a,ka,s6;arFe2iHm77ra;!ka;a,iH;a,t6;at6it6;a0Ecarlett,e0AhWiSkye,neza0oQri,tNuIyH;bIGlvi1;ha,mayIJniAsIzH;an3Net8ie,y;anHi7;!a,e,nH;aCe;aIeH;fan4l5Dphan6E;cI5r5;b3fiAAm0LnHphi1;d2ia,ja,ya;er2lJmon1nIobh8QtH;a,i;dy;lETv3;aMeIirHo0risFDy5;a,lDM;ba,e0i5lJrH;iHr6Jyl;!d8Ifa;ia,lDZ;hd,iMki2nJrIu0w0yH;la,ma,na;i,le9on,ron,yn;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye82vH;da,inj;e0ife;en1i0ma;anA9bLd5Oh1SiBkKlJmInd2rHs6vannaC;aCi0;ant6i2;lDOma,ome;ee0in8Tu2;in1ri0;a05eZhXiUoHuthDM;bScRghQl8LnPsJwIxH;anB3ie,y;an,e0;aIeHie,lD;ann7ll1marDGtA;!lHnn1;iHyn;e,nH;a,dF;da,i,na;ayy8G;hel67io;bDRerAyn;a,cIkHmas,nFta,ya;ki,o;h8Xki;ea,iannGMoH;da,n1P;an0bJemFgi0iInHta,y0;a8Bee;han86na;a,eH;cHkaC;a,ca;bi0chIe,i0mo0nHquETy0;di,ia;aERelHiB;!e,le;een4ia0;aPeOhMiLoJrHute6A;iHudenCV;scil3LyamvaB;lHrt3;i0ly;a,paluk;ilome0oebe,ylH;is,lis;ggy,nelope,r5t2;ige,m0VnKo5rvaDMtIulH;a,et8in1;ricHt4T;a,e,ia;do2i07;ctav3dIfD3is6ksa0lHphD3umC5yunbileg;a,ga,iv3;eHvAF;l3t8;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aCeEma;ll1mi;aNcLhariBQkKlaJna,sHta,vi;anHha;ur;!y;a,iDZki;hoGk9YolH;a,e4P;!mh;hir,lHna,risDEsreE;!a,iDDlBV;asuMdLh3i6Dl5nKomi7rgEVtH;aHhal4;lHs6;i1ya;cy,et8;e9iF0ya;nngu2X;a0Ackenz4e02iMoJrignayani,uriDJyH;a,rH;a,iOlNna,tG;bi0i2llBJnH;a,iH;ca,ka,qD9;a,cUdo4ZkaTlOmi,nMrItzi,yH;ar;aJiIlH;anET;am;!l,nB;dy,eHh,n4;nhGrva;aKdJe0iCUlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5DgNi,lKrH;edi7AiIjem,on,yH;em,l;em,sCG;an4iHliCF;nHsCJ;a,da;!an,han;b09cASd07e,g05ha,i04ja,l02n00rLsoum5YtKuIv84xBKyHz4;bell,ra,soBB;d7rH;a,eE;h8Gild1t4;a,cUgQiKjor4l7Un4s6tJwa,yH;!aHbe6Xja9lAE;m,nBL;a,ha,in1;!aJbCGeIja,lDna,sHt63;!a,ol,sa;!l1D;!h,mInH;!a,e,n1;!awit,i;arJeIie,oHr48ueri8;!t;!ry;et46i3B;el4Xi7Cy;dHon,ue5;akranAy;ak,en,iHlo3S;a,ka,nB;a,re,s4te;daHg4;!l3E;alDd4elHge,isDJon0;ei9in1yn;el,le;a0Ne0CiXoQuLyH;d3la,nH;!a,dIe2OnHsCT;!a,e2N;a,sCR;aD4cJel0Pis1lIna,pHz;e,iA;a,u,wa;iHy;a0Se,ja,l2NnB;is,l1UrItt1LuHvel4;el5is1;aKeIi7na,rH;aADi7;lHn1tA;ei;!in1;aTbb9HdSepa,lNnKsJvIzH;!a,be5Ret8z4;!ia;a,et8;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lH;iHy;aA8e;!aH;!nF;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx93y5;iHt4;c3t3;e2PlCO;la,nHra;a,ie,o2;a,or1;a,gh,laH;!ni;!h,nH;a,d2e,n5V;cOdon9DiNkes6mi9Gna,rMtJurIvHxmi,y5;ern1in3;a,e5Aie,yn;as6iIoH;nya,ya;fa,s6;a,isA9;a,la;ey,ie,y;a04eZhXiOlASoNrJyH;lHra;a,ee,ie;istHy6I;a,en,iIyH;!na;!e,n5F;nul,ri,urtnB8;aOerNlB7mJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stE;!na,ra;aHei2ongordzol;dij1w5;el7UiKjsi,lJnIrH;a,i,ri;d2na,za;ey,i,lBLs4y;ra,s6;biAcARdiat7MeBAiSlQmPnyakuma1DrNss6NtKviAyH;!e,lH;a,eH;e,i8T;!a6HeIhHi4TlDri0y;ar8Her8Hie,leErBAy;!lyn8Ori0;a,en,iHl5Xoli0yn;!ma,nFs95;a5il1;ei8Mi,lH;e,ie;a,tl6O;a0AeZiWoOuH;anMdLlHst88;es,iH;a8NeHs8X;!n9tH;!a,te;e5Mi3My;a,iA;!anNcelDdMelGhan7VleLni,sIva0yH;a,ce;eHie;fHlDph7Y;a,in1;en,n1;i7y;!a,e,n45;lHng;!i1DlH;!i1C;anNle0nKrJsH;i8JsH;!e,i8I;i,ri;!a,elGif2CnH;a,et8iHy;!e,f2A;a,eJiInH;a,eIiH;e,n1;!t8;cMda,mi,nIque4YsminFvie2y9zH;min7;a7eIiH;ce,e,n1s;!lHs82t0F;e,le;inIk6HlDquelH;in1yn;da,ta;da,lRmPnOo0rNsIvaHwo0zaro;!a0lu,na;aJiIlaHob89;!n9R;do2;belHdo2;!a,e,l3B;a7Ben1i0ma;di2es,gr72ji;a9elBogH;en1;a,e9iHo0se;a0na;aSeOiJoHus7Kyacin2C;da,ll4rten24snH;a,i9U;lImaH;ri;aIdHlaI;a,egard;ry;ath1BiJlInrietArmi9sH;sa,t1A;en2Uga,mi;di;bi2Fil8MlNnMrJsItHwa,yl8M;i5Tt4;n60ti;iHmo51ri53;etH;!te;aCnaC;a,ey,l4;a02eWiRlPoNrKunJwH;enHyne1R;!dolD;ay,el;acieIetHiselB;a,chE;!la;ld1CogooH;sh;adys,enHor3yn2K;a,da,na;aKgi,lIna,ov8EselHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald5Si,m3Etrud7;et8i4X;a,eHna;s29vieve;ma;bIle,mHrnet,yG;al5Si5;iIrielH;a,l1;!ja;aTeQiPlorOoz3rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0P;n1s66;!ca;a,enc3;en,o0;lIn0rnH;anB;ec3ic3;jr,nArKtHy7;emIiHma,oumaA;ha,ma,n;eh;ah,iBrah,za0;cr4Rd0Re0Qi0Pk0Ol07mXn54rUsOtNuMvHwa;aKelIiH;!e,ta;inFyn;!a;!ngel4V;geni1ni47;h5Yien9ta;mLperanKtH;eIhHrel5;er;l31r7;za;a,eralB;iHma,ne4Lyn;cHka,n;a,ka;aPeNiKmH;aHe21ie,y;!li9nuH;elG;lHn1;e7iHy;a,e,ja;lHrald;da,y;!nue5;aWeUiNlMma,no2oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c3da,e,f,nMsJzaH;!betHveA;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a,i;!in1na;ate1Rta;leEs6;vi;eIiHna,wi0;e,th;l,n;aYeMh3iLjeneKoH;lor5Vminiq4Ln3FrHtt4;a,eEis,la,othHthy;ea,y;ba;an09naCon9ya;anQbPde,eOiMlJmetr3nHsir5M;a,iH;ce,se;a,iIla,orHphi9;es,is;a,l6F;dHrdH;re;!d5Ena;!b2ForaCraC;a,d2nH;!a,e;hl3i0l0GmNnLphn1rIvi1WyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,et8iH;!ca,el1Aka,z;arHia;is;a0Re0Nh04i02lUoJristIynH;di,th3;al,i0;lPnMrIurH;tn1D;aJd2OiHn2Ori9;!nH;a,e,n1;!l4;cepci5Cn4sH;tanHuelo;ce,za;eHleE;en,t8;aJeoIotH;il54;!pat2;ir7rJudH;et8iH;a,ne;a,e,iH;ce,sZ;a2er2ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Sen,iHy;an1e,n1;deJlseIrH;!i7yl;a,y;li9;nMrH;isKlImH;ai9;a,eHot8;n1t8;!sa;d2elGtH;al,elG;cIlH;es8i47;el3ilH;e,ia,y;itlYlXmilWndVrMsKtHy5;aIeIhHri0;er1IleErDy;ri0;a38sH;a37ie;a,iOlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eIie,otHy;a,ta;ne,y;na,s1X;a0Ii0I;a,e,l1;isAl4;in,yn;a0Ke02iZlXoUrH;andi7eRiJoIyH;an0nn;nwDoke;an3HdgMgiLtH;n31tH;!aInH;ey,i,y;ny;d,t8;etH;!t7;an0e,nH;da,na;bbi7glarIlo07nH;iAn4;ka;ancHythe;a,he;an1Clja0nHsm3M;iAtH;ou;aWcVlinUniArPssOtJulaCvH;!erlH;ey,y;hJsy,tH;e,iHy7;e,na;!anH;ie,y;!ie;nItHyl;ha,ie;adIiH;ce;et8i9;ay,da;ca,ky;!triH;ce,z;rbJyaH;rmH;aa;a2o2ra;a2Ub2Od25g21i1Sj5l18m0Zn0Boi,r06sWtVuPvOwa,yIzH;ra,u0;aKes6gJlIn,seH;!l;in;un;!nH;a,na;a,i2K;drLguJrIsteH;ja;el3;stH;in1;a,ey,i,y;aahua,he0;hIi2Gja,miAs2DtrH;id;aMlIraqHt21;at;eIi7yH;!n;e,iHy;gh;!nH;ti;iJleIo6piA;ta;en,n1t8;aHelG;!n1J;a01dje5eZgViTjRnKohito,toHya;inet8nH;el5ia;te;!aKeIiHmJ;e,ka;!mHtt7;ar4;!belIliHmU;sa;!l1;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tH;a,te;!bImHstasiMya;ar3;el;aLberKeliJiHy;e,l3naH;!ta;a,ja;!ly;hGiIl3nB;da;a,ra;le;aWba,ePiMlKthJyH;a,c3sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c3is6jaKksaKna,sJxH;aHia;!nd2;ia,saH;nd2;ra;ia;i0nIyH;ah,na;a,is,naCoud;la;c6da,leEmNnLsH;haClH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lDsH;on;yn;!lH;i9yn;ne;aKbIiHrL;!e,gaK;ey,i7y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",Honorific:\"true¦director1field marsh2lieutenant1rear0sergeant major,vice0; admir1; gener0;al\",\"Adj|Gerund\":\"true¦0:3F;1:3H;2:31;3:2X;4:35;5:33;6:3C;7:2Z;8:36;9:29;a33b2Tc2Bd1Te1If19g12h0Zi0Rl0Nm0Gnu0Fo0Ap04rYsKtEuBvAw1Ayiel3;ar6e08;nBpA;l1Rs0B;fol3n1Zsett2;aEeDhrBi4ouc7rAwis0;e0Bif2oub2us0yi1;ea1SiA;l2vi1;l2mp0rr1J;nt1Vxi1;aMcreec7enten2NhLkyrocke0lo0Vmi2oJpHtDuBweA;e0Ul2;pp2ArA;gi1pri5roun3;aBea8iAri2Hun9;mula0r4;gge4rA;t2vi1;ark2eAraw2;e3llb2F;aAot7;ki1ri1;i9oc29;dYtisf6;aEeBive0oAus7;a4l2;assu4defi9fres7ig9juve07mai9s0vAwar3;ea2italiAol1G;si1zi1;gi1ll6mb2vi1;a6eDier23lun1VrAun2C;eBoA;mi5vo1Z;ce3s5vai2;n3rpleA;xi1;ffCpWutBverAwi1;arc7lap04p0Pri3whel8;goi1l6st1J;en3sA;et0;m2Jrtu4;aEeDiCoBuAyst0L;mb2;t1Jvi1;s5tiga0;an1Rl0n3smeri26;dAtu4;de9;aCeaBiAo0U;fesa0Tvi1;di1ni1;c1Fg19s0;llumiGmFnArri0R;cDfurHsCtBviA;go23ti1;e1Oimi21oxica0rig0V;pi4ul0;orpo20r0K;po5;na0;eaBorr02umilA;ia0;li1rtwar8;lFrA;atiDipCoBuelA;i1li1;undbrea10wi1;pi1;f6ng;a4ea8;a3etc7it0lEoCrBulfA;il2;ee1FighXust1L;rAun3;ebo3thco8;aCoA;a0wA;e4i1;mi1tte4;lectrJmHnExA;aCci0hBis0pA;an3lo3;aOila1B;c0spe1A;ab2coura0CdBergi13ga0Clive9ric7s02tA;hral2i0J;ea4u4;barras5er09pA;owe4;if6;aQeIiBrA;if0;sAzz6;aEgDhearCsen0tA;rAur11;ac0es5;te9;us0;ppoin0r8;biliGcDfi9gra3ligh0mBpres5sAvasG;erE;an3ea9orA;ali0L;a6eiBli9rA;ea5;vi1;ta0;maPri1s7un0zz2;aPhMlo5oAripp2ut0;mGnArrespon3;cer9fDspi4tA;inBrA;as0ibu0ol2;ui1;lic0u5;ni1;fDmCpA;eAromi5;l2ti1;an3;or0;aAil2;llenAnAr8;gi1;l8ptAri1;iva0;aff2eGin3lFoDrBuA;d3st2;eathtaAui5;ki1;gg2i2o8ri1unA;ci1;in3;co8wiA;lAtc7;de4;bsorVcOgonMlJmHnno6ppea2rFsA;pi4su4toA;nBun3;di1;is7;hi1;res0;li1;aFu5;si1;ar8lu4;ri1;mi1;iAzi1;zi1;cAhi1;eleDomA;moBpan6;yi1;da0;ra0;ti1;bi1;ng\",Comparable:\"true¦0:3C;1:3Q;2:3F;a3Tb3Cc33d2Te2Mf2Ag1Wh1Li1Fj1Ek1Bl13m0Xn0So0Rp0Iqu0Gr07sHtCug0vAw4y3za0Q;el10ouN;ary,e6hi5i3ry;ck0Cde,l3n1ry,se;d,y;ny,te;a3i3R;k,ry;a3erda2ulgar;gue,in,st;a6en2Xhi5i4ouZr3;anqu2Cen1ue;dy,g36me0ny;ck,rs28;ll,me,rt,wd3I;aRcaPeOhMiLkin0BlImGoEpDt6u4w3;eet,ift;b3dd0Wperfi21rre28;sta26t21;a8e7iff,r4u3;pUr1;a4ict,o3;ng;ig2Vn0N;a1ep,rn;le,rk,te0;e1Si2Vright0;ci1Yft,l3on,re;emn,id;a3el0;ll,rt;e4i3y;g2Mm0Z;ek,nd2T;ck24l0mp1L;a3iRrill,y;dy,l01rp;ve0Jxy;n1Jr3;ce,y;d,fe,int0l1Hv0V;a8e6i5o3ude;mantic,o19sy,u3;gh;pe,t1P;a3d,mo0A;dy,l;gg4iFndom,p3re,w;id;ed;ai2i3;ck,et;hoAi1Fl9o8r5u3;ny,r3;e,p11;egna2ic4o3;fouSud;ey,k0;liXor;ain,easa2;ny;dd,i0ld,ranL;aive,e5i4o3u14;b0Sisy,rm0Ysy;bb0ce,mb0R;a3r1w;r,t;ad,e5ild,o4u3;nda12te;ist,o1;a4ek,l3;low;s0ty;a8e7i6o3ucky;f0Jn4o15u3ve0w10y0N;d,sy;e0g;ke0l,mp,tt0Eve0;e1Qwd;me,r3te;ge;e4i3;nd;en;ol0ui19;cy,ll,n3;secu6t3;e3ima4;llege2rmedia3;te;re;aAe7i6o5u3;ge,m3ng1C;bYid;me0t;gh,l0;a3fXsita2;dy,rWv3;en0y;nd13ppy,r3;d3sh;!y;aFenEhCiBlAoofy,r3;a8e6i5o3ue0Z;o3ss;vy;m,s0;at,e3y;dy,n;nd,y;ad,ib,ooD;a2d1;a3o3;st0;tDuiS;u1y;aCeebBi9l8o6r5u3;ll,n3r0N;!ny;aCesh,iend0;a3nd,rmD;my;at,ir7;erce,nan3;ci9;le;r,ul3;ty;a6erie,sse4v3xtre0B;il;nti3;al;r4s3;tern,y;ly,th0;appZe9i5ru4u3;mb;nk;r5vi4z3;zy;ne;e,ty;a3ep,n9;d3f,r;!ly;agey,h8l7o5r4u3;dd0r0te;isp,uel;ar3ld,mmon,st0ward0zy;se;evKou1;e3il0;ap,e3;sy;aHiFlCoAr5u3;ff,r0sy;ly;a6i3oad;g4llia2;nt;ht;sh,ve;ld,un3;cy;a4o3ue;nd,o1;ck,nd;g,tt3;er;d,ld,w1;dy;bsu6ng5we3;so3;me;ry;rd\",Adverb:\"true¦a08b05d00eYfSheQinPjustOkinda,likewiZmMnJoEpCquite,r9s5t2u0very,well;ltima01p0; to,wards5;h1iny bit,o0wiO;o,t6;en,us;eldom,o0uch;!me1rt0; of;how,times,w0C;a1e0;alS;ndomRth05;ar excellenEer0oint blank; Lhaps;f3n0utright;ce0ly;! 0;ag05moX; courGten;ewJo0; longWt 0;onHwithstand9;aybe,eanwhiNore0;!ovT;! aboX;deed,steY;lla,n0;ce;or3u0;ck1l9rther0;!moK;ing; 0evK;exampCgood,suH;n mas0vI;se;e0irect2; 2fini0;te0;ly;juAtrop;ackward,y 0;far,no0; means,w; GbroFd nauseam,gEl7ny5part,s4t 2w0;ay,hi0;le;be7l0mo7wor7;arge,ea6; soon,i4;mo0way;re;l 3mo2ongsi1ready,so,togeth0ways;er;de;st;b1t0;hat;ut;ain;ad;lot,posteriori\",Conjunction:\"true¦aXbTcReNhowMiEjust00noBo9p8supposing,t5wh0yet;e1il0o3;e,st;n1re0thN; if,by,vM;evL;h0il,o;erefOo0;!uU;lus,rovided th9;r0therwiM;! not; mattEr,w0;! 0;since,th4w7;f4n0; 0asmuch;as mIcaForder t0;h0o;at;! 0;only,t0w0;hen;!ev3;ith2ven0;! 0;if,tB;er;o0uz;s,z;e0ut,y the time;cau1f0;ore;se;lt3nd,s 0;far1if,m0soon1t2;uch0; as;hou0;gh\",Currency:\"true¦$,aud,bQcOdJeurIfHgbp,hkd,iGjpy,kElDp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotyQł;en,uanP;af,of;h0t5;e0il5;k0q0;elK;oubleJp,upeeJ;e2ound st0;er0;lingG;n0soF;ceEnies;empi7i7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!os;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;e0ny;nt1;aht,itcoin0;!s\",Determiner:\"true¦aBboth,d9e6few,le5mu8neiDplenty,s4th2various,wh0;at0ich0;evC;a0e4is,ose;!t;everal,ome;!ast,s;a1l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\",\"Adj|Present\":\"true¦a07b04cVdQeNfJhollIidRlEmCnarrIoBp9qua8r7s3t2uttFw0;aKet,ro0;ng,u08;endChin;e2hort,l1mooth,our,pa9tray,u0;re,speU;i2ow;cu6da02leSpaN;eplica01i02;ck;aHerfePr0;eseUime,omV;bscu1pen,wn;atu0e3odeH;re;a2e1ive,ow0;er;an;st,y;ow;a2i1oul,r0;ee,inge;rm;iIke,ncy,st;l1mpty,x0;emHpress;abo4ic7;amp,e2i1oub0ry,ull;le;ffu9re6;fu8libe0;raE;alm,l5o0;mpleCn3ol,rr1unterfe0;it;e0u7;ct;juga8sum7;ea1o0;se;n,r;ankru1lu0;nt;pt;li2pproxi0rticula1;ma0;te;ght\",\"Person|Adj\":\"true¦b3du2earnest,frank,mi2r0san1woo1;an0ich,u1;dy;sty;ella,rown\",Modal:\"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ight,ust;an,o0;uld\",Verb:\"true¦born,cannot,gonna,has,keep tabs,msg\",\"Person|Verb\":\"true¦b8ch7dr6foster,gra5ja9lan4ma2ni9ollie,p1rob,s0wade;kip,pike,t5ue;at,eg,ier2;ck,r0;k,shal;ce;ce,nt;ew;ase,u1;iff,l1ob,u0;ck;aze,ossom\",\"Person|Date\":\"true¦a2j0sep;an0une;!uary;p0ugust,v0;ril\"};const mo=36,po=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",fo=po.split(\"\").reduce((function(e,t,n){return e[t]=n,e}),{});var bo=function(e){if(void 0!==fo[e])return fo[e];let t=0,n=1,r=mo,o=1;for(;n<e.length;t+=r,n++,r*=mo);for(let n=e.length-1;n>=0;n--,o*=mo){let r=e.charCodeAt(n)-48;r>10&&(r-=7),t+=r*o}return t};const vo=function(e,t,n){const r=bo(t);return r<e.symCount?e.syms[r]:n+r+1-e.symCount},yo=function(e){const t={nodes:e.split(\";\"),syms:[],symCount:0};return e.match(\":\")&&function(e){const t=new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");for(let n=0;n<e.nodes.length;n++){const r=t.exec(e.nodes[n]);if(!r){e.symCount=n;break}e.syms[bo(r[1])]=bo(r[2])}e.nodes=e.nodes.slice(e.symCount,e.nodes.length)}(t),function(e){const t=[],n=(r,o)=>{let a=e.nodes[r];\"!\"===a[0]&&(t.push(o),a=a.slice(1));const i=a.split(/([A-Z0-9,]+)/g);for(let a=0;a<i.length;a+=2){const s=i[a],l=i[a+1];if(!s)continue;const u=o+s;if(\",\"===l||void 0===l){t.push(u);continue}const c=vo(e,l,r);n(c,u)}};return n(0,\"\"),t}(t)},wo=[\"Possessive\",\"Pronoun\"];const ko={a:[[/(antenn|formul|nebul|vertebr|vit)a$/i,\"$1ae\"],[/ia$/i,\"ia\"]],e:[[/(kn|l|w)ife$/i,\"$1ives\"],[/(hive)$/i,\"$1s\"],[/([m|l])ouse$/i,\"$1ice\"],[/([m|l])ice$/i,\"$1ice\"]],f:[[/^(dwar|handkerchie|hoo|scar|whar)f$/i,\"$1ves\"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i,\"$1ves\"]],i:[[/(octop|vir)i$/i,\"$1i\"]],m:[[/([ti])um$/i,\"$1a\"]],n:[[/^(oxen)$/i,\"$1\"]],o:[[/(al|ad|at|er|et|ed)o$/i,\"$1oes\"]],s:[[/(ax|test)is$/i,\"$1es\"],[/(alias|status)$/i,\"$1es\"],[/sis$/i,\"ses\"],[/(bu)s$/i,\"$1ses\"],[/(sis)$/i,\"ses\"],[/^(?!talis|.*hu)(.*)man$/i,\"$1men\"],[/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,\"$1i\"]],x:[[/(matr|vert|ind|cort)(ix|ex)$/i,\"$1ices\"],[/^(ox)$/i,\"$1en\"]],y:[[/([^aeiouy]|qu)y$/i,\"$1ies\"]],z:[[/(quiz)$/i,\"$1zes\"]]},Po=/([xsz]|ch|sh)$/,Ao=function(e=\"\",t){const{irregularPlurals:n,uncountable:r}=t.two;if(r.hasOwnProperty(e))return e;if(n.hasOwnProperty(e))return n[e];const o=function(e){const t=e[e.length-1];if(!0===ko.hasOwnProperty(t))for(let n=0;n<ko[t].length;n+=1){const r=ko[t][n][0];if(!0===r.test(e))return e.replace(r,ko[t][n][1])}return null}(e);return null!==o?o:Po.test(e)?e+\"es\":e+\"s\"},Co=/\\|/,No={\"20th century fox\":\"Organization\",\"7 eleven\":\"Organization\",\"motel 6\":\"Organization\",g8:\"Organization\",vh1:\"Organization\",\"76ers\":\"SportsTeam\",\"49ers\":\"SportsTeam\",q1:\"Date\",q2:\"Date\",q3:\"Date\",q4:\"Date\",km2:\"Unit\",m2:\"Unit\",dm2:\"Unit\",cm2:\"Unit\",mm2:\"Unit\",mile2:\"Unit\",in2:\"Unit\",yd2:\"Unit\",ft2:\"Unit\",m3:\"Unit\",dm3:\"Unit\",cm3:\"Unit\",in3:\"Unit\",ft3:\"Unit\",yd3:\"Unit\",\"at&t\":\"Organization\",\"black & decker\":\"Organization\",\"h & m\":\"Organization\",\"johnson & johnson\":\"Organization\",\"procter & gamble\":\"Organization\",\"ben & jerry's\":\"Organization\",\"&\":\"Conjunction\",i:[\"Pronoun\",\"Singular\"],he:[\"Pronoun\",\"Singular\"],she:[\"Pronoun\",\"Singular\"],it:[\"Pronoun\",\"Singular\"],they:[\"Pronoun\",\"Plural\"],we:[\"Pronoun\",\"Plural\"],was:[\"Copula\",\"PastTense\"],is:[\"Copula\",\"PresentTense\"],are:[\"Copula\",\"PresentTense\"],am:[\"Copula\",\"PresentTense\"],were:[\"Copula\",\"PastTense\"],her:wo,his:wo,hers:wo,their:wo,theirs:wo,themselves:wo,your:wo,our:wo,ours:wo,my:wo,its:wo,vs:[\"Conjunction\",\"Abbreviation\"],if:[\"Condition\",\"Preposition\"],closer:\"Comparative\",closest:\"Superlative\",much:\"Adverb\",may:\"Modal\",babysat:\"PastTense\",blew:\"PastTense\",drank:\"PastTense\",drove:\"PastTense\",forgave:\"PastTense\",skiied:\"PastTense\",spilt:\"PastTense\",stung:\"PastTense\",swam:\"PastTense\",swung:\"PastTense\",guaranteed:\"PastTense\",shrunk:\"PastTense\",nears:\"PresentTense\",nearing:\"Gerund\",neared:\"PastTense\",no:[\"Negative\",\"Expression\"]},jo={},xo={two:{irregularPlurals:ho,uncountable:{}}};Object.keys(go).forEach((e=>{const t=function(e){if(!e)return{};const t=e.split(\"|\").reduce(((e,t)=>{const n=t.split(\"¦\");return e[n[0]]=n[1],e}),{}),n={};return Object.keys(t).forEach((function(e){const r=yo(t[e]);\"true\"===e&&(e=!0);for(let t=0;t<r.length;t++){const o=r[t];!0===n.hasOwnProperty(o)?!1===Array.isArray(n[o])?n[o]=[n[o],e]:n[o].push(e):n[o]=e}})),n}(go[e]);Co.test(e)?Object.keys(t).forEach((t=>{if(jo[t]=e,\"Noun|Verb\"===e){const e=Ao(t,xo);jo[e]=\"Plural|Verb\"}})):Object.keys(t).forEach((t=>{No[t]=e}))})),[\":(\",\":)\",\":P\",\":p\",\":O\",\";(\",\";)\",\";P\",\";p\",\";O\",\":3\",\":|\",\":/\",\":\\\\\",\":$\",\":*\",\":@\",\":-(\",\":-)\",\":-P\",\":-p\",\":-O\",\":-3\",\":-|\",\":-/\",\":-\\\\\",\":-$\",\":-*\",\":-@\",\":^(\",\":^)\",\":^P\",\":^p\",\":^O\",\":^3\",\":^|\",\":^/\",\":^\\\\\",\":^$\",\":^*\",\":^@\",\"):\",\"(:\",\"$:\",\"*:\",\")-:\",\"(-:\",\"$-:\",\"*-:\",\")^:\",\"(^:\",\"$^:\",\"*^:\",\"<3\",\"</3\",\"<\\\\3\",\"=(\"].forEach((e=>No[e]=\"Emoticon\")),delete No[\"\"],delete No.null,delete No[\" \"];const Io=\"Singular\";var To={beforeTags:{Determiner:Io,Possessive:Io,Acronym:Io,Noun:Io,Adjective:Io,PresentTense:Io,Gerund:Io,PastTense:Io,Infinitive:Io,Date:Io,Ordinal:Io,Demonym:Io},afterTags:{Value:Io,Modal:Io,Copula:Io,PresentTense:Io,PastTense:Io,Demonym:Io,Actor:Io},beforeWords:{the:Io,with:Io,without:Io,of:Io,for:Io,any:Io,all:Io,on:Io,cut:Io,cuts:Io,increase:Io,decrease:Io,raise:Io,drop:Io,save:Io,saved:Io,saves:Io,make:Io,makes:Io,made:Io,minus:Io,plus:Io,than:Io,another:Io,versus:Io,neither:Io,about:Io,favorite:Io,best:Io,daily:Io,weekly:Io,linear:Io,binary:Io,mobile:Io,lexical:Io,technical:Io,computer:Io,scientific:Io,security:Io,government:Io,popular:Io,formal:Io,no:Io,more:Io,one:Io,let:Io,her:Io,his:Io,their:Io,our:Io,us:Io,sheer:Io,monthly:Io,yearly:Io,current:Io,previous:Io,upcoming:Io,last:Io,next:Io,main:Io,initial:Io,final:Io,beginning:Io,end:Io,top:Io,bottom:Io,future:Io,past:Io,major:Io,minor:Io,side:Io,central:Io,peripheral:Io,public:Io,private:Io},afterWords:{of:Io,system:Io,aid:Io,method:Io,utility:Io,tool:Io,reform:Io,therapy:Io,philosophy:Io,room:Io,authority:Io,says:Io,said:Io,wants:Io,wanted:Io,is:Io,did:Io,do:Io,can:Io,wise:Io}};const Do=\"Infinitive\";var Ho={beforeTags:{Modal:Do,Adverb:Do,Negative:Do,Plural:Do},afterTags:{Determiner:Do,Adverb:Do,Possessive:Do,Reflexive:Do,Preposition:Do,Cardinal:Do,Comparative:Do,Superlative:Do},beforeWords:{i:Do,we:Do,you:Do,they:Do,to:Do,please:Do,will:Do,have:Do,had:Do,would:Do,could:Do,should:Do,do:Do,did:Do,does:Do,can:Do,must:Do,us:Do,me:Do,let:Do,even:Do,when:Do,help:Do,he:Do,she:Do,it:Do,being:Do,bi:Do,co:Do,contra:Do,de:Do,inter:Do,intra:Do,mis:Do,pre:Do,out:Do,counter:Do,nobody:Do,somebody:Do,anybody:Do,everybody:Do},afterWords:{the:Do,me:Do,you:Do,him:Do,us:Do,her:Do,his:Do,them:Do,they:Do,it:Do,himself:Do,herself:Do,itself:Do,myself:Do,ourselves:Do,themselves:Do,something:Do,anything:Do,a:Do,an:Do,up:Do,down:Do,by:Do,out:Do,off:Do,under:Do,what:Do,all:Do,to:Do,because:Do,although:Do,how:Do,otherwise:Do,together:Do,though:Do,into:Do,yet:Do,more:Do,here:Do,there:Do,away:Do}};const Eo={beforeTags:Object.assign({},Ho.beforeTags,To.beforeTags,{}),afterTags:Object.assign({},Ho.afterTags,To.afterTags,{}),beforeWords:Object.assign({},Ho.beforeWords,To.beforeWords,{}),afterWords:Object.assign({},Ho.afterWords,To.afterWords,{})},Go=\"Adjective\";var Oo={beforeTags:{Determiner:Go,Possessive:Go,Hyphenated:Go},afterTags:{Adjective:Go},beforeWords:{seem:Go,seemed:Go,seems:Go,feel:Go,feels:Go,felt:Go,stay:Go,appear:Go,appears:Go,appeared:Go,also:Go,over:Go,under:Go,too:Go,it:Go,but:Go,still:Go,really:Go,quite:Go,well:Go,very:Go,truly:Go,how:Go,deeply:Go,hella:Go,profoundly:Go,extremely:Go,so:Go,badly:Go,mostly:Go,totally:Go,awfully:Go,rather:Go,nothing:Go,something:Go,anything:Go,not:Go,me:Go,is:Go,face:Go,faces:Go,faced:Go,look:Go,looks:Go,looked:Go,reveal:Go,reveals:Go,revealed:Go,sound:Go,sounded:Go,sounds:Go,remains:Go,remained:Go,prove:Go,proves:Go,proved:Go,becomes:Go,stays:Go,tastes:Go,taste:Go,smells:Go,smell:Go,gets:Go,grows:Go,as:Go,rings:Go,radiates:Go,conveys:Go,convey:Go,conveyed:Go,of:Go},afterWords:{too:Go,also:Go,or:Go,enough:Go,as:Go}};const Fo=\"Gerund\";var Vo={beforeTags:{Adverb:Fo,Preposition:Fo,Conjunction:Fo},afterTags:{Adverb:Fo,Possessive:Fo,Person:Fo,Pronoun:Fo,Determiner:Fo,Copula:Fo,Preposition:Fo,Conjunction:Fo,Comparative:Fo},beforeWords:{been:Fo,keep:Fo,continue:Fo,stop:Fo,am:Fo,be:Fo,me:Fo,began:Fo,start:Fo,starts:Fo,started:Fo,stops:Fo,stopped:Fo,help:Fo,helps:Fo,avoid:Fo,avoids:Fo,love:Fo,loves:Fo,loved:Fo,hate:Fo,hates:Fo,hated:Fo},afterWords:{you:Fo,me:Fo,her:Fo,him:Fo,his:Fo,them:Fo,their:Fo,it:Fo,this:Fo,there:Fo,on:Fo,about:Fo,for:Fo,up:Fo,down:Fo}};const zo=\"Gerund\",Bo=\"Adjective\",So={beforeTags:Object.assign({},Oo.beforeTags,Vo.beforeTags,{Imperative:zo,Infinitive:Bo,Plural:zo}),afterTags:Object.assign({},Oo.afterTags,Vo.afterTags,{Noun:Bo}),beforeWords:Object.assign({},Oo.beforeWords,Vo.beforeWords,{is:Bo,are:zo,was:Bo,of:Bo,suggest:zo,suggests:zo,suggested:zo,recommend:zo,recommends:zo,recommended:zo,imagine:zo,imagines:zo,imagined:zo,consider:zo,considered:zo,considering:zo,resist:zo,resists:zo,resisted:zo,avoid:zo,avoided:zo,avoiding:zo,except:Bo,accept:Bo,assess:zo,explore:zo,fear:zo,fears:zo,appreciate:zo,question:zo,help:zo,embrace:zo,with:Bo}),afterWords:Object.assign({},Oo.afterWords,Vo.afterWords,{to:zo,not:zo,the:zo})},$o={beforeTags:{Determiner:void 0,Cardinal:\"Noun\",PhrasalVerb:\"Adjective\"},afterTags:{}},Mo={beforeTags:Object.assign({},Oo.beforeTags,To.beforeTags,$o.beforeTags),afterTags:Object.assign({},Oo.afterTags,To.afterTags,$o.afterTags),beforeWords:Object.assign({},Oo.beforeWords,To.beforeWords,{are:\"Adjective\",is:\"Adjective\",was:\"Adjective\",be:\"Adjective\",off:\"Adjective\",out:\"Adjective\"}),afterWords:Object.assign({},Oo.afterWords,To.afterWords)},Lo=\"PastTense\",Ko=\"Adjective\",Jo={beforeTags:{Adverb:Lo,Pronoun:Lo,ProperNoun:Lo,Auxiliary:Lo,Noun:Lo},afterTags:{Possessive:Lo,Pronoun:Lo,Determiner:Lo,Adverb:Lo,Comparative:Lo,Date:Lo,Gerund:Lo},beforeWords:{be:Lo,who:Lo,get:Ko,had:Lo,has:Lo,have:Lo,been:Lo,it:Lo,as:Lo,for:Ko,more:Ko,always:Ko},afterWords:{by:Lo,back:Lo,out:Lo,in:Lo,up:Lo,down:Lo,before:Lo,after:Lo,for:Lo,the:Lo,with:Lo,as:Lo,on:Lo,at:Lo,between:Lo,to:Lo,into:Lo,us:Lo,them:Lo,his:Lo,her:Lo,their:Lo,our:Lo,me:Lo,about:Ko}};var Wo={beforeTags:Object.assign({},Oo.beforeTags,Jo.beforeTags),afterTags:Object.assign({},Oo.afterTags,Jo.afterTags),beforeWords:Object.assign({},Oo.beforeWords,Jo.beforeWords),afterWords:Object.assign({},Oo.afterWords,Jo.afterWords)};const qo={afterTags:{Noun:\"Adjective\",Conjunction:void 0}},Uo={beforeTags:Object.assign({},Oo.beforeTags,Ho.beforeTags,{Adverb:void 0,Negative:void 0}),afterTags:Object.assign({},Oo.afterTags,Ho.afterTags,qo.afterTags),beforeWords:Object.assign({},Oo.beforeWords,Ho.beforeWords,{have:void 0,had:void 0,not:void 0,went:\"Adjective\",goes:\"Adjective\",got:\"Adjective\",be:\"Adjective\"}),afterWords:Object.assign({},Oo.afterWords,Ho.afterWords,{to:void 0,as:\"Adjective\"})},Ro={Copula:\"Gerund\",PastTense:\"Gerund\",PresentTense:\"Gerund\",Infinitive:\"Gerund\"},Qo={Value:\"Gerund\"},Zo={are:\"Gerund\",were:\"Gerund\",be:\"Gerund\",no:\"Gerund\",without:\"Gerund\",you:\"Gerund\",we:\"Gerund\",they:\"Gerund\",he:\"Gerund\",she:\"Gerund\",us:\"Gerund\",them:\"Gerund\"},_o={the:\"Gerund\",this:\"Gerund\",that:\"Gerund\",me:\"Gerund\",us:\"Gerund\",them:\"Gerund\"},Xo={beforeTags:Object.assign({},Vo.beforeTags,To.beforeTags,Ro),afterTags:Object.assign({},Vo.afterTags,To.afterTags,Qo),beforeWords:Object.assign({},Vo.beforeWords,To.beforeWords,Zo),afterWords:Object.assign({},Vo.afterWords,To.afterWords,_o)},Yo=\"Singular\",ea=\"Infinitive\",ta={beforeTags:Object.assign({},Ho.beforeTags,To.beforeTags,{Adjective:Yo,Particle:Yo}),afterTags:Object.assign({},Ho.afterTags,To.afterTags,{ProperNoun:ea,Gerund:ea,Adjective:ea,Copula:Yo}),beforeWords:Object.assign({},Ho.beforeWords,To.beforeWords,{is:Yo,was:Yo,of:Yo,have:null}),afterWords:Object.assign({},Ho.afterWords,To.afterWords,{instead:ea,about:ea,his:ea,her:ea,to:null,by:null,in:null})},na=\"Person\";var ra={beforeTags:{Honorific:na,Person:na},afterTags:{Person:na,ProperNoun:na,Verb:na},beforeWords:{hi:na,hey:na,yo:na,dear:na,hello:na},afterWords:{said:na,says:na,told:na,tells:na,feels:na,felt:na,seems:na,thinks:na,thought:na,spends:na,spendt:na,plays:na,played:na,sing:na,sang:na,learn:na,learned:na,wants:na,wanted:na}};const oa=\"Month\",aa={beforeTags:{Date:oa,Value:oa},afterTags:{Date:oa,Value:oa},beforeWords:{by:oa,in:oa,on:oa,during:oa,after:oa,before:oa,between:oa,until:oa,til:oa,sometime:oa,of:oa,this:oa,next:oa,last:oa,previous:oa,following:oa,with:\"Person\"},afterWords:{sometime:oa,in:oa,of:oa,until:oa,the:oa}};var ia={beforeTags:Object.assign({},ra.beforeTags,aa.beforeTags),afterTags:Object.assign({},ra.afterTags,aa.afterTags),beforeWords:Object.assign({},ra.beforeWords,aa.beforeWords),afterWords:Object.assign({},ra.afterWords,aa.afterWords)};const sa=\"Place\",la={beforeTags:{Place:sa},afterTags:{Place:sa,Abbreviation:sa},beforeWords:{in:sa,by:sa,near:sa,from:sa,to:sa},afterWords:{in:sa,by:sa,near:sa,from:sa,to:sa,government:sa,council:sa,region:sa,city:sa}},ua=\"Unit\",ca={\"Actor|Verb\":Eo,\"Adj|Gerund\":So,\"Adj|Noun\":Mo,\"Adj|Past\":Wo,\"Adj|Present\":Uo,\"Noun|Verb\":ta,\"Noun|Gerund\":Xo,\"Person|Noun\":{beforeTags:Object.assign({},To.beforeTags,ra.beforeTags),afterTags:Object.assign({},To.afterTags,ra.afterTags),beforeWords:Object.assign({},To.beforeWords,ra.beforeWords,{i:\"Infinitive\",we:\"Infinitive\"}),afterWords:Object.assign({},To.afterWords,ra.afterWords)},\"Person|Date\":ia,\"Person|Verb\":{beforeTags:Object.assign({},To.beforeTags,ra.beforeTags,Ho.beforeTags),afterTags:Object.assign({},To.afterTags,ra.afterTags,Ho.afterTags),beforeWords:Object.assign({},To.beforeWords,ra.beforeWords,Ho.beforeWords),afterWords:Object.assign({},To.afterWords,ra.afterWords,Ho.afterWords)},\"Person|Place\":{beforeTags:Object.assign({},la.beforeTags,ra.beforeTags),afterTags:Object.assign({},la.afterTags,ra.afterTags),beforeWords:Object.assign({},la.beforeWords,ra.beforeWords),afterWords:Object.assign({},la.afterWords,ra.afterWords)},\"Person|Adj\":{beforeTags:Object.assign({},ra.beforeTags,Oo.beforeTags),afterTags:Object.assign({},ra.afterTags,Oo.afterTags),beforeWords:Object.assign({},ra.beforeWords,Oo.beforeWords),afterWords:Object.assign({},ra.afterWords,Oo.afterWords)},\"Unit|Noun\":{beforeTags:{Value:ua},afterTags:{},beforeWords:{per:ua,every:ua,each:ua,square:ua,cubic:ua,sq:ua,metric:ua},afterWords:{per:ua,squared:ua,cubed:ua,long:ua}}},ha=(e,t)=>{const n=Object.keys(e).reduce(((t,n)=>(t[n]=\"Infinitive\"===e[n]?\"PresentTense\":\"Plural\",t)),{});return Object.assign(n,t)};ca[\"Plural|Verb\"]={beforeWords:ha(ca[\"Noun|Verb\"].beforeWords,{had:\"Plural\",have:\"Plural\"}),afterWords:ha(ca[\"Noun|Verb\"].afterWords,{his:\"PresentTense\",her:\"PresentTense\",its:\"PresentTense\",in:null,to:null,is:\"PresentTense\",by:\"PresentTense\"}),beforeTags:ha(ca[\"Noun|Verb\"].beforeTags,{Conjunction:\"PresentTense\",Noun:void 0,ProperNoun:\"PresentTense\"}),afterTags:ha(ca[\"Noun|Verb\"].afterTags,{Gerund:\"Plural\",Noun:\"PresentTense\",Value:\"PresentTense\"})};const da=\"Adjective\",ga=\"Infinitive\",ma=\"PresentTense\",pa=\"Singular\",fa=\"PastTense\",ba=\"Adverb\",va=\"Plural\",ya=\"Actor\",wa=\"Verb\",ka=\"Noun\",Pa=\"LastName\",Aa=\"Modal\",Ca=\"Place\",Na=\"Participle\";var ja=[null,null,{ea:pa,ia:ka,ic:da,ly:ba,\"'n\":wa,\"'t\":wa},{oed:fa,ued:fa,xed:fa,\" so\":ba,\"'ll\":Aa,\"'re\":\"Copula\",azy:da,eer:ka,end:wa,ped:fa,ffy:da,ify:ga,ing:\"Gerund\",ize:ga,ibe:ga,lar:da,mum:da,nes:ma,nny:da,ous:da,que:da,ger:ka,ber:ka,rol:pa,sis:pa,ogy:pa,oid:pa,ian:pa,zes:ma,eld:fa,ken:Na,ven:Na,ten:Na,ect:ga,ict:ga,ign:ga,oze:ga,ful:da,bal:da,ton:ka,pur:Ca},{amed:fa,aped:fa,ched:fa,lked:fa,rked:fa,reed:fa,nded:fa,mned:da,cted:fa,dged:fa,ield:pa,akis:Pa,cede:ga,chuk:Pa,czyk:Pa,ects:ma,iend:pa,ends:wa,enko:Pa,ette:pa,iary:pa,wner:pa,fies:ma,fore:ba,gate:ga,gone:da,ices:va,ints:va,ruct:ga,ines:va,ions:va,ners:va,pers:va,lers:va,less:da,llen:da,made:da,nsen:Pa,oses:ma,ould:Aa,some:da,sson:Pa,ians:va,tion:pa,tage:ka,ique:pa,tive:da,tors:ka,vice:pa,lier:pa,fier:pa,wned:fa,gent:pa,tist:ya,pist:ya,rist:ya,mist:ya,yist:ya,vist:ya,ists:ya,lite:pa,site:pa,rite:pa,mite:pa,bite:pa,mate:pa,date:pa,ndal:pa,vent:pa,uist:ya,gist:ya,note:pa,cide:pa,ence:pa,wide:da,vide:ga,ract:ga,duce:ga,pose:ga,eive:ga,lyze:ga,lyse:ga,iant:da,nary:da,ghty:da,uent:da,erer:ya,bury:Ca,dorf:ka,esty:ka,wych:Ca,dale:Ca,folk:Ca,vale:Ca,abad:Ca,sham:Ca,wick:Ca,view:Ca},{elist:ya,holic:pa,phite:pa,tized:fa,urned:fa,eased:fa,ances:va,bound:da,ettes:va,fully:ba,ishes:ma,ities:va,marek:Pa,nssen:Pa,ology:ka,osome:pa,tment:pa,ports:va,rough:da,tches:ma,tieth:\"Ordinal\",tures:va,wards:ba,where:ba,archy:ka,pathy:ka,opoly:ka,embly:ka,phate:ka,ndent:pa,scent:pa,onist:ya,anist:ya,alist:ya,olist:ya,icist:ya,ounce:ga,iable:da,borne:da,gnant:da,inant:da,igent:da,atory:da,rient:pa,dient:pa,maker:ya,burgh:Ca,mouth:Ca,ceter:Ca,ville:Ca,hurst:Ca,stead:Ca,endon:Ca,brook:Ca,shire:Ca,worth:ka,field:\"ProperNoun\",ridge:Ca},{auskas:Pa,parent:pa,cedent:pa,ionary:pa,cklist:pa,brooke:Ca,keeper:ya,logist:ya,teenth:\"Value\",worker:ya,master:ya,writer:ya,brough:Ca,cester:Ca,ington:Ca,cliffe:Ca,ingham:Ca},{chester:Ca,logists:ya,opoulos:Pa,borough:Ca,sdottir:Pa}];const xa=\"Adjective\",Ia=\"Noun\",Ta=\"Verb\";var Da=[null,null,{},{neo:Ia,bio:Ia,\"de-\":Ta,\"re-\":Ta,\"un-\":Ta,\"ex-\":Ia},{anti:Ia,auto:Ia,faux:xa,hexa:Ia,kilo:Ia,mono:Ia,nano:Ia,octa:Ia,poly:Ia,semi:xa,tele:Ia,\"pro-\":xa,\"mis-\":Ta,\"dis-\":Ta,\"pre-\":xa},{anglo:Ia,centi:Ia,ethno:Ia,ferro:Ia,grand:Ia,hepta:Ia,hydro:Ia,intro:Ia,macro:Ia,micro:Ia,milli:Ia,nitro:Ia,penta:Ia,quasi:xa,radio:Ia,tetra:Ia,\"omni-\":xa,\"post-\":xa},{pseudo:xa,\"extra-\":xa,\"hyper-\":xa,\"inter-\":xa,\"intra-\":xa,\"deca-\":xa},{electro:Ia}];const Ha=\"Adjective\",Ea=\"Infinitive\",Ga=\"PresentTense\",Oa=\"Singular\",Fa=\"PastTense\",Va=\"Adverb\",za=\"Expression\",Ba=\"Actor\",Sa=\"Verb\",$a=\"Noun\",Ma=\"LastName\";var La={a:[[/.[aeiou]na$/,$a,\"tuna\"],[/.[oau][wvl]ska$/,Ma],[/.[^aeiou]ica$/,Oa,\"harmonica\"],[/^([hyj]a+)+$/,za,\"haha\"]],c:[[/.[^aeiou]ic$/,Ha]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,Fa,\"popped\"],[/.[aeo]{2}[bdgmnprvz]ed$/,Fa,\"rammed\"],[/.[aeiou][sg]hed$/,Fa,\"gushed\"],[/.[aeiou]red$/,Fa,\"hired\"],[/.[aeiou]r?ried$/,Fa,\"hurried\"],[/[^aeiou]ard$/,Oa,\"steward\"],[/[aeiou][^aeiou]id$/,Ha,\"\"],[/.[vrl]id$/,Ha,\"livid\"],[/..led$/,Fa,\"hurled\"],[/.[iao]sed$/,Fa,\"\"],[/[aeiou]n?[cs]ed$/,Fa,\"\"],[/[aeiou][rl]?[mnf]ed$/,Fa,\"\"],[/[aeiou][ns]?c?ked$/,Fa,\"bunked\"],[/[aeiou]gned$/,Fa],[/[aeiou][nl]?ged$/,Fa],[/.[tdbwxyz]ed$/,Fa],[/[^aeiou][aeiou][tvx]ed$/,Fa],[/.[cdflmnprstv]ied$/,Fa,\"emptied\"]],e:[[/.[lnr]ize$/,Ea,\"antagonize\"],[/.[^aeiou]ise$/,Ea,\"antagonise\"],[/.[aeiou]te$/,Ea,\"bite\"],[/.[^aeiou][ai]ble$/,Ha,\"fixable\"],[/.[^aeiou]eable$/,Ha,\"maleable\"],[/.[ts]ive$/,Ha,\"festive\"],[/[a-z]-like$/,Ha,\"woman-like\"]],h:[[/.[^aeiouf]ish$/,Ha,\"cornish\"],[/.v[iy]ch$/,Ma,\"..ovich\"],[/^ug?h+$/,za,\"ughh\"],[/^uh[ -]?oh$/,za,\"uhoh\"],[/[a-z]-ish$/,Ha,\"cartoon-ish\"]],i:[[/.[oau][wvl]ski$/,Ma,\"polish-male\"]],k:[[/^(k){2}$/,za,\"kkkk\"]],l:[[/.[gl]ial$/,Ha,\"familial\"],[/.[^aeiou]ful$/,Ha,\"fitful\"],[/.[nrtumcd]al$/,Ha,\"natal\"],[/.[^aeiou][ei]al$/,Ha,\"familial\"]],m:[[/.[^aeiou]ium$/,Oa,\"magnesium\"],[/[^aeiou]ism$/,Oa,\"schism\"],[/^[hu]m+$/,za,\"hmm\"],[/^\\d+ ?[ap]m$/,\"Date\",\"3am\"]],n:[[/.[lsrnpb]ian$/,Ha,\"republican\"],[/[^aeiou]ician$/,Ba,\"musician\"],[/[aeiou][ktrp]in'$/,\"Gerund\",\"cookin'\"]],o:[[/^no+$/,za,\"noooo\"],[/^(yo)+$/,za,\"yoo\"],[/^wo{2,}[pt]?$/,za,\"woop\"]],r:[[/.[bdfklmst]ler$/,\"Noun\"],[/[aeiou][pns]er$/,Oa],[/[^i]fer$/,Ea],[/.[^aeiou][ao]pher$/,Ba],[/.[lk]er$/,\"Noun\"],[/.ier$/,\"Comparative\"]],t:[[/.[di]est$/,\"Superlative\"],[/.[icldtgrv]ent$/,Ha],[/[aeiou].*ist$/,Ha],[/^[a-z]et$/,Sa]],s:[[/.[^aeiou]ises$/,Ga],[/.[rln]ates$/,Ga],[/.[^z]ens$/,Sa],[/.[lstrn]us$/,Oa],[/.[aeiou]sks$/,Ga],[/.[aeiou]kes$/,Ga],[/[aeiou][^aeiou]is$/,Oa],[/[a-z]'s$/,$a],[/^yes+$/,za]],v:[[/.[^aeiou][ai][kln]ov$/,Ma]],y:[[/.[cts]hy$/,Ha],[/.[st]ty$/,Ha],[/.[tnl]ary$/,Ha],[/.[oe]ry$/,Oa],[/[rdntkbhs]ly$/,Va],[/.(gg|bb|zz)ly$/,Ha],[/...lly$/,Va],[/.[gk]y$/,Ha],[/[bszmp]{2}y$/,Ha],[/.[ai]my$/,Ha],[/[ea]{2}zy$/,Ha],[/.[^aeiou]ity$/,Oa]]};const Ka=\"Verb\",Ja=\"Noun\";var Wa={leftTags:[[\"Adjective\",Ja],[\"Possessive\",Ja],[\"Determiner\",Ja],[\"Adverb\",Ka],[\"Pronoun\",Ka],[\"Value\",Ja],[\"Ordinal\",Ja],[\"Modal\",Ka],[\"Superlative\",Ja],[\"Demonym\",Ja],[\"Honorific\",\"Person\"]],leftWords:[[\"i\",Ka],[\"first\",Ja],[\"it\",Ka],[\"there\",Ka],[\"not\",Ka],[\"because\",Ja],[\"if\",Ja],[\"but\",Ja],[\"who\",Ka],[\"this\",Ja],[\"his\",Ja],[\"when\",Ja],[\"you\",Ka],[\"very\",\"Adjective\"],[\"old\",Ja],[\"never\",Ka],[\"before\",Ja],[\"a\",Ja],[\"the\",Ja],[\"been\",Ka]],rightTags:[[\"Copula\",Ja],[\"PastTense\",Ja],[\"Conjunction\",Ja],[\"Modal\",Ja]],rightWords:[[\"there\",Ka],[\"me\",Ka],[\"man\",\"Adjective\"],[\"him\",Ka],[\"it\",Ka],[\"were\",Ja],[\"took\",Ja],[\"himself\",Ka],[\"went\",Ja],[\"who\",Ja],[\"jr\",\"Person\"]]},qa={fwd:\"3:ser,ier¦1er:h,t,f,l,n¦1r:e¦2er:ss,or,om\",both:\"3er:ver,ear,alm¦3ner:hin¦3ter:lat¦2mer:im¦2er:ng,rm,mb¦2ber:ib¦2ger:ig¦1er:w,p,k,d¦ier:y\",rev:\"1:tter,yer¦2:uer,ver,ffer,oner,eler,ller,iler,ster,cer,uler,sher,ener,gher,aner,adder,nter,eter,rter,hter,rner,fter¦3:oser,ooler,eafer,user,airer,bler,maler,tler,eater,uger,rger,ainer,urer,ealer,icher,pler,emner,icter,nser,iser¦4:arser,viner,ucher,rosser,somer,ndomer,moter,oother,uarer,hiter¦5:nuiner,esser,emier¦ar:urther\",ex:\"worse:bad¦better:good¦4er:fair,gray,poor¦1urther:far¦3ter:fat,hot,wet¦3der:mad,sad¦3er:shy,fun¦4der:glad¦:¦4r:cute,dire,fake,fine,free,lame,late,pale,rare,ripe,rude,safe,sore,tame,wide¦5r:eerie,stale\"},Ua={fwd:\"1:nning,tting,rring,pping,eing,mming,gging,dding,bbing,kking¦2:eking,oling,eling,eming¦3:velling,siting,uiting,fiting,loting,geting,ialing,celling¦4:graming\",both:\"1:aing,iing,fing,xing,ying,oing,hing,wing¦2:tzing,rping,izzing,bting,mning,sping,wling,rling,wding,rbing,uping,lming,wning,mping,oning,lting,mbing,lking,fting,hting,sking,gning,pting,cking,ening,nking,iling,eping,ering,rting,rming,cting,lping,ssing,nting,nding,lding,sting,rning,rding,rking¦3:belling,siping,toming,yaking,uaking,oaning,auling,ooping,aiding,naping,euring,tolling,uzzing,ganing,haning,ualing,halling,iasing,auding,ieting,ceting,ouling,voring,ralling,garing,joring,oaming,oaking,roring,nelling,ooring,uelling,eaming,ooding,eaping,eeting,ooting,ooming,xiting,keting,ooking,ulling,airing,oaring,biting,outing,oiting,earing,naling,oading,eeding,ouring,eaking,aiming,illing,oining,eaning,onging,ealing,aining,eading¦4:thoming,melling,aboring,ivoting,weating,dfilling,onoring,eriting,imiting,tialling,rgining,otoring,linging,winging,lleting,louding,spelling,mpelling,heating,feating,opelling,choring,welling,ymaking,ctoring,calling,peating,iloring,laiting,utoring,uditing,mmaking,loating,iciting,waiting,mbating,voiding,otalling,nsoring,nselling,ocusing,itoring,eloping¦5:rselling,umpeting,atrolling,treating,tselling,rpreting,pringing,ummeting,ossoming,elmaking,eselling,rediting,totyping,onmaking,rfeiting,ntrolling¦5e:chmaking,dkeeping,severing,erouting,ecreting,ephoning,uthoring,ravening,reathing,pediting,erfering,eotyping,fringing,entoring,ombining,ompeting¦4e:emaking,eething,twining,rruling,chuting,xciting,rseding,scoping,edoring,pinging,lunging,agining,craping,pleting,eleting,nciting,nfining,ncoding,tponing,ecoding,writing,esaling,nvening,gnoring,evoting,mpeding,rvening,dhering,mpiling,storing,nviting,ploring¦3e:tining,nuring,saking,miring,haling,ceding,xuding,rining,nuting,laring,caring,miling,riding,hoking,piring,lading,curing,uading,noting,taping,futing,paring,hading,loding,siring,guring,vading,voking,during,niting,laning,caping,luting,muting,ruding,ciding,juring,laming,caling,hining,uoting,liding,ciling,duling,tuting,puting,cuting,coring,uiding,tiring,turing,siding,rading,enging,haping,buting,lining,taking,anging,haring,uiring,coming,mining,moting,suring,viding,luding¦2e:tring,zling,uging,oging,gling,iging,vring,fling,lging,obing,psing,pling,ubing,cling,dling,wsing,iking,rsing,dging,kling,ysing,tling,rging,eging,nsing,uning,osing,uming,using,ibing,bling,aging,ising,asing,ating¦2ie:rlying¦1e:zing,uing,cing,ving\",rev:\"ying:ie¦1ing:se,ke,te,we,ne,re,de,pe,me,le,c,he¦2ing:ll,ng,dd,ee,ye,oe,rg,us¦2ning:un¦2ging:og,ag,ug,ig,eg¦2ming:um¦2bing:ub,ab,eb,ob¦3ning:lan,can,hin,pin,win¦3ring:cur,lur,tir,tar,pur,car¦3ing:ait,del,eel,fin,eat,oat,eem,lel,ool,ein,uin¦3ping:rop,rap,top,uip,wap,hip,hop,lap,rip,cap¦3ming:tem,wim,rim,kim,lim¦3ting:mat,cut,pot,lit,lot,hat,set,pit,put¦3ding:hed,bed,bid¦3king:rek¦3ling:cil,pel¦3bing:rib¦4ning:egin¦4ing:isit,ruit,ilot,nsit,dget,rkel,ival,rcel¦4ring:efer,nfer¦4ting:rmit,mmit,ysit,dmit,emit,bmit,tfit,gret¦4ling:evel,xcel,ivel¦4ding:hred¦5ing:arget,posit,rofit¦5ring:nsfer¦5ting:nsmit,orget,cquit¦5ling:ancel,istil\",ex:\"3:adding,eating,aiming,aiding,airing,outing,gassing,setting,getting,putting,cutting,winning,sitting,betting,mapping,tapping,letting,bidding,hitting,tanning,netting,popping,fitting,capping,lapping,barring,banning,vetting,topping,rotting,tipping,potting,wetting,pitting,dipping,budding,hemming,pinning,jetting,kidding,padding,podding,sipping,wedding,bedding,donning,warring,penning,gutting,cueing,wadding,petting,ripping,napping,matting,tinning,binning,dimming,hopping,mopping,nodding,panning,rapping,ridding,sinning¦4:selling,falling,calling,waiting,editing,telling,rolling,heating,boating,hanging,beating,coating,singing,tolling,felling,polling,discing,seating,voiding,gelling,yelling,baiting,reining,ruining,seeking,spanning,stepping,knitting,emitting,slipping,quitting,dialing,omitting,clipping,shutting,skinning,abutting,flipping,trotting,cramming,fretting,suiting¦5:bringing,treating,spelling,stalling,trolling,expelling,rivaling,wringing,deterring,singeing,befitting,refitting¦6:enrolling,distilling,scrolling,strolling,caucusing,travelling¦7:installing,redefining,stencilling,recharging,overeating,benefiting,unraveling,programing¦9:reprogramming¦is:being¦2e:using,aging,owing¦3e:making,taking,coming,noting,hiring,filing,coding,citing,doping,baking,coping,hoping,lading,caring,naming,voting,riding,mining,curing,lining,ruling,typing,boring,dining,firing,hiding,piling,taping,waning,baling,boning,faring,honing,wiping,luring,timing,wading,piping,fading,biting,zoning,daring,waking,gaming,raking,ceding,tiring,coking,wining,joking,paring,gaping,poking,pining,coring,liming,toting,roping,wiring,aching¦4e:writing,storing,eroding,framing,smoking,tasting,wasting,phoning,shaking,abiding,braking,flaking,pasting,priming,shoring,sloping,withing,hinging¦5e:defining,refining,renaming,swathing,fringing,reciting¦1ie:dying,tying,lying,vying¦7e:sunbathing\"},Ra={fwd:\"1:mt¦2:llen¦3:iven,aken¦:ne¦y:in\",both:\"1:wn¦2:me,aten¦3:seen,bidden,isen¦4:roven,asten¦3l:pilt¦3d:uilt¦2e:itten¦1im:wum¦1eak:poken¦1ine:hone¦1ose:osen¦1in:gun¦1ake:woken¦ear:orn¦eal:olen¦eeze:ozen¦et:otten¦ink:unk¦ing:ung\",rev:\"2:un¦oken:eak¦ought:eek¦oven:eave¦1ne:o¦1own:ly¦1den:de¦1in:ay¦2t:am¦2n:ee¦3en:all¦4n:rive,sake,take¦5n:rgive\",ex:\"2:been¦3:seen,run¦4:given,taken¦5:shaken¦2eak:broken¦1ive:dove¦2y:flown¦3e:hidden,ridden¦1eek:sought¦1ake:woken¦1eave:woven\"},Qa={fwd:\"1:oes¦1ve:as\",both:\"1:xes¦2:zzes,ches,shes,sses¦3:iases¦2y:llies,plies¦1y:cies,bies,ties,vies,nies,pies,dies,ries,fies¦:s\",rev:\"1ies:ly¦2es:us,go,do¦3es:cho,eto\",ex:\"2:does,goes¦3:gasses¦5:focuses¦is:are¦3y:relies¦2y:flies¦2ve:has\"},Za={fwd:\"1st:e¦1est:l,m,f,s¦1iest:cey¦2est:or,ir¦3est:ver\",both:\"4:east¦5:hwest¦5lest:erful¦4est:weet,lgar,tter,oung¦4most:uter¦3est:ger,der,rey,iet,ong,ear¦3test:lat¦3most:ner¦2est:pt,ft,nt,ct,rt,ht¦2test:it¦2gest:ig¦1est:b,k,n,p,h,d,w¦iest:y\",rev:\"1:ttest,nnest,yest¦2:sest,stest,rmest,cest,vest,lmest,olest,ilest,ulest,ssest,imest,uest¦3:rgest,eatest,oorest,plest,allest,urest,iefest,uelest,blest,ugest,amest,yalest,ealest,illest,tlest,itest¦4:cerest,eriest,somest,rmalest,ndomest,motest,uarest,tiffest¦5:leverest,rangest¦ar:urthest¦3ey:riciest\",ex:\"best:good¦worst:bad¦5est:great¦4est:fast,full,fair,dull¦3test:hot,wet,fat¦4nest:thin¦1urthest:far¦3est:gay,shy,ill¦4test:neat¦4st:late,wide,fine,safe,cute,fake,pale,rare,rude,sore,ripe,dire¦6st:severe\"},_a={fwd:\"1:tistic,eable,lful,sful,ting,tty¦2:onate,rtable,geous,ced,seful,ctful¦3:ortive,ented¦arity:ear¦y:etic¦fulness:begone¦1ity:re¦1y:tiful,gic¦2ity:ile,imous,ilous,ime¦2ion:ated¦2eness:iving¦2y:trious¦2ation:iring¦2tion:vant¦3ion:ect¦3ce:mant,mantic¦3tion:irable¦3y:est,estic¦3m:mistic,listic¦3ess:ning¦4n:utious¦4on:rative,native,vative,ective¦4ce:erant\",both:\"1:king,wing¦2:alous,ltuous,oyful,rdous¦3:gorous,ectable,werful,amatic¦4:oised,usical,agical,raceful,ocused,lined,ightful¦5ness:stful,lding,itous,nuous,ulous,otous,nable,gious,ayful,rvous,ntous,lsive,peful,entle,ciful,osive,leful,isive,ncise,reful,mious¦5ty:ivacious¦5ties:ubtle¦5ce:ilient,adiant,atient¦5cy:icient¦5sm:gmatic¦5on:sessive,dictive¦5ity:pular,sonal,eative,entic¦5sity:uminous¦5ism:conic¦5nce:mperate¦5ility:mitable¦5ment:xcited¦5n:bitious¦4cy:brant,etent,curate¦4ility:erable,acable,icable,ptable¦4ty:nacious,aive,oyal,dacious¦4n:icious¦4ce:vient,erent,stent,ndent,dient,quent,ident¦4ness:adic,ound,hing,pant,sant,oing,oist,tute¦4icity:imple¦4ment:fined,mused¦4ism:otic¦4ry:dantic¦4ity:tund,eral¦4edness:hand¦4on:uitive¦4lity:pitable¦4sm:eroic,namic¦4sity:nerous¦3th:arm¦3ility:pable,bable,dable,iable¦3cy:hant,nant,icate¦3ness:red,hin,nse,ict,iet,ite,oud,ind,ied,rce¦3ion:lute¦3ity:ual,gal,volous,ial¦3ce:sent,fensive,lant,gant,gent,lent,dant¦3on:asive¦3m:fist,sistic,iastic¦3y:terious,xurious,ronic,tastic¦3ur:amorous¦3e:tunate¦3ation:mined¦3sy:rteous¦3ty:ain¦3ry:ave¦3ment:azed¦2ness:de,on,ue,rn,ur,ft,rp,pe,om,ge,rd,od,ay,ss,er,ll,oy,ap,ht,ld,ad,rt¦2inousness:umous¦2ity:neous,ene,id,ane¦2cy:bate,late¦2ation:ized¦2ility:oble,ible¦2y:odic¦2e:oving,aring¦2s:ost¦2itude:pt¦2dom:ee¦2ance:uring¦2tion:reet¦2ion:oted¦2sion:ending¦2liness:an¦2or:rdent¦1th:ung¦1e:uable¦1ness:w,h,k,f¦1ility:mble¦1or:vent¦1ement:ging¦1tiquity:ncient¦1ment:hed¦verty:or¦ength:ong¦eat:ot¦pth:ep¦iness:y\",rev:\"\",ex:\"5:forceful,humorous¦8:charismatic¦13:understanding¦5ity:active¦11ness:adventurous,inquisitive,resourceful¦8on:aggressive,automatic,perceptive¦7ness:amorous,fatuous,furtive,ominous,serious¦5ness:ample,sweet¦12ness:apprehensive,cantankerous,contemptuous,ostentatious¦13ness:argumentative,conscientious¦9ness:assertive,facetious,imperious,inventive,oblivious,rapacious,receptive,seditious,whimsical¦10ness:attractive,expressive,impressive,loquacious,salubrious,thoughtful¦3edom:boring¦4ness:calm,fast,keen,tame¦8ness:cheerful,gracious,specious,spurious,timorous,unctuous¦5sity:curious¦9ion:deliberate¦8ion:desperate¦6e:expensive¦7ce:fragrant¦3y:furious¦9ility:ineluctable¦6ism:mystical¦8ity:physical,proactive,sensitive,vertical¦5cy:pliant¦7ity:positive¦9ity:practical¦12ism:professional¦6ce:prudent¦3ness:red¦6cy:vagrant¦3dom:wise\"};const Xa=function(e=\"\",t={}){let n=function(e,t={}){return t.hasOwnProperty(e)?t[e]:null}(e,t.ex);return n=n||function(e,t=[]){for(let n=0;n<t.length;n+=1)if(e.endsWith(t[n]))return e;return null}(e,t.same),n=n||function(e,t,n={}){t=t||{};for(let r=e.length-1;r>=1;r-=1){let o=e.length-r,a=e.substring(o,e.length);if(!0===t.hasOwnProperty(a))return e.slice(0,o)+t[a];if(!0===n.hasOwnProperty(a))return e.slice(0,o)+n[a]}return t.hasOwnProperty(\"\")?e+t[\"\"]:n.hasOwnProperty(\"\")?e+n[\"\"]:null}(e,t.fwd,t.both),n=n||e,n},Ya=function(e){return Object.entries(e).reduce(((e,t)=>(e[t[1]]=t[0],e)),{})},ei=function(e={}){return{reversed:!0,both:Ya(e.both),ex:Ya(e.ex),fwd:e.rev||{}}},ti=/^([0-9]+)/,ni=function(e){let t=function(e){let t={};return e.split(\"¦\").forEach((e=>{let[n,r]=e.split(\":\");r=(r||\"\").split(\",\"),r.forEach((e=>{t[e]=n}))})),t}(e);return Object.keys(t).reduce(((e,n)=>(e[n]=function(e=\"\",t=\"\"){let n=(t=String(t)).match(ti);if(null===n)return t;let r=Number(n[1])||0;return e.substring(0,r)+t.replace(ti,\"\")}(n,t[n]),e)),{})},ri=function(e={}){return\"string\"==typeof e&&(e=JSON.parse(e)),e.fwd=ni(e.fwd||\"\"),e.both=ni(e.both||\"\"),e.rev=ni(e.rev||\"\"),e.ex=ni(e.ex||\"\"),e},oi=ri({fwd:\"1:tted,wed,gged,nned,een,rred,pped,yed,bbed,oed,dded,rd,wn,mmed¦2:eed,nded,et,hted,st,oled,ut,emed,eled,lded,ken,rt,nked,apt,ant,eped,eked¦3:eared,eat,eaded,nelled,ealt,eeded,ooted,eaked,eaned,eeted,mited,bid,uit,ead,uited,ealed,geted,velled,ialed,belled¦4:ebuted,hined,comed¦y:ied¦ome:ame¦ear:ore¦ind:ound¦ing:ung,ang¦ep:pt¦ink:ank,unk¦ig:ug¦all:ell¦ee:aw¦ive:ave¦eeze:oze¦old:eld¦ave:ft¦ake:ook¦ell:old¦ite:ote¦ide:ode¦ine:one¦in:un,on¦eal:ole¦im:am¦ie:ay¦and:ood¦1ise:rose¦1eak:roke¦1ing:rought¦1ive:rove¦1el:elt¦1id:bade¦1et:got¦1y:aid¦1it:sat¦3e:lid¦3d:pent\",both:\"1:aed,fed,xed,hed¦2:sged,xted,wled,rped,lked,kied,lmed,lped,uped,bted,rbed,rked,wned,rled,mped,fted,mned,mbed,zzed,omed,ened,cked,gned,lted,sked,ued,zed,nted,ered,rted,rmed,ced,sted,rned,ssed,rded,pted,ved,cted¦3:cled,eined,siped,ooned,uked,ymed,jored,ouded,ioted,oaned,lged,asped,iged,mured,oided,eiled,yped,taled,moned,yled,lit,kled,oaked,gled,naled,fled,uined,oared,valled,koned,soned,aided,obed,ibed,meted,nicked,rored,micked,keted,vred,ooped,oaded,rited,aired,auled,filled,ouled,ooded,ceted,tolled,oited,bited,aped,tled,vored,dled,eamed,nsed,rsed,sited,owded,pled,sored,rged,osed,pelled,oured,psed,oated,loned,aimed,illed,eured,tred,ioned,celled,bled,wsed,ooked,oiled,itzed,iked,iased,onged,ased,ailed,uned,umed,ained,auded,nulled,ysed,eged,ised,aged,oined,ated,used,dged,doned¦4:ntied,efited,uaked,caded,fired,roped,halled,roked,himed,culed,tared,lared,tuted,uared,routed,pited,naked,miled,houted,helled,hared,cored,caled,tired,peated,futed,ciled,called,tined,moted,filed,sided,poned,iloted,honed,lleted,huted,ruled,cured,named,preted,vaded,sured,talled,haled,peded,gined,nited,uided,ramed,feited,laked,gured,ctored,unged,pired,cuted,voked,eloped,ralled,rined,coded,icited,vided,uaded,voted,mined,sired,noted,lined,nselled,luted,jured,fided,puted,piled,pared,olored,cided,hoked,enged,tured,geoned,cotted,lamed,uiled,waited,udited,anged,luded,mired,uired,raded¦5:modelled,izzled,eleted,umpeted,ailored,rseded,treated,eduled,ecited,rammed,eceded,atrolled,nitored,basted,twined,itialled,ncited,gnored,ploded,xcited,nrolled,namelled,plored,efeated,redited,ntrolled,nfined,pleted,llided,lcined,eathed,ibuted,lloted,dhered,cceded¦3ad:sled¦2aw:drew¦2ot:hot¦2ke:made¦2ow:hrew,grew¦2ose:hose¦2d:ilt¦2in:egan¦1un:ran¦1ink:hought¦1ick:tuck¦1ike:ruck¦1eak:poke,nuck¦1it:pat¦1o:did¦1ow:new¦1ake:woke¦go:went\",rev:\"3:rst,hed,hut,cut,set¦4:tbid¦5:dcast,eread,pread,erbid¦ought:uy,eek¦1ied:ny,ly,dy,ry,fy,py,vy,by,ty,cy¦1ung:ling,ting,wing¦1pt:eep¦1ank:rink¦1ore:bear,wear¦1ave:give¦1oze:reeze¦1ound:rind,wind¦1ook:take,hake¦1aw:see¦1old:sell¦1ote:rite¦1ole:teal¦1unk:tink¦1am:wim¦1ay:lie¦1ood:tand¦1eld:hold¦2d:he,ge,re,le,leed,ne,reed,be,ye,lee,pe,we¦2ed:dd,oy,or,ey,gg,rr,us,ew,to¦2ame:ecome,rcome¦2ped:ap¦2ged:ag,og,ug,eg¦2bed:ub,ab,ib,ob¦2lt:neel¦2id:pay¦2ang:pring¦2ove:trive¦2med:um¦2ode:rride¦2at:ysit¦3ted:mit,hat,mat,lat,pot,rot,bat¦3ed:low,end,tow,und,ond,eem,lay,cho,dow,xit,eld,ald,uld,law,lel,eat,oll,ray,ank,fin,oam,out,how,iek,tay,haw,ait,vet,say,cay,bow¦3d:ste,ede,ode,ete,ree,ude,ame,oke,ote,ime,ute,ade¦3red:lur,cur,pur,car¦3ped:hop,rop,uip,rip,lip,tep,top¦3ded:bed,rod,kid¦3ade:orbid¦3led:uel¦3ned:lan,can,kin,pan,tun¦3med:rim,lim¦4ted:quit,llot¦4ed:pear,rrow,rand,lean,mand,anel,pand,reet,link,abel,evel,imit,ceed,ruit,mind,peal,veal,hool,head,pell,well,mell,uell,band,hear,weak¦4led:nnel,qual,ebel,ivel¦4red:nfer,efer,sfer¦4n:sake,trew¦4d:ntee¦4ded:hred¦4ned:rpin¦5ed:light,nceal,right,ndear,arget,hread,eight,rtial,eboot¦5d:edite,nvite¦5ted:egret¦5led:ravel\",ex:\"2:been,upped¦3:added,aged,aided,aimed,aired,bid,died,dyed,egged,erred,eyed,fit,gassed,hit,lied,owed,pent,pied,tied,used,vied,oiled,outed,banned,barred,bet,canned,cut,dipped,donned,ended,feed,inked,jarred,let,manned,mowed,netted,padded,panned,pitted,popped,potted,put,set,sewn,sowed,tanned,tipped,topped,vowed,weed,bowed,jammed,binned,dimmed,hopped,mopped,nodded,pinned,rigged,sinned,towed,vetted¦4:ached,baked,baled,boned,bored,called,caned,cared,ceded,cited,coded,cored,cubed,cured,dared,dined,edited,exited,faked,fared,filed,fined,fired,fuelled,gamed,gelled,hired,hoped,joked,lined,mined,named,noted,piled,poked,polled,pored,pulled,reaped,roamed,rolled,ruled,seated,shed,sided,timed,tolled,toned,voted,waited,walled,waned,winged,wiped,wired,zoned,yelled,tamed,lubed,roped,faded,mired,caked,honed,banged,culled,heated,raked,welled,banded,beat,cast,cooled,cost,dealt,feared,folded,footed,handed,headed,heard,hurt,knitted,landed,leaked,leapt,linked,meant,minded,molded,neared,needed,peaked,plodded,plotted,pooled,quit,read,rooted,sealed,seeded,seeped,shipped,shunned,skimmed,slammed,sparred,stemmed,stirred,suited,thinned,twinned,swayed,winked,dialed,abutted,blotted,fretted,healed,heeded,peeled,reeled¦5:basted,cheated,equalled,eroded,exiled,focused,opined,pleated,primed,quoted,scouted,shored,sloped,smoked,sniped,spelled,spouted,routed,staked,stored,swelled,tasted,treated,wasted,smelled,dwelled,honored,prided,quelled,eloped,scared,coveted,sweated,breaded,cleared,debuted,deterred,freaked,modeled,pleaded,rebutted,speeded¦6:anchored,defined,endured,impaled,invited,refined,revered,strolled,cringed,recast,thrust,unfolded¦7:authored,combined,competed,conceded,convened,excreted,extruded,redefined,restored,secreted,rescinded,welcomed¦8:expedited,infringed¦9:interfered,intervened,persevered¦10:contravened¦eat:ate¦is:was¦go:went¦are:were¦3d:bent,lent,rent,sent¦3e:bit,fled,hid,lost¦3ed:bled,bred¦2ow:blew,grew¦1uy:bought¦2tch:caught¦1o:did¦1ive:dove,gave¦2aw:drew¦2ed:fed¦2y:flew,laid,paid,said¦1ight:fought¦1et:got¦2ve:had¦1ang:hung¦2ad:led¦2ght:lit¦2ke:made¦2et:met¦1un:ran¦1ise:rose¦1it:sat¦1eek:sought¦1each:taught¦1ake:woke,took¦1eave:wove¦2ise:arose¦1ear:bore,tore,wore¦1ind:bound,found,wound¦2eak:broke¦2ing:brought,wrung¦1ome:came¦2ive:drove¦1ig:dug¦1all:fell¦2el:felt¦4et:forgot¦1old:held¦2ave:left¦1ing:rang,sang¦1ide:rode¦1ink:sank¦1ee:saw¦2ine:shone¦4e:slid¦1ell:sold,told¦4d:spent¦2in:spun¦1in:won\"}),ai=ri(Qa),ii=ri(Ua),si=ri(Ra),li=ei(oi),ui=ei(ai),ci=ei(ii),hi=ei(si),di=ri(qa),gi=ri(Za);var mi={fromPast:oi,fromPresent:ai,fromGerund:ii,fromParticiple:si,toPast:li,toPresent:ui,toGerund:ci,toParticiple:hi,toComparative:di,toSuperlative:gi,fromComparative:ei(di),fromSuperlative:ei(gi),adjToNoun:ri(_a)},pi=[\"academy\",\"administration\",\"agence\",\"agences\",\"agencies\",\"agency\",\"airlines\",\"airways\",\"army\",\"assoc\",\"associates\",\"association\",\"assurance\",\"authority\",\"autorite\",\"aviation\",\"bank\",\"banque\",\"board\",\"boys\",\"brands\",\"brewery\",\"brotherhood\",\"brothers\",\"bureau\",\"cafe\",\"co\",\"caisse\",\"capital\",\"care\",\"cathedral\",\"center\",\"centre\",\"chemicals\",\"choir\",\"chronicle\",\"church\",\"circus\",\"clinic\",\"clinique\",\"club\",\"co\",\"coalition\",\"coffee\",\"collective\",\"college\",\"commission\",\"committee\",\"communications\",\"community\",\"company\",\"comprehensive\",\"computers\",\"confederation\",\"conference\",\"conseil\",\"consulting\",\"containers\",\"corporation\",\"corps\",\"corp\",\"council\",\"crew\",\"data\",\"departement\",\"department\",\"departments\",\"design\",\"development\",\"directorate\",\"division\",\"drilling\",\"education\",\"eglise\",\"electric\",\"electricity\",\"energy\",\"ensemble\",\"enterprise\",\"enterprises\",\"entertainment\",\"estate\",\"etat\",\"faculty\",\"faction\",\"federation\",\"financial\",\"fm\",\"foundation\",\"fund\",\"gas\",\"gazette\",\"girls\",\"government\",\"group\",\"guild\",\"herald\",\"holdings\",\"hospital\",\"hotel\",\"hotels\",\"inc\",\"industries\",\"institut\",\"institute\",\"institutes\",\"insurance\",\"international\",\"interstate\",\"investment\",\"investments\",\"investors\",\"journal\",\"laboratory\",\"labs\",\"llc\",\"ltd\",\"limited\",\"machines\",\"magazine\",\"management\",\"marine\",\"marketing\",\"markets\",\"media\",\"memorial\",\"ministere\",\"ministry\",\"military\",\"mobile\",\"motor\",\"motors\",\"musee\",\"museum\",\"news\",\"observatory\",\"office\",\"oil\",\"optical\",\"orchestra\",\"organization\",\"partners\",\"partnership\",\"petrol\",\"petroleum\",\"pharmacare\",\"pharmaceutical\",\"pharmaceuticals\",\"pizza\",\"plc\",\"police\",\"politburo\",\"polytechnic\",\"post\",\"power\",\"press\",\"productions\",\"quartet\",\"radio\",\"reserve\",\"resources\",\"restaurant\",\"restaurants\",\"savings\",\"school\",\"securities\",\"service\",\"services\",\"societe\",\"subsidiary\",\"society\",\"sons\",\"subcommittee\",\"syndicat\",\"systems\",\"telecommunications\",\"telegraph\",\"television\",\"times\",\"tribunal\",\"tv\",\"union\",\"university\",\"utilities\",\"workers\"].reduce(((e,t)=>(e[t]=!0,e)),{}),fi=[\"atoll\",\"basin\",\"bay\",\"beach\",\"bluff\",\"bog\",\"camp\",\"canyon\",\"canyons\",\"cape\",\"cave\",\"caves\",\"cliffs\",\"coast\",\"cove\",\"coves\",\"crater\",\"crossing\",\"creek\",\"desert\",\"dune\",\"dunes\",\"downs\",\"estates\",\"escarpment\",\"estuary\",\"falls\",\"fjord\",\"fjords\",\"forest\",\"forests\",\"glacier\",\"gorge\",\"gorges\",\"grove\",\"gulf\",\"gully\",\"highland\",\"heights\",\"hollow\",\"hill\",\"hills\",\"inlet\",\"island\",\"islands\",\"isthmus\",\"junction\",\"knoll\",\"lagoon\",\"lake\",\"lakeshore\",\"marsh\",\"marshes\",\"mount\",\"mountain\",\"mountains\",\"narrows\",\"peninsula\",\"plains\",\"plateau\",\"pond\",\"rapids\",\"ravine\",\"reef\",\"reefs\",\"ridge\",\"river\",\"rivers\",\"sandhill\",\"shoal\",\"shore\",\"shoreline\",\"shores\",\"strait\",\"straits\",\"springs\",\"stream\",\"swamp\",\"tombolo\",\"trail\",\"trails\",\"trench\",\"valley\",\"vallies\",\"village\",\"volcano\",\"waterfall\",\"watershed\",\"wetland\",\"woods\",\"acres\",\"burough\",\"county\",\"district\",\"municipality\",\"prefecture\",\"province\",\"region\",\"reservation\",\"state\",\"territory\",\"borough\",\"metropolis\",\"downtown\",\"uptown\",\"midtown\",\"city\",\"town\",\"township\",\"hamlet\",\"country\",\"kingdom\",\"enclave\",\"neighbourhood\",\"neighborhood\",\"kingdom\",\"ward\",\"zone\",\"airport\",\"amphitheater\",\"arch\",\"arena\",\"auditorium\",\"bar\",\"barn\",\"basilica\",\"battlefield\",\"bridge\",\"building\",\"castle\",\"centre\",\"coliseum\",\"cineplex\",\"complex\",\"dam\",\"farm\",\"field\",\"fort\",\"garden\",\"gardens\",\"gymnasium\",\"hall\",\"house\",\"levee\",\"library\",\"manor\",\"memorial\",\"monument\",\"museum\",\"gallery\",\"palace\",\"pillar\",\"pits\",\"plantation\",\"playhouse\",\"quarry\",\"sportsfield\",\"sportsplex\",\"stadium\",\"terrace\",\"terraces\",\"theater\",\"tower\",\"park\",\"parks\",\"site\",\"ranch\",\"raceway\",\"sportsplex\",\"ave\",\"st\",\"street\",\"rd\",\"road\",\"lane\",\"landing\",\"crescent\",\"cr\",\"way\",\"tr\",\"terrace\",\"avenue\"].reduce(((e,t)=>(e[t]=!0,e)),{}),bi=[[/([^v])ies$/i,\"$1y\"],[/(ise)s$/i,\"$1\"],[/(kn|[^o]l|w)ives$/i,\"$1ife\"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,\"$1f\"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,\"$1f\"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,\"$1a\"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,\"$1us\"],[/(buffal|tomat|tornad)(oes)$/i,\"$1o\"],[/(ause)s$/i,\"$1\"],[/(ease)s$/i,\"$1\"],[/(ious)es$/i,\"$1\"],[/(ouse)s$/i,\"$1\"],[/(ose)s$/i,\"$1\"],[/(..ase)s$/i,\"$1\"],[/(..[aeiu]s)es$/i,\"$1\"],[/(vert|ind|cort)(ices)$/i,\"$1ex\"],[/(matr|append)(ices)$/i,\"$1ix\"],[/([xo]|ch|ss|sh)es$/i,\"$1\"],[/men$/i,\"man\"],[/(n)ews$/i,\"$1ews\"],[/([ti])a$/i,\"$1um\"],[/([^aeiouy]|qu)ies$/i,\"$1y\"],[/(s)eries$/i,\"$1eries\"],[/(m)ovies$/i,\"$1ovie\"],[/(cris|ax|test)es$/i,\"$1is\"],[/(alias|status)es$/i,\"$1\"],[/(ss)$/i,\"$1\"],[/(ic)s$/i,\"$1\"],[/s$/i,\"\"]];const vi=function(e,t){const{irregularPlurals:n}=t.two,r=(o=n,Object.keys(o).reduce(((e,t)=>(e[o[t]]=t,e)),{}));var o;if(r.hasOwnProperty(e))return r[e];for(let t=0;t<bi.length;t++)if(!0===bi[t][0].test(e))return e=e.replace(bi[t][0],bi[t][1]);return e};var yi={toPlural:Ao,toSingular:vi,all:function(e,t){const n=[e],r=Ao(e,t);r!==e&&n.push(r);const o=vi(e,t);return o!==e&&n.push(o),n}};let wi={Gerund:[\"ing\"],Actor:[\"erer\"],Infinitive:[\"ate\",\"ize\",\"tion\",\"rify\",\"then\",\"ress\",\"ify\",\"age\",\"nce\",\"ect\",\"ise\",\"ine\",\"ish\",\"ace\",\"ash\",\"ure\",\"tch\",\"end\",\"ack\",\"and\",\"ute\",\"ade\",\"ock\",\"ite\",\"ase\",\"ose\",\"use\",\"ive\",\"int\",\"nge\",\"lay\",\"est\",\"ain\",\"ant\",\"ent\",\"eed\",\"er\",\"le\",\"unk\",\"ung\",\"upt\",\"en\"],PastTense:[\"ept\",\"ed\",\"lt\",\"nt\",\"ew\",\"ld\"],PresentTense:[\"rks\",\"cks\",\"nks\",\"ngs\",\"mps\",\"tes\",\"zes\",\"ers\",\"les\",\"acks\",\"ends\",\"ands\",\"ocks\",\"lays\",\"eads\",\"lls\",\"els\",\"ils\",\"ows\",\"nds\",\"ays\",\"ams\",\"ars\",\"ops\",\"ffs\",\"als\",\"urs\",\"lds\",\"ews\",\"ips\",\"es\",\"ts\",\"ns\"],Participle:[\"ken\",\"wn\"]};wi=Object.keys(wi).reduce(((e,t)=>(wi[t].forEach((n=>e[n]=t)),e)),{});const ki=function(e){const t=e.substring(e.length-3);if(!0===wi.hasOwnProperty(t))return wi[t];const n=e.substring(e.length-2);if(!0===wi.hasOwnProperty(n))return wi[n];return\"s\"===e.substring(e.length-1)?\"PresentTense\":null},Pi={are:\"be\",were:\"be\",been:\"be\",is:\"be\",am:\"be\",was:\"be\",be:\"be\",being:\"be\"},Ai=function(e,t,n){const{fromPast:r,fromPresent:o,fromGerund:a,fromParticiple:i}=t.two.models,{prefix:s,verb:l,particle:u}=function(e,t){let n=\"\",r={};t.one&&t.one.prefixes&&(r=t.one.prefixes);let[o,a]=e.split(/ /);return a&&!0===r[o]&&(n=o,o=a,a=\"\"),{prefix:n,verb:o,particle:a}}(e,t);let c=\"\";if(n||(n=ki(e)),Pi.hasOwnProperty(e))c=Pi[e];else if(\"Participle\"===n)c=Xa(l,i);else if(\"PastTense\"===n)c=Xa(l,r);else if(\"PresentTense\"===n)c=Xa(l,o);else{if(\"Gerund\"!==n)return e;c=Xa(l,a)}return u&&(c+=\" \"+u),s&&(c=s+\" \"+c),c},Ci=function(e,t){const{toPast:n,toPresent:r,toGerund:o,toParticiple:a}=t.two.models;if(\"be\"===e)return{Infinitive:e,Gerund:\"being\",PastTense:\"was\",PresentTense:\"is\"};const[i,s]=(e=>/ /.test(e)?e.split(/ /):[e,\"\"])(e),l={Infinitive:i,PastTense:Xa(i,n),PresentTense:Xa(i,r),Gerund:Xa(i,o),FutureTense:\"will \"+i};let u=Xa(i,a);if(u!==e&&u!==l.PastTense){const n=t.one.lexicon||{};\"Participle\"!==n[u]&&\"Adjective\"!==n[u]||(\"play\"===e&&(u=\"played\"),l.Participle=u)}return s&&Object.keys(l).forEach((e=>{l[e]+=\" \"+s})),l};var Ni={toInfinitive:Ai,conjugate:Ci,all:function(e,t){const n=Ci(e,t);return delete n.FutureTense,Object.values(n).filter((e=>e))}};const ji=function(e,t){const n=t.two.models.toSuperlative;return Xa(e,n)},xi=function(e,t){const n=t.two.models.toComparative;return Xa(e,n)},Ii=function(e=\"\",t=[]){const n=e.length;for(let r=n<=6?n-1:6;r>=1;r-=1){const o=e.substring(n-r,e.length);if(!0===t[o.length].hasOwnProperty(o)){return e.slice(0,n-r)+t[o.length][o]}}return null},Ti=\"ically\",Di=new Set([\"analyt\"+Ti,\"chem\"+Ti,\"class\"+Ti,\"clin\"+Ti,\"crit\"+Ti,\"ecolog\"+Ti,\"electr\"+Ti,\"empir\"+Ti,\"frant\"+Ti,\"grammat\"+Ti,\"ident\"+Ti,\"ideolog\"+Ti,\"log\"+Ti,\"mag\"+Ti,\"mathemat\"+Ti,\"mechan\"+Ti,\"med\"+Ti,\"method\"+Ti,\"method\"+Ti,\"mus\"+Ti,\"phys\"+Ti,\"phys\"+Ti,\"polit\"+Ti,\"pract\"+Ti,\"rad\"+Ti,\"satir\"+Ti,\"statist\"+Ti,\"techn\"+Ti,\"technolog\"+Ti,\"theoret\"+Ti,\"typ\"+Ti,\"vert\"+Ti,\"whims\"+Ti]),Hi=[null,{},{ly:\"\"},{ily:\"y\",bly:\"ble\",ply:\"ple\"},{ally:\"al\",rply:\"rp\"},{ually:\"ual\",ially:\"ial\",cally:\"cal\",eally:\"eal\",rally:\"ral\",nally:\"nal\",mally:\"mal\",eeply:\"eep\",eaply:\"eap\"},{ically:\"ic\"}],Ei=new Set([\"early\",\"only\",\"hourly\",\"daily\",\"weekly\",\"monthly\",\"yearly\",\"mostly\",\"duly\",\"unduly\",\"especially\",\"undoubtedly\",\"conversely\",\"namely\",\"exceedingly\",\"presumably\",\"accordingly\",\"overly\",\"best\",\"latter\",\"little\",\"long\",\"low\"]),Gi={wholly:\"whole\",fully:\"full\",truly:\"true\",gently:\"gentle\",singly:\"single\",customarily:\"customary\",idly:\"idle\",publically:\"public\",quickly:\"quick\",superbly:\"superb\",cynically:\"cynical\",well:\"good\"},Oi=[null,{y:\"ily\"},{ly:\"ly\",ic:\"ically\"},{ial:\"ially\",ual:\"ually\",tle:\"tly\",ble:\"bly\",ple:\"ply\",ary:\"arily\"},{},{},{}],Fi={cool:\"cooly\",whole:\"wholly\",full:\"fully\",good:\"well\",idle:\"idly\",public:\"publicly\",single:\"singly\",special:\"especially\"},Vi=function(e){if(Fi.hasOwnProperty(e))return Fi[e];let t=Ii(e,Oi);return t||(t=e+\"ly\"),t};var zi={toSuperlative:ji,toComparative:xi,toAdverb:Vi,toNoun:function(e,t){const n=t.two.models.adjToNoun;return Xa(e,n)},fromAdverb:function(e){return e.endsWith(\"ly\")?Di.has(e)?e.replace(/ically/,\"ical\"):Ei.has(e)?null:Gi.hasOwnProperty(e)?Gi[e]:Ii(e,Hi)||e:null},fromSuperlative:function(e,t){const n=t.two.models.fromSuperlative;return Xa(e,n)},fromComparative:function(e,t){const n=t.two.models.fromComparative;return Xa(e,n)},all:function(e,t){let n=[e];return n.push(ji(e,t)),n.push(xi(e,t)),n.push(Vi(e)),n=n.filter((e=>e)),n=new Set(n),Array.from(n)}},Bi={noun:yi,verb:Ni,adjective:zi},Si={Singular:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.noun.toPlural(e,r);o[a]||(t[a]=t[a]||\"Plural\")},Actor:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.noun.toPlural(e,r);o[a]||(t[a]=t[a]||[\"Plural\",\"Actor\"])},Comparable:(e,t,n,r)=>{const o=r.one.lexicon,{toSuperlative:a,toComparative:i}=n.two.transform.adjective,s=a(e,r);o[s]||(t[s]=t[s]||\"Superlative\");const l=i(e,r);o[l]||(t[l]=t[l]||\"Comparative\"),t[e]=\"Adjective\"},Demonym:(e,t,n,r)=>{const o=n.two.transform.noun.toPlural(e,r);t[o]=t[o]||[\"Demonym\",\"Plural\"]},Infinitive:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.verb.conjugate(e,r);Object.entries(a).forEach((e=>{o[e[1]]||t[e[1]]||\"FutureTense\"===e[0]||(t[e[1]]=e[0])}))},PhrasalVerb:(e,t,n,r)=>{const o=r.one.lexicon;t[e]=[\"PhrasalVerb\",\"Infinitive\"];const a=r.one._multiCache,[i,s]=e.split(\" \");o[i]||(t[i]=t[i]||\"Infinitive\");const l=n.two.transform.verb.conjugate(i,r);delete l.FutureTense,Object.entries(l).forEach((e=>{if(\"Actor\"===e[0]||\"\"===e[1])return;t[e[1]]||o[e[1]]||(t[e[1]]=e[0]),a[e[1]]=2;const n=e[1]+\" \"+s;t[n]=t[n]||[e[0],\"PhrasalVerb\"]}))},Multiple:(e,t)=>{t[e]=[\"Multiple\",\"Cardinal\"],t[e+\"th\"]=[\"Multiple\",\"Ordinal\"],t[e+\"ths\"]=[\"Multiple\",\"Fraction\"]},Cardinal:(e,t)=>{t[e]=[\"TextValue\",\"Cardinal\"]},Ordinal:(e,t)=>{t[e]=[\"TextValue\",\"Ordinal\"],t[e+\"s\"]=[\"TextValue\",\"Fraction\"]},Place:(e,t)=>{t[e]=[\"Place\",\"ProperNoun\"]},Region:(e,t)=>{t[e]=[\"Region\",\"ProperNoun\"]}};const $i={e:[\"mice\",\"louse\",\"antennae\",\"formulae\",\"nebulae\",\"vertebrae\",\"vitae\"],i:[\"tia\",\"octopi\",\"viri\",\"radii\",\"nuclei\",\"fungi\",\"cacti\",\"stimuli\"],n:[\"men\"],t:[\"feet\"]},Mi=new Set([\"israelis\",\"menus\",\"logos\"]),Li=[\"bus\",\"mas\",\"was\",\"ias\",\"xas\",\"vas\",\"cis\",\"lis\",\"nis\",\"ois\",\"ris\",\"sis\",\"tis\",\"xis\",\"aus\",\"cus\",\"eus\",\"fus\",\"gus\",\"ius\",\"lus\",\"nus\",\"das\",\"ous\",\"pus\",\"rus\",\"sus\",\"tus\",\"xus\",\"aos\",\"igos\",\"ados\",\"ogos\",\"'s\",\"ss\"],Ki=function(e){if(!e||e.length<=3)return!1;if(Mi.has(e))return!0;const t=e[e.length-1];return $i.hasOwnProperty(t)?$i[t].find((t=>e.endsWith(t))):\"s\"===t&&!Li.find((t=>e.endsWith(t)))};var Ji={two:{quickSplit:function(e){const t=/[,:;]/,n=[];return e.forEach((e=>{let r=0;e.forEach(((o,a)=>{t.test(o.post)&&function(e,t){const n=/^[0-9]+$/,r=e[t];if(!r)return!1;const o=new Set([\"may\",\"april\",\"august\",\"jan\"]);if(\"like\"===r.normal||o.has(r.normal))return!1;if(r.tags.has(\"Place\")||r.tags.has(\"Date\"))return!1;if(e[t-1]){const n=e[t-1];if(n.tags.has(\"Date\")||o.has(n.normal))return!1;if(n.tags.has(\"Adjective\")||r.tags.has(\"Adjective\"))return!1}const a=r.normal;return 1!==a.length&&2!==a.length&&4!==a.length||!n.test(a)}(e,a+1)&&(n.push(e.slice(r,a+1)),r=a+1)})),r<e.length&&n.push(e.slice(r,e.length))})),n},expandLexicon:function(e,t){const{methods:n,model:r}=t,o={},a={};return Object.keys(e).forEach((t=>{const i=e[t],s=(t=(t=t.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);s.length>1&&(void 0===a[s[0]]||s.length>a[s[0]])&&(a[s[0]]=s.length),!0===Si.hasOwnProperty(i)&&Si[i](t,o,n,r),o[t]=o[t]||i})),delete o[\"\"],delete o.null,delete o[\" \"],{lex:o,_multi:a}},transform:Bi,looksPlural:Ki}};const Wi={one:{lexicon:{}},two:{models:mi}},qi={\"Actor|Verb\":\"Actor\",\"Adj|Gerund\":\"Adjective\",\"Adj|Noun\":\"Adjective\",\"Adj|Past\":\"Adjective\",\"Adj|Present\":\"Adjective\",\"Noun|Verb\":\"Singular\",\"Noun|Gerund\":\"Gerund\",\"Person|Noun\":\"Noun\",\"Person|Date\":\"Month\",\"Person|Verb\":\"FirstName\",\"Person|Place\":\"Person\",\"Person|Adj\":\"Comparative\",\"Plural|Verb\":\"Plural\",\"Unit|Noun\":\"Noun\"},Ui=function(e,t){const n={model:t,methods:Ji},{lex:r,_multi:o}=Ji.two.expandLexicon(e,n);return Object.assign(t.one.lexicon,r),Object.assign(t.one._multiCache,o),t},Ri=function(e,t,n){const r=Ci(e,Wi);t[r.PastTense]=t[r.PastTense]||\"PastTense\",t[r.Gerund]=t[r.Gerund]||\"Gerund\",!0===n&&(t[r.PresentTense]=t[r.PresentTense]||\"PresentTense\")},Qi=function(e,t,n){const r=ji(e,n);t[r]=t[r]||\"Superlative\";const o=xi(e,n);t[o]=t[o]||\"Comparative\"},Zi=function(e,t){const n={},r=t.one.lexicon;return Object.keys(e).forEach((o=>{const a=e[o];if(n[o]=qi[a],\"Noun|Verb\"!==a&&\"Person|Verb\"!==a&&\"Actor|Verb\"!==a||Ri(o,r,!1),\"Adj|Present\"===a&&(Ri(o,r,!0),Qi(o,r,t)),\"Person|Adj\"===a&&Qi(o,r,t),\"Adj|Gerund\"===a||\"Noun|Gerund\"===a){const e=Ai(o,Wi,\"Gerund\");r[e]||(n[e]=\"Infinitive\")}if(\"Noun|Gerund\"!==a&&\"Adj|Noun\"!==a&&\"Person|Noun\"!==a||function(e,t,n){const r=Ao(e,n);t[r]=t[r]||\"Plural\"}(o,r,t),\"Adj|Past\"===a){const e=Ai(o,Wi,\"PastTense\");r[e]||(n[e]=\"Infinitive\")}})),t=Ui(n,t)};let _i={one:{_multiCache:{},lexicon:No,frozenLex:{\"20th century fox\":\"Organization\",\"7 eleven\":\"Organization\",\"motel 6\":\"Organization\",\"excuse me\":\"Expression\",\"financial times\":\"Organization\",\"guns n roses\":\"Organization\",\"la z boy\":\"Organization\",\"labour party\":\"Organization\",\"new kids on the block\":\"Organization\",\"new york times\":\"Organization\",\"the guess who\":\"Organization\",\"thin lizzy\":\"Organization\",\"prime minister\":\"Actor\",\"free market\":\"Singular\",\"lay up\":\"Singular\",\"living room\":\"Singular\",\"living rooms\":\"Plural\",\"spin off\":\"Singular\",\"appeal court\":\"Uncountable\",\"cold war\":\"Uncountable\",\"gene pool\":\"Uncountable\",\"machine learning\":\"Uncountable\",\"nail polish\":\"Uncountable\",\"time off\":\"Uncountable\",\"take part\":\"Infinitive\",\"bill gates\":\"Person\",\"doctor who\":\"Person\",\"dr who\":\"Person\",\"he man\":\"Person\",\"iron man\":\"Person\",\"kid cudi\":\"Person\",\"run dmc\":\"Person\",\"rush limbaugh\":\"Person\",\"snow white\":\"Person\",\"tiger woods\":\"Person\",\"brand new\":\"Adjective\",\"en route\":\"Adjective\",\"left wing\":\"Adjective\",\"off guard\":\"Adjective\",\"on board\":\"Adjective\",\"part time\":\"Adjective\",\"right wing\":\"Adjective\",\"so called\":\"Adjective\",\"spot on\":\"Adjective\",\"straight forward\":\"Adjective\",\"super duper\":\"Adjective\",\"tip top\":\"Adjective\",\"top notch\":\"Adjective\",\"up to date\":\"Adjective\",\"win win\":\"Adjective\",\"brooklyn nets\":\"SportsTeam\",\"chicago bears\":\"SportsTeam\",\"houston astros\":\"SportsTeam\",\"houston dynamo\":\"SportsTeam\",\"houston rockets\":\"SportsTeam\",\"houston texans\":\"SportsTeam\",\"minnesota twins\":\"SportsTeam\",\"orlando magic\":\"SportsTeam\",\"san antonio spurs\":\"SportsTeam\",\"san diego chargers\":\"SportsTeam\",\"san diego padres\":\"SportsTeam\",\"iron maiden\":\"ProperNoun\",\"isle of man\":\"Country\",\"united states\":\"Country\",\"united states of america\":\"Country\",\"prince edward island\":\"Region\",\"cedar breaks\":\"Place\",\"cedar falls\":\"Place\",\"point blank\":\"Adverb\",\"tiny bit\":\"Adverb\",\"by the time\":\"Conjunction\",\"no matter\":\"Conjunction\",\"civil wars\":\"Plural\",\"credit cards\":\"Plural\",\"default rates\":\"Plural\",\"free markets\":\"Plural\",\"head starts\":\"Plural\",\"home runs\":\"Plural\",\"lay ups\":\"Plural\",\"phone calls\":\"Plural\",\"press releases\":\"Plural\",\"record labels\":\"Plural\",\"soft serves\":\"Plural\",\"student loans\":\"Plural\",\"tax returns\":\"Plural\",\"tv shows\":\"Plural\",\"video games\":\"Plural\",\"took part\":\"PastTense\",\"takes part\":\"PresentTense\",\"taking part\":\"Gerund\",\"taken part\":\"Participle\",\"light bulb\":\"Noun\",\"rush hour\":\"Noun\",\"fluid ounce\":\"Unit\",\"the rolling stones\":\"Organization\"}},two:{irregularPlurals:ho,models:mi,suffixPatterns:ja,prefixPatterns:Da,endsWith:La,neighbours:Wa,regexNormal:[[/^[\\w.]+@[\\w.]+\\.[a-z]{2,3}$/,\"Email\"],[/^(https?:\\/\\/|www\\.)+\\w+\\.[a-z]{2,3}/,\"Url\",\"http..\"],[/^[a-z0-9./].+\\.(com|net|gov|org|ly|edu|info|biz|dev|ru|jp|de|in|uk|br|io|ai)/,\"Url\",\".com\"],[/^[PMCE]ST$/,\"Timezone\",\"EST\"],[/^ma?c'[a-z]{3}/,\"LastName\",\"mc'neil\"],[/^o'[a-z]{3}/,\"LastName\",\"o'connor\"],[/^ma?cd[aeiou][a-z]{3}/,\"LastName\",\"mcdonald\"],[/^(lol)+[sz]$/,\"Expression\",\"lol\"],[/^wo{2,}a*h?$/,\"Expression\",\"wooah\"],[/^(hee?){2,}h?$/,\"Expression\",\"hehe\"],[/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/,\"Verb\",\"un-vite\"],[/^(m|k|cm|km)\\/(s|h|hr)$/,\"Unit\",\"5 k/m\"],[/^(ug|ng|mg)\\/(l|m3|ft3)$/,\"Unit\",\"ug/L\"],[/[^:/]\\/\\p{Letter}/u,\"SlashedTerm\",\"love/hate\"]],regexText:[[/^#[\\p{Number}_]*\\p{Letter}/u,\"HashTag\"],[/^@\\w{2,}$/,\"AtMention\"],[/^([A-Z]\\.){2}[A-Z]?/i,[\"Acronym\",\"Noun\"],\"F.B.I\"],[/.{3}[lkmnp]in['‘’‛‵′`´]$/,\"Gerund\",\"chillin'\"],[/.{4}s['‘’‛‵′`´]$/,\"Possessive\",\"flanders'\"],[/^[\\p{Emoji_Presentation}\\p{Extended_Pictographic}]/u,\"Emoji\",\"emoji-class\"]],regexNumbers:[[/^@1?[0-9](am|pm)$/i,\"Time\",\"3pm\"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,\"Time\",\"3:30pm\"],[/^'[0-9]{2}$/,\"Year\"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,\"Time\",\"3:12:31\"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,\"Time\",\"1:12pm\"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,\"Time\",\"1:12:31pm\"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,\"Date\",\"iso-date\"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,\"Date\",\"iso-dash\"],[/^[0-9]{1,4}\\/[0-9]{1,2}\\/([0-9]{4}|[0-9]{2})$/,\"Date\",\"iso-slash\"],[/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/,\"Date\",\"iso-dot\"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,\"Date\",\"12-dec-2019\"],[/^utc ?[+-]?[0-9]+$/,\"Timezone\",\"utc-9\"],[/^(gmt|utc)[+-][0-9]{1,2}$/i,\"Timezone\",\"gmt-3\"],[/^[0-9]{3}-[0-9]{4}$/,\"PhoneNumber\",\"421-0029\"],[/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,\"PhoneNumber\",\"1-800-\"],[/^[-+]?\\p{Currency_Symbol}[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?([kmb]|bn)?\\+?$/u,[\"Money\",\"Value\"],\"$5.30\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\p{Currency_Symbol}\\+?$/u,[\"Money\",\"Value\"],\"5.30£\"],[/^[-+]?[$£]?[0-9]([0-9,.])+(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,[\"Money\",\"Value\"],\"$400usd\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/,[\"Cardinal\",\"NumericValue\"],\"5,999\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/,[\"Ordinal\",\"NumericValue\"],\"53rd\"],[/^\\.[0-9]+\\+?$/,[\"Cardinal\",\"NumericValue\"],\".73th\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/,[\"Percent\",\"Cardinal\",\"NumericValue\"],\"-4%\"],[/^\\.[0-9]+%$/,[\"Percent\",\"Cardinal\",\"NumericValue\"],\".3%\"],[/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/,[\"Fraction\",\"NumericValue\"],\"2/3rds\"],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,[\"Value\",\"NumberRange\"],\"3-4\"],[/^[0-9]{1,2}(:[0-9][0-9])?(am|pm)? ?[-–—] ?[0-9]{1,2}(:[0-9][0-9])?(am|pm)$/,[\"Time\",\"NumberRange\"],\"3-4pm\"],[/^[0-9.]+([a-z°]{1,4})$/,\"NumericValue\",\"9km\"]],switches:jo,clues:ca,uncountable:{},orgWords:pi,placeWords:fi}};_i=function(e){return e=function(e,t){return Object.keys(e).forEach((n=>{\"Uncountable\"===e[n]&&(t.two.uncountable[n]=!0,e[n]=\"Uncountable\")})),t}((e=Ui(e.one.lexicon,e)).one.lexicon,e),e=function(e){const{irregularPlurals:t}=e.two,{lexicon:n}=e.one;return Object.entries(t).forEach((e=>{n[e[0]]=n[e[0]]||\"Singular\",n[e[1]]=n[e[1]]||\"Plural\"})),e}(e=Zi(e.two.switches,e)),e}(_i);const Xi=function(e,t,n,r){const o=r.methods.one.setTag;\"-\"===e[t].post&&e[t+1]&&o([e[t],e[t+1]],\"Hyphenated\",r,null,\"1-punct-hyphen''\")},Yi=/^(under|over|mis|re|un|dis|semi)-?/,es=function(e,t,n){const r=n.two.switches,o=e[t];if(r.hasOwnProperty(o.normal))o.switch=r[o.normal];else if(Yi.test(o.normal)){const e=o.normal.replace(Yi,\"\");e.length>3&&r.hasOwnProperty(e)&&(o.switch=r[e])}},ts=function(e,t,n){if(!t||0===t.length)return;if(!0===e.frozen)return;const r=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};r&&r.DEBUG_TAGS&&((e,t,n=\"\")=>{const r=e.text||\"[\"+e.implicit+\"]\";var o;\"string\"!=typeof t&&t.length>2&&(t=t.slice(0,2).join(\", #\")+\" +\"),t=\"string\"!=typeof t?t.join(\", #\"):t,console.log(` ${(o=r,\"\u001b[33m\u001b[3m\"+o+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${t.padEnd(22)}  ${(e=>\"\u001b[3m\"+e+\"\u001b[0m\")(n)}`)})(e,t,n),e.tags=e.tags||new Set,\"string\"==typeof t?e.tags.add(t):t.forEach((t=>e.tags.add(t)))},ns=[\"Acronym\",\"Abbreviation\",\"ProperNoun\",\"Uncountable\",\"Possessive\",\"Pronoun\",\"Activity\",\"Honorific\",\"Month\"],rs=function(e,t,n){const r=e[t],o=Array.from(r.tags);for(let e=0;e<o.length;e+=1)if(n.one.tagSet[o[e]]){const t=n.one.tagSet[o[e]].parents;ts(r,t,` -inferred by #${o[e]}`)}!function(e){!e.tags.has(\"Noun\")||e.tags.has(\"Plural\")||e.tags.has(\"Singular\")||ns.find((t=>e.tags.has(t)))||(Ki(e.normal)?ts(e,\"Plural\",\"3-plural-guess\"):ts(e,\"Singular\",\"3-singular-guess\"))}(r),function(e){const t=e.tags;if(t.has(\"Verb\")&&1===t.size){const t=ki(e.normal);t&&ts(e,t,\"3-verb-tense-guess\")}}(r)},os=/^\\p{Lu}[\\p{Ll}'’]/u,as=/[0-9]/,is=[\"Date\",\"Month\",\"WeekDay\",\"Unit\",\"Expression\"],ss=/[IVX]/,ls=/^[IVXLCDM]{2,}$/,us=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,cs={li:!0,dc:!0,md:!0,dm:!0,ml:!0},hs=function(e,t,n){const r=e[t];r.index=r.index||[0,0];const o=r.index[1],a=r.text||\"\";return 0!==o&&!0===os.test(a)&&!1===as.test(a)?is.find((e=>r.tags.has(e)))||r.pre.match(/[\"']$/)||\"the\"===r.normal?null:(rs(e,t,n),r.tags.has(\"Noun\")||r.frozen||r.tags.clear(),ts(r,\"ProperNoun\",\"2-titlecase\"),!0):a.length>=2&&ls.test(a)&&ss.test(a)&&us.test(a)&&!cs[r.normal]?(ts(r,\"RomanNumeral\",\"2-xvii\"),!0):null},ds=function(e=\"\",t=[]){const n=e.length;let r=7;n<=r&&(r=n-1);for(let o=r;o>1;o-=1){const r=e.substring(n-o,n);if(!0===t[r.length].hasOwnProperty(r)){return t[r.length][r]}}return null},gs=function(e,t,n){const r=e[t];if(0===r.tags.size){let e=ds(r.normal,n.two.suffixPatterns);if(null!==e)return ts(r,e,\"2-suffix\"),r.confidence=.7,!0;if(r.implicit&&(e=ds(r.implicit,n.two.suffixPatterns),null!==e))return ts(r,e,\"2-implicit-suffix\"),r.confidence=.7,!0}return null},ms=/['‘’‛‵′`´]/,ps=function(e,t){for(let n=0;n<t.length;n+=1)if(!0===t[n][0].test(e))return t[n];return null},fs=function(e,t,n,r){const o=r.methods.one.setTag,{regexText:a,regexNormal:i,regexNumbers:s,endsWith:l}=n.two,u=e[t],c=u.machine||u.normal;let h=u.text;ms.test(u.post)&&!ms.test(u.pre)&&(h+=u.post.trim());let d=ps(h,a)||ps(c,i);return!d&&/[0-9]/.test(c)&&(d=ps(c,s)),d||0!==u.tags.size||(d=function(e=\"\",t){const n=e[e.length-1];if(!0===t.hasOwnProperty(n)){const r=t[n]||[];for(let t=0;t<r.length;t+=1)if(!0===r[t][0].test(e))return r[t]}return null}(c,l)),d?(o([u],d[1],r,null,`2-regex-'${d[2]||d[0]}'`),u.confidence=.6,!0):null},bs=function(e,t,n){const r=e[t];if(0===r.tags.size){const e=function(e=\"\",t=[]){const n=e.length;let r=7;r>n-3&&(r=n-3);for(let n=r;n>2;n-=1){const r=e.substring(0,n);if(!0===t[r.length].hasOwnProperty(r))return t[r.length][r]}return null}(r.normal,n.two.prefixPatterns);if(null!==e)return ts(r,e,\"2-prefix\"),r.confidence=.5,!0}return null},vs=new Set([\"in\",\"on\",\"by\",\"until\",\"for\",\"to\",\"during\",\"throughout\",\"through\",\"within\",\"before\",\"after\",\"of\",\"this\",\"next\",\"last\",\"circa\",\"around\",\"post\",\"pre\",\"budget\",\"classic\",\"plan\",\"may\"]),ys=function(e){if(!e)return!1;const t=e.normal||e.implicit;return!!vs.has(t)||(!!(e.tags.has(\"Date\")||e.tags.has(\"Month\")||e.tags.has(\"WeekDay\")||e.tags.has(\"Year\"))||!!e.tags.has(\"ProperNoun\"))},ws=function(e){return!!e&&(!!e.tags.has(\"Ordinal\")||(!!(e.tags.has(\"Cardinal\")&&e.normal.length<3)||(\"is\"===e.normal||\"was\"===e.normal)))},ks=function(e){return e&&(e.tags.has(\"Date\")||e.tags.has(\"Month\")||e.tags.has(\"WeekDay\")||e.tags.has(\"Year\"))},Ps=function(e,t){const n=e[t];if(n.tags.has(\"NumericValue\")&&n.tags.has(\"Cardinal\")&&4===n.normal.length){const r=Number(n.normal);if(r&&!isNaN(r)&&r>1400&&r<2100){const o=e[t-1],a=e[t+1];if(ys(o)||ys(a))return ts(n,\"Year\",\"2-tagYear\");if(r>=1920&&r<2025){if(ws(o)||ws(a))return ts(n,\"Year\",\"2-tagYear-close\");if(ks(e[t-2])||ks(e[t+2]))return ts(n,\"Year\",\"2-tagYear-far\");if(o&&(o.tags.has(\"Determiner\")||o.tags.has(\"Possessive\"))&&a&&a.tags.has(\"Noun\")&&!a.tags.has(\"Plural\"))return ts(n,\"Year\",\"2-tagYear-noun\")}}}return null},As=function(e,t,n,r){const o=r.methods.one.setTag,a=e[t],i=[\"PastTense\",\"PresentTense\",\"Auxiliary\",\"Modal\",\"Particle\"];if(a.tags.has(\"Verb\")){i.find((e=>a.tags.has(e)))||o([a],\"Infinitive\",r,null,\"2-verb-type''\")}},Cs=/^[A-Z]('s|,)?$/,Ns=/^[A-Z-]+$/,js=/^[A-Z]+s$/,xs=/([A-Z]\\.)+[A-Z]?,?$/,Is=/[A-Z]{2,}('s|,)?$/,Ts=/([a-z]\\.)+[a-z]\\.?$/,Ds={I:!0,A:!0},Hs={la:!0,ny:!0,us:!0,dc:!0,gb:!0},Es=function(e,t,n){const r=e[t];return r.tags.has(\"RomanNumeral\")||r.tags.has(\"Acronym\")||r.frozen?null:function(e,t){let n=e.text;if(!1===Ns.test(n)){if(!(n.length>3&&!0===js.test(n)))return!1;n=n.replace(/s$/,\"\")}return!(n.length>5||Ds.hasOwnProperty(n)||t.one.lexicon.hasOwnProperty(e.normal)||!0!==xs.test(n)&&!0!==Ts.test(n)&&!0!==Cs.test(n)&&!0!==Is.test(n))}(r,n)?(r.tags.clear(),ts(r,[\"Acronym\",\"Noun\"],\"3-no-period-acronym\"),!0===Hs[r.normal]&&ts(r,\"Place\",\"3-place-acronym\"),!0===js.test(r.text)&&ts(r,\"Plural\",\"3-plural-acronym\"),!0):!Ds.hasOwnProperty(r.text)&&Cs.test(r.text)?(r.tags.clear(),ts(r,[\"Acronym\",\"Noun\"],\"3-one-letter-acronym\"),!0):r.tags.has(\"Organization\")&&r.text.length<=3?(ts(r,\"Acronym\",\"3-org-acronym\"),!0):r.tags.has(\"Organization\")&&Ns.test(r.text)&&r.text.length<=6?(ts(r,\"Acronym\",\"3-titlecase-acronym\"),!0):null},Gs=function(e,t){if(!e)return null;const n=t.find((t=>e.normal===t[0]));return n?n[1]:null},Os=function(e,t){if(!e)return null;const n=t.find((t=>e.tags.has(t[0])));return n?n[1]:null},Fs=function(e,t,n){const{leftTags:r,leftWords:o,rightWords:a,rightTags:i}=n.two.neighbours,s=e[t];if(0===s.tags.size){let l=null;if(l=l||Gs(e[t-1],o),l=l||Gs(e[t+1],a),l=l||Os(e[t-1],r),l=l||Os(e[t+1],i),l)return ts(s,l,\"3-[neighbour]\"),rs(e,t,n),e[t].confidence=.2,!0}return null},Vs=function(e,t,n){return!!e&&(!e.tags.has(\"FirstName\")&&!e.tags.has(\"Place\")&&(!!(e.tags.has(\"ProperNoun\")||e.tags.has(\"Organization\")||e.tags.has(\"Acronym\"))||!(n||(r=e.text,!/^\\p{Lu}[\\p{Ll}'’]/u.test(r)))&&(0!==t||e.tags.has(\"Singular\"))));var r},zs=function(e,t,n,r){const o=n.model.two.orgWords,a=n.methods.one.setTag,i=e[t];if(!0===o[i.machine||i.normal]&&Vs(e[t-1],t-1,r)){a([e[t]],\"Organization\",n,null,\"3-[org-word]\");for(let o=t;o>=0&&Vs(e[o],o,r);o-=1)a([e[o]],\"Organization\",n,null,\"3-[org-word]\")}return null},Bs=/'s$/,Ss=new Set([\"athletic\",\"city\",\"community\",\"eastern\",\"federal\",\"financial\",\"great\",\"historic\",\"historical\",\"local\",\"memorial\",\"municipal\",\"national\",\"northern\",\"provincial\",\"southern\",\"state\",\"western\",\"spring\",\"pine\",\"sunset\",\"view\",\"oak\",\"maple\",\"spruce\",\"cedar\",\"willow\"]),$s=new Set([\"center\",\"centre\",\"way\",\"range\",\"bar\",\"bridge\",\"field\",\"pit\"]),Ms=function(e,t,n){if(!e)return!1;const r=e.tags;return!(r.has(\"Organization\")||r.has(\"Possessive\")||Bs.test(e.normal))&&(!(!r.has(\"ProperNoun\")&&!r.has(\"Place\"))||!(n||(o=e.text,!/^\\p{Lu}[\\p{Ll}'’]/u.test(o)))&&(0!==t||r.has(\"Singular\")));var o},Ls=function(e,t,n,r){const o=n.model.two.placeWords,a=n.methods.one.setTag,i=e[t],s=i.machine||i.normal;if(!0===o[s]){for(let o=t-1;o>=0;o-=1)if(!Ss.has(e[o].normal)){if(!Ms(e[o],o,r))break;a(e.slice(o,t+1),\"Place\",n,null,\"3-[place-of-foo]\")}if($s.has(s))return!1;for(let o=t+1;o<e.length;o+=1){if(Ms(e[o],o,r))return a(e.slice(t,o+1),\"Place\",n,null,\"3-[foo-place]\"),!0;if(\"of\"!==e[o].normal&&!Ss.has(e[o].normal))break}}return null},Ks=function(e,t,n){let r=!1;const o=e[t].tags;(0===o.size||1===o.size&&(o.has(\"Hyphenated\")||o.has(\"HashTag\")||o.has(\"Prefix\")||o.has(\"SlashedTerm\")))&&(r=!0),r&&(ts(e[t],\"Noun\",\"3-[fallback]\"),rs(e,t,n),e[t].confidence=.1)},Js=/^[A-Z][a-z]/,Ws=(e,t)=>e[t].tags.has(\"ProperNoun\")&&Js.test(e[t].text)?\"Noun\":null,qs=(e,t,n)=>0!==t||e[1]?null:n,Us={\"Adj|Gerund\":(e,t)=>Ws(e,t),\"Adj|Noun\":(e,t)=>Ws(e,t)||function(e,t){return!e[t+1]&&e[t-1]&&e[t-1].tags.has(\"Determiner\")?\"Noun\":null}(e,t),\"Actor|Verb\":(e,t)=>Ws(e,t),\"Adj|Past\":(e,t)=>Ws(e,t),\"Adj|Present\":(e,t)=>Ws(e,t),\"Noun|Gerund\":(e,t)=>Ws(e,t),\"Noun|Verb\":(e,t)=>t>0&&Ws(e,t)||qs(e,t,\"Infinitive\"),\"Plural|Verb\":(e,t)=>Ws(e,t)||qs(e,t,\"PresentTense\")||function(e,t,n){return 0===t&&e.length>3?n:null}(e,t,\"Plural\"),\"Person|Noun\":(e,t)=>Ws(e,t),\"Person|Verb\":(e,t)=>0!==t?Ws(e,t):null,\"Person|Adj\":(e,t)=>0===t&&e.length>1||Ws(e,t)?\"Person\":null},Rs=\"undefined\"!=typeof process&&process.env?process.env:self.env||{},Qs=/^(under|over|mis|re|un|dis|semi)-?/,Zs=(e,t)=>{if(!e||!t)return null;const n=e.normal||e.implicit;let r=null;return t.hasOwnProperty(n)&&(r=t[n]),r&&Rs.DEBUG_TAGS&&console.log(`\\n  \u001b[2m\u001b[3m     ↓ - '${n}' \u001b[0m`),r},_s=(e,t={},n)=>{if(!e||!t)return null;const r=Array.from(e.tags).sort(((e,t)=>(n[e]?n[e].parents.length:0)>(n[t]?n[t].parents.length:0)?-1:1));let o=r.find((e=>t[e]));return o&&Rs.DEBUG_TAGS&&console.log(`  \u001b[2m\u001b[3m      ↓ - '${e.normal||e.implicit}' (#${o})  \u001b[0m`),o=t[o],o},Xs=function(e,t,n){const r=n.model,o=n.methods.one.setTag,{switches:a,clues:i}=r.two,s=e[t];let l=s.normal||s.implicit||\"\";if(Qs.test(l)&&!a[l]&&(l=l.replace(Qs,\"\")),s.switch){const a=s.switch;if(s.tags.has(\"Acronym\")||s.tags.has(\"PhrasalVerb\"))return;let u=function(e,t,n,r){if(!n)return null;const o=\"also\"!==e[t-1]?.text?t-1:Math.max(0,t-2),a=r.one.tagSet;let i=Zs(e[t+1],n.afterWords);return i=i||Zs(e[o],n.beforeWords),i=i||_s(e[o],n.beforeTags,a),i=i||_s(e[t+1],n.afterTags,a),i}(e,t,i[a],r);Us[a]&&(u=Us[a](e,t)||u),u?(o([s],u,n,null,`3-[switch] (${a})`),rs(e,t,r)):Rs.DEBUG_TAGS&&console.log(`\\n -> X  - '${l}'  : (${a})  `)}},Ys={there:!0,this:!0,it:!0,him:!0,her:!0,us:!0},el=function(e){if(e.filter((e=>!e.tags.has(\"ProperNoun\"))).length<=3)return!1;const t=/^[a-z]/;return e.every((e=>!t.test(e.text)))},tl=function(e,t,n,r){for(let o=0;o<e.length;o+=1)!0!==e[o].frozen&&(es(e,o,t),!1===r&&hs(e,o,t),gs(e,o,t),fs(e,o,t,n),bs(e,o,t),Ps(e,o))},nl=function(e,t,n,r){for(let n=0;n<e.length;n+=1){let r=Es(e,n,t);rs(e,n,t),r=r||Fs(e,n,t),r=r||Ks(e,n,t)}for(let t=0;t<e.length;t+=1)!0!==e[t].frozen&&(zs(e,t,n,r),Ls(e,t,n,r),Xs(e,t,n),As(e,t,0,n),Xi(e,t,0,n));!function(e,t){const n=t.methods.one.setTag,r=t.model.one._multiCache||{},o=e[0];if((\"Noun|Verb\"===o.switch||o.tags.has(\"Infinitive\"))&&e.length>=2){if(e.length<4&&!Ys[e[1].normal])return;if(!o.tags.has(\"PhrasalVerb\")&&r.hasOwnProperty(o.normal))return;(e[1].tags.has(\"Noun\")||e[1].tags.has(\"Determiner\"))&&(e.slice(1,3).some((e=>e.tags.has(\"Verb\")))&&!o.tags.has(\"#PhrasalVerb\")||n([o],\"Imperative\",t,null,\"3-[imperative]\"))}}(e,n)},rl={Possessive:e=>{let t=e.machine||e.normal||e.text;return t=t.replace(/'s$/,\"\"),t},Plural:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.noun.toSingular(n,t.model)},Copula:()=>\"is\",PastTense:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,\"PastTense\")},Gerund:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,\"Gerund\")},PresentTense:(e,t)=>{const n=e.machine||e.normal||e.text;return e.tags.has(\"Infinitive\")?n:t.methods.two.transform.verb.toInfinitive(n,t.model,\"PresentTense\")},Comparative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromComparative(n,t.model)},Superlative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromSuperlative(n,t.model)},Adverb:(e,t)=>{const{fromAdverb:n}=t.methods.two.transform.adjective;return n(e.machine||e.normal||e.text)}},ol={Adverb:\"RB\",Comparative:\"JJR\",Superlative:\"JJS\",Adjective:\"JJ\",TO:\"Conjunction\",Modal:\"MD\",Auxiliary:\"MD\",Gerund:\"VBG\",PastTense:\"VBD\",Participle:\"VBN\",PresentTense:\"VBZ\",Infinitive:\"VB\",Particle:\"RP\",Verb:\"VB\",Pronoun:\"PRP\",Cardinal:\"CD\",Conjunction:\"CC\",Determiner:\"DT\",Preposition:\"IN\",QuestionWord:\"WP\",Expression:\"UH\",Possessive:\"POS\",ProperNoun:\"NNP\",Person:\"NNP\",Place:\"NNP\",Organization:\"NNP\",Singular:\"NN\",Plural:\"NNS\",Noun:\"NN\",There:\"EX\"};var al={preTagger:function(e){const{methods:t,model:n,world:r}=e,o=e.docs;!function(e,t,n){e.forEach((e=>{!function(e,t,n,r){const o=r.methods.one.setTag;if(e.length>=3){const t=/:/;if(e[0].post.match(t)){const t=e[1];if(t.tags.has(\"Value\")||t.tags.has(\"Email\")||t.tags.has(\"PhoneNumber\"))return;o([e[0]],\"Expression\",r,null,\"2-punct-colon''\")}}}(e,0,0,n)}))}(o,0,r);const a=t.two.quickSplit(o);for(let e=0;e<a.length;e+=1){const t=a[e],o=el(t);tl(t,n,r,o),nl(t,n,r,o)}return a},root:function(e){const t=e.world,n=Object.keys(rl);e.docs.forEach((e=>{for(let r=0;r<e.length;r+=1){const o=e[r];for(let e=0;e<n.length;e+=1)if(o.tags.has(n[e])){const r=(0,rl[n[e]])(o,t);o.normal!==r&&(o.root=r);break}}}))},penn:function(e){e.compute(\"tagRank\"),e.docs.forEach((e=>{e.forEach((e=>{e.penn=function(e){if(e.tags.has(\"ProperNoun\")&&e.tags.has(\"Plural\"))return\"NNPS\";if(e.tags.has(\"Possessive\")&&e.tags.has(\"Pronoun\"))return\"PRP$\";if(\"there\"===e.normal)return\"EX\";if(\"to\"===e.normal)return\"TO\";const t=e.tagRank||[];for(let e=0;e<t.length;e+=1)if(ol.hasOwnProperty(t[e]))return ol[t[e]];return null}(e)}))}))}};const il=[\"Person\",\"Place\",\"Organization\"];var sl={Noun:{not:[\"Verb\",\"Adjective\",\"Adverb\",\"Value\",\"Determiner\"]},Singular:{is:\"Noun\",not:[\"Plural\",\"Uncountable\"]},ProperNoun:{is:\"Noun\"},Person:{is:\"Singular\",also:[\"ProperNoun\"],not:[\"Place\",\"Organization\",\"Date\"]},FirstName:{is:\"Person\"},MaleName:{is:\"FirstName\",not:[\"FemaleName\",\"LastName\"]},FemaleName:{is:\"FirstName\",not:[\"MaleName\",\"LastName\"]},LastName:{is:\"Person\",not:[\"FirstName\"]},Honorific:{is:\"Person\",not:[\"FirstName\",\"LastName\",\"Value\"]},Place:{is:\"Singular\",not:[\"Person\",\"Organization\"]},Country:{is:\"Place\",also:[\"ProperNoun\"],not:[\"City\"]},City:{is:\"Place\",also:[\"ProperNoun\"],not:[\"Country\"]},Region:{is:\"Place\",also:[\"ProperNoun\"]},Address:{},Organization:{is:\"ProperNoun\",not:[\"Person\",\"Place\"]},SportsTeam:{is:\"Organization\"},School:{is:\"Organization\"},Company:{is:\"Organization\"},Plural:{is:\"Noun\",not:[\"Singular\",\"Uncountable\"]},Uncountable:{is:\"Noun\"},Pronoun:{is:\"Noun\",not:il},Actor:{is:\"Noun\",not:[\"Place\",\"Organization\"]},Activity:{is:\"Noun\",not:[\"Person\",\"Place\"]},Unit:{is:\"Noun\",not:il},Demonym:{is:\"Noun\",also:[\"ProperNoun\"],not:il},Possessive:{is:\"Noun\"},Reflexive:{is:\"Pronoun\"}};var ll={Adjective:{not:[\"Noun\",\"Verb\",\"Adverb\",\"Value\"]},Comparable:{is:\"Adjective\"},Comparative:{is:\"Adjective\"},Superlative:{is:\"Adjective\",not:[\"Comparative\"]},NumberRange:{},Adverb:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Value\"]},Determiner:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"QuestionWord\",\"Conjunction\"]},Conjunction:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"Value\",\"QuestionWord\"]},Preposition:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"QuestionWord\",\"Determiner\"]},QuestionWord:{not:[\"Determiner\"]},Currency:{is:\"Noun\"},Expression:{not:[\"Noun\",\"Adjective\",\"Verb\",\"Adverb\"]},Abbreviation:{},Url:{not:[\"HashTag\",\"PhoneNumber\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"Email\",\"SlashedTerm\"]},PhoneNumber:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"Email\"]},HashTag:{},AtMention:{is:\"Noun\",not:[\"HashTag\",\"Email\"]},Emoji:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\"]},Emoticon:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"SlashedTerm\"]},SlashedTerm:{not:[\"Emoticon\",\"Url\",\"Value\"]},Email:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\"]},Acronym:{not:[\"Plural\",\"RomanNumeral\",\"Pronoun\",\"Date\"]},Negative:{not:[\"Noun\",\"Adjective\",\"Value\",\"Expression\"]},Condition:{not:[\"Verb\",\"Adjective\",\"Noun\",\"Value\"]},There:{not:[\"Verb\",\"Adjective\",\"Noun\",\"Value\",\"Conjunction\",\"Preposition\"]},Prefix:{not:[\"Abbreviation\",\"Acronym\",\"ProperNoun\"]},Hyphenated:{}};const ul=Object.assign({},sl,{Verb:{not:[\"Noun\",\"Adjective\",\"Adverb\",\"Value\",\"Expression\"]},PresentTense:{is:\"Verb\",not:[\"PastTense\",\"FutureTense\"]},Infinitive:{is:\"PresentTense\",not:[\"Gerund\"]},Imperative:{is:\"Verb\",not:[\"PastTense\",\"Gerund\",\"Copula\"]},Gerund:{is:\"PresentTense\",not:[\"Copula\"]},PastTense:{is:\"Verb\",not:[\"PresentTense\",\"Gerund\",\"FutureTense\"]},FutureTense:{is:\"Verb\",not:[\"PresentTense\",\"PastTense\"]},Copula:{is:\"Verb\"},Modal:{is:\"Verb\",not:[\"Infinitive\"]},Participle:{is:\"PastTense\"},Auxiliary:{is:\"Verb\",not:[\"PastTense\",\"PresentTense\",\"Gerund\",\"Conjunction\"]},PhrasalVerb:{is:\"Verb\"},Particle:{is:\"PhrasalVerb\",not:[\"PastTense\",\"PresentTense\",\"Copula\",\"Gerund\"]},Passive:{is:\"Verb\"}},{Value:{not:[\"Verb\",\"Adjective\",\"Adverb\"]},Ordinal:{is:\"Value\",not:[\"Cardinal\"]},Cardinal:{is:\"Value\",not:[\"Ordinal\"]},Fraction:{is:\"Value\",not:[\"Noun\"]},Multiple:{is:\"TextValue\"},RomanNumeral:{is:\"Cardinal\",not:[\"TextValue\"]},TextValue:{is:\"Value\",not:[\"NumericValue\"]},NumericValue:{is:\"Value\",not:[\"TextValue\"]},Money:{is:\"Cardinal\"},Percent:{is:\"Value\"}},{Date:{not:[\"Verb\",\"Adverb\",\"Adjective\"]},Month:{is:\"Date\",also:[\"Noun\"],not:[\"Year\",\"WeekDay\",\"Time\"]},WeekDay:{is:\"Date\",also:[\"Noun\"]},Year:{is:\"Date\",not:[\"RomanNumeral\"]},FinancialQuarter:{is:\"Date\",not:\"Fraction\"},Holiday:{is:\"Date\",also:[\"Noun\"]},Season:{is:\"Date\"},Timezone:{is:\"Date\",also:[\"Noun\"],not:[\"ProperNoun\"]},Time:{is:\"Date\",not:[\"AtMention\"]},Duration:{is:\"Date\",also:[\"Noun\"]}},ll);var cl={compute:al,methods:Ji,model:_i,tags:ul,hooks:[\"preTagger\"]};const hl=/[,)\"';:\\-–—.…]/,dl=function(e,t){if(!e.found)return;const n=e.termList();for(let e=0;e<n.length-1;e++){const t=n[e];if(hl.test(t.post))return}n[0].implicit=n[0].normal,n[0].text+=t,n[0].normal+=t,n.slice(1).forEach((e=>{e.implicit=e.normal,e.text=\"\",e.normal=\"\"}));for(let e=0;e<n.length-1;e++)n[e].post=n[e].post.replace(/ /,\"\")},gl=function(){const e=this.not(\"@hasContraction\");let t=e.match(\"(we|they|you) are\");return dl(t,\"'re\"),t=e.match(\"(he|she|they|it|we|you) will\"),dl(t,\"'ll\"),t=e.match(\"(he|she|they|it|we) is\"),dl(t,\"'s\"),t=e.match(\"#Person is\"),dl(t,\"'s\"),t=e.match(\"#Person would\"),dl(t,\"'d\"),t=e.match(\"(is|was|had|would|should|could|do|does|have|has|can) not\"),dl(t,\"n't\"),t=e.match(\"(i|we|they) have\"),dl(t,\"'ve\"),t=e.match(\"(would|should|could) have\"),dl(t,\"'ve\"),t=e.match(\"i am\"),dl(t,\"'m\"),t=e.match(\"going to\"),this},ml=/^\\p{Lu}[\\p{Ll}'’]/u,pl=function(e,t,n){const[r,o]=t;n&&0!==n.length&&(n=n.map(((e,t)=>(e.implicit=e.text,e.machine=e.text,e.pre=\"\",e.post=\"\",e.text=\"\",e.normal=\"\",e.index=[r,o+t],e))),n[0]&&(n[0].pre=e[r][o].pre,n[n.length-1].post=e[r][o].post,n[0].text=e[r][o].text,n[0].normal=e[r][o].normal),e[r].splice(o,1,...n))},fl=/'/,bl=new Set([\"been\",\"become\"]),vl=new Set([\"what\",\"how\",\"when\",\"if\",\"too\"]),yl=new Set([\"too\",\"also\",\"enough\"]),wl=function(e,t){const n=e[t].normal.split(fl)[0];if(\"let\"===n)return[n,\"us\"];if(\"there\"===n){const r=e[t+1];if(r&&r.tags.has(\"Plural\"))return[n,\"are\"]}return\"has\"===((e,t)=>{for(let n=t+1;n<e.length;n+=1){const t=e[n];if(bl.has(t.normal))return\"has\";if(vl.has(t.normal))return\"is\";if(t.tags.has(\"Gerund\"))return\"is\";if(t.tags.has(\"Determiner\"))return\"is\";if(t.tags.has(\"Adjective\"))return\"is\";if(\"Adj|Past\"===t.switch&&e[n+1]){if(yl.has(e[n+1].normal))return\"is\";if(e[n+1].tags.has(\"Preposition\"))return\"is\"}if(t.tags.has(\"PastTense\"))return e[n+1]&&\"for\"===e[n+1].normal?\"is\":\"has\"}return\"is\"})(e,t)?[n,\"has\"]:[n,\"is\"]},kl=/'/,Pl=new Set([\"better\",\"done\",\"before\",\"it\",\"had\"]),Al=new Set([\"have\",\"be\"]),Cl=function(e,t){const n=e[t].normal.split(kl)[0];return\"how\"===n||\"what\"===n?[n,\"did\"]:\"had\"===((e,t)=>{for(let n=t+1;n<e.length;n+=1){const t=e[n];if(Pl.has(t.normal))return\"had\";if(Al.has(t.normal))return\"would\";if(t.tags.has(\"PastTense\")||\"Adj|Past\"===t.switch)return\"had\";if(t.tags.has(\"PresentTense\")||t.tags.has(\"Infinitive\"))return\"would\";if(t.tags.has(\"#Determiner\"))return\"had\";if(t.tags.has(\"Adjective\"))return\"would\"}return!1})(e,t)?[n,\"had\"]:[n,\"would\"]},Nl={that:!0,there:!0,let:!0,here:!0,everywhere:!0},jl={in:!0,by:!0,for:!0},xl=new Set([\"too\",\"also\",\"enough\",\"about\"]),Il=new Set([\"is\",\"are\",\"did\",\"were\",\"could\",\"should\",\"must\",\"had\",\"have\"]),Tl=/'/,Dl=function(e,t,n,r){const o=t.update();o.document=[e];let a=n+r;n>0&&(n-=1),e[a]&&(a+=1),o.ptrs=[[0,n,a]],o.compute([\"freeze\",\"lexicon\",\"preTagger\",\"unfreeze\"]),function(e){e.forEach(((e,t)=>{e.index&&(e.index[1]=t)}))}(e)},Hl={d:(e,t)=>Cl(e,t),t:(e,t)=>function(e,t){if(\"ain't\"===e[t].normal||\"aint\"===e[t].normal){if(e[t+1]&&\"never\"===e[t+1].normal)return[\"have\"];const n=function(e,t){for(let n=t-1;n>=0;n-=1)if(e[n].tags.has(\"Noun\")||e[n].tags.has(\"Pronoun\")||e[n].tags.has(\"Plural\")||e[n].tags.has(\"Singular\"))return e[n];return null}(e,t);if(n){if(\"we\"===n.normal||\"they\"===n.normal)return[\"are\",\"not\"];if(\"i\"===n.normal)return[\"am\",\"not\"];if(n.tags&&n.tags.has(\"Plural\"))return[\"are\",\"not\"]}return[\"is\",\"not\"]}return[e[t].normal.replace(/n't/,\"\"),\"not\"]}(e,t),s:(e,t,n)=>((e,t)=>{const n=e[t];if(Nl.hasOwnProperty(n.machine||n.normal))return!1;if(n.tags.has(\"Possessive\"))return!0;if(n.tags.has(\"QuestionWord\"))return!1;if(\"he's\"===n.normal||\"she's\"===n.normal)return!1;const r=e[t+1];if(!r)return!0;if(\"it's\"===n.normal)return!!r.tags.has(\"#Noun\");if(\"Noun|Gerund\"==r.switch){const r=e[t+2];return r?!!r.tags.has(\"Copula\")||(\"on\"===r.normal||r.normal,!1):!(!n.tags.has(\"Actor\")&&!n.tags.has(\"ProperNoun\"))}if(r.tags.has(\"Verb\"))return!!r.tags.has(\"Infinitive\")||!r.tags.has(\"Gerund\")&&!!r.tags.has(\"PresentTense\");if(\"Adj|Noun\"===r.switch){const n=e[t+2];if(!n)return!1;if(Il.has(n.normal))return!0;if(xl.has(n.normal))return!1}if(r.tags.has(\"Noun\")){const e=r.machine||r.normal;return!(\"here\"===e||\"there\"===e||\"everywhere\"===e||r.tags.has(\"Possessive\")||r.tags.has(\"ProperNoun\")&&!n.tags.has(\"ProperNoun\"))}if(e[t-1]&&!0===jl[e[t-1].normal])return!0;if(r.tags.has(\"Adjective\")){const n=e[t+2];if(!n)return!1;if(n.tags.has(\"Noun\")&&!n.tags.has(\"Pronoun\")){const e=r.normal;return\"above\"!==e&&\"below\"!==e&&\"behind\"!==e}return\"Noun|Verb\"===n.switch}return!!r.tags.has(\"Value\")})(e,t)?n.methods.one.setTag([e[t]],\"Possessive\",n,null,\"2-contraction\"):wl(e,t)},El=function(e,t){const n=t.fromText(e.join(\" \"));return n.compute(\"id\"),n.docs[0]};var Gl={contractionTwo:e=>{const{world:t,document:n}=e;n.forEach(((r,o)=>{for(let a=r.length-1;a>=0;a-=1){if(r[a].implicit)continue;let i=null;!0===Tl.test(r[a].normal)&&(i=r[a].normal.split(Tl)[1]);let s=null;Hl.hasOwnProperty(i)&&(s=Hl[i](r,a,t)),s&&(s=El(s,e),pl(n,[o,a],s),Dl(n[o],e,a,s.length))}}))}},Ol={compute:Gl,api:function(e){class Contractions extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Contraction\"}expand(){return this.docs.forEach((e=>{const t=ml.test(e[0].text);e.forEach(((t,n)=>{t.text=t.implicit||\"\",delete t.implicit,n<e.length-1&&\"\"===t.post&&(t.post+=\" \"),t.dirty=!0})),t&&(e[0].text=function(e=\"\"){return e.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))}(e[0].text))})),this.compute(\"normal\"),this}}e.prototype.contractions=function(){const e=this.match(\"@hasContraction+\");return new Contractions(this.document,e.pointer)},e.prototype.contract=gl},hooks:[\"contractionTwo\"]};const Fl=\"(hard|fast|late|early|high|right|deep|close|direct)\";const Vl=\"(i|we|they)\";const zl=[].concat([{match:\"(got|were|was|is|are|am) (#PastTense|#Participle)\",tag:\"Passive\",reason:\"got-walked\"},{match:\"(was|were|is|are|am) being (#PastTense|#Participle)\",tag:\"Passive\",reason:\"was-being\"},{match:\"(had|have|has) been (#PastTense|#Participle)\",tag:\"Passive\",reason:\"had-been\"},{match:\"will be being? (#PastTense|#Participle)\",tag:\"Passive\",reason:\"will-be-cleaned\"},{match:\"#Noun [(#PastTense|#Participle)] by (the|a) #Noun\",group:0,tag:\"Passive\",reason:\"suffered-by\"}],[{match:\"[(all|both)] #Determiner #Noun\",group:0,tag:\"Noun\",reason:\"all-noun\"},{match:\"#Copula [(just|alone)]$\",group:0,tag:\"Adjective\",reason:\"not-adverb\"},{match:\"#Singular is #Adverb? [#PastTense$]\",group:0,tag:\"Adjective\",reason:\"is-filled\"},{match:\"[#PastTense] #Singular is\",group:0,tag:\"Adjective\",reason:\"smoked-poutine\"},{match:\"[#PastTense] #Plural are\",group:0,tag:\"Adjective\",reason:\"baked-onions\"},{match:\"well [#PastTense]\",group:0,tag:\"Adjective\",reason:\"well-made\"},{match:\"#Copula [fucked up?]\",group:0,tag:\"Adjective\",reason:\"swears-adjective\"},{match:\"#Singular (seems|appears) #Adverb? [#PastTense$]\",group:0,tag:\"Adjective\",reason:\"seems-filled\"},{match:\"#Copula #Adjective? [(out|in|through)]$\",group:0,tag:\"Adjective\",reason:\"still-out\"},{match:\"^[#Adjective] (the|your) #Noun\",group:0,notIf:\"(all|even)\",tag:\"Infinitive\",reason:\"shut-the\"},{match:\"the [said] #Noun\",group:0,tag:\"Adjective\",reason:\"the-said-card\"},{match:\"[#Hyphenated (#Hyphenated && #PastTense)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",notIf:\"#Adverb\",reason:\"faith-based\"},{match:\"[#Hyphenated (#Hyphenated && #Gerund)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",notIf:\"#Adverb\",reason:\"self-driving\"},{match:\"[#PastTense (#Hyphenated && #PhrasalVerb)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",reason:\"dammed-up\"},{match:\"(#Hyphenated && #Value) fold\",tag:\"Adjective\",reason:\"two-fold\"},{match:\"must (#Hyphenated && #Infinitive)\",tag:\"Adjective\",reason:\"must-win\"},{match:\"(#Hyphenated && #Infinitive) #Hyphenated\",tag:\"Adjective\",notIf:\"#PhrasalVerb\",reason:\"vacuum-sealed\"},{match:\"too much\",tag:\"Adverb Adjective\",reason:\"bit-4\"},{match:\"a bit much\",tag:\"Determiner Adverb Adjective\",reason:\"bit-3\"},{match:\"[(un|contra|extra|inter|intra|macro|micro|mid|mis|mono|multi|pre|sub|tri|ex)] #Adjective\",group:0,tag:[\"Adjective\",\"Prefix\"],reason:\"un-skilled\"}],[{match:\"#Adverb [#Adverb] (and|or|then)\",group:0,tag:\"Adjective\",reason:\"kinda-sparkly-and\"},{match:\"[(dark|bright|flat|light|soft|pale|dead|dim|faux|little|wee|sheer|most|near|good|extra|all)] #Adjective\",group:0,tag:\"Adverb\",reason:\"dark-green\"},{match:\"#Copula [far too] #Adjective\",group:0,tag:\"Adverb\",reason:\"far-too\"},{match:\"#Copula [still] (in|#Gerund|#Adjective)\",group:0,tag:\"Adverb\",reason:\"was-still-walking\"},{match:`#Plural ${Fl}`,tag:\"#PresentTense #Adverb\",reason:\"studies-hard\"},{match:`#Verb [${Fl}] !#Noun?`,group:0,notIf:\"(#Copula|get|got|getting|become|became|becoming|feel|feels|feeling|#Determiner|#Preposition)\",tag:\"Adverb\",reason:\"shops-direct\"},{match:\"[#Plural] a lot\",tag:\"PresentTense\",reason:\"studies-a-lot\"}],[{match:\"as [#Gerund] as\",group:0,tag:\"Adjective\",reason:\"as-gerund-as\"},{match:\"more [#Gerund] than\",group:0,tag:\"Adjective\",reason:\"more-gerund-than\"},{match:\"(so|very|extremely) [#Gerund]\",group:0,tag:\"Adjective\",reason:\"so-gerund\"},{match:\"(found|found) it #Adverb? [#Gerund]\",group:0,tag:\"Adjective\",reason:\"found-it-gerund\"},{match:\"a (little|bit|wee) bit? [#Gerund]\",group:0,tag:\"Adjective\",reason:\"a-bit-gerund\"},{match:\"#Gerund [#Gerund]\",group:0,tag:\"Adjective\",notIf:\"(impersonating|practicing|considering|assuming)\",reason:\"looking-annoying\"},{match:\"(looked|look|looks) #Adverb? [%Adj|Gerund%]\",group:0,tag:\"Adjective\",notIf:\"(impersonating|practicing|considering|assuming)\",reason:\"looked-amazing\"},{match:\"[%Adj|Gerund%] #Determiner\",group:0,tag:\"Gerund\",reason:\"developing-a\"},{match:\"#Possessive [%Adj|Gerund%] #Noun\",group:0,tag:\"Adjective\",reason:\"leading-manufacturer\"},{match:\"%Noun|Gerund% %Adj|Gerund%\",tag:\"Gerund #Adjective\",reason:\"meaning-alluring\"},{match:\"(face|embrace|reveal|stop|start|resume) %Adj|Gerund%\",tag:\"#PresentTense #Adjective\",reason:\"face-shocking\"},{match:\"(are|were) [%Adj|Gerund%] #Plural\",group:0,tag:\"Adjective\",reason:\"are-enduring-symbols\"}],[{match:\"#Determiner [#Adjective] #Copula\",group:0,tag:\"Noun\",reason:\"the-adj-is\"},{match:\"#Adjective [#Adjective] #Copula\",group:0,tag:\"Noun\",reason:\"adj-adj-is\"},{match:\"(his|its) [%Adj|Noun%]\",group:0,tag:\"Noun\",notIf:\"#Hyphenated\",reason:\"his-fine\"},{match:\"#Copula #Adverb? [all]\",group:0,tag:\"Noun\",reason:\"is-all\"},{match:\"(have|had) [#Adjective] #Preposition .\",group:0,tag:\"Noun\",reason:\"have-fun\"},{match:\"#Gerund (giant|capital|center|zone|application)\",tag:\"Noun\",reason:\"brewing-giant\"},{match:\"#Preposition (a|an) [#Adjective]$\",group:0,tag:\"Noun\",reason:\"an-instant\"},{match:\"no [#Adjective] #Modal\",group:0,tag:\"Noun\",reason:\"no-golden\"},{match:\"[brand #Gerund?] new\",group:0,tag:\"Adverb\",reason:\"brand-new\"},{match:\"(#Determiner|#Comparative|new|different) [kind]\",group:0,tag:\"Noun\",reason:\"some-kind\"},{match:\"#Possessive [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",reason:\"her-favourite\"},{match:\"must && #Hyphenated .\",tag:\"Adjective\",reason:\"must-win\"},{match:\"#Determiner [#Adjective]$\",tag:\"Noun\",notIf:\"(this|that|#Comparative|#Superlative)\",reason:\"the-south\"},{match:\"(#Noun && #Hyphenated) (#Adjective && #Hyphenated)\",tag:\"Adjective\",notIf:\"(this|that|#Comparative|#Superlative)\",reason:\"company-wide\"},{match:\"#Determiner [#Adjective] (#Copula|#Determiner)\",notIf:\"(#Comparative|#Superlative)\",group:0,tag:\"Noun\",reason:\"the-poor\"},{match:\"[%Adj|Noun%] #Noun\",notIf:\"(#Pronoun|#ProperNoun)\",group:0,tag:\"Adjective\",reason:\"stable-foundations\"}],[{match:\"[still] #Adjective\",group:0,tag:\"Adverb\",reason:\"still-advb\"},{match:\"[still] #Verb\",group:0,tag:\"Adverb\",reason:\"still-verb\"},{match:\"[so] #Adjective\",group:0,tag:\"Adverb\",reason:\"so-adv\"},{match:\"[way] #Comparative\",group:0,tag:\"Adverb\",reason:\"way-adj\"},{match:\"[way] #Adverb #Adjective\",group:0,tag:\"Adverb\",reason:\"way-too-adj\"},{match:\"[all] #Verb\",group:0,tag:\"Adverb\",reason:\"all-verb\"},{match:\"#Verb  [like]\",group:0,notIf:\"(#Modal|#PhrasalVerb)\",tag:\"Adverb\",reason:\"verb-like\"},{match:\"(barely|hardly) even\",tag:\"Adverb\",reason:\"barely-even\"},{match:\"[even] #Verb\",group:0,tag:\"Adverb\",reason:\"even-walk\"},{match:\"[even] #Comparative\",group:0,tag:\"Adverb\",reason:\"even-worse\"},{match:\"[even] (#Determiner|#Possessive)\",group:0,tag:\"#Adverb\",reason:\"even-the\"},{match:\"even left\",tag:\"#Adverb #Verb\",reason:\"even-left\"},{match:\"[way] #Adjective\",group:0,tag:\"#Adverb\",reason:\"way-over\"},{match:\"#PresentTense [(hard|quick|bright|slow|fast|backwards|forwards)]\",notIf:\"#Copula\",group:0,tag:\"Adverb\",reason:\"lazy-ly\"},{match:\"[much] #Adjective\",group:0,tag:\"Adverb\",reason:\"bit-1\"},{match:\"#Copula [#Adverb]$\",group:0,tag:\"Adjective\",reason:\"is-well\"},{match:\"a [(little|bit|wee) bit?] #Adjective\",group:0,tag:\"Adverb\",reason:\"a-bit-cold\"},{match:\"[(super|pretty)] #Adjective\",group:0,tag:\"Adverb\",reason:\"super-strong\"},{match:\"(become|fall|grow) #Adverb? [#PastTense]\",group:0,tag:\"Adjective\",reason:\"overly-weakened\"},{match:\"(a|an) #Adverb [#Participle] #Noun\",group:0,tag:\"Adjective\",reason:\"completely-beaten\"},{match:\"#Determiner #Adverb? [close]\",group:0,tag:\"Adjective\",reason:\"a-close\"},{match:\"#Gerund #Adverb? [close]\",group:0,tag:\"Adverb\",notIf:\"(getting|becoming|feeling)\",reason:\"being-close\"},{match:\"(the|those|these|a|an) [#Participle] #Noun\",group:0,tag:\"Adjective\",reason:\"blown-motor\"},{match:\"(#PresentTense|#PastTense) [back]\",group:0,tag:\"Adverb\",notIf:\"(#PhrasalVerb|#Copula)\",reason:\"charge-back\"},{match:\"#Verb [around]\",group:0,tag:\"Adverb\",notIf:\"#PhrasalVerb\",reason:\"send-around\"},{match:\"[later] #PresentTense\",group:0,tag:\"Adverb\",reason:\"later-say\"},{match:\"#Determiner [well] !#PastTense?\",group:0,tag:\"Noun\",reason:\"the-well\"},{match:\"#Adjective [enough]\",group:0,tag:\"Adverb\",reason:\"high-enough\"}],[{match:\"[sun] the #Ordinal\",tag:\"WeekDay\",reason:\"sun-the-5th\"},{match:\"[sun] #Date\",group:0,tag:\"WeekDay\",reason:\"sun-feb\"},{match:\"#Date (on|this|next|last|during)? [sun]\",group:0,tag:\"WeekDay\",reason:\"1pm-sun\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [sat]\",group:0,tag:\"WeekDay\",reason:\"sat\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [wed]\",group:0,tag:\"WeekDay\",reason:\"wed\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [march]\",group:0,tag:\"Month\",reason:\"march\"},{match:\"[sat] #Date\",group:0,tag:\"WeekDay\",reason:\"sat-feb\"},{match:\"#Preposition [(march|may)]\",group:0,tag:\"Month\",reason:\"in-month\"},{match:\"(this|next|last) (march|may) !#Infinitive?\",tag:\"#Date #Month\",reason:\"this-month\"},{match:\"(march|may) the? #Value\",tag:\"#Month #Date #Date\",reason:\"march-5th\"},{match:\"#Value of? (march|may)\",tag:\"#Date #Date #Month\",reason:\"5th-of-march\"},{match:\"[(march|may)] .? #Date\",group:0,tag:\"Month\",reason:\"march-and-feb\"},{match:\"#Date .? [(march|may)]\",group:0,tag:\"Month\",reason:\"feb-and-march\"},{match:\"#Adverb [(march|may)]\",group:0,tag:\"Verb\",reason:\"quickly-march\"},{match:\"[(march|may)] #Adverb\",group:0,tag:\"Verb\",reason:\"march-quickly\"},{match:\"#Value (am|pm)\",tag:\"Time\",reason:\"2-am\"}],[{match:\"#Holiday (day|eve)\",tag:\"Holiday\",reason:\"holiday-day\"},{match:\"#Value of #Month\",tag:\"Date\",reason:\"value-of-month\"},{match:\"#Cardinal #Month\",tag:\"Date\",reason:\"cardinal-month\"},{match:\"#Month #Value to #Value\",tag:\"Date\",reason:\"value-to-value\"},{match:\"#Month the #Value\",tag:\"Date\",reason:\"month-the-value\"},{match:\"(#WeekDay|#Month) #Value\",tag:\"Date\",reason:\"date-value\"},{match:\"#Value (#WeekDay|#Month)\",tag:\"Date\",reason:\"value-date\"},{match:\"(#TextValue && #Date) #TextValue\",tag:\"Date\",reason:\"textvalue-date\"},{match:\"#Month #NumberRange\",tag:\"Date\",reason:\"aug 20-21\"},{match:\"#WeekDay #Month #Ordinal\",tag:\"Date\",reason:\"week mm-dd\"},{match:\"#Month #Ordinal #Cardinal\",tag:\"Date\",reason:\"mm-dd-yyy\"},{match:\"(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time\",tag:\"Timezone\",reason:\"std-time\"},{match:\"(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time\",tag:\"Timezone\",reason:\"eastern-time\"},{match:\"#Time [(eastern|mountain|pacific|central|est|pst|gmt)]\",group:0,tag:\"Timezone\",reason:\"5pm-central\"},{match:\"(central|western|eastern) european time\",tag:\"Timezone\",reason:\"cet\"}],[{match:\"(the|any) [more]\",group:0,tag:\"Singular\",reason:\"more-noun\"},{match:\"[more] #Noun\",group:0,tag:\"Adjective\",reason:\"more-noun\"},{match:\"(right|rights) of .\",tag:\"Noun\",reason:\"right-of\"},{match:\"a [bit]\",group:0,tag:\"Singular\",reason:\"bit-2\"},{match:\"a [must]\",group:0,tag:\"Singular\",reason:\"must-2\"},{match:\"(we|us) [all]\",group:0,tag:\"Noun\",reason:\"we all\"},{match:\"due to [#Verb]\",group:0,tag:\"Noun\",reason:\"due-to\"},{match:\"some [#Verb] #Plural\",group:0,tag:\"Noun\",reason:\"determiner6\"},{match:\"#Possessive #Ordinal [#PastTense]\",group:0,tag:\"Noun\",reason:\"first-thought\"},{match:\"(the|this|those|these) #Adjective [%Verb|Noun%]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"the-adj-verb\"},{match:\"(the|this|those|these) #Adverb #Adjective [#Verb]\",group:0,tag:\"Noun\",reason:\"determiner4\"},{match:\"the [#Verb] #Preposition .\",group:0,tag:\"Noun\",reason:\"determiner1\"},{match:\"(a|an|the) [#Verb] of\",group:0,tag:\"Noun\",reason:\"the-verb-of\"},{match:\"#Determiner #Noun of [#Verb]\",group:0,tag:\"Noun\",notIf:\"#Gerund\",reason:\"noun-of-noun\"},{match:\"#PastTense #Preposition [#PresentTense]\",group:0,notIf:\"#Gerund\",tag:\"Noun\",reason:\"ended-in-ruins\"},{match:\"#Conjunction [u]\",group:0,tag:\"Pronoun\",reason:\"u-pronoun-2\"},{match:\"[u] #Verb\",group:0,tag:\"Pronoun\",reason:\"u-pronoun-1\"},{match:\"#Determiner [(western|eastern|northern|southern|central)] #Noun\",group:0,tag:\"Noun\",reason:\"western-line\"},{match:\"(#Singular && @hasHyphen) #PresentTense\",tag:\"Noun\",reason:\"hyphen-verb\"},{match:\"is no [#Verb]\",group:0,tag:\"Noun\",reason:\"is-no-verb\"},{match:\"do [so]\",group:0,tag:\"Noun\",reason:\"so-noun\"},{match:\"#Determiner [(shit|damn|hell)]\",group:0,tag:\"Noun\",reason:\"swears-noun\"},{match:\"to [(shit|hell)]\",group:0,tag:\"Noun\",reason:\"to-swears\"},{match:\"(the|these) [#Singular] (were|are)\",group:0,tag:\"Plural\",reason:\"singular-were\"},{match:\"a #Noun+ or #Adverb+? [#Verb]\",group:0,tag:\"Noun\",reason:\"noun-or-noun\"},{match:\"(the|those|these|a|an) #Adjective? [#PresentTense #Particle?]\",group:0,tag:\"Noun\",notIf:\"(seem|appear|include|#Gerund|#Copula)\",reason:\"det-inf\"},{match:\"#Noun #Actor\",tag:\"Actor\",notIf:\"(#Person|#Pronoun)\",reason:\"thing-doer\"},{match:\"#Gerund #Actor\",tag:\"Actor\",reason:\"gerund-doer\"},{match:\"co #Singular\",tag:\"Actor\",reason:\"co-noun\"},{match:\"[#Noun+] #Actor\",group:0,tag:\"Actor\",notIf:\"(#Honorific|#Pronoun|#Possessive)\",reason:\"air-traffic-controller\"},{match:\"(urban|cardiac|cardiovascular|respiratory|medical|clinical|visual|graphic|creative|dental|exotic|fine|certified|registered|technical|virtual|professional|amateur|junior|senior|special|pharmaceutical|theoretical)+ #Noun? #Actor\",tag:\"Actor\",reason:\"fine-artist\"},{match:\"#Noun+ (coach|chef|king|engineer|fellow|personality|boy|girl|man|woman|master)\",tag:\"Actor\",reason:\"dance-coach\"},{match:\"chief . officer\",tag:\"Actor\",reason:\"chief-x-officer\"},{match:\"chief of #Noun+\",tag:\"Actor\",reason:\"chief-of-police\"},{match:\"senior? vice? president of #Noun+\",tag:\"Actor\",reason:\"president-of\"},{match:\"#Determiner [sun]\",group:0,tag:\"Singular\",reason:\"the-sun\"},{match:\"#Verb (a|an) [#Value]$\",group:0,tag:\"Singular\",reason:\"did-a-value\"},{match:\"the [(can|will|may)]\",group:0,tag:\"Singular\",reason:\"the can\"},{match:\"#FirstName #Acronym? (#Possessive && #LastName)\",tag:\"Possessive\",reason:\"name-poss\"},{match:\"#Organization+ #Possessive\",tag:\"Possessive\",reason:\"org-possessive\"},{match:\"#Place+ #Possessive\",tag:\"Possessive\",reason:\"place-possessive\"},{match:\"#Possessive #PresentTense #Particle?\",notIf:\"(#Gerund|her)\",tag:\"Noun\",reason:\"possessive-verb\"},{match:\"(my|our|their|her|his|its) [(#Plural && #Actor)] #Noun\",tag:\"Possessive\",reason:\"my-dads\"},{match:\"#Value of a [second]\",group:0,unTag:\"Value\",tag:\"Singular\",reason:\"10th-of-a-second\"},{match:\"#Value [seconds]\",group:0,unTag:\"Value\",tag:\"Plural\",reason:\"10-seconds\"},{match:\"in [#Infinitive]\",group:0,tag:\"Singular\",reason:\"in-age\"},{match:\"a [#Adjective] #Preposition\",group:0,tag:\"Noun\",reason:\"a-minor-in\"},{match:\"#Determiner [#Singular] said\",group:0,tag:\"Actor\",reason:\"the-actor-said\"},{match:\"#Determiner #Noun [(feel|sense|process|rush|side|bomb|bully|challenge|cover|crush|dump|exchange|flow|function|issue|lecture|limit|march|process)] !(#Preposition|to|#Adverb)?\",group:0,tag:\"Noun\",reason:\"the-noun-sense\"},{match:\"[#PresentTense] (of|by|for) (a|an|the) #Noun #Copula\",group:0,tag:\"Plural\",reason:\"photographs-of\"},{match:\"#Infinitive and [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"fight and win\"},{match:\"#Noun and [#Verb] and #Noun\",group:0,tag:\"Noun\",reason:\"peace-and-flowers\"},{match:\"the #Cardinal [%Adj|Noun%]\",group:0,tag:\"Noun\",reason:\"the-1992-classic\"},{match:\"#Copula the [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",reason:\"the-premier-university\"},{match:\"i #Verb [me] #Noun\",group:0,tag:\"Possessive\",reason:\"scottish-me\"},{match:\"[#PresentTense] (music|class|lesson|night|party|festival|league|ceremony)\",group:0,tag:\"Noun\",reason:\"dance-music\"},{match:\"[wit] (me|it)\",group:0,tag:\"Presposition\",reason:\"wit-me\"},{match:\"#PastTense #Possessive [#Verb]\",group:0,tag:\"Noun\",notIf:\"(saw|made)\",reason:\"left-her-boots\"},{match:\"#Value [%Plural|Verb%]\",group:0,tag:\"Plural\",notIf:\"(one|1|a|an)\",reason:\"35-signs\"},{match:\"had [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Gerund|come|become)\",reason:\"had-time\"},{match:\"%Adj|Noun% %Noun|Verb%\",tag:\"#Adjective #Noun\",notIf:\"#ProperNoun #Noun\",reason:\"instant-access\"},{match:\"#Determiner [%Adj|Noun%] #Conjunction\",group:0,tag:\"Noun\",reason:\"a-rep-to\"},{match:\"#Adjective #Noun [%Plural|Verb%]$\",group:0,tag:\"Plural\",notIf:\"#Pronoun\",reason:\"near-death-experiences\"},{match:\"#Possessive #Noun [%Plural|Verb%]$\",group:0,tag:\"Plural\",reason:\"your-guild-colors\"}],[{match:\"(this|that|the|a|an) [#Gerund #Infinitive]\",group:0,tag:\"Singular\",reason:\"the-planning-process\"},{match:\"(that|the) [#Gerund #PresentTense]\",group:0,ifNo:\"#Copula\",tag:\"Plural\",reason:\"the-paving-stones\"},{match:\"#Determiner [#Gerund] #Noun\",group:0,tag:\"Adjective\",reason:\"the-gerund-noun\"},{match:\"#Pronoun #Infinitive [#Gerund] #PresentTense\",group:0,tag:\"Noun\",reason:\"tipping-sucks\"},{match:\"#Adjective [#Gerund]\",group:0,tag:\"Noun\",notIf:\"(still|even|just)\",reason:\"early-warning\"},{match:\"[#Gerund] #Adverb? not? #Copula\",group:0,tag:\"Activity\",reason:\"gerund-copula\"},{match:\"#Copula [(#Gerund|#Activity)] #Copula\",group:0,tag:\"Gerund\",reason:\"are-doing-is\"},{match:\"[#Gerund] #Modal\",group:0,tag:\"Activity\",reason:\"gerund-modal\"},{match:\"#Singular for [%Noun|Gerund%]\",group:0,tag:\"Gerund\",reason:\"noun-for-gerund\"},{match:\"#Comparative (for|at) [%Noun|Gerund%]\",group:0,tag:\"Gerund\",reason:\"better-for-gerund\"},{match:\"#PresentTense the [#Gerund]\",group:0,tag:\"Noun\",reason:\"keep-the-touching\"}],[{match:\"#Infinitive (this|that|the) [#Infinitive]\",group:0,tag:\"Noun\",reason:\"do-this-dance\"},{match:\"#Gerund #Determiner [#Infinitive]\",group:0,tag:\"Noun\",reason:\"running-a-show\"},{match:\"#Determiner (only|further|just|more|backward) [#Infinitive]\",group:0,tag:\"Noun\",reason:\"the-only-reason\"},{match:\"(the|this|a|an) [#Infinitive] #Adverb? #Verb\",group:0,tag:\"Noun\",reason:\"determiner5\"},{match:\"#Determiner #Adjective #Adjective? [#Infinitive]\",group:0,tag:\"Noun\",reason:\"a-nice-inf\"},{match:\"#Determiner #Demonym [#PresentTense]\",group:0,tag:\"Noun\",reason:\"mexican-train\"},{match:\"#Adjective #Noun+ [#Infinitive] #Copula\",group:0,tag:\"Noun\",reason:\"career-move\"},{match:\"at some [#Infinitive]\",group:0,tag:\"Noun\",reason:\"at-some-inf\"},{match:\"(go|goes|went) to [#Infinitive]\",group:0,tag:\"Noun\",reason:\"goes-to-verb\"},{match:\"(a|an) #Adjective? #Noun [#Infinitive] (#Preposition|#Noun)\",group:0,notIf:\"from\",tag:\"Noun\",reason:\"a-noun-inf\"},{match:\"(a|an) #Noun [#Infinitive]$\",group:0,tag:\"Noun\",reason:\"a-noun-inf2\"},{match:\"#Gerund #Adjective? for [#Infinitive]\",group:0,tag:\"Noun\",reason:\"running-for\"},{match:\"about [#Infinitive]\",group:0,tag:\"Singular\",reason:\"about-love\"},{match:\"#Plural on [#Infinitive]\",group:0,tag:\"Noun\",reason:\"on-stage\"},{match:\"any [#Infinitive]\",group:0,tag:\"Noun\",reason:\"any-charge\"},{match:\"no [#Infinitive]\",group:0,tag:\"Noun\",reason:\"no-doubt\"},{match:\"number of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"number-of-x\"},{match:\"(taught|teaches|learns|learned) [#PresentTense]\",group:0,tag:\"Noun\",reason:\"teaches-x\"},{match:\"(try|use|attempt|build|make) [#Verb #Particle?]\",notIf:\"(#Copula|#Noun|sure|fun|up)\",group:0,tag:\"Noun\",reason:\"do-verb\"},{match:\"^[#Infinitive] (is|was)\",group:0,tag:\"Noun\",reason:\"checkmate-is\"},{match:\"#Infinitive much [#Infinitive]\",group:0,tag:\"Noun\",reason:\"get-much\"},{match:\"[cause] #Pronoun #Verb\",group:0,tag:\"Conjunction\",reason:\"cause-cuz\"},{match:\"the #Singular [#Infinitive] #Noun\",group:0,tag:\"Noun\",notIf:\"#Pronoun\",reason:\"cardio-dance\"},{match:\"#Determiner #Modal [#Noun]\",group:0,tag:\"PresentTense\",reason:\"should-smoke\"},{match:\"this [#Plural]\",group:0,tag:\"PresentTense\",notIf:\"(#Preposition|#Date)\",reason:\"this-verbs\"},{match:\"#Noun that [#Plural]\",group:0,tag:\"PresentTense\",notIf:\"(#Preposition|#Pronoun|way)\",reason:\"voice-that-rocks\"},{match:\"that [#Plural] to\",group:0,tag:\"PresentTense\",notIf:\"#Preposition\",reason:\"that-leads-to\"},{match:\"(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)\",group:0,tag:\"Infinitive\",reason:\"let-him-glue\"},{match:\"#Verb (all|every|each|most|some|no) [#PresentTense]\",notIf:\"#Modal\",group:0,tag:\"Noun\",reason:\"all-presentTense\"},{match:\"(had|have|#PastTense) #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"better\",reason:\"adj-presentTense\"},{match:\"#Value #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"one-big-reason\"},{match:\"#PastTense #Adjective+ [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Copula|better)\",reason:\"won-wide-support\"},{match:\"(many|few|several|couple) [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"many-poses\"},{match:\"#Determiner #Adverb #Adjective [%Noun|Verb%]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"very-big-dream\"},{match:\"from #Noun to [%Noun|Verb%]\",group:0,tag:\"Noun\",reason:\"start-to-finish\"},{match:\"(for|with|of) #Noun (and|or|not) [%Noun|Verb%]\",group:0,tag:\"Noun\",notIf:\"#Pronoun\",reason:\"for-food-and-gas\"},{match:\"#Adjective #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"adorable-little-store\"},{match:\"#Gerund #Adverb? #Comparative [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"higher-costs\"},{match:\"(#Noun && @hasComma) #Noun (and|or) [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"noun-list\"},{match:\"(many|any|some|several) [#PresentTense] for\",group:0,tag:\"Noun\",reason:\"any-verbs-for\"},{match:\"to #PresentTense #Noun [#PresentTense] #Preposition\",group:0,tag:\"Noun\",reason:\"gas-exchange\"},{match:\"#PastTense (until|as|through|without) [#PresentTense]\",group:0,tag:\"Noun\",reason:\"waited-until-release\"},{match:\"#Gerund like #Adjective? [#PresentTense]\",group:0,tag:\"Plural\",reason:\"like-hot-cakes\"},{match:\"some #Adjective [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-reason\"},{match:\"for some [#PresentTense]\",group:0,tag:\"Noun\",reason:\"for-some-reason\"},{match:\"(same|some|the|that|a) kind of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-kind-of\"},{match:\"(same|some|the|that|a) type of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-type-of\"},{match:\"#Gerund #Adjective #Preposition [#PresentTense]\",group:0,tag:\"Noun\",reason:\"doing-better-for-x\"},{match:\"(get|got|have) #Comparative [#PresentTense]\",group:0,tag:\"Noun\",reason:\"got-better-aim\"},{match:\"whose [#PresentTense] #Copula\",group:0,tag:\"Noun\",reason:\"whos-name-was\"},{match:\"#PhrasalVerb #Particle #Preposition [#PresentTense]\",group:0,tag:\"Noun\",reason:\"given-up-on-x\"},{match:\"there (are|were) #Adjective? [#PresentTense]\",group:0,tag:\"Plural\",reason:\"there-are\"},{match:\"#Value [#PresentTense] of\",group:0,notIf:\"(one|1|#Copula|#Infinitive)\",tag:\"Plural\",reason:\"2-trains\"},{match:\"[#PresentTense] (are|were) #Adjective\",group:0,tag:\"Plural\",reason:\"compromises-are-possible\"},{match:\"^[(hope|guess|thought|think)] #Pronoun #Verb\",group:0,tag:\"Infinitive\",reason:\"suppose-i\"},{match:\"#Possessive #Adjective [#Verb]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"our-full-support\"},{match:\"[(tastes|smells)] #Adverb? #Adjective\",group:0,tag:\"PresentTense\",reason:\"tastes-good\"},{match:\"#Copula #Gerund [#PresentTense] !by?\",group:0,tag:\"Noun\",notIf:\"going\",reason:\"ignoring-commute\"},{match:\"#Determiner #Adjective? [(shed|thought|rose|bid|saw|spelt)]\",group:0,tag:\"Noun\",reason:\"noun-past\"},{match:\"how to [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"how-to-noun\"},{match:\"which [%Noun|Verb%] #Noun\",group:0,tag:\"Infinitive\",reason:\"which-boost-it\"},{match:\"#Gerund [%Plural|Verb%]\",group:0,tag:\"Plural\",reason:\"asking-questions\"},{match:\"(ready|available|difficult|hard|easy|made|attempt|try) to [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"ready-to-noun\"},{match:\"(bring|went|go|drive|run|bike) to [%Noun|Verb%]\",group:0,tag:\"Noun\",reason:\"bring-to-noun\"},{match:\"#Modal #Noun [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"would-you-look\"},{match:\"#Copula just [#Infinitive]\",group:0,tag:\"Noun\",reason:\"is-just-spam\"},{match:\"^%Noun|Verb% %Plural|Verb%\",tag:\"Imperative #Plural\",reason:\"request-copies\"},{match:\"#Adjective #Plural and [%Plural|Verb%]\",group:0,tag:\"#Plural\",reason:\"pickles-and-drinks\"},{match:\"#Determiner #Year [#Verb]\",group:0,tag:\"Noun\",reason:\"the-1968-film\"},{match:\"#Determiner [#PhrasalVerb #Particle]\",group:0,tag:\"Noun\",reason:\"the-break-up\"},{match:\"#Determiner [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",notIf:\"(#Pronoun|#Possessive|#ProperNoun)\",reason:\"the-individual-goals\"},{match:\"[%Noun|Verb%] or #Infinitive\",group:0,tag:\"Infinitive\",reason:\"work-or-prepare\"},{match:\"to #Infinitive [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Gerund|#Copula|help)\",reason:\"to-give-thanks\"},{match:\"[#Noun] me\",group:0,tag:\"Verb\",reason:\"kills-me\"},{match:\"%Plural|Verb% %Plural|Verb%\",tag:\"#PresentTense #Plural\",reason:\"removes-wrinkles\"}],[{match:\"#Money and #Money #Currency?\",tag:\"Money\",reason:\"money-and-money\"},{match:\"#Value #Currency [and] #Value (cents|ore|centavos|sens)\",group:0,tag:\"money\",reason:\"and-5-cents\"},{match:\"#Value (mark|rand|won|rub|ore)\",tag:\"#Money #Currency\",reason:\"4-mark\"},{match:\"a pound\",tag:\"#Money #Unit\",reason:\"a-pound\"},{match:\"#Value (pound|pounds)\",tag:\"#Money #Unit\",reason:\"4-pounds\"}],[{match:\"[(half|quarter)] of? (a|an)\",group:0,tag:\"Fraction\",reason:\"millionth\"},{match:\"#Adverb [half]\",group:0,tag:\"Fraction\",reason:\"nearly-half\"},{match:\"[half] the\",group:0,tag:\"Fraction\",reason:\"half-the\"},{match:\"#Cardinal and a half\",tag:\"Fraction\",reason:\"and-a-half\"},{match:\"#Value (halves|halfs|quarters)\",tag:\"Fraction\",reason:\"two-halves\"},{match:\"a #Ordinal\",tag:\"Fraction\",reason:\"a-quarter\"},{match:\"[#Cardinal+] (#Fraction && /s$/)\",tag:\"Fraction\",reason:\"seven-fifths\"},{match:\"[#Cardinal+ #Ordinal] of .\",group:0,tag:\"Fraction\",reason:\"ordinal-of\"},{match:\"[(#NumericValue && #Ordinal)] of .\",group:0,tag:\"Fraction\",reason:\"num-ordinal-of\"},{match:\"(a|one) #Cardinal?+ #Ordinal\",tag:\"Fraction\",reason:\"a-ordinal\"},{match:\"#Cardinal+ out? of every? #Cardinal\",tag:\"Fraction\",reason:\"out-of\"}],[{match:\"#Cardinal [second]\",tag:\"Unit\",reason:\"one-second\"},{match:\"!once? [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)\",group:0,tag:\"Value\",reason:\"a-is-one\"},{match:\"1 #Value #PhoneNumber\",tag:\"PhoneNumber\",reason:\"1-800-Value\"},{match:\"#NumericValue #PhoneNumber\",tag:\"PhoneNumber\",reason:\"(800) PhoneNumber\"},{match:\"#Demonym #Currency\",tag:\"Currency\",reason:\"demonym-currency\"},{match:\"#Value [(buck|bucks|grand)]\",group:0,tag:\"Currency\",reason:\"value-bucks\"},{match:\"[#Value+] #Currency\",group:0,tag:\"Money\",reason:\"15 usd\"},{match:\"[second] #Noun\",group:0,tag:\"Ordinal\",reason:\"second-noun\"},{match:\"#Value+ [#Currency]\",group:0,tag:\"Unit\",reason:\"5-yan\"},{match:\"#Value [(foot|feet)]\",group:0,tag:\"Unit\",reason:\"foot-unit\"},{match:\"#Value [#Abbreviation]\",group:0,tag:\"Unit\",reason:\"value-abbr\"},{match:\"#Value [k]\",group:0,tag:\"Unit\",reason:\"value-k\"},{match:\"#Unit an hour\",tag:\"Unit\",reason:\"unit-an-hour\"},{match:\"(minus|negative) #Value\",tag:\"Value\",reason:\"minus-value\"},{match:\"#Value (point|decimal) #Value\",tag:\"Value\",reason:\"value-point-value\"},{match:\"#Determiner [(half|quarter)] #Ordinal\",group:0,tag:\"Value\",reason:\"half-ordinal\"},{match:\"#Multiple+ and #Value\",tag:\"Value\",reason:\"magnitude-and-value\"},{match:\"#Value #Unit [(per|an) (hr|hour|sec|second|min|minute)]\",group:0,tag:\"Unit\",reason:\"12-miles-per-second\"},{match:\"#Value [(square|cubic)] #Unit\",group:0,tag:\"Unit\",reason:\"square-miles\"}],[{match:\"#Copula [(#Noun|#PresentTense)] #LastName\",group:0,tag:\"FirstName\",reason:\"copula-noun-lastname\"},{match:\"(sister|pope|brother|father|aunt|uncle|grandpa|grandfather|grandma) #ProperNoun\",tag:\"Person\",reason:\"lady-titlecase\",safe:!0},{match:\"#FirstName [#Determiner #Noun] #LastName\",group:0,tag:\"Person\",reason:\"first-noun-last\"},{match:\"#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun\",tag:\"Person\",reason:\"titlecase-acronym-titlecase\",safe:!0},{match:\"#Acronym #LastName\",tag:\"Person\",reason:\"acronym-lastname\",safe:!0},{match:\"#Person (jr|sr|md)\",tag:\"Person\",reason:\"person-honorific\"},{match:\"#Honorific #Acronym\",tag:\"Person\",reason:\"Honorific-TitleCase\"},{match:\"#Person #Person the? #RomanNumeral\",tag:\"Person\",reason:\"roman-numeral\"},{match:\"#FirstName [/^[^aiurck]$/]\",group:0,tag:[\"Acronym\",\"Person\"],reason:\"john-e\"},{match:\"#Noun van der? #Noun\",tag:\"Person\",reason:\"van der noun\",safe:!0},{match:\"(king|queen|prince|saint|lady) of #Noun\",tag:\"Person\",reason:\"king-of-noun\",safe:!0},{match:\"(prince|lady) #Place\",tag:\"Person\",reason:\"lady-place\"},{match:\"(king|queen|prince|saint) #ProperNoun\",tag:\"Person\",notIf:\"#Place\",reason:\"saint-foo\"},{match:\"al (#Person|#ProperNoun)\",tag:\"Person\",reason:\"al-borlen\",safe:!0},{match:\"#FirstName de #Noun\",tag:\"Person\",reason:\"bill-de-noun\"},{match:\"#FirstName (bin|al) #Noun\",tag:\"Person\",reason:\"bill-al-noun\"},{match:\"#FirstName #Acronym #ProperNoun\",tag:\"Person\",reason:\"bill-acronym-title\"},{match:\"#FirstName #FirstName #ProperNoun\",tag:\"Person\",reason:\"bill-firstname-title\"},{match:\"#Honorific #FirstName? #ProperNoun\",tag:\"Person\",reason:\"dr-john-Title\"},{match:\"#FirstName the #Adjective\",tag:\"Person\",reason:\"name-the-great\"},{match:\"#ProperNoun (van|al|bin) #ProperNoun\",tag:\"Person\",reason:\"title-van-title\",safe:!0},{match:\"#ProperNoun (de|du) la? #ProperNoun\",tag:\"Person\",notIf:\"#Place\",reason:\"title-de-title\"},{match:\"#Singular #Acronym #LastName\",tag:\"#FirstName #Person .\",reason:\"title-acro-noun\",safe:!0},{match:\"[#ProperNoun] #Person\",group:0,tag:\"Person\",reason:\"proper-person\",safe:!0},{match:\"#Person [#ProperNoun #ProperNoun]\",group:0,tag:\"Person\",notIf:\"#Possessive\",reason:\"three-name-person\",safe:!0},{match:\"#FirstName #Acronym? [#ProperNoun]\",group:0,tag:\"LastName\",notIf:\"#Possessive\",reason:\"firstname-titlecase\"},{match:\"#FirstName [#FirstName]\",group:0,tag:\"LastName\",reason:\"firstname-firstname\"},{match:\"#FirstName #Acronym #Noun\",tag:\"Person\",reason:\"n-acro-noun\",safe:!0},{match:\"#FirstName [(de|di|du|van|von)] #Person\",group:0,tag:\"LastName\",reason:\"de-firstname\"},{match:\"[(lieutenant|corporal|sergeant|captain|qeen|king|admiral|major|colonel|marshal|president|queen|king)+] #ProperNoun\",group:0,tag:\"Honorific\",reason:\"seargeant-john\"},{match:\"[(private|general|major|rear|prime|field|count|miss)] #Honorific? #Person\",group:0,tag:[\"Honorific\",\"Person\"],reason:\"ambg-honorifics\"},{match:\"#Honorific #FirstName [#Singular]\",group:0,tag:\"LastName\",notIf:\"#Possessive\",reason:\"dr-john-foo\",safe:!0},{match:\"[(his|her) (majesty|honour|worship|excellency|honorable)] #Person\",group:0,tag:\"Honorific\",reason:\"his-excellency\"},{match:\"#Honorific #Actor\",tag:\"Honorific\",reason:\"Lieutenant colonel\"},{match:\"(first|second|third|1st|2nd|3rd) #Actor\",tag:\"Honorific\",reason:\"first lady\"},{match:\"#Person #RomanNumeral\",tag:\"Person\",reason:\"louis-IV\"}],[{match:\"#FirstName #Noun$\",tag:\". #LastName\",notIf:\"(#Possessive|#Organization|#Place|#Pronoun|@hasTitleCase)\",reason:\"firstname-noun\"},{match:\"%Person|Date% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"jan-thierson\"},{match:\"%Person|Noun% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"switch-person\",safe:!0},{match:\"%Person|Noun% #Organization\",tag:\"Organization\",reason:\"olive-garden\"},{match:\"%Person|Verb% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"verb-propernoun\",ifNo:\"#Actor\"},{match:\"[%Person|Verb%] (will|had|has|said|says|told|did|learned|wants|wanted)\",group:0,tag:\"Person\",reason:\"person-said\"},{match:\"[%Person|Place%] (harbor|harbour|pier|town|city|place|dump|landfill)\",group:0,tag:\"Place\",reason:\"sydney-harbour\"},{match:\"(west|east|north|south) [%Person|Place%]\",group:0,tag:\"Place\",reason:\"east-sydney\"},{match:\"#Modal [%Person|Verb%]\",group:0,tag:\"Verb\",reason:\"would-mark\"},{match:\"#Adverb [%Person|Verb%]\",group:0,tag:\"Verb\",reason:\"really-mark\"},{match:\"[%Person|Verb%] (#Adverb|#Comparative)\",group:0,tag:\"Verb\",reason:\"drew-closer\"},{match:\"%Person|Verb% #Person\",tag:\"Person\",reason:\"rob-smith\"},{match:\"%Person|Verb% #Acronym #ProperNoun\",tag:\"Person\",reason:\"rob-a-smith\"},{match:\"[will] #Verb\",group:0,tag:\"Modal\",reason:\"will-verb\"},{match:\"(will && @isTitleCase) #ProperNoun\",tag:\"Person\",reason:\"will-name\"},{match:\"(#FirstName && !#Possessive) [#Singular] #Verb\",group:0,safe:!0,tag:\"LastName\",reason:\"jack-layton\"},{match:\"^[#Singular] #Person #Verb\",group:0,safe:!0,tag:\"Person\",reason:\"sherwood-anderson\"},{match:\"(a|an) [#Person]$\",group:0,unTag:\"Person\",reason:\"a-warhol\"}],[{match:\"#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)\",tag:\"#Copula #Adverb #Adjective\",reason:\"sometimes-adverb\"},{match:\"(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense\",group:0,tag:\"Modal\",reason:\"i-better\"},{match:\"(#Modal|i|they|we|do) not? [like]\",group:0,tag:\"PresentTense\",reason:\"modal-like\"},{match:\"#Noun #Adverb? [left]\",group:0,tag:\"PastTense\",reason:\"left-verb\"},{match:\"will #Adverb? not? #Adverb? [be] #Gerund\",group:0,tag:\"Copula\",reason:\"will-be-copula\"},{match:\"will #Adverb? not? #Adverb? [be] #Adjective\",group:0,tag:\"Copula\",reason:\"be-copula\"},{match:\"[march] (up|down|back|toward)\",notIf:\"#Date\",group:0,tag:\"Infinitive\",reason:\"march-to\"},{match:\"#Modal [march]\",group:0,tag:\"Infinitive\",reason:\"must-march\"},{match:\"[may] be\",group:0,tag:\"Verb\",reason:\"may-be\"},{match:\"[(subject|subjects|subjected)] to\",group:0,tag:\"Verb\",reason:\"subject to\"},{match:\"[home] to\",group:0,tag:\"PresentTense\",reason:\"home to\"},{match:\"[open] #Determiner\",group:0,tag:\"Infinitive\",reason:\"open-the\"},{match:\"(were|was) being [#PresentTense]\",group:0,tag:\"PastTense\",reason:\"was-being\"},{match:\"(had|has|have) [been /en$/]\",group:0,tag:\"Auxiliary Participle\",reason:\"had-been-broken\"},{match:\"(had|has|have) [been /ed$/]\",group:0,tag:\"Auxiliary PastTense\",reason:\"had-been-smoked\"},{match:\"(had|has) #Adverb? [been] #Adverb? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"had-been-adj\"},{match:\"(had|has) to [#Noun] (#Determiner|#Possessive)\",group:0,tag:\"Infinitive\",reason:\"had-to-noun\"},{match:\"have [#PresentTense]\",group:0,tag:\"PastTense\",notIf:\"(come|gotten)\",reason:\"have-read\"},{match:\"(does|will|#Modal) that [work]\",group:0,tag:\"PastTense\",reason:\"does-that-work\"},{match:\"[(sound|sounds)] #Adjective\",group:0,tag:\"PresentTense\",reason:\"sounds-fun\"},{match:\"[(look|looks)] #Adjective\",group:0,tag:\"PresentTense\",reason:\"looks-good\"},{match:\"[(start|starts|stop|stops|begin|begins)] #Gerund\",group:0,tag:\"Verb\",reason:\"starts-thinking\"},{match:\"(have|had) read\",tag:\"Modal #PastTense\",reason:\"read-read\"},{match:\"(is|was|were) [(under|over) #PastTense]\",group:0,tag:\"Adverb Adjective\",reason:\"was-under-cooked\"},{match:\"[shit] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear1-verb\"},{match:\"[damn] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear2-verb\"},{match:\"[fuck] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear3-verb\"},{match:\"#Plural that %Noun|Verb%\",tag:\". #Preposition #Infinitive\",reason:\"jobs-that-work\"},{match:\"[works] for me\",group:0,tag:\"PresentTense\",reason:\"works-for-me\"},{match:\"as #Pronoun [please]\",group:0,tag:\"Infinitive\",reason:\"as-we-please\"},{match:\"[(co|mis|de|inter|intra|pre|re|un|out|under|over|counter)] #Verb\",group:0,tag:[\"Verb\",\"Prefix\"],notIf:\"(#Copula|#PhrasalVerb)\",reason:\"co-write\"},{match:\"#PastTense and [%Adj|Past%]\",group:0,tag:\"PastTense\",reason:\"dressed-and-left\"},{match:\"[%Adj|Past%] and #PastTense\",group:0,tag:\"PastTense\",reason:\"dressed-and-left\"},{match:\"#Copula #Pronoun [%Adj|Past%]\",group:0,tag:\"Adjective\",reason:\"is-he-stoked\"},{match:\"to [%Noun|Verb%] #Preposition\",group:0,tag:\"Infinitive\",reason:\"to-dream-of\"}],[{match:\"(slowly|quickly) [#Adjective]\",group:0,tag:\"Verb\",reason:\"slowly-adj\"},{match:\"does (#Adverb|not)? [#Adjective]\",group:0,tag:\"PresentTense\",reason:\"does-mean\"},{match:\"[(fine|okay|cool|ok)] by me\",group:0,tag:\"Adjective\",reason:\"okay-by-me\"},{match:\"i (#Adverb|do)? not? [mean]\",group:0,tag:\"PresentTense\",reason:\"i-mean\"},{match:\"will #Adjective\",tag:\"Auxiliary Infinitive\",reason:\"will-adj\"},{match:\"#Pronoun [#Adjective] #Determiner #Adjective? #Noun\",group:0,tag:\"Verb\",reason:\"he-adj-the\"},{match:\"#Copula [%Adj|Present%] to #Verb\",group:0,tag:\"Verb\",reason:\"adj-to\"},{match:\"#Copula [#Adjective] (well|badly|quickly|slowly)\",group:0,tag:\"Verb\",reason:\"done-well\"},{match:\"#Adjective and [#Gerund] !#Preposition?\",group:0,tag:\"Adjective\",reason:\"rude-and-x\"},{match:\"#Copula #Adverb? (over|under) [#PastTense]\",group:0,tag:\"Adjective\",reason:\"over-cooked\"},{match:\"#Copula #Adjective+ (and|or) [#PastTense]$\",group:0,tag:\"Adjective\",reason:\"bland-and-overcooked\"},{match:\"got #Adverb? [#PastTense] of\",group:0,tag:\"Adjective\",reason:\"got-tired-of\"},{match:\"(seem|seems|seemed|appear|appeared|appears|feel|feels|felt|sound|sounds|sounded) (#Adverb|#Adjective)? [#PastTense]\",group:0,tag:\"Adjective\",reason:\"felt-loved\"},{match:\"(seem|feel|seemed|felt) [#PastTense #Particle?]\",group:0,tag:\"Adjective\",reason:\"seem-confused\"},{match:\"a (bit|little|tad) [#PastTense #Particle?]\",group:0,tag:\"Adjective\",reason:\"a-bit-confused\"},{match:\"not be [%Adj|Past% #Particle?]\",group:0,tag:\"Adjective\",reason:\"do-not-be-confused\"},{match:\"#Copula just [%Adj|Past% #Particle?]\",group:0,tag:\"Adjective\",reason:\"is-just-right\"},{match:\"as [#Infinitive] as\",group:0,tag:\"Adjective\",reason:\"as-pale-as\"},{match:\"[%Adj|Past%] and #Adjective\",group:0,tag:\"Adjective\",reason:\"faled-and-oppressive\"},{match:\"or [#PastTense] #Noun\",group:0,tag:\"Adjective\",notIf:\"(#Copula|#Pronoun)\",reason:\"or-heightened-emotion\"},{match:\"(become|became|becoming|becomes) [#Verb]\",group:0,tag:\"Adjective\",reason:\"become-verb\"},{match:\"#Possessive [#PastTense] #Noun\",group:0,tag:\"Adjective\",reason:\"declared-intentions\"},{match:\"#Copula #Pronoun [%Adj|Present%]\",group:0,tag:\"Adjective\",reason:\"is-he-cool\"},{match:\"#Copula [%Adj|Past%] with\",group:0,tag:\"Adjective\",notIf:\"(associated|worn|baked|aged|armed|bound|fried|loaded|mixed|packed|pumped|filled|sealed)\",reason:\"is-crowded-with\"},{match:\"#Copula #Adverb? [%Adj|Present%]$\",group:0,tag:\"Adjective\",reason:\"was-empty$\"}],[{match:\"will (#Adverb|not)+? [have] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"will-have-vb\"},{match:\"[#Copula] (#Adverb|not)+? (#Gerund|#PastTense)\",group:0,tag:\"Auxiliary\",reason:\"copula-walking\"},{match:\"[(#Modal|did)+] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"modal-verb\"},{match:\"#Modal (#Adverb|not)+? [have] (#Adverb|not)+? [had] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"would-have\"},{match:\"[(has|had)] (#Adverb|not)+? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"had-walked\"},{match:\"[(do|does|did|will|have|had|has|got)] (not|#Adverb)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"have-had\"},{match:\"[about to] #Adverb? #Verb\",group:0,tag:[\"Auxiliary\",\"Verb\"],reason:\"about-to\"},{match:\"#Modal (#Adverb|not)+? [be] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"would-be\"},{match:\"[(#Modal|had|has)] (#Adverb|not)+? [been] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"had-been\"},{match:\"[(be|being|been)] #Participle\",group:0,tag:\"Auxiliary\",reason:\"being-driven\"},{match:\"[may] #Adverb? #Infinitive\",group:0,tag:\"Auxiliary\",reason:\"may-want\"},{match:\"#Copula (#Adverb|not)+? [(be|being|been)] #Adverb+? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"being-walked\"},{match:\"will [be] #PastTense\",group:0,tag:\"Auxiliary\",reason:\"will-be-x\"},{match:\"[(be|been)] (#Adverb|not)+? #Gerund\",group:0,tag:\"Auxiliary\",reason:\"been-walking\"},{match:\"[used to] #PresentTense\",group:0,tag:\"Auxiliary\",reason:\"used-to-walk\"},{match:\"#Copula (#Adverb|not)+? [going to] #Adverb+? #PresentTense\",group:0,tag:\"Auxiliary\",reason:\"going-to-walk\"},{match:\"#Imperative [(me|him|her)]\",group:0,tag:\"Reflexive\",reason:\"tell-him\"},{match:\"(is|was) #Adverb? [no]\",group:0,tag:\"Negative\",reason:\"is-no\"},{match:\"[(been|had|became|came)] #PastTense\",group:0,notIf:\"#PhrasalVerb\",tag:\"Auxiliary\",reason:\"been-told\"},{match:\"[(being|having|getting)] #Verb\",group:0,tag:\"Auxiliary\",reason:\"being-born\"},{match:\"[be] #Gerund\",group:0,tag:\"Auxiliary\",reason:\"be-walking\"},{match:\"[better] #PresentTense\",group:0,tag:\"Modal\",notIf:\"(#Copula|#Gerund)\",reason:\"better-go\"},{match:\"even better\",tag:\"Adverb #Comparative\",reason:\"even-better\"}],[{match:\"(#Verb && @hasHyphen) up\",tag:\"PhrasalVerb\",reason:\"foo-up\"},{match:\"(#Verb && @hasHyphen) off\",tag:\"PhrasalVerb\",reason:\"foo-off\"},{match:\"(#Verb && @hasHyphen) over\",tag:\"PhrasalVerb\",reason:\"foo-over\"},{match:\"(#Verb && @hasHyphen) out\",tag:\"PhrasalVerb\",reason:\"foo-out\"},{match:\"[#Verb (in|out|up|down|off|back)] (on|in)\",notIf:\"#Copula\",tag:\"PhrasalVerb Particle\",reason:\"walk-in-on\"},{match:\"(lived|went|crept|go) [on] for\",group:0,tag:\"PhrasalVerb\",reason:\"went-on\"},{match:\"#Verb (up|down|in|on|for)$\",tag:\"PhrasalVerb #Particle\",notIf:\"#PhrasalVerb\",reason:\"come-down$\"},{match:\"help [(stop|end|make|start)]\",group:0,tag:\"Infinitive\",reason:\"help-stop\"},{match:\"#PhrasalVerb (in && #Particle) #Determiner\",tag:\"#Verb #Preposition #Determiner\",unTag:\"PhrasalVerb\",reason:\"work-in-the\"},{match:\"[(stop|start|finish|help)] #Gerund\",group:0,tag:\"Infinitive\",reason:\"start-listening\"},{match:\"#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]\",group:0,tag:\"Adverb\",reason:\"phrasal-pronoun-advb\"}],[{match:\"^do not? [#Infinitive #Particle?]\",notIf:Vl,group:0,tag:\"Imperative\",reason:\"do-eat\"},{match:\"^please do? not? [#Infinitive #Particle?]\",group:0,tag:\"Imperative\",reason:\"please-go\"},{match:\"^just do? not? [#Infinitive #Particle?]\",group:0,tag:\"Imperative\",reason:\"just-go\"},{match:\"^[#Infinitive] it #Comparative\",notIf:Vl,group:0,tag:\"Imperative\",reason:\"do-it-better\"},{match:\"^[#Infinitive] it (please|now|again|plz)\",notIf:Vl,group:0,tag:\"Imperative\",reason:\"do-it-please\"},{match:\"^[#Infinitive] (#Adjective|#Adverb)$\",group:0,tag:\"Imperative\",notIf:\"(so|such|rather|enough)\",reason:\"go-quickly\"},{match:\"^[#Infinitive] (up|down|over) #Determiner\",group:0,tag:\"Imperative\",reason:\"turn-down\"},{match:\"^[#Infinitive] (your|my|the|a|an|any|each|every|some|more|with|on)\",group:0,notIf:\"like\",tag:\"Imperative\",reason:\"eat-my-shorts\"},{match:\"^[#Infinitive] (him|her|it|us|me|there)\",group:0,tag:\"Imperative\",reason:\"tell-him\"},{match:\"^[#Infinitive] #Adjective #Noun$\",group:0,tag:\"Imperative\",reason:\"avoid-loud-noises\"},{match:\"^[#Infinitive] (#Adjective|#Adverb)? and #Infinitive\",group:0,tag:\"Imperative\",reason:\"call-and-reserve\"},{match:\"^(go|stop|wait|hurry) please?$\",tag:\"Imperative\",reason:\"go\"},{match:\"^(somebody|everybody) [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"somebody-call\"},{match:\"^let (us|me) [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"lets-leave\"},{match:\"^[(shut|close|open|start|stop|end|keep)] #Determiner #Noun\",group:0,tag:\"Imperative\",reason:\"shut-the-door\"},{match:\"^[#PhrasalVerb #Particle] #Determiner #Noun\",group:0,tag:\"Imperative\",reason:\"turn-off-the-light\"},{match:\"^[go] to .\",group:0,tag:\"Imperative\",reason:\"go-to-toronto\"},{match:\"^#Modal you [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"would-you-\"},{match:\"^never [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"never-stop\"},{match:\"^come #Infinitive\",tag:\"Imperative\",notIf:\"on\",reason:\"come-have\"},{match:\"^come and? #Infinitive\",tag:\"Imperative . Imperative\",notIf:\"#PhrasalVerb\",reason:\"come-and-have\"},{match:\"^stay (out|away|back)\",tag:\"Imperative\",reason:\"stay-away\"},{match:\"^[(stay|be|keep)] #Adjective\",group:0,tag:\"Imperative\",reason:\"stay-cool\"},{match:\"^[keep it] #Adjective\",group:0,tag:\"Imperative\",reason:\"keep-it-cool\"},{match:\"^do not [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"do-not-be\"},{match:\"[#Infinitive] (yourself|yourselves)\",group:0,tag:\"Imperative\",reason:\"allow-yourself\"},{match:\"[#Infinitive] what .\",group:0,tag:\"Imperative\",reason:\"look-what\"},{match:\"^[#Infinitive] #Gerund\",group:0,tag:\"Imperative\",reason:\"keep-playing\"},{match:\"^[#Infinitive] (to|for|into|toward|here|there)\",group:0,tag:\"Imperative\",reason:\"go-to\"},{match:\"^[#Infinitive] (and|or) #Infinitive\",group:0,tag:\"Imperative\",reason:\"inf-and-inf\"},{match:\"^[%Noun|Verb%] to\",group:0,tag:\"Imperative\",reason:\"commit-to\"},{match:\"^[#Infinitive] #Adjective? #Singular #Singular\",group:0,tag:\"Imperative\",reason:\"maintain-eye-contact\"},{match:\"do not (forget|omit|neglect) to [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"do-not-forget\"},{match:\"^[(ask|wear|pay|look|help|show|watch|act|fix|kill|stop|start|turn|try|win)] #Noun\",group:0,tag:\"Imperative\",reason:\"pay-attention\"}],[{match:\"(that|which) were [%Adj|Gerund%]\",group:0,tag:\"Gerund\",reason:\"that-were-growing\"},{match:\"#Gerund [#Gerund] #Plural\",group:0,tag:\"Adjective\",reason:\"hard-working-fam\"}],[{match:\"u r\",tag:\"#Pronoun #Copula\",reason:\"u r\"},{match:\"#Noun [(who|whom)]\",group:0,tag:\"Determiner\",reason:\"captain-who\"},{match:\"[had] #Noun+ #PastTense\",group:0,tag:\"Condition\",reason:\"had-he\"},{match:\"[were] #Noun+ to #Infinitive\",group:0,tag:\"Condition\",reason:\"were-he\"},{match:\"some sort of\",tag:\"Adjective Noun Conjunction\",reason:\"some-sort-of\"},{match:\"of some sort\",tag:\"Conjunction Adjective Noun\",reason:\"of-some-sort\"},{match:\"[such] (a|an|is)? #Noun\",group:0,tag:\"Determiner\",reason:\"such-skill\"},{match:\"[right] (before|after|in|into|to|toward)\",group:0,tag:\"#Adverb\",reason:\"right-into\"},{match:\"#Preposition [about]\",group:0,tag:\"Adjective\",reason:\"at-about\"},{match:\"(are|#Modal|see|do|for) [ya]\",group:0,tag:\"Pronoun\",reason:\"are-ya\"},{match:\"[long live] .\",group:0,tag:\"#Adjective #Infinitive\",reason:\"long-live\"},{match:\"[plenty] of\",group:0,tag:\"#Uncountable\",reason:\"plenty-of\"},{match:\"(always|nearly|barely|practically) [there]\",group:0,tag:\"Adjective\",reason:\"always-there\"},{match:\"[there] (#Adverb|#Pronoun)? #Copula\",group:0,tag:\"There\",reason:\"there-is\"},{match:\"#Copula [there] .\",group:0,tag:\"There\",reason:\"is-there\"},{match:\"#Modal #Adverb? [there]\",group:0,tag:\"There\",reason:\"should-there\"},{match:\"^[do] (you|we|they)\",group:0,tag:\"QuestionWord\",reason:\"do-you\"},{match:\"^[does] (he|she|it|#ProperNoun)\",group:0,tag:\"QuestionWord\",reason:\"does-he\"},{match:\"#Determiner #Noun+ [who] #Verb\",group:0,tag:\"Preposition\",reason:\"the-x-who\"},{match:\"#Determiner #Noun+ [which] #Verb\",group:0,tag:\"Preposition\",reason:\"the-x-which\"},{match:\"a [while]\",group:0,tag:\"Noun\",reason:\"a-while\"},{match:\"guess who\",tag:\"#Infinitive #QuestionWord\",reason:\"guess-who\"},{match:\"[fucking] !#Verb\",group:0,tag:\"#Gerund\",reason:\"f-as-gerund\"}],[{match:\"university of #Place\",tag:\"Organization\",reason:\"university-of-Foo\"},{match:\"#Noun (&|n) #Noun\",tag:\"Organization\",reason:\"Noun-&-Noun\"},{match:\"#Organization of the? #ProperNoun\",tag:\"Organization\",reason:\"org-of-place\",safe:!0},{match:\"#Organization #Country\",tag:\"Organization\",reason:\"org-country\"},{match:\"#ProperNoun #Organization\",tag:\"Organization\",notIf:\"#FirstName\",reason:\"titlecase-org\"},{match:\"#ProperNoun (ltd|co|inc|dept|assn|bros)\",tag:\"Organization\",reason:\"org-abbrv\"},{match:\"the [#Acronym]\",group:0,tag:\"Organization\",reason:\"the-acronym\",safe:!0},{match:\"government of the? [#Place+]\",tag:\"Organization\",reason:\"government-of-x\"},{match:\"(health|school|commerce) board\",tag:\"Organization\",reason:\"school-board\"},{match:\"(nominating|special|conference|executive|steering|central|congressional) committee\",tag:\"Organization\",reason:\"special-comittee\"},{match:\"(world|global|international|national|#Demonym) #Organization\",tag:\"Organization\",reason:\"global-org\"},{match:\"#Noun+ (public|private) school\",tag:\"School\",reason:\"noun-public-school\"},{match:\"#Place+ #SportsTeam\",tag:\"SportsTeam\",reason:\"place-sportsteam\"},{match:\"(dc|atlanta|minnesota|manchester|newcastle|sheffield) united\",tag:\"SportsTeam\",reason:\"united-sportsteam\"},{match:\"#Place+ fc\",tag:\"SportsTeam\",reason:\"fc-sportsteam\"},{match:\"#Place+ #Noun{0,2} (club|society|group|team|committee|commission|association|guild|crew)\",tag:\"Organization\",reason:\"place-noun-society\"}],[{match:\"(west|north|south|east|western|northern|southern|eastern)+ #Place\",tag:\"Region\",reason:\"west-norfolk\"},{match:\"#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]\",group:0,tag:\"Region\",reason:\"us-state\"},{match:\"portland [or]\",group:0,tag:\"Region\",reason:\"portland-or\"},{match:\"#ProperNoun+ (cliff|place|range|pit|place|point|room|grounds|ruins)\",tag:\"Place\",reason:\"foo-point\"},{match:\"in [#ProperNoun] #Place\",group:0,tag:\"Place\",reason:\"propernoun-place\"},{match:\"#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)\",tag:\"Address\",reason:\"address-st\"},{match:\"(port|mount|mt) #ProperName\",tag:\"Place\",reason:\"port-name\"}],[{match:\"[so] #Noun\",group:0,tag:\"Conjunction\",reason:\"so-conj\"},{match:\"[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)\",group:0,tag:\"Conjunction\",reason:\"how-he-is-x\"},{match:\"#Copula [(who|what|where|why|how|when)] #Noun\",group:0,tag:\"Conjunction\",reason:\"when-he\"},{match:\"#Verb [that] #Pronoun\",group:0,tag:\"Conjunction\",reason:\"said-that-he\"},{match:\"#Noun [that] #Copula\",group:0,tag:\"Conjunction\",reason:\"that-are\"},{match:\"#Noun [that] #Verb #Adjective\",group:0,tag:\"Conjunction\",reason:\"that-seem\"},{match:\"#Noun #Copula not? [that] #Adjective\",group:0,tag:\"Adverb\",reason:\"that-adj\"},{match:\"#Verb #Adverb? #Noun [(that|which)]\",group:0,tag:\"Preposition\",reason:\"that-prep\"},{match:\"@hasComma [which] (#Pronoun|#Verb)\",group:0,tag:\"Preposition\",reason:\"which-copula\"},{match:\"#Noun [like] #Noun\",group:0,tag:\"Preposition\",reason:\"noun-like\"},{match:\"^[like] #Determiner\",group:0,tag:\"Preposition\",reason:\"like-the\"},{match:\"a #Noun [like] (#Noun|#Determiner)\",group:0,tag:\"Preposition\",reason:\"a-noun-like\"},{match:\"#Adverb [like]\",group:0,tag:\"Verb\",reason:\"really-like\"},{match:\"(not|nothing|never) [like]\",group:0,tag:\"Preposition\",reason:\"nothing-like\"},{match:\"#Infinitive #Pronoun [like]\",group:0,tag:\"Preposition\",reason:\"treat-them-like\"},{match:\"[#QuestionWord] (#Pronoun|#Determiner)\",group:0,tag:\"Preposition\",reason:\"how-he\"},{match:\"[#QuestionWord] #Participle\",group:0,tag:\"Preposition\",reason:\"when-stolen\"},{match:\"[how] (#Determiner|#Copula|#Modal|#PastTense)\",group:0,tag:\"QuestionWord\",reason:\"how-is\"},{match:\"#Plural [(who|which|when)] .\",group:0,tag:\"Preposition\",reason:\"people-who\"}],[{match:\"holy (shit|fuck|hell)\",tag:\"Expression\",reason:\"swears-expression\"},{match:\"^[(well|so|okay|now)] !#Adjective?\",group:0,tag:\"Expression\",reason:\"well-\"},{match:\"^come on\",tag:\"Expression\",reason:\"come-on\"},{match:\"(say|says|said) [sorry]\",group:0,tag:\"Expression\",reason:\"say-sorry\"},{match:\"^(ok|alright|shoot|hell|anyways)\",tag:\"Expression\",reason:\"ok-\"},{match:\"^(say && @hasComma)\",tag:\"Expression\",reason:\"say-\"},{match:\"^(like && @hasComma)\",tag:\"Expression\",reason:\"like-\"},{match:\"^[(dude|man|girl)] #Pronoun\",group:0,tag:\"Expression\",reason:\"dude-i\"}]);let Bl=null;var Sl={postTagger:function(e){const{world:t}=e,{model:n,methods:r}=t;Bl=Bl||r.one.buildNet(n.two.matches,t);const o=r.two.quickSplit(e.document).map((e=>{const t=e[0];return[t.index[0],t.index[1],t.index[1]+e.length]})),a=e.update(o);return a.cache(),a.sweep(Bl),e.uncache(),e.unfreeze(),e},tagger:e=>e.compute([\"freeze\",\"lexicon\",\"preTagger\",\"postTagger\",\"unfreeze\"])};const $l={api:function(e){e.prototype.confidence=function(){let e=0,t=0;return this.docs.forEach((n=>{n.forEach((n=>{t+=1,e+=n.confidence||1}))})),0===t?1:(e=>Math.round(100*e)/100)(e/t)},e.prototype.tagger=function(){return this.compute([\"tagger\"])}},compute:Sl,model:{two:{matches:zl}},hooks:[\"postTagger\"]},Ml=function(e,t){const n=function(e){return Object.keys(e.hooks).filter((e=>!e.startsWith(\"#\")&&!e.startsWith(\"%\")))}(t);if(0===n.length)return e;e._cache||e.cache();const r=e._cache;return e.filter(((e,t)=>n.some((e=>r[t].has(e)))))};var Ll={lib:{lazy:function(e,t){let n=t;\"string\"==typeof t&&(n=this.buildNet([{match:t}]));const r=this.tokenize(e),o=Ml(r,n);return o.found?(o.compute([\"index\",\"tagger\"]),o.match(t)):r.none()}}};const Kl=function(e,t,n){let r=e.split(/ /g).map((e=>e.toLowerCase().trim()));r=r.filter((e=>e)),r=r.map((e=>`{${e}}`)).join(\" \");let o=this.match(r);return n&&(o=o.if(n)),o.has(\"#Verb\")?function(e,t){let n=t;return e.forEach((e=>{e.has(\"#Infinitive\")||(n=function(e,t){const n=(0,e.methods.two.transform.verb.conjugate)(t,e.model);return e.has(\"#Gerund\")?n.Gerund:e.has(\"#PastTense\")?n.PastTense:e.has(\"#PresentTense\")?n.PresentTense:e.has(\"#Gerund\")?n.Gerund:t}(e,t)),e.replaceWith(n)})),e}(o,t):o.has(\"#Noun\")?function(e,t){let n=t;e.has(\"#Plural\")&&(n=(0,e.methods.two.transform.noun.toPlural)(t,e.model));e.replaceWith(n,{possessives:!0})}(o,t):o.has(\"#Adverb\")?function(e,t){const{toAdverb:n}=e.methods.two.transform.adjective,r=n(t);r&&e.replaceWith(r)}(o,t):o.has(\"#Adjective\")?function(e,t){const{toComparative:n,toSuperlative:r}=e.methods.two.transform.adjective;let o=t;e.has(\"#Comparative\")?o=n(o,e.model):e.has(\"#Superlative\")&&(o=r(o,e.model)),o&&e.replaceWith(o)}(o,t):this};var Jl={api:function(e){e.prototype.swap=Kl}};h.plugin(cl),h.plugin(Ol),h.plugin($l),h.plugin(Ll),h.plugin(Jl);const Wl=function(e){const{fromComparative:t,fromSuperlative:n}=e.methods.two.transform.adjective,r=e.text(\"normal\");return e.has(\"#Comparative\")?t(r,e.model):e.has(\"#Superlative\")?n(r,e.model):r};var ql={api:function(e){class Adjectives extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Adjectives\"}json(e={}){const{toAdverb:t,toNoun:n,toSuperlative:r,toComparative:o}=this.methods.two.transform.adjective;return e.normal=!0,this.map((a=>{const i=a.toView().json(e)[0]||{},s=Wl(a);return i.adjective={adverb:t(s,this.model),noun:n(s,this.model),superlative:r(s,this.model),comparative:o(s,this.model)},i}),[])}adverbs(){return this.before(\"#Adverb+$\").concat(this.after(\"^#Adverb+\"))}conjugate(e){const{toComparative:t,toSuperlative:n,toNoun:r,toAdverb:o}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const a=Wl(e);return{Adjective:a,Comparative:t(a,this.model),Superlative:n(a,this.model),Noun:r(a,this.model),Adverb:o(a,this.model)}}),[])}toComparative(e){const{toComparative:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}toSuperlative(e){const{toSuperlative:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}toAdverb(e){const{toAdverb:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}toNoun(e){const{toNoun:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}}e.prototype.adjectives=function(e){let t=this.match(\"#Adjective\");return t=t.getNth(e),new Adjectives(t.document,t.pointer)},e.prototype.superlatives=function(e){let t=this.match(\"#Superlative\");return t=t.getNth(e),new Adjectives(t.document,t.pointer)},e.prototype.comparatives=function(e){let t=this.match(\"#Comparative\");return t=t.getNth(e),new Adjectives(t.document,t.pointer)}}};var Ul={api:function(e){class Adverbs extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Adverbs\"}conjugate(e){return this.getNth(e).map((e=>{const t=function(e){return e.compute(\"root\").text(\"root\")}(e);return{Adverb:e.text(\"normal\"),Adjective:t}}),[])}json(e={}){const t=this.methods.two.transform.adjective.fromAdverb;return e.normal=!0,this.map((n=>{const r=n.toView().json(e)[0]||{};return r.adverb={adjective:t(r.normal)},r}),[])}}e.prototype.adverbs=function(e){let t=this.match(\"#Adverb\");return t=t.getNth(e),new Adverbs(t.document,t.pointer)}}};const Rl=function(e){let t=this;t=function(e){let t=e.parentheses();return t=t.filter((e=>e.wordCount()>=3&&e.has(\"#Verb\")&&e.has(\"#Noun\"))),e.splitOn(t)}(t),t=function(e){let t=e.quotations();return t=t.filter((e=>e.wordCount()>=3&&e.has(\"#Verb\")&&e.has(\"#Noun\"))),e.splitOn(t)}(t),t=function(e){let t=e.match(\"@hasComma\");return t=t.filter((e=>{if(1===e.growLeft(\".\").wordCount())return!1;if(1===e.growRight(\". .\").wordCount())return!1;let t=e.grow(\".\");return t=t.ifNo(\"@hasComma @hasComma\"),t=t.ifNo(\"@hasComma (and|or) .\"),t=t.ifNo(\"(#City && @hasComma) #Country\"),t=t.ifNo(\"(#WeekDay && @hasComma) #Date\"),t=t.ifNo(\"(#Date+ && @hasComma) #Value\"),t=t.ifNo(\"(#Adjective && @hasComma) #Adjective\"),t.found})),e.splitAfter(t)}(t),t=t.splitAfter(\"(@hasEllipses|@hasSemicolon|@hasDash|@hasColon)\"),t=t.splitAfter(\"^#Pronoun (said|says)\"),t=t.splitBefore(\"(said|says) #ProperNoun$\"),t=t.splitBefore(\". . if .{4}\"),t=t.splitBefore(\"and while\"),t=t.splitBefore(\"now that\"),t=t.splitBefore(\"ever since\"),t=t.splitBefore(\"(supposing|although)\"),t=t.splitBefore(\"even (while|if|though)\"),t=t.splitBefore(\"(whereas|whose)\"),t=t.splitBefore(\"as (though|if)\"),t=t.splitBefore(\"(til|until)\");const n=t.match(\"#Verb .* [but] .* #Verb\",0);n.found&&(t=t.splitBefore(n));const r=t.if(\"if .{2,9} then .\").match(\"then\");return t=t.splitBefore(r),\"number\"==typeof e&&(t=t.get(e)),t},Ql={this:\"Noun\",then:\"Pivot\"},Zl=[{match:\"[that] #Determiner #Noun\",group:0,chunk:\"Pivot\"},{match:\"#PastTense [that]\",group:0,chunk:\"Pivot\"},{match:\"[so] #Determiner\",group:0,chunk:\"Pivot\"},{match:\"#Copula #Adverb+? [#Adjective]\",group:0,chunk:\"Adjective\"},{match:\"#Adjective and #Adjective\",chunk:\"Adjective\"},{match:\"#Adverb+ and #Adverb #Verb\",chunk:\"Verb\"},{match:\"#Gerund #Adjective$\",chunk:\"Verb\"},{match:\"#Gerund to #Verb\",chunk:\"Verb\"},{match:\"#PresentTense and #PresentTense\",chunk:\"Verb\"},{match:\"#Adverb #Negative\",chunk:\"Verb\"},{match:\"(want|wants|wanted) to #Infinitive\",chunk:\"Verb\"},{match:\"#Verb #Reflexive\",chunk:\"Verb\"},{match:\"#Verb [to] #Adverb? #Infinitive\",group:0,chunk:\"Verb\"},{match:\"[#Preposition] #Gerund\",group:0,chunk:\"Verb\"},{match:\"#Infinitive [that] <Noun>\",group:0,chunk:\"Verb\"},{match:\"#Noun of #Determiner? #Noun\",chunk:\"Noun\"},{match:\"#Value+ #Adverb? #Adjective\",chunk:\"Noun\"},{match:\"the [#Adjective] #Noun\",chunk:\"Noun\"},{match:\"#Singular in #Determiner? #Singular\",chunk:\"Noun\"},{match:\"#Plural [in] #Determiner? #Noun\",group:0,chunk:\"Pivot\"},{match:\"#Noun and #Determiner? #Noun\",notIf:\"(#Possessive|#Pronoun)\",chunk:\"Noun\"}];let _l=null;const Xl=function(e,t){if((\"undefined\"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_CHUNKS){const n=(e.normal+\"'\").padEnd(8);console.log(`  | '${n}  →  \u001b[34m${t.padEnd(12)}\u001b[0m \u001b[2m -fallback- \u001b[0m`)}e.chunk=t};var Yl={chunks:function(e){const{document:t,world:n}=e;!function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];!0!==Ql.hasOwnProperty(r.normal)?r.tags.has(\"Verb\")?r.chunk=\"Verb\":r.tags.has(\"Noun\")||r.tags.has(\"Determiner\")||r.tags.has(\"Value\")?r.chunk=\"Noun\":r.tags.has(\"QuestionWord\")&&(r.chunk=\"Pivot\"):r.chunk=Ql[r.normal]}}(t),function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];if(r.chunk)continue;const o=e[t][n+1],a=e[t][n-1];if(r.tags.has(\"Adjective\")){if(a&&a.tags.has(\"Copula\")){r.chunk=\"Adjective\";continue}if(a&&a.tags.has(\"Determiner\")){r.chunk=\"Noun\";continue}if(o&&o.tags.has(\"Noun\")){r.chunk=\"Noun\";continue}}else if(r.tags.has(\"Adverb\")||r.tags.has(\"Negative\")){if(a&&a.tags.has(\"Adjective\")){r.chunk=\"Adjective\";continue}if(a&&a.tags.has(\"Verb\")){r.chunk=\"Verb\";continue}if(o&&o.tags.has(\"Adjective\")){r.chunk=\"Adjective\";continue}if(o&&o.tags.has(\"Verb\")){r.chunk=\"Verb\";continue}}}}(t),function(e,t,n){const{methods:r}=n;_l=_l||r.one.buildNet(Zl,n),e.sweep(_l)}(e,0,n),function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];void 0===r.chunk&&(r.tags.has(\"Conjunction\")||r.tags.has(\"Preposition\")?Xl(r,\"Pivot\"):r.tags.has(\"Adverb\")?Xl(r,\"Verb\"):r.chunk=\"Noun\")}}(t),function(e){const t=[];let n=null;e.forEach((e=>{for(let r=0;r<e.length;r+=1){const o=e[r];n&&o.chunk===n?t[t.length-1].terms.push(o):(t.push({chunk:o.chunk,terms:[o]}),n=o.chunk)}})),t.forEach((e=>{if(\"Verb\"===e.chunk){const t=e.terms.find((e=>e.tags.has(\"Verb\")));t||e.terms.forEach((e=>e.chunk=null))}}))}(t)}},eu={compute:Yl,api:function(e){class Chunks extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Chunks\"}isVerb(){return this.filter((e=>e.has(\"<Verb>\")))}isNoun(){return this.filter((e=>e.has(\"<Noun>\")))}isAdjective(){return this.filter((e=>e.has(\"<Adjective>\")))}isPivot(){return this.filter((e=>e.has(\"<Pivot>\")))}debug(){return this.toView().debug(\"chunks\"),this}update(e){const t=new Chunks(this.document,e);return t._cache=this._cache,t}}e.prototype.chunks=function(e){let t=function(e){const t=[];let n=null;return e.clauses().docs.forEach((e=>{e.forEach((e=>{e.chunk&&e.chunk===n?t[t.length-1][2]=e.index[1]+1:(n=e.chunk,t.push([e.index[0],e.index[1],e.index[1]+1]))})),n=null})),e.update(t)}(this);return t=t.getNth(e),new Chunks(this.document,t.pointer)},e.prototype.clauses=Rl},hooks:[\"chunks\"]};const tu=/\\./g,nu=/\\(/,ru=/\\)/,ou=function(e,t){for(;t<e.length;t+=1)if(e[t].post&&ru.test(e[t].post)){let[,n]=e[t].index;return n=n||0,n}return null},au=function(e){class Parentheses extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Possessives\"}strip(){return function(e){return e.docs.forEach((e=>{e[0].pre=e[0].pre.replace(nu,\"\");const t=e[e.length-1];t.post=t.post.replace(ru,\"\")})),e}(this)}}e.prototype.parentheses=function(e){let t=function(e){const t=[];return e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const r=e[n];if(r.pre&&nu.test(r.pre)){const r=ou(e,n);if(null!==r){const[o,a]=e[n].index;t.push([o,a,r+1,e[n].id]),n=r}}}})),e.update(t)}(this);return t=t.getNth(e),new Parentheses(t.document,t.pointer)}},iu=/'s$/,su={'\"':'\"',\"＂\":\"＂\",\"'\":\"'\",\"“\":\"”\",\"‘\":\"’\",\"‟\":\"”\",\"‛\":\"’\",\"„\":\"”\",\"⹂\":\"”\",\"‚\":\"’\",\"«\":\"»\",\"‹\":\"›\",\"‵\":\"′\",\"‶\":\"″\",\"‷\":\"‴\",\"〝\":\"〞\",\"`\":\"´\",\"〟\":\"〞\"},lu=RegExp(\"[\"+Object.keys(su).join(\"\")+\"]\"),uu=RegExp(\"[\"+Object.values(su).join(\"\")+\"]\"),cu=function(e,t){const n=e[t].pre.match(lu)[0]||\"\";if(!n||!su[n])return null;const r=su[n];for(;t<e.length;t+=1)if(e[t].post&&e[t].post.match(r))return t;return null},hu=function(e){class Quotations extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Possessives\"}strip(){return function(e){e.docs.forEach((e=>{e[0].pre=e[0].pre.replace(lu,\"\");const t=e[e.length-1];t.post=t.post.replace(uu,\"\")}))}(this)}}e.prototype.quotations=function(e){let t=function(e){const t=[];return e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const r=e[n];if(r.pre&&lu.test(r.pre)){const r=cu(e,n);if(null!==r){const[o,a]=e[n].index;t.push([o,a,r+1,e[n].id]),n=r}}}})),e.update(t)}(this);return t=t.getNth(e),new Quotations(t.document,t.pointer)}},du=function(e){let t=this.splitAfter(\"@hasComma\");return t=t.match(\"#PhoneNumber+\"),t=t.getNth(e),t},gu=[[\"hyphenated\",\"@hasHyphen .\"],[\"hashTags\",\"#HashTag\"],[\"emails\",\"#Email\"],[\"emoji\",\"#Emoji\"],[\"emoticons\",\"#Emoticon\"],[\"atMentions\",\"#AtMention\"],[\"urls\",\"#Url\"],[\"conjunctions\",\"#Conjunction\"],[\"prepositions\",\"#Preposition\"],[\"abbreviations\",\"#Abbreviation\"],[\"honorifics\",\"#Honorific\"]],mu=[[\"emojis\",\"emoji\"],[\"atmentions\",\"atMentions\"]],pu=/\\//;var fu={api:function(e){!function(e){class Acronyms extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Acronyms\"}strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.replace(tu,\"\"),e.normal=e.normal.replace(tu,\"\")}))})),this}addPeriods(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.replace(tu,\"\"),e.normal=e.normal.replace(tu,\"\"),e.text=e.text.split(\"\").join(\".\")+\".\",e.normal=e.normal.split(\"\").join(\".\")+\".\"}))})),this}}e.prototype.acronyms=function(e){let t=this.match(\"#Acronym\");return t=t.getNth(e),new Acronyms(t.document,t.pointer)}}(e),au(e),function(e){class Possessives extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Possessives\"}strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.replace(iu,\"\"),e.normal=e.normal.replace(iu,\"\")}))})),this}}e.prototype.possessives=function(e){let t=function(e){let t=e.match(\"#Possessive+\");return t.has(\"#Person\")&&(t=t.growLeft(\"#Person+\")),t.has(\"#Place\")&&(t=t.growLeft(\"#Place+\")),t.has(\"#Organization\")&&(t=t.growLeft(\"#Organization+\")),t}(this);return t=t.getNth(e),new Possessives(t.document,t.pointer)}}(e),hu(e),function(e){gu.forEach((t=>{e.prototype[t[0]]=function(e){const n=this.match(t[1]);return\"number\"==typeof e?n.get(e):n}})),e.prototype.phoneNumbers=du,mu.forEach((t=>{e.prototype[t[0]]=e.prototype[t[1]]}))}(e),function(e){class Slashes extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Slashes\"}split(){return this.map((e=>{const t=e.text().split(pu);return(e=e.replaceWith(t.join(\" \"))).growRight(\"(\"+t.join(\"|\")+\")+\")}))}}e.prototype.slashes=function(e){let t=this.match(\"#SlashedTerm\");return t=t.getNth(e),new Slashes(t.document,t.pointer)}}(e)}};const bu=function(e,t){e.docs.forEach((e=>{e.forEach(t)}))};var vu={case:e=>{bu(e,(e=>{e.text=e.text.toLowerCase()}))},unicode:e=>{const t=e.world,n=t.methods.one.killUnicode;bu(e,(e=>e.text=n(e.text,t)))},whitespace:e=>{bu(e,(e=>{e.post=e.post.replace(/\\s+/g,\" \"),e.post=e.post.replace(/\\s([.,?!:;])/g,\"$1\"),e.pre=e.pre.replace(/\\s+/g,\"\")}))},punctuation:e=>{bu(e,(e=>{e.post=e.post.replace(/[–—-]/g,\" \"),e.post=e.post.replace(/[,:;]/g,\"\"),e.post=e.post.replace(/\\.{2,}/g,\"\"),e.post=e.post.replace(/\\?{2,}/g,\"?\"),e.post=e.post.replace(/!{2,}/g,\"!\"),e.post=e.post.replace(/\\?!+/g,\"?\")}));const t=e.docs,n=t[t.length-1];if(n&&n.length>0){const e=n[n.length-1];e.post=e.post.replace(/ /g,\"\")}},contractions:e=>{e.contractions().expand()},acronyms:e=>{e.acronyms().strip()},parentheses:e=>{e.parentheses().strip()},possessives:e=>{e.possessives().strip()},quotations:e=>{e.quotations().strip()},emoji:e=>{e.emojis().remove()},honorifics:e=>{e.match(\"#Honorific+ #Person\").honorifics().remove()},adverbs:e=>{e.adverbs().remove()},nouns:e=>{e.nouns().toSingular()},verbs:e=>{e.verbs().toInfinitive()},numbers:e=>{e.numbers().toNumber()},debullet:e=>{const t=/^\\s*([-–—*•])\\s*$/;return e.docs.forEach((e=>{t.test(e[0].pre)&&(e[0].pre=e[0].pre.replace(t,\"\"))})),e}};const yu=e=>e.split(\"|\").reduce(((e,t)=>(e[t]=!0,e)),{}),wu=\"unicode|punctuation|whitespace|acronyms\",ku=\"|case|contractions|parentheses|quotations|emoji|honorifics|debullet\",Pu={light:yu(wu),medium:yu(wu+ku),heavy:yu(wu+ku+\"|possessives|adverbs|nouns|verbs\")};var Au={api:function(e){e.prototype.normalize=function(e=\"light\"){return\"string\"==typeof e&&(e=Pu[e]),Object.keys(e).forEach((t=>{vu.hasOwnProperty(t)&&vu[t](this,e[t])})),this}}};const Cu=[\"after\",\"although\",\"as if\",\"as long as\",\"as\",\"because\",\"before\",\"even if\",\"even though\",\"ever since\",\"if\",\"in order that\",\"provided that\",\"since\",\"so that\",\"than\",\"that\",\"though\",\"unless\",\"until\",\"what\",\"whatever\",\"when\",\"whenever\",\"where\",\"whereas\",\"wherever\",\"whether\",\"which\",\"whichever\",\"who\",\"whoever\",\"whom\",\"whomever\",\"whose\"],Nu=function(e){if(e.before(\"#Preposition$\").found)return!0;if(!e.before().found)return!1;for(let t=0;t<Cu.length;t+=1)if(e.has(Cu[t]))return!0;return!1},ju=function(e,t){if(e.has(\"#Plural\"))return!0;if(e.has(\"#Noun and #Noun\"))return!0;if(e.has(\"(we|they)\"))return!0;if(!0===t.has(\"(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)\"))return!1;if(e.has(\"#Singular\"))return!1;const n=t.text(\"normal\");return n.length>3&&n.endsWith(\"s\")&&!n.endsWith(\"ss\")},xu=function(e){const t=function(e){let t=e.clone();return t=t.match(\"#Noun+\"),t=t.remove(\"(#Adjective|#Preposition|#Determiner|#Value)\"),t=t.not(\"#Possessive\"),t=t.first(),t.found?t:e}(e);return{determiner:e.match(\"#Determiner\").eq(0),adjectives:e.match(\"#Adjective\"),number:e.values(),isPlural:ju(e,t),isSubordinate:Nu(e),root:t}},Iu=e=>e.text(),Tu=e=>e.json({terms:!1,normal:!0}).map((e=>e.normal)),Du=function(e){if(!e.found)return null;const t=e.values(0);if(t.found){return(t.parse()[0]||{}).num}return null},Hu=function(e){return!e.has(\"^(#Uncountable|#ProperNoun|#Place|#Pronoun|#Acronym)+$\")},Eu={tags:!0},Gu={tags:!0};var Ou={api:function(e){class Nouns extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Nouns\"}parse(e){return this.getNth(e).map(xu)}json(e){const t=\"object\"==typeof e?e:{};return this.getNth(e).map((e=>{const n=e.toView().json(t)[0]||{};return t&&!1!==t.noun&&(n.noun=function(e){const t=xu(e);return{root:Iu(t.root),number:Du(t.number),determiner:Iu(t.determiner),adjectives:Tu(t.adjectives),isPlural:t.isPlural,isSubordinate:t.isSubordinate}}(e)),n}),[])}conjugate(e){const t=this.world.methods.two.transform.noun;return this.getNth(e).map((e=>{const n=xu(e),r=n.root.compute(\"root\").text(\"root\"),o={Singular:r};return Hu(n.root)&&(o.Plural=t.toPlural(r,this.model)),o.Singular===o.Plural&&delete o.Plural,o}),[])}isPlural(e){const t=this.filter((e=>xu(e).isPlural));return t.getNth(e)}isSingular(e){const t=this.filter((e=>!xu(e).isPlural));return t.getNth(e)}adjectives(e){let t=this.update([]);return this.forEach((e=>{const n=xu(e).adjectives;n.found&&(t=t.concat(n))})),t.getNth(e)}toPlural(e){return this.getNth(e).map((e=>function(e,t){if(!0===t.isPlural)return e;if(t.root.has(\"#Possessive\")&&(t.root=t.root.possessives().strip()),!Hu(t.root))return e;const{methods:n,model:r}=e.world,{toPlural:o}=n.two.transform.noun,a=o(t.root.text({keepPunct:!1}),r);e.match(t.root).replaceWith(a,Eu).tag(\"Plural\",\"toPlural\"),t.determiner.has(\"(a|an)\")&&e.remove(t.determiner);const i=t.root.after(\"not? #Adverb+? [#Copula]\",0);return i.found&&(i.has(\"is\")?e.replace(i,\"are\"):i.has(\"was\")&&e.replace(i,\"were\")),e}(e,xu(e))))}toSingular(e){return this.getNth(e).map((e=>function(e,t){if(!1===t.isPlural)return e;const{methods:n,model:r}=e.world,{toSingular:o}=n.two.transform.noun,a=o(t.root.text(\"normal\"),r);return e.replace(t.root,a,Gu).tag(\"Singular\",\"toPlural\"),e}(e,xu(e))))}update(e){const t=new Nouns(this.document,e);return t._cache=this._cache,t}}e.prototype.nouns=function(e){let t=function(e){let t=e.clauses().match(\"<Noun>\"),n=t.match(\"@hasComma\");return n=n.not(\"#Place\"),n.found&&(t=t.splitAfter(n)),t=t.splitOn(\"#Expression\"),t=t.splitOn(\"(he|she|we|you|they|i)\"),t=t.splitOn(\"(#Noun|#Adjective) [(he|him|she|it)]\",0),t=t.splitOn(\"[(he|him|she|it)] (#Determiner|#Value)\",0),t=t.splitBefore(\"#Noun [(the|a|an)] #Adjective? #Noun\",0),t=t.splitOn(\"[(here|there)] #Noun\",0),t=t.splitOn(\"[#Noun] (here|there)\",0),t=t.splitBefore(\"(our|my|their|your)\"),t=t.splitOn(\"#Noun [#Determiner]\",0),t=t.if(\"#Noun\"),t}(this);return t=t.getNth(e),new Nouns(this.document,t.pointer)}}};var Fu={ones:{zeroth:0,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,zero:0,one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9},teens:{tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,ten:10,eleven:11,twelve:12,thirteen:13,fourteen:14,fifteen:15,sixteen:16,seventeen:17,eighteen:18,nineteen:19},tens:{twentieth:20,thirtieth:30,fortieth:40,fourtieth:40,fiftieth:50,sixtieth:60,seventieth:70,eightieth:80,ninetieth:90,twenty:20,thirty:30,forty:40,fourty:40,fifty:50,sixty:60,seventy:70,eighty:80,ninety:90},multiples:{hundredth:100,thousandth:1e3,millionth:1e6,billionth:1e9,trillionth:1e12,quadrillionth:1e15,quintillionth:1e18,sextillionth:1e21,septillionth:1e24,hundred:100,thousand:1e3,million:1e6,billion:1e9,trillion:1e12,quadrillion:1e15,quintillion:1e18,sextillion:1e21,septillion:1e24,grand:1e3}};const Vu=(e,t)=>{if(Fu.ones.hasOwnProperty(e)){if(t.ones||t.teens)return!1}else if(Fu.teens.hasOwnProperty(e)){if(t.ones||t.teens||t.tens)return!1}else if(Fu.tens.hasOwnProperty(e)&&(t.ones||t.teens||t.tens))return!1;return!0},zu=function(e){let t=\"0.\";for(let n=0;n<e.length;n++){const r=e[n];if(!0===Fu.ones.hasOwnProperty(r))t+=Fu.ones[r];else if(!0===Fu.teens.hasOwnProperty(r))t+=Fu.teens[r];else if(!0===Fu.tens.hasOwnProperty(r))t+=Fu.tens[r];else{if(!0!==/^[0-9]$/.test(r))return 0;t+=r}}return parseFloat(t)},Bu=e=>e=(e=(e=(e=(e=(e=(e=(e=e.replace(/1st$/,\"1\")).replace(/2nd$/,\"2\")).replace(/3rd$/,\"3\")).replace(/([4567890])r?th$/,\"$1\")).replace(/^[$€¥£¢]/,\"\")).replace(/[%$€¥£¢]$/,\"\")).replace(/,/g,\"\")).replace(/([0-9])([a-z\\u00C0-\\u00FF]{1,2})$/,\"$1\"),Su=/^([0-9,. ]+)\\/([0-9,. ]+)$/,$u={\"a few\":3,\"a couple\":2,\"a dozen\":12,\"two dozen\":24,zero:0},Mu=e=>Object.keys(e).reduce(((t,n)=>t+=e[n]),0),Lu=function(e){if(!0===$u.hasOwnProperty(e))return $u[e];if(\"a\"===e||\"an\"===e)return 1;const t=(e=>{const t=[{reg:/^(minus|negative)[\\s-]/i,mult:-1},{reg:/^(a\\s)?half[\\s-](of\\s)?/i,mult:.5}];for(let n=0;n<t.length;n++)if(!0===t[n].reg.test(e))return{amount:t[n].mult,str:e.replace(t[n].reg,\"\")};return{amount:1,str:e}})(e);let n=null,r={},o=0,a=!1;const i=(e=t.str).split(/[ -]/);for(let e=0;e<i.length;e++){let s=i[e];if(s=Bu(s),!s||\"and\"===s)continue;if(\"-\"===s||\"negative\"===s){a=!0;continue}if(\"-\"===s.charAt(0)&&(a=!0,s=s.substring(1)),\"point\"===s)return o+=Mu(r),o+=zu(i.slice(e+1,i.length)),o*=t.amount,o;const l=s.match(Su);if(l){const e=parseFloat(l[1].replace(/[, ]/g,\"\")),t=parseFloat(l[2].replace(/[, ]/g,\"\"));t&&(o+=e/t||0)}else{if(Fu.tens.hasOwnProperty(s)&&r.ones&&1===Object.keys(r).length&&(o=100*r.ones,r={}),!1===Vu(s,r))return null;if(/^[0-9.]+$/.test(s))r.ones=parseFloat(s);else if(!0===Fu.ones.hasOwnProperty(s))r.ones=Fu.ones[s];else if(!0===Fu.teens.hasOwnProperty(s))r.teens=Fu.teens[s];else if(!0===Fu.tens.hasOwnProperty(s))r.tens=Fu.tens[s];else if(!0===Fu.multiples.hasOwnProperty(s)){let t=Fu.multiples[s];if(t===n)return null;if(100===t&&void 0!==i[e+1]){const n=i[e+1];Fu.multiples[n]&&(t*=Fu.multiples[n],e+=1)}null===n||t<n?(o+=(Mu(r)||1)*t,n=t,r={}):(o+=Mu(r),n=t,o=(o||1)*t,r={})}}}return o+=Mu(r),o*=t.amount,o*=a?-1:1,0===o&&0===Object.keys(r).length?null:o},Ku=/s$/,Ju=function(e){const t=e.text(\"reduced\");return Lu(t)},Wu={half:2,halve:2,quarter:4},qu=function(e){const t=function(e){const t=e.text(\"reduced\");return Wu.hasOwnProperty(t)?{numerator:1,denominator:Wu[t]}:null}(e=e.clone())||function(e){const t=e.text(\"reduced\").match(/^([-+]?[0-9]+)\\/([-+]?[0-9]+)(st|nd|rd|th)?s?$/);return t&&t[1]&&t[0]?{numerator:Number(t[1]),denominator:Number(t[2])}:null}(e)||function(e){const t=e.match(\"[<num>#Value+] out of every? [<den>#Value+]\");if(!0!==t.found)return null;let{num:n,den:r}=t.groups();return n&&r?(n=Ju(n),r=Ju(r),n&&r&&\"number\"==typeof n&&\"number\"==typeof r?{numerator:n,denominator:r}:null):null}(e)||function(e){const t=e.match(\"[<num>(#Cardinal|a)+] [<den>#Fraction+]\");if(!0!==t.found)return null;let{num:n,den:r}=t.groups();n=n.has(\"a\")?1:Ju(n);let o=r.text(\"reduced\");return Ku.test(o)&&(o=o.replace(Ku,\"\"),r=r.replaceWith(o)),r=Wu.hasOwnProperty(o)?Wu[o]:Ju(r),\"number\"==typeof n&&\"number\"==typeof r?{numerator:n,denominator:r}:null}(e)||function(e){const t=e.match(\"^#Ordinal$\");if(!0!==t.found)return null;if(e.lookAhead(\"^of .\"))return{numerator:1,denominator:Ju(t)};return null}(e)||null;return null!==t&&t.numerator&&t.denominator&&(t.decimal=t.numerator/t.denominator,t.decimal=(e=>{const t=Math.round(1e3*e)/1e3;return 0===t&&0!==e?e:t})(t.decimal)),t},Uu=function(e){if(e<1e6)return String(e);let t;return t=\"number\"==typeof e?e.toFixed(0):e,-1===t.indexOf(\"e+\")?t:t.replace(\".\",\"\").split(\"e+\").reduce((function(e,t){return e+Array(t-e.length+2).join(0)}))},Ru=[[\"ninety\",90],[\"eighty\",80],[\"seventy\",70],[\"sixty\",60],[\"fifty\",50],[\"forty\",40],[\"thirty\",30],[\"twenty\",20]],Qu=[\"\",\"one\",\"two\",\"three\",\"four\",\"five\",\"six\",\"seven\",\"eight\",\"nine\",\"ten\",\"eleven\",\"twelve\",\"thirteen\",\"fourteen\",\"fifteen\",\"sixteen\",\"seventeen\",\"eighteen\",\"nineteen\"],Zu=[[1e24,\"septillion\"],[1e20,\"hundred sextillion\"],[1e21,\"sextillion\"],[1e20,\"hundred quintillion\"],[1e18,\"quintillion\"],[1e17,\"hundred quadrillion\"],[1e15,\"quadrillion\"],[1e14,\"hundred trillion\"],[1e12,\"trillion\"],[1e11,\"hundred billion\"],[1e9,\"billion\"],[1e8,\"hundred million\"],[1e6,\"million\"],[1e5,\"hundred thousand\"],[1e3,\"thousand\"],[100,\"hundred\"],[1,\"one\"]],_u=function(e){const t=[];if(e>100)return t;for(let n=0;n<Ru.length;n++)e>=Ru[n][1]&&(e-=Ru[n][1],t.push(Ru[n][0]));return Qu[e]&&t.push(Qu[e]),t},Xu=function(e){let t=e.num;if(0===t||\"0\"===t)return\"zero\";t>1e21&&(t=Uu(t));let n=[];t<0&&(n.push(\"minus\"),t=Math.abs(t));const r=function(e){let t=e;const n=[];return Zu.forEach((r=>{if(e>=r[0]){const e=Math.floor(t/r[0]);t-=e*r[0],e&&n.push({unit:r[1],count:e})}})),n}(t);for(let e=0;e<r.length;e++){let t=r[e].unit;\"one\"===t&&(t=\"\",n.length>1&&n.push(\"and\")),n=n.concat(_u(r[e].count)),n.push(t)}return n=n.concat((e=>{const t=[\"zero\",\"one\",\"two\",\"three\",\"four\",\"five\",\"six\",\"seven\",\"eight\",\"nine\"],n=[],r=Uu(e).match(/\\.([0-9]+)/);if(!r||!r[0])return n;n.push(\"point\");const o=r[0].split(\"\");for(let e=0;e<o.length;e++)n.push(t[o[e]]);return n})(t)),n=n.filter((e=>e)),0===n.length&&(n[0]=\"\"),n.join(\" \")},Yu={one:\"first\",two:\"second\",three:\"third\",five:\"fifth\",eight:\"eighth\",nine:\"ninth\",twelve:\"twelfth\",twenty:\"twentieth\",thirty:\"thirtieth\",forty:\"fortieth\",fourty:\"fourtieth\",fifty:\"fiftieth\",sixty:\"sixtieth\",seventy:\"seventieth\",eighty:\"eightieth\",ninety:\"ninetieth\"},ec=e=>{const t=Xu(e).split(\" \"),n=t[t.length-1];return Yu.hasOwnProperty(n)?t[t.length-1]=Yu[n]:t[t.length-1]=n.replace(/y$/,\"i\")+\"th\",t.join(\" \")},tc=function(e){class Fractions extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Fractions\"}parse(e){return this.getNth(e).map(qu)}get(e){return this.getNth(e).map(qu)}json(e){return this.getNth(e).map((t=>{const n=t.toView().json(e)[0],r=qu(t);return n.fraction=r,n}),[])}toDecimal(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu(e);(e=e.replaceWith(String(t),!0)).tag(\"NumericValue\"),e.unTag(\"Fraction\")})),this}toFraction(e){return this.getNth(e).forEach((e=>{const t=qu(e);if(t&&\"number\"==typeof t.numerator&&\"number\"==typeof t.denominator){const n=`${t.numerator}/${t.denominator}`;this.replace(e,n)}})),this}toOrdinal(e){return this.getNth(e).forEach((e=>{let t=function(e){if(!e.numerator||!e.denominator)return\"\";const t=Xu({num:e.numerator});let n=ec({num:e.denominator});return 2===e.denominator&&(n=\"half\"),t&&n?(1!==e.numerator&&(n+=\"s\"),`${t} ${n}`):\"\"}(qu(e));e.after(\"^#Noun\").found&&(t+=\" of\"),e.replaceWith(t)})),this}toCardinal(e){return this.getNth(e).forEach((e=>{const t=function(e){return e.numerator&&e.denominator?`${Xu({num:e.numerator})} out of ${Xu({num:e.denominator})}`:\"\"}(qu(e));e.replaceWith(t)})),this}toPercentage(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu(e);let n=100*t;n=Math.round(100*n)/100,e.replaceWith(`${n}%`)})),this}}e.prototype.fractions=function(e){let t=function(e,t){let n=e.match(\"#Fraction+\");return n=n.filter((e=>!e.lookBehind(\"#Value and$\").found)),n=n.notIf(\"#Value seconds\"),n}(this);return t=t.getNth(e),new Fractions(this.document,t.pointer)}},nc=\"twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|fourty\",rc=function(e){let t=e.match(\"#Value+\");if(t.has(\"#NumericValue #NumericValue\")&&(t.has(\"#Value @hasComma #Value\")?t.splitAfter(\"@hasComma\"):t.has(\"#NumericValue #Fraction\")?t.splitAfter(\"#NumericValue #Fraction\"):t=t.splitAfter(\"#NumericValue\")),t.has(\"#Value #Value #Value\")&&!t.has(\"#Multiple\")&&t.has(\"(\"+nc+\") #Cardinal #Cardinal\")&&(t=t.splitAfter(\"(\"+nc+\") #Cardinal\")),t.has(\"#Value #Value\")){t.has(\"#NumericValue #NumericValue\")&&(t=t.splitOn(\"#Year\")),t.has(\"(\"+nc+\") (eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen)\")&&(t=t.splitAfter(\"(\"+nc+\")\"));const e=t.match(\"#Cardinal #Cardinal\");if(e.found&&!t.has(\"(point|decimal|#Fraction)\")&&!e.has(\"#Cardinal (#Multiple|point|decimal)\")){const n=t.has(`(one|two|three|four|five|six|seven|eight|nine) (${nc})`),r=e.has(\"(\"+nc+\") #Cardinal\"),o=e.has(\"#Multiple #Value\");n||r||o||e.terms().forEach((e=>{t=t.splitOn(e)}))}t.match(\"#Ordinal #Ordinal\").match(\"#TextValue\").found&&!t.has(\"#Multiple\")&&(t.has(\"(\"+nc+\") #Ordinal\")||(t=t.splitAfter(\"#Ordinal\"))),t=t.splitBefore(\"#Ordinal [#Cardinal]\",0),t.has(\"#TextValue #NumericValue\")&&!t.has(\"(\"+nc+\"|#Multiple)\")&&(t=t.splitBefore(\"#TextValue #NumericValue\"))}return t=t.splitAfter(\"#NumberRange\"),t=t.splitBefore(\"#Year\"),t},oc=function(e){if(\"string\"==typeof e)return{num:Lu(e)};let t=e.text(\"reduced\");const n=e.growRight(\"#Unit\").match(\"#Unit$\").text(\"machine\"),r=/[0-9],[0-9]/.test(e.text(\"text\"));if(1===e.terms().length&&!e.has(\"#Multiple\")){const o=function(e,t){const n=(e=e.replace(/,/g,\"\")).split(/([0-9.,]*)/);let[r,o]=n,a=n.slice(2).join(\"\");return\"\"!==o&&t.length<2?(o=Number(o||e),\"number\"!=typeof o&&(o=null),a=a||\"\",\"st\"!==a&&\"nd\"!==a&&\"rd\"!==a&&\"th\"!==a||(a=\"\"),{prefix:r||\"\",num:o,suffix:a}):null}(t,e);if(null!==o)return o.hasComma=r,o.unit=n,o}let o=e.match(\"#Fraction{2,}$\");o=!1===o.found?e.match(\"^#Fraction$\"):o;let a=null;o.found&&(o.has(\"#Value and #Value #Fraction\")&&(o=o.match(\"and #Value #Fraction\")),a=qu(o),t=(e=(e=e.not(o)).not(\"and$\")).text(\"reduced\"));let i=0;return t&&(i=Lu(t)||0),a&&a.decimal&&(i+=a.decimal),{hasComma:r,prefix:\"\",num:i,suffix:\"\",isOrdinal:e.has(\"#Ordinal\"),isText:e.has(\"#TextValue\"),isFraction:e.has(\"#Fraction\"),isMoney:e.has(\"#Money\"),unit:n}},ac={\"¢\":\"cents\",$:\"dollars\",\"£\":\"pounds\",\"¥\":\"yen\",\"€\":\"euros\",\"₡\":\"colón\",\"฿\":\"baht\",\"₭\":\"kip\",\"₩\":\"won\",\"₹\":\"rupees\",\"₽\":\"ruble\",\"₺\":\"liras\"},ic={\"%\":\"percent\",\"°\":\"degrees\"},sc=function(e){const t={suffix:\"\",prefix:e.prefix};return ac.hasOwnProperty(e.prefix)&&(t.suffix+=\" \"+ac[e.prefix],t.prefix=\"\"),ic.hasOwnProperty(e.suffix)&&(t.suffix+=\" \"+ic[e.suffix]),t.suffix&&1===e.num&&(t.suffix=t.suffix.replace(/s$/,\"\")),!t.suffix&&e.suffix&&(t.suffix+=\" \"+e.suffix),t},lc=function(e,t){if(\"TextOrdinal\"===t){const{prefix:t,suffix:n}=sc(e);return t+ec(e)+n}if(\"Ordinal\"===t)return e.prefix+function(e){const t=e.num;if(!t&&0!==t)return null;const n=t%100;if(n>10&&n<20)return String(t)+\"th\";const r={0:\"th\",1:\"st\",2:\"nd\",3:\"rd\"};let o=Uu(t);const a=o.slice(o.length-1,o.length);return o+=r[a]?r[a]:\"th\",o}(e)+e.suffix;if(\"TextCardinal\"===t){const{prefix:t,suffix:n}=sc(e);return t+Xu(e)+n}let n=e.num;return e.hasComma&&(n=n.toLocaleString()),e.prefix+String(n)+e.suffix},uc=function(e){if(\"string\"==typeof e||\"number\"==typeof e){const t={};return t[e]=!0,t}return t=e,\"[object Array]\"===Object.prototype.toString.call(t)?e.reduce(((e,t)=>(e[t]=!0,e)),{}):e||{};var t},cc=function(e){class Numbers extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Numbers\"}parse(e){return this.getNth(e).map(oc)}get(e){return this.getNth(e).map(oc).map((e=>e.num))}json(e){const t=\"object\"==typeof e?e:{};return this.getNth(e).map((e=>{const n=e.toView().json(t)[0],r=oc(e);return n.number={prefix:r.prefix,num:r.num,suffix:r.suffix,hasComma:r.hasComma,unit:r.unit},n}),[])}units(){return this.growRight(\"#Unit\").match(\"#Unit$\")}isUnit(e){return function(e,t={}){return t=uc(t),e.filter((e=>{const{unit:n}=oc(e);return!(!n||!0!==t[n])}))}(this,e)}isOrdinal(){return this.if(\"#Ordinal\")}isCardinal(){return this.if(\"#Cardinal\")}toNumber(){const e=this.map((e=>{if(!this.has(\"#TextValue\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#Ordinal\")?\"Ordinal\":\"Cardinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"NumericValue\")}));return new Numbers(e.document,e.pointer)}toLocaleString(){return this.forEach((e=>{const t=oc(e);if(null===t.num)return;let n=t.num.toLocaleString();if(e.has(\"#Ordinal\")){const e=lc(t,\"Ordinal\").match(/[a-z]+$/);e&&(n+=e[0]||\"\")}e.replaceWith(n,{tags:!0})})),this}toText(){const e=this.map((e=>{if(e.has(\"#TextValue\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#Ordinal\")?\"TextOrdinal\":\"TextCardinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"TextValue\"),e}));return new Numbers(e.document,e.pointer)}toCardinal(){const e=this.map((e=>{if(!e.has(\"#Ordinal\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#TextValue\")?\"TextCardinal\":\"Cardinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"Cardinal\"),e}));return new Numbers(e.document,e.pointer)}toOrdinal(){const e=this.map((e=>{if(e.has(\"#Ordinal\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#TextValue\")?\"TextOrdinal\":\"Ordinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"Ordinal\"),e}));return new Numbers(e.document,e.pointer)}isEqual(e){return this.filter((t=>oc(t).num===e))}greaterThan(e){return this.filter((t=>oc(t).num>e))}lessThan(e){return this.filter((t=>oc(t).num<e))}between(e,t){return this.filter((n=>{const r=oc(n).num;return r>e&&r<t}))}set(e){if(void 0===e)return this;\"string\"==typeof e&&(e=oc(e).num);const t=this.map((t=>{const n=oc(t);if(n.num=e,null===n.num)return t;let r=t.has(\"#Ordinal\")?\"Ordinal\":\"Cardinal\";t.has(\"#TextValue\")&&(r=t.has(\"#Ordinal\")?\"TextOrdinal\":\"TextCardinal\");let o=lc(n,r);return n.hasComma&&\"Cardinal\"===r&&(o=Number(o).toLocaleString()),(t=t.not(\"#Currency\")).replaceWith(o,{tags:!0}),t}));return new Numbers(t.document,t.pointer)}add(e){if(!e)return this;\"string\"==typeof e&&(e=oc(e).num);const t=this.map((t=>{const n=oc(t);if(null===n.num)return t;n.num+=e;let r=t.has(\"#Ordinal\")?\"Ordinal\":\"Cardinal\";n.isText&&(r=t.has(\"#Ordinal\")?\"TextOrdinal\":\"TextCardinal\");const o=lc(n,r);return t.replaceWith(o,{tags:!0}),t}));return new Numbers(t.document,t.pointer)}subtract(e,t){return this.add(-1*e,t)}increment(e){return this.add(1,e)}decrement(e){return this.add(-1,e)}update(e){const t=new Numbers(this.document,e);return t._cache=this._cache,t}}Numbers.prototype.toNice=Numbers.prototype.toLocaleString,Numbers.prototype.isBetween=Numbers.prototype.between,Numbers.prototype.minus=Numbers.prototype.subtract,Numbers.prototype.plus=Numbers.prototype.add,Numbers.prototype.equals=Numbers.prototype.isEqual,e.prototype.numbers=function(e){let t=rc(this);return t=t.getNth(e),new Numbers(this.document,t.pointer)},e.prototype.percentages=function(e){let t=rc(this);return t=t.filter((e=>e.has(\"#Percent\")||e.after(\"^percent\"))),t=t.getNth(e),new Numbers(this.document,t.pointer)},e.prototype.money=function(e){let t=rc(this);return t=t.filter((e=>e.has(\"#Money\")||e.after(\"^#Currency\"))),t=t.getNth(e),new Numbers(this.document,t.pointer)},e.prototype.values=e.prototype.numbers};var hc={api:function(e){tc(e),cc(e)}};const dc={people:!0,emails:!0,phoneNumbers:!0,places:!0},gc=function(e={}){return!1!==(e=Object.assign({},dc,e)).people&&this.people().replaceWith(\"██████████\"),!1!==e.emails&&this.emails().replaceWith(\"██████████\"),!1!==e.places&&this.places().replaceWith(\"██████████\"),!1!==e.phoneNumbers&&this.phoneNumbers().replaceWith(\"███████\"),this},mc={api:function(e){e.prototype.redact=gc}},pc=function(e){let t=null;return e.has(\"#PastTense\")?t=\"PastTense\":e.has(\"#FutureTense\")?t=\"FutureTense\":e.has(\"#PresentTense\")&&(t=\"PresentTense\"),{tense:t}},fc=function(e){const t=function(e){let t=e;return 1===t.length?t:(t=t.if(\"#Verb\"),1===t.length?t:(t=t.ifNo(\"(after|although|as|because|before|if|since|than|that|though|when|whenever|where|whereas|wherever|whether|while|why|unless|until|once)\"),t=t.ifNo(\"^even (if|though)\"),t=t.ifNo(\"^so that\"),t=t.ifNo(\"^rather than\"),t=t.ifNo(\"^provided that\"),1===t.length?t:(t=t.ifNo(\"(that|which|whichever|who|whoever|whom|whose|whomever)\"),1===t.length?t:(t=t.ifNo(\"(^despite|^during|^before|^through|^throughout)\"),1===t.length?t:(t=t.ifNo(\"^#Gerund\"),1===t.length?t:(0===t.length&&(t=e),t.eq(0)))))))}(e.clauses()),n=t.chunks();let r=e.none(),o=e.none(),a=e.none();return n.forEach(((e,t)=>{0!==t||e.has(\"<Verb>\")?o.found||!e.has(\"<Verb>\")?o.found&&(a=a.concat(e)):o=e:r=e})),o.found&&!r.found&&(r=o.before(\"<Noun>+\").first()),{subj:r,verb:o,pred:a,grammar:pc(o)}};var bc={api:function(e){class Sentences extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Sentences\"}json(e={}){return this.map((t=>{const n=t.toView().json(e)[0]||{},{subj:r,verb:o,pred:a,grammar:i}=fc(t);return n.sentence={subject:r.text(\"normal\"),verb:o.text(\"normal\"),predicate:a.text(\"normal\"),grammar:i},n}),[])}toPastTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let t=e.verbs();const n=t.eq(0);if(n.has(\"#PastTense\"))return e;if(n.toPastTense(),t.length>1){t=t.slice(1),t=t.filter((e=>!e.lookBehind(\"to$\").found)),t=t.if(\"#PresentTense\"),t=t.notIf(\"#Gerund\");const n=e.match(\"to #Verb+ #Conjunction #Verb\").terms();t=t.not(n),t.found&&t.verbs().toPastTense()}return e}(e))))}toPresentTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let t=e.verbs();return t.eq(0).toPresentTense(),t.length>1&&(t=t.slice(1),t=t.filter((e=>!e.lookBehind(\"to$\").found)),t=t.notIf(\"#Gerund\"),t.found&&t.verbs().toPresentTense()),e}(e))))}toFutureTense(e){return this.getNth(e).map((e=>(fc(e),e=function(e){let t=e.verbs();if(t.eq(0).toFutureTense(),t=(e=e.fullSentence()).verbs(),t.length>1){t=t.slice(1);const e=t.filter((e=>!(e.lookBehind(\"to$\").found||!e.has(\"#Copula #Gerund\")&&(e.has(\"#Gerund\")||!e.has(\"#Copula\")&&e.has(\"#PresentTense\")&&!e.has(\"#Infinitive\")&&e.lookBefore(\"(he|she|it|that|which)$\").found))));e.found&&e.forEach((e=>{if(e.has(\"#Copula\"))return e.match(\"was\").replaceWith(\"is\"),void e.match(\"is\").replaceWith(\"will be\");e.toInfinitive()}))}return e}(e),e)))}toInfinitive(e){return this.getNth(e).map((e=>(fc(e),function(e){return e.verbs().toInfinitive(),e}(e))))}toNegative(e){return this.getNth(e).map((e=>(fc(e),function(e){return e.verbs().first().toNegative().compute(\"chunks\"),e}(e))))}toPositive(e){return this.getNth(e).map((e=>(fc(e),function(e){return e.verbs().first().toPositive().compute(\"chunks\"),e}(e))))}isQuestion(e){return this.questions(e)}isExclamation(e){const t=this.filter((e=>e.lastTerm().has(\"@hasExclamation\")));return t.getNth(e)}isStatement(e){const t=this.filter((e=>!e.isExclamation().found&&!e.isQuestion().found));return t.getNth(e)}update(e){const t=new Sentences(this.document,e);return t._cache=this._cache,t}}Sentences.prototype.toPresent=Sentences.prototype.toPresentTense,Sentences.prototype.toPast=Sentences.prototype.toPastTense,Sentences.prototype.toFuture=Sentences.prototype.toFutureTense;const t={sentences:function(e){let t=this.map((e=>e.fullSentence()));return t=t.getNth(e),new Sentences(this.document,t.pointer)},questions:function(e){const t=function(e){const t=/\\?/,{document:n}=e;return e.filter((e=>{const r=e.docs[0]||[],o=r[r.length-1];return!(!o||n[o.index[0]].length!==r.length)&&(!!t.test(o.post)||function(e){const t=e.clauses();return!(/\\.\\.$/.test(e.out(\"text\"))||e.has(\"^#QuestionWord\")&&e.has(\"@hasComma\")||!e.has(\"or not$\")&&!e.has(\"^#QuestionWord\")&&!e.has(\"^(do|does|did|is|was|can|could|will|would|may) #Noun\")&&!e.has(\"^(have|must) you\")&&!t.has(\"(do|does|is|was) #Noun+ #Adverb? (#Adjective|#Infinitive)$\"))}(e))}))}(this);return t.getNth(e)}};Object.assign(e.prototype,t)}};const vc=function(e){const t={};t.firstName=e.match(\"#FirstName+\"),t.lastName=e.match(\"#LastName+\"),t.honorific=e.match(\"#Honorific+\");const n=t.lastName,r=t.firstName;return r.found&&n.found||r.found||n.found||!e.has(\"^#Honorific .$\")||(t.lastName=e.match(\".$\")),t},yc=\"male\",wc=\"female\",kc={mr:yc,mrs:wc,miss:wc,madam:wc,king:yc,queen:wc,duke:yc,duchess:wc,baron:yc,baroness:wc,count:yc,countess:wc,prince:yc,princess:wc,sire:yc,dame:wc,lady:wc,ayatullah:yc,congressman:yc,congresswoman:wc,\"first lady\":wc,mx:null},Pc=function(e,t){const{firstName:n,honorific:r}=e;if(n.has(\"#FemaleName\"))return wc;if(n.has(\"#MaleName\"))return yc;if(r.found){let e=r.text(\"normal\");if(e=e.replace(/\\./g,\"\"),kc.hasOwnProperty(e))return kc[e];if(/^her /.test(e))return wc;if(/^his /.test(e))return yc}const o=t.after();if(!o.has(\"#Person\")&&o.has(\"#Pronoun\")){const e=o.match(\"#Pronoun\");if(e.has(\"(they|their)\"))return null;const t=e.has(\"(he|his)\"),n=e.has(\"(she|her|hers)\");if(t&&!n)return yc;if(n&&!t)return wc}return null},Ac=function(e){const t=this.clauses();let n=t.people();return n=n.concat(t.places()),n=n.concat(t.organizations()),n=n.not(\"(someone|man|woman|mother|brother|sister|father)\"),n=n.sort(\"seq\"),n=n.getNth(e),n};var Cc={api:function(e){!function(e){class People extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"People\"}parse(e){return this.getNth(e).map(vc)}json(e){const t=\"object\"==typeof e?e:{};return this.getNth(e).map((e=>{const n=e.toView().json(t)[0],r=vc(e);return n.person={firstName:r.firstName.text(\"normal\"),lastName:r.lastName.text(\"normal\"),honorific:r.honorific.text(\"normal\"),presumed_gender:Pc(r,e)},n}),[])}presumedMale(){return this.filter((e=>e.has(\"(#MaleName|mr|mister|sr|jr|king|pope|prince|sir)\")))}presumedFemale(){return this.filter((e=>e.has(\"(#FemaleName|mrs|miss|queen|princess|madam)\")))}update(e){const t=new People(this.document,e);return t._cache=this._cache,t}}e.prototype.people=function(e){let t=function(e){let t=e.splitAfter(\"@hasComma\");t=t.match(\"#Honorific+? #Person+\");const n=t.match(\"#Possessive\").notIf(\"(his|her)\");return t=t.splitAfter(n),t}(this);return t=t.getNth(e),new People(this.document,t.pointer)}}(e),function(e){e.prototype.places=function(t){let n=function(e){let t=e.match(\"(#Place|#Address)+\"),n=t.match(\"@hasComma\");return n=n.filter((e=>!!e.has(\"(asia|africa|europe|america)$\")||!e.has(\"(#City|#Region|#ProperNoun)$\")||!e.after(\"^(#Country|#Region)\").found)),t=t.splitAfter(n),t}(this);return n=n.getNth(t),new e(this.document,n.pointer)}}(e),function(e){e.prototype.organizations=function(e){return this.match(\"#Organization+\").getNth(e)}}(e),function(e){e.prototype.topics=Ac}(e)}};const Nc=function(e,t){const n={pre:e.none(),post:e.none()};if(!e.has(\"#Adverb\"))return n;const r=e.splitOn(t);return 3===r.length?{pre:r.eq(0).adverbs(),post:r.eq(2).adverbs()}:r.eq(0).isDoc(t)?(n.post=r.eq(1).adverbs(),n):(n.pre=r.eq(0).adverbs(),n)},jc=function(e,t){const n=e.splitBefore(t);if(n.length<=1)return e.none();let r=n.eq(0);return r=r.not(\"(#Adverb|#Negative|#Prefix)\"),r},xc=function(e){return e.match(\"#Negative\")},Ic=function(e){if(!e.has(\"(#Particle|#PhrasalVerb)\"))return{verb:e.none(),particle:e.none()};const t=e.match(\"#Particle$\");return{verb:e.not(t),particle:t}},Tc=function(e){const t=e.clone();t.contractions().expand();const n=function(e){let t=e;return e.wordCount()>1&&(t=e.not(\"(#Negative|#Auxiliary|#Modal|#Adverb|#Prefix)\")),t.length>1&&!t.has(\"#Phrasal #Particle\")&&(t=t.last()),t=t.not(\"(want|wants|wanted) to\"),t.found||(t=e.not(\"#Negative\")),t}(t);return{root:n,prefix:t.match(\"#Prefix\"),adverbs:Nc(t,n),auxiliary:jc(t,n),negative:xc(t),phrasal:Ic(n)}},Dc={tense:\"PresentTense\"},Hc={conditional:!0},Ec={tense:\"FutureTense\"},Gc={progressive:!0},Oc={tense:\"PastTense\"},Fc={complete:!0,progressive:!1},Vc={passive:!0},zc=function(e){const t={};return e.forEach((e=>{Object.assign(t,e)})),t},Bc={imperative:[[\"#Imperative\",[]]],\"want-infinitive\":[[\"^(want|wants|wanted) to #Infinitive$\",[Dc]],[\"^wanted to #Infinitive$\",[Oc]],[\"^will want to #Infinitive$\",[Ec]]],\"gerund-phrase\":[[\"^#PastTense #Gerund$\",[Oc]],[\"^#PresentTense #Gerund$\",[Dc]],[\"^#Infinitive #Gerund$\",[Dc]],[\"^will #Infinitive #Gerund$\",[Ec]],[\"^have #PastTense #Gerund$\",[Oc]],[\"^will have #PastTense #Gerund$\",[Oc]]],\"simple-present\":[[\"^#PresentTense$\",[Dc]],[\"^#Infinitive$\",[Dc]]],\"simple-past\":[[\"^#PastTense$\",[Oc]]],\"simple-future\":[[\"^will #Adverb? #Infinitive\",[Ec]]],\"present-progressive\":[[\"^(is|are|am) #Gerund$\",[Dc,Gc]]],\"past-progressive\":[[\"^(was|were) #Gerund$\",[Oc,Gc]]],\"future-progressive\":[[\"^will be #Gerund$\",[Ec,Gc]]],\"present-perfect\":[[\"^(has|have) #PastTense$\",[Oc,Fc]]],\"past-perfect\":[[\"^had #PastTense$\",[Oc,Fc]],[\"^had #PastTense to #Infinitive\",[Oc,Fc]]],\"future-perfect\":[[\"^will have #PastTense$\",[Ec,Fc]]],\"present-perfect-progressive\":[[\"^(has|have) been #Gerund$\",[Oc,Gc]]],\"past-perfect-progressive\":[[\"^had been #Gerund$\",[Oc,Gc]]],\"future-perfect-progressive\":[[\"^will have been #Gerund$\",[Ec,Gc]]],\"passive-past\":[[\"(got|were|was) #Passive\",[Oc,Vc]],[\"^(was|were) being #Passive\",[Oc,Vc]],[\"^(had|have) been #Passive\",[Oc,Vc]]],\"passive-present\":[[\"^(is|are|am) #Passive\",[Dc,Vc]],[\"^(is|are|am) being #Passive\",[Dc,Vc]],[\"^has been #Passive\",[Dc,Vc]]],\"passive-future\":[[\"will have been #Passive\",[Ec,Vc,Hc]],[\"will be being? #Passive\",[Ec,Vc,Hc]]],\"present-conditional\":[[\"would be #PastTense\",[Dc,Hc]]],\"past-conditional\":[[\"would have been #PastTense\",[Oc,Hc]]],\"auxiliary-future\":[[\"(is|are|am|was) going to (#Infinitive|#PresentTense)\",[Ec]]],\"auxiliary-past\":[[\"^did #Infinitive$\",[Oc,{plural:!1}]],[\"^used to #Infinitive$\",[Oc,Fc]]],\"auxiliary-present\":[[\"^(does|do) #Infinitive$\",[Dc,Fc,{plural:!0}]]],\"modal-past\":[[\"^(could|must|should|shall) have #PastTense$\",[Oc]]],\"modal-infinitive\":[[\"^#Modal #Infinitive$\",[]]],infinitive:[[\"^#Infinitive$\",[]]]},Sc=[];Object.keys(Bc).map((e=>{Bc[e].forEach((t=>{Sc.push({name:e,match:t[0],data:zc(t[1])})}))}));const $c=function(e,t){const n={};e=function(e,t){return e=e.clone(),t.adverbs.post&&t.adverbs.post.found&&e.remove(t.adverbs.post),t.adverbs.pre&&t.adverbs.pre.found&&e.remove(t.adverbs.pre),e.has(\"#Negative\")&&(e=e.remove(\"#Negative\")),e.has(\"#Prefix\")&&(e=e.remove(\"#Prefix\")),t.root.has(\"#PhrasalVerb #Particle\")&&e.remove(\"#Particle$\"),e.not(\"#Adverb\")}(e,t);for(let t=0;t<Sc.length;t+=1){const r=Sc[t];if(!0===e.has(r.match)){n.form=r.name,Object.assign(n,r.data);break}}return n.form||e.has(\"^#Verb$\")&&(n.form=\"infinitive\"),n.tense||(n.tense=t.root.has(\"#PastTense\")?\"PastTense\":\"PresentTense\"),n.copula=t.root.has(\"#Copula\"),n.isInfinitive=function(e){if(e.has(\"#Infinitive\")&&e.growLeft(\"to\").has(\"^to #Infinitive\"))return!0;return!1}(e),n},Mc=function(e){if(e.length<=1)return!1;return(e.parse()[0]||{}).isSubordinate},Lc=function(e,t){return!!t.has(\"(are|were|does)\")||(!!e.has(\"(those|they|we)\")||!(!e.found||!e.isPlural)&&e.isPlural().found)},Kc=function(e){const t=function(e){let t=e.before();t=function(e){let t=e.clauses();return t=t.filter(((e,t)=>!(e.has(\"^(if|unless|while|but|for|per|at|by|that|which|who|from)\")||t>0&&e.has(\"^#Verb . #Noun+$\")||t>0&&e.has(\"^#Adverb\")))),0===t.length?e:t}(t);const n=t.nouns();let r=n.last();const o=r.match(\"(i|he|she|we|you|they)\");if(o.found)return o.nouns();let a=n.if(\"^(that|this|those)\");return a.found||!1===n.found&&(a=t.match(\"^(that|this|those)\"),a.found)?a:(r=n.last(),Mc(r)&&(n.remove(r),r=n.last()),Mc(r)&&(n.remove(r),r=n.last()),r)}(e);return{subject:t,plural:Lc(t,e)}},Jc=e=>e,Wc=(e,t)=>{const n=Kc(e),r=n.subject;return!(!r.has(\"i\")&&!r.has(\"we\"))||n.plural},qc=function(e,t){if(e.has(\"were\"))return\"are\";const{subject:n,plural:r}=Kc(e);return n.has(\"i\")?\"am\":n.has(\"we\")||r?\"are\":\"is\"},Uc=function(e,t){const n=Kc(e),r=n.subject;return r.has(\"i\")||r.has(\"we\")||n.plural?\"do\":\"does\"},Rc=function(e){return e.has(\"#Infinitive\")?\"Infinitive\":e.has(\"#Participle\")?\"Participle\":e.has(\"#PastTense\")?\"PastTense\":e.has(\"#Gerund\")?\"Gerund\":e.has(\"#PresentTense\")?\"PresentTense\":void 0},Qc=function(e,t){const{toInfinitive:n}=e.methods.two.transform.verb;let r=t.root.text({keepPunct:!1});return r=n(r,e.model,Rc(e)),r&&e.replace(t.root,r),e},Zc=e=>e.has(\"will not\")?e.replace(\"will not\",\"have not\"):e.remove(\"will\"),_c=function(e){if(!e||!e.isView)return[];return e.json({normal:!0,terms:!1,text:!1}).map((e=>e.normal))},Xc=function(e){return e&&e.isView?e.text(\"normal\"):\"\"},Yc=function(e){const{toInfinitive:t}=e.methods.two.transform.verb;return t(e.text(\"normal\"),e.model,Rc(e))},eh={tags:!0},th={tags:!0},nh={noAux:(e,t)=>(t.auxiliary.found&&(e=e.remove(t.auxiliary)),e),simple:(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;if(o.has(\"#Modal\"))return e;let a=o.text({keepPunct:!1});a=r(a,e.model,Rc(o));return a=n(a,e.model).PastTense,a=\"been\"===a?\"was\":a,\"was\"===a&&(a=((e,t)=>{const{subject:n,plural:r}=Kc(e);return r||n.has(\"we\")?\"were\":\"was\"})(e)),a&&e.replace(o,a,th),e},both:function(e,t){return t.negative.found?(e.replace(\"will\",\"did\"),e):(e=nh.simple(e,t),e=nh.noAux(e,t))},hasHad:e=>(e.replace(\"has\",\"had\",th),e),hasParticiple:(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text(\"normal\");return a=r(a,e.model,Rc(o)),n(a,e.model).Participle}},rh={infinitive:nh.simple,\"simple-present\":nh.simple,\"simple-past\":Jc,\"simple-future\":nh.both,\"present-progressive\":e=>(e.replace(\"are\",\"were\",th),e.replace(\"(is|are|am)\",\"was\",th),e),\"past-progressive\":Jc,\"future-progressive\":(e,t)=>(e.match(t.root).insertBefore(\"was\"),e.remove(\"(will|be)\"),e),\"present-perfect\":nh.hasHad,\"past-perfect\":Jc,\"future-perfect\":(e,t)=>(e.match(t.root).insertBefore(\"had\"),e.has(\"will\")&&(e=Zc(e)),e.remove(\"have\"),e),\"present-perfect-progressive\":nh.hasHad,\"past-perfect-progressive\":Jc,\"future-perfect-progressive\":e=>(e.remove(\"will\"),e.replace(\"have\",\"had\",th),e),\"passive-past\":e=>(e.replace(\"have\",\"had\",th),e),\"passive-present\":e=>(e.replace(\"(is|are)\",\"was\",th),e),\"passive-future\":(e,t)=>(t.auxiliary.has(\"will be\")&&(e.match(t.root).insertBefore(\"had been\"),e.remove(\"(will|be)\")),t.auxiliary.has(\"will have been\")&&(e.replace(\"have\",\"had\",th),e.remove(\"will\")),e),\"present-conditional\":e=>(e.replace(\"be\",\"have been\"),e),\"past-conditional\":Jc,\"auxiliary-future\":e=>(e.replace(\"(is|are|am)\",\"was\",th),e),\"auxiliary-past\":Jc,\"auxiliary-present\":e=>(e.replace(\"(do|does)\",\"did\",th),e),\"modal-infinitive\":(e,t)=>(e.has(\"can\")?e.replace(\"can\",\"could\",th):(nh.simple(e,t),e.match(\"#Modal\").insertAfter(\"have\").tag(\"Auxiliary\")),e),\"modal-past\":Jc,\"want-infinitive\":e=>(e.replace(\"(want|wants)\",\"wanted\",th),e.remove(\"will\"),e),\"gerund-phrase\":(e,t)=>(t.root=t.root.not(\"#Gerund$\"),nh.simple(e,t),Zc(e),e)},oh=function(e,t){const n=Kc(e),r=n.subject;return r.has(\"(i|we|you)\")?\"have\":!1===n.plural||r.has(\"he\")||r.has(\"she\")||r.has(\"#Person\")?\"has\":\"have\"},ah=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;if(o.has(\"#Modal\"))return e;let i=o.text({keepPunct:!1});i=r(i,e.model,Rc(o));const s=n(i,e.model);if(i=s.Participle||s.PastTense,i){e=e.replace(o,i);const t=oh(e);e.prepend(t).match(t).tag(\"Auxiliary\"),e.remove(a)}return e},ih={infinitive:ah,\"simple-present\":ah,\"simple-future\":(e,t)=>e.replace(\"will\",oh(e)),\"present-perfect\":Jc,\"past-perfect\":Jc,\"future-perfect\":(e,t)=>e.replace(\"will have\",oh(e)),\"present-perfect-progressive\":Jc,\"past-perfect-progressive\":Jc,\"future-perfect-progressive\":Jc},sh={tags:!0},lh=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text(\"normal\");return a=r(a,e.model,Rc(o)),!1===Wc(e)&&(a=n(a,e.model).PresentTense),o.has(\"#Copula\")&&(a=qc(e)),a&&(e=e.replace(o,a,sh)).not(\"#Particle\").tag(\"PresentTense\"),e},uh=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text(\"normal\");return a=r(a,e.model,Rc(o)),!1===Wc(e)&&(a=n(a,e.model).Gerund),a&&(e=e.replace(o,a,sh)).not(\"#Particle\").tag(\"Gerund\"),e},ch={infinitive:lh,\"simple-present\":(e,t)=>{const{conjugate:n}=e.methods.two.transform.verb,{root:r}=t;if(!r.has(\"#Infinitive\"))return lh(e,t);{const t=Kc(e).subject;if(Wc(e)||t.has(\"i\"))return e;const o=r.text(\"normal\"),a=n(o,e.model).PresentTense;o!==a&&e.replace(r,a,sh)}return e},\"simple-past\":lh,\"simple-future\":(e,t)=>{const{root:n,auxiliary:r}=t;if(r.has(\"will\")&&n.has(\"be\")){const t=qc(e);e.replace(n,t),(e=e.remove(\"will\")).replace(\"not \"+t,t+\" not\")}else lh(e,t),e=e.remove(\"will\");return e},\"present-progressive\":Jc,\"past-progressive\":(e,t)=>{const n=qc(e);return e.replace(\"(were|was)\",n,sh)},\"future-progressive\":e=>(e.match(\"will\").insertBefore(\"is\"),e.remove(\"be\"),e.remove(\"will\")),\"present-perfect\":(e,t)=>(lh(e,t),e=e.remove(\"(have|had|has)\")),\"past-perfect\":(e,t)=>{const n=Kc(e).subject;return Wc(e)||n.has(\"i\")?((e=Qc(e,t)).remove(\"had\"),e):(e.replace(\"had\",\"has\",sh),e)},\"future-perfect\":e=>(e.match(\"will\").insertBefore(\"has\"),e.remove(\"have\").remove(\"will\")),\"present-perfect-progressive\":Jc,\"past-perfect-progressive\":e=>e.replace(\"had\",\"has\",sh),\"future-perfect-progressive\":e=>(e.match(\"will\").insertBefore(\"has\"),e.remove(\"have\").remove(\"will\")),\"passive-past\":(e,t)=>{const n=qc(e);return e.has(\"(had|have|has)\")&&e.has(\"been\")?(e.replace(\"(had|have|has)\",n,sh),e.replace(\"been\",\"being\"),e):e.replace(\"(got|was|were)\",n)},\"passive-present\":Jc,\"passive-future\":e=>(e.replace(\"will\",\"is\"),e.replace(\"be\",\"being\")),\"present-conditional\":Jc,\"past-conditional\":e=>(e.replace(\"been\",\"be\"),e.remove(\"have\")),\"auxiliary-future\":(e,t)=>(uh(e,t),e.remove(\"(going|to)\"),e),\"auxiliary-past\":(e,t)=>{if(t.auxiliary.has(\"did\")){const n=Uc(e);return e.replace(t.auxiliary,n),e}return uh(e,t),e.replace(t.auxiliary,\"is\"),e},\"auxiliary-present\":Jc,\"modal-infinitive\":Jc,\"modal-past\":(e,t)=>(((e,t)=>{const{toInfinitive:n}=e.methods.two.transform.verb,r=t.root;let o=t.root.text(\"normal\");o=n(o,e.model,Rc(r)),o&&(e=e.replace(t.root,o,sh))})(e,t),e.remove(\"have\")),\"gerund-phrase\":(e,t)=>(t.root=t.root.not(\"#Gerund$\"),lh(e,t),e.remove(\"(will|have)\")),\"want-infinitive\":(e,t)=>{let n=\"wants\";return Wc(e)&&(n=\"want\"),e.replace(\"(want|wanted|wants)\",n,sh),e.remove(\"will\"),e}},hh={tags:!0},dh=(e,t)=>{const{toInfinitive:n}=e.methods.two.transform.verb,{root:r,auxiliary:o}=t;if(r.has(\"#Modal\"))return e;let a=r.text(\"normal\");return a=n(a,e.model,Rc(r)),a&&(e=e.replace(r,a,hh)).not(\"#Particle\").tag(\"Verb\"),e.prepend(\"will\").match(\"will\").tag(\"Auxiliary\"),e.remove(o),e},gh=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;let i=o.text(\"normal\");return i=r(i,e.model,Rc(o)),i&&(i=n(i,e.model).Gerund,e.replace(o,i,hh),e.not(\"#Particle\").tag(\"PresentTense\")),e.remove(a),e.prepend(\"will be\").match(\"will be\").tag(\"Auxiliary\"),e},mh={infinitive:dh,\"simple-present\":dh,\"simple-past\":dh,\"simple-future\":Jc,\"present-progressive\":gh,\"past-progressive\":gh,\"future-progressive\":Jc,\"present-perfect\":e=>(e.match(\"(have|has)\").replaceWith(\"will have\"),e),\"past-perfect\":e=>e.replace(\"(had|has)\",\"will have\"),\"future-perfect\":Jc,\"present-perfect-progressive\":e=>e.replace(\"has\",\"will have\"),\"past-perfect-progressive\":e=>e.replace(\"had\",\"will have\"),\"future-perfect-progressive\":Jc,\"passive-past\":e=>e.has(\"got\")?e.replace(\"got\",\"will get\"):e.has(\"(was|were)\")?(e.replace(\"(was|were)\",\"will be\"),e.remove(\"being\")):e.has(\"(have|has|had) been\")?e.replace(\"(have|has|had) been\",\"will be\"):e,\"passive-present\":e=>(e.replace(\"being\",\"will be\"),e.remove(\"(is|are|am)\"),e),\"passive-future\":Jc,\"present-conditional\":e=>e.replace(\"would\",\"will\"),\"past-conditional\":e=>e.replace(\"would\",\"will\"),\"auxiliary-future\":Jc,\"auxiliary-past\":e=>e.has(\"used\")&&e.has(\"to\")?(e.replace(\"used\",\"will\"),e.remove(\"to\")):(e.replace(\"did\",\"will\"),e),\"auxiliary-present\":e=>e.replace(\"(do|does)\",\"will\"),\"modal-infinitive\":Jc,\"modal-past\":Jc,\"gerund-phrase\":(e,t)=>(t.root=t.root.not(\"#Gerund$\"),dh(e,t),e.remove(\"(had|have)\")),\"want-infinitive\":e=>(e.replace(\"(want|wants|wanted)\",\"will want\"),e)},ph={tags:!0},fh={tags:!0},bh=function(e,t){const n=Uc(e);return e.prepend(n+\" not\"),e},vh=function(e){let t=e.match(\"be\");return t.found?(t.prepend(\"not\"),e):(t=e.match(\"(is|was|am|are|will|were)\"),t.found?(t.append(\"not\"),e):e)},yh=e=>e.has(\"(is|was|am|are|will|were|be)\"),wh={\"simple-present\":(e,t)=>!0===yh(e)?vh(e):(e=Qc(e,t),e=bh(e)),\"simple-past\":(e,t)=>!0===yh(e)?vh(e):((e=Qc(e,t)).prepend(\"did not\"),e),imperative:e=>(e.prepend(\"do not\"),e),infinitive:(e,t)=>!0===yh(e)?vh(e):bh(e),\"passive-past\":e=>{if(e.has(\"got\"))return e.replace(\"got\",\"get\",fh),e.prepend(\"did not\"),e;const t=e.match(\"(was|were|had|have)\");return t.found&&t.append(\"not\"),e},\"auxiliary-past\":e=>{if(e.has(\"used\"))return e.prepend(\"did not\"),e;const t=e.match(\"(did|does|do)\");return t.found&&t.append(\"not\"),e},\"want-infinitive\":(e,t)=>e=(e=bh(e)).replace(\"wants\",\"want\",fh)};var kh={api:function(e){class Verbs extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Verbs\"}parse(e){return this.getNth(e).map(Tc)}json(e,t){const n=this.getNth(t).map((t=>{const n=t.toView().json(e)[0]||{};return n.verb=function(e){const t=Tc(e);e=e.clone().toView();const n=$c(e,t);return{root:t.root.text(),preAdverbs:_c(t.adverbs.pre),postAdverbs:_c(t.adverbs.post),auxiliary:Xc(t.auxiliary),negative:t.negative.found,prefix:Xc(t.prefix),infinitive:Yc(t.root),grammar:n}}(t),n}),[]);return n}subjects(e){return this.getNth(e).map((e=>(Tc(e),Kc(e).subject)))}adverbs(e){return this.getNth(e).map((e=>e.match(\"#Adverb\")))}isSingular(e){return this.getNth(e).filter((e=>!0!==Kc(e).plural))}isPlural(e){return this.getNth(e).filter((e=>!0===Kc(e).plural))}isImperative(e){return this.getNth(e).filter((e=>e.has(\"#Imperative\")))}toInfinitive(e){return this.getNth(e).map((e=>{const t=Tc(e);return function(e,t){const{toInfinitive:n}=e.methods.two.transform.verb,{root:r,auxiliary:o}=t,a=o.terms().harden();let i=r.text(\"normal\");if(i=n(i,e.model,Rc(r)),i&&e.replace(r,i,eh).tag(\"Verb\").firstTerm().tag(\"Infinitive\"),a.found&&e.remove(a),t.negative.found){e.has(\"not\")||e.prepend(\"not\");const t=Uc(e);e.prepend(t)}return e.fullSentence().compute([\"freeze\",\"lexicon\",\"preTagger\",\"postTagger\",\"unfreeze\",\"chunks\"]),e}(e,t,$c(e,t).form)}))}toPresentTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return ch.hasOwnProperty(n)?((e=ch[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):e}(e,t,n.form)}))}toPastTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return rh.hasOwnProperty(n)?((e=rh[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):e}(e,t,n.form)}))}toFutureTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return e.has(\"will\")||e.has(\"going to\")?e:mh.hasOwnProperty(n)?((e=mh[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):e}(e,t,n.form)}))}toGerund(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t){const{toInfinitive:n,conjugate:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;if(e.has(\"#Gerund\"))return e;let i=o.text(\"normal\");i=n(i,e.model,Rc(o));const s=r(i,e.model).Gerund;if(s){const t=qc(e);e.replace(o,s,ph),e.remove(a),e.prepend(t)}return e.replace(\"not is\",\"is not\"),e.replace(\"not are\",\"are not\"),e.fullSentence().compute([\"tagger\",\"chunks\"]),e}(e,t,n.form)}))}toPastParticiple(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return ih.hasOwnProperty(n)?((e=ih[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):((e=ah(e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e)}(e,t,n.form)}))}conjugate(e){const{conjugate:t,toInfinitive:n}=this.world.methods.two.transform.verb;return this.getNth(e).map((e=>{const r=Tc(e),o=$c(e,r);\"imperative\"===o.form&&(o.form=\"simple-present\");let a=r.root.text(\"normal\");if(!r.root.has(\"#Infinitive\")){const t=Rc(r.root);a=n(a,e.model,t)||a}return t(a,e.model)}),[])}isNegative(){return this.if(\"#Negative\")}isPositive(){return this.ifNo(\"#Negative\")}toPositive(){const e=this.match(\"do not #Verb\");return e.found&&e.remove(\"do not\"),this.remove(\"#Negative\")}toNegative(e){return this.getNth(e).map((e=>{const t=Tc(e);return function(e,t,n){if(e.has(\"#Negative\"))return e;if(wh.hasOwnProperty(n))return wh[n](e,t);let r=e.matchOne(\"be\");return r.found?(r.prepend(\"not\"),e):!0===yh(e)?vh(e):(r=e.matchOne(\"(will|had|have|has|did|does|do|#Modal)\"),r.found?(r.append(\"not\"),e):e)}(e,t,$c(e,t).form)}))}update(e){const t=new Verbs(this.document,e);return t._cache=this._cache,t}}Verbs.prototype.toPast=Verbs.prototype.toPastTense,Verbs.prototype.toPresent=Verbs.prototype.toPresentTense,Verbs.prototype.toFuture=Verbs.prototype.toFutureTense,e.prototype.verbs=function(e){let t=function(e){let t=e.match(\"<Verb>\");return t=t.not(\"#Conjunction\"),t=t.not(\"#Preposition\"),t=t.splitAfter(\"@hasComma\"),t=t.splitAfter(\"[(do|did|am|was|is|will)] (is|was)\",0),t=t.splitBefore(\"(#Verb && !#Copula) [being] #Verb\",0),t=t.splitBefore(\"#Verb [to be] #Verb\",0),t=t.splitAfter(\"[help] #PresentTense\",0),t=t.splitBefore(\"(#PresentTense|#PastTense) [#Copula]$\",0),t=t.splitBefore(\"(#PresentTense|#PastTense) [will be]$\",0),t=t.splitBefore(\"(#PresentTense|#PastTense) [(had|has)]\",0),t=t.not(\"#Reflexive$\"),t=t.not(\"#Adjective\"),t=t.splitAfter(\"[#PastTense] #PastTense\",0),t=t.splitAfter(\"[#PastTense] #Auxiliary+ #PastTense\",0),t=t.splitAfter(\"#Copula [#Gerund] #PastTense\",0),t=t.if(\"#Verb\"),t.has(\"(#Verb && !#Auxiliary) #Adverb+? #Copula\")&&(t=t.splitBefore(\"#Copula\")),t}(this);return t=t.getNth(e),new Verbs(this.document,t.pointer)}}};const Ph=function(e,t){const n=t.match(e);if(n.found){const e=n.pronouns().refersTo();if(e.found)return e}return t.none()},Ah=function(e){if(!e.found)return e;const[t]=e.fullPointer[0];return t&&t>0?e.update([[t-1]]):e.none()},Ch=function(e,t){let n=e.people();return n=function(e,t){return\"m\"===t?e.filter((e=>!e.presumedFemale().found)):\"f\"===t?e.filter((e=>!e.presumedMale().found)):e}(n,t),n.found?n.last():(n=e.nouns(\"#Actor\"),n.found?n.last():\"f\"===t?Ph(\"(she|her|hers)\",e):\"m\"===t?Ph(\"(he|him|his)\",e):e.none())},Nh=function(e){const t=e.nouns();let n=t.isPlural().notIf(\"#Pronoun\");if(n.found)return n.last();const r=Ph(\"(they|their|theirs)\",e);return r.found?r:(n=t.match(\"(somebody|nobody|everybody|anybody|someone|noone|everyone|anyone)\"),n.found?n.last():e.none())},jh=function(e,t){let n=e.before(),r=t(n);return r.found?r:(n=Ah(e),r=t(n),r.found?r:(n=Ah(n),r=t(n),r.found?r:e.none()))};var xh={compute:{coreference:function(e){e.pronouns().if(\"(he|him|his|she|her|hers|they|their|theirs|it|its)\").forEach((e=>{let t=null;e.has(\"(he|him|his)\")?t=jh(e,(e=>Ch(e,\"m\"))):e.has(\"(she|her|hers)\")?t=jh(e,(e=>Ch(e,\"f\"))):e.has(\"(they|their|theirs)\")&&(t=jh(e,Nh)),t&&t.found&&function(e,t){t&&t.found&&(e.docs[0][0].reference=t.ptrs[0])}(e,t)}))}},api:function(e){class Pronouns extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Pronouns\"}hasReference(){return this.compute(\"coreference\"),this.filter((e=>e.docs[0][0].reference))}refersTo(){return this.compute(\"coreference\"),this.map((e=>{if(!e.found)return e.none();const t=e.docs[0][0];return t.reference?e.update([t.reference]):e.none()}))}update(e){const t=new Pronouns(this.document,e);return t._cache=this._cache,t}}e.prototype.pronouns=function(e){let t=this.match(\"#Pronoun\");return t=t.getNth(e),new Pronouns(t.document,t.pointer)}}};return h.plugin(ql),h.plugin(Ul),h.plugin(eu),h.plugin(xh),h.plugin(fu),h.plugin(Au),h.plugin(Ou),h.plugin(hc),h.plugin(mc),h.plugin(bc),h.plugin(Cc),h.plugin(kh),h}));\n"
  },
  {
    "path": "builds/three/compromise-three.mjs",
    "content": "var e={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const t={compute:function(e){const{world:t}=this,n=t.compute;return\"string\"==typeof e&&n.hasOwnProperty(e)?n[e](this):(e=>\"[object Array]\"===Object.prototype.toString.call(e))(e)?e.forEach((r=>{t.compute.hasOwnProperty(r)?n[r](this):console.warn(\"no compute:\",e)})):\"function\"==typeof e?e(this):console.warn(\"no compute:\",e),this}};var n={forEach:function(e){return this.fullPointer.forEach(((t,n)=>{const r=this.update([t]);e(r,n)})),this},map:function(e,t){const n=this.fullPointer.map(((t,n)=>{const r=this.update([t]),o=e(r,n);return void 0===o?this.none():o}));if(0===n.length)return t||this.update([]);if(void 0!==n[0]){if(\"string\"==typeof n[0])return n;if(\"object\"==typeof n[0]&&(null===n[0]||!n[0].isView))return n}let r=[];return n.forEach((e=>{r=r.concat(e.fullPointer)})),this.toView(r)},filter:function(e){let t=this.fullPointer;t=t.filter(((t,n)=>{const r=this.update([t]);return e(r,n)}));return this.update(t)},find:function(e){const t=this.fullPointer.find(((t,n)=>{const r=this.update([t]);return e(r,n)}));return this.update([t])},some:function(e){return this.fullPointer.some(((t,n)=>{const r=this.update([t]);return e(r,n)}))},random:function(e=1){let t=this.fullPointer,n=Math.floor(Math.random()*t.length);return n+e>this.length&&(n=this.length-e,n=n<0?0:n),t=t.slice(n,n+e),this.update(t)}};const r={termList:function(){return this.methods.one.termList(this.docs)},terms:function(e){const t=this.match(\".\");return\"number\"==typeof e?t.eq(e):t},groups:function(e){if(e||0===e)return this.update(this._groups[e]||[]);const t={};return Object.keys(this._groups).forEach((e=>{t[e]=this.update(this._groups[e])})),t},eq:function(e){let t=this.pointer;return t||(t=this.docs.map(((e,t)=>[t]))),t[e]?this.update([t[e]]):this.none()},first:function(){return this.eq(0)},last:function(){const e=this.fullPointer.length-1;return this.eq(e)},firstTerms:function(){return this.match(\"^.\")},lastTerms:function(){return this.match(\".$\")},slice:function(e,t){let n=this.pointer||this.docs.map(((e,t)=>[t]));return n=n.slice(e,t),this.update(n)},all:function(){return this.update().toView()},fullSentences:function(){const e=this.fullPointer.map((e=>[e[0]]));return this.update(e).toView()},none:function(){return this.update([])},isDoc:function(e){if(!e||!e.isView)return!1;const t=this.fullPointer,n=e.fullPointer;return!t.length!==n.length&&t.every(((e,t)=>!!n[t]&&(e[0]===n[t][0]&&e[1]===n[t][1]&&e[2]===n[t][2])))},wordCount:function(){return this.docs.reduce(((e,t)=>(e+=t.filter((e=>\"\"!==e.text)).length,e)),0)},isFull:function(){const e=this.pointer;if(!e)return!0;if(0===e.length||0!==e[0][0])return!1;let t=0,n=0;return this.document.forEach((e=>t+=e.length)),this.docs.forEach((e=>n+=e.length)),t===n},getNth:function(e){return\"number\"==typeof e?this.eq(e):\"string\"==typeof e?this.if(e):this}};r.group=r.groups,r.fullSentence=r.fullSentences,r.sentence=r.fullSentences,r.lastTerm=r.lastTerms,r.firstTerm=r.firstTerms;const o=Object.assign({},r,t,n);o.get=o.eq;class View{constructor(t,n,r={}){[[\"document\",t],[\"world\",e],[\"_groups\",r],[\"_cache\",null],[\"viewType\",\"View\"]].forEach((e=>{Object.defineProperty(this,e[0],{value:e[1],writable:!0})})),this.ptrs=n}get docs(){let t=this.document;return this.ptrs&&(t=e.methods.one.getDoc(this.ptrs,this.document)),t}get pointer(){return this.ptrs}get methods(){return this.world.methods}get model(){return this.world.model}get hooks(){return this.world.hooks}get isView(){return!0}get found(){return this.docs.length>0}get length(){return this.docs.length}get fullPointer(){const{docs:e,ptrs:t,document:n}=this,r=t||e.map(((e,t)=>[t]));return r.map((e=>{let[t,r,o,a,i]=e;return r=r||0,o=o||(n[t]||[]).length,n[t]&&n[t][r]&&(a=a||n[t][r].id,n[t][o-1]&&(i=i||n[t][o-1].id)),[t,r,o,a,i]}))}update(e){const t=new View(this.document,e);if(this._cache&&e&&e.length>0){const n=[];e.forEach(((e,t)=>{const[r,o,a]=e;(1===e.length||0===o&&this.document[r].length===a)&&(n[t]=this._cache[r])})),n.length>0&&(t._cache=n)}return t.world=this.world,t}toView(e){return new View(this.document,e||this.pointer)}fromText(e){const{methods:t}=this,n=t.one.tokenize.fromString(e,this.world),r=new View(n);return r.world=this.world,r.compute([\"normal\",\"freeze\",\"lexicon\"]),this.world.compute.preTagger&&r.compute(\"preTagger\"),r.compute(\"unfreeze\"),r}clone(){let e=this.document.slice(0);e=e.map((e=>e.map((e=>((e=Object.assign({},e)).tags=new Set(e.tags),e)))));const t=this.update(this.pointer);return t.document=e,t._cache=this._cache,t}}Object.assign(View.prototype,o);const a=function(e){return e&&\"object\"==typeof e&&!Array.isArray(e)};function i(e,t){if(a(t))for(const n in t)a(t[n])?(e[n]||Object.assign(e,{[n]:{}}),i(e[n],t[n])):Object.assign(e,{[n]:t[n]});return e}const s=function(e,t,n,r){if(o=e,\"[object Array]\"===Object.prototype.toString.call(o))return void e.forEach((e=>s(e,t,n,r)));var o;const{methods:a,model:l,compute:u,hooks:c}=t;e.methods&&function(e,t){for(const n in t)e[n]=e[n]||{},Object.assign(e[n],t[n])}(a,e.methods),e.model&&i(l,e.model),e.irregulars&&function(e,t){const n=e.two.models||{};Object.keys(t).forEach((e=>{t[e].pastTense&&(n.toPast&&(n.toPast.ex[e]=t[e].pastTense),n.fromPast&&(n.fromPast.ex[t[e].pastTense]=e)),t[e].presentTense&&(n.toPresent&&(n.toPresent.ex[e]=t[e].presentTense),n.fromPresent&&(n.fromPresent.ex[t[e].presentTense]=e)),t[e].gerund&&(n.toGerund&&(n.toGerund.ex[e]=t[e].gerund),n.fromGerund&&(n.fromGerund.ex[t[e].gerund]=e)),t[e].comparative&&(n.toComparative&&(n.toComparative.ex[e]=t[e].comparative),n.fromComparative&&(n.fromComparative.ex[t[e].comparative]=e)),t[e].superlative&&(n.toSuperlative&&(n.toSuperlative.ex[e]=t[e].superlative),n.fromSuperlative&&(n.fromSuperlative.ex[t[e].superlative]=e))}))}(l,e.irregulars),e.compute&&Object.assign(u,e.compute),c&&(t.hooks=c.concat(e.hooks||[])),e.api&&e.api(n),e.lib&&Object.keys(e.lib).forEach((t=>r[t]=e.lib[t])),e.tags&&r.addTags(e.tags),e.words&&r.addWords(e.words),e.frozen&&r.addWords(e.frozen,!0),e.mutate&&e.mutate(t,r)},l=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},u=function(e,t,n){const{methods:r}=n,o=new t([]);if(o.world=n,\"number\"==typeof e&&(e=String(e)),!e)return o;if(\"string\"==typeof e){return new t(r.one.tokenize.fromString(e,n))}if(a=e,\"[object Object]\"===Object.prototype.toString.call(a)&&e.isView)return new t(e.document,e.ptrs);var a;if(l(e)){if(l(e[0])){const n=e.map((e=>e.map((e=>({text:e,normal:e,pre:\"\",post:\" \",tags:new Set})))));return new t(n)}const n=e.map((e=>e.terms.map((e=>(l(e.tags)&&(e.tags=new Set(e.tags)),e)))));return new t(n)}return o},c=Object.assign({},e),h=function(e,t){t&&h.addWords(t);const n=u(e,View,c);return e&&n.compute(c.hooks),n};Object.defineProperty(h,\"_world\",{value:c,writable:!0}),h.tokenize=function(e,t){const{compute:n}=this._world;t&&h.addWords(t);const r=u(e,View,c);return n.contractions&&r.compute([\"alias\",\"normal\",\"machine\",\"contractions\"]),r},h.plugin=function(e){return s(e,this._world,View,this),this},h.extend=h.plugin,h.world=function(){return this._world},h.model=function(){return this._world.model},h.methods=function(){return this._world.methods},h.hooks=function(){return this._world.hooks},h.verbose=function(e){const t=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};return t.DEBUG_TAGS=\"tagger\"===e||!0===e||\"\",t.DEBUG_MATCH=\"match\"===e||!0===e||\"\",t.DEBUG_CHUNKS=\"chunker\"===e||!0===e||\"\",this},h.version=\"14.15.0\";var d={one:{cacheDoc:function(e){const t=e.map((e=>{const t=new Set;return e.forEach((e=>{\"\"!==e.normal&&t.add(e.normal),e.switch&&t.add(`%${e.switch}%`),e.implicit&&t.add(e.implicit),e.machine&&t.add(e.machine),e.root&&t.add(e.root),e.alias&&e.alias.forEach((e=>t.add(e)));const n=Array.from(e.tags);for(let e=0;e<n.length;e+=1)t.add(\"#\"+n[e])})),t}));return t}}};const m={cache:function(){return this._cache=this.methods.one.cacheDoc(this.document),this},uncache:function(){return this._cache=null,this}};var p={api:function(e){Object.assign(e.prototype,m)},compute:{cache:function(e){e._cache=e.methods.one.cacheDoc(e.document)}},methods:d};const f=e=>/^\\p{Lu}[\\p{Ll}'’]/u.test(e)||/^\\p{Lu}$/u.test(e),b=(e,t,n)=>{if(n.forEach((e=>e.dirty=!0)),e){const r=[t,0].concat(n);Array.prototype.splice.apply(e,r)}return e},v=function(e){const t=e[e.length-1];!t||/ $/.test(t.post)||/[-–—]/.test(t.post)||(t.post+=\" \")},y=(e,t,n)=>{const r=/[-.?!,;:)–—'\"]/g,o=e[t-1];if(!o)return;const a=o.post;if(r.test(a)){const e=a.match(r).join(\"\"),t=n[n.length-1];t.post=e+t.post,o.post=o.post.replace(r,\"\")}},w=function(e,t,n,r){const[o,a,i]=t;0===a||i===r[o].length?v(n):(v(n),v([e[t[1]]])),function(e,t,n){const r=e[t];if(0!==t||!f(r.text))return;n[0].text=n[0].text.replace(/^\\p{Ll}/u,(e=>e.toUpperCase()));const o=e[t];o.tags.has(\"ProperNoun\")||o.tags.has(\"Acronym\")||f(o.text)&&o.text.length>1&&(o.text=(a=o.text,a.replace(/^\\p{Lu}/u,(e=>e.toLowerCase()))));var a}(e,a,n),b(e,a,n)};let k=0;const P=e=>(e=e.length<3?\"0\"+e:e).length<3?\"0\"+e:e,A=function(e){let[t,n]=e.index||[0,0];k+=1,k=k>46655?0:k,t=t>46655?0:t,n=n>1294?0:n;let r=P(k.toString(36));r+=P(t.toString(36));let o=n.toString(36);o=o.length<2?\"0\"+o:o,r+=o;return r+=parseInt(36*Math.random(),10).toString(36),e.normal+\"|\"+r.toUpperCase()},C=function(e){if(e.has(\"@hasContraction\")&&\"function\"==typeof e.contractions){e.grow(\"@hasContraction\").contractions().expand()}},N=e=>\"[object Array]\"===Object.prototype.toString.call(e),j=function(e,t,n){const{document:r,world:o}=t;t.uncache();const a=t.fullPointer,i=t.fullPointer;t.forEach(((s,l)=>{const u=s.fullPointer[0],[c]=u,h=r[c];let d=function(e,t){const{methods:n}=t;return\"string\"==typeof e?n.one.tokenize.fromString(e,t)[0]:\"object\"==typeof e&&e.isView?e.clone().docs[0]||[]:N(e)?N(e[0])?e[0]:e:[]}(e,o);0!==d.length&&(d=function(e){return e.map((e=>(e.id=A(e),e)))}(d),n?(C(t.update([u]).firstTerm()),w(h,u,d,r)):(C(t.update([u]).lastTerm()),function(e,t,n,r){const[o,,a]=t,i=(r[o]||[]).length;a<i?(y(e,a,n),v(n)):i===a&&(v(e),y(e,a,n),r[o+1]&&(n[n.length-1].post+=\" \")),b(e,t[2],n),t[4]=n[n.length-1].id}(h,u,d,r)),r[c]&&r[c][u[1]]&&(u[3]=r[c][u[1]].id),i[l]=u,u[2]+=d.length,a[l]=u)}));const s=t.toView(a);return t.ptrs=i,s.compute([\"id\",\"index\",\"freeze\",\"lexicon\"]),s.world.compute.preTagger&&s.compute(\"preTagger\"),s.compute(\"unfreeze\"),s},x={insertAfter:function(e){return j(e,this,!1)},insertBefore:function(e){return j(e,this,!0)}};x.append=x.insertAfter,x.prepend=x.insertBefore,x.insert=x.insertAfter;const I=/\\$[0-9a-z]+/g,T={},D=e=>e.replace(/^\\p{Ll}/u,(e=>e.toUpperCase())),H=e=>e.replace(/^\\p{Lu}/u,(e=>e.toLowerCase()));T.replaceWith=function(e,t={}){let n=this.fullPointer;const r=this;if(this.uncache(),\"function\"==typeof e)return function(e,t,n){return e.forEach((e=>{const r=t(e);e.replaceWith(r,n)})),e}(r,e,t);const o=r.docs[0];if(!o)return r;const a=t.possessives&&o[o.length-1].tags.has(\"Possessive\"),i=t.case&&(s=o[0].text,/^\\p{Lu}[\\p{Ll}'’]/u.test(s)||/^\\p{Lu}$/u.test(s));var s;e=function(e,t){if(\"string\"!=typeof e)return e;const n=t.groups();return e=e.replace(I,(e=>{const t=e.replace(/\\$/,\"\");return n.hasOwnProperty(t)?n[t].text():e})),e}(e,r);const l=this.update(n);n=n.map((e=>e.slice(0,3)));const u=(l.docs[0]||[]).map((e=>Array.from(e.tags))),c=l.docs[0][0].pre,h=l.docs[0][l.docs[0].length-1].post;if(\"string\"==typeof e&&(e=this.fromText(e).compute(\"id\")),r.insertAfter(e),l.has(\"@hasContraction\")&&r.contractions){r.grow(\"@hasContraction+\").contractions().expand()}if(r.delete(l),a){const e=r.docs[0],t=e[e.length-1];t.tags.has(\"Possessive\")||(t.text+=\"'s\",t.normal+=\"'s\",t.tags.add(\"Possessive\"))}if(c&&r.docs[0]&&(r.docs[0][0].pre=c),h&&r.docs[0]){const e=r.docs[0][r.docs[0].length-1];e.post.trim()||(e.post=h)}const d=r.toView(n).compute([\"index\",\"freeze\",\"lexicon\"]);if(d.world.compute.preTagger&&d.compute(\"preTagger\"),d.compute(\"unfreeze\"),t.tags&&d.terms().forEach(((e,t)=>{e.tagSafe(u[t])})),!d.docs[0]||!d.docs[0][0])return d;if(t.case){const e=i?D:H;d.docs[0][0].text=e(d.docs[0][0].text)}return d},T.replace=function(e,t,n){if(e&&!t)return this.replaceWith(e,n);const r=this.match(e);return r.found?(this.soften(),r.replaceWith(t,n)):this};const E={remove:function(e){const{indexN:t}=this.methods.one.pointer;this.uncache();let n=this.all(),r=this;e&&(n=this,r=this.match(e));const o=!n.ptrs;if(r.has(\"@hasContraction\")&&r.contractions){r.grow(\"@hasContraction\").contractions().expand()}let a=n.fullPointer;const i=r.fullPointer.reverse(),s=function(e,t){t.forEach((t=>{const[n,r,o]=t,a=o-r;e[n]&&(o===e[n].length&&o>1&&function(e,t){const n=e.length-1,r=e[n],o=e[n-t];o&&r&&(o.post+=r.post,o.post=o.post.replace(/ +([.?!,;:])/,\"$1\"),o.post=o.post.replace(/[,;:]+([.?!])/,\"$1\"))}(e[n],a),e[n].splice(r,a))}));for(let t=e.length-1;t>=0;t-=1)if(0===e[t].length&&(e.splice(t,1),t===e.length&&e[t-1])){const n=e[t-1],r=n[n.length-1];r&&(r.post=r.post.trimEnd())}return e}(this.document,i);if(a=function(e,t){return e=e.map((e=>{const[n]=e;return t[n]?(t[n].forEach((t=>{const n=t[2]-t[1];e[1]<=t[1]&&e[2]>=t[2]&&(e[2]-=n)})),e):e})),e.forEach(((t,n)=>{if(0===t[1]&&0==t[2])for(let t=n+1;t<e.length;t+=1)e[t][0]-=1,e[t][0]<0&&(e[t][0]=0)})),e=(e=e.filter((e=>e[2]-e[1]>0))).map((e=>(e[3]=null,e[4]=null,e)))}(a,t(i)),n.ptrs=a,n.document=s,n.compute(\"index\"),o&&(n.ptrs=void 0),!e)return this.ptrs=[],n.none();return n.toView(a)}};E.delete=E.remove;const G={pre:function(e,t){return void 0===e&&this.found?this.docs[0][0].pre:(this.docs.forEach((n=>{const r=n[0];!0===t?r.pre+=e:r.pre=e})),this)},post:function(e,t){if(void 0===e){const e=this.docs[this.docs.length-1];return e[e.length-1].post}return this.docs.forEach((n=>{const r=n[n.length-1];!0===t?r.post+=e:r.post=e})),this},trim:function(){if(!this.found)return this;const e=this.docs,t=e[0][0];t.pre=t.pre.trimStart();const n=e[e.length-1],r=n[n.length-1];return r.post=r.post.trimEnd(),this},hyphenate:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.pre=\"\"),e[n+1]&&(t.post=\"-\")}))})),this},dehyphenate:function(){const e=/[-–—]/;return this.docs.forEach((t=>{t.forEach((t=>{e.test(t.post)&&(t.post=\" \")}))})),this},toQuotations:function(e,t){return e=e||'\"',t=t||'\"',this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const r=n[n.length-1];r.post=t+r.post})),this},toParentheses:function(e,t){return e=e||\"(\",t=t||\")\",this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const r=n[n.length-1];r.post=t+r.post})),this}};G.deHyphenate=G.dehyphenate,G.toQuotation=G.toQuotations;var O={alpha:(e,t)=>e.normal<t.normal?-1:e.normal>t.normal?1:0,length:(e,t)=>{const n=e.normal.trim().length,r=t.normal.trim().length;return n<r?1:n>r?-1:0},wordCount:(e,t)=>e.words<t.words?1:e.words>t.words?-1:0,sequential:(e,t)=>e[0]<t[0]?1:e[0]>t[0]?-1:e[1]>t[1]?1:-1,byFreq:function(e){const t={};return e.forEach((e=>{t[e.normal]=t[e.normal]||0,t[e.normal]+=1})),e.sort(((e,n)=>{const r=t[e.normal],o=t[n.normal];return r<o?1:r>o?-1:0})),e}};const F=new Set([\"index\",\"sequence\",\"seq\",\"sequential\",\"chron\",\"chronological\"]),V=new Set([\"freq\",\"frequency\",\"topk\",\"repeats\"]),z=new Set([\"alpha\",\"alphabetical\"]);var B={unique:function(){const e=new Set,t=this.filter((t=>{const n=t.text(\"machine\");return!e.has(n)&&(e.add(n),!0)}));return t},reverse:function(){let e=this.pointer||this.docs.map(((e,t)=>[t]));return e=[].concat(e),e=e.reverse(),this._cache&&(this._cache=this._cache.reverse()),this.update(e)},sort:function(e){const{docs:t,pointer:n}=this;if(this.uncache(),\"function\"==typeof e)return function(e,t){let n=e.fullPointer;return n=n.sort(((n,r)=>(n=e.update([n]),r=e.update([r]),t(n,r)))),e.ptrs=n,e}(this,e);e=e||\"alpha\";const r=n||t.map(((e,t)=>[t]));let o=t.map(((e,t)=>({index:t,words:e.length,normal:e.map((e=>e.machine||e.normal||\"\")).join(\" \"),pointer:r[t]})));return F.has(e)&&(e=\"sequential\"),z.has(e)&&(e=\"alpha\"),V.has(e)?(o=O.byFreq(o),this.update(o.map((e=>e.pointer)))):\"function\"==typeof O[e]?(o=o.sort(O[e]),this.update(o.map((e=>e.pointer)))):this}};const S=function(e,t){if(e.length>0){const t=e[e.length-1],n=t[t.length-1];!1===/ /.test(n.post)&&(n.post+=\" \")}return e=e.concat(t)};var $={concat:function(e){if(\"string\"==typeof e){const t=this.fromText(e);if(this.found&&this.ptrs){const e=this.fullPointer,n=e[e.length-1][0];this.document.splice(n,0,...t.document)}else this.document=this.document.concat(t.document);return this.all().compute(\"index\")}if(\"object\"==typeof e&&e.isView)return function(e,t){if(e.document===t.document){const n=e.fullPointer.concat(t.fullPointer);return e.toView(n).compute(\"index\")}return t.fullPointer.forEach((t=>{t[0]+=e.document.length})),e.document=S(e.document,t.docs),e.all()}(this,e);if(t=e,\"[object Array]\"===Object.prototype.toString.call(t)){const t=S(this.document,e);return this.document=t,this.all()}var t;return this}};var M={harden:function(){return this.ptrs=this.fullPointer,this},soften:function(){let e=this.ptrs;return!e||e.length<1||(e=e.map((e=>e.slice(0,3))),this.ptrs=e),this}};const L=Object.assign({},{toLowerCase:function(){return this.termList().forEach((e=>{e.text=e.text.toLowerCase()})),this},toUpperCase:function(){return this.termList().forEach((e=>{e.text=e.text.toUpperCase()})),this},toTitleCase:function(){return this.termList().forEach((e=>{e.text=e.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))})),this},toCamelCase:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.text=t.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))),n!==e.length-1&&(t.post=\"\")}))})),this}},x,T,E,G,B,$,M),K={id:function(e){const t=e.docs;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1){const r=t[e][n];r.id=r.id||A(r)}}};var J={api:function(e){Object.assign(e.prototype,L)},compute:K};const W=!0;var q={one:{contractions:[{word:\"@\",out:[\"at\"]},{word:\"arent\",out:[\"are\",\"not\"]},{word:\"alot\",out:[\"a\",\"lot\"]},{word:\"brb\",out:[\"be\",\"right\",\"back\"]},{word:\"cannot\",out:[\"can\",\"not\"]},{word:\"dun\",out:[\"do\",\"not\"]},{word:\"can't\",out:[\"can\",\"not\"]},{word:\"shan't\",out:[\"should\",\"not\"]},{word:\"won't\",out:[\"will\",\"not\"]},{word:\"that's\",out:[\"that\",\"is\"]},{word:\"what's\",out:[\"what\",\"is\"]},{word:\"let's\",out:[\"let\",\"us\"]},{word:\"dunno\",out:[\"do\",\"not\",\"know\"]},{word:\"gonna\",out:[\"going\",\"to\"]},{word:\"gotta\",out:[\"have\",\"got\",\"to\"]},{word:\"gimme\",out:[\"give\",\"me\"]},{word:\"outta\",out:[\"out\",\"of\"]},{word:\"tryna\",out:[\"trying\",\"to\"]},{word:\"gtg\",out:[\"got\",\"to\",\"go\"]},{word:\"im\",out:[\"i\",\"am\"]},{word:\"imma\",out:[\"I\",\"will\"]},{word:\"imo\",out:[\"in\",\"my\",\"opinion\"]},{word:\"irl\",out:[\"in\",\"real\",\"life\"]},{word:\"ive\",out:[\"i\",\"have\"]},{word:\"rn\",out:[\"right\",\"now\"]},{word:\"tbh\",out:[\"to\",\"be\",\"honest\"]},{word:\"wanna\",out:[\"want\",\"to\"]},{word:\"c'mere\",out:[\"come\",\"here\"]},{word:\"c'mon\",out:[\"come\",\"on\"]},{word:\"shoulda\",out:[\"should\",\"have\"]},{word:\"coulda\",out:[\"coulda\",\"have\"]},{word:\"woulda\",out:[\"woulda\",\"have\"]},{word:\"musta\",out:[\"must\",\"have\"]},{word:\"tis\",out:[\"it\",\"is\"]},{word:\"twas\",out:[\"it\",\"was\"]},{word:\"y'know\",out:[\"you\",\"know\"]},{word:\"ne'er\",out:[\"never\"]},{word:\"o'er\",out:[\"over\"]},{after:\"ll\",out:[\"will\"]},{after:\"ve\",out:[\"have\"]},{after:\"re\",out:[\"are\"]},{after:\"m\",out:[\"am\"]},{before:\"c\",out:[\"ce\"]},{before:\"m\",out:[\"me\"]},{before:\"n\",out:[\"ne\"]},{before:\"qu\",out:[\"que\"]},{before:\"s\",out:[\"se\"]},{before:\"t\",out:[\"tu\"]},{word:\"shouldnt\",out:[\"should\",\"not\"]},{word:\"couldnt\",out:[\"could\",\"not\"]},{word:\"wouldnt\",out:[\"would\",\"not\"]},{word:\"hasnt\",out:[\"has\",\"not\"]},{word:\"wasnt\",out:[\"was\",\"not\"]},{word:\"isnt\",out:[\"is\",\"not\"]},{word:\"cant\",out:[\"can\",\"not\"]},{word:\"dont\",out:[\"do\",\"not\"]},{word:\"wont\",out:[\"will\",\"not\"]},{word:\"howd\",out:[\"how\",\"did\"]},{word:\"whatd\",out:[\"what\",\"did\"]},{word:\"whend\",out:[\"when\",\"did\"]},{word:\"whered\",out:[\"where\",\"did\"]}],numberSuffixes:{st:W,nd:W,rd:W,th:W,am:W,pm:W,max:W,\"°\":W,s:W,e:W,er:W,\"ère\":W,\"ème\":W}}};const U=function(e,t,n){const[r,o]=t;n&&0!==n.length&&(n=n.map(((e,t)=>(e.implicit=e.text,e.machine=e.text,e.pre=\"\",e.post=\"\",e.text=\"\",e.normal=\"\",e.index=[r,o+t],e))),n[0]&&(n[0].pre=e[r][o].pre,n[n.length-1].post=e[r][o].post,n[0].text=e[r][o].text,n[0].normal=e[r][o].normal),e[r].splice(o,1,...n))},R=/'/,Q=new Set([\"what\",\"how\",\"when\",\"where\",\"why\"]),Z=new Set([\"be\",\"go\",\"start\",\"think\",\"need\"]),_=new Set([\"been\",\"gone\"]),X=/'/,Y=/(e|é|aison|sion|tion)$/,ee=/(age|isme|acle|ege|oire)$/;var te=(e,t)=>[\"je\",e[t].normal.split(X)[1]],ne=(e,t)=>{const n=e[t].normal.split(X)[1];return n&&n.endsWith(\"e\")?[\"la\",n]:[\"le\",n]},re=(e,t)=>{const n=e[t].normal.split(X)[1];return n&&Y.test(n)&&!ee.test(n)?[\"du\",n]:n&&n.endsWith(\"s\")?[\"des\",n]:[\"de\",n]};const oe=/^([0-9.]{1,4}[a-z]{0,2}) ?[-–—] ?([0-9]{1,4}[a-z]{0,2})$/i,ae=/^([0-9]{1,2}(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9]{1,2}(:[0-9][0-9])?(am|pm)?)$/i,ie=/^[0-9]{3}-[0-9]{4}$/,se=function(e,t){const n=e[t];let r=n.text.match(oe);return null!==r?!0===n.tags.has(\"PhoneNumber\")||ie.test(n.text)?null:[r[1],\"to\",r[2]]:(r=n.text.match(ae),null!==r?[r[1],\"to\",r[4]]:null)},le=/^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/,ue=function(e,t,n){const r=n.model.one.numberSuffixes||{},o=e[t].text.match(le);if(null!==o){const e=o[2].toLowerCase().trim();return r.hasOwnProperty(e)?null:[o[1],e]}return null},ce=/'/,he=/^[0-9][^-–—]*[-–—].*?[0-9]/,de=function(e,t,n,r){const o=t.update();o.document=[e];let a=n+r;n>0&&(n-=1),e[a]&&(a+=1),o.ptrs=[[0,n,a]]},ge={t:(e,t)=>function(e,t){return\"ain't\"===e[t].normal||\"aint\"===e[t].normal?null:[e[t].normal.replace(/n't/,\"\"),\"not\"]}(e,t),d:(e,t)=>function(e,t){const n=e[t].normal.split(R)[0];if(Q.has(n))return[n,\"did\"];if(e[t+1]){if(_.has(e[t+1].normal))return[n,\"had\"];if(Z.has(e[t+1].normal))return[n,\"would\"]}return null}(e,t)},me={j:(e,t)=>te(e,t),l:(e,t)=>ne(e,t),d:(e,t)=>re(e,t)},pe=function(e,t,n,r){for(let o=0;o<e.length;o+=1){const a=e[o];if(a.word===t.normal)return a.out;if(null!==r&&r===a.after)return[n].concat(a.out);if(null!==n&&n===a.before&&r&&r.length>2)return a.out.concat(r)}return null},fe=function(e,t){const n=t.fromText(e.join(\" \"));return n.compute([\"id\",\"alias\"]),n.docs[0]},be=function(e,t){for(let n=t+1;n<5&&e[n];n+=1)if(\"been\"===e[n].normal)return[\"there\",\"has\"];return[\"there\",\"is\"]};var ve={contractions:e=>{const{world:t,document:n}=e,{model:r,methods:o}=t,a=r.one.contractions||[];n.forEach(((r,i)=>{for(let s=r.length-1;s>=0;s-=1){let l=null,u=null;if(!0===ce.test(r[s].normal)){const e=r[s].normal.split(ce);l=e[0],u=e[1]}let c=pe(a,r[s],l,u);!c&&ge.hasOwnProperty(u)&&(c=ge[u](r,s,t)),!c&&me.hasOwnProperty(l)&&(c=me[l](r,s)),\"there\"===l&&\"s\"===u&&(c=be(r,s)),c?(c=fe(c,e),U(n,[i,s],c),de(n[i],e,s,c.length)):he.test(r[s].normal)?(c=se(r,s),c&&(c=fe(c,e),U(n,[i,s],c),o.one.setTag(c,\"NumberRange\",t),c[2]&&c[2].tags.has(\"Time\")&&o.one.setTag([c[0]],\"Time\",t,null,\"time-range\"),de(n[i],e,s,c.length))):(c=ue(r,s,t),c&&(c=fe(c,e),U(n,[i,s],c),o.one.setTag([c[1]],\"Unit\",t,null,\"contraction-unit\")))}}))}};const ye={model:q,compute:ve,hooks:[\"contractions\"]},we=function(e){const t=e.world,{model:n,methods:r}=e.world,o=r.one.setTag,{frozenLex:a}=n.one,i=n.one._multiCache||{};e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const r=e[n],s=r.machine||r.normal;if(void 0!==i[s]&&e[n+1]){for(let r=n+i[s]-1;r>n;r-=1){const i=e.slice(n,r+1),s=i.map((e=>e.machine||e.normal)).join(\" \");!0!==a.hasOwnProperty(s)||(o(i,a[s],t,!1,\"1-frozen-multi-lexicon\"),i.forEach((e=>e.frozen=!0)))}}void 0!==a[s]&&a.hasOwnProperty(s)&&(o([r],a[s],t,!1,\"1-freeze-lexicon\"),r.frozen=!0)}}))};const ke=e=>\"\u001b[34m\"+e+\"\u001b[0m\",Pe=e=>\"\u001b[3m\u001b[2m\"+e+\"\u001b[0m\",Ae=function(e){e.docs.forEach((e=>{console.log(ke(\"\\n  ┌─────────\")),e.forEach((e=>{let t=`  ${Pe(\"│\")}  `;const n=e.implicit||e.text||\"-\";!0===e.frozen?t+=`${ke(n)} ❄️`:t+=Pe(n),console.log(t)}))}))};var Ce={compute:{frozen:we,freeze:we,unfreeze:function(e){return e.docs.forEach((e=>{e.forEach((e=>{delete e.frozen}))})),e}},mutate:e=>{const t=e.methods.one;t.termMethods.isFrozen=e=>!0===e.frozen,t.debug.freeze=Ae,t.debug.frozen=Ae},api:function(e){e.prototype.freeze=function(){return this.docs.forEach((e=>{e.forEach((e=>{e.frozen=!0}))})),this},e.prototype.unfreeze=function(){this.compute(\"unfreeze\")},e.prototype.isFrozen=function(){return this.match(\"@isFrozen+\")}},hooks:[\"freeze\"]};const Ne=function(e,t,n){const{model:r,methods:o}=n,a=o.one.setTag,i=r.one._multiCache||{},{lexicon:s}=r.one||{},l=e[t],u=l.machine||l.normal;if(void 0!==i[u]&&e[t+1]){for(let r=t+i[u]-1;r>t;r-=1){const o=e.slice(t,r+1);if(o.length<=1)return!1;const i=o.map((e=>e.machine||e.normal)).join(\" \");if(!0===s.hasOwnProperty(i)){const e=s[i];return a(o,e,n,!1,\"1-multi-lexicon\"),!e||2!==e.length||\"PhrasalVerb\"!==e[0]&&\"PhrasalVerb\"!==e[1]||a([o[1]],\"Particle\",n,!1,\"1-phrasal-particle\"),!0}}return!1}return null},je=/^(under|over|mis|re|un|dis|semi|pre|post)-?/,xe=new Set([\"Verb\",\"Infinitive\",\"PastTense\",\"Gerund\",\"PresentTense\",\"Adjective\",\"Participle\"]),Ie=function(e,t,n){const{model:r,methods:o}=n,a=o.one.setTag,{lexicon:i}=r.one,s=e[t],l=s.machine||s.normal;if(void 0!==i[l]&&i.hasOwnProperty(l))return a([s],i[l],n,!1,\"1-lexicon\"),!0;if(s.alias){const e=s.alias.find((e=>i.hasOwnProperty(e)));if(e)return a([s],i[e],n,!1,\"1-lexicon-alias\"),!0}if(!0===je.test(l)){const e=l.replace(je,\"\");if(i.hasOwnProperty(e)&&e.length>3&&xe.has(i[e]))return a([s],i[e],n,!1,\"1-lexicon-prefix\"),!0}return null};var Te={lexicon:function(e){const t=e.world;e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1)if(0===e[n].tags.size){let r=null;r=r||Ne(e,n,t),r=r||Ie(e,n,t)}}))}};var De={one:{expandLexicon:function(e){const t={},n={};return Object.keys(e).forEach((r=>{const o=e[r],a=(r=(r=r.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);a.length>1&&(void 0===n[a[0]]||a.length>n[a[0]])&&(n[a[0]]=a.length),t[r]=t[r]||o})),delete t[\"\"],delete t.null,delete t[\" \"],{lex:t,_multi:n}}}};var He={addWords:function(e,t=!1){const n=this.world(),{methods:r,model:o}=n;if(!e)return;if(Object.keys(e).forEach((t=>{\"string\"==typeof e[t]&&e[t].startsWith(\"#\")&&(e[t]=e[t].replace(/^#/,\"\"))})),!0===t){const{lex:t,_multi:a}=r.one.expandLexicon(e,n);return Object.assign(o.one._multiCache,a),void Object.assign(o.one.frozenLex,t)}if(r.two.expandLexicon){const{lex:t,_multi:a}=r.two.expandLexicon(e,n);Object.assign(o.one.lexicon,t),Object.assign(o.one._multiCache,a)}const{lex:a,_multi:i}=r.one.expandLexicon(e,n);Object.assign(o.one.lexicon,a),Object.assign(o.one._multiCache,i)}};var Ee={model:{one:{lexicon:{},_multiCache:{},frozenLex:{}}},methods:De,compute:Te,lib:He,hooks:[\"lexicon\"]};const Ge=function(e,t){const n=[{}],r=[null],o=[0],a=[];let i=0;e.forEach((function(e){let o=0;const a=function(e,t){const{methods:n,model:r}=t,o=n.one.tokenize.splitTerms(e,r).map((e=>n.one.tokenize.splitWhitespace(e,r)));return o.map((e=>e.text.toLowerCase()))}(e,t);for(let e=0;e<a.length;e++){const t=a[e];n[o]&&n[o].hasOwnProperty(t)?o=n[o][t]:(i++,n[o][t]=i,n[i]={},o=i,r[i]=null)}r[o]=[a.length]}));for(const e in n[0])i=n[0][e],o[i]=0,a.push(i);for(;a.length;){const e=a.shift(),t=Object.keys(n[e]);for(let s=0;s<t.length;s+=1){const l=t[s],u=n[e][l];for(a.push(u),i=o[e];i>0&&!n[i].hasOwnProperty(l);)i=o[i];if(n.hasOwnProperty(i)){const e=n[i][l];o[u]=e,r[e]&&(r[u]=r[u]||[],r[u]=r[u].concat(r[e]))}else o[u]=0}}return{goNext:n,endAs:r,failTo:o}},Oe=function(e,t,n){let r=0;const o=[];for(let a=0;a<e.length;a++){const i=e[a][n.form]||e[a].normal;for(;r>0&&(void 0===t.goNext[r]||!t.goNext[r].hasOwnProperty(i));)r=t.failTo[r]||0;if(t.goNext[r].hasOwnProperty(i)&&(r=t.goNext[r][i],t.endAs[r])){const n=t.endAs[r];for(let t=0;t<n.length;t++){const r=n[t],i=e[a-r+1],[s,l]=i.index;o.push([s,l,l+r,i.id])}}}return o},Fe=function(e,t){for(let n=0;n<e.length;n+=1)if(!0===t.has(e[n]))return!1;return!0};const Ve=(e,t)=>{for(let n=e.length-1;n>=0;n-=1)if(e[n]!==t)return e=e.slice(0,n+1);return e},ze={buildTrie:function(e){return function(e){return e.goNext=e.goNext.map((e=>{if(0!==Object.keys(e).length)return e})),e.goNext=Ve(e.goNext,void 0),e.failTo=Ve(e.failTo,0),e.endAs=Ve(e.endAs,null),e}(Ge(e,this.world()))}};ze.compile=ze.buildTrie;var Be={api:function(e){e.prototype.lookup=function(e,t={}){if(!e)return this.none();\"string\"==typeof e&&(e=[e]);var n;let r=function(e,t,n){let r=[];n.form=n.form||\"normal\";const o=e.docs;if(!t.goNext||!t.goNext[0])return console.error(\"Compromise invalid lookup trie\"),e.none();const a=Object.keys(t.goNext[0]);for(let i=0;i<o.length;i++){if(e._cache&&e._cache[i]&&!0===Fe(a,e._cache[i]))continue;const s=o[i],l=Oe(s,t,n);l.length>0&&(r=r.concat(l))}return e.update(r)}(this,(n=e,\"[object Object]\"===Object.prototype.toString.call(n)?e:Ge(e,this.world)),t);return r=r.settle(),r}},lib:ze};const Se=function(e,t){return t?(e.forEach((e=>{const n=e[0];t[n]&&(e[0]=t[n][0],e[1]+=t[n][1],e[2]+=t[n][1])})),e):e},$e=function(e,t){let{ptrs:n}=e;const{byGroup:r}=e;return n=Se(n,t),Object.keys(r).forEach((e=>{r[e]=Se(r[e],t)})),{ptrs:n,byGroup:r}},Me=function(e,t,n){const r=n.methods.one;return\"number\"==typeof e&&(e=String(e)),\"string\"==typeof e&&(e=r.killUnicode(e,n),e=r.parseMatch(e,t,n)),e},Le=e=>\"[object Object]\"===Object.prototype.toString.call(e),Ke=e=>e&&Le(e)&&!0===e.isView,Je=e=>e&&Le(e)&&!0===e.isNet;var We={matchOne:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.intersection(e).eq(0);if(Je(e))return this.sweep(e,{tagger:!1,matchOne:!0}).view;const o={regs:e=Me(e,n,this.world),group:t,justOne:!0},a=r.match(this.docs,o,this._cache),{ptrs:i,byGroup:s}=$e(a,this.fullPointer),l=this.toView(i);return l._groups=s,l},match:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.intersection(e);if(Je(e))return this.sweep(e,{tagger:!1}).view.settle();const o={regs:e=Me(e,n,this.world),group:t},a=r.match(this.docs,o,this._cache),{ptrs:i,byGroup:s}=$e(a,this.fullPointer),l=this.toView(i);return l._groups=s,l},has:function(e,t,n){const r=this.methods.one;if(Ke(e)){return this.intersection(e).fullPointer.length>0}if(Je(e))return this.sweep(e,{tagger:!1}).view.found;const o={regs:e=Me(e,n,this.world),group:t,justOne:!0};return r.match(this.docs,o,this._cache).ptrs.length>0},if:function(e,t,n){const r=this.methods.one;if(Ke(e))return this.filter((t=>t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.if(t)}const o={regs:e=Me(e,n,this.world),group:t,justOne:!0};let a=this.fullPointer;const i=this._cache||[];a=a.filter(((e,t)=>{const n=this.update([e]);return r.match(n.docs,o,i[t]).ptrs.length>0}));const s=this.update(a);return this._cache&&(s._cache=a.map((e=>i[e[0]]))),s},ifNo:function(e,t,n){const{methods:r}=this,o=r.one;if(Ke(e))return this.filter((t=>!t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.ifNo(t)}e=Me(e,n,this.world);const a=this._cache||[],i=this.filter(((n,r)=>{const i={regs:e,group:t,justOne:!0};return 0===o.match(n.docs,i,a[r]).ptrs.length}));return this._cache&&(i._cache=i.ptrs.map((e=>a[e[0]]))),i}};var qe={before:function(e,t,n){const{indexN:r}=this.methods.one.pointer,o=[],a=r(this.fullPointer);Object.keys(a).forEach((e=>{const t=a[e].sort(((e,t)=>e[1]>t[1]?1:-1))[0];t[1]>0&&o.push([t[0],0,t[1]])}));const i=this.toView(o);return e?i.match(e,t,n):i},after:function(e,t,n){const{indexN:r}=this.methods.one.pointer,o=[],a=r(this.fullPointer),i=this.document;Object.keys(a).forEach((e=>{const t=a[e].sort(((e,t)=>e[1]>t[1]?-1:1))[0],[n,,r]=t;r<i[n].length&&o.push([n,r,i[n].length])}));const s=this.toView(o);return e?s.match(e,t,n):s},growLeft:function(e,t,n){\"string\"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[e.length-1].end=!0;const r=this.fullPointer;return this.forEach(((n,o)=>{const a=n.before(e,t);if(a.found){const e=a.terms();r[o][1]-=e.length,r[o][3]=e.docs[0][0].id}})),this.update(r)},growRight:function(e,t,n){\"string\"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[0].start=!0;const r=this.fullPointer;return this.forEach(((n,o)=>{const a=n.after(e,t);if(a.found){const e=a.terms();r[o][2]+=e.length,r[o][4]=null}})),this.update(r)},grow:function(e,t,n){return this.growRight(e,t,n).growLeft(e,t,n)}};const Ue=function(e,t){return[e[0],e[1],t[2]]},Re=(e,t,n)=>{return\"string\"==typeof e||(r=e,\"[object Array]\"===Object.prototype.toString.call(r))?t.match(e,n):e||t.none();var r},Qe=function(e,t){const[n,r,o]=e;return t.document[n]&&t.document[n][r]&&(e[3]=e[3]||t.document[n][r].id,t.document[n][o-1]&&(e[4]=e[4]||t.document[n][o-1].id)),e},Ze={splitOn:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);let a=[];return o.forEach((e=>{a.push(e.passthrough),a.push(e.before),a.push(e.match),a.push(e.after)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)},splitBefore:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);for(let e=0;e<o.length;e+=1)!o[e].after&&o[e+1]&&o[e+1].before&&o[e].match&&o[e].match[0]===o[e+1].before[0]&&(o[e].after=o[e+1].before,delete o[e+1].before);let a=[];return o.forEach((e=>{a.push(e.passthrough),a.push(e.before),e.match&&e.after?a.push(Ue(e.match,e.after)):a.push(e.match)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)},splitAfter:function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Re(e,this,t).fullPointer,o=n(this.fullPointer,r);let a=[];return o.forEach((e=>{a.push(e.passthrough),e.before&&e.match?a.push(Ue(e.before,e.match)):(a.push(e.before),a.push(e.match)),a.push(e.after)})),a=a.filter((e=>e)),a=a.map((e=>Qe(e,this))),this.update(a)}};Ze.split=Ze.splitAfter;const _e=function(e,t){return!(!e||!t)&&(e[0]===t[0]&&e[2]===t[1])},Xe=function(e,t,n){const r=e.world,o=r.methods.one.parseMatch;n=n||\"^.\";const a=o(t=t||\".$\",{},r),i=o(n,{},r);a[a.length-1].end=!0,i[0].start=!0;const s=e.fullPointer,l=[s[0]];for(let t=1;t<s.length;t+=1){const n=l[l.length-1],r=s[t],o=e.update([n]),u=e.update([r]);_e(n,r)&&o.has(a)&&u.has(i)?l[l.length-1]=[n[0],n[1],r[2],n[3],r[4]]:l.push(r)}return e.update(l)},Ye={joinIf:function(e,t){return Xe(this,e,t)},join:function(){return Xe(this)}},et=Object.assign({},We,qe,Ze,Ye);et.lookBehind=et.before,et.lookBefore=et.before,et.lookAhead=et.after,et.lookAfter=et.after,et.notIf=et.ifNo;const tt=/(?:^|\\s)([![^]*(?:<[^<]*>)?\\/.*?[^\\\\/]\\/[?\\]+*$~]*)(?:\\s|$)/,nt=/([!~[^]*(?:<[^<]*>)?\\([^)]+[^\\\\)]\\)[?\\]+*$~]*)(?:\\s|$)/,rt=/ /g,ot=e=>/^[![^]*(<[^<]*>)?\\//.test(e)&&/\\/[?\\]+*$~]*$/.test(e),at=function(e){return e=(e=e.map((e=>e.trim()))).filter((e=>e))},it=/\\{([0-9]+)?(, *[0-9]*)?\\}/,st=/&&/,lt=new RegExp(/^<\\s*(\\S+)\\s*>/),ut=e=>e.charAt(0).toUpperCase()+e.substring(1),ct=e=>e.charAt(e.length-1),ht=e=>e.charAt(0),dt=e=>e.substring(1),gt=e=>e.substring(0,e.length-1),mt=function(e){return e=dt(e),e=gt(e)},pt=function(e,t){const n={};for(let r=0;r<2;r+=1){if(\"$\"===ct(e)&&(n.end=!0,e=gt(e)),\"^\"===ht(e)&&(n.start=!0,e=dt(e)),\"?\"===ct(e)&&(n.optional=!0,e=gt(e)),(\"[\"===ht(e)||\"]\"===ct(e))&&(n.group=null,\"[\"===ht(e)&&(n.groupStart=!0),\"]\"===ct(e)&&(n.groupEnd=!0),e=(e=e.replace(/^\\[/,\"\")).replace(/\\]$/,\"\"),\"<\"===ht(e))){const t=lt.exec(e);t.length>=2&&(n.group=t[1],e=e.replace(t[0],\"\"))}if(\"+\"===ct(e)&&(n.greedy=!0,e=gt(e)),\"*\"!==e&&\"*\"===ct(e)&&\"\\\\*\"!==e&&(n.greedy=!0,e=gt(e)),\"!\"===ht(e)&&(n.negative=!0,e=dt(e)),\"~\"===ht(e)&&\"~\"===ct(e)&&e.length>2&&(e=mt(e),n.fuzzy=!0,n.min=t.fuzzy||.85,!1===/\\(/.test(e)))return n.word=e,n;if(\"/\"===ht(e)&&\"/\"===ct(e))return e=mt(e),t.caseSensitive&&(n.use=\"text\"),n.regex=new RegExp(e),n;if(!0===it.test(e)&&(e=e.replace(it,((e,t,r)=>(void 0===r?(n.min=Number(t),n.max=Number(t)):(r=r.replace(/, */,\"\"),void 0===t?(n.min=0,n.max=Number(r)):(n.min=Number(t),n.max=Number(r||999))),n.greedy=!0,n.min||(n.optional=!0),\"\")))),\"(\"===ht(e)&&\")\"===ct(e)){st.test(e)?(n.choices=e.split(st),n.operator=\"and\"):(n.choices=e.split(\"|\"),n.operator=\"or\"),n.choices[0]=dt(n.choices[0]);const r=n.choices.length-1;n.choices[r]=gt(n.choices[r]),n.choices=n.choices.map((e=>e.trim())),n.choices=n.choices.filter((e=>e)),n.choices=n.choices.map((e=>e.split(/ /g).map((e=>pt(e,t))))),e=\"\"}if(\"{\"===ht(e)&&\"}\"===ct(e)){if(e=mt(e),n.root=e,/\\//.test(e)){const e=n.root.split(/\\//);n.root=e[0],n.pos=e[1],\"adj\"===n.pos&&(n.pos=\"Adjective\"),n.pos=n.pos.charAt(0).toUpperCase()+n.pos.substr(1).toLowerCase(),void 0!==e[2]&&(n.sense=e[2])}return n}if(\"<\"===ht(e)&&\">\"===ct(e))return e=mt(e),n.chunk=ut(e),n.greedy=!0,n;if(\"%\"===ht(e)&&\"%\"===ct(e))return e=mt(e),n.switch=e,n}return\"#\"===ht(e)?(n.tag=dt(e),n.tag=ut(n.tag),n):\"@\"===ht(e)?(n.method=dt(e),n):\".\"===e?(n.anything=!0,n):\"*\"===e?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(e&&(e=(e=e.replace(\"\\\\*\",\"*\")).replace(\"\\\\.\",\".\"),t.caseSensitive?n.use=\"text\":e=e.toLowerCase(),n.word=e),n)},ft=/[a-z0-9][-–—][a-z]/i,bt=function(e,t){const{all:n}=t.methods.two.transform.verb||{},r=e.root;return n?n(r,t.model):[]},vt=function(e,t){const{all:n}=t.methods.two.transform.noun||{};return n?n(e.root,t.model):[e.root]},yt=function(e,t){const{all:n}=t.methods.two.transform.adjective||{};return n?n(e.root,t.model):[e.root]},wt=function(e){return e=function(e){let t=0,n=null;for(let r=0;r<e.length;r++){const o=e[r];!0===o.groupStart&&(n=o.group,null===n&&(n=String(t),t+=1)),null!==n&&(o.group=n),!0===o.groupEnd&&(n=null)}return e}(e),e=function(e){return e.map((e=>(e.fuzzy&&e.choices&&e.choices.forEach((t=>{1===t.length&&t[0].word&&(t[0].fuzzy=!0,t[0].min=e.min)})),e)))}(e=e.map((e=>{if(void 0!==e.choices){if(\"or\"!==e.operator)return e;if(!0===e.fuzzy)return e;!0===e.choices.every((e=>{if(1!==e.length)return!1;const t=e[0];return!0!==t.fuzzy&&!t.start&&!t.end&&void 0!==t.word&&!0!==t.negative&&!0!==t.optional&&!0!==t.method}))&&(e.fastOr=new Set,e.choices.forEach((t=>{e.fastOr.add(t[0].word)})),delete e.choices)}return e}))),e},kt=function(e,t){for(const n of t)if(e.has(n))return!0;return!1},Pt=function(e,t){for(let n=0;n<e.length;n+=1){const r=e[n];if(!0!==r.optional&&!0!==r.negative&&!0!==r.fuzzy){if(void 0!==r.word&&!1===t.has(r.word))return!0;if(void 0!==r.tag&&!1===t.has(\"#\"+r.tag))return!0;if(r.fastOr&&!1===kt(r.fastOr,t))return!1}}return!1},At=function(e,t,n=3){if(e===t)return 1;if(e.length<n||t.length<n)return 0;const r=function(e,t){const n=e.length,r=t.length;if(0===n)return r;if(0===r)return n;const o=(r>n?r:n)+1;if(Math.abs(n-r)>(o||100))return o||100;const a=[];for(let e=0;e<o;e++)a[e]=[e],a[e].length=o;for(let e=0;e<o;e++)a[0][e]=e;let i,s,l,u,c,h;for(let o=1;o<=n;++o)for(s=e[o-1],i=1;i<=r;++i){if(o===i&&a[o][i]>4)return n;l=t[i-1],u=s===l?0:1,c=a[o-1][i]+1,(h=a[o][i-1]+1)<c&&(c=h),(h=a[o-1][i-1]+u)<c&&(c=h);const r=o>1&&i>1&&s===t[i-2]&&e[o-2]===l&&(h=a[o-2][i-2]+u)<c;a[o][i]=r?h:c}return a[n][r]}(e,t),o=Math.max(e.length,t.length);return 1-(0===o?0:r/o)},Ct=/([\\u0022\\uFF02\\u0027\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F])/,Nt=/([\\u0022\\uFF02\\u0027\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4])/,jt=/^[-–—]$/,xt=/ [-–—]{1,3} /,It=(e,t)=>-1!==e.post.indexOf(t),Tt={hasQuote:e=>Ct.test(e.pre)||Nt.test(e.post),hasComma:e=>It(e,\",\"),hasPeriod:e=>!0===It(e,\".\")&&!1===It(e,\"...\"),hasExclamation:e=>It(e,\"!\"),hasQuestionMark:e=>It(e,\"?\")||It(e,\"¿\"),hasEllipses:e=>It(e,\"..\")||It(e,\"…\"),hasSemicolon:e=>It(e,\";\"),hasColon:e=>It(e,\":\"),hasSlash:e=>/\\//.test(e.text),hasHyphen:e=>jt.test(e.post)||jt.test(e.pre),hasDash:e=>xt.test(e.post)||xt.test(e.pre),hasContraction:e=>Boolean(e.implicit),isAcronym:e=>e.tags.has(\"Acronym\"),isKnown:e=>e.tags.size>0,isTitleCase:e=>/^\\p{Lu}[a-z'\\u00C0-\\u00FF]/u.test(e.text),isUpperCase:e=>/^\\p{Lu}+$/u.test(e.text)};Tt.hasQuotation=Tt.hasQuote;let Dt=function(){};Dt=function(e,t,n,r){const o=function(e,t,n,r){if(!0===t.anything)return!0;if(!0===t.start&&0!==n)return!1;if(!0===t.end&&n!==r-1)return!1;if(void 0!==t.id&&t.id===e.id)return!0;if(void 0!==t.word){if(t.use)return t.word===e[t.use];if(null!==e.machine&&e.machine===t.word)return!0;if(void 0!==e.alias&&e.alias.hasOwnProperty(t.word))return!0;if(!0===t.fuzzy){if(t.word===e.root)return!0;if(At(t.word,e.normal)>=t.min)return!0}return!(!e.alias||!e.alias.some((e=>e===t.word)))||t.word===e.text||t.word===e.normal}if(void 0!==t.tag)return!0===e.tags.has(t.tag);if(void 0!==t.method)return\"function\"==typeof Tt[t.method]&&!0===Tt[t.method](e);if(void 0!==t.pre)return e.pre&&e.pre.includes(t.pre);if(void 0!==t.post)return e.post&&e.post.includes(t.post);if(void 0!==t.regex){let n=e.normal;return t.use&&(n=e[t.use]),t.regex.test(n)}if(void 0!==t.chunk)return e.chunk===t.chunk;if(void 0!==t.switch)return e.switch===t.switch;if(void 0!==t.machine)return e.normal===t.machine||e.machine===t.machine||e.root===t.machine;if(void 0!==t.sense)return e.sense===t.sense;if(void 0!==t.fastOr){if(t.pos&&!e.tags.has(t.pos))return null;const n=e.root||e.implicit||e.machine||e.normal;return t.fastOr.has(n)||t.fastOr.has(e.text)}return void 0!==t.choices&&(\"and\"===t.operator?t.choices.every((t=>Dt(e,t,n,r))):t.choices.some((t=>Dt(e,t,n,r))))}(e,t,n,r);return!0===t.negative?!o:o};const Ht=function(e,t){if(!0===e.end&&!0===e.greedy&&t.start_i+t.t<t.phrase_length-1){const n=Object.assign({},e,{end:!1});if(!0===Dt(t.terms[t.t],n,t.start_i+t.t,t.phrase_length))return!0}return!1},Et=function(e,t){return e.groups[e.inGroup]||(e.groups[e.inGroup]={start:t,length:0}),e.groups[e.inGroup]},Gt=function(e){const{regs:t}=e,n=t[e.r],r=function(e,t){let n=e.t;if(!t)return e.terms.length;for(;n<e.terms.length;n+=1)if(!0===Dt(e.terms[n],t,e.start_i+n,e.phrase_length))return n;return null}(e,t[e.r+1]);if(null===r||0===r)return null;if(void 0!==n.min&&r-e.t<n.min)return null;if(void 0!==n.max&&r-e.t>n.max)return e.t=e.t+n.max,!0;if(!0===e.hasGroup){Et(e,e.t).length=r-e.t}return e.t=r,!0},Ot=function(e,t=0){const n=e.regs[e.r];let r=!1;for(let a=0;a<n.choices.length;a+=1){const i=n.choices[a];if(o=i,\"[object Array]\"!==Object.prototype.toString.call(o))return!1;if(r=i.every(((n,r)=>{let o=0;const a=e.t+r+t+o;if(void 0===e.terms[a])return!1;const i=Dt(e.terms[a],n,a+e.start_i,e.phrase_length);if(!0===i&&!0===n.greedy)for(let t=1;t<e.terms.length;t+=1){const r=e.terms[a+t];if(r){if(!0!==Dt(r,n,e.start_i+t,e.phrase_length))break;o+=1}}return t+=o,i})),r){t+=i.length;break}}var o;return r&&!0===n.greedy?Ot(e,t):t},Ft=function(e){const{regs:t}=e,n=t[e.r],r=Ot(e);if(r){if(!0===n.negative)return null;if(!0===e.hasGroup){Et(e,e.t).length+=r}if(!0===n.end){const t=e.phrase_length;if(e.t+e.start_i+r!==t)return null}return e.t+=r,!0}return!!n.optional||null},Vt=function(e){const{regs:t}=e,n=t[e.r],r=function(e){let t=0;return!0===e.regs[e.r].choices.every((n=>{const r=n.every(((t,n)=>{const r=e.t+n;return void 0!==e.terms[r]&&Dt(e.terms[r],t,r,e.phrase_length)}));return!0===r&&n.length>t&&(t=n.length),r}))&&t}(e);if(r){if(!0===n.negative)return null;if(!0===e.hasGroup){Et(e,e.t).length+=r}if(!0===n.end){const t=e.phrase_length-1;if(e.t+e.start_i!==t)return null}return e.t+=r,!0}return!!n.optional||null},zt=function(e){const{regs:t}=e,n=t[e.r],r=Object.assign({},n);r.negative=!1;if(Dt(e.terms[e.t],r,e.start_i+e.t,e.phrase_length))return!1;if(n.optional){const n=t[e.r+1];if(n){if(Dt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))e.r+=1;else if(n.optional&&t[e.r+2]){Dt(e.terms[e.t],t[e.r+2],e.start_i+e.t,e.phrase_length)&&(e.r+=2)}}}return n.greedy?function(e,t,n){let r=0;for(let o=e.t;o<e.terms.length;o+=1){let a=Dt(e.terms[o],t,e.start_i+e.t,e.phrase_length);if(a)break;if(n&&(a=Dt(e.terms[o],n,e.start_i+e.t,e.phrase_length),a))break;if(r+=1,void 0!==t.max&&r===t.max)break}return!(0===r||t.min&&t.min>r||(e.t+=r,0))}(e,r,t[e.r+1]):(e.t+=1,!0)},Bt=function(e){const{regs:t,phrase_length:n}=e,r=t[e.r];return e.t=function(e,t){const n=Object.assign({},e.regs[e.r],{start:!1,end:!1}),r=e.t;for(;e.t<e.terms.length;e.t+=1){if(t&&Dt(e.terms[e.t],t,e.start_i+e.t,e.phrase_length))return e.t;const o=e.t-r+1;if(void 0!==n.max&&o===n.max)return e.t;if(!1===Dt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))return void 0!==n.min&&o<n.min?null:e.t}return e.t}(e,t[e.r+1]),null===e.t||r.min&&r.min>e.t?null:!0!==r.end||e.start_i+e.t===n||null},St=function(e){const{regs:t}=e,n=t[e.r],r=e.terms[e.t],o=e.t;if(n.optional&&t[e.r+1]&&n.negative)return!0;if(n.optional&&t[e.r+1]&&function(e){const{regs:t}=e,n=t[e.r],r=e.terms[e.t],o=Dt(r,t[e.r+1],e.start_i+e.t,e.phrase_length);if(n.negative||o){const n=e.terms[e.t+1];n&&Dt(n,t[e.r+1],e.start_i+e.t,e.phrase_length)||(e.r+=1)}}(e),r.implicit&&e.terms[e.t+1]&&function(e){const t=e.terms[e.t],n=e.regs[e.r];if(t.implicit&&e.terms[e.t+1]){if(!e.terms[e.t+1].implicit)return;n.word===t.normal&&(e.t+=1),\"hasContraction\"===n.method&&(e.t+=1)}}(e),e.t+=1,!0===n.end&&e.t!==e.terms.length&&!0!==n.greedy)return null;if(!0===n.greedy){if(!Bt(e))return null}return!0===e.hasGroup&&function(e,t){const n=e.regs[e.r],r=Et(e,t);e.t>1&&n.greedy?r.length+=e.t-t:r.length++}(e,o),!0},$t=function(e,t,n,r){if(0===e.length||0===t.length)return null;const o={t:0,terms:e,r:0,regs:t,groups:{},start_i:n,phrase_length:r,inGroup:null};for(;o.r<t.length;o.r+=1){const e=t[o.r];if(o.hasGroup=Boolean(e.group),!0===o.hasGroup?o.inGroup=e.group:o.inGroup=null,!o.terms[o.t]){if(!1===t.slice(o.r).some((e=>!e.optional)))break;return null}if(!0===e.anything&&!0===e.greedy){if(!Gt(o))return null;continue}if(void 0!==e.choices&&\"or\"===e.operator){if(!Ft(o))return null;continue}if(void 0!==e.choices&&\"and\"===e.operator){if(!Vt(o))return null;continue}if(!0===e.anything){if(e.negative&&e.anything)return null;if(!St(o))return null;continue}if(!0===Ht(e,o)){if(!St(o))return null;continue}if(e.negative){if(!zt(o))return null;continue}if(!0!==Dt(o.terms[o.t],e,o.start_i+o.t,o.phrase_length)){if(!0!==e.optional)return null}else{if(!St(o))return null}}const a=[null,n,o.t+n];if(a[1]===a[2])return null;const i={};return Object.keys(o.groups).forEach((e=>{const t=o.groups[e],r=n+t.start;i[e]=[null,r,r+t.length]})),{pointer:a,groups:i}},Mt=function(e,t){return e.pointer[0]=t,Object.keys(e.groups).forEach((n=>{e.groups[n][0]=t})),e},Lt=function(e,t,n){let r=$t(e,t,0,e.length);return r?(r=Mt(r,n),r):null},Kt={one:{termMethods:Tt,parseMatch:function(e,t,n){if(null==e||\"\"===e)return[];t=t||{},\"number\"==typeof e&&(e=String(e));let r=function(e){const t=e.split(tt);let n=[];t.forEach((e=>{ot(e)?n.push(e):n=n.concat(e.split(nt))})),n=at(n);let r=[];return n.forEach((e=>{(e=>/^[![^]*(<[^<]*>)?\\(/.test(e)&&/\\)[?\\]+*$~]*$/.test(e))(e)||ot(e)?r.push(e):r=r.concat(e.split(rt))})),r=at(r),r}(e);return r=r.map((e=>pt(e,t))),r=function(e,t){const n=t.model.one.prefixes;for(let t=e.length-1;t>=0;t-=1){const r=e[t];if(r.word&&ft.test(r.word)){let o=r.word.split(/[-–—]/g);if(n.hasOwnProperty(o[0]))continue;o=o.filter((e=>e)).reverse(),e.splice(t,1),o.forEach((n=>{const o=Object.assign({},r);o.word=n,e.splice(t,0,o)}))}}return e}(r,n),r=function(e,t){return e.map((e=>{if(e.root)if(t.methods.two&&t.methods.two.transform){let n=[];e.pos?\"Verb\"===e.pos?n=n.concat(bt(e,t)):\"Noun\"===e.pos?n=n.concat(vt(e,t)):\"Adjective\"===e.pos&&(n=n.concat(yt(e,t))):(n=n.concat(bt(e,t)),n=n.concat(vt(e,t)),n=n.concat(yt(e,t))),n=n.filter((e=>e)),n.length>0&&(e.operator=\"or\",e.fastOr=new Set(n))}else e.machine=e.root,delete e.id,delete e.root;return e}))}(r,n),r=wt(r),r},match:function(e,t,n){n=n||[];const{regs:r,group:o,justOne:a}=t;let i=[];if(!r||0===r.length)return{ptrs:[],byGroup:{}};const s=r.filter((e=>!0!==e.optional&&!0!==e.negative)).length;e:for(let t=0;t<e.length;t+=1){const o=e[t];if(!n[t]||!Pt(r,n[t]))if(!0!==r[0].start)for(let e=0;e<o.length;e+=1){const n=o.slice(e);if(n.length<s)break;let l=$t(n,r,e,o.length);if(l){if(l=Mt(l,t),i.push(l),!0===a)break e;const n=l.pointer[2];Math.abs(n-1)>e&&(e=Math.abs(n-1))}}else{const e=Lt(o,r,t);e&&i.push(e)}}return!0===r[r.length-1].end&&(i=i.filter((t=>{const n=t.pointer[0];return e[n].length===t.pointer[2]}))),t.notIf&&(i=function(e,t,n){return e=e.filter((e=>{const[r,o,a]=e.pointer,i=n[r].slice(o,a);for(let e=0;e<i.length;e+=1){const n=i.slice(e);if(null!==$t(n,t,e,i.length))return!1}return!0})),e}(i,t.notIf,e)),i=function(e,t){const n=[],r={};return 0===e.length||(\"number\"==typeof t&&(t=String(t)),t?e.forEach((e=>{e.groups[t]&&n.push(e.groups[t])})):e.forEach((e=>{n.push(e.pointer),Object.keys(e.groups).forEach((t=>{r[t]=r[t]||[],r[t].push(e.groups[t])}))}))),{ptrs:n,byGroup:r}}(i,o),i.ptrs.forEach((t=>{const[n,r,o]=t;t[3]=e[n][r].id,t[4]=e[n][o-1].id})),i}}};var Jt={api:function(e){Object.assign(e.prototype,et)},methods:Kt,lib:{parseMatch:function(e,t){const n=this.world(),r=n.methods.one.killUnicode;return r&&(e=r(e,n)),n.methods.one.parseMatch(e,t,n)}}};const Wt=/^\\../,qt=/^#./,Ut=function(e,t){const n={},r={};return Object.keys(t).forEach((o=>{let a=t[o];const i=function(e){let t=\"\",n=\"</span>\";return e=e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&apos;\"),Wt.test(e)?t=`<span class=\"${e.replace(/^\\./,\"\")}\"`:qt.test(e)?t=`<span id=\"${e.replace(/^#/,\"\")}\"`:(t=`<${e}`,n=`</${e}>`),t+=\">\",{start:t,end:n}}(o);\"string\"==typeof a&&(a=e.match(a)),a.docs.forEach((e=>{if(e.every((e=>e.implicit)))return;const t=e[0].id;n[t]=n[t]||[],n[t].push(i.start);const o=e[e.length-1].id;r[o]=r[o]||[],r[o].push(i.end)}))})),{starts:n,ends:r}};var Rt={html:function(e){const{starts:t,ends:n}=Ut(this,e);let r=\"\";return this.docs.forEach((e=>{for(let o=0;o<e.length;o+=1){const a=e[o];t.hasOwnProperty(a.id)&&(r+=t[a.id].join(\"\")),r+=a.pre||\"\",r+=a.text||\"\",n.hasOwnProperty(a.id)&&(r+=n[a.id].join(\"\")),r+=a.post||\"\"}})),r}};const Qt=/[,:;)\\]*.?~!\\u0022\\uFF02\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4—-]+$/,Zt=/^[(['\"*~\\uFF02\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/,_t=/[,:;)('\"\\u201D\\]]/,Xt=/^[-–—]$/,Yt=/ /,en=function(e,t,n=!0){let r=\"\";return e.forEach((e=>{let n=e.pre||\"\",o=e.post||\"\";\"some\"===t.punctuation&&(n=n.replace(Zt,\"\"),Xt.test(o)&&(o=\" \"),o=o.replace(_t,\"\"),o=o.replace(/\\?!+/,\"?\"),o=o.replace(/!+/,\"!\"),o=o.replace(/\\?+/,\"?\"),o=o.replace(/\\.{2,}/,\"\"),e.tags.has(\"Abbreviation\")&&(o=o.replace(/\\./,\"\"))),\"some\"===t.whitespace&&(n=n.replace(/\\s/,\"\"),o=o.replace(/\\s+/,\" \")),t.keepPunct||(n=n.replace(Zt,\"\"),o=\"-\"===o?\" \":o.replace(Qt,\"\"));let a=e[t.form||\"text\"]||e.normal||\"\";\"implicit\"===t.form&&(a=e.implicit||e.text),\"root\"===t.form&&e.implicit&&(a=e.root||e.implicit||e.normal),\"machine\"!==t.form&&\"implicit\"!==t.form&&\"root\"!==t.form||!e.implicit||o&&Yt.test(o)||(o+=\" \"),r+=n+a+o})),!1===n&&(r=r.trim()),!0===t.lowerCase&&(r=r.toLowerCase()),r},tn={text:{form:\"text\"},normal:{whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"normal\"},machine:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"none\",unicode:\"some\",form:\"machine\"},root:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"root\"},implicit:{form:\"implicit\"}};tn.clean=tn.normal,tn.reduced=tn.root;const nn=[];let rn=0;for(;rn<64;)nn[rn]=0|4294967296*Math.sin(++rn%Math.PI);const on=function(e){let t,n,r,o=decodeURI(encodeURI(e))+\"\",a=o.length;const i=[t=1732584193,n=4023233417,~t,~n],s=[];for(e=--a/4+2|15,s[--e]=8*a;~a;)s[a>>2]|=o.charCodeAt(a)<<8*a--;for(rn=o=0;rn<e;rn+=16){for(a=i;o<64;a=[r=a[3],t+((r=a[0]+[t&n|~t&r,r&t|~r&n,t^n^r,n^(t|~r)][a=o>>4]+nn[o]+~~s[rn|15&[o,5*o+1,3*o+5,7*o][a]])<<(a=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*a+o++%4])|r>>>-a),t,n])t=0|a[1],n=a[2];for(o=4;o;)i[--o]+=a[o]}for(e=\"\";o<32;)e+=(i[o>>3]>>4*(1^o++)&15).toString(16);return e},an={text:!0,terms:!0},sn={case:\"none\",unicode:\"some\",form:\"machine\",punctuation:\"some\"},ln=function(e,t){return Object.assign({},e,t)},un={text:e=>en(e,{keepPunct:!0},!1),normal:e=>en(e,ln(tn.normal,{keepPunct:!0}),!1),implicit:e=>en(e,ln(tn.implicit,{keepPunct:!0}),!1),machine:e=>en(e,sn,!1),root:e=>en(e,ln(sn,{form:\"root\"}),!1),hash:e=>on(en(e,{keepPunct:!0},!1)),offset:e=>{const t=un.text(e).length;return{index:e[0].offset.index,start:e[0].offset.start,length:t}},terms:e=>e.map((e=>{const t=Object.assign({},e);return t.tags=Array.from(e.tags),t})),confidence:(e,t,n)=>t.eq(n).confidence(),syllables:(e,t,n)=>t.eq(n).syllables(),sentence:(e,t,n)=>t.eq(n).fullSentence().text(),dirty:e=>e.some((e=>!0===e.dirty))};un.sentences=un.sentence,un.clean=un.normal,un.reduced=un.root;const cn={json:function(e){const t=(n=this,\"string\"==typeof(r=(r=e)||{})&&(r={}),(r=Object.assign({},an,r)).offset&&n.compute(\"offset\"),n.docs.map(((e,t)=>{const o={};return Object.keys(r).forEach((a=>{r[a]&&un[a]&&(o[a]=un[a](e,n,t))})),o})));var n,r;return\"number\"==typeof e?t[e]:t}};cn.data=cn.json;const hn=function(e){const t=e.pre||\"\",n=e.post||\"\";return t+e.text+n},dn=function(e,t){const n=function(e,t){const n={};return Object.keys(t).forEach((r=>{e.match(r).fullPointer.forEach((e=>{n[e[3]]={fn:t[r],end:e[2]}}))})),n}(e,t);let r=\"\";return e.docs.forEach(((t,o)=>{for(let a=0;a<t.length;a+=1){const i=t[a];if(n.hasOwnProperty(i.id)){const{fn:s,end:l}=n[i.id],u=e.update([[o,a,l]]);r+=t[a].pre||\"\",r+=s(u),a=l-1,r+=t[a].post||\"\"}else r+=hn(i)}})),r},gn={debug:function(e){const t=this.methods.one.debug||{};return e&&t.hasOwnProperty(e)?(t[e](this),this):\"undefined\"!=typeof window&&window.document?(t.clientSide(this),this):(t.tags(this),this)},out:function(e){if(t=e,\"[object Object]\"===Object.prototype.toString.call(t))return dn(this,e);var t;if(\"text\"===e)return this.text();if(\"normal\"===e)return this.text(\"normal\");if(\"root\"===e)return this.text(\"root\");if(\"machine\"===e||\"reduced\"===e)return this.text(\"machine\");if(\"hash\"===e||\"md5\"===e)return on(this.text());if(\"json\"===e)return this.json();if(\"offset\"===e||\"offsets\"===e)return this.compute(\"offset\"),this.json({offset:!0});if(\"array\"===e){const e=this.docs.map((e=>e.reduce(((e,t)=>e+t.pre+t.text+t.post),\"\").trim()));return e.filter((e=>e))}if(\"freq\"===e||\"frequency\"===e||\"topk\"===e)return function(e){const t={};e.forEach((e=>{t[e]=t[e]||0,t[e]+=1}));const n=Object.keys(t).map((e=>({normal:e,count:t[e]})));return n.sort(((e,t)=>e.count>t.count?-1:0))}(this.json({normal:!0}).map((e=>e.normal)));if(\"terms\"===e){let e=[];return this.docs.forEach((t=>{let n=t.map((e=>e.text));n=n.filter((e=>e)),e=e.concat(n)})),e}return\"tags\"===e?this.docs.map((e=>e.reduce(((e,t)=>(e[t.implicit||t.normal]=Array.from(t.tags),e)),{}))):\"debug\"===e?this.debug():this.text()},wrap:function(e){return dn(this,e)}};var mn={text:function(e){let t={};var n;if(e&&\"string\"==typeof e&&tn.hasOwnProperty(e)?t=Object.assign({},tn[e]):e&&(n=e,\"[object Object]\"===Object.prototype.toString.call(n))&&(t=Object.assign({},e)),void 0!==t.keepSpace||this.isFull()||(t.keepSpace=!1),void 0===t.keepEndPunct&&this.pointer){const e=this.pointer[0];e&&e[1]?t.keepEndPunct=!1:t.keepEndPunct=!0}return void 0===t.keepPunct&&(t.keepPunct=!0),void 0===t.keepSpace&&(t.keepSpace=!0),function(e,t){let n=\"\";if(!e||!e[0]||!e[0][0])return n;for(let r=0;r<e.length;r+=1)n+=en(e[r],t,!0);if(t.keepSpace||(n=n.trim()),!1===t.keepEndPunct){e[0][0].tags.has(\"Emoticon\")||(n=n.replace(Zt,\"\"));const t=e[e.length-1];t[t.length-1].tags.has(\"Emoticon\")||(n=n.replace(Qt,\"\")),n.endsWith(\"'\")&&!n.endsWith(\"s'\")&&(n=n.replace(/'/,\"\"))}return!0===t.cleanWhitespace&&(n=n.trim()),n}(this.docs,t)}};const pn=Object.assign({},gn,mn,cn,Rt),fn=\"\u001b[0m\",bn={green:e=>\"\u001b[32m\"+e+fn,red:e=>\"\u001b[31m\"+e+fn,blue:e=>\"\u001b[34m\"+e+fn,magenta:e=>\"\u001b[35m\"+e+fn,cyan:e=>\"\u001b[36m\"+e+fn,yellow:e=>\"\u001b[33m\"+e+fn,black:e=>\"\u001b[30m\"+e+fn,dim:e=>\"\u001b[2m\"+e+fn,i:e=>\"\u001b[3m\"+e+fn},vn={tags:function(e){const{docs:t,model:n}=e;0===t.length&&console.log(bn.blue(\"\\n     ──────\")),t.forEach((t=>{console.log(bn.blue(\"\\n  ┌─────────\")),t.forEach((t=>{const r=[...t.tags||[]];let o=t.text||\"-\";t.sense&&(o=`{${t.normal}/${t.sense}}`),t.implicit&&(o=\"[\"+t.implicit+\"]\"),o=bn.yellow(o);let a=\"'\"+o+\"'\";if(t.reference){const n=e.update([t.reference]).text(\"normal\");a+=` - ${bn.dim(bn.i(\"[\"+n+\"]\"))}`}a=a.padEnd(18);const i=bn.blue(\"  │ \")+bn.i(a)+\"  - \"+function(e,t){return t.one.tagSet&&(e=e.map((e=>{if(!t.one.tagSet.hasOwnProperty(e))return e;const n=t.one.tagSet[e].color||\"blue\";return bn[n](e)}))),e.join(\", \")}(r,n);console.log(i)}))})),console.log(\"\\n\")},clientSide:function(e){console.log(\"%c -=-=- \",\"background-color:#6699cc;\"),e.forEach((e=>{console.groupCollapsed(e.text());const t=e.docs[0].map((e=>{let t=e.text||\"-\";e.implicit&&(t=\"[\"+e.implicit+\"]\");return{text:t,tags:\"[\"+Array.from(e.tags).join(\", \")+\"]\"}}));console.table(t,[\"text\",\"tags\"]),console.groupEnd()}))},chunks:function(e){const{docs:t}=e;console.log(\"\"),t.forEach((e=>{const t=[];e.forEach((e=>{\"Noun\"===e.chunk?t.push(bn.blue(e.implicit||e.normal)):\"Verb\"===e.chunk?t.push(bn.green(e.implicit||e.normal)):\"Adjective\"===e.chunk?t.push(bn.yellow(e.implicit||e.normal)):\"Pivot\"===e.chunk?t.push(bn.red(e.implicit||e.normal)):t.push(e.implicit||e.normal)})),console.log(t.join(\" \"),\"\\n\")})),console.log(\"\\n\")},highlight:function(e){if(!e.found)return;const t={};e.fullPointer.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),Object.keys(t).forEach((n=>{let r=e.update([[Number(n)]]).text();e.update(t[n]).json({offset:!0}).forEach(((e,t)=>{r=function(e,t,n){const r=((e,t,n)=>{const r=9*n,o=t.start+r,a=o+t.length;return[e.substring(0,o),e.substring(o,a),e.substring(a,e.length)]})(e,t,n);return`${r[0]}${bn.blue(r[1])}${r[2]}`}(r,e.offset,t)})),console.log(r)})),console.log(\"\\n\")}};var yn={api:function(e){Object.assign(e.prototype,pn)},methods:{one:{hash:on,debug:vn}}};const wn=function(e,t){if(e[0]!==t[0])return!1;const[,n,r]=e,[,o,a]=t;return n<=o&&r>o||o<=n&&a>n},kn=function(e){const t={};return e.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),t},Pn=function(e,t){const n=kn(t),r=[];return e.forEach((e=>{const[t]=e;let o=n[t]||[];if(o=o.filter((t=>function(e,t){return e[1]<=t[1]&&t[2]<=e[2]}(e,t))),0===o.length)return void r.push({passthrough:e});o=o.sort(((e,t)=>e[1]-t[1]));let a=e;o.forEach(((e,t)=>{const n=function(e,t){const[n,r]=e,o=t[1],a=t[2],i={};if(r<o){const t=o<e[2]?o:e[2];i.before=[n,r,t]}return i.match=t,e[2]>a&&(i.after=[n,a,e[2]]),i}(a,e);o[t+1]?(r.push({before:n.before,match:n.match}),n.after&&(a=n.after)):r.push(n)}))})),r};var An={one:{termList:function(e){const t=[];for(let n=0;n<e.length;n+=1)for(let r=0;r<e[n].length;r+=1)t.push(e[n][r]);return t},getDoc:function(e,t){let n=[];return e.forEach(((r,o)=>{if(!r)return;let[a,i,s,l,u]=r,c=t[a]||[];if(void 0===i&&(i=0),void 0===s&&(s=c.length),!l||c[i]&&c[i].id===l)c=c.slice(i,s);else{const n=function(e,t,n){for(let r=0;r<20;r+=1){if(t[n-r]){const o=t[n-r].findIndex((t=>t.id===e));if(-1!==o)return[n-r,o]}if(t[n+r]){const o=t[n+r].findIndex((t=>t.id===e));if(-1!==o)return[n+r,o]}}return null}(l,t,a);if(null!==n){const r=s-i;c=t[n[0]].slice(n[1],n[1]+r);const a=c[0]?c[0].id:null;e[o]=[n[0],n[1],n[1]+r,a]}}0!==c.length&&i!==s&&(u&&c[c.length-1].id!==u&&(c=function(e,t){const[n,r,,,o]=e,a=t[n],i=a.findIndex((e=>e.id===o));return-1===i?(e[2]=t[n].length,e[4]=a.length?a[a.length-1].id:null):e[2]=i,t[n].slice(r,e[2]+1)}(r,t)),n.push(c))})),n=n.filter((e=>e.length>0)),n},pointer:{indexN:kn,splitAll:Pn}}};const Cn=function(e,t){const n=e.concat(t),r=kn(n);let o=[];return n.forEach((e=>{const[t]=e;if(1===r[t].length)return void o.push(e);const n=r[t].filter((t=>wn(e,t)));n.push(e);const a=function(e){let t=e[0][1],n=e[0][2];return e.forEach((e=>{e[1]<t&&(t=e[1]),e[2]>n&&(n=e[2])})),[e[0][0],t,n]}(n);o.push(a)})),o=function(e){const t={};for(let n=0;n<e.length;n+=1)t[e[n].join(\",\")]=e[n];return Object.values(t)}(o),o},Nn=function(e,t){const n=[];return Pn(e,t).forEach((e=>{e.passthrough&&n.push(e.passthrough),e.before&&n.push(e.before),e.after&&n.push(e.after)})),n},jn=(e,t)=>{return\"string\"==typeof e||(n=e,\"[object Array]\"===Object.prototype.toString.call(n))?t.match(e):e||t.none();var n},xn=function(e,t){return e.map((e=>{const[n,r]=e;return t[n]&&t[n][r]&&(e[3]=t[n][r].id),e}))},In={union:function(e){e=jn(e,this);let t=Cn(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)}};In.and=In.union,In.intersection=function(e){e=jn(e,this);let t=function(e,t){const n=kn(t),r=[];return e.forEach((e=>{let t=n[e[0]]||[];t=t.filter((t=>wn(e,t))),0!==t.length&&t.forEach((t=>{const n=function(e,t){const n=e[1]<t[1]?t[1]:e[1],r=e[2]>t[2]?t[2]:e[2];return n<r?[e[0],n,r]:null}(e,t);n&&r.push(n)}))})),r}(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)},In.not=function(e){e=jn(e,this);let t=Nn(this.fullPointer,e.fullPointer);return t=xn(t,this.document),this.toView(t)},In.difference=In.not,In.complement=function(){const e=this.all();let t=Nn(e.fullPointer,this.fullPointer);return t=xn(t,this.document),this.toView(t)},In.settle=function(){let e=this.fullPointer;return e.forEach((t=>{e=Cn(e,[t])})),e=xn(e,this.document),this.update(e)};var Tn={methods:An,api:function(e){Object.assign(e.prototype,In)}};const Dn=function(e){return!0===e.optional||!0===e.negative?null:e.tag?\"#\"+e.tag:e.word?e.word:e.switch?`%${e.switch}%`:null},Hn=function(e,t){const n=t.methods.one.parseMatch;return e.forEach((e=>{e.regs=n(e.match,{},t),\"string\"==typeof e.ifNo&&(e.ifNo=[e.ifNo]),e.notIf&&(e.notIf=n(e.notIf,{},t)),e.needs=function(e){const t=[];return e.forEach((e=>{t.push(Dn(e)),\"and\"===e.operator&&e.choices&&e.choices.forEach((e=>{e.forEach((e=>{t.push(Dn(e))}))}))})),t.filter((e=>e))}(e.regs);const{wants:r,count:o}=function(e){const t=[];let n=0;return e.forEach((e=>{\"or\"!==e.operator||e.optional||e.negative||(e.fastOr&&Array.from(e.fastOr).forEach((e=>{t.push(e)})),e.choices&&e.choices.forEach((e=>{e.forEach((e=>{const n=Dn(e);n&&t.push(n)}))})),n+=1)})),{wants:t,count:n}}(e.regs);e.wants=r,e.minWant=o,e.minWords=e.regs.filter((e=>!e.optional)).length})),e};var En={buildNet:function(e,t){e=Hn(e,t);const n={};e.forEach((e=>{e.needs.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)})),e.wants.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)}))})),Object.keys(n).forEach((e=>{const t={};n[e]=n[e].filter((e=>\"boolean\"!=typeof t[e.match]&&(t[e.match]=!0,!0)))}));const r=e.filter((e=>0===e.needs.length&&0===e.wants.length));return{hooks:n,always:r}},bulkMatch:function(e,t,n,r={}){const o=n.one.cacheDoc(e);let a=function(e,t){return e.map(((n,r)=>{let o=[];Object.keys(t).forEach((n=>{e[r].has(n)&&(o=o.concat(t[n]))}));const a={};return o=o.filter((e=>\"boolean\"!=typeof a[e.match]&&(a[e.match]=!0,!0))),o}))}(o,t.hooks);a=function(e,t){return e.map(((e,n)=>{const r=t[n];return(e=(e=e.filter((e=>e.needs.every((e=>r.has(e)))))).filter((e=>void 0===e.ifNo||!0!==e.ifNo.some((e=>r.has(e)))))).filter((e=>0===e.wants.length||e.wants.filter((e=>r.has(e))).length>=e.minWant))}))}(a,o),t.always.length>0&&(a=a.map((e=>e.concat(t.always)))),a=function(e,t){return e.map(((e,n)=>{const r=t[n].length;return e=e.filter((e=>r>=e.minWords)),e}))}(a,e);const i=function(e,t,n,r,o){const a=[];for(let n=0;n<e.length;n+=1)for(let i=0;i<e[n].length;i+=1){const s=e[n][i],l=r.one.match([t[n]],s);if(l.ptrs.length>0&&(l.ptrs.forEach((e=>{e[0]=n;const t=Object.assign({},s,{pointer:e});void 0!==s.unTag&&(t.unTag=s.unTag),a.push(t)})),!0===o.matchOne))return[a[0]]}return a}(a,e,0,n,r);return i},bulkTagger:function(e,t,n){const{model:r,methods:o}=n,{getDoc:a,setTag:i,unTag:s}=o.one,l=o.two.looksPlural;if(0===e.length)return e;return(\"undefined\"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_TAGS&&console.log(`\\n\\n  \u001b[32m→ ${e.length} post-tagger:\u001b[0m`),e.map((e=>{if(!e.tag&&!e.chunk&&!e.unTag)return;const o=e.reason||e.match,u=a([e.pointer],t)[0];if(!0===e.safe){if(!1===function(e,t,n){const r=n.one.tagSet;if(!r.hasOwnProperty(t))return!0;const o=r[t].not||[];for(let t=0;t<e.length;t+=1){const n=e[t];for(let e=0;e<o.length;e+=1)if(!0===n.tags.has(o[e]))return!1}return!0}(u,e.tag,r))return;if(\"-\"===u[u.length-1].post)return}if(void 0!==e.tag){if(i(u,e.tag,n,e.safe,`[post] '${o}'`),\"Noun\"===e.tag&&l){const t=u[u.length-1];l(t.text)?i([t],\"Plural\",n,e.safe,\"quick-plural\"):i([t],\"Singular\",n,e.safe,\"quick-singular\")}!0===e.freeze&&u.forEach((e=>e.frozen=!0))}void 0!==e.unTag&&s(u,e.unTag,n,e.safe,o),e.chunk&&u.forEach((t=>t.chunk=e.chunk))}))}},Gn={lib:{buildNet:function(e){const t=this.methods().one.buildNet(e,this.world());return t.isNet=!0,t}},api:function(e){e.prototype.sweep=function(e,t={}){const{world:n,docs:r}=this,{methods:o}=n;let a=o.one.bulkMatch(r,e,this.methods,t);!1!==t.tagger&&o.one.bulkTagger(a,r,this.world),a=a.map((e=>{const t=e.pointer,n=r[t[0]][t[1]],o=t[2]-t[1];return n.index&&(e.pointer=[n.index[0],n.index[1],t[1]+o]),e}));const i=a.map((e=>e.pointer));return a=a.map((e=>(e.view=this.update([e.pointer]),delete e.regs,delete e.needs,delete e.pointer,delete e._expanded,e))),{view:this.update(i),found:a}}},methods:{one:En}};const On=/ /,Fn=function(e,t){\"Noun\"===t&&(e.chunk=t),\"Verb\"===t&&(e.chunk=t)},Vn=function(e,t,n,r){if(!0===e.tags.has(t))return null;if(\".\"===t)return null;!0===e.frozen&&(r=!0);const o=n[t];if(o){if(o.not&&o.not.length>0)for(let t=0;t<o.not.length;t+=1){if(!0===r&&e.tags.has(o.not[t]))return null;e.tags.delete(o.not[t])}if(o.parents&&o.parents.length>0)for(let t=0;t<o.parents.length;t+=1)e.tags.add(o.parents[t]),Fn(e,o.parents[t])}return e.tags.add(t),e.dirty=!0,Fn(e,t),!0},zn=function(e,t,n={},r,o){const a=n.model.one.tagSet||{};if(!t)return;const i=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};var s;if(i&&i.DEBUG_TAGS&&((e,t,n=\"\")=>{const r=e.map((e=>e.text||\"[\"+e.implicit+\"]\")).join(\" \");var o;\"string\"!=typeof t&&t.length>2&&(t=t.slice(0,2).join(\", #\")+\" +\"),t=\"string\"!=typeof t?t.join(\", #\"):t,console.log(` ${(o=r,\"\u001b[33m\u001b[3m\"+o+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${t.padEnd(22)}  ${(e=>\"\u001b[3m\"+e+\"\u001b[0m\")(n)}`)})(e,t,o),!0!=(s=t,\"[object Array]\"===Object.prototype.toString.call(s)))if(\"string\"==typeof t)if(t=t.trim(),On.test(t))!function(e,t,n,r){const o=t.split(On);e.forEach(((e,t)=>{let a=o[t];a&&(a=a.replace(/^#/,\"\"),Vn(e,a,n,r))}))}(e,t,a,r);else{t=t.replace(/^#/,\"\");for(let n=0;n<e.length;n+=1)Vn(e[n],t,a,r)}else console.warn(`compromise: Invalid tag '${t}'`);else t.forEach((t=>zn(e,t,n,r)))},Bn=function(e){return e.children=e.children||[],e._cache=e._cache||{},e.props=e.props||{},e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],e},Sn=/^ *(#|\\/\\/)/,$n=function(e){let t=e.trim().split(/->/),n=[];t.forEach((e=>{n=n.concat(function(e){if(!(e=e.trim()))return null;if(/^\\[/.test(e)&&/\\]$/.test(e)){let t=(e=(e=e.replace(/^\\[/,\"\")).replace(/\\]$/,\"\")).split(/,/);return t=t.map((e=>e.trim())).filter((e=>e)),t=t.map((e=>Bn({id:e}))),t}return[Bn({id:e})]}(e))})),n=n.filter((e=>e));let r=n[0];for(let e=1;e<n.length;e+=1)r.children.push(n[e]),r=n[e];return n[0]},Mn=(e,t)=>{let n=[],r=[e];for(;r.length>0;){let e=r.pop();n.push(e),e.children&&e.children.forEach((n=>{t&&t(e,n),r.push(n)}))}return n},Ln=e=>\"[object Array]\"===Object.prototype.toString.call(e),Kn=e=>(e=e||\"\").trim(),Jn=function(e=[]){return\"string\"==typeof e?function(e){let t=e.split(/\\r?\\n/),n=[];t.forEach((e=>{if(!e.trim()||Sn.test(e))return;let t=(e=>{const t=/^( {2}|\\t)/;let n=0;for(;t.test(e);)e=e.replace(t,\"\"),n+=1;return n})(e);n.push({indent:t,node:$n(e)})}));let r=function(e){let t={children:[]};return e.forEach(((n,r)=>{0===n.indent?t.children=t.children.concat(n.node):e[r-1]&&function(e,t){let n=e[t].indent;for(;t>=0;t-=1)if(e[t].indent<n)return e[t];return e[0]}(e,r).node.children.push(n.node)})),t}(n);return r=Bn(r),r}(e):Ln(e)?function(e){let t={};e.forEach((e=>{t[e.id]=e}));let n=Bn({});return e.forEach((e=>{if((e=Bn(e)).parent)if(t.hasOwnProperty(e.parent)){let n=t[e.parent];delete e.parent,n.children.push(e)}else console.warn(`[Grad] - missing node '${e.parent}'`);else n.children.push(e)})),n}(e):(Mn(t=e).forEach(Bn),t);var t},Wn=function(e,t){let n=\"-> \";t&&(n=(e=>\"\u001b[2m\"+e+\"\u001b[0m\")(\"→ \"));let r=\"\";return Mn(e).forEach(((e,o)=>{let a=e.id||\"\";if(t&&(a=(e=>\"\u001b[31m\"+e+\"\u001b[0m\")(a)),0===o&&!e.id)return;let i=e._cache.parents.length;r+=\"    \".repeat(i)+n+a+\"\\n\"})),r},qn=function(e){let t=Mn(e);t.forEach((e=>{delete(e=Object.assign({},e)).children}));let n=t[0];return n&&!n.id&&0===Object.keys(n.props).length&&t.shift(),t},Un={text:Wn,txt:Wn,array:qn,flat:qn},Rn=function(e,t){return\"nested\"===t||\"json\"===t?e:\"debug\"===t?(console.log(Wn(e,!0)),null):Un.hasOwnProperty(t)?Un[t](e):e},Qn=e=>{Mn(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],t._cache.parents=e._cache.parents.concat([e.id]))}))},Zn=/\\//;let _n=class g{constructor(e={}){Object.defineProperty(this,\"json\",{enumerable:!1,value:e,writable:!0})}get children(){return this.json.children}get id(){return this.json.id}get found(){return this.json.id||this.json.children.length>0}props(e={}){let t=this.json.props||{};return\"string\"==typeof e&&(t[e]=!0),this.json.props=Object.assign(t,e),this}get(e){if(e=Kn(e),!Zn.test(e)){let t=this.json.children.find((t=>t.id===e));return new g(t)}let t=((e,t)=>{let n=(e=>\"string\"!=typeof e?e:(e=e.replace(/^\\//,\"\")).split(/\\//))(t=t||\"\");for(let t=0;t<n.length;t+=1){let r=e.children.find((e=>e.id===n[t]));if(!r)return null;e=r}return e})(this.json,e)||Bn({});return new g(t)}add(e,t={}){if(Ln(e))return e.forEach((e=>this.add(Kn(e),t))),this;e=Kn(e);let n=Bn({id:e,props:t});return this.json.children.push(n),new g(n)}remove(e){return e=Kn(e),this.json.children=this.json.children.filter((t=>t.id!==e)),this}nodes(){return Mn(this.json).map((e=>(delete(e=Object.assign({},e)).children,e)))}cache(){return(e=>{let t=Mn(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],t._cache.parents=e._cache.parents.concat([e.id]))})),n={};t.forEach((e=>{e.id&&(n[e.id]=e)})),t.forEach((e=>{e._cache.parents.forEach((t=>{n.hasOwnProperty(t)&&n[t]._cache.children.push(e.id)}))})),e._cache.children=Object.keys(n)})(this.json),this}list(){return Mn(this.json)}fillDown(){var e;return e=this.json,Mn(e,((e,t)=>{t.props=((e,t)=>(Object.keys(t).forEach((n=>{if(t[n]instanceof Set){let r=e[n]||new Set;e[n]=new Set([...r,...t[n]])}else if((e=>e&&\"object\"==typeof e&&!Array.isArray(e))(t[n])){let r=e[n]||{};e[n]=Object.assign({},t[n],r)}else Ln(t[n])?e[n]=t[n].concat(e[n]||[]):void 0===e[n]&&(e[n]=t[n])})),e))(t.props,e.props)})),this}depth(){Qn(this.json);let e=Mn(this.json),t=e.length>1?1:0;return e.forEach((e=>{if(0===e._cache.parents.length)return;let n=e._cache.parents.length+1;n>t&&(t=n)})),t}out(e){return Qn(this.json),Rn(this.json,e)}debug(){return Qn(this.json),Rn(this.json,\"debug\"),this}};const Xn=function(e){let t=Jn(e);return new _n(t)};Xn.prototype.plugin=function(e){e(this)};const Yn={Noun:\"blue\",Verb:\"green\",Negative:\"green\",Date:\"red\",Value:\"red\",Adjective:\"magenta\",Preposition:\"cyan\",Conjunction:\"cyan\",Determiner:\"cyan\",Hyphenated:\"cyan\",Adverb:\"cyan\"},er=function(e){if(Yn.hasOwnProperty(e.id))return Yn[e.id];if(Yn.hasOwnProperty(e.is))return Yn[e.is];const t=e._cache.parents.find((e=>Yn[e]));return Yn[t]},tr=function(e){return e?\"string\"==typeof e?[e]:e:[]},nr=function(e,t){return e=function(e,t){return Object.keys(e).forEach((n=>{e[n].isA&&(e[n].is=e[n].isA),e[n].notA&&(e[n].not=e[n].notA),e[n].is&&\"string\"==typeof e[n].is&&(t.hasOwnProperty(e[n].is)||e.hasOwnProperty(e[n].is)||(e[e[n].is]={})),e[n].not&&\"string\"==typeof e[n].not&&!e.hasOwnProperty(e[n].not)&&(t.hasOwnProperty(e[n].not)||e.hasOwnProperty(e[n].not)||(e[e[n].not]={}))})),e}(e,t),Object.keys(e).forEach((t=>{e[t].children=tr(e[t].children),e[t].not=tr(e[t].not)})),Object.keys(e).forEach((t=>{(e[t].not||[]).forEach((n=>{e[n]&&e[n].not&&e[n].not.push(t)}))})),e};var rr={one:{setTag:zn,unTag:function(e,t,n){t=t.trim().replace(/^#/,\"\");for(let r=0;r<e.length;r+=1){const o=e[r];if(!0===o.frozen)continue;if(\"*\"===t){o.tags.clear();continue}const a=n[t];if(a&&a.children.length>0)for(let e=0;e<a.children.length;e+=1)o.tags.delete(a.children[e]);o.tags.delete(t)}},addTags:function(e,t){Object.keys(t).length>0&&(e=function(e){return Object.keys(e).forEach((t=>{e[t]=Object.assign({},e[t]),e[t].novel=!0})),e}(e)),e=nr(e,t);const n=function(e){const t=Object.keys(e).map((t=>{const n=e[t],r={not:new Set(n.not),also:n.also,is:n.is,novel:n.novel};return{id:t,parent:n.is,props:r,children:[]}}));return Xn(t).cache().fillDown().out(\"array\")}(Object.assign({},t,e)),r=function(e){const t={};return e.forEach((e=>{const{not:n,also:r,is:o,novel:a}=e.props;let i=e._cache.parents;r&&(i=i.concat(r)),t[e.id]={is:o,not:n,novel:a,also:r,parents:i,children:e._cache.children,color:er(e)}})),Object.keys(t).forEach((e=>{const n=new Set(t[e].not);t[e].not.forEach((e=>{t[e]&&t[e].children.forEach((e=>n.add(e)))})),t[e].not=Array.from(n)})),t}(n);return r},canBe:function(e,t,n){if(!n.hasOwnProperty(t))return!0;const r=n[t].not||[];for(let t=0;t<r.length;t+=1)if(e.tags.has(r[t]))return!1;return!0}}};const or=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},ar={tag:function(e,t=\"\",n){if(!this.found||!e)return this;const r=this.termList();if(0===r.length)return this;const{methods:o,verbose:a,world:i}=this;return!0===a&&console.log(\" +  \",e,t||\"\"),or(e)?e.forEach((e=>o.one.setTag(r,e,i,n,t))):o.one.setTag(r,e,i,n,t),this.uncache(),this},tagSafe:function(e,t=\"\"){return this.tag(e,t,!0)},unTag:function(e,t){if(!this.found||!e)return this;const n=this.termList();if(0===n.length)return this;const{methods:r,verbose:o,model:a}=this;!0===o&&console.log(\" -  \",e,t||\"\");const i=a.one.tagSet;return or(e)?e.forEach((e=>r.one.unTag(n,e,i))):r.one.unTag(n,e,i),this.uncache(),this},canBe:function(e){e=e.replace(/^#/,\"\");const t=this.model.one.tagSet,n=this.methods.one.canBe,r=[];this.document.forEach(((o,a)=>{o.forEach(((o,i)=>{n(o,e,t)||r.push([a,i,i+1])}))}));const o=this.update(r);return this.difference(o)}};var ir={addTags:function(e){const{model:t,methods:n}=this.world(),r=t.one.tagSet,o=(0,n.one.addTags)(e,r);return t.one.tagSet=o,this}};const sr=new Set([\"Auxiliary\",\"Possessive\"]);var lr={model:{one:{tagSet:{}}},compute:{tagRank:function(e){const{document:t,world:n}=e,r=n.model.one.tagSet;t.forEach((e=>{e.forEach((e=>{const t=Array.from(e.tags);e.tagRank=function(e,t){return e=e.sort(((e,n)=>{if(sr.has(e)||!t.hasOwnProperty(n))return 1;if(sr.has(n)||!t.hasOwnProperty(e))return-1;let r=t[e].children||[];const o=r.length;return r=t[n].children||[],o-r.length})),e}(t,r)}))}))}},methods:rr,api:function(e){Object.assign(e.prototype,ar)},lib:ir};const ur=/([.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s)/g,cr=/^[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s$/,hr=/((?:\\r?\\n|\\r)+)/,dr=/[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i,gr=/\\S/,mr=function(e){return Boolean(e.match(/\\n$/))},pr={'\"':'\"',\"＂\":\"＂\",\"“\":\"”\",\"‟\":\"”\",\"„\":\"”\",\"⹂\":\"”\",\"‚\":\"’\",\"«\":\"»\",\"‹\":\"›\",\"‵\":\"′\",\"‶\":\"″\",\"‷\":\"‴\",\"〝\":\"〞\",\"〟\":\"〞\"},fr=RegExp(\"[\"+Object.keys(pr).join(\"\")+\"]\",\"g\"),br=RegExp(\"[\"+Object.values(pr).join(\"\")+\"]\",\"g\"),vr=function(e){if(!e)return!1;const t=e.match(br);return null!==t&&1===t.length},yr=/\\(/g,wr=/\\)/g,kr=/\\S/,Pr=/^\\s+/,Ar=function(e,t){const n=e.split(/[-–—]/);if(n.length<=1)return!1;const{prefixes:r,suffixes:o}=t.one;if(1===n[0].length&&/[a-z]/i.test(n[0]))return!1;if(r.hasOwnProperty(n[0]))return!1;if(n[1]=n[1].trim().replace(/[.?!]$/,\"\"),o.hasOwnProperty(n[1]))return!1;if(!0===/^([a-z\\u00C0-\\u00FF`\"'/]+)[-–—]([a-z0-9\\u00C0-\\u00FF].*)/i.test(e))return!0;return!0===/^[('\"]?([0-9]{1,4})[-–—]([a-z\\u00C0-\\u00FF`\"'/-]+[)'\"]?$)/i.test(e)},Cr=function(e){const t=[],n=e.split(/[-–—]/);let r=\"-\";const o=e.match(/[-–—]/);o&&o[0]&&(r=o);for(let e=0;e<n.length;e++)e===n.length-1?t.push(n[e]):t.push(n[e]+r);return t},Nr=/\\p{L} ?\\/ ?\\p{L}+$/u,jr=/\\S/,xr=/^[!?.]+$/,Ir=/(\\S+)/;let Tr=[\".\",\"?\",\"!\",\":\",\";\",\"-\",\"–\",\"—\",\"--\",\"...\",\"(\",\")\",\"[\",\"]\",'\"',\"'\",\"`\",\"«\",\"»\",\"*\",\"•\"];Tr=Tr.reduce(((e,t)=>(e[t]=!0,e)),{});const Dr=/\\p{Letter}/u,Hr=/[\\p{Number}\\p{Currency_Symbol}]/u,Er=/^[a-z]\\.([a-z]\\.)+/i,Gr=/[sn]['’]$/,Or=/([A-Z]\\.)+[A-Z]?,?$/,Fr=/^[A-Z]\\.,?$/,Vr=/[A-Z]{2,}('s|,)?$/,zr=/([a-z]\\.)+[a-z]\\.?$/,Br=function(e){return function(e){return!0===Or.test(e)||!0===zr.test(e)||!0===Fr.test(e)||!0===Vr.test(e)}(e)&&(e=e.replace(/\\./g,\"\")),e},Sr=function(e,t){const n=t.methods.one.killUnicode;let r=e.text||\"\";r=function(e){const t=e=(e=(e=e||\"\").toLowerCase()).trim();return e=(e=(e=e.replace(/[,;.!?]+$/,\"\")).replace(/\\u2026/g,\"...\")).replace(/\\u2013/g,\"-\"),!1===/^[:;]/.test(e)&&(e=(e=(e=e.replace(/\\.{3,}$/g,\"\")).replace(/[\",.!:;?)]+$/g,\"\")).replace(/^['\"(]+/g,\"\")),\"\"===(e=(e=e.replace(/[\\u200B-\\u200D\\uFEFF]/g,\"\")).trim())&&(e=t),e.replace(/([0-9]),([0-9])/g,\"$1$2\")}(r),r=n(r,t),r=Br(r),e.normal=r},$r=/[ .][A-Z]\\.? *$/i,Mr=/(?:\\u2026|\\.{2,}) *$/,Lr=/\\p{L}/u,Kr=/\\. *$/,Jr=/^[A-Z]\\. $/;var Wr={one:{killUnicode:function(e,t){const n=t.model.one.unicode||{},r=(e=e||\"\").split(\"\");return r.forEach(((e,t)=>{n[e]&&(r[t]=n[e])})),r.join(\"\")},tokenize:{splitSentences:function(e,t){if(e=e||\"\",!(e=String(e))||\"string\"!=typeof e||!1===kr.test(e))return[];const n=function(e){const t=[],n=e.split(hr);for(let e=0;e<n.length;e++){const r=n[e].split(ur);for(let e=0;e<r.length;e++)r[e+1]&&!0===cr.test(r[e+1])&&(r[e]+=r[e+1],r[e+1]=\"\"),\"\"!==r[e]&&t.push(r[e])}return t}(e=e.replace(\" \",\" \"));let r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(void 0!==r&&\"\"!==r){if(!1===gr.test(r)||!1===dr.test(r)){if(t[t.length-1]){t[t.length-1]+=r;continue}if(e[n+1]){e[n+1]=r+e[n+1];continue}}t.push(r)}}return t}(n);if(r=function(e,t){const n=t.methods.one.tokenize.isSentence,r=t.model.one.abbreviations||new Set,o=[];for(let t=0;t<e.length;t++){const a=e[t];!e[t+1]||n(a,r)||mr(a)?a&&a.length>0&&(o.push(a),e[t]=\"\"):e[t+1]=a+(e[t+1]||\"\")}return o}(r,t),r=function(e){const t=[];for(let n=0;n<e.length;n+=1){const r=e[n].match(fr);if(null!==r&&1===r.length){if(vr(e[n+1])&&e[n+1].length<280){e[n]+=e[n+1],t.push(e[n]),e[n+1]=\"\",n+=1;continue}if(vr(e[n+2])){const r=e[n+1]+e[n+2];if(r.length<280){e[n]+=r,t.push(e[n]),e[n+1]=\"\",e[n+2]=\"\",n+=2;continue}}}t.push(e[n])}return t}(r),r=function(e){const t=[];for(let n=0;n<e.length;n+=1){const r=e[n].match(yr);null!==r&&1===r.length&&e[n+1]&&e[n+1].length<250&&null!==e[n+1].match(wr)&&1===r.length&&!yr.test(e[n+1])?(e[n]+=e[n+1],t.push(e[n]),e[n+1]=\"\",n+=1):t.push(e[n])}return t}(r),0===r.length)return[e];for(let e=1;e<r.length;e+=1){const t=r[e].match(Pr);null!==t&&(r[e-1]+=t[0],r[e]=r[e].replace(Pr,\"\"))}return r},isSentence:function(e,t){if(!1===Lr.test(e))return!1;if(!0===$r.test(e))return!1;if(3===e.length&&Jr.test(e))return!1;if(!0===Mr.test(e))return!1;const n=e.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/,\"\").split(\" \"),r=n[n.length-1].toLowerCase();return!0!==t.hasOwnProperty(r)||!0!==Kr.test(e)},splitTerms:function(e,t){let n=[],r=[];if(\"number\"==typeof(e=e||\"\")&&(e=String(e)),function(e){return\"[object Array]\"===Object.prototype.toString.call(e)}(e))return e;const o=e.split(Ir);for(let e=0;e<o.length;e++)!0!==Ar(o[e],t)?r.push(o[e]):r=r.concat(Cr(o[e]));let a=\"\";for(let e=0;e<r.length;e++){const t=r[e];!0===jr.test(t)&&!1===Tr.hasOwnProperty(t)&&!1===xr.test(t)?(n.length>0?(n[n.length-1]+=a,n.push(t)):n.push(a+t),a=\"\"):a+=t}return a&&(0===n.length&&(n[0]=\"\"),n[n.length-1]+=a),n=function(e){for(let t=1;t<e.length-1;t++)Nr.test(e[t])&&(e[t-1]+=e[t]+e[t+1],e[t]=null,e[t+1]=null);return e}(n),n=function(e){const t=/^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?[-–—] ?$/,n=/^[0-9]{1,4}([a-z]{1,2})? ?$/;for(let r=0;r<e.length-1;r+=1)e[r+1]&&t.test(e[r])&&n.test(e[r+1])&&(e[r]=e[r]+e[r+1],e[r+1]=null);return e}(n),n=n.filter((e=>e)),n},splitWhitespace:(e,t)=>{const{str:n,pre:r,post:o}=function(e,t){const{prePunctuation:n,postPunctuation:r,emoticons:o}=t.one;let a=e,i=\"\",s=\"\";const l=Array.from(e);if(o.hasOwnProperty(e.trim()))return{str:e.trim(),pre:i,post:\" \"};let u=l.length;for(let e=0;e<u;e+=1){const e=l[0];if(!0!==n[e]){if((\"+\"===e||\"-\"===e)&&Hr.test(l[1]))break;if(\"'\"===e&&3===e.length&&Hr.test(l[1]))break;if(Dr.test(e)||Hr.test(e))break;i+=l.shift()}}u=l.length;for(let e=0;e<u;e+=1){const e=l[l.length-1];if(!0!==r[e]){if(Dr.test(e)||Hr.test(e))break;\".\"===e&&!0===Er.test(a)||\"'\"===e&&!0===Gr.test(a)||(s=l.pop()+s)}}return\"\"===(e=l.join(\"\"))&&(a=a.replace(/ *$/,(e=>(s=e||\"\",\"\"))),e=a,i=\"\"),{str:e,pre:i,post:s}}(e,t);return{text:n,pre:r,post:o,tags:new Set}},fromString:function(e,t){const{methods:n,model:r}=t,{splitSentences:o,splitTerms:a,splitWhitespace:i}=n.one.tokenize;return e=o(e=e||\"\",t).map((e=>{let n=a(e,r);return n=n.map((e=>i(e,r))),n.forEach((e=>{Sr(e,t)})),n})),e}}}};const qr={},Ur={};[[[\"approx\",\"apt\",\"bc\",\"cyn\",\"eg\",\"esp\",\"est\",\"etc\",\"ex\",\"exp\",\"prob\",\"pron\",\"gal\",\"min\",\"pseud\",\"fig\",\"jd\",\"lat\",\"lng\",\"vol\",\"fm\",\"def\",\"misc\",\"plz\",\"ea\",\"ps\",\"sec\",\"pt\",\"pref\",\"pl\",\"pp\",\"qt\",\"fr\",\"sq\",\"nee\",\"ss\",\"tel\",\"temp\",\"vet\",\"ver\",\"fem\",\"masc\",\"eng\",\"adj\",\"vb\",\"rb\",\"inf\",\"situ\",\"vivo\",\"vitro\",\"wr\"]],[[\"dl\",\"ml\",\"gal\",\"qt\",\"pt\",\"tbl\",\"tsp\",\"tbsp\",\"km\",\"dm\",\"cm\",\"mm\",\"mi\",\"td\",\"hr\",\"hrs\",\"kg\",\"hg\",\"dg\",\"cg\",\"mg\",\"µg\",\"lb\",\"oz\",\"sq ft\",\"hz\",\"mps\",\"mph\",\"kmph\",\"kb\",\"mb\",\"tb\",\"lx\",\"lm\",\"fl oz\",\"yb\"],\"Unit\"],[[\"ad\",\"al\",\"arc\",\"ba\",\"bl\",\"ca\",\"cca\",\"col\",\"corp\",\"ft\",\"fy\",\"ie\",\"lit\",\"ma\",\"md\",\"pd\",\"tce\"],\"Noun\"],[[\"adj\",\"adm\",\"adv\",\"asst\",\"atty\",\"bldg\",\"brig\",\"capt\",\"cmdr\",\"comdr\",\"cpl\",\"det\",\"dr\",\"esq\",\"gen\",\"gov\",\"hon\",\"jr\",\"llb\",\"lt\",\"maj\",\"messrs\",\"mlle\",\"mme\",\"mr\",\"mrs\",\"ms\",\"mstr\",\"phd\",\"prof\",\"pvt\",\"rep\",\"reps\",\"res\",\"rev\",\"sen\",\"sens\",\"sfc\",\"sgt\",\"sir\",\"sr\",\"supt\",\"surg\"],\"Honorific\"],[[\"jan\",\"feb\",\"mar\",\"apr\",\"jun\",\"jul\",\"aug\",\"sep\",\"sept\",\"oct\",\"nov\",\"dec\"],\"Month\"],[[\"dept\",\"univ\",\"assn\",\"bros\",\"inc\",\"ltd\",\"co\"],\"Organization\"],[[\"rd\",\"st\",\"dist\",\"mt\",\"ave\",\"blvd\",\"cl\",\"cres\",\"hwy\",\"ariz\",\"cal\",\"calif\",\"colo\",\"conn\",\"fla\",\"fl\",\"ga\",\"ida\",\"ia\",\"kan\",\"kans\",\"minn\",\"neb\",\"nebr\",\"okla\",\"penna\",\"penn\",\"pa\",\"dak\",\"tenn\",\"tex\",\"ut\",\"vt\",\"va\",\"wis\",\"wisc\",\"wy\",\"wyo\",\"usafa\",\"alta\",\"ont\",\"que\",\"sask\"],\"Place\"]].forEach((e=>{e[0].forEach((t=>{qr[t]=!0,Ur[t]=\"Abbreviation\",void 0!==e[1]&&(Ur[t]=[Ur[t],e[1]])}))}));var Rr=[\"anti\",\"bi\",\"co\",\"contra\",\"de\",\"extra\",\"infra\",\"inter\",\"intra\",\"macro\",\"micro\",\"mis\",\"mono\",\"multi\",\"peri\",\"pre\",\"pro\",\"proto\",\"pseudo\",\"re\",\"sub\",\"supra\",\"trans\",\"tri\",\"un\",\"out\",\"ex\"].reduce(((e,t)=>(e[t]=!0,e)),{});const Qr={\"!\":\"¡\",\"?\":\"¿Ɂ\",'\"':'“”\"❝❞',\"'\":\"‘‛❛❜’\",\"-\":\"—–\",a:\"ªÀÁÂÃÄÅàáâãäåĀāĂăĄąǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАаѦѧӐӑӒӓƛæ\",b:\"ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ\",c:\"¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼϲϹϽϾСсєҀҁҪҫ\",d:\"ÐĎďĐđƉƊȡƋƌ\",e:\"ÈÉÊËèéêëĒēĔĕĖėĘęĚěƐȄȅȆȇȨȩɆɇΈΕΞΣέεξϵЀЁЕеѐёҼҽҾҿӖӗễ\",f:\"ƑƒϜϝӺӻҒғſ\",g:\"ĜĝĞğĠġĢģƓǤǥǦǧǴǵ\",h:\"ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ\",I:\"ÌÍÎÏ\",i:\"ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇіїi̇\",j:\"ĴĵǰȷɈɉϳЈј\",k:\"ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ\",l:\"ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ\",m:\"ΜϺϻМмӍӎ\",n:\"ÑñŃńŅņŇňŉŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ\",o:\"ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϴОФоѲѳӦӧӨөӪӫ\",p:\"ƤΡρϷϸϼРрҎҏÞ\",q:\"Ɋɋ\",r:\"ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ\",s:\"ŚśŜŝŞşŠšƧƨȘșȿЅѕ\",t:\"ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт\",u:\"ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰυϋύ\",v:\"νѴѵѶѷ\",w:\"ŴŵƜωώϖϢϣШЩшщѡѿ\",x:\"×ΧχϗϰХхҲҳӼӽӾӿ\",y:\"ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ\",z:\"ŹźŻżŽžƵƶȤȥɀΖ\"},Zr={};Object.keys(Qr).forEach((function(e){Qr[e].split(\"\").forEach((function(t){Zr[t]=e}))}));const _r=/\\//,Xr=/[a-z]\\.[a-z]/i,Yr=/[0-9]/,eo=function(e,t){const n=e.normal||e.text||e.machine,r=t.model.one.aliases;if(r.hasOwnProperty(n)&&(e.alias=e.alias||[],e.alias.push(r[n])),_r.test(n)&&!Xr.test(n)&&!Yr.test(n)){const t=n.split(_r);t.length<=3&&t.forEach((t=>{\"\"!==(t=t.trim())&&(e.alias=e.alias||[],e.alias.push(t))}))}return e},to=/^\\p{Letter}+-\\p{Letter}+$/u,no=function(e){let t=e.implicit||e.normal||e.text;t=t.replace(/['’]s$/,\"\"),t=t.replace(/s['’]$/,\"s\"),t=t.replace(/([aeiou][ktrp])in'$/,\"$1ing\"),to.test(t)&&(t=t.replace(/-/g,\"\")),t=t.replace(/^[#@]/,\"\"),t!==e.normal&&(e.machine=t)},ro=function(e,t){const n=e.docs;for(let r=0;r<n.length;r+=1)for(let o=0;o<n[r].length;o+=1)t(n[r][o],e.world)},oo={alias:e=>ro(e,eo),machine:e=>ro(e,no),normal:e=>ro(e,Sr),freq:function(e){const t=e.docs,n={};for(let e=0;e<t.length;e+=1)for(let r=0;r<t[e].length;r+=1){const o=t[e][r],a=o.machine||o.normal;n[a]=n[a]||0,n[a]+=1}for(let e=0;e<t.length;e+=1)for(let r=0;r<t[e].length;r+=1){const o=t[e][r],a=o.machine||o.normal;o.freq=n[a]}},offset:function(e){let t=0,n=0;const r=e.document;for(let e=0;e<r.length;e+=1)for(let o=0;o<r[e].length;o+=1){const a=r[e][o];a.offset={index:n,start:t+a.pre.length,length:a.text.length},t+=a.pre.length+a.text.length+a.post.length,n+=1}},index:function(e){const t=e.document;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1)t[e][n].index=[e,n]},wordCount:function(e){let t=0;const n=e.docs;for(let e=0;e<n.length;e+=1)for(let r=0;r<n[e].length;r+=1)\"\"!==n[e][r].normal&&(t+=1,n[e][r].wordCount=t)}};var ao={compute:oo,methods:Wr,model:{one:{aliases:{\"&\":\"and\",\"@\":\"at\",\"%\":\"percent\",plz:\"please\",bein:\"being\"},abbreviations:qr,prefixes:Rr,suffixes:{like:!0,ish:!0,less:!0,able:!0,elect:!0,type:!0,designate:!0},prePunctuation:{\"#\":!0,\"@\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},postPunctuation:{\"%\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},lexicon:Ur,unicode:Zr,emoticons:{\"<3\":!0,\"</3\":!0,\"<\\\\3\":!0,\":^P\":!0,\":^p\":!0,\":^O\":!0,\":^3\":!0}}},hooks:[\"alias\",\"machine\",\"index\",\"id\"]};var io={typeahead:function(e){const t=e.model.one.typeahead,n=e.docs;if(0===n.length||0===Object.keys(t).length)return;const r=n[n.length-1]||[],o=r[r.length-1];if(!o.post&&t.hasOwnProperty(o.normal)){const n=t[o.normal];o.implicit=n,o.machine=n,o.typeahead=!0,e.compute.preTagger&&e.last().unTag(\"*\").compute([\"lexicon\",\"preTagger\"])}}};const so=function(){const e=this.docs;if(0===e.length)return this;const t=e[e.length-1]||[],n=t[t.length-1];return!0===n.typeahead&&n.machine&&(n.text=n.machine,n.normal=n.machine),this},lo={safe:!0,min:3};var uo={typeahead:function(e=[],t={}){const n=this.model();var r;t=Object.assign({},lo,t),r=e,\"[object Object]\"===Object.prototype.toString.call(r)&&(Object.assign(n.one.lexicon,e),e=Object.keys(e));const o=function(e,t,n){let r={};const o=[],a=n.prefixes||{};return e.forEach((e=>{let i=(e=e.toLowerCase().trim()).length;t.max&&i>t.max&&(i=t.max);for(let s=t.min;s<i;s+=1){const i=e.substring(0,s);t.safe&&n.model.one.lexicon.hasOwnProperty(i)||(!0!==a.hasOwnProperty(i)&&!0!==r.hasOwnProperty(i)?r[i]=e:o.push(i))}})),r=Object.assign({},a,r),o.forEach((e=>{delete r[e]})),r}(e,t,this.world());return Object.keys(o).forEach((e=>{n.one.typeahead.hasOwnProperty(e)?delete n.one.typeahead[e]:n.one.typeahead[e]=o[e]})),this}};var co={model:{one:{typeahead:{}}},api:function(e){e.prototype.autoFill=so},lib:uo,compute:io,hooks:[\"typeahead\"]};h.extend(J),h.extend(yn),h.extend(Jt),h.extend(Tn),h.extend(lr),h.plugin(ye),h.extend(ao),h.extend(Ce),h.plugin(p),h.extend(Be),h.extend(co),h.extend(Ee),h.extend(Gn);var ho={addendum:\"addenda\",corpus:\"corpora\",criterion:\"criteria\",curriculum:\"curricula\",genus:\"genera\",memorandum:\"memoranda\",opus:\"opera\",ovum:\"ova\",phenomenon:\"phenomena\",referendum:\"referenda\",alga:\"algae\",alumna:\"alumnae\",antenna:\"antennae\",formula:\"formulae\",larva:\"larvae\",nebula:\"nebulae\",vertebra:\"vertebrae\",analysis:\"analyses\",axis:\"axes\",diagnosis:\"diagnoses\",parenthesis:\"parentheses\",prognosis:\"prognoses\",synopsis:\"synopses\",thesis:\"theses\",neurosis:\"neuroses\",appendix:\"appendices\",index:\"indices\",matrix:\"matrices\",ox:\"oxen\",sex:\"sexes\",alumnus:\"alumni\",bacillus:\"bacilli\",cactus:\"cacti\",fungus:\"fungi\",hippopotamus:\"hippopotami\",libretto:\"libretti\",modulus:\"moduli\",nucleus:\"nuclei\",octopus:\"octopi\",radius:\"radii\",stimulus:\"stimuli\",syllabus:\"syllabi\",cookie:\"cookies\",calorie:\"calories\",auntie:\"aunties\",movie:\"movies\",pie:\"pies\",rookie:\"rookies\",tie:\"ties\",zombie:\"zombies\",leaf:\"leaves\",loaf:\"loaves\",thief:\"thieves\",foot:\"feet\",goose:\"geese\",tooth:\"teeth\",beau:\"beaux\",chateau:\"chateaux\",tableau:\"tableaux\",bus:\"buses\",gas:\"gases\",circus:\"circuses\",crisis:\"crises\",virus:\"viruses\",database:\"databases\",excuse:\"excuses\",abuse:\"abuses\",avocado:\"avocados\",barracks:\"barracks\",child:\"children\",clothes:\"clothes\",echo:\"echoes\",embargo:\"embargoes\",epoch:\"epochs\",deer:\"deer\",halo:\"halos\",man:\"men\",woman:\"women\",mosquito:\"mosquitoes\",mouse:\"mice\",person:\"people\",quiz:\"quizzes\",rodeo:\"rodeos\",shoe:\"shoes\",sombrero:\"sombreros\",stomach:\"stomachs\",tornado:\"tornados\",tuxedo:\"tuxedos\",volcano:\"volcanoes\"},go={Comparative:\"true¦bett1f0;arth0ew0in0;er\",Superlative:\"true¦earlier\",PresentTense:\"true¦bests,sounds\",Condition:\"true¦lest,unless\",PastTense:\"true¦began,came,d4had,kneel3l2m0sa4we1;ea0sg2;nt;eap0i0;ed;id\",Participle:\"true¦0:09;a06b01cZdXeat0fSgQhPoJprov0rHs7t6u4w1;ak0ithdra02o2r1;i02uY;k0v0;nd1pr04;ergoJoJ;ak0hHo3;e9h7lain,o6p5t4un3w1;o1um;rn;g,k;ol0reS;iQok0;ught,wn;ak0o1runk;ne,wn;en,wn;ewriNi1uJ;dd0s0;ut3ver1;do4se0t1;ak0h2;do2g1;roG;ne;ast0i7;iv0o1;ne,tt0;all0loBor1;bi3g2s1;ak0e0;iv0o9;dd0;ove,r1;a5eamt,iv0;hos0lu1;ng;e4i3lo2ui1;lt;wn;tt0;at0en,gun;r2w1;ak0ok0;is0;en\",Gerund:\"true¦accord0be0doin,go0result0stain0;ing\",Expression:\"true¦a0Yb0Uc0Sd0Oe0Mfarew0Lg0FhZjeez,lWmVnToOpLsJtIuFvEw7y0;a5e3i1u0;ck,p;k04p0;ee,pee;a0p,s;!h;!a,h,y;a5h2o1t0;af,f;rd up,w;atsoever,e1o0;a,ops;e,w;hoo,t;ery w06oi0L;gh,h0;! 0h,m;huh,oh;here nPsk,ut tut;h0ic;eesh,hh,it,oo;ff,h1l0ow,sst;ease,s,z;ew,ooey;h1i,mg,o0uch,w,y;h,o,ps;! 0h;hTmy go0wT;d,sh;a7evertheless,o0;!pe;eh,mm;ah,eh,m1ol0;!s;ao,fao;aCeBi9o2u0;h,mph,rra0zzC;h,y;l1o0;r6y9;la,y0;! 0;c1moCsmok0;es;ow;!p hip hoor0;ay;ck,e,llo,y;ha1i,lleluj0;ah;!ha;ah,ee4o1r0;eat scott,r;l1od0sh; grief,bye;ly;! whiz;ell;e0h,t cetera,ureka,ww,xcuse me;k,p;'oh,a0rat,uh;m0ng;mit,n0;!it;mon,o0;ngratulations,wabunga;a2oo1r0tw,ye;avo,r;!ya;h,m; 1h0ka,las,men,rgh,ye;!a,em,h,oy;la\",Negative:\"true¦n0;ever,o0;n,t\",QuestionWord:\"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",Reflexive:\"true¦h4it5my5o1the0your2;ir1m1;ne3ur0;sel0;f,ves;er0im0;self\",Plural:\"true¦dick0gre0ones,records;ens\",\"Unit|Noun\":\"true¦cEfDgChBinchAk9lb,m6newt5oz,p4qt,t1y0;ardEd;able1b0ea1sp;!l,sp;spo1;a,t,x;on9;!b,g,i1l,m,p0;h,s;!les;!b,elvin,g,m;!es;g,z;al,b;eet,oot,t;m,up0;!s\",Value:\"true¦a few\",Imperative:\"true¦bewa0come he0;re\",\"Plural|Verb\":\"true¦leaves\",Demonym:\"true¦0:15;1:12;a0Vb0Oc0Dd0Ce08f07g04h02iYjVkTlPmLnIomHpEqatari,rCs7t5u4v3welAz2;am0Gimbabwe0;enezuel0ietnam0I;gAkrai1;aiwTex0hai,rinida0Ju2;ni0Prkmen;a5cotti4e3ingapoOlovak,oma0Spaniard,udRw2y0W;ede,iss;negal0Cr09;sh;mo0uT;o5us0Jw2;and0;a2eru0Fhilippi0Nortugu07uerto r0S;kist3lesti1na2raguay0;ma1;ani;ami00i2orweP;caragu0geri2;an,en;a3ex0Lo2;ngo0Drocc0;cedo1la2;gasy,y07;a4eb9i2;b2thua1;e0Cy0;o,t01;azakh,eny0o2uwaiI;re0;a2orda1;ma0Ap2;anO;celandic,nd4r2sraeli,ta01vo05;a2iB;ni0qi;i0oneU;aiAin2ondur0unO;di;amEe2hanai0reek,uatemal0;or2rm0;gi0;ilipino,ren8;cuadoVgyp4mira3ngli2sto1thiopi0urope0;shm0;ti;ti0;aPominUut3;a9h6o4roat3ub0ze2;ch;!i0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el6o4r3ul2;gaE;azi9it;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;genti2me1;ne;ba1ge2;ri0;ni0;gh0r2;ic0;an\",Organization:\"true¦0:4Q;a3Tb3Bc2Od2He2Df27g1Zh1Ti1Pj1Nk1Ll1Gm12n0Po0Mp0Cqu0Br02sTtHuCv9w3xiaomi,y1;amaha,m1Bou1w1B;gov,tu3C;a4e2iki1orld trade organizati33;leaRped0O;lls fargo,st1;fie2Hinghou2R;l1rner br3U;gree3Jl street journ2Im1E;an halOeriz2Xisa,o1;dafo2Yl1;kswagMvo;b4kip,n2ps,s1;a tod3Aps;es3Mi1;lev3Fted natio3C;er,s; mobi32aco beRd bOe9gi frida3Lh3im horto3Amz,o1witt3D;shi49y1;ota,s r 05;e 1in lizzy;b3carpen3Jdaily ma3Dguess w2holli0s1w2;mashing pumpki35uprem0;ho;ea1lack eyed pe3Xyr0Q;ch bo3Dtl0;l2n3Qs1xas instrumen1U;co,la m1F;efoni0Kus;a8cientology,e5ieme2Ymirnoff,np,o3pice gir6quare0Ata1ubaru;rbuc1to34;ks;ny,undgard1;en;a2x pisto1;ls;g1Wrs;few2Minsbur31lesfor03msu2E;adiohead,b8e4o1yana3C;man empi1Xyal 1;b1dutch she4;ank;a3d 1max,vl20;bu1c2Ahot chili peppe2Ylobst2N;ll;ders dige1Ll madrid;c,s;ant3Aizn2Q;a8bs,e5fiz2Ihilip4i3r1;emier 1udenti1D;leagTo2K;nk floyd,zza hut; morrBs;psi2tro1uge0E;br33chi0Tn33;!co;lant2Un1yp16; 2ason27da2P;ld navy,pec,range juli2xf1;am;us;aAb9e6fl,h5i4o1sa,vid3wa;k2tre dame,vart1;is;ia;ke,ntendo,ss0QvZ;l,s;c,st1Otflix,w1; 1sweek;kids on the block,york0D;a,c;nd22s2t1;ional aca2Po,we0U;a,c02d0S;aDcdonalCe9i6lb,o3tv,y1;spa1;ce;b1Tnsanto,ody blu0t1;ley cr1or0T;ue;c2t1;as,subisO;helin,rosoft;dica2rcedes benz,talli1;ca;id,re;ds;cs milk,tt19z24;a3e1g,ittle caesa1P; ore09novo,x1;is,mark,us; 1bour party;pres0Dz boy;atv,fc,kk,lm,m1od1O;art;iffy lu0Roy divisi0Jpmorgan1sa;! cha09;bm,hop,k3n1tv;g,te1;l,rpol;ea;a5ewlett pack1Vi3o1sbc,yundai;me dep1n1P;ot;tac1zbollah;hi;lliburt08sbro;eneral 6hq,ithub,l5mb,o2reen d0Ou1;cci,ns n ros0;ldman sachs,o1;dye1g0H;ar;axo smith kli04encoW;electr0Nm1;oto0Z;a5bi,c barcelo4da,edex,i2leetwood m03o1rito l0G;rd,xcY;at,fa,nancial1restoZ; tim0;na;cebook,nnie mae;b0Asa,u3xxon1; m1m1;ob0J;!rosceptics;aiml0De5isney,o4u1;nkin donu2po0Zran dur1;an;ts;j,w jon0;a,f lepp12ll,peche mode,r spieg02stiny's chi1;ld;aJbc,hFiDloudflaCnn,o3r1;aigsli5eedence clearwater reviv1ossra09;al;c7inba6l4m1o0Est09;ca2p1;aq;st;dplSg1;ate;se;a c1o chanQ;ola;re;a,sco1tigroup;! systems;ev2i1;ck fil a,na daily;r1y;on;d2pital o1rls jr;ne;bury,ill1;ac;aEbc,eBf9l5mw,ni,o1p,rexiteeU;ei3mbardiIston 1;glo1pizza;be;ng;o2ue c1;roV;ckbuster video,omingda1;le; g1g1;oodriL;cht2e ge0rkshire hathaw1;ay;el;cardi,idu,nana republ3s1xt5y5;f,kin robbi1;ns;ic;bYcTdidSerosmith,iRlKmEnheuser busDol,ppleAr6s4u3v2y1;er;is,on;di,todesk;hland o1sociated E;il;b3g2m1;co;os;ys; compu1be0;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 5catel2ta1;ir;! lu1;ce1;nt;jazeera,qae1;da;g,rbnb;as;/dc,a3er,tivision1;! blizz1;ard;demy of scienc0;es;ba\",Possessive:\"true¦its,my,our0thy;!s\",\"Noun|Verb\":\"true¦0:9W;1:AA;2:96;3:A3;4:9R;5:A2;6:9K;7:8N;8:7L;9:A8;A:93;B:8D;C:8X;a9Ob8Qc7Id6Re6Gf5Sg5Hh55i4Xj4Uk4Rl4Em40n3Vo3Sp2Squ2Rr21s0Jt02u00vVwGyFzD;ip,oD;ne,om;awn,e6Fie68;aOeMhJiHoErD;ap,e9Oink2;nd0rDuC;kDry,sh5Hth;!shop;ck,nDpe,re,sh;!d,g;e86iD;p,sD;k,p0t2;aDed,lco8W;r,th0;it,lk,rEsDt4ve,x;h,te;!ehou1ra9;aGen5FiFoD;iDmAte,w;ce,d;be,ew,sA;cuum,l4B;pDr7;da5gra6Elo6A;aReQhrPiOoMrGuEwiDy5Z;n,st;nDrn;e,n7O;aGeFiEoDu6;t,ub2;bu5ck4Jgg0m,p;at,k,nd;ck,de,in,nsDp,v7J;f0i8R;ll,ne,p,r4Yss,t94uD;ch,r;ck,de,e,le,me,p,re;e5Wow,u6;ar,e,ll,mp0st,xt;g,lDng2rg7Ps5x;k,ly;a0Sc0Ne0Kh0Fi0Dk0Cl0Am08n06o05pXquaBtKuFwD;ea88iD;ng,pe,t4;bGit,m,ppErD;fa3ge,pri1v2U;lDo6S;e6Py;!je8;aMeLiKoHrEuDy2;dy,ff,mb2;a85eEiDo5Pugg2;ke,ng;am,ss,t4;ckEop,p,rD;e,m;ing,pi2;ck,nk,t4;er,m,p;ck,ff,ge,in,ke,lEmp,nd,p2rDte,y;!e,t;k,l;aJeIiHlGoFrDur,y;ay,e56inDu3;g,k2;ns8Bt;a5Qit;ll,n,r87te;ed,ll;m,n,rk;b,uC;aDee1Tow;ke,p;a5Je4FiDo53;le,rk;eep,iDou4;ce,p,t;ateboa7Ii;de,gnDl2Vnk,p,ze;!al;aGeFiEoDuff2;ck,p,re,w;ft,p,v0;d,i3Ylt0;ck,de,pe,re,ve;aEed,nDrv1It;se,t2N;l,r4t;aGhedu2oBrD;aEeDibb2o3Z;en,w;pe,t4;le,n,r2M;cDfegua72il,mp2;k,rifi3;aZeHhy6LiGoEuD;b,in,le,n,s5X;a6ck,ll,oDpe,u5;f,t;de,ng,ot,p,s1W;aTcSdo,el,fQgPje8lOmMnLo17pJque6sFturn,vDwa6V;eDi27;al,r1;er74oFpe8tEuD;lt,me;!a55;l71rt;air,eaDly,o53;l,t;dezvo2Zt;aDedy;ke,rk;ea1i4G;a6Iist0r5N;act6Yer1Vo71uD;nd,se;a38o6F;ch,s6G;c1Dge,iEke,lly,nDp1Wt1W;ge,k,t;n,se;es6Biv0;a04e00hYiXlToNrEsy4uD;mp,n4rcha1sh;aKeIiHoDu4O;be,ceFdu3fi2grDje8mi1p,te6;amDe6W;!me;ed,ss;ce,de,nt;sDy;er6Cs;cti3i1;iHlFoEp,re,sDuCw0;e,i5Yt;l,p;iDl;ce,sh;nt,s5V;aEce,e32uD;g,mp,n7;ce,nDy;!t;ck,le,n17pe,tNvot;a1oD;ne,tograph;ak,eFnErDt;fu55mA;!c32;!l,r;ckJiInHrFsEtDu1y;ch,e9;s,te;k,tD;!y;!ic;nt,r,se;!a7;bje8ff0il,oErDutli3Qver4B;bAd0ie9;ze;a4ReFoDur1;d,tD;e,i3;ed,gle8tD;!work;aMeKiIoEuD;rd0;ck,d3Rld,nEp,uDve;nt,th;it5EkD;ey;lk,n4Brr5CsDx;s,ta2B;asuBn4UrDss;ge,it;il,nFp,rk3WsEtD;ch,t0;h,k,t0;da5n0oeuvB;aLeJiHoEuD;mp,st;aEbby,ck,g,oDve;k,t;d,n;cDe,ft,mAnIst;en1k;aDc0Pe4vK;ch,d,k,p,se;bFcEnd,p,t4uD;gh,n4;e,k;el,o2U;eEiDno4E;ck,d,ll,ss;el,y;aEo1OuD;i3mp;m,zz;mpJnEr46ssD;ue;c1Rdex,fluGha2k,se2HteDvoi3;nt,rD;e6fa3viD;ew;en3;a8le2A;aJeHiGoEuD;g,nt;l3Ano2Dok,pDr1u1;!e;ghli1Fke,nt,re,t;aDd7lp;d,t;ck,mGndFrEsh,tDu9;ch,e;bo3Xm,ne4Eve6;!le;!m0;aMear,ift,lKossJrFuD;arDe4Alp,n;antee,d;aFiEoDumb2;uCwth;ll,nd,p;de,sp;ip;aBoDue;ss,w;g,in,me,ng,s,te,ze;aZeWiRlNoJrFuD;ck,el,nDss,zz;c38d;aEoDy;st,wn;cDgme,me,nchi1;tuB;cFg,il,ld,rD;ce,e29mDwa31;!at;us;aFe0Vip,oDy;at,ck,od,wD;!er;g,ke,me,re,sh,vo1E;eGgFlEnDre,sh,t,x;an3i0Q;e,m,t0;ht,uB;ld;aEeDn3;d,l;r,tuB;ce,il,ll,rm,vo2W;cho,d7ffe8nMsKxFyeD;!baD;ll;cGerci1hFpDtra8;eriDo0W;en3me9;au6ibA;el,han7u1;caDtima5;pe;count0d,vy;a01eSiMoJrEuDye;b,el,mp,pli2X;aGeFiEoD;ne,p;ft,ll,nk,p,ve;am,ss;ft,g,in;cEd7ubt,wnloD;ad;k,u0E;ge6p,sFt4vD;e,iDor3;de;char7gui1h,liEpD;at4lay,u5;ke;al,bKcJfeIlGmaCposAsEtaD;il;e07iD;gn,re;ay,ega5iD;ght;at,ct;li04rea1;a5ut;b,ma7n3rDte;e,t;a0Eent0Dh06irc2l03oKrFuD;be,e,rDt;b,e,l,ve;aGeFoEuDy;sh;p,ss,wd;dAep;ck,ft,sh;at,de,in,lTmMnFordina5py,re,st,uDv0;gh,nDp2rt;s01t;ceHdu8fli8glomeIsFtDveN;a8rD;a6ol;e9tru8;ct;ntDrn;ra5;bHfoGmFpD;leDouCromi1;me9;aCe9it,u5;rt;at,iD;ne;lap1oD;r,ur;aEiDoud,ub;ck,p;im,w;aEeDip;at,ck,er;iGllen7nErD;ge,m,t;ge,nD;el;n,r;er,re;ke,ll,mp,noe,pGrXsFtEuDve;se,ti0I;alog,ch;h,t;!tuB;re;a03eZiXlToPrHuEyD;pa11;bb2ck2dgEff0mp,rDst,zz;den,n;et;anJeHiFoadEuD;i1sh;ca6;be,d7;ge;aDed;ch,k;ch,d;aFg,mb,nEoDrd0tt2x,ycott;k,st,t;d,e;rd,st;aFeCiDoYur;nk,tz;nd;me;as,d,ke,nd,opsy,tD;!ch,e;aFef,lt,nDt;d,efA;it;r,t;ck,il,lan3nIrFsEtt2;le;e,h;!gDk;aDe;in;!d,g,k;bu1c05dZge,iYlVnTppQrLsIttGucEwaD;rd;tiD;on;aDempt;ck;k,sD;i6ocia5;st;chFmD;!oD;ur;!iD;ve;eEroa4;ch;al;chDg0sw0;or;aEt0;er;rm;d,m,r;dreHvD;an3oD;ca5;te;ce;ss;cDe,he,t;eFoD;rd,u9;nt;nt,ss;se\",Actor:\"true¦0:7B;1:7G;2:6A;3:7F;4:7O;5:7K;a6Nb62c4Ud4Be41f3Sg3Bh30i2Uj2Qkin2Pl2Km26n1Zo1Sp0Vqu0Tr0JsQtJuHvEw8yo6;gi,ut6;h,ub0;aAe9i8o7r6;estl0it0;m2rk0;fe,nn0t2Bza2H;atherm2ld0;ge earn0it0nder0rri1;eter7i6oyF;ll5Qp,s3Z;an,ina2U;n6s0;c6Uder03;aoisea23e9herapi5iktok0o8r6ut1yco6S;a6endseLo43;d0mp,nscri0Bvel0;ddl0u1G;a0Qchn7en6na4st0;ag0;i3Oo0D;aiXcUeRhPiMki0mu26oJpGquaFtBu7wee6;p0theart;lt2per7r6;f0ge6Iviv1;h6inten0Ist5Ivis1;ero,um2;a8ep7r6;ang0eam0;bro2Nc2Ofa2Nmo2Nsi20;ff0tesm2;tt0;ec7ir2Do6;kesp59u0M;ia5Jt3;l7me6An,rcere6ul;r,ss;di0oi5;n7s6;sy,t0;g0n0;am2ephe1Iow6;girl,m2r2Q;cretInior cit3Fr6;gea4v6;a4it1;hol4Xi7reen6ulpt1;wr2C;e01on;l1nt;aEe9o8u6;l0nn6;er up,ingE;g40le mod3Zof0;a4Zc8fug2Ppo32searQv6;ere4Uolution6;ary;e6luYru22;ptio3T;bbi,dic5Vpp0;arter6e2Z;back;aYeWhSiRlOoKr8sycho7u6;nk,p31;logi5;aGeDiBo6;d9fess1g7ph47s6;pe2Ktitu51;en6ramm0;it1y;igy,uc0;est4Nme mini0Unce6s3E;!ss;a7si6;de4;ch0;ctiti39nk0P;dca0Oet,li6pula50rnst42;c2Itic6;al scie6i2;nti5;a6umb0;nn0y6;er,ma4Lwright;lgrim,one0;a8iloso7otogra7ra6ysi1V;se;ph0;ntom,rmaci5;r6ssi1T;form0s4O;i3El,nel3Yr8st1tr6wn;i6on;arWot;ent4Wi42tn0;ccupa4ffBp8r7ut6;ca5l0B;ac4Iganiz0ig2Fph2;er3t6;i1Jomet6;ri5;ic0spring;aBe9ie4Xo7u6;n,rser3J;b6mad,vi4V;le2Vo4D;i6mesis,phew;ce,ghb1;nny,rr3t1X;aEeDiAo7u6yst1Y;m8si16;der3gul,m7n6th0;arDk;!my;ni7s6;f02s0Jt0;on,st0;chan1Qnt1rcha4;gi9k0n8rtyr,t6y1;e,riar6;ch;ag0iac;ci2stra3I;a7e2Aieutena4o6;rd,s0v0;bor0d7ndlo6ss,urea3Fwy0ym2;rd;!y;!s28;e8o7u6;ggl0;gg0urna2U;st0;c3Hdol,llu3Ummigra4n6; l9c1Qfa4habi42nov3s7ve6;nt1stig3;pe0Nt6;a1Fig3ru0M;aw;airFeBistoAo8u6ygie1K;man6sba2H;!ita8;bo,st6usekN;age,e3P;ri2;ir,r6;m7o6;!ine;it;dress0sty2C;aLeIhostGirl26ladi3oCrand7u6;e5ru;c9daug0Jfa8m7pa6s2Y;!re4;a,o6;th0;hi1B;al7d6lf0;!de3A;ie,k6te26;eep0;!wr6;it0;isha,n6;i6tl04;us;mbl0rden0;aDella,iAo7r6;eela2Nie1P;e,re6ster pare4;be1Hm2r6st0;unn0;an2ZgZlmm17nanci0r6tt0;e6st la2H; marsh2OfigXm2;rm0th0;conoEdDlectriCm8n7x6;amin0cellency,i2A;emy,trepreneur,vironmenta1J;c8p6;er1loye6;e,r;ee;ci2;it1;mi5;aKeBi8ork,ri7u6we02;de,tche2H;ft0v0;ct3eti7plom2Hre6va;ct1;ci2ti2;aDcor3fencCi0InAput9s7tectLvel6;op0;ce1Ge6ign0;rt0;ee,y;iz6;en;em2;c1Ml0;d8nc0redev7ug6;ht0;il;!dy;a06e04fo,hXitizenWlToBr9u6;r3stomer6;! representat6;ive;e3it6;ic;lJmGnAord9rpor1Nu7w6;boy,ork0;n6ri0;ciTte1Q;in3;fidantAgressSs9t6;e0Kr6;ibut1o6;ll0;tab13ul1O;!e;edi2m6pos0rade;a0EeQissi6;on0;leag8on7um6;ni5;el;ue;e6own;an0r6;ic,k;!s;a9e7i6um;ld;erle6f;ad0;ir7nce6plFract0;ll1;m2wI;lebri6o;ty;dBptAr6shi0;e7pe6;nt0;r,t6;ak0;ain;et;aMeLiJlogg0oErBu6;dd0Fild0rgl9siness6;m2p7w6;om2;ers05;ar;i7o6;!k0th0;cklay0de,gadi0;hemi2oge8y6;!frie6;nd;ym2;an;cyc6sR;li5;atbox0ings;by,nk0r6;b0on7te6;nd0;!e07;c04dWge4nQpLrHsFtAu7yatull6;ah;nt7t6;h1oG;!ie;h8t6;e6orney;nda4;ie5le6;te;sis00tron6;aut,om0;chbis8isto7tis6;an,t;crU;hop;ost9p6;ari6rentiS;ti6;on;le;a9cest1im3nou8y6;bo6;dy;nc0;ly5rc6;hi5;mi8v6;entur0is1;er;ni7r6;al;str3;at1;or;counBquaintanArob9t6;ivi5or,re6;ss;st;at;ce;ta4;nt\",\"Adj|Noun\":\"true¦0:16;a1Db17c0Ud0Re0Mf0Dg0Ah08i06ju05l02mWnUoSpNrIsBt7u4v1watershed;a1ision0Z;gabo4nilla,ria1;b0Vnt;ndergr1pstairs;adua14ou1;nd;a3e1oken,ri0;en,r1;min0rori13;boo,n;age,e5ilv0Flack,o3quat,ta2u1well;bordina0Xper5;b0Lndard;ciali0Yl1vereign;e,ve16;cret,n1ri0;ior;a4e2ou1ubbiL;nd,tiY;ar,bBl0Wnt0p1side11;resent0Vublican;ci0Qsh;a4eriodic0last0Zotenti0r1;emi2incip0o1;!fession0;er,um;rall4st,tie0U;ff1pposi0Hv0;ens0Oi0C;agg01ov1uts;el;a5e3iniatJo1;bi01der07r1;al,t0;di1tr0N;an,um;le,riG;attOi2u1;sh;ber0ght,qC;stice,veniT;de0mpressioYn1;cumbe0Edividu0no0Dsta0Eterim;alf,o1umdrum;bby,melF;en2old,ra1;ph0Bve;er0ious;a7e5i4l3u1;git03t1;ure;uid;ne;llow,m1;aFiL;ir,t,vo1;riOuriO;l3p00x1;c1ecutUpeV;ess;d1iK;er;ar2e1;mographUrivO;k,l2;hiGlassSo2rude,unn1;ing;m5n1operK;creCstitueOte2vertab1;le;mpor1nt;ary;ic,m2p1;anion,lex;er2u1;ni8;ci0;al;e5lank,o4r1;i2u1;te;ef;ttom,urgeois;st;cadem9d6l2ntarct9r1;ab,ct8;e3tern1;at1;ive;rt;oles1ult;ce1;nt;ic\",\"Adj|Past\":\"true¦0:4Q;1:4C;2:4H;3:4E;a44b3Tc36d2Je29f20g1Wh1Si1Jj1Gkno1Fl1Am15n12o0Xp0Mqu0Kr08sLtEuAv9w4yellow0;a7ea6o4rinkl0;r4u3Y;n,ri0;k31th3;rp0sh0tZ;ari0e1O;n5p4s0;d1li1Rset;cov3derstood,i4;fi0t0;a8e3Rhr7i6ouTr4urn0wi4C;a4imm0ou2G;ck0in0pp0;ed,r0;eat2Qi37;m0nn0r4;get0ni2T;aOcKeIhGimFm0Hoak0pDt7u4;bsid3Ogge44s4;pe4ta2Y;ct0nd0;a8e7i2Eok0r5u4;ff0mp0nn0;ength2Hip4;ed,p0;am0reotyp0;in0t0;eci4ik0oH;al3Efi0;pRul1;a4ock0ut;d0r0;a4c1Jle2t31;l0s3Ut0;a6or5r4;at4e25;ch0;r0tt3;t4ut0;is2Mur1;aEe5o4;tt0;cAdJf2Bg9je2l8m0Knew0p7qu6s4;eTpe2t4;or0ri2;e3Dir0;e1lac0;at0e2Q;i0Rul1;eiv0o4ycl0;mme2Lrd0v3;in0lli0ti2A;a4ot0;li28;aCer30iBlAo9r5u4;mp0zzl0;e6i2Oo4;ce2Fd4lo1Anou30pos0te2v0;uc0;fe1CocCp0Iss0;i2Kli1L;ann0e2CuS;ck0erc0ss0;ck0i2Hr4st0;allLk0;bse7c6pp13rgan2Dver4;lo4whelm0;ok0;cupi0;rv0;aJe5o4;t0uri1A;ed0gle2;a6e5ix0o4ut0ys1N;di1Nt15u26;as0Clt0;n4rk0;ag0ufact0A;e6i5o4;ad0ck0st,v0;cens0m04st0;ft,v4;el0;tt0wn;a5o15u4;dg0s1B;gg0;llumSmpAn4sol1;br0cre1Ldebt0f8jZspir0t5v4;it0olv0;e4ox0Y;gr1n4re23;d0si15;e2l1o1Wuri1;li0o01r4;ov0;a6e1o4um03;ok0r4;ri0Z;mm3rm0;i6r5u4;a1Bid0;a0Ui0Rown;ft0;aAe9i8l6oc0Ir4;a4i0oz0Y;ctHg19m0;avo0Ju4;st3;ni08tt0x0;ar0;d0il0sc4;in1;dCl1mBn9quipp0s8x4;agger1c6p4te0T;a0Se4os0;ct0rie1D;it0;cap0tabliZ;cha0XgFha1As4;ur0;a0Zbarra0N;i0Buc1;aMeDi5r4;a01i0;gni08miniSre2s4;a9c6grun0Ft4;o4re0Hu17;rt0;iplWou4;nt0r4;ag0;bl0;cBdRf9l8p7ra6t5v4;elop0ot0;ail0ermQ;ng0;re07;ay0ight0;e4in0o0M;rr0;ay0enTor1;m5t0z4;ed,zl0;ag0p4;en0;aPeLhIlHo9r6u4;lt4r0stom03;iv1;a5owd0u4;sh0;ck0mp0;d0loAm7n4ok0v3;centr1f5s4troC;id3olid1;us0;b5pl4;ic1;in0;r0ur0;assi9os0utt3;ar5i4;ll0;g0m0;lebr1n6r4;ti4;fi0;tralJ;g0lcul1;aDewild3iCl9o7r5urn4;ed,t;ok4uis0;en;il0r0t4und;tl0;e5i4;nd0;ss0;as0;ffl0k0laMs0tt3;bPcNdKfIg0lFmaz0nDppBrm0ss9u5wa4;rd0;g5thor4;iz0;me4;nt0;o6u4;m0r0;li0re4;ci1;im1ticip1;at0;a5leg0t3;er0;rm0;fe2;ct0;ju5o7va4;nc0;st0;ce4knowledg0;pt0;and5so4;rb0;on0;ed\",Singular:\"true¦0:5J;1:5H;2:4W;3:4S;4:52;5:57;6:5L;7:56;8:5B;a52b4Lc3Nd35e2Xf2Og2Jh28in24j23k22l1Um1Ln1Ho1Bp0Rqu0Qr0FsZtMuHvCw9x r58yo yo;a9ha3Po3Q;f3i4Rt0Gy9;! arou39;arCeAideo ga2Qo9;cabu4Jl5C;gOr9t;di4Zt1Y;iety,ni4P;nBp30rAs 9;do43s5E;bani1in0;coordinat3Ader9;estima1to24we41; rex,aKeJhHiFoErBuAv9;! show;m2On2rntLto1D;agedy,ib9o4E;e,u9;n0ta46;ni1p2rq3L;c,er,m9;etF;ing9ree26;!y;am,mp3F;ct2le6x return;aNcMeKhor4QiJkHoGpin off,tDuBy9;ll9ner7st4T;ab2X;b9i1n28per bowl,rro1X;st3Ltot0;atAipe2Go1Lrate7udent9;! lo0I;i39u1;ft ser4Lmeo1I;elet5i9;ll,r3V;b38gn2Tte;ab2Jc9min3B;t,urity gua2N;e6ho2Y;bbatic0la3Jndwi0Qpi5;av5eDhetor2iAo9;de6om,w;tAv9;erb2C;e,u0;bDcBf9publ2r10spi1;er9orm3;e6r0;i9ord label;p2Ht0;a1u46;estion mark,ot2F;aPeMhoLiIlGoErAu9yram1F;ddi3HpErpo1Js3J;eBo9;bl3Zs9;pe3Jta1;dic1Rmi1Fp1Qroga8ss relea1F;p9rt0;py;a9ebisci1;q2Dte;cn2eAg9;!gy;!r;ne call,tocoK;anut,dAr9t0yo1;cen3Jsp3K;al,est0;nop4rAt9;e,hog5;adi11i2V;atme0bj3FcBpia1rde0thers,utspok5ve9wn3;n,r9;ti0Pview;cuAe9;an;pi3;arBitAot9umb3;a2Fhi2R;e,ra1;cot2ra8;aFeCiAo9ur0;nopo4p18rni2Nsq1Rti36uld;c,li11n0As9tt5;chief,si34;dAnu,t9;al,i3;al,ic;gna1mm0nd15rsupi0te9yf4;ri0;aDegCiBu9;ddi1n9;ch;me,p09; Be0M;bor14y9; 9er;up;eyno1itt5;el4ourn0;cBdices,itia8ni25sAtel0Lvert9;eb1J;e28titu1;en8i2T;aIeEighDoAu9;man right,s22;me9rmoFsp1Ftb0K;! r9;un; scho0YriY;a9i1N;d9v5; start,pho9;ne;ndful,sh brown,v5ze;aBelat0Ilaci3r9ul4yp1S;an9enadi3id;a1Cd slam,ny;df4r9;l2ni1I;aGeti1HiFlu1oCrAun9;er0;ee market,i9onti3;ga1;l4ur9;so9;me;ePref4;br2mi4;conoFffi7gg,lecto0Rmbas1EnCpidem2s1Zth2venBxAyel9;id;ampZempl0Nte6;i19t;er7terp9;ri9;se;my;eLiEoBr9ump tru0U;agonf4i9;er,ve thru;cAg7i4or,ssi3wn9;side;to0EumenE;aEgniDnn3sAvide9;nd;conte6incen8p9tri11;osi9;ti0C;ta0H;le0X;athBcAf9ni0terre6;ault 05err0;al,im0;!b9;ed;aWeThMiLlJoDr9;edit caBuc9;ib9;le;rd;efficDke,lCmmuniqLnsApi3rr0t0Xus9yo1;in;erv9uI;ato02;ic,lQ;ie6;er7i9oth;e6n2;ty,vil wM;aDeqCick5ocoBr9;istmas car9ysanthemum;ol;la1;ue;ndeli3racteri9;st2;iAllEr9;e0tifica1;liZ;hi3nFpErCt9ucus;erpi9hedr0;ll9;ar;!bohyd9ri3;ra1;it0;aAe,nib0t9;on;l,ry;aMeLiop2leJoHrDu9;nny,r9tterf4;g9i0;la9;ry;eakAi9;ck;fa9throB;st;dy,ro9wl;ugh;mi9;sh;an,l4;nkiArri3;er;ng;cSdMlInFppeti1rDsBtt2utop9;sy;ic;ce6pe9;ct;r9sen0;ay;ecAoma4tiA;ly;do1;i5l9;er7y;gy;en; hominDjAvan9;tage;ec8;ti9;ve;em;cCeAqui9;tt0;ta1;te;iAru0;al;de6;nt\",\"Person|Noun\":\"true¦a0Eb07c03dWeUfQgOhLjHkiGlFmCnBolive,p7r4s3trini06v1wa0;ng,rd,tts;an,enus,iol0;a,et;ky,onPumm09;ay,e1o0uby;bin,d,se;ed,x;a2e1o0;l,tt04;aLnJ;dYge,tR;at,orm;a0eloW;t0x,ya;!s;a9eo,iH;ng,tP;a2e1o0;lGy;an,w3;de,smi4y;a0erb,iOolBuntR;ll,z0;el;ail,e0iLuy;ne;a1ern,i0lo;elds,nn;ith,n0;ny;a0dEmir,ula,ve;rl;a4e3i1j,ol0;ly;ck,x0;ie;an,ja;i0wn;sy;am,h0liff,rystal;a0in,ristian;mbers,ri0;ty;a4e3i2o,r0ud;an0ook;dy;ll;nedict,rg;k0nks;er;l0rt;fredo,ma\",\"Actor|Verb\":\"true¦aCb8c5doctor,engineAfool,g3host,judge,m2nerd,p1recruit,scout,ushAvolunteAwi0;mp,tneA;arent,ilot;an,ime;eek,oof,r0uide;adu8oom;ha1o0;ach,nscript,ok;mpion,uffeur;o2u0;lly,tch0;er;ss;ddi1ffili0rchite1;ate;ct\",MaleName:\"true¦0:H6;1:FZ;2:DS;3:GQ;4:CZ;5:FV;6:GM;7:FP;8:GW;9:ET;A:C2;B:GD;aF8bE1cCQdBMeASfA1g8Yh88i7Uj6Sk6Bl5Mm48n3So3Ip33qu31r26s1Et0Ru0Ov0CwTxSyHzC;aCor0;cChC1karia,nAT;!hDkC;!aF6;!ar7CeF5;aJevgenBSoEuC;en,rFVsCu3FvEF;if,uf;nDs6OusC;ouf,s6N;aCg;s,tC;an,h0;hli,nCrosE1ss09;is,nC;!iBU;avi2ho5;aPeNiDoCyaEL;jcieBJlfgang,odrFutR;lFnC;f8TsC;lCt1;ow;bGey,frEhe4QlC;aE5iCy;am,e,s;ed8iC;d,ed;eAur;i,ndeD2rn2sC;!l9t1;lDyC;l1ne;lDtC;!er;aCHy;aKernDAiFladDoC;jteB0lodymyr;!iC;mFQsDB;cFha0ktBZnceDrgCOvC;a0ek;!nC;t,zo;!e4StBV;lCnC7sily;!entC;in9J;ghE2lCm70nax,ri,sm0;riCyss87;ch,k;aWeRhNiLoGrEuDyC;!l2roEDs1;n6r6E;avD0eCist0oy,um0;ntCRvBKy;bFdAWmCny;!asDmCoharu;aFFie,y;!z;iA6y;mCt4;!my,othy;adEeoDia0SomC;!as;!dor91;!de4;dFrC;enBKrC;anBJeCy;ll,nBI;!dy;dgh,ha,iCnn2req,tsu5V;cDAka;aYcotWeThPiMlobod0oKpenc2tEurDvenAEyCzym1;ed,lvest2;aj,e9V;anFeDuC;!aA;fan17phEQvCwaA;e77ie;!islaCl9;v,w;lom1rBuC;leymaDHta;dDgmu9UlCm1yabonga;as,v8B;!dhart8Yn9;aEeClo75;lCrm0;d1t1;h9Jne,qu1Jun,wn,yne;aDbastiEDk2Yl5Mpp,rgCth,ymoCU;e1Dio;m4n;!tC;!ie,y;eDPlFmEnCq67tosCMul;dCj2UtiA5;e01ro;!iATkeB6mC4u5;!ik,vato9K;aZeUheC8iRoGuDyC;an,ou;b99dDf4peAssC;!elEG;ol00y;an,bLc7MdJel,geIh0lHmGnEry,sDyC;!ce;ar7Ocoe,s;!aCnBU;ld,n;an,eo;a7Ef;l7Jr;e3Eg2n9olfo,riC;go;bBNeDH;cCl9;ar87c86h54kCo;!ey,ie,y;cFeA3gDid,ubByCza;an8Ln06;g85iC;naC6s;ep;ch8Kfa5hHin2je8HlGmFndEoHpha5sDul,wi36yC;an,mo8O;h9Im4;alDSol3O;iD0on;f,ph;ul;e9CinC;cy,t1;aOeLhilJiFrCyoG;aDeC;m,st1;ka85v2O;eDoC;tr;r8GtC;er,ro;!ipCl6H;!p6U;dCLrcy,tC;ar,e9JrC;!o7;b9Udra8So9UscAHtri62ulCv8I;!ie,o7;ctav6Ji2lImHndrBRrGsDtCum6wB;is,to;aDc6k6m0vCwaBE;al79;ma;i,vR;ar,er;aDeksandr,ivC;er,i2;f,v;aNeLguyBiFoCu3O;aDel,j4l0ma0rC;beAm0;h,m;cFels,g5i9EkDlC;es,s;!au,h96l78olaC;!i,y;hCkCol76;ol75;al,d,il,ls1vC;ilAF;hom,tC;e,hC;anCy;!a5i5;aYeViLoGuDyC;l4Nr1;hamDr84staC;fa,p6E;ed,mG;di10e,hamEis4JntDritz,sCussa;es,he;e,y;ad,ed,mC;ad,ed;cGgu5hai,kFlEnDtchC;!e8O;a9Pik;house,o7t1;ae73eC3ha8Iolaj;ah,hDkC;!ey,y;aDeC;al,l;el,l;hDlv3rC;le,ri8Ev4T;di,met;ay0c00gn4hWjd,ks2NlTmadZnSrKsXtDuric7VxC;imilBKwe8B;eHhEi69tCus,y69;!eo,hCia7;ew,i67;eDiC;as,eu,s;us,w;j,o;cHiGkFlEqu8Qsha83tCv3;iCy;!m,n;in,on;el,o7us;a6Yo7us;!elCin,o7us;!l8o;frAEi5Zny,u5;achDcoCik;lm;ai,y;amDdi,e5VmC;oud;adCm6W;ou;aulCi9P;ay;aWeOiMloyd,oJuDyC;le,nd1;cFdEiDkCth2uk;a7e;gi,s,z;ov7Cv6Hw6H;!as,iC;a6Een;g0nn52renDuCvA4we7D;!iS;!zo;am,n4oC;n5r;a9Yevi,la5KnHoFst2thaEvC;eCi;nte;bo;nCpo8V;!a82el,id;!nC;aAy;mEnd1rDsz73urenCwr6K;ce,t;ry,s;ar,beAont;aOeIhalHiFla4onr63rDu5SylC;e,s;istCzysztof;i0oph2;er0ngsl9p,rC;ilA9k,ollos;ed,id;en0iGnDrmCv4Z;it;!dDnCt1;e2Ny;ri4Z;r,th;cp2j4mEna8BrDsp6them,uC;ri;im,l;al,il;a03eXiVoFuC;an,lCst3;en,iC;an,en,o,us;aQeOhKkub4AnIrGsDzC;ef;eDhCi9Wue;!ua;!f,ph;dCge;i,on;!aCny;h,s,th6J;anDnC;!ath6Hie,n72;!nC;!es;!l,sCy;ph;o,qu3;an,mC;!i,m6V;d,ffFns,rCs4;a7JemDmai7QoCry;me,ni1H;i9Dy;!e73rC;ey,y;cKdBkImHrEsDvi2yC;dBs1;on,p2;ed,oDrCv67;e6Qod;d,s61;al,es5Wis1;a,e,oCub;b,v;ob,qu13;aTbNchiMgLke53lija,nuKonut,rIsEtCv0;ai,suC;ki;aDha0i8XmaCsac;el,il;ac,iaC;h,s;a,vinCw3;!g;k,nngu6X;nac1Xor;ka;ai,rahC;im;aReLoIuCyd6;beAgGmFsC;eyDsC;a3e3;in,n;ber5W;h,o;m2raDsse3wC;a5Pie;c49t1K;a0Qct3XiGnDrC;beAman08;dr7VrC;iCy2N;!k,q1R;n0Tt3S;bKlJmza,nIo,rEsDyC;a5KdB;an,s0;lEo67r2IuCv9;hi5Hki,tC;a,o;an,ey;k,s;!im;ib;a08e00iUlenToQrMuCyorgy;iHnFsC;!taC;f,vC;!e,o;n6tC;er,h2;do,lC;herDlC;auCerQ;me;aEegCov2;!g,orC;!io,y;dy,h7C;dfr9nza3XrDttfC;ri6C;an,d47;!n;acoGlEno,oCuseppe;rgiCvan6O;!o,s;be6Ies,lC;es;mo;oFrC;aDha4HrCt;it,y;ld,rd8;ffErgC;!e7iCy;!os;!r9;bElBrCv3;eCla1Nr4Hth,y;th;e,rC;e3YielC;!i4;aXeSiQlOorrest,rCyod2E;aHedFiC;edDtC;s,z;ri18;!d42eri11riC;ck,k;nCs2;cEkC;ie,lC;in,yn;esLisC;!co,z3M;etch2oC;ri0yd;d5lConn;ip;deriFliEng,rC;dinaCg4nan0B;nd8;pe,x;co;bCdi,hd;iEriC;ce,zC;io;an,en,o;benez2dZfrYit0lTmMnJo3rFsteb0th0ugenEvCymBzra;an,eCge4D;ns,re3K;!e;gi,iDnCrol,v3w3;est8ie,st;cCk;!h,k;o0DriCzo;co,qC;ue;aHerGiDmC;aGe3A;lCrh0;!iC;a10o,s;s1y;nu5;beAd1iEliDm2t1viCwood;n,s;ot28s;!as,j5Hot,sC;ha;a3en;!dGg6mFoDua2QwC;a2Pin;arC;do;oZuZ;ie;a04eTiOmitrNoFrag0uEwDylC;an,l0;ay3Hig4D;a3Gdl9nc0st3;minFnDri0ugCvydGy2S;!lF;!a36nCov0;e1Eie,y;go,iDykC;as;cCk;!k;i,y;armuFetDll1mitri7neCon,rk;sh;er,m6riC;ch;id;andLepak,j0lbeAmetri4nIon,rGsEvDwCxt2;ay30ey;en,in;hawn,moC;nd;ek,riC;ck;is,nC;is,y;rt;re;an,le,mKnIrEvC;e,iC;!d;en,iEne0PrCyl;eCin,yl;l45n;n,o,us;!iCny;el,lo;iCon;an,en,on;a0Fe0Ch03iar0lRoJrFuDyrC;il,us;rtC;!is;aEistC;iaCob12;no;ig;dy,lInErC;ey,neliCy;s,us;nEor,rDstaC;nt3;ad;or;by,e,in,l3t1;aHeEiCyde;fCnt,ve;fo0Xt1;menDt4;us;s,t;rFuDyC;!t1;dCs;e,io;enC;ce;aHeGrisC;!toC;phCs;!eC;!r;st2t;d,rCs;b5leC;s,y;cDdrCs6;ic;il;lHmFrC;ey,lDroCy;ll;!o7t1;er1iC;lo;!eb,v3;a09eZiVjorn,laUoSrEuCyr1;ddy,rtKst2;er;aKeFiEuDyC;an,ce,on;ce,no;an,ce;nDtC;!t;dDtC;!on;an,on;dFnC;dDisC;lav;en,on;!foOl9y;bby,gd0rCyd;is;i0Lke;bElDshC;al;al,lL;ek;nIrCshoi;at,nEtC;!raC;m,nd;aDhaCie;rd;rd8;!iDjam3nCs1;ie,y;to;kaMlazs,nHrC;n9rDtC;!holomew;eCy;tt;ey;dCeD;ar,iC;le;ar1Nb1Dd16fon15gust3hm12i0Zja0Yl0Bm07nTputsiSrGsaFugustEveDyCziz;a0kh0;ry;o,us;hi;aMchiKiJjun,mHnEon,tCy0;em,hCie,ur8;ur;aDoC;!ld;ud,v;aCin;an,nd8;!el,ki;baCe;ld;ta;aq;aMdHgel8tCw6;hoFoC;iDnC;!i8y;ne;ny;er7rCy;eDzC;ej;!as,i,j,s,w;!s;s,tolC;iCy;!y;ar,iEmaCos;nu5r;el;ne,r,t;aVbSdBeJfHiGl01onFphonsEt1vC;aPin;on;e,o;so,zo;!sR;!onZrC;ed;c,jaHksFssaHxC;!andC;er,rC;e,os,u;andCei;ar,er,r;ndC;ro;en;eDrecC;ht;rt8;dd3in,n,sC;taC;ir;ni;dDm6;ar;an,en;ad,eC;d,t;in;so;aGi,olErDvC;ik;ian8;f8ph;!o;mCn;!a;dGeFraDuC;!bakr,lfazl;hCm;am;!l;allFel,oulaye,ulC;!lDrahm0;an;ah,o;ah;av,on\",Uncountable:\"true¦0:2E;1:2L;2:33;a2Ub2Lc29d22e1Rf1Ng1Eh16i11j0Yk0Wl0Rm0Hn0Do0Cp03rZsLt9uran2Jv7w3you gu0E;a5his17i4oo3;d,l;ldlife,ne;rm8t1;apor,ernacul29i3;neg28ol1Otae;eDhBiAo8r4un3yranny;a,gst1B;aff2Oea1Ko4ue nor3;th;o08u3;bleshoot2Ose1Tt;night,othpas1Vwn3;foEsfoE;me off,n;er3und1;e,mod2S;a,nnis;aDcCeBhAi9ki8o7p6t4u3weepstak0;g1Unshi2Hshi;ati08e3;am,el;ace2Keci0;ap,cc1meth2C;n,ttl0;lk;eep,ingl0or1C;lf,na1Gri0;ene1Kisso1C;d0Wfe2l4nd,t3;i0Iurn;m1Ut;abi0e4ic3;e,ke15;c3i01laxa11search;ogni10rea10;a9e8hys7luto,o5re3ut2;amble,mis0s3ten20;en1Zs0L;l3rk;i28l0EyH; 16i28;a24tr0F;nt3ti0M;i0s;bstetri24vercrowd1Qxyg09;a5e4owada3utella;ys;ptu1Ows;il poliZtional securi2;aAe8o5u3;m3s1H;ps;n3o1K;ey,o3;gamy;a3cha0Elancholy,rchandi1Htallurgy;sl0t;chine3g1Aj1Hrs,thema1Q; learn1Cry;aught1e6i5ogi4u3;ck,g12;c,s1M;ce,ghtn18nguis1LteratWv1;ath1isVss;ara0EindergartPn3;icke0Aowled0Y;e3upit1;a3llyfiGwel0G;ns;ce,gnor6mp5n3;forma00ter3;net,sta07;atiSort3rov;an18;a7e6isto09o3ung1;ckey,mework,ne4o3rseradi8spitali2use arrest;ky;s2y;adquarteXre;ir,libut,ppiHs3;hi3te;sh;ene8l6o5r3um,ymnas11;a3eZ;niUss;lf,re;ut3yce0F;en; 3ti0W;edit0Hpo3;ol;aNicFlour,o4urnit3;ure;od,rgive3uri1wl;ness;arCcono0LducaBlectr9n7quip8thi0Pvery6x3;ist4per3;ti0B;en0J;body,o08th07;joy3tertain3;ment;ici2o3;ni0H;tiS;nings,th;emi02i6o4raugh3ynas2;ts;pe,wnstai3;rs;abet0ce,s3;honZrepu3;te;aDelciChAivi07l8o3urrency;al,ld w6mmenta5n3ral,ttIuscoB;fusiHt 3;ed;ry;ar;assi01oth0;es;aos,e3;eMwK;us;d,rO;a8i6lood,owlHread5u3;ntGtt1;er;!th;lliarJs3;on;g3ss;ga3;ge;cKdviJeroGirFmBn6ppeal court,r4spi3thleL;rin;ithmet3sen3;ic;i6y3;o4th3;ing;ne;se;en5n3;es2;ty;ds;craft;bi8d3nau7;yna3;mi6;ce;id,ous3;ti3;cs\",Infinitive:\"true¦0:9G;1:9T;2:AD;3:90;4:9Z;5:84;6:AH;7:A9;8:92;9:A0;A:AG;B:AI;C:9V;D:8R;E:8O;F:97;G:6H;H:7D;a94b8Hc7Jd68e4Zf4Mg4Gh4Ai3Qj3Nk3Kl3Bm34nou48o2Vp2Equ2Dr1Es0CtZuTvRwI;aOeNiLors5rI;eJiI;ng,te;ak,st3;d5e8TthI;draw,er;a2d,ep;i2ke,nIrn;d1t;aIie;liADniAry;nJpI;ho8Llift;cov1dJear8Hfound8DlIplug,rav82tie,ve94;eaAo3X;erIo;cut,go,staAFvalA3w2G;aSeQhNoMrIu73;aIe72;ffi3Smp3nsI;aBfo7CpI;i8oD;pp3ugh5;aJiJrIwaD;eat5i2;nk;aImA0;ch,se;ck3ilor,keImp1r8L;! paD;a0Ic0He0Fh0Bi0Al08mugg3n07o05p02qu01tUuLwI;aJeeIim;p,t5;ll7Wy;bNccMffLggeCmmKppJrI;mouFpa6Zvi2;o0re6Y;ari0on;er,i4;e7Numb;li9KmJsiIveD;de,st;er9it;aMe8MiKrI;ang3eIi2;ng27w;fIng;f5le;b,gg1rI;t3ve;a4AiA;a4UeJit,l7DoI;il,of;ak,nd;lIot7Kw;icEve;atGeak,i0O;aIi6;m,y;ft,ng,t;aKi6CoJriIun;nk,v6Q;ot,rt5;ke,rp5tt1;eIll,nd,que8Gv1w;!k,m;aven9ul8W;dd5tis1Iy;a0FeKiJoI;am,t,ut;d,p5;a0Ab08c06d05f01group,hea00iZjoi4lXmWnVpTq3MsOtMup,vI;amp,eJiIo3B;sEve;l,rI;e,t;i8rI;ie2ofE;eLiKpo8PtIurfa4;o24rI;aHiBuctu8;de,gn,st;mb3nt;el,hra0lIreseF;a4e71;d1ew,o07;aHe3Fo2;a7eFiIo6Jy;e2nq41ve;mbur0nf38;r0t;inKleBocus,rJuI;el,rbiA;aBeA;an4e;aBu4;ei2k8Bla43oIyc3;gni39nci3up,v1;oot,uI;ff;ct,d,liIp;se,ze;tt3viA;aAenGit,o7;aWerUinpoiFlumm1LoTrLuI;b47ke,niArIt;poDsuI;aFe;eMoI;cKd,fe4XhibEmo7noJpo0sp1tru6vI;e,i6o5L;un4;la3Nu8;aGclu6dJf1occupy,sup0JvI;a6BeF;etermi4TiB;aGllu7rtr5Ksse4Q;cei2fo4NiAmea7plex,sIva6;eve8iCua6;mp1rItrol,ve;a6It6E;bOccuNmEpMutLverIwe;l07sJtu6Yu0wI;helm;ee,h1F;gr5Cnu2Cpa4;era7i4Ipo0;py,r;ey,seItaH;r2ss;aMe0ViJoIultiply;leCu6Pw;micJnIspla4;ce,g3us;!k;iIke,na9;m,ntaH;aPeLiIo0u3N;ke,ng1quIv5;eIi6S;fy;aKnIss5;d,gI;th5;rn,ve;ng2Gu1N;eep,idnJnI;e4Cow;ap;oHuI;gg3xtaI;po0;gno8mVnIrk;cTdRfQgeChPitia7ju8q1CsNtKun6EvI;a6eIo11;nt,rt,st;erJimi6BoxiPrI;odu4u6;aBn,pr03ru6C;iCpi8tIu8;all,il,ruB;abEibE;eCo3Eu0;iIul9;ca7;i7lu6;b5Xmer0pI;aLer4Uin9ly,oJrI;e3Ais6Bo2;rt,se,veI;riA;le,rt;aLeKiIoiCuD;de,jaInd1;ck;ar,iT;mp1ng,pp5raIve;ng5Mss;ath1et,iMle27oLrI;aJeIow;et;b,pp3ze;!ve5A;gg3ve;aTer45i5RlSorMrJuI;lf4Cndrai0r48;eJiIolic;ght5;e0Qsh5;b3XeLfeEgJsI;a3Dee;eIi2;!t;clo0go,shIwa4Z;ad3F;att1ee,i36;lt1st5;a0OdEl0Mm0FnXquip,rWsVtGvTxI;aRcPeDhOiNpJtIu6;ing0Yol;eKi8lIo0un9;aHoI;it,re;ct,di7l;st,t;a3oDu3B;e30lI;a10u6;lt,mi28;alua7oI;ke,l2;chew,pou0tab19;a0u4U;aYcVdTfSgQhan4joy,lPqOrNsuMtKvI;e0YisI;a9i50;er,i4rI;aHenGuC;e,re;iGol0F;ui8;ar9iC;a9eIra2ulf;nd1;or4;ang1oIu8;r0w;irc3lo0ou0ErJuI;mb1;oaGy4D;b3ct;bKer9pI;hasiIow1;ze;aKody,rI;a4oiI;d1l;lm,rk;ap0eBuI;ci40de;rIt;ma0Rn;a0Re04iKo,rIwind3;aw,ed9oI;wn;agno0e,ff1g,mi2Kne,sLvI;eIul9;rIst;ge,t;aWbVcQlod9mant3pNru3TsMtI;iIoDu37;lJngI;uiA;!l;ol2ua6;eJlIo0ro2;a4ea0;n0r0;a2Xe36lKoIu0S;uIv1;ra9;aIo0;im;a3Kur0;b3rm;af5b01cVduBep5fUliTmQnOpMrLsiCtaGvI;eIol2;lop;ch;a20i2;aDiBloIoD;re,y;oIy;te,un4;eJoI;liA;an;mEv1;a4i0Ao06raud,y;ei2iMla8oKrI;ee,yI;!pt;de,mIup3;missi34po0;de,ma7ph1;aJrief,uI;g,nk;rk;mp5rk5uF;a0Dea0h0Ai09l08oKrIurta1G;a2ea7ipp3uI;mb3;ales4e04habEinci6ll03m00nIrro6;cXdUfQju8no7qu1sLtKvI;eIin4;ne,r9y;aHin2Bribu7;er2iLoli2Epi8tJuI;lt,me;itu7raH;in;d1st;eKiJoIroFu0;rm;de,gu8rm;ss;eJoI;ne;mn,n0;eIlu6ur;al,i2;buCe,men4pI;eIi3ly;l,te;eBi6u6;r4xiC;ean0iT;rcumveFte;eJirp,oI;o0p;riAw;ncIre5t1ulk;el;a02eSi6lQoPrKuI;iXrIy;st,y;aLeaKiJoad5;en;ng;stfeLtX;ke;il,l11mba0WrrMth1;eIow;ed;!coQfrie1LgPhMliLqueaKstJtrIwild1;ay;ow;th;e2tt3;a2eJoI;ld;ad;!in,ui3;me;bysEckfi8ff3tI;he;b15c0Rd0Iff0Ggree,l0Cm09n03ppZrXsQttOuMvJwaE;it;eDoI;id;rt;gIto0X;meF;aIeCraB;ch,in;pi8sJtoI;niA;aKeIi04u8;mb3rt,ss;le;il;re;g0Hi0ou0rI;an9i2;eaKly,oiFrI;ai0o2;nt;r,se;aMi0GnJtI;icipa7;eJoIul;un4y;al;ly0;aJu0;se;lga08ze;iKlI;e9oIu6;t,w;gn;ix,oI;rd;a03jNmiKoJsoI;rb;pt,rn;niIt;st1;er;ouJuC;st;rn;cLhie2knowled9quiItiva7;es4re;ce;ge;eQliOoKrJusI;e,tom;ue;mIst;moJpI;any,liA;da7;ma7;te;pt;andPduBet,i6oKsI;coKol2;ve;liArt,uI;nd;sh;de;ct;on\",Person:\"true¦0:1Q;a29b1Zc1Md1Ee18f15g13h0Ri0Qj0Nk0Jl0Gm09n06o05p00rPsItCusain bolt,v9w4xzibit,y1;anni,oko on2uji,v1;an,es;en,o;a3ednesday adams,i2o1;lfram,o0Q;ll ferrell,z khalifa;lt disn1Qr1;hol,r0G;a2i1oltai06;n dies0Zrginia wo17;lentino rossi,n goG;a4h3i2ripp,u1yra banks;lZpac shakur;ger woods,mba07;eresa may,or;kashi,t1ylor;um,ya1B;a5carlett johanss0h4i3lobodan milosevic,no2ocr1Lpider1uperm0Fwami; m0Em0E;op dogg,w whi1H;egfried,nbad;akespeaTerlock holm1Sia labeouf;ddam hussa16nt1;a cla11ig9;aAe6i5o3u1za;mi,n dmc,paul,sh limbau1;gh;bin hood,d stew16nald1thko;in0Mo;han0Yngo starr,valdo;ese witherspo0i1mbrandt;ll2nh1;old;ey,y;chmaninoff,ffi,iJshid,y roma1H;a4e3i2la16o1uff daddy;cahont0Ie;lar,p19;le,rZ;lm17ris hilt0;leg,prah winfr0Sra;a2e1iles cra1Bostradam0J; yo,l5tt06wmQ;pole0s;a5e4i2o1ubar03;by,lie5net,rriss0N;randa ju1tt romn0M;ly;rl0GssiaB;cklemo1rkov,s0ta hari,ya angelou;re;ady gaga,e1ibera0Pu;bron jam0Xch wale1e;sa;anye west,e3i1obe bryant;d cudi,efer suther1;la0P;ats,sha;a2effers0fk,k rowling,rr tolki1;en;ck the ripp0Mwaharlal nehru,y z;liTnez,ron m7;a7e5i3u1;lk hog5mphrey1sa01;! bog05;l1tl0H;de; m1dwig,nry 4;an;ile selassFlle ber4m3rrison1;! 1;ford;id,mo09;ry;ast0iannis,o1;odwPtye;ergus0lorence nightinga08r1;an1ederic chopN;s,z;ff5m2nya,ustaXzeki1;el;eril lagasse,i1;le zatop1nem;ek;ie;a6e4i2octor w1rake;ho;ck w1ego maradoC;olf;g1mi lovaOnzel washingt0;as;l1nHrth vadR;ai lNt0;a8h5lint0o1thulhu;n1olio;an,fuci1;us;on;aucKop2ristian baMy1;na;in;millo,ptain beefhe4r1;dinal wols2son1;! palmF;ey;art;a8e5hatt,i3oHro1;ck,n1;te;ll g1ng crosby;atB;ck,nazir bhut2rtil,yon1;ce;to;nksy,rack ob1;ama;l 6r3shton kutch2vril lavig8yn ra1;nd;er;chimed2istot1;le;es;capo2paci1;no;ne\",Adjective:\"true¦0:AI;1:BS;2:BI;3:BA;4:A8;5:84;6:AV;7:AN;8:AF;9:7H;A:BQ;B:AY;C:BC;D:BH;E:9Y;aA2b9Ec8Fd7We79f6Ng6Eh61i4Xj4Wk4Tl4Im41n3Po36p2Oquart7Pr2Ds1Dt14uSvOwFye29;aMeKhIiHoF;man5oFrth7G;dADzy;despreB1n w97s86;acked1UoleF;!sa6;ather1PeFll o70ste1D;!k5;nt1Ist6Ate4;aHeGiFola5T;bBUce versa,gi3Lle;ng67rsa5R;ca1gBSluAV;lt0PnLpHrGsFttermoBL;ef9Ku3;b96ge1; Hb32pGsFtiAH;ca6ide d4R;er,i85;f52to da2;a0Fbeco0Hc0Bd04e02f01gu1XheaBGiXkn4OmUnTopp06pRrNsJtHus0wF;aFiel3K;nt0rra0P;app0eXoF;ld,uS;eHi37o5ApGuF;perv06spec39;e1ok9O;en,ttl0;eFu5;cogn06gul2RlGqu84sF;erv0olv0;at0en33;aFrecede0E;id,rallel0;am0otic0;aFet;rri0tF;ch0;nFq26vers3;sur0terFv7U;eFrupt0;st0;air,inish0orese98;mploy0n7Ov97xpF;ect0lain0;eHisFocume01ue;clFput0;os0;cid0rF;!a8Scov9ha8Jlyi8nea8Gprivileg0sMwF;aFei9I;t9y;hGircumcFonvin2U;is0;aFeck0;lleng0rt0;b20ppea85ssuGttend0uthorF;iz0;mi8;i4Ara;aLeIhoHip 25oGrF;anspare1encha1i2;geth9leADp notch,rpB;rny,ugh6H;ena8DmpGrFs6U;r49tia4;eCo8P;leFst4M;nt0;a0Dc09e07h06i04ki03l01mug,nobbi4XoVpRqueami4XtKuFymb94;bHccinAi generis,pFr5;erFre7N;! dup9b,vi70;du0li7Lp6IsFurb7J;eq9Atanda9X;aKeJi16o2QrGubboFy4Q;rn;aightFin5GungS; fFfF;or7V;adfa9Pri6;lwa6Ftu82;arHeGir6NlendBot Fry;on;c3Qe1S;k5se; call0lImb9phistic16rHuFviV;ndFth1B;proof;dBry;dFub6; o2A;e60ipF;pe4shod;ll0n d7R;g2HnF;ceEg6ist9;am3Se9;co1Zem5lfFn6Are7; suf4Xi43;aGholFient3A;ar5;rlFt4A;et;cr0me,tisfac7F;aOeIheumatoBiGoF;bu8Ztt7Gy3;ghtFv3; 1Sf6X;cJdu8PlInown0pro69sGtF;ard0;is47oF;lu2na1;e1Suc45;alcit8Xe1ondi2;bBci3mpa1;aSePicayu7laOoNrGuF;bl7Tnjabi;eKiIoF;b7VfGmi49pFxi2M;er,ort81;a7uD;maFor,sti7va2;!ry;ciDexis0Ima2CpaB;in55puli8G;cBid;ac2Ynt 3IrFti2;ma40tFv7W;!i3Z;i2YrFss7R;anoBtF; 5XiF;al,s5V;bSffQkPld OnMrLth9utKverF;!aIbMdHhGni75seas,t,wF;ei74rou74;a63e7A;ue;ll;do1Ger,si6A;d3Qg2Aotu5Z; bFbFe on o7g3Uli7;oa80;fashion0school;!ay; gua7XbFha5Uli7;eat;eHligGsF;ce7er0So1C;at0;diFse;a1e1;aOeNiMoGuF;anc0de; moEnHrthFt6V;!eFwe7L;a7Krn;chaGdescri7Iprof30sF;top;la1;ght5;arby,cessa4ighbor5wlyw0xt;k0usiaFv3;ti8;aQeNiLoHuF;dIltiF;facet0p6;deHlGnFot,rbBst;ochro4Xth5;dy;rn,st;ddle ag0nF;dbloZi,or;ag9diocEga,naGrFtropolit4Q;e,ry;ci8;cIgenta,inHj0Fkeshift,mmGnFri4Oscu61ver18;da5Dy;ali4Lo4U;!stream;abEho;aOeLiIoFumberi8;ngFuti1R;stan3RtF;erm,i4H;ghtGteraF;l,ry,te;heart0wei5O;ft JgFss9th3;al,eFi0M;nda4;nguBps0te5;apGind5noF;wi8;ut;ad0itte4uniW;ce co0Hgno6Mll0Cm04nHpso 2UrF;a2releF;va1; ZaYcoWdReQfOgrNhibi4Ri05nMoLsHtFvalu5M;aAeF;nDrdepe2K;a7iGolFuboI;ub6ve1;de,gF;nifica1;rdi5N;a2er;own;eriIiLluenVrF;ar0eq5H;pt,rt;eHiGoFul1O;or;e,reA;fiFpe26termi5E;ni2;mpFnsideCrreA;le2;ccuCdeq5Ene,ppr4J;fFsitu,vitro;ro1;mJpF;arHeGl15oFrop9;li2r11;n2LrfeA;ti3;aGeFi18;d4BnD;tuE;egGiF;c0YteC;al,iF;tiF;ma2;ld;aOelNiLoFuma7;a4meInHrrGsFur5;ti6;if4E;e58o3U; ma3GsF;ick;ghfalut2HspF;an49;li00pf33;i4llow0ndGrdFtM; 05coEworki8;sy,y;aLener44iga3Blob3oKrGuF;il1Nng ho;aFea1Fizzl0;cGtF;ef2Vis;ef2U;ld3Aod;iFuc2D;nf2R;aVeSiQlOoJrF;aGeFil5ug3;q43tf2O;gFnt3S;i6ra1;lk13oHrF; keeps,eFge0Vm9tu41;g0Ei2Ds3R;liF;sh;ag4Mowe4uF;e1or45;e4nF;al,i2;d Gmini7rF;ti6ve1;up;bl0lDmIr Fst pac0ux;oGreacF;hi8;ff;ed,ili0R;aXfVlTmQnOqu3rMthere3veryday,xF;aApIquisi2traHuF;be48lF;ta1;!va2L;edRlF;icF;it;eAstF;whi6; Famor0ough,tiE;rou2sui2;erGiF;ne1;ge1;dFe2Aoq34;er5;ficF;ie1;g9sF;t,ygF;oi8;er;aWeMiHoGrFue;ea4owY;ci6mina1ne,r31ti8ubQ;dact2Jfficult,m,sGverF;ge1se;creGePjoi1paCtF;a1inA;et,te; Nadp0WceMfiLgeneCliJmuEpeIreliAsGvoF;id,ut;pFtitu2ul1L;eCoF;nde1;ca2ghF;tf13;a1ni2;as0;facto;i5ngero0I;ar0Ce09h07i06l05oOrIuF;rmudgeon5stoma4teF;sy;ly;aIeHu1EystalF; cleFli7;ar;epy;fFv17z0;ty;erUgTloSmPnGrpoCunterclVveFy;rt;cLdJgr21jIsHtrF;aFi2;dic0Yry;eq1Yta1;oi1ug3;escenFuN;di8;a1QeFiD;it0;atoDmensuCpF;ass1SulF;so4;ni3ss3;e1niza1;ci1J;ockwiD;rcumspeAvil;eFintzy;e4wy;leGrtaF;in;ba2;diac,ef00;a00ePiLliJoGrFuck nak0;and new,isk,on22;gGldface,naF; fi05fi05;us;nd,tF;he;gGpartisFzarE;an;tiF;me;autifOhiNlLnHsFyoN;iWtselF;li8;eGiFt;gn;aFfi03;th;at0oF;v0w;nd;ul;ckwards,rF;e,rT; priori,b13c0Zd0Tf0Ng0Ihe0Hl09mp6nt06pZrTsQttracti0MuLvIwF;aGkF;wa1B;ke,re;ant garGeraF;ge;de;diIsteEtF;heFoimmu7;nt07;re;to4;hGlFtu2;eep;en;bitIchiv3roHtF;ifiFsy;ci3;ga1;ra4;ry;pFt;aHetizi8rF;oprF;ia2;llFre1;ed,i8;ng;iquFsy;at0e;ed;cohKiJkaHl,oGriFterX;ght;ne,of;li7;ne;ke,ve;olF;ic;ad;ain07gressiIi6rF;eeF;ab6;le;ve;fGraB;id;ectGlF;ue1;ioF;na2; JaIeGvF;erD;pt,qF;ua2;ma1;hoc,infinitum;cuCquiGtu3u2;al;esce1;ra2;erSjeAlPoNrKsGuF;nda1;e1olu2trF;aAuD;se;te;eaGuF;pt;st;aFve;rd;aFe;ze;ct;ra1;nt\",Pronoun:\"true¦elle,h3i2me,she,th0us,we,you;e0ou;e,m,y;!l,t;e,im\",Preposition:\"true¦aPbMcLdKexcept,fIinGmid,notwithstandiWoDpXqua,sCt7u4v2w0;/o,hereSith0;! whHin,oW;ersus,i0;a,s a vis;n1p0;!on;like,til;h1ill,oward0;!s;an,ereby,r0;ough0u;!oM;ans,ince,o that,uch G;f1n0ut;!to;!f;! 0to;effect,part;or,r0;om;espite,own,u3;hez,irca;ar1e0oBy;sides,tween;ri7;bo8cross,ft7lo6m4propos,round,s1t0;!op;! 0;a whole,long 0;as;id0ong0;!st;ng;er;ut\",SportsTeam:\"true¦0:18;1:1E;2:1D;3:14;a1Db15c0Sd0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Am01new UoRpKqueens parkJreal salt lake,sBt6utah jazz,vancouver whitecaps,w4yW;ashington 4h10;natio1Mredski2wizar0W;ampa bay 7e6o4;ronto 4ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasD;buccanee0ra0K;a8eattle 6porting kansas0Wt4; louis 4oke0V;c1Drams;marine0s4;eah13ounH;cramento Rn 4;antonio spu0diego 4francisco gJjose earthquak1;char08paB; ran07;a9h6ittsburgh 5ortland t4;imbe0rail blaze0;pirat1steele0;il4oenix su2;adelphia 4li1;eagl1philNunE;dr1;akland 4klahoma city thunder,rlando magic;athle0Lrai4;de0;england 8orleans 7york 4;g5je3knYme3red bul0Xy4;anke1;ian3;pelica2sain3;patrio3revolut4;ion;anchEeAi4ontreal impact;ami 8lwaukee b7nnesota 4;t5vi4;kings;imberwolv1wi2;rewe0uc0J;dolphi2heat,marli2;mphis grizz4ts;li1;a6eic5os angeles 4;clippe0dodFlaB;esterV; galaxy,ke0;ansas city 4nF;chiefs,roya0D; pace0polis col3;astr05dynamo,rocke3texa2;olden state warrio0reen bay pac4;ke0;allas 8e4i04od6;nver 6troit 4;lio2pisto2ti4;ge0;broncYnugge3;cowbo5maver4;icZ;ys;arEelLhAincinnati 8leveland 6ol4;orado r4umbus crew sc;api7ocki1;brow2cavalie0guar4in4;dia2;bengaVre4;ds;arlotte horAicago 4;b5cubs,fire,wh4;iteB;ea0ulQ;diff4olina panthe0; city;altimore Alackburn rove0oston 6rooklyn 4uffalo bilN;ne3;ts;cel5red4; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 4;brav1falco2h4;awA;ns;es;on villa,r4;os;c6di4;amondbac4;ks;ardi4;na4;ls\",Unit:\"true¦a07b04cXdWexVfTgRhePinYjoule0BkMlJmDnan08oCp9quart0Bsq ft,t7volts,w6y2ze3°1µ0;g,s;c,f,n;dVear1o0;ttR; 0s 0;old;att,b;erNon0;!ne02;ascals,e1i0;cXnt00;rcent,tJ;hms,unceY;/s,e4i0m²,²,³;/h,cro2l0;e0liK;!²;grLsR;gCtJ;it1u0;menQx;erPreP;b5elvins,ilo1m0notO;/h,ph,²;!byGgrEmCs;ct0rtzL;aJogrC;allonJb0ig3rB;ps;a0emtEl oz,t4;hrenheit,radG;aby9;eci3m1;aratDe1m0oulombD;²,³;lsius,nti0;gr2lit1m0;et0;er8;am7;b1y0;te5;l,ps;c2tt0;os0;econd1;re0;!s\",\"Noun|Gerund\":\"true¦0:3O;1:3M;2:3N;3:3D;4:32;5:2V;6:3E;7:3K;8:36;9:3J;A:3B;a3Pb37c2Jd27e23f1Vg1Sh1Mi1Ij1Gk1Dl18m13n11o0Wp0Pques0Sr0EsTtNunderMvKwFyDzB;eroi0oB;ni0o3P;aw2eB;ar2l3;aEed4hispe5i5oCrB;ap8est3i1;n0ErB;ki0r31;i1r2s9tc9;isualizi0oB;lunt1Vti0;stan4ta6;aFeDhin6iCraBy8;c6di0i2vel1M;mi0p8;aBs1;c9si0;l6n2s1;aUcReQhOiMkatKl2Wmo6nowJpeItFuCwB;ea5im37;b35f0FrB;fi0vB;e2Mi2J;aAoryt1KrCuB;d2KfS;etc9ugg3;l3n4;bCi0;ebBi0;oar4;gnBnAt1;a3i0;ip8oB;p8rte2u1;a1r27t1;hCo5reBulp1;a2Qe2;edu3oo3;i3yi0;aKeEi4oCuB;li0n2;oBwi0;fi0;aFcEhear7laxi0nDpor1sB;pon4tructB;r2Iu5;de5;or4yc3;di0so2;p8ti0;aFeacek20laEoCrBublis9;a1Teten4in1oces7;iso2siB;tio2;n2yi0;ckaAin1rB;ki0t1O;fEpeDrganiCvB;erco24ula1;si0zi0;ni0ra1;fe5;avi0QeBur7;gotia1twor6;aDeCi2oB;de3nito5;a2dita1e1ssaA;int0XnBrke1;ifUufactu5;aEeaDiBodAyi0;cen7f1mi1stB;e2i0;r2si0;n4ug9;iCnB;ea4it1;c6l3;ogAuB;dAgg3stif12;ci0llust0VmDnBro2;nova1sp0NterBven1;ac1vie02;agi2plo4;aDea1iCoBun1;l4w3;ki0ri0;nd3rB;roWvB;es1;aCene0Lli4rBui4;ee1ie0N;rde2the5;aHeGiDlCorBros1un4;e0Pmat1;ir1oo4;gh1lCnBs9;anZdi0;i0li0;e3nX;r0Zscina1;a1du01nCxB;erci7plo5;chan1di0ginB;ee5;aLeHiGoub1rCum8wB;el3;aDeCiB;bb3n6vi0;a0Qs7;wi0;rTscoDvi0;ba1coZlBvelo8;eCiB;ve5;ga1;nGti0;aVelebUhSlPoDrBur3yc3;aBos7yi0;f1w3;aLdi0lJmFnBo6pi0ve5;dDsCvinB;ci0;trBul1;uc1;muniDpB;lBo7;ai2;ca1;lBo5;ec1;c9ti0;ap8eaCimToBubT;ni0t9;ni0ri0;aBee5;n1t1;ra1;m8rCs1te5;ri0;vi0;aPeNitMlLoGrDuB;dge1il4llBr8;yi0;an4eat9oadB;cas1;di0;a1mEokB;i0kB;ee8;pi0;bi0;es7oa1;c9i0;gin2lonAt1;gi0;bysit1c6ki0tt3;li0;ki0;bando2cGdverti7gi0pproac9rgDssuCtB;trac1;mi0;ui0;hi0;si0;coun1ti0;ti0;ni0;ng\",PhrasalVerb:\"true¦0:92;1:96;2:8H;3:8V;4:8A;5:83;6:85;7:98;8:90;9:8G;A:8X;B:8R;C:8U;D:8S;E:70;F:97;G:8Y;H:81;I:7H;J:79;a9Fb7Uc6Rd6Le6Jf5Ig50h4Biron0j47k40l3Em31n2Yo2Wp2Cquiet Hr1Xs0KtZuXvacuu6QwNyammerBzK;ero Dip LonK;e0k0;by,ov9up;aQeMhLiKor0Mrit19;mp0n3Fpe0r5s5;ackAeel Di0S;aLiKn33;gh 3Wrd0;n Dr K;do1in,oJ;it 79k5lk Lrm 69sh Kt83v60;aw3do1o7up;aw3in,oC;rgeBsK;e 2herE;a00eYhViRoQrMuKypP;ckErn K;do1in,oJup;aLiKot0y 30;ckl7Zp F;ck HdK;e 5Y;n7Wp 3Es5K;ck MdLe Kghten 6me0p o0Rre0;aw3ba4do1in,up;e Iy 2;by,oG;ink Lrow K;aw3ba4in,up;ba4ov9up;aKe 77ll62;m 2r 5M;ckBke Llk K;ov9shit,u47;aKba4do1in,leave,o4Dup;ba4ft9pa69w3;a0Vc0Te0Mh0Ii0Fl09m08n07o06p01quar5GtQuOwK;earMiK;ngLtch K;aw3ba4o8K; by;cKi6Bm 2ss0;k 64;aReQiPoNrKud35;aigh2Det75iK;ke 7Sng K;al6Yup;p Krm2F;by,in,oG;c3Ln3Lr 2tc4O;p F;c3Jmp0nd LrKveAy 2O;e Ht 2L;ba4do1up;ar3GeNiMlLrKurB;ead0ingBuc5;a49it 6H;c5ll o3Cn 2;ak Fe1Xll0;a3Bber 2rt0und like;ap 5Vow Duggl5;ash 6Noke0;eep NiKow 6;cLp K;o6Dup;e 68;in,oK;ff,v9;de19gn 4NnKt 6Gz5;gKkE; al6Ale0;aMoKu5W;ot Kut0w 7M;aw3ba4f48oC;c2WdeEk6EveA;e Pll1Nnd Orv5tK; Ktl5J;do1foLin,o7upK;!on;ot,r5Z;aw3ba4do1in,o33up;oCto;al66out0rK;ap65ew 6J;ilAv5;aXeUiSoOuK;b 5Yle0n Kstl5;aLba4do1inKo2Ith4Nu5P;!to;c2Xr8w3;ll Mot LpeAuK;g3Ind17;a2Wf3Po7;ar8in,o7up;ng 68p oKs5;ff,p18;aKelAinEnt0;c6Hd K;o4Dup;c27t0;aZeYiWlToQrOsyc35uK;ll Mn5Kt K;aKba4do1in,oJto47up;pa4Dw3;a3Jdo1in,o21to45up;attleBess KiNop 2;ah2Fon;iLp Kr4Zu1Gwer 6N;do1in,o6Nup;nt0;aLuK;gEmp 6;ce u20y 6D;ck Kg0le 4An 6p5B;oJup;el 5NncilE;c53ir 39n0ss MtLy K;ba4oG; Hc2R;aw3ba4in,oJ;pKw4Y;e4Xt D;aLerd0oK;dAt53;il Hrrow H;aTeQiPoLuK;ddl5ll I;c1FnkeyMp 6uthAve K;aKdo1in,o4Lup;l4Nw3; wi4K;ss0x 2;asur5e3SlLss K;a21up;t 6;ke Ln 6rKs2Ax0;k 6ryA;do,fun,oCsure,up;a02eViQoLuK;ck0st I;aNc4Fg MoKse0;k Kse4D;aft9ba4do1forw37in56o0Zu46;in,oJ;d 6;e NghtMnLsKve 00;ten F;e 2k 2; 2e46;ar8do1in;aMt LvelK; oC;do1go,in,o7up;nEve K;in,oK;pKut;en;c5p 2sh LtchBughAy K;do1o59;in4Po7;eMick Lnock K;do1oCup;oCup;eLy K;in,up;l Ip K;aw3ba4do1f04in,oJto,up;aMoLuK;ic5mpE;ke3St H;c43zz 2;a01eWiToPuK;nLrrKsh 6;y 2;keLt K;ar8do1;r H;lKneErse3K;d Ke 2;ba4dKfast,o0Cup;ear,o1;de Lt K;ba4on,up;aw3o7;aKlp0;d Ml Ir Kt 2;fKof;rom;f11in,o03uW;cPm 2nLsh0ve Kz2P;at,it,to;d Lg KkerP;do1in,o2Tup;do1in,oK;ut,v9;k 2;aZeTive Rloss IoMrLunK; f0S;ab hold,in43ow 2U; Kof 2I;aMb1Mit,oLr8th1IuK;nd9;ff,n,v9;bo7ft9hQw3;aw3bKdo1in,oJrise,up,w3;a4ir2H;ar 6ek0t K;aLb1Fdo1in,oKr8up;ff,n,ut,v9;cLhKl2Fr8t,w3;ead;ross;d aKng 2;bo7;a0Ee07iYlUoQrMuK;ck Ke2N;ar8up;eLighten KownBy 2;aw3oG;eKshe27; 2z5;g 2lMol Krk I;aKwi20;bo7r8;d 6low 2;aLeKip0;sh0;g 6ke0mKrKtten H;e F;gRlPnNrLsKzzle0;h F;e Km 2;aw3ba4up;d0isK;h 2;e Kl 1T;aw3fPin,o7;ht ba4ure0;ePnLsK;s 2;cMd K;fKoG;or;e D;d04l 2;cNll Krm0t1G;aLbKdo1in,o09sho0Eth08victim;a4ehi2O;pa0C;e K;do1oGup;at Kdge0nd 12y5;in,o7up;aOi1HoNrK;aLess 6op KuN;aw3b03in,oC;gBwB; Ile0ubl1B;m 2;a0Ah05l02oOrLut K;aw3ba4do1oCup;ackBeep LoKy0;ss Dwd0;by,do1in,o0Uup;me NoLuntK; o2A;k 6l K;do1oG;aRbQforOin,oNtKu0O;hLoKrue;geth9;rough;ff,ut,v9;th,wK;ard;a4y;paKr8w3;rt;eaLose K;in,oCup;n 6r F;aNeLiK;ll0pE;ck Der Kw F;on,up;t 2;lRncel0rOsMtch LveE; in;o1Nup;h Dt K;doubt,oG;ry LvK;e 08;aw3oJ;l Km H;aLba4do1oJup;ff,n,ut;r8w3;a0Ve0MiteAl0Fo04rQuK;bblNckl05il0Dlk 6ndl05rLsKtMy FzzA;t 00;n 0HsK;t D;e I;ov9;anWeaUiLush K;oGup;ghQng K;aNba4do1forMin,oLuK;nd9p;n,ut;th;bo7lKr8w3;ong;teK;n 2;k K;do1in,o7up;ch0;arTg 6iRn5oPrNssMttlLunce Kx D;aw3ba4;e 6; ar8;e H;do1;k Dt 2;e 2;l 6;do1up;d 2;aPeed0oKurt0;cMw K;aw3ba4do1o7up;ck;k K;in,oC;ck0nk0stA; oQaNef 2lt0nd K;do1ov9up;er;up;r Lt K;do1in,oCup;do1o7;ff,nK;to;ck Pil0nMrgLsK;h D;ainBe D;g DkB; on;in,o7;aw3do1in,oCup;ff,ut;ay;ct FdQir0sk MuctionA; oG;ff;ar8o7;ouK;nd; o7;d K;do1oKup;ff,n;wn;o7up;ut\",ProperNoun:\"true¦aIbDc8dalhousHe7f5gosford,h4iron maiden,kirby,landsdowne,m2nis,r1s0wembF;herwood,paldiB;iel,othwe1;cgi0ercedes,issy;ll;intBudsB;airview,lorence,ra0;mpt9nco;lmo,uro;a1h0;arlt6es5risti;rl0talina;et4i0;ng;arb3e0;et1nt0rke0;ley;on;ie;bid,jax\",\"Person|Place\":\"true¦a8d6h4jordan,k3orlando,s1vi0;ctor9rgin9;a0ydney;lvador,mara,ntia4;ent,obe;amil0ous0;ton;arw2ie0;go;lexandr1ust0;in;ia\",LastName:\"true¦0:BR;1:BF;2:B5;3:BH;4:AX;5:9Y;6:B6;7:BK;8:B0;9:AV;A:AL;B:8Q;C:8G;D:7K;E:BM;F:AH;aBDb9Zc8Wd88e81f7Kg6Wh64i60j5Lk4Vl4Dm39n2Wo2Op25quispe,r1Ls0Pt0Ev03wTxSyKzG;aIhGimmerm6A;aGou,u;ng,o;khar5ytsE;aKeun9BiHoGun;koya32shiBU;!lG;diGmaz;rim,z;maGng;da,g52mo83sGzaC;aChiBV;iao,u;aLeJiHoGright,u;jcA5lff,ng;lGmm0nkl0sniewsC;kiB1liams33s3;bGiss,lt0;b,er,st0;a6Vgn0lHtG;anabe,s3;k0sh,tG;e2Non;aLeKiHoGukD;gt,lk5roby5;dHllalGnogr3Kr1Css0val3S;ba,ob1W;al,ov4;lasHsel8W;lJn dIrgBEsHzG;qu7;ilyEqu7siljE;en b6Aijk,yk;enzueAIverde;aPeix1VhKi2j8ka43oJrIsui,uG;om5UrG;c2n0un1;an,emblA7ynisC;dorAMlst3Km4rrAth;atch0i8UoG;mHrG;are84laci79;ps3sG;en,on;hirDkah9Mnaka,te,varA;a06ch01eYhUiRmOoMtIuHvGzabo;en9Jobod3N;ar7bot4lliv2zuC;aIeHoG;i7Bj4AyanAB;ele,in2FpheBvens25;l8rm0;kol5lovy5re7Tsa,to,uG;ng,sa;iGy72;rn5tG;!h;l71mHnGrbu;at9cla9Egh;moBo7M;aIeGimizu;hu,vchG;en8Luk;la,r1G;gu9infe5YmGoh,pulveA7rra5P;jGyG;on5;evi6iltz,miHneid0roed0uGwarz;be3Elz;dHtG;!t,z;!t;ar4Th8ito,ka4OlJnGr4saCto,unde19v4;ch7dHtGz;a5Le,os;b53e16;as,ihDm4Po0Y;aVeSiPoJuHyG;a6oo,u;bio,iz,sG;so,u;bKc8Fdrigue67ge10j9YmJosevelt,sItHux,wG;e,li6;a9Ch;enb4Usi;a54e4L;erts15i93;bei4JcHes,vGzzo;as,e9;ci,hards12;ag2es,iHut0yG;es,nol5N;s,t0;dImHnGsmu97v6C;tan1;ir7os;ic,u;aUeOhMiJoHrGut8;asad,if6Zochazk27;lishc2GpGrti72u10we76;e3Aov51;cHe45nG;as,to;as70hl0;aGillips;k,m,n6I;a3Hde3Wete0Bna,rJtG;ersHrovGters54;!a,ic;!en,on;eGic,kiBss3;i9ra,tz,z;h86k,padopoulIrk0tHvG;ic,l4N;el,te39;os;bMconn2Ag2TlJnei6PrHsbor6XweBzG;dem7Rturk;ella4DtGwe6N;ega,iz;iGof7Hs8I;vGyn1R;ei9;aSri1;aPeNiJoGune50ym2;rHvGwak;ak4Qik5otn66;odahl,r4S;cholsZeHkolGls4Jx3;ic,ov84;ls1miG;!n1;ils3mG;co4Xec;gy,kaGray2sh,var38;jiGmu9shiG;ma;a07c04eZiWoMuHyeG;rs;lJnIrGssoli6S;atGp03r7C;i,ov4;oz,te58;d0l0;h2lOnNo0RrHsGza1A;er,s;aKeJiIoz5risHtG;e56on;!on;!n7K;au,i9no,t5J;!lA;r1Btgome59;i3El0;cracFhhail5kkeHlG;l0os64;ls1;hmeJiIj30lHn3Krci0ssiGyer2N;!er;n0Po;er,j0;dDti;cartHlG;aughl8e2;hy;dQe7Egnu68i0jer3TkPmNnMrItHyG;er,r;ei,ic,su21thews;iHkDquAroqu8tinG;ez,s;a5Xc,nG;!o;ci5Vn;a5UmG;ad5;ar5e6Kin1;rig77s1;aVeOiLoJuHyG;!nch;k4nGo;d,gu;mbarGpe3Fvr4we;di;!nGu,yana2B;coln,dG;b21holm,strom;bedEfeKhIitn0kaHn8rGw35;oy;!j;m11tG;in1on1;bvGvG;re;iGmmy,ng,rs2Qu,voie,ws3;ne,t1F;aZeYh2iWlUnez50oNrJuHvar2woG;k,n;cerGmar68znets5;a,o34;aHem0isGyeziu;h23t3O;m0sni4Fus3KvG;ch4O;bay57ch,rh0Usk16vaIwalGzl5;czGsC;yk;cIlG;!cGen4K;huk;!ev4ic,s;e8uiveG;rt;eff0kGl4mu9nnun1;ucF;ll0nnedy;hn,llKminsCne,pIrHstra3Qto,ur,yGzl5;a,s0;j0Rls22;l2oG;or;oe;aPenOha6im14oHuG;ng,r4;e32hInHrge32u6vG;anD;es,ss3;anHnsG;en,on,t3;nesGs1R;en,s1;kiBnings,s1;cJkob4EnGrv0E;kDsG;en,sG;en0Ion;ks3obs2A;brahimDglesi5Nke5Fl0Qno07oneIshikHto,vanoG;u,v54;awa;scu;aVeOiNjaltal8oIrist50uG;!aGb0ghAynh;m2ng;a6dz4fIjgaa3Hk,lHpUrGwe,x3X;ak1Gvat;mAt;er,fm3WmG;ann;ggiBtchcock;iJmingw4BnHrGss;nand7re9;deGriks1;rs3;kkiHnG;on1;la,n1;dz4g1lvoQmOns0ZqNrMsJuIwHyG;asFes;kiB;g1ng;anHhiG;mo14;i,ov0J;di6p0r10t;ue;alaG;in1;rs1;aVeorgUheorghe,iSjonRoLrJuGw3;errGnnar3Co,staf3Ctierr7zm2;a,eG;ro;ayli6ee2Lg4iffithGub0;!s;lIme0UnHodGrbachE;e,m2;calvAzale0S;dGubE;bGs0E;erg;aj,i;bs3l,mGordaO;en7;iev3U;gnMlJmaIndFo,rGsFuthi0;cGdn0za;ia;ge;eaHlG;agh0i,o;no;e,on;aVerQiLjeldsted,lKoIrHuG;chs,entAji41ll0;eem2iedm2;ntaGrt8urni0wl0;na;emi6orA;lipIsHtzgeraG;ld;ch0h0;ovG;!ic;hatDnanIrG;arGei9;a,i;deY;ov4;b0rre1D;dKinsJriksIsGvaB;cob3GpGtra3D;inoza,osiQ;en,s3;te8;er,is3warG;ds;aXePiNjurhuMoKrisco15uHvorakG;!oT;arte,boHmitru,nn,rGt3C;and,ic;is;g2he0Omingu7nErd1ItG;to;us;aGcki2Hmitr2Ossanayake,x3;s,z; JbnaIlHmirGrvisFvi,w2;!ov4;gado,ic;th;bo0groot,jo6lHsilGvriA;va;a cruz,e3uG;ca;hl,mcevsCnIt2WviG;dGes,s;ov,s3;ielsGku22;!en;ki;a0Be06hRiobQlarkPoIrGunningh1H;awfo0RivGuz;elli;h1lKntJoIrGs2Nx;byn,reG;a,ia;ke,p0;i,rer2K;em2liB;ns;!e;anu;aOeMiu,oIristGu6we;eGiaG;ns1;i,ng,p9uHwGy;!dH;dGng;huJ;!n,onGu6;!g;kJnIpm2ttHudhGv7;ry;erjee,o14;!d,g;ma,raboG;rty;bJl0Cng4rG;eghetHnG;a,y;ti;an,ota1C;cerAlder3mpbeLrIstGvadi0B;iGro;llo;doHl0Er,t0uGvalho;so;so,zo;ll;a0Fe01hYiXlUoNrKuIyG;rLtyG;qi;chan2rG;ke,ns;ank5iem,oGyant;oks,wG;ne;gdan5nIruya,su,uchaHyKziG;c,n5;rd;darGik;enG;ko;ov;aGond15;nco,zG;ev4;ancFshw16;a08oGuiy2;umGwmG;ik;ckRethov1gu,ktPnNrG;gJisInG;ascoGds1;ni;ha;er,mG;anG;!n;gtGit7nP;ss3;asF;hi;er,hG;am;b4ch,ez,hRiley,kk0ldw8nMrIshHtAu0;es;ir;bInHtlGua;ett;es,i0;ieYosa;dGik;a9yoG;padhyG;ay;ra;k,ng;ic;bb0Acos09d07g04kht05lZnPrLsl2tJyG;aHd8;in;la;chis3kiG;ns3;aImstro6sl2;an;ng;ujo,ya;dJgelHsaG;ri;ovG;!a;ersJov,reG;aGjEws;ss1;en;en,on,s3;on;eksejEiyEmeiIvG;ar7es;ez;da;ev;arwHuilG;ar;al;ams,l0;er;ta;as\",Ordinal:\"true¦eBf7nin5s3t0zeroE;enDhir1we0;lfCn7;d,t3;e0ixt8;cond,vent7;et0th;e6ie7;i2o0;r0urt3;tie4;ft1rst;ight0lev1;e0h,ie1;en0;th\",Cardinal:\"true¦bEeBf5mEnine7one,s4t0zero;en,h2rDw0;e0o;lve,n5;irt6ousands,ree;even2ix2;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illions\",Multiple:\"true¦b3hundred,m3qu2se1t0;housand,r2;pt1xt1;adr0int0;illion\",City:\"true¦0:74;1:61;2:6G;3:6J;4:5S;a68b53c4Id48e44f3Wg3Hh39i31j2Wk2Fl23m1Mn1Co19p0Wq0Ur0Os05tRuQvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3H;greb,nzib5G;ang2e5okoha3Sunfu;katerin3Hrev0;a5n0Q;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1L;hi5Zkl3A;l63xford;aw;a8e6i5ladivost5Molgogr6L;en3lni6S;ni22r5;o3saill4N;lenc4Wncouv3Sr3ughn;lan bat1Crumqi,trecht;aFbilisi,eEheDiBo9r7u5;l21n63r5;in,ku;i5ondh62;es51poli;kyo,m2Zron1Pulo5;n,uS;an5jua3l2Tmisoa6Bra3;j4Tshui; hag62ssaloni2H;gucigal26hr0l av1U;briz,i6llinn,mpe56ng5rtu,shk2R;i3Esh0;an,chu1n0p2Eyu0;aEeDh8kopje,owe1Gt7u5;ra5zh4X;ba0Ht;aten is55ockholm,rasbou67uttga2V;an8e6i5;jiazhua1llo1m5Xy0;f50n5;ya1zh4H;gh3Kt4Q;att45o1Vv44;cramen16int ClBn5o paulo,ppo3Rrajevo; 7aa,t5;a 5o domin3E;a3fe,m1M;antonio,die3Cfrancisco,j5ped3Nsalvad0J;o5u0;se;em,t lake ci5Fz25;lou58peters24;a9e8i6o5;me,t59;ga,o5yadh;! de janei3F;cife,ims,nn3Jykjavik;b4Sip4lei2Inc2Pwalpindi;ingdao,u5;ez2i0Q;aFeEhDiCo9r7u6yong5;ya1;eb59ya1;a5etor3M;g52to;rt5zn0; 5la4Co;au prin0Melizabe24sa03;ls3Prae5Atts26;iladelph3Gnom pe1Aoenix;ki1tah tik3E;dua,lerYnaji,r4Ot5;na,r32;ak44des0Km1Mr6s5ttawa;a3Vlo;an,d06;a7ew5ing2Fovosibir1Jyc; 5cast36;del24orlea44taip14;g8iro4Wn5pl2Wshv33v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0W;aEeCi9o6u5;mb2Ani26sc3Y;gadishu,nt6s5;c13ul;evideo,pelli1Rre2Z;ami,l6n14s5;kolc,sissauga;an,waukee;cca,d5lbour2Mmph41ndo1Cssi3;an,ell2Xi3;cau,drAkass2Sl9n8r5shh4A;aca6ib5rakesh,se2L;or;i1Sy;a4EchFdal0Zi47;mo;id;aDeAi8o6u5vSy2;anMckn0Odhia3;n5s angel26;d2g bea1N;brev2Be3Lma5nz,sb2verpo28;!ss27; ma39i5;c5pzig;est16; p6g5ho2Wn0Cusan24;os;az,la33;aHharFiClaipeBo9rak0Du7y5;iv,o5;to;ala lump4n5;mi1sh0;hi0Hlka2Xpavog4si5wlo2;ce;da;ev,n5rkuk;gst2sha5;sa;k5toum;iv;bHdu3llakuric0Qmpa3Fn6ohsiu1ra5un1Iwaguc0Q;c0Pj;d5o,p4;ah1Ty;a7e6i5ohannesV;l1Vn0;dd36rusalem;ip4k5;ar2H;bad0mph1OnArkutUs7taXz5;mir,tapala5;pa;fah0l6tanb5;ul;am2Zi2H;che2d5;ianap2Mo20;aAe7o5yder2W; chi mi5ms,nolulu;nh;f6lsin5rakli2;ki;ei;ifa,lifax,mCn5rb1Dva3;g8nov01oi;aFdanEenDhCiPlasgBo9raz,u5;a5jr23;dal6ng5yaquil;zh1J;aja2Oupe;ld coa1Bthen5;bu2S;ow;ent;e0Uoa;sk;lw7n5za;dhi5gt1E;nag0U;ay;aisal29es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Pl paso;in5mont2;bur5;gh;aBe8ha0Xisp4o7resd0Lu5;b5esseldorf,nkirk,rb0shanbe;ai,l0I;ha,nggu0rtmu13;hradSl6nv5troit;er;hi;donghIe6k09l5masc1Zr es sala1KugavpiY;i0lU;gu,je2;aJebu,hAleve0Vo5raio02uriti1Q;lo7n6penhag0Ar5;do1Ok;akKst0V;gUm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;ng5ttogr14;ch8sha,zh07;gliari,i9lga8mayenJn6pe town,r5tanO;acCdiff;ber1Ac5;un;ry;ro;aWeNhKirmingh0WoJr9u5;chareTdapeTenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil8tisla7zzav5;il5;le;va;ia;goZst2;op6ubaneshw5;ar;al;iCl9ng8r5;g6l5n;in;en;aluru,hazi;fa6grade,o horizon5;te;st;ji1rut;ghd0BkFn9ot8r7s6yan n4;ur;el,r07;celo3i,ranquil09;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a05b02cc01ddis aba00gartaZhmedXizawl,lSmPnHqa00rEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a8c5kaOtwerp;hora6o3;na;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 7buquerq6eppo,giers,ma5;ty;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",Region:\"true¦0:2O;1:2L;2:2U;3:2F;a2Sb2Fc21d1Wes1Vf1Tg1Oh1Ki1Fj1Bk16l13m0Sn09o07pYqVrSsJtEuBverAw6y4zacatec2W;akut0o0Fu4;cat1k09;a5est 4isconsin,yomi1O;bengal,virgin0;rwick3shington4;! dc;acruz,mont;dmurt0t4;ah,tar4; 2Pa12;a6e5laxca1Vripu21u4;scaEva;langa2nnessee,x2J;bas10m4smQtar29;aulip2Hil nadu;a9elang07i7o5taf16u4ylh1J;ff02rr09s1E;me1Gno1Uuth 4;cZdY;ber0c4kkim,naloa;hu1ily;n5rawak,skatchew1xo4;ny; luis potosi,ta catari2;a4hodeA;j4ngp0C;asth1shahi;ingh29u4;e4intana roo;bec,en6retaro;aAe6rince edward4unjab; i4;sl0G;i,n5r4;ak,nambu0F;a0Rnsylv4;an0;ha0Pra4;!na;axa0Zdisha,h4klaho21ntar4reg7ss0Dx0I;io;aLeEo6u4;evo le4nav0X;on;r4tt18va scot0;f9mandy,th4; 4ampton3;c6d5yo4;rk3;ako1O;aroli2;olk;bras1Nva0Dw4; 6foundland4;! and labrad4;or;brunswick,hamp3jers5mexiTyork4;! state;ey;galPyarit;aAeghala0Mi6o4;nta2r4;dov0elos;ch6dlanDn5ss4zor11;issippi,ouri;as geraPneso18;ig1oac1;dhy12harasht0Gine,lac07ni5r4ssachusetts;anhao,i el,ylG;p4toba;ur;anca3e4incoln3ouisI;e4iR;ds;a6e5h4omi;aka06ul2;dah,lant1ntucky,ra01;bardino,lmyk0ns0Qr4;achay,el0nata0X;alis6har4iangxi;kh4;and;co;daho,llino7n4owa;d5gush4;et0;ia2;is;a6ert5i4un1;dalFm0D;ford3;mp3rya2waii;ansu,eorg0lou7oa,u4;an4izhou,jarat;ajuato,gdo4;ng;cester3;lori4uji1;da;sex;ageUe7o5uran4;go;rs4;et;lawaMrby3;aFeaEh9o4rim08umbr0;ahui7l6nnectic5rsi4ventry;ca;ut;i03orado;la;e5hattisgarh,i4uvash0;apRhuahua;chn5rke4;ss0;ya;ra;lGm4;bridge3peche;a9ihar,r8u4;ck4ryat0;ingham3;shi4;re;emen,itish columb0;h0ja cal8lk7s4v7;hkorto4que;st1;an;ar0;iforn0;ia;dygHguascalientes,lBndhr9r5ss4;am;izo2kans5un4;achal 7;as;na;a 4;pradesh;a6ber5t4;ai;ta;ba5s4;ka;ma;ea\",Place:\"true¦0:4T;1:4V;2:44;3:4B;4:3I;a4Eb3Gc2Td2Ge26f25g1Vh1Ji1Fk1Cl14m0Vn0No0Jp08r04sTtNuLvJw7y5;a5o0Syz;kut1Bngtze;aDeChitBi9o5upatki,ycom2P;ki26o5;d5l1B;b3Ps5;i4to3Y;c0SllowbroCn5;c2Qgh2;by,chur1P;ed0ntw3Gs22;ke6r3St5;erf1f1; is0Gf3V;auxha3Mirgin is0Jost5;ok;laanbaatar,pto5xb3E;n,wn;a9eotihuac43h7ive49o6ru2Nsarskoe selo,u5;l2Dzigo47;nto,rquay,tt2J;am3e 5orn3E;bronx,hamptons;hiti,j mah0Iu1N;aEcotts bluff,eCfo,herbroQoApring9t7u5yd2F;dbu1Wn5;der03set3B;aff1ock2Nr5;atf1oud;hi37w24;ho,uth5; 1Iam1Zwo3E;a5i2O;f2Tt0;int lawrence riv3Pkhal2D;ayleigh,ed7i5oc1Z;chmo1Eo gran4ver5;be1Dfr09si4; s39cliffe,hi2Y;aCe9h8i5ompeii,utn2;c6ne5tcai2T; 2Pc0G;keri13t0;l,x;k,lh2mbr6n5r2J;n1Hzance;oke;cif38pahanaumokuak30r5;k5then0;si4w1K;ak7r6x5;f1l2X;ange county,d,f1inoco;mTw1G;e8i1Uo5;r5tt2N;th5wi0E; 0Sam19;uschwanste1Pw5; eng6a5h2market,po36;rk;la0P;a8co,e6i5uc;dt1Yll0Z;adow5ko0H;lands;chu picchu,gad2Ridsto1Ql8n7ple6r5;kh2; g1Cw11;hatt2Osf2B;ibu,t0ve1Z;a8e7gw,hr,in5owlOynd02;coln memori5dl2C;al;asi4w3;kefr7mbe1On5s,x;ca2Ig5si05;f1l27t0;ont;azan kreml14e6itchen2Gosrae,rasnoyar5ul;sk;ns0Hs1U;ax,cn,lf1n6ps5st;wiN;d5glew0Lverness;ian27ochina;aDeBi6kg,nd,ov5unti2H;d,enweep;gh6llc5;reL;bu03l5;and5;!s;r5yw0C;ef1tf1;libu24mp6r5stings;f1lem,row;stead,t0;aDodavari,r5uelph;avenAe5imsS;at 8en5; 6f1Fwi5;ch;acr3vall1H;brita0Flak3;hur5;st;ng3y villa0W;airhavHco,ra;aAgli9nf17ppi8u7ver6x5;et1Lf1;glad3t0;rope,st0;ng;nt0;rls1Ls5;t 5;e5si4;nd;aCe9fw,ig8o7ryd6u5xb;mfri3nstab00rh2tt0;en;nca18rcKv19wnt0B;by;n6r5vonpo1D;ry;!h2;nu8r5;l6t5;f1moor;ingt0;be;aLdg,eIgk,hClBo5royd0;l6m5rnwa0B;pt0;c7lingw6osse5;um;ood;he0S;earwat0St;a8el6i5uuk;chen itza,mney ro07natSricahua;m0Zt5;enh2;mor5rlottetPth2;ro;dar 5ntervilA;breaks,faZg5;rove;ld9m8r5versh2;lis6rizo pla5;in;le;bLpbellf1;weQ;aZcn,eNingl01kk,lackLolt0r5uckV;aGiAo5;ckt0ok5wns cany0;lyn,s5;i4to5;ne;de;dge6gh5;am,t0;n6t5;own;or5;th;ceb6m5;lNpt0;rid5;ge;bu5pool,wa8;rn;aconsfEdf1lBr9verly7x5;hi5;ll; hi5;lls;wi5;ck; air,l5;ingh2;am;ie5;ld;ltimore,rnsl6tters5;ea;ey;bLct0driadic,frica,ginJlGmFn9rc8s7tl6yleOzor3;es;!ant8;hcroft,ia; de triomphe,t6;adyr,ca8dov9tarct5;ic5; oce5;an;st5;er;ericas,s;be6dersh5hambra,list0;ot;rt0;cou5;rt;bot7i5;ngd0;on;sf1;ord\",Country:\"true¦0:38;1:2L;2:3B;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om2pZqat1KrXsKtCu7v5wal4yemTz3;a25imbabwe;es,lis and futu2Y;a3enezue32ietnam;nuatu,tican city;gTk6nited 4ruXs3zbeE; 2Ca,sr;arab emirat0Kkingdom,states3;! of am2Y;!raiV;a8haCimor les0Co7rinidad 5u3;nis0rk3valu;ey,me2Zs and caic1V;and t3t3;oba1L;go,kel10nga;iw2ji3nz2T;ki2V;aDcotl1eCi9lov8o6pa2Dri lanka,u5w3yr0;az3edAitzerl1;il1;d2riname;lomon1Xmal0uth 3;afr2KkMsud2;ak0en0;erra leoFn3;gapo1Yt maart3;en;negLrb0ychellZ;int 3moa,n marino,udi arab0;hele26luc0mart21;epublic of ir0Eom2Euss0w3;an27;a4eIhilippinUitcairn1Mo3uerto riN;l1rtugF;ki2Dl4nama,pua new0Vra3;gu7;au,esti3;ne;aBe9i7or3;folk1Ith4w3;ay; k3ern mariana1D;or0O;caragua,ger3ue;!ia;p3ther1Aw zeal1;al;mib0u3;ru;a7exi6icro0Bo3yanm06;ldova,n3roc5zambA;a4gol0t3;enegro,serrat;co;cAdagasc01l7r5urit4yot3;te;an0i16;shall0Xtin3;ique;a4div3i,ta;es;wi,ys0;ao,ed02;a6e5i3uxembourg;b3echtenste12thu1G;er0ya;ban0Isotho;os,tv0;azakh1Fe4iriba04o3uwait,yrgyz1F;rXsovo;eling0Knya;a3erG;ma16p2;c7nd6r4s3taly,vory coast;le of m2rael;a3el1;n,q;ia,oJ;el1;aiTon3ungary;dur0Ng kong;aBermany,ha0QibraltAre8u3;a6ern5inea3ya0P;! biss3;au;sey;deloupe,m,tema0Q;e3na0N;ce,nl1;ar;bUmb0;a7i6r3;ance,ench 3;guia0Epoly3;nes0;ji,nl1;lklandUroeU;ast tim7cu6gypt,l salv6ngl1quatorial4ritr5st3thiop0;on0; guin3;ea;ad3;or;enmark,jibou5ominica4r con3;go;!n C;ti;aBentral african Ah8o5roat0u4yprRzech3; 9ia;ba,racao;c4lo3morQngo brazzaville,okGsta r04te de ivoiL;mb0;osE;i3ristmasG;le,na;republic;m3naUpe verde,ymanA;bod0ero3;on;aGeDhut2o9r5u3;lgar0r3;kina faso,ma,undi;azil,itish 3unei;virgin3; is3;lands;liv0nai5snia and herzegoviHtswaHuvet3; isl1;and;re;l3n8rmuG;ar3gium,ize;us;h4ngladesh,rbad3;os;am4ra3;in;as;fghaGlDmBn6r4ustr3zerbaij2;al0ia;genti3men0uba;na;dorra,g5t3;arct7igua and barbu3;da;o3uil3;la;er3;ica;b3ger0;an0;ia;ni3;st2;an\",FirstName:\"true¦aTblair,cQdOfrancoZgabMhinaLilya,jHkClBm6ni4quinn,re3s0;h0umit,yd;ay,e0iloh;a,lby;g9ne;co,ko0;!s;a1el0ina,org6;!okuhF;ds,naia,r1tt0xiB;i,y;ion,lo;ashawn,eif,uca;a3e1ir0rM;an;lsFn0rry;dall,yat5;i,sD;a0essIie,ude;i1m0;ie,mG;me;ta;rie0y;le;arcy,ev0;an,on;as1h0;arl8eyenne;ey,sidy;drien,kira,l4nd1ubr0vi;ey;i,r0;a,e0;a,y;ex2f1o0;is;ie;ei,is\",WeekDay:\"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",Month:\"true¦dec0february,july,nov0octo1sept0;em0;ber\",Date:\"true¦ago,on4som4t1week0yesterd5; end,ends;mr1o0;d2morrow;!w;ed0;ay\",Duration:\"true¦centurAd8h7m5q4se3w1y0;ear8r8;eek0k7;!end,s;ason,c5;tr,uarter;i0onth3;llisecond2nute2;our1r1;ay0ecade0;!s;ies,y\",FemaleName:\"true¦0:J7;1:JB;2:IJ;3:IK;4:J1;5:IO;6:JS;7:JO;8:HB;9:JK;A:H4;B:I2;C:IT;D:JH;E:IX;F:BA;G:I4;aGTbFLcDRdD0eBMfB4gADh9Ti9Gj8Dk7Cl5Wm48n3Lo3Hp33qu32r29s15t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof3;e3Sf3la,ra;h2iKlIna,ynH;ab,ep;da,ma;da,h2iHra;nab;aKeJi0FolB7uIvH;et8onDP;i0na;le0sen3;el,gm3Hn,rGLs8W;aoHme0nyi;m5XyAD;aMendDZhiDGiH;dele9lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;ck84kIl8oleAviH;anFenJ4;ky,toriBK;da,lA8rHs0;a,nHoniH9;a,iFR;leHnesH9;nILrH;i1y;g9rHs6xHA;su5te;aYeUhRiNoLrIuHy2;i,la;acJ3iHu0J;c3na,sH;hFta;nHr0F;iFya;aJffaEOnHs6;a,gtiH;ng;!nFSra;aIeHomasi0;a,l9Oo8Ares1;l3ndolwethu;g9Fo88rIssH;!a,ie;eHi,ri7;sa,za;bOlMmKnIrHs6tia0wa0;a60yn;iHya;a,ka,s6;arFe2iHm77ra;!ka;a,iH;a,t6;at6it6;a0Ecarlett,e0AhWiSkye,neza0oQri,tNuIyH;bIGlvi1;ha,mayIJniAsIzH;an3Net8ie,y;anHi7;!a,e,nH;aCe;aIeH;fan4l5Dphan6E;cI5r5;b3fiAAm0LnHphi1;d2ia,ja,ya;er2lJmon1nIobh8QtH;a,i;dy;lETv3;aMeIirHo0risFDy5;a,lDM;ba,e0i5lJrH;iHr6Jyl;!d8Ifa;ia,lDZ;hd,iMki2nJrIu0w0yH;la,ma,na;i,le9on,ron,yn;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye82vH;da,inj;e0ife;en1i0ma;anA9bLd5Oh1SiBkKlJmInd2rHs6vannaC;aCi0;ant6i2;lDOma,ome;ee0in8Tu2;in1ri0;a05eZhXiUoHuthDM;bScRghQl8LnPsJwIxH;anB3ie,y;an,e0;aIeHie,lD;ann7ll1marDGtA;!lHnn1;iHyn;e,nH;a,dF;da,i,na;ayy8G;hel67io;bDRerAyn;a,cIkHmas,nFta,ya;ki,o;h8Xki;ea,iannGMoH;da,n1P;an0bJemFgi0iInHta,y0;a8Bee;han86na;a,eH;cHkaC;a,ca;bi0chIe,i0mo0nHquETy0;di,ia;aERelHiB;!e,le;een4ia0;aPeOhMiLoJrHute6A;iHudenCV;scil3LyamvaB;lHrt3;i0ly;a,paluk;ilome0oebe,ylH;is,lis;ggy,nelope,r5t2;ige,m0VnKo5rvaDMtIulH;a,et8in1;ricHt4T;a,e,ia;do2i07;ctav3dIfD3is6ksa0lHphD3umC5yunbileg;a,ga,iv3;eHvAF;l3t8;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aCeEma;ll1mi;aNcLhariBQkKlaJna,sHta,vi;anHha;ur;!y;a,iDZki;hoGk9YolH;a,e4P;!mh;hir,lHna,risDEsreE;!a,iDDlBV;asuMdLh3i6Dl5nKomi7rgEVtH;aHhal4;lHs6;i1ya;cy,et8;e9iF0ya;nngu2X;a0Ackenz4e02iMoJrignayani,uriDJyH;a,rH;a,iOlNna,tG;bi0i2llBJnH;a,iH;ca,ka,qD9;a,cUdo4ZkaTlOmi,nMrItzi,yH;ar;aJiIlH;anET;am;!l,nB;dy,eHh,n4;nhGrva;aKdJe0iCUlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5DgNi,lKrH;edi7AiIjem,on,yH;em,l;em,sCG;an4iHliCF;nHsCJ;a,da;!an,han;b09cASd07e,g05ha,i04ja,l02n00rLsoum5YtKuIv84xBKyHz4;bell,ra,soBB;d7rH;a,eE;h8Gild1t4;a,cUgQiKjor4l7Un4s6tJwa,yH;!aHbe6Xja9lAE;m,nBL;a,ha,in1;!aJbCGeIja,lDna,sHt63;!a,ol,sa;!l1D;!h,mInH;!a,e,n1;!awit,i;arJeIie,oHr48ueri8;!t;!ry;et46i3B;el4Xi7Cy;dHon,ue5;akranAy;ak,en,iHlo3S;a,ka,nB;a,re,s4te;daHg4;!l3E;alDd4elHge,isDJon0;ei9in1yn;el,le;a0Ne0CiXoQuLyH;d3la,nH;!a,dIe2OnHsCT;!a,e2N;a,sCR;aD4cJel0Pis1lIna,pHz;e,iA;a,u,wa;iHy;a0Se,ja,l2NnB;is,l1UrItt1LuHvel4;el5is1;aKeIi7na,rH;aADi7;lHn1tA;ei;!in1;aTbb9HdSepa,lNnKsJvIzH;!a,be5Ret8z4;!ia;a,et8;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lH;iHy;aA8e;!aH;!nF;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx93y5;iHt4;c3t3;e2PlCO;la,nHra;a,ie,o2;a,or1;a,gh,laH;!ni;!h,nH;a,d2e,n5V;cOdon9DiNkes6mi9Gna,rMtJurIvHxmi,y5;ern1in3;a,e5Aie,yn;as6iIoH;nya,ya;fa,s6;a,isA9;a,la;ey,ie,y;a04eZhXiOlASoNrJyH;lHra;a,ee,ie;istHy6I;a,en,iIyH;!na;!e,n5F;nul,ri,urtnB8;aOerNlB7mJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stE;!na,ra;aHei2ongordzol;dij1w5;el7UiKjsi,lJnIrH;a,i,ri;d2na,za;ey,i,lBLs4y;ra,s6;biAcARdiat7MeBAiSlQmPnyakuma1DrNss6NtKviAyH;!e,lH;a,eH;e,i8T;!a6HeIhHi4TlDri0y;ar8Her8Hie,leErBAy;!lyn8Ori0;a,en,iHl5Xoli0yn;!ma,nFs95;a5il1;ei8Mi,lH;e,ie;a,tl6O;a0AeZiWoOuH;anMdLlHst88;es,iH;a8NeHs8X;!n9tH;!a,te;e5Mi3My;a,iA;!anNcelDdMelGhan7VleLni,sIva0yH;a,ce;eHie;fHlDph7Y;a,in1;en,n1;i7y;!a,e,n45;lHng;!i1DlH;!i1C;anNle0nKrJsH;i8JsH;!e,i8I;i,ri;!a,elGif2CnH;a,et8iHy;!e,f2A;a,eJiInH;a,eIiH;e,n1;!t8;cMda,mi,nIque4YsminFvie2y9zH;min7;a7eIiH;ce,e,n1s;!lHs82t0F;e,le;inIk6HlDquelH;in1yn;da,ta;da,lRmPnOo0rNsIvaHwo0zaro;!a0lu,na;aJiIlaHob89;!n9R;do2;belHdo2;!a,e,l3B;a7Ben1i0ma;di2es,gr72ji;a9elBogH;en1;a,e9iHo0se;a0na;aSeOiJoHus7Kyacin2C;da,ll4rten24snH;a,i9U;lImaH;ri;aIdHlaI;a,egard;ry;ath1BiJlInrietArmi9sH;sa,t1A;en2Uga,mi;di;bi2Fil8MlNnMrJsItHwa,yl8M;i5Tt4;n60ti;iHmo51ri53;etH;!te;aCnaC;a,ey,l4;a02eWiRlPoNrKunJwH;enHyne1R;!dolD;ay,el;acieIetHiselB;a,chE;!la;ld1CogooH;sh;adys,enHor3yn2K;a,da,na;aKgi,lIna,ov8EselHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald5Si,m3Etrud7;et8i4X;a,eHna;s29vieve;ma;bIle,mHrnet,yG;al5Si5;iIrielH;a,l1;!ja;aTeQiPlorOoz3rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0P;n1s66;!ca;a,enc3;en,o0;lIn0rnH;anB;ec3ic3;jr,nArKtHy7;emIiHma,oumaA;ha,ma,n;eh;ah,iBrah,za0;cr4Rd0Re0Qi0Pk0Ol07mXn54rUsOtNuMvHwa;aKelIiH;!e,ta;inFyn;!a;!ngel4V;geni1ni47;h5Yien9ta;mLperanKtH;eIhHrel5;er;l31r7;za;a,eralB;iHma,ne4Lyn;cHka,n;a,ka;aPeNiKmH;aHe21ie,y;!li9nuH;elG;lHn1;e7iHy;a,e,ja;lHrald;da,y;!nue5;aWeUiNlMma,no2oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c3da,e,f,nMsJzaH;!betHveA;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a,i;!in1na;ate1Rta;leEs6;vi;eIiHna,wi0;e,th;l,n;aYeMh3iLjeneKoH;lor5Vminiq4Ln3FrHtt4;a,eEis,la,othHthy;ea,y;ba;an09naCon9ya;anQbPde,eOiMlJmetr3nHsir5M;a,iH;ce,se;a,iIla,orHphi9;es,is;a,l6F;dHrdH;re;!d5Ena;!b2ForaCraC;a,d2nH;!a,e;hl3i0l0GmNnLphn1rIvi1WyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,et8iH;!ca,el1Aka,z;arHia;is;a0Re0Nh04i02lUoJristIynH;di,th3;al,i0;lPnMrIurH;tn1D;aJd2OiHn2Ori9;!nH;a,e,n1;!l4;cepci5Cn4sH;tanHuelo;ce,za;eHleE;en,t8;aJeoIotH;il54;!pat2;ir7rJudH;et8iH;a,ne;a,e,iH;ce,sZ;a2er2ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Sen,iHy;an1e,n1;deJlseIrH;!i7yl;a,y;li9;nMrH;isKlImH;ai9;a,eHot8;n1t8;!sa;d2elGtH;al,elG;cIlH;es8i47;el3ilH;e,ia,y;itlYlXmilWndVrMsKtHy5;aIeIhHri0;er1IleErDy;ri0;a38sH;a37ie;a,iOlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eIie,otHy;a,ta;ne,y;na,s1X;a0Ii0I;a,e,l1;isAl4;in,yn;a0Ke02iZlXoUrH;andi7eRiJoIyH;an0nn;nwDoke;an3HdgMgiLtH;n31tH;!aInH;ey,i,y;ny;d,t8;etH;!t7;an0e,nH;da,na;bbi7glarIlo07nH;iAn4;ka;ancHythe;a,he;an1Clja0nHsm3M;iAtH;ou;aWcVlinUniArPssOtJulaCvH;!erlH;ey,y;hJsy,tH;e,iHy7;e,na;!anH;ie,y;!ie;nItHyl;ha,ie;adIiH;ce;et8i9;ay,da;ca,ky;!triH;ce,z;rbJyaH;rmH;aa;a2o2ra;a2Ub2Od25g21i1Sj5l18m0Zn0Boi,r06sWtVuPvOwa,yIzH;ra,u0;aKes6gJlIn,seH;!l;in;un;!nH;a,na;a,i2K;drLguJrIsteH;ja;el3;stH;in1;a,ey,i,y;aahua,he0;hIi2Gja,miAs2DtrH;id;aMlIraqHt21;at;eIi7yH;!n;e,iHy;gh;!nH;ti;iJleIo6piA;ta;en,n1t8;aHelG;!n1J;a01dje5eZgViTjRnKohito,toHya;inet8nH;el5ia;te;!aKeIiHmJ;e,ka;!mHtt7;ar4;!belIliHmU;sa;!l1;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tH;a,te;!bImHstasiMya;ar3;el;aLberKeliJiHy;e,l3naH;!ta;a,ja;!ly;hGiIl3nB;da;a,ra;le;aWba,ePiMlKthJyH;a,c3sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c3is6jaKksaKna,sJxH;aHia;!nd2;ia,saH;nd2;ra;ia;i0nIyH;ah,na;a,is,naCoud;la;c6da,leEmNnLsH;haClH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lDsH;on;yn;!lH;i9yn;ne;aKbIiHrL;!e,gaK;ey,i7y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",Honorific:\"true¦director1field marsh2lieutenant1rear0sergeant major,vice0; admir1; gener0;al\",\"Adj|Gerund\":\"true¦0:3F;1:3H;2:31;3:2X;4:35;5:33;6:3C;7:2Z;8:36;9:29;a33b2Tc2Bd1Te1If19g12h0Zi0Rl0Nm0Gnu0Fo0Ap04rYsKtEuBvAw1Ayiel3;ar6e08;nBpA;l1Rs0B;fol3n1Zsett2;aEeDhrBi4ouc7rAwis0;e0Bif2oub2us0yi1;ea1SiA;l2vi1;l2mp0rr1J;nt1Vxi1;aMcreec7enten2NhLkyrocke0lo0Vmi2oJpHtDuBweA;e0Ul2;pp2ArA;gi1pri5roun3;aBea8iAri2Hun9;mula0r4;gge4rA;t2vi1;ark2eAraw2;e3llb2F;aAot7;ki1ri1;i9oc29;dYtisf6;aEeBive0oAus7;a4l2;assu4defi9fres7ig9juve07mai9s0vAwar3;ea2italiAol1G;si1zi1;gi1ll6mb2vi1;a6eDier23lun1VrAun2C;eBoA;mi5vo1Z;ce3s5vai2;n3rpleA;xi1;ffCpWutBverAwi1;arc7lap04p0Pri3whel8;goi1l6st1J;en3sA;et0;m2Jrtu4;aEeDiCoBuAyst0L;mb2;t1Jvi1;s5tiga0;an1Rl0n3smeri26;dAtu4;de9;aCeaBiAo0U;fesa0Tvi1;di1ni1;c1Fg19s0;llumiGmFnArri0R;cDfurHsCtBviA;go23ti1;e1Oimi21oxica0rig0V;pi4ul0;orpo20r0K;po5;na0;eaBorr02umilA;ia0;li1rtwar8;lFrA;atiDipCoBuelA;i1li1;undbrea10wi1;pi1;f6ng;a4ea8;a3etc7it0lEoCrBulfA;il2;ee1FighXust1L;rAun3;ebo3thco8;aCoA;a0wA;e4i1;mi1tte4;lectrJmHnExA;aCci0hBis0pA;an3lo3;aOila1B;c0spe1A;ab2coura0CdBergi13ga0Clive9ric7s02tA;hral2i0J;ea4u4;barras5er09pA;owe4;if6;aQeIiBrA;if0;sAzz6;aEgDhearCsen0tA;rAur11;ac0es5;te9;us0;ppoin0r8;biliGcDfi9gra3ligh0mBpres5sAvasG;erE;an3ea9orA;ali0L;a6eiBli9rA;ea5;vi1;ta0;maPri1s7un0zz2;aPhMlo5oAripp2ut0;mGnArrespon3;cer9fDspi4tA;inBrA;as0ibu0ol2;ui1;lic0u5;ni1;fDmCpA;eAromi5;l2ti1;an3;or0;aAil2;llenAnAr8;gi1;l8ptAri1;iva0;aff2eGin3lFoDrBuA;d3st2;eathtaAui5;ki1;gg2i2o8ri1unA;ci1;in3;co8wiA;lAtc7;de4;bsorVcOgonMlJmHnno6ppea2rFsA;pi4su4toA;nBun3;di1;is7;hi1;res0;li1;aFu5;si1;ar8lu4;ri1;mi1;iAzi1;zi1;cAhi1;eleDomA;moBpan6;yi1;da0;ra0;ti1;bi1;ng\",Comparable:\"true¦0:3C;1:3Q;2:3F;a3Tb3Cc33d2Te2Mf2Ag1Wh1Li1Fj1Ek1Bl13m0Xn0So0Rp0Iqu0Gr07sHtCug0vAw4y3za0Q;el10ouN;ary,e6hi5i3ry;ck0Cde,l3n1ry,se;d,y;ny,te;a3i3R;k,ry;a3erda2ulgar;gue,in,st;a6en2Xhi5i4ouZr3;anqu2Cen1ue;dy,g36me0ny;ck,rs28;ll,me,rt,wd3I;aRcaPeOhMiLkin0BlImGoEpDt6u4w3;eet,ift;b3dd0Wperfi21rre28;sta26t21;a8e7iff,r4u3;pUr1;a4ict,o3;ng;ig2Vn0N;a1ep,rn;le,rk,te0;e1Si2Vright0;ci1Yft,l3on,re;emn,id;a3el0;ll,rt;e4i3y;g2Mm0Z;ek,nd2T;ck24l0mp1L;a3iRrill,y;dy,l01rp;ve0Jxy;n1Jr3;ce,y;d,fe,int0l1Hv0V;a8e6i5o3ude;mantic,o19sy,u3;gh;pe,t1P;a3d,mo0A;dy,l;gg4iFndom,p3re,w;id;ed;ai2i3;ck,et;hoAi1Fl9o8r5u3;ny,r3;e,p11;egna2ic4o3;fouSud;ey,k0;liXor;ain,easa2;ny;dd,i0ld,ranL;aive,e5i4o3u14;b0Sisy,rm0Ysy;bb0ce,mb0R;a3r1w;r,t;ad,e5ild,o4u3;nda12te;ist,o1;a4ek,l3;low;s0ty;a8e7i6o3ucky;f0Jn4o15u3ve0w10y0N;d,sy;e0g;ke0l,mp,tt0Eve0;e1Qwd;me,r3te;ge;e4i3;nd;en;ol0ui19;cy,ll,n3;secu6t3;e3ima4;llege2rmedia3;te;re;aAe7i6o5u3;ge,m3ng1C;bYid;me0t;gh,l0;a3fXsita2;dy,rWv3;en0y;nd13ppy,r3;d3sh;!y;aFenEhCiBlAoofy,r3;a8e6i5o3ue0Z;o3ss;vy;m,s0;at,e3y;dy,n;nd,y;ad,ib,ooD;a2d1;a3o3;st0;tDuiS;u1y;aCeebBi9l8o6r5u3;ll,n3r0N;!ny;aCesh,iend0;a3nd,rmD;my;at,ir7;erce,nan3;ci9;le;r,ul3;ty;a6erie,sse4v3xtre0B;il;nti3;al;r4s3;tern,y;ly,th0;appZe9i5ru4u3;mb;nk;r5vi4z3;zy;ne;e,ty;a3ep,n9;d3f,r;!ly;agey,h8l7o5r4u3;dd0r0te;isp,uel;ar3ld,mmon,st0ward0zy;se;evKou1;e3il0;ap,e3;sy;aHiFlCoAr5u3;ff,r0sy;ly;a6i3oad;g4llia2;nt;ht;sh,ve;ld,un3;cy;a4o3ue;nd,o1;ck,nd;g,tt3;er;d,ld,w1;dy;bsu6ng5we3;so3;me;ry;rd\",Adverb:\"true¦a08b05d00eYfSheQinPjustOkinda,likewiZmMnJoEpCquite,r9s5t2u0very,well;ltima01p0; to,wards5;h1iny bit,o0wiO;o,t6;en,us;eldom,o0uch;!me1rt0; of;how,times,w0C;a1e0;alS;ndomRth05;ar excellenEer0oint blank; Lhaps;f3n0utright;ce0ly;! 0;ag05moX; courGten;ewJo0; longWt 0;onHwithstand9;aybe,eanwhiNore0;!ovT;! aboX;deed,steY;lla,n0;ce;or3u0;ck1l9rther0;!moK;ing; 0evK;exampCgood,suH;n mas0vI;se;e0irect2; 2fini0;te0;ly;juAtrop;ackward,y 0;far,no0; means,w; GbroFd nauseam,gEl7ny5part,s4t 2w0;ay,hi0;le;be7l0mo7wor7;arge,ea6; soon,i4;mo0way;re;l 3mo2ongsi1ready,so,togeth0ways;er;de;st;b1t0;hat;ut;ain;ad;lot,posteriori\",Conjunction:\"true¦aXbTcReNhowMiEjust00noBo9p8supposing,t5wh0yet;e1il0o3;e,st;n1re0thN; if,by,vM;evL;h0il,o;erefOo0;!uU;lus,rovided th9;r0therwiM;! not; mattEr,w0;! 0;since,th4w7;f4n0; 0asmuch;as mIcaForder t0;h0o;at;! 0;only,t0w0;hen;!ev3;ith2ven0;! 0;if,tB;er;o0uz;s,z;e0ut,y the time;cau1f0;ore;se;lt3nd,s 0;far1if,m0soon1t2;uch0; as;hou0;gh\",Currency:\"true¦$,aud,bQcOdJeurIfHgbp,hkd,iGjpy,kElDp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotyQł;en,uanP;af,of;h0t5;e0il5;k0q0;elK;oubleJp,upeeJ;e2ound st0;er0;lingG;n0soF;ceEnies;empi7i7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!os;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;e0ny;nt1;aht,itcoin0;!s\",Determiner:\"true¦aBboth,d9e6few,le5mu8neiDplenty,s4th2various,wh0;at0ich0;evC;a0e4is,ose;!t;everal,ome;!ast,s;a1l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\",\"Adj|Present\":\"true¦a07b04cVdQeNfJhollIidRlEmCnarrIoBp9qua8r7s3t2uttFw0;aKet,ro0;ng,u08;endChin;e2hort,l1mooth,our,pa9tray,u0;re,speU;i2ow;cu6da02leSpaN;eplica01i02;ck;aHerfePr0;eseUime,omV;bscu1pen,wn;atu0e3odeH;re;a2e1ive,ow0;er;an;st,y;ow;a2i1oul,r0;ee,inge;rm;iIke,ncy,st;l1mpty,x0;emHpress;abo4ic7;amp,e2i1oub0ry,ull;le;ffu9re6;fu8libe0;raE;alm,l5o0;mpleCn3ol,rr1unterfe0;it;e0u7;ct;juga8sum7;ea1o0;se;n,r;ankru1lu0;nt;pt;li2pproxi0rticula1;ma0;te;ght\",\"Person|Adj\":\"true¦b3du2earnest,frank,mi2r0san1woo1;an0ich,u1;dy;sty;ella,rown\",Modal:\"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ight,ust;an,o0;uld\",Verb:\"true¦born,cannot,gonna,has,keep tabs,msg\",\"Person|Verb\":\"true¦b8ch7dr6foster,gra5ja9lan4ma2ni9ollie,p1rob,s0wade;kip,pike,t5ue;at,eg,ier2;ck,r0;k,shal;ce;ce,nt;ew;ase,u1;iff,l1ob,u0;ck;aze,ossom\",\"Person|Date\":\"true¦a2j0sep;an0une;!uary;p0ugust,v0;ril\"};const mo=36,po=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",fo=po.split(\"\").reduce((function(e,t,n){return e[t]=n,e}),{});var bo=function(e){if(void 0!==fo[e])return fo[e];let t=0,n=1,r=mo,o=1;for(;n<e.length;t+=r,n++,r*=mo);for(let n=e.length-1;n>=0;n--,o*=mo){let r=e.charCodeAt(n)-48;r>10&&(r-=7),t+=r*o}return t};const vo=function(e,t,n){const r=bo(t);return r<e.symCount?e.syms[r]:n+r+1-e.symCount},yo=function(e){const t={nodes:e.split(\";\"),syms:[],symCount:0};return e.match(\":\")&&function(e){const t=new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");for(let n=0;n<e.nodes.length;n++){const r=t.exec(e.nodes[n]);if(!r){e.symCount=n;break}e.syms[bo(r[1])]=bo(r[2])}e.nodes=e.nodes.slice(e.symCount,e.nodes.length)}(t),function(e){const t=[],n=(r,o)=>{let a=e.nodes[r];\"!\"===a[0]&&(t.push(o),a=a.slice(1));const i=a.split(/([A-Z0-9,]+)/g);for(let a=0;a<i.length;a+=2){const s=i[a],l=i[a+1];if(!s)continue;const u=o+s;if(\",\"===l||void 0===l){t.push(u);continue}const c=vo(e,l,r);n(c,u)}};return n(0,\"\"),t}(t)},wo=[\"Possessive\",\"Pronoun\"];const ko={a:[[/(antenn|formul|nebul|vertebr|vit)a$/i,\"$1ae\"],[/ia$/i,\"ia\"]],e:[[/(kn|l|w)ife$/i,\"$1ives\"],[/(hive)$/i,\"$1s\"],[/([m|l])ouse$/i,\"$1ice\"],[/([m|l])ice$/i,\"$1ice\"]],f:[[/^(dwar|handkerchie|hoo|scar|whar)f$/i,\"$1ves\"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i,\"$1ves\"]],i:[[/(octop|vir)i$/i,\"$1i\"]],m:[[/([ti])um$/i,\"$1a\"]],n:[[/^(oxen)$/i,\"$1\"]],o:[[/(al|ad|at|er|et|ed)o$/i,\"$1oes\"]],s:[[/(ax|test)is$/i,\"$1es\"],[/(alias|status)$/i,\"$1es\"],[/sis$/i,\"ses\"],[/(bu)s$/i,\"$1ses\"],[/(sis)$/i,\"ses\"],[/^(?!talis|.*hu)(.*)man$/i,\"$1men\"],[/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,\"$1i\"]],x:[[/(matr|vert|ind|cort)(ix|ex)$/i,\"$1ices\"],[/^(ox)$/i,\"$1en\"]],y:[[/([^aeiouy]|qu)y$/i,\"$1ies\"]],z:[[/(quiz)$/i,\"$1zes\"]]},Po=/([xsz]|ch|sh)$/,Ao=function(e=\"\",t){const{irregularPlurals:n,uncountable:r}=t.two;if(r.hasOwnProperty(e))return e;if(n.hasOwnProperty(e))return n[e];const o=function(e){const t=e[e.length-1];if(!0===ko.hasOwnProperty(t))for(let n=0;n<ko[t].length;n+=1){const r=ko[t][n][0];if(!0===r.test(e))return e.replace(r,ko[t][n][1])}return null}(e);return null!==o?o:Po.test(e)?e+\"es\":e+\"s\"},Co=/\\|/,No={\"20th century fox\":\"Organization\",\"7 eleven\":\"Organization\",\"motel 6\":\"Organization\",g8:\"Organization\",vh1:\"Organization\",\"76ers\":\"SportsTeam\",\"49ers\":\"SportsTeam\",q1:\"Date\",q2:\"Date\",q3:\"Date\",q4:\"Date\",km2:\"Unit\",m2:\"Unit\",dm2:\"Unit\",cm2:\"Unit\",mm2:\"Unit\",mile2:\"Unit\",in2:\"Unit\",yd2:\"Unit\",ft2:\"Unit\",m3:\"Unit\",dm3:\"Unit\",cm3:\"Unit\",in3:\"Unit\",ft3:\"Unit\",yd3:\"Unit\",\"at&t\":\"Organization\",\"black & decker\":\"Organization\",\"h & m\":\"Organization\",\"johnson & johnson\":\"Organization\",\"procter & gamble\":\"Organization\",\"ben & jerry's\":\"Organization\",\"&\":\"Conjunction\",i:[\"Pronoun\",\"Singular\"],he:[\"Pronoun\",\"Singular\"],she:[\"Pronoun\",\"Singular\"],it:[\"Pronoun\",\"Singular\"],they:[\"Pronoun\",\"Plural\"],we:[\"Pronoun\",\"Plural\"],was:[\"Copula\",\"PastTense\"],is:[\"Copula\",\"PresentTense\"],are:[\"Copula\",\"PresentTense\"],am:[\"Copula\",\"PresentTense\"],were:[\"Copula\",\"PastTense\"],her:wo,his:wo,hers:wo,their:wo,theirs:wo,themselves:wo,your:wo,our:wo,ours:wo,my:wo,its:wo,vs:[\"Conjunction\",\"Abbreviation\"],if:[\"Condition\",\"Preposition\"],closer:\"Comparative\",closest:\"Superlative\",much:\"Adverb\",may:\"Modal\",babysat:\"PastTense\",blew:\"PastTense\",drank:\"PastTense\",drove:\"PastTense\",forgave:\"PastTense\",skiied:\"PastTense\",spilt:\"PastTense\",stung:\"PastTense\",swam:\"PastTense\",swung:\"PastTense\",guaranteed:\"PastTense\",shrunk:\"PastTense\",nears:\"PresentTense\",nearing:\"Gerund\",neared:\"PastTense\",no:[\"Negative\",\"Expression\"]},jo={},xo={two:{irregularPlurals:ho,uncountable:{}}};Object.keys(go).forEach((e=>{const t=function(e){if(!e)return{};const t=e.split(\"|\").reduce(((e,t)=>{const n=t.split(\"¦\");return e[n[0]]=n[1],e}),{}),n={};return Object.keys(t).forEach((function(e){const r=yo(t[e]);\"true\"===e&&(e=!0);for(let t=0;t<r.length;t++){const o=r[t];!0===n.hasOwnProperty(o)?!1===Array.isArray(n[o])?n[o]=[n[o],e]:n[o].push(e):n[o]=e}})),n}(go[e]);Co.test(e)?Object.keys(t).forEach((t=>{if(jo[t]=e,\"Noun|Verb\"===e){const e=Ao(t,xo);jo[e]=\"Plural|Verb\"}})):Object.keys(t).forEach((t=>{No[t]=e}))})),[\":(\",\":)\",\":P\",\":p\",\":O\",\";(\",\";)\",\";P\",\";p\",\";O\",\":3\",\":|\",\":/\",\":\\\\\",\":$\",\":*\",\":@\",\":-(\",\":-)\",\":-P\",\":-p\",\":-O\",\":-3\",\":-|\",\":-/\",\":-\\\\\",\":-$\",\":-*\",\":-@\",\":^(\",\":^)\",\":^P\",\":^p\",\":^O\",\":^3\",\":^|\",\":^/\",\":^\\\\\",\":^$\",\":^*\",\":^@\",\"):\",\"(:\",\"$:\",\"*:\",\")-:\",\"(-:\",\"$-:\",\"*-:\",\")^:\",\"(^:\",\"$^:\",\"*^:\",\"<3\",\"</3\",\"<\\\\3\",\"=(\"].forEach((e=>No[e]=\"Emoticon\")),delete No[\"\"],delete No.null,delete No[\" \"];const Io=\"Singular\";var To={beforeTags:{Determiner:Io,Possessive:Io,Acronym:Io,Noun:Io,Adjective:Io,PresentTense:Io,Gerund:Io,PastTense:Io,Infinitive:Io,Date:Io,Ordinal:Io,Demonym:Io},afterTags:{Value:Io,Modal:Io,Copula:Io,PresentTense:Io,PastTense:Io,Demonym:Io,Actor:Io},beforeWords:{the:Io,with:Io,without:Io,of:Io,for:Io,any:Io,all:Io,on:Io,cut:Io,cuts:Io,increase:Io,decrease:Io,raise:Io,drop:Io,save:Io,saved:Io,saves:Io,make:Io,makes:Io,made:Io,minus:Io,plus:Io,than:Io,another:Io,versus:Io,neither:Io,about:Io,favorite:Io,best:Io,daily:Io,weekly:Io,linear:Io,binary:Io,mobile:Io,lexical:Io,technical:Io,computer:Io,scientific:Io,security:Io,government:Io,popular:Io,formal:Io,no:Io,more:Io,one:Io,let:Io,her:Io,his:Io,their:Io,our:Io,us:Io,sheer:Io,monthly:Io,yearly:Io,current:Io,previous:Io,upcoming:Io,last:Io,next:Io,main:Io,initial:Io,final:Io,beginning:Io,end:Io,top:Io,bottom:Io,future:Io,past:Io,major:Io,minor:Io,side:Io,central:Io,peripheral:Io,public:Io,private:Io},afterWords:{of:Io,system:Io,aid:Io,method:Io,utility:Io,tool:Io,reform:Io,therapy:Io,philosophy:Io,room:Io,authority:Io,says:Io,said:Io,wants:Io,wanted:Io,is:Io,did:Io,do:Io,can:Io,wise:Io}};const Do=\"Infinitive\";var Ho={beforeTags:{Modal:Do,Adverb:Do,Negative:Do,Plural:Do},afterTags:{Determiner:Do,Adverb:Do,Possessive:Do,Reflexive:Do,Preposition:Do,Cardinal:Do,Comparative:Do,Superlative:Do},beforeWords:{i:Do,we:Do,you:Do,they:Do,to:Do,please:Do,will:Do,have:Do,had:Do,would:Do,could:Do,should:Do,do:Do,did:Do,does:Do,can:Do,must:Do,us:Do,me:Do,let:Do,even:Do,when:Do,help:Do,he:Do,she:Do,it:Do,being:Do,bi:Do,co:Do,contra:Do,de:Do,inter:Do,intra:Do,mis:Do,pre:Do,out:Do,counter:Do,nobody:Do,somebody:Do,anybody:Do,everybody:Do},afterWords:{the:Do,me:Do,you:Do,him:Do,us:Do,her:Do,his:Do,them:Do,they:Do,it:Do,himself:Do,herself:Do,itself:Do,myself:Do,ourselves:Do,themselves:Do,something:Do,anything:Do,a:Do,an:Do,up:Do,down:Do,by:Do,out:Do,off:Do,under:Do,what:Do,all:Do,to:Do,because:Do,although:Do,how:Do,otherwise:Do,together:Do,though:Do,into:Do,yet:Do,more:Do,here:Do,there:Do,away:Do}};const Eo={beforeTags:Object.assign({},Ho.beforeTags,To.beforeTags,{}),afterTags:Object.assign({},Ho.afterTags,To.afterTags,{}),beforeWords:Object.assign({},Ho.beforeWords,To.beforeWords,{}),afterWords:Object.assign({},Ho.afterWords,To.afterWords,{})},Go=\"Adjective\";var Oo={beforeTags:{Determiner:Go,Possessive:Go,Hyphenated:Go},afterTags:{Adjective:Go},beforeWords:{seem:Go,seemed:Go,seems:Go,feel:Go,feels:Go,felt:Go,stay:Go,appear:Go,appears:Go,appeared:Go,also:Go,over:Go,under:Go,too:Go,it:Go,but:Go,still:Go,really:Go,quite:Go,well:Go,very:Go,truly:Go,how:Go,deeply:Go,hella:Go,profoundly:Go,extremely:Go,so:Go,badly:Go,mostly:Go,totally:Go,awfully:Go,rather:Go,nothing:Go,something:Go,anything:Go,not:Go,me:Go,is:Go,face:Go,faces:Go,faced:Go,look:Go,looks:Go,looked:Go,reveal:Go,reveals:Go,revealed:Go,sound:Go,sounded:Go,sounds:Go,remains:Go,remained:Go,prove:Go,proves:Go,proved:Go,becomes:Go,stays:Go,tastes:Go,taste:Go,smells:Go,smell:Go,gets:Go,grows:Go,as:Go,rings:Go,radiates:Go,conveys:Go,convey:Go,conveyed:Go,of:Go},afterWords:{too:Go,also:Go,or:Go,enough:Go,as:Go}};const Fo=\"Gerund\";var Vo={beforeTags:{Adverb:Fo,Preposition:Fo,Conjunction:Fo},afterTags:{Adverb:Fo,Possessive:Fo,Person:Fo,Pronoun:Fo,Determiner:Fo,Copula:Fo,Preposition:Fo,Conjunction:Fo,Comparative:Fo},beforeWords:{been:Fo,keep:Fo,continue:Fo,stop:Fo,am:Fo,be:Fo,me:Fo,began:Fo,start:Fo,starts:Fo,started:Fo,stops:Fo,stopped:Fo,help:Fo,helps:Fo,avoid:Fo,avoids:Fo,love:Fo,loves:Fo,loved:Fo,hate:Fo,hates:Fo,hated:Fo},afterWords:{you:Fo,me:Fo,her:Fo,him:Fo,his:Fo,them:Fo,their:Fo,it:Fo,this:Fo,there:Fo,on:Fo,about:Fo,for:Fo,up:Fo,down:Fo}};const zo=\"Gerund\",Bo=\"Adjective\",So={beforeTags:Object.assign({},Oo.beforeTags,Vo.beforeTags,{Imperative:zo,Infinitive:Bo,Plural:zo}),afterTags:Object.assign({},Oo.afterTags,Vo.afterTags,{Noun:Bo}),beforeWords:Object.assign({},Oo.beforeWords,Vo.beforeWords,{is:Bo,are:zo,was:Bo,of:Bo,suggest:zo,suggests:zo,suggested:zo,recommend:zo,recommends:zo,recommended:zo,imagine:zo,imagines:zo,imagined:zo,consider:zo,considered:zo,considering:zo,resist:zo,resists:zo,resisted:zo,avoid:zo,avoided:zo,avoiding:zo,except:Bo,accept:Bo,assess:zo,explore:zo,fear:zo,fears:zo,appreciate:zo,question:zo,help:zo,embrace:zo,with:Bo}),afterWords:Object.assign({},Oo.afterWords,Vo.afterWords,{to:zo,not:zo,the:zo})},$o={beforeTags:{Determiner:void 0,Cardinal:\"Noun\",PhrasalVerb:\"Adjective\"},afterTags:{}},Mo={beforeTags:Object.assign({},Oo.beforeTags,To.beforeTags,$o.beforeTags),afterTags:Object.assign({},Oo.afterTags,To.afterTags,$o.afterTags),beforeWords:Object.assign({},Oo.beforeWords,To.beforeWords,{are:\"Adjective\",is:\"Adjective\",was:\"Adjective\",be:\"Adjective\",off:\"Adjective\",out:\"Adjective\"}),afterWords:Object.assign({},Oo.afterWords,To.afterWords)},Lo=\"PastTense\",Ko=\"Adjective\",Jo={beforeTags:{Adverb:Lo,Pronoun:Lo,ProperNoun:Lo,Auxiliary:Lo,Noun:Lo},afterTags:{Possessive:Lo,Pronoun:Lo,Determiner:Lo,Adverb:Lo,Comparative:Lo,Date:Lo,Gerund:Lo},beforeWords:{be:Lo,who:Lo,get:Ko,had:Lo,has:Lo,have:Lo,been:Lo,it:Lo,as:Lo,for:Ko,more:Ko,always:Ko},afterWords:{by:Lo,back:Lo,out:Lo,in:Lo,up:Lo,down:Lo,before:Lo,after:Lo,for:Lo,the:Lo,with:Lo,as:Lo,on:Lo,at:Lo,between:Lo,to:Lo,into:Lo,us:Lo,them:Lo,his:Lo,her:Lo,their:Lo,our:Lo,me:Lo,about:Ko}};var Wo={beforeTags:Object.assign({},Oo.beforeTags,Jo.beforeTags),afterTags:Object.assign({},Oo.afterTags,Jo.afterTags),beforeWords:Object.assign({},Oo.beforeWords,Jo.beforeWords),afterWords:Object.assign({},Oo.afterWords,Jo.afterWords)};const qo={afterTags:{Noun:\"Adjective\",Conjunction:void 0}},Uo={beforeTags:Object.assign({},Oo.beforeTags,Ho.beforeTags,{Adverb:void 0,Negative:void 0}),afterTags:Object.assign({},Oo.afterTags,Ho.afterTags,qo.afterTags),beforeWords:Object.assign({},Oo.beforeWords,Ho.beforeWords,{have:void 0,had:void 0,not:void 0,went:\"Adjective\",goes:\"Adjective\",got:\"Adjective\",be:\"Adjective\"}),afterWords:Object.assign({},Oo.afterWords,Ho.afterWords,{to:void 0,as:\"Adjective\"})},Ro={Copula:\"Gerund\",PastTense:\"Gerund\",PresentTense:\"Gerund\",Infinitive:\"Gerund\"},Qo={Value:\"Gerund\"},Zo={are:\"Gerund\",were:\"Gerund\",be:\"Gerund\",no:\"Gerund\",without:\"Gerund\",you:\"Gerund\",we:\"Gerund\",they:\"Gerund\",he:\"Gerund\",she:\"Gerund\",us:\"Gerund\",them:\"Gerund\"},_o={the:\"Gerund\",this:\"Gerund\",that:\"Gerund\",me:\"Gerund\",us:\"Gerund\",them:\"Gerund\"},Xo={beforeTags:Object.assign({},Vo.beforeTags,To.beforeTags,Ro),afterTags:Object.assign({},Vo.afterTags,To.afterTags,Qo),beforeWords:Object.assign({},Vo.beforeWords,To.beforeWords,Zo),afterWords:Object.assign({},Vo.afterWords,To.afterWords,_o)},Yo=\"Singular\",ea=\"Infinitive\",ta={beforeTags:Object.assign({},Ho.beforeTags,To.beforeTags,{Adjective:Yo,Particle:Yo}),afterTags:Object.assign({},Ho.afterTags,To.afterTags,{ProperNoun:ea,Gerund:ea,Adjective:ea,Copula:Yo}),beforeWords:Object.assign({},Ho.beforeWords,To.beforeWords,{is:Yo,was:Yo,of:Yo,have:null}),afterWords:Object.assign({},Ho.afterWords,To.afterWords,{instead:ea,about:ea,his:ea,her:ea,to:null,by:null,in:null})},na=\"Person\";var ra={beforeTags:{Honorific:na,Person:na},afterTags:{Person:na,ProperNoun:na,Verb:na},beforeWords:{hi:na,hey:na,yo:na,dear:na,hello:na},afterWords:{said:na,says:na,told:na,tells:na,feels:na,felt:na,seems:na,thinks:na,thought:na,spends:na,spendt:na,plays:na,played:na,sing:na,sang:na,learn:na,learned:na,wants:na,wanted:na}};const oa=\"Month\",aa={beforeTags:{Date:oa,Value:oa},afterTags:{Date:oa,Value:oa},beforeWords:{by:oa,in:oa,on:oa,during:oa,after:oa,before:oa,between:oa,until:oa,til:oa,sometime:oa,of:oa,this:oa,next:oa,last:oa,previous:oa,following:oa,with:\"Person\"},afterWords:{sometime:oa,in:oa,of:oa,until:oa,the:oa}};var ia={beforeTags:Object.assign({},ra.beforeTags,aa.beforeTags),afterTags:Object.assign({},ra.afterTags,aa.afterTags),beforeWords:Object.assign({},ra.beforeWords,aa.beforeWords),afterWords:Object.assign({},ra.afterWords,aa.afterWords)};const sa=\"Place\",la={beforeTags:{Place:sa},afterTags:{Place:sa,Abbreviation:sa},beforeWords:{in:sa,by:sa,near:sa,from:sa,to:sa},afterWords:{in:sa,by:sa,near:sa,from:sa,to:sa,government:sa,council:sa,region:sa,city:sa}},ua=\"Unit\",ca={\"Actor|Verb\":Eo,\"Adj|Gerund\":So,\"Adj|Noun\":Mo,\"Adj|Past\":Wo,\"Adj|Present\":Uo,\"Noun|Verb\":ta,\"Noun|Gerund\":Xo,\"Person|Noun\":{beforeTags:Object.assign({},To.beforeTags,ra.beforeTags),afterTags:Object.assign({},To.afterTags,ra.afterTags),beforeWords:Object.assign({},To.beforeWords,ra.beforeWords,{i:\"Infinitive\",we:\"Infinitive\"}),afterWords:Object.assign({},To.afterWords,ra.afterWords)},\"Person|Date\":ia,\"Person|Verb\":{beforeTags:Object.assign({},To.beforeTags,ra.beforeTags,Ho.beforeTags),afterTags:Object.assign({},To.afterTags,ra.afterTags,Ho.afterTags),beforeWords:Object.assign({},To.beforeWords,ra.beforeWords,Ho.beforeWords),afterWords:Object.assign({},To.afterWords,ra.afterWords,Ho.afterWords)},\"Person|Place\":{beforeTags:Object.assign({},la.beforeTags,ra.beforeTags),afterTags:Object.assign({},la.afterTags,ra.afterTags),beforeWords:Object.assign({},la.beforeWords,ra.beforeWords),afterWords:Object.assign({},la.afterWords,ra.afterWords)},\"Person|Adj\":{beforeTags:Object.assign({},ra.beforeTags,Oo.beforeTags),afterTags:Object.assign({},ra.afterTags,Oo.afterTags),beforeWords:Object.assign({},ra.beforeWords,Oo.beforeWords),afterWords:Object.assign({},ra.afterWords,Oo.afterWords)},\"Unit|Noun\":{beforeTags:{Value:ua},afterTags:{},beforeWords:{per:ua,every:ua,each:ua,square:ua,cubic:ua,sq:ua,metric:ua},afterWords:{per:ua,squared:ua,cubed:ua,long:ua}}},ha=(e,t)=>{const n=Object.keys(e).reduce(((t,n)=>(t[n]=\"Infinitive\"===e[n]?\"PresentTense\":\"Plural\",t)),{});return Object.assign(n,t)};ca[\"Plural|Verb\"]={beforeWords:ha(ca[\"Noun|Verb\"].beforeWords,{had:\"Plural\",have:\"Plural\"}),afterWords:ha(ca[\"Noun|Verb\"].afterWords,{his:\"PresentTense\",her:\"PresentTense\",its:\"PresentTense\",in:null,to:null,is:\"PresentTense\",by:\"PresentTense\"}),beforeTags:ha(ca[\"Noun|Verb\"].beforeTags,{Conjunction:\"PresentTense\",Noun:void 0,ProperNoun:\"PresentTense\"}),afterTags:ha(ca[\"Noun|Verb\"].afterTags,{Gerund:\"Plural\",Noun:\"PresentTense\",Value:\"PresentTense\"})};const da=\"Adjective\",ga=\"Infinitive\",ma=\"PresentTense\",pa=\"Singular\",fa=\"PastTense\",ba=\"Adverb\",va=\"Plural\",ya=\"Actor\",wa=\"Verb\",ka=\"Noun\",Pa=\"LastName\",Aa=\"Modal\",Ca=\"Place\",Na=\"Participle\";var ja=[null,null,{ea:pa,ia:ka,ic:da,ly:ba,\"'n\":wa,\"'t\":wa},{oed:fa,ued:fa,xed:fa,\" so\":ba,\"'ll\":Aa,\"'re\":\"Copula\",azy:da,eer:ka,end:wa,ped:fa,ffy:da,ify:ga,ing:\"Gerund\",ize:ga,ibe:ga,lar:da,mum:da,nes:ma,nny:da,ous:da,que:da,ger:ka,ber:ka,rol:pa,sis:pa,ogy:pa,oid:pa,ian:pa,zes:ma,eld:fa,ken:Na,ven:Na,ten:Na,ect:ga,ict:ga,ign:ga,oze:ga,ful:da,bal:da,ton:ka,pur:Ca},{amed:fa,aped:fa,ched:fa,lked:fa,rked:fa,reed:fa,nded:fa,mned:da,cted:fa,dged:fa,ield:pa,akis:Pa,cede:ga,chuk:Pa,czyk:Pa,ects:ma,iend:pa,ends:wa,enko:Pa,ette:pa,iary:pa,wner:pa,fies:ma,fore:ba,gate:ga,gone:da,ices:va,ints:va,ruct:ga,ines:va,ions:va,ners:va,pers:va,lers:va,less:da,llen:da,made:da,nsen:Pa,oses:ma,ould:Aa,some:da,sson:Pa,ians:va,tion:pa,tage:ka,ique:pa,tive:da,tors:ka,vice:pa,lier:pa,fier:pa,wned:fa,gent:pa,tist:ya,pist:ya,rist:ya,mist:ya,yist:ya,vist:ya,ists:ya,lite:pa,site:pa,rite:pa,mite:pa,bite:pa,mate:pa,date:pa,ndal:pa,vent:pa,uist:ya,gist:ya,note:pa,cide:pa,ence:pa,wide:da,vide:ga,ract:ga,duce:ga,pose:ga,eive:ga,lyze:ga,lyse:ga,iant:da,nary:da,ghty:da,uent:da,erer:ya,bury:Ca,dorf:ka,esty:ka,wych:Ca,dale:Ca,folk:Ca,vale:Ca,abad:Ca,sham:Ca,wick:Ca,view:Ca},{elist:ya,holic:pa,phite:pa,tized:fa,urned:fa,eased:fa,ances:va,bound:da,ettes:va,fully:ba,ishes:ma,ities:va,marek:Pa,nssen:Pa,ology:ka,osome:pa,tment:pa,ports:va,rough:da,tches:ma,tieth:\"Ordinal\",tures:va,wards:ba,where:ba,archy:ka,pathy:ka,opoly:ka,embly:ka,phate:ka,ndent:pa,scent:pa,onist:ya,anist:ya,alist:ya,olist:ya,icist:ya,ounce:ga,iable:da,borne:da,gnant:da,inant:da,igent:da,atory:da,rient:pa,dient:pa,maker:ya,burgh:Ca,mouth:Ca,ceter:Ca,ville:Ca,hurst:Ca,stead:Ca,endon:Ca,brook:Ca,shire:Ca,worth:ka,field:\"ProperNoun\",ridge:Ca},{auskas:Pa,parent:pa,cedent:pa,ionary:pa,cklist:pa,brooke:Ca,keeper:ya,logist:ya,teenth:\"Value\",worker:ya,master:ya,writer:ya,brough:Ca,cester:Ca,ington:Ca,cliffe:Ca,ingham:Ca},{chester:Ca,logists:ya,opoulos:Pa,borough:Ca,sdottir:Pa}];const xa=\"Adjective\",Ia=\"Noun\",Ta=\"Verb\";var Da=[null,null,{},{neo:Ia,bio:Ia,\"de-\":Ta,\"re-\":Ta,\"un-\":Ta,\"ex-\":Ia},{anti:Ia,auto:Ia,faux:xa,hexa:Ia,kilo:Ia,mono:Ia,nano:Ia,octa:Ia,poly:Ia,semi:xa,tele:Ia,\"pro-\":xa,\"mis-\":Ta,\"dis-\":Ta,\"pre-\":xa},{anglo:Ia,centi:Ia,ethno:Ia,ferro:Ia,grand:Ia,hepta:Ia,hydro:Ia,intro:Ia,macro:Ia,micro:Ia,milli:Ia,nitro:Ia,penta:Ia,quasi:xa,radio:Ia,tetra:Ia,\"omni-\":xa,\"post-\":xa},{pseudo:xa,\"extra-\":xa,\"hyper-\":xa,\"inter-\":xa,\"intra-\":xa,\"deca-\":xa},{electro:Ia}];const Ha=\"Adjective\",Ea=\"Infinitive\",Ga=\"PresentTense\",Oa=\"Singular\",Fa=\"PastTense\",Va=\"Adverb\",za=\"Expression\",Ba=\"Actor\",Sa=\"Verb\",$a=\"Noun\",Ma=\"LastName\";var La={a:[[/.[aeiou]na$/,$a,\"tuna\"],[/.[oau][wvl]ska$/,Ma],[/.[^aeiou]ica$/,Oa,\"harmonica\"],[/^([hyj]a+)+$/,za,\"haha\"]],c:[[/.[^aeiou]ic$/,Ha]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,Fa,\"popped\"],[/.[aeo]{2}[bdgmnprvz]ed$/,Fa,\"rammed\"],[/.[aeiou][sg]hed$/,Fa,\"gushed\"],[/.[aeiou]red$/,Fa,\"hired\"],[/.[aeiou]r?ried$/,Fa,\"hurried\"],[/[^aeiou]ard$/,Oa,\"steward\"],[/[aeiou][^aeiou]id$/,Ha,\"\"],[/.[vrl]id$/,Ha,\"livid\"],[/..led$/,Fa,\"hurled\"],[/.[iao]sed$/,Fa,\"\"],[/[aeiou]n?[cs]ed$/,Fa,\"\"],[/[aeiou][rl]?[mnf]ed$/,Fa,\"\"],[/[aeiou][ns]?c?ked$/,Fa,\"bunked\"],[/[aeiou]gned$/,Fa],[/[aeiou][nl]?ged$/,Fa],[/.[tdbwxyz]ed$/,Fa],[/[^aeiou][aeiou][tvx]ed$/,Fa],[/.[cdflmnprstv]ied$/,Fa,\"emptied\"]],e:[[/.[lnr]ize$/,Ea,\"antagonize\"],[/.[^aeiou]ise$/,Ea,\"antagonise\"],[/.[aeiou]te$/,Ea,\"bite\"],[/.[^aeiou][ai]ble$/,Ha,\"fixable\"],[/.[^aeiou]eable$/,Ha,\"maleable\"],[/.[ts]ive$/,Ha,\"festive\"],[/[a-z]-like$/,Ha,\"woman-like\"]],h:[[/.[^aeiouf]ish$/,Ha,\"cornish\"],[/.v[iy]ch$/,Ma,\"..ovich\"],[/^ug?h+$/,za,\"ughh\"],[/^uh[ -]?oh$/,za,\"uhoh\"],[/[a-z]-ish$/,Ha,\"cartoon-ish\"]],i:[[/.[oau][wvl]ski$/,Ma,\"polish-male\"]],k:[[/^(k){2}$/,za,\"kkkk\"]],l:[[/.[gl]ial$/,Ha,\"familial\"],[/.[^aeiou]ful$/,Ha,\"fitful\"],[/.[nrtumcd]al$/,Ha,\"natal\"],[/.[^aeiou][ei]al$/,Ha,\"familial\"]],m:[[/.[^aeiou]ium$/,Oa,\"magnesium\"],[/[^aeiou]ism$/,Oa,\"schism\"],[/^[hu]m+$/,za,\"hmm\"],[/^\\d+ ?[ap]m$/,\"Date\",\"3am\"]],n:[[/.[lsrnpb]ian$/,Ha,\"republican\"],[/[^aeiou]ician$/,Ba,\"musician\"],[/[aeiou][ktrp]in'$/,\"Gerund\",\"cookin'\"]],o:[[/^no+$/,za,\"noooo\"],[/^(yo)+$/,za,\"yoo\"],[/^wo{2,}[pt]?$/,za,\"woop\"]],r:[[/.[bdfklmst]ler$/,\"Noun\"],[/[aeiou][pns]er$/,Oa],[/[^i]fer$/,Ea],[/.[^aeiou][ao]pher$/,Ba],[/.[lk]er$/,\"Noun\"],[/.ier$/,\"Comparative\"]],t:[[/.[di]est$/,\"Superlative\"],[/.[icldtgrv]ent$/,Ha],[/[aeiou].*ist$/,Ha],[/^[a-z]et$/,Sa]],s:[[/.[^aeiou]ises$/,Ga],[/.[rln]ates$/,Ga],[/.[^z]ens$/,Sa],[/.[lstrn]us$/,Oa],[/.[aeiou]sks$/,Ga],[/.[aeiou]kes$/,Ga],[/[aeiou][^aeiou]is$/,Oa],[/[a-z]'s$/,$a],[/^yes+$/,za]],v:[[/.[^aeiou][ai][kln]ov$/,Ma]],y:[[/.[cts]hy$/,Ha],[/.[st]ty$/,Ha],[/.[tnl]ary$/,Ha],[/.[oe]ry$/,Oa],[/[rdntkbhs]ly$/,Va],[/.(gg|bb|zz)ly$/,Ha],[/...lly$/,Va],[/.[gk]y$/,Ha],[/[bszmp]{2}y$/,Ha],[/.[ai]my$/,Ha],[/[ea]{2}zy$/,Ha],[/.[^aeiou]ity$/,Oa]]};const Ka=\"Verb\",Ja=\"Noun\";var Wa={leftTags:[[\"Adjective\",Ja],[\"Possessive\",Ja],[\"Determiner\",Ja],[\"Adverb\",Ka],[\"Pronoun\",Ka],[\"Value\",Ja],[\"Ordinal\",Ja],[\"Modal\",Ka],[\"Superlative\",Ja],[\"Demonym\",Ja],[\"Honorific\",\"Person\"]],leftWords:[[\"i\",Ka],[\"first\",Ja],[\"it\",Ka],[\"there\",Ka],[\"not\",Ka],[\"because\",Ja],[\"if\",Ja],[\"but\",Ja],[\"who\",Ka],[\"this\",Ja],[\"his\",Ja],[\"when\",Ja],[\"you\",Ka],[\"very\",\"Adjective\"],[\"old\",Ja],[\"never\",Ka],[\"before\",Ja],[\"a\",Ja],[\"the\",Ja],[\"been\",Ka]],rightTags:[[\"Copula\",Ja],[\"PastTense\",Ja],[\"Conjunction\",Ja],[\"Modal\",Ja]],rightWords:[[\"there\",Ka],[\"me\",Ka],[\"man\",\"Adjective\"],[\"him\",Ka],[\"it\",Ka],[\"were\",Ja],[\"took\",Ja],[\"himself\",Ka],[\"went\",Ja],[\"who\",Ja],[\"jr\",\"Person\"]]},qa={fwd:\"3:ser,ier¦1er:h,t,f,l,n¦1r:e¦2er:ss,or,om\",both:\"3er:ver,ear,alm¦3ner:hin¦3ter:lat¦2mer:im¦2er:ng,rm,mb¦2ber:ib¦2ger:ig¦1er:w,p,k,d¦ier:y\",rev:\"1:tter,yer¦2:uer,ver,ffer,oner,eler,ller,iler,ster,cer,uler,sher,ener,gher,aner,adder,nter,eter,rter,hter,rner,fter¦3:oser,ooler,eafer,user,airer,bler,maler,tler,eater,uger,rger,ainer,urer,ealer,icher,pler,emner,icter,nser,iser¦4:arser,viner,ucher,rosser,somer,ndomer,moter,oother,uarer,hiter¦5:nuiner,esser,emier¦ar:urther\",ex:\"worse:bad¦better:good¦4er:fair,gray,poor¦1urther:far¦3ter:fat,hot,wet¦3der:mad,sad¦3er:shy,fun¦4der:glad¦:¦4r:cute,dire,fake,fine,free,lame,late,pale,rare,ripe,rude,safe,sore,tame,wide¦5r:eerie,stale\"},Ua={fwd:\"1:nning,tting,rring,pping,eing,mming,gging,dding,bbing,kking¦2:eking,oling,eling,eming¦3:velling,siting,uiting,fiting,loting,geting,ialing,celling¦4:graming\",both:\"1:aing,iing,fing,xing,ying,oing,hing,wing¦2:tzing,rping,izzing,bting,mning,sping,wling,rling,wding,rbing,uping,lming,wning,mping,oning,lting,mbing,lking,fting,hting,sking,gning,pting,cking,ening,nking,iling,eping,ering,rting,rming,cting,lping,ssing,nting,nding,lding,sting,rning,rding,rking¦3:belling,siping,toming,yaking,uaking,oaning,auling,ooping,aiding,naping,euring,tolling,uzzing,ganing,haning,ualing,halling,iasing,auding,ieting,ceting,ouling,voring,ralling,garing,joring,oaming,oaking,roring,nelling,ooring,uelling,eaming,ooding,eaping,eeting,ooting,ooming,xiting,keting,ooking,ulling,airing,oaring,biting,outing,oiting,earing,naling,oading,eeding,ouring,eaking,aiming,illing,oining,eaning,onging,ealing,aining,eading¦4:thoming,melling,aboring,ivoting,weating,dfilling,onoring,eriting,imiting,tialling,rgining,otoring,linging,winging,lleting,louding,spelling,mpelling,heating,feating,opelling,choring,welling,ymaking,ctoring,calling,peating,iloring,laiting,utoring,uditing,mmaking,loating,iciting,waiting,mbating,voiding,otalling,nsoring,nselling,ocusing,itoring,eloping¦5:rselling,umpeting,atrolling,treating,tselling,rpreting,pringing,ummeting,ossoming,elmaking,eselling,rediting,totyping,onmaking,rfeiting,ntrolling¦5e:chmaking,dkeeping,severing,erouting,ecreting,ephoning,uthoring,ravening,reathing,pediting,erfering,eotyping,fringing,entoring,ombining,ompeting¦4e:emaking,eething,twining,rruling,chuting,xciting,rseding,scoping,edoring,pinging,lunging,agining,craping,pleting,eleting,nciting,nfining,ncoding,tponing,ecoding,writing,esaling,nvening,gnoring,evoting,mpeding,rvening,dhering,mpiling,storing,nviting,ploring¦3e:tining,nuring,saking,miring,haling,ceding,xuding,rining,nuting,laring,caring,miling,riding,hoking,piring,lading,curing,uading,noting,taping,futing,paring,hading,loding,siring,guring,vading,voking,during,niting,laning,caping,luting,muting,ruding,ciding,juring,laming,caling,hining,uoting,liding,ciling,duling,tuting,puting,cuting,coring,uiding,tiring,turing,siding,rading,enging,haping,buting,lining,taking,anging,haring,uiring,coming,mining,moting,suring,viding,luding¦2e:tring,zling,uging,oging,gling,iging,vring,fling,lging,obing,psing,pling,ubing,cling,dling,wsing,iking,rsing,dging,kling,ysing,tling,rging,eging,nsing,uning,osing,uming,using,ibing,bling,aging,ising,asing,ating¦2ie:rlying¦1e:zing,uing,cing,ving\",rev:\"ying:ie¦1ing:se,ke,te,we,ne,re,de,pe,me,le,c,he¦2ing:ll,ng,dd,ee,ye,oe,rg,us¦2ning:un¦2ging:og,ag,ug,ig,eg¦2ming:um¦2bing:ub,ab,eb,ob¦3ning:lan,can,hin,pin,win¦3ring:cur,lur,tir,tar,pur,car¦3ing:ait,del,eel,fin,eat,oat,eem,lel,ool,ein,uin¦3ping:rop,rap,top,uip,wap,hip,hop,lap,rip,cap¦3ming:tem,wim,rim,kim,lim¦3ting:mat,cut,pot,lit,lot,hat,set,pit,put¦3ding:hed,bed,bid¦3king:rek¦3ling:cil,pel¦3bing:rib¦4ning:egin¦4ing:isit,ruit,ilot,nsit,dget,rkel,ival,rcel¦4ring:efer,nfer¦4ting:rmit,mmit,ysit,dmit,emit,bmit,tfit,gret¦4ling:evel,xcel,ivel¦4ding:hred¦5ing:arget,posit,rofit¦5ring:nsfer¦5ting:nsmit,orget,cquit¦5ling:ancel,istil\",ex:\"3:adding,eating,aiming,aiding,airing,outing,gassing,setting,getting,putting,cutting,winning,sitting,betting,mapping,tapping,letting,bidding,hitting,tanning,netting,popping,fitting,capping,lapping,barring,banning,vetting,topping,rotting,tipping,potting,wetting,pitting,dipping,budding,hemming,pinning,jetting,kidding,padding,podding,sipping,wedding,bedding,donning,warring,penning,gutting,cueing,wadding,petting,ripping,napping,matting,tinning,binning,dimming,hopping,mopping,nodding,panning,rapping,ridding,sinning¦4:selling,falling,calling,waiting,editing,telling,rolling,heating,boating,hanging,beating,coating,singing,tolling,felling,polling,discing,seating,voiding,gelling,yelling,baiting,reining,ruining,seeking,spanning,stepping,knitting,emitting,slipping,quitting,dialing,omitting,clipping,shutting,skinning,abutting,flipping,trotting,cramming,fretting,suiting¦5:bringing,treating,spelling,stalling,trolling,expelling,rivaling,wringing,deterring,singeing,befitting,refitting¦6:enrolling,distilling,scrolling,strolling,caucusing,travelling¦7:installing,redefining,stencilling,recharging,overeating,benefiting,unraveling,programing¦9:reprogramming¦is:being¦2e:using,aging,owing¦3e:making,taking,coming,noting,hiring,filing,coding,citing,doping,baking,coping,hoping,lading,caring,naming,voting,riding,mining,curing,lining,ruling,typing,boring,dining,firing,hiding,piling,taping,waning,baling,boning,faring,honing,wiping,luring,timing,wading,piping,fading,biting,zoning,daring,waking,gaming,raking,ceding,tiring,coking,wining,joking,paring,gaping,poking,pining,coring,liming,toting,roping,wiring,aching¦4e:writing,storing,eroding,framing,smoking,tasting,wasting,phoning,shaking,abiding,braking,flaking,pasting,priming,shoring,sloping,withing,hinging¦5e:defining,refining,renaming,swathing,fringing,reciting¦1ie:dying,tying,lying,vying¦7e:sunbathing\"},Ra={fwd:\"1:mt¦2:llen¦3:iven,aken¦:ne¦y:in\",both:\"1:wn¦2:me,aten¦3:seen,bidden,isen¦4:roven,asten¦3l:pilt¦3d:uilt¦2e:itten¦1im:wum¦1eak:poken¦1ine:hone¦1ose:osen¦1in:gun¦1ake:woken¦ear:orn¦eal:olen¦eeze:ozen¦et:otten¦ink:unk¦ing:ung\",rev:\"2:un¦oken:eak¦ought:eek¦oven:eave¦1ne:o¦1own:ly¦1den:de¦1in:ay¦2t:am¦2n:ee¦3en:all¦4n:rive,sake,take¦5n:rgive\",ex:\"2:been¦3:seen,run¦4:given,taken¦5:shaken¦2eak:broken¦1ive:dove¦2y:flown¦3e:hidden,ridden¦1eek:sought¦1ake:woken¦1eave:woven\"},Qa={fwd:\"1:oes¦1ve:as\",both:\"1:xes¦2:zzes,ches,shes,sses¦3:iases¦2y:llies,plies¦1y:cies,bies,ties,vies,nies,pies,dies,ries,fies¦:s\",rev:\"1ies:ly¦2es:us,go,do¦3es:cho,eto\",ex:\"2:does,goes¦3:gasses¦5:focuses¦is:are¦3y:relies¦2y:flies¦2ve:has\"},Za={fwd:\"1st:e¦1est:l,m,f,s¦1iest:cey¦2est:or,ir¦3est:ver\",both:\"4:east¦5:hwest¦5lest:erful¦4est:weet,lgar,tter,oung¦4most:uter¦3est:ger,der,rey,iet,ong,ear¦3test:lat¦3most:ner¦2est:pt,ft,nt,ct,rt,ht¦2test:it¦2gest:ig¦1est:b,k,n,p,h,d,w¦iest:y\",rev:\"1:ttest,nnest,yest¦2:sest,stest,rmest,cest,vest,lmest,olest,ilest,ulest,ssest,imest,uest¦3:rgest,eatest,oorest,plest,allest,urest,iefest,uelest,blest,ugest,amest,yalest,ealest,illest,tlest,itest¦4:cerest,eriest,somest,rmalest,ndomest,motest,uarest,tiffest¦5:leverest,rangest¦ar:urthest¦3ey:riciest\",ex:\"best:good¦worst:bad¦5est:great¦4est:fast,full,fair,dull¦3test:hot,wet,fat¦4nest:thin¦1urthest:far¦3est:gay,shy,ill¦4test:neat¦4st:late,wide,fine,safe,cute,fake,pale,rare,rude,sore,ripe,dire¦6st:severe\"},_a={fwd:\"1:tistic,eable,lful,sful,ting,tty¦2:onate,rtable,geous,ced,seful,ctful¦3:ortive,ented¦arity:ear¦y:etic¦fulness:begone¦1ity:re¦1y:tiful,gic¦2ity:ile,imous,ilous,ime¦2ion:ated¦2eness:iving¦2y:trious¦2ation:iring¦2tion:vant¦3ion:ect¦3ce:mant,mantic¦3tion:irable¦3y:est,estic¦3m:mistic,listic¦3ess:ning¦4n:utious¦4on:rative,native,vative,ective¦4ce:erant\",both:\"1:king,wing¦2:alous,ltuous,oyful,rdous¦3:gorous,ectable,werful,amatic¦4:oised,usical,agical,raceful,ocused,lined,ightful¦5ness:stful,lding,itous,nuous,ulous,otous,nable,gious,ayful,rvous,ntous,lsive,peful,entle,ciful,osive,leful,isive,ncise,reful,mious¦5ty:ivacious¦5ties:ubtle¦5ce:ilient,adiant,atient¦5cy:icient¦5sm:gmatic¦5on:sessive,dictive¦5ity:pular,sonal,eative,entic¦5sity:uminous¦5ism:conic¦5nce:mperate¦5ility:mitable¦5ment:xcited¦5n:bitious¦4cy:brant,etent,curate¦4ility:erable,acable,icable,ptable¦4ty:nacious,aive,oyal,dacious¦4n:icious¦4ce:vient,erent,stent,ndent,dient,quent,ident¦4ness:adic,ound,hing,pant,sant,oing,oist,tute¦4icity:imple¦4ment:fined,mused¦4ism:otic¦4ry:dantic¦4ity:tund,eral¦4edness:hand¦4on:uitive¦4lity:pitable¦4sm:eroic,namic¦4sity:nerous¦3th:arm¦3ility:pable,bable,dable,iable¦3cy:hant,nant,icate¦3ness:red,hin,nse,ict,iet,ite,oud,ind,ied,rce¦3ion:lute¦3ity:ual,gal,volous,ial¦3ce:sent,fensive,lant,gant,gent,lent,dant¦3on:asive¦3m:fist,sistic,iastic¦3y:terious,xurious,ronic,tastic¦3ur:amorous¦3e:tunate¦3ation:mined¦3sy:rteous¦3ty:ain¦3ry:ave¦3ment:azed¦2ness:de,on,ue,rn,ur,ft,rp,pe,om,ge,rd,od,ay,ss,er,ll,oy,ap,ht,ld,ad,rt¦2inousness:umous¦2ity:neous,ene,id,ane¦2cy:bate,late¦2ation:ized¦2ility:oble,ible¦2y:odic¦2e:oving,aring¦2s:ost¦2itude:pt¦2dom:ee¦2ance:uring¦2tion:reet¦2ion:oted¦2sion:ending¦2liness:an¦2or:rdent¦1th:ung¦1e:uable¦1ness:w,h,k,f¦1ility:mble¦1or:vent¦1ement:ging¦1tiquity:ncient¦1ment:hed¦verty:or¦ength:ong¦eat:ot¦pth:ep¦iness:y\",rev:\"\",ex:\"5:forceful,humorous¦8:charismatic¦13:understanding¦5ity:active¦11ness:adventurous,inquisitive,resourceful¦8on:aggressive,automatic,perceptive¦7ness:amorous,fatuous,furtive,ominous,serious¦5ness:ample,sweet¦12ness:apprehensive,cantankerous,contemptuous,ostentatious¦13ness:argumentative,conscientious¦9ness:assertive,facetious,imperious,inventive,oblivious,rapacious,receptive,seditious,whimsical¦10ness:attractive,expressive,impressive,loquacious,salubrious,thoughtful¦3edom:boring¦4ness:calm,fast,keen,tame¦8ness:cheerful,gracious,specious,spurious,timorous,unctuous¦5sity:curious¦9ion:deliberate¦8ion:desperate¦6e:expensive¦7ce:fragrant¦3y:furious¦9ility:ineluctable¦6ism:mystical¦8ity:physical,proactive,sensitive,vertical¦5cy:pliant¦7ity:positive¦9ity:practical¦12ism:professional¦6ce:prudent¦3ness:red¦6cy:vagrant¦3dom:wise\"};const Xa=function(e=\"\",t={}){let n=function(e,t={}){return t.hasOwnProperty(e)?t[e]:null}(e,t.ex);return n=n||function(e,t=[]){for(let n=0;n<t.length;n+=1)if(e.endsWith(t[n]))return e;return null}(e,t.same),n=n||function(e,t,n={}){t=t||{};for(let r=e.length-1;r>=1;r-=1){let o=e.length-r,a=e.substring(o,e.length);if(!0===t.hasOwnProperty(a))return e.slice(0,o)+t[a];if(!0===n.hasOwnProperty(a))return e.slice(0,o)+n[a]}return t.hasOwnProperty(\"\")?e+t[\"\"]:n.hasOwnProperty(\"\")?e+n[\"\"]:null}(e,t.fwd,t.both),n=n||e,n},Ya=function(e){return Object.entries(e).reduce(((e,t)=>(e[t[1]]=t[0],e)),{})},ei=function(e={}){return{reversed:!0,both:Ya(e.both),ex:Ya(e.ex),fwd:e.rev||{}}},ti=/^([0-9]+)/,ni=function(e){let t=function(e){let t={};return e.split(\"¦\").forEach((e=>{let[n,r]=e.split(\":\");r=(r||\"\").split(\",\"),r.forEach((e=>{t[e]=n}))})),t}(e);return Object.keys(t).reduce(((e,n)=>(e[n]=function(e=\"\",t=\"\"){let n=(t=String(t)).match(ti);if(null===n)return t;let r=Number(n[1])||0;return e.substring(0,r)+t.replace(ti,\"\")}(n,t[n]),e)),{})},ri=function(e={}){return\"string\"==typeof e&&(e=JSON.parse(e)),e.fwd=ni(e.fwd||\"\"),e.both=ni(e.both||\"\"),e.rev=ni(e.rev||\"\"),e.ex=ni(e.ex||\"\"),e},oi=ri({fwd:\"1:tted,wed,gged,nned,een,rred,pped,yed,bbed,oed,dded,rd,wn,mmed¦2:eed,nded,et,hted,st,oled,ut,emed,eled,lded,ken,rt,nked,apt,ant,eped,eked¦3:eared,eat,eaded,nelled,ealt,eeded,ooted,eaked,eaned,eeted,mited,bid,uit,ead,uited,ealed,geted,velled,ialed,belled¦4:ebuted,hined,comed¦y:ied¦ome:ame¦ear:ore¦ind:ound¦ing:ung,ang¦ep:pt¦ink:ank,unk¦ig:ug¦all:ell¦ee:aw¦ive:ave¦eeze:oze¦old:eld¦ave:ft¦ake:ook¦ell:old¦ite:ote¦ide:ode¦ine:one¦in:un,on¦eal:ole¦im:am¦ie:ay¦and:ood¦1ise:rose¦1eak:roke¦1ing:rought¦1ive:rove¦1el:elt¦1id:bade¦1et:got¦1y:aid¦1it:sat¦3e:lid¦3d:pent\",both:\"1:aed,fed,xed,hed¦2:sged,xted,wled,rped,lked,kied,lmed,lped,uped,bted,rbed,rked,wned,rled,mped,fted,mned,mbed,zzed,omed,ened,cked,gned,lted,sked,ued,zed,nted,ered,rted,rmed,ced,sted,rned,ssed,rded,pted,ved,cted¦3:cled,eined,siped,ooned,uked,ymed,jored,ouded,ioted,oaned,lged,asped,iged,mured,oided,eiled,yped,taled,moned,yled,lit,kled,oaked,gled,naled,fled,uined,oared,valled,koned,soned,aided,obed,ibed,meted,nicked,rored,micked,keted,vred,ooped,oaded,rited,aired,auled,filled,ouled,ooded,ceted,tolled,oited,bited,aped,tled,vored,dled,eamed,nsed,rsed,sited,owded,pled,sored,rged,osed,pelled,oured,psed,oated,loned,aimed,illed,eured,tred,ioned,celled,bled,wsed,ooked,oiled,itzed,iked,iased,onged,ased,ailed,uned,umed,ained,auded,nulled,ysed,eged,ised,aged,oined,ated,used,dged,doned¦4:ntied,efited,uaked,caded,fired,roped,halled,roked,himed,culed,tared,lared,tuted,uared,routed,pited,naked,miled,houted,helled,hared,cored,caled,tired,peated,futed,ciled,called,tined,moted,filed,sided,poned,iloted,honed,lleted,huted,ruled,cured,named,preted,vaded,sured,talled,haled,peded,gined,nited,uided,ramed,feited,laked,gured,ctored,unged,pired,cuted,voked,eloped,ralled,rined,coded,icited,vided,uaded,voted,mined,sired,noted,lined,nselled,luted,jured,fided,puted,piled,pared,olored,cided,hoked,enged,tured,geoned,cotted,lamed,uiled,waited,udited,anged,luded,mired,uired,raded¦5:modelled,izzled,eleted,umpeted,ailored,rseded,treated,eduled,ecited,rammed,eceded,atrolled,nitored,basted,twined,itialled,ncited,gnored,ploded,xcited,nrolled,namelled,plored,efeated,redited,ntrolled,nfined,pleted,llided,lcined,eathed,ibuted,lloted,dhered,cceded¦3ad:sled¦2aw:drew¦2ot:hot¦2ke:made¦2ow:hrew,grew¦2ose:hose¦2d:ilt¦2in:egan¦1un:ran¦1ink:hought¦1ick:tuck¦1ike:ruck¦1eak:poke,nuck¦1it:pat¦1o:did¦1ow:new¦1ake:woke¦go:went\",rev:\"3:rst,hed,hut,cut,set¦4:tbid¦5:dcast,eread,pread,erbid¦ought:uy,eek¦1ied:ny,ly,dy,ry,fy,py,vy,by,ty,cy¦1ung:ling,ting,wing¦1pt:eep¦1ank:rink¦1ore:bear,wear¦1ave:give¦1oze:reeze¦1ound:rind,wind¦1ook:take,hake¦1aw:see¦1old:sell¦1ote:rite¦1ole:teal¦1unk:tink¦1am:wim¦1ay:lie¦1ood:tand¦1eld:hold¦2d:he,ge,re,le,leed,ne,reed,be,ye,lee,pe,we¦2ed:dd,oy,or,ey,gg,rr,us,ew,to¦2ame:ecome,rcome¦2ped:ap¦2ged:ag,og,ug,eg¦2bed:ub,ab,ib,ob¦2lt:neel¦2id:pay¦2ang:pring¦2ove:trive¦2med:um¦2ode:rride¦2at:ysit¦3ted:mit,hat,mat,lat,pot,rot,bat¦3ed:low,end,tow,und,ond,eem,lay,cho,dow,xit,eld,ald,uld,law,lel,eat,oll,ray,ank,fin,oam,out,how,iek,tay,haw,ait,vet,say,cay,bow¦3d:ste,ede,ode,ete,ree,ude,ame,oke,ote,ime,ute,ade¦3red:lur,cur,pur,car¦3ped:hop,rop,uip,rip,lip,tep,top¦3ded:bed,rod,kid¦3ade:orbid¦3led:uel¦3ned:lan,can,kin,pan,tun¦3med:rim,lim¦4ted:quit,llot¦4ed:pear,rrow,rand,lean,mand,anel,pand,reet,link,abel,evel,imit,ceed,ruit,mind,peal,veal,hool,head,pell,well,mell,uell,band,hear,weak¦4led:nnel,qual,ebel,ivel¦4red:nfer,efer,sfer¦4n:sake,trew¦4d:ntee¦4ded:hred¦4ned:rpin¦5ed:light,nceal,right,ndear,arget,hread,eight,rtial,eboot¦5d:edite,nvite¦5ted:egret¦5led:ravel\",ex:\"2:been,upped¦3:added,aged,aided,aimed,aired,bid,died,dyed,egged,erred,eyed,fit,gassed,hit,lied,owed,pent,pied,tied,used,vied,oiled,outed,banned,barred,bet,canned,cut,dipped,donned,ended,feed,inked,jarred,let,manned,mowed,netted,padded,panned,pitted,popped,potted,put,set,sewn,sowed,tanned,tipped,topped,vowed,weed,bowed,jammed,binned,dimmed,hopped,mopped,nodded,pinned,rigged,sinned,towed,vetted¦4:ached,baked,baled,boned,bored,called,caned,cared,ceded,cited,coded,cored,cubed,cured,dared,dined,edited,exited,faked,fared,filed,fined,fired,fuelled,gamed,gelled,hired,hoped,joked,lined,mined,named,noted,piled,poked,polled,pored,pulled,reaped,roamed,rolled,ruled,seated,shed,sided,timed,tolled,toned,voted,waited,walled,waned,winged,wiped,wired,zoned,yelled,tamed,lubed,roped,faded,mired,caked,honed,banged,culled,heated,raked,welled,banded,beat,cast,cooled,cost,dealt,feared,folded,footed,handed,headed,heard,hurt,knitted,landed,leaked,leapt,linked,meant,minded,molded,neared,needed,peaked,plodded,plotted,pooled,quit,read,rooted,sealed,seeded,seeped,shipped,shunned,skimmed,slammed,sparred,stemmed,stirred,suited,thinned,twinned,swayed,winked,dialed,abutted,blotted,fretted,healed,heeded,peeled,reeled¦5:basted,cheated,equalled,eroded,exiled,focused,opined,pleated,primed,quoted,scouted,shored,sloped,smoked,sniped,spelled,spouted,routed,staked,stored,swelled,tasted,treated,wasted,smelled,dwelled,honored,prided,quelled,eloped,scared,coveted,sweated,breaded,cleared,debuted,deterred,freaked,modeled,pleaded,rebutted,speeded¦6:anchored,defined,endured,impaled,invited,refined,revered,strolled,cringed,recast,thrust,unfolded¦7:authored,combined,competed,conceded,convened,excreted,extruded,redefined,restored,secreted,rescinded,welcomed¦8:expedited,infringed¦9:interfered,intervened,persevered¦10:contravened¦eat:ate¦is:was¦go:went¦are:were¦3d:bent,lent,rent,sent¦3e:bit,fled,hid,lost¦3ed:bled,bred¦2ow:blew,grew¦1uy:bought¦2tch:caught¦1o:did¦1ive:dove,gave¦2aw:drew¦2ed:fed¦2y:flew,laid,paid,said¦1ight:fought¦1et:got¦2ve:had¦1ang:hung¦2ad:led¦2ght:lit¦2ke:made¦2et:met¦1un:ran¦1ise:rose¦1it:sat¦1eek:sought¦1each:taught¦1ake:woke,took¦1eave:wove¦2ise:arose¦1ear:bore,tore,wore¦1ind:bound,found,wound¦2eak:broke¦2ing:brought,wrung¦1ome:came¦2ive:drove¦1ig:dug¦1all:fell¦2el:felt¦4et:forgot¦1old:held¦2ave:left¦1ing:rang,sang¦1ide:rode¦1ink:sank¦1ee:saw¦2ine:shone¦4e:slid¦1ell:sold,told¦4d:spent¦2in:spun¦1in:won\"}),ai=ri(Qa),ii=ri(Ua),si=ri(Ra),li=ei(oi),ui=ei(ai),ci=ei(ii),hi=ei(si),di=ri(qa),gi=ri(Za);var mi={fromPast:oi,fromPresent:ai,fromGerund:ii,fromParticiple:si,toPast:li,toPresent:ui,toGerund:ci,toParticiple:hi,toComparative:di,toSuperlative:gi,fromComparative:ei(di),fromSuperlative:ei(gi),adjToNoun:ri(_a)},pi=[\"academy\",\"administration\",\"agence\",\"agences\",\"agencies\",\"agency\",\"airlines\",\"airways\",\"army\",\"assoc\",\"associates\",\"association\",\"assurance\",\"authority\",\"autorite\",\"aviation\",\"bank\",\"banque\",\"board\",\"boys\",\"brands\",\"brewery\",\"brotherhood\",\"brothers\",\"bureau\",\"cafe\",\"co\",\"caisse\",\"capital\",\"care\",\"cathedral\",\"center\",\"centre\",\"chemicals\",\"choir\",\"chronicle\",\"church\",\"circus\",\"clinic\",\"clinique\",\"club\",\"co\",\"coalition\",\"coffee\",\"collective\",\"college\",\"commission\",\"committee\",\"communications\",\"community\",\"company\",\"comprehensive\",\"computers\",\"confederation\",\"conference\",\"conseil\",\"consulting\",\"containers\",\"corporation\",\"corps\",\"corp\",\"council\",\"crew\",\"data\",\"departement\",\"department\",\"departments\",\"design\",\"development\",\"directorate\",\"division\",\"drilling\",\"education\",\"eglise\",\"electric\",\"electricity\",\"energy\",\"ensemble\",\"enterprise\",\"enterprises\",\"entertainment\",\"estate\",\"etat\",\"faculty\",\"faction\",\"federation\",\"financial\",\"fm\",\"foundation\",\"fund\",\"gas\",\"gazette\",\"girls\",\"government\",\"group\",\"guild\",\"herald\",\"holdings\",\"hospital\",\"hotel\",\"hotels\",\"inc\",\"industries\",\"institut\",\"institute\",\"institutes\",\"insurance\",\"international\",\"interstate\",\"investment\",\"investments\",\"investors\",\"journal\",\"laboratory\",\"labs\",\"llc\",\"ltd\",\"limited\",\"machines\",\"magazine\",\"management\",\"marine\",\"marketing\",\"markets\",\"media\",\"memorial\",\"ministere\",\"ministry\",\"military\",\"mobile\",\"motor\",\"motors\",\"musee\",\"museum\",\"news\",\"observatory\",\"office\",\"oil\",\"optical\",\"orchestra\",\"organization\",\"partners\",\"partnership\",\"petrol\",\"petroleum\",\"pharmacare\",\"pharmaceutical\",\"pharmaceuticals\",\"pizza\",\"plc\",\"police\",\"politburo\",\"polytechnic\",\"post\",\"power\",\"press\",\"productions\",\"quartet\",\"radio\",\"reserve\",\"resources\",\"restaurant\",\"restaurants\",\"savings\",\"school\",\"securities\",\"service\",\"services\",\"societe\",\"subsidiary\",\"society\",\"sons\",\"subcommittee\",\"syndicat\",\"systems\",\"telecommunications\",\"telegraph\",\"television\",\"times\",\"tribunal\",\"tv\",\"union\",\"university\",\"utilities\",\"workers\"].reduce(((e,t)=>(e[t]=!0,e)),{}),fi=[\"atoll\",\"basin\",\"bay\",\"beach\",\"bluff\",\"bog\",\"camp\",\"canyon\",\"canyons\",\"cape\",\"cave\",\"caves\",\"cliffs\",\"coast\",\"cove\",\"coves\",\"crater\",\"crossing\",\"creek\",\"desert\",\"dune\",\"dunes\",\"downs\",\"estates\",\"escarpment\",\"estuary\",\"falls\",\"fjord\",\"fjords\",\"forest\",\"forests\",\"glacier\",\"gorge\",\"gorges\",\"grove\",\"gulf\",\"gully\",\"highland\",\"heights\",\"hollow\",\"hill\",\"hills\",\"inlet\",\"island\",\"islands\",\"isthmus\",\"junction\",\"knoll\",\"lagoon\",\"lake\",\"lakeshore\",\"marsh\",\"marshes\",\"mount\",\"mountain\",\"mountains\",\"narrows\",\"peninsula\",\"plains\",\"plateau\",\"pond\",\"rapids\",\"ravine\",\"reef\",\"reefs\",\"ridge\",\"river\",\"rivers\",\"sandhill\",\"shoal\",\"shore\",\"shoreline\",\"shores\",\"strait\",\"straits\",\"springs\",\"stream\",\"swamp\",\"tombolo\",\"trail\",\"trails\",\"trench\",\"valley\",\"vallies\",\"village\",\"volcano\",\"waterfall\",\"watershed\",\"wetland\",\"woods\",\"acres\",\"burough\",\"county\",\"district\",\"municipality\",\"prefecture\",\"province\",\"region\",\"reservation\",\"state\",\"territory\",\"borough\",\"metropolis\",\"downtown\",\"uptown\",\"midtown\",\"city\",\"town\",\"township\",\"hamlet\",\"country\",\"kingdom\",\"enclave\",\"neighbourhood\",\"neighborhood\",\"kingdom\",\"ward\",\"zone\",\"airport\",\"amphitheater\",\"arch\",\"arena\",\"auditorium\",\"bar\",\"barn\",\"basilica\",\"battlefield\",\"bridge\",\"building\",\"castle\",\"centre\",\"coliseum\",\"cineplex\",\"complex\",\"dam\",\"farm\",\"field\",\"fort\",\"garden\",\"gardens\",\"gymnasium\",\"hall\",\"house\",\"levee\",\"library\",\"manor\",\"memorial\",\"monument\",\"museum\",\"gallery\",\"palace\",\"pillar\",\"pits\",\"plantation\",\"playhouse\",\"quarry\",\"sportsfield\",\"sportsplex\",\"stadium\",\"terrace\",\"terraces\",\"theater\",\"tower\",\"park\",\"parks\",\"site\",\"ranch\",\"raceway\",\"sportsplex\",\"ave\",\"st\",\"street\",\"rd\",\"road\",\"lane\",\"landing\",\"crescent\",\"cr\",\"way\",\"tr\",\"terrace\",\"avenue\"].reduce(((e,t)=>(e[t]=!0,e)),{}),bi=[[/([^v])ies$/i,\"$1y\"],[/(ise)s$/i,\"$1\"],[/(kn|[^o]l|w)ives$/i,\"$1ife\"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,\"$1f\"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,\"$1f\"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,\"$1a\"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,\"$1us\"],[/(buffal|tomat|tornad)(oes)$/i,\"$1o\"],[/(ause)s$/i,\"$1\"],[/(ease)s$/i,\"$1\"],[/(ious)es$/i,\"$1\"],[/(ouse)s$/i,\"$1\"],[/(ose)s$/i,\"$1\"],[/(..ase)s$/i,\"$1\"],[/(..[aeiu]s)es$/i,\"$1\"],[/(vert|ind|cort)(ices)$/i,\"$1ex\"],[/(matr|append)(ices)$/i,\"$1ix\"],[/([xo]|ch|ss|sh)es$/i,\"$1\"],[/men$/i,\"man\"],[/(n)ews$/i,\"$1ews\"],[/([ti])a$/i,\"$1um\"],[/([^aeiouy]|qu)ies$/i,\"$1y\"],[/(s)eries$/i,\"$1eries\"],[/(m)ovies$/i,\"$1ovie\"],[/(cris|ax|test)es$/i,\"$1is\"],[/(alias|status)es$/i,\"$1\"],[/(ss)$/i,\"$1\"],[/(ic)s$/i,\"$1\"],[/s$/i,\"\"]];const vi=function(e,t){const{irregularPlurals:n}=t.two,r=(o=n,Object.keys(o).reduce(((e,t)=>(e[o[t]]=t,e)),{}));var o;if(r.hasOwnProperty(e))return r[e];for(let t=0;t<bi.length;t++)if(!0===bi[t][0].test(e))return e=e.replace(bi[t][0],bi[t][1]);return e};var yi={toPlural:Ao,toSingular:vi,all:function(e,t){const n=[e],r=Ao(e,t);r!==e&&n.push(r);const o=vi(e,t);return o!==e&&n.push(o),n}};let wi={Gerund:[\"ing\"],Actor:[\"erer\"],Infinitive:[\"ate\",\"ize\",\"tion\",\"rify\",\"then\",\"ress\",\"ify\",\"age\",\"nce\",\"ect\",\"ise\",\"ine\",\"ish\",\"ace\",\"ash\",\"ure\",\"tch\",\"end\",\"ack\",\"and\",\"ute\",\"ade\",\"ock\",\"ite\",\"ase\",\"ose\",\"use\",\"ive\",\"int\",\"nge\",\"lay\",\"est\",\"ain\",\"ant\",\"ent\",\"eed\",\"er\",\"le\",\"unk\",\"ung\",\"upt\",\"en\"],PastTense:[\"ept\",\"ed\",\"lt\",\"nt\",\"ew\",\"ld\"],PresentTense:[\"rks\",\"cks\",\"nks\",\"ngs\",\"mps\",\"tes\",\"zes\",\"ers\",\"les\",\"acks\",\"ends\",\"ands\",\"ocks\",\"lays\",\"eads\",\"lls\",\"els\",\"ils\",\"ows\",\"nds\",\"ays\",\"ams\",\"ars\",\"ops\",\"ffs\",\"als\",\"urs\",\"lds\",\"ews\",\"ips\",\"es\",\"ts\",\"ns\"],Participle:[\"ken\",\"wn\"]};wi=Object.keys(wi).reduce(((e,t)=>(wi[t].forEach((n=>e[n]=t)),e)),{});const ki=function(e){const t=e.substring(e.length-3);if(!0===wi.hasOwnProperty(t))return wi[t];const n=e.substring(e.length-2);if(!0===wi.hasOwnProperty(n))return wi[n];return\"s\"===e.substring(e.length-1)?\"PresentTense\":null},Pi={are:\"be\",were:\"be\",been:\"be\",is:\"be\",am:\"be\",was:\"be\",be:\"be\",being:\"be\"},Ai=function(e,t,n){const{fromPast:r,fromPresent:o,fromGerund:a,fromParticiple:i}=t.two.models,{prefix:s,verb:l,particle:u}=function(e,t){let n=\"\",r={};t.one&&t.one.prefixes&&(r=t.one.prefixes);let[o,a]=e.split(/ /);return a&&!0===r[o]&&(n=o,o=a,a=\"\"),{prefix:n,verb:o,particle:a}}(e,t);let c=\"\";if(n||(n=ki(e)),Pi.hasOwnProperty(e))c=Pi[e];else if(\"Participle\"===n)c=Xa(l,i);else if(\"PastTense\"===n)c=Xa(l,r);else if(\"PresentTense\"===n)c=Xa(l,o);else{if(\"Gerund\"!==n)return e;c=Xa(l,a)}return u&&(c+=\" \"+u),s&&(c=s+\" \"+c),c},Ci=function(e,t){const{toPast:n,toPresent:r,toGerund:o,toParticiple:a}=t.two.models;if(\"be\"===e)return{Infinitive:e,Gerund:\"being\",PastTense:\"was\",PresentTense:\"is\"};const[i,s]=(e=>/ /.test(e)?e.split(/ /):[e,\"\"])(e),l={Infinitive:i,PastTense:Xa(i,n),PresentTense:Xa(i,r),Gerund:Xa(i,o),FutureTense:\"will \"+i};let u=Xa(i,a);if(u!==e&&u!==l.PastTense){const n=t.one.lexicon||{};\"Participle\"!==n[u]&&\"Adjective\"!==n[u]||(\"play\"===e&&(u=\"played\"),l.Participle=u)}return s&&Object.keys(l).forEach((e=>{l[e]+=\" \"+s})),l};var Ni={toInfinitive:Ai,conjugate:Ci,all:function(e,t){const n=Ci(e,t);return delete n.FutureTense,Object.values(n).filter((e=>e))}};const ji=function(e,t){const n=t.two.models.toSuperlative;return Xa(e,n)},xi=function(e,t){const n=t.two.models.toComparative;return Xa(e,n)},Ii=function(e=\"\",t=[]){const n=e.length;for(let r=n<=6?n-1:6;r>=1;r-=1){const o=e.substring(n-r,e.length);if(!0===t[o.length].hasOwnProperty(o)){return e.slice(0,n-r)+t[o.length][o]}}return null},Ti=\"ically\",Di=new Set([\"analyt\"+Ti,\"chem\"+Ti,\"class\"+Ti,\"clin\"+Ti,\"crit\"+Ti,\"ecolog\"+Ti,\"electr\"+Ti,\"empir\"+Ti,\"frant\"+Ti,\"grammat\"+Ti,\"ident\"+Ti,\"ideolog\"+Ti,\"log\"+Ti,\"mag\"+Ti,\"mathemat\"+Ti,\"mechan\"+Ti,\"med\"+Ti,\"method\"+Ti,\"method\"+Ti,\"mus\"+Ti,\"phys\"+Ti,\"phys\"+Ti,\"polit\"+Ti,\"pract\"+Ti,\"rad\"+Ti,\"satir\"+Ti,\"statist\"+Ti,\"techn\"+Ti,\"technolog\"+Ti,\"theoret\"+Ti,\"typ\"+Ti,\"vert\"+Ti,\"whims\"+Ti]),Hi=[null,{},{ly:\"\"},{ily:\"y\",bly:\"ble\",ply:\"ple\"},{ally:\"al\",rply:\"rp\"},{ually:\"ual\",ially:\"ial\",cally:\"cal\",eally:\"eal\",rally:\"ral\",nally:\"nal\",mally:\"mal\",eeply:\"eep\",eaply:\"eap\"},{ically:\"ic\"}],Ei=new Set([\"early\",\"only\",\"hourly\",\"daily\",\"weekly\",\"monthly\",\"yearly\",\"mostly\",\"duly\",\"unduly\",\"especially\",\"undoubtedly\",\"conversely\",\"namely\",\"exceedingly\",\"presumably\",\"accordingly\",\"overly\",\"best\",\"latter\",\"little\",\"long\",\"low\"]),Gi={wholly:\"whole\",fully:\"full\",truly:\"true\",gently:\"gentle\",singly:\"single\",customarily:\"customary\",idly:\"idle\",publically:\"public\",quickly:\"quick\",superbly:\"superb\",cynically:\"cynical\",well:\"good\"},Oi=[null,{y:\"ily\"},{ly:\"ly\",ic:\"ically\"},{ial:\"ially\",ual:\"ually\",tle:\"tly\",ble:\"bly\",ple:\"ply\",ary:\"arily\"},{},{},{}],Fi={cool:\"cooly\",whole:\"wholly\",full:\"fully\",good:\"well\",idle:\"idly\",public:\"publicly\",single:\"singly\",special:\"especially\"},Vi=function(e){if(Fi.hasOwnProperty(e))return Fi[e];let t=Ii(e,Oi);return t||(t=e+\"ly\"),t};var zi={toSuperlative:ji,toComparative:xi,toAdverb:Vi,toNoun:function(e,t){const n=t.two.models.adjToNoun;return Xa(e,n)},fromAdverb:function(e){return e.endsWith(\"ly\")?Di.has(e)?e.replace(/ically/,\"ical\"):Ei.has(e)?null:Gi.hasOwnProperty(e)?Gi[e]:Ii(e,Hi)||e:null},fromSuperlative:function(e,t){const n=t.two.models.fromSuperlative;return Xa(e,n)},fromComparative:function(e,t){const n=t.two.models.fromComparative;return Xa(e,n)},all:function(e,t){let n=[e];return n.push(ji(e,t)),n.push(xi(e,t)),n.push(Vi(e)),n=n.filter((e=>e)),n=new Set(n),Array.from(n)}},Bi={noun:yi,verb:Ni,adjective:zi},Si={Singular:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.noun.toPlural(e,r);o[a]||(t[a]=t[a]||\"Plural\")},Actor:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.noun.toPlural(e,r);o[a]||(t[a]=t[a]||[\"Plural\",\"Actor\"])},Comparable:(e,t,n,r)=>{const o=r.one.lexicon,{toSuperlative:a,toComparative:i}=n.two.transform.adjective,s=a(e,r);o[s]||(t[s]=t[s]||\"Superlative\");const l=i(e,r);o[l]||(t[l]=t[l]||\"Comparative\"),t[e]=\"Adjective\"},Demonym:(e,t,n,r)=>{const o=n.two.transform.noun.toPlural(e,r);t[o]=t[o]||[\"Demonym\",\"Plural\"]},Infinitive:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.verb.conjugate(e,r);Object.entries(a).forEach((e=>{o[e[1]]||t[e[1]]||\"FutureTense\"===e[0]||(t[e[1]]=e[0])}))},PhrasalVerb:(e,t,n,r)=>{const o=r.one.lexicon;t[e]=[\"PhrasalVerb\",\"Infinitive\"];const a=r.one._multiCache,[i,s]=e.split(\" \");o[i]||(t[i]=t[i]||\"Infinitive\");const l=n.two.transform.verb.conjugate(i,r);delete l.FutureTense,Object.entries(l).forEach((e=>{if(\"Actor\"===e[0]||\"\"===e[1])return;t[e[1]]||o[e[1]]||(t[e[1]]=e[0]),a[e[1]]=2;const n=e[1]+\" \"+s;t[n]=t[n]||[e[0],\"PhrasalVerb\"]}))},Multiple:(e,t)=>{t[e]=[\"Multiple\",\"Cardinal\"],t[e+\"th\"]=[\"Multiple\",\"Ordinal\"],t[e+\"ths\"]=[\"Multiple\",\"Fraction\"]},Cardinal:(e,t)=>{t[e]=[\"TextValue\",\"Cardinal\"]},Ordinal:(e,t)=>{t[e]=[\"TextValue\",\"Ordinal\"],t[e+\"s\"]=[\"TextValue\",\"Fraction\"]},Place:(e,t)=>{t[e]=[\"Place\",\"ProperNoun\"]},Region:(e,t)=>{t[e]=[\"Region\",\"ProperNoun\"]}};const $i={e:[\"mice\",\"louse\",\"antennae\",\"formulae\",\"nebulae\",\"vertebrae\",\"vitae\"],i:[\"tia\",\"octopi\",\"viri\",\"radii\",\"nuclei\",\"fungi\",\"cacti\",\"stimuli\"],n:[\"men\"],t:[\"feet\"]},Mi=new Set([\"israelis\",\"menus\",\"logos\"]),Li=[\"bus\",\"mas\",\"was\",\"ias\",\"xas\",\"vas\",\"cis\",\"lis\",\"nis\",\"ois\",\"ris\",\"sis\",\"tis\",\"xis\",\"aus\",\"cus\",\"eus\",\"fus\",\"gus\",\"ius\",\"lus\",\"nus\",\"das\",\"ous\",\"pus\",\"rus\",\"sus\",\"tus\",\"xus\",\"aos\",\"igos\",\"ados\",\"ogos\",\"'s\",\"ss\"],Ki=function(e){if(!e||e.length<=3)return!1;if(Mi.has(e))return!0;const t=e[e.length-1];return $i.hasOwnProperty(t)?$i[t].find((t=>e.endsWith(t))):\"s\"===t&&!Li.find((t=>e.endsWith(t)))};var Ji={two:{quickSplit:function(e){const t=/[,:;]/,n=[];return e.forEach((e=>{let r=0;e.forEach(((o,a)=>{t.test(o.post)&&function(e,t){const n=/^[0-9]+$/,r=e[t];if(!r)return!1;const o=new Set([\"may\",\"april\",\"august\",\"jan\"]);if(\"like\"===r.normal||o.has(r.normal))return!1;if(r.tags.has(\"Place\")||r.tags.has(\"Date\"))return!1;if(e[t-1]){const n=e[t-1];if(n.tags.has(\"Date\")||o.has(n.normal))return!1;if(n.tags.has(\"Adjective\")||r.tags.has(\"Adjective\"))return!1}const a=r.normal;return 1!==a.length&&2!==a.length&&4!==a.length||!n.test(a)}(e,a+1)&&(n.push(e.slice(r,a+1)),r=a+1)})),r<e.length&&n.push(e.slice(r,e.length))})),n},expandLexicon:function(e,t){const{methods:n,model:r}=t,o={},a={};return Object.keys(e).forEach((t=>{const i=e[t],s=(t=(t=t.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);s.length>1&&(void 0===a[s[0]]||s.length>a[s[0]])&&(a[s[0]]=s.length),!0===Si.hasOwnProperty(i)&&Si[i](t,o,n,r),o[t]=o[t]||i})),delete o[\"\"],delete o.null,delete o[\" \"],{lex:o,_multi:a}},transform:Bi,looksPlural:Ki}};const Wi={one:{lexicon:{}},two:{models:mi}},qi={\"Actor|Verb\":\"Actor\",\"Adj|Gerund\":\"Adjective\",\"Adj|Noun\":\"Adjective\",\"Adj|Past\":\"Adjective\",\"Adj|Present\":\"Adjective\",\"Noun|Verb\":\"Singular\",\"Noun|Gerund\":\"Gerund\",\"Person|Noun\":\"Noun\",\"Person|Date\":\"Month\",\"Person|Verb\":\"FirstName\",\"Person|Place\":\"Person\",\"Person|Adj\":\"Comparative\",\"Plural|Verb\":\"Plural\",\"Unit|Noun\":\"Noun\"},Ui=function(e,t){const n={model:t,methods:Ji},{lex:r,_multi:o}=Ji.two.expandLexicon(e,n);return Object.assign(t.one.lexicon,r),Object.assign(t.one._multiCache,o),t},Ri=function(e,t,n){const r=Ci(e,Wi);t[r.PastTense]=t[r.PastTense]||\"PastTense\",t[r.Gerund]=t[r.Gerund]||\"Gerund\",!0===n&&(t[r.PresentTense]=t[r.PresentTense]||\"PresentTense\")},Qi=function(e,t,n){const r=ji(e,n);t[r]=t[r]||\"Superlative\";const o=xi(e,n);t[o]=t[o]||\"Comparative\"},Zi=function(e,t){const n={},r=t.one.lexicon;return Object.keys(e).forEach((o=>{const a=e[o];if(n[o]=qi[a],\"Noun|Verb\"!==a&&\"Person|Verb\"!==a&&\"Actor|Verb\"!==a||Ri(o,r,!1),\"Adj|Present\"===a&&(Ri(o,r,!0),Qi(o,r,t)),\"Person|Adj\"===a&&Qi(o,r,t),\"Adj|Gerund\"===a||\"Noun|Gerund\"===a){const e=Ai(o,Wi,\"Gerund\");r[e]||(n[e]=\"Infinitive\")}if(\"Noun|Gerund\"!==a&&\"Adj|Noun\"!==a&&\"Person|Noun\"!==a||function(e,t,n){const r=Ao(e,n);t[r]=t[r]||\"Plural\"}(o,r,t),\"Adj|Past\"===a){const e=Ai(o,Wi,\"PastTense\");r[e]||(n[e]=\"Infinitive\")}})),t=Ui(n,t)};let _i={one:{_multiCache:{},lexicon:No,frozenLex:{\"20th century fox\":\"Organization\",\"7 eleven\":\"Organization\",\"motel 6\":\"Organization\",\"excuse me\":\"Expression\",\"financial times\":\"Organization\",\"guns n roses\":\"Organization\",\"la z boy\":\"Organization\",\"labour party\":\"Organization\",\"new kids on the block\":\"Organization\",\"new york times\":\"Organization\",\"the guess who\":\"Organization\",\"thin lizzy\":\"Organization\",\"prime minister\":\"Actor\",\"free market\":\"Singular\",\"lay up\":\"Singular\",\"living room\":\"Singular\",\"living rooms\":\"Plural\",\"spin off\":\"Singular\",\"appeal court\":\"Uncountable\",\"cold war\":\"Uncountable\",\"gene pool\":\"Uncountable\",\"machine learning\":\"Uncountable\",\"nail polish\":\"Uncountable\",\"time off\":\"Uncountable\",\"take part\":\"Infinitive\",\"bill gates\":\"Person\",\"doctor who\":\"Person\",\"dr who\":\"Person\",\"he man\":\"Person\",\"iron man\":\"Person\",\"kid cudi\":\"Person\",\"run dmc\":\"Person\",\"rush limbaugh\":\"Person\",\"snow white\":\"Person\",\"tiger woods\":\"Person\",\"brand new\":\"Adjective\",\"en route\":\"Adjective\",\"left wing\":\"Adjective\",\"off guard\":\"Adjective\",\"on board\":\"Adjective\",\"part time\":\"Adjective\",\"right wing\":\"Adjective\",\"so called\":\"Adjective\",\"spot on\":\"Adjective\",\"straight forward\":\"Adjective\",\"super duper\":\"Adjective\",\"tip top\":\"Adjective\",\"top notch\":\"Adjective\",\"up to date\":\"Adjective\",\"win win\":\"Adjective\",\"brooklyn nets\":\"SportsTeam\",\"chicago bears\":\"SportsTeam\",\"houston astros\":\"SportsTeam\",\"houston dynamo\":\"SportsTeam\",\"houston rockets\":\"SportsTeam\",\"houston texans\":\"SportsTeam\",\"minnesota twins\":\"SportsTeam\",\"orlando magic\":\"SportsTeam\",\"san antonio spurs\":\"SportsTeam\",\"san diego chargers\":\"SportsTeam\",\"san diego padres\":\"SportsTeam\",\"iron maiden\":\"ProperNoun\",\"isle of man\":\"Country\",\"united states\":\"Country\",\"united states of america\":\"Country\",\"prince edward island\":\"Region\",\"cedar breaks\":\"Place\",\"cedar falls\":\"Place\",\"point blank\":\"Adverb\",\"tiny bit\":\"Adverb\",\"by the time\":\"Conjunction\",\"no matter\":\"Conjunction\",\"civil wars\":\"Plural\",\"credit cards\":\"Plural\",\"default rates\":\"Plural\",\"free markets\":\"Plural\",\"head starts\":\"Plural\",\"home runs\":\"Plural\",\"lay ups\":\"Plural\",\"phone calls\":\"Plural\",\"press releases\":\"Plural\",\"record labels\":\"Plural\",\"soft serves\":\"Plural\",\"student loans\":\"Plural\",\"tax returns\":\"Plural\",\"tv shows\":\"Plural\",\"video games\":\"Plural\",\"took part\":\"PastTense\",\"takes part\":\"PresentTense\",\"taking part\":\"Gerund\",\"taken part\":\"Participle\",\"light bulb\":\"Noun\",\"rush hour\":\"Noun\",\"fluid ounce\":\"Unit\",\"the rolling stones\":\"Organization\"}},two:{irregularPlurals:ho,models:mi,suffixPatterns:ja,prefixPatterns:Da,endsWith:La,neighbours:Wa,regexNormal:[[/^[\\w.]+@[\\w.]+\\.[a-z]{2,3}$/,\"Email\"],[/^(https?:\\/\\/|www\\.)+\\w+\\.[a-z]{2,3}/,\"Url\",\"http..\"],[/^[a-z0-9./].+\\.(com|net|gov|org|ly|edu|info|biz|dev|ru|jp|de|in|uk|br|io|ai)/,\"Url\",\".com\"],[/^[PMCE]ST$/,\"Timezone\",\"EST\"],[/^ma?c'[a-z]{3}/,\"LastName\",\"mc'neil\"],[/^o'[a-z]{3}/,\"LastName\",\"o'connor\"],[/^ma?cd[aeiou][a-z]{3}/,\"LastName\",\"mcdonald\"],[/^(lol)+[sz]$/,\"Expression\",\"lol\"],[/^wo{2,}a*h?$/,\"Expression\",\"wooah\"],[/^(hee?){2,}h?$/,\"Expression\",\"hehe\"],[/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/,\"Verb\",\"un-vite\"],[/^(m|k|cm|km)\\/(s|h|hr)$/,\"Unit\",\"5 k/m\"],[/^(ug|ng|mg)\\/(l|m3|ft3)$/,\"Unit\",\"ug/L\"],[/[^:/]\\/\\p{Letter}/u,\"SlashedTerm\",\"love/hate\"]],regexText:[[/^#[\\p{Number}_]*\\p{Letter}/u,\"HashTag\"],[/^@\\w{2,}$/,\"AtMention\"],[/^([A-Z]\\.){2}[A-Z]?/i,[\"Acronym\",\"Noun\"],\"F.B.I\"],[/.{3}[lkmnp]in['‘’‛‵′`´]$/,\"Gerund\",\"chillin'\"],[/.{4}s['‘’‛‵′`´]$/,\"Possessive\",\"flanders'\"],[/^[\\p{Emoji_Presentation}\\p{Extended_Pictographic}]/u,\"Emoji\",\"emoji-class\"]],regexNumbers:[[/^@1?[0-9](am|pm)$/i,\"Time\",\"3pm\"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,\"Time\",\"3:30pm\"],[/^'[0-9]{2}$/,\"Year\"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,\"Time\",\"3:12:31\"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,\"Time\",\"1:12pm\"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,\"Time\",\"1:12:31pm\"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,\"Date\",\"iso-date\"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,\"Date\",\"iso-dash\"],[/^[0-9]{1,4}\\/[0-9]{1,2}\\/([0-9]{4}|[0-9]{2})$/,\"Date\",\"iso-slash\"],[/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/,\"Date\",\"iso-dot\"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,\"Date\",\"12-dec-2019\"],[/^utc ?[+-]?[0-9]+$/,\"Timezone\",\"utc-9\"],[/^(gmt|utc)[+-][0-9]{1,2}$/i,\"Timezone\",\"gmt-3\"],[/^[0-9]{3}-[0-9]{4}$/,\"PhoneNumber\",\"421-0029\"],[/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,\"PhoneNumber\",\"1-800-\"],[/^[-+]?\\p{Currency_Symbol}[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?([kmb]|bn)?\\+?$/u,[\"Money\",\"Value\"],\"$5.30\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\p{Currency_Symbol}\\+?$/u,[\"Money\",\"Value\"],\"5.30£\"],[/^[-+]?[$£]?[0-9]([0-9,.])+(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,[\"Money\",\"Value\"],\"$400usd\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/,[\"Cardinal\",\"NumericValue\"],\"5,999\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/,[\"Ordinal\",\"NumericValue\"],\"53rd\"],[/^\\.[0-9]+\\+?$/,[\"Cardinal\",\"NumericValue\"],\".73th\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/,[\"Percent\",\"Cardinal\",\"NumericValue\"],\"-4%\"],[/^\\.[0-9]+%$/,[\"Percent\",\"Cardinal\",\"NumericValue\"],\".3%\"],[/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/,[\"Fraction\",\"NumericValue\"],\"2/3rds\"],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,[\"Value\",\"NumberRange\"],\"3-4\"],[/^[0-9]{1,2}(:[0-9][0-9])?(am|pm)? ?[-–—] ?[0-9]{1,2}(:[0-9][0-9])?(am|pm)$/,[\"Time\",\"NumberRange\"],\"3-4pm\"],[/^[0-9.]+([a-z°]{1,4})$/,\"NumericValue\",\"9km\"]],switches:jo,clues:ca,uncountable:{},orgWords:pi,placeWords:fi}};_i=function(e){return e=function(e,t){return Object.keys(e).forEach((n=>{\"Uncountable\"===e[n]&&(t.two.uncountable[n]=!0,e[n]=\"Uncountable\")})),t}((e=Ui(e.one.lexicon,e)).one.lexicon,e),e=function(e){const{irregularPlurals:t}=e.two,{lexicon:n}=e.one;return Object.entries(t).forEach((e=>{n[e[0]]=n[e[0]]||\"Singular\",n[e[1]]=n[e[1]]||\"Plural\"})),e}(e=Zi(e.two.switches,e)),e}(_i);const Xi=function(e,t,n,r){const o=r.methods.one.setTag;\"-\"===e[t].post&&e[t+1]&&o([e[t],e[t+1]],\"Hyphenated\",r,null,\"1-punct-hyphen''\")},Yi=/^(under|over|mis|re|un|dis|semi)-?/,es=function(e,t,n){const r=n.two.switches,o=e[t];if(r.hasOwnProperty(o.normal))o.switch=r[o.normal];else if(Yi.test(o.normal)){const e=o.normal.replace(Yi,\"\");e.length>3&&r.hasOwnProperty(e)&&(o.switch=r[e])}},ts=function(e,t,n){if(!t||0===t.length)return;if(!0===e.frozen)return;const r=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};r&&r.DEBUG_TAGS&&((e,t,n=\"\")=>{const r=e.text||\"[\"+e.implicit+\"]\";var o;\"string\"!=typeof t&&t.length>2&&(t=t.slice(0,2).join(\", #\")+\" +\"),t=\"string\"!=typeof t?t.join(\", #\"):t,console.log(` ${(o=r,\"\u001b[33m\u001b[3m\"+o+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${t.padEnd(22)}  ${(e=>\"\u001b[3m\"+e+\"\u001b[0m\")(n)}`)})(e,t,n),e.tags=e.tags||new Set,\"string\"==typeof t?e.tags.add(t):t.forEach((t=>e.tags.add(t)))},ns=[\"Acronym\",\"Abbreviation\",\"ProperNoun\",\"Uncountable\",\"Possessive\",\"Pronoun\",\"Activity\",\"Honorific\",\"Month\"],rs=function(e,t,n){const r=e[t],o=Array.from(r.tags);for(let e=0;e<o.length;e+=1)if(n.one.tagSet[o[e]]){const t=n.one.tagSet[o[e]].parents;ts(r,t,` -inferred by #${o[e]}`)}!function(e){!e.tags.has(\"Noun\")||e.tags.has(\"Plural\")||e.tags.has(\"Singular\")||ns.find((t=>e.tags.has(t)))||(Ki(e.normal)?ts(e,\"Plural\",\"3-plural-guess\"):ts(e,\"Singular\",\"3-singular-guess\"))}(r),function(e){const t=e.tags;if(t.has(\"Verb\")&&1===t.size){const t=ki(e.normal);t&&ts(e,t,\"3-verb-tense-guess\")}}(r)},os=/^\\p{Lu}[\\p{Ll}'’]/u,as=/[0-9]/,is=[\"Date\",\"Month\",\"WeekDay\",\"Unit\",\"Expression\"],ss=/[IVX]/,ls=/^[IVXLCDM]{2,}$/,us=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,cs={li:!0,dc:!0,md:!0,dm:!0,ml:!0},hs=function(e,t,n){const r=e[t];r.index=r.index||[0,0];const o=r.index[1],a=r.text||\"\";return 0!==o&&!0===os.test(a)&&!1===as.test(a)?is.find((e=>r.tags.has(e)))||r.pre.match(/[\"']$/)||\"the\"===r.normal?null:(rs(e,t,n),r.tags.has(\"Noun\")||r.frozen||r.tags.clear(),ts(r,\"ProperNoun\",\"2-titlecase\"),!0):a.length>=2&&ls.test(a)&&ss.test(a)&&us.test(a)&&!cs[r.normal]?(ts(r,\"RomanNumeral\",\"2-xvii\"),!0):null},ds=function(e=\"\",t=[]){const n=e.length;let r=7;n<=r&&(r=n-1);for(let o=r;o>1;o-=1){const r=e.substring(n-o,n);if(!0===t[r.length].hasOwnProperty(r)){return t[r.length][r]}}return null},gs=function(e,t,n){const r=e[t];if(0===r.tags.size){let e=ds(r.normal,n.two.suffixPatterns);if(null!==e)return ts(r,e,\"2-suffix\"),r.confidence=.7,!0;if(r.implicit&&(e=ds(r.implicit,n.two.suffixPatterns),null!==e))return ts(r,e,\"2-implicit-suffix\"),r.confidence=.7,!0}return null},ms=/['‘’‛‵′`´]/,ps=function(e,t){for(let n=0;n<t.length;n+=1)if(!0===t[n][0].test(e))return t[n];return null},fs=function(e,t,n,r){const o=r.methods.one.setTag,{regexText:a,regexNormal:i,regexNumbers:s,endsWith:l}=n.two,u=e[t],c=u.machine||u.normal;let h=u.text;ms.test(u.post)&&!ms.test(u.pre)&&(h+=u.post.trim());let d=ps(h,a)||ps(c,i);return!d&&/[0-9]/.test(c)&&(d=ps(c,s)),d||0!==u.tags.size||(d=function(e=\"\",t){const n=e[e.length-1];if(!0===t.hasOwnProperty(n)){const r=t[n]||[];for(let t=0;t<r.length;t+=1)if(!0===r[t][0].test(e))return r[t]}return null}(c,l)),d?(o([u],d[1],r,null,`2-regex-'${d[2]||d[0]}'`),u.confidence=.6,!0):null},bs=function(e,t,n){const r=e[t];if(0===r.tags.size){const e=function(e=\"\",t=[]){const n=e.length;let r=7;r>n-3&&(r=n-3);for(let n=r;n>2;n-=1){const r=e.substring(0,n);if(!0===t[r.length].hasOwnProperty(r))return t[r.length][r]}return null}(r.normal,n.two.prefixPatterns);if(null!==e)return ts(r,e,\"2-prefix\"),r.confidence=.5,!0}return null},vs=new Set([\"in\",\"on\",\"by\",\"until\",\"for\",\"to\",\"during\",\"throughout\",\"through\",\"within\",\"before\",\"after\",\"of\",\"this\",\"next\",\"last\",\"circa\",\"around\",\"post\",\"pre\",\"budget\",\"classic\",\"plan\",\"may\"]),ys=function(e){if(!e)return!1;const t=e.normal||e.implicit;return!!vs.has(t)||(!!(e.tags.has(\"Date\")||e.tags.has(\"Month\")||e.tags.has(\"WeekDay\")||e.tags.has(\"Year\"))||!!e.tags.has(\"ProperNoun\"))},ws=function(e){return!!e&&(!!e.tags.has(\"Ordinal\")||(!!(e.tags.has(\"Cardinal\")&&e.normal.length<3)||(\"is\"===e.normal||\"was\"===e.normal)))},ks=function(e){return e&&(e.tags.has(\"Date\")||e.tags.has(\"Month\")||e.tags.has(\"WeekDay\")||e.tags.has(\"Year\"))},Ps=function(e,t){const n=e[t];if(n.tags.has(\"NumericValue\")&&n.tags.has(\"Cardinal\")&&4===n.normal.length){const r=Number(n.normal);if(r&&!isNaN(r)&&r>1400&&r<2100){const o=e[t-1],a=e[t+1];if(ys(o)||ys(a))return ts(n,\"Year\",\"2-tagYear\");if(r>=1920&&r<2025){if(ws(o)||ws(a))return ts(n,\"Year\",\"2-tagYear-close\");if(ks(e[t-2])||ks(e[t+2]))return ts(n,\"Year\",\"2-tagYear-far\");if(o&&(o.tags.has(\"Determiner\")||o.tags.has(\"Possessive\"))&&a&&a.tags.has(\"Noun\")&&!a.tags.has(\"Plural\"))return ts(n,\"Year\",\"2-tagYear-noun\")}}}return null},As=function(e,t,n,r){const o=r.methods.one.setTag,a=e[t],i=[\"PastTense\",\"PresentTense\",\"Auxiliary\",\"Modal\",\"Particle\"];if(a.tags.has(\"Verb\")){i.find((e=>a.tags.has(e)))||o([a],\"Infinitive\",r,null,\"2-verb-type''\")}},Cs=/^[A-Z]('s|,)?$/,Ns=/^[A-Z-]+$/,js=/^[A-Z]+s$/,xs=/([A-Z]\\.)+[A-Z]?,?$/,Is=/[A-Z]{2,}('s|,)?$/,Ts=/([a-z]\\.)+[a-z]\\.?$/,Ds={I:!0,A:!0},Hs={la:!0,ny:!0,us:!0,dc:!0,gb:!0},Es=function(e,t,n){const r=e[t];return r.tags.has(\"RomanNumeral\")||r.tags.has(\"Acronym\")||r.frozen?null:function(e,t){let n=e.text;if(!1===Ns.test(n)){if(!(n.length>3&&!0===js.test(n)))return!1;n=n.replace(/s$/,\"\")}return!(n.length>5||Ds.hasOwnProperty(n)||t.one.lexicon.hasOwnProperty(e.normal)||!0!==xs.test(n)&&!0!==Ts.test(n)&&!0!==Cs.test(n)&&!0!==Is.test(n))}(r,n)?(r.tags.clear(),ts(r,[\"Acronym\",\"Noun\"],\"3-no-period-acronym\"),!0===Hs[r.normal]&&ts(r,\"Place\",\"3-place-acronym\"),!0===js.test(r.text)&&ts(r,\"Plural\",\"3-plural-acronym\"),!0):!Ds.hasOwnProperty(r.text)&&Cs.test(r.text)?(r.tags.clear(),ts(r,[\"Acronym\",\"Noun\"],\"3-one-letter-acronym\"),!0):r.tags.has(\"Organization\")&&r.text.length<=3?(ts(r,\"Acronym\",\"3-org-acronym\"),!0):r.tags.has(\"Organization\")&&Ns.test(r.text)&&r.text.length<=6?(ts(r,\"Acronym\",\"3-titlecase-acronym\"),!0):null},Gs=function(e,t){if(!e)return null;const n=t.find((t=>e.normal===t[0]));return n?n[1]:null},Os=function(e,t){if(!e)return null;const n=t.find((t=>e.tags.has(t[0])));return n?n[1]:null},Fs=function(e,t,n){const{leftTags:r,leftWords:o,rightWords:a,rightTags:i}=n.two.neighbours,s=e[t];if(0===s.tags.size){let l=null;if(l=l||Gs(e[t-1],o),l=l||Gs(e[t+1],a),l=l||Os(e[t-1],r),l=l||Os(e[t+1],i),l)return ts(s,l,\"3-[neighbour]\"),rs(e,t,n),e[t].confidence=.2,!0}return null},Vs=function(e,t,n){return!!e&&(!e.tags.has(\"FirstName\")&&!e.tags.has(\"Place\")&&(!!(e.tags.has(\"ProperNoun\")||e.tags.has(\"Organization\")||e.tags.has(\"Acronym\"))||!(n||(r=e.text,!/^\\p{Lu}[\\p{Ll}'’]/u.test(r)))&&(0!==t||e.tags.has(\"Singular\"))));var r},zs=function(e,t,n,r){const o=n.model.two.orgWords,a=n.methods.one.setTag,i=e[t];if(!0===o[i.machine||i.normal]&&Vs(e[t-1],t-1,r)){a([e[t]],\"Organization\",n,null,\"3-[org-word]\");for(let o=t;o>=0&&Vs(e[o],o,r);o-=1)a([e[o]],\"Organization\",n,null,\"3-[org-word]\")}return null},Bs=/'s$/,Ss=new Set([\"athletic\",\"city\",\"community\",\"eastern\",\"federal\",\"financial\",\"great\",\"historic\",\"historical\",\"local\",\"memorial\",\"municipal\",\"national\",\"northern\",\"provincial\",\"southern\",\"state\",\"western\",\"spring\",\"pine\",\"sunset\",\"view\",\"oak\",\"maple\",\"spruce\",\"cedar\",\"willow\"]),$s=new Set([\"center\",\"centre\",\"way\",\"range\",\"bar\",\"bridge\",\"field\",\"pit\"]),Ms=function(e,t,n){if(!e)return!1;const r=e.tags;return!(r.has(\"Organization\")||r.has(\"Possessive\")||Bs.test(e.normal))&&(!(!r.has(\"ProperNoun\")&&!r.has(\"Place\"))||!(n||(o=e.text,!/^\\p{Lu}[\\p{Ll}'’]/u.test(o)))&&(0!==t||r.has(\"Singular\")));var o},Ls=function(e,t,n,r){const o=n.model.two.placeWords,a=n.methods.one.setTag,i=e[t],s=i.machine||i.normal;if(!0===o[s]){for(let o=t-1;o>=0;o-=1)if(!Ss.has(e[o].normal)){if(!Ms(e[o],o,r))break;a(e.slice(o,t+1),\"Place\",n,null,\"3-[place-of-foo]\")}if($s.has(s))return!1;for(let o=t+1;o<e.length;o+=1){if(Ms(e[o],o,r))return a(e.slice(t,o+1),\"Place\",n,null,\"3-[foo-place]\"),!0;if(\"of\"!==e[o].normal&&!Ss.has(e[o].normal))break}}return null},Ks=function(e,t,n){let r=!1;const o=e[t].tags;(0===o.size||1===o.size&&(o.has(\"Hyphenated\")||o.has(\"HashTag\")||o.has(\"Prefix\")||o.has(\"SlashedTerm\")))&&(r=!0),r&&(ts(e[t],\"Noun\",\"3-[fallback]\"),rs(e,t,n),e[t].confidence=.1)},Js=/^[A-Z][a-z]/,Ws=(e,t)=>e[t].tags.has(\"ProperNoun\")&&Js.test(e[t].text)?\"Noun\":null,qs=(e,t,n)=>0!==t||e[1]?null:n,Us={\"Adj|Gerund\":(e,t)=>Ws(e,t),\"Adj|Noun\":(e,t)=>Ws(e,t)||function(e,t){return!e[t+1]&&e[t-1]&&e[t-1].tags.has(\"Determiner\")?\"Noun\":null}(e,t),\"Actor|Verb\":(e,t)=>Ws(e,t),\"Adj|Past\":(e,t)=>Ws(e,t),\"Adj|Present\":(e,t)=>Ws(e,t),\"Noun|Gerund\":(e,t)=>Ws(e,t),\"Noun|Verb\":(e,t)=>t>0&&Ws(e,t)||qs(e,t,\"Infinitive\"),\"Plural|Verb\":(e,t)=>Ws(e,t)||qs(e,t,\"PresentTense\")||function(e,t,n){return 0===t&&e.length>3?n:null}(e,t,\"Plural\"),\"Person|Noun\":(e,t)=>Ws(e,t),\"Person|Verb\":(e,t)=>0!==t?Ws(e,t):null,\"Person|Adj\":(e,t)=>0===t&&e.length>1||Ws(e,t)?\"Person\":null},Rs=\"undefined\"!=typeof process&&process.env?process.env:self.env||{},Qs=/^(under|over|mis|re|un|dis|semi)-?/,Zs=(e,t)=>{if(!e||!t)return null;const n=e.normal||e.implicit;let r=null;return t.hasOwnProperty(n)&&(r=t[n]),r&&Rs.DEBUG_TAGS&&console.log(`\\n  \u001b[2m\u001b[3m     ↓ - '${n}' \u001b[0m`),r},_s=(e,t={},n)=>{if(!e||!t)return null;const r=Array.from(e.tags).sort(((e,t)=>(n[e]?n[e].parents.length:0)>(n[t]?n[t].parents.length:0)?-1:1));let o=r.find((e=>t[e]));return o&&Rs.DEBUG_TAGS&&console.log(`  \u001b[2m\u001b[3m      ↓ - '${e.normal||e.implicit}' (#${o})  \u001b[0m`),o=t[o],o},Xs=function(e,t,n){const r=n.model,o=n.methods.one.setTag,{switches:a,clues:i}=r.two,s=e[t];let l=s.normal||s.implicit||\"\";if(Qs.test(l)&&!a[l]&&(l=l.replace(Qs,\"\")),s.switch){const a=s.switch;if(s.tags.has(\"Acronym\")||s.tags.has(\"PhrasalVerb\"))return;let u=function(e,t,n,r){if(!n)return null;const o=\"also\"!==e[t-1]?.text?t-1:Math.max(0,t-2),a=r.one.tagSet;let i=Zs(e[t+1],n.afterWords);return i=i||Zs(e[o],n.beforeWords),i=i||_s(e[o],n.beforeTags,a),i=i||_s(e[t+1],n.afterTags,a),i}(e,t,i[a],r);Us[a]&&(u=Us[a](e,t)||u),u?(o([s],u,n,null,`3-[switch] (${a})`),rs(e,t,r)):Rs.DEBUG_TAGS&&console.log(`\\n -> X  - '${l}'  : (${a})  `)}},Ys={there:!0,this:!0,it:!0,him:!0,her:!0,us:!0},el=function(e){if(e.filter((e=>!e.tags.has(\"ProperNoun\"))).length<=3)return!1;const t=/^[a-z]/;return e.every((e=>!t.test(e.text)))},tl=function(e,t,n,r){for(let o=0;o<e.length;o+=1)!0!==e[o].frozen&&(es(e,o,t),!1===r&&hs(e,o,t),gs(e,o,t),fs(e,o,t,n),bs(e,o,t),Ps(e,o))},nl=function(e,t,n,r){for(let n=0;n<e.length;n+=1){let r=Es(e,n,t);rs(e,n,t),r=r||Fs(e,n,t),r=r||Ks(e,n,t)}for(let t=0;t<e.length;t+=1)!0!==e[t].frozen&&(zs(e,t,n,r),Ls(e,t,n,r),Xs(e,t,n),As(e,t,0,n),Xi(e,t,0,n));!function(e,t){const n=t.methods.one.setTag,r=t.model.one._multiCache||{},o=e[0];if((\"Noun|Verb\"===o.switch||o.tags.has(\"Infinitive\"))&&e.length>=2){if(e.length<4&&!Ys[e[1].normal])return;if(!o.tags.has(\"PhrasalVerb\")&&r.hasOwnProperty(o.normal))return;(e[1].tags.has(\"Noun\")||e[1].tags.has(\"Determiner\"))&&(e.slice(1,3).some((e=>e.tags.has(\"Verb\")))&&!o.tags.has(\"#PhrasalVerb\")||n([o],\"Imperative\",t,null,\"3-[imperative]\"))}}(e,n)},rl={Possessive:e=>{let t=e.machine||e.normal||e.text;return t=t.replace(/'s$/,\"\"),t},Plural:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.noun.toSingular(n,t.model)},Copula:()=>\"is\",PastTense:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,\"PastTense\")},Gerund:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,\"Gerund\")},PresentTense:(e,t)=>{const n=e.machine||e.normal||e.text;return e.tags.has(\"Infinitive\")?n:t.methods.two.transform.verb.toInfinitive(n,t.model,\"PresentTense\")},Comparative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromComparative(n,t.model)},Superlative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromSuperlative(n,t.model)},Adverb:(e,t)=>{const{fromAdverb:n}=t.methods.two.transform.adjective;return n(e.machine||e.normal||e.text)}},ol={Adverb:\"RB\",Comparative:\"JJR\",Superlative:\"JJS\",Adjective:\"JJ\",TO:\"Conjunction\",Modal:\"MD\",Auxiliary:\"MD\",Gerund:\"VBG\",PastTense:\"VBD\",Participle:\"VBN\",PresentTense:\"VBZ\",Infinitive:\"VB\",Particle:\"RP\",Verb:\"VB\",Pronoun:\"PRP\",Cardinal:\"CD\",Conjunction:\"CC\",Determiner:\"DT\",Preposition:\"IN\",QuestionWord:\"WP\",Expression:\"UH\",Possessive:\"POS\",ProperNoun:\"NNP\",Person:\"NNP\",Place:\"NNP\",Organization:\"NNP\",Singular:\"NN\",Plural:\"NNS\",Noun:\"NN\",There:\"EX\"};var al={preTagger:function(e){const{methods:t,model:n,world:r}=e,o=e.docs;!function(e,t,n){e.forEach((e=>{!function(e,t,n,r){const o=r.methods.one.setTag;if(e.length>=3){const t=/:/;if(e[0].post.match(t)){const t=e[1];if(t.tags.has(\"Value\")||t.tags.has(\"Email\")||t.tags.has(\"PhoneNumber\"))return;o([e[0]],\"Expression\",r,null,\"2-punct-colon''\")}}}(e,0,0,n)}))}(o,0,r);const a=t.two.quickSplit(o);for(let e=0;e<a.length;e+=1){const t=a[e],o=el(t);tl(t,n,r,o),nl(t,n,r,o)}return a},root:function(e){const t=e.world,n=Object.keys(rl);e.docs.forEach((e=>{for(let r=0;r<e.length;r+=1){const o=e[r];for(let e=0;e<n.length;e+=1)if(o.tags.has(n[e])){const r=(0,rl[n[e]])(o,t);o.normal!==r&&(o.root=r);break}}}))},penn:function(e){e.compute(\"tagRank\"),e.docs.forEach((e=>{e.forEach((e=>{e.penn=function(e){if(e.tags.has(\"ProperNoun\")&&e.tags.has(\"Plural\"))return\"NNPS\";if(e.tags.has(\"Possessive\")&&e.tags.has(\"Pronoun\"))return\"PRP$\";if(\"there\"===e.normal)return\"EX\";if(\"to\"===e.normal)return\"TO\";const t=e.tagRank||[];for(let e=0;e<t.length;e+=1)if(ol.hasOwnProperty(t[e]))return ol[t[e]];return null}(e)}))}))}};const il=[\"Person\",\"Place\",\"Organization\"];var sl={Noun:{not:[\"Verb\",\"Adjective\",\"Adverb\",\"Value\",\"Determiner\"]},Singular:{is:\"Noun\",not:[\"Plural\",\"Uncountable\"]},ProperNoun:{is:\"Noun\"},Person:{is:\"Singular\",also:[\"ProperNoun\"],not:[\"Place\",\"Organization\",\"Date\"]},FirstName:{is:\"Person\"},MaleName:{is:\"FirstName\",not:[\"FemaleName\",\"LastName\"]},FemaleName:{is:\"FirstName\",not:[\"MaleName\",\"LastName\"]},LastName:{is:\"Person\",not:[\"FirstName\"]},Honorific:{is:\"Person\",not:[\"FirstName\",\"LastName\",\"Value\"]},Place:{is:\"Singular\",not:[\"Person\",\"Organization\"]},Country:{is:\"Place\",also:[\"ProperNoun\"],not:[\"City\"]},City:{is:\"Place\",also:[\"ProperNoun\"],not:[\"Country\"]},Region:{is:\"Place\",also:[\"ProperNoun\"]},Address:{},Organization:{is:\"ProperNoun\",not:[\"Person\",\"Place\"]},SportsTeam:{is:\"Organization\"},School:{is:\"Organization\"},Company:{is:\"Organization\"},Plural:{is:\"Noun\",not:[\"Singular\",\"Uncountable\"]},Uncountable:{is:\"Noun\"},Pronoun:{is:\"Noun\",not:il},Actor:{is:\"Noun\",not:[\"Place\",\"Organization\"]},Activity:{is:\"Noun\",not:[\"Person\",\"Place\"]},Unit:{is:\"Noun\",not:il},Demonym:{is:\"Noun\",also:[\"ProperNoun\"],not:il},Possessive:{is:\"Noun\"},Reflexive:{is:\"Pronoun\"}};var ll={Adjective:{not:[\"Noun\",\"Verb\",\"Adverb\",\"Value\"]},Comparable:{is:\"Adjective\"},Comparative:{is:\"Adjective\"},Superlative:{is:\"Adjective\",not:[\"Comparative\"]},NumberRange:{},Adverb:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Value\"]},Determiner:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"QuestionWord\",\"Conjunction\"]},Conjunction:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"Value\",\"QuestionWord\"]},Preposition:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"QuestionWord\",\"Determiner\"]},QuestionWord:{not:[\"Determiner\"]},Currency:{is:\"Noun\"},Expression:{not:[\"Noun\",\"Adjective\",\"Verb\",\"Adverb\"]},Abbreviation:{},Url:{not:[\"HashTag\",\"PhoneNumber\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"Email\",\"SlashedTerm\"]},PhoneNumber:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"Email\"]},HashTag:{},AtMention:{is:\"Noun\",not:[\"HashTag\",\"Email\"]},Emoji:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\"]},Emoticon:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"SlashedTerm\"]},SlashedTerm:{not:[\"Emoticon\",\"Url\",\"Value\"]},Email:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\"]},Acronym:{not:[\"Plural\",\"RomanNumeral\",\"Pronoun\",\"Date\"]},Negative:{not:[\"Noun\",\"Adjective\",\"Value\",\"Expression\"]},Condition:{not:[\"Verb\",\"Adjective\",\"Noun\",\"Value\"]},There:{not:[\"Verb\",\"Adjective\",\"Noun\",\"Value\",\"Conjunction\",\"Preposition\"]},Prefix:{not:[\"Abbreviation\",\"Acronym\",\"ProperNoun\"]},Hyphenated:{}};const ul=Object.assign({},sl,{Verb:{not:[\"Noun\",\"Adjective\",\"Adverb\",\"Value\",\"Expression\"]},PresentTense:{is:\"Verb\",not:[\"PastTense\",\"FutureTense\"]},Infinitive:{is:\"PresentTense\",not:[\"Gerund\"]},Imperative:{is:\"Verb\",not:[\"PastTense\",\"Gerund\",\"Copula\"]},Gerund:{is:\"PresentTense\",not:[\"Copula\"]},PastTense:{is:\"Verb\",not:[\"PresentTense\",\"Gerund\",\"FutureTense\"]},FutureTense:{is:\"Verb\",not:[\"PresentTense\",\"PastTense\"]},Copula:{is:\"Verb\"},Modal:{is:\"Verb\",not:[\"Infinitive\"]},Participle:{is:\"PastTense\"},Auxiliary:{is:\"Verb\",not:[\"PastTense\",\"PresentTense\",\"Gerund\",\"Conjunction\"]},PhrasalVerb:{is:\"Verb\"},Particle:{is:\"PhrasalVerb\",not:[\"PastTense\",\"PresentTense\",\"Copula\",\"Gerund\"]},Passive:{is:\"Verb\"}},{Value:{not:[\"Verb\",\"Adjective\",\"Adverb\"]},Ordinal:{is:\"Value\",not:[\"Cardinal\"]},Cardinal:{is:\"Value\",not:[\"Ordinal\"]},Fraction:{is:\"Value\",not:[\"Noun\"]},Multiple:{is:\"TextValue\"},RomanNumeral:{is:\"Cardinal\",not:[\"TextValue\"]},TextValue:{is:\"Value\",not:[\"NumericValue\"]},NumericValue:{is:\"Value\",not:[\"TextValue\"]},Money:{is:\"Cardinal\"},Percent:{is:\"Value\"}},{Date:{not:[\"Verb\",\"Adverb\",\"Adjective\"]},Month:{is:\"Date\",also:[\"Noun\"],not:[\"Year\",\"WeekDay\",\"Time\"]},WeekDay:{is:\"Date\",also:[\"Noun\"]},Year:{is:\"Date\",not:[\"RomanNumeral\"]},FinancialQuarter:{is:\"Date\",not:\"Fraction\"},Holiday:{is:\"Date\",also:[\"Noun\"]},Season:{is:\"Date\"},Timezone:{is:\"Date\",also:[\"Noun\"],not:[\"ProperNoun\"]},Time:{is:\"Date\",not:[\"AtMention\"]},Duration:{is:\"Date\",also:[\"Noun\"]}},ll);var cl={compute:al,methods:Ji,model:_i,tags:ul,hooks:[\"preTagger\"]};const hl=/[,)\"';:\\-–—.…]/,dl=function(e,t){if(!e.found)return;const n=e.termList();for(let e=0;e<n.length-1;e++){const t=n[e];if(hl.test(t.post))return}n[0].implicit=n[0].normal,n[0].text+=t,n[0].normal+=t,n.slice(1).forEach((e=>{e.implicit=e.normal,e.text=\"\",e.normal=\"\"}));for(let e=0;e<n.length-1;e++)n[e].post=n[e].post.replace(/ /,\"\")},gl=function(){const e=this.not(\"@hasContraction\");let t=e.match(\"(we|they|you) are\");return dl(t,\"'re\"),t=e.match(\"(he|she|they|it|we|you) will\"),dl(t,\"'ll\"),t=e.match(\"(he|she|they|it|we) is\"),dl(t,\"'s\"),t=e.match(\"#Person is\"),dl(t,\"'s\"),t=e.match(\"#Person would\"),dl(t,\"'d\"),t=e.match(\"(is|was|had|would|should|could|do|does|have|has|can) not\"),dl(t,\"n't\"),t=e.match(\"(i|we|they) have\"),dl(t,\"'ve\"),t=e.match(\"(would|should|could) have\"),dl(t,\"'ve\"),t=e.match(\"i am\"),dl(t,\"'m\"),t=e.match(\"going to\"),this},ml=/^\\p{Lu}[\\p{Ll}'’]/u,pl=function(e,t,n){const[r,o]=t;n&&0!==n.length&&(n=n.map(((e,t)=>(e.implicit=e.text,e.machine=e.text,e.pre=\"\",e.post=\"\",e.text=\"\",e.normal=\"\",e.index=[r,o+t],e))),n[0]&&(n[0].pre=e[r][o].pre,n[n.length-1].post=e[r][o].post,n[0].text=e[r][o].text,n[0].normal=e[r][o].normal),e[r].splice(o,1,...n))},fl=/'/,bl=new Set([\"been\",\"become\"]),vl=new Set([\"what\",\"how\",\"when\",\"if\",\"too\"]),yl=new Set([\"too\",\"also\",\"enough\"]),wl=function(e,t){const n=e[t].normal.split(fl)[0];if(\"let\"===n)return[n,\"us\"];if(\"there\"===n){const r=e[t+1];if(r&&r.tags.has(\"Plural\"))return[n,\"are\"]}return\"has\"===((e,t)=>{for(let n=t+1;n<e.length;n+=1){const t=e[n];if(bl.has(t.normal))return\"has\";if(vl.has(t.normal))return\"is\";if(t.tags.has(\"Gerund\"))return\"is\";if(t.tags.has(\"Determiner\"))return\"is\";if(t.tags.has(\"Adjective\"))return\"is\";if(\"Adj|Past\"===t.switch&&e[n+1]){if(yl.has(e[n+1].normal))return\"is\";if(e[n+1].tags.has(\"Preposition\"))return\"is\"}if(t.tags.has(\"PastTense\"))return e[n+1]&&\"for\"===e[n+1].normal?\"is\":\"has\"}return\"is\"})(e,t)?[n,\"has\"]:[n,\"is\"]},kl=/'/,Pl=new Set([\"better\",\"done\",\"before\",\"it\",\"had\"]),Al=new Set([\"have\",\"be\"]),Cl=function(e,t){const n=e[t].normal.split(kl)[0];return\"how\"===n||\"what\"===n?[n,\"did\"]:\"had\"===((e,t)=>{for(let n=t+1;n<e.length;n+=1){const t=e[n];if(Pl.has(t.normal))return\"had\";if(Al.has(t.normal))return\"would\";if(t.tags.has(\"PastTense\")||\"Adj|Past\"===t.switch)return\"had\";if(t.tags.has(\"PresentTense\")||t.tags.has(\"Infinitive\"))return\"would\";if(t.tags.has(\"#Determiner\"))return\"had\";if(t.tags.has(\"Adjective\"))return\"would\"}return!1})(e,t)?[n,\"had\"]:[n,\"would\"]},Nl={that:!0,there:!0,let:!0,here:!0,everywhere:!0},jl={in:!0,by:!0,for:!0},xl=new Set([\"too\",\"also\",\"enough\",\"about\"]),Il=new Set([\"is\",\"are\",\"did\",\"were\",\"could\",\"should\",\"must\",\"had\",\"have\"]),Tl=/'/,Dl=function(e,t,n,r){const o=t.update();o.document=[e];let a=n+r;n>0&&(n-=1),e[a]&&(a+=1),o.ptrs=[[0,n,a]],o.compute([\"freeze\",\"lexicon\",\"preTagger\",\"unfreeze\"]),function(e){e.forEach(((e,t)=>{e.index&&(e.index[1]=t)}))}(e)},Hl={d:(e,t)=>Cl(e,t),t:(e,t)=>function(e,t){if(\"ain't\"===e[t].normal||\"aint\"===e[t].normal){if(e[t+1]&&\"never\"===e[t+1].normal)return[\"have\"];const n=function(e,t){for(let n=t-1;n>=0;n-=1)if(e[n].tags.has(\"Noun\")||e[n].tags.has(\"Pronoun\")||e[n].tags.has(\"Plural\")||e[n].tags.has(\"Singular\"))return e[n];return null}(e,t);if(n){if(\"we\"===n.normal||\"they\"===n.normal)return[\"are\",\"not\"];if(\"i\"===n.normal)return[\"am\",\"not\"];if(n.tags&&n.tags.has(\"Plural\"))return[\"are\",\"not\"]}return[\"is\",\"not\"]}return[e[t].normal.replace(/n't/,\"\"),\"not\"]}(e,t),s:(e,t,n)=>((e,t)=>{const n=e[t];if(Nl.hasOwnProperty(n.machine||n.normal))return!1;if(n.tags.has(\"Possessive\"))return!0;if(n.tags.has(\"QuestionWord\"))return!1;if(\"he's\"===n.normal||\"she's\"===n.normal)return!1;const r=e[t+1];if(!r)return!0;if(\"it's\"===n.normal)return!!r.tags.has(\"#Noun\");if(\"Noun|Gerund\"==r.switch){const r=e[t+2];return r?!!r.tags.has(\"Copula\")||(\"on\"===r.normal||r.normal,!1):!(!n.tags.has(\"Actor\")&&!n.tags.has(\"ProperNoun\"))}if(r.tags.has(\"Verb\"))return!!r.tags.has(\"Infinitive\")||!r.tags.has(\"Gerund\")&&!!r.tags.has(\"PresentTense\");if(\"Adj|Noun\"===r.switch){const n=e[t+2];if(!n)return!1;if(Il.has(n.normal))return!0;if(xl.has(n.normal))return!1}if(r.tags.has(\"Noun\")){const e=r.machine||r.normal;return!(\"here\"===e||\"there\"===e||\"everywhere\"===e||r.tags.has(\"Possessive\")||r.tags.has(\"ProperNoun\")&&!n.tags.has(\"ProperNoun\"))}if(e[t-1]&&!0===jl[e[t-1].normal])return!0;if(r.tags.has(\"Adjective\")){const n=e[t+2];if(!n)return!1;if(n.tags.has(\"Noun\")&&!n.tags.has(\"Pronoun\")){const e=r.normal;return\"above\"!==e&&\"below\"!==e&&\"behind\"!==e}return\"Noun|Verb\"===n.switch}return!!r.tags.has(\"Value\")})(e,t)?n.methods.one.setTag([e[t]],\"Possessive\",n,null,\"2-contraction\"):wl(e,t)},El=function(e,t){const n=t.fromText(e.join(\" \"));return n.compute(\"id\"),n.docs[0]};var Gl={contractionTwo:e=>{const{world:t,document:n}=e;n.forEach(((r,o)=>{for(let a=r.length-1;a>=0;a-=1){if(r[a].implicit)continue;let i=null;!0===Tl.test(r[a].normal)&&(i=r[a].normal.split(Tl)[1]);let s=null;Hl.hasOwnProperty(i)&&(s=Hl[i](r,a,t)),s&&(s=El(s,e),pl(n,[o,a],s),Dl(n[o],e,a,s.length))}}))}},Ol={compute:Gl,api:function(e){class Contractions extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Contraction\"}expand(){return this.docs.forEach((e=>{const t=ml.test(e[0].text);e.forEach(((t,n)=>{t.text=t.implicit||\"\",delete t.implicit,n<e.length-1&&\"\"===t.post&&(t.post+=\" \"),t.dirty=!0})),t&&(e[0].text=function(e=\"\"){return e.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))}(e[0].text))})),this.compute(\"normal\"),this}}e.prototype.contractions=function(){const e=this.match(\"@hasContraction+\");return new Contractions(this.document,e.pointer)},e.prototype.contract=gl},hooks:[\"contractionTwo\"]};const Fl=\"(hard|fast|late|early|high|right|deep|close|direct)\";const Vl=\"(i|we|they)\";const zl=[].concat([{match:\"(got|were|was|is|are|am) (#PastTense|#Participle)\",tag:\"Passive\",reason:\"got-walked\"},{match:\"(was|were|is|are|am) being (#PastTense|#Participle)\",tag:\"Passive\",reason:\"was-being\"},{match:\"(had|have|has) been (#PastTense|#Participle)\",tag:\"Passive\",reason:\"had-been\"},{match:\"will be being? (#PastTense|#Participle)\",tag:\"Passive\",reason:\"will-be-cleaned\"},{match:\"#Noun [(#PastTense|#Participle)] by (the|a) #Noun\",group:0,tag:\"Passive\",reason:\"suffered-by\"}],[{match:\"[(all|both)] #Determiner #Noun\",group:0,tag:\"Noun\",reason:\"all-noun\"},{match:\"#Copula [(just|alone)]$\",group:0,tag:\"Adjective\",reason:\"not-adverb\"},{match:\"#Singular is #Adverb? [#PastTense$]\",group:0,tag:\"Adjective\",reason:\"is-filled\"},{match:\"[#PastTense] #Singular is\",group:0,tag:\"Adjective\",reason:\"smoked-poutine\"},{match:\"[#PastTense] #Plural are\",group:0,tag:\"Adjective\",reason:\"baked-onions\"},{match:\"well [#PastTense]\",group:0,tag:\"Adjective\",reason:\"well-made\"},{match:\"#Copula [fucked up?]\",group:0,tag:\"Adjective\",reason:\"swears-adjective\"},{match:\"#Singular (seems|appears) #Adverb? [#PastTense$]\",group:0,tag:\"Adjective\",reason:\"seems-filled\"},{match:\"#Copula #Adjective? [(out|in|through)]$\",group:0,tag:\"Adjective\",reason:\"still-out\"},{match:\"^[#Adjective] (the|your) #Noun\",group:0,notIf:\"(all|even)\",tag:\"Infinitive\",reason:\"shut-the\"},{match:\"the [said] #Noun\",group:0,tag:\"Adjective\",reason:\"the-said-card\"},{match:\"[#Hyphenated (#Hyphenated && #PastTense)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",notIf:\"#Adverb\",reason:\"faith-based\"},{match:\"[#Hyphenated (#Hyphenated && #Gerund)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",notIf:\"#Adverb\",reason:\"self-driving\"},{match:\"[#PastTense (#Hyphenated && #PhrasalVerb)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",reason:\"dammed-up\"},{match:\"(#Hyphenated && #Value) fold\",tag:\"Adjective\",reason:\"two-fold\"},{match:\"must (#Hyphenated && #Infinitive)\",tag:\"Adjective\",reason:\"must-win\"},{match:\"(#Hyphenated && #Infinitive) #Hyphenated\",tag:\"Adjective\",notIf:\"#PhrasalVerb\",reason:\"vacuum-sealed\"},{match:\"too much\",tag:\"Adverb Adjective\",reason:\"bit-4\"},{match:\"a bit much\",tag:\"Determiner Adverb Adjective\",reason:\"bit-3\"},{match:\"[(un|contra|extra|inter|intra|macro|micro|mid|mis|mono|multi|pre|sub|tri|ex)] #Adjective\",group:0,tag:[\"Adjective\",\"Prefix\"],reason:\"un-skilled\"}],[{match:\"#Adverb [#Adverb] (and|or|then)\",group:0,tag:\"Adjective\",reason:\"kinda-sparkly-and\"},{match:\"[(dark|bright|flat|light|soft|pale|dead|dim|faux|little|wee|sheer|most|near|good|extra|all)] #Adjective\",group:0,tag:\"Adverb\",reason:\"dark-green\"},{match:\"#Copula [far too] #Adjective\",group:0,tag:\"Adverb\",reason:\"far-too\"},{match:\"#Copula [still] (in|#Gerund|#Adjective)\",group:0,tag:\"Adverb\",reason:\"was-still-walking\"},{match:`#Plural ${Fl}`,tag:\"#PresentTense #Adverb\",reason:\"studies-hard\"},{match:`#Verb [${Fl}] !#Noun?`,group:0,notIf:\"(#Copula|get|got|getting|become|became|becoming|feel|feels|feeling|#Determiner|#Preposition)\",tag:\"Adverb\",reason:\"shops-direct\"},{match:\"[#Plural] a lot\",tag:\"PresentTense\",reason:\"studies-a-lot\"}],[{match:\"as [#Gerund] as\",group:0,tag:\"Adjective\",reason:\"as-gerund-as\"},{match:\"more [#Gerund] than\",group:0,tag:\"Adjective\",reason:\"more-gerund-than\"},{match:\"(so|very|extremely) [#Gerund]\",group:0,tag:\"Adjective\",reason:\"so-gerund\"},{match:\"(found|found) it #Adverb? [#Gerund]\",group:0,tag:\"Adjective\",reason:\"found-it-gerund\"},{match:\"a (little|bit|wee) bit? [#Gerund]\",group:0,tag:\"Adjective\",reason:\"a-bit-gerund\"},{match:\"#Gerund [#Gerund]\",group:0,tag:\"Adjective\",notIf:\"(impersonating|practicing|considering|assuming)\",reason:\"looking-annoying\"},{match:\"(looked|look|looks) #Adverb? [%Adj|Gerund%]\",group:0,tag:\"Adjective\",notIf:\"(impersonating|practicing|considering|assuming)\",reason:\"looked-amazing\"},{match:\"[%Adj|Gerund%] #Determiner\",group:0,tag:\"Gerund\",reason:\"developing-a\"},{match:\"#Possessive [%Adj|Gerund%] #Noun\",group:0,tag:\"Adjective\",reason:\"leading-manufacturer\"},{match:\"%Noun|Gerund% %Adj|Gerund%\",tag:\"Gerund #Adjective\",reason:\"meaning-alluring\"},{match:\"(face|embrace|reveal|stop|start|resume) %Adj|Gerund%\",tag:\"#PresentTense #Adjective\",reason:\"face-shocking\"},{match:\"(are|were) [%Adj|Gerund%] #Plural\",group:0,tag:\"Adjective\",reason:\"are-enduring-symbols\"}],[{match:\"#Determiner [#Adjective] #Copula\",group:0,tag:\"Noun\",reason:\"the-adj-is\"},{match:\"#Adjective [#Adjective] #Copula\",group:0,tag:\"Noun\",reason:\"adj-adj-is\"},{match:\"(his|its) [%Adj|Noun%]\",group:0,tag:\"Noun\",notIf:\"#Hyphenated\",reason:\"his-fine\"},{match:\"#Copula #Adverb? [all]\",group:0,tag:\"Noun\",reason:\"is-all\"},{match:\"(have|had) [#Adjective] #Preposition .\",group:0,tag:\"Noun\",reason:\"have-fun\"},{match:\"#Gerund (giant|capital|center|zone|application)\",tag:\"Noun\",reason:\"brewing-giant\"},{match:\"#Preposition (a|an) [#Adjective]$\",group:0,tag:\"Noun\",reason:\"an-instant\"},{match:\"no [#Adjective] #Modal\",group:0,tag:\"Noun\",reason:\"no-golden\"},{match:\"[brand #Gerund?] new\",group:0,tag:\"Adverb\",reason:\"brand-new\"},{match:\"(#Determiner|#Comparative|new|different) [kind]\",group:0,tag:\"Noun\",reason:\"some-kind\"},{match:\"#Possessive [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",reason:\"her-favourite\"},{match:\"must && #Hyphenated .\",tag:\"Adjective\",reason:\"must-win\"},{match:\"#Determiner [#Adjective]$\",tag:\"Noun\",notIf:\"(this|that|#Comparative|#Superlative)\",reason:\"the-south\"},{match:\"(#Noun && #Hyphenated) (#Adjective && #Hyphenated)\",tag:\"Adjective\",notIf:\"(this|that|#Comparative|#Superlative)\",reason:\"company-wide\"},{match:\"#Determiner [#Adjective] (#Copula|#Determiner)\",notIf:\"(#Comparative|#Superlative)\",group:0,tag:\"Noun\",reason:\"the-poor\"},{match:\"[%Adj|Noun%] #Noun\",notIf:\"(#Pronoun|#ProperNoun)\",group:0,tag:\"Adjective\",reason:\"stable-foundations\"}],[{match:\"[still] #Adjective\",group:0,tag:\"Adverb\",reason:\"still-advb\"},{match:\"[still] #Verb\",group:0,tag:\"Adverb\",reason:\"still-verb\"},{match:\"[so] #Adjective\",group:0,tag:\"Adverb\",reason:\"so-adv\"},{match:\"[way] #Comparative\",group:0,tag:\"Adverb\",reason:\"way-adj\"},{match:\"[way] #Adverb #Adjective\",group:0,tag:\"Adverb\",reason:\"way-too-adj\"},{match:\"[all] #Verb\",group:0,tag:\"Adverb\",reason:\"all-verb\"},{match:\"#Verb  [like]\",group:0,notIf:\"(#Modal|#PhrasalVerb)\",tag:\"Adverb\",reason:\"verb-like\"},{match:\"(barely|hardly) even\",tag:\"Adverb\",reason:\"barely-even\"},{match:\"[even] #Verb\",group:0,tag:\"Adverb\",reason:\"even-walk\"},{match:\"[even] #Comparative\",group:0,tag:\"Adverb\",reason:\"even-worse\"},{match:\"[even] (#Determiner|#Possessive)\",group:0,tag:\"#Adverb\",reason:\"even-the\"},{match:\"even left\",tag:\"#Adverb #Verb\",reason:\"even-left\"},{match:\"[way] #Adjective\",group:0,tag:\"#Adverb\",reason:\"way-over\"},{match:\"#PresentTense [(hard|quick|bright|slow|fast|backwards|forwards)]\",notIf:\"#Copula\",group:0,tag:\"Adverb\",reason:\"lazy-ly\"},{match:\"[much] #Adjective\",group:0,tag:\"Adverb\",reason:\"bit-1\"},{match:\"#Copula [#Adverb]$\",group:0,tag:\"Adjective\",reason:\"is-well\"},{match:\"a [(little|bit|wee) bit?] #Adjective\",group:0,tag:\"Adverb\",reason:\"a-bit-cold\"},{match:\"[(super|pretty)] #Adjective\",group:0,tag:\"Adverb\",reason:\"super-strong\"},{match:\"(become|fall|grow) #Adverb? [#PastTense]\",group:0,tag:\"Adjective\",reason:\"overly-weakened\"},{match:\"(a|an) #Adverb [#Participle] #Noun\",group:0,tag:\"Adjective\",reason:\"completely-beaten\"},{match:\"#Determiner #Adverb? [close]\",group:0,tag:\"Adjective\",reason:\"a-close\"},{match:\"#Gerund #Adverb? [close]\",group:0,tag:\"Adverb\",notIf:\"(getting|becoming|feeling)\",reason:\"being-close\"},{match:\"(the|those|these|a|an) [#Participle] #Noun\",group:0,tag:\"Adjective\",reason:\"blown-motor\"},{match:\"(#PresentTense|#PastTense) [back]\",group:0,tag:\"Adverb\",notIf:\"(#PhrasalVerb|#Copula)\",reason:\"charge-back\"},{match:\"#Verb [around]\",group:0,tag:\"Adverb\",notIf:\"#PhrasalVerb\",reason:\"send-around\"},{match:\"[later] #PresentTense\",group:0,tag:\"Adverb\",reason:\"later-say\"},{match:\"#Determiner [well] !#PastTense?\",group:0,tag:\"Noun\",reason:\"the-well\"},{match:\"#Adjective [enough]\",group:0,tag:\"Adverb\",reason:\"high-enough\"}],[{match:\"[sun] the #Ordinal\",tag:\"WeekDay\",reason:\"sun-the-5th\"},{match:\"[sun] #Date\",group:0,tag:\"WeekDay\",reason:\"sun-feb\"},{match:\"#Date (on|this|next|last|during)? [sun]\",group:0,tag:\"WeekDay\",reason:\"1pm-sun\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [sat]\",group:0,tag:\"WeekDay\",reason:\"sat\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [wed]\",group:0,tag:\"WeekDay\",reason:\"wed\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [march]\",group:0,tag:\"Month\",reason:\"march\"},{match:\"[sat] #Date\",group:0,tag:\"WeekDay\",reason:\"sat-feb\"},{match:\"#Preposition [(march|may)]\",group:0,tag:\"Month\",reason:\"in-month\"},{match:\"(this|next|last) (march|may) !#Infinitive?\",tag:\"#Date #Month\",reason:\"this-month\"},{match:\"(march|may) the? #Value\",tag:\"#Month #Date #Date\",reason:\"march-5th\"},{match:\"#Value of? (march|may)\",tag:\"#Date #Date #Month\",reason:\"5th-of-march\"},{match:\"[(march|may)] .? #Date\",group:0,tag:\"Month\",reason:\"march-and-feb\"},{match:\"#Date .? [(march|may)]\",group:0,tag:\"Month\",reason:\"feb-and-march\"},{match:\"#Adverb [(march|may)]\",group:0,tag:\"Verb\",reason:\"quickly-march\"},{match:\"[(march|may)] #Adverb\",group:0,tag:\"Verb\",reason:\"march-quickly\"},{match:\"#Value (am|pm)\",tag:\"Time\",reason:\"2-am\"}],[{match:\"#Holiday (day|eve)\",tag:\"Holiday\",reason:\"holiday-day\"},{match:\"#Value of #Month\",tag:\"Date\",reason:\"value-of-month\"},{match:\"#Cardinal #Month\",tag:\"Date\",reason:\"cardinal-month\"},{match:\"#Month #Value to #Value\",tag:\"Date\",reason:\"value-to-value\"},{match:\"#Month the #Value\",tag:\"Date\",reason:\"month-the-value\"},{match:\"(#WeekDay|#Month) #Value\",tag:\"Date\",reason:\"date-value\"},{match:\"#Value (#WeekDay|#Month)\",tag:\"Date\",reason:\"value-date\"},{match:\"(#TextValue && #Date) #TextValue\",tag:\"Date\",reason:\"textvalue-date\"},{match:\"#Month #NumberRange\",tag:\"Date\",reason:\"aug 20-21\"},{match:\"#WeekDay #Month #Ordinal\",tag:\"Date\",reason:\"week mm-dd\"},{match:\"#Month #Ordinal #Cardinal\",tag:\"Date\",reason:\"mm-dd-yyy\"},{match:\"(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time\",tag:\"Timezone\",reason:\"std-time\"},{match:\"(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time\",tag:\"Timezone\",reason:\"eastern-time\"},{match:\"#Time [(eastern|mountain|pacific|central|est|pst|gmt)]\",group:0,tag:\"Timezone\",reason:\"5pm-central\"},{match:\"(central|western|eastern) european time\",tag:\"Timezone\",reason:\"cet\"}],[{match:\"(the|any) [more]\",group:0,tag:\"Singular\",reason:\"more-noun\"},{match:\"[more] #Noun\",group:0,tag:\"Adjective\",reason:\"more-noun\"},{match:\"(right|rights) of .\",tag:\"Noun\",reason:\"right-of\"},{match:\"a [bit]\",group:0,tag:\"Singular\",reason:\"bit-2\"},{match:\"a [must]\",group:0,tag:\"Singular\",reason:\"must-2\"},{match:\"(we|us) [all]\",group:0,tag:\"Noun\",reason:\"we all\"},{match:\"due to [#Verb]\",group:0,tag:\"Noun\",reason:\"due-to\"},{match:\"some [#Verb] #Plural\",group:0,tag:\"Noun\",reason:\"determiner6\"},{match:\"#Possessive #Ordinal [#PastTense]\",group:0,tag:\"Noun\",reason:\"first-thought\"},{match:\"(the|this|those|these) #Adjective [%Verb|Noun%]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"the-adj-verb\"},{match:\"(the|this|those|these) #Adverb #Adjective [#Verb]\",group:0,tag:\"Noun\",reason:\"determiner4\"},{match:\"the [#Verb] #Preposition .\",group:0,tag:\"Noun\",reason:\"determiner1\"},{match:\"(a|an|the) [#Verb] of\",group:0,tag:\"Noun\",reason:\"the-verb-of\"},{match:\"#Determiner #Noun of [#Verb]\",group:0,tag:\"Noun\",notIf:\"#Gerund\",reason:\"noun-of-noun\"},{match:\"#PastTense #Preposition [#PresentTense]\",group:0,notIf:\"#Gerund\",tag:\"Noun\",reason:\"ended-in-ruins\"},{match:\"#Conjunction [u]\",group:0,tag:\"Pronoun\",reason:\"u-pronoun-2\"},{match:\"[u] #Verb\",group:0,tag:\"Pronoun\",reason:\"u-pronoun-1\"},{match:\"#Determiner [(western|eastern|northern|southern|central)] #Noun\",group:0,tag:\"Noun\",reason:\"western-line\"},{match:\"(#Singular && @hasHyphen) #PresentTense\",tag:\"Noun\",reason:\"hyphen-verb\"},{match:\"is no [#Verb]\",group:0,tag:\"Noun\",reason:\"is-no-verb\"},{match:\"do [so]\",group:0,tag:\"Noun\",reason:\"so-noun\"},{match:\"#Determiner [(shit|damn|hell)]\",group:0,tag:\"Noun\",reason:\"swears-noun\"},{match:\"to [(shit|hell)]\",group:0,tag:\"Noun\",reason:\"to-swears\"},{match:\"(the|these) [#Singular] (were|are)\",group:0,tag:\"Plural\",reason:\"singular-were\"},{match:\"a #Noun+ or #Adverb+? [#Verb]\",group:0,tag:\"Noun\",reason:\"noun-or-noun\"},{match:\"(the|those|these|a|an) #Adjective? [#PresentTense #Particle?]\",group:0,tag:\"Noun\",notIf:\"(seem|appear|include|#Gerund|#Copula)\",reason:\"det-inf\"},{match:\"#Noun #Actor\",tag:\"Actor\",notIf:\"(#Person|#Pronoun)\",reason:\"thing-doer\"},{match:\"#Gerund #Actor\",tag:\"Actor\",reason:\"gerund-doer\"},{match:\"co #Singular\",tag:\"Actor\",reason:\"co-noun\"},{match:\"[#Noun+] #Actor\",group:0,tag:\"Actor\",notIf:\"(#Honorific|#Pronoun|#Possessive)\",reason:\"air-traffic-controller\"},{match:\"(urban|cardiac|cardiovascular|respiratory|medical|clinical|visual|graphic|creative|dental|exotic|fine|certified|registered|technical|virtual|professional|amateur|junior|senior|special|pharmaceutical|theoretical)+ #Noun? #Actor\",tag:\"Actor\",reason:\"fine-artist\"},{match:\"#Noun+ (coach|chef|king|engineer|fellow|personality|boy|girl|man|woman|master)\",tag:\"Actor\",reason:\"dance-coach\"},{match:\"chief . officer\",tag:\"Actor\",reason:\"chief-x-officer\"},{match:\"chief of #Noun+\",tag:\"Actor\",reason:\"chief-of-police\"},{match:\"senior? vice? president of #Noun+\",tag:\"Actor\",reason:\"president-of\"},{match:\"#Determiner [sun]\",group:0,tag:\"Singular\",reason:\"the-sun\"},{match:\"#Verb (a|an) [#Value]$\",group:0,tag:\"Singular\",reason:\"did-a-value\"},{match:\"the [(can|will|may)]\",group:0,tag:\"Singular\",reason:\"the can\"},{match:\"#FirstName #Acronym? (#Possessive && #LastName)\",tag:\"Possessive\",reason:\"name-poss\"},{match:\"#Organization+ #Possessive\",tag:\"Possessive\",reason:\"org-possessive\"},{match:\"#Place+ #Possessive\",tag:\"Possessive\",reason:\"place-possessive\"},{match:\"#Possessive #PresentTense #Particle?\",notIf:\"(#Gerund|her)\",tag:\"Noun\",reason:\"possessive-verb\"},{match:\"(my|our|their|her|his|its) [(#Plural && #Actor)] #Noun\",tag:\"Possessive\",reason:\"my-dads\"},{match:\"#Value of a [second]\",group:0,unTag:\"Value\",tag:\"Singular\",reason:\"10th-of-a-second\"},{match:\"#Value [seconds]\",group:0,unTag:\"Value\",tag:\"Plural\",reason:\"10-seconds\"},{match:\"in [#Infinitive]\",group:0,tag:\"Singular\",reason:\"in-age\"},{match:\"a [#Adjective] #Preposition\",group:0,tag:\"Noun\",reason:\"a-minor-in\"},{match:\"#Determiner [#Singular] said\",group:0,tag:\"Actor\",reason:\"the-actor-said\"},{match:\"#Determiner #Noun [(feel|sense|process|rush|side|bomb|bully|challenge|cover|crush|dump|exchange|flow|function|issue|lecture|limit|march|process)] !(#Preposition|to|#Adverb)?\",group:0,tag:\"Noun\",reason:\"the-noun-sense\"},{match:\"[#PresentTense] (of|by|for) (a|an|the) #Noun #Copula\",group:0,tag:\"Plural\",reason:\"photographs-of\"},{match:\"#Infinitive and [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"fight and win\"},{match:\"#Noun and [#Verb] and #Noun\",group:0,tag:\"Noun\",reason:\"peace-and-flowers\"},{match:\"the #Cardinal [%Adj|Noun%]\",group:0,tag:\"Noun\",reason:\"the-1992-classic\"},{match:\"#Copula the [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",reason:\"the-premier-university\"},{match:\"i #Verb [me] #Noun\",group:0,tag:\"Possessive\",reason:\"scottish-me\"},{match:\"[#PresentTense] (music|class|lesson|night|party|festival|league|ceremony)\",group:0,tag:\"Noun\",reason:\"dance-music\"},{match:\"[wit] (me|it)\",group:0,tag:\"Presposition\",reason:\"wit-me\"},{match:\"#PastTense #Possessive [#Verb]\",group:0,tag:\"Noun\",notIf:\"(saw|made)\",reason:\"left-her-boots\"},{match:\"#Value [%Plural|Verb%]\",group:0,tag:\"Plural\",notIf:\"(one|1|a|an)\",reason:\"35-signs\"},{match:\"had [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Gerund|come|become)\",reason:\"had-time\"},{match:\"%Adj|Noun% %Noun|Verb%\",tag:\"#Adjective #Noun\",notIf:\"#ProperNoun #Noun\",reason:\"instant-access\"},{match:\"#Determiner [%Adj|Noun%] #Conjunction\",group:0,tag:\"Noun\",reason:\"a-rep-to\"},{match:\"#Adjective #Noun [%Plural|Verb%]$\",group:0,tag:\"Plural\",notIf:\"#Pronoun\",reason:\"near-death-experiences\"},{match:\"#Possessive #Noun [%Plural|Verb%]$\",group:0,tag:\"Plural\",reason:\"your-guild-colors\"}],[{match:\"(this|that|the|a|an) [#Gerund #Infinitive]\",group:0,tag:\"Singular\",reason:\"the-planning-process\"},{match:\"(that|the) [#Gerund #PresentTense]\",group:0,ifNo:\"#Copula\",tag:\"Plural\",reason:\"the-paving-stones\"},{match:\"#Determiner [#Gerund] #Noun\",group:0,tag:\"Adjective\",reason:\"the-gerund-noun\"},{match:\"#Pronoun #Infinitive [#Gerund] #PresentTense\",group:0,tag:\"Noun\",reason:\"tipping-sucks\"},{match:\"#Adjective [#Gerund]\",group:0,tag:\"Noun\",notIf:\"(still|even|just)\",reason:\"early-warning\"},{match:\"[#Gerund] #Adverb? not? #Copula\",group:0,tag:\"Activity\",reason:\"gerund-copula\"},{match:\"#Copula [(#Gerund|#Activity)] #Copula\",group:0,tag:\"Gerund\",reason:\"are-doing-is\"},{match:\"[#Gerund] #Modal\",group:0,tag:\"Activity\",reason:\"gerund-modal\"},{match:\"#Singular for [%Noun|Gerund%]\",group:0,tag:\"Gerund\",reason:\"noun-for-gerund\"},{match:\"#Comparative (for|at) [%Noun|Gerund%]\",group:0,tag:\"Gerund\",reason:\"better-for-gerund\"},{match:\"#PresentTense the [#Gerund]\",group:0,tag:\"Noun\",reason:\"keep-the-touching\"}],[{match:\"#Infinitive (this|that|the) [#Infinitive]\",group:0,tag:\"Noun\",reason:\"do-this-dance\"},{match:\"#Gerund #Determiner [#Infinitive]\",group:0,tag:\"Noun\",reason:\"running-a-show\"},{match:\"#Determiner (only|further|just|more|backward) [#Infinitive]\",group:0,tag:\"Noun\",reason:\"the-only-reason\"},{match:\"(the|this|a|an) [#Infinitive] #Adverb? #Verb\",group:0,tag:\"Noun\",reason:\"determiner5\"},{match:\"#Determiner #Adjective #Adjective? [#Infinitive]\",group:0,tag:\"Noun\",reason:\"a-nice-inf\"},{match:\"#Determiner #Demonym [#PresentTense]\",group:0,tag:\"Noun\",reason:\"mexican-train\"},{match:\"#Adjective #Noun+ [#Infinitive] #Copula\",group:0,tag:\"Noun\",reason:\"career-move\"},{match:\"at some [#Infinitive]\",group:0,tag:\"Noun\",reason:\"at-some-inf\"},{match:\"(go|goes|went) to [#Infinitive]\",group:0,tag:\"Noun\",reason:\"goes-to-verb\"},{match:\"(a|an) #Adjective? #Noun [#Infinitive] (#Preposition|#Noun)\",group:0,notIf:\"from\",tag:\"Noun\",reason:\"a-noun-inf\"},{match:\"(a|an) #Noun [#Infinitive]$\",group:0,tag:\"Noun\",reason:\"a-noun-inf2\"},{match:\"#Gerund #Adjective? for [#Infinitive]\",group:0,tag:\"Noun\",reason:\"running-for\"},{match:\"about [#Infinitive]\",group:0,tag:\"Singular\",reason:\"about-love\"},{match:\"#Plural on [#Infinitive]\",group:0,tag:\"Noun\",reason:\"on-stage\"},{match:\"any [#Infinitive]\",group:0,tag:\"Noun\",reason:\"any-charge\"},{match:\"no [#Infinitive]\",group:0,tag:\"Noun\",reason:\"no-doubt\"},{match:\"number of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"number-of-x\"},{match:\"(taught|teaches|learns|learned) [#PresentTense]\",group:0,tag:\"Noun\",reason:\"teaches-x\"},{match:\"(try|use|attempt|build|make) [#Verb #Particle?]\",notIf:\"(#Copula|#Noun|sure|fun|up)\",group:0,tag:\"Noun\",reason:\"do-verb\"},{match:\"^[#Infinitive] (is|was)\",group:0,tag:\"Noun\",reason:\"checkmate-is\"},{match:\"#Infinitive much [#Infinitive]\",group:0,tag:\"Noun\",reason:\"get-much\"},{match:\"[cause] #Pronoun #Verb\",group:0,tag:\"Conjunction\",reason:\"cause-cuz\"},{match:\"the #Singular [#Infinitive] #Noun\",group:0,tag:\"Noun\",notIf:\"#Pronoun\",reason:\"cardio-dance\"},{match:\"#Determiner #Modal [#Noun]\",group:0,tag:\"PresentTense\",reason:\"should-smoke\"},{match:\"this [#Plural]\",group:0,tag:\"PresentTense\",notIf:\"(#Preposition|#Date)\",reason:\"this-verbs\"},{match:\"#Noun that [#Plural]\",group:0,tag:\"PresentTense\",notIf:\"(#Preposition|#Pronoun|way)\",reason:\"voice-that-rocks\"},{match:\"that [#Plural] to\",group:0,tag:\"PresentTense\",notIf:\"#Preposition\",reason:\"that-leads-to\"},{match:\"(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)\",group:0,tag:\"Infinitive\",reason:\"let-him-glue\"},{match:\"#Verb (all|every|each|most|some|no) [#PresentTense]\",notIf:\"#Modal\",group:0,tag:\"Noun\",reason:\"all-presentTense\"},{match:\"(had|have|#PastTense) #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"better\",reason:\"adj-presentTense\"},{match:\"#Value #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"one-big-reason\"},{match:\"#PastTense #Adjective+ [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Copula|better)\",reason:\"won-wide-support\"},{match:\"(many|few|several|couple) [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"many-poses\"},{match:\"#Determiner #Adverb #Adjective [%Noun|Verb%]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"very-big-dream\"},{match:\"from #Noun to [%Noun|Verb%]\",group:0,tag:\"Noun\",reason:\"start-to-finish\"},{match:\"(for|with|of) #Noun (and|or|not) [%Noun|Verb%]\",group:0,tag:\"Noun\",notIf:\"#Pronoun\",reason:\"for-food-and-gas\"},{match:\"#Adjective #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"adorable-little-store\"},{match:\"#Gerund #Adverb? #Comparative [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"higher-costs\"},{match:\"(#Noun && @hasComma) #Noun (and|or) [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"noun-list\"},{match:\"(many|any|some|several) [#PresentTense] for\",group:0,tag:\"Noun\",reason:\"any-verbs-for\"},{match:\"to #PresentTense #Noun [#PresentTense] #Preposition\",group:0,tag:\"Noun\",reason:\"gas-exchange\"},{match:\"#PastTense (until|as|through|without) [#PresentTense]\",group:0,tag:\"Noun\",reason:\"waited-until-release\"},{match:\"#Gerund like #Adjective? [#PresentTense]\",group:0,tag:\"Plural\",reason:\"like-hot-cakes\"},{match:\"some #Adjective [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-reason\"},{match:\"for some [#PresentTense]\",group:0,tag:\"Noun\",reason:\"for-some-reason\"},{match:\"(same|some|the|that|a) kind of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-kind-of\"},{match:\"(same|some|the|that|a) type of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-type-of\"},{match:\"#Gerund #Adjective #Preposition [#PresentTense]\",group:0,tag:\"Noun\",reason:\"doing-better-for-x\"},{match:\"(get|got|have) #Comparative [#PresentTense]\",group:0,tag:\"Noun\",reason:\"got-better-aim\"},{match:\"whose [#PresentTense] #Copula\",group:0,tag:\"Noun\",reason:\"whos-name-was\"},{match:\"#PhrasalVerb #Particle #Preposition [#PresentTense]\",group:0,tag:\"Noun\",reason:\"given-up-on-x\"},{match:\"there (are|were) #Adjective? [#PresentTense]\",group:0,tag:\"Plural\",reason:\"there-are\"},{match:\"#Value [#PresentTense] of\",group:0,notIf:\"(one|1|#Copula|#Infinitive)\",tag:\"Plural\",reason:\"2-trains\"},{match:\"[#PresentTense] (are|were) #Adjective\",group:0,tag:\"Plural\",reason:\"compromises-are-possible\"},{match:\"^[(hope|guess|thought|think)] #Pronoun #Verb\",group:0,tag:\"Infinitive\",reason:\"suppose-i\"},{match:\"#Possessive #Adjective [#Verb]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"our-full-support\"},{match:\"[(tastes|smells)] #Adverb? #Adjective\",group:0,tag:\"PresentTense\",reason:\"tastes-good\"},{match:\"#Copula #Gerund [#PresentTense] !by?\",group:0,tag:\"Noun\",notIf:\"going\",reason:\"ignoring-commute\"},{match:\"#Determiner #Adjective? [(shed|thought|rose|bid|saw|spelt)]\",group:0,tag:\"Noun\",reason:\"noun-past\"},{match:\"how to [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"how-to-noun\"},{match:\"which [%Noun|Verb%] #Noun\",group:0,tag:\"Infinitive\",reason:\"which-boost-it\"},{match:\"#Gerund [%Plural|Verb%]\",group:0,tag:\"Plural\",reason:\"asking-questions\"},{match:\"(ready|available|difficult|hard|easy|made|attempt|try) to [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"ready-to-noun\"},{match:\"(bring|went|go|drive|run|bike) to [%Noun|Verb%]\",group:0,tag:\"Noun\",reason:\"bring-to-noun\"},{match:\"#Modal #Noun [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"would-you-look\"},{match:\"#Copula just [#Infinitive]\",group:0,tag:\"Noun\",reason:\"is-just-spam\"},{match:\"^%Noun|Verb% %Plural|Verb%\",tag:\"Imperative #Plural\",reason:\"request-copies\"},{match:\"#Adjective #Plural and [%Plural|Verb%]\",group:0,tag:\"#Plural\",reason:\"pickles-and-drinks\"},{match:\"#Determiner #Year [#Verb]\",group:0,tag:\"Noun\",reason:\"the-1968-film\"},{match:\"#Determiner [#PhrasalVerb #Particle]\",group:0,tag:\"Noun\",reason:\"the-break-up\"},{match:\"#Determiner [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",notIf:\"(#Pronoun|#Possessive|#ProperNoun)\",reason:\"the-individual-goals\"},{match:\"[%Noun|Verb%] or #Infinitive\",group:0,tag:\"Infinitive\",reason:\"work-or-prepare\"},{match:\"to #Infinitive [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Gerund|#Copula|help)\",reason:\"to-give-thanks\"},{match:\"[#Noun] me\",group:0,tag:\"Verb\",reason:\"kills-me\"},{match:\"%Plural|Verb% %Plural|Verb%\",tag:\"#PresentTense #Plural\",reason:\"removes-wrinkles\"}],[{match:\"#Money and #Money #Currency?\",tag:\"Money\",reason:\"money-and-money\"},{match:\"#Value #Currency [and] #Value (cents|ore|centavos|sens)\",group:0,tag:\"money\",reason:\"and-5-cents\"},{match:\"#Value (mark|rand|won|rub|ore)\",tag:\"#Money #Currency\",reason:\"4-mark\"},{match:\"a pound\",tag:\"#Money #Unit\",reason:\"a-pound\"},{match:\"#Value (pound|pounds)\",tag:\"#Money #Unit\",reason:\"4-pounds\"}],[{match:\"[(half|quarter)] of? (a|an)\",group:0,tag:\"Fraction\",reason:\"millionth\"},{match:\"#Adverb [half]\",group:0,tag:\"Fraction\",reason:\"nearly-half\"},{match:\"[half] the\",group:0,tag:\"Fraction\",reason:\"half-the\"},{match:\"#Cardinal and a half\",tag:\"Fraction\",reason:\"and-a-half\"},{match:\"#Value (halves|halfs|quarters)\",tag:\"Fraction\",reason:\"two-halves\"},{match:\"a #Ordinal\",tag:\"Fraction\",reason:\"a-quarter\"},{match:\"[#Cardinal+] (#Fraction && /s$/)\",tag:\"Fraction\",reason:\"seven-fifths\"},{match:\"[#Cardinal+ #Ordinal] of .\",group:0,tag:\"Fraction\",reason:\"ordinal-of\"},{match:\"[(#NumericValue && #Ordinal)] of .\",group:0,tag:\"Fraction\",reason:\"num-ordinal-of\"},{match:\"(a|one) #Cardinal?+ #Ordinal\",tag:\"Fraction\",reason:\"a-ordinal\"},{match:\"#Cardinal+ out? of every? #Cardinal\",tag:\"Fraction\",reason:\"out-of\"}],[{match:\"#Cardinal [second]\",tag:\"Unit\",reason:\"one-second\"},{match:\"!once? [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)\",group:0,tag:\"Value\",reason:\"a-is-one\"},{match:\"1 #Value #PhoneNumber\",tag:\"PhoneNumber\",reason:\"1-800-Value\"},{match:\"#NumericValue #PhoneNumber\",tag:\"PhoneNumber\",reason:\"(800) PhoneNumber\"},{match:\"#Demonym #Currency\",tag:\"Currency\",reason:\"demonym-currency\"},{match:\"#Value [(buck|bucks|grand)]\",group:0,tag:\"Currency\",reason:\"value-bucks\"},{match:\"[#Value+] #Currency\",group:0,tag:\"Money\",reason:\"15 usd\"},{match:\"[second] #Noun\",group:0,tag:\"Ordinal\",reason:\"second-noun\"},{match:\"#Value+ [#Currency]\",group:0,tag:\"Unit\",reason:\"5-yan\"},{match:\"#Value [(foot|feet)]\",group:0,tag:\"Unit\",reason:\"foot-unit\"},{match:\"#Value [#Abbreviation]\",group:0,tag:\"Unit\",reason:\"value-abbr\"},{match:\"#Value [k]\",group:0,tag:\"Unit\",reason:\"value-k\"},{match:\"#Unit an hour\",tag:\"Unit\",reason:\"unit-an-hour\"},{match:\"(minus|negative) #Value\",tag:\"Value\",reason:\"minus-value\"},{match:\"#Value (point|decimal) #Value\",tag:\"Value\",reason:\"value-point-value\"},{match:\"#Determiner [(half|quarter)] #Ordinal\",group:0,tag:\"Value\",reason:\"half-ordinal\"},{match:\"#Multiple+ and #Value\",tag:\"Value\",reason:\"magnitude-and-value\"},{match:\"#Value #Unit [(per|an) (hr|hour|sec|second|min|minute)]\",group:0,tag:\"Unit\",reason:\"12-miles-per-second\"},{match:\"#Value [(square|cubic)] #Unit\",group:0,tag:\"Unit\",reason:\"square-miles\"}],[{match:\"#Copula [(#Noun|#PresentTense)] #LastName\",group:0,tag:\"FirstName\",reason:\"copula-noun-lastname\"},{match:\"(sister|pope|brother|father|aunt|uncle|grandpa|grandfather|grandma) #ProperNoun\",tag:\"Person\",reason:\"lady-titlecase\",safe:!0},{match:\"#FirstName [#Determiner #Noun] #LastName\",group:0,tag:\"Person\",reason:\"first-noun-last\"},{match:\"#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun\",tag:\"Person\",reason:\"titlecase-acronym-titlecase\",safe:!0},{match:\"#Acronym #LastName\",tag:\"Person\",reason:\"acronym-lastname\",safe:!0},{match:\"#Person (jr|sr|md)\",tag:\"Person\",reason:\"person-honorific\"},{match:\"#Honorific #Acronym\",tag:\"Person\",reason:\"Honorific-TitleCase\"},{match:\"#Person #Person the? #RomanNumeral\",tag:\"Person\",reason:\"roman-numeral\"},{match:\"#FirstName [/^[^aiurck]$/]\",group:0,tag:[\"Acronym\",\"Person\"],reason:\"john-e\"},{match:\"#Noun van der? #Noun\",tag:\"Person\",reason:\"van der noun\",safe:!0},{match:\"(king|queen|prince|saint|lady) of #Noun\",tag:\"Person\",reason:\"king-of-noun\",safe:!0},{match:\"(prince|lady) #Place\",tag:\"Person\",reason:\"lady-place\"},{match:\"(king|queen|prince|saint) #ProperNoun\",tag:\"Person\",notIf:\"#Place\",reason:\"saint-foo\"},{match:\"al (#Person|#ProperNoun)\",tag:\"Person\",reason:\"al-borlen\",safe:!0},{match:\"#FirstName de #Noun\",tag:\"Person\",reason:\"bill-de-noun\"},{match:\"#FirstName (bin|al) #Noun\",tag:\"Person\",reason:\"bill-al-noun\"},{match:\"#FirstName #Acronym #ProperNoun\",tag:\"Person\",reason:\"bill-acronym-title\"},{match:\"#FirstName #FirstName #ProperNoun\",tag:\"Person\",reason:\"bill-firstname-title\"},{match:\"#Honorific #FirstName? #ProperNoun\",tag:\"Person\",reason:\"dr-john-Title\"},{match:\"#FirstName the #Adjective\",tag:\"Person\",reason:\"name-the-great\"},{match:\"#ProperNoun (van|al|bin) #ProperNoun\",tag:\"Person\",reason:\"title-van-title\",safe:!0},{match:\"#ProperNoun (de|du) la? #ProperNoun\",tag:\"Person\",notIf:\"#Place\",reason:\"title-de-title\"},{match:\"#Singular #Acronym #LastName\",tag:\"#FirstName #Person .\",reason:\"title-acro-noun\",safe:!0},{match:\"[#ProperNoun] #Person\",group:0,tag:\"Person\",reason:\"proper-person\",safe:!0},{match:\"#Person [#ProperNoun #ProperNoun]\",group:0,tag:\"Person\",notIf:\"#Possessive\",reason:\"three-name-person\",safe:!0},{match:\"#FirstName #Acronym? [#ProperNoun]\",group:0,tag:\"LastName\",notIf:\"#Possessive\",reason:\"firstname-titlecase\"},{match:\"#FirstName [#FirstName]\",group:0,tag:\"LastName\",reason:\"firstname-firstname\"},{match:\"#FirstName #Acronym #Noun\",tag:\"Person\",reason:\"n-acro-noun\",safe:!0},{match:\"#FirstName [(de|di|du|van|von)] #Person\",group:0,tag:\"LastName\",reason:\"de-firstname\"},{match:\"[(lieutenant|corporal|sergeant|captain|qeen|king|admiral|major|colonel|marshal|president|queen|king)+] #ProperNoun\",group:0,tag:\"Honorific\",reason:\"seargeant-john\"},{match:\"[(private|general|major|rear|prime|field|count|miss)] #Honorific? #Person\",group:0,tag:[\"Honorific\",\"Person\"],reason:\"ambg-honorifics\"},{match:\"#Honorific #FirstName [#Singular]\",group:0,tag:\"LastName\",notIf:\"#Possessive\",reason:\"dr-john-foo\",safe:!0},{match:\"[(his|her) (majesty|honour|worship|excellency|honorable)] #Person\",group:0,tag:\"Honorific\",reason:\"his-excellency\"},{match:\"#Honorific #Actor\",tag:\"Honorific\",reason:\"Lieutenant colonel\"},{match:\"(first|second|third|1st|2nd|3rd) #Actor\",tag:\"Honorific\",reason:\"first lady\"},{match:\"#Person #RomanNumeral\",tag:\"Person\",reason:\"louis-IV\"}],[{match:\"#FirstName #Noun$\",tag:\". #LastName\",notIf:\"(#Possessive|#Organization|#Place|#Pronoun|@hasTitleCase)\",reason:\"firstname-noun\"},{match:\"%Person|Date% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"jan-thierson\"},{match:\"%Person|Noun% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"switch-person\",safe:!0},{match:\"%Person|Noun% #Organization\",tag:\"Organization\",reason:\"olive-garden\"},{match:\"%Person|Verb% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"verb-propernoun\",ifNo:\"#Actor\"},{match:\"[%Person|Verb%] (will|had|has|said|says|told|did|learned|wants|wanted)\",group:0,tag:\"Person\",reason:\"person-said\"},{match:\"[%Person|Place%] (harbor|harbour|pier|town|city|place|dump|landfill)\",group:0,tag:\"Place\",reason:\"sydney-harbour\"},{match:\"(west|east|north|south) [%Person|Place%]\",group:0,tag:\"Place\",reason:\"east-sydney\"},{match:\"#Modal [%Person|Verb%]\",group:0,tag:\"Verb\",reason:\"would-mark\"},{match:\"#Adverb [%Person|Verb%]\",group:0,tag:\"Verb\",reason:\"really-mark\"},{match:\"[%Person|Verb%] (#Adverb|#Comparative)\",group:0,tag:\"Verb\",reason:\"drew-closer\"},{match:\"%Person|Verb% #Person\",tag:\"Person\",reason:\"rob-smith\"},{match:\"%Person|Verb% #Acronym #ProperNoun\",tag:\"Person\",reason:\"rob-a-smith\"},{match:\"[will] #Verb\",group:0,tag:\"Modal\",reason:\"will-verb\"},{match:\"(will && @isTitleCase) #ProperNoun\",tag:\"Person\",reason:\"will-name\"},{match:\"(#FirstName && !#Possessive) [#Singular] #Verb\",group:0,safe:!0,tag:\"LastName\",reason:\"jack-layton\"},{match:\"^[#Singular] #Person #Verb\",group:0,safe:!0,tag:\"Person\",reason:\"sherwood-anderson\"},{match:\"(a|an) [#Person]$\",group:0,unTag:\"Person\",reason:\"a-warhol\"}],[{match:\"#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)\",tag:\"#Copula #Adverb #Adjective\",reason:\"sometimes-adverb\"},{match:\"(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense\",group:0,tag:\"Modal\",reason:\"i-better\"},{match:\"(#Modal|i|they|we|do) not? [like]\",group:0,tag:\"PresentTense\",reason:\"modal-like\"},{match:\"#Noun #Adverb? [left]\",group:0,tag:\"PastTense\",reason:\"left-verb\"},{match:\"will #Adverb? not? #Adverb? [be] #Gerund\",group:0,tag:\"Copula\",reason:\"will-be-copula\"},{match:\"will #Adverb? not? #Adverb? [be] #Adjective\",group:0,tag:\"Copula\",reason:\"be-copula\"},{match:\"[march] (up|down|back|toward)\",notIf:\"#Date\",group:0,tag:\"Infinitive\",reason:\"march-to\"},{match:\"#Modal [march]\",group:0,tag:\"Infinitive\",reason:\"must-march\"},{match:\"[may] be\",group:0,tag:\"Verb\",reason:\"may-be\"},{match:\"[(subject|subjects|subjected)] to\",group:0,tag:\"Verb\",reason:\"subject to\"},{match:\"[home] to\",group:0,tag:\"PresentTense\",reason:\"home to\"},{match:\"[open] #Determiner\",group:0,tag:\"Infinitive\",reason:\"open-the\"},{match:\"(were|was) being [#PresentTense]\",group:0,tag:\"PastTense\",reason:\"was-being\"},{match:\"(had|has|have) [been /en$/]\",group:0,tag:\"Auxiliary Participle\",reason:\"had-been-broken\"},{match:\"(had|has|have) [been /ed$/]\",group:0,tag:\"Auxiliary PastTense\",reason:\"had-been-smoked\"},{match:\"(had|has) #Adverb? [been] #Adverb? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"had-been-adj\"},{match:\"(had|has) to [#Noun] (#Determiner|#Possessive)\",group:0,tag:\"Infinitive\",reason:\"had-to-noun\"},{match:\"have [#PresentTense]\",group:0,tag:\"PastTense\",notIf:\"(come|gotten)\",reason:\"have-read\"},{match:\"(does|will|#Modal) that [work]\",group:0,tag:\"PastTense\",reason:\"does-that-work\"},{match:\"[(sound|sounds)] #Adjective\",group:0,tag:\"PresentTense\",reason:\"sounds-fun\"},{match:\"[(look|looks)] #Adjective\",group:0,tag:\"PresentTense\",reason:\"looks-good\"},{match:\"[(start|starts|stop|stops|begin|begins)] #Gerund\",group:0,tag:\"Verb\",reason:\"starts-thinking\"},{match:\"(have|had) read\",tag:\"Modal #PastTense\",reason:\"read-read\"},{match:\"(is|was|were) [(under|over) #PastTense]\",group:0,tag:\"Adverb Adjective\",reason:\"was-under-cooked\"},{match:\"[shit] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear1-verb\"},{match:\"[damn] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear2-verb\"},{match:\"[fuck] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear3-verb\"},{match:\"#Plural that %Noun|Verb%\",tag:\". #Preposition #Infinitive\",reason:\"jobs-that-work\"},{match:\"[works] for me\",group:0,tag:\"PresentTense\",reason:\"works-for-me\"},{match:\"as #Pronoun [please]\",group:0,tag:\"Infinitive\",reason:\"as-we-please\"},{match:\"[(co|mis|de|inter|intra|pre|re|un|out|under|over|counter)] #Verb\",group:0,tag:[\"Verb\",\"Prefix\"],notIf:\"(#Copula|#PhrasalVerb)\",reason:\"co-write\"},{match:\"#PastTense and [%Adj|Past%]\",group:0,tag:\"PastTense\",reason:\"dressed-and-left\"},{match:\"[%Adj|Past%] and #PastTense\",group:0,tag:\"PastTense\",reason:\"dressed-and-left\"},{match:\"#Copula #Pronoun [%Adj|Past%]\",group:0,tag:\"Adjective\",reason:\"is-he-stoked\"},{match:\"to [%Noun|Verb%] #Preposition\",group:0,tag:\"Infinitive\",reason:\"to-dream-of\"}],[{match:\"(slowly|quickly) [#Adjective]\",group:0,tag:\"Verb\",reason:\"slowly-adj\"},{match:\"does (#Adverb|not)? [#Adjective]\",group:0,tag:\"PresentTense\",reason:\"does-mean\"},{match:\"[(fine|okay|cool|ok)] by me\",group:0,tag:\"Adjective\",reason:\"okay-by-me\"},{match:\"i (#Adverb|do)? not? [mean]\",group:0,tag:\"PresentTense\",reason:\"i-mean\"},{match:\"will #Adjective\",tag:\"Auxiliary Infinitive\",reason:\"will-adj\"},{match:\"#Pronoun [#Adjective] #Determiner #Adjective? #Noun\",group:0,tag:\"Verb\",reason:\"he-adj-the\"},{match:\"#Copula [%Adj|Present%] to #Verb\",group:0,tag:\"Verb\",reason:\"adj-to\"},{match:\"#Copula [#Adjective] (well|badly|quickly|slowly)\",group:0,tag:\"Verb\",reason:\"done-well\"},{match:\"#Adjective and [#Gerund] !#Preposition?\",group:0,tag:\"Adjective\",reason:\"rude-and-x\"},{match:\"#Copula #Adverb? (over|under) [#PastTense]\",group:0,tag:\"Adjective\",reason:\"over-cooked\"},{match:\"#Copula #Adjective+ (and|or) [#PastTense]$\",group:0,tag:\"Adjective\",reason:\"bland-and-overcooked\"},{match:\"got #Adverb? [#PastTense] of\",group:0,tag:\"Adjective\",reason:\"got-tired-of\"},{match:\"(seem|seems|seemed|appear|appeared|appears|feel|feels|felt|sound|sounds|sounded) (#Adverb|#Adjective)? [#PastTense]\",group:0,tag:\"Adjective\",reason:\"felt-loved\"},{match:\"(seem|feel|seemed|felt) [#PastTense #Particle?]\",group:0,tag:\"Adjective\",reason:\"seem-confused\"},{match:\"a (bit|little|tad) [#PastTense #Particle?]\",group:0,tag:\"Adjective\",reason:\"a-bit-confused\"},{match:\"not be [%Adj|Past% #Particle?]\",group:0,tag:\"Adjective\",reason:\"do-not-be-confused\"},{match:\"#Copula just [%Adj|Past% #Particle?]\",group:0,tag:\"Adjective\",reason:\"is-just-right\"},{match:\"as [#Infinitive] as\",group:0,tag:\"Adjective\",reason:\"as-pale-as\"},{match:\"[%Adj|Past%] and #Adjective\",group:0,tag:\"Adjective\",reason:\"faled-and-oppressive\"},{match:\"or [#PastTense] #Noun\",group:0,tag:\"Adjective\",notIf:\"(#Copula|#Pronoun)\",reason:\"or-heightened-emotion\"},{match:\"(become|became|becoming|becomes) [#Verb]\",group:0,tag:\"Adjective\",reason:\"become-verb\"},{match:\"#Possessive [#PastTense] #Noun\",group:0,tag:\"Adjective\",reason:\"declared-intentions\"},{match:\"#Copula #Pronoun [%Adj|Present%]\",group:0,tag:\"Adjective\",reason:\"is-he-cool\"},{match:\"#Copula [%Adj|Past%] with\",group:0,tag:\"Adjective\",notIf:\"(associated|worn|baked|aged|armed|bound|fried|loaded|mixed|packed|pumped|filled|sealed)\",reason:\"is-crowded-with\"},{match:\"#Copula #Adverb? [%Adj|Present%]$\",group:0,tag:\"Adjective\",reason:\"was-empty$\"}],[{match:\"will (#Adverb|not)+? [have] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"will-have-vb\"},{match:\"[#Copula] (#Adverb|not)+? (#Gerund|#PastTense)\",group:0,tag:\"Auxiliary\",reason:\"copula-walking\"},{match:\"[(#Modal|did)+] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"modal-verb\"},{match:\"#Modal (#Adverb|not)+? [have] (#Adverb|not)+? [had] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"would-have\"},{match:\"[(has|had)] (#Adverb|not)+? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"had-walked\"},{match:\"[(do|does|did|will|have|had|has|got)] (not|#Adverb)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"have-had\"},{match:\"[about to] #Adverb? #Verb\",group:0,tag:[\"Auxiliary\",\"Verb\"],reason:\"about-to\"},{match:\"#Modal (#Adverb|not)+? [be] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"would-be\"},{match:\"[(#Modal|had|has)] (#Adverb|not)+? [been] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"had-been\"},{match:\"[(be|being|been)] #Participle\",group:0,tag:\"Auxiliary\",reason:\"being-driven\"},{match:\"[may] #Adverb? #Infinitive\",group:0,tag:\"Auxiliary\",reason:\"may-want\"},{match:\"#Copula (#Adverb|not)+? [(be|being|been)] #Adverb+? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"being-walked\"},{match:\"will [be] #PastTense\",group:0,tag:\"Auxiliary\",reason:\"will-be-x\"},{match:\"[(be|been)] (#Adverb|not)+? #Gerund\",group:0,tag:\"Auxiliary\",reason:\"been-walking\"},{match:\"[used to] #PresentTense\",group:0,tag:\"Auxiliary\",reason:\"used-to-walk\"},{match:\"#Copula (#Adverb|not)+? [going to] #Adverb+? #PresentTense\",group:0,tag:\"Auxiliary\",reason:\"going-to-walk\"},{match:\"#Imperative [(me|him|her)]\",group:0,tag:\"Reflexive\",reason:\"tell-him\"},{match:\"(is|was) #Adverb? [no]\",group:0,tag:\"Negative\",reason:\"is-no\"},{match:\"[(been|had|became|came)] #PastTense\",group:0,notIf:\"#PhrasalVerb\",tag:\"Auxiliary\",reason:\"been-told\"},{match:\"[(being|having|getting)] #Verb\",group:0,tag:\"Auxiliary\",reason:\"being-born\"},{match:\"[be] #Gerund\",group:0,tag:\"Auxiliary\",reason:\"be-walking\"},{match:\"[better] #PresentTense\",group:0,tag:\"Modal\",notIf:\"(#Copula|#Gerund)\",reason:\"better-go\"},{match:\"even better\",tag:\"Adverb #Comparative\",reason:\"even-better\"}],[{match:\"(#Verb && @hasHyphen) up\",tag:\"PhrasalVerb\",reason:\"foo-up\"},{match:\"(#Verb && @hasHyphen) off\",tag:\"PhrasalVerb\",reason:\"foo-off\"},{match:\"(#Verb && @hasHyphen) over\",tag:\"PhrasalVerb\",reason:\"foo-over\"},{match:\"(#Verb && @hasHyphen) out\",tag:\"PhrasalVerb\",reason:\"foo-out\"},{match:\"[#Verb (in|out|up|down|off|back)] (on|in)\",notIf:\"#Copula\",tag:\"PhrasalVerb Particle\",reason:\"walk-in-on\"},{match:\"(lived|went|crept|go) [on] for\",group:0,tag:\"PhrasalVerb\",reason:\"went-on\"},{match:\"#Verb (up|down|in|on|for)$\",tag:\"PhrasalVerb #Particle\",notIf:\"#PhrasalVerb\",reason:\"come-down$\"},{match:\"help [(stop|end|make|start)]\",group:0,tag:\"Infinitive\",reason:\"help-stop\"},{match:\"#PhrasalVerb (in && #Particle) #Determiner\",tag:\"#Verb #Preposition #Determiner\",unTag:\"PhrasalVerb\",reason:\"work-in-the\"},{match:\"[(stop|start|finish|help)] #Gerund\",group:0,tag:\"Infinitive\",reason:\"start-listening\"},{match:\"#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]\",group:0,tag:\"Adverb\",reason:\"phrasal-pronoun-advb\"}],[{match:\"^do not? [#Infinitive #Particle?]\",notIf:Vl,group:0,tag:\"Imperative\",reason:\"do-eat\"},{match:\"^please do? not? [#Infinitive #Particle?]\",group:0,tag:\"Imperative\",reason:\"please-go\"},{match:\"^just do? not? [#Infinitive #Particle?]\",group:0,tag:\"Imperative\",reason:\"just-go\"},{match:\"^[#Infinitive] it #Comparative\",notIf:Vl,group:0,tag:\"Imperative\",reason:\"do-it-better\"},{match:\"^[#Infinitive] it (please|now|again|plz)\",notIf:Vl,group:0,tag:\"Imperative\",reason:\"do-it-please\"},{match:\"^[#Infinitive] (#Adjective|#Adverb)$\",group:0,tag:\"Imperative\",notIf:\"(so|such|rather|enough)\",reason:\"go-quickly\"},{match:\"^[#Infinitive] (up|down|over) #Determiner\",group:0,tag:\"Imperative\",reason:\"turn-down\"},{match:\"^[#Infinitive] (your|my|the|a|an|any|each|every|some|more|with|on)\",group:0,notIf:\"like\",tag:\"Imperative\",reason:\"eat-my-shorts\"},{match:\"^[#Infinitive] (him|her|it|us|me|there)\",group:0,tag:\"Imperative\",reason:\"tell-him\"},{match:\"^[#Infinitive] #Adjective #Noun$\",group:0,tag:\"Imperative\",reason:\"avoid-loud-noises\"},{match:\"^[#Infinitive] (#Adjective|#Adverb)? and #Infinitive\",group:0,tag:\"Imperative\",reason:\"call-and-reserve\"},{match:\"^(go|stop|wait|hurry) please?$\",tag:\"Imperative\",reason:\"go\"},{match:\"^(somebody|everybody) [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"somebody-call\"},{match:\"^let (us|me) [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"lets-leave\"},{match:\"^[(shut|close|open|start|stop|end|keep)] #Determiner #Noun\",group:0,tag:\"Imperative\",reason:\"shut-the-door\"},{match:\"^[#PhrasalVerb #Particle] #Determiner #Noun\",group:0,tag:\"Imperative\",reason:\"turn-off-the-light\"},{match:\"^[go] to .\",group:0,tag:\"Imperative\",reason:\"go-to-toronto\"},{match:\"^#Modal you [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"would-you-\"},{match:\"^never [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"never-stop\"},{match:\"^come #Infinitive\",tag:\"Imperative\",notIf:\"on\",reason:\"come-have\"},{match:\"^come and? #Infinitive\",tag:\"Imperative . Imperative\",notIf:\"#PhrasalVerb\",reason:\"come-and-have\"},{match:\"^stay (out|away|back)\",tag:\"Imperative\",reason:\"stay-away\"},{match:\"^[(stay|be|keep)] #Adjective\",group:0,tag:\"Imperative\",reason:\"stay-cool\"},{match:\"^[keep it] #Adjective\",group:0,tag:\"Imperative\",reason:\"keep-it-cool\"},{match:\"^do not [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"do-not-be\"},{match:\"[#Infinitive] (yourself|yourselves)\",group:0,tag:\"Imperative\",reason:\"allow-yourself\"},{match:\"[#Infinitive] what .\",group:0,tag:\"Imperative\",reason:\"look-what\"},{match:\"^[#Infinitive] #Gerund\",group:0,tag:\"Imperative\",reason:\"keep-playing\"},{match:\"^[#Infinitive] (to|for|into|toward|here|there)\",group:0,tag:\"Imperative\",reason:\"go-to\"},{match:\"^[#Infinitive] (and|or) #Infinitive\",group:0,tag:\"Imperative\",reason:\"inf-and-inf\"},{match:\"^[%Noun|Verb%] to\",group:0,tag:\"Imperative\",reason:\"commit-to\"},{match:\"^[#Infinitive] #Adjective? #Singular #Singular\",group:0,tag:\"Imperative\",reason:\"maintain-eye-contact\"},{match:\"do not (forget|omit|neglect) to [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"do-not-forget\"},{match:\"^[(ask|wear|pay|look|help|show|watch|act|fix|kill|stop|start|turn|try|win)] #Noun\",group:0,tag:\"Imperative\",reason:\"pay-attention\"}],[{match:\"(that|which) were [%Adj|Gerund%]\",group:0,tag:\"Gerund\",reason:\"that-were-growing\"},{match:\"#Gerund [#Gerund] #Plural\",group:0,tag:\"Adjective\",reason:\"hard-working-fam\"}],[{match:\"u r\",tag:\"#Pronoun #Copula\",reason:\"u r\"},{match:\"#Noun [(who|whom)]\",group:0,tag:\"Determiner\",reason:\"captain-who\"},{match:\"[had] #Noun+ #PastTense\",group:0,tag:\"Condition\",reason:\"had-he\"},{match:\"[were] #Noun+ to #Infinitive\",group:0,tag:\"Condition\",reason:\"were-he\"},{match:\"some sort of\",tag:\"Adjective Noun Conjunction\",reason:\"some-sort-of\"},{match:\"of some sort\",tag:\"Conjunction Adjective Noun\",reason:\"of-some-sort\"},{match:\"[such] (a|an|is)? #Noun\",group:0,tag:\"Determiner\",reason:\"such-skill\"},{match:\"[right] (before|after|in|into|to|toward)\",group:0,tag:\"#Adverb\",reason:\"right-into\"},{match:\"#Preposition [about]\",group:0,tag:\"Adjective\",reason:\"at-about\"},{match:\"(are|#Modal|see|do|for) [ya]\",group:0,tag:\"Pronoun\",reason:\"are-ya\"},{match:\"[long live] .\",group:0,tag:\"#Adjective #Infinitive\",reason:\"long-live\"},{match:\"[plenty] of\",group:0,tag:\"#Uncountable\",reason:\"plenty-of\"},{match:\"(always|nearly|barely|practically) [there]\",group:0,tag:\"Adjective\",reason:\"always-there\"},{match:\"[there] (#Adverb|#Pronoun)? #Copula\",group:0,tag:\"There\",reason:\"there-is\"},{match:\"#Copula [there] .\",group:0,tag:\"There\",reason:\"is-there\"},{match:\"#Modal #Adverb? [there]\",group:0,tag:\"There\",reason:\"should-there\"},{match:\"^[do] (you|we|they)\",group:0,tag:\"QuestionWord\",reason:\"do-you\"},{match:\"^[does] (he|she|it|#ProperNoun)\",group:0,tag:\"QuestionWord\",reason:\"does-he\"},{match:\"#Determiner #Noun+ [who] #Verb\",group:0,tag:\"Preposition\",reason:\"the-x-who\"},{match:\"#Determiner #Noun+ [which] #Verb\",group:0,tag:\"Preposition\",reason:\"the-x-which\"},{match:\"a [while]\",group:0,tag:\"Noun\",reason:\"a-while\"},{match:\"guess who\",tag:\"#Infinitive #QuestionWord\",reason:\"guess-who\"},{match:\"[fucking] !#Verb\",group:0,tag:\"#Gerund\",reason:\"f-as-gerund\"}],[{match:\"university of #Place\",tag:\"Organization\",reason:\"university-of-Foo\"},{match:\"#Noun (&|n) #Noun\",tag:\"Organization\",reason:\"Noun-&-Noun\"},{match:\"#Organization of the? #ProperNoun\",tag:\"Organization\",reason:\"org-of-place\",safe:!0},{match:\"#Organization #Country\",tag:\"Organization\",reason:\"org-country\"},{match:\"#ProperNoun #Organization\",tag:\"Organization\",notIf:\"#FirstName\",reason:\"titlecase-org\"},{match:\"#ProperNoun (ltd|co|inc|dept|assn|bros)\",tag:\"Organization\",reason:\"org-abbrv\"},{match:\"the [#Acronym]\",group:0,tag:\"Organization\",reason:\"the-acronym\",safe:!0},{match:\"government of the? [#Place+]\",tag:\"Organization\",reason:\"government-of-x\"},{match:\"(health|school|commerce) board\",tag:\"Organization\",reason:\"school-board\"},{match:\"(nominating|special|conference|executive|steering|central|congressional) committee\",tag:\"Organization\",reason:\"special-comittee\"},{match:\"(world|global|international|national|#Demonym) #Organization\",tag:\"Organization\",reason:\"global-org\"},{match:\"#Noun+ (public|private) school\",tag:\"School\",reason:\"noun-public-school\"},{match:\"#Place+ #SportsTeam\",tag:\"SportsTeam\",reason:\"place-sportsteam\"},{match:\"(dc|atlanta|minnesota|manchester|newcastle|sheffield) united\",tag:\"SportsTeam\",reason:\"united-sportsteam\"},{match:\"#Place+ fc\",tag:\"SportsTeam\",reason:\"fc-sportsteam\"},{match:\"#Place+ #Noun{0,2} (club|society|group|team|committee|commission|association|guild|crew)\",tag:\"Organization\",reason:\"place-noun-society\"}],[{match:\"(west|north|south|east|western|northern|southern|eastern)+ #Place\",tag:\"Region\",reason:\"west-norfolk\"},{match:\"#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]\",group:0,tag:\"Region\",reason:\"us-state\"},{match:\"portland [or]\",group:0,tag:\"Region\",reason:\"portland-or\"},{match:\"#ProperNoun+ (cliff|place|range|pit|place|point|room|grounds|ruins)\",tag:\"Place\",reason:\"foo-point\"},{match:\"in [#ProperNoun] #Place\",group:0,tag:\"Place\",reason:\"propernoun-place\"},{match:\"#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)\",tag:\"Address\",reason:\"address-st\"},{match:\"(port|mount|mt) #ProperName\",tag:\"Place\",reason:\"port-name\"}],[{match:\"[so] #Noun\",group:0,tag:\"Conjunction\",reason:\"so-conj\"},{match:\"[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)\",group:0,tag:\"Conjunction\",reason:\"how-he-is-x\"},{match:\"#Copula [(who|what|where|why|how|when)] #Noun\",group:0,tag:\"Conjunction\",reason:\"when-he\"},{match:\"#Verb [that] #Pronoun\",group:0,tag:\"Conjunction\",reason:\"said-that-he\"},{match:\"#Noun [that] #Copula\",group:0,tag:\"Conjunction\",reason:\"that-are\"},{match:\"#Noun [that] #Verb #Adjective\",group:0,tag:\"Conjunction\",reason:\"that-seem\"},{match:\"#Noun #Copula not? [that] #Adjective\",group:0,tag:\"Adverb\",reason:\"that-adj\"},{match:\"#Verb #Adverb? #Noun [(that|which)]\",group:0,tag:\"Preposition\",reason:\"that-prep\"},{match:\"@hasComma [which] (#Pronoun|#Verb)\",group:0,tag:\"Preposition\",reason:\"which-copula\"},{match:\"#Noun [like] #Noun\",group:0,tag:\"Preposition\",reason:\"noun-like\"},{match:\"^[like] #Determiner\",group:0,tag:\"Preposition\",reason:\"like-the\"},{match:\"a #Noun [like] (#Noun|#Determiner)\",group:0,tag:\"Preposition\",reason:\"a-noun-like\"},{match:\"#Adverb [like]\",group:0,tag:\"Verb\",reason:\"really-like\"},{match:\"(not|nothing|never) [like]\",group:0,tag:\"Preposition\",reason:\"nothing-like\"},{match:\"#Infinitive #Pronoun [like]\",group:0,tag:\"Preposition\",reason:\"treat-them-like\"},{match:\"[#QuestionWord] (#Pronoun|#Determiner)\",group:0,tag:\"Preposition\",reason:\"how-he\"},{match:\"[#QuestionWord] #Participle\",group:0,tag:\"Preposition\",reason:\"when-stolen\"},{match:\"[how] (#Determiner|#Copula|#Modal|#PastTense)\",group:0,tag:\"QuestionWord\",reason:\"how-is\"},{match:\"#Plural [(who|which|when)] .\",group:0,tag:\"Preposition\",reason:\"people-who\"}],[{match:\"holy (shit|fuck|hell)\",tag:\"Expression\",reason:\"swears-expression\"},{match:\"^[(well|so|okay|now)] !#Adjective?\",group:0,tag:\"Expression\",reason:\"well-\"},{match:\"^come on\",tag:\"Expression\",reason:\"come-on\"},{match:\"(say|says|said) [sorry]\",group:0,tag:\"Expression\",reason:\"say-sorry\"},{match:\"^(ok|alright|shoot|hell|anyways)\",tag:\"Expression\",reason:\"ok-\"},{match:\"^(say && @hasComma)\",tag:\"Expression\",reason:\"say-\"},{match:\"^(like && @hasComma)\",tag:\"Expression\",reason:\"like-\"},{match:\"^[(dude|man|girl)] #Pronoun\",group:0,tag:\"Expression\",reason:\"dude-i\"}]);let Bl=null;var Sl={postTagger:function(e){const{world:t}=e,{model:n,methods:r}=t;Bl=Bl||r.one.buildNet(n.two.matches,t);const o=r.two.quickSplit(e.document).map((e=>{const t=e[0];return[t.index[0],t.index[1],t.index[1]+e.length]})),a=e.update(o);return a.cache(),a.sweep(Bl),e.uncache(),e.unfreeze(),e},tagger:e=>e.compute([\"freeze\",\"lexicon\",\"preTagger\",\"postTagger\",\"unfreeze\"])};const $l={api:function(e){e.prototype.confidence=function(){let e=0,t=0;return this.docs.forEach((n=>{n.forEach((n=>{t+=1,e+=n.confidence||1}))})),0===t?1:(e=>Math.round(100*e)/100)(e/t)},e.prototype.tagger=function(){return this.compute([\"tagger\"])}},compute:Sl,model:{two:{matches:zl}},hooks:[\"postTagger\"]},Ml=function(e,t){const n=function(e){return Object.keys(e.hooks).filter((e=>!e.startsWith(\"#\")&&!e.startsWith(\"%\")))}(t);if(0===n.length)return e;e._cache||e.cache();const r=e._cache;return e.filter(((e,t)=>n.some((e=>r[t].has(e)))))};var Ll={lib:{lazy:function(e,t){let n=t;\"string\"==typeof t&&(n=this.buildNet([{match:t}]));const r=this.tokenize(e),o=Ml(r,n);return o.found?(o.compute([\"index\",\"tagger\"]),o.match(t)):r.none()}}};const Kl=function(e,t,n){let r=e.split(/ /g).map((e=>e.toLowerCase().trim()));r=r.filter((e=>e)),r=r.map((e=>`{${e}}`)).join(\" \");let o=this.match(r);return n&&(o=o.if(n)),o.has(\"#Verb\")?function(e,t){let n=t;return e.forEach((e=>{e.has(\"#Infinitive\")||(n=function(e,t){const n=(0,e.methods.two.transform.verb.conjugate)(t,e.model);return e.has(\"#Gerund\")?n.Gerund:e.has(\"#PastTense\")?n.PastTense:e.has(\"#PresentTense\")?n.PresentTense:e.has(\"#Gerund\")?n.Gerund:t}(e,t)),e.replaceWith(n)})),e}(o,t):o.has(\"#Noun\")?function(e,t){let n=t;e.has(\"#Plural\")&&(n=(0,e.methods.two.transform.noun.toPlural)(t,e.model));e.replaceWith(n,{possessives:!0})}(o,t):o.has(\"#Adverb\")?function(e,t){const{toAdverb:n}=e.methods.two.transform.adjective,r=n(t);r&&e.replaceWith(r)}(o,t):o.has(\"#Adjective\")?function(e,t){const{toComparative:n,toSuperlative:r}=e.methods.two.transform.adjective;let o=t;e.has(\"#Comparative\")?o=n(o,e.model):e.has(\"#Superlative\")&&(o=r(o,e.model)),o&&e.replaceWith(o)}(o,t):this};var Jl={api:function(e){e.prototype.swap=Kl}};h.plugin(cl),h.plugin(Ol),h.plugin($l),h.plugin(Ll),h.plugin(Jl);const Wl=function(e){const{fromComparative:t,fromSuperlative:n}=e.methods.two.transform.adjective,r=e.text(\"normal\");return e.has(\"#Comparative\")?t(r,e.model):e.has(\"#Superlative\")?n(r,e.model):r};var ql={api:function(e){class Adjectives extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Adjectives\"}json(e={}){const{toAdverb:t,toNoun:n,toSuperlative:r,toComparative:o}=this.methods.two.transform.adjective;return e.normal=!0,this.map((a=>{const i=a.toView().json(e)[0]||{},s=Wl(a);return i.adjective={adverb:t(s,this.model),noun:n(s,this.model),superlative:r(s,this.model),comparative:o(s,this.model)},i}),[])}adverbs(){return this.before(\"#Adverb+$\").concat(this.after(\"^#Adverb+\"))}conjugate(e){const{toComparative:t,toSuperlative:n,toNoun:r,toAdverb:o}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const a=Wl(e);return{Adjective:a,Comparative:t(a,this.model),Superlative:n(a,this.model),Noun:r(a,this.model),Adverb:o(a,this.model)}}),[])}toComparative(e){const{toComparative:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}toSuperlative(e){const{toSuperlative:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}toAdverb(e){const{toAdverb:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}toNoun(e){const{toNoun:t}=this.methods.two.transform.adjective;return this.getNth(e).map((e=>{const n=Wl(e),r=t(n,this.model);return e.replaceWith(r)}))}}e.prototype.adjectives=function(e){let t=this.match(\"#Adjective\");return t=t.getNth(e),new Adjectives(t.document,t.pointer)},e.prototype.superlatives=function(e){let t=this.match(\"#Superlative\");return t=t.getNth(e),new Adjectives(t.document,t.pointer)},e.prototype.comparatives=function(e){let t=this.match(\"#Comparative\");return t=t.getNth(e),new Adjectives(t.document,t.pointer)}}};var Ul={api:function(e){class Adverbs extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Adverbs\"}conjugate(e){return this.getNth(e).map((e=>{const t=function(e){return e.compute(\"root\").text(\"root\")}(e);return{Adverb:e.text(\"normal\"),Adjective:t}}),[])}json(e={}){const t=this.methods.two.transform.adjective.fromAdverb;return e.normal=!0,this.map((n=>{const r=n.toView().json(e)[0]||{};return r.adverb={adjective:t(r.normal)},r}),[])}}e.prototype.adverbs=function(e){let t=this.match(\"#Adverb\");return t=t.getNth(e),new Adverbs(t.document,t.pointer)}}};const Rl=function(e){let t=this;t=function(e){let t=e.parentheses();return t=t.filter((e=>e.wordCount()>=3&&e.has(\"#Verb\")&&e.has(\"#Noun\"))),e.splitOn(t)}(t),t=function(e){let t=e.quotations();return t=t.filter((e=>e.wordCount()>=3&&e.has(\"#Verb\")&&e.has(\"#Noun\"))),e.splitOn(t)}(t),t=function(e){let t=e.match(\"@hasComma\");return t=t.filter((e=>{if(1===e.growLeft(\".\").wordCount())return!1;if(1===e.growRight(\". .\").wordCount())return!1;let t=e.grow(\".\");return t=t.ifNo(\"@hasComma @hasComma\"),t=t.ifNo(\"@hasComma (and|or) .\"),t=t.ifNo(\"(#City && @hasComma) #Country\"),t=t.ifNo(\"(#WeekDay && @hasComma) #Date\"),t=t.ifNo(\"(#Date+ && @hasComma) #Value\"),t=t.ifNo(\"(#Adjective && @hasComma) #Adjective\"),t.found})),e.splitAfter(t)}(t),t=t.splitAfter(\"(@hasEllipses|@hasSemicolon|@hasDash|@hasColon)\"),t=t.splitAfter(\"^#Pronoun (said|says)\"),t=t.splitBefore(\"(said|says) #ProperNoun$\"),t=t.splitBefore(\". . if .{4}\"),t=t.splitBefore(\"and while\"),t=t.splitBefore(\"now that\"),t=t.splitBefore(\"ever since\"),t=t.splitBefore(\"(supposing|although)\"),t=t.splitBefore(\"even (while|if|though)\"),t=t.splitBefore(\"(whereas|whose)\"),t=t.splitBefore(\"as (though|if)\"),t=t.splitBefore(\"(til|until)\");const n=t.match(\"#Verb .* [but] .* #Verb\",0);n.found&&(t=t.splitBefore(n));const r=t.if(\"if .{2,9} then .\").match(\"then\");return t=t.splitBefore(r),\"number\"==typeof e&&(t=t.get(e)),t},Ql={this:\"Noun\",then:\"Pivot\"},Zl=[{match:\"[that] #Determiner #Noun\",group:0,chunk:\"Pivot\"},{match:\"#PastTense [that]\",group:0,chunk:\"Pivot\"},{match:\"[so] #Determiner\",group:0,chunk:\"Pivot\"},{match:\"#Copula #Adverb+? [#Adjective]\",group:0,chunk:\"Adjective\"},{match:\"#Adjective and #Adjective\",chunk:\"Adjective\"},{match:\"#Adverb+ and #Adverb #Verb\",chunk:\"Verb\"},{match:\"#Gerund #Adjective$\",chunk:\"Verb\"},{match:\"#Gerund to #Verb\",chunk:\"Verb\"},{match:\"#PresentTense and #PresentTense\",chunk:\"Verb\"},{match:\"#Adverb #Negative\",chunk:\"Verb\"},{match:\"(want|wants|wanted) to #Infinitive\",chunk:\"Verb\"},{match:\"#Verb #Reflexive\",chunk:\"Verb\"},{match:\"#Verb [to] #Adverb? #Infinitive\",group:0,chunk:\"Verb\"},{match:\"[#Preposition] #Gerund\",group:0,chunk:\"Verb\"},{match:\"#Infinitive [that] <Noun>\",group:0,chunk:\"Verb\"},{match:\"#Noun of #Determiner? #Noun\",chunk:\"Noun\"},{match:\"#Value+ #Adverb? #Adjective\",chunk:\"Noun\"},{match:\"the [#Adjective] #Noun\",chunk:\"Noun\"},{match:\"#Singular in #Determiner? #Singular\",chunk:\"Noun\"},{match:\"#Plural [in] #Determiner? #Noun\",group:0,chunk:\"Pivot\"},{match:\"#Noun and #Determiner? #Noun\",notIf:\"(#Possessive|#Pronoun)\",chunk:\"Noun\"}];let _l=null;const Xl=function(e,t){if((\"undefined\"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_CHUNKS){const n=(e.normal+\"'\").padEnd(8);console.log(`  | '${n}  →  \u001b[34m${t.padEnd(12)}\u001b[0m \u001b[2m -fallback- \u001b[0m`)}e.chunk=t};var Yl={chunks:function(e){const{document:t,world:n}=e;!function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];!0!==Ql.hasOwnProperty(r.normal)?r.tags.has(\"Verb\")?r.chunk=\"Verb\":r.tags.has(\"Noun\")||r.tags.has(\"Determiner\")||r.tags.has(\"Value\")?r.chunk=\"Noun\":r.tags.has(\"QuestionWord\")&&(r.chunk=\"Pivot\"):r.chunk=Ql[r.normal]}}(t),function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];if(r.chunk)continue;const o=e[t][n+1],a=e[t][n-1];if(r.tags.has(\"Adjective\")){if(a&&a.tags.has(\"Copula\")){r.chunk=\"Adjective\";continue}if(a&&a.tags.has(\"Determiner\")){r.chunk=\"Noun\";continue}if(o&&o.tags.has(\"Noun\")){r.chunk=\"Noun\";continue}}else if(r.tags.has(\"Adverb\")||r.tags.has(\"Negative\")){if(a&&a.tags.has(\"Adjective\")){r.chunk=\"Adjective\";continue}if(a&&a.tags.has(\"Verb\")){r.chunk=\"Verb\";continue}if(o&&o.tags.has(\"Adjective\")){r.chunk=\"Adjective\";continue}if(o&&o.tags.has(\"Verb\")){r.chunk=\"Verb\";continue}}}}(t),function(e,t,n){const{methods:r}=n;_l=_l||r.one.buildNet(Zl,n),e.sweep(_l)}(e,0,n),function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];void 0===r.chunk&&(r.tags.has(\"Conjunction\")||r.tags.has(\"Preposition\")?Xl(r,\"Pivot\"):r.tags.has(\"Adverb\")?Xl(r,\"Verb\"):r.chunk=\"Noun\")}}(t),function(e){const t=[];let n=null;e.forEach((e=>{for(let r=0;r<e.length;r+=1){const o=e[r];n&&o.chunk===n?t[t.length-1].terms.push(o):(t.push({chunk:o.chunk,terms:[o]}),n=o.chunk)}})),t.forEach((e=>{if(\"Verb\"===e.chunk){const t=e.terms.find((e=>e.tags.has(\"Verb\")));t||e.terms.forEach((e=>e.chunk=null))}}))}(t)}},eu={compute:Yl,api:function(e){class Chunks extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Chunks\"}isVerb(){return this.filter((e=>e.has(\"<Verb>\")))}isNoun(){return this.filter((e=>e.has(\"<Noun>\")))}isAdjective(){return this.filter((e=>e.has(\"<Adjective>\")))}isPivot(){return this.filter((e=>e.has(\"<Pivot>\")))}debug(){return this.toView().debug(\"chunks\"),this}update(e){const t=new Chunks(this.document,e);return t._cache=this._cache,t}}e.prototype.chunks=function(e){let t=function(e){const t=[];let n=null;return e.clauses().docs.forEach((e=>{e.forEach((e=>{e.chunk&&e.chunk===n?t[t.length-1][2]=e.index[1]+1:(n=e.chunk,t.push([e.index[0],e.index[1],e.index[1]+1]))})),n=null})),e.update(t)}(this);return t=t.getNth(e),new Chunks(this.document,t.pointer)},e.prototype.clauses=Rl},hooks:[\"chunks\"]};const tu=/\\./g,nu=/\\(/,ru=/\\)/,ou=function(e,t){for(;t<e.length;t+=1)if(e[t].post&&ru.test(e[t].post)){let[,n]=e[t].index;return n=n||0,n}return null},au=function(e){class Parentheses extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Possessives\"}strip(){return function(e){return e.docs.forEach((e=>{e[0].pre=e[0].pre.replace(nu,\"\");const t=e[e.length-1];t.post=t.post.replace(ru,\"\")})),e}(this)}}e.prototype.parentheses=function(e){let t=function(e){const t=[];return e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const r=e[n];if(r.pre&&nu.test(r.pre)){const r=ou(e,n);if(null!==r){const[o,a]=e[n].index;t.push([o,a,r+1,e[n].id]),n=r}}}})),e.update(t)}(this);return t=t.getNth(e),new Parentheses(t.document,t.pointer)}},iu=/'s$/,su={'\"':'\"',\"＂\":\"＂\",\"'\":\"'\",\"“\":\"”\",\"‘\":\"’\",\"‟\":\"”\",\"‛\":\"’\",\"„\":\"”\",\"⹂\":\"”\",\"‚\":\"’\",\"«\":\"»\",\"‹\":\"›\",\"‵\":\"′\",\"‶\":\"″\",\"‷\":\"‴\",\"〝\":\"〞\",\"`\":\"´\",\"〟\":\"〞\"},lu=RegExp(\"[\"+Object.keys(su).join(\"\")+\"]\"),uu=RegExp(\"[\"+Object.values(su).join(\"\")+\"]\"),cu=function(e,t){const n=e[t].pre.match(lu)[0]||\"\";if(!n||!su[n])return null;const r=su[n];for(;t<e.length;t+=1)if(e[t].post&&e[t].post.match(r))return t;return null},hu=function(e){class Quotations extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Possessives\"}strip(){return function(e){e.docs.forEach((e=>{e[0].pre=e[0].pre.replace(lu,\"\");const t=e[e.length-1];t.post=t.post.replace(uu,\"\")}))}(this)}}e.prototype.quotations=function(e){let t=function(e){const t=[];return e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const r=e[n];if(r.pre&&lu.test(r.pre)){const r=cu(e,n);if(null!==r){const[o,a]=e[n].index;t.push([o,a,r+1,e[n].id]),n=r}}}})),e.update(t)}(this);return t=t.getNth(e),new Quotations(t.document,t.pointer)}},du=function(e){let t=this.splitAfter(\"@hasComma\");return t=t.match(\"#PhoneNumber+\"),t=t.getNth(e),t},gu=[[\"hyphenated\",\"@hasHyphen .\"],[\"hashTags\",\"#HashTag\"],[\"emails\",\"#Email\"],[\"emoji\",\"#Emoji\"],[\"emoticons\",\"#Emoticon\"],[\"atMentions\",\"#AtMention\"],[\"urls\",\"#Url\"],[\"conjunctions\",\"#Conjunction\"],[\"prepositions\",\"#Preposition\"],[\"abbreviations\",\"#Abbreviation\"],[\"honorifics\",\"#Honorific\"]],mu=[[\"emojis\",\"emoji\"],[\"atmentions\",\"atMentions\"]],pu=/\\//;var fu={api:function(e){!function(e){class Acronyms extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Acronyms\"}strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.replace(tu,\"\"),e.normal=e.normal.replace(tu,\"\")}))})),this}addPeriods(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.replace(tu,\"\"),e.normal=e.normal.replace(tu,\"\"),e.text=e.text.split(\"\").join(\".\")+\".\",e.normal=e.normal.split(\"\").join(\".\")+\".\"}))})),this}}e.prototype.acronyms=function(e){let t=this.match(\"#Acronym\");return t=t.getNth(e),new Acronyms(t.document,t.pointer)}}(e),au(e),function(e){class Possessives extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Possessives\"}strip(){return this.docs.forEach((e=>{e.forEach((e=>{e.text=e.text.replace(iu,\"\"),e.normal=e.normal.replace(iu,\"\")}))})),this}}e.prototype.possessives=function(e){let t=function(e){let t=e.match(\"#Possessive+\");return t.has(\"#Person\")&&(t=t.growLeft(\"#Person+\")),t.has(\"#Place\")&&(t=t.growLeft(\"#Place+\")),t.has(\"#Organization\")&&(t=t.growLeft(\"#Organization+\")),t}(this);return t=t.getNth(e),new Possessives(t.document,t.pointer)}}(e),hu(e),function(e){gu.forEach((t=>{e.prototype[t[0]]=function(e){const n=this.match(t[1]);return\"number\"==typeof e?n.get(e):n}})),e.prototype.phoneNumbers=du,mu.forEach((t=>{e.prototype[t[0]]=e.prototype[t[1]]}))}(e),function(e){class Slashes extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Slashes\"}split(){return this.map((e=>{const t=e.text().split(pu);return(e=e.replaceWith(t.join(\" \"))).growRight(\"(\"+t.join(\"|\")+\")+\")}))}}e.prototype.slashes=function(e){let t=this.match(\"#SlashedTerm\");return t=t.getNth(e),new Slashes(t.document,t.pointer)}}(e)}};const bu=function(e,t){e.docs.forEach((e=>{e.forEach(t)}))};var vu={case:e=>{bu(e,(e=>{e.text=e.text.toLowerCase()}))},unicode:e=>{const t=e.world,n=t.methods.one.killUnicode;bu(e,(e=>e.text=n(e.text,t)))},whitespace:e=>{bu(e,(e=>{e.post=e.post.replace(/\\s+/g,\" \"),e.post=e.post.replace(/\\s([.,?!:;])/g,\"$1\"),e.pre=e.pre.replace(/\\s+/g,\"\")}))},punctuation:e=>{bu(e,(e=>{e.post=e.post.replace(/[–—-]/g,\" \"),e.post=e.post.replace(/[,:;]/g,\"\"),e.post=e.post.replace(/\\.{2,}/g,\"\"),e.post=e.post.replace(/\\?{2,}/g,\"?\"),e.post=e.post.replace(/!{2,}/g,\"!\"),e.post=e.post.replace(/\\?!+/g,\"?\")}));const t=e.docs,n=t[t.length-1];if(n&&n.length>0){const e=n[n.length-1];e.post=e.post.replace(/ /g,\"\")}},contractions:e=>{e.contractions().expand()},acronyms:e=>{e.acronyms().strip()},parentheses:e=>{e.parentheses().strip()},possessives:e=>{e.possessives().strip()},quotations:e=>{e.quotations().strip()},emoji:e=>{e.emojis().remove()},honorifics:e=>{e.match(\"#Honorific+ #Person\").honorifics().remove()},adverbs:e=>{e.adverbs().remove()},nouns:e=>{e.nouns().toSingular()},verbs:e=>{e.verbs().toInfinitive()},numbers:e=>{e.numbers().toNumber()},debullet:e=>{const t=/^\\s*([-–—*•])\\s*$/;return e.docs.forEach((e=>{t.test(e[0].pre)&&(e[0].pre=e[0].pre.replace(t,\"\"))})),e}};const yu=e=>e.split(\"|\").reduce(((e,t)=>(e[t]=!0,e)),{}),wu=\"unicode|punctuation|whitespace|acronyms\",ku=\"|case|contractions|parentheses|quotations|emoji|honorifics|debullet\",Pu={light:yu(wu),medium:yu(wu+ku),heavy:yu(wu+ku+\"|possessives|adverbs|nouns|verbs\")};var Au={api:function(e){e.prototype.normalize=function(e=\"light\"){return\"string\"==typeof e&&(e=Pu[e]),Object.keys(e).forEach((t=>{vu.hasOwnProperty(t)&&vu[t](this,e[t])})),this}}};const Cu=[\"after\",\"although\",\"as if\",\"as long as\",\"as\",\"because\",\"before\",\"even if\",\"even though\",\"ever since\",\"if\",\"in order that\",\"provided that\",\"since\",\"so that\",\"than\",\"that\",\"though\",\"unless\",\"until\",\"what\",\"whatever\",\"when\",\"whenever\",\"where\",\"whereas\",\"wherever\",\"whether\",\"which\",\"whichever\",\"who\",\"whoever\",\"whom\",\"whomever\",\"whose\"],Nu=function(e){if(e.before(\"#Preposition$\").found)return!0;if(!e.before().found)return!1;for(let t=0;t<Cu.length;t+=1)if(e.has(Cu[t]))return!0;return!1},ju=function(e,t){if(e.has(\"#Plural\"))return!0;if(e.has(\"#Noun and #Noun\"))return!0;if(e.has(\"(we|they)\"))return!0;if(!0===t.has(\"(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)\"))return!1;if(e.has(\"#Singular\"))return!1;const n=t.text(\"normal\");return n.length>3&&n.endsWith(\"s\")&&!n.endsWith(\"ss\")},xu=function(e){const t=function(e){let t=e.clone();return t=t.match(\"#Noun+\"),t=t.remove(\"(#Adjective|#Preposition|#Determiner|#Value)\"),t=t.not(\"#Possessive\"),t=t.first(),t.found?t:e}(e);return{determiner:e.match(\"#Determiner\").eq(0),adjectives:e.match(\"#Adjective\"),number:e.values(),isPlural:ju(e,t),isSubordinate:Nu(e),root:t}},Iu=e=>e.text(),Tu=e=>e.json({terms:!1,normal:!0}).map((e=>e.normal)),Du=function(e){if(!e.found)return null;const t=e.values(0);if(t.found){return(t.parse()[0]||{}).num}return null},Hu=function(e){return!e.has(\"^(#Uncountable|#ProperNoun|#Place|#Pronoun|#Acronym)+$\")},Eu={tags:!0},Gu={tags:!0};var Ou={api:function(e){class Nouns extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Nouns\"}parse(e){return this.getNth(e).map(xu)}json(e){const t=\"object\"==typeof e?e:{};return this.getNth(e).map((e=>{const n=e.toView().json(t)[0]||{};return t&&!1!==t.noun&&(n.noun=function(e){const t=xu(e);return{root:Iu(t.root),number:Du(t.number),determiner:Iu(t.determiner),adjectives:Tu(t.adjectives),isPlural:t.isPlural,isSubordinate:t.isSubordinate}}(e)),n}),[])}conjugate(e){const t=this.world.methods.two.transform.noun;return this.getNth(e).map((e=>{const n=xu(e),r=n.root.compute(\"root\").text(\"root\"),o={Singular:r};return Hu(n.root)&&(o.Plural=t.toPlural(r,this.model)),o.Singular===o.Plural&&delete o.Plural,o}),[])}isPlural(e){const t=this.filter((e=>xu(e).isPlural));return t.getNth(e)}isSingular(e){const t=this.filter((e=>!xu(e).isPlural));return t.getNth(e)}adjectives(e){let t=this.update([]);return this.forEach((e=>{const n=xu(e).adjectives;n.found&&(t=t.concat(n))})),t.getNth(e)}toPlural(e){return this.getNth(e).map((e=>function(e,t){if(!0===t.isPlural)return e;if(t.root.has(\"#Possessive\")&&(t.root=t.root.possessives().strip()),!Hu(t.root))return e;const{methods:n,model:r}=e.world,{toPlural:o}=n.two.transform.noun,a=o(t.root.text({keepPunct:!1}),r);e.match(t.root).replaceWith(a,Eu).tag(\"Plural\",\"toPlural\"),t.determiner.has(\"(a|an)\")&&e.remove(t.determiner);const i=t.root.after(\"not? #Adverb+? [#Copula]\",0);return i.found&&(i.has(\"is\")?e.replace(i,\"are\"):i.has(\"was\")&&e.replace(i,\"were\")),e}(e,xu(e))))}toSingular(e){return this.getNth(e).map((e=>function(e,t){if(!1===t.isPlural)return e;const{methods:n,model:r}=e.world,{toSingular:o}=n.two.transform.noun,a=o(t.root.text(\"normal\"),r);return e.replace(t.root,a,Gu).tag(\"Singular\",\"toPlural\"),e}(e,xu(e))))}update(e){const t=new Nouns(this.document,e);return t._cache=this._cache,t}}e.prototype.nouns=function(e){let t=function(e){let t=e.clauses().match(\"<Noun>\"),n=t.match(\"@hasComma\");return n=n.not(\"#Place\"),n.found&&(t=t.splitAfter(n)),t=t.splitOn(\"#Expression\"),t=t.splitOn(\"(he|she|we|you|they|i)\"),t=t.splitOn(\"(#Noun|#Adjective) [(he|him|she|it)]\",0),t=t.splitOn(\"[(he|him|she|it)] (#Determiner|#Value)\",0),t=t.splitBefore(\"#Noun [(the|a|an)] #Adjective? #Noun\",0),t=t.splitOn(\"[(here|there)] #Noun\",0),t=t.splitOn(\"[#Noun] (here|there)\",0),t=t.splitBefore(\"(our|my|their|your)\"),t=t.splitOn(\"#Noun [#Determiner]\",0),t=t.if(\"#Noun\"),t}(this);return t=t.getNth(e),new Nouns(this.document,t.pointer)}}};var Fu={ones:{zeroth:0,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,zero:0,one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9},teens:{tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,ten:10,eleven:11,twelve:12,thirteen:13,fourteen:14,fifteen:15,sixteen:16,seventeen:17,eighteen:18,nineteen:19},tens:{twentieth:20,thirtieth:30,fortieth:40,fourtieth:40,fiftieth:50,sixtieth:60,seventieth:70,eightieth:80,ninetieth:90,twenty:20,thirty:30,forty:40,fourty:40,fifty:50,sixty:60,seventy:70,eighty:80,ninety:90},multiples:{hundredth:100,thousandth:1e3,millionth:1e6,billionth:1e9,trillionth:1e12,quadrillionth:1e15,quintillionth:1e18,sextillionth:1e21,septillionth:1e24,hundred:100,thousand:1e3,million:1e6,billion:1e9,trillion:1e12,quadrillion:1e15,quintillion:1e18,sextillion:1e21,septillion:1e24,grand:1e3}};const Vu=(e,t)=>{if(Fu.ones.hasOwnProperty(e)){if(t.ones||t.teens)return!1}else if(Fu.teens.hasOwnProperty(e)){if(t.ones||t.teens||t.tens)return!1}else if(Fu.tens.hasOwnProperty(e)&&(t.ones||t.teens||t.tens))return!1;return!0},zu=function(e){let t=\"0.\";for(let n=0;n<e.length;n++){const r=e[n];if(!0===Fu.ones.hasOwnProperty(r))t+=Fu.ones[r];else if(!0===Fu.teens.hasOwnProperty(r))t+=Fu.teens[r];else if(!0===Fu.tens.hasOwnProperty(r))t+=Fu.tens[r];else{if(!0!==/^[0-9]$/.test(r))return 0;t+=r}}return parseFloat(t)},Bu=e=>e=(e=(e=(e=(e=(e=(e=(e=e.replace(/1st$/,\"1\")).replace(/2nd$/,\"2\")).replace(/3rd$/,\"3\")).replace(/([4567890])r?th$/,\"$1\")).replace(/^[$€¥£¢]/,\"\")).replace(/[%$€¥£¢]$/,\"\")).replace(/,/g,\"\")).replace(/([0-9])([a-z\\u00C0-\\u00FF]{1,2})$/,\"$1\"),Su=/^([0-9,. ]+)\\/([0-9,. ]+)$/,$u={\"a few\":3,\"a couple\":2,\"a dozen\":12,\"two dozen\":24,zero:0},Mu=e=>Object.keys(e).reduce(((t,n)=>t+=e[n]),0),Lu=function(e){if(!0===$u.hasOwnProperty(e))return $u[e];if(\"a\"===e||\"an\"===e)return 1;const t=(e=>{const t=[{reg:/^(minus|negative)[\\s-]/i,mult:-1},{reg:/^(a\\s)?half[\\s-](of\\s)?/i,mult:.5}];for(let n=0;n<t.length;n++)if(!0===t[n].reg.test(e))return{amount:t[n].mult,str:e.replace(t[n].reg,\"\")};return{amount:1,str:e}})(e);let n=null,r={},o=0,a=!1;const i=(e=t.str).split(/[ -]/);for(let e=0;e<i.length;e++){let s=i[e];if(s=Bu(s),!s||\"and\"===s)continue;if(\"-\"===s||\"negative\"===s){a=!0;continue}if(\"-\"===s.charAt(0)&&(a=!0,s=s.substring(1)),\"point\"===s)return o+=Mu(r),o+=zu(i.slice(e+1,i.length)),o*=t.amount,o;const l=s.match(Su);if(l){const e=parseFloat(l[1].replace(/[, ]/g,\"\")),t=parseFloat(l[2].replace(/[, ]/g,\"\"));t&&(o+=e/t||0)}else{if(Fu.tens.hasOwnProperty(s)&&r.ones&&1===Object.keys(r).length&&(o=100*r.ones,r={}),!1===Vu(s,r))return null;if(/^[0-9.]+$/.test(s))r.ones=parseFloat(s);else if(!0===Fu.ones.hasOwnProperty(s))r.ones=Fu.ones[s];else if(!0===Fu.teens.hasOwnProperty(s))r.teens=Fu.teens[s];else if(!0===Fu.tens.hasOwnProperty(s))r.tens=Fu.tens[s];else if(!0===Fu.multiples.hasOwnProperty(s)){let t=Fu.multiples[s];if(t===n)return null;if(100===t&&void 0!==i[e+1]){const n=i[e+1];Fu.multiples[n]&&(t*=Fu.multiples[n],e+=1)}null===n||t<n?(o+=(Mu(r)||1)*t,n=t,r={}):(o+=Mu(r),n=t,o=(o||1)*t,r={})}}}return o+=Mu(r),o*=t.amount,o*=a?-1:1,0===o&&0===Object.keys(r).length?null:o},Ku=/s$/,Ju=function(e){const t=e.text(\"reduced\");return Lu(t)},Wu={half:2,halve:2,quarter:4},qu=function(e){const t=function(e){const t=e.text(\"reduced\");return Wu.hasOwnProperty(t)?{numerator:1,denominator:Wu[t]}:null}(e=e.clone())||function(e){const t=e.text(\"reduced\").match(/^([-+]?[0-9]+)\\/([-+]?[0-9]+)(st|nd|rd|th)?s?$/);return t&&t[1]&&t[0]?{numerator:Number(t[1]),denominator:Number(t[2])}:null}(e)||function(e){const t=e.match(\"[<num>#Value+] out of every? [<den>#Value+]\");if(!0!==t.found)return null;let{num:n,den:r}=t.groups();return n&&r?(n=Ju(n),r=Ju(r),n&&r&&\"number\"==typeof n&&\"number\"==typeof r?{numerator:n,denominator:r}:null):null}(e)||function(e){const t=e.match(\"[<num>(#Cardinal|a)+] [<den>#Fraction+]\");if(!0!==t.found)return null;let{num:n,den:r}=t.groups();n=n.has(\"a\")?1:Ju(n);let o=r.text(\"reduced\");return Ku.test(o)&&(o=o.replace(Ku,\"\"),r=r.replaceWith(o)),r=Wu.hasOwnProperty(o)?Wu[o]:Ju(r),\"number\"==typeof n&&\"number\"==typeof r?{numerator:n,denominator:r}:null}(e)||function(e){const t=e.match(\"^#Ordinal$\");if(!0!==t.found)return null;if(e.lookAhead(\"^of .\"))return{numerator:1,denominator:Ju(t)};return null}(e)||null;return null!==t&&t.numerator&&t.denominator&&(t.decimal=t.numerator/t.denominator,t.decimal=(e=>{const t=Math.round(1e3*e)/1e3;return 0===t&&0!==e?e:t})(t.decimal)),t},Uu=function(e){if(e<1e6)return String(e);let t;return t=\"number\"==typeof e?e.toFixed(0):e,-1===t.indexOf(\"e+\")?t:t.replace(\".\",\"\").split(\"e+\").reduce((function(e,t){return e+Array(t-e.length+2).join(0)}))},Ru=[[\"ninety\",90],[\"eighty\",80],[\"seventy\",70],[\"sixty\",60],[\"fifty\",50],[\"forty\",40],[\"thirty\",30],[\"twenty\",20]],Qu=[\"\",\"one\",\"two\",\"three\",\"four\",\"five\",\"six\",\"seven\",\"eight\",\"nine\",\"ten\",\"eleven\",\"twelve\",\"thirteen\",\"fourteen\",\"fifteen\",\"sixteen\",\"seventeen\",\"eighteen\",\"nineteen\"],Zu=[[1e24,\"septillion\"],[1e20,\"hundred sextillion\"],[1e21,\"sextillion\"],[1e20,\"hundred quintillion\"],[1e18,\"quintillion\"],[1e17,\"hundred quadrillion\"],[1e15,\"quadrillion\"],[1e14,\"hundred trillion\"],[1e12,\"trillion\"],[1e11,\"hundred billion\"],[1e9,\"billion\"],[1e8,\"hundred million\"],[1e6,\"million\"],[1e5,\"hundred thousand\"],[1e3,\"thousand\"],[100,\"hundred\"],[1,\"one\"]],_u=function(e){const t=[];if(e>100)return t;for(let n=0;n<Ru.length;n++)e>=Ru[n][1]&&(e-=Ru[n][1],t.push(Ru[n][0]));return Qu[e]&&t.push(Qu[e]),t},Xu=function(e){let t=e.num;if(0===t||\"0\"===t)return\"zero\";t>1e21&&(t=Uu(t));let n=[];t<0&&(n.push(\"minus\"),t=Math.abs(t));const r=function(e){let t=e;const n=[];return Zu.forEach((r=>{if(e>=r[0]){const e=Math.floor(t/r[0]);t-=e*r[0],e&&n.push({unit:r[1],count:e})}})),n}(t);for(let e=0;e<r.length;e++){let t=r[e].unit;\"one\"===t&&(t=\"\",n.length>1&&n.push(\"and\")),n=n.concat(_u(r[e].count)),n.push(t)}return n=n.concat((e=>{const t=[\"zero\",\"one\",\"two\",\"three\",\"four\",\"five\",\"six\",\"seven\",\"eight\",\"nine\"],n=[],r=Uu(e).match(/\\.([0-9]+)/);if(!r||!r[0])return n;n.push(\"point\");const o=r[0].split(\"\");for(let e=0;e<o.length;e++)n.push(t[o[e]]);return n})(t)),n=n.filter((e=>e)),0===n.length&&(n[0]=\"\"),n.join(\" \")},Yu={one:\"first\",two:\"second\",three:\"third\",five:\"fifth\",eight:\"eighth\",nine:\"ninth\",twelve:\"twelfth\",twenty:\"twentieth\",thirty:\"thirtieth\",forty:\"fortieth\",fourty:\"fourtieth\",fifty:\"fiftieth\",sixty:\"sixtieth\",seventy:\"seventieth\",eighty:\"eightieth\",ninety:\"ninetieth\"},ec=e=>{const t=Xu(e).split(\" \"),n=t[t.length-1];return Yu.hasOwnProperty(n)?t[t.length-1]=Yu[n]:t[t.length-1]=n.replace(/y$/,\"i\")+\"th\",t.join(\" \")},tc=function(e){class Fractions extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Fractions\"}parse(e){return this.getNth(e).map(qu)}get(e){return this.getNth(e).map(qu)}json(e){return this.getNth(e).map((t=>{const n=t.toView().json(e)[0],r=qu(t);return n.fraction=r,n}),[])}toDecimal(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu(e);(e=e.replaceWith(String(t),!0)).tag(\"NumericValue\"),e.unTag(\"Fraction\")})),this}toFraction(e){return this.getNth(e).forEach((e=>{const t=qu(e);if(t&&\"number\"==typeof t.numerator&&\"number\"==typeof t.denominator){const n=`${t.numerator}/${t.denominator}`;this.replace(e,n)}})),this}toOrdinal(e){return this.getNth(e).forEach((e=>{let t=function(e){if(!e.numerator||!e.denominator)return\"\";const t=Xu({num:e.numerator});let n=ec({num:e.denominator});return 2===e.denominator&&(n=\"half\"),t&&n?(1!==e.numerator&&(n+=\"s\"),`${t} ${n}`):\"\"}(qu(e));e.after(\"^#Noun\").found&&(t+=\" of\"),e.replaceWith(t)})),this}toCardinal(e){return this.getNth(e).forEach((e=>{const t=function(e){return e.numerator&&e.denominator?`${Xu({num:e.numerator})} out of ${Xu({num:e.denominator})}`:\"\"}(qu(e));e.replaceWith(t)})),this}toPercentage(e){return this.getNth(e).forEach((e=>{const{decimal:t}=qu(e);let n=100*t;n=Math.round(100*n)/100,e.replaceWith(`${n}%`)})),this}}e.prototype.fractions=function(e){let t=function(e,t){let n=e.match(\"#Fraction+\");return n=n.filter((e=>!e.lookBehind(\"#Value and$\").found)),n=n.notIf(\"#Value seconds\"),n}(this);return t=t.getNth(e),new Fractions(this.document,t.pointer)}},nc=\"twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|fourty\",rc=function(e){let t=e.match(\"#Value+\");if(t.has(\"#NumericValue #NumericValue\")&&(t.has(\"#Value @hasComma #Value\")?t.splitAfter(\"@hasComma\"):t.has(\"#NumericValue #Fraction\")?t.splitAfter(\"#NumericValue #Fraction\"):t=t.splitAfter(\"#NumericValue\")),t.has(\"#Value #Value #Value\")&&!t.has(\"#Multiple\")&&t.has(\"(\"+nc+\") #Cardinal #Cardinal\")&&(t=t.splitAfter(\"(\"+nc+\") #Cardinal\")),t.has(\"#Value #Value\")){t.has(\"#NumericValue #NumericValue\")&&(t=t.splitOn(\"#Year\")),t.has(\"(\"+nc+\") (eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen)\")&&(t=t.splitAfter(\"(\"+nc+\")\"));const e=t.match(\"#Cardinal #Cardinal\");if(e.found&&!t.has(\"(point|decimal|#Fraction)\")&&!e.has(\"#Cardinal (#Multiple|point|decimal)\")){const n=t.has(`(one|two|three|four|five|six|seven|eight|nine) (${nc})`),r=e.has(\"(\"+nc+\") #Cardinal\"),o=e.has(\"#Multiple #Value\");n||r||o||e.terms().forEach((e=>{t=t.splitOn(e)}))}t.match(\"#Ordinal #Ordinal\").match(\"#TextValue\").found&&!t.has(\"#Multiple\")&&(t.has(\"(\"+nc+\") #Ordinal\")||(t=t.splitAfter(\"#Ordinal\"))),t=t.splitBefore(\"#Ordinal [#Cardinal]\",0),t.has(\"#TextValue #NumericValue\")&&!t.has(\"(\"+nc+\"|#Multiple)\")&&(t=t.splitBefore(\"#TextValue #NumericValue\"))}return t=t.splitAfter(\"#NumberRange\"),t=t.splitBefore(\"#Year\"),t},oc=function(e){if(\"string\"==typeof e)return{num:Lu(e)};let t=e.text(\"reduced\");const n=e.growRight(\"#Unit\").match(\"#Unit$\").text(\"machine\"),r=/[0-9],[0-9]/.test(e.text(\"text\"));if(1===e.terms().length&&!e.has(\"#Multiple\")){const o=function(e,t){const n=(e=e.replace(/,/g,\"\")).split(/([0-9.,]*)/);let[r,o]=n,a=n.slice(2).join(\"\");return\"\"!==o&&t.length<2?(o=Number(o||e),\"number\"!=typeof o&&(o=null),a=a||\"\",\"st\"!==a&&\"nd\"!==a&&\"rd\"!==a&&\"th\"!==a||(a=\"\"),{prefix:r||\"\",num:o,suffix:a}):null}(t,e);if(null!==o)return o.hasComma=r,o.unit=n,o}let o=e.match(\"#Fraction{2,}$\");o=!1===o.found?e.match(\"^#Fraction$\"):o;let a=null;o.found&&(o.has(\"#Value and #Value #Fraction\")&&(o=o.match(\"and #Value #Fraction\")),a=qu(o),t=(e=(e=e.not(o)).not(\"and$\")).text(\"reduced\"));let i=0;return t&&(i=Lu(t)||0),a&&a.decimal&&(i+=a.decimal),{hasComma:r,prefix:\"\",num:i,suffix:\"\",isOrdinal:e.has(\"#Ordinal\"),isText:e.has(\"#TextValue\"),isFraction:e.has(\"#Fraction\"),isMoney:e.has(\"#Money\"),unit:n}},ac={\"¢\":\"cents\",$:\"dollars\",\"£\":\"pounds\",\"¥\":\"yen\",\"€\":\"euros\",\"₡\":\"colón\",\"฿\":\"baht\",\"₭\":\"kip\",\"₩\":\"won\",\"₹\":\"rupees\",\"₽\":\"ruble\",\"₺\":\"liras\"},ic={\"%\":\"percent\",\"°\":\"degrees\"},sc=function(e){const t={suffix:\"\",prefix:e.prefix};return ac.hasOwnProperty(e.prefix)&&(t.suffix+=\" \"+ac[e.prefix],t.prefix=\"\"),ic.hasOwnProperty(e.suffix)&&(t.suffix+=\" \"+ic[e.suffix]),t.suffix&&1===e.num&&(t.suffix=t.suffix.replace(/s$/,\"\")),!t.suffix&&e.suffix&&(t.suffix+=\" \"+e.suffix),t},lc=function(e,t){if(\"TextOrdinal\"===t){const{prefix:t,suffix:n}=sc(e);return t+ec(e)+n}if(\"Ordinal\"===t)return e.prefix+function(e){const t=e.num;if(!t&&0!==t)return null;const n=t%100;if(n>10&&n<20)return String(t)+\"th\";const r={0:\"th\",1:\"st\",2:\"nd\",3:\"rd\"};let o=Uu(t);const a=o.slice(o.length-1,o.length);return o+=r[a]?r[a]:\"th\",o}(e)+e.suffix;if(\"TextCardinal\"===t){const{prefix:t,suffix:n}=sc(e);return t+Xu(e)+n}let n=e.num;return e.hasComma&&(n=n.toLocaleString()),e.prefix+String(n)+e.suffix},uc=function(e){if(\"string\"==typeof e||\"number\"==typeof e){const t={};return t[e]=!0,t}return t=e,\"[object Array]\"===Object.prototype.toString.call(t)?e.reduce(((e,t)=>(e[t]=!0,e)),{}):e||{};var t},cc=function(e){class Numbers extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Numbers\"}parse(e){return this.getNth(e).map(oc)}get(e){return this.getNth(e).map(oc).map((e=>e.num))}json(e){const t=\"object\"==typeof e?e:{};return this.getNth(e).map((e=>{const n=e.toView().json(t)[0],r=oc(e);return n.number={prefix:r.prefix,num:r.num,suffix:r.suffix,hasComma:r.hasComma,unit:r.unit},n}),[])}units(){return this.growRight(\"#Unit\").match(\"#Unit$\")}isUnit(e){return function(e,t={}){return t=uc(t),e.filter((e=>{const{unit:n}=oc(e);return!(!n||!0!==t[n])}))}(this,e)}isOrdinal(){return this.if(\"#Ordinal\")}isCardinal(){return this.if(\"#Cardinal\")}toNumber(){const e=this.map((e=>{if(!this.has(\"#TextValue\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#Ordinal\")?\"Ordinal\":\"Cardinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"NumericValue\")}));return new Numbers(e.document,e.pointer)}toLocaleString(){return this.forEach((e=>{const t=oc(e);if(null===t.num)return;let n=t.num.toLocaleString();if(e.has(\"#Ordinal\")){const e=lc(t,\"Ordinal\").match(/[a-z]+$/);e&&(n+=e[0]||\"\")}e.replaceWith(n,{tags:!0})})),this}toText(){const e=this.map((e=>{if(e.has(\"#TextValue\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#Ordinal\")?\"TextOrdinal\":\"TextCardinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"TextValue\"),e}));return new Numbers(e.document,e.pointer)}toCardinal(){const e=this.map((e=>{if(!e.has(\"#Ordinal\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#TextValue\")?\"TextCardinal\":\"Cardinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"Cardinal\"),e}));return new Numbers(e.document,e.pointer)}toOrdinal(){const e=this.map((e=>{if(e.has(\"#Ordinal\"))return e;const t=oc(e);if(null===t.num)return e;const n=e.has(\"#TextValue\")?\"TextOrdinal\":\"Ordinal\",r=lc(t,n);return e.replaceWith(r,{tags:!0}),e.tag(\"Ordinal\"),e}));return new Numbers(e.document,e.pointer)}isEqual(e){return this.filter((t=>oc(t).num===e))}greaterThan(e){return this.filter((t=>oc(t).num>e))}lessThan(e){return this.filter((t=>oc(t).num<e))}between(e,t){return this.filter((n=>{const r=oc(n).num;return r>e&&r<t}))}set(e){if(void 0===e)return this;\"string\"==typeof e&&(e=oc(e).num);const t=this.map((t=>{const n=oc(t);if(n.num=e,null===n.num)return t;let r=t.has(\"#Ordinal\")?\"Ordinal\":\"Cardinal\";t.has(\"#TextValue\")&&(r=t.has(\"#Ordinal\")?\"TextOrdinal\":\"TextCardinal\");let o=lc(n,r);return n.hasComma&&\"Cardinal\"===r&&(o=Number(o).toLocaleString()),(t=t.not(\"#Currency\")).replaceWith(o,{tags:!0}),t}));return new Numbers(t.document,t.pointer)}add(e){if(!e)return this;\"string\"==typeof e&&(e=oc(e).num);const t=this.map((t=>{const n=oc(t);if(null===n.num)return t;n.num+=e;let r=t.has(\"#Ordinal\")?\"Ordinal\":\"Cardinal\";n.isText&&(r=t.has(\"#Ordinal\")?\"TextOrdinal\":\"TextCardinal\");const o=lc(n,r);return t.replaceWith(o,{tags:!0}),t}));return new Numbers(t.document,t.pointer)}subtract(e,t){return this.add(-1*e,t)}increment(e){return this.add(1,e)}decrement(e){return this.add(-1,e)}update(e){const t=new Numbers(this.document,e);return t._cache=this._cache,t}}Numbers.prototype.toNice=Numbers.prototype.toLocaleString,Numbers.prototype.isBetween=Numbers.prototype.between,Numbers.prototype.minus=Numbers.prototype.subtract,Numbers.prototype.plus=Numbers.prototype.add,Numbers.prototype.equals=Numbers.prototype.isEqual,e.prototype.numbers=function(e){let t=rc(this);return t=t.getNth(e),new Numbers(this.document,t.pointer)},e.prototype.percentages=function(e){let t=rc(this);return t=t.filter((e=>e.has(\"#Percent\")||e.after(\"^percent\"))),t=t.getNth(e),new Numbers(this.document,t.pointer)},e.prototype.money=function(e){let t=rc(this);return t=t.filter((e=>e.has(\"#Money\")||e.after(\"^#Currency\"))),t=t.getNth(e),new Numbers(this.document,t.pointer)},e.prototype.values=e.prototype.numbers};var hc={api:function(e){tc(e),cc(e)}};const dc={people:!0,emails:!0,phoneNumbers:!0,places:!0},gc=function(e={}){return!1!==(e=Object.assign({},dc,e)).people&&this.people().replaceWith(\"██████████\"),!1!==e.emails&&this.emails().replaceWith(\"██████████\"),!1!==e.places&&this.places().replaceWith(\"██████████\"),!1!==e.phoneNumbers&&this.phoneNumbers().replaceWith(\"███████\"),this},mc={api:function(e){e.prototype.redact=gc}},pc=function(e){let t=null;return e.has(\"#PastTense\")?t=\"PastTense\":e.has(\"#FutureTense\")?t=\"FutureTense\":e.has(\"#PresentTense\")&&(t=\"PresentTense\"),{tense:t}},fc=function(e){const t=function(e){let t=e;return 1===t.length?t:(t=t.if(\"#Verb\"),1===t.length?t:(t=t.ifNo(\"(after|although|as|because|before|if|since|than|that|though|when|whenever|where|whereas|wherever|whether|while|why|unless|until|once)\"),t=t.ifNo(\"^even (if|though)\"),t=t.ifNo(\"^so that\"),t=t.ifNo(\"^rather than\"),t=t.ifNo(\"^provided that\"),1===t.length?t:(t=t.ifNo(\"(that|which|whichever|who|whoever|whom|whose|whomever)\"),1===t.length?t:(t=t.ifNo(\"(^despite|^during|^before|^through|^throughout)\"),1===t.length?t:(t=t.ifNo(\"^#Gerund\"),1===t.length?t:(0===t.length&&(t=e),t.eq(0)))))))}(e.clauses()),n=t.chunks();let r=e.none(),o=e.none(),a=e.none();return n.forEach(((e,t)=>{0!==t||e.has(\"<Verb>\")?o.found||!e.has(\"<Verb>\")?o.found&&(a=a.concat(e)):o=e:r=e})),o.found&&!r.found&&(r=o.before(\"<Noun>+\").first()),{subj:r,verb:o,pred:a,grammar:pc(o)}};var bc={api:function(e){class Sentences extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Sentences\"}json(e={}){return this.map((t=>{const n=t.toView().json(e)[0]||{},{subj:r,verb:o,pred:a,grammar:i}=fc(t);return n.sentence={subject:r.text(\"normal\"),verb:o.text(\"normal\"),predicate:a.text(\"normal\"),grammar:i},n}),[])}toPastTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let t=e.verbs();const n=t.eq(0);if(n.has(\"#PastTense\"))return e;if(n.toPastTense(),t.length>1){t=t.slice(1),t=t.filter((e=>!e.lookBehind(\"to$\").found)),t=t.if(\"#PresentTense\"),t=t.notIf(\"#Gerund\");const n=e.match(\"to #Verb+ #Conjunction #Verb\").terms();t=t.not(n),t.found&&t.verbs().toPastTense()}return e}(e))))}toPresentTense(e){return this.getNth(e).map((e=>(fc(e),function(e){let t=e.verbs();return t.eq(0).toPresentTense(),t.length>1&&(t=t.slice(1),t=t.filter((e=>!e.lookBehind(\"to$\").found)),t=t.notIf(\"#Gerund\"),t.found&&t.verbs().toPresentTense()),e}(e))))}toFutureTense(e){return this.getNth(e).map((e=>(fc(e),e=function(e){let t=e.verbs();if(t.eq(0).toFutureTense(),t=(e=e.fullSentence()).verbs(),t.length>1){t=t.slice(1);const e=t.filter((e=>!(e.lookBehind(\"to$\").found||!e.has(\"#Copula #Gerund\")&&(e.has(\"#Gerund\")||!e.has(\"#Copula\")&&e.has(\"#PresentTense\")&&!e.has(\"#Infinitive\")&&e.lookBefore(\"(he|she|it|that|which)$\").found))));e.found&&e.forEach((e=>{if(e.has(\"#Copula\"))return e.match(\"was\").replaceWith(\"is\"),void e.match(\"is\").replaceWith(\"will be\");e.toInfinitive()}))}return e}(e),e)))}toInfinitive(e){return this.getNth(e).map((e=>(fc(e),function(e){return e.verbs().toInfinitive(),e}(e))))}toNegative(e){return this.getNth(e).map((e=>(fc(e),function(e){return e.verbs().first().toNegative().compute(\"chunks\"),e}(e))))}toPositive(e){return this.getNth(e).map((e=>(fc(e),function(e){return e.verbs().first().toPositive().compute(\"chunks\"),e}(e))))}isQuestion(e){return this.questions(e)}isExclamation(e){const t=this.filter((e=>e.lastTerm().has(\"@hasExclamation\")));return t.getNth(e)}isStatement(e){const t=this.filter((e=>!e.isExclamation().found&&!e.isQuestion().found));return t.getNth(e)}update(e){const t=new Sentences(this.document,e);return t._cache=this._cache,t}}Sentences.prototype.toPresent=Sentences.prototype.toPresentTense,Sentences.prototype.toPast=Sentences.prototype.toPastTense,Sentences.prototype.toFuture=Sentences.prototype.toFutureTense;const t={sentences:function(e){let t=this.map((e=>e.fullSentence()));return t=t.getNth(e),new Sentences(this.document,t.pointer)},questions:function(e){const t=function(e){const t=/\\?/,{document:n}=e;return e.filter((e=>{const r=e.docs[0]||[],o=r[r.length-1];return!(!o||n[o.index[0]].length!==r.length)&&(!!t.test(o.post)||function(e){const t=e.clauses();return!(/\\.\\.$/.test(e.out(\"text\"))||e.has(\"^#QuestionWord\")&&e.has(\"@hasComma\")||!e.has(\"or not$\")&&!e.has(\"^#QuestionWord\")&&!e.has(\"^(do|does|did|is|was|can|could|will|would|may) #Noun\")&&!e.has(\"^(have|must) you\")&&!t.has(\"(do|does|is|was) #Noun+ #Adverb? (#Adjective|#Infinitive)$\"))}(e))}))}(this);return t.getNth(e)}};Object.assign(e.prototype,t)}};const vc=function(e){const t={};t.firstName=e.match(\"#FirstName+\"),t.lastName=e.match(\"#LastName+\"),t.honorific=e.match(\"#Honorific+\");const n=t.lastName,r=t.firstName;return r.found&&n.found||r.found||n.found||!e.has(\"^#Honorific .$\")||(t.lastName=e.match(\".$\")),t},yc=\"male\",wc=\"female\",kc={mr:yc,mrs:wc,miss:wc,madam:wc,king:yc,queen:wc,duke:yc,duchess:wc,baron:yc,baroness:wc,count:yc,countess:wc,prince:yc,princess:wc,sire:yc,dame:wc,lady:wc,ayatullah:yc,congressman:yc,congresswoman:wc,\"first lady\":wc,mx:null},Pc=function(e,t){const{firstName:n,honorific:r}=e;if(n.has(\"#FemaleName\"))return wc;if(n.has(\"#MaleName\"))return yc;if(r.found){let e=r.text(\"normal\");if(e=e.replace(/\\./g,\"\"),kc.hasOwnProperty(e))return kc[e];if(/^her /.test(e))return wc;if(/^his /.test(e))return yc}const o=t.after();if(!o.has(\"#Person\")&&o.has(\"#Pronoun\")){const e=o.match(\"#Pronoun\");if(e.has(\"(they|their)\"))return null;const t=e.has(\"(he|his)\"),n=e.has(\"(she|her|hers)\");if(t&&!n)return yc;if(n&&!t)return wc}return null},Ac=function(e){const t=this.clauses();let n=t.people();return n=n.concat(t.places()),n=n.concat(t.organizations()),n=n.not(\"(someone|man|woman|mother|brother|sister|father)\"),n=n.sort(\"seq\"),n=n.getNth(e),n};var Cc={api:function(e){!function(e){class People extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"People\"}parse(e){return this.getNth(e).map(vc)}json(e){const t=\"object\"==typeof e?e:{};return this.getNth(e).map((e=>{const n=e.toView().json(t)[0],r=vc(e);return n.person={firstName:r.firstName.text(\"normal\"),lastName:r.lastName.text(\"normal\"),honorific:r.honorific.text(\"normal\"),presumed_gender:Pc(r,e)},n}),[])}presumedMale(){return this.filter((e=>e.has(\"(#MaleName|mr|mister|sr|jr|king|pope|prince|sir)\")))}presumedFemale(){return this.filter((e=>e.has(\"(#FemaleName|mrs|miss|queen|princess|madam)\")))}update(e){const t=new People(this.document,e);return t._cache=this._cache,t}}e.prototype.people=function(e){let t=function(e){let t=e.splitAfter(\"@hasComma\");t=t.match(\"#Honorific+? #Person+\");const n=t.match(\"#Possessive\").notIf(\"(his|her)\");return t=t.splitAfter(n),t}(this);return t=t.getNth(e),new People(this.document,t.pointer)}}(e),function(e){e.prototype.places=function(t){let n=function(e){let t=e.match(\"(#Place|#Address)+\"),n=t.match(\"@hasComma\");return n=n.filter((e=>!!e.has(\"(asia|africa|europe|america)$\")||!e.has(\"(#City|#Region|#ProperNoun)$\")||!e.after(\"^(#Country|#Region)\").found)),t=t.splitAfter(n),t}(this);return n=n.getNth(t),new e(this.document,n.pointer)}}(e),function(e){e.prototype.organizations=function(e){return this.match(\"#Organization+\").getNth(e)}}(e),function(e){e.prototype.topics=Ac}(e)}};const Nc=function(e,t){const n={pre:e.none(),post:e.none()};if(!e.has(\"#Adverb\"))return n;const r=e.splitOn(t);return 3===r.length?{pre:r.eq(0).adverbs(),post:r.eq(2).adverbs()}:r.eq(0).isDoc(t)?(n.post=r.eq(1).adverbs(),n):(n.pre=r.eq(0).adverbs(),n)},jc=function(e,t){const n=e.splitBefore(t);if(n.length<=1)return e.none();let r=n.eq(0);return r=r.not(\"(#Adverb|#Negative|#Prefix)\"),r},xc=function(e){return e.match(\"#Negative\")},Ic=function(e){if(!e.has(\"(#Particle|#PhrasalVerb)\"))return{verb:e.none(),particle:e.none()};const t=e.match(\"#Particle$\");return{verb:e.not(t),particle:t}},Tc=function(e){const t=e.clone();t.contractions().expand();const n=function(e){let t=e;return e.wordCount()>1&&(t=e.not(\"(#Negative|#Auxiliary|#Modal|#Adverb|#Prefix)\")),t.length>1&&!t.has(\"#Phrasal #Particle\")&&(t=t.last()),t=t.not(\"(want|wants|wanted) to\"),t.found||(t=e.not(\"#Negative\")),t}(t);return{root:n,prefix:t.match(\"#Prefix\"),adverbs:Nc(t,n),auxiliary:jc(t,n),negative:xc(t),phrasal:Ic(n)}},Dc={tense:\"PresentTense\"},Hc={conditional:!0},Ec={tense:\"FutureTense\"},Gc={progressive:!0},Oc={tense:\"PastTense\"},Fc={complete:!0,progressive:!1},Vc={passive:!0},zc=function(e){const t={};return e.forEach((e=>{Object.assign(t,e)})),t},Bc={imperative:[[\"#Imperative\",[]]],\"want-infinitive\":[[\"^(want|wants|wanted) to #Infinitive$\",[Dc]],[\"^wanted to #Infinitive$\",[Oc]],[\"^will want to #Infinitive$\",[Ec]]],\"gerund-phrase\":[[\"^#PastTense #Gerund$\",[Oc]],[\"^#PresentTense #Gerund$\",[Dc]],[\"^#Infinitive #Gerund$\",[Dc]],[\"^will #Infinitive #Gerund$\",[Ec]],[\"^have #PastTense #Gerund$\",[Oc]],[\"^will have #PastTense #Gerund$\",[Oc]]],\"simple-present\":[[\"^#PresentTense$\",[Dc]],[\"^#Infinitive$\",[Dc]]],\"simple-past\":[[\"^#PastTense$\",[Oc]]],\"simple-future\":[[\"^will #Adverb? #Infinitive\",[Ec]]],\"present-progressive\":[[\"^(is|are|am) #Gerund$\",[Dc,Gc]]],\"past-progressive\":[[\"^(was|were) #Gerund$\",[Oc,Gc]]],\"future-progressive\":[[\"^will be #Gerund$\",[Ec,Gc]]],\"present-perfect\":[[\"^(has|have) #PastTense$\",[Oc,Fc]]],\"past-perfect\":[[\"^had #PastTense$\",[Oc,Fc]],[\"^had #PastTense to #Infinitive\",[Oc,Fc]]],\"future-perfect\":[[\"^will have #PastTense$\",[Ec,Fc]]],\"present-perfect-progressive\":[[\"^(has|have) been #Gerund$\",[Oc,Gc]]],\"past-perfect-progressive\":[[\"^had been #Gerund$\",[Oc,Gc]]],\"future-perfect-progressive\":[[\"^will have been #Gerund$\",[Ec,Gc]]],\"passive-past\":[[\"(got|were|was) #Passive\",[Oc,Vc]],[\"^(was|were) being #Passive\",[Oc,Vc]],[\"^(had|have) been #Passive\",[Oc,Vc]]],\"passive-present\":[[\"^(is|are|am) #Passive\",[Dc,Vc]],[\"^(is|are|am) being #Passive\",[Dc,Vc]],[\"^has been #Passive\",[Dc,Vc]]],\"passive-future\":[[\"will have been #Passive\",[Ec,Vc,Hc]],[\"will be being? #Passive\",[Ec,Vc,Hc]]],\"present-conditional\":[[\"would be #PastTense\",[Dc,Hc]]],\"past-conditional\":[[\"would have been #PastTense\",[Oc,Hc]]],\"auxiliary-future\":[[\"(is|are|am|was) going to (#Infinitive|#PresentTense)\",[Ec]]],\"auxiliary-past\":[[\"^did #Infinitive$\",[Oc,{plural:!1}]],[\"^used to #Infinitive$\",[Oc,Fc]]],\"auxiliary-present\":[[\"^(does|do) #Infinitive$\",[Dc,Fc,{plural:!0}]]],\"modal-past\":[[\"^(could|must|should|shall) have #PastTense$\",[Oc]]],\"modal-infinitive\":[[\"^#Modal #Infinitive$\",[]]],infinitive:[[\"^#Infinitive$\",[]]]},Sc=[];Object.keys(Bc).map((e=>{Bc[e].forEach((t=>{Sc.push({name:e,match:t[0],data:zc(t[1])})}))}));const $c=function(e,t){const n={};e=function(e,t){return e=e.clone(),t.adverbs.post&&t.adverbs.post.found&&e.remove(t.adverbs.post),t.adverbs.pre&&t.adverbs.pre.found&&e.remove(t.adverbs.pre),e.has(\"#Negative\")&&(e=e.remove(\"#Negative\")),e.has(\"#Prefix\")&&(e=e.remove(\"#Prefix\")),t.root.has(\"#PhrasalVerb #Particle\")&&e.remove(\"#Particle$\"),e.not(\"#Adverb\")}(e,t);for(let t=0;t<Sc.length;t+=1){const r=Sc[t];if(!0===e.has(r.match)){n.form=r.name,Object.assign(n,r.data);break}}return n.form||e.has(\"^#Verb$\")&&(n.form=\"infinitive\"),n.tense||(n.tense=t.root.has(\"#PastTense\")?\"PastTense\":\"PresentTense\"),n.copula=t.root.has(\"#Copula\"),n.isInfinitive=function(e){if(e.has(\"#Infinitive\")&&e.growLeft(\"to\").has(\"^to #Infinitive\"))return!0;return!1}(e),n},Mc=function(e){if(e.length<=1)return!1;return(e.parse()[0]||{}).isSubordinate},Lc=function(e,t){return!!t.has(\"(are|were|does)\")||(!!e.has(\"(those|they|we)\")||!(!e.found||!e.isPlural)&&e.isPlural().found)},Kc=function(e){const t=function(e){let t=e.before();t=function(e){let t=e.clauses();return t=t.filter(((e,t)=>!(e.has(\"^(if|unless|while|but|for|per|at|by|that|which|who|from)\")||t>0&&e.has(\"^#Verb . #Noun+$\")||t>0&&e.has(\"^#Adverb\")))),0===t.length?e:t}(t);const n=t.nouns();let r=n.last();const o=r.match(\"(i|he|she|we|you|they)\");if(o.found)return o.nouns();let a=n.if(\"^(that|this|those)\");return a.found||!1===n.found&&(a=t.match(\"^(that|this|those)\"),a.found)?a:(r=n.last(),Mc(r)&&(n.remove(r),r=n.last()),Mc(r)&&(n.remove(r),r=n.last()),r)}(e);return{subject:t,plural:Lc(t,e)}},Jc=e=>e,Wc=(e,t)=>{const n=Kc(e),r=n.subject;return!(!r.has(\"i\")&&!r.has(\"we\"))||n.plural},qc=function(e,t){if(e.has(\"were\"))return\"are\";const{subject:n,plural:r}=Kc(e);return n.has(\"i\")?\"am\":n.has(\"we\")||r?\"are\":\"is\"},Uc=function(e,t){const n=Kc(e),r=n.subject;return r.has(\"i\")||r.has(\"we\")||n.plural?\"do\":\"does\"},Rc=function(e){return e.has(\"#Infinitive\")?\"Infinitive\":e.has(\"#Participle\")?\"Participle\":e.has(\"#PastTense\")?\"PastTense\":e.has(\"#Gerund\")?\"Gerund\":e.has(\"#PresentTense\")?\"PresentTense\":void 0},Qc=function(e,t){const{toInfinitive:n}=e.methods.two.transform.verb;let r=t.root.text({keepPunct:!1});return r=n(r,e.model,Rc(e)),r&&e.replace(t.root,r),e},Zc=e=>e.has(\"will not\")?e.replace(\"will not\",\"have not\"):e.remove(\"will\"),_c=function(e){if(!e||!e.isView)return[];return e.json({normal:!0,terms:!1,text:!1}).map((e=>e.normal))},Xc=function(e){return e&&e.isView?e.text(\"normal\"):\"\"},Yc=function(e){const{toInfinitive:t}=e.methods.two.transform.verb;return t(e.text(\"normal\"),e.model,Rc(e))},eh={tags:!0},th={tags:!0},nh={noAux:(e,t)=>(t.auxiliary.found&&(e=e.remove(t.auxiliary)),e),simple:(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;if(o.has(\"#Modal\"))return e;let a=o.text({keepPunct:!1});a=r(a,e.model,Rc(o));return a=n(a,e.model).PastTense,a=\"been\"===a?\"was\":a,\"was\"===a&&(a=((e,t)=>{const{subject:n,plural:r}=Kc(e);return r||n.has(\"we\")?\"were\":\"was\"})(e)),a&&e.replace(o,a,th),e},both:function(e,t){return t.negative.found?(e.replace(\"will\",\"did\"),e):(e=nh.simple(e,t),e=nh.noAux(e,t))},hasHad:e=>(e.replace(\"has\",\"had\",th),e),hasParticiple:(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text(\"normal\");return a=r(a,e.model,Rc(o)),n(a,e.model).Participle}},rh={infinitive:nh.simple,\"simple-present\":nh.simple,\"simple-past\":Jc,\"simple-future\":nh.both,\"present-progressive\":e=>(e.replace(\"are\",\"were\",th),e.replace(\"(is|are|am)\",\"was\",th),e),\"past-progressive\":Jc,\"future-progressive\":(e,t)=>(e.match(t.root).insertBefore(\"was\"),e.remove(\"(will|be)\"),e),\"present-perfect\":nh.hasHad,\"past-perfect\":Jc,\"future-perfect\":(e,t)=>(e.match(t.root).insertBefore(\"had\"),e.has(\"will\")&&(e=Zc(e)),e.remove(\"have\"),e),\"present-perfect-progressive\":nh.hasHad,\"past-perfect-progressive\":Jc,\"future-perfect-progressive\":e=>(e.remove(\"will\"),e.replace(\"have\",\"had\",th),e),\"passive-past\":e=>(e.replace(\"have\",\"had\",th),e),\"passive-present\":e=>(e.replace(\"(is|are)\",\"was\",th),e),\"passive-future\":(e,t)=>(t.auxiliary.has(\"will be\")&&(e.match(t.root).insertBefore(\"had been\"),e.remove(\"(will|be)\")),t.auxiliary.has(\"will have been\")&&(e.replace(\"have\",\"had\",th),e.remove(\"will\")),e),\"present-conditional\":e=>(e.replace(\"be\",\"have been\"),e),\"past-conditional\":Jc,\"auxiliary-future\":e=>(e.replace(\"(is|are|am)\",\"was\",th),e),\"auxiliary-past\":Jc,\"auxiliary-present\":e=>(e.replace(\"(do|does)\",\"did\",th),e),\"modal-infinitive\":(e,t)=>(e.has(\"can\")?e.replace(\"can\",\"could\",th):(nh.simple(e,t),e.match(\"#Modal\").insertAfter(\"have\").tag(\"Auxiliary\")),e),\"modal-past\":Jc,\"want-infinitive\":e=>(e.replace(\"(want|wants)\",\"wanted\",th),e.remove(\"will\"),e),\"gerund-phrase\":(e,t)=>(t.root=t.root.not(\"#Gerund$\"),nh.simple(e,t),Zc(e),e)},oh=function(e,t){const n=Kc(e),r=n.subject;return r.has(\"(i|we|you)\")?\"have\":!1===n.plural||r.has(\"he\")||r.has(\"she\")||r.has(\"#Person\")?\"has\":\"have\"},ah=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;if(o.has(\"#Modal\"))return e;let i=o.text({keepPunct:!1});i=r(i,e.model,Rc(o));const s=n(i,e.model);if(i=s.Participle||s.PastTense,i){e=e.replace(o,i);const t=oh(e);e.prepend(t).match(t).tag(\"Auxiliary\"),e.remove(a)}return e},ih={infinitive:ah,\"simple-present\":ah,\"simple-future\":(e,t)=>e.replace(\"will\",oh(e)),\"present-perfect\":Jc,\"past-perfect\":Jc,\"future-perfect\":(e,t)=>e.replace(\"will have\",oh(e)),\"present-perfect-progressive\":Jc,\"past-perfect-progressive\":Jc,\"future-perfect-progressive\":Jc},sh={tags:!0},lh=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text(\"normal\");return a=r(a,e.model,Rc(o)),!1===Wc(e)&&(a=n(a,e.model).PresentTense),o.has(\"#Copula\")&&(a=qc(e)),a&&(e=e.replace(o,a,sh)).not(\"#Particle\").tag(\"PresentTense\"),e},uh=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text(\"normal\");return a=r(a,e.model,Rc(o)),!1===Wc(e)&&(a=n(a,e.model).Gerund),a&&(e=e.replace(o,a,sh)).not(\"#Particle\").tag(\"Gerund\"),e},ch={infinitive:lh,\"simple-present\":(e,t)=>{const{conjugate:n}=e.methods.two.transform.verb,{root:r}=t;if(!r.has(\"#Infinitive\"))return lh(e,t);{const t=Kc(e).subject;if(Wc(e)||t.has(\"i\"))return e;const o=r.text(\"normal\"),a=n(o,e.model).PresentTense;o!==a&&e.replace(r,a,sh)}return e},\"simple-past\":lh,\"simple-future\":(e,t)=>{const{root:n,auxiliary:r}=t;if(r.has(\"will\")&&n.has(\"be\")){const t=qc(e);e.replace(n,t),(e=e.remove(\"will\")).replace(\"not \"+t,t+\" not\")}else lh(e,t),e=e.remove(\"will\");return e},\"present-progressive\":Jc,\"past-progressive\":(e,t)=>{const n=qc(e);return e.replace(\"(were|was)\",n,sh)},\"future-progressive\":e=>(e.match(\"will\").insertBefore(\"is\"),e.remove(\"be\"),e.remove(\"will\")),\"present-perfect\":(e,t)=>(lh(e,t),e=e.remove(\"(have|had|has)\")),\"past-perfect\":(e,t)=>{const n=Kc(e).subject;return Wc(e)||n.has(\"i\")?((e=Qc(e,t)).remove(\"had\"),e):(e.replace(\"had\",\"has\",sh),e)},\"future-perfect\":e=>(e.match(\"will\").insertBefore(\"has\"),e.remove(\"have\").remove(\"will\")),\"present-perfect-progressive\":Jc,\"past-perfect-progressive\":e=>e.replace(\"had\",\"has\",sh),\"future-perfect-progressive\":e=>(e.match(\"will\").insertBefore(\"has\"),e.remove(\"have\").remove(\"will\")),\"passive-past\":(e,t)=>{const n=qc(e);return e.has(\"(had|have|has)\")&&e.has(\"been\")?(e.replace(\"(had|have|has)\",n,sh),e.replace(\"been\",\"being\"),e):e.replace(\"(got|was|were)\",n)},\"passive-present\":Jc,\"passive-future\":e=>(e.replace(\"will\",\"is\"),e.replace(\"be\",\"being\")),\"present-conditional\":Jc,\"past-conditional\":e=>(e.replace(\"been\",\"be\"),e.remove(\"have\")),\"auxiliary-future\":(e,t)=>(uh(e,t),e.remove(\"(going|to)\"),e),\"auxiliary-past\":(e,t)=>{if(t.auxiliary.has(\"did\")){const n=Uc(e);return e.replace(t.auxiliary,n),e}return uh(e,t),e.replace(t.auxiliary,\"is\"),e},\"auxiliary-present\":Jc,\"modal-infinitive\":Jc,\"modal-past\":(e,t)=>(((e,t)=>{const{toInfinitive:n}=e.methods.two.transform.verb,r=t.root;let o=t.root.text(\"normal\");o=n(o,e.model,Rc(r)),o&&(e=e.replace(t.root,o,sh))})(e,t),e.remove(\"have\")),\"gerund-phrase\":(e,t)=>(t.root=t.root.not(\"#Gerund$\"),lh(e,t),e.remove(\"(will|have)\")),\"want-infinitive\":(e,t)=>{let n=\"wants\";return Wc(e)&&(n=\"want\"),e.replace(\"(want|wanted|wants)\",n,sh),e.remove(\"will\"),e}},hh={tags:!0},dh=(e,t)=>{const{toInfinitive:n}=e.methods.two.transform.verb,{root:r,auxiliary:o}=t;if(r.has(\"#Modal\"))return e;let a=r.text(\"normal\");return a=n(a,e.model,Rc(r)),a&&(e=e.replace(r,a,hh)).not(\"#Particle\").tag(\"Verb\"),e.prepend(\"will\").match(\"will\").tag(\"Auxiliary\"),e.remove(o),e},gh=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;let i=o.text(\"normal\");return i=r(i,e.model,Rc(o)),i&&(i=n(i,e.model).Gerund,e.replace(o,i,hh),e.not(\"#Particle\").tag(\"PresentTense\")),e.remove(a),e.prepend(\"will be\").match(\"will be\").tag(\"Auxiliary\"),e},mh={infinitive:dh,\"simple-present\":dh,\"simple-past\":dh,\"simple-future\":Jc,\"present-progressive\":gh,\"past-progressive\":gh,\"future-progressive\":Jc,\"present-perfect\":e=>(e.match(\"(have|has)\").replaceWith(\"will have\"),e),\"past-perfect\":e=>e.replace(\"(had|has)\",\"will have\"),\"future-perfect\":Jc,\"present-perfect-progressive\":e=>e.replace(\"has\",\"will have\"),\"past-perfect-progressive\":e=>e.replace(\"had\",\"will have\"),\"future-perfect-progressive\":Jc,\"passive-past\":e=>e.has(\"got\")?e.replace(\"got\",\"will get\"):e.has(\"(was|were)\")?(e.replace(\"(was|were)\",\"will be\"),e.remove(\"being\")):e.has(\"(have|has|had) been\")?e.replace(\"(have|has|had) been\",\"will be\"):e,\"passive-present\":e=>(e.replace(\"being\",\"will be\"),e.remove(\"(is|are|am)\"),e),\"passive-future\":Jc,\"present-conditional\":e=>e.replace(\"would\",\"will\"),\"past-conditional\":e=>e.replace(\"would\",\"will\"),\"auxiliary-future\":Jc,\"auxiliary-past\":e=>e.has(\"used\")&&e.has(\"to\")?(e.replace(\"used\",\"will\"),e.remove(\"to\")):(e.replace(\"did\",\"will\"),e),\"auxiliary-present\":e=>e.replace(\"(do|does)\",\"will\"),\"modal-infinitive\":Jc,\"modal-past\":Jc,\"gerund-phrase\":(e,t)=>(t.root=t.root.not(\"#Gerund$\"),dh(e,t),e.remove(\"(had|have)\")),\"want-infinitive\":e=>(e.replace(\"(want|wants|wanted)\",\"will want\"),e)},ph={tags:!0},fh={tags:!0},bh=function(e,t){const n=Uc(e);return e.prepend(n+\" not\"),e},vh=function(e){let t=e.match(\"be\");return t.found?(t.prepend(\"not\"),e):(t=e.match(\"(is|was|am|are|will|were)\"),t.found?(t.append(\"not\"),e):e)},yh=e=>e.has(\"(is|was|am|are|will|were|be)\"),wh={\"simple-present\":(e,t)=>!0===yh(e)?vh(e):(e=Qc(e,t),e=bh(e)),\"simple-past\":(e,t)=>!0===yh(e)?vh(e):((e=Qc(e,t)).prepend(\"did not\"),e),imperative:e=>(e.prepend(\"do not\"),e),infinitive:(e,t)=>!0===yh(e)?vh(e):bh(e),\"passive-past\":e=>{if(e.has(\"got\"))return e.replace(\"got\",\"get\",fh),e.prepend(\"did not\"),e;const t=e.match(\"(was|were|had|have)\");return t.found&&t.append(\"not\"),e},\"auxiliary-past\":e=>{if(e.has(\"used\"))return e.prepend(\"did not\"),e;const t=e.match(\"(did|does|do)\");return t.found&&t.append(\"not\"),e},\"want-infinitive\":(e,t)=>e=(e=bh(e)).replace(\"wants\",\"want\",fh)};var kh={api:function(e){class Verbs extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Verbs\"}parse(e){return this.getNth(e).map(Tc)}json(e,t){const n=this.getNth(t).map((t=>{const n=t.toView().json(e)[0]||{};return n.verb=function(e){const t=Tc(e);e=e.clone().toView();const n=$c(e,t);return{root:t.root.text(),preAdverbs:_c(t.adverbs.pre),postAdverbs:_c(t.adverbs.post),auxiliary:Xc(t.auxiliary),negative:t.negative.found,prefix:Xc(t.prefix),infinitive:Yc(t.root),grammar:n}}(t),n}),[]);return n}subjects(e){return this.getNth(e).map((e=>(Tc(e),Kc(e).subject)))}adverbs(e){return this.getNth(e).map((e=>e.match(\"#Adverb\")))}isSingular(e){return this.getNth(e).filter((e=>!0!==Kc(e).plural))}isPlural(e){return this.getNth(e).filter((e=>!0===Kc(e).plural))}isImperative(e){return this.getNth(e).filter((e=>e.has(\"#Imperative\")))}toInfinitive(e){return this.getNth(e).map((e=>{const t=Tc(e);return function(e,t){const{toInfinitive:n}=e.methods.two.transform.verb,{root:r,auxiliary:o}=t,a=o.terms().harden();let i=r.text(\"normal\");if(i=n(i,e.model,Rc(r)),i&&e.replace(r,i,eh).tag(\"Verb\").firstTerm().tag(\"Infinitive\"),a.found&&e.remove(a),t.negative.found){e.has(\"not\")||e.prepend(\"not\");const t=Uc(e);e.prepend(t)}return e.fullSentence().compute([\"freeze\",\"lexicon\",\"preTagger\",\"postTagger\",\"unfreeze\",\"chunks\"]),e}(e,t,$c(e,t).form)}))}toPresentTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return ch.hasOwnProperty(n)?((e=ch[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):e}(e,t,n.form)}))}toPastTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return rh.hasOwnProperty(n)?((e=rh[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):e}(e,t,n.form)}))}toFutureTense(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return e.has(\"will\")||e.has(\"going to\")?e:mh.hasOwnProperty(n)?((e=mh[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):e}(e,t,n.form)}))}toGerund(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t){const{toInfinitive:n,conjugate:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;if(e.has(\"#Gerund\"))return e;let i=o.text(\"normal\");i=n(i,e.model,Rc(o));const s=r(i,e.model).Gerund;if(s){const t=qc(e);e.replace(o,s,ph),e.remove(a),e.prepend(t)}return e.replace(\"not is\",\"is not\"),e.replace(\"not are\",\"are not\"),e.fullSentence().compute([\"tagger\",\"chunks\"]),e}(e,t,n.form)}))}toPastParticiple(e){return this.getNth(e).map((e=>{const t=Tc(e),n=$c(e,t);return n.isInfinitive?e:function(e,t,n){return ih.hasOwnProperty(n)?((e=ih[n](e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e):((e=ah(e,t)).fullSentence().compute([\"tagger\",\"chunks\"]),e)}(e,t,n.form)}))}conjugate(e){const{conjugate:t,toInfinitive:n}=this.world.methods.two.transform.verb;return this.getNth(e).map((e=>{const r=Tc(e),o=$c(e,r);\"imperative\"===o.form&&(o.form=\"simple-present\");let a=r.root.text(\"normal\");if(!r.root.has(\"#Infinitive\")){const t=Rc(r.root);a=n(a,e.model,t)||a}return t(a,e.model)}),[])}isNegative(){return this.if(\"#Negative\")}isPositive(){return this.ifNo(\"#Negative\")}toPositive(){const e=this.match(\"do not #Verb\");return e.found&&e.remove(\"do not\"),this.remove(\"#Negative\")}toNegative(e){return this.getNth(e).map((e=>{const t=Tc(e);return function(e,t,n){if(e.has(\"#Negative\"))return e;if(wh.hasOwnProperty(n))return wh[n](e,t);let r=e.matchOne(\"be\");return r.found?(r.prepend(\"not\"),e):!0===yh(e)?vh(e):(r=e.matchOne(\"(will|had|have|has|did|does|do|#Modal)\"),r.found?(r.append(\"not\"),e):e)}(e,t,$c(e,t).form)}))}update(e){const t=new Verbs(this.document,e);return t._cache=this._cache,t}}Verbs.prototype.toPast=Verbs.prototype.toPastTense,Verbs.prototype.toPresent=Verbs.prototype.toPresentTense,Verbs.prototype.toFuture=Verbs.prototype.toFutureTense,e.prototype.verbs=function(e){let t=function(e){let t=e.match(\"<Verb>\");return t=t.not(\"#Conjunction\"),t=t.not(\"#Preposition\"),t=t.splitAfter(\"@hasComma\"),t=t.splitAfter(\"[(do|did|am|was|is|will)] (is|was)\",0),t=t.splitBefore(\"(#Verb && !#Copula) [being] #Verb\",0),t=t.splitBefore(\"#Verb [to be] #Verb\",0),t=t.splitAfter(\"[help] #PresentTense\",0),t=t.splitBefore(\"(#PresentTense|#PastTense) [#Copula]$\",0),t=t.splitBefore(\"(#PresentTense|#PastTense) [will be]$\",0),t=t.splitBefore(\"(#PresentTense|#PastTense) [(had|has)]\",0),t=t.not(\"#Reflexive$\"),t=t.not(\"#Adjective\"),t=t.splitAfter(\"[#PastTense] #PastTense\",0),t=t.splitAfter(\"[#PastTense] #Auxiliary+ #PastTense\",0),t=t.splitAfter(\"#Copula [#Gerund] #PastTense\",0),t=t.if(\"#Verb\"),t.has(\"(#Verb && !#Auxiliary) #Adverb+? #Copula\")&&(t=t.splitBefore(\"#Copula\")),t}(this);return t=t.getNth(e),new Verbs(this.document,t.pointer)}}};const Ph=function(e,t){const n=t.match(e);if(n.found){const e=n.pronouns().refersTo();if(e.found)return e}return t.none()},Ah=function(e){if(!e.found)return e;const[t]=e.fullPointer[0];return t&&t>0?e.update([[t-1]]):e.none()},Ch=function(e,t){let n=e.people();return n=function(e,t){return\"m\"===t?e.filter((e=>!e.presumedFemale().found)):\"f\"===t?e.filter((e=>!e.presumedMale().found)):e}(n,t),n.found?n.last():(n=e.nouns(\"#Actor\"),n.found?n.last():\"f\"===t?Ph(\"(she|her|hers)\",e):\"m\"===t?Ph(\"(he|him|his)\",e):e.none())},Nh=function(e){const t=e.nouns();let n=t.isPlural().notIf(\"#Pronoun\");if(n.found)return n.last();const r=Ph(\"(they|their|theirs)\",e);return r.found?r:(n=t.match(\"(somebody|nobody|everybody|anybody|someone|noone|everyone|anyone)\"),n.found?n.last():e.none())},jh=function(e,t){let n=e.before(),r=t(n);return r.found?r:(n=Ah(e),r=t(n),r.found?r:(n=Ah(n),r=t(n),r.found?r:e.none()))};var xh={compute:{coreference:function(e){e.pronouns().if(\"(he|him|his|she|her|hers|they|their|theirs|it|its)\").forEach((e=>{let t=null;e.has(\"(he|him|his)\")?t=jh(e,(e=>Ch(e,\"m\"))):e.has(\"(she|her|hers)\")?t=jh(e,(e=>Ch(e,\"f\"))):e.has(\"(they|their|theirs)\")&&(t=jh(e,Nh)),t&&t.found&&function(e,t){t&&t.found&&(e.docs[0][0].reference=t.ptrs[0])}(e,t)}))}},api:function(e){class Pronouns extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Pronouns\"}hasReference(){return this.compute(\"coreference\"),this.filter((e=>e.docs[0][0].reference))}refersTo(){return this.compute(\"coreference\"),this.map((e=>{if(!e.found)return e.none();const t=e.docs[0][0];return t.reference?e.update([t.reference]):e.none()}))}update(e){const t=new Pronouns(this.document,e);return t._cache=this._cache,t}}e.prototype.pronouns=function(e){let t=this.match(\"#Pronoun\");return t=t.getNth(e),new Pronouns(t.document,t.pointer)}}};h.plugin(ql),h.plugin(Ul),h.plugin(eu),h.plugin(xh),h.plugin(fu),h.plugin(Au),h.plugin(Ou),h.plugin(hc),h.plugin(mc),h.plugin(bc),h.plugin(Cc),h.plugin(kh);export{h as default};\n"
  },
  {
    "path": "builds/two/compromise-two.cjs",
    "content": "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).nlp=t()}(this,(function(){\"use strict\";var e={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const t={compute:function(e){const{world:t}=this,n=t.compute;return\"string\"==typeof e&&n.hasOwnProperty(e)?n[e](this):(e=>\"[object Array]\"===Object.prototype.toString.call(e))(e)?e.forEach((a=>{t.compute.hasOwnProperty(a)?n[a](this):console.warn(\"no compute:\",e)})):\"function\"==typeof e?e(this):console.warn(\"no compute:\",e),this}};var n={forEach:function(e){return this.fullPointer.forEach(((t,n)=>{const a=this.update([t]);e(a,n)})),this},map:function(e,t){const n=this.fullPointer.map(((t,n)=>{const a=this.update([t]),r=e(a,n);return void 0===r?this.none():r}));if(0===n.length)return t||this.update([]);if(void 0!==n[0]){if(\"string\"==typeof n[0])return n;if(\"object\"==typeof n[0]&&(null===n[0]||!n[0].isView))return n}let a=[];return n.forEach((e=>{a=a.concat(e.fullPointer)})),this.toView(a)},filter:function(e){let t=this.fullPointer;t=t.filter(((t,n)=>{const a=this.update([t]);return e(a,n)}));return this.update(t)},find:function(e){const t=this.fullPointer.find(((t,n)=>{const a=this.update([t]);return e(a,n)}));return this.update([t])},some:function(e){return this.fullPointer.some(((t,n)=>{const a=this.update([t]);return e(a,n)}))},random:function(e=1){let t=this.fullPointer,n=Math.floor(Math.random()*t.length);return n+e>this.length&&(n=this.length-e,n=n<0?0:n),t=t.slice(n,n+e),this.update(t)}};const a={termList:function(){return this.methods.one.termList(this.docs)},terms:function(e){const t=this.match(\".\");return\"number\"==typeof e?t.eq(e):t},groups:function(e){if(e||0===e)return this.update(this._groups[e]||[]);const t={};return Object.keys(this._groups).forEach((e=>{t[e]=this.update(this._groups[e])})),t},eq:function(e){let t=this.pointer;return t||(t=this.docs.map(((e,t)=>[t]))),t[e]?this.update([t[e]]):this.none()},first:function(){return this.eq(0)},last:function(){const e=this.fullPointer.length-1;return this.eq(e)},firstTerms:function(){return this.match(\"^.\")},lastTerms:function(){return this.match(\".$\")},slice:function(e,t){let n=this.pointer||this.docs.map(((e,t)=>[t]));return n=n.slice(e,t),this.update(n)},all:function(){return this.update().toView()},fullSentences:function(){const e=this.fullPointer.map((e=>[e[0]]));return this.update(e).toView()},none:function(){return this.update([])},isDoc:function(e){if(!e||!e.isView)return!1;const t=this.fullPointer,n=e.fullPointer;return!t.length!==n.length&&t.every(((e,t)=>!!n[t]&&(e[0]===n[t][0]&&e[1]===n[t][1]&&e[2]===n[t][2])))},wordCount:function(){return this.docs.reduce(((e,t)=>(e+=t.filter((e=>\"\"!==e.text)).length,e)),0)},isFull:function(){const e=this.pointer;if(!e)return!0;if(0===e.length||0!==e[0][0])return!1;let t=0,n=0;return this.document.forEach((e=>t+=e.length)),this.docs.forEach((e=>n+=e.length)),t===n},getNth:function(e){return\"number\"==typeof e?this.eq(e):\"string\"==typeof e?this.if(e):this}};a.group=a.groups,a.fullSentence=a.fullSentences,a.sentence=a.fullSentences,a.lastTerm=a.lastTerms,a.firstTerm=a.firstTerms;const r=Object.assign({},a,t,n);r.get=r.eq;class View{constructor(t,n,a={}){[[\"document\",t],[\"world\",e],[\"_groups\",a],[\"_cache\",null],[\"viewType\",\"View\"]].forEach((e=>{Object.defineProperty(this,e[0],{value:e[1],writable:!0})})),this.ptrs=n}get docs(){let t=this.document;return this.ptrs&&(t=e.methods.one.getDoc(this.ptrs,this.document)),t}get pointer(){return this.ptrs}get methods(){return this.world.methods}get model(){return this.world.model}get hooks(){return this.world.hooks}get isView(){return!0}get found(){return this.docs.length>0}get length(){return this.docs.length}get fullPointer(){const{docs:e,ptrs:t,document:n}=this,a=t||e.map(((e,t)=>[t]));return a.map((e=>{let[t,a,r,o,i]=e;return a=a||0,r=r||(n[t]||[]).length,n[t]&&n[t][a]&&(o=o||n[t][a].id,n[t][r-1]&&(i=i||n[t][r-1].id)),[t,a,r,o,i]}))}update(e){const t=new View(this.document,e);if(this._cache&&e&&e.length>0){const n=[];e.forEach(((e,t)=>{const[a,r,o]=e;(1===e.length||0===r&&this.document[a].length===o)&&(n[t]=this._cache[a])})),n.length>0&&(t._cache=n)}return t.world=this.world,t}toView(e){return new View(this.document,e||this.pointer)}fromText(e){const{methods:t}=this,n=t.one.tokenize.fromString(e,this.world),a=new View(n);return a.world=this.world,a.compute([\"normal\",\"freeze\",\"lexicon\"]),this.world.compute.preTagger&&a.compute(\"preTagger\"),a.compute(\"unfreeze\"),a}clone(){let e=this.document.slice(0);e=e.map((e=>e.map((e=>((e=Object.assign({},e)).tags=new Set(e.tags),e)))));const t=this.update(this.pointer);return t.document=e,t._cache=this._cache,t}}Object.assign(View.prototype,r);const o=function(e){return e&&\"object\"==typeof e&&!Array.isArray(e)};function i(e,t){if(o(t))for(const n in t)o(t[n])?(e[n]||Object.assign(e,{[n]:{}}),i(e[n],t[n])):Object.assign(e,{[n]:t[n]});return e}const s=function(e,t,n,a){if(r=e,\"[object Array]\"===Object.prototype.toString.call(r))return void e.forEach((e=>s(e,t,n,a)));var r;const{methods:o,model:l,compute:u,hooks:c}=t;e.methods&&function(e,t){for(const n in t)e[n]=e[n]||{},Object.assign(e[n],t[n])}(o,e.methods),e.model&&i(l,e.model),e.irregulars&&function(e,t){const n=e.two.models||{};Object.keys(t).forEach((e=>{t[e].pastTense&&(n.toPast&&(n.toPast.ex[e]=t[e].pastTense),n.fromPast&&(n.fromPast.ex[t[e].pastTense]=e)),t[e].presentTense&&(n.toPresent&&(n.toPresent.ex[e]=t[e].presentTense),n.fromPresent&&(n.fromPresent.ex[t[e].presentTense]=e)),t[e].gerund&&(n.toGerund&&(n.toGerund.ex[e]=t[e].gerund),n.fromGerund&&(n.fromGerund.ex[t[e].gerund]=e)),t[e].comparative&&(n.toComparative&&(n.toComparative.ex[e]=t[e].comparative),n.fromComparative&&(n.fromComparative.ex[t[e].comparative]=e)),t[e].superlative&&(n.toSuperlative&&(n.toSuperlative.ex[e]=t[e].superlative),n.fromSuperlative&&(n.fromSuperlative.ex[t[e].superlative]=e))}))}(l,e.irregulars),e.compute&&Object.assign(u,e.compute),c&&(t.hooks=c.concat(e.hooks||[])),e.api&&e.api(n),e.lib&&Object.keys(e.lib).forEach((t=>a[t]=e.lib[t])),e.tags&&a.addTags(e.tags),e.words&&a.addWords(e.words),e.frozen&&a.addWords(e.frozen,!0),e.mutate&&e.mutate(t,a)},l=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},u=function(e,t,n){const{methods:a}=n,r=new t([]);if(r.world=n,\"number\"==typeof e&&(e=String(e)),!e)return r;if(\"string\"==typeof e){return new t(a.one.tokenize.fromString(e,n))}if(o=e,\"[object Object]\"===Object.prototype.toString.call(o)&&e.isView)return new t(e.document,e.ptrs);var o;if(l(e)){if(l(e[0])){const n=e.map((e=>e.map((e=>({text:e,normal:e,pre:\"\",post:\" \",tags:new Set})))));return new t(n)}const n=e.map((e=>e.terms.map((e=>(l(e.tags)&&(e.tags=new Set(e.tags)),e)))));return new t(n)}return r},c=Object.assign({},e),d=function(e,t){t&&d.addWords(t);const n=u(e,View,c);return e&&n.compute(c.hooks),n};Object.defineProperty(d,\"_world\",{value:c,writable:!0}),d.tokenize=function(e,t){const{compute:n}=this._world;t&&d.addWords(t);const a=u(e,View,c);return n.contractions&&a.compute([\"alias\",\"normal\",\"machine\",\"contractions\"]),a},d.plugin=function(e){return s(e,this._world,View,this),this},d.extend=d.plugin,d.world=function(){return this._world},d.model=function(){return this._world.model},d.methods=function(){return this._world.methods},d.hooks=function(){return this._world.hooks},d.verbose=function(e){const t=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};return t.DEBUG_TAGS=\"tagger\"===e||!0===e||\"\",t.DEBUG_MATCH=\"match\"===e||!0===e||\"\",t.DEBUG_CHUNKS=\"chunker\"===e||!0===e||\"\",this},d.version=\"14.15.0\";var h={one:{cacheDoc:function(e){const t=e.map((e=>{const t=new Set;return e.forEach((e=>{\"\"!==e.normal&&t.add(e.normal),e.switch&&t.add(`%${e.switch}%`),e.implicit&&t.add(e.implicit),e.machine&&t.add(e.machine),e.root&&t.add(e.root),e.alias&&e.alias.forEach((e=>t.add(e)));const n=Array.from(e.tags);for(let e=0;e<n.length;e+=1)t.add(\"#\"+n[e])})),t}));return t}}};const m={cache:function(){return this._cache=this.methods.one.cacheDoc(this.document),this},uncache:function(){return this._cache=null,this}};var p={api:function(e){Object.assign(e.prototype,m)},compute:{cache:function(e){e._cache=e.methods.one.cacheDoc(e.document)}},methods:h};const f=e=>/^\\p{Lu}[\\p{Ll}'’]/u.test(e)||/^\\p{Lu}$/u.test(e),b=(e,t,n)=>{if(n.forEach((e=>e.dirty=!0)),e){const a=[t,0].concat(n);Array.prototype.splice.apply(e,a)}return e},y=function(e){const t=e[e.length-1];!t||/ $/.test(t.post)||/[-–—]/.test(t.post)||(t.post+=\" \")},v=(e,t,n)=>{const a=/[-.?!,;:)–—'\"]/g,r=e[t-1];if(!r)return;const o=r.post;if(a.test(o)){const e=o.match(a).join(\"\"),t=n[n.length-1];t.post=e+t.post,r.post=r.post.replace(a,\"\")}},w=function(e,t,n,a){const[r,o,i]=t;0===o||i===a[r].length?y(n):(y(n),y([e[t[1]]])),function(e,t,n){const a=e[t];if(0!==t||!f(a.text))return;n[0].text=n[0].text.replace(/^\\p{Ll}/u,(e=>e.toUpperCase()));const r=e[t];r.tags.has(\"ProperNoun\")||r.tags.has(\"Acronym\")||f(r.text)&&r.text.length>1&&(r.text=(o=r.text,o.replace(/^\\p{Lu}/u,(e=>e.toLowerCase()))));var o}(e,o,n),b(e,o,n)};let k=0;const P=e=>(e=e.length<3?\"0\"+e:e).length<3?\"0\"+e:e,A=function(e){let[t,n]=e.index||[0,0];k+=1,k=k>46655?0:k,t=t>46655?0:t,n=n>1294?0:n;let a=P(k.toString(36));a+=P(t.toString(36));let r=n.toString(36);r=r.length<2?\"0\"+r:r,a+=r;return a+=parseInt(36*Math.random(),10).toString(36),e.normal+\"|\"+a.toUpperCase()},C=function(e){if(e.has(\"@hasContraction\")&&\"function\"==typeof e.contractions){e.grow(\"@hasContraction\").contractions().expand()}},j=e=>\"[object Array]\"===Object.prototype.toString.call(e),N=function(e,t,n){const{document:a,world:r}=t;t.uncache();const o=t.fullPointer,i=t.fullPointer;t.forEach(((s,l)=>{const u=s.fullPointer[0],[c]=u,d=a[c];let h=function(e,t){const{methods:n}=t;return\"string\"==typeof e?n.one.tokenize.fromString(e,t)[0]:\"object\"==typeof e&&e.isView?e.clone().docs[0]||[]:j(e)?j(e[0])?e[0]:e:[]}(e,r);0!==h.length&&(h=function(e){return e.map((e=>(e.id=A(e),e)))}(h),n?(C(t.update([u]).firstTerm()),w(d,u,h,a)):(C(t.update([u]).lastTerm()),function(e,t,n,a){const[r,,o]=t,i=(a[r]||[]).length;o<i?(v(e,o,n),y(n)):i===o&&(y(e),v(e,o,n),a[r+1]&&(n[n.length-1].post+=\" \")),b(e,t[2],n),t[4]=n[n.length-1].id}(d,u,h,a)),a[c]&&a[c][u[1]]&&(u[3]=a[c][u[1]].id),i[l]=u,u[2]+=h.length,o[l]=u)}));const s=t.toView(o);return t.ptrs=i,s.compute([\"id\",\"index\",\"freeze\",\"lexicon\"]),s.world.compute.preTagger&&s.compute(\"preTagger\"),s.compute(\"unfreeze\"),s},I={insertAfter:function(e){return N(e,this,!1)},insertBefore:function(e){return N(e,this,!0)}};I.append=I.insertAfter,I.prepend=I.insertBefore,I.insert=I.insertAfter;const D=/\\$[0-9a-z]+/g,H={},T=e=>e.replace(/^\\p{Ll}/u,(e=>e.toUpperCase())),G=e=>e.replace(/^\\p{Lu}/u,(e=>e.toLowerCase()));H.replaceWith=function(e,t={}){let n=this.fullPointer;const a=this;if(this.uncache(),\"function\"==typeof e)return function(e,t,n){return e.forEach((e=>{const a=t(e);e.replaceWith(a,n)})),e}(a,e,t);const r=a.docs[0];if(!r)return a;const o=t.possessives&&r[r.length-1].tags.has(\"Possessive\"),i=t.case&&(s=r[0].text,/^\\p{Lu}[\\p{Ll}'’]/u.test(s)||/^\\p{Lu}$/u.test(s));var s;e=function(e,t){if(\"string\"!=typeof e)return e;const n=t.groups();return e=e.replace(D,(e=>{const t=e.replace(/\\$/,\"\");return n.hasOwnProperty(t)?n[t].text():e})),e}(e,a);const l=this.update(n);n=n.map((e=>e.slice(0,3)));const u=(l.docs[0]||[]).map((e=>Array.from(e.tags))),c=l.docs[0][0].pre,d=l.docs[0][l.docs[0].length-1].post;if(\"string\"==typeof e&&(e=this.fromText(e).compute(\"id\")),a.insertAfter(e),l.has(\"@hasContraction\")&&a.contractions){a.grow(\"@hasContraction+\").contractions().expand()}if(a.delete(l),o){const e=a.docs[0],t=e[e.length-1];t.tags.has(\"Possessive\")||(t.text+=\"'s\",t.normal+=\"'s\",t.tags.add(\"Possessive\"))}if(c&&a.docs[0]&&(a.docs[0][0].pre=c),d&&a.docs[0]){const e=a.docs[0][a.docs[0].length-1];e.post.trim()||(e.post=d)}const h=a.toView(n).compute([\"index\",\"freeze\",\"lexicon\"]);if(h.world.compute.preTagger&&h.compute(\"preTagger\"),h.compute(\"unfreeze\"),t.tags&&h.terms().forEach(((e,t)=>{e.tagSafe(u[t])})),!h.docs[0]||!h.docs[0][0])return h;if(t.case){const e=i?T:G;h.docs[0][0].text=e(h.docs[0][0].text)}return h},H.replace=function(e,t,n){if(e&&!t)return this.replaceWith(e,n);const a=this.match(e);return a.found?(this.soften(),a.replaceWith(t,n)):this};const x={remove:function(e){const{indexN:t}=this.methods.one.pointer;this.uncache();let n=this.all(),a=this;e&&(n=this,a=this.match(e));const r=!n.ptrs;if(a.has(\"@hasContraction\")&&a.contractions){a.grow(\"@hasContraction\").contractions().expand()}let o=n.fullPointer;const i=a.fullPointer.reverse(),s=function(e,t){t.forEach((t=>{const[n,a,r]=t,o=r-a;e[n]&&(r===e[n].length&&r>1&&function(e,t){const n=e.length-1,a=e[n],r=e[n-t];r&&a&&(r.post+=a.post,r.post=r.post.replace(/ +([.?!,;:])/,\"$1\"),r.post=r.post.replace(/[,;:]+([.?!])/,\"$1\"))}(e[n],o),e[n].splice(a,o))}));for(let t=e.length-1;t>=0;t-=1)if(0===e[t].length&&(e.splice(t,1),t===e.length&&e[t-1])){const n=e[t-1],a=n[n.length-1];a&&(a.post=a.post.trimEnd())}return e}(this.document,i);if(o=function(e,t){return e=e.map((e=>{const[n]=e;return t[n]?(t[n].forEach((t=>{const n=t[2]-t[1];e[1]<=t[1]&&e[2]>=t[2]&&(e[2]-=n)})),e):e})),e.forEach(((t,n)=>{if(0===t[1]&&0==t[2])for(let t=n+1;t<e.length;t+=1)e[t][0]-=1,e[t][0]<0&&(e[t][0]=0)})),e=(e=e.filter((e=>e[2]-e[1]>0))).map((e=>(e[3]=null,e[4]=null,e)))}(o,t(i)),n.ptrs=o,n.document=s,n.compute(\"index\"),r&&(n.ptrs=void 0),!e)return this.ptrs=[],n.none();return n.toView(o)}};x.delete=x.remove;const E={pre:function(e,t){return void 0===e&&this.found?this.docs[0][0].pre:(this.docs.forEach((n=>{const a=n[0];!0===t?a.pre+=e:a.pre=e})),this)},post:function(e,t){if(void 0===e){const e=this.docs[this.docs.length-1];return e[e.length-1].post}return this.docs.forEach((n=>{const a=n[n.length-1];!0===t?a.post+=e:a.post=e})),this},trim:function(){if(!this.found)return this;const e=this.docs,t=e[0][0];t.pre=t.pre.trimStart();const n=e[e.length-1],a=n[n.length-1];return a.post=a.post.trimEnd(),this},hyphenate:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.pre=\"\"),e[n+1]&&(t.post=\"-\")}))})),this},dehyphenate:function(){const e=/[-–—]/;return this.docs.forEach((t=>{t.forEach((t=>{e.test(t.post)&&(t.post=\" \")}))})),this},toQuotations:function(e,t){return e=e||'\"',t=t||'\"',this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const a=n[n.length-1];a.post=t+a.post})),this},toParentheses:function(e,t){return e=e||\"(\",t=t||\")\",this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const a=n[n.length-1];a.post=t+a.post})),this}};E.deHyphenate=E.dehyphenate,E.toQuotation=E.toQuotations;var F={alpha:(e,t)=>e.normal<t.normal?-1:e.normal>t.normal?1:0,length:(e,t)=>{const n=e.normal.trim().length,a=t.normal.trim().length;return n<a?1:n>a?-1:0},wordCount:(e,t)=>e.words<t.words?1:e.words>t.words?-1:0,sequential:(e,t)=>e[0]<t[0]?1:e[0]>t[0]?-1:e[1]>t[1]?1:-1,byFreq:function(e){const t={};return e.forEach((e=>{t[e.normal]=t[e.normal]||0,t[e.normal]+=1})),e.sort(((e,n)=>{const a=t[e.normal],r=t[n.normal];return a<r?1:a>r?-1:0})),e}};const O=new Set([\"index\",\"sequence\",\"seq\",\"sequential\",\"chron\",\"chronological\"]),z=new Set([\"freq\",\"frequency\",\"topk\",\"repeats\"]),V=new Set([\"alpha\",\"alphabetical\"]);var B={unique:function(){const e=new Set,t=this.filter((t=>{const n=t.text(\"machine\");return!e.has(n)&&(e.add(n),!0)}));return t},reverse:function(){let e=this.pointer||this.docs.map(((e,t)=>[t]));return e=[].concat(e),e=e.reverse(),this._cache&&(this._cache=this._cache.reverse()),this.update(e)},sort:function(e){const{docs:t,pointer:n}=this;if(this.uncache(),\"function\"==typeof e)return function(e,t){let n=e.fullPointer;return n=n.sort(((n,a)=>(n=e.update([n]),a=e.update([a]),t(n,a)))),e.ptrs=n,e}(this,e);e=e||\"alpha\";const a=n||t.map(((e,t)=>[t]));let r=t.map(((e,t)=>({index:t,words:e.length,normal:e.map((e=>e.machine||e.normal||\"\")).join(\" \"),pointer:a[t]})));return O.has(e)&&(e=\"sequential\"),V.has(e)&&(e=\"alpha\"),z.has(e)?(r=F.byFreq(r),this.update(r.map((e=>e.pointer)))):\"function\"==typeof F[e]?(r=r.sort(F[e]),this.update(r.map((e=>e.pointer)))):this}};const S=function(e,t){if(e.length>0){const t=e[e.length-1],n=t[t.length-1];!1===/ /.test(n.post)&&(n.post+=\" \")}return e=e.concat(t)};var K={concat:function(e){if(\"string\"==typeof e){const t=this.fromText(e);if(this.found&&this.ptrs){const e=this.fullPointer,n=e[e.length-1][0];this.document.splice(n,0,...t.document)}else this.document=this.document.concat(t.document);return this.all().compute(\"index\")}if(\"object\"==typeof e&&e.isView)return function(e,t){if(e.document===t.document){const n=e.fullPointer.concat(t.fullPointer);return e.toView(n).compute(\"index\")}return t.fullPointer.forEach((t=>{t[0]+=e.document.length})),e.document=S(e.document,t.docs),e.all()}(this,e);if(t=e,\"[object Array]\"===Object.prototype.toString.call(t)){const t=S(this.document,e);return this.document=t,this.all()}var t;return this}};var $={harden:function(){return this.ptrs=this.fullPointer,this},soften:function(){let e=this.ptrs;return!e||e.length<1||(e=e.map((e=>e.slice(0,3))),this.ptrs=e),this}};const L=Object.assign({},{toLowerCase:function(){return this.termList().forEach((e=>{e.text=e.text.toLowerCase()})),this},toUpperCase:function(){return this.termList().forEach((e=>{e.text=e.text.toUpperCase()})),this},toTitleCase:function(){return this.termList().forEach((e=>{e.text=e.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))})),this},toCamelCase:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.text=t.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))),n!==e.length-1&&(t.post=\"\")}))})),this}},I,H,x,E,B,K,$),M={id:function(e){const t=e.docs;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1){const a=t[e][n];a.id=a.id||A(a)}}};var J={api:function(e){Object.assign(e.prototype,L)},compute:M};const W=!0;var U={one:{contractions:[{word:\"@\",out:[\"at\"]},{word:\"arent\",out:[\"are\",\"not\"]},{word:\"alot\",out:[\"a\",\"lot\"]},{word:\"brb\",out:[\"be\",\"right\",\"back\"]},{word:\"cannot\",out:[\"can\",\"not\"]},{word:\"dun\",out:[\"do\",\"not\"]},{word:\"can't\",out:[\"can\",\"not\"]},{word:\"shan't\",out:[\"should\",\"not\"]},{word:\"won't\",out:[\"will\",\"not\"]},{word:\"that's\",out:[\"that\",\"is\"]},{word:\"what's\",out:[\"what\",\"is\"]},{word:\"let's\",out:[\"let\",\"us\"]},{word:\"dunno\",out:[\"do\",\"not\",\"know\"]},{word:\"gonna\",out:[\"going\",\"to\"]},{word:\"gotta\",out:[\"have\",\"got\",\"to\"]},{word:\"gimme\",out:[\"give\",\"me\"]},{word:\"outta\",out:[\"out\",\"of\"]},{word:\"tryna\",out:[\"trying\",\"to\"]},{word:\"gtg\",out:[\"got\",\"to\",\"go\"]},{word:\"im\",out:[\"i\",\"am\"]},{word:\"imma\",out:[\"I\",\"will\"]},{word:\"imo\",out:[\"in\",\"my\",\"opinion\"]},{word:\"irl\",out:[\"in\",\"real\",\"life\"]},{word:\"ive\",out:[\"i\",\"have\"]},{word:\"rn\",out:[\"right\",\"now\"]},{word:\"tbh\",out:[\"to\",\"be\",\"honest\"]},{word:\"wanna\",out:[\"want\",\"to\"]},{word:\"c'mere\",out:[\"come\",\"here\"]},{word:\"c'mon\",out:[\"come\",\"on\"]},{word:\"shoulda\",out:[\"should\",\"have\"]},{word:\"coulda\",out:[\"coulda\",\"have\"]},{word:\"woulda\",out:[\"woulda\",\"have\"]},{word:\"musta\",out:[\"must\",\"have\"]},{word:\"tis\",out:[\"it\",\"is\"]},{word:\"twas\",out:[\"it\",\"was\"]},{word:\"y'know\",out:[\"you\",\"know\"]},{word:\"ne'er\",out:[\"never\"]},{word:\"o'er\",out:[\"over\"]},{after:\"ll\",out:[\"will\"]},{after:\"ve\",out:[\"have\"]},{after:\"re\",out:[\"are\"]},{after:\"m\",out:[\"am\"]},{before:\"c\",out:[\"ce\"]},{before:\"m\",out:[\"me\"]},{before:\"n\",out:[\"ne\"]},{before:\"qu\",out:[\"que\"]},{before:\"s\",out:[\"se\"]},{before:\"t\",out:[\"tu\"]},{word:\"shouldnt\",out:[\"should\",\"not\"]},{word:\"couldnt\",out:[\"could\",\"not\"]},{word:\"wouldnt\",out:[\"would\",\"not\"]},{word:\"hasnt\",out:[\"has\",\"not\"]},{word:\"wasnt\",out:[\"was\",\"not\"]},{word:\"isnt\",out:[\"is\",\"not\"]},{word:\"cant\",out:[\"can\",\"not\"]},{word:\"dont\",out:[\"do\",\"not\"]},{word:\"wont\",out:[\"will\",\"not\"]},{word:\"howd\",out:[\"how\",\"did\"]},{word:\"whatd\",out:[\"what\",\"did\"]},{word:\"whend\",out:[\"when\",\"did\"]},{word:\"whered\",out:[\"where\",\"did\"]}],numberSuffixes:{st:W,nd:W,rd:W,th:W,am:W,pm:W,max:W,\"°\":W,s:W,e:W,er:W,\"ère\":W,\"ème\":W}}};const q=function(e,t,n){const[a,r]=t;n&&0!==n.length&&(n=n.map(((e,t)=>(e.implicit=e.text,e.machine=e.text,e.pre=\"\",e.post=\"\",e.text=\"\",e.normal=\"\",e.index=[a,r+t],e))),n[0]&&(n[0].pre=e[a][r].pre,n[n.length-1].post=e[a][r].post,n[0].text=e[a][r].text,n[0].normal=e[a][r].normal),e[a].splice(r,1,...n))},R=/'/,Q=new Set([\"what\",\"how\",\"when\",\"where\",\"why\"]),Z=new Set([\"be\",\"go\",\"start\",\"think\",\"need\"]),X=new Set([\"been\",\"gone\"]),_=/'/,Y=/(e|é|aison|sion|tion)$/,ee=/(age|isme|acle|ege|oire)$/;var te=(e,t)=>[\"je\",e[t].normal.split(_)[1]],ne=(e,t)=>{const n=e[t].normal.split(_)[1];return n&&n.endsWith(\"e\")?[\"la\",n]:[\"le\",n]},ae=(e,t)=>{const n=e[t].normal.split(_)[1];return n&&Y.test(n)&&!ee.test(n)?[\"du\",n]:n&&n.endsWith(\"s\")?[\"des\",n]:[\"de\",n]};const re=/^([0-9.]{1,4}[a-z]{0,2}) ?[-–—] ?([0-9]{1,4}[a-z]{0,2})$/i,oe=/^([0-9]{1,2}(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9]{1,2}(:[0-9][0-9])?(am|pm)?)$/i,ie=/^[0-9]{3}-[0-9]{4}$/,se=function(e,t){const n=e[t];let a=n.text.match(re);return null!==a?!0===n.tags.has(\"PhoneNumber\")||ie.test(n.text)?null:[a[1],\"to\",a[2]]:(a=n.text.match(oe),null!==a?[a[1],\"to\",a[4]]:null)},le=/^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/,ue=function(e,t,n){const a=n.model.one.numberSuffixes||{},r=e[t].text.match(le);if(null!==r){const e=r[2].toLowerCase().trim();return a.hasOwnProperty(e)?null:[r[1],e]}return null},ce=/'/,de=/^[0-9][^-–—]*[-–—].*?[0-9]/,he=function(e,t,n,a){const r=t.update();r.document=[e];let o=n+a;n>0&&(n-=1),e[o]&&(o+=1),r.ptrs=[[0,n,o]]},ge={t:(e,t)=>function(e,t){return\"ain't\"===e[t].normal||\"aint\"===e[t].normal?null:[e[t].normal.replace(/n't/,\"\"),\"not\"]}(e,t),d:(e,t)=>function(e,t){const n=e[t].normal.split(R)[0];if(Q.has(n))return[n,\"did\"];if(e[t+1]){if(X.has(e[t+1].normal))return[n,\"had\"];if(Z.has(e[t+1].normal))return[n,\"would\"]}return null}(e,t)},me={j:(e,t)=>te(e,t),l:(e,t)=>ne(e,t),d:(e,t)=>ae(e,t)},pe=function(e,t,n,a){for(let r=0;r<e.length;r+=1){const o=e[r];if(o.word===t.normal)return o.out;if(null!==a&&a===o.after)return[n].concat(o.out);if(null!==n&&n===o.before&&a&&a.length>2)return o.out.concat(a)}return null},fe=function(e,t){const n=t.fromText(e.join(\" \"));return n.compute([\"id\",\"alias\"]),n.docs[0]},be=function(e,t){for(let n=t+1;n<5&&e[n];n+=1)if(\"been\"===e[n].normal)return[\"there\",\"has\"];return[\"there\",\"is\"]};var ye={contractions:e=>{const{world:t,document:n}=e,{model:a,methods:r}=t,o=a.one.contractions||[];n.forEach(((a,i)=>{for(let s=a.length-1;s>=0;s-=1){let l=null,u=null;if(!0===ce.test(a[s].normal)){const e=a[s].normal.split(ce);l=e[0],u=e[1]}let c=pe(o,a[s],l,u);!c&&ge.hasOwnProperty(u)&&(c=ge[u](a,s,t)),!c&&me.hasOwnProperty(l)&&(c=me[l](a,s)),\"there\"===l&&\"s\"===u&&(c=be(a,s)),c?(c=fe(c,e),q(n,[i,s],c),he(n[i],e,s,c.length)):de.test(a[s].normal)?(c=se(a,s),c&&(c=fe(c,e),q(n,[i,s],c),r.one.setTag(c,\"NumberRange\",t),c[2]&&c[2].tags.has(\"Time\")&&r.one.setTag([c[0]],\"Time\",t,null,\"time-range\"),he(n[i],e,s,c.length))):(c=ue(a,s,t),c&&(c=fe(c,e),q(n,[i,s],c),r.one.setTag([c[1]],\"Unit\",t,null,\"contraction-unit\")))}}))}};const ve={model:U,compute:ye,hooks:[\"contractions\"]},we=function(e){const t=e.world,{model:n,methods:a}=e.world,r=a.one.setTag,{frozenLex:o}=n.one,i=n.one._multiCache||{};e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const a=e[n],s=a.machine||a.normal;if(void 0!==i[s]&&e[n+1]){for(let a=n+i[s]-1;a>n;a-=1){const i=e.slice(n,a+1),s=i.map((e=>e.machine||e.normal)).join(\" \");!0!==o.hasOwnProperty(s)||(r(i,o[s],t,!1,\"1-frozen-multi-lexicon\"),i.forEach((e=>e.frozen=!0)))}}void 0!==o[s]&&o.hasOwnProperty(s)&&(r([a],o[s],t,!1,\"1-freeze-lexicon\"),a.frozen=!0)}}))};const ke=e=>\"\u001b[34m\"+e+\"\u001b[0m\",Pe=e=>\"\u001b[3m\u001b[2m\"+e+\"\u001b[0m\",Ae=function(e){e.docs.forEach((e=>{console.log(ke(\"\\n  ┌─────────\")),e.forEach((e=>{let t=`  ${Pe(\"│\")}  `;const n=e.implicit||e.text||\"-\";!0===e.frozen?t+=`${ke(n)} ❄️`:t+=Pe(n),console.log(t)}))}))};var Ce={compute:{frozen:we,freeze:we,unfreeze:function(e){return e.docs.forEach((e=>{e.forEach((e=>{delete e.frozen}))})),e}},mutate:e=>{const t=e.methods.one;t.termMethods.isFrozen=e=>!0===e.frozen,t.debug.freeze=Ae,t.debug.frozen=Ae},api:function(e){e.prototype.freeze=function(){return this.docs.forEach((e=>{e.forEach((e=>{e.frozen=!0}))})),this},e.prototype.unfreeze=function(){this.compute(\"unfreeze\")},e.prototype.isFrozen=function(){return this.match(\"@isFrozen+\")}},hooks:[\"freeze\"]};const je=function(e,t,n){const{model:a,methods:r}=n,o=r.one.setTag,i=a.one._multiCache||{},{lexicon:s}=a.one||{},l=e[t],u=l.machine||l.normal;if(void 0!==i[u]&&e[t+1]){for(let a=t+i[u]-1;a>t;a-=1){const r=e.slice(t,a+1);if(r.length<=1)return!1;const i=r.map((e=>e.machine||e.normal)).join(\" \");if(!0===s.hasOwnProperty(i)){const e=s[i];return o(r,e,n,!1,\"1-multi-lexicon\"),!e||2!==e.length||\"PhrasalVerb\"!==e[0]&&\"PhrasalVerb\"!==e[1]||o([r[1]],\"Particle\",n,!1,\"1-phrasal-particle\"),!0}}return!1}return null},Ne=/^(under|over|mis|re|un|dis|semi|pre|post)-?/,Ie=new Set([\"Verb\",\"Infinitive\",\"PastTense\",\"Gerund\",\"PresentTense\",\"Adjective\",\"Participle\"]),De=function(e,t,n){const{model:a,methods:r}=n,o=r.one.setTag,{lexicon:i}=a.one,s=e[t],l=s.machine||s.normal;if(void 0!==i[l]&&i.hasOwnProperty(l))return o([s],i[l],n,!1,\"1-lexicon\"),!0;if(s.alias){const e=s.alias.find((e=>i.hasOwnProperty(e)));if(e)return o([s],i[e],n,!1,\"1-lexicon-alias\"),!0}if(!0===Ne.test(l)){const e=l.replace(Ne,\"\");if(i.hasOwnProperty(e)&&e.length>3&&Ie.has(i[e]))return o([s],i[e],n,!1,\"1-lexicon-prefix\"),!0}return null};var He={lexicon:function(e){const t=e.world;e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1)if(0===e[n].tags.size){let a=null;a=a||je(e,n,t),a=a||De(e,n,t)}}))}};var Te={one:{expandLexicon:function(e){const t={},n={};return Object.keys(e).forEach((a=>{const r=e[a],o=(a=(a=a.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);o.length>1&&(void 0===n[o[0]]||o.length>n[o[0]])&&(n[o[0]]=o.length),t[a]=t[a]||r})),delete t[\"\"],delete t.null,delete t[\" \"],{lex:t,_multi:n}}}};var Ge={addWords:function(e,t=!1){const n=this.world(),{methods:a,model:r}=n;if(!e)return;if(Object.keys(e).forEach((t=>{\"string\"==typeof e[t]&&e[t].startsWith(\"#\")&&(e[t]=e[t].replace(/^#/,\"\"))})),!0===t){const{lex:t,_multi:o}=a.one.expandLexicon(e,n);return Object.assign(r.one._multiCache,o),void Object.assign(r.one.frozenLex,t)}if(a.two.expandLexicon){const{lex:t,_multi:o}=a.two.expandLexicon(e,n);Object.assign(r.one.lexicon,t),Object.assign(r.one._multiCache,o)}const{lex:o,_multi:i}=a.one.expandLexicon(e,n);Object.assign(r.one.lexicon,o),Object.assign(r.one._multiCache,i)}};var xe={model:{one:{lexicon:{},_multiCache:{},frozenLex:{}}},methods:Te,compute:He,lib:Ge,hooks:[\"lexicon\"]};const Ee=function(e,t){const n=[{}],a=[null],r=[0],o=[];let i=0;e.forEach((function(e){let r=0;const o=function(e,t){const{methods:n,model:a}=t,r=n.one.tokenize.splitTerms(e,a).map((e=>n.one.tokenize.splitWhitespace(e,a)));return r.map((e=>e.text.toLowerCase()))}(e,t);for(let e=0;e<o.length;e++){const t=o[e];n[r]&&n[r].hasOwnProperty(t)?r=n[r][t]:(i++,n[r][t]=i,n[i]={},r=i,a[i]=null)}a[r]=[o.length]}));for(const e in n[0])i=n[0][e],r[i]=0,o.push(i);for(;o.length;){const e=o.shift(),t=Object.keys(n[e]);for(let s=0;s<t.length;s+=1){const l=t[s],u=n[e][l];for(o.push(u),i=r[e];i>0&&!n[i].hasOwnProperty(l);)i=r[i];if(n.hasOwnProperty(i)){const e=n[i][l];r[u]=e,a[e]&&(a[u]=a[u]||[],a[u]=a[u].concat(a[e]))}else r[u]=0}}return{goNext:n,endAs:a,failTo:r}},Fe=function(e,t,n){let a=0;const r=[];for(let o=0;o<e.length;o++){const i=e[o][n.form]||e[o].normal;for(;a>0&&(void 0===t.goNext[a]||!t.goNext[a].hasOwnProperty(i));)a=t.failTo[a]||0;if(t.goNext[a].hasOwnProperty(i)&&(a=t.goNext[a][i],t.endAs[a])){const n=t.endAs[a];for(let t=0;t<n.length;t++){const a=n[t],i=e[o-a+1],[s,l]=i.index;r.push([s,l,l+a,i.id])}}}return r},Oe=function(e,t){for(let n=0;n<e.length;n+=1)if(!0===t.has(e[n]))return!1;return!0};const ze=(e,t)=>{for(let n=e.length-1;n>=0;n-=1)if(e[n]!==t)return e=e.slice(0,n+1);return e},Ve={buildTrie:function(e){return function(e){return e.goNext=e.goNext.map((e=>{if(0!==Object.keys(e).length)return e})),e.goNext=ze(e.goNext,void 0),e.failTo=ze(e.failTo,0),e.endAs=ze(e.endAs,null),e}(Ee(e,this.world()))}};Ve.compile=Ve.buildTrie;var Be={api:function(e){e.prototype.lookup=function(e,t={}){if(!e)return this.none();\"string\"==typeof e&&(e=[e]);var n;let a=function(e,t,n){let a=[];n.form=n.form||\"normal\";const r=e.docs;if(!t.goNext||!t.goNext[0])return console.error(\"Compromise invalid lookup trie\"),e.none();const o=Object.keys(t.goNext[0]);for(let i=0;i<r.length;i++){if(e._cache&&e._cache[i]&&!0===Oe(o,e._cache[i]))continue;const s=r[i],l=Fe(s,t,n);l.length>0&&(a=a.concat(l))}return e.update(a)}(this,(n=e,\"[object Object]\"===Object.prototype.toString.call(n)?e:Ee(e,this.world)),t);return a=a.settle(),a}},lib:Ve};const Se=function(e,t){return t?(e.forEach((e=>{const n=e[0];t[n]&&(e[0]=t[n][0],e[1]+=t[n][1],e[2]+=t[n][1])})),e):e},Ke=function(e,t){let{ptrs:n}=e;const{byGroup:a}=e;return n=Se(n,t),Object.keys(a).forEach((e=>{a[e]=Se(a[e],t)})),{ptrs:n,byGroup:a}},$e=function(e,t,n){const a=n.methods.one;return\"number\"==typeof e&&(e=String(e)),\"string\"==typeof e&&(e=a.killUnicode(e,n),e=a.parseMatch(e,t,n)),e},Le=e=>\"[object Object]\"===Object.prototype.toString.call(e),Me=e=>e&&Le(e)&&!0===e.isView,Je=e=>e&&Le(e)&&!0===e.isNet;var We={matchOne:function(e,t,n){const a=this.methods.one;if(Me(e))return this.intersection(e).eq(0);if(Je(e))return this.sweep(e,{tagger:!1,matchOne:!0}).view;const r={regs:e=$e(e,n,this.world),group:t,justOne:!0},o=a.match(this.docs,r,this._cache),{ptrs:i,byGroup:s}=Ke(o,this.fullPointer),l=this.toView(i);return l._groups=s,l},match:function(e,t,n){const a=this.methods.one;if(Me(e))return this.intersection(e);if(Je(e))return this.sweep(e,{tagger:!1}).view.settle();const r={regs:e=$e(e,n,this.world),group:t},o=a.match(this.docs,r,this._cache),{ptrs:i,byGroup:s}=Ke(o,this.fullPointer),l=this.toView(i);return l._groups=s,l},has:function(e,t,n){const a=this.methods.one;if(Me(e)){return this.intersection(e).fullPointer.length>0}if(Je(e))return this.sweep(e,{tagger:!1}).view.found;const r={regs:e=$e(e,n,this.world),group:t,justOne:!0};return a.match(this.docs,r,this._cache).ptrs.length>0},if:function(e,t,n){const a=this.methods.one;if(Me(e))return this.filter((t=>t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.if(t)}const r={regs:e=$e(e,n,this.world),group:t,justOne:!0};let o=this.fullPointer;const i=this._cache||[];o=o.filter(((e,t)=>{const n=this.update([e]);return a.match(n.docs,r,i[t]).ptrs.length>0}));const s=this.update(o);return this._cache&&(s._cache=o.map((e=>i[e[0]]))),s},ifNo:function(e,t,n){const{methods:a}=this,r=a.one;if(Me(e))return this.filter((t=>!t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.ifNo(t)}e=$e(e,n,this.world);const o=this._cache||[],i=this.filter(((n,a)=>{const i={regs:e,group:t,justOne:!0};return 0===r.match(n.docs,i,o[a]).ptrs.length}));return this._cache&&(i._cache=i.ptrs.map((e=>o[e[0]]))),i}};var Ue={before:function(e,t,n){const{indexN:a}=this.methods.one.pointer,r=[],o=a(this.fullPointer);Object.keys(o).forEach((e=>{const t=o[e].sort(((e,t)=>e[1]>t[1]?1:-1))[0];t[1]>0&&r.push([t[0],0,t[1]])}));const i=this.toView(r);return e?i.match(e,t,n):i},after:function(e,t,n){const{indexN:a}=this.methods.one.pointer,r=[],o=a(this.fullPointer),i=this.document;Object.keys(o).forEach((e=>{const t=o[e].sort(((e,t)=>e[1]>t[1]?-1:1))[0],[n,,a]=t;a<i[n].length&&r.push([n,a,i[n].length])}));const s=this.toView(r);return e?s.match(e,t,n):s},growLeft:function(e,t,n){\"string\"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[e.length-1].end=!0;const a=this.fullPointer;return this.forEach(((n,r)=>{const o=n.before(e,t);if(o.found){const e=o.terms();a[r][1]-=e.length,a[r][3]=e.docs[0][0].id}})),this.update(a)},growRight:function(e,t,n){\"string\"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[0].start=!0;const a=this.fullPointer;return this.forEach(((n,r)=>{const o=n.after(e,t);if(o.found){const e=o.terms();a[r][2]+=e.length,a[r][4]=null}})),this.update(a)},grow:function(e,t,n){return this.growRight(e,t,n).growLeft(e,t,n)}};const qe=function(e,t){return[e[0],e[1],t[2]]},Re=(e,t,n)=>{return\"string\"==typeof e||(a=e,\"[object Array]\"===Object.prototype.toString.call(a))?t.match(e,n):e||t.none();var a},Qe=function(e,t){const[n,a,r]=e;return t.document[n]&&t.document[n][a]&&(e[3]=e[3]||t.document[n][a].id,t.document[n][r-1]&&(e[4]=e[4]||t.document[n][r-1].id)),e},Ze={splitOn:function(e,t){const{splitAll:n}=this.methods.one.pointer,a=Re(e,this,t).fullPointer,r=n(this.fullPointer,a);let o=[];return r.forEach((e=>{o.push(e.passthrough),o.push(e.before),o.push(e.match),o.push(e.after)})),o=o.filter((e=>e)),o=o.map((e=>Qe(e,this))),this.update(o)},splitBefore:function(e,t){const{splitAll:n}=this.methods.one.pointer,a=Re(e,this,t).fullPointer,r=n(this.fullPointer,a);for(let e=0;e<r.length;e+=1)!r[e].after&&r[e+1]&&r[e+1].before&&r[e].match&&r[e].match[0]===r[e+1].before[0]&&(r[e].after=r[e+1].before,delete r[e+1].before);let o=[];return r.forEach((e=>{o.push(e.passthrough),o.push(e.before),e.match&&e.after?o.push(qe(e.match,e.after)):o.push(e.match)})),o=o.filter((e=>e)),o=o.map((e=>Qe(e,this))),this.update(o)},splitAfter:function(e,t){const{splitAll:n}=this.methods.one.pointer,a=Re(e,this,t).fullPointer,r=n(this.fullPointer,a);let o=[];return r.forEach((e=>{o.push(e.passthrough),e.before&&e.match?o.push(qe(e.before,e.match)):(o.push(e.before),o.push(e.match)),o.push(e.after)})),o=o.filter((e=>e)),o=o.map((e=>Qe(e,this))),this.update(o)}};Ze.split=Ze.splitAfter;const Xe=function(e,t){return!(!e||!t)&&(e[0]===t[0]&&e[2]===t[1])},_e=function(e,t,n){const a=e.world,r=a.methods.one.parseMatch;n=n||\"^.\";const o=r(t=t||\".$\",{},a),i=r(n,{},a);o[o.length-1].end=!0,i[0].start=!0;const s=e.fullPointer,l=[s[0]];for(let t=1;t<s.length;t+=1){const n=l[l.length-1],a=s[t],r=e.update([n]),u=e.update([a]);Xe(n,a)&&r.has(o)&&u.has(i)?l[l.length-1]=[n[0],n[1],a[2],n[3],a[4]]:l.push(a)}return e.update(l)},Ye={joinIf:function(e,t){return _e(this,e,t)},join:function(){return _e(this)}},et=Object.assign({},We,Ue,Ze,Ye);et.lookBehind=et.before,et.lookBefore=et.before,et.lookAhead=et.after,et.lookAfter=et.after,et.notIf=et.ifNo;const tt=/(?:^|\\s)([![^]*(?:<[^<]*>)?\\/.*?[^\\\\/]\\/[?\\]+*$~]*)(?:\\s|$)/,nt=/([!~[^]*(?:<[^<]*>)?\\([^)]+[^\\\\)]\\)[?\\]+*$~]*)(?:\\s|$)/,at=/ /g,rt=e=>/^[![^]*(<[^<]*>)?\\//.test(e)&&/\\/[?\\]+*$~]*$/.test(e),ot=function(e){return e=(e=e.map((e=>e.trim()))).filter((e=>e))},it=/\\{([0-9]+)?(, *[0-9]*)?\\}/,st=/&&/,lt=new RegExp(/^<\\s*(\\S+)\\s*>/),ut=e=>e.charAt(0).toUpperCase()+e.substring(1),ct=e=>e.charAt(e.length-1),dt=e=>e.charAt(0),ht=e=>e.substring(1),gt=e=>e.substring(0,e.length-1),mt=function(e){return e=ht(e),e=gt(e)},pt=function(e,t){const n={};for(let a=0;a<2;a+=1){if(\"$\"===ct(e)&&(n.end=!0,e=gt(e)),\"^\"===dt(e)&&(n.start=!0,e=ht(e)),\"?\"===ct(e)&&(n.optional=!0,e=gt(e)),(\"[\"===dt(e)||\"]\"===ct(e))&&(n.group=null,\"[\"===dt(e)&&(n.groupStart=!0),\"]\"===ct(e)&&(n.groupEnd=!0),e=(e=e.replace(/^\\[/,\"\")).replace(/\\]$/,\"\"),\"<\"===dt(e))){const t=lt.exec(e);t.length>=2&&(n.group=t[1],e=e.replace(t[0],\"\"))}if(\"+\"===ct(e)&&(n.greedy=!0,e=gt(e)),\"*\"!==e&&\"*\"===ct(e)&&\"\\\\*\"!==e&&(n.greedy=!0,e=gt(e)),\"!\"===dt(e)&&(n.negative=!0,e=ht(e)),\"~\"===dt(e)&&\"~\"===ct(e)&&e.length>2&&(e=mt(e),n.fuzzy=!0,n.min=t.fuzzy||.85,!1===/\\(/.test(e)))return n.word=e,n;if(\"/\"===dt(e)&&\"/\"===ct(e))return e=mt(e),t.caseSensitive&&(n.use=\"text\"),n.regex=new RegExp(e),n;if(!0===it.test(e)&&(e=e.replace(it,((e,t,a)=>(void 0===a?(n.min=Number(t),n.max=Number(t)):(a=a.replace(/, */,\"\"),void 0===t?(n.min=0,n.max=Number(a)):(n.min=Number(t),n.max=Number(a||999))),n.greedy=!0,n.min||(n.optional=!0),\"\")))),\"(\"===dt(e)&&\")\"===ct(e)){st.test(e)?(n.choices=e.split(st),n.operator=\"and\"):(n.choices=e.split(\"|\"),n.operator=\"or\"),n.choices[0]=ht(n.choices[0]);const a=n.choices.length-1;n.choices[a]=gt(n.choices[a]),n.choices=n.choices.map((e=>e.trim())),n.choices=n.choices.filter((e=>e)),n.choices=n.choices.map((e=>e.split(/ /g).map((e=>pt(e,t))))),e=\"\"}if(\"{\"===dt(e)&&\"}\"===ct(e)){if(e=mt(e),n.root=e,/\\//.test(e)){const e=n.root.split(/\\//);n.root=e[0],n.pos=e[1],\"adj\"===n.pos&&(n.pos=\"Adjective\"),n.pos=n.pos.charAt(0).toUpperCase()+n.pos.substr(1).toLowerCase(),void 0!==e[2]&&(n.sense=e[2])}return n}if(\"<\"===dt(e)&&\">\"===ct(e))return e=mt(e),n.chunk=ut(e),n.greedy=!0,n;if(\"%\"===dt(e)&&\"%\"===ct(e))return e=mt(e),n.switch=e,n}return\"#\"===dt(e)?(n.tag=ht(e),n.tag=ut(n.tag),n):\"@\"===dt(e)?(n.method=ht(e),n):\".\"===e?(n.anything=!0,n):\"*\"===e?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(e&&(e=(e=e.replace(\"\\\\*\",\"*\")).replace(\"\\\\.\",\".\"),t.caseSensitive?n.use=\"text\":e=e.toLowerCase(),n.word=e),n)},ft=/[a-z0-9][-–—][a-z]/i,bt=function(e,t){const{all:n}=t.methods.two.transform.verb||{},a=e.root;return n?n(a,t.model):[]},yt=function(e,t){const{all:n}=t.methods.two.transform.noun||{};return n?n(e.root,t.model):[e.root]},vt=function(e,t){const{all:n}=t.methods.two.transform.adjective||{};return n?n(e.root,t.model):[e.root]},wt=function(e){return e=function(e){let t=0,n=null;for(let a=0;a<e.length;a++){const r=e[a];!0===r.groupStart&&(n=r.group,null===n&&(n=String(t),t+=1)),null!==n&&(r.group=n),!0===r.groupEnd&&(n=null)}return e}(e),e=function(e){return e.map((e=>(e.fuzzy&&e.choices&&e.choices.forEach((t=>{1===t.length&&t[0].word&&(t[0].fuzzy=!0,t[0].min=e.min)})),e)))}(e=e.map((e=>{if(void 0!==e.choices){if(\"or\"!==e.operator)return e;if(!0===e.fuzzy)return e;!0===e.choices.every((e=>{if(1!==e.length)return!1;const t=e[0];return!0!==t.fuzzy&&!t.start&&!t.end&&void 0!==t.word&&!0!==t.negative&&!0!==t.optional&&!0!==t.method}))&&(e.fastOr=new Set,e.choices.forEach((t=>{e.fastOr.add(t[0].word)})),delete e.choices)}return e}))),e},kt=function(e,t){for(const n of t)if(e.has(n))return!0;return!1},Pt=function(e,t){for(let n=0;n<e.length;n+=1){const a=e[n];if(!0!==a.optional&&!0!==a.negative&&!0!==a.fuzzy){if(void 0!==a.word&&!1===t.has(a.word))return!0;if(void 0!==a.tag&&!1===t.has(\"#\"+a.tag))return!0;if(a.fastOr&&!1===kt(a.fastOr,t))return!1}}return!1},At=function(e,t,n=3){if(e===t)return 1;if(e.length<n||t.length<n)return 0;const a=function(e,t){const n=e.length,a=t.length;if(0===n)return a;if(0===a)return n;const r=(a>n?a:n)+1;if(Math.abs(n-a)>(r||100))return r||100;const o=[];for(let e=0;e<r;e++)o[e]=[e],o[e].length=r;for(let e=0;e<r;e++)o[0][e]=e;let i,s,l,u,c,d;for(let r=1;r<=n;++r)for(s=e[r-1],i=1;i<=a;++i){if(r===i&&o[r][i]>4)return n;l=t[i-1],u=s===l?0:1,c=o[r-1][i]+1,(d=o[r][i-1]+1)<c&&(c=d),(d=o[r-1][i-1]+u)<c&&(c=d);const a=r>1&&i>1&&s===t[i-2]&&e[r-2]===l&&(d=o[r-2][i-2]+u)<c;o[r][i]=a?d:c}return o[n][a]}(e,t),r=Math.max(e.length,t.length);return 1-(0===r?0:a/r)},Ct=/([\\u0022\\uFF02\\u0027\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F])/,jt=/([\\u0022\\uFF02\\u0027\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4])/,Nt=/^[-–—]$/,It=/ [-–—]{1,3} /,Dt=(e,t)=>-1!==e.post.indexOf(t),Ht={hasQuote:e=>Ct.test(e.pre)||jt.test(e.post),hasComma:e=>Dt(e,\",\"),hasPeriod:e=>!0===Dt(e,\".\")&&!1===Dt(e,\"...\"),hasExclamation:e=>Dt(e,\"!\"),hasQuestionMark:e=>Dt(e,\"?\")||Dt(e,\"¿\"),hasEllipses:e=>Dt(e,\"..\")||Dt(e,\"…\"),hasSemicolon:e=>Dt(e,\";\"),hasColon:e=>Dt(e,\":\"),hasSlash:e=>/\\//.test(e.text),hasHyphen:e=>Nt.test(e.post)||Nt.test(e.pre),hasDash:e=>It.test(e.post)||It.test(e.pre),hasContraction:e=>Boolean(e.implicit),isAcronym:e=>e.tags.has(\"Acronym\"),isKnown:e=>e.tags.size>0,isTitleCase:e=>/^\\p{Lu}[a-z'\\u00C0-\\u00FF]/u.test(e.text),isUpperCase:e=>/^\\p{Lu}+$/u.test(e.text)};Ht.hasQuotation=Ht.hasQuote;let Tt=function(){};Tt=function(e,t,n,a){const r=function(e,t,n,a){if(!0===t.anything)return!0;if(!0===t.start&&0!==n)return!1;if(!0===t.end&&n!==a-1)return!1;if(void 0!==t.id&&t.id===e.id)return!0;if(void 0!==t.word){if(t.use)return t.word===e[t.use];if(null!==e.machine&&e.machine===t.word)return!0;if(void 0!==e.alias&&e.alias.hasOwnProperty(t.word))return!0;if(!0===t.fuzzy){if(t.word===e.root)return!0;if(At(t.word,e.normal)>=t.min)return!0}return!(!e.alias||!e.alias.some((e=>e===t.word)))||t.word===e.text||t.word===e.normal}if(void 0!==t.tag)return!0===e.tags.has(t.tag);if(void 0!==t.method)return\"function\"==typeof Ht[t.method]&&!0===Ht[t.method](e);if(void 0!==t.pre)return e.pre&&e.pre.includes(t.pre);if(void 0!==t.post)return e.post&&e.post.includes(t.post);if(void 0!==t.regex){let n=e.normal;return t.use&&(n=e[t.use]),t.regex.test(n)}if(void 0!==t.chunk)return e.chunk===t.chunk;if(void 0!==t.switch)return e.switch===t.switch;if(void 0!==t.machine)return e.normal===t.machine||e.machine===t.machine||e.root===t.machine;if(void 0!==t.sense)return e.sense===t.sense;if(void 0!==t.fastOr){if(t.pos&&!e.tags.has(t.pos))return null;const n=e.root||e.implicit||e.machine||e.normal;return t.fastOr.has(n)||t.fastOr.has(e.text)}return void 0!==t.choices&&(\"and\"===t.operator?t.choices.every((t=>Tt(e,t,n,a))):t.choices.some((t=>Tt(e,t,n,a))))}(e,t,n,a);return!0===t.negative?!r:r};const Gt=function(e,t){if(!0===e.end&&!0===e.greedy&&t.start_i+t.t<t.phrase_length-1){const n=Object.assign({},e,{end:!1});if(!0===Tt(t.terms[t.t],n,t.start_i+t.t,t.phrase_length))return!0}return!1},xt=function(e,t){return e.groups[e.inGroup]||(e.groups[e.inGroup]={start:t,length:0}),e.groups[e.inGroup]},Et=function(e){const{regs:t}=e,n=t[e.r],a=function(e,t){let n=e.t;if(!t)return e.terms.length;for(;n<e.terms.length;n+=1)if(!0===Tt(e.terms[n],t,e.start_i+n,e.phrase_length))return n;return null}(e,t[e.r+1]);if(null===a||0===a)return null;if(void 0!==n.min&&a-e.t<n.min)return null;if(void 0!==n.max&&a-e.t>n.max)return e.t=e.t+n.max,!0;if(!0===e.hasGroup){xt(e,e.t).length=a-e.t}return e.t=a,!0},Ft=function(e,t=0){const n=e.regs[e.r];let a=!1;for(let o=0;o<n.choices.length;o+=1){const i=n.choices[o];if(r=i,\"[object Array]\"!==Object.prototype.toString.call(r))return!1;if(a=i.every(((n,a)=>{let r=0;const o=e.t+a+t+r;if(void 0===e.terms[o])return!1;const i=Tt(e.terms[o],n,o+e.start_i,e.phrase_length);if(!0===i&&!0===n.greedy)for(let t=1;t<e.terms.length;t+=1){const a=e.terms[o+t];if(a){if(!0!==Tt(a,n,e.start_i+t,e.phrase_length))break;r+=1}}return t+=r,i})),a){t+=i.length;break}}var r;return a&&!0===n.greedy?Ft(e,t):t},Ot=function(e){const{regs:t}=e,n=t[e.r],a=Ft(e);if(a){if(!0===n.negative)return null;if(!0===e.hasGroup){xt(e,e.t).length+=a}if(!0===n.end){const t=e.phrase_length;if(e.t+e.start_i+a!==t)return null}return e.t+=a,!0}return!!n.optional||null},zt=function(e){const{regs:t}=e,n=t[e.r],a=function(e){let t=0;return!0===e.regs[e.r].choices.every((n=>{const a=n.every(((t,n)=>{const a=e.t+n;return void 0!==e.terms[a]&&Tt(e.terms[a],t,a,e.phrase_length)}));return!0===a&&n.length>t&&(t=n.length),a}))&&t}(e);if(a){if(!0===n.negative)return null;if(!0===e.hasGroup){xt(e,e.t).length+=a}if(!0===n.end){const t=e.phrase_length-1;if(e.t+e.start_i!==t)return null}return e.t+=a,!0}return!!n.optional||null},Vt=function(e){const{regs:t}=e,n=t[e.r],a=Object.assign({},n);a.negative=!1;if(Tt(e.terms[e.t],a,e.start_i+e.t,e.phrase_length))return!1;if(n.optional){const n=t[e.r+1];if(n){if(Tt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))e.r+=1;else if(n.optional&&t[e.r+2]){Tt(e.terms[e.t],t[e.r+2],e.start_i+e.t,e.phrase_length)&&(e.r+=2)}}}return n.greedy?function(e,t,n){let a=0;for(let r=e.t;r<e.terms.length;r+=1){let o=Tt(e.terms[r],t,e.start_i+e.t,e.phrase_length);if(o)break;if(n&&(o=Tt(e.terms[r],n,e.start_i+e.t,e.phrase_length),o))break;if(a+=1,void 0!==t.max&&a===t.max)break}return!(0===a||t.min&&t.min>a||(e.t+=a,0))}(e,a,t[e.r+1]):(e.t+=1,!0)},Bt=function(e){const{regs:t,phrase_length:n}=e,a=t[e.r];return e.t=function(e,t){const n=Object.assign({},e.regs[e.r],{start:!1,end:!1}),a=e.t;for(;e.t<e.terms.length;e.t+=1){if(t&&Tt(e.terms[e.t],t,e.start_i+e.t,e.phrase_length))return e.t;const r=e.t-a+1;if(void 0!==n.max&&r===n.max)return e.t;if(!1===Tt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))return void 0!==n.min&&r<n.min?null:e.t}return e.t}(e,t[e.r+1]),null===e.t||a.min&&a.min>e.t?null:!0!==a.end||e.start_i+e.t===n||null},St=function(e){const{regs:t}=e,n=t[e.r],a=e.terms[e.t],r=e.t;if(n.optional&&t[e.r+1]&&n.negative)return!0;if(n.optional&&t[e.r+1]&&function(e){const{regs:t}=e,n=t[e.r],a=e.terms[e.t],r=Tt(a,t[e.r+1],e.start_i+e.t,e.phrase_length);if(n.negative||r){const n=e.terms[e.t+1];n&&Tt(n,t[e.r+1],e.start_i+e.t,e.phrase_length)||(e.r+=1)}}(e),a.implicit&&e.terms[e.t+1]&&function(e){const t=e.terms[e.t],n=e.regs[e.r];if(t.implicit&&e.terms[e.t+1]){if(!e.terms[e.t+1].implicit)return;n.word===t.normal&&(e.t+=1),\"hasContraction\"===n.method&&(e.t+=1)}}(e),e.t+=1,!0===n.end&&e.t!==e.terms.length&&!0!==n.greedy)return null;if(!0===n.greedy){if(!Bt(e))return null}return!0===e.hasGroup&&function(e,t){const n=e.regs[e.r],a=xt(e,t);e.t>1&&n.greedy?a.length+=e.t-t:a.length++}(e,r),!0},Kt=function(e,t,n,a){if(0===e.length||0===t.length)return null;const r={t:0,terms:e,r:0,regs:t,groups:{},start_i:n,phrase_length:a,inGroup:null};for(;r.r<t.length;r.r+=1){const e=t[r.r];if(r.hasGroup=Boolean(e.group),!0===r.hasGroup?r.inGroup=e.group:r.inGroup=null,!r.terms[r.t]){if(!1===t.slice(r.r).some((e=>!e.optional)))break;return null}if(!0===e.anything&&!0===e.greedy){if(!Et(r))return null;continue}if(void 0!==e.choices&&\"or\"===e.operator){if(!Ot(r))return null;continue}if(void 0!==e.choices&&\"and\"===e.operator){if(!zt(r))return null;continue}if(!0===e.anything){if(e.negative&&e.anything)return null;if(!St(r))return null;continue}if(!0===Gt(e,r)){if(!St(r))return null;continue}if(e.negative){if(!Vt(r))return null;continue}if(!0!==Tt(r.terms[r.t],e,r.start_i+r.t,r.phrase_length)){if(!0!==e.optional)return null}else{if(!St(r))return null}}const o=[null,n,r.t+n];if(o[1]===o[2])return null;const i={};return Object.keys(r.groups).forEach((e=>{const t=r.groups[e],a=n+t.start;i[e]=[null,a,a+t.length]})),{pointer:o,groups:i}},$t=function(e,t){return e.pointer[0]=t,Object.keys(e.groups).forEach((n=>{e.groups[n][0]=t})),e},Lt=function(e,t,n){let a=Kt(e,t,0,e.length);return a?(a=$t(a,n),a):null},Mt={one:{termMethods:Ht,parseMatch:function(e,t,n){if(null==e||\"\"===e)return[];t=t||{},\"number\"==typeof e&&(e=String(e));let a=function(e){const t=e.split(tt);let n=[];t.forEach((e=>{rt(e)?n.push(e):n=n.concat(e.split(nt))})),n=ot(n);let a=[];return n.forEach((e=>{(e=>/^[![^]*(<[^<]*>)?\\(/.test(e)&&/\\)[?\\]+*$~]*$/.test(e))(e)||rt(e)?a.push(e):a=a.concat(e.split(at))})),a=ot(a),a}(e);return a=a.map((e=>pt(e,t))),a=function(e,t){const n=t.model.one.prefixes;for(let t=e.length-1;t>=0;t-=1){const a=e[t];if(a.word&&ft.test(a.word)){let r=a.word.split(/[-–—]/g);if(n.hasOwnProperty(r[0]))continue;r=r.filter((e=>e)).reverse(),e.splice(t,1),r.forEach((n=>{const r=Object.assign({},a);r.word=n,e.splice(t,0,r)}))}}return e}(a,n),a=function(e,t){return e.map((e=>{if(e.root)if(t.methods.two&&t.methods.two.transform){let n=[];e.pos?\"Verb\"===e.pos?n=n.concat(bt(e,t)):\"Noun\"===e.pos?n=n.concat(yt(e,t)):\"Adjective\"===e.pos&&(n=n.concat(vt(e,t))):(n=n.concat(bt(e,t)),n=n.concat(yt(e,t)),n=n.concat(vt(e,t))),n=n.filter((e=>e)),n.length>0&&(e.operator=\"or\",e.fastOr=new Set(n))}else e.machine=e.root,delete e.id,delete e.root;return e}))}(a,n),a=wt(a),a},match:function(e,t,n){n=n||[];const{regs:a,group:r,justOne:o}=t;let i=[];if(!a||0===a.length)return{ptrs:[],byGroup:{}};const s=a.filter((e=>!0!==e.optional&&!0!==e.negative)).length;e:for(let t=0;t<e.length;t+=1){const r=e[t];if(!n[t]||!Pt(a,n[t]))if(!0!==a[0].start)for(let e=0;e<r.length;e+=1){const n=r.slice(e);if(n.length<s)break;let l=Kt(n,a,e,r.length);if(l){if(l=$t(l,t),i.push(l),!0===o)break e;const n=l.pointer[2];Math.abs(n-1)>e&&(e=Math.abs(n-1))}}else{const e=Lt(r,a,t);e&&i.push(e)}}return!0===a[a.length-1].end&&(i=i.filter((t=>{const n=t.pointer[0];return e[n].length===t.pointer[2]}))),t.notIf&&(i=function(e,t,n){return e=e.filter((e=>{const[a,r,o]=e.pointer,i=n[a].slice(r,o);for(let e=0;e<i.length;e+=1){const n=i.slice(e);if(null!==Kt(n,t,e,i.length))return!1}return!0})),e}(i,t.notIf,e)),i=function(e,t){const n=[],a={};return 0===e.length||(\"number\"==typeof t&&(t=String(t)),t?e.forEach((e=>{e.groups[t]&&n.push(e.groups[t])})):e.forEach((e=>{n.push(e.pointer),Object.keys(e.groups).forEach((t=>{a[t]=a[t]||[],a[t].push(e.groups[t])}))}))),{ptrs:n,byGroup:a}}(i,r),i.ptrs.forEach((t=>{const[n,a,r]=t;t[3]=e[n][a].id,t[4]=e[n][r-1].id})),i}}};var Jt={api:function(e){Object.assign(e.prototype,et)},methods:Mt,lib:{parseMatch:function(e,t){const n=this.world(),a=n.methods.one.killUnicode;return a&&(e=a(e,n)),n.methods.one.parseMatch(e,t,n)}}};const Wt=/^\\../,Ut=/^#./,qt=function(e,t){const n={},a={};return Object.keys(t).forEach((r=>{let o=t[r];const i=function(e){let t=\"\",n=\"</span>\";return e=e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&apos;\"),Wt.test(e)?t=`<span class=\"${e.replace(/^\\./,\"\")}\"`:Ut.test(e)?t=`<span id=\"${e.replace(/^#/,\"\")}\"`:(t=`<${e}`,n=`</${e}>`),t+=\">\",{start:t,end:n}}(r);\"string\"==typeof o&&(o=e.match(o)),o.docs.forEach((e=>{if(e.every((e=>e.implicit)))return;const t=e[0].id;n[t]=n[t]||[],n[t].push(i.start);const r=e[e.length-1].id;a[r]=a[r]||[],a[r].push(i.end)}))})),{starts:n,ends:a}};var Rt={html:function(e){const{starts:t,ends:n}=qt(this,e);let a=\"\";return this.docs.forEach((e=>{for(let r=0;r<e.length;r+=1){const o=e[r];t.hasOwnProperty(o.id)&&(a+=t[o.id].join(\"\")),a+=o.pre||\"\",a+=o.text||\"\",n.hasOwnProperty(o.id)&&(a+=n[o.id].join(\"\")),a+=o.post||\"\"}})),a}};const Qt=/[,:;)\\]*.?~!\\u0022\\uFF02\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4—-]+$/,Zt=/^[(['\"*~\\uFF02\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/,Xt=/[,:;)('\"\\u201D\\]]/,_t=/^[-–—]$/,Yt=/ /,en=function(e,t,n=!0){let a=\"\";return e.forEach((e=>{let n=e.pre||\"\",r=e.post||\"\";\"some\"===t.punctuation&&(n=n.replace(Zt,\"\"),_t.test(r)&&(r=\" \"),r=r.replace(Xt,\"\"),r=r.replace(/\\?!+/,\"?\"),r=r.replace(/!+/,\"!\"),r=r.replace(/\\?+/,\"?\"),r=r.replace(/\\.{2,}/,\"\"),e.tags.has(\"Abbreviation\")&&(r=r.replace(/\\./,\"\"))),\"some\"===t.whitespace&&(n=n.replace(/\\s/,\"\"),r=r.replace(/\\s+/,\" \")),t.keepPunct||(n=n.replace(Zt,\"\"),r=\"-\"===r?\" \":r.replace(Qt,\"\"));let o=e[t.form||\"text\"]||e.normal||\"\";\"implicit\"===t.form&&(o=e.implicit||e.text),\"root\"===t.form&&e.implicit&&(o=e.root||e.implicit||e.normal),\"machine\"!==t.form&&\"implicit\"!==t.form&&\"root\"!==t.form||!e.implicit||r&&Yt.test(r)||(r+=\" \"),a+=n+o+r})),!1===n&&(a=a.trim()),!0===t.lowerCase&&(a=a.toLowerCase()),a},tn={text:{form:\"text\"},normal:{whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"normal\"},machine:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"none\",unicode:\"some\",form:\"machine\"},root:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"root\"},implicit:{form:\"implicit\"}};tn.clean=tn.normal,tn.reduced=tn.root;const nn=[];let an=0;for(;an<64;)nn[an]=0|4294967296*Math.sin(++an%Math.PI);const rn=function(e){let t,n,a,r=decodeURI(encodeURI(e))+\"\",o=r.length;const i=[t=1732584193,n=4023233417,~t,~n],s=[];for(e=--o/4+2|15,s[--e]=8*o;~o;)s[o>>2]|=r.charCodeAt(o)<<8*o--;for(an=r=0;an<e;an+=16){for(o=i;r<64;o=[a=o[3],t+((a=o[0]+[t&n|~t&a,a&t|~a&n,t^n^a,n^(t|~a)][o=r>>4]+nn[r]+~~s[an|15&[r,5*r+1,3*r+5,7*r][o]])<<(o=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*o+r++%4])|a>>>-o),t,n])t=0|o[1],n=o[2];for(r=4;r;)i[--r]+=o[r]}for(e=\"\";r<32;)e+=(i[r>>3]>>4*(1^r++)&15).toString(16);return e},on={text:!0,terms:!0},sn={case:\"none\",unicode:\"some\",form:\"machine\",punctuation:\"some\"},ln=function(e,t){return Object.assign({},e,t)},un={text:e=>en(e,{keepPunct:!0},!1),normal:e=>en(e,ln(tn.normal,{keepPunct:!0}),!1),implicit:e=>en(e,ln(tn.implicit,{keepPunct:!0}),!1),machine:e=>en(e,sn,!1),root:e=>en(e,ln(sn,{form:\"root\"}),!1),hash:e=>rn(en(e,{keepPunct:!0},!1)),offset:e=>{const t=un.text(e).length;return{index:e[0].offset.index,start:e[0].offset.start,length:t}},terms:e=>e.map((e=>{const t=Object.assign({},e);return t.tags=Array.from(e.tags),t})),confidence:(e,t,n)=>t.eq(n).confidence(),syllables:(e,t,n)=>t.eq(n).syllables(),sentence:(e,t,n)=>t.eq(n).fullSentence().text(),dirty:e=>e.some((e=>!0===e.dirty))};un.sentences=un.sentence,un.clean=un.normal,un.reduced=un.root;const cn={json:function(e){const t=(n=this,\"string\"==typeof(a=(a=e)||{})&&(a={}),(a=Object.assign({},on,a)).offset&&n.compute(\"offset\"),n.docs.map(((e,t)=>{const r={};return Object.keys(a).forEach((o=>{a[o]&&un[o]&&(r[o]=un[o](e,n,t))})),r})));var n,a;return\"number\"==typeof e?t[e]:t}};cn.data=cn.json;const dn=function(e){const t=e.pre||\"\",n=e.post||\"\";return t+e.text+n},hn=function(e,t){const n=function(e,t){const n={};return Object.keys(t).forEach((a=>{e.match(a).fullPointer.forEach((e=>{n[e[3]]={fn:t[a],end:e[2]}}))})),n}(e,t);let a=\"\";return e.docs.forEach(((t,r)=>{for(let o=0;o<t.length;o+=1){const i=t[o];if(n.hasOwnProperty(i.id)){const{fn:s,end:l}=n[i.id],u=e.update([[r,o,l]]);a+=t[o].pre||\"\",a+=s(u),o=l-1,a+=t[o].post||\"\"}else a+=dn(i)}})),a},gn={debug:function(e){const t=this.methods.one.debug||{};return e&&t.hasOwnProperty(e)?(t[e](this),this):\"undefined\"!=typeof window&&window.document?(t.clientSide(this),this):(t.tags(this),this)},out:function(e){if(t=e,\"[object Object]\"===Object.prototype.toString.call(t))return hn(this,e);var t;if(\"text\"===e)return this.text();if(\"normal\"===e)return this.text(\"normal\");if(\"root\"===e)return this.text(\"root\");if(\"machine\"===e||\"reduced\"===e)return this.text(\"machine\");if(\"hash\"===e||\"md5\"===e)return rn(this.text());if(\"json\"===e)return this.json();if(\"offset\"===e||\"offsets\"===e)return this.compute(\"offset\"),this.json({offset:!0});if(\"array\"===e){const e=this.docs.map((e=>e.reduce(((e,t)=>e+t.pre+t.text+t.post),\"\").trim()));return e.filter((e=>e))}if(\"freq\"===e||\"frequency\"===e||\"topk\"===e)return function(e){const t={};e.forEach((e=>{t[e]=t[e]||0,t[e]+=1}));const n=Object.keys(t).map((e=>({normal:e,count:t[e]})));return n.sort(((e,t)=>e.count>t.count?-1:0))}(this.json({normal:!0}).map((e=>e.normal)));if(\"terms\"===e){let e=[];return this.docs.forEach((t=>{let n=t.map((e=>e.text));n=n.filter((e=>e)),e=e.concat(n)})),e}return\"tags\"===e?this.docs.map((e=>e.reduce(((e,t)=>(e[t.implicit||t.normal]=Array.from(t.tags),e)),{}))):\"debug\"===e?this.debug():this.text()},wrap:function(e){return hn(this,e)}};var mn={text:function(e){let t={};var n;if(e&&\"string\"==typeof e&&tn.hasOwnProperty(e)?t=Object.assign({},tn[e]):e&&(n=e,\"[object Object]\"===Object.prototype.toString.call(n))&&(t=Object.assign({},e)),void 0!==t.keepSpace||this.isFull()||(t.keepSpace=!1),void 0===t.keepEndPunct&&this.pointer){const e=this.pointer[0];e&&e[1]?t.keepEndPunct=!1:t.keepEndPunct=!0}return void 0===t.keepPunct&&(t.keepPunct=!0),void 0===t.keepSpace&&(t.keepSpace=!0),function(e,t){let n=\"\";if(!e||!e[0]||!e[0][0])return n;for(let a=0;a<e.length;a+=1)n+=en(e[a],t,!0);if(t.keepSpace||(n=n.trim()),!1===t.keepEndPunct){e[0][0].tags.has(\"Emoticon\")||(n=n.replace(Zt,\"\"));const t=e[e.length-1];t[t.length-1].tags.has(\"Emoticon\")||(n=n.replace(Qt,\"\")),n.endsWith(\"'\")&&!n.endsWith(\"s'\")&&(n=n.replace(/'/,\"\"))}return!0===t.cleanWhitespace&&(n=n.trim()),n}(this.docs,t)}};const pn=Object.assign({},gn,mn,cn,Rt),fn=\"\u001b[0m\",bn={green:e=>\"\u001b[32m\"+e+fn,red:e=>\"\u001b[31m\"+e+fn,blue:e=>\"\u001b[34m\"+e+fn,magenta:e=>\"\u001b[35m\"+e+fn,cyan:e=>\"\u001b[36m\"+e+fn,yellow:e=>\"\u001b[33m\"+e+fn,black:e=>\"\u001b[30m\"+e+fn,dim:e=>\"\u001b[2m\"+e+fn,i:e=>\"\u001b[3m\"+e+fn},yn={tags:function(e){const{docs:t,model:n}=e;0===t.length&&console.log(bn.blue(\"\\n     ──────\")),t.forEach((t=>{console.log(bn.blue(\"\\n  ┌─────────\")),t.forEach((t=>{const a=[...t.tags||[]];let r=t.text||\"-\";t.sense&&(r=`{${t.normal}/${t.sense}}`),t.implicit&&(r=\"[\"+t.implicit+\"]\"),r=bn.yellow(r);let o=\"'\"+r+\"'\";if(t.reference){const n=e.update([t.reference]).text(\"normal\");o+=` - ${bn.dim(bn.i(\"[\"+n+\"]\"))}`}o=o.padEnd(18);const i=bn.blue(\"  │ \")+bn.i(o)+\"  - \"+function(e,t){return t.one.tagSet&&(e=e.map((e=>{if(!t.one.tagSet.hasOwnProperty(e))return e;const n=t.one.tagSet[e].color||\"blue\";return bn[n](e)}))),e.join(\", \")}(a,n);console.log(i)}))})),console.log(\"\\n\")},clientSide:function(e){console.log(\"%c -=-=- \",\"background-color:#6699cc;\"),e.forEach((e=>{console.groupCollapsed(e.text());const t=e.docs[0].map((e=>{let t=e.text||\"-\";e.implicit&&(t=\"[\"+e.implicit+\"]\");return{text:t,tags:\"[\"+Array.from(e.tags).join(\", \")+\"]\"}}));console.table(t,[\"text\",\"tags\"]),console.groupEnd()}))},chunks:function(e){const{docs:t}=e;console.log(\"\"),t.forEach((e=>{const t=[];e.forEach((e=>{\"Noun\"===e.chunk?t.push(bn.blue(e.implicit||e.normal)):\"Verb\"===e.chunk?t.push(bn.green(e.implicit||e.normal)):\"Adjective\"===e.chunk?t.push(bn.yellow(e.implicit||e.normal)):\"Pivot\"===e.chunk?t.push(bn.red(e.implicit||e.normal)):t.push(e.implicit||e.normal)})),console.log(t.join(\" \"),\"\\n\")})),console.log(\"\\n\")},highlight:function(e){if(!e.found)return;const t={};e.fullPointer.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),Object.keys(t).forEach((n=>{let a=e.update([[Number(n)]]).text();e.update(t[n]).json({offset:!0}).forEach(((e,t)=>{a=function(e,t,n){const a=((e,t,n)=>{const a=9*n,r=t.start+a,o=r+t.length;return[e.substring(0,r),e.substring(r,o),e.substring(o,e.length)]})(e,t,n);return`${a[0]}${bn.blue(a[1])}${a[2]}`}(a,e.offset,t)})),console.log(a)})),console.log(\"\\n\")}};var vn={api:function(e){Object.assign(e.prototype,pn)},methods:{one:{hash:rn,debug:yn}}};const wn=function(e,t){if(e[0]!==t[0])return!1;const[,n,a]=e,[,r,o]=t;return n<=r&&a>r||r<=n&&o>n},kn=function(e){const t={};return e.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),t},Pn=function(e,t){const n=kn(t),a=[];return e.forEach((e=>{const[t]=e;let r=n[t]||[];if(r=r.filter((t=>function(e,t){return e[1]<=t[1]&&t[2]<=e[2]}(e,t))),0===r.length)return void a.push({passthrough:e});r=r.sort(((e,t)=>e[1]-t[1]));let o=e;r.forEach(((e,t)=>{const n=function(e,t){const[n,a]=e,r=t[1],o=t[2],i={};if(a<r){const t=r<e[2]?r:e[2];i.before=[n,a,t]}return i.match=t,e[2]>o&&(i.after=[n,o,e[2]]),i}(o,e);r[t+1]?(a.push({before:n.before,match:n.match}),n.after&&(o=n.after)):a.push(n)}))})),a};var An={one:{termList:function(e){const t=[];for(let n=0;n<e.length;n+=1)for(let a=0;a<e[n].length;a+=1)t.push(e[n][a]);return t},getDoc:function(e,t){let n=[];return e.forEach(((a,r)=>{if(!a)return;let[o,i,s,l,u]=a,c=t[o]||[];if(void 0===i&&(i=0),void 0===s&&(s=c.length),!l||c[i]&&c[i].id===l)c=c.slice(i,s);else{const n=function(e,t,n){for(let a=0;a<20;a+=1){if(t[n-a]){const r=t[n-a].findIndex((t=>t.id===e));if(-1!==r)return[n-a,r]}if(t[n+a]){const r=t[n+a].findIndex((t=>t.id===e));if(-1!==r)return[n+a,r]}}return null}(l,t,o);if(null!==n){const a=s-i;c=t[n[0]].slice(n[1],n[1]+a);const o=c[0]?c[0].id:null;e[r]=[n[0],n[1],n[1]+a,o]}}0!==c.length&&i!==s&&(u&&c[c.length-1].id!==u&&(c=function(e,t){const[n,a,,,r]=e,o=t[n],i=o.findIndex((e=>e.id===r));return-1===i?(e[2]=t[n].length,e[4]=o.length?o[o.length-1].id:null):e[2]=i,t[n].slice(a,e[2]+1)}(a,t)),n.push(c))})),n=n.filter((e=>e.length>0)),n},pointer:{indexN:kn,splitAll:Pn}}};const Cn=function(e,t){const n=e.concat(t),a=kn(n);let r=[];return n.forEach((e=>{const[t]=e;if(1===a[t].length)return void r.push(e);const n=a[t].filter((t=>wn(e,t)));n.push(e);const o=function(e){let t=e[0][1],n=e[0][2];return e.forEach((e=>{e[1]<t&&(t=e[1]),e[2]>n&&(n=e[2])})),[e[0][0],t,n]}(n);r.push(o)})),r=function(e){const t={};for(let n=0;n<e.length;n+=1)t[e[n].join(\",\")]=e[n];return Object.values(t)}(r),r},jn=function(e,t){const n=[];return Pn(e,t).forEach((e=>{e.passthrough&&n.push(e.passthrough),e.before&&n.push(e.before),e.after&&n.push(e.after)})),n},Nn=(e,t)=>{return\"string\"==typeof e||(n=e,\"[object Array]\"===Object.prototype.toString.call(n))?t.match(e):e||t.none();var n},In=function(e,t){return e.map((e=>{const[n,a]=e;return t[n]&&t[n][a]&&(e[3]=t[n][a].id),e}))},Dn={union:function(e){e=Nn(e,this);let t=Cn(this.fullPointer,e.fullPointer);return t=In(t,this.document),this.toView(t)}};Dn.and=Dn.union,Dn.intersection=function(e){e=Nn(e,this);let t=function(e,t){const n=kn(t),a=[];return e.forEach((e=>{let t=n[e[0]]||[];t=t.filter((t=>wn(e,t))),0!==t.length&&t.forEach((t=>{const n=function(e,t){const n=e[1]<t[1]?t[1]:e[1],a=e[2]>t[2]?t[2]:e[2];return n<a?[e[0],n,a]:null}(e,t);n&&a.push(n)}))})),a}(this.fullPointer,e.fullPointer);return t=In(t,this.document),this.toView(t)},Dn.not=function(e){e=Nn(e,this);let t=jn(this.fullPointer,e.fullPointer);return t=In(t,this.document),this.toView(t)},Dn.difference=Dn.not,Dn.complement=function(){const e=this.all();let t=jn(e.fullPointer,this.fullPointer);return t=In(t,this.document),this.toView(t)},Dn.settle=function(){let e=this.fullPointer;return e.forEach((t=>{e=Cn(e,[t])})),e=In(e,this.document),this.update(e)};var Hn={methods:An,api:function(e){Object.assign(e.prototype,Dn)}};const Tn=function(e){return!0===e.optional||!0===e.negative?null:e.tag?\"#\"+e.tag:e.word?e.word:e.switch?`%${e.switch}%`:null},Gn=function(e,t){const n=t.methods.one.parseMatch;return e.forEach((e=>{e.regs=n(e.match,{},t),\"string\"==typeof e.ifNo&&(e.ifNo=[e.ifNo]),e.notIf&&(e.notIf=n(e.notIf,{},t)),e.needs=function(e){const t=[];return e.forEach((e=>{t.push(Tn(e)),\"and\"===e.operator&&e.choices&&e.choices.forEach((e=>{e.forEach((e=>{t.push(Tn(e))}))}))})),t.filter((e=>e))}(e.regs);const{wants:a,count:r}=function(e){const t=[];let n=0;return e.forEach((e=>{\"or\"!==e.operator||e.optional||e.negative||(e.fastOr&&Array.from(e.fastOr).forEach((e=>{t.push(e)})),e.choices&&e.choices.forEach((e=>{e.forEach((e=>{const n=Tn(e);n&&t.push(n)}))})),n+=1)})),{wants:t,count:n}}(e.regs);e.wants=a,e.minWant=r,e.minWords=e.regs.filter((e=>!e.optional)).length})),e};var xn={buildNet:function(e,t){e=Gn(e,t);const n={};e.forEach((e=>{e.needs.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)})),e.wants.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)}))})),Object.keys(n).forEach((e=>{const t={};n[e]=n[e].filter((e=>\"boolean\"!=typeof t[e.match]&&(t[e.match]=!0,!0)))}));const a=e.filter((e=>0===e.needs.length&&0===e.wants.length));return{hooks:n,always:a}},bulkMatch:function(e,t,n,a={}){const r=n.one.cacheDoc(e);let o=function(e,t){return e.map(((n,a)=>{let r=[];Object.keys(t).forEach((n=>{e[a].has(n)&&(r=r.concat(t[n]))}));const o={};return r=r.filter((e=>\"boolean\"!=typeof o[e.match]&&(o[e.match]=!0,!0))),r}))}(r,t.hooks);o=function(e,t){return e.map(((e,n)=>{const a=t[n];return(e=(e=e.filter((e=>e.needs.every((e=>a.has(e)))))).filter((e=>void 0===e.ifNo||!0!==e.ifNo.some((e=>a.has(e)))))).filter((e=>0===e.wants.length||e.wants.filter((e=>a.has(e))).length>=e.minWant))}))}(o,r),t.always.length>0&&(o=o.map((e=>e.concat(t.always)))),o=function(e,t){return e.map(((e,n)=>{const a=t[n].length;return e=e.filter((e=>a>=e.minWords)),e}))}(o,e);const i=function(e,t,n,a,r){const o=[];for(let n=0;n<e.length;n+=1)for(let i=0;i<e[n].length;i+=1){const s=e[n][i],l=a.one.match([t[n]],s);if(l.ptrs.length>0&&(l.ptrs.forEach((e=>{e[0]=n;const t=Object.assign({},s,{pointer:e});void 0!==s.unTag&&(t.unTag=s.unTag),o.push(t)})),!0===r.matchOne))return[o[0]]}return o}(o,e,0,n,a);return i},bulkTagger:function(e,t,n){const{model:a,methods:r}=n,{getDoc:o,setTag:i,unTag:s}=r.one,l=r.two.looksPlural;if(0===e.length)return e;return(\"undefined\"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_TAGS&&console.log(`\\n\\n  \u001b[32m→ ${e.length} post-tagger:\u001b[0m`),e.map((e=>{if(!e.tag&&!e.chunk&&!e.unTag)return;const r=e.reason||e.match,u=o([e.pointer],t)[0];if(!0===e.safe){if(!1===function(e,t,n){const a=n.one.tagSet;if(!a.hasOwnProperty(t))return!0;const r=a[t].not||[];for(let t=0;t<e.length;t+=1){const n=e[t];for(let e=0;e<r.length;e+=1)if(!0===n.tags.has(r[e]))return!1}return!0}(u,e.tag,a))return;if(\"-\"===u[u.length-1].post)return}if(void 0!==e.tag){if(i(u,e.tag,n,e.safe,`[post] '${r}'`),\"Noun\"===e.tag&&l){const t=u[u.length-1];l(t.text)?i([t],\"Plural\",n,e.safe,\"quick-plural\"):i([t],\"Singular\",n,e.safe,\"quick-singular\")}!0===e.freeze&&u.forEach((e=>e.frozen=!0))}void 0!==e.unTag&&s(u,e.unTag,n,e.safe,r),e.chunk&&u.forEach((t=>t.chunk=e.chunk))}))}},En={lib:{buildNet:function(e){const t=this.methods().one.buildNet(e,this.world());return t.isNet=!0,t}},api:function(e){e.prototype.sweep=function(e,t={}){const{world:n,docs:a}=this,{methods:r}=n;let o=r.one.bulkMatch(a,e,this.methods,t);!1!==t.tagger&&r.one.bulkTagger(o,a,this.world),o=o.map((e=>{const t=e.pointer,n=a[t[0]][t[1]],r=t[2]-t[1];return n.index&&(e.pointer=[n.index[0],n.index[1],t[1]+r]),e}));const i=o.map((e=>e.pointer));return o=o.map((e=>(e.view=this.update([e.pointer]),delete e.regs,delete e.needs,delete e.pointer,delete e._expanded,e))),{view:this.update(i),found:o}}},methods:{one:xn}};const Fn=/ /,On=function(e,t){\"Noun\"===t&&(e.chunk=t),\"Verb\"===t&&(e.chunk=t)},zn=function(e,t,n,a){if(!0===e.tags.has(t))return null;if(\".\"===t)return null;!0===e.frozen&&(a=!0);const r=n[t];if(r){if(r.not&&r.not.length>0)for(let t=0;t<r.not.length;t+=1){if(!0===a&&e.tags.has(r.not[t]))return null;e.tags.delete(r.not[t])}if(r.parents&&r.parents.length>0)for(let t=0;t<r.parents.length;t+=1)e.tags.add(r.parents[t]),On(e,r.parents[t])}return e.tags.add(t),e.dirty=!0,On(e,t),!0},Vn=function(e,t,n={},a,r){const o=n.model.one.tagSet||{};if(!t)return;const i=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};var s;if(i&&i.DEBUG_TAGS&&((e,t,n=\"\")=>{const a=e.map((e=>e.text||\"[\"+e.implicit+\"]\")).join(\" \");var r;\"string\"!=typeof t&&t.length>2&&(t=t.slice(0,2).join(\", #\")+\" +\"),t=\"string\"!=typeof t?t.join(\", #\"):t,console.log(` ${(r=a,\"\u001b[33m\u001b[3m\"+r+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${t.padEnd(22)}  ${(e=>\"\u001b[3m\"+e+\"\u001b[0m\")(n)}`)})(e,t,r),!0!=(s=t,\"[object Array]\"===Object.prototype.toString.call(s)))if(\"string\"==typeof t)if(t=t.trim(),Fn.test(t))!function(e,t,n,a){const r=t.split(Fn);e.forEach(((e,t)=>{let o=r[t];o&&(o=o.replace(/^#/,\"\"),zn(e,o,n,a))}))}(e,t,o,a);else{t=t.replace(/^#/,\"\");for(let n=0;n<e.length;n+=1)zn(e[n],t,o,a)}else console.warn(`compromise: Invalid tag '${t}'`);else t.forEach((t=>Vn(e,t,n,a)))},Bn=function(e){return e.children=e.children||[],e._cache=e._cache||{},e.props=e.props||{},e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],e},Sn=/^ *(#|\\/\\/)/,Kn=function(e){let t=e.trim().split(/->/),n=[];t.forEach((e=>{n=n.concat(function(e){if(!(e=e.trim()))return null;if(/^\\[/.test(e)&&/\\]$/.test(e)){let t=(e=(e=e.replace(/^\\[/,\"\")).replace(/\\]$/,\"\")).split(/,/);return t=t.map((e=>e.trim())).filter((e=>e)),t=t.map((e=>Bn({id:e}))),t}return[Bn({id:e})]}(e))})),n=n.filter((e=>e));let a=n[0];for(let e=1;e<n.length;e+=1)a.children.push(n[e]),a=n[e];return n[0]},$n=(e,t)=>{let n=[],a=[e];for(;a.length>0;){let e=a.pop();n.push(e),e.children&&e.children.forEach((n=>{t&&t(e,n),a.push(n)}))}return n},Ln=e=>\"[object Array]\"===Object.prototype.toString.call(e),Mn=e=>(e=e||\"\").trim(),Jn=function(e=[]){return\"string\"==typeof e?function(e){let t=e.split(/\\r?\\n/),n=[];t.forEach((e=>{if(!e.trim()||Sn.test(e))return;let t=(e=>{const t=/^( {2}|\\t)/;let n=0;for(;t.test(e);)e=e.replace(t,\"\"),n+=1;return n})(e);n.push({indent:t,node:Kn(e)})}));let a=function(e){let t={children:[]};return e.forEach(((n,a)=>{0===n.indent?t.children=t.children.concat(n.node):e[a-1]&&function(e,t){let n=e[t].indent;for(;t>=0;t-=1)if(e[t].indent<n)return e[t];return e[0]}(e,a).node.children.push(n.node)})),t}(n);return a=Bn(a),a}(e):Ln(e)?function(e){let t={};e.forEach((e=>{t[e.id]=e}));let n=Bn({});return e.forEach((e=>{if((e=Bn(e)).parent)if(t.hasOwnProperty(e.parent)){let n=t[e.parent];delete e.parent,n.children.push(e)}else console.warn(`[Grad] - missing node '${e.parent}'`);else n.children.push(e)})),n}(e):($n(t=e).forEach(Bn),t);var t},Wn=function(e,t){let n=\"-> \";t&&(n=(e=>\"\u001b[2m\"+e+\"\u001b[0m\")(\"→ \"));let a=\"\";return $n(e).forEach(((e,r)=>{let o=e.id||\"\";if(t&&(o=(e=>\"\u001b[31m\"+e+\"\u001b[0m\")(o)),0===r&&!e.id)return;let i=e._cache.parents.length;a+=\"    \".repeat(i)+n+o+\"\\n\"})),a},Un=function(e){let t=$n(e);t.forEach((e=>{delete(e=Object.assign({},e)).children}));let n=t[0];return n&&!n.id&&0===Object.keys(n.props).length&&t.shift(),t},qn={text:Wn,txt:Wn,array:Un,flat:Un},Rn=function(e,t){return\"nested\"===t||\"json\"===t?e:\"debug\"===t?(console.log(Wn(e,!0)),null):qn.hasOwnProperty(t)?qn[t](e):e},Qn=e=>{$n(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],t._cache.parents=e._cache.parents.concat([e.id]))}))},Zn=/\\//;let Xn=class g{constructor(e={}){Object.defineProperty(this,\"json\",{enumerable:!1,value:e,writable:!0})}get children(){return this.json.children}get id(){return this.json.id}get found(){return this.json.id||this.json.children.length>0}props(e={}){let t=this.json.props||{};return\"string\"==typeof e&&(t[e]=!0),this.json.props=Object.assign(t,e),this}get(e){if(e=Mn(e),!Zn.test(e)){let t=this.json.children.find((t=>t.id===e));return new g(t)}let t=((e,t)=>{let n=(e=>\"string\"!=typeof e?e:(e=e.replace(/^\\//,\"\")).split(/\\//))(t=t||\"\");for(let t=0;t<n.length;t+=1){let a=e.children.find((e=>e.id===n[t]));if(!a)return null;e=a}return e})(this.json,e)||Bn({});return new g(t)}add(e,t={}){if(Ln(e))return e.forEach((e=>this.add(Mn(e),t))),this;e=Mn(e);let n=Bn({id:e,props:t});return this.json.children.push(n),new g(n)}remove(e){return e=Mn(e),this.json.children=this.json.children.filter((t=>t.id!==e)),this}nodes(){return $n(this.json).map((e=>(delete(e=Object.assign({},e)).children,e)))}cache(){return(e=>{let t=$n(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],t._cache.parents=e._cache.parents.concat([e.id]))})),n={};t.forEach((e=>{e.id&&(n[e.id]=e)})),t.forEach((e=>{e._cache.parents.forEach((t=>{n.hasOwnProperty(t)&&n[t]._cache.children.push(e.id)}))})),e._cache.children=Object.keys(n)})(this.json),this}list(){return $n(this.json)}fillDown(){var e;return e=this.json,$n(e,((e,t)=>{t.props=((e,t)=>(Object.keys(t).forEach((n=>{if(t[n]instanceof Set){let a=e[n]||new Set;e[n]=new Set([...a,...t[n]])}else if((e=>e&&\"object\"==typeof e&&!Array.isArray(e))(t[n])){let a=e[n]||{};e[n]=Object.assign({},t[n],a)}else Ln(t[n])?e[n]=t[n].concat(e[n]||[]):void 0===e[n]&&(e[n]=t[n])})),e))(t.props,e.props)})),this}depth(){Qn(this.json);let e=$n(this.json),t=e.length>1?1:0;return e.forEach((e=>{if(0===e._cache.parents.length)return;let n=e._cache.parents.length+1;n>t&&(t=n)})),t}out(e){return Qn(this.json),Rn(this.json,e)}debug(){return Qn(this.json),Rn(this.json,\"debug\"),this}};const _n=function(e){let t=Jn(e);return new Xn(t)};_n.prototype.plugin=function(e){e(this)};const Yn={Noun:\"blue\",Verb:\"green\",Negative:\"green\",Date:\"red\",Value:\"red\",Adjective:\"magenta\",Preposition:\"cyan\",Conjunction:\"cyan\",Determiner:\"cyan\",Hyphenated:\"cyan\",Adverb:\"cyan\"},ea=function(e){if(Yn.hasOwnProperty(e.id))return Yn[e.id];if(Yn.hasOwnProperty(e.is))return Yn[e.is];const t=e._cache.parents.find((e=>Yn[e]));return Yn[t]},ta=function(e){return e?\"string\"==typeof e?[e]:e:[]},na=function(e,t){return e=function(e,t){return Object.keys(e).forEach((n=>{e[n].isA&&(e[n].is=e[n].isA),e[n].notA&&(e[n].not=e[n].notA),e[n].is&&\"string\"==typeof e[n].is&&(t.hasOwnProperty(e[n].is)||e.hasOwnProperty(e[n].is)||(e[e[n].is]={})),e[n].not&&\"string\"==typeof e[n].not&&!e.hasOwnProperty(e[n].not)&&(t.hasOwnProperty(e[n].not)||e.hasOwnProperty(e[n].not)||(e[e[n].not]={}))})),e}(e,t),Object.keys(e).forEach((t=>{e[t].children=ta(e[t].children),e[t].not=ta(e[t].not)})),Object.keys(e).forEach((t=>{(e[t].not||[]).forEach((n=>{e[n]&&e[n].not&&e[n].not.push(t)}))})),e};var aa={one:{setTag:Vn,unTag:function(e,t,n){t=t.trim().replace(/^#/,\"\");for(let a=0;a<e.length;a+=1){const r=e[a];if(!0===r.frozen)continue;if(\"*\"===t){r.tags.clear();continue}const o=n[t];if(o&&o.children.length>0)for(let e=0;e<o.children.length;e+=1)r.tags.delete(o.children[e]);r.tags.delete(t)}},addTags:function(e,t){Object.keys(t).length>0&&(e=function(e){return Object.keys(e).forEach((t=>{e[t]=Object.assign({},e[t]),e[t].novel=!0})),e}(e)),e=na(e,t);const n=function(e){const t=Object.keys(e).map((t=>{const n=e[t],a={not:new Set(n.not),also:n.also,is:n.is,novel:n.novel};return{id:t,parent:n.is,props:a,children:[]}}));return _n(t).cache().fillDown().out(\"array\")}(Object.assign({},t,e)),a=function(e){const t={};return e.forEach((e=>{const{not:n,also:a,is:r,novel:o}=e.props;let i=e._cache.parents;a&&(i=i.concat(a)),t[e.id]={is:r,not:n,novel:o,also:a,parents:i,children:e._cache.children,color:ea(e)}})),Object.keys(t).forEach((e=>{const n=new Set(t[e].not);t[e].not.forEach((e=>{t[e]&&t[e].children.forEach((e=>n.add(e)))})),t[e].not=Array.from(n)})),t}(n);return a},canBe:function(e,t,n){if(!n.hasOwnProperty(t))return!0;const a=n[t].not||[];for(let t=0;t<a.length;t+=1)if(e.tags.has(a[t]))return!1;return!0}}};const ra=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},oa={tag:function(e,t=\"\",n){if(!this.found||!e)return this;const a=this.termList();if(0===a.length)return this;const{methods:r,verbose:o,world:i}=this;return!0===o&&console.log(\" +  \",e,t||\"\"),ra(e)?e.forEach((e=>r.one.setTag(a,e,i,n,t))):r.one.setTag(a,e,i,n,t),this.uncache(),this},tagSafe:function(e,t=\"\"){return this.tag(e,t,!0)},unTag:function(e,t){if(!this.found||!e)return this;const n=this.termList();if(0===n.length)return this;const{methods:a,verbose:r,model:o}=this;!0===r&&console.log(\" -  \",e,t||\"\");const i=o.one.tagSet;return ra(e)?e.forEach((e=>a.one.unTag(n,e,i))):a.one.unTag(n,e,i),this.uncache(),this},canBe:function(e){e=e.replace(/^#/,\"\");const t=this.model.one.tagSet,n=this.methods.one.canBe,a=[];this.document.forEach(((r,o)=>{r.forEach(((r,i)=>{n(r,e,t)||a.push([o,i,i+1])}))}));const r=this.update(a);return this.difference(r)}};var ia={addTags:function(e){const{model:t,methods:n}=this.world(),a=t.one.tagSet,r=(0,n.one.addTags)(e,a);return t.one.tagSet=r,this}};const sa=new Set([\"Auxiliary\",\"Possessive\"]);var la={model:{one:{tagSet:{}}},compute:{tagRank:function(e){const{document:t,world:n}=e,a=n.model.one.tagSet;t.forEach((e=>{e.forEach((e=>{const t=Array.from(e.tags);e.tagRank=function(e,t){return e=e.sort(((e,n)=>{if(sa.has(e)||!t.hasOwnProperty(n))return 1;if(sa.has(n)||!t.hasOwnProperty(e))return-1;let a=t[e].children||[];const r=a.length;return a=t[n].children||[],r-a.length})),e}(t,a)}))}))}},methods:aa,api:function(e){Object.assign(e.prototype,oa)},lib:ia};const ua=/([.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s)/g,ca=/^[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s$/,da=/((?:\\r?\\n|\\r)+)/,ha=/[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i,ga=/\\S/,ma=function(e){return Boolean(e.match(/\\n$/))},pa={'\"':'\"',\"＂\":\"＂\",\"“\":\"”\",\"‟\":\"”\",\"„\":\"”\",\"⹂\":\"”\",\"‚\":\"’\",\"«\":\"»\",\"‹\":\"›\",\"‵\":\"′\",\"‶\":\"″\",\"‷\":\"‴\",\"〝\":\"〞\",\"〟\":\"〞\"},fa=RegExp(\"[\"+Object.keys(pa).join(\"\")+\"]\",\"g\"),ba=RegExp(\"[\"+Object.values(pa).join(\"\")+\"]\",\"g\"),ya=function(e){if(!e)return!1;const t=e.match(ba);return null!==t&&1===t.length},va=/\\(/g,wa=/\\)/g,ka=/\\S/,Pa=/^\\s+/,Aa=function(e,t){const n=e.split(/[-–—]/);if(n.length<=1)return!1;const{prefixes:a,suffixes:r}=t.one;if(1===n[0].length&&/[a-z]/i.test(n[0]))return!1;if(a.hasOwnProperty(n[0]))return!1;if(n[1]=n[1].trim().replace(/[.?!]$/,\"\"),r.hasOwnProperty(n[1]))return!1;if(!0===/^([a-z\\u00C0-\\u00FF`\"'/]+)[-–—]([a-z0-9\\u00C0-\\u00FF].*)/i.test(e))return!0;return!0===/^[('\"]?([0-9]{1,4})[-–—]([a-z\\u00C0-\\u00FF`\"'/-]+[)'\"]?$)/i.test(e)},Ca=function(e){const t=[],n=e.split(/[-–—]/);let a=\"-\";const r=e.match(/[-–—]/);r&&r[0]&&(a=r);for(let e=0;e<n.length;e++)e===n.length-1?t.push(n[e]):t.push(n[e]+a);return t},ja=/\\p{L} ?\\/ ?\\p{L}+$/u,Na=/\\S/,Ia=/^[!?.]+$/,Da=/(\\S+)/;let Ha=[\".\",\"?\",\"!\",\":\",\";\",\"-\",\"–\",\"—\",\"--\",\"...\",\"(\",\")\",\"[\",\"]\",'\"',\"'\",\"`\",\"«\",\"»\",\"*\",\"•\"];Ha=Ha.reduce(((e,t)=>(e[t]=!0,e)),{});const Ta=/\\p{Letter}/u,Ga=/[\\p{Number}\\p{Currency_Symbol}]/u,xa=/^[a-z]\\.([a-z]\\.)+/i,Ea=/[sn]['’]$/,Fa=/([A-Z]\\.)+[A-Z]?,?$/,Oa=/^[A-Z]\\.,?$/,za=/[A-Z]{2,}('s|,)?$/,Va=/([a-z]\\.)+[a-z]\\.?$/,Ba=function(e){return function(e){return!0===Fa.test(e)||!0===Va.test(e)||!0===Oa.test(e)||!0===za.test(e)}(e)&&(e=e.replace(/\\./g,\"\")),e},Sa=function(e,t){const n=t.methods.one.killUnicode;let a=e.text||\"\";a=function(e){const t=e=(e=(e=e||\"\").toLowerCase()).trim();return e=(e=(e=e.replace(/[,;.!?]+$/,\"\")).replace(/\\u2026/g,\"...\")).replace(/\\u2013/g,\"-\"),!1===/^[:;]/.test(e)&&(e=(e=(e=e.replace(/\\.{3,}$/g,\"\")).replace(/[\",.!:;?)]+$/g,\"\")).replace(/^['\"(]+/g,\"\")),\"\"===(e=(e=e.replace(/[\\u200B-\\u200D\\uFEFF]/g,\"\")).trim())&&(e=t),e.replace(/([0-9]),([0-9])/g,\"$1$2\")}(a),a=n(a,t),a=Ba(a),e.normal=a},Ka=/[ .][A-Z]\\.? *$/i,$a=/(?:\\u2026|\\.{2,}) *$/,La=/\\p{L}/u,Ma=/\\. *$/,Ja=/^[A-Z]\\. $/;var Wa={one:{killUnicode:function(e,t){const n=t.model.one.unicode||{},a=(e=e||\"\").split(\"\");return a.forEach(((e,t)=>{n[e]&&(a[t]=n[e])})),a.join(\"\")},tokenize:{splitSentences:function(e,t){if(e=e||\"\",!(e=String(e))||\"string\"!=typeof e||!1===ka.test(e))return[];const n=function(e){const t=[],n=e.split(da);for(let e=0;e<n.length;e++){const a=n[e].split(ua);for(let e=0;e<a.length;e++)a[e+1]&&!0===ca.test(a[e+1])&&(a[e]+=a[e+1],a[e+1]=\"\"),\"\"!==a[e]&&t.push(a[e])}return t}(e=e.replace(\" \",\" \"));let a=function(e){const t=[];for(let n=0;n<e.length;n++){const a=e[n];if(void 0!==a&&\"\"!==a){if(!1===ga.test(a)||!1===ha.test(a)){if(t[t.length-1]){t[t.length-1]+=a;continue}if(e[n+1]){e[n+1]=a+e[n+1];continue}}t.push(a)}}return t}(n);if(a=function(e,t){const n=t.methods.one.tokenize.isSentence,a=t.model.one.abbreviations||new Set,r=[];for(let t=0;t<e.length;t++){const o=e[t];!e[t+1]||n(o,a)||ma(o)?o&&o.length>0&&(r.push(o),e[t]=\"\"):e[t+1]=o+(e[t+1]||\"\")}return r}(a,t),a=function(e){const t=[];for(let n=0;n<e.length;n+=1){const a=e[n].match(fa);if(null!==a&&1===a.length){if(ya(e[n+1])&&e[n+1].length<280){e[n]+=e[n+1],t.push(e[n]),e[n+1]=\"\",n+=1;continue}if(ya(e[n+2])){const a=e[n+1]+e[n+2];if(a.length<280){e[n]+=a,t.push(e[n]),e[n+1]=\"\",e[n+2]=\"\",n+=2;continue}}}t.push(e[n])}return t}(a),a=function(e){const t=[];for(let n=0;n<e.length;n+=1){const a=e[n].match(va);null!==a&&1===a.length&&e[n+1]&&e[n+1].length<250&&null!==e[n+1].match(wa)&&1===a.length&&!va.test(e[n+1])?(e[n]+=e[n+1],t.push(e[n]),e[n+1]=\"\",n+=1):t.push(e[n])}return t}(a),0===a.length)return[e];for(let e=1;e<a.length;e+=1){const t=a[e].match(Pa);null!==t&&(a[e-1]+=t[0],a[e]=a[e].replace(Pa,\"\"))}return a},isSentence:function(e,t){if(!1===La.test(e))return!1;if(!0===Ka.test(e))return!1;if(3===e.length&&Ja.test(e))return!1;if(!0===$a.test(e))return!1;const n=e.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/,\"\").split(\" \"),a=n[n.length-1].toLowerCase();return!0!==t.hasOwnProperty(a)||!0!==Ma.test(e)},splitTerms:function(e,t){let n=[],a=[];if(\"number\"==typeof(e=e||\"\")&&(e=String(e)),function(e){return\"[object Array]\"===Object.prototype.toString.call(e)}(e))return e;const r=e.split(Da);for(let e=0;e<r.length;e++)!0!==Aa(r[e],t)?a.push(r[e]):a=a.concat(Ca(r[e]));let o=\"\";for(let e=0;e<a.length;e++){const t=a[e];!0===Na.test(t)&&!1===Ha.hasOwnProperty(t)&&!1===Ia.test(t)?(n.length>0?(n[n.length-1]+=o,n.push(t)):n.push(o+t),o=\"\"):o+=t}return o&&(0===n.length&&(n[0]=\"\"),n[n.length-1]+=o),n=function(e){for(let t=1;t<e.length-1;t++)ja.test(e[t])&&(e[t-1]+=e[t]+e[t+1],e[t]=null,e[t+1]=null);return e}(n),n=function(e){const t=/^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?[-–—] ?$/,n=/^[0-9]{1,4}([a-z]{1,2})? ?$/;for(let a=0;a<e.length-1;a+=1)e[a+1]&&t.test(e[a])&&n.test(e[a+1])&&(e[a]=e[a]+e[a+1],e[a+1]=null);return e}(n),n=n.filter((e=>e)),n},splitWhitespace:(e,t)=>{const{str:n,pre:a,post:r}=function(e,t){const{prePunctuation:n,postPunctuation:a,emoticons:r}=t.one;let o=e,i=\"\",s=\"\";const l=Array.from(e);if(r.hasOwnProperty(e.trim()))return{str:e.trim(),pre:i,post:\" \"};let u=l.length;for(let e=0;e<u;e+=1){const e=l[0];if(!0!==n[e]){if((\"+\"===e||\"-\"===e)&&Ga.test(l[1]))break;if(\"'\"===e&&3===e.length&&Ga.test(l[1]))break;if(Ta.test(e)||Ga.test(e))break;i+=l.shift()}}u=l.length;for(let e=0;e<u;e+=1){const e=l[l.length-1];if(!0!==a[e]){if(Ta.test(e)||Ga.test(e))break;\".\"===e&&!0===xa.test(o)||\"'\"===e&&!0===Ea.test(o)||(s=l.pop()+s)}}return\"\"===(e=l.join(\"\"))&&(o=o.replace(/ *$/,(e=>(s=e||\"\",\"\"))),e=o,i=\"\"),{str:e,pre:i,post:s}}(e,t);return{text:n,pre:a,post:r,tags:new Set}},fromString:function(e,t){const{methods:n,model:a}=t,{splitSentences:r,splitTerms:o,splitWhitespace:i}=n.one.tokenize;return e=r(e=e||\"\",t).map((e=>{let n=o(e,a);return n=n.map((e=>i(e,a))),n.forEach((e=>{Sa(e,t)})),n})),e}}}};const Ua={},qa={};[[[\"approx\",\"apt\",\"bc\",\"cyn\",\"eg\",\"esp\",\"est\",\"etc\",\"ex\",\"exp\",\"prob\",\"pron\",\"gal\",\"min\",\"pseud\",\"fig\",\"jd\",\"lat\",\"lng\",\"vol\",\"fm\",\"def\",\"misc\",\"plz\",\"ea\",\"ps\",\"sec\",\"pt\",\"pref\",\"pl\",\"pp\",\"qt\",\"fr\",\"sq\",\"nee\",\"ss\",\"tel\",\"temp\",\"vet\",\"ver\",\"fem\",\"masc\",\"eng\",\"adj\",\"vb\",\"rb\",\"inf\",\"situ\",\"vivo\",\"vitro\",\"wr\"]],[[\"dl\",\"ml\",\"gal\",\"qt\",\"pt\",\"tbl\",\"tsp\",\"tbsp\",\"km\",\"dm\",\"cm\",\"mm\",\"mi\",\"td\",\"hr\",\"hrs\",\"kg\",\"hg\",\"dg\",\"cg\",\"mg\",\"µg\",\"lb\",\"oz\",\"sq ft\",\"hz\",\"mps\",\"mph\",\"kmph\",\"kb\",\"mb\",\"tb\",\"lx\",\"lm\",\"fl oz\",\"yb\"],\"Unit\"],[[\"ad\",\"al\",\"arc\",\"ba\",\"bl\",\"ca\",\"cca\",\"col\",\"corp\",\"ft\",\"fy\",\"ie\",\"lit\",\"ma\",\"md\",\"pd\",\"tce\"],\"Noun\"],[[\"adj\",\"adm\",\"adv\",\"asst\",\"atty\",\"bldg\",\"brig\",\"capt\",\"cmdr\",\"comdr\",\"cpl\",\"det\",\"dr\",\"esq\",\"gen\",\"gov\",\"hon\",\"jr\",\"llb\",\"lt\",\"maj\",\"messrs\",\"mlle\",\"mme\",\"mr\",\"mrs\",\"ms\",\"mstr\",\"phd\",\"prof\",\"pvt\",\"rep\",\"reps\",\"res\",\"rev\",\"sen\",\"sens\",\"sfc\",\"sgt\",\"sir\",\"sr\",\"supt\",\"surg\"],\"Honorific\"],[[\"jan\",\"feb\",\"mar\",\"apr\",\"jun\",\"jul\",\"aug\",\"sep\",\"sept\",\"oct\",\"nov\",\"dec\"],\"Month\"],[[\"dept\",\"univ\",\"assn\",\"bros\",\"inc\",\"ltd\",\"co\"],\"Organization\"],[[\"rd\",\"st\",\"dist\",\"mt\",\"ave\",\"blvd\",\"cl\",\"cres\",\"hwy\",\"ariz\",\"cal\",\"calif\",\"colo\",\"conn\",\"fla\",\"fl\",\"ga\",\"ida\",\"ia\",\"kan\",\"kans\",\"minn\",\"neb\",\"nebr\",\"okla\",\"penna\",\"penn\",\"pa\",\"dak\",\"tenn\",\"tex\",\"ut\",\"vt\",\"va\",\"wis\",\"wisc\",\"wy\",\"wyo\",\"usafa\",\"alta\",\"ont\",\"que\",\"sask\"],\"Place\"]].forEach((e=>{e[0].forEach((t=>{Ua[t]=!0,qa[t]=\"Abbreviation\",void 0!==e[1]&&(qa[t]=[qa[t],e[1]])}))}));var Ra=[\"anti\",\"bi\",\"co\",\"contra\",\"de\",\"extra\",\"infra\",\"inter\",\"intra\",\"macro\",\"micro\",\"mis\",\"mono\",\"multi\",\"peri\",\"pre\",\"pro\",\"proto\",\"pseudo\",\"re\",\"sub\",\"supra\",\"trans\",\"tri\",\"un\",\"out\",\"ex\"].reduce(((e,t)=>(e[t]=!0,e)),{});const Qa={\"!\":\"¡\",\"?\":\"¿Ɂ\",'\"':'“”\"❝❞',\"'\":\"‘‛❛❜’\",\"-\":\"—–\",a:\"ªÀÁÂÃÄÅàáâãäåĀāĂăĄąǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАаѦѧӐӑӒӓƛæ\",b:\"ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ\",c:\"¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼϲϹϽϾСсєҀҁҪҫ\",d:\"ÐĎďĐđƉƊȡƋƌ\",e:\"ÈÉÊËèéêëĒēĔĕĖėĘęĚěƐȄȅȆȇȨȩɆɇΈΕΞΣέεξϵЀЁЕеѐёҼҽҾҿӖӗễ\",f:\"ƑƒϜϝӺӻҒғſ\",g:\"ĜĝĞğĠġĢģƓǤǥǦǧǴǵ\",h:\"ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ\",I:\"ÌÍÎÏ\",i:\"ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇіїi̇\",j:\"ĴĵǰȷɈɉϳЈј\",k:\"ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ\",l:\"ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ\",m:\"ΜϺϻМмӍӎ\",n:\"ÑñŃńŅņŇňŉŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ\",o:\"ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϴОФоѲѳӦӧӨөӪӫ\",p:\"ƤΡρϷϸϼРрҎҏÞ\",q:\"Ɋɋ\",r:\"ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ\",s:\"ŚśŜŝŞşŠšƧƨȘșȿЅѕ\",t:\"ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт\",u:\"ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰυϋύ\",v:\"νѴѵѶѷ\",w:\"ŴŵƜωώϖϢϣШЩшщѡѿ\",x:\"×ΧχϗϰХхҲҳӼӽӾӿ\",y:\"ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ\",z:\"ŹźŻżŽžƵƶȤȥɀΖ\"},Za={};Object.keys(Qa).forEach((function(e){Qa[e].split(\"\").forEach((function(t){Za[t]=e}))}));const Xa=/\\//,_a=/[a-z]\\.[a-z]/i,Ya=/[0-9]/,er=function(e,t){const n=e.normal||e.text||e.machine,a=t.model.one.aliases;if(a.hasOwnProperty(n)&&(e.alias=e.alias||[],e.alias.push(a[n])),Xa.test(n)&&!_a.test(n)&&!Ya.test(n)){const t=n.split(Xa);t.length<=3&&t.forEach((t=>{\"\"!==(t=t.trim())&&(e.alias=e.alias||[],e.alias.push(t))}))}return e},tr=/^\\p{Letter}+-\\p{Letter}+$/u,nr=function(e){let t=e.implicit||e.normal||e.text;t=t.replace(/['’]s$/,\"\"),t=t.replace(/s['’]$/,\"s\"),t=t.replace(/([aeiou][ktrp])in'$/,\"$1ing\"),tr.test(t)&&(t=t.replace(/-/g,\"\")),t=t.replace(/^[#@]/,\"\"),t!==e.normal&&(e.machine=t)},ar=function(e,t){const n=e.docs;for(let a=0;a<n.length;a+=1)for(let r=0;r<n[a].length;r+=1)t(n[a][r],e.world)},rr={alias:e=>ar(e,er),machine:e=>ar(e,nr),normal:e=>ar(e,Sa),freq:function(e){const t=e.docs,n={};for(let e=0;e<t.length;e+=1)for(let a=0;a<t[e].length;a+=1){const r=t[e][a],o=r.machine||r.normal;n[o]=n[o]||0,n[o]+=1}for(let e=0;e<t.length;e+=1)for(let a=0;a<t[e].length;a+=1){const r=t[e][a],o=r.machine||r.normal;r.freq=n[o]}},offset:function(e){let t=0,n=0;const a=e.document;for(let e=0;e<a.length;e+=1)for(let r=0;r<a[e].length;r+=1){const o=a[e][r];o.offset={index:n,start:t+o.pre.length,length:o.text.length},t+=o.pre.length+o.text.length+o.post.length,n+=1}},index:function(e){const t=e.document;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1)t[e][n].index=[e,n]},wordCount:function(e){let t=0;const n=e.docs;for(let e=0;e<n.length;e+=1)for(let a=0;a<n[e].length;a+=1)\"\"!==n[e][a].normal&&(t+=1,n[e][a].wordCount=t)}};var or={compute:rr,methods:Wa,model:{one:{aliases:{\"&\":\"and\",\"@\":\"at\",\"%\":\"percent\",plz:\"please\",bein:\"being\"},abbreviations:Ua,prefixes:Ra,suffixes:{like:!0,ish:!0,less:!0,able:!0,elect:!0,type:!0,designate:!0},prePunctuation:{\"#\":!0,\"@\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},postPunctuation:{\"%\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},lexicon:qa,unicode:Za,emoticons:{\"<3\":!0,\"</3\":!0,\"<\\\\3\":!0,\":^P\":!0,\":^p\":!0,\":^O\":!0,\":^3\":!0}}},hooks:[\"alias\",\"machine\",\"index\",\"id\"]};var ir={typeahead:function(e){const t=e.model.one.typeahead,n=e.docs;if(0===n.length||0===Object.keys(t).length)return;const a=n[n.length-1]||[],r=a[a.length-1];if(!r.post&&t.hasOwnProperty(r.normal)){const n=t[r.normal];r.implicit=n,r.machine=n,r.typeahead=!0,e.compute.preTagger&&e.last().unTag(\"*\").compute([\"lexicon\",\"preTagger\"])}}};const sr=function(){const e=this.docs;if(0===e.length)return this;const t=e[e.length-1]||[],n=t[t.length-1];return!0===n.typeahead&&n.machine&&(n.text=n.machine,n.normal=n.machine),this},lr={safe:!0,min:3};var ur={typeahead:function(e=[],t={}){const n=this.model();var a;t=Object.assign({},lr,t),a=e,\"[object Object]\"===Object.prototype.toString.call(a)&&(Object.assign(n.one.lexicon,e),e=Object.keys(e));const r=function(e,t,n){let a={};const r=[],o=n.prefixes||{};return e.forEach((e=>{let i=(e=e.toLowerCase().trim()).length;t.max&&i>t.max&&(i=t.max);for(let s=t.min;s<i;s+=1){const i=e.substring(0,s);t.safe&&n.model.one.lexicon.hasOwnProperty(i)||(!0!==o.hasOwnProperty(i)&&!0!==a.hasOwnProperty(i)?a[i]=e:r.push(i))}})),a=Object.assign({},o,a),r.forEach((e=>{delete a[e]})),a}(e,t,this.world());return Object.keys(r).forEach((e=>{n.one.typeahead.hasOwnProperty(e)?delete n.one.typeahead[e]:n.one.typeahead[e]=r[e]})),this}};var cr={model:{one:{typeahead:{}}},api:function(e){e.prototype.autoFill=sr},lib:ur,compute:ir,hooks:[\"typeahead\"]};d.extend(J),d.extend(vn),d.extend(Jt),d.extend(Hn),d.extend(la),d.plugin(ve),d.extend(or),d.extend(Ce),d.plugin(p),d.extend(Be),d.extend(cr),d.extend(xe),d.extend(En);var dr={addendum:\"addenda\",corpus:\"corpora\",criterion:\"criteria\",curriculum:\"curricula\",genus:\"genera\",memorandum:\"memoranda\",opus:\"opera\",ovum:\"ova\",phenomenon:\"phenomena\",referendum:\"referenda\",alga:\"algae\",alumna:\"alumnae\",antenna:\"antennae\",formula:\"formulae\",larva:\"larvae\",nebula:\"nebulae\",vertebra:\"vertebrae\",analysis:\"analyses\",axis:\"axes\",diagnosis:\"diagnoses\",parenthesis:\"parentheses\",prognosis:\"prognoses\",synopsis:\"synopses\",thesis:\"theses\",neurosis:\"neuroses\",appendix:\"appendices\",index:\"indices\",matrix:\"matrices\",ox:\"oxen\",sex:\"sexes\",alumnus:\"alumni\",bacillus:\"bacilli\",cactus:\"cacti\",fungus:\"fungi\",hippopotamus:\"hippopotami\",libretto:\"libretti\",modulus:\"moduli\",nucleus:\"nuclei\",octopus:\"octopi\",radius:\"radii\",stimulus:\"stimuli\",syllabus:\"syllabi\",cookie:\"cookies\",calorie:\"calories\",auntie:\"aunties\",movie:\"movies\",pie:\"pies\",rookie:\"rookies\",tie:\"ties\",zombie:\"zombies\",leaf:\"leaves\",loaf:\"loaves\",thief:\"thieves\",foot:\"feet\",goose:\"geese\",tooth:\"teeth\",beau:\"beaux\",chateau:\"chateaux\",tableau:\"tableaux\",bus:\"buses\",gas:\"gases\",circus:\"circuses\",crisis:\"crises\",virus:\"viruses\",database:\"databases\",excuse:\"excuses\",abuse:\"abuses\",avocado:\"avocados\",barracks:\"barracks\",child:\"children\",clothes:\"clothes\",echo:\"echoes\",embargo:\"embargoes\",epoch:\"epochs\",deer:\"deer\",halo:\"halos\",man:\"men\",woman:\"women\",mosquito:\"mosquitoes\",mouse:\"mice\",person:\"people\",quiz:\"quizzes\",rodeo:\"rodeos\",shoe:\"shoes\",sombrero:\"sombreros\",stomach:\"stomachs\",tornado:\"tornados\",tuxedo:\"tuxedos\",volcano:\"volcanoes\"},hr={Comparative:\"true¦bett1f0;arth0ew0in0;er\",Superlative:\"true¦earlier\",PresentTense:\"true¦bests,sounds\",Condition:\"true¦lest,unless\",PastTense:\"true¦began,came,d4had,kneel3l2m0sa4we1;ea0sg2;nt;eap0i0;ed;id\",Participle:\"true¦0:09;a06b01cZdXeat0fSgQhPoJprov0rHs7t6u4w1;ak0ithdra02o2r1;i02uY;k0v0;nd1pr04;ergoJoJ;ak0hHo3;e9h7lain,o6p5t4un3w1;o1um;rn;g,k;ol0reS;iQok0;ught,wn;ak0o1runk;ne,wn;en,wn;ewriNi1uJ;dd0s0;ut3ver1;do4se0t1;ak0h2;do2g1;roG;ne;ast0i7;iv0o1;ne,tt0;all0loBor1;bi3g2s1;ak0e0;iv0o9;dd0;ove,r1;a5eamt,iv0;hos0lu1;ng;e4i3lo2ui1;lt;wn;tt0;at0en,gun;r2w1;ak0ok0;is0;en\",Gerund:\"true¦accord0be0doin,go0result0stain0;ing\",Expression:\"true¦a0Yb0Uc0Sd0Oe0Mfarew0Lg0FhZjeez,lWmVnToOpLsJtIuFvEw7y0;a5e3i1u0;ck,p;k04p0;ee,pee;a0p,s;!h;!a,h,y;a5h2o1t0;af,f;rd up,w;atsoever,e1o0;a,ops;e,w;hoo,t;ery w06oi0L;gh,h0;! 0h,m;huh,oh;here nPsk,ut tut;h0ic;eesh,hh,it,oo;ff,h1l0ow,sst;ease,s,z;ew,ooey;h1i,mg,o0uch,w,y;h,o,ps;! 0h;hTmy go0wT;d,sh;a7evertheless,o0;!pe;eh,mm;ah,eh,m1ol0;!s;ao,fao;aCeBi9o2u0;h,mph,rra0zzC;h,y;l1o0;r6y9;la,y0;! 0;c1moCsmok0;es;ow;!p hip hoor0;ay;ck,e,llo,y;ha1i,lleluj0;ah;!ha;ah,ee4o1r0;eat scott,r;l1od0sh; grief,bye;ly;! whiz;ell;e0h,t cetera,ureka,ww,xcuse me;k,p;'oh,a0rat,uh;m0ng;mit,n0;!it;mon,o0;ngratulations,wabunga;a2oo1r0tw,ye;avo,r;!ya;h,m; 1h0ka,las,men,rgh,ye;!a,em,h,oy;la\",Negative:\"true¦n0;ever,o0;n,t\",QuestionWord:\"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",Reflexive:\"true¦h4it5my5o1the0your2;ir1m1;ne3ur0;sel0;f,ves;er0im0;self\",Plural:\"true¦dick0gre0ones,records;ens\",\"Unit|Noun\":\"true¦cEfDgChBinchAk9lb,m6newt5oz,p4qt,t1y0;ardEd;able1b0ea1sp;!l,sp;spo1;a,t,x;on9;!b,g,i1l,m,p0;h,s;!les;!b,elvin,g,m;!es;g,z;al,b;eet,oot,t;m,up0;!s\",Value:\"true¦a few\",Imperative:\"true¦bewa0come he0;re\",\"Plural|Verb\":\"true¦leaves\",Demonym:\"true¦0:15;1:12;a0Vb0Oc0Dd0Ce08f07g04h02iYjVkTlPmLnIomHpEqatari,rCs7t5u4v3welAz2;am0Gimbabwe0;enezuel0ietnam0I;gAkrai1;aiwTex0hai,rinida0Ju2;ni0Prkmen;a5cotti4e3ingapoOlovak,oma0Spaniard,udRw2y0W;ede,iss;negal0Cr09;sh;mo0uT;o5us0Jw2;and0;a2eru0Fhilippi0Nortugu07uerto r0S;kist3lesti1na2raguay0;ma1;ani;ami00i2orweP;caragu0geri2;an,en;a3ex0Lo2;ngo0Drocc0;cedo1la2;gasy,y07;a4eb9i2;b2thua1;e0Cy0;o,t01;azakh,eny0o2uwaiI;re0;a2orda1;ma0Ap2;anO;celandic,nd4r2sraeli,ta01vo05;a2iB;ni0qi;i0oneU;aiAin2ondur0unO;di;amEe2hanai0reek,uatemal0;or2rm0;gi0;ilipino,ren8;cuadoVgyp4mira3ngli2sto1thiopi0urope0;shm0;ti;ti0;aPominUut3;a9h6o4roat3ub0ze2;ch;!i0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el6o4r3ul2;gaE;azi9it;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;genti2me1;ne;ba1ge2;ri0;ni0;gh0r2;ic0;an\",Organization:\"true¦0:4Q;a3Tb3Bc2Od2He2Df27g1Zh1Ti1Pj1Nk1Ll1Gm12n0Po0Mp0Cqu0Br02sTtHuCv9w3xiaomi,y1;amaha,m1Bou1w1B;gov,tu3C;a4e2iki1orld trade organizati33;leaRped0O;lls fargo,st1;fie2Hinghou2R;l1rner br3U;gree3Jl street journ2Im1E;an halOeriz2Xisa,o1;dafo2Yl1;kswagMvo;b4kip,n2ps,s1;a tod3Aps;es3Mi1;lev3Fted natio3C;er,s; mobi32aco beRd bOe9gi frida3Lh3im horto3Amz,o1witt3D;shi49y1;ota,s r 05;e 1in lizzy;b3carpen3Jdaily ma3Dguess w2holli0s1w2;mashing pumpki35uprem0;ho;ea1lack eyed pe3Xyr0Q;ch bo3Dtl0;l2n3Qs1xas instrumen1U;co,la m1F;efoni0Kus;a8cientology,e5ieme2Ymirnoff,np,o3pice gir6quare0Ata1ubaru;rbuc1to34;ks;ny,undgard1;en;a2x pisto1;ls;g1Wrs;few2Minsbur31lesfor03msu2E;adiohead,b8e4o1yana3C;man empi1Xyal 1;b1dutch she4;ank;a3d 1max,vl20;bu1c2Ahot chili peppe2Ylobst2N;ll;ders dige1Ll madrid;c,s;ant3Aizn2Q;a8bs,e5fiz2Ihilip4i3r1;emier 1udenti1D;leagTo2K;nk floyd,zza hut; morrBs;psi2tro1uge0E;br33chi0Tn33;!co;lant2Un1yp16; 2ason27da2P;ld navy,pec,range juli2xf1;am;us;aAb9e6fl,h5i4o1sa,vid3wa;k2tre dame,vart1;is;ia;ke,ntendo,ss0QvZ;l,s;c,st1Otflix,w1; 1sweek;kids on the block,york0D;a,c;nd22s2t1;ional aca2Po,we0U;a,c02d0S;aDcdonalCe9i6lb,o3tv,y1;spa1;ce;b1Tnsanto,ody blu0t1;ley cr1or0T;ue;c2t1;as,subisO;helin,rosoft;dica2rcedes benz,talli1;ca;id,re;ds;cs milk,tt19z24;a3e1g,ittle caesa1P; ore09novo,x1;is,mark,us; 1bour party;pres0Dz boy;atv,fc,kk,lm,m1od1O;art;iffy lu0Roy divisi0Jpmorgan1sa;! cha09;bm,hop,k3n1tv;g,te1;l,rpol;ea;a5ewlett pack1Vi3o1sbc,yundai;me dep1n1P;ot;tac1zbollah;hi;lliburt08sbro;eneral 6hq,ithub,l5mb,o2reen d0Ou1;cci,ns n ros0;ldman sachs,o1;dye1g0H;ar;axo smith kli04encoW;electr0Nm1;oto0Z;a5bi,c barcelo4da,edex,i2leetwood m03o1rito l0G;rd,xcY;at,fa,nancial1restoZ; tim0;na;cebook,nnie mae;b0Asa,u3xxon1; m1m1;ob0J;!rosceptics;aiml0De5isney,o4u1;nkin donu2po0Zran dur1;an;ts;j,w jon0;a,f lepp12ll,peche mode,r spieg02stiny's chi1;ld;aJbc,hFiDloudflaCnn,o3r1;aigsli5eedence clearwater reviv1ossra09;al;c7inba6l4m1o0Est09;ca2p1;aq;st;dplSg1;ate;se;a c1o chanQ;ola;re;a,sco1tigroup;! systems;ev2i1;ck fil a,na daily;r1y;on;d2pital o1rls jr;ne;bury,ill1;ac;aEbc,eBf9l5mw,ni,o1p,rexiteeU;ei3mbardiIston 1;glo1pizza;be;ng;o2ue c1;roV;ckbuster video,omingda1;le; g1g1;oodriL;cht2e ge0rkshire hathaw1;ay;el;cardi,idu,nana republ3s1xt5y5;f,kin robbi1;ns;ic;bYcTdidSerosmith,iRlKmEnheuser busDol,ppleAr6s4u3v2y1;er;is,on;di,todesk;hland o1sociated E;il;b3g2m1;co;os;ys; compu1be0;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 5catel2ta1;ir;! lu1;ce1;nt;jazeera,qae1;da;g,rbnb;as;/dc,a3er,tivision1;! blizz1;ard;demy of scienc0;es;ba\",Possessive:\"true¦its,my,our0thy;!s\",\"Noun|Verb\":\"true¦0:9W;1:AA;2:96;3:A3;4:9R;5:A2;6:9K;7:8N;8:7L;9:A8;A:93;B:8D;C:8X;a9Ob8Qc7Id6Re6Gf5Sg5Hh55i4Xj4Uk4Rl4Em40n3Vo3Sp2Squ2Rr21s0Jt02u00vVwGyFzD;ip,oD;ne,om;awn,e6Fie68;aOeMhJiHoErD;ap,e9Oink2;nd0rDuC;kDry,sh5Hth;!shop;ck,nDpe,re,sh;!d,g;e86iD;p,sD;k,p0t2;aDed,lco8W;r,th0;it,lk,rEsDt4ve,x;h,te;!ehou1ra9;aGen5FiFoD;iDmAte,w;ce,d;be,ew,sA;cuum,l4B;pDr7;da5gra6Elo6A;aReQhrPiOoMrGuEwiDy5Z;n,st;nDrn;e,n7O;aGeFiEoDu6;t,ub2;bu5ck4Jgg0m,p;at,k,nd;ck,de,in,nsDp,v7J;f0i8R;ll,ne,p,r4Yss,t94uD;ch,r;ck,de,e,le,me,p,re;e5Wow,u6;ar,e,ll,mp0st,xt;g,lDng2rg7Ps5x;k,ly;a0Sc0Ne0Kh0Fi0Dk0Cl0Am08n06o05pXquaBtKuFwD;ea88iD;ng,pe,t4;bGit,m,ppErD;fa3ge,pri1v2U;lDo6S;e6Py;!je8;aMeLiKoHrEuDy2;dy,ff,mb2;a85eEiDo5Pugg2;ke,ng;am,ss,t4;ckEop,p,rD;e,m;ing,pi2;ck,nk,t4;er,m,p;ck,ff,ge,in,ke,lEmp,nd,p2rDte,y;!e,t;k,l;aJeIiHlGoFrDur,y;ay,e56inDu3;g,k2;ns8Bt;a5Qit;ll,n,r87te;ed,ll;m,n,rk;b,uC;aDee1Tow;ke,p;a5Je4FiDo53;le,rk;eep,iDou4;ce,p,t;ateboa7Ii;de,gnDl2Vnk,p,ze;!al;aGeFiEoDuff2;ck,p,re,w;ft,p,v0;d,i3Ylt0;ck,de,pe,re,ve;aEed,nDrv1It;se,t2N;l,r4t;aGhedu2oBrD;aEeDibb2o3Z;en,w;pe,t4;le,n,r2M;cDfegua72il,mp2;k,rifi3;aZeHhy6LiGoEuD;b,in,le,n,s5X;a6ck,ll,oDpe,u5;f,t;de,ng,ot,p,s1W;aTcSdo,el,fQgPje8lOmMnLo17pJque6sFturn,vDwa6V;eDi27;al,r1;er74oFpe8tEuD;lt,me;!a55;l71rt;air,eaDly,o53;l,t;dezvo2Zt;aDedy;ke,rk;ea1i4G;a6Iist0r5N;act6Yer1Vo71uD;nd,se;a38o6F;ch,s6G;c1Dge,iEke,lly,nDp1Wt1W;ge,k,t;n,se;es6Biv0;a04e00hYiXlToNrEsy4uD;mp,n4rcha1sh;aKeIiHoDu4O;be,ceFdu3fi2grDje8mi1p,te6;amDe6W;!me;ed,ss;ce,de,nt;sDy;er6Cs;cti3i1;iHlFoEp,re,sDuCw0;e,i5Yt;l,p;iDl;ce,sh;nt,s5V;aEce,e32uD;g,mp,n7;ce,nDy;!t;ck,le,n17pe,tNvot;a1oD;ne,tograph;ak,eFnErDt;fu55mA;!c32;!l,r;ckJiInHrFsEtDu1y;ch,e9;s,te;k,tD;!y;!ic;nt,r,se;!a7;bje8ff0il,oErDutli3Qver4B;bAd0ie9;ze;a4ReFoDur1;d,tD;e,i3;ed,gle8tD;!work;aMeKiIoEuD;rd0;ck,d3Rld,nEp,uDve;nt,th;it5EkD;ey;lk,n4Brr5CsDx;s,ta2B;asuBn4UrDss;ge,it;il,nFp,rk3WsEtD;ch,t0;h,k,t0;da5n0oeuvB;aLeJiHoEuD;mp,st;aEbby,ck,g,oDve;k,t;d,n;cDe,ft,mAnIst;en1k;aDc0Pe4vK;ch,d,k,p,se;bFcEnd,p,t4uD;gh,n4;e,k;el,o2U;eEiDno4E;ck,d,ll,ss;el,y;aEo1OuD;i3mp;m,zz;mpJnEr46ssD;ue;c1Rdex,fluGha2k,se2HteDvoi3;nt,rD;e6fa3viD;ew;en3;a8le2A;aJeHiGoEuD;g,nt;l3Ano2Dok,pDr1u1;!e;ghli1Fke,nt,re,t;aDd7lp;d,t;ck,mGndFrEsh,tDu9;ch,e;bo3Xm,ne4Eve6;!le;!m0;aMear,ift,lKossJrFuD;arDe4Alp,n;antee,d;aFiEoDumb2;uCwth;ll,nd,p;de,sp;ip;aBoDue;ss,w;g,in,me,ng,s,te,ze;aZeWiRlNoJrFuD;ck,el,nDss,zz;c38d;aEoDy;st,wn;cDgme,me,nchi1;tuB;cFg,il,ld,rD;ce,e29mDwa31;!at;us;aFe0Vip,oDy;at,ck,od,wD;!er;g,ke,me,re,sh,vo1E;eGgFlEnDre,sh,t,x;an3i0Q;e,m,t0;ht,uB;ld;aEeDn3;d,l;r,tuB;ce,il,ll,rm,vo2W;cho,d7ffe8nMsKxFyeD;!baD;ll;cGerci1hFpDtra8;eriDo0W;en3me9;au6ibA;el,han7u1;caDtima5;pe;count0d,vy;a01eSiMoJrEuDye;b,el,mp,pli2X;aGeFiEoD;ne,p;ft,ll,nk,p,ve;am,ss;ft,g,in;cEd7ubt,wnloD;ad;k,u0E;ge6p,sFt4vD;e,iDor3;de;char7gui1h,liEpD;at4lay,u5;ke;al,bKcJfeIlGmaCposAsEtaD;il;e07iD;gn,re;ay,ega5iD;ght;at,ct;li04rea1;a5ut;b,ma7n3rDte;e,t;a0Eent0Dh06irc2l03oKrFuD;be,e,rDt;b,e,l,ve;aGeFoEuDy;sh;p,ss,wd;dAep;ck,ft,sh;at,de,in,lTmMnFordina5py,re,st,uDv0;gh,nDp2rt;s01t;ceHdu8fli8glomeIsFtDveN;a8rD;a6ol;e9tru8;ct;ntDrn;ra5;bHfoGmFpD;leDouCromi1;me9;aCe9it,u5;rt;at,iD;ne;lap1oD;r,ur;aEiDoud,ub;ck,p;im,w;aEeDip;at,ck,er;iGllen7nErD;ge,m,t;ge,nD;el;n,r;er,re;ke,ll,mp,noe,pGrXsFtEuDve;se,ti0I;alog,ch;h,t;!tuB;re;a03eZiXlToPrHuEyD;pa11;bb2ck2dgEff0mp,rDst,zz;den,n;et;anJeHiFoadEuD;i1sh;ca6;be,d7;ge;aDed;ch,k;ch,d;aFg,mb,nEoDrd0tt2x,ycott;k,st,t;d,e;rd,st;aFeCiDoYur;nk,tz;nd;me;as,d,ke,nd,opsy,tD;!ch,e;aFef,lt,nDt;d,efA;it;r,t;ck,il,lan3nIrFsEtt2;le;e,h;!gDk;aDe;in;!d,g,k;bu1c05dZge,iYlVnTppQrLsIttGucEwaD;rd;tiD;on;aDempt;ck;k,sD;i6ocia5;st;chFmD;!oD;ur;!iD;ve;eEroa4;ch;al;chDg0sw0;or;aEt0;er;rm;d,m,r;dreHvD;an3oD;ca5;te;ce;ss;cDe,he,t;eFoD;rd,u9;nt;nt,ss;se\",Actor:\"true¦0:7B;1:7G;2:6A;3:7F;4:7O;5:7K;a6Nb62c4Ud4Be41f3Sg3Bh30i2Uj2Qkin2Pl2Km26n1Zo1Sp0Vqu0Tr0JsQtJuHvEw8yo6;gi,ut6;h,ub0;aAe9i8o7r6;estl0it0;m2rk0;fe,nn0t2Bza2H;atherm2ld0;ge earn0it0nder0rri1;eter7i6oyF;ll5Qp,s3Z;an,ina2U;n6s0;c6Uder03;aoisea23e9herapi5iktok0o8r6ut1yco6S;a6endseLo43;d0mp,nscri0Bvel0;ddl0u1G;a0Qchn7en6na4st0;ag0;i3Oo0D;aiXcUeRhPiMki0mu26oJpGquaFtBu7wee6;p0theart;lt2per7r6;f0ge6Iviv1;h6inten0Ist5Ivis1;ero,um2;a8ep7r6;ang0eam0;bro2Nc2Ofa2Nmo2Nsi20;ff0tesm2;tt0;ec7ir2Do6;kesp59u0M;ia5Jt3;l7me6An,rcere6ul;r,ss;di0oi5;n7s6;sy,t0;g0n0;am2ephe1Iow6;girl,m2r2Q;cretInior cit3Fr6;gea4v6;a4it1;hol4Xi7reen6ulpt1;wr2C;e01on;l1nt;aEe9o8u6;l0nn6;er up,ingE;g40le mod3Zof0;a4Zc8fug2Ppo32searQv6;ere4Uolution6;ary;e6luYru22;ptio3T;bbi,dic5Vpp0;arter6e2Z;back;aYeWhSiRlOoKr8sycho7u6;nk,p31;logi5;aGeDiBo6;d9fess1g7ph47s6;pe2Ktitu51;en6ramm0;it1y;igy,uc0;est4Nme mini0Unce6s3E;!ss;a7si6;de4;ch0;ctiti39nk0P;dca0Oet,li6pula50rnst42;c2Itic6;al scie6i2;nti5;a6umb0;nn0y6;er,ma4Lwright;lgrim,one0;a8iloso7otogra7ra6ysi1V;se;ph0;ntom,rmaci5;r6ssi1T;form0s4O;i3El,nel3Yr8st1tr6wn;i6on;arWot;ent4Wi42tn0;ccupa4ffBp8r7ut6;ca5l0B;ac4Iganiz0ig2Fph2;er3t6;i1Jomet6;ri5;ic0spring;aBe9ie4Xo7u6;n,rser3J;b6mad,vi4V;le2Vo4D;i6mesis,phew;ce,ghb1;nny,rr3t1X;aEeDiAo7u6yst1Y;m8si16;der3gul,m7n6th0;arDk;!my;ni7s6;f02s0Jt0;on,st0;chan1Qnt1rcha4;gi9k0n8rtyr,t6y1;e,riar6;ch;ag0iac;ci2stra3I;a7e2Aieutena4o6;rd,s0v0;bor0d7ndlo6ss,urea3Fwy0ym2;rd;!y;!s28;e8o7u6;ggl0;gg0urna2U;st0;c3Hdol,llu3Ummigra4n6; l9c1Qfa4habi42nov3s7ve6;nt1stig3;pe0Nt6;a1Fig3ru0M;aw;airFeBistoAo8u6ygie1K;man6sba2H;!ita8;bo,st6usekN;age,e3P;ri2;ir,r6;m7o6;!ine;it;dress0sty2C;aLeIhostGirl26ladi3oCrand7u6;e5ru;c9daug0Jfa8m7pa6s2Y;!re4;a,o6;th0;hi1B;al7d6lf0;!de3A;ie,k6te26;eep0;!wr6;it0;isha,n6;i6tl04;us;mbl0rden0;aDella,iAo7r6;eela2Nie1P;e,re6ster pare4;be1Hm2r6st0;unn0;an2ZgZlmm17nanci0r6tt0;e6st la2H; marsh2OfigXm2;rm0th0;conoEdDlectriCm8n7x6;amin0cellency,i2A;emy,trepreneur,vironmenta1J;c8p6;er1loye6;e,r;ee;ci2;it1;mi5;aKeBi8ork,ri7u6we02;de,tche2H;ft0v0;ct3eti7plom2Hre6va;ct1;ci2ti2;aDcor3fencCi0InAput9s7tectLvel6;op0;ce1Ge6ign0;rt0;ee,y;iz6;en;em2;c1Ml0;d8nc0redev7ug6;ht0;il;!dy;a06e04fo,hXitizenWlToBr9u6;r3stomer6;! representat6;ive;e3it6;ic;lJmGnAord9rpor1Nu7w6;boy,ork0;n6ri0;ciTte1Q;in3;fidantAgressSs9t6;e0Kr6;ibut1o6;ll0;tab13ul1O;!e;edi2m6pos0rade;a0EeQissi6;on0;leag8on7um6;ni5;el;ue;e6own;an0r6;ic,k;!s;a9e7i6um;ld;erle6f;ad0;ir7nce6plFract0;ll1;m2wI;lebri6o;ty;dBptAr6shi0;e7pe6;nt0;r,t6;ak0;ain;et;aMeLiJlogg0oErBu6;dd0Fild0rgl9siness6;m2p7w6;om2;ers05;ar;i7o6;!k0th0;cklay0de,gadi0;hemi2oge8y6;!frie6;nd;ym2;an;cyc6sR;li5;atbox0ings;by,nk0r6;b0on7te6;nd0;!e07;c04dWge4nQpLrHsFtAu7yatull6;ah;nt7t6;h1oG;!ie;h8t6;e6orney;nda4;ie5le6;te;sis00tron6;aut,om0;chbis8isto7tis6;an,t;crU;hop;ost9p6;ari6rentiS;ti6;on;le;a9cest1im3nou8y6;bo6;dy;nc0;ly5rc6;hi5;mi8v6;entur0is1;er;ni7r6;al;str3;at1;or;counBquaintanArob9t6;ivi5or,re6;ss;st;at;ce;ta4;nt\",\"Adj|Noun\":\"true¦0:16;a1Db17c0Ud0Re0Mf0Dg0Ah08i06ju05l02mWnUoSpNrIsBt7u4v1watershed;a1ision0Z;gabo4nilla,ria1;b0Vnt;ndergr1pstairs;adua14ou1;nd;a3e1oken,ri0;en,r1;min0rori13;boo,n;age,e5ilv0Flack,o3quat,ta2u1well;bordina0Xper5;b0Lndard;ciali0Yl1vereign;e,ve16;cret,n1ri0;ior;a4e2ou1ubbiL;nd,tiY;ar,bBl0Wnt0p1side11;resent0Vublican;ci0Qsh;a4eriodic0last0Zotenti0r1;emi2incip0o1;!fession0;er,um;rall4st,tie0U;ff1pposi0Hv0;ens0Oi0C;agg01ov1uts;el;a5e3iniatJo1;bi01der07r1;al,t0;di1tr0N;an,um;le,riG;attOi2u1;sh;ber0ght,qC;stice,veniT;de0mpressioYn1;cumbe0Edividu0no0Dsta0Eterim;alf,o1umdrum;bby,melF;en2old,ra1;ph0Bve;er0ious;a7e5i4l3u1;git03t1;ure;uid;ne;llow,m1;aFiL;ir,t,vo1;riOuriO;l3p00x1;c1ecutUpeV;ess;d1iK;er;ar2e1;mographUrivO;k,l2;hiGlassSo2rude,unn1;ing;m5n1operK;creCstitueOte2vertab1;le;mpor1nt;ary;ic,m2p1;anion,lex;er2u1;ni8;ci0;al;e5lank,o4r1;i2u1;te;ef;ttom,urgeois;st;cadem9d6l2ntarct9r1;ab,ct8;e3tern1;at1;ive;rt;oles1ult;ce1;nt;ic\",\"Adj|Past\":\"true¦0:4Q;1:4C;2:4H;3:4E;a44b3Tc36d2Je29f20g1Wh1Si1Jj1Gkno1Fl1Am15n12o0Xp0Mqu0Kr08sLtEuAv9w4yellow0;a7ea6o4rinkl0;r4u3Y;n,ri0;k31th3;rp0sh0tZ;ari0e1O;n5p4s0;d1li1Rset;cov3derstood,i4;fi0t0;a8e3Rhr7i6ouTr4urn0wi4C;a4imm0ou2G;ck0in0pp0;ed,r0;eat2Qi37;m0nn0r4;get0ni2T;aOcKeIhGimFm0Hoak0pDt7u4;bsid3Ogge44s4;pe4ta2Y;ct0nd0;a8e7i2Eok0r5u4;ff0mp0nn0;ength2Hip4;ed,p0;am0reotyp0;in0t0;eci4ik0oH;al3Efi0;pRul1;a4ock0ut;d0r0;a4c1Jle2t31;l0s3Ut0;a6or5r4;at4e25;ch0;r0tt3;t4ut0;is2Mur1;aEe5o4;tt0;cAdJf2Bg9je2l8m0Knew0p7qu6s4;eTpe2t4;or0ri2;e3Dir0;e1lac0;at0e2Q;i0Rul1;eiv0o4ycl0;mme2Lrd0v3;in0lli0ti2A;a4ot0;li28;aCer30iBlAo9r5u4;mp0zzl0;e6i2Oo4;ce2Fd4lo1Anou30pos0te2v0;uc0;fe1CocCp0Iss0;i2Kli1L;ann0e2CuS;ck0erc0ss0;ck0i2Hr4st0;allLk0;bse7c6pp13rgan2Dver4;lo4whelm0;ok0;cupi0;rv0;aJe5o4;t0uri1A;ed0gle2;a6e5ix0o4ut0ys1N;di1Nt15u26;as0Clt0;n4rk0;ag0ufact0A;e6i5o4;ad0ck0st,v0;cens0m04st0;ft,v4;el0;tt0wn;a5o15u4;dg0s1B;gg0;llumSmpAn4sol1;br0cre1Ldebt0f8jZspir0t5v4;it0olv0;e4ox0Y;gr1n4re23;d0si15;e2l1o1Wuri1;li0o01r4;ov0;a6e1o4um03;ok0r4;ri0Z;mm3rm0;i6r5u4;a1Bid0;a0Ui0Rown;ft0;aAe9i8l6oc0Ir4;a4i0oz0Y;ctHg19m0;avo0Ju4;st3;ni08tt0x0;ar0;d0il0sc4;in1;dCl1mBn9quipp0s8x4;agger1c6p4te0T;a0Se4os0;ct0rie1D;it0;cap0tabliZ;cha0XgFha1As4;ur0;a0Zbarra0N;i0Buc1;aMeDi5r4;a01i0;gni08miniSre2s4;a9c6grun0Ft4;o4re0Hu17;rt0;iplWou4;nt0r4;ag0;bl0;cBdRf9l8p7ra6t5v4;elop0ot0;ail0ermQ;ng0;re07;ay0ight0;e4in0o0M;rr0;ay0enTor1;m5t0z4;ed,zl0;ag0p4;en0;aPeLhIlHo9r6u4;lt4r0stom03;iv1;a5owd0u4;sh0;ck0mp0;d0loAm7n4ok0v3;centr1f5s4troC;id3olid1;us0;b5pl4;ic1;in0;r0ur0;assi9os0utt3;ar5i4;ll0;g0m0;lebr1n6r4;ti4;fi0;tralJ;g0lcul1;aDewild3iCl9o7r5urn4;ed,t;ok4uis0;en;il0r0t4und;tl0;e5i4;nd0;ss0;as0;ffl0k0laMs0tt3;bPcNdKfIg0lFmaz0nDppBrm0ss9u5wa4;rd0;g5thor4;iz0;me4;nt0;o6u4;m0r0;li0re4;ci1;im1ticip1;at0;a5leg0t3;er0;rm0;fe2;ct0;ju5o7va4;nc0;st0;ce4knowledg0;pt0;and5so4;rb0;on0;ed\",Singular:\"true¦0:5J;1:5H;2:4W;3:4S;4:52;5:57;6:5L;7:56;8:5B;a52b4Lc3Nd35e2Xf2Og2Jh28in24j23k22l1Um1Ln1Ho1Bp0Rqu0Qr0FsZtMuHvCw9x r58yo yo;a9ha3Po3Q;f3i4Rt0Gy9;! arou39;arCeAideo ga2Qo9;cabu4Jl5C;gOr9t;di4Zt1Y;iety,ni4P;nBp30rAs 9;do43s5E;bani1in0;coordinat3Ader9;estima1to24we41; rex,aKeJhHiFoErBuAv9;! show;m2On2rntLto1D;agedy,ib9o4E;e,u9;n0ta46;ni1p2rq3L;c,er,m9;etF;ing9ree26;!y;am,mp3F;ct2le6x return;aNcMeKhor4QiJkHoGpin off,tDuBy9;ll9ner7st4T;ab2X;b9i1n28per bowl,rro1X;st3Ltot0;atAipe2Go1Lrate7udent9;! lo0I;i39u1;ft ser4Lmeo1I;elet5i9;ll,r3V;b38gn2Tte;ab2Jc9min3B;t,urity gua2N;e6ho2Y;bbatic0la3Jndwi0Qpi5;av5eDhetor2iAo9;de6om,w;tAv9;erb2C;e,u0;bDcBf9publ2r10spi1;er9orm3;e6r0;i9ord label;p2Ht0;a1u46;estion mark,ot2F;aPeMhoLiIlGoErAu9yram1F;ddi3HpErpo1Js3J;eBo9;bl3Zs9;pe3Jta1;dic1Rmi1Fp1Qroga8ss relea1F;p9rt0;py;a9ebisci1;q2Dte;cn2eAg9;!gy;!r;ne call,tocoK;anut,dAr9t0yo1;cen3Jsp3K;al,est0;nop4rAt9;e,hog5;adi11i2V;atme0bj3FcBpia1rde0thers,utspok5ve9wn3;n,r9;ti0Pview;cuAe9;an;pi3;arBitAot9umb3;a2Fhi2R;e,ra1;cot2ra8;aFeCiAo9ur0;nopo4p18rni2Nsq1Rti36uld;c,li11n0As9tt5;chief,si34;dAnu,t9;al,i3;al,ic;gna1mm0nd15rsupi0te9yf4;ri0;aDegCiBu9;ddi1n9;ch;me,p09; Be0M;bor14y9; 9er;up;eyno1itt5;el4ourn0;cBdices,itia8ni25sAtel0Lvert9;eb1J;e28titu1;en8i2T;aIeEighDoAu9;man right,s22;me9rmoFsp1Ftb0K;! r9;un; scho0YriY;a9i1N;d9v5; start,pho9;ne;ndful,sh brown,v5ze;aBelat0Ilaci3r9ul4yp1S;an9enadi3id;a1Cd slam,ny;df4r9;l2ni1I;aGeti1HiFlu1oCrAun9;er0;ee market,i9onti3;ga1;l4ur9;so9;me;ePref4;br2mi4;conoFffi7gg,lecto0Rmbas1EnCpidem2s1Zth2venBxAyel9;id;ampZempl0Nte6;i19t;er7terp9;ri9;se;my;eLiEoBr9ump tru0U;agonf4i9;er,ve thru;cAg7i4or,ssi3wn9;side;to0EumenE;aEgniDnn3sAvide9;nd;conte6incen8p9tri11;osi9;ti0C;ta0H;le0X;athBcAf9ni0terre6;ault 05err0;al,im0;!b9;ed;aWeThMiLlJoDr9;edit caBuc9;ib9;le;rd;efficDke,lCmmuniqLnsApi3rr0t0Xus9yo1;in;erv9uI;ato02;ic,lQ;ie6;er7i9oth;e6n2;ty,vil wM;aDeqCick5ocoBr9;istmas car9ysanthemum;ol;la1;ue;ndeli3racteri9;st2;iAllEr9;e0tifica1;liZ;hi3nFpErCt9ucus;erpi9hedr0;ll9;ar;!bohyd9ri3;ra1;it0;aAe,nib0t9;on;l,ry;aMeLiop2leJoHrDu9;nny,r9tterf4;g9i0;la9;ry;eakAi9;ck;fa9throB;st;dy,ro9wl;ugh;mi9;sh;an,l4;nkiArri3;er;ng;cSdMlInFppeti1rDsBtt2utop9;sy;ic;ce6pe9;ct;r9sen0;ay;ecAoma4tiA;ly;do1;i5l9;er7y;gy;en; hominDjAvan9;tage;ec8;ti9;ve;em;cCeAqui9;tt0;ta1;te;iAru0;al;de6;nt\",\"Person|Noun\":\"true¦a0Eb07c03dWeUfQgOhLjHkiGlFmCnBolive,p7r4s3trini06v1wa0;ng,rd,tts;an,enus,iol0;a,et;ky,onPumm09;ay,e1o0uby;bin,d,se;ed,x;a2e1o0;l,tt04;aLnJ;dYge,tR;at,orm;a0eloW;t0x,ya;!s;a9eo,iH;ng,tP;a2e1o0;lGy;an,w3;de,smi4y;a0erb,iOolBuntR;ll,z0;el;ail,e0iLuy;ne;a1ern,i0lo;elds,nn;ith,n0;ny;a0dEmir,ula,ve;rl;a4e3i1j,ol0;ly;ck,x0;ie;an,ja;i0wn;sy;am,h0liff,rystal;a0in,ristian;mbers,ri0;ty;a4e3i2o,r0ud;an0ook;dy;ll;nedict,rg;k0nks;er;l0rt;fredo,ma\",\"Actor|Verb\":\"true¦aCb8c5doctor,engineAfool,g3host,judge,m2nerd,p1recruit,scout,ushAvolunteAwi0;mp,tneA;arent,ilot;an,ime;eek,oof,r0uide;adu8oom;ha1o0;ach,nscript,ok;mpion,uffeur;o2u0;lly,tch0;er;ss;ddi1ffili0rchite1;ate;ct\",MaleName:\"true¦0:H6;1:FZ;2:DS;3:GQ;4:CZ;5:FV;6:GM;7:FP;8:GW;9:ET;A:C2;B:GD;aF8bE1cCQdBMeASfA1g8Yh88i7Uj6Sk6Bl5Mm48n3So3Ip33qu31r26s1Et0Ru0Ov0CwTxSyHzC;aCor0;cChC1karia,nAT;!hDkC;!aF6;!ar7CeF5;aJevgenBSoEuC;en,rFVsCu3FvEF;if,uf;nDs6OusC;ouf,s6N;aCg;s,tC;an,h0;hli,nCrosE1ss09;is,nC;!iBU;avi2ho5;aPeNiDoCyaEL;jcieBJlfgang,odrFutR;lFnC;f8TsC;lCt1;ow;bGey,frEhe4QlC;aE5iCy;am,e,s;ed8iC;d,ed;eAur;i,ndeD2rn2sC;!l9t1;lDyC;l1ne;lDtC;!er;aCHy;aKernDAiFladDoC;jteB0lodymyr;!iC;mFQsDB;cFha0ktBZnceDrgCOvC;a0ek;!nC;t,zo;!e4StBV;lCnC7sily;!entC;in9J;ghE2lCm70nax,ri,sm0;riCyss87;ch,k;aWeRhNiLoGrEuDyC;!l2roEDs1;n6r6E;avD0eCist0oy,um0;ntCRvBKy;bFdAWmCny;!asDmCoharu;aFFie,y;!z;iA6y;mCt4;!my,othy;adEeoDia0SomC;!as;!dor91;!de4;dFrC;enBKrC;anBJeCy;ll,nBI;!dy;dgh,ha,iCnn2req,tsu5V;cDAka;aYcotWeThPiMlobod0oKpenc2tEurDvenAEyCzym1;ed,lvest2;aj,e9V;anFeDuC;!aA;fan17phEQvCwaA;e77ie;!islaCl9;v,w;lom1rBuC;leymaDHta;dDgmu9UlCm1yabonga;as,v8B;!dhart8Yn9;aEeClo75;lCrm0;d1t1;h9Jne,qu1Jun,wn,yne;aDbastiEDk2Yl5Mpp,rgCth,ymoCU;e1Dio;m4n;!tC;!ie,y;eDPlFmEnCq67tosCMul;dCj2UtiA5;e01ro;!iATkeB6mC4u5;!ik,vato9K;aZeUheC8iRoGuDyC;an,ou;b99dDf4peAssC;!elEG;ol00y;an,bLc7MdJel,geIh0lHmGnEry,sDyC;!ce;ar7Ocoe,s;!aCnBU;ld,n;an,eo;a7Ef;l7Jr;e3Eg2n9olfo,riC;go;bBNeDH;cCl9;ar87c86h54kCo;!ey,ie,y;cFeA3gDid,ubByCza;an8Ln06;g85iC;naC6s;ep;ch8Kfa5hHin2je8HlGmFndEoHpha5sDul,wi36yC;an,mo8O;h9Im4;alDSol3O;iD0on;f,ph;ul;e9CinC;cy,t1;aOeLhilJiFrCyoG;aDeC;m,st1;ka85v2O;eDoC;tr;r8GtC;er,ro;!ipCl6H;!p6U;dCLrcy,tC;ar,e9JrC;!o7;b9Udra8So9UscAHtri62ulCv8I;!ie,o7;ctav6Ji2lImHndrBRrGsDtCum6wB;is,to;aDc6k6m0vCwaBE;al79;ma;i,vR;ar,er;aDeksandr,ivC;er,i2;f,v;aNeLguyBiFoCu3O;aDel,j4l0ma0rC;beAm0;h,m;cFels,g5i9EkDlC;es,s;!au,h96l78olaC;!i,y;hCkCol76;ol75;al,d,il,ls1vC;ilAF;hom,tC;e,hC;anCy;!a5i5;aYeViLoGuDyC;l4Nr1;hamDr84staC;fa,p6E;ed,mG;di10e,hamEis4JntDritz,sCussa;es,he;e,y;ad,ed,mC;ad,ed;cGgu5hai,kFlEnDtchC;!e8O;a9Pik;house,o7t1;ae73eC3ha8Iolaj;ah,hDkC;!ey,y;aDeC;al,l;el,l;hDlv3rC;le,ri8Ev4T;di,met;ay0c00gn4hWjd,ks2NlTmadZnSrKsXtDuric7VxC;imilBKwe8B;eHhEi69tCus,y69;!eo,hCia7;ew,i67;eDiC;as,eu,s;us,w;j,o;cHiGkFlEqu8Qsha83tCv3;iCy;!m,n;in,on;el,o7us;a6Yo7us;!elCin,o7us;!l8o;frAEi5Zny,u5;achDcoCik;lm;ai,y;amDdi,e5VmC;oud;adCm6W;ou;aulCi9P;ay;aWeOiMloyd,oJuDyC;le,nd1;cFdEiDkCth2uk;a7e;gi,s,z;ov7Cv6Hw6H;!as,iC;a6Een;g0nn52renDuCvA4we7D;!iS;!zo;am,n4oC;n5r;a9Yevi,la5KnHoFst2thaEvC;eCi;nte;bo;nCpo8V;!a82el,id;!nC;aAy;mEnd1rDsz73urenCwr6K;ce,t;ry,s;ar,beAont;aOeIhalHiFla4onr63rDu5SylC;e,s;istCzysztof;i0oph2;er0ngsl9p,rC;ilA9k,ollos;ed,id;en0iGnDrmCv4Z;it;!dDnCt1;e2Ny;ri4Z;r,th;cp2j4mEna8BrDsp6them,uC;ri;im,l;al,il;a03eXiVoFuC;an,lCst3;en,iC;an,en,o,us;aQeOhKkub4AnIrGsDzC;ef;eDhCi9Wue;!ua;!f,ph;dCge;i,on;!aCny;h,s,th6J;anDnC;!ath6Hie,n72;!nC;!es;!l,sCy;ph;o,qu3;an,mC;!i,m6V;d,ffFns,rCs4;a7JemDmai7QoCry;me,ni1H;i9Dy;!e73rC;ey,y;cKdBkImHrEsDvi2yC;dBs1;on,p2;ed,oDrCv67;e6Qod;d,s61;al,es5Wis1;a,e,oCub;b,v;ob,qu13;aTbNchiMgLke53lija,nuKonut,rIsEtCv0;ai,suC;ki;aDha0i8XmaCsac;el,il;ac,iaC;h,s;a,vinCw3;!g;k,nngu6X;nac1Xor;ka;ai,rahC;im;aReLoIuCyd6;beAgGmFsC;eyDsC;a3e3;in,n;ber5W;h,o;m2raDsse3wC;a5Pie;c49t1K;a0Qct3XiGnDrC;beAman08;dr7VrC;iCy2N;!k,q1R;n0Tt3S;bKlJmza,nIo,rEsDyC;a5KdB;an,s0;lEo67r2IuCv9;hi5Hki,tC;a,o;an,ey;k,s;!im;ib;a08e00iUlenToQrMuCyorgy;iHnFsC;!taC;f,vC;!e,o;n6tC;er,h2;do,lC;herDlC;auCerQ;me;aEegCov2;!g,orC;!io,y;dy,h7C;dfr9nza3XrDttfC;ri6C;an,d47;!n;acoGlEno,oCuseppe;rgiCvan6O;!o,s;be6Ies,lC;es;mo;oFrC;aDha4HrCt;it,y;ld,rd8;ffErgC;!e7iCy;!os;!r9;bElBrCv3;eCla1Nr4Hth,y;th;e,rC;e3YielC;!i4;aXeSiQlOorrest,rCyod2E;aHedFiC;edDtC;s,z;ri18;!d42eri11riC;ck,k;nCs2;cEkC;ie,lC;in,yn;esLisC;!co,z3M;etch2oC;ri0yd;d5lConn;ip;deriFliEng,rC;dinaCg4nan0B;nd8;pe,x;co;bCdi,hd;iEriC;ce,zC;io;an,en,o;benez2dZfrYit0lTmMnJo3rFsteb0th0ugenEvCymBzra;an,eCge4D;ns,re3K;!e;gi,iDnCrol,v3w3;est8ie,st;cCk;!h,k;o0DriCzo;co,qC;ue;aHerGiDmC;aGe3A;lCrh0;!iC;a10o,s;s1y;nu5;beAd1iEliDm2t1viCwood;n,s;ot28s;!as,j5Hot,sC;ha;a3en;!dGg6mFoDua2QwC;a2Pin;arC;do;oZuZ;ie;a04eTiOmitrNoFrag0uEwDylC;an,l0;ay3Hig4D;a3Gdl9nc0st3;minFnDri0ugCvydGy2S;!lF;!a36nCov0;e1Eie,y;go,iDykC;as;cCk;!k;i,y;armuFetDll1mitri7neCon,rk;sh;er,m6riC;ch;id;andLepak,j0lbeAmetri4nIon,rGsEvDwCxt2;ay30ey;en,in;hawn,moC;nd;ek,riC;ck;is,nC;is,y;rt;re;an,le,mKnIrEvC;e,iC;!d;en,iEne0PrCyl;eCin,yl;l45n;n,o,us;!iCny;el,lo;iCon;an,en,on;a0Fe0Ch03iar0lRoJrFuDyrC;il,us;rtC;!is;aEistC;iaCob12;no;ig;dy,lInErC;ey,neliCy;s,us;nEor,rDstaC;nt3;ad;or;by,e,in,l3t1;aHeEiCyde;fCnt,ve;fo0Xt1;menDt4;us;s,t;rFuDyC;!t1;dCs;e,io;enC;ce;aHeGrisC;!toC;phCs;!eC;!r;st2t;d,rCs;b5leC;s,y;cDdrCs6;ic;il;lHmFrC;ey,lDroCy;ll;!o7t1;er1iC;lo;!eb,v3;a09eZiVjorn,laUoSrEuCyr1;ddy,rtKst2;er;aKeFiEuDyC;an,ce,on;ce,no;an,ce;nDtC;!t;dDtC;!on;an,on;dFnC;dDisC;lav;en,on;!foOl9y;bby,gd0rCyd;is;i0Lke;bElDshC;al;al,lL;ek;nIrCshoi;at,nEtC;!raC;m,nd;aDhaCie;rd;rd8;!iDjam3nCs1;ie,y;to;kaMlazs,nHrC;n9rDtC;!holomew;eCy;tt;ey;dCeD;ar,iC;le;ar1Nb1Dd16fon15gust3hm12i0Zja0Yl0Bm07nTputsiSrGsaFugustEveDyCziz;a0kh0;ry;o,us;hi;aMchiKiJjun,mHnEon,tCy0;em,hCie,ur8;ur;aDoC;!ld;ud,v;aCin;an,nd8;!el,ki;baCe;ld;ta;aq;aMdHgel8tCw6;hoFoC;iDnC;!i8y;ne;ny;er7rCy;eDzC;ej;!as,i,j,s,w;!s;s,tolC;iCy;!y;ar,iEmaCos;nu5r;el;ne,r,t;aVbSdBeJfHiGl01onFphonsEt1vC;aPin;on;e,o;so,zo;!sR;!onZrC;ed;c,jaHksFssaHxC;!andC;er,rC;e,os,u;andCei;ar,er,r;ndC;ro;en;eDrecC;ht;rt8;dd3in,n,sC;taC;ir;ni;dDm6;ar;an,en;ad,eC;d,t;in;so;aGi,olErDvC;ik;ian8;f8ph;!o;mCn;!a;dGeFraDuC;!bakr,lfazl;hCm;am;!l;allFel,oulaye,ulC;!lDrahm0;an;ah,o;ah;av,on\",Uncountable:\"true¦0:2E;1:2L;2:33;a2Ub2Lc29d22e1Rf1Ng1Eh16i11j0Yk0Wl0Rm0Hn0Do0Cp03rZsLt9uran2Jv7w3you gu0E;a5his17i4oo3;d,l;ldlife,ne;rm8t1;apor,ernacul29i3;neg28ol1Otae;eDhBiAo8r4un3yranny;a,gst1B;aff2Oea1Ko4ue nor3;th;o08u3;bleshoot2Ose1Tt;night,othpas1Vwn3;foEsfoE;me off,n;er3und1;e,mod2S;a,nnis;aDcCeBhAi9ki8o7p6t4u3weepstak0;g1Unshi2Hshi;ati08e3;am,el;ace2Keci0;ap,cc1meth2C;n,ttl0;lk;eep,ingl0or1C;lf,na1Gri0;ene1Kisso1C;d0Wfe2l4nd,t3;i0Iurn;m1Ut;abi0e4ic3;e,ke15;c3i01laxa11search;ogni10rea10;a9e8hys7luto,o5re3ut2;amble,mis0s3ten20;en1Zs0L;l3rk;i28l0EyH; 16i28;a24tr0F;nt3ti0M;i0s;bstetri24vercrowd1Qxyg09;a5e4owada3utella;ys;ptu1Ows;il poliZtional securi2;aAe8o5u3;m3s1H;ps;n3o1K;ey,o3;gamy;a3cha0Elancholy,rchandi1Htallurgy;sl0t;chine3g1Aj1Hrs,thema1Q; learn1Cry;aught1e6i5ogi4u3;ck,g12;c,s1M;ce,ghtn18nguis1LteratWv1;ath1isVss;ara0EindergartPn3;icke0Aowled0Y;e3upit1;a3llyfiGwel0G;ns;ce,gnor6mp5n3;forma00ter3;net,sta07;atiSort3rov;an18;a7e6isto09o3ung1;ckey,mework,ne4o3rseradi8spitali2use arrest;ky;s2y;adquarteXre;ir,libut,ppiHs3;hi3te;sh;ene8l6o5r3um,ymnas11;a3eZ;niUss;lf,re;ut3yce0F;en; 3ti0W;edit0Hpo3;ol;aNicFlour,o4urnit3;ure;od,rgive3uri1wl;ness;arCcono0LducaBlectr9n7quip8thi0Pvery6x3;ist4per3;ti0B;en0J;body,o08th07;joy3tertain3;ment;ici2o3;ni0H;tiS;nings,th;emi02i6o4raugh3ynas2;ts;pe,wnstai3;rs;abet0ce,s3;honZrepu3;te;aDelciChAivi07l8o3urrency;al,ld w6mmenta5n3ral,ttIuscoB;fusiHt 3;ed;ry;ar;assi01oth0;es;aos,e3;eMwK;us;d,rO;a8i6lood,owlHread5u3;ntGtt1;er;!th;lliarJs3;on;g3ss;ga3;ge;cKdviJeroGirFmBn6ppeal court,r4spi3thleL;rin;ithmet3sen3;ic;i6y3;o4th3;ing;ne;se;en5n3;es2;ty;ds;craft;bi8d3nau7;yna3;mi6;ce;id,ous3;ti3;cs\",Infinitive:\"true¦0:9G;1:9T;2:AD;3:90;4:9Z;5:84;6:AH;7:A9;8:92;9:A0;A:AG;B:AI;C:9V;D:8R;E:8O;F:97;G:6H;H:7D;a94b8Hc7Jd68e4Zf4Mg4Gh4Ai3Qj3Nk3Kl3Bm34nou48o2Vp2Equ2Dr1Es0CtZuTvRwI;aOeNiLors5rI;eJiI;ng,te;ak,st3;d5e8TthI;draw,er;a2d,ep;i2ke,nIrn;d1t;aIie;liADniAry;nJpI;ho8Llift;cov1dJear8Hfound8DlIplug,rav82tie,ve94;eaAo3X;erIo;cut,go,staAFvalA3w2G;aSeQhNoMrIu73;aIe72;ffi3Smp3nsI;aBfo7CpI;i8oD;pp3ugh5;aJiJrIwaD;eat5i2;nk;aImA0;ch,se;ck3ilor,keImp1r8L;! paD;a0Ic0He0Fh0Bi0Al08mugg3n07o05p02qu01tUuLwI;aJeeIim;p,t5;ll7Wy;bNccMffLggeCmmKppJrI;mouFpa6Zvi2;o0re6Y;ari0on;er,i4;e7Numb;li9KmJsiIveD;de,st;er9it;aMe8MiKrI;ang3eIi2;ng27w;fIng;f5le;b,gg1rI;t3ve;a4AiA;a4UeJit,l7DoI;il,of;ak,nd;lIot7Kw;icEve;atGeak,i0O;aIi6;m,y;ft,ng,t;aKi6CoJriIun;nk,v6Q;ot,rt5;ke,rp5tt1;eIll,nd,que8Gv1w;!k,m;aven9ul8W;dd5tis1Iy;a0FeKiJoI;am,t,ut;d,p5;a0Ab08c06d05f01group,hea00iZjoi4lXmWnVpTq3MsOtMup,vI;amp,eJiIo3B;sEve;l,rI;e,t;i8rI;ie2ofE;eLiKpo8PtIurfa4;o24rI;aHiBuctu8;de,gn,st;mb3nt;el,hra0lIreseF;a4e71;d1ew,o07;aHe3Fo2;a7eFiIo6Jy;e2nq41ve;mbur0nf38;r0t;inKleBocus,rJuI;el,rbiA;aBeA;an4e;aBu4;ei2k8Bla43oIyc3;gni39nci3up,v1;oot,uI;ff;ct,d,liIp;se,ze;tt3viA;aAenGit,o7;aWerUinpoiFlumm1LoTrLuI;b47ke,niArIt;poDsuI;aFe;eMoI;cKd,fe4XhibEmo7noJpo0sp1tru6vI;e,i6o5L;un4;la3Nu8;aGclu6dJf1occupy,sup0JvI;a6BeF;etermi4TiB;aGllu7rtr5Ksse4Q;cei2fo4NiAmea7plex,sIva6;eve8iCua6;mp1rItrol,ve;a6It6E;bOccuNmEpMutLverIwe;l07sJtu6Yu0wI;helm;ee,h1F;gr5Cnu2Cpa4;era7i4Ipo0;py,r;ey,seItaH;r2ss;aMe0ViJoIultiply;leCu6Pw;micJnIspla4;ce,g3us;!k;iIke,na9;m,ntaH;aPeLiIo0u3N;ke,ng1quIv5;eIi6S;fy;aKnIss5;d,gI;th5;rn,ve;ng2Gu1N;eep,idnJnI;e4Cow;ap;oHuI;gg3xtaI;po0;gno8mVnIrk;cTdRfQgeChPitia7ju8q1CsNtKun6EvI;a6eIo11;nt,rt,st;erJimi6BoxiPrI;odu4u6;aBn,pr03ru6C;iCpi8tIu8;all,il,ruB;abEibE;eCo3Eu0;iIul9;ca7;i7lu6;b5Xmer0pI;aLer4Uin9ly,oJrI;e3Ais6Bo2;rt,se,veI;riA;le,rt;aLeKiIoiCuD;de,jaInd1;ck;ar,iT;mp1ng,pp5raIve;ng5Mss;ath1et,iMle27oLrI;aJeIow;et;b,pp3ze;!ve5A;gg3ve;aTer45i5RlSorMrJuI;lf4Cndrai0r48;eJiIolic;ght5;e0Qsh5;b3XeLfeEgJsI;a3Dee;eIi2;!t;clo0go,shIwa4Z;ad3F;att1ee,i36;lt1st5;a0OdEl0Mm0FnXquip,rWsVtGvTxI;aRcPeDhOiNpJtIu6;ing0Yol;eKi8lIo0un9;aHoI;it,re;ct,di7l;st,t;a3oDu3B;e30lI;a10u6;lt,mi28;alua7oI;ke,l2;chew,pou0tab19;a0u4U;aYcVdTfSgQhan4joy,lPqOrNsuMtKvI;e0YisI;a9i50;er,i4rI;aHenGuC;e,re;iGol0F;ui8;ar9iC;a9eIra2ulf;nd1;or4;ang1oIu8;r0w;irc3lo0ou0ErJuI;mb1;oaGy4D;b3ct;bKer9pI;hasiIow1;ze;aKody,rI;a4oiI;d1l;lm,rk;ap0eBuI;ci40de;rIt;ma0Rn;a0Re04iKo,rIwind3;aw,ed9oI;wn;agno0e,ff1g,mi2Kne,sLvI;eIul9;rIst;ge,t;aWbVcQlod9mant3pNru3TsMtI;iIoDu37;lJngI;uiA;!l;ol2ua6;eJlIo0ro2;a4ea0;n0r0;a2Xe36lKoIu0S;uIv1;ra9;aIo0;im;a3Kur0;b3rm;af5b01cVduBep5fUliTmQnOpMrLsiCtaGvI;eIol2;lop;ch;a20i2;aDiBloIoD;re,y;oIy;te,un4;eJoI;liA;an;mEv1;a4i0Ao06raud,y;ei2iMla8oKrI;ee,yI;!pt;de,mIup3;missi34po0;de,ma7ph1;aJrief,uI;g,nk;rk;mp5rk5uF;a0Dea0h0Ai09l08oKrIurta1G;a2ea7ipp3uI;mb3;ales4e04habEinci6ll03m00nIrro6;cXdUfQju8no7qu1sLtKvI;eIin4;ne,r9y;aHin2Bribu7;er2iLoli2Epi8tJuI;lt,me;itu7raH;in;d1st;eKiJoIroFu0;rm;de,gu8rm;ss;eJoI;ne;mn,n0;eIlu6ur;al,i2;buCe,men4pI;eIi3ly;l,te;eBi6u6;r4xiC;ean0iT;rcumveFte;eJirp,oI;o0p;riAw;ncIre5t1ulk;el;a02eSi6lQoPrKuI;iXrIy;st,y;aLeaKiJoad5;en;ng;stfeLtX;ke;il,l11mba0WrrMth1;eIow;ed;!coQfrie1LgPhMliLqueaKstJtrIwild1;ay;ow;th;e2tt3;a2eJoI;ld;ad;!in,ui3;me;bysEckfi8ff3tI;he;b15c0Rd0Iff0Ggree,l0Cm09n03ppZrXsQttOuMvJwaE;it;eDoI;id;rt;gIto0X;meF;aIeCraB;ch,in;pi8sJtoI;niA;aKeIi04u8;mb3rt,ss;le;il;re;g0Hi0ou0rI;an9i2;eaKly,oiFrI;ai0o2;nt;r,se;aMi0GnJtI;icipa7;eJoIul;un4y;al;ly0;aJu0;se;lga08ze;iKlI;e9oIu6;t,w;gn;ix,oI;rd;a03jNmiKoJsoI;rb;pt,rn;niIt;st1;er;ouJuC;st;rn;cLhie2knowled9quiItiva7;es4re;ce;ge;eQliOoKrJusI;e,tom;ue;mIst;moJpI;any,liA;da7;ma7;te;pt;andPduBet,i6oKsI;coKol2;ve;liArt,uI;nd;sh;de;ct;on\",Person:\"true¦0:1Q;a29b1Zc1Md1Ee18f15g13h0Ri0Qj0Nk0Jl0Gm09n06o05p00rPsItCusain bolt,v9w4xzibit,y1;anni,oko on2uji,v1;an,es;en,o;a3ednesday adams,i2o1;lfram,o0Q;ll ferrell,z khalifa;lt disn1Qr1;hol,r0G;a2i1oltai06;n dies0Zrginia wo17;lentino rossi,n goG;a4h3i2ripp,u1yra banks;lZpac shakur;ger woods,mba07;eresa may,or;kashi,t1ylor;um,ya1B;a5carlett johanss0h4i3lobodan milosevic,no2ocr1Lpider1uperm0Fwami; m0Em0E;op dogg,w whi1H;egfried,nbad;akespeaTerlock holm1Sia labeouf;ddam hussa16nt1;a cla11ig9;aAe6i5o3u1za;mi,n dmc,paul,sh limbau1;gh;bin hood,d stew16nald1thko;in0Mo;han0Yngo starr,valdo;ese witherspo0i1mbrandt;ll2nh1;old;ey,y;chmaninoff,ffi,iJshid,y roma1H;a4e3i2la16o1uff daddy;cahont0Ie;lar,p19;le,rZ;lm17ris hilt0;leg,prah winfr0Sra;a2e1iles cra1Bostradam0J; yo,l5tt06wmQ;pole0s;a5e4i2o1ubar03;by,lie5net,rriss0N;randa ju1tt romn0M;ly;rl0GssiaB;cklemo1rkov,s0ta hari,ya angelou;re;ady gaga,e1ibera0Pu;bron jam0Xch wale1e;sa;anye west,e3i1obe bryant;d cudi,efer suther1;la0P;ats,sha;a2effers0fk,k rowling,rr tolki1;en;ck the ripp0Mwaharlal nehru,y z;liTnez,ron m7;a7e5i3u1;lk hog5mphrey1sa01;! bog05;l1tl0H;de; m1dwig,nry 4;an;ile selassFlle ber4m3rrison1;! 1;ford;id,mo09;ry;ast0iannis,o1;odwPtye;ergus0lorence nightinga08r1;an1ederic chopN;s,z;ff5m2nya,ustaXzeki1;el;eril lagasse,i1;le zatop1nem;ek;ie;a6e4i2octor w1rake;ho;ck w1ego maradoC;olf;g1mi lovaOnzel washingt0;as;l1nHrth vadR;ai lNt0;a8h5lint0o1thulhu;n1olio;an,fuci1;us;on;aucKop2ristian baMy1;na;in;millo,ptain beefhe4r1;dinal wols2son1;! palmF;ey;art;a8e5hatt,i3oHro1;ck,n1;te;ll g1ng crosby;atB;ck,nazir bhut2rtil,yon1;ce;to;nksy,rack ob1;ama;l 6r3shton kutch2vril lavig8yn ra1;nd;er;chimed2istot1;le;es;capo2paci1;no;ne\",Adjective:\"true¦0:AI;1:BS;2:BI;3:BA;4:A8;5:84;6:AV;7:AN;8:AF;9:7H;A:BQ;B:AY;C:BC;D:BH;E:9Y;aA2b9Ec8Fd7We79f6Ng6Eh61i4Xj4Wk4Tl4Im41n3Po36p2Oquart7Pr2Ds1Dt14uSvOwFye29;aMeKhIiHoF;man5oFrth7G;dADzy;despreB1n w97s86;acked1UoleF;!sa6;ather1PeFll o70ste1D;!k5;nt1Ist6Ate4;aHeGiFola5T;bBUce versa,gi3Lle;ng67rsa5R;ca1gBSluAV;lt0PnLpHrGsFttermoBL;ef9Ku3;b96ge1; Hb32pGsFtiAH;ca6ide d4R;er,i85;f52to da2;a0Fbeco0Hc0Bd04e02f01gu1XheaBGiXkn4OmUnTopp06pRrNsJtHus0wF;aFiel3K;nt0rra0P;app0eXoF;ld,uS;eHi37o5ApGuF;perv06spec39;e1ok9O;en,ttl0;eFu5;cogn06gul2RlGqu84sF;erv0olv0;at0en33;aFrecede0E;id,rallel0;am0otic0;aFet;rri0tF;ch0;nFq26vers3;sur0terFv7U;eFrupt0;st0;air,inish0orese98;mploy0n7Ov97xpF;ect0lain0;eHisFocume01ue;clFput0;os0;cid0rF;!a8Scov9ha8Jlyi8nea8Gprivileg0sMwF;aFei9I;t9y;hGircumcFonvin2U;is0;aFeck0;lleng0rt0;b20ppea85ssuGttend0uthorF;iz0;mi8;i4Ara;aLeIhoHip 25oGrF;anspare1encha1i2;geth9leADp notch,rpB;rny,ugh6H;ena8DmpGrFs6U;r49tia4;eCo8P;leFst4M;nt0;a0Dc09e07h06i04ki03l01mug,nobbi4XoVpRqueami4XtKuFymb94;bHccinAi generis,pFr5;erFre7N;! dup9b,vi70;du0li7Lp6IsFurb7J;eq9Atanda9X;aKeJi16o2QrGubboFy4Q;rn;aightFin5GungS; fFfF;or7V;adfa9Pri6;lwa6Ftu82;arHeGir6NlendBot Fry;on;c3Qe1S;k5se; call0lImb9phistic16rHuFviV;ndFth1B;proof;dBry;dFub6; o2A;e60ipF;pe4shod;ll0n d7R;g2HnF;ceEg6ist9;am3Se9;co1Zem5lfFn6Are7; suf4Xi43;aGholFient3A;ar5;rlFt4A;et;cr0me,tisfac7F;aOeIheumatoBiGoF;bu8Ztt7Gy3;ghtFv3; 1Sf6X;cJdu8PlInown0pro69sGtF;ard0;is47oF;lu2na1;e1Suc45;alcit8Xe1ondi2;bBci3mpa1;aSePicayu7laOoNrGuF;bl7Tnjabi;eKiIoF;b7VfGmi49pFxi2M;er,ort81;a7uD;maFor,sti7va2;!ry;ciDexis0Ima2CpaB;in55puli8G;cBid;ac2Ynt 3IrFti2;ma40tFv7W;!i3Z;i2YrFss7R;anoBtF; 5XiF;al,s5V;bSffQkPld OnMrLth9utKverF;!aIbMdHhGni75seas,t,wF;ei74rou74;a63e7A;ue;ll;do1Ger,si6A;d3Qg2Aotu5Z; bFbFe on o7g3Uli7;oa80;fashion0school;!ay; gua7XbFha5Uli7;eat;eHligGsF;ce7er0So1C;at0;diFse;a1e1;aOeNiMoGuF;anc0de; moEnHrthFt6V;!eFwe7L;a7Krn;chaGdescri7Iprof30sF;top;la1;ght5;arby,cessa4ighbor5wlyw0xt;k0usiaFv3;ti8;aQeNiLoHuF;dIltiF;facet0p6;deHlGnFot,rbBst;ochro4Xth5;dy;rn,st;ddle ag0nF;dbloZi,or;ag9diocEga,naGrFtropolit4Q;e,ry;ci8;cIgenta,inHj0Fkeshift,mmGnFri4Oscu61ver18;da5Dy;ali4Lo4U;!stream;abEho;aOeLiIoFumberi8;ngFuti1R;stan3RtF;erm,i4H;ghtGteraF;l,ry,te;heart0wei5O;ft JgFss9th3;al,eFi0M;nda4;nguBps0te5;apGind5noF;wi8;ut;ad0itte4uniW;ce co0Hgno6Mll0Cm04nHpso 2UrF;a2releF;va1; ZaYcoWdReQfOgrNhibi4Ri05nMoLsHtFvalu5M;aAeF;nDrdepe2K;a7iGolFuboI;ub6ve1;de,gF;nifica1;rdi5N;a2er;own;eriIiLluenVrF;ar0eq5H;pt,rt;eHiGoFul1O;or;e,reA;fiFpe26termi5E;ni2;mpFnsideCrreA;le2;ccuCdeq5Ene,ppr4J;fFsitu,vitro;ro1;mJpF;arHeGl15oFrop9;li2r11;n2LrfeA;ti3;aGeFi18;d4BnD;tuE;egGiF;c0YteC;al,iF;tiF;ma2;ld;aOelNiLoFuma7;a4meInHrrGsFur5;ti6;if4E;e58o3U; ma3GsF;ick;ghfalut2HspF;an49;li00pf33;i4llow0ndGrdFtM; 05coEworki8;sy,y;aLener44iga3Blob3oKrGuF;il1Nng ho;aFea1Fizzl0;cGtF;ef2Vis;ef2U;ld3Aod;iFuc2D;nf2R;aVeSiQlOoJrF;aGeFil5ug3;q43tf2O;gFnt3S;i6ra1;lk13oHrF; keeps,eFge0Vm9tu41;g0Ei2Ds3R;liF;sh;ag4Mowe4uF;e1or45;e4nF;al,i2;d Gmini7rF;ti6ve1;up;bl0lDmIr Fst pac0ux;oGreacF;hi8;ff;ed,ili0R;aXfVlTmQnOqu3rMthere3veryday,xF;aApIquisi2traHuF;be48lF;ta1;!va2L;edRlF;icF;it;eAstF;whi6; Famor0ough,tiE;rou2sui2;erGiF;ne1;ge1;dFe2Aoq34;er5;ficF;ie1;g9sF;t,ygF;oi8;er;aWeMiHoGrFue;ea4owY;ci6mina1ne,r31ti8ubQ;dact2Jfficult,m,sGverF;ge1se;creGePjoi1paCtF;a1inA;et,te; Nadp0WceMfiLgeneCliJmuEpeIreliAsGvoF;id,ut;pFtitu2ul1L;eCoF;nde1;ca2ghF;tf13;a1ni2;as0;facto;i5ngero0I;ar0Ce09h07i06l05oOrIuF;rmudgeon5stoma4teF;sy;ly;aIeHu1EystalF; cleFli7;ar;epy;fFv17z0;ty;erUgTloSmPnGrpoCunterclVveFy;rt;cLdJgr21jIsHtrF;aFi2;dic0Yry;eq1Yta1;oi1ug3;escenFuN;di8;a1QeFiD;it0;atoDmensuCpF;ass1SulF;so4;ni3ss3;e1niza1;ci1J;ockwiD;rcumspeAvil;eFintzy;e4wy;leGrtaF;in;ba2;diac,ef00;a00ePiLliJoGrFuck nak0;and new,isk,on22;gGldface,naF; fi05fi05;us;nd,tF;he;gGpartisFzarE;an;tiF;me;autifOhiNlLnHsFyoN;iWtselF;li8;eGiFt;gn;aFfi03;th;at0oF;v0w;nd;ul;ckwards,rF;e,rT; priori,b13c0Zd0Tf0Ng0Ihe0Hl09mp6nt06pZrTsQttracti0MuLvIwF;aGkF;wa1B;ke,re;ant garGeraF;ge;de;diIsteEtF;heFoimmu7;nt07;re;to4;hGlFtu2;eep;en;bitIchiv3roHtF;ifiFsy;ci3;ga1;ra4;ry;pFt;aHetizi8rF;oprF;ia2;llFre1;ed,i8;ng;iquFsy;at0e;ed;cohKiJkaHl,oGriFterX;ght;ne,of;li7;ne;ke,ve;olF;ic;ad;ain07gressiIi6rF;eeF;ab6;le;ve;fGraB;id;ectGlF;ue1;ioF;na2; JaIeGvF;erD;pt,qF;ua2;ma1;hoc,infinitum;cuCquiGtu3u2;al;esce1;ra2;erSjeAlPoNrKsGuF;nda1;e1olu2trF;aAuD;se;te;eaGuF;pt;st;aFve;rd;aFe;ze;ct;ra1;nt\",Pronoun:\"true¦elle,h3i2me,she,th0us,we,you;e0ou;e,m,y;!l,t;e,im\",Preposition:\"true¦aPbMcLdKexcept,fIinGmid,notwithstandiWoDpXqua,sCt7u4v2w0;/o,hereSith0;! whHin,oW;ersus,i0;a,s a vis;n1p0;!on;like,til;h1ill,oward0;!s;an,ereby,r0;ough0u;!oM;ans,ince,o that,uch G;f1n0ut;!to;!f;! 0to;effect,part;or,r0;om;espite,own,u3;hez,irca;ar1e0oBy;sides,tween;ri7;bo8cross,ft7lo6m4propos,round,s1t0;!op;! 0;a whole,long 0;as;id0ong0;!st;ng;er;ut\",SportsTeam:\"true¦0:18;1:1E;2:1D;3:14;a1Db15c0Sd0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Am01new UoRpKqueens parkJreal salt lake,sBt6utah jazz,vancouver whitecaps,w4yW;ashington 4h10;natio1Mredski2wizar0W;ampa bay 7e6o4;ronto 4ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasD;buccanee0ra0K;a8eattle 6porting kansas0Wt4; louis 4oke0V;c1Drams;marine0s4;eah13ounH;cramento Rn 4;antonio spu0diego 4francisco gJjose earthquak1;char08paB; ran07;a9h6ittsburgh 5ortland t4;imbe0rail blaze0;pirat1steele0;il4oenix su2;adelphia 4li1;eagl1philNunE;dr1;akland 4klahoma city thunder,rlando magic;athle0Lrai4;de0;england 8orleans 7york 4;g5je3knYme3red bul0Xy4;anke1;ian3;pelica2sain3;patrio3revolut4;ion;anchEeAi4ontreal impact;ami 8lwaukee b7nnesota 4;t5vi4;kings;imberwolv1wi2;rewe0uc0J;dolphi2heat,marli2;mphis grizz4ts;li1;a6eic5os angeles 4;clippe0dodFlaB;esterV; galaxy,ke0;ansas city 4nF;chiefs,roya0D; pace0polis col3;astr05dynamo,rocke3texa2;olden state warrio0reen bay pac4;ke0;allas 8e4i04od6;nver 6troit 4;lio2pisto2ti4;ge0;broncYnugge3;cowbo5maver4;icZ;ys;arEelLhAincinnati 8leveland 6ol4;orado r4umbus crew sc;api7ocki1;brow2cavalie0guar4in4;dia2;bengaVre4;ds;arlotte horAicago 4;b5cubs,fire,wh4;iteB;ea0ulQ;diff4olina panthe0; city;altimore Alackburn rove0oston 6rooklyn 4uffalo bilN;ne3;ts;cel5red4; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 4;brav1falco2h4;awA;ns;es;on villa,r4;os;c6di4;amondbac4;ks;ardi4;na4;ls\",Unit:\"true¦a07b04cXdWexVfTgRhePinYjoule0BkMlJmDnan08oCp9quart0Bsq ft,t7volts,w6y2ze3°1µ0;g,s;c,f,n;dVear1o0;ttR; 0s 0;old;att,b;erNon0;!ne02;ascals,e1i0;cXnt00;rcent,tJ;hms,unceY;/s,e4i0m²,²,³;/h,cro2l0;e0liK;!²;grLsR;gCtJ;it1u0;menQx;erPreP;b5elvins,ilo1m0notO;/h,ph,²;!byGgrEmCs;ct0rtzL;aJogrC;allonJb0ig3rB;ps;a0emtEl oz,t4;hrenheit,radG;aby9;eci3m1;aratDe1m0oulombD;²,³;lsius,nti0;gr2lit1m0;et0;er8;am7;b1y0;te5;l,ps;c2tt0;os0;econd1;re0;!s\",\"Noun|Gerund\":\"true¦0:3O;1:3M;2:3N;3:3D;4:32;5:2V;6:3E;7:3K;8:36;9:3J;A:3B;a3Pb37c2Jd27e23f1Vg1Sh1Mi1Ij1Gk1Dl18m13n11o0Wp0Pques0Sr0EsTtNunderMvKwFyDzB;eroi0oB;ni0o3P;aw2eB;ar2l3;aEed4hispe5i5oCrB;ap8est3i1;n0ErB;ki0r31;i1r2s9tc9;isualizi0oB;lunt1Vti0;stan4ta6;aFeDhin6iCraBy8;c6di0i2vel1M;mi0p8;aBs1;c9si0;l6n2s1;aUcReQhOiMkatKl2Wmo6nowJpeItFuCwB;ea5im37;b35f0FrB;fi0vB;e2Mi2J;aAoryt1KrCuB;d2KfS;etc9ugg3;l3n4;bCi0;ebBi0;oar4;gnBnAt1;a3i0;ip8oB;p8rte2u1;a1r27t1;hCo5reBulp1;a2Qe2;edu3oo3;i3yi0;aKeEi4oCuB;li0n2;oBwi0;fi0;aFcEhear7laxi0nDpor1sB;pon4tructB;r2Iu5;de5;or4yc3;di0so2;p8ti0;aFeacek20laEoCrBublis9;a1Teten4in1oces7;iso2siB;tio2;n2yi0;ckaAin1rB;ki0t1O;fEpeDrganiCvB;erco24ula1;si0zi0;ni0ra1;fe5;avi0QeBur7;gotia1twor6;aDeCi2oB;de3nito5;a2dita1e1ssaA;int0XnBrke1;ifUufactu5;aEeaDiBodAyi0;cen7f1mi1stB;e2i0;r2si0;n4ug9;iCnB;ea4it1;c6l3;ogAuB;dAgg3stif12;ci0llust0VmDnBro2;nova1sp0NterBven1;ac1vie02;agi2plo4;aDea1iCoBun1;l4w3;ki0ri0;nd3rB;roWvB;es1;aCene0Lli4rBui4;ee1ie0N;rde2the5;aHeGiDlCorBros1un4;e0Pmat1;ir1oo4;gh1lCnBs9;anZdi0;i0li0;e3nX;r0Zscina1;a1du01nCxB;erci7plo5;chan1di0ginB;ee5;aLeHiGoub1rCum8wB;el3;aDeCiB;bb3n6vi0;a0Qs7;wi0;rTscoDvi0;ba1coZlBvelo8;eCiB;ve5;ga1;nGti0;aVelebUhSlPoDrBur3yc3;aBos7yi0;f1w3;aLdi0lJmFnBo6pi0ve5;dDsCvinB;ci0;trBul1;uc1;muniDpB;lBo7;ai2;ca1;lBo5;ec1;c9ti0;ap8eaCimToBubT;ni0t9;ni0ri0;aBee5;n1t1;ra1;m8rCs1te5;ri0;vi0;aPeNitMlLoGrDuB;dge1il4llBr8;yi0;an4eat9oadB;cas1;di0;a1mEokB;i0kB;ee8;pi0;bi0;es7oa1;c9i0;gin2lonAt1;gi0;bysit1c6ki0tt3;li0;ki0;bando2cGdverti7gi0pproac9rgDssuCtB;trac1;mi0;ui0;hi0;si0;coun1ti0;ti0;ni0;ng\",PhrasalVerb:\"true¦0:92;1:96;2:8H;3:8V;4:8A;5:83;6:85;7:98;8:90;9:8G;A:8X;B:8R;C:8U;D:8S;E:70;F:97;G:8Y;H:81;I:7H;J:79;a9Fb7Uc6Rd6Le6Jf5Ig50h4Biron0j47k40l3Em31n2Yo2Wp2Cquiet Hr1Xs0KtZuXvacuu6QwNyammerBzK;ero Dip LonK;e0k0;by,ov9up;aQeMhLiKor0Mrit19;mp0n3Fpe0r5s5;ackAeel Di0S;aLiKn33;gh 3Wrd0;n Dr K;do1in,oJ;it 79k5lk Lrm 69sh Kt83v60;aw3do1o7up;aw3in,oC;rgeBsK;e 2herE;a00eYhViRoQrMuKypP;ckErn K;do1in,oJup;aLiKot0y 30;ckl7Zp F;ck HdK;e 5Y;n7Wp 3Es5K;ck MdLe Kghten 6me0p o0Rre0;aw3ba4do1in,up;e Iy 2;by,oG;ink Lrow K;aw3ba4in,up;ba4ov9up;aKe 77ll62;m 2r 5M;ckBke Llk K;ov9shit,u47;aKba4do1in,leave,o4Dup;ba4ft9pa69w3;a0Vc0Te0Mh0Ii0Fl09m08n07o06p01quar5GtQuOwK;earMiK;ngLtch K;aw3ba4o8K; by;cKi6Bm 2ss0;k 64;aReQiPoNrKud35;aigh2Det75iK;ke 7Sng K;al6Yup;p Krm2F;by,in,oG;c3Ln3Lr 2tc4O;p F;c3Jmp0nd LrKveAy 2O;e Ht 2L;ba4do1up;ar3GeNiMlLrKurB;ead0ingBuc5;a49it 6H;c5ll o3Cn 2;ak Fe1Xll0;a3Bber 2rt0und like;ap 5Vow Duggl5;ash 6Noke0;eep NiKow 6;cLp K;o6Dup;e 68;in,oK;ff,v9;de19gn 4NnKt 6Gz5;gKkE; al6Ale0;aMoKu5W;ot Kut0w 7M;aw3ba4f48oC;c2WdeEk6EveA;e Pll1Nnd Orv5tK; Ktl5J;do1foLin,o7upK;!on;ot,r5Z;aw3ba4do1in,o33up;oCto;al66out0rK;ap65ew 6J;ilAv5;aXeUiSoOuK;b 5Yle0n Kstl5;aLba4do1inKo2Ith4Nu5P;!to;c2Xr8w3;ll Mot LpeAuK;g3Ind17;a2Wf3Po7;ar8in,o7up;ng 68p oKs5;ff,p18;aKelAinEnt0;c6Hd K;o4Dup;c27t0;aZeYiWlToQrOsyc35uK;ll Mn5Kt K;aKba4do1in,oJto47up;pa4Dw3;a3Jdo1in,o21to45up;attleBess KiNop 2;ah2Fon;iLp Kr4Zu1Gwer 6N;do1in,o6Nup;nt0;aLuK;gEmp 6;ce u20y 6D;ck Kg0le 4An 6p5B;oJup;el 5NncilE;c53ir 39n0ss MtLy K;ba4oG; Hc2R;aw3ba4in,oJ;pKw4Y;e4Xt D;aLerd0oK;dAt53;il Hrrow H;aTeQiPoLuK;ddl5ll I;c1FnkeyMp 6uthAve K;aKdo1in,o4Lup;l4Nw3; wi4K;ss0x 2;asur5e3SlLss K;a21up;t 6;ke Ln 6rKs2Ax0;k 6ryA;do,fun,oCsure,up;a02eViQoLuK;ck0st I;aNc4Fg MoKse0;k Kse4D;aft9ba4do1forw37in56o0Zu46;in,oJ;d 6;e NghtMnLsKve 00;ten F;e 2k 2; 2e46;ar8do1in;aMt LvelK; oC;do1go,in,o7up;nEve K;in,oK;pKut;en;c5p 2sh LtchBughAy K;do1o59;in4Po7;eMick Lnock K;do1oCup;oCup;eLy K;in,up;l Ip K;aw3ba4do1f04in,oJto,up;aMoLuK;ic5mpE;ke3St H;c43zz 2;a01eWiToPuK;nLrrKsh 6;y 2;keLt K;ar8do1;r H;lKneErse3K;d Ke 2;ba4dKfast,o0Cup;ear,o1;de Lt K;ba4on,up;aw3o7;aKlp0;d Ml Ir Kt 2;fKof;rom;f11in,o03uW;cPm 2nLsh0ve Kz2P;at,it,to;d Lg KkerP;do1in,o2Tup;do1in,oK;ut,v9;k 2;aZeTive Rloss IoMrLunK; f0S;ab hold,in43ow 2U; Kof 2I;aMb1Mit,oLr8th1IuK;nd9;ff,n,v9;bo7ft9hQw3;aw3bKdo1in,oJrise,up,w3;a4ir2H;ar 6ek0t K;aLb1Fdo1in,oKr8up;ff,n,ut,v9;cLhKl2Fr8t,w3;ead;ross;d aKng 2;bo7;a0Ee07iYlUoQrMuK;ck Ke2N;ar8up;eLighten KownBy 2;aw3oG;eKshe27; 2z5;g 2lMol Krk I;aKwi20;bo7r8;d 6low 2;aLeKip0;sh0;g 6ke0mKrKtten H;e F;gRlPnNrLsKzzle0;h F;e Km 2;aw3ba4up;d0isK;h 2;e Kl 1T;aw3fPin,o7;ht ba4ure0;ePnLsK;s 2;cMd K;fKoG;or;e D;d04l 2;cNll Krm0t1G;aLbKdo1in,o09sho0Eth08victim;a4ehi2O;pa0C;e K;do1oGup;at Kdge0nd 12y5;in,o7up;aOi1HoNrK;aLess 6op KuN;aw3b03in,oC;gBwB; Ile0ubl1B;m 2;a0Ah05l02oOrLut K;aw3ba4do1oCup;ackBeep LoKy0;ss Dwd0;by,do1in,o0Uup;me NoLuntK; o2A;k 6l K;do1oG;aRbQforOin,oNtKu0O;hLoKrue;geth9;rough;ff,ut,v9;th,wK;ard;a4y;paKr8w3;rt;eaLose K;in,oCup;n 6r F;aNeLiK;ll0pE;ck Der Kw F;on,up;t 2;lRncel0rOsMtch LveE; in;o1Nup;h Dt K;doubt,oG;ry LvK;e 08;aw3oJ;l Km H;aLba4do1oJup;ff,n,ut;r8w3;a0Ve0MiteAl0Fo04rQuK;bblNckl05il0Dlk 6ndl05rLsKtMy FzzA;t 00;n 0HsK;t D;e I;ov9;anWeaUiLush K;oGup;ghQng K;aNba4do1forMin,oLuK;nd9p;n,ut;th;bo7lKr8w3;ong;teK;n 2;k K;do1in,o7up;ch0;arTg 6iRn5oPrNssMttlLunce Kx D;aw3ba4;e 6; ar8;e H;do1;k Dt 2;e 2;l 6;do1up;d 2;aPeed0oKurt0;cMw K;aw3ba4do1o7up;ck;k K;in,oC;ck0nk0stA; oQaNef 2lt0nd K;do1ov9up;er;up;r Lt K;do1in,oCup;do1o7;ff,nK;to;ck Pil0nMrgLsK;h D;ainBe D;g DkB; on;in,o7;aw3do1in,oCup;ff,ut;ay;ct FdQir0sk MuctionA; oG;ff;ar8o7;ouK;nd; o7;d K;do1oKup;ff,n;wn;o7up;ut\",ProperNoun:\"true¦aIbDc8dalhousHe7f5gosford,h4iron maiden,kirby,landsdowne,m2nis,r1s0wembF;herwood,paldiB;iel,othwe1;cgi0ercedes,issy;ll;intBudsB;airview,lorence,ra0;mpt9nco;lmo,uro;a1h0;arlt6es5risti;rl0talina;et4i0;ng;arb3e0;et1nt0rke0;ley;on;ie;bid,jax\",\"Person|Place\":\"true¦a8d6h4jordan,k3orlando,s1vi0;ctor9rgin9;a0ydney;lvador,mara,ntia4;ent,obe;amil0ous0;ton;arw2ie0;go;lexandr1ust0;in;ia\",LastName:\"true¦0:BR;1:BF;2:B5;3:BH;4:AX;5:9Y;6:B6;7:BK;8:B0;9:AV;A:AL;B:8Q;C:8G;D:7K;E:BM;F:AH;aBDb9Zc8Wd88e81f7Kg6Wh64i60j5Lk4Vl4Dm39n2Wo2Op25quispe,r1Ls0Pt0Ev03wTxSyKzG;aIhGimmerm6A;aGou,u;ng,o;khar5ytsE;aKeun9BiHoGun;koya32shiBU;!lG;diGmaz;rim,z;maGng;da,g52mo83sGzaC;aChiBV;iao,u;aLeJiHoGright,u;jcA5lff,ng;lGmm0nkl0sniewsC;kiB1liams33s3;bGiss,lt0;b,er,st0;a6Vgn0lHtG;anabe,s3;k0sh,tG;e2Non;aLeKiHoGukD;gt,lk5roby5;dHllalGnogr3Kr1Css0val3S;ba,ob1W;al,ov4;lasHsel8W;lJn dIrgBEsHzG;qu7;ilyEqu7siljE;en b6Aijk,yk;enzueAIverde;aPeix1VhKi2j8ka43oJrIsui,uG;om5UrG;c2n0un1;an,emblA7ynisC;dorAMlst3Km4rrAth;atch0i8UoG;mHrG;are84laci79;ps3sG;en,on;hirDkah9Mnaka,te,varA;a06ch01eYhUiRmOoMtIuHvGzabo;en9Jobod3N;ar7bot4lliv2zuC;aIeHoG;i7Bj4AyanAB;ele,in2FpheBvens25;l8rm0;kol5lovy5re7Tsa,to,uG;ng,sa;iGy72;rn5tG;!h;l71mHnGrbu;at9cla9Egh;moBo7M;aIeGimizu;hu,vchG;en8Luk;la,r1G;gu9infe5YmGoh,pulveA7rra5P;jGyG;on5;evi6iltz,miHneid0roed0uGwarz;be3Elz;dHtG;!t,z;!t;ar4Th8ito,ka4OlJnGr4saCto,unde19v4;ch7dHtGz;a5Le,os;b53e16;as,ihDm4Po0Y;aVeSiPoJuHyG;a6oo,u;bio,iz,sG;so,u;bKc8Fdrigue67ge10j9YmJosevelt,sItHux,wG;e,li6;a9Ch;enb4Usi;a54e4L;erts15i93;bei4JcHes,vGzzo;as,e9;ci,hards12;ag2es,iHut0yG;es,nol5N;s,t0;dImHnGsmu97v6C;tan1;ir7os;ic,u;aUeOhMiJoHrGut8;asad,if6Zochazk27;lishc2GpGrti72u10we76;e3Aov51;cHe45nG;as,to;as70hl0;aGillips;k,m,n6I;a3Hde3Wete0Bna,rJtG;ersHrovGters54;!a,ic;!en,on;eGic,kiBss3;i9ra,tz,z;h86k,padopoulIrk0tHvG;ic,l4N;el,te39;os;bMconn2Ag2TlJnei6PrHsbor6XweBzG;dem7Rturk;ella4DtGwe6N;ega,iz;iGof7Hs8I;vGyn1R;ei9;aSri1;aPeNiJoGune50ym2;rHvGwak;ak4Qik5otn66;odahl,r4S;cholsZeHkolGls4Jx3;ic,ov84;ls1miG;!n1;ils3mG;co4Xec;gy,kaGray2sh,var38;jiGmu9shiG;ma;a07c04eZiWoMuHyeG;rs;lJnIrGssoli6S;atGp03r7C;i,ov4;oz,te58;d0l0;h2lOnNo0RrHsGza1A;er,s;aKeJiIoz5risHtG;e56on;!on;!n7K;au,i9no,t5J;!lA;r1Btgome59;i3El0;cracFhhail5kkeHlG;l0os64;ls1;hmeJiIj30lHn3Krci0ssiGyer2N;!er;n0Po;er,j0;dDti;cartHlG;aughl8e2;hy;dQe7Egnu68i0jer3TkPmNnMrItHyG;er,r;ei,ic,su21thews;iHkDquAroqu8tinG;ez,s;a5Xc,nG;!o;ci5Vn;a5UmG;ad5;ar5e6Kin1;rig77s1;aVeOiLoJuHyG;!nch;k4nGo;d,gu;mbarGpe3Fvr4we;di;!nGu,yana2B;coln,dG;b21holm,strom;bedEfeKhIitn0kaHn8rGw35;oy;!j;m11tG;in1on1;bvGvG;re;iGmmy,ng,rs2Qu,voie,ws3;ne,t1F;aZeYh2iWlUnez50oNrJuHvar2woG;k,n;cerGmar68znets5;a,o34;aHem0isGyeziu;h23t3O;m0sni4Fus3KvG;ch4O;bay57ch,rh0Usk16vaIwalGzl5;czGsC;yk;cIlG;!cGen4K;huk;!ev4ic,s;e8uiveG;rt;eff0kGl4mu9nnun1;ucF;ll0nnedy;hn,llKminsCne,pIrHstra3Qto,ur,yGzl5;a,s0;j0Rls22;l2oG;or;oe;aPenOha6im14oHuG;ng,r4;e32hInHrge32u6vG;anD;es,ss3;anHnsG;en,on,t3;nesGs1R;en,s1;kiBnings,s1;cJkob4EnGrv0E;kDsG;en,sG;en0Ion;ks3obs2A;brahimDglesi5Nke5Fl0Qno07oneIshikHto,vanoG;u,v54;awa;scu;aVeOiNjaltal8oIrist50uG;!aGb0ghAynh;m2ng;a6dz4fIjgaa3Hk,lHpUrGwe,x3X;ak1Gvat;mAt;er,fm3WmG;ann;ggiBtchcock;iJmingw4BnHrGss;nand7re9;deGriks1;rs3;kkiHnG;on1;la,n1;dz4g1lvoQmOns0ZqNrMsJuIwHyG;asFes;kiB;g1ng;anHhiG;mo14;i,ov0J;di6p0r10t;ue;alaG;in1;rs1;aVeorgUheorghe,iSjonRoLrJuGw3;errGnnar3Co,staf3Ctierr7zm2;a,eG;ro;ayli6ee2Lg4iffithGub0;!s;lIme0UnHodGrbachE;e,m2;calvAzale0S;dGubE;bGs0E;erg;aj,i;bs3l,mGordaO;en7;iev3U;gnMlJmaIndFo,rGsFuthi0;cGdn0za;ia;ge;eaHlG;agh0i,o;no;e,on;aVerQiLjeldsted,lKoIrHuG;chs,entAji41ll0;eem2iedm2;ntaGrt8urni0wl0;na;emi6orA;lipIsHtzgeraG;ld;ch0h0;ovG;!ic;hatDnanIrG;arGei9;a,i;deY;ov4;b0rre1D;dKinsJriksIsGvaB;cob3GpGtra3D;inoza,osiQ;en,s3;te8;er,is3warG;ds;aXePiNjurhuMoKrisco15uHvorakG;!oT;arte,boHmitru,nn,rGt3C;and,ic;is;g2he0Omingu7nErd1ItG;to;us;aGcki2Hmitr2Ossanayake,x3;s,z; JbnaIlHmirGrvisFvi,w2;!ov4;gado,ic;th;bo0groot,jo6lHsilGvriA;va;a cruz,e3uG;ca;hl,mcevsCnIt2WviG;dGes,s;ov,s3;ielsGku22;!en;ki;a0Be06hRiobQlarkPoIrGunningh1H;awfo0RivGuz;elli;h1lKntJoIrGs2Nx;byn,reG;a,ia;ke,p0;i,rer2K;em2liB;ns;!e;anu;aOeMiu,oIristGu6we;eGiaG;ns1;i,ng,p9uHwGy;!dH;dGng;huJ;!n,onGu6;!g;kJnIpm2ttHudhGv7;ry;erjee,o14;!d,g;ma,raboG;rty;bJl0Cng4rG;eghetHnG;a,y;ti;an,ota1C;cerAlder3mpbeLrIstGvadi0B;iGro;llo;doHl0Er,t0uGvalho;so;so,zo;ll;a0Fe01hYiXlUoNrKuIyG;rLtyG;qi;chan2rG;ke,ns;ank5iem,oGyant;oks,wG;ne;gdan5nIruya,su,uchaHyKziG;c,n5;rd;darGik;enG;ko;ov;aGond15;nco,zG;ev4;ancFshw16;a08oGuiy2;umGwmG;ik;ckRethov1gu,ktPnNrG;gJisInG;ascoGds1;ni;ha;er,mG;anG;!n;gtGit7nP;ss3;asF;hi;er,hG;am;b4ch,ez,hRiley,kk0ldw8nMrIshHtAu0;es;ir;bInHtlGua;ett;es,i0;ieYosa;dGik;a9yoG;padhyG;ay;ra;k,ng;ic;bb0Acos09d07g04kht05lZnPrLsl2tJyG;aHd8;in;la;chis3kiG;ns3;aImstro6sl2;an;ng;ujo,ya;dJgelHsaG;ri;ovG;!a;ersJov,reG;aGjEws;ss1;en;en,on,s3;on;eksejEiyEmeiIvG;ar7es;ez;da;ev;arwHuilG;ar;al;ams,l0;er;ta;as\",Ordinal:\"true¦eBf7nin5s3t0zeroE;enDhir1we0;lfCn7;d,t3;e0ixt8;cond,vent7;et0th;e6ie7;i2o0;r0urt3;tie4;ft1rst;ight0lev1;e0h,ie1;en0;th\",Cardinal:\"true¦bEeBf5mEnine7one,s4t0zero;en,h2rDw0;e0o;lve,n5;irt6ousands,ree;even2ix2;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illions\",Multiple:\"true¦b3hundred,m3qu2se1t0;housand,r2;pt1xt1;adr0int0;illion\",City:\"true¦0:74;1:61;2:6G;3:6J;4:5S;a68b53c4Id48e44f3Wg3Hh39i31j2Wk2Fl23m1Mn1Co19p0Wq0Ur0Os05tRuQvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3H;greb,nzib5G;ang2e5okoha3Sunfu;katerin3Hrev0;a5n0Q;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1L;hi5Zkl3A;l63xford;aw;a8e6i5ladivost5Molgogr6L;en3lni6S;ni22r5;o3saill4N;lenc4Wncouv3Sr3ughn;lan bat1Crumqi,trecht;aFbilisi,eEheDiBo9r7u5;l21n63r5;in,ku;i5ondh62;es51poli;kyo,m2Zron1Pulo5;n,uS;an5jua3l2Tmisoa6Bra3;j4Tshui; hag62ssaloni2H;gucigal26hr0l av1U;briz,i6llinn,mpe56ng5rtu,shk2R;i3Esh0;an,chu1n0p2Eyu0;aEeDh8kopje,owe1Gt7u5;ra5zh4X;ba0Ht;aten is55ockholm,rasbou67uttga2V;an8e6i5;jiazhua1llo1m5Xy0;f50n5;ya1zh4H;gh3Kt4Q;att45o1Vv44;cramen16int ClBn5o paulo,ppo3Rrajevo; 7aa,t5;a 5o domin3E;a3fe,m1M;antonio,die3Cfrancisco,j5ped3Nsalvad0J;o5u0;se;em,t lake ci5Fz25;lou58peters24;a9e8i6o5;me,t59;ga,o5yadh;! de janei3F;cife,ims,nn3Jykjavik;b4Sip4lei2Inc2Pwalpindi;ingdao,u5;ez2i0Q;aFeEhDiCo9r7u6yong5;ya1;eb59ya1;a5etor3M;g52to;rt5zn0; 5la4Co;au prin0Melizabe24sa03;ls3Prae5Atts26;iladelph3Gnom pe1Aoenix;ki1tah tik3E;dua,lerYnaji,r4Ot5;na,r32;ak44des0Km1Mr6s5ttawa;a3Vlo;an,d06;a7ew5ing2Fovosibir1Jyc; 5cast36;del24orlea44taip14;g8iro4Wn5pl2Wshv33v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0W;aEeCi9o6u5;mb2Ani26sc3Y;gadishu,nt6s5;c13ul;evideo,pelli1Rre2Z;ami,l6n14s5;kolc,sissauga;an,waukee;cca,d5lbour2Mmph41ndo1Cssi3;an,ell2Xi3;cau,drAkass2Sl9n8r5shh4A;aca6ib5rakesh,se2L;or;i1Sy;a4EchFdal0Zi47;mo;id;aDeAi8o6u5vSy2;anMckn0Odhia3;n5s angel26;d2g bea1N;brev2Be3Lma5nz,sb2verpo28;!ss27; ma39i5;c5pzig;est16; p6g5ho2Wn0Cusan24;os;az,la33;aHharFiClaipeBo9rak0Du7y5;iv,o5;to;ala lump4n5;mi1sh0;hi0Hlka2Xpavog4si5wlo2;ce;da;ev,n5rkuk;gst2sha5;sa;k5toum;iv;bHdu3llakuric0Qmpa3Fn6ohsiu1ra5un1Iwaguc0Q;c0Pj;d5o,p4;ah1Ty;a7e6i5ohannesV;l1Vn0;dd36rusalem;ip4k5;ar2H;bad0mph1OnArkutUs7taXz5;mir,tapala5;pa;fah0l6tanb5;ul;am2Zi2H;che2d5;ianap2Mo20;aAe7o5yder2W; chi mi5ms,nolulu;nh;f6lsin5rakli2;ki;ei;ifa,lifax,mCn5rb1Dva3;g8nov01oi;aFdanEenDhCiPlasgBo9raz,u5;a5jr23;dal6ng5yaquil;zh1J;aja2Oupe;ld coa1Bthen5;bu2S;ow;ent;e0Uoa;sk;lw7n5za;dhi5gt1E;nag0U;ay;aisal29es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Pl paso;in5mont2;bur5;gh;aBe8ha0Xisp4o7resd0Lu5;b5esseldorf,nkirk,rb0shanbe;ai,l0I;ha,nggu0rtmu13;hradSl6nv5troit;er;hi;donghIe6k09l5masc1Zr es sala1KugavpiY;i0lU;gu,je2;aJebu,hAleve0Vo5raio02uriti1Q;lo7n6penhag0Ar5;do1Ok;akKst0V;gUm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;ng5ttogr14;ch8sha,zh07;gliari,i9lga8mayenJn6pe town,r5tanO;acCdiff;ber1Ac5;un;ry;ro;aWeNhKirmingh0WoJr9u5;chareTdapeTenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil8tisla7zzav5;il5;le;va;ia;goZst2;op6ubaneshw5;ar;al;iCl9ng8r5;g6l5n;in;en;aluru,hazi;fa6grade,o horizon5;te;st;ji1rut;ghd0BkFn9ot8r7s6yan n4;ur;el,r07;celo3i,ranquil09;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a05b02cc01ddis aba00gartaZhmedXizawl,lSmPnHqa00rEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a8c5kaOtwerp;hora6o3;na;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 7buquerq6eppo,giers,ma5;ty;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",Region:\"true¦0:2O;1:2L;2:2U;3:2F;a2Sb2Fc21d1Wes1Vf1Tg1Oh1Ki1Fj1Bk16l13m0Sn09o07pYqVrSsJtEuBverAw6y4zacatec2W;akut0o0Fu4;cat1k09;a5est 4isconsin,yomi1O;bengal,virgin0;rwick3shington4;! dc;acruz,mont;dmurt0t4;ah,tar4; 2Pa12;a6e5laxca1Vripu21u4;scaEva;langa2nnessee,x2J;bas10m4smQtar29;aulip2Hil nadu;a9elang07i7o5taf16u4ylh1J;ff02rr09s1E;me1Gno1Uuth 4;cZdY;ber0c4kkim,naloa;hu1ily;n5rawak,skatchew1xo4;ny; luis potosi,ta catari2;a4hodeA;j4ngp0C;asth1shahi;ingh29u4;e4intana roo;bec,en6retaro;aAe6rince edward4unjab; i4;sl0G;i,n5r4;ak,nambu0F;a0Rnsylv4;an0;ha0Pra4;!na;axa0Zdisha,h4klaho21ntar4reg7ss0Dx0I;io;aLeEo6u4;evo le4nav0X;on;r4tt18va scot0;f9mandy,th4; 4ampton3;c6d5yo4;rk3;ako1O;aroli2;olk;bras1Nva0Dw4; 6foundland4;! and labrad4;or;brunswick,hamp3jers5mexiTyork4;! state;ey;galPyarit;aAeghala0Mi6o4;nta2r4;dov0elos;ch6dlanDn5ss4zor11;issippi,ouri;as geraPneso18;ig1oac1;dhy12harasht0Gine,lac07ni5r4ssachusetts;anhao,i el,ylG;p4toba;ur;anca3e4incoln3ouisI;e4iR;ds;a6e5h4omi;aka06ul2;dah,lant1ntucky,ra01;bardino,lmyk0ns0Qr4;achay,el0nata0X;alis6har4iangxi;kh4;and;co;daho,llino7n4owa;d5gush4;et0;ia2;is;a6ert5i4un1;dalFm0D;ford3;mp3rya2waii;ansu,eorg0lou7oa,u4;an4izhou,jarat;ajuato,gdo4;ng;cester3;lori4uji1;da;sex;ageUe7o5uran4;go;rs4;et;lawaMrby3;aFeaEh9o4rim08umbr0;ahui7l6nnectic5rsi4ventry;ca;ut;i03orado;la;e5hattisgarh,i4uvash0;apRhuahua;chn5rke4;ss0;ya;ra;lGm4;bridge3peche;a9ihar,r8u4;ck4ryat0;ingham3;shi4;re;emen,itish columb0;h0ja cal8lk7s4v7;hkorto4que;st1;an;ar0;iforn0;ia;dygHguascalientes,lBndhr9r5ss4;am;izo2kans5un4;achal 7;as;na;a 4;pradesh;a6ber5t4;ai;ta;ba5s4;ka;ma;ea\",Place:\"true¦0:4T;1:4V;2:44;3:4B;4:3I;a4Eb3Gc2Td2Ge26f25g1Vh1Ji1Fk1Cl14m0Vn0No0Jp08r04sTtNuLvJw7y5;a5o0Syz;kut1Bngtze;aDeChitBi9o5upatki,ycom2P;ki26o5;d5l1B;b3Ps5;i4to3Y;c0SllowbroCn5;c2Qgh2;by,chur1P;ed0ntw3Gs22;ke6r3St5;erf1f1; is0Gf3V;auxha3Mirgin is0Jost5;ok;laanbaatar,pto5xb3E;n,wn;a9eotihuac43h7ive49o6ru2Nsarskoe selo,u5;l2Dzigo47;nto,rquay,tt2J;am3e 5orn3E;bronx,hamptons;hiti,j mah0Iu1N;aEcotts bluff,eCfo,herbroQoApring9t7u5yd2F;dbu1Wn5;der03set3B;aff1ock2Nr5;atf1oud;hi37w24;ho,uth5; 1Iam1Zwo3E;a5i2O;f2Tt0;int lawrence riv3Pkhal2D;ayleigh,ed7i5oc1Z;chmo1Eo gran4ver5;be1Dfr09si4; s39cliffe,hi2Y;aCe9h8i5ompeii,utn2;c6ne5tcai2T; 2Pc0G;keri13t0;l,x;k,lh2mbr6n5r2J;n1Hzance;oke;cif38pahanaumokuak30r5;k5then0;si4w1K;ak7r6x5;f1l2X;ange county,d,f1inoco;mTw1G;e8i1Uo5;r5tt2N;th5wi0E; 0Sam19;uschwanste1Pw5; eng6a5h2market,po36;rk;la0P;a8co,e6i5uc;dt1Yll0Z;adow5ko0H;lands;chu picchu,gad2Ridsto1Ql8n7ple6r5;kh2; g1Cw11;hatt2Osf2B;ibu,t0ve1Z;a8e7gw,hr,in5owlOynd02;coln memori5dl2C;al;asi4w3;kefr7mbe1On5s,x;ca2Ig5si05;f1l27t0;ont;azan kreml14e6itchen2Gosrae,rasnoyar5ul;sk;ns0Hs1U;ax,cn,lf1n6ps5st;wiN;d5glew0Lverness;ian27ochina;aDeBi6kg,nd,ov5unti2H;d,enweep;gh6llc5;reL;bu03l5;and5;!s;r5yw0C;ef1tf1;libu24mp6r5stings;f1lem,row;stead,t0;aDodavari,r5uelph;avenAe5imsS;at 8en5; 6f1Fwi5;ch;acr3vall1H;brita0Flak3;hur5;st;ng3y villa0W;airhavHco,ra;aAgli9nf17ppi8u7ver6x5;et1Lf1;glad3t0;rope,st0;ng;nt0;rls1Ls5;t 5;e5si4;nd;aCe9fw,ig8o7ryd6u5xb;mfri3nstab00rh2tt0;en;nca18rcKv19wnt0B;by;n6r5vonpo1D;ry;!h2;nu8r5;l6t5;f1moor;ingt0;be;aLdg,eIgk,hClBo5royd0;l6m5rnwa0B;pt0;c7lingw6osse5;um;ood;he0S;earwat0St;a8el6i5uuk;chen itza,mney ro07natSricahua;m0Zt5;enh2;mor5rlottetPth2;ro;dar 5ntervilA;breaks,faZg5;rove;ld9m8r5versh2;lis6rizo pla5;in;le;bLpbellf1;weQ;aZcn,eNingl01kk,lackLolt0r5uckV;aGiAo5;ckt0ok5wns cany0;lyn,s5;i4to5;ne;de;dge6gh5;am,t0;n6t5;own;or5;th;ceb6m5;lNpt0;rid5;ge;bu5pool,wa8;rn;aconsfEdf1lBr9verly7x5;hi5;ll; hi5;lls;wi5;ck; air,l5;ingh2;am;ie5;ld;ltimore,rnsl6tters5;ea;ey;bLct0driadic,frica,ginJlGmFn9rc8s7tl6yleOzor3;es;!ant8;hcroft,ia; de triomphe,t6;adyr,ca8dov9tarct5;ic5; oce5;an;st5;er;ericas,s;be6dersh5hambra,list0;ot;rt0;cou5;rt;bot7i5;ngd0;on;sf1;ord\",Country:\"true¦0:38;1:2L;2:3B;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om2pZqat1KrXsKtCu7v5wal4yemTz3;a25imbabwe;es,lis and futu2Y;a3enezue32ietnam;nuatu,tican city;gTk6nited 4ruXs3zbeE; 2Ca,sr;arab emirat0Kkingdom,states3;! of am2Y;!raiV;a8haCimor les0Co7rinidad 5u3;nis0rk3valu;ey,me2Zs and caic1V;and t3t3;oba1L;go,kel10nga;iw2ji3nz2T;ki2V;aDcotl1eCi9lov8o6pa2Dri lanka,u5w3yr0;az3edAitzerl1;il1;d2riname;lomon1Xmal0uth 3;afr2KkMsud2;ak0en0;erra leoFn3;gapo1Yt maart3;en;negLrb0ychellZ;int 3moa,n marino,udi arab0;hele26luc0mart21;epublic of ir0Eom2Euss0w3;an27;a4eIhilippinUitcairn1Mo3uerto riN;l1rtugF;ki2Dl4nama,pua new0Vra3;gu7;au,esti3;ne;aBe9i7or3;folk1Ith4w3;ay; k3ern mariana1D;or0O;caragua,ger3ue;!ia;p3ther1Aw zeal1;al;mib0u3;ru;a7exi6icro0Bo3yanm06;ldova,n3roc5zambA;a4gol0t3;enegro,serrat;co;cAdagasc01l7r5urit4yot3;te;an0i16;shall0Xtin3;ique;a4div3i,ta;es;wi,ys0;ao,ed02;a6e5i3uxembourg;b3echtenste12thu1G;er0ya;ban0Isotho;os,tv0;azakh1Fe4iriba04o3uwait,yrgyz1F;rXsovo;eling0Knya;a3erG;ma16p2;c7nd6r4s3taly,vory coast;le of m2rael;a3el1;n,q;ia,oJ;el1;aiTon3ungary;dur0Ng kong;aBermany,ha0QibraltAre8u3;a6ern5inea3ya0P;! biss3;au;sey;deloupe,m,tema0Q;e3na0N;ce,nl1;ar;bUmb0;a7i6r3;ance,ench 3;guia0Epoly3;nes0;ji,nl1;lklandUroeU;ast tim7cu6gypt,l salv6ngl1quatorial4ritr5st3thiop0;on0; guin3;ea;ad3;or;enmark,jibou5ominica4r con3;go;!n C;ti;aBentral african Ah8o5roat0u4yprRzech3; 9ia;ba,racao;c4lo3morQngo brazzaville,okGsta r04te de ivoiL;mb0;osE;i3ristmasG;le,na;republic;m3naUpe verde,ymanA;bod0ero3;on;aGeDhut2o9r5u3;lgar0r3;kina faso,ma,undi;azil,itish 3unei;virgin3; is3;lands;liv0nai5snia and herzegoviHtswaHuvet3; isl1;and;re;l3n8rmuG;ar3gium,ize;us;h4ngladesh,rbad3;os;am4ra3;in;as;fghaGlDmBn6r4ustr3zerbaij2;al0ia;genti3men0uba;na;dorra,g5t3;arct7igua and barbu3;da;o3uil3;la;er3;ica;b3ger0;an0;ia;ni3;st2;an\",FirstName:\"true¦aTblair,cQdOfrancoZgabMhinaLilya,jHkClBm6ni4quinn,re3s0;h0umit,yd;ay,e0iloh;a,lby;g9ne;co,ko0;!s;a1el0ina,org6;!okuhF;ds,naia,r1tt0xiB;i,y;ion,lo;ashawn,eif,uca;a3e1ir0rM;an;lsFn0rry;dall,yat5;i,sD;a0essIie,ude;i1m0;ie,mG;me;ta;rie0y;le;arcy,ev0;an,on;as1h0;arl8eyenne;ey,sidy;drien,kira,l4nd1ubr0vi;ey;i,r0;a,e0;a,y;ex2f1o0;is;ie;ei,is\",WeekDay:\"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",Month:\"true¦dec0february,july,nov0octo1sept0;em0;ber\",Date:\"true¦ago,on4som4t1week0yesterd5; end,ends;mr1o0;d2morrow;!w;ed0;ay\",Duration:\"true¦centurAd8h7m5q4se3w1y0;ear8r8;eek0k7;!end,s;ason,c5;tr,uarter;i0onth3;llisecond2nute2;our1r1;ay0ecade0;!s;ies,y\",FemaleName:\"true¦0:J7;1:JB;2:IJ;3:IK;4:J1;5:IO;6:JS;7:JO;8:HB;9:JK;A:H4;B:I2;C:IT;D:JH;E:IX;F:BA;G:I4;aGTbFLcDRdD0eBMfB4gADh9Ti9Gj8Dk7Cl5Wm48n3Lo3Hp33qu32r29s15t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof3;e3Sf3la,ra;h2iKlIna,ynH;ab,ep;da,ma;da,h2iHra;nab;aKeJi0FolB7uIvH;et8onDP;i0na;le0sen3;el,gm3Hn,rGLs8W;aoHme0nyi;m5XyAD;aMendDZhiDGiH;dele9lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;ck84kIl8oleAviH;anFenJ4;ky,toriBK;da,lA8rHs0;a,nHoniH9;a,iFR;leHnesH9;nILrH;i1y;g9rHs6xHA;su5te;aYeUhRiNoLrIuHy2;i,la;acJ3iHu0J;c3na,sH;hFta;nHr0F;iFya;aJffaEOnHs6;a,gtiH;ng;!nFSra;aIeHomasi0;a,l9Oo8Ares1;l3ndolwethu;g9Fo88rIssH;!a,ie;eHi,ri7;sa,za;bOlMmKnIrHs6tia0wa0;a60yn;iHya;a,ka,s6;arFe2iHm77ra;!ka;a,iH;a,t6;at6it6;a0Ecarlett,e0AhWiSkye,neza0oQri,tNuIyH;bIGlvi1;ha,mayIJniAsIzH;an3Net8ie,y;anHi7;!a,e,nH;aCe;aIeH;fan4l5Dphan6E;cI5r5;b3fiAAm0LnHphi1;d2ia,ja,ya;er2lJmon1nIobh8QtH;a,i;dy;lETv3;aMeIirHo0risFDy5;a,lDM;ba,e0i5lJrH;iHr6Jyl;!d8Ifa;ia,lDZ;hd,iMki2nJrIu0w0yH;la,ma,na;i,le9on,ron,yn;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye82vH;da,inj;e0ife;en1i0ma;anA9bLd5Oh1SiBkKlJmInd2rHs6vannaC;aCi0;ant6i2;lDOma,ome;ee0in8Tu2;in1ri0;a05eZhXiUoHuthDM;bScRghQl8LnPsJwIxH;anB3ie,y;an,e0;aIeHie,lD;ann7ll1marDGtA;!lHnn1;iHyn;e,nH;a,dF;da,i,na;ayy8G;hel67io;bDRerAyn;a,cIkHmas,nFta,ya;ki,o;h8Xki;ea,iannGMoH;da,n1P;an0bJemFgi0iInHta,y0;a8Bee;han86na;a,eH;cHkaC;a,ca;bi0chIe,i0mo0nHquETy0;di,ia;aERelHiB;!e,le;een4ia0;aPeOhMiLoJrHute6A;iHudenCV;scil3LyamvaB;lHrt3;i0ly;a,paluk;ilome0oebe,ylH;is,lis;ggy,nelope,r5t2;ige,m0VnKo5rvaDMtIulH;a,et8in1;ricHt4T;a,e,ia;do2i07;ctav3dIfD3is6ksa0lHphD3umC5yunbileg;a,ga,iv3;eHvAF;l3t8;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aCeEma;ll1mi;aNcLhariBQkKlaJna,sHta,vi;anHha;ur;!y;a,iDZki;hoGk9YolH;a,e4P;!mh;hir,lHna,risDEsreE;!a,iDDlBV;asuMdLh3i6Dl5nKomi7rgEVtH;aHhal4;lHs6;i1ya;cy,et8;e9iF0ya;nngu2X;a0Ackenz4e02iMoJrignayani,uriDJyH;a,rH;a,iOlNna,tG;bi0i2llBJnH;a,iH;ca,ka,qD9;a,cUdo4ZkaTlOmi,nMrItzi,yH;ar;aJiIlH;anET;am;!l,nB;dy,eHh,n4;nhGrva;aKdJe0iCUlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5DgNi,lKrH;edi7AiIjem,on,yH;em,l;em,sCG;an4iHliCF;nHsCJ;a,da;!an,han;b09cASd07e,g05ha,i04ja,l02n00rLsoum5YtKuIv84xBKyHz4;bell,ra,soBB;d7rH;a,eE;h8Gild1t4;a,cUgQiKjor4l7Un4s6tJwa,yH;!aHbe6Xja9lAE;m,nBL;a,ha,in1;!aJbCGeIja,lDna,sHt63;!a,ol,sa;!l1D;!h,mInH;!a,e,n1;!awit,i;arJeIie,oHr48ueri8;!t;!ry;et46i3B;el4Xi7Cy;dHon,ue5;akranAy;ak,en,iHlo3S;a,ka,nB;a,re,s4te;daHg4;!l3E;alDd4elHge,isDJon0;ei9in1yn;el,le;a0Ne0CiXoQuLyH;d3la,nH;!a,dIe2OnHsCT;!a,e2N;a,sCR;aD4cJel0Pis1lIna,pHz;e,iA;a,u,wa;iHy;a0Se,ja,l2NnB;is,l1UrItt1LuHvel4;el5is1;aKeIi7na,rH;aADi7;lHn1tA;ei;!in1;aTbb9HdSepa,lNnKsJvIzH;!a,be5Ret8z4;!ia;a,et8;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lH;iHy;aA8e;!aH;!nF;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx93y5;iHt4;c3t3;e2PlCO;la,nHra;a,ie,o2;a,or1;a,gh,laH;!ni;!h,nH;a,d2e,n5V;cOdon9DiNkes6mi9Gna,rMtJurIvHxmi,y5;ern1in3;a,e5Aie,yn;as6iIoH;nya,ya;fa,s6;a,isA9;a,la;ey,ie,y;a04eZhXiOlASoNrJyH;lHra;a,ee,ie;istHy6I;a,en,iIyH;!na;!e,n5F;nul,ri,urtnB8;aOerNlB7mJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stE;!na,ra;aHei2ongordzol;dij1w5;el7UiKjsi,lJnIrH;a,i,ri;d2na,za;ey,i,lBLs4y;ra,s6;biAcARdiat7MeBAiSlQmPnyakuma1DrNss6NtKviAyH;!e,lH;a,eH;e,i8T;!a6HeIhHi4TlDri0y;ar8Her8Hie,leErBAy;!lyn8Ori0;a,en,iHl5Xoli0yn;!ma,nFs95;a5il1;ei8Mi,lH;e,ie;a,tl6O;a0AeZiWoOuH;anMdLlHst88;es,iH;a8NeHs8X;!n9tH;!a,te;e5Mi3My;a,iA;!anNcelDdMelGhan7VleLni,sIva0yH;a,ce;eHie;fHlDph7Y;a,in1;en,n1;i7y;!a,e,n45;lHng;!i1DlH;!i1C;anNle0nKrJsH;i8JsH;!e,i8I;i,ri;!a,elGif2CnH;a,et8iHy;!e,f2A;a,eJiInH;a,eIiH;e,n1;!t8;cMda,mi,nIque4YsminFvie2y9zH;min7;a7eIiH;ce,e,n1s;!lHs82t0F;e,le;inIk6HlDquelH;in1yn;da,ta;da,lRmPnOo0rNsIvaHwo0zaro;!a0lu,na;aJiIlaHob89;!n9R;do2;belHdo2;!a,e,l3B;a7Ben1i0ma;di2es,gr72ji;a9elBogH;en1;a,e9iHo0se;a0na;aSeOiJoHus7Kyacin2C;da,ll4rten24snH;a,i9U;lImaH;ri;aIdHlaI;a,egard;ry;ath1BiJlInrietArmi9sH;sa,t1A;en2Uga,mi;di;bi2Fil8MlNnMrJsItHwa,yl8M;i5Tt4;n60ti;iHmo51ri53;etH;!te;aCnaC;a,ey,l4;a02eWiRlPoNrKunJwH;enHyne1R;!dolD;ay,el;acieIetHiselB;a,chE;!la;ld1CogooH;sh;adys,enHor3yn2K;a,da,na;aKgi,lIna,ov8EselHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald5Si,m3Etrud7;et8i4X;a,eHna;s29vieve;ma;bIle,mHrnet,yG;al5Si5;iIrielH;a,l1;!ja;aTeQiPlorOoz3rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0P;n1s66;!ca;a,enc3;en,o0;lIn0rnH;anB;ec3ic3;jr,nArKtHy7;emIiHma,oumaA;ha,ma,n;eh;ah,iBrah,za0;cr4Rd0Re0Qi0Pk0Ol07mXn54rUsOtNuMvHwa;aKelIiH;!e,ta;inFyn;!a;!ngel4V;geni1ni47;h5Yien9ta;mLperanKtH;eIhHrel5;er;l31r7;za;a,eralB;iHma,ne4Lyn;cHka,n;a,ka;aPeNiKmH;aHe21ie,y;!li9nuH;elG;lHn1;e7iHy;a,e,ja;lHrald;da,y;!nue5;aWeUiNlMma,no2oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c3da,e,f,nMsJzaH;!betHveA;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a,i;!in1na;ate1Rta;leEs6;vi;eIiHna,wi0;e,th;l,n;aYeMh3iLjeneKoH;lor5Vminiq4Ln3FrHtt4;a,eEis,la,othHthy;ea,y;ba;an09naCon9ya;anQbPde,eOiMlJmetr3nHsir5M;a,iH;ce,se;a,iIla,orHphi9;es,is;a,l6F;dHrdH;re;!d5Ena;!b2ForaCraC;a,d2nH;!a,e;hl3i0l0GmNnLphn1rIvi1WyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,et8iH;!ca,el1Aka,z;arHia;is;a0Re0Nh04i02lUoJristIynH;di,th3;al,i0;lPnMrIurH;tn1D;aJd2OiHn2Ori9;!nH;a,e,n1;!l4;cepci5Cn4sH;tanHuelo;ce,za;eHleE;en,t8;aJeoIotH;il54;!pat2;ir7rJudH;et8iH;a,ne;a,e,iH;ce,sZ;a2er2ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Sen,iHy;an1e,n1;deJlseIrH;!i7yl;a,y;li9;nMrH;isKlImH;ai9;a,eHot8;n1t8;!sa;d2elGtH;al,elG;cIlH;es8i47;el3ilH;e,ia,y;itlYlXmilWndVrMsKtHy5;aIeIhHri0;er1IleErDy;ri0;a38sH;a37ie;a,iOlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eIie,otHy;a,ta;ne,y;na,s1X;a0Ii0I;a,e,l1;isAl4;in,yn;a0Ke02iZlXoUrH;andi7eRiJoIyH;an0nn;nwDoke;an3HdgMgiLtH;n31tH;!aInH;ey,i,y;ny;d,t8;etH;!t7;an0e,nH;da,na;bbi7glarIlo07nH;iAn4;ka;ancHythe;a,he;an1Clja0nHsm3M;iAtH;ou;aWcVlinUniArPssOtJulaCvH;!erlH;ey,y;hJsy,tH;e,iHy7;e,na;!anH;ie,y;!ie;nItHyl;ha,ie;adIiH;ce;et8i9;ay,da;ca,ky;!triH;ce,z;rbJyaH;rmH;aa;a2o2ra;a2Ub2Od25g21i1Sj5l18m0Zn0Boi,r06sWtVuPvOwa,yIzH;ra,u0;aKes6gJlIn,seH;!l;in;un;!nH;a,na;a,i2K;drLguJrIsteH;ja;el3;stH;in1;a,ey,i,y;aahua,he0;hIi2Gja,miAs2DtrH;id;aMlIraqHt21;at;eIi7yH;!n;e,iHy;gh;!nH;ti;iJleIo6piA;ta;en,n1t8;aHelG;!n1J;a01dje5eZgViTjRnKohito,toHya;inet8nH;el5ia;te;!aKeIiHmJ;e,ka;!mHtt7;ar4;!belIliHmU;sa;!l1;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tH;a,te;!bImHstasiMya;ar3;el;aLberKeliJiHy;e,l3naH;!ta;a,ja;!ly;hGiIl3nB;da;a,ra;le;aWba,ePiMlKthJyH;a,c3sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c3is6jaKksaKna,sJxH;aHia;!nd2;ia,saH;nd2;ra;ia;i0nIyH;ah,na;a,is,naCoud;la;c6da,leEmNnLsH;haClH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lDsH;on;yn;!lH;i9yn;ne;aKbIiHrL;!e,gaK;ey,i7y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",Honorific:\"true¦director1field marsh2lieutenant1rear0sergeant major,vice0; admir1; gener0;al\",\"Adj|Gerund\":\"true¦0:3F;1:3H;2:31;3:2X;4:35;5:33;6:3C;7:2Z;8:36;9:29;a33b2Tc2Bd1Te1If19g12h0Zi0Rl0Nm0Gnu0Fo0Ap04rYsKtEuBvAw1Ayiel3;ar6e08;nBpA;l1Rs0B;fol3n1Zsett2;aEeDhrBi4ouc7rAwis0;e0Bif2oub2us0yi1;ea1SiA;l2vi1;l2mp0rr1J;nt1Vxi1;aMcreec7enten2NhLkyrocke0lo0Vmi2oJpHtDuBweA;e0Ul2;pp2ArA;gi1pri5roun3;aBea8iAri2Hun9;mula0r4;gge4rA;t2vi1;ark2eAraw2;e3llb2F;aAot7;ki1ri1;i9oc29;dYtisf6;aEeBive0oAus7;a4l2;assu4defi9fres7ig9juve07mai9s0vAwar3;ea2italiAol1G;si1zi1;gi1ll6mb2vi1;a6eDier23lun1VrAun2C;eBoA;mi5vo1Z;ce3s5vai2;n3rpleA;xi1;ffCpWutBverAwi1;arc7lap04p0Pri3whel8;goi1l6st1J;en3sA;et0;m2Jrtu4;aEeDiCoBuAyst0L;mb2;t1Jvi1;s5tiga0;an1Rl0n3smeri26;dAtu4;de9;aCeaBiAo0U;fesa0Tvi1;di1ni1;c1Fg19s0;llumiGmFnArri0R;cDfurHsCtBviA;go23ti1;e1Oimi21oxica0rig0V;pi4ul0;orpo20r0K;po5;na0;eaBorr02umilA;ia0;li1rtwar8;lFrA;atiDipCoBuelA;i1li1;undbrea10wi1;pi1;f6ng;a4ea8;a3etc7it0lEoCrBulfA;il2;ee1FighXust1L;rAun3;ebo3thco8;aCoA;a0wA;e4i1;mi1tte4;lectrJmHnExA;aCci0hBis0pA;an3lo3;aOila1B;c0spe1A;ab2coura0CdBergi13ga0Clive9ric7s02tA;hral2i0J;ea4u4;barras5er09pA;owe4;if6;aQeIiBrA;if0;sAzz6;aEgDhearCsen0tA;rAur11;ac0es5;te9;us0;ppoin0r8;biliGcDfi9gra3ligh0mBpres5sAvasG;erE;an3ea9orA;ali0L;a6eiBli9rA;ea5;vi1;ta0;maPri1s7un0zz2;aPhMlo5oAripp2ut0;mGnArrespon3;cer9fDspi4tA;inBrA;as0ibu0ol2;ui1;lic0u5;ni1;fDmCpA;eAromi5;l2ti1;an3;or0;aAil2;llenAnAr8;gi1;l8ptAri1;iva0;aff2eGin3lFoDrBuA;d3st2;eathtaAui5;ki1;gg2i2o8ri1unA;ci1;in3;co8wiA;lAtc7;de4;bsorVcOgonMlJmHnno6ppea2rFsA;pi4su4toA;nBun3;di1;is7;hi1;res0;li1;aFu5;si1;ar8lu4;ri1;mi1;iAzi1;zi1;cAhi1;eleDomA;moBpan6;yi1;da0;ra0;ti1;bi1;ng\",Comparable:\"true¦0:3C;1:3Q;2:3F;a3Tb3Cc33d2Te2Mf2Ag1Wh1Li1Fj1Ek1Bl13m0Xn0So0Rp0Iqu0Gr07sHtCug0vAw4y3za0Q;el10ouN;ary,e6hi5i3ry;ck0Cde,l3n1ry,se;d,y;ny,te;a3i3R;k,ry;a3erda2ulgar;gue,in,st;a6en2Xhi5i4ouZr3;anqu2Cen1ue;dy,g36me0ny;ck,rs28;ll,me,rt,wd3I;aRcaPeOhMiLkin0BlImGoEpDt6u4w3;eet,ift;b3dd0Wperfi21rre28;sta26t21;a8e7iff,r4u3;pUr1;a4ict,o3;ng;ig2Vn0N;a1ep,rn;le,rk,te0;e1Si2Vright0;ci1Yft,l3on,re;emn,id;a3el0;ll,rt;e4i3y;g2Mm0Z;ek,nd2T;ck24l0mp1L;a3iRrill,y;dy,l01rp;ve0Jxy;n1Jr3;ce,y;d,fe,int0l1Hv0V;a8e6i5o3ude;mantic,o19sy,u3;gh;pe,t1P;a3d,mo0A;dy,l;gg4iFndom,p3re,w;id;ed;ai2i3;ck,et;hoAi1Fl9o8r5u3;ny,r3;e,p11;egna2ic4o3;fouSud;ey,k0;liXor;ain,easa2;ny;dd,i0ld,ranL;aive,e5i4o3u14;b0Sisy,rm0Ysy;bb0ce,mb0R;a3r1w;r,t;ad,e5ild,o4u3;nda12te;ist,o1;a4ek,l3;low;s0ty;a8e7i6o3ucky;f0Jn4o15u3ve0w10y0N;d,sy;e0g;ke0l,mp,tt0Eve0;e1Qwd;me,r3te;ge;e4i3;nd;en;ol0ui19;cy,ll,n3;secu6t3;e3ima4;llege2rmedia3;te;re;aAe7i6o5u3;ge,m3ng1C;bYid;me0t;gh,l0;a3fXsita2;dy,rWv3;en0y;nd13ppy,r3;d3sh;!y;aFenEhCiBlAoofy,r3;a8e6i5o3ue0Z;o3ss;vy;m,s0;at,e3y;dy,n;nd,y;ad,ib,ooD;a2d1;a3o3;st0;tDuiS;u1y;aCeebBi9l8o6r5u3;ll,n3r0N;!ny;aCesh,iend0;a3nd,rmD;my;at,ir7;erce,nan3;ci9;le;r,ul3;ty;a6erie,sse4v3xtre0B;il;nti3;al;r4s3;tern,y;ly,th0;appZe9i5ru4u3;mb;nk;r5vi4z3;zy;ne;e,ty;a3ep,n9;d3f,r;!ly;agey,h8l7o5r4u3;dd0r0te;isp,uel;ar3ld,mmon,st0ward0zy;se;evKou1;e3il0;ap,e3;sy;aHiFlCoAr5u3;ff,r0sy;ly;a6i3oad;g4llia2;nt;ht;sh,ve;ld,un3;cy;a4o3ue;nd,o1;ck,nd;g,tt3;er;d,ld,w1;dy;bsu6ng5we3;so3;me;ry;rd\",Adverb:\"true¦a08b05d00eYfSheQinPjustOkinda,likewiZmMnJoEpCquite,r9s5t2u0very,well;ltima01p0; to,wards5;h1iny bit,o0wiO;o,t6;en,us;eldom,o0uch;!me1rt0; of;how,times,w0C;a1e0;alS;ndomRth05;ar excellenEer0oint blank; Lhaps;f3n0utright;ce0ly;! 0;ag05moX; courGten;ewJo0; longWt 0;onHwithstand9;aybe,eanwhiNore0;!ovT;! aboX;deed,steY;lla,n0;ce;or3u0;ck1l9rther0;!moK;ing; 0evK;exampCgood,suH;n mas0vI;se;e0irect2; 2fini0;te0;ly;juAtrop;ackward,y 0;far,no0; means,w; GbroFd nauseam,gEl7ny5part,s4t 2w0;ay,hi0;le;be7l0mo7wor7;arge,ea6; soon,i4;mo0way;re;l 3mo2ongsi1ready,so,togeth0ways;er;de;st;b1t0;hat;ut;ain;ad;lot,posteriori\",Conjunction:\"true¦aXbTcReNhowMiEjust00noBo9p8supposing,t5wh0yet;e1il0o3;e,st;n1re0thN; if,by,vM;evL;h0il,o;erefOo0;!uU;lus,rovided th9;r0therwiM;! not; mattEr,w0;! 0;since,th4w7;f4n0; 0asmuch;as mIcaForder t0;h0o;at;! 0;only,t0w0;hen;!ev3;ith2ven0;! 0;if,tB;er;o0uz;s,z;e0ut,y the time;cau1f0;ore;se;lt3nd,s 0;far1if,m0soon1t2;uch0; as;hou0;gh\",Currency:\"true¦$,aud,bQcOdJeurIfHgbp,hkd,iGjpy,kElDp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotyQł;en,uanP;af,of;h0t5;e0il5;k0q0;elK;oubleJp,upeeJ;e2ound st0;er0;lingG;n0soF;ceEnies;empi7i7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!os;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;e0ny;nt1;aht,itcoin0;!s\",Determiner:\"true¦aBboth,d9e6few,le5mu8neiDplenty,s4th2various,wh0;at0ich0;evC;a0e4is,ose;!t;everal,ome;!ast,s;a1l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\",\"Adj|Present\":\"true¦a07b04cVdQeNfJhollIidRlEmCnarrIoBp9qua8r7s3t2uttFw0;aKet,ro0;ng,u08;endChin;e2hort,l1mooth,our,pa9tray,u0;re,speU;i2ow;cu6da02leSpaN;eplica01i02;ck;aHerfePr0;eseUime,omV;bscu1pen,wn;atu0e3odeH;re;a2e1ive,ow0;er;an;st,y;ow;a2i1oul,r0;ee,inge;rm;iIke,ncy,st;l1mpty,x0;emHpress;abo4ic7;amp,e2i1oub0ry,ull;le;ffu9re6;fu8libe0;raE;alm,l5o0;mpleCn3ol,rr1unterfe0;it;e0u7;ct;juga8sum7;ea1o0;se;n,r;ankru1lu0;nt;pt;li2pproxi0rticula1;ma0;te;ght\",\"Person|Adj\":\"true¦b3du2earnest,frank,mi2r0san1woo1;an0ich,u1;dy;sty;ella,rown\",Modal:\"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ight,ust;an,o0;uld\",Verb:\"true¦born,cannot,gonna,has,keep tabs,msg\",\"Person|Verb\":\"true¦b8ch7dr6foster,gra5ja9lan4ma2ni9ollie,p1rob,s0wade;kip,pike,t5ue;at,eg,ier2;ck,r0;k,shal;ce;ce,nt;ew;ase,u1;iff,l1ob,u0;ck;aze,ossom\",\"Person|Date\":\"true¦a2j0sep;an0une;!uary;p0ugust,v0;ril\"};const gr=36,mr=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",pr=mr.split(\"\").reduce((function(e,t,n){return e[t]=n,e}),{});var fr=function(e){if(void 0!==pr[e])return pr[e];let t=0,n=1,a=gr,r=1;for(;n<e.length;t+=a,n++,a*=gr);for(let n=e.length-1;n>=0;n--,r*=gr){let a=e.charCodeAt(n)-48;a>10&&(a-=7),t+=a*r}return t};const br=function(e,t,n){const a=fr(t);return a<e.symCount?e.syms[a]:n+a+1-e.symCount},yr=function(e){const t={nodes:e.split(\";\"),syms:[],symCount:0};return e.match(\":\")&&function(e){const t=new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");for(let n=0;n<e.nodes.length;n++){const a=t.exec(e.nodes[n]);if(!a){e.symCount=n;break}e.syms[fr(a[1])]=fr(a[2])}e.nodes=e.nodes.slice(e.symCount,e.nodes.length)}(t),function(e){const t=[],n=(a,r)=>{let o=e.nodes[a];\"!\"===o[0]&&(t.push(r),o=o.slice(1));const i=o.split(/([A-Z0-9,]+)/g);for(let o=0;o<i.length;o+=2){const s=i[o],l=i[o+1];if(!s)continue;const u=r+s;if(\",\"===l||void 0===l){t.push(u);continue}const c=br(e,l,a);n(c,u)}};return n(0,\"\"),t}(t)},vr=[\"Possessive\",\"Pronoun\"];const wr={a:[[/(antenn|formul|nebul|vertebr|vit)a$/i,\"$1ae\"],[/ia$/i,\"ia\"]],e:[[/(kn|l|w)ife$/i,\"$1ives\"],[/(hive)$/i,\"$1s\"],[/([m|l])ouse$/i,\"$1ice\"],[/([m|l])ice$/i,\"$1ice\"]],f:[[/^(dwar|handkerchie|hoo|scar|whar)f$/i,\"$1ves\"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i,\"$1ves\"]],i:[[/(octop|vir)i$/i,\"$1i\"]],m:[[/([ti])um$/i,\"$1a\"]],n:[[/^(oxen)$/i,\"$1\"]],o:[[/(al|ad|at|er|et|ed)o$/i,\"$1oes\"]],s:[[/(ax|test)is$/i,\"$1es\"],[/(alias|status)$/i,\"$1es\"],[/sis$/i,\"ses\"],[/(bu)s$/i,\"$1ses\"],[/(sis)$/i,\"ses\"],[/^(?!talis|.*hu)(.*)man$/i,\"$1men\"],[/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,\"$1i\"]],x:[[/(matr|vert|ind|cort)(ix|ex)$/i,\"$1ices\"],[/^(ox)$/i,\"$1en\"]],y:[[/([^aeiouy]|qu)y$/i,\"$1ies\"]],z:[[/(quiz)$/i,\"$1zes\"]]},kr=/([xsz]|ch|sh)$/,Pr=function(e=\"\",t){const{irregularPlurals:n,uncountable:a}=t.two;if(a.hasOwnProperty(e))return e;if(n.hasOwnProperty(e))return n[e];const r=function(e){const t=e[e.length-1];if(!0===wr.hasOwnProperty(t))for(let n=0;n<wr[t].length;n+=1){const a=wr[t][n][0];if(!0===a.test(e))return e.replace(a,wr[t][n][1])}return null}(e);return null!==r?r:kr.test(e)?e+\"es\":e+\"s\"},Ar=/\\|/,Cr={\"20th century fox\":\"Organization\",\"7 eleven\":\"Organization\",\"motel 6\":\"Organization\",g8:\"Organization\",vh1:\"Organization\",\"76ers\":\"SportsTeam\",\"49ers\":\"SportsTeam\",q1:\"Date\",q2:\"Date\",q3:\"Date\",q4:\"Date\",km2:\"Unit\",m2:\"Unit\",dm2:\"Unit\",cm2:\"Unit\",mm2:\"Unit\",mile2:\"Unit\",in2:\"Unit\",yd2:\"Unit\",ft2:\"Unit\",m3:\"Unit\",dm3:\"Unit\",cm3:\"Unit\",in3:\"Unit\",ft3:\"Unit\",yd3:\"Unit\",\"at&t\":\"Organization\",\"black & decker\":\"Organization\",\"h & m\":\"Organization\",\"johnson & johnson\":\"Organization\",\"procter & gamble\":\"Organization\",\"ben & jerry's\":\"Organization\",\"&\":\"Conjunction\",i:[\"Pronoun\",\"Singular\"],he:[\"Pronoun\",\"Singular\"],she:[\"Pronoun\",\"Singular\"],it:[\"Pronoun\",\"Singular\"],they:[\"Pronoun\",\"Plural\"],we:[\"Pronoun\",\"Plural\"],was:[\"Copula\",\"PastTense\"],is:[\"Copula\",\"PresentTense\"],are:[\"Copula\",\"PresentTense\"],am:[\"Copula\",\"PresentTense\"],were:[\"Copula\",\"PastTense\"],her:vr,his:vr,hers:vr,their:vr,theirs:vr,themselves:vr,your:vr,our:vr,ours:vr,my:vr,its:vr,vs:[\"Conjunction\",\"Abbreviation\"],if:[\"Condition\",\"Preposition\"],closer:\"Comparative\",closest:\"Superlative\",much:\"Adverb\",may:\"Modal\",babysat:\"PastTense\",blew:\"PastTense\",drank:\"PastTense\",drove:\"PastTense\",forgave:\"PastTense\",skiied:\"PastTense\",spilt:\"PastTense\",stung:\"PastTense\",swam:\"PastTense\",swung:\"PastTense\",guaranteed:\"PastTense\",shrunk:\"PastTense\",nears:\"PresentTense\",nearing:\"Gerund\",neared:\"PastTense\",no:[\"Negative\",\"Expression\"]},jr={},Nr={two:{irregularPlurals:dr,uncountable:{}}};Object.keys(hr).forEach((e=>{const t=function(e){if(!e)return{};const t=e.split(\"|\").reduce(((e,t)=>{const n=t.split(\"¦\");return e[n[0]]=n[1],e}),{}),n={};return Object.keys(t).forEach((function(e){const a=yr(t[e]);\"true\"===e&&(e=!0);for(let t=0;t<a.length;t++){const r=a[t];!0===n.hasOwnProperty(r)?!1===Array.isArray(n[r])?n[r]=[n[r],e]:n[r].push(e):n[r]=e}})),n}(hr[e]);Ar.test(e)?Object.keys(t).forEach((t=>{if(jr[t]=e,\"Noun|Verb\"===e){const e=Pr(t,Nr);jr[e]=\"Plural|Verb\"}})):Object.keys(t).forEach((t=>{Cr[t]=e}))})),[\":(\",\":)\",\":P\",\":p\",\":O\",\";(\",\";)\",\";P\",\";p\",\";O\",\":3\",\":|\",\":/\",\":\\\\\",\":$\",\":*\",\":@\",\":-(\",\":-)\",\":-P\",\":-p\",\":-O\",\":-3\",\":-|\",\":-/\",\":-\\\\\",\":-$\",\":-*\",\":-@\",\":^(\",\":^)\",\":^P\",\":^p\",\":^O\",\":^3\",\":^|\",\":^/\",\":^\\\\\",\":^$\",\":^*\",\":^@\",\"):\",\"(:\",\"$:\",\"*:\",\")-:\",\"(-:\",\"$-:\",\"*-:\",\")^:\",\"(^:\",\"$^:\",\"*^:\",\"<3\",\"</3\",\"<\\\\3\",\"=(\"].forEach((e=>Cr[e]=\"Emoticon\")),delete Cr[\"\"],delete Cr.null,delete Cr[\" \"];const Ir=\"Singular\";var Dr={beforeTags:{Determiner:Ir,Possessive:Ir,Acronym:Ir,Noun:Ir,Adjective:Ir,PresentTense:Ir,Gerund:Ir,PastTense:Ir,Infinitive:Ir,Date:Ir,Ordinal:Ir,Demonym:Ir},afterTags:{Value:Ir,Modal:Ir,Copula:Ir,PresentTense:Ir,PastTense:Ir,Demonym:Ir,Actor:Ir},beforeWords:{the:Ir,with:Ir,without:Ir,of:Ir,for:Ir,any:Ir,all:Ir,on:Ir,cut:Ir,cuts:Ir,increase:Ir,decrease:Ir,raise:Ir,drop:Ir,save:Ir,saved:Ir,saves:Ir,make:Ir,makes:Ir,made:Ir,minus:Ir,plus:Ir,than:Ir,another:Ir,versus:Ir,neither:Ir,about:Ir,favorite:Ir,best:Ir,daily:Ir,weekly:Ir,linear:Ir,binary:Ir,mobile:Ir,lexical:Ir,technical:Ir,computer:Ir,scientific:Ir,security:Ir,government:Ir,popular:Ir,formal:Ir,no:Ir,more:Ir,one:Ir,let:Ir,her:Ir,his:Ir,their:Ir,our:Ir,us:Ir,sheer:Ir,monthly:Ir,yearly:Ir,current:Ir,previous:Ir,upcoming:Ir,last:Ir,next:Ir,main:Ir,initial:Ir,final:Ir,beginning:Ir,end:Ir,top:Ir,bottom:Ir,future:Ir,past:Ir,major:Ir,minor:Ir,side:Ir,central:Ir,peripheral:Ir,public:Ir,private:Ir},afterWords:{of:Ir,system:Ir,aid:Ir,method:Ir,utility:Ir,tool:Ir,reform:Ir,therapy:Ir,philosophy:Ir,room:Ir,authority:Ir,says:Ir,said:Ir,wants:Ir,wanted:Ir,is:Ir,did:Ir,do:Ir,can:Ir,wise:Ir}};const Hr=\"Infinitive\";var Tr={beforeTags:{Modal:Hr,Adverb:Hr,Negative:Hr,Plural:Hr},afterTags:{Determiner:Hr,Adverb:Hr,Possessive:Hr,Reflexive:Hr,Preposition:Hr,Cardinal:Hr,Comparative:Hr,Superlative:Hr},beforeWords:{i:Hr,we:Hr,you:Hr,they:Hr,to:Hr,please:Hr,will:Hr,have:Hr,had:Hr,would:Hr,could:Hr,should:Hr,do:Hr,did:Hr,does:Hr,can:Hr,must:Hr,us:Hr,me:Hr,let:Hr,even:Hr,when:Hr,help:Hr,he:Hr,she:Hr,it:Hr,being:Hr,bi:Hr,co:Hr,contra:Hr,de:Hr,inter:Hr,intra:Hr,mis:Hr,pre:Hr,out:Hr,counter:Hr,nobody:Hr,somebody:Hr,anybody:Hr,everybody:Hr},afterWords:{the:Hr,me:Hr,you:Hr,him:Hr,us:Hr,her:Hr,his:Hr,them:Hr,they:Hr,it:Hr,himself:Hr,herself:Hr,itself:Hr,myself:Hr,ourselves:Hr,themselves:Hr,something:Hr,anything:Hr,a:Hr,an:Hr,up:Hr,down:Hr,by:Hr,out:Hr,off:Hr,under:Hr,what:Hr,all:Hr,to:Hr,because:Hr,although:Hr,how:Hr,otherwise:Hr,together:Hr,though:Hr,into:Hr,yet:Hr,more:Hr,here:Hr,there:Hr,away:Hr}};const Gr={beforeTags:Object.assign({},Tr.beforeTags,Dr.beforeTags,{}),afterTags:Object.assign({},Tr.afterTags,Dr.afterTags,{}),beforeWords:Object.assign({},Tr.beforeWords,Dr.beforeWords,{}),afterWords:Object.assign({},Tr.afterWords,Dr.afterWords,{})},xr=\"Adjective\";var Er={beforeTags:{Determiner:xr,Possessive:xr,Hyphenated:xr},afterTags:{Adjective:xr},beforeWords:{seem:xr,seemed:xr,seems:xr,feel:xr,feels:xr,felt:xr,stay:xr,appear:xr,appears:xr,appeared:xr,also:xr,over:xr,under:xr,too:xr,it:xr,but:xr,still:xr,really:xr,quite:xr,well:xr,very:xr,truly:xr,how:xr,deeply:xr,hella:xr,profoundly:xr,extremely:xr,so:xr,badly:xr,mostly:xr,totally:xr,awfully:xr,rather:xr,nothing:xr,something:xr,anything:xr,not:xr,me:xr,is:xr,face:xr,faces:xr,faced:xr,look:xr,looks:xr,looked:xr,reveal:xr,reveals:xr,revealed:xr,sound:xr,sounded:xr,sounds:xr,remains:xr,remained:xr,prove:xr,proves:xr,proved:xr,becomes:xr,stays:xr,tastes:xr,taste:xr,smells:xr,smell:xr,gets:xr,grows:xr,as:xr,rings:xr,radiates:xr,conveys:xr,convey:xr,conveyed:xr,of:xr},afterWords:{too:xr,also:xr,or:xr,enough:xr,as:xr}};const Fr=\"Gerund\";var Or={beforeTags:{Adverb:Fr,Preposition:Fr,Conjunction:Fr},afterTags:{Adverb:Fr,Possessive:Fr,Person:Fr,Pronoun:Fr,Determiner:Fr,Copula:Fr,Preposition:Fr,Conjunction:Fr,Comparative:Fr},beforeWords:{been:Fr,keep:Fr,continue:Fr,stop:Fr,am:Fr,be:Fr,me:Fr,began:Fr,start:Fr,starts:Fr,started:Fr,stops:Fr,stopped:Fr,help:Fr,helps:Fr,avoid:Fr,avoids:Fr,love:Fr,loves:Fr,loved:Fr,hate:Fr,hates:Fr,hated:Fr},afterWords:{you:Fr,me:Fr,her:Fr,him:Fr,his:Fr,them:Fr,their:Fr,it:Fr,this:Fr,there:Fr,on:Fr,about:Fr,for:Fr,up:Fr,down:Fr}};const zr=\"Gerund\",Vr=\"Adjective\",Br={beforeTags:Object.assign({},Er.beforeTags,Or.beforeTags,{Imperative:zr,Infinitive:Vr,Plural:zr}),afterTags:Object.assign({},Er.afterTags,Or.afterTags,{Noun:Vr}),beforeWords:Object.assign({},Er.beforeWords,Or.beforeWords,{is:Vr,are:zr,was:Vr,of:Vr,suggest:zr,suggests:zr,suggested:zr,recommend:zr,recommends:zr,recommended:zr,imagine:zr,imagines:zr,imagined:zr,consider:zr,considered:zr,considering:zr,resist:zr,resists:zr,resisted:zr,avoid:zr,avoided:zr,avoiding:zr,except:Vr,accept:Vr,assess:zr,explore:zr,fear:zr,fears:zr,appreciate:zr,question:zr,help:zr,embrace:zr,with:Vr}),afterWords:Object.assign({},Er.afterWords,Or.afterWords,{to:zr,not:zr,the:zr})},Sr={beforeTags:{Determiner:void 0,Cardinal:\"Noun\",PhrasalVerb:\"Adjective\"},afterTags:{}},Kr={beforeTags:Object.assign({},Er.beforeTags,Dr.beforeTags,Sr.beforeTags),afterTags:Object.assign({},Er.afterTags,Dr.afterTags,Sr.afterTags),beforeWords:Object.assign({},Er.beforeWords,Dr.beforeWords,{are:\"Adjective\",is:\"Adjective\",was:\"Adjective\",be:\"Adjective\",off:\"Adjective\",out:\"Adjective\"}),afterWords:Object.assign({},Er.afterWords,Dr.afterWords)},$r=\"PastTense\",Lr=\"Adjective\",Mr={beforeTags:{Adverb:$r,Pronoun:$r,ProperNoun:$r,Auxiliary:$r,Noun:$r},afterTags:{Possessive:$r,Pronoun:$r,Determiner:$r,Adverb:$r,Comparative:$r,Date:$r,Gerund:$r},beforeWords:{be:$r,who:$r,get:Lr,had:$r,has:$r,have:$r,been:$r,it:$r,as:$r,for:Lr,more:Lr,always:Lr},afterWords:{by:$r,back:$r,out:$r,in:$r,up:$r,down:$r,before:$r,after:$r,for:$r,the:$r,with:$r,as:$r,on:$r,at:$r,between:$r,to:$r,into:$r,us:$r,them:$r,his:$r,her:$r,their:$r,our:$r,me:$r,about:Lr}};var Jr={beforeTags:Object.assign({},Er.beforeTags,Mr.beforeTags),afterTags:Object.assign({},Er.afterTags,Mr.afterTags),beforeWords:Object.assign({},Er.beforeWords,Mr.beforeWords),afterWords:Object.assign({},Er.afterWords,Mr.afterWords)};const Wr={afterTags:{Noun:\"Adjective\",Conjunction:void 0}},Ur={beforeTags:Object.assign({},Er.beforeTags,Tr.beforeTags,{Adverb:void 0,Negative:void 0}),afterTags:Object.assign({},Er.afterTags,Tr.afterTags,Wr.afterTags),beforeWords:Object.assign({},Er.beforeWords,Tr.beforeWords,{have:void 0,had:void 0,not:void 0,went:\"Adjective\",goes:\"Adjective\",got:\"Adjective\",be:\"Adjective\"}),afterWords:Object.assign({},Er.afterWords,Tr.afterWords,{to:void 0,as:\"Adjective\"})},qr={Copula:\"Gerund\",PastTense:\"Gerund\",PresentTense:\"Gerund\",Infinitive:\"Gerund\"},Rr={Value:\"Gerund\"},Qr={are:\"Gerund\",were:\"Gerund\",be:\"Gerund\",no:\"Gerund\",without:\"Gerund\",you:\"Gerund\",we:\"Gerund\",they:\"Gerund\",he:\"Gerund\",she:\"Gerund\",us:\"Gerund\",them:\"Gerund\"},Zr={the:\"Gerund\",this:\"Gerund\",that:\"Gerund\",me:\"Gerund\",us:\"Gerund\",them:\"Gerund\"},Xr={beforeTags:Object.assign({},Or.beforeTags,Dr.beforeTags,qr),afterTags:Object.assign({},Or.afterTags,Dr.afterTags,Rr),beforeWords:Object.assign({},Or.beforeWords,Dr.beforeWords,Qr),afterWords:Object.assign({},Or.afterWords,Dr.afterWords,Zr)},_r=\"Singular\",Yr=\"Infinitive\",eo={beforeTags:Object.assign({},Tr.beforeTags,Dr.beforeTags,{Adjective:_r,Particle:_r}),afterTags:Object.assign({},Tr.afterTags,Dr.afterTags,{ProperNoun:Yr,Gerund:Yr,Adjective:Yr,Copula:_r}),beforeWords:Object.assign({},Tr.beforeWords,Dr.beforeWords,{is:_r,was:_r,of:_r,have:null}),afterWords:Object.assign({},Tr.afterWords,Dr.afterWords,{instead:Yr,about:Yr,his:Yr,her:Yr,to:null,by:null,in:null})},to=\"Person\";var no={beforeTags:{Honorific:to,Person:to},afterTags:{Person:to,ProperNoun:to,Verb:to},beforeWords:{hi:to,hey:to,yo:to,dear:to,hello:to},afterWords:{said:to,says:to,told:to,tells:to,feels:to,felt:to,seems:to,thinks:to,thought:to,spends:to,spendt:to,plays:to,played:to,sing:to,sang:to,learn:to,learned:to,wants:to,wanted:to}};const ao=\"Month\",ro={beforeTags:{Date:ao,Value:ao},afterTags:{Date:ao,Value:ao},beforeWords:{by:ao,in:ao,on:ao,during:ao,after:ao,before:ao,between:ao,until:ao,til:ao,sometime:ao,of:ao,this:ao,next:ao,last:ao,previous:ao,following:ao,with:\"Person\"},afterWords:{sometime:ao,in:ao,of:ao,until:ao,the:ao}};var oo={beforeTags:Object.assign({},no.beforeTags,ro.beforeTags),afterTags:Object.assign({},no.afterTags,ro.afterTags),beforeWords:Object.assign({},no.beforeWords,ro.beforeWords),afterWords:Object.assign({},no.afterWords,ro.afterWords)};const io=\"Place\",so={beforeTags:{Place:io},afterTags:{Place:io,Abbreviation:io},beforeWords:{in:io,by:io,near:io,from:io,to:io},afterWords:{in:io,by:io,near:io,from:io,to:io,government:io,council:io,region:io,city:io}},lo=\"Unit\",uo={\"Actor|Verb\":Gr,\"Adj|Gerund\":Br,\"Adj|Noun\":Kr,\"Adj|Past\":Jr,\"Adj|Present\":Ur,\"Noun|Verb\":eo,\"Noun|Gerund\":Xr,\"Person|Noun\":{beforeTags:Object.assign({},Dr.beforeTags,no.beforeTags),afterTags:Object.assign({},Dr.afterTags,no.afterTags),beforeWords:Object.assign({},Dr.beforeWords,no.beforeWords,{i:\"Infinitive\",we:\"Infinitive\"}),afterWords:Object.assign({},Dr.afterWords,no.afterWords)},\"Person|Date\":oo,\"Person|Verb\":{beforeTags:Object.assign({},Dr.beforeTags,no.beforeTags,Tr.beforeTags),afterTags:Object.assign({},Dr.afterTags,no.afterTags,Tr.afterTags),beforeWords:Object.assign({},Dr.beforeWords,no.beforeWords,Tr.beforeWords),afterWords:Object.assign({},Dr.afterWords,no.afterWords,Tr.afterWords)},\"Person|Place\":{beforeTags:Object.assign({},so.beforeTags,no.beforeTags),afterTags:Object.assign({},so.afterTags,no.afterTags),beforeWords:Object.assign({},so.beforeWords,no.beforeWords),afterWords:Object.assign({},so.afterWords,no.afterWords)},\"Person|Adj\":{beforeTags:Object.assign({},no.beforeTags,Er.beforeTags),afterTags:Object.assign({},no.afterTags,Er.afterTags),beforeWords:Object.assign({},no.beforeWords,Er.beforeWords),afterWords:Object.assign({},no.afterWords,Er.afterWords)},\"Unit|Noun\":{beforeTags:{Value:lo},afterTags:{},beforeWords:{per:lo,every:lo,each:lo,square:lo,cubic:lo,sq:lo,metric:lo},afterWords:{per:lo,squared:lo,cubed:lo,long:lo}}},co=(e,t)=>{const n=Object.keys(e).reduce(((t,n)=>(t[n]=\"Infinitive\"===e[n]?\"PresentTense\":\"Plural\",t)),{});return Object.assign(n,t)};uo[\"Plural|Verb\"]={beforeWords:co(uo[\"Noun|Verb\"].beforeWords,{had:\"Plural\",have:\"Plural\"}),afterWords:co(uo[\"Noun|Verb\"].afterWords,{his:\"PresentTense\",her:\"PresentTense\",its:\"PresentTense\",in:null,to:null,is:\"PresentTense\",by:\"PresentTense\"}),beforeTags:co(uo[\"Noun|Verb\"].beforeTags,{Conjunction:\"PresentTense\",Noun:void 0,ProperNoun:\"PresentTense\"}),afterTags:co(uo[\"Noun|Verb\"].afterTags,{Gerund:\"Plural\",Noun:\"PresentTense\",Value:\"PresentTense\"})};const ho=\"Adjective\",go=\"Infinitive\",mo=\"PresentTense\",po=\"Singular\",fo=\"PastTense\",bo=\"Adverb\",yo=\"Plural\",vo=\"Actor\",wo=\"Verb\",ko=\"Noun\",Po=\"LastName\",Ao=\"Modal\",Co=\"Place\",jo=\"Participle\";var No=[null,null,{ea:po,ia:ko,ic:ho,ly:bo,\"'n\":wo,\"'t\":wo},{oed:fo,ued:fo,xed:fo,\" so\":bo,\"'ll\":Ao,\"'re\":\"Copula\",azy:ho,eer:ko,end:wo,ped:fo,ffy:ho,ify:go,ing:\"Gerund\",ize:go,ibe:go,lar:ho,mum:ho,nes:mo,nny:ho,ous:ho,que:ho,ger:ko,ber:ko,rol:po,sis:po,ogy:po,oid:po,ian:po,zes:mo,eld:fo,ken:jo,ven:jo,ten:jo,ect:go,ict:go,ign:go,oze:go,ful:ho,bal:ho,ton:ko,pur:Co},{amed:fo,aped:fo,ched:fo,lked:fo,rked:fo,reed:fo,nded:fo,mned:ho,cted:fo,dged:fo,ield:po,akis:Po,cede:go,chuk:Po,czyk:Po,ects:mo,iend:po,ends:wo,enko:Po,ette:po,iary:po,wner:po,fies:mo,fore:bo,gate:go,gone:ho,ices:yo,ints:yo,ruct:go,ines:yo,ions:yo,ners:yo,pers:yo,lers:yo,less:ho,llen:ho,made:ho,nsen:Po,oses:mo,ould:Ao,some:ho,sson:Po,ians:yo,tion:po,tage:ko,ique:po,tive:ho,tors:ko,vice:po,lier:po,fier:po,wned:fo,gent:po,tist:vo,pist:vo,rist:vo,mist:vo,yist:vo,vist:vo,ists:vo,lite:po,site:po,rite:po,mite:po,bite:po,mate:po,date:po,ndal:po,vent:po,uist:vo,gist:vo,note:po,cide:po,ence:po,wide:ho,vide:go,ract:go,duce:go,pose:go,eive:go,lyze:go,lyse:go,iant:ho,nary:ho,ghty:ho,uent:ho,erer:vo,bury:Co,dorf:ko,esty:ko,wych:Co,dale:Co,folk:Co,vale:Co,abad:Co,sham:Co,wick:Co,view:Co},{elist:vo,holic:po,phite:po,tized:fo,urned:fo,eased:fo,ances:yo,bound:ho,ettes:yo,fully:bo,ishes:mo,ities:yo,marek:Po,nssen:Po,ology:ko,osome:po,tment:po,ports:yo,rough:ho,tches:mo,tieth:\"Ordinal\",tures:yo,wards:bo,where:bo,archy:ko,pathy:ko,opoly:ko,embly:ko,phate:ko,ndent:po,scent:po,onist:vo,anist:vo,alist:vo,olist:vo,icist:vo,ounce:go,iable:ho,borne:ho,gnant:ho,inant:ho,igent:ho,atory:ho,rient:po,dient:po,maker:vo,burgh:Co,mouth:Co,ceter:Co,ville:Co,hurst:Co,stead:Co,endon:Co,brook:Co,shire:Co,worth:ko,field:\"ProperNoun\",ridge:Co},{auskas:Po,parent:po,cedent:po,ionary:po,cklist:po,brooke:Co,keeper:vo,logist:vo,teenth:\"Value\",worker:vo,master:vo,writer:vo,brough:Co,cester:Co,ington:Co,cliffe:Co,ingham:Co},{chester:Co,logists:vo,opoulos:Po,borough:Co,sdottir:Po}];const Io=\"Adjective\",Do=\"Noun\",Ho=\"Verb\";var To=[null,null,{},{neo:Do,bio:Do,\"de-\":Ho,\"re-\":Ho,\"un-\":Ho,\"ex-\":Do},{anti:Do,auto:Do,faux:Io,hexa:Do,kilo:Do,mono:Do,nano:Do,octa:Do,poly:Do,semi:Io,tele:Do,\"pro-\":Io,\"mis-\":Ho,\"dis-\":Ho,\"pre-\":Io},{anglo:Do,centi:Do,ethno:Do,ferro:Do,grand:Do,hepta:Do,hydro:Do,intro:Do,macro:Do,micro:Do,milli:Do,nitro:Do,penta:Do,quasi:Io,radio:Do,tetra:Do,\"omni-\":Io,\"post-\":Io},{pseudo:Io,\"extra-\":Io,\"hyper-\":Io,\"inter-\":Io,\"intra-\":Io,\"deca-\":Io},{electro:Do}];const Go=\"Adjective\",xo=\"Infinitive\",Eo=\"PresentTense\",Fo=\"Singular\",Oo=\"PastTense\",zo=\"Adverb\",Vo=\"Expression\",Bo=\"Actor\",So=\"Verb\",Ko=\"Noun\",$o=\"LastName\";var Lo={a:[[/.[aeiou]na$/,Ko,\"tuna\"],[/.[oau][wvl]ska$/,$o],[/.[^aeiou]ica$/,Fo,\"harmonica\"],[/^([hyj]a+)+$/,Vo,\"haha\"]],c:[[/.[^aeiou]ic$/,Go]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,Oo,\"popped\"],[/.[aeo]{2}[bdgmnprvz]ed$/,Oo,\"rammed\"],[/.[aeiou][sg]hed$/,Oo,\"gushed\"],[/.[aeiou]red$/,Oo,\"hired\"],[/.[aeiou]r?ried$/,Oo,\"hurried\"],[/[^aeiou]ard$/,Fo,\"steward\"],[/[aeiou][^aeiou]id$/,Go,\"\"],[/.[vrl]id$/,Go,\"livid\"],[/..led$/,Oo,\"hurled\"],[/.[iao]sed$/,Oo,\"\"],[/[aeiou]n?[cs]ed$/,Oo,\"\"],[/[aeiou][rl]?[mnf]ed$/,Oo,\"\"],[/[aeiou][ns]?c?ked$/,Oo,\"bunked\"],[/[aeiou]gned$/,Oo],[/[aeiou][nl]?ged$/,Oo],[/.[tdbwxyz]ed$/,Oo],[/[^aeiou][aeiou][tvx]ed$/,Oo],[/.[cdflmnprstv]ied$/,Oo,\"emptied\"]],e:[[/.[lnr]ize$/,xo,\"antagonize\"],[/.[^aeiou]ise$/,xo,\"antagonise\"],[/.[aeiou]te$/,xo,\"bite\"],[/.[^aeiou][ai]ble$/,Go,\"fixable\"],[/.[^aeiou]eable$/,Go,\"maleable\"],[/.[ts]ive$/,Go,\"festive\"],[/[a-z]-like$/,Go,\"woman-like\"]],h:[[/.[^aeiouf]ish$/,Go,\"cornish\"],[/.v[iy]ch$/,$o,\"..ovich\"],[/^ug?h+$/,Vo,\"ughh\"],[/^uh[ -]?oh$/,Vo,\"uhoh\"],[/[a-z]-ish$/,Go,\"cartoon-ish\"]],i:[[/.[oau][wvl]ski$/,$o,\"polish-male\"]],k:[[/^(k){2}$/,Vo,\"kkkk\"]],l:[[/.[gl]ial$/,Go,\"familial\"],[/.[^aeiou]ful$/,Go,\"fitful\"],[/.[nrtumcd]al$/,Go,\"natal\"],[/.[^aeiou][ei]al$/,Go,\"familial\"]],m:[[/.[^aeiou]ium$/,Fo,\"magnesium\"],[/[^aeiou]ism$/,Fo,\"schism\"],[/^[hu]m+$/,Vo,\"hmm\"],[/^\\d+ ?[ap]m$/,\"Date\",\"3am\"]],n:[[/.[lsrnpb]ian$/,Go,\"republican\"],[/[^aeiou]ician$/,Bo,\"musician\"],[/[aeiou][ktrp]in'$/,\"Gerund\",\"cookin'\"]],o:[[/^no+$/,Vo,\"noooo\"],[/^(yo)+$/,Vo,\"yoo\"],[/^wo{2,}[pt]?$/,Vo,\"woop\"]],r:[[/.[bdfklmst]ler$/,\"Noun\"],[/[aeiou][pns]er$/,Fo],[/[^i]fer$/,xo],[/.[^aeiou][ao]pher$/,Bo],[/.[lk]er$/,\"Noun\"],[/.ier$/,\"Comparative\"]],t:[[/.[di]est$/,\"Superlative\"],[/.[icldtgrv]ent$/,Go],[/[aeiou].*ist$/,Go],[/^[a-z]et$/,So]],s:[[/.[^aeiou]ises$/,Eo],[/.[rln]ates$/,Eo],[/.[^z]ens$/,So],[/.[lstrn]us$/,Fo],[/.[aeiou]sks$/,Eo],[/.[aeiou]kes$/,Eo],[/[aeiou][^aeiou]is$/,Fo],[/[a-z]'s$/,Ko],[/^yes+$/,Vo]],v:[[/.[^aeiou][ai][kln]ov$/,$o]],y:[[/.[cts]hy$/,Go],[/.[st]ty$/,Go],[/.[tnl]ary$/,Go],[/.[oe]ry$/,Fo],[/[rdntkbhs]ly$/,zo],[/.(gg|bb|zz)ly$/,Go],[/...lly$/,zo],[/.[gk]y$/,Go],[/[bszmp]{2}y$/,Go],[/.[ai]my$/,Go],[/[ea]{2}zy$/,Go],[/.[^aeiou]ity$/,Fo]]};const Mo=\"Verb\",Jo=\"Noun\";var Wo={leftTags:[[\"Adjective\",Jo],[\"Possessive\",Jo],[\"Determiner\",Jo],[\"Adverb\",Mo],[\"Pronoun\",Mo],[\"Value\",Jo],[\"Ordinal\",Jo],[\"Modal\",Mo],[\"Superlative\",Jo],[\"Demonym\",Jo],[\"Honorific\",\"Person\"]],leftWords:[[\"i\",Mo],[\"first\",Jo],[\"it\",Mo],[\"there\",Mo],[\"not\",Mo],[\"because\",Jo],[\"if\",Jo],[\"but\",Jo],[\"who\",Mo],[\"this\",Jo],[\"his\",Jo],[\"when\",Jo],[\"you\",Mo],[\"very\",\"Adjective\"],[\"old\",Jo],[\"never\",Mo],[\"before\",Jo],[\"a\",Jo],[\"the\",Jo],[\"been\",Mo]],rightTags:[[\"Copula\",Jo],[\"PastTense\",Jo],[\"Conjunction\",Jo],[\"Modal\",Jo]],rightWords:[[\"there\",Mo],[\"me\",Mo],[\"man\",\"Adjective\"],[\"him\",Mo],[\"it\",Mo],[\"were\",Jo],[\"took\",Jo],[\"himself\",Mo],[\"went\",Jo],[\"who\",Jo],[\"jr\",\"Person\"]]},Uo={fwd:\"3:ser,ier¦1er:h,t,f,l,n¦1r:e¦2er:ss,or,om\",both:\"3er:ver,ear,alm¦3ner:hin¦3ter:lat¦2mer:im¦2er:ng,rm,mb¦2ber:ib¦2ger:ig¦1er:w,p,k,d¦ier:y\",rev:\"1:tter,yer¦2:uer,ver,ffer,oner,eler,ller,iler,ster,cer,uler,sher,ener,gher,aner,adder,nter,eter,rter,hter,rner,fter¦3:oser,ooler,eafer,user,airer,bler,maler,tler,eater,uger,rger,ainer,urer,ealer,icher,pler,emner,icter,nser,iser¦4:arser,viner,ucher,rosser,somer,ndomer,moter,oother,uarer,hiter¦5:nuiner,esser,emier¦ar:urther\",ex:\"worse:bad¦better:good¦4er:fair,gray,poor¦1urther:far¦3ter:fat,hot,wet¦3der:mad,sad¦3er:shy,fun¦4der:glad¦:¦4r:cute,dire,fake,fine,free,lame,late,pale,rare,ripe,rude,safe,sore,tame,wide¦5r:eerie,stale\"},qo={fwd:\"1:nning,tting,rring,pping,eing,mming,gging,dding,bbing,kking¦2:eking,oling,eling,eming¦3:velling,siting,uiting,fiting,loting,geting,ialing,celling¦4:graming\",both:\"1:aing,iing,fing,xing,ying,oing,hing,wing¦2:tzing,rping,izzing,bting,mning,sping,wling,rling,wding,rbing,uping,lming,wning,mping,oning,lting,mbing,lking,fting,hting,sking,gning,pting,cking,ening,nking,iling,eping,ering,rting,rming,cting,lping,ssing,nting,nding,lding,sting,rning,rding,rking¦3:belling,siping,toming,yaking,uaking,oaning,auling,ooping,aiding,naping,euring,tolling,uzzing,ganing,haning,ualing,halling,iasing,auding,ieting,ceting,ouling,voring,ralling,garing,joring,oaming,oaking,roring,nelling,ooring,uelling,eaming,ooding,eaping,eeting,ooting,ooming,xiting,keting,ooking,ulling,airing,oaring,biting,outing,oiting,earing,naling,oading,eeding,ouring,eaking,aiming,illing,oining,eaning,onging,ealing,aining,eading¦4:thoming,melling,aboring,ivoting,weating,dfilling,onoring,eriting,imiting,tialling,rgining,otoring,linging,winging,lleting,louding,spelling,mpelling,heating,feating,opelling,choring,welling,ymaking,ctoring,calling,peating,iloring,laiting,utoring,uditing,mmaking,loating,iciting,waiting,mbating,voiding,otalling,nsoring,nselling,ocusing,itoring,eloping¦5:rselling,umpeting,atrolling,treating,tselling,rpreting,pringing,ummeting,ossoming,elmaking,eselling,rediting,totyping,onmaking,rfeiting,ntrolling¦5e:chmaking,dkeeping,severing,erouting,ecreting,ephoning,uthoring,ravening,reathing,pediting,erfering,eotyping,fringing,entoring,ombining,ompeting¦4e:emaking,eething,twining,rruling,chuting,xciting,rseding,scoping,edoring,pinging,lunging,agining,craping,pleting,eleting,nciting,nfining,ncoding,tponing,ecoding,writing,esaling,nvening,gnoring,evoting,mpeding,rvening,dhering,mpiling,storing,nviting,ploring¦3e:tining,nuring,saking,miring,haling,ceding,xuding,rining,nuting,laring,caring,miling,riding,hoking,piring,lading,curing,uading,noting,taping,futing,paring,hading,loding,siring,guring,vading,voking,during,niting,laning,caping,luting,muting,ruding,ciding,juring,laming,caling,hining,uoting,liding,ciling,duling,tuting,puting,cuting,coring,uiding,tiring,turing,siding,rading,enging,haping,buting,lining,taking,anging,haring,uiring,coming,mining,moting,suring,viding,luding¦2e:tring,zling,uging,oging,gling,iging,vring,fling,lging,obing,psing,pling,ubing,cling,dling,wsing,iking,rsing,dging,kling,ysing,tling,rging,eging,nsing,uning,osing,uming,using,ibing,bling,aging,ising,asing,ating¦2ie:rlying¦1e:zing,uing,cing,ving\",rev:\"ying:ie¦1ing:se,ke,te,we,ne,re,de,pe,me,le,c,he¦2ing:ll,ng,dd,ee,ye,oe,rg,us¦2ning:un¦2ging:og,ag,ug,ig,eg¦2ming:um¦2bing:ub,ab,eb,ob¦3ning:lan,can,hin,pin,win¦3ring:cur,lur,tir,tar,pur,car¦3ing:ait,del,eel,fin,eat,oat,eem,lel,ool,ein,uin¦3ping:rop,rap,top,uip,wap,hip,hop,lap,rip,cap¦3ming:tem,wim,rim,kim,lim¦3ting:mat,cut,pot,lit,lot,hat,set,pit,put¦3ding:hed,bed,bid¦3king:rek¦3ling:cil,pel¦3bing:rib¦4ning:egin¦4ing:isit,ruit,ilot,nsit,dget,rkel,ival,rcel¦4ring:efer,nfer¦4ting:rmit,mmit,ysit,dmit,emit,bmit,tfit,gret¦4ling:evel,xcel,ivel¦4ding:hred¦5ing:arget,posit,rofit¦5ring:nsfer¦5ting:nsmit,orget,cquit¦5ling:ancel,istil\",ex:\"3:adding,eating,aiming,aiding,airing,outing,gassing,setting,getting,putting,cutting,winning,sitting,betting,mapping,tapping,letting,bidding,hitting,tanning,netting,popping,fitting,capping,lapping,barring,banning,vetting,topping,rotting,tipping,potting,wetting,pitting,dipping,budding,hemming,pinning,jetting,kidding,padding,podding,sipping,wedding,bedding,donning,warring,penning,gutting,cueing,wadding,petting,ripping,napping,matting,tinning,binning,dimming,hopping,mopping,nodding,panning,rapping,ridding,sinning¦4:selling,falling,calling,waiting,editing,telling,rolling,heating,boating,hanging,beating,coating,singing,tolling,felling,polling,discing,seating,voiding,gelling,yelling,baiting,reining,ruining,seeking,spanning,stepping,knitting,emitting,slipping,quitting,dialing,omitting,clipping,shutting,skinning,abutting,flipping,trotting,cramming,fretting,suiting¦5:bringing,treating,spelling,stalling,trolling,expelling,rivaling,wringing,deterring,singeing,befitting,refitting¦6:enrolling,distilling,scrolling,strolling,caucusing,travelling¦7:installing,redefining,stencilling,recharging,overeating,benefiting,unraveling,programing¦9:reprogramming¦is:being¦2e:using,aging,owing¦3e:making,taking,coming,noting,hiring,filing,coding,citing,doping,baking,coping,hoping,lading,caring,naming,voting,riding,mining,curing,lining,ruling,typing,boring,dining,firing,hiding,piling,taping,waning,baling,boning,faring,honing,wiping,luring,timing,wading,piping,fading,biting,zoning,daring,waking,gaming,raking,ceding,tiring,coking,wining,joking,paring,gaping,poking,pining,coring,liming,toting,roping,wiring,aching¦4e:writing,storing,eroding,framing,smoking,tasting,wasting,phoning,shaking,abiding,braking,flaking,pasting,priming,shoring,sloping,withing,hinging¦5e:defining,refining,renaming,swathing,fringing,reciting¦1ie:dying,tying,lying,vying¦7e:sunbathing\"},Ro={fwd:\"1:mt¦2:llen¦3:iven,aken¦:ne¦y:in\",both:\"1:wn¦2:me,aten¦3:seen,bidden,isen¦4:roven,asten¦3l:pilt¦3d:uilt¦2e:itten¦1im:wum¦1eak:poken¦1ine:hone¦1ose:osen¦1in:gun¦1ake:woken¦ear:orn¦eal:olen¦eeze:ozen¦et:otten¦ink:unk¦ing:ung\",rev:\"2:un¦oken:eak¦ought:eek¦oven:eave¦1ne:o¦1own:ly¦1den:de¦1in:ay¦2t:am¦2n:ee¦3en:all¦4n:rive,sake,take¦5n:rgive\",ex:\"2:been¦3:seen,run¦4:given,taken¦5:shaken¦2eak:broken¦1ive:dove¦2y:flown¦3e:hidden,ridden¦1eek:sought¦1ake:woken¦1eave:woven\"},Qo={fwd:\"1:oes¦1ve:as\",both:\"1:xes¦2:zzes,ches,shes,sses¦3:iases¦2y:llies,plies¦1y:cies,bies,ties,vies,nies,pies,dies,ries,fies¦:s\",rev:\"1ies:ly¦2es:us,go,do¦3es:cho,eto\",ex:\"2:does,goes¦3:gasses¦5:focuses¦is:are¦3y:relies¦2y:flies¦2ve:has\"},Zo={fwd:\"1st:e¦1est:l,m,f,s¦1iest:cey¦2est:or,ir¦3est:ver\",both:\"4:east¦5:hwest¦5lest:erful¦4est:weet,lgar,tter,oung¦4most:uter¦3est:ger,der,rey,iet,ong,ear¦3test:lat¦3most:ner¦2est:pt,ft,nt,ct,rt,ht¦2test:it¦2gest:ig¦1est:b,k,n,p,h,d,w¦iest:y\",rev:\"1:ttest,nnest,yest¦2:sest,stest,rmest,cest,vest,lmest,olest,ilest,ulest,ssest,imest,uest¦3:rgest,eatest,oorest,plest,allest,urest,iefest,uelest,blest,ugest,amest,yalest,ealest,illest,tlest,itest¦4:cerest,eriest,somest,rmalest,ndomest,motest,uarest,tiffest¦5:leverest,rangest¦ar:urthest¦3ey:riciest\",ex:\"best:good¦worst:bad¦5est:great¦4est:fast,full,fair,dull¦3test:hot,wet,fat¦4nest:thin¦1urthest:far¦3est:gay,shy,ill¦4test:neat¦4st:late,wide,fine,safe,cute,fake,pale,rare,rude,sore,ripe,dire¦6st:severe\"},Xo={fwd:\"1:tistic,eable,lful,sful,ting,tty¦2:onate,rtable,geous,ced,seful,ctful¦3:ortive,ented¦arity:ear¦y:etic¦fulness:begone¦1ity:re¦1y:tiful,gic¦2ity:ile,imous,ilous,ime¦2ion:ated¦2eness:iving¦2y:trious¦2ation:iring¦2tion:vant¦3ion:ect¦3ce:mant,mantic¦3tion:irable¦3y:est,estic¦3m:mistic,listic¦3ess:ning¦4n:utious¦4on:rative,native,vative,ective¦4ce:erant\",both:\"1:king,wing¦2:alous,ltuous,oyful,rdous¦3:gorous,ectable,werful,amatic¦4:oised,usical,agical,raceful,ocused,lined,ightful¦5ness:stful,lding,itous,nuous,ulous,otous,nable,gious,ayful,rvous,ntous,lsive,peful,entle,ciful,osive,leful,isive,ncise,reful,mious¦5ty:ivacious¦5ties:ubtle¦5ce:ilient,adiant,atient¦5cy:icient¦5sm:gmatic¦5on:sessive,dictive¦5ity:pular,sonal,eative,entic¦5sity:uminous¦5ism:conic¦5nce:mperate¦5ility:mitable¦5ment:xcited¦5n:bitious¦4cy:brant,etent,curate¦4ility:erable,acable,icable,ptable¦4ty:nacious,aive,oyal,dacious¦4n:icious¦4ce:vient,erent,stent,ndent,dient,quent,ident¦4ness:adic,ound,hing,pant,sant,oing,oist,tute¦4icity:imple¦4ment:fined,mused¦4ism:otic¦4ry:dantic¦4ity:tund,eral¦4edness:hand¦4on:uitive¦4lity:pitable¦4sm:eroic,namic¦4sity:nerous¦3th:arm¦3ility:pable,bable,dable,iable¦3cy:hant,nant,icate¦3ness:red,hin,nse,ict,iet,ite,oud,ind,ied,rce¦3ion:lute¦3ity:ual,gal,volous,ial¦3ce:sent,fensive,lant,gant,gent,lent,dant¦3on:asive¦3m:fist,sistic,iastic¦3y:terious,xurious,ronic,tastic¦3ur:amorous¦3e:tunate¦3ation:mined¦3sy:rteous¦3ty:ain¦3ry:ave¦3ment:azed¦2ness:de,on,ue,rn,ur,ft,rp,pe,om,ge,rd,od,ay,ss,er,ll,oy,ap,ht,ld,ad,rt¦2inousness:umous¦2ity:neous,ene,id,ane¦2cy:bate,late¦2ation:ized¦2ility:oble,ible¦2y:odic¦2e:oving,aring¦2s:ost¦2itude:pt¦2dom:ee¦2ance:uring¦2tion:reet¦2ion:oted¦2sion:ending¦2liness:an¦2or:rdent¦1th:ung¦1e:uable¦1ness:w,h,k,f¦1ility:mble¦1or:vent¦1ement:ging¦1tiquity:ncient¦1ment:hed¦verty:or¦ength:ong¦eat:ot¦pth:ep¦iness:y\",rev:\"\",ex:\"5:forceful,humorous¦8:charismatic¦13:understanding¦5ity:active¦11ness:adventurous,inquisitive,resourceful¦8on:aggressive,automatic,perceptive¦7ness:amorous,fatuous,furtive,ominous,serious¦5ness:ample,sweet¦12ness:apprehensive,cantankerous,contemptuous,ostentatious¦13ness:argumentative,conscientious¦9ness:assertive,facetious,imperious,inventive,oblivious,rapacious,receptive,seditious,whimsical¦10ness:attractive,expressive,impressive,loquacious,salubrious,thoughtful¦3edom:boring¦4ness:calm,fast,keen,tame¦8ness:cheerful,gracious,specious,spurious,timorous,unctuous¦5sity:curious¦9ion:deliberate¦8ion:desperate¦6e:expensive¦7ce:fragrant¦3y:furious¦9ility:ineluctable¦6ism:mystical¦8ity:physical,proactive,sensitive,vertical¦5cy:pliant¦7ity:positive¦9ity:practical¦12ism:professional¦6ce:prudent¦3ness:red¦6cy:vagrant¦3dom:wise\"};const _o=function(e=\"\",t={}){let n=function(e,t={}){return t.hasOwnProperty(e)?t[e]:null}(e,t.ex);return n=n||function(e,t=[]){for(let n=0;n<t.length;n+=1)if(e.endsWith(t[n]))return e;return null}(e,t.same),n=n||function(e,t,n={}){t=t||{};for(let a=e.length-1;a>=1;a-=1){let r=e.length-a,o=e.substring(r,e.length);if(!0===t.hasOwnProperty(o))return e.slice(0,r)+t[o];if(!0===n.hasOwnProperty(o))return e.slice(0,r)+n[o]}return t.hasOwnProperty(\"\")?e+t[\"\"]:n.hasOwnProperty(\"\")?e+n[\"\"]:null}(e,t.fwd,t.both),n=n||e,n},Yo=function(e){return Object.entries(e).reduce(((e,t)=>(e[t[1]]=t[0],e)),{})},ei=function(e={}){return{reversed:!0,both:Yo(e.both),ex:Yo(e.ex),fwd:e.rev||{}}},ti=/^([0-9]+)/,ni=function(e){let t=function(e){let t={};return e.split(\"¦\").forEach((e=>{let[n,a]=e.split(\":\");a=(a||\"\").split(\",\"),a.forEach((e=>{t[e]=n}))})),t}(e);return Object.keys(t).reduce(((e,n)=>(e[n]=function(e=\"\",t=\"\"){let n=(t=String(t)).match(ti);if(null===n)return t;let a=Number(n[1])||0;return e.substring(0,a)+t.replace(ti,\"\")}(n,t[n]),e)),{})},ai=function(e={}){return\"string\"==typeof e&&(e=JSON.parse(e)),e.fwd=ni(e.fwd||\"\"),e.both=ni(e.both||\"\"),e.rev=ni(e.rev||\"\"),e.ex=ni(e.ex||\"\"),e},ri=ai({fwd:\"1:tted,wed,gged,nned,een,rred,pped,yed,bbed,oed,dded,rd,wn,mmed¦2:eed,nded,et,hted,st,oled,ut,emed,eled,lded,ken,rt,nked,apt,ant,eped,eked¦3:eared,eat,eaded,nelled,ealt,eeded,ooted,eaked,eaned,eeted,mited,bid,uit,ead,uited,ealed,geted,velled,ialed,belled¦4:ebuted,hined,comed¦y:ied¦ome:ame¦ear:ore¦ind:ound¦ing:ung,ang¦ep:pt¦ink:ank,unk¦ig:ug¦all:ell¦ee:aw¦ive:ave¦eeze:oze¦old:eld¦ave:ft¦ake:ook¦ell:old¦ite:ote¦ide:ode¦ine:one¦in:un,on¦eal:ole¦im:am¦ie:ay¦and:ood¦1ise:rose¦1eak:roke¦1ing:rought¦1ive:rove¦1el:elt¦1id:bade¦1et:got¦1y:aid¦1it:sat¦3e:lid¦3d:pent\",both:\"1:aed,fed,xed,hed¦2:sged,xted,wled,rped,lked,kied,lmed,lped,uped,bted,rbed,rked,wned,rled,mped,fted,mned,mbed,zzed,omed,ened,cked,gned,lted,sked,ued,zed,nted,ered,rted,rmed,ced,sted,rned,ssed,rded,pted,ved,cted¦3:cled,eined,siped,ooned,uked,ymed,jored,ouded,ioted,oaned,lged,asped,iged,mured,oided,eiled,yped,taled,moned,yled,lit,kled,oaked,gled,naled,fled,uined,oared,valled,koned,soned,aided,obed,ibed,meted,nicked,rored,micked,keted,vred,ooped,oaded,rited,aired,auled,filled,ouled,ooded,ceted,tolled,oited,bited,aped,tled,vored,dled,eamed,nsed,rsed,sited,owded,pled,sored,rged,osed,pelled,oured,psed,oated,loned,aimed,illed,eured,tred,ioned,celled,bled,wsed,ooked,oiled,itzed,iked,iased,onged,ased,ailed,uned,umed,ained,auded,nulled,ysed,eged,ised,aged,oined,ated,used,dged,doned¦4:ntied,efited,uaked,caded,fired,roped,halled,roked,himed,culed,tared,lared,tuted,uared,routed,pited,naked,miled,houted,helled,hared,cored,caled,tired,peated,futed,ciled,called,tined,moted,filed,sided,poned,iloted,honed,lleted,huted,ruled,cured,named,preted,vaded,sured,talled,haled,peded,gined,nited,uided,ramed,feited,laked,gured,ctored,unged,pired,cuted,voked,eloped,ralled,rined,coded,icited,vided,uaded,voted,mined,sired,noted,lined,nselled,luted,jured,fided,puted,piled,pared,olored,cided,hoked,enged,tured,geoned,cotted,lamed,uiled,waited,udited,anged,luded,mired,uired,raded¦5:modelled,izzled,eleted,umpeted,ailored,rseded,treated,eduled,ecited,rammed,eceded,atrolled,nitored,basted,twined,itialled,ncited,gnored,ploded,xcited,nrolled,namelled,plored,efeated,redited,ntrolled,nfined,pleted,llided,lcined,eathed,ibuted,lloted,dhered,cceded¦3ad:sled¦2aw:drew¦2ot:hot¦2ke:made¦2ow:hrew,grew¦2ose:hose¦2d:ilt¦2in:egan¦1un:ran¦1ink:hought¦1ick:tuck¦1ike:ruck¦1eak:poke,nuck¦1it:pat¦1o:did¦1ow:new¦1ake:woke¦go:went\",rev:\"3:rst,hed,hut,cut,set¦4:tbid¦5:dcast,eread,pread,erbid¦ought:uy,eek¦1ied:ny,ly,dy,ry,fy,py,vy,by,ty,cy¦1ung:ling,ting,wing¦1pt:eep¦1ank:rink¦1ore:bear,wear¦1ave:give¦1oze:reeze¦1ound:rind,wind¦1ook:take,hake¦1aw:see¦1old:sell¦1ote:rite¦1ole:teal¦1unk:tink¦1am:wim¦1ay:lie¦1ood:tand¦1eld:hold¦2d:he,ge,re,le,leed,ne,reed,be,ye,lee,pe,we¦2ed:dd,oy,or,ey,gg,rr,us,ew,to¦2ame:ecome,rcome¦2ped:ap¦2ged:ag,og,ug,eg¦2bed:ub,ab,ib,ob¦2lt:neel¦2id:pay¦2ang:pring¦2ove:trive¦2med:um¦2ode:rride¦2at:ysit¦3ted:mit,hat,mat,lat,pot,rot,bat¦3ed:low,end,tow,und,ond,eem,lay,cho,dow,xit,eld,ald,uld,law,lel,eat,oll,ray,ank,fin,oam,out,how,iek,tay,haw,ait,vet,say,cay,bow¦3d:ste,ede,ode,ete,ree,ude,ame,oke,ote,ime,ute,ade¦3red:lur,cur,pur,car¦3ped:hop,rop,uip,rip,lip,tep,top¦3ded:bed,rod,kid¦3ade:orbid¦3led:uel¦3ned:lan,can,kin,pan,tun¦3med:rim,lim¦4ted:quit,llot¦4ed:pear,rrow,rand,lean,mand,anel,pand,reet,link,abel,evel,imit,ceed,ruit,mind,peal,veal,hool,head,pell,well,mell,uell,band,hear,weak¦4led:nnel,qual,ebel,ivel¦4red:nfer,efer,sfer¦4n:sake,trew¦4d:ntee¦4ded:hred¦4ned:rpin¦5ed:light,nceal,right,ndear,arget,hread,eight,rtial,eboot¦5d:edite,nvite¦5ted:egret¦5led:ravel\",ex:\"2:been,upped¦3:added,aged,aided,aimed,aired,bid,died,dyed,egged,erred,eyed,fit,gassed,hit,lied,owed,pent,pied,tied,used,vied,oiled,outed,banned,barred,bet,canned,cut,dipped,donned,ended,feed,inked,jarred,let,manned,mowed,netted,padded,panned,pitted,popped,potted,put,set,sewn,sowed,tanned,tipped,topped,vowed,weed,bowed,jammed,binned,dimmed,hopped,mopped,nodded,pinned,rigged,sinned,towed,vetted¦4:ached,baked,baled,boned,bored,called,caned,cared,ceded,cited,coded,cored,cubed,cured,dared,dined,edited,exited,faked,fared,filed,fined,fired,fuelled,gamed,gelled,hired,hoped,joked,lined,mined,named,noted,piled,poked,polled,pored,pulled,reaped,roamed,rolled,ruled,seated,shed,sided,timed,tolled,toned,voted,waited,walled,waned,winged,wiped,wired,zoned,yelled,tamed,lubed,roped,faded,mired,caked,honed,banged,culled,heated,raked,welled,banded,beat,cast,cooled,cost,dealt,feared,folded,footed,handed,headed,heard,hurt,knitted,landed,leaked,leapt,linked,meant,minded,molded,neared,needed,peaked,plodded,plotted,pooled,quit,read,rooted,sealed,seeded,seeped,shipped,shunned,skimmed,slammed,sparred,stemmed,stirred,suited,thinned,twinned,swayed,winked,dialed,abutted,blotted,fretted,healed,heeded,peeled,reeled¦5:basted,cheated,equalled,eroded,exiled,focused,opined,pleated,primed,quoted,scouted,shored,sloped,smoked,sniped,spelled,spouted,routed,staked,stored,swelled,tasted,treated,wasted,smelled,dwelled,honored,prided,quelled,eloped,scared,coveted,sweated,breaded,cleared,debuted,deterred,freaked,modeled,pleaded,rebutted,speeded¦6:anchored,defined,endured,impaled,invited,refined,revered,strolled,cringed,recast,thrust,unfolded¦7:authored,combined,competed,conceded,convened,excreted,extruded,redefined,restored,secreted,rescinded,welcomed¦8:expedited,infringed¦9:interfered,intervened,persevered¦10:contravened¦eat:ate¦is:was¦go:went¦are:were¦3d:bent,lent,rent,sent¦3e:bit,fled,hid,lost¦3ed:bled,bred¦2ow:blew,grew¦1uy:bought¦2tch:caught¦1o:did¦1ive:dove,gave¦2aw:drew¦2ed:fed¦2y:flew,laid,paid,said¦1ight:fought¦1et:got¦2ve:had¦1ang:hung¦2ad:led¦2ght:lit¦2ke:made¦2et:met¦1un:ran¦1ise:rose¦1it:sat¦1eek:sought¦1each:taught¦1ake:woke,took¦1eave:wove¦2ise:arose¦1ear:bore,tore,wore¦1ind:bound,found,wound¦2eak:broke¦2ing:brought,wrung¦1ome:came¦2ive:drove¦1ig:dug¦1all:fell¦2el:felt¦4et:forgot¦1old:held¦2ave:left¦1ing:rang,sang¦1ide:rode¦1ink:sank¦1ee:saw¦2ine:shone¦4e:slid¦1ell:sold,told¦4d:spent¦2in:spun¦1in:won\"}),oi=ai(Qo),ii=ai(qo),si=ai(Ro),li=ei(ri),ui=ei(oi),ci=ei(ii),di=ei(si),hi=ai(Uo),gi=ai(Zo);var mi={fromPast:ri,fromPresent:oi,fromGerund:ii,fromParticiple:si,toPast:li,toPresent:ui,toGerund:ci,toParticiple:di,toComparative:hi,toSuperlative:gi,fromComparative:ei(hi),fromSuperlative:ei(gi),adjToNoun:ai(Xo)},pi=[\"academy\",\"administration\",\"agence\",\"agences\",\"agencies\",\"agency\",\"airlines\",\"airways\",\"army\",\"assoc\",\"associates\",\"association\",\"assurance\",\"authority\",\"autorite\",\"aviation\",\"bank\",\"banque\",\"board\",\"boys\",\"brands\",\"brewery\",\"brotherhood\",\"brothers\",\"bureau\",\"cafe\",\"co\",\"caisse\",\"capital\",\"care\",\"cathedral\",\"center\",\"centre\",\"chemicals\",\"choir\",\"chronicle\",\"church\",\"circus\",\"clinic\",\"clinique\",\"club\",\"co\",\"coalition\",\"coffee\",\"collective\",\"college\",\"commission\",\"committee\",\"communications\",\"community\",\"company\",\"comprehensive\",\"computers\",\"confederation\",\"conference\",\"conseil\",\"consulting\",\"containers\",\"corporation\",\"corps\",\"corp\",\"council\",\"crew\",\"data\",\"departement\",\"department\",\"departments\",\"design\",\"development\",\"directorate\",\"division\",\"drilling\",\"education\",\"eglise\",\"electric\",\"electricity\",\"energy\",\"ensemble\",\"enterprise\",\"enterprises\",\"entertainment\",\"estate\",\"etat\",\"faculty\",\"faction\",\"federation\",\"financial\",\"fm\",\"foundation\",\"fund\",\"gas\",\"gazette\",\"girls\",\"government\",\"group\",\"guild\",\"herald\",\"holdings\",\"hospital\",\"hotel\",\"hotels\",\"inc\",\"industries\",\"institut\",\"institute\",\"institutes\",\"insurance\",\"international\",\"interstate\",\"investment\",\"investments\",\"investors\",\"journal\",\"laboratory\",\"labs\",\"llc\",\"ltd\",\"limited\",\"machines\",\"magazine\",\"management\",\"marine\",\"marketing\",\"markets\",\"media\",\"memorial\",\"ministere\",\"ministry\",\"military\",\"mobile\",\"motor\",\"motors\",\"musee\",\"museum\",\"news\",\"observatory\",\"office\",\"oil\",\"optical\",\"orchestra\",\"organization\",\"partners\",\"partnership\",\"petrol\",\"petroleum\",\"pharmacare\",\"pharmaceutical\",\"pharmaceuticals\",\"pizza\",\"plc\",\"police\",\"politburo\",\"polytechnic\",\"post\",\"power\",\"press\",\"productions\",\"quartet\",\"radio\",\"reserve\",\"resources\",\"restaurant\",\"restaurants\",\"savings\",\"school\",\"securities\",\"service\",\"services\",\"societe\",\"subsidiary\",\"society\",\"sons\",\"subcommittee\",\"syndicat\",\"systems\",\"telecommunications\",\"telegraph\",\"television\",\"times\",\"tribunal\",\"tv\",\"union\",\"university\",\"utilities\",\"workers\"].reduce(((e,t)=>(e[t]=!0,e)),{}),fi=[\"atoll\",\"basin\",\"bay\",\"beach\",\"bluff\",\"bog\",\"camp\",\"canyon\",\"canyons\",\"cape\",\"cave\",\"caves\",\"cliffs\",\"coast\",\"cove\",\"coves\",\"crater\",\"crossing\",\"creek\",\"desert\",\"dune\",\"dunes\",\"downs\",\"estates\",\"escarpment\",\"estuary\",\"falls\",\"fjord\",\"fjords\",\"forest\",\"forests\",\"glacier\",\"gorge\",\"gorges\",\"grove\",\"gulf\",\"gully\",\"highland\",\"heights\",\"hollow\",\"hill\",\"hills\",\"inlet\",\"island\",\"islands\",\"isthmus\",\"junction\",\"knoll\",\"lagoon\",\"lake\",\"lakeshore\",\"marsh\",\"marshes\",\"mount\",\"mountain\",\"mountains\",\"narrows\",\"peninsula\",\"plains\",\"plateau\",\"pond\",\"rapids\",\"ravine\",\"reef\",\"reefs\",\"ridge\",\"river\",\"rivers\",\"sandhill\",\"shoal\",\"shore\",\"shoreline\",\"shores\",\"strait\",\"straits\",\"springs\",\"stream\",\"swamp\",\"tombolo\",\"trail\",\"trails\",\"trench\",\"valley\",\"vallies\",\"village\",\"volcano\",\"waterfall\",\"watershed\",\"wetland\",\"woods\",\"acres\",\"burough\",\"county\",\"district\",\"municipality\",\"prefecture\",\"province\",\"region\",\"reservation\",\"state\",\"territory\",\"borough\",\"metropolis\",\"downtown\",\"uptown\",\"midtown\",\"city\",\"town\",\"township\",\"hamlet\",\"country\",\"kingdom\",\"enclave\",\"neighbourhood\",\"neighborhood\",\"kingdom\",\"ward\",\"zone\",\"airport\",\"amphitheater\",\"arch\",\"arena\",\"auditorium\",\"bar\",\"barn\",\"basilica\",\"battlefield\",\"bridge\",\"building\",\"castle\",\"centre\",\"coliseum\",\"cineplex\",\"complex\",\"dam\",\"farm\",\"field\",\"fort\",\"garden\",\"gardens\",\"gymnasium\",\"hall\",\"house\",\"levee\",\"library\",\"manor\",\"memorial\",\"monument\",\"museum\",\"gallery\",\"palace\",\"pillar\",\"pits\",\"plantation\",\"playhouse\",\"quarry\",\"sportsfield\",\"sportsplex\",\"stadium\",\"terrace\",\"terraces\",\"theater\",\"tower\",\"park\",\"parks\",\"site\",\"ranch\",\"raceway\",\"sportsplex\",\"ave\",\"st\",\"street\",\"rd\",\"road\",\"lane\",\"landing\",\"crescent\",\"cr\",\"way\",\"tr\",\"terrace\",\"avenue\"].reduce(((e,t)=>(e[t]=!0,e)),{}),bi=[[/([^v])ies$/i,\"$1y\"],[/(ise)s$/i,\"$1\"],[/(kn|[^o]l|w)ives$/i,\"$1ife\"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,\"$1f\"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,\"$1f\"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,\"$1a\"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,\"$1us\"],[/(buffal|tomat|tornad)(oes)$/i,\"$1o\"],[/(ause)s$/i,\"$1\"],[/(ease)s$/i,\"$1\"],[/(ious)es$/i,\"$1\"],[/(ouse)s$/i,\"$1\"],[/(ose)s$/i,\"$1\"],[/(..ase)s$/i,\"$1\"],[/(..[aeiu]s)es$/i,\"$1\"],[/(vert|ind|cort)(ices)$/i,\"$1ex\"],[/(matr|append)(ices)$/i,\"$1ix\"],[/([xo]|ch|ss|sh)es$/i,\"$1\"],[/men$/i,\"man\"],[/(n)ews$/i,\"$1ews\"],[/([ti])a$/i,\"$1um\"],[/([^aeiouy]|qu)ies$/i,\"$1y\"],[/(s)eries$/i,\"$1eries\"],[/(m)ovies$/i,\"$1ovie\"],[/(cris|ax|test)es$/i,\"$1is\"],[/(alias|status)es$/i,\"$1\"],[/(ss)$/i,\"$1\"],[/(ic)s$/i,\"$1\"],[/s$/i,\"\"]];const yi=function(e,t){const{irregularPlurals:n}=t.two,a=(r=n,Object.keys(r).reduce(((e,t)=>(e[r[t]]=t,e)),{}));var r;if(a.hasOwnProperty(e))return a[e];for(let t=0;t<bi.length;t++)if(!0===bi[t][0].test(e))return e=e.replace(bi[t][0],bi[t][1]);return e};var vi={toPlural:Pr,toSingular:yi,all:function(e,t){const n=[e],a=Pr(e,t);a!==e&&n.push(a);const r=yi(e,t);return r!==e&&n.push(r),n}};let wi={Gerund:[\"ing\"],Actor:[\"erer\"],Infinitive:[\"ate\",\"ize\",\"tion\",\"rify\",\"then\",\"ress\",\"ify\",\"age\",\"nce\",\"ect\",\"ise\",\"ine\",\"ish\",\"ace\",\"ash\",\"ure\",\"tch\",\"end\",\"ack\",\"and\",\"ute\",\"ade\",\"ock\",\"ite\",\"ase\",\"ose\",\"use\",\"ive\",\"int\",\"nge\",\"lay\",\"est\",\"ain\",\"ant\",\"ent\",\"eed\",\"er\",\"le\",\"unk\",\"ung\",\"upt\",\"en\"],PastTense:[\"ept\",\"ed\",\"lt\",\"nt\",\"ew\",\"ld\"],PresentTense:[\"rks\",\"cks\",\"nks\",\"ngs\",\"mps\",\"tes\",\"zes\",\"ers\",\"les\",\"acks\",\"ends\",\"ands\",\"ocks\",\"lays\",\"eads\",\"lls\",\"els\",\"ils\",\"ows\",\"nds\",\"ays\",\"ams\",\"ars\",\"ops\",\"ffs\",\"als\",\"urs\",\"lds\",\"ews\",\"ips\",\"es\",\"ts\",\"ns\"],Participle:[\"ken\",\"wn\"]};wi=Object.keys(wi).reduce(((e,t)=>(wi[t].forEach((n=>e[n]=t)),e)),{});const ki=function(e){const t=e.substring(e.length-3);if(!0===wi.hasOwnProperty(t))return wi[t];const n=e.substring(e.length-2);if(!0===wi.hasOwnProperty(n))return wi[n];return\"s\"===e.substring(e.length-1)?\"PresentTense\":null},Pi={are:\"be\",were:\"be\",been:\"be\",is:\"be\",am:\"be\",was:\"be\",be:\"be\",being:\"be\"},Ai=function(e,t,n){const{fromPast:a,fromPresent:r,fromGerund:o,fromParticiple:i}=t.two.models,{prefix:s,verb:l,particle:u}=function(e,t){let n=\"\",a={};t.one&&t.one.prefixes&&(a=t.one.prefixes);let[r,o]=e.split(/ /);return o&&!0===a[r]&&(n=r,r=o,o=\"\"),{prefix:n,verb:r,particle:o}}(e,t);let c=\"\";if(n||(n=ki(e)),Pi.hasOwnProperty(e))c=Pi[e];else if(\"Participle\"===n)c=_o(l,i);else if(\"PastTense\"===n)c=_o(l,a);else if(\"PresentTense\"===n)c=_o(l,r);else{if(\"Gerund\"!==n)return e;c=_o(l,o)}return u&&(c+=\" \"+u),s&&(c=s+\" \"+c),c},Ci=function(e,t){const{toPast:n,toPresent:a,toGerund:r,toParticiple:o}=t.two.models;if(\"be\"===e)return{Infinitive:e,Gerund:\"being\",PastTense:\"was\",PresentTense:\"is\"};const[i,s]=(e=>/ /.test(e)?e.split(/ /):[e,\"\"])(e),l={Infinitive:i,PastTense:_o(i,n),PresentTense:_o(i,a),Gerund:_o(i,r),FutureTense:\"will \"+i};let u=_o(i,o);if(u!==e&&u!==l.PastTense){const n=t.one.lexicon||{};\"Participle\"!==n[u]&&\"Adjective\"!==n[u]||(\"play\"===e&&(u=\"played\"),l.Participle=u)}return s&&Object.keys(l).forEach((e=>{l[e]+=\" \"+s})),l};var ji={toInfinitive:Ai,conjugate:Ci,all:function(e,t){const n=Ci(e,t);return delete n.FutureTense,Object.values(n).filter((e=>e))}};const Ni=function(e,t){const n=t.two.models.toSuperlative;return _o(e,n)},Ii=function(e,t){const n=t.two.models.toComparative;return _o(e,n)},Di=function(e=\"\",t=[]){const n=e.length;for(let a=n<=6?n-1:6;a>=1;a-=1){const r=e.substring(n-a,e.length);if(!0===t[r.length].hasOwnProperty(r)){return e.slice(0,n-a)+t[r.length][r]}}return null},Hi=\"ically\",Ti=new Set([\"analyt\"+Hi,\"chem\"+Hi,\"class\"+Hi,\"clin\"+Hi,\"crit\"+Hi,\"ecolog\"+Hi,\"electr\"+Hi,\"empir\"+Hi,\"frant\"+Hi,\"grammat\"+Hi,\"ident\"+Hi,\"ideolog\"+Hi,\"log\"+Hi,\"mag\"+Hi,\"mathemat\"+Hi,\"mechan\"+Hi,\"med\"+Hi,\"method\"+Hi,\"method\"+Hi,\"mus\"+Hi,\"phys\"+Hi,\"phys\"+Hi,\"polit\"+Hi,\"pract\"+Hi,\"rad\"+Hi,\"satir\"+Hi,\"statist\"+Hi,\"techn\"+Hi,\"technolog\"+Hi,\"theoret\"+Hi,\"typ\"+Hi,\"vert\"+Hi,\"whims\"+Hi]),Gi=[null,{},{ly:\"\"},{ily:\"y\",bly:\"ble\",ply:\"ple\"},{ally:\"al\",rply:\"rp\"},{ually:\"ual\",ially:\"ial\",cally:\"cal\",eally:\"eal\",rally:\"ral\",nally:\"nal\",mally:\"mal\",eeply:\"eep\",eaply:\"eap\"},{ically:\"ic\"}],xi=new Set([\"early\",\"only\",\"hourly\",\"daily\",\"weekly\",\"monthly\",\"yearly\",\"mostly\",\"duly\",\"unduly\",\"especially\",\"undoubtedly\",\"conversely\",\"namely\",\"exceedingly\",\"presumably\",\"accordingly\",\"overly\",\"best\",\"latter\",\"little\",\"long\",\"low\"]),Ei={wholly:\"whole\",fully:\"full\",truly:\"true\",gently:\"gentle\",singly:\"single\",customarily:\"customary\",idly:\"idle\",publically:\"public\",quickly:\"quick\",superbly:\"superb\",cynically:\"cynical\",well:\"good\"},Fi=[null,{y:\"ily\"},{ly:\"ly\",ic:\"ically\"},{ial:\"ially\",ual:\"ually\",tle:\"tly\",ble:\"bly\",ple:\"ply\",ary:\"arily\"},{},{},{}],Oi={cool:\"cooly\",whole:\"wholly\",full:\"fully\",good:\"well\",idle:\"idly\",public:\"publicly\",single:\"singly\",special:\"especially\"},zi=function(e){if(Oi.hasOwnProperty(e))return Oi[e];let t=Di(e,Fi);return t||(t=e+\"ly\"),t};var Vi={toSuperlative:Ni,toComparative:Ii,toAdverb:zi,toNoun:function(e,t){const n=t.two.models.adjToNoun;return _o(e,n)},fromAdverb:function(e){return e.endsWith(\"ly\")?Ti.has(e)?e.replace(/ically/,\"ical\"):xi.has(e)?null:Ei.hasOwnProperty(e)?Ei[e]:Di(e,Gi)||e:null},fromSuperlative:function(e,t){const n=t.two.models.fromSuperlative;return _o(e,n)},fromComparative:function(e,t){const n=t.two.models.fromComparative;return _o(e,n)},all:function(e,t){let n=[e];return n.push(Ni(e,t)),n.push(Ii(e,t)),n.push(zi(e)),n=n.filter((e=>e)),n=new Set(n),Array.from(n)}},Bi={noun:vi,verb:ji,adjective:Vi},Si={Singular:(e,t,n,a)=>{const r=a.one.lexicon,o=n.two.transform.noun.toPlural(e,a);r[o]||(t[o]=t[o]||\"Plural\")},Actor:(e,t,n,a)=>{const r=a.one.lexicon,o=n.two.transform.noun.toPlural(e,a);r[o]||(t[o]=t[o]||[\"Plural\",\"Actor\"])},Comparable:(e,t,n,a)=>{const r=a.one.lexicon,{toSuperlative:o,toComparative:i}=n.two.transform.adjective,s=o(e,a);r[s]||(t[s]=t[s]||\"Superlative\");const l=i(e,a);r[l]||(t[l]=t[l]||\"Comparative\"),t[e]=\"Adjective\"},Demonym:(e,t,n,a)=>{const r=n.two.transform.noun.toPlural(e,a);t[r]=t[r]||[\"Demonym\",\"Plural\"]},Infinitive:(e,t,n,a)=>{const r=a.one.lexicon,o=n.two.transform.verb.conjugate(e,a);Object.entries(o).forEach((e=>{r[e[1]]||t[e[1]]||\"FutureTense\"===e[0]||(t[e[1]]=e[0])}))},PhrasalVerb:(e,t,n,a)=>{const r=a.one.lexicon;t[e]=[\"PhrasalVerb\",\"Infinitive\"];const o=a.one._multiCache,[i,s]=e.split(\" \");r[i]||(t[i]=t[i]||\"Infinitive\");const l=n.two.transform.verb.conjugate(i,a);delete l.FutureTense,Object.entries(l).forEach((e=>{if(\"Actor\"===e[0]||\"\"===e[1])return;t[e[1]]||r[e[1]]||(t[e[1]]=e[0]),o[e[1]]=2;const n=e[1]+\" \"+s;t[n]=t[n]||[e[0],\"PhrasalVerb\"]}))},Multiple:(e,t)=>{t[e]=[\"Multiple\",\"Cardinal\"],t[e+\"th\"]=[\"Multiple\",\"Ordinal\"],t[e+\"ths\"]=[\"Multiple\",\"Fraction\"]},Cardinal:(e,t)=>{t[e]=[\"TextValue\",\"Cardinal\"]},Ordinal:(e,t)=>{t[e]=[\"TextValue\",\"Ordinal\"],t[e+\"s\"]=[\"TextValue\",\"Fraction\"]},Place:(e,t)=>{t[e]=[\"Place\",\"ProperNoun\"]},Region:(e,t)=>{t[e]=[\"Region\",\"ProperNoun\"]}};const Ki={e:[\"mice\",\"louse\",\"antennae\",\"formulae\",\"nebulae\",\"vertebrae\",\"vitae\"],i:[\"tia\",\"octopi\",\"viri\",\"radii\",\"nuclei\",\"fungi\",\"cacti\",\"stimuli\"],n:[\"men\"],t:[\"feet\"]},$i=new Set([\"israelis\",\"menus\",\"logos\"]),Li=[\"bus\",\"mas\",\"was\",\"ias\",\"xas\",\"vas\",\"cis\",\"lis\",\"nis\",\"ois\",\"ris\",\"sis\",\"tis\",\"xis\",\"aus\",\"cus\",\"eus\",\"fus\",\"gus\",\"ius\",\"lus\",\"nus\",\"das\",\"ous\",\"pus\",\"rus\",\"sus\",\"tus\",\"xus\",\"aos\",\"igos\",\"ados\",\"ogos\",\"'s\",\"ss\"],Mi=function(e){if(!e||e.length<=3)return!1;if($i.has(e))return!0;const t=e[e.length-1];return Ki.hasOwnProperty(t)?Ki[t].find((t=>e.endsWith(t))):\"s\"===t&&!Li.find((t=>e.endsWith(t)))};var Ji={two:{quickSplit:function(e){const t=/[,:;]/,n=[];return e.forEach((e=>{let a=0;e.forEach(((r,o)=>{t.test(r.post)&&function(e,t){const n=/^[0-9]+$/,a=e[t];if(!a)return!1;const r=new Set([\"may\",\"april\",\"august\",\"jan\"]);if(\"like\"===a.normal||r.has(a.normal))return!1;if(a.tags.has(\"Place\")||a.tags.has(\"Date\"))return!1;if(e[t-1]){const n=e[t-1];if(n.tags.has(\"Date\")||r.has(n.normal))return!1;if(n.tags.has(\"Adjective\")||a.tags.has(\"Adjective\"))return!1}const o=a.normal;return 1!==o.length&&2!==o.length&&4!==o.length||!n.test(o)}(e,o+1)&&(n.push(e.slice(a,o+1)),a=o+1)})),a<e.length&&n.push(e.slice(a,e.length))})),n},expandLexicon:function(e,t){const{methods:n,model:a}=t,r={},o={};return Object.keys(e).forEach((t=>{const i=e[t],s=(t=(t=t.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);s.length>1&&(void 0===o[s[0]]||s.length>o[s[0]])&&(o[s[0]]=s.length),!0===Si.hasOwnProperty(i)&&Si[i](t,r,n,a),r[t]=r[t]||i})),delete r[\"\"],delete r.null,delete r[\" \"],{lex:r,_multi:o}},transform:Bi,looksPlural:Mi}};const Wi={one:{lexicon:{}},two:{models:mi}},Ui={\"Actor|Verb\":\"Actor\",\"Adj|Gerund\":\"Adjective\",\"Adj|Noun\":\"Adjective\",\"Adj|Past\":\"Adjective\",\"Adj|Present\":\"Adjective\",\"Noun|Verb\":\"Singular\",\"Noun|Gerund\":\"Gerund\",\"Person|Noun\":\"Noun\",\"Person|Date\":\"Month\",\"Person|Verb\":\"FirstName\",\"Person|Place\":\"Person\",\"Person|Adj\":\"Comparative\",\"Plural|Verb\":\"Plural\",\"Unit|Noun\":\"Noun\"},qi=function(e,t){const n={model:t,methods:Ji},{lex:a,_multi:r}=Ji.two.expandLexicon(e,n);return Object.assign(t.one.lexicon,a),Object.assign(t.one._multiCache,r),t},Ri=function(e,t,n){const a=Ci(e,Wi);t[a.PastTense]=t[a.PastTense]||\"PastTense\",t[a.Gerund]=t[a.Gerund]||\"Gerund\",!0===n&&(t[a.PresentTense]=t[a.PresentTense]||\"PresentTense\")},Qi=function(e,t,n){const a=Ni(e,n);t[a]=t[a]||\"Superlative\";const r=Ii(e,n);t[r]=t[r]||\"Comparative\"},Zi=function(e,t){const n={},a=t.one.lexicon;return Object.keys(e).forEach((r=>{const o=e[r];if(n[r]=Ui[o],\"Noun|Verb\"!==o&&\"Person|Verb\"!==o&&\"Actor|Verb\"!==o||Ri(r,a,!1),\"Adj|Present\"===o&&(Ri(r,a,!0),Qi(r,a,t)),\"Person|Adj\"===o&&Qi(r,a,t),\"Adj|Gerund\"===o||\"Noun|Gerund\"===o){const e=Ai(r,Wi,\"Gerund\");a[e]||(n[e]=\"Infinitive\")}if(\"Noun|Gerund\"!==o&&\"Adj|Noun\"!==o&&\"Person|Noun\"!==o||function(e,t,n){const a=Pr(e,n);t[a]=t[a]||\"Plural\"}(r,a,t),\"Adj|Past\"===o){const e=Ai(r,Wi,\"PastTense\");a[e]||(n[e]=\"Infinitive\")}})),t=qi(n,t)};let Xi={one:{_multiCache:{},lexicon:Cr,frozenLex:{\"20th century fox\":\"Organization\",\"7 eleven\":\"Organization\",\"motel 6\":\"Organization\",\"excuse me\":\"Expression\",\"financial times\":\"Organization\",\"guns n roses\":\"Organization\",\"la z boy\":\"Organization\",\"labour party\":\"Organization\",\"new kids on the block\":\"Organization\",\"new york times\":\"Organization\",\"the guess who\":\"Organization\",\"thin lizzy\":\"Organization\",\"prime minister\":\"Actor\",\"free market\":\"Singular\",\"lay up\":\"Singular\",\"living room\":\"Singular\",\"living rooms\":\"Plural\",\"spin off\":\"Singular\",\"appeal court\":\"Uncountable\",\"cold war\":\"Uncountable\",\"gene pool\":\"Uncountable\",\"machine learning\":\"Uncountable\",\"nail polish\":\"Uncountable\",\"time off\":\"Uncountable\",\"take part\":\"Infinitive\",\"bill gates\":\"Person\",\"doctor who\":\"Person\",\"dr who\":\"Person\",\"he man\":\"Person\",\"iron man\":\"Person\",\"kid cudi\":\"Person\",\"run dmc\":\"Person\",\"rush limbaugh\":\"Person\",\"snow white\":\"Person\",\"tiger woods\":\"Person\",\"brand new\":\"Adjective\",\"en route\":\"Adjective\",\"left wing\":\"Adjective\",\"off guard\":\"Adjective\",\"on board\":\"Adjective\",\"part time\":\"Adjective\",\"right wing\":\"Adjective\",\"so called\":\"Adjective\",\"spot on\":\"Adjective\",\"straight forward\":\"Adjective\",\"super duper\":\"Adjective\",\"tip top\":\"Adjective\",\"top notch\":\"Adjective\",\"up to date\":\"Adjective\",\"win win\":\"Adjective\",\"brooklyn nets\":\"SportsTeam\",\"chicago bears\":\"SportsTeam\",\"houston astros\":\"SportsTeam\",\"houston dynamo\":\"SportsTeam\",\"houston rockets\":\"SportsTeam\",\"houston texans\":\"SportsTeam\",\"minnesota twins\":\"SportsTeam\",\"orlando magic\":\"SportsTeam\",\"san antonio spurs\":\"SportsTeam\",\"san diego chargers\":\"SportsTeam\",\"san diego padres\":\"SportsTeam\",\"iron maiden\":\"ProperNoun\",\"isle of man\":\"Country\",\"united states\":\"Country\",\"united states of america\":\"Country\",\"prince edward island\":\"Region\",\"cedar breaks\":\"Place\",\"cedar falls\":\"Place\",\"point blank\":\"Adverb\",\"tiny bit\":\"Adverb\",\"by the time\":\"Conjunction\",\"no matter\":\"Conjunction\",\"civil wars\":\"Plural\",\"credit cards\":\"Plural\",\"default rates\":\"Plural\",\"free markets\":\"Plural\",\"head starts\":\"Plural\",\"home runs\":\"Plural\",\"lay ups\":\"Plural\",\"phone calls\":\"Plural\",\"press releases\":\"Plural\",\"record labels\":\"Plural\",\"soft serves\":\"Plural\",\"student loans\":\"Plural\",\"tax returns\":\"Plural\",\"tv shows\":\"Plural\",\"video games\":\"Plural\",\"took part\":\"PastTense\",\"takes part\":\"PresentTense\",\"taking part\":\"Gerund\",\"taken part\":\"Participle\",\"light bulb\":\"Noun\",\"rush hour\":\"Noun\",\"fluid ounce\":\"Unit\",\"the rolling stones\":\"Organization\"}},two:{irregularPlurals:dr,models:mi,suffixPatterns:No,prefixPatterns:To,endsWith:Lo,neighbours:Wo,regexNormal:[[/^[\\w.]+@[\\w.]+\\.[a-z]{2,3}$/,\"Email\"],[/^(https?:\\/\\/|www\\.)+\\w+\\.[a-z]{2,3}/,\"Url\",\"http..\"],[/^[a-z0-9./].+\\.(com|net|gov|org|ly|edu|info|biz|dev|ru|jp|de|in|uk|br|io|ai)/,\"Url\",\".com\"],[/^[PMCE]ST$/,\"Timezone\",\"EST\"],[/^ma?c'[a-z]{3}/,\"LastName\",\"mc'neil\"],[/^o'[a-z]{3}/,\"LastName\",\"o'connor\"],[/^ma?cd[aeiou][a-z]{3}/,\"LastName\",\"mcdonald\"],[/^(lol)+[sz]$/,\"Expression\",\"lol\"],[/^wo{2,}a*h?$/,\"Expression\",\"wooah\"],[/^(hee?){2,}h?$/,\"Expression\",\"hehe\"],[/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/,\"Verb\",\"un-vite\"],[/^(m|k|cm|km)\\/(s|h|hr)$/,\"Unit\",\"5 k/m\"],[/^(ug|ng|mg)\\/(l|m3|ft3)$/,\"Unit\",\"ug/L\"],[/[^:/]\\/\\p{Letter}/u,\"SlashedTerm\",\"love/hate\"]],regexText:[[/^#[\\p{Number}_]*\\p{Letter}/u,\"HashTag\"],[/^@\\w{2,}$/,\"AtMention\"],[/^([A-Z]\\.){2}[A-Z]?/i,[\"Acronym\",\"Noun\"],\"F.B.I\"],[/.{3}[lkmnp]in['‘’‛‵′`´]$/,\"Gerund\",\"chillin'\"],[/.{4}s['‘’‛‵′`´]$/,\"Possessive\",\"flanders'\"],[/^[\\p{Emoji_Presentation}\\p{Extended_Pictographic}]/u,\"Emoji\",\"emoji-class\"]],regexNumbers:[[/^@1?[0-9](am|pm)$/i,\"Time\",\"3pm\"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,\"Time\",\"3:30pm\"],[/^'[0-9]{2}$/,\"Year\"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,\"Time\",\"3:12:31\"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,\"Time\",\"1:12pm\"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,\"Time\",\"1:12:31pm\"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,\"Date\",\"iso-date\"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,\"Date\",\"iso-dash\"],[/^[0-9]{1,4}\\/[0-9]{1,2}\\/([0-9]{4}|[0-9]{2})$/,\"Date\",\"iso-slash\"],[/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/,\"Date\",\"iso-dot\"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,\"Date\",\"12-dec-2019\"],[/^utc ?[+-]?[0-9]+$/,\"Timezone\",\"utc-9\"],[/^(gmt|utc)[+-][0-9]{1,2}$/i,\"Timezone\",\"gmt-3\"],[/^[0-9]{3}-[0-9]{4}$/,\"PhoneNumber\",\"421-0029\"],[/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,\"PhoneNumber\",\"1-800-\"],[/^[-+]?\\p{Currency_Symbol}[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?([kmb]|bn)?\\+?$/u,[\"Money\",\"Value\"],\"$5.30\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\p{Currency_Symbol}\\+?$/u,[\"Money\",\"Value\"],\"5.30£\"],[/^[-+]?[$£]?[0-9]([0-9,.])+(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,[\"Money\",\"Value\"],\"$400usd\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/,[\"Cardinal\",\"NumericValue\"],\"5,999\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/,[\"Ordinal\",\"NumericValue\"],\"53rd\"],[/^\\.[0-9]+\\+?$/,[\"Cardinal\",\"NumericValue\"],\".73th\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/,[\"Percent\",\"Cardinal\",\"NumericValue\"],\"-4%\"],[/^\\.[0-9]+%$/,[\"Percent\",\"Cardinal\",\"NumericValue\"],\".3%\"],[/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/,[\"Fraction\",\"NumericValue\"],\"2/3rds\"],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,[\"Value\",\"NumberRange\"],\"3-4\"],[/^[0-9]{1,2}(:[0-9][0-9])?(am|pm)? ?[-–—] ?[0-9]{1,2}(:[0-9][0-9])?(am|pm)$/,[\"Time\",\"NumberRange\"],\"3-4pm\"],[/^[0-9.]+([a-z°]{1,4})$/,\"NumericValue\",\"9km\"]],switches:jr,clues:uo,uncountable:{},orgWords:pi,placeWords:fi}};Xi=function(e){return e=function(e,t){return Object.keys(e).forEach((n=>{\"Uncountable\"===e[n]&&(t.two.uncountable[n]=!0,e[n]=\"Uncountable\")})),t}((e=qi(e.one.lexicon,e)).one.lexicon,e),e=function(e){const{irregularPlurals:t}=e.two,{lexicon:n}=e.one;return Object.entries(t).forEach((e=>{n[e[0]]=n[e[0]]||\"Singular\",n[e[1]]=n[e[1]]||\"Plural\"})),e}(e=Zi(e.two.switches,e)),e}(Xi);const _i=function(e,t,n,a){const r=a.methods.one.setTag;\"-\"===e[t].post&&e[t+1]&&r([e[t],e[t+1]],\"Hyphenated\",a,null,\"1-punct-hyphen''\")},Yi=/^(under|over|mis|re|un|dis|semi)-?/,es=function(e,t,n){const a=n.two.switches,r=e[t];if(a.hasOwnProperty(r.normal))r.switch=a[r.normal];else if(Yi.test(r.normal)){const e=r.normal.replace(Yi,\"\");e.length>3&&a.hasOwnProperty(e)&&(r.switch=a[e])}},ts=function(e,t,n){if(!t||0===t.length)return;if(!0===e.frozen)return;const a=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};a&&a.DEBUG_TAGS&&((e,t,n=\"\")=>{const a=e.text||\"[\"+e.implicit+\"]\";var r;\"string\"!=typeof t&&t.length>2&&(t=t.slice(0,2).join(\", #\")+\" +\"),t=\"string\"!=typeof t?t.join(\", #\"):t,console.log(` ${(r=a,\"\u001b[33m\u001b[3m\"+r+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${t.padEnd(22)}  ${(e=>\"\u001b[3m\"+e+\"\u001b[0m\")(n)}`)})(e,t,n),e.tags=e.tags||new Set,\"string\"==typeof t?e.tags.add(t):t.forEach((t=>e.tags.add(t)))},ns=[\"Acronym\",\"Abbreviation\",\"ProperNoun\",\"Uncountable\",\"Possessive\",\"Pronoun\",\"Activity\",\"Honorific\",\"Month\"],as=function(e,t,n){const a=e[t],r=Array.from(a.tags);for(let e=0;e<r.length;e+=1)if(n.one.tagSet[r[e]]){const t=n.one.tagSet[r[e]].parents;ts(a,t,` -inferred by #${r[e]}`)}!function(e){!e.tags.has(\"Noun\")||e.tags.has(\"Plural\")||e.tags.has(\"Singular\")||ns.find((t=>e.tags.has(t)))||(Mi(e.normal)?ts(e,\"Plural\",\"3-plural-guess\"):ts(e,\"Singular\",\"3-singular-guess\"))}(a),function(e){const t=e.tags;if(t.has(\"Verb\")&&1===t.size){const t=ki(e.normal);t&&ts(e,t,\"3-verb-tense-guess\")}}(a)},rs=/^\\p{Lu}[\\p{Ll}'’]/u,os=/[0-9]/,is=[\"Date\",\"Month\",\"WeekDay\",\"Unit\",\"Expression\"],ss=/[IVX]/,ls=/^[IVXLCDM]{2,}$/,us=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,cs={li:!0,dc:!0,md:!0,dm:!0,ml:!0},ds=function(e,t,n){const a=e[t];a.index=a.index||[0,0];const r=a.index[1],o=a.text||\"\";return 0!==r&&!0===rs.test(o)&&!1===os.test(o)?is.find((e=>a.tags.has(e)))||a.pre.match(/[\"']$/)||\"the\"===a.normal?null:(as(e,t,n),a.tags.has(\"Noun\")||a.frozen||a.tags.clear(),ts(a,\"ProperNoun\",\"2-titlecase\"),!0):o.length>=2&&ls.test(o)&&ss.test(o)&&us.test(o)&&!cs[a.normal]?(ts(a,\"RomanNumeral\",\"2-xvii\"),!0):null},hs=function(e=\"\",t=[]){const n=e.length;let a=7;n<=a&&(a=n-1);for(let r=a;r>1;r-=1){const a=e.substring(n-r,n);if(!0===t[a.length].hasOwnProperty(a)){return t[a.length][a]}}return null},gs=function(e,t,n){const a=e[t];if(0===a.tags.size){let e=hs(a.normal,n.two.suffixPatterns);if(null!==e)return ts(a,e,\"2-suffix\"),a.confidence=.7,!0;if(a.implicit&&(e=hs(a.implicit,n.two.suffixPatterns),null!==e))return ts(a,e,\"2-implicit-suffix\"),a.confidence=.7,!0}return null},ms=/['‘’‛‵′`´]/,ps=function(e,t){for(let n=0;n<t.length;n+=1)if(!0===t[n][0].test(e))return t[n];return null},fs=function(e,t,n,a){const r=a.methods.one.setTag,{regexText:o,regexNormal:i,regexNumbers:s,endsWith:l}=n.two,u=e[t],c=u.machine||u.normal;let d=u.text;ms.test(u.post)&&!ms.test(u.pre)&&(d+=u.post.trim());let h=ps(d,o)||ps(c,i);return!h&&/[0-9]/.test(c)&&(h=ps(c,s)),h||0!==u.tags.size||(h=function(e=\"\",t){const n=e[e.length-1];if(!0===t.hasOwnProperty(n)){const a=t[n]||[];for(let t=0;t<a.length;t+=1)if(!0===a[t][0].test(e))return a[t]}return null}(c,l)),h?(r([u],h[1],a,null,`2-regex-'${h[2]||h[0]}'`),u.confidence=.6,!0):null},bs=function(e,t,n){const a=e[t];if(0===a.tags.size){const e=function(e=\"\",t=[]){const n=e.length;let a=7;a>n-3&&(a=n-3);for(let n=a;n>2;n-=1){const a=e.substring(0,n);if(!0===t[a.length].hasOwnProperty(a))return t[a.length][a]}return null}(a.normal,n.two.prefixPatterns);if(null!==e)return ts(a,e,\"2-prefix\"),a.confidence=.5,!0}return null},ys=new Set([\"in\",\"on\",\"by\",\"until\",\"for\",\"to\",\"during\",\"throughout\",\"through\",\"within\",\"before\",\"after\",\"of\",\"this\",\"next\",\"last\",\"circa\",\"around\",\"post\",\"pre\",\"budget\",\"classic\",\"plan\",\"may\"]),vs=function(e){if(!e)return!1;const t=e.normal||e.implicit;return!!ys.has(t)||(!!(e.tags.has(\"Date\")||e.tags.has(\"Month\")||e.tags.has(\"WeekDay\")||e.tags.has(\"Year\"))||!!e.tags.has(\"ProperNoun\"))},ws=function(e){return!!e&&(!!e.tags.has(\"Ordinal\")||(!!(e.tags.has(\"Cardinal\")&&e.normal.length<3)||(\"is\"===e.normal||\"was\"===e.normal)))},ks=function(e){return e&&(e.tags.has(\"Date\")||e.tags.has(\"Month\")||e.tags.has(\"WeekDay\")||e.tags.has(\"Year\"))},Ps=function(e,t){const n=e[t];if(n.tags.has(\"NumericValue\")&&n.tags.has(\"Cardinal\")&&4===n.normal.length){const a=Number(n.normal);if(a&&!isNaN(a)&&a>1400&&a<2100){const r=e[t-1],o=e[t+1];if(vs(r)||vs(o))return ts(n,\"Year\",\"2-tagYear\");if(a>=1920&&a<2025){if(ws(r)||ws(o))return ts(n,\"Year\",\"2-tagYear-close\");if(ks(e[t-2])||ks(e[t+2]))return ts(n,\"Year\",\"2-tagYear-far\");if(r&&(r.tags.has(\"Determiner\")||r.tags.has(\"Possessive\"))&&o&&o.tags.has(\"Noun\")&&!o.tags.has(\"Plural\"))return ts(n,\"Year\",\"2-tagYear-noun\")}}}return null},As=function(e,t,n,a){const r=a.methods.one.setTag,o=e[t],i=[\"PastTense\",\"PresentTense\",\"Auxiliary\",\"Modal\",\"Particle\"];if(o.tags.has(\"Verb\")){i.find((e=>o.tags.has(e)))||r([o],\"Infinitive\",a,null,\"2-verb-type''\")}},Cs=/^[A-Z]('s|,)?$/,js=/^[A-Z-]+$/,Ns=/^[A-Z]+s$/,Is=/([A-Z]\\.)+[A-Z]?,?$/,Ds=/[A-Z]{2,}('s|,)?$/,Hs=/([a-z]\\.)+[a-z]\\.?$/,Ts={I:!0,A:!0},Gs={la:!0,ny:!0,us:!0,dc:!0,gb:!0},xs=function(e,t,n){const a=e[t];return a.tags.has(\"RomanNumeral\")||a.tags.has(\"Acronym\")||a.frozen?null:function(e,t){let n=e.text;if(!1===js.test(n)){if(!(n.length>3&&!0===Ns.test(n)))return!1;n=n.replace(/s$/,\"\")}return!(n.length>5||Ts.hasOwnProperty(n)||t.one.lexicon.hasOwnProperty(e.normal)||!0!==Is.test(n)&&!0!==Hs.test(n)&&!0!==Cs.test(n)&&!0!==Ds.test(n))}(a,n)?(a.tags.clear(),ts(a,[\"Acronym\",\"Noun\"],\"3-no-period-acronym\"),!0===Gs[a.normal]&&ts(a,\"Place\",\"3-place-acronym\"),!0===Ns.test(a.text)&&ts(a,\"Plural\",\"3-plural-acronym\"),!0):!Ts.hasOwnProperty(a.text)&&Cs.test(a.text)?(a.tags.clear(),ts(a,[\"Acronym\",\"Noun\"],\"3-one-letter-acronym\"),!0):a.tags.has(\"Organization\")&&a.text.length<=3?(ts(a,\"Acronym\",\"3-org-acronym\"),!0):a.tags.has(\"Organization\")&&js.test(a.text)&&a.text.length<=6?(ts(a,\"Acronym\",\"3-titlecase-acronym\"),!0):null},Es=function(e,t){if(!e)return null;const n=t.find((t=>e.normal===t[0]));return n?n[1]:null},Fs=function(e,t){if(!e)return null;const n=t.find((t=>e.tags.has(t[0])));return n?n[1]:null},Os=function(e,t,n){const{leftTags:a,leftWords:r,rightWords:o,rightTags:i}=n.two.neighbours,s=e[t];if(0===s.tags.size){let l=null;if(l=l||Es(e[t-1],r),l=l||Es(e[t+1],o),l=l||Fs(e[t-1],a),l=l||Fs(e[t+1],i),l)return ts(s,l,\"3-[neighbour]\"),as(e,t,n),e[t].confidence=.2,!0}return null},zs=function(e,t,n){return!!e&&(!e.tags.has(\"FirstName\")&&!e.tags.has(\"Place\")&&(!!(e.tags.has(\"ProperNoun\")||e.tags.has(\"Organization\")||e.tags.has(\"Acronym\"))||!(n||(a=e.text,!/^\\p{Lu}[\\p{Ll}'’]/u.test(a)))&&(0!==t||e.tags.has(\"Singular\"))));var a},Vs=function(e,t,n,a){const r=n.model.two.orgWords,o=n.methods.one.setTag,i=e[t];if(!0===r[i.machine||i.normal]&&zs(e[t-1],t-1,a)){o([e[t]],\"Organization\",n,null,\"3-[org-word]\");for(let r=t;r>=0&&zs(e[r],r,a);r-=1)o([e[r]],\"Organization\",n,null,\"3-[org-word]\")}return null},Bs=/'s$/,Ss=new Set([\"athletic\",\"city\",\"community\",\"eastern\",\"federal\",\"financial\",\"great\",\"historic\",\"historical\",\"local\",\"memorial\",\"municipal\",\"national\",\"northern\",\"provincial\",\"southern\",\"state\",\"western\",\"spring\",\"pine\",\"sunset\",\"view\",\"oak\",\"maple\",\"spruce\",\"cedar\",\"willow\"]),Ks=new Set([\"center\",\"centre\",\"way\",\"range\",\"bar\",\"bridge\",\"field\",\"pit\"]),$s=function(e,t,n){if(!e)return!1;const a=e.tags;return!(a.has(\"Organization\")||a.has(\"Possessive\")||Bs.test(e.normal))&&(!(!a.has(\"ProperNoun\")&&!a.has(\"Place\"))||!(n||(r=e.text,!/^\\p{Lu}[\\p{Ll}'’]/u.test(r)))&&(0!==t||a.has(\"Singular\")));var r},Ls=function(e,t,n,a){const r=n.model.two.placeWords,o=n.methods.one.setTag,i=e[t],s=i.machine||i.normal;if(!0===r[s]){for(let r=t-1;r>=0;r-=1)if(!Ss.has(e[r].normal)){if(!$s(e[r],r,a))break;o(e.slice(r,t+1),\"Place\",n,null,\"3-[place-of-foo]\")}if(Ks.has(s))return!1;for(let r=t+1;r<e.length;r+=1){if($s(e[r],r,a))return o(e.slice(t,r+1),\"Place\",n,null,\"3-[foo-place]\"),!0;if(\"of\"!==e[r].normal&&!Ss.has(e[r].normal))break}}return null},Ms=function(e,t,n){let a=!1;const r=e[t].tags;(0===r.size||1===r.size&&(r.has(\"Hyphenated\")||r.has(\"HashTag\")||r.has(\"Prefix\")||r.has(\"SlashedTerm\")))&&(a=!0),a&&(ts(e[t],\"Noun\",\"3-[fallback]\"),as(e,t,n),e[t].confidence=.1)},Js=/^[A-Z][a-z]/,Ws=(e,t)=>e[t].tags.has(\"ProperNoun\")&&Js.test(e[t].text)?\"Noun\":null,Us=(e,t,n)=>0!==t||e[1]?null:n,qs={\"Adj|Gerund\":(e,t)=>Ws(e,t),\"Adj|Noun\":(e,t)=>Ws(e,t)||function(e,t){return!e[t+1]&&e[t-1]&&e[t-1].tags.has(\"Determiner\")?\"Noun\":null}(e,t),\"Actor|Verb\":(e,t)=>Ws(e,t),\"Adj|Past\":(e,t)=>Ws(e,t),\"Adj|Present\":(e,t)=>Ws(e,t),\"Noun|Gerund\":(e,t)=>Ws(e,t),\"Noun|Verb\":(e,t)=>t>0&&Ws(e,t)||Us(e,t,\"Infinitive\"),\"Plural|Verb\":(e,t)=>Ws(e,t)||Us(e,t,\"PresentTense\")||function(e,t,n){return 0===t&&e.length>3?n:null}(e,t,\"Plural\"),\"Person|Noun\":(e,t)=>Ws(e,t),\"Person|Verb\":(e,t)=>0!==t?Ws(e,t):null,\"Person|Adj\":(e,t)=>0===t&&e.length>1||Ws(e,t)?\"Person\":null},Rs=\"undefined\"!=typeof process&&process.env?process.env:self.env||{},Qs=/^(under|over|mis|re|un|dis|semi)-?/,Zs=(e,t)=>{if(!e||!t)return null;const n=e.normal||e.implicit;let a=null;return t.hasOwnProperty(n)&&(a=t[n]),a&&Rs.DEBUG_TAGS&&console.log(`\\n  \u001b[2m\u001b[3m     ↓ - '${n}' \u001b[0m`),a},Xs=(e,t={},n)=>{if(!e||!t)return null;const a=Array.from(e.tags).sort(((e,t)=>(n[e]?n[e].parents.length:0)>(n[t]?n[t].parents.length:0)?-1:1));let r=a.find((e=>t[e]));return r&&Rs.DEBUG_TAGS&&console.log(`  \u001b[2m\u001b[3m      ↓ - '${e.normal||e.implicit}' (#${r})  \u001b[0m`),r=t[r],r},_s=function(e,t,n){const a=n.model,r=n.methods.one.setTag,{switches:o,clues:i}=a.two,s=e[t];let l=s.normal||s.implicit||\"\";if(Qs.test(l)&&!o[l]&&(l=l.replace(Qs,\"\")),s.switch){const o=s.switch;if(s.tags.has(\"Acronym\")||s.tags.has(\"PhrasalVerb\"))return;let u=function(e,t,n,a){if(!n)return null;const r=\"also\"!==e[t-1]?.text?t-1:Math.max(0,t-2),o=a.one.tagSet;let i=Zs(e[t+1],n.afterWords);return i=i||Zs(e[r],n.beforeWords),i=i||Xs(e[r],n.beforeTags,o),i=i||Xs(e[t+1],n.afterTags,o),i}(e,t,i[o],a);qs[o]&&(u=qs[o](e,t)||u),u?(r([s],u,n,null,`3-[switch] (${o})`),as(e,t,a)):Rs.DEBUG_TAGS&&console.log(`\\n -> X  - '${l}'  : (${o})  `)}},Ys={there:!0,this:!0,it:!0,him:!0,her:!0,us:!0},el=function(e){if(e.filter((e=>!e.tags.has(\"ProperNoun\"))).length<=3)return!1;const t=/^[a-z]/;return e.every((e=>!t.test(e.text)))},tl=function(e,t,n,a){for(let r=0;r<e.length;r+=1)!0!==e[r].frozen&&(es(e,r,t),!1===a&&ds(e,r,t),gs(e,r,t),fs(e,r,t,n),bs(e,r,t),Ps(e,r))},nl=function(e,t,n,a){for(let n=0;n<e.length;n+=1){let a=xs(e,n,t);as(e,n,t),a=a||Os(e,n,t),a=a||Ms(e,n,t)}for(let t=0;t<e.length;t+=1)!0!==e[t].frozen&&(Vs(e,t,n,a),Ls(e,t,n,a),_s(e,t,n),As(e,t,0,n),_i(e,t,0,n));!function(e,t){const n=t.methods.one.setTag,a=t.model.one._multiCache||{},r=e[0];if((\"Noun|Verb\"===r.switch||r.tags.has(\"Infinitive\"))&&e.length>=2){if(e.length<4&&!Ys[e[1].normal])return;if(!r.tags.has(\"PhrasalVerb\")&&a.hasOwnProperty(r.normal))return;(e[1].tags.has(\"Noun\")||e[1].tags.has(\"Determiner\"))&&(e.slice(1,3).some((e=>e.tags.has(\"Verb\")))&&!r.tags.has(\"#PhrasalVerb\")||n([r],\"Imperative\",t,null,\"3-[imperative]\"))}}(e,n)},al={Possessive:e=>{let t=e.machine||e.normal||e.text;return t=t.replace(/'s$/,\"\"),t},Plural:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.noun.toSingular(n,t.model)},Copula:()=>\"is\",PastTense:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,\"PastTense\")},Gerund:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,\"Gerund\")},PresentTense:(e,t)=>{const n=e.machine||e.normal||e.text;return e.tags.has(\"Infinitive\")?n:t.methods.two.transform.verb.toInfinitive(n,t.model,\"PresentTense\")},Comparative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromComparative(n,t.model)},Superlative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromSuperlative(n,t.model)},Adverb:(e,t)=>{const{fromAdverb:n}=t.methods.two.transform.adjective;return n(e.machine||e.normal||e.text)}},rl={Adverb:\"RB\",Comparative:\"JJR\",Superlative:\"JJS\",Adjective:\"JJ\",TO:\"Conjunction\",Modal:\"MD\",Auxiliary:\"MD\",Gerund:\"VBG\",PastTense:\"VBD\",Participle:\"VBN\",PresentTense:\"VBZ\",Infinitive:\"VB\",Particle:\"RP\",Verb:\"VB\",Pronoun:\"PRP\",Cardinal:\"CD\",Conjunction:\"CC\",Determiner:\"DT\",Preposition:\"IN\",QuestionWord:\"WP\",Expression:\"UH\",Possessive:\"POS\",ProperNoun:\"NNP\",Person:\"NNP\",Place:\"NNP\",Organization:\"NNP\",Singular:\"NN\",Plural:\"NNS\",Noun:\"NN\",There:\"EX\"};var ol={preTagger:function(e){const{methods:t,model:n,world:a}=e,r=e.docs;!function(e,t,n){e.forEach((e=>{!function(e,t,n,a){const r=a.methods.one.setTag;if(e.length>=3){const t=/:/;if(e[0].post.match(t)){const t=e[1];if(t.tags.has(\"Value\")||t.tags.has(\"Email\")||t.tags.has(\"PhoneNumber\"))return;r([e[0]],\"Expression\",a,null,\"2-punct-colon''\")}}}(e,0,0,n)}))}(r,0,a);const o=t.two.quickSplit(r);for(let e=0;e<o.length;e+=1){const t=o[e],r=el(t);tl(t,n,a,r),nl(t,n,a,r)}return o},root:function(e){const t=e.world,n=Object.keys(al);e.docs.forEach((e=>{for(let a=0;a<e.length;a+=1){const r=e[a];for(let e=0;e<n.length;e+=1)if(r.tags.has(n[e])){const a=(0,al[n[e]])(r,t);r.normal!==a&&(r.root=a);break}}}))},penn:function(e){e.compute(\"tagRank\"),e.docs.forEach((e=>{e.forEach((e=>{e.penn=function(e){if(e.tags.has(\"ProperNoun\")&&e.tags.has(\"Plural\"))return\"NNPS\";if(e.tags.has(\"Possessive\")&&e.tags.has(\"Pronoun\"))return\"PRP$\";if(\"there\"===e.normal)return\"EX\";if(\"to\"===e.normal)return\"TO\";const t=e.tagRank||[];for(let e=0;e<t.length;e+=1)if(rl.hasOwnProperty(t[e]))return rl[t[e]];return null}(e)}))}))}};const il=[\"Person\",\"Place\",\"Organization\"];var sl={Noun:{not:[\"Verb\",\"Adjective\",\"Adverb\",\"Value\",\"Determiner\"]},Singular:{is:\"Noun\",not:[\"Plural\",\"Uncountable\"]},ProperNoun:{is:\"Noun\"},Person:{is:\"Singular\",also:[\"ProperNoun\"],not:[\"Place\",\"Organization\",\"Date\"]},FirstName:{is:\"Person\"},MaleName:{is:\"FirstName\",not:[\"FemaleName\",\"LastName\"]},FemaleName:{is:\"FirstName\",not:[\"MaleName\",\"LastName\"]},LastName:{is:\"Person\",not:[\"FirstName\"]},Honorific:{is:\"Person\",not:[\"FirstName\",\"LastName\",\"Value\"]},Place:{is:\"Singular\",not:[\"Person\",\"Organization\"]},Country:{is:\"Place\",also:[\"ProperNoun\"],not:[\"City\"]},City:{is:\"Place\",also:[\"ProperNoun\"],not:[\"Country\"]},Region:{is:\"Place\",also:[\"ProperNoun\"]},Address:{},Organization:{is:\"ProperNoun\",not:[\"Person\",\"Place\"]},SportsTeam:{is:\"Organization\"},School:{is:\"Organization\"},Company:{is:\"Organization\"},Plural:{is:\"Noun\",not:[\"Singular\",\"Uncountable\"]},Uncountable:{is:\"Noun\"},Pronoun:{is:\"Noun\",not:il},Actor:{is:\"Noun\",not:[\"Place\",\"Organization\"]},Activity:{is:\"Noun\",not:[\"Person\",\"Place\"]},Unit:{is:\"Noun\",not:il},Demonym:{is:\"Noun\",also:[\"ProperNoun\"],not:il},Possessive:{is:\"Noun\"},Reflexive:{is:\"Pronoun\"}};var ll={Adjective:{not:[\"Noun\",\"Verb\",\"Adverb\",\"Value\"]},Comparable:{is:\"Adjective\"},Comparative:{is:\"Adjective\"},Superlative:{is:\"Adjective\",not:[\"Comparative\"]},NumberRange:{},Adverb:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Value\"]},Determiner:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"QuestionWord\",\"Conjunction\"]},Conjunction:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"Value\",\"QuestionWord\"]},Preposition:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"QuestionWord\",\"Determiner\"]},QuestionWord:{not:[\"Determiner\"]},Currency:{is:\"Noun\"},Expression:{not:[\"Noun\",\"Adjective\",\"Verb\",\"Adverb\"]},Abbreviation:{},Url:{not:[\"HashTag\",\"PhoneNumber\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"Email\",\"SlashedTerm\"]},PhoneNumber:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"Email\"]},HashTag:{},AtMention:{is:\"Noun\",not:[\"HashTag\",\"Email\"]},Emoji:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\"]},Emoticon:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"SlashedTerm\"]},SlashedTerm:{not:[\"Emoticon\",\"Url\",\"Value\"]},Email:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\"]},Acronym:{not:[\"Plural\",\"RomanNumeral\",\"Pronoun\",\"Date\"]},Negative:{not:[\"Noun\",\"Adjective\",\"Value\",\"Expression\"]},Condition:{not:[\"Verb\",\"Adjective\",\"Noun\",\"Value\"]},There:{not:[\"Verb\",\"Adjective\",\"Noun\",\"Value\",\"Conjunction\",\"Preposition\"]},Prefix:{not:[\"Abbreviation\",\"Acronym\",\"ProperNoun\"]},Hyphenated:{}};const ul=Object.assign({},sl,{Verb:{not:[\"Noun\",\"Adjective\",\"Adverb\",\"Value\",\"Expression\"]},PresentTense:{is:\"Verb\",not:[\"PastTense\",\"FutureTense\"]},Infinitive:{is:\"PresentTense\",not:[\"Gerund\"]},Imperative:{is:\"Verb\",not:[\"PastTense\",\"Gerund\",\"Copula\"]},Gerund:{is:\"PresentTense\",not:[\"Copula\"]},PastTense:{is:\"Verb\",not:[\"PresentTense\",\"Gerund\",\"FutureTense\"]},FutureTense:{is:\"Verb\",not:[\"PresentTense\",\"PastTense\"]},Copula:{is:\"Verb\"},Modal:{is:\"Verb\",not:[\"Infinitive\"]},Participle:{is:\"PastTense\"},Auxiliary:{is:\"Verb\",not:[\"PastTense\",\"PresentTense\",\"Gerund\",\"Conjunction\"]},PhrasalVerb:{is:\"Verb\"},Particle:{is:\"PhrasalVerb\",not:[\"PastTense\",\"PresentTense\",\"Copula\",\"Gerund\"]},Passive:{is:\"Verb\"}},{Value:{not:[\"Verb\",\"Adjective\",\"Adverb\"]},Ordinal:{is:\"Value\",not:[\"Cardinal\"]},Cardinal:{is:\"Value\",not:[\"Ordinal\"]},Fraction:{is:\"Value\",not:[\"Noun\"]},Multiple:{is:\"TextValue\"},RomanNumeral:{is:\"Cardinal\",not:[\"TextValue\"]},TextValue:{is:\"Value\",not:[\"NumericValue\"]},NumericValue:{is:\"Value\",not:[\"TextValue\"]},Money:{is:\"Cardinal\"},Percent:{is:\"Value\"}},{Date:{not:[\"Verb\",\"Adverb\",\"Adjective\"]},Month:{is:\"Date\",also:[\"Noun\"],not:[\"Year\",\"WeekDay\",\"Time\"]},WeekDay:{is:\"Date\",also:[\"Noun\"]},Year:{is:\"Date\",not:[\"RomanNumeral\"]},FinancialQuarter:{is:\"Date\",not:\"Fraction\"},Holiday:{is:\"Date\",also:[\"Noun\"]},Season:{is:\"Date\"},Timezone:{is:\"Date\",also:[\"Noun\"],not:[\"ProperNoun\"]},Time:{is:\"Date\",not:[\"AtMention\"]},Duration:{is:\"Date\",also:[\"Noun\"]}},ll);var cl={compute:ol,methods:Ji,model:Xi,tags:ul,hooks:[\"preTagger\"]};const dl=/[,)\"';:\\-–—.…]/,hl=function(e,t){if(!e.found)return;const n=e.termList();for(let e=0;e<n.length-1;e++){const t=n[e];if(dl.test(t.post))return}n[0].implicit=n[0].normal,n[0].text+=t,n[0].normal+=t,n.slice(1).forEach((e=>{e.implicit=e.normal,e.text=\"\",e.normal=\"\"}));for(let e=0;e<n.length-1;e++)n[e].post=n[e].post.replace(/ /,\"\")},gl=function(){const e=this.not(\"@hasContraction\");let t=e.match(\"(we|they|you) are\");return hl(t,\"'re\"),t=e.match(\"(he|she|they|it|we|you) will\"),hl(t,\"'ll\"),t=e.match(\"(he|she|they|it|we) is\"),hl(t,\"'s\"),t=e.match(\"#Person is\"),hl(t,\"'s\"),t=e.match(\"#Person would\"),hl(t,\"'d\"),t=e.match(\"(is|was|had|would|should|could|do|does|have|has|can) not\"),hl(t,\"n't\"),t=e.match(\"(i|we|they) have\"),hl(t,\"'ve\"),t=e.match(\"(would|should|could) have\"),hl(t,\"'ve\"),t=e.match(\"i am\"),hl(t,\"'m\"),t=e.match(\"going to\"),this},ml=/^\\p{Lu}[\\p{Ll}'’]/u,pl=function(e,t,n){const[a,r]=t;n&&0!==n.length&&(n=n.map(((e,t)=>(e.implicit=e.text,e.machine=e.text,e.pre=\"\",e.post=\"\",e.text=\"\",e.normal=\"\",e.index=[a,r+t],e))),n[0]&&(n[0].pre=e[a][r].pre,n[n.length-1].post=e[a][r].post,n[0].text=e[a][r].text,n[0].normal=e[a][r].normal),e[a].splice(r,1,...n))},fl=/'/,bl=new Set([\"been\",\"become\"]),yl=new Set([\"what\",\"how\",\"when\",\"if\",\"too\"]),vl=new Set([\"too\",\"also\",\"enough\"]),wl=function(e,t){const n=e[t].normal.split(fl)[0];if(\"let\"===n)return[n,\"us\"];if(\"there\"===n){const a=e[t+1];if(a&&a.tags.has(\"Plural\"))return[n,\"are\"]}return\"has\"===((e,t)=>{for(let n=t+1;n<e.length;n+=1){const t=e[n];if(bl.has(t.normal))return\"has\";if(yl.has(t.normal))return\"is\";if(t.tags.has(\"Gerund\"))return\"is\";if(t.tags.has(\"Determiner\"))return\"is\";if(t.tags.has(\"Adjective\"))return\"is\";if(\"Adj|Past\"===t.switch&&e[n+1]){if(vl.has(e[n+1].normal))return\"is\";if(e[n+1].tags.has(\"Preposition\"))return\"is\"}if(t.tags.has(\"PastTense\"))return e[n+1]&&\"for\"===e[n+1].normal?\"is\":\"has\"}return\"is\"})(e,t)?[n,\"has\"]:[n,\"is\"]},kl=/'/,Pl=new Set([\"better\",\"done\",\"before\",\"it\",\"had\"]),Al=new Set([\"have\",\"be\"]),Cl=function(e,t){const n=e[t].normal.split(kl)[0];return\"how\"===n||\"what\"===n?[n,\"did\"]:\"had\"===((e,t)=>{for(let n=t+1;n<e.length;n+=1){const t=e[n];if(Pl.has(t.normal))return\"had\";if(Al.has(t.normal))return\"would\";if(t.tags.has(\"PastTense\")||\"Adj|Past\"===t.switch)return\"had\";if(t.tags.has(\"PresentTense\")||t.tags.has(\"Infinitive\"))return\"would\";if(t.tags.has(\"#Determiner\"))return\"had\";if(t.tags.has(\"Adjective\"))return\"would\"}return!1})(e,t)?[n,\"had\"]:[n,\"would\"]},jl={that:!0,there:!0,let:!0,here:!0,everywhere:!0},Nl={in:!0,by:!0,for:!0},Il=new Set([\"too\",\"also\",\"enough\",\"about\"]),Dl=new Set([\"is\",\"are\",\"did\",\"were\",\"could\",\"should\",\"must\",\"had\",\"have\"]),Hl=/'/,Tl=function(e,t,n,a){const r=t.update();r.document=[e];let o=n+a;n>0&&(n-=1),e[o]&&(o+=1),r.ptrs=[[0,n,o]],r.compute([\"freeze\",\"lexicon\",\"preTagger\",\"unfreeze\"]),function(e){e.forEach(((e,t)=>{e.index&&(e.index[1]=t)}))}(e)},Gl={d:(e,t)=>Cl(e,t),t:(e,t)=>function(e,t){if(\"ain't\"===e[t].normal||\"aint\"===e[t].normal){if(e[t+1]&&\"never\"===e[t+1].normal)return[\"have\"];const n=function(e,t){for(let n=t-1;n>=0;n-=1)if(e[n].tags.has(\"Noun\")||e[n].tags.has(\"Pronoun\")||e[n].tags.has(\"Plural\")||e[n].tags.has(\"Singular\"))return e[n];return null}(e,t);if(n){if(\"we\"===n.normal||\"they\"===n.normal)return[\"are\",\"not\"];if(\"i\"===n.normal)return[\"am\",\"not\"];if(n.tags&&n.tags.has(\"Plural\"))return[\"are\",\"not\"]}return[\"is\",\"not\"]}return[e[t].normal.replace(/n't/,\"\"),\"not\"]}(e,t),s:(e,t,n)=>((e,t)=>{const n=e[t];if(jl.hasOwnProperty(n.machine||n.normal))return!1;if(n.tags.has(\"Possessive\"))return!0;if(n.tags.has(\"QuestionWord\"))return!1;if(\"he's\"===n.normal||\"she's\"===n.normal)return!1;const a=e[t+1];if(!a)return!0;if(\"it's\"===n.normal)return!!a.tags.has(\"#Noun\");if(\"Noun|Gerund\"==a.switch){const a=e[t+2];return a?!!a.tags.has(\"Copula\")||(\"on\"===a.normal||a.normal,!1):!(!n.tags.has(\"Actor\")&&!n.tags.has(\"ProperNoun\"))}if(a.tags.has(\"Verb\"))return!!a.tags.has(\"Infinitive\")||!a.tags.has(\"Gerund\")&&!!a.tags.has(\"PresentTense\");if(\"Adj|Noun\"===a.switch){const n=e[t+2];if(!n)return!1;if(Dl.has(n.normal))return!0;if(Il.has(n.normal))return!1}if(a.tags.has(\"Noun\")){const e=a.machine||a.normal;return!(\"here\"===e||\"there\"===e||\"everywhere\"===e||a.tags.has(\"Possessive\")||a.tags.has(\"ProperNoun\")&&!n.tags.has(\"ProperNoun\"))}if(e[t-1]&&!0===Nl[e[t-1].normal])return!0;if(a.tags.has(\"Adjective\")){const n=e[t+2];if(!n)return!1;if(n.tags.has(\"Noun\")&&!n.tags.has(\"Pronoun\")){const e=a.normal;return\"above\"!==e&&\"below\"!==e&&\"behind\"!==e}return\"Noun|Verb\"===n.switch}return!!a.tags.has(\"Value\")})(e,t)?n.methods.one.setTag([e[t]],\"Possessive\",n,null,\"2-contraction\"):wl(e,t)},xl=function(e,t){const n=t.fromText(e.join(\" \"));return n.compute(\"id\"),n.docs[0]};var El={contractionTwo:e=>{const{world:t,document:n}=e;n.forEach(((a,r)=>{for(let o=a.length-1;o>=0;o-=1){if(a[o].implicit)continue;let i=null;!0===Hl.test(a[o].normal)&&(i=a[o].normal.split(Hl)[1]);let s=null;Gl.hasOwnProperty(i)&&(s=Gl[i](a,o,t)),s&&(s=xl(s,e),pl(n,[r,o],s),Tl(n[r],e,o,s.length))}}))}},Fl={compute:El,api:function(e){class Contractions extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Contraction\"}expand(){return this.docs.forEach((e=>{const t=ml.test(e[0].text);e.forEach(((t,n)=>{t.text=t.implicit||\"\",delete t.implicit,n<e.length-1&&\"\"===t.post&&(t.post+=\" \"),t.dirty=!0})),t&&(e[0].text=function(e=\"\"){return e.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))}(e[0].text))})),this.compute(\"normal\"),this}}e.prototype.contractions=function(){const e=this.match(\"@hasContraction+\");return new Contractions(this.document,e.pointer)},e.prototype.contract=gl},hooks:[\"contractionTwo\"]};const Ol=\"(hard|fast|late|early|high|right|deep|close|direct)\";const zl=\"(i|we|they)\";const Vl=[].concat([{match:\"(got|were|was|is|are|am) (#PastTense|#Participle)\",tag:\"Passive\",reason:\"got-walked\"},{match:\"(was|were|is|are|am) being (#PastTense|#Participle)\",tag:\"Passive\",reason:\"was-being\"},{match:\"(had|have|has) been (#PastTense|#Participle)\",tag:\"Passive\",reason:\"had-been\"},{match:\"will be being? (#PastTense|#Participle)\",tag:\"Passive\",reason:\"will-be-cleaned\"},{match:\"#Noun [(#PastTense|#Participle)] by (the|a) #Noun\",group:0,tag:\"Passive\",reason:\"suffered-by\"}],[{match:\"[(all|both)] #Determiner #Noun\",group:0,tag:\"Noun\",reason:\"all-noun\"},{match:\"#Copula [(just|alone)]$\",group:0,tag:\"Adjective\",reason:\"not-adverb\"},{match:\"#Singular is #Adverb? [#PastTense$]\",group:0,tag:\"Adjective\",reason:\"is-filled\"},{match:\"[#PastTense] #Singular is\",group:0,tag:\"Adjective\",reason:\"smoked-poutine\"},{match:\"[#PastTense] #Plural are\",group:0,tag:\"Adjective\",reason:\"baked-onions\"},{match:\"well [#PastTense]\",group:0,tag:\"Adjective\",reason:\"well-made\"},{match:\"#Copula [fucked up?]\",group:0,tag:\"Adjective\",reason:\"swears-adjective\"},{match:\"#Singular (seems|appears) #Adverb? [#PastTense$]\",group:0,tag:\"Adjective\",reason:\"seems-filled\"},{match:\"#Copula #Adjective? [(out|in|through)]$\",group:0,tag:\"Adjective\",reason:\"still-out\"},{match:\"^[#Adjective] (the|your) #Noun\",group:0,notIf:\"(all|even)\",tag:\"Infinitive\",reason:\"shut-the\"},{match:\"the [said] #Noun\",group:0,tag:\"Adjective\",reason:\"the-said-card\"},{match:\"[#Hyphenated (#Hyphenated && #PastTense)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",notIf:\"#Adverb\",reason:\"faith-based\"},{match:\"[#Hyphenated (#Hyphenated && #Gerund)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",notIf:\"#Adverb\",reason:\"self-driving\"},{match:\"[#PastTense (#Hyphenated && #PhrasalVerb)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",reason:\"dammed-up\"},{match:\"(#Hyphenated && #Value) fold\",tag:\"Adjective\",reason:\"two-fold\"},{match:\"must (#Hyphenated && #Infinitive)\",tag:\"Adjective\",reason:\"must-win\"},{match:\"(#Hyphenated && #Infinitive) #Hyphenated\",tag:\"Adjective\",notIf:\"#PhrasalVerb\",reason:\"vacuum-sealed\"},{match:\"too much\",tag:\"Adverb Adjective\",reason:\"bit-4\"},{match:\"a bit much\",tag:\"Determiner Adverb Adjective\",reason:\"bit-3\"},{match:\"[(un|contra|extra|inter|intra|macro|micro|mid|mis|mono|multi|pre|sub|tri|ex)] #Adjective\",group:0,tag:[\"Adjective\",\"Prefix\"],reason:\"un-skilled\"}],[{match:\"#Adverb [#Adverb] (and|or|then)\",group:0,tag:\"Adjective\",reason:\"kinda-sparkly-and\"},{match:\"[(dark|bright|flat|light|soft|pale|dead|dim|faux|little|wee|sheer|most|near|good|extra|all)] #Adjective\",group:0,tag:\"Adverb\",reason:\"dark-green\"},{match:\"#Copula [far too] #Adjective\",group:0,tag:\"Adverb\",reason:\"far-too\"},{match:\"#Copula [still] (in|#Gerund|#Adjective)\",group:0,tag:\"Adverb\",reason:\"was-still-walking\"},{match:`#Plural ${Ol}`,tag:\"#PresentTense #Adverb\",reason:\"studies-hard\"},{match:`#Verb [${Ol}] !#Noun?`,group:0,notIf:\"(#Copula|get|got|getting|become|became|becoming|feel|feels|feeling|#Determiner|#Preposition)\",tag:\"Adverb\",reason:\"shops-direct\"},{match:\"[#Plural] a lot\",tag:\"PresentTense\",reason:\"studies-a-lot\"}],[{match:\"as [#Gerund] as\",group:0,tag:\"Adjective\",reason:\"as-gerund-as\"},{match:\"more [#Gerund] than\",group:0,tag:\"Adjective\",reason:\"more-gerund-than\"},{match:\"(so|very|extremely) [#Gerund]\",group:0,tag:\"Adjective\",reason:\"so-gerund\"},{match:\"(found|found) it #Adverb? [#Gerund]\",group:0,tag:\"Adjective\",reason:\"found-it-gerund\"},{match:\"a (little|bit|wee) bit? [#Gerund]\",group:0,tag:\"Adjective\",reason:\"a-bit-gerund\"},{match:\"#Gerund [#Gerund]\",group:0,tag:\"Adjective\",notIf:\"(impersonating|practicing|considering|assuming)\",reason:\"looking-annoying\"},{match:\"(looked|look|looks) #Adverb? [%Adj|Gerund%]\",group:0,tag:\"Adjective\",notIf:\"(impersonating|practicing|considering|assuming)\",reason:\"looked-amazing\"},{match:\"[%Adj|Gerund%] #Determiner\",group:0,tag:\"Gerund\",reason:\"developing-a\"},{match:\"#Possessive [%Adj|Gerund%] #Noun\",group:0,tag:\"Adjective\",reason:\"leading-manufacturer\"},{match:\"%Noun|Gerund% %Adj|Gerund%\",tag:\"Gerund #Adjective\",reason:\"meaning-alluring\"},{match:\"(face|embrace|reveal|stop|start|resume) %Adj|Gerund%\",tag:\"#PresentTense #Adjective\",reason:\"face-shocking\"},{match:\"(are|were) [%Adj|Gerund%] #Plural\",group:0,tag:\"Adjective\",reason:\"are-enduring-symbols\"}],[{match:\"#Determiner [#Adjective] #Copula\",group:0,tag:\"Noun\",reason:\"the-adj-is\"},{match:\"#Adjective [#Adjective] #Copula\",group:0,tag:\"Noun\",reason:\"adj-adj-is\"},{match:\"(his|its) [%Adj|Noun%]\",group:0,tag:\"Noun\",notIf:\"#Hyphenated\",reason:\"his-fine\"},{match:\"#Copula #Adverb? [all]\",group:0,tag:\"Noun\",reason:\"is-all\"},{match:\"(have|had) [#Adjective] #Preposition .\",group:0,tag:\"Noun\",reason:\"have-fun\"},{match:\"#Gerund (giant|capital|center|zone|application)\",tag:\"Noun\",reason:\"brewing-giant\"},{match:\"#Preposition (a|an) [#Adjective]$\",group:0,tag:\"Noun\",reason:\"an-instant\"},{match:\"no [#Adjective] #Modal\",group:0,tag:\"Noun\",reason:\"no-golden\"},{match:\"[brand #Gerund?] new\",group:0,tag:\"Adverb\",reason:\"brand-new\"},{match:\"(#Determiner|#Comparative|new|different) [kind]\",group:0,tag:\"Noun\",reason:\"some-kind\"},{match:\"#Possessive [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",reason:\"her-favourite\"},{match:\"must && #Hyphenated .\",tag:\"Adjective\",reason:\"must-win\"},{match:\"#Determiner [#Adjective]$\",tag:\"Noun\",notIf:\"(this|that|#Comparative|#Superlative)\",reason:\"the-south\"},{match:\"(#Noun && #Hyphenated) (#Adjective && #Hyphenated)\",tag:\"Adjective\",notIf:\"(this|that|#Comparative|#Superlative)\",reason:\"company-wide\"},{match:\"#Determiner [#Adjective] (#Copula|#Determiner)\",notIf:\"(#Comparative|#Superlative)\",group:0,tag:\"Noun\",reason:\"the-poor\"},{match:\"[%Adj|Noun%] #Noun\",notIf:\"(#Pronoun|#ProperNoun)\",group:0,tag:\"Adjective\",reason:\"stable-foundations\"}],[{match:\"[still] #Adjective\",group:0,tag:\"Adverb\",reason:\"still-advb\"},{match:\"[still] #Verb\",group:0,tag:\"Adverb\",reason:\"still-verb\"},{match:\"[so] #Adjective\",group:0,tag:\"Adverb\",reason:\"so-adv\"},{match:\"[way] #Comparative\",group:0,tag:\"Adverb\",reason:\"way-adj\"},{match:\"[way] #Adverb #Adjective\",group:0,tag:\"Adverb\",reason:\"way-too-adj\"},{match:\"[all] #Verb\",group:0,tag:\"Adverb\",reason:\"all-verb\"},{match:\"#Verb  [like]\",group:0,notIf:\"(#Modal|#PhrasalVerb)\",tag:\"Adverb\",reason:\"verb-like\"},{match:\"(barely|hardly) even\",tag:\"Adverb\",reason:\"barely-even\"},{match:\"[even] #Verb\",group:0,tag:\"Adverb\",reason:\"even-walk\"},{match:\"[even] #Comparative\",group:0,tag:\"Adverb\",reason:\"even-worse\"},{match:\"[even] (#Determiner|#Possessive)\",group:0,tag:\"#Adverb\",reason:\"even-the\"},{match:\"even left\",tag:\"#Adverb #Verb\",reason:\"even-left\"},{match:\"[way] #Adjective\",group:0,tag:\"#Adverb\",reason:\"way-over\"},{match:\"#PresentTense [(hard|quick|bright|slow|fast|backwards|forwards)]\",notIf:\"#Copula\",group:0,tag:\"Adverb\",reason:\"lazy-ly\"},{match:\"[much] #Adjective\",group:0,tag:\"Adverb\",reason:\"bit-1\"},{match:\"#Copula [#Adverb]$\",group:0,tag:\"Adjective\",reason:\"is-well\"},{match:\"a [(little|bit|wee) bit?] #Adjective\",group:0,tag:\"Adverb\",reason:\"a-bit-cold\"},{match:\"[(super|pretty)] #Adjective\",group:0,tag:\"Adverb\",reason:\"super-strong\"},{match:\"(become|fall|grow) #Adverb? [#PastTense]\",group:0,tag:\"Adjective\",reason:\"overly-weakened\"},{match:\"(a|an) #Adverb [#Participle] #Noun\",group:0,tag:\"Adjective\",reason:\"completely-beaten\"},{match:\"#Determiner #Adverb? [close]\",group:0,tag:\"Adjective\",reason:\"a-close\"},{match:\"#Gerund #Adverb? [close]\",group:0,tag:\"Adverb\",notIf:\"(getting|becoming|feeling)\",reason:\"being-close\"},{match:\"(the|those|these|a|an) [#Participle] #Noun\",group:0,tag:\"Adjective\",reason:\"blown-motor\"},{match:\"(#PresentTense|#PastTense) [back]\",group:0,tag:\"Adverb\",notIf:\"(#PhrasalVerb|#Copula)\",reason:\"charge-back\"},{match:\"#Verb [around]\",group:0,tag:\"Adverb\",notIf:\"#PhrasalVerb\",reason:\"send-around\"},{match:\"[later] #PresentTense\",group:0,tag:\"Adverb\",reason:\"later-say\"},{match:\"#Determiner [well] !#PastTense?\",group:0,tag:\"Noun\",reason:\"the-well\"},{match:\"#Adjective [enough]\",group:0,tag:\"Adverb\",reason:\"high-enough\"}],[{match:\"[sun] the #Ordinal\",tag:\"WeekDay\",reason:\"sun-the-5th\"},{match:\"[sun] #Date\",group:0,tag:\"WeekDay\",reason:\"sun-feb\"},{match:\"#Date (on|this|next|last|during)? [sun]\",group:0,tag:\"WeekDay\",reason:\"1pm-sun\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [sat]\",group:0,tag:\"WeekDay\",reason:\"sat\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [wed]\",group:0,tag:\"WeekDay\",reason:\"wed\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [march]\",group:0,tag:\"Month\",reason:\"march\"},{match:\"[sat] #Date\",group:0,tag:\"WeekDay\",reason:\"sat-feb\"},{match:\"#Preposition [(march|may)]\",group:0,tag:\"Month\",reason:\"in-month\"},{match:\"(this|next|last) (march|may) !#Infinitive?\",tag:\"#Date #Month\",reason:\"this-month\"},{match:\"(march|may) the? #Value\",tag:\"#Month #Date #Date\",reason:\"march-5th\"},{match:\"#Value of? (march|may)\",tag:\"#Date #Date #Month\",reason:\"5th-of-march\"},{match:\"[(march|may)] .? #Date\",group:0,tag:\"Month\",reason:\"march-and-feb\"},{match:\"#Date .? [(march|may)]\",group:0,tag:\"Month\",reason:\"feb-and-march\"},{match:\"#Adverb [(march|may)]\",group:0,tag:\"Verb\",reason:\"quickly-march\"},{match:\"[(march|may)] #Adverb\",group:0,tag:\"Verb\",reason:\"march-quickly\"},{match:\"#Value (am|pm)\",tag:\"Time\",reason:\"2-am\"}],[{match:\"#Holiday (day|eve)\",tag:\"Holiday\",reason:\"holiday-day\"},{match:\"#Value of #Month\",tag:\"Date\",reason:\"value-of-month\"},{match:\"#Cardinal #Month\",tag:\"Date\",reason:\"cardinal-month\"},{match:\"#Month #Value to #Value\",tag:\"Date\",reason:\"value-to-value\"},{match:\"#Month the #Value\",tag:\"Date\",reason:\"month-the-value\"},{match:\"(#WeekDay|#Month) #Value\",tag:\"Date\",reason:\"date-value\"},{match:\"#Value (#WeekDay|#Month)\",tag:\"Date\",reason:\"value-date\"},{match:\"(#TextValue && #Date) #TextValue\",tag:\"Date\",reason:\"textvalue-date\"},{match:\"#Month #NumberRange\",tag:\"Date\",reason:\"aug 20-21\"},{match:\"#WeekDay #Month #Ordinal\",tag:\"Date\",reason:\"week mm-dd\"},{match:\"#Month #Ordinal #Cardinal\",tag:\"Date\",reason:\"mm-dd-yyy\"},{match:\"(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time\",tag:\"Timezone\",reason:\"std-time\"},{match:\"(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time\",tag:\"Timezone\",reason:\"eastern-time\"},{match:\"#Time [(eastern|mountain|pacific|central|est|pst|gmt)]\",group:0,tag:\"Timezone\",reason:\"5pm-central\"},{match:\"(central|western|eastern) european time\",tag:\"Timezone\",reason:\"cet\"}],[{match:\"(the|any) [more]\",group:0,tag:\"Singular\",reason:\"more-noun\"},{match:\"[more] #Noun\",group:0,tag:\"Adjective\",reason:\"more-noun\"},{match:\"(right|rights) of .\",tag:\"Noun\",reason:\"right-of\"},{match:\"a [bit]\",group:0,tag:\"Singular\",reason:\"bit-2\"},{match:\"a [must]\",group:0,tag:\"Singular\",reason:\"must-2\"},{match:\"(we|us) [all]\",group:0,tag:\"Noun\",reason:\"we all\"},{match:\"due to [#Verb]\",group:0,tag:\"Noun\",reason:\"due-to\"},{match:\"some [#Verb] #Plural\",group:0,tag:\"Noun\",reason:\"determiner6\"},{match:\"#Possessive #Ordinal [#PastTense]\",group:0,tag:\"Noun\",reason:\"first-thought\"},{match:\"(the|this|those|these) #Adjective [%Verb|Noun%]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"the-adj-verb\"},{match:\"(the|this|those|these) #Adverb #Adjective [#Verb]\",group:0,tag:\"Noun\",reason:\"determiner4\"},{match:\"the [#Verb] #Preposition .\",group:0,tag:\"Noun\",reason:\"determiner1\"},{match:\"(a|an|the) [#Verb] of\",group:0,tag:\"Noun\",reason:\"the-verb-of\"},{match:\"#Determiner #Noun of [#Verb]\",group:0,tag:\"Noun\",notIf:\"#Gerund\",reason:\"noun-of-noun\"},{match:\"#PastTense #Preposition [#PresentTense]\",group:0,notIf:\"#Gerund\",tag:\"Noun\",reason:\"ended-in-ruins\"},{match:\"#Conjunction [u]\",group:0,tag:\"Pronoun\",reason:\"u-pronoun-2\"},{match:\"[u] #Verb\",group:0,tag:\"Pronoun\",reason:\"u-pronoun-1\"},{match:\"#Determiner [(western|eastern|northern|southern|central)] #Noun\",group:0,tag:\"Noun\",reason:\"western-line\"},{match:\"(#Singular && @hasHyphen) #PresentTense\",tag:\"Noun\",reason:\"hyphen-verb\"},{match:\"is no [#Verb]\",group:0,tag:\"Noun\",reason:\"is-no-verb\"},{match:\"do [so]\",group:0,tag:\"Noun\",reason:\"so-noun\"},{match:\"#Determiner [(shit|damn|hell)]\",group:0,tag:\"Noun\",reason:\"swears-noun\"},{match:\"to [(shit|hell)]\",group:0,tag:\"Noun\",reason:\"to-swears\"},{match:\"(the|these) [#Singular] (were|are)\",group:0,tag:\"Plural\",reason:\"singular-were\"},{match:\"a #Noun+ or #Adverb+? [#Verb]\",group:0,tag:\"Noun\",reason:\"noun-or-noun\"},{match:\"(the|those|these|a|an) #Adjective? [#PresentTense #Particle?]\",group:0,tag:\"Noun\",notIf:\"(seem|appear|include|#Gerund|#Copula)\",reason:\"det-inf\"},{match:\"#Noun #Actor\",tag:\"Actor\",notIf:\"(#Person|#Pronoun)\",reason:\"thing-doer\"},{match:\"#Gerund #Actor\",tag:\"Actor\",reason:\"gerund-doer\"},{match:\"co #Singular\",tag:\"Actor\",reason:\"co-noun\"},{match:\"[#Noun+] #Actor\",group:0,tag:\"Actor\",notIf:\"(#Honorific|#Pronoun|#Possessive)\",reason:\"air-traffic-controller\"},{match:\"(urban|cardiac|cardiovascular|respiratory|medical|clinical|visual|graphic|creative|dental|exotic|fine|certified|registered|technical|virtual|professional|amateur|junior|senior|special|pharmaceutical|theoretical)+ #Noun? #Actor\",tag:\"Actor\",reason:\"fine-artist\"},{match:\"#Noun+ (coach|chef|king|engineer|fellow|personality|boy|girl|man|woman|master)\",tag:\"Actor\",reason:\"dance-coach\"},{match:\"chief . officer\",tag:\"Actor\",reason:\"chief-x-officer\"},{match:\"chief of #Noun+\",tag:\"Actor\",reason:\"chief-of-police\"},{match:\"senior? vice? president of #Noun+\",tag:\"Actor\",reason:\"president-of\"},{match:\"#Determiner [sun]\",group:0,tag:\"Singular\",reason:\"the-sun\"},{match:\"#Verb (a|an) [#Value]$\",group:0,tag:\"Singular\",reason:\"did-a-value\"},{match:\"the [(can|will|may)]\",group:0,tag:\"Singular\",reason:\"the can\"},{match:\"#FirstName #Acronym? (#Possessive && #LastName)\",tag:\"Possessive\",reason:\"name-poss\"},{match:\"#Organization+ #Possessive\",tag:\"Possessive\",reason:\"org-possessive\"},{match:\"#Place+ #Possessive\",tag:\"Possessive\",reason:\"place-possessive\"},{match:\"#Possessive #PresentTense #Particle?\",notIf:\"(#Gerund|her)\",tag:\"Noun\",reason:\"possessive-verb\"},{match:\"(my|our|their|her|his|its) [(#Plural && #Actor)] #Noun\",tag:\"Possessive\",reason:\"my-dads\"},{match:\"#Value of a [second]\",group:0,unTag:\"Value\",tag:\"Singular\",reason:\"10th-of-a-second\"},{match:\"#Value [seconds]\",group:0,unTag:\"Value\",tag:\"Plural\",reason:\"10-seconds\"},{match:\"in [#Infinitive]\",group:0,tag:\"Singular\",reason:\"in-age\"},{match:\"a [#Adjective] #Preposition\",group:0,tag:\"Noun\",reason:\"a-minor-in\"},{match:\"#Determiner [#Singular] said\",group:0,tag:\"Actor\",reason:\"the-actor-said\"},{match:\"#Determiner #Noun [(feel|sense|process|rush|side|bomb|bully|challenge|cover|crush|dump|exchange|flow|function|issue|lecture|limit|march|process)] !(#Preposition|to|#Adverb)?\",group:0,tag:\"Noun\",reason:\"the-noun-sense\"},{match:\"[#PresentTense] (of|by|for) (a|an|the) #Noun #Copula\",group:0,tag:\"Plural\",reason:\"photographs-of\"},{match:\"#Infinitive and [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"fight and win\"},{match:\"#Noun and [#Verb] and #Noun\",group:0,tag:\"Noun\",reason:\"peace-and-flowers\"},{match:\"the #Cardinal [%Adj|Noun%]\",group:0,tag:\"Noun\",reason:\"the-1992-classic\"},{match:\"#Copula the [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",reason:\"the-premier-university\"},{match:\"i #Verb [me] #Noun\",group:0,tag:\"Possessive\",reason:\"scottish-me\"},{match:\"[#PresentTense] (music|class|lesson|night|party|festival|league|ceremony)\",group:0,tag:\"Noun\",reason:\"dance-music\"},{match:\"[wit] (me|it)\",group:0,tag:\"Presposition\",reason:\"wit-me\"},{match:\"#PastTense #Possessive [#Verb]\",group:0,tag:\"Noun\",notIf:\"(saw|made)\",reason:\"left-her-boots\"},{match:\"#Value [%Plural|Verb%]\",group:0,tag:\"Plural\",notIf:\"(one|1|a|an)\",reason:\"35-signs\"},{match:\"had [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Gerund|come|become)\",reason:\"had-time\"},{match:\"%Adj|Noun% %Noun|Verb%\",tag:\"#Adjective #Noun\",notIf:\"#ProperNoun #Noun\",reason:\"instant-access\"},{match:\"#Determiner [%Adj|Noun%] #Conjunction\",group:0,tag:\"Noun\",reason:\"a-rep-to\"},{match:\"#Adjective #Noun [%Plural|Verb%]$\",group:0,tag:\"Plural\",notIf:\"#Pronoun\",reason:\"near-death-experiences\"},{match:\"#Possessive #Noun [%Plural|Verb%]$\",group:0,tag:\"Plural\",reason:\"your-guild-colors\"}],[{match:\"(this|that|the|a|an) [#Gerund #Infinitive]\",group:0,tag:\"Singular\",reason:\"the-planning-process\"},{match:\"(that|the) [#Gerund #PresentTense]\",group:0,ifNo:\"#Copula\",tag:\"Plural\",reason:\"the-paving-stones\"},{match:\"#Determiner [#Gerund] #Noun\",group:0,tag:\"Adjective\",reason:\"the-gerund-noun\"},{match:\"#Pronoun #Infinitive [#Gerund] #PresentTense\",group:0,tag:\"Noun\",reason:\"tipping-sucks\"},{match:\"#Adjective [#Gerund]\",group:0,tag:\"Noun\",notIf:\"(still|even|just)\",reason:\"early-warning\"},{match:\"[#Gerund] #Adverb? not? #Copula\",group:0,tag:\"Activity\",reason:\"gerund-copula\"},{match:\"#Copula [(#Gerund|#Activity)] #Copula\",group:0,tag:\"Gerund\",reason:\"are-doing-is\"},{match:\"[#Gerund] #Modal\",group:0,tag:\"Activity\",reason:\"gerund-modal\"},{match:\"#Singular for [%Noun|Gerund%]\",group:0,tag:\"Gerund\",reason:\"noun-for-gerund\"},{match:\"#Comparative (for|at) [%Noun|Gerund%]\",group:0,tag:\"Gerund\",reason:\"better-for-gerund\"},{match:\"#PresentTense the [#Gerund]\",group:0,tag:\"Noun\",reason:\"keep-the-touching\"}],[{match:\"#Infinitive (this|that|the) [#Infinitive]\",group:0,tag:\"Noun\",reason:\"do-this-dance\"},{match:\"#Gerund #Determiner [#Infinitive]\",group:0,tag:\"Noun\",reason:\"running-a-show\"},{match:\"#Determiner (only|further|just|more|backward) [#Infinitive]\",group:0,tag:\"Noun\",reason:\"the-only-reason\"},{match:\"(the|this|a|an) [#Infinitive] #Adverb? #Verb\",group:0,tag:\"Noun\",reason:\"determiner5\"},{match:\"#Determiner #Adjective #Adjective? [#Infinitive]\",group:0,tag:\"Noun\",reason:\"a-nice-inf\"},{match:\"#Determiner #Demonym [#PresentTense]\",group:0,tag:\"Noun\",reason:\"mexican-train\"},{match:\"#Adjective #Noun+ [#Infinitive] #Copula\",group:0,tag:\"Noun\",reason:\"career-move\"},{match:\"at some [#Infinitive]\",group:0,tag:\"Noun\",reason:\"at-some-inf\"},{match:\"(go|goes|went) to [#Infinitive]\",group:0,tag:\"Noun\",reason:\"goes-to-verb\"},{match:\"(a|an) #Adjective? #Noun [#Infinitive] (#Preposition|#Noun)\",group:0,notIf:\"from\",tag:\"Noun\",reason:\"a-noun-inf\"},{match:\"(a|an) #Noun [#Infinitive]$\",group:0,tag:\"Noun\",reason:\"a-noun-inf2\"},{match:\"#Gerund #Adjective? for [#Infinitive]\",group:0,tag:\"Noun\",reason:\"running-for\"},{match:\"about [#Infinitive]\",group:0,tag:\"Singular\",reason:\"about-love\"},{match:\"#Plural on [#Infinitive]\",group:0,tag:\"Noun\",reason:\"on-stage\"},{match:\"any [#Infinitive]\",group:0,tag:\"Noun\",reason:\"any-charge\"},{match:\"no [#Infinitive]\",group:0,tag:\"Noun\",reason:\"no-doubt\"},{match:\"number of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"number-of-x\"},{match:\"(taught|teaches|learns|learned) [#PresentTense]\",group:0,tag:\"Noun\",reason:\"teaches-x\"},{match:\"(try|use|attempt|build|make) [#Verb #Particle?]\",notIf:\"(#Copula|#Noun|sure|fun|up)\",group:0,tag:\"Noun\",reason:\"do-verb\"},{match:\"^[#Infinitive] (is|was)\",group:0,tag:\"Noun\",reason:\"checkmate-is\"},{match:\"#Infinitive much [#Infinitive]\",group:0,tag:\"Noun\",reason:\"get-much\"},{match:\"[cause] #Pronoun #Verb\",group:0,tag:\"Conjunction\",reason:\"cause-cuz\"},{match:\"the #Singular [#Infinitive] #Noun\",group:0,tag:\"Noun\",notIf:\"#Pronoun\",reason:\"cardio-dance\"},{match:\"#Determiner #Modal [#Noun]\",group:0,tag:\"PresentTense\",reason:\"should-smoke\"},{match:\"this [#Plural]\",group:0,tag:\"PresentTense\",notIf:\"(#Preposition|#Date)\",reason:\"this-verbs\"},{match:\"#Noun that [#Plural]\",group:0,tag:\"PresentTense\",notIf:\"(#Preposition|#Pronoun|way)\",reason:\"voice-that-rocks\"},{match:\"that [#Plural] to\",group:0,tag:\"PresentTense\",notIf:\"#Preposition\",reason:\"that-leads-to\"},{match:\"(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)\",group:0,tag:\"Infinitive\",reason:\"let-him-glue\"},{match:\"#Verb (all|every|each|most|some|no) [#PresentTense]\",notIf:\"#Modal\",group:0,tag:\"Noun\",reason:\"all-presentTense\"},{match:\"(had|have|#PastTense) #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"better\",reason:\"adj-presentTense\"},{match:\"#Value #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"one-big-reason\"},{match:\"#PastTense #Adjective+ [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Copula|better)\",reason:\"won-wide-support\"},{match:\"(many|few|several|couple) [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"many-poses\"},{match:\"#Determiner #Adverb #Adjective [%Noun|Verb%]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"very-big-dream\"},{match:\"from #Noun to [%Noun|Verb%]\",group:0,tag:\"Noun\",reason:\"start-to-finish\"},{match:\"(for|with|of) #Noun (and|or|not) [%Noun|Verb%]\",group:0,tag:\"Noun\",notIf:\"#Pronoun\",reason:\"for-food-and-gas\"},{match:\"#Adjective #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"adorable-little-store\"},{match:\"#Gerund #Adverb? #Comparative [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"higher-costs\"},{match:\"(#Noun && @hasComma) #Noun (and|or) [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"noun-list\"},{match:\"(many|any|some|several) [#PresentTense] for\",group:0,tag:\"Noun\",reason:\"any-verbs-for\"},{match:\"to #PresentTense #Noun [#PresentTense] #Preposition\",group:0,tag:\"Noun\",reason:\"gas-exchange\"},{match:\"#PastTense (until|as|through|without) [#PresentTense]\",group:0,tag:\"Noun\",reason:\"waited-until-release\"},{match:\"#Gerund like #Adjective? [#PresentTense]\",group:0,tag:\"Plural\",reason:\"like-hot-cakes\"},{match:\"some #Adjective [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-reason\"},{match:\"for some [#PresentTense]\",group:0,tag:\"Noun\",reason:\"for-some-reason\"},{match:\"(same|some|the|that|a) kind of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-kind-of\"},{match:\"(same|some|the|that|a) type of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-type-of\"},{match:\"#Gerund #Adjective #Preposition [#PresentTense]\",group:0,tag:\"Noun\",reason:\"doing-better-for-x\"},{match:\"(get|got|have) #Comparative [#PresentTense]\",group:0,tag:\"Noun\",reason:\"got-better-aim\"},{match:\"whose [#PresentTense] #Copula\",group:0,tag:\"Noun\",reason:\"whos-name-was\"},{match:\"#PhrasalVerb #Particle #Preposition [#PresentTense]\",group:0,tag:\"Noun\",reason:\"given-up-on-x\"},{match:\"there (are|were) #Adjective? [#PresentTense]\",group:0,tag:\"Plural\",reason:\"there-are\"},{match:\"#Value [#PresentTense] of\",group:0,notIf:\"(one|1|#Copula|#Infinitive)\",tag:\"Plural\",reason:\"2-trains\"},{match:\"[#PresentTense] (are|were) #Adjective\",group:0,tag:\"Plural\",reason:\"compromises-are-possible\"},{match:\"^[(hope|guess|thought|think)] #Pronoun #Verb\",group:0,tag:\"Infinitive\",reason:\"suppose-i\"},{match:\"#Possessive #Adjective [#Verb]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"our-full-support\"},{match:\"[(tastes|smells)] #Adverb? #Adjective\",group:0,tag:\"PresentTense\",reason:\"tastes-good\"},{match:\"#Copula #Gerund [#PresentTense] !by?\",group:0,tag:\"Noun\",notIf:\"going\",reason:\"ignoring-commute\"},{match:\"#Determiner #Adjective? [(shed|thought|rose|bid|saw|spelt)]\",group:0,tag:\"Noun\",reason:\"noun-past\"},{match:\"how to [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"how-to-noun\"},{match:\"which [%Noun|Verb%] #Noun\",group:0,tag:\"Infinitive\",reason:\"which-boost-it\"},{match:\"#Gerund [%Plural|Verb%]\",group:0,tag:\"Plural\",reason:\"asking-questions\"},{match:\"(ready|available|difficult|hard|easy|made|attempt|try) to [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"ready-to-noun\"},{match:\"(bring|went|go|drive|run|bike) to [%Noun|Verb%]\",group:0,tag:\"Noun\",reason:\"bring-to-noun\"},{match:\"#Modal #Noun [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"would-you-look\"},{match:\"#Copula just [#Infinitive]\",group:0,tag:\"Noun\",reason:\"is-just-spam\"},{match:\"^%Noun|Verb% %Plural|Verb%\",tag:\"Imperative #Plural\",reason:\"request-copies\"},{match:\"#Adjective #Plural and [%Plural|Verb%]\",group:0,tag:\"#Plural\",reason:\"pickles-and-drinks\"},{match:\"#Determiner #Year [#Verb]\",group:0,tag:\"Noun\",reason:\"the-1968-film\"},{match:\"#Determiner [#PhrasalVerb #Particle]\",group:0,tag:\"Noun\",reason:\"the-break-up\"},{match:\"#Determiner [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",notIf:\"(#Pronoun|#Possessive|#ProperNoun)\",reason:\"the-individual-goals\"},{match:\"[%Noun|Verb%] or #Infinitive\",group:0,tag:\"Infinitive\",reason:\"work-or-prepare\"},{match:\"to #Infinitive [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Gerund|#Copula|help)\",reason:\"to-give-thanks\"},{match:\"[#Noun] me\",group:0,tag:\"Verb\",reason:\"kills-me\"},{match:\"%Plural|Verb% %Plural|Verb%\",tag:\"#PresentTense #Plural\",reason:\"removes-wrinkles\"}],[{match:\"#Money and #Money #Currency?\",tag:\"Money\",reason:\"money-and-money\"},{match:\"#Value #Currency [and] #Value (cents|ore|centavos|sens)\",group:0,tag:\"money\",reason:\"and-5-cents\"},{match:\"#Value (mark|rand|won|rub|ore)\",tag:\"#Money #Currency\",reason:\"4-mark\"},{match:\"a pound\",tag:\"#Money #Unit\",reason:\"a-pound\"},{match:\"#Value (pound|pounds)\",tag:\"#Money #Unit\",reason:\"4-pounds\"}],[{match:\"[(half|quarter)] of? (a|an)\",group:0,tag:\"Fraction\",reason:\"millionth\"},{match:\"#Adverb [half]\",group:0,tag:\"Fraction\",reason:\"nearly-half\"},{match:\"[half] the\",group:0,tag:\"Fraction\",reason:\"half-the\"},{match:\"#Cardinal and a half\",tag:\"Fraction\",reason:\"and-a-half\"},{match:\"#Value (halves|halfs|quarters)\",tag:\"Fraction\",reason:\"two-halves\"},{match:\"a #Ordinal\",tag:\"Fraction\",reason:\"a-quarter\"},{match:\"[#Cardinal+] (#Fraction && /s$/)\",tag:\"Fraction\",reason:\"seven-fifths\"},{match:\"[#Cardinal+ #Ordinal] of .\",group:0,tag:\"Fraction\",reason:\"ordinal-of\"},{match:\"[(#NumericValue && #Ordinal)] of .\",group:0,tag:\"Fraction\",reason:\"num-ordinal-of\"},{match:\"(a|one) #Cardinal?+ #Ordinal\",tag:\"Fraction\",reason:\"a-ordinal\"},{match:\"#Cardinal+ out? of every? #Cardinal\",tag:\"Fraction\",reason:\"out-of\"}],[{match:\"#Cardinal [second]\",tag:\"Unit\",reason:\"one-second\"},{match:\"!once? [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)\",group:0,tag:\"Value\",reason:\"a-is-one\"},{match:\"1 #Value #PhoneNumber\",tag:\"PhoneNumber\",reason:\"1-800-Value\"},{match:\"#NumericValue #PhoneNumber\",tag:\"PhoneNumber\",reason:\"(800) PhoneNumber\"},{match:\"#Demonym #Currency\",tag:\"Currency\",reason:\"demonym-currency\"},{match:\"#Value [(buck|bucks|grand)]\",group:0,tag:\"Currency\",reason:\"value-bucks\"},{match:\"[#Value+] #Currency\",group:0,tag:\"Money\",reason:\"15 usd\"},{match:\"[second] #Noun\",group:0,tag:\"Ordinal\",reason:\"second-noun\"},{match:\"#Value+ [#Currency]\",group:0,tag:\"Unit\",reason:\"5-yan\"},{match:\"#Value [(foot|feet)]\",group:0,tag:\"Unit\",reason:\"foot-unit\"},{match:\"#Value [#Abbreviation]\",group:0,tag:\"Unit\",reason:\"value-abbr\"},{match:\"#Value [k]\",group:0,tag:\"Unit\",reason:\"value-k\"},{match:\"#Unit an hour\",tag:\"Unit\",reason:\"unit-an-hour\"},{match:\"(minus|negative) #Value\",tag:\"Value\",reason:\"minus-value\"},{match:\"#Value (point|decimal) #Value\",tag:\"Value\",reason:\"value-point-value\"},{match:\"#Determiner [(half|quarter)] #Ordinal\",group:0,tag:\"Value\",reason:\"half-ordinal\"},{match:\"#Multiple+ and #Value\",tag:\"Value\",reason:\"magnitude-and-value\"},{match:\"#Value #Unit [(per|an) (hr|hour|sec|second|min|minute)]\",group:0,tag:\"Unit\",reason:\"12-miles-per-second\"},{match:\"#Value [(square|cubic)] #Unit\",group:0,tag:\"Unit\",reason:\"square-miles\"}],[{match:\"#Copula [(#Noun|#PresentTense)] #LastName\",group:0,tag:\"FirstName\",reason:\"copula-noun-lastname\"},{match:\"(sister|pope|brother|father|aunt|uncle|grandpa|grandfather|grandma) #ProperNoun\",tag:\"Person\",reason:\"lady-titlecase\",safe:!0},{match:\"#FirstName [#Determiner #Noun] #LastName\",group:0,tag:\"Person\",reason:\"first-noun-last\"},{match:\"#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun\",tag:\"Person\",reason:\"titlecase-acronym-titlecase\",safe:!0},{match:\"#Acronym #LastName\",tag:\"Person\",reason:\"acronym-lastname\",safe:!0},{match:\"#Person (jr|sr|md)\",tag:\"Person\",reason:\"person-honorific\"},{match:\"#Honorific #Acronym\",tag:\"Person\",reason:\"Honorific-TitleCase\"},{match:\"#Person #Person the? #RomanNumeral\",tag:\"Person\",reason:\"roman-numeral\"},{match:\"#FirstName [/^[^aiurck]$/]\",group:0,tag:[\"Acronym\",\"Person\"],reason:\"john-e\"},{match:\"#Noun van der? #Noun\",tag:\"Person\",reason:\"van der noun\",safe:!0},{match:\"(king|queen|prince|saint|lady) of #Noun\",tag:\"Person\",reason:\"king-of-noun\",safe:!0},{match:\"(prince|lady) #Place\",tag:\"Person\",reason:\"lady-place\"},{match:\"(king|queen|prince|saint) #ProperNoun\",tag:\"Person\",notIf:\"#Place\",reason:\"saint-foo\"},{match:\"al (#Person|#ProperNoun)\",tag:\"Person\",reason:\"al-borlen\",safe:!0},{match:\"#FirstName de #Noun\",tag:\"Person\",reason:\"bill-de-noun\"},{match:\"#FirstName (bin|al) #Noun\",tag:\"Person\",reason:\"bill-al-noun\"},{match:\"#FirstName #Acronym #ProperNoun\",tag:\"Person\",reason:\"bill-acronym-title\"},{match:\"#FirstName #FirstName #ProperNoun\",tag:\"Person\",reason:\"bill-firstname-title\"},{match:\"#Honorific #FirstName? #ProperNoun\",tag:\"Person\",reason:\"dr-john-Title\"},{match:\"#FirstName the #Adjective\",tag:\"Person\",reason:\"name-the-great\"},{match:\"#ProperNoun (van|al|bin) #ProperNoun\",tag:\"Person\",reason:\"title-van-title\",safe:!0},{match:\"#ProperNoun (de|du) la? #ProperNoun\",tag:\"Person\",notIf:\"#Place\",reason:\"title-de-title\"},{match:\"#Singular #Acronym #LastName\",tag:\"#FirstName #Person .\",reason:\"title-acro-noun\",safe:!0},{match:\"[#ProperNoun] #Person\",group:0,tag:\"Person\",reason:\"proper-person\",safe:!0},{match:\"#Person [#ProperNoun #ProperNoun]\",group:0,tag:\"Person\",notIf:\"#Possessive\",reason:\"three-name-person\",safe:!0},{match:\"#FirstName #Acronym? [#ProperNoun]\",group:0,tag:\"LastName\",notIf:\"#Possessive\",reason:\"firstname-titlecase\"},{match:\"#FirstName [#FirstName]\",group:0,tag:\"LastName\",reason:\"firstname-firstname\"},{match:\"#FirstName #Acronym #Noun\",tag:\"Person\",reason:\"n-acro-noun\",safe:!0},{match:\"#FirstName [(de|di|du|van|von)] #Person\",group:0,tag:\"LastName\",reason:\"de-firstname\"},{match:\"[(lieutenant|corporal|sergeant|captain|qeen|king|admiral|major|colonel|marshal|president|queen|king)+] #ProperNoun\",group:0,tag:\"Honorific\",reason:\"seargeant-john\"},{match:\"[(private|general|major|rear|prime|field|count|miss)] #Honorific? #Person\",group:0,tag:[\"Honorific\",\"Person\"],reason:\"ambg-honorifics\"},{match:\"#Honorific #FirstName [#Singular]\",group:0,tag:\"LastName\",notIf:\"#Possessive\",reason:\"dr-john-foo\",safe:!0},{match:\"[(his|her) (majesty|honour|worship|excellency|honorable)] #Person\",group:0,tag:\"Honorific\",reason:\"his-excellency\"},{match:\"#Honorific #Actor\",tag:\"Honorific\",reason:\"Lieutenant colonel\"},{match:\"(first|second|third|1st|2nd|3rd) #Actor\",tag:\"Honorific\",reason:\"first lady\"},{match:\"#Person #RomanNumeral\",tag:\"Person\",reason:\"louis-IV\"}],[{match:\"#FirstName #Noun$\",tag:\". #LastName\",notIf:\"(#Possessive|#Organization|#Place|#Pronoun|@hasTitleCase)\",reason:\"firstname-noun\"},{match:\"%Person|Date% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"jan-thierson\"},{match:\"%Person|Noun% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"switch-person\",safe:!0},{match:\"%Person|Noun% #Organization\",tag:\"Organization\",reason:\"olive-garden\"},{match:\"%Person|Verb% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"verb-propernoun\",ifNo:\"#Actor\"},{match:\"[%Person|Verb%] (will|had|has|said|says|told|did|learned|wants|wanted)\",group:0,tag:\"Person\",reason:\"person-said\"},{match:\"[%Person|Place%] (harbor|harbour|pier|town|city|place|dump|landfill)\",group:0,tag:\"Place\",reason:\"sydney-harbour\"},{match:\"(west|east|north|south) [%Person|Place%]\",group:0,tag:\"Place\",reason:\"east-sydney\"},{match:\"#Modal [%Person|Verb%]\",group:0,tag:\"Verb\",reason:\"would-mark\"},{match:\"#Adverb [%Person|Verb%]\",group:0,tag:\"Verb\",reason:\"really-mark\"},{match:\"[%Person|Verb%] (#Adverb|#Comparative)\",group:0,tag:\"Verb\",reason:\"drew-closer\"},{match:\"%Person|Verb% #Person\",tag:\"Person\",reason:\"rob-smith\"},{match:\"%Person|Verb% #Acronym #ProperNoun\",tag:\"Person\",reason:\"rob-a-smith\"},{match:\"[will] #Verb\",group:0,tag:\"Modal\",reason:\"will-verb\"},{match:\"(will && @isTitleCase) #ProperNoun\",tag:\"Person\",reason:\"will-name\"},{match:\"(#FirstName && !#Possessive) [#Singular] #Verb\",group:0,safe:!0,tag:\"LastName\",reason:\"jack-layton\"},{match:\"^[#Singular] #Person #Verb\",group:0,safe:!0,tag:\"Person\",reason:\"sherwood-anderson\"},{match:\"(a|an) [#Person]$\",group:0,unTag:\"Person\",reason:\"a-warhol\"}],[{match:\"#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)\",tag:\"#Copula #Adverb #Adjective\",reason:\"sometimes-adverb\"},{match:\"(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense\",group:0,tag:\"Modal\",reason:\"i-better\"},{match:\"(#Modal|i|they|we|do) not? [like]\",group:0,tag:\"PresentTense\",reason:\"modal-like\"},{match:\"#Noun #Adverb? [left]\",group:0,tag:\"PastTense\",reason:\"left-verb\"},{match:\"will #Adverb? not? #Adverb? [be] #Gerund\",group:0,tag:\"Copula\",reason:\"will-be-copula\"},{match:\"will #Adverb? not? #Adverb? [be] #Adjective\",group:0,tag:\"Copula\",reason:\"be-copula\"},{match:\"[march] (up|down|back|toward)\",notIf:\"#Date\",group:0,tag:\"Infinitive\",reason:\"march-to\"},{match:\"#Modal [march]\",group:0,tag:\"Infinitive\",reason:\"must-march\"},{match:\"[may] be\",group:0,tag:\"Verb\",reason:\"may-be\"},{match:\"[(subject|subjects|subjected)] to\",group:0,tag:\"Verb\",reason:\"subject to\"},{match:\"[home] to\",group:0,tag:\"PresentTense\",reason:\"home to\"},{match:\"[open] #Determiner\",group:0,tag:\"Infinitive\",reason:\"open-the\"},{match:\"(were|was) being [#PresentTense]\",group:0,tag:\"PastTense\",reason:\"was-being\"},{match:\"(had|has|have) [been /en$/]\",group:0,tag:\"Auxiliary Participle\",reason:\"had-been-broken\"},{match:\"(had|has|have) [been /ed$/]\",group:0,tag:\"Auxiliary PastTense\",reason:\"had-been-smoked\"},{match:\"(had|has) #Adverb? [been] #Adverb? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"had-been-adj\"},{match:\"(had|has) to [#Noun] (#Determiner|#Possessive)\",group:0,tag:\"Infinitive\",reason:\"had-to-noun\"},{match:\"have [#PresentTense]\",group:0,tag:\"PastTense\",notIf:\"(come|gotten)\",reason:\"have-read\"},{match:\"(does|will|#Modal) that [work]\",group:0,tag:\"PastTense\",reason:\"does-that-work\"},{match:\"[(sound|sounds)] #Adjective\",group:0,tag:\"PresentTense\",reason:\"sounds-fun\"},{match:\"[(look|looks)] #Adjective\",group:0,tag:\"PresentTense\",reason:\"looks-good\"},{match:\"[(start|starts|stop|stops|begin|begins)] #Gerund\",group:0,tag:\"Verb\",reason:\"starts-thinking\"},{match:\"(have|had) read\",tag:\"Modal #PastTense\",reason:\"read-read\"},{match:\"(is|was|were) [(under|over) #PastTense]\",group:0,tag:\"Adverb Adjective\",reason:\"was-under-cooked\"},{match:\"[shit] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear1-verb\"},{match:\"[damn] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear2-verb\"},{match:\"[fuck] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear3-verb\"},{match:\"#Plural that %Noun|Verb%\",tag:\". #Preposition #Infinitive\",reason:\"jobs-that-work\"},{match:\"[works] for me\",group:0,tag:\"PresentTense\",reason:\"works-for-me\"},{match:\"as #Pronoun [please]\",group:0,tag:\"Infinitive\",reason:\"as-we-please\"},{match:\"[(co|mis|de|inter|intra|pre|re|un|out|under|over|counter)] #Verb\",group:0,tag:[\"Verb\",\"Prefix\"],notIf:\"(#Copula|#PhrasalVerb)\",reason:\"co-write\"},{match:\"#PastTense and [%Adj|Past%]\",group:0,tag:\"PastTense\",reason:\"dressed-and-left\"},{match:\"[%Adj|Past%] and #PastTense\",group:0,tag:\"PastTense\",reason:\"dressed-and-left\"},{match:\"#Copula #Pronoun [%Adj|Past%]\",group:0,tag:\"Adjective\",reason:\"is-he-stoked\"},{match:\"to [%Noun|Verb%] #Preposition\",group:0,tag:\"Infinitive\",reason:\"to-dream-of\"}],[{match:\"(slowly|quickly) [#Adjective]\",group:0,tag:\"Verb\",reason:\"slowly-adj\"},{match:\"does (#Adverb|not)? [#Adjective]\",group:0,tag:\"PresentTense\",reason:\"does-mean\"},{match:\"[(fine|okay|cool|ok)] by me\",group:0,tag:\"Adjective\",reason:\"okay-by-me\"},{match:\"i (#Adverb|do)? not? [mean]\",group:0,tag:\"PresentTense\",reason:\"i-mean\"},{match:\"will #Adjective\",tag:\"Auxiliary Infinitive\",reason:\"will-adj\"},{match:\"#Pronoun [#Adjective] #Determiner #Adjective? #Noun\",group:0,tag:\"Verb\",reason:\"he-adj-the\"},{match:\"#Copula [%Adj|Present%] to #Verb\",group:0,tag:\"Verb\",reason:\"adj-to\"},{match:\"#Copula [#Adjective] (well|badly|quickly|slowly)\",group:0,tag:\"Verb\",reason:\"done-well\"},{match:\"#Adjective and [#Gerund] !#Preposition?\",group:0,tag:\"Adjective\",reason:\"rude-and-x\"},{match:\"#Copula #Adverb? (over|under) [#PastTense]\",group:0,tag:\"Adjective\",reason:\"over-cooked\"},{match:\"#Copula #Adjective+ (and|or) [#PastTense]$\",group:0,tag:\"Adjective\",reason:\"bland-and-overcooked\"},{match:\"got #Adverb? [#PastTense] of\",group:0,tag:\"Adjective\",reason:\"got-tired-of\"},{match:\"(seem|seems|seemed|appear|appeared|appears|feel|feels|felt|sound|sounds|sounded) (#Adverb|#Adjective)? [#PastTense]\",group:0,tag:\"Adjective\",reason:\"felt-loved\"},{match:\"(seem|feel|seemed|felt) [#PastTense #Particle?]\",group:0,tag:\"Adjective\",reason:\"seem-confused\"},{match:\"a (bit|little|tad) [#PastTense #Particle?]\",group:0,tag:\"Adjective\",reason:\"a-bit-confused\"},{match:\"not be [%Adj|Past% #Particle?]\",group:0,tag:\"Adjective\",reason:\"do-not-be-confused\"},{match:\"#Copula just [%Adj|Past% #Particle?]\",group:0,tag:\"Adjective\",reason:\"is-just-right\"},{match:\"as [#Infinitive] as\",group:0,tag:\"Adjective\",reason:\"as-pale-as\"},{match:\"[%Adj|Past%] and #Adjective\",group:0,tag:\"Adjective\",reason:\"faled-and-oppressive\"},{match:\"or [#PastTense] #Noun\",group:0,tag:\"Adjective\",notIf:\"(#Copula|#Pronoun)\",reason:\"or-heightened-emotion\"},{match:\"(become|became|becoming|becomes) [#Verb]\",group:0,tag:\"Adjective\",reason:\"become-verb\"},{match:\"#Possessive [#PastTense] #Noun\",group:0,tag:\"Adjective\",reason:\"declared-intentions\"},{match:\"#Copula #Pronoun [%Adj|Present%]\",group:0,tag:\"Adjective\",reason:\"is-he-cool\"},{match:\"#Copula [%Adj|Past%] with\",group:0,tag:\"Adjective\",notIf:\"(associated|worn|baked|aged|armed|bound|fried|loaded|mixed|packed|pumped|filled|sealed)\",reason:\"is-crowded-with\"},{match:\"#Copula #Adverb? [%Adj|Present%]$\",group:0,tag:\"Adjective\",reason:\"was-empty$\"}],[{match:\"will (#Adverb|not)+? [have] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"will-have-vb\"},{match:\"[#Copula] (#Adverb|not)+? (#Gerund|#PastTense)\",group:0,tag:\"Auxiliary\",reason:\"copula-walking\"},{match:\"[(#Modal|did)+] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"modal-verb\"},{match:\"#Modal (#Adverb|not)+? [have] (#Adverb|not)+? [had] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"would-have\"},{match:\"[(has|had)] (#Adverb|not)+? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"had-walked\"},{match:\"[(do|does|did|will|have|had|has|got)] (not|#Adverb)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"have-had\"},{match:\"[about to] #Adverb? #Verb\",group:0,tag:[\"Auxiliary\",\"Verb\"],reason:\"about-to\"},{match:\"#Modal (#Adverb|not)+? [be] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"would-be\"},{match:\"[(#Modal|had|has)] (#Adverb|not)+? [been] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"had-been\"},{match:\"[(be|being|been)] #Participle\",group:0,tag:\"Auxiliary\",reason:\"being-driven\"},{match:\"[may] #Adverb? #Infinitive\",group:0,tag:\"Auxiliary\",reason:\"may-want\"},{match:\"#Copula (#Adverb|not)+? [(be|being|been)] #Adverb+? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"being-walked\"},{match:\"will [be] #PastTense\",group:0,tag:\"Auxiliary\",reason:\"will-be-x\"},{match:\"[(be|been)] (#Adverb|not)+? #Gerund\",group:0,tag:\"Auxiliary\",reason:\"been-walking\"},{match:\"[used to] #PresentTense\",group:0,tag:\"Auxiliary\",reason:\"used-to-walk\"},{match:\"#Copula (#Adverb|not)+? [going to] #Adverb+? #PresentTense\",group:0,tag:\"Auxiliary\",reason:\"going-to-walk\"},{match:\"#Imperative [(me|him|her)]\",group:0,tag:\"Reflexive\",reason:\"tell-him\"},{match:\"(is|was) #Adverb? [no]\",group:0,tag:\"Negative\",reason:\"is-no\"},{match:\"[(been|had|became|came)] #PastTense\",group:0,notIf:\"#PhrasalVerb\",tag:\"Auxiliary\",reason:\"been-told\"},{match:\"[(being|having|getting)] #Verb\",group:0,tag:\"Auxiliary\",reason:\"being-born\"},{match:\"[be] #Gerund\",group:0,tag:\"Auxiliary\",reason:\"be-walking\"},{match:\"[better] #PresentTense\",group:0,tag:\"Modal\",notIf:\"(#Copula|#Gerund)\",reason:\"better-go\"},{match:\"even better\",tag:\"Adverb #Comparative\",reason:\"even-better\"}],[{match:\"(#Verb && @hasHyphen) up\",tag:\"PhrasalVerb\",reason:\"foo-up\"},{match:\"(#Verb && @hasHyphen) off\",tag:\"PhrasalVerb\",reason:\"foo-off\"},{match:\"(#Verb && @hasHyphen) over\",tag:\"PhrasalVerb\",reason:\"foo-over\"},{match:\"(#Verb && @hasHyphen) out\",tag:\"PhrasalVerb\",reason:\"foo-out\"},{match:\"[#Verb (in|out|up|down|off|back)] (on|in)\",notIf:\"#Copula\",tag:\"PhrasalVerb Particle\",reason:\"walk-in-on\"},{match:\"(lived|went|crept|go) [on] for\",group:0,tag:\"PhrasalVerb\",reason:\"went-on\"},{match:\"#Verb (up|down|in|on|for)$\",tag:\"PhrasalVerb #Particle\",notIf:\"#PhrasalVerb\",reason:\"come-down$\"},{match:\"help [(stop|end|make|start)]\",group:0,tag:\"Infinitive\",reason:\"help-stop\"},{match:\"#PhrasalVerb (in && #Particle) #Determiner\",tag:\"#Verb #Preposition #Determiner\",unTag:\"PhrasalVerb\",reason:\"work-in-the\"},{match:\"[(stop|start|finish|help)] #Gerund\",group:0,tag:\"Infinitive\",reason:\"start-listening\"},{match:\"#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]\",group:0,tag:\"Adverb\",reason:\"phrasal-pronoun-advb\"}],[{match:\"^do not? [#Infinitive #Particle?]\",notIf:zl,group:0,tag:\"Imperative\",reason:\"do-eat\"},{match:\"^please do? not? [#Infinitive #Particle?]\",group:0,tag:\"Imperative\",reason:\"please-go\"},{match:\"^just do? not? [#Infinitive #Particle?]\",group:0,tag:\"Imperative\",reason:\"just-go\"},{match:\"^[#Infinitive] it #Comparative\",notIf:zl,group:0,tag:\"Imperative\",reason:\"do-it-better\"},{match:\"^[#Infinitive] it (please|now|again|plz)\",notIf:zl,group:0,tag:\"Imperative\",reason:\"do-it-please\"},{match:\"^[#Infinitive] (#Adjective|#Adverb)$\",group:0,tag:\"Imperative\",notIf:\"(so|such|rather|enough)\",reason:\"go-quickly\"},{match:\"^[#Infinitive] (up|down|over) #Determiner\",group:0,tag:\"Imperative\",reason:\"turn-down\"},{match:\"^[#Infinitive] (your|my|the|a|an|any|each|every|some|more|with|on)\",group:0,notIf:\"like\",tag:\"Imperative\",reason:\"eat-my-shorts\"},{match:\"^[#Infinitive] (him|her|it|us|me|there)\",group:0,tag:\"Imperative\",reason:\"tell-him\"},{match:\"^[#Infinitive] #Adjective #Noun$\",group:0,tag:\"Imperative\",reason:\"avoid-loud-noises\"},{match:\"^[#Infinitive] (#Adjective|#Adverb)? and #Infinitive\",group:0,tag:\"Imperative\",reason:\"call-and-reserve\"},{match:\"^(go|stop|wait|hurry) please?$\",tag:\"Imperative\",reason:\"go\"},{match:\"^(somebody|everybody) [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"somebody-call\"},{match:\"^let (us|me) [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"lets-leave\"},{match:\"^[(shut|close|open|start|stop|end|keep)] #Determiner #Noun\",group:0,tag:\"Imperative\",reason:\"shut-the-door\"},{match:\"^[#PhrasalVerb #Particle] #Determiner #Noun\",group:0,tag:\"Imperative\",reason:\"turn-off-the-light\"},{match:\"^[go] to .\",group:0,tag:\"Imperative\",reason:\"go-to-toronto\"},{match:\"^#Modal you [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"would-you-\"},{match:\"^never [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"never-stop\"},{match:\"^come #Infinitive\",tag:\"Imperative\",notIf:\"on\",reason:\"come-have\"},{match:\"^come and? #Infinitive\",tag:\"Imperative . Imperative\",notIf:\"#PhrasalVerb\",reason:\"come-and-have\"},{match:\"^stay (out|away|back)\",tag:\"Imperative\",reason:\"stay-away\"},{match:\"^[(stay|be|keep)] #Adjective\",group:0,tag:\"Imperative\",reason:\"stay-cool\"},{match:\"^[keep it] #Adjective\",group:0,tag:\"Imperative\",reason:\"keep-it-cool\"},{match:\"^do not [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"do-not-be\"},{match:\"[#Infinitive] (yourself|yourselves)\",group:0,tag:\"Imperative\",reason:\"allow-yourself\"},{match:\"[#Infinitive] what .\",group:0,tag:\"Imperative\",reason:\"look-what\"},{match:\"^[#Infinitive] #Gerund\",group:0,tag:\"Imperative\",reason:\"keep-playing\"},{match:\"^[#Infinitive] (to|for|into|toward|here|there)\",group:0,tag:\"Imperative\",reason:\"go-to\"},{match:\"^[#Infinitive] (and|or) #Infinitive\",group:0,tag:\"Imperative\",reason:\"inf-and-inf\"},{match:\"^[%Noun|Verb%] to\",group:0,tag:\"Imperative\",reason:\"commit-to\"},{match:\"^[#Infinitive] #Adjective? #Singular #Singular\",group:0,tag:\"Imperative\",reason:\"maintain-eye-contact\"},{match:\"do not (forget|omit|neglect) to [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"do-not-forget\"},{match:\"^[(ask|wear|pay|look|help|show|watch|act|fix|kill|stop|start|turn|try|win)] #Noun\",group:0,tag:\"Imperative\",reason:\"pay-attention\"}],[{match:\"(that|which) were [%Adj|Gerund%]\",group:0,tag:\"Gerund\",reason:\"that-were-growing\"},{match:\"#Gerund [#Gerund] #Plural\",group:0,tag:\"Adjective\",reason:\"hard-working-fam\"}],[{match:\"u r\",tag:\"#Pronoun #Copula\",reason:\"u r\"},{match:\"#Noun [(who|whom)]\",group:0,tag:\"Determiner\",reason:\"captain-who\"},{match:\"[had] #Noun+ #PastTense\",group:0,tag:\"Condition\",reason:\"had-he\"},{match:\"[were] #Noun+ to #Infinitive\",group:0,tag:\"Condition\",reason:\"were-he\"},{match:\"some sort of\",tag:\"Adjective Noun Conjunction\",reason:\"some-sort-of\"},{match:\"of some sort\",tag:\"Conjunction Adjective Noun\",reason:\"of-some-sort\"},{match:\"[such] (a|an|is)? #Noun\",group:0,tag:\"Determiner\",reason:\"such-skill\"},{match:\"[right] (before|after|in|into|to|toward)\",group:0,tag:\"#Adverb\",reason:\"right-into\"},{match:\"#Preposition [about]\",group:0,tag:\"Adjective\",reason:\"at-about\"},{match:\"(are|#Modal|see|do|for) [ya]\",group:0,tag:\"Pronoun\",reason:\"are-ya\"},{match:\"[long live] .\",group:0,tag:\"#Adjective #Infinitive\",reason:\"long-live\"},{match:\"[plenty] of\",group:0,tag:\"#Uncountable\",reason:\"plenty-of\"},{match:\"(always|nearly|barely|practically) [there]\",group:0,tag:\"Adjective\",reason:\"always-there\"},{match:\"[there] (#Adverb|#Pronoun)? #Copula\",group:0,tag:\"There\",reason:\"there-is\"},{match:\"#Copula [there] .\",group:0,tag:\"There\",reason:\"is-there\"},{match:\"#Modal #Adverb? [there]\",group:0,tag:\"There\",reason:\"should-there\"},{match:\"^[do] (you|we|they)\",group:0,tag:\"QuestionWord\",reason:\"do-you\"},{match:\"^[does] (he|she|it|#ProperNoun)\",group:0,tag:\"QuestionWord\",reason:\"does-he\"},{match:\"#Determiner #Noun+ [who] #Verb\",group:0,tag:\"Preposition\",reason:\"the-x-who\"},{match:\"#Determiner #Noun+ [which] #Verb\",group:0,tag:\"Preposition\",reason:\"the-x-which\"},{match:\"a [while]\",group:0,tag:\"Noun\",reason:\"a-while\"},{match:\"guess who\",tag:\"#Infinitive #QuestionWord\",reason:\"guess-who\"},{match:\"[fucking] !#Verb\",group:0,tag:\"#Gerund\",reason:\"f-as-gerund\"}],[{match:\"university of #Place\",tag:\"Organization\",reason:\"university-of-Foo\"},{match:\"#Noun (&|n) #Noun\",tag:\"Organization\",reason:\"Noun-&-Noun\"},{match:\"#Organization of the? #ProperNoun\",tag:\"Organization\",reason:\"org-of-place\",safe:!0},{match:\"#Organization #Country\",tag:\"Organization\",reason:\"org-country\"},{match:\"#ProperNoun #Organization\",tag:\"Organization\",notIf:\"#FirstName\",reason:\"titlecase-org\"},{match:\"#ProperNoun (ltd|co|inc|dept|assn|bros)\",tag:\"Organization\",reason:\"org-abbrv\"},{match:\"the [#Acronym]\",group:0,tag:\"Organization\",reason:\"the-acronym\",safe:!0},{match:\"government of the? [#Place+]\",tag:\"Organization\",reason:\"government-of-x\"},{match:\"(health|school|commerce) board\",tag:\"Organization\",reason:\"school-board\"},{match:\"(nominating|special|conference|executive|steering|central|congressional) committee\",tag:\"Organization\",reason:\"special-comittee\"},{match:\"(world|global|international|national|#Demonym) #Organization\",tag:\"Organization\",reason:\"global-org\"},{match:\"#Noun+ (public|private) school\",tag:\"School\",reason:\"noun-public-school\"},{match:\"#Place+ #SportsTeam\",tag:\"SportsTeam\",reason:\"place-sportsteam\"},{match:\"(dc|atlanta|minnesota|manchester|newcastle|sheffield) united\",tag:\"SportsTeam\",reason:\"united-sportsteam\"},{match:\"#Place+ fc\",tag:\"SportsTeam\",reason:\"fc-sportsteam\"},{match:\"#Place+ #Noun{0,2} (club|society|group|team|committee|commission|association|guild|crew)\",tag:\"Organization\",reason:\"place-noun-society\"}],[{match:\"(west|north|south|east|western|northern|southern|eastern)+ #Place\",tag:\"Region\",reason:\"west-norfolk\"},{match:\"#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]\",group:0,tag:\"Region\",reason:\"us-state\"},{match:\"portland [or]\",group:0,tag:\"Region\",reason:\"portland-or\"},{match:\"#ProperNoun+ (cliff|place|range|pit|place|point|room|grounds|ruins)\",tag:\"Place\",reason:\"foo-point\"},{match:\"in [#ProperNoun] #Place\",group:0,tag:\"Place\",reason:\"propernoun-place\"},{match:\"#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)\",tag:\"Address\",reason:\"address-st\"},{match:\"(port|mount|mt) #ProperName\",tag:\"Place\",reason:\"port-name\"}],[{match:\"[so] #Noun\",group:0,tag:\"Conjunction\",reason:\"so-conj\"},{match:\"[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)\",group:0,tag:\"Conjunction\",reason:\"how-he-is-x\"},{match:\"#Copula [(who|what|where|why|how|when)] #Noun\",group:0,tag:\"Conjunction\",reason:\"when-he\"},{match:\"#Verb [that] #Pronoun\",group:0,tag:\"Conjunction\",reason:\"said-that-he\"},{match:\"#Noun [that] #Copula\",group:0,tag:\"Conjunction\",reason:\"that-are\"},{match:\"#Noun [that] #Verb #Adjective\",group:0,tag:\"Conjunction\",reason:\"that-seem\"},{match:\"#Noun #Copula not? [that] #Adjective\",group:0,tag:\"Adverb\",reason:\"that-adj\"},{match:\"#Verb #Adverb? #Noun [(that|which)]\",group:0,tag:\"Preposition\",reason:\"that-prep\"},{match:\"@hasComma [which] (#Pronoun|#Verb)\",group:0,tag:\"Preposition\",reason:\"which-copula\"},{match:\"#Noun [like] #Noun\",group:0,tag:\"Preposition\",reason:\"noun-like\"},{match:\"^[like] #Determiner\",group:0,tag:\"Preposition\",reason:\"like-the\"},{match:\"a #Noun [like] (#Noun|#Determiner)\",group:0,tag:\"Preposition\",reason:\"a-noun-like\"},{match:\"#Adverb [like]\",group:0,tag:\"Verb\",reason:\"really-like\"},{match:\"(not|nothing|never) [like]\",group:0,tag:\"Preposition\",reason:\"nothing-like\"},{match:\"#Infinitive #Pronoun [like]\",group:0,tag:\"Preposition\",reason:\"treat-them-like\"},{match:\"[#QuestionWord] (#Pronoun|#Determiner)\",group:0,tag:\"Preposition\",reason:\"how-he\"},{match:\"[#QuestionWord] #Participle\",group:0,tag:\"Preposition\",reason:\"when-stolen\"},{match:\"[how] (#Determiner|#Copula|#Modal|#PastTense)\",group:0,tag:\"QuestionWord\",reason:\"how-is\"},{match:\"#Plural [(who|which|when)] .\",group:0,tag:\"Preposition\",reason:\"people-who\"}],[{match:\"holy (shit|fuck|hell)\",tag:\"Expression\",reason:\"swears-expression\"},{match:\"^[(well|so|okay|now)] !#Adjective?\",group:0,tag:\"Expression\",reason:\"well-\"},{match:\"^come on\",tag:\"Expression\",reason:\"come-on\"},{match:\"(say|says|said) [sorry]\",group:0,tag:\"Expression\",reason:\"say-sorry\"},{match:\"^(ok|alright|shoot|hell|anyways)\",tag:\"Expression\",reason:\"ok-\"},{match:\"^(say && @hasComma)\",tag:\"Expression\",reason:\"say-\"},{match:\"^(like && @hasComma)\",tag:\"Expression\",reason:\"like-\"},{match:\"^[(dude|man|girl)] #Pronoun\",group:0,tag:\"Expression\",reason:\"dude-i\"}]);let Bl=null;var Sl={postTagger:function(e){const{world:t}=e,{model:n,methods:a}=t;Bl=Bl||a.one.buildNet(n.two.matches,t);const r=a.two.quickSplit(e.document).map((e=>{const t=e[0];return[t.index[0],t.index[1],t.index[1]+e.length]})),o=e.update(r);return o.cache(),o.sweep(Bl),e.uncache(),e.unfreeze(),e},tagger:e=>e.compute([\"freeze\",\"lexicon\",\"preTagger\",\"postTagger\",\"unfreeze\"])};const Kl={api:function(e){e.prototype.confidence=function(){let e=0,t=0;return this.docs.forEach((n=>{n.forEach((n=>{t+=1,e+=n.confidence||1}))})),0===t?1:(e=>Math.round(100*e)/100)(e/t)},e.prototype.tagger=function(){return this.compute([\"tagger\"])}},compute:Sl,model:{two:{matches:Vl}},hooks:[\"postTagger\"]},$l=function(e,t){const n=function(e){return Object.keys(e.hooks).filter((e=>!e.startsWith(\"#\")&&!e.startsWith(\"%\")))}(t);if(0===n.length)return e;e._cache||e.cache();const a=e._cache;return e.filter(((e,t)=>n.some((e=>a[t].has(e)))))};var Ll={lib:{lazy:function(e,t){let n=t;\"string\"==typeof t&&(n=this.buildNet([{match:t}]));const a=this.tokenize(e),r=$l(a,n);return r.found?(r.compute([\"index\",\"tagger\"]),r.match(t)):a.none()}}};const Ml=function(e,t,n){let a=e.split(/ /g).map((e=>e.toLowerCase().trim()));a=a.filter((e=>e)),a=a.map((e=>`{${e}}`)).join(\" \");let r=this.match(a);return n&&(r=r.if(n)),r.has(\"#Verb\")?function(e,t){let n=t;return e.forEach((e=>{e.has(\"#Infinitive\")||(n=function(e,t){const n=(0,e.methods.two.transform.verb.conjugate)(t,e.model);return e.has(\"#Gerund\")?n.Gerund:e.has(\"#PastTense\")?n.PastTense:e.has(\"#PresentTense\")?n.PresentTense:e.has(\"#Gerund\")?n.Gerund:t}(e,t)),e.replaceWith(n)})),e}(r,t):r.has(\"#Noun\")?function(e,t){let n=t;e.has(\"#Plural\")&&(n=(0,e.methods.two.transform.noun.toPlural)(t,e.model));e.replaceWith(n,{possessives:!0})}(r,t):r.has(\"#Adverb\")?function(e,t){const{toAdverb:n}=e.methods.two.transform.adjective,a=n(t);a&&e.replaceWith(a)}(r,t):r.has(\"#Adjective\")?function(e,t){const{toComparative:n,toSuperlative:a}=e.methods.two.transform.adjective;let r=t;e.has(\"#Comparative\")?r=n(r,e.model):e.has(\"#Superlative\")&&(r=a(r,e.model)),r&&e.replaceWith(r)}(r,t):this};var Jl={api:function(e){e.prototype.swap=Ml}};return d.plugin(cl),d.plugin(Fl),d.plugin(Kl),d.plugin(Ll),d.plugin(Jl),d}));\n"
  },
  {
    "path": "builds/two/compromise-two.mjs",
    "content": "var e={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const t={compute:function(e){const{world:t}=this,n=t.compute;return\"string\"==typeof e&&n.hasOwnProperty(e)?n[e](this):(e=>\"[object Array]\"===Object.prototype.toString.call(e))(e)?e.forEach((a=>{t.compute.hasOwnProperty(a)?n[a](this):console.warn(\"no compute:\",e)})):\"function\"==typeof e?e(this):console.warn(\"no compute:\",e),this}};var n={forEach:function(e){return this.fullPointer.forEach(((t,n)=>{const a=this.update([t]);e(a,n)})),this},map:function(e,t){const n=this.fullPointer.map(((t,n)=>{const a=this.update([t]),r=e(a,n);return void 0===r?this.none():r}));if(0===n.length)return t||this.update([]);if(void 0!==n[0]){if(\"string\"==typeof n[0])return n;if(\"object\"==typeof n[0]&&(null===n[0]||!n[0].isView))return n}let a=[];return n.forEach((e=>{a=a.concat(e.fullPointer)})),this.toView(a)},filter:function(e){let t=this.fullPointer;t=t.filter(((t,n)=>{const a=this.update([t]);return e(a,n)}));return this.update(t)},find:function(e){const t=this.fullPointer.find(((t,n)=>{const a=this.update([t]);return e(a,n)}));return this.update([t])},some:function(e){return this.fullPointer.some(((t,n)=>{const a=this.update([t]);return e(a,n)}))},random:function(e=1){let t=this.fullPointer,n=Math.floor(Math.random()*t.length);return n+e>this.length&&(n=this.length-e,n=n<0?0:n),t=t.slice(n,n+e),this.update(t)}};const a={termList:function(){return this.methods.one.termList(this.docs)},terms:function(e){const t=this.match(\".\");return\"number\"==typeof e?t.eq(e):t},groups:function(e){if(e||0===e)return this.update(this._groups[e]||[]);const t={};return Object.keys(this._groups).forEach((e=>{t[e]=this.update(this._groups[e])})),t},eq:function(e){let t=this.pointer;return t||(t=this.docs.map(((e,t)=>[t]))),t[e]?this.update([t[e]]):this.none()},first:function(){return this.eq(0)},last:function(){const e=this.fullPointer.length-1;return this.eq(e)},firstTerms:function(){return this.match(\"^.\")},lastTerms:function(){return this.match(\".$\")},slice:function(e,t){let n=this.pointer||this.docs.map(((e,t)=>[t]));return n=n.slice(e,t),this.update(n)},all:function(){return this.update().toView()},fullSentences:function(){const e=this.fullPointer.map((e=>[e[0]]));return this.update(e).toView()},none:function(){return this.update([])},isDoc:function(e){if(!e||!e.isView)return!1;const t=this.fullPointer,n=e.fullPointer;return!t.length!==n.length&&t.every(((e,t)=>!!n[t]&&(e[0]===n[t][0]&&e[1]===n[t][1]&&e[2]===n[t][2])))},wordCount:function(){return this.docs.reduce(((e,t)=>(e+=t.filter((e=>\"\"!==e.text)).length,e)),0)},isFull:function(){const e=this.pointer;if(!e)return!0;if(0===e.length||0!==e[0][0])return!1;let t=0,n=0;return this.document.forEach((e=>t+=e.length)),this.docs.forEach((e=>n+=e.length)),t===n},getNth:function(e){return\"number\"==typeof e?this.eq(e):\"string\"==typeof e?this.if(e):this}};a.group=a.groups,a.fullSentence=a.fullSentences,a.sentence=a.fullSentences,a.lastTerm=a.lastTerms,a.firstTerm=a.firstTerms;const r=Object.assign({},a,t,n);r.get=r.eq;class View{constructor(t,n,a={}){[[\"document\",t],[\"world\",e],[\"_groups\",a],[\"_cache\",null],[\"viewType\",\"View\"]].forEach((e=>{Object.defineProperty(this,e[0],{value:e[1],writable:!0})})),this.ptrs=n}get docs(){let t=this.document;return this.ptrs&&(t=e.methods.one.getDoc(this.ptrs,this.document)),t}get pointer(){return this.ptrs}get methods(){return this.world.methods}get model(){return this.world.model}get hooks(){return this.world.hooks}get isView(){return!0}get found(){return this.docs.length>0}get length(){return this.docs.length}get fullPointer(){const{docs:e,ptrs:t,document:n}=this,a=t||e.map(((e,t)=>[t]));return a.map((e=>{let[t,a,r,o,i]=e;return a=a||0,r=r||(n[t]||[]).length,n[t]&&n[t][a]&&(o=o||n[t][a].id,n[t][r-1]&&(i=i||n[t][r-1].id)),[t,a,r,o,i]}))}update(e){const t=new View(this.document,e);if(this._cache&&e&&e.length>0){const n=[];e.forEach(((e,t)=>{const[a,r,o]=e;(1===e.length||0===r&&this.document[a].length===o)&&(n[t]=this._cache[a])})),n.length>0&&(t._cache=n)}return t.world=this.world,t}toView(e){return new View(this.document,e||this.pointer)}fromText(e){const{methods:t}=this,n=t.one.tokenize.fromString(e,this.world),a=new View(n);return a.world=this.world,a.compute([\"normal\",\"freeze\",\"lexicon\"]),this.world.compute.preTagger&&a.compute(\"preTagger\"),a.compute(\"unfreeze\"),a}clone(){let e=this.document.slice(0);e=e.map((e=>e.map((e=>((e=Object.assign({},e)).tags=new Set(e.tags),e)))));const t=this.update(this.pointer);return t.document=e,t._cache=this._cache,t}}Object.assign(View.prototype,r);const o=function(e){return e&&\"object\"==typeof e&&!Array.isArray(e)};function i(e,t){if(o(t))for(const n in t)o(t[n])?(e[n]||Object.assign(e,{[n]:{}}),i(e[n],t[n])):Object.assign(e,{[n]:t[n]});return e}const s=function(e,t,n,a){if(r=e,\"[object Array]\"===Object.prototype.toString.call(r))return void e.forEach((e=>s(e,t,n,a)));var r;const{methods:o,model:l,compute:u,hooks:c}=t;e.methods&&function(e,t){for(const n in t)e[n]=e[n]||{},Object.assign(e[n],t[n])}(o,e.methods),e.model&&i(l,e.model),e.irregulars&&function(e,t){const n=e.two.models||{};Object.keys(t).forEach((e=>{t[e].pastTense&&(n.toPast&&(n.toPast.ex[e]=t[e].pastTense),n.fromPast&&(n.fromPast.ex[t[e].pastTense]=e)),t[e].presentTense&&(n.toPresent&&(n.toPresent.ex[e]=t[e].presentTense),n.fromPresent&&(n.fromPresent.ex[t[e].presentTense]=e)),t[e].gerund&&(n.toGerund&&(n.toGerund.ex[e]=t[e].gerund),n.fromGerund&&(n.fromGerund.ex[t[e].gerund]=e)),t[e].comparative&&(n.toComparative&&(n.toComparative.ex[e]=t[e].comparative),n.fromComparative&&(n.fromComparative.ex[t[e].comparative]=e)),t[e].superlative&&(n.toSuperlative&&(n.toSuperlative.ex[e]=t[e].superlative),n.fromSuperlative&&(n.fromSuperlative.ex[t[e].superlative]=e))}))}(l,e.irregulars),e.compute&&Object.assign(u,e.compute),c&&(t.hooks=c.concat(e.hooks||[])),e.api&&e.api(n),e.lib&&Object.keys(e.lib).forEach((t=>a[t]=e.lib[t])),e.tags&&a.addTags(e.tags),e.words&&a.addWords(e.words),e.frozen&&a.addWords(e.frozen,!0),e.mutate&&e.mutate(t,a)},l=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},u=function(e,t,n){const{methods:a}=n,r=new t([]);if(r.world=n,\"number\"==typeof e&&(e=String(e)),!e)return r;if(\"string\"==typeof e){return new t(a.one.tokenize.fromString(e,n))}if(o=e,\"[object Object]\"===Object.prototype.toString.call(o)&&e.isView)return new t(e.document,e.ptrs);var o;if(l(e)){if(l(e[0])){const n=e.map((e=>e.map((e=>({text:e,normal:e,pre:\"\",post:\" \",tags:new Set})))));return new t(n)}const n=e.map((e=>e.terms.map((e=>(l(e.tags)&&(e.tags=new Set(e.tags)),e)))));return new t(n)}return r},c=Object.assign({},e),d=function(e,t){t&&d.addWords(t);const n=u(e,View,c);return e&&n.compute(c.hooks),n};Object.defineProperty(d,\"_world\",{value:c,writable:!0}),d.tokenize=function(e,t){const{compute:n}=this._world;t&&d.addWords(t);const a=u(e,View,c);return n.contractions&&a.compute([\"alias\",\"normal\",\"machine\",\"contractions\"]),a},d.plugin=function(e){return s(e,this._world,View,this),this},d.extend=d.plugin,d.world=function(){return this._world},d.model=function(){return this._world.model},d.methods=function(){return this._world.methods},d.hooks=function(){return this._world.hooks},d.verbose=function(e){const t=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};return t.DEBUG_TAGS=\"tagger\"===e||!0===e||\"\",t.DEBUG_MATCH=\"match\"===e||!0===e||\"\",t.DEBUG_CHUNKS=\"chunker\"===e||!0===e||\"\",this},d.version=\"14.15.0\";var h={one:{cacheDoc:function(e){const t=e.map((e=>{const t=new Set;return e.forEach((e=>{\"\"!==e.normal&&t.add(e.normal),e.switch&&t.add(`%${e.switch}%`),e.implicit&&t.add(e.implicit),e.machine&&t.add(e.machine),e.root&&t.add(e.root),e.alias&&e.alias.forEach((e=>t.add(e)));const n=Array.from(e.tags);for(let e=0;e<n.length;e+=1)t.add(\"#\"+n[e])})),t}));return t}}};const m={cache:function(){return this._cache=this.methods.one.cacheDoc(this.document),this},uncache:function(){return this._cache=null,this}};var p={api:function(e){Object.assign(e.prototype,m)},compute:{cache:function(e){e._cache=e.methods.one.cacheDoc(e.document)}},methods:h};const f=e=>/^\\p{Lu}[\\p{Ll}'’]/u.test(e)||/^\\p{Lu}$/u.test(e),b=(e,t,n)=>{if(n.forEach((e=>e.dirty=!0)),e){const a=[t,0].concat(n);Array.prototype.splice.apply(e,a)}return e},y=function(e){const t=e[e.length-1];!t||/ $/.test(t.post)||/[-–—]/.test(t.post)||(t.post+=\" \")},v=(e,t,n)=>{const a=/[-.?!,;:)–—'\"]/g,r=e[t-1];if(!r)return;const o=r.post;if(a.test(o)){const e=o.match(a).join(\"\"),t=n[n.length-1];t.post=e+t.post,r.post=r.post.replace(a,\"\")}},w=function(e,t,n,a){const[r,o,i]=t;0===o||i===a[r].length?y(n):(y(n),y([e[t[1]]])),function(e,t,n){const a=e[t];if(0!==t||!f(a.text))return;n[0].text=n[0].text.replace(/^\\p{Ll}/u,(e=>e.toUpperCase()));const r=e[t];r.tags.has(\"ProperNoun\")||r.tags.has(\"Acronym\")||f(r.text)&&r.text.length>1&&(r.text=(o=r.text,o.replace(/^\\p{Lu}/u,(e=>e.toLowerCase()))));var o}(e,o,n),b(e,o,n)};let k=0;const P=e=>(e=e.length<3?\"0\"+e:e).length<3?\"0\"+e:e,A=function(e){let[t,n]=e.index||[0,0];k+=1,k=k>46655?0:k,t=t>46655?0:t,n=n>1294?0:n;let a=P(k.toString(36));a+=P(t.toString(36));let r=n.toString(36);r=r.length<2?\"0\"+r:r,a+=r;return a+=parseInt(36*Math.random(),10).toString(36),e.normal+\"|\"+a.toUpperCase()},C=function(e){if(e.has(\"@hasContraction\")&&\"function\"==typeof e.contractions){e.grow(\"@hasContraction\").contractions().expand()}},j=e=>\"[object Array]\"===Object.prototype.toString.call(e),N=function(e,t,n){const{document:a,world:r}=t;t.uncache();const o=t.fullPointer,i=t.fullPointer;t.forEach(((s,l)=>{const u=s.fullPointer[0],[c]=u,d=a[c];let h=function(e,t){const{methods:n}=t;return\"string\"==typeof e?n.one.tokenize.fromString(e,t)[0]:\"object\"==typeof e&&e.isView?e.clone().docs[0]||[]:j(e)?j(e[0])?e[0]:e:[]}(e,r);0!==h.length&&(h=function(e){return e.map((e=>(e.id=A(e),e)))}(h),n?(C(t.update([u]).firstTerm()),w(d,u,h,a)):(C(t.update([u]).lastTerm()),function(e,t,n,a){const[r,,o]=t,i=(a[r]||[]).length;o<i?(v(e,o,n),y(n)):i===o&&(y(e),v(e,o,n),a[r+1]&&(n[n.length-1].post+=\" \")),b(e,t[2],n),t[4]=n[n.length-1].id}(d,u,h,a)),a[c]&&a[c][u[1]]&&(u[3]=a[c][u[1]].id),i[l]=u,u[2]+=h.length,o[l]=u)}));const s=t.toView(o);return t.ptrs=i,s.compute([\"id\",\"index\",\"freeze\",\"lexicon\"]),s.world.compute.preTagger&&s.compute(\"preTagger\"),s.compute(\"unfreeze\"),s},I={insertAfter:function(e){return N(e,this,!1)},insertBefore:function(e){return N(e,this,!0)}};I.append=I.insertAfter,I.prepend=I.insertBefore,I.insert=I.insertAfter;const D=/\\$[0-9a-z]+/g,H={},G=e=>e.replace(/^\\p{Ll}/u,(e=>e.toUpperCase())),T=e=>e.replace(/^\\p{Lu}/u,(e=>e.toLowerCase()));H.replaceWith=function(e,t={}){let n=this.fullPointer;const a=this;if(this.uncache(),\"function\"==typeof e)return function(e,t,n){return e.forEach((e=>{const a=t(e);e.replaceWith(a,n)})),e}(a,e,t);const r=a.docs[0];if(!r)return a;const o=t.possessives&&r[r.length-1].tags.has(\"Possessive\"),i=t.case&&(s=r[0].text,/^\\p{Lu}[\\p{Ll}'’]/u.test(s)||/^\\p{Lu}$/u.test(s));var s;e=function(e,t){if(\"string\"!=typeof e)return e;const n=t.groups();return e=e.replace(D,(e=>{const t=e.replace(/\\$/,\"\");return n.hasOwnProperty(t)?n[t].text():e})),e}(e,a);const l=this.update(n);n=n.map((e=>e.slice(0,3)));const u=(l.docs[0]||[]).map((e=>Array.from(e.tags))),c=l.docs[0][0].pre,d=l.docs[0][l.docs[0].length-1].post;if(\"string\"==typeof e&&(e=this.fromText(e).compute(\"id\")),a.insertAfter(e),l.has(\"@hasContraction\")&&a.contractions){a.grow(\"@hasContraction+\").contractions().expand()}if(a.delete(l),o){const e=a.docs[0],t=e[e.length-1];t.tags.has(\"Possessive\")||(t.text+=\"'s\",t.normal+=\"'s\",t.tags.add(\"Possessive\"))}if(c&&a.docs[0]&&(a.docs[0][0].pre=c),d&&a.docs[0]){const e=a.docs[0][a.docs[0].length-1];e.post.trim()||(e.post=d)}const h=a.toView(n).compute([\"index\",\"freeze\",\"lexicon\"]);if(h.world.compute.preTagger&&h.compute(\"preTagger\"),h.compute(\"unfreeze\"),t.tags&&h.terms().forEach(((e,t)=>{e.tagSafe(u[t])})),!h.docs[0]||!h.docs[0][0])return h;if(t.case){const e=i?G:T;h.docs[0][0].text=e(h.docs[0][0].text)}return h},H.replace=function(e,t,n){if(e&&!t)return this.replaceWith(e,n);const a=this.match(e);return a.found?(this.soften(),a.replaceWith(t,n)):this};const x={remove:function(e){const{indexN:t}=this.methods.one.pointer;this.uncache();let n=this.all(),a=this;e&&(n=this,a=this.match(e));const r=!n.ptrs;if(a.has(\"@hasContraction\")&&a.contractions){a.grow(\"@hasContraction\").contractions().expand()}let o=n.fullPointer;const i=a.fullPointer.reverse(),s=function(e,t){t.forEach((t=>{const[n,a,r]=t,o=r-a;e[n]&&(r===e[n].length&&r>1&&function(e,t){const n=e.length-1,a=e[n],r=e[n-t];r&&a&&(r.post+=a.post,r.post=r.post.replace(/ +([.?!,;:])/,\"$1\"),r.post=r.post.replace(/[,;:]+([.?!])/,\"$1\"))}(e[n],o),e[n].splice(a,o))}));for(let t=e.length-1;t>=0;t-=1)if(0===e[t].length&&(e.splice(t,1),t===e.length&&e[t-1])){const n=e[t-1],a=n[n.length-1];a&&(a.post=a.post.trimEnd())}return e}(this.document,i);if(o=function(e,t){return e=e.map((e=>{const[n]=e;return t[n]?(t[n].forEach((t=>{const n=t[2]-t[1];e[1]<=t[1]&&e[2]>=t[2]&&(e[2]-=n)})),e):e})),e.forEach(((t,n)=>{if(0===t[1]&&0==t[2])for(let t=n+1;t<e.length;t+=1)e[t][0]-=1,e[t][0]<0&&(e[t][0]=0)})),e=(e=e.filter((e=>e[2]-e[1]>0))).map((e=>(e[3]=null,e[4]=null,e)))}(o,t(i)),n.ptrs=o,n.document=s,n.compute(\"index\"),r&&(n.ptrs=void 0),!e)return this.ptrs=[],n.none();return n.toView(o)}};x.delete=x.remove;const E={pre:function(e,t){return void 0===e&&this.found?this.docs[0][0].pre:(this.docs.forEach((n=>{const a=n[0];!0===t?a.pre+=e:a.pre=e})),this)},post:function(e,t){if(void 0===e){const e=this.docs[this.docs.length-1];return e[e.length-1].post}return this.docs.forEach((n=>{const a=n[n.length-1];!0===t?a.post+=e:a.post=e})),this},trim:function(){if(!this.found)return this;const e=this.docs,t=e[0][0];t.pre=t.pre.trimStart();const n=e[e.length-1],a=n[n.length-1];return a.post=a.post.trimEnd(),this},hyphenate:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.pre=\"\"),e[n+1]&&(t.post=\"-\")}))})),this},dehyphenate:function(){const e=/[-–—]/;return this.docs.forEach((t=>{t.forEach((t=>{e.test(t.post)&&(t.post=\" \")}))})),this},toQuotations:function(e,t){return e=e||'\"',t=t||'\"',this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const a=n[n.length-1];a.post=t+a.post})),this},toParentheses:function(e,t){return e=e||\"(\",t=t||\")\",this.docs.forEach((n=>{n[0].pre=e+n[0].pre;const a=n[n.length-1];a.post=t+a.post})),this}};E.deHyphenate=E.dehyphenate,E.toQuotation=E.toQuotations;var F={alpha:(e,t)=>e.normal<t.normal?-1:e.normal>t.normal?1:0,length:(e,t)=>{const n=e.normal.trim().length,a=t.normal.trim().length;return n<a?1:n>a?-1:0},wordCount:(e,t)=>e.words<t.words?1:e.words>t.words?-1:0,sequential:(e,t)=>e[0]<t[0]?1:e[0]>t[0]?-1:e[1]>t[1]?1:-1,byFreq:function(e){const t={};return e.forEach((e=>{t[e.normal]=t[e.normal]||0,t[e.normal]+=1})),e.sort(((e,n)=>{const a=t[e.normal],r=t[n.normal];return a<r?1:a>r?-1:0})),e}};const O=new Set([\"index\",\"sequence\",\"seq\",\"sequential\",\"chron\",\"chronological\"]),z=new Set([\"freq\",\"frequency\",\"topk\",\"repeats\"]),V=new Set([\"alpha\",\"alphabetical\"]);var B={unique:function(){const e=new Set,t=this.filter((t=>{const n=t.text(\"machine\");return!e.has(n)&&(e.add(n),!0)}));return t},reverse:function(){let e=this.pointer||this.docs.map(((e,t)=>[t]));return e=[].concat(e),e=e.reverse(),this._cache&&(this._cache=this._cache.reverse()),this.update(e)},sort:function(e){const{docs:t,pointer:n}=this;if(this.uncache(),\"function\"==typeof e)return function(e,t){let n=e.fullPointer;return n=n.sort(((n,a)=>(n=e.update([n]),a=e.update([a]),t(n,a)))),e.ptrs=n,e}(this,e);e=e||\"alpha\";const a=n||t.map(((e,t)=>[t]));let r=t.map(((e,t)=>({index:t,words:e.length,normal:e.map((e=>e.machine||e.normal||\"\")).join(\" \"),pointer:a[t]})));return O.has(e)&&(e=\"sequential\"),V.has(e)&&(e=\"alpha\"),z.has(e)?(r=F.byFreq(r),this.update(r.map((e=>e.pointer)))):\"function\"==typeof F[e]?(r=r.sort(F[e]),this.update(r.map((e=>e.pointer)))):this}};const S=function(e,t){if(e.length>0){const t=e[e.length-1],n=t[t.length-1];!1===/ /.test(n.post)&&(n.post+=\" \")}return e=e.concat(t)};var K={concat:function(e){if(\"string\"==typeof e){const t=this.fromText(e);if(this.found&&this.ptrs){const e=this.fullPointer,n=e[e.length-1][0];this.document.splice(n,0,...t.document)}else this.document=this.document.concat(t.document);return this.all().compute(\"index\")}if(\"object\"==typeof e&&e.isView)return function(e,t){if(e.document===t.document){const n=e.fullPointer.concat(t.fullPointer);return e.toView(n).compute(\"index\")}return t.fullPointer.forEach((t=>{t[0]+=e.document.length})),e.document=S(e.document,t.docs),e.all()}(this,e);if(t=e,\"[object Array]\"===Object.prototype.toString.call(t)){const t=S(this.document,e);return this.document=t,this.all()}var t;return this}};var $={harden:function(){return this.ptrs=this.fullPointer,this},soften:function(){let e=this.ptrs;return!e||e.length<1||(e=e.map((e=>e.slice(0,3))),this.ptrs=e),this}};const L=Object.assign({},{toLowerCase:function(){return this.termList().forEach((e=>{e.text=e.text.toLowerCase()})),this},toUpperCase:function(){return this.termList().forEach((e=>{e.text=e.text.toUpperCase()})),this},toTitleCase:function(){return this.termList().forEach((e=>{e.text=e.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))})),this},toCamelCase:function(){return this.docs.forEach((e=>{e.forEach(((t,n)=>{0!==n&&(t.text=t.text.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))),n!==e.length-1&&(t.post=\"\")}))})),this}},I,H,x,E,B,K,$),M={id:function(e){const t=e.docs;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1){const a=t[e][n];a.id=a.id||A(a)}}};var J={api:function(e){Object.assign(e.prototype,L)},compute:M};const W=!0;var U={one:{contractions:[{word:\"@\",out:[\"at\"]},{word:\"arent\",out:[\"are\",\"not\"]},{word:\"alot\",out:[\"a\",\"lot\"]},{word:\"brb\",out:[\"be\",\"right\",\"back\"]},{word:\"cannot\",out:[\"can\",\"not\"]},{word:\"dun\",out:[\"do\",\"not\"]},{word:\"can't\",out:[\"can\",\"not\"]},{word:\"shan't\",out:[\"should\",\"not\"]},{word:\"won't\",out:[\"will\",\"not\"]},{word:\"that's\",out:[\"that\",\"is\"]},{word:\"what's\",out:[\"what\",\"is\"]},{word:\"let's\",out:[\"let\",\"us\"]},{word:\"dunno\",out:[\"do\",\"not\",\"know\"]},{word:\"gonna\",out:[\"going\",\"to\"]},{word:\"gotta\",out:[\"have\",\"got\",\"to\"]},{word:\"gimme\",out:[\"give\",\"me\"]},{word:\"outta\",out:[\"out\",\"of\"]},{word:\"tryna\",out:[\"trying\",\"to\"]},{word:\"gtg\",out:[\"got\",\"to\",\"go\"]},{word:\"im\",out:[\"i\",\"am\"]},{word:\"imma\",out:[\"I\",\"will\"]},{word:\"imo\",out:[\"in\",\"my\",\"opinion\"]},{word:\"irl\",out:[\"in\",\"real\",\"life\"]},{word:\"ive\",out:[\"i\",\"have\"]},{word:\"rn\",out:[\"right\",\"now\"]},{word:\"tbh\",out:[\"to\",\"be\",\"honest\"]},{word:\"wanna\",out:[\"want\",\"to\"]},{word:\"c'mere\",out:[\"come\",\"here\"]},{word:\"c'mon\",out:[\"come\",\"on\"]},{word:\"shoulda\",out:[\"should\",\"have\"]},{word:\"coulda\",out:[\"coulda\",\"have\"]},{word:\"woulda\",out:[\"woulda\",\"have\"]},{word:\"musta\",out:[\"must\",\"have\"]},{word:\"tis\",out:[\"it\",\"is\"]},{word:\"twas\",out:[\"it\",\"was\"]},{word:\"y'know\",out:[\"you\",\"know\"]},{word:\"ne'er\",out:[\"never\"]},{word:\"o'er\",out:[\"over\"]},{after:\"ll\",out:[\"will\"]},{after:\"ve\",out:[\"have\"]},{after:\"re\",out:[\"are\"]},{after:\"m\",out:[\"am\"]},{before:\"c\",out:[\"ce\"]},{before:\"m\",out:[\"me\"]},{before:\"n\",out:[\"ne\"]},{before:\"qu\",out:[\"que\"]},{before:\"s\",out:[\"se\"]},{before:\"t\",out:[\"tu\"]},{word:\"shouldnt\",out:[\"should\",\"not\"]},{word:\"couldnt\",out:[\"could\",\"not\"]},{word:\"wouldnt\",out:[\"would\",\"not\"]},{word:\"hasnt\",out:[\"has\",\"not\"]},{word:\"wasnt\",out:[\"was\",\"not\"]},{word:\"isnt\",out:[\"is\",\"not\"]},{word:\"cant\",out:[\"can\",\"not\"]},{word:\"dont\",out:[\"do\",\"not\"]},{word:\"wont\",out:[\"will\",\"not\"]},{word:\"howd\",out:[\"how\",\"did\"]},{word:\"whatd\",out:[\"what\",\"did\"]},{word:\"whend\",out:[\"when\",\"did\"]},{word:\"whered\",out:[\"where\",\"did\"]}],numberSuffixes:{st:W,nd:W,rd:W,th:W,am:W,pm:W,max:W,\"°\":W,s:W,e:W,er:W,\"ère\":W,\"ème\":W}}};const q=function(e,t,n){const[a,r]=t;n&&0!==n.length&&(n=n.map(((e,t)=>(e.implicit=e.text,e.machine=e.text,e.pre=\"\",e.post=\"\",e.text=\"\",e.normal=\"\",e.index=[a,r+t],e))),n[0]&&(n[0].pre=e[a][r].pre,n[n.length-1].post=e[a][r].post,n[0].text=e[a][r].text,n[0].normal=e[a][r].normal),e[a].splice(r,1,...n))},R=/'/,Q=new Set([\"what\",\"how\",\"when\",\"where\",\"why\"]),Z=new Set([\"be\",\"go\",\"start\",\"think\",\"need\"]),X=new Set([\"been\",\"gone\"]),_=/'/,Y=/(e|é|aison|sion|tion)$/,ee=/(age|isme|acle|ege|oire)$/;var te=(e,t)=>[\"je\",e[t].normal.split(_)[1]],ne=(e,t)=>{const n=e[t].normal.split(_)[1];return n&&n.endsWith(\"e\")?[\"la\",n]:[\"le\",n]},ae=(e,t)=>{const n=e[t].normal.split(_)[1];return n&&Y.test(n)&&!ee.test(n)?[\"du\",n]:n&&n.endsWith(\"s\")?[\"des\",n]:[\"de\",n]};const re=/^([0-9.]{1,4}[a-z]{0,2}) ?[-–—] ?([0-9]{1,4}[a-z]{0,2})$/i,oe=/^([0-9]{1,2}(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9]{1,2}(:[0-9][0-9])?(am|pm)?)$/i,ie=/^[0-9]{3}-[0-9]{4}$/,se=function(e,t){const n=e[t];let a=n.text.match(re);return null!==a?!0===n.tags.has(\"PhoneNumber\")||ie.test(n.text)?null:[a[1],\"to\",a[2]]:(a=n.text.match(oe),null!==a?[a[1],\"to\",a[4]]:null)},le=/^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/,ue=function(e,t,n){const a=n.model.one.numberSuffixes||{},r=e[t].text.match(le);if(null!==r){const e=r[2].toLowerCase().trim();return a.hasOwnProperty(e)?null:[r[1],e]}return null},ce=/'/,de=/^[0-9][^-–—]*[-–—].*?[0-9]/,he=function(e,t,n,a){const r=t.update();r.document=[e];let o=n+a;n>0&&(n-=1),e[o]&&(o+=1),r.ptrs=[[0,n,o]]},ge={t:(e,t)=>function(e,t){return\"ain't\"===e[t].normal||\"aint\"===e[t].normal?null:[e[t].normal.replace(/n't/,\"\"),\"not\"]}(e,t),d:(e,t)=>function(e,t){const n=e[t].normal.split(R)[0];if(Q.has(n))return[n,\"did\"];if(e[t+1]){if(X.has(e[t+1].normal))return[n,\"had\"];if(Z.has(e[t+1].normal))return[n,\"would\"]}return null}(e,t)},me={j:(e,t)=>te(e,t),l:(e,t)=>ne(e,t),d:(e,t)=>ae(e,t)},pe=function(e,t,n,a){for(let r=0;r<e.length;r+=1){const o=e[r];if(o.word===t.normal)return o.out;if(null!==a&&a===o.after)return[n].concat(o.out);if(null!==n&&n===o.before&&a&&a.length>2)return o.out.concat(a)}return null},fe=function(e,t){const n=t.fromText(e.join(\" \"));return n.compute([\"id\",\"alias\"]),n.docs[0]},be=function(e,t){for(let n=t+1;n<5&&e[n];n+=1)if(\"been\"===e[n].normal)return[\"there\",\"has\"];return[\"there\",\"is\"]};var ye={contractions:e=>{const{world:t,document:n}=e,{model:a,methods:r}=t,o=a.one.contractions||[];n.forEach(((a,i)=>{for(let s=a.length-1;s>=0;s-=1){let l=null,u=null;if(!0===ce.test(a[s].normal)){const e=a[s].normal.split(ce);l=e[0],u=e[1]}let c=pe(o,a[s],l,u);!c&&ge.hasOwnProperty(u)&&(c=ge[u](a,s,t)),!c&&me.hasOwnProperty(l)&&(c=me[l](a,s)),\"there\"===l&&\"s\"===u&&(c=be(a,s)),c?(c=fe(c,e),q(n,[i,s],c),he(n[i],e,s,c.length)):de.test(a[s].normal)?(c=se(a,s),c&&(c=fe(c,e),q(n,[i,s],c),r.one.setTag(c,\"NumberRange\",t),c[2]&&c[2].tags.has(\"Time\")&&r.one.setTag([c[0]],\"Time\",t,null,\"time-range\"),he(n[i],e,s,c.length))):(c=ue(a,s,t),c&&(c=fe(c,e),q(n,[i,s],c),r.one.setTag([c[1]],\"Unit\",t,null,\"contraction-unit\")))}}))}};const ve={model:U,compute:ye,hooks:[\"contractions\"]},we=function(e){const t=e.world,{model:n,methods:a}=e.world,r=a.one.setTag,{frozenLex:o}=n.one,i=n.one._multiCache||{};e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1){const a=e[n],s=a.machine||a.normal;if(void 0!==i[s]&&e[n+1]){for(let a=n+i[s]-1;a>n;a-=1){const i=e.slice(n,a+1),s=i.map((e=>e.machine||e.normal)).join(\" \");!0!==o.hasOwnProperty(s)||(r(i,o[s],t,!1,\"1-frozen-multi-lexicon\"),i.forEach((e=>e.frozen=!0)))}}void 0!==o[s]&&o.hasOwnProperty(s)&&(r([a],o[s],t,!1,\"1-freeze-lexicon\"),a.frozen=!0)}}))};const ke=e=>\"\u001b[34m\"+e+\"\u001b[0m\",Pe=e=>\"\u001b[3m\u001b[2m\"+e+\"\u001b[0m\",Ae=function(e){e.docs.forEach((e=>{console.log(ke(\"\\n  ┌─────────\")),e.forEach((e=>{let t=`  ${Pe(\"│\")}  `;const n=e.implicit||e.text||\"-\";!0===e.frozen?t+=`${ke(n)} ❄️`:t+=Pe(n),console.log(t)}))}))};var Ce={compute:{frozen:we,freeze:we,unfreeze:function(e){return e.docs.forEach((e=>{e.forEach((e=>{delete e.frozen}))})),e}},mutate:e=>{const t=e.methods.one;t.termMethods.isFrozen=e=>!0===e.frozen,t.debug.freeze=Ae,t.debug.frozen=Ae},api:function(e){e.prototype.freeze=function(){return this.docs.forEach((e=>{e.forEach((e=>{e.frozen=!0}))})),this},e.prototype.unfreeze=function(){this.compute(\"unfreeze\")},e.prototype.isFrozen=function(){return this.match(\"@isFrozen+\")}},hooks:[\"freeze\"]};const je=function(e,t,n){const{model:a,methods:r}=n,o=r.one.setTag,i=a.one._multiCache||{},{lexicon:s}=a.one||{},l=e[t],u=l.machine||l.normal;if(void 0!==i[u]&&e[t+1]){for(let a=t+i[u]-1;a>t;a-=1){const r=e.slice(t,a+1);if(r.length<=1)return!1;const i=r.map((e=>e.machine||e.normal)).join(\" \");if(!0===s.hasOwnProperty(i)){const e=s[i];return o(r,e,n,!1,\"1-multi-lexicon\"),!e||2!==e.length||\"PhrasalVerb\"!==e[0]&&\"PhrasalVerb\"!==e[1]||o([r[1]],\"Particle\",n,!1,\"1-phrasal-particle\"),!0}}return!1}return null},Ne=/^(under|over|mis|re|un|dis|semi|pre|post)-?/,Ie=new Set([\"Verb\",\"Infinitive\",\"PastTense\",\"Gerund\",\"PresentTense\",\"Adjective\",\"Participle\"]),De=function(e,t,n){const{model:a,methods:r}=n,o=r.one.setTag,{lexicon:i}=a.one,s=e[t],l=s.machine||s.normal;if(void 0!==i[l]&&i.hasOwnProperty(l))return o([s],i[l],n,!1,\"1-lexicon\"),!0;if(s.alias){const e=s.alias.find((e=>i.hasOwnProperty(e)));if(e)return o([s],i[e],n,!1,\"1-lexicon-alias\"),!0}if(!0===Ne.test(l)){const e=l.replace(Ne,\"\");if(i.hasOwnProperty(e)&&e.length>3&&Ie.has(i[e]))return o([s],i[e],n,!1,\"1-lexicon-prefix\"),!0}return null};var He={lexicon:function(e){const t=e.world;e.docs.forEach((e=>{for(let n=0;n<e.length;n+=1)if(0===e[n].tags.size){let a=null;a=a||je(e,n,t),a=a||De(e,n,t)}}))}};var Ge={one:{expandLexicon:function(e){const t={},n={};return Object.keys(e).forEach((a=>{const r=e[a],o=(a=(a=a.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);o.length>1&&(void 0===n[o[0]]||o.length>n[o[0]])&&(n[o[0]]=o.length),t[a]=t[a]||r})),delete t[\"\"],delete t.null,delete t[\" \"],{lex:t,_multi:n}}}};var Te={addWords:function(e,t=!1){const n=this.world(),{methods:a,model:r}=n;if(!e)return;if(Object.keys(e).forEach((t=>{\"string\"==typeof e[t]&&e[t].startsWith(\"#\")&&(e[t]=e[t].replace(/^#/,\"\"))})),!0===t){const{lex:t,_multi:o}=a.one.expandLexicon(e,n);return Object.assign(r.one._multiCache,o),void Object.assign(r.one.frozenLex,t)}if(a.two.expandLexicon){const{lex:t,_multi:o}=a.two.expandLexicon(e,n);Object.assign(r.one.lexicon,t),Object.assign(r.one._multiCache,o)}const{lex:o,_multi:i}=a.one.expandLexicon(e,n);Object.assign(r.one.lexicon,o),Object.assign(r.one._multiCache,i)}};var xe={model:{one:{lexicon:{},_multiCache:{},frozenLex:{}}},methods:Ge,compute:He,lib:Te,hooks:[\"lexicon\"]};const Ee=function(e,t){const n=[{}],a=[null],r=[0],o=[];let i=0;e.forEach((function(e){let r=0;const o=function(e,t){const{methods:n,model:a}=t,r=n.one.tokenize.splitTerms(e,a).map((e=>n.one.tokenize.splitWhitespace(e,a)));return r.map((e=>e.text.toLowerCase()))}(e,t);for(let e=0;e<o.length;e++){const t=o[e];n[r]&&n[r].hasOwnProperty(t)?r=n[r][t]:(i++,n[r][t]=i,n[i]={},r=i,a[i]=null)}a[r]=[o.length]}));for(const e in n[0])i=n[0][e],r[i]=0,o.push(i);for(;o.length;){const e=o.shift(),t=Object.keys(n[e]);for(let s=0;s<t.length;s+=1){const l=t[s],u=n[e][l];for(o.push(u),i=r[e];i>0&&!n[i].hasOwnProperty(l);)i=r[i];if(n.hasOwnProperty(i)){const e=n[i][l];r[u]=e,a[e]&&(a[u]=a[u]||[],a[u]=a[u].concat(a[e]))}else r[u]=0}}return{goNext:n,endAs:a,failTo:r}},Fe=function(e,t,n){let a=0;const r=[];for(let o=0;o<e.length;o++){const i=e[o][n.form]||e[o].normal;for(;a>0&&(void 0===t.goNext[a]||!t.goNext[a].hasOwnProperty(i));)a=t.failTo[a]||0;if(t.goNext[a].hasOwnProperty(i)&&(a=t.goNext[a][i],t.endAs[a])){const n=t.endAs[a];for(let t=0;t<n.length;t++){const a=n[t],i=e[o-a+1],[s,l]=i.index;r.push([s,l,l+a,i.id])}}}return r},Oe=function(e,t){for(let n=0;n<e.length;n+=1)if(!0===t.has(e[n]))return!1;return!0};const ze=(e,t)=>{for(let n=e.length-1;n>=0;n-=1)if(e[n]!==t)return e=e.slice(0,n+1);return e},Ve={buildTrie:function(e){return function(e){return e.goNext=e.goNext.map((e=>{if(0!==Object.keys(e).length)return e})),e.goNext=ze(e.goNext,void 0),e.failTo=ze(e.failTo,0),e.endAs=ze(e.endAs,null),e}(Ee(e,this.world()))}};Ve.compile=Ve.buildTrie;var Be={api:function(e){e.prototype.lookup=function(e,t={}){if(!e)return this.none();\"string\"==typeof e&&(e=[e]);var n;let a=function(e,t,n){let a=[];n.form=n.form||\"normal\";const r=e.docs;if(!t.goNext||!t.goNext[0])return console.error(\"Compromise invalid lookup trie\"),e.none();const o=Object.keys(t.goNext[0]);for(let i=0;i<r.length;i++){if(e._cache&&e._cache[i]&&!0===Oe(o,e._cache[i]))continue;const s=r[i],l=Fe(s,t,n);l.length>0&&(a=a.concat(l))}return e.update(a)}(this,(n=e,\"[object Object]\"===Object.prototype.toString.call(n)?e:Ee(e,this.world)),t);return a=a.settle(),a}},lib:Ve};const Se=function(e,t){return t?(e.forEach((e=>{const n=e[0];t[n]&&(e[0]=t[n][0],e[1]+=t[n][1],e[2]+=t[n][1])})),e):e},Ke=function(e,t){let{ptrs:n}=e;const{byGroup:a}=e;return n=Se(n,t),Object.keys(a).forEach((e=>{a[e]=Se(a[e],t)})),{ptrs:n,byGroup:a}},$e=function(e,t,n){const a=n.methods.one;return\"number\"==typeof e&&(e=String(e)),\"string\"==typeof e&&(e=a.killUnicode(e,n),e=a.parseMatch(e,t,n)),e},Le=e=>\"[object Object]\"===Object.prototype.toString.call(e),Me=e=>e&&Le(e)&&!0===e.isView,Je=e=>e&&Le(e)&&!0===e.isNet;var We={matchOne:function(e,t,n){const a=this.methods.one;if(Me(e))return this.intersection(e).eq(0);if(Je(e))return this.sweep(e,{tagger:!1,matchOne:!0}).view;const r={regs:e=$e(e,n,this.world),group:t,justOne:!0},o=a.match(this.docs,r,this._cache),{ptrs:i,byGroup:s}=Ke(o,this.fullPointer),l=this.toView(i);return l._groups=s,l},match:function(e,t,n){const a=this.methods.one;if(Me(e))return this.intersection(e);if(Je(e))return this.sweep(e,{tagger:!1}).view.settle();const r={regs:e=$e(e,n,this.world),group:t},o=a.match(this.docs,r,this._cache),{ptrs:i,byGroup:s}=Ke(o,this.fullPointer),l=this.toView(i);return l._groups=s,l},has:function(e,t,n){const a=this.methods.one;if(Me(e)){return this.intersection(e).fullPointer.length>0}if(Je(e))return this.sweep(e,{tagger:!1}).view.found;const r={regs:e=$e(e,n,this.world),group:t,justOne:!0};return a.match(this.docs,r,this._cache).ptrs.length>0},if:function(e,t,n){const a=this.methods.one;if(Me(e))return this.filter((t=>t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.if(t)}const r={regs:e=$e(e,n,this.world),group:t,justOne:!0};let o=this.fullPointer;const i=this._cache||[];o=o.filter(((e,t)=>{const n=this.update([e]);return a.match(n.docs,r,i[t]).ptrs.length>0}));const s=this.update(o);return this._cache&&(s._cache=o.map((e=>i[e[0]]))),s},ifNo:function(e,t,n){const{methods:a}=this,r=a.one;if(Me(e))return this.filter((t=>!t.intersection(e).found));if(Je(e)){const t=this.sweep(e,{tagger:!1}).view.settle();return this.ifNo(t)}e=$e(e,n,this.world);const o=this._cache||[],i=this.filter(((n,a)=>{const i={regs:e,group:t,justOne:!0};return 0===r.match(n.docs,i,o[a]).ptrs.length}));return this._cache&&(i._cache=i.ptrs.map((e=>o[e[0]]))),i}};var Ue={before:function(e,t,n){const{indexN:a}=this.methods.one.pointer,r=[],o=a(this.fullPointer);Object.keys(o).forEach((e=>{const t=o[e].sort(((e,t)=>e[1]>t[1]?1:-1))[0];t[1]>0&&r.push([t[0],0,t[1]])}));const i=this.toView(r);return e?i.match(e,t,n):i},after:function(e,t,n){const{indexN:a}=this.methods.one.pointer,r=[],o=a(this.fullPointer),i=this.document;Object.keys(o).forEach((e=>{const t=o[e].sort(((e,t)=>e[1]>t[1]?-1:1))[0],[n,,a]=t;a<i[n].length&&r.push([n,a,i[n].length])}));const s=this.toView(r);return e?s.match(e,t,n):s},growLeft:function(e,t,n){\"string\"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[e.length-1].end=!0;const a=this.fullPointer;return this.forEach(((n,r)=>{const o=n.before(e,t);if(o.found){const e=o.terms();a[r][1]-=e.length,a[r][3]=e.docs[0][0].id}})),this.update(a)},growRight:function(e,t,n){\"string\"==typeof e&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[0].start=!0;const a=this.fullPointer;return this.forEach(((n,r)=>{const o=n.after(e,t);if(o.found){const e=o.terms();a[r][2]+=e.length,a[r][4]=null}})),this.update(a)},grow:function(e,t,n){return this.growRight(e,t,n).growLeft(e,t,n)}};const qe=function(e,t){return[e[0],e[1],t[2]]},Re=(e,t,n)=>{return\"string\"==typeof e||(a=e,\"[object Array]\"===Object.prototype.toString.call(a))?t.match(e,n):e||t.none();var a},Qe=function(e,t){const[n,a,r]=e;return t.document[n]&&t.document[n][a]&&(e[3]=e[3]||t.document[n][a].id,t.document[n][r-1]&&(e[4]=e[4]||t.document[n][r-1].id)),e},Ze={splitOn:function(e,t){const{splitAll:n}=this.methods.one.pointer,a=Re(e,this,t).fullPointer,r=n(this.fullPointer,a);let o=[];return r.forEach((e=>{o.push(e.passthrough),o.push(e.before),o.push(e.match),o.push(e.after)})),o=o.filter((e=>e)),o=o.map((e=>Qe(e,this))),this.update(o)},splitBefore:function(e,t){const{splitAll:n}=this.methods.one.pointer,a=Re(e,this,t).fullPointer,r=n(this.fullPointer,a);for(let e=0;e<r.length;e+=1)!r[e].after&&r[e+1]&&r[e+1].before&&r[e].match&&r[e].match[0]===r[e+1].before[0]&&(r[e].after=r[e+1].before,delete r[e+1].before);let o=[];return r.forEach((e=>{o.push(e.passthrough),o.push(e.before),e.match&&e.after?o.push(qe(e.match,e.after)):o.push(e.match)})),o=o.filter((e=>e)),o=o.map((e=>Qe(e,this))),this.update(o)},splitAfter:function(e,t){const{splitAll:n}=this.methods.one.pointer,a=Re(e,this,t).fullPointer,r=n(this.fullPointer,a);let o=[];return r.forEach((e=>{o.push(e.passthrough),e.before&&e.match?o.push(qe(e.before,e.match)):(o.push(e.before),o.push(e.match)),o.push(e.after)})),o=o.filter((e=>e)),o=o.map((e=>Qe(e,this))),this.update(o)}};Ze.split=Ze.splitAfter;const Xe=function(e,t){return!(!e||!t)&&(e[0]===t[0]&&e[2]===t[1])},_e=function(e,t,n){const a=e.world,r=a.methods.one.parseMatch;n=n||\"^.\";const o=r(t=t||\".$\",{},a),i=r(n,{},a);o[o.length-1].end=!0,i[0].start=!0;const s=e.fullPointer,l=[s[0]];for(let t=1;t<s.length;t+=1){const n=l[l.length-1],a=s[t],r=e.update([n]),u=e.update([a]);Xe(n,a)&&r.has(o)&&u.has(i)?l[l.length-1]=[n[0],n[1],a[2],n[3],a[4]]:l.push(a)}return e.update(l)},Ye={joinIf:function(e,t){return _e(this,e,t)},join:function(){return _e(this)}},et=Object.assign({},We,Ue,Ze,Ye);et.lookBehind=et.before,et.lookBefore=et.before,et.lookAhead=et.after,et.lookAfter=et.after,et.notIf=et.ifNo;const tt=/(?:^|\\s)([![^]*(?:<[^<]*>)?\\/.*?[^\\\\/]\\/[?\\]+*$~]*)(?:\\s|$)/,nt=/([!~[^]*(?:<[^<]*>)?\\([^)]+[^\\\\)]\\)[?\\]+*$~]*)(?:\\s|$)/,at=/ /g,rt=e=>/^[![^]*(<[^<]*>)?\\//.test(e)&&/\\/[?\\]+*$~]*$/.test(e),ot=function(e){return e=(e=e.map((e=>e.trim()))).filter((e=>e))},it=/\\{([0-9]+)?(, *[0-9]*)?\\}/,st=/&&/,lt=new RegExp(/^<\\s*(\\S+)\\s*>/),ut=e=>e.charAt(0).toUpperCase()+e.substring(1),ct=e=>e.charAt(e.length-1),dt=e=>e.charAt(0),ht=e=>e.substring(1),gt=e=>e.substring(0,e.length-1),mt=function(e){return e=ht(e),e=gt(e)},pt=function(e,t){const n={};for(let a=0;a<2;a+=1){if(\"$\"===ct(e)&&(n.end=!0,e=gt(e)),\"^\"===dt(e)&&(n.start=!0,e=ht(e)),\"?\"===ct(e)&&(n.optional=!0,e=gt(e)),(\"[\"===dt(e)||\"]\"===ct(e))&&(n.group=null,\"[\"===dt(e)&&(n.groupStart=!0),\"]\"===ct(e)&&(n.groupEnd=!0),e=(e=e.replace(/^\\[/,\"\")).replace(/\\]$/,\"\"),\"<\"===dt(e))){const t=lt.exec(e);t.length>=2&&(n.group=t[1],e=e.replace(t[0],\"\"))}if(\"+\"===ct(e)&&(n.greedy=!0,e=gt(e)),\"*\"!==e&&\"*\"===ct(e)&&\"\\\\*\"!==e&&(n.greedy=!0,e=gt(e)),\"!\"===dt(e)&&(n.negative=!0,e=ht(e)),\"~\"===dt(e)&&\"~\"===ct(e)&&e.length>2&&(e=mt(e),n.fuzzy=!0,n.min=t.fuzzy||.85,!1===/\\(/.test(e)))return n.word=e,n;if(\"/\"===dt(e)&&\"/\"===ct(e))return e=mt(e),t.caseSensitive&&(n.use=\"text\"),n.regex=new RegExp(e),n;if(!0===it.test(e)&&(e=e.replace(it,((e,t,a)=>(void 0===a?(n.min=Number(t),n.max=Number(t)):(a=a.replace(/, */,\"\"),void 0===t?(n.min=0,n.max=Number(a)):(n.min=Number(t),n.max=Number(a||999))),n.greedy=!0,n.min||(n.optional=!0),\"\")))),\"(\"===dt(e)&&\")\"===ct(e)){st.test(e)?(n.choices=e.split(st),n.operator=\"and\"):(n.choices=e.split(\"|\"),n.operator=\"or\"),n.choices[0]=ht(n.choices[0]);const a=n.choices.length-1;n.choices[a]=gt(n.choices[a]),n.choices=n.choices.map((e=>e.trim())),n.choices=n.choices.filter((e=>e)),n.choices=n.choices.map((e=>e.split(/ /g).map((e=>pt(e,t))))),e=\"\"}if(\"{\"===dt(e)&&\"}\"===ct(e)){if(e=mt(e),n.root=e,/\\//.test(e)){const e=n.root.split(/\\//);n.root=e[0],n.pos=e[1],\"adj\"===n.pos&&(n.pos=\"Adjective\"),n.pos=n.pos.charAt(0).toUpperCase()+n.pos.substr(1).toLowerCase(),void 0!==e[2]&&(n.sense=e[2])}return n}if(\"<\"===dt(e)&&\">\"===ct(e))return e=mt(e),n.chunk=ut(e),n.greedy=!0,n;if(\"%\"===dt(e)&&\"%\"===ct(e))return e=mt(e),n.switch=e,n}return\"#\"===dt(e)?(n.tag=ht(e),n.tag=ut(n.tag),n):\"@\"===dt(e)?(n.method=ht(e),n):\".\"===e?(n.anything=!0,n):\"*\"===e?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(e&&(e=(e=e.replace(\"\\\\*\",\"*\")).replace(\"\\\\.\",\".\"),t.caseSensitive?n.use=\"text\":e=e.toLowerCase(),n.word=e),n)},ft=/[a-z0-9][-–—][a-z]/i,bt=function(e,t){const{all:n}=t.methods.two.transform.verb||{},a=e.root;return n?n(a,t.model):[]},yt=function(e,t){const{all:n}=t.methods.two.transform.noun||{};return n?n(e.root,t.model):[e.root]},vt=function(e,t){const{all:n}=t.methods.two.transform.adjective||{};return n?n(e.root,t.model):[e.root]},wt=function(e){return e=function(e){let t=0,n=null;for(let a=0;a<e.length;a++){const r=e[a];!0===r.groupStart&&(n=r.group,null===n&&(n=String(t),t+=1)),null!==n&&(r.group=n),!0===r.groupEnd&&(n=null)}return e}(e),e=function(e){return e.map((e=>(e.fuzzy&&e.choices&&e.choices.forEach((t=>{1===t.length&&t[0].word&&(t[0].fuzzy=!0,t[0].min=e.min)})),e)))}(e=e.map((e=>{if(void 0!==e.choices){if(\"or\"!==e.operator)return e;if(!0===e.fuzzy)return e;!0===e.choices.every((e=>{if(1!==e.length)return!1;const t=e[0];return!0!==t.fuzzy&&!t.start&&!t.end&&void 0!==t.word&&!0!==t.negative&&!0!==t.optional&&!0!==t.method}))&&(e.fastOr=new Set,e.choices.forEach((t=>{e.fastOr.add(t[0].word)})),delete e.choices)}return e}))),e},kt=function(e,t){for(const n of t)if(e.has(n))return!0;return!1},Pt=function(e,t){for(let n=0;n<e.length;n+=1){const a=e[n];if(!0!==a.optional&&!0!==a.negative&&!0!==a.fuzzy){if(void 0!==a.word&&!1===t.has(a.word))return!0;if(void 0!==a.tag&&!1===t.has(\"#\"+a.tag))return!0;if(a.fastOr&&!1===kt(a.fastOr,t))return!1}}return!1},At=function(e,t,n=3){if(e===t)return 1;if(e.length<n||t.length<n)return 0;const a=function(e,t){const n=e.length,a=t.length;if(0===n)return a;if(0===a)return n;const r=(a>n?a:n)+1;if(Math.abs(n-a)>(r||100))return r||100;const o=[];for(let e=0;e<r;e++)o[e]=[e],o[e].length=r;for(let e=0;e<r;e++)o[0][e]=e;let i,s,l,u,c,d;for(let r=1;r<=n;++r)for(s=e[r-1],i=1;i<=a;++i){if(r===i&&o[r][i]>4)return n;l=t[i-1],u=s===l?0:1,c=o[r-1][i]+1,(d=o[r][i-1]+1)<c&&(c=d),(d=o[r-1][i-1]+u)<c&&(c=d);const a=r>1&&i>1&&s===t[i-2]&&e[r-2]===l&&(d=o[r-2][i-2]+u)<c;o[r][i]=a?d:c}return o[n][a]}(e,t),r=Math.max(e.length,t.length);return 1-(0===r?0:a/r)},Ct=/([\\u0022\\uFF02\\u0027\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F])/,jt=/([\\u0022\\uFF02\\u0027\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4])/,Nt=/^[-–—]$/,It=/ [-–—]{1,3} /,Dt=(e,t)=>-1!==e.post.indexOf(t),Ht={hasQuote:e=>Ct.test(e.pre)||jt.test(e.post),hasComma:e=>Dt(e,\",\"),hasPeriod:e=>!0===Dt(e,\".\")&&!1===Dt(e,\"...\"),hasExclamation:e=>Dt(e,\"!\"),hasQuestionMark:e=>Dt(e,\"?\")||Dt(e,\"¿\"),hasEllipses:e=>Dt(e,\"..\")||Dt(e,\"…\"),hasSemicolon:e=>Dt(e,\";\"),hasColon:e=>Dt(e,\":\"),hasSlash:e=>/\\//.test(e.text),hasHyphen:e=>Nt.test(e.post)||Nt.test(e.pre),hasDash:e=>It.test(e.post)||It.test(e.pre),hasContraction:e=>Boolean(e.implicit),isAcronym:e=>e.tags.has(\"Acronym\"),isKnown:e=>e.tags.size>0,isTitleCase:e=>/^\\p{Lu}[a-z'\\u00C0-\\u00FF]/u.test(e.text),isUpperCase:e=>/^\\p{Lu}+$/u.test(e.text)};Ht.hasQuotation=Ht.hasQuote;let Gt=function(){};Gt=function(e,t,n,a){const r=function(e,t,n,a){if(!0===t.anything)return!0;if(!0===t.start&&0!==n)return!1;if(!0===t.end&&n!==a-1)return!1;if(void 0!==t.id&&t.id===e.id)return!0;if(void 0!==t.word){if(t.use)return t.word===e[t.use];if(null!==e.machine&&e.machine===t.word)return!0;if(void 0!==e.alias&&e.alias.hasOwnProperty(t.word))return!0;if(!0===t.fuzzy){if(t.word===e.root)return!0;if(At(t.word,e.normal)>=t.min)return!0}return!(!e.alias||!e.alias.some((e=>e===t.word)))||t.word===e.text||t.word===e.normal}if(void 0!==t.tag)return!0===e.tags.has(t.tag);if(void 0!==t.method)return\"function\"==typeof Ht[t.method]&&!0===Ht[t.method](e);if(void 0!==t.pre)return e.pre&&e.pre.includes(t.pre);if(void 0!==t.post)return e.post&&e.post.includes(t.post);if(void 0!==t.regex){let n=e.normal;return t.use&&(n=e[t.use]),t.regex.test(n)}if(void 0!==t.chunk)return e.chunk===t.chunk;if(void 0!==t.switch)return e.switch===t.switch;if(void 0!==t.machine)return e.normal===t.machine||e.machine===t.machine||e.root===t.machine;if(void 0!==t.sense)return e.sense===t.sense;if(void 0!==t.fastOr){if(t.pos&&!e.tags.has(t.pos))return null;const n=e.root||e.implicit||e.machine||e.normal;return t.fastOr.has(n)||t.fastOr.has(e.text)}return void 0!==t.choices&&(\"and\"===t.operator?t.choices.every((t=>Gt(e,t,n,a))):t.choices.some((t=>Gt(e,t,n,a))))}(e,t,n,a);return!0===t.negative?!r:r};const Tt=function(e,t){if(!0===e.end&&!0===e.greedy&&t.start_i+t.t<t.phrase_length-1){const n=Object.assign({},e,{end:!1});if(!0===Gt(t.terms[t.t],n,t.start_i+t.t,t.phrase_length))return!0}return!1},xt=function(e,t){return e.groups[e.inGroup]||(e.groups[e.inGroup]={start:t,length:0}),e.groups[e.inGroup]},Et=function(e){const{regs:t}=e,n=t[e.r],a=function(e,t){let n=e.t;if(!t)return e.terms.length;for(;n<e.terms.length;n+=1)if(!0===Gt(e.terms[n],t,e.start_i+n,e.phrase_length))return n;return null}(e,t[e.r+1]);if(null===a||0===a)return null;if(void 0!==n.min&&a-e.t<n.min)return null;if(void 0!==n.max&&a-e.t>n.max)return e.t=e.t+n.max,!0;if(!0===e.hasGroup){xt(e,e.t).length=a-e.t}return e.t=a,!0},Ft=function(e,t=0){const n=e.regs[e.r];let a=!1;for(let o=0;o<n.choices.length;o+=1){const i=n.choices[o];if(r=i,\"[object Array]\"!==Object.prototype.toString.call(r))return!1;if(a=i.every(((n,a)=>{let r=0;const o=e.t+a+t+r;if(void 0===e.terms[o])return!1;const i=Gt(e.terms[o],n,o+e.start_i,e.phrase_length);if(!0===i&&!0===n.greedy)for(let t=1;t<e.terms.length;t+=1){const a=e.terms[o+t];if(a){if(!0!==Gt(a,n,e.start_i+t,e.phrase_length))break;r+=1}}return t+=r,i})),a){t+=i.length;break}}var r;return a&&!0===n.greedy?Ft(e,t):t},Ot=function(e){const{regs:t}=e,n=t[e.r],a=Ft(e);if(a){if(!0===n.negative)return null;if(!0===e.hasGroup){xt(e,e.t).length+=a}if(!0===n.end){const t=e.phrase_length;if(e.t+e.start_i+a!==t)return null}return e.t+=a,!0}return!!n.optional||null},zt=function(e){const{regs:t}=e,n=t[e.r],a=function(e){let t=0;return!0===e.regs[e.r].choices.every((n=>{const a=n.every(((t,n)=>{const a=e.t+n;return void 0!==e.terms[a]&&Gt(e.terms[a],t,a,e.phrase_length)}));return!0===a&&n.length>t&&(t=n.length),a}))&&t}(e);if(a){if(!0===n.negative)return null;if(!0===e.hasGroup){xt(e,e.t).length+=a}if(!0===n.end){const t=e.phrase_length-1;if(e.t+e.start_i!==t)return null}return e.t+=a,!0}return!!n.optional||null},Vt=function(e){const{regs:t}=e,n=t[e.r],a=Object.assign({},n);a.negative=!1;if(Gt(e.terms[e.t],a,e.start_i+e.t,e.phrase_length))return!1;if(n.optional){const n=t[e.r+1];if(n){if(Gt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))e.r+=1;else if(n.optional&&t[e.r+2]){Gt(e.terms[e.t],t[e.r+2],e.start_i+e.t,e.phrase_length)&&(e.r+=2)}}}return n.greedy?function(e,t,n){let a=0;for(let r=e.t;r<e.terms.length;r+=1){let o=Gt(e.terms[r],t,e.start_i+e.t,e.phrase_length);if(o)break;if(n&&(o=Gt(e.terms[r],n,e.start_i+e.t,e.phrase_length),o))break;if(a+=1,void 0!==t.max&&a===t.max)break}return!(0===a||t.min&&t.min>a||(e.t+=a,0))}(e,a,t[e.r+1]):(e.t+=1,!0)},Bt=function(e){const{regs:t,phrase_length:n}=e,a=t[e.r];return e.t=function(e,t){const n=Object.assign({},e.regs[e.r],{start:!1,end:!1}),a=e.t;for(;e.t<e.terms.length;e.t+=1){if(t&&Gt(e.terms[e.t],t,e.start_i+e.t,e.phrase_length))return e.t;const r=e.t-a+1;if(void 0!==n.max&&r===n.max)return e.t;if(!1===Gt(e.terms[e.t],n,e.start_i+e.t,e.phrase_length))return void 0!==n.min&&r<n.min?null:e.t}return e.t}(e,t[e.r+1]),null===e.t||a.min&&a.min>e.t?null:!0!==a.end||e.start_i+e.t===n||null},St=function(e){const{regs:t}=e,n=t[e.r],a=e.terms[e.t],r=e.t;if(n.optional&&t[e.r+1]&&n.negative)return!0;if(n.optional&&t[e.r+1]&&function(e){const{regs:t}=e,n=t[e.r],a=e.terms[e.t],r=Gt(a,t[e.r+1],e.start_i+e.t,e.phrase_length);if(n.negative||r){const n=e.terms[e.t+1];n&&Gt(n,t[e.r+1],e.start_i+e.t,e.phrase_length)||(e.r+=1)}}(e),a.implicit&&e.terms[e.t+1]&&function(e){const t=e.terms[e.t],n=e.regs[e.r];if(t.implicit&&e.terms[e.t+1]){if(!e.terms[e.t+1].implicit)return;n.word===t.normal&&(e.t+=1),\"hasContraction\"===n.method&&(e.t+=1)}}(e),e.t+=1,!0===n.end&&e.t!==e.terms.length&&!0!==n.greedy)return null;if(!0===n.greedy){if(!Bt(e))return null}return!0===e.hasGroup&&function(e,t){const n=e.regs[e.r],a=xt(e,t);e.t>1&&n.greedy?a.length+=e.t-t:a.length++}(e,r),!0},Kt=function(e,t,n,a){if(0===e.length||0===t.length)return null;const r={t:0,terms:e,r:0,regs:t,groups:{},start_i:n,phrase_length:a,inGroup:null};for(;r.r<t.length;r.r+=1){const e=t[r.r];if(r.hasGroup=Boolean(e.group),!0===r.hasGroup?r.inGroup=e.group:r.inGroup=null,!r.terms[r.t]){if(!1===t.slice(r.r).some((e=>!e.optional)))break;return null}if(!0===e.anything&&!0===e.greedy){if(!Et(r))return null;continue}if(void 0!==e.choices&&\"or\"===e.operator){if(!Ot(r))return null;continue}if(void 0!==e.choices&&\"and\"===e.operator){if(!zt(r))return null;continue}if(!0===e.anything){if(e.negative&&e.anything)return null;if(!St(r))return null;continue}if(!0===Tt(e,r)){if(!St(r))return null;continue}if(e.negative){if(!Vt(r))return null;continue}if(!0!==Gt(r.terms[r.t],e,r.start_i+r.t,r.phrase_length)){if(!0!==e.optional)return null}else{if(!St(r))return null}}const o=[null,n,r.t+n];if(o[1]===o[2])return null;const i={};return Object.keys(r.groups).forEach((e=>{const t=r.groups[e],a=n+t.start;i[e]=[null,a,a+t.length]})),{pointer:o,groups:i}},$t=function(e,t){return e.pointer[0]=t,Object.keys(e.groups).forEach((n=>{e.groups[n][0]=t})),e},Lt=function(e,t,n){let a=Kt(e,t,0,e.length);return a?(a=$t(a,n),a):null},Mt={one:{termMethods:Ht,parseMatch:function(e,t,n){if(null==e||\"\"===e)return[];t=t||{},\"number\"==typeof e&&(e=String(e));let a=function(e){const t=e.split(tt);let n=[];t.forEach((e=>{rt(e)?n.push(e):n=n.concat(e.split(nt))})),n=ot(n);let a=[];return n.forEach((e=>{(e=>/^[![^]*(<[^<]*>)?\\(/.test(e)&&/\\)[?\\]+*$~]*$/.test(e))(e)||rt(e)?a.push(e):a=a.concat(e.split(at))})),a=ot(a),a}(e);return a=a.map((e=>pt(e,t))),a=function(e,t){const n=t.model.one.prefixes;for(let t=e.length-1;t>=0;t-=1){const a=e[t];if(a.word&&ft.test(a.word)){let r=a.word.split(/[-–—]/g);if(n.hasOwnProperty(r[0]))continue;r=r.filter((e=>e)).reverse(),e.splice(t,1),r.forEach((n=>{const r=Object.assign({},a);r.word=n,e.splice(t,0,r)}))}}return e}(a,n),a=function(e,t){return e.map((e=>{if(e.root)if(t.methods.two&&t.methods.two.transform){let n=[];e.pos?\"Verb\"===e.pos?n=n.concat(bt(e,t)):\"Noun\"===e.pos?n=n.concat(yt(e,t)):\"Adjective\"===e.pos&&(n=n.concat(vt(e,t))):(n=n.concat(bt(e,t)),n=n.concat(yt(e,t)),n=n.concat(vt(e,t))),n=n.filter((e=>e)),n.length>0&&(e.operator=\"or\",e.fastOr=new Set(n))}else e.machine=e.root,delete e.id,delete e.root;return e}))}(a,n),a=wt(a),a},match:function(e,t,n){n=n||[];const{regs:a,group:r,justOne:o}=t;let i=[];if(!a||0===a.length)return{ptrs:[],byGroup:{}};const s=a.filter((e=>!0!==e.optional&&!0!==e.negative)).length;e:for(let t=0;t<e.length;t+=1){const r=e[t];if(!n[t]||!Pt(a,n[t]))if(!0!==a[0].start)for(let e=0;e<r.length;e+=1){const n=r.slice(e);if(n.length<s)break;let l=Kt(n,a,e,r.length);if(l){if(l=$t(l,t),i.push(l),!0===o)break e;const n=l.pointer[2];Math.abs(n-1)>e&&(e=Math.abs(n-1))}}else{const e=Lt(r,a,t);e&&i.push(e)}}return!0===a[a.length-1].end&&(i=i.filter((t=>{const n=t.pointer[0];return e[n].length===t.pointer[2]}))),t.notIf&&(i=function(e,t,n){return e=e.filter((e=>{const[a,r,o]=e.pointer,i=n[a].slice(r,o);for(let e=0;e<i.length;e+=1){const n=i.slice(e);if(null!==Kt(n,t,e,i.length))return!1}return!0})),e}(i,t.notIf,e)),i=function(e,t){const n=[],a={};return 0===e.length||(\"number\"==typeof t&&(t=String(t)),t?e.forEach((e=>{e.groups[t]&&n.push(e.groups[t])})):e.forEach((e=>{n.push(e.pointer),Object.keys(e.groups).forEach((t=>{a[t]=a[t]||[],a[t].push(e.groups[t])}))}))),{ptrs:n,byGroup:a}}(i,r),i.ptrs.forEach((t=>{const[n,a,r]=t;t[3]=e[n][a].id,t[4]=e[n][r-1].id})),i}}};var Jt={api:function(e){Object.assign(e.prototype,et)},methods:Mt,lib:{parseMatch:function(e,t){const n=this.world(),a=n.methods.one.killUnicode;return a&&(e=a(e,n)),n.methods.one.parseMatch(e,t,n)}}};const Wt=/^\\../,Ut=/^#./,qt=function(e,t){const n={},a={};return Object.keys(t).forEach((r=>{let o=t[r];const i=function(e){let t=\"\",n=\"</span>\";return e=e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&apos;\"),Wt.test(e)?t=`<span class=\"${e.replace(/^\\./,\"\")}\"`:Ut.test(e)?t=`<span id=\"${e.replace(/^#/,\"\")}\"`:(t=`<${e}`,n=`</${e}>`),t+=\">\",{start:t,end:n}}(r);\"string\"==typeof o&&(o=e.match(o)),o.docs.forEach((e=>{if(e.every((e=>e.implicit)))return;const t=e[0].id;n[t]=n[t]||[],n[t].push(i.start);const r=e[e.length-1].id;a[r]=a[r]||[],a[r].push(i.end)}))})),{starts:n,ends:a}};var Rt={html:function(e){const{starts:t,ends:n}=qt(this,e);let a=\"\";return this.docs.forEach((e=>{for(let r=0;r<e.length;r+=1){const o=e[r];t.hasOwnProperty(o.id)&&(a+=t[o.id].join(\"\")),a+=o.pre||\"\",a+=o.text||\"\",n.hasOwnProperty(o.id)&&(a+=n[o.id].join(\"\")),a+=o.post||\"\"}})),a}};const Qt=/[,:;)\\]*.?~!\\u0022\\uFF02\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4—-]+$/,Zt=/^[(['\"*~\\uFF02\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/,Xt=/[,:;)('\"\\u201D\\]]/,_t=/^[-–—]$/,Yt=/ /,en=function(e,t,n=!0){let a=\"\";return e.forEach((e=>{let n=e.pre||\"\",r=e.post||\"\";\"some\"===t.punctuation&&(n=n.replace(Zt,\"\"),_t.test(r)&&(r=\" \"),r=r.replace(Xt,\"\"),r=r.replace(/\\?!+/,\"?\"),r=r.replace(/!+/,\"!\"),r=r.replace(/\\?+/,\"?\"),r=r.replace(/\\.{2,}/,\"\"),e.tags.has(\"Abbreviation\")&&(r=r.replace(/\\./,\"\"))),\"some\"===t.whitespace&&(n=n.replace(/\\s/,\"\"),r=r.replace(/\\s+/,\" \")),t.keepPunct||(n=n.replace(Zt,\"\"),r=\"-\"===r?\" \":r.replace(Qt,\"\"));let o=e[t.form||\"text\"]||e.normal||\"\";\"implicit\"===t.form&&(o=e.implicit||e.text),\"root\"===t.form&&e.implicit&&(o=e.root||e.implicit||e.normal),\"machine\"!==t.form&&\"implicit\"!==t.form&&\"root\"!==t.form||!e.implicit||r&&Yt.test(r)||(r+=\" \"),a+=n+o+r})),!1===n&&(a=a.trim()),!0===t.lowerCase&&(a=a.toLowerCase()),a},tn={text:{form:\"text\"},normal:{whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"normal\"},machine:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"none\",unicode:\"some\",form:\"machine\"},root:{keepSpace:!1,whitespace:\"some\",punctuation:\"some\",case:\"some\",unicode:\"some\",form:\"root\"},implicit:{form:\"implicit\"}};tn.clean=tn.normal,tn.reduced=tn.root;const nn=[];let an=0;for(;an<64;)nn[an]=0|4294967296*Math.sin(++an%Math.PI);const rn=function(e){let t,n,a,r=decodeURI(encodeURI(e))+\"\",o=r.length;const i=[t=1732584193,n=4023233417,~t,~n],s=[];for(e=--o/4+2|15,s[--e]=8*o;~o;)s[o>>2]|=r.charCodeAt(o)<<8*o--;for(an=r=0;an<e;an+=16){for(o=i;r<64;o=[a=o[3],t+((a=o[0]+[t&n|~t&a,a&t|~a&n,t^n^a,n^(t|~a)][o=r>>4]+nn[r]+~~s[an|15&[r,5*r+1,3*r+5,7*r][o]])<<(o=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*o+r++%4])|a>>>-o),t,n])t=0|o[1],n=o[2];for(r=4;r;)i[--r]+=o[r]}for(e=\"\";r<32;)e+=(i[r>>3]>>4*(1^r++)&15).toString(16);return e},on={text:!0,terms:!0},sn={case:\"none\",unicode:\"some\",form:\"machine\",punctuation:\"some\"},ln=function(e,t){return Object.assign({},e,t)},un={text:e=>en(e,{keepPunct:!0},!1),normal:e=>en(e,ln(tn.normal,{keepPunct:!0}),!1),implicit:e=>en(e,ln(tn.implicit,{keepPunct:!0}),!1),machine:e=>en(e,sn,!1),root:e=>en(e,ln(sn,{form:\"root\"}),!1),hash:e=>rn(en(e,{keepPunct:!0},!1)),offset:e=>{const t=un.text(e).length;return{index:e[0].offset.index,start:e[0].offset.start,length:t}},terms:e=>e.map((e=>{const t=Object.assign({},e);return t.tags=Array.from(e.tags),t})),confidence:(e,t,n)=>t.eq(n).confidence(),syllables:(e,t,n)=>t.eq(n).syllables(),sentence:(e,t,n)=>t.eq(n).fullSentence().text(),dirty:e=>e.some((e=>!0===e.dirty))};un.sentences=un.sentence,un.clean=un.normal,un.reduced=un.root;const cn={json:function(e){const t=(n=this,\"string\"==typeof(a=(a=e)||{})&&(a={}),(a=Object.assign({},on,a)).offset&&n.compute(\"offset\"),n.docs.map(((e,t)=>{const r={};return Object.keys(a).forEach((o=>{a[o]&&un[o]&&(r[o]=un[o](e,n,t))})),r})));var n,a;return\"number\"==typeof e?t[e]:t}};cn.data=cn.json;const dn=function(e){const t=e.pre||\"\",n=e.post||\"\";return t+e.text+n},hn=function(e,t){const n=function(e,t){const n={};return Object.keys(t).forEach((a=>{e.match(a).fullPointer.forEach((e=>{n[e[3]]={fn:t[a],end:e[2]}}))})),n}(e,t);let a=\"\";return e.docs.forEach(((t,r)=>{for(let o=0;o<t.length;o+=1){const i=t[o];if(n.hasOwnProperty(i.id)){const{fn:s,end:l}=n[i.id],u=e.update([[r,o,l]]);a+=t[o].pre||\"\",a+=s(u),o=l-1,a+=t[o].post||\"\"}else a+=dn(i)}})),a},gn={debug:function(e){const t=this.methods.one.debug||{};return e&&t.hasOwnProperty(e)?(t[e](this),this):\"undefined\"!=typeof window&&window.document?(t.clientSide(this),this):(t.tags(this),this)},out:function(e){if(t=e,\"[object Object]\"===Object.prototype.toString.call(t))return hn(this,e);var t;if(\"text\"===e)return this.text();if(\"normal\"===e)return this.text(\"normal\");if(\"root\"===e)return this.text(\"root\");if(\"machine\"===e||\"reduced\"===e)return this.text(\"machine\");if(\"hash\"===e||\"md5\"===e)return rn(this.text());if(\"json\"===e)return this.json();if(\"offset\"===e||\"offsets\"===e)return this.compute(\"offset\"),this.json({offset:!0});if(\"array\"===e){const e=this.docs.map((e=>e.reduce(((e,t)=>e+t.pre+t.text+t.post),\"\").trim()));return e.filter((e=>e))}if(\"freq\"===e||\"frequency\"===e||\"topk\"===e)return function(e){const t={};e.forEach((e=>{t[e]=t[e]||0,t[e]+=1}));const n=Object.keys(t).map((e=>({normal:e,count:t[e]})));return n.sort(((e,t)=>e.count>t.count?-1:0))}(this.json({normal:!0}).map((e=>e.normal)));if(\"terms\"===e){let e=[];return this.docs.forEach((t=>{let n=t.map((e=>e.text));n=n.filter((e=>e)),e=e.concat(n)})),e}return\"tags\"===e?this.docs.map((e=>e.reduce(((e,t)=>(e[t.implicit||t.normal]=Array.from(t.tags),e)),{}))):\"debug\"===e?this.debug():this.text()},wrap:function(e){return hn(this,e)}};var mn={text:function(e){let t={};var n;if(e&&\"string\"==typeof e&&tn.hasOwnProperty(e)?t=Object.assign({},tn[e]):e&&(n=e,\"[object Object]\"===Object.prototype.toString.call(n))&&(t=Object.assign({},e)),void 0!==t.keepSpace||this.isFull()||(t.keepSpace=!1),void 0===t.keepEndPunct&&this.pointer){const e=this.pointer[0];e&&e[1]?t.keepEndPunct=!1:t.keepEndPunct=!0}return void 0===t.keepPunct&&(t.keepPunct=!0),void 0===t.keepSpace&&(t.keepSpace=!0),function(e,t){let n=\"\";if(!e||!e[0]||!e[0][0])return n;for(let a=0;a<e.length;a+=1)n+=en(e[a],t,!0);if(t.keepSpace||(n=n.trim()),!1===t.keepEndPunct){e[0][0].tags.has(\"Emoticon\")||(n=n.replace(Zt,\"\"));const t=e[e.length-1];t[t.length-1].tags.has(\"Emoticon\")||(n=n.replace(Qt,\"\")),n.endsWith(\"'\")&&!n.endsWith(\"s'\")&&(n=n.replace(/'/,\"\"))}return!0===t.cleanWhitespace&&(n=n.trim()),n}(this.docs,t)}};const pn=Object.assign({},gn,mn,cn,Rt),fn=\"\u001b[0m\",bn={green:e=>\"\u001b[32m\"+e+fn,red:e=>\"\u001b[31m\"+e+fn,blue:e=>\"\u001b[34m\"+e+fn,magenta:e=>\"\u001b[35m\"+e+fn,cyan:e=>\"\u001b[36m\"+e+fn,yellow:e=>\"\u001b[33m\"+e+fn,black:e=>\"\u001b[30m\"+e+fn,dim:e=>\"\u001b[2m\"+e+fn,i:e=>\"\u001b[3m\"+e+fn},yn={tags:function(e){const{docs:t,model:n}=e;0===t.length&&console.log(bn.blue(\"\\n     ──────\")),t.forEach((t=>{console.log(bn.blue(\"\\n  ┌─────────\")),t.forEach((t=>{const a=[...t.tags||[]];let r=t.text||\"-\";t.sense&&(r=`{${t.normal}/${t.sense}}`),t.implicit&&(r=\"[\"+t.implicit+\"]\"),r=bn.yellow(r);let o=\"'\"+r+\"'\";if(t.reference){const n=e.update([t.reference]).text(\"normal\");o+=` - ${bn.dim(bn.i(\"[\"+n+\"]\"))}`}o=o.padEnd(18);const i=bn.blue(\"  │ \")+bn.i(o)+\"  - \"+function(e,t){return t.one.tagSet&&(e=e.map((e=>{if(!t.one.tagSet.hasOwnProperty(e))return e;const n=t.one.tagSet[e].color||\"blue\";return bn[n](e)}))),e.join(\", \")}(a,n);console.log(i)}))})),console.log(\"\\n\")},clientSide:function(e){console.log(\"%c -=-=- \",\"background-color:#6699cc;\"),e.forEach((e=>{console.groupCollapsed(e.text());const t=e.docs[0].map((e=>{let t=e.text||\"-\";e.implicit&&(t=\"[\"+e.implicit+\"]\");return{text:t,tags:\"[\"+Array.from(e.tags).join(\", \")+\"]\"}}));console.table(t,[\"text\",\"tags\"]),console.groupEnd()}))},chunks:function(e){const{docs:t}=e;console.log(\"\"),t.forEach((e=>{const t=[];e.forEach((e=>{\"Noun\"===e.chunk?t.push(bn.blue(e.implicit||e.normal)):\"Verb\"===e.chunk?t.push(bn.green(e.implicit||e.normal)):\"Adjective\"===e.chunk?t.push(bn.yellow(e.implicit||e.normal)):\"Pivot\"===e.chunk?t.push(bn.red(e.implicit||e.normal)):t.push(e.implicit||e.normal)})),console.log(t.join(\" \"),\"\\n\")})),console.log(\"\\n\")},highlight:function(e){if(!e.found)return;const t={};e.fullPointer.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),Object.keys(t).forEach((n=>{let a=e.update([[Number(n)]]).text();e.update(t[n]).json({offset:!0}).forEach(((e,t)=>{a=function(e,t,n){const a=((e,t,n)=>{const a=9*n,r=t.start+a,o=r+t.length;return[e.substring(0,r),e.substring(r,o),e.substring(o,e.length)]})(e,t,n);return`${a[0]}${bn.blue(a[1])}${a[2]}`}(a,e.offset,t)})),console.log(a)})),console.log(\"\\n\")}};var vn={api:function(e){Object.assign(e.prototype,pn)},methods:{one:{hash:rn,debug:yn}}};const wn=function(e,t){if(e[0]!==t[0])return!1;const[,n,a]=e,[,r,o]=t;return n<=r&&a>r||r<=n&&o>n},kn=function(e){const t={};return e.forEach((e=>{t[e[0]]=t[e[0]]||[],t[e[0]].push(e)})),t},Pn=function(e,t){const n=kn(t),a=[];return e.forEach((e=>{const[t]=e;let r=n[t]||[];if(r=r.filter((t=>function(e,t){return e[1]<=t[1]&&t[2]<=e[2]}(e,t))),0===r.length)return void a.push({passthrough:e});r=r.sort(((e,t)=>e[1]-t[1]));let o=e;r.forEach(((e,t)=>{const n=function(e,t){const[n,a]=e,r=t[1],o=t[2],i={};if(a<r){const t=r<e[2]?r:e[2];i.before=[n,a,t]}return i.match=t,e[2]>o&&(i.after=[n,o,e[2]]),i}(o,e);r[t+1]?(a.push({before:n.before,match:n.match}),n.after&&(o=n.after)):a.push(n)}))})),a};var An={one:{termList:function(e){const t=[];for(let n=0;n<e.length;n+=1)for(let a=0;a<e[n].length;a+=1)t.push(e[n][a]);return t},getDoc:function(e,t){let n=[];return e.forEach(((a,r)=>{if(!a)return;let[o,i,s,l,u]=a,c=t[o]||[];if(void 0===i&&(i=0),void 0===s&&(s=c.length),!l||c[i]&&c[i].id===l)c=c.slice(i,s);else{const n=function(e,t,n){for(let a=0;a<20;a+=1){if(t[n-a]){const r=t[n-a].findIndex((t=>t.id===e));if(-1!==r)return[n-a,r]}if(t[n+a]){const r=t[n+a].findIndex((t=>t.id===e));if(-1!==r)return[n+a,r]}}return null}(l,t,o);if(null!==n){const a=s-i;c=t[n[0]].slice(n[1],n[1]+a);const o=c[0]?c[0].id:null;e[r]=[n[0],n[1],n[1]+a,o]}}0!==c.length&&i!==s&&(u&&c[c.length-1].id!==u&&(c=function(e,t){const[n,a,,,r]=e,o=t[n],i=o.findIndex((e=>e.id===r));return-1===i?(e[2]=t[n].length,e[4]=o.length?o[o.length-1].id:null):e[2]=i,t[n].slice(a,e[2]+1)}(a,t)),n.push(c))})),n=n.filter((e=>e.length>0)),n},pointer:{indexN:kn,splitAll:Pn}}};const Cn=function(e,t){const n=e.concat(t),a=kn(n);let r=[];return n.forEach((e=>{const[t]=e;if(1===a[t].length)return void r.push(e);const n=a[t].filter((t=>wn(e,t)));n.push(e);const o=function(e){let t=e[0][1],n=e[0][2];return e.forEach((e=>{e[1]<t&&(t=e[1]),e[2]>n&&(n=e[2])})),[e[0][0],t,n]}(n);r.push(o)})),r=function(e){const t={};for(let n=0;n<e.length;n+=1)t[e[n].join(\",\")]=e[n];return Object.values(t)}(r),r},jn=function(e,t){const n=[];return Pn(e,t).forEach((e=>{e.passthrough&&n.push(e.passthrough),e.before&&n.push(e.before),e.after&&n.push(e.after)})),n},Nn=(e,t)=>{return\"string\"==typeof e||(n=e,\"[object Array]\"===Object.prototype.toString.call(n))?t.match(e):e||t.none();var n},In=function(e,t){return e.map((e=>{const[n,a]=e;return t[n]&&t[n][a]&&(e[3]=t[n][a].id),e}))},Dn={union:function(e){e=Nn(e,this);let t=Cn(this.fullPointer,e.fullPointer);return t=In(t,this.document),this.toView(t)}};Dn.and=Dn.union,Dn.intersection=function(e){e=Nn(e,this);let t=function(e,t){const n=kn(t),a=[];return e.forEach((e=>{let t=n[e[0]]||[];t=t.filter((t=>wn(e,t))),0!==t.length&&t.forEach((t=>{const n=function(e,t){const n=e[1]<t[1]?t[1]:e[1],a=e[2]>t[2]?t[2]:e[2];return n<a?[e[0],n,a]:null}(e,t);n&&a.push(n)}))})),a}(this.fullPointer,e.fullPointer);return t=In(t,this.document),this.toView(t)},Dn.not=function(e){e=Nn(e,this);let t=jn(this.fullPointer,e.fullPointer);return t=In(t,this.document),this.toView(t)},Dn.difference=Dn.not,Dn.complement=function(){const e=this.all();let t=jn(e.fullPointer,this.fullPointer);return t=In(t,this.document),this.toView(t)},Dn.settle=function(){let e=this.fullPointer;return e.forEach((t=>{e=Cn(e,[t])})),e=In(e,this.document),this.update(e)};var Hn={methods:An,api:function(e){Object.assign(e.prototype,Dn)}};const Gn=function(e){return!0===e.optional||!0===e.negative?null:e.tag?\"#\"+e.tag:e.word?e.word:e.switch?`%${e.switch}%`:null},Tn=function(e,t){const n=t.methods.one.parseMatch;return e.forEach((e=>{e.regs=n(e.match,{},t),\"string\"==typeof e.ifNo&&(e.ifNo=[e.ifNo]),e.notIf&&(e.notIf=n(e.notIf,{},t)),e.needs=function(e){const t=[];return e.forEach((e=>{t.push(Gn(e)),\"and\"===e.operator&&e.choices&&e.choices.forEach((e=>{e.forEach((e=>{t.push(Gn(e))}))}))})),t.filter((e=>e))}(e.regs);const{wants:a,count:r}=function(e){const t=[];let n=0;return e.forEach((e=>{\"or\"!==e.operator||e.optional||e.negative||(e.fastOr&&Array.from(e.fastOr).forEach((e=>{t.push(e)})),e.choices&&e.choices.forEach((e=>{e.forEach((e=>{const n=Gn(e);n&&t.push(n)}))})),n+=1)})),{wants:t,count:n}}(e.regs);e.wants=a,e.minWant=r,e.minWords=e.regs.filter((e=>!e.optional)).length})),e};var xn={buildNet:function(e,t){e=Tn(e,t);const n={};e.forEach((e=>{e.needs.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)})),e.wants.forEach((t=>{n[t]=Array.isArray(n[t])?n[t]:[],n[t].push(e)}))})),Object.keys(n).forEach((e=>{const t={};n[e]=n[e].filter((e=>\"boolean\"!=typeof t[e.match]&&(t[e.match]=!0,!0)))}));const a=e.filter((e=>0===e.needs.length&&0===e.wants.length));return{hooks:n,always:a}},bulkMatch:function(e,t,n,a={}){const r=n.one.cacheDoc(e);let o=function(e,t){return e.map(((n,a)=>{let r=[];Object.keys(t).forEach((n=>{e[a].has(n)&&(r=r.concat(t[n]))}));const o={};return r=r.filter((e=>\"boolean\"!=typeof o[e.match]&&(o[e.match]=!0,!0))),r}))}(r,t.hooks);o=function(e,t){return e.map(((e,n)=>{const a=t[n];return(e=(e=e.filter((e=>e.needs.every((e=>a.has(e)))))).filter((e=>void 0===e.ifNo||!0!==e.ifNo.some((e=>a.has(e)))))).filter((e=>0===e.wants.length||e.wants.filter((e=>a.has(e))).length>=e.minWant))}))}(o,r),t.always.length>0&&(o=o.map((e=>e.concat(t.always)))),o=function(e,t){return e.map(((e,n)=>{const a=t[n].length;return e=e.filter((e=>a>=e.minWords)),e}))}(o,e);const i=function(e,t,n,a,r){const o=[];for(let n=0;n<e.length;n+=1)for(let i=0;i<e[n].length;i+=1){const s=e[n][i],l=a.one.match([t[n]],s);if(l.ptrs.length>0&&(l.ptrs.forEach((e=>{e[0]=n;const t=Object.assign({},s,{pointer:e});void 0!==s.unTag&&(t.unTag=s.unTag),o.push(t)})),!0===r.matchOne))return[o[0]]}return o}(o,e,0,n,a);return i},bulkTagger:function(e,t,n){const{model:a,methods:r}=n,{getDoc:o,setTag:i,unTag:s}=r.one,l=r.two.looksPlural;if(0===e.length)return e;return(\"undefined\"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_TAGS&&console.log(`\\n\\n  \u001b[32m→ ${e.length} post-tagger:\u001b[0m`),e.map((e=>{if(!e.tag&&!e.chunk&&!e.unTag)return;const r=e.reason||e.match,u=o([e.pointer],t)[0];if(!0===e.safe){if(!1===function(e,t,n){const a=n.one.tagSet;if(!a.hasOwnProperty(t))return!0;const r=a[t].not||[];for(let t=0;t<e.length;t+=1){const n=e[t];for(let e=0;e<r.length;e+=1)if(!0===n.tags.has(r[e]))return!1}return!0}(u,e.tag,a))return;if(\"-\"===u[u.length-1].post)return}if(void 0!==e.tag){if(i(u,e.tag,n,e.safe,`[post] '${r}'`),\"Noun\"===e.tag&&l){const t=u[u.length-1];l(t.text)?i([t],\"Plural\",n,e.safe,\"quick-plural\"):i([t],\"Singular\",n,e.safe,\"quick-singular\")}!0===e.freeze&&u.forEach((e=>e.frozen=!0))}void 0!==e.unTag&&s(u,e.unTag,n,e.safe,r),e.chunk&&u.forEach((t=>t.chunk=e.chunk))}))}},En={lib:{buildNet:function(e){const t=this.methods().one.buildNet(e,this.world());return t.isNet=!0,t}},api:function(e){e.prototype.sweep=function(e,t={}){const{world:n,docs:a}=this,{methods:r}=n;let o=r.one.bulkMatch(a,e,this.methods,t);!1!==t.tagger&&r.one.bulkTagger(o,a,this.world),o=o.map((e=>{const t=e.pointer,n=a[t[0]][t[1]],r=t[2]-t[1];return n.index&&(e.pointer=[n.index[0],n.index[1],t[1]+r]),e}));const i=o.map((e=>e.pointer));return o=o.map((e=>(e.view=this.update([e.pointer]),delete e.regs,delete e.needs,delete e.pointer,delete e._expanded,e))),{view:this.update(i),found:o}}},methods:{one:xn}};const Fn=/ /,On=function(e,t){\"Noun\"===t&&(e.chunk=t),\"Verb\"===t&&(e.chunk=t)},zn=function(e,t,n,a){if(!0===e.tags.has(t))return null;if(\".\"===t)return null;!0===e.frozen&&(a=!0);const r=n[t];if(r){if(r.not&&r.not.length>0)for(let t=0;t<r.not.length;t+=1){if(!0===a&&e.tags.has(r.not[t]))return null;e.tags.delete(r.not[t])}if(r.parents&&r.parents.length>0)for(let t=0;t<r.parents.length;t+=1)e.tags.add(r.parents[t]),On(e,r.parents[t])}return e.tags.add(t),e.dirty=!0,On(e,t),!0},Vn=function(e,t,n={},a,r){const o=n.model.one.tagSet||{};if(!t)return;const i=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};var s;if(i&&i.DEBUG_TAGS&&((e,t,n=\"\")=>{const a=e.map((e=>e.text||\"[\"+e.implicit+\"]\")).join(\" \");var r;\"string\"!=typeof t&&t.length>2&&(t=t.slice(0,2).join(\", #\")+\" +\"),t=\"string\"!=typeof t?t.join(\", #\"):t,console.log(` ${(r=a,\"\u001b[33m\u001b[3m\"+r+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${t.padEnd(22)}  ${(e=>\"\u001b[3m\"+e+\"\u001b[0m\")(n)}`)})(e,t,r),!0!=(s=t,\"[object Array]\"===Object.prototype.toString.call(s)))if(\"string\"==typeof t)if(t=t.trim(),Fn.test(t))!function(e,t,n,a){const r=t.split(Fn);e.forEach(((e,t)=>{let o=r[t];o&&(o=o.replace(/^#/,\"\"),zn(e,o,n,a))}))}(e,t,o,a);else{t=t.replace(/^#/,\"\");for(let n=0;n<e.length;n+=1)zn(e[n],t,o,a)}else console.warn(`compromise: Invalid tag '${t}'`);else t.forEach((t=>Vn(e,t,n,a)))},Bn=function(e){return e.children=e.children||[],e._cache=e._cache||{},e.props=e.props||{},e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],e},Sn=/^ *(#|\\/\\/)/,Kn=function(e){let t=e.trim().split(/->/),n=[];t.forEach((e=>{n=n.concat(function(e){if(!(e=e.trim()))return null;if(/^\\[/.test(e)&&/\\]$/.test(e)){let t=(e=(e=e.replace(/^\\[/,\"\")).replace(/\\]$/,\"\")).split(/,/);return t=t.map((e=>e.trim())).filter((e=>e)),t=t.map((e=>Bn({id:e}))),t}return[Bn({id:e})]}(e))})),n=n.filter((e=>e));let a=n[0];for(let e=1;e<n.length;e+=1)a.children.push(n[e]),a=n[e];return n[0]},$n=(e,t)=>{let n=[],a=[e];for(;a.length>0;){let e=a.pop();n.push(e),e.children&&e.children.forEach((n=>{t&&t(e,n),a.push(n)}))}return n},Ln=e=>\"[object Array]\"===Object.prototype.toString.call(e),Mn=e=>(e=e||\"\").trim(),Jn=function(e=[]){return\"string\"==typeof e?function(e){let t=e.split(/\\r?\\n/),n=[];t.forEach((e=>{if(!e.trim()||Sn.test(e))return;let t=(e=>{const t=/^( {2}|\\t)/;let n=0;for(;t.test(e);)e=e.replace(t,\"\"),n+=1;return n})(e);n.push({indent:t,node:Kn(e)})}));let a=function(e){let t={children:[]};return e.forEach(((n,a)=>{0===n.indent?t.children=t.children.concat(n.node):e[a-1]&&function(e,t){let n=e[t].indent;for(;t>=0;t-=1)if(e[t].indent<n)return e[t];return e[0]}(e,a).node.children.push(n.node)})),t}(n);return a=Bn(a),a}(e):Ln(e)?function(e){let t={};e.forEach((e=>{t[e.id]=e}));let n=Bn({});return e.forEach((e=>{if((e=Bn(e)).parent)if(t.hasOwnProperty(e.parent)){let n=t[e.parent];delete e.parent,n.children.push(e)}else console.warn(`[Grad] - missing node '${e.parent}'`);else n.children.push(e)})),n}(e):($n(t=e).forEach(Bn),t);var t},Wn=function(e,t){let n=\"-> \";t&&(n=(e=>\"\u001b[2m\"+e+\"\u001b[0m\")(\"→ \"));let a=\"\";return $n(e).forEach(((e,r)=>{let o=e.id||\"\";if(t&&(o=(e=>\"\u001b[31m\"+e+\"\u001b[0m\")(o)),0===r&&!e.id)return;let i=e._cache.parents.length;a+=\"    \".repeat(i)+n+o+\"\\n\"})),a},Un=function(e){let t=$n(e);t.forEach((e=>{delete(e=Object.assign({},e)).children}));let n=t[0];return n&&!n.id&&0===Object.keys(n.props).length&&t.shift(),t},qn={text:Wn,txt:Wn,array:Un,flat:Un},Rn=function(e,t){return\"nested\"===t||\"json\"===t?e:\"debug\"===t?(console.log(Wn(e,!0)),null):qn.hasOwnProperty(t)?qn[t](e):e},Qn=e=>{$n(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],t._cache.parents=e._cache.parents.concat([e.id]))}))},Zn=/\\//;let Xn=class g{constructor(e={}){Object.defineProperty(this,\"json\",{enumerable:!1,value:e,writable:!0})}get children(){return this.json.children}get id(){return this.json.id}get found(){return this.json.id||this.json.children.length>0}props(e={}){let t=this.json.props||{};return\"string\"==typeof e&&(t[e]=!0),this.json.props=Object.assign(t,e),this}get(e){if(e=Mn(e),!Zn.test(e)){let t=this.json.children.find((t=>t.id===e));return new g(t)}let t=((e,t)=>{let n=(e=>\"string\"!=typeof e?e:(e=e.replace(/^\\//,\"\")).split(/\\//))(t=t||\"\");for(let t=0;t<n.length;t+=1){let a=e.children.find((e=>e.id===n[t]));if(!a)return null;e=a}return e})(this.json,e)||Bn({});return new g(t)}add(e,t={}){if(Ln(e))return e.forEach((e=>this.add(Mn(e),t))),this;e=Mn(e);let n=Bn({id:e,props:t});return this.json.children.push(n),new g(n)}remove(e){return e=Mn(e),this.json.children=this.json.children.filter((t=>t.id!==e)),this}nodes(){return $n(this.json).map((e=>(delete(e=Object.assign({},e)).children,e)))}cache(){return(e=>{let t=$n(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],e._cache.children=e._cache.children||[],t._cache.parents=e._cache.parents.concat([e.id]))})),n={};t.forEach((e=>{e.id&&(n[e.id]=e)})),t.forEach((e=>{e._cache.parents.forEach((t=>{n.hasOwnProperty(t)&&n[t]._cache.children.push(e.id)}))})),e._cache.children=Object.keys(n)})(this.json),this}list(){return $n(this.json)}fillDown(){var e;return e=this.json,$n(e,((e,t)=>{t.props=((e,t)=>(Object.keys(t).forEach((n=>{if(t[n]instanceof Set){let a=e[n]||new Set;e[n]=new Set([...a,...t[n]])}else if((e=>e&&\"object\"==typeof e&&!Array.isArray(e))(t[n])){let a=e[n]||{};e[n]=Object.assign({},t[n],a)}else Ln(t[n])?e[n]=t[n].concat(e[n]||[]):void 0===e[n]&&(e[n]=t[n])})),e))(t.props,e.props)})),this}depth(){Qn(this.json);let e=$n(this.json),t=e.length>1?1:0;return e.forEach((e=>{if(0===e._cache.parents.length)return;let n=e._cache.parents.length+1;n>t&&(t=n)})),t}out(e){return Qn(this.json),Rn(this.json,e)}debug(){return Qn(this.json),Rn(this.json,\"debug\"),this}};const _n=function(e){let t=Jn(e);return new Xn(t)};_n.prototype.plugin=function(e){e(this)};const Yn={Noun:\"blue\",Verb:\"green\",Negative:\"green\",Date:\"red\",Value:\"red\",Adjective:\"magenta\",Preposition:\"cyan\",Conjunction:\"cyan\",Determiner:\"cyan\",Hyphenated:\"cyan\",Adverb:\"cyan\"},ea=function(e){if(Yn.hasOwnProperty(e.id))return Yn[e.id];if(Yn.hasOwnProperty(e.is))return Yn[e.is];const t=e._cache.parents.find((e=>Yn[e]));return Yn[t]},ta=function(e){return e?\"string\"==typeof e?[e]:e:[]},na=function(e,t){return e=function(e,t){return Object.keys(e).forEach((n=>{e[n].isA&&(e[n].is=e[n].isA),e[n].notA&&(e[n].not=e[n].notA),e[n].is&&\"string\"==typeof e[n].is&&(t.hasOwnProperty(e[n].is)||e.hasOwnProperty(e[n].is)||(e[e[n].is]={})),e[n].not&&\"string\"==typeof e[n].not&&!e.hasOwnProperty(e[n].not)&&(t.hasOwnProperty(e[n].not)||e.hasOwnProperty(e[n].not)||(e[e[n].not]={}))})),e}(e,t),Object.keys(e).forEach((t=>{e[t].children=ta(e[t].children),e[t].not=ta(e[t].not)})),Object.keys(e).forEach((t=>{(e[t].not||[]).forEach((n=>{e[n]&&e[n].not&&e[n].not.push(t)}))})),e};var aa={one:{setTag:Vn,unTag:function(e,t,n){t=t.trim().replace(/^#/,\"\");for(let a=0;a<e.length;a+=1){const r=e[a];if(!0===r.frozen)continue;if(\"*\"===t){r.tags.clear();continue}const o=n[t];if(o&&o.children.length>0)for(let e=0;e<o.children.length;e+=1)r.tags.delete(o.children[e]);r.tags.delete(t)}},addTags:function(e,t){Object.keys(t).length>0&&(e=function(e){return Object.keys(e).forEach((t=>{e[t]=Object.assign({},e[t]),e[t].novel=!0})),e}(e)),e=na(e,t);const n=function(e){const t=Object.keys(e).map((t=>{const n=e[t],a={not:new Set(n.not),also:n.also,is:n.is,novel:n.novel};return{id:t,parent:n.is,props:a,children:[]}}));return _n(t).cache().fillDown().out(\"array\")}(Object.assign({},t,e)),a=function(e){const t={};return e.forEach((e=>{const{not:n,also:a,is:r,novel:o}=e.props;let i=e._cache.parents;a&&(i=i.concat(a)),t[e.id]={is:r,not:n,novel:o,also:a,parents:i,children:e._cache.children,color:ea(e)}})),Object.keys(t).forEach((e=>{const n=new Set(t[e].not);t[e].not.forEach((e=>{t[e]&&t[e].children.forEach((e=>n.add(e)))})),t[e].not=Array.from(n)})),t}(n);return a},canBe:function(e,t,n){if(!n.hasOwnProperty(t))return!0;const a=n[t].not||[];for(let t=0;t<a.length;t+=1)if(e.tags.has(a[t]))return!1;return!0}}};const ra=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},oa={tag:function(e,t=\"\",n){if(!this.found||!e)return this;const a=this.termList();if(0===a.length)return this;const{methods:r,verbose:o,world:i}=this;return!0===o&&console.log(\" +  \",e,t||\"\"),ra(e)?e.forEach((e=>r.one.setTag(a,e,i,n,t))):r.one.setTag(a,e,i,n,t),this.uncache(),this},tagSafe:function(e,t=\"\"){return this.tag(e,t,!0)},unTag:function(e,t){if(!this.found||!e)return this;const n=this.termList();if(0===n.length)return this;const{methods:a,verbose:r,model:o}=this;!0===r&&console.log(\" -  \",e,t||\"\");const i=o.one.tagSet;return ra(e)?e.forEach((e=>a.one.unTag(n,e,i))):a.one.unTag(n,e,i),this.uncache(),this},canBe:function(e){e=e.replace(/^#/,\"\");const t=this.model.one.tagSet,n=this.methods.one.canBe,a=[];this.document.forEach(((r,o)=>{r.forEach(((r,i)=>{n(r,e,t)||a.push([o,i,i+1])}))}));const r=this.update(a);return this.difference(r)}};var ia={addTags:function(e){const{model:t,methods:n}=this.world(),a=t.one.tagSet,r=(0,n.one.addTags)(e,a);return t.one.tagSet=r,this}};const sa=new Set([\"Auxiliary\",\"Possessive\"]);var la={model:{one:{tagSet:{}}},compute:{tagRank:function(e){const{document:t,world:n}=e,a=n.model.one.tagSet;t.forEach((e=>{e.forEach((e=>{const t=Array.from(e.tags);e.tagRank=function(e,t){return e=e.sort(((e,n)=>{if(sa.has(e)||!t.hasOwnProperty(n))return 1;if(sa.has(n)||!t.hasOwnProperty(e))return-1;let a=t[e].children||[];const r=a.length;return a=t[n].children||[],r-a.length})),e}(t,a)}))}))}},methods:aa,api:function(e){Object.assign(e.prototype,oa)},lib:ia};const ua=/([.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s)/g,ca=/^[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s$/,da=/((?:\\r?\\n|\\r)+)/,ha=/[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i,ga=/\\S/,ma=function(e){return Boolean(e.match(/\\n$/))},pa={'\"':'\"',\"＂\":\"＂\",\"“\":\"”\",\"‟\":\"”\",\"„\":\"”\",\"⹂\":\"”\",\"‚\":\"’\",\"«\":\"»\",\"‹\":\"›\",\"‵\":\"′\",\"‶\":\"″\",\"‷\":\"‴\",\"〝\":\"〞\",\"〟\":\"〞\"},fa=RegExp(\"[\"+Object.keys(pa).join(\"\")+\"]\",\"g\"),ba=RegExp(\"[\"+Object.values(pa).join(\"\")+\"]\",\"g\"),ya=function(e){if(!e)return!1;const t=e.match(ba);return null!==t&&1===t.length},va=/\\(/g,wa=/\\)/g,ka=/\\S/,Pa=/^\\s+/,Aa=function(e,t){const n=e.split(/[-–—]/);if(n.length<=1)return!1;const{prefixes:a,suffixes:r}=t.one;if(1===n[0].length&&/[a-z]/i.test(n[0]))return!1;if(a.hasOwnProperty(n[0]))return!1;if(n[1]=n[1].trim().replace(/[.?!]$/,\"\"),r.hasOwnProperty(n[1]))return!1;if(!0===/^([a-z\\u00C0-\\u00FF`\"'/]+)[-–—]([a-z0-9\\u00C0-\\u00FF].*)/i.test(e))return!0;return!0===/^[('\"]?([0-9]{1,4})[-–—]([a-z\\u00C0-\\u00FF`\"'/-]+[)'\"]?$)/i.test(e)},Ca=function(e){const t=[],n=e.split(/[-–—]/);let a=\"-\";const r=e.match(/[-–—]/);r&&r[0]&&(a=r);for(let e=0;e<n.length;e++)e===n.length-1?t.push(n[e]):t.push(n[e]+a);return t},ja=/\\p{L} ?\\/ ?\\p{L}+$/u,Na=/\\S/,Ia=/^[!?.]+$/,Da=/(\\S+)/;let Ha=[\".\",\"?\",\"!\",\":\",\";\",\"-\",\"–\",\"—\",\"--\",\"...\",\"(\",\")\",\"[\",\"]\",'\"',\"'\",\"`\",\"«\",\"»\",\"*\",\"•\"];Ha=Ha.reduce(((e,t)=>(e[t]=!0,e)),{});const Ga=/\\p{Letter}/u,Ta=/[\\p{Number}\\p{Currency_Symbol}]/u,xa=/^[a-z]\\.([a-z]\\.)+/i,Ea=/[sn]['’]$/,Fa=/([A-Z]\\.)+[A-Z]?,?$/,Oa=/^[A-Z]\\.,?$/,za=/[A-Z]{2,}('s|,)?$/,Va=/([a-z]\\.)+[a-z]\\.?$/,Ba=function(e){return function(e){return!0===Fa.test(e)||!0===Va.test(e)||!0===Oa.test(e)||!0===za.test(e)}(e)&&(e=e.replace(/\\./g,\"\")),e},Sa=function(e,t){const n=t.methods.one.killUnicode;let a=e.text||\"\";a=function(e){const t=e=(e=(e=e||\"\").toLowerCase()).trim();return e=(e=(e=e.replace(/[,;.!?]+$/,\"\")).replace(/\\u2026/g,\"...\")).replace(/\\u2013/g,\"-\"),!1===/^[:;]/.test(e)&&(e=(e=(e=e.replace(/\\.{3,}$/g,\"\")).replace(/[\",.!:;?)]+$/g,\"\")).replace(/^['\"(]+/g,\"\")),\"\"===(e=(e=e.replace(/[\\u200B-\\u200D\\uFEFF]/g,\"\")).trim())&&(e=t),e.replace(/([0-9]),([0-9])/g,\"$1$2\")}(a),a=n(a,t),a=Ba(a),e.normal=a},Ka=/[ .][A-Z]\\.? *$/i,$a=/(?:\\u2026|\\.{2,}) *$/,La=/\\p{L}/u,Ma=/\\. *$/,Ja=/^[A-Z]\\. $/;var Wa={one:{killUnicode:function(e,t){const n=t.model.one.unicode||{},a=(e=e||\"\").split(\"\");return a.forEach(((e,t)=>{n[e]&&(a[t]=n[e])})),a.join(\"\")},tokenize:{splitSentences:function(e,t){if(e=e||\"\",!(e=String(e))||\"string\"!=typeof e||!1===ka.test(e))return[];const n=function(e){const t=[],n=e.split(da);for(let e=0;e<n.length;e++){const a=n[e].split(ua);for(let e=0;e<a.length;e++)a[e+1]&&!0===ca.test(a[e+1])&&(a[e]+=a[e+1],a[e+1]=\"\"),\"\"!==a[e]&&t.push(a[e])}return t}(e=e.replace(\" \",\" \"));let a=function(e){const t=[];for(let n=0;n<e.length;n++){const a=e[n];if(void 0!==a&&\"\"!==a){if(!1===ga.test(a)||!1===ha.test(a)){if(t[t.length-1]){t[t.length-1]+=a;continue}if(e[n+1]){e[n+1]=a+e[n+1];continue}}t.push(a)}}return t}(n);if(a=function(e,t){const n=t.methods.one.tokenize.isSentence,a=t.model.one.abbreviations||new Set,r=[];for(let t=0;t<e.length;t++){const o=e[t];!e[t+1]||n(o,a)||ma(o)?o&&o.length>0&&(r.push(o),e[t]=\"\"):e[t+1]=o+(e[t+1]||\"\")}return r}(a,t),a=function(e){const t=[];for(let n=0;n<e.length;n+=1){const a=e[n].match(fa);if(null!==a&&1===a.length){if(ya(e[n+1])&&e[n+1].length<280){e[n]+=e[n+1],t.push(e[n]),e[n+1]=\"\",n+=1;continue}if(ya(e[n+2])){const a=e[n+1]+e[n+2];if(a.length<280){e[n]+=a,t.push(e[n]),e[n+1]=\"\",e[n+2]=\"\",n+=2;continue}}}t.push(e[n])}return t}(a),a=function(e){const t=[];for(let n=0;n<e.length;n+=1){const a=e[n].match(va);null!==a&&1===a.length&&e[n+1]&&e[n+1].length<250&&null!==e[n+1].match(wa)&&1===a.length&&!va.test(e[n+1])?(e[n]+=e[n+1],t.push(e[n]),e[n+1]=\"\",n+=1):t.push(e[n])}return t}(a),0===a.length)return[e];for(let e=1;e<a.length;e+=1){const t=a[e].match(Pa);null!==t&&(a[e-1]+=t[0],a[e]=a[e].replace(Pa,\"\"))}return a},isSentence:function(e,t){if(!1===La.test(e))return!1;if(!0===Ka.test(e))return!1;if(3===e.length&&Ja.test(e))return!1;if(!0===$a.test(e))return!1;const n=e.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/,\"\").split(\" \"),a=n[n.length-1].toLowerCase();return!0!==t.hasOwnProperty(a)||!0!==Ma.test(e)},splitTerms:function(e,t){let n=[],a=[];if(\"number\"==typeof(e=e||\"\")&&(e=String(e)),function(e){return\"[object Array]\"===Object.prototype.toString.call(e)}(e))return e;const r=e.split(Da);for(let e=0;e<r.length;e++)!0!==Aa(r[e],t)?a.push(r[e]):a=a.concat(Ca(r[e]));let o=\"\";for(let e=0;e<a.length;e++){const t=a[e];!0===Na.test(t)&&!1===Ha.hasOwnProperty(t)&&!1===Ia.test(t)?(n.length>0?(n[n.length-1]+=o,n.push(t)):n.push(o+t),o=\"\"):o+=t}return o&&(0===n.length&&(n[0]=\"\"),n[n.length-1]+=o),n=function(e){for(let t=1;t<e.length-1;t++)ja.test(e[t])&&(e[t-1]+=e[t]+e[t+1],e[t]=null,e[t+1]=null);return e}(n),n=function(e){const t=/^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?[-–—] ?$/,n=/^[0-9]{1,4}([a-z]{1,2})? ?$/;for(let a=0;a<e.length-1;a+=1)e[a+1]&&t.test(e[a])&&n.test(e[a+1])&&(e[a]=e[a]+e[a+1],e[a+1]=null);return e}(n),n=n.filter((e=>e)),n},splitWhitespace:(e,t)=>{const{str:n,pre:a,post:r}=function(e,t){const{prePunctuation:n,postPunctuation:a,emoticons:r}=t.one;let o=e,i=\"\",s=\"\";const l=Array.from(e);if(r.hasOwnProperty(e.trim()))return{str:e.trim(),pre:i,post:\" \"};let u=l.length;for(let e=0;e<u;e+=1){const e=l[0];if(!0!==n[e]){if((\"+\"===e||\"-\"===e)&&Ta.test(l[1]))break;if(\"'\"===e&&3===e.length&&Ta.test(l[1]))break;if(Ga.test(e)||Ta.test(e))break;i+=l.shift()}}u=l.length;for(let e=0;e<u;e+=1){const e=l[l.length-1];if(!0!==a[e]){if(Ga.test(e)||Ta.test(e))break;\".\"===e&&!0===xa.test(o)||\"'\"===e&&!0===Ea.test(o)||(s=l.pop()+s)}}return\"\"===(e=l.join(\"\"))&&(o=o.replace(/ *$/,(e=>(s=e||\"\",\"\"))),e=o,i=\"\"),{str:e,pre:i,post:s}}(e,t);return{text:n,pre:a,post:r,tags:new Set}},fromString:function(e,t){const{methods:n,model:a}=t,{splitSentences:r,splitTerms:o,splitWhitespace:i}=n.one.tokenize;return e=r(e=e||\"\",t).map((e=>{let n=o(e,a);return n=n.map((e=>i(e,a))),n.forEach((e=>{Sa(e,t)})),n})),e}}}};const Ua={},qa={};[[[\"approx\",\"apt\",\"bc\",\"cyn\",\"eg\",\"esp\",\"est\",\"etc\",\"ex\",\"exp\",\"prob\",\"pron\",\"gal\",\"min\",\"pseud\",\"fig\",\"jd\",\"lat\",\"lng\",\"vol\",\"fm\",\"def\",\"misc\",\"plz\",\"ea\",\"ps\",\"sec\",\"pt\",\"pref\",\"pl\",\"pp\",\"qt\",\"fr\",\"sq\",\"nee\",\"ss\",\"tel\",\"temp\",\"vet\",\"ver\",\"fem\",\"masc\",\"eng\",\"adj\",\"vb\",\"rb\",\"inf\",\"situ\",\"vivo\",\"vitro\",\"wr\"]],[[\"dl\",\"ml\",\"gal\",\"qt\",\"pt\",\"tbl\",\"tsp\",\"tbsp\",\"km\",\"dm\",\"cm\",\"mm\",\"mi\",\"td\",\"hr\",\"hrs\",\"kg\",\"hg\",\"dg\",\"cg\",\"mg\",\"µg\",\"lb\",\"oz\",\"sq ft\",\"hz\",\"mps\",\"mph\",\"kmph\",\"kb\",\"mb\",\"tb\",\"lx\",\"lm\",\"fl oz\",\"yb\"],\"Unit\"],[[\"ad\",\"al\",\"arc\",\"ba\",\"bl\",\"ca\",\"cca\",\"col\",\"corp\",\"ft\",\"fy\",\"ie\",\"lit\",\"ma\",\"md\",\"pd\",\"tce\"],\"Noun\"],[[\"adj\",\"adm\",\"adv\",\"asst\",\"atty\",\"bldg\",\"brig\",\"capt\",\"cmdr\",\"comdr\",\"cpl\",\"det\",\"dr\",\"esq\",\"gen\",\"gov\",\"hon\",\"jr\",\"llb\",\"lt\",\"maj\",\"messrs\",\"mlle\",\"mme\",\"mr\",\"mrs\",\"ms\",\"mstr\",\"phd\",\"prof\",\"pvt\",\"rep\",\"reps\",\"res\",\"rev\",\"sen\",\"sens\",\"sfc\",\"sgt\",\"sir\",\"sr\",\"supt\",\"surg\"],\"Honorific\"],[[\"jan\",\"feb\",\"mar\",\"apr\",\"jun\",\"jul\",\"aug\",\"sep\",\"sept\",\"oct\",\"nov\",\"dec\"],\"Month\"],[[\"dept\",\"univ\",\"assn\",\"bros\",\"inc\",\"ltd\",\"co\"],\"Organization\"],[[\"rd\",\"st\",\"dist\",\"mt\",\"ave\",\"blvd\",\"cl\",\"cres\",\"hwy\",\"ariz\",\"cal\",\"calif\",\"colo\",\"conn\",\"fla\",\"fl\",\"ga\",\"ida\",\"ia\",\"kan\",\"kans\",\"minn\",\"neb\",\"nebr\",\"okla\",\"penna\",\"penn\",\"pa\",\"dak\",\"tenn\",\"tex\",\"ut\",\"vt\",\"va\",\"wis\",\"wisc\",\"wy\",\"wyo\",\"usafa\",\"alta\",\"ont\",\"que\",\"sask\"],\"Place\"]].forEach((e=>{e[0].forEach((t=>{Ua[t]=!0,qa[t]=\"Abbreviation\",void 0!==e[1]&&(qa[t]=[qa[t],e[1]])}))}));var Ra=[\"anti\",\"bi\",\"co\",\"contra\",\"de\",\"extra\",\"infra\",\"inter\",\"intra\",\"macro\",\"micro\",\"mis\",\"mono\",\"multi\",\"peri\",\"pre\",\"pro\",\"proto\",\"pseudo\",\"re\",\"sub\",\"supra\",\"trans\",\"tri\",\"un\",\"out\",\"ex\"].reduce(((e,t)=>(e[t]=!0,e)),{});const Qa={\"!\":\"¡\",\"?\":\"¿Ɂ\",'\"':'“”\"❝❞',\"'\":\"‘‛❛❜’\",\"-\":\"—–\",a:\"ªÀÁÂÃÄÅàáâãäåĀāĂăĄąǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАаѦѧӐӑӒӓƛæ\",b:\"ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ\",c:\"¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼϲϹϽϾСсєҀҁҪҫ\",d:\"ÐĎďĐđƉƊȡƋƌ\",e:\"ÈÉÊËèéêëĒēĔĕĖėĘęĚěƐȄȅȆȇȨȩɆɇΈΕΞΣέεξϵЀЁЕеѐёҼҽҾҿӖӗễ\",f:\"ƑƒϜϝӺӻҒғſ\",g:\"ĜĝĞğĠġĢģƓǤǥǦǧǴǵ\",h:\"ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ\",I:\"ÌÍÎÏ\",i:\"ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇіїi̇\",j:\"ĴĵǰȷɈɉϳЈј\",k:\"ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ\",l:\"ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ\",m:\"ΜϺϻМмӍӎ\",n:\"ÑñŃńŅņŇňŉŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ\",o:\"ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϴОФоѲѳӦӧӨөӪӫ\",p:\"ƤΡρϷϸϼРрҎҏÞ\",q:\"Ɋɋ\",r:\"ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ\",s:\"ŚśŜŝŞşŠšƧƨȘșȿЅѕ\",t:\"ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт\",u:\"ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰυϋύ\",v:\"νѴѵѶѷ\",w:\"ŴŵƜωώϖϢϣШЩшщѡѿ\",x:\"×ΧχϗϰХхҲҳӼӽӾӿ\",y:\"ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ\",z:\"ŹźŻżŽžƵƶȤȥɀΖ\"},Za={};Object.keys(Qa).forEach((function(e){Qa[e].split(\"\").forEach((function(t){Za[t]=e}))}));const Xa=/\\//,_a=/[a-z]\\.[a-z]/i,Ya=/[0-9]/,er=function(e,t){const n=e.normal||e.text||e.machine,a=t.model.one.aliases;if(a.hasOwnProperty(n)&&(e.alias=e.alias||[],e.alias.push(a[n])),Xa.test(n)&&!_a.test(n)&&!Ya.test(n)){const t=n.split(Xa);t.length<=3&&t.forEach((t=>{\"\"!==(t=t.trim())&&(e.alias=e.alias||[],e.alias.push(t))}))}return e},tr=/^\\p{Letter}+-\\p{Letter}+$/u,nr=function(e){let t=e.implicit||e.normal||e.text;t=t.replace(/['’]s$/,\"\"),t=t.replace(/s['’]$/,\"s\"),t=t.replace(/([aeiou][ktrp])in'$/,\"$1ing\"),tr.test(t)&&(t=t.replace(/-/g,\"\")),t=t.replace(/^[#@]/,\"\"),t!==e.normal&&(e.machine=t)},ar=function(e,t){const n=e.docs;for(let a=0;a<n.length;a+=1)for(let r=0;r<n[a].length;r+=1)t(n[a][r],e.world)},rr={alias:e=>ar(e,er),machine:e=>ar(e,nr),normal:e=>ar(e,Sa),freq:function(e){const t=e.docs,n={};for(let e=0;e<t.length;e+=1)for(let a=0;a<t[e].length;a+=1){const r=t[e][a],o=r.machine||r.normal;n[o]=n[o]||0,n[o]+=1}for(let e=0;e<t.length;e+=1)for(let a=0;a<t[e].length;a+=1){const r=t[e][a],o=r.machine||r.normal;r.freq=n[o]}},offset:function(e){let t=0,n=0;const a=e.document;for(let e=0;e<a.length;e+=1)for(let r=0;r<a[e].length;r+=1){const o=a[e][r];o.offset={index:n,start:t+o.pre.length,length:o.text.length},t+=o.pre.length+o.text.length+o.post.length,n+=1}},index:function(e){const t=e.document;for(let e=0;e<t.length;e+=1)for(let n=0;n<t[e].length;n+=1)t[e][n].index=[e,n]},wordCount:function(e){let t=0;const n=e.docs;for(let e=0;e<n.length;e+=1)for(let a=0;a<n[e].length;a+=1)\"\"!==n[e][a].normal&&(t+=1,n[e][a].wordCount=t)}};var or={compute:rr,methods:Wa,model:{one:{aliases:{\"&\":\"and\",\"@\":\"at\",\"%\":\"percent\",plz:\"please\",bein:\"being\"},abbreviations:Ua,prefixes:Ra,suffixes:{like:!0,ish:!0,less:!0,able:!0,elect:!0,type:!0,designate:!0},prePunctuation:{\"#\":!0,\"@\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},postPunctuation:{\"%\":!0,_:!0,\"°\":!0,\"​\":!0,\"‌\":!0,\"‍\":!0,\"\\ufeff\":!0},lexicon:qa,unicode:Za,emoticons:{\"<3\":!0,\"</3\":!0,\"<\\\\3\":!0,\":^P\":!0,\":^p\":!0,\":^O\":!0,\":^3\":!0}}},hooks:[\"alias\",\"machine\",\"index\",\"id\"]};var ir={typeahead:function(e){const t=e.model.one.typeahead,n=e.docs;if(0===n.length||0===Object.keys(t).length)return;const a=n[n.length-1]||[],r=a[a.length-1];if(!r.post&&t.hasOwnProperty(r.normal)){const n=t[r.normal];r.implicit=n,r.machine=n,r.typeahead=!0,e.compute.preTagger&&e.last().unTag(\"*\").compute([\"lexicon\",\"preTagger\"])}}};const sr=function(){const e=this.docs;if(0===e.length)return this;const t=e[e.length-1]||[],n=t[t.length-1];return!0===n.typeahead&&n.machine&&(n.text=n.machine,n.normal=n.machine),this},lr={safe:!0,min:3};var ur={typeahead:function(e=[],t={}){const n=this.model();var a;t=Object.assign({},lr,t),a=e,\"[object Object]\"===Object.prototype.toString.call(a)&&(Object.assign(n.one.lexicon,e),e=Object.keys(e));const r=function(e,t,n){let a={};const r=[],o=n.prefixes||{};return e.forEach((e=>{let i=(e=e.toLowerCase().trim()).length;t.max&&i>t.max&&(i=t.max);for(let s=t.min;s<i;s+=1){const i=e.substring(0,s);t.safe&&n.model.one.lexicon.hasOwnProperty(i)||(!0!==o.hasOwnProperty(i)&&!0!==a.hasOwnProperty(i)?a[i]=e:r.push(i))}})),a=Object.assign({},o,a),r.forEach((e=>{delete a[e]})),a}(e,t,this.world());return Object.keys(r).forEach((e=>{n.one.typeahead.hasOwnProperty(e)?delete n.one.typeahead[e]:n.one.typeahead[e]=r[e]})),this}};var cr={model:{one:{typeahead:{}}},api:function(e){e.prototype.autoFill=sr},lib:ur,compute:ir,hooks:[\"typeahead\"]};d.extend(J),d.extend(vn),d.extend(Jt),d.extend(Hn),d.extend(la),d.plugin(ve),d.extend(or),d.extend(Ce),d.plugin(p),d.extend(Be),d.extend(cr),d.extend(xe),d.extend(En);var dr={addendum:\"addenda\",corpus:\"corpora\",criterion:\"criteria\",curriculum:\"curricula\",genus:\"genera\",memorandum:\"memoranda\",opus:\"opera\",ovum:\"ova\",phenomenon:\"phenomena\",referendum:\"referenda\",alga:\"algae\",alumna:\"alumnae\",antenna:\"antennae\",formula:\"formulae\",larva:\"larvae\",nebula:\"nebulae\",vertebra:\"vertebrae\",analysis:\"analyses\",axis:\"axes\",diagnosis:\"diagnoses\",parenthesis:\"parentheses\",prognosis:\"prognoses\",synopsis:\"synopses\",thesis:\"theses\",neurosis:\"neuroses\",appendix:\"appendices\",index:\"indices\",matrix:\"matrices\",ox:\"oxen\",sex:\"sexes\",alumnus:\"alumni\",bacillus:\"bacilli\",cactus:\"cacti\",fungus:\"fungi\",hippopotamus:\"hippopotami\",libretto:\"libretti\",modulus:\"moduli\",nucleus:\"nuclei\",octopus:\"octopi\",radius:\"radii\",stimulus:\"stimuli\",syllabus:\"syllabi\",cookie:\"cookies\",calorie:\"calories\",auntie:\"aunties\",movie:\"movies\",pie:\"pies\",rookie:\"rookies\",tie:\"ties\",zombie:\"zombies\",leaf:\"leaves\",loaf:\"loaves\",thief:\"thieves\",foot:\"feet\",goose:\"geese\",tooth:\"teeth\",beau:\"beaux\",chateau:\"chateaux\",tableau:\"tableaux\",bus:\"buses\",gas:\"gases\",circus:\"circuses\",crisis:\"crises\",virus:\"viruses\",database:\"databases\",excuse:\"excuses\",abuse:\"abuses\",avocado:\"avocados\",barracks:\"barracks\",child:\"children\",clothes:\"clothes\",echo:\"echoes\",embargo:\"embargoes\",epoch:\"epochs\",deer:\"deer\",halo:\"halos\",man:\"men\",woman:\"women\",mosquito:\"mosquitoes\",mouse:\"mice\",person:\"people\",quiz:\"quizzes\",rodeo:\"rodeos\",shoe:\"shoes\",sombrero:\"sombreros\",stomach:\"stomachs\",tornado:\"tornados\",tuxedo:\"tuxedos\",volcano:\"volcanoes\"},hr={Comparative:\"true¦bett1f0;arth0ew0in0;er\",Superlative:\"true¦earlier\",PresentTense:\"true¦bests,sounds\",Condition:\"true¦lest,unless\",PastTense:\"true¦began,came,d4had,kneel3l2m0sa4we1;ea0sg2;nt;eap0i0;ed;id\",Participle:\"true¦0:09;a06b01cZdXeat0fSgQhPoJprov0rHs7t6u4w1;ak0ithdra02o2r1;i02uY;k0v0;nd1pr04;ergoJoJ;ak0hHo3;e9h7lain,o6p5t4un3w1;o1um;rn;g,k;ol0reS;iQok0;ught,wn;ak0o1runk;ne,wn;en,wn;ewriNi1uJ;dd0s0;ut3ver1;do4se0t1;ak0h2;do2g1;roG;ne;ast0i7;iv0o1;ne,tt0;all0loBor1;bi3g2s1;ak0e0;iv0o9;dd0;ove,r1;a5eamt,iv0;hos0lu1;ng;e4i3lo2ui1;lt;wn;tt0;at0en,gun;r2w1;ak0ok0;is0;en\",Gerund:\"true¦accord0be0doin,go0result0stain0;ing\",Expression:\"true¦a0Yb0Uc0Sd0Oe0Mfarew0Lg0FhZjeez,lWmVnToOpLsJtIuFvEw7y0;a5e3i1u0;ck,p;k04p0;ee,pee;a0p,s;!h;!a,h,y;a5h2o1t0;af,f;rd up,w;atsoever,e1o0;a,ops;e,w;hoo,t;ery w06oi0L;gh,h0;! 0h,m;huh,oh;here nPsk,ut tut;h0ic;eesh,hh,it,oo;ff,h1l0ow,sst;ease,s,z;ew,ooey;h1i,mg,o0uch,w,y;h,o,ps;! 0h;hTmy go0wT;d,sh;a7evertheless,o0;!pe;eh,mm;ah,eh,m1ol0;!s;ao,fao;aCeBi9o2u0;h,mph,rra0zzC;h,y;l1o0;r6y9;la,y0;! 0;c1moCsmok0;es;ow;!p hip hoor0;ay;ck,e,llo,y;ha1i,lleluj0;ah;!ha;ah,ee4o1r0;eat scott,r;l1od0sh; grief,bye;ly;! whiz;ell;e0h,t cetera,ureka,ww,xcuse me;k,p;'oh,a0rat,uh;m0ng;mit,n0;!it;mon,o0;ngratulations,wabunga;a2oo1r0tw,ye;avo,r;!ya;h,m; 1h0ka,las,men,rgh,ye;!a,em,h,oy;la\",Negative:\"true¦n0;ever,o0;n,t\",QuestionWord:\"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",Reflexive:\"true¦h4it5my5o1the0your2;ir1m1;ne3ur0;sel0;f,ves;er0im0;self\",Plural:\"true¦dick0gre0ones,records;ens\",\"Unit|Noun\":\"true¦cEfDgChBinchAk9lb,m6newt5oz,p4qt,t1y0;ardEd;able1b0ea1sp;!l,sp;spo1;a,t,x;on9;!b,g,i1l,m,p0;h,s;!les;!b,elvin,g,m;!es;g,z;al,b;eet,oot,t;m,up0;!s\",Value:\"true¦a few\",Imperative:\"true¦bewa0come he0;re\",\"Plural|Verb\":\"true¦leaves\",Demonym:\"true¦0:15;1:12;a0Vb0Oc0Dd0Ce08f07g04h02iYjVkTlPmLnIomHpEqatari,rCs7t5u4v3welAz2;am0Gimbabwe0;enezuel0ietnam0I;gAkrai1;aiwTex0hai,rinida0Ju2;ni0Prkmen;a5cotti4e3ingapoOlovak,oma0Spaniard,udRw2y0W;ede,iss;negal0Cr09;sh;mo0uT;o5us0Jw2;and0;a2eru0Fhilippi0Nortugu07uerto r0S;kist3lesti1na2raguay0;ma1;ani;ami00i2orweP;caragu0geri2;an,en;a3ex0Lo2;ngo0Drocc0;cedo1la2;gasy,y07;a4eb9i2;b2thua1;e0Cy0;o,t01;azakh,eny0o2uwaiI;re0;a2orda1;ma0Ap2;anO;celandic,nd4r2sraeli,ta01vo05;a2iB;ni0qi;i0oneU;aiAin2ondur0unO;di;amEe2hanai0reek,uatemal0;or2rm0;gi0;ilipino,ren8;cuadoVgyp4mira3ngli2sto1thiopi0urope0;shm0;ti;ti0;aPominUut3;a9h6o4roat3ub0ze2;ch;!i0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el6o4r3ul2;gaE;azi9it;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;genti2me1;ne;ba1ge2;ri0;ni0;gh0r2;ic0;an\",Organization:\"true¦0:4Q;a3Tb3Bc2Od2He2Df27g1Zh1Ti1Pj1Nk1Ll1Gm12n0Po0Mp0Cqu0Br02sTtHuCv9w3xiaomi,y1;amaha,m1Bou1w1B;gov,tu3C;a4e2iki1orld trade organizati33;leaRped0O;lls fargo,st1;fie2Hinghou2R;l1rner br3U;gree3Jl street journ2Im1E;an halOeriz2Xisa,o1;dafo2Yl1;kswagMvo;b4kip,n2ps,s1;a tod3Aps;es3Mi1;lev3Fted natio3C;er,s; mobi32aco beRd bOe9gi frida3Lh3im horto3Amz,o1witt3D;shi49y1;ota,s r 05;e 1in lizzy;b3carpen3Jdaily ma3Dguess w2holli0s1w2;mashing pumpki35uprem0;ho;ea1lack eyed pe3Xyr0Q;ch bo3Dtl0;l2n3Qs1xas instrumen1U;co,la m1F;efoni0Kus;a8cientology,e5ieme2Ymirnoff,np,o3pice gir6quare0Ata1ubaru;rbuc1to34;ks;ny,undgard1;en;a2x pisto1;ls;g1Wrs;few2Minsbur31lesfor03msu2E;adiohead,b8e4o1yana3C;man empi1Xyal 1;b1dutch she4;ank;a3d 1max,vl20;bu1c2Ahot chili peppe2Ylobst2N;ll;ders dige1Ll madrid;c,s;ant3Aizn2Q;a8bs,e5fiz2Ihilip4i3r1;emier 1udenti1D;leagTo2K;nk floyd,zza hut; morrBs;psi2tro1uge0E;br33chi0Tn33;!co;lant2Un1yp16; 2ason27da2P;ld navy,pec,range juli2xf1;am;us;aAb9e6fl,h5i4o1sa,vid3wa;k2tre dame,vart1;is;ia;ke,ntendo,ss0QvZ;l,s;c,st1Otflix,w1; 1sweek;kids on the block,york0D;a,c;nd22s2t1;ional aca2Po,we0U;a,c02d0S;aDcdonalCe9i6lb,o3tv,y1;spa1;ce;b1Tnsanto,ody blu0t1;ley cr1or0T;ue;c2t1;as,subisO;helin,rosoft;dica2rcedes benz,talli1;ca;id,re;ds;cs milk,tt19z24;a3e1g,ittle caesa1P; ore09novo,x1;is,mark,us; 1bour party;pres0Dz boy;atv,fc,kk,lm,m1od1O;art;iffy lu0Roy divisi0Jpmorgan1sa;! cha09;bm,hop,k3n1tv;g,te1;l,rpol;ea;a5ewlett pack1Vi3o1sbc,yundai;me dep1n1P;ot;tac1zbollah;hi;lliburt08sbro;eneral 6hq,ithub,l5mb,o2reen d0Ou1;cci,ns n ros0;ldman sachs,o1;dye1g0H;ar;axo smith kli04encoW;electr0Nm1;oto0Z;a5bi,c barcelo4da,edex,i2leetwood m03o1rito l0G;rd,xcY;at,fa,nancial1restoZ; tim0;na;cebook,nnie mae;b0Asa,u3xxon1; m1m1;ob0J;!rosceptics;aiml0De5isney,o4u1;nkin donu2po0Zran dur1;an;ts;j,w jon0;a,f lepp12ll,peche mode,r spieg02stiny's chi1;ld;aJbc,hFiDloudflaCnn,o3r1;aigsli5eedence clearwater reviv1ossra09;al;c7inba6l4m1o0Est09;ca2p1;aq;st;dplSg1;ate;se;a c1o chanQ;ola;re;a,sco1tigroup;! systems;ev2i1;ck fil a,na daily;r1y;on;d2pital o1rls jr;ne;bury,ill1;ac;aEbc,eBf9l5mw,ni,o1p,rexiteeU;ei3mbardiIston 1;glo1pizza;be;ng;o2ue c1;roV;ckbuster video,omingda1;le; g1g1;oodriL;cht2e ge0rkshire hathaw1;ay;el;cardi,idu,nana republ3s1xt5y5;f,kin robbi1;ns;ic;bYcTdidSerosmith,iRlKmEnheuser busDol,ppleAr6s4u3v2y1;er;is,on;di,todesk;hland o1sociated E;il;b3g2m1;co;os;ys; compu1be0;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 5catel2ta1;ir;! lu1;ce1;nt;jazeera,qae1;da;g,rbnb;as;/dc,a3er,tivision1;! blizz1;ard;demy of scienc0;es;ba\",Possessive:\"true¦its,my,our0thy;!s\",\"Noun|Verb\":\"true¦0:9W;1:AA;2:96;3:A3;4:9R;5:A2;6:9K;7:8N;8:7L;9:A8;A:93;B:8D;C:8X;a9Ob8Qc7Id6Re6Gf5Sg5Hh55i4Xj4Uk4Rl4Em40n3Vo3Sp2Squ2Rr21s0Jt02u00vVwGyFzD;ip,oD;ne,om;awn,e6Fie68;aOeMhJiHoErD;ap,e9Oink2;nd0rDuC;kDry,sh5Hth;!shop;ck,nDpe,re,sh;!d,g;e86iD;p,sD;k,p0t2;aDed,lco8W;r,th0;it,lk,rEsDt4ve,x;h,te;!ehou1ra9;aGen5FiFoD;iDmAte,w;ce,d;be,ew,sA;cuum,l4B;pDr7;da5gra6Elo6A;aReQhrPiOoMrGuEwiDy5Z;n,st;nDrn;e,n7O;aGeFiEoDu6;t,ub2;bu5ck4Jgg0m,p;at,k,nd;ck,de,in,nsDp,v7J;f0i8R;ll,ne,p,r4Yss,t94uD;ch,r;ck,de,e,le,me,p,re;e5Wow,u6;ar,e,ll,mp0st,xt;g,lDng2rg7Ps5x;k,ly;a0Sc0Ne0Kh0Fi0Dk0Cl0Am08n06o05pXquaBtKuFwD;ea88iD;ng,pe,t4;bGit,m,ppErD;fa3ge,pri1v2U;lDo6S;e6Py;!je8;aMeLiKoHrEuDy2;dy,ff,mb2;a85eEiDo5Pugg2;ke,ng;am,ss,t4;ckEop,p,rD;e,m;ing,pi2;ck,nk,t4;er,m,p;ck,ff,ge,in,ke,lEmp,nd,p2rDte,y;!e,t;k,l;aJeIiHlGoFrDur,y;ay,e56inDu3;g,k2;ns8Bt;a5Qit;ll,n,r87te;ed,ll;m,n,rk;b,uC;aDee1Tow;ke,p;a5Je4FiDo53;le,rk;eep,iDou4;ce,p,t;ateboa7Ii;de,gnDl2Vnk,p,ze;!al;aGeFiEoDuff2;ck,p,re,w;ft,p,v0;d,i3Ylt0;ck,de,pe,re,ve;aEed,nDrv1It;se,t2N;l,r4t;aGhedu2oBrD;aEeDibb2o3Z;en,w;pe,t4;le,n,r2M;cDfegua72il,mp2;k,rifi3;aZeHhy6LiGoEuD;b,in,le,n,s5X;a6ck,ll,oDpe,u5;f,t;de,ng,ot,p,s1W;aTcSdo,el,fQgPje8lOmMnLo17pJque6sFturn,vDwa6V;eDi27;al,r1;er74oFpe8tEuD;lt,me;!a55;l71rt;air,eaDly,o53;l,t;dezvo2Zt;aDedy;ke,rk;ea1i4G;a6Iist0r5N;act6Yer1Vo71uD;nd,se;a38o6F;ch,s6G;c1Dge,iEke,lly,nDp1Wt1W;ge,k,t;n,se;es6Biv0;a04e00hYiXlToNrEsy4uD;mp,n4rcha1sh;aKeIiHoDu4O;be,ceFdu3fi2grDje8mi1p,te6;amDe6W;!me;ed,ss;ce,de,nt;sDy;er6Cs;cti3i1;iHlFoEp,re,sDuCw0;e,i5Yt;l,p;iDl;ce,sh;nt,s5V;aEce,e32uD;g,mp,n7;ce,nDy;!t;ck,le,n17pe,tNvot;a1oD;ne,tograph;ak,eFnErDt;fu55mA;!c32;!l,r;ckJiInHrFsEtDu1y;ch,e9;s,te;k,tD;!y;!ic;nt,r,se;!a7;bje8ff0il,oErDutli3Qver4B;bAd0ie9;ze;a4ReFoDur1;d,tD;e,i3;ed,gle8tD;!work;aMeKiIoEuD;rd0;ck,d3Rld,nEp,uDve;nt,th;it5EkD;ey;lk,n4Brr5CsDx;s,ta2B;asuBn4UrDss;ge,it;il,nFp,rk3WsEtD;ch,t0;h,k,t0;da5n0oeuvB;aLeJiHoEuD;mp,st;aEbby,ck,g,oDve;k,t;d,n;cDe,ft,mAnIst;en1k;aDc0Pe4vK;ch,d,k,p,se;bFcEnd,p,t4uD;gh,n4;e,k;el,o2U;eEiDno4E;ck,d,ll,ss;el,y;aEo1OuD;i3mp;m,zz;mpJnEr46ssD;ue;c1Rdex,fluGha2k,se2HteDvoi3;nt,rD;e6fa3viD;ew;en3;a8le2A;aJeHiGoEuD;g,nt;l3Ano2Dok,pDr1u1;!e;ghli1Fke,nt,re,t;aDd7lp;d,t;ck,mGndFrEsh,tDu9;ch,e;bo3Xm,ne4Eve6;!le;!m0;aMear,ift,lKossJrFuD;arDe4Alp,n;antee,d;aFiEoDumb2;uCwth;ll,nd,p;de,sp;ip;aBoDue;ss,w;g,in,me,ng,s,te,ze;aZeWiRlNoJrFuD;ck,el,nDss,zz;c38d;aEoDy;st,wn;cDgme,me,nchi1;tuB;cFg,il,ld,rD;ce,e29mDwa31;!at;us;aFe0Vip,oDy;at,ck,od,wD;!er;g,ke,me,re,sh,vo1E;eGgFlEnDre,sh,t,x;an3i0Q;e,m,t0;ht,uB;ld;aEeDn3;d,l;r,tuB;ce,il,ll,rm,vo2W;cho,d7ffe8nMsKxFyeD;!baD;ll;cGerci1hFpDtra8;eriDo0W;en3me9;au6ibA;el,han7u1;caDtima5;pe;count0d,vy;a01eSiMoJrEuDye;b,el,mp,pli2X;aGeFiEoD;ne,p;ft,ll,nk,p,ve;am,ss;ft,g,in;cEd7ubt,wnloD;ad;k,u0E;ge6p,sFt4vD;e,iDor3;de;char7gui1h,liEpD;at4lay,u5;ke;al,bKcJfeIlGmaCposAsEtaD;il;e07iD;gn,re;ay,ega5iD;ght;at,ct;li04rea1;a5ut;b,ma7n3rDte;e,t;a0Eent0Dh06irc2l03oKrFuD;be,e,rDt;b,e,l,ve;aGeFoEuDy;sh;p,ss,wd;dAep;ck,ft,sh;at,de,in,lTmMnFordina5py,re,st,uDv0;gh,nDp2rt;s01t;ceHdu8fli8glomeIsFtDveN;a8rD;a6ol;e9tru8;ct;ntDrn;ra5;bHfoGmFpD;leDouCromi1;me9;aCe9it,u5;rt;at,iD;ne;lap1oD;r,ur;aEiDoud,ub;ck,p;im,w;aEeDip;at,ck,er;iGllen7nErD;ge,m,t;ge,nD;el;n,r;er,re;ke,ll,mp,noe,pGrXsFtEuDve;se,ti0I;alog,ch;h,t;!tuB;re;a03eZiXlToPrHuEyD;pa11;bb2ck2dgEff0mp,rDst,zz;den,n;et;anJeHiFoadEuD;i1sh;ca6;be,d7;ge;aDed;ch,k;ch,d;aFg,mb,nEoDrd0tt2x,ycott;k,st,t;d,e;rd,st;aFeCiDoYur;nk,tz;nd;me;as,d,ke,nd,opsy,tD;!ch,e;aFef,lt,nDt;d,efA;it;r,t;ck,il,lan3nIrFsEtt2;le;e,h;!gDk;aDe;in;!d,g,k;bu1c05dZge,iYlVnTppQrLsIttGucEwaD;rd;tiD;on;aDempt;ck;k,sD;i6ocia5;st;chFmD;!oD;ur;!iD;ve;eEroa4;ch;al;chDg0sw0;or;aEt0;er;rm;d,m,r;dreHvD;an3oD;ca5;te;ce;ss;cDe,he,t;eFoD;rd,u9;nt;nt,ss;se\",Actor:\"true¦0:7B;1:7G;2:6A;3:7F;4:7O;5:7K;a6Nb62c4Ud4Be41f3Sg3Bh30i2Uj2Qkin2Pl2Km26n1Zo1Sp0Vqu0Tr0JsQtJuHvEw8yo6;gi,ut6;h,ub0;aAe9i8o7r6;estl0it0;m2rk0;fe,nn0t2Bza2H;atherm2ld0;ge earn0it0nder0rri1;eter7i6oyF;ll5Qp,s3Z;an,ina2U;n6s0;c6Uder03;aoisea23e9herapi5iktok0o8r6ut1yco6S;a6endseLo43;d0mp,nscri0Bvel0;ddl0u1G;a0Qchn7en6na4st0;ag0;i3Oo0D;aiXcUeRhPiMki0mu26oJpGquaFtBu7wee6;p0theart;lt2per7r6;f0ge6Iviv1;h6inten0Ist5Ivis1;ero,um2;a8ep7r6;ang0eam0;bro2Nc2Ofa2Nmo2Nsi20;ff0tesm2;tt0;ec7ir2Do6;kesp59u0M;ia5Jt3;l7me6An,rcere6ul;r,ss;di0oi5;n7s6;sy,t0;g0n0;am2ephe1Iow6;girl,m2r2Q;cretInior cit3Fr6;gea4v6;a4it1;hol4Xi7reen6ulpt1;wr2C;e01on;l1nt;aEe9o8u6;l0nn6;er up,ingE;g40le mod3Zof0;a4Zc8fug2Ppo32searQv6;ere4Uolution6;ary;e6luYru22;ptio3T;bbi,dic5Vpp0;arter6e2Z;back;aYeWhSiRlOoKr8sycho7u6;nk,p31;logi5;aGeDiBo6;d9fess1g7ph47s6;pe2Ktitu51;en6ramm0;it1y;igy,uc0;est4Nme mini0Unce6s3E;!ss;a7si6;de4;ch0;ctiti39nk0P;dca0Oet,li6pula50rnst42;c2Itic6;al scie6i2;nti5;a6umb0;nn0y6;er,ma4Lwright;lgrim,one0;a8iloso7otogra7ra6ysi1V;se;ph0;ntom,rmaci5;r6ssi1T;form0s4O;i3El,nel3Yr8st1tr6wn;i6on;arWot;ent4Wi42tn0;ccupa4ffBp8r7ut6;ca5l0B;ac4Iganiz0ig2Fph2;er3t6;i1Jomet6;ri5;ic0spring;aBe9ie4Xo7u6;n,rser3J;b6mad,vi4V;le2Vo4D;i6mesis,phew;ce,ghb1;nny,rr3t1X;aEeDiAo7u6yst1Y;m8si16;der3gul,m7n6th0;arDk;!my;ni7s6;f02s0Jt0;on,st0;chan1Qnt1rcha4;gi9k0n8rtyr,t6y1;e,riar6;ch;ag0iac;ci2stra3I;a7e2Aieutena4o6;rd,s0v0;bor0d7ndlo6ss,urea3Fwy0ym2;rd;!y;!s28;e8o7u6;ggl0;gg0urna2U;st0;c3Hdol,llu3Ummigra4n6; l9c1Qfa4habi42nov3s7ve6;nt1stig3;pe0Nt6;a1Fig3ru0M;aw;airFeBistoAo8u6ygie1K;man6sba2H;!ita8;bo,st6usekN;age,e3P;ri2;ir,r6;m7o6;!ine;it;dress0sty2C;aLeIhostGirl26ladi3oCrand7u6;e5ru;c9daug0Jfa8m7pa6s2Y;!re4;a,o6;th0;hi1B;al7d6lf0;!de3A;ie,k6te26;eep0;!wr6;it0;isha,n6;i6tl04;us;mbl0rden0;aDella,iAo7r6;eela2Nie1P;e,re6ster pare4;be1Hm2r6st0;unn0;an2ZgZlmm17nanci0r6tt0;e6st la2H; marsh2OfigXm2;rm0th0;conoEdDlectriCm8n7x6;amin0cellency,i2A;emy,trepreneur,vironmenta1J;c8p6;er1loye6;e,r;ee;ci2;it1;mi5;aKeBi8ork,ri7u6we02;de,tche2H;ft0v0;ct3eti7plom2Hre6va;ct1;ci2ti2;aDcor3fencCi0InAput9s7tectLvel6;op0;ce1Ge6ign0;rt0;ee,y;iz6;en;em2;c1Ml0;d8nc0redev7ug6;ht0;il;!dy;a06e04fo,hXitizenWlToBr9u6;r3stomer6;! representat6;ive;e3it6;ic;lJmGnAord9rpor1Nu7w6;boy,ork0;n6ri0;ciTte1Q;in3;fidantAgressSs9t6;e0Kr6;ibut1o6;ll0;tab13ul1O;!e;edi2m6pos0rade;a0EeQissi6;on0;leag8on7um6;ni5;el;ue;e6own;an0r6;ic,k;!s;a9e7i6um;ld;erle6f;ad0;ir7nce6plFract0;ll1;m2wI;lebri6o;ty;dBptAr6shi0;e7pe6;nt0;r,t6;ak0;ain;et;aMeLiJlogg0oErBu6;dd0Fild0rgl9siness6;m2p7w6;om2;ers05;ar;i7o6;!k0th0;cklay0de,gadi0;hemi2oge8y6;!frie6;nd;ym2;an;cyc6sR;li5;atbox0ings;by,nk0r6;b0on7te6;nd0;!e07;c04dWge4nQpLrHsFtAu7yatull6;ah;nt7t6;h1oG;!ie;h8t6;e6orney;nda4;ie5le6;te;sis00tron6;aut,om0;chbis8isto7tis6;an,t;crU;hop;ost9p6;ari6rentiS;ti6;on;le;a9cest1im3nou8y6;bo6;dy;nc0;ly5rc6;hi5;mi8v6;entur0is1;er;ni7r6;al;str3;at1;or;counBquaintanArob9t6;ivi5or,re6;ss;st;at;ce;ta4;nt\",\"Adj|Noun\":\"true¦0:16;a1Db17c0Ud0Re0Mf0Dg0Ah08i06ju05l02mWnUoSpNrIsBt7u4v1watershed;a1ision0Z;gabo4nilla,ria1;b0Vnt;ndergr1pstairs;adua14ou1;nd;a3e1oken,ri0;en,r1;min0rori13;boo,n;age,e5ilv0Flack,o3quat,ta2u1well;bordina0Xper5;b0Lndard;ciali0Yl1vereign;e,ve16;cret,n1ri0;ior;a4e2ou1ubbiL;nd,tiY;ar,bBl0Wnt0p1side11;resent0Vublican;ci0Qsh;a4eriodic0last0Zotenti0r1;emi2incip0o1;!fession0;er,um;rall4st,tie0U;ff1pposi0Hv0;ens0Oi0C;agg01ov1uts;el;a5e3iniatJo1;bi01der07r1;al,t0;di1tr0N;an,um;le,riG;attOi2u1;sh;ber0ght,qC;stice,veniT;de0mpressioYn1;cumbe0Edividu0no0Dsta0Eterim;alf,o1umdrum;bby,melF;en2old,ra1;ph0Bve;er0ious;a7e5i4l3u1;git03t1;ure;uid;ne;llow,m1;aFiL;ir,t,vo1;riOuriO;l3p00x1;c1ecutUpeV;ess;d1iK;er;ar2e1;mographUrivO;k,l2;hiGlassSo2rude,unn1;ing;m5n1operK;creCstitueOte2vertab1;le;mpor1nt;ary;ic,m2p1;anion,lex;er2u1;ni8;ci0;al;e5lank,o4r1;i2u1;te;ef;ttom,urgeois;st;cadem9d6l2ntarct9r1;ab,ct8;e3tern1;at1;ive;rt;oles1ult;ce1;nt;ic\",\"Adj|Past\":\"true¦0:4Q;1:4C;2:4H;3:4E;a44b3Tc36d2Je29f20g1Wh1Si1Jj1Gkno1Fl1Am15n12o0Xp0Mqu0Kr08sLtEuAv9w4yellow0;a7ea6o4rinkl0;r4u3Y;n,ri0;k31th3;rp0sh0tZ;ari0e1O;n5p4s0;d1li1Rset;cov3derstood,i4;fi0t0;a8e3Rhr7i6ouTr4urn0wi4C;a4imm0ou2G;ck0in0pp0;ed,r0;eat2Qi37;m0nn0r4;get0ni2T;aOcKeIhGimFm0Hoak0pDt7u4;bsid3Ogge44s4;pe4ta2Y;ct0nd0;a8e7i2Eok0r5u4;ff0mp0nn0;ength2Hip4;ed,p0;am0reotyp0;in0t0;eci4ik0oH;al3Efi0;pRul1;a4ock0ut;d0r0;a4c1Jle2t31;l0s3Ut0;a6or5r4;at4e25;ch0;r0tt3;t4ut0;is2Mur1;aEe5o4;tt0;cAdJf2Bg9je2l8m0Knew0p7qu6s4;eTpe2t4;or0ri2;e3Dir0;e1lac0;at0e2Q;i0Rul1;eiv0o4ycl0;mme2Lrd0v3;in0lli0ti2A;a4ot0;li28;aCer30iBlAo9r5u4;mp0zzl0;e6i2Oo4;ce2Fd4lo1Anou30pos0te2v0;uc0;fe1CocCp0Iss0;i2Kli1L;ann0e2CuS;ck0erc0ss0;ck0i2Hr4st0;allLk0;bse7c6pp13rgan2Dver4;lo4whelm0;ok0;cupi0;rv0;aJe5o4;t0uri1A;ed0gle2;a6e5ix0o4ut0ys1N;di1Nt15u26;as0Clt0;n4rk0;ag0ufact0A;e6i5o4;ad0ck0st,v0;cens0m04st0;ft,v4;el0;tt0wn;a5o15u4;dg0s1B;gg0;llumSmpAn4sol1;br0cre1Ldebt0f8jZspir0t5v4;it0olv0;e4ox0Y;gr1n4re23;d0si15;e2l1o1Wuri1;li0o01r4;ov0;a6e1o4um03;ok0r4;ri0Z;mm3rm0;i6r5u4;a1Bid0;a0Ui0Rown;ft0;aAe9i8l6oc0Ir4;a4i0oz0Y;ctHg19m0;avo0Ju4;st3;ni08tt0x0;ar0;d0il0sc4;in1;dCl1mBn9quipp0s8x4;agger1c6p4te0T;a0Se4os0;ct0rie1D;it0;cap0tabliZ;cha0XgFha1As4;ur0;a0Zbarra0N;i0Buc1;aMeDi5r4;a01i0;gni08miniSre2s4;a9c6grun0Ft4;o4re0Hu17;rt0;iplWou4;nt0r4;ag0;bl0;cBdRf9l8p7ra6t5v4;elop0ot0;ail0ermQ;ng0;re07;ay0ight0;e4in0o0M;rr0;ay0enTor1;m5t0z4;ed,zl0;ag0p4;en0;aPeLhIlHo9r6u4;lt4r0stom03;iv1;a5owd0u4;sh0;ck0mp0;d0loAm7n4ok0v3;centr1f5s4troC;id3olid1;us0;b5pl4;ic1;in0;r0ur0;assi9os0utt3;ar5i4;ll0;g0m0;lebr1n6r4;ti4;fi0;tralJ;g0lcul1;aDewild3iCl9o7r5urn4;ed,t;ok4uis0;en;il0r0t4und;tl0;e5i4;nd0;ss0;as0;ffl0k0laMs0tt3;bPcNdKfIg0lFmaz0nDppBrm0ss9u5wa4;rd0;g5thor4;iz0;me4;nt0;o6u4;m0r0;li0re4;ci1;im1ticip1;at0;a5leg0t3;er0;rm0;fe2;ct0;ju5o7va4;nc0;st0;ce4knowledg0;pt0;and5so4;rb0;on0;ed\",Singular:\"true¦0:5J;1:5H;2:4W;3:4S;4:52;5:57;6:5L;7:56;8:5B;a52b4Lc3Nd35e2Xf2Og2Jh28in24j23k22l1Um1Ln1Ho1Bp0Rqu0Qr0FsZtMuHvCw9x r58yo yo;a9ha3Po3Q;f3i4Rt0Gy9;! arou39;arCeAideo ga2Qo9;cabu4Jl5C;gOr9t;di4Zt1Y;iety,ni4P;nBp30rAs 9;do43s5E;bani1in0;coordinat3Ader9;estima1to24we41; rex,aKeJhHiFoErBuAv9;! show;m2On2rntLto1D;agedy,ib9o4E;e,u9;n0ta46;ni1p2rq3L;c,er,m9;etF;ing9ree26;!y;am,mp3F;ct2le6x return;aNcMeKhor4QiJkHoGpin off,tDuBy9;ll9ner7st4T;ab2X;b9i1n28per bowl,rro1X;st3Ltot0;atAipe2Go1Lrate7udent9;! lo0I;i39u1;ft ser4Lmeo1I;elet5i9;ll,r3V;b38gn2Tte;ab2Jc9min3B;t,urity gua2N;e6ho2Y;bbatic0la3Jndwi0Qpi5;av5eDhetor2iAo9;de6om,w;tAv9;erb2C;e,u0;bDcBf9publ2r10spi1;er9orm3;e6r0;i9ord label;p2Ht0;a1u46;estion mark,ot2F;aPeMhoLiIlGoErAu9yram1F;ddi3HpErpo1Js3J;eBo9;bl3Zs9;pe3Jta1;dic1Rmi1Fp1Qroga8ss relea1F;p9rt0;py;a9ebisci1;q2Dte;cn2eAg9;!gy;!r;ne call,tocoK;anut,dAr9t0yo1;cen3Jsp3K;al,est0;nop4rAt9;e,hog5;adi11i2V;atme0bj3FcBpia1rde0thers,utspok5ve9wn3;n,r9;ti0Pview;cuAe9;an;pi3;arBitAot9umb3;a2Fhi2R;e,ra1;cot2ra8;aFeCiAo9ur0;nopo4p18rni2Nsq1Rti36uld;c,li11n0As9tt5;chief,si34;dAnu,t9;al,i3;al,ic;gna1mm0nd15rsupi0te9yf4;ri0;aDegCiBu9;ddi1n9;ch;me,p09; Be0M;bor14y9; 9er;up;eyno1itt5;el4ourn0;cBdices,itia8ni25sAtel0Lvert9;eb1J;e28titu1;en8i2T;aIeEighDoAu9;man right,s22;me9rmoFsp1Ftb0K;! r9;un; scho0YriY;a9i1N;d9v5; start,pho9;ne;ndful,sh brown,v5ze;aBelat0Ilaci3r9ul4yp1S;an9enadi3id;a1Cd slam,ny;df4r9;l2ni1I;aGeti1HiFlu1oCrAun9;er0;ee market,i9onti3;ga1;l4ur9;so9;me;ePref4;br2mi4;conoFffi7gg,lecto0Rmbas1EnCpidem2s1Zth2venBxAyel9;id;ampZempl0Nte6;i19t;er7terp9;ri9;se;my;eLiEoBr9ump tru0U;agonf4i9;er,ve thru;cAg7i4or,ssi3wn9;side;to0EumenE;aEgniDnn3sAvide9;nd;conte6incen8p9tri11;osi9;ti0C;ta0H;le0X;athBcAf9ni0terre6;ault 05err0;al,im0;!b9;ed;aWeThMiLlJoDr9;edit caBuc9;ib9;le;rd;efficDke,lCmmuniqLnsApi3rr0t0Xus9yo1;in;erv9uI;ato02;ic,lQ;ie6;er7i9oth;e6n2;ty,vil wM;aDeqCick5ocoBr9;istmas car9ysanthemum;ol;la1;ue;ndeli3racteri9;st2;iAllEr9;e0tifica1;liZ;hi3nFpErCt9ucus;erpi9hedr0;ll9;ar;!bohyd9ri3;ra1;it0;aAe,nib0t9;on;l,ry;aMeLiop2leJoHrDu9;nny,r9tterf4;g9i0;la9;ry;eakAi9;ck;fa9throB;st;dy,ro9wl;ugh;mi9;sh;an,l4;nkiArri3;er;ng;cSdMlInFppeti1rDsBtt2utop9;sy;ic;ce6pe9;ct;r9sen0;ay;ecAoma4tiA;ly;do1;i5l9;er7y;gy;en; hominDjAvan9;tage;ec8;ti9;ve;em;cCeAqui9;tt0;ta1;te;iAru0;al;de6;nt\",\"Person|Noun\":\"true¦a0Eb07c03dWeUfQgOhLjHkiGlFmCnBolive,p7r4s3trini06v1wa0;ng,rd,tts;an,enus,iol0;a,et;ky,onPumm09;ay,e1o0uby;bin,d,se;ed,x;a2e1o0;l,tt04;aLnJ;dYge,tR;at,orm;a0eloW;t0x,ya;!s;a9eo,iH;ng,tP;a2e1o0;lGy;an,w3;de,smi4y;a0erb,iOolBuntR;ll,z0;el;ail,e0iLuy;ne;a1ern,i0lo;elds,nn;ith,n0;ny;a0dEmir,ula,ve;rl;a4e3i1j,ol0;ly;ck,x0;ie;an,ja;i0wn;sy;am,h0liff,rystal;a0in,ristian;mbers,ri0;ty;a4e3i2o,r0ud;an0ook;dy;ll;nedict,rg;k0nks;er;l0rt;fredo,ma\",\"Actor|Verb\":\"true¦aCb8c5doctor,engineAfool,g3host,judge,m2nerd,p1recruit,scout,ushAvolunteAwi0;mp,tneA;arent,ilot;an,ime;eek,oof,r0uide;adu8oom;ha1o0;ach,nscript,ok;mpion,uffeur;o2u0;lly,tch0;er;ss;ddi1ffili0rchite1;ate;ct\",MaleName:\"true¦0:H6;1:FZ;2:DS;3:GQ;4:CZ;5:FV;6:GM;7:FP;8:GW;9:ET;A:C2;B:GD;aF8bE1cCQdBMeASfA1g8Yh88i7Uj6Sk6Bl5Mm48n3So3Ip33qu31r26s1Et0Ru0Ov0CwTxSyHzC;aCor0;cChC1karia,nAT;!hDkC;!aF6;!ar7CeF5;aJevgenBSoEuC;en,rFVsCu3FvEF;if,uf;nDs6OusC;ouf,s6N;aCg;s,tC;an,h0;hli,nCrosE1ss09;is,nC;!iBU;avi2ho5;aPeNiDoCyaEL;jcieBJlfgang,odrFutR;lFnC;f8TsC;lCt1;ow;bGey,frEhe4QlC;aE5iCy;am,e,s;ed8iC;d,ed;eAur;i,ndeD2rn2sC;!l9t1;lDyC;l1ne;lDtC;!er;aCHy;aKernDAiFladDoC;jteB0lodymyr;!iC;mFQsDB;cFha0ktBZnceDrgCOvC;a0ek;!nC;t,zo;!e4StBV;lCnC7sily;!entC;in9J;ghE2lCm70nax,ri,sm0;riCyss87;ch,k;aWeRhNiLoGrEuDyC;!l2roEDs1;n6r6E;avD0eCist0oy,um0;ntCRvBKy;bFdAWmCny;!asDmCoharu;aFFie,y;!z;iA6y;mCt4;!my,othy;adEeoDia0SomC;!as;!dor91;!de4;dFrC;enBKrC;anBJeCy;ll,nBI;!dy;dgh,ha,iCnn2req,tsu5V;cDAka;aYcotWeThPiMlobod0oKpenc2tEurDvenAEyCzym1;ed,lvest2;aj,e9V;anFeDuC;!aA;fan17phEQvCwaA;e77ie;!islaCl9;v,w;lom1rBuC;leymaDHta;dDgmu9UlCm1yabonga;as,v8B;!dhart8Yn9;aEeClo75;lCrm0;d1t1;h9Jne,qu1Jun,wn,yne;aDbastiEDk2Yl5Mpp,rgCth,ymoCU;e1Dio;m4n;!tC;!ie,y;eDPlFmEnCq67tosCMul;dCj2UtiA5;e01ro;!iATkeB6mC4u5;!ik,vato9K;aZeUheC8iRoGuDyC;an,ou;b99dDf4peAssC;!elEG;ol00y;an,bLc7MdJel,geIh0lHmGnEry,sDyC;!ce;ar7Ocoe,s;!aCnBU;ld,n;an,eo;a7Ef;l7Jr;e3Eg2n9olfo,riC;go;bBNeDH;cCl9;ar87c86h54kCo;!ey,ie,y;cFeA3gDid,ubByCza;an8Ln06;g85iC;naC6s;ep;ch8Kfa5hHin2je8HlGmFndEoHpha5sDul,wi36yC;an,mo8O;h9Im4;alDSol3O;iD0on;f,ph;ul;e9CinC;cy,t1;aOeLhilJiFrCyoG;aDeC;m,st1;ka85v2O;eDoC;tr;r8GtC;er,ro;!ipCl6H;!p6U;dCLrcy,tC;ar,e9JrC;!o7;b9Udra8So9UscAHtri62ulCv8I;!ie,o7;ctav6Ji2lImHndrBRrGsDtCum6wB;is,to;aDc6k6m0vCwaBE;al79;ma;i,vR;ar,er;aDeksandr,ivC;er,i2;f,v;aNeLguyBiFoCu3O;aDel,j4l0ma0rC;beAm0;h,m;cFels,g5i9EkDlC;es,s;!au,h96l78olaC;!i,y;hCkCol76;ol75;al,d,il,ls1vC;ilAF;hom,tC;e,hC;anCy;!a5i5;aYeViLoGuDyC;l4Nr1;hamDr84staC;fa,p6E;ed,mG;di10e,hamEis4JntDritz,sCussa;es,he;e,y;ad,ed,mC;ad,ed;cGgu5hai,kFlEnDtchC;!e8O;a9Pik;house,o7t1;ae73eC3ha8Iolaj;ah,hDkC;!ey,y;aDeC;al,l;el,l;hDlv3rC;le,ri8Ev4T;di,met;ay0c00gn4hWjd,ks2NlTmadZnSrKsXtDuric7VxC;imilBKwe8B;eHhEi69tCus,y69;!eo,hCia7;ew,i67;eDiC;as,eu,s;us,w;j,o;cHiGkFlEqu8Qsha83tCv3;iCy;!m,n;in,on;el,o7us;a6Yo7us;!elCin,o7us;!l8o;frAEi5Zny,u5;achDcoCik;lm;ai,y;amDdi,e5VmC;oud;adCm6W;ou;aulCi9P;ay;aWeOiMloyd,oJuDyC;le,nd1;cFdEiDkCth2uk;a7e;gi,s,z;ov7Cv6Hw6H;!as,iC;a6Een;g0nn52renDuCvA4we7D;!iS;!zo;am,n4oC;n5r;a9Yevi,la5KnHoFst2thaEvC;eCi;nte;bo;nCpo8V;!a82el,id;!nC;aAy;mEnd1rDsz73urenCwr6K;ce,t;ry,s;ar,beAont;aOeIhalHiFla4onr63rDu5SylC;e,s;istCzysztof;i0oph2;er0ngsl9p,rC;ilA9k,ollos;ed,id;en0iGnDrmCv4Z;it;!dDnCt1;e2Ny;ri4Z;r,th;cp2j4mEna8BrDsp6them,uC;ri;im,l;al,il;a03eXiVoFuC;an,lCst3;en,iC;an,en,o,us;aQeOhKkub4AnIrGsDzC;ef;eDhCi9Wue;!ua;!f,ph;dCge;i,on;!aCny;h,s,th6J;anDnC;!ath6Hie,n72;!nC;!es;!l,sCy;ph;o,qu3;an,mC;!i,m6V;d,ffFns,rCs4;a7JemDmai7QoCry;me,ni1H;i9Dy;!e73rC;ey,y;cKdBkImHrEsDvi2yC;dBs1;on,p2;ed,oDrCv67;e6Qod;d,s61;al,es5Wis1;a,e,oCub;b,v;ob,qu13;aTbNchiMgLke53lija,nuKonut,rIsEtCv0;ai,suC;ki;aDha0i8XmaCsac;el,il;ac,iaC;h,s;a,vinCw3;!g;k,nngu6X;nac1Xor;ka;ai,rahC;im;aReLoIuCyd6;beAgGmFsC;eyDsC;a3e3;in,n;ber5W;h,o;m2raDsse3wC;a5Pie;c49t1K;a0Qct3XiGnDrC;beAman08;dr7VrC;iCy2N;!k,q1R;n0Tt3S;bKlJmza,nIo,rEsDyC;a5KdB;an,s0;lEo67r2IuCv9;hi5Hki,tC;a,o;an,ey;k,s;!im;ib;a08e00iUlenToQrMuCyorgy;iHnFsC;!taC;f,vC;!e,o;n6tC;er,h2;do,lC;herDlC;auCerQ;me;aEegCov2;!g,orC;!io,y;dy,h7C;dfr9nza3XrDttfC;ri6C;an,d47;!n;acoGlEno,oCuseppe;rgiCvan6O;!o,s;be6Ies,lC;es;mo;oFrC;aDha4HrCt;it,y;ld,rd8;ffErgC;!e7iCy;!os;!r9;bElBrCv3;eCla1Nr4Hth,y;th;e,rC;e3YielC;!i4;aXeSiQlOorrest,rCyod2E;aHedFiC;edDtC;s,z;ri18;!d42eri11riC;ck,k;nCs2;cEkC;ie,lC;in,yn;esLisC;!co,z3M;etch2oC;ri0yd;d5lConn;ip;deriFliEng,rC;dinaCg4nan0B;nd8;pe,x;co;bCdi,hd;iEriC;ce,zC;io;an,en,o;benez2dZfrYit0lTmMnJo3rFsteb0th0ugenEvCymBzra;an,eCge4D;ns,re3K;!e;gi,iDnCrol,v3w3;est8ie,st;cCk;!h,k;o0DriCzo;co,qC;ue;aHerGiDmC;aGe3A;lCrh0;!iC;a10o,s;s1y;nu5;beAd1iEliDm2t1viCwood;n,s;ot28s;!as,j5Hot,sC;ha;a3en;!dGg6mFoDua2QwC;a2Pin;arC;do;oZuZ;ie;a04eTiOmitrNoFrag0uEwDylC;an,l0;ay3Hig4D;a3Gdl9nc0st3;minFnDri0ugCvydGy2S;!lF;!a36nCov0;e1Eie,y;go,iDykC;as;cCk;!k;i,y;armuFetDll1mitri7neCon,rk;sh;er,m6riC;ch;id;andLepak,j0lbeAmetri4nIon,rGsEvDwCxt2;ay30ey;en,in;hawn,moC;nd;ek,riC;ck;is,nC;is,y;rt;re;an,le,mKnIrEvC;e,iC;!d;en,iEne0PrCyl;eCin,yl;l45n;n,o,us;!iCny;el,lo;iCon;an,en,on;a0Fe0Ch03iar0lRoJrFuDyrC;il,us;rtC;!is;aEistC;iaCob12;no;ig;dy,lInErC;ey,neliCy;s,us;nEor,rDstaC;nt3;ad;or;by,e,in,l3t1;aHeEiCyde;fCnt,ve;fo0Xt1;menDt4;us;s,t;rFuDyC;!t1;dCs;e,io;enC;ce;aHeGrisC;!toC;phCs;!eC;!r;st2t;d,rCs;b5leC;s,y;cDdrCs6;ic;il;lHmFrC;ey,lDroCy;ll;!o7t1;er1iC;lo;!eb,v3;a09eZiVjorn,laUoSrEuCyr1;ddy,rtKst2;er;aKeFiEuDyC;an,ce,on;ce,no;an,ce;nDtC;!t;dDtC;!on;an,on;dFnC;dDisC;lav;en,on;!foOl9y;bby,gd0rCyd;is;i0Lke;bElDshC;al;al,lL;ek;nIrCshoi;at,nEtC;!raC;m,nd;aDhaCie;rd;rd8;!iDjam3nCs1;ie,y;to;kaMlazs,nHrC;n9rDtC;!holomew;eCy;tt;ey;dCeD;ar,iC;le;ar1Nb1Dd16fon15gust3hm12i0Zja0Yl0Bm07nTputsiSrGsaFugustEveDyCziz;a0kh0;ry;o,us;hi;aMchiKiJjun,mHnEon,tCy0;em,hCie,ur8;ur;aDoC;!ld;ud,v;aCin;an,nd8;!el,ki;baCe;ld;ta;aq;aMdHgel8tCw6;hoFoC;iDnC;!i8y;ne;ny;er7rCy;eDzC;ej;!as,i,j,s,w;!s;s,tolC;iCy;!y;ar,iEmaCos;nu5r;el;ne,r,t;aVbSdBeJfHiGl01onFphonsEt1vC;aPin;on;e,o;so,zo;!sR;!onZrC;ed;c,jaHksFssaHxC;!andC;er,rC;e,os,u;andCei;ar,er,r;ndC;ro;en;eDrecC;ht;rt8;dd3in,n,sC;taC;ir;ni;dDm6;ar;an,en;ad,eC;d,t;in;so;aGi,olErDvC;ik;ian8;f8ph;!o;mCn;!a;dGeFraDuC;!bakr,lfazl;hCm;am;!l;allFel,oulaye,ulC;!lDrahm0;an;ah,o;ah;av,on\",Uncountable:\"true¦0:2E;1:2L;2:33;a2Ub2Lc29d22e1Rf1Ng1Eh16i11j0Yk0Wl0Rm0Hn0Do0Cp03rZsLt9uran2Jv7w3you gu0E;a5his17i4oo3;d,l;ldlife,ne;rm8t1;apor,ernacul29i3;neg28ol1Otae;eDhBiAo8r4un3yranny;a,gst1B;aff2Oea1Ko4ue nor3;th;o08u3;bleshoot2Ose1Tt;night,othpas1Vwn3;foEsfoE;me off,n;er3und1;e,mod2S;a,nnis;aDcCeBhAi9ki8o7p6t4u3weepstak0;g1Unshi2Hshi;ati08e3;am,el;ace2Keci0;ap,cc1meth2C;n,ttl0;lk;eep,ingl0or1C;lf,na1Gri0;ene1Kisso1C;d0Wfe2l4nd,t3;i0Iurn;m1Ut;abi0e4ic3;e,ke15;c3i01laxa11search;ogni10rea10;a9e8hys7luto,o5re3ut2;amble,mis0s3ten20;en1Zs0L;l3rk;i28l0EyH; 16i28;a24tr0F;nt3ti0M;i0s;bstetri24vercrowd1Qxyg09;a5e4owada3utella;ys;ptu1Ows;il poliZtional securi2;aAe8o5u3;m3s1H;ps;n3o1K;ey,o3;gamy;a3cha0Elancholy,rchandi1Htallurgy;sl0t;chine3g1Aj1Hrs,thema1Q; learn1Cry;aught1e6i5ogi4u3;ck,g12;c,s1M;ce,ghtn18nguis1LteratWv1;ath1isVss;ara0EindergartPn3;icke0Aowled0Y;e3upit1;a3llyfiGwel0G;ns;ce,gnor6mp5n3;forma00ter3;net,sta07;atiSort3rov;an18;a7e6isto09o3ung1;ckey,mework,ne4o3rseradi8spitali2use arrest;ky;s2y;adquarteXre;ir,libut,ppiHs3;hi3te;sh;ene8l6o5r3um,ymnas11;a3eZ;niUss;lf,re;ut3yce0F;en; 3ti0W;edit0Hpo3;ol;aNicFlour,o4urnit3;ure;od,rgive3uri1wl;ness;arCcono0LducaBlectr9n7quip8thi0Pvery6x3;ist4per3;ti0B;en0J;body,o08th07;joy3tertain3;ment;ici2o3;ni0H;tiS;nings,th;emi02i6o4raugh3ynas2;ts;pe,wnstai3;rs;abet0ce,s3;honZrepu3;te;aDelciChAivi07l8o3urrency;al,ld w6mmenta5n3ral,ttIuscoB;fusiHt 3;ed;ry;ar;assi01oth0;es;aos,e3;eMwK;us;d,rO;a8i6lood,owlHread5u3;ntGtt1;er;!th;lliarJs3;on;g3ss;ga3;ge;cKdviJeroGirFmBn6ppeal court,r4spi3thleL;rin;ithmet3sen3;ic;i6y3;o4th3;ing;ne;se;en5n3;es2;ty;ds;craft;bi8d3nau7;yna3;mi6;ce;id,ous3;ti3;cs\",Infinitive:\"true¦0:9G;1:9T;2:AD;3:90;4:9Z;5:84;6:AH;7:A9;8:92;9:A0;A:AG;B:AI;C:9V;D:8R;E:8O;F:97;G:6H;H:7D;a94b8Hc7Jd68e4Zf4Mg4Gh4Ai3Qj3Nk3Kl3Bm34nou48o2Vp2Equ2Dr1Es0CtZuTvRwI;aOeNiLors5rI;eJiI;ng,te;ak,st3;d5e8TthI;draw,er;a2d,ep;i2ke,nIrn;d1t;aIie;liADniAry;nJpI;ho8Llift;cov1dJear8Hfound8DlIplug,rav82tie,ve94;eaAo3X;erIo;cut,go,staAFvalA3w2G;aSeQhNoMrIu73;aIe72;ffi3Smp3nsI;aBfo7CpI;i8oD;pp3ugh5;aJiJrIwaD;eat5i2;nk;aImA0;ch,se;ck3ilor,keImp1r8L;! paD;a0Ic0He0Fh0Bi0Al08mugg3n07o05p02qu01tUuLwI;aJeeIim;p,t5;ll7Wy;bNccMffLggeCmmKppJrI;mouFpa6Zvi2;o0re6Y;ari0on;er,i4;e7Numb;li9KmJsiIveD;de,st;er9it;aMe8MiKrI;ang3eIi2;ng27w;fIng;f5le;b,gg1rI;t3ve;a4AiA;a4UeJit,l7DoI;il,of;ak,nd;lIot7Kw;icEve;atGeak,i0O;aIi6;m,y;ft,ng,t;aKi6CoJriIun;nk,v6Q;ot,rt5;ke,rp5tt1;eIll,nd,que8Gv1w;!k,m;aven9ul8W;dd5tis1Iy;a0FeKiJoI;am,t,ut;d,p5;a0Ab08c06d05f01group,hea00iZjoi4lXmWnVpTq3MsOtMup,vI;amp,eJiIo3B;sEve;l,rI;e,t;i8rI;ie2ofE;eLiKpo8PtIurfa4;o24rI;aHiBuctu8;de,gn,st;mb3nt;el,hra0lIreseF;a4e71;d1ew,o07;aHe3Fo2;a7eFiIo6Jy;e2nq41ve;mbur0nf38;r0t;inKleBocus,rJuI;el,rbiA;aBeA;an4e;aBu4;ei2k8Bla43oIyc3;gni39nci3up,v1;oot,uI;ff;ct,d,liIp;se,ze;tt3viA;aAenGit,o7;aWerUinpoiFlumm1LoTrLuI;b47ke,niArIt;poDsuI;aFe;eMoI;cKd,fe4XhibEmo7noJpo0sp1tru6vI;e,i6o5L;un4;la3Nu8;aGclu6dJf1occupy,sup0JvI;a6BeF;etermi4TiB;aGllu7rtr5Ksse4Q;cei2fo4NiAmea7plex,sIva6;eve8iCua6;mp1rItrol,ve;a6It6E;bOccuNmEpMutLverIwe;l07sJtu6Yu0wI;helm;ee,h1F;gr5Cnu2Cpa4;era7i4Ipo0;py,r;ey,seItaH;r2ss;aMe0ViJoIultiply;leCu6Pw;micJnIspla4;ce,g3us;!k;iIke,na9;m,ntaH;aPeLiIo0u3N;ke,ng1quIv5;eIi6S;fy;aKnIss5;d,gI;th5;rn,ve;ng2Gu1N;eep,idnJnI;e4Cow;ap;oHuI;gg3xtaI;po0;gno8mVnIrk;cTdRfQgeChPitia7ju8q1CsNtKun6EvI;a6eIo11;nt,rt,st;erJimi6BoxiPrI;odu4u6;aBn,pr03ru6C;iCpi8tIu8;all,il,ruB;abEibE;eCo3Eu0;iIul9;ca7;i7lu6;b5Xmer0pI;aLer4Uin9ly,oJrI;e3Ais6Bo2;rt,se,veI;riA;le,rt;aLeKiIoiCuD;de,jaInd1;ck;ar,iT;mp1ng,pp5raIve;ng5Mss;ath1et,iMle27oLrI;aJeIow;et;b,pp3ze;!ve5A;gg3ve;aTer45i5RlSorMrJuI;lf4Cndrai0r48;eJiIolic;ght5;e0Qsh5;b3XeLfeEgJsI;a3Dee;eIi2;!t;clo0go,shIwa4Z;ad3F;att1ee,i36;lt1st5;a0OdEl0Mm0FnXquip,rWsVtGvTxI;aRcPeDhOiNpJtIu6;ing0Yol;eKi8lIo0un9;aHoI;it,re;ct,di7l;st,t;a3oDu3B;e30lI;a10u6;lt,mi28;alua7oI;ke,l2;chew,pou0tab19;a0u4U;aYcVdTfSgQhan4joy,lPqOrNsuMtKvI;e0YisI;a9i50;er,i4rI;aHenGuC;e,re;iGol0F;ui8;ar9iC;a9eIra2ulf;nd1;or4;ang1oIu8;r0w;irc3lo0ou0ErJuI;mb1;oaGy4D;b3ct;bKer9pI;hasiIow1;ze;aKody,rI;a4oiI;d1l;lm,rk;ap0eBuI;ci40de;rIt;ma0Rn;a0Re04iKo,rIwind3;aw,ed9oI;wn;agno0e,ff1g,mi2Kne,sLvI;eIul9;rIst;ge,t;aWbVcQlod9mant3pNru3TsMtI;iIoDu37;lJngI;uiA;!l;ol2ua6;eJlIo0ro2;a4ea0;n0r0;a2Xe36lKoIu0S;uIv1;ra9;aIo0;im;a3Kur0;b3rm;af5b01cVduBep5fUliTmQnOpMrLsiCtaGvI;eIol2;lop;ch;a20i2;aDiBloIoD;re,y;oIy;te,un4;eJoI;liA;an;mEv1;a4i0Ao06raud,y;ei2iMla8oKrI;ee,yI;!pt;de,mIup3;missi34po0;de,ma7ph1;aJrief,uI;g,nk;rk;mp5rk5uF;a0Dea0h0Ai09l08oKrIurta1G;a2ea7ipp3uI;mb3;ales4e04habEinci6ll03m00nIrro6;cXdUfQju8no7qu1sLtKvI;eIin4;ne,r9y;aHin2Bribu7;er2iLoli2Epi8tJuI;lt,me;itu7raH;in;d1st;eKiJoIroFu0;rm;de,gu8rm;ss;eJoI;ne;mn,n0;eIlu6ur;al,i2;buCe,men4pI;eIi3ly;l,te;eBi6u6;r4xiC;ean0iT;rcumveFte;eJirp,oI;o0p;riAw;ncIre5t1ulk;el;a02eSi6lQoPrKuI;iXrIy;st,y;aLeaKiJoad5;en;ng;stfeLtX;ke;il,l11mba0WrrMth1;eIow;ed;!coQfrie1LgPhMliLqueaKstJtrIwild1;ay;ow;th;e2tt3;a2eJoI;ld;ad;!in,ui3;me;bysEckfi8ff3tI;he;b15c0Rd0Iff0Ggree,l0Cm09n03ppZrXsQttOuMvJwaE;it;eDoI;id;rt;gIto0X;meF;aIeCraB;ch,in;pi8sJtoI;niA;aKeIi04u8;mb3rt,ss;le;il;re;g0Hi0ou0rI;an9i2;eaKly,oiFrI;ai0o2;nt;r,se;aMi0GnJtI;icipa7;eJoIul;un4y;al;ly0;aJu0;se;lga08ze;iKlI;e9oIu6;t,w;gn;ix,oI;rd;a03jNmiKoJsoI;rb;pt,rn;niIt;st1;er;ouJuC;st;rn;cLhie2knowled9quiItiva7;es4re;ce;ge;eQliOoKrJusI;e,tom;ue;mIst;moJpI;any,liA;da7;ma7;te;pt;andPduBet,i6oKsI;coKol2;ve;liArt,uI;nd;sh;de;ct;on\",Person:\"true¦0:1Q;a29b1Zc1Md1Ee18f15g13h0Ri0Qj0Nk0Jl0Gm09n06o05p00rPsItCusain bolt,v9w4xzibit,y1;anni,oko on2uji,v1;an,es;en,o;a3ednesday adams,i2o1;lfram,o0Q;ll ferrell,z khalifa;lt disn1Qr1;hol,r0G;a2i1oltai06;n dies0Zrginia wo17;lentino rossi,n goG;a4h3i2ripp,u1yra banks;lZpac shakur;ger woods,mba07;eresa may,or;kashi,t1ylor;um,ya1B;a5carlett johanss0h4i3lobodan milosevic,no2ocr1Lpider1uperm0Fwami; m0Em0E;op dogg,w whi1H;egfried,nbad;akespeaTerlock holm1Sia labeouf;ddam hussa16nt1;a cla11ig9;aAe6i5o3u1za;mi,n dmc,paul,sh limbau1;gh;bin hood,d stew16nald1thko;in0Mo;han0Yngo starr,valdo;ese witherspo0i1mbrandt;ll2nh1;old;ey,y;chmaninoff,ffi,iJshid,y roma1H;a4e3i2la16o1uff daddy;cahont0Ie;lar,p19;le,rZ;lm17ris hilt0;leg,prah winfr0Sra;a2e1iles cra1Bostradam0J; yo,l5tt06wmQ;pole0s;a5e4i2o1ubar03;by,lie5net,rriss0N;randa ju1tt romn0M;ly;rl0GssiaB;cklemo1rkov,s0ta hari,ya angelou;re;ady gaga,e1ibera0Pu;bron jam0Xch wale1e;sa;anye west,e3i1obe bryant;d cudi,efer suther1;la0P;ats,sha;a2effers0fk,k rowling,rr tolki1;en;ck the ripp0Mwaharlal nehru,y z;liTnez,ron m7;a7e5i3u1;lk hog5mphrey1sa01;! bog05;l1tl0H;de; m1dwig,nry 4;an;ile selassFlle ber4m3rrison1;! 1;ford;id,mo09;ry;ast0iannis,o1;odwPtye;ergus0lorence nightinga08r1;an1ederic chopN;s,z;ff5m2nya,ustaXzeki1;el;eril lagasse,i1;le zatop1nem;ek;ie;a6e4i2octor w1rake;ho;ck w1ego maradoC;olf;g1mi lovaOnzel washingt0;as;l1nHrth vadR;ai lNt0;a8h5lint0o1thulhu;n1olio;an,fuci1;us;on;aucKop2ristian baMy1;na;in;millo,ptain beefhe4r1;dinal wols2son1;! palmF;ey;art;a8e5hatt,i3oHro1;ck,n1;te;ll g1ng crosby;atB;ck,nazir bhut2rtil,yon1;ce;to;nksy,rack ob1;ama;l 6r3shton kutch2vril lavig8yn ra1;nd;er;chimed2istot1;le;es;capo2paci1;no;ne\",Adjective:\"true¦0:AI;1:BS;2:BI;3:BA;4:A8;5:84;6:AV;7:AN;8:AF;9:7H;A:BQ;B:AY;C:BC;D:BH;E:9Y;aA2b9Ec8Fd7We79f6Ng6Eh61i4Xj4Wk4Tl4Im41n3Po36p2Oquart7Pr2Ds1Dt14uSvOwFye29;aMeKhIiHoF;man5oFrth7G;dADzy;despreB1n w97s86;acked1UoleF;!sa6;ather1PeFll o70ste1D;!k5;nt1Ist6Ate4;aHeGiFola5T;bBUce versa,gi3Lle;ng67rsa5R;ca1gBSluAV;lt0PnLpHrGsFttermoBL;ef9Ku3;b96ge1; Hb32pGsFtiAH;ca6ide d4R;er,i85;f52to da2;a0Fbeco0Hc0Bd04e02f01gu1XheaBGiXkn4OmUnTopp06pRrNsJtHus0wF;aFiel3K;nt0rra0P;app0eXoF;ld,uS;eHi37o5ApGuF;perv06spec39;e1ok9O;en,ttl0;eFu5;cogn06gul2RlGqu84sF;erv0olv0;at0en33;aFrecede0E;id,rallel0;am0otic0;aFet;rri0tF;ch0;nFq26vers3;sur0terFv7U;eFrupt0;st0;air,inish0orese98;mploy0n7Ov97xpF;ect0lain0;eHisFocume01ue;clFput0;os0;cid0rF;!a8Scov9ha8Jlyi8nea8Gprivileg0sMwF;aFei9I;t9y;hGircumcFonvin2U;is0;aFeck0;lleng0rt0;b20ppea85ssuGttend0uthorF;iz0;mi8;i4Ara;aLeIhoHip 25oGrF;anspare1encha1i2;geth9leADp notch,rpB;rny,ugh6H;ena8DmpGrFs6U;r49tia4;eCo8P;leFst4M;nt0;a0Dc09e07h06i04ki03l01mug,nobbi4XoVpRqueami4XtKuFymb94;bHccinAi generis,pFr5;erFre7N;! dup9b,vi70;du0li7Lp6IsFurb7J;eq9Atanda9X;aKeJi16o2QrGubboFy4Q;rn;aightFin5GungS; fFfF;or7V;adfa9Pri6;lwa6Ftu82;arHeGir6NlendBot Fry;on;c3Qe1S;k5se; call0lImb9phistic16rHuFviV;ndFth1B;proof;dBry;dFub6; o2A;e60ipF;pe4shod;ll0n d7R;g2HnF;ceEg6ist9;am3Se9;co1Zem5lfFn6Are7; suf4Xi43;aGholFient3A;ar5;rlFt4A;et;cr0me,tisfac7F;aOeIheumatoBiGoF;bu8Ztt7Gy3;ghtFv3; 1Sf6X;cJdu8PlInown0pro69sGtF;ard0;is47oF;lu2na1;e1Suc45;alcit8Xe1ondi2;bBci3mpa1;aSePicayu7laOoNrGuF;bl7Tnjabi;eKiIoF;b7VfGmi49pFxi2M;er,ort81;a7uD;maFor,sti7va2;!ry;ciDexis0Ima2CpaB;in55puli8G;cBid;ac2Ynt 3IrFti2;ma40tFv7W;!i3Z;i2YrFss7R;anoBtF; 5XiF;al,s5V;bSffQkPld OnMrLth9utKverF;!aIbMdHhGni75seas,t,wF;ei74rou74;a63e7A;ue;ll;do1Ger,si6A;d3Qg2Aotu5Z; bFbFe on o7g3Uli7;oa80;fashion0school;!ay; gua7XbFha5Uli7;eat;eHligGsF;ce7er0So1C;at0;diFse;a1e1;aOeNiMoGuF;anc0de; moEnHrthFt6V;!eFwe7L;a7Krn;chaGdescri7Iprof30sF;top;la1;ght5;arby,cessa4ighbor5wlyw0xt;k0usiaFv3;ti8;aQeNiLoHuF;dIltiF;facet0p6;deHlGnFot,rbBst;ochro4Xth5;dy;rn,st;ddle ag0nF;dbloZi,or;ag9diocEga,naGrFtropolit4Q;e,ry;ci8;cIgenta,inHj0Fkeshift,mmGnFri4Oscu61ver18;da5Dy;ali4Lo4U;!stream;abEho;aOeLiIoFumberi8;ngFuti1R;stan3RtF;erm,i4H;ghtGteraF;l,ry,te;heart0wei5O;ft JgFss9th3;al,eFi0M;nda4;nguBps0te5;apGind5noF;wi8;ut;ad0itte4uniW;ce co0Hgno6Mll0Cm04nHpso 2UrF;a2releF;va1; ZaYcoWdReQfOgrNhibi4Ri05nMoLsHtFvalu5M;aAeF;nDrdepe2K;a7iGolFuboI;ub6ve1;de,gF;nifica1;rdi5N;a2er;own;eriIiLluenVrF;ar0eq5H;pt,rt;eHiGoFul1O;or;e,reA;fiFpe26termi5E;ni2;mpFnsideCrreA;le2;ccuCdeq5Ene,ppr4J;fFsitu,vitro;ro1;mJpF;arHeGl15oFrop9;li2r11;n2LrfeA;ti3;aGeFi18;d4BnD;tuE;egGiF;c0YteC;al,iF;tiF;ma2;ld;aOelNiLoFuma7;a4meInHrrGsFur5;ti6;if4E;e58o3U; ma3GsF;ick;ghfalut2HspF;an49;li00pf33;i4llow0ndGrdFtM; 05coEworki8;sy,y;aLener44iga3Blob3oKrGuF;il1Nng ho;aFea1Fizzl0;cGtF;ef2Vis;ef2U;ld3Aod;iFuc2D;nf2R;aVeSiQlOoJrF;aGeFil5ug3;q43tf2O;gFnt3S;i6ra1;lk13oHrF; keeps,eFge0Vm9tu41;g0Ei2Ds3R;liF;sh;ag4Mowe4uF;e1or45;e4nF;al,i2;d Gmini7rF;ti6ve1;up;bl0lDmIr Fst pac0ux;oGreacF;hi8;ff;ed,ili0R;aXfVlTmQnOqu3rMthere3veryday,xF;aApIquisi2traHuF;be48lF;ta1;!va2L;edRlF;icF;it;eAstF;whi6; Famor0ough,tiE;rou2sui2;erGiF;ne1;ge1;dFe2Aoq34;er5;ficF;ie1;g9sF;t,ygF;oi8;er;aWeMiHoGrFue;ea4owY;ci6mina1ne,r31ti8ubQ;dact2Jfficult,m,sGverF;ge1se;creGePjoi1paCtF;a1inA;et,te; Nadp0WceMfiLgeneCliJmuEpeIreliAsGvoF;id,ut;pFtitu2ul1L;eCoF;nde1;ca2ghF;tf13;a1ni2;as0;facto;i5ngero0I;ar0Ce09h07i06l05oOrIuF;rmudgeon5stoma4teF;sy;ly;aIeHu1EystalF; cleFli7;ar;epy;fFv17z0;ty;erUgTloSmPnGrpoCunterclVveFy;rt;cLdJgr21jIsHtrF;aFi2;dic0Yry;eq1Yta1;oi1ug3;escenFuN;di8;a1QeFiD;it0;atoDmensuCpF;ass1SulF;so4;ni3ss3;e1niza1;ci1J;ockwiD;rcumspeAvil;eFintzy;e4wy;leGrtaF;in;ba2;diac,ef00;a00ePiLliJoGrFuck nak0;and new,isk,on22;gGldface,naF; fi05fi05;us;nd,tF;he;gGpartisFzarE;an;tiF;me;autifOhiNlLnHsFyoN;iWtselF;li8;eGiFt;gn;aFfi03;th;at0oF;v0w;nd;ul;ckwards,rF;e,rT; priori,b13c0Zd0Tf0Ng0Ihe0Hl09mp6nt06pZrTsQttracti0MuLvIwF;aGkF;wa1B;ke,re;ant garGeraF;ge;de;diIsteEtF;heFoimmu7;nt07;re;to4;hGlFtu2;eep;en;bitIchiv3roHtF;ifiFsy;ci3;ga1;ra4;ry;pFt;aHetizi8rF;oprF;ia2;llFre1;ed,i8;ng;iquFsy;at0e;ed;cohKiJkaHl,oGriFterX;ght;ne,of;li7;ne;ke,ve;olF;ic;ad;ain07gressiIi6rF;eeF;ab6;le;ve;fGraB;id;ectGlF;ue1;ioF;na2; JaIeGvF;erD;pt,qF;ua2;ma1;hoc,infinitum;cuCquiGtu3u2;al;esce1;ra2;erSjeAlPoNrKsGuF;nda1;e1olu2trF;aAuD;se;te;eaGuF;pt;st;aFve;rd;aFe;ze;ct;ra1;nt\",Pronoun:\"true¦elle,h3i2me,she,th0us,we,you;e0ou;e,m,y;!l,t;e,im\",Preposition:\"true¦aPbMcLdKexcept,fIinGmid,notwithstandiWoDpXqua,sCt7u4v2w0;/o,hereSith0;! whHin,oW;ersus,i0;a,s a vis;n1p0;!on;like,til;h1ill,oward0;!s;an,ereby,r0;ough0u;!oM;ans,ince,o that,uch G;f1n0ut;!to;!f;! 0to;effect,part;or,r0;om;espite,own,u3;hez,irca;ar1e0oBy;sides,tween;ri7;bo8cross,ft7lo6m4propos,round,s1t0;!op;! 0;a whole,long 0;as;id0ong0;!st;ng;er;ut\",SportsTeam:\"true¦0:18;1:1E;2:1D;3:14;a1Db15c0Sd0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Am01new UoRpKqueens parkJreal salt lake,sBt6utah jazz,vancouver whitecaps,w4yW;ashington 4h10;natio1Mredski2wizar0W;ampa bay 7e6o4;ronto 4ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasD;buccanee0ra0K;a8eattle 6porting kansas0Wt4; louis 4oke0V;c1Drams;marine0s4;eah13ounH;cramento Rn 4;antonio spu0diego 4francisco gJjose earthquak1;char08paB; ran07;a9h6ittsburgh 5ortland t4;imbe0rail blaze0;pirat1steele0;il4oenix su2;adelphia 4li1;eagl1philNunE;dr1;akland 4klahoma city thunder,rlando magic;athle0Lrai4;de0;england 8orleans 7york 4;g5je3knYme3red bul0Xy4;anke1;ian3;pelica2sain3;patrio3revolut4;ion;anchEeAi4ontreal impact;ami 8lwaukee b7nnesota 4;t5vi4;kings;imberwolv1wi2;rewe0uc0J;dolphi2heat,marli2;mphis grizz4ts;li1;a6eic5os angeles 4;clippe0dodFlaB;esterV; galaxy,ke0;ansas city 4nF;chiefs,roya0D; pace0polis col3;astr05dynamo,rocke3texa2;olden state warrio0reen bay pac4;ke0;allas 8e4i04od6;nver 6troit 4;lio2pisto2ti4;ge0;broncYnugge3;cowbo5maver4;icZ;ys;arEelLhAincinnati 8leveland 6ol4;orado r4umbus crew sc;api7ocki1;brow2cavalie0guar4in4;dia2;bengaVre4;ds;arlotte horAicago 4;b5cubs,fire,wh4;iteB;ea0ulQ;diff4olina panthe0; city;altimore Alackburn rove0oston 6rooklyn 4uffalo bilN;ne3;ts;cel5red4; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 4;brav1falco2h4;awA;ns;es;on villa,r4;os;c6di4;amondbac4;ks;ardi4;na4;ls\",Unit:\"true¦a07b04cXdWexVfTgRhePinYjoule0BkMlJmDnan08oCp9quart0Bsq ft,t7volts,w6y2ze3°1µ0;g,s;c,f,n;dVear1o0;ttR; 0s 0;old;att,b;erNon0;!ne02;ascals,e1i0;cXnt00;rcent,tJ;hms,unceY;/s,e4i0m²,²,³;/h,cro2l0;e0liK;!²;grLsR;gCtJ;it1u0;menQx;erPreP;b5elvins,ilo1m0notO;/h,ph,²;!byGgrEmCs;ct0rtzL;aJogrC;allonJb0ig3rB;ps;a0emtEl oz,t4;hrenheit,radG;aby9;eci3m1;aratDe1m0oulombD;²,³;lsius,nti0;gr2lit1m0;et0;er8;am7;b1y0;te5;l,ps;c2tt0;os0;econd1;re0;!s\",\"Noun|Gerund\":\"true¦0:3O;1:3M;2:3N;3:3D;4:32;5:2V;6:3E;7:3K;8:36;9:3J;A:3B;a3Pb37c2Jd27e23f1Vg1Sh1Mi1Ij1Gk1Dl18m13n11o0Wp0Pques0Sr0EsTtNunderMvKwFyDzB;eroi0oB;ni0o3P;aw2eB;ar2l3;aEed4hispe5i5oCrB;ap8est3i1;n0ErB;ki0r31;i1r2s9tc9;isualizi0oB;lunt1Vti0;stan4ta6;aFeDhin6iCraBy8;c6di0i2vel1M;mi0p8;aBs1;c9si0;l6n2s1;aUcReQhOiMkatKl2Wmo6nowJpeItFuCwB;ea5im37;b35f0FrB;fi0vB;e2Mi2J;aAoryt1KrCuB;d2KfS;etc9ugg3;l3n4;bCi0;ebBi0;oar4;gnBnAt1;a3i0;ip8oB;p8rte2u1;a1r27t1;hCo5reBulp1;a2Qe2;edu3oo3;i3yi0;aKeEi4oCuB;li0n2;oBwi0;fi0;aFcEhear7laxi0nDpor1sB;pon4tructB;r2Iu5;de5;or4yc3;di0so2;p8ti0;aFeacek20laEoCrBublis9;a1Teten4in1oces7;iso2siB;tio2;n2yi0;ckaAin1rB;ki0t1O;fEpeDrganiCvB;erco24ula1;si0zi0;ni0ra1;fe5;avi0QeBur7;gotia1twor6;aDeCi2oB;de3nito5;a2dita1e1ssaA;int0XnBrke1;ifUufactu5;aEeaDiBodAyi0;cen7f1mi1stB;e2i0;r2si0;n4ug9;iCnB;ea4it1;c6l3;ogAuB;dAgg3stif12;ci0llust0VmDnBro2;nova1sp0NterBven1;ac1vie02;agi2plo4;aDea1iCoBun1;l4w3;ki0ri0;nd3rB;roWvB;es1;aCene0Lli4rBui4;ee1ie0N;rde2the5;aHeGiDlCorBros1un4;e0Pmat1;ir1oo4;gh1lCnBs9;anZdi0;i0li0;e3nX;r0Zscina1;a1du01nCxB;erci7plo5;chan1di0ginB;ee5;aLeHiGoub1rCum8wB;el3;aDeCiB;bb3n6vi0;a0Qs7;wi0;rTscoDvi0;ba1coZlBvelo8;eCiB;ve5;ga1;nGti0;aVelebUhSlPoDrBur3yc3;aBos7yi0;f1w3;aLdi0lJmFnBo6pi0ve5;dDsCvinB;ci0;trBul1;uc1;muniDpB;lBo7;ai2;ca1;lBo5;ec1;c9ti0;ap8eaCimToBubT;ni0t9;ni0ri0;aBee5;n1t1;ra1;m8rCs1te5;ri0;vi0;aPeNitMlLoGrDuB;dge1il4llBr8;yi0;an4eat9oadB;cas1;di0;a1mEokB;i0kB;ee8;pi0;bi0;es7oa1;c9i0;gin2lonAt1;gi0;bysit1c6ki0tt3;li0;ki0;bando2cGdverti7gi0pproac9rgDssuCtB;trac1;mi0;ui0;hi0;si0;coun1ti0;ti0;ni0;ng\",PhrasalVerb:\"true¦0:92;1:96;2:8H;3:8V;4:8A;5:83;6:85;7:98;8:90;9:8G;A:8X;B:8R;C:8U;D:8S;E:70;F:97;G:8Y;H:81;I:7H;J:79;a9Fb7Uc6Rd6Le6Jf5Ig50h4Biron0j47k40l3Em31n2Yo2Wp2Cquiet Hr1Xs0KtZuXvacuu6QwNyammerBzK;ero Dip LonK;e0k0;by,ov9up;aQeMhLiKor0Mrit19;mp0n3Fpe0r5s5;ackAeel Di0S;aLiKn33;gh 3Wrd0;n Dr K;do1in,oJ;it 79k5lk Lrm 69sh Kt83v60;aw3do1o7up;aw3in,oC;rgeBsK;e 2herE;a00eYhViRoQrMuKypP;ckErn K;do1in,oJup;aLiKot0y 30;ckl7Zp F;ck HdK;e 5Y;n7Wp 3Es5K;ck MdLe Kghten 6me0p o0Rre0;aw3ba4do1in,up;e Iy 2;by,oG;ink Lrow K;aw3ba4in,up;ba4ov9up;aKe 77ll62;m 2r 5M;ckBke Llk K;ov9shit,u47;aKba4do1in,leave,o4Dup;ba4ft9pa69w3;a0Vc0Te0Mh0Ii0Fl09m08n07o06p01quar5GtQuOwK;earMiK;ngLtch K;aw3ba4o8K; by;cKi6Bm 2ss0;k 64;aReQiPoNrKud35;aigh2Det75iK;ke 7Sng K;al6Yup;p Krm2F;by,in,oG;c3Ln3Lr 2tc4O;p F;c3Jmp0nd LrKveAy 2O;e Ht 2L;ba4do1up;ar3GeNiMlLrKurB;ead0ingBuc5;a49it 6H;c5ll o3Cn 2;ak Fe1Xll0;a3Bber 2rt0und like;ap 5Vow Duggl5;ash 6Noke0;eep NiKow 6;cLp K;o6Dup;e 68;in,oK;ff,v9;de19gn 4NnKt 6Gz5;gKkE; al6Ale0;aMoKu5W;ot Kut0w 7M;aw3ba4f48oC;c2WdeEk6EveA;e Pll1Nnd Orv5tK; Ktl5J;do1foLin,o7upK;!on;ot,r5Z;aw3ba4do1in,o33up;oCto;al66out0rK;ap65ew 6J;ilAv5;aXeUiSoOuK;b 5Yle0n Kstl5;aLba4do1inKo2Ith4Nu5P;!to;c2Xr8w3;ll Mot LpeAuK;g3Ind17;a2Wf3Po7;ar8in,o7up;ng 68p oKs5;ff,p18;aKelAinEnt0;c6Hd K;o4Dup;c27t0;aZeYiWlToQrOsyc35uK;ll Mn5Kt K;aKba4do1in,oJto47up;pa4Dw3;a3Jdo1in,o21to45up;attleBess KiNop 2;ah2Fon;iLp Kr4Zu1Gwer 6N;do1in,o6Nup;nt0;aLuK;gEmp 6;ce u20y 6D;ck Kg0le 4An 6p5B;oJup;el 5NncilE;c53ir 39n0ss MtLy K;ba4oG; Hc2R;aw3ba4in,oJ;pKw4Y;e4Xt D;aLerd0oK;dAt53;il Hrrow H;aTeQiPoLuK;ddl5ll I;c1FnkeyMp 6uthAve K;aKdo1in,o4Lup;l4Nw3; wi4K;ss0x 2;asur5e3SlLss K;a21up;t 6;ke Ln 6rKs2Ax0;k 6ryA;do,fun,oCsure,up;a02eViQoLuK;ck0st I;aNc4Fg MoKse0;k Kse4D;aft9ba4do1forw37in56o0Zu46;in,oJ;d 6;e NghtMnLsKve 00;ten F;e 2k 2; 2e46;ar8do1in;aMt LvelK; oC;do1go,in,o7up;nEve K;in,oK;pKut;en;c5p 2sh LtchBughAy K;do1o59;in4Po7;eMick Lnock K;do1oCup;oCup;eLy K;in,up;l Ip K;aw3ba4do1f04in,oJto,up;aMoLuK;ic5mpE;ke3St H;c43zz 2;a01eWiToPuK;nLrrKsh 6;y 2;keLt K;ar8do1;r H;lKneErse3K;d Ke 2;ba4dKfast,o0Cup;ear,o1;de Lt K;ba4on,up;aw3o7;aKlp0;d Ml Ir Kt 2;fKof;rom;f11in,o03uW;cPm 2nLsh0ve Kz2P;at,it,to;d Lg KkerP;do1in,o2Tup;do1in,oK;ut,v9;k 2;aZeTive Rloss IoMrLunK; f0S;ab hold,in43ow 2U; Kof 2I;aMb1Mit,oLr8th1IuK;nd9;ff,n,v9;bo7ft9hQw3;aw3bKdo1in,oJrise,up,w3;a4ir2H;ar 6ek0t K;aLb1Fdo1in,oKr8up;ff,n,ut,v9;cLhKl2Fr8t,w3;ead;ross;d aKng 2;bo7;a0Ee07iYlUoQrMuK;ck Ke2N;ar8up;eLighten KownBy 2;aw3oG;eKshe27; 2z5;g 2lMol Krk I;aKwi20;bo7r8;d 6low 2;aLeKip0;sh0;g 6ke0mKrKtten H;e F;gRlPnNrLsKzzle0;h F;e Km 2;aw3ba4up;d0isK;h 2;e Kl 1T;aw3fPin,o7;ht ba4ure0;ePnLsK;s 2;cMd K;fKoG;or;e D;d04l 2;cNll Krm0t1G;aLbKdo1in,o09sho0Eth08victim;a4ehi2O;pa0C;e K;do1oGup;at Kdge0nd 12y5;in,o7up;aOi1HoNrK;aLess 6op KuN;aw3b03in,oC;gBwB; Ile0ubl1B;m 2;a0Ah05l02oOrLut K;aw3ba4do1oCup;ackBeep LoKy0;ss Dwd0;by,do1in,o0Uup;me NoLuntK; o2A;k 6l K;do1oG;aRbQforOin,oNtKu0O;hLoKrue;geth9;rough;ff,ut,v9;th,wK;ard;a4y;paKr8w3;rt;eaLose K;in,oCup;n 6r F;aNeLiK;ll0pE;ck Der Kw F;on,up;t 2;lRncel0rOsMtch LveE; in;o1Nup;h Dt K;doubt,oG;ry LvK;e 08;aw3oJ;l Km H;aLba4do1oJup;ff,n,ut;r8w3;a0Ve0MiteAl0Fo04rQuK;bblNckl05il0Dlk 6ndl05rLsKtMy FzzA;t 00;n 0HsK;t D;e I;ov9;anWeaUiLush K;oGup;ghQng K;aNba4do1forMin,oLuK;nd9p;n,ut;th;bo7lKr8w3;ong;teK;n 2;k K;do1in,o7up;ch0;arTg 6iRn5oPrNssMttlLunce Kx D;aw3ba4;e 6; ar8;e H;do1;k Dt 2;e 2;l 6;do1up;d 2;aPeed0oKurt0;cMw K;aw3ba4do1o7up;ck;k K;in,oC;ck0nk0stA; oQaNef 2lt0nd K;do1ov9up;er;up;r Lt K;do1in,oCup;do1o7;ff,nK;to;ck Pil0nMrgLsK;h D;ainBe D;g DkB; on;in,o7;aw3do1in,oCup;ff,ut;ay;ct FdQir0sk MuctionA; oG;ff;ar8o7;ouK;nd; o7;d K;do1oKup;ff,n;wn;o7up;ut\",ProperNoun:\"true¦aIbDc8dalhousHe7f5gosford,h4iron maiden,kirby,landsdowne,m2nis,r1s0wembF;herwood,paldiB;iel,othwe1;cgi0ercedes,issy;ll;intBudsB;airview,lorence,ra0;mpt9nco;lmo,uro;a1h0;arlt6es5risti;rl0talina;et4i0;ng;arb3e0;et1nt0rke0;ley;on;ie;bid,jax\",\"Person|Place\":\"true¦a8d6h4jordan,k3orlando,s1vi0;ctor9rgin9;a0ydney;lvador,mara,ntia4;ent,obe;amil0ous0;ton;arw2ie0;go;lexandr1ust0;in;ia\",LastName:\"true¦0:BR;1:BF;2:B5;3:BH;4:AX;5:9Y;6:B6;7:BK;8:B0;9:AV;A:AL;B:8Q;C:8G;D:7K;E:BM;F:AH;aBDb9Zc8Wd88e81f7Kg6Wh64i60j5Lk4Vl4Dm39n2Wo2Op25quispe,r1Ls0Pt0Ev03wTxSyKzG;aIhGimmerm6A;aGou,u;ng,o;khar5ytsE;aKeun9BiHoGun;koya32shiBU;!lG;diGmaz;rim,z;maGng;da,g52mo83sGzaC;aChiBV;iao,u;aLeJiHoGright,u;jcA5lff,ng;lGmm0nkl0sniewsC;kiB1liams33s3;bGiss,lt0;b,er,st0;a6Vgn0lHtG;anabe,s3;k0sh,tG;e2Non;aLeKiHoGukD;gt,lk5roby5;dHllalGnogr3Kr1Css0val3S;ba,ob1W;al,ov4;lasHsel8W;lJn dIrgBEsHzG;qu7;ilyEqu7siljE;en b6Aijk,yk;enzueAIverde;aPeix1VhKi2j8ka43oJrIsui,uG;om5UrG;c2n0un1;an,emblA7ynisC;dorAMlst3Km4rrAth;atch0i8UoG;mHrG;are84laci79;ps3sG;en,on;hirDkah9Mnaka,te,varA;a06ch01eYhUiRmOoMtIuHvGzabo;en9Jobod3N;ar7bot4lliv2zuC;aIeHoG;i7Bj4AyanAB;ele,in2FpheBvens25;l8rm0;kol5lovy5re7Tsa,to,uG;ng,sa;iGy72;rn5tG;!h;l71mHnGrbu;at9cla9Egh;moBo7M;aIeGimizu;hu,vchG;en8Luk;la,r1G;gu9infe5YmGoh,pulveA7rra5P;jGyG;on5;evi6iltz,miHneid0roed0uGwarz;be3Elz;dHtG;!t,z;!t;ar4Th8ito,ka4OlJnGr4saCto,unde19v4;ch7dHtGz;a5Le,os;b53e16;as,ihDm4Po0Y;aVeSiPoJuHyG;a6oo,u;bio,iz,sG;so,u;bKc8Fdrigue67ge10j9YmJosevelt,sItHux,wG;e,li6;a9Ch;enb4Usi;a54e4L;erts15i93;bei4JcHes,vGzzo;as,e9;ci,hards12;ag2es,iHut0yG;es,nol5N;s,t0;dImHnGsmu97v6C;tan1;ir7os;ic,u;aUeOhMiJoHrGut8;asad,if6Zochazk27;lishc2GpGrti72u10we76;e3Aov51;cHe45nG;as,to;as70hl0;aGillips;k,m,n6I;a3Hde3Wete0Bna,rJtG;ersHrovGters54;!a,ic;!en,on;eGic,kiBss3;i9ra,tz,z;h86k,padopoulIrk0tHvG;ic,l4N;el,te39;os;bMconn2Ag2TlJnei6PrHsbor6XweBzG;dem7Rturk;ella4DtGwe6N;ega,iz;iGof7Hs8I;vGyn1R;ei9;aSri1;aPeNiJoGune50ym2;rHvGwak;ak4Qik5otn66;odahl,r4S;cholsZeHkolGls4Jx3;ic,ov84;ls1miG;!n1;ils3mG;co4Xec;gy,kaGray2sh,var38;jiGmu9shiG;ma;a07c04eZiWoMuHyeG;rs;lJnIrGssoli6S;atGp03r7C;i,ov4;oz,te58;d0l0;h2lOnNo0RrHsGza1A;er,s;aKeJiIoz5risHtG;e56on;!on;!n7K;au,i9no,t5J;!lA;r1Btgome59;i3El0;cracFhhail5kkeHlG;l0os64;ls1;hmeJiIj30lHn3Krci0ssiGyer2N;!er;n0Po;er,j0;dDti;cartHlG;aughl8e2;hy;dQe7Egnu68i0jer3TkPmNnMrItHyG;er,r;ei,ic,su21thews;iHkDquAroqu8tinG;ez,s;a5Xc,nG;!o;ci5Vn;a5UmG;ad5;ar5e6Kin1;rig77s1;aVeOiLoJuHyG;!nch;k4nGo;d,gu;mbarGpe3Fvr4we;di;!nGu,yana2B;coln,dG;b21holm,strom;bedEfeKhIitn0kaHn8rGw35;oy;!j;m11tG;in1on1;bvGvG;re;iGmmy,ng,rs2Qu,voie,ws3;ne,t1F;aZeYh2iWlUnez50oNrJuHvar2woG;k,n;cerGmar68znets5;a,o34;aHem0isGyeziu;h23t3O;m0sni4Fus3KvG;ch4O;bay57ch,rh0Usk16vaIwalGzl5;czGsC;yk;cIlG;!cGen4K;huk;!ev4ic,s;e8uiveG;rt;eff0kGl4mu9nnun1;ucF;ll0nnedy;hn,llKminsCne,pIrHstra3Qto,ur,yGzl5;a,s0;j0Rls22;l2oG;or;oe;aPenOha6im14oHuG;ng,r4;e32hInHrge32u6vG;anD;es,ss3;anHnsG;en,on,t3;nesGs1R;en,s1;kiBnings,s1;cJkob4EnGrv0E;kDsG;en,sG;en0Ion;ks3obs2A;brahimDglesi5Nke5Fl0Qno07oneIshikHto,vanoG;u,v54;awa;scu;aVeOiNjaltal8oIrist50uG;!aGb0ghAynh;m2ng;a6dz4fIjgaa3Hk,lHpUrGwe,x3X;ak1Gvat;mAt;er,fm3WmG;ann;ggiBtchcock;iJmingw4BnHrGss;nand7re9;deGriks1;rs3;kkiHnG;on1;la,n1;dz4g1lvoQmOns0ZqNrMsJuIwHyG;asFes;kiB;g1ng;anHhiG;mo14;i,ov0J;di6p0r10t;ue;alaG;in1;rs1;aVeorgUheorghe,iSjonRoLrJuGw3;errGnnar3Co,staf3Ctierr7zm2;a,eG;ro;ayli6ee2Lg4iffithGub0;!s;lIme0UnHodGrbachE;e,m2;calvAzale0S;dGubE;bGs0E;erg;aj,i;bs3l,mGordaO;en7;iev3U;gnMlJmaIndFo,rGsFuthi0;cGdn0za;ia;ge;eaHlG;agh0i,o;no;e,on;aVerQiLjeldsted,lKoIrHuG;chs,entAji41ll0;eem2iedm2;ntaGrt8urni0wl0;na;emi6orA;lipIsHtzgeraG;ld;ch0h0;ovG;!ic;hatDnanIrG;arGei9;a,i;deY;ov4;b0rre1D;dKinsJriksIsGvaB;cob3GpGtra3D;inoza,osiQ;en,s3;te8;er,is3warG;ds;aXePiNjurhuMoKrisco15uHvorakG;!oT;arte,boHmitru,nn,rGt3C;and,ic;is;g2he0Omingu7nErd1ItG;to;us;aGcki2Hmitr2Ossanayake,x3;s,z; JbnaIlHmirGrvisFvi,w2;!ov4;gado,ic;th;bo0groot,jo6lHsilGvriA;va;a cruz,e3uG;ca;hl,mcevsCnIt2WviG;dGes,s;ov,s3;ielsGku22;!en;ki;a0Be06hRiobQlarkPoIrGunningh1H;awfo0RivGuz;elli;h1lKntJoIrGs2Nx;byn,reG;a,ia;ke,p0;i,rer2K;em2liB;ns;!e;anu;aOeMiu,oIristGu6we;eGiaG;ns1;i,ng,p9uHwGy;!dH;dGng;huJ;!n,onGu6;!g;kJnIpm2ttHudhGv7;ry;erjee,o14;!d,g;ma,raboG;rty;bJl0Cng4rG;eghetHnG;a,y;ti;an,ota1C;cerAlder3mpbeLrIstGvadi0B;iGro;llo;doHl0Er,t0uGvalho;so;so,zo;ll;a0Fe01hYiXlUoNrKuIyG;rLtyG;qi;chan2rG;ke,ns;ank5iem,oGyant;oks,wG;ne;gdan5nIruya,su,uchaHyKziG;c,n5;rd;darGik;enG;ko;ov;aGond15;nco,zG;ev4;ancFshw16;a08oGuiy2;umGwmG;ik;ckRethov1gu,ktPnNrG;gJisInG;ascoGds1;ni;ha;er,mG;anG;!n;gtGit7nP;ss3;asF;hi;er,hG;am;b4ch,ez,hRiley,kk0ldw8nMrIshHtAu0;es;ir;bInHtlGua;ett;es,i0;ieYosa;dGik;a9yoG;padhyG;ay;ra;k,ng;ic;bb0Acos09d07g04kht05lZnPrLsl2tJyG;aHd8;in;la;chis3kiG;ns3;aImstro6sl2;an;ng;ujo,ya;dJgelHsaG;ri;ovG;!a;ersJov,reG;aGjEws;ss1;en;en,on,s3;on;eksejEiyEmeiIvG;ar7es;ez;da;ev;arwHuilG;ar;al;ams,l0;er;ta;as\",Ordinal:\"true¦eBf7nin5s3t0zeroE;enDhir1we0;lfCn7;d,t3;e0ixt8;cond,vent7;et0th;e6ie7;i2o0;r0urt3;tie4;ft1rst;ight0lev1;e0h,ie1;en0;th\",Cardinal:\"true¦bEeBf5mEnine7one,s4t0zero;en,h2rDw0;e0o;lve,n5;irt6ousands,ree;even2ix2;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illions\",Multiple:\"true¦b3hundred,m3qu2se1t0;housand,r2;pt1xt1;adr0int0;illion\",City:\"true¦0:74;1:61;2:6G;3:6J;4:5S;a68b53c4Id48e44f3Wg3Hh39i31j2Wk2Fl23m1Mn1Co19p0Wq0Ur0Os05tRuQvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3H;greb,nzib5G;ang2e5okoha3Sunfu;katerin3Hrev0;a5n0Q;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1L;hi5Zkl3A;l63xford;aw;a8e6i5ladivost5Molgogr6L;en3lni6S;ni22r5;o3saill4N;lenc4Wncouv3Sr3ughn;lan bat1Crumqi,trecht;aFbilisi,eEheDiBo9r7u5;l21n63r5;in,ku;i5ondh62;es51poli;kyo,m2Zron1Pulo5;n,uS;an5jua3l2Tmisoa6Bra3;j4Tshui; hag62ssaloni2H;gucigal26hr0l av1U;briz,i6llinn,mpe56ng5rtu,shk2R;i3Esh0;an,chu1n0p2Eyu0;aEeDh8kopje,owe1Gt7u5;ra5zh4X;ba0Ht;aten is55ockholm,rasbou67uttga2V;an8e6i5;jiazhua1llo1m5Xy0;f50n5;ya1zh4H;gh3Kt4Q;att45o1Vv44;cramen16int ClBn5o paulo,ppo3Rrajevo; 7aa,t5;a 5o domin3E;a3fe,m1M;antonio,die3Cfrancisco,j5ped3Nsalvad0J;o5u0;se;em,t lake ci5Fz25;lou58peters24;a9e8i6o5;me,t59;ga,o5yadh;! de janei3F;cife,ims,nn3Jykjavik;b4Sip4lei2Inc2Pwalpindi;ingdao,u5;ez2i0Q;aFeEhDiCo9r7u6yong5;ya1;eb59ya1;a5etor3M;g52to;rt5zn0; 5la4Co;au prin0Melizabe24sa03;ls3Prae5Atts26;iladelph3Gnom pe1Aoenix;ki1tah tik3E;dua,lerYnaji,r4Ot5;na,r32;ak44des0Km1Mr6s5ttawa;a3Vlo;an,d06;a7ew5ing2Fovosibir1Jyc; 5cast36;del24orlea44taip14;g8iro4Wn5pl2Wshv33v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0W;aEeCi9o6u5;mb2Ani26sc3Y;gadishu,nt6s5;c13ul;evideo,pelli1Rre2Z;ami,l6n14s5;kolc,sissauga;an,waukee;cca,d5lbour2Mmph41ndo1Cssi3;an,ell2Xi3;cau,drAkass2Sl9n8r5shh4A;aca6ib5rakesh,se2L;or;i1Sy;a4EchFdal0Zi47;mo;id;aDeAi8o6u5vSy2;anMckn0Odhia3;n5s angel26;d2g bea1N;brev2Be3Lma5nz,sb2verpo28;!ss27; ma39i5;c5pzig;est16; p6g5ho2Wn0Cusan24;os;az,la33;aHharFiClaipeBo9rak0Du7y5;iv,o5;to;ala lump4n5;mi1sh0;hi0Hlka2Xpavog4si5wlo2;ce;da;ev,n5rkuk;gst2sha5;sa;k5toum;iv;bHdu3llakuric0Qmpa3Fn6ohsiu1ra5un1Iwaguc0Q;c0Pj;d5o,p4;ah1Ty;a7e6i5ohannesV;l1Vn0;dd36rusalem;ip4k5;ar2H;bad0mph1OnArkutUs7taXz5;mir,tapala5;pa;fah0l6tanb5;ul;am2Zi2H;che2d5;ianap2Mo20;aAe7o5yder2W; chi mi5ms,nolulu;nh;f6lsin5rakli2;ki;ei;ifa,lifax,mCn5rb1Dva3;g8nov01oi;aFdanEenDhCiPlasgBo9raz,u5;a5jr23;dal6ng5yaquil;zh1J;aja2Oupe;ld coa1Bthen5;bu2S;ow;ent;e0Uoa;sk;lw7n5za;dhi5gt1E;nag0U;ay;aisal29es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Pl paso;in5mont2;bur5;gh;aBe8ha0Xisp4o7resd0Lu5;b5esseldorf,nkirk,rb0shanbe;ai,l0I;ha,nggu0rtmu13;hradSl6nv5troit;er;hi;donghIe6k09l5masc1Zr es sala1KugavpiY;i0lU;gu,je2;aJebu,hAleve0Vo5raio02uriti1Q;lo7n6penhag0Ar5;do1Ok;akKst0V;gUm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;ng5ttogr14;ch8sha,zh07;gliari,i9lga8mayenJn6pe town,r5tanO;acCdiff;ber1Ac5;un;ry;ro;aWeNhKirmingh0WoJr9u5;chareTdapeTenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil8tisla7zzav5;il5;le;va;ia;goZst2;op6ubaneshw5;ar;al;iCl9ng8r5;g6l5n;in;en;aluru,hazi;fa6grade,o horizon5;te;st;ji1rut;ghd0BkFn9ot8r7s6yan n4;ur;el,r07;celo3i,ranquil09;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a05b02cc01ddis aba00gartaZhmedXizawl,lSmPnHqa00rEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a8c5kaOtwerp;hora6o3;na;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 7buquerq6eppo,giers,ma5;ty;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",Region:\"true¦0:2O;1:2L;2:2U;3:2F;a2Sb2Fc21d1Wes1Vf1Tg1Oh1Ki1Fj1Bk16l13m0Sn09o07pYqVrSsJtEuBverAw6y4zacatec2W;akut0o0Fu4;cat1k09;a5est 4isconsin,yomi1O;bengal,virgin0;rwick3shington4;! dc;acruz,mont;dmurt0t4;ah,tar4; 2Pa12;a6e5laxca1Vripu21u4;scaEva;langa2nnessee,x2J;bas10m4smQtar29;aulip2Hil nadu;a9elang07i7o5taf16u4ylh1J;ff02rr09s1E;me1Gno1Uuth 4;cZdY;ber0c4kkim,naloa;hu1ily;n5rawak,skatchew1xo4;ny; luis potosi,ta catari2;a4hodeA;j4ngp0C;asth1shahi;ingh29u4;e4intana roo;bec,en6retaro;aAe6rince edward4unjab; i4;sl0G;i,n5r4;ak,nambu0F;a0Rnsylv4;an0;ha0Pra4;!na;axa0Zdisha,h4klaho21ntar4reg7ss0Dx0I;io;aLeEo6u4;evo le4nav0X;on;r4tt18va scot0;f9mandy,th4; 4ampton3;c6d5yo4;rk3;ako1O;aroli2;olk;bras1Nva0Dw4; 6foundland4;! and labrad4;or;brunswick,hamp3jers5mexiTyork4;! state;ey;galPyarit;aAeghala0Mi6o4;nta2r4;dov0elos;ch6dlanDn5ss4zor11;issippi,ouri;as geraPneso18;ig1oac1;dhy12harasht0Gine,lac07ni5r4ssachusetts;anhao,i el,ylG;p4toba;ur;anca3e4incoln3ouisI;e4iR;ds;a6e5h4omi;aka06ul2;dah,lant1ntucky,ra01;bardino,lmyk0ns0Qr4;achay,el0nata0X;alis6har4iangxi;kh4;and;co;daho,llino7n4owa;d5gush4;et0;ia2;is;a6ert5i4un1;dalFm0D;ford3;mp3rya2waii;ansu,eorg0lou7oa,u4;an4izhou,jarat;ajuato,gdo4;ng;cester3;lori4uji1;da;sex;ageUe7o5uran4;go;rs4;et;lawaMrby3;aFeaEh9o4rim08umbr0;ahui7l6nnectic5rsi4ventry;ca;ut;i03orado;la;e5hattisgarh,i4uvash0;apRhuahua;chn5rke4;ss0;ya;ra;lGm4;bridge3peche;a9ihar,r8u4;ck4ryat0;ingham3;shi4;re;emen,itish columb0;h0ja cal8lk7s4v7;hkorto4que;st1;an;ar0;iforn0;ia;dygHguascalientes,lBndhr9r5ss4;am;izo2kans5un4;achal 7;as;na;a 4;pradesh;a6ber5t4;ai;ta;ba5s4;ka;ma;ea\",Place:\"true¦0:4T;1:4V;2:44;3:4B;4:3I;a4Eb3Gc2Td2Ge26f25g1Vh1Ji1Fk1Cl14m0Vn0No0Jp08r04sTtNuLvJw7y5;a5o0Syz;kut1Bngtze;aDeChitBi9o5upatki,ycom2P;ki26o5;d5l1B;b3Ps5;i4to3Y;c0SllowbroCn5;c2Qgh2;by,chur1P;ed0ntw3Gs22;ke6r3St5;erf1f1; is0Gf3V;auxha3Mirgin is0Jost5;ok;laanbaatar,pto5xb3E;n,wn;a9eotihuac43h7ive49o6ru2Nsarskoe selo,u5;l2Dzigo47;nto,rquay,tt2J;am3e 5orn3E;bronx,hamptons;hiti,j mah0Iu1N;aEcotts bluff,eCfo,herbroQoApring9t7u5yd2F;dbu1Wn5;der03set3B;aff1ock2Nr5;atf1oud;hi37w24;ho,uth5; 1Iam1Zwo3E;a5i2O;f2Tt0;int lawrence riv3Pkhal2D;ayleigh,ed7i5oc1Z;chmo1Eo gran4ver5;be1Dfr09si4; s39cliffe,hi2Y;aCe9h8i5ompeii,utn2;c6ne5tcai2T; 2Pc0G;keri13t0;l,x;k,lh2mbr6n5r2J;n1Hzance;oke;cif38pahanaumokuak30r5;k5then0;si4w1K;ak7r6x5;f1l2X;ange county,d,f1inoco;mTw1G;e8i1Uo5;r5tt2N;th5wi0E; 0Sam19;uschwanste1Pw5; eng6a5h2market,po36;rk;la0P;a8co,e6i5uc;dt1Yll0Z;adow5ko0H;lands;chu picchu,gad2Ridsto1Ql8n7ple6r5;kh2; g1Cw11;hatt2Osf2B;ibu,t0ve1Z;a8e7gw,hr,in5owlOynd02;coln memori5dl2C;al;asi4w3;kefr7mbe1On5s,x;ca2Ig5si05;f1l27t0;ont;azan kreml14e6itchen2Gosrae,rasnoyar5ul;sk;ns0Hs1U;ax,cn,lf1n6ps5st;wiN;d5glew0Lverness;ian27ochina;aDeBi6kg,nd,ov5unti2H;d,enweep;gh6llc5;reL;bu03l5;and5;!s;r5yw0C;ef1tf1;libu24mp6r5stings;f1lem,row;stead,t0;aDodavari,r5uelph;avenAe5imsS;at 8en5; 6f1Fwi5;ch;acr3vall1H;brita0Flak3;hur5;st;ng3y villa0W;airhavHco,ra;aAgli9nf17ppi8u7ver6x5;et1Lf1;glad3t0;rope,st0;ng;nt0;rls1Ls5;t 5;e5si4;nd;aCe9fw,ig8o7ryd6u5xb;mfri3nstab00rh2tt0;en;nca18rcKv19wnt0B;by;n6r5vonpo1D;ry;!h2;nu8r5;l6t5;f1moor;ingt0;be;aLdg,eIgk,hClBo5royd0;l6m5rnwa0B;pt0;c7lingw6osse5;um;ood;he0S;earwat0St;a8el6i5uuk;chen itza,mney ro07natSricahua;m0Zt5;enh2;mor5rlottetPth2;ro;dar 5ntervilA;breaks,faZg5;rove;ld9m8r5versh2;lis6rizo pla5;in;le;bLpbellf1;weQ;aZcn,eNingl01kk,lackLolt0r5uckV;aGiAo5;ckt0ok5wns cany0;lyn,s5;i4to5;ne;de;dge6gh5;am,t0;n6t5;own;or5;th;ceb6m5;lNpt0;rid5;ge;bu5pool,wa8;rn;aconsfEdf1lBr9verly7x5;hi5;ll; hi5;lls;wi5;ck; air,l5;ingh2;am;ie5;ld;ltimore,rnsl6tters5;ea;ey;bLct0driadic,frica,ginJlGmFn9rc8s7tl6yleOzor3;es;!ant8;hcroft,ia; de triomphe,t6;adyr,ca8dov9tarct5;ic5; oce5;an;st5;er;ericas,s;be6dersh5hambra,list0;ot;rt0;cou5;rt;bot7i5;ngd0;on;sf1;ord\",Country:\"true¦0:38;1:2L;2:3B;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om2pZqat1KrXsKtCu7v5wal4yemTz3;a25imbabwe;es,lis and futu2Y;a3enezue32ietnam;nuatu,tican city;gTk6nited 4ruXs3zbeE; 2Ca,sr;arab emirat0Kkingdom,states3;! of am2Y;!raiV;a8haCimor les0Co7rinidad 5u3;nis0rk3valu;ey,me2Zs and caic1V;and t3t3;oba1L;go,kel10nga;iw2ji3nz2T;ki2V;aDcotl1eCi9lov8o6pa2Dri lanka,u5w3yr0;az3edAitzerl1;il1;d2riname;lomon1Xmal0uth 3;afr2KkMsud2;ak0en0;erra leoFn3;gapo1Yt maart3;en;negLrb0ychellZ;int 3moa,n marino,udi arab0;hele26luc0mart21;epublic of ir0Eom2Euss0w3;an27;a4eIhilippinUitcairn1Mo3uerto riN;l1rtugF;ki2Dl4nama,pua new0Vra3;gu7;au,esti3;ne;aBe9i7or3;folk1Ith4w3;ay; k3ern mariana1D;or0O;caragua,ger3ue;!ia;p3ther1Aw zeal1;al;mib0u3;ru;a7exi6icro0Bo3yanm06;ldova,n3roc5zambA;a4gol0t3;enegro,serrat;co;cAdagasc01l7r5urit4yot3;te;an0i16;shall0Xtin3;ique;a4div3i,ta;es;wi,ys0;ao,ed02;a6e5i3uxembourg;b3echtenste12thu1G;er0ya;ban0Isotho;os,tv0;azakh1Fe4iriba04o3uwait,yrgyz1F;rXsovo;eling0Knya;a3erG;ma16p2;c7nd6r4s3taly,vory coast;le of m2rael;a3el1;n,q;ia,oJ;el1;aiTon3ungary;dur0Ng kong;aBermany,ha0QibraltAre8u3;a6ern5inea3ya0P;! biss3;au;sey;deloupe,m,tema0Q;e3na0N;ce,nl1;ar;bUmb0;a7i6r3;ance,ench 3;guia0Epoly3;nes0;ji,nl1;lklandUroeU;ast tim7cu6gypt,l salv6ngl1quatorial4ritr5st3thiop0;on0; guin3;ea;ad3;or;enmark,jibou5ominica4r con3;go;!n C;ti;aBentral african Ah8o5roat0u4yprRzech3; 9ia;ba,racao;c4lo3morQngo brazzaville,okGsta r04te de ivoiL;mb0;osE;i3ristmasG;le,na;republic;m3naUpe verde,ymanA;bod0ero3;on;aGeDhut2o9r5u3;lgar0r3;kina faso,ma,undi;azil,itish 3unei;virgin3; is3;lands;liv0nai5snia and herzegoviHtswaHuvet3; isl1;and;re;l3n8rmuG;ar3gium,ize;us;h4ngladesh,rbad3;os;am4ra3;in;as;fghaGlDmBn6r4ustr3zerbaij2;al0ia;genti3men0uba;na;dorra,g5t3;arct7igua and barbu3;da;o3uil3;la;er3;ica;b3ger0;an0;ia;ni3;st2;an\",FirstName:\"true¦aTblair,cQdOfrancoZgabMhinaLilya,jHkClBm6ni4quinn,re3s0;h0umit,yd;ay,e0iloh;a,lby;g9ne;co,ko0;!s;a1el0ina,org6;!okuhF;ds,naia,r1tt0xiB;i,y;ion,lo;ashawn,eif,uca;a3e1ir0rM;an;lsFn0rry;dall,yat5;i,sD;a0essIie,ude;i1m0;ie,mG;me;ta;rie0y;le;arcy,ev0;an,on;as1h0;arl8eyenne;ey,sidy;drien,kira,l4nd1ubr0vi;ey;i,r0;a,e0;a,y;ex2f1o0;is;ie;ei,is\",WeekDay:\"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",Month:\"true¦dec0february,july,nov0octo1sept0;em0;ber\",Date:\"true¦ago,on4som4t1week0yesterd5; end,ends;mr1o0;d2morrow;!w;ed0;ay\",Duration:\"true¦centurAd8h7m5q4se3w1y0;ear8r8;eek0k7;!end,s;ason,c5;tr,uarter;i0onth3;llisecond2nute2;our1r1;ay0ecade0;!s;ies,y\",FemaleName:\"true¦0:J7;1:JB;2:IJ;3:IK;4:J1;5:IO;6:JS;7:JO;8:HB;9:JK;A:H4;B:I2;C:IT;D:JH;E:IX;F:BA;G:I4;aGTbFLcDRdD0eBMfB4gADh9Ti9Gj8Dk7Cl5Wm48n3Lo3Hp33qu32r29s15t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof3;e3Sf3la,ra;h2iKlIna,ynH;ab,ep;da,ma;da,h2iHra;nab;aKeJi0FolB7uIvH;et8onDP;i0na;le0sen3;el,gm3Hn,rGLs8W;aoHme0nyi;m5XyAD;aMendDZhiDGiH;dele9lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;ck84kIl8oleAviH;anFenJ4;ky,toriBK;da,lA8rHs0;a,nHoniH9;a,iFR;leHnesH9;nILrH;i1y;g9rHs6xHA;su5te;aYeUhRiNoLrIuHy2;i,la;acJ3iHu0J;c3na,sH;hFta;nHr0F;iFya;aJffaEOnHs6;a,gtiH;ng;!nFSra;aIeHomasi0;a,l9Oo8Ares1;l3ndolwethu;g9Fo88rIssH;!a,ie;eHi,ri7;sa,za;bOlMmKnIrHs6tia0wa0;a60yn;iHya;a,ka,s6;arFe2iHm77ra;!ka;a,iH;a,t6;at6it6;a0Ecarlett,e0AhWiSkye,neza0oQri,tNuIyH;bIGlvi1;ha,mayIJniAsIzH;an3Net8ie,y;anHi7;!a,e,nH;aCe;aIeH;fan4l5Dphan6E;cI5r5;b3fiAAm0LnHphi1;d2ia,ja,ya;er2lJmon1nIobh8QtH;a,i;dy;lETv3;aMeIirHo0risFDy5;a,lDM;ba,e0i5lJrH;iHr6Jyl;!d8Ifa;ia,lDZ;hd,iMki2nJrIu0w0yH;la,ma,na;i,le9on,ron,yn;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye82vH;da,inj;e0ife;en1i0ma;anA9bLd5Oh1SiBkKlJmInd2rHs6vannaC;aCi0;ant6i2;lDOma,ome;ee0in8Tu2;in1ri0;a05eZhXiUoHuthDM;bScRghQl8LnPsJwIxH;anB3ie,y;an,e0;aIeHie,lD;ann7ll1marDGtA;!lHnn1;iHyn;e,nH;a,dF;da,i,na;ayy8G;hel67io;bDRerAyn;a,cIkHmas,nFta,ya;ki,o;h8Xki;ea,iannGMoH;da,n1P;an0bJemFgi0iInHta,y0;a8Bee;han86na;a,eH;cHkaC;a,ca;bi0chIe,i0mo0nHquETy0;di,ia;aERelHiB;!e,le;een4ia0;aPeOhMiLoJrHute6A;iHudenCV;scil3LyamvaB;lHrt3;i0ly;a,paluk;ilome0oebe,ylH;is,lis;ggy,nelope,r5t2;ige,m0VnKo5rvaDMtIulH;a,et8in1;ricHt4T;a,e,ia;do2i07;ctav3dIfD3is6ksa0lHphD3umC5yunbileg;a,ga,iv3;eHvAF;l3t8;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aCeEma;ll1mi;aNcLhariBQkKlaJna,sHta,vi;anHha;ur;!y;a,iDZki;hoGk9YolH;a,e4P;!mh;hir,lHna,risDEsreE;!a,iDDlBV;asuMdLh3i6Dl5nKomi7rgEVtH;aHhal4;lHs6;i1ya;cy,et8;e9iF0ya;nngu2X;a0Ackenz4e02iMoJrignayani,uriDJyH;a,rH;a,iOlNna,tG;bi0i2llBJnH;a,iH;ca,ka,qD9;a,cUdo4ZkaTlOmi,nMrItzi,yH;ar;aJiIlH;anET;am;!l,nB;dy,eHh,n4;nhGrva;aKdJe0iCUlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5DgNi,lKrH;edi7AiIjem,on,yH;em,l;em,sCG;an4iHliCF;nHsCJ;a,da;!an,han;b09cASd07e,g05ha,i04ja,l02n00rLsoum5YtKuIv84xBKyHz4;bell,ra,soBB;d7rH;a,eE;h8Gild1t4;a,cUgQiKjor4l7Un4s6tJwa,yH;!aHbe6Xja9lAE;m,nBL;a,ha,in1;!aJbCGeIja,lDna,sHt63;!a,ol,sa;!l1D;!h,mInH;!a,e,n1;!awit,i;arJeIie,oHr48ueri8;!t;!ry;et46i3B;el4Xi7Cy;dHon,ue5;akranAy;ak,en,iHlo3S;a,ka,nB;a,re,s4te;daHg4;!l3E;alDd4elHge,isDJon0;ei9in1yn;el,le;a0Ne0CiXoQuLyH;d3la,nH;!a,dIe2OnHsCT;!a,e2N;a,sCR;aD4cJel0Pis1lIna,pHz;e,iA;a,u,wa;iHy;a0Se,ja,l2NnB;is,l1UrItt1LuHvel4;el5is1;aKeIi7na,rH;aADi7;lHn1tA;ei;!in1;aTbb9HdSepa,lNnKsJvIzH;!a,be5Ret8z4;!ia;a,et8;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lH;iHy;aA8e;!aH;!nF;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx93y5;iHt4;c3t3;e2PlCO;la,nHra;a,ie,o2;a,or1;a,gh,laH;!ni;!h,nH;a,d2e,n5V;cOdon9DiNkes6mi9Gna,rMtJurIvHxmi,y5;ern1in3;a,e5Aie,yn;as6iIoH;nya,ya;fa,s6;a,isA9;a,la;ey,ie,y;a04eZhXiOlASoNrJyH;lHra;a,ee,ie;istHy6I;a,en,iIyH;!na;!e,n5F;nul,ri,urtnB8;aOerNlB7mJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stE;!na,ra;aHei2ongordzol;dij1w5;el7UiKjsi,lJnIrH;a,i,ri;d2na,za;ey,i,lBLs4y;ra,s6;biAcARdiat7MeBAiSlQmPnyakuma1DrNss6NtKviAyH;!e,lH;a,eH;e,i8T;!a6HeIhHi4TlDri0y;ar8Her8Hie,leErBAy;!lyn8Ori0;a,en,iHl5Xoli0yn;!ma,nFs95;a5il1;ei8Mi,lH;e,ie;a,tl6O;a0AeZiWoOuH;anMdLlHst88;es,iH;a8NeHs8X;!n9tH;!a,te;e5Mi3My;a,iA;!anNcelDdMelGhan7VleLni,sIva0yH;a,ce;eHie;fHlDph7Y;a,in1;en,n1;i7y;!a,e,n45;lHng;!i1DlH;!i1C;anNle0nKrJsH;i8JsH;!e,i8I;i,ri;!a,elGif2CnH;a,et8iHy;!e,f2A;a,eJiInH;a,eIiH;e,n1;!t8;cMda,mi,nIque4YsminFvie2y9zH;min7;a7eIiH;ce,e,n1s;!lHs82t0F;e,le;inIk6HlDquelH;in1yn;da,ta;da,lRmPnOo0rNsIvaHwo0zaro;!a0lu,na;aJiIlaHob89;!n9R;do2;belHdo2;!a,e,l3B;a7Ben1i0ma;di2es,gr72ji;a9elBogH;en1;a,e9iHo0se;a0na;aSeOiJoHus7Kyacin2C;da,ll4rten24snH;a,i9U;lImaH;ri;aIdHlaI;a,egard;ry;ath1BiJlInrietArmi9sH;sa,t1A;en2Uga,mi;di;bi2Fil8MlNnMrJsItHwa,yl8M;i5Tt4;n60ti;iHmo51ri53;etH;!te;aCnaC;a,ey,l4;a02eWiRlPoNrKunJwH;enHyne1R;!dolD;ay,el;acieIetHiselB;a,chE;!la;ld1CogooH;sh;adys,enHor3yn2K;a,da,na;aKgi,lIna,ov8EselHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald5Si,m3Etrud7;et8i4X;a,eHna;s29vieve;ma;bIle,mHrnet,yG;al5Si5;iIrielH;a,l1;!ja;aTeQiPlorOoz3rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0P;n1s66;!ca;a,enc3;en,o0;lIn0rnH;anB;ec3ic3;jr,nArKtHy7;emIiHma,oumaA;ha,ma,n;eh;ah,iBrah,za0;cr4Rd0Re0Qi0Pk0Ol07mXn54rUsOtNuMvHwa;aKelIiH;!e,ta;inFyn;!a;!ngel4V;geni1ni47;h5Yien9ta;mLperanKtH;eIhHrel5;er;l31r7;za;a,eralB;iHma,ne4Lyn;cHka,n;a,ka;aPeNiKmH;aHe21ie,y;!li9nuH;elG;lHn1;e7iHy;a,e,ja;lHrald;da,y;!nue5;aWeUiNlMma,no2oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c3da,e,f,nMsJzaH;!betHveA;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a,i;!in1na;ate1Rta;leEs6;vi;eIiHna,wi0;e,th;l,n;aYeMh3iLjeneKoH;lor5Vminiq4Ln3FrHtt4;a,eEis,la,othHthy;ea,y;ba;an09naCon9ya;anQbPde,eOiMlJmetr3nHsir5M;a,iH;ce,se;a,iIla,orHphi9;es,is;a,l6F;dHrdH;re;!d5Ena;!b2ForaCraC;a,d2nH;!a,e;hl3i0l0GmNnLphn1rIvi1WyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,et8iH;!ca,el1Aka,z;arHia;is;a0Re0Nh04i02lUoJristIynH;di,th3;al,i0;lPnMrIurH;tn1D;aJd2OiHn2Ori9;!nH;a,e,n1;!l4;cepci5Cn4sH;tanHuelo;ce,za;eHleE;en,t8;aJeoIotH;il54;!pat2;ir7rJudH;et8iH;a,ne;a,e,iH;ce,sZ;a2er2ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Sen,iHy;an1e,n1;deJlseIrH;!i7yl;a,y;li9;nMrH;isKlImH;ai9;a,eHot8;n1t8;!sa;d2elGtH;al,elG;cIlH;es8i47;el3ilH;e,ia,y;itlYlXmilWndVrMsKtHy5;aIeIhHri0;er1IleErDy;ri0;a38sH;a37ie;a,iOlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eIie,otHy;a,ta;ne,y;na,s1X;a0Ii0I;a,e,l1;isAl4;in,yn;a0Ke02iZlXoUrH;andi7eRiJoIyH;an0nn;nwDoke;an3HdgMgiLtH;n31tH;!aInH;ey,i,y;ny;d,t8;etH;!t7;an0e,nH;da,na;bbi7glarIlo07nH;iAn4;ka;ancHythe;a,he;an1Clja0nHsm3M;iAtH;ou;aWcVlinUniArPssOtJulaCvH;!erlH;ey,y;hJsy,tH;e,iHy7;e,na;!anH;ie,y;!ie;nItHyl;ha,ie;adIiH;ce;et8i9;ay,da;ca,ky;!triH;ce,z;rbJyaH;rmH;aa;a2o2ra;a2Ub2Od25g21i1Sj5l18m0Zn0Boi,r06sWtVuPvOwa,yIzH;ra,u0;aKes6gJlIn,seH;!l;in;un;!nH;a,na;a,i2K;drLguJrIsteH;ja;el3;stH;in1;a,ey,i,y;aahua,he0;hIi2Gja,miAs2DtrH;id;aMlIraqHt21;at;eIi7yH;!n;e,iHy;gh;!nH;ti;iJleIo6piA;ta;en,n1t8;aHelG;!n1J;a01dje5eZgViTjRnKohito,toHya;inet8nH;el5ia;te;!aKeIiHmJ;e,ka;!mHtt7;ar4;!belIliHmU;sa;!l1;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tH;a,te;!bImHstasiMya;ar3;el;aLberKeliJiHy;e,l3naH;!ta;a,ja;!ly;hGiIl3nB;da;a,ra;le;aWba,ePiMlKthJyH;a,c3sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c3is6jaKksaKna,sJxH;aHia;!nd2;ia,saH;nd2;ra;ia;i0nIyH;ah,na;a,is,naCoud;la;c6da,leEmNnLsH;haClH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lDsH;on;yn;!lH;i9yn;ne;aKbIiHrL;!e,gaK;ey,i7y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",Honorific:\"true¦director1field marsh2lieutenant1rear0sergeant major,vice0; admir1; gener0;al\",\"Adj|Gerund\":\"true¦0:3F;1:3H;2:31;3:2X;4:35;5:33;6:3C;7:2Z;8:36;9:29;a33b2Tc2Bd1Te1If19g12h0Zi0Rl0Nm0Gnu0Fo0Ap04rYsKtEuBvAw1Ayiel3;ar6e08;nBpA;l1Rs0B;fol3n1Zsett2;aEeDhrBi4ouc7rAwis0;e0Bif2oub2us0yi1;ea1SiA;l2vi1;l2mp0rr1J;nt1Vxi1;aMcreec7enten2NhLkyrocke0lo0Vmi2oJpHtDuBweA;e0Ul2;pp2ArA;gi1pri5roun3;aBea8iAri2Hun9;mula0r4;gge4rA;t2vi1;ark2eAraw2;e3llb2F;aAot7;ki1ri1;i9oc29;dYtisf6;aEeBive0oAus7;a4l2;assu4defi9fres7ig9juve07mai9s0vAwar3;ea2italiAol1G;si1zi1;gi1ll6mb2vi1;a6eDier23lun1VrAun2C;eBoA;mi5vo1Z;ce3s5vai2;n3rpleA;xi1;ffCpWutBverAwi1;arc7lap04p0Pri3whel8;goi1l6st1J;en3sA;et0;m2Jrtu4;aEeDiCoBuAyst0L;mb2;t1Jvi1;s5tiga0;an1Rl0n3smeri26;dAtu4;de9;aCeaBiAo0U;fesa0Tvi1;di1ni1;c1Fg19s0;llumiGmFnArri0R;cDfurHsCtBviA;go23ti1;e1Oimi21oxica0rig0V;pi4ul0;orpo20r0K;po5;na0;eaBorr02umilA;ia0;li1rtwar8;lFrA;atiDipCoBuelA;i1li1;undbrea10wi1;pi1;f6ng;a4ea8;a3etc7it0lEoCrBulfA;il2;ee1FighXust1L;rAun3;ebo3thco8;aCoA;a0wA;e4i1;mi1tte4;lectrJmHnExA;aCci0hBis0pA;an3lo3;aOila1B;c0spe1A;ab2coura0CdBergi13ga0Clive9ric7s02tA;hral2i0J;ea4u4;barras5er09pA;owe4;if6;aQeIiBrA;if0;sAzz6;aEgDhearCsen0tA;rAur11;ac0es5;te9;us0;ppoin0r8;biliGcDfi9gra3ligh0mBpres5sAvasG;erE;an3ea9orA;ali0L;a6eiBli9rA;ea5;vi1;ta0;maPri1s7un0zz2;aPhMlo5oAripp2ut0;mGnArrespon3;cer9fDspi4tA;inBrA;as0ibu0ol2;ui1;lic0u5;ni1;fDmCpA;eAromi5;l2ti1;an3;or0;aAil2;llenAnAr8;gi1;l8ptAri1;iva0;aff2eGin3lFoDrBuA;d3st2;eathtaAui5;ki1;gg2i2o8ri1unA;ci1;in3;co8wiA;lAtc7;de4;bsorVcOgonMlJmHnno6ppea2rFsA;pi4su4toA;nBun3;di1;is7;hi1;res0;li1;aFu5;si1;ar8lu4;ri1;mi1;iAzi1;zi1;cAhi1;eleDomA;moBpan6;yi1;da0;ra0;ti1;bi1;ng\",Comparable:\"true¦0:3C;1:3Q;2:3F;a3Tb3Cc33d2Te2Mf2Ag1Wh1Li1Fj1Ek1Bl13m0Xn0So0Rp0Iqu0Gr07sHtCug0vAw4y3za0Q;el10ouN;ary,e6hi5i3ry;ck0Cde,l3n1ry,se;d,y;ny,te;a3i3R;k,ry;a3erda2ulgar;gue,in,st;a6en2Xhi5i4ouZr3;anqu2Cen1ue;dy,g36me0ny;ck,rs28;ll,me,rt,wd3I;aRcaPeOhMiLkin0BlImGoEpDt6u4w3;eet,ift;b3dd0Wperfi21rre28;sta26t21;a8e7iff,r4u3;pUr1;a4ict,o3;ng;ig2Vn0N;a1ep,rn;le,rk,te0;e1Si2Vright0;ci1Yft,l3on,re;emn,id;a3el0;ll,rt;e4i3y;g2Mm0Z;ek,nd2T;ck24l0mp1L;a3iRrill,y;dy,l01rp;ve0Jxy;n1Jr3;ce,y;d,fe,int0l1Hv0V;a8e6i5o3ude;mantic,o19sy,u3;gh;pe,t1P;a3d,mo0A;dy,l;gg4iFndom,p3re,w;id;ed;ai2i3;ck,et;hoAi1Fl9o8r5u3;ny,r3;e,p11;egna2ic4o3;fouSud;ey,k0;liXor;ain,easa2;ny;dd,i0ld,ranL;aive,e5i4o3u14;b0Sisy,rm0Ysy;bb0ce,mb0R;a3r1w;r,t;ad,e5ild,o4u3;nda12te;ist,o1;a4ek,l3;low;s0ty;a8e7i6o3ucky;f0Jn4o15u3ve0w10y0N;d,sy;e0g;ke0l,mp,tt0Eve0;e1Qwd;me,r3te;ge;e4i3;nd;en;ol0ui19;cy,ll,n3;secu6t3;e3ima4;llege2rmedia3;te;re;aAe7i6o5u3;ge,m3ng1C;bYid;me0t;gh,l0;a3fXsita2;dy,rWv3;en0y;nd13ppy,r3;d3sh;!y;aFenEhCiBlAoofy,r3;a8e6i5o3ue0Z;o3ss;vy;m,s0;at,e3y;dy,n;nd,y;ad,ib,ooD;a2d1;a3o3;st0;tDuiS;u1y;aCeebBi9l8o6r5u3;ll,n3r0N;!ny;aCesh,iend0;a3nd,rmD;my;at,ir7;erce,nan3;ci9;le;r,ul3;ty;a6erie,sse4v3xtre0B;il;nti3;al;r4s3;tern,y;ly,th0;appZe9i5ru4u3;mb;nk;r5vi4z3;zy;ne;e,ty;a3ep,n9;d3f,r;!ly;agey,h8l7o5r4u3;dd0r0te;isp,uel;ar3ld,mmon,st0ward0zy;se;evKou1;e3il0;ap,e3;sy;aHiFlCoAr5u3;ff,r0sy;ly;a6i3oad;g4llia2;nt;ht;sh,ve;ld,un3;cy;a4o3ue;nd,o1;ck,nd;g,tt3;er;d,ld,w1;dy;bsu6ng5we3;so3;me;ry;rd\",Adverb:\"true¦a08b05d00eYfSheQinPjustOkinda,likewiZmMnJoEpCquite,r9s5t2u0very,well;ltima01p0; to,wards5;h1iny bit,o0wiO;o,t6;en,us;eldom,o0uch;!me1rt0; of;how,times,w0C;a1e0;alS;ndomRth05;ar excellenEer0oint blank; Lhaps;f3n0utright;ce0ly;! 0;ag05moX; courGten;ewJo0; longWt 0;onHwithstand9;aybe,eanwhiNore0;!ovT;! aboX;deed,steY;lla,n0;ce;or3u0;ck1l9rther0;!moK;ing; 0evK;exampCgood,suH;n mas0vI;se;e0irect2; 2fini0;te0;ly;juAtrop;ackward,y 0;far,no0; means,w; GbroFd nauseam,gEl7ny5part,s4t 2w0;ay,hi0;le;be7l0mo7wor7;arge,ea6; soon,i4;mo0way;re;l 3mo2ongsi1ready,so,togeth0ways;er;de;st;b1t0;hat;ut;ain;ad;lot,posteriori\",Conjunction:\"true¦aXbTcReNhowMiEjust00noBo9p8supposing,t5wh0yet;e1il0o3;e,st;n1re0thN; if,by,vM;evL;h0il,o;erefOo0;!uU;lus,rovided th9;r0therwiM;! not; mattEr,w0;! 0;since,th4w7;f4n0; 0asmuch;as mIcaForder t0;h0o;at;! 0;only,t0w0;hen;!ev3;ith2ven0;! 0;if,tB;er;o0uz;s,z;e0ut,y the time;cau1f0;ore;se;lt3nd,s 0;far1if,m0soon1t2;uch0; as;hou0;gh\",Currency:\"true¦$,aud,bQcOdJeurIfHgbp,hkd,iGjpy,kElDp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotyQł;en,uanP;af,of;h0t5;e0il5;k0q0;elK;oubleJp,upeeJ;e2ound st0;er0;lingG;n0soF;ceEnies;empi7i7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!os;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;e0ny;nt1;aht,itcoin0;!s\",Determiner:\"true¦aBboth,d9e6few,le5mu8neiDplenty,s4th2various,wh0;at0ich0;evC;a0e4is,ose;!t;everal,ome;!ast,s;a1l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\",\"Adj|Present\":\"true¦a07b04cVdQeNfJhollIidRlEmCnarrIoBp9qua8r7s3t2uttFw0;aKet,ro0;ng,u08;endChin;e2hort,l1mooth,our,pa9tray,u0;re,speU;i2ow;cu6da02leSpaN;eplica01i02;ck;aHerfePr0;eseUime,omV;bscu1pen,wn;atu0e3odeH;re;a2e1ive,ow0;er;an;st,y;ow;a2i1oul,r0;ee,inge;rm;iIke,ncy,st;l1mpty,x0;emHpress;abo4ic7;amp,e2i1oub0ry,ull;le;ffu9re6;fu8libe0;raE;alm,l5o0;mpleCn3ol,rr1unterfe0;it;e0u7;ct;juga8sum7;ea1o0;se;n,r;ankru1lu0;nt;pt;li2pproxi0rticula1;ma0;te;ght\",\"Person|Adj\":\"true¦b3du2earnest,frank,mi2r0san1woo1;an0ich,u1;dy;sty;ella,rown\",Modal:\"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ight,ust;an,o0;uld\",Verb:\"true¦born,cannot,gonna,has,keep tabs,msg\",\"Person|Verb\":\"true¦b8ch7dr6foster,gra5ja9lan4ma2ni9ollie,p1rob,s0wade;kip,pike,t5ue;at,eg,ier2;ck,r0;k,shal;ce;ce,nt;ew;ase,u1;iff,l1ob,u0;ck;aze,ossom\",\"Person|Date\":\"true¦a2j0sep;an0une;!uary;p0ugust,v0;ril\"};const gr=36,mr=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",pr=mr.split(\"\").reduce((function(e,t,n){return e[t]=n,e}),{});var fr=function(e){if(void 0!==pr[e])return pr[e];let t=0,n=1,a=gr,r=1;for(;n<e.length;t+=a,n++,a*=gr);for(let n=e.length-1;n>=0;n--,r*=gr){let a=e.charCodeAt(n)-48;a>10&&(a-=7),t+=a*r}return t};const br=function(e,t,n){const a=fr(t);return a<e.symCount?e.syms[a]:n+a+1-e.symCount},yr=function(e){const t={nodes:e.split(\";\"),syms:[],symCount:0};return e.match(\":\")&&function(e){const t=new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");for(let n=0;n<e.nodes.length;n++){const a=t.exec(e.nodes[n]);if(!a){e.symCount=n;break}e.syms[fr(a[1])]=fr(a[2])}e.nodes=e.nodes.slice(e.symCount,e.nodes.length)}(t),function(e){const t=[],n=(a,r)=>{let o=e.nodes[a];\"!\"===o[0]&&(t.push(r),o=o.slice(1));const i=o.split(/([A-Z0-9,]+)/g);for(let o=0;o<i.length;o+=2){const s=i[o],l=i[o+1];if(!s)continue;const u=r+s;if(\",\"===l||void 0===l){t.push(u);continue}const c=br(e,l,a);n(c,u)}};return n(0,\"\"),t}(t)},vr=[\"Possessive\",\"Pronoun\"];const wr={a:[[/(antenn|formul|nebul|vertebr|vit)a$/i,\"$1ae\"],[/ia$/i,\"ia\"]],e:[[/(kn|l|w)ife$/i,\"$1ives\"],[/(hive)$/i,\"$1s\"],[/([m|l])ouse$/i,\"$1ice\"],[/([m|l])ice$/i,\"$1ice\"]],f:[[/^(dwar|handkerchie|hoo|scar|whar)f$/i,\"$1ves\"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i,\"$1ves\"]],i:[[/(octop|vir)i$/i,\"$1i\"]],m:[[/([ti])um$/i,\"$1a\"]],n:[[/^(oxen)$/i,\"$1\"]],o:[[/(al|ad|at|er|et|ed)o$/i,\"$1oes\"]],s:[[/(ax|test)is$/i,\"$1es\"],[/(alias|status)$/i,\"$1es\"],[/sis$/i,\"ses\"],[/(bu)s$/i,\"$1ses\"],[/(sis)$/i,\"ses\"],[/^(?!talis|.*hu)(.*)man$/i,\"$1men\"],[/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,\"$1i\"]],x:[[/(matr|vert|ind|cort)(ix|ex)$/i,\"$1ices\"],[/^(ox)$/i,\"$1en\"]],y:[[/([^aeiouy]|qu)y$/i,\"$1ies\"]],z:[[/(quiz)$/i,\"$1zes\"]]},kr=/([xsz]|ch|sh)$/,Pr=function(e=\"\",t){const{irregularPlurals:n,uncountable:a}=t.two;if(a.hasOwnProperty(e))return e;if(n.hasOwnProperty(e))return n[e];const r=function(e){const t=e[e.length-1];if(!0===wr.hasOwnProperty(t))for(let n=0;n<wr[t].length;n+=1){const a=wr[t][n][0];if(!0===a.test(e))return e.replace(a,wr[t][n][1])}return null}(e);return null!==r?r:kr.test(e)?e+\"es\":e+\"s\"},Ar=/\\|/,Cr={\"20th century fox\":\"Organization\",\"7 eleven\":\"Organization\",\"motel 6\":\"Organization\",g8:\"Organization\",vh1:\"Organization\",\"76ers\":\"SportsTeam\",\"49ers\":\"SportsTeam\",q1:\"Date\",q2:\"Date\",q3:\"Date\",q4:\"Date\",km2:\"Unit\",m2:\"Unit\",dm2:\"Unit\",cm2:\"Unit\",mm2:\"Unit\",mile2:\"Unit\",in2:\"Unit\",yd2:\"Unit\",ft2:\"Unit\",m3:\"Unit\",dm3:\"Unit\",cm3:\"Unit\",in3:\"Unit\",ft3:\"Unit\",yd3:\"Unit\",\"at&t\":\"Organization\",\"black & decker\":\"Organization\",\"h & m\":\"Organization\",\"johnson & johnson\":\"Organization\",\"procter & gamble\":\"Organization\",\"ben & jerry's\":\"Organization\",\"&\":\"Conjunction\",i:[\"Pronoun\",\"Singular\"],he:[\"Pronoun\",\"Singular\"],she:[\"Pronoun\",\"Singular\"],it:[\"Pronoun\",\"Singular\"],they:[\"Pronoun\",\"Plural\"],we:[\"Pronoun\",\"Plural\"],was:[\"Copula\",\"PastTense\"],is:[\"Copula\",\"PresentTense\"],are:[\"Copula\",\"PresentTense\"],am:[\"Copula\",\"PresentTense\"],were:[\"Copula\",\"PastTense\"],her:vr,his:vr,hers:vr,their:vr,theirs:vr,themselves:vr,your:vr,our:vr,ours:vr,my:vr,its:vr,vs:[\"Conjunction\",\"Abbreviation\"],if:[\"Condition\",\"Preposition\"],closer:\"Comparative\",closest:\"Superlative\",much:\"Adverb\",may:\"Modal\",babysat:\"PastTense\",blew:\"PastTense\",drank:\"PastTense\",drove:\"PastTense\",forgave:\"PastTense\",skiied:\"PastTense\",spilt:\"PastTense\",stung:\"PastTense\",swam:\"PastTense\",swung:\"PastTense\",guaranteed:\"PastTense\",shrunk:\"PastTense\",nears:\"PresentTense\",nearing:\"Gerund\",neared:\"PastTense\",no:[\"Negative\",\"Expression\"]},jr={},Nr={two:{irregularPlurals:dr,uncountable:{}}};Object.keys(hr).forEach((e=>{const t=function(e){if(!e)return{};const t=e.split(\"|\").reduce(((e,t)=>{const n=t.split(\"¦\");return e[n[0]]=n[1],e}),{}),n={};return Object.keys(t).forEach((function(e){const a=yr(t[e]);\"true\"===e&&(e=!0);for(let t=0;t<a.length;t++){const r=a[t];!0===n.hasOwnProperty(r)?!1===Array.isArray(n[r])?n[r]=[n[r],e]:n[r].push(e):n[r]=e}})),n}(hr[e]);Ar.test(e)?Object.keys(t).forEach((t=>{if(jr[t]=e,\"Noun|Verb\"===e){const e=Pr(t,Nr);jr[e]=\"Plural|Verb\"}})):Object.keys(t).forEach((t=>{Cr[t]=e}))})),[\":(\",\":)\",\":P\",\":p\",\":O\",\";(\",\";)\",\";P\",\";p\",\";O\",\":3\",\":|\",\":/\",\":\\\\\",\":$\",\":*\",\":@\",\":-(\",\":-)\",\":-P\",\":-p\",\":-O\",\":-3\",\":-|\",\":-/\",\":-\\\\\",\":-$\",\":-*\",\":-@\",\":^(\",\":^)\",\":^P\",\":^p\",\":^O\",\":^3\",\":^|\",\":^/\",\":^\\\\\",\":^$\",\":^*\",\":^@\",\"):\",\"(:\",\"$:\",\"*:\",\")-:\",\"(-:\",\"$-:\",\"*-:\",\")^:\",\"(^:\",\"$^:\",\"*^:\",\"<3\",\"</3\",\"<\\\\3\",\"=(\"].forEach((e=>Cr[e]=\"Emoticon\")),delete Cr[\"\"],delete Cr.null,delete Cr[\" \"];const Ir=\"Singular\";var Dr={beforeTags:{Determiner:Ir,Possessive:Ir,Acronym:Ir,Noun:Ir,Adjective:Ir,PresentTense:Ir,Gerund:Ir,PastTense:Ir,Infinitive:Ir,Date:Ir,Ordinal:Ir,Demonym:Ir},afterTags:{Value:Ir,Modal:Ir,Copula:Ir,PresentTense:Ir,PastTense:Ir,Demonym:Ir,Actor:Ir},beforeWords:{the:Ir,with:Ir,without:Ir,of:Ir,for:Ir,any:Ir,all:Ir,on:Ir,cut:Ir,cuts:Ir,increase:Ir,decrease:Ir,raise:Ir,drop:Ir,save:Ir,saved:Ir,saves:Ir,make:Ir,makes:Ir,made:Ir,minus:Ir,plus:Ir,than:Ir,another:Ir,versus:Ir,neither:Ir,about:Ir,favorite:Ir,best:Ir,daily:Ir,weekly:Ir,linear:Ir,binary:Ir,mobile:Ir,lexical:Ir,technical:Ir,computer:Ir,scientific:Ir,security:Ir,government:Ir,popular:Ir,formal:Ir,no:Ir,more:Ir,one:Ir,let:Ir,her:Ir,his:Ir,their:Ir,our:Ir,us:Ir,sheer:Ir,monthly:Ir,yearly:Ir,current:Ir,previous:Ir,upcoming:Ir,last:Ir,next:Ir,main:Ir,initial:Ir,final:Ir,beginning:Ir,end:Ir,top:Ir,bottom:Ir,future:Ir,past:Ir,major:Ir,minor:Ir,side:Ir,central:Ir,peripheral:Ir,public:Ir,private:Ir},afterWords:{of:Ir,system:Ir,aid:Ir,method:Ir,utility:Ir,tool:Ir,reform:Ir,therapy:Ir,philosophy:Ir,room:Ir,authority:Ir,says:Ir,said:Ir,wants:Ir,wanted:Ir,is:Ir,did:Ir,do:Ir,can:Ir,wise:Ir}};const Hr=\"Infinitive\";var Gr={beforeTags:{Modal:Hr,Adverb:Hr,Negative:Hr,Plural:Hr},afterTags:{Determiner:Hr,Adverb:Hr,Possessive:Hr,Reflexive:Hr,Preposition:Hr,Cardinal:Hr,Comparative:Hr,Superlative:Hr},beforeWords:{i:Hr,we:Hr,you:Hr,they:Hr,to:Hr,please:Hr,will:Hr,have:Hr,had:Hr,would:Hr,could:Hr,should:Hr,do:Hr,did:Hr,does:Hr,can:Hr,must:Hr,us:Hr,me:Hr,let:Hr,even:Hr,when:Hr,help:Hr,he:Hr,she:Hr,it:Hr,being:Hr,bi:Hr,co:Hr,contra:Hr,de:Hr,inter:Hr,intra:Hr,mis:Hr,pre:Hr,out:Hr,counter:Hr,nobody:Hr,somebody:Hr,anybody:Hr,everybody:Hr},afterWords:{the:Hr,me:Hr,you:Hr,him:Hr,us:Hr,her:Hr,his:Hr,them:Hr,they:Hr,it:Hr,himself:Hr,herself:Hr,itself:Hr,myself:Hr,ourselves:Hr,themselves:Hr,something:Hr,anything:Hr,a:Hr,an:Hr,up:Hr,down:Hr,by:Hr,out:Hr,off:Hr,under:Hr,what:Hr,all:Hr,to:Hr,because:Hr,although:Hr,how:Hr,otherwise:Hr,together:Hr,though:Hr,into:Hr,yet:Hr,more:Hr,here:Hr,there:Hr,away:Hr}};const Tr={beforeTags:Object.assign({},Gr.beforeTags,Dr.beforeTags,{}),afterTags:Object.assign({},Gr.afterTags,Dr.afterTags,{}),beforeWords:Object.assign({},Gr.beforeWords,Dr.beforeWords,{}),afterWords:Object.assign({},Gr.afterWords,Dr.afterWords,{})},xr=\"Adjective\";var Er={beforeTags:{Determiner:xr,Possessive:xr,Hyphenated:xr},afterTags:{Adjective:xr},beforeWords:{seem:xr,seemed:xr,seems:xr,feel:xr,feels:xr,felt:xr,stay:xr,appear:xr,appears:xr,appeared:xr,also:xr,over:xr,under:xr,too:xr,it:xr,but:xr,still:xr,really:xr,quite:xr,well:xr,very:xr,truly:xr,how:xr,deeply:xr,hella:xr,profoundly:xr,extremely:xr,so:xr,badly:xr,mostly:xr,totally:xr,awfully:xr,rather:xr,nothing:xr,something:xr,anything:xr,not:xr,me:xr,is:xr,face:xr,faces:xr,faced:xr,look:xr,looks:xr,looked:xr,reveal:xr,reveals:xr,revealed:xr,sound:xr,sounded:xr,sounds:xr,remains:xr,remained:xr,prove:xr,proves:xr,proved:xr,becomes:xr,stays:xr,tastes:xr,taste:xr,smells:xr,smell:xr,gets:xr,grows:xr,as:xr,rings:xr,radiates:xr,conveys:xr,convey:xr,conveyed:xr,of:xr},afterWords:{too:xr,also:xr,or:xr,enough:xr,as:xr}};const Fr=\"Gerund\";var Or={beforeTags:{Adverb:Fr,Preposition:Fr,Conjunction:Fr},afterTags:{Adverb:Fr,Possessive:Fr,Person:Fr,Pronoun:Fr,Determiner:Fr,Copula:Fr,Preposition:Fr,Conjunction:Fr,Comparative:Fr},beforeWords:{been:Fr,keep:Fr,continue:Fr,stop:Fr,am:Fr,be:Fr,me:Fr,began:Fr,start:Fr,starts:Fr,started:Fr,stops:Fr,stopped:Fr,help:Fr,helps:Fr,avoid:Fr,avoids:Fr,love:Fr,loves:Fr,loved:Fr,hate:Fr,hates:Fr,hated:Fr},afterWords:{you:Fr,me:Fr,her:Fr,him:Fr,his:Fr,them:Fr,their:Fr,it:Fr,this:Fr,there:Fr,on:Fr,about:Fr,for:Fr,up:Fr,down:Fr}};const zr=\"Gerund\",Vr=\"Adjective\",Br={beforeTags:Object.assign({},Er.beforeTags,Or.beforeTags,{Imperative:zr,Infinitive:Vr,Plural:zr}),afterTags:Object.assign({},Er.afterTags,Or.afterTags,{Noun:Vr}),beforeWords:Object.assign({},Er.beforeWords,Or.beforeWords,{is:Vr,are:zr,was:Vr,of:Vr,suggest:zr,suggests:zr,suggested:zr,recommend:zr,recommends:zr,recommended:zr,imagine:zr,imagines:zr,imagined:zr,consider:zr,considered:zr,considering:zr,resist:zr,resists:zr,resisted:zr,avoid:zr,avoided:zr,avoiding:zr,except:Vr,accept:Vr,assess:zr,explore:zr,fear:zr,fears:zr,appreciate:zr,question:zr,help:zr,embrace:zr,with:Vr}),afterWords:Object.assign({},Er.afterWords,Or.afterWords,{to:zr,not:zr,the:zr})},Sr={beforeTags:{Determiner:void 0,Cardinal:\"Noun\",PhrasalVerb:\"Adjective\"},afterTags:{}},Kr={beforeTags:Object.assign({},Er.beforeTags,Dr.beforeTags,Sr.beforeTags),afterTags:Object.assign({},Er.afterTags,Dr.afterTags,Sr.afterTags),beforeWords:Object.assign({},Er.beforeWords,Dr.beforeWords,{are:\"Adjective\",is:\"Adjective\",was:\"Adjective\",be:\"Adjective\",off:\"Adjective\",out:\"Adjective\"}),afterWords:Object.assign({},Er.afterWords,Dr.afterWords)},$r=\"PastTense\",Lr=\"Adjective\",Mr={beforeTags:{Adverb:$r,Pronoun:$r,ProperNoun:$r,Auxiliary:$r,Noun:$r},afterTags:{Possessive:$r,Pronoun:$r,Determiner:$r,Adverb:$r,Comparative:$r,Date:$r,Gerund:$r},beforeWords:{be:$r,who:$r,get:Lr,had:$r,has:$r,have:$r,been:$r,it:$r,as:$r,for:Lr,more:Lr,always:Lr},afterWords:{by:$r,back:$r,out:$r,in:$r,up:$r,down:$r,before:$r,after:$r,for:$r,the:$r,with:$r,as:$r,on:$r,at:$r,between:$r,to:$r,into:$r,us:$r,them:$r,his:$r,her:$r,their:$r,our:$r,me:$r,about:Lr}};var Jr={beforeTags:Object.assign({},Er.beforeTags,Mr.beforeTags),afterTags:Object.assign({},Er.afterTags,Mr.afterTags),beforeWords:Object.assign({},Er.beforeWords,Mr.beforeWords),afterWords:Object.assign({},Er.afterWords,Mr.afterWords)};const Wr={afterTags:{Noun:\"Adjective\",Conjunction:void 0}},Ur={beforeTags:Object.assign({},Er.beforeTags,Gr.beforeTags,{Adverb:void 0,Negative:void 0}),afterTags:Object.assign({},Er.afterTags,Gr.afterTags,Wr.afterTags),beforeWords:Object.assign({},Er.beforeWords,Gr.beforeWords,{have:void 0,had:void 0,not:void 0,went:\"Adjective\",goes:\"Adjective\",got:\"Adjective\",be:\"Adjective\"}),afterWords:Object.assign({},Er.afterWords,Gr.afterWords,{to:void 0,as:\"Adjective\"})},qr={Copula:\"Gerund\",PastTense:\"Gerund\",PresentTense:\"Gerund\",Infinitive:\"Gerund\"},Rr={Value:\"Gerund\"},Qr={are:\"Gerund\",were:\"Gerund\",be:\"Gerund\",no:\"Gerund\",without:\"Gerund\",you:\"Gerund\",we:\"Gerund\",they:\"Gerund\",he:\"Gerund\",she:\"Gerund\",us:\"Gerund\",them:\"Gerund\"},Zr={the:\"Gerund\",this:\"Gerund\",that:\"Gerund\",me:\"Gerund\",us:\"Gerund\",them:\"Gerund\"},Xr={beforeTags:Object.assign({},Or.beforeTags,Dr.beforeTags,qr),afterTags:Object.assign({},Or.afterTags,Dr.afterTags,Rr),beforeWords:Object.assign({},Or.beforeWords,Dr.beforeWords,Qr),afterWords:Object.assign({},Or.afterWords,Dr.afterWords,Zr)},_r=\"Singular\",Yr=\"Infinitive\",eo={beforeTags:Object.assign({},Gr.beforeTags,Dr.beforeTags,{Adjective:_r,Particle:_r}),afterTags:Object.assign({},Gr.afterTags,Dr.afterTags,{ProperNoun:Yr,Gerund:Yr,Adjective:Yr,Copula:_r}),beforeWords:Object.assign({},Gr.beforeWords,Dr.beforeWords,{is:_r,was:_r,of:_r,have:null}),afterWords:Object.assign({},Gr.afterWords,Dr.afterWords,{instead:Yr,about:Yr,his:Yr,her:Yr,to:null,by:null,in:null})},to=\"Person\";var no={beforeTags:{Honorific:to,Person:to},afterTags:{Person:to,ProperNoun:to,Verb:to},beforeWords:{hi:to,hey:to,yo:to,dear:to,hello:to},afterWords:{said:to,says:to,told:to,tells:to,feels:to,felt:to,seems:to,thinks:to,thought:to,spends:to,spendt:to,plays:to,played:to,sing:to,sang:to,learn:to,learned:to,wants:to,wanted:to}};const ao=\"Month\",ro={beforeTags:{Date:ao,Value:ao},afterTags:{Date:ao,Value:ao},beforeWords:{by:ao,in:ao,on:ao,during:ao,after:ao,before:ao,between:ao,until:ao,til:ao,sometime:ao,of:ao,this:ao,next:ao,last:ao,previous:ao,following:ao,with:\"Person\"},afterWords:{sometime:ao,in:ao,of:ao,until:ao,the:ao}};var oo={beforeTags:Object.assign({},no.beforeTags,ro.beforeTags),afterTags:Object.assign({},no.afterTags,ro.afterTags),beforeWords:Object.assign({},no.beforeWords,ro.beforeWords),afterWords:Object.assign({},no.afterWords,ro.afterWords)};const io=\"Place\",so={beforeTags:{Place:io},afterTags:{Place:io,Abbreviation:io},beforeWords:{in:io,by:io,near:io,from:io,to:io},afterWords:{in:io,by:io,near:io,from:io,to:io,government:io,council:io,region:io,city:io}},lo=\"Unit\",uo={\"Actor|Verb\":Tr,\"Adj|Gerund\":Br,\"Adj|Noun\":Kr,\"Adj|Past\":Jr,\"Adj|Present\":Ur,\"Noun|Verb\":eo,\"Noun|Gerund\":Xr,\"Person|Noun\":{beforeTags:Object.assign({},Dr.beforeTags,no.beforeTags),afterTags:Object.assign({},Dr.afterTags,no.afterTags),beforeWords:Object.assign({},Dr.beforeWords,no.beforeWords,{i:\"Infinitive\",we:\"Infinitive\"}),afterWords:Object.assign({},Dr.afterWords,no.afterWords)},\"Person|Date\":oo,\"Person|Verb\":{beforeTags:Object.assign({},Dr.beforeTags,no.beforeTags,Gr.beforeTags),afterTags:Object.assign({},Dr.afterTags,no.afterTags,Gr.afterTags),beforeWords:Object.assign({},Dr.beforeWords,no.beforeWords,Gr.beforeWords),afterWords:Object.assign({},Dr.afterWords,no.afterWords,Gr.afterWords)},\"Person|Place\":{beforeTags:Object.assign({},so.beforeTags,no.beforeTags),afterTags:Object.assign({},so.afterTags,no.afterTags),beforeWords:Object.assign({},so.beforeWords,no.beforeWords),afterWords:Object.assign({},so.afterWords,no.afterWords)},\"Person|Adj\":{beforeTags:Object.assign({},no.beforeTags,Er.beforeTags),afterTags:Object.assign({},no.afterTags,Er.afterTags),beforeWords:Object.assign({},no.beforeWords,Er.beforeWords),afterWords:Object.assign({},no.afterWords,Er.afterWords)},\"Unit|Noun\":{beforeTags:{Value:lo},afterTags:{},beforeWords:{per:lo,every:lo,each:lo,square:lo,cubic:lo,sq:lo,metric:lo},afterWords:{per:lo,squared:lo,cubed:lo,long:lo}}},co=(e,t)=>{const n=Object.keys(e).reduce(((t,n)=>(t[n]=\"Infinitive\"===e[n]?\"PresentTense\":\"Plural\",t)),{});return Object.assign(n,t)};uo[\"Plural|Verb\"]={beforeWords:co(uo[\"Noun|Verb\"].beforeWords,{had:\"Plural\",have:\"Plural\"}),afterWords:co(uo[\"Noun|Verb\"].afterWords,{his:\"PresentTense\",her:\"PresentTense\",its:\"PresentTense\",in:null,to:null,is:\"PresentTense\",by:\"PresentTense\"}),beforeTags:co(uo[\"Noun|Verb\"].beforeTags,{Conjunction:\"PresentTense\",Noun:void 0,ProperNoun:\"PresentTense\"}),afterTags:co(uo[\"Noun|Verb\"].afterTags,{Gerund:\"Plural\",Noun:\"PresentTense\",Value:\"PresentTense\"})};const ho=\"Adjective\",go=\"Infinitive\",mo=\"PresentTense\",po=\"Singular\",fo=\"PastTense\",bo=\"Adverb\",yo=\"Plural\",vo=\"Actor\",wo=\"Verb\",ko=\"Noun\",Po=\"LastName\",Ao=\"Modal\",Co=\"Place\",jo=\"Participle\";var No=[null,null,{ea:po,ia:ko,ic:ho,ly:bo,\"'n\":wo,\"'t\":wo},{oed:fo,ued:fo,xed:fo,\" so\":bo,\"'ll\":Ao,\"'re\":\"Copula\",azy:ho,eer:ko,end:wo,ped:fo,ffy:ho,ify:go,ing:\"Gerund\",ize:go,ibe:go,lar:ho,mum:ho,nes:mo,nny:ho,ous:ho,que:ho,ger:ko,ber:ko,rol:po,sis:po,ogy:po,oid:po,ian:po,zes:mo,eld:fo,ken:jo,ven:jo,ten:jo,ect:go,ict:go,ign:go,oze:go,ful:ho,bal:ho,ton:ko,pur:Co},{amed:fo,aped:fo,ched:fo,lked:fo,rked:fo,reed:fo,nded:fo,mned:ho,cted:fo,dged:fo,ield:po,akis:Po,cede:go,chuk:Po,czyk:Po,ects:mo,iend:po,ends:wo,enko:Po,ette:po,iary:po,wner:po,fies:mo,fore:bo,gate:go,gone:ho,ices:yo,ints:yo,ruct:go,ines:yo,ions:yo,ners:yo,pers:yo,lers:yo,less:ho,llen:ho,made:ho,nsen:Po,oses:mo,ould:Ao,some:ho,sson:Po,ians:yo,tion:po,tage:ko,ique:po,tive:ho,tors:ko,vice:po,lier:po,fier:po,wned:fo,gent:po,tist:vo,pist:vo,rist:vo,mist:vo,yist:vo,vist:vo,ists:vo,lite:po,site:po,rite:po,mite:po,bite:po,mate:po,date:po,ndal:po,vent:po,uist:vo,gist:vo,note:po,cide:po,ence:po,wide:ho,vide:go,ract:go,duce:go,pose:go,eive:go,lyze:go,lyse:go,iant:ho,nary:ho,ghty:ho,uent:ho,erer:vo,bury:Co,dorf:ko,esty:ko,wych:Co,dale:Co,folk:Co,vale:Co,abad:Co,sham:Co,wick:Co,view:Co},{elist:vo,holic:po,phite:po,tized:fo,urned:fo,eased:fo,ances:yo,bound:ho,ettes:yo,fully:bo,ishes:mo,ities:yo,marek:Po,nssen:Po,ology:ko,osome:po,tment:po,ports:yo,rough:ho,tches:mo,tieth:\"Ordinal\",tures:yo,wards:bo,where:bo,archy:ko,pathy:ko,opoly:ko,embly:ko,phate:ko,ndent:po,scent:po,onist:vo,anist:vo,alist:vo,olist:vo,icist:vo,ounce:go,iable:ho,borne:ho,gnant:ho,inant:ho,igent:ho,atory:ho,rient:po,dient:po,maker:vo,burgh:Co,mouth:Co,ceter:Co,ville:Co,hurst:Co,stead:Co,endon:Co,brook:Co,shire:Co,worth:ko,field:\"ProperNoun\",ridge:Co},{auskas:Po,parent:po,cedent:po,ionary:po,cklist:po,brooke:Co,keeper:vo,logist:vo,teenth:\"Value\",worker:vo,master:vo,writer:vo,brough:Co,cester:Co,ington:Co,cliffe:Co,ingham:Co},{chester:Co,logists:vo,opoulos:Po,borough:Co,sdottir:Po}];const Io=\"Adjective\",Do=\"Noun\",Ho=\"Verb\";var Go=[null,null,{},{neo:Do,bio:Do,\"de-\":Ho,\"re-\":Ho,\"un-\":Ho,\"ex-\":Do},{anti:Do,auto:Do,faux:Io,hexa:Do,kilo:Do,mono:Do,nano:Do,octa:Do,poly:Do,semi:Io,tele:Do,\"pro-\":Io,\"mis-\":Ho,\"dis-\":Ho,\"pre-\":Io},{anglo:Do,centi:Do,ethno:Do,ferro:Do,grand:Do,hepta:Do,hydro:Do,intro:Do,macro:Do,micro:Do,milli:Do,nitro:Do,penta:Do,quasi:Io,radio:Do,tetra:Do,\"omni-\":Io,\"post-\":Io},{pseudo:Io,\"extra-\":Io,\"hyper-\":Io,\"inter-\":Io,\"intra-\":Io,\"deca-\":Io},{electro:Do}];const To=\"Adjective\",xo=\"Infinitive\",Eo=\"PresentTense\",Fo=\"Singular\",Oo=\"PastTense\",zo=\"Adverb\",Vo=\"Expression\",Bo=\"Actor\",So=\"Verb\",Ko=\"Noun\",$o=\"LastName\";var Lo={a:[[/.[aeiou]na$/,Ko,\"tuna\"],[/.[oau][wvl]ska$/,$o],[/.[^aeiou]ica$/,Fo,\"harmonica\"],[/^([hyj]a+)+$/,Vo,\"haha\"]],c:[[/.[^aeiou]ic$/,To]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,Oo,\"popped\"],[/.[aeo]{2}[bdgmnprvz]ed$/,Oo,\"rammed\"],[/.[aeiou][sg]hed$/,Oo,\"gushed\"],[/.[aeiou]red$/,Oo,\"hired\"],[/.[aeiou]r?ried$/,Oo,\"hurried\"],[/[^aeiou]ard$/,Fo,\"steward\"],[/[aeiou][^aeiou]id$/,To,\"\"],[/.[vrl]id$/,To,\"livid\"],[/..led$/,Oo,\"hurled\"],[/.[iao]sed$/,Oo,\"\"],[/[aeiou]n?[cs]ed$/,Oo,\"\"],[/[aeiou][rl]?[mnf]ed$/,Oo,\"\"],[/[aeiou][ns]?c?ked$/,Oo,\"bunked\"],[/[aeiou]gned$/,Oo],[/[aeiou][nl]?ged$/,Oo],[/.[tdbwxyz]ed$/,Oo],[/[^aeiou][aeiou][tvx]ed$/,Oo],[/.[cdflmnprstv]ied$/,Oo,\"emptied\"]],e:[[/.[lnr]ize$/,xo,\"antagonize\"],[/.[^aeiou]ise$/,xo,\"antagonise\"],[/.[aeiou]te$/,xo,\"bite\"],[/.[^aeiou][ai]ble$/,To,\"fixable\"],[/.[^aeiou]eable$/,To,\"maleable\"],[/.[ts]ive$/,To,\"festive\"],[/[a-z]-like$/,To,\"woman-like\"]],h:[[/.[^aeiouf]ish$/,To,\"cornish\"],[/.v[iy]ch$/,$o,\"..ovich\"],[/^ug?h+$/,Vo,\"ughh\"],[/^uh[ -]?oh$/,Vo,\"uhoh\"],[/[a-z]-ish$/,To,\"cartoon-ish\"]],i:[[/.[oau][wvl]ski$/,$o,\"polish-male\"]],k:[[/^(k){2}$/,Vo,\"kkkk\"]],l:[[/.[gl]ial$/,To,\"familial\"],[/.[^aeiou]ful$/,To,\"fitful\"],[/.[nrtumcd]al$/,To,\"natal\"],[/.[^aeiou][ei]al$/,To,\"familial\"]],m:[[/.[^aeiou]ium$/,Fo,\"magnesium\"],[/[^aeiou]ism$/,Fo,\"schism\"],[/^[hu]m+$/,Vo,\"hmm\"],[/^\\d+ ?[ap]m$/,\"Date\",\"3am\"]],n:[[/.[lsrnpb]ian$/,To,\"republican\"],[/[^aeiou]ician$/,Bo,\"musician\"],[/[aeiou][ktrp]in'$/,\"Gerund\",\"cookin'\"]],o:[[/^no+$/,Vo,\"noooo\"],[/^(yo)+$/,Vo,\"yoo\"],[/^wo{2,}[pt]?$/,Vo,\"woop\"]],r:[[/.[bdfklmst]ler$/,\"Noun\"],[/[aeiou][pns]er$/,Fo],[/[^i]fer$/,xo],[/.[^aeiou][ao]pher$/,Bo],[/.[lk]er$/,\"Noun\"],[/.ier$/,\"Comparative\"]],t:[[/.[di]est$/,\"Superlative\"],[/.[icldtgrv]ent$/,To],[/[aeiou].*ist$/,To],[/^[a-z]et$/,So]],s:[[/.[^aeiou]ises$/,Eo],[/.[rln]ates$/,Eo],[/.[^z]ens$/,So],[/.[lstrn]us$/,Fo],[/.[aeiou]sks$/,Eo],[/.[aeiou]kes$/,Eo],[/[aeiou][^aeiou]is$/,Fo],[/[a-z]'s$/,Ko],[/^yes+$/,Vo]],v:[[/.[^aeiou][ai][kln]ov$/,$o]],y:[[/.[cts]hy$/,To],[/.[st]ty$/,To],[/.[tnl]ary$/,To],[/.[oe]ry$/,Fo],[/[rdntkbhs]ly$/,zo],[/.(gg|bb|zz)ly$/,To],[/...lly$/,zo],[/.[gk]y$/,To],[/[bszmp]{2}y$/,To],[/.[ai]my$/,To],[/[ea]{2}zy$/,To],[/.[^aeiou]ity$/,Fo]]};const Mo=\"Verb\",Jo=\"Noun\";var Wo={leftTags:[[\"Adjective\",Jo],[\"Possessive\",Jo],[\"Determiner\",Jo],[\"Adverb\",Mo],[\"Pronoun\",Mo],[\"Value\",Jo],[\"Ordinal\",Jo],[\"Modal\",Mo],[\"Superlative\",Jo],[\"Demonym\",Jo],[\"Honorific\",\"Person\"]],leftWords:[[\"i\",Mo],[\"first\",Jo],[\"it\",Mo],[\"there\",Mo],[\"not\",Mo],[\"because\",Jo],[\"if\",Jo],[\"but\",Jo],[\"who\",Mo],[\"this\",Jo],[\"his\",Jo],[\"when\",Jo],[\"you\",Mo],[\"very\",\"Adjective\"],[\"old\",Jo],[\"never\",Mo],[\"before\",Jo],[\"a\",Jo],[\"the\",Jo],[\"been\",Mo]],rightTags:[[\"Copula\",Jo],[\"PastTense\",Jo],[\"Conjunction\",Jo],[\"Modal\",Jo]],rightWords:[[\"there\",Mo],[\"me\",Mo],[\"man\",\"Adjective\"],[\"him\",Mo],[\"it\",Mo],[\"were\",Jo],[\"took\",Jo],[\"himself\",Mo],[\"went\",Jo],[\"who\",Jo],[\"jr\",\"Person\"]]},Uo={fwd:\"3:ser,ier¦1er:h,t,f,l,n¦1r:e¦2er:ss,or,om\",both:\"3er:ver,ear,alm¦3ner:hin¦3ter:lat¦2mer:im¦2er:ng,rm,mb¦2ber:ib¦2ger:ig¦1er:w,p,k,d¦ier:y\",rev:\"1:tter,yer¦2:uer,ver,ffer,oner,eler,ller,iler,ster,cer,uler,sher,ener,gher,aner,adder,nter,eter,rter,hter,rner,fter¦3:oser,ooler,eafer,user,airer,bler,maler,tler,eater,uger,rger,ainer,urer,ealer,icher,pler,emner,icter,nser,iser¦4:arser,viner,ucher,rosser,somer,ndomer,moter,oother,uarer,hiter¦5:nuiner,esser,emier¦ar:urther\",ex:\"worse:bad¦better:good¦4er:fair,gray,poor¦1urther:far¦3ter:fat,hot,wet¦3der:mad,sad¦3er:shy,fun¦4der:glad¦:¦4r:cute,dire,fake,fine,free,lame,late,pale,rare,ripe,rude,safe,sore,tame,wide¦5r:eerie,stale\"},qo={fwd:\"1:nning,tting,rring,pping,eing,mming,gging,dding,bbing,kking¦2:eking,oling,eling,eming¦3:velling,siting,uiting,fiting,loting,geting,ialing,celling¦4:graming\",both:\"1:aing,iing,fing,xing,ying,oing,hing,wing¦2:tzing,rping,izzing,bting,mning,sping,wling,rling,wding,rbing,uping,lming,wning,mping,oning,lting,mbing,lking,fting,hting,sking,gning,pting,cking,ening,nking,iling,eping,ering,rting,rming,cting,lping,ssing,nting,nding,lding,sting,rning,rding,rking¦3:belling,siping,toming,yaking,uaking,oaning,auling,ooping,aiding,naping,euring,tolling,uzzing,ganing,haning,ualing,halling,iasing,auding,ieting,ceting,ouling,voring,ralling,garing,joring,oaming,oaking,roring,nelling,ooring,uelling,eaming,ooding,eaping,eeting,ooting,ooming,xiting,keting,ooking,ulling,airing,oaring,biting,outing,oiting,earing,naling,oading,eeding,ouring,eaking,aiming,illing,oining,eaning,onging,ealing,aining,eading¦4:thoming,melling,aboring,ivoting,weating,dfilling,onoring,eriting,imiting,tialling,rgining,otoring,linging,winging,lleting,louding,spelling,mpelling,heating,feating,opelling,choring,welling,ymaking,ctoring,calling,peating,iloring,laiting,utoring,uditing,mmaking,loating,iciting,waiting,mbating,voiding,otalling,nsoring,nselling,ocusing,itoring,eloping¦5:rselling,umpeting,atrolling,treating,tselling,rpreting,pringing,ummeting,ossoming,elmaking,eselling,rediting,totyping,onmaking,rfeiting,ntrolling¦5e:chmaking,dkeeping,severing,erouting,ecreting,ephoning,uthoring,ravening,reathing,pediting,erfering,eotyping,fringing,entoring,ombining,ompeting¦4e:emaking,eething,twining,rruling,chuting,xciting,rseding,scoping,edoring,pinging,lunging,agining,craping,pleting,eleting,nciting,nfining,ncoding,tponing,ecoding,writing,esaling,nvening,gnoring,evoting,mpeding,rvening,dhering,mpiling,storing,nviting,ploring¦3e:tining,nuring,saking,miring,haling,ceding,xuding,rining,nuting,laring,caring,miling,riding,hoking,piring,lading,curing,uading,noting,taping,futing,paring,hading,loding,siring,guring,vading,voking,during,niting,laning,caping,luting,muting,ruding,ciding,juring,laming,caling,hining,uoting,liding,ciling,duling,tuting,puting,cuting,coring,uiding,tiring,turing,siding,rading,enging,haping,buting,lining,taking,anging,haring,uiring,coming,mining,moting,suring,viding,luding¦2e:tring,zling,uging,oging,gling,iging,vring,fling,lging,obing,psing,pling,ubing,cling,dling,wsing,iking,rsing,dging,kling,ysing,tling,rging,eging,nsing,uning,osing,uming,using,ibing,bling,aging,ising,asing,ating¦2ie:rlying¦1e:zing,uing,cing,ving\",rev:\"ying:ie¦1ing:se,ke,te,we,ne,re,de,pe,me,le,c,he¦2ing:ll,ng,dd,ee,ye,oe,rg,us¦2ning:un¦2ging:og,ag,ug,ig,eg¦2ming:um¦2bing:ub,ab,eb,ob¦3ning:lan,can,hin,pin,win¦3ring:cur,lur,tir,tar,pur,car¦3ing:ait,del,eel,fin,eat,oat,eem,lel,ool,ein,uin¦3ping:rop,rap,top,uip,wap,hip,hop,lap,rip,cap¦3ming:tem,wim,rim,kim,lim¦3ting:mat,cut,pot,lit,lot,hat,set,pit,put¦3ding:hed,bed,bid¦3king:rek¦3ling:cil,pel¦3bing:rib¦4ning:egin¦4ing:isit,ruit,ilot,nsit,dget,rkel,ival,rcel¦4ring:efer,nfer¦4ting:rmit,mmit,ysit,dmit,emit,bmit,tfit,gret¦4ling:evel,xcel,ivel¦4ding:hred¦5ing:arget,posit,rofit¦5ring:nsfer¦5ting:nsmit,orget,cquit¦5ling:ancel,istil\",ex:\"3:adding,eating,aiming,aiding,airing,outing,gassing,setting,getting,putting,cutting,winning,sitting,betting,mapping,tapping,letting,bidding,hitting,tanning,netting,popping,fitting,capping,lapping,barring,banning,vetting,topping,rotting,tipping,potting,wetting,pitting,dipping,budding,hemming,pinning,jetting,kidding,padding,podding,sipping,wedding,bedding,donning,warring,penning,gutting,cueing,wadding,petting,ripping,napping,matting,tinning,binning,dimming,hopping,mopping,nodding,panning,rapping,ridding,sinning¦4:selling,falling,calling,waiting,editing,telling,rolling,heating,boating,hanging,beating,coating,singing,tolling,felling,polling,discing,seating,voiding,gelling,yelling,baiting,reining,ruining,seeking,spanning,stepping,knitting,emitting,slipping,quitting,dialing,omitting,clipping,shutting,skinning,abutting,flipping,trotting,cramming,fretting,suiting¦5:bringing,treating,spelling,stalling,trolling,expelling,rivaling,wringing,deterring,singeing,befitting,refitting¦6:enrolling,distilling,scrolling,strolling,caucusing,travelling¦7:installing,redefining,stencilling,recharging,overeating,benefiting,unraveling,programing¦9:reprogramming¦is:being¦2e:using,aging,owing¦3e:making,taking,coming,noting,hiring,filing,coding,citing,doping,baking,coping,hoping,lading,caring,naming,voting,riding,mining,curing,lining,ruling,typing,boring,dining,firing,hiding,piling,taping,waning,baling,boning,faring,honing,wiping,luring,timing,wading,piping,fading,biting,zoning,daring,waking,gaming,raking,ceding,tiring,coking,wining,joking,paring,gaping,poking,pining,coring,liming,toting,roping,wiring,aching¦4e:writing,storing,eroding,framing,smoking,tasting,wasting,phoning,shaking,abiding,braking,flaking,pasting,priming,shoring,sloping,withing,hinging¦5e:defining,refining,renaming,swathing,fringing,reciting¦1ie:dying,tying,lying,vying¦7e:sunbathing\"},Ro={fwd:\"1:mt¦2:llen¦3:iven,aken¦:ne¦y:in\",both:\"1:wn¦2:me,aten¦3:seen,bidden,isen¦4:roven,asten¦3l:pilt¦3d:uilt¦2e:itten¦1im:wum¦1eak:poken¦1ine:hone¦1ose:osen¦1in:gun¦1ake:woken¦ear:orn¦eal:olen¦eeze:ozen¦et:otten¦ink:unk¦ing:ung\",rev:\"2:un¦oken:eak¦ought:eek¦oven:eave¦1ne:o¦1own:ly¦1den:de¦1in:ay¦2t:am¦2n:ee¦3en:all¦4n:rive,sake,take¦5n:rgive\",ex:\"2:been¦3:seen,run¦4:given,taken¦5:shaken¦2eak:broken¦1ive:dove¦2y:flown¦3e:hidden,ridden¦1eek:sought¦1ake:woken¦1eave:woven\"},Qo={fwd:\"1:oes¦1ve:as\",both:\"1:xes¦2:zzes,ches,shes,sses¦3:iases¦2y:llies,plies¦1y:cies,bies,ties,vies,nies,pies,dies,ries,fies¦:s\",rev:\"1ies:ly¦2es:us,go,do¦3es:cho,eto\",ex:\"2:does,goes¦3:gasses¦5:focuses¦is:are¦3y:relies¦2y:flies¦2ve:has\"},Zo={fwd:\"1st:e¦1est:l,m,f,s¦1iest:cey¦2est:or,ir¦3est:ver\",both:\"4:east¦5:hwest¦5lest:erful¦4est:weet,lgar,tter,oung¦4most:uter¦3est:ger,der,rey,iet,ong,ear¦3test:lat¦3most:ner¦2est:pt,ft,nt,ct,rt,ht¦2test:it¦2gest:ig¦1est:b,k,n,p,h,d,w¦iest:y\",rev:\"1:ttest,nnest,yest¦2:sest,stest,rmest,cest,vest,lmest,olest,ilest,ulest,ssest,imest,uest¦3:rgest,eatest,oorest,plest,allest,urest,iefest,uelest,blest,ugest,amest,yalest,ealest,illest,tlest,itest¦4:cerest,eriest,somest,rmalest,ndomest,motest,uarest,tiffest¦5:leverest,rangest¦ar:urthest¦3ey:riciest\",ex:\"best:good¦worst:bad¦5est:great¦4est:fast,full,fair,dull¦3test:hot,wet,fat¦4nest:thin¦1urthest:far¦3est:gay,shy,ill¦4test:neat¦4st:late,wide,fine,safe,cute,fake,pale,rare,rude,sore,ripe,dire¦6st:severe\"},Xo={fwd:\"1:tistic,eable,lful,sful,ting,tty¦2:onate,rtable,geous,ced,seful,ctful¦3:ortive,ented¦arity:ear¦y:etic¦fulness:begone¦1ity:re¦1y:tiful,gic¦2ity:ile,imous,ilous,ime¦2ion:ated¦2eness:iving¦2y:trious¦2ation:iring¦2tion:vant¦3ion:ect¦3ce:mant,mantic¦3tion:irable¦3y:est,estic¦3m:mistic,listic¦3ess:ning¦4n:utious¦4on:rative,native,vative,ective¦4ce:erant\",both:\"1:king,wing¦2:alous,ltuous,oyful,rdous¦3:gorous,ectable,werful,amatic¦4:oised,usical,agical,raceful,ocused,lined,ightful¦5ness:stful,lding,itous,nuous,ulous,otous,nable,gious,ayful,rvous,ntous,lsive,peful,entle,ciful,osive,leful,isive,ncise,reful,mious¦5ty:ivacious¦5ties:ubtle¦5ce:ilient,adiant,atient¦5cy:icient¦5sm:gmatic¦5on:sessive,dictive¦5ity:pular,sonal,eative,entic¦5sity:uminous¦5ism:conic¦5nce:mperate¦5ility:mitable¦5ment:xcited¦5n:bitious¦4cy:brant,etent,curate¦4ility:erable,acable,icable,ptable¦4ty:nacious,aive,oyal,dacious¦4n:icious¦4ce:vient,erent,stent,ndent,dient,quent,ident¦4ness:adic,ound,hing,pant,sant,oing,oist,tute¦4icity:imple¦4ment:fined,mused¦4ism:otic¦4ry:dantic¦4ity:tund,eral¦4edness:hand¦4on:uitive¦4lity:pitable¦4sm:eroic,namic¦4sity:nerous¦3th:arm¦3ility:pable,bable,dable,iable¦3cy:hant,nant,icate¦3ness:red,hin,nse,ict,iet,ite,oud,ind,ied,rce¦3ion:lute¦3ity:ual,gal,volous,ial¦3ce:sent,fensive,lant,gant,gent,lent,dant¦3on:asive¦3m:fist,sistic,iastic¦3y:terious,xurious,ronic,tastic¦3ur:amorous¦3e:tunate¦3ation:mined¦3sy:rteous¦3ty:ain¦3ry:ave¦3ment:azed¦2ness:de,on,ue,rn,ur,ft,rp,pe,om,ge,rd,od,ay,ss,er,ll,oy,ap,ht,ld,ad,rt¦2inousness:umous¦2ity:neous,ene,id,ane¦2cy:bate,late¦2ation:ized¦2ility:oble,ible¦2y:odic¦2e:oving,aring¦2s:ost¦2itude:pt¦2dom:ee¦2ance:uring¦2tion:reet¦2ion:oted¦2sion:ending¦2liness:an¦2or:rdent¦1th:ung¦1e:uable¦1ness:w,h,k,f¦1ility:mble¦1or:vent¦1ement:ging¦1tiquity:ncient¦1ment:hed¦verty:or¦ength:ong¦eat:ot¦pth:ep¦iness:y\",rev:\"\",ex:\"5:forceful,humorous¦8:charismatic¦13:understanding¦5ity:active¦11ness:adventurous,inquisitive,resourceful¦8on:aggressive,automatic,perceptive¦7ness:amorous,fatuous,furtive,ominous,serious¦5ness:ample,sweet¦12ness:apprehensive,cantankerous,contemptuous,ostentatious¦13ness:argumentative,conscientious¦9ness:assertive,facetious,imperious,inventive,oblivious,rapacious,receptive,seditious,whimsical¦10ness:attractive,expressive,impressive,loquacious,salubrious,thoughtful¦3edom:boring¦4ness:calm,fast,keen,tame¦8ness:cheerful,gracious,specious,spurious,timorous,unctuous¦5sity:curious¦9ion:deliberate¦8ion:desperate¦6e:expensive¦7ce:fragrant¦3y:furious¦9ility:ineluctable¦6ism:mystical¦8ity:physical,proactive,sensitive,vertical¦5cy:pliant¦7ity:positive¦9ity:practical¦12ism:professional¦6ce:prudent¦3ness:red¦6cy:vagrant¦3dom:wise\"};const _o=function(e=\"\",t={}){let n=function(e,t={}){return t.hasOwnProperty(e)?t[e]:null}(e,t.ex);return n=n||function(e,t=[]){for(let n=0;n<t.length;n+=1)if(e.endsWith(t[n]))return e;return null}(e,t.same),n=n||function(e,t,n={}){t=t||{};for(let a=e.length-1;a>=1;a-=1){let r=e.length-a,o=e.substring(r,e.length);if(!0===t.hasOwnProperty(o))return e.slice(0,r)+t[o];if(!0===n.hasOwnProperty(o))return e.slice(0,r)+n[o]}return t.hasOwnProperty(\"\")?e+t[\"\"]:n.hasOwnProperty(\"\")?e+n[\"\"]:null}(e,t.fwd,t.both),n=n||e,n},Yo=function(e){return Object.entries(e).reduce(((e,t)=>(e[t[1]]=t[0],e)),{})},ei=function(e={}){return{reversed:!0,both:Yo(e.both),ex:Yo(e.ex),fwd:e.rev||{}}},ti=/^([0-9]+)/,ni=function(e){let t=function(e){let t={};return e.split(\"¦\").forEach((e=>{let[n,a]=e.split(\":\");a=(a||\"\").split(\",\"),a.forEach((e=>{t[e]=n}))})),t}(e);return Object.keys(t).reduce(((e,n)=>(e[n]=function(e=\"\",t=\"\"){let n=(t=String(t)).match(ti);if(null===n)return t;let a=Number(n[1])||0;return e.substring(0,a)+t.replace(ti,\"\")}(n,t[n]),e)),{})},ai=function(e={}){return\"string\"==typeof e&&(e=JSON.parse(e)),e.fwd=ni(e.fwd||\"\"),e.both=ni(e.both||\"\"),e.rev=ni(e.rev||\"\"),e.ex=ni(e.ex||\"\"),e},ri=ai({fwd:\"1:tted,wed,gged,nned,een,rred,pped,yed,bbed,oed,dded,rd,wn,mmed¦2:eed,nded,et,hted,st,oled,ut,emed,eled,lded,ken,rt,nked,apt,ant,eped,eked¦3:eared,eat,eaded,nelled,ealt,eeded,ooted,eaked,eaned,eeted,mited,bid,uit,ead,uited,ealed,geted,velled,ialed,belled¦4:ebuted,hined,comed¦y:ied¦ome:ame¦ear:ore¦ind:ound¦ing:ung,ang¦ep:pt¦ink:ank,unk¦ig:ug¦all:ell¦ee:aw¦ive:ave¦eeze:oze¦old:eld¦ave:ft¦ake:ook¦ell:old¦ite:ote¦ide:ode¦ine:one¦in:un,on¦eal:ole¦im:am¦ie:ay¦and:ood¦1ise:rose¦1eak:roke¦1ing:rought¦1ive:rove¦1el:elt¦1id:bade¦1et:got¦1y:aid¦1it:sat¦3e:lid¦3d:pent\",both:\"1:aed,fed,xed,hed¦2:sged,xted,wled,rped,lked,kied,lmed,lped,uped,bted,rbed,rked,wned,rled,mped,fted,mned,mbed,zzed,omed,ened,cked,gned,lted,sked,ued,zed,nted,ered,rted,rmed,ced,sted,rned,ssed,rded,pted,ved,cted¦3:cled,eined,siped,ooned,uked,ymed,jored,ouded,ioted,oaned,lged,asped,iged,mured,oided,eiled,yped,taled,moned,yled,lit,kled,oaked,gled,naled,fled,uined,oared,valled,koned,soned,aided,obed,ibed,meted,nicked,rored,micked,keted,vred,ooped,oaded,rited,aired,auled,filled,ouled,ooded,ceted,tolled,oited,bited,aped,tled,vored,dled,eamed,nsed,rsed,sited,owded,pled,sored,rged,osed,pelled,oured,psed,oated,loned,aimed,illed,eured,tred,ioned,celled,bled,wsed,ooked,oiled,itzed,iked,iased,onged,ased,ailed,uned,umed,ained,auded,nulled,ysed,eged,ised,aged,oined,ated,used,dged,doned¦4:ntied,efited,uaked,caded,fired,roped,halled,roked,himed,culed,tared,lared,tuted,uared,routed,pited,naked,miled,houted,helled,hared,cored,caled,tired,peated,futed,ciled,called,tined,moted,filed,sided,poned,iloted,honed,lleted,huted,ruled,cured,named,preted,vaded,sured,talled,haled,peded,gined,nited,uided,ramed,feited,laked,gured,ctored,unged,pired,cuted,voked,eloped,ralled,rined,coded,icited,vided,uaded,voted,mined,sired,noted,lined,nselled,luted,jured,fided,puted,piled,pared,olored,cided,hoked,enged,tured,geoned,cotted,lamed,uiled,waited,udited,anged,luded,mired,uired,raded¦5:modelled,izzled,eleted,umpeted,ailored,rseded,treated,eduled,ecited,rammed,eceded,atrolled,nitored,basted,twined,itialled,ncited,gnored,ploded,xcited,nrolled,namelled,plored,efeated,redited,ntrolled,nfined,pleted,llided,lcined,eathed,ibuted,lloted,dhered,cceded¦3ad:sled¦2aw:drew¦2ot:hot¦2ke:made¦2ow:hrew,grew¦2ose:hose¦2d:ilt¦2in:egan¦1un:ran¦1ink:hought¦1ick:tuck¦1ike:ruck¦1eak:poke,nuck¦1it:pat¦1o:did¦1ow:new¦1ake:woke¦go:went\",rev:\"3:rst,hed,hut,cut,set¦4:tbid¦5:dcast,eread,pread,erbid¦ought:uy,eek¦1ied:ny,ly,dy,ry,fy,py,vy,by,ty,cy¦1ung:ling,ting,wing¦1pt:eep¦1ank:rink¦1ore:bear,wear¦1ave:give¦1oze:reeze¦1ound:rind,wind¦1ook:take,hake¦1aw:see¦1old:sell¦1ote:rite¦1ole:teal¦1unk:tink¦1am:wim¦1ay:lie¦1ood:tand¦1eld:hold¦2d:he,ge,re,le,leed,ne,reed,be,ye,lee,pe,we¦2ed:dd,oy,or,ey,gg,rr,us,ew,to¦2ame:ecome,rcome¦2ped:ap¦2ged:ag,og,ug,eg¦2bed:ub,ab,ib,ob¦2lt:neel¦2id:pay¦2ang:pring¦2ove:trive¦2med:um¦2ode:rride¦2at:ysit¦3ted:mit,hat,mat,lat,pot,rot,bat¦3ed:low,end,tow,und,ond,eem,lay,cho,dow,xit,eld,ald,uld,law,lel,eat,oll,ray,ank,fin,oam,out,how,iek,tay,haw,ait,vet,say,cay,bow¦3d:ste,ede,ode,ete,ree,ude,ame,oke,ote,ime,ute,ade¦3red:lur,cur,pur,car¦3ped:hop,rop,uip,rip,lip,tep,top¦3ded:bed,rod,kid¦3ade:orbid¦3led:uel¦3ned:lan,can,kin,pan,tun¦3med:rim,lim¦4ted:quit,llot¦4ed:pear,rrow,rand,lean,mand,anel,pand,reet,link,abel,evel,imit,ceed,ruit,mind,peal,veal,hool,head,pell,well,mell,uell,band,hear,weak¦4led:nnel,qual,ebel,ivel¦4red:nfer,efer,sfer¦4n:sake,trew¦4d:ntee¦4ded:hred¦4ned:rpin¦5ed:light,nceal,right,ndear,arget,hread,eight,rtial,eboot¦5d:edite,nvite¦5ted:egret¦5led:ravel\",ex:\"2:been,upped¦3:added,aged,aided,aimed,aired,bid,died,dyed,egged,erred,eyed,fit,gassed,hit,lied,owed,pent,pied,tied,used,vied,oiled,outed,banned,barred,bet,canned,cut,dipped,donned,ended,feed,inked,jarred,let,manned,mowed,netted,padded,panned,pitted,popped,potted,put,set,sewn,sowed,tanned,tipped,topped,vowed,weed,bowed,jammed,binned,dimmed,hopped,mopped,nodded,pinned,rigged,sinned,towed,vetted¦4:ached,baked,baled,boned,bored,called,caned,cared,ceded,cited,coded,cored,cubed,cured,dared,dined,edited,exited,faked,fared,filed,fined,fired,fuelled,gamed,gelled,hired,hoped,joked,lined,mined,named,noted,piled,poked,polled,pored,pulled,reaped,roamed,rolled,ruled,seated,shed,sided,timed,tolled,toned,voted,waited,walled,waned,winged,wiped,wired,zoned,yelled,tamed,lubed,roped,faded,mired,caked,honed,banged,culled,heated,raked,welled,banded,beat,cast,cooled,cost,dealt,feared,folded,footed,handed,headed,heard,hurt,knitted,landed,leaked,leapt,linked,meant,minded,molded,neared,needed,peaked,plodded,plotted,pooled,quit,read,rooted,sealed,seeded,seeped,shipped,shunned,skimmed,slammed,sparred,stemmed,stirred,suited,thinned,twinned,swayed,winked,dialed,abutted,blotted,fretted,healed,heeded,peeled,reeled¦5:basted,cheated,equalled,eroded,exiled,focused,opined,pleated,primed,quoted,scouted,shored,sloped,smoked,sniped,spelled,spouted,routed,staked,stored,swelled,tasted,treated,wasted,smelled,dwelled,honored,prided,quelled,eloped,scared,coveted,sweated,breaded,cleared,debuted,deterred,freaked,modeled,pleaded,rebutted,speeded¦6:anchored,defined,endured,impaled,invited,refined,revered,strolled,cringed,recast,thrust,unfolded¦7:authored,combined,competed,conceded,convened,excreted,extruded,redefined,restored,secreted,rescinded,welcomed¦8:expedited,infringed¦9:interfered,intervened,persevered¦10:contravened¦eat:ate¦is:was¦go:went¦are:were¦3d:bent,lent,rent,sent¦3e:bit,fled,hid,lost¦3ed:bled,bred¦2ow:blew,grew¦1uy:bought¦2tch:caught¦1o:did¦1ive:dove,gave¦2aw:drew¦2ed:fed¦2y:flew,laid,paid,said¦1ight:fought¦1et:got¦2ve:had¦1ang:hung¦2ad:led¦2ght:lit¦2ke:made¦2et:met¦1un:ran¦1ise:rose¦1it:sat¦1eek:sought¦1each:taught¦1ake:woke,took¦1eave:wove¦2ise:arose¦1ear:bore,tore,wore¦1ind:bound,found,wound¦2eak:broke¦2ing:brought,wrung¦1ome:came¦2ive:drove¦1ig:dug¦1all:fell¦2el:felt¦4et:forgot¦1old:held¦2ave:left¦1ing:rang,sang¦1ide:rode¦1ink:sank¦1ee:saw¦2ine:shone¦4e:slid¦1ell:sold,told¦4d:spent¦2in:spun¦1in:won\"}),oi=ai(Qo),ii=ai(qo),si=ai(Ro),li=ei(ri),ui=ei(oi),ci=ei(ii),di=ei(si),hi=ai(Uo),gi=ai(Zo);var mi={fromPast:ri,fromPresent:oi,fromGerund:ii,fromParticiple:si,toPast:li,toPresent:ui,toGerund:ci,toParticiple:di,toComparative:hi,toSuperlative:gi,fromComparative:ei(hi),fromSuperlative:ei(gi),adjToNoun:ai(Xo)},pi=[\"academy\",\"administration\",\"agence\",\"agences\",\"agencies\",\"agency\",\"airlines\",\"airways\",\"army\",\"assoc\",\"associates\",\"association\",\"assurance\",\"authority\",\"autorite\",\"aviation\",\"bank\",\"banque\",\"board\",\"boys\",\"brands\",\"brewery\",\"brotherhood\",\"brothers\",\"bureau\",\"cafe\",\"co\",\"caisse\",\"capital\",\"care\",\"cathedral\",\"center\",\"centre\",\"chemicals\",\"choir\",\"chronicle\",\"church\",\"circus\",\"clinic\",\"clinique\",\"club\",\"co\",\"coalition\",\"coffee\",\"collective\",\"college\",\"commission\",\"committee\",\"communications\",\"community\",\"company\",\"comprehensive\",\"computers\",\"confederation\",\"conference\",\"conseil\",\"consulting\",\"containers\",\"corporation\",\"corps\",\"corp\",\"council\",\"crew\",\"data\",\"departement\",\"department\",\"departments\",\"design\",\"development\",\"directorate\",\"division\",\"drilling\",\"education\",\"eglise\",\"electric\",\"electricity\",\"energy\",\"ensemble\",\"enterprise\",\"enterprises\",\"entertainment\",\"estate\",\"etat\",\"faculty\",\"faction\",\"federation\",\"financial\",\"fm\",\"foundation\",\"fund\",\"gas\",\"gazette\",\"girls\",\"government\",\"group\",\"guild\",\"herald\",\"holdings\",\"hospital\",\"hotel\",\"hotels\",\"inc\",\"industries\",\"institut\",\"institute\",\"institutes\",\"insurance\",\"international\",\"interstate\",\"investment\",\"investments\",\"investors\",\"journal\",\"laboratory\",\"labs\",\"llc\",\"ltd\",\"limited\",\"machines\",\"magazine\",\"management\",\"marine\",\"marketing\",\"markets\",\"media\",\"memorial\",\"ministere\",\"ministry\",\"military\",\"mobile\",\"motor\",\"motors\",\"musee\",\"museum\",\"news\",\"observatory\",\"office\",\"oil\",\"optical\",\"orchestra\",\"organization\",\"partners\",\"partnership\",\"petrol\",\"petroleum\",\"pharmacare\",\"pharmaceutical\",\"pharmaceuticals\",\"pizza\",\"plc\",\"police\",\"politburo\",\"polytechnic\",\"post\",\"power\",\"press\",\"productions\",\"quartet\",\"radio\",\"reserve\",\"resources\",\"restaurant\",\"restaurants\",\"savings\",\"school\",\"securities\",\"service\",\"services\",\"societe\",\"subsidiary\",\"society\",\"sons\",\"subcommittee\",\"syndicat\",\"systems\",\"telecommunications\",\"telegraph\",\"television\",\"times\",\"tribunal\",\"tv\",\"union\",\"university\",\"utilities\",\"workers\"].reduce(((e,t)=>(e[t]=!0,e)),{}),fi=[\"atoll\",\"basin\",\"bay\",\"beach\",\"bluff\",\"bog\",\"camp\",\"canyon\",\"canyons\",\"cape\",\"cave\",\"caves\",\"cliffs\",\"coast\",\"cove\",\"coves\",\"crater\",\"crossing\",\"creek\",\"desert\",\"dune\",\"dunes\",\"downs\",\"estates\",\"escarpment\",\"estuary\",\"falls\",\"fjord\",\"fjords\",\"forest\",\"forests\",\"glacier\",\"gorge\",\"gorges\",\"grove\",\"gulf\",\"gully\",\"highland\",\"heights\",\"hollow\",\"hill\",\"hills\",\"inlet\",\"island\",\"islands\",\"isthmus\",\"junction\",\"knoll\",\"lagoon\",\"lake\",\"lakeshore\",\"marsh\",\"marshes\",\"mount\",\"mountain\",\"mountains\",\"narrows\",\"peninsula\",\"plains\",\"plateau\",\"pond\",\"rapids\",\"ravine\",\"reef\",\"reefs\",\"ridge\",\"river\",\"rivers\",\"sandhill\",\"shoal\",\"shore\",\"shoreline\",\"shores\",\"strait\",\"straits\",\"springs\",\"stream\",\"swamp\",\"tombolo\",\"trail\",\"trails\",\"trench\",\"valley\",\"vallies\",\"village\",\"volcano\",\"waterfall\",\"watershed\",\"wetland\",\"woods\",\"acres\",\"burough\",\"county\",\"district\",\"municipality\",\"prefecture\",\"province\",\"region\",\"reservation\",\"state\",\"territory\",\"borough\",\"metropolis\",\"downtown\",\"uptown\",\"midtown\",\"city\",\"town\",\"township\",\"hamlet\",\"country\",\"kingdom\",\"enclave\",\"neighbourhood\",\"neighborhood\",\"kingdom\",\"ward\",\"zone\",\"airport\",\"amphitheater\",\"arch\",\"arena\",\"auditorium\",\"bar\",\"barn\",\"basilica\",\"battlefield\",\"bridge\",\"building\",\"castle\",\"centre\",\"coliseum\",\"cineplex\",\"complex\",\"dam\",\"farm\",\"field\",\"fort\",\"garden\",\"gardens\",\"gymnasium\",\"hall\",\"house\",\"levee\",\"library\",\"manor\",\"memorial\",\"monument\",\"museum\",\"gallery\",\"palace\",\"pillar\",\"pits\",\"plantation\",\"playhouse\",\"quarry\",\"sportsfield\",\"sportsplex\",\"stadium\",\"terrace\",\"terraces\",\"theater\",\"tower\",\"park\",\"parks\",\"site\",\"ranch\",\"raceway\",\"sportsplex\",\"ave\",\"st\",\"street\",\"rd\",\"road\",\"lane\",\"landing\",\"crescent\",\"cr\",\"way\",\"tr\",\"terrace\",\"avenue\"].reduce(((e,t)=>(e[t]=!0,e)),{}),bi=[[/([^v])ies$/i,\"$1y\"],[/(ise)s$/i,\"$1\"],[/(kn|[^o]l|w)ives$/i,\"$1ife\"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,\"$1f\"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,\"$1f\"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,\"$1a\"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,\"$1us\"],[/(buffal|tomat|tornad)(oes)$/i,\"$1o\"],[/(ause)s$/i,\"$1\"],[/(ease)s$/i,\"$1\"],[/(ious)es$/i,\"$1\"],[/(ouse)s$/i,\"$1\"],[/(ose)s$/i,\"$1\"],[/(..ase)s$/i,\"$1\"],[/(..[aeiu]s)es$/i,\"$1\"],[/(vert|ind|cort)(ices)$/i,\"$1ex\"],[/(matr|append)(ices)$/i,\"$1ix\"],[/([xo]|ch|ss|sh)es$/i,\"$1\"],[/men$/i,\"man\"],[/(n)ews$/i,\"$1ews\"],[/([ti])a$/i,\"$1um\"],[/([^aeiouy]|qu)ies$/i,\"$1y\"],[/(s)eries$/i,\"$1eries\"],[/(m)ovies$/i,\"$1ovie\"],[/(cris|ax|test)es$/i,\"$1is\"],[/(alias|status)es$/i,\"$1\"],[/(ss)$/i,\"$1\"],[/(ic)s$/i,\"$1\"],[/s$/i,\"\"]];const yi=function(e,t){const{irregularPlurals:n}=t.two,a=(r=n,Object.keys(r).reduce(((e,t)=>(e[r[t]]=t,e)),{}));var r;if(a.hasOwnProperty(e))return a[e];for(let t=0;t<bi.length;t++)if(!0===bi[t][0].test(e))return e=e.replace(bi[t][0],bi[t][1]);return e};var vi={toPlural:Pr,toSingular:yi,all:function(e,t){const n=[e],a=Pr(e,t);a!==e&&n.push(a);const r=yi(e,t);return r!==e&&n.push(r),n}};let wi={Gerund:[\"ing\"],Actor:[\"erer\"],Infinitive:[\"ate\",\"ize\",\"tion\",\"rify\",\"then\",\"ress\",\"ify\",\"age\",\"nce\",\"ect\",\"ise\",\"ine\",\"ish\",\"ace\",\"ash\",\"ure\",\"tch\",\"end\",\"ack\",\"and\",\"ute\",\"ade\",\"ock\",\"ite\",\"ase\",\"ose\",\"use\",\"ive\",\"int\",\"nge\",\"lay\",\"est\",\"ain\",\"ant\",\"ent\",\"eed\",\"er\",\"le\",\"unk\",\"ung\",\"upt\",\"en\"],PastTense:[\"ept\",\"ed\",\"lt\",\"nt\",\"ew\",\"ld\"],PresentTense:[\"rks\",\"cks\",\"nks\",\"ngs\",\"mps\",\"tes\",\"zes\",\"ers\",\"les\",\"acks\",\"ends\",\"ands\",\"ocks\",\"lays\",\"eads\",\"lls\",\"els\",\"ils\",\"ows\",\"nds\",\"ays\",\"ams\",\"ars\",\"ops\",\"ffs\",\"als\",\"urs\",\"lds\",\"ews\",\"ips\",\"es\",\"ts\",\"ns\"],Participle:[\"ken\",\"wn\"]};wi=Object.keys(wi).reduce(((e,t)=>(wi[t].forEach((n=>e[n]=t)),e)),{});const ki=function(e){const t=e.substring(e.length-3);if(!0===wi.hasOwnProperty(t))return wi[t];const n=e.substring(e.length-2);if(!0===wi.hasOwnProperty(n))return wi[n];return\"s\"===e.substring(e.length-1)?\"PresentTense\":null},Pi={are:\"be\",were:\"be\",been:\"be\",is:\"be\",am:\"be\",was:\"be\",be:\"be\",being:\"be\"},Ai=function(e,t,n){const{fromPast:a,fromPresent:r,fromGerund:o,fromParticiple:i}=t.two.models,{prefix:s,verb:l,particle:u}=function(e,t){let n=\"\",a={};t.one&&t.one.prefixes&&(a=t.one.prefixes);let[r,o]=e.split(/ /);return o&&!0===a[r]&&(n=r,r=o,o=\"\"),{prefix:n,verb:r,particle:o}}(e,t);let c=\"\";if(n||(n=ki(e)),Pi.hasOwnProperty(e))c=Pi[e];else if(\"Participle\"===n)c=_o(l,i);else if(\"PastTense\"===n)c=_o(l,a);else if(\"PresentTense\"===n)c=_o(l,r);else{if(\"Gerund\"!==n)return e;c=_o(l,o)}return u&&(c+=\" \"+u),s&&(c=s+\" \"+c),c},Ci=function(e,t){const{toPast:n,toPresent:a,toGerund:r,toParticiple:o}=t.two.models;if(\"be\"===e)return{Infinitive:e,Gerund:\"being\",PastTense:\"was\",PresentTense:\"is\"};const[i,s]=(e=>/ /.test(e)?e.split(/ /):[e,\"\"])(e),l={Infinitive:i,PastTense:_o(i,n),PresentTense:_o(i,a),Gerund:_o(i,r),FutureTense:\"will \"+i};let u=_o(i,o);if(u!==e&&u!==l.PastTense){const n=t.one.lexicon||{};\"Participle\"!==n[u]&&\"Adjective\"!==n[u]||(\"play\"===e&&(u=\"played\"),l.Participle=u)}return s&&Object.keys(l).forEach((e=>{l[e]+=\" \"+s})),l};var ji={toInfinitive:Ai,conjugate:Ci,all:function(e,t){const n=Ci(e,t);return delete n.FutureTense,Object.values(n).filter((e=>e))}};const Ni=function(e,t){const n=t.two.models.toSuperlative;return _o(e,n)},Ii=function(e,t){const n=t.two.models.toComparative;return _o(e,n)},Di=function(e=\"\",t=[]){const n=e.length;for(let a=n<=6?n-1:6;a>=1;a-=1){const r=e.substring(n-a,e.length);if(!0===t[r.length].hasOwnProperty(r)){return e.slice(0,n-a)+t[r.length][r]}}return null},Hi=\"ically\",Gi=new Set([\"analyt\"+Hi,\"chem\"+Hi,\"class\"+Hi,\"clin\"+Hi,\"crit\"+Hi,\"ecolog\"+Hi,\"electr\"+Hi,\"empir\"+Hi,\"frant\"+Hi,\"grammat\"+Hi,\"ident\"+Hi,\"ideolog\"+Hi,\"log\"+Hi,\"mag\"+Hi,\"mathemat\"+Hi,\"mechan\"+Hi,\"med\"+Hi,\"method\"+Hi,\"method\"+Hi,\"mus\"+Hi,\"phys\"+Hi,\"phys\"+Hi,\"polit\"+Hi,\"pract\"+Hi,\"rad\"+Hi,\"satir\"+Hi,\"statist\"+Hi,\"techn\"+Hi,\"technolog\"+Hi,\"theoret\"+Hi,\"typ\"+Hi,\"vert\"+Hi,\"whims\"+Hi]),Ti=[null,{},{ly:\"\"},{ily:\"y\",bly:\"ble\",ply:\"ple\"},{ally:\"al\",rply:\"rp\"},{ually:\"ual\",ially:\"ial\",cally:\"cal\",eally:\"eal\",rally:\"ral\",nally:\"nal\",mally:\"mal\",eeply:\"eep\",eaply:\"eap\"},{ically:\"ic\"}],xi=new Set([\"early\",\"only\",\"hourly\",\"daily\",\"weekly\",\"monthly\",\"yearly\",\"mostly\",\"duly\",\"unduly\",\"especially\",\"undoubtedly\",\"conversely\",\"namely\",\"exceedingly\",\"presumably\",\"accordingly\",\"overly\",\"best\",\"latter\",\"little\",\"long\",\"low\"]),Ei={wholly:\"whole\",fully:\"full\",truly:\"true\",gently:\"gentle\",singly:\"single\",customarily:\"customary\",idly:\"idle\",publically:\"public\",quickly:\"quick\",superbly:\"superb\",cynically:\"cynical\",well:\"good\"},Fi=[null,{y:\"ily\"},{ly:\"ly\",ic:\"ically\"},{ial:\"ially\",ual:\"ually\",tle:\"tly\",ble:\"bly\",ple:\"ply\",ary:\"arily\"},{},{},{}],Oi={cool:\"cooly\",whole:\"wholly\",full:\"fully\",good:\"well\",idle:\"idly\",public:\"publicly\",single:\"singly\",special:\"especially\"},zi=function(e){if(Oi.hasOwnProperty(e))return Oi[e];let t=Di(e,Fi);return t||(t=e+\"ly\"),t};var Vi={toSuperlative:Ni,toComparative:Ii,toAdverb:zi,toNoun:function(e,t){const n=t.two.models.adjToNoun;return _o(e,n)},fromAdverb:function(e){return e.endsWith(\"ly\")?Gi.has(e)?e.replace(/ically/,\"ical\"):xi.has(e)?null:Ei.hasOwnProperty(e)?Ei[e]:Di(e,Ti)||e:null},fromSuperlative:function(e,t){const n=t.two.models.fromSuperlative;return _o(e,n)},fromComparative:function(e,t){const n=t.two.models.fromComparative;return _o(e,n)},all:function(e,t){let n=[e];return n.push(Ni(e,t)),n.push(Ii(e,t)),n.push(zi(e)),n=n.filter((e=>e)),n=new Set(n),Array.from(n)}},Bi={noun:vi,verb:ji,adjective:Vi},Si={Singular:(e,t,n,a)=>{const r=a.one.lexicon,o=n.two.transform.noun.toPlural(e,a);r[o]||(t[o]=t[o]||\"Plural\")},Actor:(e,t,n,a)=>{const r=a.one.lexicon,o=n.two.transform.noun.toPlural(e,a);r[o]||(t[o]=t[o]||[\"Plural\",\"Actor\"])},Comparable:(e,t,n,a)=>{const r=a.one.lexicon,{toSuperlative:o,toComparative:i}=n.two.transform.adjective,s=o(e,a);r[s]||(t[s]=t[s]||\"Superlative\");const l=i(e,a);r[l]||(t[l]=t[l]||\"Comparative\"),t[e]=\"Adjective\"},Demonym:(e,t,n,a)=>{const r=n.two.transform.noun.toPlural(e,a);t[r]=t[r]||[\"Demonym\",\"Plural\"]},Infinitive:(e,t,n,a)=>{const r=a.one.lexicon,o=n.two.transform.verb.conjugate(e,a);Object.entries(o).forEach((e=>{r[e[1]]||t[e[1]]||\"FutureTense\"===e[0]||(t[e[1]]=e[0])}))},PhrasalVerb:(e,t,n,a)=>{const r=a.one.lexicon;t[e]=[\"PhrasalVerb\",\"Infinitive\"];const o=a.one._multiCache,[i,s]=e.split(\" \");r[i]||(t[i]=t[i]||\"Infinitive\");const l=n.two.transform.verb.conjugate(i,a);delete l.FutureTense,Object.entries(l).forEach((e=>{if(\"Actor\"===e[0]||\"\"===e[1])return;t[e[1]]||r[e[1]]||(t[e[1]]=e[0]),o[e[1]]=2;const n=e[1]+\" \"+s;t[n]=t[n]||[e[0],\"PhrasalVerb\"]}))},Multiple:(e,t)=>{t[e]=[\"Multiple\",\"Cardinal\"],t[e+\"th\"]=[\"Multiple\",\"Ordinal\"],t[e+\"ths\"]=[\"Multiple\",\"Fraction\"]},Cardinal:(e,t)=>{t[e]=[\"TextValue\",\"Cardinal\"]},Ordinal:(e,t)=>{t[e]=[\"TextValue\",\"Ordinal\"],t[e+\"s\"]=[\"TextValue\",\"Fraction\"]},Place:(e,t)=>{t[e]=[\"Place\",\"ProperNoun\"]},Region:(e,t)=>{t[e]=[\"Region\",\"ProperNoun\"]}};const Ki={e:[\"mice\",\"louse\",\"antennae\",\"formulae\",\"nebulae\",\"vertebrae\",\"vitae\"],i:[\"tia\",\"octopi\",\"viri\",\"radii\",\"nuclei\",\"fungi\",\"cacti\",\"stimuli\"],n:[\"men\"],t:[\"feet\"]},$i=new Set([\"israelis\",\"menus\",\"logos\"]),Li=[\"bus\",\"mas\",\"was\",\"ias\",\"xas\",\"vas\",\"cis\",\"lis\",\"nis\",\"ois\",\"ris\",\"sis\",\"tis\",\"xis\",\"aus\",\"cus\",\"eus\",\"fus\",\"gus\",\"ius\",\"lus\",\"nus\",\"das\",\"ous\",\"pus\",\"rus\",\"sus\",\"tus\",\"xus\",\"aos\",\"igos\",\"ados\",\"ogos\",\"'s\",\"ss\"],Mi=function(e){if(!e||e.length<=3)return!1;if($i.has(e))return!0;const t=e[e.length-1];return Ki.hasOwnProperty(t)?Ki[t].find((t=>e.endsWith(t))):\"s\"===t&&!Li.find((t=>e.endsWith(t)))};var Ji={two:{quickSplit:function(e){const t=/[,:;]/,n=[];return e.forEach((e=>{let a=0;e.forEach(((r,o)=>{t.test(r.post)&&function(e,t){const n=/^[0-9]+$/,a=e[t];if(!a)return!1;const r=new Set([\"may\",\"april\",\"august\",\"jan\"]);if(\"like\"===a.normal||r.has(a.normal))return!1;if(a.tags.has(\"Place\")||a.tags.has(\"Date\"))return!1;if(e[t-1]){const n=e[t-1];if(n.tags.has(\"Date\")||r.has(n.normal))return!1;if(n.tags.has(\"Adjective\")||a.tags.has(\"Adjective\"))return!1}const o=a.normal;return 1!==o.length&&2!==o.length&&4!==o.length||!n.test(o)}(e,o+1)&&(n.push(e.slice(a,o+1)),a=o+1)})),a<e.length&&n.push(e.slice(a,e.length))})),n},expandLexicon:function(e,t){const{methods:n,model:a}=t,r={},o={};return Object.keys(e).forEach((t=>{const i=e[t],s=(t=(t=t.toLowerCase().trim()).replace(/'s\\b/,\"\")).split(/ /);s.length>1&&(void 0===o[s[0]]||s.length>o[s[0]])&&(o[s[0]]=s.length),!0===Si.hasOwnProperty(i)&&Si[i](t,r,n,a),r[t]=r[t]||i})),delete r[\"\"],delete r.null,delete r[\" \"],{lex:r,_multi:o}},transform:Bi,looksPlural:Mi}};const Wi={one:{lexicon:{}},two:{models:mi}},Ui={\"Actor|Verb\":\"Actor\",\"Adj|Gerund\":\"Adjective\",\"Adj|Noun\":\"Adjective\",\"Adj|Past\":\"Adjective\",\"Adj|Present\":\"Adjective\",\"Noun|Verb\":\"Singular\",\"Noun|Gerund\":\"Gerund\",\"Person|Noun\":\"Noun\",\"Person|Date\":\"Month\",\"Person|Verb\":\"FirstName\",\"Person|Place\":\"Person\",\"Person|Adj\":\"Comparative\",\"Plural|Verb\":\"Plural\",\"Unit|Noun\":\"Noun\"},qi=function(e,t){const n={model:t,methods:Ji},{lex:a,_multi:r}=Ji.two.expandLexicon(e,n);return Object.assign(t.one.lexicon,a),Object.assign(t.one._multiCache,r),t},Ri=function(e,t,n){const a=Ci(e,Wi);t[a.PastTense]=t[a.PastTense]||\"PastTense\",t[a.Gerund]=t[a.Gerund]||\"Gerund\",!0===n&&(t[a.PresentTense]=t[a.PresentTense]||\"PresentTense\")},Qi=function(e,t,n){const a=Ni(e,n);t[a]=t[a]||\"Superlative\";const r=Ii(e,n);t[r]=t[r]||\"Comparative\"},Zi=function(e,t){const n={},a=t.one.lexicon;return Object.keys(e).forEach((r=>{const o=e[r];if(n[r]=Ui[o],\"Noun|Verb\"!==o&&\"Person|Verb\"!==o&&\"Actor|Verb\"!==o||Ri(r,a,!1),\"Adj|Present\"===o&&(Ri(r,a,!0),Qi(r,a,t)),\"Person|Adj\"===o&&Qi(r,a,t),\"Adj|Gerund\"===o||\"Noun|Gerund\"===o){const e=Ai(r,Wi,\"Gerund\");a[e]||(n[e]=\"Infinitive\")}if(\"Noun|Gerund\"!==o&&\"Adj|Noun\"!==o&&\"Person|Noun\"!==o||function(e,t,n){const a=Pr(e,n);t[a]=t[a]||\"Plural\"}(r,a,t),\"Adj|Past\"===o){const e=Ai(r,Wi,\"PastTense\");a[e]||(n[e]=\"Infinitive\")}})),t=qi(n,t)};let Xi={one:{_multiCache:{},lexicon:Cr,frozenLex:{\"20th century fox\":\"Organization\",\"7 eleven\":\"Organization\",\"motel 6\":\"Organization\",\"excuse me\":\"Expression\",\"financial times\":\"Organization\",\"guns n roses\":\"Organization\",\"la z boy\":\"Organization\",\"labour party\":\"Organization\",\"new kids on the block\":\"Organization\",\"new york times\":\"Organization\",\"the guess who\":\"Organization\",\"thin lizzy\":\"Organization\",\"prime minister\":\"Actor\",\"free market\":\"Singular\",\"lay up\":\"Singular\",\"living room\":\"Singular\",\"living rooms\":\"Plural\",\"spin off\":\"Singular\",\"appeal court\":\"Uncountable\",\"cold war\":\"Uncountable\",\"gene pool\":\"Uncountable\",\"machine learning\":\"Uncountable\",\"nail polish\":\"Uncountable\",\"time off\":\"Uncountable\",\"take part\":\"Infinitive\",\"bill gates\":\"Person\",\"doctor who\":\"Person\",\"dr who\":\"Person\",\"he man\":\"Person\",\"iron man\":\"Person\",\"kid cudi\":\"Person\",\"run dmc\":\"Person\",\"rush limbaugh\":\"Person\",\"snow white\":\"Person\",\"tiger woods\":\"Person\",\"brand new\":\"Adjective\",\"en route\":\"Adjective\",\"left wing\":\"Adjective\",\"off guard\":\"Adjective\",\"on board\":\"Adjective\",\"part time\":\"Adjective\",\"right wing\":\"Adjective\",\"so called\":\"Adjective\",\"spot on\":\"Adjective\",\"straight forward\":\"Adjective\",\"super duper\":\"Adjective\",\"tip top\":\"Adjective\",\"top notch\":\"Adjective\",\"up to date\":\"Adjective\",\"win win\":\"Adjective\",\"brooklyn nets\":\"SportsTeam\",\"chicago bears\":\"SportsTeam\",\"houston astros\":\"SportsTeam\",\"houston dynamo\":\"SportsTeam\",\"houston rockets\":\"SportsTeam\",\"houston texans\":\"SportsTeam\",\"minnesota twins\":\"SportsTeam\",\"orlando magic\":\"SportsTeam\",\"san antonio spurs\":\"SportsTeam\",\"san diego chargers\":\"SportsTeam\",\"san diego padres\":\"SportsTeam\",\"iron maiden\":\"ProperNoun\",\"isle of man\":\"Country\",\"united states\":\"Country\",\"united states of america\":\"Country\",\"prince edward island\":\"Region\",\"cedar breaks\":\"Place\",\"cedar falls\":\"Place\",\"point blank\":\"Adverb\",\"tiny bit\":\"Adverb\",\"by the time\":\"Conjunction\",\"no matter\":\"Conjunction\",\"civil wars\":\"Plural\",\"credit cards\":\"Plural\",\"default rates\":\"Plural\",\"free markets\":\"Plural\",\"head starts\":\"Plural\",\"home runs\":\"Plural\",\"lay ups\":\"Plural\",\"phone calls\":\"Plural\",\"press releases\":\"Plural\",\"record labels\":\"Plural\",\"soft serves\":\"Plural\",\"student loans\":\"Plural\",\"tax returns\":\"Plural\",\"tv shows\":\"Plural\",\"video games\":\"Plural\",\"took part\":\"PastTense\",\"takes part\":\"PresentTense\",\"taking part\":\"Gerund\",\"taken part\":\"Participle\",\"light bulb\":\"Noun\",\"rush hour\":\"Noun\",\"fluid ounce\":\"Unit\",\"the rolling stones\":\"Organization\"}},two:{irregularPlurals:dr,models:mi,suffixPatterns:No,prefixPatterns:Go,endsWith:Lo,neighbours:Wo,regexNormal:[[/^[\\w.]+@[\\w.]+\\.[a-z]{2,3}$/,\"Email\"],[/^(https?:\\/\\/|www\\.)+\\w+\\.[a-z]{2,3}/,\"Url\",\"http..\"],[/^[a-z0-9./].+\\.(com|net|gov|org|ly|edu|info|biz|dev|ru|jp|de|in|uk|br|io|ai)/,\"Url\",\".com\"],[/^[PMCE]ST$/,\"Timezone\",\"EST\"],[/^ma?c'[a-z]{3}/,\"LastName\",\"mc'neil\"],[/^o'[a-z]{3}/,\"LastName\",\"o'connor\"],[/^ma?cd[aeiou][a-z]{3}/,\"LastName\",\"mcdonald\"],[/^(lol)+[sz]$/,\"Expression\",\"lol\"],[/^wo{2,}a*h?$/,\"Expression\",\"wooah\"],[/^(hee?){2,}h?$/,\"Expression\",\"hehe\"],[/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/,\"Verb\",\"un-vite\"],[/^(m|k|cm|km)\\/(s|h|hr)$/,\"Unit\",\"5 k/m\"],[/^(ug|ng|mg)\\/(l|m3|ft3)$/,\"Unit\",\"ug/L\"],[/[^:/]\\/\\p{Letter}/u,\"SlashedTerm\",\"love/hate\"]],regexText:[[/^#[\\p{Number}_]*\\p{Letter}/u,\"HashTag\"],[/^@\\w{2,}$/,\"AtMention\"],[/^([A-Z]\\.){2}[A-Z]?/i,[\"Acronym\",\"Noun\"],\"F.B.I\"],[/.{3}[lkmnp]in['‘’‛‵′`´]$/,\"Gerund\",\"chillin'\"],[/.{4}s['‘’‛‵′`´]$/,\"Possessive\",\"flanders'\"],[/^[\\p{Emoji_Presentation}\\p{Extended_Pictographic}]/u,\"Emoji\",\"emoji-class\"]],regexNumbers:[[/^@1?[0-9](am|pm)$/i,\"Time\",\"3pm\"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,\"Time\",\"3:30pm\"],[/^'[0-9]{2}$/,\"Year\"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,\"Time\",\"3:12:31\"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,\"Time\",\"1:12pm\"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,\"Time\",\"1:12:31pm\"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,\"Date\",\"iso-date\"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,\"Date\",\"iso-dash\"],[/^[0-9]{1,4}\\/[0-9]{1,2}\\/([0-9]{4}|[0-9]{2})$/,\"Date\",\"iso-slash\"],[/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/,\"Date\",\"iso-dot\"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,\"Date\",\"12-dec-2019\"],[/^utc ?[+-]?[0-9]+$/,\"Timezone\",\"utc-9\"],[/^(gmt|utc)[+-][0-9]{1,2}$/i,\"Timezone\",\"gmt-3\"],[/^[0-9]{3}-[0-9]{4}$/,\"PhoneNumber\",\"421-0029\"],[/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,\"PhoneNumber\",\"1-800-\"],[/^[-+]?\\p{Currency_Symbol}[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?([kmb]|bn)?\\+?$/u,[\"Money\",\"Value\"],\"$5.30\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\p{Currency_Symbol}\\+?$/u,[\"Money\",\"Value\"],\"5.30£\"],[/^[-+]?[$£]?[0-9]([0-9,.])+(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,[\"Money\",\"Value\"],\"$400usd\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/,[\"Cardinal\",\"NumericValue\"],\"5,999\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/,[\"Ordinal\",\"NumericValue\"],\"53rd\"],[/^\\.[0-9]+\\+?$/,[\"Cardinal\",\"NumericValue\"],\".73th\"],[/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/,[\"Percent\",\"Cardinal\",\"NumericValue\"],\"-4%\"],[/^\\.[0-9]+%$/,[\"Percent\",\"Cardinal\",\"NumericValue\"],\".3%\"],[/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/,[\"Fraction\",\"NumericValue\"],\"2/3rds\"],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,[\"Value\",\"NumberRange\"],\"3-4\"],[/^[0-9]{1,2}(:[0-9][0-9])?(am|pm)? ?[-–—] ?[0-9]{1,2}(:[0-9][0-9])?(am|pm)$/,[\"Time\",\"NumberRange\"],\"3-4pm\"],[/^[0-9.]+([a-z°]{1,4})$/,\"NumericValue\",\"9km\"]],switches:jr,clues:uo,uncountable:{},orgWords:pi,placeWords:fi}};Xi=function(e){return e=function(e,t){return Object.keys(e).forEach((n=>{\"Uncountable\"===e[n]&&(t.two.uncountable[n]=!0,e[n]=\"Uncountable\")})),t}((e=qi(e.one.lexicon,e)).one.lexicon,e),e=function(e){const{irregularPlurals:t}=e.two,{lexicon:n}=e.one;return Object.entries(t).forEach((e=>{n[e[0]]=n[e[0]]||\"Singular\",n[e[1]]=n[e[1]]||\"Plural\"})),e}(e=Zi(e.two.switches,e)),e}(Xi);const _i=function(e,t,n,a){const r=a.methods.one.setTag;\"-\"===e[t].post&&e[t+1]&&r([e[t],e[t+1]],\"Hyphenated\",a,null,\"1-punct-hyphen''\")},Yi=/^(under|over|mis|re|un|dis|semi)-?/,es=function(e,t,n){const a=n.two.switches,r=e[t];if(a.hasOwnProperty(r.normal))r.switch=a[r.normal];else if(Yi.test(r.normal)){const e=r.normal.replace(Yi,\"\");e.length>3&&a.hasOwnProperty(e)&&(r.switch=a[e])}},ts=function(e,t,n){if(!t||0===t.length)return;if(!0===e.frozen)return;const a=\"undefined\"!=typeof process&&process.env?process.env:self.env||{};a&&a.DEBUG_TAGS&&((e,t,n=\"\")=>{const a=e.text||\"[\"+e.implicit+\"]\";var r;\"string\"!=typeof t&&t.length>2&&(t=t.slice(0,2).join(\", #\")+\" +\"),t=\"string\"!=typeof t?t.join(\", #\"):t,console.log(` ${(r=a,\"\u001b[33m\u001b[3m\"+r+\"\u001b[0m\").padEnd(24)} \u001b[32m→\u001b[0m #${t.padEnd(22)}  ${(e=>\"\u001b[3m\"+e+\"\u001b[0m\")(n)}`)})(e,t,n),e.tags=e.tags||new Set,\"string\"==typeof t?e.tags.add(t):t.forEach((t=>e.tags.add(t)))},ns=[\"Acronym\",\"Abbreviation\",\"ProperNoun\",\"Uncountable\",\"Possessive\",\"Pronoun\",\"Activity\",\"Honorific\",\"Month\"],as=function(e,t,n){const a=e[t],r=Array.from(a.tags);for(let e=0;e<r.length;e+=1)if(n.one.tagSet[r[e]]){const t=n.one.tagSet[r[e]].parents;ts(a,t,` -inferred by #${r[e]}`)}!function(e){!e.tags.has(\"Noun\")||e.tags.has(\"Plural\")||e.tags.has(\"Singular\")||ns.find((t=>e.tags.has(t)))||(Mi(e.normal)?ts(e,\"Plural\",\"3-plural-guess\"):ts(e,\"Singular\",\"3-singular-guess\"))}(a),function(e){const t=e.tags;if(t.has(\"Verb\")&&1===t.size){const t=ki(e.normal);t&&ts(e,t,\"3-verb-tense-guess\")}}(a)},rs=/^\\p{Lu}[\\p{Ll}'’]/u,os=/[0-9]/,is=[\"Date\",\"Month\",\"WeekDay\",\"Unit\",\"Expression\"],ss=/[IVX]/,ls=/^[IVXLCDM]{2,}$/,us=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,cs={li:!0,dc:!0,md:!0,dm:!0,ml:!0},ds=function(e,t,n){const a=e[t];a.index=a.index||[0,0];const r=a.index[1],o=a.text||\"\";return 0!==r&&!0===rs.test(o)&&!1===os.test(o)?is.find((e=>a.tags.has(e)))||a.pre.match(/[\"']$/)||\"the\"===a.normal?null:(as(e,t,n),a.tags.has(\"Noun\")||a.frozen||a.tags.clear(),ts(a,\"ProperNoun\",\"2-titlecase\"),!0):o.length>=2&&ls.test(o)&&ss.test(o)&&us.test(o)&&!cs[a.normal]?(ts(a,\"RomanNumeral\",\"2-xvii\"),!0):null},hs=function(e=\"\",t=[]){const n=e.length;let a=7;n<=a&&(a=n-1);for(let r=a;r>1;r-=1){const a=e.substring(n-r,n);if(!0===t[a.length].hasOwnProperty(a)){return t[a.length][a]}}return null},gs=function(e,t,n){const a=e[t];if(0===a.tags.size){let e=hs(a.normal,n.two.suffixPatterns);if(null!==e)return ts(a,e,\"2-suffix\"),a.confidence=.7,!0;if(a.implicit&&(e=hs(a.implicit,n.two.suffixPatterns),null!==e))return ts(a,e,\"2-implicit-suffix\"),a.confidence=.7,!0}return null},ms=/['‘’‛‵′`´]/,ps=function(e,t){for(let n=0;n<t.length;n+=1)if(!0===t[n][0].test(e))return t[n];return null},fs=function(e,t,n,a){const r=a.methods.one.setTag,{regexText:o,regexNormal:i,regexNumbers:s,endsWith:l}=n.two,u=e[t],c=u.machine||u.normal;let d=u.text;ms.test(u.post)&&!ms.test(u.pre)&&(d+=u.post.trim());let h=ps(d,o)||ps(c,i);return!h&&/[0-9]/.test(c)&&(h=ps(c,s)),h||0!==u.tags.size||(h=function(e=\"\",t){const n=e[e.length-1];if(!0===t.hasOwnProperty(n)){const a=t[n]||[];for(let t=0;t<a.length;t+=1)if(!0===a[t][0].test(e))return a[t]}return null}(c,l)),h?(r([u],h[1],a,null,`2-regex-'${h[2]||h[0]}'`),u.confidence=.6,!0):null},bs=function(e,t,n){const a=e[t];if(0===a.tags.size){const e=function(e=\"\",t=[]){const n=e.length;let a=7;a>n-3&&(a=n-3);for(let n=a;n>2;n-=1){const a=e.substring(0,n);if(!0===t[a.length].hasOwnProperty(a))return t[a.length][a]}return null}(a.normal,n.two.prefixPatterns);if(null!==e)return ts(a,e,\"2-prefix\"),a.confidence=.5,!0}return null},ys=new Set([\"in\",\"on\",\"by\",\"until\",\"for\",\"to\",\"during\",\"throughout\",\"through\",\"within\",\"before\",\"after\",\"of\",\"this\",\"next\",\"last\",\"circa\",\"around\",\"post\",\"pre\",\"budget\",\"classic\",\"plan\",\"may\"]),vs=function(e){if(!e)return!1;const t=e.normal||e.implicit;return!!ys.has(t)||(!!(e.tags.has(\"Date\")||e.tags.has(\"Month\")||e.tags.has(\"WeekDay\")||e.tags.has(\"Year\"))||!!e.tags.has(\"ProperNoun\"))},ws=function(e){return!!e&&(!!e.tags.has(\"Ordinal\")||(!!(e.tags.has(\"Cardinal\")&&e.normal.length<3)||(\"is\"===e.normal||\"was\"===e.normal)))},ks=function(e){return e&&(e.tags.has(\"Date\")||e.tags.has(\"Month\")||e.tags.has(\"WeekDay\")||e.tags.has(\"Year\"))},Ps=function(e,t){const n=e[t];if(n.tags.has(\"NumericValue\")&&n.tags.has(\"Cardinal\")&&4===n.normal.length){const a=Number(n.normal);if(a&&!isNaN(a)&&a>1400&&a<2100){const r=e[t-1],o=e[t+1];if(vs(r)||vs(o))return ts(n,\"Year\",\"2-tagYear\");if(a>=1920&&a<2025){if(ws(r)||ws(o))return ts(n,\"Year\",\"2-tagYear-close\");if(ks(e[t-2])||ks(e[t+2]))return ts(n,\"Year\",\"2-tagYear-far\");if(r&&(r.tags.has(\"Determiner\")||r.tags.has(\"Possessive\"))&&o&&o.tags.has(\"Noun\")&&!o.tags.has(\"Plural\"))return ts(n,\"Year\",\"2-tagYear-noun\")}}}return null},As=function(e,t,n,a){const r=a.methods.one.setTag,o=e[t],i=[\"PastTense\",\"PresentTense\",\"Auxiliary\",\"Modal\",\"Particle\"];if(o.tags.has(\"Verb\")){i.find((e=>o.tags.has(e)))||r([o],\"Infinitive\",a,null,\"2-verb-type''\")}},Cs=/^[A-Z]('s|,)?$/,js=/^[A-Z-]+$/,Ns=/^[A-Z]+s$/,Is=/([A-Z]\\.)+[A-Z]?,?$/,Ds=/[A-Z]{2,}('s|,)?$/,Hs=/([a-z]\\.)+[a-z]\\.?$/,Gs={I:!0,A:!0},Ts={la:!0,ny:!0,us:!0,dc:!0,gb:!0},xs=function(e,t,n){const a=e[t];return a.tags.has(\"RomanNumeral\")||a.tags.has(\"Acronym\")||a.frozen?null:function(e,t){let n=e.text;if(!1===js.test(n)){if(!(n.length>3&&!0===Ns.test(n)))return!1;n=n.replace(/s$/,\"\")}return!(n.length>5||Gs.hasOwnProperty(n)||t.one.lexicon.hasOwnProperty(e.normal)||!0!==Is.test(n)&&!0!==Hs.test(n)&&!0!==Cs.test(n)&&!0!==Ds.test(n))}(a,n)?(a.tags.clear(),ts(a,[\"Acronym\",\"Noun\"],\"3-no-period-acronym\"),!0===Ts[a.normal]&&ts(a,\"Place\",\"3-place-acronym\"),!0===Ns.test(a.text)&&ts(a,\"Plural\",\"3-plural-acronym\"),!0):!Gs.hasOwnProperty(a.text)&&Cs.test(a.text)?(a.tags.clear(),ts(a,[\"Acronym\",\"Noun\"],\"3-one-letter-acronym\"),!0):a.tags.has(\"Organization\")&&a.text.length<=3?(ts(a,\"Acronym\",\"3-org-acronym\"),!0):a.tags.has(\"Organization\")&&js.test(a.text)&&a.text.length<=6?(ts(a,\"Acronym\",\"3-titlecase-acronym\"),!0):null},Es=function(e,t){if(!e)return null;const n=t.find((t=>e.normal===t[0]));return n?n[1]:null},Fs=function(e,t){if(!e)return null;const n=t.find((t=>e.tags.has(t[0])));return n?n[1]:null},Os=function(e,t,n){const{leftTags:a,leftWords:r,rightWords:o,rightTags:i}=n.two.neighbours,s=e[t];if(0===s.tags.size){let l=null;if(l=l||Es(e[t-1],r),l=l||Es(e[t+1],o),l=l||Fs(e[t-1],a),l=l||Fs(e[t+1],i),l)return ts(s,l,\"3-[neighbour]\"),as(e,t,n),e[t].confidence=.2,!0}return null},zs=function(e,t,n){return!!e&&(!e.tags.has(\"FirstName\")&&!e.tags.has(\"Place\")&&(!!(e.tags.has(\"ProperNoun\")||e.tags.has(\"Organization\")||e.tags.has(\"Acronym\"))||!(n||(a=e.text,!/^\\p{Lu}[\\p{Ll}'’]/u.test(a)))&&(0!==t||e.tags.has(\"Singular\"))));var a},Vs=function(e,t,n,a){const r=n.model.two.orgWords,o=n.methods.one.setTag,i=e[t];if(!0===r[i.machine||i.normal]&&zs(e[t-1],t-1,a)){o([e[t]],\"Organization\",n,null,\"3-[org-word]\");for(let r=t;r>=0&&zs(e[r],r,a);r-=1)o([e[r]],\"Organization\",n,null,\"3-[org-word]\")}return null},Bs=/'s$/,Ss=new Set([\"athletic\",\"city\",\"community\",\"eastern\",\"federal\",\"financial\",\"great\",\"historic\",\"historical\",\"local\",\"memorial\",\"municipal\",\"national\",\"northern\",\"provincial\",\"southern\",\"state\",\"western\",\"spring\",\"pine\",\"sunset\",\"view\",\"oak\",\"maple\",\"spruce\",\"cedar\",\"willow\"]),Ks=new Set([\"center\",\"centre\",\"way\",\"range\",\"bar\",\"bridge\",\"field\",\"pit\"]),$s=function(e,t,n){if(!e)return!1;const a=e.tags;return!(a.has(\"Organization\")||a.has(\"Possessive\")||Bs.test(e.normal))&&(!(!a.has(\"ProperNoun\")&&!a.has(\"Place\"))||!(n||(r=e.text,!/^\\p{Lu}[\\p{Ll}'’]/u.test(r)))&&(0!==t||a.has(\"Singular\")));var r},Ls=function(e,t,n,a){const r=n.model.two.placeWords,o=n.methods.one.setTag,i=e[t],s=i.machine||i.normal;if(!0===r[s]){for(let r=t-1;r>=0;r-=1)if(!Ss.has(e[r].normal)){if(!$s(e[r],r,a))break;o(e.slice(r,t+1),\"Place\",n,null,\"3-[place-of-foo]\")}if(Ks.has(s))return!1;for(let r=t+1;r<e.length;r+=1){if($s(e[r],r,a))return o(e.slice(t,r+1),\"Place\",n,null,\"3-[foo-place]\"),!0;if(\"of\"!==e[r].normal&&!Ss.has(e[r].normal))break}}return null},Ms=function(e,t,n){let a=!1;const r=e[t].tags;(0===r.size||1===r.size&&(r.has(\"Hyphenated\")||r.has(\"HashTag\")||r.has(\"Prefix\")||r.has(\"SlashedTerm\")))&&(a=!0),a&&(ts(e[t],\"Noun\",\"3-[fallback]\"),as(e,t,n),e[t].confidence=.1)},Js=/^[A-Z][a-z]/,Ws=(e,t)=>e[t].tags.has(\"ProperNoun\")&&Js.test(e[t].text)?\"Noun\":null,Us=(e,t,n)=>0!==t||e[1]?null:n,qs={\"Adj|Gerund\":(e,t)=>Ws(e,t),\"Adj|Noun\":(e,t)=>Ws(e,t)||function(e,t){return!e[t+1]&&e[t-1]&&e[t-1].tags.has(\"Determiner\")?\"Noun\":null}(e,t),\"Actor|Verb\":(e,t)=>Ws(e,t),\"Adj|Past\":(e,t)=>Ws(e,t),\"Adj|Present\":(e,t)=>Ws(e,t),\"Noun|Gerund\":(e,t)=>Ws(e,t),\"Noun|Verb\":(e,t)=>t>0&&Ws(e,t)||Us(e,t,\"Infinitive\"),\"Plural|Verb\":(e,t)=>Ws(e,t)||Us(e,t,\"PresentTense\")||function(e,t,n){return 0===t&&e.length>3?n:null}(e,t,\"Plural\"),\"Person|Noun\":(e,t)=>Ws(e,t),\"Person|Verb\":(e,t)=>0!==t?Ws(e,t):null,\"Person|Adj\":(e,t)=>0===t&&e.length>1||Ws(e,t)?\"Person\":null},Rs=\"undefined\"!=typeof process&&process.env?process.env:self.env||{},Qs=/^(under|over|mis|re|un|dis|semi)-?/,Zs=(e,t)=>{if(!e||!t)return null;const n=e.normal||e.implicit;let a=null;return t.hasOwnProperty(n)&&(a=t[n]),a&&Rs.DEBUG_TAGS&&console.log(`\\n  \u001b[2m\u001b[3m     ↓ - '${n}' \u001b[0m`),a},Xs=(e,t={},n)=>{if(!e||!t)return null;const a=Array.from(e.tags).sort(((e,t)=>(n[e]?n[e].parents.length:0)>(n[t]?n[t].parents.length:0)?-1:1));let r=a.find((e=>t[e]));return r&&Rs.DEBUG_TAGS&&console.log(`  \u001b[2m\u001b[3m      ↓ - '${e.normal||e.implicit}' (#${r})  \u001b[0m`),r=t[r],r},_s=function(e,t,n){const a=n.model,r=n.methods.one.setTag,{switches:o,clues:i}=a.two,s=e[t];let l=s.normal||s.implicit||\"\";if(Qs.test(l)&&!o[l]&&(l=l.replace(Qs,\"\")),s.switch){const o=s.switch;if(s.tags.has(\"Acronym\")||s.tags.has(\"PhrasalVerb\"))return;let u=function(e,t,n,a){if(!n)return null;const r=\"also\"!==e[t-1]?.text?t-1:Math.max(0,t-2),o=a.one.tagSet;let i=Zs(e[t+1],n.afterWords);return i=i||Zs(e[r],n.beforeWords),i=i||Xs(e[r],n.beforeTags,o),i=i||Xs(e[t+1],n.afterTags,o),i}(e,t,i[o],a);qs[o]&&(u=qs[o](e,t)||u),u?(r([s],u,n,null,`3-[switch] (${o})`),as(e,t,a)):Rs.DEBUG_TAGS&&console.log(`\\n -> X  - '${l}'  : (${o})  `)}},Ys={there:!0,this:!0,it:!0,him:!0,her:!0,us:!0},el=function(e){if(e.filter((e=>!e.tags.has(\"ProperNoun\"))).length<=3)return!1;const t=/^[a-z]/;return e.every((e=>!t.test(e.text)))},tl=function(e,t,n,a){for(let r=0;r<e.length;r+=1)!0!==e[r].frozen&&(es(e,r,t),!1===a&&ds(e,r,t),gs(e,r,t),fs(e,r,t,n),bs(e,r,t),Ps(e,r))},nl=function(e,t,n,a){for(let n=0;n<e.length;n+=1){let a=xs(e,n,t);as(e,n,t),a=a||Os(e,n,t),a=a||Ms(e,n,t)}for(let t=0;t<e.length;t+=1)!0!==e[t].frozen&&(Vs(e,t,n,a),Ls(e,t,n,a),_s(e,t,n),As(e,t,0,n),_i(e,t,0,n));!function(e,t){const n=t.methods.one.setTag,a=t.model.one._multiCache||{},r=e[0];if((\"Noun|Verb\"===r.switch||r.tags.has(\"Infinitive\"))&&e.length>=2){if(e.length<4&&!Ys[e[1].normal])return;if(!r.tags.has(\"PhrasalVerb\")&&a.hasOwnProperty(r.normal))return;(e[1].tags.has(\"Noun\")||e[1].tags.has(\"Determiner\"))&&(e.slice(1,3).some((e=>e.tags.has(\"Verb\")))&&!r.tags.has(\"#PhrasalVerb\")||n([r],\"Imperative\",t,null,\"3-[imperative]\"))}}(e,n)},al={Possessive:e=>{let t=e.machine||e.normal||e.text;return t=t.replace(/'s$/,\"\"),t},Plural:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.noun.toSingular(n,t.model)},Copula:()=>\"is\",PastTense:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,\"PastTense\")},Gerund:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,\"Gerund\")},PresentTense:(e,t)=>{const n=e.machine||e.normal||e.text;return e.tags.has(\"Infinitive\")?n:t.methods.two.transform.verb.toInfinitive(n,t.model,\"PresentTense\")},Comparative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromComparative(n,t.model)},Superlative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromSuperlative(n,t.model)},Adverb:(e,t)=>{const{fromAdverb:n}=t.methods.two.transform.adjective;return n(e.machine||e.normal||e.text)}},rl={Adverb:\"RB\",Comparative:\"JJR\",Superlative:\"JJS\",Adjective:\"JJ\",TO:\"Conjunction\",Modal:\"MD\",Auxiliary:\"MD\",Gerund:\"VBG\",PastTense:\"VBD\",Participle:\"VBN\",PresentTense:\"VBZ\",Infinitive:\"VB\",Particle:\"RP\",Verb:\"VB\",Pronoun:\"PRP\",Cardinal:\"CD\",Conjunction:\"CC\",Determiner:\"DT\",Preposition:\"IN\",QuestionWord:\"WP\",Expression:\"UH\",Possessive:\"POS\",ProperNoun:\"NNP\",Person:\"NNP\",Place:\"NNP\",Organization:\"NNP\",Singular:\"NN\",Plural:\"NNS\",Noun:\"NN\",There:\"EX\"};var ol={preTagger:function(e){const{methods:t,model:n,world:a}=e,r=e.docs;!function(e,t,n){e.forEach((e=>{!function(e,t,n,a){const r=a.methods.one.setTag;if(e.length>=3){const t=/:/;if(e[0].post.match(t)){const t=e[1];if(t.tags.has(\"Value\")||t.tags.has(\"Email\")||t.tags.has(\"PhoneNumber\"))return;r([e[0]],\"Expression\",a,null,\"2-punct-colon''\")}}}(e,0,0,n)}))}(r,0,a);const o=t.two.quickSplit(r);for(let e=0;e<o.length;e+=1){const t=o[e],r=el(t);tl(t,n,a,r),nl(t,n,a,r)}return o},root:function(e){const t=e.world,n=Object.keys(al);e.docs.forEach((e=>{for(let a=0;a<e.length;a+=1){const r=e[a];for(let e=0;e<n.length;e+=1)if(r.tags.has(n[e])){const a=(0,al[n[e]])(r,t);r.normal!==a&&(r.root=a);break}}}))},penn:function(e){e.compute(\"tagRank\"),e.docs.forEach((e=>{e.forEach((e=>{e.penn=function(e){if(e.tags.has(\"ProperNoun\")&&e.tags.has(\"Plural\"))return\"NNPS\";if(e.tags.has(\"Possessive\")&&e.tags.has(\"Pronoun\"))return\"PRP$\";if(\"there\"===e.normal)return\"EX\";if(\"to\"===e.normal)return\"TO\";const t=e.tagRank||[];for(let e=0;e<t.length;e+=1)if(rl.hasOwnProperty(t[e]))return rl[t[e]];return null}(e)}))}))}};const il=[\"Person\",\"Place\",\"Organization\"];var sl={Noun:{not:[\"Verb\",\"Adjective\",\"Adverb\",\"Value\",\"Determiner\"]},Singular:{is:\"Noun\",not:[\"Plural\",\"Uncountable\"]},ProperNoun:{is:\"Noun\"},Person:{is:\"Singular\",also:[\"ProperNoun\"],not:[\"Place\",\"Organization\",\"Date\"]},FirstName:{is:\"Person\"},MaleName:{is:\"FirstName\",not:[\"FemaleName\",\"LastName\"]},FemaleName:{is:\"FirstName\",not:[\"MaleName\",\"LastName\"]},LastName:{is:\"Person\",not:[\"FirstName\"]},Honorific:{is:\"Person\",not:[\"FirstName\",\"LastName\",\"Value\"]},Place:{is:\"Singular\",not:[\"Person\",\"Organization\"]},Country:{is:\"Place\",also:[\"ProperNoun\"],not:[\"City\"]},City:{is:\"Place\",also:[\"ProperNoun\"],not:[\"Country\"]},Region:{is:\"Place\",also:[\"ProperNoun\"]},Address:{},Organization:{is:\"ProperNoun\",not:[\"Person\",\"Place\"]},SportsTeam:{is:\"Organization\"},School:{is:\"Organization\"},Company:{is:\"Organization\"},Plural:{is:\"Noun\",not:[\"Singular\",\"Uncountable\"]},Uncountable:{is:\"Noun\"},Pronoun:{is:\"Noun\",not:il},Actor:{is:\"Noun\",not:[\"Place\",\"Organization\"]},Activity:{is:\"Noun\",not:[\"Person\",\"Place\"]},Unit:{is:\"Noun\",not:il},Demonym:{is:\"Noun\",also:[\"ProperNoun\"],not:il},Possessive:{is:\"Noun\"},Reflexive:{is:\"Pronoun\"}};var ll={Adjective:{not:[\"Noun\",\"Verb\",\"Adverb\",\"Value\"]},Comparable:{is:\"Adjective\"},Comparative:{is:\"Adjective\"},Superlative:{is:\"Adjective\",not:[\"Comparative\"]},NumberRange:{},Adverb:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Value\"]},Determiner:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"QuestionWord\",\"Conjunction\"]},Conjunction:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"Value\",\"QuestionWord\"]},Preposition:{not:[\"Noun\",\"Verb\",\"Adjective\",\"Adverb\",\"QuestionWord\",\"Determiner\"]},QuestionWord:{not:[\"Determiner\"]},Currency:{is:\"Noun\"},Expression:{not:[\"Noun\",\"Adjective\",\"Verb\",\"Adverb\"]},Abbreviation:{},Url:{not:[\"HashTag\",\"PhoneNumber\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"Email\",\"SlashedTerm\"]},PhoneNumber:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"Email\"]},HashTag:{},AtMention:{is:\"Noun\",not:[\"HashTag\",\"Email\"]},Emoji:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\"]},Emoticon:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\",\"SlashedTerm\"]},SlashedTerm:{not:[\"Emoticon\",\"Url\",\"Value\"]},Email:{not:[\"HashTag\",\"Verb\",\"Adjective\",\"Value\",\"AtMention\"]},Acronym:{not:[\"Plural\",\"RomanNumeral\",\"Pronoun\",\"Date\"]},Negative:{not:[\"Noun\",\"Adjective\",\"Value\",\"Expression\"]},Condition:{not:[\"Verb\",\"Adjective\",\"Noun\",\"Value\"]},There:{not:[\"Verb\",\"Adjective\",\"Noun\",\"Value\",\"Conjunction\",\"Preposition\"]},Prefix:{not:[\"Abbreviation\",\"Acronym\",\"ProperNoun\"]},Hyphenated:{}};const ul=Object.assign({},sl,{Verb:{not:[\"Noun\",\"Adjective\",\"Adverb\",\"Value\",\"Expression\"]},PresentTense:{is:\"Verb\",not:[\"PastTense\",\"FutureTense\"]},Infinitive:{is:\"PresentTense\",not:[\"Gerund\"]},Imperative:{is:\"Verb\",not:[\"PastTense\",\"Gerund\",\"Copula\"]},Gerund:{is:\"PresentTense\",not:[\"Copula\"]},PastTense:{is:\"Verb\",not:[\"PresentTense\",\"Gerund\",\"FutureTense\"]},FutureTense:{is:\"Verb\",not:[\"PresentTense\",\"PastTense\"]},Copula:{is:\"Verb\"},Modal:{is:\"Verb\",not:[\"Infinitive\"]},Participle:{is:\"PastTense\"},Auxiliary:{is:\"Verb\",not:[\"PastTense\",\"PresentTense\",\"Gerund\",\"Conjunction\"]},PhrasalVerb:{is:\"Verb\"},Particle:{is:\"PhrasalVerb\",not:[\"PastTense\",\"PresentTense\",\"Copula\",\"Gerund\"]},Passive:{is:\"Verb\"}},{Value:{not:[\"Verb\",\"Adjective\",\"Adverb\"]},Ordinal:{is:\"Value\",not:[\"Cardinal\"]},Cardinal:{is:\"Value\",not:[\"Ordinal\"]},Fraction:{is:\"Value\",not:[\"Noun\"]},Multiple:{is:\"TextValue\"},RomanNumeral:{is:\"Cardinal\",not:[\"TextValue\"]},TextValue:{is:\"Value\",not:[\"NumericValue\"]},NumericValue:{is:\"Value\",not:[\"TextValue\"]},Money:{is:\"Cardinal\"},Percent:{is:\"Value\"}},{Date:{not:[\"Verb\",\"Adverb\",\"Adjective\"]},Month:{is:\"Date\",also:[\"Noun\"],not:[\"Year\",\"WeekDay\",\"Time\"]},WeekDay:{is:\"Date\",also:[\"Noun\"]},Year:{is:\"Date\",not:[\"RomanNumeral\"]},FinancialQuarter:{is:\"Date\",not:\"Fraction\"},Holiday:{is:\"Date\",also:[\"Noun\"]},Season:{is:\"Date\"},Timezone:{is:\"Date\",also:[\"Noun\"],not:[\"ProperNoun\"]},Time:{is:\"Date\",not:[\"AtMention\"]},Duration:{is:\"Date\",also:[\"Noun\"]}},ll);var cl={compute:ol,methods:Ji,model:Xi,tags:ul,hooks:[\"preTagger\"]};const dl=/[,)\"';:\\-–—.…]/,hl=function(e,t){if(!e.found)return;const n=e.termList();for(let e=0;e<n.length-1;e++){const t=n[e];if(dl.test(t.post))return}n[0].implicit=n[0].normal,n[0].text+=t,n[0].normal+=t,n.slice(1).forEach((e=>{e.implicit=e.normal,e.text=\"\",e.normal=\"\"}));for(let e=0;e<n.length-1;e++)n[e].post=n[e].post.replace(/ /,\"\")},gl=function(){const e=this.not(\"@hasContraction\");let t=e.match(\"(we|they|you) are\");return hl(t,\"'re\"),t=e.match(\"(he|she|they|it|we|you) will\"),hl(t,\"'ll\"),t=e.match(\"(he|she|they|it|we) is\"),hl(t,\"'s\"),t=e.match(\"#Person is\"),hl(t,\"'s\"),t=e.match(\"#Person would\"),hl(t,\"'d\"),t=e.match(\"(is|was|had|would|should|could|do|does|have|has|can) not\"),hl(t,\"n't\"),t=e.match(\"(i|we|they) have\"),hl(t,\"'ve\"),t=e.match(\"(would|should|could) have\"),hl(t,\"'ve\"),t=e.match(\"i am\"),hl(t,\"'m\"),t=e.match(\"going to\"),this},ml=/^\\p{Lu}[\\p{Ll}'’]/u,pl=function(e,t,n){const[a,r]=t;n&&0!==n.length&&(n=n.map(((e,t)=>(e.implicit=e.text,e.machine=e.text,e.pre=\"\",e.post=\"\",e.text=\"\",e.normal=\"\",e.index=[a,r+t],e))),n[0]&&(n[0].pre=e[a][r].pre,n[n.length-1].post=e[a][r].post,n[0].text=e[a][r].text,n[0].normal=e[a][r].normal),e[a].splice(r,1,...n))},fl=/'/,bl=new Set([\"been\",\"become\"]),yl=new Set([\"what\",\"how\",\"when\",\"if\",\"too\"]),vl=new Set([\"too\",\"also\",\"enough\"]),wl=function(e,t){const n=e[t].normal.split(fl)[0];if(\"let\"===n)return[n,\"us\"];if(\"there\"===n){const a=e[t+1];if(a&&a.tags.has(\"Plural\"))return[n,\"are\"]}return\"has\"===((e,t)=>{for(let n=t+1;n<e.length;n+=1){const t=e[n];if(bl.has(t.normal))return\"has\";if(yl.has(t.normal))return\"is\";if(t.tags.has(\"Gerund\"))return\"is\";if(t.tags.has(\"Determiner\"))return\"is\";if(t.tags.has(\"Adjective\"))return\"is\";if(\"Adj|Past\"===t.switch&&e[n+1]){if(vl.has(e[n+1].normal))return\"is\";if(e[n+1].tags.has(\"Preposition\"))return\"is\"}if(t.tags.has(\"PastTense\"))return e[n+1]&&\"for\"===e[n+1].normal?\"is\":\"has\"}return\"is\"})(e,t)?[n,\"has\"]:[n,\"is\"]},kl=/'/,Pl=new Set([\"better\",\"done\",\"before\",\"it\",\"had\"]),Al=new Set([\"have\",\"be\"]),Cl=function(e,t){const n=e[t].normal.split(kl)[0];return\"how\"===n||\"what\"===n?[n,\"did\"]:\"had\"===((e,t)=>{for(let n=t+1;n<e.length;n+=1){const t=e[n];if(Pl.has(t.normal))return\"had\";if(Al.has(t.normal))return\"would\";if(t.tags.has(\"PastTense\")||\"Adj|Past\"===t.switch)return\"had\";if(t.tags.has(\"PresentTense\")||t.tags.has(\"Infinitive\"))return\"would\";if(t.tags.has(\"#Determiner\"))return\"had\";if(t.tags.has(\"Adjective\"))return\"would\"}return!1})(e,t)?[n,\"had\"]:[n,\"would\"]},jl={that:!0,there:!0,let:!0,here:!0,everywhere:!0},Nl={in:!0,by:!0,for:!0},Il=new Set([\"too\",\"also\",\"enough\",\"about\"]),Dl=new Set([\"is\",\"are\",\"did\",\"were\",\"could\",\"should\",\"must\",\"had\",\"have\"]),Hl=/'/,Gl=function(e,t,n,a){const r=t.update();r.document=[e];let o=n+a;n>0&&(n-=1),e[o]&&(o+=1),r.ptrs=[[0,n,o]],r.compute([\"freeze\",\"lexicon\",\"preTagger\",\"unfreeze\"]),function(e){e.forEach(((e,t)=>{e.index&&(e.index[1]=t)}))}(e)},Tl={d:(e,t)=>Cl(e,t),t:(e,t)=>function(e,t){if(\"ain't\"===e[t].normal||\"aint\"===e[t].normal){if(e[t+1]&&\"never\"===e[t+1].normal)return[\"have\"];const n=function(e,t){for(let n=t-1;n>=0;n-=1)if(e[n].tags.has(\"Noun\")||e[n].tags.has(\"Pronoun\")||e[n].tags.has(\"Plural\")||e[n].tags.has(\"Singular\"))return e[n];return null}(e,t);if(n){if(\"we\"===n.normal||\"they\"===n.normal)return[\"are\",\"not\"];if(\"i\"===n.normal)return[\"am\",\"not\"];if(n.tags&&n.tags.has(\"Plural\"))return[\"are\",\"not\"]}return[\"is\",\"not\"]}return[e[t].normal.replace(/n't/,\"\"),\"not\"]}(e,t),s:(e,t,n)=>((e,t)=>{const n=e[t];if(jl.hasOwnProperty(n.machine||n.normal))return!1;if(n.tags.has(\"Possessive\"))return!0;if(n.tags.has(\"QuestionWord\"))return!1;if(\"he's\"===n.normal||\"she's\"===n.normal)return!1;const a=e[t+1];if(!a)return!0;if(\"it's\"===n.normal)return!!a.tags.has(\"#Noun\");if(\"Noun|Gerund\"==a.switch){const a=e[t+2];return a?!!a.tags.has(\"Copula\")||(\"on\"===a.normal||a.normal,!1):!(!n.tags.has(\"Actor\")&&!n.tags.has(\"ProperNoun\"))}if(a.tags.has(\"Verb\"))return!!a.tags.has(\"Infinitive\")||!a.tags.has(\"Gerund\")&&!!a.tags.has(\"PresentTense\");if(\"Adj|Noun\"===a.switch){const n=e[t+2];if(!n)return!1;if(Dl.has(n.normal))return!0;if(Il.has(n.normal))return!1}if(a.tags.has(\"Noun\")){const e=a.machine||a.normal;return!(\"here\"===e||\"there\"===e||\"everywhere\"===e||a.tags.has(\"Possessive\")||a.tags.has(\"ProperNoun\")&&!n.tags.has(\"ProperNoun\"))}if(e[t-1]&&!0===Nl[e[t-1].normal])return!0;if(a.tags.has(\"Adjective\")){const n=e[t+2];if(!n)return!1;if(n.tags.has(\"Noun\")&&!n.tags.has(\"Pronoun\")){const e=a.normal;return\"above\"!==e&&\"below\"!==e&&\"behind\"!==e}return\"Noun|Verb\"===n.switch}return!!a.tags.has(\"Value\")})(e,t)?n.methods.one.setTag([e[t]],\"Possessive\",n,null,\"2-contraction\"):wl(e,t)},xl=function(e,t){const n=t.fromText(e.join(\" \"));return n.compute(\"id\"),n.docs[0]};var El={contractionTwo:e=>{const{world:t,document:n}=e;n.forEach(((a,r)=>{for(let o=a.length-1;o>=0;o-=1){if(a[o].implicit)continue;let i=null;!0===Hl.test(a[o].normal)&&(i=a[o].normal.split(Hl)[1]);let s=null;Tl.hasOwnProperty(i)&&(s=Tl[i](a,o,t)),s&&(s=xl(s,e),pl(n,[r,o],s),Gl(n[r],e,o,s.length))}}))}},Fl={compute:El,api:function(e){class Contractions extends e{constructor(e,t,n){super(e,t,n),this.viewType=\"Contraction\"}expand(){return this.docs.forEach((e=>{const t=ml.test(e[0].text);e.forEach(((t,n)=>{t.text=t.implicit||\"\",delete t.implicit,n<e.length-1&&\"\"===t.post&&(t.post+=\" \"),t.dirty=!0})),t&&(e[0].text=function(e=\"\"){return e.replace(/^ *[a-z\\u00C0-\\u00FF]/,(e=>e.toUpperCase()))}(e[0].text))})),this.compute(\"normal\"),this}}e.prototype.contractions=function(){const e=this.match(\"@hasContraction+\");return new Contractions(this.document,e.pointer)},e.prototype.contract=gl},hooks:[\"contractionTwo\"]};const Ol=\"(hard|fast|late|early|high|right|deep|close|direct)\";const zl=\"(i|we|they)\";const Vl=[].concat([{match:\"(got|were|was|is|are|am) (#PastTense|#Participle)\",tag:\"Passive\",reason:\"got-walked\"},{match:\"(was|were|is|are|am) being (#PastTense|#Participle)\",tag:\"Passive\",reason:\"was-being\"},{match:\"(had|have|has) been (#PastTense|#Participle)\",tag:\"Passive\",reason:\"had-been\"},{match:\"will be being? (#PastTense|#Participle)\",tag:\"Passive\",reason:\"will-be-cleaned\"},{match:\"#Noun [(#PastTense|#Participle)] by (the|a) #Noun\",group:0,tag:\"Passive\",reason:\"suffered-by\"}],[{match:\"[(all|both)] #Determiner #Noun\",group:0,tag:\"Noun\",reason:\"all-noun\"},{match:\"#Copula [(just|alone)]$\",group:0,tag:\"Adjective\",reason:\"not-adverb\"},{match:\"#Singular is #Adverb? [#PastTense$]\",group:0,tag:\"Adjective\",reason:\"is-filled\"},{match:\"[#PastTense] #Singular is\",group:0,tag:\"Adjective\",reason:\"smoked-poutine\"},{match:\"[#PastTense] #Plural are\",group:0,tag:\"Adjective\",reason:\"baked-onions\"},{match:\"well [#PastTense]\",group:0,tag:\"Adjective\",reason:\"well-made\"},{match:\"#Copula [fucked up?]\",group:0,tag:\"Adjective\",reason:\"swears-adjective\"},{match:\"#Singular (seems|appears) #Adverb? [#PastTense$]\",group:0,tag:\"Adjective\",reason:\"seems-filled\"},{match:\"#Copula #Adjective? [(out|in|through)]$\",group:0,tag:\"Adjective\",reason:\"still-out\"},{match:\"^[#Adjective] (the|your) #Noun\",group:0,notIf:\"(all|even)\",tag:\"Infinitive\",reason:\"shut-the\"},{match:\"the [said] #Noun\",group:0,tag:\"Adjective\",reason:\"the-said-card\"},{match:\"[#Hyphenated (#Hyphenated && #PastTense)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",notIf:\"#Adverb\",reason:\"faith-based\"},{match:\"[#Hyphenated (#Hyphenated && #Gerund)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",notIf:\"#Adverb\",reason:\"self-driving\"},{match:\"[#PastTense (#Hyphenated && #PhrasalVerb)] (#Noun|#Conjunction)\",group:0,tag:\"Adjective\",reason:\"dammed-up\"},{match:\"(#Hyphenated && #Value) fold\",tag:\"Adjective\",reason:\"two-fold\"},{match:\"must (#Hyphenated && #Infinitive)\",tag:\"Adjective\",reason:\"must-win\"},{match:\"(#Hyphenated && #Infinitive) #Hyphenated\",tag:\"Adjective\",notIf:\"#PhrasalVerb\",reason:\"vacuum-sealed\"},{match:\"too much\",tag:\"Adverb Adjective\",reason:\"bit-4\"},{match:\"a bit much\",tag:\"Determiner Adverb Adjective\",reason:\"bit-3\"},{match:\"[(un|contra|extra|inter|intra|macro|micro|mid|mis|mono|multi|pre|sub|tri|ex)] #Adjective\",group:0,tag:[\"Adjective\",\"Prefix\"],reason:\"un-skilled\"}],[{match:\"#Adverb [#Adverb] (and|or|then)\",group:0,tag:\"Adjective\",reason:\"kinda-sparkly-and\"},{match:\"[(dark|bright|flat|light|soft|pale|dead|dim|faux|little|wee|sheer|most|near|good|extra|all)] #Adjective\",group:0,tag:\"Adverb\",reason:\"dark-green\"},{match:\"#Copula [far too] #Adjective\",group:0,tag:\"Adverb\",reason:\"far-too\"},{match:\"#Copula [still] (in|#Gerund|#Adjective)\",group:0,tag:\"Adverb\",reason:\"was-still-walking\"},{match:`#Plural ${Ol}`,tag:\"#PresentTense #Adverb\",reason:\"studies-hard\"},{match:`#Verb [${Ol}] !#Noun?`,group:0,notIf:\"(#Copula|get|got|getting|become|became|becoming|feel|feels|feeling|#Determiner|#Preposition)\",tag:\"Adverb\",reason:\"shops-direct\"},{match:\"[#Plural] a lot\",tag:\"PresentTense\",reason:\"studies-a-lot\"}],[{match:\"as [#Gerund] as\",group:0,tag:\"Adjective\",reason:\"as-gerund-as\"},{match:\"more [#Gerund] than\",group:0,tag:\"Adjective\",reason:\"more-gerund-than\"},{match:\"(so|very|extremely) [#Gerund]\",group:0,tag:\"Adjective\",reason:\"so-gerund\"},{match:\"(found|found) it #Adverb? [#Gerund]\",group:0,tag:\"Adjective\",reason:\"found-it-gerund\"},{match:\"a (little|bit|wee) bit? [#Gerund]\",group:0,tag:\"Adjective\",reason:\"a-bit-gerund\"},{match:\"#Gerund [#Gerund]\",group:0,tag:\"Adjective\",notIf:\"(impersonating|practicing|considering|assuming)\",reason:\"looking-annoying\"},{match:\"(looked|look|looks) #Adverb? [%Adj|Gerund%]\",group:0,tag:\"Adjective\",notIf:\"(impersonating|practicing|considering|assuming)\",reason:\"looked-amazing\"},{match:\"[%Adj|Gerund%] #Determiner\",group:0,tag:\"Gerund\",reason:\"developing-a\"},{match:\"#Possessive [%Adj|Gerund%] #Noun\",group:0,tag:\"Adjective\",reason:\"leading-manufacturer\"},{match:\"%Noun|Gerund% %Adj|Gerund%\",tag:\"Gerund #Adjective\",reason:\"meaning-alluring\"},{match:\"(face|embrace|reveal|stop|start|resume) %Adj|Gerund%\",tag:\"#PresentTense #Adjective\",reason:\"face-shocking\"},{match:\"(are|were) [%Adj|Gerund%] #Plural\",group:0,tag:\"Adjective\",reason:\"are-enduring-symbols\"}],[{match:\"#Determiner [#Adjective] #Copula\",group:0,tag:\"Noun\",reason:\"the-adj-is\"},{match:\"#Adjective [#Adjective] #Copula\",group:0,tag:\"Noun\",reason:\"adj-adj-is\"},{match:\"(his|its) [%Adj|Noun%]\",group:0,tag:\"Noun\",notIf:\"#Hyphenated\",reason:\"his-fine\"},{match:\"#Copula #Adverb? [all]\",group:0,tag:\"Noun\",reason:\"is-all\"},{match:\"(have|had) [#Adjective] #Preposition .\",group:0,tag:\"Noun\",reason:\"have-fun\"},{match:\"#Gerund (giant|capital|center|zone|application)\",tag:\"Noun\",reason:\"brewing-giant\"},{match:\"#Preposition (a|an) [#Adjective]$\",group:0,tag:\"Noun\",reason:\"an-instant\"},{match:\"no [#Adjective] #Modal\",group:0,tag:\"Noun\",reason:\"no-golden\"},{match:\"[brand #Gerund?] new\",group:0,tag:\"Adverb\",reason:\"brand-new\"},{match:\"(#Determiner|#Comparative|new|different) [kind]\",group:0,tag:\"Noun\",reason:\"some-kind\"},{match:\"#Possessive [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",reason:\"her-favourite\"},{match:\"must && #Hyphenated .\",tag:\"Adjective\",reason:\"must-win\"},{match:\"#Determiner [#Adjective]$\",tag:\"Noun\",notIf:\"(this|that|#Comparative|#Superlative)\",reason:\"the-south\"},{match:\"(#Noun && #Hyphenated) (#Adjective && #Hyphenated)\",tag:\"Adjective\",notIf:\"(this|that|#Comparative|#Superlative)\",reason:\"company-wide\"},{match:\"#Determiner [#Adjective] (#Copula|#Determiner)\",notIf:\"(#Comparative|#Superlative)\",group:0,tag:\"Noun\",reason:\"the-poor\"},{match:\"[%Adj|Noun%] #Noun\",notIf:\"(#Pronoun|#ProperNoun)\",group:0,tag:\"Adjective\",reason:\"stable-foundations\"}],[{match:\"[still] #Adjective\",group:0,tag:\"Adverb\",reason:\"still-advb\"},{match:\"[still] #Verb\",group:0,tag:\"Adverb\",reason:\"still-verb\"},{match:\"[so] #Adjective\",group:0,tag:\"Adverb\",reason:\"so-adv\"},{match:\"[way] #Comparative\",group:0,tag:\"Adverb\",reason:\"way-adj\"},{match:\"[way] #Adverb #Adjective\",group:0,tag:\"Adverb\",reason:\"way-too-adj\"},{match:\"[all] #Verb\",group:0,tag:\"Adverb\",reason:\"all-verb\"},{match:\"#Verb  [like]\",group:0,notIf:\"(#Modal|#PhrasalVerb)\",tag:\"Adverb\",reason:\"verb-like\"},{match:\"(barely|hardly) even\",tag:\"Adverb\",reason:\"barely-even\"},{match:\"[even] #Verb\",group:0,tag:\"Adverb\",reason:\"even-walk\"},{match:\"[even] #Comparative\",group:0,tag:\"Adverb\",reason:\"even-worse\"},{match:\"[even] (#Determiner|#Possessive)\",group:0,tag:\"#Adverb\",reason:\"even-the\"},{match:\"even left\",tag:\"#Adverb #Verb\",reason:\"even-left\"},{match:\"[way] #Adjective\",group:0,tag:\"#Adverb\",reason:\"way-over\"},{match:\"#PresentTense [(hard|quick|bright|slow|fast|backwards|forwards)]\",notIf:\"#Copula\",group:0,tag:\"Adverb\",reason:\"lazy-ly\"},{match:\"[much] #Adjective\",group:0,tag:\"Adverb\",reason:\"bit-1\"},{match:\"#Copula [#Adverb]$\",group:0,tag:\"Adjective\",reason:\"is-well\"},{match:\"a [(little|bit|wee) bit?] #Adjective\",group:0,tag:\"Adverb\",reason:\"a-bit-cold\"},{match:\"[(super|pretty)] #Adjective\",group:0,tag:\"Adverb\",reason:\"super-strong\"},{match:\"(become|fall|grow) #Adverb? [#PastTense]\",group:0,tag:\"Adjective\",reason:\"overly-weakened\"},{match:\"(a|an) #Adverb [#Participle] #Noun\",group:0,tag:\"Adjective\",reason:\"completely-beaten\"},{match:\"#Determiner #Adverb? [close]\",group:0,tag:\"Adjective\",reason:\"a-close\"},{match:\"#Gerund #Adverb? [close]\",group:0,tag:\"Adverb\",notIf:\"(getting|becoming|feeling)\",reason:\"being-close\"},{match:\"(the|those|these|a|an) [#Participle] #Noun\",group:0,tag:\"Adjective\",reason:\"blown-motor\"},{match:\"(#PresentTense|#PastTense) [back]\",group:0,tag:\"Adverb\",notIf:\"(#PhrasalVerb|#Copula)\",reason:\"charge-back\"},{match:\"#Verb [around]\",group:0,tag:\"Adverb\",notIf:\"#PhrasalVerb\",reason:\"send-around\"},{match:\"[later] #PresentTense\",group:0,tag:\"Adverb\",reason:\"later-say\"},{match:\"#Determiner [well] !#PastTense?\",group:0,tag:\"Noun\",reason:\"the-well\"},{match:\"#Adjective [enough]\",group:0,tag:\"Adverb\",reason:\"high-enough\"}],[{match:\"[sun] the #Ordinal\",tag:\"WeekDay\",reason:\"sun-the-5th\"},{match:\"[sun] #Date\",group:0,tag:\"WeekDay\",reason:\"sun-feb\"},{match:\"#Date (on|this|next|last|during)? [sun]\",group:0,tag:\"WeekDay\",reason:\"1pm-sun\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [sat]\",group:0,tag:\"WeekDay\",reason:\"sat\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [wed]\",group:0,tag:\"WeekDay\",reason:\"wed\"},{match:\"(in|by|before|during|on|until|after|of|within|all) [march]\",group:0,tag:\"Month\",reason:\"march\"},{match:\"[sat] #Date\",group:0,tag:\"WeekDay\",reason:\"sat-feb\"},{match:\"#Preposition [(march|may)]\",group:0,tag:\"Month\",reason:\"in-month\"},{match:\"(this|next|last) (march|may) !#Infinitive?\",tag:\"#Date #Month\",reason:\"this-month\"},{match:\"(march|may) the? #Value\",tag:\"#Month #Date #Date\",reason:\"march-5th\"},{match:\"#Value of? (march|may)\",tag:\"#Date #Date #Month\",reason:\"5th-of-march\"},{match:\"[(march|may)] .? #Date\",group:0,tag:\"Month\",reason:\"march-and-feb\"},{match:\"#Date .? [(march|may)]\",group:0,tag:\"Month\",reason:\"feb-and-march\"},{match:\"#Adverb [(march|may)]\",group:0,tag:\"Verb\",reason:\"quickly-march\"},{match:\"[(march|may)] #Adverb\",group:0,tag:\"Verb\",reason:\"march-quickly\"},{match:\"#Value (am|pm)\",tag:\"Time\",reason:\"2-am\"}],[{match:\"#Holiday (day|eve)\",tag:\"Holiday\",reason:\"holiday-day\"},{match:\"#Value of #Month\",tag:\"Date\",reason:\"value-of-month\"},{match:\"#Cardinal #Month\",tag:\"Date\",reason:\"cardinal-month\"},{match:\"#Month #Value to #Value\",tag:\"Date\",reason:\"value-to-value\"},{match:\"#Month the #Value\",tag:\"Date\",reason:\"month-the-value\"},{match:\"(#WeekDay|#Month) #Value\",tag:\"Date\",reason:\"date-value\"},{match:\"#Value (#WeekDay|#Month)\",tag:\"Date\",reason:\"value-date\"},{match:\"(#TextValue && #Date) #TextValue\",tag:\"Date\",reason:\"textvalue-date\"},{match:\"#Month #NumberRange\",tag:\"Date\",reason:\"aug 20-21\"},{match:\"#WeekDay #Month #Ordinal\",tag:\"Date\",reason:\"week mm-dd\"},{match:\"#Month #Ordinal #Cardinal\",tag:\"Date\",reason:\"mm-dd-yyy\"},{match:\"(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time\",tag:\"Timezone\",reason:\"std-time\"},{match:\"(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time\",tag:\"Timezone\",reason:\"eastern-time\"},{match:\"#Time [(eastern|mountain|pacific|central|est|pst|gmt)]\",group:0,tag:\"Timezone\",reason:\"5pm-central\"},{match:\"(central|western|eastern) european time\",tag:\"Timezone\",reason:\"cet\"}],[{match:\"(the|any) [more]\",group:0,tag:\"Singular\",reason:\"more-noun\"},{match:\"[more] #Noun\",group:0,tag:\"Adjective\",reason:\"more-noun\"},{match:\"(right|rights) of .\",tag:\"Noun\",reason:\"right-of\"},{match:\"a [bit]\",group:0,tag:\"Singular\",reason:\"bit-2\"},{match:\"a [must]\",group:0,tag:\"Singular\",reason:\"must-2\"},{match:\"(we|us) [all]\",group:0,tag:\"Noun\",reason:\"we all\"},{match:\"due to [#Verb]\",group:0,tag:\"Noun\",reason:\"due-to\"},{match:\"some [#Verb] #Plural\",group:0,tag:\"Noun\",reason:\"determiner6\"},{match:\"#Possessive #Ordinal [#PastTense]\",group:0,tag:\"Noun\",reason:\"first-thought\"},{match:\"(the|this|those|these) #Adjective [%Verb|Noun%]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"the-adj-verb\"},{match:\"(the|this|those|these) #Adverb #Adjective [#Verb]\",group:0,tag:\"Noun\",reason:\"determiner4\"},{match:\"the [#Verb] #Preposition .\",group:0,tag:\"Noun\",reason:\"determiner1\"},{match:\"(a|an|the) [#Verb] of\",group:0,tag:\"Noun\",reason:\"the-verb-of\"},{match:\"#Determiner #Noun of [#Verb]\",group:0,tag:\"Noun\",notIf:\"#Gerund\",reason:\"noun-of-noun\"},{match:\"#PastTense #Preposition [#PresentTense]\",group:0,notIf:\"#Gerund\",tag:\"Noun\",reason:\"ended-in-ruins\"},{match:\"#Conjunction [u]\",group:0,tag:\"Pronoun\",reason:\"u-pronoun-2\"},{match:\"[u] #Verb\",group:0,tag:\"Pronoun\",reason:\"u-pronoun-1\"},{match:\"#Determiner [(western|eastern|northern|southern|central)] #Noun\",group:0,tag:\"Noun\",reason:\"western-line\"},{match:\"(#Singular && @hasHyphen) #PresentTense\",tag:\"Noun\",reason:\"hyphen-verb\"},{match:\"is no [#Verb]\",group:0,tag:\"Noun\",reason:\"is-no-verb\"},{match:\"do [so]\",group:0,tag:\"Noun\",reason:\"so-noun\"},{match:\"#Determiner [(shit|damn|hell)]\",group:0,tag:\"Noun\",reason:\"swears-noun\"},{match:\"to [(shit|hell)]\",group:0,tag:\"Noun\",reason:\"to-swears\"},{match:\"(the|these) [#Singular] (were|are)\",group:0,tag:\"Plural\",reason:\"singular-were\"},{match:\"a #Noun+ or #Adverb+? [#Verb]\",group:0,tag:\"Noun\",reason:\"noun-or-noun\"},{match:\"(the|those|these|a|an) #Adjective? [#PresentTense #Particle?]\",group:0,tag:\"Noun\",notIf:\"(seem|appear|include|#Gerund|#Copula)\",reason:\"det-inf\"},{match:\"#Noun #Actor\",tag:\"Actor\",notIf:\"(#Person|#Pronoun)\",reason:\"thing-doer\"},{match:\"#Gerund #Actor\",tag:\"Actor\",reason:\"gerund-doer\"},{match:\"co #Singular\",tag:\"Actor\",reason:\"co-noun\"},{match:\"[#Noun+] #Actor\",group:0,tag:\"Actor\",notIf:\"(#Honorific|#Pronoun|#Possessive)\",reason:\"air-traffic-controller\"},{match:\"(urban|cardiac|cardiovascular|respiratory|medical|clinical|visual|graphic|creative|dental|exotic|fine|certified|registered|technical|virtual|professional|amateur|junior|senior|special|pharmaceutical|theoretical)+ #Noun? #Actor\",tag:\"Actor\",reason:\"fine-artist\"},{match:\"#Noun+ (coach|chef|king|engineer|fellow|personality|boy|girl|man|woman|master)\",tag:\"Actor\",reason:\"dance-coach\"},{match:\"chief . officer\",tag:\"Actor\",reason:\"chief-x-officer\"},{match:\"chief of #Noun+\",tag:\"Actor\",reason:\"chief-of-police\"},{match:\"senior? vice? president of #Noun+\",tag:\"Actor\",reason:\"president-of\"},{match:\"#Determiner [sun]\",group:0,tag:\"Singular\",reason:\"the-sun\"},{match:\"#Verb (a|an) [#Value]$\",group:0,tag:\"Singular\",reason:\"did-a-value\"},{match:\"the [(can|will|may)]\",group:0,tag:\"Singular\",reason:\"the can\"},{match:\"#FirstName #Acronym? (#Possessive && #LastName)\",tag:\"Possessive\",reason:\"name-poss\"},{match:\"#Organization+ #Possessive\",tag:\"Possessive\",reason:\"org-possessive\"},{match:\"#Place+ #Possessive\",tag:\"Possessive\",reason:\"place-possessive\"},{match:\"#Possessive #PresentTense #Particle?\",notIf:\"(#Gerund|her)\",tag:\"Noun\",reason:\"possessive-verb\"},{match:\"(my|our|their|her|his|its) [(#Plural && #Actor)] #Noun\",tag:\"Possessive\",reason:\"my-dads\"},{match:\"#Value of a [second]\",group:0,unTag:\"Value\",tag:\"Singular\",reason:\"10th-of-a-second\"},{match:\"#Value [seconds]\",group:0,unTag:\"Value\",tag:\"Plural\",reason:\"10-seconds\"},{match:\"in [#Infinitive]\",group:0,tag:\"Singular\",reason:\"in-age\"},{match:\"a [#Adjective] #Preposition\",group:0,tag:\"Noun\",reason:\"a-minor-in\"},{match:\"#Determiner [#Singular] said\",group:0,tag:\"Actor\",reason:\"the-actor-said\"},{match:\"#Determiner #Noun [(feel|sense|process|rush|side|bomb|bully|challenge|cover|crush|dump|exchange|flow|function|issue|lecture|limit|march|process)] !(#Preposition|to|#Adverb)?\",group:0,tag:\"Noun\",reason:\"the-noun-sense\"},{match:\"[#PresentTense] (of|by|for) (a|an|the) #Noun #Copula\",group:0,tag:\"Plural\",reason:\"photographs-of\"},{match:\"#Infinitive and [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"fight and win\"},{match:\"#Noun and [#Verb] and #Noun\",group:0,tag:\"Noun\",reason:\"peace-and-flowers\"},{match:\"the #Cardinal [%Adj|Noun%]\",group:0,tag:\"Noun\",reason:\"the-1992-classic\"},{match:\"#Copula the [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",reason:\"the-premier-university\"},{match:\"i #Verb [me] #Noun\",group:0,tag:\"Possessive\",reason:\"scottish-me\"},{match:\"[#PresentTense] (music|class|lesson|night|party|festival|league|ceremony)\",group:0,tag:\"Noun\",reason:\"dance-music\"},{match:\"[wit] (me|it)\",group:0,tag:\"Presposition\",reason:\"wit-me\"},{match:\"#PastTense #Possessive [#Verb]\",group:0,tag:\"Noun\",notIf:\"(saw|made)\",reason:\"left-her-boots\"},{match:\"#Value [%Plural|Verb%]\",group:0,tag:\"Plural\",notIf:\"(one|1|a|an)\",reason:\"35-signs\"},{match:\"had [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Gerund|come|become)\",reason:\"had-time\"},{match:\"%Adj|Noun% %Noun|Verb%\",tag:\"#Adjective #Noun\",notIf:\"#ProperNoun #Noun\",reason:\"instant-access\"},{match:\"#Determiner [%Adj|Noun%] #Conjunction\",group:0,tag:\"Noun\",reason:\"a-rep-to\"},{match:\"#Adjective #Noun [%Plural|Verb%]$\",group:0,tag:\"Plural\",notIf:\"#Pronoun\",reason:\"near-death-experiences\"},{match:\"#Possessive #Noun [%Plural|Verb%]$\",group:0,tag:\"Plural\",reason:\"your-guild-colors\"}],[{match:\"(this|that|the|a|an) [#Gerund #Infinitive]\",group:0,tag:\"Singular\",reason:\"the-planning-process\"},{match:\"(that|the) [#Gerund #PresentTense]\",group:0,ifNo:\"#Copula\",tag:\"Plural\",reason:\"the-paving-stones\"},{match:\"#Determiner [#Gerund] #Noun\",group:0,tag:\"Adjective\",reason:\"the-gerund-noun\"},{match:\"#Pronoun #Infinitive [#Gerund] #PresentTense\",group:0,tag:\"Noun\",reason:\"tipping-sucks\"},{match:\"#Adjective [#Gerund]\",group:0,tag:\"Noun\",notIf:\"(still|even|just)\",reason:\"early-warning\"},{match:\"[#Gerund] #Adverb? not? #Copula\",group:0,tag:\"Activity\",reason:\"gerund-copula\"},{match:\"#Copula [(#Gerund|#Activity)] #Copula\",group:0,tag:\"Gerund\",reason:\"are-doing-is\"},{match:\"[#Gerund] #Modal\",group:0,tag:\"Activity\",reason:\"gerund-modal\"},{match:\"#Singular for [%Noun|Gerund%]\",group:0,tag:\"Gerund\",reason:\"noun-for-gerund\"},{match:\"#Comparative (for|at) [%Noun|Gerund%]\",group:0,tag:\"Gerund\",reason:\"better-for-gerund\"},{match:\"#PresentTense the [#Gerund]\",group:0,tag:\"Noun\",reason:\"keep-the-touching\"}],[{match:\"#Infinitive (this|that|the) [#Infinitive]\",group:0,tag:\"Noun\",reason:\"do-this-dance\"},{match:\"#Gerund #Determiner [#Infinitive]\",group:0,tag:\"Noun\",reason:\"running-a-show\"},{match:\"#Determiner (only|further|just|more|backward) [#Infinitive]\",group:0,tag:\"Noun\",reason:\"the-only-reason\"},{match:\"(the|this|a|an) [#Infinitive] #Adverb? #Verb\",group:0,tag:\"Noun\",reason:\"determiner5\"},{match:\"#Determiner #Adjective #Adjective? [#Infinitive]\",group:0,tag:\"Noun\",reason:\"a-nice-inf\"},{match:\"#Determiner #Demonym [#PresentTense]\",group:0,tag:\"Noun\",reason:\"mexican-train\"},{match:\"#Adjective #Noun+ [#Infinitive] #Copula\",group:0,tag:\"Noun\",reason:\"career-move\"},{match:\"at some [#Infinitive]\",group:0,tag:\"Noun\",reason:\"at-some-inf\"},{match:\"(go|goes|went) to [#Infinitive]\",group:0,tag:\"Noun\",reason:\"goes-to-verb\"},{match:\"(a|an) #Adjective? #Noun [#Infinitive] (#Preposition|#Noun)\",group:0,notIf:\"from\",tag:\"Noun\",reason:\"a-noun-inf\"},{match:\"(a|an) #Noun [#Infinitive]$\",group:0,tag:\"Noun\",reason:\"a-noun-inf2\"},{match:\"#Gerund #Adjective? for [#Infinitive]\",group:0,tag:\"Noun\",reason:\"running-for\"},{match:\"about [#Infinitive]\",group:0,tag:\"Singular\",reason:\"about-love\"},{match:\"#Plural on [#Infinitive]\",group:0,tag:\"Noun\",reason:\"on-stage\"},{match:\"any [#Infinitive]\",group:0,tag:\"Noun\",reason:\"any-charge\"},{match:\"no [#Infinitive]\",group:0,tag:\"Noun\",reason:\"no-doubt\"},{match:\"number of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"number-of-x\"},{match:\"(taught|teaches|learns|learned) [#PresentTense]\",group:0,tag:\"Noun\",reason:\"teaches-x\"},{match:\"(try|use|attempt|build|make) [#Verb #Particle?]\",notIf:\"(#Copula|#Noun|sure|fun|up)\",group:0,tag:\"Noun\",reason:\"do-verb\"},{match:\"^[#Infinitive] (is|was)\",group:0,tag:\"Noun\",reason:\"checkmate-is\"},{match:\"#Infinitive much [#Infinitive]\",group:0,tag:\"Noun\",reason:\"get-much\"},{match:\"[cause] #Pronoun #Verb\",group:0,tag:\"Conjunction\",reason:\"cause-cuz\"},{match:\"the #Singular [#Infinitive] #Noun\",group:0,tag:\"Noun\",notIf:\"#Pronoun\",reason:\"cardio-dance\"},{match:\"#Determiner #Modal [#Noun]\",group:0,tag:\"PresentTense\",reason:\"should-smoke\"},{match:\"this [#Plural]\",group:0,tag:\"PresentTense\",notIf:\"(#Preposition|#Date)\",reason:\"this-verbs\"},{match:\"#Noun that [#Plural]\",group:0,tag:\"PresentTense\",notIf:\"(#Preposition|#Pronoun|way)\",reason:\"voice-that-rocks\"},{match:\"that [#Plural] to\",group:0,tag:\"PresentTense\",notIf:\"#Preposition\",reason:\"that-leads-to\"},{match:\"(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)\",group:0,tag:\"Infinitive\",reason:\"let-him-glue\"},{match:\"#Verb (all|every|each|most|some|no) [#PresentTense]\",notIf:\"#Modal\",group:0,tag:\"Noun\",reason:\"all-presentTense\"},{match:\"(had|have|#PastTense) #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"better\",reason:\"adj-presentTense\"},{match:\"#Value #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"one-big-reason\"},{match:\"#PastTense #Adjective+ [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Copula|better)\",reason:\"won-wide-support\"},{match:\"(many|few|several|couple) [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"many-poses\"},{match:\"#Determiner #Adverb #Adjective [%Noun|Verb%]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"very-big-dream\"},{match:\"from #Noun to [%Noun|Verb%]\",group:0,tag:\"Noun\",reason:\"start-to-finish\"},{match:\"(for|with|of) #Noun (and|or|not) [%Noun|Verb%]\",group:0,tag:\"Noun\",notIf:\"#Pronoun\",reason:\"for-food-and-gas\"},{match:\"#Adjective #Adjective [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"adorable-little-store\"},{match:\"#Gerund #Adverb? #Comparative [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"higher-costs\"},{match:\"(#Noun && @hasComma) #Noun (and|or) [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"noun-list\"},{match:\"(many|any|some|several) [#PresentTense] for\",group:0,tag:\"Noun\",reason:\"any-verbs-for\"},{match:\"to #PresentTense #Noun [#PresentTense] #Preposition\",group:0,tag:\"Noun\",reason:\"gas-exchange\"},{match:\"#PastTense (until|as|through|without) [#PresentTense]\",group:0,tag:\"Noun\",reason:\"waited-until-release\"},{match:\"#Gerund like #Adjective? [#PresentTense]\",group:0,tag:\"Plural\",reason:\"like-hot-cakes\"},{match:\"some #Adjective [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-reason\"},{match:\"for some [#PresentTense]\",group:0,tag:\"Noun\",reason:\"for-some-reason\"},{match:\"(same|some|the|that|a) kind of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-kind-of\"},{match:\"(same|some|the|that|a) type of [#PresentTense]\",group:0,tag:\"Noun\",reason:\"some-type-of\"},{match:\"#Gerund #Adjective #Preposition [#PresentTense]\",group:0,tag:\"Noun\",reason:\"doing-better-for-x\"},{match:\"(get|got|have) #Comparative [#PresentTense]\",group:0,tag:\"Noun\",reason:\"got-better-aim\"},{match:\"whose [#PresentTense] #Copula\",group:0,tag:\"Noun\",reason:\"whos-name-was\"},{match:\"#PhrasalVerb #Particle #Preposition [#PresentTense]\",group:0,tag:\"Noun\",reason:\"given-up-on-x\"},{match:\"there (are|were) #Adjective? [#PresentTense]\",group:0,tag:\"Plural\",reason:\"there-are\"},{match:\"#Value [#PresentTense] of\",group:0,notIf:\"(one|1|#Copula|#Infinitive)\",tag:\"Plural\",reason:\"2-trains\"},{match:\"[#PresentTense] (are|were) #Adjective\",group:0,tag:\"Plural\",reason:\"compromises-are-possible\"},{match:\"^[(hope|guess|thought|think)] #Pronoun #Verb\",group:0,tag:\"Infinitive\",reason:\"suppose-i\"},{match:\"#Possessive #Adjective [#Verb]\",group:0,tag:\"Noun\",notIf:\"#Copula\",reason:\"our-full-support\"},{match:\"[(tastes|smells)] #Adverb? #Adjective\",group:0,tag:\"PresentTense\",reason:\"tastes-good\"},{match:\"#Copula #Gerund [#PresentTense] !by?\",group:0,tag:\"Noun\",notIf:\"going\",reason:\"ignoring-commute\"},{match:\"#Determiner #Adjective? [(shed|thought|rose|bid|saw|spelt)]\",group:0,tag:\"Noun\",reason:\"noun-past\"},{match:\"how to [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"how-to-noun\"},{match:\"which [%Noun|Verb%] #Noun\",group:0,tag:\"Infinitive\",reason:\"which-boost-it\"},{match:\"#Gerund [%Plural|Verb%]\",group:0,tag:\"Plural\",reason:\"asking-questions\"},{match:\"(ready|available|difficult|hard|easy|made|attempt|try) to [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"ready-to-noun\"},{match:\"(bring|went|go|drive|run|bike) to [%Noun|Verb%]\",group:0,tag:\"Noun\",reason:\"bring-to-noun\"},{match:\"#Modal #Noun [%Noun|Verb%]\",group:0,tag:\"Infinitive\",reason:\"would-you-look\"},{match:\"#Copula just [#Infinitive]\",group:0,tag:\"Noun\",reason:\"is-just-spam\"},{match:\"^%Noun|Verb% %Plural|Verb%\",tag:\"Imperative #Plural\",reason:\"request-copies\"},{match:\"#Adjective #Plural and [%Plural|Verb%]\",group:0,tag:\"#Plural\",reason:\"pickles-and-drinks\"},{match:\"#Determiner #Year [#Verb]\",group:0,tag:\"Noun\",reason:\"the-1968-film\"},{match:\"#Determiner [#PhrasalVerb #Particle]\",group:0,tag:\"Noun\",reason:\"the-break-up\"},{match:\"#Determiner [%Adj|Noun%] #Noun\",group:0,tag:\"Adjective\",notIf:\"(#Pronoun|#Possessive|#ProperNoun)\",reason:\"the-individual-goals\"},{match:\"[%Noun|Verb%] or #Infinitive\",group:0,tag:\"Infinitive\",reason:\"work-or-prepare\"},{match:\"to #Infinitive [#PresentTense]\",group:0,tag:\"Noun\",notIf:\"(#Gerund|#Copula|help)\",reason:\"to-give-thanks\"},{match:\"[#Noun] me\",group:0,tag:\"Verb\",reason:\"kills-me\"},{match:\"%Plural|Verb% %Plural|Verb%\",tag:\"#PresentTense #Plural\",reason:\"removes-wrinkles\"}],[{match:\"#Money and #Money #Currency?\",tag:\"Money\",reason:\"money-and-money\"},{match:\"#Value #Currency [and] #Value (cents|ore|centavos|sens)\",group:0,tag:\"money\",reason:\"and-5-cents\"},{match:\"#Value (mark|rand|won|rub|ore)\",tag:\"#Money #Currency\",reason:\"4-mark\"},{match:\"a pound\",tag:\"#Money #Unit\",reason:\"a-pound\"},{match:\"#Value (pound|pounds)\",tag:\"#Money #Unit\",reason:\"4-pounds\"}],[{match:\"[(half|quarter)] of? (a|an)\",group:0,tag:\"Fraction\",reason:\"millionth\"},{match:\"#Adverb [half]\",group:0,tag:\"Fraction\",reason:\"nearly-half\"},{match:\"[half] the\",group:0,tag:\"Fraction\",reason:\"half-the\"},{match:\"#Cardinal and a half\",tag:\"Fraction\",reason:\"and-a-half\"},{match:\"#Value (halves|halfs|quarters)\",tag:\"Fraction\",reason:\"two-halves\"},{match:\"a #Ordinal\",tag:\"Fraction\",reason:\"a-quarter\"},{match:\"[#Cardinal+] (#Fraction && /s$/)\",tag:\"Fraction\",reason:\"seven-fifths\"},{match:\"[#Cardinal+ #Ordinal] of .\",group:0,tag:\"Fraction\",reason:\"ordinal-of\"},{match:\"[(#NumericValue && #Ordinal)] of .\",group:0,tag:\"Fraction\",reason:\"num-ordinal-of\"},{match:\"(a|one) #Cardinal?+ #Ordinal\",tag:\"Fraction\",reason:\"a-ordinal\"},{match:\"#Cardinal+ out? of every? #Cardinal\",tag:\"Fraction\",reason:\"out-of\"}],[{match:\"#Cardinal [second]\",tag:\"Unit\",reason:\"one-second\"},{match:\"!once? [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)\",group:0,tag:\"Value\",reason:\"a-is-one\"},{match:\"1 #Value #PhoneNumber\",tag:\"PhoneNumber\",reason:\"1-800-Value\"},{match:\"#NumericValue #PhoneNumber\",tag:\"PhoneNumber\",reason:\"(800) PhoneNumber\"},{match:\"#Demonym #Currency\",tag:\"Currency\",reason:\"demonym-currency\"},{match:\"#Value [(buck|bucks|grand)]\",group:0,tag:\"Currency\",reason:\"value-bucks\"},{match:\"[#Value+] #Currency\",group:0,tag:\"Money\",reason:\"15 usd\"},{match:\"[second] #Noun\",group:0,tag:\"Ordinal\",reason:\"second-noun\"},{match:\"#Value+ [#Currency]\",group:0,tag:\"Unit\",reason:\"5-yan\"},{match:\"#Value [(foot|feet)]\",group:0,tag:\"Unit\",reason:\"foot-unit\"},{match:\"#Value [#Abbreviation]\",group:0,tag:\"Unit\",reason:\"value-abbr\"},{match:\"#Value [k]\",group:0,tag:\"Unit\",reason:\"value-k\"},{match:\"#Unit an hour\",tag:\"Unit\",reason:\"unit-an-hour\"},{match:\"(minus|negative) #Value\",tag:\"Value\",reason:\"minus-value\"},{match:\"#Value (point|decimal) #Value\",tag:\"Value\",reason:\"value-point-value\"},{match:\"#Determiner [(half|quarter)] #Ordinal\",group:0,tag:\"Value\",reason:\"half-ordinal\"},{match:\"#Multiple+ and #Value\",tag:\"Value\",reason:\"magnitude-and-value\"},{match:\"#Value #Unit [(per|an) (hr|hour|sec|second|min|minute)]\",group:0,tag:\"Unit\",reason:\"12-miles-per-second\"},{match:\"#Value [(square|cubic)] #Unit\",group:0,tag:\"Unit\",reason:\"square-miles\"}],[{match:\"#Copula [(#Noun|#PresentTense)] #LastName\",group:0,tag:\"FirstName\",reason:\"copula-noun-lastname\"},{match:\"(sister|pope|brother|father|aunt|uncle|grandpa|grandfather|grandma) #ProperNoun\",tag:\"Person\",reason:\"lady-titlecase\",safe:!0},{match:\"#FirstName [#Determiner #Noun] #LastName\",group:0,tag:\"Person\",reason:\"first-noun-last\"},{match:\"#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun\",tag:\"Person\",reason:\"titlecase-acronym-titlecase\",safe:!0},{match:\"#Acronym #LastName\",tag:\"Person\",reason:\"acronym-lastname\",safe:!0},{match:\"#Person (jr|sr|md)\",tag:\"Person\",reason:\"person-honorific\"},{match:\"#Honorific #Acronym\",tag:\"Person\",reason:\"Honorific-TitleCase\"},{match:\"#Person #Person the? #RomanNumeral\",tag:\"Person\",reason:\"roman-numeral\"},{match:\"#FirstName [/^[^aiurck]$/]\",group:0,tag:[\"Acronym\",\"Person\"],reason:\"john-e\"},{match:\"#Noun van der? #Noun\",tag:\"Person\",reason:\"van der noun\",safe:!0},{match:\"(king|queen|prince|saint|lady) of #Noun\",tag:\"Person\",reason:\"king-of-noun\",safe:!0},{match:\"(prince|lady) #Place\",tag:\"Person\",reason:\"lady-place\"},{match:\"(king|queen|prince|saint) #ProperNoun\",tag:\"Person\",notIf:\"#Place\",reason:\"saint-foo\"},{match:\"al (#Person|#ProperNoun)\",tag:\"Person\",reason:\"al-borlen\",safe:!0},{match:\"#FirstName de #Noun\",tag:\"Person\",reason:\"bill-de-noun\"},{match:\"#FirstName (bin|al) #Noun\",tag:\"Person\",reason:\"bill-al-noun\"},{match:\"#FirstName #Acronym #ProperNoun\",tag:\"Person\",reason:\"bill-acronym-title\"},{match:\"#FirstName #FirstName #ProperNoun\",tag:\"Person\",reason:\"bill-firstname-title\"},{match:\"#Honorific #FirstName? #ProperNoun\",tag:\"Person\",reason:\"dr-john-Title\"},{match:\"#FirstName the #Adjective\",tag:\"Person\",reason:\"name-the-great\"},{match:\"#ProperNoun (van|al|bin) #ProperNoun\",tag:\"Person\",reason:\"title-van-title\",safe:!0},{match:\"#ProperNoun (de|du) la? #ProperNoun\",tag:\"Person\",notIf:\"#Place\",reason:\"title-de-title\"},{match:\"#Singular #Acronym #LastName\",tag:\"#FirstName #Person .\",reason:\"title-acro-noun\",safe:!0},{match:\"[#ProperNoun] #Person\",group:0,tag:\"Person\",reason:\"proper-person\",safe:!0},{match:\"#Person [#ProperNoun #ProperNoun]\",group:0,tag:\"Person\",notIf:\"#Possessive\",reason:\"three-name-person\",safe:!0},{match:\"#FirstName #Acronym? [#ProperNoun]\",group:0,tag:\"LastName\",notIf:\"#Possessive\",reason:\"firstname-titlecase\"},{match:\"#FirstName [#FirstName]\",group:0,tag:\"LastName\",reason:\"firstname-firstname\"},{match:\"#FirstName #Acronym #Noun\",tag:\"Person\",reason:\"n-acro-noun\",safe:!0},{match:\"#FirstName [(de|di|du|van|von)] #Person\",group:0,tag:\"LastName\",reason:\"de-firstname\"},{match:\"[(lieutenant|corporal|sergeant|captain|qeen|king|admiral|major|colonel|marshal|president|queen|king)+] #ProperNoun\",group:0,tag:\"Honorific\",reason:\"seargeant-john\"},{match:\"[(private|general|major|rear|prime|field|count|miss)] #Honorific? #Person\",group:0,tag:[\"Honorific\",\"Person\"],reason:\"ambg-honorifics\"},{match:\"#Honorific #FirstName [#Singular]\",group:0,tag:\"LastName\",notIf:\"#Possessive\",reason:\"dr-john-foo\",safe:!0},{match:\"[(his|her) (majesty|honour|worship|excellency|honorable)] #Person\",group:0,tag:\"Honorific\",reason:\"his-excellency\"},{match:\"#Honorific #Actor\",tag:\"Honorific\",reason:\"Lieutenant colonel\"},{match:\"(first|second|third|1st|2nd|3rd) #Actor\",tag:\"Honorific\",reason:\"first lady\"},{match:\"#Person #RomanNumeral\",tag:\"Person\",reason:\"louis-IV\"}],[{match:\"#FirstName #Noun$\",tag:\". #LastName\",notIf:\"(#Possessive|#Organization|#Place|#Pronoun|@hasTitleCase)\",reason:\"firstname-noun\"},{match:\"%Person|Date% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"jan-thierson\"},{match:\"%Person|Noun% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"switch-person\",safe:!0},{match:\"%Person|Noun% #Organization\",tag:\"Organization\",reason:\"olive-garden\"},{match:\"%Person|Verb% #Acronym? #ProperNoun\",tag:\"Person\",reason:\"verb-propernoun\",ifNo:\"#Actor\"},{match:\"[%Person|Verb%] (will|had|has|said|says|told|did|learned|wants|wanted)\",group:0,tag:\"Person\",reason:\"person-said\"},{match:\"[%Person|Place%] (harbor|harbour|pier|town|city|place|dump|landfill)\",group:0,tag:\"Place\",reason:\"sydney-harbour\"},{match:\"(west|east|north|south) [%Person|Place%]\",group:0,tag:\"Place\",reason:\"east-sydney\"},{match:\"#Modal [%Person|Verb%]\",group:0,tag:\"Verb\",reason:\"would-mark\"},{match:\"#Adverb [%Person|Verb%]\",group:0,tag:\"Verb\",reason:\"really-mark\"},{match:\"[%Person|Verb%] (#Adverb|#Comparative)\",group:0,tag:\"Verb\",reason:\"drew-closer\"},{match:\"%Person|Verb% #Person\",tag:\"Person\",reason:\"rob-smith\"},{match:\"%Person|Verb% #Acronym #ProperNoun\",tag:\"Person\",reason:\"rob-a-smith\"},{match:\"[will] #Verb\",group:0,tag:\"Modal\",reason:\"will-verb\"},{match:\"(will && @isTitleCase) #ProperNoun\",tag:\"Person\",reason:\"will-name\"},{match:\"(#FirstName && !#Possessive) [#Singular] #Verb\",group:0,safe:!0,tag:\"LastName\",reason:\"jack-layton\"},{match:\"^[#Singular] #Person #Verb\",group:0,safe:!0,tag:\"Person\",reason:\"sherwood-anderson\"},{match:\"(a|an) [#Person]$\",group:0,unTag:\"Person\",reason:\"a-warhol\"}],[{match:\"#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)\",tag:\"#Copula #Adverb #Adjective\",reason:\"sometimes-adverb\"},{match:\"(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense\",group:0,tag:\"Modal\",reason:\"i-better\"},{match:\"(#Modal|i|they|we|do) not? [like]\",group:0,tag:\"PresentTense\",reason:\"modal-like\"},{match:\"#Noun #Adverb? [left]\",group:0,tag:\"PastTense\",reason:\"left-verb\"},{match:\"will #Adverb? not? #Adverb? [be] #Gerund\",group:0,tag:\"Copula\",reason:\"will-be-copula\"},{match:\"will #Adverb? not? #Adverb? [be] #Adjective\",group:0,tag:\"Copula\",reason:\"be-copula\"},{match:\"[march] (up|down|back|toward)\",notIf:\"#Date\",group:0,tag:\"Infinitive\",reason:\"march-to\"},{match:\"#Modal [march]\",group:0,tag:\"Infinitive\",reason:\"must-march\"},{match:\"[may] be\",group:0,tag:\"Verb\",reason:\"may-be\"},{match:\"[(subject|subjects|subjected)] to\",group:0,tag:\"Verb\",reason:\"subject to\"},{match:\"[home] to\",group:0,tag:\"PresentTense\",reason:\"home to\"},{match:\"[open] #Determiner\",group:0,tag:\"Infinitive\",reason:\"open-the\"},{match:\"(were|was) being [#PresentTense]\",group:0,tag:\"PastTense\",reason:\"was-being\"},{match:\"(had|has|have) [been /en$/]\",group:0,tag:\"Auxiliary Participle\",reason:\"had-been-broken\"},{match:\"(had|has|have) [been /ed$/]\",group:0,tag:\"Auxiliary PastTense\",reason:\"had-been-smoked\"},{match:\"(had|has) #Adverb? [been] #Adverb? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"had-been-adj\"},{match:\"(had|has) to [#Noun] (#Determiner|#Possessive)\",group:0,tag:\"Infinitive\",reason:\"had-to-noun\"},{match:\"have [#PresentTense]\",group:0,tag:\"PastTense\",notIf:\"(come|gotten)\",reason:\"have-read\"},{match:\"(does|will|#Modal) that [work]\",group:0,tag:\"PastTense\",reason:\"does-that-work\"},{match:\"[(sound|sounds)] #Adjective\",group:0,tag:\"PresentTense\",reason:\"sounds-fun\"},{match:\"[(look|looks)] #Adjective\",group:0,tag:\"PresentTense\",reason:\"looks-good\"},{match:\"[(start|starts|stop|stops|begin|begins)] #Gerund\",group:0,tag:\"Verb\",reason:\"starts-thinking\"},{match:\"(have|had) read\",tag:\"Modal #PastTense\",reason:\"read-read\"},{match:\"(is|was|were) [(under|over) #PastTense]\",group:0,tag:\"Adverb Adjective\",reason:\"was-under-cooked\"},{match:\"[shit] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear1-verb\"},{match:\"[damn] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear2-verb\"},{match:\"[fuck] (#Determiner|#Possessive|them)\",group:0,tag:\"Verb\",reason:\"swear3-verb\"},{match:\"#Plural that %Noun|Verb%\",tag:\". #Preposition #Infinitive\",reason:\"jobs-that-work\"},{match:\"[works] for me\",group:0,tag:\"PresentTense\",reason:\"works-for-me\"},{match:\"as #Pronoun [please]\",group:0,tag:\"Infinitive\",reason:\"as-we-please\"},{match:\"[(co|mis|de|inter|intra|pre|re|un|out|under|over|counter)] #Verb\",group:0,tag:[\"Verb\",\"Prefix\"],notIf:\"(#Copula|#PhrasalVerb)\",reason:\"co-write\"},{match:\"#PastTense and [%Adj|Past%]\",group:0,tag:\"PastTense\",reason:\"dressed-and-left\"},{match:\"[%Adj|Past%] and #PastTense\",group:0,tag:\"PastTense\",reason:\"dressed-and-left\"},{match:\"#Copula #Pronoun [%Adj|Past%]\",group:0,tag:\"Adjective\",reason:\"is-he-stoked\"},{match:\"to [%Noun|Verb%] #Preposition\",group:0,tag:\"Infinitive\",reason:\"to-dream-of\"}],[{match:\"(slowly|quickly) [#Adjective]\",group:0,tag:\"Verb\",reason:\"slowly-adj\"},{match:\"does (#Adverb|not)? [#Adjective]\",group:0,tag:\"PresentTense\",reason:\"does-mean\"},{match:\"[(fine|okay|cool|ok)] by me\",group:0,tag:\"Adjective\",reason:\"okay-by-me\"},{match:\"i (#Adverb|do)? not? [mean]\",group:0,tag:\"PresentTense\",reason:\"i-mean\"},{match:\"will #Adjective\",tag:\"Auxiliary Infinitive\",reason:\"will-adj\"},{match:\"#Pronoun [#Adjective] #Determiner #Adjective? #Noun\",group:0,tag:\"Verb\",reason:\"he-adj-the\"},{match:\"#Copula [%Adj|Present%] to #Verb\",group:0,tag:\"Verb\",reason:\"adj-to\"},{match:\"#Copula [#Adjective] (well|badly|quickly|slowly)\",group:0,tag:\"Verb\",reason:\"done-well\"},{match:\"#Adjective and [#Gerund] !#Preposition?\",group:0,tag:\"Adjective\",reason:\"rude-and-x\"},{match:\"#Copula #Adverb? (over|under) [#PastTense]\",group:0,tag:\"Adjective\",reason:\"over-cooked\"},{match:\"#Copula #Adjective+ (and|or) [#PastTense]$\",group:0,tag:\"Adjective\",reason:\"bland-and-overcooked\"},{match:\"got #Adverb? [#PastTense] of\",group:0,tag:\"Adjective\",reason:\"got-tired-of\"},{match:\"(seem|seems|seemed|appear|appeared|appears|feel|feels|felt|sound|sounds|sounded) (#Adverb|#Adjective)? [#PastTense]\",group:0,tag:\"Adjective\",reason:\"felt-loved\"},{match:\"(seem|feel|seemed|felt) [#PastTense #Particle?]\",group:0,tag:\"Adjective\",reason:\"seem-confused\"},{match:\"a (bit|little|tad) [#PastTense #Particle?]\",group:0,tag:\"Adjective\",reason:\"a-bit-confused\"},{match:\"not be [%Adj|Past% #Particle?]\",group:0,tag:\"Adjective\",reason:\"do-not-be-confused\"},{match:\"#Copula just [%Adj|Past% #Particle?]\",group:0,tag:\"Adjective\",reason:\"is-just-right\"},{match:\"as [#Infinitive] as\",group:0,tag:\"Adjective\",reason:\"as-pale-as\"},{match:\"[%Adj|Past%] and #Adjective\",group:0,tag:\"Adjective\",reason:\"faled-and-oppressive\"},{match:\"or [#PastTense] #Noun\",group:0,tag:\"Adjective\",notIf:\"(#Copula|#Pronoun)\",reason:\"or-heightened-emotion\"},{match:\"(become|became|becoming|becomes) [#Verb]\",group:0,tag:\"Adjective\",reason:\"become-verb\"},{match:\"#Possessive [#PastTense] #Noun\",group:0,tag:\"Adjective\",reason:\"declared-intentions\"},{match:\"#Copula #Pronoun [%Adj|Present%]\",group:0,tag:\"Adjective\",reason:\"is-he-cool\"},{match:\"#Copula [%Adj|Past%] with\",group:0,tag:\"Adjective\",notIf:\"(associated|worn|baked|aged|armed|bound|fried|loaded|mixed|packed|pumped|filled|sealed)\",reason:\"is-crowded-with\"},{match:\"#Copula #Adverb? [%Adj|Present%]$\",group:0,tag:\"Adjective\",reason:\"was-empty$\"}],[{match:\"will (#Adverb|not)+? [have] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"will-have-vb\"},{match:\"[#Copula] (#Adverb|not)+? (#Gerund|#PastTense)\",group:0,tag:\"Auxiliary\",reason:\"copula-walking\"},{match:\"[(#Modal|did)+] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"modal-verb\"},{match:\"#Modal (#Adverb|not)+? [have] (#Adverb|not)+? [had] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"would-have\"},{match:\"[(has|had)] (#Adverb|not)+? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"had-walked\"},{match:\"[(do|does|did|will|have|had|has|got)] (not|#Adverb)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"have-had\"},{match:\"[about to] #Adverb? #Verb\",group:0,tag:[\"Auxiliary\",\"Verb\"],reason:\"about-to\"},{match:\"#Modal (#Adverb|not)+? [be] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"would-be\"},{match:\"[(#Modal|had|has)] (#Adverb|not)+? [been] (#Adverb|not)+? #Verb\",group:0,tag:\"Auxiliary\",reason:\"had-been\"},{match:\"[(be|being|been)] #Participle\",group:0,tag:\"Auxiliary\",reason:\"being-driven\"},{match:\"[may] #Adverb? #Infinitive\",group:0,tag:\"Auxiliary\",reason:\"may-want\"},{match:\"#Copula (#Adverb|not)+? [(be|being|been)] #Adverb+? #PastTense\",group:0,tag:\"Auxiliary\",reason:\"being-walked\"},{match:\"will [be] #PastTense\",group:0,tag:\"Auxiliary\",reason:\"will-be-x\"},{match:\"[(be|been)] (#Adverb|not)+? #Gerund\",group:0,tag:\"Auxiliary\",reason:\"been-walking\"},{match:\"[used to] #PresentTense\",group:0,tag:\"Auxiliary\",reason:\"used-to-walk\"},{match:\"#Copula (#Adverb|not)+? [going to] #Adverb+? #PresentTense\",group:0,tag:\"Auxiliary\",reason:\"going-to-walk\"},{match:\"#Imperative [(me|him|her)]\",group:0,tag:\"Reflexive\",reason:\"tell-him\"},{match:\"(is|was) #Adverb? [no]\",group:0,tag:\"Negative\",reason:\"is-no\"},{match:\"[(been|had|became|came)] #PastTense\",group:0,notIf:\"#PhrasalVerb\",tag:\"Auxiliary\",reason:\"been-told\"},{match:\"[(being|having|getting)] #Verb\",group:0,tag:\"Auxiliary\",reason:\"being-born\"},{match:\"[be] #Gerund\",group:0,tag:\"Auxiliary\",reason:\"be-walking\"},{match:\"[better] #PresentTense\",group:0,tag:\"Modal\",notIf:\"(#Copula|#Gerund)\",reason:\"better-go\"},{match:\"even better\",tag:\"Adverb #Comparative\",reason:\"even-better\"}],[{match:\"(#Verb && @hasHyphen) up\",tag:\"PhrasalVerb\",reason:\"foo-up\"},{match:\"(#Verb && @hasHyphen) off\",tag:\"PhrasalVerb\",reason:\"foo-off\"},{match:\"(#Verb && @hasHyphen) over\",tag:\"PhrasalVerb\",reason:\"foo-over\"},{match:\"(#Verb && @hasHyphen) out\",tag:\"PhrasalVerb\",reason:\"foo-out\"},{match:\"[#Verb (in|out|up|down|off|back)] (on|in)\",notIf:\"#Copula\",tag:\"PhrasalVerb Particle\",reason:\"walk-in-on\"},{match:\"(lived|went|crept|go) [on] for\",group:0,tag:\"PhrasalVerb\",reason:\"went-on\"},{match:\"#Verb (up|down|in|on|for)$\",tag:\"PhrasalVerb #Particle\",notIf:\"#PhrasalVerb\",reason:\"come-down$\"},{match:\"help [(stop|end|make|start)]\",group:0,tag:\"Infinitive\",reason:\"help-stop\"},{match:\"#PhrasalVerb (in && #Particle) #Determiner\",tag:\"#Verb #Preposition #Determiner\",unTag:\"PhrasalVerb\",reason:\"work-in-the\"},{match:\"[(stop|start|finish|help)] #Gerund\",group:0,tag:\"Infinitive\",reason:\"start-listening\"},{match:\"#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]\",group:0,tag:\"Adverb\",reason:\"phrasal-pronoun-advb\"}],[{match:\"^do not? [#Infinitive #Particle?]\",notIf:zl,group:0,tag:\"Imperative\",reason:\"do-eat\"},{match:\"^please do? not? [#Infinitive #Particle?]\",group:0,tag:\"Imperative\",reason:\"please-go\"},{match:\"^just do? not? [#Infinitive #Particle?]\",group:0,tag:\"Imperative\",reason:\"just-go\"},{match:\"^[#Infinitive] it #Comparative\",notIf:zl,group:0,tag:\"Imperative\",reason:\"do-it-better\"},{match:\"^[#Infinitive] it (please|now|again|plz)\",notIf:zl,group:0,tag:\"Imperative\",reason:\"do-it-please\"},{match:\"^[#Infinitive] (#Adjective|#Adverb)$\",group:0,tag:\"Imperative\",notIf:\"(so|such|rather|enough)\",reason:\"go-quickly\"},{match:\"^[#Infinitive] (up|down|over) #Determiner\",group:0,tag:\"Imperative\",reason:\"turn-down\"},{match:\"^[#Infinitive] (your|my|the|a|an|any|each|every|some|more|with|on)\",group:0,notIf:\"like\",tag:\"Imperative\",reason:\"eat-my-shorts\"},{match:\"^[#Infinitive] (him|her|it|us|me|there)\",group:0,tag:\"Imperative\",reason:\"tell-him\"},{match:\"^[#Infinitive] #Adjective #Noun$\",group:0,tag:\"Imperative\",reason:\"avoid-loud-noises\"},{match:\"^[#Infinitive] (#Adjective|#Adverb)? and #Infinitive\",group:0,tag:\"Imperative\",reason:\"call-and-reserve\"},{match:\"^(go|stop|wait|hurry) please?$\",tag:\"Imperative\",reason:\"go\"},{match:\"^(somebody|everybody) [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"somebody-call\"},{match:\"^let (us|me) [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"lets-leave\"},{match:\"^[(shut|close|open|start|stop|end|keep)] #Determiner #Noun\",group:0,tag:\"Imperative\",reason:\"shut-the-door\"},{match:\"^[#PhrasalVerb #Particle] #Determiner #Noun\",group:0,tag:\"Imperative\",reason:\"turn-off-the-light\"},{match:\"^[go] to .\",group:0,tag:\"Imperative\",reason:\"go-to-toronto\"},{match:\"^#Modal you [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"would-you-\"},{match:\"^never [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"never-stop\"},{match:\"^come #Infinitive\",tag:\"Imperative\",notIf:\"on\",reason:\"come-have\"},{match:\"^come and? #Infinitive\",tag:\"Imperative . Imperative\",notIf:\"#PhrasalVerb\",reason:\"come-and-have\"},{match:\"^stay (out|away|back)\",tag:\"Imperative\",reason:\"stay-away\"},{match:\"^[(stay|be|keep)] #Adjective\",group:0,tag:\"Imperative\",reason:\"stay-cool\"},{match:\"^[keep it] #Adjective\",group:0,tag:\"Imperative\",reason:\"keep-it-cool\"},{match:\"^do not [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"do-not-be\"},{match:\"[#Infinitive] (yourself|yourselves)\",group:0,tag:\"Imperative\",reason:\"allow-yourself\"},{match:\"[#Infinitive] what .\",group:0,tag:\"Imperative\",reason:\"look-what\"},{match:\"^[#Infinitive] #Gerund\",group:0,tag:\"Imperative\",reason:\"keep-playing\"},{match:\"^[#Infinitive] (to|for|into|toward|here|there)\",group:0,tag:\"Imperative\",reason:\"go-to\"},{match:\"^[#Infinitive] (and|or) #Infinitive\",group:0,tag:\"Imperative\",reason:\"inf-and-inf\"},{match:\"^[%Noun|Verb%] to\",group:0,tag:\"Imperative\",reason:\"commit-to\"},{match:\"^[#Infinitive] #Adjective? #Singular #Singular\",group:0,tag:\"Imperative\",reason:\"maintain-eye-contact\"},{match:\"do not (forget|omit|neglect) to [#Infinitive]\",group:0,tag:\"Imperative\",reason:\"do-not-forget\"},{match:\"^[(ask|wear|pay|look|help|show|watch|act|fix|kill|stop|start|turn|try|win)] #Noun\",group:0,tag:\"Imperative\",reason:\"pay-attention\"}],[{match:\"(that|which) were [%Adj|Gerund%]\",group:0,tag:\"Gerund\",reason:\"that-were-growing\"},{match:\"#Gerund [#Gerund] #Plural\",group:0,tag:\"Adjective\",reason:\"hard-working-fam\"}],[{match:\"u r\",tag:\"#Pronoun #Copula\",reason:\"u r\"},{match:\"#Noun [(who|whom)]\",group:0,tag:\"Determiner\",reason:\"captain-who\"},{match:\"[had] #Noun+ #PastTense\",group:0,tag:\"Condition\",reason:\"had-he\"},{match:\"[were] #Noun+ to #Infinitive\",group:0,tag:\"Condition\",reason:\"were-he\"},{match:\"some sort of\",tag:\"Adjective Noun Conjunction\",reason:\"some-sort-of\"},{match:\"of some sort\",tag:\"Conjunction Adjective Noun\",reason:\"of-some-sort\"},{match:\"[such] (a|an|is)? #Noun\",group:0,tag:\"Determiner\",reason:\"such-skill\"},{match:\"[right] (before|after|in|into|to|toward)\",group:0,tag:\"#Adverb\",reason:\"right-into\"},{match:\"#Preposition [about]\",group:0,tag:\"Adjective\",reason:\"at-about\"},{match:\"(are|#Modal|see|do|for) [ya]\",group:0,tag:\"Pronoun\",reason:\"are-ya\"},{match:\"[long live] .\",group:0,tag:\"#Adjective #Infinitive\",reason:\"long-live\"},{match:\"[plenty] of\",group:0,tag:\"#Uncountable\",reason:\"plenty-of\"},{match:\"(always|nearly|barely|practically) [there]\",group:0,tag:\"Adjective\",reason:\"always-there\"},{match:\"[there] (#Adverb|#Pronoun)? #Copula\",group:0,tag:\"There\",reason:\"there-is\"},{match:\"#Copula [there] .\",group:0,tag:\"There\",reason:\"is-there\"},{match:\"#Modal #Adverb? [there]\",group:0,tag:\"There\",reason:\"should-there\"},{match:\"^[do] (you|we|they)\",group:0,tag:\"QuestionWord\",reason:\"do-you\"},{match:\"^[does] (he|she|it|#ProperNoun)\",group:0,tag:\"QuestionWord\",reason:\"does-he\"},{match:\"#Determiner #Noun+ [who] #Verb\",group:0,tag:\"Preposition\",reason:\"the-x-who\"},{match:\"#Determiner #Noun+ [which] #Verb\",group:0,tag:\"Preposition\",reason:\"the-x-which\"},{match:\"a [while]\",group:0,tag:\"Noun\",reason:\"a-while\"},{match:\"guess who\",tag:\"#Infinitive #QuestionWord\",reason:\"guess-who\"},{match:\"[fucking] !#Verb\",group:0,tag:\"#Gerund\",reason:\"f-as-gerund\"}],[{match:\"university of #Place\",tag:\"Organization\",reason:\"university-of-Foo\"},{match:\"#Noun (&|n) #Noun\",tag:\"Organization\",reason:\"Noun-&-Noun\"},{match:\"#Organization of the? #ProperNoun\",tag:\"Organization\",reason:\"org-of-place\",safe:!0},{match:\"#Organization #Country\",tag:\"Organization\",reason:\"org-country\"},{match:\"#ProperNoun #Organization\",tag:\"Organization\",notIf:\"#FirstName\",reason:\"titlecase-org\"},{match:\"#ProperNoun (ltd|co|inc|dept|assn|bros)\",tag:\"Organization\",reason:\"org-abbrv\"},{match:\"the [#Acronym]\",group:0,tag:\"Organization\",reason:\"the-acronym\",safe:!0},{match:\"government of the? [#Place+]\",tag:\"Organization\",reason:\"government-of-x\"},{match:\"(health|school|commerce) board\",tag:\"Organization\",reason:\"school-board\"},{match:\"(nominating|special|conference|executive|steering|central|congressional) committee\",tag:\"Organization\",reason:\"special-comittee\"},{match:\"(world|global|international|national|#Demonym) #Organization\",tag:\"Organization\",reason:\"global-org\"},{match:\"#Noun+ (public|private) school\",tag:\"School\",reason:\"noun-public-school\"},{match:\"#Place+ #SportsTeam\",tag:\"SportsTeam\",reason:\"place-sportsteam\"},{match:\"(dc|atlanta|minnesota|manchester|newcastle|sheffield) united\",tag:\"SportsTeam\",reason:\"united-sportsteam\"},{match:\"#Place+ fc\",tag:\"SportsTeam\",reason:\"fc-sportsteam\"},{match:\"#Place+ #Noun{0,2} (club|society|group|team|committee|commission|association|guild|crew)\",tag:\"Organization\",reason:\"place-noun-society\"}],[{match:\"(west|north|south|east|western|northern|southern|eastern)+ #Place\",tag:\"Region\",reason:\"west-norfolk\"},{match:\"#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]\",group:0,tag:\"Region\",reason:\"us-state\"},{match:\"portland [or]\",group:0,tag:\"Region\",reason:\"portland-or\"},{match:\"#ProperNoun+ (cliff|place|range|pit|place|point|room|grounds|ruins)\",tag:\"Place\",reason:\"foo-point\"},{match:\"in [#ProperNoun] #Place\",group:0,tag:\"Place\",reason:\"propernoun-place\"},{match:\"#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)\",tag:\"Address\",reason:\"address-st\"},{match:\"(port|mount|mt) #ProperName\",tag:\"Place\",reason:\"port-name\"}],[{match:\"[so] #Noun\",group:0,tag:\"Conjunction\",reason:\"so-conj\"},{match:\"[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)\",group:0,tag:\"Conjunction\",reason:\"how-he-is-x\"},{match:\"#Copula [(who|what|where|why|how|when)] #Noun\",group:0,tag:\"Conjunction\",reason:\"when-he\"},{match:\"#Verb [that] #Pronoun\",group:0,tag:\"Conjunction\",reason:\"said-that-he\"},{match:\"#Noun [that] #Copula\",group:0,tag:\"Conjunction\",reason:\"that-are\"},{match:\"#Noun [that] #Verb #Adjective\",group:0,tag:\"Conjunction\",reason:\"that-seem\"},{match:\"#Noun #Copula not? [that] #Adjective\",group:0,tag:\"Adverb\",reason:\"that-adj\"},{match:\"#Verb #Adverb? #Noun [(that|which)]\",group:0,tag:\"Preposition\",reason:\"that-prep\"},{match:\"@hasComma [which] (#Pronoun|#Verb)\",group:0,tag:\"Preposition\",reason:\"which-copula\"},{match:\"#Noun [like] #Noun\",group:0,tag:\"Preposition\",reason:\"noun-like\"},{match:\"^[like] #Determiner\",group:0,tag:\"Preposition\",reason:\"like-the\"},{match:\"a #Noun [like] (#Noun|#Determiner)\",group:0,tag:\"Preposition\",reason:\"a-noun-like\"},{match:\"#Adverb [like]\",group:0,tag:\"Verb\",reason:\"really-like\"},{match:\"(not|nothing|never) [like]\",group:0,tag:\"Preposition\",reason:\"nothing-like\"},{match:\"#Infinitive #Pronoun [like]\",group:0,tag:\"Preposition\",reason:\"treat-them-like\"},{match:\"[#QuestionWord] (#Pronoun|#Determiner)\",group:0,tag:\"Preposition\",reason:\"how-he\"},{match:\"[#QuestionWord] #Participle\",group:0,tag:\"Preposition\",reason:\"when-stolen\"},{match:\"[how] (#Determiner|#Copula|#Modal|#PastTense)\",group:0,tag:\"QuestionWord\",reason:\"how-is\"},{match:\"#Plural [(who|which|when)] .\",group:0,tag:\"Preposition\",reason:\"people-who\"}],[{match:\"holy (shit|fuck|hell)\",tag:\"Expression\",reason:\"swears-expression\"},{match:\"^[(well|so|okay|now)] !#Adjective?\",group:0,tag:\"Expression\",reason:\"well-\"},{match:\"^come on\",tag:\"Expression\",reason:\"come-on\"},{match:\"(say|says|said) [sorry]\",group:0,tag:\"Expression\",reason:\"say-sorry\"},{match:\"^(ok|alright|shoot|hell|anyways)\",tag:\"Expression\",reason:\"ok-\"},{match:\"^(say && @hasComma)\",tag:\"Expression\",reason:\"say-\"},{match:\"^(like && @hasComma)\",tag:\"Expression\",reason:\"like-\"},{match:\"^[(dude|man|girl)] #Pronoun\",group:0,tag:\"Expression\",reason:\"dude-i\"}]);let Bl=null;var Sl={postTagger:function(e){const{world:t}=e,{model:n,methods:a}=t;Bl=Bl||a.one.buildNet(n.two.matches,t);const r=a.two.quickSplit(e.document).map((e=>{const t=e[0];return[t.index[0],t.index[1],t.index[1]+e.length]})),o=e.update(r);return o.cache(),o.sweep(Bl),e.uncache(),e.unfreeze(),e},tagger:e=>e.compute([\"freeze\",\"lexicon\",\"preTagger\",\"postTagger\",\"unfreeze\"])};const Kl={api:function(e){e.prototype.confidence=function(){let e=0,t=0;return this.docs.forEach((n=>{n.forEach((n=>{t+=1,e+=n.confidence||1}))})),0===t?1:(e=>Math.round(100*e)/100)(e/t)},e.prototype.tagger=function(){return this.compute([\"tagger\"])}},compute:Sl,model:{two:{matches:Vl}},hooks:[\"postTagger\"]},$l=function(e,t){const n=function(e){return Object.keys(e.hooks).filter((e=>!e.startsWith(\"#\")&&!e.startsWith(\"%\")))}(t);if(0===n.length)return e;e._cache||e.cache();const a=e._cache;return e.filter(((e,t)=>n.some((e=>a[t].has(e)))))};var Ll={lib:{lazy:function(e,t){let n=t;\"string\"==typeof t&&(n=this.buildNet([{match:t}]));const a=this.tokenize(e),r=$l(a,n);return r.found?(r.compute([\"index\",\"tagger\"]),r.match(t)):a.none()}}};const Ml=function(e,t,n){let a=e.split(/ /g).map((e=>e.toLowerCase().trim()));a=a.filter((e=>e)),a=a.map((e=>`{${e}}`)).join(\" \");let r=this.match(a);return n&&(r=r.if(n)),r.has(\"#Verb\")?function(e,t){let n=t;return e.forEach((e=>{e.has(\"#Infinitive\")||(n=function(e,t){const n=(0,e.methods.two.transform.verb.conjugate)(t,e.model);return e.has(\"#Gerund\")?n.Gerund:e.has(\"#PastTense\")?n.PastTense:e.has(\"#PresentTense\")?n.PresentTense:e.has(\"#Gerund\")?n.Gerund:t}(e,t)),e.replaceWith(n)})),e}(r,t):r.has(\"#Noun\")?function(e,t){let n=t;e.has(\"#Plural\")&&(n=(0,e.methods.two.transform.noun.toPlural)(t,e.model));e.replaceWith(n,{possessives:!0})}(r,t):r.has(\"#Adverb\")?function(e,t){const{toAdverb:n}=e.methods.two.transform.adjective,a=n(t);a&&e.replaceWith(a)}(r,t):r.has(\"#Adjective\")?function(e,t){const{toComparative:n,toSuperlative:a}=e.methods.two.transform.adjective;let r=t;e.has(\"#Comparative\")?r=n(r,e.model):e.has(\"#Superlative\")&&(r=a(r,e.model)),r&&e.replaceWith(r)}(r,t):this};var Jl={api:function(e){e.prototype.swap=Ml}};d.plugin(cl),d.plugin(Fl),d.plugin(Kl),d.plugin(Ll),d.plugin(Jl);export{d as default};\n"
  },
  {
    "path": "changelog.md",
    "content": "compromise uses semver, and pushes to npm and github frequently\n\n- **Major** is a breaking api change - method or response changes that can cause runtime errors.\n- **Minor** is a behaviour change - Tagging or grammar changes.\n- **Patch** is an obvious, non-controversial bugfix.\n\nWhile all _Major_ releases should be reviewed, our only _large_ releases are **v6** in 2016 **v12** in 2019 and **v14** in 2022. Others have been mostly incremental.\n\n<!-- #### [planned breaking]\n- fix doc.json(0) inconsistency\n- fix text() options\n- deprecate #Participle for #PastParticiple\n- run chunker only when necessary\n- cleanup verb+noun metadata in json()\n- remove confidence numbers\n-->\n\n<!-- #### 14.13.0 [Unreleased]\n- **[fix]** - .not() overlap detection\n- **[fix]** - .before() .after()\n-->\n\n#### 14.15.0 [Feb 2026]\n- **[update]** - support for Typescript 7 #1198\n- **[update]** - dependencies\n\n#### 14.14.5 [Dec 2025]\n- **[fix]** - update types #1181 \n- **[update]** - add nelissa and gert #1180 \n- **[fix]** - sentence tokenization issues #1194 and #1193\n- **[update]** - prefer const to let\n- **[new]** - experimental cmd-k plugin\n- **[update]** - dependencies\n\n#### 14.14.4 [Jan 2025]\n- **[fix]** - TypeScript & esm resolution #1165\n\n#### 14.14.3 [Dec 2024]\n- **[fix]** - another runtime error in punctuation replace #1150\n- **[update]** - dependencies\n\n#### 14.14.2 [Oct 2024]\n- **[fix]** - runtime error in punctuation replace #1150\n\n#### 14.14.1 [Oct 2024]\n- **[update]** - compromise-dates 3.7.0\n- **[fix]** - runtime error in number parser #1145\n- **[update]** - dependencies\n\n\n#### 14.14.0 [July 2024]\n- **[new]** - .slashes() and .slashes().split() methods #1100\n- **[fix]** - multiple contraction issue #1128\n- **[fix]** - toNumbers() return values #1113\n- **[fix]** - (plugins/wikipedia) - fix hard-coded path for #1116\n- **[fix]** - (plugins/dates) - limit values in `mm/dd` format\n- **[fix]** - (plugins/dates) params mutation #1109\n- **[change]** - split people names by commas #1111\n- **[change]** - typescript export update #1104\n- **[update]** - eslint config format\n- **[update]** - github actions\n- **[update]** - dependencies\n\n#### 14.13.0 [Apr 2024]\n\n- **[new]** - .compute('freeze')\n- **[new]** - .debug('freeze')\n- **[change]** - allow 3-slashes in a word\n\n#### 14.12.0 [Feb 2024]\n\n- **[new]** - .payload() plugin\n- **[new]** - `.numbers().isUnit()` method #1089\n- **[change]** - update github workflow (thanks FDawgs!)\n- **[fix]** - README issues (thanks track0x1!)\n- **[fix]** - .has() inconsistency\n- **[new]** - support adding debug methods via plugins\n- **[change]** - remove deprecated .debug(object) support\n- **[fix]** - parentheses() match issue\n- **[fix]** - tokenization issue #1085\n- **[new]** - `dates().isBefore()`, `dates().isBefore()` methods\n- **[new]** - `.debug('dates')` method\n- **[fix]** - lazy join() issue\n- **[update]** - dependencies\n\n#### 14.11.2 [Jan 2024]\n\n- **[new]** - support for frozen lex in plugin object #1080\n- **[fix]** - toggling options in .json()\n- **[new]** - .join() and .joinIf() methods\n- **[new]** - support freeze in sweep\n- **[change]** - internal typescript improvements\n- **[fix]** - tagging issues\n- **[change]** - @hasEllipses must be following the word\n- **[update]** - dependencies\n\n#### 14.11.1 [Jan 2024]\n\n- **[fix]** - missing words in html output (thanks ryan!)\n- **[change]** - better #Possessive tagging for #1074\n- **[change]** - improved is/has contraction classifier #1074\n- **[change]** - fixes to subordinate clause identification #1072\n- **[update]** - dependencies\n\n#### 14.11.0 [Dec 2023]\n\n- **[new]** - tagging `.freeze()` and `.unfreeze()` feature\n- **[change]** - stronger deferal to internal lexicon\n- **[change]** - support any-length phrases in lexicon\n- **[fix]** - prevent missed overlapping lexicon phrases\n- **[update]** - dependencies\n\n#### 14.10.1 [Nov 2023]\n\n- **[fix]** - abbreviation checks for sentence-tokenizer #1061\n- **[change]** - improve person tagger #1059\n- **[change]** - add #FutureTense tag\n- **[fix]** - .out() runtime error #1056\n- **[fix]** - punctuation loss in .not() #1022\n- **[update]** - dependencies\n\n#### 14.10.0 [Aug 2023]\n\n- **[fix]** - verb conjugation fixes\n- **[fix]** - tagger fixes\n- **[change]** - align package.json with ESM module #1023\n- **[fix]** - .splitBefore() bugfix\n- **[fix]** - typescript+docs fixes #1023\n- **[fix]** - subtle changes to .text() and .isFull()\n- **[update]** - dependencies\n\n#### 14.9.0 [May 2023]\n\n- **[new]** - .verbs().toPastParticiple() method\n- **[new]** - `.normalize({ debullet: true })` #1004\n- **[change]** - typescript path changes (thanks @rotemdan !)\n- **[fix]** - suffix tagging issues\n- **[fix]** - match syntax issue #997\n- **[change]** - keep possessive in replace #1011\n- **[change]** - major improvements to adj.toNoun() conjugator\n- **[fix]** - parsematch bug #997\n- **[fix]** - \"there's been\" contraction\n- **[new]** - .conjugate() methods on Noun/Adverb/Adjective classes\n- **[new]** - add Gerund and PastParticiple to .verbs().conjugate() results\n- **[new]** - option to keep possessives in .replace() #1011\n- **[fix]** - tagger fix #998\n- **[update]** - dependencies\n\n#### 14.8.2 [Feb 2023]\n\n- **[change]** - #Actor tagging - in advance of #565\n- **[change]** - .noun() lumping changes - in advance of #565\n- **[new]** - support japanese full-stop\n- **[fix]** - number tagging #992\n- **[update]** - dependencies\n\n#### 14.8.1 [Dec 2022]\n\n- **[fix]** - tagging fixes\n- **[change]** - allow #Plural acronyms\n- **[fix]** - allow root matches in fastOr\n- **[fix]** - more flexible PhrasalVerb tagging\n\n#### 14.8.0 [Dec 2022]\n\n- **[fix]** - tagging fixes\n- **[new]** - add Person .presumedMale(), .presumedFemale() methods\n- **[new]** - add Pronoun class, .refersTo()\n- **[new]** - add Noun.references()\n- **[new]** - .nouns('spencer') shorthand as an if-match\n- **[change]** - \"[do] you ..\" etc now #QuestionWord\n- **[new]** - add #Hyphenated tag\n- **[fix]** - improved Auxiliary verb tagging\n- **[update]** - dependencies\n\n#### 14.7.1 [Nov 2022]\n\n- **[fix]** - concat fix\n- **[change]** - tagging fixes\n- **[change]** - `{word/tag/sense}` sense-match syntax\n\n#### 14.7.0 [Nov 2022]\n\n- **[new]** - match term id\n- **[change]** - tag text by default on .concat('')\n- **[change]** - allow modifying term prePunctuation\n- **[new]** - .wrap() method\n- **[new]** - .isFull() method\n- **[new]** - support full `notIf` matches on sweep\n- **[fix]** - text params for #953\n- **[fix]** - nouns().isSingular() missing\n- **[change]** - one-character w/ dash tokenization #977\n- **[change]** - allow setting `model.one.prePunctuation` + `postPunctuation`\n- **[fix]** - compromise-paragraphs plugin\n\n#### 14.6.0 [Oct 2022]\n\n- **[change]** - move internal conjugation methods\n- **[update]** - github scripts\n- **[change]** - fixes to .clauses() parser\n- **[change]** - an astrix is not a word\n- **[new]** - @hasColon method\n- **[new]** - @hasDash supports two dashes\n- **[new]** - `#Passive` verb tag\n- **[new]** - existential `#There` tag\n- **[new]** - add tense info to sentence json\n- **[fix]** - verb tokenization issues\n- **[fix]** - .replace() issues\n- **[update]** - dependencies\n\n#### 14.5.2 [Oct 2022]\n\n- **[fix]** - runtime error #965\n- **[fix]** - misc possessive tagging issues\n- **[update]** - dependencies\n\n#### 14.5.1 [Oct 2022]\n\n- **[fix]** - .remove() fixes\n- **[change]** - support « angle quotes »\n- **[update]** - dependencies\n\n#### 14.5.0 [August 2022]\n\n- **[fix]** - possible runtime error in setTag method\n- **[change]** - make #Honorific always a #Person #951\n- **[new]** - manually change conjugations/inflections from plugin #949\n- **[new]** - `.adjectives().conjugate()` method\n- **[update]** - dependencies\n\n#### 14.4.5 [August 2022]\n\n- **[fix]** - fix logic for greedy-negative matches - #936\n- **[fix]** - fix tagging for 3-digit year iso dates - #868\n- **[update]** - dependencies\n\n#### 14.4.4 [August 2022]\n\n- **[fix]** - support {root} matches without compromise/two\n\n#### 14.4.3 [August 2022]\n\n- **[fix]** - guard for toRoot methods in root match\n- **[update]** - compromise-stats\n\n#### 14.4.2 [July 2022]\n\n- **[fix]** - hotfix for sentence tokenization issue #935\n\n#### 14.4.1 [July 2022]\n\n- **[change]** - improvements to negative-optional match logic - `!foo?`\n- **[change]** - support short sentences embedded in quotes+parentheses\n- **[change]** - faster sentence tokenizer\n- **[change]** - ° symbol is not punctuation\n- **[new]** - implement .swap() for comparative/superlative adjectives\n- **[fix]** - sentence.toFuture() conjugation rules\n- **[update]** - dependencies\n\n#### 14.4.0 [July 2022]\n\n- **[change]** - support root matches like '{walk}' work without doing .compute('root')\n- **[change]** - split numbers+units '12km' as contraction - #919\n- **[new]** - `.lazy(txt, match)` fast-scan method [1](https://observablehq.com/@spencermountain/compromise-performance)\n- **[fix]** - support apostrophes in lexicon #932\n- **[fix]** - support unTag property in sweep\n- **[change]** - keep sentence caches, when still valid\n- **[change]** - alias nlp.compile() to .buildTrie()\n- **[fix]** - tagging fixes\n- **[update]** - dependencies\n  _plugin-releases_: dates, speed, de-compromise\n\n#### 14.3.1 [June 2022]\n\n- **[fix]** - missed caches in .sweep()\n- **[new]** - .out('hash') and `.json({hash:true})`\n\n#### 14.3.0 [June 2022]\n\n- **[fix]** - unwanted logging in compromise/one\n- **[fix]** - dependency export path for react-native builds #928\n- **[change]** - split hyphenated words in match syntax 'foo-bar'\n- **[change]** - support 4-digit number-ranges (when not a phone number)\n  _plugin-releases_: dates\n\n#### 14.2.1 [June 2022]\n\n- **[fix]** - double-contraction issue #925\n- **[fix]** - .not() memleak #926\n\n#### 14.2.0 [June 2022]\n\n- **[fix]** - speed improvements\n- **[fix]** - bug with fast-or possessive matches\n- **[fix]** - bug with slow-or end-matches\n- **[change]** - no-longer attempt 's contractions in compromise/one\n- **[new]** - flag novel tags in world.one.tagSet\n- **[new]** - .sweep() and nlp.buildNet() methods\n- **[new]** - some typescript support in plugins #918\n- **[fix]** - better unicode support with Unicode property escapes\n- **[fix]** - problems matching on cached documents\n- **[fix]** - typescript fixes\n- **[fix]** - suffix tagging issues\n- **[fix]** - uncached matches missing in .sweep()\n- **[fix]** - non-empty results when pointer is first repaired\n- **[fix]** - nouns().toPlural() fix for #921\n- **[fix]** - drop deprecated .subst() method internally\n- **[new]** - some support for .numbers().units() again #919\n\n#### 14.1.2 [April 2022]\n\n- **[new]** - add .harden() .soften() undocumented methods\n- **[fix]** - support pre-parsed matches in .has() .if() and .not()\n- **[fix]** - contraction OR match issue\n- **[fix]** - match-syntax min-max issue\n- **[fix]** - normalized printout of abbreviations\n- **[update]** - date plugin release\n- **[update]** - dependencies\n\n#### 14.1.1 [April 2022]\n\n- **[fix]** - main property in package.json #911\n\n#### 14.1.0 [April 2022]\n\n- **[fix]** - client-side export format for plugins\n- **[new]** - more adjective transformation methods\n- **[new]** - emoji + emoticon tagger\n- **[new]** - case-sensitive match option - `{caseSensitive:true}`\n\n### 🚨 14.0.0 🚨 &nbsp; [March 2022]\n\nMajor release - see [Release Notes](https://github.com/spencermountain/compromise/releases/tag/14.0.0) for full details\n\n- **[breaking]** - remove `.parent()` and `.parents()` chain - (use `.all()` instead)\n- **[breaking]** - remove `@titleCase` alias (use @isTitleCase)\n- **[breaking]** - remove '.get()' alias - use '.eq()'\n- **[breaking]** - remove `.json(0)` shorthand - use `.json()[0]`\n- **[breaking]** - remove `.tagger()` - use .compute('tagger')\n- **[breaking]** - remove `.export()` -> .load() - use .json() -> nlp(json)\n- **[breaking]** - remove `nlp.clone()`\n- **[breaking]** - remove `.join()` _deprecated_\n- **[breaking]** - remove `.lists()` _deprecated_\n- **[breaking]** - remove `.segment()` _deprecated_\n- **[breaking]** - remove `.sententences().toParticiple()` & `.verbs().toParticiple()`\n- **[breaking]** - remove `.nouns().toPossessive()` & `.nouns().hasPlural()`\n- **[breaking]** - remove array support in match methods - (use `.match().match()` instead)\n- **[breaking]** - refactor `.out('freq')` output format - (uses `.compute('freq').terms().unique().json()` instead)\n- **[breaking]** - change `.json()` result format for subsets\n- **[change]** merge re-used capture-group names in one match\n- **[change]** drop support for undocumented empty '.split()' methods - which used to split the parent\n- **[change]** subtle changes to `.text('fmt')` formats\n- **[change]** @hasContraction is no-longer secretly-greedy. use `@hasContraction{2}`\n- **[change]** `.and()` now does a set 'union' operation of results (no overlaps)\n- **[change]** bestTag is now `.compute('tagRank')`\n- **[change]** `.sort()` is no longer in-place (its now immutable)\n- **[change]** drop undocumented options param to `.replaceWith()` method\n- **[change]** add match-group as 2nd param to split methods\n- **[change]** remove #FutureTense tag - which is not really a thing in english\n- **[change]** `.unique()` no-longer mutates parent\n- **[change]** `.normalize()` inputs cleanup\n- **[change]** drop agreement parameters in .numbers() methods\n- **[change]** - less-magical money parsing - `nlp('50 cents').money().get()` is no-longer `0.5`\n- **[change]** - .find() does not return undefined on an empty result anymore\n- **[change]** - fuzzy matches must now be wrapped in tildes, like `~this~`\n- **[new]** `.union()`, .intersection(), .difference() and .complement() methods\n- **[new]** `.confidence()` method - approximate tagging confidence score for arbitrary selections\n- **[new]** `.settle()` - remove overlaps in matches\n- **[new]** `.isDoc()` - helper-method for comparing two views\n- **[new]** `.none()` - helper-method for returning an empty view of the document\n- **[new]** `.toView()` method - drop back to a normal Class instance\n- **[new]** `.grow()` `.growLeft()` and `.growRight()` methods\n- **[new]** add punctuation match support via pre/post params\n- **[new]** add ambiguous empty .map() state as 2nd param\n\n#### 13.11.3 [June 2021]\n\n- **[fix]** - regex backtracing issue \\#847 (thanks @srubin)\n- misc tagging fixes\n  update deps\n\n#### 13.11.2 [May 2021]\n\n- **[fix]** - verbphrase conjugation fixes\n- **[fix]** - verbphrase tagger fixes\n- **[fix]** - url tagging regex improvements (thanks Axay!)\n  update deps\n  _plugin-releases_: dates\n\n#### 13.11.1 [April 2021]\n\n- **[fix]** - obscure runtime error in capture-groups\n  update deps\n  _plugin-releases_: typeahead\n\n#### 13.11.0 [April 2021]\n\n- **[change]** - use babel default build target (drop ie11 polyfill)\n- **[change]** - dont compile esm build w/ babel anymore\n- **[fix]** - sentence conjugation fixes\n- **[fix]** - improvements to phrasal verbs\n- **[change]** - keep tokenization for some more dashed suffixes like 'snail-like'\n  _plugin-releases_: dates, numbers, sentences\n\n#### 13.10.7 [April 2021]\n\n- **[change]** - tokenize '2 - 5' as NumerRange, like '2-5' is\n- **[fix]** - edge-cases for URLs with numbers\n- **[fix]** - some sentences.toPastTense() fixes\n- **[fix]** - 'n weekends from now' math in plugin-date\n  _plugin-releases_: dates, sentences\n\n#### 13.10.6 [April 2021]\n\n- **[fix]** - support more time-ranges\n  _plugin-releases_: dates@2.0.2\n\n#### 13.10.5 [March 2021]\n\n- **[new]** - support Time-range like '3pm-4pm'\n- **[change]** - cleanup some unicode regexes\n  _plugin-releases_: dates\n\n#### 13.10.4 [March 2021]\n\n- **[fix]** - match syntax tokenization fix\n- **[change]** - improved performance monitoring\n\n#### 13.10.3 [March 2021]\n\n- **[fix]** - support complicated regular-expressions in match syntax\n- improved performance testing\n\n#### 13.10.2 [March 2021]\n\n- **[fix]** - support matching implicit terms in (or|blocks)\n- **[change]** - add #Timezone tag (from date-plugin)\n- **[change]** - add many more cities and regions\n\n#### 13.10.1 [March 2021]\n\n- **[change]** - #Date terms can still be a #Conjunction\n- **[new]** - #Imperative tag and `.verbs().isImperative()` method\n- **[fix]** - some tagger issues\n- update deps\n  _plugin-releases_: dates\n\n#### 13.10.0 [Feb 2021]\n\n- **[new]** - #Fraction tag and improved fraction support (thanks Jakeii!)\n- **[fix]** - edge-case match issues with `!` syntax\n- **[change]** - update deps\n- updates for `compromise-dates@1.4.0`, `compromise-numbers@1.2.0`\n\n#### 13.9.3 [Feb 2021]\n\n- **[fix]** - fix weird ordering issue with named exports #815\n\n#### 13.9.2 [Feb 2021]\n\n- **[fix]** - typescript issue\n\n#### 13.9.1 [Feb 2021]\n\n- **[fix]** - matches over a contraction\n- **[new]** - add 'implicit' text output\n\n#### 13.9.0 [Feb 2021]\n\n- **[new]** - World.addConjugations() method\n- **[new]** - World.addPlurals() method\n- **[new]** - start compromise-penn-tags plugin\n- **[new]** - add fuzzy option to match commands\n- **[new]** - support multiple-word matches in OR matches (a|b|foo bar|c)\n- **[change] (internal)** - rename 'oneOf' match syntax to 'fastOr'\n- **[change]** - use new export maps format\n- **[fix]** - conjugations fixes #800\n- **[fix]** - tokenization fixes #801\n\n#### 13.8.0 [Dec 2020]\n\n- **[change]** improved support for fractions in numbers-plugin #793\n- **[change]** remove zero-width characters in normalized output #759\n- **[change]** improved Person tagging with particles #794\n- **[change]** improved i18n Person names\n- **[change]** tagger+tokenization fixes\n- **[change]** remove empty results from .out('array') #795\n- **[change]** `.tokenize()` runs any postProcess() scripts from plugins\n- **[change]** improved support for lowercase acronyms\n- **[change]** - support years like '97\n- **[change]** - change tokenizer for '20-aug'\n- **[change]** - update deps of all plugins\n- **[fix]** - NumberRange tagging issue #795\n- **[fix]** - improved support for ordinal number ranges\n- **[fix]** - improved regex support in match-syntax\n- **[fix]** - improved support for ~soft~ match syntax #797\n- **[fix]** - better handling of `{0,n}` match syntax\n- **[new]** - new plugin `strict-match`\n- **[new]** - set NounPhrase, VerbPhrase tags in nlp-sentences plugin\n- **[new]** - `.phrases()` method in nlp-sentences plugin\n- **[new]** - support `.apppend(doc)` and `.prepend(doc)`\n- **[new]** - `values.normalize()` method\n\n#### 13.7.0 [Oct 2020]\n\n- **[change]** many misc tagging fixes\n  - 'if' is now a #Preposition\n  - possessive pronouns are #Pronoun and #Possessive\n  - more phrasal verbs\n  - make #Participle tag #PastTense\n  - favor #PastTense over #Participle interpretation in tagger\n- **[change]** `@hasHyphen` returns false for sentence dashes\n- a lot more testing\n\n#### 13.6.0 [Oct 2020]\n\n- **[new]** first-attempt at `verbs().subject()` method\n- **[change]** avoid conjugating imperative tense - 'please close the door'\n- **[change]** misc tagging fixes #786\n- **[change]** .nouns() results split on quotations #783\n- **[change]** NumberRange must be < 4 digits #735\n- **[change]** reduction in #Person tag false-positives\n\n#### 13.5.0 [Sep 2020]\n\n- **[new]** add `.parseMatch()` method for pre-parsing match statements\n\n#### 13.4.0 [Sep 2020]\n\n- **[change]** stop including adverbs and some auxiliaries in `.conjugate()` results\n- **[change]** .append() and .prepend() on an empty doc now creates a new doc\n- **[new]** add `verbs().toParticiple()` method (add to observables/verb)\n- **[new]** add `sentences().toParticiple()` method (add to observables/verb)\n- **[fix]** some verb-tagging issues\n- **[fix]** contractions issue in `.clone()`\n- **[fix]** try harder to retain modal-verbs in conjugation - 'i should drive' no-longer becomes 'i will drive'\n\n#### 13.3.2 [Aug 2020]\n\n- fix for offset issue #771\n- fix for `{min,max}` syntax #767\n- typescript fixes\n- update deps\n\n#### 13.3.1 [June 2020]\n\n-support unicode spaces for #759\n\n- major improvements to `compromise-plugin-dates` (1.0.0)\n\n#### 13.3.0 [June 2020]\n\n- bugfixes (conjugation and tagging) 752, 737, 725, 751, 743 748, 755, 758, 706, 761\n- support tokenized array as input\n- update deps\n- bugfix updates to `plugin-sentences`, and `plugin-dates`\n\n#### 13.2.0 [May 2020]\n\n- deprecate `.money()` and favour overloaded method in compromise-numbers plugin\n- add `.percentages()` and `.fractions()` to compromise-numbers plugin\n- add `.hasAfter()` and `.hasBefore()` methods\n- change handling of slashes\n- add `.world()` method to constructor\n- add more abbreviations\n- fix regex backtracking #739\n- tokenize build:\n- - remove conjugation and inflection data\n- - remove conjugation and inflection functions\n- remove sourcemap from build process (too big)\n- improvements to `.numbers().units()`\n- fix for linked-list runtime error #744 with contractions\n\n#### 13.1.1\n\n- fix `verbs.json()` runtime-error\n- improve empty `.lists()` methods\n- allow custom tag colors\n- test new github action workflow\n\n#### 13.1.0\n\n- significant (~30%) speed up of parsing\n- change sensitivity of input in `.lookup()` for major speed improvements.\n- improved typescript types\n- subtle changes to internal caching\n- adds 'oneOf' match syntax param\n- fixes `[word?]` syntax parsing\n\n### 13.0.0 [Feb 2020]\n\n_major changes to `.export()` and `[capture] group` match-syntax._\n\n- **[breaking]** move .export() and .load() methods to plugin (compromise-export)\n- - change .export() format - this hasn't worked properly since v12. (mis-parsed contractions) see #669\n- **[breaking]** split `compromise-output` into `compromise-html` and `compromise-hash` plugins\n- **[breaking]** `.match('foo [bar]')` no-longer returns 'bar'. (use `.match('foo [bar]', 0)`)\n- **[breaking]** capture groups are no longer merged. `.match('[foo] [bar]')` returns two groups accessible with the new `.groups()` function\n- **[breaking]** change `.sentences()` method to return only full-sentences of matches (use `.all()` instead)\n\nmodifications:\n\n- **[fix]** - nlp.clone() - hasn't worked properly, since v12. (@Drache93)\n- **[fix]** - issues with greedy capture [*] and [.+] -(@Drache93) 💛\n- add whitespace properties (pre+post) to default json output (suppress with `.json({ whitespace: false })`)\n- `.lookup({ key: val })` with an object now returns an object back ({val: Doc})\n- add nlp constructor as a third param to `.extend()`\n- support lexicon object param in tokenize - `.tokenize('my word', { word: 'tag' })`\n- clean-up of scripts and tooling\n- improved typescript types\n- add support for some french contractions like `j'aime -> je aime`\n- allow null results in `.map()` function\n- better typescript support\n- allow longer acronyms\n- **[fix]** - offset length issue\n- **[new]** - add new named-match syntax, with .groups() method (@Drache93)\n- **[new]** - add `nlp.fromJSON()` method\n- **[new]** - add a new `compromise-tokenize.js` build, without the tagger, or data included.\n\n#### 12.3.0 [Jan 2020]\n\n- prefer `@titleCase` instead of `#TitleCase` tag\n- update dependencies\n- fix case-sensitive paths\n- fix greedy-start match condition regression #651\n- fix single period sentence runtime error\n- fix potentially-unsafe regexes\n- improved tagging for '-ed' verbs (#616)\n- improve support for auxilary-pastTense ('was lifted') verb-phrases\n- more robust number-tagging regexes\n- setup typescript types for plugins #661 (thanks @Drache93!)\n- verb conjugation and tagger bugfixes\n- disambiguate between acronyms & yelling\n\n##### 12.2.1 [Dec 2019]\n\n- fix 'aint' contraction\n- make Doc.world writable\n- update deps\n- more tests\n- fix shared period with acronym at end of sentence\n- fix some mis-classification of contraction\n- fix over-active emoji regex\n- tag 'cookin', 'hootin' as `Gerund`\n- support unicode single-quote symbols in contractions\n\n#### 12.2.0 [Dec 2019]\n\n- improved splitting in .nouns()\n- add `.nouns().adjectives()` method\n- add `concat` param to `.pre()` and `.post()`\n- allow ellipses at start of term _\"....so\"_ in `@hasEllipses`\n- fix matches with optional-end `foo?$` match syntax\n- add typescript types for subsets\n\n#### 12.1.0 [Nov 2019]\n\n- add 'sideEffect:false' flag to build\n- considerable speedup (20%) in tagger\n- ensure trimming of whitespace for root/clean/reduced text formats\n- fix client-side logging\n- more flexible params to `replace()` and `replaceWith()`\n\n### 12.0.0 &nbsp; :postal_horn: [Nov 2019]\n\n- see **[Release Notes](https://github.com/spencermountain/compromise/wiki/v12-Release-Notes)**\n\n#### 11.13.0\n\n- support singular units in `.value()`\n\n#### 11.11.0\n\n- `.quotations()` no-longer return repeated results for nested quotes\n- simplify quotation tagset\n- `.out('normal')` no longer includes quotes or trailing-possessives\n- improve `.debug()` on client-side\n\n#### 11.10.0\n\n- better honorific support, add `honorifics` feature to .normalize()\n- elipses bugfixes\n- replace unicode chars in `.normalize()` now by default\n- `acronyms().stripPeriods()` and `acronyms().addPeriods()`\n\n#### 11.9.0\n\n- tag professions as `#Actor`\n- add more behaviours to `.normalize()`\n- support match-results as inputs to .match() and .not()\n- support some us-state abbreviations like 'Phoeniz AZ'\n\n#### 11.8.0\n\n- add `nouns().toPossessive()`\n- ngrams now remove empty-terms in contractions - fixes counting issue [#476](https://github.com/spencermountain/compromise/issues/476)\n\n#### 11.7.0\n\n- expose internal `sentences().isQuestion()` method\n- `.join()` as an alias for `.flatten()`\n- slightly different behavior for wildcards in capture-groups [pull/472](https://github.com/spencermountain/compromise/pull/472)\n- `.possessives()` subset + `#Possessive` tagging fixes\n- hide massive `world` output for console.log of a term\n\n#### 11.6.0\n\n- improve quotations() method\n- add .parentheses() method\n- add 'nickname' support to .people()\n- 'will be #Adjective' now tagged as Copula\n- include adverbs in verb conjugation (more) consistently\n- `sentences().toContinuous()` and `verbs().toGerund()`\n- some more aliases for jquery-like methods api\n- move `getPunctuation`, `setPunctuation` from .sentence to main Text method\n- rename internal `endPunctuation` to `getPunctuation`\n- more consistent `cardinal/ordinal` tagging for values\n\n#### 11.5.0\n\n- add #Abbreviation tag\n- add #ProperNoun tag\n- fixes for noun inflection\n\n##### 11.4.1\n\n- include old ending punctuation in a `.replace()` cmd\n\n##### 11.3.1\n\n- almost-double the support for first-names\n- changes to bestTag method\n\n##### 11.2.1\n\n- rolls-back some aggressive JustesonKatz stuff\n- better support for emdash numberRange\n- 'can\\'t' contraction bugfix\n- fix for dates().toShortForm()\n\n#### 11.1.0\n\n- add `#Multiple` Values tag, and changes to how invalid numbers like 'sixty fifteen hundred' are understood\n- better em-dash/en-dash support\n- better conjugate implicit verbs inside contractions - \"i'm\", \"we've\"\n- nouns().articles() method\n- neighborhoods as #Place\n- support more complex noun-phrases with JustesonKatz in `.nouns()`\n\n### v11\n\n- support for persistent lexicon/tagset changes\n- `addTags, addWords, addRegs, addPlurals, addConjugations` methods to extend native data\n- - `.plugin()` method to wrap all of these into one\n- - (removal of `.packWords()` method)\n- more `.organizations()` matches\n- regex-support in .match() - `nlp('it is waaaay cool').match('/aaa/').out()//'waaaay'`\n- improved apostrophe-s disambiguation\n- support whitespace before sentence boundary\n- improved QuestionWord tagging, some `.questions()` without a question-mark\n- phrasalVerb conjugation\n- new #Activity tag for Gerunds as nouns 'walking is fun'\n- change ngram params to an object `{size:int, max:int}`\n- implement '[]' capture-group syntax in .match()\n- bring-back `map, filter, foreach and reduce` methods\n- set `.words()` as alias for .terms()\n- `people().firstNames()`, `people().lastNames()`\n- split-out comma-separated adverbs\n\n##### 10.7.2\n\n- fix for '.watch' reserved word in efrt\n\n#### 10.7.0\n\n- improved `places()` parsing\n- improved `{min,max}` match syntax\n- new `.out('match')` method\n- quiet addition of .pack() and .unpack() for owen\n\n#### 10.6.0\n\n- move internal lexicon around, to support new format in v11\n- added states & provinces as #Region\n- added #Comparable tag for adjectives that conjugate\n\n#### 10.5.0\n\n- add increment/decrement/add/subtract methods to .values()\n- add units(), noUnits() methods to .values()\n- 'uncountable' nouns are no longer assumed to be singular\n- money tag is no longer always a value\n\n#### 10.4.0\n\n- improved tagging of `VerbPhrase` and `Condition`\n- fixes to contractions in sentence-changes - \"i'm going -> i went\"\n- several verb conjugation fixes\n- accept Terms & Result objects in .match() and .replace()\n\n#### 10.3.0\n\n- new `Percent` tag\n- lump more units in with `.values()`\n\n#### 10.2.0\n\n- .trim() method,\n- adjective tagging fixes\n- some new .out() methods\n\n#### 10.1.0\n\n- fix return format of .isPlural(), so it acts like a match filter\n- less-greedy date tagging & ambiguous month fixes\n\n### v10\n\n- cleanup & rename some `.value()` methods\n- change lumping behaviour of lexicon terms with multiple words\n- keep more former tags after a term replace method\n- new `.random()` method\n- new `.lessThan()`, `.greaterThan()`, `.equalTo()` methods\n- new prefix/suffix/infix matches with `_ffix` syntax\n- `tag()` supports a sequence of tags for a sequence of terms\n- .match 'range' queries now use a real match - `#Adverb{2,4}`\n- new `.before()` and `.after()` match methods\n- removes `.lexicon()` method for many-lexicons concept\n- changes params of `.replaceWith()` method to a 'keyTags' boolean\n- improved .debug() and logging on client-side\n\n#### 9.1.0\n\n- pretty-real filesize reduction by swapping es6 classes for es5 inheritance\n\n### v9.0.0\n\n- rename `Term.tag` object to `Term.tags` so the `.tag()` method can work throughout more-consistently\n- fix 'Auxillary' tag typo to 'Auxiliary'\n- optimisation of .match(), and tagset - significant speedup!\n- adds `.tagger()` method and cleanup extra params\n- adds `wordStart` and `wordEnd` offsets to `.out('offset')` for whitespace+punctuation\n- new `.has()` method for faster lookups\n\n#### 8.2.0\n\n- add `nlp.out('index')` method, 12 bugs\n\n#### 8.1.0\n\n- add `nlp.tokenize()` method for disabling pos-tagging of input\n\n### v8.0.0\n\n- less-ambitious date-parsing of nl-date forms\n- filesize reduction using [efrt](https://github.com/nlp-compromise/efrt) data structure (254k -> 214k)\n\n##### 7.0.15\n\n- fix for IE9\n\n### v7 &nbsp; :postal_horn:\n\n- weee! [big change!](https://github.com/nlp-compromise/compromise/wiki/v7-Upgrade,-welcome) _npm package rename_\n\n#### 6.5.0\n\n- builds now using browserify + derequire()\n\n#### 6.4.0\n\n- re-written term-lumper logic\n\n#### 6.3.0\n\n- new nlp.lexicon({word:'POS'}) flow\n\n### v6\n\n- be consistent with `text.normal()`, `term.all_forms()`, `text.word_count()`. `text.normal()` includes sentence-terminators, like periods etc.\n\n#### 5.2.0\n\n- airport codes support, helper methods for specific POS\n\n#### 5.1.0\n\n- newlines split sentences\n\n### v5\n\n- Text methods now return this, instead of array of sentences\n\n#### 4.12.0\n\n- more-sensible responses for invalid, non-string inputs\n\n#### 4.11.0\n\n- 14 PRs, with fixes for currencies, pluralization, conjugation\n\n#### 4.10.0\n\n- Value.to_text() new method, fix \"Posessive\" POS typo\n\n#### 4.9.0\n\n- return of the text.spot() method (Re:#107)\n\n#### 4.8.0\n\n- more aggressive lumping of dates, like 'last week of february'\n\n#### 4.7.0\n\n- whitespace reproduction in .text() methods\n\n#### 4.6.0\n\n- move negate from sentence to verb & statement\n\n#### 4.2.0\n\n- rename 'implicit' to 'expansion' for smarter contractions\n\n##### 4.1.3\n\n- added readable-compression to adj, verbs (121kb -> 117kb)\n\n#### 4.1.0\n\n- hyphenated words are normalized into spaces\n\n### v4.0.0\n\n- grammar-aware match & replace functions\n\n##### 3.0.2\n\n- Statement & Question classes\n\n### v3.0.0 Feb 2016\n\n- split ngram, locale, and syllables into plugins in seperate repo\n\n### 2.0.0 - Nov 2015\n\n- es6 classes, babel building\n- better test coverage\n- ngram uses term tokenization, so that 'Tony Hawk' us one term, and not two\n- more organized pos rules\n- Pos tagging is done implicitly now once nlp.Text is run\n- Entity spotting is split into .people(), .place(), .organisations()\n- unicode normalisation is killed\n- opaque two-letter tags are gone\n- plugin support\n- passive tense detection\n- lexicon can be augmented third-party\n- date parsing results are different\n\n##### 1.1.0 - May 2015\n\n- smarter handling of ambiguous contractions (\"he's\" -> [\"he is\", \"he has\"])\n\n### v1.0.0 - May 2015\n\n- added name genders and beginning of co-reference resolution ('Tony' -> 'he') API.\n- small breaking change on `Noun.is_plural` and `Noun.is_entity`, affording significant pos() speedup. Bumped Major version for these changes.\n\n##### 0.5.2 - May 2015\n\n- Phrasal verbs ('step up'), firstnames and .people()\n\n##### 0.4.0 - May 2015\n\n- Major file-size reduction through refactoring\n\n##### 0.3.0 - Jan 2015\n\n- New NER choosing algorithm, better capitalisation logic, consolidated tests\n\n##### 0.2.0 - Nov 2014\n\n- Sentence class methods, client-side demos\n"
  },
  {
    "path": "data/README.md",
    "content": "hello!\n\nhere is the data compressed and compiled into the word models that compromise uses to understand text.\n\nthere are some things to note:\n\n1. run `npm run pack` after making a change, to see changes appear.\n\n2. lexicon words are lowercased and compressed with [efrt](https://github.com/spencermountain/efrt), some characters are reserved -`[0-9,;!:|¦]`\n\n3. be careful adding ambiguous words - 'ray' should not be a #Person - it's a better fit for `./switches/person-date.js`\n\n4. many word-lists have conjugations automatically applied to them - #Singular words are pluralized, etc.\n\n\nthe lexicon output data can be found in `./src/2-two/preTagger/model/lexicon/_data.js`\n\nand the word-conjugation data can be found in `./src/2-two/preTagger/model/models/_data.js`\n\nfor more information, see the [compromise-lexicon docs](https://observablehq.com/@spencermountain/compromise-lexicon)."
  },
  {
    "path": "data/lexicon/adjectives/adjectives.js",
    "content": "//adjectives that don't conjugate to superlative/adverb/verb forms\nexport default [\n  'prima',\n  'ultra',\n  'extra',\n  'vice versa',\n  'magenta',\n  'superb',\n  'cardiac',\n\n  // -ic\n  'specific',\n  'terrific',\n  'horrific',\n  'scientific',\n  'public',\n  'symbolic',\n  'alcoholic',\n  'organic',\n  'hispanic',\n  'generic',\n  'didactic',\n  'gigantic',\n  'frantic',\n  'authentic',\n  'ad hoc',\n  'ahead',\n  'widespread',\n\n  // -ed\n  'nuanced',\n  'wounded',\n  'retarded',\n  'naked',\n  'buck naked',\n  'fabled',\n  'so called',\n  'old fashioned',\n  'sacred',\n  'deceased',\n  'diseased',\n  'lapsed',\n  'sophisticated',\n  'antiquated',\n  'spirited',\n  'talented',\n  'subdued',\n  'beloved',\n  'hallowed',\n  'crazed',\n  'infrared',\n  'grizzled',\n  'appalled',\n  'enamored',\n  'newlywed',\n  'famed',\n  'jaded',\n  'conceited',\n\n  // -id\n  'plaid',\n  'prepaid',\n  'afraid',\n  'rabid',\n  'placid',\n  'splendid',\n  'sordid',\n  'rheumatoid',\n  'devoid',\n  'torpid',\n  'languid',\n\n  'behind',\n  'blind',\n  'beyond',\n  'good',\n  'substandard',\n  'on board',\n  'aboard',\n  'onboard',\n  'off guard',\n  'awkward',\n  'forward',\n  'straight forward',\n  'straightforward',\n  'boldface',\n\n  'avant garde',\n  'home made',\n  'wee',\n  'teenage',\n  'average',\n  'awake',\n  'upscale',\n  'wholesale',\n\n  // -ble\n  'able',\n  'probable',\n  'foreseeable',\n  'notable',\n  'valuable',\n  'invaluable',\n  'soluble',\n  'insoluble',\n  'single',\n\n  // -ile\n  'fragile',\n  'worthwhile',\n  'sterile',\n  'volatile',\n  'versatile',\n  'fertile',\n  'hostile',\n\n  'whole',\n  'multiple',\n  'ample',\n  'same',\n  'supreme',\n  'part time',\n  'profane',\n  'humane',\n  'insane',\n  'obscene',\n  'serene',\n\n  // -ine\n  'alkaline',\n  'offline',\n  'crystalline',\n  'online',\n  'masculine',\n  'feminine',\n  'pristine',\n\n  'done',\n  'autoimmune',\n  'picayune',\n  'aware',\n  'macabre',\n  'sincere',\n  'mere',\n  'entire',\n  'bizarre',\n  'premature',\n  'immature',\n  'obese',\n  'precise',\n  'concise',\n  'false',\n  'immense',\n  'intense',\n  'sparse',\n  'adverse',\n  'diverse',\n  'perverse',\n  'profuse',\n\n  // -ate\n  'delicate',\n  'up to date',\n  'immediate',\n  'appropriate',\n  'inappropriate',\n  'legitimate',\n  'ultimate',\n  'insubordinate',\n  'indeterminate',\n  'innate',\n  'passionate',\n  'compassionate',\n  'proportionate',\n  'alternate',\n  'fortunate',\n  'disparate',\n  'degenerate',\n  'temperate',\n  'desperate',\n  'literate',\n  'illiterate',\n  'irate',\n  'accurate',\n  'inaccurate',\n  'commensurate',\n  'adequate',\n  'inadequate',\n  'private',\n\n  'obsolete',\n  'incomplete',\n  'discrete',\n  'recondite',\n  'impolite',\n  'finite',\n  'definite',\n  'indefinite',\n  'trite',\n  'petite',\n  'exquisite',\n  'en suite',\n  'acute',\n  'absolute',\n  'resolute',\n  'en route',\n  'due',\n  'concave',\n  'coercive',\n  'conducive',\n  'alive',\n  'aggressive',\n  'attractive',\n  'above',\n  'ablaze',\n  'bronze',\n  'well off',\n  'far off',\n  'aloof',\n  'soundproof',\n  'weatherproof',\n\n  // -ing\n  'menacing',\n  'longstanding',\n  'impending',\n  'far reaching',\n  'scathing',\n  'foregoing',\n  'ongoing',\n  'easygoing',\n  'lumbering',\n  'nausiating',\n  'preexisting',\n  'left wing',\n  'right wing',\n  'mindblowing',\n  'knowing',\n  'appetizing',\n  'appalling',\n\n  'smug',\n  // -ish\n  'snobbish',\n  'selfish',\n  'hellish',\n  'foolish',\n  'stylish',\n  'squeamish',\n  'loutish',\n\n  'mammoth',\n  'north',\n  'south',\n  'punjabi',\n  'mini',\n  'a priori',\n  'ok',\n  'brisk',\n\n  // -al\n  'global',\n  'ethereal',\n  'legal',\n  'illegal',\n  'conjugal',\n  'lethal',\n  'racial',\n  'beneficial',\n  'artificial',\n  'crucial',\n  'colonial',\n  'initial',\n  'influential',\n  'partial',\n  'impartial',\n  'final',\n  'literal',\n  'colossal',\n  'equal',\n  'usual',\n  'actual',\n  'archival',\n  'rival',\n  'royal',\n\n  // -el\n  'civil',\n  'all',\n  'overall',\n  'still',\n  'old school',\n\n  // -ful\n  'peaceful',\n  'graceful',\n  'vengeful',\n  'shameful',\n  'careful',\n  'useful',\n  'hateful',\n  'grateful',\n  'tasteful',\n  'wasteful',\n  'beautiful',\n  'gainful',\n  'painful',\n  'helpful',\n  'doubtful',\n  'forgetful',\n  'fretful',\n  'delightful',\n  'rightful',\n  'thoughtful',\n  'wistful',\n\n  'dim',\n  'longterm',\n  'ad infinitum',\n  'urban',\n  'suburban',\n  'mammalian',\n  'deadpan',\n\n  // -en\n  'wooden',\n  'barren',\n  'rotten',\n  'craven',\n  'proven',\n  'frozen',\n\n  'foreign',\n  'benign',\n  'main',\n  'certain',\n  'highfalutin',\n  'spot on',\n  'modern',\n  'northern',\n  'southern',\n  'western',\n  'upside down',\n  'gung ho',\n  'macho',\n  'in vitro',\n  'de facto',\n  'ipso facto',\n  'asleep',\n  'tip top',\n  'nonstop',\n  'fed up',\n  'hard up',\n  'familiar',\n\n  // -er\n  'somber',\n  'sheer',\n  'eager',\n  'together',\n  'other',\n  'former',\n  'inner',\n  'proper',\n  'improper',\n  'upper',\n  'super duper',\n  'super',\n  'lesser',\n  'outer',\n  'over',\n\n  'junior',\n  'inferior',\n  'prior',\n  'major',\n  'indoor',\n  'outdoor',\n  'backwards',\n  'sui generis',\n  'gratis',\n  'for keeps',\n  'bogus',\n  'dangerous',\n  'offbeat',\n  'upbeat',\n\n  // -ct\n  'abstract',\n  'intact',\n  'exact',\n  // 'perfect',\n  'imperfect',\n  'erect',\n  'indirect',\n  'incorrect',\n  'derelict',\n  'distinct',\n\n  'discreet',\n  'soviet',\n  'upset',\n  'makeshift',\n  'overweight',\n  'lightweight',\n  'overnight',\n  'uptight',\n  'overwrought',\n  'illicit',\n  'implicit',\n  'explicit',\n  'nonprofit',\n  'difficult',\n\n  // -ant\n  'vacant',\n  'significant',\n  'insignificant',\n  'abundant',\n  'redundant',\n  'extravagant',\n  'elegant',\n  'arrogant',\n  'obediant',\n  'defiant',\n  'nonchalant',\n  'vigilant',\n  'dormant',\n  'dominant',\n  'resonant',\n  'vibrant',\n  'exuberant',\n  'tolerant',\n  'flagrant',\n  'ignorant',\n  'aberrant',\n  'reluctant',\n  'exultant',\n  'important',\n  'distant',\n  'resistant',\n  'constant',\n  'relevant',\n  'irrelevant',\n  'observant',\n  'cognizant',\n\n  // -ent\n  'bent',\n  'fluorescent',\n  'interdependent',\n  'stringent',\n  'emergent',\n  'divergent',\n  'urgent',\n  'efficient',\n  'permanent',\n  'eminent',\n  'imminent',\n  'prominent',\n  'pertinent',\n  'apparent',\n  'transparent',\n  'absent',\n  'fluent',\n  'affluent',\n  'frequent',\n  'infrequent',\n  'subsequent',\n  'consequent',\n  'congruent',\n  'insolvent',\n\n  'conjoint',\n  'disjoint',\n  'in front',\n  'up front',\n  'moot',\n  'apt',\n  'adept',\n  'nondescript',\n  // 'exempt',\n  'abrupt',\n\n  'inert',\n  'overt',\n  'covert',\n  'east',\n  'abreast',\n  'steadfast',\n  'honest',\n  'populist',\n  'against',\n  'most',\n  'uttermost',\n  'robust',\n  'devout',\n  'kaput',\n  'next',\n  'in situ',\n  'brand new',\n  'below',\n  'faux',\n  'everyday',\n  'okay',\n  'nearby',\n  'muddy',\n  'speedy',\n  'moldy',\n  'handy',\n  'cutesy',\n  'creepy',\n  'sleepy',\n  'drowsy',\n  'folksy',\n  'handsy',\n  'fiery',\n  'flowery',\n  'cheery',\n  'chintzy',\n\n  // -ly\n  'kindly',\n  'monthly',\n  'daily',\n  'weekly',\n  'seemly',\n  'womanly',\n  'yearly',\n  'scholarly',\n  'elderly',\n  'orderly',\n  'quarterly',\n  'neighborly',\n  'hourly',\n  'surly',\n  'nightly',\n  'many',\n  'sparkly',\n  // 'approximately',\n  // 'fortunately',\n  'lately',\n  // 'ultimately',\n\n  // -ry\n  'legendary',\n  'secondary',\n  'dreary',\n  'tertiary',\n  'primary',\n  'customary',\n  'honorary',\n  'temporary',\n  'arbitrary',\n  'contrary',\n  'necessary',\n  'supervisory',\n  'sensory',\n  'mandatory',\n  'inhibitory',\n  'auditory',\n  'statutory',\n  'sorry',\n  'hairy',\n  'uppity',\n  'guilty',\n  'woozy',\n\n  // un-prefix that aren't verbs\n  'unabated',\n  'unappealing',\n  'unassuming',\n  'unattended',\n  'unauthorized',\n  'unbecoming',\n  'unchallenged',\n  'uncharted',\n  'unchecked',\n  'uncircumcised',\n  'unconvincing',\n  'undecided',\n\n  'under',\n  'underage',\n  'undercover',\n  'underhand',\n  'underlying',\n  'underneath',\n  'underprivileged',\n  'undersized',\n  'underwater',\n  'underway',\n  'underweight',\n\n  'undisclosed',\n  'undisputed',\n  'undocumented',\n  'undue',\n  'unemployed',\n  'unending',\n  'uneven',\n  'unexpected',\n  'unexplained',\n  'unfair',\n  'unfinished',\n  'unforeseen',\n  'unguarded',\n  'unheard',\n  'uninsured',\n  'uninterested',\n  'uninterrupted',\n  'uninvited',\n  'unique',\n  'universal',\n  'unknown',\n  'unmarried',\n  'unmatched',\n  'unmet',\n  'unnamed',\n  'unnoticed',\n  'unopposed',\n  'unpaid',\n  'unparalleled',\n  'unprecedented',\n  'unrecognized',\n  'unregulated',\n  'unrelated',\n  'unrelenting',\n  'unrequited',\n  'unreserved',\n  'unresolved',\n  'unruly',\n  'unseen',\n  'unsettled',\n  'unsightly',\n  'unsold',\n  'unspent',\n  'unspoken',\n  'unsupervised',\n  'unsuspecting',\n  'untapped',\n  'untested',\n  'untold',\n  'untouched',\n  'unused',\n  'unwanted',\n  'unwarranted',\n  'unwieldy',\n\n  'recent',\n  'overseas',\n  'monochrome',\n  'contradictory',\n  'satisfactory',\n\n  'skilled',\n  'antique',\n  'dependent',\n  'independent',\n  'modest',\n\n  // -ide\n  'bona fide',\n  'bonafide',\n  // -ate\n  'affectionate',\n  'celebate',\n  'corporate',\n  'illegitimate',\n  'inconsiderate',\n  'inordinate',\n  'proximate',\n\n  'renowned',\n  'beside',\n  'alright',\n  'top notch',\n  'self sufficient',\n  'middle aged',\n  'no more',\n  'ashen',\n  'scarlet',\n  'alone',\n  'homesick',\n  'longtime',\n  'bigtime',\n  'inside',\n  'outside',\n  'artsy',\n  'antsy',\n  'golden',\n  'bare',\n  'subpar',\n  'ingrown',\n  'agreeable',\n  'vile',\n  'mega',\n  'frilly',\n  'indulgent',\n  'win win',\n  'strung out',\n  'whacked out',\n  'crystal clear',\n  'skin deep',\n  'pent up',\n  'partisan',\n  'bipartisan',\n  'ice cold',\n  'one on one',\n  'ongoing',\n  'literary',\n  'beneath',\n  'alike',\n  'mainstream',\n  'metropolitan',\n  'overboard',\n  'mediocre',\n  'maritime',\n  'paranoid',\n  'compulsory',\n  'hardcore',\n  'clockwise',\n  'counterclockwise',\n  'multifaceted',\n  'lighthearted',\n  'belated',\n  'bestselling',\n  'breathtaking',\n  'infinite',\n  'southwest',\n  'northwest',\n  'southeast',\n  'northeast',\n  'indie',\n  'nude',\n  'destitute',\n  'obligated',\n  'naval',\n  'puzzled',\n  'overdue',\n  'overhand',\n  'overhead',\n  'hardworking',\n  'gauche',\n  'stout',\n\n  'abject',\n  'adamant',\n  'agile',\n  // 'articulate',\n  'astute',\n  'austere',\n  'blithe',\n  'circumspect',\n  'coy',\n  'eloquent',\n  'enough',\n  'expedient',\n  'fervent',\n  'fragrant',\n  'frugal',\n  'hoary',\n  'inane',\n  'inept',\n  'jittery',\n  'maverick',\n  'obedient',\n  'offhand',\n  'orotund',\n  'rampant',\n  'reprobate',\n  'sinister',\n  'slippery',\n  'stalwart',\n  'stubborn',\n  'sublime',\n  'thorny',\n  'trenchant',\n  'vagrant',\n  'wanton',\n  'meager',\n  'doting',\n  'crafty',\n  'morbid',\n  'acquiescent',\n  'despondent',\n  'slipshod',\n  'contrite',\n  'recalcitrant',\n  'merry',\n  'condescending',\n  'abstruse',\n  'erstwhile',\n  'comatose',\n  'desultory',\n  'pert',\n  'curmudgeonly',\n  'cogent',\n  'spry',\n  'demure',\n  'docile',\n  'watery',\n  'succinct',\n  'major',\n  'minor',\n  'fast paced',\n  'chewy',\n  'drunk',\n  'greasy',\n  'pointy',\n  'testy',\n  'sold out',\n]\n"
  },
  {
    "path": "data/lexicon/adjectives/comparables.js",
    "content": "//adjectives that convert to superlative/comparative form\nexport default [\n  'absurd',\n  'angry',\n  'awesome',\n  'bad',\n  'bald',\n  'bawdy',\n  'big',\n  'bitter',\n  'black',\n  'bland',\n  'blond',\n  'bloody',\n  'blue',\n  'bold',\n  'bouncy',\n  'brash',\n  'brave',\n  'bright',\n  'brilliant',\n  'broad',\n  'brown',\n  'buff',\n  'burly',\n  'busy',\n  'cagey',\n  'cheap',\n  'cheesy',\n  'chilly',\n  'clever',\n  'cloudy',\n  'coarse',\n  'cold',\n  'common',\n  'costly',\n  'cowardly',\n  'cozy',\n  'crisp',\n  'cruel',\n  'cuddly',\n  'curly',\n  'cute',\n  'dapper',\n  'dark',\n  'dead',\n  'deadly',\n  'deaf',\n  'dear',\n  'deep',\n  'dense',\n  'dire',\n  'dirty',\n  'divine',\n  'dizzy',\n  'drunk',\n  'dumb',\n  'early',\n  'earthly',\n  'eastern',\n  'easy',\n  'eerie',\n  'essential',\n  'evil',\n  'extreme',\n  'far',\n  'faulty',\n  'feeble',\n  'fierce',\n  'financial',\n  'flat',\n  'flirty',\n  'foamy',\n  'fond',\n  'formal',\n  'frail',\n  'fresh',\n  'friendly',\n  'full',\n  'fun',\n  'funny',\n  'furry',\n  'gaudy',\n  'gay',\n  'gentle',\n  'genuine',\n  'ghastly',\n  'ghostly',\n  'giant',\n  'giddy',\n  'glad',\n  'glib',\n  'gloomy',\n  'goofy',\n  'grand',\n  'gray',\n  'great',\n  'greedy',\n  'green',\n  'grey',\n  'grim',\n  'grisly',\n  'groovy',\n  'gross',\n  'gruesome',\n  'handsome',\n  'happy',\n  'hard',\n  'hardy',\n  'harsh',\n  'heady',\n  'hearty',\n  'heavenly',\n  'heavy',\n  'hefty',\n  'hesitant',\n  'high',\n  'hilly',\n  'homely',\n  'hot',\n  'huge',\n  'humble',\n  'humid',\n  'hungry',\n  'icy',\n  'ill',\n  'insecure',\n  'intellegent',\n  'intermediate',\n  'intimate',\n  'jolly',\n  'juicy',\n  'keen',\n  'kind',\n  'lame',\n  'large',\n  'late',\n  'leery',\n  'lewd',\n  'likely',\n  'lil',\n  'limp',\n  'little',\n  'lively',\n  'lofty',\n  'lonely',\n  'long',\n  'loose',\n  'loud',\n  'lousy',\n  'lovely',\n  'low',\n  'lowly',\n  'loyal',\n  'lucky',\n  'mad',\n  'measly',\n  'meaty',\n  'meek',\n  'mellow',\n  'mild',\n  'moist',\n  'moody',\n  'mundane',\n  'mute',\n  'naive',\n  'near',\n  'neat',\n  'nerdy',\n  'new',\n  'nibbly',\n  'nice',\n  'nimble',\n  'noble',\n  'noisy',\n  'normal',\n  'nosy',\n  'numb',\n  'odd',\n  'oily',\n  'old',\n  'orange',\n  'phony',\n  'pink',\n  'plain',\n  'pleasant',\n  'polite',\n  'poor',\n  'pregnant',\n  'pricey',\n  'prickly',\n  'profound',\n  'proud',\n  'puny',\n  'pure',\n  'purple',\n  'quaint',\n  'quick',\n  'quiet',\n  'ragged',\n  'rainy',\n  'random',\n  'rapid',\n  'rare',\n  'raw',\n  'ready',\n  'real',\n  'red',\n  'remote',\n  'rich',\n  'ripe',\n  'ritzy',\n  'romantic',\n  'roomy',\n  'rosy',\n  'rough',\n  'round',\n  'rude',\n  'sad',\n  'safe',\n  'saintly',\n  'salty',\n  'savvy',\n  'scanty',\n  'scarce',\n  'scary',\n  'severe',\n  'sexy',\n  'shady',\n  'shallow',\n  'sharp',\n  'shiny',\n  'shrill',\n  'shy',\n  'sick',\n  'sickly',\n  'silly',\n  'simple',\n  'skinny',\n  'sleek',\n  'slender',\n  'slight',\n  'slim',\n  'slimy',\n  'sly',\n  'small',\n  'smart',\n  'smelly',\n  'social',\n  'soft',\n  'solemn',\n  'solid',\n  'soon',\n  'sore',\n  'special',\n  'spicy',\n  'sprightly',\n  'stale',\n  'stark',\n  'stately',\n  'steady',\n  'steep',\n  'stern',\n  'stiff',\n  'straight',\n  'strange',\n  'strict',\n  'strong',\n  'stupid',\n  'sturdy',\n  'substantial',\n  'subtle',\n  'sudden',\n  'superficial',\n  'surreal',\n  'sweet',\n  'swift',\n  'tall',\n  'tame',\n  'tart',\n  'tawdry',\n  'tense',\n  'thick',\n  'thirsty',\n  'tidy',\n  'tight',\n  'timely',\n  'tiny',\n  'tired',\n  'tough',\n  'tranquil',\n  'trendy',\n  'true',\n  'ugly',\n  'vague',\n  'vain',\n  'vast',\n  'verdant',\n  'vulgar',\n  'wary',\n  'weak',\n  'weary',\n  'weird',\n  'whiny',\n  'white',\n  'wicked',\n  'wide',\n  'wild',\n  'wily',\n  'windy',\n  'wiry',\n  'wise',\n  'wry',\n  'yellow',\n  'young',\n  'zany',\n]\n"
  },
  {
    "path": "data/lexicon/dates/dates.js",
    "content": "// uncontroversial date words\nexport default [\n  'today',\n  'tomorrow',\n  'tmr',\n  'tmrw',\n  'yesterday',\n  'weekend',\n  'weekends',\n  'week end',\n  'ago',\n  'someday',\n  'oneday',\n]\n"
  },
  {
    "path": "data/lexicon/dates/durations.js",
    "content": "export default [\n  'century',\n  'centuries',\n  'day',\n  'days',\n  'decade',\n  'decades',\n  'hour',\n  'hours',\n  'hr',\n  'hrs',\n  'millisecond',\n  'milliseconds',\n  'minute',\n  'minutes',\n  // 'min',\n  'month',\n  'months',\n  'sec',\n  'secs',\n  // 'week end',\n  'weekend',\n  'week',\n  'weeks',\n  'wk',\n  'wks',\n  'year',\n  'years',\n  'yr',\n  'yrs',\n  'quarter',\n  // 'quarters',\n  'qtr',\n  'season',\n]\n"
  },
  {
    "path": "data/lexicon/dates/months.js",
    "content": "export default [\n  // 'january',\n  'february',\n  // 'april',\n  // 'june',\n  'july',\n  // 'august',\n  'september',\n  'october',\n  'november',\n  'december',\n  //abbreviations are elsewhere\n]\n"
  },
  {
    "path": "data/lexicon/dates/weekdays.js",
    "content": "export default [\n  'monday',\n  'tuesday',\n  'wednesday',\n  'thursday',\n  'friday',\n  'saturday',\n  'sunday',\n  'mon',\n  'tues',\n  // 'wed',\n  'thurs',\n  'fri',\n  // 'sat',\n  // 'sun',\n  'mondays',\n  'tuesdays',\n  'wednesdays',\n  'thursdays',\n  'fridays',\n  'saturdays',\n  'sundays',\n]\n"
  },
  {
    "path": "data/lexicon/index.js",
    "content": "//directory of files to pack with `node scripts/pack.js`\n//they are stored in compressed form\nimport lex from './misc.js'\n\nimport demonyms from './nouns/demonyms.js'\nimport organizations from './nouns/organizations.js'\nimport possessives from './nouns/possessives.js'\nimport actors from './nouns/actors.js'\nimport pronouns from './nouns/pronouns.js'\nimport singulars from './nouns/singulars.js'\nimport sportsTeams from './nouns/sportsTeams.js'\nimport uncountables from './nouns/uncountables.js'\nimport properNouns from './nouns/properNouns.js'\n\nimport cities from './places/cities.js'\nimport countries from './places/countries.js'\nimport femaleNames from './people/femaleNames.js'\nimport firstnames from './people/firstnames.js'\nimport lastnames from './people/lastnames.js'\nimport maleNames from './people/maleNames.js'\nimport honorifics from './people/honorifics.js'\nimport people from './people/people.js'\nimport places from './places/places.js'\nimport regions from './places/regions.js'\n\nimport dates from './dates/dates.js'\nimport months from './dates/months.js'\nimport weekdays from './dates/weekdays.js'\nimport durations from './dates/durations.js'\n\nimport infinitives from './verbs/infinitives.js'\nimport modals from './verbs/modals.js'\nimport phrasals from './verbs/phrasals.js'\nimport verbs from './verbs/verbs.js'\nimport participles from './verbs/participles.js'\n\nimport adjectives from './adjectives/adjectives.js'\nimport comparables from './adjectives/comparables.js'\n\nimport units from './numbers/units.js'\nimport ordinals from './numbers/ordinals.js'\nimport cardinals from './numbers/cardinals.js'\nimport multiples from './numbers/multiples.js'\n\nimport adverbs from './misc/adverbs.js'\nimport conjunctions from './misc/conjunctions.js'\nimport currencies from './misc/currencies.js'\nimport determiners from './misc/determiners.js'\nimport expressions from './misc/expressions.js'\nimport prepositions from './misc/prepositions.js'\n\nimport actorVerb from './switches/actor-verb.js'\nimport adjGerund from './switches/adj-gerund.js'\nimport adjNoun from './switches/adj-noun.js'\nimport adjPast from './switches/adj-past.js'\nimport adjPresent from './switches/adj-present.js'\nimport nounVerb from './switches/noun-verb.js'\nimport nounGerund from './switches/noun-gerund.js'\nimport personNoun from './switches/person-noun.js'\nimport personDate from './switches/person-date.js'\nimport personVerb from './switches/person-verb.js'\nimport personPlace from './switches/person-place.js'\nimport personAdj from './switches/person-adj.js'\nimport unitNoun from './switches/unit-noun.js'\n\n//add-in the generic, flat word-lists\nconst data = [\n  // nouns\n  [demonyms, 'Demonym'],\n  [organizations, 'Organization'],\n  [possessives, 'Possessive'],\n  [actors, 'Actor'],\n  [pronouns, 'Pronoun'],\n  [singulars, 'Singular'],\n  [sportsTeams, 'SportsTeam'],\n  [uncountables, 'Uncountable'],\n  [properNouns, 'ProperNoun'],\n\n  // numbers\n  [ordinals, 'Ordinal'],\n  [cardinals, 'Cardinal'],\n  [units, 'Unit'],\n  [multiples, 'Multiple'],\n\n  [cities, 'City'],\n  [countries, 'Country'],\n  [places, 'Place'],\n  [regions, 'Region'],\n\n  [weekdays, 'WeekDay'],\n  [months, 'Month'],\n  [dates, 'Date'],\n  [durations, 'Duration'],\n\n  [femaleNames, 'FemaleName'], //5kb\n  [firstnames, 'FirstName'],\n  [lastnames, 'LastName'], //3k\n  [maleNames, 'MaleName'], //5kb\n  [honorifics, 'Honorific'],\n  [people, 'Person'],\n\n  [adjectives, 'Adjective'],\n  [adverbs, 'Adverb'],\n  [conjunctions, 'Conjunction'],\n  [currencies, 'Currency'],\n  [determiners, 'Determiner'],\n  [expressions, 'Expression'],\n  [prepositions, 'Preposition'],\n  [comparables, 'Comparable'],\n\n  [infinitives, 'Infinitive'], //3kb\n  [modals, 'Modal'],\n  [verbs, 'Verb'],\n  [participles, 'Participle'],\n  [phrasals, 'PhrasalVerb'], //3kb\n\n  // switches - 10kb\n  [actorVerb, 'Actor|Verb'],\n  [adjGerund, 'Adj|Gerund'],\n  [adjNoun, 'Adj|Noun'],\n  [adjPast, 'Adj|Past'],\n  [adjPresent, 'Adj|Present'],\n  [nounVerb, 'Noun|Verb'],\n  [nounGerund, 'Noun|Gerund'],\n  [personNoun, 'Person|Noun'],\n  [personPlace, 'Person|Place'],\n  [personDate, 'Person|Date'],\n  [personVerb, 'Person|Verb'],\n  [personAdj, 'Person|Adj'],\n  [unitNoun, 'Unit|Noun'],\n]\nfor (let i = 0; i < data.length; i++) {\n  const list = data[i][0]\n  for (let o = 0; o < list.length; o++) {\n    // log duplicates\n    // if (lex[list[o]]) {\n    //   console.log(list[o] + '  ' + lex[list[o]] + ' ' + data[i][1])\n    // }\n    const str = list[o]\n    //do some linting\n    if (str.match(/[.,0-9-]/) || str.trim().toLowerCase() !== str) {\n      console.log(`'${str}'`) //eslint-disable-line\n    }\n    lex[str] = data[i][1]\n  }\n}\n\nexport default lex\n// console.log(Object.keys(lex).length);\n// console.log(lex[`will want`])\n"
  },
  {
    "path": "data/lexicon/misc/adverbs.js",
    "content": "// most are generated from adjective list at runtime\nexport default [\n  'a lot',\n  'a posteriori',\n  'abroad',\n  'ad nauseam',\n  'again',\n  'all but',\n  'all that',\n  'almost',\n  'already',\n  'also',\n  'always',\n  'anymore',\n  'anyway',\n  'alongside',\n  'apart',\n  'aside',\n  'as soon',\n  'at best',\n  'at large',\n  'at least',\n  'at most',\n  'at worst',\n  'away',\n  'by far',\n  'by now',\n  'de jure',\n  'de trop',\n  'definitely',\n  'directly',\n  'en masse',\n  // 'enough',\n  'ever',\n  'for example',\n  'for good',\n  'for sure',\n  'forever',\n  'fully',\n  'further',\n  'furthermore',\n  'hence',\n  'indeed',\n  'instead',\n  'just about',\n  'just',\n  'likewise',\n  'kinda',\n  'maybe',\n  'meanwhile',\n  'awhile',\n  'more',\n  'moreover',\n  'newly',\n  'no longer',\n  'not only',\n  'not withstanding',\n  'of course',\n  'often',\n  'once again',\n  'once more',\n  'once',\n  'only',\n  'par excellence',\n  'per se',\n  'perhaps',\n  'point blank',\n  'quite',\n  'randomly',\n  'rather',\n  'really',\n  'so',\n  'somehow',\n  'sometimes',\n  'somewhat',\n  'sort of',\n  'seldom',\n  'such',\n  'then',\n  'thus',\n  'too',\n  'totally',\n  // 'toward',\n  'twice',\n  'up to',\n  'upwards of',\n  'tiny bit',\n  'very',\n  'well',\n  'backward',\n  'hella',\n  'by no means',\n  'altogether',\n  \"outright\",\n  'ultimately',\n  'fucking',\n]\n"
  },
  {
    "path": "data/lexicon/misc/conjunctions.js",
    "content": "export default [\n  // 'after',\n  'although',\n  'and',\n  'as',\n  'as far as',\n  'as if',\n  // 'as long as',\n  'as much as',\n  'as soon as',\n  'as though',\n  'because',\n  'before',\n  'but',\n  'by the time',\n  'cuz',\n  'even',\n  'even if',\n  'even though',\n  'how',\n  'however',\n  'if',\n  'if only',\n  'if then',\n  'if when',\n  'inasmuch',\n  'in as much as',\n  'in case',\n  'in order that',\n  'in order to',\n  'just as',\n  'no matter',\n  'nor',\n  'now',\n  'now since',\n  'now that',\n  'now when',\n  'or',\n  'or not',\n  'otherwise',\n  'plus',\n  // 'provided',\n  'provided that',\n  'since',\n  // 'so that',\n  'supposing',\n  'than',\n  'therefore',\n  'tho',\n  'though',\n  // 'till',\n  'to',\n  //  'unless',\n  'until',\n  'til',\n  // 'versus',\n  // 'what',\n  //  'when',\n  'whenever',\n  //  'where',\n  // 'whereas',\n  'where if',\n  'wherever',\n  'whether',\n  'while',\n  'whilst',\n  'whoever',\n  // 'whose',\n  // 'why',\n  'yet',\n  'either',\n  \"whereby\",\n  \"cos\",\n  \"coz\",\n]\n"
  },
  {
    "path": "data/lexicon/misc/currencies.js",
    "content": "export default [\n  '¢',\n  '$',\n  '£',\n  '¥',\n  '฿',\n  '₡',\n  '€',\n  '₭',\n  '₨',\n  '﷼',\n  'aud',\n  'baht',\n  'bitcoin',\n  'bitcoins',\n  'cent',\n  'cents',\n  'cny',\n  'denar',\n  'denars',\n  'dime',\n  'dimes',\n  'dinar',\n  'dinars',\n  'dirham',\n  'dirhams',\n  'dkk',\n  'dobra',\n  'dobras',\n  'dollar',\n  'dollars',\n  'eur',\n  'euros',\n  'forint',\n  'forints',\n  'franc',\n  'francs',\n  'gbp',\n  'hkd',\n  'inr',\n  'jpy',\n  'kn',\n  'kr',\n  'ils',\n  'krona',\n  'kronas',\n  'krw',\n  'kwanza',\n  'kwanzas',\n  'kyat',\n  'kyats',\n  'lempira',\n  'lempiras',\n  'lira',\n  'liras',\n  'pence',\n  'pences',\n  'pennies',\n  'peso',\n  'pesos',\n  'pound sterling',\n  'pound sterlings',\n  'rouble',\n  'roubles',\n  'rp',\n  'rupee',\n  'rupees',\n  'shekel',\n  'shekels',\n  'sheqel',\n  'sheqels',\n  'shilling',\n  'shillings',\n  'sterling',\n  'sterlings',\n  'usd',\n  'xaf',\n  'xof',\n  'yen',\n  'yuan',\n  'yuans',\n  'zł',\n  'zloty',\n  'zlotys',\n  'ден',\n  'лв',\n  'руб',\n]\n"
  },
  {
    "path": "data/lexicon/misc/determiners.js",
    "content": "export default [\n  'a',\n  'an',\n  'another',\n  'any',\n  'both',\n  'each',\n  'else',\n  'every',\n  'few',\n  'least',\n  'much',\n  'neither',\n  'own',\n  'plenty',\n  'some',\n  'several',\n  'that',\n  'the',\n  'these',\n  'this',\n  'those',\n  'various',\n  'whatever',\n  'whichever',\n  'tha',\n  //some other languages (what could go wrong?)\n  // 'la',\n  'le',\n  'les',\n  'des',\n  'de',\n  'du',\n  'el',\n]\n"
  },
  {
    "path": "data/lexicon/misc/expressions.js",
    "content": "// also called 'interjections'\nexport default [\n  'a la',\n  'ah',\n  'aha',\n  'ahem',\n  'ahoy',\n  'alas',\n  'amen',\n  'argh',\n  'bah',\n  'bam',\n  'boo',\n  'booya',\n  'bravo',\n  'brr',\n  'bye',\n  'congratulations',\n  'cowabunga',\n  'dammit',\n  'damn',\n  'damnit',\n  'dang',\n  'drat',\n  'duh',\n  'eek',\n  'eep',\n  'eh',\n  'et cetera',\n  'eww',\n  'fuck',\n  'gah',\n  'gee whiz',\n  'gee',\n  'golly',\n  'good grief',\n  'goodbye',\n  'gosh',\n  'great scott',\n  'grr',\n  'haha',\n  'hahaha',\n  'hai',\n  'hallelujah',\n  'hee',\n  'hello',\n  'hey',\n  'hi',\n  'hip hip hooray',\n  'holy cow',\n  'holy moly',\n  'holy smokes',\n  'holy',\n  'hooray',\n  'hooyah',\n  'huh',\n  'humph',\n  'hurrah',\n  'hurray',\n  'huzzah',\n  'jeez',\n  'lah',\n  'lmao',\n  'lmfao',\n  'lol',\n  'lols',\n  'meh',\n  'mmm',\n  'nah',\n  'nope',\n  'oh',\n  'ohh',\n  'oi',\n  'ooh',\n  'ooo',\n  'oops',\n  'ouch',\n  'ow',\n  'oy',\n  'pff',\n  'phew',\n  'phooey',\n  'please',\n  'plz',\n  'pow',\n  'psst',\n  'sheesh',\n  'shhh',\n  'shit',\n  'tsk',\n  'tut tut',\n  'ugh',\n  'uh huh',\n  'uh oh',\n  'uh',\n  'uhh',\n  'uhm',\n  'voila',\n  'wahoo',\n  'whee',\n  'whew',\n  'whoa',\n  'whoops',\n  'word up',\n  'wow',\n  'wtaf',\n  'wtf',\n  'ya',\n  'yaa',\n  // 'yahoo',\n  'yay',\n  'yeah',\n  'yep',\n  'yes',\n  'yikes',\n  'yipee',\n  'heck',\n  'yippee',\n  'yuck',\n  'yup',\n  `d'oh`,\n  'shoo',\n  'there now',\n  'aye',\n  'cmon', //come on\n  'excuse me',\n  'oh well',\n  'oh hell',\n  'oh my god',\n  'oh my gosh',\n  // 'thank you',\n  'whatsoever',\n  'btw',\n  'nevertheless',\n  'pls',\n  'ahh',\n  'sic',\n  'leh',\n  'wat',\n  'omg',\n  'aka',\n  'holla',\n  'very well',\n\n  'eureka',\n  'farewell',\n  'yea',\n  'nay',\n  'yah',\n]\n"
  },
  {
    "path": "data/lexicon/misc/prepositions.js",
    "content": "export default [\n  'about',\n  'across',\n  'after',\n  'along',\n  'amid',\n  'amidst',\n  'among',\n  'amongst',\n  'apropos',\n  'around',\n  'as long as',\n  'as',\n  'at',\n  'atop',\n  'barring',\n  'besides',\n  'between',\n  'bout',\n  'by',\n  'chez',\n  'circa',\n  'despite',\n  'down',\n  'during',\n  'except',\n  'for',\n  'from',\n  'in',\n  'into',\n  'mid',\n  // 'midst',\n  'notwithstanding',\n  'of',\n  'off',\n  'on',\n  'onto',\n  'out',\n  'per',\n  'qua',\n  'sans',\n  'since',\n  'so that',\n  'such as',\n  'than',\n  'through',\n  'throughout',\n  'thereby',\n  'thru',\n  'till',\n  'toward',\n  'towards',\n  'unlike',\n  'until',\n  'up',\n  'upon',\n  'versus',\n  'via',\n  'vis a vis',\n  'w/o',\n  'whereas',\n  'with',\n  'with whom',\n  'within',\n  'without',\n  'as a whole',\n  'in part',\n  'in effect',\n  // `'o`,\n  // `a'`,\n  // `o'`,\n]\n"
  },
  {
    "path": "data/lexicon/misc.js",
    "content": "export default {\n  better: 'Comparative',\n  farther: 'Comparative',\n  finer: 'Comparative',\n  fewer: 'Comparative',\n  earlier: 'Superlative',\n  sounds: 'PresentTense',\n\n  unless: 'Condition',\n  lest: 'Condition',\n\n  said: 'PastTense',\n  had: 'PastTense',\n  been: 'PastTense',\n  began: 'PastTense',\n  came: 'PastTense',\n  did: 'PastTense',\n  meant: 'PastTense',\n  went: 'PastTense',\n  taken: 'PastTense',\n  lied: 'PastTense',\n\n  going: 'Gerund',\n  being: 'Gerund',\n  according: 'Gerund',\n  resulting: 'Gerund',\n  staining: 'Gerund',\n  doin: 'Gerund',\n\n  no: 'Expression',\n  non: 'Negative',\n  never: 'Negative',\n  not: 'Negative',\n\n  where: 'QuestionWord',\n  why: 'QuestionWord',\n  when: 'QuestionWord',\n  who: 'QuestionWord',\n  whom: 'QuestionWord',\n  whose: 'QuestionWord',\n  what: 'QuestionWord',\n  which: 'QuestionWord',\n  \"how's\": 'QuestionWord',\n  'how come': 'QuestionWord',\n\n  'myself': 'Reflexive',\n  'yourself': 'Reflexive',\n  'yourselves': 'Reflexive',\n  'theirselves': 'Reflexive',\n  'himself': 'Reflexive',\n  'herself': 'Reflexive',\n  'oneself': 'Reflexive',\n  'itself': 'Reflexive',\n  'ourselves': 'Reflexive',\n  'themselves': 'Reflexive',\n  'theirself': 'Reflexive',\n  'ourself': 'Reflexive',\n  'themself': 'Reflexive',\n\n  //misc\n  records: 'Plural',\n  feet: 'Plural',\n  'a few': 'Value',\n  'ones': 'Plural', //those ones\n  'dickens': 'Plural',\n  'greens': 'Plural',\n\n\n  // \n  'come here': 'Imperative',\n  'beware': 'Imperative',\n  // 'go away': 'Imperative',\n  // 'hurry up': 'Imperative',\n  // 'make sure': 'Imperative',\n  // 'stand back': 'Imperative'\n  // 'subpar': 'Adjective'\n\n  // double-conjugations\n  'kneeled': 'PastTense',\n  'leaped': 'PastTense',\n  'msged': 'PastTense',\n  'bests': 'PresentTense',\n\n  // funny switches\n  'leaves': 'Plural|Verb'\n}\n"
  },
  {
    "path": "data/lexicon/nouns/actors.js",
    "content": "//professions 'lawyer' that aren't covered by verb.to_actor()\n\nexport default [\n  'accountant',\n  'acquaintance',\n  'acrobat',\n  'activist',\n  'actor',\n  'actress',\n  'administrator',\n  'admiral',\n  'adolescent',\n  'adopted',\n  'adult',\n  'adventurer',\n  'advisor',\n  'agent',\n  'alien',\n  'ally',\n  'analyst',\n  'anarchist',\n  'ancestor',\n  'animator',\n  'announcer',\n  'anybody',\n  'apostle',\n  'apparition',\n  'apprentice',\n  'archbishop',\n  'aristocrat',\n  'artisan',\n  'artist',\n  'assistant',\n  'astronaut',\n  'astronomer',\n  'athiest',\n  'athlete',\n  'attendant',\n  'attorney',\n  'aunt',\n  'auntie',\n  'author',\n  'autocrat',\n  'ayatullah',\n  'baby',\n  'baker',\n  'banker',\n  'barber',\n  'baron',\n  'baroness',\n  'bartender',\n  'beatboxer',\n  'beings',\n  'creator',\n  'bicyclist',\n  'bishop',\n  'blogger',\n  'bohemian',\n  'boogeyman',\n  'boss',\n  'boy',\n  'boyfriend',\n  'bricklayer',\n  'bride',\n  'brigadier',\n  'bro',\n  'broker',\n  'brother',\n  'buddhist',\n  'buddy',\n  'builder',\n  'burglar',\n  'businessman',\n  'businessperson',\n  'businesswoman',\n  'butcher',\n  'cadet',\n  'captain',\n  'carer',\n  'caretaker',\n  'carpenter',\n  'cashier',\n  'celebrity',\n  'ceo',\n  'cfo',\n  'chairman',\n  'chairwoman',\n  'champion',\n  'chancellor',\n  'chaplain',\n  'character',\n  'cheerleader',\n  'chef',\n  'chief',\n  'child',\n  'chum',\n  'citizen',\n  'citizens',\n  'cleaner',\n  'cleric',\n  'clerk',\n  'client',\n  'clown',\n  'coworker',\n  'colleague',\n  'colonel',\n  'columnist',\n  'comedian',\n  'commander',\n  'commenter',\n  'commissioner',\n  'companion',\n  'composer',\n  'comrade',\n  'confidant',\n  'confidante',\n  'congressman',\n  'congresswoman',\n  'constable',\n  'consultant',\n  'contact',\n  'contender',\n  'contributor',\n  'controller',\n  'cook',\n  'coordinator',\n  'corporal',\n  'councillor',\n  'count',\n  'countess',\n  'courier',\n  'cousin',\n  'cowboy',\n  'critic',\n  'crowd',\n  'curator',\n  'customer representative',\n  'customer',\n  'dad',\n  'daddy',\n  'dancer',\n  'daredevil',\n  'darling',\n  'daughter',\n  'deacon',\n  'dealer',\n  'decorator',\n  'defenceman',\n  'deity',\n  'denizen',\n  'deputee',\n  'deputy',\n  'descendant',\n  'deserter',\n  'designer',\n  'detective',\n  'developer',\n  'dictator',\n  'dietician',\n  'dietitian',\n  'diplomat',\n  'director',\n  'diva',\n  'doctor',\n  'dork',\n  'drifter',\n  'driver',\n  'dude',\n  'dutchess',\n  'dweller',\n  'economist',\n  'editor',\n  'elder',\n  'electrician',\n  'emcee',\n  'emperor',\n  'employee',\n  'employer',\n  'enemy',\n  'engineer',\n  'entrepreneur',\n  'environmentalist',\n  'everybody',\n  'examiner',\n  'excellency',\n  'exile',\n  'family',\n  'farmer',\n  'father',\n  'fella',\n  'fellow',\n  'female',\n  'fiance',\n  'fighter',\n  'filmmaker',\n  'financier',\n  'fire marshal',\n  'firefighter',\n  'fireman',\n  'first lady',\n  'fitter',\n  'foe',\n  'forebear',\n  'foreman',\n  'forerunner',\n  'forester',\n  'foster parent',\n  'freelancer',\n  'friend',\n  'gal',\n  'gambler',\n  'gardener',\n  'geek',\n  'geisha',\n  'genius',\n  'gentleman',\n  'ghost',\n  'ghostwriter',\n  'girl',\n  'girlfriend',\n  'gladiator',\n  'goalie',\n  'goalkeeper',\n  'goaltender',\n  'god',\n  'goddess',\n  'golfer',\n  'grandchild',\n  'granddaughter',\n  'grandfather',\n  'grandma',\n  'grandmother',\n  'grandpa',\n  'grandparent',\n  'grandson',\n  'groom',\n  'guard',\n  'guest',\n  'guru',\n  'hairdresser',\n  'hairstylist',\n  'heir',\n  'hermit',\n  'hero',\n  'heroine',\n  'historian',\n  'hobo',\n  'host',\n  'hostage',\n  'hostess',\n  'housekeeper',\n  'human',\n  'humanitarian',\n  'hunter',\n  'husband',\n  'hygienist',\n  'icon',\n  'idol',\n  'illustrator',\n  'immigrant',\n  'in law',\n  'incel',\n  'individual',\n  'infant',\n  'inhabitant',\n  'innovator',\n  'inspector',\n  'installer',\n  'instigator',\n  'instructor',\n  'intern',\n  'inventor',\n  'investigator',\n  'jester',\n  'jogger',\n  'journalist',\n  'judge',\n  'juggler',\n  'kid',\n  'kin',\n  'king',\n  'kinsman',\n  'kinswoman',\n  'laborer',\n  'lad',\n  'lady',\n  'landlord',\n  'lass',\n  'laureate',\n  'lawyer',\n  'layman',\n  'leader',\n  'lieutenant',\n  'lord',\n  'loser',\n  'lover',\n  'magician',\n  'magistrate',\n  'magnate',\n  'maker',\n  'male',\n  'man',\n  'manager',\n  'maniac',\n  'martyr',\n  'mason',\n  'master',\n  'mate',\n  'matriarch',\n  'mayor',\n  'mechanic',\n  'mentor',\n  'merchant',\n  'minion',\n  'minister',\n  'misfit',\n  'missus',\n  'mister',\n  'model',\n  'moderator',\n  'mogul',\n  'mom',\n  'mommy',\n  'monarch',\n  'monk',\n  'mother',\n  'mum',\n  'mummy',\n  'musician',\n  'mystic',\n  'nanny',\n  'narrator',\n  'native',\n  'neice',\n  'neighbor',\n  'nemesis',\n  'nephew',\n  'nerd',\n  'niece',\n  'nobleman',\n  'noblewoman',\n  'nobody',\n  'nomad',\n  'novice',\n  'nun',\n  'nurse',\n  'nurseryman',\n  'occupant',\n  'officer',\n  'offspring',\n  'operator',\n  'optimist',\n  'optometrist',\n  'oracle',\n  'organizer',\n  'originator',\n  'orphan',\n  'outcast',\n  'outlaw',\n  'painter',\n  'pal',\n  'panellist',\n  'parent',\n  'parental',\n  'pariah',\n  'partner',\n  'pastor',\n  'patriarch',\n  'patriot',\n  'patron',\n  'pawn',\n  'peer',\n  'performer',\n  'person',\n  'pessimist',\n  'phantom',\n  'pharmacist',\n  'philosopher',\n  'photographer',\n  'phrase',\n  'physician',\n  'pilgrim',\n  'pilot',\n  'pioneer',\n  'planner',\n  'player',\n  'playmate',\n  'playwright',\n  'plumber',\n  'podcaster',\n  'poet',\n  'policeman',\n  'political scientist',\n  'politician',\n  'population',\n  'pornstar',\n  'practitioner',\n  'prankster',\n  'preacher',\n  'president',\n  'priest',\n  'priestess',\n  'prime minister',\n  'prince',\n  'princess',\n  'prisoner',\n  'prodigy',\n  'producer',\n  'professor',\n  'progenitor',\n  'progeny',\n  'programmer',\n  'prophet',\n  'prospector',\n  'prostitute',\n  'psychologist',\n  'punk',\n  'pupil',\n  'quarterback',\n  'queen',\n  'rabbi',\n  'radical',\n  'rapper',\n  'realist',\n  'receptionist',\n  'recluse',\n  'recruiter',\n  'refugee',\n  'relative',\n  'reporter',\n  'researcher',\n  'reverend',\n  'revolutionary',\n  'rival',\n  'rogue',\n  'role model',\n  'roofer',\n  'ruler',\n  'runner up',\n  'runningback',\n  'sailor',\n  'saint',\n  'scholar',\n  'scientist',\n  'scion',\n  'scout',\n  'screenwriter',\n  'sculptor',\n  'secretary',\n  'senior citizen',\n  'sergeant',\n  'servant',\n  'servitor',\n  'shaman',\n  'shepherd',\n  'showgirl',\n  'showman',\n  'showrunner',\n  'sibling',\n  'singer',\n  'sinner',\n  'sissy',\n  'sister',\n  'skier',\n  'smuggler',\n  'soldier',\n  'soloist',\n  'somebody',\n  'someone',\n  'son',\n  'sorcerer',\n  'sorceress',\n  'soul',\n  'sovereign',\n  'specialist',\n  'spectator',\n  'spirit',\n  'spokesperson',\n  'spouse',\n  'squatter',\n  'staffer',\n  'star',\n  'statesman',\n  'stepbrother',\n  'stepchild',\n  'stepfather',\n  'stepmother',\n  'stepsister',\n  'stranger',\n  'streamer',\n  'student',\n  'sultan',\n  'superhero',\n  'superhuman',\n  'superintendent',\n  'superstar',\n  'supervisor',\n  'surfer',\n  'surgeon',\n  'survivor',\n  'sweeper',\n  'sweetheart',\n  'taoiseach',\n  'teacher',\n  'technician',\n  'technologist',\n  'teen',\n  'teenager',\n  'tenant',\n  'tester',\n  'therapist',\n  'tiktoker',\n  'toddler',\n  'tourist',\n  'trader',\n  'tramp',\n  'transcriptionist',\n  'traveler',\n  'trendsetter',\n  'trooper',\n  'tutor',\n  'tycoon',\n  'uncle',\n  'underwriter',\n  'user',\n  'vagabond',\n  'veteran',\n  'veterinarian',\n  'villain',\n  'vip',\n  'visionary',\n  'visitor',\n  'voyager',\n  'wage earner',\n  'waiter',\n  'wanderer',\n  'warrior',\n  'weatherman',\n  'welder',\n  'wife',\n  'winner',\n  'witch',\n  'wizard',\n  'woman',\n  'worker',\n  'wrestler',\n  'writer',\n  'yogi',\n  'youth',\n  'youtuber',\n]\n"
  },
  {
    "path": "data/lexicon/nouns/demonyms.js",
    "content": "//adjectival forms of place names, as adjectives.\nexport default [\n  'afghan',\n  'african',\n  'albanian',\n  'algerian',\n  'american',\n  'angolan',\n  'argentine',\n  'armenian',\n  'asian',\n  'aussie',\n  'australian',\n  'austrian',\n  'bangladeshi',\n  'belarusian',\n  'belgian',\n  'bolivian',\n  'bosnian',\n  'brazilian',\n  'brit',\n  'bulgarian',\n  'californian',\n  'cambodian',\n  'cameroonian',\n  'canadian',\n  'chadian',\n  'chilean',\n  'chinese',\n  'colombian',\n  'congolese',\n  'croat',\n  'croatian',\n  'cuban',\n  'czech',\n  'dane',\n  'dominican',\n  'dutch',\n  'ecuadorian',\n  'egyptian',\n  'emirati',\n  'englishman',\n  'estonian',\n  'ethiopian',\n  'european',\n  'filipino',\n  'french',\n  'gambian',\n  'georgian',\n  'german',\n  'ghanaian',\n  'greek',\n  'guatemalan',\n  'haitian',\n  'hindi',\n  'honduran',\n  'hungarian',\n  'icelandic',\n  'indian',\n  'indonesian',\n  'iranian',\n  'iraqi',\n  'irishman',\n  'israeli',\n  'italian',\n  'ivorian', // of Ivory Coast\n  'jamaican',\n  'japanese',\n  'jordanian',\n  'kazakh',\n  'kenyan',\n  'korean',\n  'kuwaiti',\n  'lao', // of Laos\n  'latvian',\n  'lebanese',\n  'liberian',\n  'libyan',\n  'lithuanian',\n  'macedonian',\n  'malagasy', // of Madagascar\n  'malaysian',\n  'mexican',\n  'mongolian',\n  'moroccan',\n  'namibian',\n  'nicaraguan',\n  'nigerian', // of Nigeria\n  'nigerien', // of Niger\n  'norwegian',\n  'omani',\n  'pakistani',\n  'palestinian',\n  'panamanian',\n  'paraguayan',\n  'peruvian',\n  'philippine',\n  'portuguese',\n  'puerto rican',\n  'qatari',\n  'romanian',\n  'russian',\n  'rwandan',\n  'samoan',\n  'saudi',\n  'scottish',\n  'senegalese',\n  'serbian',\n  'singaporean',\n  'slovak',\n  'somalian',\n  'spaniard',\n  'sudanese',\n  'swede',\n  'swiss',\n  'syrian',\n  'taiwanese',\n  'thai',\n  'texan',\n  'trinidadian',\n  'tunisian',\n  'turkmen',\n  'ugandan',\n  'ukrainian',\n  'venezuelan',\n  'vietnamese',\n  'welsh',\n  'zambian',\n  'zimbabwean',\n  // 'pole',\n]\n"
  },
  {
    "path": "data/lexicon/nouns/organizations.js",
    "content": "//just a few named-organizations\n//no acronyms needed. no product/brand pollution.\nexport default [\n  // 'abc',\n  'academy of sciences',\n  'acer',\n  'activision blizzard',\n  'activision',\n  'adidas',\n  'aig',\n  'airbnb',\n  'al jazeera',\n  'al qaeda',\n  'alcatel lucent',\n  'alcatel',\n  'altair',\n  'amc',\n  'amd',\n  'american express',\n  'amt',\n  'amtrak',\n  'anheuser busch',\n  'aol',\n  'apple computers',\n  'argos',\n  'armco',\n  'ashland oil',\n  'associated press',\n  'autodesk',\n  'avis',\n  'avon',\n  'ayer',\n  'baidu',\n  'banana republic',\n  'basf',\n  'baskin robbins',\n  'baxter',\n  'bayer',\n  'bbc',\n  'bechtel',\n  'berkshire hathaway',\n  'bf goodrich',\n  'bfgoodrich',\n  'blockbuster video',\n  'bloomingdale',\n  'blue cross',\n  'bmw',\n  'bni',\n  'boeing',\n  'bombardier',\n  'boston globe',\n  'boston pizza',\n  'bp',\n  'cadbury',\n  'capital one',\n  'cbc',\n  'chevron',\n  'chevy',\n  'chick fil a',\n  'china daily',\n  'cia',\n  'cisco systems',\n  'cisco',\n  'citigroup',\n  'cloudflare',\n  'cnn',\n  'coca cola',\n  'coinbase',\n  'colgate',\n  'comcast',\n  'compaq',\n  'coors',\n  'costco',\n  'craigslist',\n  'crossrail',\n  'daimler',\n  'dea',\n  'dell',\n  'der spiegel',\n  'disney',\n  'doj',\n  'dow jones',\n  'dunkin donuts',\n  'dupont',\n  'ebay',\n  'esa',\n  'eu',\n  'exxon mobil',\n  'exxonmobil',\n  'facebook',\n  'fannie mae',\n  'fbi',\n  'fda',\n  'fedex',\n  'fiat',\n  'financial times',\n  'firestone',\n  'ford',\n  'foxcon',\n  'frito lay',\n  'general electric',\n  'general motors',\n  'ghq',\n  'github',\n  'glaxo smith kline',\n  'glencore',\n  'gmb',\n  'goldman sachs',\n  'goodyear',\n  'google',\n  'gucci',\n  'hasbro',\n  'hewlett packard',\n  'hitachi',\n  'hizbollah',\n  'home depot',\n  'honda',\n  'hsbc',\n  'hyundai',\n  'ibm',\n  'ihop',\n  'ing',\n  'intel',\n  'interpol',\n  'itv',\n  'jiffy lube',\n  'jpmorgan chase',\n  'jpmorgan',\n  'jsa',\n  'katv',\n  'kfc',\n  'kkk',\n  'kmart',\n  'kodak',\n  'la presse',\n  'la z boy',\n  'labour party',\n  'lenovo',\n  'lexis',\n  'lexmark',\n  'lg',\n  'little caesars',\n  'mattel',\n  'mazda',\n  'mcdonalds',\n  'medicaid',\n  'medicare',\n  'mercedes benz',\n  'microsoft',\n  'mitas',\n  'mitsubishi',\n  'mlb',\n  'mobil',\n  'monsanto',\n  'motorola',\n  'mtv',\n  'myspace',\n  'nandos',\n  'nasa',\n  'nascar',\n  'nasdaq',\n  'national academy of sciences',\n  'nato',\n  'natwest',\n  'nba',\n  'nbc',\n  'nec',\n  'nestle',\n  'netflix',\n  'new york times',\n  'newsweek',\n  'nfl',\n  'nhl',\n  'nhs',\n  'nike',\n  'nintendo',\n  'nissan',\n  'nokia',\n  'notre dame',\n  'novartis',\n  'nsa',\n  'nvidia',\n  'nwa',\n  'old navy',\n  'opec',\n  'orange julius',\n  'oxfam',\n  'palantir',\n  'pan am',\n  'panasonic',\n  'panda express',\n  'paypal',\n  'pbs',\n  'pepsico',\n  'petrobras',\n  'petrochina',\n  'petronas',\n  'peugeot',\n  'pfizer',\n  'philip morris',\n  'pizza hut',\n  'premier oil',\n  'prudential',\n  'quantas',\n  'rbc',\n  'rbs',\n  'readers digest',\n  'red bull',\n  'red cross',\n  'red lobster',\n  'remax',\n  'revlon',\n  'royal bank',\n  'royal dutch shell',\n  'ryanair',\n  'safeway',\n  'salesforce',\n  'samsung',\n  'seagate',\n  'sears',\n  'siemens',\n  'snp',\n  'sony',\n  'squarespace',\n  'starbucks',\n  'statoil',\n  'subaru',\n  't mobile',\n  'taco bell',\n  'td bank',\n  'telefonica',\n  'telus',\n  'tencent',\n  'tesco',\n  'tesla motors',\n  'texas instruments',\n  'tgi fridays',\n  'the daily mail',\n  'tim hortons',\n  'tmz',\n  'toshiba',\n  'toyota',\n  'toys r us',\n  'twitter',\n  'uber',\n  'ubs',\n  'ukip',\n  'unesco',\n  'unilever',\n  'united nations',\n  'ups',\n  'usa today',\n  'usps',\n  'verizon',\n  'visa',\n  'vodafone',\n  'volkswagen',\n  'volvo',\n  'walgreens',\n  'wall street journal',\n  'walmart',\n  'warner bros',\n  'wells fargo',\n  'westfield',\n  'westinghouse',\n  'world trade organization',\n  'xiaomi',\n  'yahoo!',\n  'yamaha',\n  'ymca',\n  'yougov',\n  'youtube',\n  'ywca',\n  // 'mercedes',\n\n  `applebees`,\n  `applebees`,\n  `arbys`,\n  `carls jr`,\n  `le oreal`, //l'oreal\n  `macs milk`,\n  `mcdonalds`,\n  `quiznos`,\n  `sainsburys`,\n\n  //some bands\n  'abba',\n  'ac/dc',\n  'aerosmith',\n  'bee gees',\n  'coldplay',\n  'creedence clearwater revival',\n  'def leppard',\n  'depeche mode',\n  'duran duran',\n  'fleetwood mac',\n  'green day',\n  'guns n roses',\n  'joy division',\n  'metallica',\n  'moody blues',\n  'motley crue',\n  'new kids on the block',\n  'pink floyd',\n  // 'r.e.m.',\n  'radiohead',\n  'red hot chili peppers',\n  'sex pistols',\n  'soundgarden',\n  'spice girls',\n  'the beach boys',\n  'the beatles',\n  'the black eyed peas',\n  'the byrds',\n  'the carpenters',\n  'the guess who',\n  'the hollies',\n  // 'the rolling stones',\n  'the smashing pumpkins',\n  'the supremes',\n  'the who',\n  'thin lizzy',\n  // 'u2',\n  'van halen',\n  `destiny's child`,\n\n  // other groups\n  'eurosceptics',\n  'brexiteers',\n\n  'audi',\n  'bacardi',\n  'cadillac',\n  'coco chanel',\n  'fc barcelona',\n  'fifa',\n  'halliburton',\n  'ikea',\n  'klm',\n  'lexus',\n  // 'mcgill university',\n  'michelin',\n  'nivea',\n  'pepsi',\n  'philips',\n  'premier league',\n  'real madrid',\n  'roman empire',\n  'scientology',\n  'smirnoff',\n  'wikileaks',\n  'wikipedia',\n]\n"
  },
  {
    "path": "data/lexicon/nouns/possessives.js",
    "content": "export default [\n  // 'her', //this one is check ambiguous\n  // 'hers',\n  // 'his',\n  'its',\n  'mine',\n  'my',\n  // 'none',\n  'our',\n  'ours',\n  'thy',\n  // 'their',\n  // 'theirs',\n  // 'your',\n  // 'yours',\n\n\n]\n"
  },
  {
    "path": "data/lexicon/nouns/pronouns.js",
    "content": "export default [\n  'it',\n  'they',\n  'i',\n  'them',\n  'you',\n  'she',\n  'me',\n  'he',\n  'him',\n  'us',\n  'we',\n  'thou',\n  'thee',\n  'il',\n  'elle',\n  // `'em`,\n]\n"
  },
  {
    "path": "data/lexicon/nouns/properNouns.js",
    "content": "// properNouns\nexport default [\n  'mercedes',\n  'barbie',\n  'catalina',\n  'christi',\n  'diego',\n  'elmo',\n  'franco',\n  'kirby',\n  'mickey',\n  'finn',\n  'missy',\n  'florence',\n  'stevens',\n  'abid',\n  'mcgill',\n  'hudson',\n  'chesley',\n  'carling',\n  'berkeley',\n  'beeton',\n  'carleton',\n  'ajax',\n  'weston',\n  'sherwood',\n  'wembley',\n  'hinton',\n  'bentley',\n  'landsdowne',\n  'brock',\n  'dalhousie',\n  'spalding',\n  'charlton',\n  'rothwell',\n  'gosford',\n  'frampton',\n  'fairview',\n  // currencies\n  'nis',\n  'riel',\n  'euro',\n  'iron maiden',\n]\n"
  },
  {
    "path": "data/lexicon/nouns/relative-prounoun.js",
    "content": "export default [\n  'whatever',\n  'whatsoever',\n  'whichever',\n  'whichsoever',\n  'whoever',\n  'whom',\n  'whomever',\n  'whomsoever',\n  'whose',\n  'whosesoever',\n  'whosoever',\n  // 'that',\n  // 'when',\n  // 'which',\n  // 'who',\n]\n"
  },
  {
    "path": "data/lexicon/nouns/singulars.js",
    "content": "//most nouns do not nead to be listed\n// for whatever reasons, these look like not-nouns\n// they are all inflected to add their plural form\n\nexport default [\n  // -ic\n  'medic',\n  'ethic',\n  'republic',\n  'colic',\n  'garlic',\n  'picnic',\n  'tunic',\n  'topic',\n  'fabric',\n  'rhetoric',\n  'tic',\n  'tactic',\n  'characteristic',\n  'statistic',\n\n  // -ed\n  'seabed',\n  'waterbed',\n  'riverbed',\n  'hotbed',\n  'moped',\n\n  'eyelid',\n  'pyramid',\n  'lipid',\n  'grid',\n  'dividend',\n  'stipend',\n  'way around',\n  'credit card',\n  'security guard',\n  'tribe',\n  'downside',\n  'upside',\n  'voltage',\n  'advantage',\n  'percentage',\n  'shortage',\n  'cottage',\n  'whale',\n\n  // -ble\n  'syllable',\n  'vegetable',\n  'timetable',\n  'turntable',\n  'crucible',\n  'mandible',\n\n  'example',\n  'home',\n  'someone',\n  'headphone',\n  'press release',\n  'premise',\n  'highrise',\n  'sunrise',\n  'purpose',\n\n  // -ate\n  'rebate',\n  'certificate',\n  'frigate',\n  'surrogate',\n  'opiate',\n  'chocolate',\n  'plate',\n  'template',\n  'consulate',\n  'pate',\n  'default rate',\n  'vertebrate',\n  'invertebrate',\n  'carbohydrate',\n  'electorate',\n  'doctorate',\n  'nitrate',\n  'substrate',\n  'acetate',\n  'us state',\n  'estate',\n  'prostate',\n\n  'plebiscite',\n  'luddite',\n  'urbanite',\n  'respite',\n  'rite',\n  'site',\n  'appetite',\n  'anecdote',\n  'antidote',\n  'keynote',\n  'coyote',\n  'flute',\n  'plaque',\n  'cheque',\n  'communique',\n  'torque',\n  'mosque',\n\n  // -ive\n  'prerogative',\n  'objective',\n  'disincentive',\n  'motive',\n  'haze',\n  'egg',\n  'pig',\n\n  // -ing\n  'pudding',\n  'thing',\n  'nothing',\n  'banking',\n  'ceiling',\n  'evening',\n  'morning',\n  'sibling',\n  'inning',\n\n  'lunch',\n  'breakthrough',\n  'trough',\n  'blemish',\n  'skirmish',\n  'garnish',\n  'varnish',\n  'death',\n  'question mark',\n\n  // -al\n  'accrual',\n  'acquittal',\n  'burial',\n  'capital',\n  'cathedral',\n  'cereal',\n  'corral',\n  'decal',\n  'deferral',\n  'denial',\n  'funeral',\n  'hospital',\n  'mammal',\n  'material',\n  'metal',\n  'mineral',\n  'mural',\n  'ordeal',\n  'pedestal',\n  'petal',\n  'portal',\n  'rebuttal',\n  'recital',\n  'referral',\n  'subtotal',\n  'tutorial',\n  'urinal',\n\n  'record label',\n  'skill',\n  'high school',\n  'christmas carol',\n  'handful',\n  'bowl',\n  'super bowl',\n  'team',\n  'grand slam',\n  'problem',\n  'ad hominem',\n  'system',\n  'room',\n  'chrysanthemum',\n  'bean',\n  'ocean',\n  'student loan',\n  'skeleten',\n  'kitten',\n  'heaven',\n  'raven',\n  'oven',\n  'cousin',\n  'gelatin',\n  'tax return',\n  'home run',\n  'cellar',\n  'us dollar',\n  'exemplar',\n  'civil war',\n\n  // -er\n  'number',\n  'wafer',\n  'glacier',\n  'grenadier',\n  'cahier',\n  'chandelier',\n  'pier',\n  'copier',\n  'photocopier',\n  'occupier',\n  'drier',\n  'tier',\n  'barrier',\n  'carrier',\n  'dossier',\n  'frontier',\n  'metier',\n  'reformer',\n  'dinner',\n\n  'door',\n  'indices',\n  'others',\n  'caucus',\n  'dialect',\n  'aspect',\n  'prospect',\n  'insect',\n  'intellect',\n  'verdict',\n  'district',\n  'free market',\n  'human right',\n\n  // -ent\n  'scent',\n  'ascent',\n  'incident',\n  'rodent',\n  'student',\n  'coefficient',\n  'client',\n  'quotient',\n  'talent',\n  'referent',\n  'deterrent',\n  'discontent',\n  'extent',\n  'event',\n\n  'head start',\n  'breakfast',\n\n  // -ist\n  'waist',\n\n  'bout',\n  'overview',\n  'tv show',\n  't rex',\n  'array',\n  'way',\n  'tragedy',\n  'body',\n  'doggy',\n  'effigy',\n  'clergy',\n  'allergy',\n  'energy',\n  'synergy',\n\n  // -ly\n  'anomaly',\n  'gadfly',\n  'firefly',\n  'dragonfly',\n  'butterfly',\n  'mayfly',\n  'family',\n  'doily',\n  'ally',\n  'belly',\n  'jelly',\n  'folly',\n  'gully',\n  'monopoly',\n  'panoply',\n\n  'tummy',\n  'economy',\n  'fanny',\n  'bunny',\n  'puppy',\n\n  // -ry\n  'salary',\n  'burglary',\n  'vocabulary',\n  'canary',\n  'granary',\n  'military',\n  'dignitary',\n  'documentary',\n  'notary',\n\n  'city',\n  'guy',\n  'school',\n  'bar',\n  'prediction',\n  'pie',\n  'rerun',\n  'menu',\n\n  'owner',\n  'coke',\n  'conservatory',\n  'caterpillar',\n  'collar',\n  'fetish',\n\n  'attic',\n  'borough',\n  'adjective',\n  'initiative',\n  'narrative',\n  'perspective',\n  'incentive',\n  'parish',\n  'tv',\n\n  'stone',\n  'tributary',\n  'flower',\n  'sandwich',\n  'x ray',\n  'dump truck',\n  'soft serve',\n  'car',\n  'strategy',\n  'piggy',\n  'thingy',\n  'peanut',\n  'accident',\n  'journal',\n  'tribunal',\n  'ritual',\n  'decimal',\n  'pedal',\n  'canal',\n\n  'alien',\n  'chicken',\n  'haven',\n  'mitten',\n  'pathogen',\n  'sapien',\n\n  'autopsy',\n  'embassy',\n  'pussy',\n  'spin off',\n  'lay up',\n  'leg up',\n  'poppy',\n  'epidemic',\n  'row',\n  'drive thru',\n  'hash brown',\n  // 'living room',\n  'seminar',\n  'variety',\n  'laboratory',\n  'programme',\n  'legend',\n  'fiend',\n  'cloth',\n  'institute',\n  'tonite',\n  'paradise',\n  'enterprise',\n  'lime',\n  'magnate',\n  'hormone',\n  'outspoken',\n  'medal',\n  'recipient',\n  'heist',\n  'signatory',\n  'narcotic',\n  'threesome',\n  'foursome',\n  'biopic',\n  'arsenal',\n  'oatmeal',\n  'sabbatical',\n  'missive',\n  'hussy',\n  'cane',\n  'overtime',\n  'preposition',\n  'disposition',\n  'stake',\n  'nite',\n  'prop',\n  'sect',\n  'mischief',\n  'marsupial',\n  'statute',\n  'mic',\n  'clinic',\n  'mould',\n  'peyote',\n  'gypsy',\n  'granny',\n  'vet',\n  'suite',\n  'uncoordinated',\n  'latch',\n  'deathbed',\n  'tunnel',\n  'intern',\n  'tribute',\n  'intent',\n  'undertone',\n  'underestimate',\n  'underwear',\n  'word',\n  'overview',\n  'yo yo',\n  'phone call',\n  'brick',\n  'cannibal',\n  'video game',\n  'layer',\n  'canton',\n]\n"
  },
  {
    "path": "data/lexicon/nouns/sportsTeams.js",
    "content": "export default [\n  //mlb\n  'arizona diamondbacks',\n  'atlanta braves',\n  'baltimore orioles',\n  'boston red sox',\n  'chicago cubs',\n  'chicago white sox',\n  'cincinnati reds',\n  'cleveland indians',\n  'cleveland guardians',\n  'colorado rockies',\n  'detroit tigers',\n  'houston astros',\n  'miami marlins',\n  'milwaukee brewers',\n  'minnesota twins',\n  'oakland athletics',\n  'philadelphia phillies',\n  'pittsburgh pirates',\n  'seattle mariners',\n  'texas rangers',\n  'toronto blue jays',\n  'washington nationals',\n  'tampa bay rays',\n  'new york mets',\n  'new york yankees',\n  'san diego padres',\n  'kansas city royals',\n  'los angeles dodgers',\n  'san francisco giants',\n  'st louis cardinals',\n  'diamondbacks',\n  'white sox',\n  'astros',\n  'dodgers',\n  'mets',\n  'yankees',\n  'phillies',\n  'padres',\n\n  //nba\n  'boston celtics',\n  'brooklyn nets',\n  'new york knicks',\n  'toronto raptors',\n  'chicago bulls',\n  'cleveland cavaliers',\n  'detroit pistons',\n  'indiana pacers',\n  'milwaukee bucks',\n  'atlanta hawks',\n  'charlotte hornets',\n  'miami heat',\n  'orlando magic',\n  'washington wizards',\n  'dallas mavericks',\n  'houston rockets',\n  'memphis grizzlies',\n  'denver nuggets',\n  'utah jazz',\n  'minnesota timberwolves',\n  'new orleans pelicans',\n  'san antonio spurs',\n  'portland trail blazers',\n  'oklahoma city thunder',\n  'golden state warriors',\n  'los angeles clippers',\n  'los angeles lakers',\n  'phoenix suns',\n  'sacramento kings',\n  'knicks',\n  'lakers',\n  'celtics',\n  // 'philadelphia 76ers',\n\n  //nfl\n  'arizona cardinals',\n  'atlanta falcons',\n  'baltimore ravens',\n  'buffalo bills',\n  'carolina panthers',\n  'chicago bears',\n  'cincinnati bengals',\n  'cleveland browns',\n  'dallas cowboys',\n  'denver broncos',\n  'detroit lions',\n  'green bay packers',\n  'houston texans',\n  'indianapolis colts',\n  'jacksonville jaguars',\n  'kansas city chiefs',\n  'miami dolphins',\n  'minnesota vikings',\n  'new england patriots',\n  'new orleans saints',\n  'new york giants',\n  'new york jets',\n  'oakland raiders',\n  'philadelphia eagles',\n  'pittsburgh steelers',\n  'san diego chargers',\n  // 'san francisco 49ers',\n  'seattle seahawks',\n  'st louis rams',\n  'tampa bay buccaneers',\n  'tennessee titans',\n  'washington redskins',\n\n  //mls\n  'chicago fire',\n  'colorado rapids',\n  'columbus crew sc',\n  'fc dallas',\n  'houston dynamo',\n  'la galaxy',\n  'montreal impact',\n  'new england revolution',\n  'new york red bulls',\n  'philadelphia union',\n  'portland timbers',\n  'real salt lake',\n  'san jose earthquakes',\n  'seattle sounders',\n  'sporting kansas city',\n  'vancouver whitecaps',\n  // 'new york city fc',\n  // 'atlanta united',\n  // 'dc united',\n  // 'minnesota united',\n  //premier league soccer (mostly city+fc)\n  'aston villa',\n  'blackburn rovers',\n  'cardiff city',\n  'leicester city',\n  'manchester city',\n  'queens park rangers',\n  'stoke city',\n  'tottenham hotspur',\n  // 'sheffield united',\n  // 'manchester united',\n  // 'newcastle united',\n  // 'west ham united',\n]\n"
  },
  {
    "path": "data/lexicon/nouns/uncountables.js",
    "content": "//common nouns that have no plural form. These are suprisingly rare\n//used in noun.inflect(), and added as nouns in lexicon\nexport default [\n\n  'acid',\n  'acoustics',\n  'advice',\n  'aerobics',\n  'aerodynamics',\n  'aeronautics',\n  'aircraft',\n  'amends',\n  'amnesty',\n  'anger',\n  'anise',\n  'anyone',\n  'anything',\n  'appeal court',\n  'arithmetic',\n  'arsenic',\n  'aspirin',\n  'athletics',\n  'baggage',\n  'bass',\n  'billiards',\n  'bison',\n  'blood',\n  'bowling',\n  'bread',\n  'breadth',\n  'bunting',\n  'butter',\n  'cad',\n  'cards',\n  'celcius',\n  'chaos',\n  'cheese',\n  'chewing',\n  'civics',\n  'classics',\n  'clothes',\n  'coal',\n  'cold war',\n  'commentary',\n  'confusion',\n  'cont ed',\n  'coral',\n  'cotton',\n  'couscous',\n  'currency',\n  'debut',\n  'demise',\n  'diabetes',\n  'dice',\n  'dishonesty',\n  'disrepute',\n  'dope',\n  'downstairs',\n  'draughts',\n  'dynasty',\n  'earnings',\n  'economics',\n  'education',\n  'electricity',\n  'electronics',\n  'enjoyment',\n  'entertainment',\n  'equipment',\n  'ethics',\n  'everybody',\n  'everyone',\n  'everything',\n  'existence',\n  'expertise',\n  'fahrenheit',\n  'fate',\n  'feeling',\n  'fiction',\n  'fish',\n  'flour',\n  'food',\n  'forgiveness',\n  'fourier',\n  'fowl',\n  'furniture',\n  'gene editing',\n  'gene pool',\n  'genetics',\n  'gluten',\n  'glycerin',\n  'golf',\n  'gore',\n  'granite',\n  'grass',\n  'greed',\n  'gum',\n  'gymnastics',\n  'hair',\n  'halibut',\n  'happiness',\n  'hashish',\n  'haste',\n  'headquarters',\n  'here',\n  'hertz',\n  'history',\n  'hockey',\n  'homework',\n  'honesty',\n  'honey',\n  'hooky',\n  'horseradish',\n  'hospitality',\n  'house arrest',\n  'hunger',\n  'ice',\n  'ignorance',\n  'impatience',\n  'importance',\n  'improv',\n  'information',\n  'internet',\n  'interstate',\n  'jazz',\n  'jeans',\n  'jellyfish',\n  'jewelry',\n  'karate',\n  'kindergarten',\n  'knickers',\n  'knowledge',\n  'laughter',\n  'leather',\n  'leisure',\n  'less',\n  'lice',\n  'lightning',\n  'linguistics',\n  'literature',\n  'liver',\n  'logic',\n  'logistics',\n  'luck',\n  'luggage',\n  'machine learning',\n  'machinery',\n  'majesty',\n  'make up',\n  'mathematics',\n  'measles',\n  'meat',\n  'mechanics',\n  'merchandise',\n  'metallurgy',\n  'money',\n  'monogamy',\n  'moose',\n  'mumps',\n  'music',\n  'nail polish',\n  'national security',\n  'news',\n  'nowadays',\n  'obstetrics',\n  'overcrowding',\n  'oxygen',\n  'panties',\n  'pants',\n  'parking',\n  'patience',\n  'peace',\n  'petrol',\n  'phys ed',\n  'physics',\n  'plastic',\n  'politics',\n  'pollen',\n  'polygamy',\n  'pork',\n  'preamble',\n  'premises',\n  'presense',\n  'pressure',\n  'pretense',\n  'putty',\n  'rabies',\n  'recognition',\n  'recreation',\n  'reins',\n  'relaxation',\n  'research',\n  'rice',\n  'rickets',\n  'sadness',\n  'safety',\n  'salmon',\n  'salt',\n  'sand',\n  'satish',\n  'scenery',\n  'scissors',\n  'seating',\n  'self',\n  'senate',\n  'series',\n  'sheep',\n  'shingles',\n  'shopping',\n  'shorts',\n  'silk',\n  'silver',\n  'skin',\n  'skittles',\n  'soap',\n  'soccer',\n  'something',\n  'spacecraft',\n  'species',\n  'spite',\n  'static',\n  'statistics',\n  'steam',\n  'steel',\n  'sugar',\n  'sunshine',\n  'sushi',\n  'sweepstakes',\n  'tea',\n  'tennis',\n  'there',\n  'thermodynamics',\n  'thunder',\n  'time off',\n  'tin',\n  'tonight',\n  'toothpaste',\n  'townfolk',\n  'townsfolk',\n  'traffic',\n  'treatise',\n  'troops',\n  'trouble',\n  'troubleshooting',\n  'trousers',\n  'trout',\n  'true north',\n  'tuna',\n  'tungsten',\n  'tyranny',\n  'vernacular',\n  'vinegar',\n  'violence',\n  'vitae',\n  'warmth',\n  'water',\n  'whisky',\n  'wildlife',\n  'wine',\n  'wood',\n  'wool',\n  'you guys',\n  'nutella',\n  'vanilla',\n  'venus',\n  'earth',\n  'mars',\n  'jupiter',\n  'saturn',\n  'uranus',\n  'neptune',\n  'pluto',\n  'vapor',\n  'magic',\n  'melancholy',\n\n\n  // 'art',\n  // 'cash',\n  // 'clothing',\n  // 'gold',\n  // 'ground',\n  // 'justice',\n  // 'kelvin',\n  // 'mail',\n  // 'power',\n  // 'progress',\n  // 'snow',\n  // 'speed',\n  // 'spite',\n  // 'time',\n  // 'vanilla',\n]\n"
  },
  {
    "path": "data/lexicon/numbers/cardinals.js",
    "content": "export default [\n  'zero',\n  'one',\n  'two',\n  'three',\n  'four',\n  'five',\n  'six',\n  'seven',\n  'eight',\n  'nine',\n  'ten',\n  'eleven',\n  'twelve',\n  'thirteen',\n  'fourteen',\n  'fifteen',\n  'sixteen',\n  'seventeen',\n  'eighteen',\n  'nineteen',\n  'twenty',\n  'thirty',\n  'forty',\n  'fourty',\n  'fifty',\n  'sixty',\n  'seventy',\n  'eighty',\n  'ninety',\n  // plural-multiples\n  'thousands',\n  'millions',\n  'billions',\n  'trillions',\n]\n"
  },
  {
    "path": "data/lexicon/numbers/multiples.js",
    "content": "export default [\n  'hundred',\n  'thousand',\n  'million',\n  'billion',\n  'trillion',\n  'quadrillion',\n  'quintillion',\n  'sextillion',\n  'septillion',\n]\n"
  },
  {
    "path": "data/lexicon/numbers/ordinals.js",
    "content": "export default [\n  'zeroth',\n  'first',\n  'second',\n  'third',\n  'fourth',\n  'fifth',\n  'sixth',\n  'seventh',\n  'eighth',\n  'ninth',\n  'tenth',\n  'eleventh',\n  'twelfth',\n  'thirteenth',\n  'fourteenth',\n  'fifteenth',\n  'sixteenth',\n  'seventeenth',\n  'eighteenth',\n  'nineteenth',\n  'twentieth',\n  'thirtieth',\n  'fortieth',\n  'fourtieth',\n  'fiftieth',\n  'sixtieth',\n  'seventieth',\n  'eightieth',\n  'ninetieth',\n]\n"
  },
  {
    "path": "data/lexicon/numbers/units.js",
    "content": "// ambigous units are in ../switches/unit-noun.js\n// units that are also abbreviations are in ../abbrev/units.js\nexport default [\n  '°c',\n  'celsius',\n  '°f',\n  'fahrenheit',\n  'kelvins',\n  '°n',\n  'm³',\n  'dm³',\n  'cm³',\n  'litre',\n  'litres',\n  'liter',\n  'liters',\n  'deciliter',\n  'deciliters',\n  'centiliter',\n  'centiliters',\n  'milliliter',\n  'milliliters',\n  'in³',\n  'ft³',\n  'yd³',\n  'gallon',\n  'gallons',\n  'bbl',\n  'pint',\n  'pints',\n  'quart',\n  'quarts',\n  'fl oz',\n  // 'fluid ounce',\n  // 'fluid ounces',\n  'kilometer',\n  'kilometers',\n  'meter',\n  'meters',\n  'decimeter',\n  'decimeters',\n  'centimeter',\n  'centimeters',\n  'millimeter',\n  'millimeters',\n  'mile',\n  'tonne',\n  'tonnes',\n  'kilo',\n  'kilos',\n  'kilogram',\n  'kilograms',\n  'hectogram',\n  'hectograms',\n  'gram',\n  'grams',\n  'decigram',\n  'decigrams',\n  'centigram',\n  'centigrams',\n  'milligram',\n  'milligrams',\n  'µg',\n  'microgram',\n  'micrograms',\n  'carat',\n  'carats',\n  'ounce',\n  'ounces',\n  'ton',\n  'km²',\n  'm²',\n  'dm²',\n  'cm²',\n  'mm²',\n  'hectare',\n  'hectares',\n  'mile²',\n  'in²',\n  'yd²',\n  'ft²',\n  'sq ft',\n  'acre',\n  'acres',\n  'hertz',\n  'hertzs',\n  'km/h',\n  'kmph',\n  'm/s',\n  'mi/h',\n  'knot',\n  'knots',\n  'byte',\n  'bytes',\n  'kilobyte',\n  'kilobytes',\n  'megabyte',\n  'megabytes',\n  'gigabyte',\n  'gigabytes',\n  'terabyte',\n  'terabytes',\n  'petabyte',\n  'petabytes',\n  'exabyte',\n  'exabytes',\n  'zettabyte',\n  'zettabytes',\n  'yottabyte',\n  'yottabytes',\n  'kbps',\n  'bbps',\n  'gbps',\n  'joule',\n  'joules',\n  'pascals',\n  'watt',\n  'watts',\n  'wb',\n  'coulomb',\n  'coulombs',\n  'volts',\n  'farad',\n  'farads',\n  'ohms',\n  'lux',\n  'lumen',\n  'lumens',\n  'µs',\n  'microsecond',\n  'microseconds',\n  'nanosecond',\n  'nanoseconds',\n  'picosecond',\n  'picoseconds',\n  'femtosecond',\n  'femtoseconds',\n  'attosecond',\n  'attoseconds',\n  'percent',\n  'year old',\n  'years old',\n]\n"
  },
  {
    "path": "data/lexicon/people/femaleNames.js",
    "content": "//names with a distinctive signal that they identify as a female, internationally\n\nexport default [\n  'aada',\n  'aadya',\n  'aaliyah',\n  'aaradhya',\n  'aasha',\n  'abagail',\n  'abbey',\n  'abbi',\n  'abbie',\n  'abby',\n  'abi',\n  'abigail',\n  'abril',\n  'ada',\n  'adaline',\n  'adalyn',\n  'addie',\n  'addilyn',\n  'addison',\n  'adel',\n  'adela',\n  'adelaide',\n  'adele',\n  'adelene',\n  'adelia',\n  'adelina',\n  'adeline',\n  'adelynn',\n  'adreanna',\n  'adriana',\n  'adrianna',\n  'adrianne',\n  'adriena',\n  'adriene',\n  'adrienne',\n  'agatha',\n  'aggie',\n  'agnes',\n  'agustina',\n  'aicha',\n  'aida',\n  'aileen',\n  'aimee',\n  'aina',\n  'aino',\n  'ainsley',\n  'aisha',\n  'aishah',\n  'aisling',\n  'aislinn',\n  'aislynn',\n  'ajla',\n  'alaina',\n  'alana',\n  'alanis',\n  'alanna',\n  'alannah',\n  'alanoud',\n  'alayah',\n  'alayna',\n  'alba',\n  'alecia',\n  'aleisha',\n  'alejandra',\n  'aleksandra',\n  'alena',\n  'alesia',\n  'alessandra',\n  'alexa',\n  'alexandra',\n  'alexia',\n  'alia',\n  'alice',\n  'alicia',\n  'alicja',\n  'alina',\n  'aline',\n  'alisa',\n  'alise',\n  'alisha',\n  'alison',\n  'alissa',\n  'aliza',\n  'allie',\n  'allison',\n  'allyson',\n  'althea',\n  'alya',\n  'alycia',\n  'alysa',\n  'alyson',\n  'alyssa',\n  'amahle',\n  'amaia',\n  'amaira',\n  'amalia',\n  'amanda',\n  'amber',\n  'amberly',\n  'amelia',\n  'amelija',\n  'amie',\n  'amilia',\n  'amina',\n  'aminata',\n  'amy',\n  'ana',\n  'anabel',\n  'anamaria',\n  'anastasia',\n  'anastasija',\n  'anaya',\n  'andjela',\n  'ane',\n  'anette',\n  'angela',\n  'angelia',\n  'angelica',\n  'angelina',\n  'angeline',\n  'angelique',\n  'angie',\n  'anika',\n  'anisa',\n  'anissa',\n  'anita',\n  'anja',\n  'anjelica',\n  'ann',\n  'anna',\n  'annabel',\n  'annabella',\n  'annabelle',\n  'annalisa',\n  'annamaria',\n  'anne',\n  'annemarie',\n  'annette',\n  'annie',\n  'annika',\n  'annmarie',\n  'anohito',\n  'antoinette',\n  'antonella',\n  'antonia',\n  'anya',\n  'aoi',\n  'aria',\n  'ariana',\n  'arianna',\n  'arianne',\n  'arielle',\n  'arleen',\n  'arlena',\n  'arlene',\n  'arlette',\n  'aroha',\n  'arpita',\n  'asha',\n  'ashanti',\n  'ashlee',\n  'ashleigh',\n  'ashley',\n  'ashli',\n  'ashlie',\n  'ashly',\n  'ashlyn',\n  'ashraqat',\n  'ashton',\n  'asiya',\n  'asja',\n  'asmita',\n  'assil',\n  'astrid',\n  'ataahua',\n  'athena',\n  'audra',\n  'audrey',\n  'audri',\n  'audry',\n  'augustina',\n  'aurelia',\n  'austeja',\n  'ava',\n  'avigail',\n  'awa',\n  'aya',\n  'ayn',\n  'ayana',\n  'ayanna',\n  'ayesha',\n  'aygun',\n  'aylin',\n  'ayse',\n  'aysel',\n  'azra',\n  'azuna',\n  'barbara',\n  'barbora',\n  'barbra',\n  'bayarmaa',\n  'bea',\n  'beatrice',\n  'beatriz',\n  'becky',\n  'belinay',\n  'belinda',\n  'benita',\n  'bernadette',\n  'bernadine',\n  'bernice',\n  'bertha',\n  'beryl',\n  'bess',\n  'bessie',\n  'beth',\n  'bethanie',\n  'bethany',\n  'betsy',\n  'bette',\n  'bettie',\n  'bettina',\n  'betty',\n  'bettye',\n  'beula',\n  'beulah',\n  'bev',\n  'beverley',\n  'beverly',\n  'bianca',\n  'biljana',\n  'binita',\n  'bintou',\n  'bismah',\n  'blanca',\n  'blanche',\n  'blythe',\n  'bobbi',\n  'bobbie',\n  'boglarka',\n  'bolormaa',\n  'bonita',\n  'bonnie',\n  'brandi',\n  'brandie',\n  'breanna',\n  'bree',\n  'brenda',\n  'brenna',\n  'briana',\n  'brianna',\n  'brianne',\n  'bridget',\n  'bridgett',\n  'bridgette',\n  'brigid',\n  'britney',\n  'britt',\n  'brittany',\n  'brittney',\n  'brittni',\n  'brittny',\n  'bronwyn',\n  'brooke',\n  'bryanna',\n  'brynn',\n  'caitlin',\n  'caitlyn',\n  'calista',\n  'callie',\n  'camila',\n  'camile',\n  'camilla',\n  'camille',\n  'candace',\n  'candice',\n  'cara',\n  'carina',\n  'carissa',\n  'carla',\n  'carlene',\n  'carley',\n  'carlie',\n  'carlota',\n  'carly',\n  'carmel',\n  'carmela',\n  'carmella',\n  'carmen',\n  'carol',\n  'carole',\n  'carolina',\n  'caroline',\n  'carolyn',\n  'carrie',\n  'carrol',\n  'casandra',\n  'cassandra',\n  'cassie',\n  'catarina',\n  'caterina',\n  'catherina',\n  'catherine',\n  'cathleen',\n  'cathryn',\n  'cathy',\n  'catrina',\n  'cayla',\n  'cecelia',\n  'cecile',\n  'cecilia',\n  'cecily',\n  'celeste',\n  'celia',\n  'celina',\n  'celine',\n  'chandra',\n  'chanelle',\n  'chantal',\n  'chantelle',\n  'charis',\n  'charissa',\n  'charla',\n  'charlena',\n  'charlene',\n  'charlette',\n  'charlotte',\n  'charmaine',\n  'chedeline',\n  'chelsea',\n  'chelsey',\n  'cher',\n  'cheri',\n  'cherie',\n  'cheryl',\n  'chloe',\n  'chrissy',\n  'christa',\n  'christal',\n  'christen',\n  'christiana',\n  'christiane',\n  'christie',\n  'christina',\n  'christine',\n  'christy',\n  'chrystal',\n  'ciara',\n  'cierra',\n  'cindi',\n  'cindy',\n  'clair',\n  'claire',\n  'clara',\n  'clare',\n  'clarice',\n  'claris',\n  'clarissa',\n  'claudette',\n  'claudia',\n  'claudine',\n  'cleo',\n  'cleopatra',\n  'clotilde',\n  'coleen',\n  'colette',\n  'colleen',\n  'concepcion',\n  'connie',\n  'constance',\n  'constanza',\n  'consuelo',\n  'cora',\n  'coralie',\n  'cordelia',\n  'cori',\n  'corina',\n  'corine',\n  'corinna',\n  'corinne',\n  'cornelia',\n  'corrine',\n  'courtney',\n  'courtni',\n  'courtny',\n  'cristal',\n  'cristina',\n  'cyndi',\n  'cynthia',\n  'dahlia',\n  'daina',\n  'dalal',\n  'damaris',\n  'damia',\n  'dana',\n  'danette',\n  'dani',\n  'danica',\n  'daniela',\n  'daniele',\n  'daniella',\n  'danielle',\n  'danika',\n  'daniz',\n  'daphna',\n  'daphne',\n  'dara',\n  'darby',\n  'darcey',\n  'darcie',\n  'daria',\n  'darla',\n  'darlena',\n  'darlene',\n  'davida',\n  'davina',\n  'dayle',\n  'dayna',\n  'deana',\n  'deandra',\n  'deann',\n  'deanna',\n  'deanne',\n  'deb',\n  'debbie',\n  'debby',\n  'debora',\n  'deborah',\n  'debra',\n  'debrah',\n  'dede',\n  'dee',\n  'deedee',\n  'deena',\n  'deidre',\n  'deirdre',\n  'dela',\n  'delia',\n  'delilah',\n  'della',\n  'delores',\n  'deloris',\n  'delphine',\n  'demetria',\n  'dena',\n  'denice',\n  'denise',\n  'desiree',\n  'dhia',\n  'diana',\n  'diane',\n  'dianna',\n  'dianne',\n  'dina',\n  'dinah',\n  'dionne',\n  'diya',\n  'djeneba',\n  'dolores',\n  'dominique',\n  'dona',\n  'donna',\n  'dora',\n  'doreen',\n  'doris',\n  'dorla',\n  'dorothea',\n  'dorothy',\n  'dorthy',\n  'dottie',\n  'ecrin',\n  'edel',\n  'eden',\n  'edie',\n  'edith',\n  'edna',\n  'edwina',\n  'eevi',\n  'eileen',\n  'eisha',\n  'ekta',\n  'ela',\n  'elaina',\n  'elaine',\n  'elana',\n  'eleanor',\n  'elen',\n  'elena',\n  'eliana',\n  'elicia',\n  'elida',\n  'elif',\n  'elin',\n  'elina',\n  'elinor',\n  'elisa',\n  'elisabeth',\n  'elise',\n  'eliska',\n  'eliza',\n  'elizabete',\n  'elizabeth',\n  'elizaveta',\n  'ella',\n  'ellen',\n  'ellie',\n  'elly',\n  'elma',\n  'elnora',\n  'eloise',\n  'elouise',\n  'elsa',\n  'elsie',\n  'elva',\n  'elvina',\n  'elvira',\n  'ema',\n  'emelda',\n  'emely',\n  'emerald',\n  'emilee',\n  'emilia',\n  'emilie',\n  'emilija',\n  'emily',\n  'emina',\n  'emine',\n  'emmeline',\n  'emma',\n  'emmaline',\n  'emmie',\n  'emmy',\n  'enid',\n  'erica',\n  'ericka',\n  'erika',\n  'erin',\n  'erma',\n  'ernestina',\n  'ernestine',\n  'eryn',\n  'esma',\n  'esmeralda',\n  'esperanza',\n  'estela',\n  'estele',\n  'estella',\n  'estelle',\n  'ester',\n  'estere',\n  'esther',\n  'estrella',\n  'ethel',\n  'etta',\n  'eugenia',\n  'eugenie',\n  'eunice',\n  'eva',\n  'evangelina',\n  'evangeline',\n  'evelin',\n  'evelina',\n  'evelyn',\n  'evi',\n  'evie',\n  'evita',\n  'fajr',\n  'fanta',\n  'farah',\n  'farida',\n  'farrah',\n  'farzana',\n  'fatemeh',\n  'fatiha',\n  'fatima',\n  'fatin',\n  'fatma',\n  'fatoumata',\n  'fay',\n  'faye',\n  'felecia',\n  'felicia',\n  'fenna',\n  'fernanda',\n  'fien',\n  'fiona',\n  'flora',\n  'florencia',\n  'fozia',\n  'fran',\n  'frances',\n  'francesca',\n  'francina',\n  'francine',\n  'francisca',\n  'francoise',\n  'freda',\n  'freja',\n  'frida',\n  'frieda',\n  'gabija',\n  'gabriela',\n  'gabriella',\n  'gabrielle',\n  'gale',\n  'gamalat',\n  'gamila',\n  'garnet',\n  'gayle',\n  'gemma',\n  'gena',\n  'genesis',\n  'genevieve',\n  'genna',\n  'georgette',\n  'georgie',\n  'georgina',\n  'geraldina',\n  'geraldine',\n  'geri',\n  'germaine',\n  'gertrude',\n  'gia',\n  'gianna',\n  'gigi',\n  'gilda',\n  'gillian',\n  'gina',\n  'giovanna',\n  'gisela',\n  'gisele',\n  'giselle',\n  'gita',\n  'gladys',\n  'glena',\n  'glenda',\n  'glenna',\n  'gloria',\n  'glynis',\n  'golda',\n  'goldie',\n  'googoosh',\n  'gracie',\n  'graciela',\n  'greta',\n  'gretchen',\n  'griselda',\n  'gunay',\n  'gunel',\n  'gwen',\n  'gwendolyn',\n  'gwyneth',\n  'habiba',\n  'hailey',\n  'hala',\n  'haley',\n  'hallie',\n  'hana',\n  'hanah',\n  'hanna',\n  'hannah',\n  'hariet',\n  'hariette',\n  'harmony',\n  'harriet',\n  'harriett',\n  'harriette',\n  'hasnaa',\n  'hasti',\n  'hatice',\n  'hattie',\n  'hawa',\n  'hayley',\n  'heather',\n  'heidi',\n  'helen',\n  'helena',\n  'helene',\n  'helga',\n  'helmi',\n  'henrietta',\n  'hermine',\n  'hessa',\n  'hester',\n  'hilary',\n  'hilda',\n  'hildegard',\n  'hillary',\n  'himari',\n  'hoda',\n  'hollie',\n  'hortense',\n  'hosna',\n  'hosniya',\n  'hussa',\n  'hyacinth',\n  'ida',\n  'ila',\n  'ilene',\n  'iliana',\n  'ilina',\n  'ilona',\n  'ilse',\n  'imane',\n  'imelda',\n  'imogena',\n  'imogene',\n  'indira',\n  'ines',\n  'ingrid',\n  'inji',\n  'iona',\n  'irati',\n  'irena',\n  'irene',\n  'irina',\n  'irma',\n  'isabel',\n  'isabela',\n  'isabele',\n  'isabell',\n  'isabella',\n  'isabelle',\n  'isadora',\n  'isidora',\n  'isla',\n  'islande',\n  'isobel',\n  'iva',\n  'ivaana',\n  'ivalu',\n  'ivana',\n  'izaro',\n  'jacinda',\n  'jacinta',\n  'jackie',\n  'jaclyn',\n  'jacquelina',\n  'jacqueline',\n  'jacquelyn',\n  'jada',\n  'jami',\n  'jana',\n  'janae',\n  'jane',\n  'janele',\n  'janelle',\n  'janessa',\n  'janet',\n  'janette',\n  'janice',\n  'janie',\n  'janina',\n  'janine',\n  'janis',\n  'jaqueline',\n  'jasmin',\n  'jasmina',\n  'javiera',\n  'jayne',\n  'jazmin',\n  'jazmine',\n  'jeana',\n  'jeane',\n  'jeanette',\n  'jeanie',\n  'jeanina',\n  'jeanine',\n  'jeanna',\n  'jeanne',\n  'jeannette',\n  'jeannie',\n  'jeannina',\n  'jeannine',\n  'jelena',\n  'jen',\n  'jena',\n  'jenelle',\n  'jenifer',\n  'jenna',\n  'jennette',\n  'jenni',\n  'jennie',\n  'jennifer',\n  'jenny',\n  'jeri',\n  'jerri',\n  'jesica',\n  'jess',\n  'jesse',\n  'jessica',\n  'jil',\n  'jilian',\n  'jill',\n  'jillian',\n  'jing',\n  'jo',\n  'joan',\n  'joana',\n  'joane',\n  'joann',\n  'joanna',\n  'joanne',\n  'jocelyn',\n  'jodi',\n  'jodie',\n  'jody',\n  'joelle',\n  'johana',\n  'johanna',\n  'joleen',\n  'jolena',\n  'jolene',\n  'joni',\n  'josefa',\n  'josefina',\n  'josefine',\n  'joselyn',\n  'josephina',\n  'josephine',\n  'josie',\n  'jovana',\n  'joya',\n  'joyce',\n  'juana',\n  'juanita',\n  'judeline',\n  'judith',\n  'judy',\n  'julia',\n  'juliana',\n  'julianna',\n  'julianne',\n  'julie',\n  'julienne',\n  'juliet',\n  'julieta',\n  'juliette',\n  'julissa',\n  'justina',\n  'justine',\n  'kabita',\n  'kacey',\n  'kadiatou',\n  'kaede',\n  'kaia',\n  'kaitlin',\n  'kaitlyn',\n  'kaleigh',\n  'kali',\n  'kallie',\n  'kamala',\n  'kamila',\n  'kamile',\n  'kanyakumari',\n  'kara',\n  'karen',\n  'kari',\n  'karima',\n  'karin',\n  'karina',\n  'karissa',\n  'karla',\n  'karly',\n  'karolina',\n  'karyn',\n  'kassandra',\n  'kassie',\n  'katarina',\n  'kate',\n  'katelyn',\n  'katelynn',\n  'katerina',\n  'katharina',\n  'katharine',\n  'katherina',\n  'katherine',\n  'kathie',\n  'kathleen',\n  'kathrine',\n  'kathryn',\n  'kathy',\n  'kati',\n  'katia',\n  'katie',\n  'katlyn',\n  'katrina',\n  'katy',\n  'kavita',\n  'kay',\n  'kaye',\n  'kayla',\n  'kaylee',\n  'kayleigh',\n  'keeley',\n  'keely',\n  'keira',\n  'keisha',\n  'kejsi',\n  'keley',\n  'keli',\n  'kelley',\n  'kelli',\n  'kellie',\n  'kelly',\n  'kelsie',\n  'kely',\n  'kendra',\n  'kenna',\n  'kenza',\n  'kera',\n  'keri',\n  'kerri',\n  'khadija',\n  'khadije',\n  'khawla',\n  'kheira',\n  'khongordzol',\n  'kia',\n  'kiana',\n  'kiara',\n  'kiera',\n  'kiersten',\n  'kiley',\n  'kim',\n  'kimberlee',\n  'kimberley',\n  'kimberli',\n  'kimberly',\n  'kimmernaq',\n  'kira',\n  'kirsten',\n  'kirstin',\n  'kizzy',\n  'klea',\n  'konul',\n  'kori',\n  'kourtney',\n  'krista',\n  'kristen',\n  'kristi',\n  'kristie',\n  'kristin',\n  'kristina',\n  'kristine',\n  'kristy',\n  'kristyna',\n  'krystal',\n  'kyla',\n  'kylee',\n  'kylie',\n  'kyra',\n  'lacey',\n  'lacie',\n  'lacy',\n  'ladona',\n  'ladonna',\n  'laia',\n  'laila',\n  'lakesha',\n  'lamija',\n  'lana',\n  'lara',\n  'larissa',\n  'latasha',\n  'latifa',\n  'latisha',\n  'latonya',\n  'latoya',\n  'laura',\n  'laurel',\n  'lauren',\n  'laurie',\n  'lauryn',\n  'laverna',\n  'laverne',\n  'lavinia',\n  'laxmi',\n  'layla',\n  'lea',\n  'leah',\n  'leana',\n  'leandra',\n  'leane',\n  'leann',\n  'leanna',\n  'leanne',\n  'leda',\n  'leena',\n  'leia',\n  'leigh',\n  'leila',\n  'leilani',\n  'leja',\n  'lejla',\n  'lela',\n  'lena',\n  'lenora',\n  'lenore',\n  'leola',\n  'leona',\n  'leonie',\n  'leonora',\n  'leora',\n  'lesedi',\n  'lesley',\n  'lesli',\n  'leslie',\n  'lesly',\n  'leticia',\n  'letitia',\n  'lettie',\n  'lexie',\n  'leyla',\n  'lia',\n  'lian',\n  'liana',\n  'lianne',\n  'libbie',\n  'libby',\n  'lidia',\n  'lidya',\n  'liepa',\n  'lila',\n  'lili',\n  'lilia',\n  'lilian',\n  'liliana',\n  'lilja',\n  'lillia',\n  'lillian',\n  'lillie',\n  'lilly',\n  'lin',\n  'lina',\n  'linda',\n  'lindsay',\n  'lindsey',\n  'lindsi',\n  'lindsy',\n  'lindy',\n  'lisa',\n  'lisette',\n  'livia',\n  'liz',\n  'liza',\n  'lizbeth',\n  'lizette',\n  'lizzie',\n  'lois',\n  'lola',\n  'lolita',\n  'lora',\n  'loraina',\n  'loraine',\n  'lorelei',\n  'lorena',\n  'lorene',\n  'loretta',\n  'lori',\n  'lorie',\n  'lorna',\n  'lorraina',\n  'lorraine',\n  'lorri',\n  'lorrie',\n  'lotte',\n  'lottie',\n  'louella',\n  'louisa',\n  'louise',\n  'lovelie',\n  'luann',\n  'lucia',\n  'luciana',\n  'lucie',\n  'lucija',\n  'lucile',\n  'lucille',\n  'lucinda',\n  'lucy',\n  'luela',\n  'luella',\n  'luisa',\n  'lula',\n  'lulu',\n  'lulwa',\n  'luna',\n  'lupe',\n  'lupita',\n  'luz',\n  'lydia',\n  'lyla',\n  'lyn',\n  'lyna',\n  'lynda',\n  'lyndsey',\n  'lyne',\n  'lynette',\n  'lynn',\n  'lynna',\n  'lynne',\n  'lynnette',\n  'lynsey',\n  'mabel',\n  'mable',\n  'macie',\n  'macy',\n  'madalyn',\n  'maddie',\n  'madeleine',\n  'madelina',\n  'madeline',\n  'madelyn',\n  'madge',\n  'madison',\n  'madonna',\n  'mae',\n  'magda',\n  'magdalena',\n  'magdalene',\n  'maggie',\n  'maha',\n  'maia',\n  'maire',\n  'maisie',\n  'maite',\n  'maja',\n  'malak',\n  'malen',\n  'malia',\n  'malika',\n  'malinda',\n  'mallory',\n  'mandakranta',\n  'mandy',\n  'manon',\n  'manuela',\n  'mara',\n  'marcela',\n  'marcella',\n  'marcelle',\n  'marci',\n  'marcia',\n  'marcie',\n  'marcy',\n  'margaret',\n  'margarette',\n  'margarida',\n  'margarita',\n  'marge',\n  'margery',\n  'margie',\n  'margo',\n  'margot',\n  'margret',\n  'margrette',\n  'marguerite',\n  'mari',\n  'maria',\n  'mariah',\n  'mariam',\n  'mariamawit',\n  'mariami',\n  'marian',\n  'mariana',\n  'mariane',\n  'marianna',\n  'marianne',\n  'maribel',\n  'marie',\n  'mariela',\n  'mariella',\n  'marija',\n  'marilyn',\n  'marina',\n  'maris',\n  'marisa',\n  'marisol',\n  'marissa',\n  'maritza',\n  'marjorie',\n  'marla',\n  'marlena',\n  'marlene',\n  'marnie',\n  'marsha',\n  'marta',\n  'martha',\n  'martina',\n  'martine',\n  'marwa',\n  'mary',\n  'maryam',\n  'maryan',\n  'maryann',\n  'marybeth',\n  'maryjane',\n  'marylou',\n  'masoumeh',\n  'mathilde',\n  'matilda',\n  'matilde',\n  'mattie',\n  'maude',\n  'maura',\n  'maureen',\n  'mavis',\n  'maxina',\n  'maxine',\n  'maybell',\n  'mayra',\n  'maysoun',\n  'mazie',\n  'mckenzie',\n  'meagan',\n  'meg',\n  'megan',\n  'meghan',\n  'mei',\n  'melanie',\n  'melina',\n  'melinda',\n  'melisa',\n  'melissa',\n  'mellisa',\n  'meredith',\n  'meriem',\n  'merissa',\n  'merjem',\n  'meron',\n  'meryem',\n  'meryl',\n  'mia',\n  'micaela',\n  'michaela',\n  'michele',\n  'michelle',\n  'mika',\n  'mikaela',\n  'mila',\n  'milagros',\n  'mildred',\n  'milica',\n  'millicent',\n  'millie',\n  'milly',\n  'mimi',\n  'mindy',\n  'minenhle',\n  'minerva',\n  'minh',\n  'minnie',\n  'mira',\n  'miral',\n  'miranda',\n  'miriam',\n  'mirlande',\n  'mitzi',\n  'miyar',\n  'mobina',\n  'moira',\n  'mollie',\n  'molly',\n  'mona',\n  'monica',\n  'monika',\n  'monique',\n  'mrignayani',\n  'muriel',\n  'mya',\n  'myra',\n  'myrlande',\n  'myrna',\n  'myrtle',\n  'naasunnguaq',\n  'nadene',\n  'nadia',\n  'nadina',\n  'nadine',\n  'nahia',\n  'naima',\n  'nalla',\n  'nancy',\n  'nanette',\n  'naomi',\n  'naomie',\n  'narges',\n  'natalia',\n  'natalie',\n  'natasha',\n  'nathalie',\n  'nehir',\n  'nel',\n  'nela',\n  'nelisa',\n  'nell',\n  'nellie',\n  'nena',\n  'nerissa',\n  'nesreen',\n  'nia',\n  'niamh',\n  'nichole',\n  'nicki',\n  'nicky',\n  'nicola',\n  'nicole',\n  'nicolette',\n  'niharika',\n  'nika',\n  'niki',\n  'nikita',\n  'nikki',\n  'nila',\n  'nilay',\n  'nina',\n  'nisanur',\n  'nisha',\n  'nita',\n  'nivi',\n  'noa',\n  'noella',\n  'noelle',\n  'noemi',\n  'noor',\n  'nora',\n  'norah',\n  'noreen',\n  'norma',\n  'nouf',\n  'nour',\n  'nur',\n  'nuray',\n  'nurul',\n  'nyla',\n  'octavia',\n  'odelia',\n  'odette',\n  'odval',\n  'ofelia',\n  'oisha',\n  'ola',\n  'olga',\n  'olivia',\n  'ophelia',\n  'oumou',\n  'oyunbileg',\n  'paige',\n  'pam',\n  'pamela',\n  'pandora',\n  'paninnguaq',\n  'paola',\n  'parvati',\n  'patrica',\n  'patrice',\n  'patricia',\n  'patti',\n  'pattie',\n  'patty',\n  'paula',\n  'paulette',\n  'paulina',\n  'pauline',\n  'peggy',\n  'penelope',\n  'perla',\n  'petra',\n  'philomena',\n  'phoebe',\n  'phylis',\n  'phyllis',\n  'pipaluk',\n  'polly',\n  'portia',\n  'priscila',\n  'priscilla',\n  'priyamvada',\n  'prudence',\n  'puteri',\n  'queenie',\n  'quiana',\n  'rabina',\n  'rachael',\n  'rachel',\n  'rachele',\n  'rachelle',\n  'rachida',\n  'rae',\n  'raina',\n  'ramona',\n  'randi',\n  'rania',\n  'raquel',\n  'rayna',\n  'reanna',\n  'reba',\n  'rebecca',\n  'rebeka',\n  'rebekah',\n  'reem',\n  'reema',\n  'regina',\n  'reihaneh',\n  'reina',\n  'rena',\n  'renae',\n  'renata',\n  'renee',\n  'reta',\n  'reyna',\n  'rhea',\n  'rhiannon',\n  'rhoda',\n  'rhona',\n  'rhonda',\n  'ria',\n  'richelle',\n  'ricki',\n  'rikki',\n  'riko',\n  'rimas',\n  'rin',\n  'rina',\n  'rita',\n  'riya',\n  'robbin',\n  'roberta',\n  'robyn',\n  'rochele',\n  'rochelle',\n  'rocio',\n  'roghayyeh',\n  'rolanda',\n  'ronda',\n  'roni',\n  'ronna',\n  'rosa',\n  'rosalie',\n  'rosalina',\n  'rosalind',\n  'rosalinda',\n  'rosalyn',\n  'rosanna',\n  'rosanne',\n  'roseann',\n  'roseanne',\n  'rosella',\n  'roselle',\n  'rosemarie',\n  'rosemary',\n  'rosetta',\n  'rosie',\n  'roslyn',\n  'rowan',\n  'rowena',\n  'roxana',\n  'roxane',\n  'roxanna',\n  'roxanne',\n  'roxie',\n  'roxy',\n  'ruth',\n  'ruthie',\n  'saanvi',\n  'sabina',\n  'sabine',\n  'sabrina',\n  'sade',\n  'sadie',\n  'sahar',\n  'saida',\n  'sakeena',\n  'sakineh',\n  'sakura',\n  'sallie',\n  'sally',\n  'salma',\n  'salome',\n  'samantha',\n  'samira',\n  'sandra',\n  'sara',\n  'sarah',\n  'sarina',\n  'sasha',\n  'savanna',\n  'savannah',\n  'scarlett',\n  'selena',\n  'selene',\n  'selina',\n  'selma',\n  'serena',\n  'serife',\n  'setayesh',\n  'sevda',\n  'sevinj',\n  'shahd',\n  'shaikha',\n  'shaim',\n  'shaimaa',\n  'shakira',\n  'shana',\n  'shanaya',\n  'shanda',\n  'shania',\n  'shanna',\n  'shannon',\n  'shanon',\n  'shari',\n  'sharlene',\n  'sharon',\n  'sharron',\n  'shauna',\n  'shawna',\n  'shayla',\n  'shayma',\n  'shayna',\n  'sheba',\n  'sheena',\n  'sheila',\n  'shelia',\n  'shelley',\n  'shelly',\n  'sheri',\n  'sheridan',\n  'sherifa',\n  'sherri',\n  'sherrie',\n  'sherry',\n  'sheryl',\n  'shira',\n  'shirley',\n  'shirli',\n  'shirly',\n  'shona',\n  'shristi',\n  'shyla',\n  'sierra',\n  'sillin',\n  'silvia',\n  'simona',\n  'simone',\n  'sindy',\n  'siobhan',\n  'sita',\n  'siti',\n  'skye',\n  'snezana',\n  'sobia',\n  'sofia',\n  'sofie',\n  'sofija',\n  'somayyeh',\n  'sondra',\n  'sonia',\n  'sonja',\n  'sonya',\n  'sophia',\n  'sophie',\n  'stacey',\n  'staci',\n  'stacie',\n  'stacy',\n  'starla',\n  'stefanie',\n  'stela',\n  'stella',\n  'stephanie',\n  'suha',\n  'sumayah',\n  'sunita',\n  'susan',\n  'susana',\n  'susane',\n  'susanna',\n  'susannah',\n  'susanne',\n  'susi',\n  'susie',\n  'suzan',\n  'suzana',\n  'suzane',\n  'suzanna',\n  'suzanne',\n  'suzette',\n  'suzie',\n  'suzy',\n  'sybil',\n  'sylvia',\n  'sylvie',\n  'tabatha',\n  'tabitha',\n  'tala',\n  'talia',\n  'talitha',\n  'tamar',\n  'tamara',\n  'tamera',\n  'tami',\n  'tamika',\n  'tammi',\n  'tammie',\n  'tammy',\n  'tamra',\n  'tania',\n  'tanika',\n  'tanisha',\n  'tanya',\n  'tara',\n  'tarana',\n  'taryn',\n  'tasha',\n  'tatiana',\n  'tawana',\n  'tegan',\n  'teodora',\n  'teresa',\n  'tereza',\n  'teri',\n  'terri',\n  'terrie',\n  'tess',\n  'tessa',\n  'tessie',\n  'thalia',\n  'thandolwethu',\n  'thea',\n  'thelma',\n  'theodora',\n  'theresa',\n  'therese',\n  'thomasina',\n  'tia',\n  'tiana',\n  'tianna',\n  'tiara',\n  'tiffany',\n  'tina',\n  'tingting',\n  'tisha',\n  'toni',\n  'tonia',\n  'tonya',\n  'tora',\n  'tori',\n  'tracey',\n  'traci',\n  'tracie',\n  'tracy',\n  'tricia',\n  'trina',\n  'trish',\n  'trisha',\n  'trista',\n  'trudy',\n  'tui',\n  'tula',\n  'tyra',\n  'ugne',\n  'ursula',\n  'urte',\n  'uxue',\n  'valentina',\n  'valeria',\n  'valerie',\n  'valery',\n  'vanesa',\n  'vanessa',\n  'veda',\n  'velma',\n  'vera',\n  'verna',\n  'vernice',\n  'veronica',\n  'vesna',\n  'vicki',\n  'vickie',\n  'vicky',\n  'vikky',\n  'viktoria',\n  'viktorie',\n  'viktorija',\n  'vilte',\n  'violeta',\n  'vivian',\n  'viviana',\n  'vivien',\n  'vivienne',\n  'vusala',\n  'wakana',\n  'wanda',\n  'wendi',\n  'wendy',\n  'whitney',\n  'whitni',\n  'whitny',\n  'widelene',\n  'wila',\n  'wilhelmina',\n  'willa',\n  'willow',\n  'wilma',\n  'winifred',\n  'winnie',\n  'winnifred',\n  'winona',\n  'xiaomei',\n  'xiaoyan',\n  'ximena',\n  'xinyi',\n  'yael',\n  'yagmur',\n  'yan',\n  'yarin',\n  'yasmin',\n  'yasmine',\n  'yelena',\n  'yesenia',\n  'ying',\n  'yolanda',\n  'yuina',\n  'yuna',\n  'yvette',\n  'yvona',\n  'yvone',\n  'yvonna',\n  'yvonne',\n  'zada',\n  'zahra',\n  'zainab',\n  'zara',\n  'zehra',\n  'zeinab',\n  'zelda',\n  'zelma',\n  'zena',\n  'zeynab',\n  'zeynep',\n  'zineb',\n  'zoe',\n  'zoey',\n  'zofia',\n  'zola',\n  'zora',\n  'zsofia',\n\n  'abie',\n  'aneta',\n  'annett',\n  'augustine',\n  'becca',\n  'bertie',\n  'brigitte',\n  'carlotta',\n  'ekaterina',\n  'eleni',\n  'elie',\n  'emanuela',\n  'emile',\n  'emile',\n  'emmanuelle',\n  'etienne',\n  'ewa',\n  'gabi',\n  'gertrud',\n  'iwona',\n  'jacky',\n  'jules',\n  'kalle',\n  'kat',\n  'larisa',\n  'lex',\n  'liv',\n  'luise',\n  'maud',\n  'midori',\n  'milena',\n  'myriam',\n  'nadya',\n  'natalya',\n  'oksana',\n  'pia',\n  'polina',\n  'rebeca',\n  'sharyn',\n  'sri',\n  'stephane',\n  'usha',\n  // 'grace',\n  // 'lily',\n  // 'scarlet',\n  // 'victoria',\n]\n"
  },
  {
    "path": "data/lexicon/people/firstnames.js",
    "content": "//ambiguously-gendered firstnames\n//names commonly used in either gender\nexport default [\n  'alexis',\n  'andra',\n  'aubrey',\n  'blair',\n  'casey',\n  'cassidy',\n  'charlie',\n  'cheyenne',\n  'devan',\n  'devon',\n  'jamie',\n  'jammie',\n  'jessie',\n  'jude',\n  'kiran',\n  'kasey',\n  'kelsey',\n  'kenyatta',\n  'kerry',\n  'kris',\n  'lashawn',\n  'marion',\n  'marlo',\n  'mel',\n  'mina',\n  'morgan',\n  'nelly',\n  'quinn',\n  'regan',\n  'rene',\n  'shay',\n  'shea',\n  'shelby',\n  'shiloh',\n  'andrea',\n  'gabriele',\n  'hinata',\n  'jie',\n  'luca',\n  'manaia',\n  'melokuhle',\n  'sumit',\n  'gaby',\n  'jaime',\n  'kendall',\n  'syd',\n  'kai',\n  'kiril',\n  'leif',\n  'mads',\n  'matti',\n  'matty',\n  'maxime',\n  'nico',\n  'niko',\n  'nikos',\n  'adrien',\n  'alexei',\n  'andi',\n  'andrey',\n  'avi',\n  'darcy',\n  'ilya',\n  'werner',\n  'francois',\n  'friedrich',\n  'akira',\n  'alfie',\n  'alois',\n]\n"
  },
  {
    "path": "data/lexicon/people/honorifics.js",
    "content": "export default [\n  'lieutenant general',\n  'field marshal',\n  'rear admiral',\n  'vice admiral',\n  'sergeant major',\n  'director general',\n]"
  },
  {
    "path": "data/lexicon/people/lastnames.js",
    "content": "//a random copy+paste job from around the internet\n//(dont mean to step on any toes)\n//some countries have a higher lastname-signal than others\n//this list is further augmented by some regexps, over in ./data/punct_rules.js\n// https://en.wikipedia.org/wiki/List_of_most_common_surnames_in_Europe\nexport default [\n  'acosta',\n  'adams',\n  'aguilar',\n  'akhtar',\n  'aleksejev',\n  'aliyev',\n  'almeida',\n  'alvarez',\n  'alves',\n  'andersen',\n  'anderson',\n  'andersson',\n  'andov',\n  'andreassen',\n  'andrejev',\n  'angelov',\n  'angelova',\n  'araujo',\n  'araya',\n  'arslan',\n  'aslan',\n  'ayala',\n  'aydin',\n  'babic',\n  'bach',\n  'baez',\n  'bahk',\n  'bahng',\n  'bailey',\n  'bakker',\n  'bandara',\n  'bandyopadhyay',\n  'banik',\n  'barbieri',\n  'barbosa',\n  'barnes',\n  'barnier',\n  'barua',\n  'bauer',\n  'becker',\n  'beckham',\n  'beethoven',\n  'begu',\n  'bektashi',\n  'bengtsson',\n  'benitez',\n  'bennett',\n  'berger',\n  'bergmann',\n  'berisha',\n  'bernasconi',\n  'berndsen',\n  'bhak',\n  'bhang',\n  'bhoumik',\n  'bhowmik',\n  'bhuiyan',\n  'bianchi',\n  'bishwas',\n  'blanco',\n  'blazevic',\n  'blondal',\n  'bogdanov',\n  'bondarenko',\n  'bonik',\n  'boruya',\n  'bosu',\n  'bouchard',\n  'boyko',\n  'bozic',\n  'bozinov',\n  'brankov',\n  'briem',\n  'brooks',\n  'bryant',\n  'byrne',\n  'bytyqi',\n  'caceres',\n  'calderon',\n  'campbell',\n  'cardoso',\n  'cardozo',\n  'carter',\n  'caruso',\n  'carvalho',\n  'castillo',\n  'castro',\n  'cavadini',\n  'ceban',\n  'cebotari',\n  'celik',\n  'cengic',\n  'cereghetti',\n  'cerna',\n  'cerny',\n  'chakma',\n  'chakraborty',\n  'chan',\n  'chand',\n  'chang',\n  'chatterjee',\n  'chapman',\n  'chavez',\n  'che',\n  'chen',\n  'cheon',\n  'cheong',\n  'cheung',\n  'chiu',\n  'choi',\n  'chong',\n  'choung',\n  'chow',\n  'chowdhury',\n  'choy',\n  'christensen',\n  'christiansen',\n  'chung',\n  'chwe',\n  'ciobanu',\n  'clark',\n  'clarke',\n  'cohen',\n  'coleman',\n  'collins',\n  'conti',\n  'contreras',\n  'cooke',\n  'cooper',\n  'corbyn',\n  'correa',\n  'correia',\n  'costa',\n  'cox',\n  'crivelli',\n  'cruz',\n  'dahl',\n  'damcevski',\n  'danielsen',\n  'dankula',\n  'datta',\n  'davidov',\n  'davies',\n  'davis',\n  'de boer',\n  'de groot',\n  'de jong',\n  'de la cruz',\n  'de leon',\n  'de luca',\n  'de silva',\n  'de vries',\n  'debnath',\n  'delgado',\n  'delic',\n  'demir',\n  'demirovic',\n  'dervishi',\n  'devi',\n  'dewan',\n  'dias',\n  'diaz',\n  'dimitrov',\n  'dimitrova',\n  'dissanayake',\n  'djurhuus',\n  'dogan',\n  'doherty',\n  'dominguez',\n  'donev',\n  'dordevic',\n  'dotto',\n  'driscoll',\n  'duarte',\n  'dubois',\n  'dumitru',\n  'durand',\n  'duric',\n  'dutta',\n  'dvorak',\n  'dvorakova',\n  'eder',\n  'edison',\n  'edwards',\n  'einstein',\n  'eriksen',\n  'eriksson',\n  'escobar',\n  'espinoza',\n  'esposito',\n  'estrada',\n  'evans',\n  'faber',\n  'ferhatovic',\n  'fernandes',\n  'fernandez',\n  'ferrara',\n  'ferrari',\n  'ferreira',\n  'filipov',\n  'filipovic',\n  'fischer',\n  'fjeldsted',\n  'flores',\n  'fontana',\n  'fortin',\n  'fournier',\n  // 'franco',\n  'friedman',\n  'fuchs',\n  'fuentes',\n  'fujita',\n  'gagne',\n  'gagnon',\n  'galeano',\n  'gallagher',\n  'galli',\n  'gallo',\n  'gamage',\n  'gandhi',\n  'gao',\n  'garcia',\n  'garza',\n  'gashi',\n  'gauthier',\n  'georgiev',\n  'georgieva',\n  'gheorghe',\n  'gibson',\n  'gil',\n  'gimenez',\n  'giordano',\n  'gjonaj',\n  'gjoni',\n  'gorbachev',\n  'golubev',\n  'gomes',\n  'gomez',\n  'goncalves',\n  'gonzales',\n  'gonzalez',\n  'goode',\n  'goodman',\n  'grayling',\n  'grgic',\n  'griffiths',\n  'gruber',\n  'guo',\n  'gustafsson',\n  'gutierrez',\n  'guzman',\n  'gwon',\n  'hadzic',\n  'hagen',\n  'halvorsen',\n  'hamalainen',\n  'hansen',\n  'hansson',\n  'haque',\n  'harris',\n  'hasani',\n  'hasanov',\n  'hasanovic',\n  'hashimoto',\n  'haugen',\n  'haung',\n  'hayashi',\n  'hayes',\n  'heikkila',\n  'heikkinen',\n  'heinonen',\n  'hemingway',\n  'henderson',\n  'henriksen',\n  'hernandez',\n  'herrera',\n  'hitchcock',\n  'hjaltalin',\n  'hoang',\n  'hodzic',\n  'hofer',\n  'hoffmann',\n  'hojgaard',\n  'hok',\n  'horak',\n  'horakova',\n  'horvat',\n  'hoxha',\n  'hristov',\n  'hristova',\n  'hu',\n  'huaman',\n  'huang',\n  'huber',\n  'hughes',\n  'huynh',\n  'ibrahimovic',\n  'iglesias',\n  'ikeda',\n  'iliev',\n  'ilieva',\n  'inoue',\n  'ionescu',\n  'ishikawa',\n  'ito',\n  'ivanou',\n  'ivanov',\n  'ivanova',\n  'jackson',\n  'jacobsen',\n  'jakobsson',\n  'jansen',\n  'janssen',\n  'janssens',\n  'jansson',\n  'jarvinen',\n  'jenkins',\n  'jensen',\n  'jhang',\n  'jimenez',\n  'joensen',\n  'johannesen',\n  'johannessen',\n  'johansen',\n  'johansson',\n  'johnsen',\n  'johnson',\n  'johnston',\n  'jones',\n  'jonsson',\n  'jorgensen',\n  'joung',\n  'jovanovic',\n  'jung',\n  'juric',\n  'kahn',\n  'kalloe',\n  'kaminski',\n  'karjalainen',\n  'karlsen',\n  'karlsson',\n  'kastrati',\n  'kato',\n  'kaur',\n  'kaya',\n  'kayser',\n  'kazlov',\n  'kennedy',\n  'khan',\n  'kieffer',\n  'kilic',\n  'kimura',\n  'kinnunen',\n  'klein',\n  'kluivert',\n  'knezevic',\n  'kobayashi',\n  'korhonen',\n  'koskinen',\n  'kovac',\n  'kovacevic',\n  'kovacic',\n  'kovacs',\n  'koval',\n  'kovalchuk',\n  'kovalenko',\n  'kowalczyk',\n  'kowalski',\n  'kozlov',\n  'krasniqi',\n  'kravchenko',\n  'kremer',\n  'kristensen',\n  'kristiansen',\n  'kryeziu',\n  'kucera',\n  'kucerova',\n  'kumar',\n  'kumara',\n  'kuznetsov',\n  'kvaran',\n  'kwok',\n  'kwon',\n  'laine',\n  'laitinen',\n  'lammy',\n  'larsen',\n  'larsson',\n  'lau',\n  'lavoie',\n  'lebedev',\n  'lefebvre',\n  'lefevre',\n  'lehtinen',\n  'lehtonen',\n  'leitner',\n  'leka',\n  'lekaj',\n  'lenin',\n  'leroy',\n  'lewis',\n  'li',\n  'lincoln',\n  'lindberg',\n  'lindholm',\n  'liu',\n  'liyanage',\n  'lombardi',\n  'lopes',\n  'lopez',\n  'lovric',\n  'lukic',\n  'lund',\n  'lungu',\n  'luo',\n  'ly',\n  'lynch',\n  'madrigal',\n  'madsen',\n  'maeda',\n  'magnusson',\n  'maier',\n  'majerus',\n  'makela',\n  'makinen',\n  'mamani',\n  'mammadov',\n  'mancini',\n  'mariani',\n  'maric',\n  'marin',\n  'marino',\n  'markovic',\n  'marques',\n  'marroquin',\n  'martinez',\n  'martins',\n  'matei',\n  'matic',\n  'matsumoto',\n  'mayer',\n  'mayr',\n  'mccarthy',\n  'mclaughlin',\n  'mehmedovic',\n  'mehmeti',\n  'meijer',\n  'mejia',\n  'melnyk',\n  'melo',\n  'mendes',\n  'mendez',\n  'mercier',\n  'messi',\n  'messier',\n  'meyer',\n  'meyers',\n  'micrachi',\n  'mihhailov',\n  'mikkelsen',\n  'miller',\n  'mohan',\n  'molina',\n  'moller',\n  'moore',\n  'mora',\n  'morales',\n  'moreau',\n  'moreira',\n  'moreno',\n  'monroe',\n  'moretti',\n  'mori',\n  'morin',\n  'morina',\n  'morozov',\n  'morris',\n  'mortensen',\n  'moser',\n  'moss',\n  'mozart',\n  'mulder',\n  'muller',\n  'munoz',\n  'munteanu',\n  'murati',\n  'muratovic',\n  'murphy',\n  'murray',\n  'mussolini',\n  'nagy',\n  'nakajima',\n  'nakamura',\n  'nakashima',\n  'narayan',\n  'navarro',\n  'neilson',\n  'nemcova',\n  'nemec',\n  'nguyen',\n  'nielsen',\n  'niemi',\n  'nieminen',\n  'nikolic',\n  'nikolov',\n  'nikolova',\n  'nilsen',\n  'nilsson',\n  'nixon',\n  'norodahl',\n  'novak',\n  'novakova',\n  'novikov',\n  'novotna',\n  'novotny',\n  'nowak',\n  'nunes',\n  'nunez',\n  'nyman',\n  'obama',\n  'obrien',\n  'oconnor',\n  'ogawa',\n  'oliveira',\n  'oliynyk',\n  'olofsson',\n  'olsen',\n  'olsson',\n  'oneill',\n  'orellana',\n  'ortega',\n  'ortiz',\n  'orwell',\n  'ozdemir',\n  'ozturk',\n  'pahk',\n  'pahng',\n  'pak',\n  'parker',\n  'patel',\n  'patterson',\n  'pavic',\n  'pavlov',\n  'pavlovic',\n  'pedersen',\n  'peeters',\n  'pena',\n  'pereira',\n  'perera',\n  'peretz',\n  'perez',\n  'peric',\n  'persson',\n  'petersen',\n  'peterson',\n  'petrov',\n  'petrova',\n  'petrovic',\n  'pettersen',\n  'pettersson',\n  'phak',\n  'pham',\n  'phan',\n  'phang',\n  'phillips',\n  'picasso',\n  'pichler',\n  'piero',\n  'pinas',\n  'pinto',\n  'polishchuk',\n  'popescu',\n  'popov',\n  'popovic',\n  'portillo',\n  'poulsen',\n  'powell',\n  'prasad',\n  'prifti',\n  'prochazka',\n  'prochazkova',\n  'putin',\n  'quispe',\n  'radic',\n  'radu',\n  'ramirez',\n  'ramos',\n  'rantanen',\n  'rasmussen',\n  'ravelli',\n  'reagan',\n  'rees',\n  'reiter',\n  'reuter',\n  'reyes',\n  'ribeiro',\n  'ricci',\n  'richardson',\n  'ries',\n  'rivas',\n  'rivera',\n  'rizzo',\n  'roberts',\n  'robertson',\n  'robinson',\n  'rocha',\n  'rodrigues',\n  'rodriguez',\n  'rogers',\n  'rojas',\n  'romano',\n  'romero',\n  'roosevelt',\n  'rossi',\n  'rotari',\n  'roux',\n  'rowling',\n  'rubio',\n  'ruiz',\n  'russo',\n  'rusu',\n  'ryang',\n  'ryoo',\n  'ryu',\n  'saarinen',\n  'sahin',\n  'saito',\n  'salas',\n  'salihovic',\n  'salminen',\n  'salo',\n  'salonen',\n  'sanchez',\n  'sanders',\n  'santana',\n  'sante',\n  'santos',\n  'sanz',\n  'saric',\n  'sasaki',\n  'sato',\n  'savic',\n  'scheving',\n  'schiltz',\n  'schmid',\n  'schmidt',\n  'schmit',\n  'schmitz',\n  'schneider',\n  'schroeder',\n  'schulz',\n  'schwarz',\n  'seinfeld',\n  'segura',\n  'semjonov',\n  'semyonov',\n  'seoh',\n  'sepulveda',\n  'serrano',\n  'shala',\n  'sharma',\n  'shehu',\n  'shevchenko',\n  'shevchuk',\n  'shimizu',\n  'silva',\n  'simmons',\n  'simonsen',\n  'sinatra',\n  'singh',\n  'sirbu',\n  'smirnov',\n  'smit',\n  'smith',\n  'smyth',\n  'sokolov',\n  'solovyov',\n  'sorensen',\n  'sosa',\n  'soto',\n  'soung',\n  'sousa',\n  'stalin',\n  'starmer',\n  'steiner',\n  'stoica',\n  'stojanovic',\n  'stoyanov',\n  'stoyanova',\n  'suarez',\n  'subotic',\n  'sullivan',\n  'suzuki',\n  'svensson',\n  'svoboda',\n  'svobodova',\n  'szabo',\n  'tahirovic',\n  'takahashi',\n  'tanaka',\n  'teixeira',\n  'thatcher',\n  'thill',\n  'thompson',\n  'thomsen',\n  'thomson',\n  'thorarensen',\n  'thorlacius',\n  'tian',\n  'tjin',\n  'tkachenko',\n  'todorov',\n  'todorova',\n  'tolstoy',\n  'tomic',\n  'torres',\n  'toth',\n  'tran',\n  'tremblay',\n  'tryniski',\n  'tsui',\n  'tuominen',\n  'turcan',\n  'turner',\n  'turunen',\n  'valenzuela',\n  'valverde',\n  'van den berg',\n  'van dijk',\n  'van dyk',\n  'vargas',\n  'vasilyev',\n  'vasquez',\n  'vassiljev',\n  'vazquez',\n  'velasquez',\n  'vesela',\n  'vesely',\n  'vidovic',\n  'villalba',\n  'villalobos',\n  'vinogradov',\n  'virtanen',\n  'visser',\n  'vivaldi',\n  'volkov',\n  'vorobyov',\n  'vukovic',\n  'waage',\n  'wagner',\n  'walker',\n  'walsh',\n  // 'wang',\n  'watanabe',\n  'weber',\n  'weiss',\n  'welter',\n  'williams',\n  'wilson',\n  'wimmer',\n  'winkler',\n  'wisniewski',\n  'wojcik',\n  'wong',\n  'wright',\n  'wu',\n  'xiao',\n  'xu',\n  'yamada',\n  'yamaguchi',\n  'yamamoto',\n  'yamasaki',\n  'yamashita',\n  'yamazaki',\n  'yang',\n  'yeun',\n  'yeung',\n  'yi',\n  'yildirim',\n  'yildiz',\n  'yilmaz',\n  'yoshida',\n  'yun',\n  'zaytsev',\n  'zhang',\n  'zhao',\n  'zhou',\n  'zhu',\n  'atchison',\n  'dickinson',\n\n  'stevens',\n  'watson',\n  'koch',\n  'peters',\n  'jacobs',\n  'abbas',\n  'richards',\n  'fisher',\n  'kapoor',\n  'andrews',\n  'holmes',\n  'dixon',\n  'matthews',\n  'keller',\n  'armstrong',\n  'gibson',\n  'krishna',\n  'burns',\n  'browne',\n  'lang',\n  'mann',\n  'burke',\n  'davidson',\n  'reynolds',\n  'greene',\n  'roth',\n  'williamson',\n  'webb',\n  'choudhury',\n  'gardner',\n  'hart',\n  'morrison',\n  'carr',\n  'cunningham',\n  'lehmann',\n  'freeman',\n  'crawford',\n  'dunn',\n  'daniels',\n  'sakamoto',\n  'morton',\n  'agarwal',\n  'zimmermann',\n  'hawkins',\n  'kikuchi',\n  'ansari',\n  'carlsson',\n  'pearson',\n  'jennings',\n  'stephens',\n  'chopra',\n  'yokoyama',\n  'myers',\n  'saunders',\n  'papadopoulos',\n  'higgins',\n  'webster',\n  'wilkinson',\n  'kramer',\n  'bergman',\n  'meier',\n  'baldwin',\n  'stein',\n  'hopkins',\n  'stevenson',\n  'rosenberg',\n  'lindstrom',\n  'hoffman',\n  'mclean',\n  'wolff',\n  'vidal',\n  'kaplan',\n  'lawson',\n  'perkins',\n  'hofmann',\n  'krause',\n  'harper',\n  'bashir',\n  'bates',\n  'atkinson',\n  'walters',\n  'guerra',\n  'benson',\n  'nicholson',\n  'schmitt',\n  'schubert',\n  'holt',\n  'kane',\n  'fleming',\n  'gunnarsson',\n  'montgomery',\n  'hess',\n  'fowler',\n  'vogt',\n  'tavares',\n  'sinclair',\n  'milosevic',\n  'chattopadhyay',\n  'rowe',\n  'fuller',\n  'norris',\n  'jankovic',\n  'owens',\n  'adler',\n  'nash',\n  'steele',\n  'fitzgerald',\n  'lowe',\n  'osborne',\n  'kraus',\n  'tate',\n  'reis',\n  'buchanan',\n  'makarov',\n  'harding',\n  'goldberg',\n  'sandberg',\n  'griffith',\n  'guerrero',\n  'bartlett',\n  'zakharov',\n  'walton',\n  'farrell',\n  'olson',\n  'howe',\n  'goldstein',\n  'chaudhry',\n  'nichols',\n]\n"
  },
  {
    "path": "data/lexicon/people/maleNames.js",
    "content": "//names with a distinctive signal that they identify as a male, internationally\n// some are in ./switches/person-verb etc\nexport default [\n  'aarav',\n  'aaron',\n  'abdallah',\n  'abdel',\n  'abdoulaye',\n  'abdul',\n  'abdullah',\n  'abdullo',\n  'abdulrahman',\n  'abe',\n  'abel',\n  'abraham',\n  'abram',\n  'abu',\n  'abubakr',\n  'abulfazl',\n  'adam',\n  'adama',\n  'adan',\n  'adi',\n  'adolf',\n  'adolfo',\n  'adrian',\n  'advik',\n  'afonso',\n  'agustin',\n  'ahmad',\n  'ahmed',\n  'ahmet',\n  'aiden',\n  'aimar',\n  'ajani',\n  'alan',\n  'albert',\n  'alberto',\n  'alden',\n  'alec',\n  'alejandro',\n  'aleksandar',\n  'aleksander',\n  'alessandro',\n  'alex',\n  'alexander',\n  'alexandru',\n  'alfonso',\n  'alfred',\n  'ali',\n  'aladdin',\n  'allan',\n  'allen',\n  'alonso',\n  'alonzo',\n  'alphonso',\n  'alton',\n  'alvaro',\n  'alvin',\n  'amine',\n  'amir',\n  'amit',\n  'ammanuel',\n  'ammar',\n  'amos',\n  'anas',\n  'ander',\n  'andre',\n  'andreas',\n  'andrei',\n  'andres',\n  'andrew',\n  'andy',\n  'angel',\n  'angelo',\n  'anthony',\n  'antoine',\n  'anton',\n  'antoni',\n  'antonio',\n  'antony',\n  'aputsiaq',\n  'arata',\n  'archie',\n  'ari',\n  'ariel',\n  'ariki',\n  'arjun',\n  'armaan',\n  'armand',\n  'armando',\n  'arnav',\n  'arnold',\n  'aron',\n  'arthur',\n  'arturo',\n  'aryan',\n  'asahi',\n  'augustus',\n  'avery',\n  'ayaan',\n  'aykhan',\n  'aziz',\n  'bakary',\n  'balazs',\n  'bandar',\n  'bandile',\n  'banele',\n  'barney',\n  'barrett',\n  'barry',\n  'bart',\n  'ben',\n  'benito',\n  'benjamin',\n  'bennie',\n  'benny',\n  'berat',\n  'bernard',\n  'bernardo',\n  'bernie',\n  'bert',\n  'bertram',\n  'beshoi',\n  'bibek',\n  'bilal',\n  'billie',\n  'billy',\n  'bishal',\n  'blaine',\n  'blake',\n  'bobby',\n  'boris',\n  'boyd',\n  'brad',\n  'bradford',\n  'bradley',\n  'brady',\n  'branden',\n  'brandon',\n  'brendan',\n  'brendon',\n  'brent',\n  'brenton',\n  'bret',\n  'brett',\n  'brian',\n  'brice',\n  'bruce',\n  'bruno',\n  'bryan',\n  'bryce',\n  'bryon',\n  'buddy',\n  'burt',\n  'burton',\n  'byron',\n  'caleb',\n  'calvin',\n  'cameron',\n  'carey',\n  'carl',\n  'carlos',\n  'carlton',\n  'carroll',\n  'cary',\n  'cecil',\n  'cedric',\n  'cesar',\n  'chad',\n  'charbel',\n  'charles',\n  'charley',\n  'chas',\n  'chester',\n  'chris',\n  'christopher',\n  'ciaran',\n  'clarence',\n  'claude',\n  'clay',\n  'clayton',\n  'clement',\n  'cletus',\n  'clifford',\n  'clifton',\n  'clint',\n  'clyde',\n  'cody',\n  'colby',\n  'cole',\n  'colin',\n  'collin',\n  'colton',\n  'conor',\n  'conrad',\n  'corey',\n  'cornelius',\n  'cory',\n  'craig',\n  'cristobal',\n  'curt',\n  'curtis',\n  'cyril',\n  'cyrus',\n  'daan',\n  'dale',\n  'damian',\n  'damien',\n  'damion',\n  'damon',\n  'dan',\n  // 'dane',\n  'daniel',\n  'danny',\n  'daren',\n  'darin',\n  'dario',\n  'darius',\n  'darnell',\n  'darrel',\n  'darrell',\n  'darren',\n  'darrin',\n  'darryl',\n  'daryl',\n  'dave',\n  'davi',\n  'david',\n  'deandre',\n  'dejan',\n  'delbert',\n  'demetrius',\n  'denis',\n  'dennis',\n  'denny',\n  'deon',\n  'derek',\n  'derrick',\n  'deshawn',\n  'desmond',\n  'deven',\n  'devin',\n  'dewayne',\n  'dewey',\n  'dexter',\n  'diarmuid',\n  'dillon',\n  'dion',\n  'dirk',\n  'domingo',\n  'dominic',\n  'dominick',\n  'dominik',\n  'dominykas',\n  'don',\n  'donald',\n  'donnell',\n  'donnie',\n  'donny',\n  'donovan',\n  'dorian',\n  'doug',\n  'douglas',\n  'dovydas',\n  'doyle',\n  'dragan',\n  // 'drew',\n  'duane',\n  'dudley',\n  'duncan',\n  'dustin',\n  'dwayne',\n  'dwight',\n  'dylan',\n  'dyllan',\n  'dmitry',\n  'ebenezer',\n  'ed',\n  'eddie',\n  'edgar',\n  'edmond',\n  'edmund',\n  'edoardo',\n  'eduardo',\n  'edward',\n  'edwardo',\n  'edwin',\n  'efrain',\n  'efren',\n  'eitan',\n  'elbert',\n  'eldon',\n  'eli',\n  'elias',\n  'elijah',\n  'elisha',\n  'elliot',\n  'elliott',\n  'ellis',\n  'elmer',\n  'elton',\n  'elvin',\n  'elvis',\n  'elwood',\n  'emanuel',\n  'emerson',\n  'emery',\n  'emil',\n  'emilio',\n  'emilis',\n  'emirhan',\n  'emmanuel',\n  'emmett',\n  'enoch',\n  'enrique',\n  'enzo',\n  'eoin',\n  'ergi',\n  'eric',\n  'erick',\n  'erik',\n  'ernest',\n  'ernesto',\n  'ernie',\n  'errol',\n  'ervin',\n  'erwin',\n  'esteban',\n  'ethan',\n  'eugene',\n  'evan',\n  'evens',\n  'everett',\n  'eymen',\n  'ezra',\n  'fabian',\n  'fadi',\n  'fahd',\n  'federico',\n  'felipe',\n  'felix',\n  'feng',\n  'fernando',\n  'fidel',\n  'filip',\n  'fionn',\n  'fletcher',\n  'floyd',\n  'forrest',\n  'francesco',\n  'francis',\n  'francisco',\n  'franciszek',\n  'frankie',\n  'franklin',\n  'franklyn',\n  'fred',\n  'freddie',\n  'freddy',\n  'frederick',\n  'frederic',\n  'fredrick',\n  'fritz',\n  'gabreal',\n  'gabriel',\n  'gabrielius',\n  'galen',\n  'garland',\n  'garrett',\n  'garry',\n  'garth',\n  'gary',\n  'gavin',\n  'geoffrey',\n  'george',\n  'gerald',\n  'gerard',\n  'gerardo',\n  'gert',\n  'gerry',\n  'gilbert',\n  'gilberto',\n  'gino',\n  'giorgis',\n  'giovanni',\n  'glen',\n  'glenn',\n  'gonzalo',\n  'goran',\n  'gordon',\n  'grady',\n  'graham',\n  'greg',\n  'gregg',\n  'gregorio',\n  'gregory',\n  'grover',\n  'guilherme',\n  'guillermo',\n  'gus',\n  'gustavo',\n  'habib',\n  'hal',\n  'halim',\n  'hamza',\n  'hank',\n  'hans',\n  'hao',\n  'harlan',\n  'harley',\n  'harold',\n  'harry',\n  'haruhito',\n  'haruki',\n  'haruta',\n  'haruto',\n  'harvey',\n  'hasan',\n  'hassan',\n  'hayato',\n  'hayden',\n  'heath',\n  'hector',\n  'heitor',\n  'henri',\n  'henrique',\n  'henry',\n  'herbert',\n  'herman',\n  'homer',\n  'horace',\n  'hossein',\n  'howard',\n  'hubert',\n  'hugh',\n  'hugo',\n  'humberto',\n  'huseyin',\n  'huseyn',\n  'hussain',\n  'hussein',\n  'hydar',\n  'iain',\n  'ian',\n  'ibai',\n  'ibrahim',\n  'ichika',\n  'ignacio',\n  'igor',\n  'ike',\n  'iker',\n  'ilija',\n  'inuk',\n  'inunnguaq',\n  'ionut',\n  'ira',\n  'irvin',\n  'irving',\n  'irwin',\n  'isaac',\n  'isaiah',\n  'isaias',\n  'ishaan',\n  'isiah',\n  'ismael',\n  'ismail',\n  'issac',\n  'itai',\n  'itsuki',\n  'ivan',\n  // 'jack',\n  // 'jackson',\n  'jacob',\n  'jacques',\n  'jaden',\n  'jaka',\n  'jake',\n  'jakob',\n  'jakov',\n  'jakub',\n  'jamal',\n  'james',\n  'jameson',\n  'jamison',\n  'jared',\n  'jarod',\n  'jarrett',\n  'jarrod',\n  'jarvis',\n  'jason',\n  'jasper',\n  'javier',\n  'jayden',\n  'jayson',\n  'jed',\n  'jeff',\n  'jeffery',\n  'jeffrey',\n  'jeffry',\n  'jerald',\n  'jeremiah',\n  'jeremy',\n  'jermaine',\n  'jerome',\n  'jeronimo',\n  'jerry',\n  'jesus',\n  'jian',\n  'jim',\n  'jimmie',\n  'jimmy',\n  'jimi',\n  'joao',\n  'joaquin',\n  'joe',\n  'joel',\n  'joesph',\n  'joey',\n  'john',\n  'johnathan',\n  'johnathon',\n  'johnie',\n  'johnnie',\n  'johnny',\n  'jokubas',\n  'jon',\n  'jonah',\n  'jonas',\n  'jonathan',\n  'jonathon',\n  'jonny',\n  'jordi',\n  'jordon',\n  'jorge',\n  'jose',\n  'joseph',\n  'josh',\n  'joshua',\n  'josiah',\n  'josue',\n  'juan',\n  'julen',\n  'julian',\n  'julien',\n  'julio',\n  'julius',\n  'justin',\n  'kacper',\n  'kajus',\n  'kamal',\n  'kanata',\n  'karim',\n  'karl',\n  'kaspar',\n  'kathem',\n  'kauri',\n  'keenan',\n  'keir',\n  'keith',\n  'ken',\n  'kendrick',\n  'kenneth',\n  'kenny',\n  'kenton',\n  'kermit',\n  'keven',\n  'kevin',\n  'khaled',\n  'kieran',\n  'kip',\n  'kirk',\n  'kirollos',\n  'kristian',\n  'kristopher',\n  'kurt',\n  'kurtis',\n  'kyle',\n  'lamar',\n  'lamont',\n  'landon',\n  'larry',\n  'lars',\n  'laurence',\n  'lawrence',\n  'leandro',\n  'leevi',\n  'leland',\n  'len',\n  'lenny',\n  'leon',\n  'leonard',\n  'leonardo',\n  'leonel',\n  'lester',\n  'lethabo',\n  'levente',\n  'levi',\n  'liam',\n  'lionel',\n  'lior',\n  'lloyd',\n  'logan',\n  'lonnie',\n  'loren',\n  'lorenzo',\n  'lou',\n  'louie',\n  'louis',\n  'lovro',\n  'lowell',\n  'lucas',\n  'luciano',\n  'luigi',\n  'luis',\n  'luiz',\n  'luka',\n  'lukas',\n  'luke',\n  'luther',\n  'luuk',\n  'lyle',\n  'lyndon',\n  'maayan',\n  'macaulay',\n  // 'mack',\n  'mahamadou',\n  'mahammad',\n  'mahdi',\n  'mahesh',\n  'mahmoud',\n  'majd',\n  'maksim',\n  'malachai',\n  'malachy',\n  'malcolm',\n  'malik',\n  'mamadou',\n  'manish',\n  'manuel',\n  'marc',\n  'marcel',\n  'marcell',\n  'marco',\n  'marcos',\n  'marcus',\n  'mario',\n  // 'mark',\n  'markel',\n  'marko',\n  'markos',\n  'markus',\n  'marlin',\n  'marlon',\n  'marquis',\n  'marshall',\n  'marti',\n  'martim',\n  'martin',\n  'marty',\n  'marvin',\n  'matej',\n  'mateo',\n  'matheus',\n  'mathew',\n  'mathis',\n  'matias',\n  'matt',\n  'matteo',\n  'matthew',\n  'mattia',\n  'matus',\n  'matyas',\n  'maurice',\n  'mauricio',\n  'maximilian',\n  'maximiliano',\n  'maxwell',\n  'mehdi',\n  'mehmet',\n  'melvin',\n  'merle',\n  'merrill',\n  'mervin',\n  'micah',\n  'michael',\n  'michal',\n  'micheal',\n  'michel',\n  'micky',\n  'miguel',\n  'mihai',\n  'mikaere',\n  'mike',\n  'mikel',\n  'mikolaj',\n  'milhouse',\n  'milo',\n  'milos',\n  'milton',\n  'minato',\n  'minik',\n  'mitch',\n  'mitchell',\n  'modibo',\n  'moe',\n  'mohamad',\n  'mohamed',\n  'mohammad',\n  'mohammed',\n  'moises',\n  'monte',\n  'monty',\n  'moses',\n  'moshe',\n  'moussa',\n  'muhamed',\n  'muhammad',\n  'muhammed',\n  'murad',\n  'mustafa',\n  'mustapha',\n  'myles',\n  'myron',\n  'nahom',\n  'nate',\n  'nathan',\n  'nathanael',\n  'nathaniel',\n  'nathy',\n  'neal',\n  'ned',\n  'neil',\n  'nelson',\n  'neville',\n  'nicholas',\n  'nickolas',\n  'nicolas',\n  'nigel',\n  'niilo',\n  'nik',\n  'nikau',\n  'nikhil',\n  'nikola',\n  'niles',\n  'noah',\n  'noam',\n  'noel',\n  'nojus',\n  'nolan',\n  'nomaan',\n  'norbert',\n  'norman',\n  'nuka',\n  'octavio',\n  'oier',\n  'oliver',\n  'omar',\n  'omer',\n  'ondrej',\n  'ori',\n  'orville',\n  'osama',\n  'oscar',\n  'oskar',\n  'osman',\n  'osvaldo',\n  'otis',\n  'otto',\n  'oumar',\n  'owen',\n  'pablo',\n  'padraig',\n  'patrick',\n  'paul',\n  'paulo',\n  'paulos',\n  'pedro',\n  'percy',\n  'petar',\n  'pete',\n  'peter',\n  'petros',\n  'phil',\n  'philip',\n  'phillip',\n  'pierre',\n  'prakash',\n  'prem',\n  'preston',\n  'quentin',\n  'quincy',\n  'quinton',\n  'rachid',\n  'rafael',\n  'ralf',\n  'ralph',\n  'ramiro',\n  'ramon',\n  'randal',\n  'randall',\n  'randolph',\n  'raphael',\n  'rashad',\n  'rasmus',\n  'raul',\n  'rawiri',\n  'rayan',\n  'raymond',\n  'reggie',\n  'reginald',\n  'regis',\n  'reid',\n  'reuben',\n  'reyansh',\n  'reynaldo',\n  'reza',\n  'rhett',\n  'ricardo',\n  'riccardo',\n  'richard',\n  'richie',\n  'rick',\n  'rickey',\n  'rickie',\n  'ricky',\n  'rico',\n  'riley',\n  'roan',\n  'robbie',\n  'robby',\n  'robert',\n  'roberto',\n  'rocco',\n  'roderick',\n  'rodger',\n  'rodney',\n  'rodolfo',\n  'rodrigo',\n  'roel',\n  'rogelio',\n  'roger',\n  'rohan',\n  'roland',\n  'rolando',\n  'roman',\n  'romeo',\n  'ron',\n  'ronald',\n  'ronnie',\n  'ronny',\n  'rory',\n  'roscoe',\n  'ross',\n  'roy',\n  'royce',\n  'ruben',\n  'rubin',\n  'rudolph',\n  'rudy',\n  'rufus',\n  'rupert',\n  'russ',\n  'russel',\n  'russell',\n  'ryan',\n  'ryou',\n  'salik',\n  'salvatore',\n  'sam',\n  'samkelo',\n  'sammie',\n  'sammy',\n  'samuel',\n  'santino',\n  'saqib',\n  'saul',\n  'scot',\n  'scott',\n  'scottie',\n  'scotty',\n  'seamus',\n  'sean',\n  'sebastian',\n  'sekou',\n  'selim',\n  'sergei',\n  'sergio',\n  'seth',\n  'seymour',\n  'shahid',\n  'shane',\n  'shaquille',\n  'shaun',\n  'shawn',\n  'shayne',\n  'sheldon',\n  'shelton',\n  'sherman',\n  'sid',\n  'siddhartha',\n  'sidney',\n  'sigmund',\n  'silas',\n  'silvio',\n  'simon',\n  'siyabonga',\n  'solomon',\n  'souleymane',\n  'souta',\n  'spencer',\n  'stan',\n  'stanislaw',\n  'stanley',\n  'stefan',\n  'stephan',\n  'stephen',\n  'steve',\n  'steven',\n  // 'stevenson',\n  'stevie',\n  'stewart',\n  'stuart',\n  'suraj',\n  'sylvester',\n  'szymon',\n  'tadgh',\n  'taha',\n  'taichi',\n  'taika',\n  'tanner',\n  'tareq',\n  'tatsuki',\n  'ted',\n  'teddy',\n  'terence',\n  'terrance',\n  'terrell',\n  'terrence',\n  'terry',\n  'thad',\n  'thaddeus',\n  'theo',\n  'theodore',\n  'thiago',\n  'thom',\n  'thomas',\n  'tim',\n  'timmy',\n  'timothy',\n  'titus',\n  'tobias',\n  'toby',\n  'tod',\n  'todd',\n  'tom',\n  'tomas',\n  'tommaso',\n  'tommie',\n  'tommy',\n  'tomoharu',\n  'tony',\n  'travis',\n  'trent',\n  'trenton',\n  'trevor',\n  'trey',\n  'tristan',\n  'troy',\n  'truman',\n  'tunar',\n  'turki',\n  'ty',\n  'tyler',\n  'tyrone',\n  'tyson',\n  'ughur',\n  'ulysses',\n  'unax',\n  'usman',\n  'valentin',\n  'valentine',\n  'vance',\n  'vicente',\n  'victor',\n  'vihaan',\n  'viktor',\n  'vince',\n  'vincent',\n  'virgil',\n  'vivaan',\n  'vladimir',\n  'vojtech',\n  'wallace',\n  'wally',\n  'walt',\n  'walter',\n  'waylon',\n  'wayne',\n  'wei',\n  'wendell',\n  'wes',\n  'wesley',\n  'weston',\n  'wilbert',\n  'wilbur',\n  'wiley',\n  'wilfred',\n  'wilfredo',\n  'willard',\n  'william',\n  'willie',\n  'willis',\n  'winston',\n  'wojciech',\n  'wolfgang',\n  'woodrow',\n  'wout',\n  'wouter',\n  'wyatt',\n  'xavier',\n  'xhoel',\n  'yahli',\n  'yanis',\n  'yassin',\n  'yassine',\n  'yonas',\n  'yonatan',\n  'yonathan',\n  'yong',\n  'yosef',\n  'yousouf',\n  'youssef',\n  'yusif',\n  'yusuf',\n  'yuuma',\n  'yuval',\n  'zachariah',\n  'zachary',\n  'zachery',\n  'zack',\n  'zackary',\n  'zahid',\n  'zakaria',\n  'zan',\n  'zane',\n  'zoran',\n\n  'adolph',\n  'adriano',\n  'aidan',\n  'alain',\n  'alastair',\n  'albrecht',\n  'aleksandr',\n  'aleksei',\n  'alexandre',\n  'alexandros',\n  'alf',\n  'alistair',\n  'alphonse',\n  'amar',\n  'anatoli',\n  'anatoliy',\n  'anatoly',\n  'anders',\n  'andrej',\n  'andrzej',\n  'anwar',\n  'archibald',\n  'armin',\n  'arnaud',\n  'arno',\n  'artem',\n  'artie',\n  'artur',\n  'augusto',\n  'bartholomew',\n  'benson',\n  'bernhard',\n  'bertrand',\n  'bjorn',\n  'bogdan',\n  'branislav',\n  'buster',\n  'cal',\n  'camillo',\n  'camilo',\n  'carlo',\n  'chet',\n  'christoph',\n  'christophe',\n  'christos',\n  'claudio',\n  'claus',\n  'clemens',\n  'clive',\n  'connor',\n  'constantin',\n  'cornelis',\n  'cristiano',\n  'danilo',\n  'deepak',\n  'dieter',\n  'dietmar',\n  'dietrich',\n  'dimitri',\n  'dimitris',\n  'dinesh',\n  'dmitri',\n  'dmitry',\n  'ebenezer',\n  'eduard',\n  'eliot',\n  'emiliano',\n  'enrico',\n  'erich',\n  'ernst',\n  'eugen',\n  'evgeny',\n  'fabien',\n  'fabio',\n  'fabrice',\n  'fabrizio',\n  'ferdinand',\n  'ferdinando',\n  'fergus',\n  'florian',\n  'fraser',\n  'frederic',\n  'frederik',\n  'fredrik',\n  'friedrich',\n  'frits',\n  'fyodor',\n  'gabe',\n  'gareth',\n  'geoff',\n  'georg',\n  'georges',\n  'georgi',\n  'georgios',\n  'georgy',\n  'gerhard',\n  'gerrit',\n  'giacomo',\n  'giles',\n  'gilles',\n  'giorgi',\n  'giorgio',\n  'giuseppe',\n  'godfrey',\n  'gord',\n  'gottfried',\n  'gregor',\n  'guido',\n  'guillaume',\n  'gunnar',\n  'gunter',\n  'gunther',\n  'gustaf',\n  'gustav',\n  'gustave',\n  'gyorgy',\n  'hamid',\n  'harri',\n  'heinrich',\n  'hendrik',\n  'henrik',\n  'henryk',\n  'hermann',\n  'horacio',\n  'horatio',\n  'howie',\n  'humphrey',\n  'jaroslav',\n  'jens',\n  'johan',\n  'johann',\n  'johannes',\n  'josef',\n  'jozef',\n  'kamil',\n  'khalid',\n  'kingsley',\n  'kiril',\n  'kirill',\n  'klaus',\n  'konrad',\n  'krzysztof',\n  'kyls',\n  'lambert',\n  'laszlo',\n  'laurent',\n  'lennart',\n  'leonid',\n  'leopold',\n  'linus',\n  'luc',\n  'lucien',\n  'ludovic',\n  'ludvig',\n  'ludwig',\n  'maciej',\n  'magnus',\n  'manfred',\n  'manny',\n  'marcello',\n  'marcelo',\n  'marcin',\n  'mariano',\n  'marios',\n  'marius',\n  'masoud',\n  'mathias',\n  'mathieu',\n  'matthias',\n  'mattias',\n  'mervyn',\n  'mick',\n  'mickey',\n  'mikhail',\n  'moritz',\n  'nate',\n  'ned',\n  'newton',\n  'nguyen',\n  'niels',\n  'niklas',\n  'nikolai',\n  'nikolay',\n  'nils',\n  'norm',\n  'olaf',\n  'olav',\n  'oleksandr',\n  'olivier',\n  'oswald',\n  'paolo',\n  'pascal',\n  'patrik',\n  'paulie',\n  'pavel',\n  'pavlo',\n  'petr',\n  'petro',\n  'philipp',\n  'philippe',\n  'pieter',\n  'pietro',\n  'piotr',\n  'pravit',\n  'pyotr',\n  'rahul',\n  'rainer',\n  'rajesh',\n  'raoul',\n  'rashid',\n  'recep',\n  'reece',\n  'rolf',\n  'ronan',\n  'rosario',\n  'rudolf',\n  'saeed',\n  'sal',\n  'sami',\n  'samir',\n  'sandeep',\n  'sandro',\n  'sanjay',\n  'satoshi',\n  'sebastien',\n  'sepp',\n  'serge',\n  'sergei',\n  'sergey',\n  'shlomo',\n  'sigmund',\n  'silvio',\n  'slobodan',\n  'soren',\n  'stanislav',\n  'stefano',\n  'stefanos',\n  'stu',\n  'suresh',\n  'sven',\n  'svend',\n  'syed',\n  'theodor',\n  'tomasz',\n  'ulrich',\n  'ulrik',\n  'umberto',\n  'uri',\n  'val',\n  'vasily',\n  'vern',\n  'vernon',\n  'vic',\n  'vincenzo',\n  'vivek',\n  'vlad',\n  'vladislav',\n  'volodymyr',\n  'walt',\n  'werner',\n  'wilfrid',\n  'wilfried',\n  'wilhelm',\n  'willy',\n  'winfried',\n  'winslow',\n  'yann',\n  'yannick',\n  'yaroslav',\n  'yevgeni',\n  'yevgeny',\n  'yuen',\n  'yuri',\n  'yuriy',\n  'yury',\n  'zac',\n  'zach',\n\n  // 'chase',\n]\n"
  },
  {
    "path": "data/lexicon/people/people.js",
    "content": "export default [\n  //famous people with names that are hard to recognize independendtly\n  //male\n  'hitler',\n  'ronaldo',\n  'ashton kutcher',\n  'barack obama',\n  'cardinal wolsey',\n  'carson palmer',\n  'denzel washington',\n  'dick wolf',\n  'emeril lagasse',\n  'hulk hogan',\n  'kanye west',\n  'kiefer sutherland',\n  'kobe bryant',\n  'lebron james',\n  'messiaen',\n  'mitt romney',\n  'mubarek',\n  'ray romano',\n  'rod stewart',\n  'ronaldinho',\n  'rush limbaugh',\n  'saddam hussain',\n  'slobodan milosevic',\n  'tiger woods',\n  'valentino rossi',\n  'van gogh',\n  'niles crane',\n  'run dmc',\n\n  // one-named artists/athletes\n  'dante',\n  'keats',\n  'shakespeare',\n  'poe',\n  'rumi',\n  'chaucer',\n  'bronte',\n  'voltaire',\n  'plato',\n  'socrates',\n  'aristotle',\n  'confucius',\n  'beyonce',\n  'liberace',\n  'beck',\n  'nas',\n  'nostradamus',\n  'xzibit',\n  'moby',\n  'coolio',\n  'banksy',\n  'sinbad',\n  'kesha',\n  'nelly',\n  'monet',\n  'moliere',\n  'rembrandt',\n  'warhol',\n  'degas',\n  'rothko',\n  'morrissey',\n  'bono',\n  'chyna',\n  'puff daddy',\n  'drake',\n  'enya',\n  'gotye',\n  'macklemore',\n  'ne yo',\n  'pele',\n  'raffi',\n  'rihanna',\n  'rivaldo',\n  'eminem',\n  'rupaul',\n  'rza',\n  'santigold',\n  'timbaland',\n  'yanni',\n  // 'will.i.am',\n\n  //tricky female names\n  'halle berry',\n  'jk rowling',\n  'oprah winfrey',\n  'paris hilton',\n  'reese witherspoon',\n  'scarlett johansson',\n  'theresa may',\n  'tyra banks',\n  'wednesday adams',\n  'miranda july',\n  'lady gaga',\n\n  //sometimes firstname, sometimes lastname\n  'brock',\n  'carson',\n  'clinton',\n  'dalton',\n  'harrison',\n  'tatum',\n  'effie',\n  'ezekiel',\n  'gaston',\n  'inez',\n  'jefferson',\n  'lee',\n  'nettie',\n  'ora',\n  'palmer',\n  'piper',\n  'humphrey',\n  'raisa',\n  // 'sung',\n  'taylor',\n  'reilly',\n  'warren',\n  'woode',\n\n  'al capone',\n  'al pacino',\n  'archimedes',\n  'avril lavigne',\n  'ayn rand',\n  'benazir bhutto',\n  'bill gates',\n  'bing crosby',\n  'captain beefheart',\n  'chopin',\n  'christian bale',\n  'conan',\n  'cthulhu',\n  'dalai lama',\n  'darth vader',\n  'demi lovato',\n  'diego maradona',\n  'doctor who',\n  'emile zatopek',\n  'florence nightingale',\n  'frederic chopin',\n  'haile selassie',\n  'harrison ford',\n  'he man',\n  'henry ford',\n  'humphrey bogart',\n  'iron man',\n  'jrr tolkien',\n  'jfk',\n  'jack the ripper',\n  'jawaharlal nehru',\n  'jay z',\n  'kid cudi',\n  'lech walesa',\n  'mata hari',\n  'maya angelou',\n  'merlin',\n  'napoleon',\n  'pocahontas',\n  'rachmaninoff',\n  'ringo starr',\n  'robin hood',\n  'santa claus',\n  'sherlock holmes',\n  'shia labeouf',\n  'snoop dogg',\n  'snow white',\n  'spider man',\n  'spiderman',\n  'superman',\n  'thor',\n  'tupac shakur',\n  'usain bolt',\n  'vin diesel',\n  'virginia woolf',\n  'walt disney',\n  'will ferrell',\n  'wiz khalifa',\n  'yoko onen',\n  'yoko ono',\n\n  // first+last names\n  'bertil',\n  'camillo',\n  'eustace',\n  'hedwig',\n  'hilde',\n  'ilias',\n  'oleg',\n  'pilar',\n  'reilley',\n  'reinhold',\n  'siegfried',\n  'swami',\n  'takashi',\n  'tatyana',\n  'tripp',\n  'tully',\n  'wolfram',\n  'yuji',\n  'yvan',\n  'yves',\n  'frans',\n  'franz',\n  'giannis',\n  'ferguson',\n  'rashid',\n  'newman',\n  'goodwin',\n  'bhatt',\n  'lu',\n  'markov',\n  'husain',\n  'hammond',\n  'hamid',\n  'perry',\n  'mason',\n  // '',\n]\n"
  },
  {
    "path": "data/lexicon/places/cities.js",
    "content": "export default [\n  'aalborg',\n  'aarhus',\n  'abidjan',\n  'abu dhabi',\n  'ahmedabad',\n  'almaty',\n  'amman',\n  'amsterdam',\n  'ankara',\n  'antwerp',\n  'aqaba',\n  'ashdod',\n  'ashgabat',\n  'athens',\n  'auckland',\n  'baku',\n  'bangalore',\n  'bangkok',\n  'banja luka',\n  'barcelona',\n  'barranquilla',\n  'basel',\n  'beijing',\n  'beirut',\n  'belgrade',\n  'bergen',\n  'berlin',\n  'bern',\n  'birmingham',\n  'bogota',\n  'brasilia',\n  'bratislava',\n  'brisbane',\n  'brussels',\n  'bucharest',\n  'budapest',\n  'buenos aires',\n  'burgas',\n  'bursa',\n  'busan',\n  'cairo',\n  'calgary',\n  'cape town',\n  'caracas',\n  'cebu',\n  'chennai',\n  'chiang mai',\n  'chicago',\n  'chittagong',\n  'christchurch',\n  'cologne',\n  'colombo',\n  'constanta',\n  'copenhagen',\n  'cork',\n  'craiova',\n  'curitiba',\n  'daegu',\n  'daejeon',\n  'dakar',\n  'damascus',\n  'daugavpils',\n  'dhaka',\n  'doha',\n  'dublin',\n  'durban',\n  'dushanbe',\n  'edmonton',\n  'eindhoven',\n  'fes',\n  'frankfurt',\n  'galway',\n  'gdansk',\n  'geneva',\n  'genoa',\n  'ghent',\n  'giza',\n  'gothenburg',\n  'graz',\n  'guadalajara',\n  'guangzhou',\n  'haifa',\n  'hamburg',\n  // 'hamilton',\n  'hanoi',\n  'havana',\n  'helsinki',\n  'heraklion',\n  'ho chi minh',\n  'homs',\n  // 'houston',\n  'incheon',\n  'istanbul',\n  'jakarta',\n  'kabul',\n  'kampala',\n  'kandy',\n  'kaohsiung',\n  'karachi',\n  'karaj',\n  'kaunas',\n  'kharkiv',\n  'kiev',\n  'kingston',\n  'klaipeda',\n  // 'kobe',\n  'kopavogur',\n  'kosice',\n  'krakow',\n  'kuala lumpur',\n  'la plata',\n  'lausanne',\n  'liege',\n  'lima',\n  'limassol',\n  'linz',\n  'lisbon',\n  'liverpool',\n  'london',\n  'los angeles',\n  'lviv',\n  'lyon',\n  'madrid',\n  'malmo',\n  'manchester',\n  'mandalay',\n  'manila',\n  'maribor',\n  'marseille',\n  'medellin',\n  'melbourne',\n  'milan',\n  'minsk',\n  'miskolc',\n  'montevideo',\n  'montreal',\n  'moscow',\n  'mumbai',\n  'munich',\n  'nagoya',\n  'nantes',\n  'naples',\n  'navan',\n  'new delhi',\n  'new taipei',\n  'new york',\n  'odessa',\n  'osaka',\n  'oslo',\n  'ottawa',\n  'palermo',\n  'paris',\n  'patras',\n  'perth',\n  'petah tikva',\n  'philadelphia',\n  'phnom penh',\n  'phoenix',\n  'pilsen',\n  'piraeus',\n  'port elizabeth',\n  'porto',\n  'poznan',\n  'prague',\n  'pretoria',\n  'puebla',\n  'pyongyang',\n  'quito',\n  'reykjavik',\n  'riga',\n  'rio de janeiro',\n  'rome',\n  'rosario',\n  'rotterdam',\n  'saint petersburg',\n  // 'salvador',\n  'salzburg',\n  'san jose',\n  'san salvador',\n  // 'santiago',\n  'sapporo',\n  'seoul',\n  'seville',\n  'shanghai',\n  'shenzhen',\n  'skopje',\n  'stockholm',\n  'stuttgart',\n  // 'sydney',\n  'taichung',\n  'tainan',\n  'taipei',\n  'tallinn',\n  'tampere',\n  'tangier',\n  'tartu',\n  'tbilisi',\n  'tegucigalpa',\n  'tehran',\n  'tel aviv',\n  'the hague',\n  'thessaloniki',\n  'tianjin',\n  'tilburg',\n  'timisoara',\n  'tirana',\n  'tokyo',\n  'toronto',\n  'toulouse',\n  'trondheim',\n  'tunis',\n  'turin',\n  'turku',\n  'ulan bator',\n  'utrecht',\n  'valencia',\n  'vancouver',\n  'vaughn',\n  'varna',\n  'vernon',\n  'vienna',\n  'vilnius',\n  'warsaw',\n  'wellington',\n  'wexford',\n  'wicklow',\n  'winnipeg',\n  'winterthur',\n  'wroclaw',\n  'yangon',\n  'yekaterinburg',\n  'yerevan',\n  'yokohama',\n  'zagreb',\n  'zurich',\n\n  'delhi',\n  'sao paulo',\n  'wuhan',\n  'lagos',\n  'nyc',\n  'dongguan',\n  'kinshasa',\n  'chongqing',\n  'chengdu',\n  'baghdad',\n  'nanjing',\n  'nanchong',\n  'xian',\n  'lahore',\n  'shenyang',\n  'hangzhou',\n  'rio',\n  'harbin',\n  'taian',\n  'suzhou',\n  'shantou',\n  'bengaluru',\n  'kolkata',\n  'jinan',\n  'zhengzhou',\n  'riyadh',\n  'changchun',\n  'dalian',\n  'chattogram',\n  'kunming',\n  'qingdao',\n  'kano',\n  'foshan',\n  'puyang',\n  'ibadan',\n  'wuxi',\n  'xiamen',\n  'tianshui',\n  'ningbo',\n  'shiyan',\n  'taiyuan',\n  'tangshan',\n  'hefei',\n  'zibo',\n  'zhongshan',\n  'changsha',\n  'urumqi',\n  'dubai',\n  'surat',\n  'jeddah',\n  'shijiazhuang',\n  'kanpur',\n  'kyiv',\n  'luanda',\n  'quezon',\n  'addis ababa',\n  'nairobi',\n  'jaipur',\n  'dar es salaam',\n  'lanzhou',\n  'yunfu',\n  'basrah',\n  'mogadishu',\n  'faisalabad',\n  'izmir',\n  'izmir',\n  'lucknow',\n  'fortaleza',\n  'surabaya',\n  'belo horizonte',\n  'nanchang',\n  'mashhad',\n  'nagpur',\n  'maracaibo',\n  'santo domingo',\n  'al mawsil al jadidah',\n  'johannesburg',\n  'kowloon',\n  'al basrah al qadimah',\n  'dadonghai',\n  'medellin',\n  'tashkent',\n  'algiers',\n  'khartoum',\n  'accra',\n  'guayaquil',\n  'ordos',\n  'sanaa',\n  'jilin',\n  'camayenne',\n  'indore',\n  'iztapalapa',\n  'conakry',\n  'bayan nur',\n  'maracay',\n  'medan',\n  'rawalpindi',\n  'mosul',\n  'bandung',\n  'soweto',\n  'kallakurichi',\n  'rabat',\n  'aleppo',\n  'kunshan',\n  'patna',\n  'bhopal',\n  'manaus',\n  'xinyang',\n  'kaduna',\n  'isfahan',\n  'ludhiana',\n  'san diego',\n\n  'port au prince',\n  'brazzaville',\n  'baotou',\n  'tijuana',\n  'dallas',\n  'medina',\n  'tripoli',\n  'volgograd',\n  'omsk',\n  'mecca',\n  'makassar',\n  'asuncion',\n  'recife',\n  'san antonio',\n  'changzhou',\n  'mendoza',\n  'marrakesh',\n  'san francisco',\n  'la paz',\n  'jerusalem',\n  'fort worth',\n  'indianapolis',\n  'sarajevo',\n  'muscat',\n  'salem',\n  'sheffield',\n  'seattle',\n  'denver',\n  'el paso',\n  'detroit',\n  'islamabad',\n  'kirkuk',\n  'mississauga',\n  'boston',\n  'nantong',\n  'guadalupe',\n  'bristol',\n  'milwaukee',\n  'kyoto',\n  'cancun',\n  'portland',\n  'cordoba',\n  'tabriz',\n  'novosibirsk',\n  'benghazi',\n  'memphis',\n  'oran',\n  'glasgow',\n  'gold coast',\n  'zhangzhou',\n  'libreville',\n  'dortmund',\n  'vladivostok',\n  'irkutsk',\n  'duesseldorf',\n  'albuquerque',\n  'port said',\n  'nashville',\n  'macau',\n  'fresno',\n  'hannover',\n  'leicester',\n  'leipzig',\n  'sacramento',\n  'santa fe',\n  'dresden',\n  'tomsk',\n  'long beach',\n  'staten island',\n  'kawaguchi',\n  'cardiff',\n  'san juan',\n  'edinburgh',\n  'atlanta',\n  'miami',\n  'santa marta',\n  'oakland',\n  'nagasaki',\n  'gaza',\n  'newcastle',\n  'zanzibar',\n  'tulsa',\n  'kandahar',\n  'wichita',\n  'new orleans',\n  'arlington',\n  'cleveland',\n  'fukuyama',\n  'bakersfield',\n  'honolulu',\n  'canberra',\n  'halifax',\n  'nagano',\n  'anaheim',\n  'raleigh',\n  'santa ana',\n  'islington',\n  'anapolis',\n  'saint louis',\n  'butuan',\n  'pittsburgh',\n  'gujrat',\n  'anchorage',\n  'windsor',\n  'strasbourg',\n  'belfast',\n  'san pedro',\n  'windhoek',\n  'chengzhong',\n  'wuzhou',\n  'peking',\n\n  // india state-capitals\n  'agartala',\n  'aizawl',\n  'amaravati',\n  'bhubaneshwar',\n  'dehradun',\n  'dispur',\n  'gandhinagar',\n  'gangtok',\n  'hyderabad',\n  'imphal',\n  'itanagar',\n  'kohima',\n  'panaji',\n  'raipur',\n  'ranchi',\n  'shillong',\n  'shimla',\n\n  // relevant european cities\n  'venice',\n  'bari',\n  'catania',\n  'verona',\n  'messina',\n  'padua',\n  'prato',\n  'trieste',\n  'cagliari',\n  'ancona',\n  'rennes',\n  'reims',\n  'toulon',\n  'montpellier',\n  'le mans',\n  'dunkirk',\n  'versailles',\n\n  'salt lake city',\n]\n"
  },
  {
    "path": "data/lexicon/places/countries.js",
    "content": "export default [\n  'afghanistan',\n  'albania',\n  'algeria',\n  'america',\n  'andorra',\n  'angola',\n  'anguilla',\n  'antarctica',\n  'antigua and barbuda',\n  'argentina',\n  'armenia',\n  'aruba',\n  'australia',\n  'austria',\n  'azerbaijan',\n  'bahamas',\n  'bahrain',\n  'bangladesh',\n  'barbados',\n  'belarus',\n  'belgium',\n  'belize',\n  'benin',\n  'bermuda',\n  'bhutan',\n  'bolivia',\n  'bonaire',\n  'bosnia and herzegovina',\n  'botswana',\n  'bouvet island',\n  'brazil',\n  'british virgin islands',\n  'brunei',\n  'bulgaria',\n  'burkina faso',\n  'burma',\n  'burundi',\n  'cambodia',\n  'cameroon',\n  'canada',\n  'cape verde',\n  'cayman islands',\n  'central african republic',\n  'chile',\n  'china',\n  'christmas island',\n  'cocos islands',\n  'colombia',\n  'comoros',\n  'congo brazzaville',\n  'cook islands',\n  'costa rica',\n  'croatia',\n  'cuba',\n  'curacao',\n  'cyprus',\n  'czech republic',\n  'czechia',\n  'denmark',\n  'djibouti',\n  'dominica',\n  'dominican republic',\n  'dr congo',\n  'east timor',\n  'ecuador',\n  'egypt',\n  'el salvador',\n  'england',\n  'equatorial guinea',\n  'eritrea',\n  'estonia',\n  'ethiopia',\n  'falkland islands',\n  'faroe islands',\n  'fiji',\n  'finland',\n  'france',\n  'french guiana',\n  'french polynesia',\n  'gabon',\n  'gambia',\n  'georgia',\n  'germany',\n  'ghana',\n  'gibraltar',\n  'greece',\n  'greenland',\n  'grenada',\n  'guadeloupe',\n  'guam',\n  'guatemala',\n  'guernsey',\n  'guinea bissau',\n  'guinea',\n  'guyana',\n  'haiti',\n  'honduras',\n  'hong kong',\n  'hungary',\n  'iceland',\n  'india',\n  'indonesia',\n  'iran',\n  'iraq',\n  'ireland',\n  'isle of man',\n  'israel',\n  'italy',\n  'ivory coast',\n  'jamaica',\n  'japan',\n  'jersey',\n  'kazakhstan',\n  'keeling islands',\n  'kenya',\n  'kiribati',\n  'kosovo',\n  'kuwait',\n  'kyrgyzstan',\n  'laos',\n  'latvia',\n  'lebanon',\n  'lesotho',\n  'liberia',\n  'libya',\n  'liechtenstein',\n  'lithuania',\n  'luxembourg',\n  'macao',\n  'macedonia',\n  'madagascar',\n  'malawi',\n  'malaysia',\n  'maldives',\n  'mali',\n  'malta',\n  'marshall islands',\n  'martinique',\n  'mauritania',\n  'mauritius',\n  'mayotte',\n  'mexico',\n  'micronesia',\n  'moldova',\n  'monaco',\n  'mongolia',\n  'montenegro',\n  'montserrat',\n  'morocco',\n  'mozambique',\n  'myanmar',\n  'namibia',\n  'nauru',\n  'nepal',\n  'netherlands',\n  'new zealand',\n  'nicaragua',\n  'niger',\n  'nigeria',\n  'niue',\n  'norfolk island',\n  'north korea',\n  'northern mariana islands',\n  'norway',\n  'oman',\n  'pakistan',\n  'palau',\n  'palestine',\n  'panama',\n  'papua new guinea',\n  'paraguay',\n  'peru',\n  'philippines',\n  'pitcairn islands',\n  'poland',\n  'portugal',\n  'puerto rico',\n  'qatar',\n  'republic of ireland',\n  'romania',\n  'russia',\n  'rwanda',\n  'saint helena',\n  'saint lucia',\n  'saint martin',\n  'samoa',\n  'san marino',\n  'saudi arabia',\n  'scotland',\n  'senegal',\n  'serbia',\n  'seychelles',\n  'sierra leone',\n  'singapore',\n  'sint maarten',\n  'slovakia',\n  'slovenia',\n  'solomon islands',\n  'somalia',\n  'south africa',\n  'south korea',\n  'korea',\n  'south sudan',\n  'spain',\n  'sri lanka',\n  'sudan',\n  'suriname',\n  'swaziland',\n  'sweden',\n  'switzerland',\n  'syria',\n  'taiwan',\n  'tajikistan',\n  'tanzania',\n  'thailand',\n  'timor leste',\n  'togo',\n  'tokelau',\n  'tonga',\n  'trinidad and tobago',\n  'trinidad tobago',\n  'tunisia',\n  'turkey',\n  'turkmenistan',\n  'turks and caicos islands',\n  'tuvalu',\n  'uk',\n  'us virgin islands',\n  'uganda',\n  'ukraine',\n  'united arab emirates',\n  'united kingdom',\n  'united states of america',\n  'united states',\n  'uruguay',\n  'usa',\n  'ussr',\n  'uzbekistan',\n  'vanuatu',\n  'vatican city',\n  'venezuela',\n  'vietnam',\n  'wales',\n  'wallis and futuna',\n  'yemen',\n  'zambia',\n  'zimbabwe',\n  `cote de ivoire`,\n  // 'jordan', //... or a name?\n]\n"
  },
  {
    "path": "data/lexicon/places/places.js",
    "content": "export default [\n  //some of the busiest airports in the world from\n  //https://www.world-airport-codes.com/world-top-30-airports.html\n  'ams',\n  'atl',\n  'bcn',\n  'bkk',\n  'cdg',\n  'cgk',\n  'clt',\n  'den',\n  'dfw',\n  'dxb',\n  'fco',\n  'fra',\n  'hkg',\n  'hnd',\n  'iax',\n  'icn',\n  'ist',\n  'jfk',\n  'kul',\n  'las',\n  'lax',\n  'lgw',\n  'lhr',\n  'mco',\n  'muc',\n  'ord',\n  'pek',\n  'phl',\n  'phx',\n  'sfo',\n  'syd',\n  'yyz',\n\n  // bodies of water\n  'antarctic ocean',\n  'arctic ocean',\n  'atlantic ocean',\n  'everglades',\n  'great britain',\n  'great lakes',\n  'indian ocean',\n  'new england',\n  'pacific ocean',\n  'red sea',\n  'adriadic',\n\n  // rivers\n  'nile',\n  'ganges',\n  'mekong',\n  'thames',\n  'danube',\n  'yangtze',\n  'orinoco',\n  'seine',\n  'rio grande',\n  'godavari',\n\n  //continents\n  'africa',\n  'europe',\n  'americas',\n  'asia',\n\n  //some notable neighbourhoods (just #Place)\n  'midtown',\n  'downtown',\n  'uptown',\n  'the bronx',\n  'brooklyn',\n  'manhattan',\n  'greenwich',\n  'soho',\n  'harlem',\n  'chinatown',\n  'the hamptons',\n  'beverly hills',\n  'bel air',\n  'malibu',\n  'gay village',\n  'orange county',\n  'sunderland',\n\n  // places with their own timezones\n  'tahiti',\n  'chatham',\n  'pitcairn',\n  'azores',\n  'magadan',\n  'hovd',\n  'vostok',\n  'wake island',\n  'anadyr',\n  'ulaanbaatar',\n  'krasnoyarsk',\n  'indochina',\n  'yakutsk',\n  'chamorro',\n  'chuuk',\n  'kosrae',\n  'sakhalin',\n\n  // US national monuments\n  'alhambra',\n  'arc de triomphe',\n  'browns canyon',\n  'carrizo plain',\n  'cedar breaks',\n  'cedar falls',\n  'chichen itza',\n  'chimney rock',\n  'chiricahua',\n  'colosseum',\n  'hovenweep',\n  'kazan kremlin',\n  'lincoln memorial',\n  'machu picchu',\n  'neuschwanstein',\n  'papahanaumokuakea',\n  'parthenon',\n  'pompeii',\n  'taj mahal',\n  'teotihuacan',\n  'tonto',\n  'tsarskoe selo',\n  'tulum',\n  'tuzigoot',\n  'virgin islands',\n  'wupatki',\n  'cedar breaks',\n  'scotts bluff',\n  'saint lawrence river',\n\n  // generic place names\n  'west end',\n  'east end',\n  'north end',\n  'south end',\n  'west side',\n  'east side',\n  'north side',\n  'south side',\n  'brookside',\n  'brookstone',\n  'centerville',\n  'clearwater',\n  'cedar grove',\n  'fairhaven',\n  'green acres',\n  'highland',\n  'highlands',\n  'hillcrest',\n  'lakefront',\n  'lowlands',\n  'lowland',\n  'maplewood',\n  'meadowlands',\n  'midlands',\n  'oakmont',\n  'pinecrest',\n  'riverbend',\n  'riverfront',\n  'riverside',\n  'springhill',\n  'springwood',\n  'willowbrook',\n  'sunset hills',\n  'oakwood',\n  'parkside',\n  'green valley',\n  'maple grove',\n  'pine ridge',\n  'greenfield',\n\n  //misc notable british\n  'abbotsford',\n  'abingdon',\n  'acton',\n  'agincourt',\n  'alberton',\n  'aldershot',\n  'alliston',\n  'ancaster',\n  'andover',\n  'ashcroft',\n  'aylesford',\n  'baltimore',\n  'barnsley',\n  'battersea',\n  'beaconsfield',\n  'bedford',\n  'bellingham',\n  'berwick',\n  'bexhill',\n  'bingley',\n  'blackburn',\n  'blackpool',\n  'blackwall',\n  'bolton',\n  'bracebridge',\n  'bramley',\n  'brampton',\n  'bridgenorth',\n  'bridgetown',\n  'brigham',\n  'brighton',\n  'brockton',\n  'buckingham',\n  'caldwell',\n  'cambridge',\n  'campbellford',\n  'carlisle',\n  'caversham',\n  'charlottetown',\n  'chelmsford',\n  'cheltenham',\n  'colchester',\n  'collingwood',\n  'compton',\n  'cornwall',\n  'croydon',\n  'darlington',\n  'dartford',\n  'dartmoor',\n  'denham',\n  'derry',\n  'devonport',\n  'digby',\n  'doncaster',\n  'dorchester',\n  'dover',\n  'dryden',\n  'dumfries',\n  'dunstable',\n  'durham',\n  'dutton',\n  'earlscourt',\n  'eglinton',\n  'enfield',\n  'epping',\n  'euston',\n  'everton',\n  'exeter',\n  'exford',\n  'gravenhurst',\n  'grimsby',\n  'guelph',\n  'haliburton',\n  'hampstead',\n  'hampton',\n  'harford',\n  'harrow',\n  'hastings',\n  'hereford',\n  'hertford',\n  'heywood',\n  'highbury',\n  'huntingdon',\n  'ilford',\n  'inglewood',\n  'inverness',\n  'ipswich',\n  'kensington',\n  'keswick',\n  'kitchener',\n  'lambeth',\n  'lancaster',\n  'langford',\n  'langley',\n  'langton',\n  'lansing',\n  'leaside',\n  'lewes',\n  'lindley',\n  'lyndhurst',\n  'maidstone',\n  'malton',\n  'malvern',\n  'mansfield',\n  'markham',\n  'millington',\n  'newark',\n  'newham',\n  'newmarket',\n  'newport',\n  'northampton',\n  'norwich',\n  'nottingham',\n  'orford',\n  'oxford',\n  'oxley',\n  'parkwood',\n  'pelham',\n  'pembroke',\n  'pennington',\n  'penzance',\n  'perth',\n  'pickering',\n  'picton',\n  'putnam',\n  'rayleigh',\n  'redcliffe',\n  'redhill',\n  'richmond',\n  'rochester',\n  'seaforth',\n  'seaton',\n  'sherbrooke',\n  'southampton',\n  'southwold',\n  'stafford',\n  'stockwell',\n  'stratford',\n  'stroud',\n  'sudbury',\n  'sunderland',\n  'sydenham',\n  'taunton',\n  'thornhill',\n  'tiverton',\n  'torquay',\n  'tottenham',\n  'truro',\n  'upton',\n  'uxbridge',\n  'vauxhall',\n  'wakefield',\n  'warwick',\n  'waterford',\n  'watford',\n  'weedon',\n  'wentworth',\n  'whitby',\n  'whitchurch',\n  'wickham',\n  'winchester',\n  'wingham',\n  'woking',\n  'woodbridge',\n  'woodside',\n  'woodstock',\n  'woolwich',\n  'wycombe',\n  'york',\n]\n"
  },
  {
    "path": "data/lexicon/places/regions.js",
    "content": "//some major 'second-level' administrative divisions\nexport default [\n  'alabama',\n  'alaska',\n  'arizona',\n  'arkansas',\n  'california',\n  'colorado',\n  'connecticut',\n  'delaware',\n  'florida',\n  'georgia',\n  'hawaii',\n  'idaho',\n  'illinois',\n  'indiana',\n  'iowa',\n  'kansas',\n  'kentucky',\n  'louisiana',\n  'maine',\n  'maryland',\n  'massachusetts',\n  'michigan',\n  'minnesota',\n  'mississippi',\n  'missouri',\n  'montana',\n  'nebraska',\n  'nevada',\n  'new hampshire',\n  'new jersey',\n  'new mexico',\n  'new york state',\n  'new york',\n  'north carolina',\n  'north dakota',\n  'ohio',\n  'oklahoma',\n  'oregon',\n  'pennsylvania',\n  'rhode island',\n  'south carolina',\n  'south dakota',\n  'tennessee',\n  'texas',\n  'utah',\n  'vermont',\n  'virginia',\n  'washington dc',\n  'washington',\n  'west virginia',\n  'wisconsin',\n  'wyoming',\n\n  //canada\n  'alberta',\n  'british columbia',\n  'manitoba',\n  'new brunswick',\n  'newfoundland',\n  'newfoundland and labrador',\n  'nova scotia',\n  'nunavut',\n  'ontario',\n  'prince edward island',\n  'pei',\n  'quebec',\n  'saskatchewan',\n  'yukon',\n\n  //australia\n  'norfolk',\n  'queensland',\n  'tasmania',\n  // 'victoria',\n\n  //china\n  'qinghai',\n  'sichuan',\n  'gansu',\n  'hunan',\n  'guangdong',\n  'guizhou',\n  'fujian',\n  'jiangxi',\n\n  //india\n  'andhra pradesh',\n  'arunachal pradesh',\n  'assam',\n  'bihar',\n  'chhattisgarh',\n  'goa',\n  'gujarat',\n  'haryana',\n  'himachal pradesh',\n  'jharkhand',\n  'karnataka',\n  'kerala',\n  'madhya pradesh',\n  'maharashtra',\n  'manipur',\n  'meghalaya',\n  'mizoram',\n  'nagaland',\n  'odisha',\n  'punjab',\n  'rajasthan',\n  'sikkim',\n  'tamil nadu',\n  'telangana',\n  'tripura',\n  'uttar pradesh',\n  'uttarakhand',\n  'west bengal',\n\n  //mexico\n  'aguascalientes',\n  'baja california',\n  'campeche',\n  'chiapas',\n  'chihuahua',\n  'coahuila',\n  'colima',\n  'durango',\n  'guanajuato',\n  'guerrero',\n  'hidalgo',\n  'jalisco',\n  'michoacan',\n  'morelos',\n  'nayarit',\n  'nuevo leon',\n  'oaxaca',\n  'queretaro',\n  'quintana roo',\n  'san luis potosi',\n  'sinaloa',\n  'sonora',\n  'tabasco',\n  'tamaulipas',\n  'tlaxcala',\n  'veracruz',\n  'yucatan',\n  'zacatecas',\n\n  //western-europe\n  'basque',\n  'bavaria',\n  'bremen',\n  'buckinghamshire',\n  'cambridgeshire',\n  'corsica',\n  'coventry',\n  'cumbria',\n  'derbyshire',\n  'dorset',\n  'essex',\n  'gloucestershire',\n  'hampshire',\n  'hertfordshire',\n  'lancashire',\n  'leeds',\n  'leicestershire',\n  'lincolnshire',\n  'midlands',\n  'normandy',\n  'north yorkshire',\n  'northamptonshire',\n  'nottinghamshire',\n  'oxfordshire',\n  'saxony',\n  'sicily',\n  'somerset',\n  'staffordshire',\n  'suffolk',\n  'surrey',\n  'sussex',\n  'tuscany',\n  'warwickshire',\n  'yorkshire',\n\n  //bangladesh\n  'rajshahi',\n  'rangpur',\n  'khulna',\n  'sylhet',\n\n  //brazil\n  'minas gerais',\n  'bahia',\n  'parana',\n  'pernambuco',\n  'ceara',\n  'para',\n  'maranhao',\n  'santa catarina',\n\n  //russia\n  'siberia',\n  'adygea',\n  'altai',\n  'bashkortostan',\n  'buryatia',\n  'dagestan',\n  'ingushetia',\n  'kabardino',\n  'balkaria',\n  'kalmykia',\n  'karachay',\n  'cherkessia',\n  'karelia',\n  'komi',\n  'mari el',\n  'mordovia',\n  'yakutia',\n  'ossetia',\n  'tatarstan',\n  'tuva',\n  'udmurtia',\n  'khakassia',\n  'chechnya',\n  'chuvashia',\n  'crimea',\n\n  // malaysia\n  'penang',\n  'pahang',\n  'perak',\n  'sarawak',\n  'selangor',\n  'malacca',\n  'kedah',\n  'kelantan',\n]\n"
  },
  {
    "path": "data/lexicon/switches/actor-verb.js",
    "content": "// actor like 'the coach' or verb like 'coach a team'\n// use noun-verb for sometimes-actors, like 'target', or 'star'\nexport default [\n  'addict',\n  'architect',\n  'advocate',\n  'affiliate',\n  'bitch',\n  'bully',\n  'boss',\n  'champion',\n  'chauffeur',\n  'coach',\n  'cook',\n  'doctor',\n  'butcher',\n  'delegate',\n  'engineer',\n  'fool',\n  'geek',\n  'goof',\n  'graduate',\n  'groom',\n  'guide',\n  'host',\n  'judge',\n  'man',\n  'mime',\n  'master',\n  'nerd',\n  'parent',\n  'pilot',\n  'recruit',\n  'scout',\n  'sponsor',\n  'spy',\n  'suspect',\n  'usher',\n  'volunteer',\n  'conscript',\n  'wimp',\n  'witness',\n]\n"
  },
  {
    "path": "data/lexicon/switches/adj-gerund.js",
    "content": "// rallying the troops\n// her rallying cry\nexport default [\n  'absorbing',\n  'accelerating',\n  'accompanying',\n  'aching',\n  'aging',\n  'agonizing',\n  'agonzing',\n  'alarming',\n  'alluring',\n  'amazing',\n  'amusing',\n  'annoying',\n  'appealing',\n  'arresting',\n  'aspiring',\n  'assuring',\n  'astonishing',\n  'astounding',\n  'baffling',\n  'becoming',\n  'bewildering',\n  'bewitching',\n  'binding',\n  'blinding',\n  'boiling',\n  'booming',\n  'boring',\n  'bouncing',\n  'breathtaking',\n  'bruising',\n  'budding',\n  'bustling',\n  'calming',\n  'captivating',\n  'caring',\n  'challenging',\n  'changing',\n  'charming',\n  'chilling',\n  'climbing',\n  'closing',\n  'comforting',\n  'commanding',\n  'compelling',\n  'competing',\n  'compromising',\n  'concerning',\n  'conflicting',\n  'confusing',\n  'conspiring',\n  'continuing',\n  'contrasting',\n  'contributing',\n  'controlling',\n  'convincing',\n  'corresponding',\n  'crippling',\n  'cutting',\n  'damaging',\n  'daring',\n  'dashing',\n  'daunting',\n  'dazzling',\n  'debilitating',\n  'decaying',\n  'deceiving',\n  'declining',\n  'decreasing',\n  'defining',\n  'degrading',\n  'delighting',\n  'demanding',\n  'demeaning',\n  'demoralizing',\n  'depressing',\n  'deserving',\n  'devastating',\n  'developing',\n  'disappointing',\n  'disarming',\n  'disgusting',\n  'disheartening',\n  'dissenting',\n  'distracting',\n  'distressing',\n  'disturbing',\n  'dizzying',\n  'drifting',\n  'electrifying',\n  'embarrassing',\n  'emerging',\n  'empowering',\n  'enabling',\n  'enchanting',\n  'encouraging',\n  'enduring',\n  'energizing',\n  'engaging',\n  'enlivening',\n  'enriching',\n  'ensuing',\n  'enthralling',\n  'enticing',\n  'exacting',\n  'exasperating',\n  'exciting',\n  'exhausting',\n  'exhilarating',\n  'existing',\n  'expanding',\n  'exploding',\n  'fading',\n  'fascinating',\n  'fetching',\n  'fitting',\n  'flaming',\n  'flattering',\n  'floating',\n  'flowering',\n  'flowing',\n  'foreboding',\n  'forthcoming',\n  'founding',\n  'freezing',\n  'frightening',\n  'frustrating',\n  'fulfilling',\n  'glaring',\n  'gleaming',\n  'gratifying',\n  'grating',\n  'gripping',\n  'groundbreaking',\n  'growing',\n  'grueling',\n  'gruelling',\n  'guiding',\n  'harrowing',\n  'healing',\n  'heartwarming',\n  'horrifying',\n  'humiliating',\n  'illuminating',\n  'imposing',\n  'incorporating',\n  'increasing',\n  'infuriating',\n  'inspiring',\n  'insulting',\n  'interesting',\n  'intimidating',\n  'intoxicating',\n  'intriguing',\n  'invigorating',\n  'inviting',\n  'irritating',\n  'judging',\n  'lacking',\n  'lagging',\n  'lasting',\n  'laughing',\n  'leaning',\n  'leading',\n  'learning',\n  'lifesaving',\n  'limiting',\n  'living',\n  'loving',\n  'maddening',\n  'maturing',\n  'meandering',\n  'melting',\n  'mending',\n  'mesmerizing',\n  // 'mind-altering',\n  'boggling',\n  'numbing',\n  'missing',\n  'mitigating',\n  'motivating',\n  'moving',\n  'mumbling',\n  'mystifying',\n  'nurturing',\n  'offending',\n  'offsetting',\n  'opposing',\n  'outgoing',\n  'outlying',\n  'outstanding',\n  'overarching',\n  'overlapping',\n  'overpowering',\n  'overriding',\n  'overwhelming',\n  'owing',\n  'paying',\n  'pending',\n  'perplexing',\n  'piercing',\n  'plunging',\n  'preceding',\n  'pressing',\n  'prevailing',\n  'promising',\n  'provoking',\n  'punishing',\n  'raging',\n  'rallying',\n  'rambling',\n  'raving',\n  'reassuring',\n  'redefining',\n  'refreshing',\n  'reigning',\n  'rejuvenating',\n  'relaxing',\n  'remaining',\n  'resting',\n  'revealing',\n  'revitalising',\n  'revitalizing',\n  'revolving',\n  'rewarding',\n  'riveting',\n  'roaring',\n  'rolling',\n  'running',\n  'rushing',\n  'saddening',\n  'satisfying',\n  'screaming',\n  'screeching',\n  'sentencing',\n  'shining',\n  'shocking',\n  'skyrocketing',\n  'sloping',\n  'smiling',\n  'soaking',\n  'soaring',\n  'soothing',\n  'sparkling',\n  'speeding',\n  'spellbinding',\n  'sprawling',\n  'staggering',\n  'startling',\n  'starving',\n  'steaming',\n  'stimulating',\n  'stirring',\n  'striking',\n  'stunning',\n  'supporting',\n  'surging',\n  'surprising',\n  'surrounding',\n  'sweeping',\n  'swelling',\n  'tantalizing',\n  'taxing',\n  'teasing',\n  'telling',\n  'tempting',\n  'terrifying',\n  'threatening',\n  'thrilling',\n  'thriving',\n  'tiring',\n  'touching',\n  'trembling',\n  'troubling',\n  'trusting',\n  'trying',\n  'twisting',\n  'unfolding',\n  'unnerving',\n  'unsettling',\n  'uplifting',\n  'upsetting',\n  'varying',\n  'vexing',\n  'willing',\n  'working',\n  'worrying',\n  'yielding',\n  'accommodating',\n  'trifling',\n  'endearing',\n  // prefixes\n]\n"
  },
  {
    "path": "data/lexicon/switches/adj-noun.js",
    "content": "// the commercial market\n// watching the commercial\nexport default [\n  'academic',\n  'adolescent',\n  'adult',\n  'alert',\n  'alternative',\n  'antarctic',\n  'arab',\n  'arctic',\n  'back',\n  'best',\n  'blank',\n  'bottom',\n  'bourgeois',\n  'brief',\n  'brute',\n  'chief',\n  'classic',\n  'comic',\n  'commercial',\n  'communist',\n  'companion',\n  'complex',\n  'concrete',\n  'content',\n  'constituent',\n  'contemporary',\n  'convertable',\n  'cooperative',\n  'crude',\n  'cunning',\n  'dark',\n  'darling',\n  'demographic',\n  'derivative',\n  'elder',\n  'elite',\n  'epic',\n  'excess',\n  'executive',\n  'expert',\n  'fair',\n  'fat',\n  'favorite',\n  'favourite',\n  'fellow',\n  'female',\n  'feminist',\n  'fine',\n  'firm',\n  'fluid',\n  'fugitive',\n  'future',\n  'general',\n  'genious',\n  'gold',\n  'graphic',\n  'grave',\n  'half',\n  'hobby',\n  'homeless',\n  'humdrum',\n  'ideal',\n  'impressionist',\n  'incumbent',\n  'individual',\n  'innocent',\n  'instant',\n  'interim',\n  'justice',\n  'juvenile',\n  'last',\n  'latter',\n  'left',\n  'liberal',\n  'light',\n  'liquid',\n  'lush',\n  'male',\n  'marine',\n  'median',\n  'medium',\n  'metric',\n  'miniature',\n  // 'major',\n  // 'minor',\n  'mobile',\n  'modernist',\n  'moral',\n  'mortal',\n  'nagging',\n  'novel',\n  'nuts',\n  'offensive',\n  'official',\n  'opposite',\n  'oval',\n  'parallel',\n  'past',\n  'patient',\n  'periodical',\n  'pet',\n  'plastic',\n  // 'poor',\n  'potential',\n  'premier',\n  'premium',\n  'present',\n  'principal',\n  'pro',\n  'professional',\n  'racist',\n  'rash',\n  'rear',\n  'rebel',\n  'relative',\n  'rental',\n  'representative',\n  'republican',\n  'resident',\n  // 'rich',\n  'right',\n  'round',\n  'routine',\n  'rubbish',\n  'sage',\n  'secret',\n  'senior',\n  'serial',\n  'silver',\n  'slack',\n  'socialist',\n  'sole',\n  'solvent',\n  'sound',\n  'sovereign',\n  'square',\n  'squat',\n  'stable',\n  'standard',\n  'subject',\n  'subordinate',\n  'superior',\n  'swell',\n  'taboo',\n  'tan',\n  'teen',\n  'terminal',\n  'terrorist',\n  'token',\n  'top',\n  'total',\n  'trial',\n  'undergraduate',\n  'underground',\n  'upstairs',\n  'vagabond',\n  'vanilla',\n  'variable',\n  'variant',\n  'visionary',\n  'void',\n  'watershed',\n  'welcome',\n]\n"
  },
  {
    "path": "data/lexicon/switches/adj-past.js",
    "content": "// clues: [adj, past],\n// fallback: 'Adjective',\nexport default [\n  'abandoned',\n  'absorbed',\n  'accepted',\n  'acknowledged',\n  'adjusted',\n  'adopted',\n  'advanced',\n  'affected',\n  'aged',\n  'alarmed',\n  'alleged',\n  'altered',\n  'amazed',\n  'animated',\n  'anticipated',\n  'applied',\n  'appreciated',\n  'armed',\n  'associated',\n  'assumed',\n  'assured',\n  'augmented',\n  'authorized',\n  'awarded',\n  'baffled',\n  'baked', //baked goods\n  'balanced',\n  'based', //modern slang\n  'battered',\n  'bewildered',\n  'biased',\n  'blessed',\n  'blinded',\n  'boiled',\n  'bored',\n  'bottled',\n  'bound',\n  'broken',\n  'bruised',\n  'burned',\n  'burnt',\n  'caged',\n  'calculated',\n  'celebrated',\n  'centralized',\n  'certified',\n  'charged',\n  'charmed',\n  'chilled',\n  'classified',\n  'closed',\n  'cluttered',\n  'coded',\n  'colored',\n  'coloured',\n  'combined',\n  'complicated',\n  'concentrated',\n  'confused',\n  'considered',\n  'consolidated',\n  'controlled',\n  'cooked',\n  'covered',\n  'cracked',\n  'cramped',\n  'crowded',\n  'crushed',\n  'cultivated',\n  'cured',\n  'customized',\n  'damaged',\n  'dampened',\n  'dated',\n  'dazed',\n  'dazzled',\n  'decayed',\n  'decentralized',\n  'decorated',\n  'dedicated',\n  'deferred',\n  'defined',\n  'deformed',\n  'delayed',\n  'delighted',\n  'depressed',\n  'deranged',\n  'detailed',\n  'determined',\n  'developed',\n  'devoted',\n  'dignified',\n  'diminished',\n  'directed',\n  'disabled',\n  'disciplined',\n  'discounted',\n  'discouraged',\n  'disgruntled',\n  'distorted',\n  'distressed',\n  'disturbed',\n  'drained',\n  'dried',\n  'edified',\n  'educated',\n  'elated',\n  'emaciated',\n  'embarrassed',\n  'enchanted',\n  'engaged',\n  'enhanced',\n  'ensured',\n  'equipped',\n  'escaped',\n  'established',\n  'exaggerated',\n  'excited',\n  'expanded',\n  'expected',\n  'experienced',\n  'exposed',\n  'extended',\n  'faded',\n  'failed',\n  'fascinated',\n  'feared',\n  'finished',\n  'fitted',\n  'fixed',\n  'flavored',\n  'flavoured',\n  'flustered',\n  'focused',\n  'fractured',\n  'fragmented',\n  'framed',\n  'fried',\n  'frozen',\n  'gifted',\n  'gratified',\n  'grilled',\n  'grown',\n  'guarded',\n  'guided',\n  'hammered',\n  'harmed',\n  'heated',\n  'hooked',\n  'horrified',\n  'humbled',\n  'illuminated',\n  'implied',\n  'imported',\n  'improved',\n  'inbred',\n  'increased',\n  'indebted',\n  'infected',\n  'inflated',\n  'informed',\n  'infuriated',\n  'injured',\n  'inspired',\n  'integrated',\n  'intended',\n  'intensified',\n  'interested',\n  'intoxicated',\n  'invited',\n  'involved',\n  'isolated',\n  'jagged',\n  'joined',\n  'judged',\n  'justified',\n  'knotted',\n  'known',\n  'lay',\n  'lead',\n  'left',\n  'leveled',\n  'licensed',\n  'limited',\n  'listed',\n  'loaded',\n  'locked',\n  'lost',\n  'loved',\n  'managed',\n  'manufactured',\n  'marked',\n  'measured',\n  'melted',\n  'mixed',\n  'modified',\n  'motivated',\n  'mounted',\n  'muted',\n  'mystified',\n  'nagged',\n  'needed',\n  'neglected',\n  'noted',\n  'nourished',\n  'observed',\n  'occupied',\n  'oppressed',\n  'organized',\n  'overlooked',\n  'overwhelmed',\n  'packed',\n  'painted',\n  'paralleled',\n  'parked',\n  'pasted',\n  'perfected',\n  'picked',\n  'pierced',\n  'pissed',\n  'planned',\n  'pleased',\n  'plugged',\n  'pointed',\n  'polished',\n  'preferred',\n  'preoccupied',\n  'prepared',\n  'pressed',\n  'printed',\n  'processed',\n  'produced',\n  'prolonged',\n  'pronounced',\n  'proposed',\n  'protected',\n  'proved',\n  'pumped',\n  'puzzled',\n  'qualified',\n  'quoted',\n  'rained',\n  'rallied',\n  'ratified',\n  'received',\n  'recommended',\n  'recorded',\n  'recovered',\n  'recycled',\n  'reduced',\n  'refined',\n  'registered',\n  'regulated',\n  'rejected',\n  'related',\n  'released',\n  'removed',\n  'renewed',\n  'repeated',\n  'replaced',\n  'requested',\n  'required',\n  'reserved',\n  'respected',\n  'restored',\n  'restricted',\n  'rotted',\n  'satisfied',\n  'saturated',\n  'sauted',\n  'scared',\n  'scattered',\n  'scorched',\n  'scratched',\n  'screened',\n  'sealed',\n  'seasoned',\n  'seated',\n  'secured',\n  'selected',\n  'settled',\n  'shaded',\n  'shared',\n  'shocked',\n  'shut',\n  'simplified',\n  'simulated',\n  'smoked',\n  'soaked',\n  'specialized',\n  'specified',\n  'spiked',\n  'spotted',\n  'stained',\n  'stated',\n  'steamed',\n  'stereotyped',\n  'stirred',\n  'stoked',\n  'strengthened',\n  'striped',\n  'stripped',\n  'stuffed',\n  'stumped',\n  'stunned',\n  'subsidized',\n  'suggested',\n  'suspected',\n  'suspended',\n  'sustained',\n  'tamed',\n  'tanned',\n  'targeted',\n  'tarnished',\n  'teased',\n  'threatened',\n  'thrilled',\n  'tied',\n  'tired',\n  'touched',\n  'tracked',\n  'trained',\n  'trapped',\n  'trimmed',\n  'troubled',\n  'turned',\n  'twisted',\n  'uncovered',\n  'understood',\n  'unified',\n  'united',\n  'updated',\n  'uplifted',\n  'upset',\n  'used',\n  'varied',\n  'verified',\n  'warped',\n  'washed',\n  'watched',\n  'weakened',\n  'weathered',\n  'wet',\n  'worn',\n  'worried',\n  'wounded',\n  'wrinkled',\n  'yellowed',\n]\n"
  },
  {
    "path": "data/lexicon/switches/adj-present.js",
    "content": "// 'would mean' vs 'is mean'\nexport default [\n  'approximate',\n  'blunt',\n  'clean',\n  'complete',\n  'conjugate',\n  'cool',\n  'correct',\n  'damp',\n  'deliberate',\n  'diffuse',\n  'direct',\n  'double',\n  'dry',\n  'elaborate',\n  'empty',\n  'firm',\n  'free',\n  'hollow',\n  'idle',\n  'lay',//lay-people\n  'lean',\n  // 'light',\n  'live',\n  'mature',\n  'mean',\n  'moderate',\n  // 'near',\n  'narrow',\n  'obscure',\n  'open',\n  'own',\n  'pale',\n  'present',\n  'prime',\n  'prompt',\n  'quack',\n  'replicate',\n  'right',\n  'secure',\n  'sedate',\n  'select',\n  'separate',\n  'slick',\n  'slow',\n  'smooth',\n  'sour',\n  'spare',\n  'sure',\n  'suspect',\n  'thin',\n  'top',//top the chart\n  'total',\n  'utter',\n  'warm',\n  'wet',\n  'wound',\n  'wrong',\n  'express',\n  'elicit',\n  'fringe',\n  'consummate',\n  'defuse',\n  'wrought',\n  'counterfeit',\n  'alight',\n  'tender',\n  'lower',\n  'close',\n  'last',\n  'faint',\n  'bankrupt',\n  'corrupt',\n  'fast',\n  'short',\n  'foul',\n  'fake',\n  'fancy',\n  'clear',\n  'calm',\n  'dull',\n  'stray',\n  'perfect',\n  'exempt',\n  'articulate',\n]\n"
  },
  {
    "path": "data/lexicon/switches/noun-gerund.js",
    "content": "// gerunds can be adjectives 'striking example'\n// or nouns 'arguing', or 'operating room'\nexport default [\n  'abandoning',\n  'accounting',\n  'acting',\n  'advertising',\n  'aging',\n  'approaching',\n  'arguing',\n  'assuming',\n  'attracting',\n  'babysitting',\n  'backing',\n  'baking',\n  'battling',\n  'beginning',\n  'belonging',\n  'betting',\n  'bitching',\n  'biting',\n  'blessing',\n  'bloating',\n  'boating',\n  'bombing',\n  'booking',\n  'bookkeeping',\n  'branding',\n  'breathing',\n  'broadcasting',\n  'budgeting',\n  'building',\n  'bullying',\n  'burping',\n  'camping',\n  'carving',\n  'casting',\n  'catering',\n  'celebrating',\n  'chanting',\n  'chatting',\n  'cheering',\n  'clapping',\n  'cleaning',\n  'clearing',\n  'climbing',\n  'cloning',\n  'clothing',\n  'clubbing',\n  'coaching',\n  'coating',\n  'coding',\n  'collecting',\n  'coloring',\n  'communicating',\n  'complaining',\n  'composing',\n  'conducting',\n  'constructing',\n  'consulting',\n  'convincing',\n  'cooking',\n  'coping',\n  'covering',\n  'crafting',\n  'crawling',\n  'crossing',\n  'crying',\n  'curling',\n  'cycling',\n  'dancing',\n  'dating',\n  'debating',\n  'decorating',\n  'delegating',\n  'delivering',\n  'developing',\n  'directing',\n  'discovering',\n  'diving',\n  'doubting',\n  'drawing',\n  'dreaming',\n  'dressing',\n  'dribbling',\n  'drinking',\n  'driving',\n  'dumping',\n  'dwelling',\n  'eating',\n  'educating',\n  'enchanting',\n  'ending',\n  'engineering',\n  'exercising',\n  'exploring',\n  'farming',\n  'fascinating',\n  'feeling',\n  'fencing',\n  'fighting',\n  'filing',\n  'filling',\n  // 'filming',\n  'financing',\n  'finding',\n  'fishing',\n  'flirting',\n  'flooding',\n  'forecasting',\n  'formatting',\n  'frosting',\n  'funding',\n  'gardening',\n  'gathering',\n  'generating',\n  'gliding',\n  'greeting',\n  'grieving',\n  'guiding',\n  'handling',\n  'harrowing',\n  'harvesting',\n  'heating',\n  'hiking',\n  'hiring',\n  'holding',\n  'howling',\n  'hunting',\n  'icing',\n  'illustrating',\n  // 'imaging',\n  'imagining',\n  'imploding',\n  'innovating',\n  'inspecting',\n  'interacting',\n  'interviewing',\n  'inventing',\n  'ironing',\n  'jogging',\n  'judging',\n  'juggling',\n  'justifying',\n  'kicking',\n  'killing',\n  'kneading',\n  'knitting',\n  'landing',\n  'laughing',\n  'learning',\n  'leasing',\n  'licensing',\n  'lifting',\n  'limiting',\n  'listening',\n  'listing',\n  'lodging',\n  'lying',\n  'maintaining',\n  'manifesting',\n  'manufacturing',\n  'marketing',\n  'meaning',\n  'meditating',\n  'meeting',\n  'messaging',\n  'mining',\n  'modeling',\n  'monitoring',\n  'navigating',\n  'negotiating',\n  'networking',\n  'nursing',\n  'offering',\n  'opening',\n  'operating',\n  'organising',\n  'organizing',\n  'overcoming',\n  'ovulating',\n  'packaging',\n  'painting',\n  'parking',\n  'partying',\n  'peacekeeping',\n  'planning',\n  'playing',\n  'poisoning',\n  'positioning',\n  'praying',\n  'pretending',\n  'printing',\n  'processing',\n  'publishing',\n  'questioning',\n  'rapping',\n  'rating',\n  'reading',\n  'reasoning',\n  'recording',\n  'recycling',\n  'rehearsing',\n  'relaxing',\n  'rendering',\n  'reporting',\n  'responding',\n  'restructruing',\n  'restructuring',\n  'riding',\n  'roofing',\n  'rowing',\n  'ruling',\n  'running',\n  'sailing',\n  'saying',\n  'scheduling',\n  'schooling',\n  'scoring',\n  'screaming',\n  'screening',\n  'sculpting',\n  'seating',\n  'serving',\n  'setting',\n  'shipping',\n  'shopping',\n  'shortening',\n  'shouting',\n  'signaling',\n  'signing',\n  'singing',\n  'sitting',\n  'skateboarding',\n  'skating',\n  'sleeping',\n  'smoking',\n  'snowboarding',\n  'snowing',\n  'spelling',\n  'spending',\n  'staging',\n  'storytelling',\n  'stretching',\n  'struggling',\n  'studying',\n  'stuffing',\n  'subtracting',\n  'suffering',\n  'surfing',\n  'surveying',\n  'surviving',\n  'swearing',\n  'swimming',\n  'talking',\n  'tanning',\n  'tasting',\n  'teaching',\n  'teasing',\n  'testing',\n  'thinking',\n  'timing',\n  'tipping',\n  'tracking',\n  'trading',\n  'training',\n  'traveling',\n  'travelling',\n  'typing',\n  'understanding',\n  'undertaking',\n  'visualizing',\n  'volunteering',\n  'voting',\n  'waiting',\n  // 'walking',\n  'warning',\n  'washing',\n  'watching',\n  'wedding',\n  'whispering',\n  'wiring',\n  'wondering',\n  'working',\n  'worrying',\n  'wrapping',\n  'wrestling',\n  'writing',\n  'yawning',\n  'yearning',\n  'yelling',\n  'zeroing',\n  'zoning',\n  'zooming',\n]\n"
  },
  {
    "path": "data/lexicon/switches/noun-verb.js",
    "content": "// words that can be infinitives or nouns\nexport default [\n  'abuse',\n  'accent',\n  'access',\n  'accord',\n  'account',\n  'ace',\n  'ache',\n  'act',\n  'address',\n  'advance',\n  'advocate',\n  'age',\n  'aid',\n  'aim',\n  'air',\n  'alarm',\n  'alter',\n  'anchor',\n  'anger',\n  'answer',\n  'appeal',\n  'approach',\n  'arch',\n  'archive',\n  'arm',\n  'armour',\n  'ask',\n  'assist',\n  'associate',\n  'attack',\n  'attempt',\n  'auction',\n  'award',\n  'back',\n  'bail',\n  'balance',\n  'ban',\n  'band',\n  'bang',\n  'bank',\n  'bar',\n  'bargain',\n  'barge',\n  'bark',\n  'base',\n  'bash',\n  'battle',\n  'bear',\n  'beat',\n  'beef',\n  'belt',\n  'bend',\n  'benefit',\n  'bet',\n  'bias',\n  'bid',\n  'bike',\n  'bill',\n  'bind',\n  'biopsy',\n  'bit',\n  'bitch',\n  'bite',\n  'blame',\n  'blend',\n  'blink',\n  'blitz',\n  'block',\n  'blur',\n  'board',\n  'boast',\n  'bog',\n  'bomb',\n  'bond',\n  'bone',\n  'book',\n  'boost',\n  'boot',\n  'border',\n  'bottle',\n  'box',\n  'boycott',\n  'branch',\n  'brand',\n  'breach',\n  'break',\n  'breed',\n  'bribe',\n  'bridge',\n  'broadcast',\n  'bruise',\n  'brush',\n  'bubble',\n  'buckle',\n  'budget',\n  'buffer',\n  'bump',\n  'burden',\n  'burn',\n  'bust',\n  'buzz',\n  'bypass',\n  'cake',\n  'call',\n  'camp',\n  'canoe',\n  'cap',\n  'capture',\n  'card',\n  'care',\n  'cash',\n  'cast',\n  'catalog',\n  'catch',\n  'cause',\n  'caution',\n  'cave',\n  'center',\n  'centre',\n  'chain',\n  'chair',\n  'challenge',\n  'change',\n  'channel',\n  'charge',\n  'charm',\n  'chart',\n  'chase',\n  'cheat',\n  'check',\n  'cheer',\n  'chip',\n  'circle',\n  'claim',\n  'claw',\n  'click',\n  'clip',\n  'cloud',\n  'club',\n  'coat',\n  'code',\n  'coin',\n  'collapse',\n  'color',\n  'colour',\n  'combat',\n  'combine',\n  'comfort',\n  'command',\n  'comment',\n  'commit',\n  'commute',\n  'complement',\n  'compound',\n  'compromise',\n  'concentrate',\n  'concern',\n  'conduct',\n  'conflict',\n  'conglomerate',\n  'consent',\n  'construct',\n  'contact',\n  'contrast',\n  'control',\n  'convert',\n  'coordinate',\n  'copy',\n  'core',\n  'cost',\n  'cough',\n  'counsel',\n  'count',\n  'couple',\n  'court',\n  'cover',\n  'crack',\n  'craft',\n  'crash',\n  'credit',\n  'creep',\n  'crop',\n  'cross',\n  'crowd',\n  'crush',\n  'cry',\n  'cube',\n  'cue',\n  'curb',\n  'cure',\n  'curl',\n  'curve',\n  'cut',\n  'dab',\n  'damage',\n  'dance',\n  'dare',\n  'dart',\n  'date',\n  'deal',\n  'debate',\n  'debut',\n  'decline',\n  'decrease',\n  'defeat',\n  'defect',\n  'delay',\n  'delegate',\n  'delight',\n  'demand',\n  'deposit',\n  'desert',\n  'design',\n  'desire',\n  'detail',\n  'digest',\n  'dip',\n  'discharge',\n  'disguise',\n  'dish',\n  'dislike',\n  'dispatch',\n  'display',\n  'dispute',\n  'ditch',\n  'dive',\n  'divide',\n  'divorce',\n  'dock',\n  'document',\n  'dodge',\n  'doubt',\n  'download',\n  'draft',\n  'drag',\n  'drain',\n  'dream',\n  'dress',\n  'drift',\n  'drill',\n  'drink',\n  'drip',\n  'drive',\n  'drone',\n  'drop',\n  'dub',\n  'duel',\n  'dump',\n  'duplicate',\n  'dye',\n  'echo',\n  'edge',\n  'effect',\n  'encounter',\n  'end',\n  'envy',\n  'escape',\n  'estimate',\n  'excel',\n  'exchange',\n  'excuse',\n  'exercise',\n  'exhaust',\n  'exhibit',\n  'experience',\n  'experiment',\n  'export',\n  'extract',\n  'eye',\n  'eyeball',\n  'face',\n  'fail',\n  'fall',\n  'farm',\n  'favour',\n  'fear',\n  'feature',\n  'feed',\n  'feel',\n  'fence',\n  'field',\n  'fight',\n  'figure',\n  'file',\n  'film',\n  'filter',\n  'finance',\n  'finish',\n  'fire',\n  'fish',\n  'fit',\n  'fix',\n  'flag',\n  'flake',\n  'flame',\n  'flare',\n  'flash',\n  'flavor',\n  'flavour',\n  'flesh',\n  'flip',\n  'float',\n  'flock',\n  'flood',\n  'flow',\n  'flower',\n  'fly',\n  'focus',\n  'fog',\n  'foil',\n  'fold',\n  'foot',\n  'force',\n  'forecast',\n  'form',\n  'format',\n  'forward',\n  'fracture',\n  'fragment',\n  'frame',\n  'franchise',\n  'frost',\n  'frown',\n  'fry',\n  'fuck',\n  'fuel',\n  'function',\n  'fund',\n  'fuss',\n  'fuzz',\n  'gag',\n  'gain',\n  'game',\n  'gang',\n  'gas',\n  'gate',\n  'gaze',\n  'gear',\n  'gift',\n  'glare',\n  'gloss',\n  'glow',\n  'glue',\n  'gossip',\n  'grade',\n  'grasp',\n  'grill',\n  'grind',\n  'grip',\n  'ground',\n  'growth',\n  'grumble',\n  'guarantee',\n  'guard',\n  'guess',\n  'gulp',\n  'gun',\n  'hack',\n  'ham',\n  'hammer',\n  'hand',\n  'handle',\n  'harbour',\n  'harm',\n  'harness',\n  'harvest',\n  'hash',\n  'hatch',\n  'hate',\n  'haunt',\n  'head',\n  'heat',\n  'hedge',\n  'help',\n  'highlight',\n  'hike',\n  'hint',\n  'hire',\n  'hit',\n  'hold',\n  'hole',\n  'honor',\n  'honour',\n  'hook',\n  'hop',\n  'hope',\n  'horse',\n  'house',\n  'hug',\n  'hunt',\n  'impact',\n  'implement',\n  'incline',\n  'increase',\n  'index',\n  'influence',\n  'inhale',\n  'ink',\n  'insert',\n  'intent',\n  'interest',\n  'interface',\n  'interview',\n  'invoice',\n  'iron',\n  'issue',\n  'jam',\n  'jazz',\n  'joke',\n  'juice',\n  'jump',\n  'keel',\n  'key',\n  'kick',\n  'kid',\n  'kill',\n  'kiss',\n  'knock',\n  'label',\n  'labor',\n  'labour',\n  'lace',\n  'lack',\n  'land',\n  'lap',\n  'latch',\n  'laugh',\n  'launch',\n  'leach',\n  'lead',\n  'leak',\n  'leap',\n  'lease',\n  'lecture',\n  'leech',\n  'level',\n  'levy',\n  'license',\n  'lick',\n  'lift',\n  'limit',\n  'line',\n  'link',\n  'list',\n  'load',\n  'loan',\n  'lobby',\n  'lock',\n  'log',\n  'look',\n  'loot',\n  'love',\n  'lump',\n  'lust',\n  'mail',\n  'mandate',\n  'manner',\n  'manoeuvre',\n  'map',\n  'market',\n  'mash',\n  'mask',\n  'master',\n  'match',\n  'matter',\n  'measure',\n  'mention',\n  'merge',\n  'merit',\n  'mess',\n  'milk',\n  'mind',\n  'mine',\n  'mirror',\n  'miss',\n  'mistake',\n  'mix',\n  'mock',\n  'model',\n  'mold',\n  'monitor',\n  'monkey',\n  'mop',\n  'mount',\n  'mouth',\n  'move',\n  'murder',\n  'name',\n  'need',\n  'neglect',\n  'net',\n  'network',\n  'nod',\n  'note',\n  'notice',\n  'nurse',\n  'object',\n  'offer',\n  'oil',\n  'ooze',\n  'orbit',\n  'order',\n  'orient',\n  'outline',\n  'overpass',\n  'pack',\n  'package',\n  'paint',\n  'pair',\n  'paise',\n  'pan',\n  'panic',\n  'park',\n  'part',\n  'party',\n  'pass',\n  'paste',\n  'patch',\n  'patent',\n  'pause',\n  'pay',\n  'peak',\n  'pee',\n  'peel',\n  'peer',\n  'pen',\n  'pencil',\n  'perfume',\n  'permit',\n  'pet',\n  'phase',\n  'phone',\n  'photograph',\n  'pick',\n  'pile',\n  'pin',\n  'pine',\n  'pipe',\n  'pit',\n  'pity',\n  'pivot',\n  'place',\n  'plan',\n  'plant',\n  'play',\n  'plce',\n  'plead',\n  'plug',\n  'plump',\n  'plunge',\n  'point',\n  'poison',\n  'police',\n  'polish',\n  'poll',\n  'pool',\n  'poop',\n  'pop',\n  'pore',\n  'pose',\n  'position',\n  'post',\n  'pound',\n  'power',\n  'practice',\n  'praise',\n  'preserve',\n  'press',\n  'prey',\n  'price',\n  'pride',\n  'print',\n  'probe',\n  'proceed',\n  'process',\n  'produce',\n  'profile',\n  'program',\n  'programme',\n  'progress',\n  'project',\n  'promise',\n  'prop',\n  'protest',\n  'prune',\n  'psych',\n  'pump',\n  'punch',\n  'purchase',\n  'push',\n  'question',\n  'quiver',\n  'race',\n  'rack',\n  'rage',\n  'rain',\n  'raise',\n  'rake',\n  'rally',\n  'range',\n  'rank',\n  'rant',\n  'rap',\n  'rape',\n  'rat',\n  'rate',\n  'reach',\n  'reason',\n  'recall',\n  'record',\n  'redo',\n  'reel',\n  'refactor',\n  'reference',\n  'reform',\n  'refund',\n  'refuse',\n  'regard',\n  'register',\n  'regret',\n  'reject',\n  'release',\n  'relish',\n  'remake',\n  'remark',\n  'remedy',\n  'rendezvous',\n  'rent',\n  'reorder',\n  'repair',\n  'repeal',\n  'repeat',\n  'reply',\n  'report',\n  'request',\n  'reserve',\n  'resolve',\n  'resort',\n  'respect',\n  'rest',\n  'restart',\n  'result',\n  'resume',\n  'return',\n  'reveal',\n  'reverse',\n  'review',\n  'reward',\n  'rhyme',\n  'ride',\n  'ring',\n  'riot',\n  'rip',\n  'rise',\n  'risk',\n  'roast',\n  'rock',\n  'roll',\n  'roof',\n  'root',\n  'rope',\n  'route',\n  'rub',\n  'ruin',\n  'rule',\n  'run',\n  'rush',\n  'rust',\n  'sack',\n  'sacrifice',\n  'safeguard',\n  'sail',\n  'sample',\n  'scale',\n  'scan',\n  'scar',\n  'scare',\n  'schedule',\n  'score',\n  'scrape',\n  'scratch',\n  'screen',\n  'screw',\n  'scribble',\n  'scroll',\n  'seal',\n  'search',\n  'seat',\n  'seed',\n  'sense',\n  'sentence',\n  'serve',\n  'service',\n  'set',\n  'shack',\n  'shade',\n  'shape',\n  'share',\n  'shave',\n  'shed',\n  'sheild',\n  'shelter',\n  'shift',\n  'ship',\n  'shiver',\n  'shock',\n  'shop',\n  'shore',\n  'show',\n  'shuffle',\n  'side',\n  'sign',\n  'signal',\n  'silence',\n  'sink',\n  'sip',\n  'size',\n  'skateboard',\n  'ski',\n  'skip',\n  'sleep',\n  'slice',\n  'slip',\n  'slit',\n  'slouch',\n  'smash',\n  'smell',\n  'smile',\n  'smirk',\n  'smoke',\n  'snake',\n  'snap',\n  'sneeze',\n  'snow',\n  'sob',\n  'sound',\n  'spam',\n  'span',\n  'spark',\n  'speed',\n  'spell',\n  'spill',\n  'spin',\n  'spiral',\n  'spite',\n  'splash',\n  'split',\n  'sponsor',\n  'spot',\n  'spray',\n  'spread',\n  'spring',\n  'sprinkle',\n  'spruce',\n  'spur',\n  'spy',\n  'square',\n  'stack',\n  'staff',\n  'stage',\n  'stain',\n  'stake',\n  'stalk',\n  'stall',\n  'stamp',\n  'stand',\n  'staple',\n  'star',\n  'stare',\n  'start',\n  'state',\n  'stay',\n  'steer',\n  'stem',\n  'step',\n  'stick',\n  'stink',\n  'stitch',\n  'stocking',\n  'stockpile',\n  'stoop',\n  'stop',\n  'store',\n  'storm',\n  'strain',\n  'stream',\n  'stress',\n  'stretch',\n  'strike',\n  'string',\n  'stroke',\n  'struggle',\n  'study',\n  'stuff',\n  'stumble',\n  'style',\n  'sub',\n  'subject',\n  'suit',\n  'sum',\n  'supplement',\n  'supply',\n  'support',\n  'surface',\n  'surge',\n  'surprise',\n  'survey',\n  'swear',\n  'sweat',\n  'swing',\n  'swipe',\n  'switch',\n  'tag',\n  'talk',\n  'tally',\n  'tangle',\n  'target',\n  'taste',\n  'tax',\n  'tear',\n  'tee',\n  'tell',\n  'temper',\n  'test',\n  'text',\n  'thread',\n  'throw',\n  'thrust',\n  'tick',\n  'tide',\n  'tie',\n  'tile',\n  'time',\n  'tip',\n  'tire',\n  'toll',\n  'tone',\n  'top',\n  'torture',\n  'toss',\n  'total',\n  'touch',\n  'tour',\n  'track',\n  'trade',\n  'train',\n  'transfer',\n  'transition',\n  'trap',\n  'travel',\n  'treat',\n  'trek',\n  'trend',\n  'tribute',\n  'trick',\n  'trickle',\n  'trigger',\n  'trim',\n  'trip',\n  'trot',\n  'trouble',\n  'trust',\n  'tune',\n  'tunnel',\n  'turn',\n  'twin',\n  'twist',\n  'type',\n  'update',\n  'upgrade',\n  'upload',\n  'urge',\n  'vacuum',\n  'value',\n  'venture',\n  'vibe',\n  'view',\n  'visit',\n  'voice',\n  'void',\n  'vomit',\n  'vote',\n  'vow',\n  'wait',\n  'walk',\n  'war',\n  'warehouse',\n  'warrant',\n  'wash',\n  'waste',\n  'watch',\n  'wave',\n  'wax',\n  'wear',\n  'weather',\n  'weed',\n  'welcome',\n  'wheel',\n  'whip',\n  'whisk',\n  'whisper',\n  'whistle',\n  'wick',\n  'win',\n  'wind',\n  'wing',\n  'wipe',\n  'wire',\n  'wish',\n  'wonder',\n  'work',\n  'workshop',\n  'worry',\n  'worship',\n  'worth',\n  'wound',\n  'wrap',\n  'wreck',\n  'wrinkle',\n  'yawn',\n  'yell',\n  'yield',\n  'zip',\n  'zone',\n  'zoom',\n  'lie',\n  // 'average',\n  // 'fast',\n  // 'try',\n]\n"
  },
  {
    "path": "data/lexicon/switches/person-adj.js",
    "content": "export default [\n  'misty',\n  'rusty',\n  'dusty',\n  'rich',\n  'randy',\n  'sandy',\n  'earnest',\n  'frank',\n  // 'young',\n  'brown',\n  'bella',\n  'woody'\n]"
  },
  {
    "path": "data/lexicon/switches/person-date.js",
    "content": "// person-names that can be dates\nexport default [\n  // clues: [person, date],\n  // fallback: 'Month',\n  'april', 'august', 'jan', 'january', 'june', 'sep', 'avril',\n  // 'may'\n]\n\n"
  },
  {
    "path": "data/lexicon/switches/person-noun.js",
    "content": "// person-names that can be dates\nexport default [\n  // clues: [person, noun],\n  // fallback: 'Singular',\n  // words: [\n  'alfredo',\n  'alma',\n  'art',\n  'baker',\n  'benedict',\n  'berg',\n  'bill',\n  'brandy',\n  'brook',\n  'cam',\n  'charity',\n  'chin',\n  'christian',\n  'cliff',\n  'crystal',\n  'daisy',\n  'dawn',\n  'dean',\n  'deja',\n  'dick',\n  'dixie',\n  'dolly',\n  'earl',\n  'eddy',\n  'emir',\n  'eula',\n  'eve',\n  'faith',\n  'fern',\n  'flo',\n  'gail',\n  'gene',\n  'grant',\n  \"guy\",\n  'hall',\n  'hazel',\n  'hill',\n  'holly',\n  // 'hope',\n  'jade',\n  'jasmine',\n  'jay',\n  'jean',\n  'jewel',\n  'jolie',\n  'joy',\n  'kelvin',\n  'king',\n  'kitty',\n  'lane',\n  'leo',\n  'lily',\n  'max',\n  'maya',\n  'melody',\n  'miles',\n  'olive',\n  'patsy',\n  'page',\n  'pearl',\n  'penny',\n  'pol',\n  'ray',\n  'reed',\n  'rex',\n  'robin',\n  'rod',\n  'rose',\n  'ruby',\n  'sky',\n  'sonny',\n  'summer',\n  'trinity',\n  'van',\n  'viola',\n  'violet',\n  'wang',\n  'ward',\n  'venus',\n  \"dj\",\n  \"paddy\",\n  \"herb\",\n  \"fanny\",\n  \"norm\",\n  \"bo\",\n  \"bud\",\n  \"finn\",\n  \"mat\",\n  \"mats\",\n  \"nat\",\n  \"hunter\",\n  \"ward\",\n  \"dean\",\n  \"gill\",\n  \"chambers\",\n  \"watts\",\n  \"banks\",\n  \"fields\",\n  \"miles\",\n  \"potter\",\n]\n\n"
  },
  {
    "path": "data/lexicon/switches/person-place.js",
    "content": "// cities\nexport default [\n  'alexandria',\n  'austin',\n  'darwin',\n  'diego',\n  'hamilton',\n  'houston',\n  'jordan',\n  'kent',\n  'kobe',\n  'orlando',\n  'salvador',\n  'samara',\n  'santiago',\n  'sydney',\n  'victoria',\n  'virginia',\n]\n"
  },
  {
    "path": "data/lexicon/switches/person-verb.js",
    "content": "// words that can be a verb or a person's name\nexport default [\n  // clues: [person, verb],\n  // fallback: 'PresentTense', //maybe?\n  'biff',\n  'blaze',\n  'blossom',\n  'bob',\n  'buck',\n  'chase',\n  'chuck',\n  'drew',\n  'foster',\n  'grace',\n  'grant',\n  'jack',\n  'lance',\n  'mack',\n  'mark',\n  'marshal',\n  'nick',\n  'ollie',\n  'pat',\n  'peg',\n  'pierce',\n  'rob',\n  'spike',\n  'stew',\n  'sue',\n  'skip',\n  'wade',\n  // 'hope',\n  // 'trace',\n  // 'bill',\n  // 'will',\n  // 'sung'\n  // 'may'\n  // 'peter',\n]\n"
  },
  {
    "path": "data/lexicon/switches/unit-noun.js",
    "content": "export default [\n  'cm',\n  'cup',\n  'cups',\n  'feet',\n  'foot',\n  'ft',\n  'gal',\n  'gb',\n  'hg',\n  'inch',\n  'inches',\n  'k',\n  'kb',\n  'kelvin',\n  'kg',\n  'kb',\n  'km',\n  'lb',\n  'm',\n  'mb',\n  'mg',\n  'mi',\n  'hz',\n  'mps',\n  'mph',\n  'miles',\n  'ml',\n  'mm',\n  'mph',\n  'newton',\n  'newtons',\n  'oz',\n  'pa',\n  // 'pound',\n  // 'pounds',\n  'pt',\n  'px',\n  'qt',\n  'tablespoon',\n  'tablespoons',\n  'tb',\n  'tbl',\n  'tbsp',\n  'teaspoon',\n  'teaspoons',\n  'tsp',\n  'yard',\n  'yards',\n  'yd',\n]"
  },
  {
    "path": "data/lexicon/verbs/infinitives.js",
    "content": "export default [\n  'abandon',\n  'abet',\n  'abide',\n  'abolish',\n  'abort',\n  'abound',\n  'abscond',\n  'absolve',\n  'accept',\n  'acclimate',\n  'accommodate',\n  'accompany',\n  'accomplish',\n  'accost',\n  'accrue',\n  'accuse',\n  'accustom',\n  'achieve',\n  'acknowledge',\n  'acquiesce',\n  'acquire',\n  'activate',\n  'adapt',\n  'adjourn',\n  'adjust',\n  'administer',\n  'admit',\n  'adopt',\n  'adorn',\n  'adsorb',\n  'affix',\n  'afford',\n  'agree',\n  'align',\n  'allege',\n  'allot',\n  'allow',\n  'allude',\n  'amalgamate',\n  'amaze',\n  'amuse',\n  'analyse',\n  'animate',\n  'anneal',\n  'announce',\n  'annoy',\n  'annul',\n  'anticipate',\n  'appear',\n  'appease',\n  'apply',\n  'appoint',\n  'appraise',\n  'approve',\n  'argue',\n  'arise',\n  'arouse',\n  'arrange',\n  'arrive',\n  'aspire',\n  'assail',\n  'assemble',\n  'assert',\n  'assess',\n  'assign',\n  'assure',\n  'astonish',\n  'attach',\n  'attest',\n  'attract',\n  'augment',\n  'automate',\n  'avert',\n  'avoid',\n  'await',\n  'awaken',\n  'babysit',\n  'backfire',\n  'baffle',\n  'bathe',\n  'be',\n  'become',\n  'beg',\n  'begin',\n  'beguile',\n  'behave',\n  'behead',\n  'behold',\n  'believe',\n  'belittle',\n  'bequeath',\n  'bestow',\n  'betray',\n  'bewilder',\n  'bide',\n  'bleed',\n  'blow',\n  'boil',\n  'bolster',\n  'bombard',\n  'borrow',\n  'bother',\n  'brake',\n  'breastfeed',\n  'breathe',\n  'bring',\n  'broaden',\n  'build',\n  'burst',\n  'bury',\n  'buy',\n  'cancel',\n  'careen',\n  'cater',\n  'caulk',\n  'cease',\n  'cherish',\n  'chew',\n  'chirp',\n  'choose',\n  'chop',\n  'circumvent',\n  'cite',\n  'cleanse',\n  'cling',\n  'coalesce',\n  'coerce',\n  'coexist',\n  'cohabit',\n  'coincide',\n  'collect',\n  'collide',\n  'collude',\n  'combust',\n  'come',\n  'commence',\n  'compel',\n  'compete',\n  'compile',\n  'comply',\n  'conceal',\n  'conceive',\n  'conclude',\n  'concur',\n  'condemn',\n  'condense',\n  'condone',\n  'confess',\n  'confide',\n  'configure',\n  'confirm',\n  'conform',\n  'confront',\n  'confuse',\n  'conjure',\n  'connote',\n  'conquer',\n  'conserve',\n  'consider',\n  'consist',\n  'consolidate',\n  'conspire',\n  'constitute',\n  'consult',\n  'contain',\n  'continue',\n  'contribute',\n  'convene',\n  'converge',\n  'convey',\n  'convince',\n  'corrode',\n  'crave',\n  'create',\n  'cripple',\n  'crumble',\n  'curtail',\n  'dampen',\n  'darken',\n  'daunt',\n  'deafen',\n  'debark',\n  'debrief',\n  'debug',\n  'debunk',\n  'deceive',\n  'decide',\n  'decimate',\n  'decipher',\n  'declare',\n  'decode',\n  'decommission',\n  'decompose',\n  'decouple',\n  'decree',\n  'decry',\n  'decrypt',\n  'deduct',\n  'deepen',\n  'deface',\n  'define',\n  'deform',\n  'defraud',\n  'defy',\n  'delimit',\n  'deliver',\n  'demean',\n  'demolish',\n  'denote',\n  'denounce',\n  'deny',\n  'depart',\n  'depict',\n  'deplore',\n  'deploy',\n  'deport',\n  'derail',\n  'derive',\n  'desist',\n  'detach',\n  'develop',\n  'devolve',\n  'diagnose',\n  'die',\n  'differ',\n  'dig',\n  'diminish',\n  'dine',\n  'disable',\n  'disarm',\n  'disband',\n  'disburse',\n  'discard',\n  'discern',\n  'disclaim',\n  'disclose',\n  'discourage',\n  'discover',\n  'discuss',\n  'dislodge',\n  'dismantle',\n  'dispense',\n  'disperse',\n  'displace',\n  'displease',\n  'dispose',\n  'disprove',\n  'disrupt',\n  'dissolve',\n  'dissuade',\n  'distil',\n  'distill',\n  'distinguish',\n  'distort',\n  'disturb',\n  'diverge',\n  'divert',\n  'divest',\n  'divulge',\n  'do',\n  'draw',\n  'dredge',\n  'drown',\n  'dwindle',\n  'earmark',\n  'earn',\n  'eat',\n  'edit',\n  'elapse',\n  'elect',\n  'elucidate',\n  'elude',\n  'embalm',\n  'embark',\n  'embody',\n  'embrace',\n  'embroider',\n  'embroil',\n  'emerge',\n  'emphasize',\n  'empower',\n  'enable',\n  'enact',\n  'encircle',\n  'enclose',\n  'encourage',\n  'encroach',\n  'encrypt',\n  'encumber',\n  'endanger',\n  'endorse',\n  'endow',\n  'endure',\n  'enforce',\n  'engage',\n  'engender',\n  'engrave',\n  'engulf',\n  'enhance',\n  'enjoy',\n  'enlarge',\n  'enlist',\n  'enquire',\n  'enrich',\n  'enrol',\n  'enroll',\n  'ensue',\n  'ensure',\n  'enter',\n  'entice',\n  'entrain',\n  'entrench',\n  'entrust',\n  'envelop',\n  'envisage',\n  'envision',\n  'equip',\n  'erase',\n  'erupt',\n  'eschew',\n  'espouse',\n  'establish',\n  'etch',\n  'evaluate',\n  'evoke',\n  'evolve',\n  'exalt',\n  'examine',\n  'exceed',\n  'exclaim',\n  'exclude',\n  'exert',\n  'exhale',\n  'exhort',\n  'exhume',\n  'exist',\n  'exit',\n  'expect',\n  'expedite',\n  'expel',\n  'expire',\n  'explain',\n  'exploit',\n  'explore',\n  'expose',\n  'expunge',\n  'extinguish',\n  'extol',\n  'exude',\n  'falter',\n  'fasten',\n  'ferment',\n  'find',\n  'flatter',\n  'flee',\n  'fling',\n  'forbid',\n  'foreclose',\n  'forego',\n  'foreshadow',\n  'forewarn',\n  'forfeit',\n  'forge',\n  'forget',\n  'forgive',\n  'forsake',\n  'forsee',\n  'freeze',\n  'freshen',\n  'frighten',\n  'frolic',\n  'fulfil',\n  'fundraise',\n  'furnish',\n  'gather',\n  'get',\n  'give',\n  'glean',\n  'go',\n  'govern',\n  'grab',\n  'grapple',\n  'graze',\n  'greet',\n  'grow',\n  'hamper',\n  'hang',\n  'happen',\n  'harangue',\n  'harass',\n  'hasten',\n  'have',\n  'hear',\n  'heighten',\n  'hide',\n  'hijack',\n  'hinder',\n  'hoist',\n  'hurt',\n  'ignore',\n  'imbue',\n  'immerse',\n  'impale',\n  'impart',\n  'imperil',\n  'impinge',\n  'imply',\n  'import',\n  'impose',\n  'impoverish',\n  'impress',\n  'imprison',\n  'improve',\n  'incite',\n  'include',\n  'indicate',\n  'indulge',\n  'infest',\n  'inform',\n  'infuse',\n  'ingest',\n  'inhabit',\n  'inhibit',\n  'initiate',\n  'injure',\n  'inquire',\n  'insist',\n  'inspire',\n  'install',\n  'instil',\n  'instruct',\n  'insure',\n  'interact',\n  'intern',\n  'interpret',\n  'interrupt',\n  'intimidate',\n  'intoxicate',\n  'introduce',\n  'intrude',\n  'inundate',\n  'invade',\n  'invent',\n  'invert',\n  'invest',\n  'invoke',\n  'involve',\n  'irk',\n  'join',\n  'juggle',\n  'juxtapose',\n  'keep',\n  'kidnap',\n  'kneel',\n  'know',\n  'languish',\n  'launder',\n  'learn',\n  'leave',\n  'lend',\n  'lengthen',\n  'lessen',\n  'like',\n  'linger',\n  'liquefy',\n  'liquidate',\n  'liven',\n  'lose',\n  'lurk',\n  'maim',\n  'maintain',\n  'make',\n  'manage',\n  'meet',\n  'mimic',\n  'mimick',\n  'mince',\n  'mingle',\n  'minus',\n  'misplace',\n  'molest',\n  'mourn',\n  'mow',\n  'multiply',\n  'nourish',\n  'obey',\n  'observe',\n  'obsess',\n  'obtain',\n  'occupy',\n  'occur',\n  'omit',\n  'operate',\n  'opine',\n  'oppose',\n  'outgrow',\n  'outnumber',\n  'outpace',\n  'overlap',\n  'oversee',\n  'overshadow',\n  'overturn',\n  'overuse',\n  'overwhelm',\n  'owe',\n  'pamper',\n  'paralyse',\n  'participate',\n  'patrol',\n  'pave',\n  'perceive',\n  'perform',\n  'perish',\n  'permeate',\n  'perplex',\n  'persevere',\n  'persist',\n  'persuade',\n  'pervade',\n  'pinpoint',\n  'plummet',\n  'poach',\n  'pollute',\n  'portray',\n  'possess',\n  'preach',\n  'preclude',\n  'predetermine',\n  'predict',\n  'prefer',\n  'preoccupy',\n  'presuppose',\n  'prevail',\n  'prevent',\n  'proclaim',\n  'procure',\n  'prod',\n  'profess',\n  'prohibit',\n  'promote',\n  'pronounce',\n  'propose',\n  'prosper',\n  'protrude',\n  'prove',\n  'provide',\n  'provoke',\n  'publish',\n  'puke',\n  'punish',\n  'purport',\n  'pursuant',\n  'pursue',\n  'put',\n  'quash',\n  'quench',\n  'quit',\n  'quote',\n  'rattle',\n  'ravish',\n  'react',\n  'read',\n  'realise',\n  'realize',\n  'reap',\n  'reboot',\n  'rebuff',\n  'receive',\n  'reckon',\n  'reclaim',\n  'recognize',\n  'reconcile',\n  'recoup',\n  'recover',\n  'recycle',\n  'redact',\n  'reduce',\n  'refinance',\n  'refine',\n  'reflect',\n  'refocus',\n  'refract',\n  'refresh',\n  'refuel',\n  'refurbish',\n  'regroup',\n  'rehearse',\n  'reheat',\n  'reimburse',\n  'reinforce',\n  'rejoice',\n  'relate',\n  'relent',\n  'relieve',\n  'relinquish',\n  'relive',\n  'reload',\n  'rely',\n  'remain',\n  'remember',\n  'remove',\n  'render',\n  'renew',\n  'renounce',\n  'repel',\n  'rephrase',\n  'replace',\n  'replenish',\n  'replicate',\n  'represent',\n  'require',\n  'resemble',\n  'resent',\n  'reside',\n  'resign',\n  'resist',\n  'respond',\n  'restock',\n  'restrain',\n  'restrict',\n  'restructure',\n  'resurface',\n  'retire',\n  'retrieve',\n  'retrofit',\n  'reup', //'re-up'\n  'revamp',\n  'revel',\n  'revere',\n  'revert',\n  'revisit',\n  'revive',\n  'revoke',\n  'revolve',\n  'rid',\n  'ripen',\n  'roam',\n  'rot',\n  'rout',\n  'ruin',\n  'sadden',\n  'satisfy',\n  'say',\n  'scavenge',\n  'sculpt',\n  'see',\n  'seek',\n  'seem',\n  'sell',\n  'send',\n  'sequester',\n  'sever',\n  'sew',\n  'shake',\n  'sharpen',\n  'shatter',\n  'shine',\n  'shoot',\n  'shorten',\n  'shrink',\n  'shrivel',\n  'shun',\n  'sift',\n  'sing',\n  'sit',\n  'slam',\n  'slay',\n  'slide',\n  'smuggle',\n  'snatch',\n  'sneak',\n  'sniff',\n  'solicit',\n  'solve',\n  'soothe',\n  'sow',\n  'spawn',\n  'speak',\n  'spend',\n  'spit',\n  'splay',\n  'spoil',\n  'spoof',\n  'spring',\n  'squander',\n  'squish',\n  'stab',\n  'stagger',\n  'startle',\n  'starve',\n  'steal',\n  'stiffen',\n  'stifle',\n  'sting',\n  'strangle',\n  'strengthen',\n  'strew',\n  'strive',\n  'sublimate',\n  'submerge',\n  'submit',\n  'subside',\n  'subsist',\n  'subvert',\n  'succeed',\n  'succumb',\n  'suffer',\n  'suffice',\n  'suggest',\n  'summarise',\n  'summon',\n  'suppose',\n  'suppress',\n  'surmount',\n  'surpass',\n  'survive',\n  'swallow',\n  'sweep',\n  'sweeten',\n  'swim',\n  'tackle',\n  'tailor',\n  'take part',\n  'take',\n  'tamper',\n  'tarnish',\n  'teach',\n  'tease',\n  'tempt',\n  'thank',\n  'think',\n  'threaten',\n  'thrive',\n  'thwart',\n  'topple',\n  'toughen',\n  'traffick',\n  'trample',\n  'transact',\n  'transform',\n  'transpire',\n  'transport',\n  'tremble',\n  'tumble',\n  'uncover',\n  'undercut',\n  'undergo',\n  'understand',\n  'undervalue',\n  'underwhelm',\n  'undo',\n  'unearth',\n  'unfounded',\n  'unleash',\n  'unlock',\n  'unplug',\n  'unravel',\n  'untie',\n  'unveil',\n  'uphold',\n  'uplift',\n  'validate',\n  'vanish',\n  'vary',\n  'vie',\n  'waive',\n  'wake',\n  'wander',\n  'want',\n  'warn',\n  'weave',\n  'wed',\n  'weep',\n  'widen',\n  'wield',\n  'withdraw',\n  'wither',\n  'worsen',\n  'wreak',\n  'wrestle',\n  'wring',\n  'write',\n  'giggle',\n  'sway',\n  'constrain',\n  'abduct',\n  'attain',\n  'pound',\n  'consume',\n  'befriend',\n]\n"
  },
  {
    "path": "data/lexicon/verbs/modals.js",
    "content": "export default [\n  'can',\n  'could',\n  'lets', //arguable\n  // 'may',\n  'might',\n  'must',\n  'ought to',\n  'ought',\n  'oughta',\n  'shall',\n  'shant',\n  'should',\n  'will',\n  'would',\n]\n"
  },
  {
    "path": "data/lexicon/verbs/participles.js",
    "content": "export default [\n  // -- participle forms--\n  'arisen',\n  'awaken',\n  'awoken',\n  'beaten',\n  'been',\n  'begun',\n  'bitten',\n  'blown',\n  'broken',\n  'built',\n  'chosen',\n  'clung',\n  // 'done',\n  'dove',\n  'drawn',\n  'dreamt',\n  'driven',\n  // 'drunk',\n  'eaten',\n  'fallen',\n  'flown',\n  'forbidden',\n  'forgiven',\n  'forgotten',\n  'forsaken',\n  'forseen',\n  'frozen',\n  'given',\n  'gone',\n  'gotten',\n  'grown',\n  'hasten',\n  'hidden',\n  'known',\n  'outdone',\n  'outgrown',\n  'overdone',\n  'overseen',\n  'overtaken',\n  'overthrown',\n  'proven',\n  'rewritten',\n  'ridden',\n  'risen',\n  'rung',\n  'seen',\n  'sewn',\n  'shaken',\n  'shone',\n  'shown',\n  'shrunk',\n  'slain',\n  'sought',\n  'sown',\n  'spilt',\n  'spoken',\n  'stolen',\n  'strewn',\n  'sung',\n  'sunk',\n  'sworn',\n  'swum',\n  'taken',\n  'thrown',\n  'torn',\n  'undergone',\n  'undone',\n  'uprisen',\n  'waken',\n  'withdrawn',\n  'woken',\n  'worn',\n  'woven',\n  'written',\n  'wrung',\n]\n"
  },
  {
    "path": "data/lexicon/verbs/phrasals.js",
    "content": "// phrasal verbs are two words that really mean one verb.\n// 'beef up' is one verb, and not some direction of beefing.\n// this seems like an inefficient way to store it, but the trie compresses by prefix\n// the first-words are also conjugated as infinitives, so mind that\n// by @spencermountain, 2015 mit\n// many credits to http://www.allmyphrasalverbs.com/\n\nexport default [\n  'act out',\n  'air out',\n  'act up',\n  'add down',\n  'add off',\n  'add on',\n  'add up',\n  'ask around',\n  'ask out',\n  'auction off',\n  'back away',\n  'back down',\n  'back out',\n  'back off',\n  'back in',\n  'back up',\n  'bail out',\n  'bang in',\n  'bang out',\n  'bank on',\n  'bargain on',\n  'barge in',\n  'barge out',\n  'bash in',\n  'bash out',\n  'be off',\n  'be onto',\n  'belt out',\n  'bear out',\n  'bear down',\n  'beat down',\n  'beat in',\n  'beat off',\n  'beat out',\n  'beat up',\n  'beef up',\n  'bend down',\n  'bend over',\n  'bend up',\n  'bite off',\n  'black out',\n  'blank out',\n  'blast off',\n  'bleed out',\n  'block in',\n  'block off',\n  'block out',\n  'blow away',\n  'blow back',\n  'blow down',\n  'blow out',\n  'blow up',\n  'blurt out',\n  'board up',\n  'bore down',\n  'bog down',\n  'bog up',\n  'boil down',\n  'boil up',\n  'bone up',\n  'book in',\n  'book out',\n  'boot up',\n  'boss around',\n  'bottle down',\n  'bottle up',\n  'bounce away',\n  'bounce back',\n  'box in',\n  'box out',\n  'branch out',\n  'break down',\n  'break in',\n  'break out',\n  'break up',\n  'brighten up',\n  'bring about',\n  'bring along',\n  'bring around',\n  'bring away',\n  'bring back',\n  'bring down',\n  'bring forth',\n  'bring in',\n  'bring out',\n  'bring up',\n  'bring on',\n  'bring under',\n  'brush off',\n  'brush up',\n  'bubble over',\n  'buckle down',\n  'buckle up',\n  'build up',\n  'bulk down',\n  'bulk up',\n  'bundle down',\n  'bundle up',\n  'burn in',\n  'burn off',\n  'burn out',\n  'burst in',\n  'burst out',\n  'bust down',\n  'bust in',\n  'bust out',\n  'bust up',\n  'butt in',\n  'butt out',\n  'buy out',\n  'buy up',\n  'buzz off',\n  'call around',\n  'call away',\n  'call back',\n  'call down',\n  'call off',\n  'call on',\n  'call up',\n  'call out',\n  'calm down',\n  'cancel out',\n  'carry away',\n  'carry off',\n  'carry on',\n  'carry out',\n  'carve down',\n  'carve in',\n  'carve out',\n  'carve up',\n  'cash in',\n  'cash out',\n  'cast doubt',\n  'cast off',\n  'catch off',\n  'catch on',\n  'catch up',\n  'cave in',\n  'check in',\n  'check out',\n  'cheer on',\n  'cheer up',\n  'chat up',\n  'chew up',\n  'chew out',\n  'chill out',\n  'chip in',\n  'clean down',\n  'clean up',\n  'clear up',\n  'clear out',\n  'close up',\n  'close off',\n  'close out',\n  'close in',\n  'come apart',\n  'come around',\n  'come away',\n  'come back',\n  'come by',\n  'come forth',\n  'come forward',\n  'come in',\n  'come off',\n  'come up',\n  'come out',\n  'come over',\n  'come together',\n  'come through',\n  'come under',\n  'come true',\n  'cook down',\n  'cook up',\n  'cool down',\n  'cool off',\n  'count off',\n  'count on',\n  'crack on',\n  'creep by',\n  'creep down',\n  'creep in',\n  'creep on',\n  'creep out',\n  'creep up',\n  'cross in',\n  'crowd out',\n  'cross out',\n  'cry out',\n  'cut away',\n  'cut back',\n  'cut down',\n  'cut out',\n  'cut up',\n  'cut off',\n  'die down',\n  'dam up',\n  'dole out',\n  'do over',\n  'double down',\n  'double up',\n  'drum up',\n  'drag on',\n  'draw on',\n  'dress down',\n  'dress up',\n  'drop away',\n  'drop back',\n  'drop by',\n  'drop in',\n  'drop off',\n  'drop out',\n  'eat in',\n  'eat out',\n  'eat up',\n  'edge out',\n  'end off',\n  'end up',\n  'eye up',\n  'face down',\n  'face off',\n  'face up',\n  'fall apart',\n  'fall back',\n  'fall behind',\n  'fall down',\n  'fall in',\n  'fall off',\n  'fall out',\n  'fall over',\n  'fall through',\n  'fall short',\n  'fall victim',\n  'farm out',\n  'fatten up',\n  'feed off',\n  'feed on',\n  'feel up',\n  'fence in',\n  'fence out',\n  'fend for',\n  'fend off',\n  'fess up',\n  'fight back',\n  'figure out',\n  'file away',\n  'file for',\n  'file in',\n  'file out',\n  'fill down',\n  'fill in',\n  'fill out',\n  'fill up',\n  'find out',\n  'finish up',\n  'fire away',\n  'fire back',\n  'fire up',\n  'firm up',\n  'fish out',\n  'fish up',\n  'fizzle out',\n  'flag down',\n  'flag up',\n  'flake out',\n  'flame out',\n  'flame up',\n  'flare out',\n  'flare up',\n  'flatten down',\n  'flesh out',\n  'flip out',\n  'fork over',\n  'fold down',\n  'fold up',\n  'fog up',\n  'follow up',\n  'fool about',\n  'fool around',\n  'fool with',\n  'free up',\n  'freeze up',\n  'freshen up',\n  'frighten away',\n  'frighten off',\n  'frown on',\n  'fry up',\n  'fuck up',\n  'fuck around',\n  'fuel down',\n  'fuel up',\n  'gad about',\n  'gang up',\n  'gear down',\n  'gear up',\n  'geek out',\n  'get across',\n  'get ahead',\n  'get along',\n  'get around',\n  'get at',\n  'get away',\n  'get back',\n  'get by',\n  'get down',\n  'get in',\n  'get off',\n  'get on',\n  'get out',\n  'get over',\n  'get round',\n  'get up',\n  'give away',\n  'give back',\n  'give birth',\n  'give down',\n  'give in',\n  'give off',\n  'give on',\n  'give out',\n  'give rise',\n  'give up',\n  'give way',\n  'gloss over',\n  'go about',\n  'go after',\n  'go ahead',\n  'go away',\n  'go back',\n  'go by',\n  'go it',\n  'go off',\n  'go on',\n  'go over',\n  'go round',\n  'go through',\n  'go under',\n  'goof off',\n  'goof up',\n  'grind down',\n  'grind off',\n  'grind on',\n  'grind up',\n  'grow down',\n  'grow in',\n  'grow out',\n  'grow up',\n  'gun for',\n  'hack up',\n  'hash out',\n  'ham up',\n  'hand down',\n  'hand in',\n  'hand out',\n  'hand over',\n  'hang down',\n  'hang in',\n  'hang out',\n  'hang up',\n  'hang on',\n  'hanker for',\n  'have at',\n  'have it',\n  'have to',\n  'haze over',\n  'head in',\n  'head off',\n  'head on',\n  'head out',\n  'head over',\n  'head under',\n  'head for',\n  'heal over',\n  'hear from',\n  'hear of',\n  'heat up',\n  'help out',\n  'hide away',\n  'hide out',\n  'hit back',\n  'hit on',\n  'hit up',\n  'hold back',\n  'hold down',\n  'hold dear',\n  'hold fast',\n  'hold off',\n  'hold on',\n  'hold out',\n  'hold over',\n  'hold up',\n  'hole up',\n  'hone in',\n  'horse around',\n  'hunker down',\n  'hunt around',\n  'hunt down',\n  'hurry up',\n  'hush down',\n  'hush up',\n  'iron out',\n  'jack in',\n  'jack off',\n  'jack out',\n  'jazz up',\n  'joke around',\n  'jot down',\n  'juice up',\n  'jump in',\n  'keel over',\n  'keep away',\n  'keep back',\n  'keep down',\n  'keep from',\n  'keep in',\n  'keep off',\n  'keep on',\n  'keep out',\n  'keep to',\n  'keep up',\n  'key in',\n  'key up',\n  'kick off',\n  'kick out',\n  'kick up',\n  'knock down',\n  'knock off',\n  'knock out',\n  'knock up',\n  'lace up',\n  'lap up',\n  'lash into',\n  'lash out',\n  'latch on',\n  'laugh off',\n  'lay off',\n  'lay on',\n  'lay down',\n  'lean in',\n  'leave in',\n  'leave open',\n  'leave out',\n  'let down',\n  'let go',\n  'let in',\n  'let out',\n  'let up',\n  'level off',\n  'level out',\n  'lie around',\n  'lie down',\n  'lie in',\n  'light up',\n  'lighten up',\n  'line up',\n  'link up',\n  'listen out',\n  'listen up',\n  'live off',\n  'live up',\n  'live out',\n  'load down',\n  'load up',\n  'lock down',\n  'lock in',\n  'lock out',\n  'lock up',\n  'log in',\n  'log off',\n  'log on',\n  'log out',\n  'look after',\n  'look back',\n  'look down',\n  'look forward',\n  'look into',\n  'look over',\n  'look out',\n  'look under',\n  'look up',\n  'loosen up',\n  'lose out',\n  'luck out',\n  'lust over',\n  'make do',\n  'make off',\n  'make out',\n  'make up',\n  'make sure',\n  'make fun',\n  'man down',\n  'man up',\n  'mark down',\n  'mark up',\n  'marry off',\n  'mash up',\n  'max out',\n  'measure up',\n  'melt down',\n  'melt up',\n  'mess about',\n  'mess around',\n  'mess up',\n  'meet up',\n  'miss out',\n  'mix up',\n  'mock up',\n  'monkey with',\n  'mop down',\n  'mop up',\n  'mouth off',\n  'move along',\n  'move away',\n  'move down',\n  'move in',\n  'move out',\n  'move up',\n  'move on',\n  'muddle up',\n  'mull over',\n  'nail down',\n  'narrow down',\n  'nerd out',\n  'nod off',\n  'note down',\n  'open up',\n  'opt in',\n  'opt out',\n  'own up',\n  'pack down',\n  'pack in',\n  'pack out',\n  'pack up',\n  'pair down',\n  'pair off',\n  'pair up',\n  'pan out',\n  'pass away',\n  'pass back',\n  'pass in',\n  'pass off',\n  'pass on',\n  'pass out',\n  'pat down',\n  'patch up',\n  'pay back',\n  'pay off',\n  'peel in',\n  'peel off',\n  'peel out',\n  'pencil in',\n  'pick off',\n  'pick on',\n  'pick out',\n  'pick up',\n  'pig out',\n  'pile on',\n  'pile up',\n  'pin down',\n  'pin up',\n  'pipe down',\n  'pipe up',\n  'play around',\n  'play out',\n  'place under',\n  'plug in',\n  'plump down',\n  'plump up',\n  'point out',\n  'pop down',\n  'pop off',\n  'pop on',\n  'pop up',\n  'pop in',\n  'pore over',\n  'pour down',\n  'power down',\n  'power off',\n  'power on',\n  'power up',\n  'prattle on',\n  'press ahead',\n  'press on',\n  'print out',\n  'prop up',\n  'psych out',\n  'psych up',\n  'punch out',\n  'pull apart',\n  'pull down',\n  'pull in',\n  'pull out',\n  'pull together',\n  'pull up',\n  'pull over',\n  'put apart',\n  'put away',\n  'put back',\n  'put down',\n  'put in',\n  'put off',\n  'put on',\n  'put out',\n  'put together',\n  'put up',\n  'quiet down',\n  'rack up',\n  'rat out',\n  'reach in',\n  'reach out',\n  'read off',\n  'read out',\n  'read over',\n  'read up',\n  'reel off',\n  'rein in',\n  'rent out',\n  'rise up',\n  'ring in',\n  'ring off',\n  'ring out',\n  'rip off',\n  'rip open',\n  'rope off',\n  'roll around',\n  'roll in',\n  'roll out',\n  'roll up',\n  'root about',\n  'root for',\n  'root out',\n  'round out',\n  'rough up',\n  'round off',\n  'rub down',\n  'rub in',\n  'rub out',\n  'rub up',\n  'rule out',\n  'run across',\n  'run away',\n  'run back',\n  'run down',\n  'run in',\n  'run into',\n  'run out',\n  'run over',\n  'run through',\n  'run under',\n  'run up',\n  'run around',\n  'rustle up',\n  'sail off',\n  'save up',\n  'scale down',\n  'scale up',\n  'scout out',\n  'scrape down',\n  'scrape up',\n  'screw off',\n  'screw in',\n  'screw out',\n  'see off',\n  'see out',\n  'see to',\n  'sell off',\n  'sell out',\n  'send away',\n  'send back',\n  'send down',\n  'send in',\n  'send off',\n  'send on',\n  'send out',\n  'send over',\n  'send up',\n  'set down',\n  'set in',\n  'set out',\n  'set up',\n  'set forth',\n  'set upon',\n  'set foot',\n  'settle down',\n  'settle in',\n  'settle out',\n  'settle up',\n  'serve up',\n  'shack up',\n  'shade in',\n  'shake down',\n  'shake up',\n  'shave off',\n  'shoot away',\n  'shoot back',\n  'shoot for',\n  'shoot off',\n  'shoot out',\n  'shout out',\n  'show down',\n  'show off',\n  'show on',\n  'show up',\n  'shut in',\n  'shut out',\n  'shut up',\n  'shut down',\n  'side with',\n  'sign in',\n  'sign out',\n  'sign up',\n  'sink in',\n  'sing along',\n  'single out',\n  'sit down',\n  'sit in',\n  'sit out',\n  'sit up',\n  'size up',\n  'sleep in',\n  'sleep off',\n  'sleep over',\n  'slice off',\n  'slice up',\n  'slip up',\n  'slip on',\n  'slip out',\n  'slow down',\n  'slow up',\n  'smash down',\n  'smash in',\n  'smash out',\n  'smash up',\n  'smoke out',\n  'snuggle up',\n  'snap off',\n  'snap on',\n  'snap up',\n  'snow in',\n  'snow out',\n  'sober up',\n  'soak up',\n  'sort out',\n  'sound like',\n  'spark up',\n  'speed up',\n  'speed down',\n  'speak up',\n  'speak out',\n  'spell out',\n  'spill out',\n  'spill over',\n  'spin up',\n  'spice up',\n  'splash out',\n  'split off',\n  'split up',\n  'spread out',\n  'spring on',\n  'spruce up',\n  'spur on',\n  'square down',\n  'square off',\n  'square up',\n  'stack up',\n  'stamp out',\n  'stand back',\n  'stand down',\n  'stand up',\n  'start out',\n  'start up',\n  'start off',\n  'stare down',\n  'stave off',\n  'stay up',\n  'stay in',\n  'step up',\n  'step out',\n  'stink up',\n  'stir up',\n  'stitch up',\n  'stop by',\n  'stop in',\n  'stop off',\n  'storm off',\n  'storm out',\n  'stretch out',\n  'straighten out',\n  'straighten up',\n  'strike down',\n  'strike in',\n  'strike off',\n  'strike out',\n  'strike up',\n  'string up',\n  'string along',\n  'stick up',\n  'study up',\n  'suck in',\n  'suck off',\n  'suck out',\n  'suck up',\n  'suit up',\n  'sum up',\n  'suss out',\n  'swear by',\n  'swing by',\n  'switch away',\n  'switch back',\n  'switch off',\n  'switch on',\n  'tack on',\n  'take aback',\n  'take after',\n  'take apart',\n  'take away',\n  'take back',\n  'take down',\n  'take leave',\n  'take in',\n  'take off',\n  'take on',\n  'take out',\n  'take up',\n  'take over',\n  'talk over',\n  'talk shit',\n  'talk under',\n  'team up',\n  'tear down',\n  'tear off',\n  'tear up',\n  'tee off',\n  'tee up',\n  'tell off',\n  'tell on',\n  'think back',\n  'think over',\n  'think up',\n  'throw away',\n  'throw back',\n  'throw up',\n  'throw in',\n  'tick by',\n  'tick off',\n  'tide over',\n  'tidy up',\n  'tie away',\n  'tie back',\n  'tie down',\n  'tie in',\n  'tie up',\n  'tighten down',\n  'tighten up',\n  'time out',\n  'tip off',\n  'tip over',\n  'tire out',\n  'tone down',\n  'top down',\n  'top off',\n  'top out',\n  'top up',\n  'toss up',\n  'track down',\n  'trade in',\n  'trade out',\n  'trade up',\n  'trickle down',\n  'trip out',\n  'trip up',\n  'trot out',\n  'try in',\n  'try off',\n  'try on',\n  'try out',\n  'tuck in',\n  'turn down',\n  'turn in',\n  'turn off',\n  'turn on',\n  'turn out',\n  'turn up',\n  'type in',\n  'type out',\n  'type up',\n  'urge on',\n  'use up',\n  'usher in',\n  'vacuum up',\n  'wait off',\n  'wait on',\n  'wait up',\n  'wake up',\n  'walk away',\n  'walk in',\n  'walk off',\n  'walk out',\n  'warm in',\n  'warm out',\n  'warm up',\n  'wash away',\n  'wash down',\n  'wash out',\n  'wash up',\n  'watch out',\n  'wave in',\n  'wave out',\n  'wean in',\n  'wean out',\n  'wear down',\n  'wear in',\n  'wear off',\n  'wear on',\n  'wear out',\n  'weigh in',\n  'weigh up',\n  'weird out',\n  'went down',\n  'went up',\n  'whack off',\n  'wheel in',\n  'wheel out',\n  'whip out',\n  'whip up',\n  'wimp out',\n  'wind down',\n  'wind up',\n  'wipe out',\n  'wire up',\n  'wise up',\n  'work in',\n  'work off',\n  'work out',\n  'work up',\n  'write off',\n  'write up',\n  'yammer on',\n  'zero in',\n  'zero out',\n  'zip by',\n  'zip up',\n  'zip over',\n  'zone out',\n  'zonk out',\n  'grab hold',\n]\n"
  },
  {
    "path": "data/lexicon/verbs/verbs.js",
    "content": "//verbs we shouldn't conjugate, for whatever reason\nexport default [\n  'has',\n  'keep tabs',\n  'born',\n  'cannot',\n  'gonna',\n  'msg',\n  'make sure',\n\n]\n"
  },
  {
    "path": "data/pairs/AdjToNoun.js",
    "content": "export default [\n  ['abject', 'abjection'],\n  ['abstemious', 'abstemiousness'],\n  ['abundant', 'abundance'],\n  ['accomplished', 'accomplishment'],\n  ['accurate', 'accuracy'],\n  ['active', 'activity'],\n  ['adamant', 'adamance'],\n  ['adaptable', 'adaptability'],\n  ['addictive', 'addiction'],\n  ['admirable', 'admiration'],\n  ['adventurous', 'adventurousness'],\n  ['affectionate', 'affection'],\n  ['aggressive', 'aggression'],\n  ['agile', 'agility'],\n  ['agitated', 'agitation'],\n  ['alert', 'alertness'],\n  ['aloof', 'aloofness'],\n  ['amazed', 'amazement'],\n  ['ambitious', 'ambition'],\n  ['amiable', 'amiability'],\n  ['amicable', 'amicability'],\n  ['amorous', 'amorousness'],\n  ['ample', 'ampleness'],\n  ['amused', 'amusement'],\n  ['amusing', 'amusement'],\n  ['ancient', 'antiquity'],\n  ['apprehensive', 'apprehensiveness'],\n  ['ardent', 'ardor'],\n  ['argumentative', 'argumentativeness'],\n  ['articulate', 'articulacy'],\n  ['artistic', 'art'],\n  ['assertive', 'assertiveness'],\n  ['astute', 'astuteness'],\n  ['attractive', 'attractiveness'],\n  ['audacious', 'audacity'],\n  ['austere', 'austerity'],\n  ['authentic', 'authenticity'],\n  ['automatic', 'automation'],\n  ['bad', 'badness'],\n  ['beautiful', 'beauty'],\n  ['benevolent', 'benevolence'],\n  ['bold', 'boldness'],\n  ['boring', 'boredom'],\n  ['brave', 'bravery'],\n  ['bright', 'brightness'],\n  ['busy', 'business'],\n  ['calm', 'calmness'],\n  ['cantankerous', 'cantankerousness'],\n  ['careful', 'carefulness'],\n  ['caring', 'care'],\n  ['cautious', 'caution'],\n  ['certain', 'certainty'],\n  ['charismatic', 'charisma'],\n  ['cheap', 'cheapness'],\n  ['cheerful', 'cheerfulness'],\n  ['circumspect', 'circumspection'],\n  ['clean', 'cleanliness'],\n  ['clear', 'clarity'],\n  ['clever', 'cleverness'],\n  ['cold', 'coldness'],\n  ['comfortable', 'comfort'],\n  ['compassionate', 'compassion'],\n  ['compatible', 'compatibility'],\n  ['competent', 'competency'],\n  ['concise', 'conciseness'],\n  ['condescending', 'condescension'],\n  ['confident', 'confidence'],\n  ['congenial', 'congeniality'],\n  ['conscientious', 'conscientiousness'],\n  ['contemptuous', 'contemptuousness'],\n  ['cooperative', 'cooperation'],\n  ['courageous', 'courage'],\n  ['courteous', 'courtesy'],\n  ['coy', 'coyness'],\n  ['creative', 'creativity'],\n  ['credible', 'credibility'],\n  ['curious', 'curiosity'],\n  ['dark', 'darkness'],\n  ['decisive', 'decisiveness'],\n  ['dedicated', 'dedication'],\n  ['deep', 'depth'],\n  ['deliberate', 'deliberation'],\n  ['delicate', 'delicacy'],\n  ['delightful', 'delight'],\n  ['dependable', 'dependability'],\n  ['desperate', 'desperation'],\n  ['determined', 'determination'],\n  ['devoted', 'devotion'],\n  ['diffident', 'diffidence'],\n  ['diligent', 'diligence'],\n  ['dirty', 'dirtiness'],\n  ['disciplined', 'discipline'],\n  ['discreet', 'discretion'],\n  ['doleful', 'dolefulness'],\n  ['dramatic', 'drama'],\n  ['dull', 'dullness'],\n  ['dynamic', 'dynamism'],\n  ['eager', 'eagerness'],\n  ['educated', 'education'],\n  ['efficient', 'efficiency'],\n  ['elegant', 'elegance'],\n  ['eloquent', 'eloquence'],\n  ['empathetic', 'empathy'],\n  ['empty', 'emptiness'],\n  ['enduring', 'endurance'],\n  ['energetic', 'energy'],\n  ['engaging', 'engagement'],\n  ['enough', 'enoughness'],\n  ['enthusiastic', 'enthusiasm'],\n  ['excellent', 'excellence'],\n  ['excited', 'excitement'],\n  ['exciting', 'excitement'],\n  ['exemplary', 'exemplariness'],\n  ['expedient', 'expedience'],\n  ['expensive', 'expense'],\n  ['experienced', 'experience'],\n  ['explosive', 'explosiveness'],\n  ['expressive', 'expressiveness'],\n  ['facetious', 'facetiousness'],\n  ['fanciful', 'fancifulness'],\n  ['fantastic', 'fantasy'],\n  ['fast', 'fastness'],\n  ['fatuous', 'fatuousness'],\n  ['fearless', 'fearlessness'],\n  ['fertile', 'fertility'],\n  ['fervent', 'fervor'],\n  ['fierce', 'fierceness'],\n  ['flawless', 'flawlessness'],\n  ['flexible', 'flexibility'],\n  ['flowing', 'flow'],\n  ['focused', 'focus'],\n  ['forceful', 'force'],\n  ['forgiving', 'forgiveness'],\n  ['fortunate', 'fortune'],\n  ['fragrant', 'fragrance'],\n  ['frank', 'frankness'],\n  ['free', 'freedom'],\n  ['friendly', 'friendliness'],\n  ['frivolous', 'frivolity'],\n  ['frugal', 'frugality'],\n  ['full', 'fullness'],\n  ['funny', 'funniness'],\n  ['furious', 'fury'],\n  ['furry', 'furriness'],\n  ['furtive', 'furtiveness'],\n  ['gaudy', 'gaudiness'],\n  ['gay', 'gayness'],\n  ['generous', 'generosity'],\n  ['gentle', 'gentleness'],\n  ['ghastly', 'ghastliness'],\n  ['glamorous', 'glamour'],\n  ['glaring', 'glare'],\n  ['glowing', 'glow'],\n  ['good', 'goodness'],\n  ['graceful', 'grace'],\n  ['gracious', 'graciousness'],\n  ['guileless', 'guilelessness'],\n  ['gullible', 'gullibility'],\n  ['hard', 'hardness'],\n  ['hardworking', 'hardwork'],\n  ['harried', 'harriedness'],\n  ['harsh', 'harshness'],\n  ['hazardous', 'hazard'],\n  ['heavy', 'heaviness'],\n  ['heroic', 'heroism'],\n  ['hoary', 'hoariness'],\n  ['honest', 'honesty'],\n  ['hopeful', 'hopefulness'],\n  ['hospitable', 'hospitality'],\n  ['hot', 'heat'],\n  ['huge', 'hugeness'],\n  ['humble', 'humility'],\n  ['humorous', 'humor'],\n  ['iffy', 'iffiness'],\n  ['imaginative', 'imagination'],\n  ['impartial', 'impartiality'],\n  ['imperfect', 'imperfection'],\n  ['imperious', 'imperiousness'],\n  ['imperturbable', 'imperturbability'],\n  ['implacable', 'implacability'],\n  ['impossible', 'impossibility'],\n  ['impressive', 'impressiveness'],\n  ['impulsive', 'impulsiveness'],\n  ['inane', 'inanity'],\n  ['independent', 'independence'],\n  ['indolent', 'indolence'],\n  ['industrious', 'industry'],\n  ['ineluctable', 'ineluctability'],\n  ['inept', 'ineptitude'],\n  ['inimitable', 'inimitability'],\n  ['innovative', 'innovation'],\n  ['inquisitive', 'inquisitiveness'],\n  ['insightful', 'insight'],\n  ['inspiring', 'inspiration'],\n  ['intelligent', 'intelligence'],\n  ['intemperate', 'intemperance'],\n  ['intrepid', 'intrepidity'],\n  ['intuitive', 'intuition'],\n  ['inventive', 'inventiveness'],\n  ['ironic', 'irony'],\n  ['jittery', 'jitteriness'],\n  ['jovial', 'joviality'],\n  ['joyful', 'joy'],\n  ['joyous', 'joy'],\n  ['keen', 'keenness'],\n  ['kind', 'kindness'],\n  ['knowledgeable', 'knowledge'],\n  ['laconic', 'laconicism'],\n  ['lavish', 'lavishness'],\n  ['lazy', 'laziness'],\n  ['legal', 'legality'],\n  ['liberal', 'liberality'],\n  ['light', 'lightness'],\n  ['lively', 'liveliness'],\n  ['lofty', 'loftiness'],\n  ['long', 'length'],\n  ['loquacious', 'loquaciousness'],\n  ['lost', 'loss'],\n  ['loud', 'loudness'],\n  ['loving', 'love'],\n  ['loyal', 'loyalty'],\n  ['lucid', 'lucidity'],\n  ['luminous', 'luminosity'],\n  ['lush', 'lushness'],\n  ['luxurious', 'luxury'],\n  ['magical', 'magic'],\n  ['magnanimous', 'magnanimity'],\n  ['majestic', 'majesty'],\n  ['mature', 'maturity'],\n  ['maverick', 'maverickness'],\n  ['mawkish', 'mawkishness'],\n  ['melodic', 'melody'],\n  ['meticulous', 'meticulousness'],\n  ['mighty', 'mightiness'],\n  ['modest', 'modesty'],\n  ['moist', 'moistness'],\n  ['momentous', 'momentousness'],\n  ['motivated', 'motivation'],\n  ['mundane', 'mundanity'],\n  ['musical', 'music'],\n  ['mysterious', 'mystery'],\n  ['mystical', 'mysticism'],\n  ['naive', 'naivety'],\n  ['narcissistic', 'narcissism'],\n  ['narrow', 'narrowness'],\n  ['naughty', 'naughtiness'],\n  ['nervous', 'nervousness'],\n  ['noble', 'nobility'],\n  ['nonchalant', 'nonchalance'],\n  ['nurturing', 'nurturance'],\n  ['obedient', 'obedience'],\n  ['oblivious', 'obliviousness'],\n  ['observant', 'observation'],\n  ['offensive', 'offence'],\n  ['offhand', 'offhandedness'],\n  ['ominous', 'ominousness'],\n  ['optimistic', 'optimism'],\n  ['organized', 'organization'],\n  ['orotund', 'orotundity'],\n  ['ostentatious', 'ostentatiousness'],\n  ['outgoing', 'outgoingness'],\n  ['pacifist', 'pacifism'],\n  ['passionate', 'passion'],\n  ['patient', 'patience'],\n  ['pedantic', 'pedantry'],\n  ['peerless', 'peerlessness'],\n  ['perceptive', 'perception'],\n  ['perfect', 'perfection'],\n  ['persistent', 'persistence'],\n  ['personal', 'personality'],\n  ['persuasive', 'persuasion'],\n  ['physical', 'physicality'],\n  ['placid', 'placidity'],\n  ['playful', 'playfulness'],\n  ['pleasant', 'pleasantness'],\n  ['pliant', 'pliancy'],\n  ['poignant', 'poignancy'],\n  ['poised', 'poise'],\n  ['polite', 'politeness'],\n  ['poor', 'poverty'],\n  ['popular', 'popularity'],\n  ['positive', 'positivity'],\n  ['possessive', 'possession'],\n  ['powerful', 'power'],\n  ['practical', 'practicality'],\n  ['pragmatic', 'pragmatism'],\n  ['present', 'presence'],\n  ['proactive', 'proactivity'],\n  ['prodigious', 'prodigiousness'],\n  ['professional', 'professionalism'],\n  ['proficient', 'proficiency'],\n  ['proportionate', 'proportion'],\n  ['protective', 'protection'],\n  ['prudent', 'prudence'],\n  ['punctual', 'punctuality'],\n  ['purposeful', 'purpose'],\n  ['querulous', 'querulousness'],\n  ['quick', 'quickness'],\n  ['quiet', 'quietness'],\n  ['quixotic', 'quixoticism'],\n  ['radiant', 'radiance'],\n  ['rampant', 'rampantness'],\n  ['random', 'randomness'],\n  ['rapacious', 'rapaciousness'],\n  ['ravishing', 'ravishingness'],\n  ['ready', 'readiness'],\n  ['realistic', 'realism'],\n  ['reasonable', 'reasonableness'],\n  ['receptive', 'receptiveness'],\n  ['recondite', 'reconditeness'],\n  ['red', 'redness'],\n  ['refined', 'refinement'],\n  ['relentless', 'relentlessness'],\n  ['reliable', 'reliability'],\n  ['reprobate', 'reprobacy'],\n  ['resilient', 'resilience'],\n  ['resolute', 'resolution'],\n  ['resourceful', 'resourcefulness'],\n  ['respectable', 'respect'],\n  ['respectful', 'respect'],\n  ['responsible', 'responsibility'],\n  ['reverent', 'reverence'],\n  ['rich', 'richness'],\n  ['riotous', 'riotousness'],\n  ['ripe', 'ripeness'],\n  ['risible', 'risibility'],\n  ['romantic', 'romance'],\n  ['rough', 'roughness'],\n  ['round', 'roundness'],\n  ['sad', 'sadness'],\n  ['salubrious', 'salubriousness'],\n  ['scrupulous', 'scrupulousness'],\n  ['scurrilous', 'scurrility'],\n  ['seditious', 'seditiousness'],\n  ['selfless', 'selflessness'],\n  ['sensible', 'sensibility'],\n  ['sensitive', 'sensitivity'],\n  ['serene', 'serenity'],\n  ['serious', 'seriousness'],\n  ['sharp', 'sharpness'],\n  ['shining', 'shininess'],\n  ['short', 'shortness'],\n  ['silent', 'silence'],\n  ['simple', 'simplicity'],\n  ['sincere', 'sincerity'],\n  ['sinister', 'sinisterness'],\n  ['skillful', 'skill'],\n  ['slippery', 'slipperiness'],\n  ['slow', 'slowness'],\n  ['smooth', 'smoothness'],\n  ['soft', 'softness'],\n  ['solid', 'solidity'],\n  ['soothing', 'soothingness'],\n  ['sour', 'sourness'],\n  ['specious', 'speciousness'],\n  ['spiritual', 'spirituality'],\n  ['spontaneous', 'spontaneity'],\n  ['sporadic', 'sporadicness'],\n  ['spurious', 'spuriousness'],\n  ['stalwart', 'stalwartness'],\n  ['stern', 'sternness'],\n  ['straight', 'straightness'],\n  ['strategic', 'strategy'],\n  ['strict', 'strictness'],\n  ['strong', 'strength'],\n  ['stubborn', 'stubbornness'],\n  ['sturdy', 'sturdiness'],\n  ['sublime', 'sublimity'],\n  ['subservient', 'subservience'],\n  ['subtle', 'subtleties'],\n  ['successful', 'success'],\n  ['superficial', 'superficiality'],\n  ['supportive', 'support'],\n  ['suspicious', 'suspicion'],\n  ['sweet', 'sweetness'],\n  ['swift', 'swiftness'],\n  ['sympathetic', 'sympathy'],\n  ['tactful', 'tact'],\n  ['talented', 'talent'],\n  ['tall', 'tallness'],\n  ['tame', 'tameness'],\n  ['tart', 'tartness'],\n  ['tawdry', 'tawdriness'],\n  ['tenacious', 'tenacity'],\n  ['tender', 'tenderness'],\n  ['tense', 'tenseness'],\n  ['tenuous', 'tenuousness'],\n  ['thin', 'thinness'],\n  ['thirsty', 'thirstiness'],\n  ['thorny', 'thorniness'],\n  ['thorough', 'thoroughness'],\n  ['thoughtful', 'thoughtfulness'],\n  ['tidy', 'tidiness'],\n  ['timely', 'timeliness'],\n  ['timid', 'timidity'],\n  ['timorous', 'timorousness'],\n  ['tiny', 'tininess'],\n  ['tired', 'tiredness'],\n  ['tireless', 'tirelessness'],\n  ['tolerant', 'tolerance'],\n  ['tough', 'toughness'],\n  ['trenchant', 'trenchancy'],\n  ['trusting', 'trust'],\n  ['trustworthy', 'trustworthiness'],\n  ['tumultuous', 'tumult'],\n  ['ubiquitous', 'ubiquitousness'],\n  ['unctuous', 'unctuousness'],\n  ['understanding', 'understanding'],\n  ['unflappable', 'unflappability'],\n  ['unique', 'uniqueness'],\n  ['unyielding', 'unyieldingness'],\n  ['vagrant', 'vagrancy'],\n  ['valuable', 'value'],\n  ['vapid', 'vapidity'],\n  ['venerable', 'venerability'],\n  ['versatile', 'versatility'],\n  ['vertical', 'verticality'],\n  ['vibrant', 'vibrancy'],\n  ['vigilant', 'vigilance'],\n  ['vigorous', 'vigor'],\n  ['vivacious', 'vivacity'],\n  ['vixenish', 'vixenishness'],\n  ['volatile', 'volatility'],\n  ['volumous', 'voluminousness'],\n  ['vulnerable', 'vulnerability'],\n  ['wanton', 'wantonness'],\n  ['warm', 'warmth'],\n  ['weak', 'weakness'],\n  ['whimsical', 'whimsicalness'],\n  ['wide', 'wideness'],\n  ['wily', 'wiliness'],\n  ['wise', 'wisdom'],\n  ['wistful', 'wistfulness'],\n  ['witty', 'wit'],\n  ['witty', 'wittiness'],\n  ['woebegone', 'woefulness'],\n  ['yielding', 'yieldingness'],\n  ['young', 'youth'],\n  ['zany', 'zaniness'],\n  ['zealous', 'zeal'],\n]"
  },
  {
    "path": "data/pairs/Comparative.js",
    "content": "export default [\n  ['angry', 'angrier'],\n  ['bad', 'worse'],\n  ['bald', 'balder'],\n  ['bawdy', 'bawdier'],\n  ['big', 'bigger'],\n  ['black', 'blacker'],\n  ['bland', 'blander'],\n  ['blond', 'blonder'],\n  ['bloody', 'bloodier'],\n  ['blue', 'bluer'],\n  ['bold', 'bolder'],\n  ['bouncy', 'bouncier'],\n  ['brash', 'brasher'],\n  ['brave', 'braver'],\n  ['bright', 'brighter'],\n  ['broad', 'broader'],\n  ['buff', 'buffer'],\n  ['burly', 'burlier'],\n  ['busy', 'busier'],\n  ['calm', 'calmer'],\n  ['camp', 'camper'],\n  ['catchy', 'catchier'],\n  ['cheap', 'cheaper'],\n  ['cheesy', 'cheesier'],\n  ['chilly', 'chillier'],\n  ['clean', 'cleaner'],\n  ['clear', 'clearer'],\n  ['close', 'closer'],\n  ['cloudy', 'cloudier'],\n  ['coarse', 'coarser'],\n  ['cold', 'colder'],\n  ['common', 'commoner'],\n  ['cool', 'cooler'],\n  ['costly', 'costlier'],\n  ['cowardly', 'cowardlier'],\n  ['cozy', 'cozier'],\n  ['crisp', 'crisper'],\n  ['cruel', 'crueler'],\n  ['cuddly', 'cuddlier'],\n  ['curly', 'curlier'],\n  ['cute', 'cuter'],\n  ['damp', 'damper'],\n  ['dark', 'darker'],\n  ['dead', 'deader'],\n  ['deadly', 'deadlier'],\n  ['deaf', 'deafer'],\n  ['dear', 'dearer'],\n  ['deep', 'deeper'],\n  ['dense', 'denser'],\n  ['diffuse', 'diffuser'],\n  ['dire', 'direr'],\n  ['dirty', 'dirtier'],\n  ['divine', 'diviner'],\n  ['drunk', 'drunker'],\n  ['dry', 'drier'],\n  ['dull', 'duller'],\n  ['dumb', 'dumber'],\n  ['early', 'earlier'],\n  ['easy', 'easier'],\n  ['eerie', 'eerier'],\n  ['evil', 'eviler'],\n  ['fair', 'fairer'],\n  ['fake', 'faker'],\n  ['fancy', 'fancier'],\n  ['far', 'further'],\n  ['fast', 'faster'],\n  ['fat', 'fatter'],\n  ['faulty', 'faultier'],\n  ['feeble', 'feebler'],\n  ['few', 'fewer'],\n  ['fierce', 'fiercer'],\n  ['fine', 'finer'],\n  ['firm', 'firmer'],\n  ['flat', 'flatter'],\n  ['foamy', 'foamier'],\n  ['fond', 'fonder'],\n  ['formal', 'formaler'],\n  ['foul', 'fouler'],\n  ['frail', 'frailer'],\n  ['free', 'freer'],\n  ['fresh', 'fresher'],\n  ['friendly', 'friendlier'],\n  ['full', 'fuller'],\n  ['fun', 'funer'],\n  ['funny', 'funnier'],\n  ['furry', 'furrier'],\n  ['further', 'further'],\n  ['gauche', 'gaucher'],\n  ['gaudy', 'gaudier'],\n  ['gay', 'gaier'],\n  ['gentle', 'gentler'],\n  ['genuine', 'genuiner'],\n  ['ghastly', 'ghastlier'],\n  ['ghostly', 'ghostlier'],\n  ['giddy', 'giddier'],\n  ['glib', 'glibber'],\n  ['gloomy', 'gloomier'],\n  ['gold', 'golder'],\n  ['good', 'better'],\n  ['goofy', 'goofier'],\n  ['grand', 'grander'],\n  ['gray', 'grayer'],\n  ['great', 'greater'],\n  ['green', 'greener'],\n  ['grisly', 'grislier'],\n  ['groovy', 'groovier'],\n  ['gross', 'grosser'],\n  ['gruesome', 'gruesomer'],\n  ['handsome', 'handsomer'],\n  ['happy', 'happier'],\n  ['hard', 'harder'],\n  ['hardy', 'hardier'],\n  ['harsh', 'harsher'],\n  ['heady', 'headier'],\n  ['healthy', 'healthier'],\n  ['heavy', 'heavier'],\n  ['hefty', 'heftier'],\n  ['high', 'higher'],\n  ['hilly', 'hillier'],\n  ['homely', 'homelier'],\n  ['hot', 'hotter'],\n  ['huge', 'huger'],\n  ['humble', 'humbler'],\n  ['humid', 'humider'],\n  ['hungry', 'hungrier'],\n  ['icy', 'icier'],\n  ['ill', 'iller'],\n  ['jolly', 'jollier'],\n  ['juicy', 'juicier'],\n  ['keen', 'keener'],\n  ['kind', 'kinder'],\n  ['lame', 'lamer'],\n  ['large', 'larger'],\n  ['late', 'later'],\n  ['lean', 'leaner'],\n  ['lengthy', 'lengthier'],\n  ['lesser', 'lesser'],\n  ['lewd', 'lewder'],\n  ['light', 'lighter'],\n  ['likely', 'likelier'],\n  ['little', 'littler'],\n  ['lively', 'livelier'],\n  ['lofty', 'loftier'],\n  ['lonely', 'lonelier'],\n  ['long', 'longer'],\n  ['loose', 'looser'],\n  ['loud', 'louder'],\n  ['lousy', 'lousier'],\n  ['lovely', 'lovelier'],\n  ['low', 'lower'],\n  ['lucky', 'luckier'],\n  ['mad', 'madder'],\n  ['mean', 'meaner'],\n  ['measly', 'measlier'],\n  ['meaty', 'meatier'],\n  ['meek', 'meeker'],\n  ['mellow', 'mellower'],\n  ['mild', 'milder'],\n  ['moist', 'moister'],\n  ['moody', 'moodier'],\n  ['narrow', 'narrower'],\n  ['nasty', 'nastier'],\n  ['near', 'nearer'],\n  ['neat', 'neater'],\n  ['new', 'newer'],\n  ['nice', 'nicer'],\n  ['nimble', 'nimbler'],\n  ['noble', 'nobler'],\n  ['noisy', 'noisier'],\n  ['normal', 'normaler'],\n  ['nosy', 'nosier'],\n  ['numb', 'number'],\n  ['odd', 'odder'],\n  ['oily', 'oilier'],\n  ['old', 'older'],\n  ['orient', 'orienter'],\n  ['pale', 'paler'],\n  ['phony', 'phonier'],\n  ['pink', 'pinker'],\n  ['plain', 'plainer'],\n  ['poor', 'poorer'],\n  ['premier', 'premier'],\n  ['present', 'presenter'],\n  ['prickly', 'pricklier'],\n  ['proud', 'prouder'],\n  ['puny', 'punier'],\n  ['pure', 'purer'],\n  ['quick', 'quicker'],\n  ['quiet', 'quieter'],\n  ['ragged', 'raggeder'],\n  ['random', 'randomer'],\n  ['rapid', 'rapider'],\n  ['rare', 'rarer'],\n  ['raw', 'rawer'],\n  ['ready', 'readier'],\n  ['real', 'realer'],\n  ['remote', 'remoter'],\n  ['rich', 'richer'],\n  ['ripe', 'riper'],\n  ['risky', 'riskier'],\n  ['ritzy', 'ritzier'],\n  ['roomy', 'roomier'],\n  ['rosy', 'rosier'],\n  ['rough', 'rougher'],\n  ['round', 'rounder'],\n  ['rude', 'ruder'],\n  ['sad', 'sadder'],\n  ['safe', 'safer'],\n  ['saintly', 'saintlier'],\n  ['salty', 'saltier'],\n  ['savvy', 'savvier'],\n  ['scarce', 'scarcer'],\n  ['scary', 'scarier'],\n  ['sexy', 'sexier'],\n  ['shady', 'shadier'],\n  ['shallow', 'shallower'],\n  ['sharp', 'sharper'],\n  ['shiny', 'shinier'],\n  ['short', 'shorter'],\n  ['shrill', 'shriller'],\n  ['shy', 'shyer'],\n  ['sick', 'sicker'],\n  ['silly', 'sillier'],\n  ['simple', 'simpler'],\n  ['skinny', 'skinnier'],\n  ['sleek', 'sleeker'],\n  ['slight', 'slighter'],\n  ['slim', 'slimmer'],\n  ['slimy', 'slimier'],\n  ['slow', 'slower'],\n  ['sly', 'slier'],\n  ['small', 'smaller'],\n  ['smart', 'smarter'],\n  ['smelly', 'smellier'],\n  ['smooth', 'smoother'],\n  ['soft', 'softer'],\n  ['solemn', 'solemner'],\n  ['solid', 'solider'],\n  ['soon', 'sooner'],\n  ['sore', 'sorer'],\n  ['speedy', 'speedier'],\n  ['spicy', 'spicier'],\n  ['sprightly', 'sprightlier'],\n  ['square', 'squarer'],\n  ['stale', 'staler'],\n  ['stark', 'starker'],\n  ['steady', 'steadier'],\n  ['steep', 'steeper'],\n  ['stern', 'sterner'],\n  ['stiff', 'stiffer'],\n  ['straight', 'straighter'],\n  ['strict', 'stricter'],\n  ['strong', 'stronger'],\n  ['stupid', 'stupider'],\n  ['sturdy', 'sturdier'],\n  ['subtle', 'subtler'],\n  ['sudden', 'suddener'],\n  ['surreal', 'surrealer'],\n  ['sweet', 'sweeter'],\n  ['swift', 'swifter'],\n  ['tall', 'taller'],\n  ['tame', 'tamer'],\n  ['tart', 'tarter'],\n  ['tawdry', 'tawdrier'],\n  ['tense', 'tenser'],\n  ['thick', 'thicker'],\n  ['thin', 'thinner'],\n  ['thirsty', 'thirstier'],\n  ['tidy', 'tidier'],\n  ['tight', 'tighter'],\n  ['timely', 'timelier'],\n  ['tiny', 'tinier'],\n  ['tired', 'tireder'],\n  ['tough', 'tougher'],\n  ['tranquil', 'tranquiler'],\n  ['trendy', 'trendier'],\n  ['tricky', 'trickier'],\n  ['trim', 'trimmer'],\n  ['true', 'truer'],\n  ['ugly', 'uglier'],\n  ['unlikely', 'unlikelier'],\n  ['untidy', 'untidier'],\n  ['untrue', 'untruer'],\n  ['vague', 'vaguer'],\n  ['vain', 'vainer'],\n  ['vast', 'vaster'],\n  ['warm', 'warmer'],\n  ['wary', 'warier'],\n  ['weak', 'weaker'],\n  ['wealthy', 'wealthier'],\n  ['weary', 'wearier'],\n  ['weird', 'weirder'],\n  ['wet', 'wetter'],\n  ['white', 'whiter'],\n  ['wicked', 'wickeder'],\n  ['wide', 'wider'],\n  ['wild', 'wilder'],\n  ['wily', 'wilier'],\n  ['wise', 'wiser'],\n  ['young', 'younger'],\n  ['zany', 'zanier'],\n  ['clever', 'cleverer'],\n  ['glad', 'gladder'],\n  ['neat', 'neater'],\n  ['dim', 'dimmer'],\n  ['', ''],\n  ['', ''],\n]\n"
  },
  {
    "path": "data/pairs/Gerund.js",
    "content": "export default [\n  ['including', 'include'],\n  ['following', 'follow'],\n  ['being', 'is'],\n  ['using', 'use'],\n  ['working', 'work'],\n  ['developing', 'develop'],\n  ['providing', 'provide'],\n  ['regarding', 'regard'],\n  ['dumping', 'dump'],\n  ['according', 'accord'],\n  ['operating', 'operate'],\n  ['making', 'make'],\n  ['increasing', 'increase'],\n  ['having', 'have'],\n  ['supporting', 'support'],\n  ['heading', 'head'],\n  ['exceeding', 'exceed'],\n  ['growing', 'grow'],\n  ['concerning', 'concern'],\n  ['reporting', 'report'],\n  ['relating', 'relate'],\n  ['leading', 'lead'],\n  ['ensuring', 'ensure'],\n  ['improving', 'improve'],\n  ['meeting', 'meet'],\n  ['existing', 'exist'],\n  ['promoting', 'promote'],\n  ['taking', 'take'],\n  ['learning', 'learn'],\n  ['originating', 'originate'],\n  ['creating', 'create'],\n  ['building', 'build'],\n  ['resulting', 'result'],\n  ['living', 'live'],\n  ['funding', 'fund'],\n  ['emerging', 'emerge'],\n  ['involving', 'involve'],\n  ['receiving', 'receive'],\n  ['participating', 'participate'],\n  ['representing', 'represent'],\n  ['reducing', 'reduce'],\n  ['determining', 'determine'],\n  ['implementing', 'implement'],\n  ['changing', 'change'],\n  ['establishing', 'establish'],\n  ['identifying', 'identify'],\n  ['containing', 'contain'],\n  ['doing', 'do'],\n  ['looking', 'look'],\n  ['addressing', 'address'],\n  ['selling', 'sell'],\n  ['excluding', 'exclude'],\n  ['moving', 'move'],\n  ['helping', 'help'],\n  ['continuing', 'continue'],\n  ['coming', 'come'],\n  ['achieving', 'achieve'],\n  ['going', 'go'],\n  ['producing', 'produce'],\n  ['respecting', 'respect'],\n  ['depending', 'depend'],\n  ['applying', 'apply'],\n  ['planning', 'plan'],\n  ['conducting', 'conduct'],\n  ['managing', 'manage'],\n  ['maintaining', 'maintain'],\n  ['remaining', 'remain'],\n  ['performing', 'perform'],\n  ['dealing', 'deal'],\n  ['seeking', 'seek'],\n  ['contributing', 'contribute'],\n  ['starting', 'start'],\n  ['enhancing', 'enhance'],\n  ['writing', 'write'],\n  ['hosting', 'host'],\n  ['strengthening', 'strengthen'],\n  ['facing', 'face'],\n  ['allowing', 'allow'],\n  ['measuring', 'measure'],\n  ['becoming', 'become'],\n  ['affecting', 'affect'],\n  ['finding', 'find'],\n  ['offering', 'offer'],\n  ['considering', 'consider'],\n  ['beginning', 'begin'],\n  ['setting', 'set'],\n  ['aging', 'age'],\n  ['bringing', 'bring'],\n  ['keeping', 'keep'],\n  ['monitoring', 'monitor'],\n  ['requiring', 'require'],\n  ['indicating', 'indicate'],\n  ['giving', 'give'],\n  ['preparing', 'prepare'],\n  ['ending', 'end'],\n  ['rising', 'rise'],\n  ['sharing', 'share'],\n  ['reaching', 'reach'],\n  ['expanding', 'expand'],\n  ['getting', 'get'],\n  ['governing', 'govern'],\n  ['assessing', 'assess'],\n  ['granting', 'grant'],\n  ['obtaining', 'obtain'],\n  ['subsidizing', 'subsidize'],\n  ['attending', 'attend'],\n  ['entering', 'enter'],\n  ['delivering', 'deliver'],\n  ['arising', 'arise'],\n  ['targeting', 'target'],\n  ['travelling', 'travel'],\n  ['fostering', 'foster'],\n  ['carrying', 'carry'],\n  ['encouraging', 'encourage'],\n  ['underlying', 'underlie'],\n  ['understanding', 'understand'],\n  ['completing', 'complete'],\n  ['covering', 'cover'],\n  ['responding', 'respond'],\n  ['visiting', 'visit'],\n  ['importing', 'import'],\n  ['protecting', 'protect'],\n  ['reviewing', 'review'],\n  ['owing', 'owe'],\n  ['focusing', 'focus'],\n  ['recognizing', 'recognize'],\n  ['serving', 'serve'],\n  ['facilitating', 'facilitate'],\n  ['pertaining', 'pertain'],\n  ['examining', 'examine'],\n  ['enabling', 'enable'],\n  ['evaluating', 'evaluate'],\n  ['consisting', 'consist'],\n  ['adding', 'add'],\n  ['exporting', 'export'],\n  ['investing', 'invest'],\n  ['studying', 'study'],\n  ['showing', 'show'],\n  ['raising', 'raise'],\n  ['ranging', 'range'],\n  ['reflecting', 'reflect'],\n  ['processing', 'process'],\n  ['submitting', 'submit'],\n  ['advancing', 'advance'],\n  ['declining', 'decline'],\n  ['surrounding', 'surround'],\n  ['competing', 'compete'],\n  ['preventing', 'prevent'],\n  ['defining', 'define'],\n  ['paying', 'pay'],\n  ['undertaking', 'undertake'],\n  ['speaking', 'speak'],\n  ['acting', 'act'],\n  ['holding', 'hold'],\n  ['describing', 'describe'],\n  ['training', 'train'],\n  ['countervailing', 'countervail'],\n  ['presenting', 'present'],\n  ['evolving', 'evolve'],\n  ['pending', 'pend'],\n  ['assisting', 'assist'],\n  ['requesting', 'request'],\n  ['pursuing', 'pursue'],\n  ['incorporating', 'incorporate'],\n  ['noting', 'note'],\n  ['coordinating', 'coordinate'],\n  ['attracting', 'attract'],\n  ['leaving', 'leave'],\n  ['organizing', 'organize'],\n  ['counselling', 'counsel'],\n  ['playing', 'play'],\n  ['trying', 'try'],\n  ['causing', 'cause'],\n  ['integrating', 'integrate'],\n  ['belonging', 'belong'],\n  ['collecting', 'collect'],\n  ['administering', 'administer'],\n  ['linking', 'link'],\n  ['negotiating', 'negotiate'],\n  ['putting', 'put'],\n  ['limiting', 'limit'],\n  ['cutting', 'cut'],\n  ['occurring', 'occur'],\n  ['falling', 'fall'],\n  ['partnering', 'partner'],\n  ['matching', 'match'],\n  ['accessing', 'access'],\n  ['experiencing', 'experience'],\n  ['buying', 'buy'],\n  ['exploring', 'explore'],\n  ['calculating', 'calculate'],\n  ['teaching', 'teach'],\n  ['generating', 'generate'],\n  ['varying', 'vary'],\n  ['assuming', 'assume'],\n  ['marking', 'mark'],\n  ['calling', 'call'],\n  ['driving', 'drive'],\n  ['cleaning', 'clean'],\n  ['selecting', 'select'],\n  ['spending', 'spend'],\n  ['engaging', 'engage'],\n  ['returning', 'return'],\n  ['comparing', 'compare'],\n  ['running', 'run'],\n  ['wishing', 'wish'],\n  ['eliminating', 'eliminate'],\n  ['demonstrating', 'demonstrate'],\n  ['hiring', 'hire'],\n  ['opening', 'open'],\n  ['communicating', 'communicate'],\n  ['arriving', 'arrive'],\n  ['filing', 'file'],\n  ['extending', 'extend'],\n  ['controlling', 'control'],\n  ['tracking', 'track'],\n  ['handling', 'handle'],\n  ['adopting', 'adopt'],\n  ['preserving', 'preserve'],\n  ['forming', 'form'],\n  ['parenting', 'parent'],\n  ['policing', 'police'],\n  ['shipping', 'ship'],\n  ['outlining', 'outline'],\n  ['signing', 'sign'],\n  ['introducing', 'introduce'],\n  ['waiting', 'wait'],\n  ['choosing', 'choose'],\n  ['threatening', 'threaten'],\n  ['stating', 'state'],\n  ['celebrating', 'celebrate'],\n  ['issuing', 'issue'],\n  ['contacting', 'contact'],\n  ['sending', 'send'],\n  ['seeding', 'seed'],\n  ['qualifying', 'qualify'],\n  ['drawing', 'draw'],\n  ['testing', 'test'],\n  ['investigating', 'investigate'],\n  ['distributing', 'distribute'],\n  ['seeing', 'see'],\n  ['saying', 'say'],\n  ['asking', 'ask'],\n  ['marketing', 'market'],\n  ['weighing', 'weigh'],\n  ['suggesting', 'suggest'],\n  ['explaining', 'explain'],\n  ['discussing', 'discuss'],\n  ['accounting', 'account'],\n  ['placing', 'place'],\n  ['designing', 'design'],\n  ['gaining', 'gain'],\n  ['securing', 'secure'],\n  ['removing', 'remove'],\n  ['decreasing', 'decrease'],\n  ['informing', 'inform'],\n  ['turning', 'turn'],\n  ['treating', 'treat'],\n  ['thinking', 'think'],\n  ['joining', 'join'],\n  ['sponsoring', 'sponsor'],\n  ['amending', 'amend'],\n  ['searching', 'search'],\n  ['retaining', 'retain'],\n  ['fulfilling', 'fulfill'],\n  ['influencing', 'influence'],\n  ['reading', 'read'],\n  ['missing', 'miss'],\n  ['standing', 'stand'],\n  ['estimating', 'estimate'],\n  ['featuring', 'feature'],\n  ['planting', 'plant'],\n  ['shaping', 'shape'],\n  ['reinforcing', 'reinforce'],\n  ['combining', 'combine'],\n  ['leveraging', 'leverage'],\n  ['comprising', 'comprise'],\n  ['analyzing', 'analyze'],\n  ['purchasing', 'purchase'],\n  ['updating', 'update'],\n  ['highlighting', 'highlight'],\n  ['consulting', 'consult'],\n  ['recruiting', 'recruit'],\n  ['knowing', 'know'],\n  ['drafting', 'draft'],\n  ['acquiring', 'acquire'],\n  ['sustaining', 'sustain'],\n  ['transferring', 'transfer'],\n  ['confirming', 'confirm'],\n  ['accepting', 'accept'],\n  ['referring', 'refer'],\n  ['grading', 'grade'],\n  ['launching', 'launch'],\n  ['replacing', 'replace'],\n  ['filling', 'fill'],\n  ['claiming', 'claim'],\n  ['appearing', 'appear'],\n  ['transporting', 'transport'],\n  ['connecting', 'connect'],\n  ['benefiting', 'benefit'],\n  ['talking', 'talk'],\n  ['collaborating', 'collaborate'],\n  ['winning', 'win'],\n  ['accompanying', 'accompany'],\n  ['meaning', 'mean'],\n  ['ordering', 'order'],\n  ['hatching', 'hatch'],\n  ['gathering', 'gather'],\n  ['welcoming', 'welcome'],\n  ['deciding', 'decide'],\n  ['challenging', 'challenge'],\n  ['posting', 'post'],\n  ['losing', 'lose'],\n  ['proposing', 'propose'],\n  ['registering', 'register'],\n  ['recording', 'record'],\n  ['publishing', 'publish'],\n  ['closing', 'close'],\n  ['listening', 'listen'],\n  ['translating', 'translate'],\n  ['inviting', 'invite'],\n  ['cropping', 'crop'],\n  ['interpreting', 'interpret'],\n  ['totalling', 'total'],\n  ['attempting', 'attempt'],\n  ['disseminating', 'disseminate'],\n  ['tendering', 'tender'],\n  ['crossing', 'cross'],\n  ['maximizing', 'maximize'],\n  ['employing', 'employ'],\n  ['concluding', 'conclude'],\n  ['profiling', 'profil'],\n  ['breaking', 'break'],\n  ['labelling', 'label'],\n  ['prescribing', 'prescribe'],\n  ['touring', 'tour'],\n  ['adapting', 'adapt'],\n  ['showcasing', 'showcase'],\n  ['neighbouring', 'neighbour'],\n  ['shifting', 'shift'],\n  ['allocating', 'allocate'],\n  ['authorizing', 'authorize'],\n  ['resolving', 'resolve'],\n  ['preceding', 'precede'],\n  ['costing', 'cost'],\n  ['approving', 'approve'],\n  ['specifying', 'specify'],\n  ['utilizing', 'utilize'],\n  ['editing', 'edit'],\n  ['branding', 'brand'],\n  ['volunteering', 'volunteer'],\n  ['pressing', 'press'],\n  ['failing', 'fail'],\n  ['upgrading', 'upgrade'],\n  ['minimizing', 'minimize'],\n  ['avoiding', 'avoid'],\n  ['clarifying', 'clarify'],\n  ['lacking', 'lack'],\n  ['emphasizing', 'emphasize'],\n  ['differing', 'differ'],\n  ['initiating', 'initiate'],\n  ['announcing', 'announce'],\n  ['feeding', 'feed'],\n  ['farming', 'farm'],\n  ['stimulating', 'stimulate'],\n  ['sitting', 'sit'],\n  ['happening', 'happen'],\n  ['educating', 'educate'],\n  ['viewing', 'view'],\n  ['exercising', 'exercise'],\n  ['summarizing', 'summarize'],\n  ['regulating', 'regulate'],\n  ['residing', 'reside'],\n  ['suffering', 'suffer'],\n  ['commencing', 'commence'],\n  ['permitting', 'permit'],\n  ['advising', 'advise'],\n  ['pruning', 'prune'],\n  ['specializing', 'specialize'],\n  ['expressing', 'express'],\n  ['breeding', 'breed'],\n  ['broadening', 'broaden'],\n  ['supplying', 'supply'],\n  ['drying', 'dry'],\n  ['earning', 'earn'],\n  ['licensing', 'license'],\n  ['modeling', 'model'],\n  ['contracting', 'contract'],\n  ['financing', 'finance'],\n  ['climbing', 'climb'],\n  ['adjusting', 'adjust'],\n  ['undergoing', 'undergo'],\n  ['bridging', 'bridge'],\n  ['screening', 'screen'],\n  ['detailing', 'detail'],\n  ['directing', 'direct'],\n  ['proceeding', 'proceed'],\n  ['capturing', 'capture'],\n  ['mailing', 'mail'],\n  ['demanding', 'demand'],\n  ['bearing', 'bear'],\n  ['outsourcing', 'outsource'],\n  ['realizing', 'realize'],\n  ['complying', 'comply'],\n  ['documenting', 'document'],\n  ['solving', 'solve'],\n  ['passing', 'pass'],\n  ['enforcing', 'enforce'],\n  ['fighting', 'fight'],\n  ['relying', 'rely'],\n  ['watching', 'watch'],\n  ['malting', 'malt'],\n  ['mentoring', 'mentore'],\n  ['clearing', 'clear'],\n  ['balancing', 'balance'],\n  ['overseeing', 'oversee'],\n  ['broadcasting', 'broadcast'],\n  ['acknowledging', 'acknowledge'],\n  ['pooling', 'pool'],\n  ['laying', 'lay'],\n  ['transmitting', 'transmit'],\n  ['eating', 'eat'],\n  ['mixing', 'mix'],\n  ['transforming', 'transform'],\n  ['recommending', 'recommend'],\n  ['packing', 'pack'],\n  ['approaching', 'approach'],\n  ['verifying', 'verify'],\n  ['combating', 'combat'],\n  ['renewing', 'renew'],\n  ['spraying', 'spray'],\n  ['stemming', 'stem'],\n  ['averaging', 'average'],\n  ['infringing', 'infringe'],\n  ['releasing', 'release'],\n  ['betting', 'bet'],\n  ['distinguishing', 'distinguish'],\n  ['lowering', 'lower'],\n  ['networking', 'network'],\n  ['binding', 'bind'],\n  ['imposing', 'impose'],\n  ['furthering', 'further'],\n  ['attaining', 'attain'],\n  ['committing', 'commit'],\n  ['researching', 'research'],\n  ['coding', 'code'],\n  ['telling', 'tell'],\n  ['checking', 'check'],\n  ['wanting', 'want'],\n  ['certifying', 'certify'],\n  ['loading', 'load'],\n  ['listing', 'list'],\n  ['booking', 'book'],\n  ['nurturing', 'nurture'],\n  ['bullying', 'bully'],\n  ['staying', 'stay'],\n  ['sourcing', 'source'],\n  ['dividing', 'divide'],\n  ['streaming', 'stream'],\n  ['crushing', 'crush'],\n  ['benchmarking', 'benchmark'],\n  ['restricting', 'restrict'],\n  ['optimizing', 'optimize'],\n  ['answering', 'answer'],\n  ['rounding', 'round'],\n  ['agreeing', 'agree'],\n  ['recurring', 'recur'],\n  ['designating', 'designate'],\n  ['expecting', 'expect'],\n  ['saving', 'save'],\n  ['flowing', 'flow'],\n  ['impacting', 'impact'],\n  ['flying', 'fly'],\n  ['awarding', 'award'],\n  ['accelerating', 'accelerate'],\n  ['spreading', 'spread'],\n  ['prohibiting', 'prohibit'],\n  ['restoring', 'restore'],\n  ['functioning', 'function'],\n  ['misleading', 'mislead'],\n  ['streamlining', 'streamline'],\n  ['citing', 'cite'],\n  ['dying', 'die'],\n  ['aiming', 'aim'],\n  ['messaging', 'message'],\n  ['reproducing', 'reproduce'],\n  ['storing', 'store'],\n  ['signaling', 'signal'],\n  ['encompassing', 'encompass'],\n  ['sporting', 'sport'],\n  ['pumping', 'pump'],\n  ['doping', 'dope'],\n  ['sampling', 'sample'],\n  ['revising', 'revise'],\n  ['modifying', 'modify'],\n  ['retiring', 'retire'],\n  ['hearing', 'hear'],\n  ['printing', 'print'],\n  ['detecting', 'detect'],\n  ['rolling', 'roll'],\n  ['mounting', 'mount'],\n  ['drinking', 'drink'],\n  ['baking', 'bake'],\n  ['dropping', 'drop'],\n  ['converting', 'convert'],\n  ['alleging', 'allege'],\n  ['advocating', 'advocate'],\n  ['welding', 'weld'],\n  ['recovering', 'recover'],\n  ['assembling', 'assemble'],\n  ['struggling', 'struggle'],\n  ['finishing', 'finish'],\n  ['guiding', 'guide'],\n  ['embracing', 'embrace'],\n  ['cataloguing', 'catalogue'],\n  ['stabilizing', 'stabilize'],\n  ['modernizing', 'modernize'],\n  ['awaiting', 'await'],\n  ['steering', 'steer'],\n  ['nominating', 'nominate'],\n  ['ensuing', 'ensue'],\n  ['wearing', 'wear'],\n  ['carding', 'card'],\n  ['clicking', 'click'],\n  ['slowing', 'slow'],\n  ['forecasting', 'forecast'],\n  ['separating', 'separate'],\n  ['consolidating', 'consolidate'],\n  ['assigning', 'assign'],\n  ['antidumping', 'antidump'],\n  ['advertizing', 'advertize'],\n  ['safeguarding', 'safeguard'],\n  ['declaring', 'declare'],\n  ['coping', 'cope'],\n  ['scanning', 'scan'],\n  ['forging', 'forge'],\n  ['arguing', 'argue'],\n  ['prevailing', 'prevail'],\n  ['enriching', 'enrich'],\n  ['questioning', 'question'],\n  ['needing', 'need'],\n  ['counting', 'count'],\n  ['harmonizing', 'harmonize'],\n  ['enjoying', 'enjoy'],\n  ['shrinking', 'shrink'],\n  ['unloading', 'unload'],\n  ['constructing', 'construct'],\n  ['walking', 'walk'],\n  ['displaying', 'display'],\n  ['interviewing', 'interview'],\n  ['pushing', 'push'],\n  ['proving', 'prove'],\n  ['valuing', 'value'],\n  ['locating', 'locate'],\n  ['illustrating', 'illustrate'],\n  ['mobilizing', 'mobilize'],\n  ['multiplying', 'multiply'],\n  ['dating', 'date'],\n  ['shooting', 'shoot'],\n  ['simplifying', 'simplify'],\n  ['diminishing', 'diminish'],\n  ['pointing', 'point'],\n  ['boosting', 'boost'],\n  ['promising', 'promise'],\n  ['discovering', 'discover'],\n  ['breastfeeding', 'breastfeed'],\n  ['tabling', 'table'],\n  ['hoping', 'hope'],\n  ['diversifying', 'diversify'],\n  ['offsetting', 'offset'],\n  ['trapping', 'trap'],\n  ['striving', 'strive'],\n  ['cooperating', 'cooperate'],\n  ['cooling', 'cool'],\n  ['formulating', 'formulate'],\n  ['switching', 'switch'],\n  ['surviving', 'survive'],\n  ['scouting', 'scout'],\n  ['maturing', 'mature'],\n  ['grinding', 'grind'],\n  ['doubling', 'double'],\n  ['renting', 'rent'],\n  ['interacting', 'interact'],\n  ['scoring', 'score'],\n  ['departing', 'depart'],\n  ['sealing', 'seal'],\n  ['positioning', 'position'],\n  ['stopping', 'stop'],\n  ['commemorating', 'commemorate'],\n  ['exposing', 'expose'],\n  ['compiling', 'compile'],\n  ['refining', 'refine'],\n  ['exploiting', 'exploit'],\n  ['adhering', 'adhere'],\n  ['heating', 'heat'],\n  ['intoxicating', 'intoxicate'],\n  ['defending', 'defend'],\n  ['casing', 'case'],\n  ['lobbying', 'lobby'],\n  ['feeling', 'feel'],\n  ['routing', 'rout'],\n  ['overcoming', 'overcome'],\n  ['practising', 'practise'],\n  ['compromising', 'compromise'],\n  ['arranging', 'arrange'],\n  ['terminating', 'terminate'],\n  ['warehousing', 'warehouse'],\n  ['commissioning', 'commission'],\n  ['confronting', 'confront'],\n  ['forcing', 'force'],\n  ['anticipating', 'anticipate'],\n  ['trending', 'trend'],\n  ['appealing', 'appeal'],\n  ['soliciting', 'solicit'],\n  ['settling', 'settle'],\n  ['tracing', 'trace'],\n  ['counterfeiting', 'counterfeit'],\n  ['floating', 'float'],\n  ['analysing', 'analyse'],\n  ['peacekeeping', 'peacekeep'],\n  ['filtering', 'filter'],\n  ['withdrawing', 'withdraw'],\n  ['amounting', 'amount'],\n  ['empowering', 'empower'],\n  ['leaching', 'leach'],\n  ['exchanging', 'exchange'],\n  ['motivating', 'motivate'],\n  ['predicting', 'predict'],\n  ['escalating', 'escalate'],\n  ['guaranteeing', 'guarantee'],\n  ['aligning', 'align'],\n  ['numbering', 'number'],\n  ['spanning', 'span'],\n  ['exhibiting', 'exhibit'],\n  ['lading', 'lade'],\n  ['assuring', 'assure'],\n  ['washing', 'wash'],\n  ['rendering', 'render'],\n  ['bonding', 'bond'],\n  ['insulating', 'insulate'],\n  ['finalizing', 'finalize'],\n  ['disclosing', 'disclose'],\n  ['harming', 'harm'],\n  ['practicing', 'practice'],\n  ['burgeoning', 'burgeon'],\n  ['manufacturing', 'manufacture'],\n  ['supervising', 'supervise'],\n  ['caring', 'care'],\n  ['stamping', 'stamp'],\n  ['coasting', 'coast'],\n  ['circulating', 'circulate'],\n  ['appointing', 'appoint'],\n  ['pioneering', 'pioneer'],\n  ['harnessing', 'harness'],\n  ['charging', 'charge'],\n  ['sorting', 'sort'],\n  ['executing', 'execute'],\n  ['projecting', 'project'],\n  ['altering', 'alter'],\n  ['mapping', 'map'],\n  ['filmmaking', 'filmmak'],\n  ['stereotyping', 'stereotype'],\n  ['incurring', 'incur'],\n  ['correcting', 'correct'],\n  ['overwintering', 'overwinter'],\n  ['structuring', 'structure'],\n  ['favouring', 'favour'],\n  ['tackling', 'tackle'],\n  ['honouring', 'honour'],\n  ['servicing', 'service'],\n  ['soaring', 'soar'],\n  ['deteriorating', 'deteriorate'],\n  ['rotating', 'rotate'],\n  ['mowing', 'mow'],\n  ['believing', 'believe'],\n  ['reforming', 'reform'],\n  ['accommodating', 'accommodate'],\n  ['concentrating', 'concentrate'],\n  ['installing', 'install'],\n  ['forwarding', 'forward'],\n  ['intending', 'intend'],\n  ['conserving', 'conserve'],\n  ['presiding', 'preside'],\n  ['emanating', 'emanate'],\n  ['judging', 'judge'],\n  ['sequencing', 'sequence'],\n  ['withholding', 'withhold'],\n  ['attesting', 'attest'],\n  ['staffing', 'staff'],\n  ['mentioning', 'mention'],\n  ['computing', 'compute'],\n  ['commenting', 'comment'],\n  ['intervening', 'intervene'],\n  ['capitalizing', 'capitalize'],\n  ['logging', 'log'],\n  ['progressing', 'progress'],\n  ['denying', 'deny'],\n  ['deepening', 'deepen'],\n  ['picking', 'pick'],\n  ['opposing', 'oppose'],\n  ['distorting', 'distort'],\n  ['nursing', 'nurse'],\n  ['instituting', 'institute'],\n  ['mitigating', 'mitigate'],\n  ['trading', 'trade'],\n  ['reversing', 'reverse'],\n  ['decisionmaking', 'decisionmak'],\n  ['fixing', 'fix'],\n  ['deducting', 'deduct'],\n  ['articulating', 'articulate'],\n  ['delaying', 'delay'],\n  ['mountaineering', 'mountaineer'],\n  ['conveying', 'convey'],\n  ['graduating', 'graduate'],\n  ['rebuilding', 'rebuild'],\n  ['validating', 'validate'],\n  ['hiking', 'hike'],\n  ['weakening', 'weaken'],\n  ['eradicating', 'eradicate'],\n  ['observing', 'observe'],\n  ['classifying', 'classify'],\n  ['scheduling', 'schedule'],\n  ['naming', 'name'],\n  ['reconciling', 'reconcile'],\n  ['dispensing', 'dispense'],\n  ['cultivating', 'cultivate'],\n  ['satisfying', 'satisfy'],\n  ['staging', 'stage'],\n  ['inspecting', 'inspect'],\n  ['stressing', 'stress'],\n  ['revitalizing', 'revitalize'],\n  ['blocking', 'block'],\n  ['yielding', 'yield'],\n  ['tapping', 'tap'],\n  ['voting', 'vote'],\n  ['packaging', 'package'],\n  ['lodging', 'lodge'],\n  ['killing', 'kill'],\n  ['cloning', 'clon'],\n  ['violating', 'violate'],\n  ['accruing', 'accrue'],\n  ['photocopying', 'photocopy'],\n  ['riding', 'ride'],\n  ['destroying', 'destroy'],\n  ['retraining', 'retrain'],\n  ['enacting', 'enact'],\n  ['formatting', 'format'],\n  ['succeeding', 'succeed'],\n  ['subtracting', 'subtract'],\n  ['merging', 'merge'],\n  ['copying', 'copy'],\n  ['officiating', 'officiate'],\n  ['letting', 'let'],\n  ['justifying', 'justify'],\n  ['composting', 'compost'],\n  ['possessing', 'possess'],\n  ['lagging', 'lag'],\n  ['differentiating', 'differentiate'],\n  ['surveying', 'survey'],\n  ['moulding', 'mould'],\n  ['thanking', 'thank'],\n  ['refusing', 'refuse'],\n  ['bidding', 'bid'],\n  ['striking', 'strike'],\n  ['constituting', 'constitute'],\n  ['widening', 'widen'],\n  ['blending', 'blend'],\n  ['innovating', 'innovate'],\n  ['stocking', 'stock'],\n  ['repairing', 'repair'],\n  ['sawing', 'saw'],\n  ['wrapping', 'wrap'],\n  ['commercializing', 'commercialize'],\n  ['ranking', 'rank'],\n  ['posing', 'pose'],\n  ['patenting', 'patent'],\n  ['lending', 'lend'],\n  ['inserting', 'insert'],\n  ['appreciating', 'appreciate'],\n  ['fuelling', 'fuel'],\n  ['invoicing', 'invoice'],\n  ['thinning', 'thin'],\n  ['lingering', 'linger'],\n  ['stepping', 'step'],\n  ['sliding', 'slide'],\n  ['drilling', 'drill'],\n  ['notifying', 'notify'],\n  ['founding', 'found'],\n  ['surpassing', 'surpass'],\n  ['impeding', 'impede'],\n  ['complementing', 'complement'],\n  ['depicting', 'depict'],\n  ['lasting', 'last'],\n  ['transplanting', 'transplant'],\n  ['stacking', 'stack'],\n  ['deriving', 'derive'],\n  ['owning', 'own'],\n  ['quoting', 'quote'],\n  ['consuming', 'consume'],\n  ['alternating', 'alternate'],\n  ['prototyping', 'prototyp'],\n  ['auditing', 'audit'],\n  ['restructuring', 'restructure'],\n  ['undermining', 'undermine'],\n  ['exempting', 'exempt'],\n  ['mulching', 'mulch'],\n  ['dressing', 'dress'],\n  ['hitting', 'hit'],\n  ['phasing', 'phase'],\n  ['pulling', 'pull'],\n  ['weaving', 'weave'],\n  ['milling', 'mill'],\n  ['enrolling', 'enroll'],\n  ['filming', 'film'],\n  ['machining', 'machine'],\n  ['healing', 'heal'],\n  ['characterizing', 'characterize'],\n  ['internationalizing', 'internationalize'],\n  ['borrowing', 'borrow'],\n  ['conferencing', 'conference'],\n  ['sensing', 'sense'],\n  ['peaking', 'peak'],\n  ['contemplating', 'contemplate'],\n  ['underpinning', 'underpin'],\n  ['tanning', 'tan'],\n  ['refrigerating', 'refrigerate'],\n  ['devoting', 'devote'],\n  ['harvesting', 'harvest'],\n  ['championing', 'champion'],\n  ['alleviating', 'alleviate'],\n  ['compensating', 'compensate'],\n  ['tying', 'tie'],\n  ['decorating', 'decorate'],\n  ['crosscutting', 'crosscut'],\n  ['ignoring', 'ignore'],\n  ['extracting', 'extract'],\n  ['easing', 'ease'],\n  ['dedicating', 'dedicate'],\n  ['embarking', 'embark'],\n  ['prompting', 'prompt'],\n  ['cooking', 'cook'],\n  ['eroding', 'erode'],\n  ['narrowing', 'narrow'],\n  ['occupying', 'occupy'],\n  ['attaching', 'attach'],\n  ['implying', 'imply'],\n  ['duplicating', 'duplicate'],\n  ['slaughtering', 'slaughter'],\n  ['upholding', 'uphold'],\n  ['affirming', 'affirm'],\n  ['hauling', 'haul'],\n  ['fluctuating', 'fluctuate'],\n  ['lifting', 'lift'],\n  ['convening', 'convene'],\n  ['conforming', 'conform'],\n  ['mining', 'mine'],\n  ['rejecting', 'reject'],\n  ['substantiating', 'substantiate'],\n  ['liaising', 'liaise'],\n  ['devising', 'devise'],\n  ['navigating', 'navigate'],\n  ['catching', 'catch'],\n  ['revealing', 'reveal'],\n  ['racing', 'race'],\n  ['dampening', 'dampen'],\n  ['nesting', 'nest'],\n  ['resembling', 'resemble'],\n  ['curing', 'cure'],\n  ['disposing', 'dispose'],\n  ['sounding', 'sound'],\n  ['sweetening', 'sweeten'],\n  ['sowing', 'sow'],\n  ['tutoring', 'tutor'],\n  ['pricing', 'price'],\n  ['revisiting', 'revisit'],\n  ['grouping', 'group'],\n  ['substituting', 'substitute'],\n  ['thriving', 'thrive'],\n  ['hedging', 'hedge'],\n  ['lining', 'line'],\n  ['coaching', 'coach'],\n  ['netting', 'net'],\n  ['furnishing', 'furnish'],\n  ['polishing', 'polish'],\n  ['watering', 'water'],\n  ['supplementing', 'supplement'],\n  ['subscribing', 'subscribe'],\n  ['spinning', 'spin'],\n  ['synthesizing', 'synthesize'],\n  ['rethinking', 'rethink'],\n  ['intensifying', 'intensify'],\n  ['reciprocating', 'reciprocate'],\n  ['rescinding', 'rescind'],\n  ['ratifying', 'ratify'],\n  ['offending', 'offend'],\n  ['charting', 'chart'],\n  ['deploying', 'deploy'],\n  ['nearing', 'near'],\n  ['portraying', 'portray'],\n  ['catering', 'cater'],\n  ['damaging', 'damage'],\n  ['casting', 'cast'],\n  ['blowing', 'blow'],\n  ['ruling', 'rule'],\n  ['fleeing', 'flee'],\n  ['culminating', 'culminate'],\n  ['flowering', 'flower'],\n  ['discharging', 'discharge'],\n  ['converging', 'converge'],\n  ['spotting', 'spot'],\n  ['ticketing', 'ticket'],\n  ['quantifying', 'quantify'],\n  ['rating', 'rate'],\n  ['aiding', 'aid'],\n  ['bending', 'bend'],\n  ['relieving', 'relieve'],\n  ['quarrying', 'quarry'],\n  ['levelling', 'level'],\n  ['basing', 'base'],\n  ['wholesaling', 'wholesale'],\n  ['browsing', 'browse'],\n  ['leasing', 'lease'],\n  ['gauging', 'gauge'],\n  ['purifying', 'purify'],\n  ['interfering', 'interfere'],\n  ['lubricating', 'lubricate'],\n  ['exiting', 'exit'],\n  ['preferring', 'prefer'],\n  ['discouraging', 'discourage'],\n  ['camping', 'camp'],\n  ['spawning', 'spawn'],\n  ['bundling', 'bundle'],\n  ['conferring', 'confer'],\n  ['touching', 'touch'],\n  ['popping', 'pop'],\n  ['effecting', 'effect'],\n  ['inhibiting', 'inhibit'],\n  ['chewing', 'chew'],\n  ['underlining', 'underline'],\n  ['debriefing', 'debrief'],\n  ['contrasting', 'contrast'],\n  ['stretching', 'stretch'],\n  ['warning', 'warn'],\n  ['summing', 'sum'],\n  ['witnessing', 'witness'],\n  ['disappearing', 'disappear'],\n  ['chairing', 'chair'],\n  ['mating', 'mate'],\n  ['plaiting', 'plait'],\n  ['divorcing', 'divorce'],\n  ['piloting', 'pilot'],\n  ['speeding', 'speed'],\n  ['cancelling', 'cancel'],\n  ['digitizing', 'digitize'],\n  ['replicating', 'replicate'],\n  ['affording', 'afford'],\n  ['taxing', 'tax'],\n  ['redefining', 'redefin'],\n  ['opting', 'opt'],\n  ['constraining', 'constrain'],\n  ['publicizing', 'publicize'],\n  ['burning', 'burn'],\n  ['excavating', 'excavate'],\n  ['consenting', 'consent'],\n  ['grazing', 'graze'],\n  ['yellowing', 'yellow'],\n  ['ripening', 'ripen'],\n  ['songwriting', 'songwrite'],\n  ['standardizing', 'standardize'],\n  ['reminding', 'remind'],\n  ['remembering', 'remember'],\n  ['repositioning', 'reposition'],\n  ['tightening', 'tighten'],\n  ['lessening', 'lessen'],\n  ['circumventing', 'circumvent'],\n  ['seizing', 'seize'],\n  ['referencing', 'reference'],\n  ['locking', 'lock'],\n  ['sterilizing', 'sterilize'],\n  ['dyeing', 'dye'],\n  ['tending', 'tend'],\n  ['videoconferencing', 'videoconference'],\n  ['diagnosing', 'diagnose'],\n  ['reacting', 'react'],\n  ['descending', 'descend'],\n  ['looming', 'loom'],\n  ['waiving', 'waive'],\n  ['surging', 'surge'],\n  ['fitting', 'fit'],\n  ['clustering', 'cluster'],\n  ['lying', 'lie'],\n  ['stalking', 'stalk'],\n  ['wilting', 'wilt'],\n  ['backing', 'back'],\n  ['stitching', 'stitch'],\n  ['tailoring', 'tailor'],\n  ['rooting', 'root'],\n  ['migrating', 'migrate'],\n  ['hurting', 'hurt'],\n  ['rebounding', 'rebound'],\n  ['expediting', 'expedite'],\n  ['unveiling', 'unveil'],\n  ['canoeing', 'canoe'],\n  ['accumulating', 'accumulate'],\n  ['deterring', 'deter'],\n  ['immigrating', 'immigrate'],\n  ['attacking', 'attack'],\n  ['reaffirming', 'reaffirm'],\n  ['fencing', 'fence'],\n  ['capping', 'cap'],\n  ['colouring', 'colour'],\n  ['germinating', 'germinate'],\n  ['freezing', 'freeze'],\n  ['remedying', 'remedy'],\n  ['absorbing', 'absorb'],\n  ['splitting', 'split'],\n  ['boating', 'boat'],\n  ['equipping', 'equip'],\n  ['typing', 'type'],\n  ['formalizing', 'formalize'],\n  ['scaling', 'scale'],\n  ['defaulting', 'default'],\n  ['soldering', 'solder'],\n  ['knitting', 'knit'],\n  ['decoding', 'decode'],\n  ['fishing', 'fish'],\n  ['sacrificing', 'sacrifice'],\n  ['renovating', 'renovate'],\n  ['hanging', 'hang'],\n  ['augmenting', 'augment'],\n  ['relaxing', 'relax'],\n  ['endorsing', 'endorse'],\n  ['shortening', 'shorten'],\n  ['recycling', 'recycle'],\n  ['repeating', 'repeat'],\n  ['hindering', 'hinder'],\n  ['undercutting', 'undercut'],\n  ['fingerprinting', 'fingerprint'],\n  ['displacing', 'displace'],\n  ['dismantling', 'dismantle'],\n  ['emitting', 'emit'],\n  ['countering', 'counter'],\n  ['cracking', 'crack'],\n  ['stunting', 'stunt'],\n  ['flavouring', 'flavour'],\n  ['scripting', 'script'],\n  ['injecting', 'inject'],\n  ['twinning', 'twin'],\n  ['breathing', 'breathe'],\n  ['boarding', 'board'],\n  ['boiling', 'boil'],\n  ['ticking', 'tick'],\n  ['greeting', 'greet'],\n  ['triggering', 'trigger'],\n  ['rewarding', 'reward'],\n  ['fruiting', 'fruit'],\n  ['stipulating', 'stipulate'],\n  ['threading', 'thread'],\n  ['experimenting', 'experiment'],\n  ['blurring', 'blur'],\n  ['redesigning', 'redesign'],\n  ['paging', 'page'],\n  ['jumping', 'jump'],\n  ['crowding', 'crowd'],\n  ['associating', 'associate'],\n  ['carving', 'carve'],\n  ['freeing', 'free'],\n  ['accomplishing', 'accomplish'],\n  ['recalling', 'recall'],\n  ['penetrating', 'penetrate'],\n  ['tubing', 'tube'],\n  ['stiffening', 'stiffen'],\n  ['discriminating', 'discriminate'],\n  ['framing', 'frame'],\n  ['spearheading', 'spearhead'],\n  ['disabling', 'disable'],\n  ['keying', 'key'],\n  ['flaming', 'flame'],\n  ['tripling', 'triple'],\n  ['sizing', 'size'],\n  ['outpacing', 'outpace'],\n  ['expiring', 'expire'],\n  ['attributing', 'attribute'],\n  ['skating', 'skate'],\n  ['diverting', 'divert'],\n  ['insisting', 'insist'],\n  ['golfing', 'golf'],\n  ['reaping', 'reap'],\n  ['urging', 'urge'],\n  ['winding', 'wind'],\n  ['lighting', 'light'],\n  ['signifying', 'signify'],\n  ['debating', 'debate'],\n  ['weighting', 'weight'],\n  ['procuring', 'procure'],\n  ['compounding', 'compound'],\n  ['decommissioning', 'decommission'],\n  ['embodying', 'embody'],\n  ['dispersing', 'disperse'],\n  ['boring', 'bore'],\n  ['centralizing', 'centralize'],\n  ['crafting', 'craft'],\n  ['alerting', 'alert'],\n  ['deferring', 'defer'],\n  ['handing', 'hand'],\n  ['curbing', 'curb'],\n  ['discounting', 'discount'],\n  ['asserting', 'assert'],\n  ['shining', 'shine'],\n  ['milking', 'milk'],\n  ['grappling', 'grapple'],\n  ['donating', 'donate'],\n  ['tuning', 'tune'],\n  ['proofreading', 'proofread'],\n  ['lapsing', 'lapse'],\n  ['slitting', 'slit'],\n  ['ascending', 'ascend'],\n  ['insuring', 'insure'],\n  ['complicating', 'complicate'],\n  ['dining', 'dine'],\n  ['lapping', 'lap'],\n  ['bathing', 'bath'],\n  ['beating', 'beat'],\n  ['stripping', 'strip'],\n  ['transiting', 'transit'],\n  ['tagging', 'tag'],\n  ['plugging', 'plug'],\n  ['mediating', 'mediate'],\n  ['belting', 'belt'],\n  ['injuring', 'injure'],\n  ['reclaiming', 'reclaim'],\n  ['repackaging', 'repackage'],\n  ['rationing', 'ration'],\n  ['retooling', 'retool'],\n  ['subtitling', 'subtitle'],\n  ['probing', 'probe'],\n  ['draining', 'drain'],\n  ['swimming', 'swim'],\n  ['paving', 'pave'],\n  ['complaining', 'complain'],\n  ['overlapping', 'overlap'],\n  ['administrating', 'administrate'],\n  ['suspending', 'suspend'],\n  ['barring', 'bar'],\n  ['postponing', 'postpone'],\n  ['moderating', 'moderate'],\n  ['convincing', 'convince'],\n  ['unwavering', 'unwaver'],\n  ['unfolding', 'unfold'],\n  ['manipulating', 'manipulate'],\n  ['metering', 'meter'],\n  ['disrupting', 'disrupt'],\n  ['ranching', 'ranch'],\n  ['mastering', 'master'],\n  ['captioning', 'caption'],\n  ['smelting', 'smelt'],\n  ['tampering', 'tamper'],\n  ['smoothing', 'smooth'],\n  ['bleaching', 'bleach'],\n  ['aggregating', 'aggregate'],\n  ['arming', 'arm'],\n  ['coinciding', 'coincide'],\n  ['pairing', 'pair'],\n  ['dwindling', 'dwindle'],\n  ['docking', 'dock'],\n  ['rafting', 'raft'],\n  ['categorizing', 'categorize'],\n  ['exerting', 'exert'],\n  ['jeopardizing', 'jeopardize'],\n  ['throwing', 'throw'],\n  ['landscaping', 'landscape'],\n  ['acceding', 'accede'],\n  ['stealing', 'steal'],\n  ['accrediting', 'accredit'],\n  ['foregoing', 'forego'],\n  ['sensitizing', 'sensitize'],\n  ['dissolving', 'dissolve'],\n  ['wrestling', 'wrestle'],\n  ['extruding', 'extrude'],\n  ['diverging', 'diverge'],\n  ['grafting', 'graft'],\n  ['fasting', 'fast'],\n  ['transcribing', 'transcribe'],\n  ['boxing', 'box'],\n  ['detaining', 'detain'],\n  ['forgetting', 'forget'],\n  ['encoding', 'encode'],\n  ['shedding', 'shed'],\n  ['suppressing', 'suppress'],\n  ['banning', 'ban'],\n  ['stirring', 'stir'],\n  ['gambling', 'gamble'],\n  ['encountering', 'encounter'],\n  ['simulating', 'simulate'],\n  ['commuting', 'commute'],\n  ['trimming', 'trim'],\n  ['abandoning', 'abandon'],\n  ['firing', 'fire'],\n  ['scrambling', 'scramble'],\n  ['ceasing', 'cease'],\n  ['polluting', 'pollute'],\n  ['precluding', 'preclude'],\n  ['transacting', 'transact'],\n  ['inducing', 'induce'],\n  ['unpacking', 'unpack'],\n  ['perforating', 'perforate'],\n  ['licencing', 'licence'],\n  ['realigning', 'realign'],\n  ['splashing', 'splash'],\n  ['decaying', 'decay'],\n  ['coating', 'coat'],\n  ['gluing', 'glue'],\n  ['isolating', 'isolate'],\n  ['blanketing', 'blanket'],\n  ['slipping', 'slip'],\n  ['worsening', 'worsen'],\n  ['softening', 'soften'],\n  ['escaping', 'escape'],\n  ['drifting', 'drift'],\n  ['hampering', 'hamper'],\n  ['creeping', 'creep'],\n  ['bolstering', 'bolster'],\n  ['garnering', 'garner'],\n  ['hiding', 'hide'],\n  ['ionizing', 'ionize'],\n  ['marrying', 'marry'],\n  ['rebalancing', 'rebalance'],\n  ['repaying', 'repay'],\n  ['shearing', 'shear'],\n  ['catalyzing', 'catalyze'],\n  ['girdling', 'girdle'],\n  ['confounding', 'confound'],\n  ['piling', 'pile'],\n  ['amplifying', 'amplify'],\n  ['rationalizing', 'rationalize'],\n  ['slicing', 'slice'],\n  ['refreshing', 'refresh'],\n  ['composing', 'compose'],\n  ['astounding', 'astound'],\n  ['discontinuing', 'discontinue'],\n  ['subcontracting', 'subcontract'],\n  ['underscoring', 'underscore'],\n  ['shopping', 'shop'],\n  ['flooding', 'flood'],\n  ['abolishing', 'abolish'],\n  ['factoring', 'factor'],\n  ['conflicting', 'conflict'],\n  ['towing', 'tow'],\n  ['deserving', 'deserve'],\n  ['sticking', 'stick'],\n  ['embossing', 'emboss'],\n  ['synchronizing', 'synchronize'],\n  ['resuming', 'resume'],\n  ['vetting', 'vet'],\n  ['instructing', 'instruct'],\n  ['calibrating', 'calibrate'],\n  ['enclosing', 'enclose'],\n  ['taping', 'tape'],\n  ['ascertaining', 'ascertain'],\n  ['predisposing', 'predispose'],\n  ['farrowing', 'farrow'],\n  ['planing', 'plane'],\n  ['smoking', 'smoke'],\n  ['activating', 'activate'],\n  ['resorting', 'resort'],\n  ['wondering', 'wonder'],\n  ['neutralizing', 'neutralize'],\n  ['automating', 'automate'],\n  ['extenuating', 'extenuate'],\n  ['relocating', 'relocate'],\n  ['topping', 'top'],\n  ['eliciting', 'elicit'],\n  ['socializing', 'socialize'],\n  ['trailing', 'trail'],\n  ['enticing', 'entice'],\n  ['dictating', 'dictate'],\n  ['sleeping', 'sleep'],\n  ['curling', 'curl'],\n  ['starring', 'star'],\n  ['babysitting', 'babysit'],\n  ['solidifying', 'solidify'],\n  ['uniting', 'unite'],\n  ['aspiring', 'aspire'],\n  ['trampling', 'trample'],\n  ['teaming', 'team'],\n  ['appraising', 'appraise'],\n  ['delegating', 'delegate'],\n  ['confining', 'confine'],\n  ['fertilizing', 'fertilize'],\n  ['reinstating', 'reinstate'],\n  ['banding', 'band'],\n  ['pickling', 'pickle'],\n  ['tunnelling', 'tunnel'],\n  ['piercing', 'pierce'],\n  ['frying', 'fry'],\n  ['redressing', 'redress'],\n  ['engendering', 'engender'],\n  ['prosecuting', 'prosecute'],\n  ['sentencing', 'sentence'],\n  ['depositing', 'deposit'],\n  ['enduring', 'endure'],\n  ['elevating', 'elevate'],\n  ['rallying', 'rally'],\n  ['flattening', 'flatten'],\n  ['painting', 'paint'],\n  ['dancing', 'dance'],\n  ['airing', 'air'],\n  ['gearing', 'gear'],\n  ['ramping', 'ramp'],\n  ['skyrocketing', 'skyrocket'],\n  ['dominating', 'dominate'],\n  ['tasting', 'taste'],\n  ['pitching', 'pitch'],\n  ['steaming', 'steam'],\n  ['impairing', 'impair'],\n  ['ventilating', 'ventilate'],\n  ['damping', 'damp'],\n  ['scouring', 'scour'],\n  ['revoking', 'revoke'],\n  ['contaminating', 'contaminate'],\n  ['franchising', 'franchise'],\n  ['deeming', 'deem'],\n  ['zeroing', 'zero'],\n  ['cohabiting', 'cohabit'],\n  ['intersecting', 'intersect'],\n  ['dubbing', 'dub'],\n  ['merchandizing', 'merchandize'],\n  ['adjudicating', 'adjudicate'],\n  ['saluting', 'salute'],\n  ['annealing', 'anneal'],\n  ['dismissing', 'dismiss'],\n  ['subjecting', 'subject'],\n  ['excepting', 'except'],\n  ['reorganizing', 'reorganize'],\n  ['drumming', 'drum'],\n  ['sanctioning', 'sanction'],\n  ['elaborating', 'elaborate'],\n  ['waning', 'wane'],\n  ['restraining', 'restrain'],\n  ['perpetuating', 'perpetuate'],\n  ['curtailing', 'curtail'],\n  ['illuminating', 'illuminate'],\n  ['prolonging', 'prolong'],\n  ['refuelling', 'refuel'],\n  ['recognising', 'recognise'],\n  ['brazing', 'braze'],\n  ['galvanizing', 'galvanize'],\n  ['amalgamating', 'amalgamate'],\n  ['inciting', 'incite'],\n  ['vending', 'vend'],\n  ['reselling', 'resell'],\n  ['customizing', 'customize'],\n  ['canvassing', 'canvass'],\n  ['microfilming', 'microfilm'],\n  ['weeding', 'weed'],\n  ['brokering', 'broker'],\n  ['policymaking', 'policymak'],\n  ['tilling', 'till'],\n  ['rotting', 'rot'],\n  ['melting', 'melt'],\n  ['terracing', 'terrace'],\n  ['sucking', 'suck'],\n  ['reigning', 'reign'],\n  ['aerating', 'aerate'],\n  ['diluting', 'dilute'],\n  ['backwashing', 'backwash'],\n  ['admitting', 'admit'],\n  ['underperforming', 'underperform'],\n  ['resting', 'rest'],\n  ['surfing', 'surf'],\n  ['abusing', 'abuse'],\n  ['interlocking', 'interlock'],\n  ['embedding', 'embed'],\n  ['billing', 'bill'],\n  ['faxing', 'fax'],\n  ['invading', 'invade'],\n  ['distilling', 'distil'],\n  ['swelling', 'swell'],\n  ['tipping', 'tip'],\n  ['electing', 'elect'],\n  ['confusing', 'confuse'],\n  ['reinvesting', 'reinvest'],\n  ['spurring', 'spur'],\n  ['hardening', 'harden'],\n  ['bordering', 'border'],\n  ['polarizing', 'polarize'],\n  ['singing', 'sing'],\n  ['resisting', 'resist'],\n  ['necessitating', 'necessitate'],\n  ['reopening', 'reopen'],\n  ['pledging', 'pledge'],\n  ['reshaping', 'reshape'],\n  ['overarching', 'overarch'],\n  ['wintering', 'winter'],\n  ['modulating', 'modulate'],\n  ['baling', 'bale'],\n  ['threshing', 'thresh'],\n  ['potting', 'pot'],\n  ['landing', 'land'],\n  ['remitting', 'remit'],\n  ['sifting', 'sift'],\n  ['penalizing', 'penalize'],\n  ['boning', 'bone'],\n  ['disregarding', 'disregard'],\n  ['encapsulating', 'encapsulate'],\n  ['rectifying', 'rectify'],\n  ['concealing', 'conceal'],\n  ['intercepting', 'intercept'],\n  ['proclaiming', 'proclaim'],\n  ['laminating', 'laminate'],\n  ['figuring', 'figure'],\n  ['paddling', 'paddle'],\n  ['faring', 'fare'],\n  ['depriving', 'deprive'],\n  ['evidencing', 'evidence'],\n  ['corresponding', 'correspond'],\n  ['reeling', 'reel'],\n  ['crimping', 'crimp'],\n  ['edging', 'edge'],\n  ['anchoring', 'anchor'],\n  ['uncovering', 'uncover'],\n  ['flourishing', 'flourish'],\n  ['scratching', 'scratch'],\n  ['honing', 'hone'],\n  ['reinventing', 'reinvent'],\n  ['mandating', 'mandate'],\n  ['objecting', 'object'],\n  ['revolving', 'revolve'],\n  ['deleting', 'delete'],\n  ['spelling', 'spell'],\n  ['quitting', 'quit'],\n  ['pouring', 'pour'],\n  ['budgeting', 'budget'],\n  ['teleconferencing', 'teleconference'],\n  ['wasting', 'waste'],\n  ['reallocating', 'reallocate'],\n  ['sanding', 'sand'],\n  ['shadowing', 'shadow'],\n  ['punching', 'punch'],\n  ['infecting', 'infect'],\n  ['ploughing', 'plough'],\n  ['disinfecting', 'disinfect'],\n  ['wiping', 'wipe'],\n  ['condensing', 'condense'],\n  ['redistributing', 'redistribute'],\n  ['housing', 'house'],\n  ['fastening', 'fasten'],\n  ['perfuming', 'perfume'],\n  ['calendering', 'calender'],\n  ['voicing', 'voice'],\n  ['mooring', 'moor'],\n  ['sinking', 'sink'],\n  ['unlocking', 'unlock'],\n  ['phoning', 'phone'],\n  ['risking', 'risk'],\n  ['heightening', 'heighten'],\n  ['reserving', 'reserve'],\n  ['breaching', 'breach'],\n  ['depreciating', 'depreciate'],\n  ['symbolizing', 'symbolize'],\n  ['underwriting', 'underwrite'],\n  ['regaining', 'regain'],\n  ['depleting', 'deplete'],\n  ['detracting', 'detract'],\n  ['sprouting', 'sprout'],\n  ['energizing', 'energize'],\n  ['bagging', 'bag'],\n  ['overturning', 'overturn'],\n  ['entertaining', 'entertain'],\n  ['provoking', 'provoke'],\n  ['rehabilitating', 'rehabilitate'],\n  ['fracturing', 'fracture'],\n  ['desiring', 'desire'],\n  ['retreading', 'retread'],\n  ['steelmaking', 'steelmak'],\n  ['revamping', 'revamp'],\n  ['segregating', 'segregate'],\n  ['crawling', 'crawl'],\n  ['straightening', 'straighten'],\n  ['worrying', 'worry'],\n  ['perplexing', 'perplex'],\n  ['conceptualizing', 'conceptualize'],\n  ['monetizing', 'monetize'],\n  ['watermarking', 'watermark'],\n  ['humiliating', 'humiliate'],\n  ['remanufacturing', 'remanufacture'],\n  ['masking', 'mask'],\n  ['dialing', 'dial'],\n  ['exacerbating', 'exacerbate'],\n  ['inspiring', 'inspire'],\n  ['precipitating', 'precipitate'],\n  ['equating', 'equate'],\n  ['bypassing', 'bypass'],\n  ['enlarging', 'enlarge'],\n  ['omitting', 'omit'],\n  ['liberalizing', 'liberalize'],\n  ['luring', 'lure'],\n  ['pressuring', 'pressure'],\n  ['exploding', 'explode'],\n  ['shaking', 'shake'],\n  ['jogging', 'jog'],\n  ['propelling', 'propel'],\n  ['leaking', 'leak'],\n  ['surrendering', 'surrender'],\n  ['neglecting', 'neglect'],\n  ['imparting', 'impart'],\n  ['relaunching', 'relaunch'],\n  ['channelling', 'channel'],\n  ['remarking', 'remark'],\n  ['forbidding', 'forbid'],\n  ['disciplining', 'discipline'],\n  ['roaming', 'roam'],\n  ['clipping', 'clip'],\n  ['arresting', 'arrest'],\n  ['repealing', 'repeal'],\n  ['expending', 'expend'],\n  ['wetting', 'wet'],\n  ['irrigating', 'irrigate'],\n  ['decomposing', 'decompose'],\n  ['renaming', 'rename'],\n  ['ditching', 'ditch'],\n  ['emptying', 'empty'],\n  ['reassessing', 'reassess'],\n  ['vaccinating', 'vaccinate'],\n  ['bunching', 'bunch'],\n  ['denigrating', 'denigrate'],\n  ['sharpening', 'sharpen'],\n  ['punishing', 'punish'],\n  ['presuming', 'presume'],\n  ['testifying', 'testify'],\n  ['tolling', 'toll'],\n  ['indexing', 'index'],\n  ['retrieving', 'retrieve'],\n  ['snowshoeing', 'snowshoe'],\n  ['outperforming', 'outperform'],\n  ['downsizing', 'downsize'],\n  ['sparking', 'spark'],\n  ['echoing', 'echo'],\n  ['pinpointing', 'pinpoint'],\n  ['reconsidering', 'reconsider'],\n  ['overlooking', 'overlook'],\n  ['relaying', 'relay'],\n  ['enlisting', 'enlist'],\n  ['perfecting', 'perfect'],\n  ['branching', 'branch'],\n  ['commending', 'commend'],\n  ['pitting', 'pit'],\n  ['defeating', 'defeat'],\n  ['contravening', 'contravene'],\n  ['congratulating', 'congratulate'],\n  ['equalizing', 'equalize'],\n  ['nourishing', 'nourish'],\n  ['underfunding', 'underfund'],\n  ['retailing', 'retail'],\n  ['resurfacing', 'resurface'],\n  ['plotting', 'plot'],\n  ['lettering', 'letter'],\n  ['burying', 'bury'],\n  ['imputing', 'impute'],\n  ['degrading', 'degrade'],\n  ['flushing', 'flush'],\n  ['crusting', 'crust'],\n  ['spacing', 'space'],\n  ['shading', 'shade'],\n  ['notching', 'notch'],\n  ['scalding', 'scald'],\n  ['earmarking', 'earmark'],\n  ['refilling', 'refill'],\n  ['homogenizing', 'homogenize'],\n  ['disputing', 'dispute'],\n  ['kneading', 'knead'],\n  ['sintering', 'sinter'],\n  ['blinding', 'blind'],\n  ['swearing', 'swear'],\n  ['imaging', 'image'],\n  ['rejuvenating', 'rejuvenate'],\n  ['trawling', 'trawl'],\n  ['abiding', 'abide'],\n  ['plowing', 'plow'],\n  ['scrutinizing', 'scrutinize'],\n  ['segmenting', 'segment'],\n  ['excelling', 'excel'],\n  ['skiing', 'ski'],\n  ['dreaming', 'dream'],\n  ['exhilarating', 'exhilarate'],\n  ['hunting', 'hunt'],\n  ['disagreeing', 'disagree'],\n  ['wandering', 'wander'],\n  ['tilting', 'tilt'],\n  ['rearing', 'rear'],\n  ['overheating', 'overheat'],\n  ['dipping', 'dip'],\n  ['bustling', 'bustle'],\n  ['swapping', 'swap'],\n  ['recounting', 'recount'],\n  ['erecting', 'erect'],\n  ['redirecting', 'redirect'],\n  ['halting', 'halt'],\n  ['oscillating', 'oscillate'],\n  ['stuffing', 'stuff'],\n  ['quenching', 'quench'],\n  ['noticing', 'notice'],\n  ['reviving', 'revive'],\n  ['refurbishing', 'refurbish'],\n  ['vesting', 'vest'],\n  ['invoking', 'invoke'],\n  ['invalidating', 'invalidate'],\n  ['compressing', 'compress'],\n  ['venting', 'vent'],\n  ['merchandising', 'merchandise'],\n  ['divulging', 'divulge'],\n  ['subsisting', 'subsist'],\n  ['replying', 'reply'],\n  ['flashing', 'flash'],\n  ['straining', 'strain'],\n  ['proofing', 'proof'],\n  ['vaporizing', 'vaporize'],\n  ['foraging', 'forage'],\n  ['budding', 'bud'],\n  ['staining', 'stain'],\n  ['grooving', 'groove'],\n  ['wounding', 'wound'],\n  ['delineating', 'delineate'],\n  ['lactating', 'lactate'],\n  ['pleasing', 'please'],\n  ['clotting', 'clot'],\n  ['promulgating', 'promulgate'],\n  ['legitimizing', 'legitimize'],\n  ['demystifying', 'demystify'],\n  ['pulping', 'pulp'],\n  ['generalizing', 'generalize'],\n  ['orienting', 'orient'],\n  ['broaching', 'broach'],\n  ['folding', 'fold'],\n  ['birthing', 'birth'],\n  ['braking', 'brake'],\n  ['disfiguring', 'disfigure'],\n  ['stifling', 'stifle'],\n  ['boasting', 'boast'],\n  ['timing', 'time'],\n  ['reassuring', 'reassure'],\n  ['vacationing', 'vacation'],\n  ['sparing', 'spare'],\n  ['regrouping', 'regroup'],\n  ['tacking', 'tack'],\n  ['chucking', 'chuck'],\n  ['bleeding', 'bleed'],\n  ['entrenching', 'entrench'],\n  ['clamping', 'clamp'],\n  ['cashing', 'cash'],\n  ['gratifying', 'gratify'],\n  ['maximising', 'maximise'],\n  ['reprinting', 'reprint'],\n  ['rinsing', 'rinse'],\n  ['familiarizing', 'familiarize'],\n  ['recouping', 'recoup'],\n  ['cementing', 'cement'],\n  ['scraping', 'scrape'],\n  ['democratizing', 'democratize'],\n  ['grasping', 'grasp'],\n  ['defraying', 'defray'],\n  ['normalizing', 'normalize'],\n  ['weaning', 'wean'],\n  ['extrapolating', 'extrapolate'],\n  ['cycling', 'cycle'],\n  ['disbursing', 'disburse'],\n  ['endeavouring', 'endeavour'],\n  ['molting', 'molt'],\n  ['devolving', 'devolve'],\n  ['blossoming', 'blossom'],\n  ['wading', 'wade'],\n  ['refuting', 'refute'],\n  ['escorting', 'escort'],\n  ['disembarking', 'disembark'],\n  ['strapping', 'strap'],\n  ['reclining', 'recline'],\n  ['privatizing', 'privatize'],\n  ['dredging', 'dredge'],\n  ['abating', 'abate'],\n  ['compelling', 'compel'],\n  ['mirroring', 'mirror'],\n  ['organising', 'organise'],\n  ['warming', 'warm'],\n  ['waving', 'wave'],\n  ['tumbling', 'tumble'],\n  ['battling', 'battle'],\n  ['contending', 'contend'],\n  ['intimidating', 'intimidate'],\n  ['pampering', 'pamper'],\n  ['lengthening', 'lengthen'],\n  ['invigorating', 'invigorate'],\n  ['spotlighting', 'spotlight'],\n  ['apportioning', 'apportion'],\n  ['authoring', 'authore'],\n  ['persisting', 'persist'],\n  ['tempering', 'temper'],\n  ['preaching', 'preach'],\n  ['vying', 'vie'],\n  ['evaporating', 'evaporate'],\n  ['crumbling', 'crumble'],\n  ['bracing', 'brace'],\n  ['bubbling', 'bubble'],\n  ['grooming', 'groom'],\n  ['reusing', 'reuse'],\n  ['repatriating', 'repatriate'],\n  ['unraveling', 'unravel'],\n  ['piping', 'pipe'],\n  ['engineering', 'engineer'],\n  ['chipping', 'chip'],\n  ['clogging', 'clog'],\n  ['malfunctioning', 'malfunction'],\n  ['alloying', 'alloy'],\n  ['minding', 'mind'],\n  ['appropriating', 'appropriate'],\n  ['authenticating', 'authenticate'],\n  ['videotaping', 'videotape'],\n  ['warranting', 'warrant'],\n  ['reprocessing', 'reprocess'],\n  ['affixing', 'affix'],\n  ['shattering', 'shatter'],\n  ['falsifying', 'falsify'],\n  ['bursting', 'burst'],\n  ['reworking', 'rework'],\n  ['renegotiating', 'renegotiate'],\n  ['refocusing', 'refocus'],\n  ['inventing', 'invent'],\n  ['sculpting', 'sculpt'],\n  ['economizing', 'economize'],\n  ['encrypting', 'encrypt'],\n  ['sheltering', 'shelter'],\n  ['fogging', 'fog'],\n  ['harrowing', 'harrow'],\n  ['shredding', 'shred'],\n  ['browning', 'brown'],\n  ['bruising', 'bruise'],\n  ['trucking', 'truck'],\n  ['interrupting', 'interrupt'],\n  ['denoting', 'denote'],\n  ['surfacing', 'surface'],\n  ['breading', 'bread'],\n  ['fragmenting', 'fragment'],\n  ['legislating', 'legislate'],\n  ['frustrating', 'frustrate'],\n  ['surprising', 'surprise'],\n  ['gardening', 'garden'],\n  ['bowling', 'bowl'],\n  ['elucidating', 'elucidate'],\n  ['blanking', 'blank'],\n  ['stapling', 'staple'],\n  ['felling', 'fell'],\n  ['eviscerating', 'eviscerate'],\n  ['imprinting', 'imprint'],\n  ['hemming', 'hem'],\n  ['sheeting', 'sheet'],\n  ['puffing', 'puff'],\n  ['kicking', 'kick'],\n  ['imagining', 'imagine'],\n  ['uttering', 'utter'],\n  ['resubmitting', 'resubmit'],\n  ['fallowing', 'fallow'],\n  ['drowning', 'drown'],\n  ['behaving', 'behave'],\n  ['rewriting', 'rewrite'],\n  ['polling', 'poll'],\n  ['trekking', 'trek'],\n  ['aggravating', 'aggravate'],\n  ['hovering', 'hover'],\n  ['encroaching', 'encroach'],\n  ['persuading', 'persuade'],\n  ['fading', 'fade'],\n  ['stagnating', 'stagnate'],\n  ['bucking', 'buck'],\n  ['shutting', 'shut'],\n  ['soaking', 'soak'],\n  ['fearing', 'fear'],\n  ['knocking', 'knock'],\n  ['biting', 'bite'],\n  ['banking', 'bank'],\n  ['incubating', 'incubate'],\n  ['globalizing', 'globalize'],\n  ['thawing', 'thaw'],\n  ['revolutionizing', 'revolutionize'],\n  ['pounding', 'pound'],\n  ['grabbing', 'grab'],\n  ['delving', 'delve'],\n  ['contesting', 'contest'],\n  ['criticizing', 'criticize'],\n  ['mourning', 'mourn'],\n  ['manifesting', 'manifest'],\n  ['decentralizing', 'decentralize'],\n  ['reiterating', 'reiterate'],\n  ['inquiring', 'inquire'],\n  ['sewing', 'sew'],\n  ['availing', 'avail'],\n  ['relinquishing', 'relinquish'],\n  ['silencing', 'silence'],\n  ['patching', 'patch'],\n  ['instilling', 'instill'],\n  ['offloading', 'offload'],\n  ['zoning', 'zone'],\n  ['bolting', 'bolt'],\n  ['meshing', 'mesh'],\n  ['profiting', 'profit'],\n  ['sequestering', 'sequester'],\n  ['tabulating', 'tabulate'],\n  ['dwarfing', 'dwarf'],\n  ['bronzing', 'bronze'],\n  ['digging', 'dig'],\n  ['scarring', 'scar'],\n  ['skinning', 'skin'],\n  ['burrowing', 'burrow'],\n  ['reorienting', 'reorient'],\n  ['reasoning', 'reason'],\n  ['grossing', 'gross'],\n  ['reconditioning', 'recondition'],\n  ['fermenting', 'ferment'],\n  ['preexisting', 'preexist'],\n  ['speculating', 'speculate'],\n  ['averting', 'avert'],\n  ['emulsifying', 'emulsify'],\n  ['marinating', 'marinate'],\n  ['marginalizing', 'marginalize'],\n  ['smudging', 'smudge'],\n  ['implicating', 'implicate'],\n  ['vanishing', 'vanish'],\n  ['engraving', 'engrave'],\n  ['tearing', 'tear'],\n  ['fusing', 'fuse'],\n  ['slotting', 'slot'],\n  ['concurring', 'concur'],\n  ['spoofing', 'spoof'],\n  ['decrypting', 'decrypt'],\n  ['advertising', 'advertise'],\n  ['interdicting', 'interdict'],\n  ['foaming', 'foam'],\n  ['dosing', 'dose'],\n  ['interlining', 'interline'],\n  ['burnishing', 'burnish'],\n  ['singeing', 'singe'],\n  ['electrogalvanizing', 'electrogalvanize'],\n  ['trusting', 'trust'],\n  ['overflowing', 'overflow'],\n  ['immersing', 'immerse'],\n  ['flocking', 'flock'],\n  ['chatting', 'chat'],\n  ['roughing', 'rough'],\n  ['looping', 'loop'],\n  ['outfitting', 'outfit'],\n  ['receding', 'recede'],\n  ['dragging', 'drag'],\n  ['centering', 'center'],\n  ['harbouring', 'harbour'],\n  ['bumping', 'bump'],\n  ['decelerating', 'decelerate'],\n  ['venturing', 'venture'],\n  ['alienating', 'alienate'],\n  ['roasting', 'roast'],\n  ['cabling', 'cable'],\n  ['manoeuvring', 'manoeuvre'],\n  ['occuring', 'occure'],\n  ['firefighting', 'firefight'],\n  ['chronicling', 'chronicle'],\n  ['fabricating', 'fabricate'],\n  ['obliging', 'oblige'],\n  ['enlightening', 'enlighten'],\n  ['rescheduling', 'reschedule'],\n  ['destabilizing', 'destabilize'],\n  ['resigning', 'resign'],\n  ['caulking', 'caulk'],\n  ['reordering', 'reorder'],\n  ['diffusing', 'diffuse'],\n  ['flooring', 'floor'],\n  ['powering', 'power'],\n  ['forgoing', 'forgo'],\n  ['shoplifting', 'shoplift'],\n  ['vulcanizing', 'vulcanize'],\n  ['radiating', 'radiate'],\n  ['subdividing', 'subdivide'],\n  ['daunting', 'daunt'],\n  ['uprooting', 'uproot'],\n  ['discing', 'disc'],\n  ['sanitizing', 'sanitize'],\n  ['endangering', 'endanger'],\n  ['buffering', 'buffer'],\n  ['parking', 'park'],\n  ['dispelling', 'dispel'],\n  ['propagating', 'propagate'],\n  ['fumigating', 'fumigate'],\n  ['mottling', 'mottle'],\n  ['lightening', 'lighten'],\n  ['reapplying', 'reapply'],\n  ['blaming', 'blame'],\n  ['prejudging', 'prejudge'],\n  ['flaking', 'flake'],\n  ['depressing', 'depress'],\n  ['trenching', 'trench'],\n  ['dehydrating', 'dehydrate'],\n  ['emulating', 'emulate'],\n  ['conceiving', 'conceive'],\n  ['hailing', 'hail'],\n  ['unleashing', 'unleash'],\n  ['upsetting', 'upset'],\n  ['immunizing', 'immunize'],\n  ['antagonizing', 'antagonize'],\n  ['racking', 'rack'],\n  ['typesetting', 'typeset'],\n  ['hardworking', 'hardwork'],\n  ['accentuating', 'accentuate'],\n  ['awakening', 'awaken'],\n  ['headlining', 'headline'],\n  ['reprogramming', 'reprogram'],\n  ['pasting', 'paste'],\n  ['disassembling', 'disassemble'],\n  ['assaulting', 'assault'],\n  ['extinguishing', 'extinguish'],\n  ['disobeying', 'disobey'],\n  ['reuniting', 'reunite'],\n  ['stigmatizing', 'stigmatize'],\n  ['commingling', 'commingle'],\n  ['icing', 'ice'],\n  ['unlading', 'unlade'],\n  ['detonating', 'detonate'],\n  ['bunkering', 'bunker'],\n  ['vulcanising', 'vulcanise'],\n  ['descaling', 'descale'],\n  ['priming', 'prime'],\n  ['autoclaving', 'autoclave'],\n  ['praising', 'praise'],\n  ['twisting', 'twist'],\n  ['scrubbing', 'scrub'],\n  ['spilling', 'spill'],\n  ['receipting', 'receipt'],\n  ['telephoning', 'telephone'],\n  ['bragging', 'brag'],\n  ['replenishing', 'replenish'],\n  ['materializing', 'materialize'],\n  ['majoring', 'major'],\n  ['sightseeing', 'sightsee'],\n  ['emphasising', 'emphasise'],\n  ['unwinding', 'unwind'],\n  ['decompressing', 'decompress'],\n  ['visualizing', 'visualize'],\n  ['grounding', 'ground'],\n  ['clouding', 'cloud'],\n  ['actualizing', 'actualize'],\n  ['stalling', 'stall'],\n  ['billeting', 'billet'],\n  ['lecturing', 'lecture'],\n  ['conspiring', 'conspire'],\n  ['rearranging', 'rearrange'],\n  ['outstripping', 'outstrip'],\n  ['interesting', 'interest'],\n  ['plummeting', 'plummet'],\n  ['plunging', 'plunge'],\n  ['inflating', 'inflate'],\n  ['corroborating', 'corroborate'],\n  ['brightening', 'brighten'],\n  ['raging', 'rage'],\n  ['roving', 'rove'],\n  ['stencilling', 'stencil'],\n  ['rescuing', 'rescue'],\n  ['daring', 'dare'],\n  ['laughing', 'laugh'],\n  ['busking', 'busk'],\n  ['juggling', 'juggle'],\n  ['sailing', 'sail'],\n  ['predating', 'predate'],\n  ['reconstructing', 'reconstruct'],\n  ['conquering', 'conquer'],\n  ['electroplating', 'electroplate'],\n  ['alluding', 'allude'],\n  ['nullifying', 'nullify'],\n  ['contradicting', 'contradict'],\n  ['recharging', 'recharg'],\n  ['entitling', 'entitle'],\n  ['impinging', 'impinge'],\n  ['liquidating', 'liquidate'],\n  ['tweaking', 'tweak'],\n  ['optimising', 'optimise'],\n  ['guarding', 'guard'],\n  ['spying', 'spy'],\n  ['conditioning', 'condition'],\n  ['embalming', 'embalm'],\n  ['choking', 'choke'],\n  ['sweeping', 'sweep'],\n  ['imitating', 'imitate'],\n  ['counteracting', 'counteract'],\n  ['deciphering', 'decipher'],\n  ['overcrowding', 'overcrowd'],\n  ['petitioning', 'petition'],\n  ['pollinating', 'pollinate'],\n  ['severing', 'sever'],\n  ['secreting', 'secrete'],\n  ['pasteurizing', 'pasteurize'],\n  ['blasting', 'blast'],\n  ['sugaring', 'sugar'],\n  ['redeveloping', 'redevelop'],\n  ['halving', 'halve'],\n  ['culling', 'cull'],\n  ['commanding', 'command'],\n  ['whipping', 'whip'],\n  ['bottling', 'bottle'],\n  ['pinning', 'pin'],\n  ['overlying', 'overlie'],\n  ['infiltrating', 'infiltrate'],\n  ['jetting', 'jet'],\n  ['trembling', 'tremble'],\n  ['swallowing', 'swallow'],\n  ['stewing', 'stew'],\n  ['brooding', 'brood'],\n  ['evading', 'evade'],\n  ['filleting', 'fillet'],\n  ['unifying', 'unify'],\n  ['teasing', 'tease'],\n  ['approximating', 'approximate'],\n  ['seating', 'seat'],\n  ['rocking', 'rock'],\n  ['briefing', 'brief'],\n  ['waking', 'wake'],\n  ['springing', 'spring'],\n  ['dabbling', 'dabble'],\n  ['prejudicing', 'prejudice'],\n  ['harassing', 'harass'],\n  ['mimicking', 'mimick'],\n  ['chasing', 'chase'],\n  ['crating', 'crate'],\n  ['retouching', 'retouch'],\n  ['hoisting', 'hoist'],\n  ['institutionalizing', 'institutionalize'],\n  ['condemning', 'condemn'],\n  ['humbling', 'humble'],\n  ['incapacitating', 'incapacitate'],\n  ['corrupting', 'corrupt'],\n  ['kneeling', 'kneel'],\n  ['lashing', 'lash'],\n  ['nailing', 'nail'],\n  ['vibrating', 'vibrate'],\n  ['reassembling', 'reassemble'],\n  ['supercalendering', 'supercalender'],\n  ['morticing', 'mortice'],\n  ['banting', 'bant'],\n  ['sheathing', 'sheath'],\n  ['diving', 'dive'],\n  ['abstracting', 'abstract'],\n  ['scrolling', 'scroll'],\n  ['kidding', 'kid'],\n  ['transcending', 'transcend'],\n  ['requisitioning', 'requisition'],\n  ['cruising', 'cruise'],\n  ['spiralling', 'spiral'],\n  ['loosing', 'loose'],\n  ['tramping', 'tramp'],\n  ['liking', 'like'],\n  ['laddering', 'ladder'],\n  ['chanting', 'chant'],\n  ['roaring', 'roar'],\n  ['bouncing', 'bounce'],\n  ['littering', 'litter'],\n  ['paralleling', 'parallel'],\n  ['photographing', 'photograph'],\n  ['fetching', 'fetch'],\n  ['cautioning', 'caution'],\n  ['shoring', 'shore'],\n  ['withstanding', 'withstand'],\n  ['overriding', 'override'],\n  ['inflicting', 'inflict'],\n  ['squeezing', 'squeeze'],\n  ['swinging', 'swing'],\n  ['smiling', 'smile'],\n  ['rushing', 'rush'],\n  ['blazing', 'blaze'],\n  ['swathing', 'swathe'],\n  ['recirculating', 'recirculate'],\n  ['bulking', 'bulk'],\n  ['incriminating', 'incriminate'],\n  ['liberating', 'liberate'],\n  ['molding', 'mold'],\n  ['endeavoring', 'endeavor'],\n  ['inhabiting', 'inhabit'],\n  ['faltering', 'falter'],\n  ['befitting', 'befit'],\n  ['grieving', 'grieve'],\n  ['stevedoring', 'stevedore'],\n  ['criminalizing', 'criminalize'],\n  ['dusting', 'dust'],\n  ['irritating', 'irritate'],\n  ['gaming', 'game'],\n  ['padding', 'pad'],\n  ['computerizing', 'computerize'],\n  ['underestimating', 'underestimate'],\n  ['envisioning', 'envision'],\n  ['clinging', 'cling'],\n  ['purporting', 'purport'],\n  ['reconfiguring', 'reconfigure'],\n  ['configuring', 'configure'],\n  ['oxidizing', 'oxidize'],\n  ['screaming', 'scream'],\n  ['levering', 'lever'],\n  ['visioning', 'vision'],\n  ['scaring', 'scare'],\n  ['pecking', 'peck'],\n  ['webbing', 'web'],\n  ['pupating', 'pupate'],\n  ['podding', 'pod'],\n  ['silking', 'silk'],\n  ['flecking', 'fleck'],\n  ['raking', 'rake'],\n  ['peeling', 'peel'],\n  ['enunciating', 'enunciate'],\n  ['mingling', 'mingle'],\n  ['disintegrating', 'disintegrate'],\n  ['fattening', 'fatten'],\n  ['cumulating', 'cumulate'],\n  ['grilling', 'grill'],\n  ['ingesting', 'ingest'],\n  ['fouling', 'foul'],\n  ['inferring', 'infer'],\n  ['refinancing', 'refinance'],\n  ['ceding', 'cede'],\n  ['suing', 'sue'],\n  ['interrogating', 'interrogate'],\n  ['contextualizing', 'contextualize'],\n  ['crediting', 'credit'],\n  ['overshooting', 'overshoot'],\n  ['lumping', 'lump'],\n  ['bewildering', 'bewilder'],\n  ['redrafting', 'redraft'],\n  ['firming', 'firm'],\n  ['disallowing', 'disallow'],\n  ['brimming', 'brim'],\n  ['feasting', 'feast'],\n  ['schooling', 'school'],\n  ['minimising', 'minimise'],\n  ['indemnifying', 'indemnify'],\n  ['assimilating', 'assimilate'],\n  ['gleaning', 'glean'],\n  ['cataloging', 'cataloge'],\n  ['pretending', 'pretend'],\n  ['tailing', 'tail'],\n  ['trafficking', 'traffick'],\n  ['skewing', 'skew'],\n  ['copyrighting', 'copyright'],\n  ['publicising', 'publicise'],\n  ['telecasting', 'telecast'],\n  ['orchestrating', 'orchestrate'],\n  ['erasing', 'erase'],\n  ['sniffing', 'sniff'],\n  ['dishwashing', 'dishwash'],\n  ['faceting', 'facet'],\n  ['immobilizing', 'immobilize'],\n  ['telescoping', 'telescope'],\n  ['interlacing', 'interlace'],\n  ['plastering', 'plaster'],\n  ['dieting', 'diet'],\n  ['ameliorating', 'ameliorate'],\n  ['dissecting', 'dissect'],\n  ['shelving', 'shelve'],\n  ['unforgiving', 'unforgive'],\n  ['assaying', 'assay'],\n  ['rerouting', 'reroute'],\n  ['fringing', 'fringe'],\n  ['reimbursing', 'reimburse'],\n  ['reintroducing', 'reintroduce'],\n  ['delighting', 'delight'],\n  ['sipping', 'sip'],\n  ['gliding', 'glide'],\n  ['ballooning', 'balloon'],\n  ['motoring', 'motor'],\n  ['wedding', 'wed'],\n  ['popularizing', 'popularize'],\n  ['outing', 'out'],\n  ['weathering', 'weather'],\n  ['chopping', 'chop'],\n  ['singling', 'single'],\n  ['relegating', 'relegate'],\n  ['industrializing', 'industrialize'],\n  ['pegging', 'peg'],\n  ['plaguing', 'plague'],\n  ['refraining', 'refrain'],\n  ['wooing', 'woo'],\n  ['obstructing', 'obstruct'],\n  ['stranding', 'strand'],\n  ['staking', 'stake'],\n  ['tiring', 'tire'],\n  ['devouring', 'devour'],\n  ['braising', 'braise'],\n  ['marching', 'march'],\n  ['streaking', 'streak'],\n  ['hacking', 'hack'],\n  ['quadrupling', 'quadruple'],\n  ['animating', 'animate'],\n  ['fashioning', 'fashion'],\n  ['moisturizing', 'moisturize'],\n  ['articling', 'article'],\n  ['applauding', 'applaud'],\n  ['appending', 'append'],\n  ['entailing', 'entail'],\n  ['superseding', 'supersede'],\n  ['resurrecting', 'resurrect'],\n  ['heeding', 'heed'],\n  ['evoking', 'evoke'],\n  ['deliberating', 'deliberate'],\n  ['afflicting', 'afflict'],\n  ['codifying', 'codify'],\n  ['outlawing', 'outlaw'],\n  ['disconcerting', 'disconcert'],\n  ['biasing', 'bias'],\n  ['deviating', 'deviate'],\n  ['guessing', 'guess'],\n  ['voiding', 'void'],\n  ['abutting', 'abut'],\n  ['leaning', 'lean'],\n  ['masquerading', 'masquerade'],\n  ['divesting', 'divest'],\n  ['underpricing', 'underprice'],\n  ['internalizing', 'internalize'],\n  ['redeeming', 'redeem'],\n  ['disentangling', 'disentangle'],\n  ['flaring', 'flare'],\n  ['coking', 'coke'],\n  ['pirating', 'pirate'],\n  ['unbundling', 'unbundle'],\n  ['shielding', 'shield'],\n  ['readying', 'ready'],\n  ['chaining', 'chain'],\n  ['protesting', 'protest'],\n  ['backdating', 'backdate'],\n  ['excusing', 'excuse'],\n  ['queuing', 'queue'],\n  ['rejoining', 'rejoin'],\n  ['overburdening', 'overburden'],\n  ['recreating', 'recreate'],\n  ['prospering', 'prosper'],\n  ['wagering', 'wager'],\n  ['calving', 'calve'],\n  ['gnawing', 'gnaw'],\n  ['sloping', 'slope'],\n  ['stratifying', 'stratify'],\n  ['blooming', 'bloom'],\n  ['smothering', 'smother'],\n  ['hilling', 'hill'],\n  ['chilling', 'chill'],\n  ['thickening', 'thicken'],\n  ['overspending', 'overspend'],\n  ['pursing', 'purse'],\n  ['itching', 'itch'],\n  ['gelling', 'gell'],\n  ['purging', 'purge'],\n  ['combing', 'comb'],\n  ['bartering', 'barter'],\n  ['pelleting', 'pellet'],\n  ['fobbing', 'fob'],\n  ['perching', 'perch'],\n  ['robbing', 'rob'],\n  ['cribbing', 'crib'],\n  ['predominating', 'predominate'],\n  ['pollarding', 'pollard'],\n  ['curving', 'curve'],\n  ['margining', 'margin'],\n  ['straying', 'stray'],\n  ['auctioning', 'auction'],\n  ['flipping', 'flip'],\n  ['bedding', 'bed'],\n  ['jointing', 'joint'],\n  ['marshalling', 'marshal'],\n  ['mutating', 'mutate'],\n  ['mothering', 'mother'],\n  ['hastening', 'hasten'],\n  ['collapsing', 'collapse'],\n  ['remunerating', 'remunerate'],\n  ['postulating', 'postulate'],\n  ['comprehending', 'comprehend'],\n  ['equilibrating', 'equilibrate'],\n  ['misinterpreting', 'misinterpret'],\n  ['recasting', 'recast'],\n  ['rehearsing', 'rehearse'],\n  ['devaluing', 'devalue'],\n  ['cheering', 'cheer'],\n  ['donning', 'don'],\n  ['mulling', 'mull'],\n  ['exemplifying', 'exemplify'],\n  ['acculturating', 'acculturate'],\n  ['frequenting', 'frequent'],\n  ['coproducing', 'coproduce'],\n  ['equaling', 'equal'],\n  ['legitimating', 'legitimate'],\n  ['conciliating', 'conciliate'],\n  ['interlinking', 'interlink'],\n  ['electrifying', 'electrify'],\n  ['succumbing', 'succumb'],\n  ['rebating', 'rebate'],\n  ['civilizing', 'civilize'],\n  ['inaugurating', 'inaugurate'],\n  ['interweaving', 'interweave'],\n  ['butchering', 'butcher'],\n  ['reinstituting', 'reinstitute'],\n  ['embarrassing', 'embarrass'],\n  ['denouncing', 'denounce'],\n  ['misunderstanding', 'misunderstand'],\n  ['bunking', 'bunk'],\n  ['initialling', 'initial'],\n  ['regenerating', 'regenerate'],\n  ['conjuring', 'conjure'],\n  ['smuggling', 'smuggle'],\n  ['embroidering', 'embroider'],\n  ['pinking', 'pink'],\n  ['undervaluing', 'undervalue'],\n  ['shaving', 'shave'],\n  ['compacting', 'compact'],\n  ['comminuting', 'comminute'],\n  ['clinching', 'clinch'],\n  ['agglomerating', 'agglomerate'],\n  ['shafting', 'shaft'],\n  ['bribing', 'bribe'],\n  ['overeating', 'overeat'],\n  ['relapsing', 'relapse'],\n  ['individualizing', 'individualize'],\n  ['complimenting', 'compliment'],\n  ['orphaning', 'orphan'],\n  ['culturing', 'culture'],\n  ['coughing', 'cough'],\n  ['downplaying', 'downplay'],\n  ['scattering', 'scatter'],\n  ['impressing', 'impress'],\n  ['prospecting', 'prospect'],\n  ['dispatching', 'dispatch'],\n  ['overwhelming', 'overwhelm'],\n  ['biking', 'bike'],\n  ['slashing', 'slash'],\n  ['rippling', 'ripple'],\n  ['exciting', 'excite'],\n  ['sunbathing', 'sunbathe'],\n  ['summarising', 'summarise'],\n  ['tobogganing', 'toboggan'],\n  ['utilising', 'utilise'],\n  ['sighting', 'sight'],\n  ['fronting', 'front'],\n  ['motorcycling', 'motorcycle'],\n  ['outselling', 'outsell'],\n  ['subduing', 'subdue'],\n  ['outshining', 'outshine'],\n  ['sketching', 'sketch'],\n  ['reentering', 'reenter'],\n  ['redeploying', 'redeploy'],\n  ['outnumbering', 'outnumber'],\n  ['gleaming', 'gleam'],\n  ['warring', 'war'],\n  ['penning', 'pen'],\n  ['darkening', 'darken'],\n  ['fluttering', 'flutter'],\n  ['reverberating', 'reverberate'],\n  ['previewing', 'preview'],\n  ['buzzing', 'buzz'],\n  ['haunting', 'haunt'],\n  ['undulating', 'undulate'],\n  ['smearing', 'smear'],\n  ['flapping', 'flap'],\n  ['crackling', 'crackle'],\n  ['deafening', 'deafen'],\n  ['labouring', 'labour'],\n  ['parachuting', 'parachute'],\n  ['snorkeling', 'snorkel'],\n  ['gutting', 'gut'],\n  ['downgrading', 'downgrade'],\n  ['enshrining', 'enshrine'],\n  ['rubbing', 'rub'],\n  ['melding', 'meld'],\n  ['propping', 'prop'],\n  ['annoying', 'annoy'],\n  ['gazing', 'gaze'],\n  ['assenting', 'assent'],\n  ['reciting', 'recite'],\n  ['emigrating', 'emigrate'],\n  ['ushering', 'usher'],\n  ['arousing', 'arouse'],\n  ['obeying', 'obey'],\n  ['battering', 'batter'],\n  ['distracting', 'distract'],\n  ['obviating', 'obviate'],\n  ['staggering', 'stagger'],\n  ['hooking', 'hook'],\n  ['reformulating', 'reformulate'],\n  ['refunding', 'refund'],\n  ['courting', 'court'],\n  ['overcharging', 'overcharge'],\n  ['cueing', 'cue'],\n  ['floundering', 'flounder'],\n  ['overshadowing', 'overshadow'],\n  ['wining', 'wine'],\n  ['tossing', 'toss'],\n  ['annualizing', 'annualize'],\n  ['envisaging', 'envisage'],\n  ['seeming', 'seem'],\n  ['restating', 'restate'],\n  ['reunifying', 'reunify'],\n  ['retreating', 'retreat'],\n  ['grandfathering', 'grandfather'],\n  ['quickening', 'quicken'],\n  ['doubting', 'doubt'],\n  ['disadvantaging', 'disadvantage'],\n  ['obscuring', 'obscure'],\n  ['seeping', 'seep'],\n  ['intercropping', 'intercrop'],\n  ['spitting', 'spit'],\n  ['prying', 'pry'],\n  ['shrivelling', 'shrivel'],\n  ['metabolizing', 'metabolize'],\n  ['puncturing', 'puncture'],\n  ['exuding', 'exude'],\n  ['protruding', 'protrude'],\n  ['blackening', 'blacken'],\n  ['rouging', 'rouge'],\n  ['ridging', 'ridge'],\n  ['stippling', 'stipple'],\n  ['winnowing', 'winnow'],\n  ['misusing', 'misuse'],\n  ['programing', 'program'],\n  ['deactivating', 'deactivate'],\n  ['recalculating', 'recalculate'],\n  ['paralyzing', 'paralyze'],\n  ['colluding', 'collude'],\n  ['demoralizing', 'demoralize'],\n  ['specialising', 'specialise'],\n  ['pasturing', 'pasture'],\n  ['meatpacking', 'meatpack'],\n  ['suckering', 'sucker'],\n  ['infusing', 'infuse'],\n  ['everchanging', 'everchange'],\n  ['bargaining', 'bargain'],\n  ['dialoguing', 'dialogue'],\n  ['favoring', 'favor'],\n  ['suffocating', 'suffocate'],\n  ['berthing', 'berth'],\n  ['disturbing', 'disturb'],\n  ['resettling', 'resettle'],\n  ['trolling', 'troll'],\n  ['inactivating', 'inactivate'],\n  ['clumping', 'clump'],\n  ['rephrasing', 'rephrase'],\n  ['dwelling', 'dwell'],\n  ['cheating', 'cheat'],\n  ['intermingling', 'intermingle'],\n  ['roosting', 'roost'],\n  ['ruffling', 'ruffle'],\n  ['huddling', 'huddle'],\n  ['quizzing', 'quiz'],\n  ['militating', 'militate'],\n  ['revitalising', 'revitalise'],\n  ['eschewing', 'eschew'],\n  ['glazing', 'glaze'],\n  ['patrolling', 'patrol'],\n  ['ankylosing', 'ankylose'],\n  ['joking', 'joke'],\n  ['bettering', 'better'],\n  ['consummating', 'consummate'],\n  ['proliferating', 'proliferate'],\n  ['defusing', 'defuse'],\n  ['deceiving', 'deceive'],\n  ['cushioning', 'cushion'],\n  ['extolling', 'extol'],\n  ['crystallizing', 'crystallize'],\n  ['localizing', 'localize'],\n  ['subsidising', 'subsidise'],\n  ['retarding', 'retard'],\n  ['belittling', 'belittle'],\n  ['dawning', 'dawn'],\n  ['captivating', 'captivate'],\n  ['modernising', 'modernise'],\n  ['toasting', 'toast'],\n  ['wowing', 'wow'],\n  ['relearning', 'relearn'],\n  ['instigating', 'instigate'],\n  ['hijacking', 'hijack'],\n  ['harmonising', 'harmonise'],\n  ['delimiting', 'delimit'],\n  ['distancing', 'distance'],\n  ['dehumanizing', 'dehumanize'],\n  ['reassigning', 'reassign'],\n  ['privileging', 'privilege'],\n  ['preceeding', 'preceed'],\n  ['flattering', 'flatter'],\n  ['endowing', 'endow'],\n  ['trivializing', 'trivialize'],\n  ['consigning', 'consign'],\n  ['refitting', 'refit'],\n  ['overprinting', 'overprint'],\n  ['tallying', 'tally'],\n  ['tantalizing', 'tantalize'],\n  ['coupling', 'couple'],\n  ['etching', 'etch'],\n  ['salvaging', 'salvage'],\n  ['entrusting', 'entrust'],\n  ['chauffeuring', 'chauffeur'],\n  ['withing', 'withe'],\n  ['underachieving', 'underachieve'],\n  ['backfilling', 'backfill'],\n  ['campaigning', 'campaign'],\n  ['coercing', 'coerce'],\n  ['regretting', 'regret'],\n  ['slapping', 'slap'],\n  ['expelling', 'expel'],\n  ['handcuffing', 'handcuff'],\n  ['inheriting', 'inherit'],\n  ['reestablishing', 'reestablish'],\n  ['garnishing', 'garnish'],\n  ['apprehending', 'apprehend'],\n  ['kidnaping', 'kidnap'],\n  ['reappraising', 'reappraise'],\n  ['rewording', 'reword'],\n  ['rowing', 'row'],\n  ['refereeing', 'referee'],\n  ['barking', 'bark'],\n  ['kennelling', 'kennel'],\n  ['screwing', 'screw'],\n  ['cleaving', 'cleave'],\n  ['impregnating', 'impregnate'],\n  ['chambering', 'chamber'],\n  ['strolling', 'stroll'],\n  ['ironing', 'iron'],\n  ['wadding', 'wad'],\n  ['concatenating', 'concatenate'],\n  ['tamping', 'tamp'],\n  ['paring', 'pare'],\n  ['collating', 'collate'],\n  ['enveloping', 'envelop'],\n  ['besetting', 'beset'],\n  ['superceding', 'supercede'],\n  ['piggybacking', 'piggyback'],\n  ['graphing', 'graph'],\n  ['stooping', 'stoop'],\n  ['populating', 'populate'],\n  ['sneezing', 'sneeze'],\n  ['waging', 'wage'],\n  ['pleading', 'plead'],\n  ['disproving', 'disprove'],\n  ['pinching', 'pinch'],\n  ['presupposing', 'presuppose'],\n  ['teeming', 'teem'],\n  ['igniting', 'ignite'],\n  ['rediscovering', 'rediscover'],\n  ['demobilizing', 'demobilize'],\n  ['finalising', 'finalise'],\n  ['sizzling', 'sizzle'],\n  ['flagging', 'flag'],\n  ['magnifying', 'magnify'],\n  ['perceiving', 'perceive'],\n  ['procrastinating', 'procrastinate'],\n  ['gifting', 'gift'],\n  ['uncaring', 'uncare'],\n  ['fascinating', 'fascinate'],\n  ['tripping', 'trip'],\n  ['honoring', 'honor'],\n  ['flirting', 'flirt'],\n  ['homebuilding', 'homebuild'],\n  ['swooning', 'swoon'],\n  ['sagging', 'sag'],\n  ['gripping', 'grip'],\n  ['erupting', 'erupt'],\n  ['fledging', 'fledge'],\n  ['deflating', 'deflate'],\n  ['shocking', 'shock'],\n  ['throttling', 'throttle'],\n  ['shimmering', 'shimmer'],\n  ['gaping', 'gape'],\n  ['poking', 'poke'],\n  ['petting', 'pet'],\n  ['persevering', 'persevere'],\n  ['raiding', 'raid'],\n  ['decking', 'deck'],\n  ['lulling', 'lull'],\n  ['wailing', 'wail'],\n  ['fiddling', 'fiddle'],\n  ['howling', 'howl'],\n  ['lurking', 'lurk'],\n  ['hammering', 'hammer'],\n  ['lugging', 'lug'],\n  ['pining', 'pine'],\n  ['leaping', 'leap'],\n  ['whaling', 'whale'],\n  ['swooping', 'swoop'],\n  ['massing', 'mass'],\n  ['buttressing', 'buttress'],\n  ['evacuating', 'evacuate'],\n  ['stabilising', 'stabilise'],\n  ['ravaging', 'ravage'],\n  ['staving', 'stave'],\n  ['straddling', 'straddle'],\n  ['cornering', 'corner'],\n  ['bandaging', 'bandage'],\n  ['inventorying', 'inventory'],\n  ['acquainting', 'acquaint'],\n  ['deprecating', 'deprecate'],\n  ['summoning', 'summon'],\n  ['adorning', 'adorn'],\n  ['admiring', 'admire'],\n  ['disqualifying', 'disqualify'],\n  ['overruling', 'overrule'],\n  ['maiming', 'maim'],\n  ['adjourning', 'adjourn'],\n  ['forsaking', 'forsake'],\n  ['triumphing', 'triumph'],\n  ['derogating', 'derogate'],\n  ['shepherding', 'shepherd'],\n  ['clamouring', 'clamour'],\n  ['horrifying', 'horrify'],\n  ['beefing', 'beef'],\n  ['garnisheeing', 'garnishee'],\n  ['dissipating', 'dissipate'],\n  ['wording', 'word'],\n  ['oversimplifying', 'oversimplify'],\n  ['snooping', 'snoop'],\n  ['overreaching', 'overreach'],\n  ['preconditioning', 'precondition'],\n  ['wrecking', 'wreck'],\n  ['agonizing', 'agonize'],\n  ['resonating', 'resonate'],\n  ['thrilling', 'thrill'],\n  ['bobbing', 'bob'],\n  ['parting', 'part'],\n  ['idling', 'idle'],\n  ['sparging', 'sparge'],\n  ['obligating', 'obligate'],\n  ['arbitrating', 'arbitrate'],\n  ['disguising', 'disguise'],\n  ['unsatisfying', 'unsatisfy'],\n  ['waxing', 'wax'],\n  ['construing', 'construe'],\n  ['submersing', 'submerse'],\n  ['contouring', 'contour'],\n  ['docketing', 'docket'],\n  ['scorching', 'scorch'],\n  ['raining', 'rain'],\n  ['sensationalizing', 'sensationalize'],\n  ['fixating', 'fixate'],\n  ['advantaging', 'advantage'],\n  ['wagging', 'wag'],\n  ['trotting', 'trot'],\n  ['pacing', 'pace'],\n  ['manuring', 'manure'],\n  ['haying', 'hay'],\n  ['recordkeeping', 'recordkeepe'],\n  ['coring', 'core'],\n  ['grouting', 'grout'],\n  ['strewing', 'strew'],\n  ['loafing', 'loaf'],\n  ['landfilling', 'landfil'],\n  ['percolating', 'percolate'],\n  ['forking', 'fork'],\n  ['blunting', 'blunt'],\n  ['defoliating', 'defoliate'],\n  ['moulting', 'moult'],\n  ['starving', 'starve'],\n  ['infesting', 'infest'],\n  ['liming', 'lime'],\n  ['hollowing', 'hollow'],\n  ['mounding', 'mound'],\n  ['sweating', 'sweat'],\n  ['drooping', 'droop'],\n  ['wrinkling', 'wrinkle'],\n  ['spoiling', 'spoil'],\n  ['hoeing', 'hoe'],\n  ['replanting', 'replant'],\n  ['vectoring', 'vector'],\n  ['understating', 'understate'],\n  ['interceding', 'intercede'],\n  ['rivaling', 'rival'],\n  ['sparkling', 'sparkle'],\n  ['oiling', 'oil'],\n  ['fractionating', 'fractionate'],\n  ['overestimating', 'overestimate'],\n  ['flexing', 'flex'],\n  ['reverting', 'revert'],\n  ['diking', 'dike'],\n  ['negating', 'negate'],\n  ['overlaying', 'overlay'],\n  ['grassing', 'grass'],\n  ['dehorning', 'dehorn'],\n  ['slumping', 'slump'],\n  ['poisoning', 'poison'],\n  ['heeling', 'heel'],\n  ['deflecting', 'deflect'],\n  ['overdosing', 'overdose'],\n  ['thrusting', 'thrust'],\n  ['stumbling', 'stumble'],\n  ['poaching', 'poach'],\n  ['interchanging', 'interchange'],\n  ['portioning', 'portion'],\n  ['exaggerating', 'exaggerate'],\n  ['litigating', 'litigate'],\n  ['mobilising', 'mobilise'],\n  ['levying', 'levy'],\n  ['overfeeding', 'overfeed'],\n  ['coexisting', 'coexist'],\n  ['tethering', 'tether'],\n  ['allotting', 'allot'],\n  ['adjoining', 'adjoin'],\n  ['inclining', 'incline'],\n  ['panting', 'pant'],\n  ['impending', 'impend'],\n  ['brewing', 'brew'],\n  ['scavenging', 'scavenge'],\n  ['trumpeting', 'trumpet'],\n  ['outweighing', 'outweigh'],\n  ['intertwining', 'intertwine'],\n  ['toting', 'tote'],\n  ['redrawing', 'redraw'],\n  ['disenfranchising', 'disenfranchise'],\n  ['supposing', 'suppose'],\n  ['traversing', 'traverse'],\n  ['overhauling', 'overhaul'],\n  ['repurchasing', 'repurchase'],\n  ['crowning', 'crown'],\n  ['disdaining', 'disdain'],\n  ['proselytizing', 'proselytize'],\n  ['tainting', 'taint'],\n  ['regressing', 'regress'],\n  ['misreading', 'misread'],\n  ['scrapping', 'scrap'],\n  ['tiering', 'tier'],\n  ['uplifting', 'uplift'],\n  ['troubling', 'trouble'],\n  ['pausing', 'pause'],\n  ['clashing', 'clash'],\n  ['piecing', 'piece'],\n  ['disheartening', 'dishearten'],\n  ['likening', 'liken'],\n  ['transposing', 'transpose'],\n  ['internalising', 'internalise'],\n  ['decentralising', 'decentralise'],\n  ['conversing', 'converse'],\n  ['deducing', 'deduce'],\n  ['chaperoning', 'chaperon'],\n  ['memorizing', 'memorize'],\n  ['begging', 'beg'],\n  ['restarting', 'restart'],\n  ['apologizing', 'apologize'],\n  ['correlating', 'correlate'],\n  ['abstaining', 'abstain'],\n  ['bureaucratizing', 'bureaucratize'],\n  ['plateauing', 'plateaue'],\n  ['consecrating', 'consecrate'],\n  ['reinvigorating', 'reinvigorate'],\n  ['enslaving', 'enslave'],\n  ['appeasing', 'appease'],\n  ['constricting', 'constrict'],\n  ['domesticating', 'domesticate'],\n  ['multitasking', 'multitask'],\n  ['remodeling', 'remodel'],\n  ['touting', 'tout'],\n  ['latching', 'latch'],\n  ['cannibalizing', 'cannibalize'],\n  ['numbing', 'numb'],\n  ['begrudging', 'begrudge'],\n  ['squandering', 'squander'],\n  ['nonthreatening', 'nonthreaten'],\n  ['insinuating', 'insinuate'],\n  ['couching', 'couch'],\n  ['exacting', 'exact'],\n  ['recapitulating', 'recapitulate'],\n  ['convoluting', 'convolute'],\n  ['centralising', 'centralise'],\n  ['amassing', 'amass'],\n  ['affiliating', 'affiliate'],\n  ['disclaiming', 'disclaim'],\n  ['ascribing', 'ascribe'],\n  ['tolerating', 'tolerate'],\n  ['amortizing', 'amortize'],\n  ['skimming', 'skim'],\n  ['renouncing', 'renounce'],\n  ['comporting', 'comport'],\n  ['muddling', 'muddle'],\n  ['usurping', 'usurp'],\n  ['fractioning', 'fraction'],\n  ['juxtaposing', 'juxtapose'],\n  ['ripping', 'rip'],\n  ['unscrambling', 'unscramble'],\n  ['descrambling', 'descramble'],\n  ['misappropriating', 'misappropriate'],\n  ['scaffolding', 'scaffold'],\n  ['jeopardising', 'jeopardise'],\n  ['stationing', 'station'],\n  ['encumbering', 'encumber'],\n  ['roping', 'rope'],\n  ['reheating', 'reheat'],\n  ['underselling', 'undersell'],\n  ['overtaking', 'overtake'],\n  ['initializing', 'initialize'],\n  ['perusing', 'peruse'],\n  ['befriending', 'befriend'],\n  ['cramming', 'cram'],\n  ['intriguing', 'intrigue'],\n  ['personalizing', 'personalize'],\n  ['loaning', 'loan'],\n  ['overloading', 'overload'],\n  ['flanking', 'flank'],\n  ['auditioning', 'audition'],\n  ['rebroadcasting', 'rebroadcast'],\n  ['parceling', 'parcel'],\n  ['gentrifying', 'gentrify'],\n  ['absolving', 'absolve'],\n  ['pillaging', 'pillage'],\n  ['bankrupting', 'bankrupt'],\n  ['digitalizing', 'digitalize'],\n  ['decreeing', 'decree'],\n  ['teething', 'teethe'],\n  ['centring', 'centre'],\n  ['instating', 'instate'],\n  ['righting', 'right'],\n  ['taunting', 'taunt'],\n  ['caucusing', 'caucus'],\n  ['crashing', 'crash'],\n  ['pondering', 'ponder'],\n  ['flaunting', 'flaunt'],\n  ['conscripting', 'conscript'],\n  ['shouting', 'shout'],\n  ['sobbing', 'sob'],\n  ['fraying', 'fray'],\n  ['disentitling', 'disentitle'],\n  ['convicting', 'convict'],\n  ['bequeathing', 'bequeath'],\n  ['enumerating', 'enumerate'],\n  ['quashing', 'quash'],\n  ['mouthing', 'mouth'],\n  ['abducting', 'abduct'],\n  ['federating', 'federate'],\n  ['remanding', 'remand'],\n  ['incarcerating', 'incarcerate'],\n  ['hazing', 'haze'],\n  ['kissing', 'kiss'],\n  ['perpetrating', 'perpetrate'],\n  ['disarming', 'disarm'],\n  ['bulging', 'bulge'],\n  ['dovetailing', 'dovetail'],\n  ['bicycling', 'bicycle'],\n  ['anesthetizing', 'anesthetize'],\n  ['menacing', 'menace'],\n  ['scapegoating', 'scapegoate'],\n  ['acquitting', 'acquit'],\n  ['seasoning', 'season'],\n  ['pivoting', 'pivot'],\n  ['retracting', 'retract'],\n  ['gunning', 'gun'],\n  ['peening', 'peen'],\n  ['flocculating', 'flocculate'],\n  ['cleansing', 'cleanse'],\n  ['lacing', 'lace'],\n  ['hemstitching', 'hemstitch'],\n  ['fulling', 'full'],\n  ['napping', 'nap'],\n  ['cubing', 'cube'],\n  ['decontaminating', 'decontaminate'],\n  ['dehumanising', 'dehumanise'],\n  ['whitening', 'whiten'],\n  ['superimposing', 'superimpose'],\n  ['needling', 'needle'],\n  ['recapping', 'recap'],\n  ['matting', 'mat'],\n  ['hewing', 'hew'],\n  ['tufting', 'tuft'],\n  ['wringing', 'wring'],\n  ['tinning', 'tin'],\n  ['wiring', 'wire'],\n  ['bushing', 'bush'],\n  ['granulating', 'granulate'],\n  ['sieving', 'sieve'],\n  ['debonding', 'debond'],\n  ['splicing', 'splice'],\n  ['beeping', 'beep'],\n  ['underreporting', 'underreport'],\n  ['booming', 'boom'],\n  ['armouring', 'armour'],\n  ['reaming', 'ream'],\n  ['chamfering', 'chamfer'],\n  ['superheating', 'superheat'],\n  ['coiling', 'coil'],\n  ['flanging', 'flange'],\n  ['destining', 'destine'],\n  ['demineralizing', 'demineralize'],\n  ['laboring', 'labor'],\n  ['coalescing', 'coalesce'],\n  ['wheezing', 'wheeze'],\n  ['coaxing', 'coax'],\n  ['tapering', 'taper'],\n  ['fooling', 'fool'],\n  ['quaking', 'quak'],\n  ['buckling', 'buckle'],\n  ['characterising', 'characterise'],\n  ['greying', 'grey'],\n  ['crippling', 'cripple'],\n  ['siphoning', 'siphon'],\n  ['debilitating', 'debilitate'],\n  ['lauding', 'laud'],\n  ['perturbing', 'perturb'],\n  ['unstinting', 'unstint'],\n  ['desensitizing', 'desensitize'],\n  ['inoculating', 'inoculate'],\n  ['alarming', 'alarm'],\n  ['depolarizing', 'depolarize'],\n  ['crying', 'cry'],\n  ['aching', 'ache'],\n  ['glaring', 'glare'],\n  ['stunning', 'stun'],\n  ['blitzing', 'blitz'],\n  ['bossing', 'boss'],\n  ['fuzzing', 'fuzz'],\n  ['gassing', 'gas'],\n  ['glossing', 'gloss'],\n  ['messing', 'mess'],\n  ['smelling', 'smell'],\n  ['yelling', 'yell'],\n  ['peacemaking', 'peacemake'],\n  ['fundraising', 'fundraise'],\n  ['matchmaking', 'matchmake'],\n  ['kayaking', 'kayak'],\n\n  // [\"awakening\", \"awaken\"],\n  [\"baiting\", \"bait\"],\n  [\"binning\", \"bin\"],\n  [\"bitting\", \"bite\"],\n  [\"blotting\", \"blot\"],\n  [\"canvassing\", \"canvass\"],\n  [\"combatting\", \"combat\"],\n  [\"compressing\", \"compress\"],\n  [\"crowning\", \"crown\"],\n  [\"customing\", \"custom\"],\n  [\"dimming\", \"dim\"],\n  // [\"cross-checking\", \"cross-check\"],\n  // [\"double-checking\", \"double-check\"],\n  [\"embedding\", \"embed\"],\n  [\"encompassing\", \"encompass\"],\n  [\"enlivening\", \"enliven\"],\n  [\"enrolling\", \"enrol\"],\n  [\"equalling\", \"equal\"],\n  [\"expressing\", \"express\"],\n  [\"fathoming\", \"fathom\"],\n  // [\"fine-tuning\", \"fine-tune\"],\n  [\"fretting\", \"fret\"],\n  [\"fulfilling\", \"fulfil\"],\n  [\"gossiping\", \"gossip\"],\n  [\"hastening\", \"hasten\"],\n  [\"hinging\", \"hinge\"],\n  [\"hopping\", \"hop\"],\n  [\"inputting\", \"input\"],\n  [\"instilling\", \"instil\"],\n  // [\"kick-starting\", \"kick-start\"],\n  [\"massing\", \"mass\"],\n  [\"mimicking\", \"mimic\"],\n  [\"mopping\", \"mop\"],\n  [\"nodding\", \"nod\"],\n  [\"outputting\", \"output\"],\n  [\"owning\", \"own\"],\n  [\"panning\", \"pan\"],\n  [\"rapping\", \"rap\"],\n  [\"rebelling\", \"rebel\"],\n  [\"refiting\", \"refit\"],\n  [\"reining\", \"rein\"],\n  [\"remodelling\", \"remodel\"],\n  [\"repenting\", \"repent\"],\n  [\"ridding\", \"rid\"],\n  [\"ruining\", \"ruin\"],\n  // [\"self-destructing\", \"self-destruct\"],\n  [\"shielding\", \"shield\"],\n  [\"signalling\", \"signal\"],\n  [\"sinning\", \"sin\"],\n  [\"slimming\", \"slim\"],\n  [\"subpoenaing\", \"subpoena\"],\n  [\"suiting\", \"suit\"],\n  [\"tilting\", \"tilt\"],\n  [\"trespassing\", \"trespass\"],\n  [\"withholding\", \"withhold\"],\n  [\"witnessing\", \"witness\"],\n\n\n  // ['', ''],\n]"
  },
  {
    "path": "data/pairs/Participle.js",
    "content": "export default [\n  ['arisen', 'arise'],\n  ['awoken', 'awake'],\n  ['beaten', 'beat'],\n  ['been', 'be'],\n  ['begun', 'begin'],\n  ['become', 'become'],\n  ['bitten', 'bite'],\n  ['blown', 'blow'],\n  ['broken', 'break'],\n  ['built', 'build'],\n  ['chosen', 'choose'],\n  ['clung', 'cling'],\n  ['come', 'come'],\n  ['done', 'do'],\n  ['dove', 'dive'],\n  ['drawn', 'draw'],\n  ['dreamt', 'dream'],\n  ['driven', 'drive'],\n  ['drunk', 'drink'],\n  ['eaten', 'eat'],\n  ['fallen', 'fall'],\n  ['flown', 'fly'],\n  ['forbidden', 'forbid'],\n  ['forgiven', 'forgive'],\n  ['forgotten', 'forget'],\n  ['forsaken', 'forsake'],\n  ['forseen', 'forsee'],\n  ['frozen', 'freeze'],\n  ['given', 'give'],\n  ['gone', 'go'],\n  ['gotten', 'get'],\n  ['grown', 'grow'],\n  ['hasten', 'haste'],\n  ['hidden', 'hide'],\n  ['known', 'know'],\n  ['outdone', 'outdo'],\n  ['outgrown', 'outgrow'],\n  ['overdone', 'overdo'],\n  ['overseen', 'oversee'],\n  ['overtaken', 'overtake'],\n  ['overthrown', 'overthrow'],\n  ['proven', 'prove'],\n  ['rewritten', 'rewrite'],\n  ['ridden', 'ride'],\n  ['risen', 'rise'],\n  ['rung', 'ring'],\n  ['seen', 'see'],\n  ['sewn', 'sew'],\n  ['shrunk', 'shrink'],\n  ['shaken', 'shake'],\n  ['shone', 'shine'],\n  ['shown', 'show'],\n  ['slain', 'slay'],\n  ['sought', 'seek'],\n  ['sown', 'sow'],\n  ['spilt', 'spill'],\n  ['spoken', 'speak'],\n  ['stolen', 'steal'],\n  ['strewn', 'strew'],\n  ['run', 'run'],\n  ['sung', 'sing'],\n  ['sunk', 'sink'],\n  ['sworn', 'swear'],\n  ['swum', 'swim'],\n  ['taken', 'take'],\n  ['thrown', 'throw'],\n  ['torn', 'tear'],\n  ['undergone', 'undergo'],\n  ['undone', 'undo'],\n  ['uprisen', 'uprise'],\n  ['woken', 'wake'],\n  ['withdrawn', 'withdraw'],\n  ['woken', 'wake'],\n  ['worn', 'wear'],\n  ['woven', 'weave'],\n  ['written', 'write'],\n  ['wrung', 'wring'],\n  ['waken', 'wake'],\n\n]"
  },
  {
    "path": "data/pairs/PastTense.js",
    "content": "export default [\n  ['abandoned', 'abandon'],\n  ['abated', 'abate'],\n  ['abducted', 'abduct'],\n  ['abolished', 'abolish'],\n  ['abraded', 'abrade'],\n  ['abridged', 'abridge'],\n  ['absolved', 'absolve'],\n  ['absorbed', 'absorb'],\n  ['abstained', 'abstain'],\n  ['abused', 'abuse'],\n  ['acceded', 'accede'],\n  ['accelerated', 'accelerate'],\n  ['accepted', 'accept'],\n  ['accessed', 'access'],\n  ['accommodated', 'accommodate'],\n  ['accompanied', 'accompany'],\n  ['accomplished', 'accomplish'],\n  ['accorded', 'accord'],\n  ['accounted', 'account'],\n  ['accredited', 'accredit'],\n  ['accumulated', 'accumulate'],\n  ['accused', 'accuse'],\n  ['ached', 'ache'],\n  ['achieved', 'achieve'],\n  ['acknowledged', 'acknowledge'],\n  ['acquired', 'acquire'],\n  ['acquitted', 'acquit'],\n  ['acted', 'act'],\n  ['activated', 'activate'],\n  ['adapted', 'adapt'],\n  ['added', 'add'],\n  ['addressed', 'address'],\n  ['adduced', 'adduce'],\n  ['adhered', 'adhere'],\n  ['adjoined', 'adjoin'],\n  ['adjourned', 'adjourn'],\n  ['adjudicated', 'adjudicate'],\n  ['adjusted', 'adjust'],\n  ['administered', 'administer'],\n  ['admired', 'admire'],\n  ['admitted', 'admit'],\n  ['adopted', 'adopt'],\n  ['advanced', 'advance'],\n  ['advantaged', 'advantage'],\n  ['advertised', 'advertise'],\n  ['advised', 'advise'],\n  ['advocated', 'advocate'],\n  ['aerated', 'aerate'],\n  ['affected', 'affect'],\n  ['affiliated', 'affiliate'],\n  ['affirmed', 'affirm'],\n  ['affixed', 'affix'],\n  ['afflicted', 'afflict'],\n  ['afforded', 'afford'],\n  ['aged', 'age'],\n  ['agglomerated', 'agglomerate'],\n  ['aggravated', 'aggravate'],\n  ['aggregated', 'aggregate'],\n  ['aggrieved', 'aggrieve'],\n  ['agreed', 'agree'],\n  ['aided', 'aid'],\n  ['aimed', 'aim'],\n  ['aired', 'air'],\n  ['alerted', 'alert'],\n  ['aligned', 'align'],\n  ['alleged', 'allege'],\n  ['allied', 'ally'],\n  ['allocated', 'allocate'],\n  ['alloted', 'allote'],\n  ['allotted', 'allot'],\n  ['allowed', 'allow'],\n  ['alloyed', 'alloy'],\n  ['alluded', 'allude'],\n  ['altered', 'alter'],\n  ['amalgamated', 'amalgamate'],\n  ['amassed', 'amass'],\n  ['amended', 'amend'],\n  ['amounted', 'amount'],\n  ['analogized', 'analogize'],\n  ['analysed', 'analyse'],\n  ['analyzed', 'analyze'],\n  ['anchored', 'anchor'],\n  ['annexed', 'annex'],\n  ['annotated', 'annotate'],\n  ['announced', 'announce'],\n  ['annulled', 'annul'],\n  ['answered', 'answer'],\n  ['anticipated', 'anticipate'],\n  ['apologized', 'apologize'],\n  ['appealed', 'appeal'],\n  ['appeared', 'appear'],\n  ['appeased', 'appease'],\n  ['appended', 'append'],\n  ['applauded', 'applaud'],\n  ['applied', 'apply'],\n  ['appointed', 'appoint'],\n  ['apportioned', 'apportion'],\n  ['appraised', 'appraise'],\n  ['appreciated', 'appreciate'],\n  ['apprised', 'apprise'],\n  ['approached', 'approach'],\n  ['appropriated', 'appropriate'],\n  ['approved', 'approve'],\n  ['approximated', 'approximate'],\n  ['argued', 'argue'],\n  ['arose', 'arise'],\n  ['aroused', 'arouse'],\n  ['arranged', 'arrange'],\n  ['arrested', 'arrest'],\n  ['arrived', 'arrive'],\n  ['articulated', 'articulate'],\n  ['ascended', 'ascend'],\n  ['ascertained', 'ascertain'],\n  ['asked', 'ask'],\n  ['assailed', 'assail'],\n  ['assaulted', 'assault'],\n  ['assembled', 'assemble'],\n  ['assented', 'assent'],\n  ['asserted', 'assert'],\n  ['assessed', 'assess'],\n  ['assigned', 'assign'],\n  ['assimilated', 'assimilate'],\n  ['assisted', 'assist'],\n  ['associated', 'associate'],\n  ['assumed', 'assume'],\n  ['assured', 'assure'],\n  ['ate', 'eat'],\n  ['attached', 'attach'],\n  ['attacked', 'attack'],\n  ['attained', 'attain'],\n  ['attempted', 'attempt'],\n  ['attended', 'attend'],\n  ['attested', 'attest'],\n  ['attracted', 'attract'],\n  ['attributed', 'attribute'],\n  ['attuned', 'attune'],\n  ['auctioned', 'auction'],\n  ['audited', 'audit'],\n  ['augmented', 'augment'],\n  ['authenticated', 'authenticate'],\n  ['authored', 'authore'],\n  ['authorised', 'authorise'],\n  ['authorized', 'authorize'],\n  ['autolyzed', 'autolyze'],\n  ['availed', 'avail'],\n  ['averaged', 'average'],\n  ['avoided', 'avoid'],\n  ['awaited', 'await'],\n  ['awakened', 'awaken'],\n  ['awarded', 'award'],\n  ['awoke', 'awake'],\n  ['backed', 'back'],\n  ['bagged', 'bag'],\n  ['baked', 'bake'],\n  ['balanced', 'balance'],\n  ['baled', 'bale'],\n  ['banded', 'band'],\n  ['banned', 'ban'],\n  ['barred', 'bar'],\n  ['based', 'base'],\n  ['basted', 'baste'],\n  ['battled', 'battle'],\n  ['beat', 'beat'],\n  ['became', 'become'],\n  ['bedecked', 'bedeck'],\n  ['been', 'be'],\n  ['began', 'begin'],\n  ['beguiled', 'beguile'],\n  ['believed', 'believe'],\n  ['belonged', 'belong'],\n  ['benefited', 'benefit'],\n  ['bent', 'bend'],\n  ['bestowed', 'bestow'],\n  ['bet', 'bet'],\n  ['bettered', 'better'],\n  ['biased', 'bias'],\n  ['bid', 'bid'],\n  ['biked', 'bike'],\n  ['billed', 'bill'],\n  ['bit', 'bite'],\n  ['blamed', 'blame'],\n  ['blasted', 'blast'],\n  ['bleached', 'bleach'],\n  ['bled', 'bleed'],\n  ['blended', 'blend'],\n  ['blew', 'blow'],\n  ['blighted', 'blight'],\n  ['blitzed', 'blitz'],\n  ['bloated', 'bloat'],\n  ['blocked', 'block'],\n  ['blurred', 'blur'],\n  ['blushed', 'blush'],\n  ['boarded', 'board'],\n  ['boasted', 'boast'],\n  ['bodied', 'body'],\n  ['boiled', 'boil'],\n  ['bonded', 'bond'],\n  ['boned', 'bone'],\n  ['booked', 'book'],\n  ['boomed', 'boom'],\n  ['boosted', 'boost'],\n  ['bore', 'bear'],\n  ['bored', 'bore'],\n  ['borrowed', 'borrow'],\n  ['bossed', 'boss'],\n  ['bothered', 'bother'],\n  ['bought', 'buy'],\n  ['bounced', 'bounce'],\n  ['bound', 'bind'],\n  ['boxed', 'box'],\n  ['boycotted', 'boycott'],\n  ['braised', 'braise'],\n  ['branded', 'brand'],\n  ['braved', 'brave'],\n  ['brazed', 'braze'],\n  ['breached', 'breach'],\n  ['breaded', 'bread'],\n  ['breathed', 'breathe'],\n  ['bred', 'breed'],\n  ['brewed', 'brew'],\n  ['bridged', 'bridge'],\n  ['briefed', 'brief'],\n  ['brightened', 'brighten'],\n  ['broadcast', 'broadcast'],\n  ['broadened', 'broaden'],\n  ['broke', 'break'],\n  ['brokered', 'broker'],\n  ['brought', 'bring'],\n  ['browsed', 'browse'],\n  ['built', 'build'],\n  ['burgeoned', 'burgeon'],\n  ['burned', 'burn'],\n  ['burst', 'burst'],\n  ['buzzed', 'buzz'],\n  ['bypassed', 'bypass'],\n  ['cabled', 'cable'],\n  ['caged', 'cage'],\n  ['calcined', 'calcine'],\n  ['calculated', 'calculate'],\n  ['calendered', 'calender'],\n  ['calibrated', 'calibrate'],\n  ['called', 'call'],\n  ['came', 'come'],\n  ['campaigned', 'campaign'],\n  ['cancelled', 'cancel'],\n  ['caned', 'cane'],\n  ['canned', 'can'],\n  ['canvassed', 'canvass'],\n  ['capitalized', 'capitalize'],\n  ['capped', 'cap'],\n  ['captioned', 'caption'],\n  ['captivated', 'captivate'],\n  ['captured', 'capture'],\n  ['carded', 'card'],\n  ['cared', 'care'],\n  ['carried', 'carry'],\n  ['carved', 'carve'],\n  ['cast', 'cast'],\n  ['categorized', 'categorize'],\n  ['catered', 'cater'],\n  ['caught', 'catch'],\n  ['caused', 'cause'],\n  ['cautioned', 'caution'],\n  ['ceased', 'cease'],\n  ['ceded', 'cede'],\n  ['celebrated', 'celebrate'],\n  ['centered', 'center'],\n  ['centralized', 'centralize'],\n  ['centred', 'centre'],\n  ['certificated', 'certificate'],\n  ['certified', 'certify'],\n  ['chained', 'chain'],\n  ['chaired', 'chair'],\n  ['challenged', 'challenge'],\n  ['championed', 'champion'],\n  ['changed', 'change'],\n  ['channelled', 'channel'],\n  ['characterized', 'characterize'],\n  ['charged', 'charge'],\n  ['charmed', 'charm'],\n  ['chartered', 'charter'],\n  ['chatted', 'chat'],\n  ['chauffeured', 'chauffeur'],\n  ['cheated', 'cheat'],\n  ['checked', 'check'],\n  ['cheered', 'cheer'],\n  ['chilled', 'chill'],\n  ['choked', 'choke'],\n  ['chopped', 'chop'],\n  ['chose', 'choose'],\n  ['christened', 'christen'],\n  ['circled', 'circle'],\n  ['circulated', 'circulate'],\n  ['circumvented', 'circumvent'],\n  ['cited', 'cite'],\n  ['claimed', 'claim'],\n  ['clarified', 'clarify'],\n  ['classified', 'classify'],\n  ['cleaned', 'clean'],\n  ['cleared', 'clear'],\n  ['clicked', 'click'],\n  ['climbed', 'climb'],\n  ['clinched', 'clinch'],\n  ['cloned', 'clon'],\n  ['closed', 'close'],\n  ['clung', 'cling'],\n  ['clustered', 'cluster'],\n  ['coached', 'coach'],\n  ['coated', 'coat'],\n  ['coded', 'code'],\n  ['cohabited', 'cohabit'],\n  ['coiled', 'coil'],\n  ['coincided', 'coincide'],\n  ['coined', 'coin'],\n  ['collaborated', 'collaborate'],\n  ['collapsed', 'collapse'],\n  ['collected', 'collect'],\n  ['collided', 'collide'],\n  ['colonized', 'colonize'],\n  ['colored', 'color'],\n  ['coloured', 'colour'],\n  ['combed', 'comb'],\n  ['combined', 'combine'],\n  ['commanded', 'command'],\n  ['commemorated', 'commemorate'],\n  ['commenced', 'commence'],\n  ['commended', 'commend'],\n  ['commented', 'comment'],\n  ['commercialized', 'commercialize'],\n  ['commissioned', 'commission'],\n  ['committed', 'commit'],\n  ['communicated', 'communicate'],\n  ['compared', 'compare'],\n  ['compelled', 'compel'],\n  ['compensated', 'compensate'],\n  ['competed', 'compete'],\n  ['compiled', 'compile'],\n  ['complained', 'complain'],\n  ['complemented', 'complement'],\n  ['completed', 'complete'],\n  ['complied', 'comply'],\n  ['complimented', 'compliment'],\n  ['composed', 'compose'],\n  ['composted', 'compost'],\n  ['compounded', 'compound'],\n  ['compressed', 'compress'],\n  ['comprised', 'comprise'],\n  ['compromised', 'compromise'],\n  ['computed', 'compute'],\n  ['computerized', 'computerize'],\n  ['concealed', 'conceal'],\n  ['conceded', 'concede'],\n  ['conceived', 'conceive'],\n  ['concentrated', 'concentrate'],\n  ['conceptualized', 'conceptualize'],\n  ['concerned', 'concern'],\n  ['concluded', 'conclude'],\n  ['concurred', 'concur'],\n  ['condemned', 'condemn'],\n  ['conducted', 'conduct'],\n  ['conferred', 'confer'],\n  ['confessed', 'confess'],\n  ['confided', 'confide'],\n  ['configured', 'configure'],\n  ['confined', 'confine'],\n  ['confirmed', 'confirm'],\n  ['confiscated', 'confiscate'],\n  ['confounded', 'confound'],\n  ['confronted', 'confront'],\n  ['congratulated', 'congratulate'],\n  ['conjectured', 'conjecture'],\n  ['conjugated', 'conjugate'],\n  ['conjured', 'conjure'],\n  ['connected', 'connect'],\n  ['conquered', 'conquer'],\n  ['consented', 'consent'],\n  ['conserved', 'conserve'],\n  ['considered', 'consider'],\n  ['consigned', 'consign'],\n  ['consisted', 'consist'],\n  ['consolidated', 'consolidate'],\n  ['constituted', 'constitute'],\n  ['constructed', 'construct'],\n  ['consulted', 'consult'],\n  ['consumed', 'consume'],\n  ['contacted', 'contact'],\n  ['contained', 'contain'],\n  ['contemplated', 'contemplate'],\n  ['contended', 'contend'],\n  ['contested', 'contest'],\n  ['continued', 'continue'],\n  ['contracted', 'contract'],\n  ['contradicted', 'contradict'],\n  ['contravened', 'contravene'],\n  ['contributed', 'contribute'],\n  ['controlled', 'control'],\n  ['convened', 'convene'],\n  ['converged', 'converge'],\n  ['converted', 'convert'],\n  ['conveyed', 'convey'],\n  ['convicted', 'convict'],\n  ['convinced', 'convince'],\n  ['convoluted', 'convolute'],\n  ['cooked', 'cook'],\n  ['cooled', 'cool'],\n  ['cooperated', 'cooperate'],\n  ['coordinated', 'coordinate'],\n  ['copied', 'copy'],\n  ['coproduced', 'coproduce'],\n  ['copyrighted', 'copyright'],\n  ['cored', 'core'],\n  ['corrected', 'correct'],\n  ['correlated', 'correlate'],\n  ['corresponded', 'correspond'],\n  ['corroborated', 'corroborate'],\n  ['corrugated', 'corrugate'],\n  ['cosponsored', 'cosponsor'],\n  ['cost', 'cost'],\n  ['couched', 'couch'],\n  ['counselled', 'counsel'],\n  ['counted', 'count'],\n  ['countered', 'counter'],\n  ['countersigned', 'countersign'],\n  ['coupled', 'couple'],\n  ['covered', 'cover'],\n  ['cracked', 'crack'],\n  ['crafted', 'craft'],\n  ['crashed', 'crash'],\n  ['created', 'create'],\n  ['credited', 'credit'],\n  ['crept', 'creep'],\n  ['crimped', 'crimp'],\n  ['criticized', 'criticize'],\n  ['cropped', 'crop'],\n  ['crossed', 'cross'],\n  ['crowded', 'crowd'],\n  ['crystallized', 'crystallize'],\n  ['cubed', 'cube'],\n  ['culminated', 'culminate'],\n  ['cultivated', 'cultivate'],\n  ['cultured', 'culture'],\n  ['curated', 'curate'],\n  ['cured', 'cure'],\n  ['curled', 'curl'],\n  ['curtailed', 'curtail'],\n  ['curved', 'curve'],\n  ['customized', 'customize'],\n  ['cut', 'cut'],\n  ['damaged', 'damage'],\n  ['dampened', 'dampen'],\n  ['danced', 'dance'],\n  ['dared', 'dare'],\n  ['dated', 'date'],\n  ['dawned', 'dawn'],\n  ['dealt', 'deal'],\n  ['debated', 'debate'],\n  ['debited', 'debit'],\n  ['debuted', 'debut'],\n  ['decaffeinated', 'decaffeinate'],\n  ['deceased', 'decease'],\n  ['decelerated', 'decelerate'],\n  ['decentralized', 'decentralize'],\n  ['decided', 'decide'],\n  ['declared', 'declare'],\n  ['declined', 'decline'],\n  ['decomposed', 'decompose'],\n  ['decorated', 'decorate'],\n  ['decreased', 'decrease'],\n  ['decried', 'decry'],\n  ['dedicated', 'dedicate'],\n  ['deducted', 'deduct'],\n  ['deemed', 'deem'],\n  ['deepened', 'deepen'],\n  ['defaulted', 'default'],\n  ['defeated', 'defeat'],\n  ['defended', 'defend'],\n  ['deferred', 'defer'],\n  ['defined', 'define'],\n  ['deflated', 'deflate'],\n  ['deflected', 'deflect'],\n  ['degraded', 'degrade'],\n  ['dehydrated', 'dehydrate'],\n  ['delayed', 'delay'],\n  ['delegated', 'delegate'],\n  ['deliberated', 'deliberate'],\n  ['delighted', 'delight'],\n  ['delineated', 'delineate'],\n  ['delivered', 'deliver'],\n  ['demanded', 'demand'],\n  ['demonstrated', 'demonstrate'],\n  ['denatured', 'denature'],\n  ['denied', 'deny'],\n  ['denoted', 'denote'],\n  ['denounced', 'denounce'],\n  ['departed', 'depart'],\n  ['depended', 'depend'],\n  ['depicted', 'depict'],\n  ['depleted', 'deplete'],\n  ['deplored', 'deplore'],\n  ['deployed', 'deploy'],\n  ['deported', 'deport'],\n  ['deposited', 'deposit'],\n  ['depreciated', 'depreciate'],\n  ['depressed', 'depress'],\n  ['deprived', 'deprive'],\n  ['deregulated', 'deregulate'],\n  ['derived', 'derive'],\n  ['descended', 'descend'],\n  ['described', 'describe'],\n  ['deserved', 'deserve'],\n  ['desiccated', 'desiccate'],\n  ['designated', 'designate'],\n  ['designed', 'design'],\n  ['desired', 'desire'],\n  ['destined', 'destine'],\n  ['destroyed', 'destroy'],\n  ['detailed', 'detail'],\n  ['detained', 'detain'],\n  ['detected', 'detect'],\n  ['determined', 'determine'],\n  ['deterred', 'deter'],\n  ['detracted', 'detract'],\n  ['devalued', 'devalue'],\n  ['devastated', 'devastate'],\n  ['developed', 'develop'],\n  ['devised', 'devise'],\n  ['devolved', 'devolve'],\n  ['devoted', 'devote'],\n  ['diagnosed', 'diagnose'],\n  ['diced', 'dice'],\n  ['dictated', 'dictate'],\n  ['did', 'do'],\n  ['died', 'die'],\n  ['differed', 'differ'],\n  ['differentiated', 'differentiate'],\n  ['digitized', 'digitize'],\n  ['dined', 'dine'],\n  ['dipped', 'dip'],\n  ['directed', 'direct'],\n  ['disabled', 'disable'],\n  ['disadvantaged', 'disadvantage'],\n  ['disagreed', 'disagree'],\n  ['disallowed', 'disallow'],\n  ['disappeared', 'disappear'],\n  ['disbursed', 'disburse'],\n  ['discharged', 'discharge'],\n  ['disclosed', 'disclose'],\n  ['discoloured', 'discolour'],\n  ['discontinued', 'discontinue'],\n  ['discounted', 'discount'],\n  ['discouraged', 'discourage'],\n  ['discovered', 'discover'],\n  ['discriminated', 'discriminate'],\n  ['discussed', 'discuss'],\n  ['disembarked', 'disembark'],\n  ['disenfranchised', 'disenfranchise'],\n  ['disfavoured', 'disfavour'],\n  ['disinfected', 'disinfect'],\n  ['disliked', 'dislike'],\n  ['dismantled', 'dismantle'],\n  ['dismissed', 'dismiss'],\n  ['disordered', 'disorder'],\n  ['disorganized', 'disorganize'],\n  ['dispelled', 'dispel'],\n  ['dispensed', 'dispense'],\n  ['dispersed', 'disperse'],\n  ['displaced', 'displace'],\n  ['displayed', 'display'],\n  ['disposed', 'dispose'],\n  ['disproved', 'disprove'],\n  ['disputed', 'dispute'],\n  ['disqualified', 'disqualify'],\n  ['disregarded', 'disregard'],\n  ['disrupted', 'disrupt'],\n  ['dissatisfied', 'dissatisfy'],\n  ['dissected', 'dissect'],\n  ['disseminated', 'disseminate'],\n  ['dissolved', 'dissolve'],\n  ['dissuaded', 'dissuade'],\n  ['distanced', 'distance'],\n  ['distinguished', 'distinguish'],\n  ['distorted', 'distort'],\n  ['distributed', 'distribute'],\n  ['disturbed', 'disturb'],\n  ['diversified', 'diversify'],\n  ['diverted', 'divert'],\n  ['divested', 'divest'],\n  ['divided', 'divide'],\n  ['documented', 'document'],\n  ['domiciled', 'domicile'],\n  ['dominated', 'dominate'],\n  ['donated', 'donate'],\n  ['donned', 'don'],\n  ['doubled', 'double'],\n  ['doubted', 'doubt'],\n  ['dove', 'dive'],\n  ['downed', 'down'],\n  ['downgraded', 'downgrade'],\n  ['downsized', 'downsize'],\n  ['drafted', 'draft'],\n  ['dragged', 'drag'],\n  ['drank', 'drink'],\n  ['dreamed', 'dream'],\n  ['dressed', 'dress'],\n  ['drew', 'draw'],\n  ['dried', 'dry'],\n  ['drifted', 'drift'],\n  ['drilled', 'drill'],\n  ['dropped', 'drop'],\n  ['drove', 'drive'],\n  ['drowned', 'drown'],\n  ['dubbed', 'dub'],\n  ['dug', 'dig'],\n  ['dumped', 'dump'],\n  ['duplicated', 'duplicate'],\n  ['dusted', 'dust'],\n  ['dwindled', 'dwindle'],\n  ['dyed', 'dye'],\n  ['earmarked', 'earmark'],\n  ['earned', 'earn'],\n  ['eased', 'ease'],\n  ['echoed', 'echo'],\n  ['edged', 'edge'],\n  ['edited', 'edit'],\n  ['educated', 'educate'],\n  ['effected', 'effect'],\n  ['egged', 'egg'],\n  ['elaborated', 'elaborate'],\n  ['elected', 'elect'],\n  ['elevated', 'elevate'],\n  ['elicited', 'elicit'],\n  ['eliminated', 'eliminate'],\n  ['eluded', 'elude'],\n  ['embarked', 'embark'],\n  ['embedded', 'embed'],\n  ['embodied', 'embody'],\n  ['embossed', 'emboss'],\n  ['embraced', 'embrace'],\n  ['emerged', 'emerge'],\n  ['emigrated', 'emigrate'],\n  ['emitted', 'emit'],\n  ['empaneled', 'empanel'],\n  ['emphasised', 'emphasise'],\n  ['emphasized', 'emphasize'],\n  ['employed', 'employ'],\n  ['empowered', 'empower'],\n  ['enabled', 'enable'],\n  ['enacted', 'enact'],\n  ['enamelled', 'enamel'],\n  ['enclosed', 'enclose'],\n  ['encoded', 'encode'],\n  ['encompassed', 'encompass'],\n  ['encountered', 'encounter'],\n  ['encouraged', 'encourage'],\n  ['encroached', 'encroach'],\n  ['encrypted', 'encrypt'],\n  ['endangered', 'endanger'],\n  ['endeared', 'endear'],\n  ['endeavored', 'endeavor'],\n  ['endeavoured', 'endeavour'],\n  ['ended', 'end'],\n  ['endorsed', 'endorse'],\n  ['endowed', 'endow'],\n  ['endured', 'endure'],\n  ['enforced', 'enforce'],\n  ['engaged', 'engage'],\n  ['engendered', 'engender'],\n  ['enhanced', 'enhance'],\n  ['enjoyed', 'enjoy'],\n  ['enlarged', 'enlarge'],\n  ['enlisted', 'enlist'],\n  ['enriched', 'enrich'],\n  ['enrolled', 'enroll'],\n  ['enshrined', 'enshrine'],\n  ['ensued', 'ensue'],\n  ['ensured', 'ensure'],\n  ['entailed', 'entail'],\n  ['entered', 'enter'],\n  ['entertained', 'entertain'],\n  ['enthralled', 'enthrall'],\n  ['enticed', 'entice'],\n  ['entitled', 'entitle'],\n  ['entrenched', 'entrench'],\n  ['entrusted', 'entrust'],\n  ['entwined', 'entwine'],\n  ['enumerated', 'enumerate'],\n  ['enunciated', 'enunciate'],\n  ['enveloped', 'envelop'],\n  ['envisaged', 'envisage'],\n  ['envisioned', 'envision'],\n  ['equalized', 'equalize'],\n  ['equalled', 'equal'],\n  ['equated', 'equate'],\n  ['equipped', 'equip'],\n  ['erected', 'erect'],\n  ['eroded', 'erode'],\n  ['erred', 'err'],\n  ['erupted', 'erupt'],\n  ['escalated', 'escalate'],\n  ['escaped', 'escape'],\n  ['escorted', 'escort'],\n  ['espoused', 'espouse'],\n  ['established', 'establish'],\n  ['estimated', 'estimate'],\n  ['evaluated', 'evaluate'],\n  ['evidenced', 'evidence'],\n  ['eviscerated', 'eviscerate'],\n  ['evoked', 'evoke'],\n  ['evolved', 'evolve'],\n  ['exacerbated', 'exacerbate'],\n  ['examined', 'examine'],\n  ['exasperated', 'exasperate'],\n  ['excavated', 'excavate'],\n  ['exceeded', 'exceed'],\n  ['excepted', 'except'],\n  ['exchanged', 'exchange'],\n  ['excited', 'excite'],\n  ['excluded', 'exclude'],\n  ['excreted', 'excrete'],\n  ['executed', 'execute'],\n  ['exempted', 'exempt'],\n  ['exercised', 'exercise'],\n  ['exerted', 'exert'],\n  ['exhausted', 'exhaust'],\n  ['exhibited', 'exhibit'],\n  ['exhorted', 'exhort'],\n  ['exiled', 'exile'],\n  ['existed', 'exist'],\n  ['exited', 'exit'],\n  ['expanded', 'expand'],\n  ['expected', 'expect'],\n  ['expedited', 'expedite'],\n  ['expelled', 'expel'],\n  ['expended', 'expend'],\n  ['experienced', 'experience'],\n  ['experimented', 'experiment'],\n  ['expired', 'expire'],\n  ['explained', 'explain'],\n  ['exploded', 'explode'],\n  ['exploited', 'exploit'],\n  ['explored', 'explore'],\n  ['exported', 'export'],\n  ['exposed', 'expose'],\n  ['expounded', 'expound'],\n  ['expressed', 'express'],\n  ['expunged', 'expunge'],\n  ['extended', 'extend'],\n  ['extolled', 'extol'],\n  ['extracted', 'extract'],\n  ['extruded', 'extrude'],\n  ['eyed', 'eye'],\n  ['faced', 'face'],\n  ['faceted', 'facet'],\n  ['facilitated', 'facilitate'],\n  ['factored', 'factor'],\n  ['failed', 'fail'],\n  ['faked', 'fake'],\n  ['familiarized', 'familiarize'],\n  ['fared', 'fare'],\n  ['farmed', 'farm'],\n  ['fastened', 'fasten'],\n  ['favored', 'favor'],\n  ['favoured', 'favour'],\n  ['faxed', 'fax'],\n  ['feared', 'fear'],\n  ['featured', 'feature'],\n  ['fed', 'feed'],\n  ['federated', 'federate'],\n  ['feed', 'fee'],\n  ['fell', 'fall'],\n  ['felt', 'feel'],\n  ['fielded', 'field'],\n  ['figured', 'figure'],\n  ['filed', 'file'],\n  ['filled', 'fill'],\n  ['finalized', 'finalize'],\n  ['financed', 'finance'],\n  ['fined', 'fine'],\n  ['finished', 'finish'],\n  ['fired', 'fire'],\n  ['fished', 'fish'],\n  ['fit', 'fit'],\n  ['fixed', 'fix'],\n  ['flagged', 'flag'],\n  ['flaked', 'flake'],\n  ['flanged', 'flange'],\n  ['flattened', 'flatten'],\n  ['flavored', 'flavor'],\n  ['flavoured', 'flavour'],\n  ['fled', 'flee'],\n  ['flew', 'fly'],\n  ['floated', 'float'],\n  ['flooded', 'flood'],\n  ['flourished', 'flourish'],\n  ['flowed', 'flow'],\n  ['fluctuated', 'fluctuate'],\n  ['flung', 'fling'],\n  ['focused', 'focus'],\n  ['folded', 'fold'],\n  ['followed', 'follow'],\n  ['footed', 'foot'],\n  ['forbade', 'forbid'],\n  ['forbore', 'forbear'],\n  ['forced', 'force'],\n  ['forecasted', 'forecast'],\n  ['foresaw', 'foresee'],\n  ['forfeited', 'forfeit'],\n  ['forgave', 'forgive'],\n  ['forged', 'forge'],\n  ['forgot', 'forget'],\n  ['formalised', 'formalise'],\n  ['formalized', 'formalize'],\n  ['formatted', 'format'],\n  ['formed', 'form'],\n  ['formulated', 'formulate'],\n  ['forsaken', 'forsake'],\n  ['forwarded', 'forward'],\n  ['fostered', 'foster'],\n  ['fought', 'fight'],\n  ['fouled', 'foul'],\n  ['found', 'find'],\n  ['founded', 'found'],\n  ['fractionated', 'fractionate'],\n  ['framed', 'frame'],\n  ['freaked', 'freak'],\n  ['freed', 'free'],\n  ['froze', 'freeze'],\n  ['frustrated', 'frustrate'],\n  ['fuelled', 'fuel'],\n  ['fulfilled', 'fulfil'],\n  ['fulfilled', 'fulfill'],\n  ['functioned', 'function'],\n  ['funded', 'fund'],\n  ['funnelled', 'funnel'],\n  ['furnished', 'furnish'],\n  ['furthered', 'further'],\n  ['fuzzed', 'fuzz'],\n  ['gained', 'gain'],\n  ['galvanized', 'galvanize'],\n  ['gamed', 'game'],\n  ['garnered', 'garner'],\n  ['gassed', 'gas'],\n  ['gathered', 'gather'],\n  ['gave', 'give'],\n  ['gelled', 'gell'],\n  ['generalized', 'generalize'],\n  ['generated', 'generate'],\n  ['gifted', 'gift'],\n  ['glazed', 'glaze'],\n  ['gleaned', 'glean'],\n  ['glossed', 'gloss'],\n  ['got', 'get'],\n  ['governed', 'govern'],\n  ['grabbed', 'grab'],\n  ['graded', 'grade'],\n  ['graduated', 'graduate'],\n  ['granted', 'grant'],\n  ['granulated', 'granulate'],\n  ['grappled', 'grapple'],\n  ['grassed', 'grass'],\n  ['grated', 'grate'],\n  ['gravitated', 'gravitate'],\n  ['grazed', 'graze'],\n  ['greeted', 'greet'],\n  ['grew', 'grow'],\n  ['gripped', 'grip'],\n  ['grooved', 'groove'],\n  ['grossed', 'gross'],\n  ['ground', 'grind'],\n  ['grounded', 'ground'],\n  ['grouped', 'group'],\n  ['guaranteed', 'guarantee'],\n  ['guessed', 'guess'],\n  ['guided', 'guide'],\n  ['hacked', 'hack'],\n  ['had', 'have'],\n  ['hailed', 'hail'],\n  ['halogenated', 'halogenate'],\n  ['halted', 'halt'],\n  ['hampered', 'hamper'],\n  ['handed', 'hand'],\n  ['handled', 'handle'],\n  ['happened', 'happen'],\n  ['harmed', 'harm'],\n  ['harmonized', 'harmonize'],\n  ['harnessed', 'harness'],\n  ['harvested', 'harvest'],\n  ['hatched', 'hatch'],\n  ['hauled', 'haul'],\n  ['headed', 'head'],\n  ['heard', 'hear'],\n  ['hearted', 'heart'],\n  ['hedged', 'hedge'],\n  ['heightened', 'heighten'],\n  ['held', 'hold'],\n  ['helped', 'help'],\n  ['heralded', 'herald'],\n  ['hid', 'hide'],\n  ['highlighted', 'highlight'],\n  ['hiked', 'hike'],\n  ['hindered', 'hinder'],\n  ['hired', 'hire'],\n  ['hit', 'hit'],\n  ['homogenized', 'homogenize'],\n  ['honoured', 'honour'],\n  ['hooked', 'hook'],\n  ['hoped', 'hope'],\n  ['hosted', 'host'],\n  ['housed', 'house'],\n  ['hovered', 'hover'],\n  ['huddled', 'huddle'],\n  ['hung', 'hang'],\n  ['hurt', 'hurt'],\n  ['hydrogenated', 'hydrogenate'],\n  ['hypothesized', 'hypothesize'],\n  ['idealized', 'idealize'],\n  ['identified', 'identify'],\n  ['idled', 'idle'],\n  ['ignited', 'ignite'],\n  ['ignored', 'ignore'],\n  ['illuminated', 'illuminate'],\n  ['illustrated', 'illustrate'],\n  ['imagined', 'imagine'],\n  ['immersed', 'immerse'],\n  ['immigrated', 'immigrate'],\n  ['immunized', 'immunize'],\n  ['impacted', 'impact'],\n  ['impaired', 'impair'],\n  ['impaled', 'impale'],\n  ['imparted', 'impart'],\n  ['impeded', 'impede'],\n  ['implanted', 'implant'],\n  ['implemented', 'implement'],\n  ['implied', 'imply'],\n  ['imported', 'import'],\n  ['imposed', 'impose'],\n  ['impregnated', 'impregnate'],\n  ['impressed', 'impress'],\n  ['imprinted', 'imprint'],\n  ['improved', 'improve'],\n  ['improvised', 'improvise'],\n  ['inactivated', 'inactivate'],\n  ['inaugurated', 'inaugurate'],\n  ['incarcerated', 'incarcerate'],\n  ['incited', 'incite'],\n  ['inclined', 'incline'],\n  ['included', 'include'],\n  ['incorporated', 'incorporate'],\n  ['increased', 'increase'],\n  ['incurred', 'incur'],\n  ['indemnified', 'indemnify'],\n  ['indented', 'indent'],\n  ['indexed', 'index'],\n  ['indicated', 'indicate'],\n  ['indicted', 'indict'],\n  ['individualized', 'individualize'],\n  ['induced', 'induce'],\n  ['industrialized', 'industrialize'],\n  ['infected', 'infect'],\n  ['inferred', 'infer'],\n  ['infested', 'infest'],\n  ['influenced', 'influence'],\n  ['informed', 'inform'],\n  ['infringed', 'infringe'],\n  ['infused', 'infuse'],\n  ['ingested', 'ingest'],\n  ['inhabited', 'inhabit'],\n  ['inhaled', 'inhale'],\n  ['inherited', 'inherit'],\n  ['inhibited', 'inhibit'],\n  ['initialled', 'initial'],\n  ['initiated', 'initiate'],\n  ['injected', 'inject'],\n  ['injured', 'injure'],\n  ['inked', 'ink'],\n  ['innovated', 'innovate'],\n  ['inquired', 'inquire'],\n  ['inserted', 'insert'],\n  ['insisted', 'insist'],\n  ['inspected', 'inspect'],\n  ['inspired', 'inspire'],\n  ['installed', 'install'],\n  ['instigated', 'instigate'],\n  ['instilled', 'instill'],\n  ['instituted', 'institute'],\n  ['institutionalized', 'institutionalize'],\n  ['instructed', 'instruct'],\n  ['insulated', 'insulate'],\n  ['insured', 'insure'],\n  ['integrated', 'integrate'],\n  ['intended', 'intend'],\n  ['intensified', 'intensify'],\n  ['interacted', 'interact'],\n  ['intercepted', 'intercept'],\n  ['interested', 'interest'],\n  ['interfered', 'interfere'],\n  ['interlinked', 'interlink'],\n  ['internalized', 'internalize'],\n  ['internationalized', 'internationalize'],\n  ['interned', 'intern'],\n  ['interpreted', 'interpret'],\n  ['interrelated', 'interrelate'],\n  ['intersected', 'intersect'],\n  ['intertwined', 'intertwine'],\n  ['intervened', 'intervene'],\n  ['interviewed', 'interview'],\n  ['intoxicated', 'intoxicate'],\n  ['introduced', 'introduce'],\n  ['invaded', 'invade'],\n  ['invalidated', 'invalidate'],\n  ['invented', 'invent'],\n  ['inventoried', 'inventory'],\n  ['invested', 'invest'],\n  ['investigated', 'investigate'],\n  ['invited', 'invite'],\n  ['invoiced', 'invoice'],\n  ['invoked', 'invoke'],\n  ['involved', 'involve'],\n  ['irrigated', 'irrigate'],\n  ['isolated', 'isolate'],\n  ['issued', 'issue'],\n  ['italicized', 'italicize'],\n  ['itemized', 'itemize'],\n  ['jarred', 'jar'],\n  ['jeopardized', 'jeopardize'],\n  ['jogged', 'jog'],\n  ['joined', 'join'],\n  ['joked', 'joke'],\n  ['journeyed', 'journey'],\n  ['judged', 'judge'],\n  ['jumped', 'jump'],\n  ['justified', 'justify'],\n  ['kept', 'keep'],\n  ['kicked', 'kick'],\n  ['killed', 'kill'],\n  ['kindled', 'kindle'],\n  ['kissed', 'kiss'],\n  ['knelt', 'kneel'],\n  ['knew', 'know'],\n  ['knitted', 'knit'],\n  ['knocked', 'knock'],\n  ['knurled', 'knurl'],\n  ['labeled', 'label'],\n  ['lacked', 'lack'],\n  ['lacquered', 'lacquer'],\n  ['lagged', 'lag'],\n  ['laid', 'lay'],\n  ['lambasted', 'lambaste'],\n  ['lamented', 'lament'],\n  ['laminated', 'laminate'],\n  ['landed', 'land'],\n  ['lapsed', 'lapse'],\n  ['lasted', 'last'],\n  ['lauded', 'laud'],\n  ['laughed', 'laugh'],\n  ['launched', 'launch'],\n  ['layered', 'layer'],\n  ['leached', 'leach'],\n  ['leaked', 'leak'],\n  ['leapt', 'leap'],\n  ['learned', 'learn'],\n  ['leased', 'lease'],\n  ['lectured', 'lecture'],\n  ['led', 'lead'],\n  ['left', 'leave'],\n  ['legislated', 'legislate'],\n  ['legitimized', 'legitimize'],\n  ['lent', 'lend'],\n  ['lessened', 'lessen'],\n  ['let', 'let'],\n  ['leveled', 'level'],\n  ['levelled', 'level'],\n  ['levied', 'levy'],\n  ['liaised', 'liaise'],\n  ['liberalized', 'liberalize'],\n  ['licenced', 'licence'],\n  ['licensed', 'license'],\n  ['lied', 'lie'],\n  ['lifted', 'lift'],\n  ['liked', 'like'],\n  ['likened', 'liken'],\n  ['limited', 'limit'],\n  ['lined', 'line'],\n  ['linked', 'link'],\n  ['listed', 'list'],\n  ['listened', 'listen'],\n  ['lit', 'light'],\n  ['lived', 'live'],\n  ['loaded', 'load'],\n  ['loaned', 'loan'],\n  ['lobbied', 'lobby'],\n  ['localized', 'localize'],\n  ['located', 'locate'],\n  ['locked', 'lock'],\n  ['lodged', 'lodge'],\n  ['logged', 'log'],\n  ['looked', 'look'],\n  ['looped', 'loop'],\n  ['lost', 'lose'],\n  ['loved', 'love'],\n  ['lowered', 'lower'],\n  ['lubricated', 'lubricate'],\n  ['machined', 'machine'],\n  ['made', 'make'],\n  ['magnified', 'magnify'],\n  ['mailed', 'mail'],\n  ['maintained', 'maintain'],\n  ['malted', 'malt'],\n  ['managed', 'manage'],\n  ['mandated', 'mandate'],\n  ['manifested', 'manifest'],\n  ['manipulated', 'manipulate'],\n  ['manned', 'man'],\n  ['manoeuvred', 'manoeuvre'],\n  ['manufactured', 'manufacture'],\n  ['mapped', 'map'],\n  ['marginalized', 'marginalize'],\n  ['marked', 'mark'],\n  ['marketed', 'market'],\n  ['married', 'marry'],\n  ['masked', 'mask'],\n  ['mastered', 'master'],\n  ['matched', 'match'],\n  ['materialized', 'materialize'],\n  ['mattered', 'matter'],\n  ['matured', 'mature'],\n  ['maximized', 'maximize'],\n  ['meant', 'mean'],\n  ['measured', 'measure'],\n  ['mediated', 'mediate'],\n  ['melted', 'melt'],\n  ['mentioned', 'mention'],\n  ['mercerized', 'mercerize'],\n  ['merged', 'merge'],\n  ['messed', 'mess'],\n  ['met', 'meet'],\n  ['metallized', 'metallize'],\n  ['microfilmed', 'microfilm'],\n  ['migrated', 'migrate'],\n  ['mimicked', 'mimic'],\n  ['minced', 'mince'],\n  ['minded', 'mind'],\n  ['mined', 'mine'],\n  ['minimized', 'minimize'],\n  ['mirrored', 'mirror'],\n  ['misinterpreted', 'misinterpret'],\n  ['misrepresented', 'misrepresent'],\n  ['missed', 'miss'],\n  ['mistook', 'mistake'],\n  ['misused', 'misuse'],\n  ['mitigated', 'mitigate'],\n  ['mixed', 'mix'],\n  ['mobilized', 'mobilize'],\n  ['modeled', 'model'],\n  ['moderated', 'moderate'],\n  ['modernized', 'modernize'],\n  ['modified', 'modify'],\n  ['modulated', 'modulate'],\n  ['moistened', 'moisten'],\n  ['molded', 'mold'],\n  ['monitored', 'monitor'],\n  ['motivated', 'motivate'],\n  ['motorized', 'motorize'],\n  ['moulded', 'mould'],\n  ['mounted', 'mount'],\n  ['moved', 'move'],\n  ['mowed', 'mow'],\n  ['multiplied', 'multiply'],\n  ['named', 'name'],\n  ['napped', 'nap'],\n  ['narrated', 'narrate'],\n  ['narrowed', 'narrow'],\n  ['naturalized', 'naturalize'],\n  ['navigated', 'navigate'],\n  ['neared', 'near'],\n  ['necessitated', 'necessitate'],\n  ['needed', 'need'],\n  ['negotiated', 'negotiate'],\n  ['netted', 'net'],\n  ['networked', 'network'],\n  ['nicknamed', 'nickname'],\n  ['nominated', 'nominate'],\n  ['normalized', 'normalize'],\n  ['nosed', 'nose'],\n  ['notarized', 'notarize'],\n  ['notched', 'notch'],\n  ['noted', 'note'],\n  ['noticed', 'notice'],\n  ['notified', 'notify'],\n  ['nourished', 'nourish'],\n  ['numbered', 'number'],\n  ['nurtured', 'nurture'],\n  ['objected', 'object'],\n  ['obligated', 'obligate'],\n  ['obscured', 'obscure'],\n  ['observed', 'observe'],\n  ['obtained', 'obtain'],\n  ['occupied', 'occupy'],\n  ['occured', 'occure'],\n  ['occurred', 'occur'],\n  ['offended', 'offend'],\n  ['offered', 'offer'],\n  ['offset', 'offset'],\n  ['omitted', 'omit'],\n  ['oozed', 'ooze'],\n  ['opened', 'open'],\n  ['operated', 'operate'],\n  ['opined', 'opine'],\n  ['opposed', 'oppose'],\n  ['oppressed', 'oppress'],\n  ['opted', 'opt'],\n  ['optimized', 'optimize'],\n  ['ordered', 'order'],\n  ['organised', 'organise'],\n  ['organized', 'organize'],\n  ['orientated', 'orientate'],\n  ['oriented', 'orient'],\n  ['originated', 'originate'],\n  ['ousted', 'oust'],\n  ['outbid', 'outbid'],\n  ['outgrew', 'outgrow'],\n  ['outlawed', 'outlaw'],\n  ['outlined', 'outline'],\n  ['outnumbered', 'outnumber'],\n  ['outpaced', 'outpace'],\n  ['outperformed', 'outperform'],\n  ['outstripped', 'outstrip'],\n  ['outweighed', 'outweigh'],\n  ['overcame', 'overcome'],\n  ['overhauled', 'overhaul'],\n  ['overlapped', 'overlap'],\n  ['overlooked', 'overlook'],\n  ['overpaid', 'overpay'],\n  ['overruled', 'overrule'],\n  ['oversaw', 'oversee'],\n  ['overstated', 'overstate'],\n  ['overthrew', 'overthrow'],\n  ['overtook', 'overtake'],\n  ['overturned', 'overturn'],\n  ['overvalued', 'overvalue'],\n  ['overwhelmed', 'overwhelm'],\n  ['owed', 'owe'],\n  ['owned', 'own'],\n  ['oxygenated', 'oxygenate'],\n  ['packaged', 'package'],\n  ['packed', 'pack'],\n  ['padded', 'pad'],\n  ['paid', 'pay'],\n  ['painted', 'paint'],\n  ['paired', 'pair'],\n  ['panicked', 'panic'],\n  ['panned', 'pan'],\n  ['parachuted', 'parachute'],\n  ['paralleled', 'parallel'],\n  ['paraphrased', 'paraphrase'],\n  ['pardoned', 'pardon'],\n  ['parked', 'park'],\n  ['participated', 'participate'],\n  ['partnered', 'partner'],\n  ['partook', 'partake'],\n  ['passed', 'pass'],\n  ['patented', 'patent'],\n  ['patrolled', 'patrol'],\n  ['paused', 'pause'],\n  ['paved', 'pave'],\n  ['peaked', 'peak'],\n  ['pelleted', 'pellet'],\n  ['penetrated', 'penetrate'],\n  ['pent', 'pen'],\n  ['peppered', 'pepper'],\n  ['perceived', 'perceive'],\n  ['perforated', 'perforate'],\n  ['performed', 'perform'],\n  ['perfumed', 'perfume'],\n  ['perished', 'perish'],\n  ['permeated', 'permeate'],\n  ['permitted', 'permit'],\n  ['persevered', 'persevere'],\n  ['persisted', 'persist'],\n  ['personified', 'personify'],\n  ['persuaded', 'persuade'],\n  ['pertained', 'pertain'],\n  ['petitioned', 'petition'],\n  ['phoned', 'phone'],\n  ['photocopied', 'photocopy'],\n  ['picked', 'pick'],\n  ['pied', 'pie'],\n  ['piled', 'pile'],\n  ['piloted', 'pilot'],\n  ['pioneered', 'pioneer'],\n  ['piqued', 'pique'],\n  ['pitched', 'pitch'],\n  ['pitted', 'pit'],\n  ['placed', 'place'],\n  ['plagued', 'plague'],\n  ['planned', 'plan'],\n  ['planted', 'plant'],\n  ['plated', 'plate'],\n  ['played', 'play'],\n  ['pleaded', 'plead'],\n  ['pleased', 'please'],\n  ['pleated', 'pleat'],\n  ['pledged', 'pledge'],\n  ['plodded', 'plod'],\n  ['plotted', 'plot'],\n  ['plugged', 'plug'],\n  ['plummeted', 'plummet'],\n  ['plunged', 'plunge'],\n  ['pointed', 'point'],\n  ['poked', 'poke'],\n  ['polished', 'polish'],\n  ['polled', 'poll'],\n  ['polymerized', 'polymerize'],\n  ['pondered', 'ponder'],\n  ['pooled', 'pool'],\n  ['popped', 'pop'],\n  ['popularized', 'popularize'],\n  ['pored', 'pore'],\n  ['portrayed', 'portray'],\n  ['posed', 'pose'],\n  ['posited', 'posit'],\n  ['positioned', 'position'],\n  ['possessed', 'possess'],\n  ['posted', 'post'],\n  ['postponed', 'postpone'],\n  ['postulated', 'postulate'],\n  ['potted', 'pot'],\n  ['poured', 'pour'],\n  ['powered', 'power'],\n  ['practiced', 'practice'],\n  ['practised', 'practise'],\n  ['praised', 'praise'],\n  ['prayed', 'pray'],\n  ['preached', 'preach'],\n  ['preceded', 'precede'],\n  ['precipitated', 'precipitate'],\n  ['precluded', 'preclude'],\n  ['predated', 'predate'],\n  ['predetermined', 'predetermine'],\n  ['predicted', 'predict'],\n  ['predominated', 'predominate'],\n  ['prefabricated', 'prefabricate'],\n  ['preferred', 'prefer'],\n  ['premiered', 'premier'],\n  ['premised', 'premise'],\n  ['preoccupied', 'preoccupy'],\n  ['prepared', 'prepare'],\n  ['prescribed', 'prescribe'],\n  ['presented', 'present'],\n  ['preserved', 'preserve'],\n  ['presided', 'preside'],\n  ['pressed', 'press'],\n  ['pressurized', 'pressurize'],\n  ['prevailed', 'prevail'],\n  ['prevented', 'prevent'],\n  ['pried', 'pry'],\n  ['primed', 'prime'],\n  ['printed', 'print'],\n  ['probed', 'probe'],\n  ['proceeded', 'proceed'],\n  ['processed', 'process'],\n  ['proclaimed', 'proclaim'],\n  ['prodded', 'prod'],\n  ['produced', 'produce'],\n  ['proffered', 'proffer'],\n  ['profiled', 'profile'],\n  ['programmed', 'programme'],\n  ['progressed', 'progress'],\n  ['prohibited', 'prohibit'],\n  ['projected', 'project'],\n  ['prolonged', 'prolong'],\n  ['promised', 'promise'],\n  ['promoted', 'promote'],\n  ['prompted', 'prompt'],\n  ['promulgated', 'promulgate'],\n  ['pronounced', 'pronounce'],\n  ['proofed', 'proof'],\n  ['propelled', 'propel'],\n  ['proposed', 'propose'],\n  ['prorated', 'prorate'],\n  ['prosecuted', 'prosecute'],\n  ['prospered', 'prosper'],\n  ['protected', 'protect'],\n  ['proved', 'prove'],\n  ['provided', 'provide'],\n  ['provoked', 'provoke'],\n  ['pruned', 'prune'],\n  ['published', 'publish'],\n  ['pulled', 'pull'],\n  ['pumped', 'pump'],\n  ['punched', 'punch'],\n  ['punctuated', 'punctuate'],\n  ['purchased', 'purchase'],\n  ['pursued', 'pursue'],\n  ['pushed', 'push'],\n  ['put', 'put'],\n  ['qualified', 'qualify'],\n  ['quarantined', 'quarantine'],\n  ['quashed', 'quash'],\n  ['queried', 'query'],\n  ['questioned', 'question'],\n  ['queued', 'queue'],\n  ['quit', 'quit'],\n  ['quoted', 'quote'],\n  ['racked', 'rack'],\n  ['radiated', 'radiate'],\n  ['raged', 'rage'],\n  ['raided', 'raid'],\n  ['rained', 'rain'],\n  ['raised', 'raise'],\n  ['rallied', 'rally'],\n  ['ran', 'run'],\n  ['randomised', 'randomise'],\n  ['randomized', 'randomize'],\n  ['rang', 'ring'],\n  ['ranged', 'range'],\n  ['ranked', 'rank'],\n  ['rated', 'rate'],\n  ['ratified', 'ratify'],\n  ['rationalized', 'rationalize'],\n  ['ravaged', 'ravage'],\n  ['reached', 'reach'],\n  ['reacquired', 'reacquire'],\n  ['reacted', 'react'],\n  ['read', 'read'],\n  ['reaffirmed', 'reaffirm'],\n  ['realigned', 'realign'],\n  ['realised', 'realise'],\n  ['realized', 'realize'],\n  ['reaped', 'reap'],\n  ['reasoned', 'reason'],\n  ['reasserted', 'reassert'],\n  ['reassessed', 'reassess'],\n  ['reassured', 'reassure'],\n  ['rebated', 'rebate'],\n  ['rebounded', 'rebound'],\n  ['rebuilt', 'rebuild'],\n  ['rebutted', 'rebut'],\n  ['recalculated', 'recalculate'],\n  ['recalled', 'recall'],\n  ['recast', 'recast'],\n  ['received', 'receive'],\n  ['recited', 'recite'],\n  ['reckoned', 'reckon'],\n  ['reclaimed', 'reclaim'],\n  ['reclassified', 'reclassify'],\n  ['recognised', 'recognise'],\n  ['recognized', 'recognize'],\n  ['recommended', 'recommend'],\n  ['reconciled', 'reconcile'],\n  ['reconfigured', 'reconfigure'],\n  ['reconfirmed', 'reconfirm'],\n  ['reconsidered', 'reconsider'],\n  ['recorded', 'record'],\n  ['recounted', 'recount'],\n  ['recovered', 'recover'],\n  ['recreated', 'recreate'],\n  ['recruited', 'recruit'],\n  ['redefined', 'redefin'],\n  ['redesigned', 'redesign'],\n  ['redid', 'redo'],\n  ['redirected', 'redirect'],\n  ['redistributed', 'redistribute'],\n  ['reduced', 'reduce'],\n  ['reestablished', 'reestablish'],\n  ['refereed', 'referee'],\n  ['referenced', 'reference'],\n  ['referred', 'refer'],\n  ['refinanced', 'refinance'],\n  ['refined', 'refine'],\n  ['reflected', 'reflect'],\n  ['refocused', 'refocuse'],\n  ['reformed', 'reform'],\n  ['refrigerated', 'refrigerate'],\n  ['refunded', 'refund'],\n  ['refused', 'refuse'],\n  ['refuted', 'refute'],\n  ['regained', 'regain'],\n  ['regarded', 'regard'],\n  ['registered', 'register'],\n  ['regressed', 'regress'],\n  ['regretted', 'regret'],\n  ['regulated', 'regulate'],\n  ['rehearsed', 'rehearse'],\n  ['reigned', 'reign'],\n  ['reimbursed', 'reimburse'],\n  ['reinforced', 'reinforce'],\n  ['reinstated', 'reinstate'],\n  ['reintroduced', 'reintroduce'],\n  ['reinvented', 'reinvent'],\n  ['reinvested', 'reinvest'],\n  ['reinvigorated', 'reinvigorate'],\n  ['reissued', 'reissue'],\n  ['reiterated', 'reiterate'],\n  ['rejected', 'reject'],\n  ['rejoined', 'rejoin'],\n  ['related', 'relate'],\n  ['relaunched', 'relaunch'],\n  ['relaxed', 'relax'],\n  ['relayed', 'relay'],\n  ['released', 'release'],\n  ['relied', 'rely'],\n  ['relieved', 'relieve'],\n  ['relinquished', 'relinquish'],\n  ['relocated', 'relocate'],\n  ['remade', 'remake'],\n  ['remained', 'remain'],\n  ['remanded', 'remand'],\n  ['remarked', 'remark'],\n  ['remembered', 'remember'],\n  ['reminded', 'remind'],\n  ['remitted', 'remit'],\n  ['removed', 'remove'],\n  ['renamed', 'rename'],\n  ['rendered', 'render'],\n  ['renegotiated', 'renegotiate'],\n  ['renewed', 'renew'],\n  ['renounced', 'renounce'],\n  ['renovated', 'renovate'],\n  ['rent', 'rend'],\n  ['rented', 'rent'],\n  ['reopened', 'reopen'],\n  ['reordered', 'reorder'],\n  ['reorganized', 'reorganize'],\n  ['reoriented', 'reorient'],\n  ['repaid', 'repay'],\n  ['repatriated', 'repatriate'],\n  ['repealed', 'repeal'],\n  ['repeated', 'repeat'],\n  ['replaced', 'replace'],\n  ['replanted', 'replant'],\n  ['replicated', 'replicate'],\n  ['replied', 'reply'],\n  ['reported', 'report'],\n  ['represented', 'represent'],\n  ['reprinted', 'reprint'],\n  ['reproached', 'reproach'],\n  ['reproduced', 'reproduce'],\n  ['requested', 'request'],\n  ['required', 'require'],\n  ['reread', 'reread'],\n  ['rescheduled', 'reschedule'],\n  ['rescinded', 'rescind'],\n  ['rescued', 'rescue'],\n  ['researched', 'research'],\n  ['resembled', 'resemble'],\n  ['reserved', 'reserve'],\n  ['resided', 'reside'],\n  ['resigned', 'resign'],\n  ['resisted', 'resist'],\n  ['resold', 'resell'],\n  ['resolved', 'resolve'],\n  ['resonated', 'resonate'],\n  ['respected', 'respect'],\n  ['responded', 'respond'],\n  ['restated', 'restate'],\n  ['rested', 'rest'],\n  ['restored', 'restore'],\n  ['restricted', 'restrict'],\n  ['restructured', 'restructure'],\n  ['resubmitted', 'resubmit'],\n  ['resulted', 'result'],\n  ['resumed', 'resume'],\n  ['retained', 'retain'],\n  ['retired', 'retire'],\n  ['retook', 'retake'],\n  ['retraced', 'retrace'],\n  ['retransmitted', 'retransmit'],\n  ['retreated', 'retreat'],\n  ['retrieved', 'retrieve'],\n  ['returned', 'return'],\n  ['revamped', 'revamp'],\n  ['revealed', 'reveal'],\n  ['revered', 'revere'],\n  ['reversed', 'reverse'],\n  ['reverted', 'revert'],\n  ['reviewed', 'review'],\n  ['revised', 'revise'],\n  ['revisited', 'revisit'],\n  ['revitalized', 'revitalize'],\n  ['revived', 'revive'],\n  ['revoked', 'revoke'],\n  ['revolutionized', 'revolutionize'],\n  ['revolved', 'revolve'],\n  ['rewrote', 'rewrite'],\n  ['ribbed', 'rib'],\n  ['risked', 'risk'],\n  ['rivalled', 'rival'],\n  ['roamed', 'roam'],\n  ['roared', 'roar'],\n  ['roasted', 'roast'],\n  ['robbed', 'rob'],\n  ['rode', 'ride'],\n  ['rolled', 'roll'],\n  ['rooted', 'root'],\n  ['rose', 'rise'],\n  ['rotated', 'rotate'],\n  ['rounded', 'round'],\n  ['rubberized', 'rubberize'],\n  ['ruined', 'ruin'],\n  ['ruled', 'rule'],\n  ['rushed', 'rush'],\n  ['sacrificed', 'sacrifice'],\n  ['said', 'say'],\n  ['sailed', 'sail'],\n  ['salted', 'salt'],\n  ['saluted', 'salute'],\n  ['sampled', 'sample'],\n  ['sanctioned', 'sanction'],\n  ['sang', 'sing'],\n  ['sank', 'sink'],\n  ['sat', 'sit'],\n  ['satisfied', 'satisfy'],\n  ['saturated', 'saturate'],\n  ['saved', 'save'],\n  ['saw', 'see'],\n  ['scaled', 'scale'],\n  ['scanned', 'scan'],\n  ['scheduled', 'schedule'],\n  ['schooled', 'school'],\n  ['scored', 'score'],\n  ['scouted', 'scout'],\n  ['scrambled', 'scramble'],\n  ['screened', 'screen'],\n  ['screwed', 'screw'],\n  ['sculptured', 'sculpture'],\n  ['scutched', 'scutch'],\n  ['sealed', 'seal'],\n  ['searched', 'search'],\n  ['seated', 'seat'],\n  ['seconded', 'second'],\n  ['secured', 'secure'],\n  ['seeded', 'seed'],\n  ['seemed', 'seem'],\n  ['seeped', 'seep'],\n  ['segmented', 'segment'],\n  ['segregated', 'segregate'],\n  ['seized', 'seize'],\n  ['selected', 'select'],\n  ['sensed', 'sense'],\n  ['sensitized', 'sensitize'],\n  ['sent', 'send'],\n  ['sentenced', 'sentence'],\n  ['separated', 'separate'],\n  ['sequestered', 'sequester'],\n  ['serrated', 'serrate'],\n  ['served', 'serve'],\n  ['serviced', 'service'],\n  ['set', 'set'],\n  ['settled', 'settle'],\n  ['severed', 'sever'],\n  ['sewn', 'sew'],\n  ['shaped', 'shape'],\n  ['shared', 'share'],\n  ['shattered', 'shatter'],\n  ['shaved', 'shave'],\n  ['shed', 'shed'],\n  ['shelled', 'shell'],\n  ['sheltered', 'shelter'],\n  ['shielded', 'shield'],\n  ['shifted', 'shift'],\n  ['shipped', 'ship'],\n  ['shone', 'shine'],\n  ['shook', 'shake'],\n  ['shored', 'shore'],\n  ['shortened', 'shorten'],\n  ['shot', 'shoot'],\n  ['shouted', 'shout'],\n  ['shoved', 'shove'],\n  ['showcased', 'showcase'],\n  ['showed', 'show'],\n  ['shrank', 'shrink'],\n  ['shredded', 'shred'],\n  ['shrieked', 'shriek'],\n  ['shucked', 'shuck'],\n  ['shuffled', 'shuffle'],\n  ['shunned', 'shun'],\n  ['shut', 'shut'],\n  ['sided', 'side'],\n  ['sidelined', 'sideline'],\n  ['signaled', 'signal'],\n  ['signed', 'sign'],\n  ['signified', 'signify'],\n  ['simplified', 'simplify'],\n  ['simulated', 'simulate'],\n  ['singled', 'single'],\n  ['sized', 'size'],\n  ['sketched', 'sketch'],\n  ['skidded', 'skid'],\n  ['skied', 'ski'],\n  ['skimmed', 'skim'],\n  ['skinned', 'skin'],\n  ['skyrocketed', 'skyrocket'],\n  ['slammed', 'slam'],\n  ['slashed', 'slash'],\n  ['slatted', 'slat'],\n  ['slaughtered', 'slaughter'],\n  ['slayed', 'slay'],\n  ['slept', 'sleep'],\n  ['sliced', 'slice'],\n  ['slid', 'slide'],\n  ['slipped', 'slip'],\n  ['sloped', 'slope'],\n  ['slowed', 'slow'],\n  ['slumped', 'slump'],\n  ['smiled', 'smile'],\n  ['smoked', 'smoke'],\n  ['smuggled', 'smuggle'],\n  ['snaked', 'snake'],\n  ['snarled', 'snarl'],\n  ['sniped', 'snipe'],\n  ['snuck', 'sneak'],\n  ['soaked', 'soak'],\n  ['soared', 'soar'],\n  ['socked', 'sock'],\n  ['softened', 'soften'],\n  ['soiled', 'soil'],\n  ['sold', 'sell'],\n  ['solemnized', 'solemnize'],\n  ['solicited', 'solicit'],\n  ['solidified', 'solidify'],\n  ['solved', 'solve'],\n  ['sought', 'seek'],\n  ['sounded', 'sound'],\n  ['sowed', 'sow'],\n  ['spaced', 'space'],\n  ['spanned', 'span'],\n  ['spared', 'spare'],\n  ['sparked', 'spark'],\n  ['sparred', 'spar'],\n  ['spat', 'spit'],\n  ['spawned', 'spawn'],\n  ['spearheaded', 'spearhead'],\n  ['specialised', 'specialise'],\n  ['specialized', 'specialize'],\n  ['specified', 'specify'],\n  ['speckled', 'speckle'],\n  ['speculated', 'speculate'],\n  ['speeded', 'speed'],\n  ['spelled', 'spell'],\n  ['spent', 'spend'],\n  ['spiked', 'spike'],\n  ['spilled', 'spill'],\n  ['spited', 'spite'],\n  ['split', 'split'],\n  ['spoke', 'speak'],\n  ['sponsored', 'sponsor'],\n  ['spotted', 'spot'],\n  ['spouted', 'spout'],\n  ['sprang', 'spring'],\n  ['spread', 'spread'],\n  ['sprinkled', 'sprinkle'],\n  ['sprouted', 'sprout'],\n  ['routed', 'route'],\n  ['spun', 'spin'],\n  ['spurred', 'spur'],\n  ['squared', 'square'],\n  ['squeezed', 'squeeze'],\n  ['stabilized', 'stabilize'],\n  ['stacked', 'stack'],\n  ['staffed', 'staff'],\n  ['staged', 'stage'],\n  ['staggered', 'stagger'],\n  ['stagnated', 'stagnate'],\n  ['stained', 'stain'],\n  ['staked', 'stake'],\n  ['stalled', 'stall'],\n  ['stamped', 'stamp'],\n  ['standardized', 'standardize'],\n  ['stapled', 'staple'],\n  ['started', 'start'],\n  ['stated', 'state'],\n  ['stationed', 'station'],\n  ['stayed', 'stay'],\n  ['stemmed', 'stem'],\n  ['stepped', 'step'],\n  ['stifled', 'stifle'],\n  ['stimulated', 'stimulate'],\n  ['stipulated', 'stipulate'],\n  ['stirred', 'stir'],\n  ['stockpiled', 'stockpile'],\n  ['stole', 'steal'],\n  ['stood', 'stand'],\n  ['stopped', 'stop'],\n  ['stored', 'store'],\n  ['stormed', 'storm'],\n  ['stowed', 'stow'],\n  ['straddled', 'straddle'],\n  ['stratified', 'stratify'],\n  ['streamed', 'stream'],\n  ['streamlined', 'streamline'],\n  ['strengthened', 'strengthen'],\n  ['stressed', 'stress'],\n  ['stretched', 'stretch'],\n  ['strewn', 'strew'],\n  ['stripped', 'strip'],\n  ['strolled', 'stroll'],\n  ['strove', 'strive'],\n  ['struck', 'strike'],\n  ['structured', 'structure'],\n  ['struggled', 'struggle'],\n  ['stuck', 'stick'],\n  ['studied', 'study'],\n  ['stuffed', 'stuff'],\n  ['stumbled', 'stumble'],\n  ['stunk', 'stink'],\n  ['stunned', 'stun'],\n  ['styled', 'style'],\n  ['stylized', 'stylize'],\n  ['subdivided', 'subdivide'],\n  ['submerged', 'submerge'],\n  ['submitted', 'submit'],\n  ['subscribed', 'subscribe'],\n  ['subsided', 'subside'],\n  ['subsidized', 'subsidize'],\n  ['substantiated', 'substantiate'],\n  ['substituted', 'substitute'],\n  ['subsumed', 'subsume'],\n  ['succeeded', 'succeed'],\n  ['succumbed', 'succumb'],\n  ['sued', 'sue'],\n  ['suffered', 'suffer'],\n  ['suggested', 'suggest'],\n  ['suited', 'suit'],\n  ['sulphonated', 'sulphonate'],\n  ['summarized', 'summarize'],\n  ['summed', 'sum'],\n  ['summoned', 'summon'],\n  ['superseded', 'supersede'],\n  ['supervised', 'supervise'],\n  ['supplemented', 'supplement'],\n  ['supplied', 'supply'],\n  ['supported', 'support'],\n  ['suppressed', 'suppress'],\n  ['surfaced', 'surface'],\n  ['surfed', 'surf'],\n  ['surged', 'surge'],\n  ['surmised', 'surmise'],\n  ['surmounted', 'surmount'],\n  ['surpassed', 'surpass'],\n  ['surprised', 'surprise'],\n  ['surrendered', 'surrender'],\n  ['surrounded', 'surround'],\n  ['surveyed', 'survey'],\n  ['survived', 'survive'],\n  ['suspected', 'suspect'],\n  ['suspended', 'suspend'],\n  ['sustained', 'sustain'],\n  ['swam', 'swim'],\n  ['sweetened', 'sweeten'],\n  ['swelled', 'swell'],\n  ['swept', 'sweep'],\n  ['switched', 'switch'],\n  ['swore', 'swear'],\n  ['synthesized', 'synthesize'],\n  ['systematized', 'systematize'],\n  ['tabbed', 'tab'],\n  ['tabled', 'table'],\n  ['tabulated', 'tabulate'],\n  ['tackled', 'tackle'],\n  ['tagged', 'tag'],\n  ['tailored', 'tailor'],\n  ['talked', 'talk'],\n  ['tallied', 'tally'],\n  ['tanned', 'tan'],\n  ['taped', 'tape'],\n  ['tapered', 'taper'],\n  ['tapped', 'tap'],\n  ['targeted', 'target'],\n  ['tarnished', 'tarnish'],\n  ['tasked', 'task'],\n  ['tasted', 'taste'],\n  ['taught', 'teach'],\n  ['taxed', 'tax'],\n  ['teamed', 'team'],\n  ['teetered', 'teeter'],\n  ['telegraphed', 'telegraph'],\n  ['telephoned', 'telephone'],\n  ['tempted', 'tempt'],\n  ['tended', 'tend'],\n  ['tendered', 'tender'],\n  ['termed', 'term'],\n  ['terminated', 'terminate'],\n  ['tested', 'test'],\n  ['testified', 'testify'],\n  ['thanked', 'thank'],\n  ['thawed', 'thaw'],\n  ['thinned', 'thin'],\n  ['thought', 'think'],\n  ['threaded', 'thread'],\n  ['threatened', 'threaten'],\n  ['threw', 'throw'],\n  ['thrived', 'thrive'],\n  ['thrust', 'thrust'],\n  ['tied', 'tie'],\n  ['tiered', 'tier'],\n  ['tightened', 'tighten'],\n  ['timed', 'time'],\n  ['tipped', 'tip'],\n  ['titled', 'title'],\n  ['toasted', 'toast'],\n  ['told', 'tell'],\n  ['tolerated', 'tolerate'],\n  ['tolled', 'toll'],\n  ['toned', 'tone'],\n  ['took', 'take'],\n  ['topped', 'top'],\n  ['tore', 'tear'],\n  ['tossed', 'toss'],\n  ['totaled', 'total'],\n  ['touched', 'touch'],\n  ['toured', 'tour'],\n  ['traced', 'trace'],\n  ['tracked', 'track'],\n  ['traded', 'trade'],\n  ['trafficked', 'traffick'],\n  ['trailed', 'trail'],\n  ['trained', 'train'],\n  ['transacted', 'transact'],\n  ['transferred', 'transfer'],\n  ['transformed', 'transform'],\n  ['transited', 'transit'],\n  ['translated', 'translate'],\n  ['transmitted', 'transmit'],\n  ['transpired', 'transpire'],\n  ['transported', 'transport'],\n  ['travelled', 'travel'],\n  ['treated', 'treat'],\n  ['trended', 'trend'],\n  ['tried', 'try'],\n  ['triggered', 'trigger'],\n  ['trimmed', 'trim'],\n  ['tripled', 'triple'],\n  ['trumpeted', 'trumpet'],\n  ['truncated', 'truncate'],\n  ['trusted', 'trust'],\n  ['tufted', 'tuft'],\n  ['tumbled', 'tumble'],\n  ['tuned', 'tune'],\n  ['turned', 'turn'],\n  ['twinned', 'twin'],\n  ['typed', 'type'],\n  ['typified', 'typify'],\n  ['uncovered', 'uncover'],\n  ['underbid', 'underbid'],\n  ['undercapitalized', 'undercapitalize'],\n  ['undercut', 'undercut'],\n  ['underdeveloped', 'underdevelop'],\n  ['underestimated', 'underestimate'],\n  ['underlay', 'underlie'],\n  ['underlined', 'underline'],\n  ['undermined', 'undermine'],\n  ['underpaid', 'underpay'],\n  ['underperformed', 'underperform'],\n  ['underpinned', 'underpin'],\n  ['underrepresented', 'underrepresent'],\n  ['underscored', 'underscore'],\n  ['undersigned', 'undersign'],\n  ['understood', 'understand'],\n  ['undertook', 'undertake'],\n  ['underwent', 'undergo'],\n  ['unearthed', 'unearth'],\n  ['unfolded', 'unfold'],\n  ['unified', 'unify'],\n  ['unionized', 'unionize'],\n  ['united', 'unite'],\n  ['unleashed', 'unleash'],\n  ['unloaded', 'unload'],\n  ['unscrambled', 'unscramble'],\n  ['unveiled', 'unveil'],\n  ['updated', 'update'],\n  ['upgraded', 'upgrade'],\n  ['upheld', 'uphold'],\n  ['upholstered', 'upholster'],\n  ['uploaded', 'upload'],\n  ['upped', 'up'],\n  ['upset', 'upset'],\n  ['urged', 'urge'],\n  ['used', 'use'],\n  ['ushered', 'usher'],\n  ['utilized', 'utilize'],\n  ['vaccinated', 'vaccinate'],\n  ['validated', 'validate'],\n  ['valued', 'value'],\n  ['vanished', 'vanish'],\n  ['vaporized', 'vaporize'],\n  ['varied', 'vary'],\n  ['varnished', 'varnish'],\n  ['vegetated', 'vegetate'],\n  ['vented', 'vent'],\n  ['ventilated', 'ventilate'],\n  ['ventured', 'venture'],\n  ['verified', 'verify'],\n  ['vibed', 'vibe'],\n  ['vied', 'vie'],\n  ['viewed', 'view'],\n  ['violated', 'violate'],\n  ['visited', 'visit'],\n  ['voiced', 'voice'],\n  ['voided', 'void'],\n  ['volunteered', 'volunteer'],\n  ['voted', 'vote'],\n  ['vowed', 'vow'],\n  ['vulcanized', 'vulcanize'],\n  ['waited', 'wait'],\n  ['waived', 'waive'],\n  ['walked', 'walk'],\n  ['walled', 'wall'],\n  ['waned', 'wane'],\n  ['wanted', 'want'],\n  ['warehoused', 'warehouse'],\n  ['warmed', 'warm'],\n  ['warned', 'warn'],\n  ['warranted', 'warrant'],\n  ['was', 'is'],\n  ['washed', 'wash'],\n  ['wasted', 'waste'],\n  ['watched', 'watch'],\n  ['watered', 'water'],\n  ['waxed', 'wax'],\n  ['weakened', 'weaken'],\n  ['weed', 'wee'],\n  ['weighed', 'weigh'],\n  ['weighted', 'weight'],\n  ['welcomed', 'welcome'],\n  ['welded', 'weld'],\n  ['went', 'go'],\n  ['wept', 'weep'],\n  ['were', 'are'],\n  ['whirled', 'whirl'],\n  ['widened', 'widen'],\n  ['widowed', 'widow'],\n  ['winged', 'wing'],\n  ['wiped', 'wipe'],\n  ['wired', 'wire'],\n  ['wished', 'wish'],\n  ['withdrew', 'withdraw'],\n  ['withheld', 'withhold'],\n  ['withstood', 'withstand'],\n  ['witnessed', 'witness'],\n  ['woke', 'wake'],\n  ['won', 'win'],\n  ['wondered', 'wonder'],\n  ['wore', 'wear'],\n  ['worked', 'work'],\n  ['worried', 'worry'],\n  ['worsened', 'worsen'],\n  ['wound', 'wind'],\n  ['wove', 'weave'],\n  ['wrapped', 'wrap'],\n  ['wrestled', 'wrestle'],\n  ['wrote', 'write'],\n  ['wrung', 'wring'],\n  ['yielded', 'yield'],\n  ['zoned', 'zone'],\n  ['smelled', 'smell'],\n  ['chirped', 'chirp'],\n  ['doomed', 'doom'],\n  ['bowed', 'bow'],\n  ['begged', 'beg'],\n  ['chewed', 'chew'],\n  ['flapped', 'flap'],\n  ['murmured', 'murmur'],\n  ['oiled', 'oil'],\n  ['scarred', 'scar'],\n  ['slapped', 'slap'],\n  ['swayed', 'sway'],\n  ['snapped', 'snap'],\n  ['trotted', 'trot'],\n  ['winked', 'wink'],\n  ['yelled', 'yell'],\n  ['jammed', 'jam'],\n  ['courted', 'court'],\n  ['emptied', 'empty'],\n\n  ['deleted', 'delete'],\n  ['secreted', 'secrete'],\n  ['tamed', 'tame'],\n  ['glared', 'glare'],\n  ['impelled', 'impel'],\n  ['dwelled', 'dwell'],\n  ['honored', 'honor'],\n  ['obliged', 'oblige'],\n  ['lubed', 'lube'],\n  ['stared', 'stare'],\n  ['growled', 'growl'],\n  ['gasped', 'gasp'],\n  ['roped', 'rope'],\n  ['ridiculed', 'ridicule'],\n  ['prided', 'pride'],\n  ['quelled', 'quell'],\n  ['indulged', 'indulge'],\n  ['eloped', 'elope'],\n  ['chimed', 'chime'],\n  ['raped', 'rape'],\n  ['groaned', 'groan'],\n  ['faded', 'fade'],\n  ['dialed', 'dial'],\n  ['stroked', 'stroke'],\n  ['scared', 'scare'],\n  ['marshalled', 'marshall'],\n  ['waked', 'wake'],\n  ['rioted', 'riot'],\n  ['mired', 'mire'],\n  ['texted', 'text'],\n  ['equaled', 'equal'],\n  ['caked', 'cake'],\n  ['groped', 'grope'],\n  ['honed', 'hone'],\n  ['clouded', 'cloud'],\n  ['backfired', 'backfire'],\n  ['majored', 'major'],\n  ['modelled', 'model'],\n  ['sizzled', 'sizzle'],\n  ['msged', 'msg'],\n  ['txted', 'txt'],\n  ['rhymed', 'rhyme'],\n  ['sped', 'speed'],\n  ['barricaded', 'barricade'],\n  ['draped', 'drape'],\n  ['cringed', 'cringe'],\n  ['rebuked', 'rebuke'],\n  ['chronicled', 'chronicle'],\n  ['martialed', 'martial'],\n  ['quaked', 'quake'],\n  ['coveted', 'covet'],\n  ['honeymooned', 'honeymoon'],\n  ['accustomed', 'accustom'],\n  ['befriended', 'befriend'],\n\n  [\"abutted\", \"abut\"],\n  [\"apprehended\", \"apprehend\"],\n  [\"assayed\", \"assay\"],\n  [\"awakened\", \"awaken\"],\n  [\"banged\", \"bang\"],\n  [\"binned\", \"bin\"],\n  [\"blinked\", \"blink\"],\n  [\"blossomed\", \"blossom\"],\n  [\"blotted\", \"blot\"],\n  [\"canvassed\", \"canvass\"],\n  [\"combatted\", \"combat\"],\n  [\"comprehended\", \"comprehend\"],\n  [\"compressed\", \"compress\"],\n  // [\"cross-checked\", \"cross-check\"],\n  [\"crowned\", \"crown\"],\n  [\"culled\", \"cull\"],\n  [\"decayed\", \"decay\"],\n  [\"dimmed\", \"dim\"],\n  [\"disbanded\", \"disband\"],\n  [\"elbowed\", \"elbow\"],\n  [\"embedded\", \"embed\"],\n  [\"encompassed\", \"encompass\"],\n  [\"enlivened\", \"enliven\"],\n  [\"enrolled\", \"enrol\"],\n  [\"expressed\", \"express\"],\n  [\"fancied\", \"fancy\"],\n  [\"fathomed\", \"fathom\"],\n  // [\"fine-tuned\", \"fine-tune\"],\n  [\"fitted\", \"fit\"],\n  // [\"forecast\", \"forecast\"],\n  [\"forewent\", \"forego\"],\n  [\"fretted\", \"fret\"],\n  [\"gossiped\", \"gossip\"],\n  [\"hastened\", \"hasten\"],\n  [\"healed\", \"heal\"],\n  [\"heated\", \"heat\"],\n  [\"heeded\", \"heed\"],\n  [\"hopped\", \"hop\"],\n  [\"instilled\", \"instil\"],\n  [\"kick-started\", \"kick-start\"],\n  [\"labelled\", \"label\"],\n  [\"levelled\", \"level\"],\n  [\"massed\", \"mass\"],\n  [\"mended\", \"mend\"],\n  [\"misled\", \"mislead\"],\n  [\"mopped\", \"mop\"],\n  [\"nodded\", \"nod\"],\n  [\"outed\", \"out\"],\n  [\"outran\", \"outrun\"],\n  [\"overrode\", \"override\"],\n  [\"owned\", \"own\"],\n  [\"peeled\", \"peel\"],\n  [\"pinned\", \"pin\"],\n  [\"raked\", \"rake\"],\n  [\"rebelled\", \"rebel\"],\n  [\"rebooted\", \"reboot\"],\n  [\"reeled\", \"reel\"],\n  [\"refited\", \"refit\"],\n  [\"reined\", \"rein\"],\n  [\"remodelled\", \"remodel\"],\n  [\"repented\", \"repent\"],\n  [\"rigged\", \"rig\"],\n  // [\"self-destructed\", \"self-destruct\"],\n  [\"sewed\", \"sew\"],\n  [\"sheared\", \"shear\"],\n  [\"shielded\", \"shield\"],\n  [\"signalled\", \"signal\"],\n  [\"sinned\", \"sin\"],\n  [\"skewed\", \"skew\"],\n  [\"slew\", \"slay\"],\n  [\"slimmed\", \"slim\"],\n  [\"stewed\", \"stew\"],\n  [\"stung\", \"sting\"],\n  [\"subpoenaed\", \"subpoena\"],\n  [\"sweated\", \"sweat\"],\n  [\"swung\", \"swing\"],\n  [\"swivelled\", \"swivel\"],\n  [\"thrived\", \"thrive\"],\n  [\"tilted\", \"tilt\"],\n  [\"totalled\", \"total\"],\n  [\"towed\", \"tow\"],\n  [\"trespassed\", \"trespass\"],\n  [\"tweaked\", \"tweak\"],\n  [\"untied\", \"untie\"],\n  [\"unwound\", \"unwind\"],\n  [\"vetted\", \"vet\"],\n  [\"vetoed\", \"veto\"],\n  [\"withheld\", \"withhold\"],\n  [\"witnessed\", \"witness\"],\n  [\"welled\", \"well\"],\n  [\"babysat\", \"babysit\"],\n  [\"recycled\", \"recycle\"],\n\n\n  // ['', ''],\n]"
  },
  {
    "path": "data/pairs/PresentTense.js",
    "content": "export default [\n  ['are', 'is'],\n  ['has', 'have'],\n  ['provides', 'provide'],\n  ['does', 'do'],\n  ['includes', 'include'],\n  ['means', 'mean'],\n  ['requires', 'require'],\n  ['needs', 'need'],\n  ['continues', 'continue'],\n  ['supports', 'support'],\n  ['allows', 'allow'],\n  ['makes', 'make'],\n  ['represents', 'represent'],\n  ['follows', 'follow'],\n  ['remains', 'remain'],\n  ['offers', 'offer'],\n  ['indicates', 'indicate'],\n  ['appears', 'appear'],\n  ['applies', 'apply'],\n  ['contains', 'contain'],\n  ['shows', 'show'],\n  ['takes', 'take'],\n  ['says', 'say'],\n  ['suggests', 'suggest'],\n  ['recognizes', 'recognize'],\n  ['helps', 'help'],\n  ['works', 'work'],\n  ['reflects', 'reflect'],\n  ['involves', 'involve'],\n  ['consists', 'consist'],\n  ['gives', 'give'],\n  ['uses', 'use'],\n  ['exists', 'exist'],\n  ['presents', 'present'],\n  ['comes', 'come'],\n  ['agrees', 'agree'],\n  ['outlines', 'outline'],\n  ['refers', 'refer'],\n  ['becomes', 'become'],\n  ['aims', 'aim'],\n  ['focuses', 'focus'],\n  ['meets', 'meet'],\n  ['occurs', 'occur'],\n  ['recommends', 'recommend'],\n  ['plans', 'plan'],\n  ['promotes', 'promote'],\n  ['covers', 'cover'],\n  ['seems', 'seem'],\n  ['contributes', 'contribute'],\n  ['identifies', 'identify'],\n  ['relates', 'relate'],\n  ['receives', 'receive'],\n  ['describes', 'describe'],\n  ['ensures', 'ensure'],\n  ['addresses', 'address'],\n  ['encourages', 'encourage'],\n  ['explains', 'explain'],\n  ['serves', 'serve'],\n  ['sets', 'set'],\n  ['brings', 'bring'],\n  ['believes', 'believe'],\n  ['holds', 'hold'],\n  ['depends', 'depend'],\n  ['determines', 'determine'],\n  ['plays', 'play'],\n  ['states', 'state'],\n  ['produces', 'produce'],\n  ['seeks', 'seek'],\n  ['considers', 'consider'],\n  ['operates', 'operate'],\n  ['reports', 'report'],\n  ['enables', 'enable'],\n  ['leads', 'lead'],\n  ['constitutes', 'constitute'],\n  ['varies', 'vary'],\n  ['creates', 'create'],\n  ['maintains', 'maintain'],\n  ['goes', 'go'],\n  ['proposes', 'propose'],\n  ['increases', 'increase'],\n  ['demonstrates', 'demonstrate'],\n  ['notes', 'note'],\n  ['affects', 'affect'],\n  ['begins', 'begin'],\n  ['establishes', 'establish'],\n  ['exceeds', 'exceed'],\n  ['administers', 'administer'],\n  ['examines', 'examine'],\n  ['defines', 'define'],\n  ['wishes', 'wish'],\n  ['reduces', 'reduce'],\n  ['links', 'link'],\n  ['develops', 'develop'],\n  ['falls', 'fall'],\n  ['intends', 'intend'],\n  ['finds', 'find'],\n  ['highlights', 'highlight'],\n  ['assists', 'assist'],\n  ['processes', 'process'],\n  ['pays', 'pay'],\n  ['wants', 'want'],\n  ['causes', 'cause'],\n  ['tends', 'tend'],\n  ['builds', 'build'],\n  ['calls', 'call'],\n  ['illustrates', 'illustrate'],\n  ['permits', 'permit'],\n  ['expects', 'expect'],\n  ['facilitates', 'facilitate'],\n  ['reveals', 'reveal'],\n  ['looks', 'look'],\n  ['summarizes', 'summarize'],\n  ['reviews', 'review'],\n  ['adds', 'add'],\n  ['confirms', 'confirm'],\n  ['measures', 'measure'],\n  ['raises', 'raise'],\n  ['assumes', 'assume'],\n  ['fails', 'fail'],\n  ['acknowledges', 'acknowledge'],\n  ['happens', 'happen'],\n  ['comprises', 'comprise'],\n  ['prohibits', 'prohibit'],\n  ['conducts', 'conduct'],\n  ['improves', 'improve'],\n  ['faces', 'face'],\n  ['concludes', 'conclude'],\n  ['excludes', 'exclude'],\n  ['implies', 'imply'],\n  ['features', 'feature'],\n  ['extends', 'extend'],\n  ['controls', 'control'],\n  ['estimates', 'estimate'],\n  ['protects', 'protect'],\n  ['specifies', 'specify'],\n  ['manages', 'manage'],\n  ['participates', 'participate'],\n  ['relies', 'rely'],\n  ['forms', 'form'],\n  ['incorporates', 'incorporate'],\n  ['places', 'place'],\n  ['encompasses', 'encompass'],\n  ['acts', 'act'],\n  ['carries', 'carry'],\n  ['lies', 'lie'],\n  ['publishes', 'publish'],\n  ['generates', 'generate'],\n  ['delivers', 'deliver'],\n  ['lists', 'list'],\n  ['fosters', 'foster'],\n  ['leaves', 'leave'],\n  ['employs', 'employ'],\n  ['emphasizes', 'emphasize'],\n  ['starts', 'start'],\n  ['stands', 'stand'],\n  ['sells', 'sell'],\n  ['enhances', 'enhance'],\n  ['owns', 'own'],\n  ['claims', 'claim'],\n  ['costs', 'cost'],\n  ['responds', 'respond'],\n  ['feels', 'feel'],\n  ['announces', 'announce'],\n  ['hopes', 'hope'],\n  ['discusses', 'discuss'],\n  ['discloses', 'disclose'],\n  ['respects', 'respect'],\n  ['accounts', 'account'],\n  ['collects', 'collect'],\n  ['arises', 'arise'],\n  ['prevents', 'prevent'],\n  ['welcomes', 'welcome'],\n  ['undertakes', 'undertake'],\n  ['limits', 'limit'],\n  ['speaks', 'speak'],\n  ['sees', 'see'],\n  ['puts', 'put'],\n  ['accepts', 'accept'],\n  ['gets', 'get'],\n  ['runs', 'run'],\n  ['reaches', 'reach'],\n  ['ends', 'end'],\n  ['stipulates', 'stipulate'],\n  ['monitors', 'monitor'],\n  ['stems', 'stem'],\n  ['decides', 'decide'],\n  ['imposes', 'impose'],\n  ['compares', 'compare'],\n  ['targets', 'target'],\n  ['points', 'point'],\n  ['knows', 'know'],\n  ['commits', 'commit'],\n  ['differs', 'differ'],\n  ['ceases', 'cease'],\n  ['submits', 'submit'],\n  ['qualifies', 'qualify'],\n  ['benefits', 'benefit'],\n  ['values', 'value'],\n  ['chooses', 'choose'],\n  ['argues', 'argue'],\n  ['explores', 'explore'],\n  ['distributes', 'distribute'],\n  ['coordinates', 'coordinate'],\n  ['enters', 'enter'],\n  ['keeps', 'keep'],\n  ['sends', 'send'],\n  ['guarantees', 'guarantee'],\n  ['rests', 'rest'],\n  ['strengthens', 'strengthen'],\n  ['combines', 'combine'],\n  ['moves', 'move'],\n  ['retains', 'retain'],\n  ['draws', 'draw'],\n  ['prepares', 'prepare'],\n  ['marks', 'mark'],\n  ['strives', 'strive'],\n  ['advises', 'advise'],\n  ['authorizes', 'authorize'],\n  ['opens', 'open'],\n  ['arrives', 'arrive'],\n  ['awards', 'award'],\n  ['poses', 'pose'],\n  ['asks', 'ask'],\n  ['grants', 'grant'],\n  ['projects', 'project'],\n  ['directs', 'direct'],\n  ['pertains', 'pertain'],\n  ['files', 'file'],\n  ['replaces', 'replace'],\n  ['grows', 'grow'],\n  ['attracts', 'attract'],\n  ['results', 'result'],\n  ['regards', 'regard'],\n  ['supplies', 'supply'],\n  ['centres', 'centre'],\n  ['tells', 'tell'],\n  ['invests', 'invest'],\n  ['regulates', 'regulate'],\n  ['funds', 'fund'],\n  ['integrates', 'integrate'],\n  ['corresponds', 'correspond'],\n  ['performs', 'perform'],\n  ['attempts', 'attempt'],\n  ['complements', 'complement'],\n  ['matters', 'matter'],\n  ['introduces', 'introduce'],\n  ['oversees', 'oversee'],\n  ['concerns', 'concern'],\n  ['turns', 'turn'],\n  ['enjoys', 'enjoy'],\n  ['changes', 'change'],\n  ['references', 'reference'],\n  ['understands', 'understand'],\n  ['belongs', 'belong'],\n  ['resides', 'reside'],\n  ['challenges', 'challenge'],\n  ['implements', 'implement'],\n  ['releases', 'release'],\n  ['ranks', 'rank'],\n  ['extracts', 'extract'],\n  ['informs', 'inform'],\n  ['expires', 'expire'],\n  ['alleges', 'allege'],\n  ['invites', 'invite'],\n  ['assesses', 'assess'],\n  ['expands', 'expand'],\n  ['captures', 'capture'],\n  ['translates', 'translate'],\n  ['interns', 'intern'],\n  ['approves', 'approve'],\n  ['imports', 'import'],\n  ['dates', 'date'],\n  ['approaches', 'approach'],\n  ['celebrates', 'celebrate'],\n  ['governs', 'govern'],\n  ['reserves', 'reserve'],\n  ['issues', 'issue'],\n  ['fits', 'fit'],\n  ['evaluates', 'evaluate'],\n  ['feeds', 'feed'],\n  ['deals', 'deal'],\n  ['handles', 'handle'],\n  ['eliminates', 'eliminate'],\n  ['influences', 'influence'],\n  ['sits', 'sit'],\n  ['documents', 'document'],\n  ['engages', 'engage'],\n  ['lacks', 'lack'],\n  ['complies', 'comply'],\n  ['specializes', 'specialize'],\n  ['impacts', 'impact'],\n  ['matches', 'match'],\n  ['equals', 'equal'],\n  ['expresses', 'express'],\n  ['dies', 'die'],\n  ['visits', 'visit'],\n  ['organizes', 'organize'],\n  ['initiatives', 'initiative'],\n  ['bears', 'bear'],\n  ['rises', 'rise'],\n  ['confers', 'confer'],\n  ['entails', 'entail'],\n  ['achieves', 'achieve'],\n  ['obtains', 'obtain'],\n  ['exhibits', 'exhibit'],\n  ['hosts', 'host'],\n  ['exports', 'export'],\n  ['buys', 'buy'],\n  ['satisfies', 'satisfy'],\n  ['anticipates', 'anticipate'],\n  ['allocates', 'allocate'],\n  ['emerges', 'emerge'],\n  ['studies', 'study'],\n  ['spends', 'spend'],\n  ['conforms', 'conform'],\n  ['sections', 'section'],\n  ['acquires', 'acquire'],\n  ['flows', 'flow'],\n  ['weeds', 'weed'],\n  ['connects', 'connect'],\n  ['passes', 'pass'],\n  ['voyages', 'voyage'],\n  ['reads', 'read'],\n  ['steps', 'step'],\n  ['removes', 'remove'],\n  ['deems', 'deem'],\n  ['tracks', 'track'],\n  ['reinforces', 'reinforce'],\n  ['requests', 'request'],\n  ['exercises', 'exercise'],\n  ['lives', 'live'],\n  ['investigates', 'investigate'],\n  ['concentrates', 'concentrate'],\n  ['stresses', 'stress'],\n  ['launches', 'launch'],\n  ['favours', 'favour'],\n  ['contends', 'contend'],\n  ['consults', 'consult'],\n  ['transfers', 'transfer'],\n  ['restricts', 'restrict'],\n  ['signs', 'sign'],\n  ['embraces', 'embrace'],\n  ['sponsors', 'sponsor'],\n  ['underscores', 'underscore'],\n  ['evolves', 'evolve'],\n  ['attributes', 'attribute'],\n  ['completes', 'complete'],\n  ['reaffirms', 'reaffirm'],\n  ['assigns', 'assign'],\n  ['manufactures', 'manufacture'],\n  ['designs', 'design'],\n  ['occupies', 'occupy'],\n  ['pursues', 'pursue'],\n  ['overwinters', 'overwinter'],\n  ['overlaps', 'overlap'],\n  ['clarifies', 'clarify'],\n  ['promises', 'promise'],\n  ['derives', 'derive'],\n  ['drives', 'drive'],\n  ['programmes', 'programme'],\n  ['teaches', 'teach'],\n  ['urges', 'urge'],\n  ['honours', 'honour'],\n  ['tries', 'try'],\n  ['chairs', 'chair'],\n  ['aligns', 'align'],\n  ['originates', 'originate'],\n  ['designates', 'designate'],\n  ['balances', 'balance'],\n  ['heads', 'head'],\n  ['transmits', 'transmit'],\n  ['denotes', 'denote'],\n  ['guides', 'guide'],\n  ['views', 'view'],\n  ['reminds', 'remind'],\n  ['offsets', 'offset'],\n  ['amounts', 'amount'],\n  ['records', 'record'],\n  ['experiences', 'experience'],\n  ['deserves', 'deserve'],\n  ['stimulates', 'stimulate'],\n  ['predicts', 'predict'],\n  ['distinguishes', 'distinguish'],\n  ['decreases', 'decrease'],\n  ['supersedes', 'supersede'],\n  ['lasts', 'last'],\n  ['houses', 'house'],\n  ['affirms', 'affirm'],\n  ['fulfills', 'fulfill'],\n  ['demands', 'demand'],\n  ['certifies', 'certify'],\n  ['binds', 'bind'],\n  ['charges', 'charge'],\n  ['updates', 'update'],\n  ['refuses', 'refuse'],\n  ['minimizes', 'minimize'],\n  ['forces', 'force'],\n  ['displays', 'display'],\n  ['signals', 'signal'],\n  ['accompanies', 'accompany'],\n  ['analyzes', 'analyze'],\n  ['shares', 'share'],\n  ['embodies', 'embody'],\n  ['utilizes', 'utilize'],\n  ['collaborates', 'collaborate'],\n  ['disseminates', 'disseminate'],\n  ['justifies', 'justify'],\n  ['lends', 'lend'],\n  ['proves', 'prove'],\n  ['purchases', 'purchase'],\n  ['answers', 'answer'],\n  ['yields', 'yield'],\n  ['returns', 'return'],\n  ['breaks', 'break'],\n  ['dominates', 'dominate'],\n  ['competes', 'compete'],\n  ['realizes', 'realize'],\n  ['adopts', 'adopt'],\n  ['services', 'service'],\n  ['appreciates', 'appreciate'],\n  ['terminates', 'terminate'],\n  ['fills', 'fill'],\n  ['thinks', 'think'],\n  ['boasts', 'boast'],\n  ['communicates', 'communicate'],\n  ['ranges', 'range'],\n  ['departs', 'depart'],\n  ['threatens', 'threaten'],\n  ['treats', 'treat'],\n  ['possesses', 'possess'],\n  ['coincides', 'coincide'],\n  ['suffers', 'suffer'],\n  ['showcases', 'showcase'],\n  ['depicts', 'depict'],\n  ['cuts', 'cut'],\n  ['articulates', 'articulate'],\n  ['lays', 'lay'],\n  ['commences', 'commence'],\n  ['joins', 'join'],\n  ['negotiates', 'negotiate'],\n  ['notifies', 'notify'],\n  ['writes', 'write'],\n  ['credits', 'credit'],\n  ['markets', 'market'],\n  ['spreads', 'spread'],\n  ['broadcasts', 'broadcast'],\n  ['films', 'film'],\n  ['spans', 'span'],\n  ['selects', 'select'],\n  ['slips', 'slip'],\n  ['declares', 'declare'],\n  ['cites', 'cite'],\n  ['observes', 'observe'],\n  ['crosses', 'cross'],\n  ['renders', 'render'],\n  ['exemplifies', 'exemplify'],\n  ['totals', 'total'],\n  ['lowers', 'lower'],\n  ['forecasts', 'forecast'],\n  ['necessitates', 'necessitate'],\n  ['mandates', 'mandate'],\n  ['persists', 'persist'],\n  ['recalls', 'recall'],\n  ['counts', 'count'],\n  ['mentions', 'mention'],\n  ['climbs', 'climb'],\n  ['mirrors', 'mirror'],\n  ['preserves', 'preserve'],\n  ['lets', 'let'],\n  ['incurs', 'incur'],\n  ['avoids', 'avoid'],\n  ['gathers', 'gather'],\n  ['drops', 'drop'],\n  ['details', 'detail'],\n  ['adjusts', 'adjust'],\n  ['amends', 'amend'],\n  ['attaches', 'attach'],\n  ['kills', 'kill'],\n  ['contacts', 'contact'],\n  ['precludes', 'preclude'],\n  ['prefers', 'prefer'],\n  ['verifies', 'verify'],\n  ['enriches', 'enrich'],\n  ['attends', 'attend'],\n  ['advances', 'advance'],\n  ['travels', 'travel'],\n  ['matures', 'mature'],\n  ['earns', 'earn'],\n  ['reiterates', 'reiterate'],\n  ['progresses', 'progress'],\n  ['adheres', 'adhere'],\n  ['calculates', 'calculate'],\n  ['affords', 'afford'],\n  ['accommodates', 'accommodate'],\n  ['initiates', 'initiate'],\n  ['transports', 'transport'],\n  ['wins', 'win'],\n  ['insists', 'insist'],\n  ['underlines', 'underline'],\n  ['endorses', 'endorse'],\n  ['proceeds', 'proceed'],\n  ['contrasts', 'contrast'],\n  ['attacks', 'attack'],\n  ['posts', 'post'],\n  ['resembles', 'resemble'],\n  ['tests', 'test'],\n  ['prevails', 'prevail'],\n  ['envisions', 'envision'],\n  ['infects', 'infect'],\n  ['cruises', 'cruise'],\n  ['diminishes', 'diminish'],\n  ['loses', 'lose'],\n  ['undergoes', 'undergo'],\n  ['subsidizes', 'subsidize'],\n  ['styles', 'style'],\n  ['conveys', 'convey'],\n  ['empowers', 'empower'],\n  ['advocates', 'advocate'],\n  ['stays', 'stay'],\n  ['classifies', 'classify'],\n  ['interacts', 'interact'],\n  ['enforces', 'enforce'],\n  ['signifies', 'signify'],\n  ['interprets', 'interpret'],\n  ['asserts', 'assert'],\n  ['arranges', 'arrange'],\n  ['portrays', 'portray'],\n  ['prizes', 'prize'],\n  ['assures', 'assure'],\n  ['disclaims', 'disclaim'],\n  ['undermines', 'undermine'],\n  ['converts', 'convert'],\n  ['hires', 'hire'],\n  ['maximizes', 'maximize'],\n  ['licenses', 'license'],\n  ['appoints', 'appoint'],\n  ['accelerates', 'accelerate'],\n  ['slows', 'slow'],\n  ['finishes', 'finish'],\n  ['warrants', 'warrant'],\n  ['violates', 'violate'],\n  ['discovers', 'discover'],\n  ['hears', 'hear'],\n  ['lags', 'lag'],\n  ['symbolizes', 'symbolize'],\n  ['underlies', 'underlie'],\n  ['accrues', 'accrue'],\n  ['characterizes', 'characterize'],\n  ['contravenes', 'contravene'],\n  ['admits', 'admit'],\n  ['consumes', 'consume'],\n  ['survives', 'survive'],\n  ['inspires', 'inspire'],\n  ['registers', 'register'],\n  ['succeeds', 'succeed'],\n  ['compiles', 'compile'],\n  ['expenditures', 'expenditure'],\n  ['devotes', 'devote'],\n  ['entitles', 'entitle'],\n  ['denies', 'deny'],\n  ['triggers', 'trigger'],\n  ['disagrees', 'disagree'],\n  ['alters', 'alter'],\n  ['impedes', 'impede'],\n  ['unveils', 'unveil'],\n  ['questions', 'question'],\n  ['revolves', 'revolve'],\n  ['discourages', 'discourage'],\n  ['secures', 'secure'],\n  ['edits', 'edit'],\n  ['unites', 'unite'],\n  ['suspects', 'suspect'],\n  ['thanks', 'thank'],\n  ['prescribes', 'prescribe'],\n  ['tours', 'tour'],\n  ['owes', 'owe'],\n  ['licences', 'licence'],\n  ['unfolds', 'unfold'],\n  ['comments', 'comment'],\n  ['strikes', 'strike'],\n  ['attains', 'attain'],\n  ['infringes', 'infringe'],\n  ['cooperates', 'cooperate'],\n  ['simplifies', 'simplify'],\n  ['regrets', 'regret'],\n  ['flies', 'fly'],\n  ['averages', 'average'],\n  ['touches', 'touch'],\n  ['applauds', 'applaud'],\n  ['compensates', 'compensate'],\n  ['supplements', 'supplement'],\n  ['sizes', 'size'],\n  ['forwards', 'forward'],\n  ['analyses', 'analyse'],\n  ['divides', 'divide'],\n  ['dictates', 'dictate'],\n  ['inhibits', 'inhibit'],\n  ['reproduces', 'reproduce'],\n  ['weighs', 'weigh'],\n  ['rewards', 'reward'],\n  ['exposes', 'expose'],\n  ['withdraws', 'withdraw'],\n  ['predominates', 'predominate'],\n  ['boosts', 'boost'],\n  ['destroys', 'destroy'],\n  ['disciplines', 'discipline'],\n  ['consolidates', 'consolidate'],\n  ['approximates', 'approximate'],\n  ['elects', 'elect'],\n  ['trains', 'train'],\n  ['shapes', 'shape'],\n  ['educates', 'educate'],\n  ['bases', 'base'],\n  ['codes', 'code'],\n  ['attests', 'attest'],\n  ['ages', 'age'],\n  ['rejects', 'reject'],\n  ['stops', 'stop'],\n  ['listens', 'listen'],\n  ['saves', 'save'],\n  ['figures', 'figure'],\n  ['commends', 'commend'],\n  ['commemorates', 'commemorate'],\n  ['parts', 'part'],\n  ['graduates', 'graduate'],\n  ['motivates', 'motivate'],\n  ['sustains', 'sustain'],\n  ['ignores', 'ignore'],\n  ['obliges', 'oblige'],\n  ['flocks', 'flock'],\n  ['effects', 'effect'],\n  ['warns', 'warn'],\n  ['bodes', 'bode'],\n  ['recognises', 'recognise'],\n  ['gains', 'gain'],\n  ['positions', 'position'],\n  ['liaises', 'liaise'],\n  ['transforms', 'transform'],\n  ['retires', 'retire'],\n  ['exempts', 'exempt'],\n  ['accomplishes', 'accomplish'],\n  ['recruits', 'recruit'],\n  ['underpins', 'underpin'],\n  ['fulfils', 'fulfil'],\n  ['perceives', 'perceive'],\n  ['restores', 'restore'],\n  ['broadens', 'broaden'],\n  ['declines', 'decline'],\n  ['accumulates', 'accumulate'],\n  ['practises', 'practise'],\n  ['alerts', 'alert'],\n  ['congratulates', 'congratulate'],\n  ['shifts', 'shift'],\n  ['resonates', 'resonate'],\n  ['maps', 'map'],\n  ['surveys', 'survey'],\n  ['sounds', 'sound'],\n  ['learns', 'learn'],\n  ['intervenes', 'intervene'],\n  ['induces', 'induce'],\n  ['hinders', 'hinder'],\n  ['streamlines', 'streamline'],\n  ['searches', 'search'],\n  ['committees', 'committee'],\n  ['outweighs', 'outweigh'],\n  ['traces', 'trace'],\n  ['interferes', 'interfere'],\n  ['ents', 'ent'],\n  ['weakens', 'weaken'],\n  ['skirts', 'skirt'],\n  ['risks', 'risk'],\n  ['reimburses', 'reimburse'],\n  ['cares', 'care'],\n  ['finances', 'finance'],\n  ['separates', 'separate'],\n  ['hurts', 'hurt'],\n  ['supervises', 'supervise'],\n  ['stretches', 'stretch'],\n  ['charts', 'chart'],\n  ['complicates', 'complicate'],\n  ['upholds', 'uphold'],\n  ['remits', 'remit'],\n  ['renews', 'renew'],\n  ['excels', 'excel'],\n  ['checks', 'check'],\n  ['packages', 'package'],\n  ['trips', 'trip'],\n  ['likes', 'like'],\n  ['instructs', 'instruct'],\n  ['tubes', 'tube'],\n  ['disappears', 'disappear'],\n  ['presses', 'press'],\n  ['exerts', 'exert'],\n  ['transcends', 'transcend'],\n  ['videotapes', 'videotape'],\n  ['factors', 'factor'],\n  ['reacts', 'react'],\n  ['mixes', 'mix'],\n  ['envisages', 'envisage'],\n  ['sheds', 'shed'],\n  ['closes', 'close'],\n  ['relieves', 'relieve'],\n  ['stabilizes', 'stabilize'],\n  ['functions', 'function'],\n  ['notices', 'notice'],\n  ['catalogues', 'catalogue'],\n  ['surrounds', 'surround'],\n  ['inquires', 'inquire'],\n  ['briefs', 'brief'],\n  ['blouses', 'blouse'],\n  ['resolves', 'resolve'],\n  ['solicits', 'solicit'],\n  ['surpasses', 'surpass'],\n  ['hits', 'hit'],\n  ['caters', 'cater'],\n  ['recovers', 'recover'],\n  ['purports', 'purport'],\n  ['farms', 'farm'],\n  ['aids', 'aid'],\n  ['cultures', 'culture'],\n  ['ties', 'tie'],\n  ['presupposes', 'presuppose'],\n  ['endeavours', 'endeavour'],\n  ['widens', 'widen'],\n  ['doubles', 'double'],\n  ['suits', 'suit'],\n  ['interests', 'interest'],\n  ['thrives', 'thrive'],\n  ['crafts', 'craft'],\n  ['struggles', 'struggle'],\n  ['furthers', 'further'],\n  ['greets', 'greet'],\n  ['proclaims', 'proclaim'],\n  ['subjects', 'subject'],\n  ['blocks', 'block'],\n  ['interviews', 'interview'],\n  ['unloads', 'unload'],\n  ['clamps', 'clamp'],\n  ['levies', 'levy'],\n  ['lectures', 'lecture'],\n  ['munitions', 'munition'],\n  ['prints', 'print'],\n  ['correlates', 'correlate'],\n  ['walks', 'walk'],\n  ['hinges', 'hinge'],\n  ['springs', 'spring'],\n  ['nurtures', 'nurture'],\n  ['quotes', 'quote'],\n  ['enacts', 'enact'],\n  ['screens', 'screen'],\n  ['leases', 'lease'],\n  ['counsels', 'counsel'],\n  ['concurs', 'concur'],\n  ['lessons', 'lesson'],\n  ['absorbs', 'absorb'],\n  ['lambs', 'lamb'],\n  ['manifests', 'manifest'],\n  ['reprints', 'reprint'],\n  ['optimizes', 'optimize'],\n  ['routes', 'route'],\n  ['prides', 'pride'],\n  ['contracts', 'contract'],\n  ['equates', 'equate'],\n  ['types', 'type'],\n  ['tables', 'table'],\n  ['remembers', 'remember'],\n  ['loves', 'love'],\n  ['adapts', 'adapt'],\n  ['replies', 'reply'],\n  ['delineates', 'delineate'],\n  ['drains', 'drain'],\n  ['beetles', 'beetle'],\n  ['bridges', 'bridge'],\n  ['merits', 'merit'],\n  ['screws', 'screw'],\n  ['shakes', 'shake'],\n  ['tops', 'top'],\n  ['institutes', 'institute'],\n  ['categorizes', 'categorize'],\n  ['trails', 'trail'],\n  ['desires', 'desire'],\n  ['contents', 'content'],\n  ['narrows', 'narrow'],\n  ['executes', 'execute'],\n  ['repeats', 'repeat'],\n  ['sports', 'sport'],\n  ['echoes', 'echo'],\n  ['erodes', 'erode'],\n  ['casts', 'cast'],\n  ['connotes', 'connote'],\n  ['fluctuates', 'fluctuate'],\n  ['imparts', 'impart'],\n  ['objects', 'object'],\n  ['replicates', 'replicate'],\n  ['hampers', 'hamper'],\n  ['centers', 'center'],\n  ['picks', 'pick'],\n  ['capitalizes', 'capitalize'],\n  ['differentiates', 'differentiate'],\n  ['commissions', 'commission'],\n  ['dedicates', 'dedicate'],\n  ['trades', 'trade'],\n  ['overcomes', 'overcome'],\n  ['circumvents', 'circumvent'],\n  ['detects', 'detect'],\n  ['disposes', 'dispose'],\n  ['opposes', 'oppose'],\n  ['prompts', 'prompt'],\n  ['borrows', 'borrow'],\n  ['modifies', 'modify'],\n  ['conserves', 'conserve'],\n  ['mitigates', 'mitigate'],\n  ['researches', 'research'],\n  ['uncovers', 'uncover'],\n  ['depreciates', 'depreciate'],\n  ['encounters', 'encounter'],\n  ['favors', 'favor'],\n  ['fuels', 'fuel'],\n  ['entertains', 'entertain'],\n  ['pushes', 'push'],\n  ['aspires', 'aspire'],\n  ['subscribes', 'subscribe'],\n  ['exacerbates', 'exacerbate'],\n  ['settles', 'settle'],\n  ['subsists', 'subsist'],\n  ['misses', 'miss'],\n  ['salts', 'salt'],\n  ['simulates', 'simulate'],\n  ['advertises', 'advertise'],\n  ['rules', 'rule'],\n  ['activates', 'activate'],\n  ['appeals', 'appeal'],\n  ['talks', 'talk'],\n  ['damages', 'damage'],\n  ['reverses', 'reverse'],\n  ['pulls', 'pull'],\n  ['assembles', 'assemble'],\n  ['bestows', 'bestow'],\n  ['contemplates', 'contemplate'],\n  ['wears', 'wear'],\n  ['elaborates', 'elaborate'],\n  ['discounts', 'discount'],\n  ['courses', 'course'],\n  ['watches', 'watch'],\n  ['mediates', 'mediate'],\n  ['frames', 'frame'],\n  ['cops', 'cop'],\n  ['jackets', 'jacket'],\n  ['begs', 'beg'],\n  ['tools', 'tool'],\n  ['sites', 'site'],\n  ['recounts', 'recount'],\n  ['masks', 'mask'],\n  ['evokes', 'evoke'],\n  ['surfaces', 'surface'],\n  ['eases', 'ease'],\n  ['tiers', 'tier'],\n  ['paints', 'paint'],\n  ['logs', 'log'],\n  ['frees', 'free'],\n  ['compounds', 'compound'],\n  ['marries', 'marry'],\n  ['derogates', 'derogate'],\n  ['impairs', 'impair'],\n  ['disrupts', 'disrupt'],\n  ['corrects', 'correct'],\n  ['defends', 'defend'],\n  ['quantifies', 'quantify'],\n  ['foresees', 'foresee'],\n  ['streams', 'stream'],\n  ['transacts', 'transact'],\n  ['constrains', 'constrain'],\n  ['exits', 'exit'],\n  ['looms', 'loom'],\n  ['mails', 'mail'],\n  ['stages', 'stage'],\n  ['labels', 'label'],\n  ['hooks', 'hook'],\n  ['dresses', 'dress'],\n  ['shorts', 'short'],\n  ['mars', 'mar'],\n  ['cautions', 'caution'],\n  ['plugs', 'plug'],\n  ['convenes', 'convene'],\n  ['forbids', 'forbid'],\n  ['rents', 'rent'],\n  ['speeds', 'speed'],\n  ['intersects', 'intersect'],\n  ['deprives', 'deprive'],\n  ['testifies', 'testify'],\n  ['formulates', 'formulate'],\n  ['resigns', 'resign'],\n  ['neglects', 'neglect'],\n  ['corroborates', 'corroborate'],\n  ['substantiates', 'substantiate'],\n  ['spells', 'spell'],\n  ['degrades', 'degrade'],\n  ['inspects', 'inspect'],\n  ['combs', 'comb'],\n  ['worsens', 'worsen'],\n  ['grains', 'grain'],\n  ['purposes', 'purpose'],\n  ['chapters', 'chapter'],\n  ['saws', 'saw'],\n  ['precedes', 'precede'],\n  ['radios', 'radio'],\n  ['prises', 'prise'],\n  ['deploys', 'deploy'],\n  ['injects', 'inject'],\n  ['awaits', 'await'],\n  ['fields', 'field'],\n  ['summarises', 'summarise'],\n  ['behaves', 'behave'],\n  ['beats', 'beat'],\n  ['pairs', 'pair'],\n  ['boils', 'boil'],\n  ['senses', 'sense'],\n  ['accords', 'accord'],\n  ['culminates', 'culminate'],\n  ['structures', 'structure'],\n  ['mobilizes', 'mobilize'],\n  ['opts', 'opt'],\n  ['budgets', 'budget'],\n  ['equips', 'equip'],\n  ['rots', 'rot'],\n  ['privileges', 'privilege'],\n  ['switches', 'switch'],\n  ['ships', 'ship'],\n  ['ensues', 'ensue'],\n  ['outstrips', 'outstrip'],\n  ['posits', 'posit'],\n  ['confronts', 'confront'],\n  ['diverts', 'divert'],\n  ['honors', 'honor'],\n  ['antiques', 'antique'],\n  ['baffles', 'baffle'],\n  ['gloves', 'glove'],\n  ['enlists', 'enlist'],\n  ['parties', 'party'],\n  ['filters', 'filter'],\n  ['stores', 'store'],\n  ['encapsulates', 'encapsulate'],\n  ['scales', 'scale'],\n  ['insures', 'insure'],\n  ['heats', 'heat'],\n  ['bars', 'bar'],\n  ['compromises', 'compromise'],\n  ['exploits', 'exploit'],\n  ['washes', 'wash'],\n  ['cultivates', 'cultivate'],\n  ['deepens', 'deepen'],\n  ['praises', 'praise'],\n  ['validates', 'validate'],\n  ['upgrades', 'upgrade'],\n  ['mimics', 'mimic'],\n  ['abrogates', 'abrogate'],\n  ['supposes', 'suppose'],\n  ['detracts', 'detract'],\n  ['predates', 'predate'],\n  ['contradicts', 'contradict'],\n  ['images', 'image'],\n  ['soils', 'soil'],\n  ['calves', 'calve'],\n  ['dries', 'dry'],\n  ['infests', 'infest'],\n  ['strips', 'strip'],\n  ['invoices', 'invoice'],\n  ['disburses', 'disburse'],\n  ['distorts', 'distort'],\n  ['kernels', 'kernel'],\n  ['deteriorates', 'deteriorate'],\n  ['aggregates', 'aggregate'],\n  ['nourishes', 'nourish'],\n  ['encrypts', 'encrypt'],\n  ['afflicts', 'afflict'],\n  ['yarns', 'yarn'],\n  ['burns', 'burn'],\n  ['chronicles', 'chronicle'],\n  ['amalgamates', 'amalgamate'],\n  ['solves', 'solve'],\n  ['partners', 'partner'],\n  ['refines', 'refine'],\n  ['conjures', 'conjure'],\n  ['overlooks', 'overlook'],\n  ['intensifies', 'intensify'],\n  ['aliments', 'aliment'],\n  ['lifts', 'lift'],\n  ['gears', 'gear'],\n  ['trends', 'trend'],\n  ['salutes', 'salute'],\n  ['isolates', 'isolate'],\n  ['offends', 'offend'],\n  ['doubts', 'doubt'],\n  ['paves', 'pave'],\n  ['commands', 'command'],\n  ['drafts', 'draft'],\n  ['inserts', 'insert'],\n  ['requisitions', 'requisition'],\n  ['crops', 'crop'],\n  ['berries', 'berry'],\n  ['suppresses', 'suppress'],\n  ['cases', 'case'],\n  ['harms', 'harm'],\n  ['caps', 'cap'],\n  ['diffuses', 'diffuse'],\n  ['seals', 'seal'],\n  ['defers', 'defer'],\n  ['intercepts', 'intercept'],\n  ['clears', 'clear'],\n  ['nets', 'net'],\n  ['backs', 'back'],\n  ['copies', 'copy'],\n  ['bills', 'bill'],\n  ['revises', 'revise'],\n  ['tutors', 'tutor'],\n  ['fears', 'fear'],\n  ['grades', 'grade'],\n  ['reinvests', 'reinvest'],\n  ['outpaces', 'outpace'],\n  ['abounds', 'abound'],\n  ['distils', 'distil'],\n  ['reasons', 'reason'],\n  ['disputes', 'dispute'],\n  ['donates', 'donate'],\n  ['evaporates', 'evaporate'],\n  ['materializes', 'materialize'],\n  ['stars', 'star'],\n  ['channels', 'channel'],\n  ['sums', 'sum'],\n  ['permeates', 'permeate'],\n  ['packs', 'pack'],\n  ['installs', 'install'],\n  ['overrides', 'override'],\n  ['defeats', 'defeat'],\n  ['medals', 'medal'],\n  ['withholds', 'withhold'],\n  ['pledges', 'pledge'],\n  ['rolls', 'roll'],\n  ['conceals', 'conceal'],\n  ['displaces', 'displace'],\n  ['outperforms', 'outperform'],\n  ['emits', 'emit'],\n  ['welds', 'weld'],\n  ['bands', 'band'],\n  ['conflicts', 'conflict'],\n  ['formalizes', 'formalize'],\n  ['oils', 'oil'],\n  ['slugs', 'slug'],\n  ['collapses', 'collapse'],\n  ['catches', 'catch'],\n  ['repays', 'repay'],\n  ['duplicates', 'duplicate'],\n  ['lessens', 'lessen'],\n  ['interchanges', 'interchange'],\n  ['compels', 'compel'],\n  ['rows', 'row'],\n  ['augments', 'augment'],\n  ['postulates', 'postulate'],\n  ['complains', 'complain'],\n  ['consents', 'consent'],\n  ['navigates', 'navigate'],\n  ['chats', 'chat'],\n  ['scans', 'scan'],\n  ['shocks', 'shock'],\n  ['suspends', 'suspend'],\n  ['circulates', 'circulate'],\n  ['wonders', 'wonder'],\n  ['airs', 'air'],\n  ['proscribes', 'proscribe'],\n  ['conditions', 'condition'],\n  ['games', 'game'],\n  ['nominates', 'nominate'],\n  ['detains', 'detain'],\n  ['spills', 'spill'],\n  ['embarks', 'embark'],\n  ['orders', 'order'],\n  ['kicks', 'kick'],\n  ['rates', 'rate'],\n  ['stews', 'stew'],\n  ['reaps', 'reap'],\n  ['avails', 'avail'],\n  ['descends', 'descend'],\n  ['remarks', 'remark'],\n  ['innovates', 'innovate'],\n  ['disperses', 'disperse'],\n  ['constructs', 'construct'],\n  ['disables', 'disable'],\n  ['cleans', 'clean'],\n  ['presumes', 'presume'],\n  ['invokes', 'invoke'],\n  ['fixes', 'fix'],\n  ['sprouts', 'sprout'],\n  ['sacrifices', 'sacrifice'],\n  ['groups', 'group'],\n  ['codifies', 'codify'],\n  ['convicts', 'convict'],\n  ['locks', 'lock'],\n  ['teams', 'team'],\n  ['multiplies', 'multiply'],\n  ['remedies', 'remedy'],\n  ['items', 'item'],\n  ['copyrights', 'copyright'],\n  ['fees', 'fee'],\n  ['waives', 'waive'],\n  ['elicits', 'elicit'],\n  ['cancels', 'cancel'],\n  ['pastures', 'pasture'],\n  ['blights', 'blight'],\n  ['deposits', 'deposit'],\n  ['predisposes', 'predispose'],\n  ['omits', 'omit'],\n  ['counters', 'counter'],\n  ['solidifies', 'solidify'],\n  ['tolerates', 'tolerate'],\n  ['empties', 'empty'],\n  ['dampens', 'dampen'],\n  ['curves', 'curve'],\n  ['tackles', 'tackle'],\n  ['rotates', 'rotate'],\n  ['disadvantages', 'disadvantage'],\n  ['reconciles', 'reconcile'],\n  ['legislates', 'legislate'],\n  ['provisions', 'provision'],\n  ['pervades', 'pervade'],\n  ['condemns', 'condemn'],\n  ['dovetails', 'dovetail'],\n  ['undercuts', 'undercut'],\n  ['mounts', 'mount'],\n  ['penalizes', 'penalize'],\n  ['safeguards', 'safeguard'],\n  ['entrenches', 'entrench'],\n  ['authenticates', 'authenticate'],\n  ['brevets', 'brevet'],\n  ['adjudicates', 'adjudicate'],\n  ['pads', 'pad'],\n  ['rescinds', 'rescind'],\n  ['stamps', 'stamp'],\n  ['consigns', 'consign'],\n  ['hats', 'hat'],\n  ['halts', 'halt'],\n  ['pillars', 'pillar'],\n  ['practices', 'practice'],\n  ['emanates', 'emanate'],\n  ['retrofits', 'retrofit'],\n  ['blends', 'blend'],\n  ['repairs', 'repair'],\n  ['retrieves', 'retrieve'],\n  ['abandons', 'abandon'],\n  ['names', 'name'],\n  ['redistributes', 'redistribute'],\n  ['automates', 'automate'],\n  ['excites', 'excite'],\n  ['tightens', 'tighten'],\n  ['softens', 'soften'],\n  ['fires', 'fire'],\n  ['nears', 'near'],\n  ['articles', 'article'],\n  ['hangs', 'hang'],\n  ['spurs', 'spur'],\n  ['escapes', 'escape'],\n  ['tips', 'tip'],\n  ['throws', 'throw'],\n  ['hails', 'hail'],\n  ['sings', 'sing'],\n  ['furnishes', 'furnish'],\n  ['smiles', 'smile'],\n  ['reverts', 'revert'],\n  ['bypasses', 'bypass'],\n  ['votes', 'vote'],\n  ['harbours', 'harbour'],\n  ['tailors', 'tailor'],\n  ['proteins', 'protein'],\n  ['resins', 'resin'],\n  ['invades', 'invade'],\n  ['escalates', 'escalate'],\n  ['deters', 'deter'],\n  ['resists', 'resist'],\n  ['powers', 'power'],\n  ['instills', 'instill'],\n  ['audits', 'audit'],\n  ['sands', 'sand'],\n  ['gauges', 'gauge'],\n  ['neighbours', 'neighbour'],\n  ['synthesizes', 'synthesize'],\n  ['voices', 'voice'],\n  ['abides', 'abide'],\n  ['earmarks', 'earmark'],\n  ['fruits', 'fruit'],\n  ['ducks', 'duck'],\n  ['pods', 'pod'],\n  ['shoots', 'shoot'],\n  ['shrinks', 'shrink'],\n  ['splits', 'split'],\n  ['rings', 'ring'],\n  ['nuts', 'nut'],\n  ['sponges', 'sponge'],\n  ['crushes', 'crush'],\n  ['penetrates', 'penetrate'],\n  ['vests', 'vest'],\n  ['borders', 'border'],\n  ['accentuates', 'accentuate'],\n  ['heralds', 'herald'],\n  ['obeys', 'obey'],\n  ['parallels', 'parallel'],\n  ['levers', 'lever'],\n  ['rights', 'right'],\n  ['hogs', 'hog'],\n  ['steers', 'steer'],\n  ['surprises', 'surprise'],\n  ['jeopardizes', 'jeopardize'],\n  ['infuses', 'infuse'],\n  ['merges', 'merge'],\n  ['dissipates', 'dissipate'],\n  ['elapses', 'elapse'],\n  ['fins', 'fin'],\n  ['discriminates', 'discriminate'],\n  ['seizes', 'seize'],\n  ['revitalizes', 'revitalize'],\n  ['enlightens', 'enlighten'],\n  ['coproduces', 'coproduce'],\n  ['formats', 'format'],\n  ['suffices', 'suffice'],\n  ['revokes', 'revoke'],\n  ['programs', 'program'],\n  ['scores', 'score'],\n  ['inaugurates', 'inaugurate'],\n  ['boards', 'board'],\n  ['sensitizes', 'sensitize'],\n  ['fuses', 'fuse'],\n  ['pages', 'page'],\n  ['demeans', 'demean'],\n  ['dogs', 'dog'],\n  ['expedites', 'expedite'],\n  ['disorders', 'disorder'],\n  ['plates', 'plate'],\n  ['alloys', 'alloy'],\n  ['bits', 'bit'],\n  ['slats', 'slat'],\n  ['relaunches', 'relaunch'],\n  ['circumscribes', 'circumscribe'],\n  ['mingles', 'mingle'],\n  ['fairs', 'fair'],\n  ['centralizes', 'centralize'],\n  ['deletes', 'delete'],\n  ['breaches', 'breach'],\n  ['procures', 'procure'],\n  ['seats', 'seat'],\n  ['skews', 'skew'],\n  ['interrupts', 'interrupt'],\n  ['worries', 'worry'],\n  ['cycles', 'cycle'],\n  ['underestimates', 'underestimate'],\n  ['probes', 'probe'],\n  ['cools', 'cool'],\n  ['illuminates', 'illuminate'],\n  ['funnels', 'funnel'],\n  ['fascinates', 'fascinate'],\n  ['windows', 'window'],\n  ['inspectors', 'inspector'],\n  ['floats', 'float'],\n  ['adorns', 'adorn'],\n  ['oxidizes', 'oxidize'],\n  ['cherishes', 'cherish'],\n  ['sanctions', 'sanction'],\n  ['obstructs', 'obstruct'],\n  ['founds', 'found'],\n  ['breathes', 'breathe'],\n  ['epitomizes', 'epitomize'],\n  ['endures', 'endure'],\n  ['cries', 'cry'],\n  ['meters', 'meter'],\n  ['champions', 'champion'],\n  ['endangers', 'endanger'],\n  ['contours', 'contour'],\n  ['abstracts', 'abstract'],\n  ['surrenders', 'surrender'],\n  ['enrols', 'enrol'],\n  ['sticks', 'stick'],\n  ['overlays', 'overlay'],\n  ['cows', 'cow'],\n  ['bans', 'ban'],\n  ['delays', 'delay'],\n  ['eats', 'eat'],\n  ['warms', 'warm'],\n  ['pellets', 'pellet'],\n  ['wafers', 'wafer'],\n  ['depresses', 'depress'],\n  ['blurs', 'blur'],\n  ['deviates', 'deviate'],\n  ['discharges', 'discharge'],\n  ['scouts', 'scout'],\n  ['vents', 'vent'],\n  ['mills', 'mill'],\n  ['bids', 'bid'],\n  ['garners', 'garner'],\n  ['understates', 'understate'],\n  ['eggs', 'egg'],\n  ['pens', 'pen'],\n  ['recreates', 'recreate'],\n  ['amplifies', 'amplify'],\n  ['judges', 'judge'],\n  ['models', 'model'],\n  ['accesses', 'access'],\n  ['environs', 'environ'],\n  ['pins', 'pin'],\n  ['implicates', 'implicate'],\n  ['enshrines', 'enshrine'],\n  ['engenders', 'engender'],\n  ['spikes', 'spike'],\n  ['deplores', 'deplore'],\n  ['reorganizes', 'reorganize'],\n  ['entrusts', 'entrust'],\n  ['abuses', 'abuse'],\n  ['comports', 'comport'],\n  ['organises', 'organise'],\n  ['warehouses', 'warehouse'],\n  ['forges', 'forge'],\n  ['dispenses', 'dispense'],\n  ['prosecutes', 'prosecute'],\n  ['scissors', 'scissor'],\n  ['queries', 'query'],\n  ['bastes', 'baste'],\n  ['stuffs', 'stuff'],\n  ['elucidates', 'elucidate'],\n  ['ascribes', 'ascribe'],\n  ['encodes', 'encode'],\n  ['prolongs', 'prolong'],\n  ['leans', 'lean'],\n  ['negates', 'negate'],\n  ['officers', 'officer'],\n  ['graves', 'grave'],\n  ['propositions', 'proposition'],\n  ['shingles', 'shingle'],\n  ['readies', 'ready'],\n  ['weaves', 'weave'],\n  ['ponders', 'ponder'],\n  ['sorts', 'sort'],\n  ['augurs', 'augur'],\n  ['unlocks', 'unlock'],\n  ['cements', 'cement'],\n  ['locates', 'locate'],\n  ['criticizes', 'criticize'],\n  ['disturbs', 'disturb'],\n  ['subcontracts', 'subcontract'],\n  ['emphasises', 'emphasise'],\n  ['trusts', 'trust'],\n  ['relaxes', 'relax'],\n  ['resorts', 'resort'],\n  ['pumps', 'pump'],\n  ['waits', 'wait'],\n  ['vacations', 'vacation'],\n  ['jumps', 'jump'],\n  ['escorts', 'escort'],\n  ['inflates', 'inflate'],\n  ['melts', 'melt'],\n  ['buckles', 'buckle'],\n  ['recycles', 'recycle'],\n  ['wraps', 'wrap'],\n  ['blooms', 'bloom'],\n  ['smells', 'smell'],\n  ['loads', 'load'],\n  ['sketches', 'sketch'],\n  ['jokes', 'joke'],\n  ['erases', 'erase'],\n  ['dimensions', 'dimension'],\n  ['concedes', 'concede'],\n  ['defies', 'defy'],\n  ['plants', 'plant'],\n  ['presides', 'preside'],\n  ['belies', 'belie'],\n  ['hastens', 'hasten'],\n  ['bankrupts', 'bankrupt'],\n  ['discontinues', 'discontinue'],\n  ['redirects', 'redirect'],\n  ['firms', 'firm'],\n  ['discredits', 'discredit'],\n  ['pressures', 'pressure'],\n  ['footnotes', 'footnote'],\n  ['exchanges', 'exchange'],\n  ['photocopies', 'photocopy'],\n  ['photographs', 'photograph'],\n  ['instances', 'instance'],\n  ['colours', 'colour'],\n  ['perpetuates', 'perpetuate'],\n  ['trees', 'tree'],\n  ['rejoins', 'rejoin'],\n  ['pales', 'pale'],\n  ['migrates', 'migrate'],\n  ['pupates', 'pupate'],\n  ['yellows', 'yellow'],\n  ['parasitizes', 'parasitize'],\n  ['ripens', 'ripen'],\n  ['encloses', 'enclose'],\n  ['heals', 'heal'],\n  ['preys', 'prey'],\n  ['forfeits', 'forfeit'],\n  ['keys', 'key'],\n  ['arouses', 'arouse'],\n  ['endeavors', 'endeavor'],\n  ['specialises', 'specialise'],\n  ['waxes', 'wax'],\n  ['dissolves', 'dissolve'],\n  ['insulates', 'insulate'],\n  ['traps', 'trap'],\n  ['slopes', 'slope'],\n  ['heightens', 'heighten'],\n  ['shuts', 'shut'],\n  ['franchises', 'franchise'],\n  ['indexes', 'index'],\n  ['ameliorates', 'ameliorate'],\n  ['triples', 'triple'],\n  ['catalyzes', 'catalyze'],\n  ['regroups', 'regroup'],\n  ['holidays', 'holiday'],\n  ['converges', 'converge'],\n  ['swaps', 'swap'],\n  ['exhausts', 'exhaust'],\n  ['supplants', 'supplant'],\n  ['reconvenes', 'reconvene'],\n  ['modernizes', 'modernize'],\n  ['leafs', 'leaf'],\n  ['shines', 'shine'],\n  ['familiarizes', 'familiarize'],\n  ['tongues', 'tongue'],\n  ['chances', 'chance'],\n  ['numbers', 'number'],\n  ['refrains', 'refrain'],\n  ['fades', 'fade'],\n  ['retails', 'retail'],\n  ['ratifies', 'ratify'],\n  ['alludes', 'allude'],\n  ['enunciates', 'enunciate'],\n  ['rouges', 'rouge'],\n  ['embeds', 'embed'],\n  ['decrypts', 'decrypt'],\n  ['upsets', 'upset'],\n  ['demotes', 'demote'],\n  ['friends', 'friend'],\n  ['wows', 'wow'],\n  ['restates', 'restate'],\n  ['conceives', 'conceive'],\n  ['dwarfs', 'dwarf'],\n  ['relocates', 'relocate'],\n  ['infers', 'infer'],\n  ['taboos', 'taboo'],\n  ['expends', 'expend'],\n  ['obligates', 'obligate'],\n  ['combats', 'combat'],\n  ['belittles', 'belittle'],\n  ['conspires', 'conspire'],\n  ['peoples', 'people'],\n  ['conflates', 'conflate'],\n  ['collates', 'collate'],\n  ['shears', 'shear'],\n  ['wheels', 'wheel'],\n  ['conjugates', 'conjugate'],\n  ['glazes', 'glaze'],\n  ['taps', 'tap'],\n  ['retorts', 'retort'],\n  ['bottoms', 'bottom'],\n  ['hikes', 'hike'],\n  ['peddles', 'peddle'],\n  ['mulls', 'mull'],\n  ['rues', 'rue'],\n  ['utilises', 'utilise'],\n  ['pops', 'pop'],\n  ['underwrites', 'underwrite'],\n  ['stirs', 'stir'],\n  ['aggravates', 'aggravate'],\n  ['vies', 'vie'],\n  ['sues', 'sue'],\n  ['diverges', 'diverge'],\n  ['situates', 'situate'],\n  ['plots', 'plot'],\n  ['billets', 'billet'],\n  ['compliments', 'compliment'],\n  ['pours', 'pour'],\n  ['stocks', 'stock'],\n  ['dares', 'dare'],\n  ['skips', 'skip'],\n  ['propagates', 'propagate'],\n  ['breeds', 'breed'],\n  ['typifies', 'typify'],\n  ['liquefies', 'liquefy'],\n  ['pinpoints', 'pinpoint'],\n  ['winds', 'wind'],\n  ['transpires', 'transpire'],\n  ['disapproves', 'disapprove'],\n  ['admires', 'admire'],\n  ['gifts', 'gift'],\n  ['finalizes', 'finalize'],\n  ['floods', 'flood'],\n  ['deducts', 'deduct'],\n  ['prejudices', 'prejudice'],\n  ['assents', 'assent'],\n  ['revives', 'revive'],\n  ['disqualifies', 'disqualify'],\n  ['enquires', 'enquire'],\n  ['refutes', 'refute'],\n  ['pivots', 'pivot'],\n  ['revisits', 'revisit'],\n  ['calibrates', 'calibrate'],\n  ['gasses', 'gas'],\n  ['covenants', 'covenant'],\n  ['supercedes', 'supercede'],\n  ['harvests', 'harvest'],\n  ['postpones', 'postpone'],\n  ['reconsiders', 'reconsider'],\n  ['invents', 'invent'],\n  ['wipes', 'wipe'],\n  ['confines', 'confine'],\n  ['rekindles', 'rekindle'],\n  ['fights', 'fight'],\n  ['chains', 'chain'],\n  ['enrolls', 'enroll'],\n  ['rusts', 'rust'],\n  ['manipulates', 'manipulate'],\n  ['gouges', 'gouge'],\n  ['germinates', 'germinate'],\n  ['disintegrates', 'disintegrate'],\n  ['obscures', 'obscure'],\n  ['inhabits', 'inhabit'],\n  ['sporulates', 'sporulate'],\n  ['thickens', 'thicken'],\n  ['coats', 'coat'],\n  ['contaminates', 'contaminate'],\n  ['fats', 'fat'],\n  ['charters', 'charter'],\n  ['bins', 'bin'],\n  ['slices', 'slice'],\n  ['thins', 'thin'],\n  ['hives', 'hive'],\n  ['depletes', 'deplete'],\n  ['stations', 'station'],\n  ['pits', 'pit'],\n  ['closures', 'closure'],\n  ['clogs', 'clog'],\n  ['lengthens', 'lengthen'],\n  ['needles', 'needle'],\n  ['decomposes', 'decompose'],\n  ['blankets', 'blanket'],\n  ['corrodes', 'corrode'],\n  ['stifles', 'stifle'],\n  ['scares', 'scare'],\n  ['hints', 'hint'],\n  ['speculates', 'speculate'],\n  ['frustrates', 'frustrate'],\n  ['harmonizes', 'harmonize'],\n  ['pools', 'pool'],\n  ['tabulates', 'tabulate'],\n  ['subsides', 'subside'],\n  ['subtracts', 'subtract'],\n  ['overstates', 'overstate'],\n  ['characters', 'character'],\n  ['paws', 'paw'],\n  ['wages', 'wage'],\n  ['resets', 'reset'],\n  ['enumerates', 'enumerate'],\n  ['peers', 'peer'],\n  ['internalizes', 'internalize'],\n  ['laughs', 'laugh'],\n  ['coops', 'coop'],\n  ['pretends', 'pretend'],\n  ['errs', 'err'],\n  ['allowances', 'allowance'],\n  ['anchors', 'anchor'],\n  ['weights', 'weight'],\n  ['lunches', 'lunch'],\n  ['checkers', 'checker'],\n  ['redefines', 'redefine'],\n  ['befits', 'befit'],\n  ['disregards', 'disregard'],\n  ['expertises', 'expertise'],\n  ['spotlights', 'spotlight'],\n  ['publicizes', 'publicize'],\n  ['times', 'time'],\n  ['premiers', 'premier'],\n  ['champs', 'champ'],\n  ['endows', 'endow'],\n  ['symbols', 'symbol'],\n  ['occasions', 'occasion'],\n  ['lobbies', 'lobby'],\n  ['refocuses', 'refocuse'],\n  ['branches', 'branch'],\n  ['dislikes', 'dislike'],\n  ['freezes', 'freeze'],\n  ['decodes', 'decode'],\n  ['confounds', 'confound'],\n  ['eludes', 'elude'],\n  ['reasserts', 'reassert'],\n  ['primes', 'prime'],\n  ['relinquishes', 'relinquish'],\n  ['overstocks', 'overstock'],\n  ['excepts', 'except'],\n  ['stalls', 'stall'],\n  ['sails', 'sail'],\n  ['arches', 'arch'],\n  ['passages', 'passage'],\n  ['recurs', 'recur'],\n  ['trumps', 'trump'],\n  ['frequents', 'frequent'],\n  ['litigates', 'litigate'],\n  ['abolishes', 'abolish'],\n  ['defects', 'defect'],\n  ['doses', 'dose'],\n  ['chauffeurs', 'chauffeur'],\n  ['teasels', 'teasel'],\n  ['bitters', 'bitter'],\n  ['rails', 'rail'],\n  ['scrubs', 'scrub'],\n  ['ornaments', 'ornament'],\n  ['brackets', 'bracket'],\n  ['traverses', 'traverse'],\n  ['transits', 'transit'],\n  ['excuses', 'excuse'],\n  ['fulminates', 'fulminate'],\n  ['torches', 'torch'],\n  ['shovels', 'shovel'],\n  ['eyelets', 'eyelet'],\n  ['carillons', 'carillon'],\n  ['garlands', 'garland'],\n  ['reassures', 'reassure'],\n  ['samples', 'sample'],\n  ['resells', 'resell'],\n  ['slates', 'slate'],\n  ['referees', 'referee'],\n  ['troubles', 'trouble'],\n  ['inhales', 'inhale'],\n  ['bullies', 'bully'],\n  ['repeals', 'repeal'],\n  ['quits', 'quit'],\n  ['disobeys', 'disobey'],\n  ['persuades', 'persuade'],\n  ['reprises', 'reprise'],\n  ['couches', 'couch'],\n  ['disassociates', 'disassociate'],\n  ['crashes', 'crash'],\n\n  [\n    'singles',\n    'single',\n    2\n  ],\n  ['scrutinizes', 'scrutinize'],\n  ['realigns', 'realign'],\n  ['entices', 'entice'],\n  ['elevates', 'elevate'],\n  ['awakens', 'awaken'],\n  ['contests', 'contest'],\n  ['schedules', 'schedule'],\n  ['magnifies', 'magnify'],\n  ['couples', 'couple'],\n  ['fares', 'fare'],\n  ['hovers', 'hover'],\n  ['debuts', 'debut'],\n  ['dazzles', 'dazzle'],\n  ['patrols', 'patrol'],\n  ['rumbles', 'rumble'],\n  ['curls', 'curl'],\n  ['glints', 'glint'],\n  ['seduces', 'seduce'],\n  ['steals', 'steal'],\n  ['incinerates', 'incinerate'],\n  ['sparks', 'spark'],\n  ['chambers', 'chamber'],\n  ['ascends', 'ascend'],\n  ['clusters', 'cluster'],\n  ['vaporizes', 'vaporize'],\n  ['commercializes', 'commercialize'],\n  ['dips', 'dip'],\n  ['enthuses', 'enthuse'],\n  ['restrains', 'restrain'],\n  ['thwarts', 'thwart'],\n  ['ripples', 'ripple'],\n  ['saps', 'sap'],\n  ['entraps', 'entrap'],\n  ['humiliates', 'humiliate'],\n  ['grounds', 'ground'],\n  ['bowls', 'bowl'],\n  ['appropriates', 'appropriate'],\n  ['nullifies', 'nullify'],\n  ['rubbers', 'rubber'],\n  ['glues', 'glue'],\n  ['polishes', 'polish'],\n  ['inks', 'ink'],\n  ['sifts', 'sift'],\n  ['defrays', 'defray'],\n  ['annotates', 'annotate'],\n  ['associates', 'associate'],\n  ['headlines', 'headline'],\n  ['layers', 'layer'],\n  ['accents', 'accent'],\n  ['juggles', 'juggle'],\n  ['skates', 'skate'],\n  ['protests', 'protest'],\n  ['patents', 'patent'],\n  ['lapses', 'lapse'],\n  ['gravitates', 'gravitate'],\n  ['surnames', 'surname'],\n  ['alarms', 'alarm'],\n  ['imitates', 'imitate'],\n  ['inconveniences', 'inconvenience'],\n  ['doctors', 'doctor'],\n  ['rebuilds', 'rebuild'],\n  ['administrates', 'administrate'],\n  ['sows', 'sow'],\n  ['disentitles', 'disentitle'],\n  ['bugs', 'bug'],\n  ['sprays', 'spray'],\n  ['stunts', 'stunt'],\n  ['mates', 'mate'],\n  ['defoliates', 'defoliate'],\n  ['burrows', 'burrow'],\n  ['alleviates', 'alleviate'],\n  ['encroaches', 'encroach'],\n  ['buries', 'bury'],\n  ['secretes', 'secrete'],\n  ['colonizes', 'colonize'],\n  ['repels', 'repel'],\n  ['injures', 'injure'],\n  ['tastes', 'taste'],\n  ['debriefs', 'debrief'],\n  ['flakes', 'flake'],\n  ['cakes', 'cake'],\n  ['starches', 'starch'],\n  ['pegs', 'peg'],\n  ['diversifies', 'diversify'],\n  ['hinnies', 'hinny'],\n  ['seeds', 'seed'],\n  ['sauces', 'sauce'],\n  ['squeezes', 'squeeze'],\n  ['overwhelms', 'overwhelm'],\n  ['spices', 'spice'],\n  ['militates', 'militate'],\n  ['cups', 'cup'],\n  ['exclaims', 'exclaim'],\n  ['partakes', 'partake'],\n  ['guesses', 'guess'],\n  ['thaws', 'thaw'],\n  ['leaches', 'leach'],\n  ['zones', 'zone'],\n  ['bolsters', 'bolster'],\n  ['apportions', 'apportion'],\n  ['surmises', 'surmise'],\n  ['coils', 'coil'],\n  ['lines', 'line'],\n  ['slits', 'slit'],\n  ['debunks', 'debunk'],\n  ['overlies', 'overlie'],\n  ['buffers', 'buffer'],\n  ['shelves', 'shelve'],\n  ['lands', 'land'],\n  ['strains', 'strain'],\n  ['stagnates', 'stagnate'],\n  ['exaggerates', 'exaggerate'],\n  ['hides', 'hide'],\n  ['blunts', 'blunt'],\n  ['rivals', 'rival'],\n  ['minimises', 'minimise'],\n  ['dwells', 'dwell'],\n  ['nests', 'nest'],\n  ['crumbles', 'crumble'],\n  ['pans', 'pan'],\n  ['wastes', 'waste'],\n  ['disengages', 'disengage'],\n  ['provokes', 'provoke'],\n  ['disconnects', 'disconnect'],\n  ['ministers', 'minister'],\n  ['calendars', 'calendar'],\n  ['reshapes', 'reshape'],\n  ['mines', 'mine'],\n  ['downplays', 'downplay'],\n  ['burdens', 'burden'],\n  ['handicaps', 'handicap'],\n  ['alternates', 'alternate'],\n  ['internationalizes', 'internationalize'],\n  ['spawns', 'spawn'],\n  ['propels', 'propel'],\n  ['dismisses', 'dismiss'],\n  ['neutralizes', 'neutralize'],\n  ['sterilizes', 'sterilize'],\n  ['sheets', 'sheet'],\n  ['hypothesizes', 'hypothesize'],\n  ['chases', 'chase'],\n  ['unwinds', 'unwind'],\n  ['incites', 'incite'],\n  ['blames', 'blame'],\n  ['overestimates', 'overestimate'],\n  ['equalizes', 'equalize'],\n  ['immunizes', 'immunize'],\n  ['debits', 'debit'],\n  ['forgoes', 'forgo'],\n  ['advantages', 'advantage'],\n  ['dreams', 'dream'],\n  ['exacts', 'exact'],\n  ['delves', 'delve'],\n  ['relays', 'relay'],\n  ['falters', 'falter'],\n  ['institutionalizes', 'institutionalize'],\n  ['inherits', 'inherit'],\n  ['presages', 'presage'],\n  ['outnumbers', 'outnumber'],\n  ['convinces', 'convince'],\n  ['bulletins', 'bulletin'],\n  ['spearheads', 'spearhead'],\n  ['personalizes', 'personalize'],\n  ['volunteers', 'volunteer'],\n  ['guests', 'guest'],\n  ['battles', 'battle'],\n  ['pockets', 'pocket'],\n  ['expounds', 'expound'],\n  ['legitimates', 'legitimate'],\n  ['sidesteps', 'sidestep'],\n  ['rosters', 'roster'],\n  ['paroles', 'parole'],\n  ['professes', 'profess'],\n  ['prorates', 'prorate'],\n  ['disallows', 'disallow'],\n  ['engulfs', 'engulf'],\n  ['straddles', 'straddle'],\n  ['bespeaks', 'bespeak'],\n  ['laments', 'lament'],\n  ['discords', 'discord'],\n  ['propitiates', 'propitiate'],\n  ['recuperates', 'recuperate'],\n  ['accedes', 'accede'],\n  ['behooves', 'behoove'],\n  ['legalizes', 'legalize'],\n  ['analogizes', 'analogize'],\n  ['lingers', 'linger'],\n  ['traffics', 'traffic'],\n  ['radiates', 'radiate'],\n  ['clips', 'clip'],\n  ['carts', 'cart'],\n  ['trumpets', 'trumpet'],\n  ['indemnifies', 'indemnify'],\n  ['drags', 'drag'],\n  ['collides', 'collide'],\n  ['flags', 'flag'],\n  ['chimes', 'chime'],\n  ['saddles', 'saddle'],\n  ['clubs', 'club'],\n  ['rattles', 'rattle'],\n  ['harbors', 'harbor'],\n  ['ruins', 'ruin'],\n  ['amazes', 'amaze'],\n  ['revolts', 'revolt'],\n  ['auditions', 'audition'],\n  ['serenades', 'serenade'],\n  ['disassembles', 'disassemble'],\n  ['subsumes', 'subsume'],\n  ['petitions', 'petition'],\n  ['subsidises', 'subsidise'],\n  ['longs', 'long'],\n  ['treasures', 'treasure'],\n  ['overemphasizes', 'overemphasize'],\n  ['apprises', 'apprise'],\n  ['initials', 'initial'],\n  ['rides', 'ride'],\n  ['marginalizes', 'marginalize'],\n  ['slumps', 'slump'],\n  ['premises', 'premise'],\n  ['taints', 'taint'],\n  ['mutualizes', 'mutualize'],\n  ['digitizes', 'digitize'],\n  ['apprehends', 'apprehend'],\n  ['arrests', 'arrest'],\n  ['amnesties', 'amnesty'],\n  ['cosponsors', 'cosponsor'],\n  ['mumps', 'mump'],\n  ['orchestrates', 'orchestrate'],\n  ['fortifies', 'fortify'],\n  ['courts', 'court'],\n  ['wards', 'ward'],\n  ['plumes', 'plume'],\n  ['cheats', 'cheat'],\n  ['stables', 'stable'],\n  ['delights', 'delight'],\n  ['berths', 'berth'],\n  ['clocks', 'clock'],\n  ['cooks', 'cook'],\n  ['roughs', 'rough'],\n  ['slides', 'slide'],\n  ['fastens', 'fasten'],\n  ['repositions', 'reposition'],\n  ['folds', 'fold'],\n  ['encircles', 'encircle'],\n  ['tows', 'tow'],\n  ['defaces', 'deface'],\n  ['mats', 'mat'],\n  ['hoses', 'hose'],\n  ['recalculates', 'recalculate'],\n  ['docks', 'dock'],\n  ['tires', 'tire'],\n  ['disembarks', 'disembark'],\n  ['belts', 'belt'],\n  ['coins', 'coin'],\n  ['offloads', 'offload'],\n  ['stows', 'stow'],\n  ['waters', 'water'],\n  ['tents', 'tent'],\n  ['jars', 'jar'],\n  ['sulphonates', 'sulphonate'],\n  ['burrs', 'burr'],\n  ['plows', 'plow'],\n  ['cranes', 'crane'],\n  ['brushes', 'brush'],\n  ['buoys', 'buoy'],\n  ['roots', 'root'],\n  ['powders', 'powder'],\n  ['drills', 'drill'],\n  ['blanks', 'blank'],\n  ['cables', 'cable'],\n  ['garments', 'garment'],\n  ['pipes', 'pipe'],\n  ['tiles', 'tile'],\n  ['compresses', 'compress'],\n  ['boots', 'boot'],\n  ['cubes', 'cube'],\n  ['mineralizes', 'mineralize'],\n  ['regains', 'regain'],\n  ['espouses', 'espouse'],\n  ['arrays', 'array'],\n  ['represses', 'repress'],\n  ['assays', 'assay'],\n  ['attenuates', 'attenuate'],\n  ['modulates', 'modulate'],\n  ['mutates', 'mutate'],\n  ['popularizes', 'popularize'],\n  ['dismantles', 'dismantle'],\n  ['fuzzes', 'fuzz'],\n  ['fizzes', 'fizz'],\n  ['fizzles', 'fizzle'],\n  ['impresses', 'impress'],\n\n  [\"awakens\", \"awaken\"],\n  [\"biases\", \"bias\"],\n  [\"compresses\", \"compress\"],\n  [\"crowns\", \"crown\"],\n  // [\"cross-checks\", \"cross-check\"],\n  // [\"double-checks\", \"double-check\"],\n  [\"embeds\", \"embed\"],\n  [\"enlivens\", \"enliven\"],\n  [\"expresses\", \"express\"],\n  [\"fancies\", \"fancy\"],\n  [\"hastens\", \"hasten\"],\n  // [\"fine-tunes\", \"fine-tune\"],\n  // [\"kick-starts\", \"kick-start\"],\n  // [\"self-destructs\", \"self-destruct\"],\n  [\"owns\", \"own\"],\n  [\"repents\", \"repent\"],\n  [\"shed\", \"shed\"],\n  [\"shields\", \"shield\"],\n  [\"tilts\", \"tilt\"],\n  [\"undoes\", \"undo\"],\n  [\"vetoes\", \"veto\"],\n  [\"withholds\", \"withhold\"],\n  [\"witnesses\", \"witness\"]\n]"
  },
  {
    "path": "data/pairs/Superlative.js",
    "content": "export default [\n  ['good', 'best'],\n  ['least', 'least'],\n  ['large', 'largest'],\n  ['high', 'highest'],\n  ['late', 'latest'],\n  ['great', 'greatest'],\n  ['low', 'lowest'],\n  ['near', 'nearest'],\n  ['big', 'biggest'],\n  ['strong', 'strongest'],\n  ['early', 'earliest'],\n  ['old', 'oldest'],\n  ['close', 'closest'],\n  ['small', 'smallest'],\n  ['fast', 'fastest'],\n  ['bright', 'brightest'],\n  ['new', 'newest'],\n  ['bad', 'worst'],\n  ['long', 'longest'],\n  ['poor', 'poorest'],\n  ['broad', 'broadest'],\n  ['young', 'youngest'],\n  ['wide', 'widest'],\n  ['full', 'fullest'],\n  ['fine', 'finest'],\n  ['busy', 'busiest'],\n  ['simple', 'simplest'],\n  ['weak', 'weakest'],\n  ['deep', 'deepest'],\n  ['easy', 'easiest'],\n  ['short', 'shortest'],\n  ['safe', 'safest'],\n  ['healthy', 'healthiest'],\n  ['warm', 'warmest'],\n  ['narrow', 'narrowest'],\n  ['cheap', 'cheapest'],\n  ['slight', 'slightest'],\n  ['southwest', 'southwest'],\n  ['heavy', 'heaviest'],\n  ['few', 'fewest'],\n  ['hard', 'hardest'],\n  ['dry', 'driest'],\n  ['strict', 'strictest'],\n  ['slow', 'slowest'],\n  ['hot', 'hottest'],\n  ['clear', 'clearest'],\n  ['rich', 'richest'],\n  ['quick', 'quickest'],\n  ['wealthy', 'wealthiest'],\n  ['tough', 'toughest'],\n  ['sharp', 'sharpest'],\n  ['harsh', 'harshest'],\n  ['tall', 'tallest'],\n  ['proud', 'proudest'],\n  ['wet', 'wettest'],\n  ['deadly', 'deadliest'],\n  ['fair', 'fairest'],\n  ['wise', 'wisest'],\n  ['pure', 'purest'],\n  ['steep', 'steepest'],\n  ['fresh', 'freshest'],\n  ['sure', 'surest'],\n  ['risky', 'riskiest'],\n  ['common', 'commonest'],\n  ['quiet', 'quietest'],\n  ['green', 'greenest'],\n  ['dirty', 'dirtiest'],\n  ['wild', 'wildest'],\n  ['thin', 'thinnest'],\n  ['tight', 'tightest'],\n  ['keen', 'keenest'],\n  ['fit', 'fittest'],\n  ['severe', 'severest'],\n  ['costly', 'costliest'],\n  ['happy', 'happiest'],\n  ['sticky', 'stickiest'],\n  ['fond', 'fondest'],\n  ['sincere', 'sincerest'],\n  ['hearty', 'heartiest'],\n  ['lengthy', 'lengthiest'],\n  ['soft', 'softest'],\n  ['clean', 'cleanest'],\n  ['straight', 'straightest'],\n  ['loud', 'loudest'],\n  ['bold', 'boldest'],\n  ['tricky', 'trickiest'],\n  ['bleak', 'bleakest'],\n  ['kind', 'kindest'],\n  ['nice', 'nicest'],\n\n  ['nice', 'nicest'],\n  ['late', 'latest'],\n  ['hard', 'hardest'],\n  ['inner', 'innermost'],\n  ['outer', 'outermost'],\n  ['far', 'furthest'],\n  ['worse', 'worst'],\n  ['bad', 'worst'],\n  ['good', 'best'],\n  ['big', 'biggest'],\n  ['large', 'largest'],\n\n\n  ['absurd', 'absurdest'],\n  ['angry', 'angriest'],\n  ['bad', 'worst'],\n  ['bald', 'baldest'],\n  ['bawdy', 'bawdiest'],\n  ['big', 'biggest'],\n  ['bitter', 'bitterest'],\n  ['black', 'blackest'],\n  ['bland', 'blandest'],\n  ['blond', 'blondest'],\n  ['bloody', 'bloodiest'],\n  ['blue', 'bluest'],\n  ['bold', 'boldest'],\n  ['bouncy', 'bounciest'],\n  ['brash', 'brashest'],\n  ['brave', 'bravest'],\n  ['brief', 'briefest'],\n  ['brown', 'brownest'],\n  ['burly', 'burliest'],\n  ['busy', 'busiest'],\n  ['calm', 'calmest'],\n  ['cheap', 'cheapest'],\n  ['cheesy', 'cheesiest'],\n  ['chilly', 'chilliest'],\n  ['clear', 'clearest'],\n  ['clever', 'cleverest'],\n  ['cloudy', 'cloudiest'],\n  ['cold', 'coldest'],\n  ['common', 'commonest'],\n  ['cool', 'coolest'],\n  ['costly', 'costliest'],\n  ['cozy', 'coziest'],\n  ['cruel', 'cruelest'],\n  ['cuddly', 'cuddliest'],\n  ['cute', 'cutest'],\n  ['deadly', 'deadliest'],\n  ['dear', 'dearest'],\n  ['dense', 'densest'],\n  ['dirty', 'dirtiest'],\n  ['drunk', 'drunkest'],\n  ['dull', 'dullest'],\n  ['dumb', 'dumbest'],\n  ['early', 'earliest'],\n  ['earthly', 'earthliest'],\n  ['eastern', 'easternest'],\n  ['easy', 'easiest'],\n  ['eerie', 'eeriest'],\n  ['evil', 'evilest'],\n  ['fair', 'fairest'],\n  ['fake', 'fakest'],\n  ['fancy', 'fanciest'],\n  ['far', 'furthest'],\n  ['faulty', 'faultiest'],\n  ['feeble', 'feeblest'],\n  ['fierce', 'fiercest'],\n  ['fine', 'finest'],\n  ['foamy', 'foamiest'],\n  ['foul', 'foulest'],\n  ['frail', 'frailest'],\n  ['friendly', 'friendliest'],\n  ['full', 'fullest'],\n  ['funny', 'funniest'],\n  ['furry', 'furriest'],\n  ['gaudy', 'gaudiest'],\n  ['gay', 'gayest'],\n  ['gentle', 'gentlest'],\n  ['ghastly', 'ghastliest'],\n  ['ghostly', 'ghostliest'],\n  ['giant', 'giantest'],\n  ['giddy', 'giddiest'],\n  ['glad', 'gladest'],\n  ['glib', 'glibest'],\n  ['gloomy', 'gloomiest'],\n  ['goofy', 'goofiest'],\n  ['grand', 'grandest'],\n  ['gray', 'graiest'],\n  ['green', 'greenest'],\n  ['grey', 'greyest'],\n  ['grisly', 'grisliest'],\n  ['groovy', 'grooviest'],\n  ['gross', 'grossest'],\n  ['handsome', 'handsomest'],\n  ['happy', 'happiest'],\n  ['harsh', 'harshest'],\n  ['heavenly', 'heavenliest'],\n  ['heavy', 'heaviest'],\n  ['hefty', 'heftiest'],\n  ['high', 'highest'],\n  ['hilly', 'hilliest'],\n  ['homely', 'homeliest'],\n  ['hot', 'hottest'],\n  ['huge', 'hugest'],\n  ['humble', 'humblest'],\n  ['humid', 'humidest'],\n  ['hungry', 'hungriest'],\n  ['ill', 'illest'],\n  ['instant', 'instantest'],\n  ['jolly', 'jolliest'],\n  ['juicy', 'juiciest'],\n  ['keen', 'keenest'],\n  ['kind', 'kindest'],\n  ['lame', 'lamest'],\n  ['large', 'largest'],\n  ['late', 'latest'],\n  ['lewd', 'lewdest'],\n  ['likely', 'likeliest'],\n  ['little', 'littlest'],\n  ['lively', 'liveliest'],\n  ['lofty', 'loftiest'],\n  ['lonely', 'loneliest'],\n  ['long', 'longest'],\n  ['loud', 'loudest'],\n  ['lousy', 'lousiest'],\n  ['lovely', 'loveliest'],\n  ['low', 'lowest'],\n  ['lowly', 'lowliest'],\n  ['loyal', 'loyalest'],\n  ['lucky', 'luckiest'],\n  ['mean', 'meanest'],\n  ['meek', 'meekest'],\n  ['mellow', 'mellowest'],\n  ['mild', 'mildest'],\n  ['moody', 'moodiest'],\n  ['narrow', 'narrowest'],\n  ['near', 'nearest'],\n  ['neat', 'neattest'],\n  ['new', 'newest'],\n  ['nice', 'nicest'],\n  ['nimble', 'nimblest'],\n  ['noble', 'noblest'],\n  ['noisy', 'noisiest'],\n  ['normal', 'normalest'],\n  ['nosy', 'nosiest'],\n  ['odd', 'oddest'],\n  ['oily', 'oiliest'],\n  ['old', 'oldest'],\n  ['pale', 'palest'],\n  ['phony', 'phoniest'],\n  ['plain', 'plainest'],\n  ['pleasant', 'pleasantest'],\n  ['poor', 'poorest'],\n  ['pricey', 'priciest'],\n  ['prickly', 'prickliest'],\n  ['proud', 'proudest'],\n  ['puny', 'puniest'],\n  ['pure', 'purest'],\n  ['quaint', 'quaintest'],\n  ['random', 'randomest'],\n  ['rapid', 'rapidest'],\n  ['rare', 'rarest'],\n  ['raw', 'rawest'],\n  ['ready', 'readiest'],\n  ['real', 'realest'],\n  ['remote', 'remotest'],\n  ['rich', 'richest'],\n  ['ritzy', 'ritziest'],\n  ['roomy', 'roomiest'],\n  ['rosy', 'rosiest'],\n  ['round', 'roundest'],\n  ['rude', 'rudest'],\n  ['safe', 'safest'],\n  ['saintly', 'saintliest'],\n  ['salty', 'saltiest'],\n  ['savvy', 'savviest'],\n  ['scary', 'scariest'],\n  ['sexy', 'sexiest'],\n  ['shady', 'shadiest'],\n  ['shallow', 'shallowest'],\n  ['shiny', 'shiniest'],\n  ['shrill', 'shrillest'],\n  ['shy', 'shyest'],\n  ['silly', 'silliest'],\n  ['simple', 'simplest'],\n  ['skinny', 'skinniest'],\n  ['sleek', 'sleekest'],\n  ['slender', 'slenderest'],\n  ['slight', 'slightest'],\n  ['slim', 'slimest'],\n  ['slimy', 'slimiest'],\n  ['slow', 'slowest'],\n  ['sly', 'sliest'],\n  ['small', 'smallest'],\n  ['smelly', 'smelliest'],\n  ['solid', 'solidest'],\n  ['soon', 'soonest'],\n  ['sore', 'sorest'],\n  ['spicy', 'spiciest'],\n  ['sprightly', 'sprightliest'],\n  ['square', 'squarest'],\n  ['stark', 'starkest'],\n  ['steady', 'steadiest'],\n  ['stern', 'sternest'],\n  ['strange', 'strangest'],\n  ['strict', 'strictest'],\n  ['strong', 'strongest'],\n  ['stupid', 'stupidest'],\n  ['sturdy', 'sturdiest'],\n  ['subtle', 'subtlest'],\n  ['sudden', 'suddenest'],\n  ['swift', 'swiftest'],\n  ['tall', 'tallest'],\n  ['tame', 'tamest'],\n  ['tart', 'tartest'],\n  ['thirsty', 'thirstiest'],\n  ['tidy', 'tidiest'],\n  ['timely', 'timeliest'],\n  ['tiny', 'tiniest'],\n  ['tired', 'tiredest'],\n  ['tranquil', 'tranquilest'],\n  ['trendy', 'trendiest'],\n  ['true', 'truest'],\n  ['ugly', 'ugliest'],\n  ['unlikely', 'unlikeliest'],\n  ['untidy', 'untidiest'],\n  ['vague', 'vaguest'],\n  ['vulgar', 'vulgarest'],\n  ['wary', 'wariest'],\n  ['weary', 'weariest'],\n  ['weird', 'weirdest'],\n  ['wicked', 'wickedest'],\n  ['wild', 'wildest'],\n  ['wily', 'wiliest'],\n  ['windy', 'windiest'],\n  ['wiry', 'wiriest'],\n  ['wise', 'wisest'],\n  ['wry', 'wriest'],\n  ['young', 'youngest'],\n  ['zany', 'zaniest'],\n  ['bright', 'brightest'],\n  ['broad', 'broadest'],\n  ['coarse', 'coarsest'],\n  ['damp', 'dampest'],\n  ['dark', 'darkest'],\n  ['dead', 'deadest'],\n  ['deep', 'deepest'],\n  ['fast', 'fastest'],\n  ['fat', 'fattest'],\n  ['flat', 'flattest'],\n  ['fresh', 'freshest'],\n  ['great', 'greattest'],\n  ['hard', 'hardest'],\n  ['loose', 'loosest'],\n  ['mad', 'madest'],\n  ['quick', 'quickest'],\n  ['quiet', 'quiettest'],\n  ['red', 'redest'],\n  ['ripe', 'ripest'],\n  ['rough', 'roughest'],\n  ['sad', 'sadest'],\n  ['sharp', 'sharpest'],\n  ['short', 'shortest'],\n  ['sick', 'sickest'],\n  ['smart', 'smartest'],\n  ['soft', 'softest'],\n  ['steep', 'steepest'],\n  ['stiff', 'stiffest'],\n  ['straight', 'straightest'],\n  ['sweet', 'sweetest'],\n  ['thick', 'thickest'],\n  ['tight', 'tightest'],\n  ['tough', 'toughest'],\n  ['weak', 'weakest'],\n  ['white', 'whitest'],\n  ['wide', 'widest'],\n  ['dire', 'direst'],\n  ['polite', 'politest'],\n  ['eager', 'eagerest'],\n  ['prompt', 'promptest'],\n  ['cheerful', 'cheerfullest'],\n\n\n]"
  },
  {
    "path": "data/pairs/index.js",
    "content": "import Comparative from './Comparative.js'\nimport Gerund from './Gerund.js'\nimport Participle from './Participle.js'\nimport PastTense from './PastTense.js'\nimport PresentTense from './PresentTense.js'\nimport Superlative from './Superlative.js'\nimport AdjToNoun from './AdjToNoun.js'\n\nexport default {\n  Comparative,\n  Gerund,\n  Participle,\n  PastTense,\n  PresentTense,\n  Superlative,\n  AdjToNoun,\n}"
  },
  {
    "path": "demos/performance.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\" />\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n  <title></title>\n  <link href=\"https://unpkg.com/spencer-css@1.1.3/builds/spencer.min.css\" rel=\"stylesheet\" />\n  <link href=\"https://fonts.googleapis.com/css?family=Tajawal&display=swap\" rel=\"stylesheet\" />\n  <style>\n    body {\n      font-family: 'Tajawal';\n    }\n  </style>\n</head>\n\n<body>\n  <div class=\"m2\">\n    <div class=\"f2 red \">nlp-compromise stress-test</div>\n    <div>parse a bunch of large texts in the browser</div>\n    <button id=\"start\" class=\"m2\">start</button>\n    <div id=\"duration\" class=\"darkgrey f3\"></div>\n  </div>\n  <table id=\"stage\" class=\" m4 center w10\"></table>\n  <script src=\"../builds/three/compromise-three.cjs\"></script>\n  <!-- <script src=\"https://unpkg.com/compromise@11.14.2/builds/compromise.min.js\"></script> -->\n  <script defer>\n    let url = 'https://unpkg.com/nlp-corpus@3.3.0/builds/nlp-corpus-1.json'\n    fetch(url)\n      .then(response => {\n        return response.json()\n      })\n      .then(texts => {\n        window.texts = texts\n        console.log('loaded')\n      })\n    document.querySelector('#start').onclick = function () {\n      console.log(nlp)\n      console.log(nlp.version)\n      let el = document.querySelector('#stage')\n      document.querySelector('#start').innerHTML = 'running..'\n      el.innerHTML = ''\n      let begin = Date.now()\n      console.log('start')\n      let els = texts.map(txt => {\n        let start = Date.now()\n        let doc = nlp(txt)\n        let duration = Date.now() - start\n        return `<tr class=\"m3 h4\"><td>${txt.slice(0, 50)}</td> \n          <td>${doc.wordCount().toLocaleString()} words</td> \n          <td>${duration.toLocaleString()}ms</td> \n          <td class=\"darkgrey f2\">${parseInt(doc.wordCount() / duration)}ms per word</td>\n          </tr>`\n      })\n      el.innerHTML = els.join('')\n      document.querySelector('#duration').innerHTML = parseInt(Date.now() - begin, 10) / 1000 + 's - in total'\n    }\n  </script>\n</body>\n\n</html>"
  },
  {
    "path": "demos/plugin.html",
    "content": "<html>\n\n<head>\n  <meta charset=\"utf-8\" />\n  <style>\n    #result {\n      font-size: 40px;\n      margin: 20%;\n    }\n\n    a {\n      color: steelblue;\n    }\n  </style>\n</head>\n<script src=\"../builds/three/compromise-three.cjs\"></script>\n<script src=\"../plugins/speech/builds/compromise-speech.cjs\"></script>\n<!-- <script src=\"https://unpkg.com/compromise-numbers\"></script> -->\n<script defer>\n  // compromise is loaded as 'window.nlp'\n  // plugin is loaded as 'window.compromiseSpeech'\n  nlp.plugin(compromiseSpeech)\n\n  var doc = nlp('edmonton oilers')\n  doc.compute('syllables')\n\n  window.onload = function () {\n    let arr = doc.syllables()\n    let el = document.getElementById('result')\n    el.innerHTML = JSON.stringify(arr, null, 2)\n  }\n</script>\n\n<body>\n  <div>compromise plugin demo</div>\n  <div><a href=\"https://github.com/spencermountain/compromise/blob/master/demo/plugin.html\">view source</a></div>\n  <pre id=\"result\"></pre>\n</body>\n\n</html>"
  },
  {
    "path": "demos/web-worker/_worker.js",
    "content": "/* global importScripts */\n\n//loads and runs compromise inside the worker-instance\nself.addEventListener(\n  'message',\n  function (e) {\n    // importScripts('https://unpkg.com/compromise@next')\n    importScripts('../../builds/compromise.js')\n    const doc = self.nlp(e.data)\n    const m = doc.places()\n    self.postMessage(m.json({ count: true, unique: true }))\n  },\n  false\n)"
  },
  {
    "path": "demos/web-worker/index.html",
    "content": "<html>\n\n<head>\n  <meta charset=\"utf-8\" />\n  <style>\n    #result {\n      font-size: 40px;\n      margin: 20%;\n    }\n\n    a {\n      color: steelblue;\n    }\n\n    textarea {\n      width: 50%;\n      height: 50%;\n      margin-left: 25%;\n      margin-top: 5%;\n    }\n  </style>\n</head>\n<script>\n  //create the worker\n  var worker = new Worker('./_worker.js')\n  //respond to it finishing\n  worker.addEventListener('message', function (msg) {\n    console.log('worker response:', msg)\n    // render results in some html:\n    let rows = msg.data.map(o => `<div>${o.text}</div>`).join('')\n    // boom.\n    document.getElementById('result').innerHTML = rows\n  }, false)\n\n  window.onload = function () {\n    //send the worker some text\n    let text = document.getElementById('text').value\n    worker.postMessage(text)\n  }\n</script>\n\n<body>\n  compromise <a href=\"https://www.html5rocks.com/en/tutorials/workers/basics/\">web-worker</a> demo\n  <div><a href=\"https://github.com/spencermountain/compromise/blob/master/demo/plugin.html\">view source</a></div>\n  <p></p>\n  <textarea id=\"text\">\nNow this is a story all about how my life got flipped-turned upside down.\nand I'd like to take a minute, just sit right there, I'll tell you how I became the prince of a town called Bel-Air.\nIn west Philadelphia born and raised, on the playground was where I spent most of my days.\nChillin' out maxin' relaxin' all cool, and all shooting some b-ball outside of the school.\nWhen a couple of guys who were up to no good started making trouble in my neighborhood,\nI got in one little fight and my mom got scared, she said, \"You're movin' with your auntie and uncle in Bel-Air\".\nI begged and pleaded with her day after day but she packed my suitcase and sent me on my way.\nShe gave me a kiss and then she gave me my ticket. I put my Walkman on and said, \"I might as well kick it\".\nFirst class, yo, this is bad. Drinking orange juice out of a champagne glass.\nIs this what the people of Bel-Air living like? Hmm, this might be alright.\nBut wait I hear they're prissy, bourgeois, all that. Is this the type of place that they just send this cool cat?\nI don't think so, I'll see when I get there.\nI hope they're prepared for the prince of Bel-Air.\nWell, the plane landed and when I came out. There was a dude who looked like a cop standing there with my name out.\nI ain't trying to get arrested yet, I just got here.\nI sprang with the quickness like lightning, disappeared.\nI whistled for a cab and when it came near. The license plate said \"Fresh\" and it had dice in the mirror.\nIf anything I could say that this cab was rare, but I thought, \"Nah, forget it\" – \"Yo, home to Bel-Air\"!\nI pulled up to the house about 7 or 8 and I yelled to the cabbie, \"Yo home smell ya later\".\nI looked at my kingdom, I was finally there. To sit on my throne as the Prince of Bel-Air.\n      </textarea>\n  <p class=\"desc\">worker output:</p>\n  <div id=\"result\"></div>\n</body>\n\n</html>"
  },
  {
    "path": "eslint.config.js",
    "content": "import * as regexpPlugin from \"eslint-plugin-regexp\"\n\nexport default [\n  regexpPlugin.configs[\"flat/recommended\"],\n\n  {\n    // \"ignorePatterns\": [\"**/builds/*\"],\n    \"ignores\": [\"**/builds/*\"],\n    \"rules\": {\n      \"comma-dangle\": [1, \"only-multiline\"],\n      \"quotes\": [0, \"single\", \"avoid-escape\"],\n      \"max-nested-callbacks\": [1, 4],\n      \"max-params\": [1, 5],\n      \"consistent-return\": 1,\n      \"no-bitwise\": 1,\n      \"no-empty\": 1,\n      \"no-console\": 1,\n      \"no-duplicate-imports\": 1,\n      \"no-eval\": 2,\n      \"no-implied-eval\": 2,\n      \"no-mixed-operators\": 2,\n      \"no-multi-assign\": 2,\n      \"no-nested-ternary\": 1,\n      \"no-prototype-builtins\": 0,\n      \"no-self-compare\": 1,\n      \"no-sequences\": 1,\n      \"no-shadow\": 2,\n      \"no-unmodified-loop-condition\": 1,\n      \"no-use-before-define\": 1,\n      \"prefer-const\": 1,\n      \"radix\": 1,\n      \"no-unused-vars\": 1,\n      \"regexp/prefer-d\": 0,\n      \"regexp/prefer-w\": 0,\n      \"regexp/prefer-range\": 0,\n      \"regexp/no-unused-capturing-group\": 0,\n      \"eslint-comments/no-unused-disable\": 0\n    }\n  },\n]\n"
  },
  {
    "path": "one/package.json",
    "content": "{\n\t\"name\": \"compromise-one\",\n\t\"version\": \"14.14.4\",\n\t\"description\": \"\",\n\t\"type\": \"module\",\n\t\"module\": \"./../src/one.js\",\n\t\"main\": \"./../src/one.js\",\n\t\"types\": \"./../types/one.d.ts\",\n\t\"exports\": {\n\t\t\"./package.json\": \"./package.json\",\n\t\t\".\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./../types/one/one.d.ts\",\n\t\t\t\t\"default\": \"./../src/one.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./../types/one.d.cts\",\n\t\t\t\t\"default\": \"./../builds/one/compromise-one.cjs\"\n\t\t\t}\n\t\t}\n\t},\n\t\"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n\t\"license\": \"MIT\",\n\t\"sideEffects\": true\n}"
  },
  {
    "path": "package.json",
    "content": "{\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"name\": \"compromise\",\n  \"description\": \"modest natural language processing\",\n  \"version\": \"14.15.0\",\n  \"module\": \"./src/three.js\",\n  \"main\": \"./src/three.js\",\n  \"unpkg\": \"./builds/compromise.js\",\n  \"type\": \"module\",\n  \"sideEffects\": false,\n  \"types\": \"./types/three.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": {\n        \"types\": \"./types/three.d.ts\",\n        \"default\": \"./src/three.js\"\n      },\n      \"require\": {\n        \"types\": \"./types/three.d.cts\",\n        \"default\": \"./builds/three/compromise-three.cjs\"\n      }\n    },\n    \"./tokenize\": {\n      \"import\": {\n        \"types\": \"./types/one.d.ts\",\n        \"default\": \"./src/one.js\"\n      },\n      \"require\": {\n        \"types\": \"./types/one.d.cts\",\n        \"default\": \"./builds/one/compromise-one.cjs\"\n      }\n    },\n    \"./one\": {\n      \"import\": {\n        \"types\": \"./types/one.d.ts\",\n        \"default\": \"./src/one.js\"\n      },\n      \"require\": {\n        \"types\": \"./types/one.d.cts\",\n        \"default\": \"./builds/one/compromise-one.cjs\"\n      }\n    },\n    \"./two\": {\n      \"import\": {\n        \"types\": \"./types/two.d.ts\",\n        \"default\": \"./src/two.js\"\n      },\n      \"require\": {\n        \"types\": \"./types/two.d.cts\",\n        \"default\": \"./builds/two/compromise-two.cjs\"\n      }\n    },\n    \"./three\": {\n      \"import\": {\n        \"types\": \"./types/three.d.ts\",\n        \"default\": \"./src/three.js\"\n      },\n      \"require\": {\n        \"types\": \"./types/three.d.cts\",\n        \"default\": \"./builds/three/compromise-three.cjs\"\n      }\n    },\n    \"./misc\": {\n      \"types\": \"./types/misc.d.ts\"\n    },\n    \"./view/one\": {\n      \"types\": \"./types/view/one.d.ts\"\n    },\n    \"./view/two\": {\n      \"types\": \"./types/view/two.d.ts\"\n    },\n    \"./view/three\": {\n      \"types\": \"./types/view/three.d.ts\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise\",\n  \"engines\": {\n    \"node\": \">=12.0.0\"\n  },\n  \"scripts\": {\n    \"build\": \"npm run version && rollup -c --silent\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"pack\": \"node ./scripts/pack.js\",\n    \"version\": \"node ./scripts/version.js\",\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer\",\n    \"testb\": \"npm run test:smoke && cross-env TESTENV=prod npm run test\",\n    \"test:one\": \"tape \\\"./tests/one/**/*.test.js\\\" | tap-dancer\",\n    \"test:two\": \"tape \\\"./tests/two/**/*.test.js\\\" | tap-dancer\",\n    \"test:three\": \"tape \\\"./tests/three/**/*.test.js\\\" | tap-dancer\",\n    \"test:smoke\": \"tape \\\"./scripts/test/smoke.test.js\\\" | tap-dancer\",\n    \"test:plugins\": \"tape \\\"./plugins/**/tests/**/*.test.js\\\" | tap-dancer\",\n    \"stress\": \"node scripts/test/stress.js\",\n    \"debug\": \"node ./scripts/debug.js\",\n    \"match\": \"node ./scripts/match.js\",\n    \"coverage\": \"c8 -r lcov -n 'src/**/*' -n 'plugins/**/*' npm run test\",\n    \"perf\": \"node ./scripts/perf/index.js\",\n    \"flame\": \"clinic flame -- node ./scripts/perf/flame\",\n    \"lint\": \"eslint src\",\n    \"plugins:ci\": \"node ./scripts/plugins.js npm ci\",\n    \"plugins:build\": \"node ./scripts/plugins.js npm run build\"\n  },\n  \"files\": [\n    \"builds/\",\n    \"types/\",\n    \"src/\",\n    \"tokenize/\",\n    \"one/\",\n    \"two/\",\n    \"three/\"\n  ],\n  \"keywords\": [\n    \"nlp\"\n  ],\n  \"prettier\": {\n    \"trailingComma\": \"es5\",\n    \"tabWidth\": 2,\n    \"semi\": false,\n    \"singleQuote\": true,\n    \"printWidth\": 120,\n    \"arrowParens\": \"avoid\"\n  },\n  \"dependencies\": {\n    \"efrt\": \"2.7.0\",\n    \"grad-school\": \"0.0.5\",\n    \"suffix-thumb\": \"5.0.2\"\n  },\n  \"devDependencies\": {\n    \"@rollup/plugin-node-resolve\": \"16.0.3\",\n    \"@rollup/plugin-terser\": \"0.4.4\",\n    \"cross-env\": \"7.0.3\",\n    \"eslint\": \"9.39.1\",\n    \"eslint-plugin-regexp\": \"2.10.0\",\n    \"nlp-corpus\": \"4.4.0\",\n    \"rollup\": \"4.59.0\",\n    \"rollup-plugin-filesize-check\": \"1.2.0\",\n    \"shelljs\": \"0.10.0\",\n    \"tap-dancer\": \"0.3.4\",\n    \"tape\": \"5.9.0\"\n  },\n  \"eslintIgnore\": [\n    \"builds/*.js\",\n    \"*.ts\",\n    \"_old/**\",\n    \"_tests/**\"\n  ],\n  \"license\": \"MIT\"\n}"
  },
  {
    "path": "plugins/_experiments/ast/README.md",
    "content": "attempt to create a [unist-formatted](https://github.com/syntax-tree/unist) Abstract Syntax Tree via some [dependency parsing](http://nlpprogress.com/english/dependency_parsing.html)\n"
  },
  {
    "path": "plugins/_experiments/ast/package.json",
    "content": "{\n  \"name\": \"compromise-ast\",\n  \"description\": \"plugin for nlp-compromise\",\n  \"version\": \"0.0.0\",\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"main\": \"./src/plugin.js\",\n  \"unpkg\": \"./builds/compromise-ast.min.js\",\n  \"module\": \"./builds/compromise-ast.mjs\",\n  \"type\": \"module\",\n  \"types\": \"index.d.ts\",\n  \"sideEffects\": false,\n  \"exports\": {\n    \".\": {\n      \"import\": \"./src/plugin.js\",\n      \"require\": \"./builds/compromise-ast.cjs\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise/tree/master/plugins/ast\",\n  \"scripts\": {\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"testb\": \"TESTENV=prod tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"build\": \"rollup -c --silent\"\n  },\n  \"eslintIgnore\": [\n    \"builds/*.js\"\n  ],\n  \"files\": [\n    \"builds/\",\n    \"src/\",\n    \"index.d.ts\"\n  ],\n  \"peerDependencies\": {\n    \"compromise\": \">=14.0.0\"\n  },\n  \"dependencies\": {},\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"@rollup/plugin-commonjs\": \"^24.0.1\"\n  }\n}"
  },
  {
    "path": "plugins/_experiments/ast/scratch.js",
    "content": "import nlp from '../../../src/three.js'\nimport plg from './src/plugin.js'\nnlp.plugin(plg)\n\nlet str = ''\nstr = `I prefer the morning flight through Denver. it was cool,\noh yeah nice`\nconst doc = nlp(str)\n// console.log(doc.lines())\n// let tree = doc.ast()\n// console.dir(tree, { depth: 10 })\ndoc.chunks().debug('chunker')\n"
  },
  {
    "path": "plugins/_experiments/ast/src/ast.js",
    "content": "\nconst chunkType = function (chunk) {\n  if (chunk.isVerb().found) {\n    return 'verbPhrase'\n  }\n  if (chunk.isNoun().found) {\n    return 'nounPhrase'\n  }\n  if (chunk.isPivot().found) {\n    return 'pivot'\n  }\n  if (chunk.isAdjective().found) {\n    return 'adjectivePhrase'\n  }\n  return null\n}\n\nconst doWord = function (w) {\n  const term = w.docs[0][0]\n  const offset = term.offset\n  const node = {\n    type: 'word',\n    children: [],\n    position: {\n      start: { line: term.line + 1, column: null, offset: offset.start },\n      end: { line: term.line + 1, column: null, offset: offset.start + offset.length }\n    }\n  }\n  if (term.pre) {\n    node.children.push({\n      type: 'punct', value: term.pre,      // data: { word: false } \n    })\n  }\n  node.children.push({\n    type: 'text', value: term.text, data: { normal: term.normal, tags: Array.from(term.tags) },\n    // position: {    }\n  })\n  if (term.post) {\n    node.children.push({\n      type: 'punct', value: term.post,      // data: { word: false } \n    })\n  }\n  return node\n}\n\nconst doChunk = function (chunk) {\n  const type = chunkType(chunk)\n  const node = {\n    type: type,\n    children: chunk.terms().map(doWord),\n    // position: {}\n  }\n  return node\n}\n\n\nconst doSentence = function (s) {\n  const node = {\n    type: 'sentence',\n    children: s.chunks().map(doChunk, []),\n    position: {}\n  }\n  return node\n}\n\nconst toAst = function (doc) {\n  doc.compute(['chunks', 'offset', 'lines'])\n  const root = {\n    type: 'root',\n    children: doc.sentences().map(doSentence),\n    position: {}\n  }\n  return root\n}\nexport default toAst"
  },
  {
    "path": "plugins/_experiments/ast/src/compute/index.js",
    "content": "\nexport default {\n  lines: function (view) {\n    view.lines().forEach((arr, i) => {\n      arr.forEach(s => {\n        s.docs[0].forEach(term => {\n          term.line = i\n        })\n      })\n    })\n  }\n}"
  },
  {
    "path": "plugins/_experiments/ast/src/lines.js",
    "content": "// return all newline-seperated sections in the document\nconst toLines = function (doc) {\n  const newLine = /\\n/\n  const lines = [[]]\n  // a newline already splits a sentence,\n  // so it can only happen at the end of a sentence\n  doc.sentences().forEach(s => {\n    lines[lines.length - 1].push(s)\n    const terms = s.docs[0]\n    const end = terms[terms.length - 1]\n    if (newLine.test(end.post)) {\n      lines.push([])\n    }\n  })\n  // remove an empty last one\n  if (lines[lines.length - 1].length === 0) {\n    lines.pop()\n  }\n  return lines\n}\nexport default toLines"
  },
  {
    "path": "plugins/_experiments/ast/src/plugin.js",
    "content": "import toAst from './ast.js'\nimport toLines from './lines.js'\nimport compute from './compute/index.js'\n\n\n\nexport default {\n  compute,\n\n  api: function (View) {\n\n    View.prototype.lines = function () {\n      return toLines(this)\n    }\n\n\n    View.prototype.ast = function (opts) {\n      return toAst(this, opts)\n    }\n  }\n}"
  },
  {
    "path": "plugins/_experiments/cmd-k/README.md",
    "content": "<div align=\"center\">\n  <img src=\"https://cloud.githubusercontent.com/assets/399657/23590290/ede73772-01aa-11e7-8915-181ef21027bc.png\" />\n\n  <div>a plugin for <a href=\"https://github.com/spencermountain/compromise/\">compromise</a></div>\n  \n  <!-- npm version -->\n  <a href=\"https://npmjs.org/package/compromise-cmd-k\">\n    <img src=\"https://img.shields.io/npm/v/compromise-cmd-k.svg?style=flat-square\" />\n  </a>\n  v\n  <!-- file size -->\n  <a href=\"https://unpkg.com/compromise-cmd-k/builds/compromise-cmd-k.min.js\">\n    <img src=\"https://badge-size.herokuapp.com/spencermountain/compromise/master/plugins/cmd-k/builds/compromise-cmd-k.min.js\" />\n  </a>\n   <hr/>\n</div>\n\n<div align=\"center\">\n  <code>npm install compromise-cmd-k</code>\n</div>\n\nexperimental plugins for command-prompt parsing\n\nMIT\n"
  },
  {
    "path": "plugins/_experiments/cmd-k/package.json",
    "content": "{\n  \"name\": \"compromise-cmd-k\",\n  \"description\": \"plugin for nlp-compromise\",\n  \"version\": \"0.0.1\",\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"main\": \"./src/plugin.js\",\n  \"unpkg\": \"./builds/compromise-cmd-k.min.js\",\n  \"module\": \"./builds/compromise-cmd-k.mjs\",\n  \"type\": \"module\",\n  \"sideEffects\": false,\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./src/plugin.js\",\n      \"require\": \"./builds/compromise-cmd-k.cjs\",\n      \"types\": \"./index.d.ts\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise/tree/master/plugins/dates\",\n  \"scripts\": {\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"testb\": \"TESTENV=prod tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"perf\": \"node ./scripts/perf.js\",\n    \"version\": \"node ./scripts/version.js\",\n    \"build\": \"npm run version && rollup -c --silent\"\n  },\n  \"files\": [\n    \"builds/\",\n    \"src/\",\n    \"index.d.ts\"\n  ],\n  \"peerDependencies\": {\n    \"compromise\": \">=14.2.0\"\n  },\n  \"dependencies\": {},\n  \"license\": \"MIT\"\n}"
  },
  {
    "path": "plugins/_experiments/cmd-k/scratch.js",
    "content": "/* eslint-disable no-console, no-unused-vars */\nimport nlp from '../../../src/three.js'\nimport plugin from './src/plugin.js'\nnlp.extend(plugin)\n\n\nlet txt = '! i walk !ohyeah gh'\nconst doc = nlp(txt)\ndoc.searchBangs()\ndoc.debug()\n\n"
  },
  {
    "path": "plugins/_experiments/cmd-k/src/plugin.js",
    "content": "import searchBang from './searchBang.js'\nimport slashCmd from './slashCmd.js'\n\nexport default [searchBang, slashCmd]\n"
  },
  {
    "path": "plugins/_experiments/cmd-k/src/searchBang.js",
    "content": "// searchbang is a ! followed by a word\n// it's a search engine shortcut\n// !g is google, etc\n\n\nconst instaBangs = [\n  'g',\n  'gh',\n  'yt',\n]\n\nconst searchBang = {\n  /** add a method */\n  api: (View) => {\n    View.prototype.searchBangs = function () {\n      return this.matchOne('#SearchBang+').text('normal')\n    }\n  },\n\n  /** add some tags */\n  tags: {\n    SearchBang: {\n      notA: ['Noun', 'Verb', 'Adjective'],\n      color: 'red'\n    },\n  },\n\n  /** add words to the stronger, more adamant lexicon */\n  frozen: instaBangs.reduce((h, str) => {\n    h[str] = 'SearchBang'\n    h['!' + str] = 'SearchBang'\n    return h\n  }, {}),\n\n  /** post-process tagger */\n  compute: {\n    tagBangs: (doc) => {\n      doc.match([{ word: '!' }]).tag('#SearchBang')\n      doc.match([{ pre: '!' }]).tag('#SearchBang')\n      doc.match([{ post: '!' }]).tag('#SearchBang')\n    }\n  },\n\n\n  /** run it on init */\n  hooks: ['tagBangs']\n}\nexport default searchBang"
  },
  {
    "path": "plugins/_experiments/cmd-k/src/slashCmd.js",
    "content": "\n// slashCmds are / followed by a word\n// they're a way to add custom commands\n// \"/me writes some bugs\"\n\nconst slashCmd = {\n  /** add a method */\n  api: (View) => {\n    View.prototype.slashCmds = function () {\n      return this.matchOne('#SlashCmd+').text('normal')\n    }\n  },\n\n\n  /** add some tags */\n  tags: {\n    SlashCmd: {\n      notA: ['Noun', 'Verb', 'Adjective'],\n      color: 'yellow'\n    },\n  },\n\n\n  /** post-process tagger */\n  compute: {\n    tagSlashCmds: (doc) => {\n      doc.match([{ pre: '/' }]).not('#Number').tag('#SlashCmd')\n    }\n  },\n\n\n  /** run it on init */\n  hooks: ['tagSlashCmds']\n}\nexport default slashCmd"
  },
  {
    "path": "plugins/_experiments/compress/README.md",
    "content": "they say that compression and intellegence are the same thing,\nbut I'm not small-enough to understand that.\n\n"
  },
  {
    "path": "plugins/_experiments/compress/src/index.js",
    "content": "import lz from './lz.js'\nimport fs from 'fs'\n\nlet string = fs.readFileSync('../../../plugins/speed/tests/files/freshPrince.txt').toString()\n// string = \"This is my compression test.\";\n\n\n// console.log(\"Size of sample is: \" + string.length, '\\n\\n');\nconst compressed = lz.compress(string);\n// console.log(string)\n// console.log(compressed)\n// console.log(\"\\n\\nSize of compressed sample is: \" + compressed.length);\nstring = lz.decompress(compressed);\n\n\n\n/*\n[\n  text,\n  tag,\n  post,\n  pre\n*/"
  },
  {
    "path": "plugins/_experiments/compress/src/lz.js",
    "content": "/* eslint-disable */\n// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n  if (!baseReverseDic[alphabet]) {\n    baseReverseDic[alphabet] = {};\n    for (var i = 0; i < alphabet.length; i++) {\n      baseReverseDic[alphabet][alphabet.charAt(i)] = i;\n    }\n  }\n  return baseReverseDic[alphabet][character];\n}\n\nvar LZString = {\n  compressToBase64: function (input) {\n    if (input == null) return \"\";\n    var res = LZString._compress(input, 6, function (a) { return keyStrBase64.charAt(a); });\n    switch (res.length % 4) { // To produce valid Base64\n      default: // When could this happen ?\n      case 0: return res;\n      case 1: return res + \"===\";\n      case 2: return res + \"==\";\n      case 3: return res + \"=\";\n    }\n  },\n\n  decompressFromBase64: function (input) {\n    if (input == null) return \"\";\n    if (input == \"\") return null;\n    return LZString._decompress(input.length, 32, function (index) { return getBaseValue(keyStrBase64, input.charAt(index)); });\n  },\n\n  compressToUTF16: function (input) {\n    if (input == null) return \"\";\n    return LZString._compress(input, 15, function (a) { return f(a + 32); }) + \" \";\n  },\n\n  decompressFromUTF16: function (compressed) {\n    if (compressed == null) return \"\";\n    if (compressed == \"\") return null;\n    return LZString._decompress(compressed.length, 16384, function (index) { return compressed.charCodeAt(index) - 32; });\n  },\n\n  //compress into a string that is already URI encoded\n  compressToEncodedURIComponent: function (input) {\n    if (input == null) return \"\";\n    return LZString._compress(input, 6, function (a) { return keyStrUriSafe.charAt(a); });\n  },\n\n  //decompress from an output of compressToEncodedURIComponent\n  decompressFromEncodedURIComponent: function (input) {\n    if (input == null) return \"\";\n    if (input == \"\") return null;\n    input = input.replace(/ /g, \"+\");\n    return LZString._decompress(input.length, 32, function (index) { return getBaseValue(keyStrUriSafe, input.charAt(index)); });\n  },\n\n  compress: function (uncompressed) {\n    return LZString._compress(uncompressed, 16, function (a) { return f(a); });\n  },\n  _compress: function (uncompressed, bitsPerChar, getCharFromInt) {\n    if (uncompressed == null) return \"\";\n    var i, value,\n      context_dictionary = {},\n      context_dictionaryToCreate = {},\n      context_c = \"\",\n      context_wc = \"\",\n      context_w = \"\",\n      context_enlargeIn = 2, // Compensate for the first entry which should not count\n      context_dictSize = 3,\n      context_numBits = 2,\n      context_data = [],\n      context_data_val = 0,\n      context_data_position = 0,\n      ii;\n\n    for (ii = 0; ii < uncompressed.length; ii += 1) {\n      context_c = uncompressed.charAt(ii);\n      if (!Object.prototype.hasOwnProperty.call(context_dictionary, context_c)) {\n        context_dictionary[context_c] = context_dictSize++;\n        context_dictionaryToCreate[context_c] = true;\n      }\n\n      context_wc = context_w + context_c;\n      if (Object.prototype.hasOwnProperty.call(context_dictionary, context_wc)) {\n        context_w = context_wc;\n      } else {\n        if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) {\n          if (context_w.charCodeAt(0) < 256) {\n            for (i = 0; i < context_numBits; i++) {\n              context_data_val = (context_data_val << 1);\n              if (context_data_position == bitsPerChar - 1) {\n                context_data_position = 0;\n                context_data.push(getCharFromInt(context_data_val));\n                context_data_val = 0;\n              } else {\n                context_data_position++;\n              }\n            }\n            value = context_w.charCodeAt(0);\n            for (i = 0; i < 8; i++) {\n              context_data_val = (context_data_val << 1) | (value & 1);\n              if (context_data_position == bitsPerChar - 1) {\n                context_data_position = 0;\n                context_data.push(getCharFromInt(context_data_val));\n                context_data_val = 0;\n              } else {\n                context_data_position++;\n              }\n              value = value >> 1;\n            }\n          } else {\n            value = 1;\n            for (i = 0; i < context_numBits; i++) {\n              context_data_val = (context_data_val << 1) | value;\n              if (context_data_position == bitsPerChar - 1) {\n                context_data_position = 0;\n                context_data.push(getCharFromInt(context_data_val));\n                context_data_val = 0;\n              } else {\n                context_data_position++;\n              }\n              value = 0;\n            }\n            value = context_w.charCodeAt(0);\n            for (i = 0; i < 16; i++) {\n              context_data_val = (context_data_val << 1) | (value & 1);\n              if (context_data_position == bitsPerChar - 1) {\n                context_data_position = 0;\n                context_data.push(getCharFromInt(context_data_val));\n                context_data_val = 0;\n              } else {\n                context_data_position++;\n              }\n              value = value >> 1;\n            }\n          }\n          context_enlargeIn--;\n          if (context_enlargeIn == 0) {\n            context_enlargeIn = Math.pow(2, context_numBits);\n            context_numBits++;\n          }\n          delete context_dictionaryToCreate[context_w];\n        } else {\n          value = context_dictionary[context_w];\n          for (i = 0; i < context_numBits; i++) {\n            context_data_val = (context_data_val << 1) | (value & 1);\n            if (context_data_position == bitsPerChar - 1) {\n              context_data_position = 0;\n              context_data.push(getCharFromInt(context_data_val));\n              context_data_val = 0;\n            } else {\n              context_data_position++;\n            }\n            value = value >> 1;\n          }\n\n\n        }\n        context_enlargeIn--;\n        if (context_enlargeIn == 0) {\n          context_enlargeIn = Math.pow(2, context_numBits);\n          context_numBits++;\n        }\n        // Add wc to the dictionary.\n        context_dictionary[context_wc] = context_dictSize++;\n        context_w = String(context_c);\n      }\n    }\n\n    // Output the code for w.\n    if (context_w !== \"\") {\n      if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate, context_w)) {\n        if (context_w.charCodeAt(0) < 256) {\n          for (i = 0; i < context_numBits; i++) {\n            context_data_val = (context_data_val << 1);\n            if (context_data_position == bitsPerChar - 1) {\n              context_data_position = 0;\n              context_data.push(getCharFromInt(context_data_val));\n              context_data_val = 0;\n            } else {\n              context_data_position++;\n            }\n          }\n          value = context_w.charCodeAt(0);\n          for (i = 0; i < 8; i++) {\n            context_data_val = (context_data_val << 1) | (value & 1);\n            if (context_data_position == bitsPerChar - 1) {\n              context_data_position = 0;\n              context_data.push(getCharFromInt(context_data_val));\n              context_data_val = 0;\n            } else {\n              context_data_position++;\n            }\n            value = value >> 1;\n          }\n        } else {\n          value = 1;\n          for (i = 0; i < context_numBits; i++) {\n            context_data_val = (context_data_val << 1) | value;\n            if (context_data_position == bitsPerChar - 1) {\n              context_data_position = 0;\n              context_data.push(getCharFromInt(context_data_val));\n              context_data_val = 0;\n            } else {\n              context_data_position++;\n            }\n            value = 0;\n          }\n          value = context_w.charCodeAt(0);\n          for (i = 0; i < 16; i++) {\n            context_data_val = (context_data_val << 1) | (value & 1);\n            if (context_data_position == bitsPerChar - 1) {\n              context_data_position = 0;\n              context_data.push(getCharFromInt(context_data_val));\n              context_data_val = 0;\n            } else {\n              context_data_position++;\n            }\n            value = value >> 1;\n          }\n        }\n        context_enlargeIn--;\n        if (context_enlargeIn == 0) {\n          context_enlargeIn = Math.pow(2, context_numBits);\n          context_numBits++;\n        }\n        delete context_dictionaryToCreate[context_w];\n      } else {\n        value = context_dictionary[context_w];\n        for (i = 0; i < context_numBits; i++) {\n          context_data_val = (context_data_val << 1) | (value & 1);\n          if (context_data_position == bitsPerChar - 1) {\n            context_data_position = 0;\n            context_data.push(getCharFromInt(context_data_val));\n            context_data_val = 0;\n          } else {\n            context_data_position++;\n          }\n          value = value >> 1;\n        }\n\n\n      }\n      context_enlargeIn--;\n      if (context_enlargeIn == 0) {\n        context_enlargeIn = Math.pow(2, context_numBits);\n        context_numBits++;\n      }\n    }\n\n    // Mark the end of the stream\n    value = 2;\n    for (i = 0; i < context_numBits; i++) {\n      context_data_val = (context_data_val << 1) | (value & 1);\n      if (context_data_position == bitsPerChar - 1) {\n        context_data_position = 0;\n        context_data.push(getCharFromInt(context_data_val));\n        context_data_val = 0;\n      } else {\n        context_data_position++;\n      }\n      value = value >> 1;\n    }\n\n    // Flush the last char\n    while (true) {\n      context_data_val = (context_data_val << 1);\n      if (context_data_position == bitsPerChar - 1) {\n        context_data.push(getCharFromInt(context_data_val));\n        break;\n      }\n      else context_data_position++;\n    }\n    return context_data.join('');\n  },\n\n  decompress: function (compressed) {\n    if (compressed == null) return \"\";\n    if (compressed == \"\") return null;\n    return LZString._decompress(compressed.length, 32768, function (index) { return compressed.charCodeAt(index); });\n  },\n\n  _decompress: function (length, resetValue, getNextValue) {\n    var dictionary = [],\n      next,\n      enlargeIn = 4,\n      dictSize = 4,\n      numBits = 3,\n      entry = \"\",\n      result = [],\n      i,\n      w,\n      bits, resb, maxpower, power,\n      c,\n      data = { val: getNextValue(0), position: resetValue, index: 1 };\n\n    for (i = 0; i < 3; i += 1) {\n      dictionary[i] = i;\n    }\n\n    bits = 0;\n    maxpower = Math.pow(2, 2);\n    power = 1;\n    while (power != maxpower) {\n      resb = data.val & data.position;\n      data.position >>= 1;\n      if (data.position == 0) {\n        data.position = resetValue;\n        data.val = getNextValue(data.index++);\n      }\n      bits |= (resb > 0 ? 1 : 0) * power;\n      power <<= 1;\n    }\n\n    switch (next = bits) {\n      case 0:\n        bits = 0;\n        maxpower = Math.pow(2, 8);\n        power = 1;\n        while (power != maxpower) {\n          resb = data.val & data.position;\n          data.position >>= 1;\n          if (data.position == 0) {\n            data.position = resetValue;\n            data.val = getNextValue(data.index++);\n          }\n          bits |= (resb > 0 ? 1 : 0) * power;\n          power <<= 1;\n        }\n        c = f(bits);\n        break;\n      case 1:\n        bits = 0;\n        maxpower = Math.pow(2, 16);\n        power = 1;\n        while (power != maxpower) {\n          resb = data.val & data.position;\n          data.position >>= 1;\n          if (data.position == 0) {\n            data.position = resetValue;\n            data.val = getNextValue(data.index++);\n          }\n          bits |= (resb > 0 ? 1 : 0) * power;\n          power <<= 1;\n        }\n        c = f(bits);\n        break;\n      case 2:\n        return \"\";\n    }\n    dictionary[3] = c;\n    w = c;\n    result.push(c);\n    while (true) {\n      if (data.index > length) {\n        return \"\";\n      }\n\n      bits = 0;\n      maxpower = Math.pow(2, numBits);\n      power = 1;\n      while (power != maxpower) {\n        resb = data.val & data.position;\n        data.position >>= 1;\n        if (data.position == 0) {\n          data.position = resetValue;\n          data.val = getNextValue(data.index++);\n        }\n        bits |= (resb > 0 ? 1 : 0) * power;\n        power <<= 1;\n      }\n\n      switch (c = bits) {\n        case 0:\n          bits = 0;\n          maxpower = Math.pow(2, 8);\n          power = 1;\n          while (power != maxpower) {\n            resb = data.val & data.position;\n            data.position >>= 1;\n            if (data.position == 0) {\n              data.position = resetValue;\n              data.val = getNextValue(data.index++);\n            }\n            bits |= (resb > 0 ? 1 : 0) * power;\n            power <<= 1;\n          }\n\n          dictionary[dictSize++] = f(bits);\n          c = dictSize - 1;\n          enlargeIn--;\n          break;\n        case 1:\n          bits = 0;\n          maxpower = Math.pow(2, 16);\n          power = 1;\n          while (power != maxpower) {\n            resb = data.val & data.position;\n            data.position >>= 1;\n            if (data.position == 0) {\n              data.position = resetValue;\n              data.val = getNextValue(data.index++);\n            }\n            bits |= (resb > 0 ? 1 : 0) * power;\n            power <<= 1;\n          }\n          dictionary[dictSize++] = f(bits);\n          c = dictSize - 1;\n          enlargeIn--;\n          break;\n        case 2:\n          return result.join('');\n      }\n\n      if (enlargeIn == 0) {\n        enlargeIn = Math.pow(2, numBits);\n        numBits++;\n      }\n\n      if (dictionary[c]) {\n        entry = dictionary[c];\n      } else {\n        if (c === dictSize) {\n          entry = w + w.charAt(0);\n        } else {\n          return null;\n        }\n      }\n      result.push(entry);\n\n      // Add w+entry[0] to the dictionary.\n      dictionary[dictSize++] = w + entry.charAt(0);\n      enlargeIn--;\n\n      w = entry;\n\n      if (enlargeIn == 0) {\n        enlargeIn = Math.pow(2, numBits);\n        numBits++;\n      }\n\n    }\n  }\n};\nexport default LZString;\n"
  },
  {
    "path": "plugins/_experiments/markdown/README.md",
    "content": "experimental nlp on a [unified/remark](https://unifiedjs.com/) AST.\n"
  },
  {
    "path": "plugins/_experiments/markdown/package.json",
    "content": "{\n  \"name\": \"compromise-markdown\",\n  \"description\": \"plugin for nlp-compromise\",\n  \"version\": \"0.0.0\",\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"main\": \"./src/plugin.js\",\n  \"unpkg\": \"./builds/compromise-markdown.min.js\",\n  \"module\": \"./builds/compromise-markdown.mjs\",\n  \"type\": \"module\",\n  \"types\": \"index.d.ts\",\n  \"sideEffects\": false,\n  \"exports\": {\n    \".\": {\n      \"import\": \"./src/plugin.js\",\n      \"require\": \"./builds/compromise-markdown.cjs\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise/tree/master/plugins/markdown\",\n  \"scripts\": {\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"testb\": \"TESTENV=prod tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"build\": \"rollup -c --silent\"\n  },\n  \"eslintIgnore\": [\n    \"builds/*.js\"\n  ],\n  \"files\": [\n    \"builds/\",\n    \"src/\",\n    \"index.d.ts\"\n  ],\n  \"peerDependencies\": {\n    \"compromise\": \">=14.0.0\"\n  },\n  \"dependencies\": {\n    \"hast-util-to-mdast\": \"^9.0.0\",\n    \"mdast-util-frontmatter\": \"^1.0.1\",\n    \"mdast-util-gfm-table\": \"^1.0.7\",\n    \"mdast-util-to-markdown\": \"^1.5.0\",\n    \"micromark-extension-gfm-table\": \"^1.0.5\",\n    \"unist-util-visit\": \"^4.1.2\"\n  },\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"@rollup/plugin-commonjs\": \"^24.0.1\"\n  }\n}"
  },
  {
    "path": "plugins/_experiments/markdown/scratch.js",
    "content": "/* eslint-disable */\nimport nlp from '../../../src/three.js'\nimport plg from './src/plugin.js'\nnlp.plugin(plg)\n\nlet md = `is this [working](http://noitsnot.com) *again*? nope.\n\n## oh yeah\n\nand this is too\n--\nand **this** will be another section. i guess. \\`inline stuff\\` \n\n\\`\\`\\`\nblock stuff\n\\`\\`\\`\nafterwards\n\n> Alpha bravo charlie.\n\nand then a cool:\n* list 1\n* list 2\n* list 3\n\nhello ![alpha](https://example.com/favicon.ico \"bravo\") world\n\n`\n\n\n\nmd = `| cool | also | here  |   |   |\n|------|------|-------|---|---|\n| one  | two  | three |   |   |\n| four | five |       |   |   |\n|      |      |       |   |   |`\n\nmd = `ok **cool** after.\n\nbelow`\nconst doc = nlp.fromMarkdown(md)\nconsole.log(doc)"
  },
  {
    "path": "plugins/_experiments/markdown/src/Wrap.js",
    "content": ""
  },
  {
    "path": "plugins/_experiments/markdown/src/parse/crawl.js",
    "content": "// [a, b, a1, b1]\nconst breadthFirst = (root, fn) => {\n  const list = []\n  const queue = [root]\n  while (queue.length > 0) {\n    // get first\n    const node = queue.shift()\n    if (fn) {\n      fn(node)\n    }\n    // add to list\n    list.push(node)\n    // add kids to queue\n    if (node.children) {\n      node.children.forEach(n => {\n        // n._cache.parents = node._cache.parents + 1\n        queue.push(n)\n      })\n    }\n  }\n  return list\n}\n\n\n// [a, a1, b, b1]\nconst depthFirst = (root, fn) => {\n  const list = []\n  const queue = [root]\n  while (queue.length > 0) {\n    // get first\n    const node = queue.pop()\n    // add to list\n    list.push(node)\n    // add kids to queue\n    if (node.children) {\n      node.children.forEach(child => {\n        queue.push(child)\n        if (fn) {\n          fn(child)\n        }\n      })\n    }\n  }\n  return list\n}\n\nexport { depthFirst, breadthFirst }"
  },
  {
    "path": "plugins/_experiments/markdown/src/parse/index.js",
    "content": "import { fromMarkdown } from 'mdast-util-from-markdown'\nimport { gfmTable } from 'micromark-extension-gfm-table'\nimport { gfmTableFromMarkdown } from 'mdast-util-gfm-table'\n// import { frontmatterFromMarkdown, frontmatterToMarkdown } from 'mdast-util-frontmatter'\n\nconst parseMd = function (md) {\n  const tree = fromMarkdown(md, {\n    extensions: [gfmTable],\n    mdastExtensions: [gfmTableFromMarkdown]\n  })\n  return tree\n\n}\nexport default parseMd"
  },
  {
    "path": "plugins/_experiments/markdown/src/parse/toPlaintext.js",
    "content": "// import { depthFirst, breadthFirst } from './crawl.js'\nimport { visit } from 'unist-util-visit'\n// import uuid from './uuid.js'\n\n\nconst shouldBreak = {\n  heading: true,\n  paragraph: true,\n  code: true,\n  thematicBreak: true,\n  blockquote: true,\n  break: true,\n  image: true,\n  table: true,\n  tableRow: true,\n  tableCell: true\n}\nconst skipText = {\n  code: true\n}\n\nconst toPlaintext = function (tree) {\n  const texts = []\n  let current = ''\n  let startId = null\n  visit(tree, null, (node) => {\n    // n += 1\n    // node.id = node.type + '|' + uuid(n)\n    // console.log(node/.type, '|', node.value)\n    if (current && shouldBreak[node.type]) {\n      texts.push({\n        startId,\n        txt: current,\n      })\n      current = ''\n      startId = null\n    }\n    if (node.value && !skipText[node.type]) {\n      startId = startId || node.id\n      current += node.value\n    }\n  })\n  // add last one\n  if (current) {\n    texts.push({\n      startId,\n      txt: current,\n    })\n  }\n  return texts\n}\nexport default toPlaintext"
  },
  {
    "path": "plugins/_experiments/markdown/src/parse/uuid.js",
    "content": "/*\nunique & ordered term ids, based on time & term index\n\nBase 36 (numbers+ascii)\n  3 digit 4,600\n  2 digit 1,200\n  1 digit 36\n\n  TTT|NNN|II|R\n\nTTT -> 46 terms since load\nNNN -> 46 thousand sentences (>1 inf-jest)\nII  -> 1,200 words in a sentence (nuts)\nR   -> 1-36 random number \n\nnovels: \n  avg 80,000 words\n    15 words per sentence\n  5,000 sentences\n\nInfinite Jest:\n  36,247 sentences\n  https://en.wikipedia.org/wiki/List_of_longest_novels\n\ncollisions are more-likely after\n    46 seconds have passed,\n  and \n    after 46-thousand sentences\n\n*/\nlet index = 0\n\nconst pad3 = (str) => {\n  str = str.length < 3 ? '0' + str : str\n  return str.length < 3 ? '0' + str : str\n}\n\nconst toId = function (n) {\n  index += 1\n\n  //don't overflow index\n  index = index > 46655 ? 0 : index\n  //don't overflow sentences\n  n = n > 46655 ? 0 : n\n  // //don't overflow terms\n  // i = i > 1294 ? 0 : i\n\n  // 3 digits for time\n  let id = pad3(index.toString(36))\n  // 3 digit  for sentence index (46k)\n  id += pad3(n.toString(36))\n\n  // 1 digit for term index (36)\n  // let tx = i.toString(36)\n  // tx = tx.length < 2 ? '0' + tx : tx //pad2\n  // id += tx\n\n  // 1 digit random number\n  const r = parseInt(Math.random() * 36, 10)\n  id += (r).toString(36)\n\n  return id.toUpperCase()\n}\n\nexport default toId\n\n// setInterval(() => console.log(toId(4, 12)), 100)\n"
  },
  {
    "path": "plugins/_experiments/markdown/src/plugin.js",
    "content": "// import { convertToHtml, parseHtml, printHtml } from './html/index.js'\n// import { convertToMd, parseMd, printMd } from './md/index.js'\n// import { fromMarkdown } from 'mdast-util-from-markdown'\nimport parse from './parse/index.js'\n\nimport toPlaintexts from './parse/toPlaintext.js'\nimport { visit } from 'unist-util-visit'\n\nconst cleanup = function (tree) {\n  let n = 0\n  visit(tree, null, (node) => {\n    node.id = String(n)\n    n += 1\n    delete node.position\n  })\n  return tree\n}\n\n\nexport default {\n  lib: {\n    fromMarkdown: function (md = '') {\n      let tree = parse(md)\n      tree = cleanup(tree)\n      // console.dir(tree, { depth: 8 })\n      return toPlaintexts(tree)\n    }\n  }\n}"
  },
  {
    "path": "plugins/_experiments/sentiment/README.md",
    "content": "experimental rule-based, compressed-data sentiment analysis by Scott Cram\n"
  },
  {
    "path": "plugins/_experiments/sentiment/package.json",
    "content": "{\n  \"name\": \"compromise-sentiment\",\n  \"description\": \"plugin for nlp-compromise\",\n  \"version\": \"0.0.0\",\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"main\": \"./src/plugin.js\",\n  \"unpkg\": \"./builds/compromise-sentiment.min.js\",\n  \"module\": \"./builds/compromise-sentiment.mjs\",\n  \"type\": \"module\",\n  \"types\": \"index.d.ts\",\n  \"sideEffects\": false,\n  \"exports\": {\n    \".\": {\n      \"import\": \"./src/plugin.js\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise/tree/master/plugins/sentiment\",\n  \"scripts\": {\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"testb\": \"TESTENV=prod tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"build\": \"rollup -c --silent\"\n  },\n  \"eslintIgnore\": [\n    \"builds/*.js\"\n  ],\n  \"files\": [\n    \"builds/\",\n    \"src/\",\n    \"index.d.ts\"\n  ],\n  \"peerDependencies\": {\n    \"compromise\": \">=14.0.0\"\n  },\n  \"dependencies\": {\n    \"efrt\": \"^2.7.0\"\n  },\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"@rollup/plugin-commonjs\": \"^24.0.1\"\n  }\n}"
  },
  {
    "path": "plugins/_experiments/sentiment/scratch.js",
    "content": "import nlp from '../../../src/three.js'\nimport plg from './src/plugin.js'\nnlp.plugin(plg)\n\nconst arr = [\n  \"the acting was terrible\",\n  \"these pretzels are making me thirsty\",\n]\n\nconst res = nlp(arr[0]).sentiment()\nconsole.log(res)\n"
  },
  {
    "path": "plugins/_experiments/sentiment/src/data/_pckd.js",
    "content": "/**\n* pattern_en_packed\n*\n* Variable containing polarity, subjectivity, and intensity scores for selected opinion-based words in English, compressed with efrt 2.7.0\n*\n* @author Scott Cram\n*\n* Original version:\n* @author Steven Loria\n* @see {@link https://github.com/sloria/TextBlob/blob/dev/textblob/en/en-sentiment.xml|en-sentiment.xml} \n* \n* From xml file above, multiple occurences of the same word were replaced with single instance, and values were averaged to four decimal places.\n* Resulting data was trimmed so as to only contain polarity, subjectivity and intensity scores.\n* All apostrophes removed.\n* Added all words from negation array below (with dummy values same as \"wont\", since they won't be used.)\n* Converted to JSON object.\n* Format for entries: \"word\": [\"i1.0\", \"p0.0\", \"s0.1\"]\n* i denotes intensity score\n* p denotes polarity score\n* s denotes subjectivity score\n* \n* Alternative versions:\n* @see {@link https://github.com/NaturalNode/natural/blob/master/lib/natural/sentiment/English/pattern-sentiment-en.json|pattern-sentiment-en.json (Another English language version)}\n* @see {@link https://github.com/NaturalNode/natural/blob/master/lib/natural/sentiment/Dutch/pattern-sentiment-nl.json|pattern-sentiment-nl.json (Dutch language)}\n* @see {@link https://github.com/NaturalNode/natural/blob/master/lib/natural/sentiment/French/pattern-sentiment-fr.json|pattern-sentiment-fr.json (French language)}\n* @see {@link https://github.com/NaturalNode/natural/blob/master/lib/natural/sentiment/Italian/pattern-sentiment-it.json|pattern-sentiment-it.json (Italian language)}\n*/\nexport default \"i1.0¦0:N2;1:MG;2:N5;3:MX;4:M7;5:MQ;6:MP;7:M3;8:MY;9:KB;A:M1;B:JE;C:LP;D:L2;E:IX;F:II;G:KX;H:JO;I:IO;J:MW;K:LC;L:L0;aJTbIOcFQdE7eD0fBNgAShA7i8Wj8Rk8Pl7Xm6Sn6Io63p4Zqu4Vr46s22t1Hu0Fv09wPyM;aNellM4oungM;!er,iD;aawwnnnn,rn;a00eWhUiRoMro3tf;manJ0nPodKHrMu3Jw;kmanli89sNthM;!leJLwDFy;e,t;deCDky,t;de,lNnMse,tI;!ni3s;d,li3;addupwitdM2iMo6;ms9te;aOiN0lMre2st2Nt;coJLl-M;advis0intLVo3V;k,ltFB;cGSnPrOsM;nt,teM;!d,s;m,y;!ts;aPeterCiNoDDulM;gC5nG0;bCCcMoFLsu1t1vLL;io7tim;cu5JgA7pMrGst;id,orif5;gl0LltiK8nPppErOsMttE;eMu1;d LZfBleIW;bCinEK;a0Fb0Cc09d08e05f01grL5hYiVknown,likeI7nUorigF5pPreaOsNtMusu1w0;hink4race4;alt0chool0ettK8tirr0;d,liH;aL9lPrM;eNoM;ceDKpKD;cedeLZdi8B;ay4easa2;ec5Hotic0;l5Ompor8NnMq9Rvers1;spir0teM;lliFArrupt0;aNeM;altEHsiDP;mpG5pGG;aiOoMruitfB;cJErM;gett4tunateG5;r,t04;ngaGNvJ4xM;cell0pM;eUlHQ;eserv0ign78;ared-f68h85ivil,oMrit9ut;mMntroEWok0;fFKmGR;eNlMraH6;emLHinH8;fitKliHT;b6dultBPffeMnswFQppeJEsham0vow0waIA;ct0;iFLyM;!-duckJD;a05e01hXiVoSrNwMyp9;ist0o-dimen4I;aPeOiDKoub1AuM;e,tM;hfB;men8Hn9C;diESg5pp0;il1UneFpNt1uM;cIZgh;!-not9Uic1;dy,gGRny,reMt3U;d,soHU;anks,eOiNoughtMrillJ;-provoGPfB;ck,n,rd;atr9mHJoret9;chn9dGen1YnOrM;min3HrM;est5Di7X;!se;leKOme,steF;a1Mc1Je19h14i0Yk0Wl0Tm0Qo0Jp0DtYuNwMympathI6;e1Fi3N;bVcRddI3ffQit4pNrMspensH3;e,prisJre1;erNportiM;ng,ve;!b,fi8Xi57natD9;e3QocaK;ceNh,kM;erBJs;e2XssM;!fB;conscGjeC0norm1seqJOt6urbC;aWeTiRrOuMyliD;mb6nEWpidM;!iI;aMetCOiG1o3utK;ightMnH6;!forGZ;ff,nkM;er,s;adNll9SreotypM;ed,ic1;faJ3y;bBHinFle,ndaKArNtM;e-suppo57ic;k,tM;i3li3;aniDeOiritNlendJ2oMrightFW;ntanD2of;ed,u1;cMnt;iMtac2N;al,f5;bEci1ftRlPphOrLuM;nd,rHWthM;ern;ist9Hom28;e,iM;c91d;!-boBH;aNiMooAW;le6W;ll6Xrt;iNoM;pE3w;ck,gF6p7A;ept9iM;ll0ttiD;ckQgnifica2lPmNnMxth-graFH;ceG7g6istEks;il8YplM;e,iH;e2ly;!eDS;aPeEit,oNriMy;eDAll;ckJd7Brt,uMweL;ld2;dy,ky,llI1m,peFrp;aUcRizurBDlfQnOrNv2SxM;u1y;io7mE8;sMtim93;aCLiA;-acKiD;!ondNrMuFR;et;!aLhaHH;mFsI0;aMum;rMtGN;ey,y;dCPfe,me,rcaHtisM;fMyfi3;i0yi3;a07eTiQoNuM;de,iH5r1sG6thF;b0Afl,hypnol,maFPse,uM;ghMnd;!aFF;ch,dicu88ghtNp-oMsk-free,veK;ff;!-E2iHF;aYcXdWfresGAgUhaDlTmSpQsNtardMwarFS;!ed,s;ourcERpM;ectMoC2;ab6fBiIR;eMut4;lBCtiA;ark4inis2Wo8;atHWe3YigG;rets,uM;l7RrgitAE;!eeGWoubt4uI9;e2ogniz4;dy,liHsS;nNre,uMw;co7ncAL;coHEdom,k;estiOiM;ck,et,rC0xM;ot5;on4;a0Ie0Dh0Bi08l03oXrOsychoNuM;bl5re,taA;lFFt5;eRiQoM;fOlix,miNpMud,vA0;aganda,er;ne2si3;es0Ui1EouG9;ceFmaLor,sBSva8;acA6ciNdi3TgTse2tMvG;e2Sty;o7se;et5iPlOor,p0AsNtentMwerCR;!i1;iAsHH;ar,it9;gMntF;na2;aPeNodM;!di3;asMonaH;a2ed;cGBin,titud9IusH9;nMo7ty,vot1;heaMk;ds;antasmagMenomen1ilosoph80ys9;or5;aPeviDppeLrM;fe8MpMsAO;etuMlex0;alCW;cDCky;infBlRrNsMthEC;sioFDt;aOtiM;al,cM;ul6F;de,llel;e,p4;bYccaXdd,ffVkUld43nCNoz90pSrRthEutOverMwn;-the-top,aMbGKexcit0whelFH;ll;dF8rageNsM;iCPt5F;d,o7;di99ig9Fthodox;enC4po6ItimM;um;!ay;beFNeM;rs;siA1;ed8KjecAsMvG;e7Stacl8M;aSeQiGNoNumM;b,eFP;!b6nvio9CrNstalg5tM;!ab6;m1wegiC;ar,cMedFgaAithErve-racBWt,vEw,xt;essaL;iGKk0meFrrF1sIturalNuM;ghIseEO;!iH;a0Ee05iZoRuMysterG;ch,g4OltiNnda4CsMzak;ic1t2;lMp6;atM;er1;dQnPrNst,tl42uth-waM;te6G;alMe,on6U;!iDR;k3Yosyllab5;!eM;rMst;a8n;dQghIlPnNsMx0;er4fiCGplac0si3;dMim1or,us;-boggDKleC4;d,i9D;!d6;aSdiPlodrama,m7HnOrNsMtaphor9xDP;meriDFs4H;ciFe;a8Lt1;caNev1ocrM;e,iI;l,tiFR;gEnMsB7;!ingAI;d,gVin,jUlSnPrOsNtM;hemat9uC1;culi3IsiFMte4K;k0ri0ti1ve4V;nerB1oNq2VyM;!-sid0;ri1;adroit,eM;!vo83;or;ic9EnifiM;ce2;a09e05iVmao,oNuMyr5;c8Ysh;c1g9lSnQo9HsePuOvMw,y1;ab6eMi3;!d,ly;d,sy;rs,s;eAMgM;!-wiAB;!ol;ab6ceUfelSghtQkOmNnguiHtMve8Z;eCAt6;it0p;ab6eM;d,ly;!-heaM;rt0;iMo3;ke;ntG;aOftNgMn6Jss1P;al,endaLib6;!iD9;dBNst;me,rge1Xst67tNughMwfBzy;!ab6ed;eMtE;!r,st;ey,iM;ll0nd;aOewiDoy,uM;stMveni6;ifi0;ckassMil,mm0pane8M;!es;c0Vd0Rll0Qm0HnPrMs2tB2;iDon5rM;eleMi5O;va2; 0Ba0Ac06d02eYfWgenGhuma25i45nUsStMvenA;eMiBMrigui3;llOn8ErM;e57naM;l,ti7C;ectu1igentM;!sia;a1YecuAGpirMta2ulting7Z;a77i3;er,oM;ce2vaA;aMlexDJuriaK;mo7nti6tuC2;luOvQxpM;eMlic4reDF;d5LrieCV;ct4;eOiNomM;it4;e,spens4vidu1;ciph6Qpende2;alc8MoMredD9ur4;heDOmpNnMrruX;sistenci5Gven5D;ar4e6L;ppo33rticu90uspicG;good tMsto8W;as8;aginaAbeci6itati88mTpM;aRePlicOoMressCP;rMssD0;ta2;at0it 7X;cc4rceM;ptCW;s31t51;ane2en7G;!eg1;eOioM;cy,tM;!ic,s;al,ntifi4;ky,on5y;aVeTiSoOuMyster9;ge,mM;an,b6oBZ;llBGnestOrriMt;b6fM;ic,yi3;!-to-god;dd9TghSlarGnd6Pstor3Bt-and-mi8Z;aMro5;lt4YrtfeBVvy;d2haTlf,ndSpQrOs2teNve2zarM;do7;!d;dMsh;!er;hazaCEle8RpM;i6Dy;-held,so8Yy;!haM;!haM;!ha;a0Ee0Bi0Al07o02rNuM;ard0ilI;aYeUiRoPrNuM;d6Veso8R;!rM;!r;ss,tesqM;ue;eNm,pMtI;pi3;f,vo7;atNeMy;k,n;!eM;r,st;ndMph5tu0Z;!iloqAU;dforsak8Yld8YoNrM;g4Ny;dMfy;!y-gooM;dy;ad,oNuM;ey;b1om;a2ft0mmic5F;nMrmCtt4;er6Ct6uiM;ne;meMrgantuCw5By;!changE;*c6Wa0Le0Ii0Al05o00rSuM;ckQllOnNrtMtu7Z;hEiBK;!ny;! of life,-M;bodi0fleBFleng2B;!ed,i3;agi6ePiMostbitt8DustratJ;end6VgNnM;gy;h1Eid;eNnMqA4sh;ch;!-thin6JstM;an85;llowi3rMur21; su7KcOeign,getNmMtu97;er,ula5;fBt4;ed,ib6;aOippa2uMy;ffMid;!y;s34t,wM;ed,le72;c43endiDftie1RlSnPrNtMx0;!ti3;m,stM;!-st10;aNeM;!-loo62;l,n7U;l0t2V;aNeb6licMma6veriDw;ito7;rfB;bVci1iTke,l4TmRnQrOsNtIultFvorM;ed,i8;cinaKt;!-out,cMthermo92;e,ic1;at5taH;iliMo7;ar;lMnt,r;!ed,s,u6R;l0rNuM;lo7;ic8F;a0Qc0Nd0Lerie,ff0KgoiHl0Im0Gn08p5qu1r06ssen05th9uropeCv03xM;a00cXhWot5pSquiRtNubeM;ra2;eOin1BrM;aMe6I;!ordi2D;nUrn1;si8;eMlo6OresS;ct0nRriM;e90mM;ent1;au0YilaraK;eMitJu43;l2Ip31sM;si9U;ct,ggM;er7X;eryday,iM;de2l;ti1;ot5ron2CstwMudi8;hi6;dRerg6LgQigm5SjoyPlighOoNtM;ertai3OhusiaHi5Z;r64ugh;te3M;!ab6ed,i3;a3YliDros77;eaMle5K;ri3;o2KpM;ir9ty;abo8UeM;ct,ga2m2O;ecAi3;gy,uM;ca2E;centr5oM;l6DnomM;ic35;rlMsy;iEy;a11e0DiXoSrQuMynam5;dsvil6e,hNllMmb,sIuuh;!s;!hhM;!h;aMeadfBi0own0unk,y;g,m52;cum28es2meHnOubNwM;dy,n;le,tfB;e wiMt;th;a00dZffXgit1mWrUsMurn1;aRbelie06court1De0LguQhone78lik0possePtM;aNinTraug3XurM;bi3;nt,st4K;ss0;stJ;bl0ppointMst7I;ed,i3me2;eMty;ct;!-witt0;e8FiM;cu7Fde2;act5nt;lect1pha3A;ad08bau07c05ep,fZlVnomina1GpSsPtaOvMxtr1;asMelop0o6W;taK;il0;erNpe7OtrM;oyOucA;vi3;lNressM;!i3;or4;iMuxe;cNghtM;ed,fB;a8io7;eOiMt;cMni8;ie2;cMn2G;atM;es;e2reM;as0;ch0;!ly,pC;iNnge6Lrk,zM;ed,z55;ly,nI;a27e21h1Li1Kl17o01rTuMyn9;lPn1LrOsNtM;e,ti3;hy;io7re2si7F;iNtM;ur1;naL;aSeRiPoOuMyi3;ci1dMel,shJ;dy,e;ok0ss;mMsp,t9;in1;aAd6Qe1A;fIp,zy;ar1Ac0Qhe74l0Om0BnSol,rNsmopolitCuMw,zy;ld2ntFrtQ;iacPpNruptM;!ib6;o6HuM;le2;eo7;c00fYsUtPvM;eNinM;ci3;nZx;ePinOrM;iv0oM;versi1;ge2;mpo3Xst4;cGecr4SiMta2um41;dNsM;te2;er4;iMusJ;de2rm0;avo-convex,eMi0Ore8;iv4pM;tiM;on1;a,e-at-4fXic0DmVpM;eTlNreheM;ns5W;ainQePiM;c4EmM;enM;taL;te,x;ed,t;l3Ote2;ercialMon;!ism;ort4;d,lect5LoM;rfBss1;ky;aVeSoPuM;elessNmM;sy;ne1Y;s0udM;-covMle1W;er0;aMvE;nMr;!ly;ssMustrophob5;icMy;!al;nem1Qviliz0;aXeTiPopOrNurM;ni3;istiCon2N;py;ck2DlNneMtch46;se;diDlM;i3y;ap,eM;rNsM;ie3Sy;fBy;llenOngeFrM;acteriHiMmi3;sm1Bt4;gi3;aQlebr38ntOrM;emoni1taM;in;er,rM;al,ic;seF;cophoWlUnTpRrPsNtMuH;c2Bh36;t-irMu1;on;diac,eM;fBle0W;ab6tivM;aKe;d3Ct;cMm;ul4;no7;a0Ie0Ei0Cl03oZrNuM;d1Hsy;aUeathtaTiRoNuM;sh0t1;adMk1F;!-M;miM;nd0;ef,gMllia2tiD;ht;ki3;insiNsh,vM;ado,e;ck;diOgg0ilerpNld,nny,otleg,rJundF;le0A;la8;ly;aSeRi29oMue;nPodM;stNthirsIy;ty;ain0;de;ak,ch;ck,nMst0ta2;d,k;gMograph5ttEzar08;!gE;autifBco24efy,hi1YlNst,ttEwitc17;er;iMov0;ev4;ck,dRlmy,nQrOsNttlM;efB;e,ic,s;barMe;iCo7;al,d0g-up;!neM;ss;b34c2Qd2Aeriform,f20g1Whw,i1Tl1Gm15n12p0Qr0Gs0At06uXvVwNxiomM;at5;aSeQfBkOwM;!wM;!w;wa32;ul;aLsoM;me;re;ail4eraMid;ge;rea8strTtM;hPiHoM;biograph9noM;mo7;st5;eNorM;itaA;nt5;aliC;mospher5rocGtMyp9;enMracA;da2tiM;on-getKve;cQhPiCkew,sumpAtM;oMu8;nis04unM;di3;en;et5;bitUchaeRduo7e2oQre14tM;eOiM;fiMst5;ci1;siC;us0;olM;og9;ic1;raL;hon5pMt;aVeSlRoQrM;eciat1IoM;acNpria8xiM;ma8;hi3;r0Usi8;aud4icaA;aNtiM;zi3;li3;llJre2;gMnoyJxG;erMry;!ed;aRbPeNuM;si3;n4rM;icC;itG;io7;tMzi3;eurNoL;ry;!iD;sh;aWcohVg08iSlNterM;na8;-arouPeNusioM;ns;g0viM;at0;nd;enMve;!aK;ti3;ol5;rMs;mi3;nt,rM;ed,heM;ad0;ed,haOiNlM;ow;le,taA;st;fTloSoremPrM;aNicC;an;id;enM;tiM;on0;at;ab6irmaAlM;ue2;ama2dZeWjectiv1ministr4orUuTvM;aReM;ntuOrM;saAte2;ti0N;ro7;us;nc0;lt;ab6i3;ab6;pt,quateM;! M;to;ictMl0;ed,i0C;adem5cSquaiRross-the-bQtNuM;a8te;iNu1;al;ng,on,ve;oaX;nt0;eOomplNuM;ra8;ish0;ssM;ib6;le;ic;horYle,oXrUsNuM;nda2;enRoNuM;rd;lu8rbJ;ed,i3;ng;te;ce;iMupt;dg0;ed;ve;re2;nt|p0.0¦0:3I;1:2U;2:35;3:3K;4:3A;5:3E;6:3B;7:2W;8:2A;9:3J;a36b2Tc28d23e1Tf1Jg1Gh1Ei17j16key,l0Zm0Pn0No0Kp0Dqui0Cr06sQtJuFvDwByA;el3Foung1;estXhi3DoA;man2UoP;aAeter4isu0;porSri7st;ltima39nApp1rb4tt1;aBcr0AiAw6;nterrupt6vers0;vow6wa1S;eDhBiny,oAradi2B;p2t0;eAiJ;atr2m2Uoret2;chn2enBn,rrA;est0Jif3;!age;ame,eNhMiKmall1oHpFtaDuA;bBch,dAspense0L;den;consci7seque8urb4;ndaArK;rd;an29ecAiritu0;if3;lButhA;ern;e,id;le8mA;iIp5;e1ort;cond,lf-acAver0;ti9;eBomant3uA;r0ssi4;al1Yce8d,guClAminisce8spe2P;atAigi7;ed,i2T;lar;et,rky;aFers1IhEi7oCrAsych29ubl3;ese8iAop1;or,va29;igna8lAssib5t0R;it2;antasmagor3iloso20ys2;lp2Crallel;bBccasi1Bn1MpAutsi1Overall;en,posi23;je2Bvi7;ak6eAorwegi4umer7;cess0Wt,xt;aGeEiCoBuAysteri7;ltip5s2;de0Yr0;dAx6;!d5;diAtaphor2x1X;c0ev0;le,nAr0Cs09themat2;oAy-sid6;ri0;aCeBike17oA;c0w;ft,ss1;rg1stCtBwA;ful;er,t1;!i9;apa0Tew0Z;mFnAr0Yt1C;calcul1NdBevCi00n1s0JternaA;l,ti0M;epende8iBomA;it1K;e,vidu0;men0Nplicit in;and-held,eartfelt,istoricAum4;!al;eBia8lob0rA;a0Teek,itty,o07;n13rm4;aIema5iGluid,oErBuA;rth1tuQ;agi5eA;eAnch;-thinki9standi9;llowi9rmAurth;er,ula3;c04naA;l,n05;bricat6ci0rthermost;arli1ccentr3mo01nGqu0rstwhi5sDurope4xtA;eAra;nArn0;si17;pecial09sA;enA;ti0;gl05oBtiA;re;rm7ugh;ai03eCiBoAynam3;cumentGmest3ub5;ffere8git0urn0;ep,finiteAnominaOxtr0;!ly;athol3entrThPinem08lass2oFrDuA;linBnni9rA;re8si0T;ary;it2oAuK;ok6ss;arMmmerInCrpoBsmopolit4untleA;ss;ra08;cCsA;ta8;nt;avo-convex,epA;tiA;on0;ci0;iBrA;isti4onX;neA;se;al,ic;aKiGlEodiDrA;iAoad-mind6ush6;ef,tA;ish;ly;ank,onAue;de;gBograA;ph3;!g1;er;ck,nd6rbar7s3;ous;boXcSdOfKgJlternaImerLpproachi9rchaeGsi4tEuBxiomA;at3;strBtobiograA;ph2;ali4;mosphAyp2;er3;olog2;ic0;te;low;loat,oremention6rA;ic4;an;ed;diCministrA;ab5;le;ctiF;adem3tA;i9u0;al;ng;ic;ve|s0.1¦a0Cb08c00dXeTfPgOhNiLlJmDobjCp8respCs4t2un1w0;ants,orR;affect0Fco00origin0HprocXw0F;e0heoretTitular,wo-dimen8;chnSrrestE;e2ileHlippLmiQo1peHt0ucceeds;artKumbP;lKur0A;amXlf-actI;hantasmagor05olitNro0sychologN;fes1p0;aganda,er;sion07;ec2;a2edica1i0;lita00nus;ti04;le,n0ture;o0y-sidZ;ri00;augh,i0oses;nguiDteraU;cy,mplicit in,s0;nt;inderTumF;ettab6rey;ew,iftie2lu1ollow0reestand0;ing;id;th;mpir2rstwhi1xt0;ernOra;le;icM;extrLisposs1ome0rownJulls;stF;essH;a6ent5lo3osmopolit2r0ulturI;o0u7;okE;an;sCud0;less;er,r7;nt,thol6;a2ig,lue,o1ru0;sh7;dily,gg6;nd5re;bo7ct5djectiv6float,ll3mato2p0;hon0preciat3;ic;ry;eg0usions;ed;ion,u0;al;ve|s0.0¦0:1O;a1Gb1Cc10d0Re0Qf0Mg0Hh0Di09j07kill1Tl03mWnUoTpRrMsFtAu6v4w2y1;ellow,ou0J;aste1estHhi1Nooden;!d,s;a1eter1Oisu0;cuum,porif1R;n2pp0Fr1seZ;b1Lin0R;explain1Li1;nterrupt1Kvers0;e3h1oilet,rapp1J;e1i7;atr1Bmat1K;en1n;!aB;adi0Te6i5outh4pani0Yt2u1;burb1Ccce0O;anda1retch1C;rd;ern;nks,xth-gra0V;cond,izur0Ever0;e4o2u1;r0ssi15;hypnol,ugha1;ge;d,ha0Nlat0C;arallel,hiloso0Rr1;esent,ior,ov07;bstacl06ffers,pposi0Wverall;e1orwegi0Y;t,xt;a6e4id3on2u1;ltipWs0Qzak;key,osyllab0Y;!dU;di1x0R;c0ev0;rAthemat0L;a1eft,oc0;sti0Rt2w1;ful;er,tF;a1ewi06;il,pa03;mitation,n1ri04t0A;consistenciPdie,i2terna1;l,tM;ti0;a3i1;storic1t-and-miQ;!al;nd-held,rd5;amecha3e2lob0r1;eek,oM;n01rm09;ng1;er;a3inan3o1rench;rm1urth;er,ula08;ci0;ngliNurope02;aily,e4i3o1;cumentBub1;le;git0urn0;fec3nominat2stroy1;!iZ;ion0;at1;es;ardiac,h9lassNo5ro4u1;lin2rs1;ive;ary;ss;m1ncavo-convex,rporaK;a,mercial1;!i1;sm;i2r1;istiIonC;nese;ack,iographKl2oilerplaDriti1;sh;ank,on1;de;bsence,cEfAlterna9merBpproachiFr5siCtmosph4u1;str2tobiogra1;ph5;ali9;erC;chae1rest;olog1;ic0;al;te;oremention3r1;ic1;an;ed;adem2ti1;ng;ic|s0.9¦0:1T;1:1N;2:1M;a1Cb14c0Qd0Le0Df07g06h03iXjUkind,lSmPnNoMpJrGsBt8un4w3;elcome,ise,orth12ro1Q;asham0befit0Pchas1UdignTexcell0f5grad0ha4necess0Hpr3;eced7opiQ;mper0ppy;aith16ruit16;a3ren0O;l3ste0W;ent0;ensi1Jp6t5u3;bnorm0Aper3rpris0;fiOior;at14ereotyp0;ectac8ontane1;a4e3ofl;doub0Jleva2source0W;nk,re;ain0Uerplex0leon00o3rolix;p3wer0L;ular;bedIptimum,verexcit0;a3o0X;me0Hugh0N;annerly,i4o3;de0Vtley;gh0Knd0E;ate0TenCicen3ong-wind0;ti1;ackass4ust3;ifi0;!es;mpat7n3ron0L;auspici1credi0Md5exp4huma3tellige2;ne;ed4lica0K;ispensa0JomiZ;ie2;a4ero0Fonest3uge;!-to-god;nRte,zard1;orge1randiloque2;a7i6l5r4ull3; of life,-fledg0;ee-thinki0Kingy,ust8;ippa2y;ll0rst-st0H;bl0ir,nt7vor0;conomic9le7n5rot05x3;hila3perienc0ubera2;raE;orm1thusi3;ast01;ct,ment3;ary;al;anger1e4o3;ne with,ubtR;bauch0ft,l4p3;loraWressi05;ica09uxe;aDhBiviliz0lassy,o8r4ut3;ti02;a5u3;d3sB;dy;fGzy;cky,ntes4r3;pule2ruptiN;taM;ill3urniU;iTy;re4st-iron,tc3;hiR;less;a8eefy,l5o4ra3;insick,sh;nny,otleg;ast0ood3;thirs3y;ty;rbar1ttle3;ful;bsoKcJdCfAgha9hw,lgBmaziHnnoyiHpp7rtesian,s5ttenIuthoritaIww3;!w3;!w;cet3tuJ;ic;alliClauda3reciaD;ble;st;firmaAra3;id;dic8ept,o6ve3;ntur1rte2;nt;ous;ri3;ng;tive;ross-the-board,u5;lu4rb0;ed;te|s0.3¦aTbScPdMeHfEgreen,haha,lDmCpAre9s2thought-provokVundeservOv1w0;haddupwitdQonky;apid,e6;e3h0ucks;a1o0;rt,uldA;m,peless;cond0rmon;a0hand;ry;al,gurgitates;ar8erson9hilosophJi0reachy;nk,ous;asculine,odern;ow,ush;ail1luff,reque0;nt;!ed,s,ure;ar3ssen1x0;cruciating2ploitE;ti0;al;ly;evelop1is0;abl0tinct;ed;hitch1onc0;eiv7rete;at;est,usy;d2lienat1xiomat0;ic;ing;ministr1ult,vers0;ative;able|s0.2¦a09b06c02d00eZfVgrief,haUiRjoy,lQmKnHoFpDrAs8t6u3w0yarn;as0Fe1iAo0;nt,u02;ll-intentionVre0D;gly-duckl03n0s3;answerTe0fortunateS;ngag01ven;hanks,on0rouM;el00;milPob06poof,ta0will;inlYte-supportO;e1obot00ui0;ns;dunda03grets,moZ;erpetualJiBl0rofiterT;atitud1od;ld,oz0;es;e1o0;!t;ithVvV;e3i1u0;ch,ltilaterSstU;nor,s0;fire,placA;diocri0lodrama,ntPtaphorO;ty;augh7egNosers;mpercepti1n0;fatuat5telligentsia;ble;dLppinDsLveL;ix2orc2rustrat0un;ed,ing0;ly;ed;conomBrudiC;evoid,idFo0;esEnt;hoppy,inemat8luelessn5o0;mplain1u0;ldB;ed,t;adn1udd0;ing;ess;glow,i6ng5re6typ3u0;rea1tist0;ic;te;ic0;al;er;nt|s0.125¦bas2f1independent,occasional,s0;ame,pecif1;lat,oreign,uture;ic|s0.5¦a1Db14c0Vd0Se0Pf0Fg0Ch0Ai07l04mZnYoWpNquiMrJs8t5un3v1w0;himsEorthwhi19;a0ulner17;gue,ri0W;a0blem1Glike0Estirr1H;b15ppea1Cwa0F;e1houghtWiny,o0ruthWyp9;p,uchi1B;n0Urminal0A;afe,h8i7k5m4t1u0;bt10ch,dd03ffoca0GrprF;a1eaAi0;ff,nks;le,rt14;all0Uooth;ept0ill16;ic0W;mplist12nce03;a0od3y;ky,llow;andom,e0ip-off,omant0Z;a0deemi0Xminisce0Kspe6;dy;ck,xot0W;alp0Le7henomen0Oinheads,lausib0Mo4r0uW;e1ima0Com0;isi0S;di0g3;ct0H;i0te0C;g0n03;na0A;ace6ppe05;bvi02ffbeat,k0pGrdina04;!ay;ot0Aumer00;a3e1ild,o0;re,st;aning0re;ful;jor,ny;arg03ess03i1o0;usy,v03;ab03k02mp,tt03ve;con0Bdentifi01lleg04mplicat0Dn0;articula06terest0;ed,i08;ahahaha,ea0ighX;ltAvy;en1immicky,luey,old0reatV;en;erXuine;a8i7la5or3r1urt0;hRiZ;agiSesh,iend0;ly; su0gettP;re;s0wZ;hy;ne,t2;miliar,rce;arliIccentrTmpty,n1xhaus0;tiR;deariQergetRjoy,ough;efiniMi1u0;ll,mb;m,shon8;heesi7o0;ar5m3n1un0;tless;ceptionDsci0;ous;e-at-8ic,mon,plimenta0;ry;se;est;a6e2i1lata0;nt;gg1tt1;liev1tt0;er;ab0;le;n0ss;al;bridg7ccompl6lcohol5pp0;ea2licati1ropria0;te;ve;li0;ng;ic;ish0;ed|s0.3333¦adequate,brief,const0extensive,first,hidden,main,older,particular,quiet,realistic,subject,vibr0;ant|s0.6¦a0Ab08cZdReMfJgIhahahahaha,iEjamm0OlBmAn8orthodox,p7r6s3un2w0;arm,ell-off,o0;manly,r02;hesitati0Gknown,notic0L;ec1hrill,t0;ark,inker;!u03;aucReaso0Aisk-free,ude;eevish,loddi0Boor;a0onviolT;turalisWuseT;ark0DinimF;a04e1ifel0o0B;ike,o06;ftist,gi04;cky,n0;c0experie05flexi02tZ;ompa0u0;ra00;ood,uard05;a1rostbittRu0;ck,ll-bodi03;lIst;colog2n0rroneBth2veryday,xtinct;ig8joy0;aTiU;ic0;al;estrucFi5r3u0;h0sty,uuh;!hh0;!h;a0iSy;ma9;aphan0ffer4slikQ;ous;a5loud-coverOo0ryiJ;mpelliIn0;ci2secr1ting0vex;ent;atK;se;p1us0;tic;tiF;izar0road-mindF;re;cBd9larmi8me6pp3r1sh0we2;en;bitr0ousB;ary;etizi4ortion9rox0;ima0;te;na0;ble;ng;dict3equate to,va0;nc2;quaint1ti0;ve;ed|s0.25¦aDcAe8fic9juveni7logicCm5odd,p3re1s0usuC;eason5o6tel3upporting;c0ligious,petitive;e8ognizab4;ast,o0;lar;arri0ix0or6;ed;le;duca0qu3vide2xact;tion2;entr1onsiste0;nt;al;mateur,ware|s0.8¦a05b04cTdNeLfHgEhaphazard,iAl8m7p6re5s2tiOun0vulgar,well-advis08young07;blink05c0focus07think00;ared-for,ontroversiVut;arcasOh1kitt04t0uckerA;abb02eadfaF;it,ock03;putVtard02;ivotQrecise;aladroit,uggy;ikZo0;lol,ud,vY;diot2mpassBn0rrit1;corrupMfuri0;atT;!s;argantuan,entNrr0;!r0;!r;*2a0ree,u2;na8rthermo0;st;ckL;ffect0xcitK;ive;azKe4i1ow0;dy;dac1ffidJrty,s0;astrCbelievFturbF;tic;fenseless,servD;a6h5o1r0;ap,itic2;l0mfort5;lec1oss0;al;tib3;arit1ild7;cophon2lcul0ndid;ab0;le;ous;loodstain3right;bhorr3lleviat2mateur1nnoy2pposite,ttention-gett0;ing;ish;ed;ent|s1.0¦0:3W;1:3V;2:3T;3:36;4:40;5:3S;6:3P;a3Ib3Ac2Kd28e1Yf1Mg1Ch15i0Wkey,l0Tm0Jn0Go0Dp07qu05r01sMtJuDvBw7yaaawwnnnn;ac05e9it2Io7tf;nde1Rr7w;st,t2K;alt2Ji45;a1Ci7;c5o1Z;g29lti2Pn7tt0H;appetizi1believ4comAexpect0f8i7predict4real1Zsalt0usu6;nspir0q16;air,or7;gett4tuna2M;fort4mon;e8hril25ire38op-notch,r7wist0;emendo2oubl0;d5r0S;aJcaHeFhoc2XiEoDpCt9u7ympaW;p7rre6spens2R;erb,por3L;ereotyp22ri2Uu7ylD;n14pid7;!i1Y;irit0lend31;ft-boil0phist2Cr3D;cke10nist00;lf7ntiment6rious1Rxy;ish;r7t31;ey,y;d,tisf7;i0yi1;a9e8i7uthl10;dicu11ve2D;al1Jfres2Vpel18tardNwar2U;nc08unc1P;estion4ir7;ky;aBerfect,leas0oAr7sychot2T;e8icel0To7;fou0Fmine3ud;c5t1F;ss0Ktenti6we0O;thet2O;bsess0n19utrage8ver7wn;-the-top,whelmi1;d,o2;a8e7ice,ostalg2Kumb;cessa2Pedl0Krve-rac22;i2Ss17;aCe9i8oron7yster5;!s;nd-bogg13ser4;a7diocre,m2Pna1Frcil0F;g7ningl0E;er;d,g8levo0Mrve0Es7;si2Kte09;ic7nifice3;!al;a8egenda2Di7mao;ght-heart0ke0S;ugh4zy;de6ll,mAn7rreleva3; good tas16appo0Aconvenie3evit4famo2gen5nova2Cs7tDven2C;ane,pir7ul1H;a0Bi1;beci2DmAp7;o8ress7;ed,i28;rta3ssS;en1J;aBeartfe0Dilar5or8um7yster0M;oro2;ri7;b25f7;ic,yi1;nd1Hp7;lQpy;iFlad,oDr7uil0D;aBeateAi9otesq8u7;d0Ye1D;ue;evo2m,ppi1;st;nd;o7ry;dy-goody,fy;a3ft0;aEeCiAlawlForc9rig7unny;hte7id;ni1;ib1O;lt03n7;al,e-loo0S;a7eb1Llicito2;rf0X;bu9i3ke,mo2r8ultl7vori09;ess;!-out;lo2;erie,goFlEspecialOvil,x7;agger07ce9ot11presAqui8tr7;aordina16e0S;si02;l9p8s7;si17;tion6;le3;aboEega3;ist0T;aFeBi8r7;eadf0Hunk;fficu8m-witt0s7;gust09traught;lt;ad9finite9li8spe7vasta02;raP;c5ghtf0B;ly;in8zz7;li1;ty;aThNoDrAu8yn7;ic6;r5s7te;hy;e8u7;ci6de,el;a0Jepy;ld,mDn9r7urt8;iac7r0O;eo2;firm0sum8vin7;ci1;ma7;te;ic6pl7;ic7;at0;a9ee7;r7sy;fNy;llen8r7;ismatVmi1;gi1;ptiva8r7;efI;ti1;aDeCleBorAr7;aZeathta8illia3ut6;nt;ki1;ed,i1;ak,ch;autifAlov0witcI;se;bWdTff4gitaRirhead0las,musi1nLpKrtiHsDtCvBw7;e8f7kwaW;ul;so7;me;id;roc5tracL;sumpKto7;nis8un7;di1;hi1;fici6st7;ic;al;pall0t;g9x5;io2;us;ry;ng;ed;ti7;ve;or4;ab7;le;r8su7;rd;upt|s0.7¦aZbYcSdMeHfEhaDiAl7m6open-mind01p5respectPs4t3u1w0;ary,orkmanlike;n0sed to;adulteratYcriticNhealthy,ilaterNplay9settlQtrace9;hrillXirX;ecret,pright4uffers;lacid,retentiU;esmerizModer8;ight,o0;l,ne0;ly;maginat8n0;calcul0expressJnoceQ;abJ;r2tN;iendi1ortun0uckM;ate;sh;ffBn2x0;haustIpens0;ive;g0joyGtertain8;ag7ross7;e4i0udsvil9;alect2s0;appoint4taste0;ful;al;creas9ficieAlight9;heap,lean4o1red2unn0;ing;here7mprehens0nfus6;ib0;le;!ly;ang-up,ehind,oundless;dama2ir1utonom0;ous;ed;nt|s0.4¦a0Bbr0Ac03d00eWfTgShRiOlMmKnFpDr9s5tries,u3v2w0you05;et,ho0Di0;de,ld,n;itVocationV;glin05n0;avow0Ebra7paid,read,school0E;atisyfiZcum,h2imilar,lDmall,o1tr0;aight,uttiY;phomorRu09;owery,rie5;elat09ight1ou0;gh,nd;-mi0iB;nd06;ea0risUut3;ky;a2e0;ar,g0;ati00;k00rr0turF;ow;anque,esNo0;d,raliziJ;ea0oI;st;diocy,mmaneQn0; stock,competePdividu8eluctNsultingly,t0;ellectu7riguiE;ahaha,umbM;ame,raph6;a1everish,i0luffy,orgetD;rm,t;rcic2tty;nlighteni8p2xpe0;ctLriment0;al;ic;ark,e1i0;rect,sappointmeD;ad,ep;ap9easel5lum4o0urreB;lor2mple1nfusi0;ng;te,x;ful;sy;ess;avado,oken;cuate,g7l4skew,ttenda3v0;ail0erage;ab0;le;nt;i1l-arou0;nd;ve;ed|i2.¦definite1especi0re0serious1;al0;ly|s0.1667¦c3dynam5fema2half,in1mundane,p0slight;a1revious;coherent,ner;le;lass1o0;ntemporary,w;ic|s0.65¦cool,emotion0lyric,norm0sweet,true;al|s0.625¦able,entire,shady,weak|s0.75¦aKcGdEeDfabricIgBi9l8origin7poetLr6s4t2vivid,wi0;ll0nn0;ing;ot4ra0;dition3gH;h0loppy,uit5;arp,eer;emark3ich;al;ame,ovely;mpecc0ndecipher0;abC;odforsakAr0;eat,itty;dgy,ndless,xcit5;etail4is0;appoint3eas3;alm,elebr1laustrophob4o0;ntriv1zy;at0;ed;eriform,gi2li1mbitious,uthent0;ic;en;le|s0.6667¦b3compete2dece2insta2s0;e0uper;nsational,rious;nt;ad,lind,old|s0.0667¦l0public,social;ast,ess|s0.05¦missing,outside,subsequent,topical,victim|s0.1429¦limited,physical|s0.375¦accessible,due,other,private,s0;lick,traightforward|s0.0769¦regular|s0.3571¦conventional,plain,simple|s0.1333¦gloom,spiritual|s0.55¦criminal,full,responsible,subconscious|p-0.0125¦absence,vacuum|p-0.05¦arreDcCgAl9m8obstacl7p6rehash,s1un0well-intention5;affect4explain4thinka2;adism,eizur5ixth-grade,t0;r1um0;ble;ange,etch0;ed;assionate,erpetually;es;inor,onk2uzak;efti3ong;argantuan,r0;ey;ardiac,hangeless;st|p-0.1¦a0Nb0Jc09d00eXfVhaUiQjaPlNmJnGpErAs6t5u3w0yarn;as0Te1haddupwitdat,ide,o0;nt,u09;re0Rt;gly-duckli0Pn0rin03sed to;answer0Qbrand0Qcook0QfortunateUknown,proc00;on09ri02wo-dimensionG;e1hou04inks,lippi0Moft-boil0Op0tereotyp0Owill;e0Moof;c0riousQ;!ondhand;e2o0;bot0Ehypnol,ugh0;!age;grets,mo07;arti7eppe0Ai0ropaganda;nk,ty;e1o0;!t;ith03v03;ent2i0onosyllab06ust0A;lita04n0;im0us;al;i0oneB;a4felo04;il,mm05;cy,mmane03n0;articuSconsistenciGe0telligentsia;lucta0xperienc02;ble;dZrdRsZveZ;everish,luff,orgetMu0;ll-bodiYrZ;mpty,x0;cruciating0pectW;ly;e5i2o1r0ulls;ag,ownT;esRnt;dQs0;believiOposs0taP;essP;fec0void;at0;es;a7e4l3o0rushLurious;m1ntingeJu0;ldI;a,mercialism;osHuelessn2;as0nt7;el0;ess;nt,re0;ful;itt2oilerp0;la0;te;er;dversa8g7i6l3phon2r0skew;bitra0e5;ry;ic;armi1l0;eg2usions;ng;nt;ed;tive|p-0.2¦autist0Gb0Ac02dTeveryday,fRgPhNiKkill0FlImEnarrow,oCp9r8s5tr4un2wa0;n,ste0;!d,s;cared-for,e0notic0CoriginWschool0C;ngagiZvM;app0AoubP;h0ophomor0Atark;a0it,owery;m,pe05;edundaOightist,ound;l1re0;achy,dictabJ;atitud1od;oz0rthodox;es;e2i0;ndXs0;fire,placYsiM;diocriAssy;ead7imp,o0;ng-windVsers;mp1n0sC;cohereBfatuatT;atieAerceptib7;arLeavy,i0umb6;ndHt-and-miP;immicFre0;en;at0ew,irm,luffy,rustratingly,ull of life;ty;e6i1riLudsvil0;le;a2ffide1s0;ablIlikI;nt;lect0phanous;al;ad,stroy0;!i1;h4loud-cov3o1ryi0;ng;c0zy;ky;er8;i0oppy;ldi0tchat;sh;o1ra0;sh,vado;gg2und0;le0;ss;ed;ic|p0.3¦aMbonny,cCdistinct,eBf8g7int6l5mesmerizHp4raAs3u1vocationKw0;ins,orth;n0seJ;blinkEcontroversiH;miEolicitous,uccess;owerGroves;augh,ifelike;ellectuDriguA;amechanger,olden;or su1r0un;esh,ingy;re;conomic8le4nlighten5xcit5;alm,leanly,o0;lo5m0;e-at-ab3p0;ell1li0;mentary;ing;le;r1ss0;al;ful;bsorb0hw,pportion0uthoritative,ww;ed|p-0.1333¦active,cow,gloom,imitation|p0.1¦0:06;aYbVcLdJeHfFgettRiElBm9n8o7p6right-mind0s3titulUun2vit02w1youX;ild,ow;blemish0expect0hesitatiVread;arcaAe2o1tate-support0urpris0;ber,ft;amOnsitV;eaky,rofessionW;ffers,ld;aEeM;a1edicatRodest,ultilaterT;nque,rk0sculine,ture;i1oud,ush;ngui1teraN;st5;dentifiDn stock;ar,i1requeO;ftieth,x0;arly,mpiricLnigmat1p1rudiOxperimentL;ic;evelop0i1;m,rect;l7o2ul1;turG;mpleIn1;c2s1;cious,ider2;eiv1ise;able;assy,e2oud1;less;ar;almy,u1;ddi1sy;ng;bridg0c6d3ir0l2mato1rous0;ry;ive;ama2jectiv1ult;al;nt;ross-the-board,tion,ua1;te;ed|p-0.0333¦excuse,toilet|p-0.7¦a5ba4crude,disastr6frustrat3grr1merciless,painful,shock3u0vulgar;gly,nchaste;!r0;!r;ed;d,rbarian;bhorrent,nger,troci0;ous|p0.5¦0:13;a0Pbe0Nc0Fe09f06g04h02iYlUmNnot12oJpGrDs6t4unexce9w1;acky,e02i2or1;kmanlike,thwhi12;n08tty;o1ruthfM;p,uc0M;a5ex4incere,ki3ophistic0Qpirit0t2u1ympath07;ppor09re;at0Iriki0Nun03ylish;ll0;u0Ay;fe,tisf1;i0yi0J;e1ive09;dee6fres0Dput0Ospect1war7;ab0PfB;henomen04ivot04l2o0Jr1;eci0Komine0J;ausPeas0;k3utstan2verwhel1;mi0B;di0A;!ay;a4e2ind-bogg07o1;re,st;aningf1mor0D;ul;gic2n1;nerly,y;!al;atest,enie06i3ov1;ab09e1;!ly;ght-heart0k05;conSn1;corrupt8geni02no2spir1teresNvenH;ationKiV;ceZvaF;andsome,e1ilariZumorZ;althy;ift0lad,oofy,r1;and,eaJippiQ;a2itGorc1;ibX;mTvoriL;l5n1xotH;deariLerg3joy2tertai1;niK;abSed,iJ;etD;aboraFegaM;aptiva7ha6o2rea1uE;tive;hereJm2n1;fideIvinciD;ic1peG;al;llengiArismat5;ti9;lievFt1;ter;bFcquaint0d8giFirhead0llevi7pp3stonis2uthent1wwww;ic;hi4;ea2ropria1;te;li1;ng;at0;or5ve1;ntur3r1;te1;nt;ous;ab2;ed;le|p-0.125¦abrupt,due,e0foreign,other,sharp;ndless,xtreme|p0.2¦aKbeefy,cHeEfast,gentOhahaBi9leg8m6p5quixotGre3st2thanks,un1very,w0;ants,hoN;paid,usuD;ainless,raight;a0sponsibK;dy,l,soI;hilosophAromisL;od0uch;!ern;al,ibF;nt0ron6;ense,imaH;!ha0;!ha0;!ha;conom1thic0;al;ic;ap1on0;secr3vex;ab4tive;bso5ccomplish4dor6ll-around,me2pp0ttendant,urea7;etiz5reci0;at2;nab0;le;ed;lu1rb0;ing;te|s0.95¦a3barbarian,c2discourteous,gawky,lov6mouth-water6rose,successful,un0;i0pleasa4;mporta3ntellige3;hicken,ontroversial;b0fflue1;sorb1unda0;nt;ing|p-0.5¦a0Wb0Rc0Dd07e04fXgVhonest-to-god,iRjackassQlOmeNnMoLpJquestion0PraIs9t8u2v1w0yaaawwnnnn;a10ei11himsBro0Jtf;ague,ulner0N;n0se0L;a3c2f1i0likeCreaBsett0F;later0Inspir0N;air,ortunate;omfort0Iut;b0Isham0K;ediXiresome,roubl0Jwist0J;ad,car7elfish,hy,i3kept2or0Rt0uffocati0A;a0ereotyp1ink3;le,rt07;ic0A;l2mp1nist0;er;li4;ly;ey,y;ndom,uncH;leona0ower04sychot0G;st0F;bsess06ffbeat,ver-the-top;ame01eed01ostalg0D;aning00dioc5re;a0ouW;me,ughZ;!es;ll2n0rreleva03;auspiciDcurWexpedie02famDsecu0;re;!egS;o0ratuitAuilY;ody-gooDry;a3eebSla1orgettRr0;ighteJostbitt00;s0wS;hy;i0ke;l0nt;!ed,s;erie,ffiFrrone1x0;aggerApensS;ous;azKi3ow2runk,u0;hhh0uuh;!h;dy;dactOfficult,st0;asteful,urbi7;a8h3o0reepy;llectibBmplic1ntrivDr0;puleFrupt;atB;ee3il1ur0;ni1;li0;ng;sy;lcul2re1su0;al;less;ab0;le;l1or0rainsick;ed;ata1ind,oodthirs0;ty;nt;bsu5ng4s0wea4;cet2h1sumpt0;ive;en;ic;ry;rd|p0.6¦aOcJdeIeGfDhAimaginaSkind,l9motley,n8own,pop7r5s3t2un1w0;arm,ell-advisD;hamperCprecedentC;hrillBi9ren9;atisyfNmilAp0;ectac2ontaneF;e0ose;doubEsourceful;ular;ice,oD;ik4mao,ovH;a0onest;n0zard8;dy;i1ull-fledg0;ed;ne-lookBrst-strB;ffecBn0;gross9thusiastic;ft,luxe,serv8;a3hari1ourte0;ous;ta0;ble;ndid,tch3;bundant,cute,dept,ffirma3m1p0stound2;precia2t;az0us0;ing;tive|p0.375¦accessible,excited,f1original,poetic,rich,s0unique;ignificant,traightforward;amiliar,riendly|p0.4¦aUbScLdetail00eJfDgBhuge,i9justifi00li8mighNn7o6p4r3s2thought1un0well-off,youngish;adulteratZsaltZ;-provokWfP;ecuQmooth,ound,prightly,teadfast,uperf9;elevaBisk-frA;erplexVr0;ecise,imary;bedie8pen-mindT;aturaliAonviole7;centiNght;mporta5n0;comparaKdispensaK;enu0uardO;ine;a3i2lippa1ortunaNr0;ee;nt;llJt;bulEnta0r-out;stic;cological,n0;gagDjoy;he4ivilizEo2r0;af0edi8ushB;ty;m0nfirmB;forta5prehensi5;ap,erf0;ul;ang-up,izar0;re;ccura6dvanc5pp4ttenti2utonom1vaila0www;ble;ous;on-gett0ve;ing;licative,osi1;ed;te|s0.6333¦accurate,outdated|p-0.4¦aXbVcOdKexHfCgBi7n6o5p4rip-off,s2t1un0worG;appealiIfocSgrad00healthy,importaMnecessary,playQstirr00;erminally,hin,irZ;ecret,hri0;eky,ll;eevToor;utd4verexcitV;ause3erve-rackiC;mp1nf0rrit5;antiJlexibJ;assive,lic0;atQ;ame,luey,odforsaK;a1rustr0uck;ati5;l1rc0;e,ic9;se;haust0tinct;ed,i0;ng;e0usty;creasFf0;enseless,icie0;nt;a5heesiest,on1rimin0;al;f2test0;ab0;le;us7;cophonous,ustic;ehind,ootleg,ro0;ken;d2l1mateur0nnoy3pproximate;ish;as,gid;dict0equate to;ed|p-0.4667¦addled,maladroit|s0.8333¦addled,bland,c2easy,gratuitous,idiotic,l0sexu1tough;oy0ucky;al;lever,onfident|p0.3333¦a2bo1extraordinary,l0mi1pregnant,quick,super,tremendous,worthy;oyal,ucky;ld;dequate,rtistic|p-0.25¦a7excess6juveni5lazy,o4p3repetit6s1u0;nbelievab4su1;entiment0hady,lick,mall;al;ast,ointless;rdinary,verboard;le;ive;eriform,l0mateur,nxious;coholic,ien|p0.8¦a7bra8e4f3great,happy,intelligent,joy,lol2proud,rofl,un1w0;elcome,in;common,forgett7;!ol;avor2ly;lect,xp0;erienc0ressi2;ed;ff1ttracti0;ve;able|p0.65¦affluent|p-0.6¦aWbScMdCfAgr9hap7in6m5numb,prolix,s2tastel8un0;befitMdignifiTf0happy,propitiK;aithTruitT;cathiLt1u0;bnormUffers;abbiJinks,upidiC;eager,uggy;conveni9explicaJfuriaG;hazPl0;ess;andiloqu6udgiE;*ckiDiendish,uck0;ed,iC;anger8e5i0one with;m-wittGr3s0;appoint0easFtraught;i8m0;ent;ty;p1s0;perate,trucG;lora5ressi3;ous;hi4o2razy,ut0ynicB;ti0;ng;ld,rrupti0;ble;cken,lly;attle2l0;ast0oodstain0;ed;ful;fraid,g2rtifici1wkw0;ard;al;hast,ita0;tive|p-0.3¦alienatXbaVcOdLeIfGiElCmBnAp6r5s2thick,u0vap9wonF;gliVn0;deservFtraceable;cum,econdary,hoddy,low,ourEtruttUuck0;er0s;!s;aucKegurgitat7ude;inheads,l1r0;etentiIisMofiterP;ac0oddO;id;a9eg8;elodrama,oralizL;aAea9os0;es;c0diocy,nsultingly;ky;anatic,orc0;ed;dgy,xploit0;at0;ive;elica1ishone0uh;st;te;lum5o0;m1nfus7riace0;ous;mon,pl0;ain0ex;ed,t;sy;d0nal;ness;ing|p0.25¦aFcBe9f8h7interest6l5marri6p4recognizable,s1thr0w0;ill2;eason4tellar,u0;pport0rre7;ing;eaceful,retty;ogic4yr8;ed;igher,ot;irst,unny;ducation0vid3xact;al;o0risp;m1nsist0;ent;ic;mbitious,vid,ware|p-0.75¦anger1claustrophob0disappoint1trag0;ic;ed|s0.85¦a2b0deadpan,fascinat1hot,passionate,solicit3thin;almy,ecom0;ing;ngered,rdu0;ous|p-0.8¦aCbAcrap,d9egoistic,filthy,grie7ha6i4m2r0stupid,unappetizEvi3worthless;an0etardC;cor6k;alev0oron2;olent;diot0mbecile,napposi1;!s;te;f,v0;ous;ebauch3oubtful;ase,l0;ech,oody;nnoy1ppall0;ed;ing|p-0.35¦a0;ppalling,rduous|p0.05¦appare1bare,ceremoni0exubera1gener0inexpressible;al;nt|s0.35¦appare0ceremonial,dista0infantile,soft;nt|p0.7¦applaudable,bCchBdelightFe8f5go4h3l2mouth-waterEoptimum,s0talentFwise;kittish,u0;cceeds,perior,rprisC;aughCovC;appiness,ero6;od,rge1;a1elicit0;ous;bl7ir,scin1;rot1xhilar0;at4;ic;arm2eery;e0right;lov1witch0;ing;ed|p0.9¦artesian,brilliant,c2dainty,i0;deal,n0; good taste,credible;ast-iron,ushy|p0.55¦astute,controversial,suitable|p-0.15¦average,ba0dark,me0naughty,pale,ruins;ss|p1.0¦awesome,bBdeli8ex6f4greateCimpress3legendary,ma1p0superb,top-notch,wond2;erfect,rice4;gnific5rvel8st0;er6;ed,ive;ault0law0;less;cell0quisite;ent;ci1ght0;ful;ous;e0reathtaking;st|p-1.¦awEbCcruel,d9evil,gr8h4ins3m2nasty,outrage1pathet6ruthless,shockiDterri0vici1worst;b6fyiC;ous;enaciAiserab4;ane,ul7;orri0ysterical;b1f0;ic;le;im,uesome;evasta1isgust0read4;ed,i2;ti1;leak,ori0;ng;ful|p0.85¦beautiful|p0.45¦becoming|p-0.1667¦bla2h1less,mundane,odd,previous,s0typical,unpredictable;light,ubject;alf,idden;ck,nd|s0.4333¦black,full-length|p0.0625¦broad,major|s0.3125¦broad|p-0.875¦brutal|s0.8667¦casual,measly|p0.35¦c0full,sweet,true;elebrated,ool|p0.2143¦certain,large,pure,smart|s0.5714¦certain,special|s0.15¦changel0m0overboard,strange,wan;ess|p-0.0667¦characteristic,d0hollow,putative;epress,ry|s0.4667¦characteristic|p0.1667¦c2dece1main,old4particular,realist5s0vibra1;teady,upernatural;nt;l0ontemporary;ass1ev0;er;ic|p0.3667¦clean|s0.3833¦clear|p0.15¦concrete,normal|s0.45¦considerable|p0.95¦consummate|p-0.1429¦conventional|s0.4167¦crisp|p-0.9¦cruddy,f5h2inhumane,outrag4re0sicken3;pellent,tard0;!s;at1orrify0;ing;ed;earful,rigid|p0.75¦dazzling,impecc0remark0successful;able|p-0.8333¦deadly|p-0.55¦deadpan,g0indecipherable;awky,rotesque|s0.0333¦depress,excuse,hollow|p-0.65¦discourteous,un0;intellige0pleasa0;nt|p-0.1556¦down|s0.2889¦down|s0.07¦drag|p-0.4333¦dramatic|p-0.2917¦dull,hard|p-0.375¦dumb,incompetent,weak|p0.4333¦easy,strong|p0.6667¦excep0lively,sensa0;tional|p-0.3167¦failure|p0.4167¦fine,gay|p-0.025¦flat|p0.0333¦full-length,social|s0.5833¦gay|s0.5417¦hard|p0.16¦high|s0.54¦high|p-0.6667¦i0;diotic,mpossible|s0.875¦insecure,outstanding,si0;gnificant,lly|s0.4286¦large|s0.2667¦leaden|p-0.0714¦limited,single|p-0.1875¦little|p0.1364¦live,new|s0.9333¦lively,uncivil|p-0.0769¦loose|s0.2692¦loose|p-0.625¦mad|p-0.3125¦mean|s0.6875¦mean|p-0.5667¦measly|s0.4545¦new|p-0.24¦parade|s0.22¦parade|p-0.2143¦plain,stiff|p0.7333¦pleasant|s0.9667¦pleasant|p-0.0833¦polar|p0.2273¦positive|s0.5455¦positive|p0.0833¦profound|p-0.2308¦raw|s0.4615¦raw|p-0.3333¦ridicul2s0tense;eri1ha0ubtle;ky,llow;ous|p0.2857¦right|s0.5357¦right|p-0.225¦sermon,tame|p-0.7143¦sick|s0.8571¦sick|s0.2143¦single|p-0.4167¦sloppy|s0.6429¦smart|p-0.1571¦sour|s0.1143¦sour|p0.3571¦special|p0.8333¦splendid|s0.7333¦strong|s0.5667¦supernatural|s0.8889¦sure|s0.225¦tame|s0.475¦thick|p-0.1786¦tight|s0.2857¦tight|p-0.3889¦tough|p-0.7333¦uncivil|p-0.075¦victim|p0.125¦vivid|i1.5¦real|i1.3¦excruciatingly,very|i1.2¦frustratingly\";\n"
  },
  {
    "path": "plugins/_experiments/sentiment/src/data/index.js",
    "content": "import { unpack } from 'efrt'\nimport pattern_en_packed from './_pckd.js'\n\n\n// Decompress above data\nconst pattern_en = unpack(pattern_en_packed);\n\n// Add some data efrt 2.7.0 compression can't handle yet\n// \n// Wait...you can add to a const? Yes!\n// Ref: https://stackoverflow.com/a/23436563\nconst arrayInfo = [\"i1.0\", \"p0.0\", \"s0.0\"];\npattern_en['13th'] = arrayInfo;\npattern_en['20th'] = arrayInfo;\npattern_en['21st'] = arrayInfo;\npattern_en['2nd'] = arrayInfo;\npattern_en['3rd'] = arrayInfo;\n\n// Sort all subarrays in alphabetical order\n// resulting order and their corresponding\n// indices will be:\n// intensity\t\t[0]\n// polarity\t\t\t[1]\n// subjectivity\t[2]\nObject.values(pattern_en).forEach(function (element) {\n  element.sort();\n})\n//console.log('pattern_en:', pattern_en);\n\n// Find all keys from expanded pattern_en object\nconst pattern_en_keys = Object.keys(pattern_en);\n//console.log('pattern_en_keys: ', pattern_en_keys);\n\n// Find all intensifiers (keys whose values are not \"i1.0\") in pattern_en object\nconst intensifiers = Object.keys(pattern_en).filter(function (element) {\n  return (pattern_en[element][0] != \"i1.0\");\n});\n//console.log('intensifiers', intensifiers);\n\n// Set up dictionary of negations\nconst negations = ['not', 'no', 'never', 'neither', 'havent', 'hasnt', 'hadnt', 'cant', 'couldnt', 'shouldnt', 'wasnt', 'wont', 'wouldnt', 'dont', 'doesnt', 'didnt', 'isnt', 'arent', 'aint', 'mustnt', 'werent'];\n//console.log('negations: ', negations);\n\nexport { pattern_en, pattern_en_keys, intensifiers, negations }"
  },
  {
    "path": "plugins/_experiments/sentiment/src/emoji.js",
    "content": "import RegExpEscape from './escape.js'\n\n/**\n* emoticons\n*\n* Variable containing polarity scores for selected emoticons/smileys\n*\n* @author Scott Cram\n*\n* Original version:\n* @author Steven Loria\n* @see {@link https://github.com/sloria/TextBlob/blob/dev/textblob/_text.py|_text.py}\n*\n* From emoticons section of python file above, data was converted to JSON Object containing selected emoticons/smileys and their associated polarity scores\n*/\nconst emoticons = { \"<3\": \"1.00\", \"♥\": \"1.00\", \">:D\": \"1.00\", \":-D\": \"1.00\", \":D\": \"1.00\", \"=-D\": \"1.00\", \"=D\": \"1.00\", \"X-D\": \"1.00\", \"x-D\": \"1.00\", \"XD\": \"1.00\", \"xD\": \"1.00\", \"8-D\": \"1.00\", \">:P\": \"0.75\", \":-P\": \"0.75\", \":P\": \"0.75\", \":-p\": \"0.75\", \":p\": \"0.75\", \":-b\": \"0.75\", \":b\": \"0.75\", \":c)\": \"0.75\", \":o)\": \"0.75\", \":^)\": \"0.75\", \">:)\": \"0.50\", \":-)\": \"0.50\", \":)\": \"0.50\", \"=)\": \"0.50\", \"=]\": \"0.50\", \":]\": \"0.50\", \":}\": \"0.50\", \":>\": \"0.50\", \":3\": \"0.50\", \"8)\": \"0.50\", \"8-)\": \"0.50\", \">;]\": \"0.25\", \";-)\": \"0.25\", \";)\": \"0.25\", \";-]\": \"0.25\", \";]\": \"0.25\", \";D\": \"0.25\", \";^)\": \"0.25\", \"*-)\": \"0.25\", \"*)\": \"0.25\", \">:o\": \"0.05\", \":-O\": \"0.05\", \":O\": \"0.05\", \":o\": \"0.05\", \":-o\": \"0.05\", \"o_O\": \"0.05\", \"o.O\": \"0.05\", \"°O°\": \"0.05\", \"°o°\": \"0.05\", \">:/\": \"-0.25\", \":-/\": \"-0.25\", \":/\": \"-0.25\", \":\\\\\": \"-0.25\", \">:\\\\\": \"-0.25\", \":-.\": \"-0.25\", \":-s\": \"-0.25\", \":s\": \"-0.25\", \":S\": \"-0.25\", \":-S\": \"-0.25\", \">.>\": \"-0.25\", \">:[\": \"-0.75\", \":-(\": \"-0.75\", \":(\": \"-0.75\", \"=(\": \"-0.75\", \":-[\": \"-0.75\", \":[\": \"-0.75\", \":{\": \"-0.75\", \":-<\": \"-0.75\", \":c\": \"-0.75\", \":-c\": \"-0.75\", \"=/\": \"-0.75\", \":'(\": \"-1.00\", \":'''(\": \"-1.00\", \";'(\": \"-1.00\" };\n//console.log('emoticons', emoticons);\n\n// Combine all the keys from the emoticon object into a regex which match any of those emoticons\nconst emoticon_regex = new RegExp((RegExpEscape(Object.keys(emoticons).join(' '))).replace(/\\\\\\s/g, '|'), 'g');\n//console.log('emoticon_regex: ', emoticon_regex);\n\n/**\n* emojis\n*\n* Variable containing polarity scores for selected emojis\n*\n* @author Scott Cram\n*\n* Original version:\n* @author P. Kralj Novak, J. Smailovic, B. Sluban, I. Mozetic\n* @see {@link https://kt.ijs.si/data/Emoji_sentiment_ranking/|Emoji Sentiment Ranking v1.0}\n*\n* From emoji file above, data from Char and Sentiment score columns was used, and converted to JSON Object\n*/\nconst emojis = { \"😂\": \"0.221\", \"❤\": \"0.746\", \"♥\": \"0.657\", \"😍\": \"0.678\", \"😭\": \"-0.093\", \"😘\": \"0.701\", \"😊\": \"0.644\", \"👌\": \"0.563\", \"💕\": \"0.632\", \"👏\": \"0.520\", \"😁\": \"0.449\", \"☺\": \"0.657\", \"♡\": \"0.669\", \"👍\": \"0.521\", \"😩\": \"-0.368\", \"🙏\": \"0.417\", \"✌\": \"0.463\", \"😏\": \"0.332\", \"😉\": \"0.463\", \"🙌\": \"0.559\", \"🙈\": \"0.432\", \"💪\": \"0.555\", \"😄\": \"0.421\", \"😒\": \"-0.374\", \"💃\": \"0.734\", \"💖\": \"0.712\", \"😃\": \"0.557\", \"😔\": \"-0.146\", \"😱\": \"0.190\", \"🎉\": \"0.738\", \"😜\": \"0.455\", \"☯\": \"0.001\", \"🌸\": \"0.650\", \"💜\": \"0.654\", \"💙\": \"0.730\", \"✨\": \"0.351\", \"😳\": \"0.018\", \"💗\": \"0.657\", \"★\": \"0.283\", \"☀\": \"0.465\", \"😡\": \"-0.173\", \"😎\": \"0.491\", \"😢\": \"0.007\", \"💋\": \"0.691\", \"😋\": \"0.631\", \"🙊\": \"0.459\", \"😴\": \"-0.080\", \"🎶\": \"0.537\", \"💞\": \"0.739\", \"😌\": \"0.482\", \"🔥\": \"0.139\", \"💯\": \"0.120\", \"🔫\": \"-0.194\", \"💛\": \"0.709\", \"💁\": \"0.326\", \"💚\": \"0.656\", \"♫\": \"0.287\", \"😞\": \"-0.118\", \"😆\": \"0.409\", \"😝\": \"0.423\", \"😪\": \"-0.080\", \"😫\": \"-0.145\", \"😅\": \"0.178\", \"👊\": \"0.228\", \"💀\": \"-0.207\", \"😀\": \"0.568\", \"😚\": \"0.710\", \"😻\": \"0.619\", \"©\": \"0.117\", \"👀\": \"0.063\", \"💘\": \"0.683\", \"🐓\": \"0.028\", \"☕\": \"0.244\", \"👋\": \"0.413\", \"✋\": \"0.126\", \"🎊\": \"0.721\", \"🍕\": \"0.417\", \"❄\": \"0.506\", \"😥\": \"0.122\", \"😕\": \"-0.397\", \"💥\": \"0.148\", \"💔\": \"-0.121\", \"😤\": \"-0.209\", \"😈\": \"0.265\", \"✈\": \"0.415\", \"🔝\": \"0.474\", \"😰\": \"-0.020\", \"⚽\": \"0.616\", \"😑\": \"-0.311\", \"👑\": \"0.694\", \"😹\": \"0.141\", \"👉\": \"0.390\", \"🍃\": \"0.378\", \"🎁\": \"0.759\", \"😠\": \"-0.299\", \"🐧\": \"0.456\", \"🍀\": \"0.285\", \"🎈\": \"0.718\", \"🎅\": \"0.318\", \"😓\": \"-0.080\", \"😣\": \"-0.212\", \"😐\": \"-0.388\", \"✊\": \"0.429\", \"😨\": \"-0.140\", \"😖\": \"-0.155\", \"💤\": \"0.370\", \"💓\": \"0.664\", \"👎\": \"-0.188\", \"💦\": \"0.471\", \"✔\": \"0.270\", \"😷\": \"-0.169\", \"⚡\": \"0.177\", \"🙋\": \"0.485\", \"🎄\": \"0.531\", \"💩\": \"-0.116\", \"🎵\": \"0.500\", \"➡\": \"0.147\", \"😛\": \"0.601\", \"😬\": \"0.194\", \"👯\": \"0.439\", \"💎\": \"0.561\", \"🌿\": \"0.384\", \"🎂\": \"0.613\", \"🌟\": \"0.327\", \"🔮\": \"0.267\", \"❗\": \"0.100\", \"👫\": \"0.255\", \"🏆\": \"0.726\", \"✖\": \"0.311\", \"☝\": \"0.309\", \"😙\": \"0.778\", \"⛄\": \"0.521\", \"👅\": \"0.461\", \"♪\": \"0.534\", \"🍂\": \"0.547\", \"💏\": \"0.388\", \"🔪\": \"0.070\", \"🌴\": \"0.525\", \"👈\": \"0.424\", \"🌹\": \"0.600\", \"🙆\": \"0.500\", \"👻\": \"0.228\", \"💰\": \"0.251\", \"🍻\": \"0.512\", \"🙅\": \"-0.202\", \"🌞\": \"0.558\", \"🍁\": \"0.482\", \"⭐\": \"0.580\", \"▪\": \"0.198\", \"🎀\": \"0.629\", \"☷\": \"0.064\", \"🐷\": \"0.368\", \"🙉\": \"0.333\", \"🌺\": \"0.549\", \"💅\": \"0.388\", \"🐶\": \"0.576\", \"🌚\": \"0.464\", \"👽\": \"0.315\", \"🎤\": \"0.476\", \"👭\": \"0.463\", \"🎧\": \"0.414\", \"👆\": \"0.326\", \"🍸\": \"0.539\", \"🍷\": \"0.393\", \"®\": \"0.279\", \"🍉\": \"0.597\", \"😇\": \"0.587\", \"☑\": \"0.101\", \"🏃\": \"0.406\", \"😿\": \"-0.372\", \"💣\": \"0.007\", \"🍺\": \"0.493\", \"▶\": \"0.209\", \"😲\": \"-0.068\", \"🎸\": \"0.516\", \"🍹\": \"0.659\", \"💫\": \"0.500\", \"📚\": \"0.336\", \"😶\": \"-0.142\", \"🌷\": \"0.538\", \"💝\": \"0.644\", \"💨\": \"0.381\", \"🏈\": \"0.530\", \"💍\": \"0.478\", \"☔\": \"0.289\", \"👸\": \"0.605\", \"🍩\": \"0.382\", \"👾\": \"0.361\", \"☁\": \"0.308\", \"🌻\": \"0.570\", \"😵\": \"0.085\", \"📒\": \"0.038\", \"🐯\": \"0.476\", \"👼\": \"0.333\", \"🍔\": \"0.277\", \"😸\": \"0.410\", \"👶\": \"0.434\", \"💐\": \"0.735\", \"🌊\": \"0.500\", \"🍦\": \"0.459\", \"🍓\": \"0.670\", \"👇\": \"0.247\", \"💆\": \"0.221\", \"🍴\": \"0.537\", \"😧\": \"-0.063\", \"😮\": \"0.269\", \"🚫\": \"-0.440\", \"😽\": \"0.571\", \"🌈\": \"0.516\", \"🙀\": \"0.330\", \"⚠\": \"-0.066\", \"🎮\": \"0.427\", \"🍆\": \"0.402\", \"🍰\": \"0.448\", \"👐\": \"-0.023\", \"🙇\": \"0.140\", \"🍟\": \"0.302\", \"🍌\": \"0.435\", \"💑\": \"0.659\", \"👬\": \"-0.059\", \"🐣\": \"0.476\", \"🎃\": \"0.595\", \"😟\": \"0.072\", \"🐾\": \"0.605\", \"🎓\": \"0.563\", \"🏊\": \"0.575\", \"🍫\": \"0.152\", \"📷\": \"0.430\", \"👄\": \"0.474\", \"🌼\": \"0.779\", \"🚶\": \"-0.143\", \"🐱\": \"0.513\", \"🐸\": \"-0.080\", \"👿\": \"-0.534\", \"🚬\": \"0.521\", \"📖\": \"0.169\", \"🐒\": \"0.521\", \"🌍\": \"0.592\", \"🐥\": \"0.586\", \"🌀\": \"0.101\", \"🐼\": \"0.261\", \"🎥\": \"0.290\", \"💄\": \"0.435\", \"💸\": \"0.159\", \"⛔\": \"0.485\", \"🏀\": \"0.254\", \"💉\": \"0.358\", \"💟\": \"0.682\", \"🚗\": \"0.231\", \"😯\": \"0.123\", \"📝\": \"0.231\", \"♦\": \"0.453\", \"💭\": \"0.206\", \"🌙\": \"0.590\", \"🐟\": \"0.689\", \"👣\": \"0.344\", \"☞\": \"0.115\", \"✂\": \"-0.459\", \"🗿\": \"0.443\", \"🍝\": \"0.117\", \"👪\": \"-0.017\", \"🍭\": \"0.300\", \"🌃\": \"0.390\", \"❌\": \"0.271\", \"🐰\": \"0.586\", \"💊\": \"0.431\", \"🚨\": \"0.638\", \"😦\": \"-0.368\", \"🍪\": \"0.316\", \"🍣\": \"-0.232\", \"🎆\": \"0.709\", \"🎎\": \"0.907\", \"✅\": \"0.407\", \"👹\": \"0.058\", \"📱\": \"0.308\", \"🙍\": \"-0.327\", \"🍑\": \"0.250\", \"🎼\": \"0.327\", \"🔊\": \"0.404\", \"🌌\": \"0.520\", \"🍎\": \"0.320\", \"🐻\": \"0.440\", \"💇\": \"0.327\", \"♬\": \"0.245\", \"♚\": \"0.041\", \"🔴\": \"0.396\", \"🍱\": \"-0.313\", \"🍊\": \"0.417\", \"🍒\": \"0.313\", \"🐭\": \"0.688\", \"👟\": \"0.417\", \"🌎\": \"0.319\", \"🍍\": \"0.468\", \"🐮\": \"0.587\", \"📲\": \"0.239\", \"☼\": \"0.196\", \"🌅\": \"0.356\", \"👠\": \"0.356\", \"🌽\": \"0.444\", \"💧\": \"-0.159\", \"❓\": \"0.068\", \"🍬\": \"0.364\", \"😺\": \"0.395\", \"🐴\": \"0.070\", \"🚀\": \"0.488\", \"💢\": \"0.233\", \"🎬\": \"0.279\", \"🍧\": \"0.302\", \"🍜\": \"0.395\", \"🐏\": \"0.558\", \"🐘\": \"0.023\", \"👧\": \"0.140\", \"🏄\": \"0.524\", \"⬆\": \"0.286\", \"🍋\": \"0.244\", \"🆗\": \"0.537\", \"⚪\": \"0.450\", \"📺\": \"0.375\", \"🍅\": \"0.350\", \"⛅\": \"0.450\", \"🐢\": \"0.200\", \"👙\": \"0.500\", \"🏡\": \"0.436\", \"🌾\": \"0.538\", \"✏\": \"0.342\", \"🐬\": \"0.421\", \"🍤\": \"0.053\", \"♣\": \"0.342\", \"🐝\": \"0.211\", \"🌝\": \"0.189\", \"🔋\": \"-0.486\", \"🐍\": \"0.351\", \"♔\": \"0.541\", \"🍳\": \"0.028\", \"🔵\": \"0.306\", \"😾\": \"-0.333\", \"🌕\": \"0.556\", \"🐨\": \"0.444\", \"🔐\": \"0.333\", \"💿\": \"0.611\", \"🌳\": \"0.486\", \"👰\": \"0.486\", \"⚓\": \"0.571\", \"🚴\": \"0.657\", \"👗\": \"0.235\", \"➕\": \"0.529\", \"💬\": \"0.364\", \"🔜\": \"0.273\", \"🍨\": \"0.212\", \"💲\": \"0.242\", \"⛽\": \"0.152\", \"🍙\": \"0.281\", \"🍗\": \"0.063\", \"🍲\": \"0.125\", \"🍥\": \"-0.594\", \"♛\": \"0.188\", \"😼\": \"0.355\", \"🐙\": \"0.387\", \"👨\": \"0.516\", \"🍚\": \"0.452\", \"🍖\": \"0.129\", \"♨\": \"0.871\", \"🎹\": \"0.355\", \"♕\": \"0.387\", \"🚘\": \"0.067\", \"🍏\": \"0.067\", \"👩\": \"0.067\", \"👦\": \"0.133\", \"☠\": \"-0.033\", \"🐠\": \"0.414\", \"🚹\": \"0.690\", \"💵\": \"0.379\", \"👛\": \"0.357\", \"🚙\": \"0.036\", \"🌱\": \"0.571\", \"💻\": \"0.250\", \"🌏\": \"0.321\", \"👓\": \"0.296\", \"⚾\": \"-0.037\", \"🌲\": \"0.385\", \"👴\": \"0.231\", \"🏠\": \"0.500\", \"🍇\": \"0.269\", \"🍘\": \"0.385\", \"🍛\": \"0.038\", \"🐇\": \"0.231\", \"🔞\": \"-0.038\", \"👵\": \"0.423\", \"◀\": \"0.269\", \"🔙\": \"0.192\", \"🌵\": \"0.192\", \"🐽\": \"0.120\", \"🍮\": \"-0.120\", \"🎇\": \"0.680\", \"🐎\": \"0.400\", \"💶\": \"0.000\", \"🐤\": \"0.520\", \"🛀\": \"0.125\", \"🌑\": \"0.458\", \"🚲\": \"0.375\", \"🐑\": \"-0.167\", \"🏁\": \"0.500\", \"🍞\": \"0.042\", \"🎾\": \"0.542\", \"🈹\": \"0.292\", \"🐳\": \"0.130\", \"👮\": \"-0.348\", \"☹\": \"-0.522\", \"🐵\": \"0.478\", \"🗼\": \"0.522\", \"♠\": \"0.304\", \"👺\": \"-0.182\", \"🐚\": \"0.227\", \"👂\": \"-0.136\", \"🗽\": \"0.318\", \"🍵\": \"0.364\", \"🆒\": \"0.364\", \"🍯\": \"0.045\", \"🐺\": \"0.227\", \"🌓\": \"0.591\", \"🔒\": \"0.182\", \"👳\": \"0.619\", \"🌂\": \"0.238\", \"🚌\": \"0.190\", \"♩\": \"0.524\", \"🍡\": \"-0.048\", \"❥\": \"0.238\", \"🎡\": \"0.286\", \"💌\": \"0.500\", \"🐩\": \"0.350\", \"🌜\": \"0.500\", \"⌚\": \"0.200\", \"🚿\": \"0.600\", \"🐖\": \"0.150\", \"🔆\": \"0.550\", \"🌛\": \"0.550\", \"💂\": \"-0.150\", \"🐔\": \"0.300\", \"🙎\": \"-0.050\", \"🏩\": \"0.421\", \"🔨\": \"-0.105\", \"📢\": \"0.421\", \"🐦\": \"0.421\", \"🐲\": \"-0.053\", \"♻\": \"0.474\", \"🌘\": \"0.579\", \"🍐\": \"0.158\", \"🌔\": \"0.579\", \"👖\": \"0.333\", \"🚺\": \"0.167\", \"😗\": \"0.611\", \"🎭\": \"0.000\", \"🐄\": \"0.278\", \"🍢\": \"-0.111\", \"🎨\": \"0.167\", \"⬇\": \"0.389\", \"🚼\": \"0.556\", \"⛲\": \"0.056\", \"🌗\": \"0.611\", \"🌖\": \"0.611\", \"🔅\": \"0.833\", \"👜\": \"0.235\", \"🐌\": \"0.647\", \"💼\": \"0.529\", \"🚕\": \"0.000\", \"🐹\": \"0.294\", \"🌠\": \"0.529\", \"🐈\": \"0.294\", \"☎\": \"0.000\", \"🌁\": \"0.176\", \"⚫\": \"0.235\", \"♧\": \"0.471\", \"🏰\": \"0.294\", \"🚵\": \"0.353\", \"🎢\": \"0.471\", \"🎷\": \"0.647\", \"🎐\": \"0.176\", \"🌇\": \"0.500\", \"⏰\": \"0.438\", \"🚂\": \"0.250\", \"🎿\": \"0.375\", \"🆔\": \"0.750\", \"⛪\": \"0.125\", \"🌒\": \"0.563\", \"🐪\": \"0.563\", \"👔\": \"0.333\", \"🔱\": \"0.067\", \"🆓\": \"0.200\", \"🐋\": \"0.200\", \"🐛\": \"0.267\", \"👕\": \"0.400\", \"🚋\": \"0.067\", \"💳\": \"0.400\", \"🌆\": \"0.133\", \"🏧\": \"0.800\", \"💡\": \"0.600\", \"🔹\": \"0.133\", \"⬅\": \"0.467\", \"🍠\": \"0.000\", \"🐫\": \"0.333\", \"🏪\": \"0.067\", \"📹\": \"0.429\", \"👞\": \"0.429\", \"🚑\": \"0.071\", \"🆘\": \"0.071\", \"👚\": \"0.571\", \"🚍\": \"0.071\", \"🐂\": \"0.143\", \"🚣\": \"0.571\", \"✳\": \"0.000\", \"🏉\": \"0.500\", \"🗻\": \"0.571\", \"🐀\": \"0.143\", \"⛺\": \"0.462\", \"🐕\": \"0.231\", \"🏂\": \"0.385\", \"👡\": \"0.385\", \"📻\": \"0.308\", \"✒\": \"0.231\", \"🌰\": \"0.538\", \"🏢\": \"0.154\", \"🎒\": \"0.462\", \"🏫\": \"-0.231\", \"📴\": \"0.615\", \"🚢\": \"0.231\", \"🚚\": \"-0.077\", \"🐉\": \"0.154\", \"🐊\": \"0.077\", \"🔔\": \"0.769\", \"🏥\": \"0.250\", \"❔\": \"0.000\", \"🚖\": \"-0.083\", \"🃏\": \"0.083\", \"☛\": \"0.333\", \"💒\": \"0.500\", \"🚤\": \"0.333\", \"🐐\": \"0.417\", \"🔚\": \"0.333\", \"🎻\": \"0.333\", \"🔷\": \"0.167\", \"🚦\": \"0.083\", \"🔓\": \"0.083\", \"🎽\": \"0.417\", \"📅\": \"0.167\", \"🎺\": \"0.583\", \"🍈\": \"-0.333\", \"✉\": \"0.250\", \"🍼\": \"0.455\", \"📀\": \"0.091\", \"🚛\": \"-0.182\", \"📓\": \"0.182\", \"☉\": \"0.182\", \"💴\": \"-0.182\", \"🐃\": \"0.000\", \"➰\": \"-0.091\", \"🔌\": \"-0.091\", \"🍄\": \"0.000\", \"📕\": \"0.182\", \"📣\": \"0.364\", \"🚓\": \"0.273\", \"🐗\": \"0.455\", \"↪\": \"0.091\", \"⛳\": \"0.636\", \"👱\": \"0.100\", \"⏳\": \"0.000\", \"💺\": \"0.200\", \"🏇\": \"-0.100\", \"☻\": \"0.200\", \"📞\": \"0.400\", \"🌉\": \"0.500\", \"🚩\": \"-0.200\", \"✎\": \"0.500\", \"📃\": \"0.400\", \"🏨\": \"0.200\", \"📌\": \"-0.400\", \"♎\": \"-0.100\", \"💷\": \"0.400\", \"🚄\": \"0.500\", \"⛵\": \"0.500\", \"🔸\": \"0.200\", \"⌛\": \"0.100\", \"🚜\": \"0.700\", \"🐆\": \"0.300\", \"👒\": \"0.200\", \"❕\": \"0.200\", \"🔛\": \"0.400\", \"♢\": \"0.300\", \"👝\": \"0.333\", \"🎋\": \"0.444\", \"👥\": \"0.222\", \"📵\": \"0.111\", \"🐡\": \"0.222\", \"🏯\": \"0.111\", \"☂\": \"0.000\", \"🔭\": \"0.333\", \"🎪\": \"0.222\", \"🐜\": \"0.444\", \"♌\": \"0.556\", \"☐\": \"-0.667\", \"👷\": \"0.222\", \"🔈\": \"0.222\", \"📄\": \"0.667\", \"📍\": \"0.111\", \"🚐\": \"0.556\", \"🚔\": \"0.000\", \"🌋\": \"0.444\", \"📡\": \"0.222\", \"⏩\": \"0.111\", \"🚳\": \"0.667\", \"☾\": \"0.000\", \"🅰\": \"0.222\", \"📥\": \"0.000\", \"🔦\": \"0.000\", \"👤\": \"0.500\", \"🚁\": \"0.125\", \"🎠\": \"0.375\", \"🐁\": \"-0.250\", \"📗\": \"0.125\", \"☮\": \"0.000\", \"♂\": \"0.125\", \"📯\": \"-0.125\", \"🔩\": \"0.125\", \"👢\": \"0.500\", \"📰\": \"0.250\", \"📶\": \"0.250\", \"🚥\": \"0.000\", \"🌄\": \"0.125\", \"🗾\": \"0.250\", \"🔶\": \"0.250\", \"🏤\": \"0.250\", \"🎩\": \"0.250\", \"Ⓜ\": \"0.250\", \"🔧\": \"-0.375\", \"🐅\": \"0.125\", \"♮\": \"0.125\", \"🅾\": \"-0.125\", \"🔄\": \"0.000\", \"☄\": \"0.000\", \"☨\": \"0.000\" };\n//console.log('emojis: ', emojis);\n\n// Create emoji regex object tjat matches the emojis from emojis object\nconst emoji_object_regex = new RegExp((RegExpEscape(Object.keys(emojis).join(' '))).replace(/\\\\\\s/g, '|'), 'g');\n//console.log('emoji_object_regex: ', emoji_object_regex);\n\n// Create emoji regex object that matches all emojis\n// Ref:\n// How to strip emojis from string in JavaScript\n// https://edvins.io/how-to-strip-emojis-from-string-in-java-script\nconst emoji_regex = new RegExp(\"([✀-➿-‑-⛿]|��|��|��)\", 'g');\n//console.log('emoji_regex: ', emoji_regex);\n\nexport { emoji_object_regex, emoji_regex, emoticon_regex, emoticons, emojis }\n"
  },
  {
    "path": "plugins/_experiments/sentiment/src/escape.js",
    "content": "/**\n* Function to escape characters in preparation for conversion to regex\n* \n* @author Brian L\n* @see {@link https://stackoverflow.com/a/7317957|Regex matching list of emoticons of various type}\n*\n* @param {string} text - The text to be escaped\n*\n* @returns {string} text - Input text with special regex characters escaped\n*  \n* \n*/\nfunction RegExpEscape(text) {\n  return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n}\nexport default RegExpEscape"
  },
  {
    "path": "plugins/_experiments/sentiment/src/lib.js",
    "content": "import { intensifiers, negations } from './data/index.js'\n\n// HELPER FUNCTIONS\n\n\n\n/**\n* Label the words of the input array as either 'negation', 'instensifier', 'opinion', or 'opinion!'\n* ('opinion!' is an opinion word that is followed by an exclamation mark)\n*\n* @author Scott Cram\n*\n* @param {Array} inputArr - The array to be labeled\n*\n* @returns {Object} labelReturnObj - Object consisting of labeling results, including:\n* @returns {Array} labelReturnObj.words - words from inputArr, less any exclamation marks\n* @returns {Array} labelReturnObj.labels - array of word types that act as labels for each element in labelReturnObj.words\n*/\nfunction labelWordArray(inputArr) {\n  // Return error array if inputArr has no elements\n  if (inputArr.length === 0) { return { 'error': 'input array has no elements' } }\n  // Initialize variables\n  const labelReturnObj = { 'words': [], 'labels': [] };\n  let wordsArr = inputArr;\n  let labelsArr = [];\n  // Classify each word in Array as\n  // either 'em' (exclamation mark), negation', 'intensifier', or 'opinion'\n  inputArr.forEach(function (element, index) {\n    if (element.includes('!')) {\n      labelsArr[index] = 'em';\n      return;\n    }\n    if (negations.includes(element)) {\n      labelsArr[index] = 'negation';\n      return;\n    }\n    if (intensifiers.includes(element)) {\n      labelsArr[index] = 'intensifier';\n      return;\n    }\n    labelsArr[index] = 'opinion';\n  });\n  // In labelsArr, look for any instances of\n  // 'opinion' followed by 'em', and if found,\n  // convert 'opnion' to 'opinion!', remove 'em',\n  // and remove exclamation mark from wordsArr\n  for (let countdown = labelsArr.length - 1; countdown >= 0; countdown--) {\n    if (countdown < labelsArr.length - 1) {\n      if ((labelsArr[countdown] === 'opinion') && (labelsArr[countdown + 1] === 'em')) {\n        labelsArr[countdown] = 'opinion!';\n        labelsArr.splice(countdown + 1, 1);\n        wordsArr.splice(countdown + 1, 1);\n      }\n    }\n  }\n  // If there is not at least 1 'opinion' in\n  // labelsArr, then return object with error\n  if ((labelsArr.indexOf('opinion') < 0) && (labelsArr.indexOf('opinion!') < 0)) {\n    return { 'error': 'no opinion-based words found' };\n  }\n  // Each 'opinion'/'opinion!' is only modified\n  // by preceeding words, so ensure that the last\n  // item in wordsArr and labelArr is an 'opinion'/'opinion!'\n  wordsArr = wordsArr.slice(0, Math.max(labelsArr.lastIndexOf('opinion'), labelsArr.lastIndexOf('opinion!')) + 1);\n  labelsArr = labelsArr.slice(0, Math.max(labelsArr.lastIndexOf('opinion'), labelsArr.lastIndexOf('opinion!')) + 1);\n  labelReturnObj.words = wordsArr;\n  labelReturnObj.labels = labelsArr;\n  return labelReturnObj;\n}\n\n/**\n* Find indices to split array at a given word\n*\n* @author Scott Cram\n*\n* @param {Array} startingArr - The array to be split\n* @param {string} splitWord - The word at which split\n*\n* @returns {Array} splitPoints - Array of numbers that, when used in pairs for Array.splice(), cane be used to split the array so that only once occurence of splitWord appears\n*\n*\n*/\n\nfunction findArraySplitPoints(startingArr, splitWord) {\n  // Count how many times the splitWord occurs in startingArr\n  const howManySplitWords = startingArr.reduce(function (accumulator, currentValue) {\n    if (currentValue.match(splitWord) !== null) { accumulator++ }\n    return accumulator;\n  }, 0);\n  // If count is less than zero, return empty array\n  if (howManySplitWords < 1) {\n    return [];\n  }\n  // Using the above count of splitWord occurences,\n  // locate splice points for array\n  let startArrCount = 0;\n  let splitWordCount = 1;\t// We can now assume at least 1 occurence of splitWord\n  const splitPoints = [startArrCount];\n  startingArr.forEach(function (element, index) {\n    if ((element.match(splitWord) !== null) && (splitWordCount < howManySplitWords)) {\n      splitPoints.push(index + 1);\n      splitPoints.push(index + 1);\n      startArrCount = index + 1;\n      splitWordCount++;\n      return;\n    }\n    if ((element.match(splitWord) !== null) && (splitWordCount === howManySplitWords)) {\n      splitPoints.push(startingArr.length);\n    }\n  });\n  return splitPoints;\n}\n\n/**\n* Chunk up included arrays into subarrays, with each subarray containing only one 'opinion'/'opinion!' and single preceeding negation and/or modifier\n*\n* @author Scott Cram\n*\n* @param {Array} wordsArr - Array of words to be chunked\n* @param {Array} labelsArr - Array of labels to be chunked\n*\n* @returns {Object} chunks - Object consisting of chunking results, including:\n* @returns {Array} chunks.words - words from inputArr, less any exclamation marks\n* @returns {Array} chunks.labels - 2D array of word types\n*/\nfunction chunkArrays(wordsArr, labelsArr) {\n  // Initialize variables\n  const wordsArr2d = [];\n  const labelsArr2d = [];\n  const chunkReturnObj = { 'word_chunks': wordsArr2d, 'label_chunks': labelsArr2d };\n  // Find points where 'opinion'/'opinion!' can be split up in array,\n  // and store them in wordLocs (word locations)\n  const wordLocs = findArraySplitPoints(labelsArr, 'opinion');\n  // Use parameters stored in wordLocs array to\n  // create 2d arrays, grouping a 'opinion' with any\n  // preceeding negations and/or intensifiers.\n  for (let index = 0; index < wordLocs.length; index += 2) {\n    wordsArr2d.push(wordsArr.slice(wordLocs[index], wordLocs[index + 1]));\n    labelsArr2d.push(labelsArr.slice(wordLocs[index], wordLocs[index + 1]));\n  }\n  // Go through each subarray, and only keep\n  // 1 closest preceeding negation, as well as\n  // 1 closest preceeding intensifier\n\n  // Iterate through labelsArr2d to work with each subarray\n  labelsArr2d.forEach(function (element, index) {\n    // Create array to hold location of a\n    // single 'negation' (index 0), a\n    // single 'intensifier' (index 1), and\n    // 'opinion'/'opinion!'\n    const tempLocArr = [];\n    // Get values of last occurences of each type of words\n    tempLocArr.push(element.lastIndexOf('negation'));\n    tempLocArr.push(element.lastIndexOf('intensifier'));\n    tempLocArr.push(Math.max(element.lastIndexOf('opinion'), element.lastIndexOf('opinion!')));\n    // Filter words and labels down to just the items at the indices in tempLocArr\n    wordsArr2d[index] = wordsArr2d[index].filter(function (_, i) {\n      return tempLocArr.includes(i);\n    });\n    labelsArr2d[index] = labelsArr2d[index].filter(function (_, i) {\n      return tempLocArr.includes(i);\n    });\n  });\n  // chunkReturnObj = {'word_chunks': wordsArr2d, 'label_chunks': labelsArr2d};\n  chunkReturnObj.word_chunks = wordsArr2d;\n  chunkReturnObj.label_chunks = labelsArr2d;\n  return chunkReturnObj;\n}\n\n/**\n* Limit a value inside a certain range\n*\n*\n* Original version:\n* @author w3resource\n* @see {@link https://www.w3resource.com/javascript-exercises/JavaScript: Limit a value inside a certain range}\n*\n* @param {number} val - The value to be tested for range\n* @param {number} min - The minimum amount in the desired range\n* @param {number} max - The maximum amount in the desired range\n*\n* @returns {number} value - If the val input is within the range of min to max, val will be returned. If val is higher than max, then max will be returned. If val is lower than min, then min will be returned.\n*\n*/\nfunction value_limit(val, min, max) {\n  return val < min ? min : (val > max ? max : val);\n}\n\n// Average all values in inputArr together\n// or leave at 0, if array is empty.\nfunction averageArray(inputArr) {\n  if (inputArr.length === 0) { return 0; }\n  return inputArr.reduce(function (accum, currentVal) {\n    return accum + currentVal;\n  }, 0) / inputArr.length;\n}\n\nexport { labelWordArray, averageArray, value_limit, chunkArrays }\n"
  },
  {
    "path": "plugins/_experiments/sentiment/src/plugin.js",
    "content": "import { emoji_object_regex, emoji_regex, emoticon_regex, emoticons, emojis } from './emoji.js'\nimport { pattern_en, pattern_en_keys } from './data/index.js'\nimport { labelWordArray, averageArray, value_limit, chunkArrays } from './lib.js'\n\n\n\nconst sentimentComp = {\n  /** add a method */\n  api: (View) => {\n\n\n    View.prototype.sentiment = function (addMood = false, addSummary = false) {\n      //console.log('addMood: ', addMood);\n      //console.log('addSummary: ', addSummary);\n      // Ensure that inputStr is text\n      let inputStr = this.text();\n      const isInputValid = typeof inputStr === 'string';\n      if ((isInputValid === false) || (inputStr === '')) {\n        return { 'error': 'Input must be a string containing text.' };\n      }\n\n      // SET DEFAULTS\n      //\n      // Create default return object with scores of 0\n      const returnObj = { 'polarity': 0, 'subjectivity': 0 };\n      // Create default empty summary array\n      const summaryArr = [];\n\n      // INPUT STRING PROCESSING\n      // \n      // Remove sarcasm symbols [!] and (!), if present\n      inputStr = inputStr.replace(/\\(!\\)|\\[!\\]/g, '').replace(/\\s+/g, ' ').trim();\n      // Create array of emoticons from input string\n      let emoticonArr = inputStr.match(emoticon_regex) || [];\n      //console.log('emoticonArr: ', emoticonArr);\n      // Create array of emoticon values using emoticonArr\n      let emoticonValArr = emoticonArr.map(function (element) { return parseFloat(emoticons[element]) }) || [];\n      //console.log('emoticonValArr: ', emoticonValArr);\n      // From inputText, get all the emojis which have scores\n      const emojisOnlyArr = inputStr.match(emoji_object_regex) || [];\n      //console.log('emojisOnlyArr: ', emojisOnlyArr);\n      // Get all the values of the emojis in emojisOnlyArr\n      const emojiValArr = emojisOnlyArr.map(function (element) { return parseFloat(emojis[element]) }) || [];\n      //console.log('emojiValArr: ', emojiValArr);\n      // Add emojisOnlyArr into emoticonArr\n      emoticonArr = emoticonArr.concat(emojisOnlyArr);\n      //console.log('emoticonArr: ', emoticonArr);\n      // Add emoticonValArr into emoticonValArr\n      emoticonValArr = emoticonValArr.concat(emojiValArr);\n      //console.log('emoticonValArr: ', emoticonValArr);\n      // Remove emoticons from inputStr,\n      // remove emojis,\n      // replace multiple exclamation marks with 1,\n      // remove apostrophes,\n      // and change entire string to lower case\n      inputStr = inputStr.replace(emoticon_regex, '').replace(emoji_regex, ' ').replace(/\\s+/g, ' ').replace(/!{2,}/g, '!').replace(/['’]/g, '').trim().toLowerCase();\n      //console.log('inputStr: ', inputStr);\n      // From inputStr, create array containing only words listed in pattern_en or exclamation marks\n      const wordArr = (inputStr.match(/\\w+|!/g)).filter(function (element) {\n        return (pattern_en_keys.includes(element) || element.includes('!'));\n      });\n      //console.log('wordArr: ', wordArr);\n      // Create array of labels of types of words in wordArr\n      const labelInfoObj = labelWordArray(wordArr);\n      //console.log('labelInfoObj: ', labelInfoObj);\n      // If wordArr is now empty,\n      // return an object with polarity and subjectivity of 0,\n      // as well as mood and summary information, if those flags\n      // are set\n      if ((wordArr.length === 0) || (labelInfoObj.hasOwnProperty('error'))) {\n        if (addMood === true) {\n          returnObj.mood = averageArray(emoticonValArr);\n          // If addSummary is true, add scored_icons\n          if (addSummary === true) {\n            const summaryObj = {};\n            summaryObj.scored_icons = emoticonArr;\n            summaryObj.mood = emoticonValArr;\n            summaryArr.push(summaryObj);\n          }\n        }\n        if (addSummary === true) { returnObj.summary = summaryArr; }\n        return returnObj;\n      }\n      // Since labelInfoObjn returned valid data,\n      // it's time to chunk the words and labels\n      // in groupd, each containing just 1\n      // 'opinion'/ 'opinion!', and the closest\n      // preceeding negation and intensifiers,\n      // if included\n      const chunkInfoObj = chunkArrays(labelInfoObj.words, labelInfoObj.labels);\n      //console.log('chunkInfoObj', chunkInfoObj);\n      const wordArr2d = chunkInfoObj.word_chunks;\n      const labelArr2d = chunkInfoObj.label_chunks;\n\n      // VALUE CALCULATION\n      // \n      // Create polarityArr and subjectivityArr arrays\n      // to hold individual calculation results before\n      // averaging them at the end.\n      const polarityValArr = [];\n      const subjectivityValArr = [];\n      // Iterate through arrays to calculate polarity and subjectivity\n      for (let index = 0; index < labelArr2d.length; index++) {\n        // Prepare this iteration's summary object\n        const summaryObject = {};\n        // Add scored_words index\n        summaryObject.scored_words = wordArr2d[index];\n        // If 'opinion!' exists, add '!' to scored_words array\n        if (labelArr2d[index].indexOf('opinion!') > -1) { summaryObject.scored_words.push('!'); }\n        // If a 'negation' exists, set value of multiplier\n        // to -0.5, otherwise, set it to 1\n        const negationMultiplier = labelArr2d[index].indexOf('negation') > -1 ? -0.5 : 1;\n        // If an 'intensifier' exists, calculate value,\n        // otherwise, default to 1\n        let intensityMultiplier = 1;\n        // Get index of location of intensifier for this index\n        const intensifierIndex = labelArr2d[index].indexOf('intensifier');\n        // If an intensifier exists...\n        if (intensifierIndex > -1) {\n          // ...get corresponding intensity score\n          // from pattern_en object\n          intensityMultiplier = parseFloat(pattern_en[wordArr2d[index][intensifierIndex]][0].replace(/i/g, ''));\n          // if negationMultiplier = -0.5, then\n          // use inverse of intensityMultiplier\n          if (negationMultiplier === -0.5) { intensityMultiplier = 1 / intensityMultiplier }\n        }\n        // Find 'opinion' or 'opinion!' in current array\n        const opinionLoc = Math.max(labelArr2d[index].indexOf('opinion'), labelArr2d[index].indexOf('opinion!'));\n        // If 'opinion!' is the current array,\n        // set exclamationMultiplier to 1.25,\n        // otherwise set it at 1\n        const exclamationMultiplier = labelArr2d[index].indexOf('opinion!') > -1 ? 1.25 : 1;\n        // Use location of 'opinion' in current array to\n        // get polarity and subjectivity values, and\n        // then multiply them by the appropriate multipliers\n        let polarityVal = (parseFloat(pattern_en[wordArr2d[index][opinionLoc]][1].replace(/p/g, ''))) * negationMultiplier * intensityMultiplier * exclamationMultiplier;\n        let subjectivityVal = (parseFloat(pattern_en[wordArr2d[index][opinionLoc]][2].replace(/s/g, ''))) * intensityMultiplier;\n        // Limit polarity to a range of -1 to 1\n        polarityVal = value_limit(polarityVal, -1, 1);\n        // Limit subjectiivity to a range of 0 to 1\n        subjectivityVal = value_limit(subjectivityVal, 0, 1);\n        polarityValArr.push(polarityVal);\n        subjectivityValArr.push(subjectivityVal);\n        // Add polarity and subjectivity of this iteration to summaryObject\n        summaryObject.polarity = polarityVal;\n        summaryObject.subjectivity = subjectivityVal;\n        // Add this iteration's information to summary array\n        summaryArr.push(summaryObject);\n      }\n      //console.log('polarityValArr', polarityValArr);\n      //console.log('subjectivityValArr', subjectivityValArr);\n      //console.log('summaryArr', summaryArr);\n      // Average values in arrays to get respective scores\n      const polarityScore = averageArray(polarityValArr);\n      const subjectivityScore = averageArray(subjectivityValArr);\n      returnObj.polarity = polarityScore;\n      returnObj.subjectivity = subjectivityScore;\n      if (addMood === true) {\n        returnObj.mood = averageArray(emoticonValArr);\n        // If addSummary is true, add scored_icons\n        if (addSummary === true) {\n          const summaryObj = {};\n          summaryObj.scored_icons = emoticonArr;\n          summaryObj.mood = emoticonValArr;\n          summaryArr.push(summaryObj);\n        }\n      }\n      if (addSummary === true) { returnObj.summary = summaryArr; }\n      return returnObj;\n    }\n  }\n}\n\nexport default sentimentComp\n\n\n"
  },
  {
    "path": "plugins/_experiments/sentiment/test.js",
    "content": "/* eslint-disable */\nimport nlp from '../../../src/three.js'\nimport plg from './src/plugin.js'\nnlp.plugin(plg)\n\n// Tests\nconsole.log(\"Test submissions to sentiment:\");\n\nconsole.log(\"\");\n\nconsole.log(\"INPUTS THAT RETURN ERRORS:\");\nconsole.log(\"-----\");\nconsole.log(\"No input:\");\nconsole.log(\"\", nlp().sentiment());\n// Expected result:\n// {error: 'Input must be a string containing text.'}\nconsole.log(\"-----\");\nconsole.log(\"Empty string:\");\nconsole.log(\"\", nlp(\"\").sentiment(\"\"));\n// Expected result:\n// {error: 'Input must be a string containing text.'}\nconsole.log(\"-----\");\nconsole.log(\"Object:\");\nconsole.log({ 'This': 'object', 'contains': 'words' }, nlp({ 'This': 'object', 'contains': 'words' }).sentiment());\nconsole.log(\"-----\");\n// Expected result:\n// {error: 'Input must be a string containing text.'}\n\nconsole.log(\"\");\n\nconsole.log(\"BASIC EXPLANATIONS:\");\nconsole.log(\"-----\");\nconsole.log(\"Polarity is the negative or positive sentiment of the score, and ranges from -1.0 (negative sentiment) to 1.0 (positive sentiment). Neutral is anything around zero (usually -0.05 to 0.05).\");\nconsole.log(\"Subjectivity is a measure of how likely it is that the string is opinion-based, and ranges from 0 (not likely to be opinion-based) to 1.0 (highly likely to be opinion-based).\");\nconsole.log(\"-----\");\nconsole.log(\"sentiment looks for known opinion-based words. The following string has none:\");\nconsole.log(\"This movie exists.\", nlp(\"This movie exists.\").sentiment());\n// Expected result:\n// {polarity: 0, subjectivity: 0}\nconsole.log(\"-----\");\nconsole.log(\"The following string has a single opinion-based word in it (\\\"good\\\"):\");\nconsole.log(\"This movie is good.\", nlp(\"This movie is good.\").sentiment());\n// Expected result:\n// {polarity: 0.7, subjectivity: 0.6}\nconsole.log(\"-----\");\nconsole.log(\"The scores can be changed in several ways.\");\nconsole.log(\"This sentence adds the intensifier \\\"very\\\". Note how the scores change from above:\");\nconsole.log(\"This movie is very good.\", nlp(\"This movie is very good.\").sentiment());\n// Expected result:\n// {polarity: 0.9099999999999999, subjectivity: 0.78}\nconsole.log(\"-----\");\nconsole.log(\"This sentence adds the negation \\\"not\\\". Note the effect of this on the scores:\");\nconsole.log(\"This movie is not good.\", nlp(\"This movie is not good.\").sentiment());\n// Expected result:\n// {polarity: -0.35, subjectivity: 0.6}\nconsole.log(\"-----\");\nconsole.log(\"Adding an exclamation mark also affects scores:\");\nconsole.log(\"This movie is good!\", nlp(\"This movie is good!\").sentiment());\n// Expected result:\n// {polarity: 0.875, subjectivity: 0.6}\nconsole.log(\"-----\");\nconsole.log(\"Combining a negation, intensifier, and an exclamation mark to the opinion-based word:\");\nconsole.log(\"This movie is not very good!\", nlp(\"This movie is not very good!\").sentiment());\n// Expected result:\n// {polarity: -0.33653846153846145, subjectivity: 0.46153846153846145}\nconsole.log(\"-----\");\nconsole.log(\"However, sentiment only looks at the 1 closest preceeding negation (if present), the 1 closest preceeding intensifier (if present), and a single exclamation mark:\");\nconsole.log(\"This movie is not not really very good!!!!\", nlp(\"This movie is not not really very good!!!!\").sentiment());\n// Expected result:\n// {polarity: -0.33653846153846145, subjectivity: 0.46153846153846145}\nconsole.log(\"-----\");\nconsole.log(\"If a negation and/or an intensifier follow the opinion-based word, they are ignored. The following sentence is scored as if (not very) didn't exist:\");\nconsole.log(\"This movie is good (not very).\", nlp(\"This movie is good (not very).\").sentiment());\n// Expected result:\n// {polarity: 0.7, subjectivity: 0.6}\nconsole.log(\"-----\");\nconsole.log(\"Moving the (not very) phrase to before the opinion-based word makes a difference in the scores:\");\nconsole.log(\"This movie is (not very) good.\", nlp(\"This movie is (not very) good.\").sentiment());\n// Expected result:\n// {polarity: -0.26923076923076916, subjectivity: 0.46153846153846145}\nconsole.log(\"-----\");\n\nconsole.log(\"\");\n\nconsole.log(\"MULTIPLE OPINION-BASED WORDS:\");\nconsole.log(\"-----\");\nconsole.log(\"Multiple opinion-based words can be used:\");\nconsole.log(\"It's not very good. In fact, it was bad.\", nlp(\"It's not very good. In fact, it was bad.\").sentiment());\n// Expected result:\n// {polarity: -0.48461538461538456, subjectivity: 0.5641192307692307}\nconsole.log(\"-----\");\nconsole.log(\"When multiple opinion-based words are used, each opinion-based word is affected by the closest preceeding single negation and/or intensifier.\");\nconsole.log(\"The following sentence is scored differently than directly above because (not very) is attributed to the following opinion-based word (bad), rather than the opinion-based word before them (good):\");\nconsole.log(\"It's good (not very). In fact, it was bad.\", nlp(\"It's good (not very). In fact, it was bad.\").sentiment());\n// Expected result:\n// {polarity: 0.48461538461538456, subjectivity: 0.5564230769230769}\nconsole.log(\"-----\");\n\nconsole.log(\"\");\n\nconsole.log(\"EMOJIS, EMOTIONS (\\\"SMILEYS\\\") AND MOOD:\");\nconsole.log(\"-----\");\nconsole.log(\"Here's a short text-style message, with no emojis or emoticons/smileys:\");\nconsole.log(\"Awesome. I love it!\", nlp(\"Awesome. I love it!\").sentiment());\n// Expected result:\n// {polarity: 0.8125, subjectivity: 0.8}\nconsole.log(\"-----\");\nconsole.log(\"Polarity and subjectivity scores are measured solely from text, so they aren't affected by the includion of emojis or emoticons/smileys:\");\nconsole.log(\"Awesome. I love it!😍\", nlp(\"Awesome. I love it!😍\").sentiment());\n// Expected result:\n// {polarity: 0.8125, subjectivity: 0.8}\nconsole.log(\"-----\");\nconsole.log(\"However, you can set the mood flag to true, and you'll see a mood score. The mood score is similar to polarity, but calculated from the emojis and emoticons/smileys.\");\nconsole.log(\"Just like polarity, mood can range from -1.0 (negative sentiment) to 1.0 (positive sentiment).\");\nconsole.log(\"Awesome. I love it!😍\", nlp(\"Awesome. I love it!😍\").sentiment(true));\n// Expected result:\n// {polarity: 0.8125, subjectivity: 0.8, mood: 0.678}\nconsole.log(\"-----\");\nconsole.log(\"Naturally, you can use multiple emoticons/smileys, and this will change the mood score:\");\nconsole.log(\"Awesome.🎉 I love it! 🤗😍:-D\", nlp(\"Awesome.🎉 I love it! 🤗😍:-D\").sentiment(true));\n// Expected result:\n// {polarity: 0.8125, subjectivity: 0.8, mood: 0.8053333333333333}\nconsole.log(\"-----\");\nconsole.log(\"You can even use mood score to detect cynicism, by noting when the polarity (text) is negative and mood (emoticons/smileys) is positive (or vice-versa):\");\nconst sentimentVal = nlp(\"The movie wasn't that good.😉 ;-)\").sentiment(true);\nconsole.log(\"The movie wasn't that good.😉 ;-)\", sentimentVal);\n// Expected result:\n// {polarity: -0.35, subjectivity: 0.6, mood: 0.35650000000000004}\nconsole.log(\"If you detect situations like this, you can calculate the average of these two scores to get the true overall polarity:\");\nconsole.log(\"(\" + sentimentVal.polarity + \" + \" + sentimentVal.mood + \") ÷ 2 = \" + ((sentimentVal.polarity + sentimentVal.mood) / 2));\n// Expected result:\n// (-0.35 + 0.35650000000000004) ÷ 2 = 0.0032500000000000306\nconsole.log(\"-----\");\n\nconsole.log(\"\");\n\nconsole.log(\"SUMMARY:\");\nconsole.log(\"-----\");\nconsole.log(\"The other flag that can be set is the summary flag.\");\nconsole.log(\"This summary includes which negation and intensifier (if any) were chunked together with which opinion-based word, as well as the polarity and subjectivity score of each chunk:\");\nconsole.log(\"It's not really very good.\", nlp(\"It's not really very good.\").sentiment(false, true));\n// Expected result:\n// {\n//   \"polarity\": -0.26923076923076916,\n//   \"subjectivity\": 0.46153846153846145,\n//   \"summary\": [\n//     {\n//       \"scored_words\": [\n//         \"not\",\n//         \"very\",\n//         \"good\"\n//       ],\n//       \"polarity\": -0.26923076923076916,\n//       \"subjectivity\": 0.46153846153846145\n//     }\n//   ]\n// }\nconsole.log(\"-----\");\nconsole.log(\"If you set both the mood flag and the summary flag to true, you can see each emoji, emoticon and how they were scored, as well:\");\nconsole.log(\"It's not really very good. 😦:-(\", nlp(\"It's not really very good. 😦:-(\").sentiment(true, true));\n// {\n//   \"polarity\": -0.26923076923076916,\n//   \"subjectivity\": 0.46153846153846145,\n//   \"mood\": -0.5589999999999999,\n//   \"summary\": [\n//     {\n//       \"scored_words\": [\n//         \"not\",\n//         \"very\",\n//         \"good\"\n//       ],\n//       \"polarity\": -0.26923076923076916,\n//       \"subjectivity\": 0.46153846153846145\n//     },\n//     {\n//       \"scored_icons\": [\n//         \":-(\",\n//         \"😦\"\n//       ],\n//       \"mood\": [\n//         -0.75,\n//         -0.368\n//       ]\n//     }\n//   ]\n// }\nconsole.log(\"-----\");\nconsole.log(\"If you set both the mood flag and the summary flag to true, but have no emojis or emoticons/smileys in the text, the scored emoticons and mood in the summary will simply be empty arrays:\");\nconsole.log(\"It's not really very good.\", nlp(\"It's not really very good.\").sentiment(true, true));\n// Expected result:\n// {\n//   \"polarity\": -0.26923076923076916,\n//   \"subjectivity\": 0.46153846153846145,\n//   \"mood\": 0,\n//   \"summary\": [\n//     {\n//       \"scored_words\": [\n//         \"not\",\n//         \"very\",\n//         \"good\"\n//       ],\n//       \"polarity\": -0.26923076923076916,\n//       \"subjectivity\": 0.46153846153846145\n//     },\n//     {\n//       \"scored_icons\": [],\n//       \"mood\": []\n//     }\n//   ]\n// }\nconsole.log(\"-----\");\n\n// Dependencies:\n// https://unpkg.com/efrt@2.7.0/builds/efrt-unpack.min.js\n// https://unpkg.com/compromise"
  },
  {
    "path": "plugins/dates/README.md",
    "content": "<div align=\"center\">\n  <img src=\"https://cloud.githubusercontent.com/assets/399657/23590290/ede73772-01aa-11e7-8915-181ef21027bc.png\" />\n\n  <div>date-parsing plugin for <a href=\"https://github.com/spencermountain/compromise/\">compromise</a></div>\n\n  <!-- npm version -->\n  <a href=\"https://npmjs.org/package/compromise-dates\">\n    <img src=\"https://img.shields.io/npm/v/compromise-dates.svg?style=flat-square\" />\n  </a>\n\n  <!-- file size -->\n  <a href=\"https://unpkg.com/compromise-dates/builds/compromise-dates.min.js\">\n    <img src=\"https://badge-size.herokuapp.com/spencermountain/compromise/master/plugins/dates/builds/compromise-dates.min.js\" />\n  </a>\n\n  <div align=\"center\">\n    <code>npm install compromise-dates</code>\n  </div>\n</div>\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\nThis library is an earnest attempt to get date information out of text, in a clear way -\n\n<div >\n<img height=\"25px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>- including all informal text formats, and folksy shorthands.\n</div>\n\n<!-- spacer -->\n<img height=\"15px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n```js\nimport nlp from 'compromise'\nimport datePlugin from 'compromise-dates'\nnlp.plugin(datePlugin)\n\nlet doc = nlp('the second monday of february')\ndoc.dates().get()[0]\n/*\n  { start: '2021-02-08T00:00:00.000Z', end: '2021-02-08T23:59:59.999Z'}\n*/\n```\n\n<img height=\"10px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<img height=\"15px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221632-b9094000-ffb7-11e9-99e0-b48edd6cdf8a.png\"/>\n</div>\n\n<div align=\"left\">\n  <img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>• <b><i>Tokenization</i></b> and <b><i>disambiguation</i></b> with compromise</i>.\n</div>\n<div align=\"left\">\n  <img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>• <b><i>Timezone</i></b> and <b><i>DST</i></b> reckoning with <a href=\"https://github.com/spencermountain/spacetime\">spacetime <sup>[1]</sup></a>\n</div>\n<div align=\"left\">\n  <img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>• <b><i>Number-parsing</i></b> with <i><a href=\"https://github.com/spencermountain/compromise/tree/master/plugins/numbers\">compromise-numbers <sup>[1]</sup></a></i>\n</div>\n<div align=\"left\">\n  <img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>• <b><i>Timezone reconciliation</i></b> with <a href=\"https://github.com/spencermountain/spacetime-informal\">spacetime-informal <sup>[1]</sup></a>\n</div>\n\n<img height=\"55px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<img  src=\"https://user-images.githubusercontent.com/399657/109049133-e5156c80-76a5-11eb-9690-e8af1e3764b1.png\" />\n\n<img height=\"35px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<div align=\"center\">\n<h2><a href=\"http://compromise.cool/dates/\">Demo</a></h2>\n</div>\n\n<img height=\"15px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n### _Things it does well:_\n\n| `explicit-dates`                    |       <sup>_description_</sup>        |          `Start` |            `End` |\n| ----------------------------------- | :-----------------------------------: | ---------------: | ---------------: |\n| _march 2nd_                         |                                       | March 2, 12:00am | March 2, 11:59pm |\n| _2 march_                           |                                       |               '' |               '' |\n| _tues march 2_                      |                                       |               '' |               '' |\n| _march the second_                  | <sup>_natural-language number_</sup>  |               '' |               '' |\n| _on the 2nd_                        |     <sup>_implicit months_</sup>      |               '' |               '' |\n| _tuesday the 2nd_                   |      <sup>_date-reckoning_</sup>      |               '' |               '' |\n| <br/>**`numeric-dates:`**           |                                       |\n| _2020/03/02_                        |       <sup>_iso formats_</sup>        |               '' |               '' |\n| _2020-03-02_                        |                                       |               '' |               '' |\n| _03-02-2020_                        |     <sup>_british formats_</sup>      |               '' |               '' |\n| _03/02_                             |                                       |               '' |               '' |\n| _2020.08.13_                        |         <sup>_alt-ISO_</sup>          |               '' |               '' |\n| <br/>**`named-dates:`**             |                                       |\n| _today_                             |                                       |                - |                - |\n| _tomorrow_                          |                                       |               '' |               '' |\n| _christmas eve_                     |    <sup>_calendar-holidays_</sup>     |  Dec 24, 12:00am |  Dec 24, 11:59pm |\n| _easter_                            |  <sup>_astronomical holidays_</sup>   |        -depends- |                - |\n| _q1_                                |                                       |   Jan 1, 12:00am |  Mar 31, 11:59pm |\n| <br/>**`times:`**                   |                                       |\n| _2pm_                               |                                       |               '' |               '' |\n| _2:12pm_                            |                                       |               '' |               '' |\n| _2:12_                              |                                       |               '' |               '' |\n| _02:12:00_                          |     <sup>_weird iso-times_</sup>      |               '' |               '' |\n| _two oclock_                        |     <sup>_written formats_</sup>      |               '' |               '' |\n| _before 1_                          |                                       |               '' |               '' |\n| _noon_                              |                                       |               '' |               '' |\n| _at night_                          |    <sup>_informal daytimes_</sup>     |               '' |               '' |\n| _in the morning_                    |                                       |               '' |               '' |\n| _tomorrow evening_                  |                                       |               '' |               '' |\n| <br/>**`timezones:`**               |                                       |\n| _eastern time_                      |  <sup>_informal zone support_</sup>   |               '' |               '' |\n| _est_                               |      <sup>_TZ shorthands_</sup>       |               '' |               '' |\n| _peru time_                         |                                       |               '' |               '' |\n| _..in beirut_                       |       <sup>_by location_</sup>        |               '' |               '' |\n| _GMT+9_                             |    <sup>_by UTC/GMT offset_</sup>     |               '' |               '' |\n| _-4h_                               |                  ''                   |               '' |               '' |\n| _Canada/Eastern_                    |        <sup>_IANA codes_</sup>        |               '' |               '' |\n| <br/>**`relative durations:`**      |                                       |\n| _this march_                        |                                       |               '' |               '' |\n| _this week_                         |                                       |               '' |               '' |\n| _this sunday_                       |                                       |               '' |               '' |\n| _next april_                        |                                       |               '' |               '' |\n| _this past year_                    |                                       |               '' |               '' |\n| _second week of march_              |                                       |               '' |               '' |\n| _last weekend of march_             |                                       |               '' |               '' |\n| _last spring_                       |                                       |               '' |               '' |\n| _the saturday after next_           |                                       |               '' |               '' |\n| <br/>**`punted dates:`**            |                                       |\n| _in seven weeks_                    |       <sup>_now+duration_</sup>       |               '' |               '' |\n| _two days after june 6th_           |      <sup>_date+duration_</sup>       |               '' |               '' |\n| _2 weeks from now_                  |                                       |               '' |               '' |\n| _2 weeks after june_                |                                       |               '' |               '' |\n| _2 years, 4 months, and 5 days ago_ |    <sup>_complex durations_</sup>     |               '' |               '' |\n| _a week and a half before_          |   <sup>_written-out numbers_</sup>    |               '' |               '' |\n| _a week friday_                     |       <sup>_idiom format_</sup>       |               '' |               '' |\n| <br/>**`start/end:`**               |                                       |\n| _end of the week_                   |  <sup>_up-against the ending_</sup>   |               '' |               '' |\n| _start of next year_                |   <sup>_lean-toward starting_</sup>   |               '' |               '' |\n| _middle of q2 last year_            | <sup>_rough-center calculation_</sup> |               '' |               '' |\n| <br/>**`date-ranges:`**             |                                       |\n| _between june and july_             |     <sup>_explicit ranges_</sup>      |               '' |               '' |\n| _from today to next haloween_       |                                       |               '' |               '' |\n| _aug 1 - aug 31_                    |       <sup>_dash-ranges_</sup>        |               '' |               '' |\n| _22-23 February_                    |                                       |               '' |               '' |\n| _today to next friday_              |                                       |               '' |               '' |\n| _during june_                       |                                       |               '' |               '' |\n| _aug to june 1999_                  |    <sup>_shared range info_</sup>     |               '' |               '' |\n| _before [2019]_                     |       <sup>_up-to a date_</sup>       |               '' |               '' |\n| _by march_                          |                                       |               '' |               '' |\n| _after february_                    |     <sup>_date-to-infinity_</sup>     |               '' |               '' |\n| <br/>**`repeating-intervals:`**     |                                       |\n| _any wednesday_                     |    <sup>_n-repeating dates_</sup>     |                  |\n| _any day in June_                   | <sup>_repeating-date in range_</sup>  |       June 1 ... |       .. June 30 |\n| _any wednesday this week_           |                                       |               '' |               '' |\n| _weekends in July_                  |  <sup>_more-complex interval_</sup>   |               '' |               '' |\n| _every weekday until February_      |   <sup>_interval until date_</sup>    |               '' |               '' |\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n### _Things it does awkwardly:_\n\n| _`hmmm,`_                |            <sup>_description_</sup>            | `Start` | `End` |\n| ------------------------ | :--------------------------------------------: | :-----: | :---: |\n| _middle of 2019/June_    |         tries to find the sorta-center         | June 15 |  ''   |\n| _good friday 2025_       |  tries to reckon astronomically-set holidays   |   ''    |  ''   |\n| _Oct 22 1975 2am in PST_ | historical DST changes (assumes current dates) |   ''    |  ''   |\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n### _Things it doesn't do:_\n\n| _😓,_                                       | <sup>_description_</sup> | `Start` | `End` |\n| ------------------------------------------- | :----------------------: | :-----: | :---: |\n| _not this Saturday, but the Saturday after_ |   self-reference logic   |   ''    |  ''   |\n| _3 years ago tomorrow_                      |    folksy short-hand     |   ''    |  ''   |\n| _2100_                                      |  military time formats   |   ''    |  ''   |\n| _may 97_                                    |   'bare' 2-digit years   |   ''    |  ''   |\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n<div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221814-05ed1680-ffb8-11e9-8b6b-c7528d163871.png\"/>\n</div>\n\n## API\n\n- **[.dates()](https://observablehq.com/@spencermountain/compromise-dates)** - find dates like `June 8th` or `03/03/18`\n  - **[.dates().get()](https://observablehq.com/@spencermountain/compromise-dates)** - simple start/end json result\n  - **[.dates().json()](https://observablehq.com/@spencermountain/compromise-dates)** - overloaded output with date metadata\n  - **[.dates().format('')](https://observablehq.com/@spencermountain/compromise-dates)** - convert the dates to specific formats\n  - **[.dates().isBefore(iso)](https://observablehq.com/@spencermountain/compromise-dates)** - return only dates occuring before given date\n  - **[.dates().isAfter(iso)](https://observablehq.com/@spencermountain/compromise-dates)** - return only dates occuring after given date\n  - **[.dates().isSame(unit, iso)](https://observablehq.com/@spencermountain/compromise-dates)** - return only dates within a given year, month, date\n- **[.durations()](https://observablehq.com/@spencermountain/compromise-dates)** - `2 weeks` or `5mins`\n  - **[.durations().get()](https://observablehq.com/@spencermountain/compromise-dates)** - return simple json for duration\n  - **[.durations().json()](https://observablehq.com/@spencermountain/compromise-dates)** - overloaded output with duration metadata\n- **[.times()](https://observablehq.com/@spencermountain/compromise-dates)** - `4:30pm` or `half past five`\n  - **[.durations().get()](https://observablehq.com/@spencermountain/compromise-dates)** - return simple json for times\n  - **[.times().json()](https://observablehq.com/@spencermountain/compromise-dates)** - overloaded output with time metadata\n\n<!-- spacer -->\n<img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n### Configuration:\n\n`.dates()` accepts an optional object, that lets you set the context for the date parsing.\n\n```js\nconst context = {\n  timezone: 'Canada/Eastern', //the default timezone is 'ETC/UTC'\n  today: '2020-02-20', //the implicit, or reference day/year\n  punt: { weeks: 2 }, // the implied duration to use for 'after june 2nd'\n  dayStart: '8:00am',\n  dayEnd: '5:30pm',\n  dmy : false //assume british-format dates, when unclear\n}\n\nnlp('in two days').dates(context).get()\n/*\n  [{ start: '2020-02-22T08:00:00.000+5:00', end: '2020-02-22T17:30:00.000+5:00' }]\n*/\n```\n\n<img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n## _Opinions_:\n\n### _Start of week:_\n\nBy default, weeks start on a Monday, and _'next week'_ will run from Monday morning to Sunday night.\nThis can be configued in spacetime, but right now we are not passing-through this config.\n\n### _Implied durations:_\n\n_'after October'_ returns a range starting **Nov 1st**, and ending **2-weeks** after, by default.\nThis can be configured by setting `punt` param in the context object:\n\n```js\ndoc.dates({ punt: { month: 1 } })\n```\n\n### _Future bias:_\n\n_'May 7th'_ will prefer a May 7th in the future.\n\nThe parser will return a past-date though, in the current-month:\n\n```js\n// from march 2nd\nnlp('feb 30th').dates({ today: '2021-02-01' }).get()\n```\n\n### _This/Next/Last:_\n\nnamed-weeks or months eg _'this/next/last week'_ are mostly straight-forward.\n\n#### _This monday_\n\nA bare 'monday' will always refer to itself, or the upcoming monday.\n\n- Saying _'this monday'_ on monday, is itself.\n- Saying _'this monday'_ on tuesday , is next week.\n\nLikewise, _'this june'_ in June, is itself. _'this june'_ in any other month, is the nearest June in the future.\n\nFuture versions of this library could look at sentence-tense to help disambiguate these dates - _'i paid on monday'_ vs _'i will pay on monday'_.\n\n#### _Last monday_\n\nIf it's Tuesday, _'last monday'_ will not mean yesterday.\n\n- Saying _'last monday'_ on a tuesday will be -1 week.\n- Saying _'a week ago monday'_ will also work.\n- Saying _'this past monday'_ will return yesterday.\n\nFor reference, **Wit.ai** & **chronic** libraries both return yesterday. **Natty** and **SugarJs** returns -1 week, like we do.\n\n_'last X'_ can be less than 7 days backward, if it crosses a week starting-point:\n\n- Saying _'last friday'_ on a monday will be only a few days back.\n\n#### _Next Friday_\n\nIf it's Tuesday, _'next wednesday'_ will not be tomorrow. It will be a week after tomorrow.\n\n- Saying _'next wednesday'_ on a tuesday, will be +1 week.\n- Saying _'a week wednesday'_ will also be +1 week.\n- Saying _'this coming wednesday'_ will be tomorrow.\n\nFor reference, **Wit.ai**, **chronic**, and **Natty** libraries all return tomorrow. **SugarJs** returns +1 week, like we do.\n\n### _Nth Week:_\n\nThe first week of a month, or a year is the first week _with a thursday in it_. This is a weird, but widely-held standard. I believe it's a military formalism. It cannot be (easily) configued. This means that the start-date for _first week of January_ may be a Monday in December, etc.\n\nAs expected, _first monday of January_ will always be in January.\n\n### _British/American ambiguity:_\n\nby default, we use the same interpretation of dates as javascript does - we assume `01/02/2020` is Jan 2nd, (US-version) but allow `13/01/2020` to be Jan 13th (UK-version).\n\nif you want to co-erce an interpretation of `02/03/1999`, you can set it with the `dmy:true` option:\n```js\nnlp('02/03/1999').dates().get() //February 3\nnlp('02/03/1999').dates({dmy:true}).get() // March 2\n```\nISO dates, (like `1999-03-02`) are unaffected by the change.\n\n### _Seasons:_\n\nBy default, _'this summer'_ will return **June 1 - Sept 1**, which is northern hemisphere ISO.\nConfiguring the default hemisphere should be possible in the future.\n\n### _Day times:_\n\nThere are some hardcoded times for _'lunch time'_ and others, but mainly, a day begins at `12:00am` and ends at `11:59pm` - the last millisecond of the day.\n\n### _Invalid dates:_\n\ncompromise will tag anything that looks like a date, but not validate the dates until they are parsed.\n\n- _'january 34th 2020'_ will return **Jan 31 2020**.\n- _'tomorrow at 2:62pm'_ will return just return 'tomorrow'.\n- _'6th week of february_ will return the 2nd week of march.\n- Setting an hour that's skipped, or repeated by a DST change will return the closest valid time to the DST change.\n\n### _Inclusive/exclusive ranges:_\n\n_'between january and march'_ will include all of march. This is usually pretty-ambiguous normally.\n\n### _Date greediness:_\n\nThis library makes no assumptions about the input text, and is careful to avoid false-positive dates.\nIf you know your text is a date, you can crank-up the date-tagger with a [compromise-plugin](https://observablehq.com/@spencermountain/compromise-plugins), like so:\n\n```js\nnlp.extend(function (Doc, world) {\n  // ambiguous words\n  world.addWords({\n    weds: 'WeekDay',\n    wed: 'WeekDay',\n    sat: 'WeekDay',\n    sun: 'WeekDay',\n  })\n  world.postProcess(doc => {\n    // tag '2nd quarter' as a date\n    doc.match('#Ordinal quarter').tag('#Date')\n    // tag '2/2' as a date (not a fraction)\n    doc.match('/[0-9]{1,2}/[0-9]{1,2}/').tag('#Date')\n  })\n})\n```\n\n### _Misc:_\n\n- _'thursday the 16th'_ - will set to the 16th, even if it's not thursday\n- _'in a few hours/years'_ - in 2 hours/years\n- _'jan 5th 2008 to Jan 6th the following year'_ - date-range explicit references\n- assume _'half past 5'_ is 5pm\n\n<!-- spacer -->\n<div align=\"center\">\n  <img height=\"40px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n  <hr/>\n</div>\n<div align=\"center\">\n  <img height=\"50px\" src=\"https://user-images.githubusercontent.com/399657/68221632-b9094000-ffb7-11e9-99e0-b48edd6cdf8a.png\"/>\n</div>\n\n### _About:_\n\n<!-- spacer -->\n<img height=\"10px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n<div align=\"left\">\n  <img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>1 - <b>Regular-expressions</b> are too-brittle to parse dates.\n</div>\n\n<div align=\"left\">\n  <img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>2 - <b>Neural-nets</b> are too-wonky to parse dates.\n</div>\n\n<div align=\"left\">\n  <img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>3 - A <b>corporation</b>, or <b>startup</b> is the wrong place to build a universal date-parser.\n</div>\n\n<!-- spacer -->\n<img height=\"40px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\nParsing <ins>_dates_</ins>, <ins>_times_</ins>, <ins>_durations_</ins>, and <ins>_intervals_</ins> from natural language can be a solved-problem.\n\nA rule-based, community open-source library - _one based on simple NLP_ - is the best way to build a natural language date parser - commercial, or otherwise - for the frontend, or the backend.\n\nThe _[match-syntax](https://observablehq.com/@spencermountain/compromise-match-syntax)_ is effective and easy, _javascript_ is prevailing, and the more people who contribute, the better.\n\n<img height=\"40px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n### See also\n\n- [Duckling](https://duckling.wit.ai/) - by wit.ai (facebook)\n- [Sugarjs/dates](https://sugarjs.com/dates/) - by Andrew Plummer (js)\n- [Chronic](https://github.com/mojombo/chronic) - by Tom Preston-Werner (Ruby)\n- [SUTime](https://nlp.stanford.edu/software/sutime.shtml) - by Angel Chang, Christopher Manning (Java)\n- [Natty](http://natty.joestelmach.com/) - by Joe Stelmach (Java)\n- [rrule](https://github.com/jakubroztocil/rrule) - repeating date-interval handler (js)\n- [ParseDateTime](https://pypi.org/project/parsedatetime/) by Mike Taylor (Python)\n\n<div align=\"center\">\n  <img height=\"40px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n</div>\n\ncompromise-date is sponsored by <a href=\"https://www.simform.com/\"><img src=\"https://user-images.githubusercontent.com/399657/107404468-4f3de700-6ad4-11eb-9d60-7a90625b57d6.png\" width=\"150px\"/></a>\n\n**MIT** licenced\n"
  },
  {
    "path": "plugins/dates/builds/compromise-dates.cjs",
    "content": "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.compromiseDates = factory());\n})(this, (function () { 'use strict';\n\n  // chop things up into bite-size pieces\n  const split = function (dates) {\n    let m = null;\n    // don't split anything if it looks like a range\n    if (dates.has('^(between|within) #Date')) {\n      return dates\n    }\n\n    if (dates.has('#Month')) {\n      // 'june 5, june 10'\n      m = dates.match('[#Month #Value] and? #Month', 0).ifNo('@hasDash$');\n      if (m.found) {\n        dates = dates.splitAfter(m);\n      }\n\n      // '5 june, 10 june'\n      m = dates.match('[#Value #Month] and? #Value #Month', 0);\n      if (m.found) {\n        dates = dates.splitAfter(m);\n      }\n\n      // 'june, august'\n      m = dates.match('^[#Month] and? #Month #Ordinal?$', 0);\n      if (m.found) {\n        dates = dates.splitAfter(m);\n      }\n\n      // 'june 5th, june 10th'\n      m = dates.match('[#Month #Value] #Month', 0).ifNo('@hasDash$');\n      if (m.found) {\n        dates = dates.splitAfter(m);\n      }\n    }\n\n    if (dates.has('#WeekDay')) {\n      // 'tuesday, wednesday'\n      m = dates.match('^[#WeekDay] and? #WeekDay$', 0).ifNo('@hasDash$');\n      if (m.found) {\n        dates = dates.splitAfter(m);\n      }\n\n      // 'tuesday, wednesday, and friday'\n      m = dates.match('#WeekDay #WeekDay and? #WeekDay');\n      if (m.found) {\n        dates = dates.splitOn('#WeekDay');\n      }\n\n      // monday, wednesday\n      m = dates.match('[#WeekDay] (and|or|this|next)? #WeekDay', 0).ifNo('@hasDash$');\n      if (m.found) {\n        dates = dates.splitAfter('#WeekDay');\n      }\n    }\n\n    // next week tomorrow\n    m = dates.match('(this|next) #Duration [(today|tomorrow|yesterday)]', 0);\n    if (m.found) {\n      dates = dates.splitBefore(m);\n    }\n    // tomorrow 15 march\n    m = dates.match('[(today|tomorrow|yesterday)] #Value #Month', 0);\n    if (m.found) {\n      dates = dates.splitAfter(m);\n    }\n    // tomorrow yesterday\n    m = dates.match('[(today|tomorrow|yesterday)] (today|tomorrow|yesterday|#WeekDay)', 0).ifNo('@hasDash$');\n    if (m.found) {\n      dates = dates.splitAfter(m);\n    }\n    //1998 and 1999\n    m = dates.match('#Year [and] #Year', 0);\n    if (m.found) {\n      dates = dates.splitAfter(m);\n    }\n    // cleanup any splits\n    dates = dates.not('^and');\n    dates = dates.not('and$');\n    return dates\n  };\n\n  const findDate = function (doc) {\n    let dates = doc.match('#Date+');\n    // ignore only-durations like '20 minutes'\n    dates = dates.filter(m => {\n      let isDuration = m.has('^#Duration+$') || m.has('^#Value #Duration+$');\n      // allow 'q4', etc\n      if (isDuration === true && m.has('(#FinancialQuarter|quarter)')) {\n        return true\n      }\n      return isDuration === false\n    });\n    // 30 minutes on tuesday\n    let m = dates.match('[#Cardinal #Duration (in|on|this|next|during|for)] #Date', 0);\n    if (m.found) {\n      dates = dates.not(m);\n    }\n    // 30 minutes tuesday\n    m = dates.match('[#Cardinal #Duration] #WeekDay', 0);\n    if (m.found) {\n      dates = dates.not(m);\n    }\n    // tuesday for 30 mins\n    m = dates.match('#Date [for #Value #Duration]$', 0);\n    if (m.found) {\n      dates = dates.not(m);\n    }\n    // '20 minutes june 5th'\n    m = dates.match('[#Cardinal #Duration] #Date', 0); //but allow '20 minutes ago'\n    if (m.found && !dates.has('#Cardinal #Duration] (ago|from|before|after|back)')) {\n      dates = dates.not(m);\n    }\n    // for 20 minutes\n    m = dates.match('for #Cardinal #Duration');\n    if (m.found) {\n      dates = dates.not(m);\n    }\n    // 'one saturday'\n    dates = dates.notIf('^one (#WeekDay|#Month)$');\n    // tokenize the dates\n    dates = split(dates);\n\n    // $5 an hour\n    dates = dates.notIf('(#Money|#Percentage)');\n    dates = dates.notIf('^per #Duration');\n    return dates\n  };\n\n  const knownUnits = {\n    second: true,\n    minute: true,\n    hour: true,\n    day: true,\n    week: true,\n    weekend: true,\n    month: true,\n    season: true,\n    quarter: true,\n    year: true,\n  };\n\n  const aliases$2 = {\n    wk: 'week',\n    min: 'minute',\n    sec: 'second',\n    weekend: 'week', //for now...\n  };\n\n  const parseUnit = function (m) {\n    let unit = m.match('#Duration').text('normal');\n    unit = unit.replace(/s$/, '');\n    // support shorthands like 'min'\n    if (aliases$2.hasOwnProperty(unit)) {\n      unit = aliases$2[unit];\n    }\n    return unit\n  };\n\n  //turn '5 weeks before' to {weeks:5}\n  const parseShift = function (doc) {\n    let result = {};\n    let m = doc.none();\n    let shift = doc.match('#DateShift+');\n    if (shift.found === false) {\n      return { res: result, m }\n    }\n\n    // '5 weeks'\n    shift.match('#Cardinal #Duration').forEach((ts) => {\n      let num = ts.match('#Cardinal').numbers().get()[0];\n      if (num && typeof num === 'number') {\n        let unit = parseUnit(ts);\n        if (knownUnits[unit] === true) {\n          result[unit] = num;\n        }\n      }\n    });\n    //is it 2 weeks ago?  → -2\n    if (shift.has('(before|ago|hence|back)$') === true) {\n      Object.keys(result).forEach((k) => (result[k] *= -1));\n    }\n    m = shift.match('#Cardinal #Duration');\n    shift = shift.not(m);\n\n    // supoprt '1 day after tomorrow'\n    m = shift.match('[<unit>#Duration] [<dir>(after|before)]');\n    if (m.found) {\n      let unit = m.groups('unit').text('reduced');\n      // unit = unit.replace(/s$/, '')\n      let dir = m.groups('dir').text('reduced');\n      if (dir === 'after') {\n        result[unit] = 1;\n      } else if (dir === 'before') {\n        result[unit] = -1;\n      }\n    }\n\n    // in half an hour\n    m = shift.match('half (a|an) [#Duration]', 0);\n    if (m.found) {\n      let unit = parseUnit(m);\n      result[unit] = 0.5;\n    }\n\n    // a couple years\n    m = shift.match('a (few|couple) [#Duration]', 0);\n    if (m.found) {\n      let unit = parseUnit(m);\n      result[unit] = m.has('few') ? 3 : 2;\n    }\n\n    // finally, remove it from our text\n    m = doc.match('#DateShift+');\n    return { result, m }\n  };\n\n  /*\n  a 'counter' is a Unit determined after a point\n    * first hour of x\n    * 7th week in x\n    * last year in x\n    * \n  unlike a shift, like \"2 weeks after x\"\n  */\n  const oneBased = {\n    minute: true,\n  };\n\n  const getCounter = function (doc) {\n    // 7th week of\n    let m = doc.match('[<num>#Value] [<unit>#Duration+] (of|in)');\n    if (m.found) {\n      let obj = m.groups();\n      let num = obj.num.numbers().get()[0];\n      let unit = obj.unit.text('reduced');\n      let result = {\n        unit: unit,\n        num: Number(num) || 0,\n      };\n      // 0-based or 1-based units\n      if (!oneBased[unit]) {\n        result.num -= 1;\n      }\n      return { result, m }\n    }\n    // first week of\n    m = doc.match('[<dir>(first|initial|last|final)] [<unit>#Duration+] (of|in)');\n    if (m.found) {\n      let obj = m.groups();\n      let dir = obj.dir.text('reduced');\n      let unit = obj.unit.text('reduced');\n      if (dir === 'initial') {\n        dir = 'first';\n      }\n      if (dir === 'final') {\n        dir = 'last';\n      }\n      let result = {\n        unit: unit,\n        dir: dir,\n      };\n      return { result, m }\n    }\n\n    return { result: null, m: doc.none() }\n  };\n\n  const MSEC_IN_HOUR = 60 * 60 * 1000;\n\n  //convert our local date syntax a javascript UTC date\n  const toUtc = (dstChange, offset, year) => {\n    const [month, rest] = dstChange.split('/');\n    const [day, hour] = rest.split(':');\n    return Date.UTC(year, month - 1, day, hour) - (offset * MSEC_IN_HOUR)\n  };\n\n  // compare epoch with dst change events (in utc)\n  const inSummerTime = (epoch, start, end, summerOffset, winterOffset) => {\n    const year = new Date(epoch).getUTCFullYear();\n    const startUtc = toUtc(start, winterOffset, year);\n    const endUtc = toUtc(end, summerOffset, year);\n    // simple number comparison now\n    return epoch >= startUtc && epoch < endUtc\n  };\n\n  /* eslint-disable no-console */\n\n  // this method avoids having to do a full dst-calculation on every operation\n  // it reproduces some things in ./index.js, but speeds up spacetime considerably\n  const quickOffset = s => {\n    let zones = s.timezones;\n    let obj = zones[s.tz];\n    if (obj === undefined) {\n      console.warn(\"Warning: couldn't find timezone \" + s.tz);\n      return 0\n    }\n    if (obj.dst === undefined) {\n      return obj.offset\n    }\n\n    //get our two possible offsets\n    let jul = obj.offset;\n    let dec = obj.offset + 1; // assume it's the same for now\n    if (obj.hem === 'n') {\n      dec = jul - 1;\n    }\n    let split = obj.dst.split('->');\n    let inSummer = inSummerTime(s.epoch, split[0], split[1], jul, dec);\n    if (inSummer === true) {\n      return jul\n    }\n    return dec\n  };\n\n  var data = {\n    \"9|s\": \"2/dili,2/jayapura\",\n    \"9|n\": \"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,2/yakutsk,11/palau,japan,rok\",\n    \"9.5|s|04/06:03->10/05:04\": \"4/adelaide,4/broken_hill,4/south,4/yancowinna\",\n    \"9.5|s\": \"4/darwin,4/north\",\n    \"8|s|03/13:01->10/02:00\": \"12/casey\",\n    \"8|s\": \"2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west,singapore\",\n    \"8|n\": \"2/brunei,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator,2/choibalsan,hongkong,prc,roc\",\n    \"8.75|s\": \"4/eucla\",\n    \"7|s\": \"12/davis,2/jakarta,9/christmas\",\n    \"7|n\": \"2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/ho_chi_minh,2/tomsk,2/vientiane,2/saigon\",\n    \"6|s\": \"12/vostok\",\n    \"6|n\": \"2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu\",\n    \"6.5|n\": \"2/yangon,9/cocos,2/rangoon\",\n    \"5|s\": \"12/mawson,9/kerguelen\",\n    \"5|n\": \"2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad\",\n    \"5.75|n\": \"2/kathmandu,2/katmandu\",\n    \"5.5|n\": \"2/kolkata,2/colombo,2/calcutta\",\n    \"4|s\": \"9/reunion\",\n    \"4|n\": \"2/baku,2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,9/mahe,9/mauritius,2/volgograd\",\n    \"4.5|n\": \"2/kabul\",\n    \"3|s\": \"12/syowa,9/antananarivo\",\n    \"3|n|04/25:02->10/30:24\": \"0/cairo,egypt\",\n    \"3|n|04/12:04->10/25:02\": \"2/gaza,2/hebron\",\n    \"3|n|03/30:05->10/26:04\": \"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kyiv,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia,8/kiev,eet\",\n    \"3|n|03/30:04->10/26:03\": \"8/chisinau,8/tiraspol\",\n    \"3|n|03/30:02->10/25:24\": \"2/beirut\",\n    \"3|n|03/28:04->10/26:02\": \"2/jerusalem,2/tel_aviv,israel\",\n    \"3|n\": \"0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/amman,2/baghdad,2/bahrain,2/damascus,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,2/istanbul,turkey,w-su\",\n    \"3.5|n\": \"2/tehran,iran\",\n    \"2|s|03/30:04->10/26:02\": \"12/troll\",\n    \"2|s\": \"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane\",\n    \"2|n|03/30:04->10/26:03\": \"0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen,poland,cet,met\",\n    \"2|n\": \"0/blantyre,0/bujumbura,0/khartoum,0/kigali,0/tripoli,8/kaliningrad,libya\",\n    \"1|s\": \"0/brazzaville,0/kinshasa,0/luanda,0/windhoek\",\n    \"1|n|03/30:03->10/26:02\": \"3/canary,3/faroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faeroe,eire,8/belfast,gb-eire,gb,portugal,wet\",\n    \"1|n\": \"0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis\",\n    \"14|n\": \"11/kiritimati\",\n    \"13|s\": \"11/apia,11/tongatapu\",\n    \"13|n\": \"11/enderbury,11/kanton,11/fakaofo\",\n    \"12|s|04/06:03->09/28:04\": \"12/mcmurdo,11/auckland,12/south_pole,nz\",\n    \"12|s\": \"11/fiji\",\n    \"12|n\": \"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis,kwajalein\",\n    \"12.75|s|04/06:03->04/06:02\": \"11/chatham,nz-chat\",\n    \"11|s|04/06:03->10/05:04\": \"12/macquarie\",\n    \"11|s\": \"11/bougainville\",\n    \"11|n\": \"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape\",\n    \"11.5|n|04/06:03->10/05:04\": \"11/norfolk\",\n    \"10|s|04/06:03->10/05:04\": \"4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria\",\n    \"10|s\": \"12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland\",\n    \"10|n\": \"2/ust-nera,2/vladivostok,11/guam,11/saipan,11/chuuk,11/truk,11/yap\",\n    \"10.5|s|04/06:01->10/05:02\": \"4/lord_howe,4/lhi\",\n    \"0|s|02/23:03->04/06:04\": \"0/casablanca,0/el_aaiun\",\n    \"0|n|03/30:02->10/26:01\": \"3/azores\",\n    \"0|n|03/30:01->10/25:24\": \"1/scoresbysund\",\n    \"0|n\": \"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/greenwich,13/uct,13/universal,13/zulu,gmt-0,gmt+0,gmt0,greenwich,iceland,uct,universal,utc,zulu,13/unknown,factory\",\n    \"-9|n|03/09:04->11/02:02\": \"1/adak,1/atka,us/aleutian\",\n    \"-9|n\": \"11/gambier\",\n    \"-9.5|n\": \"11/marquesas\",\n    \"-8|n|03/09:04->11/02:02\": \"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska\",\n    \"-8|n\": \"11/pitcairn\",\n    \"-7|n|03/09:04->11/02:02\": \"1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific\",\n    \"-7|n\": \"1/creston,1/dawson,1/dawson_creek,1/fort_nelson,1/hermosillo,1/mazatlan,1/phoenix,1/whitehorse,6/yukon,10/bajasur,us/arizona,mst\",\n    \"-6|s|04/05:22->09/06:24\": \"11/easter,7/easterisland\",\n    \"-6|n|04/07:02->10/27:02\": \"1/merida\",\n    \"-6|n|03/09:04->11/02:02\": \"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/north_dakota,1/ojinaga,1/ciudad_juarez,1/yellowknife,1/shiprock,6/mountain,navajo,us/mountain\",\n    \"-6|n\": \"1/bahia_banderas,1/belize,1/chihuahua,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/mexico_city,1/monterrey,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan,10/general\",\n    \"-5|s\": \"1/lima,1/rio_branco,1/porto_acre,5/acre\",\n    \"-5|n|03/09:04->11/02:02\": \"1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke\",\n    \"-5|n\": \"1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan,jamaica,est\",\n    \"-4|s|04/05:24->09/07:02\": \"1/santiago,7/continental\",\n    \"-4|s|03/22:24->10/05:02\": \"1/asuncion\",\n    \"-4|s\": \"1/campo_grande,1/cuiaba,1/la_paz,1/manaus,5/west\",\n    \"-4|n|03/09:04->11/02:02\": \"1/detroit,1/grand_turk,1/indiana,1/indianapolis,1/iqaluit,1/kentucky,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan\",\n    \"-4|n|03/09:02->11/02:01\": \"1/havana,cuba\",\n    \"-4|n\": \"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin\",\n    \"-3|s\": \"1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/palmer,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/comodrivadavia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/argentina/rosario,1/rosario,5/east\",\n    \"-3|n|03/09:04->11/02:02\": \"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic\",\n    \"-3|n\": \"1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem\",\n    \"-2|n|03/09:04->11/02:02\": \"1/miquelon\",\n    \"-2|n\": \"1/noronha,3/south_georgia,5/denoronha\",\n    \"-2.5|n|03/09:04->11/02:02\": \"1/st_johns,6/newfoundland\",\n    \"-1|n|03/30:01->10/25:24\": \"1/nuuk,1/godthab\",\n    \"-1|n\": \"3/cape_verde\",\n    \"-11|n\": \"11/midway,11/niue,11/pago_pago,11/samoa,us/samoa\",\n    \"-10|n\": \"11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii,hst\"\n  };\n\n  //prefixes for iana names..\n  var prefixes = [\n    'africa',\n    'america',\n    'asia',\n    'atlantic',\n    'australia',\n    'brazil',\n    'canada',\n    'chile',\n    'europe',\n    'indian',\n    'mexico',\n    'pacific',\n    'antarctica',\n    'etc'\n  ];\n\n  let all = {};\n  Object.keys(data).forEach((k) => {\n    let split = k.split('|');\n    let obj = {\n      offset: Number(split[0]),\n      hem: split[1]\n    };\n    if (split[2]) {\n      obj.dst = split[2];\n    }\n    let names = data[k].split(',');\n    names.forEach((str) => {\n      str = str.replace(/(^[0-9]+)\\//, (before, num) => {\n        num = Number(num);\n        return prefixes[num] + '/'\n      });\n      all[str] = obj;\n    });\n  });\n\n  all.utc = {\n    offset: 0,\n    hem: 'n' //default to northern hemisphere - (sorry!)\n  };\n\n  //add etc/gmt+n\n  for (let i = -14; i <= 14; i += 0.5) {\n    let num = i;\n    if (num > 0) {\n      num = '+' + num;\n    }\n    let name = 'etc/gmt' + num;\n    all[name] = {\n      offset: i * -1, //they're negative!\n      hem: 'n' //(sorry)\n    };\n    name = 'utc/gmt' + num; //this one too, why not.\n    all[name] = {\n      offset: i * -1,\n      hem: 'n'\n    };\n  }\n\n  //find the implicit iana code for this machine.\n  //safely query the Intl object\n  //based on - https://bitbucket.org/pellepim/jstimezonedetect/src\n  const fallbackTZ = 'utc'; //\n\n  //this Intl object is not supported often, yet\n  const safeIntl = () => {\n    if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n      return null\n    }\n    let format = Intl.DateTimeFormat();\n    if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') {\n      return null\n    }\n    let timezone = format.resolvedOptions().timeZone;\n    if (!timezone) {\n      return null\n    }\n    return timezone.toLowerCase()\n  };\n\n  const guessTz = () => {\n    let timezone = safeIntl();\n    if (timezone === null) {\n      return fallbackTZ\n    }\n    return timezone\n  };\n\n  const isOffset$1 = /(-?[0-9]+)h(rs)?/i;\n  const isNumber$1 = /(-?[0-9]+)/;\n  const utcOffset$1 = /utc([\\-+]?[0-9]+)/i;\n  const gmtOffset$1 = /gmt([\\-+]?[0-9]+)/i;\n\n  const toIana$1 = function (num) {\n    num = Number(num);\n    if (num >= -13 && num <= 13) {\n      num = num * -1; //it's opposite!\n      num = (num > 0 ? '+' : '') + num; //add plus sign\n      return 'etc/gmt' + num\n    }\n    return null\n  };\n\n  const parseOffset$2 = function (tz) {\n    // '+5hrs'\n    let m = tz.match(isOffset$1);\n    if (m !== null) {\n      return toIana$1(m[1])\n    }\n    // 'utc+5'\n    m = tz.match(utcOffset$1);\n    if (m !== null) {\n      return toIana$1(m[1])\n    }\n    // 'GMT-5' (not opposite)\n    m = tz.match(gmtOffset$1);\n    if (m !== null) {\n      let num = Number(m[1]) * -1;\n      return toIana$1(num)\n    }\n    // '+5'\n    m = tz.match(isNumber$1);\n    if (m !== null) {\n      return toIana$1(m[1])\n    }\n    return null\n  };\n\n  /* eslint-disable no-console */\n\n\n  let local = guessTz();\n\n  //add all the city names by themselves\n  const cities = Object.keys(all).reduce((h, k) => {\n    let city = k.split('/')[1] || '';\n    city = city.replace(/_/g, ' ');\n    h[city] = k;\n    return h\n  }, {});\n\n  //try to match these against iana form\n  const normalize$4 = (tz) => {\n    tz = tz.replace(/ time/g, '');\n    tz = tz.replace(/ (standard|daylight|summer)/g, '');\n    tz = tz.replace(/\\b(east|west|north|south)ern/g, '$1');\n    tz = tz.replace(/\\b(africa|america|australia)n/g, '$1');\n    tz = tz.replace(/\\beuropean/g, 'europe');\n    tz = tz.replace(/islands/g, 'island');\n    return tz\n  };\n\n  // try our best to reconcile the timzone to this given string\n  const lookupTz = (str, zones) => {\n    if (!str) {\n      // guard if Intl response is unsupported (#397)\n      if (!zones.hasOwnProperty(local)) {\n        console.warn(`Unrecognized IANA id '${local}'. Setting fallback tz to UTC.`);\n        local = 'utc';\n      }\n      return local\n    }\n    if (typeof str !== 'string') {\n      console.error(\"Timezone must be a string - recieved: '\", str, \"'\\n\");\n    }\n    let tz = str.trim();\n    // let split = str.split('/')\n    //support long timezones like 'America/Argentina/Rio_Gallegos'\n    // if (split.length > 2 && zones.hasOwnProperty(tz) === false) {\n    //   tz = split[0] + '/' + split[1]\n    // }\n    tz = tz.toLowerCase();\n    if (zones.hasOwnProperty(tz) === true) {\n      return tz\n    }\n    //lookup more loosely..\n    tz = normalize$4(tz);\n    if (zones.hasOwnProperty(tz) === true) {\n      return tz\n    }\n    //try city-names\n    if (cities.hasOwnProperty(tz) === true) {\n      return cities[tz]\n    }\n    // //try to parse '-5h'\n    if (/[0-9]/.test(tz) === true) {\n      let id = parseOffset$2(tz);\n      if (id) {\n        return id\n      }\n    }\n\n    throw new Error(\n      \"Spacetime: Cannot find timezone named: '\" + str + \"'. Please enter an IANA timezone id.\"\n    )\n  };\n\n  //git:blame @JuliasCaesar https://www.timeanddate.com/date/leapyear.html\n  function isLeapYear(year) { return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0 }\n  // unsurprisingly-nasty `typeof date` call\n  function isDate(d) { return Object.prototype.toString.call(d) === '[object Date]' && !isNaN(d.valueOf()) }\n  function isArray$1(input) { return Object.prototype.toString.call(input) === '[object Array]' }\n  function isObject(input) { return Object.prototype.toString.call(input) === '[object Object]' }\n  function isBoolean(input) { return Object.prototype.toString.call(input) === '[object Boolean]' }\n\n  function zeroPad(str, len = 2) {\n    let pad = '0';\n    str = str + '';\n    return str.length >= len ? str : new Array(len - str.length + 1).join(pad) + str\n  }\n\n  function titleCase$1(str) {\n    if (!str) {\n      return ''\n    }\n    return str[0].toUpperCase() + str.substr(1)\n  }\n\n  function ordinal(i) {\n    let j = i % 10;\n    let k = i % 100;\n    if (j === 1 && k !== 11) {\n      return i + 'st'\n    }\n    if (j === 2 && k !== 12) {\n      return i + 'nd'\n    }\n    if (j === 3 && k !== 13) {\n      return i + 'rd'\n    }\n    return i + 'th'\n  }\n\n  //strip 'st' off '1st'..\n  function toCardinal(str) {\n    str = String(str);\n    str = str.replace(/([0-9])(st|nd|rd|th)$/i, '$1');\n    return parseInt(str, 10)\n  }\n\n  //used mostly for cleanup of unit names, like 'months'\n  function normalize$3(str = '') {\n    str = str.toLowerCase().trim();\n    str = str.replace(/ies$/, 'y'); //'centuries'\n    str = str.replace(/s$/, '');\n    str = str.replace(/-/g, '');\n    if (str === 'day' || str === 'days') {\n      return 'date'\n    }\n    if (str === 'min' || str === 'mins') {\n      return 'minute'\n    }\n    return str\n  }\n\n  function getEpoch(tmp) {\n    //support epoch\n    if (typeof tmp === 'number') {\n      return tmp\n    }\n    //suport date objects\n    if (isDate(tmp)) {\n      return tmp.getTime()\n    }\n    // support spacetime objects\n    if (tmp.epoch || tmp.epoch === 0) {\n      return tmp.epoch\n    }\n    return null\n  }\n\n  //make sure this input is a spacetime obj\n  function beADate(d, s) {\n    if (isObject(d) === false) {\n      return s.clone().set(d)\n    }\n    return d\n  }\n\n  function formatTimezone(offset, delimiter = '') {\n    const sign = offset > 0 ? '+' : '-';\n    const absOffset = Math.abs(offset);\n    const hours = zeroPad(parseInt('' + absOffset, 10));\n    const minutes = zeroPad((absOffset % 1) * 60);\n    return `${sign}${hours}${delimiter}${minutes}`\n  }\n\n  /* eslint-disable no-console */\n  const defaults$1 = {\n    year: new Date().getFullYear(),\n    month: 0,\n    date: 1\n  };\n\n  //support [2016, 03, 01] format\n  const parseArray$1 = (s, arr, today) => {\n    if (arr.length === 0) {\n      return s\n    }\n    let order = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond'];\n    for (let i = 0; i < order.length; i++) {\n      let num = arr[i] || today[order[i]] || defaults$1[order[i]] || 0;\n      s = s[order[i]](num);\n    }\n    return s\n  };\n\n  //support {year:2016, month:3} format\n  const parseObject$1 = (s, obj, today) => {\n    // if obj is empty, do nothing\n    if (Object.keys(obj).length === 0) {\n      return s\n    }\n    obj = Object.assign({}, defaults$1, today, obj);\n    let keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n      let unit = keys[i];\n      //make sure we have this method\n      if (s[unit] === undefined || typeof s[unit] !== 'function') {\n        continue\n      }\n      //make sure the value is a number\n      if (obj[unit] === null || obj[unit] === undefined || obj[unit] === '') {\n        continue\n      }\n      let num = obj[unit] || today[unit] || defaults$1[unit] || 0;\n      s = s[unit](num);\n    }\n    return s\n  };\n\n  // this may seem like an arbitrary number, but it's 'within jan 1970'\n  // this is only really ambiguous until 2054 or so\n  const parseNumber$1 = function (s, input) {\n    const minimumEpoch = 2500000000;\n    // if the given epoch is really small, they've probably given seconds and not milliseconds\n    // anything below this number is likely (but not necessarily) a mistaken input.\n    if (input > 0 && input < minimumEpoch && s.silent === false) {\n      console.warn('  - Warning: You are setting the date to January 1970.');\n      console.warn('       -   did input seconds instead of milliseconds?');\n    }\n    s.epoch = input;\n    return s\n  };\n\n  var fns = {\n    parseArray: parseArray$1,\n    parseObject: parseObject$1,\n    parseNumber: parseNumber$1\n  };\n\n  // pull in 'today' data for the baseline moment\n  const getNow = function (s) {\n    s.epoch = Date.now();\n    Object.keys(s._today || {}).forEach((k) => {\n      if (typeof s[k] === 'function') {\n        s = s[k](s._today[k]);\n      }\n    });\n    return s\n  };\n\n  const dates$4 = {\n    now: (s) => {\n      return getNow(s)\n    },\n    today: (s) => {\n      return getNow(s)\n    },\n    tonight: (s) => {\n      s = getNow(s);\n      s = s.hour(18); //6pm\n      return s\n    },\n    tomorrow: (s) => {\n      s = getNow(s);\n      s = s.add(1, 'day');\n      s = s.startOf('day');\n      return s\n    },\n    yesterday: (s) => {\n      s = getNow(s);\n      s = s.subtract(1, 'day');\n      s = s.startOf('day');\n      return s\n    },\n    christmas: (s) => {\n      let year = getNow(s).year();\n      s = s.set([year, 11, 25, 18, 0, 0]); // Dec 25\n      return s\n    },\n    'new years': (s) => {\n      let year = getNow(s).year();\n      s = s.set([year, 11, 31, 18, 0, 0]); // Dec 31\n      return s\n    }\n  };\n  dates$4['new years eve'] = dates$4['new years'];\n\n  //little cleanup..\n  const normalize$2 = function (str) {\n    // remove all day-names\n    str = str.replace(/\\b(mon|tues?|wed|wednes|thur?s?|fri|sat|satur|sun)(day)?\\b/i, '');\n    //remove ordinal ending\n    str = str.replace(/([0-9])(th|rd|st|nd)/, '$1');\n    str = str.replace(/,/g, '');\n    str = str.replace(/ +/g, ' ').trim();\n    return str\n  };\n\n  let o = {\n    millisecond: 1\n  };\n  o.second = 1000;\n  o.minute = 60000;\n  o.hour = 3.6e6; // dst is supported post-hoc\n  o.day = 8.64e7; //\n  o.date = o.day;\n  o.month = 8.64e7 * 29.5; //(average)\n  o.week = 6.048e8;\n  o.year = 3.154e10; // leap-years are supported post-hoc\n  //add plurals\n  Object.keys(o).forEach(k => {\n    o[k + 's'] = o[k];\n  });\n\n  /* eslint-disable no-console */\n\n  //basically, step-forward/backward until js Date object says we're there.\n  const walk = (s, n, fn, unit, previous) => {\n    let current = s.d[fn]();\n    if (current === n) {\n      return //already there\n    }\n    let startUnit = previous === null ? null : s.d[previous]();\n    let original = s.epoch;\n    //try to get it as close as we can\n    let diff = n - current;\n    s.epoch += o[unit] * diff;\n    //DST edge-case: if we are going many days, be a little conservative\n    // console.log(unit, diff)\n    if (unit === 'day') {\n      // s.epoch -= ms.minute\n      //but don't push it over a month\n      if (Math.abs(diff) > 28 && n < 28) {\n        s.epoch += o.hour;\n      }\n    }\n    // 1st time: oops, did we change previous unit? revert it.\n    if (previous !== null && startUnit !== s.d[previous]()) {\n      // console.warn('spacetime warning: missed setting ' + unit)\n      s.epoch = original;\n      // s.epoch += ms[unit] * diff * 0.89 // maybe try and make it close...?\n    }\n    //repair it if we've gone too far or something\n    //(go by half-steps, just in case)\n    const halfStep = o[unit] / 2;\n    while (s.d[fn]() < n) {\n      s.epoch += halfStep;\n    }\n\n    while (s.d[fn]() > n) {\n      s.epoch -= halfStep;\n    }\n    // 2nd time: did we change previous unit? revert it.\n    if (previous !== null && startUnit !== s.d[previous]()) {\n      // console.warn('spacetime warning: missed setting ' + unit)\n      s.epoch = original;\n    }\n  };\n  //find the desired date by a increment/check while loop\n  const units$5 = {\n    year: {\n      valid: (n) => n > -4000 && n < 4000,\n      walkTo: (s, n) => walk(s, n, 'getFullYear', 'year', null)\n    },\n    month: {\n      valid: (n) => n >= 0 && n <= 11,\n      walkTo: (s, n) => {\n        let d = s.d;\n        let current = d.getMonth();\n        let original = s.epoch;\n        let startUnit = d.getFullYear();\n        if (current === n) {\n          return\n        }\n        //try to get it as close as we can..\n        let diff = n - current;\n        s.epoch += o.day * (diff * 28); //special case\n        //oops, did we change the year? revert it.\n        if (startUnit !== s.d.getFullYear()) {\n          s.epoch = original;\n        }\n        //increment by day\n        while (s.d.getMonth() < n) {\n          s.epoch += o.day;\n        }\n        while (s.d.getMonth() > n) {\n          s.epoch -= o.day;\n        }\n      }\n    },\n    date: {\n      valid: (n) => n > 0 && n <= 31,\n      walkTo: (s, n) => walk(s, n, 'getDate', 'day', 'getMonth')\n    },\n    hour: {\n      valid: (n) => n >= 0 && n < 24,\n      walkTo: (s, n) => walk(s, n, 'getHours', 'hour', 'getDate')\n    },\n    minute: {\n      valid: (n) => n >= 0 && n < 60,\n      walkTo: (s, n) => walk(s, n, 'getMinutes', 'minute', 'getHours')\n    },\n    second: {\n      valid: (n) => n >= 0 && n < 60,\n      walkTo: (s, n) => {\n        //do this one directly\n        s.epoch = s.seconds(n).epoch;\n      }\n    },\n    millisecond: {\n      valid: (n) => n >= 0 && n < 1000,\n      walkTo: (s, n) => {\n        //do this one directly\n        s.epoch = s.milliseconds(n).epoch;\n      }\n    }\n  };\n\n  const walkTo = (s, wants) => {\n    let keys = Object.keys(units$5);\n    let old = s.clone();\n    for (let i = 0; i < keys.length; i++) {\n      let k = keys[i];\n      let n = wants[k];\n      if (n === undefined) {\n        n = old[k]();\n      }\n      if (typeof n === 'string') {\n        n = parseInt(n, 10);\n      }\n      //make-sure it's valid\n      if (!units$5[k].valid(n)) {\n        s.epoch = null;\n        if (s.silent === false) {\n          console.warn('invalid ' + k + ': ' + n);\n        }\n        return\n      }\n      units$5[k].walkTo(s, n);\n    }\n    return\n  };\n\n  const monthLengths = [\n    31, // January - 31 days\n    28, // February - 28 days in a common year and 29 days in leap years\n    31, // March - 31 days\n    30, // April - 30 days\n    31, // May - 31 days\n    30, // June - 30 days\n    31, // July - 31 days\n    31, // August - 31 days\n    30, // September - 30 days\n    31, // October - 31 days\n    30, // November - 30 days\n    31 // December - 31 days\n  ];\n\n  // 28 - feb\n  // 30 - april, june, sept, nov\n  // 31 - jan, march, may, july, aug, oct, dec\n\n  let shortMonths = [\n    'jan',\n    'feb',\n    'mar',\n    'apr',\n    'may',\n    'jun',\n    'jul',\n    'aug',\n    'sep',\n    'oct',\n    'nov',\n    'dec'\n  ];\n  let longMonths = [\n    'january',\n    'february',\n    'march',\n    'april',\n    'may',\n    'june',\n    'july',\n    'august',\n    'september',\n    'october',\n    'november',\n    'december'\n  ];\n\n  function buildMapping() {\n    const obj = {\n      sep: 8 //support this format\n    };\n    for (let i = 0; i < shortMonths.length; i++) {\n      obj[shortMonths[i]] = i;\n    }\n    for (let i = 0; i < longMonths.length; i++) {\n      obj[longMonths[i]] = i;\n    }\n    return obj\n  }\n\n  function short$1() { return shortMonths }\n  function long$1() { return longMonths }\n  function mapping$3() { return buildMapping() }\n  function set$5(i18n) {\n    shortMonths = i18n.short || shortMonths;\n    longMonths = i18n.long || longMonths;\n  }\n\n  //pull-apart ISO offsets, like \"+0100\"\n  const parseOffset$1 = (s, offset) => {\n    if (!offset) {\n      return s\n    }\n    offset = offset.trim().toLowerCase();\n    // according to ISO8601, tz could be hh:mm, hhmm or hh\n    // so need few more steps before the calculation.\n    let num = 0;\n\n    // for (+-)hh:mm\n    if (/^[+-]?[0-9]{2}:[0-9]{2}$/.test(offset)) {\n      //support \"+01:00\"\n      if (/:00/.test(offset) === true) {\n        offset = offset.replace(/:00/, '');\n      }\n      //support \"+01:30\"\n      if (/:30/.test(offset) === true) {\n        offset = offset.replace(/:30/, '.5');\n      }\n    }\n\n    // for (+-)hhmm\n    if (/^[+-]?[0-9]{4}$/.test(offset)) {\n      offset = offset.replace(/30$/, '.5');\n    }\n    num = parseFloat(offset);\n\n    //divide by 100 or 10 - , \"+0100\", \"+01\"\n    if (Math.abs(num) > 100) {\n      num = num / 100;\n    }\n    //this is a fancy-move\n    if (num === 0 || offset === 'Z' || offset === 'z') {\n      s.tz = 'etc/gmt';\n      return s\n    }\n    //okay, try to match it to a utc timezone\n    //remember - this is opposite! a -5 offset maps to Etc/GMT+5  ¯\\_(:/)_/¯\n    //https://askubuntu.com/questions/519550/why-is-the-8-timezone-called-gmt-8-in-the-filesystem\n    num *= -1;\n\n    if (num >= 0) {\n      num = '+' + num;\n    }\n    let tz = 'etc/gmt' + num;\n    let zones = s.timezones;\n\n    if (zones[tz]) {\n      // log a warning if we're over-writing a given timezone?\n      // console.log('changing timezone to: ' + tz)\n      s.tz = tz;\n    }\n    return s\n  };\n\n  // truncate any sub-millisecond values\n  const parseMs = function (str = '') {\n    str = String(str);\n    //js does not support sub-millisecond values\n    // so truncate these - 2021-11-02T19:55:30.087772\n    if (str.length > 3) {\n      str = str.substring(0, 3);\n    } else if (str.length === 1) {\n      // assume ms are zero-padded on the left\n      // but maybe not on the right.\n      // turn '.10' into '.100'\n      str = str + '00';\n    } else if (str.length === 2) {\n      str = str + '0';\n    }\n    return Number(str) || 0\n  };\n\n  const parseTime$1 = (s, str = '') => {\n    // remove all whitespace\n    str = str.replace(/^\\s+/, '').toLowerCase();\n    //formal time format - 04:30.23\n    let arr = str.match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:.]?([0-9]{1,4})?/);\n    if (arr !== null) {\n      let [, h, m, sec, ms] = arr;\n      //validate it a little\n      h = Number(h);\n      if (h < 0 || h > 24) {\n        return s.startOf('day')\n      }\n      m = Number(m); //don't accept '5:3pm'\n      if (arr[2].length < 2 || m < 0 || m > 59) {\n        return s.startOf('day')\n      }\n      s = s.hour(h);\n      s = s.minute(m);\n      s = s.seconds(sec || 0);\n      s = s.millisecond(parseMs(ms));\n      //parse-out am/pm\n      let ampm = str.match(/[0-9] ?(am|pm)\\b/);\n      if (ampm !== null && ampm[1]) {\n        s = s.ampm(ampm[1]);\n      }\n      return s\n    }\n\n    //try an informal form - 5pm (no minutes)\n    arr = str.match(/([0-9]+) ?(am|pm)/);\n    if (arr !== null && arr[1]) {\n      let h = Number(arr[1]);\n      //validate it a little..\n      if (h > 12 || h < 1) {\n        return s.startOf('day')\n      }\n      s = s.hour(arr[1] || 0);\n      s = s.ampm(arr[2]);\n      s = s.startOf('hour');\n      return s\n    }\n\n    //no time info found, use start-of-day\n    s = s.startOf('day');\n    return s\n  };\n\n  let months$1 = mapping$3();\n\n  //given a month, return whether day number exists in it\n  const validate$1 = (obj) => {\n    //invalid values\n    if (monthLengths.hasOwnProperty(obj.month) !== true) {\n      return false\n    }\n    //support leap-year in february\n    if (obj.month === 1) {\n      if (isLeapYear(obj.year) && obj.date <= 29) {\n        return true\n      } else {\n        return obj.date <= 28\n      }\n    }\n    //is this date too-big for this month?\n    let max = monthLengths[obj.month] || 0;\n    if (obj.date <= max) {\n      return true\n    }\n    return false\n  };\n\n  const parseYear = (str = '', today) => {\n    str = str.trim();\n    // parse '86 shorthand\n    if (/^'[0-9][0-9]$/.test(str) === true) {\n      let num = Number(str.replace(/'/, ''));\n      if (num > 50) {\n        return 1900 + num\n      }\n      return 2000 + num\n    }\n    let year = parseInt(str, 10);\n    // use a given year from options.today\n    if (!year && today) {\n      year = today.year;\n    }\n    // fallback to this year\n    year = year || new Date().getFullYear();\n    return year\n  };\n\n  const parseMonth = function (str) {\n    str = str.toLowerCase().trim();\n    if (str === 'sept') {\n      return months$1.sep\n    }\n    return months$1[str]\n  };\n\n  var ymd = [\n    // =====\n    //  y-m-d\n    // =====\n    //iso-this 1998-05-30T22:00:00:000Z, iso-that 2017-04-03T08:00:00-0700\n    {\n      reg: /^(-?0{0,2}[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9-+:]+)?$/i,\n      parse: (s, m) => {\n        let obj = {\n          year: m[1],\n          month: parseInt(m[2], 10) - 1,\n          date: m[3]\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        parseOffset$1(s, m[5]);\n        walkTo(s, obj);\n        s = parseTime$1(s, m[4]);\n        return s\n      }\n    },\n    //short-iso \"2015-03-25\" or \"2015/03/25\" or \"2015/03/25 12:26:14 PM\"\n    {\n      reg: /^([0-9]{4})[\\-/. ]([0-9]{1,2})[\\-/. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,\n      parse: (s, m) => {\n        let obj = {\n          year: m[1],\n          month: parseInt(m[2], 10) - 1,\n          date: parseInt(m[3], 10)\n        };\n        if (obj.month >= 12) {\n          //support yyyy/dd/mm (weird, but ok)\n          obj.date = parseInt(m[2], 10);\n          obj.month = parseInt(m[3], 10) - 1;\n        }\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s, m[4]);\n        return s\n      }\n    },\n\n    //text-month \"2015-feb-25\"\n    {\n      reg: /^([0-9]{4})[\\-/. ]([a-z]+)[\\-/. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,\n      parse: (s, m) => {\n        let obj = {\n          year: parseYear(m[1], s._today),\n          month: parseMonth(m[2]),\n          date: toCardinal(m[3] || '')\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s, m[4]);\n        return s\n      }\n    }\n  ];\n\n  var mdy = [\n    // =====\n    //  m-d-y\n    // =====\n    //mm/dd/yyyy - uk/canada \"6/28/2019, 12:26:14 PM\"\n    {\n      reg: /^([0-9]{1,2})[-/.]([0-9]{1,2})[\\-/.]?([0-9]{4})?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2} ?(am|pm|gmt))?$/i,\n      parse: (s, arr) => {\n        let month = parseInt(arr[1], 10) - 1;\n        let date = parseInt(arr[2], 10);\n        //support dd/mm/yyy\n        if (s.british || month >= 12) {\n          date = parseInt(arr[1], 10);\n          month = parseInt(arr[2], 10) - 1;\n        }\n        let obj = {\n          date,\n          month,\n          year: parseYear(arr[3], s._today) || new Date().getFullYear()\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s, arr[4]);\n        return s\n      }\n    },\n    //alt short format - \"feb-25-2015\"\n    {\n      reg: /^([a-z]+)[\\-/. ]([0-9]{1,2})[\\-/. ]?([0-9]{4}|'[0-9]{2})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,\n      parse: (s, arr) => {\n        let obj = {\n          year: parseYear(arr[3], s._today),\n          month: parseMonth(arr[1]),\n          date: toCardinal(arr[2] || '')\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s, arr[4]);\n        return s\n      }\n    },\n\n    //Long \"Mar 25 2015\"\n    //February 22, 2017 15:30:00\n    {\n      reg: /^([a-z]+) ([0-9]{1,2})( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,\n      parse: (s, arr) => {\n        let obj = {\n          year: parseYear(arr[3], s._today),\n          month: parseMonth(arr[1]),\n          date: toCardinal(arr[2] || '')\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s, arr[4]);\n        return s\n      }\n    },\n    // 'Sun Mar 14 15:09:48 +0000 2021'\n    {\n      reg: /^([a-z]+) ([0-9]{1,2}) ([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2})( \\+[0-9]{4})?( [0-9]{4})?$/i,\n      parse: (s, arr) => {\n        let [, month, date, time, tz, year] = arr;\n        let obj = {\n          year: parseYear(year, s._today),\n          month: parseMonth(month),\n          date: toCardinal(date || '')\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseOffset$1(s, tz);\n        s = parseTime$1(s, time);\n        return s\n      }\n    }\n  ];\n\n  var dmy = [\n    // =====\n    //  d-m-y\n    // =====\n    //common british format - \"25-feb-2015\"\n    {\n      reg: /^([0-9]{1,2})[-/]([a-z]+)[\\-/]?([0-9]{4})?$/i,\n      parse: (s, m) => {\n        let obj = {\n          year: parseYear(m[3], s._today),\n          month: parseMonth(m[2]),\n          date: toCardinal(m[1] || '')\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s, m[4]);\n        return s\n      }\n    },\n    // \"25 Mar 2015\"\n    {\n      reg: /^([0-9]{1,2})( [a-z]+)( [0-9]{4}| '[0-9]{2})? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2} ?(am|pm|gmt))?$/i,\n      parse: (s, m) => {\n        let obj = {\n          year: parseYear(m[3], s._today),\n          month: parseMonth(m[2]),\n          date: toCardinal(m[1])\n        };\n        if (!obj.month || validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s, m[4]);\n        return s\n      }\n    },\n    // 01-jan-2020\n    {\n      reg: /^([0-9]{1,2})[. \\-/]([a-z]+)[. \\-/]([0-9]{4})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,\n      parse: (s, m) => {\n        let obj = {\n          date: Number(m[1]),\n          month: parseMonth(m[2]),\n          year: Number(m[3])\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = s.startOf('day');\n        s = parseTime$1(s, m[4]);\n        return s\n      }\n    }\n  ];\n\n  var misc = [\n    // =====\n    // no dates\n    // =====\n\n    // '2012-06' month-only\n    {\n      reg: /^([0-9]{4})[\\-/]([0-9]{2})$/,\n      parse: (s, m) => {\n        let obj = {\n          year: m[1],\n          month: parseInt(m[2], 10) - 1,\n          date: 1\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s, m[4]);\n        return s\n      }\n    },\n\n    //February 2017 (implied date)\n    {\n      reg: /^([a-z]+) ([0-9]{4})$/i,\n      parse: (s, arr) => {\n        let obj = {\n          year: parseYear(arr[2], s._today),\n          month: parseMonth(arr[1]),\n          date: s._today.date || 1\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s, arr[4]);\n        return s\n      }\n    },\n\n    {\n      // 'q2 2002'\n      reg: /^(q[0-9])( of)?( [0-9]{4})?/i,\n      parse: (s, arr) => {\n        let quarter = arr[1] || '';\n        s = s.quarter(quarter);\n        let year = arr[3] || '';\n        if (year) {\n          year = year.trim();\n          s = s.year(year);\n        }\n        return s\n      }\n    },\n    {\n      // 'summer 2002'\n      reg: /^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,\n      parse: (s, arr) => {\n        let season = arr[1] || '';\n        s = s.season(season);\n        let year = arr[3] || '';\n        if (year) {\n          year = year.trim();\n          s = s.year(year);\n        }\n        return s\n      }\n    },\n    {\n      // '200bc'\n      reg: /^[0-9,]+ ?b\\.?c\\.?$/i,\n      parse: (s, arr) => {\n        let str = arr[0] || '';\n        //make year-negative\n        str = str.replace(/^([0-9,]+) ?b\\.?c\\.?$/i, '-$1');\n        let d = new Date();\n        let obj = {\n          year: parseInt(str.trim(), 10),\n          month: d.getMonth(),\n          date: d.getDate()\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s);\n        return s\n      }\n    },\n    {\n      // '200ad'\n      reg: /^[0-9,]+ ?(a\\.?d\\.?|c\\.?e\\.?)$/i,\n      parse: (s, arr) => {\n        let str = arr[0] || '';\n        //remove commas\n        str = str.replace(/,/g, '');\n        let d = new Date();\n        let obj = {\n          year: parseInt(str.trim(), 10),\n          month: d.getMonth(),\n          date: d.getDate()\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s);\n        return s\n      }\n    },\n    {\n      // '1992'\n      reg: /^[0-9]{4}( ?a\\.?d\\.?)?$/i,\n      parse: (s, arr) => {\n        let today = s._today;\n        // using today's date, but a new month is awkward.\n        if (today.month && !today.date) {\n          today.date = 1;\n        }\n        let d = new Date();\n        let obj = {\n          year: parseYear(arr[0], today),\n          month: today.month || d.getMonth(),\n          date: today.date || d.getDate()\n        };\n        if (validate$1(obj) === false) {\n          s.epoch = null;\n          return s\n        }\n        walkTo(s, obj);\n        s = parseTime$1(s);\n        return s\n      }\n    }\n  ];\n\n  var parsers = [].concat(ymd, mdy, dmy, misc);\n\n  /* eslint-disable no-console */\n\n  const parseString = function (s, input, givenTz) {\n    // let parsers = s.parsers || []\n    //try each text-parse template, use the first good result\n    for (let i = 0; i < parsers.length; i++) {\n      let m = input.match(parsers[i].reg);\n      if (m) {\n        let res = parsers[i].parse(s, m, givenTz);\n        if (res !== null && res.isValid()) {\n          return res\n        }\n      }\n    }\n    if (s.silent === false) {\n      console.warn(\"Warning: couldn't parse date-string: '\" + input + \"'\");\n    }\n    s.epoch = null;\n    return s\n  };\n\n  const { parseArray, parseObject, parseNumber } = fns;\n  //we have to actually parse these inputs ourselves\n  //  -  can't use built-in js parser ;(\n  //=========================================\n  // ISO Date\t  \"2015-03-25\"\n  // Short Date\t\"03/25/2015\" or \"2015/03/25\"\n  // Long Date\t\"Mar 25 2015\" or \"25 Mar 2015\"\n  // Full Date\t\"Wednesday March 25 2015\"\n  //=========================================\n\n  const defaults = {\n    year: new Date().getFullYear(),\n    month: 0,\n    date: 1\n  };\n\n  //find the epoch from different input styles\n  const parseInput = (s, input) => {\n    let today = s._today || defaults;\n    //if we've been given a epoch number, it's easy\n    if (typeof input === 'number') {\n      return parseNumber(s, input)\n    }\n    //set tmp time\n    s.epoch = Date.now();\n    // overwrite tmp time with 'today' value, if exists\n    if (s._today && isObject(s._today) && Object.keys(s._today).length > 0) {\n      let res = parseObject(s, today, defaults);\n      if (res.isValid()) {\n        s.epoch = res.epoch;\n      }\n    }\n    // null input means 'now'\n    if (input === null || input === undefined || input === '') {\n      return s //k, we're good.\n    }\n    //support input of Date() object\n    if (isDate(input) === true) {\n      s.epoch = input.getTime();\n      return s\n    }\n    //support [2016, 03, 01] format\n    if (isArray$1(input) === true) {\n      s = parseArray(s, input, today);\n      return s\n    }\n    //support {year:2016, month:3} format\n    if (isObject(input) === true) {\n      //support spacetime object as input\n      if (input.epoch) {\n        s.epoch = input.epoch;\n        s.tz = input.tz;\n        return s\n      }\n      s = parseObject(s, input, today);\n      return s\n    }\n    //input as a string..\n    if (typeof input !== 'string') {\n      return s\n    }\n    //little cleanup..\n    input = normalize$2(input);\n    //try some known-words, like 'now'\n    if (dates$4.hasOwnProperty(input) === true) {\n      s = dates$4[input](s);\n      return s\n    }\n    //try each text-parse template, use the first good result\n    return parseString(s, input)\n  };\n\n  let shortDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n  let longDays = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n\n  function short() { return shortDays }\n  function long() { return longDays }\n  function set$4(i18n) {\n    shortDays = i18n.short || shortDays;\n    longDays = i18n.long || longDays;\n  }\n  const aliases$1 = {\n    mo: 1,\n    tu: 2,\n    we: 3,\n    th: 4,\n    fr: 5,\n    sa: 6,\n    su: 7,\n    tues: 2,\n    weds: 3,\n    wedn: 3,\n    thur: 4,\n    thurs: 4\n  };\n\n  let titleCaseEnabled = true;\n\n  function useTitleCase() {\n    return titleCaseEnabled\n  }\n\n  function set$3(val) {\n    titleCaseEnabled = val;\n  }\n\n  // create the timezone offset part of an iso timestamp\n  // it's kind of nuts how involved this is\n  // \"+01:00\", \"+0100\", or simply \"+01\"\n  const isoOffset = s => {\n    let offset = s.timezone().current.offset;\n    return !offset ? 'Z' : formatTimezone(offset, ':')\n  };\n\n  const applyCaseFormat = (str) => {\n    if (useTitleCase()) {\n      return titleCase$1(str)\n    }\n    return str\n  };\n\n  // iso-year padding\n  const padYear = (num) => {\n    if (num >= 0) {\n      return zeroPad(num, 4)\n    } else {\n      num = Math.abs(num);\n      return '-' + zeroPad(num, 4)\n    }\n  };\n\n  const format = {\n    day: (s) => applyCaseFormat(s.dayName()),\n    'day-short': (s) => applyCaseFormat(short()[s.day()]),\n    'day-number': (s) => s.day(),\n    'day-ordinal': (s) => ordinal(s.day()),\n    'day-pad': (s) => zeroPad(s.day()),\n\n    date: (s) => s.date(),\n    'date-ordinal': (s) => ordinal(s.date()),\n    'date-pad': (s) => zeroPad(s.date()),\n\n    month: (s) => applyCaseFormat(s.monthName()),\n    'month-short': (s) => applyCaseFormat(short$1()[s.month()]),\n    'month-number': (s) => s.month(),\n    'month-ordinal': (s) => ordinal(s.month()),\n    'month-pad': (s) => zeroPad(s.month()),\n    'iso-month': (s) => zeroPad(s.month() + 1), //1-based months\n\n    year: (s) => {\n      let year = s.year();\n      if (year > 0) {\n        return year\n      }\n      year = Math.abs(year);\n      return year + ' BC'\n    },\n    'year-short': (s) => {\n      let year = s.year();\n      if (year > 0) {\n        return `'${String(s.year()).substr(2, 4)}`\n      }\n      year = Math.abs(year);\n      return year + ' BC'\n    },\n    'iso-year': (s) => {\n      let year = s.year();\n      let isNegative = year < 0;\n      let str = zeroPad(Math.abs(year), 4); //0-padded\n      if (isNegative) {\n        //negative years are for some reason 6-digits ('-00008')\n        str = zeroPad(str, 6);\n        str = '-' + str;\n      }\n      return str\n    },\n\n    time: (s) => s.time(),\n    'time-24': (s) => `${s.hour24()}:${zeroPad(s.minute())}`,\n\n    hour: (s) => s.hour12(),\n    'hour-pad': (s) => zeroPad(s.hour12()),\n    'hour-24': (s) => s.hour24(),\n    'hour-24-pad': (s) => zeroPad(s.hour24()),\n\n    minute: (s) => s.minute(),\n    'minute-pad': (s) => zeroPad(s.minute()),\n    second: (s) => s.second(),\n    'second-pad': (s) => zeroPad(s.second()),\n    millisecond: (s) => s.millisecond(),\n    'millisecond-pad': (s) => zeroPad(s.millisecond(), 3),\n\n    ampm: (s) => s.ampm(),\n    AMPM: (s) => s.ampm().toUpperCase(),\n    quarter: (s) => 'Q' + s.quarter(),\n    season: (s) => s.season(),\n    era: (s) => s.era(),\n    json: (s) => s.json(),\n    timezone: (s) => s.timezone().name,\n    offset: (s) => isoOffset(s),\n\n    numeric: (s) => `${s.year()}/${zeroPad(s.month() + 1)}/${zeroPad(s.date())}`, // yyyy/mm/dd\n    'numeric-us': (s) => `${zeroPad(s.month() + 1)}/${zeroPad(s.date())}/${s.year()}`, // mm/dd/yyyy\n    'numeric-uk': (s) => `${zeroPad(s.date())}/${zeroPad(s.month() + 1)}/${s.year()}`, //dd/mm/yyyy\n    'mm/dd': (s) => `${zeroPad(s.month() + 1)}/${zeroPad(s.date())}`, //mm/dd\n\n    // ... https://en.wikipedia.org/wiki/ISO_8601 ;(((\n    iso: (s) => {\n      let year = s.format('iso-year');\n      let month = zeroPad(s.month() + 1); //1-based months\n      let date = zeroPad(s.date());\n      let hour = zeroPad(s.h24());\n      let minute = zeroPad(s.minute());\n      let second = zeroPad(s.second());\n      let ms = zeroPad(s.millisecond(), 3);\n      let offset = isoOffset(s);\n      return `${year}-${month}-${date}T${hour}:${minute}:${second}.${ms}${offset}` //2018-03-09T08:50:00.000-05:00\n    },\n    'iso-short': (s) => {\n      let month = zeroPad(s.month() + 1); //1-based months\n      let date = zeroPad(s.date());\n      let year = padYear(s.year());\n      return `${year}-${month}-${date}` //2017-02-15\n    },\n    'iso-utc': (s) => {\n      return new Date(s.epoch).toISOString() //2017-03-08T19:45:28.367Z\n    },\n\n    //i made these up\n    nice: (s) => `${short$1()[s.month()]} ${ordinal(s.date())}, ${s.time()}`,\n    'nice-24': (s) =>\n      `${short$1()[s.month()]} ${ordinal(s.date())}, ${s.hour24()}:${zeroPad(\n      s.minute()\n    )}`,\n    'nice-year': (s) => `${short$1()[s.month()]} ${ordinal(s.date())}, ${s.year()}`,\n    'nice-day': (s) =>\n      `${short()[s.day()]} ${applyCaseFormat(short$1()[s.month()])} ${ordinal(\n      s.date()\n    )}`,\n    'nice-full': (s) =>\n      `${s.dayName()} ${applyCaseFormat(s.monthName())} ${ordinal(s.date())}, ${s.time()}`,\n    'nice-full-24': (s) =>\n      `${s.dayName()} ${applyCaseFormat(s.monthName())} ${ordinal(\n      s.date()\n    )}, ${s.hour24()}:${zeroPad(s.minute())}`\n  };\n  //aliases\n  const aliases = {\n    'day-name': 'day',\n    'month-name': 'month',\n    'iso 8601': 'iso',\n    'time-h24': 'time-24',\n    'time-12': 'time',\n    'time-h12': 'time',\n    tz: 'timezone',\n    'day-num': 'day-number',\n    'month-num': 'month-number',\n    'month-iso': 'iso-month',\n    'year-iso': 'iso-year',\n    'nice-short': 'nice',\n    'nice-short-24': 'nice-24',\n    mdy: 'numeric-us',\n    dmy: 'numeric-uk',\n    ymd: 'numeric',\n    'yyyy/mm/dd': 'numeric',\n    'mm/dd/yyyy': 'numeric-us',\n    'dd/mm/yyyy': 'numeric-us',\n    'little-endian': 'numeric-uk',\n    'big-endian': 'numeric',\n    'day-nice': 'nice-day'\n  };\n  Object.keys(aliases).forEach((k) => (format[k] = format[aliases[k]]));\n\n  const printFormat = (s, str = '') => {\n    //don't print anything if it's an invalid date\n    if (s.isValid() !== true) {\n      return ''\n    }\n    //support .format('month')\n    if (format.hasOwnProperty(str)) {\n      let out = format[str](s) || '';\n      if (str !== 'json') {\n        out = String(out);\n        if (str.toLowerCase() !== 'ampm') {\n          out = applyCaseFormat(out);\n        }\n      }\n      return out\n    }\n    //support '{hour}:{minute}' notation\n    if (str.indexOf('{') !== -1) {\n      let sections = /\\{(.+?)\\}/g;\n      str = str.replace(sections, (_, fmt) => {\n        fmt = fmt.trim();\n        if (fmt !== 'AMPM') {\n          fmt = fmt.toLowerCase();\n        }\n        if (format.hasOwnProperty(fmt)) {\n          let out = String(format[fmt](s));\n          if (fmt.toLowerCase() !== 'ampm') {\n            return applyCaseFormat(out)\n          }\n          return out\n        }\n        return ''\n      });\n      return str\n    }\n\n    return s.format('iso-short')\n  };\n\n  //parse this insane unix-time-templating thing, from the 19th century\n  //http://unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns\n\n  //time-symbols we support\n  const mapping$2 = {\n    G: (s) => s.era(),\n    GG: (s) => s.era(),\n    GGG: (s) => s.era(),\n    GGGG: (s) => (s.era() === 'AD' ? 'Anno Domini' : 'Before Christ'),\n    //year\n    y: (s) => s.year(),\n    yy: (s) => {\n      //last two chars\n      return zeroPad(Number(String(s.year()).substr(2, 4)))\n    },\n    yyy: (s) => s.year(),\n    yyyy: (s) => s.year(),\n    yyyyy: (s) => '0' + s.year(),\n    // u: (s) => {},//extended non-gregorian years\n\n    //quarter\n    Q: (s) => s.quarter(),\n    QQ: (s) => s.quarter(),\n    QQQ: (s) => s.quarter(),\n    QQQQ: (s) => s.quarter(),\n\n    //month\n    M: (s) => s.month() + 1,\n    MM: (s) => zeroPad(s.month() + 1),\n    MMM: (s) => s.format('month-short'),\n    MMMM: (s) => s.format('month'),\n\n    //week\n    w: (s) => s.week(),\n    ww: (s) => zeroPad(s.week()),\n    //week of month\n    // W: (s) => s.week(),\n\n    //date of month\n    d: (s) => s.date(),\n    dd: (s) => zeroPad(s.date()),\n    //date of year\n    D: (s) => s.dayOfYear(),\n    DD: (s) => zeroPad(s.dayOfYear()),\n    DDD: (s) => zeroPad(s.dayOfYear(), 3),\n\n    // F: (s) => {},//date of week in month\n    // g: (s) => {},//modified julian day\n\n    //day\n    E: (s) => s.format('day-short'),\n    EE: (s) => s.format('day-short'),\n    EEE: (s) => s.format('day-short'),\n    EEEE: (s) => s.format('day'),\n    EEEEE: (s) => s.format('day')[0],\n    e: (s) => s.day(),\n    ee: (s) => s.day(),\n    eee: (s) => s.format('day-short'),\n    eeee: (s) => s.format('day'),\n    eeeee: (s) => s.format('day')[0],\n\n    //am/pm\n    a: (s) => s.ampm().toUpperCase(),\n    aa: (s) => s.ampm().toUpperCase(),\n    aaa: (s) => s.ampm().toUpperCase(),\n    aaaa: (s) => s.ampm().toUpperCase(),\n\n    //hour\n    h: (s) => s.h12(),\n    hh: (s) => zeroPad(s.h12()),\n    H: (s) => s.hour(),\n    HH: (s) => zeroPad(s.hour()),\n    // j: (s) => {},//weird hour format\n\n    m: (s) => s.minute(),\n    mm: (s) => zeroPad(s.minute()),\n    s: (s) => s.second(),\n    ss: (s) => zeroPad(s.second()),\n\n    //milliseconds\n    SSS: (s) => zeroPad(s.millisecond(), 3),\n    //milliseconds in the day\n    A: (s) => s.epoch - s.startOf('day').epoch,\n    //timezone\n    z: (s) => s.timezone().name,\n    zz: (s) => s.timezone().name,\n    zzz: (s) => s.timezone().name,\n    zzzz: (s) => s.timezone().name,\n    Z: (s) => formatTimezone(s.timezone().current.offset),\n    ZZ: (s) => formatTimezone(s.timezone().current.offset),\n    ZZZ: (s) => formatTimezone(s.timezone().current.offset),\n    ZZZZ: (s) => formatTimezone(s.timezone().current.offset, ':')\n  };\n\n  const addAlias = (char, to, n) => {\n    let name = char;\n    let toName = to;\n    for (let i = 0; i < n; i += 1) {\n      mapping$2[name] = mapping$2[toName];\n      name += char;\n      toName += to;\n    }\n  };\n  addAlias('q', 'Q', 4);\n  addAlias('L', 'M', 4);\n  addAlias('Y', 'y', 4);\n  addAlias('c', 'e', 4);\n  addAlias('k', 'H', 2);\n  addAlias('K', 'h', 2);\n  addAlias('S', 's', 2);\n  addAlias('v', 'z', 4);\n  addAlias('V', 'Z', 4);\n\n  // support unix-style escaping with ' character\n  const escapeChars = function (arr) {\n    for (let i = 0; i < arr.length; i += 1) {\n      if (arr[i] === `'`) {\n        // greedy-search for next apostrophe\n        for (let o = i + 1; o < arr.length; o += 1) {\n          if (arr[o]) {\n            arr[i] += arr[o];\n          }\n          if (arr[o] === `'`) {\n            arr[o] = null;\n            break\n          }\n          arr[o] = null;\n        }\n      }\n    }\n    return arr.filter((ch) => ch)\n  };\n\n  //combine consecutive chars, like 'yyyy' as one.\n  const combineRepeated = function (arr) {\n    for (let i = 0; i < arr.length; i += 1) {\n      let c = arr[i];\n      // greedy-forward\n      for (let o = i + 1; o < arr.length; o += 1) {\n        if (arr[o] === c) {\n          arr[i] += arr[o];\n          arr[o] = null;\n        } else {\n          break\n        }\n      }\n    }\n    // '' means one apostrophe\n    arr = arr.filter((ch) => ch);\n    arr = arr.map((str) => {\n      if (str === `''`) {\n        str = `'`;\n      }\n      return str\n    });\n    return arr\n  };\n\n  const unixFmt = (s, str) => {\n    let arr = str.split('');\n    // support character escaping\n    arr = escapeChars(arr);\n    //combine 'yyyy' as string.\n    arr = combineRepeated(arr);\n    return arr.reduce((txt, c) => {\n      if (mapping$2[c] !== undefined) {\n        txt += mapping$2[c](s) || '';\n      } else {\n        // 'unescape'\n        if (/^'.+'$/.test(c)) {\n          c = c.replace(/'/g, '');\n        }\n        txt += c;\n      }\n      return txt\n    }, '')\n  };\n\n  const units$4 = ['year', 'season', 'quarter', 'month', 'week', 'day', 'quarterHour', 'hour', 'minute'];\n\n  const doUnit = function (s, k) {\n    let start = s.clone().startOf(k);\n    let end = s.clone().endOf(k);\n    let duration = end.epoch - start.epoch;\n    let percent = (s.epoch - start.epoch) / duration;\n    return parseFloat(percent.toFixed(2))\n  };\n\n  //how far it is along, from 0-1\n  const progress = (s, unit) => {\n    if (unit) {\n      unit = normalize$3(unit);\n      return doUnit(s, unit)\n    }\n    let obj = {};\n    units$4.forEach(k => {\n      obj[k] = doUnit(s, k);\n    });\n    return obj\n  };\n\n  /* eslint-disable no-console */\n\n  //round to either current, or +1 of this unit\n  const nearest = (s, unit) => {\n    //how far have we gone?\n    let prog = s.progress();\n    unit = normalize$3(unit);\n    //fix camel-case for this one\n    if (unit === 'quarterhour') {\n      unit = 'quarterHour';\n    }\n    if (prog[unit] !== undefined) {\n      // go forward one?\n      if (prog[unit] > 0.5) {\n        s = s.add(1, unit);\n      }\n      // go to start\n      s = s.startOf(unit);\n    } else if (s.silent === false) {\n      console.warn(\"no known unit '\" + unit + \"'\");\n    }\n    return s\n  };\n\n  //increment until dates are the same\n  const climb = (a, b, unit) => {\n    let i = 0;\n    a = a.clone();\n    while (a.isBefore(b)) {\n      //do proper, expensive increment to catch all-the-tricks\n      a = a.add(1, unit);\n      i += 1;\n    }\n    //oops, we went too-far..\n    if (a.isAfter(b, unit)) {\n      i -= 1;\n    }\n    return i\n  };\n\n  // do a thurough +=1 on the unit, until they match\n  // for speed-reasons, only used on day, month, week.\n  const diffOne = (a, b, unit) => {\n    if (a.isBefore(b)) {\n      return climb(a, b, unit)\n    } else {\n      return climb(b, a, unit) * -1 //reverse it\n    }\n  };\n\n  // don't do anything too fancy here.\n  // 2020 - 2019 may be 1 year, or 0 years\n  // - '1 year difference' means 366 days during a leap year\n  const fastYear = (a, b) => {\n    let years = b.year() - a.year();\n    // should we decrement it by 1?\n    a = a.year(b.year());\n    if (a.isAfter(b)) {\n      years -= 1;\n    }\n    return years\n  };\n\n  // use a waterfall-method for computing a diff of any 'pre-knowable' units\n  // compute years, then compute months, etc..\n  // ... then ms-math for any very-small units\n  const diff = function (a, b) {\n    // an hour is always the same # of milliseconds\n    // so these units can be 'pre-calculated'\n    let msDiff = b.epoch - a.epoch;\n    let obj = {\n      milliseconds: msDiff,\n      seconds: parseInt(msDiff / 1000, 10)\n    };\n    obj.minutes = parseInt(obj.seconds / 60, 10);\n    obj.hours = parseInt(obj.minutes / 60, 10);\n\n    //do the year\n    let tmp = a.clone();\n    obj.years = fastYear(tmp, b);\n    tmp = a.add(obj.years, 'year');\n\n    //there's always 12 months in a year...\n    obj.months = obj.years * 12;\n    tmp = a.add(obj.months, 'month');\n    obj.months += diffOne(tmp, b, 'month');\n\n    // there's always 4 quarters in a year...\n    obj.quarters = obj.years * 4;\n    obj.quarters += parseInt((obj.months % 12) / 3, 10);\n\n    // there's always atleast 52 weeks in a year..\n    // (month * 4) isn't as close\n    obj.weeks = obj.years * 52;\n    tmp = a.add(obj.weeks, 'week');\n    obj.weeks += diffOne(tmp, b, 'week');\n\n    // there's always atleast 7 days in a week\n    obj.days = obj.weeks * 7;\n    tmp = a.add(obj.days, 'day');\n    obj.days += diffOne(tmp, b, 'day');\n\n    return obj\n  };\n\n  const reverseDiff = function (obj) {\n    Object.keys(obj).forEach((k) => {\n      obj[k] *= -1;\n    });\n    return obj\n  };\n\n  // this method counts a total # of each unit, between a, b.\n  // '1 month' means 28 days in february\n  // '1 year' means 366 days in a leap year\n  const main$1 = function (a, b, unit) {\n    b = beADate(b, a);\n    //reverse values, if necessary\n    let reversed = false;\n    if (a.isAfter(b)) {\n      let tmp = a;\n      a = b;\n      b = tmp;\n      reversed = true;\n    }\n    //compute them all (i know!)\n    let obj = diff(a, b);\n    if (reversed) {\n      obj = reverseDiff(obj);\n    }\n    //return just the requested unit\n    if (unit) {\n      //make sure it's plural-form\n      unit = normalize$3(unit);\n      if (/s$/.test(unit) !== true) {\n        unit += 's';\n      }\n      if (unit === 'dates') {\n        unit = 'days';\n      }\n      return obj[unit]\n    }\n    return obj\n  };\n\n  /*\n  ISO 8601 duration format\n  // https://en.wikipedia.org/wiki/ISO_8601#Durations\n  \"P3Y6M4DT12H30M5S\"\n  P the start of the duration representation.\n  Y the number of years.\n  M the number of months.\n  W the number of weeks.\n  D the number of days.\n  T of the representation.\n  H the number of hours.\n  M the number of minutes.\n  S the number of seconds.\n  */\n\n  const fmt$1 = (n) => Math.abs(n) || 0;\n\n  const toISO = function (diff) {\n    let iso = 'P';\n    iso += fmt$1(diff.years) + 'Y';\n    iso += fmt$1(diff.months) + 'M';\n    iso += fmt$1(diff.days) + 'DT';\n    iso += fmt$1(diff.hours) + 'H';\n    iso += fmt$1(diff.minutes) + 'M';\n    iso += fmt$1(diff.seconds) + 'S';\n    return iso\n  };\n\n  //get number of hours/minutes... between the two dates\n  function getDiff(a, b) {\n    const isBefore = a.isBefore(b);\n    const later = isBefore ? b : a;\n    let earlier = isBefore ? a : b;\n    earlier = earlier.clone();\n    const diff = {\n      years: 0,\n      months: 0,\n      days: 0,\n      hours: 0,\n      minutes: 0,\n      seconds: 0\n    };\n    Object.keys(diff).forEach((unit) => {\n      if (earlier.isSame(later, unit)) {\n        return\n      }\n      let max = earlier.diff(later, unit);\n      earlier = earlier.add(max, unit);\n      diff[unit] = max;\n    });\n    //reverse it, if necessary\n    if (isBefore) {\n      Object.keys(diff).forEach((u) => {\n        if (diff[u] !== 0) {\n          diff[u] *= -1;\n        }\n      });\n    }\n    return diff\n  }\n\n  let units$3 = {\n      second: 'second',\n      seconds: 'seconds',\n      minute: 'minute',\n      minutes: 'minutes',\n      hour: 'hour',\n      hours: 'hours',\n      day: 'day',\n      days: 'days',\n      month: 'month',\n      months: 'months',\n      year: 'year',\n      years: 'years',\n  };\n\n  function unitsString(unit) {\n      return units$3[unit] || '';\n  }\n\n  function set$2(i18n = {}) {\n      units$3 = {\n          second: i18n.second || units$3.second,\n          seconds: i18n.seconds || units$3.seconds,\n          minute: i18n.minute || units$3.minute,\n          minutes: i18n.minutes || units$3.minutes,\n          hour: i18n.hour || units$3.hour,\n          hours: i18n.hours || units$3.hours,\n          day: i18n.day || units$3.day,\n          days: i18n.days || units$3.days,\n          month: i18n.month || units$3.month,\n          months: i18n.months || units$3.months,\n          year: i18n.year || units$3.year,\n          years: i18n.years || units$3.years,\n      };\n  }\n\n  let past = 'past';\n  let future = 'future';\n  let present = 'present';\n  let now = 'now';\n  let almost = 'almost';\n  let over = 'over';\n  let pastDistance = (value) => `${value} ago`;\n  let futureDistance = (value) => `in ${value}`;\n\n  function pastDistanceString(value) { return pastDistance(value) }\n  function futureDistanceString(value) { return futureDistance(value) }\n  function pastString() { return past }\n  function futureString() { return future }\n  function presentString() { return present }\n  function nowString() { return now }\n  function almostString() { return almost }\n  function overString() { return over }\n\n  function set$1(i18n) {\n      pastDistance = i18n.pastDistance || pastDistance;\n      futureDistance = i18n.futureDistance || futureDistance;\n      past = i18n.past || past;\n      future = i18n.future || future;\n      present = i18n.present || present;\n      now = i18n.now || now;\n      almost = i18n.almost || almost;\n      over = i18n.over || over;\n  }\n\n  //our conceptual 'break-points' for each unit\n\n  const qualifiers = {\n    months: {\n      almost: 10,\n      over: 4\n    },\n    days: {\n      almost: 25,\n      over: 10\n    },\n    hours: {\n      almost: 20,\n      over: 8\n    },\n    minutes: {\n      almost: 50,\n      over: 20\n    },\n    seconds: {\n      almost: 50,\n      over: 20\n    }\n  };\n\n  // Expects a plural unit arg\n  function pluralize(value, unit) {\n    if (value === 1) {\n      return value + ' ' + unitsString(unit.slice(0, -1))\n    }\n    return value + ' ' + unitsString(unit)\n  }\n\n  const toSoft = function (diff) {\n    let rounded = null;\n    let qualified = null;\n    let abbreviated = [];\n    let englishValues = [];\n    //go through each value and create its text-representation\n    Object.keys(diff).forEach((unit, i, units) => {\n      const value = Math.abs(diff[unit]);\n      if (value === 0) {\n        return\n      }\n      abbreviated.push(value + unit[0]);\n      const englishValue = pluralize(value, unit);\n      englishValues.push(englishValue);\n      if (!rounded) {\n        rounded = englishValue;\n        qualified = englishValue;\n        if (i > 4) {\n          return\n        }\n        //is it a 'almost' something, etc?\n        const nextUnit = units[i + 1];\n        const nextValue = Math.abs(diff[nextUnit]);\n        if (nextValue > qualifiers[nextUnit].almost) {\n          rounded = pluralize(value + 1, unit);\n          qualified = almostString() + ' ' + rounded;\n        } else if (nextValue > qualifiers[nextUnit].over) {\n          qualified = overString() + ' ' + englishValue;\n        }\n      }\n    });\n\n    return { qualified, rounded, abbreviated, englishValues }\n  };\n\n  //by spencermountain + Shaun Grady\n\n  //create the human-readable diff between the two dates\n  const since = (start, end) => {\n    end = beADate(end, start);\n    const diff = getDiff(start, end);\n    const isNow = Object.keys(diff).every((u) => !diff[u]);\n    if (isNow === true) {\n      return {\n        diff,\n        rounded: nowString(),\n        qualified: nowString(),\n        precise: nowString(),\n        abbreviated: [],\n        iso: 'P0Y0M0DT0H0M0S',\n        direction: presentString(),\n      }\n    }\n    let precise;\n    let direction = futureString();\n\n    let { rounded, qualified, englishValues, abbreviated } = toSoft(diff);\n\n    //make them into a string\n    precise = englishValues.splice(0, 2).join(', ');\n    //handle before/after logic\n    if (start.isAfter(end) === true) {\n      rounded = pastDistanceString(rounded);\n      qualified = pastDistanceString(qualified);\n      precise = pastDistanceString(precise);\n      direction = pastString();\n    } else {\n      rounded = futureDistanceString(rounded);\n      qualified = futureDistanceString(qualified);\n      precise = futureDistanceString(precise);\n    }\n    // https://en.wikipedia.org/wiki/ISO_8601#Durations\n    // P[n]Y[n]M[n]DT[n]H[n]M[n]S \n    let iso = toISO(diff);\n    return {\n      diff,\n      rounded,\n      qualified,\n      precise,\n      abbreviated,\n      iso,\n      direction,\n    }\n  };\n\n  //https://www.timeanddate.com/calendar/aboutseasons.html\n  // Spring - from March 1 to May 31;\n  // Summer - from June 1 to August 31;\n  // Fall (autumn) - from September 1 to November 30; and,\n  // Winter - from December 1 to February 28 (February 29 in a leap year).\n  const north = [\n    ['spring', 2, 1],\n    ['summer', 5, 1],\n    ['fall', 8, 1],\n    ['autumn', 8, 1],\n    ['winter', 11, 1] //dec 1\n  ];\n  const south = [\n    ['fall', 2, 1],\n    ['autumn', 2, 1],\n    ['winter', 5, 1],\n    ['spring', 8, 1],\n    ['summer', 11, 1] //dec 1\n  ];\n\n  var seasons$1 = { north, south };\n\n  var quarters = [\n    null,\n    [0, 1], //jan 1\n    [3, 1], //apr 1\n    [6, 1], //july 1\n    [9, 1] //oct 1\n  ];\n\n  const units$2 = {\n    second: (s) => {\n      walkTo(s, {\n        millisecond: 0\n      });\n      return s\n    },\n    minute: (s) => {\n      walkTo(s, {\n        second: 0,\n        millisecond: 0\n      });\n      return s\n    },\n    quarterhour: (s) => {\n      let minute = s.minutes();\n      if (minute >= 45) {\n        s = s.minutes(45);\n      } else if (minute >= 30) {\n        s = s.minutes(30);\n      } else if (minute >= 15) {\n        s = s.minutes(15);\n      } else {\n        s = s.minutes(0);\n      }\n      walkTo(s, {\n        second: 0,\n        millisecond: 0\n      });\n      return s\n    },\n    hour: (s) => {\n      walkTo(s, {\n        minute: 0,\n        second: 0,\n        millisecond: 0\n      });\n      return s\n    },\n    day: (s) => {\n      walkTo(s, {\n        hour: 0,\n        minute: 0,\n        second: 0,\n        millisecond: 0\n      });\n      return s\n    },\n    week: (s) => {\n      let original = s.clone();\n      s = s.day(s._weekStart); //monday\n      if (s.isAfter(original)) {\n        s = s.subtract(1, 'week');\n      }\n      walkTo(s, {\n        hour: 0,\n        minute: 0,\n        second: 0,\n        millisecond: 0\n      });\n      return s\n    },\n    month: (s) => {\n      walkTo(s, {\n        date: 1,\n        hour: 0,\n        minute: 0,\n        second: 0,\n        millisecond: 0\n      });\n      return s\n    },\n    quarter: (s) => {\n      let q = s.quarter();\n      if (quarters[q]) {\n        walkTo(s, {\n          month: quarters[q][0],\n          date: quarters[q][1],\n          hour: 0,\n          minute: 0,\n          second: 0,\n          millisecond: 0\n        });\n      }\n      return s\n    },\n    season: (s) => {\n      let current = s.season();\n      let hem = 'north';\n      if (s.hemisphere() === 'South') {\n        hem = 'south';\n      }\n      for (let i = 0; i < seasons$1[hem].length; i++) {\n        if (seasons$1[hem][i][0] === current) {\n          //winter goes between years\n          let year = s.year();\n          if (current === 'winter' && s.month() < 3) {\n            year -= 1;\n          }\n          walkTo(s, {\n            year,\n            month: seasons$1[hem][i][1],\n            date: seasons$1[hem][i][2],\n            hour: 0,\n            minute: 0,\n            second: 0,\n            millisecond: 0\n          });\n          return s\n        }\n      }\n      return s\n    },\n    year: (s) => {\n      walkTo(s, {\n        month: 0,\n        date: 1,\n        hour: 0,\n        minute: 0,\n        second: 0,\n        millisecond: 0\n      });\n      return s\n    },\n    decade: (s) => {\n      s = s.startOf('year');\n      let year = s.year();\n      let decade = parseInt(year / 10, 10) * 10;\n      s = s.year(decade);\n      return s\n    },\n    century: (s) => {\n      s = s.startOf('year');\n      let year = s.year();\n      // near 0AD goes '-1 | +1'\n      let decade = parseInt(year / 100, 10) * 100;\n      s = s.year(decade);\n      return s\n    }\n  };\n  units$2.date = units$2.day;\n\n  const startOf = (a, unit) => {\n    let s = a.clone();\n    unit = normalize$3(unit);\n    if (units$2[unit]) {\n      return units$2[unit](s)\n    }\n    if (unit === 'summer' || unit === 'winter') {\n      s = s.season(unit);\n      return units$2.season(s)\n    }\n    return s\n  };\n\n  //piggy-backs off startOf\n  const endOf = (a, unit) => {\n    let s = a.clone();\n    unit = normalize$3(unit);\n    if (units$2[unit]) {\n      // go to beginning, go to next one, step back 1ms\n      s = units$2[unit](s); // startof\n      s = s.add(1, unit);\n      s = s.subtract(1, 'millisecond');\n      return s\n    }\n    return s\n  };\n\n  //is it 'wednesday'?\n  const isDay = function (unit) {\n    if (short().find((s) => s === unit)) {\n      return true\n    }\n    if (long().find((s) => s === unit)) {\n      return true\n    }\n    return false\n  };\n\n  // return a list of the weeks/months/days between a -> b\n  // returns spacetime objects in the timezone of the input\n  const every = function (start, unit, end, stepCount = 1) {\n    if (!unit || !end) {\n      return []\n    }\n    //cleanup unit param\n    unit = normalize$3(unit);\n    //cleanup to param\n    end = start.clone().set(end);\n    //swap them, if they're backwards\n    if (start.isAfter(end)) {\n      let tmp = start;\n      start = end;\n      end = tmp;\n    }\n    //prevent going beyond end if unit/stepCount > than the range\n    if (start.diff(end, unit) < stepCount) {\n      return []\n    }\n    //support 'every wednesday'\n    let d = start.clone();\n    if (isDay(unit)) {\n      d = d.next(unit);\n      unit = 'week';\n    } else {\n      let first = d.startOf(unit);\n      if (first.isBefore(start)) {\n        d = d.next(unit);\n      }\n    }\n    //okay, actually start doing it\n    let result = [];\n    while (d.isBefore(end)) {\n      result.push(d);\n      d = d.add(stepCount, unit);\n    }\n    return result\n  };\n\n  /* eslint-disable no-console */\n\n  const parseDst = dst => {\n    if (!dst) {\n      return []\n    }\n    return dst.split('->')\n  };\n\n  //iana codes are case-sensitive, technically\n  const titleCase = str => {\n    str = str[0].toUpperCase() + str.substr(1);\n    str = str.replace(/[/_-]([a-z])/gi, s => {\n      return s.toUpperCase()\n    });\n    str = str.replace(/_(of|es)_/i, (s) => s.toLowerCase());\n    str = str.replace(/\\/gmt/i, '/GMT');\n    str = str.replace(/\\/Dumontdurville$/i, '/DumontDUrville');\n    str = str.replace(/\\/Mcmurdo$/i, '/McMurdo');\n    str = str.replace(/\\/Port-au-prince$/i, '/Port-au-Prince');\n    return str\n  };\n\n  //get metadata about this timezone\n  const timezone = s => {\n    let zones = s.timezones;\n    let tz = s.tz;\n    if (zones.hasOwnProperty(tz) === false) {\n      tz = lookupTz(s.tz, zones);\n    }\n    if (tz === null) {\n      if (s.silent === false) {\n        console.warn(\"Warn: could not find given or local timezone - '\" + s.tz + \"'\");\n      }\n      return {\n        current: {\n          epochShift: 0\n        }\n      }\n    }\n    let found = zones[tz];\n    let result = {\n      name: titleCase(tz),\n      hasDst: Boolean(found.dst),\n      default_offset: found.offset,\n      //do north-hemisphere version as default (sorry!)\n      hemisphere: found.hem === 's' ? 'South' : 'North',\n      current: {}\n    };\n\n    if (result.hasDst) {\n      let arr = parseDst(found.dst);\n      result.change = {\n        start: arr[0],\n        back: arr[1]\n      };\n    }\n    //find the offsets for summer/winter times\n    //(these variable names are north-centric)\n    let summer = found.offset; // (july)\n    let winter = summer; // (january) assume it's the same for now\n    if (result.hasDst === true) {\n      if (result.hemisphere === 'North') {\n        winter = summer - 1;\n      } else {\n        //southern hemisphere\n        winter = found.offset + 1;\n      }\n    }\n\n    //find out which offset to use right now\n    //use 'summer' time july-time\n    if (result.hasDst === false) {\n      result.current.offset = summer;\n      result.current.isDST = false;\n    } else if (inSummerTime(s.epoch, result.change.start, result.change.back, summer, winter) === true) {\n      result.current.offset = summer;\n      result.current.isDST = result.hemisphere === 'North'; //dst 'on' in winter in north\n    } else {\n      //use 'winter' january-time\n      result.current.offset = winter;\n      result.current.isDST = result.hemisphere === 'South'; //dst 'on' in summer in south\n    }\n    return result\n  };\n\n  /* eslint-disable no-console */\n  const units$1 = [\n    'century',\n    'decade',\n    'year',\n    'month',\n    'date',\n    'day',\n    'hour',\n    'minute',\n    'second',\n    'millisecond'\n  ];\n\n  //the spacetime instance methods (also, the API)\n  const methods$4 = {\n    set: function (input, tz) {\n      let s = this.clone();\n      s = parseInput(s, input);\n      if (tz) {\n        this.tz = lookupTz(tz);\n      }\n      return s\n    },\n    timezone: function () {\n      return timezone(this)\n    },\n    isDST: function () {\n      return timezone(this).current.isDST\n    },\n    hasDST: function () {\n      return timezone(this).hasDst\n    },\n    offset: function () {\n      return timezone(this).current.offset * 60\n    },\n    hemisphere: function () {\n      return timezone(this).hemisphere\n    },\n    format: function (fmt) {\n      return printFormat(this, fmt)\n    },\n    unixFmt: function (fmt) {\n      return unixFmt(this, fmt)\n    },\n    startOf: function (unit) {\n      return startOf(this, unit)\n    },\n    endOf: function (unit) {\n      return endOf(this, unit)\n    },\n    leapYear: function () {\n      let year = this.year();\n      return isLeapYear(year)\n    },\n    progress: function (unit) {\n      return progress(this, unit)\n    },\n    nearest: function (unit) {\n      return nearest(this, unit)\n    },\n    diff: function (d, unit) {\n      return main$1(this, d, unit)\n    },\n    since: function (d) {\n      if (!d) {\n        d = this.clone().set();\n      }\n      return since(this, d)\n    },\n    next: function (unit) {\n      let s = this.add(1, unit);\n      return s.startOf(unit)\n    },\n    //the start of the previous year/week/century\n    last: function (unit) {\n      let s = this.subtract(1, unit);\n      return s.startOf(unit)\n    },\n    isValid: function () {\n      //null/undefined epochs\n      if (!this.epoch && this.epoch !== 0) {\n        return false\n      }\n      return !isNaN(this.d.getTime())\n    },\n    //travel to this timezone\n    goto: function (tz) {\n      let s = this.clone();\n      s.tz = lookupTz(tz, s.timezones); //science!\n      return s\n    },\n    //get each week/month/day between a -> b\n    every: function (unit, to, stepCount) {\n      // allow swapping these params:\n      if (typeof unit === 'object' && typeof to === 'string') {\n        let tmp = to;\n        to = unit;\n        unit = tmp;\n      }\n      return every(this, unit, to, stepCount)\n    },\n    isAwake: function () {\n      let hour = this.hour();\n      //10pm -> 8am\n      if (hour < 8 || hour > 22) {\n        return false\n      }\n      return true\n    },\n    isAsleep: function () {\n      return !this.isAwake()\n    },\n    daysInMonth: function () {\n      switch (this.month()) {\n        case 0:\n          return 31\n        case 1:\n          return this.leapYear() ? 29 : 28\n        case 2:\n          return 31\n        case 3:\n          return 30\n        case 4:\n          return 31\n        case 5:\n          return 30\n        case 6:\n          return 31\n        case 7:\n          return 31\n        case 8:\n          return 30\n        case 9:\n          return 31\n        case 10:\n          return 30\n        case 11:\n          return 31\n        default:\n          throw new Error('Invalid Month state.')\n      }\n    },\n    //pretty-printing\n    log: function () {\n      console.log('');\n      console.log(printFormat(this, 'nice-short'));\n      return this\n    },\n    logYear: function () {\n      console.log('');\n      console.log(printFormat(this, 'full-short'));\n      return this\n    },\n    json: function () {\n      return units$1.reduce((h, unit) => {\n        h[unit] = this[unit]();\n        return h\n      }, {})\n    },\n    debug: function () {\n      let tz = this.timezone();\n      let date = this.format('MM') + ' ' + this.format('date-ordinal') + ' ' + this.year();\n      date += '\\n     - ' + this.format('time');\n      console.log('\\n\\n', date + '\\n     - ' + tz.name + ' (' + tz.current.offset + ')');\n      return this\n    },\n    //alias of 'since' but opposite - like moment.js\n    from: function (d) {\n      d = this.clone().set(d);\n      return d.since(this)\n    },\n    fromNow: function () {\n      let d = this.clone().set(Date.now());\n      return d.since(this)\n    },\n    weekStart: function (input) {\n      //accept a number directly\n      if (typeof input === 'number') {\n        this._weekStart = input;\n        return this\n      }\n      if (typeof input === 'string') {\n        // accept 'wednesday'\n        input = input.toLowerCase().trim();\n        let num = short().indexOf(input);\n        if (num === -1) {\n          num = long().indexOf(input);\n        }\n        if (num === -1) {\n          num = 1; //go back to default\n        }\n        this._weekStart = num;\n      } else {\n        console.warn('Spacetime Error: Cannot understand .weekStart() input:', input);\n      }\n      return this\n    }\n  };\n  // aliases\n  methods$4.inDST = methods$4.isDST;\n  methods$4.round = methods$4.nearest;\n  methods$4.each = methods$4.every;\n\n  // javascript setX methods like setDate() can't be used because of the local bias\n  //these methods wrap around them.\n\n  const validate = (n) => {\n    //handle number as a string\n    if (typeof n === 'string') {\n      n = parseInt(n, 10);\n    }\n    return n\n  };\n\n  const order$1 = ['year', 'month', 'date', 'hour', 'minute', 'second', 'millisecond'];\n\n  //reduce hostile micro-changes when moving dates by millisecond\n  const confirm = (s, tmp, unit) => {\n    let n = order$1.indexOf(unit);\n    let arr = order$1.slice(n, order$1.length);\n    for (let i = 0; i < arr.length; i++) {\n      let want = tmp[arr[i]]();\n      s[arr[i]](want);\n    }\n    return s\n  };\n\n  // allow specifying setter direction\n  const fwdBkwd = function (s, old, goFwd, unit) {\n    if (goFwd === true && s.isBefore(old)) {\n      s = s.add(1, unit);\n    } else if (goFwd === false && s.isAfter(old)) {\n      s = s.minus(1, unit);\n    }\n    return s\n  };\n\n  const milliseconds = function (s, n) {\n    n = validate(n);\n    let current = s.millisecond();\n    let diff = current - n; //milliseconds to shift by\n    return s.epoch - diff\n  };\n\n  const seconds = function (s, n, goFwd) {\n    n = validate(n);\n    let old = s.clone();\n    let diff = s.second() - n;\n    let shift = diff * o.second;\n    s.epoch = s.epoch - shift;\n    s = fwdBkwd(s, old, goFwd, 'minute'); // specify direction\n    return s.epoch\n  };\n\n  const minutes = function (s, n, goFwd) {\n    n = validate(n);\n    let old = s.clone();\n    let diff = s.minute() - n;\n    let shift = diff * o.minute;\n    s.epoch -= shift;\n    confirm(s, old, 'second');\n    s = fwdBkwd(s, old, goFwd, 'hour'); // specify direction\n    return s.epoch\n  };\n\n  const hours = function (s, n, goFwd) {\n    n = validate(n);\n    if (n >= 24) {\n      n = 24;\n    } else if (n < 0) {\n      n = 0;\n    }\n    let old = s.clone();\n    let diff = s.hour() - n;\n    let shift = diff * o.hour;\n    s.epoch -= shift;\n    // oops, did we change the day?\n    if (s.date() !== old.date()) {\n      s = old.clone();\n      if (diff > 1) {\n        diff -= 1;\n      }\n      if (diff < 1) {\n        diff += 1;\n      }\n      shift = diff * o.hour;\n      s.epoch -= shift;\n    }\n    walkTo(s, {\n      hour: n\n    });\n    confirm(s, old, 'minute');\n    s = fwdBkwd(s, old, goFwd, 'day'); // specify direction\n    return s.epoch\n  };\n\n  const time = function (s, str, goFwd) {\n    let m = str.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/);\n    if (!m) {\n      //fallback to support just '2am'\n      m = str.match(/([0-9]{1,2}) ?(am|pm)/);\n      if (!m) {\n        return s.epoch\n      }\n      m.splice(2, 0, '0'); //add implicit 0 minutes\n      m.splice(3, 0, ''); //add implicit seconds\n    }\n    let h24 = false;\n    let hour = parseInt(m[1], 10);\n    let minute = parseInt(m[2], 10);\n    if (minute >= 60) {\n      minute = 59;\n    }\n    if (hour > 12) {\n      h24 = true;\n    }\n    //make the hour into proper 24h time\n    if (h24 === false) {\n      if (m[4] === 'am' && hour === 12) {\n        //12am is midnight\n        hour = 0;\n      }\n      if (m[4] === 'pm' && hour < 12) {\n        //12pm is noon\n        hour += 12;\n      }\n    }\n    // handle seconds\n    m[3] = m[3] || '';\n    m[3] = m[3].replace(/:/, '');\n    let sec = parseInt(m[3], 10) || 0;\n    let old = s.clone();\n    s = s.hour(hour);\n    s = s.minute(minute);\n    s = s.second(sec);\n    s = s.millisecond(0);\n    s = fwdBkwd(s, old, goFwd, 'day'); // specify direction\n    return s.epoch\n  };\n\n  const date = function (s, n, goFwd) {\n    n = validate(n);\n    //avoid setting february 31st\n    if (n > 28) {\n      let month = s.month();\n      let max = monthLengths[month];\n      // support leap day in february\n      if (month === 1 && n === 29 && isLeapYear(s.year())) {\n        max = 29;\n      }\n      if (n > max) {\n        n = max;\n      }\n    }\n    //avoid setting < 0\n    if (n <= 0) {\n      n = 1;\n    }\n    let old = s.clone();\n    walkTo(s, {\n      date: n\n    });\n    s = fwdBkwd(s, old, goFwd, 'month'); // specify direction\n    return s.epoch\n  };\n\n  const month = function (s, n, goFwd) {\n    if (typeof n === 'string') {\n      if (n === 'sept') {\n        n = 'sep';\n      }\n      n = mapping$3()[n.toLowerCase()];\n    }\n    n = validate(n);\n    //don't go past december\n    if (n >= 12) {\n      n = 11;\n    }\n    if (n <= 0) {\n      n = 0;\n    }\n\n    let d = s.date();\n    //there's no 30th of february, etc.\n    if (d > monthLengths[n]) {\n      //make it as close as we can..\n      d = monthLengths[n];\n    }\n    let old = s.clone();\n    walkTo(s, {\n      month: n,\n      d\n    });\n    s = fwdBkwd(s, old, goFwd, 'year'); // specify direction\n    return s.epoch\n  };\n\n  const year = function (s, n) {\n    // support '97\n    if (typeof n === 'string' && /^'[0-9]{2}$/.test(n)) {\n      n = n.replace(/'/, '').trim();\n      n = Number(n);\n      // '89 is 1989\n      if (n > 30) {\n        //change this in 10y\n        n = 1900 + n;\n      } else {\n        // '12 is 2012\n        n = 2000 + n;\n      }\n    }\n    n = validate(n);\n    walkTo(s, {\n      year: n\n    });\n    return s.epoch\n  };\n\n  const week = function (s, n, goFwd) {\n    let old = s.clone();\n    n = validate(n);\n    s = s.month(0);\n    s = s.date(1);\n    s = s.day('monday');\n    //first week starts first Thurs in Jan\n    // so mon dec 28th is 1st week\n    // so mon dec 29th is not the week\n    if (s.monthName() === 'december' && s.date() >= 28) {\n      s = s.add(1, 'week');\n    }\n    n -= 1; //1-based\n    s = s.add(n, 'weeks');\n    s = fwdBkwd(s, old, goFwd, 'year'); // specify direction\n    return s.epoch\n  };\n\n  const dayOfYear = function (s, n, goFwd) {\n    n = validate(n);\n    let old = s.clone();\n    n -= 1; //days are 1-based\n    if (n <= 0) {\n      n = 0;\n    } else if (n >= 365) {\n      if (isLeapYear(s.year())) {\n        n = 365;\n      } else {\n        n = 364;\n      }\n    }\n    s = s.startOf('year');\n    s = s.add(n, 'day');\n    confirm(s, old, 'hour');\n    s = fwdBkwd(s, old, goFwd, 'year'); // specify direction\n    return s.epoch\n  };\n\n  let morning = 'am';\n  let evening = 'pm';\n\n  function am() { return morning }\n  function pm() { return evening }\n  function set(i18n) {\n      morning = i18n.am || morning;\n      evening = i18n.pm || evening;\n  }\n\n  const methods$3 = {\n    millisecond: function (num) {\n      if (num !== undefined) {\n        let s = this.clone();\n        s.epoch = milliseconds(s, num);\n        return s\n      }\n      return this.d.getMilliseconds()\n    },\n    second: function (num, goFwd) {\n      if (num !== undefined) {\n        let s = this.clone();\n        s.epoch = seconds(s, num, goFwd);\n        return s\n      }\n      return this.d.getSeconds()\n    },\n    minute: function (num, goFwd) {\n      if (num !== undefined) {\n        let s = this.clone();\n        s.epoch = minutes(s, num, goFwd);\n        return s\n      }\n      return this.d.getMinutes()\n    },\n    hour: function (num, goFwd) {\n      let d = this.d;\n      if (num !== undefined) {\n        let s = this.clone();\n        s.epoch = hours(s, num, goFwd);\n        return s\n      }\n      return d.getHours()\n    },\n\n    //'3:30' is 3.5\n    hourFloat: function (num, goFwd) {\n      if (num !== undefined) {\n        let s = this.clone();\n        let minute = num % 1;\n        minute = minute * 60;\n        let hour = parseInt(num, 10);\n        s.epoch = hours(s, hour, goFwd);\n        s.epoch = minutes(s, minute, goFwd);\n        return s\n      }\n      let d = this.d;\n      let hour = d.getHours();\n      let minute = d.getMinutes();\n      minute = minute / 60;\n      return hour + minute\n    },\n\n    // hour in 12h format\n    hour12: function (str, goFwd) {\n      let d = this.d;\n      if (str !== undefined) {\n        let s = this.clone();\n        str = '' + str;\n        let m = str.match(/^([0-9]+)(am|pm)$/);\n        if (m) {\n          let hour = parseInt(m[1], 10);\n          if (m[2] === 'pm') {\n            hour += 12;\n          }\n          s.epoch = hours(s, hour, goFwd);\n        }\n        return s\n      }\n      //get the hour\n      let hour12 = d.getHours();\n      if (hour12 > 12) {\n        hour12 = hour12 - 12;\n      }\n      if (hour12 === 0) {\n        hour12 = 12;\n      }\n      return hour12\n    },\n\n    //some ambiguity here with 12/24h\n    time: function (str, goFwd) {\n      if (str !== undefined) {\n        let s = this.clone();\n        str = str.toLowerCase().trim();\n        s.epoch = time(s, str, goFwd);\n        return s\n      }\n      return `${this.h12()}:${zeroPad(this.minute())}${this.ampm()}`\n    },\n\n    // either 'am' or 'pm'\n    ampm: function (input, goFwd) {\n      // let which = 'am'\n      let which = am();\n      let hour = this.hour();\n      if (hour >= 12) {\n        // which = 'pm'\n        which = pm();\n      }\n      if (typeof input !== 'string') {\n        return which\n      }\n      //okay, we're doing a setter\n      let s = this.clone();\n      input = input.toLowerCase().trim();\n      //ampm should never change the day\n      // - so use `.hour(n)` instead of `.minus(12,'hour')`\n      if (hour >= 12 && input === 'am') {\n        //noon is 12pm\n        hour -= 12;\n        return s.hour(hour, goFwd)\n      }\n      if (hour < 12 && input === 'pm') {\n        hour += 12;\n        return s.hour(hour, goFwd)\n      }\n      return s\n    },\n\n    //some hard-coded times of day, like 'noon'\n    dayTime: function (str, goFwd) {\n      if (str !== undefined) {\n        const times = {\n          morning: '7:00',\n          breakfast: '7:00',\n          noon: '12:00',\n          lunch: '12:00',\n          afternoon: '14:00',\n          evening: '18:00',\n          dinner: '18:00',\n          night: '23:00',\n          midnight: '00:00'\n        };\n        let s = this.clone();\n        str = str || '';\n        str = str.toLowerCase();\n        if (times.hasOwnProperty(str) === true) {\n          s = s.time(times[str], goFwd);\n        }\n        return s\n      }\n      let h = this.hour();\n      if (h < 6) {\n        return 'night'\n      }\n      if (h < 12) {\n        //until noon\n        return 'morning'\n      }\n      if (h < 17) {\n        //until 5pm\n        return 'afternoon'\n      }\n      if (h < 22) {\n        //until 10pm\n        return 'evening'\n      }\n      return 'night'\n    },\n\n    //parse a proper iso string\n    iso: function (num) {\n      if (num !== undefined) {\n        return this.set(num)\n      }\n      return this.format('iso')\n    }\n  };\n\n  const methods$2 = {\n    // # day in the month\n    date: function (num, goFwd) {\n      if (num !== undefined) {\n        let s = this.clone();\n        num = parseInt(num, 10);\n        if (num) {\n          s.epoch = date(s, num, goFwd);\n        }\n        return s\n      }\n      return this.d.getDate()\n    },\n\n    //like 'wednesday' (hard!)\n    day: function (input, goFwd) {\n      if (input === undefined) {\n        return this.d.getDay()\n      }\n      let original = this.clone();\n      let want = input;\n      // accept 'wednesday'\n      if (typeof input === 'string') {\n        input = input.toLowerCase();\n        if (aliases$1.hasOwnProperty(input)) {\n          want = aliases$1[input];\n        } else {\n          want = short().indexOf(input);\n          if (want === -1) {\n            want = long().indexOf(input);\n          }\n        }\n      }\n      //move approx\n      let day = this.d.getDay();\n      let diff = day - want;\n      if (goFwd === true && diff > 0) {\n        diff = diff - 7;\n      }\n      if (goFwd === false && diff < 0) {\n        diff = diff + 7;\n      }\n      let s = this.subtract(diff, 'days');\n      //tighten it back up\n      walkTo(s, {\n        hour: original.hour(),\n        minute: original.minute(),\n        second: original.second()\n      });\n      return s\n    },\n\n    //these are helpful name-wrappers\n    dayName: function (input, goFwd) {\n      if (input === undefined) {\n        return long()[this.day()]\n      }\n      let s = this.clone();\n      s = s.day(input, goFwd);\n      return s\n    }\n  };\n\n  /* eslint-disable no-console */\n\n  const clearMinutes = (s) => {\n    s = s.minute(0);\n    s = s.second(0);\n    s = s.millisecond(1);\n    return s\n  };\n\n  const methods$1 = {\n    // day 0-366\n    dayOfYear: function (num, goFwd) {\n      if (num !== undefined) {\n        let s = this.clone();\n        s.epoch = dayOfYear(s, num, goFwd);\n        return s\n      }\n      //days since newyears - jan 1st is 1, jan 2nd is 2...\n      let sum = 0;\n      let month = this.d.getMonth();\n      let tmp;\n      //count the num days in each month\n      for (let i = 1; i <= month; i++) {\n        tmp = new Date();\n        tmp.setDate(1);\n        tmp.setFullYear(this.d.getFullYear()); //the year matters, because leap-years\n        tmp.setHours(1);\n        tmp.setMinutes(1);\n        tmp.setMonth(i);\n        tmp.setHours(-2); //the last day of the month\n        sum += tmp.getDate();\n      }\n      return sum + this.d.getDate()\n    },\n\n    //since the start of the year\n    week: function (num, goFwd) {\n      // week-setter\n      if (num !== undefined) {\n        let s = this.clone();\n        s.epoch = week(this, num, goFwd);\n        s = clearMinutes(s);\n        return s\n      }\n      //find-out which week it is\n      let tmp = this.clone();\n      tmp = tmp.month(0);\n      tmp = tmp.date(1);\n      tmp = clearMinutes(tmp);\n      tmp = tmp.day('monday');\n      //don't go into last-year\n      if (tmp.month() === 11 && tmp.date() >= 25) {\n        tmp = tmp.add(1, 'week');\n      }\n\n      // is first monday the 1st?\n      let toAdd = 1;\n      if (tmp.date() === 1) {\n        toAdd = 0;\n      }\n      tmp = tmp.minus(2, 'hours');\n      const thisOne = this.epoch;\n      //if the week technically hasn't started yet\n      if (tmp.epoch > thisOne) {\n        return 1\n      }\n      //speed it up, if we can\n      let i = 0;\n      let skipWeeks = this.month() * 4;\n      tmp.epoch += o.week * skipWeeks;\n      i += skipWeeks;\n      for (; i <= 52; i++) {\n        if (tmp.epoch > thisOne) {\n          return i + toAdd\n        }\n        tmp = tmp.add(1, 'week');\n      }\n      return 52\n    },\n    //either name or number\n    month: function (input, goFwd) {\n      if (input !== undefined) {\n        let s = this.clone();\n        s.epoch = month(s, input, goFwd);\n        return s\n      }\n      return this.d.getMonth()\n    },\n    //'january'\n    monthName: function (input, goFwd) {\n      if (input !== undefined) {\n        let s = this.clone();\n        s = s.month(input, goFwd);\n        return s\n      }\n      return long$1()[this.month()]\n    },\n\n    //q1, q2, q3, q4\n    quarter: function (num, goFwd) {\n      if (num !== undefined) {\n        if (typeof num === 'string') {\n          num = num.replace(/^q/i, '');\n          num = parseInt(num, 10);\n        }\n        if (quarters[num]) {\n          let s = this.clone();\n          let month = quarters[num][0];\n          s = s.month(month, goFwd);\n          s = s.date(1, goFwd);\n          s = s.startOf('day');\n          return s\n        }\n      }\n      let month = this.d.getMonth();\n      for (let i = 1; i < quarters.length; i++) {\n        if (month < quarters[i][0]) {\n          return i - 1\n        }\n      }\n      return 4\n    },\n\n    //spring, summer, winter, fall\n    season: function (input, goFwd) {\n      let hem = 'north';\n      if (this.hemisphere() === 'South') {\n        hem = 'south';\n      }\n      if (input !== undefined) {    // setter\n        let s = this.clone();\n        for (let i = 0; i < seasons$1[hem].length; i++) {\n          if (input === seasons$1[hem][i][0]) {\n            s = s.month(seasons$1[hem][i][1], goFwd);\n            s = s.date(1);\n            s = s.startOf('day');\n          }\n        }\n        return s\n      }\n      let month = this.d.getMonth();\n      for (let i = 0; i < seasons$1[hem].length - 1; i++) {\n        if (month >= seasons$1[hem][i][1] && month < seasons$1[hem][i + 1][1]) {\n          return seasons$1[hem][i][0]\n        }\n      }\n      return hem === 'north' ? 'winter' : 'summer'\n    },\n\n    //the year number\n    year: function (num) {\n      if (num !== undefined) {\n        let s = this.clone();\n        s.epoch = year(s, num);\n        return s\n      }\n      return this.d.getFullYear()\n    },\n\n    //bc/ad years\n    era: function (str) {\n      if (str !== undefined) {\n        let s = this.clone();\n        str = str.toLowerCase();\n        //TODO: there is no year-0AD i think. may have off-by-1 error here\n        let year$1 = s.d.getFullYear();\n        //make '1992' into 1992bc..\n        if (str === 'bc' && year$1 > 0) {\n          s.epoch = year(s, year$1 * -1);\n        }\n        //make '1992bc' into '1992'\n        if (str === 'ad' && year$1 < 0) {\n          s.epoch = year(s, year$1 * -1);\n        }\n        return s\n      }\n      if (this.d.getFullYear() < 0) {\n        return 'BC'\n      }\n      return 'AD'\n    },\n\n    // 2019 -> 2010\n    decade: function (input) {\n      if (input !== undefined) {\n        input = String(input);\n        input = input.replace(/([0-9])'?s$/, '$1'); //1950's\n        input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n        if (!input) {\n          console.warn('Spacetime: Invalid decade input');\n          return this\n        }\n        // assume 20th century?? for '70s'.\n        if (input.length === 2 && /[0-9][0-9]/.test(input)) {\n          input = '19' + input;\n        }\n        let year = Number(input);\n        if (isNaN(year)) {\n          return this\n        }\n        // round it down to the decade\n        year = Math.floor(year / 10) * 10;\n        return this.year(year) //.startOf('decade')\n      }\n      return this.startOf('decade').year()\n    },\n    // 1950 -> 19+1\n    century: function (input) {\n      if (input !== undefined) {\n        if (typeof input === 'string') {\n          input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n          input = input.replace(/([0-9]+) ?(b\\.?c\\.?|a\\.?d\\.?)/i, (a, b, c) => {\n            if (c.match(/b\\.?c\\.?/i)) {\n              b = '-' + b;\n            }\n            return b\n          });\n          input = input.replace(/c$/, ''); //20thC\n        }\n        let year = Number(input);\n        if (isNaN(input)) {\n          console.warn('Spacetime: Invalid century input');\n          return this\n        }\n        // there is no century 0\n        if (year === 0) {\n          year = 1;\n        }\n        if (year >= 0) {\n          year = (year - 1) * 100;\n        } else {\n          year = (year + 1) * 100;\n        }\n        return this.year(year)\n      }\n      // century getter\n      let num = this.startOf('century').year();\n      num = Math.floor(num / 100);\n      if (num < 0) {\n        return num - 1\n      }\n      return num + 1\n    },\n    // 2019 -> 2+1\n    millenium: function (input) {\n      if (input !== undefined) {\n        if (typeof input === 'string') {\n          input = input.replace(/([0-9])(th|rd|st|nd)/, '$1'); //fix ordinals\n          input = Number(input);\n          if (isNaN(input)) {\n            console.warn('Spacetime: Invalid millenium input');\n            return this\n          }\n        }\n        if (input > 0) {\n          input -= 1;\n        }\n        let year = input * 1000;\n        // there is no year 0\n        if (year === 0) {\n          year = 1;\n        }\n        return this.year(year)\n      }\n      // get the current millenium\n      let num = Math.floor(this.year() / 1000);\n      if (num >= 0) {\n        num += 1;\n      }\n      return num\n    }\n  };\n\n  const methods = Object.assign({}, methods$3, methods$2, methods$1);\n\n  //aliases\n  methods.milliseconds = methods.millisecond;\n  methods.seconds = methods.second;\n  methods.minutes = methods.minute;\n  methods.hours = methods.hour;\n  methods.hour24 = methods.hour;\n  methods.h12 = methods.hour12;\n  methods.h24 = methods.hour24;\n  methods.days = methods.day;\n\n  const addMethods$4 = Space => {\n    //hook the methods into prototype\n    Object.keys(methods).forEach(k => {\n      Space.prototype[k] = methods[k];\n    });\n  };\n\n  const getMonthLength = function (month, year) {\n    if (month === 1 && isLeapYear(year)) {\n      return 29\n    }\n    return monthLengths[month]\n  };\n\n  //month is the one thing we 'model/compute'\n  //- because ms-shifting can be off by enough\n  const rollMonth = (want, old) => {\n    //increment year\n    if (want.month > 0) {\n      let years = parseInt(want.month / 12, 10);\n      want.year = old.year() + years;\n      want.month = want.month % 12;\n    } else if (want.month < 0) {\n      let m = Math.abs(want.month);\n      let years = parseInt(m / 12, 10);\n      if (m % 12 !== 0) {\n        years += 1;\n      }\n      want.year = old.year() - years;\n      //ignore extras\n      want.month = want.month % 12;\n      want.month = want.month + 12;\n      if (want.month === 12) {\n        want.month = 0;\n      }\n    }\n    return want\n  };\n\n  // briefly support day=-2 (this does not need to be perfect.)\n  const rollDaysDown = (want, old, sum) => {\n    want.year = old.year();\n    want.month = old.month();\n    let date = old.date();\n    want.date = date - Math.abs(sum);\n    while (want.date < 1) {\n      want.month -= 1;\n      if (want.month < 0) {\n        want.month = 11;\n        want.year -= 1;\n      }\n      let max = getMonthLength(want.month, want.year);\n      want.date += max;\n    }\n    return want\n  };\n\n  // briefly support day=33 (this does not need to be perfect.)\n  const rollDaysUp = (want, old, sum) => {\n    let year = old.year();\n    let month = old.month();\n    let max = getMonthLength(month, year);\n    while (sum > max) {\n      sum -= max;\n      month += 1;\n      if (month >= 12) {\n        month -= 12;\n        year += 1;\n      }\n      max = getMonthLength(month, year);\n    }\n    want.month = month;\n    want.date = sum;\n    return want\n  };\n\n  const months = rollMonth;\n  const days = rollDaysUp;\n  const daysBack = rollDaysDown;\n\n  // this logic is a bit of a mess,\n  // but briefly:\n  // millisecond-math, and some post-processing covers most-things\n  // we 'model' the calendar here only a little bit\n  // and that usually works-out...\n\n  const order = ['millisecond', 'second', 'minute', 'hour', 'date', 'month'];\n  let keep = {\n    second: order.slice(0, 1),\n    minute: order.slice(0, 2),\n    quarterhour: order.slice(0, 2),\n    hour: order.slice(0, 3),\n    date: order.slice(0, 4),\n    month: order.slice(0, 4),\n    quarter: order.slice(0, 4),\n    season: order.slice(0, 4),\n    year: order,\n    decade: order,\n    century: order\n  };\n  keep.week = keep.hour;\n  keep.season = keep.date;\n  keep.quarter = keep.date;\n\n  // Units need to be dst adjuested\n  const dstAwareUnits = {\n    year: true,\n    quarter: true,\n    season: true,\n    month: true,\n    week: true,\n    date: true\n  };\n\n  const keepDate = {\n    month: true,\n    quarter: true,\n    season: true,\n    year: true\n  };\n\n  const addMethods$3 = (SpaceTime) => {\n    SpaceTime.prototype.add = function (num, unit) {\n      let s = this.clone();\n\n      if (!unit || num === 0) {\n        return s //don't bother\n      }\n      let old = this.clone();\n      unit = normalize$3(unit);\n      if (unit === 'millisecond') {\n        s.epoch += num;\n        return s\n      }\n      // support 'fortnight' alias\n      if (unit === 'fortnight') {\n        num *= 2;\n        unit = 'week';\n      }\n      //move forward by the estimated milliseconds (rough)\n      if (o[unit]) {\n        s.epoch += o[unit] * num;\n      } else if (unit === 'week' || unit === 'weekend') {\n        s.epoch += o.day * (num * 7);\n      } else if (unit === 'quarter' || unit === 'season') {\n        s.epoch += o.month * (num * 3);\n      } else if (unit === 'quarterhour') {\n        s.epoch += o.minute * 15 * num;\n      }\n      //now ensure our milliseconds/etc are in-line\n      let want = {};\n      if (keep[unit]) {\n        keep[unit].forEach((u) => {\n          want[u] = old[u]();\n        });\n      }\n\n      if (dstAwareUnits[unit]) {\n        const diff = old.timezone().current.offset - s.timezone().current.offset;\n        s.epoch += diff * 3600 * 1000;\n      }\n\n      //ensure month/year has ticked-over\n      if (unit === 'month') {\n        want.month = old.month() + num;\n        //month is the one unit we 'model' directly\n        want = months(want, old);\n      }\n      //support coercing a week, too\n      if (unit === 'week') {\n        let sum = old.date() + (num * 7);\n        if (sum <= 28 && sum > 1) {\n          want.date = sum;\n        }\n      }\n      if (unit === 'weekend' && s.dayName() !== 'saturday') {\n        s = s.day('saturday', true); //ensure it's saturday\n      }\n      //support 25-hour day-changes on dst-changes\n      else if (unit === 'date') {\n        if (num < 0) {\n          want = daysBack(want, old, num);\n        } else {\n          //specify a naive date number, if it's easy to do...\n          let sum = old.date() + num;\n          // ok, model this one too\n          want = days(want, old, sum);\n        }\n        //manually punt it if we haven't moved at all..\n        if (num !== 0 && old.isSame(s, 'day')) {\n          want.date = old.date() + num;\n        }\n      }\n      // ensure a quarter is 3 months over\n      else if (unit === 'quarter') {\n        want.month = old.month() + (num * 3);\n        want.year = old.year();\n        // handle rollover\n        if (want.month < 0) {\n          let years = Math.floor(want.month / 12);\n          let remainder = want.month + (Math.abs(years) * 12);\n          want.month = remainder;\n          want.year += years;\n        } else if (want.month >= 12) {\n          let years = Math.floor(want.month / 12);\n          want.month = want.month % 12;\n          want.year += years;\n        }\n        want.date = old.date();\n      }\n      //ensure year has changed (leap-years)\n      else if (unit === 'year') {\n        let wantYear = old.year() + num;\n        let haveYear = s.year();\n        if (haveYear < wantYear) {\n          let toAdd = Math.floor(num / 4) || 1; //approx num of leap-days\n          s.epoch += Math.abs(o.day * toAdd);\n        } else if (haveYear > wantYear) {\n          let toAdd = Math.floor(num / 4) || 1; //approx num of leap-days\n          s.epoch += o.day * toAdd;\n        }\n      }\n      //these are easier\n      else if (unit === 'decade') {\n        want.year = s.year() + 10;\n      } else if (unit === 'century') {\n        want.year = s.year() + 100;\n      }\n      //keep current date, unless the month doesn't have it.\n      if (keepDate[unit]) {\n        let max = monthLengths[want.month];\n        want.date = old.date();\n        if (want.date > max) {\n          want.date = max;\n        }\n      }\n      if (Object.keys(want).length > 1) {\n        walkTo(s, want);\n      }\n      return s\n    };\n\n    //subtract is only add *-1\n    SpaceTime.prototype.subtract = function (num, unit) {\n      let s = this.clone();\n      return s.add(num * -1, unit)\n    };\n    //add aliases\n    SpaceTime.prototype.minus = SpaceTime.prototype.subtract;\n    SpaceTime.prototype.plus = SpaceTime.prototype.add;\n  };\n\n  //make a string, for easy comparison between dates\n  const print = {\n    millisecond: (s) => {\n      return s.epoch\n    },\n    second: (s) => {\n      return [s.year(), s.month(), s.date(), s.hour(), s.minute(), s.second()].join('-')\n    },\n    minute: (s) => {\n      return [s.year(), s.month(), s.date(), s.hour(), s.minute()].join('-')\n    },\n    hour: (s) => {\n      return [s.year(), s.month(), s.date(), s.hour()].join('-')\n    },\n    day: (s) => {\n      return [s.year(), s.month(), s.date()].join('-')\n    },\n    week: (s) => {\n      return [s.year(), s.week()].join('-')\n    },\n    month: (s) => {\n      return [s.year(), s.month()].join('-')\n    },\n    quarter: (s) => {\n      return [s.year(), s.quarter()].join('-')\n    },\n    year: (s) => {\n      return s.year()\n    }\n  };\n  print.date = print.day;\n\n  const addMethods$2 = (SpaceTime) => {\n    SpaceTime.prototype.isSame = function (b, unit, tzAware = true) {\n      let a = this;\n      if (!unit) {\n        return null\n      }\n      // support swapped params\n      if (typeof b === 'string' && typeof unit === 'object') {\n        let tmp = b;\n        b = unit;\n        unit = tmp;\n      }\n      if (typeof b === 'string' || typeof b === 'number') {\n        b = new SpaceTime(b, this.timezone.name);\n      }\n      //support 'seconds' aswell as 'second'\n      unit = unit.replace(/s$/, '');\n\n      // make them the same timezone for proper comparison\n      if (tzAware === true && a.tz !== b.tz) {\n        b = b.clone();\n        b.tz = a.tz;\n      }\n      if (print[unit]) {\n        return print[unit](a) === print[unit](b)\n      }\n      return null\n    };\n  };\n\n  const addMethods$1 = SpaceTime => {\n    const methods = {\n      isAfter: function (d) {\n        d = beADate(d, this);\n        let epoch = getEpoch(d);\n        if (epoch === null) {\n          return null\n        }\n        return this.epoch > epoch\n      },\n      isBefore: function (d) {\n        d = beADate(d, this);\n        let epoch = getEpoch(d);\n        if (epoch === null) {\n          return null\n        }\n        return this.epoch < epoch\n      },\n      isEqual: function (d) {\n        d = beADate(d, this);\n        let epoch = getEpoch(d);\n        if (epoch === null) {\n          return null\n        }\n        return this.epoch === epoch\n      },\n      isBetween: function (start, end, isInclusive = false) {\n        start = beADate(start, this);\n        end = beADate(end, this);\n        let startEpoch = getEpoch(start);\n        if (startEpoch === null) {\n          return null\n        }\n        let endEpoch = getEpoch(end);\n        if (endEpoch === null) {\n          return null\n        }\n        if (isInclusive) {\n          return this.isBetween(start, end) || this.isEqual(start) || this.isEqual(end);\n        }\n        return startEpoch < this.epoch && this.epoch < endEpoch\n      }\n    };\n\n    //hook them into proto\n    Object.keys(methods).forEach(k => {\n      SpaceTime.prototype[k] = methods[k];\n    });\n  };\n\n  const addMethods = SpaceTime => {\n    const methods = {\n      i18n: function (data) {\n        //change the day names\n        if (isObject(data.days)) {\n          set$4(data.days);\n        }\n        //change the month names\n        if (isObject(data.months)) {\n          set$5(data.months);\n        }\n\n        //change the display style of the month / day names\n        if (isBoolean(data.useTitleCase)) {\n          set$3(data.useTitleCase);\n        }\n\n        //change am and pm strings\n        if (isObject(data.ampm)) {\n          set(data.ampm);\n        }\n\n        //change distance strings\n        if(isObject(data.distance)){\n          set$1(data.distance);\n        }\n\n        //change units strings\n        if(isObject(data.units)){\n          set$2(data.units);\n        }\n\n        return this\n      }\n    };\n\n    //hook them into proto\n    Object.keys(methods).forEach(k => {\n      SpaceTime.prototype[k] = methods[k];\n    });\n  };\n\n  let timezones$1 = all;\n  // fake timezone-support, for fakers (es5 class)\n  const SpaceTime = function (input, tz, options = {}) {\n    // the holy moment\n    this.epoch = null;\n    // the shift for the given timezone\n    this.tz = lookupTz(tz, timezones$1);\n    // whether to output warnings to console\n    this.silent = typeof options.silent !== 'undefined' ? options.silent : true;\n    // favour british interpretation of 02/02/2018, etc\n    this.british = options.dmy || options.british;\n\n    // does the week start on sunday, or monday:\n    this._weekStart = 1; // default to monday\n    if (options.weekStart !== undefined) {\n      this._weekStart = options.weekStart;\n    }\n    // the reference today date object, (for testing)\n    this._today = {};\n    if (options.today !== undefined) {\n      this._today = options.today;\n    }\n    // dunno if this is a good idea, or not\n    // Object.defineProperty(this, 'parsers', {\n    //   enumerable: false,\n    //   writable: true,\n    //   value: parsers\n    // })\n    // add getter/setters\n    Object.defineProperty(this, 'd', {\n      // return a js date object\n      get: function () {\n        let offset = quickOffset(this);\n        // every computer is somewhere- get this computer's built-in offset\n        let bias = new Date(this.epoch).getTimezoneOffset() || 0;\n        // movement\n        let shift = bias + (offset * 60); //in minutes\n        shift = shift * 60 * 1000; //in ms\n        // remove this computer's offset\n        let epoch = this.epoch + shift;\n        let d = new Date(epoch);\n        return d\n      }\n    });\n    // add this data on the object, to allow adding new timezones\n    Object.defineProperty(this, 'timezones', {\n      get: () => timezones$1,\n      set: (obj) => {\n        timezones$1 = obj;\n        return obj\n      }\n    });\n    // parse the various formats\n    let tmp = parseInput(this, input);\n    this.epoch = tmp.epoch;\n    if (tmp.tz) {\n      this.tz = tmp.tz;\n    }\n  };\n\n  // (add instance methods to prototype)\n  Object.keys(methods$4).forEach((k) => {\n    SpaceTime.prototype[k] = methods$4[k];\n  });\n\n  // ¯\\_(ツ)_/¯\n  SpaceTime.prototype.clone = function () {\n    return new SpaceTime(this.epoch, this.tz, {\n      silent: this.silent,\n      weekStart: this._weekStart,\n      today: this._today,\n      parsers: this.parsers\n    })\n  };\n\n  /**\n   * @deprecated use toNativeDate()\n   * @returns native date object at the same epoch\n   */\n  SpaceTime.prototype.toLocalDate = function () {\n    return this.toNativeDate()\n  };\n\n  /**\n   * @returns native date object at the same epoch\n   */\n  SpaceTime.prototype.toNativeDate = function () {\n    return new Date(this.epoch)\n  };\n\n  // append more methods\n  addMethods$4(SpaceTime);\n  addMethods$3(SpaceTime);\n  addMethods$2(SpaceTime);\n  addMethods$1(SpaceTime);\n  addMethods(SpaceTime);\n\n  // const timezones = require('../data');\n\n  const whereIts = (a, b) => {\n    let start = new SpaceTime(null);\n    let end = new SpaceTime(null);\n    start = start.time(a);\n    //if b is undefined, use as 'within one hour'\n    if (b) {\n      end = end.time(b);\n    } else {\n      end = start.add(59, 'minutes');\n    }\n\n    let startHour = start.hour();\n    let endHour = end.hour();\n    let tzs = Object.keys(start.timezones).filter((tz) => {\n      if (tz.indexOf('/') === -1) {\n        return false\n      }\n      let m = new SpaceTime(null, tz);\n      let hour = m.hour();\n      //do 'calendar-compare' not real-time-compare\n      if (hour >= startHour && hour <= endHour) {\n        //test minutes too, if applicable\n        if (hour === startHour && m.minute() < start.minute()) {\n          return false\n        }\n        if (hour === endHour && m.minute() > end.minute()) {\n          return false\n        }\n        return true\n      }\n      return false\n    });\n    return tzs\n  };\n\n  var version$1 = '7.7.0';\n\n  const main = (input, tz, options) => new SpaceTime(input, tz, options);\n\n  // set all properties of a given 'today' object\n  const setToday = function (s) {\n    let today = s._today || {};\n    Object.keys(today).forEach((k) => {\n      s = s[k](today[k]);\n    });\n    return s\n  };\n\n  //some helper functions on the main method\n  main.now = (tz, options) => {\n    let s = new SpaceTime(new Date().getTime(), tz, options);\n    s = setToday(s);\n    return s\n  };\n  main.today = (tz, options) => {\n    let s = new SpaceTime(new Date().getTime(), tz, options);\n    s = setToday(s);\n    return s.startOf('day')\n  };\n  main.tomorrow = (tz, options) => {\n    let s = new SpaceTime(new Date().getTime(), tz, options);\n    s = setToday(s);\n    return s.add(1, 'day').startOf('day')\n  };\n  main.yesterday = (tz, options) => {\n    let s = new SpaceTime(new Date().getTime(), tz, options);\n    s = setToday(s);\n    return s.subtract(1, 'day').startOf('day')\n  };\n  main.extend = function (obj = {}) {\n    Object.keys(obj).forEach((k) => {\n      SpaceTime.prototype[k] = obj[k];\n    });\n    return this\n  };\n  main.timezones = function () {\n    let s = new SpaceTime();\n    return s.timezones\n  };\n  main.max = function (tz, options) {\n    let s = new SpaceTime(null, tz, options);\n    s.epoch = 8640000000000000;\n    return s\n  };\n  main.min = function (tz, options) {\n    let s = new SpaceTime(null, tz, options);\n    s.epoch = -8640000000000000;\n    return s\n  };\n\n  //find tz by time\n  main.whereIts = whereIts;\n  main.version = version$1;\n\n  //aliases:\n  main.plugin = main.extend;\n\n  // these should be added to model\n  const hardCoded = {\n    daybreak: '7:00am', //ergh\n    breakfast: '8:00am',\n    morning: '9:00am',\n    noon: '12:00pm',\n    midday: '12:00pm',\n    afternoon: '2:00pm',\n    lunchtime: '12:00pm',\n    evening: '6:00pm',\n    dinnertime: '6:00pm',\n    night: '8:00pm',\n    eod: '10:00pm',\n    midnight: '12:00am',\n    am: '9:00am', //tomorow am\n    pm: '5:00pm',\n    'early day': '8:00am',\n    'late at night': '11:00pm'\n  };\n  const minMap = {\n    quarter: 15,\n    half: 30,\n  };\n\n  // choose ambiguous ampm\n  const ampmChooser = function (s) {\n    let early = s.time('6:00am');\n    if (s.isBefore(early)) {\n      return s.ampm('pm')\n    }\n    return s\n  };\n\n  // parse 'twenty past 2'\n  const halfPast = function (m, s) {\n    let hour = m.match('#Cardinal$');\n    let punt = m.not(hour).match('(half|quarter|25|20|15|10|5)');\n    // get the mins, and the hour\n    hour = hour.text('reduced');\n    let mins = punt.text('reduced');\n    // support 'quarter'\n    if (minMap.hasOwnProperty(mins)) {\n      mins = minMap[mins];\n    }\n    let behind = m.has('to');\n    // apply it\n    s = s.hour(hour);\n    s = s.startOf('hour');\n    // assume 'half past 5' is 5pm\n    if (hour < 6) {\n      s = s.ampm('pm');\n    }\n    if (behind) {\n      s = s.subtract(mins, 'minutes');\n    } else {\n      s = s.add(mins, 'minutes');\n    }\n    return s\n  };\n\n  const parseTime = function (doc, context) {\n    let time = doc.match('(at|by|for|before|this|after)? #Time+');\n    // get the main part of the time\n    time = time.not('^(at|by|for|before|this|after)');\n    time = time.not('sharp');\n    time = time.not('on the dot');\n\n    let s = main.now(context.timezone);\n    let now = s.clone();\n    // check for known-times (like 'today')\n    let timeStr = time.not('in? the').text('reduced');\n    timeStr = timeStr.replace(/^@/, '');//@4pm\n    if (hardCoded.hasOwnProperty(timeStr)) {\n      return { result: hardCoded[timeStr], m: time }\n    }\n    // '5 oclock'\n    let m = time.match('^#Cardinal oclock (am|pm)?');\n    if (m.found) {\n      s = s.hour(m.text('reduced'));\n      s = s.startOf('hour');\n      if (s.isValid() && !s.isEqual(now)) {\n        let ampm = m.match('(am|pm)');\n        if (ampm.found) {\n          s = s.ampm(ampm.text('reduced'));\n        } else {\n          s = ampmChooser(s);\n        }\n        return { result: s.time(), m }\n      }\n    }\n\n    // 'quarter to two'\n    m = time.match('(half|quarter|25|20|15|10|5) (past|after|to) #Cardinal');\n    if (m.found) {\n      s = halfPast(m, s);\n      if (s.isValid() && !s.isEqual(now)) {\n        // choose ambiguous ampm\n        s = ampmChooser(s);\n        return { result: s.time(), m }\n      }\n    }\n    // 'twenty past'\n    m = time.match('[<min>(half|quarter|25|20|15|10|5)] (past|after)');\n    if (m.found) {\n      let min = m.groups('min').text('reduced');\n      let d = main(context.today);\n      // support 'quarter', etc.\n      if (minMap.hasOwnProperty(min)) {\n        min = minMap[min];\n      }\n      d = d.next('hour').startOf('hour').minute(min);\n      if (d.isValid() && !d.isEqual(now)) {\n        return { result: d.time(), m }\n      }\n    }\n    // 'ten to'\n    m = time.match('[<min>(half|quarter|25|20|15|10|5)] to');\n    if (m.found) {\n      let min = m.groups('min').text('reduced');\n      let d = main(context.today);\n      // support 'quarter', etc.\n      if (minMap.hasOwnProperty(min)) {\n        min = minMap[min];\n      }\n      d = d.next('hour').startOf('hour').minus(min, 'minutes');\n      if (d.isValid() && !d.isEqual(now)) {\n        return { result: d.time(), m }\n      }\n    }\n    // '4 in the evening'\n    m = time.match('[<time>#Time] (in|at) the? [<desc>(morning|evening|night|nighttime)]');\n    if (m.found) {\n      let str = m.groups('time').text('normal');\n      if (/^[0-9]{1,2}$/.test(str)) {\n        s = s.hour(str); //3 in the morning\n        s = s.startOf('hour');\n      } else {\n        s = s.time(str); // 3:30 in the morning\n      }\n      if (s.isValid() && !s.isEqual(now)) {\n        let desc = m.groups('desc').text('reduced');\n        if (desc === 'evening' || desc === 'night') {\n          s = s.ampm('pm');\n        }\n        return { result: s.time(), m }\n      }\n    }\n\n    // 'this morning at 4'\n    m = time.match('this? [<desc>(morning|evening|tonight)] at [<time>(#Cardinal|#Time)]');\n    if (m.found) {\n      let g = m.groups();\n      let str = g.time.text('reduced');\n      if (/^[0-9]{1,2}$/.test(str)) {\n        s = s.hour(str); //3\n        s = s.startOf('hour');\n      } else {\n        s = s.time(str); // 3:30\n      }\n      if (s.isValid() && !s.isEqual(now)) {\n        let desc = g.desc.text('reduced');\n        if (desc === 'morning') {\n          s = s.ampm('am');\n        }\n        if (desc === 'evening' || desc === 'tonight') {\n          s = s.ampm('pm');\n        }\n        return { result: s.time(), m }\n      }\n    }\n\n    // 'at 4' -> '4'\n    m = time.match('^#Cardinal$');\n    if (m.found) {\n      let str = m.text('reduced');\n      s = s.hour(str);\n      s = s.startOf('hour');\n      if (s.isValid() && !s.isEqual(now)) {\n        // choose ambiguous ampm\n        if (/(am|pm)/i.test(str) === false) {\n          s = ampmChooser(s);\n        }\n        return { result: s.time(), m }\n      }\n    }\n\n    // parse random a time like '4:54pm'\n    let str = time.text('reduced');\n    s = s.time(str);\n    if (s.isValid() && !s.isEqual(now)) {\n      // choose ambiguous ampm\n      if (/(am|pm)/i.test(str) === false) {\n        s = ampmChooser(s);\n      }\n      return { result: s.time(), m: time }\n    }\n    // should we fallback to a dayStart default?\n    if (context.dayStart) {\n      return { result: context.dayStart, m: doc.none() }\n    }\n    return { result: null, m: doc.none() }\n  };\n\n  // interpret 'this halloween' or 'next june'\n  const parseRelative = function (doc) {\n    // avoid parsing 'day after next'\n    if (doc.has('(next|last|this)$')) {\n      return { result: null, m: doc.none() }\n    }\n    // next monday\n    let m = doc.match('^this? (next|upcoming|coming)');\n    if (m.found) {\n      return { result: 'next', m }\n    }\n    // 'this past monday' is not-always 'last monday'\n    m = doc.match('^this? (past)');\n    if (m.found) {\n      return { result: 'this-past', m }\n    }\n    // last monday\n    m = doc.match('^this? (last|previous)');\n    if (m.found) {\n      return { result: 'last', m }\n    }\n    // this monday\n    m = doc.match('^(this|current)');\n    if (m.found) {\n      return { result: 'this', m }\n    }\n    return { result: null, m: doc.none() }\n  };\n\n  // 'start of october', 'middle of june 1st'\n  const parseSection = function (doc) {\n    // start of 2019\n    let m = doc.match('[(start|beginning) of] .', 0);\n    if (m.found) {\n      return { result: 'start', m }\n    }\n    // end of 2019\n    m = doc.match('[end of] .', 0);\n    if (m.found) {\n      return { result: 'end', m }\n    }\n    // middle of 2019\n    m = doc.match('[(middle|midpoint|center) of] .', 0);\n    if (m.found) {\n      return { result: 'middle', m }\n    }\n    return { result: null, m }\n  };\n\n  // some opinionated-but-common-sense timezone abbreviations\n  // these timezone abbreviations are wholly made-up by me, Spencer Kelly, with no expertise in geography\n  // generated humbly from https://github.com/spencermountain/spacetime-informal\n\n  const america$1 = 'America/';\n  const asia$1 = 'Asia/';\n  const europe$1 = 'Europe/';\n  const africa$1 = 'Africa/';\n  const aus$1 = 'Australia/';\n  const pac$1 = 'Pacific/';\n\n  const informal$1 = {\n    //europe\n    'british summer time': europe$1 + 'London',\n    bst: europe$1 + 'London',\n    'british time': europe$1 + 'London',\n    'britain time': europe$1 + 'London',\n    'irish summer time': europe$1 + 'Dublin',\n    'irish time': europe$1 + 'Dublin',\n    ireland: europe$1 + 'Dublin',\n    'central european time': europe$1 + 'Berlin',\n    cet: europe$1 + 'Berlin',\n    'central european summer time': europe$1 + 'Berlin',\n    cest: europe$1 + 'Berlin',\n    'central europe': europe$1 + 'Berlin',\n    'eastern european time': europe$1 + 'Riga',\n    eet: europe$1 + 'Riga',\n    'eastern european summer time': europe$1 + 'Riga',\n    eest: europe$1 + 'Riga',\n    'eastern europe time': europe$1 + 'Riga',\n    'western european time': europe$1 + 'Lisbon',\n    // wet: europe+'Lisbon',\n    'western european summer time': europe$1 + 'Lisbon',\n    // west: europe+'Lisbon',\n    'western europe': europe$1 + 'Lisbon',\n    'turkey standard time': europe$1 + 'Istanbul',\n    trt: europe$1 + 'Istanbul',\n    'turkish time': europe$1 + 'Istanbul',\n\n    //africa\n    etc: africa$1 + 'Freetown',\n    utc: africa$1 + 'Freetown',\n    'greenwich standard time': africa$1 + 'Freetown',\n    gmt: africa$1 + 'Freetown',\n    'east africa time': africa$1 + 'Nairobi',\n    // eat: africa+'Nairobi',\n    'east african time': africa$1 + 'Nairobi',\n    'eastern africa time': africa$1 + 'Nairobi',\n    'central africa time': africa$1 + 'Khartoum',\n    // cat: africa+'Khartoum',\n    'central african time': africa$1 + 'Khartoum',\n    'south africa standard time': africa$1 + 'Johannesburg',\n    sast: africa$1 + 'Johannesburg',\n    'southern africa': africa$1 + 'Johannesburg',\n    'south african': africa$1 + 'Johannesburg',\n    'west africa standard time': africa$1 + 'Lagos',\n    // wat: africa+'Lagos',\n    'western africa time': africa$1 + 'Lagos',\n    'west african time': africa$1 + 'Lagos',\n\n    'australian central standard time': aus$1 + 'Adelaide',\n    acst: aus$1 + 'Adelaide',\n    'australian central daylight time': aus$1 + 'Adelaide',\n    acdt: aus$1 + 'Adelaide',\n    'australia central': aus$1 + 'Adelaide',\n    'australian eastern standard time': aus$1 + 'Brisbane',\n    aest: aus$1 + 'Brisbane',\n    'australian eastern daylight time': aus$1 + 'Brisbane',\n    aedt: aus$1 + 'Brisbane',\n    'australia east': aus$1 + 'Brisbane',\n    'australian western standard time': aus$1 + 'Perth',\n    awst: aus$1 + 'Perth',\n    'australian western daylight time': aus$1 + 'Perth',\n    awdt: aus$1 + 'Perth',\n    'australia west': aus$1 + 'Perth',\n    'australian central western standard time': aus$1 + 'Eucla',\n    acwst: aus$1 + 'Eucla',\n    'australia central west': aus$1 + 'Eucla',\n    'lord howe standard time': aus$1 + 'Lord_Howe',\n    lhst: aus$1 + 'Lord_Howe',\n    'lord howe daylight time': aus$1 + 'Lord_Howe',\n    lhdt: aus$1 + 'Lord_Howe',\n    'russian standard time': europe$1 + 'Moscow',\n    msk: europe$1 + 'Moscow',\n    russian: europe$1 + 'Moscow',\n\n    //america\n    'central standard time': america$1 + 'Chicago',\n    'central time': america$1 + 'Chicago',\n    cst: america$1 + 'Havana',\n    'central daylight time': america$1 + 'Chicago',\n    cdt: america$1 + 'Havana',\n    'mountain standard time': america$1 + 'Denver',\n    'mountain time': america$1 + 'Denver',\n    mst: america$1 + 'Denver',\n    'mountain daylight time': america$1 + 'Denver',\n    mdt: america$1 + 'Denver',\n    'atlantic standard time': america$1 + 'Halifax',\n    'atlantic time': america$1 + 'Halifax',\n    ast: asia$1 + 'Baghdad',\n    'atlantic daylight time': america$1 + 'Halifax',\n    adt: america$1 + 'Halifax',\n    'eastern standard time': america$1 + 'New_York',\n    'eastern': america$1 + 'New_York',\n    'eastern time': america$1 + 'New_York',\n    est: america$1 + 'New_York',\n    'eastern daylight time': america$1 + 'New_York',\n    edt: america$1 + 'New_York',\n    'pacific time': america$1 + 'Los_Angeles',\n    'pacific standard time': america$1 + 'Los_Angeles',\n    pst: america$1 + 'Los_Angeles',\n    'pacific daylight time': america$1 + 'Los_Angeles',\n    pdt: america$1 + 'Los_Angeles',\n    'alaskan standard time': america$1 + 'Anchorage',\n    'alaskan time': america$1 + 'Anchorage',\n    ahst: america$1 + 'Anchorage',\n    'alaskan daylight time': america$1 + 'Anchorage',\n    ahdt: america$1 + 'Anchorage',\n    'hawaiian standard time': pac$1 + 'Honolulu',\n    'hawaiian time': pac$1 + 'Honolulu',\n    hst: pac$1 + 'Honolulu',\n    'aleutian time': pac$1 + 'Honolulu',\n    'hawaii time': pac$1 + 'Honolulu',\n    'newfoundland standard time': america$1 + 'St_Johns',\n    'newfoundland time': america$1 + 'St_Johns',\n    nst: america$1 + 'St_Johns',\n    'newfoundland daylight time': america$1 + 'St_Johns',\n    ndt: america$1 + 'St_Johns',\n    'brazil time': america$1 + 'Sao_Paulo',\n    brt: america$1 + 'Sao_Paulo',\n    'brasília': america$1 + 'Sao_Paulo',\n    brasilia: america$1 + 'Sao_Paulo',\n    'brazilian time': america$1 + 'Sao_Paulo',\n    'argentina time': america$1 + 'Buenos_Aires',\n    // art: a+'Buenos_Aires',\n    'argentinian time': america$1 + 'Buenos_Aires',\n    'amazon time': america$1 + 'Manaus',\n    amt: america$1 + 'Manaus',\n    'amazonian time': america$1 + 'Manaus',\n    'easter island standard time': 'Chile/Easterisland',\n    east: 'Chile/Easterisland',\n    'easter island summer time': 'Chile/Easterisland',\n    easst: 'Chile/Easterisland',\n    'venezuelan standard time': america$1 + 'Caracas',\n    'venezuelan time': america$1 + 'Caracas',\n    vet: america$1 + 'Caracas',\n    'venezuela time': america$1 + 'Caracas',\n    'paraguay time': america$1 + 'Asuncion',\n    pyt: america$1 + 'Asuncion',\n    'paraguay summer time': america$1 + 'Asuncion',\n    pyst: america$1 + 'Asuncion',\n    'cuba standard time': america$1 + 'Havana',\n    'cuba time': america$1 + 'Havana',\n    'cuba daylight time': america$1 + 'Havana',\n    'cuban time': america$1 + 'Havana',\n    'bolivia time': america$1 + 'La_Paz',\n    // bot: a+'La_Paz',\n    'bolivian time': america$1 + 'La_Paz',\n    'colombia time': america$1 + 'Bogota',\n    cot: america$1 + 'Bogota',\n    'colombian time': america$1 + 'Bogota',\n    'acre time': america$1 + 'Eirunepe',\n    // act: a+'Eirunepe',\n    'peru time': america$1 + 'Lima',\n    // pet: a+'Lima',\n    'chile standard time': america$1 + 'Punta_Arenas',\n    'chile time': america$1 + 'Punta_Arenas',\n    clst: america$1 + 'Punta_Arenas',\n    'chile summer time': america$1 + 'Punta_Arenas',\n    cldt: america$1 + 'Punta_Arenas',\n    'uruguay time': america$1 + 'Montevideo',\n    uyt: america$1 + 'Montevideo',\n\n    //asia\n    ist: asia$1 + 'Jerusalem',\n    'arabic standard time': asia$1 + 'Baghdad',\n    'arabic time': asia$1 + 'Baghdad',\n    'arab time': asia$1 + 'Baghdad',\n    'iran standard time': asia$1 + 'Tehran',\n    'iran time': asia$1 + 'Tehran',\n    irst: asia$1 + 'Tehran',\n    'iran daylight time': asia$1 + 'Tehran',\n    irdt: asia$1 + 'Tehran',\n    iranian: asia$1 + 'Tehran',\n    'pakistan standard time': asia$1 + 'Karachi',\n    'pakistan time': asia$1 + 'Karachi',\n    pkt: asia$1 + 'Karachi',\n    'india standard time': asia$1 + 'Kolkata',\n    'indian time': asia$1 + 'Kolkata',\n    'indochina time': asia$1 + 'Bangkok',\n    ict: asia$1 + 'Bangkok',\n    'south east asia': asia$1 + 'Bangkok',\n    'china standard time': asia$1 + 'Shanghai',\n    ct: asia$1 + 'Shanghai',\n    'chinese time': asia$1 + 'Shanghai',\n    'alma-ata time': asia$1 + 'Almaty',\n    almt: asia$1 + 'Almaty',\n    'oral time': asia$1 + 'Oral',\n    'orat time': asia$1 + 'Oral',\n    'yakutsk time': asia$1 + 'Yakutsk',\n    yakt: asia$1 + 'Yakutsk',\n    'gulf standard time': asia$1 + 'Dubai',\n    'gulf time': asia$1 + 'Dubai',\n    gst: asia$1 + 'Dubai',\n    uae: asia$1 + 'Dubai',\n    'hong kong time': asia$1 + 'Hong_Kong',\n    hkt: asia$1 + 'Hong_Kong',\n    'western indonesian time': asia$1 + 'Jakarta',\n    wib: asia$1 + 'Jakarta',\n    'indonesia time': asia$1 + 'Jakarta',\n    'central indonesian time': asia$1 + 'Makassar',\n    wita: asia$1 + 'Makassar',\n    'israel daylight time': asia$1 + 'Jerusalem',\n    idt: asia$1 + 'Jerusalem',\n    'israel standard time': asia$1 + 'Jerusalem',\n    'israel time': asia$1 + 'Jerusalem',\n    israeli: asia$1 + 'Jerusalem',\n    'krasnoyarsk time': asia$1 + 'Krasnoyarsk',\n    krat: asia$1 + 'Krasnoyarsk',\n    'malaysia time': asia$1 + 'Kuala_Lumpur',\n    myt: asia$1 + 'Kuala_Lumpur',\n    'singapore time': asia$1 + 'Singapore',\n    sgt: asia$1 + 'Singapore',\n    'korea standard time': asia$1 + 'Seoul',\n    'korea time': asia$1 + 'Seoul',\n    kst: asia$1 + 'Seoul',\n    'korean time': asia$1 + 'Seoul',\n    'uzbekistan time': asia$1 + 'Samarkand',\n    uzt: asia$1 + 'Samarkand',\n    'vladivostok time': asia$1 + 'Vladivostok',\n    vlat: asia$1 + 'Vladivostok',\n\n    //indian\n    'maldives time': 'Indian/Maldives',\n    mvt: 'Indian/Maldives',\n    'mauritius time': 'Indian/Mauritius',\n    mut: 'Indian/Mauritius',\n\n    // pacific\n    'marshall islands time': pac$1 + 'Kwajalein',\n    mht: pac$1 + 'Kwajalein',\n    'samoa standard time': pac$1 + 'Midway',\n    sst: pac$1 + 'Midway',\n    'somoan time': pac$1 + 'Midway',\n    'chamorro standard time': pac$1 + 'Guam',\n    chst: pac$1 + 'Guam',\n    'papua new guinea time': pac$1 + 'Bougainville',\n    pgt: pac$1 + 'Bougainville',\n  };\n\n  //add the official iana zonefile names\n  let iana$1 = main().timezones;\n  let formal$1 = Object.keys(iana$1).reduce((h, k) => {\n    h[k] = k;\n    return h\n  }, {});\n  var informal$2 = Object.assign({}, informal$1, formal$1);\n\n  const isOffset = /(-?[0-9]+)h(rs)?/i;\n  const isNumber = /(-?[0-9]+)/;\n  const utcOffset = /utc([-+]?[0-9]+)/i;\n  const gmtOffset = /gmt([-+]?[0-9]+)/i;\n\n  const toIana = function (num) {\n    num = Number(num);\n    if (num > -13 && num < 13) {\n      num = num * -1; //it's opposite!\n      num = (num > 0 ? '+' : '') + num; //add plus sign\n      return 'Etc/GMT' + num\n    }\n    return null\n  };\n\n  const parseOffset = function (tz) {\n    // '+5hrs'\n    let m = tz.match(isOffset);\n    if (m !== null) {\n      return toIana(m[1])\n    }\n    // 'utc+5'\n    m = tz.match(utcOffset);\n    if (m !== null) {\n      return toIana(m[1])\n    }\n    // 'GMT-5' (not opposite)\n    m = tz.match(gmtOffset);\n    if (m !== null) {\n      let num = Number(m[1]) * -1;\n      return toIana(num)\n    }\n    // '+5'\n    m = tz.match(isNumber);\n    if (m !== null) {\n      return toIana(m[1])\n    }\n    return null\n  };\n\n  const parseTimezone = function (doc) {\n    let m = doc.match('#Timezone+');\n    //remove prepositions\n    m = m.not('(in|for|by|near|at)');\n    let str = m.text('reduced');\n\n    // check our list of informal tz names\n    if (informal$2.hasOwnProperty(str)) {\n      return { result: informal$2[str], m }\n    }\n    let tz = parseOffset(str);\n    if (tz) {\n      return { result: tz, m }\n    }\n\n    return { result: null, m: doc.none() }\n  };\n\n  // pull-out 'thurs' from 'thurs next week'\n  const parseWeekday = function (doc) {\n    let day = doc.match('#WeekDay');\n    if (day.found && !doc.has('^#WeekDay$')) {\n      // handle relative-day logic elsewhere.\n      if (doc.has('(this|next|last) (next|upcoming|coming|past)? #WeekDay')) {\n        return { result: null, m: doc.none() }\n      }\n      return { result: day.text('reduced'), m: day }\n    }\n    return { result: null, m: doc.none() }\n  };\n\n  const cleanup = function (doc) {\n    // 'the fifth week ..'\n    doc = doc.not('[^the] !#Value', 0); // keep 'the 17th'\n    // \n    doc = doc.not('#Preposition$');\n    doc = doc.not('#Conjunction$');\n    doc = doc.not('sharp');\n    doc = doc.not('on the dot');\n    doc = doc.not('^(on|of)');\n    doc = doc.not('(next|last|this)$');\n    return doc\n  };\n\n\n  const tokenize = function (doc, context) {\n    // parse 'two weeks after'\n    let res = parseShift(doc);\n    let shift = res.result;\n    doc = doc.not(res.m);\n\n    // parse 'nth week of june'\n    res = getCounter(doc);\n    let counter = res.result;\n    doc = doc.not(res.m);\n\n    // parse 'eastern time'\n    res = parseTimezone(doc);\n    let tz = res.result;\n    doc = doc.not(res.m);\n\n    // parse '2pm'\n    res = parseTime(doc, context);\n    let time = res.result;\n    doc = doc.not(res.m);\n\n    // parse 'tuesday'\n    res = parseWeekday(doc);\n    let weekDay = res.result;\n    doc = doc.not(res.m);\n\n    // parse 'start of x'\n    res = parseSection(doc);\n    let section = res.result;\n    doc = doc.not(res.m);\n\n    // parse 'next x'\n    res = parseRelative(doc);\n    let rel = res.result;\n    doc = doc.not(res.m);\n\n    // cleanup remaining doc object\n    doc = cleanup(doc);\n    return {\n      shift,\n      counter,\n      tz,\n      time,\n      weekDay,\n      section,\n      rel,\n      doc\n    }\n  };\n\n  class Unit {\n    constructor(input, unit, context) {\n      this.unit = unit || 'day';\n      this.setTime = false;\n      context = context || {};\n      let today = {};\n      if (context.today) {\n        today = {\n          date: context.today.date(),\n          month: context.today.month(),\n          year: context.today.year(),\n        };\n      }\n      if (input && input.month === 'sept') {\n        input.month = 'sep';\n      }\n      // set it to the beginning of the given unit\n      let d = main(input, context.timezone, { today: today, dmy: context.dmy });\n      Object.defineProperty(this, 'd', {\n        enumerable: false,\n        writable: true,\n        value: d,\n      });\n      Object.defineProperty(this, 'context', {\n        enumerable: false,\n        writable: true,\n        value: context,\n      });\n    }\n    // make a new one\n    clone() {\n      let d = new Unit(this.d, this.unit, this.context);\n      d.setTime = this.setTime;\n      return d\n    }\n    log() {\n      console.log('--');//eslint-disable-line\n      this.d.log();\n      console.log('\\n');//eslint-disable-line\n      return this\n    }\n    applyShift(obj = {}) {\n      Object.keys(obj).forEach((unit) => {\n        this.d = this.d.add(obj[unit], unit);\n        if (unit === 'hour' || unit === 'minute') {\n          this.setTime = true;\n        }\n      });\n      return this\n    }\n    applyTime(str) {\n      if (str) {\n        let justHour = /^[0-9]{1,2}$/;\n        if (justHour.test(str)) {\n          this.d = this.d.hour(str);\n        } else {\n          this.d = this.d.time(str);\n        }\n        // wiggle the best am/pm\n        let amPM = /[ap]m/.test(str);\n        if (!amPM) {\n          let tooEarly = this.d.time('6:00am');\n          if (this.d.isBefore(tooEarly)) {\n            this.d = this.d.ampm('pm');\n          }\n          let tooLate = this.d.time('10:00pm');\n          if (this.d.isAfter(tooLate)) {\n            this.d = this.d.ampm('am');\n          }\n        }\n      } else {\n        this.d = this.d.startOf('day'); //zero-out time\n      }\n      this.setTime = true;\n      return this\n    }\n    applyWeekDay(day) {\n      if (day) {\n        let epoch = this.d.epoch;\n        this.d = this.d.day(day);\n        if (this.d.epoch < epoch) {\n          this.d = this.d.add(1, 'week');\n        }\n      }\n      return this\n    }\n    applyRel(rel) {\n      if (rel === 'next') {\n        return this.next()\n      }\n      if (rel === 'last' || rel === 'this-past') {\n        // special 'this past' logic is handled in WeekDay\n        return this.last()\n      }\n      return this\n    }\n    applySection(section) {\n      if (section === 'start') {\n        return this.start()\n      }\n      if (section === 'end') {\n        return this.end()\n      }\n      if (section === 'middle') {\n        return this.middle()\n      }\n      return this\n    }\n    format(fmt) {\n      return this.d.format(fmt)\n    }\n    start() {\n      this.d = this.d.startOf(this.unit);\n      // do we have a custom day-start?\n      if (this.context.dayStart) {\n        this.d = this.d.time(this.context.dayStart);\n      }\n      return this\n    }\n    end() {\n      // do we have a custom day-end?\n      this.d = this.d.endOf(this.unit);\n      if (this.context.dayEnd) {\n        this.d = this.d.startOf('day');\n        let dayEnd = this.d.time(this.context.dayEnd);\n        if (dayEnd.isAfter(this.d)) {\n          this.d = dayEnd;\n          return this\n        }\n      }\n      return this\n    }\n    middle() {\n      let diff = this.d.diff(this.d.endOf(this.unit));\n      let minutes = Math.round(diff.minutes / 2);\n      this.d = this.d.add(minutes, 'minutes');\n      return this\n    }\n    // move it to 3/4s through\n    beforeEnd() {\n      let diff = this.d.startOf(this.unit).diff(this.d.endOf(this.unit));\n      let mins = Math.round(diff.minutes / 4);\n      this.d = this.d.endOf(this.unit);\n      this.d = this.d.minus(mins, 'minutes');\n      if (this.context.dayStart) {\n        this.d = this.d.time(this.context.dayStart);\n      }\n      return this\n    }\n    // the millescond before\n    before() {\n      this.d = this.d.minus(1, this.unit);\n      this.d = this.d.endOf(this.unit);\n      if (this.context.dayEnd) {\n        this.d = this.d.time(this.context.dayEnd);\n      }\n      return this\n    }\n    // 'after 2019'\n    after() {\n      this.d = this.d.add(1, this.unit);\n      this.d = this.d.startOf(this.unit);\n      return this\n    }\n    // tricky: 'next june' 'next tuesday'\n    next() {\n      this.d = this.d.add(1, this.unit);\n      this.d = this.d.startOf(this.unit);\n      return this\n    }\n    // tricky: 'last june' 'last tuesday'\n    last() {\n      this.d = this.d.minus(1, this.unit);\n      this.d = this.d.startOf(this.unit);\n      return this\n    }\n  }\n\n  class Day extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'day';\n      if (this.d.isValid()) {\n        this.d = this.d.startOf('day');\n      }\n    }\n    middle() {\n      this.d = this.d.time('10am');\n      return this\n    }\n    beforeEnd() {\n      this.d = this.d.time('2pm');\n      return this\n    }\n  }\n\n  // like 'feb 2'\n  class CalendarDate extends Day {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'day';\n      if (this.d.isValid()) {\n        this.d = this.d.startOf('day');\n      }\n    }\n    next() {\n      this.d = this.d.add(1, 'year');\n      return this\n    }\n    last() {\n      this.d = this.d.minus(1, 'year');\n      return this\n    }\n  }\n\n  class WeekDay extends Day {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'day';\n      this.isWeekDay = true; //cool.\n      // is the input just a weekday?\n      if (typeof input === 'string') {\n        this.d = main(context.today, context.timezone);\n        this.d = this.d.day(input);\n        // assume a wednesday in the future\n        if (this.d.isBefore(context.today)) {\n          this.d = this.d.add(7, 'days');\n        }\n      } else {\n        this.d = input;\n      }\n      this.weekDay = this.d.dayName();\n      if (this.d.isValid()) {\n        this.d = this.d.startOf('day');\n      }\n    }\n    // clone() {\n    //   return new WeekDay(this.d, this.unit, this.context)\n    // }\n    next() {\n      this.d = this.d.add(7, 'days');\n      this.d = this.d.day(this.weekDay);\n      return this\n    }\n    last() {\n      this.d = this.d.minus(7, 'days');\n      this.d = this.d.day(this.weekDay);\n      return this\n    }\n    // the millescond before\n    before() {\n      this.d = this.d.minus(1, 'day');\n      this.d = this.d.endOf('day');\n      if (this.context.dayEnd) {\n        this.d = this.d.time(this.context.dayEnd);\n      }\n      return this\n    }\n    applyRel(rel) {\n      if (rel === 'next') {\n        let tooFar = this.context.today.endOf('week').add(1, 'week');\n        this.next();\n        //  did we go too-far?\n        if (this.d.isAfter(tooFar)) {\n          this.last(); // go back\n        }\n        return this\n      }\n      // the closest-one backwards\n      if (rel === 'this-past') {\n        return this.last()\n      }\n      if (rel === 'last') {\n        let start = this.context.today.startOf('week');\n        this.last();\n        // are we still in 'this week' though?\n        if (this.d.isBefore(start) === false) {\n          this.last(); // do it again\n        }\n        return this\n      }\n      return this\n    }\n  }\n\n  // like 'haloween'\n  class Holiday extends CalendarDate {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'day';\n      if (this.d.isValid()) {\n        this.d = this.d.startOf('day');\n      }\n    }\n  }\n\n  class Hour extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context, true);\n      this.unit = 'hour';\n      if (this.d.isValid()) {\n        this.d = this.d.startOf('hour');\n      }\n    }\n  }\n  class Minute extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context, true);\n      this.unit = 'minute';\n      if (this.d.isValid()) {\n        this.d = this.d.startOf('minute');\n      }\n    }\n  }\n  class Moment extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context, true);\n      this.unit = 'millisecond';\n    }\n  }\n\n  // a specific month, like 'March'\n  class AnyMonth extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'month';\n      // set to beginning\n      if (this.d.isValid()) {\n        this.d = this.d.startOf(this.unit);\n      }\n    }\n  }\n\n  // a specific month, like 'March'\n  class Month extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'month';\n      // set to beginning\n      if (this.d.isValid()) {\n        this.d = this.d.startOf(this.unit);\n      }\n    }\n    next() {\n      this.d = this.d.add(1, 'year');\n      this.d = this.d.startOf('month');\n      return this\n    }\n    last() {\n      this.d = this.d.minus(1, 'year');\n      this.d = this.d.startOf('month');\n      return this\n    }\n    middle() {\n      this.d = this.d.add(15, 'days');\n      this.d = this.d.startOf('day');\n      return this\n    }\n  }\n\n  class AnyQuarter extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'quarter';\n      // set to beginning\n      if (this.d.isValid()) {\n        this.d = this.d.startOf(this.unit);\n      }\n    }\n    last() {\n      this.d = this.d.minus(1, 'quarter');\n      this.d = this.d.startOf(this.unit);\n      return this\n    }\n  }\n\n  class Quarter extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'quarter';\n      // set to beginning\n      if (this.d.isValid()) {\n        this.d = this.d.startOf(this.unit);\n      }\n    }\n    next() {\n      this.d = this.d.add(1, 'year');\n      this.d = this.d.startOf(this.unit);\n      return this\n    }\n    last() {\n      this.d = this.d.minus(1, 'year');\n      this.d = this.d.startOf(this.unit);\n      return this\n    }\n  }\n  class Season extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'season';\n      // set to beginning\n      if (this.d.isValid()) {\n        this.d = this.d.startOf(this.unit);\n      }\n    }\n    next() {\n      this.d = this.d.add(1, 'year');\n      this.d = this.d.startOf(this.unit);\n      return this\n    }\n    last() {\n      this.d = this.d.minus(1, 'year');\n      this.d = this.d.startOf(this.unit);\n      return this\n    }\n  }\n  class Year extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'year';\n      if (this.d.isValid()) {\n        this.d = this.d.startOf('year');\n      }\n    }\n  }\n\n  class Week extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'week';\n      if (this.d.isValid()) {\n        this.d = this.d.startOf('week');\n      }\n    }\n    clone() {\n      return new Week(this.d, this.unit, this.context)\n    }\n    middle() {\n      this.d = this.d.add(2, 'days'); //wednesday\n      return this\n    }\n    // move it to 3/4s through\n    beforeEnd() {\n      this.d = this.d.day('friday');\n      return this\n    }\n  }\n\n  //may need some work\n  class WeekEnd extends Unit {\n    constructor(input, unit, context) {\n      super(input, unit, context);\n      this.unit = 'week';\n      if (this.d.isValid()) {\n        this.d = this.d.day('saturday');\n        this.d = this.d.startOf('day');\n      }\n    }\n    start() {\n      this.d = this.d.day('saturday').startOf('day');\n      return this\n    }\n    // end() {\n    //   this.d = this.d.day('sunday').endOf('day')\n    //   return this\n    // }\n    next() {\n      this.d = this.d.add(1, this.unit);\n      this.d = this.d.startOf('weekend');\n      return this\n    }\n    last() {\n      this.d = this.d.minus(1, this.unit);\n      this.d = this.d.startOf('weekend');\n      return this\n    }\n  }\n\n  const knownWord = {\n    today: (context) => {\n      return new Day(context.today, null, context)\n    },\n    yesterday: (context) => {\n      return new Day(context.today.minus(1, 'day'), null, context)\n    },\n    tomorrow: (context) => {\n      return new Day(context.today.plus(1, 'day'), null, context)\n    },\n    eom: (context) => {\n      let d = context.today.endOf('month');\n      d = d.startOf('day');\n      return new Day(d, null, context)\n    },\n    // eod: (context) => {\n    //   let d = context.today.endOf('day')\n    //   d = d.startOf('hour').minus(4, 'hours') //rough\n    //   return new Hour(d, null, context)\n    // },\n    eoy: (context) => {\n      let d = context.today.endOf('year');\n      d = d.startOf('day');\n      return new Day(d, null, context)\n    },\n    now: (context) => {\n      return new Moment(context.today, null, context) // should we set the current hour?\n    },\n  };\n  knownWord.tommorrow = knownWord.tomorrow;\n  knownWord.tmrw = knownWord.tomorrow;\n  knownWord.anytime = knownWord.today;\n  knownWord.sometime = knownWord.today;\n\n  const today = function (doc, context, parts) {\n    let unit = null;\n    // is it empty?\n    if (doc.found === false) {\n      // do we have just a time?\n      if (parts.time !== null) {\n        unit = new Moment(context.today, null, context); // choose today\n      }\n      //do we just have a shift?\n      if (parts.shift && Object.keys(parts.shift).length > 0) {\n        if (parts.shift.hour || parts.shift.minute) {\n          unit = new Moment(context.today, null, context); // choose now\n        } else {\n          unit = new Day(context.today, null, context); // choose today\n        }\n      }\n    }\n    // today, yesterday, tomorrow\n    let str = doc.text('reduced');\n    if (knownWord.hasOwnProperty(str) === true) {\n      return knownWord[str](context)\n    }\n    // day after next\n    if (str === 'next' && parts.shift && Object.keys(parts.shift).length > 0) {\n      return knownWord.tomorrow(context)\n    }\n    return unit\n  };\n\n  //yep,\n  const jan$1 = 'january';\n  const feb$1 = 'february';\n  const mar$1 = 'march';\n  const apr = 'april';\n  const may$1 = 'may';\n  const jun$1 = 'june';\n  const jul = 'july';\n  const aug = 'august';\n  const sep$1 = 'september';\n  const oct$1 = 'october';\n  const nov$1 = 'november';\n  const dec = 'december';\n\n  var fixed = {\n    'new years eve': [dec, 31],\n    'new years': [jan$1, 1],\n    'new years day': [jan$1, 1],\n    'inauguration day': [jan$1, 20],\n    'australia day': [jan$1, 26],\n    'national freedom day': [feb$1, 1],\n    'groundhog day': [feb$1, 2],\n    'rosa parks day': [feb$1, 4],\n    'valentines day': [feb$1, 14],\n    'saint valentines day': [feb$1, 14],\n    'st valentines day ': [feb$1, 14],\n    'saint patricks day': [mar$1, 17],\n    'st patricks day': [mar$1, 17],\n    'april fools': [apr, 1],\n    'april fools day': [apr, 1],\n    'emancipation day': [apr, 16],\n    'tax day': [apr, 15], //US\n    'labour day': [may$1, 1],\n    'cinco de mayo': [may$1, 5],\n    'national nurses day': [may$1, 6],\n    'harvey milk day': [may$1, 22],\n    'victoria day': [may$1, 24],\n    juneteenth: [jun$1, 19],\n    'canada day': [jul, 1],\n    'independence day': [jul, 4],\n    'independents day': [jul, 4],\n    'bastille day': [jul, 14],\n    'purple heart day': [aug, 7],\n    'womens equality day': [aug, 26],\n    '16 de septiembre': [sep$1, 16],\n    'dieciseis de septiembre': [sep$1, 16],\n    'grito de dolores': [sep$1, 16],\n    halloween: [oct$1, 31],\n    'all hallows eve': [oct$1, 31],\n    'day of the dead': [oct$1, 31], // Ranged holiday [nov, 2],\n    'dia de muertos': [oct$1, 31], // Ranged holiday [nov, 2],\n    'veterans day': [nov$1, 11],\n    'st andrews day': [nov$1, 30],\n    'saint andrews day': [nov$1, 30],\n    'all saints day': [nov$1, 1],\n    'all sts day': [nov$1, 1],\n    'armistice day': [nov$1, 11],\n    'rememberance day': [nov$1, 11],\n    'christmas eve': [dec, 24],\n    christmas: [dec, 25],\n    xmas: [dec, 25],\n    'boxing day': [dec, 26],\n    'st stephens day': [dec, 26],\n    'saint stephens day': [dec, 26],\n\n    // Fixed religious and cultural holidays\n    // Catholic + Christian\n    epiphany: [jan$1, 6],\n    'orthodox christmas day': [jan$1, 7],\n    'orthodox new year': [jan$1, 14],\n    'assumption of mary': [aug, 15],\n    'all souls day': [nov$1, 2],\n    'feast of the immaculate conception': [dec, 8],\n    'feast of our lady of guadalupe': [dec, 12],\n\n    // Kwanzaa\n    kwanzaa: [dec, 26], // Ranged holiday [jan, 1],\n\n    // Pagan / metal 🤘\n    imbolc: [feb$1, 2],\n    beltaine: [may$1, 1],\n    lughnassadh: [aug, 1],\n    samhain: [oct$1, 31]\n  };\n\n  // holidays that are the same date every year\n  const fixedDates$1 = function (str, normal, year, tz) {\n    if (fixed.hasOwnProperty(str) || fixed.hasOwnProperty(normal)) {\n      let arr = fixed[str] || fixed[normal] || [];\n      let s = main.now(tz);\n      s = s.year(year);\n      s = s.startOf('year');\n      s = s.month(arr[0]);\n      s = s.date(arr[1]);\n      if (s.isValid()) {\n        return s\n      }\n    }\n    return null\n  };\n  var fixedDates$2 = fixedDates$1;\n\n  //these are holidays on the 'nth weekday of month'\n  const jan = 'january';\n  const feb = 'february';\n  const mar = 'march';\n  // const apr = 'april'\n  const may = 'may';\n  const jun = 'june';\n  // const jul = 'july'\n  // const aug = 'august'\n  const sep = 'september';\n  const oct = 'october';\n  const nov = 'november';\n  // const dec = 'december'\n\n  const mon = 'monday';\n  // const tues = 'tuesday'\n  // const wed = 'wednesday'\n  const thurs = 'thursday';\n  const fri = 'friday';\n  // const sat = 'saturday'\n  const sun = 'sunday';\n\n  let holidays$3 = {\n    'martin luther king day': [3, mon, jan], //[third monday in january],\n    'presidents day': [3, mon, feb], //[third monday in february],\n\n    'commonwealth day': [2, mon, mar], //[second monday in march],\n    'mothers day': [2, sun, may], //[second Sunday in May],\n    'fathers day': [3, sun, jun], //[third Sunday in June],\n    'labor day': [1, mon, sep], //[first monday in september],\n    'columbus day': [2, mon, oct], //[second monday in october],\n    'canadian thanksgiving': [2, mon, oct], //[second monday in october],\n    thanksgiving: [4, thurs, nov], // [fourth Thursday in November],\n    'black friday': [4, fri, nov] //[fourth friday in november],\n\n    // 'memorial day': [may], //[last monday in may],\n    // 'us election': [nov], // [Tuesday following the first Monday in November],\n    // 'cyber monday': [nov]\n    // 'advent': [] // fourth Sunday before Christmas\n  };\n\n  // add aliases\n  holidays$3['turday day'] = holidays$3.thanksgiving;\n  holidays$3['indigenous peoples day'] = holidays$3['columbus day'];\n  holidays$3['mlk day'] = holidays$3['martin luther king day'];\n  var calendar = holidays$3;\n\n  // holidays that are the same date every year\n  const fixedDates = function (str, normal, year, tz) {\n    if (calendar.hasOwnProperty(str) || calendar.hasOwnProperty(normal)) {\n      let arr = calendar[str] || calendar[normal] || [];\n      let s = main.now(tz);\n      s = s.year(year);\n\n      // [3rd, 'monday', 'january']\n      s = s.month(arr[2]);\n      s = s.startOf('month');\n      // make it january\n      let month = s.month();\n\n      // make it the 1st monday\n      s = s.day(arr[1]);\n      if (s.month() !== month) {\n        s = s.add(1, 'week');\n      }\n      // make it nth monday\n      if (arr[0] > 1) {\n        s = s.add(arr[0] - 1, 'week');\n      }\n      if (s.isValid()) {\n        return s\n      }\n    }\n\n    return null\n  };\n  var nthWeekday = fixedDates;\n\n  // https://www.timeanddate.com/calendar/determining-easter-date.html\n\n  let dates$2 = {\n    easter: 0,\n    'ash wednesday': -46, // (46 days before easter)\n    'palm sunday': 7, // (1 week before easter)\n    'maundy thursday': -3, // (3 days before easter)\n    'good friday': -2, // (2 days before easter)\n    'holy saturday': -1, // (1 days before easter)\n    'easter saturday': -1, // (1 day before easter)\n    'easter monday': 1, // (1 day after easter)\n    'ascension day': 39, // (39 days after easter)\n    'whit sunday': 49, // / pentecost (49 days after easter)\n    'whit monday': 50, // (50 days after easter)\n    'trinity sunday': 65, // (56 days after easter)\n    'corpus christi': 60, // (60 days after easter)\n\n    'mardi gras': -47 //(47 days before easter)\n  };\n  dates$2['easter sunday'] = dates$2.easter;\n  dates$2.pentecost = dates$2['whit sunday'];\n  dates$2.whitsun = dates$2['whit sunday'];\n\n  var holidays$2 = dates$2;\n\n  // by John Dyer\n  // based on the algorithm by Oudin (1940) from http://www.tondering.dk/claus/cal/easter.php\n  const calcEaster = function (year) {\n    let f = Math.floor,\n      // Golden Number - 1\n      G = year % 19,\n      C = f(year / 100),\n      // related to Epact\n      H = (C - f(C / 4) - f((8 * C + 13) / 25) + 19 * G + 15) % 30,\n      // number of days from 21 March to the Paschal full moon\n      I = H - f(H / 28) * (1 - f(29 / (H + 1)) * f((21 - G) / 11)),\n      // weekday for the Paschal full moon\n      J = (year + f(year / 4) + I + 2 - C + f(C / 4)) % 7,\n      // number of days from 21 March to the Sunday on or before the Paschal full moon\n      L = I - J,\n      month = 3 + f((L + 40) / 44),\n      date = L + 28 - 31 * f(month / 4);\n\n    month = month === 4 ? 'April' : 'March';\n    return month + ' ' + date\n  };\n\n  var calcEaster$1 = calcEaster;\n\n  //calculate any holidays based on easter\n  const easterDates = function (str, normal, year, tz) {\n    if (holidays$2.hasOwnProperty(str) || holidays$2.hasOwnProperty(normal)) {\n      let days = holidays$2[str] || holidays$2[normal] || [];\n\n      let date = calcEaster$1(year);\n      if (!date) {\n        return null //no easter for this year\n      }\n      let e = main(date, tz);\n      e = e.year(year);\n\n      let s = e.add(days, 'day');\n      if (s.isValid()) {\n        return s\n      }\n    }\n    return null\n  };\n  var easterDates$1 = easterDates;\n\n  // http://www.astropixels.com/ephemeris/soleq2001.html\n\n  // years 2000-2100\n  const exceptions = {\n    spring: [\n      2003,\n      2007,\n      2044,\n      2048,\n      2052,\n      2056,\n      2060,\n      2064,\n      2068,\n      2072,\n      2076,\n      2077,\n      2080,\n      2081,\n      2084,\n      2085,\n      2088,\n      2089,\n      2092,\n      2093,\n      2096,\n      2097\n    ],\n    summer: [\n      2021,\n      2016,\n      2020,\n      2024,\n      2028,\n      2032,\n      2036,\n      2040,\n      2041,\n      2044,\n      2045,\n      2048,\n      2049,\n      2052,\n      2053,\n      2056,\n      2057,\n      2060,\n      2061,\n      2064,\n      2065,\n      2068,\n      2069,\n      2070,\n      2072,\n      2073,\n      2074,\n      2076,\n      2077,\n      2078,\n      2080,\n      2081,\n      2082,\n      2084,\n      2085,\n      2086,\n      2088,\n      2089,\n      2090,\n      2092,\n      2093,\n      2094,\n      2096,\n      2097,\n      2098,\n      2099\n    ],\n    fall: [\n      2002,\n      2003,\n      2004,\n      2006,\n      2007,\n      2010,\n      2011,\n      2014,\n      2015,\n      2018,\n      2019,\n      2022,\n      2023,\n      2026,\n      2027,\n      2031,\n      2035,\n      2039,\n      2043,\n      2047,\n      2051,\n      2055,\n      2059,\n      2092,\n      2096\n    ],\n    winter: [\n      2002,\n      2003,\n      2006,\n      2007,\n      2011,\n      2015,\n      2019,\n      2023,\n      2027,\n      2031,\n      2035,\n      2039,\n      2043,\n      2080,\n      2084,\n      2088,\n      2092,\n      2096\n    ]\n  };\n\n  const winter20th = [2080, 2084, 2088, 2092, 2096];\n\n  const calcSeasons = function (year) {\n    // most common defaults\n    let res = {\n      spring: 'March 20 ' + year,\n      summer: 'June 21 ' + year,\n      fall: 'Sept 22 ' + year,\n      winter: 'Dec 21 ' + year\n    };\n    if (exceptions.spring.indexOf(year) !== -1) {\n      res.spring = 'March 19 ' + year;\n    }\n    if (exceptions.summer.indexOf(year) !== -1) {\n      res.summer = 'June 20 ' + year;\n    }\n    if (exceptions.fall.indexOf(year) !== -1) {\n      res.fall = 'Sept 21 ' + year;\n    }\n    // winter can be 20th, 21st, or 22nd\n    if (exceptions.winter.indexOf(year) !== -1) {\n      res.winter = 'Dec 22 ' + year;\n    }\n    if (winter20th.indexOf(year) !== -1) {\n      res.winter = 'Dec 20 ' + year;\n    }\n    return res\n  };\n  var calcSeasons$1 = calcSeasons;\n\n  // these are properly calculated in ./lib/seasons\n  let dates$1 = {\n    'spring equinox': 'spring',\n    'summer solistice': 'summer',\n    'fall equinox': 'fall',\n    'winter solstice': 'winter'\n  };\n\n  // aliases\n  dates$1['march equinox'] = dates$1['spring equinox'];\n  dates$1['vernal equinox'] = dates$1['spring equinox'];\n  dates$1['ostara'] = dates$1['spring equinox'];\n\n  dates$1['june solstice'] = dates$1['summer solistice'];\n  dates$1['litha'] = dates$1['summer solistice'];\n\n  dates$1['autumn equinox'] = dates$1['fall equinox'];\n  dates$1['autumnal equinox'] = dates$1['fall equinox'];\n  dates$1['september equinox'] = dates$1['fall equinox'];\n  dates$1['sept equinox'] = dates$1['fall equinox'];\n  dates$1['mabon'] = dates$1['fall equinox'];\n\n  dates$1['december solstice'] = dates$1['winter solistice'];\n  dates$1['dec solstice'] = dates$1['winter solistice'];\n  dates$1['yule'] = dates$1['winter solistice'];\n\n  var holidays$1 = dates$1;\n\n  const astroDates = function (str, normal, year, tz) {\n    if (holidays$1.hasOwnProperty(str) || holidays$1.hasOwnProperty(normal)) {\n      let season = holidays$1[str] || holidays$1[normal];\n      let seasons = calcSeasons$1(year);\n      if (!season || !seasons || !seasons[season]) {\n        return null // couldn't figure it out\n      }\n      let s = main(seasons[season], tz);\n      if (s.isValid()) {\n        return s\n      }\n    }\n\n    return null\n  };\n  var astroDates$1 = astroDates;\n\n  let dates$3 = {\n    // Muslim holidays\n    'isra and miraj': 'april 13',\n    'lailat al-qadr': 'june 10',\n    'eid al-fitr': 'june 15',\n    'id al-Fitr': 'june 15',\n    'eid ul-Fitr': 'june 15',\n    ramadan: 'may 16', // Range holiday\n    'eid al-adha': 'sep 22',\n    muharram: 'sep 12',\n    'prophets birthday': 'nov 21'\n  };\n  var holidays$4 = dates$3;\n\n  // (lunar year is 354.36 days)\n  const dayDiff = -10.64;\n\n  const lunarDates = function (str, normal, year, tz) {\n    if (holidays$4.hasOwnProperty(str) || holidays$4.hasOwnProperty(normal)) {\n      let date = holidays$4[str] || holidays$4[normal] || [];\n      if (!date) {\n        return null\n      }\n      // start at 2018\n      let s = main(date + ' 2018', tz);\n      let diff = year - 2018;\n      let toAdd = diff * dayDiff;\n      s = s.add(toAdd, 'day');\n      s = s.startOf('day');\n\n      // now set the correct year\n      s = s.year(year);\n\n      if (s.isValid()) {\n        return s\n      }\n    }\n    return null\n  };\n  var lunarDates$1 = lunarDates;\n\n  const nowYear = main.now().year();\n\n  const spacetimeHoliday = function (str, year, tz) {\n    year = year || nowYear;\n    str = str || '';\n    str = String(str);\n    str = str.trim().toLowerCase();\n    str = str.replace(/'s/, 's'); // 'mother's day'\n\n    let normal = str.replace(/ day$/, '');\n    normal = normal.replace(/^the /, '');\n    normal = normal.replace(/^orthodox /, ''); //orthodox good friday\n\n    // try easier, unmoving holidays\n    let s = fixedDates$2(str, normal, year, tz);\n    if (s !== null) {\n      return s\n    }\n    // try 'nth monday' holidays\n    s = nthWeekday(str, normal, year, tz);\n    if (s !== null) {\n      return s\n    }\n    // easter-based holidays\n    s = easterDates$1(str, normal, year, tz);\n    if (s !== null) {\n      return s\n    }\n    // solar-based holidays\n    s = astroDates$1(str, normal, year, tz);\n    if (s !== null) {\n      return s\n    }\n    // mostly muslim holidays\n    s = lunarDates$1(str, normal, year, tz);\n    if (s !== null) {\n      return s\n    }\n\n    return null\n  };\n\n  const parseHoliday = function (doc, context) {\n    let unit = null;\n    let m = doc.match('[<holiday>#Holiday+] [<year>#Year?]');\n    let year = context.today.year();\n    if (m.groups('year').found) {\n      year = Number(m.groups('year').text('reduced')) || year;\n    }\n    let str = m.groups('holiday').text('reduced');\n    let s = spacetimeHoliday(str, year, context.timezone);\n    if (s !== null) {\n      // assume the year in the future..\n      if (s.isBefore(context.today) && year === context.today.year()) {\n        s = spacetimeHoliday(str, year + 1, context.timezone);\n      }\n      unit = new Holiday(s, null, context);\n    }\n    return unit\n  };\n\n  const mapping$1 = {\n    day: Day,\n    hour: Hour,\n    evening: Hour,\n    second: Moment,\n    milliscond: Moment,\n    instant: Moment,\n    minute: Minute,\n    week: Week,\n    weekend: WeekEnd,\n    month: AnyMonth,\n    quarter: AnyQuarter,\n    year: Year,\n    season: Season,\n    // set aliases\n    yr: Year,\n    qtr: AnyQuarter,\n    wk: Week,\n    sec: Moment,\n    hr: Hour,\n  };\n\n  let matchStr = `^(${Object.keys(mapping$1).join('|')})$`;\n\n  // when a unit of time is spoken of as 'this month' - instead of 'february'\n  const nextLast = function (doc, context) {\n    //this month, last quarter, next year\n    let m = doc.match(matchStr);\n    if (m.found === true) {\n      let str = m.text('reduced');\n      if (mapping$1.hasOwnProperty(str)) {\n        let Model = mapping$1[str];\n        if (!Model) {\n          return null\n        }\n        let unit = new Model(null, str, context);\n        return unit\n      }\n    }\n    //'next friday, last thursday'\n    m = doc.match('^#WeekDay$');\n    if (m.found === true) {\n      let str = m.text('reduced');\n      let unit = new WeekDay(str, null, context);\n      return unit\n    }\n\n    // tuesday next week\n    // m = doc.match('^#WeekDay (this|next)')\n    // if (m.found === true) {\n    //   let str = m.text('reduced')\n    //   let unit = new WeekDay(str, null, context)\n    //   return unit\n    // }\n    return null\n  };\n\n  const fmtToday = function (context) {\n    return {\n      date: context.today.date(),\n      month: context.today.month(),\n      year: context.today.year(),\n    }\n  };\n\n  const parseYearly = function (doc, context) {\n    // support 'summer 2002'\n    let m = doc.match('(spring|summer|winter|fall|autumn) [<year>#Year?]');\n    if (m.found) {\n      let str = doc.text('reduced');\n      let s = main(str, context.timezone, { today: fmtToday(context) });\n      let unit = new Season(s, null, context);\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n\n    // support 'q4 2020'\n    m = doc.match('[<q>#FinancialQuarter] [<year>#Year?]');\n    if (m.found) {\n      let str = m.groups('q').text('reduced');\n      let s = main(str, context.timezone, { today: fmtToday(context) });\n      if (m.groups('year')) {\n        let year = Number(m.groups('year').text()) || context.today.year();\n        s = s.year(year);\n      }\n      let unit = new Quarter(s, null, context);\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n    // support '4th quarter 2020'\n    m = doc.match('[<q>#Value] quarter (of|in)? [<year>#Year?]');\n    if (m.found) {\n      let q = m.groups('q').text('reduced');\n      let s = main(`q${q}`, context.timezone, { today: fmtToday(context) });\n      if (m.groups('year')) {\n        let year = Number(m.groups('year').text()) || context.today.year();\n        s = s.year(year);\n      }\n      let unit = new Quarter(s, null, context);\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n    // support '2020'\n    m = doc.match('^#Year$');\n    if (m.found) {\n      let str = doc.text('reduced');\n      let s = main(null, context.timezone, { today: fmtToday(context) });\n      s = s.year(str);\n      let unit = new Year(s, null, context);\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n\n    return null\n  };\n\n  // parse things like 'june 5th 2019'\n  // most of this is done in spacetime\n  const parseExplicit = function (doc, context) {\n    let impliedYear = context.today.year();\n    // 'fifth of june 1992'\n    // 'june the fifth 1992'\n    let m = doc.match('[<date>#Value] of? [<month>#Month] [<year>#Year]');\n    if (!m.found) {\n      m = doc.match('[<month>#Month] the? [<date>#Value] [<year>#Year]');\n    }\n    if (m.found) {\n      let obj = {\n        month: m.groups('month').text('reduced'),\n        date: m.groups('date').text('reduced'),\n        year: m.groups('year').text() || impliedYear,\n      };\n      let unit = new CalendarDate(obj, null, context);\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n\n    // 'march 1992'\n    m = doc.match('[<month>#Month] of? [<year>#Year]');\n    if (m.found) {\n      let obj = {\n        month: m.groups('month').text('reduced'),\n        year: m.groups('year').text('reduced') || impliedYear,\n      };\n      let unit = new Month(obj, null, context);\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n\n    // 'march 5th next year'\n    m = doc.match('[<month>#Month] [<date>#Value+]? of? the? [<rel>(this|next|last|current)] year');\n    if (m.found) {\n      let rel = m.groups('rel').text('reduced');\n      let year = impliedYear;\n      if (rel === 'next') {\n        year += 1;\n      } else if (rel === 'last') {\n        year -= 1;\n      }\n      let obj = {\n        month: m.groups('month').text('reduced'),\n        date: m.groups('date').numbers(0).get()[0],\n        year,\n      };\n      if (obj.date === undefined) {\n        obj.date = 1;\n        let unit = new Month(obj, null, context);\n        if (unit.d.isValid() === true) {\n          return unit\n        }\n      }\n      let unit = new CalendarDate(obj, null, context);\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n\n    // '5th of next month'\n    m = doc.match('^the? [<date>#Value+]? of? [<rel>(this|next|last|current)] month');\n    if (m.found) {\n      let month = context.today.month();\n      let rel = m.groups('rel').text('reduced');\n      if (rel === 'next') {\n        month += 1;\n      } else if (rel === 'last') {\n        month -= 1;\n      }\n      let obj = {\n        month,\n        date: m.groups('date').numbers(0).get()[0],\n      };\n      let unit = new CalendarDate(obj, null, context);\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n\n    //no-years\n    // 'fifth of june'\n    m = doc.match('[<date>#Value] of? [<month>#Month]');\n    // 'june the fifth'\n    if (!m.found) {\n      m = doc.match('[<month>#Month] the? [<date>#Value]');\n    }\n    if (m.found) {\n      let obj = {\n        month: m.groups('month').text('reduced'),\n        date: m.groups('date').text('reduced'),\n        year: context.today.year(),\n      };\n      let unit = new CalendarDate(obj, null, context);\n      // assume 'feb' in the future\n      if (unit.d.month() < context.today.month()) {\n        obj.year += 1;\n        unit = new CalendarDate(obj, null, context);\n      }\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n\n    // support 'december'\n    if (doc.has('#Month')) {\n      let obj = {\n        month: doc.match('#Month').text('reduced'),\n        date: 1, //assume 1st\n        year: context.today.year(),\n      };\n      let unit = new Month(obj, null, context);\n      // assume 'february' is always in the future\n      if (unit.d.month() < context.today.month()) {\n        obj.year += 1;\n        unit = new Month(obj, null, context);\n      }\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n\n    // support 'thursday 21st'\n    m = doc.match('#WeekDay [<date>#Value]');\n    if (m.found) {\n      let obj = {\n        month: context.today.month(),\n        date: m.groups('date').text('reduced'),\n        year: context.today.year(),\n      };\n      let unit = new CalendarDate(obj, null, context);\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n    // support date-only 'the 21st'\n    m = doc.match('the [<date>#Value]');\n    if (m.found) {\n      let obj = {\n        month: context.today.month(),\n        date: m.groups('date').text('reduced'),\n        year: context.today.year(),\n      };\n      let unit = new CalendarDate(obj, null, context);\n      if (unit.d.isValid() === true) {\n        // assume it's forward\n        if (unit.d.isBefore(context.today)) {\n          unit.d = unit.d.add(1, 'month');\n        }\n        return unit\n      }\n    }\n    // parse ISO as a Moment\n    m = doc.match('/[0-9]{4}-[0-9]{2}-[0-9]{2}t[0-9]{2}:/');\n    if (m.found) {\n      let str = doc.text('reduced');\n      let unit = new Moment(str, null, context);\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n    let str = doc.text('reduced');\n    if (!str) {\n      return new Moment(context.today, null, context)\n    }\n    // punt it to spacetime, for the heavy-lifting\n    let unit = new Day(str, null, context);\n    // console.log(str, unit, context.today.year())\n    // did we find a date?\n    if (unit.d.isValid() === false) {\n      return null\n    }\n    return unit\n  };\n\n  const parse$3 = function (doc, context, parts) {\n    let unit = null;\n    //'in two days'\n    unit = unit || today(doc, context, parts);\n    // 'this haloween'\n    unit = unit || parseHoliday(doc, context);\n    // 'this month'\n    unit = unit || nextLast(doc, context);\n    // 'q2 2002'\n    unit = unit || parseYearly(doc, context);\n    // 'this june 2nd'\n    unit = unit || parseExplicit(doc, context);\n\n    return unit\n  };\n\n  const units = {\n    day: Day,\n    week: Week,\n    weekend: WeekEnd,\n    month: Month,\n    quarter: Quarter,\n    season: Season,\n    hour: Hour,\n    minute: Minute,\n  };\n\n  const applyCounter = function (unit, counter = {}) {\n    let Unit = units[counter.unit];\n    if (!Unit) {\n      return unit\n    }\n    let d = unit.d;\n    // support 'first' or 0th\n    if (counter.dir === 'first' || counter.num === 0) {\n      d = unit.start().d;\n      d = d.startOf(counter.unit);\n    } else if (counter.dir === 'last') {\n      d = d.endOf(unit.unit);\n      if (counter.unit === 'weekend') {\n        d = d.day('saturday', false);\n      } else {\n        d = d.startOf(counter.unit);\n      }\n    } else if (counter.num) {\n      if (counter.unit === 'weekend') {\n        d = d.day('saturday', true).add(1, 'day'); //fix bug\n      }\n      // support 'nth week', eg.\n      d = d.add(counter.num, counter.unit);\n    }\n    let u = new Unit(d, null, unit.context);\n    if (u.d.isValid() === true) {\n      return u\n    }\n    return unit //fallback\n  };\n\n  // apply all parsed {parts} to our unit date\n  const transform = function (unit, context, parts) {\n\n    if (!unit && parts.weekDay) {\n      unit = new WeekDay(parts.weekDay, null, context);\n      parts.weekDay = null;\n    }\n\n    // just don't bother\n    if (!unit) {\n      return null\n    }\n    // 2 days after..\n    if (parts.shift) {\n      let shift = parts.shift;\n      unit.applyShift(shift);\n      // allow shift to change our unit size\n      if (shift.hour || shift.minute) {\n        unit = new Moment(unit.d, null, unit.context);\n      } else if (shift.week || shift.day || shift.month) {\n        unit = new Day(unit.d, null, unit.context);\n      }\n    }\n    // wednesday next week\n    if (parts.weekDay && unit.unit !== 'day') {\n      unit.applyWeekDay(parts.weekDay);\n      unit = new WeekDay(unit.d, null, unit.context);\n    }\n    // this/next/last\n    if (parts.rel) {\n      unit.applyRel(parts.rel);\n    }\n    // end of\n    if (parts.section) {\n      unit.applySection(parts.section);\n    }\n    // at 5:40pm\n    if (parts.time) {\n      unit.applyTime(parts.time);\n      // unit = new Minute(unit.d, null, unit.context)\n    }\n    // apply counter\n    if (parts.counter && parts.counter.unit) {\n      unit = applyCounter(unit, parts.counter);\n    }\n    return unit\n  };\n\n  // import spacetime from 'spacetime'\n\n  const env$1 = typeof process === 'undefined' || !process.env ? self.env || {} : process.env;\n  const log$1 = parts => {\n    if (env$1.DEBUG_DATE) {\n      // console.log(parts)// eslint-disable-line\n      console.log(`\\n==== '${parts.doc.text()}' =====`); // eslint-disable-line\n      Object.keys(parts).forEach(k => {\n        if (k !== 'doc' && parts[k]) {\n          console.log(k, parts[k]); // eslint-disable-line\n        }\n      });\n      parts.doc.debug(); // allow\n    }\n  };\n\n  const parseDate = function (doc, context) {\n    //parse-out any sections\n    let parts = tokenize(doc, context);\n    doc = parts.doc;\n    // logger\n    log$1(parts);\n\n    //apply our given timezone\n    if (parts.tz) {\n      context = Object.assign({}, context, { timezone: parts.tz });\n      // set timezone on any 'today' value, too\n      let iso = context.today.format('iso-short');\n      context.today = context.today.goto(context.timezone).set(iso);\n    }\n    // decide on a root date object\n    let unit = parse$3(doc, context, parts);\n    // apply all our parts\n    unit = transform(unit, context, parts);\n    return unit\n  };\n\n  const dayNames = {\n    mon: 'monday',\n    tue: 'tuesday',\n    tues: 'wednesday',\n    wed: 'wednesday',\n    thu: 'thursday',\n    fri: 'friday',\n    sat: 'saturday',\n    sun: 'sunday',\n    monday: 'monday',\n    tuesday: 'tuesday',\n    wednesday: 'wednesday',\n    thursday: 'thursday',\n    friday: 'friday',\n    saturday: 'saturday',\n    sunday: 'sunday',\n  };\n  // 'any tuesday' vs 'every tuesday'\n  const parseLogic = function (m) {\n    if (m.match('(every|each)').found) {\n      return 'AND'\n    }\n    if (m.match('(any|a)').found) {\n      return 'OR'\n    }\n    return null\n  };\n\n  // parse repeating dates, like 'every week'\n  const parseIntervals = function (doc, context) {\n    // 'every week'\n    let m = doc.match('[<logic>(every|any|each)] [<skip>other?] [<unit>#Duration] (starting|beginning|commencing)?');\n    if (m.found) {\n      let repeat = { interval: {} };\n      let unit = m.groups('unit').text('reduced');\n      repeat.interval[unit] = 1;\n      repeat.choose = parseLogic(m);\n      // 'every other week'\n      if (m.groups('skip').found) {\n        repeat.interval[unit] = 2;\n      }\n      doc = doc.remove(m);\n      return { repeat: repeat }\n    }\n\n    // 'every two weeks'\n    m = doc.match('[<logic>(every|any|each)] [<num>#Value] [<unit>#Duration] (starting|beginning|commencing)?');\n    if (m.found) {\n      let repeat = { interval: {} };\n      let units = m.groups('unit');\n      units.nouns().toSingular();\n      let unit = units.text('reduced');\n      repeat.interval[unit] = m.groups('num').numbers().get()[0];\n      repeat.choose = parseLogic(m);\n      doc = doc.remove(m);\n      return { repeat: repeat }\n    }\n\n    // 'every friday'\n    m = doc.match('[<logic>(every|any|each|a)] [<skip>other?] [<day>#WeekDay+] (starting|beginning|commencing)?');\n    if (m.found) {\n      let repeat = { interval: { day: 1 }, filter: { weekDays: {} } };\n      let str = m.groups('day').text('reduced');\n      str = dayNames[str]; //normalize it\n      if (str) {\n        repeat.filter.weekDays[str] = true;\n        repeat.choose = parseLogic(m);\n        doc = doc.remove(m);\n        return { repeat: repeat }\n      }\n    }\n\n    // 'every weekday'\n    m = doc.match(\n      '[<logic>(every|any|each|a)] [<day>(weekday|week day|weekend|weekend day)] (starting|beginning|commencing)?'\n    );\n    if (m.found) {\n      let repeat = { interval: { day: 1 }, filter: { weekDays: {} } };\n      let day = m.groups('day');\n      if (day.has('(weekday|week day)')) {\n        repeat.filter.weekDays = {\n          monday: true,\n          tuesday: true,\n          wednesday: true,\n          thursday: true,\n          friday: true,\n        };\n      } else if (day.has('(weekend|weekend day)')) {\n        repeat.filter.weekDays = {\n          saturday: true,\n          sunday: true,\n        };\n      }\n      repeat.choose = parseLogic(m);\n      doc = doc.remove(m);\n      return { repeat: repeat }\n    }\n\n    // mondays\n    m = doc.match(\n      '[<day>(mondays|tuesdays|wednesdays|thursdays|fridays|saturdays|sundays)] (at|near|after)? [<time>#Time+?]'\n    );\n    if (m.found) {\n      let repeat = { interval: { day: 1 }, filter: { weekDays: {} } };\n      let str = m.groups('day').text('reduced');\n      str = str.replace(/s$/, '');\n      str = dayNames[str]; //normalize it\n      if (str) {\n        repeat.filter.weekDays[str] = true;\n        repeat.choose = 'OR';\n        doc = doc.remove(m);\n        let time = m.groups('time');\n        if (time.found) {\n          repeat.time = parseTime(time, context);\n        }\n        return { repeat: repeat }\n      }\n    }\n    return null\n  };\n\n  // somewhat-intellegent response to end-before-start situations\n  const reverseMaybe = function (obj) {\n    let start = obj.start;\n    let end = obj.end;\n    if (start.d.isAfter(end.d)) {\n      // wednesday to sunday -> move end up a week\n      if (start.isWeekDay && end.isWeekDay) {\n        obj.end.next();\n        return obj\n      }\n      // else, reverse them\n      let tmp = start;\n      obj.start = end;\n      obj.end = tmp;\n    }\n    return obj\n  };\n\n  const moveToPM = function (obj) {\n    let start = obj.start;\n    let end = obj.end;\n    if (start.d.isAfter(end.d)) {\n      if (end.d.hour() < 10) {\n        end.d = end.d.ampm('pm');\n      }\n    }\n    return obj\n  };\n\n  var doTwoTimes = [\n    {\n      // '3pm to 4pm january 5th'\n      match: '[<from>#Time+] (to|until|upto|through|thru|and) [<to>#Time+ #Date+]',\n      desc: '3pm to 4pm january 5th',\n      parse: (m, context) => {\n        let from = m.groups('from');\n        let to = m.groups('to');\n        let end = parseDate(to, context);\n        if (end) {\n          let start = end.clone();\n          start.applyTime(from.text('implicit'));\n          if (start) {\n            let obj = {\n              start: start,\n              end: end,\n              unit: 'time',\n            };\n            if (/(am|pm)/.test(to) === false) {\n              obj = moveToPM(obj);\n            }\n            obj = reverseMaybe(obj);\n            return obj\n          }\n        }\n        return null\n      },\n    },\n\n    {\n      // 'january from 3pm to 4pm'\n      match: '[<main>#Date+] from [<a>#Time] (to|until|upto|through|thru|and) [<b>#Time+]',\n      desc: 'january from 3pm to 4pm',\n      parse: (m, context) => {\n        let main = m.groups('main');\n        let a = m.groups('a');\n        let b = m.groups('b');\n        main = parseDate(main, context);\n        if (main) {\n          main.applyTime(a.text('implicit'));\n          let end = main.clone();\n          end.applyTime(b.text('implicit'));\n          if (end) {\n            let obj = {\n              start: main,\n              end: end,\n              unit: 'time',\n            };\n            if (/(am|pm)/.test(b.text()) === false) {\n              obj = moveToPM(obj);\n            }\n            obj = reverseMaybe(obj);\n            return obj\n          }\n        }\n        return null\n      },\n    },\n    {\n      // 'january 5th 3pm to 4pm'\n      match: '[<from>#Date+] (to|until|upto|through|thru|and) [<to>#Time+]',\n      desc: 'january from 3pm to 4pm',\n      parse: (m, context) => {\n        let from = m.groups('from');\n        let to = m.groups('to');\n        from = parseDate(from, context);\n        if (from) {\n          let end = from.clone();\n          end.applyTime(to.text('implicit'));\n          if (end) {\n            let obj = {\n              start: from,\n              end: end,\n              unit: 'time',\n            };\n            if (/(am|pm)/.test(to.text()) === false) {\n              obj = moveToPM(obj);\n            }\n            obj = reverseMaybe(obj);\n            return obj\n          }\n        }\n        return null\n      },\n    },\n  ];\n\n  // these are dates that produce two seperate dates,\n  // and not a start-end range.\n  var doCombos = [\n    {\n      // 'jan, or march 1999'\n      match: '^during? #Month+ (or|and) #Month [<year>#Year]?',\n      desc: 'march or june',\n      parse: (m, context) => {\n        let before = m.match('^during? [#Month]', 0);\n        m = m.not('(or|and)');\n        let start = parseDate(before, context);\n        if (start) {\n          let result = [\n            {\n              start: start,\n              end: start.clone().end(),\n              unit: start.unit,\n            },\n          ];\n          // add more run-on numbers?\n          let more = m.not(before);\n          if (more.found) {\n            more.match('#Month').forEach((month) => {\n              let s = parseDate(month, context);\n              // s.d = s.d.month(month.text('reduced'))\n              result.push({\n                start: s,\n                end: s.clone().end(),\n                unit: s.unit,\n              });\n            });\n          }\n          // apply the year\n          let year = m.match('#Year$');\n          if (year.found) {\n            year = year.text('reduced');\n            result.forEach((o) => {\n              o.start.d = o.start.d.year(year);\n              o.end.d = o.end.d.year(year);\n            });\n          }\n          return result\n        }\n        return null\n      },\n    },\n    {\n      // 'jan 5 or 8'  - (one month, shared dates)\n      match: '^#Month #Value+ (or|and)? #Value$',\n      desc: 'jan 5 or 8',\n      parse: (m, context) => {\n        m = m.not('(or|and)');\n        let before = m.match('^#Month #Value');\n        let start = parseDate(before, context);\n        if (start) {\n          let result = [\n            {\n              start: start,\n              end: start.clone().end(),\n              unit: start.unit,\n            },\n          ];\n          // add more run-on numbers?\n          let more = m.not(before);\n          if (more.found) {\n            more.match('#Value').forEach((v) => {\n              let s = start.clone();\n              s.d = s.d.date(v.text('reduced'));\n              result.push({\n                start: s,\n                end: s.clone().end(),\n                unit: s.unit,\n              });\n            });\n          }\n          return result\n        }\n        return null\n      },\n    },\n    {\n      // 'jan 5, 8'  - (similar to above)\n      match: '^#Month+ #Value #Value+$',\n      desc: 'jan 5 8',\n      parse: (m, context) => {\n        let month = m.match('#Month');\n        let year = m.match('#Year');\n        m = m.not('#Year');\n        let results = [];\n        m.match('#Value').forEach((val) => {\n          val = val.clone();\n          let d = val.prepend(month.text());\n          if (year.found) {\n            d.append(year);\n          }\n          let start = parseDate(d, context);\n          if (start) {\n            results.push({\n              start: start,\n              end: start.clone().end(),\n              unit: start.unit,\n            });\n          }\n        });\n        return results\n      },\n    },\n    {\n      // '5 or 8 of jan'  - (one month, shared dates)\n      match: '^#Value+ (or|and)? #Value of #Month #Year?$',\n      desc: '5 or 8 of Jan',\n      parse: (m, context) => {\n        let month = m.match('#Month');\n        let year = m.match('#Year');\n        m = m.not('#Year');\n        let results = [];\n        m.match('#Value').forEach((val) => {\n          let d = val.append(month);\n          if (year.found) {\n            d.append(year);\n          }\n          let start = parseDate(d, context);\n          if (start) {\n            results.push({\n              start: start,\n              end: start.clone().end(),\n              unit: start.unit,\n            });\n          }\n        });\n        return results\n      },\n    },\n\n    {\n      // 'june or july 2019'\n      match: '^!(between|from|during)? [<from>#Date+] (and|or) [<to>#Date+]$',\n      desc: 'A or B',\n      parse: (m, context) => {\n        let fromDoc = m.groups('from');\n        let toDoc = m.groups('to');\n        let from = parseDate(fromDoc, context);\n        let to = parseDate(toDoc, context);\n        if (from && to) {\n          return [\n            {\n              start: from,\n              end: from.clone().end(),\n            },\n            {\n              start: to,\n              end: to.clone().end(),\n            },\n          ]\n        }\n        return null\n      },\n    },\n  ];\n\n  var doDateRange = [\n\n\n    {\n      // month-ranges have some folksy rules\n      match: 'between [<start>#Month] and [<end>#Month] [<year>#Year?]',\n      desc: 'between march and jan',\n      parse: (m, context) => {\n        let { start, end, year } = m.groups();\n        let y = year && year.found ? Number(year.text('reduced')) : context.today.year();\n        let obj = { month: start.text('reduced'), year: y };\n        let left = new Month(obj, null, context).start();\n        obj = { month: end.text('reduced'), year: y };\n        let right = new Month(obj, null, context).start();\n        if (left.d.isAfter(right.d)) {\n          return {\n            start: right,\n            end: left,\n          }\n        }\n        return {\n          start: left,\n          end: right,\n        }\n      },\n    },\n\n    {\n      // two explicit dates - 'between friday and sunday'\n      match: 'between [<start>.+] and [<end>.+]',\n      desc: 'between friday and sunday',\n      parse: (m, context) => {\n        let start = m.groups('start');\n        start = parseDate(start, context);\n        let end = m.groups('end');\n        end = parseDate(end, context);\n        if (start && end) {\n          end = end.before();\n          return {\n            start: start,\n            end: end,\n          }\n        }\n        return null\n      },\n    },\n\n    {\n      // two months, no year - 'june 5 to june 7'\n      match: '[<from>#Month #Value] (to|through|thru) [<to>#Month #Value] [<year>#Year?]',\n      desc: 'june 5 to june 7',\n      parse: (m, context) => {\n        let res = m.groups();\n        let start = res.from;\n        if (res.year) {\n          start = start.append(res.year);\n        }\n        start = parseDate(start, context);\n        if (start) {\n          let end = res.to;\n          if (res.year) {\n            end = end.append(res.year);\n          }\n          end = parseDate(end, context);\n          if (end) {\n            // assume end is after start\n            if (start.d.isAfter(end.d)) {\n              end.d = end.d.add(1, 'year');\n            }\n            let obj = {\n              start: start,\n              end: end.end(),\n            };\n            return obj\n          }\n        }\n        return null\n      },\n    },\n    {\n      // one month, one year, first form - 'january 5 to 7 1998'\n      match: '[<month>#Month] [<from>#Value] (to|through|thru) [<to>#Value] of? [<year>#Year]',\n      desc: 'january 5 to 7 1998',\n      parse: (m, context) => {\n        let { month, from, to, year } = m.groups();\n        let year2 = year.clone();\n        let start = from.prepend(month).append(year);\n        start = parseDate(start, context);\n        if (start) {\n          let end = to.prepend(month).append(year2);\n          end = parseDate(end, context);\n          return {\n            start: start,\n            end: end.end(),\n          }\n        }\n        return null\n      },\n    },\n    {\n      // one month, one year, second form - '5 to 7 of january 1998'\n      match: '[<from>#Value] (to|through|thru) [<to>#Value of? #Month #Date+?]',\n      desc: '5 to 7 of january 1998',\n      parse: (m, context) => {\n        let to = m.groups('to');\n        to = parseDate(to, context);\n        if (to) {\n          let fromDate = m.groups('from');\n          let from = to.clone();\n          from.d = from.d.date(fromDate.text('implicit'));\n          return {\n            start: from,\n            end: to.end(),\n          }\n        }\n        return null\n      },\n    },\n\n    {\n      // one month, no year - 'january 5 to 7'\n      match: '[<from>#Month #Value] (to|through|thru) [<to>#Value]',\n      desc: 'january 5 to 7',\n      parse: (m, context) => {\n        let from = m.groups('from');\n        from = parseDate(from, context);\n        if (from) {\n          let toDate = m.groups('to');\n          let to = from.clone();\n          to.d = to.d.date(toDate.text('implicit'));\n          return {\n            start: from,\n            end: to.end(),\n          }\n        }\n        return null\n      },\n    },\n\n    {\n      // 'january to may 2020'\n      match: 'from? [<from>#Month] (to|until|upto|through|thru) [<to>#Month] [<year>#Year]',\n      desc: 'january to may 2020',\n      parse: (m, context) => {\n        let from = m.groups('from');\n        let year = m.groups('year').numbers().get()[0];\n        let to = m.groups('to');\n        from = parseDate(from, context);\n        to = parseDate(to, context);\n        from.d = from.d.year(year);\n        to.d = to.d.year(year);\n        if (from && to) {\n          let obj = {\n            start: from,\n            end: to.end(),\n          };\n          // reverse the order?\n          obj = reverseMaybe(obj);\n          return obj\n        }\n        return null\n      },\n    },\n\n    {\n      // in 2 to 4 weeks\n      match: '^in [<min>#Value] to [<max>#Value] [<unit>(days|weeks|months|years)]',\n      desc: 'in 2 to 4 weeks',\n      parse: (m, context) => {\n        const { min, max, unit } = m.groups();\n\n        let start = new CalendarDate(context.today, null, context);\n        let end = start.clone();\n\n        const duration = unit.text('implicit');\n        start = start.applyShift({ [duration]: min.numbers().get()[0] });\n        end = end.applyShift({ [duration]: max.numbers().get()[0] });\n\n        return {\n          start: start,\n          end: end.end(),\n        }\n      },\n    },\n    {\n      // 2 to 4 weeks ago\n      match:\n        '[<min>#Value] to [<max>#Value] [<unit>(days|weeks|months|years)] (ago|before|earlier|prior)',\n      desc: '2 to 4 weeks ago',\n      parse: (m, context) => {\n        const { min, max, unit } = m.groups();\n\n        let start = new CalendarDate(context.today, null, context);\n        let end = start.clone();\n\n        const duration = unit.text('implicit');\n        start = start.applyShift({ [duration]: -max.numbers().get()[0] });\n        end = end.applyShift({ [duration]: -min.numbers().get()[0] });\n\n        return {\n          start: start,\n          end: end.end(),\n        }\n      },\n    },\n\n\n\n    {\n      // implicit range\n      match: '^until [<to>#Date+]',\n      desc: 'until christmas',\n      parse: (m, context) => {\n        let to = m.groups('to');\n        to = parseDate(to, context);\n        if (to) {\n          let start = new CalendarDate(context.today, null, context);\n          return {\n            start: start,\n            end: to.start(),\n          }\n        }\n        return null\n      },\n    },\n\n    {\n      // second half of march\n      match: '[<part>(1st|initial|2nd|latter)] half of [<month>#Month] [<year>#Year?]',\n      desc: 'second half of march',\n      parse: (m, context) => {\n        const { part, month, year } = m.groups();\n        let obj = {\n          month: month.text('reduced'),\n          date: 1, //assume 1st\n          year: year && year.found ? year.text('reduced') : context.today.year()\n        };\n        let unit = new Month(obj, null, context);\n        if (part.has('(1st|initial)')) {\n          return {\n            start: unit.start(),\n            end: unit.clone().middle(),\n          }\n        }\n        return {\n          start: unit.middle(),\n          end: unit.clone().end(),\n        }\n      },\n    },\n  ];\n\n  const punt = function (unit, context) {\n    unit = unit.applyShift(context.punt);\n    return unit\n  };\n\n  var doOneDate = [\n    {\n      // 'from A to B'\n      match: 'from? [<from>.+] (to|until|upto|through|thru) [<to>.+]',\n      desc: 'from A to B',\n      parse: (m, context) => {\n        let from = m.groups('from');\n        let to = m.groups('to');\n        from = parseDate(from, context);\n        to = parseDate(to, context);\n        if (from && to) {\n          let obj = {\n            start: from,\n            end: to.end(),\n          };\n          obj = reverseMaybe(obj);\n          return obj\n        }\n        return null\n      },\n    },\n\n    {\n      // 'before june'\n      match: '^due? (by|before) [.+]',\n      desc: 'before june',\n      parse: (m, context) => {\n        m = m.group(0);\n        let unit = parseDate(m, context);\n        if (unit) {\n          let start = new Unit(context.today, null, context);\n          if (start.d.isAfter(unit.d)) {\n            start = unit.clone().applyShift({ weeks: -2 });\n          }\n          // end the night before\n          let end = unit.clone().applyShift({ day: -1 });\n          return {\n            start: start,\n            end: end.end(),\n          }\n        }\n        return null\n      },\n    },\n\n    {\n      // 'in june'\n      match: '^(on|in|at|@|during) [.+]',\n      desc: 'in june',\n      parse: (m, context) => {\n        m = m.group(0);\n        let unit = parseDate(m, context);\n        if (unit) {\n          return { start: unit, end: unit.clone().end(), unit: unit.unit }\n        }\n        return null\n      },\n    },\n    {\n      // 'after june'\n      match: '^(after|following) [.+]',\n      desc: 'after june',\n      parse: (m, context) => {\n        m = m.group(0);\n        let unit = parseDate(m, context);\n        if (unit) {\n          unit = unit.after();\n          return {\n            start: unit.clone(),\n            end: punt(unit.clone(), context),\n          }\n        }\n        return null\n      },\n    },\n    {\n      // 'middle of'\n      match: '^(middle|center|midpoint) of [.+]',\n      desc: 'middle of',\n      parse: (m, context) => {\n        m = m.group(0);\n        let unit = parseDate(m, context);\n        let start = unit.clone().middle();\n        let end = unit.beforeEnd();\n        if (unit) {\n          return {\n            start: start,\n            end: end,\n          }\n        }\n        return null\n      },\n    },\n    {\n      // 'tuesday after 5pm'\n      match: '.+ after #Time+$',\n      desc: 'tuesday after 5pm',\n      parse: (m, context) => {\n        let unit = parseDate(m, context);\n        if (unit) {\n          let start = unit.clone();\n          let end = unit.end();\n          return {\n            start: start,\n            end: end,\n            unit: 'time',\n          }\n        }\n        return null\n      },\n    },\n    {\n      // 'tuesday before noon'\n      match: '.+ before #Time+$',\n      desc: 'tuesday before noon',\n      parse: (m, context) => {\n        let unit = parseDate(m, context);\n        if (unit) {\n          let end = unit.clone();\n          let start = unit.start();\n          if (unit) {\n            return {\n              start: start,\n              end: end,\n              unit: 'time',\n            }\n          }\n        }\n        return null\n      },\n    },\n  ];\n\n  const ranges = [].concat(doTwoTimes, doCombos, doDateRange, doOneDate);\n\n  const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env;\n  const log = msg => {\n    if (env.DEBUG_DATE) {\n      console.log(`\\n  \\x1b[32m ${msg} \\x1b[0m`); // eslint-disable-line\n    }\n  };\n\n  const isArray = function (arr) {\n    return Object.prototype.toString.call(arr) === '[object Array]'\n  };\n\n  //else, try whole thing, non ranges\n  const tryFull = function (doc, context) {\n    let res = {\n      start: null,\n      end: null,\n    };\n    if (!doc.found) {\n      return res\n    }\n    let unit = parseDate(doc, context);\n    if (unit) {\n      let end = unit.clone().end();\n      res = {\n        start: unit,\n        end: end,\n        unit: unit.setTime ? 'time' : unit.unit,\n      };\n    }\n    return res\n  };\n\n  const tryRanges = function (doc, context) {\n\n    // try each template in order\n    for (let i = 0; i < ranges.length; i += 1) {\n      let fmt = ranges[i];\n      let m = doc.match(fmt.match);\n      if (m.found) {\n        log(`  ---[${fmt.desc}]---`);\n        let res = fmt.parse(m, context);\n        if (res !== null) {\n          // did it return more than one date?\n          if (!isArray(res)) {\n            res = [res];\n          }\n          return res\n        }\n      }\n    }\n    return null\n  };\n\n  // loop thru each range template\n  const parseRanges = function (m, context) {\n    // parse-out 'every week ..'\n    let repeats = parseIntervals(m, context) || {};\n    // try picking-apart ranges\n    let found = tryRanges(m, context);\n    if (!found) {\n      found = [tryFull(m, context)];\n    }\n    // add the repeat info to each date\n    found = found.map((o) => Object.assign({}, repeats, o));\n    // ensure start is not after end\n    found.forEach((res) => {\n      if (res.start && res.end && res.start.d.epoch > res.end.d.epoch) {\n        res.start = res.start.start();\n      }\n    });\n    return found\n  };\n\n  const normalize$1 = function (doc) {\n\n    if (!doc.numbers) {\n      console.warn(`\\nCompromise warning: compromise/three must be used with compromise-dates plugin\\n`); // eslint-disable-line\n    }\n\n    // normalize doc\n    doc = doc.clone();\n    doc.numbers().toNumber();\n\n    // expand 'aug 20-21'\n    doc.contractions().expand();\n\n    // 'week-end'\n    doc.replace('week end', 'weekend', true).tag('Date');\n    // 'a up to b'\n    doc.replace('up to', 'upto', true).tag('Date');\n    // 'a year ago'\n    if (doc.has('once (a|an) #Duration') === false) {\n      doc.match('[(a|an)] #Duration', 0).replaceWith('1', { tags: true }).compute('lexicon');\n    }\n    // jan - feb\n    doc.match('@hasDash').insertAfter('to').tag('Date');\n    return doc\n  };\n\n  const parse$2 = function (doc, context) {\n    // normalize context\n    context = context || {};\n    if (context.timezone === false) {\n      context.timezone = 'UTC';\n    }\n    context.today = context.today || main.now(context.timezone);\n    context.today = main(context.today, context.timezone);\n\n    doc = normalize$1(doc);\n\n    let res = parseRanges(doc, context);\n    return res\n  };\n\n  const getDuration = function (range) {\n    let end = range.end.d.add(1, 'millisecond');\n    let diff = end.since(range.start.d).diff;\n    delete diff.milliseconds;\n    delete diff.seconds;\n    return diff\n  };\n\n  const toJSON = function (range) {\n    if (!range.start) {\n      return {\n        start: null,\n        end: null,\n        timezone: null,\n        duration: {},\n        // range: null\n      }\n    }\n    let diff = range.end ? getDuration(range) : {};\n    return {\n      start: range.start.format('iso'),\n      end: range.end ? range.end.format('iso') : null,\n      timezone: range.start.d.format('timezone'),\n      duration: diff,\n      // range: getRange(diff)\n    }\n  };\n\n  const quickDate = function (view, str) {\n    let tmp = view.fromText(str);\n    let found = parse$2(tmp, view.opts)[0];\n    if (!found || !found.start || !found.start.d) {\n      return null\n    }\n    return found.start.d\n  };\n\n  const api$2 = function (View) {\n    class Dates extends View {\n      constructor(document, pointer, groups, opts = {}) {\n        super(document, pointer, groups);\n        this.viewType = 'Dates';\n        this.opts = Object.assign({}, opts);\n      }\n\n      get(n) {\n        let all = [];\n        this.forEach(m => {\n          parse$2(m, this.opts).forEach(res => {\n            let json = toJSON(res);\n            if (json.start) {\n              all.push(json);\n            }\n          });\n        });\n        if (typeof n === 'number') {\n          return all[n]\n        }\n        return all\n      }\n\n      json(opts = {}) {\n        return this.map(m => {\n          let json = m.toView().json(opts)[0] || {};\n          if (opts && opts.dates !== false) {\n            let parsed = parse$2(m, this.opts);\n            if (parsed.length > 0) {\n              json.dates = toJSON(parsed[0]);\n            }\n          }\n          return json\n        }, [])\n      }\n\n      /** replace date terms with a formatted date */\n      format(fmt) {\n        let found = this;\n        let res = found.map(m => {\n          let obj = parse$2(m, this.opts)[0] || {};\n          if (obj.start) {\n            let start = obj.start.d;\n            let str = start.format(fmt);\n            if (obj.end) {\n              let end = obj.end.d;\n              if (start.isSame(end, 'day') === false) {\n                str += ' to ' + end.format(fmt);\n              }\n            }\n            m.replaceWith(str);\n          }\n          return m\n        });\n        return new Dates(this.document, res.pointer, null, this.opts)\n      }\n\n      /** return only dates occuring before a given date  */\n      isBefore(iso) {\n        let pivot = quickDate(this, iso);\n        return this.filter(m => {\n          let obj = parse$2(m, this.opts)[0] || {};\n          return obj.start && obj.start.d && obj.start.d.isBefore(pivot)\n        })\n      }\n      /** return only dates occuring after a given date  */\n      isAfter(iso) {\n        let pivot = quickDate(this, iso);\n        return this.filter(m => {\n          let obj = parse$2(m, this.opts)[0] || {};\n          return obj.start && obj.start.d && obj.start.d.isAfter(pivot)\n        })\n      }\n      /** return only dates occuring after a given date  */\n      isSame(unit, iso) {\n        let pivot = quickDate(this, iso);\n        return this.filter(m => {\n          let obj = parse$2(m, this.opts)[0] || {};\n          return obj.start && obj.start.d && obj.start.d.isSame(pivot, unit)\n        })\n      }\n    }\n\n    View.prototype.dates = function (opts) {\n      let m = findDate(this);\n      return new Dates(this.document, m.pointer, null, opts)\n    };\n  };\n\n  const normalize = function (doc) {\n    doc = doc.clone();\n    // 'four thirty' -> 4:30\n    let m = doc.match('#Time+').match('[<hour>#Cardinal] [<min>(thirty|fifteen)]');\n    if (m.found) {\n      let hour = m.groups('hour');\n      let min = m.groups('min');\n      let num = hour.values().get()[0];\n      if (num > 0 && num <= 12) {\n        let mins = min.values().get()[0];\n        let str = `${num}:${mins}`;\n        m.replaceWith(str);\n      }\n    }\n\n    if (!doc.numbers) {\n      console.warn(`Warning: compromise .numbers() not loaded.\\n   This plugin requires >= v14`); //eslint-disable-line\n    } else {\n      // doc.numbers().normalize()\n      // convert 'two' to 2\n      let num = doc.numbers();\n      num.toNumber();\n      num.toCardinal(false);\n    }\n    // expand 'aug 20-21'\n    if (doc.contractions) {\n      doc.contractions().expand();\n    }\n    // remove adverbs\n    doc.adverbs().remove();\n    // 'week-end'\n    doc.replace('week end', 'weekend', true).tag('Date');\n    // 'a up to b'\n    doc.replace('up to', 'upto', true).tag('Date');\n    // 'a year ago'\n    if (doc.has('once (a|an) #Duration') === false) {\n      doc.match('[(a|an)] #Duration', 0).replaceWith('1').compute('lexicon');\n      // tagger(doc)\n    }\n    // 'in a few years'\n    // m = doc.match('in [a few] #Duration')\n    // if (m.found) {\n    //   m.groups('0').replaceWith('2')\n    //   tagger(doc)\n    // }\n    // jan - feb\n    doc.match('@hasDash').insertAfter('to').tag('Date');\n    return doc\n  };\n\n  const find = function (doc) {\n    return doc.match('#Time+ (am|pm)?')\n  };\n\n  const parse$1 = function (m, context = {}) {\n    m = normalize(m);\n    let res = parseTime(m, context);\n    if (!res.result) {\n      return { time: null, '24h': null }\n    }\n    let s = main.now().time(res.result);\n    return {\n      time: res.result,\n      '24h': s.format('time-24'),\n      hour: s.hour(),\n      minute: s.minute(),\n    }\n  };\n\n  const getNth = (doc, n) => (typeof n === 'number' ? doc.eq(n) : doc);\n\n  const api$1 = function (View) {\n    class Times extends View {\n      constructor(document, pointer, groups, opts) {\n        super(document, pointer, groups);\n        this.viewType = 'Times';\n        this.opts = opts || {};\n      }\n\n      format(fmt) {\n        let found = this;\n        let res = found.map(m => {\n          let obj = parse$1(m) || {};\n          if (obj.time) {\n            let s = main.now().time(obj.time);\n            let str = obj.time;\n            if (fmt === '24h') {\n              str = s.format('time-24');\n            } else {\n              str = s.format(fmt);\n            }\n            m = m.not('#Preposition');\n            m.replaceWith(str);\n          }\n          return m\n        });\n        return new Times(this.document, res.pointer, null, this.opts)\n      }\n\n      get(n) {\n        return getNth(this, n).map(parse$1)\n      }\n\n      json(opts = {}) {\n        return this.map(m => {\n          let json = m.toView().json(opts)[0] || {};\n          if (opts && opts.time !== false) {\n            json.time = parse$1(m);\n          }\n          return json\n        }, [])\n      }\n    }\n\n    View.prototype.times = function (n) {\n      let m = find(this);\n      m = getNth(m, n);\n      return new Times(this.document, m.pointer)\n    };\n  };\n\n  const known = {\n    century: true,\n    day: true,\n    decade: true,\n    hour: true,\n    millisecond: true,\n    minute: true,\n    month: true,\n    second: true,\n    weekend: true,\n    week: true,\n    year: true,\n    quarter: true,\n    season: true,\n  };\n\n  let mapping = {\n    m: 'minute',\n    h: 'hour',\n    hr: 'hour',\n    min: 'minute',\n    sec: 'second',\n    'week end': 'weekend',\n    wk: 'week',\n    yr: 'year',\n    qtr: 'quarter',\n  };\n  // add plurals\n  Object.keys(mapping).forEach((k) => {\n    mapping[k + 's'] = mapping[k];\n  });\n\n  const parse = function (doc) {\n    let duration = {};\n    //parse '8 minutes'\n    let twoWord = doc.match('#Value+ #Duration');\n    if (twoWord.found) {\n      twoWord.forEach((m) => {\n        let num = m.numbers().get()[0];\n        let unit = m.terms().last().text('reduced');\n        unit = unit.replace(/ies$/, 'y');\n        unit = unit.replace(/s$/, '');\n        // turn 'mins' into 'minute'\n        if (mapping.hasOwnProperty(unit)) {\n          unit = mapping[unit];\n        }\n        if (known.hasOwnProperty(unit) && num !== null) {\n          duration[unit] = num;\n        }\n      });\n    } else {\n      let oneWord = doc.match('(#Duration && /[0-9][a-z]+$/)');\n      if (oneWord.found) {\n        let str = doc.text();\n        let num = str.match(/([0-9]+)/);\n        let unit = str.match(/([a-z]+)/);\n        if (num && unit) {\n          num = num[0] || null;\n          unit = unit[0] || null;\n          if (mapping.hasOwnProperty(unit)) {\n            unit = mapping[unit];\n          }\n          if (known.hasOwnProperty(unit) && num !== null) {\n            duration[unit] = Number(num);\n          }\n        }\n      }\n    }\n    return duration\n  };\n\n  const addDurations = function (View) {\n    /** phrases like '2 months', or '2mins' */\n    class Durations extends View {\n      constructor(document, pointer, groups) {\n        super(document, pointer, groups);\n        this.context = {};\n      }\n      /** overload the original json with duration information */\n      json(opts = {}) {\n        return this.map(m => {\n          let json = m.toView().json(opts)[0] || {};\n          if (opts && opts.duration !== false) {\n            json.duration = parse(m);\n          }\n          return json\n        }, [])\n      }\n      /** easy getter for the time */\n      get(options) {\n        let arr = [];\n        this.forEach(doc => {\n          let res = parse(doc);\n          arr.push(res);\n        });\n        if (typeof options === 'number') {\n          return arr[options]\n        }\n        return arr\n      }\n    }\n\n    /** phrases like '2 months' */\n    View.prototype.durations = function (n) {\n      let m = this.match('#Value+ #Duration (and? #Value+ #Duration)?');\n\n      // not 'in 20 minutes'\n      m = m.notIf('#DateShift');\n\n      if (typeof n === 'number') {\n        m = m.eq(n);\n      }\n      return new Durations(this.document, m.pointer)\n    };\n  };\n\n  const api = function (View) {\n    api$2(View);\n    api$1(View);\n    addDurations(View);\n  };\n\n  //ambiguous 'may' and 'march'\n  // const preps = '(in|by|before|during|on|until|after|of|within|all)' //6\n  // const thisNext = '(last|next|this|previous|current|upcoming|coming)' //2\n  const sections$1 = '(start|end|middle|starting|ending|midpoint|beginning)'; //2\n  // const seasons = '(spring|summer|winter|fall|autumn)'\n\n  //ensure a year is approximately typical for common years\n  //please change in one thousand years\n  const tagYear = (m, reason) => {\n    if (m.found !== true) {\n      return\n    }\n    m.forEach((p) => {\n      let str = p.text('reduced');\n      let num = parseInt(str, 10);\n      if (num && num > 1000 && num < 3000) {\n        p.tag('Year', reason);\n      }\n    });\n  };\n  //same, but for less-confident values\n  const tagYearSafe = (m, reason) => {\n    if (m.found !== true) {\n      return\n    }\n    m.forEach((p) => {\n      let str = p.text('reduced');\n      let num = parseInt(str, 10);\n      if (num && num > 1900 && num < 2030) {\n        p.tag('Year', reason);\n      }\n    });\n  };\n\n  const tagDates = function (doc) {\n\n    doc\n      .match('(march|april|may) (and|to|or|through|until)? (march|april|may)')\n      .tag('Date')\n      .match('(march|april|may)')\n      .tag('Month', 'march|april|may');\n    // april should almost-always be a date\n    // doc.match('[april] !#LastName?', 0).tag('Month', 'april')\n\n\n    //year/cardinal tagging\n    let cardinal = doc.if('#Cardinal');\n    if (cardinal.found === true) {\n      let v = cardinal.match(`#Date #Value [#Cardinal]`, 0);\n      tagYear(v, 'date-value-year');\n      //scoops up a bunch\n      v = cardinal.match(`#Date [#Cardinal]`, 0);\n      tagYearSafe(v, 'date-year');\n      //middle of 1999\n      v = cardinal.match(`${sections$1} of [#Cardinal]`);\n      tagYearSafe(v, 'section-year');\n      //feb 8 2018\n      v = cardinal.match(`#Month #Value [#Cardinal]`, 0);\n      tagYear(v, 'month-value-year');\n      //feb 8 to 10th 2018\n      v = cardinal.match(`#Month #Value to #Value [#Cardinal]`, 0);\n      tagYear(v, 'month-range-year');\n      //in 1998\n      v = cardinal.match(`(in|of|by|during|before|starting|ending|for|year|since) [#Cardinal]`, 0);\n      tagYear(v, 'in-year-1');\n      //q2 2009\n      v = cardinal.match('(q1|q2|q3|q4) [#Cardinal]', 0);\n      tagYear(v, 'in-year-2');\n      //2nd quarter 2009\n      v = cardinal.match('#Ordinal quarter of? [#Cardinal]', 0);\n      tagYear(v, 'in-year-3');\n      //in the year 1998\n      v = cardinal.match('the year [#Cardinal]', 0);\n      tagYear(v, 'in-year-4');\n      //it was 1998\n      v = cardinal.match('it (is|was) [#Cardinal]', 0);\n      tagYearSafe(v, 'in-year-5');\n      // re-tag this part\n      cardinal.match(`${sections$1} of #Year`).tag('Date');\n      //between 1999 and 1998\n      let m = cardinal.match('between [#Cardinal] and [#Cardinal]');\n      tagYear(m.groups('0'), 'between-year-and-year-1');\n      tagYear(m.groups('1'), 'between-year-and-year-2');\n    }\n\n    //'2020' bare input\n    let m = doc.match('^/^20[012][0-9]$/$');\n    tagYearSafe(m, '2020-ish');\n\n    return doc\n  };\n\n  // 3-4 can be a time-range, sometimes\n  const tagTimeRange = function (m, reason) {\n    if (m.found) {\n      m.tag('Date', reason);\n      let nums = m.numbers().lessThan(31).ifNo('#Year');\n      nums.tag('#Time', reason);\n    }\n  };\n\n  //\n  const timeTagger = function (doc) {\n\n    let date = doc.if('#Date');\n    if (date.found) {\n      // ==time-ranges=\n      //   --number-ranges--\n      let range = date.if('#NumberRange');\n      if (range.found) {\n        // 3-4 on tuesday\n        let m = range.match('[#NumberRange+] (on|by|at)? #WeekDay', 0);\n        tagTimeRange(m, '3-4-tuesday');\n        // 3-4 on march 2nd\n        m = range.match('[#NumberRange+] (on|by|at)? #Month #Value', 0);\n        tagTimeRange(m, '3-4 mar 3');\n        // 3-4pm\n        m = range.match('[#NumberRange] to (#NumberRange && #Time)', 0);\n        tagTimeRange(m, '3-4pm');\n        // 3pm-5\n        m = range.match('(#NumberRange && #Time) to [#NumberRange]', 0);\n        tagTimeRange(m, '3pm-4');\n      }\n      // from 4 to 5 tomorrow\n      let m = date.match('(from|between) #Cardinal and #Cardinal (in|on)? (#WeekDay|tomorrow|yesterday)');\n      tagTimeRange(m, 'from 9-5 tues');\n      // 9 to 5 tomorrow\n      m = doc.match('#Cardinal to #Cardinal (#WeekDay|tomorrow|yesterday)');\n      tagTimeRange(m, '9-5 tues');\n      // from 4 to 5pm\n      m = date.match('(from|between) [#NumericValue] (to|and) #Time', 0).tag('Time', '4-to-5pm');\n      tagTimeRange(m, 'from 9-5pm');\n      // wed from 3 to 4\n      m = date.match('(#WeekDay|tomorrow|yesterday) (from|between)? (#Cardinal|#Time) (and|to) (#Cardinal|#Time)');\n      tagTimeRange(m, 'tues 3-5');\n      // june 5 from 3 to 4\n      m = date.match('#Month #Value+ (from|between) [<time>(#Cardinal|#Time) (and|to) (#Cardinal|#Time)]').group('time');\n      tagTimeRange(m, 'sep 4 from 9-5');\n      // 3pm to 4 on wednesday\n      m = date.match('#Time to #Cardinal on? #Date');\n      tagTimeRange(m, '3pm-4 wed');\n      // 3 to 4pm on wednesday\n      m = date.match('#Cardinal to #Time on? #Date');\n      tagTimeRange(m, '3-4pm wed');\n      // 3 to 4 on wednesday\n      m = date.match('#Cardinal to #Cardinal on? (#WeekDay|#Month #Value)');\n      tagTimeRange(m, '3-4 wed');\n      // 3 to 4 pm\n      // m = date.match('^#Cardinal to #Time')\n      // tagTimeRange(m, '3 to 4pm')\n    }\n    return doc\n  };\n\n  // timezone abbreviations\n  // (from spencermountain/timezone-soft)\n  const zones = [\n    'act',\n    'aft',\n    'akst',\n    'anat',\n    'art',\n    'azot',\n    'azt',\n    'bnt',\n    'bot',\n    'bt',\n    'cast',\n    'cat',\n    'cct',\n    'chast',\n    'chut',\n    'ckt',\n    'cvt',\n    'cxt',\n    'davt',\n    'eat',\n    'ect',\n    'fjt',\n    'fkst',\n    'fnt',\n    'gamt',\n    'get',\n    'gft',\n    'gilt',\n    'gyt',\n    'hast',\n    'hncu',\n    'hneg',\n    'hnnomx',\n    'hnog',\n    'hnpm',\n    'hnpmx',\n    'hntn',\n    'hovt',\n    'iot',\n    'irkt',\n    'jst',\n    'kgt',\n    'kost',\n    'lint',\n    'magt',\n    'mart',\n    'mawt',\n    'mmt',\n    'nct',\n    'nft',\n    'novt',\n    'npt',\n    'nrt',\n    'nut',\n    'nzst',\n    'omst',\n    'pet',\n    'pett',\n    'phot',\n    'phst',\n    'pont',\n    'pwt',\n    'ret',\n    'sakt',\n    'samt',\n    'sbt',\n    'sct',\n    'sret',\n    'srt',\n    'syot',\n    'taht',\n    'tft',\n    'tjt',\n    'tkt',\n    'tlt',\n    'tmt',\n    'tot',\n    'tvt',\n    'ulat',\n    'vut',\n    'wakt',\n    'wat',\n    'wet',\n    'wft',\n    'wit',\n    'wst',\n    'yekt',\n  ].reduce((h, str) => {\n    h[str] = true;\n    return h\n  }, {});\n\n  const tagTz = function (doc) {\n    // 4pm PST\n    let m = doc.match('#Time [#Acronym]', 0);\n    if (m.found) {\n      let str = m.text('reduced');\n      if (zones[str] === true) {\n        m.tag('Timezone', 'tz-abbr');\n      }\n    }\n  };\n\n  const here = 'fix-tagger';\n  //\n  const fixUp = function (doc) {\n    //fixups\n    if (doc.has('#Date')) {\n      //first day by monday\n      let oops = doc.match('#Date+ by #Date+');\n      if (oops.found && !oops.has('^due')) {\n        oops.match('^#Date+').unTag('Date', 'by-monday');\n      }\n\n      let d = doc.match('#Date+');\n\n      //between june\n      if (d.has('^between') && !d.has('and .')) {\n        d.unTag('Date', here);\n      }\n      // log the hours\n      if (d.has('(minutes|seconds|weeks|hours|days|months)') && !d.has('#Value #Duration')) {\n        d.match('(minutes|seconds|weeks|hours|days|months)').unTag('Date', 'log-hours');\n      }\n      // about thanksgiving\n      if (d.has('about #Holiday')) {\n        d.match('about').unTag('#Date', 'about-thanksgiving');\n      }\n      // the day after next\n      d.match('#Date+').match('^the').unTag('Date');\n    }\n    return doc\n  };\n\n  const preps = '(in|by|before|during|on|until|after|of|within|all)'; //6\n  const thisNext = '(last|next|this|previous|current|upcoming|coming)'; //2\n  const sections = '(start|end|middle|starting|ending|midpoint|beginning|mid)'; //2\n  const seasons = '(spring|summer|winter|fall|autumn)';\n  const knownDate = '(yesterday|today|tomorrow)';\n\n  // { match: '', tag: '', reason:'' },\n  let matches = [\n    // in the evening\n    { match: 'in the (night|evening|morning|afternoon|day|daytime)', tag: 'Time', reason: 'in-the-night' },\n    // 8 pm\n    { match: '(#Value|#Time) (am|pm)', tag: 'Time', reason: 'value-ampm' },\n    // 2012-06\n    // { match: '/^[0-9]{4}-[0-9]{2}$/', tag: 'Date', reason: '2012-06' },\n    // 30mins\n    // { match: '/^[0-9]+(min|sec|hr|d)s?$/', tag: 'Duration', reason: '30min' },\n    // misc weekday words\n    { match: '(tue|thu)', tag: 'WeekDay', reason: 'misc-weekday' },\n    //June 5-7th\n    { match: `#Month #Date+`, tag: 'Date', reason: 'correction-numberRange' },\n    //5th of March\n    { match: '#Value of #Month', tag: 'Date', unTag: 'Time', reason: 'value-of-month' },\n    //5 March\n    { match: '#Cardinal #Month', tag: 'Date', reason: 'cardinal-month' },\n    //march 5 to 7\n    { match: '#Month #Value (and|or|to)? #Value+', tag: 'Date', reason: 'value-to-value' },\n    //march the 12th\n    { match: '#Month the #Value', tag: 'Date', reason: 'month-the-value' },\n    // march to april\n    { match: '[(march|may)] to? #Date', group: 0, tag: 'Month', reason: 'march-to' },\n    // 'march'\n    { match: '^(march|may)$', tag: 'Month', reason: 'single-march' },\n    //March or June\n    { match: '#Month or #Month', tag: 'Date', reason: 'month-or-month' },\n    //june 7\n    { match: '(#WeekDay|#Month) #Value', ifNo: '#Money', tag: 'Date', reason: 'date-value' },\n    //7 june\n    { match: '#Value (#WeekDay|#Month)', ifNo: '#Money', tag: 'Date', reason: 'value-date' },\n    //may twenty five\n    // { match: '#TextValue #TextValue', if: '#Date', tag: '#Date', reason: 'textvalue-date' },\n    //two thursdays back\n    { match: '#Value (#WeekDay|#Duration) back', tag: '#Date', reason: '3-back' },\n    //for 4 months\n    { match: 'for #Value #Duration', tag: 'Date', reason: 'for-x-duration' },\n    //two days before\n    { match: '#Value #Duration (before|ago|hence|back)', tag: 'Date', reason: 'val-duration-past' },\n    //for four days\n    { match: `${preps}? #Value #Duration`, tag: 'Date', reason: 'value-duration' },\n    // 6-8 months\n    { match: 'in? #Value to #Value #Duration time?', tag: 'Date', reason: '6-to-8-years' },\n    //two years old\n    { match: '#Value #Duration old', unTag: 'Date', reason: 'val-years-old' },\n    //\n    { match: `${preps}? ${thisNext} ${seasons}`, tag: 'Date', reason: 'thisNext-season' },\n    //\n    { match: `the? ${sections} of ${seasons}`, tag: 'Date', reason: 'section-season' },\n    //\n    { match: `${seasons} ${preps}? #Cardinal`, tag: 'Date', reason: 'season-year' },\n    //june the 5th\n    { match: '#Date the? #Ordinal', tag: 'Date', reason: 'correction' },\n    //last month\n    { match: `${thisNext} #Date`, tag: 'Date', reason: 'thisNext-date' },\n    //by 5 March\n    { match: 'due? (by|before|after|until) #Date', tag: 'Date', reason: 'by' },\n    //next feb\n    { match: '(last|next|this|previous|current|upcoming|coming|the) #Date', tag: 'Date', reason: 'next-feb' },\n    //start of june\n    { match: `#Preposition? the? ${sections} of #Date`, tag: 'Date', reason: 'section-of' },\n    //fifth week in 1998\n    { match: '#Ordinal #Duration in #Date', tag: 'Date', reason: 'duration-in' },\n    //early in june\n    { match: '(early|late) (at|in)? the? #Date', tag: 'Time', reason: 'early-evening' },\n    //tomorrow before 3\n    { match: '#Date [(by|before|after|at|@|about) #Cardinal]', group: 0, tag: 'Time', reason: 'date-before-Cardinal' },\n    //feb to june\n    { match: '#Date (#Preposition|to) #Date', ifNo: '#Duration', tag: 'Date', reason: 'date-prep-date' },\n    //by 6pm\n    { match: '(by|before|after|at|@|about) #Time', tag: 'Time', reason: 'preposition-time' },\n    // in 20mins\n    { match: '(in|after) /^[0-9]+(min|sec|wk)s?/', tag: 'Date', reason: 'shift-units' },\n    //tuesday night\n    { match: '#Date [(now|night|sometime)]', group: 0, tag: 'Time', reason: 'date-now' },\n    // 4 days from now\n    { match: '(from|starting|until|by) now', tag: 'Date', reason: 'for-now' },\n    // every night\n    { match: '(each|every) night', tag: 'Date', reason: 'for-now' },\n    //saturday am\n    { match: '#Date [(am|pm)]', group: 0, tag: 'Time', reason: 'date-am' },\n    // mid-august\n    { match: `[${sections}] #Date`, group: 0, tag: 'Date', reason: 'mid-sept' },\n\n    //june 5 to 7th\n    { match: '#Month #Value to #Value of? #Year?', tag: 'Date', reason: 'june 5 to 7th' },\n    //5 to 7th june\n    { match: '#Value to #Value of? #Month #Year?', tag: 'Date', reason: '5 to 7th june' },\n    //third week of may\n    { match: '#Value #Duration of #Date', tag: 'Date', reason: 'third week of may' },\n    //two days after\n    { match: '#Value+ #Duration (after|before|into|later|afterwards|ago)?', tag: 'Date', reason: 'two days after' },\n    //two days\n    { match: '#Value #Date', tag: 'Date', reason: 'two days' },\n    //june 5th\n    { match: '#Date #Value', tag: 'Date', reason: 'june 5th' },\n    //tuesday at 5\n    { match: '#Date #Preposition #Value', tag: 'Date', reason: 'tuesday at 5' },\n    //tomorrow before 3\n    { match: '#Date (after|before|during|on|in) #Value', tag: 'Date', reason: 'tomorrow before 3' },\n    //a year and a half\n    { match: '#Value (year|month|week|day) and a half', tag: 'Date', reason: 'a year and a half' },\n    //5 and a half years\n    { match: '#Value and a half (years|months|weeks|days)', tag: 'Date', reason: '5 and a half years' },\n    //on the fifth\n    { match: 'on the #Ordinal', tag: 'Date', reason: 'on the fifth' },\n    // 'jan 5 or 8'\n    { match: '#Month #Value+ (and|or) #Value', tag: 'Date', reason: 'date-or-date' },\n    // 5 or 8 of jan\n    { match: '#Value+ (and|or) #Value of #Month ', tag: 'Date', reason: 'date-and-date' },\n\n    { match: '(spring|summer|winter|fall|autumn|springtime|wintertime|summertime)', tag: 'Season', reason: 'date-tag1' },\n    { match: '(q1|q2|q3|q4)', tag: 'FinancialQuarter', reason: 'date-tag2' },\n    { match: '(this|next|last|current) quarter', tag: 'FinancialQuarter', reason: 'date-tag3' },\n    { match: '(this|next|last|current) season', tag: 'Season', reason: 'date-tag4' },\n    //friday to sunday\n    { match: '#Date #Preposition #Date', tag: 'Date', reason: 'friday to sunday' },\n    //once a day..\n    { match: '(once|twice) (a|an|each) #Date', tag: 'Date', reason: 'once a day' },\n    //a year after..\n    { match: 'a #Duration', tag: 'Date', reason: 'a year' },\n    //between x and y\n    { match: '(between|from) #Date', tag: 'Date', reason: 'between x and y' },\n    { match: '(to|until|upto) #Date', tag: 'Date', reason: 'between x and y2' },\n    { match: 'between #Date+ and #Date+', tag: 'Date', reason: 'between x and y3' },\n    { match: '#Month and #Month #Year', tag: 'Date', reason: 'x and y4' },\n    //day after next\n    { match: 'the? #Date after next one?', tag: 'Date', reason: 'day after next' },\n    //approximately...\n    { match: '(about|approx|approximately|around) #Date', tag: 'Date', reason: 'approximately june' },\n\n    // until june\n    {\n      match: '(by|until|on|in|at|during|over|every|each|due) the? #Date',\n      ifNo: '#PhrasalVerb',\n      tag: 'Date',\n      reason: 'until june',\n    },\n    // until last june\n    {\n      match: '(by|until|after|before|during|on|in|following|since) (next|this|last)? #Date',\n      ifNo: '#PhrasalVerb',\n      tag: 'Date',\n      reason: 'until last june',\n    },\n\n    //next september\n    {\n      match: 'this? (last|next|past|this|previous|current|upcoming|coming|the) #Date',\n      tag: 'Date',\n      reason: 'next september',\n    },\n    //starting this june\n    { match: '(starting|beginning|ending) #Date', tag: 'Date', reason: 'starting this june' },\n    //start of june\n    { match: 'the? (start|end|middle|beginning) of (last|next|this|the) #Date', tag: 'Date', reason: 'start of june' },\n    //this coming june\n    { match: '(the|this) #Date', tag: 'Date', reason: 'this coming june' },\n    //january up to june\n    { match: '#Date up to #Date', tag: 'Date', reason: 'january up to june' },\n\n    // 2 oclock\n    { match: '#Cardinal oclock', tag: 'Time', reason: '2 oclock' },\n    // // 13h30\n    // { match: '/^[0-9]{2}h[0-9]{2}$/', tag: 'Time', reason: '13h30' },\n    // // 03/02\n    // { match: '/^[0-9]{2}/[0-9]{2}/', tag: 'Date', unTag: 'Value', reason: '03/02' },\n    // 3 in the morning\n    { match: '#Value (in|at) the? (morning|evening|night|nighttime)', tag: 'Time', reason: '3 in the morning' },\n    // ten to seven\n    {\n      match: '(5|10|15|20|five|ten|fifteen|quarter|twenty|half) (after|past) #Cardinal',\n      tag: 'Time',\n      reason: 'ten to seven',\n    }, //add check for 1 to 1 etc.\n    // at 10 past\n    {\n      match: '(at|by|before) (5|10|15|20|five|ten|fifteen|twenty|quarter|half) (after|past|to)',\n      tag: 'Time',\n      reason: 'at-20-past',\n    },\n    // iso  (2020-03-02T00:00:00.000Z)\n    // { match: '/^[0-9]{4}[:-][0-9]{2}[:-][0-9]{2}T[0-9]/', tag: 'Time', reason: 'iso-time-tag' },\n    // tuesday at 4\n    { match: '#Date [at #Cardinal]', group: 0, ifNo: '#Year', tag: 'Time', reason: ' tuesday at 4' },\n    // half an hour\n    { match: 'half an (hour|minute|second)', tag: 'Date', reason: 'half an hour' },\n    // in eastern time\n    { match: '(in|for|by|near|at) #Timezone', tag: 'Date', reason: 'in eastern time' },\n    // 3pm to 4pm\n    { match: '#Time to #Time', tag: 'Date', reason: '3pm to 4pm' },\n    // 4pm sharp\n    { match: '#Time [(sharp|on the dot)]', group: 0, tag: 'Time', reason: '4pm sharp' },\n\n    // around four thirty\n    {\n      match: '(at|around|near|#Date) [#Cardinal (thirty|fifteen) (am|pm)?]',\n      group: 0,\n      tag: 'Time',\n      reason: 'around four thirty',\n    },\n    // four thirty am\n    { match: '#Cardinal (thirty|fifteen) (am|pm)', tag: 'Time', reason: 'four thirty am' },\n    // four thirty tomorrow\n    { match: '[#Cardinal (thirty|fifteen)] #Date', group: 0, tag: 'Time', reason: 'four thirty tomorrow' },\n    //anytime around 3\n    { match: '(anytime|sometime) (before|after|near) [#Cardinal]', group: 0, tag: 'Time', reason: 'antime-after-3' },\n\n    //'two days before'/ 'nine weeks frow now'\n    {\n      match: '(#Cardinal|a|an) #Duration (before|after|ago|from|hence|back)',\n      tag: 'DateShift',\n      reason: 'nine weeks frow now',\n    },\n    // in two weeks\n    { match: 'in (around|about|maybe|perhaps)? #Cardinal #Duration', tag: 'DateShift', reason: 'in two weeks' },\n    { match: 'in (a|an) #Duration', tag: 'DateShift', reason: 'in a week' },\n    // an hour from now\n    { match: '[(a|an) #Duration from] #Date', group: 0, tag: 'DateShift', reason: 'an hour from now' },\n    // a month ago\n    { match: '(a|an) #Duration ago', tag: 'DateShift', reason: 'a month ago' },\n    // in half an hour\n    { match: 'in half (a|an) #Duration', tag: 'DateShift', reason: 'in half an hour' },\n    // in a few weeks\n    { match: 'in a (few|couple) of? #Duration', tag: 'DateShift', reason: 'in a few weeks' },\n    //two weeks and three days before\n    // { match: '#Cardinal #Duration and? #DateShift', tag: 'DateShift', reason: 'three days before' },\n    // { match: '#DateShift and #Cardinal #Duration', tag: 'DateShift', reason: 'date-shift' },\n    // 'day after tomorrow'\n    { match: '[#Duration (after|before)] #Date', group: 0, tag: 'DateShift', reason: 'day after tomorrow' },\n\n    // july 3rd and 4th\n    { match: '#Month #Ordinal and #Ordinal', tag: 'Date', reason: 'ord-and-ord' },\n    // every other week\n    { match: 'every other #Duration', tag: 'Date', reason: 'every-other' },\n    // every weekend\n    { match: '(every|any|each|a) (day|weekday|week day|weekend|weekend day)', tag: 'Date', reason: 'any-weekday' },\n    // any-wednesday\n    { match: '(every|any|each|a) (#WeekDay)', tag: 'Date', reason: 'any-wednesday' },\n    // any week\n    { match: '(every|any|each|a) (#Duration)', tag: 'Date', reason: 'any-week' },\n    // wed nov\n    { match: '[(wed|sat)] (#Month|#Year|on|between|during|from)', group: 0, tag: 'WeekDay', reason: 'wed' },\n    //'spa day'\n    { match: '^day$', unTag: 'Date', reason: 'spa-day' },\n    // tomorrow's meeting\n    { match: '(in|of|by|for)? (#Possessive && #Date)', unTag: 'Date', reason: 'tomorrows meeting' },\n    //yesterday 7\n    { match: `${knownDate} [#Value]$`, unTag: 'Date', group: 0, reason: 'yesterday-7' },\n    //7 yesterday\n    { match: `^[#Value] ${knownDate}$`, group: 0, unTag: 'Date', reason: '7 yesterday' },\n    //friday yesterday\n    // { match: `#WeekDay+ ${knownDate}$`, unTag: 'Date').lastTerm(, tag:'Date',  reason: 'fri-yesterday'},\n    //tomorrow on 5\n    { match: `on #Cardinal$`, unTag: 'Date', reason: 'on 5' },\n    //this tomorrow\n    { match: `[this] tomorrow`, group: 0, unTag: 'Date', reason: 'this-tomorrow' },\n    //q2 2019\n    { match: `(q1|q2|q3|q4) #Year`, tag: 'Date', reason: 'q2 2016' },\n    //5 next week\n    { match: `^[#Value] (this|next|last)`, group: 0, unTag: 'Date', reason: '4 next' },\n    //this month 7\n    { match: `(last|this|next) #Duration [#Value]`, group: 0, unTag: 'Date', reason: 'this month 7' },\n    //7 this month\n    { match: `[!#Month] #Value (last|this|next) #Date`, group: 0, unTag: 'Date', reason: '7 this month' },\n    // over the years\n    { match: '(in|over) the #Duration #Date+?', unTag: 'Date', reason: 'over-the-duration' },\n    // second quarter of 2020\n    { match: '#Ordinal quarter of? #Year', unTag: 'Fraction' },\n    // a month from now\n    { match: '(from|by|before) now', unTag: 'Time', tag: 'Date' },\n    // 18th next month\n    { match: '#Value of? (this|next|last) #Date', tag: 'Date' },\n    // first half of march\n    { match: '(first|initial|second|latter) half of #Month', tag: 'Date' },\n  ];\n\n  let net = null;\n\n  const doMatches = function (view) {\n    let { world } = view;\n    net = net || world.methods.one.buildNet(matches, world);\n    view.sweep(net);\n  };\n\n  // run each of the taggers\n  const compute = function (view) {\n    view.cache();\n    doMatches(view);\n    doMatches(view); // do it twice\n    tagDates(view);\n    timeTagger(view);\n    tagTz(view);\n    fixUp(view);\n    view.uncache();\n\n    // sorry, one more\n    view.match('#Cardinal #Duration and? #DateShift').tag('DateShift', 'three days before');\n    view.match('#DateShift and #Cardinal #Duration').tag('DateShift', 'three days and two weeks');\n    view.match('#Time [(sharp|on the dot)]').tag('Time', '4pm sharp');\n    // view.match('in #Adverb #DateShift').tag('Date', 'in-around-2-weeks')\n\n    return view\n  };\n\n  var compute$1 = {\n    dates: compute\n  };\n\n  var tags = {\n    FinancialQuarter: {\n      is: 'Date',\n      not: ['Fraction'],\n    },\n    // 'summer'\n    Season: {\n      is: 'Date',\n    },\n    // '1982'\n    Year: {\n      is: 'Date',\n      not: ['RomanNumeral'],\n    },\n    // 'easter'\n    Holiday: {\n      is: 'Date',\n      also: 'Noun',\n    },\n    // 'two weeks before'\n    DateShift: {\n      is: 'Date',\n      not: ['Timezone', 'Holiday'],\n    },\n  };\n\n  const america = 'America/';\n  const asia = 'Asia/';\n  const europe = 'Europe/';\n  const africa = 'Africa/';\n  const aus = 'Australia/';\n  const pac = 'Pacific/';\n\n  const informal = {\n    //europe\n    'british summer time': europe + 'London',\n    bst: europe + 'London',\n    'british time': europe + 'London',\n    'britain time': europe + 'London',\n    'irish summer time': europe + 'Dublin',\n    'irish time': europe + 'Dublin',\n    'central european time': europe + 'Berlin',\n    cet: europe + 'Berlin',\n    'central european summer time': europe + 'Berlin',\n    cest: europe + 'Berlin',\n    'central europe': europe + 'Berlin',\n    'eastern european time': europe + 'Riga',\n    eet: europe + 'Riga',\n    'eastern european summer time': europe + 'Riga',\n    eest: europe + 'Riga',\n    'eastern europe time': europe + 'Riga',\n    'western european time': europe + 'Lisbon',\n    'western european summer time': europe + 'Lisbon',\n    'turkey standard time': europe + 'Istanbul',\n    'turkish time': europe + 'Istanbul',\n\n    utc: africa + 'Freetown',\n    'greenwich standard time': africa + 'Freetown',\n    gmt: africa + 'Freetown',\n\n    //africa\n    'east africa time': africa + 'Nairobi',\n    'east african time': africa + 'Nairobi',\n    'eastern africa time': africa + 'Nairobi',\n    'central africa time': africa + 'Khartoum',\n    'central african time': africa + 'Khartoum',\n    'south africa standard time': africa + 'Johannesburg',\n    'west africa standard time': africa + 'Lagos',\n    'western africa time': africa + 'Lagos',\n    'west african time': africa + 'Lagos',\n\n    // australia\n    'australian central standard time': aus + 'Adelaide',\n    acst: aus + 'Adelaide',\n    'australian central daylight time': aus + 'Adelaide',\n    acdt: aus + 'Adelaide',\n    'australian eastern standard time': aus + 'Brisbane',\n    aest: aus + 'Brisbane',\n    'australian eastern daylight time': aus + 'Brisbane',\n    aedt: aus + 'Brisbane',\n    'australian western standard time': aus + 'Perth',\n    awst: aus + 'Perth',\n    'australian western daylight time': aus + 'Perth',\n    awdt: aus + 'Perth',\n    'australian central western standard time': aus + 'Eucla',\n    acwst: aus + 'Eucla',\n    'lord howe standard time': aus + 'Lord_Howe',\n    lhst: aus + 'Lord_Howe',\n    'lord howe daylight time': aus + 'Lord_Howe',\n    lhdt: aus + 'Lord_Howe',\n    'russian standard time': europe + 'Moscow',\n    msk: europe + 'Moscow',\n\n    //america\n    'central standard time': america + 'Chicago',\n    'central time': america + 'Chicago',\n    cst: america + 'Havana',\n    'central daylight time': america + 'Chicago',\n    cdt: america + 'Havana',\n    'mountain standard time': america + 'Denver',\n    'mountain time': america + 'Denver',\n    mst: america + 'Denver',\n    'mountain daylight time': america + 'Denver',\n    mdt: america + 'Denver',\n    'atlantic standard time': america + 'Halifax',\n    'atlantic time': america + 'Halifax',\n    ast: asia + 'Baghdad',\n    'atlantic daylight time': america + 'Halifax',\n    adt: america + 'Halifax',\n    'eastern standard time': america + 'New_York',\n    'eastern time': america + 'New_York',\n    est: america + 'New_York',\n    'eastern daylight time': america + 'New_York',\n    edt: america + 'New_York',\n    'pacific time': america + 'Los_Angeles',\n    'pacific standard time': america + 'Los_Angeles',\n    pst: america + 'Los_Angeles',\n    'pacific daylight time': america + 'Los_Angeles',\n    pdt: america + 'Los_Angeles',\n    'alaskan standard time': america + 'Anchorage',\n    'alaskan time': america + 'Anchorage',\n    ahst: america + 'Anchorage',\n    'alaskan daylight time': america + 'Anchorage',\n    ahdt: america + 'Anchorage',\n    'hawaiian standard time': pac + 'Honolulu',\n    'hawaiian time': pac + 'Honolulu',\n    hst: pac + 'Honolulu',\n    'aleutian time': pac + 'Honolulu',\n    'hawaii time': pac + 'Honolulu',\n    'newfoundland standard time': america + 'St_Johns',\n    'newfoundland time': america + 'St_Johns',\n    'newfoundland daylight time': america + 'St_Johns',\n    'brazil time': america + 'Sao_Paulo',\n    'brazilian time': america + 'Sao_Paulo',\n    'argentina time': america + 'Buenos_Aires',\n    'argentinian time': america + 'Buenos_Aires',\n    'amazon time': america + 'Manaus',\n    'amazonian time': america + 'Manaus',\n    'easter island standard time': 'Chile/Easterisland',\n    'easter island summer time': 'Chile/Easterisland',\n    easst: 'Chile/Easterisland',\n    'venezuelan standard time': america + 'Caracas',\n    'venezuelan time': america + 'Caracas',\n    'venezuela time': america + 'Caracas',\n    'paraguay time': america + 'Asuncion',\n    'paraguay summer time': america + 'Asuncion',\n    'cuba standard time': america + 'Havana',\n    'cuba time': america + 'Havana',\n    'cuba daylight time': america + 'Havana',\n    'cuban time': america + 'Havana',\n    'bolivia time': america + 'La_Paz',\n    'bolivian time': america + 'La_Paz',\n    'colombia time': america + 'Bogota',\n    'colombian time': america + 'Bogota',\n    'acre time': america + 'Eirunepe',\n    'peru time': america + 'Lima',\n    'chile standard time': america + 'Punta_Arenas',\n    'chile time': america + 'Punta_Arenas',\n    clst: america + 'Punta_Arenas',\n    'chile summer time': america + 'Punta_Arenas',\n    cldt: america + 'Punta_Arenas',\n    'uruguay time': america + 'Montevideo',\n    uyt: america + 'Montevideo',\n\n    //asia\n    'arabic standard time': asia + 'Baghdad',\n    'iran standard time': asia + 'Tehran',\n    'iran time': asia + 'Tehran',\n    'iran daylight time': asia + 'Tehran',\n    'pakistan standard time': asia + 'Karachi',\n    'pakistan time': asia + 'Karachi',\n    'india standard time': asia + 'Kolkata',\n    'indian time': asia + 'Kolkata',\n    'indochina time': asia + 'Bangkok',\n    'china standard time': asia + 'Shanghai',\n    'alma-ata time': asia + 'Almaty',\n    'oral time': asia + 'Oral',\n    'orat time': asia + 'Oral',\n    'yakutsk time': asia + 'Yakutsk',\n    yakt: asia + 'Yakutsk',\n    'gulf standard time': asia + 'Dubai',\n    'gulf time': asia + 'Dubai',\n    'hong kong time': asia + 'Hong_Kong',\n    'western indonesian time': asia + 'Jakarta',\n    'indonesia time': asia + 'Jakarta',\n    'central indonesian time': asia + 'Makassar',\n    'israel daylight time': asia + 'Jerusalem',\n    'israel standard time': asia + 'Jerusalem',\n    'israel time': asia + 'Jerusalem',\n    'krasnoyarsk time': asia + 'Krasnoyarsk',\n    'malaysia time': asia + 'Kuala_Lumpur',\n    'singapore time': asia + 'Singapore',\n    'korea standard time': asia + 'Seoul',\n    'korea time': asia + 'Seoul',\n    kst: asia + 'Seoul',\n    'korean time': asia + 'Seoul',\n    'uzbekistan time': asia + 'Samarkand',\n    'vladivostok time': asia + 'Vladivostok',\n\n    //indian\n    'maldives time': 'Indian/Maldives',\n    'mauritius time': 'Indian/Mauritius',\n\n    'marshall islands time': pac + 'Kwajalein',\n    'samoa standard time': pac + 'Midway',\n    'somoan time': pac + 'Midway',\n    'chamorro standard time': pac + 'Guam',\n    'papua new guinea time': pac + 'Bougainville',\n  };\n\n  //add the official iana zonefile names\n  let iana = main().timezones;\n  let formal = Object.keys(iana).reduce((h, k) => {\n    h[k] = k;\n    return h\n  }, {});\n  var timezones = Object.assign({}, informal, formal);\n\n  var dates = [\n    'weekday',\n\n    'summer',\n    'winter',\n    'autumn',\n\n    // 'some day',\n    // 'one day',\n    'all day',\n    // 'some point',\n\n    'eod',\n    'eom',\n    'eoy',\n    'standard time',\n    'daylight time',\n    'tommorrow',\n  ];\n\n  var durations = [\n    'centuries',\n    'century',\n    'day',\n    'days',\n    'decade',\n    'decades',\n    'hour',\n    'hours',\n    'hr',\n    'hrs',\n    'millisecond',\n    'milliseconds',\n    'minute',\n    'minutes',\n    'min',\n    'mins',\n    'month',\n    'months',\n    'seconds',\n    'sec',\n    'secs',\n    'week end',\n    'week ends',\n    'weekend',\n    'weekends',\n    'week',\n    'weeks',\n    'wk',\n    'wks',\n    'year',\n    'years',\n    'yr',\n    'yrs',\n    'quarter',\n    // 'quarters',\n    'qtr',\n    'qtrs',\n    'season',\n    'seasons',\n  ];\n\n  var holidays = [\n    'all hallows eve',\n    'all saints day',\n    'all sts day',\n    'april fools',\n    'armistice day',\n    'australia day',\n    'bastille day',\n    'boxing day',\n    'canada day',\n    'christmas eve',\n    'christmas',\n    'cinco de mayo',\n    'day of the dead',\n    'dia de muertos',\n    'dieciseis de septiembre',\n    'emancipation day',\n    'grito de dolores',\n    'groundhog day',\n    'halloween',\n    'harvey milk day',\n    'inauguration day',\n    'independence day',\n    'independents day',\n    'juneteenth',\n    'labour day',\n    'national freedom day',\n    'national nurses day',\n    'new years eve',\n    'new years',\n    'purple heart day',\n    'rememberance day',\n    'rosa parks day',\n    'saint andrews day',\n    'saint patricks day',\n    'saint stephens day',\n    'saint valentines day',\n    'st andrews day',\n    'st patricks day',\n    'st stephens day',\n    'st valentines day ',\n    'valentines day',\n    'valentines',\n    'veterans day',\n    'victoria day',\n    'womens equality day',\n    'xmas',\n    // Fixed religious and cultural holidays\n    // Catholic + Christian\n    'epiphany',\n    'orthodox christmas day',\n    'orthodox new year',\n    'assumption of mary',\n    'all souls day',\n    'feast of the immaculate conception',\n    'feast of our lady of guadalupe',\n\n    // Kwanzaa\n    'kwanzaa',\n    // Pagan / metal 🤘\n    'imbolc',\n    'beltaine',\n    'lughnassadh',\n    'samhain',\n    'martin luther king day',\n    'mlk day',\n    'presidents day',\n    'mardi gras',\n    'tax day',\n    'commonwealth day',\n    'mothers day',\n    'memorial day',\n    'fathers day',\n    'columbus day',\n    'indigenous peoples day',\n    'canadian thanksgiving',\n    'election day',\n    'thanksgiving',\n    't-day',\n    'turkey day',\n    'black friday',\n    'cyber monday',\n    // Astronomical religious and cultural holidays\n    'ash wednesday',\n    'palm sunday',\n    'maundy thursday',\n    'good friday',\n    'holy saturday',\n    'easter',\n    'easter sunday',\n    'easter monday',\n    'orthodox good friday',\n    'orthodox holy saturday',\n    'orthodox easter',\n    'orthodox easter monday',\n    'ascension day',\n    'pentecost',\n    'whitsunday',\n    'whit sunday',\n    'whit monday',\n    'trinity sunday',\n    'corpus christi',\n    'advent',\n    // Jewish\n    'tu bishvat',\n    'tu bshevat',\n    'purim',\n    'passover',\n    'yom hashoah',\n    'lag baomer',\n    'shavuot',\n    'tisha bav',\n    'rosh hashana',\n    'yom kippur',\n    'sukkot',\n    'shmini atzeret',\n    'simchat torah',\n    'chanukah',\n    'hanukkah',\n    // Muslim\n    'isra and miraj',\n    'lailat al-qadr',\n    'eid al-fitr',\n    'id al-Fitr',\n    'eid ul-Fitr',\n    'ramadan',\n    'eid al-adha',\n    'muharram',\n    'the prophets birthday',\n    'ostara',\n    'march equinox',\n    'vernal equinox',\n    'litha',\n    'june solistice',\n    'summer solistice',\n    'mabon',\n    'september equinox',\n    'fall equinox',\n    'autumnal equinox',\n    'yule',\n    'december solstice',\n    'winter solstice',\n    // Additional important holidays\n    'chinese new year',\n    'diwali',\n  ];\n\n  var times = [\n    'noon',\n    'midnight',\n    'morning',\n    'tonight',\n    'evening',\n    'afternoon',\n    'breakfast time',\n    'lunchtime',\n    'dinnertime',\n    'midday',\n    'eod',\n    'oclock',\n    'oclock',\n    'at night',\n    // 'now',\n    // 'night',\n    // 'sometime',\n    // 'all day',\n  ];\n\n  let lex = {\n    'a couple': 'Value',\n    thur: 'WeekDay',\n    thurs: 'WeekDay',\n  };\n  const add = function (arr, tag) {\n    arr.forEach(str => {\n      lex[str] = tag;\n    });\n  };\n  add(Object.keys(timezones), 'Timezone');\n  add(dates, 'Date');\n  add(durations, 'Duration');\n  add(holidays, 'Holiday');\n  add(times, 'Time');\n\n  var regex = [\n    // 30sec\n    [/^[0-9]+(min|sec|hr|d)s?$/i, 'Duration', '30min'],\n    // 2012-06\n    [/^[0-9]{4}-[0-9]{2}$/, 'Date', '2012-06'],\n    // 13h30\n    [/^[0-9]{2}h[0-9]{2}$/i, 'Time', '13h30'],\n    // @4:30\n    [/^@[0-9]+:[0-9]{2}$/, 'Time', '@5:30'],\n    // @4pm\n    [/^@[1-9]+(am|pm)$/, 'Time', '@5pm'],\n    // 03/02\n    [/^(?:0[1-9]|[12]\\d|3[01])\\/(?:0[1-9]|[12]\\d|3[01])$/, 'Date', '03/02'],\n    // iso-time\n    // [/^[0-9]{4}[:-][0-9]{2}[:-][0-9]{2}T[0-9]/i, 'Time', 'iso-time-tag']\n\n  ];\n\n  var version = '3.7.1';\n\n  /* eslint-disable no-console */\n\n  const fmt = iso => (iso ? main(iso).format('{nice-day} {year}') : '-');\n\n  // https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color\n  const reset = '\\x1b[0m';\n\n  //cheaper than requiring chalk\n  const cli = {\n    magenta: str => '\\x1b[35m' + str + reset,\n    cyan: str => '\\x1b[36m' + str + reset,\n    yellow: str => '\\x1b[33m' + str + reset,\n    dim: str => '\\x1b[2m' + str + reset,\n    i: str => '\\x1b[3m' + str + reset,\n  };\n\n  const debug = function (view) {\n    view.dates().forEach(m => {\n      let res = m.dates().get()[0];\n\n      console.log('\\n────────');\n      m.debug('highlight');\n\n      let msg = '';\n      if (res && res.start) {\n        msg = '   ' + cli.magenta(fmt(res.start));\n      }\n      if (res && res.end) {\n        msg += cli.dim('   →   ') + cli.cyan(fmt(res.end));\n      }\n      console.log(msg + '\\n');\n    });\n  };\n\n  var plugin = {\n    tags,\n    words: lex,\n    compute: compute$1,\n    api,\n    mutate: world => {\n      // add our regexes\n      world.model.two.regexText = world.model.two.regexText || [];\n      world.model.two.regexText = world.model.two.regexText.concat(regex);\n      // add our debug('dates') method\n      world.methods.one.debug = world.methods.one.debug || {};\n      world.methods.one.debug.dates = debug;\n    },\n    hooks: ['dates'],\n    version,\n  };\n\n  return plugin;\n\n}));\n"
  },
  {
    "path": "plugins/dates/builds/compromise-dates.mjs",
    "content": "const e={second:!0,minute:!0,hour:!0,day:!0,week:!0,weekend:!0,month:!0,season:!0,quarter:!0,year:!0},t={wk:\"week\",min:\"minute\",sec:\"second\",weekend:\"week\"},a=function(e){let a=e.match(\"#Duration\").text(\"normal\");return a=a.replace(/s$/,\"\"),t.hasOwnProperty(a)&&(a=t[a]),a},n={minute:!0},r=(e,t,a)=>{const[n,r]=e.split(\"/\"),[i,o]=r.split(\":\");return Date.UTC(a,n-1,i,o)-36e5*t},i=(e,t,a,n,i)=>{const o=new Date(e).getUTCFullYear(),s=r(t,i,o),u=r(a,n,o);return e>=s&&e<u};var o={\"9|s\":\"2/dili,2/jayapura\",\"9|n\":\"2/chita,2/khandyga,2/pyongyang,2/seoul,2/tokyo,2/yakutsk,11/palau,japan,rok\",\"9.5|s|04/06:03->10/05:04\":\"4/adelaide,4/broken_hill,4/south,4/yancowinna\",\"9.5|s\":\"4/darwin,4/north\",\"8|s|03/13:01->10/02:00\":\"12/casey\",\"8|s\":\"2/kuala_lumpur,2/makassar,2/singapore,4/perth,2/ujung_pandang,4/west,singapore\",\"8|n\":\"2/brunei,2/hong_kong,2/irkutsk,2/kuching,2/macau,2/manila,2/shanghai,2/taipei,2/ulaanbaatar,2/chongqing,2/chungking,2/harbin,2/macao,2/ulan_bator,2/choibalsan,hongkong,prc,roc\",\"8.75|s\":\"4/eucla\",\"7|s\":\"12/davis,2/jakarta,9/christmas\",\"7|n\":\"2/bangkok,2/barnaul,2/hovd,2/krasnoyarsk,2/novokuznetsk,2/novosibirsk,2/phnom_penh,2/pontianak,2/ho_chi_minh,2/tomsk,2/vientiane,2/saigon\",\"6|s\":\"12/vostok\",\"6|n\":\"2/almaty,2/bishkek,2/dhaka,2/omsk,2/qyzylorda,2/qostanay,2/thimphu,2/urumqi,9/chagos,2/dacca,2/kashgar,2/thimbu\",\"6.5|n\":\"2/yangon,9/cocos,2/rangoon\",\"5|s\":\"12/mawson,9/kerguelen\",\"5|n\":\"2/aqtau,2/aqtobe,2/ashgabat,2/atyrau,2/dushanbe,2/karachi,2/oral,2/samarkand,2/tashkent,2/yekaterinburg,9/maldives,2/ashkhabad\",\"5.75|n\":\"2/kathmandu,2/katmandu\",\"5.5|n\":\"2/kolkata,2/colombo,2/calcutta\",\"4|s\":\"9/reunion\",\"4|n\":\"2/baku,2/dubai,2/muscat,2/tbilisi,2/yerevan,8/astrakhan,8/samara,8/saratov,8/ulyanovsk,8/volgograd,9/mahe,9/mauritius,2/volgograd\",\"4.5|n\":\"2/kabul\",\"3|s\":\"12/syowa,9/antananarivo\",\"3|n|04/25:02->10/30:24\":\"0/cairo,egypt\",\"3|n|04/12:04->10/25:02\":\"2/gaza,2/hebron\",\"3|n|03/30:05->10/26:04\":\"2/famagusta,2/nicosia,8/athens,8/bucharest,8/helsinki,8/kyiv,8/mariehamn,8/riga,8/sofia,8/tallinn,8/uzhgorod,8/vilnius,8/zaporozhye,8/nicosia,8/kiev,eet\",\"3|n|03/30:04->10/26:03\":\"8/chisinau,8/tiraspol\",\"3|n|03/30:02->10/25:24\":\"2/beirut\",\"3|n|03/28:04->10/26:02\":\"2/jerusalem,2/tel_aviv,israel\",\"3|n\":\"0/addis_ababa,0/asmara,0/asmera,0/dar_es_salaam,0/djibouti,0/juba,0/kampala,0/mogadishu,0/nairobi,2/aden,2/amman,2/baghdad,2/bahrain,2/damascus,2/kuwait,2/qatar,2/riyadh,8/istanbul,8/kirov,8/minsk,8/moscow,8/simferopol,9/comoro,9/mayotte,2/istanbul,turkey,w-su\",\"3.5|n\":\"2/tehran,iran\",\"2|s|03/30:04->10/26:02\":\"12/troll\",\"2|s\":\"0/gaborone,0/harare,0/johannesburg,0/lubumbashi,0/lusaka,0/maputo,0/maseru,0/mbabane\",\"2|n|03/30:04->10/26:03\":\"0/ceuta,arctic/longyearbyen,8/amsterdam,8/andorra,8/belgrade,8/berlin,8/bratislava,8/brussels,8/budapest,8/busingen,8/copenhagen,8/gibraltar,8/ljubljana,8/luxembourg,8/madrid,8/malta,8/monaco,8/oslo,8/paris,8/podgorica,8/prague,8/rome,8/san_marino,8/sarajevo,8/skopje,8/stockholm,8/tirane,8/vaduz,8/vatican,8/vienna,8/warsaw,8/zagreb,8/zurich,3/jan_mayen,poland,cet,met\",\"2|n\":\"0/blantyre,0/bujumbura,0/khartoum,0/kigali,0/tripoli,8/kaliningrad,libya\",\"1|s\":\"0/brazzaville,0/kinshasa,0/luanda,0/windhoek\",\"1|n|03/30:03->10/26:02\":\"3/canary,3/faroe,3/madeira,8/dublin,8/guernsey,8/isle_of_man,8/jersey,8/lisbon,8/london,3/faeroe,eire,8/belfast,gb-eire,gb,portugal,wet\",\"1|n\":\"0/algiers,0/bangui,0/douala,0/lagos,0/libreville,0/malabo,0/ndjamena,0/niamey,0/porto-novo,0/tunis\",\"14|n\":\"11/kiritimati\",\"13|s\":\"11/apia,11/tongatapu\",\"13|n\":\"11/enderbury,11/kanton,11/fakaofo\",\"12|s|04/06:03->09/28:04\":\"12/mcmurdo,11/auckland,12/south_pole,nz\",\"12|s\":\"11/fiji\",\"12|n\":\"2/anadyr,2/kamchatka,2/srednekolymsk,11/funafuti,11/kwajalein,11/majuro,11/nauru,11/tarawa,11/wake,11/wallis,kwajalein\",\"12.75|s|04/06:03->04/06:02\":\"11/chatham,nz-chat\",\"11|s|04/06:03->10/05:04\":\"12/macquarie\",\"11|s\":\"11/bougainville\",\"11|n\":\"2/magadan,2/sakhalin,11/efate,11/guadalcanal,11/kosrae,11/noumea,11/pohnpei,11/ponape\",\"11.5|n|04/06:03->10/05:04\":\"11/norfolk\",\"10|s|04/06:03->10/05:04\":\"4/currie,4/hobart,4/melbourne,4/sydney,4/act,4/canberra,4/nsw,4/tasmania,4/victoria\",\"10|s\":\"12/dumontdurville,4/brisbane,4/lindeman,11/port_moresby,4/queensland\",\"10|n\":\"2/ust-nera,2/vladivostok,11/guam,11/saipan,11/chuuk,11/truk,11/yap\",\"10.5|s|04/06:01->10/05:02\":\"4/lord_howe,4/lhi\",\"0|s|02/23:03->04/06:04\":\"0/casablanca,0/el_aaiun\",\"0|n|03/30:02->10/26:01\":\"3/azores\",\"0|n|03/30:01->10/25:24\":\"1/scoresbysund\",\"0|n\":\"0/abidjan,0/accra,0/bamako,0/banjul,0/bissau,0/conakry,0/dakar,0/freetown,0/lome,0/monrovia,0/nouakchott,0/ouagadougou,0/sao_tome,1/danmarkshavn,3/reykjavik,3/st_helena,13/gmt,13/utc,0/timbuktu,13/greenwich,13/uct,13/universal,13/zulu,gmt-0,gmt+0,gmt0,greenwich,iceland,uct,universal,utc,zulu,13/unknown,factory\",\"-9|n|03/09:04->11/02:02\":\"1/adak,1/atka,us/aleutian\",\"-9|n\":\"11/gambier\",\"-9.5|n\":\"11/marquesas\",\"-8|n|03/09:04->11/02:02\":\"1/anchorage,1/juneau,1/metlakatla,1/nome,1/sitka,1/yakutat,us/alaska\",\"-8|n\":\"11/pitcairn\",\"-7|n|03/09:04->11/02:02\":\"1/los_angeles,1/santa_isabel,1/tijuana,1/vancouver,1/ensenada,6/pacific,10/bajanorte,us/pacific-new,us/pacific\",\"-7|n\":\"1/creston,1/dawson,1/dawson_creek,1/fort_nelson,1/hermosillo,1/mazatlan,1/phoenix,1/whitehorse,6/yukon,10/bajasur,us/arizona,mst\",\"-6|s|04/05:22->09/06:24\":\"11/easter,7/easterisland\",\"-6|n|04/07:02->10/27:02\":\"1/merida\",\"-6|n|03/09:04->11/02:02\":\"1/boise,1/cambridge_bay,1/denver,1/edmonton,1/inuvik,1/north_dakota,1/ojinaga,1/ciudad_juarez,1/yellowknife,1/shiprock,6/mountain,navajo,us/mountain\",\"-6|n\":\"1/bahia_banderas,1/belize,1/chihuahua,1/costa_rica,1/el_salvador,1/guatemala,1/managua,1/mexico_city,1/monterrey,1/regina,1/swift_current,1/tegucigalpa,11/galapagos,6/east-saskatchewan,6/saskatchewan,10/general\",\"-5|s\":\"1/lima,1/rio_branco,1/porto_acre,5/acre\",\"-5|n|03/09:04->11/02:02\":\"1/chicago,1/matamoros,1/menominee,1/rainy_river,1/rankin_inlet,1/resolute,1/winnipeg,1/indiana/knox,1/indiana/tell_city,1/north_dakota/beulah,1/north_dakota/center,1/north_dakota/new_salem,1/knox_in,6/central,us/central,us/indiana-starke\",\"-5|n\":\"1/bogota,1/cancun,1/cayman,1/coral_harbour,1/eirunepe,1/guayaquil,1/jamaica,1/panama,1/atikokan,jamaica,est\",\"-4|s|04/05:24->09/07:02\":\"1/santiago,7/continental\",\"-4|s|03/22:24->10/05:02\":\"1/asuncion\",\"-4|s\":\"1/campo_grande,1/cuiaba,1/la_paz,1/manaus,5/west\",\"-4|n|03/09:04->11/02:02\":\"1/detroit,1/grand_turk,1/indiana,1/indianapolis,1/iqaluit,1/kentucky,1/louisville,1/montreal,1/nassau,1/new_york,1/nipigon,1/pangnirtung,1/port-au-prince,1/thunder_bay,1/toronto,1/indiana/marengo,1/indiana/petersburg,1/indiana/vevay,1/indiana/vincennes,1/indiana/winamac,1/kentucky/monticello,1/fort_wayne,1/indiana/indianapolis,1/kentucky/louisville,6/eastern,us/east-indiana,us/eastern,us/michigan\",\"-4|n|03/09:02->11/02:01\":\"1/havana,cuba\",\"-4|n\":\"1/anguilla,1/antigua,1/aruba,1/barbados,1/blanc-sablon,1/boa_vista,1/caracas,1/curacao,1/dominica,1/grenada,1/guadeloupe,1/guyana,1/kralendijk,1/lower_princes,1/marigot,1/martinique,1/montserrat,1/port_of_spain,1/porto_velho,1/puerto_rico,1/santo_domingo,1/st_barthelemy,1/st_kitts,1/st_lucia,1/st_thomas,1/st_vincent,1/tortola,1/virgin\",\"-3|s\":\"1/argentina,1/buenos_aires,1/catamarca,1/cordoba,1/fortaleza,1/jujuy,1/mendoza,1/montevideo,1/punta_arenas,1/sao_paulo,12/palmer,12/rothera,3/stanley,1/argentina/la_rioja,1/argentina/rio_gallegos,1/argentina/salta,1/argentina/san_juan,1/argentina/san_luis,1/argentina/tucuman,1/argentina/ushuaia,1/argentina/comodrivadavia,1/argentina/buenos_aires,1/argentina/catamarca,1/argentina/cordoba,1/argentina/jujuy,1/argentina/mendoza,1/argentina/rosario,1/rosario,5/east\",\"-3|n|03/09:04->11/02:02\":\"1/glace_bay,1/goose_bay,1/halifax,1/moncton,1/thule,3/bermuda,6/atlantic\",\"-3|n\":\"1/araguaina,1/bahia,1/belem,1/cayenne,1/maceio,1/paramaribo,1/recife,1/santarem\",\"-2|n|03/09:04->11/02:02\":\"1/miquelon\",\"-2|n\":\"1/noronha,3/south_georgia,5/denoronha\",\"-2.5|n|03/09:04->11/02:02\":\"1/st_johns,6/newfoundland\",\"-1|n|03/30:01->10/25:24\":\"1/nuuk,1/godthab\",\"-1|n\":\"3/cape_verde\",\"-11|n\":\"11/midway,11/niue,11/pago_pago,11/samoa,us/samoa\",\"-10|n\":\"11/honolulu,11/johnston,11/rarotonga,11/tahiti,us/hawaii,hst\"},s=[\"africa\",\"america\",\"asia\",\"atlantic\",\"australia\",\"brazil\",\"canada\",\"chile\",\"europe\",\"indian\",\"mexico\",\"pacific\",\"antarctica\",\"etc\"];let u={};Object.keys(o).forEach((e=>{let t=e.split(\"|\"),a={offset:Number(t[0]),hem:t[1]};t[2]&&(a.dst=t[2]),o[e].split(\",\").forEach((e=>{e=e.replace(/(^[0-9]+)\\//,((e,t)=>(t=Number(t),s[t]+\"/\"))),u[e]=a}))})),u.utc={offset:0,hem:\"n\"};for(let e=-14;e<=14;e+=.5){let t=e;t>0&&(t=\"+\"+t);let a=\"etc/gmt\"+t;u[a]={offset:-1*e,hem:\"n\"},a=\"utc/gmt\"+t,u[a]={offset:-1*e,hem:\"n\"}}const d=/(-?[0-9]+)h(rs)?/i,l=/(-?[0-9]+)/,h=/utc([\\-+]?[0-9]+)/i,m=/gmt([\\-+]?[0-9]+)/i,c=function(e){return(e=Number(e))>=-13&&e<=13?\"etc/gmt\"+(e=((e*=-1)>0?\"+\":\"\")+e):null};let f=(()=>{let e=(()=>{if(\"undefined\"==typeof Intl||void 0===Intl.DateTimeFormat)return null;let e=Intl.DateTimeFormat();if(void 0===e||void 0===e.resolvedOptions)return null;let t=e.resolvedOptions().timeZone;return t?t.toLowerCase():null})();return null===e?\"utc\":e})();const y=Object.keys(u).reduce(((e,t)=>{let a=t.split(\"/\")[1]||\"\";return a=a.replace(/_/g,\" \"),e[a]=t,e}),{}),p=(e,t)=>{if(!e)return t.hasOwnProperty(f)||(console.warn(`Unrecognized IANA id '${f}'. Setting fallback tz to UTC.`),f=\"utc\"),f;\"string\"!=typeof e&&console.error(\"Timezone must be a string - recieved: '\",e,\"'\\n\");let a=e.trim();if(a=a.toLowerCase(),!0===t.hasOwnProperty(a))return a;if(a=(e=>(e=(e=(e=(e=(e=e.replace(/ time/g,\"\")).replace(/ (standard|daylight|summer)/g,\"\")).replace(/\\b(east|west|north|south)ern/g,\"$1\")).replace(/\\b(africa|america|australia)n/g,\"$1\")).replace(/\\beuropean/g,\"europe\")).replace(/islands/g,\"island\"))(a),!0===t.hasOwnProperty(a))return a;if(!0===y.hasOwnProperty(a))return y[a];if(!0===/[0-9]/.test(a)){let e=function(e){let t=e.match(d);if(null!==t)return c(t[1]);if(t=e.match(h),null!==t)return c(t[1]);if(t=e.match(m),null!==t){let e=-1*Number(t[1]);return c(e)}return t=e.match(l),null!==t?c(t[1]):null}(a);if(e)return e}throw new Error(\"Spacetime: Cannot find timezone named: '\"+e+\"'. Please enter an IANA timezone id.\")};function g(e){return e%4==0&&e%100!=0||e%400==0}function w(e){return\"[object Date]\"===Object.prototype.toString.call(e)&&!isNaN(e.valueOf())}function b(e){return\"[object Object]\"===Object.prototype.toString.call(e)}function k(e,t=2){return(e+=\"\").length>=t?e:new Array(t-e.length+1).join(\"0\")+e}function D(e){let t=e%10,a=e%100;return 1===t&&11!==a?e+\"st\":2===t&&12!==a?e+\"nd\":3===t&&13!==a?e+\"rd\":e+\"th\"}function v(e){return e=(e=String(e)).replace(/([0-9])(st|nd|rd|th)$/i,\"$1\"),parseInt(e,10)}function x(e=\"\"){return\"day\"===(e=(e=(e=(e=e.toLowerCase().trim()).replace(/ies$/,\"y\")).replace(/s$/,\"\")).replace(/-/g,\"\"))||\"days\"===e?\"date\":\"min\"===e||\"mins\"===e?\"minute\":e}function O(e){return\"number\"==typeof e?e:w(e)?e.getTime():e.epoch||0===e.epoch?e.epoch:null}function M(e,t){return!1===b(e)?t.clone().set(e):e}function _(e,t=\"\"){const a=e>0?\"+\":\"-\",n=Math.abs(e);return`${a}${k(parseInt(\"\"+n,10))}${t}${k(n%1*60)}`}const j={year:(new Date).getFullYear(),month:0,date:1};var $={parseArray:(e,t,a)=>{if(0===t.length)return e;let n=[\"year\",\"month\",\"date\",\"hour\",\"minute\",\"second\",\"millisecond\"];for(let r=0;r<n.length;r++){let i=t[r]||a[n[r]]||j[n[r]]||0;e=e[n[r]](i)}return e},parseObject:(e,t,a)=>{if(0===Object.keys(t).length)return e;t=Object.assign({},j,a,t);let n=Object.keys(t);for(let r=0;r<n.length;r++){let i=n[r];if(void 0===e[i]||\"function\"!=typeof e[i])continue;if(null===t[i]||void 0===t[i]||\"\"===t[i])continue;let o=t[i]||a[i]||j[i]||0;e=e[i](o)}return e},parseNumber:function(e,t){return t>0&&t<25e8&&!1===e.silent&&(console.warn(\"  - Warning: You are setting the date to January 1970.\"),console.warn(\"       -   did input seconds instead of milliseconds?\")),e.epoch=t,e}};const z=function(e){return e.epoch=Date.now(),Object.keys(e._today||{}).forEach((t=>{\"function\"==typeof e[t]&&(e=e[t](e._today[t]))})),e},T={now:e=>z(e),today:e=>z(e),tonight:e=>e=(e=z(e)).hour(18),tomorrow:e=>e=(e=(e=z(e)).add(1,\"day\")).startOf(\"day\"),yesterday:e=>e=(e=(e=z(e)).subtract(1,\"day\")).startOf(\"day\"),christmas:e=>{let t=z(e).year();return e=e.set([t,11,25,18,0,0])},\"new years\":e=>{let t=z(e).year();return e=e.set([t,11,31,18,0,0])}};T[\"new years eve\"]=T[\"new years\"];let V={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5};V.date=V.day,V.month=25488e5,V.week=6048e5,V.year=3154e7,Object.keys(V).forEach((e=>{V[e+\"s\"]=V[e]}));const S=(e,t,a,n,r)=>{let i=e.d[a]();if(i===t)return;let o=null===r?null:e.d[r](),s=e.epoch,u=t-i;e.epoch+=V[n]*u,\"day\"===n&&Math.abs(u)>28&&t<28&&(e.epoch+=V.hour),null!==r&&o!==e.d[r]()&&(e.epoch=s);const d=V[n]/2;for(;e.d[a]()<t;)e.epoch+=d;for(;e.d[a]()>t;)e.epoch-=d;null!==r&&o!==e.d[r]()&&(e.epoch=s)},q={year:{valid:e=>e>-4e3&&e<4e3,walkTo:(e,t)=>S(e,t,\"getFullYear\",\"year\",null)},month:{valid:e=>e>=0&&e<=11,walkTo:(e,t)=>{let a=e.d,n=a.getMonth(),r=e.epoch,i=a.getFullYear();if(n===t)return;let o=t-n;for(e.epoch+=V.day*(28*o),i!==e.d.getFullYear()&&(e.epoch=r);e.d.getMonth()<t;)e.epoch+=V.day;for(;e.d.getMonth()>t;)e.epoch-=V.day}},date:{valid:e=>e>0&&e<=31,walkTo:(e,t)=>S(e,t,\"getDate\",\"day\",\"getMonth\")},hour:{valid:e=>e>=0&&e<24,walkTo:(e,t)=>S(e,t,\"getHours\",\"hour\",\"getDate\")},minute:{valid:e=>e>=0&&e<60,walkTo:(e,t)=>S(e,t,\"getMinutes\",\"minute\",\"getHours\")},second:{valid:e=>e>=0&&e<60,walkTo:(e,t)=>{e.epoch=e.seconds(t).epoch}},millisecond:{valid:e=>e>=0&&e<1e3,walkTo:(e,t)=>{e.epoch=e.milliseconds(t).epoch}}},C=(e,t)=>{let a=Object.keys(q),n=e.clone();for(let r=0;r<a.length;r++){let i=a[r],o=t[i];if(void 0===o&&(o=n[i]()),\"string\"==typeof o&&(o=parseInt(o,10)),!q[i].valid(o))return e.epoch=null,void(!1===e.silent&&console.warn(\"invalid \"+i+\": \"+o));q[i].walkTo(e,o)}},A=[31,28,31,30,31,30,31,31,30,31,30,31];let N=[\"jan\",\"feb\",\"mar\",\"apr\",\"may\",\"jun\",\"jul\",\"aug\",\"sep\",\"oct\",\"nov\",\"dec\"],E=[\"january\",\"february\",\"march\",\"april\",\"may\",\"june\",\"july\",\"august\",\"september\",\"october\",\"november\",\"december\"];function P(){return N}function Y(){return function(){const e={sep:8};for(let t=0;t<N.length;t++)e[N[t]]=t;for(let t=0;t<E.length;t++)e[E[t]]=t;return e}()}const B=(e,t)=>{if(!t)return e;t=t.trim().toLowerCase();let a=0;if(/^[+-]?[0-9]{2}:[0-9]{2}$/.test(t)&&(!0===/:00/.test(t)&&(t=t.replace(/:00/,\"\")),!0===/:30/.test(t)&&(t=t.replace(/:30/,\".5\"))),/^[+-]?[0-9]{4}$/.test(t)&&(t=t.replace(/30$/,\".5\")),a=parseFloat(t),Math.abs(a)>100&&(a/=100),0===a||\"Z\"===t||\"z\"===t)return e.tz=\"etc/gmt\",e;a*=-1,a>=0&&(a=\"+\"+a);let n=\"etc/gmt\"+a;return e.timezones[n]&&(e.tz=n),e},H=(e,t=\"\")=>{let a=(t=t.replace(/^\\s+/,\"\").toLowerCase()).match(/([0-9]{1,2}):([0-9]{1,2}):?([0-9]{1,2})?[:.]?([0-9]{1,4})?/);if(null!==a){let[,n,r,i,o]=a;if(n=Number(n),n<0||n>24)return e.startOf(\"day\");if(r=Number(r),a[2].length<2||r<0||r>59)return e.startOf(\"day\");e=(e=(e=(e=e.hour(n)).minute(r)).seconds(i||0)).millisecond(function(e=\"\"){return(e=String(e)).length>3?e=e.substring(0,3):1===e.length?e+=\"00\":2===e.length&&(e+=\"0\"),Number(e)||0}(o));let s=t.match(/[0-9] ?(am|pm)\\b/);return null!==s&&s[1]&&(e=e.ampm(s[1])),e}if(a=t.match(/([0-9]+) ?(am|pm)/),null!==a&&a[1]){let t=Number(a[1]);return t>12||t<1?e.startOf(\"day\"):e=(e=(e=e.hour(a[1]||0)).ampm(a[2])).startOf(\"hour\")}return e=e.startOf(\"day\")};let L=Y();const I=e=>{if(!0!==A.hasOwnProperty(e.month))return!1;if(1===e.month)return!!(g(e.year)&&e.date<=29)||e.date<=28;let t=A[e.month]||0;return e.date<=t},W=(e=\"\",t)=>{if(e=e.trim(),!0===/^'[0-9][0-9]$/.test(e)){let t=Number(e.replace(/'/,\"\"));return t>50?1900+t:2e3+t}let a=parseInt(e,10);return!a&&t&&(a=t.year),a=a||(new Date).getFullYear(),a},F=function(e){return\"sept\"===(e=e.toLowerCase().trim())?L.sep:L[e]};var J=[{reg:/^([0-9]{1,2})[-/.]([0-9]{1,2})[\\-/.]?([0-9]{4})?( [0-9]{1,2}:[0-9]{2}:?[0-9]{0,2} ?(am|pm|gmt))?$/i,parse:(e,t)=>{let a=parseInt(t[1],10)-1,n=parseInt(t[2],10);(e.british||a>=12)&&(n=parseInt(t[1],10),a=parseInt(t[2],10)-1);let r={date:n,month:a,year:W(t[3],e._today)||(new Date).getFullYear()};return!1===I(r)?(e.epoch=null,e):(C(e,r),e=H(e,t[4]))}},{reg:/^([a-z]+)[\\-/. ]([0-9]{1,2})[\\-/. ]?([0-9]{4}|'[0-9]{2})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let a={year:W(t[3],e._today),month:F(t[1]),date:v(t[2]||\"\")};return!1===I(a)?(e.epoch=null,e):(C(e,a),e=H(e,t[4]))}},{reg:/^([a-z]+) ([0-9]{1,2})( [0-9]{4})?( ([0-9:]+( ?am| ?pm| ?gmt)?))?$/i,parse:(e,t)=>{let a={year:W(t[3],e._today),month:F(t[1]),date:v(t[2]||\"\")};return!1===I(a)?(e.epoch=null,e):(C(e,a),e=H(e,t[4]))}},{reg:/^([a-z]+) ([0-9]{1,2}) ([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2})( \\+[0-9]{4})?( [0-9]{4})?$/i,parse:(e,t)=>{let[,a,n,r,i,o]=t,s={year:W(o,e._today),month:F(a),date:v(n||\"\")};return!1===I(s)?(e.epoch=null,e):(C(e,s),e=B(e,i),e=H(e,r))}}],U=[{reg:/^([0-9]{4})[\\-/]([0-9]{2})$/,parse:(e,t)=>{let a={year:t[1],month:parseInt(t[2],10)-1,date:1};return!1===I(a)?(e.epoch=null,e):(C(e,a),e=H(e,t[4]))}},{reg:/^([a-z]+) ([0-9]{4})$/i,parse:(e,t)=>{let a={year:W(t[2],e._today),month:F(t[1]),date:e._today.date||1};return!1===I(a)?(e.epoch=null,e):(C(e,a),e=H(e,t[4]))}},{reg:/^(q[0-9])( of)?( [0-9]{4})?/i,parse:(e,t)=>{let a=t[1]||\"\";e=e.quarter(a);let n=t[3]||\"\";return n&&(n=n.trim(),e=e.year(n)),e}},{reg:/^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,parse:(e,t)=>{let a=t[1]||\"\";e=e.season(a);let n=t[3]||\"\";return n&&(n=n.trim(),e=e.year(n)),e}},{reg:/^[0-9,]+ ?b\\.?c\\.?$/i,parse:(e,t)=>{let a=t[0]||\"\";a=a.replace(/^([0-9,]+) ?b\\.?c\\.?$/i,\"-$1\");let n=new Date,r={year:parseInt(a.trim(),10),month:n.getMonth(),date:n.getDate()};return!1===I(r)?(e.epoch=null,e):(C(e,r),e=H(e))}},{reg:/^[0-9,]+ ?(a\\.?d\\.?|c\\.?e\\.?)$/i,parse:(e,t)=>{let a=t[0]||\"\";a=a.replace(/,/g,\"\");let n=new Date,r={year:parseInt(a.trim(),10),month:n.getMonth(),date:n.getDate()};return!1===I(r)?(e.epoch=null,e):(C(e,r),e=H(e))}},{reg:/^[0-9]{4}( ?a\\.?d\\.?)?$/i,parse:(e,t)=>{let a=e._today;a.month&&!a.date&&(a.date=1);let n=new Date,r={year:W(t[0],a),month:a.month||n.getMonth(),date:a.date||n.getDate()};return!1===I(r)?(e.epoch=null,e):(C(e,r),e=H(e))}}],K=[].concat([{reg:/^(-?0{0,2}[0-9]{3,4})-([0-9]{1,2})-([0-9]{1,2})[T| ]([0-9.:]+)(Z|[0-9-+:]+)?$/i,parse:(e,t)=>{let a={year:t[1],month:parseInt(t[2],10)-1,date:t[3]};return!1===I(a)?(e.epoch=null,e):(B(e,t[5]),C(e,a),e=H(e,t[4]))}},{reg:/^([0-9]{4})[\\-/. ]([0-9]{1,2})[\\-/. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let a={year:t[1],month:parseInt(t[2],10)-1,date:parseInt(t[3],10)};return a.month>=12&&(a.date=parseInt(t[2],10),a.month=parseInt(t[3],10)-1),!1===I(a)?(e.epoch=null,e):(C(e,a),e=H(e,t[4]))}},{reg:/^([0-9]{4})[\\-/. ]([a-z]+)[\\-/. ]([0-9]{1,2})( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let a={year:W(t[1],e._today),month:F(t[2]),date:v(t[3]||\"\")};return!1===I(a)?(e.epoch=null,e):(C(e,a),e=H(e,t[4]))}}],J,[{reg:/^([0-9]{1,2})[-/]([a-z]+)[\\-/]?([0-9]{4})?$/i,parse:(e,t)=>{let a={year:W(t[3],e._today),month:F(t[2]),date:v(t[1]||\"\")};return!1===I(a)?(e.epoch=null,e):(C(e,a),e=H(e,t[4]))}},{reg:/^([0-9]{1,2})( [a-z]+)( [0-9]{4}| '[0-9]{2})? ?([0-9]{1,2}:[0-9]{2}:?[0-9]{0,2} ?(am|pm|gmt))?$/i,parse:(e,t)=>{let a={year:W(t[3],e._today),month:F(t[2]),date:v(t[1])};return a.month&&!1!==I(a)?(C(e,a),e=H(e,t[4])):(e.epoch=null,e)}},{reg:/^([0-9]{1,2})[. \\-/]([a-z]+)[. \\-/]([0-9]{4})?( [0-9]{1,2}(:[0-9]{0,2})?(:[0-9]{0,3})? ?(am|pm)?)?$/i,parse:(e,t)=>{let a={date:Number(t[1]),month:F(t[2]),year:Number(t[3])};return!1===I(a)?(e.epoch=null,e):(C(e,a),e=e.startOf(\"day\"),e=H(e,t[4]))}}],U);const{parseArray:Q,parseObject:R,parseNumber:G}=$,Z={year:(new Date).getFullYear(),month:0,date:1},X=(e,t)=>{let a=e._today||Z;if(\"number\"==typeof t)return G(e,t);if(e.epoch=Date.now(),e._today&&b(e._today)&&Object.keys(e._today).length>0){let t=R(e,a,Z);t.isValid()&&(e.epoch=t.epoch)}return null==t||\"\"===t?e:!0===w(t)?(e.epoch=t.getTime(),e):!0===function(e){return\"[object Array]\"===Object.prototype.toString.call(e)}(t)?e=Q(e,t,a):!0===b(t)?t.epoch?(e.epoch=t.epoch,e.tz=t.tz,e):e=R(e,t,a):\"string\"!=typeof t?e:(t=t.replace(/\\b(mon|tues?|wed|wednes|thur?s?|fri|sat|satur|sun)(day)?\\b/i,\"\").replace(/([0-9])(th|rd|st|nd)/,\"$1\").replace(/,/g,\"\").replace(/ +/g,\" \").trim(),!0===T.hasOwnProperty(t)?e=T[t](e):function(e,t,a){for(let n=0;n<K.length;n++){let r=t.match(K[n].reg);if(r){let t=K[n].parse(e,r,a);if(null!==t&&t.isValid())return t}}return!1===e.silent&&console.warn(\"Warning: couldn't parse date-string: '\"+t+\"'\"),e.epoch=null,e}(e,t))};let ee=[\"sun\",\"mon\",\"tue\",\"wed\",\"thu\",\"fri\",\"sat\"],te=[\"sunday\",\"monday\",\"tuesday\",\"wednesday\",\"thursday\",\"friday\",\"saturday\"];function ae(){return ee}function ne(){return te}const re={mo:1,tu:2,we:3,th:4,fr:5,sa:6,su:7,tues:2,weds:3,wedn:3,thur:4,thurs:4};let ie=!0;const oe=e=>{let t=e.timezone().current.offset;return t?_(t,\":\"):\"Z\"},se=e=>ie?function(e){return e?e[0].toUpperCase()+e.substr(1):\"\"}(e):e,ue={day:e=>se(e.dayName()),\"day-short\":e=>se(ae()[e.day()]),\"day-number\":e=>e.day(),\"day-ordinal\":e=>D(e.day()),\"day-pad\":e=>k(e.day()),date:e=>e.date(),\"date-ordinal\":e=>D(e.date()),\"date-pad\":e=>k(e.date()),month:e=>se(e.monthName()),\"month-short\":e=>se(P()[e.month()]),\"month-number\":e=>e.month(),\"month-ordinal\":e=>D(e.month()),\"month-pad\":e=>k(e.month()),\"iso-month\":e=>k(e.month()+1),year:e=>{let t=e.year();return t>0?t:(t=Math.abs(t),t+\" BC\")},\"year-short\":e=>{let t=e.year();return t>0?`'${String(e.year()).substr(2,4)}`:(t=Math.abs(t),t+\" BC\")},\"iso-year\":e=>{let t=e.year(),a=t<0,n=k(Math.abs(t),4);return a&&(n=k(n,6),n=\"-\"+n),n},time:e=>e.time(),\"time-24\":e=>`${e.hour24()}:${k(e.minute())}`,hour:e=>e.hour12(),\"hour-pad\":e=>k(e.hour12()),\"hour-24\":e=>e.hour24(),\"hour-24-pad\":e=>k(e.hour24()),minute:e=>e.minute(),\"minute-pad\":e=>k(e.minute()),second:e=>e.second(),\"second-pad\":e=>k(e.second()),millisecond:e=>e.millisecond(),\"millisecond-pad\":e=>k(e.millisecond(),3),ampm:e=>e.ampm(),AMPM:e=>e.ampm().toUpperCase(),quarter:e=>\"Q\"+e.quarter(),season:e=>e.season(),era:e=>e.era(),json:e=>e.json(),timezone:e=>e.timezone().name,offset:e=>oe(e),numeric:e=>`${e.year()}/${k(e.month()+1)}/${k(e.date())}`,\"numeric-us\":e=>`${k(e.month()+1)}/${k(e.date())}/${e.year()}`,\"numeric-uk\":e=>`${k(e.date())}/${k(e.month()+1)}/${e.year()}`,\"mm/dd\":e=>`${k(e.month()+1)}/${k(e.date())}`,iso:e=>`${e.format(\"iso-year\")}-${k(e.month()+1)}-${k(e.date())}T${k(e.h24())}:${k(e.minute())}:${k(e.second())}.${k(e.millisecond(),3)}${oe(e)}`,\"iso-short\":e=>{let t=k(e.month()+1),a=k(e.date());var n;return`${(n=e.year())>=0?k(n,4):\"-\"+k(n=Math.abs(n),4)}-${t}-${a}`},\"iso-utc\":e=>new Date(e.epoch).toISOString(),nice:e=>`${P()[e.month()]} ${D(e.date())}, ${e.time()}`,\"nice-24\":e=>`${P()[e.month()]} ${D(e.date())}, ${e.hour24()}:${k(e.minute())}`,\"nice-year\":e=>`${P()[e.month()]} ${D(e.date())}, ${e.year()}`,\"nice-day\":e=>`${ae()[e.day()]} ${se(P()[e.month()])} ${D(e.date())}`,\"nice-full\":e=>`${e.dayName()} ${se(e.monthName())} ${D(e.date())}, ${e.time()}`,\"nice-full-24\":e=>`${e.dayName()} ${se(e.monthName())} ${D(e.date())}, ${e.hour24()}:${k(e.minute())}`},de={\"day-name\":\"day\",\"month-name\":\"month\",\"iso 8601\":\"iso\",\"time-h24\":\"time-24\",\"time-12\":\"time\",\"time-h12\":\"time\",tz:\"timezone\",\"day-num\":\"day-number\",\"month-num\":\"month-number\",\"month-iso\":\"iso-month\",\"year-iso\":\"iso-year\",\"nice-short\":\"nice\",\"nice-short-24\":\"nice-24\",mdy:\"numeric-us\",dmy:\"numeric-uk\",ymd:\"numeric\",\"yyyy/mm/dd\":\"numeric\",\"mm/dd/yyyy\":\"numeric-us\",\"dd/mm/yyyy\":\"numeric-us\",\"little-endian\":\"numeric-uk\",\"big-endian\":\"numeric\",\"day-nice\":\"nice-day\"};Object.keys(de).forEach((e=>ue[e]=ue[de[e]]));const le=(e,t=\"\")=>{if(!0!==e.isValid())return\"\";if(ue.hasOwnProperty(t)){let a=ue[t](e)||\"\";return\"json\"!==t&&(a=String(a),\"ampm\"!==t.toLowerCase()&&(a=se(a))),a}if(-1!==t.indexOf(\"{\")){let a=/\\{(.+?)\\}/g;return t=t.replace(a,((t,a)=>{if(\"AMPM\"!==(a=a.trim())&&(a=a.toLowerCase()),ue.hasOwnProperty(a)){let t=String(ue[a](e));return\"ampm\"!==a.toLowerCase()?se(t):t}return\"\"})),t}return e.format(\"iso-short\")},he={G:e=>e.era(),GG:e=>e.era(),GGG:e=>e.era(),GGGG:e=>\"AD\"===e.era()?\"Anno Domini\":\"Before Christ\",y:e=>e.year(),yy:e=>k(Number(String(e.year()).substr(2,4))),yyy:e=>e.year(),yyyy:e=>e.year(),yyyyy:e=>\"0\"+e.year(),Q:e=>e.quarter(),QQ:e=>e.quarter(),QQQ:e=>e.quarter(),QQQQ:e=>e.quarter(),M:e=>e.month()+1,MM:e=>k(e.month()+1),MMM:e=>e.format(\"month-short\"),MMMM:e=>e.format(\"month\"),w:e=>e.week(),ww:e=>k(e.week()),d:e=>e.date(),dd:e=>k(e.date()),D:e=>e.dayOfYear(),DD:e=>k(e.dayOfYear()),DDD:e=>k(e.dayOfYear(),3),E:e=>e.format(\"day-short\"),EE:e=>e.format(\"day-short\"),EEE:e=>e.format(\"day-short\"),EEEE:e=>e.format(\"day\"),EEEEE:e=>e.format(\"day\")[0],e:e=>e.day(),ee:e=>e.day(),eee:e=>e.format(\"day-short\"),eeee:e=>e.format(\"day\"),eeeee:e=>e.format(\"day\")[0],a:e=>e.ampm().toUpperCase(),aa:e=>e.ampm().toUpperCase(),aaa:e=>e.ampm().toUpperCase(),aaaa:e=>e.ampm().toUpperCase(),h:e=>e.h12(),hh:e=>k(e.h12()),H:e=>e.hour(),HH:e=>k(e.hour()),m:e=>e.minute(),mm:e=>k(e.minute()),s:e=>e.second(),ss:e=>k(e.second()),SSS:e=>k(e.millisecond(),3),A:e=>e.epoch-e.startOf(\"day\").epoch,z:e=>e.timezone().name,zz:e=>e.timezone().name,zzz:e=>e.timezone().name,zzzz:e=>e.timezone().name,Z:e=>_(e.timezone().current.offset),ZZ:e=>_(e.timezone().current.offset),ZZZ:e=>_(e.timezone().current.offset),ZZZZ:e=>_(e.timezone().current.offset,\":\")},me=(e,t,a)=>{let n=e,r=t;for(let i=0;i<a;i+=1)he[n]=he[r],n+=e,r+=t};me(\"q\",\"Q\",4),me(\"L\",\"M\",4),me(\"Y\",\"y\",4),me(\"c\",\"e\",4),me(\"k\",\"H\",2),me(\"K\",\"h\",2),me(\"S\",\"s\",2),me(\"v\",\"z\",4),me(\"V\",\"Z\",4);const ce=[\"year\",\"season\",\"quarter\",\"month\",\"week\",\"day\",\"quarterHour\",\"hour\",\"minute\"],fe=function(e,t){let a=e.clone().startOf(t),n=e.clone().endOf(t).epoch-a.epoch,r=(e.epoch-a.epoch)/n;return parseFloat(r.toFixed(2))},ye=(e,t,a)=>{let n=0;for(e=e.clone();e.isBefore(t);)e=e.add(1,a),n+=1;return e.isAfter(t,a)&&(n-=1),n},pe=(e,t,a)=>e.isBefore(t)?ye(e,t,a):-1*ye(t,e,a),ge=function(e,t,a){t=M(t,e);let n=!1;if(e.isAfter(t)){let a=e;e=t,t=a,n=!0}let r=function(e,t){let a=t.epoch-e.epoch,n={milliseconds:a,seconds:parseInt(a/1e3,10)};n.minutes=parseInt(n.seconds/60,10),n.hours=parseInt(n.minutes/60,10);let r=e.clone();return n.years=((e,t)=>{let a=t.year()-e.year();return(e=e.year(t.year())).isAfter(t)&&(a-=1),a})(r,t),r=e.add(n.years,\"year\"),n.months=12*n.years,r=e.add(n.months,\"month\"),n.months+=pe(r,t,\"month\"),n.quarters=4*n.years,n.quarters+=parseInt(n.months%12/3,10),n.weeks=52*n.years,r=e.add(n.weeks,\"week\"),n.weeks+=pe(r,t,\"week\"),n.days=7*n.weeks,r=e.add(n.days,\"day\"),n.days+=pe(r,t,\"day\"),n}(e,t);return n&&(r=function(e){return Object.keys(e).forEach((t=>{e[t]*=-1})),e}(r)),a?(a=x(a),!0!==/s$/.test(a)&&(a+=\"s\"),\"dates\"===a&&(a=\"days\"),r[a]):r},we=e=>Math.abs(e)||0;let be={second:\"second\",seconds:\"seconds\",minute:\"minute\",minutes:\"minutes\",hour:\"hour\",hours:\"hours\",day:\"day\",days:\"days\",month:\"month\",months:\"months\",year:\"year\",years:\"years\"};function ke(e){return be[e]||\"\"}let De=\"past\",ve=\"future\",xe=\"present\",Oe=\"now\",Me=\"almost\",_e=\"over\",je=e=>`${e} ago`,$e=e=>`in ${e}`;function ze(e){return je(e)}function Te(e){return $e(e)}function Ve(){return Oe}const Se={months:{almost:10,over:4},days:{almost:25,over:10},hours:{almost:20,over:8},minutes:{almost:50,over:20},seconds:{almost:50,over:20}};function qe(e,t){return 1===e?e+\" \"+ke(t.slice(0,-1)):e+\" \"+ke(t)}const Ce=function(e){let t=null,a=null,n=[],r=[];return Object.keys(e).forEach(((i,o,s)=>{const u=Math.abs(e[i]);if(0===u)return;n.push(u+i[0]);const d=qe(u,i);if(r.push(d),!t){if(t=d,a=d,o>4)return;const n=s[o+1],r=Math.abs(e[n]);r>Se[n].almost?(t=qe(u+1,i),a=Me+\" \"+t):r>Se[n].over&&(a=_e+\" \"+d)}})),{qualified:a,rounded:t,abbreviated:n,englishValues:r}},Ae=(e,t)=>{const a=function(e,t){const a=e.isBefore(t),n=a?t:e;let r=a?e:t;r=r.clone();const i={years:0,months:0,days:0,hours:0,minutes:0,seconds:0};return Object.keys(i).forEach((e=>{if(r.isSame(n,e))return;let t=r.diff(n,e);r=r.add(t,e),i[e]=t})),a&&Object.keys(i).forEach((e=>{0!==i[e]&&(i[e]*=-1)})),i}(e,t=M(t,e));if(!0===Object.keys(a).every((e=>!a[e])))return{diff:a,rounded:Ve(),qualified:Ve(),precise:Ve(),abbreviated:[],iso:\"P0Y0M0DT0H0M0S\",direction:xe};let n,r=ve,{rounded:i,qualified:o,englishValues:s,abbreviated:u}=Ce(a);n=s.splice(0,2).join(\", \"),!0===e.isAfter(t)?(i=ze(i),o=ze(o),n=ze(n),r=De):(i=Te(i),o=Te(o),n=Te(n));let d=function(e){let t=\"P\";return t+=we(e.years)+\"Y\",t+=we(e.months)+\"M\",t+=we(e.days)+\"DT\",t+=we(e.hours)+\"H\",t+=we(e.minutes)+\"M\",t+=we(e.seconds)+\"S\",t}(a);return{diff:a,rounded:i,qualified:o,precise:n,abbreviated:u,iso:d,direction:r}};var Ne={north:[[\"spring\",2,1],[\"summer\",5,1],[\"fall\",8,1],[\"autumn\",8,1],[\"winter\",11,1]],south:[[\"fall\",2,1],[\"autumn\",2,1],[\"winter\",5,1],[\"spring\",8,1],[\"summer\",11,1]]},Ee=[null,[0,1],[3,1],[6,1],[9,1]];const Pe={second:e=>(C(e,{millisecond:0}),e),minute:e=>(C(e,{second:0,millisecond:0}),e),quarterhour:e=>{let t=e.minutes();return e=t>=45?e.minutes(45):t>=30?e.minutes(30):t>=15?e.minutes(15):e.minutes(0),C(e,{second:0,millisecond:0}),e},hour:e=>(C(e,{minute:0,second:0,millisecond:0}),e),day:e=>(C(e,{hour:0,minute:0,second:0,millisecond:0}),e),week:e=>{let t=e.clone();return(e=e.day(e._weekStart)).isAfter(t)&&(e=e.subtract(1,\"week\")),C(e,{hour:0,minute:0,second:0,millisecond:0}),e},month:e=>(C(e,{date:1,hour:0,minute:0,second:0,millisecond:0}),e),quarter:e=>{let t=e.quarter();return Ee[t]&&C(e,{month:Ee[t][0],date:Ee[t][1],hour:0,minute:0,second:0,millisecond:0}),e},season:e=>{let t=e.season(),a=\"north\";\"South\"===e.hemisphere()&&(a=\"south\");for(let n=0;n<Ne[a].length;n++)if(Ne[a][n][0]===t){let r=e.year();return\"winter\"===t&&e.month()<3&&(r-=1),C(e,{year:r,month:Ne[a][n][1],date:Ne[a][n][2],hour:0,minute:0,second:0,millisecond:0}),e}return e},year:e=>(C(e,{month:0,date:1,hour:0,minute:0,second:0,millisecond:0}),e),decade:e=>{let t=(e=e.startOf(\"year\")).year(),a=10*parseInt(t/10,10);return e=e.year(a)},century:e=>{let t=(e=e.startOf(\"year\")).year(),a=100*parseInt(t/100,10);return e=e.year(a)}};Pe.date=Pe.day;const Ye=function(e,t,a,n=1){if(!t||!a)return[];if(t=x(t),a=e.clone().set(a),e.isAfter(a)){let t=e;e=a,a=t}if(e.diff(a,t)<n)return[];let r=e.clone();if(function(e){return!!ae().find((t=>t===e))||!!ne().find((t=>t===e))}(t))r=r.next(t),t=\"week\";else{r.startOf(t).isBefore(e)&&(r=r.next(t))}let i=[];for(;r.isBefore(a);)i.push(r),r=r.add(n,t);return i},Be=e=>{let t=e.timezones,a=e.tz;if(!1===t.hasOwnProperty(a)&&(a=p(e.tz,t)),null===a)return!1===e.silent&&console.warn(\"Warn: could not find given or local timezone - '\"+e.tz+\"'\"),{current:{epochShift:0}};let n=t[a],r={name:(o=a,o=(o=(o=(o=(o=(o=(o=o[0].toUpperCase()+o.substr(1)).replace(/[/_-]([a-z])/gi,(e=>e.toUpperCase()))).replace(/_(of|es)_/i,(e=>e.toLowerCase()))).replace(/\\/gmt/i,\"/GMT\")).replace(/\\/Dumontdurville$/i,\"/DumontDUrville\")).replace(/\\/Mcmurdo$/i,\"/McMurdo\")).replace(/\\/Port-au-prince$/i,\"/Port-au-Prince\")),hasDst:Boolean(n.dst),default_offset:n.offset,hemisphere:\"s\"===n.hem?\"South\":\"North\",current:{}};var o,s;if(r.hasDst){let e=(s=n.dst)?s.split(\"->\"):[];r.change={start:e[0],back:e[1]}}let u=n.offset,d=u;return!0===r.hasDst&&(d=\"North\"===r.hemisphere?u-1:n.offset+1),!1===r.hasDst?(r.current.offset=u,r.current.isDST=!1):!0===i(e.epoch,r.change.start,r.change.back,u,d)?(r.current.offset=u,r.current.isDST=\"North\"===r.hemisphere):(r.current.offset=d,r.current.isDST=\"South\"===r.hemisphere),r},He=[\"century\",\"decade\",\"year\",\"month\",\"date\",\"day\",\"hour\",\"minute\",\"second\",\"millisecond\"],Le={set:function(e,t){let a=this.clone();return a=X(a,e),t&&(this.tz=p(t)),a},timezone:function(){return Be(this)},isDST:function(){return Be(this).current.isDST},hasDST:function(){return Be(this).hasDst},offset:function(){return 60*Be(this).current.offset},hemisphere:function(){return Be(this).hemisphere},format:function(e){return le(this,e)},unixFmt:function(e){return((e,t)=>{let a=t.split(\"\");return a=function(e){for(let t=0;t<e.length;t+=1)if(\"'\"===e[t])for(let a=t+1;a<e.length;a+=1){if(e[a]&&(e[t]+=e[a]),\"'\"===e[a]){e[a]=null;break}e[a]=null}return e.filter((e=>e))}(a),a=function(e){for(let t=0;t<e.length;t+=1){let a=e[t];for(let n=t+1;n<e.length&&e[n]===a;n+=1)e[t]+=e[n],e[n]=null}return(e=e.filter((e=>e))).map((e=>(\"''\"===e&&(e=\"'\"),e)))}(a),a.reduce(((t,a)=>(void 0!==he[a]?t+=he[a](e)||\"\":(/^'.+'$/.test(a)&&(a=a.replace(/'/g,\"\")),t+=a),t)),\"\")})(this,e)},startOf:function(e){return((e,t)=>{let a=e.clone();return t=x(t),Pe[t]?Pe[t](a):\"summer\"===t||\"winter\"===t?(a=a.season(t),Pe.season(a)):a})(this,e)},endOf:function(e){return((e,t)=>{let a=e.clone();return t=x(t),Pe[t]?(a=Pe[t](a),a=a.add(1,t),a=a.subtract(1,\"millisecond\"),a):a})(this,e)},leapYear:function(){return g(this.year())},progress:function(e){return((e,t)=>{if(t)return t=x(t),fe(e,t);let a={};return ce.forEach((t=>{a[t]=fe(e,t)})),a})(this,e)},nearest:function(e){return((e,t)=>{let a=e.progress();return\"quarterhour\"===(t=x(t))&&(t=\"quarterHour\"),void 0!==a[t]?(a[t]>.5&&(e=e.add(1,t)),e=e.startOf(t)):!1===e.silent&&console.warn(\"no known unit '\"+t+\"'\"),e})(this,e)},diff:function(e,t){return ge(this,e,t)},since:function(e){return e||(e=this.clone().set()),Ae(this,e)},next:function(e){return this.add(1,e).startOf(e)},last:function(e){return this.subtract(1,e).startOf(e)},isValid:function(){return!(!this.epoch&&0!==this.epoch)&&!isNaN(this.d.getTime())},goto:function(e){let t=this.clone();return t.tz=p(e,t.timezones),t},every:function(e,t,a){if(\"object\"==typeof e&&\"string\"==typeof t){let a=t;t=e,e=a}return Ye(this,e,t,a)},isAwake:function(){let e=this.hour();return!(e<8||e>22)},isAsleep:function(){return!this.isAwake()},daysInMonth:function(){switch(this.month()){case 0:case 2:case 4:case 6:case 7:case 9:case 11:return 31;case 1:return this.leapYear()?29:28;case 3:case 5:case 8:case 10:return 30;default:throw new Error(\"Invalid Month state.\")}},log:function(){return console.log(\"\"),console.log(le(this,\"nice-short\")),this},logYear:function(){return console.log(\"\"),console.log(le(this,\"full-short\")),this},json:function(){return He.reduce(((e,t)=>(e[t]=this[t](),e)),{})},debug:function(){let e=this.timezone(),t=this.format(\"MM\")+\" \"+this.format(\"date-ordinal\")+\" \"+this.year();return t+=\"\\n     - \"+this.format(\"time\"),console.log(\"\\n\\n\",t+\"\\n     - \"+e.name+\" (\"+e.current.offset+\")\"),this},from:function(e){return(e=this.clone().set(e)).since(this)},fromNow:function(){return this.clone().set(Date.now()).since(this)},weekStart:function(e){if(\"number\"==typeof e)return this._weekStart=e,this;if(\"string\"==typeof e){e=e.toLowerCase().trim();let t=ae().indexOf(e);-1===t&&(t=ne().indexOf(e)),-1===t&&(t=1),this._weekStart=t}else console.warn(\"Spacetime Error: Cannot understand .weekStart() input:\",e);return this}};Le.inDST=Le.isDST,Le.round=Le.nearest,Le.each=Le.every;const Ie=e=>(\"string\"==typeof e&&(e=parseInt(e,10)),e),We=[\"year\",\"month\",\"date\",\"hour\",\"minute\",\"second\",\"millisecond\"],Fe=(e,t,a)=>{let n=We.indexOf(a),r=We.slice(n,We.length);for(let a=0;a<r.length;a++){let n=t[r[a]]();e[r[a]](n)}return e},Je=function(e,t,a,n){return!0===a&&e.isBefore(t)?e=e.add(1,n):!1===a&&e.isAfter(t)&&(e=e.minus(1,n)),e},Ue=function(e,t,a){t=Ie(t);let n=e.clone(),r=(e.minute()-t)*V.minute;return e.epoch-=r,Fe(e,n,\"second\"),(e=Je(e,n,a,\"hour\")).epoch},Ke=function(e,t,a){(t=Ie(t))>=24?t=24:t<0&&(t=0);let n=e.clone(),r=e.hour()-t,i=r*V.hour;return e.epoch-=i,e.date()!==n.date()&&(e=n.clone(),r>1&&(r-=1),r<1&&(r+=1),i=r*V.hour,e.epoch-=i),C(e,{hour:t}),Fe(e,n,\"minute\"),(e=Je(e,n,a,\"day\")).epoch},Qe=function(e,t){return\"string\"==typeof t&&/^'[0-9]{2}$/.test(t)&&(t=t.replace(/'/,\"\").trim(),t=(t=Number(t))>30?1900+t:2e3+t),t=Ie(t),C(e,{year:t}),e.epoch};let Re=\"am\",Ge=\"pm\";const Ze={millisecond:function(e){if(void 0!==e){let t=this.clone();return t.epoch=function(e,t){t=Ie(t);let a=e.millisecond()-t;return e.epoch-a}(t,e),t}return this.d.getMilliseconds()},second:function(e,t){if(void 0!==e){let a=this.clone();return a.epoch=function(e,t,a){t=Ie(t);let n=e.clone(),r=(e.second()-t)*V.second;return e.epoch=e.epoch-r,(e=Je(e,n,a,\"minute\")).epoch}(a,e,t),a}return this.d.getSeconds()},minute:function(e,t){if(void 0!==e){let a=this.clone();return a.epoch=Ue(a,e,t),a}return this.d.getMinutes()},hour:function(e,t){let a=this.d;if(void 0!==e){let a=this.clone();return a.epoch=Ke(a,e,t),a}return a.getHours()},hourFloat:function(e,t){if(void 0!==e){let a=this.clone(),n=e%1;n*=60;let r=parseInt(e,10);return a.epoch=Ke(a,r,t),a.epoch=Ue(a,n,t),a}let a=this.d,n=a.getHours(),r=a.getMinutes();return r/=60,n+r},hour12:function(e,t){let a=this.d;if(void 0!==e){let a=this.clone(),n=(e=\"\"+e).match(/^([0-9]+)(am|pm)$/);if(n){let e=parseInt(n[1],10);\"pm\"===n[2]&&(e+=12),a.epoch=Ke(a,e,t)}return a}let n=a.getHours();return n>12&&(n-=12),0===n&&(n=12),n},time:function(e,t){if(void 0!==e){let a=this.clone();return e=e.toLowerCase().trim(),a.epoch=function(e,t,a){let n=t.match(/([0-9]{1,2})[:h]([0-9]{1,2})(:[0-9]{1,2})? ?(am|pm)?/);if(!n){if(n=t.match(/([0-9]{1,2}) ?(am|pm)/),!n)return e.epoch;n.splice(2,0,\"0\"),n.splice(3,0,\"\")}let r=!1,i=parseInt(n[1],10),o=parseInt(n[2],10);o>=60&&(o=59),i>12&&(r=!0),!1===r&&(\"am\"===n[4]&&12===i&&(i=0),\"pm\"===n[4]&&i<12&&(i+=12)),n[3]=n[3]||\"\",n[3]=n[3].replace(/:/,\"\");let s=parseInt(n[3],10)||0,u=e.clone();return e=(e=(e=(e=e.hour(i)).minute(o)).second(s)).millisecond(0),(e=Je(e,u,a,\"day\")).epoch}(a,e,t),a}return`${this.h12()}:${k(this.minute())}${this.ampm()}`},ampm:function(e,t){let a=Re,n=this.hour();if(n>=12&&(a=Ge),\"string\"!=typeof e)return a;let r=this.clone();return e=e.toLowerCase().trim(),n>=12&&\"am\"===e?(n-=12,r.hour(n,t)):n<12&&\"pm\"===e?(n+=12,r.hour(n,t)):r},dayTime:function(e,t){if(void 0!==e){const a={morning:\"7:00\",breakfast:\"7:00\",noon:\"12:00\",lunch:\"12:00\",afternoon:\"14:00\",evening:\"18:00\",dinner:\"18:00\",night:\"23:00\",midnight:\"00:00\"};let n=this.clone();return e=(e=e||\"\").toLowerCase(),!0===a.hasOwnProperty(e)&&(n=n.time(a[e],t)),n}let a=this.hour();return a<6?\"night\":a<12?\"morning\":a<17?\"afternoon\":a<22?\"evening\":\"night\"},iso:function(e){return void 0!==e?this.set(e):this.format(\"iso\")}},Xe={date:function(e,t){if(void 0!==e){let a=this.clone();return(e=parseInt(e,10))&&(a.epoch=function(e,t,a){if((t=Ie(t))>28){let a=e.month(),n=A[a];1===a&&29===t&&g(e.year())&&(n=29),t>n&&(t=n)}t<=0&&(t=1);let n=e.clone();return C(e,{date:t}),(e=Je(e,n,a,\"month\")).epoch}(a,e,t)),a}return this.d.getDate()},day:function(e,t){if(void 0===e)return this.d.getDay();let a=this.clone(),n=e;\"string\"==typeof e&&(e=e.toLowerCase(),re.hasOwnProperty(e)?n=re[e]:(n=ae().indexOf(e),-1===n&&(n=ne().indexOf(e))));let r=this.d.getDay()-n;!0===t&&r>0&&(r-=7),!1===t&&r<0&&(r+=7);let i=this.subtract(r,\"days\");return C(i,{hour:a.hour(),minute:a.minute(),second:a.second()}),i},dayName:function(e,t){if(void 0===e)return ne()[this.day()];let a=this.clone();return a=a.day(e,t),a}},et=e=>e=(e=(e=e.minute(0)).second(0)).millisecond(1),tt={dayOfYear:function(e,t){if(void 0!==e){let a=this.clone();return a.epoch=function(e,t,a){t=Ie(t);let n=e.clone();return(t-=1)<=0?t=0:t>=365&&(t=g(e.year())?365:364),e=(e=e.startOf(\"year\")).add(t,\"day\"),Fe(e,n,\"hour\"),(e=Je(e,n,a,\"year\")).epoch}(a,e,t),a}let a,n=0,r=this.d.getMonth();for(let e=1;e<=r;e++)a=new Date,a.setDate(1),a.setFullYear(this.d.getFullYear()),a.setHours(1),a.setMinutes(1),a.setMonth(e),a.setHours(-2),n+=a.getDate();return n+this.d.getDate()},week:function(e,t){if(void 0!==e){let a=this.clone();return a.epoch=function(e,t,a){let n=e.clone();return t=Ie(t),\"december\"===(e=(e=(e=e.month(0)).date(1)).day(\"monday\")).monthName()&&e.date()>=28&&(e=e.add(1,\"week\")),t-=1,e=e.add(t,\"weeks\"),(e=Je(e,n,a,\"year\")).epoch}(this,e,t),a=et(a),a}let a=this.clone();a=a.month(0),a=a.date(1),a=et(a),a=a.day(\"monday\"),11===a.month()&&a.date()>=25&&(a=a.add(1,\"week\"));let n=1;1===a.date()&&(n=0),a=a.minus(2,\"hours\");const r=this.epoch;if(a.epoch>r)return 1;let i=0,o=4*this.month();for(a.epoch+=V.week*o,i+=o;i<=52;i++){if(a.epoch>r)return i+n;a=a.add(1,\"week\")}return 52},month:function(e,t){if(void 0!==e){let a=this.clone();return a.epoch=function(e,t,a){\"string\"==typeof t&&(\"sept\"===t&&(t=\"sep\"),t=Y()[t.toLowerCase()]),(t=Ie(t))>=12&&(t=11),t<=0&&(t=0);let n=e.date();n>A[t]&&(n=A[t]);let r=e.clone();return C(e,{month:t,d:n}),(e=Je(e,r,a,\"year\")).epoch}(a,e,t),a}return this.d.getMonth()},monthName:function(e,t){if(void 0!==e){let a=this.clone();return a=a.month(e,t),a}return E[this.month()]},quarter:function(e,t){if(void 0!==e&&(\"string\"==typeof e&&(e=e.replace(/^q/i,\"\"),e=parseInt(e,10)),Ee[e])){let a=this.clone(),n=Ee[e][0];return a=a.month(n,t),a=a.date(1,t),a=a.startOf(\"day\"),a}let a=this.d.getMonth();for(let e=1;e<Ee.length;e++)if(a<Ee[e][0])return e-1;return 4},season:function(e,t){let a=\"north\";if(\"South\"===this.hemisphere()&&(a=\"south\"),void 0!==e){let n=this.clone();for(let r=0;r<Ne[a].length;r++)e===Ne[a][r][0]&&(n=n.month(Ne[a][r][1],t),n=n.date(1),n=n.startOf(\"day\"));return n}let n=this.d.getMonth();for(let e=0;e<Ne[a].length-1;e++)if(n>=Ne[a][e][1]&&n<Ne[a][e+1][1])return Ne[a][e][0];return\"north\"===a?\"winter\":\"summer\"},year:function(e){if(void 0!==e){let t=this.clone();return t.epoch=Qe(t,e),t}return this.d.getFullYear()},era:function(e){if(void 0!==e){let t=this.clone();e=e.toLowerCase();let a=t.d.getFullYear();return\"bc\"===e&&a>0&&(t.epoch=Qe(t,-1*a)),\"ad\"===e&&a<0&&(t.epoch=Qe(t,-1*a)),t}return this.d.getFullYear()<0?\"BC\":\"AD\"},decade:function(e){if(void 0!==e){if(!(e=(e=(e=String(e)).replace(/([0-9])'?s$/,\"$1\")).replace(/([0-9])(th|rd|st|nd)/,\"$1\")))return console.warn(\"Spacetime: Invalid decade input\"),this;2===e.length&&/[0-9][0-9]/.test(e)&&(e=\"19\"+e);let t=Number(e);return isNaN(t)?this:(t=10*Math.floor(t/10),this.year(t))}return this.startOf(\"decade\").year()},century:function(e){if(void 0!==e){\"string\"==typeof e&&(e=(e=(e=e.replace(/([0-9])(th|rd|st|nd)/,\"$1\")).replace(/([0-9]+) ?(b\\.?c\\.?|a\\.?d\\.?)/i,((e,t,a)=>(a.match(/b\\.?c\\.?/i)&&(t=\"-\"+t),t)))).replace(/c$/,\"\"));let t=Number(e);return isNaN(e)?(console.warn(\"Spacetime: Invalid century input\"),this):(0===t&&(t=1),t=t>=0?100*(t-1):100*(t+1),this.year(t))}let t=this.startOf(\"century\").year();return t=Math.floor(t/100),t<0?t-1:t+1},millenium:function(e){if(void 0!==e){if(\"string\"==typeof e&&(e=e.replace(/([0-9])(th|rd|st|nd)/,\"$1\"),e=Number(e),isNaN(e)))return console.warn(\"Spacetime: Invalid millenium input\"),this;e>0&&(e-=1);let t=1e3*e;return 0===t&&(t=1),this.year(t)}let t=Math.floor(this.year()/1e3);return t>=0&&(t+=1),t}},at=Object.assign({},Ze,Xe,tt);at.milliseconds=at.millisecond,at.seconds=at.second,at.minutes=at.minute,at.hours=at.hour,at.hour24=at.hour,at.h12=at.hour12,at.h24=at.hour24,at.days=at.day;const nt=function(e,t){return 1===e&&g(t)?29:A[e]},rt=(e,t)=>{if(e.month>0){let a=parseInt(e.month/12,10);e.year=t.year()+a,e.month=e.month%12}else if(e.month<0){let a=Math.abs(e.month),n=parseInt(a/12,10);a%12!=0&&(n+=1),e.year=t.year()-n,e.month=e.month%12,e.month=e.month+12,12===e.month&&(e.month=0)}return e},it=(e,t,a)=>{let n=t.year(),r=t.month(),i=nt(r,n);for(;a>i;)a-=i,r+=1,r>=12&&(r-=12,n+=1),i=nt(r,n);return e.month=r,e.date=a,e},ot=(e,t,a)=>{e.year=t.year(),e.month=t.month();let n=t.date();for(e.date=n-Math.abs(a);e.date<1;){e.month-=1,e.month<0&&(e.month=11,e.year-=1);let t=nt(e.month,e.year);e.date+=t}return e},st=[\"millisecond\",\"second\",\"minute\",\"hour\",\"date\",\"month\"];let ut={second:st.slice(0,1),minute:st.slice(0,2),quarterhour:st.slice(0,2),hour:st.slice(0,3),date:st.slice(0,4),month:st.slice(0,4),quarter:st.slice(0,4),season:st.slice(0,4),year:st,decade:st,century:st};ut.week=ut.hour,ut.season=ut.date,ut.quarter=ut.date;const dt={year:!0,quarter:!0,season:!0,month:!0,week:!0,date:!0},lt={month:!0,quarter:!0,season:!0,year:!0},ht={millisecond:e=>e.epoch,second:e=>[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second()].join(\"-\"),minute:e=>[e.year(),e.month(),e.date(),e.hour(),e.minute()].join(\"-\"),hour:e=>[e.year(),e.month(),e.date(),e.hour()].join(\"-\"),day:e=>[e.year(),e.month(),e.date()].join(\"-\"),week:e=>[e.year(),e.week()].join(\"-\"),month:e=>[e.year(),e.month()].join(\"-\"),quarter:e=>[e.year(),e.quarter()].join(\"-\"),year:e=>e.year()};ht.date=ht.day;let mt=u;const ct=function(e,t,a={}){this.epoch=null,this.tz=p(t,mt),this.silent=void 0===a.silent||a.silent,this.british=a.dmy||a.british,this._weekStart=1,void 0!==a.weekStart&&(this._weekStart=a.weekStart),this._today={},void 0!==a.today&&(this._today=a.today),Object.defineProperty(this,\"d\",{get:function(){let e=(e=>{let t=e.timezones[e.tz];if(void 0===t)return console.warn(\"Warning: couldn't find timezone \"+e.tz),0;if(void 0===t.dst)return t.offset;let a=t.offset,n=t.offset+1;\"n\"===t.hem&&(n=a-1);let r=t.dst.split(\"->\");return!0===i(e.epoch,r[0],r[1],a,n)?a:n})(this),t=(new Date(this.epoch).getTimezoneOffset()||0)+60*e;t=60*t*1e3;let a=this.epoch+t;return new Date(a)}}),Object.defineProperty(this,\"timezones\",{get:()=>mt,set:e=>(mt=e,e)});let n=X(this,e);this.epoch=n.epoch,n.tz&&(this.tz=n.tz)};var ft;Object.keys(Le).forEach((e=>{ct.prototype[e]=Le[e]})),ct.prototype.clone=function(){return new ct(this.epoch,this.tz,{silent:this.silent,weekStart:this._weekStart,today:this._today,parsers:this.parsers})},ct.prototype.toLocalDate=function(){return this.toNativeDate()},ct.prototype.toNativeDate=function(){return new Date(this.epoch)},ft=ct,Object.keys(at).forEach((e=>{ft.prototype[e]=at[e]})),(e=>{e.prototype.add=function(e,t){let a=this.clone();if(!t||0===e)return a;let n=this.clone();if(\"millisecond\"===(t=x(t)))return a.epoch+=e,a;\"fortnight\"===t&&(e*=2,t=\"week\"),V[t]?a.epoch+=V[t]*e:\"week\"===t||\"weekend\"===t?a.epoch+=V.day*(7*e):\"quarter\"===t||\"season\"===t?a.epoch+=V.month*(3*e):\"quarterhour\"===t&&(a.epoch+=15*V.minute*e);let r={};if(ut[t]&&ut[t].forEach((e=>{r[e]=n[e]()})),dt[t]){const e=n.timezone().current.offset-a.timezone().current.offset;a.epoch+=3600*e*1e3}if(\"month\"===t&&(r.month=n.month()+e,r=rt(r,n)),\"week\"===t){let t=n.date()+7*e;t<=28&&t>1&&(r.date=t)}if(\"weekend\"===t&&\"saturday\"!==a.dayName())a=a.day(\"saturday\",!0);else if(\"date\"===t){if(e<0)r=ot(r,n,e);else{let t=n.date()+e;r=it(r,n,t)}0!==e&&n.isSame(a,\"day\")&&(r.date=n.date()+e)}else if(\"quarter\"===t){if(r.month=n.month()+3*e,r.year=n.year(),r.month<0){let e=Math.floor(r.month/12),t=r.month+12*Math.abs(e);r.month=t,r.year+=e}else if(r.month>=12){let e=Math.floor(r.month/12);r.month=r.month%12,r.year+=e}r.date=n.date()}else if(\"year\"===t){let t=n.year()+e,r=a.year();if(r<t){let t=Math.floor(e/4)||1;a.epoch+=Math.abs(V.day*t)}else if(r>t){let t=Math.floor(e/4)||1;a.epoch+=V.day*t}}else\"decade\"===t?r.year=a.year()+10:\"century\"===t&&(r.year=a.year()+100);if(lt[t]){let e=A[r.month];r.date=n.date(),r.date>e&&(r.date=e)}return Object.keys(r).length>1&&C(a,r),a},e.prototype.subtract=function(e,t){return this.clone().add(-1*e,t)},e.prototype.minus=e.prototype.subtract,e.prototype.plus=e.prototype.add})(ct),(e=>{e.prototype.isSame=function(t,a,n=!0){let r=this;if(!a)return null;if(\"string\"==typeof t&&\"object\"==typeof a){let e=t;t=a,a=e}return\"string\"!=typeof t&&\"number\"!=typeof t||(t=new e(t,this.timezone.name)),a=a.replace(/s$/,\"\"),!0===n&&r.tz!==t.tz&&((t=t.clone()).tz=r.tz),ht[a]?ht[a](r)===ht[a](t):null}})(ct),(e=>{const t={isAfter:function(e){let t=O(e=M(e,this));return null===t?null:this.epoch>t},isBefore:function(e){let t=O(e=M(e,this));return null===t?null:this.epoch<t},isEqual:function(e){let t=O(e=M(e,this));return null===t?null:this.epoch===t},isBetween:function(e,t,a=!1){e=M(e,this),t=M(t,this);let n=O(e);if(null===n)return null;let r=O(t);return null===r?null:a?this.isBetween(e,t)||this.isEqual(e)||this.isEqual(t):n<this.epoch&&this.epoch<r}};Object.keys(t).forEach((a=>{e.prototype[a]=t[a]}))})(ct),(e=>{const t={i18n:function(e){var t,a,n;return b(e.days)&&(t=e.days,ee=t.short||ee,te=t.long||te),b(e.months)&&function(e){N=e.short||N,E=e.long||E}(e.months),n=e.useTitleCase,\"[object Boolean]\"===Object.prototype.toString.call(n)&&(a=e.useTitleCase,ie=a),b(e.ampm)&&function(e){Re=e.am||Re,Ge=e.pm||Ge}(e.ampm),b(e.distance)&&function(e){je=e.pastDistance||je,$e=e.futureDistance||$e,De=e.past||De,ve=e.future||ve,xe=e.present||xe,Oe=e.now||Oe,Me=e.almost||Me,_e=e.over||_e}(e.distance),b(e.units)&&function(e={}){be={second:e.second||be.second,seconds:e.seconds||be.seconds,minute:e.minute||be.minute,minutes:e.minutes||be.minutes,hour:e.hour||be.hour,hours:e.hours||be.hours,day:e.day||be.day,days:e.days||be.days,month:e.month||be.month,months:e.months||be.months,year:e.year||be.year,years:e.years||be.years}}(e.units),this}};Object.keys(t).forEach((a=>{e.prototype[a]=t[a]}))})(ct);const yt=(e,t,a)=>new ct(e,t,a),pt=function(e){let t=e._today||{};return Object.keys(t).forEach((a=>{e=e[a](t[a])})),e};yt.now=(e,t)=>{let a=new ct((new Date).getTime(),e,t);return a=pt(a),a},yt.today=(e,t)=>{let a=new ct((new Date).getTime(),e,t);return a=pt(a),a.startOf(\"day\")},yt.tomorrow=(e,t)=>{let a=new ct((new Date).getTime(),e,t);return a=pt(a),a.add(1,\"day\").startOf(\"day\")},yt.yesterday=(e,t)=>{let a=new ct((new Date).getTime(),e,t);return a=pt(a),a.subtract(1,\"day\").startOf(\"day\")},yt.extend=function(e={}){return Object.keys(e).forEach((t=>{ct.prototype[t]=e[t]})),this},yt.timezones=function(){return(new ct).timezones},yt.max=function(e,t){let a=new ct(null,e,t);return a.epoch=864e13,a},yt.min=function(e,t){let a=new ct(null,e,t);return a.epoch=-864e13,a},yt.whereIts=(e,t)=>{let a=new ct(null),n=new ct(null);a=a.time(e),n=t?n.time(t):a.add(59,\"minutes\");let r=a.hour(),i=n.hour();return Object.keys(a.timezones).filter((e=>{if(-1===e.indexOf(\"/\"))return!1;let t=new ct(null,e),o=t.hour();return o>=r&&o<=i&&(!(o===r&&t.minute()<a.minute())&&!(o===i&&t.minute()>n.minute()))}))},yt.version=\"7.7.0\",yt.plugin=yt.extend;const gt={daybreak:\"7:00am\",breakfast:\"8:00am\",morning:\"9:00am\",noon:\"12:00pm\",midday:\"12:00pm\",afternoon:\"2:00pm\",lunchtime:\"12:00pm\",evening:\"6:00pm\",dinnertime:\"6:00pm\",night:\"8:00pm\",eod:\"10:00pm\",midnight:\"12:00am\",am:\"9:00am\",pm:\"5:00pm\",\"early day\":\"8:00am\",\"late at night\":\"11:00pm\"},wt={quarter:15,half:30},bt=function(e){let t=e.time(\"6:00am\");return e.isBefore(t)?e.ampm(\"pm\"):e},kt=function(e,t){let a=e.match(\"(at|by|for|before|this|after)? #Time+\");a=a.not(\"^(at|by|for|before|this|after)\"),a=a.not(\"sharp\"),a=a.not(\"on the dot\");let n=yt.now(t.timezone),r=n.clone(),i=a.not(\"in? the\").text(\"reduced\");if(i=i.replace(/^@/,\"\"),gt.hasOwnProperty(i))return{result:gt[i],m:a};let o=a.match(\"^#Cardinal oclock (am|pm)?\");if(o.found&&(n=n.hour(o.text(\"reduced\")),n=n.startOf(\"hour\"),n.isValid()&&!n.isEqual(r))){let e=o.match(\"(am|pm)\");return n=e.found?n.ampm(e.text(\"reduced\")):bt(n),{result:n.time(),m:o}}if(o=a.match(\"(half|quarter|25|20|15|10|5) (past|after|to) #Cardinal\"),o.found&&(n=function(e,t){let a=e.match(\"#Cardinal$\"),n=e.not(a).match(\"(half|quarter|25|20|15|10|5)\");a=a.text(\"reduced\");let r=n.text(\"reduced\");wt.hasOwnProperty(r)&&(r=wt[r]);let i=e.has(\"to\");return t=(t=t.hour(a)).startOf(\"hour\"),a<6&&(t=t.ampm(\"pm\")),i?t.subtract(r,\"minutes\"):t.add(r,\"minutes\")}(o,n),n.isValid()&&!n.isEqual(r)))return n=bt(n),{result:n.time(),m:o};if(o=a.match(\"[<min>(half|quarter|25|20|15|10|5)] (past|after)\"),o.found){let e=o.groups(\"min\").text(\"reduced\"),a=yt(t.today);if(wt.hasOwnProperty(e)&&(e=wt[e]),a=a.next(\"hour\").startOf(\"hour\").minute(e),a.isValid()&&!a.isEqual(r))return{result:a.time(),m:o}}if(o=a.match(\"[<min>(half|quarter|25|20|15|10|5)] to\"),o.found){let e=o.groups(\"min\").text(\"reduced\"),a=yt(t.today);if(wt.hasOwnProperty(e)&&(e=wt[e]),a=a.next(\"hour\").startOf(\"hour\").minus(e,\"minutes\"),a.isValid()&&!a.isEqual(r))return{result:a.time(),m:o}}if(o=a.match(\"[<time>#Time] (in|at) the? [<desc>(morning|evening|night|nighttime)]\"),o.found){let e=o.groups(\"time\").text(\"normal\");if(/^[0-9]{1,2}$/.test(e)?(n=n.hour(e),n=n.startOf(\"hour\")):n=n.time(e),n.isValid()&&!n.isEqual(r)){let e=o.groups(\"desc\").text(\"reduced\");return\"evening\"!==e&&\"night\"!==e||(n=n.ampm(\"pm\")),{result:n.time(),m:o}}}if(o=a.match(\"this? [<desc>(morning|evening|tonight)] at [<time>(#Cardinal|#Time)]\"),o.found){let e=o.groups(),t=e.time.text(\"reduced\");if(/^[0-9]{1,2}$/.test(t)?(n=n.hour(t),n=n.startOf(\"hour\")):n=n.time(t),n.isValid()&&!n.isEqual(r)){let t=e.desc.text(\"reduced\");return\"morning\"===t&&(n=n.ampm(\"am\")),\"evening\"!==t&&\"tonight\"!==t||(n=n.ampm(\"pm\")),{result:n.time(),m:o}}}if(o=a.match(\"^#Cardinal$\"),o.found){let e=o.text(\"reduced\");if(n=n.hour(e),n=n.startOf(\"hour\"),n.isValid()&&!n.isEqual(r))return!1===/(am|pm)/i.test(e)&&(n=bt(n)),{result:n.time(),m:o}}let s=a.text(\"reduced\");return n=n.time(s),n.isValid()&&!n.isEqual(r)?(!1===/(am|pm)/i.test(s)&&(n=bt(n)),{result:n.time(),m:a}):t.dayStart?{result:t.dayStart,m:e.none()}:{result:null,m:e.none()}},Dt=\"America/\",vt=\"Asia/\",xt=\"Europe/\",Ot=\"Africa/\",Mt=\"Australia/\",_t=\"Pacific/\",jt={\"british summer time\":xt+\"London\",bst:xt+\"London\",\"british time\":xt+\"London\",\"britain time\":xt+\"London\",\"irish summer time\":xt+\"Dublin\",\"irish time\":xt+\"Dublin\",ireland:xt+\"Dublin\",\"central european time\":xt+\"Berlin\",cet:xt+\"Berlin\",\"central european summer time\":xt+\"Berlin\",cest:xt+\"Berlin\",\"central europe\":xt+\"Berlin\",\"eastern european time\":xt+\"Riga\",eet:xt+\"Riga\",\"eastern european summer time\":xt+\"Riga\",eest:xt+\"Riga\",\"eastern europe time\":xt+\"Riga\",\"western european time\":xt+\"Lisbon\",\"western european summer time\":xt+\"Lisbon\",\"western europe\":xt+\"Lisbon\",\"turkey standard time\":xt+\"Istanbul\",trt:xt+\"Istanbul\",\"turkish time\":xt+\"Istanbul\",etc:Ot+\"Freetown\",utc:Ot+\"Freetown\",\"greenwich standard time\":Ot+\"Freetown\",gmt:Ot+\"Freetown\",\"east africa time\":Ot+\"Nairobi\",\"east african time\":Ot+\"Nairobi\",\"eastern africa time\":Ot+\"Nairobi\",\"central africa time\":Ot+\"Khartoum\",\"central african time\":Ot+\"Khartoum\",\"south africa standard time\":Ot+\"Johannesburg\",sast:Ot+\"Johannesburg\",\"southern africa\":Ot+\"Johannesburg\",\"south african\":Ot+\"Johannesburg\",\"west africa standard time\":Ot+\"Lagos\",\"western africa time\":Ot+\"Lagos\",\"west african time\":Ot+\"Lagos\",\"australian central standard time\":Mt+\"Adelaide\",acst:Mt+\"Adelaide\",\"australian central daylight time\":Mt+\"Adelaide\",acdt:Mt+\"Adelaide\",\"australia central\":Mt+\"Adelaide\",\"australian eastern standard time\":Mt+\"Brisbane\",aest:Mt+\"Brisbane\",\"australian eastern daylight time\":Mt+\"Brisbane\",aedt:Mt+\"Brisbane\",\"australia east\":Mt+\"Brisbane\",\"australian western standard time\":Mt+\"Perth\",awst:Mt+\"Perth\",\"australian western daylight time\":Mt+\"Perth\",awdt:Mt+\"Perth\",\"australia west\":Mt+\"Perth\",\"australian central western standard time\":Mt+\"Eucla\",acwst:Mt+\"Eucla\",\"australia central west\":Mt+\"Eucla\",\"lord howe standard time\":Mt+\"Lord_Howe\",lhst:Mt+\"Lord_Howe\",\"lord howe daylight time\":Mt+\"Lord_Howe\",lhdt:Mt+\"Lord_Howe\",\"russian standard time\":xt+\"Moscow\",msk:xt+\"Moscow\",russian:xt+\"Moscow\",\"central standard time\":Dt+\"Chicago\",\"central time\":Dt+\"Chicago\",cst:Dt+\"Havana\",\"central daylight time\":Dt+\"Chicago\",cdt:Dt+\"Havana\",\"mountain standard time\":Dt+\"Denver\",\"mountain time\":Dt+\"Denver\",mst:Dt+\"Denver\",\"mountain daylight time\":Dt+\"Denver\",mdt:Dt+\"Denver\",\"atlantic standard time\":Dt+\"Halifax\",\"atlantic time\":Dt+\"Halifax\",ast:vt+\"Baghdad\",\"atlantic daylight time\":Dt+\"Halifax\",adt:Dt+\"Halifax\",\"eastern standard time\":Dt+\"New_York\",eastern:Dt+\"New_York\",\"eastern time\":Dt+\"New_York\",est:Dt+\"New_York\",\"eastern daylight time\":Dt+\"New_York\",edt:Dt+\"New_York\",\"pacific time\":Dt+\"Los_Angeles\",\"pacific standard time\":Dt+\"Los_Angeles\",pst:Dt+\"Los_Angeles\",\"pacific daylight time\":Dt+\"Los_Angeles\",pdt:Dt+\"Los_Angeles\",\"alaskan standard time\":Dt+\"Anchorage\",\"alaskan time\":Dt+\"Anchorage\",ahst:Dt+\"Anchorage\",\"alaskan daylight time\":Dt+\"Anchorage\",ahdt:Dt+\"Anchorage\",\"hawaiian standard time\":_t+\"Honolulu\",\"hawaiian time\":_t+\"Honolulu\",hst:_t+\"Honolulu\",\"aleutian time\":_t+\"Honolulu\",\"hawaii time\":_t+\"Honolulu\",\"newfoundland standard time\":Dt+\"St_Johns\",\"newfoundland time\":Dt+\"St_Johns\",nst:Dt+\"St_Johns\",\"newfoundland daylight time\":Dt+\"St_Johns\",ndt:Dt+\"St_Johns\",\"brazil time\":Dt+\"Sao_Paulo\",brt:Dt+\"Sao_Paulo\",\"brasília\":Dt+\"Sao_Paulo\",brasilia:Dt+\"Sao_Paulo\",\"brazilian time\":Dt+\"Sao_Paulo\",\"argentina time\":Dt+\"Buenos_Aires\",\"argentinian time\":Dt+\"Buenos_Aires\",\"amazon time\":Dt+\"Manaus\",amt:Dt+\"Manaus\",\"amazonian time\":Dt+\"Manaus\",\"easter island standard time\":\"Chile/Easterisland\",east:\"Chile/Easterisland\",\"easter island summer time\":\"Chile/Easterisland\",easst:\"Chile/Easterisland\",\"venezuelan standard time\":Dt+\"Caracas\",\"venezuelan time\":Dt+\"Caracas\",vet:Dt+\"Caracas\",\"venezuela time\":Dt+\"Caracas\",\"paraguay time\":Dt+\"Asuncion\",pyt:Dt+\"Asuncion\",\"paraguay summer time\":Dt+\"Asuncion\",pyst:Dt+\"Asuncion\",\"cuba standard time\":Dt+\"Havana\",\"cuba time\":Dt+\"Havana\",\"cuba daylight time\":Dt+\"Havana\",\"cuban time\":Dt+\"Havana\",\"bolivia time\":Dt+\"La_Paz\",\"bolivian time\":Dt+\"La_Paz\",\"colombia time\":Dt+\"Bogota\",cot:Dt+\"Bogota\",\"colombian time\":Dt+\"Bogota\",\"acre time\":Dt+\"Eirunepe\",\"peru time\":Dt+\"Lima\",\"chile standard time\":Dt+\"Punta_Arenas\",\"chile time\":Dt+\"Punta_Arenas\",clst:Dt+\"Punta_Arenas\",\"chile summer time\":Dt+\"Punta_Arenas\",cldt:Dt+\"Punta_Arenas\",\"uruguay time\":Dt+\"Montevideo\",uyt:Dt+\"Montevideo\",ist:vt+\"Jerusalem\",\"arabic standard time\":vt+\"Baghdad\",\"arabic time\":vt+\"Baghdad\",\"arab time\":vt+\"Baghdad\",\"iran standard time\":vt+\"Tehran\",\"iran time\":vt+\"Tehran\",irst:vt+\"Tehran\",\"iran daylight time\":vt+\"Tehran\",irdt:vt+\"Tehran\",iranian:vt+\"Tehran\",\"pakistan standard time\":vt+\"Karachi\",\"pakistan time\":vt+\"Karachi\",pkt:vt+\"Karachi\",\"india standard time\":vt+\"Kolkata\",\"indian time\":vt+\"Kolkata\",\"indochina time\":vt+\"Bangkok\",ict:vt+\"Bangkok\",\"south east asia\":vt+\"Bangkok\",\"china standard time\":vt+\"Shanghai\",ct:vt+\"Shanghai\",\"chinese time\":vt+\"Shanghai\",\"alma-ata time\":vt+\"Almaty\",almt:vt+\"Almaty\",\"oral time\":vt+\"Oral\",\"orat time\":vt+\"Oral\",\"yakutsk time\":vt+\"Yakutsk\",yakt:vt+\"Yakutsk\",\"gulf standard time\":vt+\"Dubai\",\"gulf time\":vt+\"Dubai\",gst:vt+\"Dubai\",uae:vt+\"Dubai\",\"hong kong time\":vt+\"Hong_Kong\",hkt:vt+\"Hong_Kong\",\"western indonesian time\":vt+\"Jakarta\",wib:vt+\"Jakarta\",\"indonesia time\":vt+\"Jakarta\",\"central indonesian time\":vt+\"Makassar\",wita:vt+\"Makassar\",\"israel daylight time\":vt+\"Jerusalem\",idt:vt+\"Jerusalem\",\"israel standard time\":vt+\"Jerusalem\",\"israel time\":vt+\"Jerusalem\",israeli:vt+\"Jerusalem\",\"krasnoyarsk time\":vt+\"Krasnoyarsk\",krat:vt+\"Krasnoyarsk\",\"malaysia time\":vt+\"Kuala_Lumpur\",myt:vt+\"Kuala_Lumpur\",\"singapore time\":vt+\"Singapore\",sgt:vt+\"Singapore\",\"korea standard time\":vt+\"Seoul\",\"korea time\":vt+\"Seoul\",kst:vt+\"Seoul\",\"korean time\":vt+\"Seoul\",\"uzbekistan time\":vt+\"Samarkand\",uzt:vt+\"Samarkand\",\"vladivostok time\":vt+\"Vladivostok\",vlat:vt+\"Vladivostok\",\"maldives time\":\"Indian/Maldives\",mvt:\"Indian/Maldives\",\"mauritius time\":\"Indian/Mauritius\",mut:\"Indian/Mauritius\",\"marshall islands time\":_t+\"Kwajalein\",mht:_t+\"Kwajalein\",\"samoa standard time\":_t+\"Midway\",sst:_t+\"Midway\",\"somoan time\":_t+\"Midway\",\"chamorro standard time\":_t+\"Guam\",chst:_t+\"Guam\",\"papua new guinea time\":_t+\"Bougainville\",pgt:_t+\"Bougainville\"};let $t=yt().timezones,zt=Object.keys($t).reduce(((e,t)=>(e[t]=t,e)),{});var Tt=Object.assign({},jt,zt);const Vt=/(-?[0-9]+)h(rs)?/i,St=/(-?[0-9]+)/,qt=/utc([-+]?[0-9]+)/i,Ct=/gmt([-+]?[0-9]+)/i,At=function(e){return(e=Number(e))>-13&&e<13?\"Etc/GMT\"+(e=((e*=-1)>0?\"+\":\"\")+e):null},Nt=function(e){let t=e.match(\"#Timezone+\");t=t.not(\"(in|for|by|near|at)\");let a=t.text(\"reduced\");if(Tt.hasOwnProperty(a))return{result:Tt[a],m:t};let n=function(e){let t=e.match(Vt);if(null!==t)return At(t[1]);if(t=e.match(qt),null!==t)return At(t[1]);if(t=e.match(Ct),null!==t){let e=-1*Number(t[1]);return At(e)}return t=e.match(St),null!==t?At(t[1]):null}(a);return n?{result:n,m:t}:{result:null,m:e.none()}},Et=function(t,r){let i=function(t){let n={},r=t.none(),i=t.match(\"#DateShift+\");if(!1===i.found)return{res:n,m:r};if(i.match(\"#Cardinal #Duration\").forEach((t=>{let r=t.match(\"#Cardinal\").numbers().get()[0];if(r&&\"number\"==typeof r){let i=a(t);!0===e[i]&&(n[i]=r)}})),!0===i.has(\"(before|ago|hence|back)$\")&&Object.keys(n).forEach((e=>n[e]*=-1)),r=i.match(\"#Cardinal #Duration\"),i=i.not(r),r=i.match(\"[<unit>#Duration] [<dir>(after|before)]\"),r.found){let e=r.groups(\"unit\").text(\"reduced\"),t=r.groups(\"dir\").text(\"reduced\");\"after\"===t?n[e]=1:\"before\"===t&&(n[e]=-1)}if(r=i.match(\"half (a|an) [#Duration]\",0),r.found){let e=a(r);n[e]=.5}if(r=i.match(\"a (few|couple) [#Duration]\",0),r.found){let e=a(r);n[e]=r.has(\"few\")?3:2}return r=t.match(\"#DateShift+\"),{result:n,m:r}}(t),o=i.result;i=function(e){let t=e.match(\"[<num>#Value] [<unit>#Duration+] (of|in)\");if(t.found){let e=t.groups(),a=e.num.numbers().get()[0],r=e.unit.text(\"reduced\"),i={unit:r,num:Number(a)||0};return n[r]||(i.num-=1),{result:i,m:t}}if(t=e.match(\"[<dir>(first|initial|last|final)] [<unit>#Duration+] (of|in)\"),t.found){let e=t.groups(),a=e.dir.text(\"reduced\");return\"initial\"===a&&(a=\"first\"),\"final\"===a&&(a=\"last\"),{result:{unit:e.unit.text(\"reduced\"),dir:a},m:t}}return{result:null,m:e.none()}}(t=t.not(i.m));let s=i.result;t=t.not(i.m),i=Nt(t);let u=i.result;t=t.not(i.m),i=kt(t,r);let d=i.result;i=function(e){let t=e.match(\"#WeekDay\");return t.found&&!e.has(\"^#WeekDay$\")?e.has(\"(this|next|last) (next|upcoming|coming|past)? #WeekDay\")?{result:null,m:e.none()}:{result:t.text(\"reduced\"),m:t}:{result:null,m:e.none()}}(t=t.not(i.m));let l=i.result;i=function(e){let t=e.match(\"[(start|beginning) of] .\",0);return t.found?{result:\"start\",m:t}:(t=e.match(\"[end of] .\",0),t.found?{result:\"end\",m:t}:(t=e.match(\"[(middle|midpoint|center) of] .\",0),t.found?{result:\"middle\",m:t}:{result:null,m:t}))}(t=t.not(i.m));let h=i.result;return i=function(e){if(e.has(\"(next|last|this)$\"))return{result:null,m:e.none()};let t=e.match(\"^this? (next|upcoming|coming)\");return t.found?{result:\"next\",m:t}:(t=e.match(\"^this? (past)\"),t.found?{result:\"this-past\",m:t}:(t=e.match(\"^this? (last|previous)\"),t.found?{result:\"last\",m:t}:(t=e.match(\"^(this|current)\"),t.found?{result:\"this\",m:t}:{result:null,m:e.none()})))}(t=t.not(i.m)),{shift:o,counter:s,tz:u,time:d,weekDay:l,section:h,rel:i.result,doc:t=function(e){return(e=(e=(e=(e=(e=(e=e.not(\"[^the] !#Value\",0)).not(\"#Preposition$\")).not(\"#Conjunction$\")).not(\"sharp\")).not(\"on the dot\")).not(\"^(on|of)\")).not(\"(next|last|this)$\")}(t=t.not(i.m))}};class Unit{constructor(e,t,a){this.unit=t||\"day\",this.setTime=!1;let n={};(a=a||{}).today&&(n={date:a.today.date(),month:a.today.month(),year:a.today.year()}),e&&\"sept\"===e.month&&(e.month=\"sep\");let r=yt(e,a.timezone,{today:n,dmy:a.dmy});Object.defineProperty(this,\"d\",{enumerable:!1,writable:!0,value:r}),Object.defineProperty(this,\"context\",{enumerable:!1,writable:!0,value:a})}clone(){let e=new Unit(this.d,this.unit,this.context);return e.setTime=this.setTime,e}log(){return console.log(\"--\"),this.d.log(),console.log(\"\\n\"),this}applyShift(e={}){return Object.keys(e).forEach((t=>{this.d=this.d.add(e[t],t),\"hour\"!==t&&\"minute\"!==t||(this.setTime=!0)})),this}applyTime(e){if(e){if(/^[0-9]{1,2}$/.test(e)?this.d=this.d.hour(e):this.d=this.d.time(e),!/[ap]m/.test(e)){let e=this.d.time(\"6:00am\");this.d.isBefore(e)&&(this.d=this.d.ampm(\"pm\"));let t=this.d.time(\"10:00pm\");this.d.isAfter(t)&&(this.d=this.d.ampm(\"am\"))}}else this.d=this.d.startOf(\"day\");return this.setTime=!0,this}applyWeekDay(e){if(e){let t=this.d.epoch;this.d=this.d.day(e),this.d.epoch<t&&(this.d=this.d.add(1,\"week\"))}return this}applyRel(e){return\"next\"===e?this.next():\"last\"===e||\"this-past\"===e?this.last():this}applySection(e){return\"start\"===e?this.start():\"end\"===e?this.end():\"middle\"===e?this.middle():this}format(e){return this.d.format(e)}start(){return this.d=this.d.startOf(this.unit),this.context.dayStart&&(this.d=this.d.time(this.context.dayStart)),this}end(){if(this.d=this.d.endOf(this.unit),this.context.dayEnd){this.d=this.d.startOf(\"day\");let e=this.d.time(this.context.dayEnd);if(e.isAfter(this.d))return this.d=e,this}return this}middle(){let e=this.d.diff(this.d.endOf(this.unit)),t=Math.round(e.minutes/2);return this.d=this.d.add(t,\"minutes\"),this}beforeEnd(){let e=this.d.startOf(this.unit).diff(this.d.endOf(this.unit)),t=Math.round(e.minutes/4);return this.d=this.d.endOf(this.unit),this.d=this.d.minus(t,\"minutes\"),this.context.dayStart&&(this.d=this.d.time(this.context.dayStart)),this}before(){return this.d=this.d.minus(1,this.unit),this.d=this.d.endOf(this.unit),this.context.dayEnd&&(this.d=this.d.time(this.context.dayEnd)),this}after(){return this.d=this.d.add(1,this.unit),this.d=this.d.startOf(this.unit),this}next(){return this.d=this.d.add(1,this.unit),this.d=this.d.startOf(this.unit),this}last(){return this.d=this.d.minus(1,this.unit),this.d=this.d.startOf(this.unit),this}}class Day extends Unit{constructor(e,t,a){super(e,t,a),this.unit=\"day\",this.d.isValid()&&(this.d=this.d.startOf(\"day\"))}middle(){return this.d=this.d.time(\"10am\"),this}beforeEnd(){return this.d=this.d.time(\"2pm\"),this}}class CalendarDate extends Day{constructor(e,t,a){super(e,t,a),this.unit=\"day\",this.d.isValid()&&(this.d=this.d.startOf(\"day\"))}next(){return this.d=this.d.add(1,\"year\"),this}last(){return this.d=this.d.minus(1,\"year\"),this}}class WeekDay extends Day{constructor(e,t,a){super(e,t,a),this.unit=\"day\",this.isWeekDay=!0,\"string\"==typeof e?(this.d=yt(a.today,a.timezone),this.d=this.d.day(e),this.d.isBefore(a.today)&&(this.d=this.d.add(7,\"days\"))):this.d=e,this.weekDay=this.d.dayName(),this.d.isValid()&&(this.d=this.d.startOf(\"day\"))}next(){return this.d=this.d.add(7,\"days\"),this.d=this.d.day(this.weekDay),this}last(){return this.d=this.d.minus(7,\"days\"),this.d=this.d.day(this.weekDay),this}before(){return this.d=this.d.minus(1,\"day\"),this.d=this.d.endOf(\"day\"),this.context.dayEnd&&(this.d=this.d.time(this.context.dayEnd)),this}applyRel(e){if(\"next\"===e){let e=this.context.today.endOf(\"week\").add(1,\"week\");return this.next(),this.d.isAfter(e)&&this.last(),this}if(\"this-past\"===e)return this.last();if(\"last\"===e){let e=this.context.today.startOf(\"week\");return this.last(),!1===this.d.isBefore(e)&&this.last(),this}return this}}class Holiday extends CalendarDate{constructor(e,t,a){super(e,t,a),this.unit=\"day\",this.d.isValid()&&(this.d=this.d.startOf(\"day\"))}}class Hour extends Unit{constructor(e,t,a){super(e,t,a,!0),this.unit=\"hour\",this.d.isValid()&&(this.d=this.d.startOf(\"hour\"))}}class Minute extends Unit{constructor(e,t,a){super(e,t,a,!0),this.unit=\"minute\",this.d.isValid()&&(this.d=this.d.startOf(\"minute\"))}}class Moment extends Unit{constructor(e,t,a){super(e,t,a,!0),this.unit=\"millisecond\"}}class Month extends Unit{constructor(e,t,a){super(e,t,a),this.unit=\"month\",this.d.isValid()&&(this.d=this.d.startOf(this.unit))}next(){return this.d=this.d.add(1,\"year\"),this.d=this.d.startOf(\"month\"),this}last(){return this.d=this.d.minus(1,\"year\"),this.d=this.d.startOf(\"month\"),this}middle(){return this.d=this.d.add(15,\"days\"),this.d=this.d.startOf(\"day\"),this}}class AnyQuarter extends Unit{constructor(e,t,a){super(e,t,a),this.unit=\"quarter\",this.d.isValid()&&(this.d=this.d.startOf(this.unit))}last(){return this.d=this.d.minus(1,\"quarter\"),this.d=this.d.startOf(this.unit),this}}class Quarter extends Unit{constructor(e,t,a){super(e,t,a),this.unit=\"quarter\",this.d.isValid()&&(this.d=this.d.startOf(this.unit))}next(){return this.d=this.d.add(1,\"year\"),this.d=this.d.startOf(this.unit),this}last(){return this.d=this.d.minus(1,\"year\"),this.d=this.d.startOf(this.unit),this}}class Season extends Unit{constructor(e,t,a){super(e,t,a),this.unit=\"season\",this.d.isValid()&&(this.d=this.d.startOf(this.unit))}next(){return this.d=this.d.add(1,\"year\"),this.d=this.d.startOf(this.unit),this}last(){return this.d=this.d.minus(1,\"year\"),this.d=this.d.startOf(this.unit),this}}class Year extends Unit{constructor(e,t,a){super(e,t,a),this.unit=\"year\",this.d.isValid()&&(this.d=this.d.startOf(\"year\"))}}class Week extends Unit{constructor(e,t,a){super(e,t,a),this.unit=\"week\",this.d.isValid()&&(this.d=this.d.startOf(\"week\"))}clone(){return new Week(this.d,this.unit,this.context)}middle(){return this.d=this.d.add(2,\"days\"),this}beforeEnd(){return this.d=this.d.day(\"friday\"),this}}class WeekEnd extends Unit{constructor(e,t,a){super(e,t,a),this.unit=\"week\",this.d.isValid()&&(this.d=this.d.day(\"saturday\"),this.d=this.d.startOf(\"day\"))}start(){return this.d=this.d.day(\"saturday\").startOf(\"day\"),this}next(){return this.d=this.d.add(1,this.unit),this.d=this.d.startOf(\"weekend\"),this}last(){return this.d=this.d.minus(1,this.unit),this.d=this.d.startOf(\"weekend\"),this}}const Pt={today:e=>new Day(e.today,null,e),yesterday:e=>new Day(e.today.minus(1,\"day\"),null,e),tomorrow:e=>new Day(e.today.plus(1,\"day\"),null,e),eom:e=>{let t=e.today.endOf(\"month\");return t=t.startOf(\"day\"),new Day(t,null,e)},eoy:e=>{let t=e.today.endOf(\"year\");return t=t.startOf(\"day\"),new Day(t,null,e)},now:e=>new Moment(e.today,null,e)};Pt.tommorrow=Pt.tomorrow,Pt.tmrw=Pt.tomorrow,Pt.anytime=Pt.today,Pt.sometime=Pt.today;const Yt=\"january\",Bt=\"february\",Ht=\"march\",Lt=\"april\",It=\"may\",Wt=\"july\",Ft=\"august\",Jt=\"september\",Ut=\"october\",Kt=\"november\",Qt=\"december\";var Rt={\"new years eve\":[Qt,31],\"new years\":[Yt,1],\"new years day\":[Yt,1],\"inauguration day\":[Yt,20],\"australia day\":[Yt,26],\"national freedom day\":[Bt,1],\"groundhog day\":[Bt,2],\"rosa parks day\":[Bt,4],\"valentines day\":[Bt,14],\"saint valentines day\":[Bt,14],\"st valentines day \":[Bt,14],\"saint patricks day\":[Ht,17],\"st patricks day\":[Ht,17],\"april fools\":[Lt,1],\"april fools day\":[Lt,1],\"emancipation day\":[Lt,16],\"tax day\":[Lt,15],\"labour day\":[It,1],\"cinco de mayo\":[It,5],\"national nurses day\":[It,6],\"harvey milk day\":[It,22],\"victoria day\":[It,24],juneteenth:[\"june\",19],\"canada day\":[Wt,1],\"independence day\":[Wt,4],\"independents day\":[Wt,4],\"bastille day\":[Wt,14],\"purple heart day\":[Ft,7],\"womens equality day\":[Ft,26],\"16 de septiembre\":[Jt,16],\"dieciseis de septiembre\":[Jt,16],\"grito de dolores\":[Jt,16],halloween:[Ut,31],\"all hallows eve\":[Ut,31],\"day of the dead\":[Ut,31],\"dia de muertos\":[Ut,31],\"veterans day\":[Kt,11],\"st andrews day\":[Kt,30],\"saint andrews day\":[Kt,30],\"all saints day\":[Kt,1],\"all sts day\":[Kt,1],\"armistice day\":[Kt,11],\"rememberance day\":[Kt,11],\"christmas eve\":[Qt,24],christmas:[Qt,25],xmas:[Qt,25],\"boxing day\":[Qt,26],\"st stephens day\":[Qt,26],\"saint stephens day\":[Qt,26],epiphany:[Yt,6],\"orthodox christmas day\":[Yt,7],\"orthodox new year\":[Yt,14],\"assumption of mary\":[Ft,15],\"all souls day\":[Kt,2],\"feast of the immaculate conception\":[Qt,8],\"feast of our lady of guadalupe\":[Qt,12],kwanzaa:[Qt,26],imbolc:[Bt,2],beltaine:[It,1],lughnassadh:[Ft,1],samhain:[Ut,31]};var Gt=function(e,t,a,n){if(Rt.hasOwnProperty(e)||Rt.hasOwnProperty(t)){let r=Rt[e]||Rt[t]||[],i=yt.now(n);if(i=i.year(a),i=i.startOf(\"year\"),i=i.month(r[0]),i=i.date(r[1]),i.isValid())return i}return null};const Zt=\"october\",Xt=\"november\",ea=\"monday\",ta=\"sunday\";let aa={\"martin luther king day\":[3,ea,\"january\"],\"presidents day\":[3,ea,\"february\"],\"commonwealth day\":[2,ea,\"march\"],\"mothers day\":[2,ta,\"may\"],\"fathers day\":[3,ta,\"june\"],\"labor day\":[1,ea,\"september\"],\"columbus day\":[2,ea,Zt],\"canadian thanksgiving\":[2,ea,Zt],thanksgiving:[4,\"thursday\",Xt],\"black friday\":[4,\"friday\",Xt]};aa[\"turday day\"]=aa.thanksgiving,aa[\"indigenous peoples day\"]=aa[\"columbus day\"],aa[\"mlk day\"]=aa[\"martin luther king day\"];var na=aa;var ra=function(e,t,a,n){if(na.hasOwnProperty(e)||na.hasOwnProperty(t)){let r=na[e]||na[t]||[],i=yt.now(n);i=i.year(a),i=i.month(r[2]),i=i.startOf(\"month\");let o=i.month();if(i=i.day(r[1]),i.month()!==o&&(i=i.add(1,\"week\")),r[0]>1&&(i=i.add(r[0]-1,\"week\")),i.isValid())return i}return null};let ia={easter:0,\"ash wednesday\":-46,\"palm sunday\":7,\"maundy thursday\":-3,\"good friday\":-2,\"holy saturday\":-1,\"easter saturday\":-1,\"easter monday\":1,\"ascension day\":39,\"whit sunday\":49,\"whit monday\":50,\"trinity sunday\":65,\"corpus christi\":60,\"mardi gras\":-47};ia[\"easter sunday\"]=ia.easter,ia.pentecost=ia[\"whit sunday\"],ia.whitsun=ia[\"whit sunday\"];var oa=ia;var sa=function(e){let t=Math.floor,a=e%19,n=t(e/100),r=(n-t(n/4)-t((8*n+13)/25)+19*a+15)%30,i=r-t(r/28)*(1-t(29/(r+1))*t((21-a)/11)),o=i-(e+t(e/4)+i+2-n+t(n/4))%7,s=3+t((o+40)/44),u=o+28-31*t(s/4);return s=4===s?\"April\":\"March\",s+\" \"+u};var ua=function(e,t,a,n){if(oa.hasOwnProperty(e)||oa.hasOwnProperty(t)){let r=oa[e]||oa[t]||[],i=sa(a);if(!i)return null;let o=yt(i,n);o=o.year(a);let s=o.add(r,\"day\");if(s.isValid())return s}return null};const da={spring:[2003,2007,2044,2048,2052,2056,2060,2064,2068,2072,2076,2077,2080,2081,2084,2085,2088,2089,2092,2093,2096,2097],summer:[2021,2016,2020,2024,2028,2032,2036,2040,2041,2044,2045,2048,2049,2052,2053,2056,2057,2060,2061,2064,2065,2068,2069,2070,2072,2073,2074,2076,2077,2078,2080,2081,2082,2084,2085,2086,2088,2089,2090,2092,2093,2094,2096,2097,2098,2099],fall:[2002,2003,2004,2006,2007,2010,2011,2014,2015,2018,2019,2022,2023,2026,2027,2031,2035,2039,2043,2047,2051,2055,2059,2092,2096],winter:[2002,2003,2006,2007,2011,2015,2019,2023,2027,2031,2035,2039,2043,2080,2084,2088,2092,2096]},la=[2080,2084,2088,2092,2096];var ha=function(e){let t={spring:\"March 20 \"+e,summer:\"June 21 \"+e,fall:\"Sept 22 \"+e,winter:\"Dec 21 \"+e};return-1!==da.spring.indexOf(e)&&(t.spring=\"March 19 \"+e),-1!==da.summer.indexOf(e)&&(t.summer=\"June 20 \"+e),-1!==da.fall.indexOf(e)&&(t.fall=\"Sept 21 \"+e),-1!==da.winter.indexOf(e)&&(t.winter=\"Dec 22 \"+e),-1!==la.indexOf(e)&&(t.winter=\"Dec 20 \"+e),t};let ma={\"spring equinox\":\"spring\",\"summer solistice\":\"summer\",\"fall equinox\":\"fall\",\"winter solstice\":\"winter\"};ma[\"march equinox\"]=ma[\"spring equinox\"],ma[\"vernal equinox\"]=ma[\"spring equinox\"],ma.ostara=ma[\"spring equinox\"],ma[\"june solstice\"]=ma[\"summer solistice\"],ma.litha=ma[\"summer solistice\"],ma[\"autumn equinox\"]=ma[\"fall equinox\"],ma[\"autumnal equinox\"]=ma[\"fall equinox\"],ma[\"september equinox\"]=ma[\"fall equinox\"],ma[\"sept equinox\"]=ma[\"fall equinox\"],ma.mabon=ma[\"fall equinox\"],ma[\"december solstice\"]=ma[\"winter solistice\"],ma[\"dec solstice\"]=ma[\"winter solistice\"],ma.yule=ma[\"winter solistice\"];var ca=ma;var fa=function(e,t,a,n){if(ca.hasOwnProperty(e)||ca.hasOwnProperty(t)){let r=ca[e]||ca[t],i=ha(a);if(!r||!i||!i[r])return null;let o=yt(i[r],n);if(o.isValid())return o}return null};var ya={\"isra and miraj\":\"april 13\",\"lailat al-qadr\":\"june 10\",\"eid al-fitr\":\"june 15\",\"id al-Fitr\":\"june 15\",\"eid ul-Fitr\":\"june 15\",ramadan:\"may 16\",\"eid al-adha\":\"sep 22\",muharram:\"sep 12\",\"prophets birthday\":\"nov 21\"};var pa=function(e,t,a,n){if(ya.hasOwnProperty(e)||ya.hasOwnProperty(t)){let r=ya[e]||ya[t]||[];if(!r)return null;let i=yt(r+\" 2018\",n),o=-10.64*(a-2018);if(i=i.add(o,\"day\"),i=i.startOf(\"day\"),i=i.year(a),i.isValid())return i}return null};const ga=yt.now().year(),wa=function(e,t,a){t=t||ga,e=e||\"\";let n=(e=(e=(e=String(e)).trim().toLowerCase()).replace(/'s/,\"s\")).replace(/ day$/,\"\");n=n.replace(/^the /,\"\"),n=n.replace(/^orthodox /,\"\");let r=Gt(e,n,t,a);return null!==r?r:(r=ra(e,n,t,a),null!==r?r:(r=ua(e,n,t,a),null!==r?r:(r=fa(e,n,t,a),null!==r?r:(r=pa(e,n,t,a),null!==r?r:null))))},ba={day:Day,hour:Hour,evening:Hour,second:Moment,milliscond:Moment,instant:Moment,minute:Minute,week:Week,weekend:WeekEnd,month:class AnyMonth extends Unit{constructor(e,t,a){super(e,t,a),this.unit=\"month\",this.d.isValid()&&(this.d=this.d.startOf(this.unit))}},quarter:AnyQuarter,year:Year,season:Season,yr:Year,qtr:AnyQuarter,wk:Week,sec:Moment,hr:Hour};let ka=`^(${Object.keys(ba).join(\"|\")})$`;const Da=function(e){return{date:e.today.date(),month:e.today.month(),year:e.today.year()}},va=function(e,t,a){let n=null;return n=n||function(e,t,a){let n=null;!1===e.found&&(null!==a.time&&(n=new Moment(t.today,null,t)),a.shift&&Object.keys(a.shift).length>0&&(n=a.shift.hour||a.shift.minute?new Moment(t.today,null,t):new Day(t.today,null,t)));let r=e.text(\"reduced\");return!0===Pt.hasOwnProperty(r)?Pt[r](t):\"next\"===r&&a.shift&&Object.keys(a.shift).length>0?Pt.tomorrow(t):n}(e,t,a),n=n||function(e,t){let a=null,n=e.match(\"[<holiday>#Holiday+] [<year>#Year?]\"),r=t.today.year();n.groups(\"year\").found&&(r=Number(n.groups(\"year\").text(\"reduced\"))||r);let i=n.groups(\"holiday\").text(\"reduced\"),o=wa(i,r,t.timezone);return null!==o&&(o.isBefore(t.today)&&r===t.today.year()&&(o=wa(i,r+1,t.timezone)),a=new Holiday(o,null,t)),a}(e,t),n=n||function(e,t){let a=e.match(ka);if(!0===a.found){let e=a.text(\"reduced\");if(ba.hasOwnProperty(e)){let a=ba[e];return a?new a(null,e,t):null}}if(a=e.match(\"^#WeekDay$\"),!0===a.found){let e=a.text(\"reduced\");return new WeekDay(e,null,t)}return null}(e,t),n=n||function(e,t){let a=e.match(\"(spring|summer|winter|fall|autumn) [<year>#Year?]\");if(a.found){let a=e.text(\"reduced\"),n=yt(a,t.timezone,{today:Da(t)}),r=new Season(n,null,t);if(!0===r.d.isValid())return r}if(a=e.match(\"[<q>#FinancialQuarter] [<year>#Year?]\"),a.found){let e=a.groups(\"q\").text(\"reduced\"),n=yt(e,t.timezone,{today:Da(t)});if(a.groups(\"year\")){let e=Number(a.groups(\"year\").text())||t.today.year();n=n.year(e)}let r=new Quarter(n,null,t);if(!0===r.d.isValid())return r}if(a=e.match(\"[<q>#Value] quarter (of|in)? [<year>#Year?]\"),a.found){let e=a.groups(\"q\").text(\"reduced\"),n=yt(`q${e}`,t.timezone,{today:Da(t)});if(a.groups(\"year\")){let e=Number(a.groups(\"year\").text())||t.today.year();n=n.year(e)}let r=new Quarter(n,null,t);if(!0===r.d.isValid())return r}if(a=e.match(\"^#Year$\"),a.found){let a=e.text(\"reduced\"),n=yt(null,t.timezone,{today:Da(t)});n=n.year(a);let r=new Year(n,null,t);if(!0===r.d.isValid())return r}return null}(e,t),n=n||function(e,t){let a=t.today.year(),n=e.match(\"[<date>#Value] of? [<month>#Month] [<year>#Year]\");if(n.found||(n=e.match(\"[<month>#Month] the? [<date>#Value] [<year>#Year]\")),n.found){let e={month:n.groups(\"month\").text(\"reduced\"),date:n.groups(\"date\").text(\"reduced\"),year:n.groups(\"year\").text()||a},r=new CalendarDate(e,null,t);if(!0===r.d.isValid())return r}if(n=e.match(\"[<month>#Month] of? [<year>#Year]\"),n.found){let e={month:n.groups(\"month\").text(\"reduced\"),year:n.groups(\"year\").text(\"reduced\")||a},r=new Month(e,null,t);if(!0===r.d.isValid())return r}if(n=e.match(\"[<month>#Month] [<date>#Value+]? of? the? [<rel>(this|next|last|current)] year\"),n.found){let e=n.groups(\"rel\").text(\"reduced\"),r=a;\"next\"===e?r+=1:\"last\"===e&&(r-=1);let i={month:n.groups(\"month\").text(\"reduced\"),date:n.groups(\"date\").numbers(0).get()[0],year:r};if(void 0===i.date){i.date=1;let e=new Month(i,null,t);if(!0===e.d.isValid())return e}let o=new CalendarDate(i,null,t);if(!0===o.d.isValid())return o}if(n=e.match(\"^the? [<date>#Value+]? of? [<rel>(this|next|last|current)] month\"),n.found){let e=t.today.month(),a=n.groups(\"rel\").text(\"reduced\");\"next\"===a?e+=1:\"last\"===a&&(e-=1);let r={month:e,date:n.groups(\"date\").numbers(0).get()[0]},i=new CalendarDate(r,null,t);if(!0===i.d.isValid())return i}if(n=e.match(\"[<date>#Value] of? [<month>#Month]\"),n.found||(n=e.match(\"[<month>#Month] the? [<date>#Value]\")),n.found){let e={month:n.groups(\"month\").text(\"reduced\"),date:n.groups(\"date\").text(\"reduced\"),year:t.today.year()},a=new CalendarDate(e,null,t);if(a.d.month()<t.today.month()&&(e.year+=1,a=new CalendarDate(e,null,t)),!0===a.d.isValid())return a}if(e.has(\"#Month\")){let a={month:e.match(\"#Month\").text(\"reduced\"),date:1,year:t.today.year()},n=new Month(a,null,t);if(n.d.month()<t.today.month()&&(a.year+=1,n=new Month(a,null,t)),!0===n.d.isValid())return n}if(n=e.match(\"#WeekDay [<date>#Value]\"),n.found){let e={month:t.today.month(),date:n.groups(\"date\").text(\"reduced\"),year:t.today.year()},a=new CalendarDate(e,null,t);if(!0===a.d.isValid())return a}if(n=e.match(\"the [<date>#Value]\"),n.found){let e={month:t.today.month(),date:n.groups(\"date\").text(\"reduced\"),year:t.today.year()},a=new CalendarDate(e,null,t);if(!0===a.d.isValid())return a.d.isBefore(t.today)&&(a.d=a.d.add(1,\"month\")),a}if(n=e.match(\"/[0-9]{4}-[0-9]{2}-[0-9]{2}t[0-9]{2}:/\"),n.found){let a=e.text(\"reduced\"),n=new Moment(a,null,t);if(!0===n.d.isValid())return n}let r=e.text(\"reduced\");if(!r)return new Moment(t.today,null,t);let i=new Day(r,null,t);return!1===i.d.isValid()?null:i}(e,t),n},xa={day:Day,week:Week,weekend:WeekEnd,month:Month,quarter:Quarter,season:Season,hour:Hour,minute:Minute},Oa=function(e,t,a){if(!e&&a.weekDay&&(e=new WeekDay(a.weekDay,null,t),a.weekDay=null),!e)return null;if(a.shift){let t=a.shift;e.applyShift(t),t.hour||t.minute?e=new Moment(e.d,null,e.context):(t.week||t.day||t.month)&&(e=new Day(e.d,null,e.context))}return a.weekDay&&\"day\"!==e.unit&&(e.applyWeekDay(a.weekDay),e=new WeekDay(e.d,null,e.context)),a.rel&&e.applyRel(a.rel),a.section&&e.applySection(a.section),a.time&&e.applyTime(a.time),a.counter&&a.counter.unit&&(e=function(e,t={}){let a=xa[t.unit];if(!a)return e;let n=e.d;\"first\"===t.dir||0===t.num?(n=e.start().d,n=n.startOf(t.unit)):\"last\"===t.dir?(n=n.endOf(e.unit),n=\"weekend\"===t.unit?n.day(\"saturday\",!1):n.startOf(t.unit)):t.num&&(\"weekend\"===t.unit&&(n=n.day(\"saturday\",!0).add(1,\"day\")),n=n.add(t.num,t.unit));let r=new a(n,null,e.context);return!0===r.d.isValid()?r:e}(e,a.counter)),e},Ma=\"undefined\"!=typeof process&&process.env?process.env:self.env||{},_a=function(e,t){let a=Et(e,t);if(e=a.doc,(e=>{Ma.DEBUG_DATE&&(console.log(`\\n==== '${e.doc.text()}' =====`),Object.keys(e).forEach((t=>{\"doc\"!==t&&e[t]&&console.log(t,e[t])})),e.doc.debug())})(a),a.tz){let e=(t=Object.assign({},t,{timezone:a.tz})).today.format(\"iso-short\");t.today=t.today.goto(t.timezone).set(e)}let n=va(e,t,a);return n=Oa(n,t,a),n},ja={mon:\"monday\",tue:\"tuesday\",tues:\"wednesday\",wed:\"wednesday\",thu:\"thursday\",fri:\"friday\",sat:\"saturday\",sun:\"sunday\",monday:\"monday\",tuesday:\"tuesday\",wednesday:\"wednesday\",thursday:\"thursday\",friday:\"friday\",saturday:\"saturday\",sunday:\"sunday\"},$a=function(e){return e.match(\"(every|each)\").found?\"AND\":e.match(\"(any|a)\").found?\"OR\":null},za=function(e){let t=e.start,a=e.end;if(t.d.isAfter(a.d)){if(t.isWeekDay&&a.isWeekDay)return e.end.next(),e;let n=t;e.start=a,e.end=n}return e},Ta=function(e){let t=e.start,a=e.end;return t.d.isAfter(a.d)&&a.d.hour()<10&&(a.d=a.d.ampm(\"pm\")),e};var Va=[{match:\"[<from>#Time+] (to|until|upto|through|thru|and) [<to>#Time+ #Date+]\",desc:\"3pm to 4pm january 5th\",parse:(e,t)=>{let a=e.groups(\"from\"),n=e.groups(\"to\"),r=_a(n,t);if(r){let e=r.clone();if(e.applyTime(a.text(\"implicit\")),e){let t={start:e,end:r,unit:\"time\"};return!1===/(am|pm)/.test(n)&&(t=Ta(t)),t=za(t),t}}return null}},{match:\"[<main>#Date+] from [<a>#Time] (to|until|upto|through|thru|and) [<b>#Time+]\",desc:\"january from 3pm to 4pm\",parse:(e,t)=>{let a=e.groups(\"main\"),n=e.groups(\"a\"),r=e.groups(\"b\");if(a=_a(a,t),a){a.applyTime(n.text(\"implicit\"));let e=a.clone();if(e.applyTime(r.text(\"implicit\")),e){let t={start:a,end:e,unit:\"time\"};return!1===/(am|pm)/.test(r.text())&&(t=Ta(t)),t=za(t),t}}return null}},{match:\"[<from>#Date+] (to|until|upto|through|thru|and) [<to>#Time+]\",desc:\"january from 3pm to 4pm\",parse:(e,t)=>{let a=e.groups(\"from\"),n=e.groups(\"to\");if(a=_a(a,t),a){let e=a.clone();if(e.applyTime(n.text(\"implicit\")),e){let t={start:a,end:e,unit:\"time\"};return!1===/(am|pm)/.test(n.text())&&(t=Ta(t)),t=za(t),t}}return null}}],Sa=[{match:\"^during? #Month+ (or|and) #Month [<year>#Year]?\",desc:\"march or june\",parse:(e,t)=>{let a=e.match(\"^during? [#Month]\",0);e=e.not(\"(or|and)\");let n=_a(a,t);if(n){let r=[{start:n,end:n.clone().end(),unit:n.unit}],i=e.not(a);i.found&&i.match(\"#Month\").forEach((e=>{let a=_a(e,t);r.push({start:a,end:a.clone().end(),unit:a.unit})}));let o=e.match(\"#Year$\");return o.found&&(o=o.text(\"reduced\"),r.forEach((e=>{e.start.d=e.start.d.year(o),e.end.d=e.end.d.year(o)}))),r}return null}},{match:\"^#Month #Value+ (or|and)? #Value$\",desc:\"jan 5 or 8\",parse:(e,t)=>{let a=(e=e.not(\"(or|and)\")).match(\"^#Month #Value\"),n=_a(a,t);if(n){let t=[{start:n,end:n.clone().end(),unit:n.unit}],r=e.not(a);return r.found&&r.match(\"#Value\").forEach((e=>{let a=n.clone();a.d=a.d.date(e.text(\"reduced\")),t.push({start:a,end:a.clone().end(),unit:a.unit})})),t}return null}},{match:\"^#Month+ #Value #Value+$\",desc:\"jan 5 8\",parse:(e,t)=>{let a=e.match(\"#Month\"),n=e.match(\"#Year\");e=e.not(\"#Year\");let r=[];return e.match(\"#Value\").forEach((e=>{let i=(e=e.clone()).prepend(a.text());n.found&&i.append(n);let o=_a(i,t);o&&r.push({start:o,end:o.clone().end(),unit:o.unit})})),r}},{match:\"^#Value+ (or|and)? #Value of #Month #Year?$\",desc:\"5 or 8 of Jan\",parse:(e,t)=>{let a=e.match(\"#Month\"),n=e.match(\"#Year\");e=e.not(\"#Year\");let r=[];return e.match(\"#Value\").forEach((e=>{let i=e.append(a);n.found&&i.append(n);let o=_a(i,t);o&&r.push({start:o,end:o.clone().end(),unit:o.unit})})),r}},{match:\"^!(between|from|during)? [<from>#Date+] (and|or) [<to>#Date+]$\",desc:\"A or B\",parse:(e,t)=>{let a=e.groups(\"from\"),n=e.groups(\"to\"),r=_a(a,t),i=_a(n,t);return r&&i?[{start:r,end:r.clone().end()},{start:i,end:i.clone().end()}]:null}}],qa=[{match:\"between [<start>#Month] and [<end>#Month] [<year>#Year?]\",desc:\"between march and jan\",parse:(e,t)=>{let{start:a,end:n,year:r}=e.groups(),i=r&&r.found?Number(r.text(\"reduced\")):t.today.year(),o={month:a.text(\"reduced\"),year:i},s=new Month(o,null,t).start();o={month:n.text(\"reduced\"),year:i};let u=new Month(o,null,t).start();return s.d.isAfter(u.d)?{start:u,end:s}:{start:s,end:u}}},{match:\"between [<start>.+] and [<end>.+]\",desc:\"between friday and sunday\",parse:(e,t)=>{let a=e.groups(\"start\");a=_a(a,t);let n=e.groups(\"end\");return n=_a(n,t),a&&n?(n=n.before(),{start:a,end:n}):null}},{match:\"[<from>#Month #Value] (to|through|thru) [<to>#Month #Value] [<year>#Year?]\",desc:\"june 5 to june 7\",parse:(e,t)=>{let a=e.groups(),n=a.from;if(a.year&&(n=n.append(a.year)),n=_a(n,t),n){let e=a.to;if(a.year&&(e=e.append(a.year)),e=_a(e,t),e){return n.d.isAfter(e.d)&&(e.d=e.d.add(1,\"year\")),{start:n,end:e.end()}}}return null}},{match:\"[<month>#Month] [<from>#Value] (to|through|thru) [<to>#Value] of? [<year>#Year]\",desc:\"january 5 to 7 1998\",parse:(e,t)=>{let{month:a,from:n,to:r,year:i}=e.groups(),o=i.clone(),s=n.prepend(a).append(i);if(s=_a(s,t),s){let e=r.prepend(a).append(o);return e=_a(e,t),{start:s,end:e.end()}}return null}},{match:\"[<from>#Value] (to|through|thru) [<to>#Value of? #Month #Date+?]\",desc:\"5 to 7 of january 1998\",parse:(e,t)=>{let a=e.groups(\"to\");if(a=_a(a,t),a){let t=e.groups(\"from\"),n=a.clone();return n.d=n.d.date(t.text(\"implicit\")),{start:n,end:a.end()}}return null}},{match:\"[<from>#Month #Value] (to|through|thru) [<to>#Value]\",desc:\"january 5 to 7\",parse:(e,t)=>{let a=e.groups(\"from\");if(a=_a(a,t),a){let t=e.groups(\"to\"),n=a.clone();return n.d=n.d.date(t.text(\"implicit\")),{start:a,end:n.end()}}return null}},{match:\"from? [<from>#Month] (to|until|upto|through|thru) [<to>#Month] [<year>#Year]\",desc:\"january to may 2020\",parse:(e,t)=>{let a=e.groups(\"from\"),n=e.groups(\"year\").numbers().get()[0],r=e.groups(\"to\");if(a=_a(a,t),r=_a(r,t),a.d=a.d.year(n),r.d=r.d.year(n),a&&r){let e={start:a,end:r.end()};return e=za(e),e}return null}},{match:\"^in [<min>#Value] to [<max>#Value] [<unit>(days|weeks|months|years)]\",desc:\"in 2 to 4 weeks\",parse:(e,t)=>{const{min:a,max:n,unit:r}=e.groups();let i=new CalendarDate(t.today,null,t),o=i.clone();const s=r.text(\"implicit\");return i=i.applyShift({[s]:a.numbers().get()[0]}),o=o.applyShift({[s]:n.numbers().get()[0]}),{start:i,end:o.end()}}},{match:\"[<min>#Value] to [<max>#Value] [<unit>(days|weeks|months|years)] (ago|before|earlier|prior)\",desc:\"2 to 4 weeks ago\",parse:(e,t)=>{const{min:a,max:n,unit:r}=e.groups();let i=new CalendarDate(t.today,null,t),o=i.clone();const s=r.text(\"implicit\");return i=i.applyShift({[s]:-n.numbers().get()[0]}),o=o.applyShift({[s]:-a.numbers().get()[0]}),{start:i,end:o.end()}}},{match:\"^until [<to>#Date+]\",desc:\"until christmas\",parse:(e,t)=>{let a=e.groups(\"to\");if(a=_a(a,t),a){return{start:new CalendarDate(t.today,null,t),end:a.start()}}return null}},{match:\"[<part>(1st|initial|2nd|latter)] half of [<month>#Month] [<year>#Year?]\",desc:\"second half of march\",parse:(e,t)=>{const{part:a,month:n,year:r}=e.groups();let i={month:n.text(\"reduced\"),date:1,year:r&&r.found?r.text(\"reduced\"):t.today.year()},o=new Month(i,null,t);return a.has(\"(1st|initial)\")?{start:o.start(),end:o.clone().middle()}:{start:o.middle(),end:o.clone().end()}}}];const Ca=function(e,t){return e=e.applyShift(t.punt)};const Aa=[].concat(Va,Sa,qa,[{match:\"from? [<from>.+] (to|until|upto|through|thru) [<to>.+]\",desc:\"from A to B\",parse:(e,t)=>{let a=e.groups(\"from\"),n=e.groups(\"to\");if(a=_a(a,t),n=_a(n,t),a&&n){let e={start:a,end:n.end()};return e=za(e),e}return null}},{match:\"^due? (by|before) [.+]\",desc:\"before june\",parse:(e,t)=>{e=e.group(0);let a=_a(e,t);if(a){let e=new Unit(t.today,null,t);return e.d.isAfter(a.d)&&(e=a.clone().applyShift({weeks:-2})),{start:e,end:a.clone().applyShift({day:-1}).end()}}return null}},{match:\"^(on|in|at|@|during) [.+]\",desc:\"in june\",parse:(e,t)=>{e=e.group(0);let a=_a(e,t);return a?{start:a,end:a.clone().end(),unit:a.unit}:null}},{match:\"^(after|following) [.+]\",desc:\"after june\",parse:(e,t)=>{e=e.group(0);let a=_a(e,t);return a?(a=a.after(),{start:a.clone(),end:Ca(a.clone(),t)}):null}},{match:\"^(middle|center|midpoint) of [.+]\",desc:\"middle of\",parse:(e,t)=>{e=e.group(0);let a=_a(e,t),n=a.clone().middle(),r=a.beforeEnd();return a?{start:n,end:r}:null}},{match:\".+ after #Time+$\",desc:\"tuesday after 5pm\",parse:(e,t)=>{let a=_a(e,t);if(a){return{start:a.clone(),end:a.end(),unit:\"time\"}}return null}},{match:\".+ before #Time+$\",desc:\"tuesday before noon\",parse:(e,t)=>{let a=_a(e,t);if(a){let e=a.clone(),t=a.start();if(a)return{start:t,end:e,unit:\"time\"}}return null}}]),Na=\"undefined\"!=typeof process&&process.env?process.env:self.env||{},Ea=function(e,t){let a={start:null,end:null};if(!e.found)return a;let n=_a(e,t);if(n){let e=n.clone().end();a={start:n,end:e,unit:n.setTime?\"time\":n.unit}}return a},Pa=function(e,t){let a=function(e,t){let a=e.match(\"[<logic>(every|any|each)] [<skip>other?] [<unit>#Duration] (starting|beginning|commencing)?\");if(a.found){let t={interval:{}},n=a.groups(\"unit\").text(\"reduced\");return t.interval[n]=1,t.choose=$a(a),a.groups(\"skip\").found&&(t.interval[n]=2),e=e.remove(a),{repeat:t}}if(a=e.match(\"[<logic>(every|any|each)] [<num>#Value] [<unit>#Duration] (starting|beginning|commencing)?\"),a.found){let t={interval:{}},n=a.groups(\"unit\");n.nouns().toSingular();let r=n.text(\"reduced\");return t.interval[r]=a.groups(\"num\").numbers().get()[0],t.choose=$a(a),e=e.remove(a),{repeat:t}}if(a=e.match(\"[<logic>(every|any|each|a)] [<skip>other?] [<day>#WeekDay+] (starting|beginning|commencing)?\"),a.found){let t={interval:{day:1},filter:{weekDays:{}}},n=a.groups(\"day\").text(\"reduced\");if(n=ja[n],n)return t.filter.weekDays[n]=!0,t.choose=$a(a),e=e.remove(a),{repeat:t}}if(a=e.match(\"[<logic>(every|any|each|a)] [<day>(weekday|week day|weekend|weekend day)] (starting|beginning|commencing)?\"),a.found){let t={interval:{day:1},filter:{weekDays:{}}},n=a.groups(\"day\");return n.has(\"(weekday|week day)\")?t.filter.weekDays={monday:!0,tuesday:!0,wednesday:!0,thursday:!0,friday:!0}:n.has(\"(weekend|weekend day)\")&&(t.filter.weekDays={saturday:!0,sunday:!0}),t.choose=$a(a),e=e.remove(a),{repeat:t}}if(a=e.match(\"[<day>(mondays|tuesdays|wednesdays|thursdays|fridays|saturdays|sundays)] (at|near|after)? [<time>#Time+?]\"),a.found){let n={interval:{day:1},filter:{weekDays:{}}},r=a.groups(\"day\").text(\"reduced\");if(r=r.replace(/s$/,\"\"),r=ja[r],r){n.filter.weekDays[r]=!0,n.choose=\"OR\",e=e.remove(a);let i=a.groups(\"time\");return i.found&&(n.time=kt(i,t)),{repeat:n}}}return null}(e,t)||{},n=function(e,t){for(let r=0;r<Aa.length;r+=1){let i=Aa[r],o=e.match(i.match);if(o.found){n=`  ---[${i.desc}]---`,Na.DEBUG_DATE&&console.log(`\\n  \u001b[32m ${n} \u001b[0m`);let e=i.parse(o,t);if(null!==e)return a=e,\"[object Array]\"!==Object.prototype.toString.call(a)&&(e=[e]),e}}var a,n;return null}(e,t);return n||(n=[Ea(e,t)]),n=n.map((e=>Object.assign({},a,e))),n.forEach((e=>{e.start&&e.end&&e.start.d.epoch>e.end.d.epoch&&(e.start=e.start.start())})),n},Ya=function(e,t){return!1===(t=t||{}).timezone&&(t.timezone=\"UTC\"),t.today=t.today||yt.now(t.timezone),t.today=yt(t.today,t.timezone),e=function(e){return e.numbers||console.warn(\"\\nCompromise warning: compromise/three must be used with compromise-dates plugin\\n\"),(e=e.clone()).numbers().toNumber(),e.contractions().expand(),e.replace(\"week end\",\"weekend\",!0).tag(\"Date\"),e.replace(\"up to\",\"upto\",!0).tag(\"Date\"),!1===e.has(\"once (a|an) #Duration\")&&e.match(\"[(a|an)] #Duration\",0).replaceWith(\"1\",{tags:!0}).compute(\"lexicon\"),e.match(\"@hasDash\").insertAfter(\"to\").tag(\"Date\"),e}(e),Pa(e,t)},Ba=function(e){if(!e.start)return{start:null,end:null,timezone:null,duration:{}};let t=e.end?function(e){let t=e.end.d.add(1,\"millisecond\").since(e.start.d).diff;return delete t.milliseconds,delete t.seconds,t}(e):{};return{start:e.start.format(\"iso\"),end:e.end?e.end.format(\"iso\"):null,timezone:e.start.d.format(\"timezone\"),duration:t}},Ha=function(e,t){let a=e.fromText(t),n=Ya(a,e.opts)[0];return n&&n.start&&n.start.d?n.start.d:null},La=function(e,t={}){e=function(e){let t=(e=e.clone()).match(\"#Time+\").match(\"[<hour>#Cardinal] [<min>(thirty|fifteen)]\");if(t.found){let e=t.groups(\"hour\"),a=t.groups(\"min\"),n=e.values().get()[0];if(n>0&&n<=12){let e=`${n}:${a.values().get()[0]}`;t.replaceWith(e)}}if(e.numbers){let t=e.numbers();t.toNumber(),t.toCardinal(!1)}else console.warn(\"Warning: compromise .numbers() not loaded.\\n   This plugin requires >= v14\");return e.contractions&&e.contractions().expand(),e.adverbs().remove(),e.replace(\"week end\",\"weekend\",!0).tag(\"Date\"),e.replace(\"up to\",\"upto\",!0).tag(\"Date\"),!1===e.has(\"once (a|an) #Duration\")&&e.match(\"[(a|an)] #Duration\",0).replaceWith(\"1\").compute(\"lexicon\"),e.match(\"@hasDash\").insertAfter(\"to\").tag(\"Date\"),e}(e);let a=kt(e,t);if(!a.result)return{time:null,\"24h\":null};let n=yt.now().time(a.result);return{time:a.result,\"24h\":n.format(\"time-24\"),hour:n.hour(),minute:n.minute()}},Ia=(e,t)=>\"number\"==typeof t?e.eq(t):e,Wa={century:!0,day:!0,decade:!0,hour:!0,millisecond:!0,minute:!0,month:!0,second:!0,weekend:!0,week:!0,year:!0,quarter:!0,season:!0};let Fa={m:\"minute\",h:\"hour\",hr:\"hour\",min:\"minute\",sec:\"second\",\"week end\":\"weekend\",wk:\"week\",yr:\"year\",qtr:\"quarter\"};Object.keys(Fa).forEach((e=>{Fa[e+\"s\"]=Fa[e]}));const Ja=function(e){let t={},a=e.match(\"#Value+ #Duration\");if(a.found)a.forEach((e=>{let a=e.numbers().get()[0],n=e.terms().last().text(\"reduced\");n=n.replace(/ies$/,\"y\"),n=n.replace(/s$/,\"\"),Fa.hasOwnProperty(n)&&(n=Fa[n]),Wa.hasOwnProperty(n)&&null!==a&&(t[n]=a)}));else{if(e.match(\"(#Duration && /[0-9][a-z]+$/)\").found){let a=e.text(),n=a.match(/([0-9]+)/),r=a.match(/([a-z]+)/);n&&r&&(n=n[0]||null,r=r[0]||null,Fa.hasOwnProperty(r)&&(r=Fa[r]),Wa.hasOwnProperty(r)&&null!==n&&(t[r]=Number(n)))}}return t},Ua=\"(start|end|middle|starting|ending|midpoint|beginning)\",Ka=(e,t)=>{!0===e.found&&e.forEach((e=>{let a=e.text(\"reduced\"),n=parseInt(a,10);n&&n>1e3&&n<3e3&&e.tag(\"Year\",t)}))},Qa=(e,t)=>{!0===e.found&&e.forEach((e=>{let a=e.text(\"reduced\"),n=parseInt(a,10);n&&n>1900&&n<2030&&e.tag(\"Year\",t)}))},Ra=function(e,t){if(e.found){e.tag(\"Date\",t),e.numbers().lessThan(31).ifNo(\"#Year\").tag(\"#Time\",t)}},Ga=[\"act\",\"aft\",\"akst\",\"anat\",\"art\",\"azot\",\"azt\",\"bnt\",\"bot\",\"bt\",\"cast\",\"cat\",\"cct\",\"chast\",\"chut\",\"ckt\",\"cvt\",\"cxt\",\"davt\",\"eat\",\"ect\",\"fjt\",\"fkst\",\"fnt\",\"gamt\",\"get\",\"gft\",\"gilt\",\"gyt\",\"hast\",\"hncu\",\"hneg\",\"hnnomx\",\"hnog\",\"hnpm\",\"hnpmx\",\"hntn\",\"hovt\",\"iot\",\"irkt\",\"jst\",\"kgt\",\"kost\",\"lint\",\"magt\",\"mart\",\"mawt\",\"mmt\",\"nct\",\"nft\",\"novt\",\"npt\",\"nrt\",\"nut\",\"nzst\",\"omst\",\"pet\",\"pett\",\"phot\",\"phst\",\"pont\",\"pwt\",\"ret\",\"sakt\",\"samt\",\"sbt\",\"sct\",\"sret\",\"srt\",\"syot\",\"taht\",\"tft\",\"tjt\",\"tkt\",\"tlt\",\"tmt\",\"tot\",\"tvt\",\"ulat\",\"vut\",\"wakt\",\"wat\",\"wet\",\"wft\",\"wit\",\"wst\",\"yekt\"].reduce(((e,t)=>(e[t]=!0,e)),{}),Za=\"(in|by|before|during|on|until|after|of|within|all)\",Xa=\"(last|next|this|previous|current|upcoming|coming)\",en=\"(start|end|middle|starting|ending|midpoint|beginning|mid)\",tn=\"(spring|summer|winter|fall|autumn)\",an=\"(yesterday|today|tomorrow)\";let nn=[{match:\"in the (night|evening|morning|afternoon|day|daytime)\",tag:\"Time\",reason:\"in-the-night\"},{match:\"(#Value|#Time) (am|pm)\",tag:\"Time\",reason:\"value-ampm\"},{match:\"(tue|thu)\",tag:\"WeekDay\",reason:\"misc-weekday\"},{match:\"#Month #Date+\",tag:\"Date\",reason:\"correction-numberRange\"},{match:\"#Value of #Month\",tag:\"Date\",unTag:\"Time\",reason:\"value-of-month\"},{match:\"#Cardinal #Month\",tag:\"Date\",reason:\"cardinal-month\"},{match:\"#Month #Value (and|or|to)? #Value+\",tag:\"Date\",reason:\"value-to-value\"},{match:\"#Month the #Value\",tag:\"Date\",reason:\"month-the-value\"},{match:\"[(march|may)] to? #Date\",group:0,tag:\"Month\",reason:\"march-to\"},{match:\"^(march|may)$\",tag:\"Month\",reason:\"single-march\"},{match:\"#Month or #Month\",tag:\"Date\",reason:\"month-or-month\"},{match:\"(#WeekDay|#Month) #Value\",ifNo:\"#Money\",tag:\"Date\",reason:\"date-value\"},{match:\"#Value (#WeekDay|#Month)\",ifNo:\"#Money\",tag:\"Date\",reason:\"value-date\"},{match:\"#Value (#WeekDay|#Duration) back\",tag:\"#Date\",reason:\"3-back\"},{match:\"for #Value #Duration\",tag:\"Date\",reason:\"for-x-duration\"},{match:\"#Value #Duration (before|ago|hence|back)\",tag:\"Date\",reason:\"val-duration-past\"},{match:`${Za}? #Value #Duration`,tag:\"Date\",reason:\"value-duration\"},{match:\"in? #Value to #Value #Duration time?\",tag:\"Date\",reason:\"6-to-8-years\"},{match:\"#Value #Duration old\",unTag:\"Date\",reason:\"val-years-old\"},{match:`${Za}? ${Xa} ${tn}`,tag:\"Date\",reason:\"thisNext-season\"},{match:`the? ${en} of ${tn}`,tag:\"Date\",reason:\"section-season\"},{match:`${tn} ${Za}? #Cardinal`,tag:\"Date\",reason:\"season-year\"},{match:\"#Date the? #Ordinal\",tag:\"Date\",reason:\"correction\"},{match:`${Xa} #Date`,tag:\"Date\",reason:\"thisNext-date\"},{match:\"due? (by|before|after|until) #Date\",tag:\"Date\",reason:\"by\"},{match:\"(last|next|this|previous|current|upcoming|coming|the) #Date\",tag:\"Date\",reason:\"next-feb\"},{match:`#Preposition? the? ${en} of #Date`,tag:\"Date\",reason:\"section-of\"},{match:\"#Ordinal #Duration in #Date\",tag:\"Date\",reason:\"duration-in\"},{match:\"(early|late) (at|in)? the? #Date\",tag:\"Time\",reason:\"early-evening\"},{match:\"#Date [(by|before|after|at|@|about) #Cardinal]\",group:0,tag:\"Time\",reason:\"date-before-Cardinal\"},{match:\"#Date (#Preposition|to) #Date\",ifNo:\"#Duration\",tag:\"Date\",reason:\"date-prep-date\"},{match:\"(by|before|after|at|@|about) #Time\",tag:\"Time\",reason:\"preposition-time\"},{match:\"(in|after) /^[0-9]+(min|sec|wk)s?/\",tag:\"Date\",reason:\"shift-units\"},{match:\"#Date [(now|night|sometime)]\",group:0,tag:\"Time\",reason:\"date-now\"},{match:\"(from|starting|until|by) now\",tag:\"Date\",reason:\"for-now\"},{match:\"(each|every) night\",tag:\"Date\",reason:\"for-now\"},{match:\"#Date [(am|pm)]\",group:0,tag:\"Time\",reason:\"date-am\"},{match:`[${en}] #Date`,group:0,tag:\"Date\",reason:\"mid-sept\"},{match:\"#Month #Value to #Value of? #Year?\",tag:\"Date\",reason:\"june 5 to 7th\"},{match:\"#Value to #Value of? #Month #Year?\",tag:\"Date\",reason:\"5 to 7th june\"},{match:\"#Value #Duration of #Date\",tag:\"Date\",reason:\"third week of may\"},{match:\"#Value+ #Duration (after|before|into|later|afterwards|ago)?\",tag:\"Date\",reason:\"two days after\"},{match:\"#Value #Date\",tag:\"Date\",reason:\"two days\"},{match:\"#Date #Value\",tag:\"Date\",reason:\"june 5th\"},{match:\"#Date #Preposition #Value\",tag:\"Date\",reason:\"tuesday at 5\"},{match:\"#Date (after|before|during|on|in) #Value\",tag:\"Date\",reason:\"tomorrow before 3\"},{match:\"#Value (year|month|week|day) and a half\",tag:\"Date\",reason:\"a year and a half\"},{match:\"#Value and a half (years|months|weeks|days)\",tag:\"Date\",reason:\"5 and a half years\"},{match:\"on the #Ordinal\",tag:\"Date\",reason:\"on the fifth\"},{match:\"#Month #Value+ (and|or) #Value\",tag:\"Date\",reason:\"date-or-date\"},{match:\"#Value+ (and|or) #Value of #Month \",tag:\"Date\",reason:\"date-and-date\"},{match:\"(spring|summer|winter|fall|autumn|springtime|wintertime|summertime)\",tag:\"Season\",reason:\"date-tag1\"},{match:\"(q1|q2|q3|q4)\",tag:\"FinancialQuarter\",reason:\"date-tag2\"},{match:\"(this|next|last|current) quarter\",tag:\"FinancialQuarter\",reason:\"date-tag3\"},{match:\"(this|next|last|current) season\",tag:\"Season\",reason:\"date-tag4\"},{match:\"#Date #Preposition #Date\",tag:\"Date\",reason:\"friday to sunday\"},{match:\"(once|twice) (a|an|each) #Date\",tag:\"Date\",reason:\"once a day\"},{match:\"a #Duration\",tag:\"Date\",reason:\"a year\"},{match:\"(between|from) #Date\",tag:\"Date\",reason:\"between x and y\"},{match:\"(to|until|upto) #Date\",tag:\"Date\",reason:\"between x and y2\"},{match:\"between #Date+ and #Date+\",tag:\"Date\",reason:\"between x and y3\"},{match:\"#Month and #Month #Year\",tag:\"Date\",reason:\"x and y4\"},{match:\"the? #Date after next one?\",tag:\"Date\",reason:\"day after next\"},{match:\"(about|approx|approximately|around) #Date\",tag:\"Date\",reason:\"approximately june\"},{match:\"(by|until|on|in|at|during|over|every|each|due) the? #Date\",ifNo:\"#PhrasalVerb\",tag:\"Date\",reason:\"until june\"},{match:\"(by|until|after|before|during|on|in|following|since) (next|this|last)? #Date\",ifNo:\"#PhrasalVerb\",tag:\"Date\",reason:\"until last june\"},{match:\"this? (last|next|past|this|previous|current|upcoming|coming|the) #Date\",tag:\"Date\",reason:\"next september\"},{match:\"(starting|beginning|ending) #Date\",tag:\"Date\",reason:\"starting this june\"},{match:\"the? (start|end|middle|beginning) of (last|next|this|the) #Date\",tag:\"Date\",reason:\"start of june\"},{match:\"(the|this) #Date\",tag:\"Date\",reason:\"this coming june\"},{match:\"#Date up to #Date\",tag:\"Date\",reason:\"january up to june\"},{match:\"#Cardinal oclock\",tag:\"Time\",reason:\"2 oclock\"},{match:\"#Value (in|at) the? (morning|evening|night|nighttime)\",tag:\"Time\",reason:\"3 in the morning\"},{match:\"(5|10|15|20|five|ten|fifteen|quarter|twenty|half) (after|past) #Cardinal\",tag:\"Time\",reason:\"ten to seven\"},{match:\"(at|by|before) (5|10|15|20|five|ten|fifteen|twenty|quarter|half) (after|past|to)\",tag:\"Time\",reason:\"at-20-past\"},{match:\"#Date [at #Cardinal]\",group:0,ifNo:\"#Year\",tag:\"Time\",reason:\" tuesday at 4\"},{match:\"half an (hour|minute|second)\",tag:\"Date\",reason:\"half an hour\"},{match:\"(in|for|by|near|at) #Timezone\",tag:\"Date\",reason:\"in eastern time\"},{match:\"#Time to #Time\",tag:\"Date\",reason:\"3pm to 4pm\"},{match:\"#Time [(sharp|on the dot)]\",group:0,tag:\"Time\",reason:\"4pm sharp\"},{match:\"(at|around|near|#Date) [#Cardinal (thirty|fifteen) (am|pm)?]\",group:0,tag:\"Time\",reason:\"around four thirty\"},{match:\"#Cardinal (thirty|fifteen) (am|pm)\",tag:\"Time\",reason:\"four thirty am\"},{match:\"[#Cardinal (thirty|fifteen)] #Date\",group:0,tag:\"Time\",reason:\"four thirty tomorrow\"},{match:\"(anytime|sometime) (before|after|near) [#Cardinal]\",group:0,tag:\"Time\",reason:\"antime-after-3\"},{match:\"(#Cardinal|a|an) #Duration (before|after|ago|from|hence|back)\",tag:\"DateShift\",reason:\"nine weeks frow now\"},{match:\"in (around|about|maybe|perhaps)? #Cardinal #Duration\",tag:\"DateShift\",reason:\"in two weeks\"},{match:\"in (a|an) #Duration\",tag:\"DateShift\",reason:\"in a week\"},{match:\"[(a|an) #Duration from] #Date\",group:0,tag:\"DateShift\",reason:\"an hour from now\"},{match:\"(a|an) #Duration ago\",tag:\"DateShift\",reason:\"a month ago\"},{match:\"in half (a|an) #Duration\",tag:\"DateShift\",reason:\"in half an hour\"},{match:\"in a (few|couple) of? #Duration\",tag:\"DateShift\",reason:\"in a few weeks\"},{match:\"[#Duration (after|before)] #Date\",group:0,tag:\"DateShift\",reason:\"day after tomorrow\"},{match:\"#Month #Ordinal and #Ordinal\",tag:\"Date\",reason:\"ord-and-ord\"},{match:\"every other #Duration\",tag:\"Date\",reason:\"every-other\"},{match:\"(every|any|each|a) (day|weekday|week day|weekend|weekend day)\",tag:\"Date\",reason:\"any-weekday\"},{match:\"(every|any|each|a) (#WeekDay)\",tag:\"Date\",reason:\"any-wednesday\"},{match:\"(every|any|each|a) (#Duration)\",tag:\"Date\",reason:\"any-week\"},{match:\"[(wed|sat)] (#Month|#Year|on|between|during|from)\",group:0,tag:\"WeekDay\",reason:\"wed\"},{match:\"^day$\",unTag:\"Date\",reason:\"spa-day\"},{match:\"(in|of|by|for)? (#Possessive && #Date)\",unTag:\"Date\",reason:\"tomorrows meeting\"},{match:`${an} [#Value]$`,unTag:\"Date\",group:0,reason:\"yesterday-7\"},{match:`^[#Value] ${an}$`,group:0,unTag:\"Date\",reason:\"7 yesterday\"},{match:\"on #Cardinal$\",unTag:\"Date\",reason:\"on 5\"},{match:\"[this] tomorrow\",group:0,unTag:\"Date\",reason:\"this-tomorrow\"},{match:\"(q1|q2|q3|q4) #Year\",tag:\"Date\",reason:\"q2 2016\"},{match:\"^[#Value] (this|next|last)\",group:0,unTag:\"Date\",reason:\"4 next\"},{match:\"(last|this|next) #Duration [#Value]\",group:0,unTag:\"Date\",reason:\"this month 7\"},{match:\"[!#Month] #Value (last|this|next) #Date\",group:0,unTag:\"Date\",reason:\"7 this month\"},{match:\"(in|over) the #Duration #Date+?\",unTag:\"Date\",reason:\"over-the-duration\"},{match:\"#Ordinal quarter of? #Year\",unTag:\"Fraction\"},{match:\"(from|by|before) now\",unTag:\"Time\",tag:\"Date\"},{match:\"#Value of? (this|next|last) #Date\",tag:\"Date\"},{match:\"(first|initial|second|latter) half of #Month\",tag:\"Date\"}],rn=null;const on=function(e){let{world:t}=e;rn=rn||t.methods.one.buildNet(nn,t),e.sweep(rn)};var sn={dates:function(e){return e.cache(),on(e),on(e),function(e){e.match(\"(march|april|may) (and|to|or|through|until)? (march|april|may)\").tag(\"Date\").match(\"(march|april|may)\").tag(\"Month\",\"march|april|may\");let t=e.if(\"#Cardinal\");if(!0===t.found){let e=t.match(\"#Date #Value [#Cardinal]\",0);Ka(e,\"date-value-year\"),e=t.match(\"#Date [#Cardinal]\",0),Qa(e,\"date-year\"),e=t.match(`${Ua} of [#Cardinal]`),Qa(e,\"section-year\"),e=t.match(\"#Month #Value [#Cardinal]\",0),Ka(e,\"month-value-year\"),e=t.match(\"#Month #Value to #Value [#Cardinal]\",0),Ka(e,\"month-range-year\"),e=t.match(\"(in|of|by|during|before|starting|ending|for|year|since) [#Cardinal]\",0),Ka(e,\"in-year-1\"),e=t.match(\"(q1|q2|q3|q4) [#Cardinal]\",0),Ka(e,\"in-year-2\"),e=t.match(\"#Ordinal quarter of? [#Cardinal]\",0),Ka(e,\"in-year-3\"),e=t.match(\"the year [#Cardinal]\",0),Ka(e,\"in-year-4\"),e=t.match(\"it (is|was) [#Cardinal]\",0),Qa(e,\"in-year-5\"),t.match(`${Ua} of #Year`).tag(\"Date\");let a=t.match(\"between [#Cardinal] and [#Cardinal]\");Ka(a.groups(\"0\"),\"between-year-and-year-1\"),Ka(a.groups(\"1\"),\"between-year-and-year-2\")}let a=e.match(\"^/^20[012][0-9]$/$\");Qa(a,\"2020-ish\")}(e),function(e){let t=e.if(\"#Date\");if(t.found){let a=t.if(\"#NumberRange\");if(a.found){let e=a.match(\"[#NumberRange+] (on|by|at)? #WeekDay\",0);Ra(e,\"3-4-tuesday\"),e=a.match(\"[#NumberRange+] (on|by|at)? #Month #Value\",0),Ra(e,\"3-4 mar 3\"),e=a.match(\"[#NumberRange] to (#NumberRange && #Time)\",0),Ra(e,\"3-4pm\"),e=a.match(\"(#NumberRange && #Time) to [#NumberRange]\",0),Ra(e,\"3pm-4\")}let n=t.match(\"(from|between) #Cardinal and #Cardinal (in|on)? (#WeekDay|tomorrow|yesterday)\");Ra(n,\"from 9-5 tues\"),n=e.match(\"#Cardinal to #Cardinal (#WeekDay|tomorrow|yesterday)\"),Ra(n,\"9-5 tues\"),n=t.match(\"(from|between) [#NumericValue] (to|and) #Time\",0).tag(\"Time\",\"4-to-5pm\"),Ra(n,\"from 9-5pm\"),n=t.match(\"(#WeekDay|tomorrow|yesterday) (from|between)? (#Cardinal|#Time) (and|to) (#Cardinal|#Time)\"),Ra(n,\"tues 3-5\"),n=t.match(\"#Month #Value+ (from|between) [<time>(#Cardinal|#Time) (and|to) (#Cardinal|#Time)]\").group(\"time\"),Ra(n,\"sep 4 from 9-5\"),n=t.match(\"#Time to #Cardinal on? #Date\"),Ra(n,\"3pm-4 wed\"),n=t.match(\"#Cardinal to #Time on? #Date\"),Ra(n,\"3-4pm wed\"),n=t.match(\"#Cardinal to #Cardinal on? (#WeekDay|#Month #Value)\"),Ra(n,\"3-4 wed\")}}(e),function(e){let t=e.match(\"#Time [#Acronym]\",0);if(t.found){let e=t.text(\"reduced\");!0===Ga[e]&&t.tag(\"Timezone\",\"tz-abbr\")}}(e),function(e){if(e.has(\"#Date\")){let t=e.match(\"#Date+ by #Date+\");t.found&&!t.has(\"^due\")&&t.match(\"^#Date+\").unTag(\"Date\",\"by-monday\");let a=e.match(\"#Date+\");a.has(\"^between\")&&!a.has(\"and .\")&&a.unTag(\"Date\",\"fix-tagger\"),a.has(\"(minutes|seconds|weeks|hours|days|months)\")&&!a.has(\"#Value #Duration\")&&a.match(\"(minutes|seconds|weeks|hours|days|months)\").unTag(\"Date\",\"log-hours\"),a.has(\"about #Holiday\")&&a.match(\"about\").unTag(\"#Date\",\"about-thanksgiving\"),a.match(\"#Date+\").match(\"^the\").unTag(\"Date\")}}(e),e.uncache(),e.match(\"#Cardinal #Duration and? #DateShift\").tag(\"DateShift\",\"three days before\"),e.match(\"#DateShift and #Cardinal #Duration\").tag(\"DateShift\",\"three days and two weeks\"),e.match(\"#Time [(sharp|on the dot)]\").tag(\"Time\",\"4pm sharp\"),e}};const un=\"America/\",dn=\"Asia/\",ln=\"Europe/\",hn=\"Africa/\",mn=\"Australia/\",cn=\"Pacific/\",fn={\"british summer time\":ln+\"London\",bst:ln+\"London\",\"british time\":ln+\"London\",\"britain time\":ln+\"London\",\"irish summer time\":ln+\"Dublin\",\"irish time\":ln+\"Dublin\",\"central european time\":ln+\"Berlin\",cet:ln+\"Berlin\",\"central european summer time\":ln+\"Berlin\",cest:ln+\"Berlin\",\"central europe\":ln+\"Berlin\",\"eastern european time\":ln+\"Riga\",eet:ln+\"Riga\",\"eastern european summer time\":ln+\"Riga\",eest:ln+\"Riga\",\"eastern europe time\":ln+\"Riga\",\"western european time\":ln+\"Lisbon\",\"western european summer time\":ln+\"Lisbon\",\"turkey standard time\":ln+\"Istanbul\",\"turkish time\":ln+\"Istanbul\",utc:hn+\"Freetown\",\"greenwich standard time\":hn+\"Freetown\",gmt:hn+\"Freetown\",\"east africa time\":hn+\"Nairobi\",\"east african time\":hn+\"Nairobi\",\"eastern africa time\":hn+\"Nairobi\",\"central africa time\":hn+\"Khartoum\",\"central african time\":hn+\"Khartoum\",\"south africa standard time\":hn+\"Johannesburg\",\"west africa standard time\":hn+\"Lagos\",\"western africa time\":hn+\"Lagos\",\"west african time\":hn+\"Lagos\",\"australian central standard time\":mn+\"Adelaide\",acst:mn+\"Adelaide\",\"australian central daylight time\":mn+\"Adelaide\",acdt:mn+\"Adelaide\",\"australian eastern standard time\":mn+\"Brisbane\",aest:mn+\"Brisbane\",\"australian eastern daylight time\":mn+\"Brisbane\",aedt:mn+\"Brisbane\",\"australian western standard time\":mn+\"Perth\",awst:mn+\"Perth\",\"australian western daylight time\":mn+\"Perth\",awdt:mn+\"Perth\",\"australian central western standard time\":mn+\"Eucla\",acwst:mn+\"Eucla\",\"lord howe standard time\":mn+\"Lord_Howe\",lhst:mn+\"Lord_Howe\",\"lord howe daylight time\":mn+\"Lord_Howe\",lhdt:mn+\"Lord_Howe\",\"russian standard time\":ln+\"Moscow\",msk:ln+\"Moscow\",\"central standard time\":un+\"Chicago\",\"central time\":un+\"Chicago\",cst:un+\"Havana\",\"central daylight time\":un+\"Chicago\",cdt:un+\"Havana\",\"mountain standard time\":un+\"Denver\",\"mountain time\":un+\"Denver\",mst:un+\"Denver\",\"mountain daylight time\":un+\"Denver\",mdt:un+\"Denver\",\"atlantic standard time\":un+\"Halifax\",\"atlantic time\":un+\"Halifax\",ast:dn+\"Baghdad\",\"atlantic daylight time\":un+\"Halifax\",adt:un+\"Halifax\",\"eastern standard time\":un+\"New_York\",\"eastern time\":un+\"New_York\",est:un+\"New_York\",\"eastern daylight time\":un+\"New_York\",edt:un+\"New_York\",\"pacific time\":un+\"Los_Angeles\",\"pacific standard time\":un+\"Los_Angeles\",pst:un+\"Los_Angeles\",\"pacific daylight time\":un+\"Los_Angeles\",pdt:un+\"Los_Angeles\",\"alaskan standard time\":un+\"Anchorage\",\"alaskan time\":un+\"Anchorage\",ahst:un+\"Anchorage\",\"alaskan daylight time\":un+\"Anchorage\",ahdt:un+\"Anchorage\",\"hawaiian standard time\":cn+\"Honolulu\",\"hawaiian time\":cn+\"Honolulu\",hst:cn+\"Honolulu\",\"aleutian time\":cn+\"Honolulu\",\"hawaii time\":cn+\"Honolulu\",\"newfoundland standard time\":un+\"St_Johns\",\"newfoundland time\":un+\"St_Johns\",\"newfoundland daylight time\":un+\"St_Johns\",\"brazil time\":un+\"Sao_Paulo\",\"brazilian time\":un+\"Sao_Paulo\",\"argentina time\":un+\"Buenos_Aires\",\"argentinian time\":un+\"Buenos_Aires\",\"amazon time\":un+\"Manaus\",\"amazonian time\":un+\"Manaus\",\"easter island standard time\":\"Chile/Easterisland\",\"easter island summer time\":\"Chile/Easterisland\",easst:\"Chile/Easterisland\",\"venezuelan standard time\":un+\"Caracas\",\"venezuelan time\":un+\"Caracas\",\"venezuela time\":un+\"Caracas\",\"paraguay time\":un+\"Asuncion\",\"paraguay summer time\":un+\"Asuncion\",\"cuba standard time\":un+\"Havana\",\"cuba time\":un+\"Havana\",\"cuba daylight time\":un+\"Havana\",\"cuban time\":un+\"Havana\",\"bolivia time\":un+\"La_Paz\",\"bolivian time\":un+\"La_Paz\",\"colombia time\":un+\"Bogota\",\"colombian time\":un+\"Bogota\",\"acre time\":un+\"Eirunepe\",\"peru time\":un+\"Lima\",\"chile standard time\":un+\"Punta_Arenas\",\"chile time\":un+\"Punta_Arenas\",clst:un+\"Punta_Arenas\",\"chile summer time\":un+\"Punta_Arenas\",cldt:un+\"Punta_Arenas\",\"uruguay time\":un+\"Montevideo\",uyt:un+\"Montevideo\",\"arabic standard time\":dn+\"Baghdad\",\"iran standard time\":dn+\"Tehran\",\"iran time\":dn+\"Tehran\",\"iran daylight time\":dn+\"Tehran\",\"pakistan standard time\":dn+\"Karachi\",\"pakistan time\":dn+\"Karachi\",\"india standard time\":dn+\"Kolkata\",\"indian time\":dn+\"Kolkata\",\"indochina time\":dn+\"Bangkok\",\"china standard time\":dn+\"Shanghai\",\"alma-ata time\":dn+\"Almaty\",\"oral time\":dn+\"Oral\",\"orat time\":dn+\"Oral\",\"yakutsk time\":dn+\"Yakutsk\",yakt:dn+\"Yakutsk\",\"gulf standard time\":dn+\"Dubai\",\"gulf time\":dn+\"Dubai\",\"hong kong time\":dn+\"Hong_Kong\",\"western indonesian time\":dn+\"Jakarta\",\"indonesia time\":dn+\"Jakarta\",\"central indonesian time\":dn+\"Makassar\",\"israel daylight time\":dn+\"Jerusalem\",\"israel standard time\":dn+\"Jerusalem\",\"israel time\":dn+\"Jerusalem\",\"krasnoyarsk time\":dn+\"Krasnoyarsk\",\"malaysia time\":dn+\"Kuala_Lumpur\",\"singapore time\":dn+\"Singapore\",\"korea standard time\":dn+\"Seoul\",\"korea time\":dn+\"Seoul\",kst:dn+\"Seoul\",\"korean time\":dn+\"Seoul\",\"uzbekistan time\":dn+\"Samarkand\",\"vladivostok time\":dn+\"Vladivostok\",\"maldives time\":\"Indian/Maldives\",\"mauritius time\":\"Indian/Mauritius\",\"marshall islands time\":cn+\"Kwajalein\",\"samoa standard time\":cn+\"Midway\",\"somoan time\":cn+\"Midway\",\"chamorro standard time\":cn+\"Guam\",\"papua new guinea time\":cn+\"Bougainville\"};let yn=yt().timezones,pn=Object.keys(yn).reduce(((e,t)=>(e[t]=t,e)),{});var gn=Object.assign({},fn,pn);let wn={\"a couple\":\"Value\",thur:\"WeekDay\",thurs:\"WeekDay\"};const bn=function(e,t){e.forEach((e=>{wn[e]=t}))};bn(Object.keys(gn),\"Timezone\"),bn([\"weekday\",\"summer\",\"winter\",\"autumn\",\"all day\",\"eod\",\"eom\",\"eoy\",\"standard time\",\"daylight time\",\"tommorrow\"],\"Date\"),bn([\"centuries\",\"century\",\"day\",\"days\",\"decade\",\"decades\",\"hour\",\"hours\",\"hr\",\"hrs\",\"millisecond\",\"milliseconds\",\"minute\",\"minutes\",\"min\",\"mins\",\"month\",\"months\",\"seconds\",\"sec\",\"secs\",\"week end\",\"week ends\",\"weekend\",\"weekends\",\"week\",\"weeks\",\"wk\",\"wks\",\"year\",\"years\",\"yr\",\"yrs\",\"quarter\",\"qtr\",\"qtrs\",\"season\",\"seasons\"],\"Duration\"),bn([\"all hallows eve\",\"all saints day\",\"all sts day\",\"april fools\",\"armistice day\",\"australia day\",\"bastille day\",\"boxing day\",\"canada day\",\"christmas eve\",\"christmas\",\"cinco de mayo\",\"day of the dead\",\"dia de muertos\",\"dieciseis de septiembre\",\"emancipation day\",\"grito de dolores\",\"groundhog day\",\"halloween\",\"harvey milk day\",\"inauguration day\",\"independence day\",\"independents day\",\"juneteenth\",\"labour day\",\"national freedom day\",\"national nurses day\",\"new years eve\",\"new years\",\"purple heart day\",\"rememberance day\",\"rosa parks day\",\"saint andrews day\",\"saint patricks day\",\"saint stephens day\",\"saint valentines day\",\"st andrews day\",\"st patricks day\",\"st stephens day\",\"st valentines day \",\"valentines day\",\"valentines\",\"veterans day\",\"victoria day\",\"womens equality day\",\"xmas\",\"epiphany\",\"orthodox christmas day\",\"orthodox new year\",\"assumption of mary\",\"all souls day\",\"feast of the immaculate conception\",\"feast of our lady of guadalupe\",\"kwanzaa\",\"imbolc\",\"beltaine\",\"lughnassadh\",\"samhain\",\"martin luther king day\",\"mlk day\",\"presidents day\",\"mardi gras\",\"tax day\",\"commonwealth day\",\"mothers day\",\"memorial day\",\"fathers day\",\"columbus day\",\"indigenous peoples day\",\"canadian thanksgiving\",\"election day\",\"thanksgiving\",\"t-day\",\"turkey day\",\"black friday\",\"cyber monday\",\"ash wednesday\",\"palm sunday\",\"maundy thursday\",\"good friday\",\"holy saturday\",\"easter\",\"easter sunday\",\"easter monday\",\"orthodox good friday\",\"orthodox holy saturday\",\"orthodox easter\",\"orthodox easter monday\",\"ascension day\",\"pentecost\",\"whitsunday\",\"whit sunday\",\"whit monday\",\"trinity sunday\",\"corpus christi\",\"advent\",\"tu bishvat\",\"tu bshevat\",\"purim\",\"passover\",\"yom hashoah\",\"lag baomer\",\"shavuot\",\"tisha bav\",\"rosh hashana\",\"yom kippur\",\"sukkot\",\"shmini atzeret\",\"simchat torah\",\"chanukah\",\"hanukkah\",\"isra and miraj\",\"lailat al-qadr\",\"eid al-fitr\",\"id al-Fitr\",\"eid ul-Fitr\",\"ramadan\",\"eid al-adha\",\"muharram\",\"the prophets birthday\",\"ostara\",\"march equinox\",\"vernal equinox\",\"litha\",\"june solistice\",\"summer solistice\",\"mabon\",\"september equinox\",\"fall equinox\",\"autumnal equinox\",\"yule\",\"december solstice\",\"winter solstice\",\"chinese new year\",\"diwali\"],\"Holiday\"),bn([\"noon\",\"midnight\",\"morning\",\"tonight\",\"evening\",\"afternoon\",\"breakfast time\",\"lunchtime\",\"dinnertime\",\"midday\",\"eod\",\"oclock\",\"oclock\",\"at night\"],\"Time\");var kn=[[/^[0-9]+(min|sec|hr|d)s?$/i,\"Duration\",\"30min\"],[/^[0-9]{4}-[0-9]{2}$/,\"Date\",\"2012-06\"],[/^[0-9]{2}h[0-9]{2}$/i,\"Time\",\"13h30\"],[/^@[0-9]+:[0-9]{2}$/,\"Time\",\"@5:30\"],[/^@[1-9]+(am|pm)$/,\"Time\",\"@5pm\"],[/^(?:0[1-9]|[12]\\d|3[01])\\/(?:0[1-9]|[12]\\d|3[01])$/,\"Date\",\"03/02\"]];const Dn=e=>e?yt(e).format(\"{nice-day} {year}\"):\"-\",vn=\"\u001b[0m\",xn=e=>\"\u001b[35m\"+e+vn,On=e=>\"\u001b[36m\"+e+vn,Mn=e=>\"\u001b[2m\"+e+vn,_n=function(e){e.dates().forEach((e=>{let t=e.dates().get()[0];console.log(\"\\n────────\"),e.debug(\"highlight\");let a=\"\";t&&t.start&&(a=\"   \"+xn(Dn(t.start))),t&&t.end&&(a+=Mn(\"   →   \")+On(Dn(t.end))),console.log(a+\"\\n\")}))};var jn={tags:{FinancialQuarter:{is:\"Date\",not:[\"Fraction\"]},Season:{is:\"Date\"},Year:{is:\"Date\",not:[\"RomanNumeral\"]},Holiday:{is:\"Date\",also:\"Noun\"},DateShift:{is:\"Date\",not:[\"Timezone\",\"Holiday\"]}},words:wn,compute:sn,api:function(e){!function(e){class Dates extends e{constructor(e,t,a,n={}){super(e,t,a),this.viewType=\"Dates\",this.opts=Object.assign({},n)}get(e){let t=[];return this.forEach((e=>{Ya(e,this.opts).forEach((e=>{let a=Ba(e);a.start&&t.push(a)}))})),\"number\"==typeof e?t[e]:t}json(e={}){return this.map((t=>{let a=t.toView().json(e)[0]||{};if(e&&!1!==e.dates){let e=Ya(t,this.opts);e.length>0&&(a.dates=Ba(e[0]))}return a}),[])}format(e){let t=this.map((t=>{let a=Ya(t,this.opts)[0]||{};if(a.start){let n=a.start.d,r=n.format(e);if(a.end){let t=a.end.d;!1===n.isSame(t,\"day\")&&(r+=\" to \"+t.format(e))}t.replaceWith(r)}return t}));return new Dates(this.document,t.pointer,null,this.opts)}isBefore(e){let t=Ha(this,e);return this.filter((e=>{let a=Ya(e,this.opts)[0]||{};return a.start&&a.start.d&&a.start.d.isBefore(t)}))}isAfter(e){let t=Ha(this,e);return this.filter((e=>{let a=Ya(e,this.opts)[0]||{};return a.start&&a.start.d&&a.start.d.isAfter(t)}))}isSame(e,t){let a=Ha(this,t);return this.filter((t=>{let n=Ya(t,this.opts)[0]||{};return n.start&&n.start.d&&n.start.d.isSame(a,e)}))}}e.prototype.dates=function(e){let t=function(e){let t=e.match(\"#Date+\");t=t.filter((e=>{let t=e.has(\"^#Duration+$\")||e.has(\"^#Value #Duration+$\");return!(!0!==t||!e.has(\"(#FinancialQuarter|quarter)\"))||!1===t}));let a=t.match(\"[#Cardinal #Duration (in|on|this|next|during|for)] #Date\",0);return a.found&&(t=t.not(a)),a=t.match(\"[#Cardinal #Duration] #WeekDay\",0),a.found&&(t=t.not(a)),a=t.match(\"#Date [for #Value #Duration]$\",0),a.found&&(t=t.not(a)),a=t.match(\"[#Cardinal #Duration] #Date\",0),a.found&&!t.has(\"#Cardinal #Duration] (ago|from|before|after|back)\")&&(t=t.not(a)),a=t.match(\"for #Cardinal #Duration\"),a.found&&(t=t.not(a)),t=t.notIf(\"^one (#WeekDay|#Month)$\"),t=function(e){let t=null;return e.has(\"^(between|within) #Date\")?e:(e.has(\"#Month\")&&(t=e.match(\"[#Month #Value] and? #Month\",0).ifNo(\"@hasDash$\"),t.found&&(e=e.splitAfter(t)),t=e.match(\"[#Value #Month] and? #Value #Month\",0),t.found&&(e=e.splitAfter(t)),t=e.match(\"^[#Month] and? #Month #Ordinal?$\",0),t.found&&(e=e.splitAfter(t)),t=e.match(\"[#Month #Value] #Month\",0).ifNo(\"@hasDash$\"),t.found&&(e=e.splitAfter(t))),e.has(\"#WeekDay\")&&(t=e.match(\"^[#WeekDay] and? #WeekDay$\",0).ifNo(\"@hasDash$\"),t.found&&(e=e.splitAfter(t)),t=e.match(\"#WeekDay #WeekDay and? #WeekDay\"),t.found&&(e=e.splitOn(\"#WeekDay\")),t=e.match(\"[#WeekDay] (and|or|this|next)? #WeekDay\",0).ifNo(\"@hasDash$\"),t.found&&(e=e.splitAfter(\"#WeekDay\"))),t=e.match(\"(this|next) #Duration [(today|tomorrow|yesterday)]\",0),t.found&&(e=e.splitBefore(t)),t=e.match(\"[(today|tomorrow|yesterday)] #Value #Month\",0),t.found&&(e=e.splitAfter(t)),t=e.match(\"[(today|tomorrow|yesterday)] (today|tomorrow|yesterday|#WeekDay)\",0).ifNo(\"@hasDash$\"),t.found&&(e=e.splitAfter(t)),t=e.match(\"#Year [and] #Year\",0),t.found&&(e=e.splitAfter(t)),e=(e=e.not(\"^and\")).not(\"and$\"))}(t),t=t.notIf(\"(#Money|#Percentage)\"),t=t.notIf(\"^per #Duration\"),t}(this);return new Dates(this.document,t.pointer,null,e)}}(e),function(e){class Times extends e{constructor(e,t,a,n){super(e,t,a),this.viewType=\"Times\",this.opts=n||{}}format(e){let t=this.map((t=>{let a=La(t)||{};if(a.time){let n=yt.now().time(a.time),r=a.time;r=\"24h\"===e?n.format(\"time-24\"):n.format(e),(t=t.not(\"#Preposition\")).replaceWith(r)}return t}));return new Times(this.document,t.pointer,null,this.opts)}get(e){return Ia(this,e).map(La)}json(e={}){return this.map((t=>{let a=t.toView().json(e)[0]||{};return e&&!1!==e.time&&(a.time=La(t)),a}),[])}}e.prototype.times=function(e){let t=this.match(\"#Time+ (am|pm)?\");return t=Ia(t,e),new Times(this.document,t.pointer)}}(e),function(e){class Durations extends e{constructor(e,t,a){super(e,t,a),this.context={}}json(e={}){return this.map((t=>{let a=t.toView().json(e)[0]||{};return e&&!1!==e.duration&&(a.duration=Ja(t)),a}),[])}get(e){let t=[];return this.forEach((e=>{let a=Ja(e);t.push(a)})),\"number\"==typeof e?t[e]:t}}e.prototype.durations=function(e){let t=this.match(\"#Value+ #Duration (and? #Value+ #Duration)?\");return t=t.notIf(\"#DateShift\"),\"number\"==typeof e&&(t=t.eq(e)),new Durations(this.document,t.pointer)}}(e)},mutate:e=>{e.model.two.regexText=e.model.two.regexText||[],e.model.two.regexText=e.model.two.regexText.concat(kn),e.methods.one.debug=e.methods.one.debug||{},e.methods.one.debug.dates=_n},hooks:[\"dates\"],version:\"3.7.1\"};export{jn as default};\n"
  },
  {
    "path": "plugins/dates/changelog.md",
    "content": "<!-- #### [Unreleased]\n- **[breaking]** - return array in .json().dates\n-->\n\n### 3.7.1 [Jan 2025]\n* * fix `#Month (next|last|this) year` #1162\n- **[update]** - dependencies\n\n### 3.7.0 [July 2024]\n- **[new]** - date features:\n* * `'until christmas'`\n* * `'in-the-morning'`\n* * `'sept to oct 2008'`\n* * improved `'2-4 weeks'` logic\n* * fix `'2 days before'` tagging\n\n### 3.6.0 [July 2024]\n- **[new]** - support `{dmy:true}` option #1131 (thanks Howard!)\n- **[update]** - dependencies\n\n### 3.5.0 [Feb 2024]\n\n- **[new]** - `dates().isBefore()`, `dates().isBefore()` methods\n- **[new]** - `.dates().isSame()` method\n- **[new]** - `.debug('dates')` function\n- **[fix]** - tokenizer fixes\n\n### 2.2.0 [April 2021]\n\n- **[new]** - start parsing or/and date combos\n\n### 2.1.0 [April 2021]\n\n- **[change]** - null timezone is now the same as undefined timezone\n- **[change]** - drop ie11 support\n- **[change]** - dont babel esm build anymore\n\n### 2.0.2 [April 2021]\n\n- **[change]** - better time-range support\n- **[change]** - date-shifts set smarter date-units\n\n### 2.0.1 [March 2021]\n\n- **[change]** - better am/pm choices in ambiguous time-ranges\n\n### 2.0.0 [March 2021]\n\n- **[breaking]** - flatten json date results\n- **[breaking]** - remove duration from .get results\n- **[breaking]** - make repeating dates objects w/ start/end dates\n- **[new]** - return date unit information\n- **[new]** - custom time for repeating dates\n- **[change]** - include assumed iana timezone in results\n\n### 1.5.5 [March 2021]\n\n- **[change]** - use more-intuitive choices for ampm\n- **[change]** - support more time-range formats\n- **[change]** - reverse upsidedown date-ranges\n\n### 1.5.3 [March 2021]\n\n- **[change]** - move Timezone tag to main lib\n- **[change]** - support timezone-abbrevations\n\n### 1.5.0 [March 2021]\n\n- **[change]** - return dates in computer's timezone, unless set\n\n### 1.4.3 [March 2021]\n\n- **[change]** - consecutive date tokenization changes\n- **[change]** - fixes to 'this/next/last x' logic\n\n### 1.4.1 [Jan 2021]\n\n- **[change]** - date tokenization of multiple AND and OR dates\n- **[change]** - smart tokenization of duration and date\n- **[change]** - 'in 2 minutes' vs 'for 2 minutes'\n\n### 1.4.0 [Jan 2021]\n\n- **[new]** - `.durations()` method\n- **[new]** - `.times()` method\n- **[new]** - begin support for repeating, interval-based dates 'any wednesday in june'\n\n### 1.3.0 [Dec 2020]\n\n- first not-crappy release.\n- 1,552 tests now passing.\n"
  },
  {
    "path": "plugins/dates/demo/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n\n  <script src=\"https://unpkg.com/compromise\"></script>\n  <!-- <script src=\"https://unpkg.com/compromise-dates\"></script> -->\n  <script src=\"../builds/compromise-dates.min.js\"></script>\n\n</head>\n\n<body>\n  <p>compromise-dates demo:</p>\n  <ul>\n    <kbd>lets meet in 32 days</kbd>\n    <h2 id=\"res\">loading</h2>\n  </ul>\n\n  <script defer>\n    nlp.plugin(compromiseDates) // window.compromiseDates\n    let txt = document.querySelector('kbd').innerText\n    let doc = nlp(txt)\n    let json = doc.dates().json()\n    let iso = json[0].dates.start\n    document.querySelector('#res').innerHTML = new Date(iso).toDateString()\n  </script>\n</body>\n\n</html>"
  },
  {
    "path": "plugins/dates/index.d.cts",
    "content": "import dates from './index.d';\n\nexport = dates\n"
  },
  {
    "path": "plugins/dates/index.d.ts",
    "content": "import nlp from 'compromise'\ntype View = ReturnType<typeof nlp>\n\nexport interface dateOptions {\n  /** the default timezone is 'ETC/UTC' */\n  timezone?: string,\n  /** the implicit, or reference moment for 'now'*/\n  today: '2020-02-20',\n  /** the implied duration to use for 'after june 2nd' */\n  punt: { weeks: 2 },\n  /** the default beginning of a day, like '8:00am'*/\n  dayStart: string,\n  /** the default beginning of a day, like '5:00pm'*/\n  dayEnd: string,\n  /** whether to assume british-format dates, when unclear*/\n  dmy: boolean\n}\n\ninterface DateView extends View {\n  /** convert parsed dates to a date format */\n  format(fmt: string): View\n  /** get parsed date metadata */\n  get(): object[]\n}\n\ninterface TimeView extends View {\n  /** convert parsed dates to a time format */\n  format(fmt: string): View\n  /** get parsed time metadata */\n  get(): object[]\n}\n\nexport interface DatesMethods {\n  /** match all date-phrases */\n  dates(opts?: dateOptions): DateView\n  /** match time-of-day phrases */\n  times(opts?: dateOptions): TimeView\n  /** match lengths of time, like '2 weeks' */\n  durations(): View\n}\n\n/** extended compromise lib **/\ndeclare const nlpDates: nlp.TypedPlugin<DatesMethods>\n\nexport default nlpDates\n"
  },
  {
    "path": "plugins/dates/package.json",
    "content": "{\n  \"name\": \"compromise-dates\",\n  \"description\": \"plugin for nlp-compromise\",\n  \"version\": \"3.7.1\",\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"main\": \"./src/plugin.js\",\n  \"unpkg\": \"./builds/compromise-dates.min.js\",\n  \"module\": \"./builds/compromise-dates.mjs\",\n  \"type\": \"module\",\n  \"sideEffects\": false,\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": {\n        \"types\": \"./index.d.ts\",\n        \"default\": \"./src/plugin.js\"\n      },\n      \"require\": {\n        \"types\": \"./index.d.cts\",\n        \"default\": \"./builds/compromise-dates.cjs\"\n      }\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise/tree/master/plugins/dates\",\n  \"scripts\": {\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"testb\": \"TESTENV=prod tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"perf\": \"node ./scripts/perf.js\",\n    \"version\": \"node ./scripts/version.js\",\n    \"build\": \"npm run version && rollup -c --silent\"\n  },\n  \"files\": [\n    \"builds/\",\n    \"src/\",\n    \"index.d.ts\"\n  ],\n  \"peerDependencies\": {\n    \"compromise\": \">=14.2.0\"\n  },\n  \"dependencies\": {\n    \"spacetime\": \"7.7.0\",\n    \"spacetime-holiday\": \"0.3.0\"\n  },\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "plugins/dates/scratch.js",
    "content": "/* eslint-disable no-console, no-unused-vars */\nimport nlp from '../../src/three.js'\nimport spacetime from 'spacetime'\nimport datePlugin from './src/plugin.js'\nnlp.plugin(datePlugin)\n// nlp.verbose('tagger')\nnlp.verbose('date')\n\nconst fmt = iso => (iso ? spacetime(iso).format('{day-short} {nice} {year}') : '-')\n\nprocess.env.DEBUG_DATE = true\n\n// date issues:\n// 'the month before christmas' vs 'a month before christmas'\n// middle september\n// end of september\n// week of june 3rd\n// fridays in june\n// every saturday\n// now\n\nconst context = {\n  today: '1999-04-17',\n  // today: [2006, 8, 24],\n  // timezone: 'Asia/Shanghai',\n  // dayStart: '8:00am',\n  // dayEnd: '8:00pm',\n}\n\nlet txt = ` We will see him in mid-September`\ntxt = `5th day of q1 2002`\n// txt = `tomorrow at 5:45pm`\n// txt = 'aug. 3'\n// txt = 'lets meet 1 weeks from now '\n// txt = 'on april fools 2020 '\n// txt = 'four thirty'\n// txt = 'on april 22nd'\ntxt = 'in basically one week from now'\ntxt = 'go shopping with april'\ntxt = 'between Oct and Sept 2008'\ntxt = '6:30pm'\n// txt = 'sept 2008 to oct 2008'\n// txt = 'only in 2018 and 2020'\n// txt = '2024/02/05 and 2024/03/09'\n// txt = 'in 03/28'\n// txt = 'in 28/28'\n// txt = '1 to 5 weeks ago'\n// txt = 'in 2-4 years from now'\n// txt = 'in 1-2 weeks from now'\n// txt = 'in 1 to 2 months'\n// txt = `end of september`\n\n// nlp.verbose('tagger')\nconst doc = nlp(txt)\n// doc.debug('dates')\n// console.log(doc.dates().get())\n// doc.times().format('24h')\n// doc.debug()\n\n// console.log(doc.times(context).json())\nconst found = doc.dates(context).json()\nconsole.log(found[0].dates)\nfound.forEach((o) => {\n  console.log('start: ', fmt(o.dates.start))\n  console.log('  end: ', fmt(o.dates.end))\n})\n\n// let doc = nlp(txt).debug()\n// let m = doc.dates(context)\n// console.log(m.get())\n"
  },
  {
    "path": "plugins/dates/scripts/perf.js",
    "content": "/* eslint-disable no-console*/\nimport corpus from 'nlp-corpus'\nimport nlp from '../../../src/three.js'\nimport plugin from '../src/plugin.js'\nnlp.extend(plugin)\n\nconst n = 30000\nconsole.log(` -- processing ${n.toLocaleString()} sentences-`)\nconst docs = corpus.all().slice(30000, n + 30000)\n\nconst percent = (part, total) => {\n  let num = (part / total) * 100;\n  num = Math.round(num * 10) / 10;\n  return num;\n};\n\nlet found = {}\nlet matches = 0\n\ndocs.forEach(str => {\n  const doc = nlp(str)\n  const res = doc.dates().json({ normal: true })\n  res.forEach(o => {\n    console.log(o.normal)\n    found[o.normal] = found[o.normal] || 0\n    found[o.normal] += 1\n    matches += 1\n    if (o.normal === 'at some' || o.normal === \"or\" || o.normal === \"but\" || o.normal === \"to\") {\n      console.log(' =-=-=-=-\\n\\n   ', str)\n    }\n  })\n})\n// sort by freq\nfound = Object.keys(found).map(k => [k, found[k]])\nfound = found.sort((a, b) => (a[1] > b[1] ? -1 : 0))\nfound = found.slice(0, 400)\n\n\nconsole.log(JSON.stringify(found, null, 2))\nconsole.log(`found ${matches.toLocaleString()} matches in ${n} sentences`)\nconsole.log(percent(matches, n) + '%')"
  },
  {
    "path": "plugins/dates/scripts/version.js",
    "content": "import fs from 'fs'\n// avoid requiring our whole package.json file\n// make a small file for our version number\nconst pkg = JSON.parse(fs.readFileSync('./package.json').toString())\n\nfs.writeFileSync('./src/_version.js', `export default '${pkg.version}'`)\n"
  },
  {
    "path": "plugins/dates/src/_version.js",
    "content": "export default '3.7.1'"
  },
  {
    "path": "plugins/dates/src/api/dates.js",
    "content": "import find from './find/index.js'\nimport parseDates from './parse/index.js'\nimport toJSON from './toJSON.js'\n\nconst quickDate = function (view, str) {\n  const tmp = view.fromText(str)\n  const found = parseDates(tmp, view.opts)[0]\n  if (!found || !found.start || !found.start.d) {\n    return null\n  }\n  return found.start.d\n}\n\nconst api = function (View) {\n  class Dates extends View {\n    constructor(document, pointer, groups, opts = {}) {\n      super(document, pointer, groups)\n      this.viewType = 'Dates'\n      this.opts = Object.assign({}, opts)\n    }\n\n    get(n) {\n      const all = []\n      this.forEach(m => {\n        parseDates(m, this.opts).forEach(res => {\n          const json = toJSON(res)\n          if (json.start) {\n            all.push(json)\n          }\n        })\n      })\n      if (typeof n === 'number') {\n        return all[n]\n      }\n      return all\n    }\n\n    json(opts = {}) {\n      return this.map(m => {\n        const json = m.toView().json(opts)[0] || {}\n        if (opts && opts.dates !== false) {\n          const parsed = parseDates(m, this.opts)\n          if (parsed.length > 0) {\n            json.dates = toJSON(parsed[0])\n          }\n        }\n        return json\n      }, [])\n    }\n\n    /** replace date terms with a formatted date */\n    format(fmt) {\n      const found = this\n      const res = found.map(m => {\n        const obj = parseDates(m, this.opts)[0] || {}\n        if (obj.start) {\n          const start = obj.start.d\n          let str = start.format(fmt)\n          if (obj.end) {\n            const end = obj.end.d\n            if (start.isSame(end, 'day') === false) {\n              str += ' to ' + end.format(fmt)\n            }\n          }\n          m.replaceWith(str)\n        }\n        return m\n      })\n      return new Dates(this.document, res.pointer, null, this.opts)\n    }\n\n    /** return only dates occuring before a given date  */\n    isBefore(iso) {\n      const pivot = quickDate(this, iso)\n      return this.filter(m => {\n        const obj = parseDates(m, this.opts)[0] || {}\n        return obj.start && obj.start.d && obj.start.d.isBefore(pivot)\n      })\n    }\n    /** return only dates occuring after a given date  */\n    isAfter(iso) {\n      const pivot = quickDate(this, iso)\n      return this.filter(m => {\n        const obj = parseDates(m, this.opts)[0] || {}\n        return obj.start && obj.start.d && obj.start.d.isAfter(pivot)\n      })\n    }\n    /** return only dates occuring after a given date  */\n    isSame(unit, iso) {\n      const pivot = quickDate(this, iso)\n      return this.filter(m => {\n        const obj = parseDates(m, this.opts)[0] || {}\n        return obj.start && obj.start.d && obj.start.d.isSame(pivot, unit)\n      })\n    }\n  }\n\n  View.prototype.dates = function (opts) {\n    const m = find(this)\n    return new Dates(this.document, m.pointer, null, opts)\n  }\n}\n\nexport default api\n"
  },
  {
    "path": "plugins/dates/src/api/durations/index.js",
    "content": "import parse from './parse.js'\n\nconst addDurations = function (View) {\n  /** phrases like '2 months', or '2mins' */\n  class Durations extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.context = {}\n    }\n    /** overload the original json with duration information */\n    json(opts = {}) {\n      return this.map(m => {\n        const json = m.toView().json(opts)[0] || {}\n        if (opts && opts.duration !== false) {\n          json.duration = parse(m)\n        }\n        return json\n      }, [])\n    }\n    /** easy getter for the time */\n    get(options) {\n      const arr = []\n      this.forEach(doc => {\n        const res = parse(doc)\n        arr.push(res)\n      })\n      if (typeof options === 'number') {\n        return arr[options]\n      }\n      return arr\n    }\n  }\n\n  /** phrases like '2 months' */\n  View.prototype.durations = function (n) {\n    let m = this.match('#Value+ #Duration (and? #Value+ #Duration)?')\n\n    // not 'in 20 minutes'\n    m = m.notIf('#DateShift')\n\n    if (typeof n === 'number') {\n      m = m.eq(n)\n    }\n    return new Durations(this.document, m.pointer)\n  }\n}\nexport default addDurations\n"
  },
  {
    "path": "plugins/dates/src/api/durations/parse.js",
    "content": "const known = {\n  century: true,\n  day: true,\n  decade: true,\n  hour: true,\n  millisecond: true,\n  minute: true,\n  month: true,\n  second: true,\n  weekend: true,\n  week: true,\n  year: true,\n  quarter: true,\n  season: true,\n}\n\nconst mapping = {\n  m: 'minute',\n  h: 'hour',\n  hr: 'hour',\n  min: 'minute',\n  sec: 'second',\n  'week end': 'weekend',\n  wk: 'week',\n  yr: 'year',\n  qtr: 'quarter',\n}\n// add plurals\nObject.keys(mapping).forEach((k) => {\n  mapping[k + 's'] = mapping[k]\n})\n\nconst parse = function (doc) {\n  const duration = {}\n  //parse '8 minutes'\n  const twoWord = doc.match('#Value+ #Duration')\n  if (twoWord.found) {\n    twoWord.forEach((m) => {\n      const num = m.numbers().get()[0]\n      let unit = m.terms().last().text('reduced')\n      unit = unit.replace(/ies$/, 'y')\n      unit = unit.replace(/s$/, '')\n      // turn 'mins' into 'minute'\n      if (mapping.hasOwnProperty(unit)) {\n        unit = mapping[unit]\n      }\n      if (known.hasOwnProperty(unit) && num !== null) {\n        duration[unit] = num\n      }\n    })\n  } else {\n    const oneWord = doc.match('(#Duration && /[0-9][a-z]+$/)')\n    if (oneWord.found) {\n      const str = doc.text()\n      let num = str.match(/([0-9]+)/)\n      let unit = str.match(/([a-z]+)/)\n      if (num && unit) {\n        num = num[0] || null\n        unit = unit[0] || null\n        if (mapping.hasOwnProperty(unit)) {\n          unit = mapping[unit]\n        }\n        if (known.hasOwnProperty(unit) && num !== null) {\n          duration[unit] = Number(num)\n        }\n      }\n    }\n  }\n  return duration\n}\nexport default parse\n"
  },
  {
    "path": "plugins/dates/src/api/find/index.js",
    "content": "import split from './split.js'\n\nconst findDate = function (doc) {\n  let dates = doc.match('#Date+')\n  // ignore only-durations like '20 minutes'\n  dates = dates.filter(m => {\n    const isDuration = m.has('^#Duration+$') || m.has('^#Value #Duration+$')\n    // allow 'q4', etc\n    if (isDuration === true && m.has('(#FinancialQuarter|quarter)')) {\n      return true\n    }\n    return isDuration === false\n  })\n  // 30 minutes on tuesday\n  let m = dates.match('[#Cardinal #Duration (in|on|this|next|during|for)] #Date', 0)\n  if (m.found) {\n    dates = dates.not(m)\n  }\n  // 30 minutes tuesday\n  m = dates.match('[#Cardinal #Duration] #WeekDay', 0)\n  if (m.found) {\n    dates = dates.not(m)\n  }\n  // tuesday for 30 mins\n  m = dates.match('#Date [for #Value #Duration]$', 0)\n  if (m.found) {\n    dates = dates.not(m)\n  }\n  // '20 minutes june 5th'\n  m = dates.match('[#Cardinal #Duration] #Date', 0) //but allow '20 minutes ago'\n  if (m.found && !dates.has('#Cardinal #Duration] (ago|from|before|after|back)')) {\n    dates = dates.not(m)\n  }\n  // for 20 minutes\n  m = dates.match('for #Cardinal #Duration')\n  if (m.found) {\n    dates = dates.not(m)\n  }\n  // 'one saturday'\n  dates = dates.notIf('^one (#WeekDay|#Month)$')\n  // tokenize the dates\n  dates = split(dates)\n\n  // $5 an hour\n  dates = dates.notIf('(#Money|#Percentage)')\n  dates = dates.notIf('^per #Duration')\n  return dates\n}\nexport default findDate\n"
  },
  {
    "path": "plugins/dates/src/api/find/split.js",
    "content": "// chop things up into bite-size pieces\nconst split = function (dates) {\n  let m = null\n  // don't split anything if it looks like a range\n  if (dates.has('^(between|within) #Date')) {\n    return dates\n  }\n\n  if (dates.has('#Month')) {\n    // 'june 5, june 10'\n    m = dates.match('[#Month #Value] and? #Month', 0).ifNo('@hasDash$')\n    if (m.found) {\n      dates = dates.splitAfter(m)\n    }\n\n    // '5 june, 10 june'\n    m = dates.match('[#Value #Month] and? #Value #Month', 0)\n    if (m.found) {\n      dates = dates.splitAfter(m)\n    }\n\n    // 'june, august'\n    m = dates.match('^[#Month] and? #Month #Ordinal?$', 0)\n    if (m.found) {\n      dates = dates.splitAfter(m)\n    }\n\n    // 'june 5th, june 10th'\n    m = dates.match('[#Month #Value] #Month', 0).ifNo('@hasDash$')\n    if (m.found) {\n      dates = dates.splitAfter(m)\n    }\n  }\n\n  if (dates.has('#WeekDay')) {\n    // 'tuesday, wednesday'\n    m = dates.match('^[#WeekDay] and? #WeekDay$', 0).ifNo('@hasDash$')\n    if (m.found) {\n      dates = dates.splitAfter(m)\n    }\n\n    // 'tuesday, wednesday, and friday'\n    m = dates.match('#WeekDay #WeekDay and? #WeekDay')\n    if (m.found) {\n      dates = dates.splitOn('#WeekDay')\n    }\n\n    // monday, wednesday\n    m = dates.match('[#WeekDay] (and|or|this|next)? #WeekDay', 0).ifNo('@hasDash$')\n    if (m.found) {\n      dates = dates.splitAfter('#WeekDay')\n    }\n  }\n\n  // next week tomorrow\n  m = dates.match('(this|next) #Duration [(today|tomorrow|yesterday)]', 0)\n  if (m.found) {\n    dates = dates.splitBefore(m)\n  }\n  // tomorrow 15 march\n  m = dates.match('[(today|tomorrow|yesterday)] #Value #Month', 0)\n  if (m.found) {\n    dates = dates.splitAfter(m)\n  }\n  // tomorrow yesterday\n  m = dates.match('[(today|tomorrow|yesterday)] (today|tomorrow|yesterday|#WeekDay)', 0).ifNo('@hasDash$')\n  if (m.found) {\n    dates = dates.splitAfter(m)\n  }\n  //1998 and 1999\n  m = dates.match('#Year [and] #Year', 0)\n  if (m.found) {\n    dates = dates.splitAfter(m)\n  }\n  // cleanup any splits\n  dates = dates.not('^and')\n  dates = dates.not('and$')\n  return dates\n}\nexport default split\n"
  },
  {
    "path": "plugins/dates/src/api/index.js",
    "content": "import dates from './dates.js'\nimport times from './times.js'\nimport durations from './durations/index.js'\n\nconst api = function (View) {\n  dates(View)\n  times(View)\n  durations(View)\n}\nexport default api"
  },
  {
    "path": "plugins/dates/src/api/normalize.js",
    "content": "\nconst normalize = function (doc) {\n  doc = doc.clone()\n  // 'four thirty' -> 4:30\n  const m = doc.match('#Time+').match('[<hour>#Cardinal] [<min>(thirty|fifteen)]')\n  if (m.found) {\n    const hour = m.groups('hour')\n    const min = m.groups('min')\n    const num = hour.values().get()[0]\n    if (num > 0 && num <= 12) {\n      const mins = min.values().get()[0]\n      const str = `${num}:${mins}`\n      m.replaceWith(str)\n    }\n  }\n\n  if (!doc.numbers) {\n    console.warn(`Warning: compromise .numbers() not loaded.\\n   This plugin requires >= v14`) //eslint-disable-line\n  } else {\n    // doc.numbers().normalize()\n    // convert 'two' to 2\n    const num = doc.numbers()\n    num.toNumber()\n    num.toCardinal(false)\n  }\n  // expand 'aug 20-21'\n  if (doc.contractions) {\n    doc.contractions().expand()\n  }\n  // remove adverbs\n  doc.adverbs().remove()\n  // 'week-end'\n  doc.replace('week end', 'weekend', true).tag('Date')\n  // 'a up to b'\n  doc.replace('up to', 'upto', true).tag('Date')\n  // 'a year ago'\n  if (doc.has('once (a|an) #Duration') === false) {\n    doc.match('[(a|an)] #Duration', 0).replaceWith('1').compute('lexicon')\n    // tagger(doc)\n  }\n  // 'in a few years'\n  // m = doc.match('in [a few] #Duration')\n  // if (m.found) {\n  //   m.groups('0').replaceWith('2')\n  //   tagger(doc)\n  // }\n  // jan - feb\n  doc.match('@hasDash').insertAfter('to').tag('Date')\n  return doc\n}\nexport default normalize\n"
  },
  {
    "path": "plugins/dates/src/api/parse/index.js",
    "content": "import parseRange from './range/index.js'\nimport spacetime from 'spacetime'\nimport normalize from './normalize.js'\n\n\n\nconst parse = function (doc, context) {\n  // normalize context\n  context = context || {}\n  if (context.timezone === false) {\n    context.timezone = 'UTC'\n  }\n  context.today = context.today || spacetime.now(context.timezone)\n  context.today = spacetime(context.today, context.timezone)\n\n  doc = normalize(doc)\n\n  const res = parseRange(doc, context)\n  return res\n}\nexport default parse\n"
  },
  {
    "path": "plugins/dates/src/api/parse/normalize.js",
    "content": "const normalize = function (doc) {\n\n  if (!doc.numbers) {\n    console.warn(`\\nCompromise warning: compromise/three must be used with compromise-dates plugin\\n`) // eslint-disable-line\n  }\n\n  // normalize doc\n  doc = doc.clone()\n  doc.numbers().toNumber()\n\n  // expand 'aug 20-21'\n  doc.contractions().expand()\n\n  // 'week-end'\n  doc.replace('week end', 'weekend', true).tag('Date')\n  // 'a up to b'\n  doc.replace('up to', 'upto', true).tag('Date')\n  // 'a year ago'\n  if (doc.has('once (a|an) #Duration') === false) {\n    doc.match('[(a|an)] #Duration', 0).replaceWith('1', { tags: true }).compute('lexicon')\n  }\n  // jan - feb\n  doc.match('@hasDash').insertAfter('to').tag('Date')\n  return doc\n}\n\nexport default normalize"
  },
  {
    "path": "plugins/dates/src/api/parse/one/01-tokenize/01-shift.js",
    "content": "const knownUnits = {\n  second: true,\n  minute: true,\n  hour: true,\n  day: true,\n  week: true,\n  weekend: true,\n  month: true,\n  season: true,\n  quarter: true,\n  year: true,\n}\n\nconst aliases = {\n  wk: 'week',\n  min: 'minute',\n  sec: 'second',\n  weekend: 'week', //for now...\n}\n\nconst parseUnit = function (m) {\n  let unit = m.match('#Duration').text('normal')\n  unit = unit.replace(/s$/, '')\n  // support shorthands like 'min'\n  if (aliases.hasOwnProperty(unit)) {\n    unit = aliases[unit]\n  }\n  return unit\n}\n\n//turn '5 weeks before' to {weeks:5}\nconst parseShift = function (doc) {\n  const result = {}\n  let m = doc.none()\n  let shift = doc.match('#DateShift+')\n  if (shift.found === false) {\n    return { res: result, m }\n  }\n\n  // '5 weeks'\n  shift.match('#Cardinal #Duration').forEach((ts) => {\n    const num = ts.match('#Cardinal').numbers().get()[0]\n    if (num && typeof num === 'number') {\n      const unit = parseUnit(ts)\n      if (knownUnits[unit] === true) {\n        result[unit] = num\n      }\n    }\n  })\n  //is it 2 weeks ago?  → -2\n  if (shift.has('(before|ago|hence|back)$') === true) {\n    Object.keys(result).forEach((k) => (result[k] *= -1))\n  }\n  m = shift.match('#Cardinal #Duration')\n  shift = shift.not(m)\n\n  // supoprt '1 day after tomorrow'\n  m = shift.match('[<unit>#Duration] [<dir>(after|before)]')\n  if (m.found) {\n    const unit = m.groups('unit').text('reduced')\n    // unit = unit.replace(/s$/, '')\n    const dir = m.groups('dir').text('reduced')\n    if (dir === 'after') {\n      result[unit] = 1\n    } else if (dir === 'before') {\n      result[unit] = -1\n    }\n  }\n\n  // in half an hour\n  m = shift.match('half (a|an) [#Duration]', 0)\n  if (m.found) {\n    const unit = parseUnit(m)\n    result[unit] = 0.5\n  }\n\n  // a couple years\n  m = shift.match('a (few|couple) [#Duration]', 0)\n  if (m.found) {\n    const unit = parseUnit(m)\n    result[unit] = m.has('few') ? 3 : 2\n  }\n\n  // finally, remove it from our text\n  m = doc.match('#DateShift+')\n  return { result, m }\n}\nexport default parseShift\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/01-tokenize/02-counter.js",
    "content": "/*\na 'counter' is a Unit determined after a point\n  * first hour of x\n  * 7th week in x\n  * last year in x\n  * \nunlike a shift, like \"2 weeks after x\"\n*/\nconst oneBased = {\n  minute: true,\n}\n\nconst getCounter = function (doc) {\n  // 7th week of\n  let m = doc.match('[<num>#Value] [<unit>#Duration+] (of|in)')\n  if (m.found) {\n    const obj = m.groups()\n    const num = obj.num.numbers().get()[0]\n    const unit = obj.unit.text('reduced')\n    const result = {\n      unit: unit,\n      num: Number(num) || 0,\n    }\n    // 0-based or 1-based units\n    if (!oneBased[unit]) {\n      result.num -= 1\n    }\n    return { result, m }\n  }\n  // first week of\n  m = doc.match('[<dir>(first|initial|last|final)] [<unit>#Duration+] (of|in)')\n  if (m.found) {\n    const obj = m.groups()\n    let dir = obj.dir.text('reduced')\n    const unit = obj.unit.text('reduced')\n    if (dir === 'initial') {\n      dir = 'first'\n    }\n    if (dir === 'final') {\n      dir = 'last'\n    }\n    const result = {\n      unit: unit,\n      dir: dir,\n    }\n    return { result, m }\n  }\n\n  return { result: null, m: doc.none() }\n}\nexport default getCounter\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/01-tokenize/03-time.js",
    "content": "import spacetime from 'spacetime'\n\n// these should be added to model\nconst hardCoded = {\n  daybreak: '7:00am', //ergh\n  breakfast: '8:00am',\n  morning: '9:00am',\n  noon: '12:00pm',\n  midday: '12:00pm',\n  afternoon: '2:00pm',\n  lunchtime: '12:00pm',\n  evening: '6:00pm',\n  dinnertime: '6:00pm',\n  night: '8:00pm',\n  eod: '10:00pm',\n  midnight: '12:00am',\n  am: '9:00am', //tomorow am\n  pm: '5:00pm',\n  'early day': '8:00am',\n  'late at night': '11:00pm'\n}\nconst minMap = {\n  quarter: 15,\n  half: 30,\n}\n\n// choose ambiguous ampm\nconst ampmChooser = function (s) {\n  const early = s.time('6:00am')\n  if (s.isBefore(early)) {\n    return s.ampm('pm')\n  }\n  return s\n}\n\n// parse 'twenty past 2'\nconst halfPast = function (m, s) {\n  let hour = m.match('#Cardinal$')\n  const punt = m.not(hour).match('(half|quarter|25|20|15|10|5)')\n  // get the mins, and the hour\n  hour = hour.text('reduced')\n  let mins = punt.text('reduced')\n  // support 'quarter'\n  if (minMap.hasOwnProperty(mins)) {\n    mins = minMap[mins]\n  }\n  const behind = m.has('to')\n  // apply it\n  s = s.hour(hour)\n  s = s.startOf('hour')\n  // assume 'half past 5' is 5pm\n  if (hour < 6) {\n    s = s.ampm('pm')\n  }\n  if (behind) {\n    s = s.subtract(mins, 'minutes')\n  } else {\n    s = s.add(mins, 'minutes')\n  }\n  return s\n}\n\nconst parseTime = function (doc, context) {\n  let time = doc.match('(at|by|for|before|this|after)? #Time+')\n  // get the main part of the time\n  time = time.not('^(at|by|for|before|this|after)')\n  time = time.not('sharp')\n  time = time.not('on the dot')\n\n  let s = spacetime.now(context.timezone)\n  const now = s.clone()\n  // check for known-times (like 'today')\n  let timeStr = time.not('in? the').text('reduced')\n  timeStr = timeStr.replace(/^@/, '')//@4pm\n  if (hardCoded.hasOwnProperty(timeStr)) {\n    return { result: hardCoded[timeStr], m: time }\n  }\n  // '5 oclock'\n  let m = time.match('^#Cardinal oclock (am|pm)?')\n  if (m.found) {\n    s = s.hour(m.text('reduced'))\n    s = s.startOf('hour')\n    if (s.isValid() && !s.isEqual(now)) {\n      const ampm = m.match('(am|pm)')\n      if (ampm.found) {\n        s = s.ampm(ampm.text('reduced'))\n      } else {\n        s = ampmChooser(s)\n      }\n      return { result: s.time(), m }\n    }\n  }\n\n  // 'quarter to two'\n  m = time.match('(half|quarter|25|20|15|10|5) (past|after|to) #Cardinal')\n  if (m.found) {\n    s = halfPast(m, s)\n    if (s.isValid() && !s.isEqual(now)) {\n      // choose ambiguous ampm\n      s = ampmChooser(s)\n      return { result: s.time(), m }\n    }\n  }\n  // 'twenty past'\n  m = time.match('[<min>(half|quarter|25|20|15|10|5)] (past|after)')\n  if (m.found) {\n    let min = m.groups('min').text('reduced')\n    let d = spacetime(context.today)\n    // support 'quarter', etc.\n    if (minMap.hasOwnProperty(min)) {\n      min = minMap[min]\n    }\n    d = d.next('hour').startOf('hour').minute(min)\n    if (d.isValid() && !d.isEqual(now)) {\n      return { result: d.time(), m }\n    }\n  }\n  // 'ten to'\n  m = time.match('[<min>(half|quarter|25|20|15|10|5)] to')\n  if (m.found) {\n    let min = m.groups('min').text('reduced')\n    let d = spacetime(context.today)\n    // support 'quarter', etc.\n    if (minMap.hasOwnProperty(min)) {\n      min = minMap[min]\n    }\n    d = d.next('hour').startOf('hour').minus(min, 'minutes')\n    if (d.isValid() && !d.isEqual(now)) {\n      return { result: d.time(), m }\n    }\n  }\n  // '4 in the evening'\n  m = time.match('[<time>#Time] (in|at) the? [<desc>(morning|evening|night|nighttime)]')\n  if (m.found) {\n    const str = m.groups('time').text('normal')\n    if (/^[0-9]{1,2}$/.test(str)) {\n      s = s.hour(str) //3 in the morning\n      s = s.startOf('hour')\n    } else {\n      s = s.time(str) // 3:30 in the morning\n    }\n    if (s.isValid() && !s.isEqual(now)) {\n      const desc = m.groups('desc').text('reduced')\n      if (desc === 'evening' || desc === 'night') {\n        s = s.ampm('pm')\n      }\n      return { result: s.time(), m }\n    }\n  }\n\n  // 'this morning at 4'\n  m = time.match('this? [<desc>(morning|evening|tonight)] at [<time>(#Cardinal|#Time)]')\n  if (m.found) {\n    const g = m.groups()\n    const str = g.time.text('reduced')\n    if (/^[0-9]{1,2}$/.test(str)) {\n      s = s.hour(str) //3\n      s = s.startOf('hour')\n    } else {\n      s = s.time(str) // 3:30\n    }\n    if (s.isValid() && !s.isEqual(now)) {\n      const desc = g.desc.text('reduced')\n      if (desc === 'morning') {\n        s = s.ampm('am')\n      }\n      if (desc === 'evening' || desc === 'tonight') {\n        s = s.ampm('pm')\n      }\n      return { result: s.time(), m }\n    }\n  }\n\n  // 'at 4' -> '4'\n  m = time.match('^#Cardinal$')\n  if (m.found) {\n    const str = m.text('reduced')\n    s = s.hour(str)\n    s = s.startOf('hour')\n    if (s.isValid() && !s.isEqual(now)) {\n      // choose ambiguous ampm\n      if (/(am|pm)/i.test(str) === false) {\n        s = ampmChooser(s)\n      }\n      return { result: s.time(), m }\n    }\n  }\n\n  // parse random a time like '4:54pm'\n  const str = time.text('reduced')\n  s = s.time(str)\n  if (s.isValid() && !s.isEqual(now)) {\n    // choose ambiguous ampm\n    if (/(am|pm)/i.test(str) === false) {\n      s = ampmChooser(s)\n    }\n    return { result: s.time(), m: time }\n  }\n  // should we fallback to a dayStart default?\n  if (context.dayStart) {\n    return { result: context.dayStart, m: doc.none() }\n  }\n  return { result: null, m: doc.none() }\n}\nexport default parseTime\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/01-tokenize/04-relative.js",
    "content": "// interpret 'this halloween' or 'next june'\nconst parseRelative = function (doc) {\n  // avoid parsing 'day after next'\n  if (doc.has('(next|last|this)$')) {\n    return { result: null, m: doc.none() }\n  }\n  // next monday\n  let m = doc.match('^this? (next|upcoming|coming)')\n  if (m.found) {\n    return { result: 'next', m }\n  }\n  // 'this past monday' is not-always 'last monday'\n  m = doc.match('^this? (past)')\n  if (m.found) {\n    return { result: 'this-past', m }\n  }\n  // last monday\n  m = doc.match('^this? (last|previous)')\n  if (m.found) {\n    return { result: 'last', m }\n  }\n  // this monday\n  m = doc.match('^(this|current)')\n  if (m.found) {\n    return { result: 'this', m }\n  }\n  return { result: null, m: doc.none() }\n}\nexport default parseRelative\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/01-tokenize/05-section.js",
    "content": "// 'start of october', 'middle of june 1st'\nconst parseSection = function (doc) {\n  // start of 2019\n  let m = doc.match('[(start|beginning) of] .', 0)\n  if (m.found) {\n    return { result: 'start', m }\n  }\n  // end of 2019\n  m = doc.match('[end of] .', 0)\n  if (m.found) {\n    return { result: 'end', m }\n  }\n  // middle of 2019\n  m = doc.match('[(middle|midpoint|center) of] .', 0)\n  if (m.found) {\n    return { result: 'middle', m }\n  }\n  return { result: null, m }\n}\nexport default parseSection\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/01-tokenize/06-timezone.js",
    "content": "import informal from './_timezones.js'\n\nconst isOffset = /(-?[0-9]+)h(rs)?/i\nconst isNumber = /(-?[0-9]+)/\nconst utcOffset = /utc([-+]?[0-9]+)/i\nconst gmtOffset = /gmt([-+]?[0-9]+)/i\n\nconst toIana = function (num) {\n  num = Number(num)\n  if (num > -13 && num < 13) {\n    num = num * -1 //it's opposite!\n    num = (num > 0 ? '+' : '') + num //add plus sign\n    return 'Etc/GMT' + num\n  }\n  return null\n}\n\nconst parseOffset = function (tz) {\n  // '+5hrs'\n  let m = tz.match(isOffset)\n  if (m !== null) {\n    return toIana(m[1])\n  }\n  // 'utc+5'\n  m = tz.match(utcOffset)\n  if (m !== null) {\n    return toIana(m[1])\n  }\n  // 'GMT-5' (not opposite)\n  m = tz.match(gmtOffset)\n  if (m !== null) {\n    const num = Number(m[1]) * -1\n    return toIana(num)\n  }\n  // '+5'\n  m = tz.match(isNumber)\n  if (m !== null) {\n    return toIana(m[1])\n  }\n  return null\n}\n\nconst parseTimezone = function (doc) {\n  let m = doc.match('#Timezone+')\n  //remove prepositions\n  m = m.not('(in|for|by|near|at)')\n  const str = m.text('reduced')\n\n  // check our list of informal tz names\n  if (informal.hasOwnProperty(str)) {\n    return { result: informal[str], m }\n  }\n  const tz = parseOffset(str)\n  if (tz) {\n    return { result: tz, m }\n  }\n\n  return { result: null, m: doc.none() }\n}\nexport default parseTimezone\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/01-tokenize/07-weekday.js",
    "content": "// pull-out 'thurs' from 'thurs next week'\nconst parseWeekday = function (doc) {\n  const day = doc.match('#WeekDay')\n  if (day.found && !doc.has('^#WeekDay$')) {\n    // handle relative-day logic elsewhere.\n    if (doc.has('(this|next|last) (next|upcoming|coming|past)? #WeekDay')) {\n      return { result: null, m: doc.none() }\n    }\n    return { result: day.text('reduced'), m: day }\n  }\n  return { result: null, m: doc.none() }\n}\nexport default parseWeekday\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/01-tokenize/_timezones.js",
    "content": "// some opinionated-but-common-sense timezone abbreviations\n// these timezone abbreviations are wholly made-up by me, Spencer Kelly, with no expertise in geography\n// generated humbly from https://github.com/spencermountain/spacetime-informal\nimport spacetime from 'spacetime'\n\nconst america = 'America/'\nconst asia = 'Asia/'\nconst europe = 'Europe/'\nconst africa = 'Africa/'\nconst aus = 'Australia/'\nconst pac = 'Pacific/'\n\nconst informal = {\n  //europe\n  'british summer time': europe + 'London',\n  bst: europe + 'London',\n  'british time': europe + 'London',\n  'britain time': europe + 'London',\n  'irish summer time': europe + 'Dublin',\n  'irish time': europe + 'Dublin',\n  ireland: europe + 'Dublin',\n  'central european time': europe + 'Berlin',\n  cet: europe + 'Berlin',\n  'central european summer time': europe + 'Berlin',\n  cest: europe + 'Berlin',\n  'central europe': europe + 'Berlin',\n  'eastern european time': europe + 'Riga',\n  eet: europe + 'Riga',\n  'eastern european summer time': europe + 'Riga',\n  eest: europe + 'Riga',\n  'eastern europe time': europe + 'Riga',\n  'western european time': europe + 'Lisbon',\n  // wet: europe+'Lisbon',\n  'western european summer time': europe + 'Lisbon',\n  // west: europe+'Lisbon',\n  'western europe': europe + 'Lisbon',\n  'turkey standard time': europe + 'Istanbul',\n  trt: europe + 'Istanbul',\n  'turkish time': europe + 'Istanbul',\n\n  //africa\n  etc: africa + 'Freetown',\n  utc: africa + 'Freetown',\n  'greenwich standard time': africa + 'Freetown',\n  gmt: africa + 'Freetown',\n  'east africa time': africa + 'Nairobi',\n  // eat: africa+'Nairobi',\n  'east african time': africa + 'Nairobi',\n  'eastern africa time': africa + 'Nairobi',\n  'central africa time': africa + 'Khartoum',\n  // cat: africa+'Khartoum',\n  'central african time': africa + 'Khartoum',\n  'south africa standard time': africa + 'Johannesburg',\n  sast: africa + 'Johannesburg',\n  'southern africa': africa + 'Johannesburg',\n  'south african': africa + 'Johannesburg',\n  'west africa standard time': africa + 'Lagos',\n  // wat: africa+'Lagos',\n  'western africa time': africa + 'Lagos',\n  'west african time': africa + 'Lagos',\n\n  'australian central standard time': aus + 'Adelaide',\n  acst: aus + 'Adelaide',\n  'australian central daylight time': aus + 'Adelaide',\n  acdt: aus + 'Adelaide',\n  'australia central': aus + 'Adelaide',\n  'australian eastern standard time': aus + 'Brisbane',\n  aest: aus + 'Brisbane',\n  'australian eastern daylight time': aus + 'Brisbane',\n  aedt: aus + 'Brisbane',\n  'australia east': aus + 'Brisbane',\n  'australian western standard time': aus + 'Perth',\n  awst: aus + 'Perth',\n  'australian western daylight time': aus + 'Perth',\n  awdt: aus + 'Perth',\n  'australia west': aus + 'Perth',\n  'australian central western standard time': aus + 'Eucla',\n  acwst: aus + 'Eucla',\n  'australia central west': aus + 'Eucla',\n  'lord howe standard time': aus + 'Lord_Howe',\n  lhst: aus + 'Lord_Howe',\n  'lord howe daylight time': aus + 'Lord_Howe',\n  lhdt: aus + 'Lord_Howe',\n  'russian standard time': europe + 'Moscow',\n  msk: europe + 'Moscow',\n  russian: europe + 'Moscow',\n\n  //america\n  'central standard time': america + 'Chicago',\n  'central time': america + 'Chicago',\n  cst: america + 'Havana',\n  'central daylight time': america + 'Chicago',\n  cdt: america + 'Havana',\n  'mountain standard time': america + 'Denver',\n  'mountain time': america + 'Denver',\n  mst: america + 'Denver',\n  'mountain daylight time': america + 'Denver',\n  mdt: america + 'Denver',\n  'atlantic standard time': america + 'Halifax',\n  'atlantic time': america + 'Halifax',\n  ast: asia + 'Baghdad',\n  'atlantic daylight time': america + 'Halifax',\n  adt: america + 'Halifax',\n  'eastern standard time': america + 'New_York',\n  'eastern': america + 'New_York',\n  'eastern time': america + 'New_York',\n  est: america + 'New_York',\n  'eastern daylight time': america + 'New_York',\n  edt: america + 'New_York',\n  'pacific time': america + 'Los_Angeles',\n  'pacific standard time': america + 'Los_Angeles',\n  pst: america + 'Los_Angeles',\n  'pacific daylight time': america + 'Los_Angeles',\n  pdt: america + 'Los_Angeles',\n  'alaskan standard time': america + 'Anchorage',\n  'alaskan time': america + 'Anchorage',\n  ahst: america + 'Anchorage',\n  'alaskan daylight time': america + 'Anchorage',\n  ahdt: america + 'Anchorage',\n  'hawaiian standard time': pac + 'Honolulu',\n  'hawaiian time': pac + 'Honolulu',\n  hst: pac + 'Honolulu',\n  'aleutian time': pac + 'Honolulu',\n  'hawaii time': pac + 'Honolulu',\n  'newfoundland standard time': america + 'St_Johns',\n  'newfoundland time': america + 'St_Johns',\n  nst: america + 'St_Johns',\n  'newfoundland daylight time': america + 'St_Johns',\n  ndt: america + 'St_Johns',\n  'brazil time': america + 'Sao_Paulo',\n  brt: america + 'Sao_Paulo',\n  'brasília': america + 'Sao_Paulo',\n  brasilia: america + 'Sao_Paulo',\n  'brazilian time': america + 'Sao_Paulo',\n  'argentina time': america + 'Buenos_Aires',\n  // art: a+'Buenos_Aires',\n  'argentinian time': america + 'Buenos_Aires',\n  'amazon time': america + 'Manaus',\n  amt: america + 'Manaus',\n  'amazonian time': america + 'Manaus',\n  'easter island standard time': 'Chile/Easterisland',\n  east: 'Chile/Easterisland',\n  'easter island summer time': 'Chile/Easterisland',\n  easst: 'Chile/Easterisland',\n  'venezuelan standard time': america + 'Caracas',\n  'venezuelan time': america + 'Caracas',\n  vet: america + 'Caracas',\n  'venezuela time': america + 'Caracas',\n  'paraguay time': america + 'Asuncion',\n  pyt: america + 'Asuncion',\n  'paraguay summer time': america + 'Asuncion',\n  pyst: america + 'Asuncion',\n  'cuba standard time': america + 'Havana',\n  'cuba time': america + 'Havana',\n  'cuba daylight time': america + 'Havana',\n  'cuban time': america + 'Havana',\n  'bolivia time': america + 'La_Paz',\n  // bot: a+'La_Paz',\n  'bolivian time': america + 'La_Paz',\n  'colombia time': america + 'Bogota',\n  cot: america + 'Bogota',\n  'colombian time': america + 'Bogota',\n  'acre time': america + 'Eirunepe',\n  // act: a+'Eirunepe',\n  'peru time': america + 'Lima',\n  // pet: a+'Lima',\n  'chile standard time': america + 'Punta_Arenas',\n  'chile time': america + 'Punta_Arenas',\n  clst: america + 'Punta_Arenas',\n  'chile summer time': america + 'Punta_Arenas',\n  cldt: america + 'Punta_Arenas',\n  'uruguay time': america + 'Montevideo',\n  uyt: america + 'Montevideo',\n\n  //asia\n  ist: asia + 'Jerusalem',\n  'arabic standard time': asia + 'Baghdad',\n  'arabic time': asia + 'Baghdad',\n  'arab time': asia + 'Baghdad',\n  'iran standard time': asia + 'Tehran',\n  'iran time': asia + 'Tehran',\n  irst: asia + 'Tehran',\n  'iran daylight time': asia + 'Tehran',\n  irdt: asia + 'Tehran',\n  iranian: asia + 'Tehran',\n  'pakistan standard time': asia + 'Karachi',\n  'pakistan time': asia + 'Karachi',\n  pkt: asia + 'Karachi',\n  'india standard time': asia + 'Kolkata',\n  'indian time': asia + 'Kolkata',\n  'indochina time': asia + 'Bangkok',\n  ict: asia + 'Bangkok',\n  'south east asia': asia + 'Bangkok',\n  'china standard time': asia + 'Shanghai',\n  ct: asia + 'Shanghai',\n  'chinese time': asia + 'Shanghai',\n  'alma-ata time': asia + 'Almaty',\n  almt: asia + 'Almaty',\n  'oral time': asia + 'Oral',\n  'orat time': asia + 'Oral',\n  'yakutsk time': asia + 'Yakutsk',\n  yakt: asia + 'Yakutsk',\n  'gulf standard time': asia + 'Dubai',\n  'gulf time': asia + 'Dubai',\n  gst: asia + 'Dubai',\n  uae: asia + 'Dubai',\n  'hong kong time': asia + 'Hong_Kong',\n  hkt: asia + 'Hong_Kong',\n  'western indonesian time': asia + 'Jakarta',\n  wib: asia + 'Jakarta',\n  'indonesia time': asia + 'Jakarta',\n  'central indonesian time': asia + 'Makassar',\n  wita: asia + 'Makassar',\n  'israel daylight time': asia + 'Jerusalem',\n  idt: asia + 'Jerusalem',\n  'israel standard time': asia + 'Jerusalem',\n  'israel time': asia + 'Jerusalem',\n  israeli: asia + 'Jerusalem',\n  'krasnoyarsk time': asia + 'Krasnoyarsk',\n  krat: asia + 'Krasnoyarsk',\n  'malaysia time': asia + 'Kuala_Lumpur',\n  myt: asia + 'Kuala_Lumpur',\n  'singapore time': asia + 'Singapore',\n  sgt: asia + 'Singapore',\n  'korea standard time': asia + 'Seoul',\n  'korea time': asia + 'Seoul',\n  kst: asia + 'Seoul',\n  'korean time': asia + 'Seoul',\n  'uzbekistan time': asia + 'Samarkand',\n  uzt: asia + 'Samarkand',\n  'vladivostok time': asia + 'Vladivostok',\n  vlat: asia + 'Vladivostok',\n\n  //indian\n  'maldives time': 'Indian/Maldives',\n  mvt: 'Indian/Maldives',\n  'mauritius time': 'Indian/Mauritius',\n  mut: 'Indian/Mauritius',\n\n  // pacific\n  'marshall islands time': pac + 'Kwajalein',\n  mht: pac + 'Kwajalein',\n  'samoa standard time': pac + 'Midway',\n  sst: pac + 'Midway',\n  'somoan time': pac + 'Midway',\n  'chamorro standard time': pac + 'Guam',\n  chst: pac + 'Guam',\n  'papua new guinea time': pac + 'Bougainville',\n  pgt: pac + 'Bougainville',\n}\n\n//add the official iana zonefile names\nconst iana = spacetime().timezones\nconst formal = Object.keys(iana).reduce((h, k) => {\n  h[k] = k\n  return h\n}, {})\nexport default Object.assign({}, informal, formal)\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/01-tokenize/index.js",
    "content": "import doShift from './01-shift.js'\nimport doCounter from './02-counter.js'\nimport doTime from './03-time.js'\nimport doRelative from './04-relative.js'\nimport doSection from './05-section.js'\nimport doTimezone from './06-timezone.js'\nimport doWeekday from './07-weekday.js'\n\n\nconst cleanup = function (doc) {\n  // 'the fifth week ..'\n  doc = doc.not('[^the] !#Value', 0) // keep 'the 17th'\n  // \n  doc = doc.not('#Preposition$')\n  doc = doc.not('#Conjunction$')\n  doc = doc.not('sharp')\n  doc = doc.not('on the dot')\n  doc = doc.not('^(on|of)')\n  doc = doc.not('(next|last|this)$')\n  return doc\n}\n\n\nconst tokenize = function (doc, context) {\n  // parse 'two weeks after'\n  let res = doShift(doc)\n  const shift = res.result\n  doc = doc.not(res.m)\n\n  // parse 'nth week of june'\n  res = doCounter(doc)\n  const counter = res.result\n  doc = doc.not(res.m)\n\n  // parse 'eastern time'\n  res = doTimezone(doc)\n  const tz = res.result\n  doc = doc.not(res.m)\n\n  // parse '2pm'\n  res = doTime(doc, context)\n  const time = res.result\n  doc = doc.not(res.m)\n\n  // parse 'tuesday'\n  res = doWeekday(doc, context)\n  const weekDay = res.result\n  doc = doc.not(res.m)\n\n  // parse 'start of x'\n  res = doSection(doc, context)\n  const section = res.result\n  doc = doc.not(res.m)\n\n  // parse 'next x'\n  res = doRelative(doc)\n  const rel = res.result\n  doc = doc.not(res.m)\n\n  // cleanup remaining doc object\n  doc = cleanup(doc)\n  return {\n    shift,\n    counter,\n    tz,\n    time,\n    weekDay,\n    section,\n    rel,\n    doc\n  }\n}\nexport default tokenize"
  },
  {
    "path": "plugins/dates/src/api/parse/one/02-parse/01-today.js",
    "content": "import { Day, Moment } from '../units/index.js'\n\nconst knownWord = {\n  today: (context) => {\n    return new Day(context.today, null, context)\n  },\n  yesterday: (context) => {\n    return new Day(context.today.minus(1, 'day'), null, context)\n  },\n  tomorrow: (context) => {\n    return new Day(context.today.plus(1, 'day'), null, context)\n  },\n  eom: (context) => {\n    let d = context.today.endOf('month')\n    d = d.startOf('day')\n    return new Day(d, null, context)\n  },\n  // eod: (context) => {\n  //   let d = context.today.endOf('day')\n  //   d = d.startOf('hour').minus(4, 'hours') //rough\n  //   return new Hour(d, null, context)\n  // },\n  eoy: (context) => {\n    let d = context.today.endOf('year')\n    d = d.startOf('day')\n    return new Day(d, null, context)\n  },\n  now: (context) => {\n    return new Moment(context.today, null, context) // should we set the current hour?\n  },\n}\nknownWord.tommorrow = knownWord.tomorrow\nknownWord.tmrw = knownWord.tomorrow\nknownWord.anytime = knownWord.today\nknownWord.sometime = knownWord.today\n\nconst today = function (doc, context, parts) {\n  let unit = null\n  // is it empty?\n  if (doc.found === false) {\n    // do we have just a time?\n    if (parts.time !== null) {\n      unit = new Moment(context.today, null, context) // choose today\n    }\n    //do we just have a shift?\n    if (parts.shift && Object.keys(parts.shift).length > 0) {\n      if (parts.shift.hour || parts.shift.minute) {\n        unit = new Moment(context.today, null, context) // choose now\n      } else {\n        unit = new Day(context.today, null, context) // choose today\n      }\n    }\n  }\n  // today, yesterday, tomorrow\n  const str = doc.text('reduced')\n  if (knownWord.hasOwnProperty(str) === true) {\n    return knownWord[str](context)\n  }\n  // day after next\n  if (str === 'next' && parts.shift && Object.keys(parts.shift).length > 0) {\n    return knownWord.tomorrow(context)\n  }\n  return unit\n}\nexport default today\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/02-parse/02-holidays.js",
    "content": "import { Holiday } from '../units/index.js'\nimport spacetimeHoliday from 'spacetime-holiday'\n\nconst parseHoliday = function (doc, context) {\n  let unit = null\n  const m = doc.match('[<holiday>#Holiday+] [<year>#Year?]')\n  let year = context.today.year()\n  if (m.groups('year').found) {\n    year = Number(m.groups('year').text('reduced')) || year\n  }\n  const str = m.groups('holiday').text('reduced')\n  let s = spacetimeHoliday(str, year, context.timezone)\n  if (s !== null) {\n    // assume the year in the future..\n    if (s.isBefore(context.today) && year === context.today.year()) {\n      s = spacetimeHoliday(str, year + 1, context.timezone)\n    }\n    unit = new Holiday(s, null, context)\n  }\n  return unit\n}\nexport default parseHoliday\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/02-parse/03-next-last.js",
    "content": "import { Week, WeekEnd, AnyMonth, AnyQuarter, Year, Season, WeekDay, Day, Hour, Minute, Moment } from '../units/index.js'\nconst mapping = {\n  day: Day,\n  hour: Hour,\n  evening: Hour,\n  second: Moment,\n  milliscond: Moment,\n  instant: Moment,\n  minute: Minute,\n  week: Week,\n  weekend: WeekEnd,\n  month: AnyMonth,\n  quarter: AnyQuarter,\n  year: Year,\n  season: Season,\n  // set aliases\n  yr: Year,\n  qtr: AnyQuarter,\n  wk: Week,\n  sec: Moment,\n  hr: Hour,\n}\n\nconst matchStr = `^(${Object.keys(mapping).join('|')})$`\n\n// when a unit of time is spoken of as 'this month' - instead of 'february'\nconst nextLast = function (doc, context) {\n  //this month, last quarter, next year\n  let m = doc.match(matchStr)\n  if (m.found === true) {\n    const str = m.text('reduced')\n    if (mapping.hasOwnProperty(str)) {\n      const Model = mapping[str]\n      if (!Model) {\n        return null\n      }\n      const unit = new Model(null, str, context)\n      return unit\n    }\n  }\n  //'next friday, last thursday'\n  m = doc.match('^#WeekDay$')\n  if (m.found === true) {\n    const str = m.text('reduced')\n    const unit = new WeekDay(str, null, context)\n    return unit\n  }\n\n  // tuesday next week\n  // m = doc.match('^#WeekDay (this|next)')\n  // if (m.found === true) {\n  //   let str = m.text('reduced')\n  //   let unit = new WeekDay(str, null, context)\n  //   return unit\n  // }\n  return null\n}\nexport default nextLast\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/02-parse/04-yearly.js",
    "content": "import { Quarter, Season, Year } from '../units/index.js'\nimport spacetime from 'spacetime'\n\nconst fmtToday = function (context) {\n  return {\n    date: context.today.date(),\n    month: context.today.month(),\n    year: context.today.year(),\n  }\n}\n\nconst parseYearly = function (doc, context) {\n  // support 'summer 2002'\n  let m = doc.match('(spring|summer|winter|fall|autumn) [<year>#Year?]')\n  if (m.found) {\n    const str = doc.text('reduced')\n    const s = spacetime(str, context.timezone, { today: fmtToday(context) })\n    const unit = new Season(s, null, context)\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n\n  // support 'q4 2020'\n  m = doc.match('[<q>#FinancialQuarter] [<year>#Year?]')\n  if (m.found) {\n    const str = m.groups('q').text('reduced')\n    let s = spacetime(str, context.timezone, { today: fmtToday(context) })\n    if (m.groups('year')) {\n      const year = Number(m.groups('year').text()) || context.today.year()\n      s = s.year(year)\n    }\n    const unit = new Quarter(s, null, context)\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n  // support '4th quarter 2020'\n  m = doc.match('[<q>#Value] quarter (of|in)? [<year>#Year?]')\n  if (m.found) {\n    const q = m.groups('q').text('reduced')\n    let s = spacetime(`q${q}`, context.timezone, { today: fmtToday(context) })\n    if (m.groups('year')) {\n      const year = Number(m.groups('year').text()) || context.today.year()\n      s = s.year(year)\n    }\n    const unit = new Quarter(s, null, context)\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n  // support '2020'\n  m = doc.match('^#Year$')\n  if (m.found) {\n    const str = doc.text('reduced')\n    let s = spacetime(null, context.timezone, { today: fmtToday(context) })\n    s = s.year(str)\n    const unit = new Year(s, null, context)\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n\n  return null\n}\nexport default parseYearly\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/02-parse/05-explicit.js",
    "content": "import { Day, CalendarDate, Month, Moment } from '../units/index.js'\n\n// parse things like 'june 5th 2019'\n// most of this is done in spacetime\nconst parseExplicit = function (doc, context) {\n  const impliedYear = context.today.year()\n  // 'fifth of june 1992'\n  // 'june the fifth 1992'\n  let m = doc.match('[<date>#Value] of? [<month>#Month] [<year>#Year]')\n  if (!m.found) {\n    m = doc.match('[<month>#Month] the? [<date>#Value] [<year>#Year]')\n  }\n  if (m.found) {\n    const obj = {\n      month: m.groups('month').text('reduced'),\n      date: m.groups('date').text('reduced'),\n      year: m.groups('year').text() || impliedYear,\n    }\n    const unit = new CalendarDate(obj, null, context)\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n\n  // 'march 1992'\n  m = doc.match('[<month>#Month] of? [<year>#Year]')\n  if (m.found) {\n    const obj = {\n      month: m.groups('month').text('reduced'),\n      year: m.groups('year').text('reduced') || impliedYear,\n    }\n    const unit = new Month(obj, null, context)\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n\n  // 'march 5th next year'\n  m = doc.match('[<month>#Month] [<date>#Value+]? of? the? [<rel>(this|next|last|current)] year')\n  if (m.found) {\n    const rel = m.groups('rel').text('reduced')\n    let year = impliedYear\n    if (rel === 'next') {\n      year += 1\n    } else if (rel === 'last') {\n      year -= 1\n    }\n    const obj = {\n      month: m.groups('month').text('reduced'),\n      date: m.groups('date').numbers(0).get()[0],\n      year,\n    }\n    if (obj.date === undefined) {\n      obj.date = 1\n      const unit = new Month(obj, null, context)\n      if (unit.d.isValid() === true) {\n        return unit\n      }\n    }\n    const unit = new CalendarDate(obj, null, context)\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n\n  // '5th of next month'\n  m = doc.match('^the? [<date>#Value+]? of? [<rel>(this|next|last|current)] month')\n  if (m.found) {\n    let month = context.today.month()\n    const rel = m.groups('rel').text('reduced')\n    if (rel === 'next') {\n      month += 1\n    } else if (rel === 'last') {\n      month -= 1\n    }\n    const obj = {\n      month,\n      date: m.groups('date').numbers(0).get()[0],\n    }\n    const unit = new CalendarDate(obj, null, context)\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n\n  //no-years\n  // 'fifth of june'\n  m = doc.match('[<date>#Value] of? [<month>#Month]')\n  // 'june the fifth'\n  if (!m.found) {\n    m = doc.match('[<month>#Month] the? [<date>#Value]')\n  }\n  if (m.found) {\n    const obj = {\n      month: m.groups('month').text('reduced'),\n      date: m.groups('date').text('reduced'),\n      year: context.today.year(),\n    }\n    let unit = new CalendarDate(obj, null, context)\n    // assume 'feb' in the future\n    if (unit.d.month() < context.today.month()) {\n      obj.year += 1\n      unit = new CalendarDate(obj, null, context)\n    }\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n\n  // support 'december'\n  if (doc.has('#Month')) {\n    const obj = {\n      month: doc.match('#Month').text('reduced'),\n      date: 1, //assume 1st\n      year: context.today.year(),\n    }\n    let unit = new Month(obj, null, context)\n    // assume 'february' is always in the future\n    if (unit.d.month() < context.today.month()) {\n      obj.year += 1\n      unit = new Month(obj, null, context)\n    }\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n\n  // support 'thursday 21st'\n  m = doc.match('#WeekDay [<date>#Value]')\n  if (m.found) {\n    const obj = {\n      month: context.today.month(),\n      date: m.groups('date').text('reduced'),\n      year: context.today.year(),\n    }\n    const unit = new CalendarDate(obj, null, context)\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n  // support date-only 'the 21st'\n  m = doc.match('the [<date>#Value]')\n  if (m.found) {\n    const obj = {\n      month: context.today.month(),\n      date: m.groups('date').text('reduced'),\n      year: context.today.year(),\n    }\n    const unit = new CalendarDate(obj, null, context)\n    if (unit.d.isValid() === true) {\n      // assume it's forward\n      if (unit.d.isBefore(context.today)) {\n        unit.d = unit.d.add(1, 'month')\n      }\n      return unit\n    }\n  }\n  // parse ISO as a Moment\n  m = doc.match('/[0-9]{4}-[0-9]{2}-[0-9]{2}t[0-9]{2}:/')\n  if (m.found) {\n    const str = doc.text('reduced')\n    const unit = new Moment(str, null, context)\n    if (unit.d.isValid() === true) {\n      return unit\n    }\n  }\n  const str = doc.text('reduced')\n  if (!str) {\n    return new Moment(context.today, null, context)\n  }\n  // punt it to spacetime, for the heavy-lifting\n  const unit = new Day(str, null, context)\n  // console.log(str, unit, context.today.year())\n  // did we find a date?\n  if (unit.d.isValid() === false) {\n    return null\n  }\n  return unit\n}\nexport default parseExplicit\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/02-parse/index.js",
    "content": "import today from './01-today.js'\nimport holiday from './02-holidays.js'\nimport nextLast from './03-next-last.js'\nimport yearly from './04-yearly.js'\nimport explicit from './05-explicit.js'\n\nconst parse = function (doc, context, parts) {\n  let unit = null\n  //'in two days'\n  unit = unit || today(doc, context, parts)\n  // 'this haloween'\n  unit = unit || holiday(doc, context)\n  // 'this month'\n  unit = unit || nextLast(doc, context)\n  // 'q2 2002'\n  unit = unit || yearly(doc, context)\n  // 'this june 2nd'\n  unit = unit || explicit(doc, context)\n\n  return unit\n}\nexport default parse"
  },
  {
    "path": "plugins/dates/src/api/parse/one/03-transform/addCounter.js",
    "content": "import { Quarter, Season, Week, Day, Hour, Minute, Month, WeekEnd } from '../units/index.js'\n\nconst units = {\n  day: Day,\n  week: Week,\n  weekend: WeekEnd,\n  month: Month,\n  quarter: Quarter,\n  season: Season,\n  hour: Hour,\n  minute: Minute,\n}\n\nconst applyCounter = function (unit, counter = {}) {\n  const Unit = units[counter.unit]\n  if (!Unit) {\n    return unit\n  }\n  let d = unit.d\n  // support 'first' or 0th\n  if (counter.dir === 'first' || counter.num === 0) {\n    d = unit.start().d\n    d = d.startOf(counter.unit)\n  } else if (counter.dir === 'last') {\n    d = d.endOf(unit.unit)\n    if (counter.unit === 'weekend') {\n      d = d.day('saturday', false)\n    } else {\n      d = d.startOf(counter.unit)\n    }\n  } else if (counter.num) {\n    if (counter.unit === 'weekend') {\n      d = d.day('saturday', true).add(1, 'day') //fix bug\n    }\n    // support 'nth week', eg.\n    d = d.add(counter.num, counter.unit)\n  }\n  const u = new Unit(d, null, unit.context)\n  if (u.d.isValid() === true) {\n    return u\n  }\n  return unit //fallback\n}\nexport default applyCounter\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/03-transform/index.js",
    "content": "import addCounter from './addCounter.js'\nimport { WeekDay, Moment, Day } from '../units/index.js'\n\n// apply all parsed {parts} to our unit date\nconst transform = function (unit, context, parts) {\n\n  if (!unit && parts.weekDay) {\n    unit = new WeekDay(parts.weekDay, null, context)\n    parts.weekDay = null\n  }\n\n  // just don't bother\n  if (!unit) {\n    return null\n  }\n  // 2 days after..\n  if (parts.shift) {\n    const shift = parts.shift\n    unit.applyShift(shift)\n    // allow shift to change our unit size\n    if (shift.hour || shift.minute) {\n      unit = new Moment(unit.d, null, unit.context)\n    } else if (shift.week || shift.day || shift.month) {\n      unit = new Day(unit.d, null, unit.context)\n    }\n  }\n  // wednesday next week\n  if (parts.weekDay && unit.unit !== 'day') {\n    unit.applyWeekDay(parts.weekDay)\n    unit = new WeekDay(unit.d, null, unit.context)\n  }\n  // this/next/last\n  if (parts.rel) {\n    unit.applyRel(parts.rel)\n  }\n  // end of\n  if (parts.section) {\n    unit.applySection(parts.section)\n  }\n  // at 5:40pm\n  if (parts.time) {\n    unit.applyTime(parts.time)\n    // unit = new Minute(unit.d, null, unit.context)\n  }\n  // apply counter\n  if (parts.counter && parts.counter.unit) {\n    unit = addCounter(unit, parts.counter)\n  }\n  return unit\n}\nexport default transform"
  },
  {
    "path": "plugins/dates/src/api/parse/one/index.js",
    "content": "// import spacetime from 'spacetime'\nimport tokenize from './01-tokenize/index.js'\nimport parse from './02-parse/index.js'\nimport transform from './03-transform/index.js'\n\nconst env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env\nconst log = parts => {\n  if (env.DEBUG_DATE) {\n    // console.log(parts)// eslint-disable-line\n    console.log(`\\n==== '${parts.doc.text()}' =====`) // eslint-disable-line\n    Object.keys(parts).forEach(k => {\n      if (k !== 'doc' && parts[k]) {\n        console.log(k, parts[k]) // eslint-disable-line\n      }\n    })\n    parts.doc.debug() // allow\n  }\n}\n\nconst parseDate = function (doc, context) {\n  //parse-out any sections\n  const parts = tokenize(doc, context)\n  doc = parts.doc\n  // logger\n  log(parts)\n\n  //apply our given timezone\n  if (parts.tz) {\n    context = Object.assign({}, context, { timezone: parts.tz })\n    // set timezone on any 'today' value, too\n    const iso = context.today.format('iso-short')\n    context.today = context.today.goto(context.timezone).set(iso)\n  }\n  // decide on a root date object\n  let unit = parse(doc, context, parts)\n  // apply all our parts\n  unit = transform(unit, context, parts)\n  return unit\n}\nexport default parseDate\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/units/Unit.js",
    "content": "import spacetime from 'spacetime'\n\nclass Unit {\n  constructor(input, unit, context) {\n    this.unit = unit || 'day'\n    this.setTime = false\n    context = context || {}\n    let today = {}\n    if (context.today) {\n      today = {\n        date: context.today.date(),\n        month: context.today.month(),\n        year: context.today.year(),\n      }\n    }\n    if (input && input.month === 'sept') {\n      input.month = 'sep'\n    }\n    // set it to the beginning of the given unit\n    const d = spacetime(input, context.timezone, { today: today, dmy: context.dmy })\n    Object.defineProperty(this, 'd', {\n      enumerable: false,\n      writable: true,\n      value: d,\n    })\n    Object.defineProperty(this, 'context', {\n      enumerable: false,\n      writable: true,\n      value: context,\n    })\n  }\n  // make a new one\n  clone() {\n    const d = new Unit(this.d, this.unit, this.context)\n    d.setTime = this.setTime\n    return d\n  }\n  log() {\n    console.log('--')//eslint-disable-line\n    this.d.log()\n    console.log('\\n')//eslint-disable-line\n    return this\n  }\n  applyShift(obj = {}) {\n    Object.keys(obj).forEach((unit) => {\n      this.d = this.d.add(obj[unit], unit)\n      if (unit === 'hour' || unit === 'minute') {\n        this.setTime = true\n      }\n    })\n    return this\n  }\n  applyTime(str) {\n    if (str) {\n      const justHour = /^[0-9]{1,2}$/\n      if (justHour.test(str)) {\n        this.d = this.d.hour(str)\n      } else {\n        this.d = this.d.time(str)\n      }\n      // wiggle the best am/pm\n      const amPM = /[ap]m/.test(str)\n      if (!amPM) {\n        const tooEarly = this.d.time('6:00am')\n        if (this.d.isBefore(tooEarly)) {\n          this.d = this.d.ampm('pm')\n        }\n        const tooLate = this.d.time('10:00pm')\n        if (this.d.isAfter(tooLate)) {\n          this.d = this.d.ampm('am')\n        }\n      }\n    } else {\n      this.d = this.d.startOf('day') //zero-out time\n    }\n    this.setTime = true\n    return this\n  }\n  applyWeekDay(day) {\n    if (day) {\n      const epoch = this.d.epoch\n      this.d = this.d.day(day)\n      if (this.d.epoch < epoch) {\n        this.d = this.d.add(1, 'week')\n      }\n    }\n    return this\n  }\n  applyRel(rel) {\n    if (rel === 'next') {\n      return this.next()\n    }\n    if (rel === 'last' || rel === 'this-past') {\n      // special 'this past' logic is handled in WeekDay\n      return this.last()\n    }\n    return this\n  }\n  applySection(section) {\n    if (section === 'start') {\n      return this.start()\n    }\n    if (section === 'end') {\n      return this.end()\n    }\n    if (section === 'middle') {\n      return this.middle()\n    }\n    return this\n  }\n  format(fmt) {\n    return this.d.format(fmt)\n  }\n  start() {\n    this.d = this.d.startOf(this.unit)\n    // do we have a custom day-start?\n    if (this.context.dayStart) {\n      this.d = this.d.time(this.context.dayStart)\n    }\n    return this\n  }\n  end() {\n    // do we have a custom day-end?\n    this.d = this.d.endOf(this.unit)\n    if (this.context.dayEnd) {\n      this.d = this.d.startOf('day')\n      const dayEnd = this.d.time(this.context.dayEnd)\n      if (dayEnd.isAfter(this.d)) {\n        this.d = dayEnd\n        return this\n      }\n    }\n    return this\n  }\n  middle() {\n    const diff = this.d.diff(this.d.endOf(this.unit))\n    const minutes = Math.round(diff.minutes / 2)\n    this.d = this.d.add(minutes, 'minutes')\n    return this\n  }\n  // move it to 3/4s through\n  beforeEnd() {\n    const diff = this.d.startOf(this.unit).diff(this.d.endOf(this.unit))\n    const mins = Math.round(diff.minutes / 4)\n    this.d = this.d.endOf(this.unit)\n    this.d = this.d.minus(mins, 'minutes')\n    if (this.context.dayStart) {\n      this.d = this.d.time(this.context.dayStart)\n    }\n    return this\n  }\n  // the millescond before\n  before() {\n    this.d = this.d.minus(1, this.unit)\n    this.d = this.d.endOf(this.unit)\n    if (this.context.dayEnd) {\n      this.d = this.d.time(this.context.dayEnd)\n    }\n    return this\n  }\n  // 'after 2019'\n  after() {\n    this.d = this.d.add(1, this.unit)\n    this.d = this.d.startOf(this.unit)\n    return this\n  }\n  // tricky: 'next june' 'next tuesday'\n  next() {\n    this.d = this.d.add(1, this.unit)\n    this.d = this.d.startOf(this.unit)\n    return this\n  }\n  // tricky: 'last june' 'last tuesday'\n  last() {\n    this.d = this.d.minus(1, this.unit)\n    this.d = this.d.startOf(this.unit)\n    return this\n  }\n}\nexport default Unit\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/units/_day.js",
    "content": "import spacetime from 'spacetime'\nimport Unit from './Unit.js'\n\nclass Day extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'day'\n    if (this.d.isValid()) {\n      this.d = this.d.startOf('day')\n    }\n  }\n  middle() {\n    this.d = this.d.time('10am')\n    return this\n  }\n  beforeEnd() {\n    this.d = this.d.time('2pm')\n    return this\n  }\n}\n\n// like 'feb 2'\nclass CalendarDate extends Day {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'day'\n    if (this.d.isValid()) {\n      this.d = this.d.startOf('day')\n    }\n  }\n  next() {\n    this.d = this.d.add(1, 'year')\n    return this\n  }\n  last() {\n    this.d = this.d.minus(1, 'year')\n    return this\n  }\n}\n\nclass WeekDay extends Day {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'day'\n    this.isWeekDay = true //cool.\n    // is the input just a weekday?\n    if (typeof input === 'string') {\n      this.d = spacetime(context.today, context.timezone)\n      this.d = this.d.day(input)\n      // assume a wednesday in the future\n      if (this.d.isBefore(context.today)) {\n        this.d = this.d.add(7, 'days')\n      }\n    } else {\n      this.d = input\n    }\n    this.weekDay = this.d.dayName()\n    if (this.d.isValid()) {\n      this.d = this.d.startOf('day')\n    }\n  }\n  // clone() {\n  //   return new WeekDay(this.d, this.unit, this.context)\n  // }\n  next() {\n    this.d = this.d.add(7, 'days')\n    this.d = this.d.day(this.weekDay)\n    return this\n  }\n  last() {\n    this.d = this.d.minus(7, 'days')\n    this.d = this.d.day(this.weekDay)\n    return this\n  }\n  // the millescond before\n  before() {\n    this.d = this.d.minus(1, 'day')\n    this.d = this.d.endOf('day')\n    if (this.context.dayEnd) {\n      this.d = this.d.time(this.context.dayEnd)\n    }\n    return this\n  }\n  applyRel(rel) {\n    if (rel === 'next') {\n      const tooFar = this.context.today.endOf('week').add(1, 'week')\n      this.next()\n      //  did we go too-far?\n      if (this.d.isAfter(tooFar)) {\n        this.last() // go back\n      }\n      return this\n    }\n    // the closest-one backwards\n    if (rel === 'this-past') {\n      return this.last()\n    }\n    if (rel === 'last') {\n      const start = this.context.today.startOf('week')\n      this.last()\n      // are we still in 'this week' though?\n      if (this.d.isBefore(start) === false) {\n        this.last() // do it again\n      }\n      return this\n    }\n    return this\n  }\n}\n\n// like 'haloween'\nclass Holiday extends CalendarDate {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'day'\n    if (this.d.isValid()) {\n      this.d = this.d.startOf('day')\n    }\n  }\n}\n\nexport { Day, WeekDay, CalendarDate, Holiday }\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/units/_time.js",
    "content": "import Unit from './Unit.js'\n\nclass Hour extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context, true)\n    this.unit = 'hour'\n    if (this.d.isValid()) {\n      this.d = this.d.startOf('hour')\n    }\n  }\n}\nclass Minute extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context, true)\n    this.unit = 'minute'\n    if (this.d.isValid()) {\n      this.d = this.d.startOf('minute')\n    }\n  }\n}\nclass Moment extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context, true)\n    this.unit = 'millisecond'\n  }\n}\n\nexport {\n  Hour,\n  Minute,\n  Moment\n}\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/units/_week.js",
    "content": "import Unit from './Unit.js'\n\nclass Week extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'week'\n    if (this.d.isValid()) {\n      this.d = this.d.startOf('week')\n    }\n  }\n  clone() {\n    return new Week(this.d, this.unit, this.context)\n  }\n  middle() {\n    this.d = this.d.add(2, 'days') //wednesday\n    return this\n  }\n  // move it to 3/4s through\n  beforeEnd() {\n    this.d = this.d.day('friday')\n    return this\n  }\n}\n\n//may need some work\nclass WeekEnd extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'week'\n    if (this.d.isValid()) {\n      this.d = this.d.day('saturday')\n      this.d = this.d.startOf('day')\n    }\n  }\n  start() {\n    this.d = this.d.day('saturday').startOf('day')\n    return this\n  }\n  // end() {\n  //   this.d = this.d.day('sunday').endOf('day')\n  //   return this\n  // }\n  next() {\n    this.d = this.d.add(1, this.unit)\n    this.d = this.d.startOf('weekend')\n    return this\n  }\n  last() {\n    this.d = this.d.minus(1, this.unit)\n    this.d = this.d.startOf('weekend')\n    return this\n  }\n}\n\nexport { Week, WeekEnd }\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/units/_year.js",
    "content": "import Unit from './Unit.js'\n\n// a specific month, like 'March'\nclass AnyMonth extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'month'\n    // set to beginning\n    if (this.d.isValid()) {\n      this.d = this.d.startOf(this.unit)\n    }\n  }\n}\n\n// a specific month, like 'March'\nclass Month extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'month'\n    // set to beginning\n    if (this.d.isValid()) {\n      this.d = this.d.startOf(this.unit)\n    }\n  }\n  next() {\n    this.d = this.d.add(1, 'year')\n    this.d = this.d.startOf('month')\n    return this\n  }\n  last() {\n    this.d = this.d.minus(1, 'year')\n    this.d = this.d.startOf('month')\n    return this\n  }\n  middle() {\n    this.d = this.d.add(15, 'days')\n    this.d = this.d.startOf('day')\n    return this\n  }\n}\n\nclass AnyQuarter extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'quarter'\n    // set to beginning\n    if (this.d.isValid()) {\n      this.d = this.d.startOf(this.unit)\n    }\n  }\n  last() {\n    this.d = this.d.minus(1, 'quarter')\n    this.d = this.d.startOf(this.unit)\n    return this\n  }\n}\n\nclass Quarter extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'quarter'\n    // set to beginning\n    if (this.d.isValid()) {\n      this.d = this.d.startOf(this.unit)\n    }\n  }\n  next() {\n    this.d = this.d.add(1, 'year')\n    this.d = this.d.startOf(this.unit)\n    return this\n  }\n  last() {\n    this.d = this.d.minus(1, 'year')\n    this.d = this.d.startOf(this.unit)\n    return this\n  }\n}\nclass Season extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'season'\n    // set to beginning\n    if (this.d.isValid()) {\n      this.d = this.d.startOf(this.unit)\n    }\n  }\n  next() {\n    this.d = this.d.add(1, 'year')\n    this.d = this.d.startOf(this.unit)\n    return this\n  }\n  last() {\n    this.d = this.d.minus(1, 'year')\n    this.d = this.d.startOf(this.unit)\n    return this\n  }\n}\nclass Year extends Unit {\n  constructor(input, unit, context) {\n    super(input, unit, context)\n    this.unit = 'year'\n    if (this.d.isValid()) {\n      this.d = this.d.startOf('year')\n    }\n  }\n}\n\nexport {\n  AnyMonth,\n  Month,\n  Quarter,\n  AnyQuarter,\n  Season,\n  Year\n}\n"
  },
  {
    "path": "plugins/dates/src/api/parse/one/units/index.js",
    "content": "\nexport { default as Unit } from './Unit.js'\nexport { Day, WeekDay, CalendarDate, Holiday } from './_day.js'\nexport { Hour, Minute, Moment } from './_time.js'\nexport { AnyMonth, Month, Quarter, AnyQuarter, Season, Year } from './_year.js'\nexport { Week, WeekEnd } from './_week.js'\n\n// export { Unit, Day, WeekDay, CalendarDate, Holiday, Hour, Minute, Moment, AnyMonth, Month, Quarter, AnyQuarter, Season, Year, Week, WeekEnd }\n\n"
  },
  {
    "path": "plugins/dates/src/api/parse/range/01-two-times.js",
    "content": "import parseDate from '../one/index.js'\nimport reverseMaybe from './_reverse.js'\n\nconst moveToPM = function (obj) {\n  const start = obj.start\n  const end = obj.end\n  if (start.d.isAfter(end.d)) {\n    if (end.d.hour() < 10) {\n      end.d = end.d.ampm('pm')\n    }\n  }\n  return obj\n}\n\nexport default [\n  {\n    // '3pm to 4pm january 5th'\n    match: '[<from>#Time+] (to|until|upto|through|thru|and) [<to>#Time+ #Date+]',\n    desc: '3pm to 4pm january 5th',\n    parse: (m, context) => {\n      const from = m.groups('from')\n      const to = m.groups('to')\n      const end = parseDate(to, context)\n      if (end) {\n        const start = end.clone()\n        start.applyTime(from.text('implicit'))\n        if (start) {\n          let obj = {\n            start: start,\n            end: end,\n            unit: 'time',\n          }\n          if (/(am|pm)/.test(to) === false) {\n            obj = moveToPM(obj)\n          }\n          obj = reverseMaybe(obj)\n          return obj\n        }\n      }\n      return null\n    },\n  },\n\n  {\n    // 'january from 3pm to 4pm'\n    match: '[<main>#Date+] from [<a>#Time] (to|until|upto|through|thru|and) [<b>#Time+]',\n    desc: 'january from 3pm to 4pm',\n    parse: (m, context) => {\n      let main = m.groups('main')\n      const a = m.groups('a')\n      const b = m.groups('b')\n      main = parseDate(main, context)\n      if (main) {\n        main.applyTime(a.text('implicit'))\n        const end = main.clone()\n        end.applyTime(b.text('implicit'))\n        if (end) {\n          let obj = {\n            start: main,\n            end: end,\n            unit: 'time',\n          }\n          if (/(am|pm)/.test(b.text()) === false) {\n            obj = moveToPM(obj)\n          }\n          obj = reverseMaybe(obj)\n          return obj\n        }\n      }\n      return null\n    },\n  },\n  {\n    // 'january 5th 3pm to 4pm'\n    match: '[<from>#Date+] (to|until|upto|through|thru|and) [<to>#Time+]',\n    desc: 'january from 3pm to 4pm',\n    parse: (m, context) => {\n      let from = m.groups('from')\n      const to = m.groups('to')\n      from = parseDate(from, context)\n      if (from) {\n        const end = from.clone()\n        end.applyTime(to.text('implicit'))\n        if (end) {\n          let obj = {\n            start: from,\n            end: end,\n            unit: 'time',\n          }\n          if (/(am|pm)/.test(to.text()) === false) {\n            obj = moveToPM(obj)\n          }\n          obj = reverseMaybe(obj)\n          return obj\n        }\n      }\n      return null\n    },\n  },\n]\n"
  },
  {
    "path": "plugins/dates/src/api/parse/range/02-date-range.js",
    "content": "import parseDate from '../one/index.js'\nimport reverseMaybe from './_reverse.js'\nimport { Month, CalendarDate } from '../one/units/index.js'\n\nexport default [\n\n\n  {\n    // month-ranges have some folksy rules\n    match: 'between [<start>#Month] and [<end>#Month] [<year>#Year?]',\n    desc: 'between march and jan',\n    parse: (m, context) => {\n      const { start, end, year } = m.groups()\n      const y = year && year.found ? Number(year.text('reduced')) : context.today.year()\n      let obj = { month: start.text('reduced'), year: y }\n      const left = new Month(obj, null, context).start()\n      obj = { month: end.text('reduced'), year: y }\n      const right = new Month(obj, null, context).start()\n      if (left.d.isAfter(right.d)) {\n        return {\n          start: right,\n          end: left,\n        }\n      }\n      return {\n        start: left,\n        end: right,\n      }\n    },\n  },\n\n  {\n    // two explicit dates - 'between friday and sunday'\n    match: 'between [<start>.+] and [<end>.+]',\n    desc: 'between friday and sunday',\n    parse: (m, context) => {\n      let start = m.groups('start')\n      start = parseDate(start, context)\n      let end = m.groups('end')\n      end = parseDate(end, context)\n      if (start && end) {\n        end = end.before()\n        return {\n          start: start,\n          end: end,\n        }\n      }\n      return null\n    },\n  },\n\n  {\n    // two months, no year - 'june 5 to june 7'\n    match: '[<from>#Month #Value] (to|through|thru) [<to>#Month #Value] [<year>#Year?]',\n    desc: 'june 5 to june 7',\n    parse: (m, context) => {\n      const res = m.groups()\n      let start = res.from\n      if (res.year) {\n        start = start.append(res.year)\n      }\n      start = parseDate(start, context)\n      if (start) {\n        let end = res.to\n        if (res.year) {\n          end = end.append(res.year)\n        }\n        end = parseDate(end, context)\n        if (end) {\n          // assume end is after start\n          if (start.d.isAfter(end.d)) {\n            end.d = end.d.add(1, 'year')\n          }\n          const obj = {\n            start: start,\n            end: end.end(),\n          }\n          return obj\n        }\n      }\n      return null\n    },\n  },\n  {\n    // one month, one year, first form - 'january 5 to 7 1998'\n    match: '[<month>#Month] [<from>#Value] (to|through|thru) [<to>#Value] of? [<year>#Year]',\n    desc: 'january 5 to 7 1998',\n    parse: (m, context) => {\n      const { month, from, to, year } = m.groups()\n      const year2 = year.clone()\n      let start = from.prepend(month).append(year)\n      start = parseDate(start, context)\n      if (start) {\n        let end = to.prepend(month).append(year2)\n        end = parseDate(end, context)\n        return {\n          start: start,\n          end: end.end(),\n        }\n      }\n      return null\n    },\n  },\n  {\n    // one month, one year, second form - '5 to 7 of january 1998'\n    match: '[<from>#Value] (to|through|thru) [<to>#Value of? #Month #Date+?]',\n    desc: '5 to 7 of january 1998',\n    parse: (m, context) => {\n      let to = m.groups('to')\n      to = parseDate(to, context)\n      if (to) {\n        const fromDate = m.groups('from')\n        const from = to.clone()\n        from.d = from.d.date(fromDate.text('implicit'))\n        return {\n          start: from,\n          end: to.end(),\n        }\n      }\n      return null\n    },\n  },\n\n  {\n    // one month, no year - 'january 5 to 7'\n    match: '[<from>#Month #Value] (to|through|thru) [<to>#Value]',\n    desc: 'january 5 to 7',\n    parse: (m, context) => {\n      let from = m.groups('from')\n      from = parseDate(from, context)\n      if (from) {\n        const toDate = m.groups('to')\n        const to = from.clone()\n        to.d = to.d.date(toDate.text('implicit'))\n        return {\n          start: from,\n          end: to.end(),\n        }\n      }\n      return null\n    },\n  },\n\n  {\n    // 'january to may 2020'\n    match: 'from? [<from>#Month] (to|until|upto|through|thru) [<to>#Month] [<year>#Year]',\n    desc: 'january to may 2020',\n    parse: (m, context) => {\n      let from = m.groups('from')\n      const year = m.groups('year').numbers().get()[0]\n      let to = m.groups('to')\n      from = parseDate(from, context)\n      to = parseDate(to, context)\n      from.d = from.d.year(year)\n      to.d = to.d.year(year)\n      if (from && to) {\n        let obj = {\n          start: from,\n          end: to.end(),\n        }\n        // reverse the order?\n        obj = reverseMaybe(obj)\n        return obj\n      }\n      return null\n    },\n  },\n\n  {\n    // in 2 to 4 weeks\n    match: '^in [<min>#Value] to [<max>#Value] [<unit>(days|weeks|months|years)]',\n    desc: 'in 2 to 4 weeks',\n    parse: (m, context) => {\n      const { min, max, unit } = m.groups()\n\n      let start = new CalendarDate(context.today, null, context)\n      let end = start.clone()\n\n      const duration = unit.text('implicit')\n      start = start.applyShift({ [duration]: min.numbers().get()[0] })\n      end = end.applyShift({ [duration]: max.numbers().get()[0] })\n\n      return {\n        start: start,\n        end: end.end(),\n      }\n    },\n  },\n  {\n    // 2 to 4 weeks ago\n    match:\n      '[<min>#Value] to [<max>#Value] [<unit>(days|weeks|months|years)] (ago|before|earlier|prior)',\n    desc: '2 to 4 weeks ago',\n    parse: (m, context) => {\n      const { min, max, unit } = m.groups()\n\n      let start = new CalendarDate(context.today, null, context)\n      let end = start.clone()\n\n      const duration = unit.text('implicit')\n      start = start.applyShift({ [duration]: -max.numbers().get()[0] })\n      end = end.applyShift({ [duration]: -min.numbers().get()[0] })\n\n      return {\n        start: start,\n        end: end.end(),\n      }\n    },\n  },\n\n\n\n  {\n    // implicit range\n    match: '^until [<to>#Date+]',\n    desc: 'until christmas',\n    parse: (m, context) => {\n      let to = m.groups('to')\n      to = parseDate(to, context)\n      if (to) {\n        const start = new CalendarDate(context.today, null, context)\n        return {\n          start: start,\n          end: to.start(),\n        }\n      }\n      return null\n    },\n  },\n\n  {\n    // second half of march\n    match: '[<part>(1st|initial|2nd|latter)] half of [<month>#Month] [<year>#Year?]',\n    desc: 'second half of march',\n    parse: (m, context) => {\n      const { part, month, year } = m.groups()\n      const obj = {\n        month: month.text('reduced'),\n        date: 1, //assume 1st\n        year: year && year.found ? year.text('reduced') : context.today.year()\n      }\n      const unit = new Month(obj, null, context)\n      if (part.has('(1st|initial)')) {\n        return {\n          start: unit.start(),\n          end: unit.clone().middle(),\n        }\n      }\n      return {\n        start: unit.middle(),\n        end: unit.clone().end(),\n      }\n    },\n  },\n]\n"
  },
  {
    "path": "plugins/dates/src/api/parse/range/03-one-date.js",
    "content": "import parseDate from '../one/index.js'\nimport reverseMaybe from './_reverse.js'\nimport Unit from '../one/units/Unit.js'\n\nconst punt = function (unit, context) {\n  unit = unit.applyShift(context.punt)\n  return unit\n}\n\nexport default [\n  {\n    // 'from A to B'\n    match: 'from? [<from>.+] (to|until|upto|through|thru) [<to>.+]',\n    desc: 'from A to B',\n    parse: (m, context) => {\n      let from = m.groups('from')\n      let to = m.groups('to')\n      from = parseDate(from, context)\n      to = parseDate(to, context)\n      if (from && to) {\n        let obj = {\n          start: from,\n          end: to.end(),\n        }\n        obj = reverseMaybe(obj)\n        return obj\n      }\n      return null\n    },\n  },\n\n  {\n    // 'before june'\n    match: '^due? (by|before) [.+]',\n    desc: 'before june',\n    parse: (m, context) => {\n      m = m.group(0)\n      const unit = parseDate(m, context)\n      if (unit) {\n        let start = new Unit(context.today, null, context)\n        if (start.d.isAfter(unit.d)) {\n          start = unit.clone().applyShift({ weeks: -2 })\n        }\n        // end the night before\n        const end = unit.clone().applyShift({ day: -1 })\n        return {\n          start: start,\n          end: end.end(),\n        }\n      }\n      return null\n    },\n  },\n\n  {\n    // 'in june'\n    match: '^(on|in|at|@|during) [.+]',\n    desc: 'in june',\n    parse: (m, context) => {\n      m = m.group(0)\n      const unit = parseDate(m, context)\n      if (unit) {\n        return { start: unit, end: unit.clone().end(), unit: unit.unit }\n      }\n      return null\n    },\n  },\n  {\n    // 'after june'\n    match: '^(after|following) [.+]',\n    desc: 'after june',\n    parse: (m, context) => {\n      m = m.group(0)\n      let unit = parseDate(m, context)\n      if (unit) {\n        unit = unit.after()\n        return {\n          start: unit.clone(),\n          end: punt(unit.clone(), context),\n        }\n      }\n      return null\n    },\n  },\n  {\n    // 'middle of'\n    match: '^(middle|center|midpoint) of [.+]',\n    desc: 'middle of',\n    parse: (m, context) => {\n      m = m.group(0)\n      const unit = parseDate(m, context)\n      const start = unit.clone().middle()\n      const end = unit.beforeEnd()\n      if (unit) {\n        return {\n          start: start,\n          end: end,\n        }\n      }\n      return null\n    },\n  },\n  {\n    // 'tuesday after 5pm'\n    match: '.+ after #Time+$',\n    desc: 'tuesday after 5pm',\n    parse: (m, context) => {\n      const unit = parseDate(m, context)\n      if (unit) {\n        const start = unit.clone()\n        const end = unit.end()\n        return {\n          start: start,\n          end: end,\n          unit: 'time',\n        }\n      }\n      return null\n    },\n  },\n  {\n    // 'tuesday before noon'\n    match: '.+ before #Time+$',\n    desc: 'tuesday before noon',\n    parse: (m, context) => {\n      const unit = parseDate(m, context)\n      if (unit) {\n        const end = unit.clone()\n        const start = unit.start()\n        if (unit) {\n          return {\n            start: start,\n            end: end,\n            unit: 'time',\n          }\n        }\n      }\n      return null\n    },\n  },\n]\n"
  },
  {
    "path": "plugins/dates/src/api/parse/range/_reverse.js",
    "content": "// somewhat-intellegent response to end-before-start situations\nconst reverseMaybe = function (obj) {\n  const start = obj.start\n  const end = obj.end\n  if (start.d.isAfter(end.d)) {\n    // wednesday to sunday -> move end up a week\n    if (start.isWeekDay && end.isWeekDay) {\n      obj.end.next()\n      return obj\n    }\n    // else, reverse them\n    const tmp = start\n    obj.start = end\n    obj.end = tmp\n  }\n  return obj\n}\nexport default reverseMaybe\n"
  },
  {
    "path": "plugins/dates/src/api/parse/range/combos/index.js",
    "content": "import parseDate from '../../one/index.js'\n\n// these are dates that produce two seperate dates,\n// and not a start-end range.\nexport default [\n  {\n    // 'jan, or march 1999'\n    match: '^during? #Month+ (or|and) #Month [<year>#Year]?',\n    desc: 'march or june',\n    parse: (m, context) => {\n      const before = m.match('^during? [#Month]', 0)\n      m = m.not('(or|and)')\n      const start = parseDate(before, context)\n      if (start) {\n        const result = [\n          {\n            start: start,\n            end: start.clone().end(),\n            unit: start.unit,\n          },\n        ]\n        // add more run-on numbers?\n        const more = m.not(before)\n        if (more.found) {\n          more.match('#Month').forEach((month) => {\n            const s = parseDate(month, context)\n            // s.d = s.d.month(month.text('reduced'))\n            result.push({\n              start: s,\n              end: s.clone().end(),\n              unit: s.unit,\n            })\n          })\n        }\n        // apply the year\n        let year = m.match('#Year$')\n        if (year.found) {\n          year = year.text('reduced')\n          result.forEach((o) => {\n            o.start.d = o.start.d.year(year)\n            o.end.d = o.end.d.year(year)\n          })\n        }\n        return result\n      }\n      return null\n    },\n  },\n  {\n    // 'jan 5 or 8'  - (one month, shared dates)\n    match: '^#Month #Value+ (or|and)? #Value$',\n    desc: 'jan 5 or 8',\n    parse: (m, context) => {\n      m = m.not('(or|and)')\n      const before = m.match('^#Month #Value')\n      const start = parseDate(before, context)\n      if (start) {\n        const result = [\n          {\n            start: start,\n            end: start.clone().end(),\n            unit: start.unit,\n          },\n        ]\n        // add more run-on numbers?\n        const more = m.not(before)\n        if (more.found) {\n          more.match('#Value').forEach((v) => {\n            const s = start.clone()\n            s.d = s.d.date(v.text('reduced'))\n            result.push({\n              start: s,\n              end: s.clone().end(),\n              unit: s.unit,\n            })\n          })\n        }\n        return result\n      }\n      return null\n    },\n  },\n  {\n    // 'jan 5, 8'  - (similar to above)\n    match: '^#Month+ #Value #Value+$',\n    desc: 'jan 5 8',\n    parse: (m, context) => {\n      const month = m.match('#Month')\n      const year = m.match('#Year')\n      m = m.not('#Year')\n      const results = []\n      m.match('#Value').forEach((val) => {\n        val = val.clone()\n        const d = val.prepend(month.text())\n        if (year.found) {\n          d.append(year)\n        }\n        const start = parseDate(d, context)\n        if (start) {\n          results.push({\n            start: start,\n            end: start.clone().end(),\n            unit: start.unit,\n          })\n        }\n      })\n      return results\n    },\n  },\n  {\n    // '5 or 8 of jan'  - (one month, shared dates)\n    match: '^#Value+ (or|and)? #Value of #Month #Year?$',\n    desc: '5 or 8 of Jan',\n    parse: (m, context) => {\n      const month = m.match('#Month')\n      const year = m.match('#Year')\n      m = m.not('#Year')\n      const results = []\n      m.match('#Value').forEach((val) => {\n        const d = val.append(month)\n        if (year.found) {\n          d.append(year)\n        }\n        const start = parseDate(d, context)\n        if (start) {\n          results.push({\n            start: start,\n            end: start.clone().end(),\n            unit: start.unit,\n          })\n        }\n      })\n      return results\n    },\n  },\n\n  {\n    // 'june or july 2019'\n    match: '^!(between|from|during)? [<from>#Date+] (and|or) [<to>#Date+]$',\n    desc: 'A or B',\n    parse: (m, context) => {\n      const fromDoc = m.groups('from')\n      const toDoc = m.groups('to')\n      const from = parseDate(fromDoc, context)\n      const to = parseDate(toDoc, context)\n      if (from && to) {\n        return [\n          {\n            start: from,\n            end: from.clone().end(),\n          },\n          {\n            start: to,\n            end: to.clone().end(),\n          },\n        ]\n      }\n      return null\n    },\n  },\n]\n"
  },
  {
    "path": "plugins/dates/src/api/parse/range/index.js",
    "content": "import parseDate from '../one/index.js'\nimport repeating from './intervals/index.js'\n// ranges\nimport doTwoTimes from './01-two-times.js'\nimport doCombos from './combos/index.js'\nimport doDateRange from './02-date-range.js'\nimport doOneDate from './03-one-date.js'\n\nconst ranges = [].concat(doTwoTimes, doCombos, doDateRange, doOneDate)\n\nconst env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env\nconst log = msg => {\n  if (env.DEBUG_DATE) {\n    console.log(`\\n  \\x1b[32m ${msg} \\x1b[0m`) // eslint-disable-line\n  }\n}\n\nconst isArray = function (arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\n//else, try whole thing, non ranges\nconst tryFull = function (doc, context) {\n  let res = {\n    start: null,\n    end: null,\n  }\n  if (!doc.found) {\n    return res\n  }\n  const unit = parseDate(doc, context)\n  if (unit) {\n    const end = unit.clone().end()\n    res = {\n      start: unit,\n      end: end,\n      unit: unit.setTime ? 'time' : unit.unit,\n    }\n  }\n  return res\n}\n\nconst tryRanges = function (doc, context) {\n\n  // try each template in order\n  for (let i = 0; i < ranges.length; i += 1) {\n    const fmt = ranges[i]\n    const m = doc.match(fmt.match)\n    if (m.found) {\n      log(`  ---[${fmt.desc}]---`)\n      let res = fmt.parse(m, context)\n      if (res !== null) {\n        // did it return more than one date?\n        if (!isArray(res)) {\n          res = [res]\n        }\n        return res\n      }\n    }\n  }\n  return null\n}\n\n// loop thru each range template\nconst parseRanges = function (m, context) {\n  // parse-out 'every week ..'\n  const repeats = repeating(m, context) || {}\n  // try picking-apart ranges\n  let found = tryRanges(m, context)\n  if (!found) {\n    found = [tryFull(m, context)]\n  }\n  // add the repeat info to each date\n  found = found.map((o) => Object.assign({}, repeats, o))\n  // ensure start is not after end\n  found.forEach((res) => {\n    if (res.start && res.end && res.start.d.epoch > res.end.d.epoch) {\n      res.start = res.start.start()\n    }\n  })\n  return found\n}\nexport default parseRanges\n"
  },
  {
    "path": "plugins/dates/src/api/parse/range/intervals/index.js",
    "content": "import parseTime from '../../one/01-tokenize/03-time.js'\n\nconst dayNames = {\n  mon: 'monday',\n  tue: 'tuesday',\n  tues: 'wednesday',\n  wed: 'wednesday',\n  thu: 'thursday',\n  fri: 'friday',\n  sat: 'saturday',\n  sun: 'sunday',\n  monday: 'monday',\n  tuesday: 'tuesday',\n  wednesday: 'wednesday',\n  thursday: 'thursday',\n  friday: 'friday',\n  saturday: 'saturday',\n  sunday: 'sunday',\n}\n// 'any tuesday' vs 'every tuesday'\nconst parseLogic = function (m) {\n  if (m.match('(every|each)').found) {\n    return 'AND'\n  }\n  if (m.match('(any|a)').found) {\n    return 'OR'\n  }\n  return null\n}\n\n// parse repeating dates, like 'every week'\nconst parseIntervals = function (doc, context) {\n  // 'every week'\n  let m = doc.match('[<logic>(every|any|each)] [<skip>other?] [<unit>#Duration] (starting|beginning|commencing)?')\n  if (m.found) {\n    const repeat = { interval: {} }\n    const unit = m.groups('unit').text('reduced')\n    repeat.interval[unit] = 1\n    repeat.choose = parseLogic(m)\n    // 'every other week'\n    if (m.groups('skip').found) {\n      repeat.interval[unit] = 2\n    }\n    doc = doc.remove(m)\n    return { repeat: repeat }\n  }\n\n  // 'every two weeks'\n  m = doc.match('[<logic>(every|any|each)] [<num>#Value] [<unit>#Duration] (starting|beginning|commencing)?')\n  if (m.found) {\n    const repeat = { interval: {} }\n    const units = m.groups('unit')\n    units.nouns().toSingular()\n    const unit = units.text('reduced')\n    repeat.interval[unit] = m.groups('num').numbers().get()[0]\n    repeat.choose = parseLogic(m)\n    doc = doc.remove(m)\n    return { repeat: repeat }\n  }\n\n  // 'every friday'\n  m = doc.match('[<logic>(every|any|each|a)] [<skip>other?] [<day>#WeekDay+] (starting|beginning|commencing)?')\n  if (m.found) {\n    const repeat = { interval: { day: 1 }, filter: { weekDays: {} } }\n    let str = m.groups('day').text('reduced')\n    str = dayNames[str] //normalize it\n    if (str) {\n      repeat.filter.weekDays[str] = true\n      repeat.choose = parseLogic(m)\n      doc = doc.remove(m)\n      return { repeat: repeat }\n    }\n  }\n\n  // 'every weekday'\n  m = doc.match(\n    '[<logic>(every|any|each|a)] [<day>(weekday|week day|weekend|weekend day)] (starting|beginning|commencing)?'\n  )\n  if (m.found) {\n    const repeat = { interval: { day: 1 }, filter: { weekDays: {} } }\n    const day = m.groups('day')\n    if (day.has('(weekday|week day)')) {\n      repeat.filter.weekDays = {\n        monday: true,\n        tuesday: true,\n        wednesday: true,\n        thursday: true,\n        friday: true,\n      }\n    } else if (day.has('(weekend|weekend day)')) {\n      repeat.filter.weekDays = {\n        saturday: true,\n        sunday: true,\n      }\n    }\n    repeat.choose = parseLogic(m)\n    doc = doc.remove(m)\n    return { repeat: repeat }\n  }\n\n  // mondays\n  m = doc.match(\n    '[<day>(mondays|tuesdays|wednesdays|thursdays|fridays|saturdays|sundays)] (at|near|after)? [<time>#Time+?]'\n  )\n  if (m.found) {\n    const repeat = { interval: { day: 1 }, filter: { weekDays: {} } }\n    let str = m.groups('day').text('reduced')\n    str = str.replace(/s$/, '')\n    str = dayNames[str] //normalize it\n    if (str) {\n      repeat.filter.weekDays[str] = true\n      repeat.choose = 'OR'\n      doc = doc.remove(m)\n      const time = m.groups('time')\n      if (time.found) {\n        repeat.time = parseTime(time, context)\n      }\n      return { repeat: repeat }\n    }\n  }\n  return null\n}\nexport default parseIntervals\n"
  },
  {
    "path": "plugins/dates/src/api/times.js",
    "content": "import normalize from './normalize.js'\nimport parseTime from './parse/one/01-tokenize/03-time.js'\nimport spacetime from 'spacetime'\n\nconst find = function (doc) {\n  return doc.match('#Time+ (am|pm)?')\n}\n\nconst parse = function (m, context = {}) {\n  m = normalize(m)\n  const res = parseTime(m, context)\n  if (!res.result) {\n    return { time: null, '24h': null }\n  }\n  const s = spacetime.now().time(res.result)\n  return {\n    time: res.result,\n    '24h': s.format('time-24'),\n    hour: s.hour(),\n    minute: s.minute(),\n  }\n}\n\nconst getNth = (doc, n) => (typeof n === 'number' ? doc.eq(n) : doc)\n\nconst api = function (View) {\n  class Times extends View {\n    constructor(document, pointer, groups, opts) {\n      super(document, pointer, groups)\n      this.viewType = 'Times'\n      this.opts = opts || {}\n    }\n\n    format(fmt) {\n      const found = this\n      const res = found.map(m => {\n        const obj = parse(m) || {}\n        if (obj.time) {\n          const s = spacetime.now().time(obj.time)\n          let str = obj.time\n          if (fmt === '24h') {\n            str = s.format('time-24')\n          } else {\n            str = s.format(fmt)\n          }\n          m = m.not('#Preposition')\n          m.replaceWith(str)\n        }\n        return m\n      })\n      return new Times(this.document, res.pointer, null, this.opts)\n    }\n\n    get(n) {\n      return getNth(this, n).map(parse)\n    }\n\n    json(opts = {}) {\n      return this.map(m => {\n        const json = m.toView().json(opts)[0] || {}\n        if (opts && opts.time !== false) {\n          json.time = parse(m)\n        }\n        return json\n      }, [])\n    }\n  }\n\n  View.prototype.times = function (n) {\n    let m = find(this)\n    m = getNth(m, n)\n    return new Times(this.document, m.pointer)\n  }\n}\n\nexport default api\n"
  },
  {
    "path": "plugins/dates/src/api/toJSON.js",
    "content": "const getDuration = function (range) {\n  const end = range.end.d.add(1, 'millisecond')\n  const diff = end.since(range.start.d).diff\n  delete diff.milliseconds\n  delete diff.seconds\n  return diff\n}\n\nconst toJSON = function (range) {\n  if (!range.start) {\n    return {\n      start: null,\n      end: null,\n      timezone: null,\n      duration: {},\n      // range: null\n    }\n  }\n  const diff = range.end ? getDuration(range) : {}\n  return {\n    start: range.start.format('iso'),\n    end: range.end ? range.end.format('iso') : null,\n    timezone: range.start.d.format('timezone'),\n    duration: diff,\n    // range: getRange(diff)\n  }\n}\nexport default toJSON"
  },
  {
    "path": "plugins/dates/src/compute/00-year.js",
    "content": "//ambiguous 'may' and 'march'\n// const preps = '(in|by|before|during|on|until|after|of|within|all)' //6\n// const thisNext = '(last|next|this|previous|current|upcoming|coming)' //2\nconst sections = '(start|end|middle|starting|ending|midpoint|beginning)' //2\n// const seasons = '(spring|summer|winter|fall|autumn)'\n\n//ensure a year is approximately typical for common years\n//please change in one thousand years\nconst tagYear = (m, reason) => {\n  if (m.found !== true) {\n    return\n  }\n  m.forEach((p) => {\n    const str = p.text('reduced')\n    const num = parseInt(str, 10)\n    if (num && num > 1000 && num < 3000) {\n      p.tag('Year', reason)\n    }\n  })\n}\n//same, but for less-confident values\nconst tagYearSafe = (m, reason) => {\n  if (m.found !== true) {\n    return\n  }\n  m.forEach((p) => {\n    const str = p.text('reduced')\n    const num = parseInt(str, 10)\n    if (num && num > 1900 && num < 2030) {\n      p.tag('Year', reason)\n    }\n  })\n}\n\nconst tagDates = function (doc) {\n\n  doc\n    .match('(march|april|may) (and|to|or|through|until)? (march|april|may)')\n    .tag('Date')\n    .match('(march|april|may)')\n    .tag('Month', 'march|april|may')\n  // april should almost-always be a date\n  // doc.match('[april] !#LastName?', 0).tag('Month', 'april')\n\n\n  //year/cardinal tagging\n  const cardinal = doc.if('#Cardinal')\n  if (cardinal.found === true) {\n    let v = cardinal.match(`#Date #Value [#Cardinal]`, 0)\n    tagYear(v, 'date-value-year')\n    //scoops up a bunch\n    v = cardinal.match(`#Date [#Cardinal]`, 0)\n    tagYearSafe(v, 'date-year')\n    //middle of 1999\n    v = cardinal.match(`${sections} of [#Cardinal]`)\n    tagYearSafe(v, 'section-year')\n    //feb 8 2018\n    v = cardinal.match(`#Month #Value [#Cardinal]`, 0)\n    tagYear(v, 'month-value-year')\n    //feb 8 to 10th 2018\n    v = cardinal.match(`#Month #Value to #Value [#Cardinal]`, 0)\n    tagYear(v, 'month-range-year')\n    //in 1998\n    v = cardinal.match(`(in|of|by|during|before|starting|ending|for|year|since) [#Cardinal]`, 0)\n    tagYear(v, 'in-year-1')\n    //q2 2009\n    v = cardinal.match('(q1|q2|q3|q4) [#Cardinal]', 0)\n    tagYear(v, 'in-year-2')\n    //2nd quarter 2009\n    v = cardinal.match('#Ordinal quarter of? [#Cardinal]', 0)\n    tagYear(v, 'in-year-3')\n    //in the year 1998\n    v = cardinal.match('the year [#Cardinal]', 0)\n    tagYear(v, 'in-year-4')\n    //it was 1998\n    v = cardinal.match('it (is|was) [#Cardinal]', 0)\n    tagYearSafe(v, 'in-year-5')\n    // re-tag this part\n    cardinal.match(`${sections} of #Year`).tag('Date')\n    //between 1999 and 1998\n    const m = cardinal.match('between [#Cardinal] and [#Cardinal]')\n    tagYear(m.groups('0'), 'between-year-and-year-1')\n    tagYear(m.groups('1'), 'between-year-and-year-2')\n  }\n\n  //'2020' bare input\n  const m = doc.match('^/^20[012][0-9]$/$')\n  tagYearSafe(m, '2020-ish')\n\n  return doc\n}\nexport default tagDates\n"
  },
  {
    "path": "plugins/dates/src/compute/01-time-range.js",
    "content": "\n// 3-4 can be a time-range, sometimes\nconst tagTimeRange = function (m, reason) {\n  if (m.found) {\n    m.tag('Date', reason)\n    const nums = m.numbers().lessThan(31).ifNo('#Year')\n    nums.tag('#Time', reason)\n  }\n}\n\n//\nconst timeTagger = function (doc) {\n\n  const date = doc.if('#Date')\n  if (date.found) {\n    // ==time-ranges=\n    //   --number-ranges--\n    const range = date.if('#NumberRange')\n    if (range.found) {\n      // 3-4 on tuesday\n      let m = range.match('[#NumberRange+] (on|by|at)? #WeekDay', 0)\n      tagTimeRange(m, '3-4-tuesday')\n      // 3-4 on march 2nd\n      m = range.match('[#NumberRange+] (on|by|at)? #Month #Value', 0)\n      tagTimeRange(m, '3-4 mar 3')\n      // 3-4pm\n      m = range.match('[#NumberRange] to (#NumberRange && #Time)', 0)\n      tagTimeRange(m, '3-4pm')\n      // 3pm-5\n      m = range.match('(#NumberRange && #Time) to [#NumberRange]', 0)\n      tagTimeRange(m, '3pm-4')\n    }\n    // from 4 to 5 tomorrow\n    let m = date.match('(from|between) #Cardinal and #Cardinal (in|on)? (#WeekDay|tomorrow|yesterday)')\n    tagTimeRange(m, 'from 9-5 tues')\n    // 9 to 5 tomorrow\n    m = doc.match('#Cardinal to #Cardinal (#WeekDay|tomorrow|yesterday)')\n    tagTimeRange(m, '9-5 tues')\n    // from 4 to 5pm\n    m = date.match('(from|between) [#NumericValue] (to|and) #Time', 0).tag('Time', '4-to-5pm')\n    tagTimeRange(m, 'from 9-5pm')\n    // wed from 3 to 4\n    m = date.match('(#WeekDay|tomorrow|yesterday) (from|between)? (#Cardinal|#Time) (and|to) (#Cardinal|#Time)')\n    tagTimeRange(m, 'tues 3-5')\n    // june 5 from 3 to 4\n    m = date.match('#Month #Value+ (from|between) [<time>(#Cardinal|#Time) (and|to) (#Cardinal|#Time)]').group('time')\n    tagTimeRange(m, 'sep 4 from 9-5')\n    // 3pm to 4 on wednesday\n    m = date.match('#Time to #Cardinal on? #Date')\n    tagTimeRange(m, '3pm-4 wed')\n    // 3 to 4pm on wednesday\n    m = date.match('#Cardinal to #Time on? #Date')\n    tagTimeRange(m, '3-4pm wed')\n    // 3 to 4 on wednesday\n    m = date.match('#Cardinal to #Cardinal on? (#WeekDay|#Month #Value)')\n    tagTimeRange(m, '3-4 wed')\n    // 3 to 4 pm\n    // m = date.match('^#Cardinal to #Time')\n    // tagTimeRange(m, '3 to 4pm')\n  }\n  return doc\n}\nexport default timeTagger\n"
  },
  {
    "path": "plugins/dates/src/compute/02-timezone.js",
    "content": "// timezone abbreviations\n// (from spencermountain/timezone-soft)\nconst zones = [\n  'act',\n  'aft',\n  'akst',\n  'anat',\n  'art',\n  'azot',\n  'azt',\n  'bnt',\n  'bot',\n  'bt',\n  'cast',\n  'cat',\n  'cct',\n  'chast',\n  'chut',\n  'ckt',\n  'cvt',\n  'cxt',\n  'davt',\n  'eat',\n  'ect',\n  'fjt',\n  'fkst',\n  'fnt',\n  'gamt',\n  'get',\n  'gft',\n  'gilt',\n  'gyt',\n  'hast',\n  'hncu',\n  'hneg',\n  'hnnomx',\n  'hnog',\n  'hnpm',\n  'hnpmx',\n  'hntn',\n  'hovt',\n  'iot',\n  'irkt',\n  'jst',\n  'kgt',\n  'kost',\n  'lint',\n  'magt',\n  'mart',\n  'mawt',\n  'mmt',\n  'nct',\n  'nft',\n  'novt',\n  'npt',\n  'nrt',\n  'nut',\n  'nzst',\n  'omst',\n  'pet',\n  'pett',\n  'phot',\n  'phst',\n  'pont',\n  'pwt',\n  'ret',\n  'sakt',\n  'samt',\n  'sbt',\n  'sct',\n  'sret',\n  'srt',\n  'syot',\n  'taht',\n  'tft',\n  'tjt',\n  'tkt',\n  'tlt',\n  'tmt',\n  'tot',\n  'tvt',\n  'ulat',\n  'vut',\n  'wakt',\n  'wat',\n  'wet',\n  'wft',\n  'wit',\n  'wst',\n  'yekt',\n].reduce((h, str) => {\n  h[str] = true\n  return h\n}, {})\n\nconst tagTz = function (doc) {\n  // 4pm PST\n  const m = doc.match('#Time [#Acronym]', 0)\n  if (m.found) {\n    const str = m.text('reduced')\n    if (zones[str] === true) {\n      m.tag('Timezone', 'tz-abbr')\n    }\n  }\n}\nexport default tagTz\n"
  },
  {
    "path": "plugins/dates/src/compute/03-fixup.js",
    "content": "const here = 'fix-tagger'\n//\nconst fixUp = function (doc) {\n  //fixups\n  if (doc.has('#Date')) {\n    //first day by monday\n    const oops = doc.match('#Date+ by #Date+')\n    if (oops.found && !oops.has('^due')) {\n      oops.match('^#Date+').unTag('Date', 'by-monday')\n    }\n\n    const d = doc.match('#Date+')\n\n    //between june\n    if (d.has('^between') && !d.has('and .')) {\n      d.unTag('Date', here)\n    }\n    // log the hours\n    if (d.has('(minutes|seconds|weeks|hours|days|months)') && !d.has('#Value #Duration')) {\n      d.match('(minutes|seconds|weeks|hours|days|months)').unTag('Date', 'log-hours')\n    }\n    // about thanksgiving\n    if (d.has('about #Holiday')) {\n      d.match('about').unTag('#Date', 'about-thanksgiving')\n    }\n    // the day after next\n    d.match('#Date+').match('^the').unTag('Date')\n  }\n  return doc\n}\nexport default fixUp\n"
  },
  {
    "path": "plugins/dates/src/compute/index.js",
    "content": "import basic from './00-year.js'\nimport time from './01-time-range.js'\nimport timezone from './02-timezone.js'\nimport fixup from './03-fixup.js'\nimport matches from './matches.js'\nlet net = null\n\nconst doMatches = function (view) {\n  const { world } = view\n  net = net || world.methods.one.buildNet(matches, world)\n  view.sweep(net)\n}\n\n// run each of the taggers\nconst compute = function (view) {\n  view.cache()\n  doMatches(view)\n  doMatches(view) // do it twice\n  basic(view)\n  time(view)\n  timezone(view)\n  fixup(view)\n  view.uncache()\n\n  // sorry, one more\n  view.match('#Cardinal #Duration and? #DateShift').tag('DateShift', 'three days before')\n  view.match('#DateShift and #Cardinal #Duration').tag('DateShift', 'three days and two weeks')\n  view.match('#Time [(sharp|on the dot)]').tag('Time', '4pm sharp')\n  // view.match('in #Adverb #DateShift').tag('Date', 'in-around-2-weeks')\n\n  return view\n}\n\nexport default {\n  dates: compute\n}\n"
  },
  {
    "path": "plugins/dates/src/compute/matches.js",
    "content": "const preps = '(in|by|before|during|on|until|after|of|within|all)' //6\nconst thisNext = '(last|next|this|previous|current|upcoming|coming)' //2\nconst sections = '(start|end|middle|starting|ending|midpoint|beginning|mid)' //2\nconst seasons = '(spring|summer|winter|fall|autumn)'\nconst knownDate = '(yesterday|today|tomorrow)'\n\n// { match: '', tag: '', reason:'' },\nconst matches = [\n  // in the evening\n  { match: 'in the (night|evening|morning|afternoon|day|daytime)', tag: 'Time', reason: 'in-the-night' },\n  // 8 pm\n  { match: '(#Value|#Time) (am|pm)', tag: 'Time', reason: 'value-ampm' },\n  // 2012-06\n  // { match: '/^[0-9]{4}-[0-9]{2}$/', tag: 'Date', reason: '2012-06' },\n  // 30mins\n  // { match: '/^[0-9]+(min|sec|hr|d)s?$/', tag: 'Duration', reason: '30min' },\n  // misc weekday words\n  { match: '(tue|thu)', tag: 'WeekDay', reason: 'misc-weekday' },\n  //June 5-7th\n  { match: `#Month #Date+`, tag: 'Date', reason: 'correction-numberRange' },\n  //5th of March\n  { match: '#Value of #Month', tag: 'Date', unTag: 'Time', reason: 'value-of-month' },\n  //5 March\n  { match: '#Cardinal #Month', tag: 'Date', reason: 'cardinal-month' },\n  //march 5 to 7\n  { match: '#Month #Value (and|or|to)? #Value+', tag: 'Date', reason: 'value-to-value' },\n  //march the 12th\n  { match: '#Month the #Value', tag: 'Date', reason: 'month-the-value' },\n  // march to april\n  { match: '[(march|may)] to? #Date', group: 0, tag: 'Month', reason: 'march-to' },\n  // 'march'\n  { match: '^(march|may)$', tag: 'Month', reason: 'single-march' },\n  //March or June\n  { match: '#Month or #Month', tag: 'Date', reason: 'month-or-month' },\n  //june 7\n  { match: '(#WeekDay|#Month) #Value', ifNo: '#Money', tag: 'Date', reason: 'date-value' },\n  //7 june\n  { match: '#Value (#WeekDay|#Month)', ifNo: '#Money', tag: 'Date', reason: 'value-date' },\n  //may twenty five\n  // { match: '#TextValue #TextValue', if: '#Date', tag: '#Date', reason: 'textvalue-date' },\n  //two thursdays back\n  { match: '#Value (#WeekDay|#Duration) back', tag: '#Date', reason: '3-back' },\n  //for 4 months\n  { match: 'for #Value #Duration', tag: 'Date', reason: 'for-x-duration' },\n  //two days before\n  { match: '#Value #Duration (before|ago|hence|back)', tag: 'Date', reason: 'val-duration-past' },\n  //for four days\n  { match: `${preps}? #Value #Duration`, tag: 'Date', reason: 'value-duration' },\n  // 6-8 months\n  { match: 'in? #Value to #Value #Duration time?', tag: 'Date', reason: '6-to-8-years' },\n  //two years old\n  { match: '#Value #Duration old', unTag: 'Date', reason: 'val-years-old' },\n  //\n  { match: `${preps}? ${thisNext} ${seasons}`, tag: 'Date', reason: 'thisNext-season' },\n  //\n  { match: `the? ${sections} of ${seasons}`, tag: 'Date', reason: 'section-season' },\n  //\n  { match: `${seasons} ${preps}? #Cardinal`, tag: 'Date', reason: 'season-year' },\n  //june the 5th\n  { match: '#Date the? #Ordinal', tag: 'Date', reason: 'correction' },\n  //last month\n  { match: `${thisNext} #Date`, tag: 'Date', reason: 'thisNext-date' },\n  //by 5 March\n  { match: 'due? (by|before|after|until) #Date', tag: 'Date', reason: 'by' },\n  //next feb\n  { match: '(last|next|this|previous|current|upcoming|coming|the) #Date', tag: 'Date', reason: 'next-feb' },\n  //start of june\n  { match: `#Preposition? the? ${sections} of #Date`, tag: 'Date', reason: 'section-of' },\n  //fifth week in 1998\n  { match: '#Ordinal #Duration in #Date', tag: 'Date', reason: 'duration-in' },\n  //early in june\n  { match: '(early|late) (at|in)? the? #Date', tag: 'Time', reason: 'early-evening' },\n  //tomorrow before 3\n  { match: '#Date [(by|before|after|at|@|about) #Cardinal]', group: 0, tag: 'Time', reason: 'date-before-Cardinal' },\n  //feb to june\n  { match: '#Date (#Preposition|to) #Date', ifNo: '#Duration', tag: 'Date', reason: 'date-prep-date' },\n  //by 6pm\n  { match: '(by|before|after|at|@|about) #Time', tag: 'Time', reason: 'preposition-time' },\n  // in 20mins\n  { match: '(in|after) /^[0-9]+(min|sec|wk)s?/', tag: 'Date', reason: 'shift-units' },\n  //tuesday night\n  { match: '#Date [(now|night|sometime)]', group: 0, tag: 'Time', reason: 'date-now' },\n  // 4 days from now\n  { match: '(from|starting|until|by) now', tag: 'Date', reason: 'for-now' },\n  // every night\n  { match: '(each|every) night', tag: 'Date', reason: 'for-now' },\n  //saturday am\n  { match: '#Date [(am|pm)]', group: 0, tag: 'Time', reason: 'date-am' },\n  // mid-august\n  { match: `[${sections}] #Date`, group: 0, tag: 'Date', reason: 'mid-sept' },\n\n  //june 5 to 7th\n  { match: '#Month #Value to #Value of? #Year?', tag: 'Date', reason: 'june 5 to 7th' },\n  //5 to 7th june\n  { match: '#Value to #Value of? #Month #Year?', tag: 'Date', reason: '5 to 7th june' },\n  //third week of may\n  { match: '#Value #Duration of #Date', tag: 'Date', reason: 'third week of may' },\n  //two days after\n  { match: '#Value+ #Duration (after|before|into|later|afterwards|ago)?', tag: 'Date', reason: 'two days after' },\n  //two days\n  { match: '#Value #Date', tag: 'Date', reason: 'two days' },\n  //june 5th\n  { match: '#Date #Value', tag: 'Date', reason: 'june 5th' },\n  //tuesday at 5\n  { match: '#Date #Preposition #Value', tag: 'Date', reason: 'tuesday at 5' },\n  //tomorrow before 3\n  { match: '#Date (after|before|during|on|in) #Value', tag: 'Date', reason: 'tomorrow before 3' },\n  //a year and a half\n  { match: '#Value (year|month|week|day) and a half', tag: 'Date', reason: 'a year and a half' },\n  //5 and a half years\n  { match: '#Value and a half (years|months|weeks|days)', tag: 'Date', reason: '5 and a half years' },\n  //on the fifth\n  { match: 'on the #Ordinal', tag: 'Date', reason: 'on the fifth' },\n  // 'jan 5 or 8'\n  { match: '#Month #Value+ (and|or) #Value', tag: 'Date', reason: 'date-or-date' },\n  // 5 or 8 of jan\n  { match: '#Value+ (and|or) #Value of #Month ', tag: 'Date', reason: 'date-and-date' },\n\n  { match: '(spring|summer|winter|fall|autumn|springtime|wintertime|summertime)', tag: 'Season', reason: 'date-tag1' },\n  { match: '(q1|q2|q3|q4)', tag: 'FinancialQuarter', reason: 'date-tag2' },\n  { match: '(this|next|last|current) quarter', tag: 'FinancialQuarter', reason: 'date-tag3' },\n  { match: '(this|next|last|current) season', tag: 'Season', reason: 'date-tag4' },\n  //friday to sunday\n  { match: '#Date #Preposition #Date', tag: 'Date', reason: 'friday to sunday' },\n  //once a day..\n  { match: '(once|twice) (a|an|each) #Date', tag: 'Date', reason: 'once a day' },\n  //a year after..\n  { match: 'a #Duration', tag: 'Date', reason: 'a year' },\n  //between x and y\n  { match: '(between|from) #Date', tag: 'Date', reason: 'between x and y' },\n  { match: '(to|until|upto) #Date', tag: 'Date', reason: 'between x and y2' },\n  { match: 'between #Date+ and #Date+', tag: 'Date', reason: 'between x and y3' },\n  { match: '#Month and #Month #Year', tag: 'Date', reason: 'x and y4' },\n  //day after next\n  { match: 'the? #Date after next one?', tag: 'Date', reason: 'day after next' },\n  //approximately...\n  { match: '(about|approx|approximately|around) #Date', tag: 'Date', reason: 'approximately june' },\n\n  // until june\n  {\n    match: '(by|until|on|in|at|during|over|every|each|due) the? #Date',\n    ifNo: '#PhrasalVerb',\n    tag: 'Date',\n    reason: 'until june',\n  },\n  // until last june\n  {\n    match: '(by|until|after|before|during|on|in|following|since) (next|this|last)? #Date',\n    ifNo: '#PhrasalVerb',\n    tag: 'Date',\n    reason: 'until last june',\n  },\n\n  //next september\n  {\n    match: 'this? (last|next|past|this|previous|current|upcoming|coming|the) #Date',\n    tag: 'Date',\n    reason: 'next september',\n  },\n  //starting this june\n  { match: '(starting|beginning|ending) #Date', tag: 'Date', reason: 'starting this june' },\n  //start of june\n  { match: 'the? (start|end|middle|beginning) of (last|next|this|the) #Date', tag: 'Date', reason: 'start of june' },\n  //this coming june\n  { match: '(the|this) #Date', tag: 'Date', reason: 'this coming june' },\n  //january up to june\n  { match: '#Date up to #Date', tag: 'Date', reason: 'january up to june' },\n\n  // 2 oclock\n  { match: '#Cardinal oclock', tag: 'Time', reason: '2 oclock' },\n  // // 13h30\n  // { match: '/^[0-9]{2}h[0-9]{2}$/', tag: 'Time', reason: '13h30' },\n  // // 03/02\n  // { match: '/^[0-9]{2}/[0-9]{2}/', tag: 'Date', unTag: 'Value', reason: '03/02' },\n  // 3 in the morning\n  { match: '#Value (in|at) the? (morning|evening|night|nighttime)', tag: 'Time', reason: '3 in the morning' },\n  // ten to seven\n  {\n    match: '(5|10|15|20|five|ten|fifteen|quarter|twenty|half) (after|past) #Cardinal',\n    tag: 'Time',\n    reason: 'ten to seven',\n  }, //add check for 1 to 1 etc.\n  // at 10 past\n  {\n    match: '(at|by|before) (5|10|15|20|five|ten|fifteen|twenty|quarter|half) (after|past|to)',\n    tag: 'Time',\n    reason: 'at-20-past',\n  },\n  // iso  (2020-03-02T00:00:00.000Z)\n  // { match: '/^[0-9]{4}[:-][0-9]{2}[:-][0-9]{2}T[0-9]/', tag: 'Time', reason: 'iso-time-tag' },\n  // tuesday at 4\n  { match: '#Date [at #Cardinal]', group: 0, ifNo: '#Year', tag: 'Time', reason: ' tuesday at 4' },\n  // half an hour\n  { match: 'half an (hour|minute|second)', tag: 'Date', reason: 'half an hour' },\n  // in eastern time\n  { match: '(in|for|by|near|at) #Timezone', tag: 'Date', reason: 'in eastern time' },\n  // 3pm to 4pm\n  { match: '#Time to #Time', tag: 'Date', reason: '3pm to 4pm' },\n  // 4pm sharp\n  { match: '#Time [(sharp|on the dot)]', group: 0, tag: 'Time', reason: '4pm sharp' },\n\n  // around four thirty\n  {\n    match: '(at|around|near|#Date) [#Cardinal (thirty|fifteen) (am|pm)?]',\n    group: 0,\n    tag: 'Time',\n    reason: 'around four thirty',\n  },\n  // four thirty am\n  { match: '#Cardinal (thirty|fifteen) (am|pm)', tag: 'Time', reason: 'four thirty am' },\n  // four thirty tomorrow\n  { match: '[#Cardinal (thirty|fifteen)] #Date', group: 0, tag: 'Time', reason: 'four thirty tomorrow' },\n  //anytime around 3\n  { match: '(anytime|sometime) (before|after|near) [#Cardinal]', group: 0, tag: 'Time', reason: 'antime-after-3' },\n\n  //'two days before'/ 'nine weeks frow now'\n  {\n    match: '(#Cardinal|a|an) #Duration (before|after|ago|from|hence|back)',\n    tag: 'DateShift',\n    reason: 'nine weeks frow now',\n  },\n  // in two weeks\n  { match: 'in (around|about|maybe|perhaps)? #Cardinal #Duration', tag: 'DateShift', reason: 'in two weeks' },\n  { match: 'in (a|an) #Duration', tag: 'DateShift', reason: 'in a week' },\n  // an hour from now\n  { match: '[(a|an) #Duration from] #Date', group: 0, tag: 'DateShift', reason: 'an hour from now' },\n  // a month ago\n  { match: '(a|an) #Duration ago', tag: 'DateShift', reason: 'a month ago' },\n  // in half an hour\n  { match: 'in half (a|an) #Duration', tag: 'DateShift', reason: 'in half an hour' },\n  // in a few weeks\n  { match: 'in a (few|couple) of? #Duration', tag: 'DateShift', reason: 'in a few weeks' },\n  //two weeks and three days before\n  // { match: '#Cardinal #Duration and? #DateShift', tag: 'DateShift', reason: 'three days before' },\n  // { match: '#DateShift and #Cardinal #Duration', tag: 'DateShift', reason: 'date-shift' },\n  // 'day after tomorrow'\n  { match: '[#Duration (after|before)] #Date', group: 0, tag: 'DateShift', reason: 'day after tomorrow' },\n\n  // july 3rd and 4th\n  { match: '#Month #Ordinal and #Ordinal', tag: 'Date', reason: 'ord-and-ord' },\n  // every other week\n  { match: 'every other #Duration', tag: 'Date', reason: 'every-other' },\n  // every weekend\n  { match: '(every|any|each|a) (day|weekday|week day|weekend|weekend day)', tag: 'Date', reason: 'any-weekday' },\n  // any-wednesday\n  { match: '(every|any|each|a) (#WeekDay)', tag: 'Date', reason: 'any-wednesday' },\n  // any week\n  { match: '(every|any|each|a) (#Duration)', tag: 'Date', reason: 'any-week' },\n  // wed nov\n  { match: '[(wed|sat)] (#Month|#Year|on|between|during|from)', group: 0, tag: 'WeekDay', reason: 'wed' },\n  //'spa day'\n  { match: '^day$', unTag: 'Date', reason: 'spa-day' },\n  // tomorrow's meeting\n  { match: '(in|of|by|for)? (#Possessive && #Date)', unTag: 'Date', reason: 'tomorrows meeting' },\n  //yesterday 7\n  { match: `${knownDate} [#Value]$`, unTag: 'Date', group: 0, reason: 'yesterday-7' },\n  //7 yesterday\n  { match: `^[#Value] ${knownDate}$`, group: 0, unTag: 'Date', reason: '7 yesterday' },\n  //friday yesterday\n  // { match: `#WeekDay+ ${knownDate}$`, unTag: 'Date').lastTerm(, tag:'Date',  reason: 'fri-yesterday'},\n  //tomorrow on 5\n  { match: `on #Cardinal$`, unTag: 'Date', reason: 'on 5' },\n  //this tomorrow\n  { match: `[this] tomorrow`, group: 0, unTag: 'Date', reason: 'this-tomorrow' },\n  //q2 2019\n  { match: `(q1|q2|q3|q4) #Year`, tag: 'Date', reason: 'q2 2016' },\n  //5 next week\n  { match: `^[#Value] (this|next|last)`, group: 0, unTag: 'Date', reason: '4 next' },\n  //this month 7\n  { match: `(last|this|next) #Duration [#Value]`, group: 0, unTag: 'Date', reason: 'this month 7' },\n  //7 this month\n  { match: `[!#Month] #Value (last|this|next) #Date`, group: 0, unTag: 'Date', reason: '7 this month' },\n  // over the years\n  { match: '(in|over) the #Duration #Date+?', unTag: 'Date', reason: 'over-the-duration' },\n  // second quarter of 2020\n  { match: '#Ordinal quarter of? #Year', unTag: 'Fraction' },\n  // a month from now\n  { match: '(from|by|before) now', unTag: 'Time', tag: 'Date' },\n  // 18th next month\n  { match: '#Value of? (this|next|last) #Date', tag: 'Date' },\n  // first half of march\n  { match: '(first|initial|second|latter) half of #Month', tag: 'Date' },\n]\nexport default matches\n"
  },
  {
    "path": "plugins/dates/src/debug.js",
    "content": "/* eslint-disable no-console */\nimport spacetime from 'spacetime'\n\nconst fmt = iso => (iso ? spacetime(iso).format('{nice-day} {year}') : '-')\n\n// https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color\nconst reset = '\\x1b[0m'\n\n//cheaper than requiring chalk\nconst cli = {\n  magenta: str => '\\x1b[35m' + str + reset,\n  cyan: str => '\\x1b[36m' + str + reset,\n  yellow: str => '\\x1b[33m' + str + reset,\n  dim: str => '\\x1b[2m' + str + reset,\n  i: str => '\\x1b[3m' + str + reset,\n}\n\nconst debug = function (view) {\n  view.dates().forEach(m => {\n    const res = m.dates().get()[0]\n\n    console.log('\\n────────')\n    m.debug('highlight')\n\n    let msg = ''\n    if (res && res.start) {\n      msg = '   ' + cli.magenta(fmt(res.start))\n    }\n    if (res && res.end) {\n      msg += cli.dim('   →   ') + cli.cyan(fmt(res.end))\n    }\n    console.log(msg + '\\n')\n  })\n}\nexport default debug\n"
  },
  {
    "path": "plugins/dates/src/model/regex.js",
    "content": "export default [\n  // 30sec\n  [/^[0-9]+(min|sec|hr|d)s?$/i, 'Duration', '30min'],\n  // 2012-06\n  [/^[0-9]{4}-[0-9]{2}$/, 'Date', '2012-06'],\n  // 13h30\n  [/^[0-9]{2}h[0-9]{2}$/i, 'Time', '13h30'],\n  // @4:30\n  [/^@[0-9]+:[0-9]{2}$/, 'Time', '@5:30'],\n  // @4pm\n  [/^@[1-9]+(am|pm)$/, 'Time', '@5pm'],\n  // 03/02\n  [/^(?:0[1-9]|[12]\\d|3[01])\\/(?:0[1-9]|[12]\\d|3[01])$/, 'Date', '03/02'],\n  // iso-time\n  // [/^[0-9]{4}[:-][0-9]{2}[:-][0-9]{2}T[0-9]/i, 'Time', 'iso-time-tag']\n\n]\n"
  },
  {
    "path": "plugins/dates/src/model/tags.js",
    "content": "export default {\n  FinancialQuarter: {\n    is: 'Date',\n    not: ['Fraction'],\n  },\n  // 'summer'\n  Season: {\n    is: 'Date',\n  },\n  // '1982'\n  Year: {\n    is: 'Date',\n    not: ['RomanNumeral'],\n  },\n  // 'easter'\n  Holiday: {\n    is: 'Date',\n    also: 'Noun',\n  },\n  // 'two weeks before'\n  DateShift: {\n    is: 'Date',\n    not: ['Timezone', 'Holiday'],\n  },\n}\n"
  },
  {
    "path": "plugins/dates/src/model/words/dates.js",
    "content": "export default [\n  'weekday',\n\n  'summer',\n  'winter',\n  'autumn',\n\n  // 'some day',\n  // 'one day',\n  'all day',\n  // 'some point',\n\n  'eod',\n  'eom',\n  'eoy',\n  'standard time',\n  'daylight time',\n  'tommorrow',\n]\n"
  },
  {
    "path": "plugins/dates/src/model/words/durations.js",
    "content": "export default [\n  'centuries',\n  'century',\n  'day',\n  'days',\n  'decade',\n  'decades',\n  'hour',\n  'hours',\n  'hr',\n  'hrs',\n  'millisecond',\n  'milliseconds',\n  'minute',\n  'minutes',\n  'min',\n  'mins',\n  'month',\n  'months',\n  'seconds',\n  'sec',\n  'secs',\n  'week end',\n  'week ends',\n  'weekend',\n  'weekends',\n  'week',\n  'weeks',\n  'wk',\n  'wks',\n  'year',\n  'years',\n  'yr',\n  'yrs',\n  'quarter',\n  // 'quarters',\n  'qtr',\n  'qtrs',\n  'season',\n  'seasons',\n]\n"
  },
  {
    "path": "plugins/dates/src/model/words/holidays.js",
    "content": "export default [\n  'all hallows eve',\n  'all saints day',\n  'all sts day',\n  'april fools',\n  'armistice day',\n  'australia day',\n  'bastille day',\n  'boxing day',\n  'canada day',\n  'christmas eve',\n  'christmas',\n  'cinco de mayo',\n  'day of the dead',\n  'dia de muertos',\n  'dieciseis de septiembre',\n  'emancipation day',\n  'grito de dolores',\n  'groundhog day',\n  'halloween',\n  'harvey milk day',\n  'inauguration day',\n  'independence day',\n  'independents day',\n  'juneteenth',\n  'labour day',\n  'national freedom day',\n  'national nurses day',\n  'new years eve',\n  'new years',\n  'purple heart day',\n  'rememberance day',\n  'rosa parks day',\n  'saint andrews day',\n  'saint patricks day',\n  'saint stephens day',\n  'saint valentines day',\n  'st andrews day',\n  'st patricks day',\n  'st stephens day',\n  'st valentines day ',\n  'valentines day',\n  'valentines',\n  'veterans day',\n  'victoria day',\n  'womens equality day',\n  'xmas',\n  // Fixed religious and cultural holidays\n  // Catholic + Christian\n  'epiphany',\n  'orthodox christmas day',\n  'orthodox new year',\n  'assumption of mary',\n  'all souls day',\n  'feast of the immaculate conception',\n  'feast of our lady of guadalupe',\n\n  // Kwanzaa\n  'kwanzaa',\n  // Pagan / metal 🤘\n  'imbolc',\n  'beltaine',\n  'lughnassadh',\n  'samhain',\n  'martin luther king day',\n  'mlk day',\n  'presidents day',\n  'mardi gras',\n  'tax day',\n  'commonwealth day',\n  'mothers day',\n  'memorial day',\n  'fathers day',\n  'columbus day',\n  'indigenous peoples day',\n  'canadian thanksgiving',\n  'election day',\n  'thanksgiving',\n  't-day',\n  'turkey day',\n  'black friday',\n  'cyber monday',\n  // Astronomical religious and cultural holidays\n  'ash wednesday',\n  'palm sunday',\n  'maundy thursday',\n  'good friday',\n  'holy saturday',\n  'easter',\n  'easter sunday',\n  'easter monday',\n  'orthodox good friday',\n  'orthodox holy saturday',\n  'orthodox easter',\n  'orthodox easter monday',\n  'ascension day',\n  'pentecost',\n  'whitsunday',\n  'whit sunday',\n  'whit monday',\n  'trinity sunday',\n  'corpus christi',\n  'advent',\n  // Jewish\n  'tu bishvat',\n  'tu bshevat',\n  'purim',\n  'passover',\n  'yom hashoah',\n  'lag baomer',\n  'shavuot',\n  'tisha bav',\n  'rosh hashana',\n  'yom kippur',\n  'sukkot',\n  'shmini atzeret',\n  'simchat torah',\n  'chanukah',\n  'hanukkah',\n  // Muslim\n  'isra and miraj',\n  'lailat al-qadr',\n  'eid al-fitr',\n  'id al-Fitr',\n  'eid ul-Fitr',\n  'ramadan',\n  'eid al-adha',\n  'muharram',\n  'the prophets birthday',\n  'ostara',\n  'march equinox',\n  'vernal equinox',\n  'litha',\n  'june solistice',\n  'summer solistice',\n  'mabon',\n  'september equinox',\n  'fall equinox',\n  'autumnal equinox',\n  'yule',\n  'december solstice',\n  'winter solstice',\n  // Additional important holidays\n  'chinese new year',\n  'diwali',\n]\n"
  },
  {
    "path": "plugins/dates/src/model/words/index.js",
    "content": "import timezones from './timezones.js'\nimport dates from './dates.js'\nimport durations from './durations.js'\nimport holidays from './holidays.js'\nimport times from './times.js'\n\nconst lex = {\n  'a couple': 'Value',\n  thur: 'WeekDay',\n  thurs: 'WeekDay',\n}\nconst add = function (arr, tag) {\n  arr.forEach(str => {\n    lex[str] = tag\n  })\n}\nadd(Object.keys(timezones), 'Timezone')\nadd(dates, 'Date')\nadd(durations, 'Duration')\nadd(holidays, 'Holiday')\nadd(times, 'Time')\n// console.log(lex['april fools'])\nexport default lex\n"
  },
  {
    "path": "plugins/dates/src/model/words/times.js",
    "content": "export default [\n  'noon',\n  'midnight',\n  'morning',\n  'tonight',\n  'evening',\n  'afternoon',\n  'breakfast time',\n  'lunchtime',\n  'dinnertime',\n  'midday',\n  'eod',\n  'oclock',\n  'oclock',\n  'at night',\n  // 'now',\n  // 'night',\n  // 'sometime',\n  // 'all day',\n]\n"
  },
  {
    "path": "plugins/dates/src/model/words/timezones.js",
    "content": "import spacetime from 'spacetime'\n\nconst america = 'America/'\nconst asia = 'Asia/'\nconst europe = 'Europe/'\nconst africa = 'Africa/'\nconst aus = 'Australia/'\nconst pac = 'Pacific/'\n\nconst informal = {\n  //europe\n  'british summer time': europe + 'London',\n  bst: europe + 'London',\n  'british time': europe + 'London',\n  'britain time': europe + 'London',\n  'irish summer time': europe + 'Dublin',\n  'irish time': europe + 'Dublin',\n  'central european time': europe + 'Berlin',\n  cet: europe + 'Berlin',\n  'central european summer time': europe + 'Berlin',\n  cest: europe + 'Berlin',\n  'central europe': europe + 'Berlin',\n  'eastern european time': europe + 'Riga',\n  eet: europe + 'Riga',\n  'eastern european summer time': europe + 'Riga',\n  eest: europe + 'Riga',\n  'eastern europe time': europe + 'Riga',\n  'western european time': europe + 'Lisbon',\n  'western european summer time': europe + 'Lisbon',\n  'turkey standard time': europe + 'Istanbul',\n  'turkish time': europe + 'Istanbul',\n\n  utc: africa + 'Freetown',\n  'greenwich standard time': africa + 'Freetown',\n  gmt: africa + 'Freetown',\n\n  //africa\n  'east africa time': africa + 'Nairobi',\n  'east african time': africa + 'Nairobi',\n  'eastern africa time': africa + 'Nairobi',\n  'central africa time': africa + 'Khartoum',\n  'central african time': africa + 'Khartoum',\n  'south africa standard time': africa + 'Johannesburg',\n  'west africa standard time': africa + 'Lagos',\n  'western africa time': africa + 'Lagos',\n  'west african time': africa + 'Lagos',\n\n  // australia\n  'australian central standard time': aus + 'Adelaide',\n  acst: aus + 'Adelaide',\n  'australian central daylight time': aus + 'Adelaide',\n  acdt: aus + 'Adelaide',\n  'australian eastern standard time': aus + 'Brisbane',\n  aest: aus + 'Brisbane',\n  'australian eastern daylight time': aus + 'Brisbane',\n  aedt: aus + 'Brisbane',\n  'australian western standard time': aus + 'Perth',\n  awst: aus + 'Perth',\n  'australian western daylight time': aus + 'Perth',\n  awdt: aus + 'Perth',\n  'australian central western standard time': aus + 'Eucla',\n  acwst: aus + 'Eucla',\n  'lord howe standard time': aus + 'Lord_Howe',\n  lhst: aus + 'Lord_Howe',\n  'lord howe daylight time': aus + 'Lord_Howe',\n  lhdt: aus + 'Lord_Howe',\n  'russian standard time': europe + 'Moscow',\n  msk: europe + 'Moscow',\n\n  //america\n  'central standard time': america + 'Chicago',\n  'central time': america + 'Chicago',\n  cst: america + 'Havana',\n  'central daylight time': america + 'Chicago',\n  cdt: america + 'Havana',\n  'mountain standard time': america + 'Denver',\n  'mountain time': america + 'Denver',\n  mst: america + 'Denver',\n  'mountain daylight time': america + 'Denver',\n  mdt: america + 'Denver',\n  'atlantic standard time': america + 'Halifax',\n  'atlantic time': america + 'Halifax',\n  ast: asia + 'Baghdad',\n  'atlantic daylight time': america + 'Halifax',\n  adt: america + 'Halifax',\n  'eastern standard time': america + 'New_York',\n  'eastern time': america + 'New_York',\n  est: america + 'New_York',\n  'eastern daylight time': america + 'New_York',\n  edt: america + 'New_York',\n  'pacific time': america + 'Los_Angeles',\n  'pacific standard time': america + 'Los_Angeles',\n  pst: america + 'Los_Angeles',\n  'pacific daylight time': america + 'Los_Angeles',\n  pdt: america + 'Los_Angeles',\n  'alaskan standard time': america + 'Anchorage',\n  'alaskan time': america + 'Anchorage',\n  ahst: america + 'Anchorage',\n  'alaskan daylight time': america + 'Anchorage',\n  ahdt: america + 'Anchorage',\n  'hawaiian standard time': pac + 'Honolulu',\n  'hawaiian time': pac + 'Honolulu',\n  hst: pac + 'Honolulu',\n  'aleutian time': pac + 'Honolulu',\n  'hawaii time': pac + 'Honolulu',\n  'newfoundland standard time': america + 'St_Johns',\n  'newfoundland time': america + 'St_Johns',\n  'newfoundland daylight time': america + 'St_Johns',\n  'brazil time': america + 'Sao_Paulo',\n  'brazilian time': america + 'Sao_Paulo',\n  'argentina time': america + 'Buenos_Aires',\n  'argentinian time': america + 'Buenos_Aires',\n  'amazon time': america + 'Manaus',\n  'amazonian time': america + 'Manaus',\n  'easter island standard time': 'Chile/Easterisland',\n  'easter island summer time': 'Chile/Easterisland',\n  easst: 'Chile/Easterisland',\n  'venezuelan standard time': america + 'Caracas',\n  'venezuelan time': america + 'Caracas',\n  'venezuela time': america + 'Caracas',\n  'paraguay time': america + 'Asuncion',\n  'paraguay summer time': america + 'Asuncion',\n  'cuba standard time': america + 'Havana',\n  'cuba time': america + 'Havana',\n  'cuba daylight time': america + 'Havana',\n  'cuban time': america + 'Havana',\n  'bolivia time': america + 'La_Paz',\n  'bolivian time': america + 'La_Paz',\n  'colombia time': america + 'Bogota',\n  'colombian time': america + 'Bogota',\n  'acre time': america + 'Eirunepe',\n  'peru time': america + 'Lima',\n  'chile standard time': america + 'Punta_Arenas',\n  'chile time': america + 'Punta_Arenas',\n  clst: america + 'Punta_Arenas',\n  'chile summer time': america + 'Punta_Arenas',\n  cldt: america + 'Punta_Arenas',\n  'uruguay time': america + 'Montevideo',\n  uyt: america + 'Montevideo',\n\n  //asia\n  'arabic standard time': asia + 'Baghdad',\n  'iran standard time': asia + 'Tehran',\n  'iran time': asia + 'Tehran',\n  'iran daylight time': asia + 'Tehran',\n  'pakistan standard time': asia + 'Karachi',\n  'pakistan time': asia + 'Karachi',\n  'india standard time': asia + 'Kolkata',\n  'indian time': asia + 'Kolkata',\n  'indochina time': asia + 'Bangkok',\n  'china standard time': asia + 'Shanghai',\n  'alma-ata time': asia + 'Almaty',\n  'oral time': asia + 'Oral',\n  'orat time': asia + 'Oral',\n  'yakutsk time': asia + 'Yakutsk',\n  yakt: asia + 'Yakutsk',\n  'gulf standard time': asia + 'Dubai',\n  'gulf time': asia + 'Dubai',\n  'hong kong time': asia + 'Hong_Kong',\n  'western indonesian time': asia + 'Jakarta',\n  'indonesia time': asia + 'Jakarta',\n  'central indonesian time': asia + 'Makassar',\n  'israel daylight time': asia + 'Jerusalem',\n  'israel standard time': asia + 'Jerusalem',\n  'israel time': asia + 'Jerusalem',\n  'krasnoyarsk time': asia + 'Krasnoyarsk',\n  'malaysia time': asia + 'Kuala_Lumpur',\n  'singapore time': asia + 'Singapore',\n  'korea standard time': asia + 'Seoul',\n  'korea time': asia + 'Seoul',\n  kst: asia + 'Seoul',\n  'korean time': asia + 'Seoul',\n  'uzbekistan time': asia + 'Samarkand',\n  'vladivostok time': asia + 'Vladivostok',\n\n  //indian\n  'maldives time': 'Indian/Maldives',\n  'mauritius time': 'Indian/Mauritius',\n\n  'marshall islands time': pac + 'Kwajalein',\n  'samoa standard time': pac + 'Midway',\n  'somoan time': pac + 'Midway',\n  'chamorro standard time': pac + 'Guam',\n  'papua new guinea time': pac + 'Bougainville',\n}\n\n//add the official iana zonefile names\nconst iana = spacetime().timezones\nconst formal = Object.keys(iana).reduce((h, k) => {\n  h[k] = k\n  return h\n}, {})\nexport default Object.assign({}, informal, formal)\n"
  },
  {
    "path": "plugins/dates/src/plugin.js",
    "content": "import api from './api/index.js'\nimport compute from './compute/index.js'\nimport tags from './model/tags.js'\nimport words from './model/words/index.js'\nimport regex from './model/regex.js'\nimport version from './_version.js'\nimport debug from './debug.js'\n\nexport default {\n  tags,\n  words,\n  compute,\n  api,\n  mutate: world => {\n    // add our regexes\n    world.model.two.regexText = world.model.two.regexText || []\n    world.model.two.regexText = world.model.two.regexText.concat(regex)\n    // add our debug('dates') method\n    world.methods.one.debug = world.methods.one.debug || {}\n    world.methods.one.debug.dates = debug\n  },\n  hooks: ['dates'],\n  version,\n}\n"
  },
  {
    "path": "plugins/dates/tests/_lib.js",
    "content": "import build from '../../../builds/three/compromise-three.mjs'\nimport src from '../../../src/three.js'\nimport plgBuild from '../builds/compromise-dates.mjs'\nimport plg from '../src/plugin.js'\nlet nlp;\n\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==')  // eslint-disable-line\n  nlp = build\n  nlp.plugin(plgBuild)\n} else {\n  nlp = src\n  nlp.plugin(plg)\n}\nexport default nlp\n"
  },
  {
    "path": "plugins/dates/tests/ambig-month.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nimport spacetime from 'spacetime'\n\nconst fmt = (iso) => (iso ? spacetime(iso).format('{iso-short}') : '-')\n\ntest('this month', function (t) {\n  const arr = [\n    [2020, 11, 1],\n    [2020, 11, 8],\n    [2020, 11, 11],\n    [2020, 11, 20],\n    [2020, 11, 25],\n    [2020, 11, 31],\n    [2020, 11, 31],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp('this month')\n    const found = doc.dates({ today: a }).json()[0] || {}\n    t.equal(fmt((found.dates || {}).start), '2020-12-01', 'this-start')\n    t.equal(fmt((found.dates || {}).end), '2020-12-31', 'this-end')\n  })\n  t.end()\n})\n\ntest('next month', function (t) {\n  const arr = [\n    [2020, 11, 1],\n    [2020, 11, 8],\n    [2020, 11, 11],\n    [2020, 11, 20],\n    [2020, 11, 25],\n    [2020, 11, 31],\n    [2020, 11, 31],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp('next month')\n    const found = doc.dates({ today: a }).json()[0] || {}\n    t.equal(fmt((found.dates || {}).start), '2021-01-01', 'next-start')\n    t.equal(fmt((found.dates || {}).end), '2021-01-31', 'next-end')\n  })\n  t.end()\n})\n\ntest('last month', function (t) {\n  const arr = [\n    [2020, 11, 1],\n    [2020, 11, 8],\n    [2020, 11, 11],\n    [2020, 11, 20],\n    [2020, 11, 25],\n    [2020, 11, 31],\n    [2020, 11, 31],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp('last month')\n    const found = doc.dates({ today: a }).json()[0] || {}\n    t.equal(fmt((found.dates || {}).start), '2020-11-01', 'last-start')\n    t.equal(fmt((found.dates || {}).end), '2020-11-30', 'last-end')\n  })\n  t.end()\n})\n\ntest('this december', function (t) {\n  const arr = [\n    [2020, 1, 1],\n    [2020, 2, 8],\n    [2020, 3, 11],\n    [2020, 4, 20],\n    [2020, 5, 25],\n    [2020, 6, 28],\n    [2020, 7, 12],\n    [2020, 8, 12],\n    [2020, 9, 16],\n    [2020, 10, 1],\n    [2020, 11, 11],\n  ]\n  arr.forEach((a) => {\n    let doc = nlp('this december')\n    let found = doc.dates({ today: a }).json()[0] || {}\n    t.equal(fmt((found.dates || {}).start), '2020-12-01', 'this december')\n    t.equal(fmt((found.dates || {}).end), '2020-12-31', 'this december')\n\n    doc = nlp('next december')\n    found = doc.dates({ today: a }).json()[0] || {}\n    t.equal(fmt((found.dates || {}).start), '2021-12-01', 'next december')\n    t.equal(fmt((found.dates || {}).end), '2021-12-31', 'next december')\n\n    doc = nlp('last december')\n    found = doc.dates({ today: a }).json()[0] || {}\n    t.equal(fmt((found.dates || {}).start), '2019-12-01', 'last december')\n    t.equal(fmt((found.dates || {}).end), '2019-12-31', 'last december')\n  })\n  t.end()\n})\n\ntest('this september', function (t) {\n  const doc = nlp('this september')\n  let found = doc.dates({ today: [2019, 7, 4] }).json()[0] || {}\n  t.equal(fmt((found.dates || {}).start), '2019-09-01', 'this sept - before')\n\n  found = doc.dates({ today: [2019, 8, 4] }).json()[0] || {}\n  t.equal(fmt((found.dates || {}).start), '2019-09-01', 'this sept - during')\n\n  found = doc.dates({ today: [2019, 9, 4] }).json()[0] || {}\n  t.equal(fmt((found.dates || {}).start), '2020-09-01', 'this sept - after')\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/ambig-week.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nimport spacetime from 'spacetime'\n\nconst fmt = (iso) => (iso ? spacetime(iso).format('{iso-short}') : '-')\n\ntest('this week', function (t) {\n  const arr = [\n    [2020, 11, 7], //mon\n    [2020, 11, 8], //tues\n    [2020, 11, 9], //wed\n    [2020, 11, 10], //thurs\n    [2020, 11, 11], //fri\n    [2020, 11, 12], //sat\n    [2020, 11, 13], //sun\n  ]\n  arr.forEach((a) => {\n    const doc = nlp('this week')\n    const found = doc.dates({ today: a }).json()[0]\n    t.equal(fmt(found.dates.start), '2020-12-07', 'this-start')\n    t.equal(fmt(found.dates.end), '2020-12-13', 'this-end')\n  })\n  t.end()\n})\n\ntest('last week', function (t) {\n  const arr = [\n    [2020, 11, 7], //mon\n    [2020, 11, 8], //tues\n    [2020, 11, 9], //wed\n    [2020, 11, 10], //thurs\n    [2020, 11, 11], //fri\n    [2020, 11, 12], //sat\n    [2020, 11, 13], //sun\n  ]\n  arr.forEach((a) => {\n    const doc = nlp('last week')\n    const found = doc.dates({ today: a }).json()[0]\n    t.equal(fmt(found.dates.start), '2020-11-30', 'last-start')\n    t.equal(fmt(found.dates.end), '2020-12-06', 'last-end')\n  })\n  t.end()\n})\n\ntest('next week', function (t) {\n  const arr = [\n    [2020, 11, 7], //mon\n    [2020, 11, 8], //tues\n    [2020, 11, 9], //wed\n    [2020, 11, 10], //thurs\n    [2020, 11, 11], //fri\n    [2020, 11, 12], //sat\n    [2020, 11, 13], //sun\n  ]\n  arr.forEach((a) => {\n    const doc = nlp('next week')\n    const found = doc.dates({ today: a }).json()[0]\n    t.equal(fmt(found.dates.start), '2020-12-14', 'last-start')\n    t.equal(fmt(found.dates.end), '2020-12-20', 'last-end')\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/ambig-weekday.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nimport spacetime from 'spacetime'\n\nconst fmt = (iso) => (iso ? spacetime(iso).format('{iso-short}') : '-')\n\ntest('this monday', function (t) {\n  const arr = [\n    ['2020-12-7', '2020-12-07'], //mon (itself)\n    ['2020-12-8', '2020-12-14'], //tues\n    ['2020-12-9', '2020-12-14'], //wed\n    ['2020-12-10', '2020-12-14'], //thu\n    ['2020-12-11', '2020-12-14'], //fri\n    ['2020-12-12', '2020-12-14'], //sat\n    ['2020-12-13', '2020-12-14'], //sun\n  ]\n  arr.forEach((a) => {\n    const doc = nlp('this monday')\n    const found = doc.dates({ today: a[0] }).json()[0]\n    t.equal(fmt(found.dates.start), a[1], 'monday-start')\n    t.equal(fmt(found.dates.end), a[1], 'monday-end')\n  })\n  t.end()\n})\n\n// test('last monday', function (t) {\n//   let arr = [\n//     ['2020-12-7', '2020-11-30'], //mon (obvious)\n//     ['2020-12-8', '2020-11-30'], //tues\n//     ['2020-12-9', '2020-11-30'], //wed\n//     ['2020-12-10', '2020-11-30'], //thu\n//     ['2020-12-11', '2020-11-30'], //fri\n//     ['2020-12-12', '2020-11-30'], //sat\n//     ['2020-12-13', '2020-11-30'], //sun\n//   ]\n//   arr.forEach((a) => {\n//     let doc = nlp('last monday')\n//     let found = doc.dates({ today: a[0] }).json()[0]\n//     t.equal(fmt(found.date.start), a[1], 'last-monday-start')\n//     t.equal(fmt(found.date.end), a[1], 'last-monday-end')\n//   })\n//   t.end()\n// })\n"
  },
  {
    "path": "plugins/dates/tests/backlog/combo.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\n\nconst context = {\n  today: '2021-04-17', //saturday\n  timezone: 'Canada/Eastern',\n}\n\nconst arr = [\n  // independant dates\n  ['tomorrow, tuesday, wednesday', ['apr 18', 'apr 20', 'apr 21']],\n  ['mon, tuesday', ['apr 19', 'apr 20']],\n  ['mon, tuesday, wednesday', ['apr 19', 'apr 20', 'apr 21']],\n  ['jan 2 or jan 4', ['jan 2nd', 'jan 4th']],\n  ['jan 6 and jan 9', ['jan 6th', 'jan 9th']],\n  ['between jan 5 and jan 10', ['jan 5-10']],\n  ['feb 5 or next weekend', ['february 5', 'apr 24']],\n  ['next friday, this monday', ['fri 23', 'mon 19']],\n  ['jan or feb', ['jan 1', 'feb 1']],\n  ['january and in feb', ['jan 1', 'feb 1']],\n  ['during march or september', ['march 1', 'september 1']],\n  ['march, may, or june', ['march 1', 'may 1', 'june 1']],\n  [' may or june', ['may 1', 'june 1']],\n\n  // dependant date combos\n  ['march 3rd and 4th', ['mar 3', 'mar 4']],\n  ['feb 2 or third', ['feb 2nd', 'feb 3']],\n  ['february 5th, 6th or 7th', ['feb 5', 'feb 6', 'feb 7']],\n  ['february 5th, 6th and 7th', ['feb 5', 'feb 6', 'feb 7']],\n  ['sept or june 1998', ['sept 1 1998', 'june 1 1998']],\n  ['3, 4, or 5 of Feb 1998', ['feb 3 1998', 'feb 4 1998', 'feb 5 1998']],\n  ['3, 4, or 5 of February', ['feb 3', 'feb 4', 'feb 5']],\n  ['jan 22, 23, 28', ['jan 22', 'jan 23', 'jan 28']],\n  // ['jan 22, 23, 28 1998', ['jan 22 1998', 'jan 23 1998', 'jan 28 1998']],\n  // ['', ['', '', '']],\n]\n\ntest('multi-dates', function (t) {\n  arr.forEach((a) => {\n    const found = nlp(a[0]).dates(context).get()\n    t.equal(found.length, a[1].length, '[length] ' + a[0])\n    a[1].forEach((str, i) => {\n      const one = nlp(str).dates(context).get()[0]\n      t.equal((found[i] || {}).start, one.start, `[combo: ${str}] '${a[0]}'`)\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/backlog/duckling.ignore.js",
    "content": "// -- Copyright (c) 2016-present, Facebook, Inc.\n// -- All rights reserved.\n// https://github.com/facebook/duckling/edit/master/Duckling/Time/EN/Corpus.hs\n// This source code is licensed under the BSD-style license\nimport test from 'tape'\nimport spacetime from 'spacetime'\nimport nlp from '../_lib.js'\nconst isArray = function (arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\nconst fmt = (iso) => (iso ? spacetime(iso).format('iso-short') : '')\n\n // eslint-disable-next-line\nconst mk = function (y, m, d, h, sec, mil) {\n  if (isArray(y) && isArray(m)) {\n    return [mk(y) + mk(m)]\n  }\n  let s = spacetime.now().year(y)\n  if (m) {\n    s = s.month(m - 1)\n  }\n  if (d) {\n    s = s.date(d)\n  }\n  if (h) {\n    s = s.hour(h)\n  }\n  if (sec) {\n    s = s.second(sec)\n  }\n  if (mil) {\n    s = s.millisecond(mil)\n  }\n  return fmt(s)\n}\n\nconst arr = [\n  [mk([2013, 2, 15, 0, 0, 0]), ['2/15', 'on 2/15', '2 / 15', '2-15', '2 - 15']],\n  [mk([1974, 10, 31, 0, 0, 0]), ['10/31/1974', '10/31/74', '10-31-74', '10.31.1974', '31/Oct/1974', '31st Oct 1974']],\n  [mk([2013, 4, 25, 16, 0, 0]), ['4/25 at 4:00pm', '4/25 at 16h00', '4/25 at 16h']],\n  [\n    mk([2013, 11, 28, 0, 0, 0]),\n    [\n      'Thanksgiving Day',\n      'thanksgiving day',\n      'thanksgiving',\n      'thanksgiving 2013',\n      'this thanksgiving',\n      'next thanksgiving day',\n      'thanksgiving in 9 months',\n      'thanksgiving 9 months from now',\n    ],\n  ],\n  [\n    mk([2014, 11, 27, 0, 0, 0]),\n    ['Thanksgiving Day', 'thanksgiving of next year', 'thanksgiving in a year', 'thanksgiving 2014'],\n  ],\n  [\n    mk([2012, 11, 22, 0, 0, 0]),\n    [\n      'Thanksgiving Day',\n      'last thanksgiving',\n      'thanksgiving, 2012',\n      'thanksgiving 3 months ago',\n      'thanksgiving 1 year ago',\n    ],\n  ],\n  [mk([2016, 11, 24, 0, 0, 0]), ['Thanksgiving Day', 'thanksgiving 2016', 'thanksgiving in 3 years']],\n  [mk([2017, 11, 23, 0, 0, 0]), ['Thanksgiving Day', 'thanksgiving 2017']],\n  [mk([2013, 3, 8, 0, 0, 0]), ['3 fridays from now', 'three fridays from now']],\n  [mk([2013, 2, 12, 4, 30, 0]), ['now', 'right now', 'just now']],\n  [mk([2013, 2, 12, 0, 0, 0]), ['today', 'at this time']],\n  [mk([2013, 2, 1, 0, 0, 0]), ['2/2013']],\n  [mk([2014, 1, 1, 0, 0, 0]), ['in 2014']],\n  [mk([2013, 2, 11, 0, 0, 0]), ['yesterday']],\n  [mk([2013, 2, 13, 0, 0, 0]), ['tomorrow', 'tomorrows']],\n  [mk([2013, 2, 18, 0, 0, 0]), ['monday', 'mon.', 'this monday', 'Monday, Feb 18', 'Mon, February 18']],\n  [mk([2013, 2, 19, 0, 0, 0]), ['tuesday', 'Tuesday the 19th', 'Tuesday 19th']],\n  [mk([2013, 8, 15, 0, 0, 0]), ['Thu 15th']],\n  [mk([2013, 2, 14, 0, 0, 0]), ['thursday', 'thu', 'thu.']],\n  [mk([2013, 2, 15, 0, 0, 0]), ['friday', 'fri', 'fri.']],\n  [mk([2013, 2, 16, 0, 0, 0]), ['saturday', 'sat', 'sat.']],\n  [mk([2013, 2, 17, 0, 0, 0]), ['sunday', 'sun', 'sun.']],\n  [mk([2013, 3, 1, 0, 0, 0]), ['the 1st of march', 'first of march', 'the first of march', 'march first']],\n  [mk([2013, 3, 2, 0, 0, 0]), ['the 2nd of march', 'second of march', 'the second of march']],\n  [mk([2013, 3, 3, 0, 0, 0]), ['march 3', 'the third of march']],\n  [mk([2013, 3, 15, 0, 0, 0]), ['the ides of march']],\n  [\n    mk([2015, 3, 3, 0, 0, 0]),\n    ['march 3 2015', 'march 3rd 2015', 'march third 2015', '3/3/2015', '3/3/15', '2015-3-3', '2015-03-03'],\n  ],\n  [\n    mk([2013, 2, 15, 0, 0, 0]),\n    [\n      'on the 15th',\n      'the 15th of february',\n      '15 of february',\n      'february the 15th',\n      'february 15',\n      '15th february',\n      'February 15',\n    ],\n  ],\n  [mk([2013, 8, 8, 0, 0, 0]), ['Aug 8']],\n  [mk([2014, 3, 1, 0, 0, 0]), ['March in 1 year', 'March in a year']],\n  [mk([2014, 7, 18, 0, 0, 0]), ['Fri, Jul 18', 'Jul 18, Fri']],\n  [mk([2014, 10, 1, 0, 0, 0]), ['October 2014', '2014-10', '2014/10']],\n  [mk([2015, 4, 14, 0, 0, 0]), ['14april 2015', 'April 14, 2015', '14th April 15']],\n  [mk([2013, 2, 19, 0, 0, 0]), ['next tuesday', 'around next tuesday']],\n  [mk([2013, 2, 22, 0, 0, 0]), ['friday after next']],\n  [mk([2013, 3, 1, 0, 0, 0]), ['next March']],\n  [mk([2014, 3, 1, 0, 0, 0]), ['March after next']],\n  [mk([2013, 2, 10, 0, 0, 0]), ['Sunday, Feb 10']],\n  [mk([2013, 2, 13, 0, 0, 0]), ['Wed, Feb13']],\n  [mk([2013, 2, 11, 0, 0, 0]), ['this week', 'current week']],\n  [mk([2013, 2, 18, 0, 0, 0]), ['coming week']],\n  [mk([2013, 2, 4, 0, 0, 0]), ['last week', 'past week', 'previous week']],\n  [mk([2013, 2, 18, 0, 0, 0]), ['next week', 'the following week', 'around next week', 'upcoming week']],\n  [mk([2013, 1, 1, 0, 0, 0]), ['last month']],\n  [mk([2013, 3, 1, 0, 0, 0]), ['next month']],\n  [mk([2013, 3, 20, 0, 0, 0]), ['20 of next month', '20th of the next month', '20th, of next month']],\n  [mk([2013, 2, 20, 0, 0, 0]), ['20th of the current month', '20 of this month']],\n  [mk([2013, 1, 20, 0, 0, 0]), ['20th of the previous month']],\n  [mk([2013, 1, 1, 0, 0, 0]), ['this quarter', 'this qtr']],\n  [mk([2013, 4, 1, 0, 0, 0]), ['next quarter', 'next qtr']],\n  [mk([2013, 7, 1, 0, 0, 0]), ['third quarter', '3rd quarter', 'third qtr', '3rd qtr', 'the 3rd qtr']],\n  [mk([2018, 10, 1, 0, 0, 0]), ['4th quarter 2018', '4th qtr 2018', 'the 4th qtr of 2018', '18q4', '2018Q4']],\n  [mk([2012, 1, 1, 0, 0, 0]), ['last year', 'last yr']],\n  [mk([2013, 1, 1, 0, 0, 0]), ['this year', 'current year', 'this yr']],\n  [mk([2014, 1, 1, 0, 0, 0]), ['next year', 'next yr']],\n  [mk([2014, 1, 1, 0, 0, 0]), ['in 2014 A.D.', 'in 2014 AD']],\n  [mk([-2014, 1, 1, 0, 0, 0]), ['in 2014 B.C.', 'in 2014 BC']],\n  [mk([14, 1, 1, 0, 0, 0]), ['in 14 a.d.']],\n  [mk([2013, 2, 10, 0, 0, 0]), ['last sunday', 'sunday from last week', \"last week's sunday\"]],\n  [mk([2013, 2, 5, 0, 0, 0]), ['last tuesday']],\n  [mk([2013, 2, 20, 0, 0, 0]), ['next wednesday']],\n  [mk([2013, 2, 20, 0, 0, 0]), ['wednesday of next week', 'wednesday next week', 'wednesday after next']],\n  [mk([2013, 2, 22, 0, 0, 0]), ['friday after next']],\n  [mk([2013, 2, 11, 0, 0, 0]), ['monday of this week']],\n  [mk([2013, 2, 12, 0, 0, 0]), ['tuesday of this week']],\n  [mk([2013, 2, 13, 0, 0, 0]), ['wednesday of this week']],\n  [mk([2013, 2, 14, 0, 0, 0]), ['the, after tomorrow']],\n  [mk([2013, 2, 14, 17, 0, 0]), ['day after tomorrow 5pm']],\n  [mk([2013, 2, 10, 0, 0, 0]), ['the, before yesterday']],\n  [mk([2013, 2, 10, 8, 0, 0]), ['day before yesterday 8am']],\n  [mk([2013, 3, 25, 0, 0, 0]), ['last Monday of March']],\n  [mk([2014, 3, 30, 0, 0, 0]), ['last Sunday of March 2014']],\n  [mk([2013, 10, 3, 0, 0, 0]), ['third, of october']],\n  [mk([2014, 10, 6, 0, 0, 0]), ['first week of october 2014']],\n  [\n    mk([2018, 12, 10, 0, 0, 0]),\n    [('third last week of 2018', 'the third last week of 2018', 'the 3rd last week of 2018')],\n  ],\n  [mk([2018, 10, 15, 0, 0, 0]), ['2nd last week of October 2018', 'the second last week of October 2018']],\n  [mk([2013, 5, 27, 0, 0, 0]), ['fifth last, of May', 'the 5th last, of May']],\n  [mk([2013, 10, 7, 0, 0, 0]), ['the week of october 6th']],\n  [mk([2013, 10, 7, 0, 0, 0]), ['the week of october 7th']],\n  [mk([2015, 10, 31, 0, 0, 0]), ['last, of october 2015', 'last, in october 2015']],\n  [mk([2014, 9, 22, 0, 0, 0]), ['last week of september 2014']],\n  [mk([2013, 10, 1, 0, 0, 0]), ['first tuesday of october', 'first tuesday in october']],\n  [mk([2014, 9, 16, 0, 0, 0]), ['third tuesday of september 2014']],\n  [mk([2014, 10, 1, 0, 0, 0]), ['first wednesday of october 2014']],\n  [mk([2014, 10, 8, 0, 0, 0]), ['second wednesday of october 2014']],\n  [mk([2015, 1, 13, 0, 0, 0]), ['third tuesday after christmas 2014']],\n  [\n    mk([2013, 2, 13, 3, 0, 0]),\n    [\n      'at 3am',\n      '3 in the AM',\n      'at 3 AM',\n      '3 oclock am',\n      'at three am',\n      'this morning at 3',\n      '3 in the morning',\n      'at 3 in the morning',\n      'early morning @ 3',\n    ],\n  ],\n  [mk([2013, 2, 12, 10, 0, 0]), ['this morning @ 10', 'this morning at 10am']],\n  [mk([2013, 2, 13, 3, 18, 0]), ['3:18am', '3:18a', '3h18']],\n  [mk([2016, 2, 1, 7, 0, 0]), ['at 7 in 3 years']],\n  [\n    mk([2013, 2, 12, 15, 0, 0]),\n    [\n      'at 3pm',\n      '@ 3pm',\n      '3PM',\n      '3pm',\n      '3 oclock pm',\n      \"3 o'clock in the afternoon\",\n      '3ish pm',\n      '3pm approximately',\n      'at about 3pm',\n      'at 3p',\n      'at 3p.',\n    ],\n  ],\n  [mk([2013, 2, 12, 15, 0, 0]), ['15h00', 'at 15h00', '15h', 'at 15h']],\n  [\n    mk([2013, 2, 12, 15, 15, 0]),\n    [\n      'at 15 past 3pm',\n      'a quarter past 3pm',\n      'for a quarter past 3pm',\n      '3:15 in the afternoon',\n      '15:15',\n      '15h15',\n      '3:15pm',\n      '3:15PM',\n      '3:15p',\n      'at 3 15',\n      '15 minutes past 3pm',\n      '15 minutes past 15h',\n    ],\n  ],\n  [\n    mk([2013, 2, 12, 15, 20, 0]),\n    [\n      'at 20 past 3pm',\n      '3:20 in the afternoon',\n      '3:20 in afternoon',\n      'twenty after 3pm',\n      '3:20p',\n      '15h20',\n      'at three twenty',\n      '20 minutes past 3pm',\n      'this afternoon at 3:20',\n      'tonight @ 3:20',\n    ],\n  ],\n  [\n    mk([2013, 2, 12, 15, 30, 0]),\n    [\n      'at half past three pm',\n      'half past 3 pm',\n      '15:30',\n      '15h30',\n      '3:30pm',\n      '3:30PM',\n      '330 p.m.',\n      '3:30 p m',\n      '3:30',\n      'half three',\n      '30 minutes past 3 pm',\n    ],\n  ],\n  [\n    mk([2013, 2, 12, 12, 15, 0]),\n    [\n      'at 15 past noon',\n      'a quarter past noon',\n      'for a quarter past noon',\n      '12:15 in the afternoon',\n      '12:15',\n      '12h15',\n      '12:15pm',\n      '12:15PM',\n      '12:15p',\n      'at 12 15',\n      '15 minutes past noon',\n    ],\n  ],\n  [mk([2013, 2, 12, 9, 59, 0]), ['nine fifty nine a m']],\n  [mk([2013, 2, 12, 15, 23, 24]), ['15:23:24']],\n  [mk([2013, 2, 12, 11, 45, 0]), ['a quarter to noon', '11:45am', '11h45', '15 to noon']],\n  [\n    mk([2013, 2, 12, 13, 15, 0]),\n    ['a quarter past 1pm', 'for a quarter past 1pm', '1:15pm', '13h15', '15 minutes from 1pm'],\n  ],\n  [mk([2013, 2, 12, 14, 15, 0]), ['a quarter past 2pm', 'for a quarter past 2pm']],\n  [mk([2013, 2, 12, 20, 15, 0]), ['a quarter past 8pm', 'for a quarter past 8pm']],\n  [\n    mk([2013, 2, 12, 20, 0, 0]),\n    [\n      '8 tonight',\n      \"tonight at 8 o'clock\",\n      'eight tonight',\n      '8 this evening',\n      'at 8 in the evening',\n      'in the evening at eight',\n    ],\n  ],\n  [mk([2013, 9, 20, 19, 30, 0]), ['at 7:30 PM on Fri, Sep 20', 'at 19h30 on Fri, Sep 20']],\n  [mk([2013, 2, 16, 9, 0, 0]), ['at 9am on Saturday', 'Saturday morning at 9']],\n  [mk([2013, 2, 16, 9, 0, 0]), ['on Saturday for 9am']],\n  [mk([2014, 7, 18, 19, 0, 0]), ['Fri, Jul 18, 2014 07:00 PM', 'Fri, Jul 18, 2014 19h00', 'Fri, Jul 18, 2014 19h']],\n  [mk([2013, 2, 12, 4, 30, 1]), ['in a sec', 'one second from now', 'in 1\"']],\n  [mk([2013, 2, 12, 4, 31, 0]), ['in a minute', 'in one minute', \"in 1'\"]],\n  [\n    mk([2013, 2, 12, 4, 32, 0]),\n    ['in 2 minutes', 'in 2 more minutes', '2 minutes from now', 'in a couple of minutes', 'in a pair of minutes'],\n  ],\n  [mk([2013, 2, 12, 4, 33, 0]), ['in three minutes', 'in a few minutes']],\n  [mk([2013, 2, 12, 5, 30, 0]), ['in 60 minutes']],\n  [mk([2013, 2, 12, 4, 45, 0]), ['in a quarter of an hour', 'in 1/4h', 'in 1/4 h', 'in 1/4 hour']],\n  [mk([2013, 2, 12, 5, 0, 0]), ['in half an hour', 'in 1/2h', 'in 1/2 h', 'in 1/2 hour']],\n  [mk([2013, 2, 12, 5, 15, 0]), ['in three-quarters of an hour', 'in 3/4h', 'in 3/4 h', 'in 3/4 hour']],\n  [mk([2013, 2, 12, 7, 0, 0]), ['in 2.5 hours', 'in 2 and an half hours']],\n  [mk([2013, 2, 12, 5, 30, 0]), ['in one hour', 'in 1h']],\n  [mk([2013, 2, 12, 6, 30, 0]), ['in a couple hours', 'in a couple of hours']],\n  [mk([2013, 2, 12, 7, 30, 0]), ['in a few hours', 'in few hours']],\n  [mk([2013, 2, 13, 4, 30, 0]), ['in 24 hours']],\n  [mk([2013, 2, 13, 4, 0, 0]), ['in a day', 'a, from now']],\n  [mk([2013, 2, 13, 4, 30, 0]), ['a, from right now']],\n  [mk([2016, 2, 12, 0, 0, 0]), ['3 years from today']],\n  [mk([2013, 3, 1, 0, 0, 0]), ['3 fridays from now', 'three fridays from now']],\n  [mk([2013, 2, 24, 0, 0, 0]), ['2 sundays from now', 'two sundays from now']],\n  [mk([2013, 3, 12, 0, 0, 0]), ['4 tuesdays from now', 'four tuesdays from now']],\n  [mk([2013, 2, 19, 4, 0, 0]), ['in 7 days']],\n  [mk([2013, 2, 19, 17, 0, 0]), ['in 7 days at 5pm']],\n  [mk([2017, 2, 1, 17, 0, 0]), ['in 4 years at 5pm']],\n  [mk([2013, 2, 19, 0, 0, 0]), ['in 1 week', 'in a week']],\n  [mk([2013, 2, 12, 5, 0, 0]), ['in about half an hour']],\n  [mk([2013, 2, 5, 4, 0, 0]), ['7 days ago']],\n  [mk([2013, 1, 29, 4, 0, 0]), ['14 days Ago', 'a fortnight ago']],\n  [mk([2013, 2, 5, 0, 0, 0]), ['a week ago', 'one week ago', '1 week ago']],\n  [mk([2013, 1, 31, 0, 0, 0]), ['2 thursdays back', '2 thursdays ago']],\n  [mk([2013, 1, 22, 0, 0, 0]), ['three weeks ago']],\n  [mk([2012, 11, 12, 0, 0, 0]), ['three months ago']],\n  [\n    mk([2013, 2, 4, 0, 0, 0]),\n    [\n      'the first Monday of this month',\n      'the first Monday of the month',\n      'the first Monday in this month',\n      'first Monday in the month',\n    ],\n  ],\n  [mk([2011, 2, 1, 0, 0, 0]), ['two years ago']],\n  [mk([2013, 2, 19, 4, 0, 0]), ['7 days hence']],\n  [mk([2013, 2, 26, 4, 0, 0]), ['14 days hence', 'a fortnight hence']],\n  [mk([2013, 2, 19, 0, 0, 0]), ['a week hence', 'one week hence', '1 week hence']],\n  [mk([2013, 3, 5, 0, 0, 0]), ['three weeks hence']],\n  [mk([2013, 5, 12, 0, 0, 0]), ['three months hence']],\n  [mk([2015, 2, 1, 0, 0, 0]), ['two years hence']],\n  [mk([2013, 12, 25, 0, 0, 0]), ['one year After christmas', 'a year from Christmas']],\n  [mk([2013, 12, 18, 0, 0, 0]), ['for 10 days from 18th Dec', 'from 18th Dec for 10 days', '18th Dec for 10 days']],\n  [\n    mk([2013, 2, 12, 16, 0, 0]),\n    [\"for 30' starting from 4pm\", 'from 4pm for thirty minutes', '4pm for 30 mins', '16h for 30 mins'],\n  ],\n  [mk([2013, 6, 21, 0, 0, 0], [2013, 9, 24, 0, 0, 0]), ['this Summer', 'current summer']],\n  [mk([2012, 12, 21, 0, 0, 0], [2013, 3, 21, 0, 0, 0]), ['this winter']],\n  [mk([2012, 12, 21, 0, 0, 0], [2013, 3, 19, 0, 0, 0]), ['this season', 'current seasons']],\n  [mk([2012, 9, 23, 0, 0, 0], [2012, 12, 20, 0, 0, 0]), ['last season', 'past seasons', 'previous seasons']],\n  [mk([2013, 3, 20, 0, 0, 0], [2013, 6, 20, 0, 0, 0]), ['next season']],\n  [mk([2013, 2, 11, 18, 0, 0], [2013, 2, 12, 0, 0, 0]), ['last night', 'yesterday evening']],\n  [mk([2013, 2, 11, 21, 0, 0], [2013, 2, 12, 0, 0, 0]), ['late last night']],\n  [mk([2013, 12, 25, 0, 0, 0]), ['Christmas', 'xmas', 'christmas', 'christmas day']],\n  [mk([2013, 12, 25, 18, 0, 0]), ['Christmas', 'xmas at 6 pm']],\n  [\n    mk([2013, 12, 25, 0, 0, 0], [2013, 12, 25, 12, 0, 0]),\n    ['Christmas', 'morning of xmas', 'morning of christmas 2013', 'morning of this christmas day'],\n  ],\n  [mk([2013, 12, 31, 0, 0, 0]), [\"New Year's Eve\", \"new year's eve\", 'new years eve']],\n  [mk([2014, 1, 1, 0, 0, 0]), [\"New Year's Day\", \"new year's day\", 'new years day']],\n  [mk([2013, 2, 14, 0, 0, 0]), [\"Valentine's Day\", \"valentine's day\", 'valentine day']],\n  [mk([2013, 7, 4, 0, 0, 0]), ['4th of July', '4 of july']],\n  [mk([2013, 10, 31, 0, 0, 0]), ['Halloween', 'halloween', 'next halloween', 'Halloween 2013']],\n  [mk([2013, 11, 29, 0, 0, 0]), ['Black Friday', 'black friday', 'black friday of this year', 'black friday 2013']],\n  [mk([2017, 11, 24, 0, 0, 0]), ['Black Friday', 'black friday 2017']],\n  [mk([2013, 10, 16, 0, 0, 0]), [\"Boss's Day\", \"boss's day\", \"boss's\", 'boss day', \"next boss's day\"]],\n  [mk([2016, 10, 17, 0, 0, 0]), [\"Boss's Day\", \"boss's, 2016\"]],\n  [mk([2021, 10, 15, 0, 0, 0]), [\"Boss's Day\", \"boss's, 2021\"]],\n  [\n    mk([2014, 1, 20, 0, 0, 0]),\n    [\n      \"Martin Luther King's Day\",\n      'MLK day',\n      'next Martin Luther King day',\n      \"next Martin Luther King's day\",\n      'next Martin Luther Kings day',\n      'this MLK day',\n    ],\n  ],\n  [mk([2013, 1, 21, 0, 0, 0]), [\"Martin Luther King's Day\", 'last MLK Jr. day', 'MLK, 2013']],\n  [\n    mk([2012, 1, 16, 0, 0, 0]),\n    [\"Martin Luther King's Day\", 'MLK, of last year', 'MLK, 2012', 'Civil Rights, of last year'],\n  ],\n  [mk([2013, 11, 1, 0, 0, 0]), ['World Vegan Day', 'world vegan day']],\n  [mk([2013, 3, 31, 0, 0, 0]), ['Easter Sunday', 'easter', 'easter 2013']],\n  [mk([2012, 4, 8, 0, 0, 0]), ['Easter Sunday', 'last easter']],\n  [mk([2013, 4, 1, 0, 0, 0]), ['Easter Monday', 'easter mon']],\n  [mk([2010, 4, 4, 0, 0, 0]), ['Easter Sunday', 'easter 2010', 'Easter Sunday two thousand ten']],\n  [mk([2013, 4, 3, 0, 0, 0]), ['three days after Easter']],\n  [mk([2013, 3, 28, 0, 0, 0]), ['Maundy Thursday', 'Maundy Thursday', 'Covenant thu', 'Thu of Mysteries']],\n  [mk([2013, 5, 19, 0, 0, 0]), ['Pentecost', 'Pentecost', 'white sunday 2013']],\n  [mk([2013, 5, 20, 0, 0, 0]), ['Whit Monday', 'whit monday', 'Monday of the Holy Spirit']],\n  [mk([2013, 3, 24, 0, 0, 0]), ['Palm Sunday', 'palm sunday', 'branch sunday 2013']],\n  [mk([2013, 5, 26, 0, 0, 0]), ['Trinity Sunday', 'trinity sunday']],\n  [mk([2013, 2, 12, 0, 0, 0]), ['Shrove Tuesday', 'pancake, 2013', 'mardi gras']],\n  [\n    mk([2013, 3, 17, 0, 0, 0]),\n    [\"St Patrick's Day\", \"st patrick's, 2013\", \"st paddy's day\", \"saint paddy's day\", 'saint patricks day'],\n  ],\n  [mk([2018, 2, 14, 0, 0, 0], [2018, 4, 1, 0, 0, 0]), ['Lent', 'lent 2018']],\n  [mk([2018, 4, 8, 0, 0, 0]), ['Orthodox Easter Sunday', 'orthodox easter 2018']],\n  [mk([2020, 4, 17, 0, 0, 0]), ['Orthodox Good Friday', 'orthodox good friday 2020', 'orthodox great friday 2020']],\n  [mk([2018, 2, 19, 0, 0, 0]), ['Clean Monday', 'clean monday 2018', 'orthodox shrove monday two thousand eighteen']],\n  [mk([2018, 3, 31, 0, 0, 0]), ['Lazarus Saturday', 'lazarus saturday 2018']],\n  [mk([2018, 2, 19, 0, 0, 0], [2018, 3, 31, 0, 0, 0]), ['Great Lent', 'great fast 2018']],\n  [mk([2013, 2, 12, 18, 0, 0], [2013, 2, 13, 0, 0, 0]), ['this evening', 'today evening', 'tonight']],\n  [mk([2013, 2, 8, 18, 0, 0], [2013, 2, 11, 0, 0, 0]), ['this past weekend']],\n  [mk([2013, 2, 13, 18, 0, 0], [2013, 2, 14, 0, 0, 0]), ['tomorrow evening']],\n  [mk([2013, 2, 13, 12, 0, 0], [2013, 2, 13, 14, 0, 0]), ['tomorrow lunch', 'tomorrow at lunch']],\n  [mk([2013, 2, 11, 18, 0, 0], [2013, 2, 12, 0, 0, 0]), ['yesterday evening']],\n  [mk([2013, 2, 15, 18, 0, 0], [2013, 2, 18, 0, 0, 0]), ['this week-end']],\n  [mk([2013, 2, 18, 0, 0, 0], [2013, 2, 18, 12, 0, 0]), ['monday mOrnIng']],\n  [\n    mk([2013, 2, 18, 0, 0, 0], [2013, 2, 18, 9, 0, 0]),\n    ['monday early in the morning', 'monday early morning', 'monday in the early hours of the morning'],\n  ],\n  [mk([2013, 2, 12, 21, 0, 0], [2013, 2, 13, 0, 0, 0]), ['late tonight', 'late tonite']],\n  [\n    mk([2013, 2, 15, 0, 0, 0], [2013, 2, 15, 12, 0, 0]),\n    ['february the 15th in the morning', '15 of february in the morning', 'morning of the 15th of february'],\n  ],\n  [mk([2013, 2, 12, 4, 29, 58], [2013, 2, 12, 4, 30, 0]), ['last 2 seconds', 'last two seconds']],\n  [mk([2013, 2, 12, 4, 30, 1], [2013, 2, 12, 4, 30, 4]), ['next 3 seconds', 'next three seconds']],\n  [mk([2013, 2, 12, 4, 28, 0], [2013, 2, 12, 4, 30, 0]), ['last 2 minutes', 'last two minutes']],\n  [mk([2013, 2, 12, 4, 31, 0], [2013, 2, 12, 4, 34, 0]), ['next 3 minutes', 'next three minutes']],\n  [mk([2013, 2, 12, 3, 0, 0], [2013, 2, 12, 4, 0, 0]), ['last 1 hour', 'last one hour']],\n  [mk([2013, 2, 12, 5, 0, 0], [2013, 2, 12, 8, 0, 0]), ['next 3 hours', 'next three hours']],\n  [mk([2013, 2, 10, 0, 0, 0], [2013, 2, 12, 0, 0, 0]), ['last 2 days', 'last two days', 'past 2 days']],\n  [mk([2013, 2, 13, 0, 0, 0], [2013, 2, 16, 0, 0, 0]), ['next 3 days', 'next three days']],\n  [mk([2013, 2, 13, 0, 0, 0], [2013, 2, 16, 0, 0, 0]), ['next few days']],\n  [mk([2013, 1, 28, 0, 0, 0], [2013, 2, 11, 0, 0, 0]), ['last 2 weeks', 'last two weeks', 'past 2 weeks']],\n  [mk([2013, 2, 18, 0, 0, 0], [2013, 3, 11, 0, 0, 0]), ['next 3 weeks', 'next three weeks']],\n  [mk([2012, 12, 1, 0, 0, 0], [2013, 2, 1, 0, 0, 0]), ['last 2 months', 'last two months']],\n  [mk([2013, 3, 1, 0, 0, 0], [2013, 6, 1, 0, 0, 0]), ['next 3 months', 'next three months']],\n  [mk([2011, 1, 1, 0, 0, 0], [2013, 1, 1, 0, 0, 0]), ['last 2 years', 'last two years']],\n  [mk([2014, 1, 1, 0, 0, 0], [2017, 1, 1, 0, 0, 0]), ['next 3 years', 'next three years']],\n  [\n    mk([2013, 7, 13, 0, 0, 0], [2013, 7, 16, 0, 0, 0]),\n    ['July 13-15', 'July 13 to 15', 'July 13 thru 15', 'July 13 through 15', 'July 13 - July 15'],\n  ],\n  [\n    mk([2013, 7, 13, 0, 0, 0], [2013, 7, 16, 0, 0, 0]),\n    [\n      'from July 13-15',\n      'from 13 to 15 July',\n      'from 13th to 15th July',\n      'from the 13 to 15 July',\n      'from the 13th to 15th July',\n      'from the 13th to the 15th July',\n      'from the 13 to the 15 July',\n    ],\n  ],\n  [\n    mk([2013, 7, 13, 0, 0, 0], [2013, 7, 16, 0, 0, 0]),\n    [\n      'from 13 to 15 of July',\n      'from 13th to 15 of July',\n      'from 13 to 15th of July',\n      'from 13th to 15th of July',\n      'from 13 to the 15 of July',\n      'from 13th to the 15 of July',\n      'from 13 to the 15th of July',\n      'from 13th to the 15th of July',\n      'from the 13 to the 15 of July',\n      'from the 13th to the 15 of July',\n      'from the 13 to the 15th of July',\n      'from the 13th to the 15th of July',\n    ],\n  ],\n  [mk([2013, 8, 8, 0, 0, 0], [2013, 8, 13, 0, 0, 0]), ['Aug 8 - Aug 12']],\n  [mk([2013, 2, 12, 9, 30, 0], [2013, 2, 12, 11, 1, 0]), ['9:30 - 11:00', '9h30 - 11h00', '9h30 - 11h']],\n  [mk([2013, 2, 12, 13, 30, 0], [2013, 2, 12, 15, 1, 0]), ['9:30 - 11:00 CST', '9h30 - 11h00 CST', '9h30 - 11h CST']],\n  [\n    mk([2013, 2, 12, 13, 0, 0], [2013, 2, 12, 16, 1, 0]),\n    ['15:00 GMT - 18:00 GMT', '15h00 GMT - 18h00 GMT', '15h GMT - 18h GMT'],\n  ],\n  [mk([2015, 3, 28, 17, 0, 0], [2015, 3, 29, 21, 0, 1]), ['2015-03-28 17:00:00/2015-03-29 21:00:00']],\n  [\n    mk([2013, 2, 14, 9, 30, 0], [2013, 2, 14, 11, 1, 0]),\n    [\n      'from 9:30 - 11:00 on Thursday',\n      'between 9:30 and 11:00 on thursday',\n      'between 9h30 and 11h00 on thursday',\n      '9:30 - 11:00 on Thursday',\n      '9h30 - 11h00 on Thursday',\n      'later than 9:30 but before 11:00 on Thursday',\n      'Thursday from 9:30 to 11:00',\n      'from 9:30 untill 11:00 on thursday',\n      'Thursday from 9:30 untill 11:00',\n      '9:30 till 11:00 on Thursday',\n    ],\n  ],\n  [mk([2013, 2, 13, 1, 0, 0], [2013, 2, 13, 2, 31, 0]), ['tomorrow in between 1-2:30 ish']],\n  [mk([2013, 2, 12, 15, 0, 0], [2013, 2, 12, 17, 0, 0]), ['3-4pm', 'from 3 to 4 in the PM', 'around 3-4pm']],\n  [\n    mk([2013, 2, 12, 15, 30, 0], [2013, 2, 12, 18, 1, 0]),\n    [\n      '3:30 to 6 PM',\n      '3:30-6 p.m.',\n      '3:30-6:00pm',\n      '15h30-18h',\n      'from 3:30 to six p.m.',\n      'from 3:30 to 6:00pm',\n      'later than 3:30pm but before 6pm',\n      'between 3:30pm and 6 pm',\n    ],\n  ],\n  [mk([2013, 2, 12, 15, 0, 0], [2013, 2, 12, 18, 0, 1]), ['3pm - 6:00:00pm']],\n  [mk([2013, 2, 12, 8, 0, 0], [2013, 2, 12, 14, 0, 0]), ['8am - 1pm']],\n  [mk([2013, 2, 14, 9, 0, 0], [2013, 2, 14, 12, 0, 0]), ['Thursday from 9a to 11a', 'this Thu 9-11am']],\n  [mk([2013, 2, 12, 11, 30, 0], [2013, 2, 12, 13, 31, 0]), ['11:30-1:30']],\n  [mk([2013, 9, 21, 13, 30, 0]), ['1:30 PM on Sat, Sep 21']],\n  [mk([2013, 2, 12, 4, 30, 0], [2013, 2, 26, 0, 0, 0]), ['Within 2 weeks']],\n  [mk([2013, 2, 12, 4, 30, 0], [2013, 2, 12, 14, 0, 0]), ['by 2:00pm']],\n  [mk([2013, 2, 12, 4, 30, 0], [2013, 2, 13, 0, 0, 0]), ['by EOD']],\n  [\n    mk([2013, 2, 12, 4, 30, 0], [2013, 3, 1, 0, 0, 0]),\n    ['by EOM', 'by the EOM', 'by end of the month', 'by the end of month'],\n  ],\n  [\n    mk([2013, 2, 21, 0, 0, 0], [2013, 3, 1, 0, 0, 0]),\n    ['EOM', 'the EOM', 'at the EOM', 'the end of the month', 'end of the month', 'at the end of month'],\n  ],\n  [\n    mk([2013, 2, 1, 0, 0, 0], [2013, 2, 11, 0, 0, 0]),\n    [\n      'BOM',\n      'the BOM',\n      'at the BOM',\n      'beginning of the month',\n      'the beginning of the month',\n      'at the beginning of month',\n    ],\n  ],\n  [mk([2013, 2, 12, 4, 30, 0], [2013, 4, 1, 0, 0, 0]), ['by the end of next month']],\n  [mk([2013, 2, 12, 13, 0, 0]), ['4pm CET']],\n  [\n    mk([2013, 2, 14, 6, 0, 0]),\n    [\n      'Thursday 8:00 GMT',\n      'Thursday 8:00 gmt',\n      'Thursday 8h00 GMT',\n      'Thursday 8h00 gmt',\n      'Thursday 8h GMT',\n      'Thursday 8h gmt',\n      'Thu at 8 GMT',\n      'Thu at 8 gmt',\n      'Thursday 9 am BST',\n      'Thursday 9 am (BST)',\n    ],\n  ],\n  [\n    mk([2013, 2, 14, 14, 0, 0]),\n    [\n      'Thursday 8:00 PST',\n      'Thursday 8:00 pst',\n      'Thursday 8h00 PST',\n      'Thursday 8h00 pst',\n      'Thursday 8h PST',\n      'Thursday 8h pst',\n      'Thu at 8 am PST',\n      'Thu at 8 am pst',\n      'Thursday at 9:30pm ist',\n    ],\n  ],\n  [mk([2013, 2, 12, 14, 0, 0]), ['today at 2pm', 'at 2pm', 'this afternoon at 2', 'this evening at 2', 'tonight at 2']],\n  [mk([2013, 2, 13, 15, 0, 0]), ['3pm tomorrow']],\n  [mk([2013, 2, 12, 5, 30, 0]), ['today in one hour']],\n  [mk([2013, 2, 12, 12, 0, 0], [2013, 2, 12, 19, 0, 0]), ['in the afternoon']],\n  [mk([2013, 2, 12, 8, 0, 0], [2013, 2, 12, 19, 0, 0]), ['8am until 6']],\n  [mk([2013, 2, 12, 13, 30, 0]), ['at 1:30pm', '1:30pm', 'at 13h30', '13h30']],\n  [mk([2013, 2, 12, 4, 45, 0]), ['in 15 minutes', \"in 15'\", 'in 15']],\n  [mk([2013, 2, 12, 13, 0, 0], [2013, 2, 12, 17, 0, 0]), ['after lunch']],\n  [mk([2013, 2, 12, 15, 0, 0], [2013, 2, 12, 21, 0, 0]), ['after school']],\n  [mk([2013, 2, 12, 10, 30, 0]), ['10:30', 'approximately 1030']],\n  [mk([2013, 2, 12, 0, 0, 0], [2013, 2, 12, 12, 0, 0]), ['this morning']],\n  [mk([2013, 2, 18, 0, 0, 0]), ['next monday']],\n  [mk([2013, 2, 12, 12, 0, 0]), ['at 12pm', 'at noon', 'midday', 'the midday', 'mid day']],\n  [\n    mk([2013, 2, 13, 0, 0, 0]),\n    ['at 12am', 'at midnight', 'this morning at 12', 'this evening at 12', 'this afternoon at 12'],\n  ],\n  [mk([2013, 2, 13, 9, 0, 0]), ['9 tomorrow morning', '9 tomorrow']],\n  [mk([2013, 2, 13, 21, 0, 0]), ['9 tomorrow evening']],\n  [mk([2013, 3, 1, 0, 0, 0]), ['March', 'in March', 'during March']],\n  [\n    mk([2013, 2, 13, 17, 0, 0]),\n    [\n      'tomorrow afternoon at 5',\n      'at 5 tomorrow afternoon',\n      'at 5pm tomorrow',\n      'tomorrow at 5pm',\n      'tomorrow evening at 5',\n    ],\n  ],\n  [mk([2013, 2, 13, 12, 0, 0], [2013, 2, 13, 19, 0, 0]), ['tomorrow afternoon', 'tomorrow afternoonish']],\n  [mk([2013, 2, 13, 13, 0, 0], [2013, 2, 13, 15, 0, 0]), ['1pm-2pm tomorrow']],\n  [mk([2013, 3, 1, 0, 0, 0]), ['on the first', 'the 1st']],\n  [mk([2013, 2, 12, 10, 30, 0]), ['at 1030', 'around 1030', 'ten thirty am']],\n  [mk([2013, 2, 12, 19, 30, 0]), ['at 730 in the evening', 'seven thirty p.m.']],\n  [mk([2013, 2, 13, 1, 50, 0]), ['tomorrow at 150ish']],\n  [mk([2013, 2, 12, 23, 0, 0]), ['tonight at 11', 'this evening at 11', 'this afternoon at 11', 'tonight at 11pm']],\n  [mk([2013, 10, 7, 0, 0, 0]), ['the closest Monday to Oct 5th']],\n  [mk([2013, 9, 30, 0, 0, 0]), ['the second closest Mon to October fifth']],\n  [mk([2013, 3, 1, 0, 0, 0], [2013, 3, 11, 0, 0, 0]), ['early March']],\n  [mk([2013, 3, 11, 0, 0, 0], [2013, 3, 21, 0, 0, 0]), ['mid March']],\n  [mk([2013, 3, 21, 0, 0, 0], [2013, 4, 1, 0, 0, 0]), ['late March']],\n  [\n    mk([2013, 10, 25, 18, 0, 0], [2013, 10, 28, 0, 0, 0]),\n    ['last weekend of October', 'last week-end in October', 'last week end of October'],\n  ],\n  [mk([2013, 2, 11, 0, 0, 0], [2013, 2, 17, 0, 0, 0]), ['all week']],\n  [mk([2013, 2, 12, 0, 0, 0], [2013, 2, 17, 0, 0, 0]), ['rest of the week']],\n  [mk([2013, 7, 26, 18, 0, 0], [2013, 7, 29, 0, 0, 0]), ['last wkend of July']],\n  [mk([2017, 10, 27, 18, 0, 0], [2017, 10, 30, 0, 0, 0]), ['last weekend of October 2017']],\n  [mk([2013, 8, 27, 0, 0, 0], [2013, 8, 30, 0, 0, 0]), ['August 27th - 29th', 'from August 27th - 29th']],\n  [mk([2013, 10, 23, 0, 0, 0], [2013, 10, 27, 0, 0, 0]), ['23rd to 26th Oct']],\n  [mk([2013, 9, 1, 0, 0, 0], [2013, 9, 9, 0, 0, 0]), ['1-8 september']],\n  [mk([2013, 9, 12, 0, 0, 0], [2013, 9, 17, 0, 0, 0]), ['12 to 16 september']],\n  [mk([2013, 8, 19, 0, 0, 0], [2013, 8, 22, 0, 0, 0]), ['19th To 21st aug']],\n  [mk([2013, 4, 21, 0, 0, 0], [2013, 5, 1, 0, 0, 0]), ['end of April', 'at the end of April']],\n  [mk([2014, 1, 1, 0, 0, 0], [2014, 1, 11, 0, 0, 0]), ['beginning of January', 'at the beginning of January']],\n  [mk([2012, 9, 1, 0, 0, 0], [2013, 1, 1, 0, 0, 0]), ['end of 2012', 'at the end of 2012']],\n  [mk([2017, 1, 1, 0, 0, 0], [2017, 4, 1, 0, 0, 0]), ['beginning of 2017', 'at the beginning of 2017']],\n  [\n    mk([2013, 1, 1, 0, 0, 0], [2013, 4, 1, 0, 0, 0]),\n    ['beginning of year', 'the beginning of the year', 'the BOY', 'BOY'],\n  ],\n  [\n    mk([2013, 2, 12, 4, 30, 0], [2014, 1, 1, 0, 0, 0]),\n    ['by EOY', 'by the EOY', 'by end of the year', 'by the end of year'],\n  ],\n  [\n    mk([2013, 9, 1, 0, 0, 0], [2014, 1, 1, 0, 0, 0]),\n    ['EOY', 'the EOY', 'at the EOY', 'the end of the year', 'end of the year', 'at the end of year'],\n  ],\n  [\n    mk([2013, 2, 11, 0, 0, 0], [2013, 2, 14, 0, 0, 0]),\n    [\n      'beginning of this week',\n      'beginning of current week',\n      'at the beginning of this week',\n      'at the beginning of current week',\n    ],\n  ],\n  [mk([2013, 2, 18, 0, 0, 0], [2013, 2, 21, 0, 0, 0]), ['beginning of coming week', 'at the beginning of coming week']],\n  [\n    mk([2013, 2, 4, 0, 0, 0], [2013, 2, 7, 0, 0, 0]),\n    [\n      'beginning of last week',\n      'beginning of past week',\n      'beginning of previous week',\n      'at the beginning of last week',\n      'at the beginning of past week',\n      'at the beginning of previous week',\n    ],\n  ],\n  [\n    mk([2013, 2, 18, 0, 0, 0], [2013, 2, 21, 0, 0, 0]),\n    [\n      'beginning of next week',\n      'beginning of the following week',\n      'beginning of around next week',\n      'at the beginning of next week',\n      'at the beginning of the following week',\n      'at the beginning of around next week',\n    ],\n  ],\n  [\n    mk([2013, 2, 15, 0, 0, 0], [2013, 2, 18, 0, 0, 0]),\n    ['end of this week', 'end of current week', 'at the end of this week', 'at the end of current week'],\n  ],\n  [mk([2013, 2, 22, 0, 0, 0], [2013, 2, 25, 0, 0, 0]), ['end of coming week', 'at the end of coming week']],\n  [\n    mk([2013, 2, 8, 0, 0, 0], [2013, 2, 11, 0, 0, 0]),\n    [\n      'end of last week',\n      'end of past week',\n      'end of previous week',\n      'at the end of last week',\n      'at the end of past week',\n      'at the end of previous week',\n    ],\n  ],\n  [\n    mk([2013, 2, 22, 0, 0, 0], [2013, 2, 25, 0, 0, 0]),\n    [\n      'end of next week',\n      'end of the following week',\n      'end of around next week',\n      'at the end of next week',\n      'at the end of the following week',\n      'at the end of around next week',\n    ],\n  ],\n  [mk([2014, 1, 31, 0, 0, 0]), ['Chinese New Year', 'chinese new year', \"chinese lunar new year's day\"]],\n  [\n    mk([2013, 2, 10, 0, 0, 0]),\n    ['Chinese New Year', 'last chinese new year', \"last chinese lunar new year's day\", 'last chinese new years'],\n  ],\n  [mk([2018, 2, 16, 0, 0, 0]), ['Chinese New Year', \"chinese new year's, 2018\"]],\n  [mk([2018, 9, 18, 0, 0, 0]), ['Yom Kippur', 'yom kippur 2018']],\n  [mk([2018, 9, 30, 0, 0, 0]), ['Shemini Atzeret', 'shemini atzeret 2018']],\n  [mk([2018, 10, 1, 0, 0, 0]), ['Simchat Torah', 'simchat torah 2018']],\n  [mk([2018, 7, 21, 0, 0, 0]), [\"Tisha B'Av\", \"tisha b'av 2018\"]],\n  [mk([2018, 4, 18, 0, 0, 0]), [\"Yom Ha'atzmaut\", 'yom haatzmaut 2018']],\n  [mk([2017, 5, 13, 0, 0, 0]), ['Lag BaOmer', \"lag b'omer 2017\"]],\n  [mk([2018, 4, 11, 0, 0, 0]), ['Yom HaShoah', 'Yom Hashoah 2018', 'Holocaust, 2018']],\n  [\n    mk([2018, 9, 9, 0, 0, 0], [2018, 9, 12, 0, 0, 0]),\n    ['Rosh Hashanah', 'rosh hashanah 2018', 'rosh hashana 2018', 'rosh hashanna 2018'],\n  ],\n  [\n    mk([2018, 12, 2, 0, 0, 0], [2018, 12, 10, 0, 0, 0]),\n    ['Hanukkah', 'Chanukah 2018', 'hanukah 2018', 'hannukkah 2018'],\n  ],\n  [mk([2018, 3, 30, 0, 0, 0], [2018, 4, 8, 0, 0, 0]), ['Passover', 'passover 2018']],\n  [mk([2018, 9, 23, 0, 0, 0], [2018, 10, 2, 0, 0, 0]), ['Sukkot', 'feast of the ingathering 2018', 'succos 2018']],\n  [mk([2018, 5, 19, 0, 0, 0], [2018, 5, 22, 0, 0, 0]), ['Shavuot', 'shavuot 2018']],\n  [mk([2017, 11, 30, 0, 0, 0]), ['Mawlid', 'mawlid al-nabawi 2017']],\n  [mk([1950, 7, 16, 0, 0, 0]), ['Eid al-Fitr', 'Eid al-Fitr 1950']],\n  [mk([1975, 10, 6, 0, 0, 0]), ['Eid al-Fitr', 'Eid al-Fitr 1975']],\n  [mk([1988, 5, 16, 0, 0, 0]), ['Eid al-Fitr', 'Eid al-Fitr 1988']],\n  [mk([2018, 6, 15, 0, 0, 0]), ['Eid al-Fitr', 'Eid al-Fitr 2018']],\n  [mk([2034, 12, 12, 0, 0, 0]), ['Eid al-Fitr', 'Eid al-Fitr 2034']],\n  [mk([2046, 8, 4, 0, 0, 0]), ['Eid al-Fitr', 'Eid al-Fitr 2046']],\n  [mk([2050, 6, 21, 0, 0, 0]), ['Eid al-Fitr', 'Eid al-Fitr 2050']],\n  [\n    mk([2018, 8, 21, 0, 0, 0]),\n    ['Eid al-Adha', 'Eid al-Adha 2018', 'id ul-adha 2018', 'sacrifice feast 2018', 'Bakr Id 2018'],\n  ],\n  [\n    mk([1980, 10, 19, 0, 0, 0]),\n    ['Eid al-Adha', 'Eid al-Adha 1980', 'id ul-adha 1980', 'sacrifice feast 1980', 'Bakr Id 1980'],\n  ],\n  [\n    mk([1966, 4, 1, 0, 0, 0]),\n    ['Eid al-Adha', 'Eid al-Adha 1966', 'id ul-adha 1966', 'sacrifice feast 1966', 'Bakr Id 1966'],\n  ],\n  [\n    mk([1974, 1, 3, 0, 0, 0]),\n    ['Eid al-Adha', 'Eid al-Adha 1974', 'id ul-adha 1974', 'sacrifice feast 1974', 'Bakr Id 1974'],\n  ],\n  [mk([2017, 6, 22, 0, 0, 0]), ['Laylat al-Qadr', 'laylat al kadr 2017', 'night of measures 2017']],\n  [mk([2018, 6, 11, 0, 0, 0]), ['Laylat al-Qadr', 'laylat al-qadr 2018', 'night of power 2018']],\n  [mk([2018, 9, 11, 0, 0, 0]), ['Islamic New Year', 'Islamic New Year 2018', 'Amun Jadid 2018']],\n  [mk([2017, 9, 30, 0, 0, 0]), ['Ashura', 'day of Ashura 2017']],\n  [mk([2018, 1, 30, 0, 0, 0]), ['Tu BiShvat', 'tu bishvat 2018']],\n  [mk([2017, 6, 23, 0, 0, 0]), [\"Jumu'atul-Wida\", 'Jamat Ul-Vida 2017', \"Jumu'atul-Wida 2017\"]],\n  [mk([2018, 6, 8, 0, 0, 0]), [\"Jumu'atul-Wida\", 'Jamat Ul-Vida 2018', \"Jumu'atul-Wida 2018\"]],\n  [mk([2018, 4, 13, 0, 0, 0]), [\"Isra and Mi'raj\", \"isra and mi'raj 2018\", \"the prophet's ascension 2018\"]],\n  [mk([2019, 4, 3, 0, 0, 0]), [\"Isra and Mi'raj\", 'the night journey 2019', 'ascension to heaven 2019']],\n  [mk([1950, 6, 17, 0, 0, 0], [1950, 7, 16, 0, 0, 0]), ['Ramadan', 'Ramadan 1950']],\n  [mk([1977, 8, 15, 0, 0, 0], [1977, 9, 14, 0, 0, 0]), ['Ramadan', 'Ramadan 1977']],\n  [mk([2018, 5, 16, 0, 0, 0], [2018, 6, 15, 0, 0, 0]), ['Ramadan', 'Ramadan 2018']],\n  [mk([2034, 11, 12, 0, 0, 0], [2034, 12, 12, 0, 0, 0]), ['Ramadan', 'Ramadan 2034']],\n  [mk([2046, 7, 5, 0, 0, 0], [2046, 8, 4, 0, 0, 0]), ['Ramadan', 'Ramadan 2046']],\n  [mk([2050, 5, 22, 0, 0, 0], [2050, 6, 21, 0, 0, 0]), ['Ramadan', 'Ramadan 2050']],\n  [mk([2017, 10, 17, 0, 0, 0]), ['Dhanteras', 'dhanatrayodashi in 2017']],\n  [mk([2019, 10, 25, 0, 0, 0]), ['Dhanteras', 'dhanteras 2019']],\n  [mk([2019, 10, 26, 0, 0, 0]), ['Naraka Chaturdashi', 'kali chaudas 2019', 'choti diwali two thousand nineteen']],\n  [mk([2019, 10, 27, 0, 0, 0]), ['Diwali', 'diwali 2019', 'Deepavali in 2019', 'Lakshmi Puja six years hence']],\n  [mk([2019, 10, 29, 0, 0, 0]), ['Bhai Dooj', 'bhai dooj 2019']],\n  [mk([2019, 11, 2, 0, 0, 0]), ['Chhath', 'chhath 2019', 'dala puja 2019', 'Surya Shashthi in 2019']],\n  [mk([2021, 10, 12, 0, 0, 0]), ['Maha Saptami', 'Maha Saptami 2021']],\n  [mk([2018, 10, 18, 0, 0, 0]), ['Vijayadashami', 'Dussehra 2018', 'vijayadashami in five years']],\n  [mk([2018, 10, 9, 0, 0, 0], [2018, 10, 19, 0, 0, 0]), ['Navaratri', 'navaratri 2018', 'durga puja in 2018']],\n  [mk([2018, 10, 27, 0, 0, 0]), ['Karva Chauth', 'karva chauth 2018', 'karva chauth in 2018']],\n  [mk([2018, 7, 14, 0, 0, 0]), ['Ratha-Yatra', 'ratha-yatra 2018']],\n  [mk([2018, 8, 26, 0, 0, 0]), ['Raksha Bandhan', 'rakhi 2018']],\n  [mk([2020, 4, 6, 0, 0, 0]), ['Mahavir Jayanti', 'mahavir jayanti 2020', 'mahaveer janma kalyanak 2020']],\n  [mk([2020, 2, 21, 0, 0, 0]), ['Maha Shivaratri', 'maha shivaratri 2020']],\n  [mk([2018, 2, 10, 0, 0, 0]), ['Dayananda Saraswati Jayanti', 'saraswati jayanti 2018']],\n  [mk([2018, 1, 14, 0, 0, 0]), ['Thai Pongal', 'pongal 2018', 'makara sankranthi 2018']],\n  [mk([2018, 1, 13, 0, 0, 0]), ['Boghi', 'bogi pandigai 2018']],\n  [mk([2018, 1, 15, 0, 0, 0]), ['Mattu Pongal', 'maattu pongal 2018']],\n  [mk([2018, 1, 16, 0, 0, 0]), ['Kaanum Pongal', 'kaanum pongal 2018', 'kanni pongal 2018']],\n  [mk([2019, 1, 15, 0, 0, 0]), ['Thai Pongal', 'makar sankranti 2019', 'maghi in 2019']],\n  [mk([2018, 4, 14, 0, 0, 0]), ['Vaisakhi', 'Vaisakhi 2018', 'baisakhi in 2018', 'Vasakhi 2018', 'vaishakhi 2018']],\n  [mk([2018, 8, 24, 0, 0, 0]), ['Thiru Onam', 'onam 2018', 'Thiru Onam 2018', 'Thiruvonam 2018']],\n  [mk([2019, 2, 10, 0, 0, 0]), ['Vasant Panchami', 'vasant panchami in 2019', 'basant panchami 2019']],\n  [mk([2019, 3, 20, 0, 0, 0]), ['Holika Dahan', 'chhoti holi 2019', 'holika dahan 2019', 'kamudu pyre 2019']],\n  [mk([2019, 8, 23, 0, 0, 0]), ['Krishna Janmashtami', 'krishna janmashtami 2019', 'gokulashtami 2019']],\n  [mk([2019, 3, 21, 0, 0, 0]), ['Holi', 'holi 2019', 'dhulandi 2019', 'phagwah 2019']],\n  [mk([2018, 8, 17, 0, 0, 0]), ['Parsi New Year', 'Parsi New Year 2018', 'Jamshedi Navroz 2018']],\n  [mk([2022, 8, 16, 0, 0, 0]), ['Parsi New Year', 'jamshedi Navroz 2022', 'parsi new year 2022']],\n  [\n    mk([2013, 4, 26, 0, 0, 0], [2013, 4, 29, 0, 0, 0]),\n    ['Global Youth Service Day', 'GYSD 2013', 'global youth service day'],\n  ],\n  [mk([2013, 5, 24, 0, 0, 0]), ['Vesak', 'vesak', 'vaisakha', 'Buddha day', 'Buddha Purnima']],\n  [mk([2013, 3, 23, 20, 30, 0], [2013, 3, 23, 21, 31, 0]), ['Earth Hour', 'earth hour']],\n  [mk([2016, 3, 19, 20, 30, 0], [2016, 3, 19, 21, 31, 0]), ['Earth Hour', 'earth hour 2016']],\n  [mk([2013, 2, 23, 0, 0, 0]), ['Purim', 'purim']],\n  [mk([2013, 2, 24, 0, 0, 0]), ['Shushan Purim', 'Shushan Purim']],\n  [\n    mk([2014, 1, 7, 0, 0, 0]),\n    [\n      'Guru Gobind Singh Jayanti',\n      'guru gobind singh birthday',\n      'guru gobind singh jayanti 2014',\n      'guru gobind singh jayanti',\n      'Guru Govind Singh Jayanti',\n    ],\n  ],\n  [mk([2018, 4, 27, 0, 0, 0]), [\"King's Day\", 'Koningsdag 2018', 'koningsdag 2018', \"king's, 2018\", \"King's, 2018\"]],\n  [mk([2014, 4, 26, 0, 0, 0]), [\"King's Day\", 'Koningsdag 2014', 'koningsdag 2014', \"King's, 2014\", \"king's, 2014\"]],\n  [\n    mk([2018, 5, 9, 0, 0, 0]),\n    ['Rabindra Jayanti', 'rabindra jayanti 2018', 'Rabindranath Jayanti 2018', 'Rabindra Jayanti 2018'],\n  ],\n  [\n    mk([2019, 5, 9, 0, 0, 0]),\n    ['Rabindra Jayanti', 'rabindra jayanti 2019', 'Rabindranath Jayanti 2019', 'Rabindra Jayanti 2019'],\n  ],\n  [\n    mk([2018, 1, 31, 0, 0, 0]),\n    ['Guru Ravidass Jayanti', 'guru Ravidas jayanti 2018', 'Guru Ravidass birthday 2018', 'guru ravidass Jayanti 2018'],\n  ],\n  [\n    mk([2019, 2, 19, 0, 0, 0]),\n    ['Guru Ravidass Jayanti', 'Guru Ravidass Jayanti 2019', 'Guru Ravidas Birthday 2019', 'guru ravidas jayanti 2019'],\n  ],\n  [mk([2019, 10, 13, 0, 0, 0]), ['Pargat Diwas', 'valmiki jayanti 2019', 'Valmiki Jayanti 2019', 'pargat diwas 2019']],\n  [\n    mk([2018, 10, 24, 0, 0, 0]),\n    ['Pargat Diwas', 'maharishi valmiki jayanti 2018', 'pargat diwas 2018', 'Pargat Diwas 2018'],\n  ],\n  [mk([2019, 9, 2, 0, 0, 0]), ['Ganesh Chaturthi', 'ganesh chaturthi 2019']],\n  [mk([2020, 4, 2, 0, 0, 0]), ['Rama Navami', 'rama navami 2020']],\n  [\n    mk([2018, 3, 18, 0, 0, 0]),\n    [\n      'Ugadi',\n      'Ugadi 2018',\n      'ugadi 2018',\n      'yugadi 2018',\n      'Yugadi 2018',\n      'samvatsaradi 2018',\n      'chaitra sukladi 2018',\n      'chaitra sukhladi 2018',\n    ],\n  ],\n  [mk([2012, 12, 25, 0, 0, 0]), ['Christmas', 'the closest xmas to today']],\n  [mk([2013, 12, 25, 0, 0, 0]), ['Christmas', 'the second closest xmas to today']],\n  [mk([2011, 12, 25, 0, 0, 0]), ['Christmas', 'the 3rd closest xmas to today']],\n  [mk([2013, 10, 25, 0, 0, 0]), ['last friday of october', 'last friday in october']],\n  [\n    mk([2013, 2, 25, 0, 0, 0]),\n    [\n      'upcoming two weeks',\n      'upcoming two week',\n      'upcoming 2 weeks',\n      'upcoming 2 week',\n      'two upcoming weeks',\n      'two upcoming week',\n      '2 upcoming weeks',\n      '2 upcoming week',\n    ],\n  ],\n  [\n    mk([2013, 2, 14, 0, 0, 0]),\n    [\n      'upcoming two days',\n      'upcoming two day',\n      'upcoming 2 days',\n      'upcoming 2 day',\n      'two upcoming days',\n      'two upcoming day',\n      '2 upcoming days',\n      '2 upcoming day',\n    ],\n  ],\n  [\n    mk([2013, 4, 1, 0, 0, 0]),\n    [\n      'upcoming two months',\n      'upcoming two month',\n      'upcoming 2 months',\n      'upcoming 2 month',\n      'two upcoming months',\n      'two upcoming month',\n      '2 upcoming months',\n      '2 upcoming month',\n    ],\n  ],\n  [\n    mk([2013, 7, 1, 0, 0, 0]),\n    [\n      'upcoming two quarters',\n      'upcoming two quarter',\n      'upcoming 2 quarters',\n      'upcoming 2 quarter',\n      'two upcoming quarters',\n      'two upcoming quarter',\n      '2 upcoming quarters',\n      '2 upcoming quarter',\n    ],\n  ],\n  [\n    mk([2015, 1, 1, 0, 0, 0]),\n    [\n      'upcoming two years',\n      'upcoming two year',\n      'upcoming 2 years',\n      'upcoming 2 year',\n      'two upcoming years',\n      'two upcoming year',\n      '2 upcoming years',\n      '2 upcoming year',\n    ],\n  ],\n  [mk([2013, 2, 13, 13, 40, 0]), ['20 minutes to 2pm tomorrow']],\n  [mk([2013, 1, 7, 0, 0, 0]), ['first monday of last month']],\n  [mk([2013, 1, 1, 0, 0, 0]), ['first tuesday of last month']],\n  [mk([2013, 1, 14, 0, 0, 0]), ['second monday of last month']],\n  [mk([2013, 2, 23, 0, 0, 0]), ['next saturday']],\n  [mk([2013, 2, 18, 0, 0, 0]), ['next monday']],\n]\n\ntest('duckling-tests', (t) => {\n  arr.forEach((a) => {\n    a[1].forEach((str) => {\n      const context = {\n        today: [2013, 2, 12],\n      }\n      const found = nlp(str).dates(context).json()[0] || {}\n      found.dates = found.dates || {}\n      t.ok(fmt(found.dates.start), str)\n      // t.equal(fmt(found.date.start), a[0], str)\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/backlog/interval.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\n\ntest('test first generated-date', function (t) {\n  const context = {\n    timezone: 'Asia/Kolkata',\n    today: '2021-02-16',\n    dayStart: '8:00am',\n    max_repeat: 5,\n  }\n  const arr = [\n    ['any monday', '2021-02-22T08:00:00.000+05:30'],\n    ['every monday in march', '2021-03-01T08:00:00.000+05:30'],\n    ['every tuesday in march', '2021-03-02T08:00:00.000+05:30'],\n    ['every hour tomorrow', '2021-02-17T08:00:00.000+05:30'],\n    ['any month this year', '2021-01-01T08:00:00.000+05:30'],\n    ['any month next year', '2022-01-01T08:00:00.000+05:30'],\n    ['every thursday at 2pm', '2021-02-18T14:00:00.000+05:30'],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    const dates = doc.dates(context).get()[0]\n    dates.repeat = dates.repeat || {}\n    dates.repeat.generated = dates.repeat.generated || []\n    t.equal(dates.repeat.generated[0].start, a[1], a[0])\n  })\n  t.end()\n})\n\ntest('count generated dates', function (t) {\n  const context = {\n    timezone: 'Asia/Kolkata',\n    today: '2000-01-01',\n    max_repeat: 65,\n  }\n  const arr = [\n    ['every day in march', 31],\n    ['every monday in march', 4],\n    ['every hour in June 5th', 24],\n    ['any monday this year', 52],\n    ['any wednesday between 2001 and 2002', 52],\n    ['any hour this week', context.max_repeat],\n    ['any wednesday', context.max_repeat],\n    ['any wednesday this week', 1],\n    ['any month this year', 12],\n    ['any month next year', 12],\n    // ['any minute', context.max_repeat],\n    // ['any year in june', 0],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    const dates = doc.dates(context).get()[0]\n    dates.repeat = dates.repeat || {}\n    dates.repeat.generated = dates.repeat.generated || []\n    t.equal(dates.repeat.generated.length, a[1], a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/backlog/units.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\n\ntest('units', function (t) {\n  const arr = [\n    ['2020', 'year'],\n    ['jan 1 to dec 31', 'year'],\n    ['jan 1 2020 to dec 31 2020', 'year'],\n    ['next year', 'year'],\n    // months\n    // ['june - july', 'months'],\n    // ['sept 2020 - july 2021', 'months'],\n    ['june 2012', 'month'],\n    ['april 1st-30th', 'month'],\n    ['next month', 'month'],\n    ['next week', 'week'],\n    ['june 9th 2012', 'day'],\n    ['june 9th', 'day'],\n    ['tomorrow', 'day'],\n    ['wednesday', 'day'],\n    ['next tuesday', 'day'],\n    ['next tuesday at 3pm', 'time'],\n    ['3:30pm', 'time'],\n    // ['3:30pm-5pm', 'time'],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    const found = doc.dates({ today: a[0] }).get()[0]\n    if (!found) {\n      console.log(a[0])//eslint-disable-line\n    }\n    t.equal(found.unit, a[1], '[unit] ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/before-after.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = ' [dates/before-after] '\n\ntest('isBefore misc', function (t) {\n  let doc = nlp('i went on June 5th 1999 and then on April 7 2008')\n  let m = doc.dates().isBefore('2000-02-01')\n  t.deepEqual(m.out('array'), ['June 5th 1999'], here + 'days')\n\n  doc = nlp('and between Sept 2008 and Oct 2008 but then June 2010')\n  m = doc.dates().isBefore('2009-01')\n  t.deepEqual(m.out('array'), ['between Sept 2008 and Oct 2008'], here + 'months')\n\n  doc = nlp('only in 2018 and 2020')\n  m = doc.dates().isBefore('2019')\n  t.deepEqual(m.out('array'), ['in 2018'], here + 'years')\n\n  doc = nlp('saw him 2024/02/05 and 2024/03/09')\n  m = doc.dates().isBefore('2025')\n  t.deepEqual(m.out('array'), ['2024/02/05', '2024/03/09'], here + 'isos')\n\n  t.end()\n})\n\ntest('isAfter misc', function (t) {\n  let doc = nlp('i went on June 5th 1999 and then on April 7 2008')\n  let m = doc.dates().isAfter('2000-02-01')\n  t.deepEqual(m.out('array'), ['April 7 2008'], here + 'after-days')\n\n  doc = nlp('saw him 2024/02/05 and 2024/03/09')\n  m = doc.dates().isAfter('2020')\n  t.deepEqual(m.out('array'), ['2024/02/05', '2024/03/09'], here + 'after-isos')\n\n  t.end()\n})\n\ntest('isSame', function (t) {\n  let doc = nlp('i went on June 5th 1999 and then on April 7 2008')\n  let m = doc.dates().isSame('year', '1999')\n  t.deepEqual(m.out('array'), ['June 5th 1999'], here + 'same-year')\n\n  doc = nlp('saw him 2024-02-05 and 2024-03-09')\n  m = doc.dates().isSame('month', '2024-03-17')\n  t.deepEqual(m.out('array'), ['2024-03-09'], here + 'same-month')\n\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/chronic.test.js",
    "content": "// a bunch of tests copy+pasted from the chronic date parser,\n// by Tom Preston-Werner ❤️\n// https://github.com/mojombo/chronic/edit/master/test/test_parsing.rb\n\nimport test from 'tape'\nimport spacetime from 'spacetime'\nimport nlp from './_lib.js'\n\nconst fmt = (iso) => (iso ? spacetime(iso).format('iso-short') : '-')\n\n// eslint-disable-next-line\nconst mk = function (y, m, d, h, sec, mil) {\n  let s = spacetime.now().year(y)\n  if (m) {\n    s = s.month(m - 1)\n  }\n  if (d) {\n    s = s.date(d)\n  }\n  if (h) {\n    s = s.hour(h)\n  }\n  if (sec) {\n    s = s.second(sec)\n  }\n  if (mil) {\n    s = s.millisecond(mil)\n  }\n  return fmt(s)\n}\n\ntest('chronic-tests-one', (t) => {\n  const arr = [\n    ['2012-08-02T13:00:00', mk(2012, 8, 2, 13)],\n    ['aug 3', mk(2007, 8, 3, 12)],\n    ['aug. 3', mk(2007, 8, 3, 12)],\n    ['aug-20', mk(2007, 8, 20, 12)],\n    ['may 27', mk(2007, 5, 27, 12)],\n    ['may 28', mk(2007, 5, 28, 12)],\n    ['may 28 5pm', mk(2007, 5, 28, 17)],\n    ['may 28 at 5pm', mk(2007, 5, 28, 17)],\n    // ['may 28 at 5:32.19pm', mk(2006, 5, 28, 17, 32, 19)],\n    // ['may 28 at 5:32:19.764', mk(2007, 5, 28, 17, 32, 19, 764000)],\n    ['5pm on may 28', mk(2007, 5, 28, 17)],\n    ['5pm may 28', mk(2007, 5, 28, 17)],\n    ['5 on may 28', mk(2007, 5, 28, 5)],\n    ['may 27th', mk(2007, 5, 27, 12)],\n    ['may 27th 5:00 pm', mk(2007, 5, 27, 17)],\n    ['may 27th at 5pm', mk(2007, 5, 27, 17)],\n    // ['may 27th at 5', mk(2007, 5, 27, 5)],\n    // ['fifteenth of this month', mk(2007, 8, 15, 12)],\n    ['22nd February', mk(2007, 2, 22, 12)],\n    ['31st of may at 6:30pm', mk(2007, 5, 31, 18, 30)],\n    ['11th december 8am', mk(2006, 12, 11, 8)],\n    // ['2009 May 22nd', mk(2009, 05, 22, 12)],\n    ['22 February', mk(2007, 2, 22, 12)],\n    ['22 feb', mk(2007, 2, 22, 12)],\n    ['22-feb', mk(2007, 2, 22, 12)],\n    ['31 of may at 6:30pm', mk(2007, 5, 31, 18, 30)],\n    ['11 december 8am', mk(2006, 12, 11, 8)],\n    ['5:00 pm may 27th', mk(2007, 5, 27, 17)],\n    ['05:00 pm may 27th', mk(2007, 5, 27, 17)],\n    ['5pm on may 27th', mk(2007, 5, 27, 17)],\n    // ['5 on may 27th', mk(2007, 5, 27, 5)],\n    // [\"may '97\", mk(1997, 5, 16, 12)],\n    // ['may 33', mk(2033, 5, 16, 12)],\n    // ['may 32', mk(2032, 5, 16, 12, 0, 0)],\n    // [\"may '01\", mk(2001, 5, 16, 12, 0, 0)],\n    ['November 18, 2010', mk(2010, 11, 18, 12)],\n    ['Jan 1, 2010', mk(2010, 1, 1, 12)],\n    ['February 14, 2004', mk(2004, 2, 14, 12)],\n    ['jan 3 2010', mk(2010, 1, 3, 12)],\n    ['jan 3 2010 midnight', mk(2010, 1, 3, 0)],\n    ['jan 3 2010 at midnight', mk(2010, 1, 3, 0)],\n    ['jan 3 2010 at 4', mk(2010, 1, 3, 4)],\n    ['may 27, 1979', mk(1979, 5, 27, 12)],\n    // [\"may 27 '79\", mk(1979, 5, 27, 12)],\n    // ['may 27 79 4:30', mk(1979, 5, 27, 16, 30)],\n    // ['may 27 79 at 4:30', mk(1979, 5, 27, 4, 30)],\n    // ['may 27 32', mk(2032, 5, 27, 12, 0, 0)],\n    // ['oct 5 2012 1045pm', mk(2012, 10, 5, 22, 45)],\n    // ['may 1st 01', mk(2001, 5, 1, 12)],\n    ['November 18th 2010', mk(2010, 11, 18, 12)],\n    ['November 18th, 2010', mk(2010, 11, 18, 12)],\n    ['November 18th 2010 midnight', mk(2010, 11, 18, 0)],\n    // ['November 18th 2010 at midnight', mk(2010, 11, 19, 0)],\n    ['November 18th 2010 at 4', mk(2010, 11, 18, 16)],\n    ['November 18th 2010 at 4', mk(2010, 11, 18, 4)],\n    ['March 30th, 1979', mk(1979, 3, 30, 12)],\n    // ['March 30th 79', mk(1979, 3, 30, 12)],\n    // ['March 30th 79 4:30', mk(1979, 3, 30, 16, 30)],\n    // ['March 30th 79 at 4:30', mk(1979, 3, 30, 4, 30)],\n    ['22nd February 2012', mk(2012, 2, 22, 12)],\n    // ['11th december 79', mk(1979, 12, 11, 12)],\n    ['3 jan 2010', mk(2010, 1, 3, 12)],\n    ['3 jan 2010 4pm', mk(2010, 1, 3, 16)],\n    ['27 Oct 2006 7:30pm', mk(2006, 10, 27, 19, 30)],\n    // ['3 jan 10', mk(2010, 1, 3, 12)],\n    // ['3 jan 10', mk(2010, 1, 3, 12)],\n    // ['3 jan 10', mk(2010, 1, 3, 12)],\n    ['5/27/1979', mk(1979, 5, 27, 12), 'iso-times'],\n    ['5/27/1979 4am', mk(1979, 5, 27, 4), 'iso-times'],\n    // ['7/12/11', mk(2011, 7, 12, 12), 'iso-times'],\n    // ['7/12/11', mk(2011, 12, 7, 12), 'iso-times'],\n    ['9/19/2011 6:05:57 PM', mk(2011, 9, 19, 18, 5, 57), 'iso-times'],\n    ['2013-03-12 17:00', mk(2013, 3, 12, 17, 0, 0), 'iso-times'],\n    ['27/5/1979', mk(1979, 5, 27, 12)],\n    ['27/5/1979 @ 0700', mk(1979, 5, 27, 7)],\n    ['03/18/2012 09:26 pm', mk(2012, 3, 18, 21, 26)],\n    // ['30.07.2013 16:34:22', mk(2013, 7, 30, 16, 34, 22)],\n    // ['09.08.2013', mk(2013, 8, 9, 12)],\n    // ['9.8.2013', mk(2013, 8, 9, 12)],\n    ['30-07-2013 21:53:49', mk(2013, 7, 30, 21, 53, 49), 'iso-short'],\n    ['2000-1-1', mk(2000, 1, 1, 12), 'iso-short'],\n    ['2006-08-20', mk(2006, 8, 20, 12), 'iso-short'],\n    ['2006-08-20 7pm', mk(2006, 8, 20, 19), 'iso-short'],\n    ['2006-08-20 03:00', mk(2006, 8, 20, 3), 'iso-short'],\n    ['2006-08-20 03:30:30', mk(2006, 8, 20, 3, 30, 30), 'iso-short'],\n    ['2006-08-20 15:30:30', mk(2006, 8, 20, 15, 30, 30), 'iso-short'],\n    ['2006-08-20 15:30.30', mk(2006, 8, 20, 15, 30, 30), 'iso-short'],\n    ['1902-08-20', mk(1902, 8, 20, 12, 0, 0), 'iso-short'],\n    ['2013.07.30 11:45:23', mk(2013, 7, 30, 11, 45, 23)],\n    ['2013.08.09', mk(2013, 8, 9, 12, 0, 0)],\n\n    // ['2012:05:25 22:06:50', mk(2012, 5, 25, 22, 6, 50)],\n    // ['05/06', mk(2007, 5, 6, 12)],\n    // ['05/06', mk(2007, 6, 5, 12)],\n    // ['05/06 6:05:57 PM', mk(2007, 5, 6, 18, 05, 57)],\n    // ['05/06 6:05:57 PM', mk(2007, 6, 5, 18, 05, 57)],\n    // ['13/09', mk(2006, 9, 13, 12),'dd/mm'],\n    // ['1/13', mk(2007, 1, 13, 12),'dd/mm'],\n    // ['3/13', mk(2006, 3, 13, 12),'dd/mm'],\n    // ['12/1', mk(2005, 12, 1, 12),'dd/mm'],\n    // ['12/1', mk(2006, 12, 1, 12),'dd/mm'],\n    // ['12/1', mk(2006, 12, 1, 12),'dd/mm'],\n    // ['8/1', mk(2006, 8, 1, 12),'dd/mm'],\n    // ['8/1', mk(2007, 8, 1, 12),'dd/mm'],\n    // ['8/1', mk(2006, 8, 1, 12),'dd/mm'],\n    // ['1/1', mk(2006, 1, 1, 12),'dd/mm'],\n    // ['1/1', mk(2007, 1, 1, 12),'dd/mm'],\n    // ['1/1', mk(2006, 1, 1, 12),'dd/mm'],\n    // ['2012-06', mk(2012, 6, 1)],\n    // ['2013/12', mk(2013, 12, 1, 0)],\n  ]\n  const context = {\n    today: [2006, 8, 24],\n  }\n  arr.forEach(a => {\n    const found = nlp(a[0]).dates(context).json()[0] || {}\n    const have = fmt((found.dates || {}).start)\n    t.equal(have, a[1], a[0])\n  })\n  t.end()\n})\n\ntest('chronic-tests-two', (t) => {\n  const context = {\n    today: [2006, 7, 16],\n  }\n  const arr = [\n    // ['9am on Saturday', mk(2006, 8, 19, 9)],\n    ['on Tuesday', mk(2006, 8, 22, 12)],\n    ['1:00:00 PM', mk(2006, 8, 16, 13)],\n    ['01:00:00 PM', mk(2006, 8, 16, 13)],\n    ['today at 02:00:00', mk(2006, 8, 16, 14)],\n    ['today at 02:00:00 AM', mk(2006, 8, 16, 2)],\n    ['today at 3:00:00', mk(2006, 8, 16, 3)],\n    ['today at 03:00:00', mk(2006, 8, 16, 3)],\n    // ['tomorrow at 4a.m.', mk(2006, 8, 17, 4)],\n    // ['3rd month next year', mk(2007, 3, 1)],\n    // ['3rd thursday this september', mk(2006, 9, 21, 12)],\n    // ['3rd thursday this november', mk(2010, 11, 18, 12)],\n    // ['4th day last week', mk(2006, 8, 9, 12)],\n    // ['30-Mar-11', mk(2011, 3, 30, 12)],\n    // ['31-Aug-12', mk(2012, 8, 31)],\n    // //end of testing handlers\n    ['friday', mk(2006, 8, 18, 12)],\n    // ['tue', mk(2006, 8, 22, 12)],\n    ['13:00', mk(2006, 8, 16, 13), 'times'],\n    ['13:45', mk(2006, 8, 16, 13, 45), 'times'],\n    ['1:01pm', mk(2006, 8, 16, 13, 1), 'times'],\n    ['2:01pm', mk(2006, 8, 16, 14, 1), 'times'],\n    ['november', mk(2006, 11, 1), 'times'],\n    ['friday 13:00', mk(2006, 8, 18, 13), 'times'],\n    ['monday 4:00', mk(2006, 8, 21, 16), 'times'],\n    ['sat 4:00', mk(2006, 8, 19, 4), 'times'],\n    ['sunday 4:20', mk(2006, 8, 20, 4, 20), 'times'],\n    ['4 pm', mk(2006, 8, 16, 16), 'times'],\n    ['4 am', mk(2006, 8, 16, 4), 'times'],\n    ['12 pm', mk(2006, 8, 16, 12), 'times'],\n    ['12:01 pm', mk(2006, 8, 16, 12, 1), 'times'],\n    ['12:01 am', mk(2006, 8, 16, 0, 1), 'times'],\n    ['12 am', mk(2006, 8, 16), 'times'],\n    ['4:00 in the morning', mk(2006, 8, 16, 4), 'times'],\n    // ['0:10', mk(2006, 8, 17, 0, 10),'times'],\n    ['november 4', mk(2006, 11, 4, 12)],\n    ['aug 24', mk(2006, 8, 24, 12)],\n    ['friday 1 pm', mk(2006, 8, 18, 13)],\n    // ['friday 11 at night', mk(2006, 8, 18, 23)],\n    // ['friday 11 in the evening', mk(2006, 8, 18, 23)],\n    ['sunday 6am', mk(2006, 8, 20, 6)],\n    ['friday evening at 7', mk(2006, 8, 18, 19)],\n    // //year\n    ['this year', mk(2006, 1, 1)],\n    // //month name\n    ['last november', mk(2005, 11, 1)],\n    // //fortnight\n    // ['this fortnight', mk(2006, 8, 21, 19, 30)],\n    // ['this fortnight', mk(2006, 8, 14, 19)],\n    // //week\n    ['this week', mk(2006, 8, 14)],\n    // //week\n    // ['this weekend', mk(2006, 8, 20)],\n    // ['this weekend', mk(2006, 8, 13)],\n    // ['last weekend', mk(2006, 8, 13)],\n    // //day\n    // ['this day', mk(2006, 8, 16, 19)],\n    ['today', mk(2006, 8, 16, 19)],\n    ['yesterday', mk(2006, 8, 15, 12)],\n    ['tomorrow', mk(2006, 8, 17, 12)],\n    // //day name\n    // ['this tuesday', mk(2006, 8, 22, 12),'rel-dayname'],\n    // ['next tuesday', mk(2006, 8, 22, 12),'rel-dayname'],\n    // ['last tuesday', mk(2006, 8, 15, 12),'rel-dayname'],\n    // ['this wed', mk(2006, 8, 23, 12),'rel-dayname'],\n    // ['next wed', mk(2006, 8, 23, 12),'rel-dayname'],\n    // ['last wed', mk(2006, 8, 9, 12),'rel-dayname'],\n    // //day portion\n    // ['this morning', mk(2006, 8, 16, 9)],\n    // ['tonight', mk(2006, 8, 16, 22)],\n    // //hour\n    // ['next hr', mk(2006, 8, 16, 15, 30, 0)],\n    // ['next hrs', mk(2006, 8, 16, 15, 30, 0)],\n    // //minute\n    // ['next min', mk(2006, 8, 16, 14, 1, 30)],\n    // ['next mins', mk(2006, 8, 16, 14, 1, 30)],\n    // ['next minute', mk(2006, 8, 16, 14, 1, 30)],\n    // //second\n    // ['next sec', mk(2006, 8, 16, 14, 0, 1)],\n    // ['next secs', mk(2006, 8, 16, 14, 0, 1)],\n    // ['this second', mk(2006, 8, 16, 14)],\n    // ['this second', mk(2006, 8, 16, 14)],\n    // ['next second', mk(2006, 8, 16, 14, 0, 1)],\n    // ['last second', mk(2006, 8, 16, 13, 59, 59)],\n    // ['yesterday at 4:00', mk(2006, 8, 15, 16)],\n    ['today at 9:00', mk(2006, 8, 16, 9)],\n    // ['today at 2100', mk(2006, 8, 16, 21)],\n    // ['this day at 0900', mk(2006, 8, 16, 9)],\n    // ['tomorrow at 0900', mk(2006, 8, 17, 9)],\n    // ['yesterday at 4:00', mk(2006, 8, 15, 4)],\n    // ['last friday at 4:00', mk(2006, 8, 11, 16)],\n    // ['next wed 4:00', mk(2006, 8, 23, 16)],\n    // ['yesterday afternoon', mk(2006, 8, 15, 15)],\n    // ['last week tuesday', mk(2006, 8, 8, 12)],\n    ['tonight at 7', mk(2006, 8, 16, 19)],\n    // ['tonight 7', mk(2006, 8, 16, 19)],\n    // ['7 tonight', mk(2006, 8, 16, 19)],\n    ['today at 6:00pm', mk(2006, 8, 16, 18)],\n    ['today at 6:00am', mk(2006, 8, 16, 6)],\n    // ['this day 1800', mk(2006, 8, 16, 18)],\n    ['yesterday at 4:00pm', mk(2006, 8, 15, 16)],\n    ['tomorrow evening at 7', mk(2006, 8, 17, 19)],\n    ['tomorrow morning at 5:30', mk(2006, 8, 17, 5, 30)],\n    // ['next monday at 12:01 am', mk(2006, 8, 21, 0, 1)],\n    // ['next monday at 12:01 pm', mk(2006, 8, 21, 12, 1)],\n    // //with context\n    // ['sunday at 8:15pm', mk(2006, 8, 13, 20, 15)],\n    // ['afternoon yesterday', mk(2006, 8, 15, 15)],\n    // ['tuesday last week', mk(2006, 8, 8, 12)],\n    // ['An hour ago', mk(2006, 8, 16, 13)],\n    ['A day ago', mk(2006, 8, 15, 14)],\n    ['a month ago', mk(2006, 7, 16, 14)],\n    ['a year ago', mk(2005, 8, 16, 14)],\n    // //past\n    ['3 years ago', mk(2003, 8, 16, 14), 'ago'],\n    ['1 month ago', mk(2006, 7, 16, 14), 'ago'],\n    // ['1 fortnight ago', mk(2006, 8, 2, 14),'ago'],\n    // ['2 fortnights ago', mk(2006, 7, 19, 14),'ago'],\n    ['3 weeks ago', mk(2006, 7, 26, 14), 'ago'],\n    // ['2 weekends ago', mk(2006, 8, 5), 'ago'],\n    ['3 days ago', mk(2006, 8, 13, 14), 'ago'],\n    // ['5 mornings ago', mk(2006, 8, 12, 9),'ago'],\n    // ['7 hours ago', mk(2006, 8, 16, 7), 'ago'],\n    // ['3 minutes ago', mk(2006, 8, 16, 13, 57), 'ago'],\n    // ['20 seconds before now', mk(2006, 8, 16, 13, 59, 40),'ago'],\n    // //future\n    ['3 years from now', mk(2009, 8, 16, 14, 0, 0), 'from now'],\n    // ['6 months hence', mk(2007, 2, 16, 14)],\n    // ['3 fortnights hence', mk(2006, 9, 27, 14)],\n    ['1 week from now', mk(2006, 8, 23, 14, 0, 0), 'from now'],\n    // ['1 weekend from now', mk(2006, 8, 19)],\n    // ['2 weekends from now', mk(2006, 8, 26)],\n    // ['1 day hence', mk(2006, 8, 17, 14)],\n    // ['5 mornings hence', mk(2006, 8, 21, 9)],\n    ['1 hour from now', mk(2006, 8, 16, 15), 'from now'],\n    // ['20 minutes hence', mk(2006, 8, 16, 14, 20)],\n    ['20 seconds from now', mk(2006, 8, 16, 14, 0, 20), 'from now'],\n    // ['2 months ago', mk(2007, 1, 7, 23, 30)],\n    // //Two repeaters\n    ['25 minutes and 20 seconds from now', mk(2006, 8, 16, 14, 25, 20), 'from now'],\n    // ['24 hours and 20 minutes from now', mk(2006, 8, 17, 14, 20, 0), 'from now'],\n    ['24 hours 20 minutes from now', mk(2006, 8, 17, 14, 20, 0), 'from now'],\n    ['in 3 hours', mk(2006, 8, 16, 17), 'from now'],\n    // //past\n    // ['3 years ago tomorrow', mk(2003, 8, 17, 12)],\n    // ['3 years ago this friday', mk(2003, 8, 18, 12)],\n    // ['3 months ago saturday at 5:00 pm', mk(2006, 5, 19, 17)],\n    // ['2 days from this second', mk(2006, 8, 18, 14)],\n    // ['7 hours before tomorrow at midnight', mk(2006, 8, 17, 17)],\n    // //future\n    // ['september 3 years ago', mk(2003, 9)],\n    // ['3rd month next year', mk(2007, 3)],\n    // ['3rd month next year', mk(2007, 3, 1)],\n    // ['3rd thursday this september', mk(2006, 9, 21, 12)],\n    // ['3rd thursday this november', mk(2010, 11, 18, 12)],\n    // ['4th day last week', mk(2006, 8, 9, 12)],\n\n    // ['this spring', mk(2007, 3, 20),'year'],\n    // ['this winter', mk(2006, 12, 22),'year'],\n    // ['last spring', mk(2006, 3, 20),'year'],\n    // ['last winter', mk(2005, 12, 22),'year'],\n    // ['next spring', mk(2007, 3, 20),'year'],\n    // ['this quarter', mk(2006, 7, 1),'year'],\n    // ['next quarter', mk(2006, 10, 1),'year'],\n    // ['last quarter', mk(2006, 4, 1),'year'],\n    // ['1 quarter ago', mk(2006, 4, 1),'year'],\n    // ['2 quarters ago', mk(2006, 1, 1),'year'],\n    // ['1 quarter from now', mk(2006, 10, 1),'year'],\n    // ['Q1', mk(2006, 1, 1),'year'],\n    // ['first quarter', mk(2007, 1, 1),'year'],\n    // ['1st quarter', mk(2006, 1, 1),'year'],\n    // ['q1 2005', mk(2005, 1, 1),'year'],\n    // ['2005 q1', mk(2005, 1, 1),'year'],\n    // ['q1 this year', mk(2006, 1, 1),'year'],\n    // ['this year q1', mk(2006, 1, 1),'q1'],\n    // ['q1 next year', mk(2007, 1, 1),'q1'],\n    // ['next year q1', mk(2007, 1, 1),'q1'],\n    // ['this q1', mk(2006, 1, 1),'q1'],\n    // ['last q1', mk(2006, 1, 1),'q1'],\n    // ['next q1', mk(2007, 1, 1),'q1'],\n    // ['#q2 2005', mk(2005, 4, 1),'q1'],\n    // ['2005 q2', mk(2005, 4, 1),'q1'],\n    // ['q2 this year', mk(2006, 4, 1),'q1'],\n    // ['this year q2', mk(2006, 4, 1),'q1'],\n    // ['q2 next year', mk(2007, 4, 1),'q1'],\n    // ['next year q2', mk(2007, 4, 1),'q1'],\n    // ['this q2', mk(2006, 4, 1),'q1'],\n    // ['last q2', mk(2006, 4, 1),'q1'],\n    // ['next q2', mk(2007, 4, 1),'q1'],\n    ['Q4', mk(2006, 10, 1), 'q4 #1'],\n    ['fourth quarter', mk(2006, 10, 1), 'q4 #2'],\n    // ['4th quarter', mk(2005, 10, 1), 'q4'],\n    ['4th quarter 2005', mk(2005, 10, 1), 'q4 #3'],\n    // ['2005 4th quarter', mk(2005, 10, 1), 'q4'],\n    // ['4th quarter this year', mk(2006, 10, 1), 'q4'],\n    // ['this year 4th quarter', mk(2006, 10, 1), 'q4'],\n    // ['4th quarter next year', mk(2007, 10, 1), 'q4'],\n    // ['next year 4th quarter', mk(2007, 10, 1), 'q4'],\n    // ['this 4th quarter', mk(2006, 10, 1), 'q4'],\n    // ['last 4th quarter', mk(2005, 10, 1), 'q4'],\n    // ['next 4th quarter', mk(2006, 10, 1), 'q4'],\n    // ['1st thursday in november', mk(2007, 11, 1, 12), 'thurs tests'],\n    // ['1st friday in november', mk(2007, 11, 2, 12), 'thurs tests'],\n    // ['1st saturday in november', mk(2007, 11, 3, 12), 'thurs tests'],\n    ['2011-01-01 at noon', mk(2011, 1, 1, 12, 0), 'thurs tests'],\n    ['Thu Aug 10', mk(2006, 8, 10, 12), 'thurs tests'],\n    // ['Thursday July 31', mk(2006, 7, 31, 12), 'thurs tests')//],\n    ['Thursday December 31', mk(2006, 12, 31, 12), 'thurs tests'],\n    ['Thu Aug 10 4pm', mk(2006, 8, 10, 16), 'thurs tests'],\n    ['Thu Aug 10 at 4pm', mk(2006, 8, 10, 16), 'thurs tests'],\n    ['Thu Aug 10th at 4pm', mk(2006, 8, 10, 16), 'thurs tests'],\n    // ['Thu 17th at 4pm', mk(2006, 8, 17, 16), 'thurs tests'],\n    // ['Thu 16th at 4pm', mk(2006, 8, 16, 16), 'thurs tests'],\n    // ['Thu 1st at 4pm', mk(2006, 9, 1, 16), 'thurs tests'],\n    // ['Thu 17th', mk(2006, 8, 17, 12), 'thurs tests'],\n    ['Thu Aug 10 2006', mk(2006, 8, 10, 12), 'thurs tests'],\n    ['Thursday July 31 2006', mk(2006, 7, 31, 12), 'thurs tests'],\n    ['Thursday December 31 2006', mk(2006, 12, 31, 12), 'thurs tests'],\n    ['Thursday December 30 2006', mk(2006, 12, 30, 12), 'thurs tests'],\n    ['Thu Aug 10th', mk(2006, 8, 10, 12), 'thurs tests'],\n    // ['Thursday July 31st', mk(2006, 7, 31, 12), 'thurs tests'],\n    ['Thursday December 31st', mk(2006, 12, 31, 12), 'thurs tests'],\n    ['Thu Aug 10th 2005', mk(2005, 8, 10, 12), 'thurs tests'],\n    ['Thursday July 31st 2005', mk(2005, 7, 31, 12), 'thurs tests'],\n    ['Thursday December 31st 2005', mk(2005, 12, 31, 12), 'thurs tests'],\n    ['Thursday December 30th 2005', mk(2005, 12, 30, 12), 'thurs tests'],\n  ]\n  arr.forEach(a => {\n    const found = nlp(a[0]).dates(context).json()[0] || {}\n    const have = fmt(found.dates.start)\n    t.equal(have, a[1], a[3] || a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/day-start.test.js",
    "content": "import test from 'tape'\nimport spacetime from 'spacetime'\nimport nlp from './_lib.js'\n\ntest('day-start edge-cases', function (t) {\n  const doc = nlp('in june 2021')\n  const date = doc.dates({ dayStart: '8:00am', dayEnd: '6:00pm', timezone: 'Asia/Shanghai' }).get()[0]\n  t.equal(date.start, '2021-06-01T08:00:00.000+08:00', 'start')\n  t.equal(date.end, '2021-06-30T18:00:00.000+08:00', 'end')\n  t.end()\n})\n\nconst arr = [\n  'next tuesday',\n  'june 5th',\n  'in 2020',\n  'in august',\n  'tomorrow',\n  'q2 1999',\n  // 'between june and july',\n  'between tuesday and wednesday',\n  'june 2nd to 5th 2020',\n  'the 5th of august',\n  'the 5th to 7th of august',\n]\n\ntest('day start', function (t) {\n  const startTime = '5:30am'\n  arr.forEach(str => {\n    const doc = nlp(str)\n    const date = doc.dates({ dayStart: startTime }).get()[0] || {}\n    const have = spacetime(date.start).time()\n    t.equal(have, startTime, '[start] ' + str)\n  })\n  t.end()\n})\n\ntest('day end', function (t) {\n  const endTime = '8:30pm'\n  arr.forEach(str => {\n    const doc = nlp(str)\n    const date = doc.dates({ dayEnd: endTime }).get()[0] || {}\n    const have = spacetime(date.end).time()\n    t.equal(have, endTime, '[end] ' + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/dmy.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('dmy option loop', function (t) {\n  const arr = [\n    ['01/02', 'January 2', false],\n    ['01/12', 'January 12', false],\n    ['01/24', 'January 24', false],\n\n    ['01/02', 'February 1', true],\n    ['01/12', 'December 1', true],\n    // ['01/24', 'January 24', true], //invalid dmy fallback?\n\n    ['02/03/1999', 'February 3', undefined],\n    ['02/03/1999', 'February 3', false],\n    ['02/03/1999', 'March 2', true],\n\n    // iso unaffected\n    ['1999-03-02', 'March 2'],\n    ['1999-03-02', 'March 2', false],\n    ['1999-03-02', 'March 2', true],\n  ]\n  arr.forEach((a) => {\n    const [str, want, bool] = a\n    const doc = nlp(str)\n    t.equal(doc.has('#Date'), true, str + ' #Date')\n    const out = doc.dates({ dmy: bool }).format('{month} {date}').text()\n    t.equal(out, want, str)\n  })\n  t.end()\n})\n\ntest('dmy option falsy', function (t) {\n  t.equal('March 26', nlp('03/26').dates().format('{month} {date}').text(), 'WITHOUT dmy option')\n  t.equal('March 26', nlp('03/26').dates({ dmy: false }).format('{month} {date}').text(), 'WITHOUT dmy option')\n  t.equal('March 26', nlp('26/03').dates().format('{month} {date}').text(), 'WITHOUT dmy option')\n  t.equal('March 26', nlp('26/03').dates({ dmy: false }).format('{month} {date}').text(), 'WITHOUT dmy option')\n  t.equal('March 4', nlp('03/04').dates().format('{month} {date}').text(), 'WITHOUT dmy option')\n  t.equal('March 4', nlp('03/04').dates({ dmy: false }).format('{month} {date}').text(), 'WITHOUT dmy option')\n  t.end()\n})\n\ntest('dmy option true', function (t) {\n  const out = nlp('03/04').dates({ dmy: true }).format('{month} {date}').text()\n  t.equal('April 3', out, 'WITH dmy option')\n\n  t.end()\n})\n\ntest('dmy invalid', function (t) {\n  const arr = [\n    '24/24',\n    '124/2',\n    '2/232',\n    '0/2',\n    '2/0',\n    '2/-2',\n    '-2/2',\n    '2/2.3',\n    '2.3/2',\n  ]\n  arr.forEach((str) => {\n    const doc = nlp(str)\n    t.equal(doc.dates({ dmy: true }).get().length, 0, str, '-dmy')\n    t.equal(doc.dates({ dmy: false }).get().length, 0, str + '-mdy')\n  })\n\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/duration-range.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\nconst context = {\n  today: '2024-09-24',\n}\n\nconst arr = [\n  { str: 'in 2 to 4 days', start: '2024-09-26', end: '2024-09-28' },\n  { str: 'in 2-4 days', start: '2024-09-26', end: '2024-09-28' },\n  { str: 'in two to four days', start: '2024-09-26', end: '2024-09-28' },\n  { str: '2 to 4 days ago', start: '2024-09-20', end: '2024-09-22' },\n  { str: '2-4 days ago', start: '2024-09-20', end: '2024-09-22' },\n  { str: 'two to four days ago', start: '2024-09-20', end: '2024-09-22' },\n\n  // { str: 'in 1 to 2 weeks', start: '2024-10-01', end: '2024-10-07' },\n  // { str: 'in 1-2 weeks', start: '2024-10-01', end: '2024-10-07' },\n  // { str: 'in one to two weeks', start: '2024-10-01', end: '2024-10-07' },\n  { str: '1 to 2 weeks ago', start: '2024-09-10', end: '2024-09-17' },\n  { str: '1-2 weeks ago', start: '2024-09-10', end: '2024-09-17' },\n  { str: 'one to two weeks ago', start: '2024-09-10', end: '2024-09-17' },\n\n  { str: 'in 1 to 5 months', start: '2024-10-24', end: '2025-02-24' },\n  { str: 'in 1-5 months', start: '2024-10-24', end: '2025-02-24' },\n  { str: 'in one to five months', start: '2024-10-24', end: '2025-02-24' },\n  { str: '1 to 5 months ago', start: '2024-04-24', end: '2024-08-24' },\n  { str: '1-5 months ago', start: '2024-04-24', end: '2024-08-24' },\n  { str: 'one to five months ago', start: '2024-04-24', end: '2024-08-24' },\n\n  { str: 'in 1-2 years', start: '2025-09-24', end: '2026-09-24' },\n  { str: 'in 2 to 4 years', start: '2026-09-24', end: '2028-09-24' },\n  { str: 'in 2-4 years', start: '2026-09-24', end: '2028-09-24' },\n  { str: 'in two to four years', start: '2026-09-24', end: '2028-09-24' },\n  { str: '2 to 4 years ago', start: '2020-09-24', end: '2022-09-24' },\n  { str: '2-4 years ago', start: '2020-09-24', end: '2022-09-24' },\n  { str: 'two to four years ago', start: '2020-09-24', end: '2022-09-24' },\n  { str: 'in 3 to 6 days', start: '2024-09-27', end: '2024-09-30' },\n  { str: 'in 3-6 days', start: '2024-09-27', end: '2024-09-30' },\n  { str: 'in three to six days', start: '2024-09-27', end: '2024-09-30' },\n  { str: '3 to 6 days ago', start: '2024-09-18', end: '2024-09-21' },\n  { str: '3-6 days ago', start: '2024-09-18', end: '2024-09-21' },\n  { str: 'three to six days ago', start: '2024-09-18', end: '2024-09-21' },\n  { str: 'in 3-5 years', start: '2027-09-24', end: '2029-09-24' },\n  { str: 'in three to five years', start: '2027-09-24', end: '2029-09-24' },\n  { str: '3 to 5 years ago', start: '2019-09-24', end: '2021-09-24' },\n  { str: 'three to five years ago', start: '2019-09-24', end: '2021-09-24' },\n]\n\n\ntest('duration-ranges', function (t) {\n  arr.forEach(obj => {\n    const doc = nlp(obj.str)\n    const { start, end } = doc.dates(context).get()[0]\n    t.equal(start.replace(/T.*/, ''), obj.start, obj.str + ':start')\n    t.equal(end.replace(/T.*/, ''), obj.end, obj.str + ':end')\n  })\n  t.end()\n})\n\n"
  },
  {
    "path": "plugins/dates/tests/duration.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n// const relaxed = 14\n\nconst february = 1\n//number of days between start+end\nconst tests = [\n  {\n    //for reference: https://calendar.google.com/calendar/render#main_7%7Cmonth-3+23617+23654+23617\n    today: [2016, february, 11],\n    tests: [\n      ['today', 1],\n      ['tomorrow', 1],\n      ['next week', 7],\n      ['sometime next week', 7],\n      ['on october 22nd', 1],\n      ['on feb 22 2019', 1],\n      ['july 3rd', 1],\n      ['2/12/2018', 1],\n      ['on 22/2/2016', 1],\n      ['before tomorrow', 1],\n\n      // ['next month', 31], //march\n      // ['this march', 31],\n      // ['this september', 30],\n      // ['next march', 31],\n      // ['in july', 31],\n      // ['next february', 28],\n      ['february 12th', 1],\n      //'by' includes today\n      ['by february 12th', 1],\n      ['by february 21', 10],\n      ['before february 22', 11],\n      ['before march', 19],\n\n      ['on february 22', 1],\n      ['between monday and tuesday', 1],\n      ['between monday and wednesday', 2],\n      // ['tuesday and wednesday next week', 2],\n      // ['march and april 2022', 61],\n      ['first week of september', 7],\n      ['second week of october', 7],\n      ['third week of june', 7],\n      ['fourth week of july', 7],\n      ['last week of july', 7],\n      // ['after july', relaxed],\n      // ['after september 4rth 2016', relaxed],\n    ],\n  },\n]\n\ntest('day durations', t => {\n  tests.forEach(obj => {\n    const context = {\n      today: obj.today,\n    }\n    const today = obj.today.join('-')\n    obj.tests.forEach(a => {\n      const json = nlp(a[0]).dates(context).json()[0] || { dates: {} }\n      const duration = json.dates.duration || {}\n      t.equal(duration.days, a[1], `[${today}] ${a[0]}`)\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/durations.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[date/durations]'\n\ntest('durations vs dates', function (t) {\n  const arr = [\n    `30mins tuesday`,\n    `30 minutes on tuesday`,\n    `30 minutes on january 2nd`,\n    `tuesday for 30 mins`,\n    `january 1st 2020 for 30 mins`,\n  ]\n  arr.forEach((str) => {\n    const doc = nlp(str)\n    const dates = doc.dates().get()[0] || {}\n    const durations = doc.durations().get()[0] || {}\n    t.ok(dates.start, `[date] ${str}`)\n    t.equal(durations.minute, 30, `[duration] ${str}`)\n  })\n  t.end()\n})\n\ntest('in 4 mins', function (t) {\n  let doc = nlp(`in 20 mins`)\n  t.equal(doc.dates().found, true, 'in-20 mins Date')\n  t.equal(doc.durations().found, false, 'in-20 mins !Duration')\n\n  doc = nlp(`for 20 mins`)\n  t.equal(doc.dates().found, false, 'for-20 mins !Date')\n  t.equal(doc.durations().found, true, 'for-20 mins Duration')\n\n  doc = nlp(`20 minutes`)\n  t.equal(doc.dates().found, false, '20 mins !Date')\n  t.equal(doc.durations().found, true, '20 mins Duration')\n  t.end()\n})\n\ntest('durations json', function (t) {\n  const doc = nlp('blah blah two hours and 8 mins foobar')\n  const json = doc.durations().json()[0] || { duration: {} }\n  t.equal(json.duration.hour, 2, '2 hours')\n  t.equal(json.duration.minute, 8, '8 minute')\n  t.end()\n})\n\ntest('one-word durations', function (t) {\n  const arr = [\n    // ['20m', { minute: 20 }],\n    ['20min', { minute: 20 }],\n    ['20mins', { minute: 20 }],\n    ['10mins', { minute: 10 }],\n    ['1min', { minute: 1 }],\n    ['1sec', { second: 1 }],\n    ['1 sec', { second: 1 }],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])//.tag('Duration')\n    const found = doc.durations().get()[0]\n    t.deepEqual(found, a[1], here + a[0])\n  })\n  t.end()\n})\n\n// test('durations normalize', function (t) {\n//   let arr = [\n//     ['blah blah two hours and 8 mins foobar', 'blah blah 2 hours and 8 minutes foobar'],\n//     ['seventy-two years', '72 years'],\n//     ['12 years and 2 months', '12 years and 2 months'],\n//     ['12.3 years', '12.3 years'],\n//     ['12 years and one month', '12 years and 1 month'],\n//     ['12 yrs and 2 hrs', '12 years and 2 hours'],\n//     ['2mins please', '2 minutes please'],\n//     ['5yrs and 3 months', '5 years and 3 months'],\n//     // ['three quarters', '3 quarters'],\n//     // no duration\n//     ['food wholesale prices for hours', 'food wholesale prices for hours'],\n//   ]\n//   arr.forEach((a) => {\n//     let doc = nlp(a[0])\n//     doc.durations().normalize()\n//     t.equal(doc.text(), a[1], a[0])\n//   })\n//   t.end()\n// })\n"
  },
  {
    "path": "plugins/dates/tests/end.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nimport spacetime from 'spacetime'\n//single-date tests\n\n//yep,\nconst january = 0\nconst february = 1\nconst march = 2\nconst april = 3\nconst may = 4\nconst june = 5\nconst july = 6\nconst august = 7\nconst september = 8\nconst october = 9\nconst november = 10\nconst december = 11\n\nconst tests = [\n  {\n    today: [2016, february, 11], //thursday\n    tests: [\n      ['on october 2nd', [2016, october, 2]],\n      ['on 2nd of march', [2016, march, 2]],\n      ['on 2nd of march, 2016', [2016, march, 2]],\n      ['on may 22nd', [2016, may, 22]],\n      ['on tuesday march 22nd', [2016, march, 22]],\n      ['on tuesday january 22nd, 2016', [2016, january, 22]],\n      ['on 22 april 2016', [2016, april, 22]],\n      ['on april 22nd', [2016, april, 22]],\n      ['on 22nd of april', [2016, april, 22]],\n      ['on the 22nd of april, 2016', [2016, april, 22]],\n      ['on april 1st, 2016', [2016, april, 1]],\n      ['on april 1st', [2016, april, 1]],\n      ['on tuesday, april the 1st', [2016, april, 1]],\n      ['on tuesday april 1st, 2016', [2016, april, 1]],\n      ['on june 2nd', [2016, june, 2]],\n      ['4:32 on march 2nd', [2016, march, 2]],\n      ['at 2 oclock march 2nd', [2016, march, 2]],\n      // ['sometime tomorrow before 3', [2016, february, 12]],\n      ['on 1999/12/25', [1999, december, 25]],\n      ['on 4:23am july 5th ', [2016, july, 5]],\n      ['@ 5pm march 2nd', [2016, march, 2]],\n      // ['on 5 pacific time march 2nd', [2016, march, 2]],\n      ['around 1pm pacific time, july 5th', [2016, july, 5]],\n      // ['on the day after next', [2016, february, 13]],\n      // ['the last weekend in october', [2016, october, 30]],\n      // ['the last weekend this month', [2016, february, 27]],\n      ['between monday and tuesday', [2016, february, 15]], //'exclusive' between\n    ],\n  },\n  {\n    today: [2016, february, 11],\n    tests: [\n      ['before april the 22nd', [2016, april, 21]],\n      ['by march 2nd 2 oclock', [2016, march, 1]],\n      ['by august 2nd, 2016', [2016, august, 1]],\n      ['by 22 november', [2016, november, 21]],\n      ['by march 2nd at 2pm', [2016, march, 1]],\n      ['before march 2nd at 2pm', [2016, march, 1]],\n      ['before july 5th at 2pm', [2016, july, 4]],\n      ['by july 5th, 2:12', [2016, july, 4]],\n      ['by september 5th 2pm PST', [2016, september, 4]],\n      ['by 1999-12-25', [1999, december, 24]],\n      ['before 12/25/1999', [1999, december, 24]],\n      ['by tomorrow', [2016, february, 11]],\n      // ['by the day after tomorrow', [2016, february, 12]], //by\n    ],\n  },\n]\n\ntest('end dates', (t) => {\n  Object.keys(tests).forEach((k) => {\n    const context = {\n      today: tests[k].today,\n      timezone: 'Canada/Pacific',\n    }\n    const today = tests[k].today.join('-')\n    tests[k].tests.forEach((a) => {\n      const want = spacetime(a[1], context.timezone).endOf('day').iso()\n      const json = nlp(a[0]).dates(context).json()[0] || { dates: {} }\n      t.equal(json.dates.end, want, `[${today}] ${a[0]}`)\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/equals.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\nconst context = {\n  today: '2020-01-21',\n  timezone: 'Canada/Pacific',\n}\n\nconst arr = [\n  // explicit-dates\n  [`march 2nd`, '2020-03-02T00:00:00.000-08:00'],\n  [`2 march`, '2020-03-02T00:00:00.000-08:00'],\n  [`tues march 2`, '2020-03-02T00:00:00.000-08:00'],\n  [`march the second`, '2020-03-02T00:00:00.000-08:00'],\n  [`on the 2nd of march`, '2020-03-02T00:00:00.000-08:00'],\n\n  // numerical-dates\n  [`1999/03/02`, 'march 2 1999'],\n  [`1999-03-02`, 'march 2 1999'],\n  [`03-02-1999`, 'march 2nd 1999'],\n  [`03/02`, 'march 2'],\n  [`2015.08.13`, 'aug 13 2015'],\n\n  // named-dates\n  [`today`, '2020-01-21'],\n  [`now`, 'right now'],\n  [`q1`, 'jan 1'],\n  [`tomorrow`, '2020-01-22'],\n\n  // time\n  [`2pm`, '2020-01-21T14:00:00.000-08:00'],\n  [`2:12pm`, '2020-01-21T14:12:00.000-08:00'],\n  [`2pm eastern time`, '2020-01-21T14:00:00.000-05:00'],\n  [`2:12 in the evening`, '2020-01-21T14:12:00.000-08:00'],\n  [`02:12:00am`, '2020-01-21T02:12:00.000-08:00'],\n  [`2 oclock am`, '2020-01-21T02:00:00.000-08:00'],\n  [`noon`, 'today at 12pm'],\n  [`at night`, 'today at 8:00pm'],\n  // [`in the morning`, 'tomorrow at 8:00pm'],\n  [`tomorrow evening`, 'Jan 22 6pm'],\n  [`aug-20`, '20-aug'],\n  [`in a few years`, `in 2 years`],\n  [`in a couple years`, `in 2 years`],\n  [`2 weeks back`, `2 weeks ago`],\n  [`last q1`, `q1 2019`],\n  [`last q2`, `q2 2019`],\n  [`last q3`, `q3 2019`],\n  [`last q4`, `q4 2019`],\n  [`this q1`, `q1 2020`],\n  [`this q2`, `q2 2020`],\n  [`this q3`, `q3 2020`],\n  [`this q4`, `q4 2020`],\n  [`next q1`, `q1 2021`],\n  [`next q2`, `q2 2021`],\n  [`next q3`, `q3 2021`],\n  [`next q4`, `q4 2021`],\n  [`tuesday at 3`, `tuesday 3:00pm`],\n  [`tuesday at 4:00`, `tuesday 4:00pm`],\n  [`5:30`, `today at 5:30pm`],\n  [`tuesday at 3am`, `tuesday 3:00am`],\n  [`5 oclock`, `today at 5:00pm`],\n  [`5 oclock am`, `today at 5:00am`],\n  [`10 oclock`, `today at 10:00am`],\n  [`11:30`, `today at 11:30am`],\n  [`11:30pm`, `today at 11:30pm`],\n  [`tuesday at 1`, `tuesday at 1pm`],\n  [`march this year`, `2020-03-01`],\n  [`march next year`, `2021-03-01`],\n  [`march last year`, `2019-03-01`],\n  ['this fri, monday', 'fri jan 24 and mon jan 27'],\n  ['next friday, this monday', 'fri jan 31 and mon jan 27'],\n  ['until christmas', '2020-01-21 to 2020-12-25'],\n  ['until feb 3 2024', '2020-01-21 to 2024-02-03'],\n  ['first half of march', '2020-03-01 to 2020-03-16'],\n  ['second half of march', '2020-03-16 to 2020-03-30 '],\n  ['between Sept and Oct', 'sept 2020 to oct 2020'],\n  ['between Sept and Oct 2008', 'sept 2008 to oct 2008'],\n  ['between Oct and Sept', 'sept 2020 to oct 2020'],\n  ['between Oct and Sept 2008', 'sept 2008 to oct 2008'],\n  // relative dates\n  [`in 3 days`, '2020-01-24'],\n  [`in 1 week`, '2020-01-28'],\n  [`in 2 months`, '2020-03-21'],\n  [`in 1 year`, '2021-01-21'],\n  [`2 days ago`, '2020-01-19'],\n  [`1 week ago`, '2020-01-14'],\n  [`2 months ago`, '2019-11-21'],\n  [`1 year ago`, '2019-01-21'],\n\n  // day of the week\n  [`next monday`, '2020-01-27'],\n  [`next tuesday`, '2020-01-28'],\n  [`last sunday`, '2020-01-19'],\n  [`last wednesday`, '2020-01-15'],\n  [`last saturday`, '2020-01-18'],\n\n  // time with timezone\n  [`2pm Canada/Pacific`, '2020-01-21T14:00:00.000-08:00'],\n  [`2pm Canada/Eastern`, '2020-01-21T14:00:00.000-05:00'],\n  [`2pm UTC`, '2020-01-21T14:00:00.000+00:00'],\n\n  // date range\n  [`from jan 1 to jan 5`, '2020-01-01 to 2020-01-05'],\n  [`from jan 1 to feb 1`, '2020-01-01 to 2020-02-01'],\n  [`from jan 1 2020 to jan 5 2021`, '2020-01-01 to 2021-01-05'],\n  [`from jan 1 2020 to feb 1 2021`, '2020-01-01 to 2021-02-01'],\n  [`between jan 1 and jan 5`, '2020-01-01 to 2020-01-05'],\n  [`between jan 1 and feb 1`, '2020-01-01 to 2020-02-01'],\n  [`between jan 1 2020 and jan 5 2021`, '2020-01-01 to 2021-01-05'],\n  [`between jan 1 2020 and feb 1 2021`, '2020-01-01 to 2021-02-01'],\n\n  // additional explicit-dates\n  [`march 3rd`, '2020-03-03T00:00:00.000-08:00'],\n  [`3 march`, '2020-03-03T00:00:00.000-08:00'],\n  [`wed march 4`, '2020-03-04T00:00:00.000-08:00'],\n  [`march the third`, '2020-03-03T00:00:00.000-08:00'],\n  [`on the 3rd of march`, '2020-03-03T00:00:00.000-08:00'],\n\n  // additional numerical-dates\n  [`1999/03/03`, 'march 3 1999'],\n  [`1999-03-03`, 'march 3 1999'],\n  [`03-03-1999`, 'march 3rd 1999'],\n  [`03/03`, 'march 3'],\n  [`2015.08.14`, 'aug 14 2015'],\n\n  // additional named-dates\n  [`yesterday`, '2020-01-20'],\n  [`q2`, 'apr 1'],\n  [`next month`, '2020-02-01'],\n\n  // additional time\n  [`3pm`, '2020-01-21T15:00:00.000-08:00'],\n  [`3:30pm`, '2020-01-21T15:30:00.000-08:00'],\n  [`3pm eastern time`, '2020-01-21T15:00:00.000-05:00'],\n  [`3:30 in the evening`, '2020-01-21T15:30:00.000-08:00'],\n  [`03:30:00am`, '2020-01-21T03:30:00.000-08:00'],\n  [`3 oclock am`, '2020-01-21T03:00:00.000-08:00'],\n  [`midnight`, 'today at 12am'],\n  [`in the afternoon`, 'today at 2:00pm'],\n  [`in the evening`, 'today at 6:00pm'],\n  // [`in the morning`, 'tomorrow at 8:00am'],\n  [`tomorrow night`, 'Jan 22 8pm'],\n  [`sep-20`, '20-sep'],\n  [`in a few months`, `in 2 months`],\n  [`in a couple months`, `in 2 months`],\n  [`2 weeks from now`, `2 weeks from today`],\n  [`next q1`, `q1 2021`],\n  [`next q2`, `q2 2021`],\n  [`next q3`, `q3 2021`],\n  [`next q4`, `q4 2021`],\n  [`wednesday at 2`, `wednesday 2:00pm`],\n  [`wednesday at 3:00`, `wednesday 3:00pm`],\n  [`4:30`, `today at 4:30pm`],\n  [`wednesday at 3am`, `wednesday 3:00am`],\n  [`4 oclock`, `today at 4:00pm`],\n  [`6 oclock am`, `today at 6:00am`],\n  [`11 oclock`, `today at 11:00am`],\n  [`12:30`, `today at 12:30pm`],\n  [`12:30am`, `today at 12:30am`],\n  [`wednesday at 1`, `wednesday at 1pm`],\n  [`march this year`, `2020-03-01`],\n  [`march next year`, `2021-03-01`],\n  [`march last year`, `2019-03-01`],\n  ['this fri, next monday', 'fri jan 24 and mon jan 31'],\n  ['next friday, next monday', 'fri jan 31 and mon jan 31'],\n  ['until next christmas', '2020-01-21 to 2021-12-25'],\n  ['until feb 3 2025', '2020-01-21 to 2025-02-03'],\n  ['between Oct and Sept 2022', 'sept 2022 to oct 2022'],\n  ['between Oct and Sept 2023', 'sept 2023 to oct 2023'],\n  // additional relative dates\n  [`in 4 days`, '2020-01-25'],\n  [`in 2 weeks`, '2020-02-04'],\n  [`in 3 months`, '2020-04-21'],\n  [`in 2 years`, '2022-01-21'],\n  [`3 days ago`, '2020-01-18'],\n  [`2 weeks ago`, '2020-01-07'],\n  [`3 months ago`, '2019-10-21'],\n  [`2 years ago`, '2018-01-21'],\n\n  // additional day of the week\n  [`last monday`, '2020-01-13'],\n  [`last tuesday`, '2020-01-14'],\n  [`last friday`, '2020-01-17'],\n\n  // additional time with timezone\n  [`3pm Canada/Pacific`, '2020-01-21T15:00:00.000-08:00'],\n  [`3pm Canada/Eastern`, '2020-01-21T15:00:00.000-05:00'],\n  [`3pm UTC`, '2020-01-21T15:00:00.000+00:00'],\n\n  // additional date range\n  [`from jan 6 to jan 10`, '2020-01-06 to 2020-01-10'],\n  [`from jan 6 to feb 6`, '2020-01-06 to 2020-02-06'],\n  [`from jan 6 2020 to jan 10 2021`, '2020-01-06 to 2021-01-10'],\n  [`from jan 6 2020 to feb 6 2021`, '2020-01-06 to 2021-02-06'],\n  [`between jan 6 and jan 10`, '2020-01-06 to 2020-01-10'],\n  [`between jan 6 and feb 6`, '2020-01-06 to 2020-02-06'],\n  [`between jan 6 2020 and jan 10 2021`, '2020-01-06 to 2021-01-10'],\n  [`between jan 6 2020 and feb 6 2021`, '2020-01-06 to 2021-02-06'],\n\n]\n\ntest('date-variety', function (t) {\n  arr.forEach((a) => {\n    const left = nlp(a[0]).dates(context).json()[0] || {}\n    const right = nlp(a[1]).dates(context).json()[0] || {}\n    left.dates = left.dates || {}\n    right.dates = right.dates || {}\n    t.equal(left.dates.start, right.dates.start, a[0] + ' -> ' + a[1])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/false-positive.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('no dates', function (t) {\n  const arr = [\n    'laughing out loud',\n    '1 adult',\n    'we are separated',\n    '25',\n    'this is the one',\n    'this one',\n    'this past one',\n    'at single',\n    'at a couple of',\n    'at pairs',\n    'at a few',\n    'at dozens',\n    \"single o'clock\",\n    \"dozens o'clock\",\n    'Rat 6',\n    'rat 6',\n    '3 30',\n    'three twenty',\n    'at 650.650.6500',\n    'at 650-650-6500',\n    'two sixty a m',\n    'Pay ABC 2000',\n    '4a',\n    '4a.',\n    'A4 A5',\n    'palm',\n    // 'One Saturday he had been to market',\n  ]\n  arr.forEach(function (str) {\n    const doc = nlp(str)\n    t.equal(doc.dates().length, 0, str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/format.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\n// test('short+long form', function (t) {\n//   let r = nlp('wednesday, january 2nd, 2016')\n//   let shorter = r.dates().toShortForm().text()\n//   t.equal(shorter, 'wed, jan 2nd, 2016')\n\n//   let r2 = nlp('Thurs, feb 2nd, 2016')\n//   let longer = r2.dates().toLongForm().text()\n//   t.equal(longer, 'Thursday, february 2nd, 2016')\n\n//   let doc = nlp('April, June, and Sept')\n//   shorter = doc.dates().toShortForm().all().text()\n//   t.equal(shorter, 'Apr, Jun, and Sept', 'months-short')\n\n//   longer = doc.dates().toLongForm().all().text()\n//   t.equal(longer, 'April, June, and September', 'months-longer')\n\n//   r2 = nlp('Thurs, feb 2nd, 2016')\n//   longer = r2.dates().toLongForm().text()\n//   t.equal(longer, 'Thursday, february 2nd, 2016')\n\n//   let str = nlp('April, June, and Sept').dates().toShortForm().all().out()\n//   t.equal('Apr, Jun, and Sept', str, 'toShortForm-comma')\n\n//   str = nlp('Apr, June, and Sept').dates().toLongForm().all().out()\n//   t.equal('April, June, and September', str, 'toShortForm-comma')\n\n//   doc = nlp('January 10, 2018 7:20 AM')\n//   let start = doc.dates({ timezone: false }).json()[0].start\n//   t.equal(start, '2018-01-10T07:20:00.000Z', '7:20am')\n\n//   t.end()\n// })\n\ntest('date-format', function (t) {\n  let doc = nlp(`i'm going skiing two days after November 1st 2019 at 7pm`)\n  doc.dates().format('{day} {month} {date-ordinal}, {time}')\n  t.equal(doc.text(), `i'm going skiing Sunday November 3rd, 7:00pm`, 'format-test')\n\n  doc = nlp(`halloween`)\n  doc.dates().format('{month} {date-ordinal}')\n  t.equal(doc.text(), `October 31st`, 'format-test-holiday')\n\n  doc = nlp(`two days after halloween`)\n  doc.dates().format('{month} {date-ordinal}, {time}')\n  t.equal(doc.text(), `November 2nd, 12:00am`, 'format-test-punt')\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/full-iso.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('full iso start+end tests', function (t) {\n  const context = {\n    timezone: 'Asia/Shanghai',\n    today: '2021-02-19', //friday\n    dayStart: '8:00am',\n    dayEnd: '8:00pm',\n  }\n  const arr = [\n    ['monday', '2021-02-22T08:00:00.000+08:00', '2021-02-22T20:00:00.000+08:00'],\n    ['monday at 3pm', '2021-02-22T15:00:00.000+08:00', '2021-02-22T20:00:00.000+08:00'],\n    ['monday 3pm to 5pm', '2021-02-22T15:00:00.000+08:00', '2021-02-22T17:00:00.000+08:00'],\n    ['9am to 5pm', '2021-02-19T09:00:00.000+08:00', '2021-02-19T17:00:00.000+08:00'],\n    ['9am to 5pm feb 26th', '2021-02-26T09:00:00.000+08:00', '2021-02-26T17:00:00.000+08:00'],\n    ['9am to 5am', '2021-02-19T05:00:00.000+08:00', '2021-02-19T09:00:00.000+08:00'],\n    ['4pm sharp on tuesday', '2021-02-23T16:00:00.000+08:00', '2021-02-23T20:00:00.000+08:00'],\n    ['tuesday 4pm sharp', '2021-02-23T16:00:00.000+08:00', '2021-02-23T20:00:00.000+08:00'],\n    ['tuesday 3:30 on the dot', '2021-02-23T15:30:00.000+08:00', '2021-02-23T20:00:00.000+08:00'],\n    ['3-4 on tuesday', '2021-02-23T15:00:00.000+08:00', '2021-02-23T16:00:00.000+08:00'],\n    ['3-5 on tues june 1st', '2021-06-01T15:00:00.000+08:00', '2021-06-01T17:00:00.000+08:00'],\n    ['3-5 on june 1st', '2021-06-01T15:00:00.000+08:00', '2021-06-01T17:00:00.000+08:00'],\n    ['3-4pm', '2021-02-19T15:00:00.000+08:00', '2021-02-19T16:00:00.000+08:00'],\n    // ['4pm-5', '2021-02-19T16:00:00.000+08:00', '2021-02-19T17:00:00.000+08:00'],\n    // ['','',''],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    const dates = doc.dates(context).get()[0] || {}\n    t.equal(dates.start, a[1], '[start] ' + a[0])\n    t.equal(dates.end, a[2], '[end] ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/fullDates.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nimport spacetime from 'spacetime'\n\n//number of days between start+end\nconst tests = [\n  {\n    today: [2016, 7, 13], //aug 13th (saturday)\n    tests: [\n      //days\n      ['today', 'today, Sat Aug 13th'],\n      ['yesterday', 'yesterday, Fri Aug 12th'],\n      ['tomorrow', 'tomorrow, Sun Aug 14th'],\n      ['september 5th', 'on Mon, Sept 5th'],\n      ['december seven', 'on Wed, Dec 7th'],\n      ['december seventh', 'on Wed, Dec 7th'],\n      ['december 14', 'on Wed, Dec 14th'],\n      ['december 14th', 'on Wed, Dec 14th'],\n      ['january 5th', 'on Thurs, Jan 5th, 2017'],\n      ['on april fools', 'on Sat, Apr 1st, 2017'],\n      ['next weekend', 'Aug 20th-21st'],\n      ['last weekend', 'Aug 6th-7th'],\n      ['next week', 'Aug 15th-21st'],\n      ['this month', 'Aug 1st-31st'],\n      ['sometime this month', 'Aug 1st-31st'],\n      ['next month', 'Sept 1st-30th'],\n      ['last month', 'Jul 1st-31st 2016'],\n      ['in february', 'Feb 1-28, 2017'],\n      // ['in 2018', 'Jan 1 - Dec 31, 2018'],\n      ['before 2017', 'by Sun, Jan 1st, 2017'],\n      ['by february', 'by Wed, Feb 1st, 2017'],\n      ['by tomorrow', 'today, Sat Aug 13th'], //!!\n      ['by september 5th', 'by Mon, Sept 5th'],\n      // ['by next weekend', 'by Sat, Aug 20th'],\n      ['before christmas', 'by Sun, Dec 25th'],\n      // ['after christmas', 'Dec 25th 2016 - Jan 8th 2017'],\n      // ['sometime after next week', 'Aug 19th - Sept 2nd 2016'],\n      // ['after next weekend', 'Aug 21st - Sept 4th 2016'],\n      ['september 5th 2018', 'on Wed, Sept 5th, 2018'],\n      ['on april fools 2020', 'on Wed, Apr 1st, 2020'],\n      ['june 5-7 1999', 'Jun 5-7, 1999'],\n      ['june 5 to 7, 1999', 'Jun 5-7, 1999'],\n      ['june 5th to 7, 1999', 'Jun 5-7, 1999'],\n      ['june 5th-7th 2017', 'Jun 5-7, 2017'],\n      // ['5th to 7 june, 1999', 'Jun 5-7, 1999'],\n      // ['5 to 7 august 1999', 'Aug 5-7, 1999'],\n      // ['15 to 20 of august 1999', 'Aug 15-20, 1999'],\n      ['15th - 20th of august', 'Aug 15-20'],\n      ['monday to wednesday', 'Aug 15th to Aug 17th'],\n    ],\n  },\n  {\n    today: [2016, 10, 23], //wed nov 23rd\n    tests: [\n      ['this month', 'nov 1 to nov 30'],\n      ['june twenty-first 1992', 'june 21 1992 - june 21 1992'],\n      ['this august', 'aug 1 2017 to aug 31 2017'],\n      ['the last weekend in october', 'Oct 28 to 29'],\n      ['the last weekend in october 2017', 'Oct 28 to 29, 2017'],\n      ['sometime tomorrow', 'Thu Nov 24th'],\n      ['on april fools 2020', 'Wed, Apr 1st, 2020'],\n      ['april fools at 5pm', 'Wed, Apr 1st, 2017 at 5:00pm'],\n      ['on the 18th', 'Sun, Dec 18th'],\n      ['this quarter', 'Oct 1st 2016 to Dec 31st 2016'],\n      // ['this morning at 9', 'Nov 23rd @ 9am'],\n      ['10 August 2012', 'Aug 10 2012'],\n      ['Sunday, March 6, 2016', 'Mar 6 2016'],\n      ['August 10 to 22, 2012', 'Aug 10 2012 to Aug 22 2012'],\n      ['May eighth, 2010', 'May 8 2010'],\n      ['May twenty-fourth, 2010', 'May 24 2010'],\n      ['Sep 2012', 'Sep 1 2012 to Sep 30 2012'],\n      ['Sept, 2012', 'Sep 1 2012 - Sep 30 2012'],\n      ['Sep-2012', 'Sep 1 2012 to Sep 30 2012'],\n      ['20/10/2012', 'Oct 20 2012'],\n      ['8/10/2012 - 8/15/2012', 'Aug 10 2012 - Aug 15 2012'],\n      ['05-25-2015', 'May 25 2015'],\n      ['5 Days ago', 'Nov 18 2016 to Nov 18 2016'],\n      ['Sunday 12/7/2014', 'Dec 7 2014 to Dec 7 2014'],\n      ['two weeks from now', 'Dec 7 2016'],\n      // ['two and a half weeks from now', 'Dec 11th 2016'],\n      // ['two sundays from now', 'Dec 4th 2016'],\n      // ['two mondays from now', 'Dec 5th 2016'],\n      // ['second weekend in 2019', 'Jan 12 to Jan 13, 2019'],\n      ['Jan 12 to Jan 13', 'Jan 12 2017 to Jan 13 2017'],\n      ['Jan 22 2017 to Jan 13 2018', 'January 22 2017 to January 13 2018'],\n      ['5 to 7 of january 1998', 'Jan 5th 1998 to Jan 7 1998'],\n      ['january 5 to 7 1998', 'Jan 5th 1998, to Jan 7 1998'],\n      ['third quarter 1998', 'july 1st 1998 to september 30th 1998'],\n      // ['middle of q1 2019', 'feb 12 2019'],\n      ['third day of 2019', 'jan 3rd 2019'],\n      ['third week of 2019', 'jan 14th to 20th 2019'],\n      ['third month of 2019', 'march 1 2019 to march 31th 2019'],\n      ['first weekend of 2019', 'january 5 2019 to jan 6th 2019'],\n      // ['the last week in 2019', 'dec 23rd 2019 to dec 29'],\n      // ['the first quarter in 2019', 'january 1st to march 31st 2019'],\n      // // ['the last quarter in 2019', 'october 1st to december 30th 2019'],\n      // ['last spring', 'march 1st 2015 to may 31st 2015'],\n      // ['this spring', 'march 1st 2016 to may 31st 2016'],\n      // ['next spring', 'march 1st 2017 to may 31st 2017'],\n      ['the first week of june', 'May 29th 2017 to June 4th 2017'],\n      ['22-23 Feb at 7pm', 'Feb 22 2017 7pm until Feb 23 2017'],\n      // ['22-23 Feb 2016 at 7pm', 'Feb 22 2016 to Feb 23 2016'],\n      ['Tuesday, 10 January', 'Jan 10 2017'],\n      ['Monday - Wednesday', 'Nov 28 - Nov 30'],\n      ['today to next friday', 'Nov 23 to Dec 2'],\n      // ['middle of q1 1998', 'Feb 12 1998'],\n      // ['within two weeks', 'Nov 23 to Dec 8'],\n      // ['within a month', 'Nov 23 - Dec 23'],\n      // ['within a few months', 'Nov 23 - Jan 23 2017'],\n      // ['1994-11-05T13:15:000Z', 'Nov 5 1994 1:15pm'],\n      ['August 10 to 22, 2012', 'Aug 10 2012 to Aug 22 2012'],\n      ['August 10-22, 2012', 'Aug 10 2012 to Aug 22 2012'],\n      // ['August 10 - November 12', 'Aug 10 2017 - Nov 12 2017'], //tricky\n      // ['August 10 - January 12', 'Aug 10 2017 - Jan 12 2018'], //tricky\n      ['May eighth to tenth, 2010', 'May 8 2010 to May 10 2010'],\n\n      // ['04/2016', 'Apr 4 2016'],\n      ['Tuesday 20/3/2015', 'march 20 2015'],\n      ['2015.08.13', 'Aug 13 2015'],\n      // ['this past mon', 'nov 21'],\n      // ['two mondays from now', 'dec 5 - dec 5'],\n      // ['2018 after june', 'jun 1 2018 - jun 15 2018'],\n      ['fourth quarter, 2002', 'oct 1 2002  thru dec 31 2002'],\n      ['thanksgiving 2018', 'nov 22 2018'],\n    ],\n  },\n  {\n    today: [2017, 0, 1], //jan 1st 2017\n    tests: [\n      ['this month', 'jan 1 2017 to jan 31 2017'],\n      // ['this spring', 'March 1st 2017 to May 31 2017'],\n      // ['this summer', 'june 1st 2017 to August 31 2017'],\n      // ['this fall', 'September 1st 2017 to November 30 2017'],\n      // ['this autumn', 'September 1st 2017 to November 30 2017'],\n      //     ['end of this summer', 'August 31 2017 - August 31 2017'], //-1 day\n      //     ['middle of this summer', 'Jul 13 2017 - Jul 13 2017'], //-6 weeks\n      // ['this winter', 'dec 1st 2017 to February 28 2018'],\n      // ['this spring', 'March 1 to May 31'],\n      // ['this spring', 'March 1 2017 to May 31 2017'],\n      // ['this fall', 'September 1 2017 to November 30 2017'],\n      // ['next winter', 'dec 1st 2018 to February 28 2019'],\n      // ['winter 2020', 'dec 1st 2020 to February 28 2021'],\n      // ['winter of 1992', 'dec 1st 1992 to February 28 1993'],\n      // ['spring 2015', 'March 1 2015 to May 31 2015'],\n      // ['fall 2012', 'September 1 2012 to November 30 2012'],\n      // ['autumn of 2013', 'September 1 2013 to November 30 2013'],\n      // ['last winter', 'December 1st 2015 through February 27 2016'], //last\n      // ['this winter', 'December 1st 2016 to February 27 2017'], //current\n      // ['next winter', 'December 1st 2017 until February 27 2018'], //next\n      // ['end of this winter', 'February 28 2016 to February 28 2016'], //end\n    ],\n  },\n]\n\nconst fmt = function (str) {\n  return spacetime(str).format('nice')\n}\n\ntest('full-dates', (t) => {\n  tests.forEach((obj) => {\n    const context = {\n      today: obj.today,\n      timezone: 'Canada/Pacific',\n    }\n    obj.tests.forEach((a) => {\n      const left = nlp(a[0]).dates(context).json()[0] || {}\n      // ensure we found no date, if we shouldn't have\n      if (!a[1]) {\n        t.equal(left, undefined, 'no-date:' + a[0])\n        return\n      }\n      const right = nlp(a[1]).dates(context).json()[0] || {}\n      left.dates = left.dates || {}\n      right.dates = right.dates || {}\n      t.equal(fmt(left.dates.start), fmt(right.dates.start), '[start] ' + a[0])\n      t.equal(fmt(left.dates.end), fmt(right.dates.end), '[end] ' + a[0])\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/has-date.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('has a date', function (t) {\n  const arr = [\n    'July 13 through 15',\n    `this minute`,\n    '1 hour ago',\n    '5 days ago',\n    '8:00 p.m. February 11',\n    '5pm on may 27th',\n    '2 weekends ago',\n    'jan 3 2010 at 4',\n    `11:00 at night`,\n    `4:00 in the evening`,\n    'midday February 11',\n    'this evening',\n    'this day',\n    '6 months hence',\n    'tues',\n    `2012-06`,\n    '1 fortnight ago',\n    `1:00:00 PM`,\n    'first monday of january',\n    `3rd month next year`,\n    `3 in the morning`,\n    `12:15PM`,\n    `in a few years`,\n    `in a couple years`,\n    `in 2 years`,\n    `this morning at 7:30`,\n    `this evening at 7:30`,\n    `before 1999`,\n    `2 weeks back`,\n    `eom`,\n    `eod`,\n    `eoy`,\n    'next q4',\n    `last yr`,\n    `a quarter past 4`,\n    '13:45',\n    '22 sept',\n    `may '97`,\n    `Thu 16th`,\n    // timezone\n    `9 eastern time`,\n    `9am est`,\n    `9am peru time`,\n    `9am GMT+9`,\n\n    // relative duration\n    // `this march`,\n    `this week`,\n    `this sunday`,\n    `next april`,\n    `this past year`,\n    `second week of march`,\n    `last weekend of march`,\n    `last spring`,\n    `the saturday after next`,\n\n    // punt\n    `two days after tomorrow`,\n    `in seven weeks`,\n    `2 weeks from now`,\n    `2 weeks after`,\n    `2 years 4 months 5 days ago`,\n    `a week friday`,\n    `a week and a half before`,\n    `on the 1st`,\n\n    // start/end\n    `end of the week`,\n    `start of next year`,\n    `start of next year`,\n    `middle of q2 last year`,\n    `09.08.2013`,\n    `13h30`,\n    'last quarter',\n  ]\n  arr.forEach(function (str) {\n    const doc = nlp(str)\n    t.equal(doc.dates().length, 1, str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/misc.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nimport spacetime from 'spacetime'\n\nconst fmt = (iso) => (iso ? spacetime(iso).format('{iso-short}') : '-')\n\ntest('misc dates', function (t) {\n  const doc = nlp('my birthday is June 5th 1998')\n  t.equal(doc.dates().length, 1, 'one-date')\n\n  const json = doc.dates().json({ normal: true })\n  t.equal(json[0].normal, 'june 5th 1998', 'date-normal')\n\n  t.end()\n})\n\ntest('parsed today shorthand', function (t) {\n  const context = {\n    today: 'Dec 12th 2020',\n    timezone: 'Canada/Pacific',\n  }\n  const doc = nlp('today')\n  const found = doc.dates(context).json()[0] || {}\n  t.equal(fmt(found.dates.start), '2020-12-12', 'today shorthand')\n  t.end()\n})\n\ntest('never allow end > start', (t) => {\n  const context = {\n    today: 'january 5 2018',\n  }\n  const arr = ['eat eggs june 5th to june 7th', 'eat eggs june 5th to 7th', 'eat eggs june 7th to june 5th']\n  arr.forEach((str) => {\n    const json = nlp(str).dates(context).json()[0] || {}\n    const start = spacetime(json.dates.start)\n    const end = spacetime(json.dates.end)\n    t.equal(start.isBefore(end), true, str)\n  })\n  t.end()\n})\n\ntest('durations are not dates', function (t) {\n  let doc = nlp('it took 20 minutes')\n  t.equal(doc.dates().length, 0, 'no-dates')\n  t.equal(doc.durations().length, 1, 'one-duration')\n\n  doc = nlp('it took 20mins')\n  t.equal(doc.dates().length, 0, 'no-dates-compact')\n  t.equal(doc.durations().length, 1, 'one-duration-compact')\n  t.end()\n})\n\ntest('lists of days', function (t) {\n  let doc = nlp('tuesday, wednesday, or friday')\n  t.equal(doc.dates().length, 3, '3-dates in list')\n\n  doc = nlp('wednesday, friday, and sunday')\n  t.equal(doc.dates().length, 3, '3-dates in AND list')\n\n  t.end()\n})\n\ntest('tagger does not mutate text', function (t) {\n  const arr = ['in a hour', 'in an hour', 'jan and tues the third', 'tmrw the second', 'JAN and WeD']\n  arr.forEach((str) => {\n    const doc = nlp(str)\n    doc.dates()\n    t.equal(doc.text(), str, str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/phrase.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('date-phrase tests:', function (t) {\n  const arr = [\n    [`remind me to buy eggs`, `buy`, `egg`, ``],\n    [`please remind me to buy eggs`, `buy`, `egg`, ``],\n    [`i really should buy some eggs`, `buy`, `egg`, ``],\n    [`i need to remember to buy the eggs`, `buy`, `egg`, ``],\n    [`i really ought to buy us some eggs`, `buy`, `egg`, ``],\n    [`remember to buy eggs tomorrow`, `buy`, `egg`, `tomorrow`],\n    [`i should buy eggs for the kids on sunday`, `buy`, `egg`, `on sunday`],\n    [`when i'm at work, buy some eggs for kathrine`, `buy`, `egg`, ``],\n    [`it's important that i return the library books`, `return`, `library book`, ``],\n    [`please tell john to walk the dogs each night`, `tell`, `john`, `each night`],\n    [`don't forget to remind me about returning the library books`, `return`, `library book`, ``],\n    [`i've gotta buy some paint for the ceiling on monday`, `buy`, `paint`, `on monday`],\n    [`if i'm free, return the books to the library`, `return`, `book`, ``],\n    [`bring back the library books`, `bring back`, `library book`, ``],\n    [`all the books need to be brought back by tuesday`, `bring back`, `book`, `by tuesday`],\n    [`bring the paint cans to the dump with johnny on tuesday`, `bring`, `paint can`, `on tuesday`],\n    [`vote on tuesday`, `vote`, ``, `on tuesday`],\n    // [`vote after work`, `vote`, ``, `after work`],\n    [`buy some bananas`, `buy`, `banana`, ``],\n    [`cancel subscription to netflix`, `cancel`, `subscription`, ``],\n    [`fixup all the credit cards I lost`, `fixup`, `credit card`, ``],\n    [`hey Joseph, i gotta get my homework finished tonight`, ``, `homework`, `tonight`],\n    [`workshop some idea with fred`, `workshop`, `idea`, ``],\n    [`bust open the screen door by the gate`, `bust open`, `screen door`, ``],\n    [`widen the cabinet to fit my playstation`, `widen`, `cabinet`, ``],\n    [`call up the architecture firm`, `call up`, `architecture firm`, ``],\n    [`find a dogsitter`, `find`, `dogsitter`, ``],\n    [`call amber`, `call`, `amber`, ``],\n    [`fire debrah`, `fire`, `debrah`, ``],\n    [`tell jude to make it better`, `tell`, `jude`, ``],\n    [`remind fred to buy shoes`, `remind`, `fred`, ``],\n    [`create a business plan`, `create`, `business plan`, ``],\n    [`sell the hotdogs at wrigley on friday`, `sell`, `hotdog`, `on friday`],\n    [`i'm worried about forgetting amber's necklace`, ``, ``, ``],\n    [`reply to frank about sausage rolls for the wedding meal`, `reply`, `frank`, ``],\n    [`book the flight to chicago and figure out those details`, `book`, `flight`, ``],\n    [`sell the computer on ebay`, `sell`, `computer`, ``],\n    [`remember to sell the computer tomorrow on ebay`, `sell`, `computer`, `tomorrow`],\n    [`set your alarm at 6:15`, `set`, `alarm`, `at 6:15`],\n    [`coroborate details wit anna about thanksgiving`, `coroborate`, `detail`, `thanksgiving`],\n    [`drive to hamilton`, `drive`, `hamilton`, ``],\n    [`remind me to drive to waterloo on thursday night`, `drive`, `waterloo`, `on thursday night`],\n    [`remind me to get snow tires`, `get`, `snow tire`, ``],\n    [`archive my family photos`, `archive`, `family photo`, ``],\n    [`before the landlord comes, test the smoke alarm`, `test`, `smoke alarm`, ``],\n    [`send the lab samples to houston`, `send`, `lab sample`, ``],\n    // [`archive all details before tuesday's meeting`, `archive`, `detail`, ``], //hmm\n    [`if jude is late, send her an email`, `send`, `email`, ``],\n    [`have a talk with amber about her instagram account`, `have a talk`, `talk`, ``],\n    [`reply to all my emails in the morning`, `reply`, `email`, `in the morning`],\n    // [`ask june to sell off all my assets in the meeting`, `ask`, `june`, ``],\n    [`don't forget about sending dad a postcard from jupiter`, `send`, `dad`, ``],\n    [`all unique ids need to enter the database`, `need to enter`, `database`, ``],\n    [`reply to that guy on okcupid`, `reply`, `guy`, ``],\n    // [`send a message to dad thanking him for sunday`, `send`, `message`, ``],\n    [`add up the costs of vacationing and equip john with the totals`, `add up`, `cost`, ``],\n    // [`terminate all relations with monica immediately`, `terminate`, `relation`, `immediately`],\n    [`confirm the totals precede the tax return`, `confirm`, `total`, ``],\n    [`make-up the bed and clean the sheets`, `make-up`, `bed`, ``],\n    [`clean the appartment and do the dishes`, `clean`, `appartment`, ``],\n    [`keep the appartment clean`, `keep`, `appartment`, ``],\n    [`add the reciepts up and guarantee a clear decision`, `add`, `reciept`, ``],\n    [`grab some groceries tomorrow for the sale`, `grab`, `grocery`, `tomorrow`],\n    [`keep tabs on danny this week and ensure he's ok with sandra`, `keep tabs on`, `danny`, `this week`],\n    [`write more documentation`, `write`, `documentation`, ``],\n    [`please tell me to upload the spreadsheet for danny on friday`, `upload`, `spreadsheet`, `on friday`],\n    [`work-up the courage to ask stephanie out`, `work-up`, `courage`, ``],\n    [`saturday date with sandra`, ``, `date`, `saturday`],\n    [`lunch with Dr. Salvonio on tuesday at 10`, ``, `lunch`, `on tuesday at 10`],\n    [`sell the raptors tickets for valentines day`, `sell`, `raptors ticket`, `valentines day`],\n    [`bridge with daisy and her sisters`, ``, `bridge`, ``],\n    [`work-out tomorrow`, `work-out`, ``, `tomorrow`],\n    [`book club every wednesday`, ``, `book club`, `every wednesday`],\n    [`sell the rights to my autobiography to judy on instagram`, `sell`, `right`, ``],\n    [`remind john to sell his tesco shares`, `sell`, `tesco share`, ``],\n    [`keep water levels below 15%`, `keep`, `water level`, ``],\n    [`wait for john to pick up his pizza at pizza hut`, `wait`, `john`, ``],\n    [`sanitize the database against xss attacks`, `sanitize`, `database`, ``],\n    [`ensure nobody enters the area`, `ensure`, `nobody`, ``],\n    [`buy three newspapers for fishing lure`, `buy`, `three newspaper`, ``],\n    [`John tell me to buy cheeseburgers tuesday night for everybody`, `buy`, `cheeseburger`, `tuesday night`],\n    [`so i'd like to watch the space shuttle launch tonight`, `watch`, `space shuttle`, `tonight`],\n    [`buy a cello on amazon.com or find one on instagram`, `buy`, `cello`, ``],\n    [`date stephanie on tuesday night and buy flowers`, `date`, `stephanie`, `on tuesday night`],\n    [`forge a relationship with the investors over christmas`, `forge`, `relationship`, `over christmas`],\n    [`wait until july to tell investors about daniel's suit`, `tell`, `investor`, `until july`],\n    [`in august, buy june some flowers`, `buy`, `flower`, `in august`],\n    [`accept credit cards over email`, `accept`, `credit card`, ``],\n    // [`turn the radio down each weeknight`, `turn`, `radio`, `each weeknight`], //tricky\n    [`allow users to create new artifacts`, `allow`, `user`, ``],\n    [`by february, tell new users we accept donations`, `tell`, `new user`, `by february`],\n    // [`normalize all usernames to the main dataset at some point`, `normalize`, `username`, `at some point`],\n    // [`eat carrots once a week`, `eat`, `carrot`, `once a week`],\n    [`tell sam not to engage in insider trading when he calls`, `tell`, `sam`, ``],\n    [`set alarm next tuesday`, `set`, `alarm`, `next tuesday`],\n    [`buy all apples from tesco before they run out`, `buy`, `apple`, ``],\n    [`ask fred to buy some apples from tescos`, `buy`, `apple`, ``],\n    [`hey check my stocks in the morning`, `check`, `stock`, `in the morning`],\n    [`ask jaqueline about turnip chips`, `ask`, `turnip chip`, ``],\n    [`so, remind me to ask jaqueline where she bought those chips`, `ask`, `chip`, ``],\n    [`chill the wine before the party`, `chill`, `wine`, ``],\n    [`turn apples into applejuice and put them in the refridgerator`, `turn`, `apple`, ``],\n    [`eat the old pizza before it goes bad`, `eat`, `pizza`, ``],\n    [`pack a lunch for danny and sam on sunday morning`, `pack`, `lunch`, `on sunday morning`],\n    [`set the correct time on my watch once the plane lands`, `set`, `time`, ``],\n    [`remember to send everyone a reminder that taxes are non-negotiable`, `send`, `reminder`, ``],\n    [`check the mailbox in the morning`, `check`, `mailbox`, `in the morning`],\n    [`take out the garbage every thursday`, `take out`, `garbage`, `every thursday`],\n    [`monitor subscription lifecycles`, `monitor`, `subscription lifecycle`, ``],\n    [`don't forget about monitoring subscription lifecycles`, `monitoring`, `subscription lifecycle`, ``],\n    [`use-case analysis project due by friday`, ``, ``, `due by friday`],\n    // [`charge phone before going to bed`, `charge`, `phone`, `before going to bed`], //tricky\n    [`remember to log hours for bookkeeping`, `log`, `hour`, ``],\n    [`this tuesday, buy a new microphone`, `buy`, `microphone`, `this tuesday`],\n    [`grab a new monitor when i'm shopping next weekend`, `grab`, `monitor`, `next weekend`],\n    [`don't forget to buy headphones before the flight`, `buy`, `headphone`, ``],\n    [`buy mangoes`, `buy`, `mango`, ``],\n    [`slide the cabinet door all the way closed before leaving`, `slide`, `cabinet door`, ``],\n    [`i gotta pay rent friday. don't let me forget`, `pay`, `rent`, `friday`],\n    [`make sure the chores are done by tuesday`, `make sure`, `chore`, `by tuesday`],\n    [`help hunter with the golf clubs this coming monday`, `help`, `golf club`, `this coming monday`],\n    [`turn down the birthday invite`, `turn down`, `birthday invite`, ``],\n    [`set all dials to repeat mode after this weekend`, `set`, `dial`, `after this weekend`],\n    [`ensure floors are clean before jin arrives`, `ensure`, `floor`, ``],\n    [`wash the floor each week after new years`, `wash`, `floor`, `each week after new years`],\n    [`remember to read that washington post article about affluenza`, `read`, `washington post article`, ``],\n    [`post a tweet about consumerism on april fools day`, `post`, `tweet`, `on april fools day`],\n    // [`i need to repay sandra for her dinner yesterday before april`, `repay`, `sandra`, `yesterday`],\n    [`i should remember the library books`, `remember`, `library book`, ``],\n    [`i should remember to eat more brocolli`, `eat`, `brocolli`, ``],\n    [`all the bills are what I need to pay by tuesday`, `bills`, `pay`, `by tuesday`],\n  ]\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    // let verb = doc.verbs(0).out('reduced')\n    // t.equal(verb, a[1], a[0])\n\n    // let noun = doc\n    //   .nouns(0)\n    //   .toSingular()\n    //   .out('reduced')\n    // t.equal(noun, a[2], a[0])\n\n    const date = doc.match('#Date+').first().out('reduced')\n    t.equal(date, a[3], a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/startDates.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nimport spacetime from 'spacetime'\n//single-date tests\n\n//yep,\nconst january = 0\nconst february = 1\nconst march = 2\nconst april = 3\nconst may = 4\nconst june = 5\nconst july = 6\nconst august = 7\nconst september = 8\nconst october = 9\nconst november = 10\nconst december = 11\n\nconst tests = [\n  {\n    today: [2016, february, 11],\n    tests: [\n      ['march 2nd', [2016, march, 2]],\n      ['2 march', [2016, march, 2]],\n      ['2 march 2016', [2016, march, 2]],\n      ['march 2nd', [2016, march, 2]],\n      ['2nd of march', [2016, march, 2]],\n      ['2nd of march, 2016', [2016, march, 2]],\n      ['march 2nd, 2016', [2016, march, 2]],\n      ['march 22nd', [2016, march, 22]],\n      ['tuesday march 22nd', [2016, march, 22]],\n      ['tuesday march 22nd, 2016', [2016, march, 22]],\n      ['april the 22nd', [2016, april, 22]],\n      ['22 april', [2016, april, 22]],\n      ['22 april 2016', [2016, april, 22]],\n      ['april 22nd', [2016, april, 22]],\n      ['22nd of april', [2016, april, 22]],\n      ['the 22nd of april, 2016', [2016, april, 22]],\n      ['april 1st, 2016', [2016, april, 1]],\n      ['april 1st', [2016, april, 1]],\n      ['tuesday, april the 1st', [2016, april, 1]],\n      ['tuesday april 1st, 2016', [2016, april, 1]],\n      ['2pm', [2016, february, 11]],\n      ['2:12', [2016, february, 11]],\n      ['2:12am', [2016, february, 11]],\n      ['2:12 pm', [2016, february, 11]],\n      ['2pm est', [2016, february, 11]],\n      ['2pm eastern', [2016, february, 11]],\n      ['2pm eastern time', [2016, february, 11]],\n      ['2pm pacific standard time', [2016, february, 11]],\n      ['march 2nd', [2016, march, 2]],\n      ['march 2nd at 2pm', [2016, march, 2]],\n      ['march 2nd at 2pm EST', [2016, march, 2]],\n      ['march 2nd at 2pm Eastern standard', [2016, march, 2]],\n      ['march 2nd at 2pm Eastern time', [2016, march, 2]],\n      ['march 2nd at 2pm Eastern standard time', [2016, march, 2]],\n      ['march 2nd at 2pm UTC+5', [2016, march, 2]],\n      ['4pm on march 2nd', [2016, march, 2]],\n      ['4:32 on march 2nd', [2016, march, 2]],\n      ['@ march 2nd', [2016, march, 2]],\n      ['@ 5pm pacific time march 2nd', [2016, march, 2]],\n      ['2 oclock march 2nd', [2016, march, 2]],\n      ['march 2nd 2 oclock', [2016, march, 2]],\n      ['march 2nd @ 2pm', [2016, march, 2]],\n      ['march 2nd @2pm', [2016, march, 2]],\n      ['march 2nd @ 2:02', [2016, march, 2]],\n      ['march 2nd after 2:00', [2016, march, 2]],\n      ['today after 2:00', [2016, february, 11]],\n      ['tommorrow before noon', [2016, february, 12]],\n      ['tomorrow before 3', [2016, february, 12]],\n      ['july 5th at 2pm', [2016, july, 5]],\n      ['july 5th, 2:12', [2016, july, 5]],\n      ['4:23am july 5th ', [2016, july, 5]],\n      ['july 5th 2pm PST', [2016, july, 5]],\n      ['1pm pacific time, july 5th ', [2016, july, 5]],\n      ['july 5th before noon pacific time', [2016, july, 5]],\n      ['3:23 EST july 5th ', [2016, july, 5]],\n      ['2 oclock july 5th ', [2016, july, 5]],\n      ['july 5 2016 12 oclock PST', [2016, july, 5]],\n      ['3:23 eastern standard time july 5', [2016, july, 5]],\n      ['new years eve', [2016, december, 31]],\n      ['april fools', [2016, april, 1]],\n      ['april fools at 5pm', [2016, april, 1]],\n      ['april fools, 2016', [2016, april, 1]],\n      ['1999/12/25', [1999, december, 25]],\n      ['1999-12-25', [1999, december, 25]],\n      ['12/25/1999', [1999, december, 25]],\n      ['12-25-1999', [1999, december, 25]],\n      ['25-12-1999', [1999, december, 25]],\n      ['25-12-1999 12:32', [1999, december, 25]],\n      ['25-12-1999 12:32:00', [1999, december, 25]],\n      ['2016/03/13', [2016, march, 13]],\n      ['03/13/2016 at 2:00', [2016, march, 13]],\n      ['2016/13/03', [2016, march, 13]],\n      ['13/03/2016 before 11', [2016, march, 13]],\n      ['q1 2002', [2002, january, 1]],\n      ['fourth quarter, 2002', [2002, october, 1]],\n      ['fourth quarter', [2016, october, 1]],\n      ['spring 2002', [2002, march, 1]],\n      // ['this march', [2016, march, 1]], //fixme\n      ['first week of january', [2016, december, 26]],\n      ['first week of february', [2016, february, 1]],\n      // ['first week of march', [2016, february, 29]],//awkward\n      // ['first week of april', [2016, april, 4]],\n      // ['first week of may', [2016, may, 2]],\n      ['first week of june', [2016, may, 30]],\n      // ['first week of july', [2016, july, 4]],\n      ['first week of august', [2016, august, 1]],\n      ['first week of september', [2016, august, 29]],\n      // ['first week of october', [2016, october, 3]],\n      ['first week of november', [2016, october, 31]],\n      ['first week of december', [2016, november, 28]],\n      ['second week of february', [2016, february, 8]],\n      ['2nd week of february', [2016, february, 8]],\n      ['tomorrow', [2016, february, 12]],\n      ['the next day', [2016, february, 12]],\n      // ['the day after next', [2016, february, 13]],\n      ['day after tomorrow', [2016, february, 13]],\n      // ['the last weekend in october', [2016, october, 29]],\n      // ['the last weekend this month', [2016, february, 27]],\n    ],\n  },\n\n  {\n    today: [2016, february, 10],\n    tests: [\n      // last date chunk wins - part 3, arbitrary edition\n      ['due on the 6th', [2016, march, 6]],\n      ['on the 6th', [2016, march, 6]],\n      // ['6th yesterday', [2016, february, 9]],\n      // ['6 yesterday', [2016, february, 9]],\n      // ['today the 6th', [2016, march, 6]],\n      // ['today on the 6th', [2016, march, 6]],\n      // ['6th today', [2016, february, 10]],\n      // ['6 today', [2016, february, 10]],\n      // ['tomorrow the 6th', [2016, march, 6]],\n      // ['tomorrow on the 6th', [2016, march, 6]],\n      // ['6th tomorrow', [2016, february, 11]],\n      // ['6 tomorrow', [2016, february, 11]],\n      ['friday the 6th', [2016, march, 6]],\n      ['friday on the 6th', [2016, march, 6]],\n      // ['6th on friday', [2016, february, 12]],\n      // ['6th this friday', [2016, february, 12]],\n      // ['6 on friday', [2016, february, 12]],\n      // ['6 this friday', [2016, february, 12]],\n      // ['next week on the 6th', [2016, march, 6]],\n      // ['6th next week', [2016, february, 15]],\n      // ['6 next week', [2016, february, 15]],\n      // ['6 on next week', [2016, february, 15]],\n      // ['6 this next week', [2016, february, 15]],\n    ],\n  },\n  {\n    today: [2011, march, 28], //monday\n    tests: [\n      ['yesterday', [2011, march, 27]],\n      ['tomorrow', [2011, march, 29]],\n      ['tmrw', [2011, march, 29]],\n      ['in 3 days', [2011, march, 31]],\n      ['3 days ago', [2011, march, 25]],\n      ['in 3 weeks', [2011, april, 18]],\n      ['four weeks ago', [2011, february, 28]],\n      ['in 3 months', [2011, june, 28]],\n      ['three months ago', [2010, december, 28]],\n      ['in 3 years', [2014, march, 28]],\n      ['seven years ago', [2004, march, 28]],\n      ['60 years ago', [1951, march, 28]],\n      ['2 days ago', [2011, march, 26]],\n      ['365 days from now', [2012, march, 27]],\n      // ['100 months now', [2019, july, 28]],\n      ['100 years from now', [2111, march, 28]],\n      ['next monday', [2011, april, 4]],\n      ['next mon', [2011, april, 4]],\n      // ['4 mondays from now', [2011, april, 25]],\n      // ['4 mondays from today', [2011, april, 25]],\n      ['next weekend', [2011, april, 9]],\n      // ['six mondays ago', [2011, february, 21]],\n      ['last monday', [2011, march, 21]],\n      ['last mon', [2011, march, 21]],\n      // ['this past mon', [2011, march, 21]],\n      ['this coming mon', [2011, april, 4]],\n      ['this upcoming mon', [2011, april, 4]],\n      // ['next thurs', [2011, april, 7]],\n      ['next month', [2011, april, 1]],\n      ['last month', [2011, february, 1]],\n      ['next week', [2011, april, 4]],\n      ['last week', [2011, march, 21]],\n      ['next year', [2012, january, 1]],\n      ['this year', [2011, january, 1]], //?\n      ['last year', [2010, january, 1]],\n      // ['tues this week', [2011, march, 29]],\n      // ['tuesday this week', [2011, march, 29]],\n      // ['tuesday next week', [2011, april, 5]],\n      ['this september', [2011, september, 1]],\n      // ['in a september', [2011, october, 1]],\n      // ['in an october', [2011, november, 1]],\n      ['september', [2011, september, 1]],\n      ['last september', [2010, september, 1]], //fixme\n      // ['next september', [2011, september, 1]],\n      ['january', [2012, january, 1]],\n      // ['next january', [2013, january, 1]],\n      ['last january', [2011, january, 1]],\n      // ['next february', [2012, february, 1]],\n      // ['last february', [2011, february, 1]],\n      ['february ', [2012, february, 1]],\n      ['in a year', [2012, march, 28]],\n      ['in a week', [2011, april, 4]],\n      // ['the saturday after next', [2011, april, 16]],\n      // ['the monday after next', [2011, april, 11]],\n      // ['the monday after next monday', [2011, april, 14]],\n      // ['the monday before May 25', [2011, june, 23]],\n      // ['the 2nd monday before May 25', [2011, june, 16]],\n      // ['3 mondays after May 25', [2011, july, 13]],\n      // ['tuesday before last', [2011, march, 15]],\n      ['a week from now', [2011, april, 4]],\n      ['a month from today', [2011, april, 28]],\n      ['a week after this friday', [2011, april, 8]],\n      ['a week from this friday', [2011, april, 8]],\n      ['two weeks from this friday', [2011, april, 15]],\n      //     // ['the second week after this friday', [2011, april, 15]],\n      // ['A week on tuesday', [2011, april, 5]],\n      ['A month ago', [2011, february, 28]],\n      ['A week ago', [2011, march, 21]],\n      ['A year ago', [2010, march, 28]],\n      ['this month', [2011, march, 1]],\n      ['current month', [2011, march, 1]],\n      ['the current week', [2011, march, 28]],\n      ['current year', [2011, january, 1]],\n      // ['first monday in 1 month', [2011, april, 4]],\n      // ['first monday of month in 1 month', [2011, april, 4]],\n      // ['first monday of 1 month', [2011, april, 4]],\n      // ['first monday in 2 months', [2011, may, 2]],\n      // ['first monday of 2 months', [2011, may, 2]],\n      // ['first monday of month 2 months', [2011, may, 2]],\n      // ['first monday of month in 2 months', [2011, may, 2]],\n      // ['first monday in 3 months', [2011, june, 6]],\n      // ['first monday of 3 months', [2011, june, 6]],\n      // ['first monday of month in 3 months', [2011, june, 6]],\n      ['1 year 9 months from now', [2012, december, 28]],\n      // ['1 year 9 months 1 day from now', [2012, december, 29]],\n      ['2 years 4 months ago', [2008, november, 28]],\n      // ['2 years 4 months 5 days ago', [2008, november, 23]],\n    ],\n  },\n  {\n    today: [2016, february, 5], // a friday\n    tests: [\n      // //referenced nearby days\n      ['this saturday', [2016, february, 6]], //tomorrow\n      ['sunday', [2016, february, 7]],\n      ['mon', [2016, february, 8]],\n      ['tuesday', [2016, february, 9]],\n      // ['next wed', [2016, february, 10]],\n      // ['this thurs', [2016, february, 11]],\n      // ['this friday', [2016, february, 12]], //not today\n      ['next friday', [2016, february, 12]], //not today\n      // ['friday', [2016, february, 12]], //not today\n      // start/end of week\n      ['this weekend', [2016, february, 6]], //tomorrow\n      ['next weekend', [2016, february, 13]],\n      // ['end of this week', [2016, february, 5]], //friday (today)\n      ['next week', [2016, february, 8]], //monday\n      // ['start of next week', [2016, february, 8]],\n      // ['end of next week', [2016, february, 12]], //friday\n      //punted weeks with days\n      ['this monday', [2016, february, 8]],\n      // ['two mondays from now', [2016, february, 22]],\n      // ['3 mondays from now', [2016, february, 29]],\n      // ['three sundays from now', [2016, february, 28]],\n      // ['four mondays from now', [2016, march, 22]], //todo: bug\n      // ['next monday', [2016, february, 8]],\n      // ['monday next week', [2016, february, 8]],\n      // ['the monday after next', [2016, february, 15]],\n      // ['the tuesday after next', [2016, february, 16]],\n      // ['three thursdays from now', [2016, february, 25]],\n    ],\n  },\n  {\n    today: [2016, april, 19],\n    tests: [\n      ['4pm', [2016, april, 19]],\n      ['03/03/2016', [2016, march, 3]],\n      ['june fifth 2016', [2016, june, 5]],\n      ['june five 2016', [2016, june, 5]],\n      ['new years', [2017, january, 1]],\n      ['tomorrow', [2016, april, 20]],\n      ['this june', [2016, june, 1]], //relyear\n      // ['third week of may', [2016, may, 16]], //relmonth\n      ['this weekend', [2016, april, 23]], //relweek\n      ['next weekend', [2016, april, 30]],\n      ['summer 1992', [1992, june, 1]],\n      ['one hour from today', [2016, april, 19]],\n      ['24 hours from today', [2016, april, 20]],\n      ['two days from today', [2016, april, 21]],\n      ['two weeks from today', [2016, may, 3]],\n      ['two months from today', [2016, june, 19]],\n      ['three years from today', [2019, april, 19]],\n      ['three years after yesterday', [2019, april, 18]],\n      ['a month after yesterday', [2016, may, 18]],\n      ['a month after new years', [2017, february, 1]],\n      // ['2 hours after midnight', [2016, april, 20]],\n      // ['the last weekend this month', [2016, april, 30]],\n      // ['the last weekend of this month', [2016, april, 30]]\n    ],\n  },\n  {\n    today: [2016, may, 11],\n    tests: [\n      ['on the 18th', [2016, may, 18]],\n      ['may 11th', [2016, may, 11]],\n      ['thursday the 12th', [2016, may, 12]],\n      ['may 13', [2016, may, 13]],\n      ['may the 17th', [2016, may, 17]],\n      ['may 18th', [2016, may, 18]],\n      ['may ninth', [2016, may, 9]],\n      ['may nineteenth', [2016, may, 19]],\n      ['may 24', [2016, may, 24]],\n      ['may twenty five', [2016, may, 25]],\n      ['may 26th', [2016, may, 26]],\n      ['this friday', [2016, may, 13]],\n      // ['this wednesday', [2016, may, 18]],\n      // ['next tuesday', [2016, may, 17]],\n      ['two days after may 26th', [2016, may, 28]],\n      // ['two days after next tuesday', [2016, may, 19]],\n      ['may 12th, 2018', [2018, may, 12]],\n      // ['last week of february', [2017, february, 20]],\n      // ['first week of march 2019', [2019, march, 4]],\n      ['by next week', [2016, may, 11]],\n      ['before next week', [2016, may, 11]],\n      // ['after next week', [2016, may, 20]],\n      ['thanksgiving 2018', [2018, november, 22]],\n      ['two weeks after thanksgiving, 2018', [2018, december, 6]],\n      ['june 5th to august 19th', [2016, june, 5]],\n      ['between june 5th and august 19th 2017', [2016, june, 5]],\n      ['two days before christmas', [2016, december, 23]],\n      ['christmas', [2016, december, 25]],\n    ],\n  },\n  {\n    today: [2017, may, 11],\n    tests: [\n      ['thanksgiving', [2017, november, 23]],\n      ['two weeks after thanksgiving', [2017, december, 7]],\n      ['this thanksgiving', [2017, november, 23]],\n    ],\n  },\n  {\n    today: [2016, may, 11], //wednesday\n    tests: [\n      ['july 5th', [2016, july, 5]],\n      ['on july 5th', [2016, july, 5]],\n      // ['5/25', [2016, may, 25]],\n      // ['in the next week', [2016, may, 16]],\n      ['next week', [2016, may, 16]],\n      ['may nineteenth', [2016, may, 19]],\n      // ['next thursday', [2016, may, 19]],\n      // ['next tuesday', [2016, may, 17]],\n      ['first week of march 2019', [2019, february, 25]],\n      ['by next week', [2016, may, 11]],\n      ['before next week', [2016, may, 11]],\n      // ['after next week', [2016, may, 20]],\n      ['two days before christmas', [2016, december, 23]],\n      ['today', [2016, may, 11]],\n      ['wednesday', [2016, may, 11]],\n      ['in 8 days', [2016, may, 19]],\n      ['between june 5th and august 19th 2017', [2016, june, 5]], //....\n      ['tomorrow early in the day', [2016, may, 12]],\n      ['tomorrow morning', [2016, may, 12]],\n      ['tomorrow am', [2016, may, 12]],\n      ['tomorrow pm', [2016, may, 12]],\n      ['tomorrow noon', [2016, may, 12]],\n      ['tomorrow afternoon', [2016, may, 12]],\n      ['tomorrow evening', [2016, may, 12]],\n      ['tomorrow night', [2016, may, 12]],\n      ['tomorrow late night', [2016, may, 12]],\n      ['tomorrow late at night', [2016, may, 12]],\n    ],\n  },\n  {\n    today: [2016, october, 28], //friday\n    tests: [\n      ['saturday morning', [2016, october, 29]],\n      ['saturday early in the day', [2016, october, 29]],\n      ['saturday am', [2016, october, 29]],\n      ['saturday pm', [2016, october, 29]],\n      ['saturday noon', [2016, october, 29]],\n      ['saturday afternoon', [2016, october, 29]],\n      ['saturday evening', [2016, october, 29]],\n      ['saturday night', [2016, october, 29]],\n      ['saturday late night', [2016, october, 29]],\n      ['saturday late at night', [2016, october, 29]],\n    ],\n  },\n  {\n    //this/next/last\n    today: [2016, october, 4], //a tuesday\n    tests: [\n      //(implicit)\n      ['wednesday', [2016, october, 5]],\n      ['thurs', [2016, october, 6]],\n      ['fri', [2016, october, 7]],\n      ['on sat', [2016, october, 8]],\n      ['sunday', [2016, october, 9]],\n      ['monday', [2016, october, 10]],\n      ['tuesday', [2016, october, 4]],\n      //this\n      ['this wednesday', [2016, october, 5]],\n      ['this thurs', [2016, october, 6]],\n      ['this friday', [2016, october, 7]],\n      ['this saturday', [2016, october, 8]],\n      ['this sunday', [2016, october, 9]],\n      ['this monday', [2016, october, 10]],\n      ['this tuesday', [2016, october, 4]],\n      //next\n      ['next wednesday', [2016, october, 12]],\n      ['next thurs', [2016, october, 13]],\n      ['next friday', [2016, october, 14]],\n      ['next saturday', [2016, october, 15]],\n      // ['next sunday', [2016, october, 9]], //this=next here\n      // ['next monday', [2016, october, 10]],\n      ['next tuesday', [2016, october, 11]], //this=next here\n      //last\n      ['last wednesday', [2016, september, 28]],\n      ['last thurs', [2016, september, 29]],\n      ['last friday', [2016, september, 30]],\n      ['last saturday', [2016, october, 1]],\n      ['last sunday', [2016, october, 2]],\n      ['last monday', [2016, september, 26]],\n      ['last tuesday', [2016, september, 27]],\n      //same logic for months\n      ['this october', [2016, october, 1]],\n      ['next october', [2017, october, 1]],\n      ['last october', [2015, october, 1]],\n\n      ['this september', [2017, september, 1]],\n      // ['next september', [2017, september, 1]], //this=next\n      ['last september', [2016, september, 1]],\n      ['this december', [2016, december, 1]],\n      // ['next december', [2016, december, 1]], //this=next\n      ['last december', [2015, december, 1]],\n\n      //same logic for layups\n      ['this month', [2016, october, 1]],\n      ['next month', [2016, november, 1]],\n      ['last month', [2016, september, 1]],\n      ['this day', [2016, october, 4]],\n      ['next day', [2016, october, 5]],\n      ['last day', [2016, october, 3]],\n      ['this week', [2016, october, 3]],\n      ['next week', [2016, october, 10]],\n      ['last week', [2016, september, 26]],\n      ['this year', [2016, january, 1]],\n      ['next year', [2017, january, 1]],\n      ['last year', [2015, january, 1]],\n      ['this weekend', [2016, october, 8]],\n      ['next weekend', [2016, october, 15]],\n      ['last weekend', [2016, october, 1]],\n      ['this quarter', [2016, october, 1]],\n      // ['next quarter', [2017, january, 1]],\n      // ['last quarter', [2016, july, 1]],\n    ],\n  },\n  {\n    //times\n    today: [2017, october, 7, 6], //friday at 6am\n    tests: [\n      ['today', [2017, october, 7]],\n      ['tonight', [2017, october, 7]],\n      ['this morning', [2017, october, 7]],\n      ['this evening', [2017, october, 7]],\n      ['this afternoon', [2017, october, 7]],\n      ['7pm this afternoon', [2017, october, 7]],\n      ['2:00 in the morning', [2017, october, 7]],\n      // ['2:00pm today', [2017, october, 7]],\n      ['this day', [2017, october, 7]],\n      ['5pm this evening', [2017, october, 7]],\n      ['tonight at 5pm', [2017, october, 7]],\n      // ['sometime during today', [2017, october, 7]],\n      ['dinnertime', [2017, october, 7]],\n      // ['after lunch', [2017, october, 7]],\n      // ['this night', [2017, october, 7]],\n      ['this morning', [2017, october, 7]],\n      //tomorrow\n      // ['in the morning', [2017, october, 8]],\n      // ['5am in the morning', [2017, october, 8]],\n      ['tomorrow in the morning', [2017, october, 8]],\n      ['tmrw morning', [2017, october, 8]],\n      // ['5 oclock in the morning', [2017, october, 8]],\n      ['dinnertime tomorrow', [2017, october, 8]],\n      ['tomorrow in the afternoon', [2017, october, 8]],\n      ['in the evening tomorrow', [2017, october, 8]],\n      // ['in the early evening tomorrow', [2017, october, 8]],\n      // ['after today', [2017, october, 8]],\n      // ['after tonight', [2017, october, 8]],\n    ],\n  },\n  {\n    today: [2016, october, 1],\n    tests: [\n      ['on the 1st', [2016, october, 1]],\n      ['on the 21st', [2016, october, 21]],\n      ['on the 2nd', [2016, october, 2]],\n      ['on the 22nd', [2016, october, 22]],\n      ['on the 3rd', [2016, october, 3]],\n      ['on the 23rd', [2016, october, 23]],\n    ],\n  },\n  {\n    today: [2016, october, 15],\n    tests: [\n      ['on the 1st', [2016, november, 1]],\n      ['on the fourteenth', [2016, november, 14]],\n      ['on the sixteenth', [2016, october, 16]],\n      ['on the 20th', [2016, october, 20]],\n      ['on the 30th', [2016, october, 30]],\n      ['on the 10th of october', [2016, october, 10]],\n      ['on the 10th october', [2016, october, 10]],\n      ['on october 10th', [2016, october, 10]],\n      ['on october the 10th', [2016, october, 10]],\n\n      // ['March 7th-11th 1987', [1987, march, 7]],\n      // ['June 1st-11th 1999', [1999, june, 1]],\n      // ['28th of September to 5th of October 2008', [2008, september, 28]],\n      // ['2nd of January to 5th of October 2008', [2008, january, 2]],\n      // ['March 7th to june 11th 1987', [1987, march, 7]],\n      // ['April 17th to september 11th 1981', [1981, april, 17]],\n      // ['June 1st to June 11th 2014', [2014, june, 1]],\n      // ['between 13 February and 15 February 1945', [1945, february, 13]],\n      // ['between March 7th and june 11th 1987', [1987, march, 7]],\n      // ['3rd - 5th of March 1969', [1969, march, 3]],\n    ],\n  },\n  {\n    today: [2016, october, 15], //tricky years\n    tests: [\n      ['october 10th this year', [2016, october, 10]],\n      ['november 10th this year', [2016, november, 10]],\n      ['november 10th next year', [2017, november, 10]],\n      ['november 10th of last year', [2015, november, 10]],\n      ['november 10th 2017', [2017, november, 10]],\n      ['november 10th 2022', [2022, november, 10]],\n      ['november 10th 1998', [1998, november, 10]],\n      ['nov 10th, 1998', [1998, november, 10]],\n      // ['november 10th next year', [2017, november, 10]],\n      ['november 10th in a year', [2017, november, 10]],\n      // ['november 10th a year from now', [2017, november, 10]],\n      ['november 10th in two years', [2018, november, 10]],\n      // ['next year on june 10th', [2017, june, 10]],\n      // ['this year on june 10th', [2016, june, 10]],\n      // ['last year on june 10th', [2015, june, 10]],\n      ['april fools 2019', [2019, april, 1]],\n      // ['april fools next year', [2017, april, 1]],\n      // ['next year in june', [2017, june, 1]],\n      // ['next year after june', [2017, july, 1]],\n\n      ['10th of next month', [2016, november, 10]],\n      ['1st of the last month', [2016, september, 1]],\n    ],\n  },\n  {\n    today: [2016, november, 13],\n    tests: [\n      ['in a week', [2016, november, 20]],\n      // ['in about one week', [2016, november, 20]],\n      // ['in basically one week from now', [2016, november, 20]],\n      ['on a week from now', [2016, november, 20]],\n      ['a week from today', [2016, november, 20]],\n      // ['about a week following today', [2016, november, 20]],\n      // ['a week and a half from now', [2016, november, 23]],\n      // ['about a week and a half from now', [2016, november, 23]],\n      // ['starting a week and a half after today', [2016, november, 23]],\n      ['a month from now', [2016, december, 13]],\n    ],\n  },\n  {\n    today: [2016, august, 1],\n    tests: [\n      ['a month from now', [2016, september, 1]],\n      // ['a month and a half from now', [2016, september, 12]],\n      ['a year from now', [2017, august, 1]],\n      // ['a year and a half from now', [2018, february, 1]],\n      // ['one year and a half from now', [2018, february, 1]],\n      // ['one and a half years from now', [2018, february, 1]],\n    ],\n  },\n]\n\ntest('start dates', (t) => {\n  Object.keys(tests).forEach((k) => {\n    const context = {\n      today: tests[k].today,\n      timezone: 'Canada/Eastern',\n    }\n    const today = tests[k].today.join('-')\n    tests[k].tests.forEach((a) => {\n      const want = spacetime(a[1], context.timezone).startOf('day').format('iso-short')\n      const doc = nlp(a[0])\n      const json = doc.dates(context).json()[0] || { dates: {} }\n      let start = json.dates.start\n      if (start) {\n        start = spacetime(start).format('iso-short')\n      }\n      t.equal(start, want, `[${today}] ${a[0]}`)\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/tagger/ambiguous.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\n\ntest('negative-ambiguous-dates', t => {\n  const noDates = [\n    'march quickly',\n    'quickly march',\n    'march to the end',\n    'she may go',\n    'peter really may ski',\n    'make sure the march is planned',\n    'go see juliette march against washington',\n    'see if april will come to the party',\n    // 'remind june that april is coming',\n    // 'call jan',\n    // 'ask sep to eat bacon',\n    'go shopping with april',\n    // 'assign all tasks to april',\n    // 'buy eggs for april',\n    // 'buy eggs for may',\n    // 'buy eggs with may',\n    'shop with april',\n    'go there with jan',\n    'lkjsdf day',\n    'day slkj',\n\n    // 'do the 5 day running trip',\n    // 'write day 5 of surf diary',\n    'day of remembering pinapple',\n    'be up-to-date',\n    // 'be up-to-day',\n    // \"remember all of today's laundary\",\n  ]\n  noDates.forEach(str => {\n    const found = nlp(str).dates().found\n    t.equal(found, false, str)\n  })\n  t.end()\n})\n\ntest('positive-ambiguous-dates', t => {\n  const yesDates = [\n    'go south in march',\n    'march in march',\n    'this march, go swimming',\n    'buy an airplane in june',\n    'buy an airplane this may',\n    'go swimming in may',\n    'go swimming may 2nd',\n    'buy a turkey march 3rd',\n  ]\n  yesDates.forEach(str => {\n    const found = nlp(str).dates().found\n    t.equal(found, true, str)\n  })\n  t.end()\n})\n\ntest('date-tagger', function (t) {\n  const arr = [\n    ['june 2009', ['Month', 'Year']],\n    ['june 5th 2009', ['Month', 'Date', 'Year']],\n    ['q2 2009', ['Date', 'Year']],\n    // ['spring 1980', ['Date', 'Year']],\n    ['summer of 1999', ['Date', 'Date', 'Year']],\n    ['today', ['Date']],\n    ['minute', ['Duration']],\n    ['valentines day', ['Holiday', 'Holiday']],\n    ['ash wednesday', ['Holiday', 'Holiday']],\n  ]\n  arr.forEach(function (a) {\n    const terms = nlp(a[0]).json()[0].terms\n    terms.forEach((term, i) => {\n      const tag = a[1][i]\n      const found = term.tags.some(tg => tg === tag)\n      t.equal(found, true, term.text + ' ' + tag)\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/tagger/date-chunk.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\n\ntest('date-chunk :', function (t) {\n  const arr = [\n    ['remember to buy eggs tomorrow', 'tomorrow'],\n    ['i should buy eggs for the kids on sunday', 'on sunday'],\n    ['please tell john to walk the dogs each night', 'each night'],\n    [\"i've gotta buy some paint for the ceiling on monday\", 'on monday'],\n    ['all the books need to be brought back by tuesday', 'by tuesday'],\n    ['bring the paint cans to the dump with johnny on tuesday', 'on tuesday'],\n    ['vote on tuesday', 'on tuesday'],\n    ['hey spencer, i gotta get my homework finished tonight', 'tonight'],\n    ['sell the hotdogs at wrigley on friday', 'on friday'],\n    ['remind me to drive to waterloo on thursday night', 'on thursday night'],\n    ['reply to all my emails in the morning', 'in the morning'],\n    [\"keep tabs on danny this week and ensure he's ok with sandra\", 'this week'],\n    ['please tell me to upload the spreadsheet for danny on friday', 'on friday'],\n    ['saturday date with sandra', 'saturday'],\n    ['lunch with Dr. Salvonio on tuesday at 10', 'on tuesday at 10'],\n    ['work-out tomorrow', 'tomorrow'],\n    ['book club every wednesday', 'every wednesday'],\n    ['@spencer tell me to buy cheeseburgers tuesday night for everybody', 'tuesday night'],\n    [\"i'd like to watch the space shuttle launch tonight\", 'tonight'],\n    ['forge a relationship with the investors over christmas', 'over christmas'],\n    // ['in august, buy june some flowers', 'in august,'],\n    ['by february, tell new users we accept donations', 'by february'],\n    ['eat carrots once a week', 'once a week'],\n    ['set alarm next tuesday', 'next tuesday'],\n    ['yo, check my stocks in the morning', 'in the morning'],\n    ['pack a lunch for danny and sam on sunday morning', 'on sunday morning'],\n    ['check the mailbox in the morning', 'in the morning'],\n    ['take out the garbage every thursday', 'every thursday'],\n    ['use-case analysis project due by friday', 'due by friday'],\n    ['this tuesday, buy a new microphone', 'this tuesday'],\n    [\"grab a new monitor when i'm shopping next weekend\", 'next weekend'],\n    [\"i gotta pay rent friday. don't let me forget\", 'friday'],\n    ['make sure the chores are done by tuesday', 'by tuesday'],\n    ['help hunter with the golf clubs this coming monday', 'this coming monday'],\n    ['set all dials to repeat mode after this weekend', 'after this weekend'],\n    ['wash the floor each week after new years', 'each week after new years'],\n    ['post a tweet about consumerism on april fools day', 'on april fools day'],\n    ['all the bills are what I need to pay by tuesday', 'by tuesday'],\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0])\n      .match('#Date+')\n      .out('reduced')\n    t.equal(str, a[1], a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/tagger/date_tag.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\n\ntest('date-tag :', function (t) {\n  const arr = [\n    'yesterday',\n    'today',\n    'tomorrow',\n    'morning',\n    'afternoon',\n    'evening',\n    'noon',\n    'midnight',\n    'yesterday at noon',\n    'yesterday at midnight',\n    'today at noon',\n    'today at midnight',\n    'tomorrow at noon',\n    'tomorrow at midnight',\n    'this morning',\n    'this afternoon',\n    'this evening',\n    'yesterday morning',\n    'yesterday afternoon',\n    'yesterday evening',\n    'today morning',\n    'today afternoon',\n    'today evening',\n    'tomorrow morning',\n    'tomorrow afternoon',\n    'tomorrow evening',\n    'thursday morning',\n    'thursday afternoon',\n    'thursday evening',\n    '6:00 yesterday',\n    '6:00 today',\n    '6:00 tomorrow',\n    '5am yesterday',\n    '5am today',\n    '5am tomorrow',\n    '4pm yesterday',\n    '4pm today',\n    '4pm tomorrow',\n    'tuesday last week',\n    'tuesday this week',\n    'tuesday next week',\n    'last week wednesday',\n    'this week wednesday',\n    'next week wednesday',\n    '10 seconds ago',\n    '10 minutes ago',\n    '10 hours ago',\n    '10 days ago',\n    '10 weeks ago',\n    '10 months ago',\n    '10 years ago',\n    'saturday',\n    'sunday 11:00',\n    'yesterday at 4:00',\n    'today at 4:00',\n    'tomorrow at 4:00',\n    'yesterday at 6:45am',\n    'today at 6:45am',\n    'tomorrow at 6:45am',\n    'yesterday at 6:45pm',\n    'today at 6:45pm',\n    'tomorrow at 6:45pm',\n    'yesterday at 2:32 AM',\n    'today at 2:32 AM',\n    'tomorrow at 2:32 AM',\n    'yesterday at 2:32 PM',\n    'today at 2:32 PM',\n    'tomorrow at 2:32 PM',\n    'yesterday 02:32',\n    'today 02:32',\n    'tomorrow 02:32',\n    'yesterday 2:32am',\n    'today 2:32am',\n    'tomorrow 2:32am',\n    'yesterday 2:32pm',\n    'today 2:32pm',\n    'tomorrow 2:32pm',\n    'wednesday at 14:30',\n    'wednesday at 02:30am',\n    'wednesday at 02:30pm',\n    'wednesday 14:30',\n    'wednesday 02:30am',\n    'wednesday 02:30pm',\n    'friday 03:00 am',\n    'friday 03:00 pm',\n    'sunday at 05:00 am',\n    'sunday at 05:00 pm',\n    '4th february',\n    'november 3rd',\n    'last june',\n    'next october',\n    '6 am',\n    '5am',\n    '5:30am',\n    '8 pm',\n    '4pm',\n    '4:20pm',\n    '06:56:06 am',\n    '06:56:06 pm',\n    'mon 2:35',\n    '1:00 sun',\n    '1am sun',\n    '1pm sun',\n    '1:00 on sun',\n    '1am on sun',\n    '1pm on sun',\n    '12:14 PM',\n    '12:14 AM',\n    '2 seconds before now',\n    '2 minutes before now',\n    '2 hours before now',\n    '2 days before now',\n    '2 weeks before now',\n    '2 months before now',\n    '2 years before now',\n    '4 seconds from now',\n    '4 minutes from now',\n    '4 hours from now',\n    '4 days from now',\n    '4 weeks from now',\n    '4 months from now',\n    '4 years from now',\n    // '6 in the morning',\n    // '4 in the afternoon',\n    // '9 in the evening',\n    // 'monday 6 in the morning',\n    // 'monday 4 in the afternoon',\n    // 'monday 9 in the evening',\n    'last sunday at 21:45',\n    'monday last week',\n    '12th day last month',\n    '12th day this month',\n    '12th day next month',\n    '1st tuesday last november',\n    '1st tuesday this november',\n    '1st tuesday next november',\n    '10 hours before noon',\n    '10 hours before midnight',\n    '5 hours after noon',\n    '5 hours after midnight',\n    'noon last friday',\n    'midnight last friday',\n    'noon this friday',\n    'midnight this friday',\n    'noon next friday',\n    'midnight next friday',\n    'last friday at 20:00',\n    'this friday at 20:00',\n    'next friday at 20:00',\n    '1:00 last friday',\n    '1:00 this friday',\n    '1:00 next friday',\n    '1am last friday',\n    '1am this friday',\n    '1am next friday',\n    '1pm last friday',\n    '1pm this friday',\n    '1pm next friday',\n    '5 am last monday',\n    '5 am this monday',\n    '5 am next monday',\n    '5 pm last monday',\n    '5 pm this monday',\n    '5 pm next monday',\n    'last wednesday 7am',\n    'this wednesday 7am',\n    'next wednesday 7am',\n    'last wednesday 7pm',\n    'this wednesday 7pm',\n    'next wednesday 7pm',\n    'last tuesday 11 am',\n    'this tuesday 11 am',\n    'next tuesday 11 am',\n    'last tuesday 11 pm',\n    'this tuesday 11 pm',\n    'next tuesday 11 pm',\n    'yesterday at 13:00',\n    'today at 13:00',\n    '2nd friday in august',\n    '3rd wednesday in november',\n    'tomorrow 1 year ago',\n    '11 january 2 years ago',\n    '6 mondays from now',\n    // 'final thursday in april',\n    'last thursday in april',\n    'monday to friday',\n    '1 April to 31 August',\n    '1999-12-31 to tomorrow',\n    // 'now to 2010-01-01',\n    '2009-03-10 9:00 to 11:00',\n    '26 oct 10:00 am to 11:00 am',\n    // 'jan 1 to 2',\n    '16:00 nov 6 to 17:00',\n    'may 2nd to 5th',\n    '6am dec 5 to 7am',\n    // '1/3 to 2/3',\n    // '2/3 to in 1 week',\n    // '3/3 21:00 to in 5 days',\n    // 'first day of 2009 to last day of 2009',\n    // 'first day of may to last day of may',\n    // 'first to last day of 2008',\n    // 'first to last day of september',\n    'for 4 seconds',\n    'for 4 minutes',\n    'for 4 hours',\n    'for 4 days',\n    'for 4 weeks',\n    'for 4 months',\n    'for 4 years',\n    'january 11',\n    '11 january',\n    '18 oct 17:00',\n    '18 oct 5am',\n    '18 oct 5pm',\n    '18 oct 5 am',\n    '18 oct 5 pm',\n    'dec 25',\n    'feb 28 3:00',\n    'feb 28 3am',\n    'feb 28 3pm',\n    'feb 28 3 am',\n    'feb 28 3 pm',\n    '19:00 jul 1',\n    '7am jul 1',\n    '7pm jul 1',\n    '7 am jul 1',\n    '7 pm jul 1',\n    'jan 24, 2011 12:00',\n    'jan 24, 2011 12am',\n    'jan 24, 2011 12pm',\n    'may 27th',\n    // '2005',\n    'march 1st 2009',\n    'february 14, 2004',\n    'jan 3 2010',\n    '3 jan 2000',\n    '2010 october 28',\n    // '1/3',\n    // '1/3 16:00',\n    '4:00',\n    '17:00',\n    '3:20:00',\n    '1st day last year',\n    '1st day this year',\n    '1st day next year',\n    '6th day last week',\n    '6th day this week',\n    '6th day next week',\n    'yesterday 7 seconds ago',\n    'yesterday 7 minutes ago',\n    'yesterday 7 hours ago',\n    'yesterday 7 days ago',\n    'yesterday 7 weeks ago',\n    'yesterday 7 months ago',\n    'yesterday 7 years ago',\n    'tomorrow 3 seconds ago',\n    'tomorrow 3 minutes ago',\n    'tomorrow 3 hours ago',\n    'tomorrow 3 days ago',\n    'tomorrow 3 weeks ago',\n    'tomorrow 3 months ago',\n    'tomorrow 3 years ago',\n    '2nd monday',\n    '100th day',\n    '11 january next year',\n    '11 january this year',\n    '11 january last year',\n    '6 hours before yesterday',\n    '6 hours before tomorrow',\n    '3 hours after yesterday',\n    '3 hours after tomorrow',\n    'saturday 3 months ago at 17:00',\n    'saturday 3 months ago at 5:00am',\n    'saturday 3 months ago at 5:00pm',\n    '4th day last week',\n    '8th month last year',\n    '8th month this year',\n    '8th month next year',\n    'fri 3 months ago at 5am',\n    'wednesday 1 month ago at 8pm',\n    'October 2006',\n    '27/5/1979',\n    // '-5min',\n    // '+2d',\n    // '100th day to 200th',\n    // 'march'\n  ]\n  arr.forEach(function (first) {\n    const str = nlp(first)\n      .match('#Date+')\n      .out('text')\n    const msg = first + '  -> ' + str\n    t.equal(str, first, msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/times.test.js",
    "content": "import test from 'tape'\nimport spacetime from 'spacetime'\nimport nlp from './_lib.js'\nconst here = ' [dates/times] '\n\ntest('times of start and end', function (t) {\n  const context = {\n    timezone: 'Asia/Shanghai',\n    today: '2018-01-19T10:05:00',\n  }\n  const arr = [\n    ['tuesday at 4', '4:00pm'],\n    ['tuesday from 4 to 5pm', '4:00pm', '5:00pm'],\n    // ['tuesday from 4 to 5am', '4:00am'],\n    ['tuesday at 4pm', '4:00pm'],\n    ['4:00 today', '4:00pm'],\n    ['4:30 in the morning', '4:30am'],\n    ['4:30 in the evening', '4:30pm'],\n    ['4 in the morning', '4:00am'],\n    ['4 in the evening', '4:00pm'],\n    ['between 2 and 5 tomorrow', '2:00pm', '5:00pm'],\n    ['between 3pm and 6pm tuesday', '3:00pm', '6:00pm'],\n    ['tuesday between 2 and 7pm', '2:00pm', '7:00pm'],\n    ['tuesday from 2 to 7pm', '2:00pm', '7:00pm'],\n    // ['any tuesday from 2 to 7pm', '2:00pm'],\n    ['tuesday from 2pm', '2:00pm'],\n    ['anytime after 3', '3:00pm'],\n    ['3pm-3:30', '3:00pm', '3:30pm'],\n    ['3:30pm-3:45', '3:30pm', '3:45pm'],\n    ['wednesday from 3 to 4', '3:00pm', '4:00pm'],\n    ['3 to 4 on wednesday', '3:00pm', '4:00pm'],\n    ['tue from 6pm to 8', '6:00pm', '8:00pm'],\n    ['11 to 9 january 5th', '11:00am'],\n    ['11am to 9 january 5th', '11:00am', '9:00pm'],\n    ['11 to 9pm january 5th', '11:00am', '9:00pm'],\n    ['9-5 on tuesday', '9:00am', '5:00pm'],\n    ['9-5 tuesday', '9:00am', '5:00pm'],\n    ['june 5 from 3-5pm', '3:00pm', '5:00pm'],\n    ['june 5 from 3-5', '3:00pm', '5:00pm'],\n    ['3-5pm on june 5th ', '3:00pm', '5:00pm'],\n    ['3pm-5pm on june 5th ', '3:00pm', '5:00pm'],\n    ['2pm to 5pm march 9', '2:00pm', '5:00pm'],\n    ['tomorrow 3 to 7', '3:00pm', '7:00pm'],\n    ['anytime after 10 oclock pm', '10:00pm'],\n    ['4pm to 5pm', '4:00pm', '5:00pm'],\n    ['4pm to 5:32pm', '4:00pm', '5:32pm'],\n    ['between 4pm and 5pm', '4:00pm'],\n    ['between 4pm and 5pm on june 4', '4:00pm', '5:00pm'],\n    ['4pm or 5pm', '4:00pm'],\n    ['wednesday at 3', '3:00pm'],\n    ['wednesday at 3pm', '3:00pm'],\n    ['3pm to 7 tomorrow', '3:00pm', '7:00pm'],\n    ['between 3 and 6 tuesday', '3:00pm', '6:00pm'],\n    ['sometime after 4', '4:00pm'],\n    ['sometime after 11pm', '11:00pm'],\n    ['ten past three', '3:10pm'],\n    ['in a hour', '11:05am'],\n    ['in an hour from now', '11:05am'],\n    ['in one hour from now', '11:05am'],\n    // ['in half an hour from now', '10:35am'],\n    ['next monday at 9', '9:00am'],\n    // ['half three', '3:30pm'],\n    // ['at 10 to three', '2:50pm'],\n    [`@2:99`, '2:59pm'],\n    // [`ten to 4pm`, '3:50pm'],\n    [`9am to 5:49pm`, '9:00am', '5:49pm'],\n    // [`ten to 4 in the morning`, '3:50am'],\n    [`wed between 2 - 5pm`, '2:00pm', '5:00pm'],\n    [`tues at 3pm to 5pm`, '3:00pm', '5:00pm'],\n    [`june 4 at 2pm - 9pm`, '2:00pm', '9:00pm'],\n    // [`june 4 at ten past 8`, '8:10pm'],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    const dates = doc.dates(context).get()[0] || {}\n    const start = spacetime(dates.start)\n    t.equal(start.time(), a[1], '[time] ' + a[0])\n    if (a[2]) {\n      t.equal(spacetime(dates.end).time(), a[2], '[end] ' + a[0])\n    }\n  })\n  t.end()\n})\n\ntest('times test', function (t) {\n  let doc = nlp('it was around 4:30pm on tuesday')\n  let json = doc.times({ today: '1996-03-28', timezone: 'Canada/Eastern' }).json()\n  t.equal(json.length, 1, 'found time')\n  t.equal(json[0].time.time, '4:30pm', '4:30pm')\n\n  doc = nlp('it was around 4pm on tuesday')\n  json = doc.times({ today: '1996-03-28', timezone: 'Canada/Eastern' }).json()[0]\n  t.equal(json.time.time, '4:00pm', '4pm')\n\n  doc = nlp('it was around 2 oclock pm on tuesday')\n  json = doc.times().json()[0]\n  t.equal(json.time.time, '2:00pm', '2 oclock')\n\n  doc = nlp('it was around six thirty pm friday')\n  json = doc.times().json()[0]\n  t.equal(json.time.time, '6:30pm', 'six thirty pm')\n\n  doc = nlp('it was six in the morning!')\n  json = doc.times().json()[0]\n  t.equal(json.time.time, '6:00am', 'six in the morning')\n\n  doc = nlp('it was ten after 9')\n  json = doc.times().json()[0]\n  t.equal(json.time.time, '9:10am', 'ten after 9')\n  t.end()\n})\n\ntest('times test', function (t) {\n  let doc = nlp('tomorrow 5:45pm')\n  doc.times().format('24h')\n  t.equal(doc.text(), 'tomorrow 17:45', here + '24h')\n\n  doc = nlp('wednesday at 2:00am')\n  doc.times().format('{hour-24-pad}:{minute-pad}')\n  t.equal(doc.text(), 'wednesday at 02:00', here + 'fmt')\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/timezone.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('text sets timezone', function (t) {\n  const arr = [\n    ['today', '2019-01-01T00:00:00.000Z'], //london\n    ['today in PST', '2019-01-01T00:00:00.000-08:00'],\n    ['today in eastern time', '2019-01-01T00:00:00.000-05:00'],\n    ['today GMT+9', '2019-01-01T00:00:00.000-09:00'],\n    // ['today GMT-9', '2019-01-01T00:00:00.000-09:00'],\n  ]\n  const context = {\n    today: '2019-01-01',\n    timezone: 'Europe/London',\n  }\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    const json = doc.dates(context).json()[0] || {}\n    t.equal(json.dates.start, a[1], a[0])\n  })\n  t.end()\n})\n\ntest('set timezone context', function (t) {\n  const doc = nlp('April 7th 2018')\n  let json = doc.dates({ timezone: 'Asia/Karachi' }).json()[0] || {}\n  t.equal(json.dates.start, '2018-04-07T00:00:00.000+05:00', '+5hrs')\n\n  json = doc.dates({ timezone: 'Asia/Vladivostok' }).json()[0] || {}\n  t.equal(json.dates.start, '2018-04-07T00:00:00.000+10:00', '+10hrs')\n\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/to-iso.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\nconst context = {\n  today: '2019-02-02T03:40:00.000Z',\n  timezone: false,\n}\n\ntest('date-parse :', function (t) {\n  const arr = [\n    ['june 5th 1999', '1999-06-05T00:00:00.000Z'],\n    ['june 5th 1999', '1999-06-05T00:00:00.000Z'],\n    ['january 1st 1644', '1644-01-01T00:00:00.000Z'],\n    ['jan 1st 1644', '1644-01-01T00:00:00.000Z'],\n    ['June 4th 1993', '1993-06-04T00:00:00.000Z'],\n    ['March 1st 1987', '1987-03-01T00:00:00.000Z'],\n    ['June 22nd 2014', '2014-06-22T00:00:00.000Z'],\n    ['may 22nd 2014', '2014-05-22T00:00:00.000Z'],\n    ['sep 22nd 2014', '2014-09-22T00:00:00.000Z'],\n    ['apr 22nd 2014', '2014-04-22T00:00:00.000Z'],\n    ['June 22nd 1997', '1997-06-22T00:00:00.000Z'],\n    ['january 5th 1998', '1998-01-05T00:00:00.000Z'],\n    ['3rd of March 1969', '1969-03-03T00:00:00.000Z'],\n    ['2nd of April 1929', '1929-04-02T00:00:00.000Z'],\n    ['2nd of jul 1929', '1929-07-02T00:00:00.000Z'],\n    ['March 1969', '1969-03-01T00:00:00.000Z'],\n    ['jan 1921', '1921-01-01T00:00:00.000Z'],\n    ['March 18th', '2019-03-18T00:00:00.000Z'],\n    ['August 28th', '2019-08-28T00:00:00.000Z'],\n    ['18th of March', '2019-03-18T00:00:00.000Z'],\n    ['27th of March', '2019-03-27T00:00:00.000Z'],\n    ['february 10th', '2019-02-10T00:00:00.000Z'],\n    ['february 28th', '2019-02-28T00:00:00.000Z'],\n    ['first day of 2019', '2019-01-01T00:00:00.000Z'],\n    ['last day of 2019', '2019-12-31T00:00:00.000Z'],\n    ['7th hour of 2019', '2019-01-01T06:00:00.000Z'],\n    ['7th day of 2019', '2019-01-07T00:00:00.000Z'],\n    ['second quarter of 2019', '2019-04-01T00:00:00.000Z'],\n    ['30th minute of 2019', '2019-01-01T00:30:00.000Z'],\n    ['2019', '2019-01-01T00:00:00.000Z'],\n    ['2028', '2028-01-01T00:00:00.000Z'],\n    ['in 2028', '2028-01-01T00:00:00.000Z'],\n    ['2nd month in 2028', '2028-02-01T00:00:00.000Z'],\n    ['first day of march 2019', '2019-03-01T00:00:00.000Z'],\n    ['5th day of march 2019', '2019-03-05T00:00:00.000Z'],\n    ['5th day of q1 2002', '2002-01-05T00:00:00.000Z'],\n    ['5th hour of March 3rd 2002', '2002-03-03T04:00:00.000Z'],\n    ['last hour of March 2021', '2021-03-31T23:00:00.000Z'],\n    ['may to august 1996', '1996-05-01T00:00:00.000Z'],\n    ['half past 4', '2019-02-02T16:30:00.000Z'],\n    ['20 past 2', '2019-02-02T14:20:00.000Z'],\n    ['at 20 past', '2019-02-02T04:20:00.000Z'],\n    ['at half past', '2019-02-02T04:30:00.000Z'],\n    ['at quarter to', '2019-02-02T03:45:00.000Z'],\n    ['at quarter after', '2019-02-02T04:15:00.000Z'],\n    // ['august to may 1996', '1996-05-01T00:00:00.000Z'],\n  ]\n  arr.forEach(function (a) {\n    const json = nlp(a[0]).dates(context).json()[0] || {}\n    t.equal(json.dates.start, a[1], a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/today.test.js",
    "content": "import test from 'tape'\nimport spacetime from 'spacetime'\nimport nlp from './_lib.js'\n\ntest('set today context', function (t) {\n  let doc = nlp('today')\n  let json = doc.dates({ today: '1996-03-28', timezone: 'Canada/Eastern' }).json()[0] || {}\n  t.equal(json.dates.start, '1996-03-28T00:00:00.000-04:00', '+5hrs')\n\n  json = doc.dates({ today: '1996-11-28', timezone: 'Canada/Eastern' }).json()[0] || {}\n  t.equal(json.dates.start, '1996-11-28T00:00:00.000-05:00', '+5hrs')\n\n  doc = nlp('in 3 weeks')\n  json = doc.dates({ today: '1996-03-1', timezone: 'Canada/Eastern' }).json()[0] || {}\n  t.equal(json.dates.start, '1996-03-22T00:00:00.000-04:00', 'today-start')\n  t.equal(json.dates.end, '1996-03-22T23:59:59.999-04:00', 'today-end')\n  t.end()\n})\n\n//ensure dateRange renders as local time\ntest('today is always today', (t) => {\n  const arr=[\n    'Europe/Paris',\n    'Europe/London',\n    'Etc/UTC',\n    'Canada/Eastern',\n    'Canada/Pacific',\n    'Pacific/Fiji',\n    'Europe/Minsk',\n    'Indian/Cocos',\n    'Australia/Perth',\n    'Atlantic/Canary',\n    'Africa/Lome',\n    null,\n  ]\n  arr.forEach((tz) => {\n    const context = {\n      timezone: tz,\n      today: [2016, 11, 3],\n    }\n    const json = nlp('buy eggs today').dates(context).json()[0] || {}\n    let start = json.dates.start\n    start = spacetime(start)\n    t.equal(start.format('iso-short'), '2016-12-03', 'today: ' + tz)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/tokenizer.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n// const spacetime = require('spacetime')\n\ntest('date-tokenizer', function (t) {\n  const arr = [\n    ['june 5th, june 10th', 2],\n    ['monday, wednesday', 2],\n    ['monday, wednesday, friday', 3],\n    ['monday, wednesday, and friday', 3],\n    ['between monday and friday', 1],\n    ['june to august', 1],\n    ['june or august', 1],\n    ['june through august', 1],\n    ['june 2020 or august', 2],\n    ['mon tue fri', 3],\n    // 'to'\n    ['tuesday to friday', 1],\n    ['tuesday upto friday', 1],\n    ['tuesday until friday', 1],\n    ['tuesday through friday', 1],\n    ['tuesday - friday', 1],\n    ['tuesday - june 1st', 1],\n    ['tuesday, wednesday', 2],\n    ['tuesday or wednesday', 2],\n    // ---weird--\n    ['between tuesday and friday', 1],\n    ['tuesday and friday', 2],\n    ['between june and august', 1],\n    // weird\n    ['june and august', 2],\n    ['june and august 2020', 1],\n    ['june, august 9th', 2],\n    ['15 march 16 july', 2],\n  ]\n  arr.forEach((a) => {\n    const dates = nlp(a[0]).dates()\n    t.equal(dates.length, a[1], a[0])\n  })\n\n  t.end()\n})\n"
  },
  {
    "path": "plugins/dates/tests/week.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nimport spacetime from 'spacetime'\n\ntest('week-logic', function (t) {\n  const tests = [\n    {\n      today: '2021-03-01', //on monday\n      tests: [\n        ['monday', 'monday', 0], // today\n        ['tuesday', 'tuesday', 1],\n        ['wednesday', 'wednesday', 2],\n        ['thursday', 'thursday', 3],\n        ['friday', 'friday', 4],\n        ['saturday', 'saturday', 5],\n        ['sunday', 'sunday', 6],\n        // 'this'\n        ['this week', 'monday', 0],\n        ['this monday', 'monday', 0], // today\n        ['this tuesday', 'tuesday', 1],\n        ['this wednesday', 'wednesday', 2],\n        ['this thursday', 'thursday', 3],\n        ['this friday', 'friday', 4],\n        ['this weekend', 'saturday', 5],\n        ['this saturday', 'saturday', 5],\n        ['this sunday', 'sunday', 6],\n        //'last'\n        ['last week', 'monday', -7],\n        ['last monday', 'monday', -7],\n        ['last tuesday', 'tuesday', -6],\n        ['last wednesday', 'wednesday', -5],\n        ['last thursday', 'thursday', -4],\n        ['last friday', 'friday', -3],\n        ['last weekend', 'saturday', -2],\n        ['last saturday', 'saturday', -2],\n        ['last sunday', 'sunday', -1],\n        // this past\n        ['this past week', 'monday', -7],\n        ['this past monday', 'monday', -7],\n        ['this past tuesday', 'tuesday', -6],\n        ['this past wednesday', 'wednesday', -5],\n        ['this past thursday', 'thursday', -4],\n        ['this past friday', 'friday', -3],\n        ['this past weekend', 'saturday', -2],\n        ['this past saturday', 'saturday', -2],\n        ['this past sunday', 'sunday', -1],\n        //'next'\n        ['next week', 'monday', 7],\n        ['next monday', 'monday', 7],\n        ['next tuesday', 'tuesday', 8],\n        ['next wednesday', 'wednesday', 9],\n        ['next thursday', 'thursday', 10],\n        ['next friday', 'friday', 11],\n        ['next weekend', 'saturday', 12],\n        ['next saturday', 'saturday', 12],\n        ['next sunday', 'sunday', 13],\n      ],\n    },\n    {\n      today: '2021-03-05', //on friday\n      tests: [\n        ['monday', 'monday', 3],\n        ['tuesday', 'tuesday', 4],\n        ['wednesday', 'wednesday', 5],\n        ['thursday', 'thursday', 6],\n        ['friday', 'friday', 0], // today\n        ['saturday', 'saturday', 1],\n        ['sunday', 'sunday', 2],\n        // 'this'\n        ['this week', 'monday', -4], //backward\n        ['this monday', 'monday', 3],\n        ['this tuesday', 'tuesday', 4],\n        ['this wednesday', 'wednesday', 5],\n        ['this thursday', 'thursday', 6],\n        ['this friday', 'friday', 0], // today\n        ['this weekend', 'saturday', 1],\n        ['this saturday', 'saturday', 1],\n        ['this sunday', 'sunday', 2],\n        //'last'\n        ['last week', 'monday', -7 - 4],\n        ['last monday', 'monday', -7 - 4],\n        ['last tuesday', 'tuesday', -7 - 3],\n        ['last wednesday', 'wednesday', -7 - 2],\n        ['last thursday', 'thursday', -7 - 1],\n        ['last friday', 'friday', -7],\n        ['last weekend', 'saturday', -6],\n        ['last saturday', 'saturday', -6],\n        ['last sunday', 'sunday', -5],\n        //'this past'\n        ['this past week', 'monday', -7 - 4],\n        ['this past monday', 'monday', -4],\n        ['this past tuesday', 'tuesday', -3],\n        ['this past wednesday', 'wednesday', -2],\n        ['this past thursday', 'thursday', -1],\n        ['this past friday', 'friday', -7], //\n        ['this past weekend', 'saturday', -6],\n        ['this past saturday', 'saturday', -6],\n        ['this past sunday', 'sunday', -5],\n        // //'next'\n        ['next week', 'monday', 3],\n        ['next monday', 'monday', 3],\n        ['next tuesday', 'tuesday', 4],\n        ['next wednesday', 'wednesday', 5],\n        ['next thursday', 'thursday', 6],\n        ['next friday', 'friday', 7],\n        ['next weekend', 'saturday', 8],\n        ['next saturday', 'saturday', 8],\n        ['next sunday', 'sunday', 9],\n      ],\n    },\n  ]\n  tests.forEach((obj) => {\n    const ctx = { today: obj.today }\n    const today = spacetime(obj.today)\n    obj.tests.forEach((a) => {\n      const dates = nlp(a[0]).dates(ctx).get()\n      t.equal(dates.length, 1, '[one date] ' + a[0])\n      const s = spacetime(dates[0].start)\n      t.equal(s.format('day').toLowerCase(), a[1], '[day] ' + a[0])\n      // compare isos\n      const want = today.add(a[2], 'day')\n      t.equal(want.format('iso-short'), s.format('iso-short'), `[${a[2]} days] '${a[0]}'`)\n    })\n  })\n\n  t.end()\n})\n"
  },
  {
    "path": "plugins/paragraphs/README.md",
    "content": "<div align=\"center\">\n  <img src=\"https://cloud.githubusercontent.com/assets/399657/23590290/ede73772-01aa-11e7-8915-181ef21027bc.png\" />\n\n  <div>a plugin for <a href=\"https://github.com/spencermountain/compromise/\">compromise</a></div>\n  \n  <!-- npm version -->\n  <a href=\"https://npmjs.org/package/compromise-paragraphs\">\n    <img src=\"https://img.shields.io/npm/v/compromise-paragraphs.svg?style=flat-square\" />\n  </a>\n  v\n  <!-- file size -->\n  <a href=\"https://unpkg.com/compromise-paragraphs/builds/compromise-paragraphs.min.js\">\n    <img src=\"https://badge-size.herokuapp.com/spencermountain/compromise/master/plugins/paragraphs/builds/compromise-paragraphs.min.js\" />\n  </a>\n   <hr/>\n</div>\n\n<div align=\"center\">\n  <code>npm install compromise-paragraphs</code>\n</div>\n\n```js\nlet str = `What's with these homies dissin' my girl? Why do they gotta front? \n\nWhat did we ever do to these guys that made them so violent?\n\nWoo-hoo, but you know I'm yours.\nWoo-hoo, and I know you're mine.\nWoo-hoo, and that's for all time\n`\n\nlet doc = nlp(str).paragraphs()\n\ndoc.length\n// 3\n\ndoc.json(options)\n/*[\n  {text:'What's with these ...', sentences:[{},{}]}\n  {text:'What did we ever ...', sentences:[{}]}\n]*/\n\n// get the second paragraph\ndoc.eq(1).text()\n// 'What did we ever ...'\n\n// get the first two sentences of the first paragraph\ndoc\n  .first()\n  .sentences()\n  .slice(0, 2)\n```\n\nThis is a tentative implementation of `.paragraphs()` and associated methods, for compromise.\n\nThis is tricky because a sentence is a top-level structure to compromise, (and english grammar!), and combining sentences together would have some consequences about grammatical tags.\n\nInstead, this plugin is a (partially-complete) wrapper for sentence objects, so that you can call things like `.text()` and `.json()` on a paragraph, but then drop back down to `.sentences()` after, and work as normal.\n\nThe term objects passed into `.paragraphs()` are mutable, so they will actually change when you transform them:\n\n```js\nlet doc = nlp(str).paragraphs()\n\ndoc = doc.filter(p => {\n  return p.has('#Determiner guys')\n})\n// What did we ever do to these guys that made them so violent?\n```\n\n### [Demo](https://observablehq.com/@spencermountain/compromise-paragraphs)\n\n## API:\n\noutputs:\n\n- .text()\n- .json()\n\nmatches:\n\n- .match()\n- .not()\n- .if()\n- .ifNo()\n- .has()\n\nselectors:\n\n- .sentences()\n- .terms()\n\naccessors:\n\n- .eq()\n- .first()\n- .last()\n\nloops:\n\n- .forEach()\n- .map()\n- .filter()\n\nMIT\n"
  },
  {
    "path": "plugins/paragraphs/builds/compromise-paragraphs.cjs",
    "content": "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.compromiseParagraphs = factory());\n})(this, (function () { 'use strict';\n\n  const concatArr = function (views, fn) {\n    let arr = [];\n    views.forEach(m => {\n      arr.push(m[fn]());\n    });\n    return arr\n  };\n\n  const concatStr = function (views, cb) {\n    let str = [];\n    views.forEach(m => {\n      str += cb(m);\n    });\n    return str\n  };\n\n  const concatDoc = function (views, cb) {\n    let ptrs = [];\n    views.forEach(m => {\n      let res = cb(m);\n      if (res.found) {\n        ptrs = ptrs.concat(res.ptrs);\n      }\n    });\n    return views[0].update(ptrs)\n  };\n\n\n  const api = function (View) {\n\n\n\n    class Paragraphs {\n      constructor(views) {\n        this.viewType = 'Paragraphs';\n        this.views = views;\n      }\n      // is the view not-empty?\n      get found() {\n        return this.views.length > 0\n      }\n      // how many matches we have\n      get length() {\n        return this.views.length\n      }\n\n      text(fmt) {\n        return concatStr(this.views, (m) => m.text(fmt))\n      }\n      json() {\n        return concatArr(this.views, 'json')\n      }\n      match(reg) {\n        return concatDoc(this.views, (view) => view.match(reg))\n      }\n      not(reg) {\n        return concatDoc(this.views, (view) => view.match(reg))\n      }\n      sentences() {\n        return concatDoc(this.views, (view) => view)\n      }\n      terms() {\n        return concatDoc(this.views, (view) => view.terms())\n      }\n      filter(fn) {\n        let res = this.views.filter(p => {\n          return p.some(fn)\n        });\n        return this.update(res)\n      }\n      forEach(fn) {\n        this.views.forEach(p => {\n          p.forEach(fn);\n        });\n        return this\n      }\n      map(fn) {\n        let res = this.views.map(view => {\n          return fn(view)\n        });\n        return this.update(res)\n      }\n      // boolean\n      has(reg) {\n        return this.views.some(view => view.has(reg))\n      }\n      if(reg) {\n        let views = this.views.filter(view => view.has(reg));\n        return this.update(views)\n      }\n      ifNo(reg) {\n        let views = this.views.filter(view => !view.has(reg));\n        return this.update(views)\n      }\n      eq(num) {\n        let p = this.views[num];\n        if (p) {\n          return this.update([p])\n        }\n        return this.update([])\n      }\n      first() {\n        return this.eq(0)\n      }\n      last() {\n        return this.eq(this.length - 1)\n      }\n      debug() {\n        this.views.forEach((view) => {\n          console.log('\\n=-=-=-=-');//eslint-disable-line\n          view.debug();\n        });\n      }\n\n      // overloaded - keep Paragraphs class\n      update(views) {\n        let m = new Paragraphs(views);\n        return m\n      }\n    }\n\n    /** */\n    View.prototype.paragraphs = function () {\n      const hasTwoNewline = /\\n\\n/;\n      let all = [];\n      let run = [];\n      this.all().forEach(s => {\n        let end = s.lastTerm();\n        run.push(s.ptrs[0]);\n        if (hasTwoNewline.test(end.post())) {\n          all.push(run);\n          run = [];\n        }\n      });\n      if (run.length) {\n        all.push(run);\n      }\n      let views = all.map(ptr => {\n        return this.update(ptr)\n      });\n      return new Paragraphs(views)\n    };\n  };\n  var api$1 = api;\n\n  var plugin = {\n    api: api$1,\n  };\n\n  return plugin;\n\n}));\n"
  },
  {
    "path": "plugins/paragraphs/builds/compromise-paragraphs.mjs",
    "content": "const t=function(t,e){let s=[];return t.forEach((t=>{let r=e(t);r.found&&(s=s.concat(r.ptrs))})),t[0].update(s)};var e={api:function(e){class Paragraphs{constructor(t){this.viewType=\"Paragraphs\",this.views=t}get found(){return this.views.length>0}get length(){return this.views.length}text(t){return function(t,e){let s=[];return t.forEach((t=>{s+=e(t)})),s}(this.views,(e=>e.text(t)))}json(){return function(t,e){let s=[];return t.forEach((t=>{s.push(t[e]())})),s}(this.views,\"json\")}match(e){return t(this.views,(t=>t.match(e)))}not(e){return t(this.views,(t=>t.match(e)))}sentences(){return t(this.views,(t=>t))}terms(){return t(this.views,(t=>t.terms()))}filter(t){let e=this.views.filter((e=>e.some(t)));return this.update(e)}forEach(t){return this.views.forEach((e=>{e.forEach(t)})),this}map(t){let e=this.views.map((e=>t(e)));return this.update(e)}has(t){return this.views.some((e=>e.has(t)))}if(t){let e=this.views.filter((e=>e.has(t)));return this.update(e)}ifNo(t){let e=this.views.filter((e=>!e.has(t)));return this.update(e)}eq(t){let e=this.views[t];return e?this.update([e]):this.update([])}first(){return this.eq(0)}last(){return this.eq(this.length-1)}debug(){this.views.forEach((t=>{console.log(\"\\n=-=-=-=-\"),t.debug()}))}update(t){return new Paragraphs(t)}}e.prototype.paragraphs=function(){const t=/\\n\\n/;let e=[],s=[];this.all().forEach((r=>{let i=r.lastTerm();s.push(r.ptrs[0]),t.test(i.post())&&(e.push(s),s=[])})),s.length&&e.push(s);let r=e.map((t=>this.update(t)));return new Paragraphs(r)}}};export{e as default};\n"
  },
  {
    "path": "plugins/paragraphs/index.d.ts",
    "content": "import nlp from 'compromise'\ntype View = ReturnType<typeof nlp>\n\ninterface ParagraphView extends View {\n}\n\nexport interface ParagraphMethods {\n  /**  */\n  paragraphs(): ParagraphView\n}\n\n/** extended compromise lib **/\ndeclare const nlpParagraphs: nlp.TypedPlugin<ParagraphMethods>\n\nexport default nlpParagraphs\n"
  },
  {
    "path": "plugins/paragraphs/package.json",
    "content": "{\n  \"name\": \"compromise-paragraphs\",\n  \"description\": \"plugin for nlp-compromise\",\n  \"version\": \"0.1.0\",\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"main\": \"./src/plugin.js\",\n  \"unpkg\": \"./builds/compromise-paragraphs.min.js\",\n  \"module\": \"./builds/compromise-paragraphs.mjs\",\n  \"type\": \"module\",\n  \"sideEffects\": false,\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./src/plugin.js\",\n      \"require\": \"./builds/compromise-paragraphs.cjs\",\n      \"types\": \"./index.d.ts\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise/tree/master/plugins/paragraphs\",\n  \"scripts\": {\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"testb\": \"TESTENV=prod tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"build\": \"rollup -c --silent\"\n  },\n  \"files\": [\n    \"builds/\",\n    \"src/\"\n  ],\n  \"peerDependencies\": {\n    \"compromise\": \">=14.0.0\"\n  },\n  \"devDependencies\": {},\n  \"license\": \"MIT\"\n}"
  },
  {
    "path": "plugins/paragraphs/src/api.js",
    "content": "\nconst concatArr = function (views, fn) {\n  const arr = []\n  views.forEach(m => {\n    arr.push(m[fn]())\n  })\n  return arr\n}\n\nconst concatStr = function (views, cb) {\n  let str = []\n  views.forEach(m => {\n    str += cb(m)\n  })\n  return str\n}\n\nconst concatDoc = function (views, cb) {\n  let ptrs = []\n  views.forEach(m => {\n    const res = cb(m)\n    if (res.found) {\n      ptrs = ptrs.concat(res.ptrs)\n    }\n  })\n  return views[0].update(ptrs)\n}\n\n\nconst api = function (View) {\n\n\n\n  class Paragraphs {\n    constructor(views) {\n      this.viewType = 'Paragraphs'\n      this.views = views\n    }\n    // is the view not-empty?\n    get found() {\n      return this.views.length > 0\n    }\n    // how many matches we have\n    get length() {\n      return this.views.length\n    }\n\n    text(fmt) {\n      return concatStr(this.views, (m) => m.text(fmt))\n    }\n    json() {\n      return concatArr(this.views, 'json')\n    }\n    match(reg) {\n      return concatDoc(this.views, (view) => view.match(reg))\n    }\n    not(reg) {\n      return concatDoc(this.views, (view) => view.match(reg))\n    }\n    sentences() {\n      return concatDoc(this.views, (view) => view)\n    }\n    terms() {\n      return concatDoc(this.views, (view) => view.terms())\n    }\n    filter(fn) {\n      const res = this.views.filter(p => {\n        return p.some(fn)\n      })\n      return this.update(res)\n    }\n    forEach(fn) {\n      this.views.forEach(p => {\n        p.forEach(fn)\n      })\n      return this\n    }\n    map(fn) {\n      const res = this.views.map(view => {\n        return fn(view)\n      })\n      return this.update(res)\n    }\n    // boolean\n    has(reg) {\n      return this.views.some(view => view.has(reg))\n    }\n    if(reg) {\n      const views = this.views.filter(view => view.has(reg))\n      return this.update(views)\n    }\n    ifNo(reg) {\n      const views = this.views.filter(view => !view.has(reg))\n      return this.update(views)\n    }\n    eq(num) {\n      const p = this.views[num]\n      if (p) {\n        return this.update([p])\n      }\n      return this.update([])\n    }\n    first() {\n      return this.eq(0)\n    }\n    last() {\n      return this.eq(this.length - 1)\n    }\n    debug() {\n      this.views.forEach((view) => {\n        console.log('\\n=-=-=-=-')//eslint-disable-line\n        view.debug()\n      })\n    }\n\n    // overloaded - keep Paragraphs class\n    update(views) {\n      const m = new Paragraphs(views)\n      return m\n    }\n  }\n\n  /** */\n  View.prototype.paragraphs = function () {\n    const hasTwoNewline = /\\n\\n/\n    const all = []\n    let run = []\n    this.all().forEach(s => {\n      const end = s.lastTerm()\n      run.push(s.ptrs[0])\n      if (hasTwoNewline.test(end.post())) {\n        all.push(run)\n        run = []\n      }\n    })\n    if (run.length) {\n      all.push(run)\n    }\n    const views = all.map(ptr => {\n      return this.update(ptr)\n    })\n    return new Paragraphs(views)\n  }\n}\nexport default api"
  },
  {
    "path": "plugins/paragraphs/src/plugin.js",
    "content": "import api from './api.js'\n\nexport default {\n  api,\n}"
  },
  {
    "path": "plugins/paragraphs/tests/_lib.js",
    "content": "import build from '../../../builds/one/compromise-one.mjs'\nimport src from '../../../src/one.js'\nimport plgBuild from '../builds/compromise-paragraphs.mjs'\nimport plg from '../src/plugin.js'\nlet nlp;\n\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==')  // eslint-disable-line\n  nlp = build\n  nlp.plugin(plgBuild)\n} else {\n  nlp = src\n  nlp.plugin(plg)\n}\nexport default nlp\n"
  },
  {
    "path": "plugins/paragraphs/tests/misc.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[paragraph/misc] '\n\n\n\ntest('paragraph-basic', function (t) {\n  const str = `What's with these homies dissin' my girl? Why do they gotta front? \n\nWhat did we ever do to these guys that made them so violent?\n\nWoo-hoo, but you know I'm yours.\nWoo-hoo, and I know you're mine.\nWoo-hoo, and that's for all time\n  `\n\n  const doc = nlp(str).paragraphs()\n\n  t.equal(doc.length, 3, 'three-paragraphs')\n\n  const m = doc.eq(0)\n  t.equal(m.sentences().length, 2, 'two sentences in first paragraph')\n\n  t.equal(doc.json().length, 3, 'three-json objects')\n\n  const one = doc.filter(p => {\n    return p.has('these guys')\n  })\n  t.equal(one.length, 1, 'filter-one')\n  t.equal(/^What did we ever do /.test(one.text()), true, 'filter-text')\n\n  t.end()\n})\n\n\n\ntest('paragraph-tests', function (t) {\n  const txt = `What's with these homies dissin' my girl? Why do they gotta front? What did we ever do to these guys that made them so violent?\n\nSecond paragraph! Oh yeah! my friends`\n\n  const doc = nlp(txt)\n  const res = doc.paragraphs()\n  t.equal(res.found, true, here + 'found')\n  t.equal(res.length, 2, here + 'length')\n\n  // match\n  const m = res.match('^what did')\n  t.equal(m.length, 1, here + 'match')\n  t.equal(m.growRight('. .').text(), 'What did we ever', here + 'match-text')\n\n  t.equal(res.has('foo'), false, here + 'has')\n  t.equal(res.has('my girl'), true, here + 'has2')\n  t.equal(res.if('homies').length, 1, here + 'if')\n\n  t.ok(res.first(), here + 'first')\n  t.ok(res.last(), here + 'last')\n  t.ok(res.terms(), here + 'terms')\n  res.forEach(p => p.toUpperCase())\n  t.equal(res.length, 2, here + 'forEach')\n  const r = res.map(p => p.toLowerCase())\n  t.equal(r.length, 2, here + 'map')\n\n  t.end()\n})\n"
  },
  {
    "path": "plugins/payload/README.md",
    "content": "<div align=\"center\">\n  <img src=\"https://cloud.githubusercontent.com/assets/399657/23590290/ede73772-01aa-11e7-8915-181ef21027bc.png\" />\n\n  <div>An ad-hoc datastore for <a href=\"https://github.com/spencermountain/compromise/\">compromise</a></div>\n\n  <!-- npm version -->\n  <a href=\"https://npmjs.org/package/compromise-payload\">\n    <img src=\"https://img.shields.io/npm/v/compromise-payload.svg?style=flat-square\" />\n  </a>\n  \n  <!-- file size -->\n  <a href=\"https://unpkg.com/compromise-payload/builds/compromise-payload.min.js\">\n    <img src=\"https://badge-size.herokuapp.com/spencermountain/compromise/master/plugins/plugin-payload/builds/compromise-payload.min.js\" />\n  </a>\n\n  <div align=\"center\">\n    <code>npm install compromise-payload</code>\n  </div>\n</div>\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\nThis plugin provides a facilty for storing a retreiving more complex data than tags, for compromise documents and matches.\n\n### Payload\n\n```js\nimport plg from 'compromise-payload'\nnlp.extend(plg)\n\nlet doc = nlp('i saw John Lennon in Manchester, and Bob Dylan in Southhampton')\n\n// markup metadata\ndoc.match('(john lennon|bob dylan)').addPayload({ instrument: 'guitar' })\n\n// add more\ndoc.people().forEach(m => {\n  if (m.has('lennon')) {\n    m.addPayload({ height: `5'11` })\n  }\n  if (m.has('ringo')) {\n    m.addPayload({ height: `5'8` })\n  }\n})\n\n// retrieve specific payloads\ndoc.match('john lennon').getPayloads()\ndoc.match('bob dylabn').getPayloads()\n\n// retrieve them all\ndoc.getPayloads()\n\n// inspect given payloads:\ndoc.debug('payload')\n```\n\nYou can also pass a callback into `.addPayload()`:\n\n```js\nlet doc = nlp('i saw John Lennon, and john smith and bob dylan')\ndoc.people().addPayload(m => {\n  return { lastName: m.terms().last().text() }\n})\n```\n\nYou can remove all, or selected payloads with `.clearPayload()`:\n\n```js\ndoc.match('bob .').clearPayloads()\ndoc.getPayloads().length // now 2\n\ndoc.clearPayloads()\ndoc.getPayloads().length // now 0\n```\n\nMIT\n"
  },
  {
    "path": "plugins/payload/builds/compromise-payload.cjs",
    "content": "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.compromisePayload = factory());\n})(this, (function () { 'use strict';\n\n  /* eslint-disable no-console */\n\n  // pretty-print each match that has a payload\n  const debug = function (view) {\n    view.getPayloads().forEach(res => {\n      let { match, val } = res;\n      console.log('\\n────────');\n      match.debug('highlight');\n      console.log('    ', JSON.stringify(val));\n      console.log('\\n');\n    });\n  };\n  var debug$1 = debug;\n\n  var plugin = {\n    //establish payload db\n    mutate: function (world) {\n      world.model.one.db = {};\n      world.methods.one.debug = world.methods.one.debug || {};\n      world.methods.one.debug.payload = debug$1;\n    },\n\n    api: function (View) {\n      /** return any data on our given matches */\n      View.prototype.getPayloads = function () {\n        let res = [];\n        let db = this.world.model.one.db || {};\n        this.fullPointer.forEach(ptr => {\n          let n = ptr[0];\n          if (db.hasOwnProperty(n)) {\n            // look at all vals for this sentence\n            let seeking = this.update([ptr]);\n            db[n].forEach(obj => {\n              let m = this.update([obj.ptr]);\n              if (seeking.has(m)) {\n                res = res.concat({\n                  match: m,\n                  val: obj.val,\n                });\n              }\n            });\n          }\n        });\n        return res\n      };\n\n      /** add data about our current matches */\n      View.prototype.addPayload = function (val) {\n        let db = this.world.model.one.db || {};\n        this.fullPointer.forEach(ptr => {\n          let n = ptr[0];\n          db[n] = db[n] || [];\n          if (typeof val === 'function') {\n            //push in whatever the callback wants\n            let m = this.update([ptr]);\n            let res = val(m);\n            if (res !== null && res !== undefined) {\n              db[n].push({ ptr, val: res });\n            }\n          } else {\n            db[n].push({ ptr, val }); //push some static data\n          }\n        });\n        return this\n      };\n\n      /** remove all payloads in selection */\n      View.prototype.clearPayloads = function () {\n        let db = this.world.model.one.db || {};\n        // get each payload\n        let res = this.getPayloads();\n        res.forEach(obj => {\n          let ptr = obj.match.fullPointer[0] || [];\n          let [n, start, end] = ptr;\n          db[n] = db[n] || [];\n          // remove it from our list of payloads\n          db[n] = db[n].filter(r => {\n            if (r.ptr[1] === start && r.ptr[2] === end) {\n              return false\n            }\n            return true\n          });\n          // clean-up any empty arrays\n          if (db[n].length === 0) {\n            delete db[n];\n          }\n        });\n        return this\n      };\n    },\n  };\n\n  return plugin;\n\n}));\n"
  },
  {
    "path": "plugins/payload/builds/compromise-payload.mjs",
    "content": "var t=function(t){t.getPayloads().forEach((t=>{let{match:e,val:o}=t;console.log(\"\\n────────\"),e.debug(\"highlight\"),console.log(\"    \",JSON.stringify(o)),console.log(\"\\n\")}))},e={mutate:function(e){e.model.one.db={},e.methods.one.debug=e.methods.one.debug||{},e.methods.one.debug.payload=t},api:function(t){t.prototype.getPayloads=function(){let t=[],e=this.world.model.one.db||{};return this.fullPointer.forEach((o=>{let l=o[0];if(e.hasOwnProperty(l)){let a=this.update([o]);e[l].forEach((e=>{let o=this.update([e.ptr]);a.has(o)&&(t=t.concat({match:o,val:e.val}))}))}})),t},t.prototype.addPayload=function(t){let e=this.world.model.one.db||{};return this.fullPointer.forEach((o=>{let l=o[0];if(e[l]=e[l]||[],\"function\"==typeof t){let a=this.update([o]),n=t(a);null!=n&&e[l].push({ptr:o,val:n})}else e[l].push({ptr:o,val:t})})),this},t.prototype.clearPayloads=function(){let t=this.world.model.one.db||{};return this.getPayloads().forEach((e=>{let o=e.match.fullPointer[0]||[],[l,a,n]=o;t[l]=t[l]||[],t[l]=t[l].filter((t=>t.ptr[1]!==a||t.ptr[2]!==n)),0===t[l].length&&delete t[l]})),this}}};export{e as default};\n"
  },
  {
    "path": "plugins/payload/index.d.ts",
    "content": "import nlp from 'compromise'\ntype View = ReturnType<typeof nlp>\n\ntype Payload = { match: View, val: any }\n\nexport interface PayloadMethods {\n  /** return any data on our given matches */\n  getPayloads(): Payload[]\n  /** add data about our current matches */\n  addPayload(input:any): View\n  /** remove all payloads in match */\n  clearPayloads(): View\n}\n\n/** extended compromise lib **/\ndeclare const nlpPayload: nlp.TypedPlugin<PayloadMethods>\n\nexport default nlpPayload\n"
  },
  {
    "path": "plugins/payload/package.json",
    "content": "{\n  \"name\": \"compromise-payload\",\n  \"description\": \"plugin for nlp-compromise\",\n  \"version\": \"0.0.3\",\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"main\": \"./src/plugin.js\",\n  \"unpkg\": \"./builds/compromise-payload.min.js\",\n  \"type\": \"module\",\n  \"sideEffects\": false,\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./src/plugin.js\",\n      \"require\": \"./builds/compromise-payload.cjs\",\n      \"types\": \"./index.d.ts\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise/tree/master/plugins/payload\",\n  \"scripts\": {\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"testb\": \"TESTENV=prod tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"build\": \"rollup -c --silent\"\n  },\n  \"peerDependencies\": {\n    \"compromise\": \">=14.2.0\"\n  },\n  \"dependencies\": {},\n  \"files\": [\n    \"builds/\",\n    \"src/\",\n    \"index.d.ts\"\n  ],\n  \"devDependencies\": {},\n  \"license\": \"MIT\"\n}"
  },
  {
    "path": "plugins/payload/scratch.js",
    "content": "/* eslint-disable no-console, no-unused-vars */\n\nimport nlp from '../../src/three.js'\n// import plugin from './src/plugin.js'\nimport plugin from './builds/compromise-payload.mjs'\nnlp.extend(plugin)\n\nconst doc = nlp('i saw John Lennon, and john smith and bob dylan')\n\ndoc.match('(john|bob|dave) .').addPayload(m => {\n  return { lastName: m.terms().last().text() }\n})\nconsole.log(doc.getPayloads())\n"
  },
  {
    "path": "plugins/payload/src/debug.js",
    "content": "/* eslint-disable no-console */\n\n// pretty-print each match that has a payload\nconst debug = function (view) {\n  view.getPayloads().forEach(res => {\n    const { match, val } = res\n    console.log('\\n────────')\n    match.debug('highlight')\n    console.log('    ', JSON.stringify(val))\n    console.log('\\n')\n  })\n}\nexport default debug\n"
  },
  {
    "path": "plugins/payload/src/plugin.js",
    "content": "import debug from './debug.js'\n\nexport default {\n  //establish payload db\n  mutate: function (world) {\n    world.model.one.db = {}\n    world.methods.one.debug = world.methods.one.debug || {}\n    world.methods.one.debug.payload = debug\n  },\n\n  api: function (View) {\n    /** return any data on our given matches */\n    View.prototype.getPayloads = function () {\n      let res = []\n      const db = this.world.model.one.db || {}\n      this.fullPointer.forEach(ptr => {\n        const n = ptr[0]\n        if (db.hasOwnProperty(n)) {\n          // look at all vals for this sentence\n          const seeking = this.update([ptr])\n          db[n].forEach(obj => {\n            const m = this.update([obj.ptr])\n            if (seeking.has(m)) {\n              res = res.concat({\n                match: m,\n                val: obj.val,\n              })\n            }\n          })\n        }\n      })\n      return res\n    }\n\n    /** add data about our current matches */\n    View.prototype.addPayload = function (val) {\n      const db = this.world.model.one.db || {}\n      this.fullPointer.forEach(ptr => {\n        const n = ptr[0]\n        db[n] = db[n] || []\n        if (typeof val === 'function') {\n          //push in whatever the callback wants\n          const m = this.update([ptr])\n          const res = val(m)\n          if (res !== null && res !== undefined) {\n            db[n].push({ ptr, val: res })\n          }\n        } else {\n          db[n].push({ ptr, val }) //push some static data\n        }\n      })\n      return this\n    }\n\n    /** remove all payloads in selection */\n    View.prototype.clearPayloads = function () {\n      const db = this.world.model.one.db || {}\n      // get each payload\n      const res = this.getPayloads()\n      res.forEach(obj => {\n        const ptr = obj.match.fullPointer[0] || []\n        const [n, start, end] = ptr\n        db[n] = db[n] || []\n        // remove it from our list of payloads\n        db[n] = db[n].filter(r => {\n          if (r.ptr[1] === start && r.ptr[2] === end) {\n            return false\n          }\n          return true\n        })\n        // clean-up any empty arrays\n        if (db[n].length === 0) {\n          delete db[n]\n        }\n      })\n      return this\n    }\n  },\n}\n"
  },
  {
    "path": "plugins/payload/tests/_lib.js",
    "content": "import src from '../../../src/one.js'\nimport build from '../../../builds/one/compromise-one.mjs'\n\nimport plg from '../src/plugin.js'\nimport plgBuild from '../builds/compromise-payload.mjs'\nlet nlp\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==') // eslint-disable-line\n  nlp = build\n  nlp.plugin(plgBuild)\n} else {\n  nlp = src\n  nlp.plugin(plg)\n}\n\nexport default nlp\n"
  },
  {
    "path": "plugins/payload/tests/payload.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('payload-misc', function (t) {\n  const doc = nlp('i saw John Lennon, and tom cruise.')\n\n  doc.match('(john lennon|tom cruise|johnny carson)').forEach(m => {\n    if (m.has('john lennon')) {\n      m.addPayload({ height: `5'11` })\n    }\n    if (m.has('tom cruise')) {\n      m.addPayload({ height: `5'8` })\n    }\n  })\n\n  t.equal(doc.getPayloads().length, 2, 'full-doc-2')\n\n  const end = doc.match('and tom .')\n  t.equal(end.getPayloads().length, 1, 'end-1')\n\n  const tom = doc.match('tom')\n  t.equal(tom.getPayloads().length, 1, 'tom-0')\n\n  tom.clearPayloads()\n  t.equal(doc.getPayloads().length, 1, 'now-1')\n  doc.clearPayloads()\n  t.equal(doc.getPayloads().length, 0, 'now-0')\n\n  t.end()\n})\n\ntest('payload-fn', function (t) {\n  const doc = nlp('i saw John Lennon, and john smith and bob dylan')\n  doc.match('(john|bob|dave) .').addPayload(m => {\n    return m.text().match(/john/i) ? { isjohn: true } : null\n  })\n  t.equal(doc.getPayloads().length, 2, 'now-2')\n  t.equal(doc.match('john .').getPayloads().length, 2, 'double-match-still-2')\n\n  doc.match('bob .').clearPayloads()\n  t.equal(doc.getPayloads().length, 2, 'still-2')\n\n  doc.match('john .').eq(1).clearPayloads()\n  t.equal(doc.getPayloads().length, 1, 'now-1')\n  doc.match('john .').clearPayloads()\n  t.equal(doc.getPayloads().length, 0, 'now-0')\n\n  // add two-payloads per match\n  doc.match('(john|bob|dave) .').addPayload(m => {\n    return { lastName: m.terms().last().text() }\n  })\n  t.equal(doc.getPayloads().length, 3, '3-now')\n\n  doc.match('(john lennon|bob dylan)').addPayload(() => {\n    return { instrument: 'guitar' }\n  })\n  t.equal(doc.getPayloads().length, 5, '5-now')\n  t.end()\n})\n"
  },
  {
    "path": "plugins/speech/README.md",
    "content": "<div align=\"center\">\n  <img src=\"https://cloud.githubusercontent.com/assets/399657/23590290/ede73772-01aa-11e7-8915-181ef21027bc.png\" />\n\n  <div>pronounciation metadata plugin for <a href=\"https://github.com/spencermountain/compromise/\">compromise</a></div> \n\n  <!-- npm version -->\n  <a href=\"https://npmjs.org/package/compromise-speech\">\n    <img src=\"https://img.shields.io/npm/v/compromise-speech.svg?style=flat-square\" />\n  </a>\n  \n  <!-- file size -->\n  <a href=\"https://unpkg.com/compromise-speech/builds/compromise-speech.min.js\">\n    <img src=\"https://badge-size.herokuapp.com/spencermountain/compromise/master/plugins/speech/builds/compromise-speech.min.js\" />\n  </a>\n\n  <div align=\"center\">\n    <code>npm install compromise-speech</code>\n  </div>\n</div>\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n### Syllables\nTokenize a word approximately by it's pronounced syllables. We use a custom rule-based alortithm for this.\n```js\nimport plg from 'compromise-speech'\nnlp.extend(plg)\n\nlet doc = nlp('seventh millenium. white collar')\ndoc.syllables()\n[ [ 'se', 'venth', 'mil', 'le', 'nium' ], [ 'white', 'col', 'lar' ] ]\n```\n\nAlternatively, if you'd like to combine syllable information with other properties, you can use `.compute('syllables')`\n```js\nlet doc = nlp('edmonton oilers')\ndoc.compute('syllables')\ndoc.json()\n/*[{\n  \"terms\": [\n    {\n      \"normal\": \"edmonton\",\n      \"syllables\": [\"ed\", \"mon\", \"ton\"]\n    },\n    {\n      \"normal\": \"oilers\",\n      \"syllables\": [\"oi\", \"lers\"]\n    }\n  ]\n}]\n*/\n```\n\n### SoundsLike\nGenerate an expected pronounciation for the word, as a normalized string.\nWe use the [metaphone implementation](https://en.wikipedia.org/wiki/Metaphone), which is a simple rule-based pronounciation system.\n\n```js\nimport plg from 'compromise-speech'\nnlp.extend(plg)\n\nlet doc = nlp('seventh millenium. white collar')\ndoc.soundsLike()\n// [ [ 'sefenth', 'milenium' ], [ 'wite', 'kolar' ] ]\n```\n\nAlternatively, if you'd like to combine syllable information with other properties, you can use `.compute('syllables')`\n```js\nlet doc = nlp('edmonton oilers')\ndoc.compute('soundsLike')\ndoc.json()\n/*[{\n  \"terms\": [\n    {\n      \"normal\": \"edmonton\",\n      \"soundsLike\": \"etmonton\"\n    },\n    {\n      \"normal\": \"oilers\",\n      \"soundsLike\": \"oilers\"\n    }\n  ]\n}]\n*/\n```\n\nMIT"
  },
  {
    "path": "plugins/speech/builds/compromise-speech.cjs",
    "content": "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.compromiseSpeech = factory());\n})(this, (function () { 'use strict';\n\n  //individual manipulations of the text\n  const transformations = {\n    dedup: (s) => {\n      return s.replace(/([^c])\\1/g, '$1')\n    },\n    dropInitialLetters: (s) => {\n      if (s.match(/^(kn|gn|pn|ae|wr)/)) {\n        return s.substring(1, s.length - 1)\n      }\n      return s\n    },\n    dropBafterMAtEnd: (s) => {\n      return s.replace(/mb$/, 'm')\n    },\n    cchange: (s) => {\n      s = s.replace(/([^s]|^)(c)(h)/g, '$1x$3').trim();\n      s = s.replace(/cia/g, 'xia');\n      s = s.replace(/c([iey])/g, 's$1');\n      return s.replace(/c/g, 'k')\n    },\n    dchange: (s) => {\n      s = s.replace(/d(ge|gy|gi)/g, 'j$1');\n      return s.replace(/d/g, 't')\n    },\n    dropG: (s) => {\n      // Drop 'G' if followed by 'H' and 'H' is not at the end or before a vowel. \n      s = s.replace(/gh(^$|[^aeiou])/g, 'h$1');//eslint-disable-line\n      // Drop 'G' if followed by 'N' or 'NED' and is at the end.\n      return s.replace(/g(n|ned)$/g, '$1')\n    },\n    changeG: (s) => {\n      s = s.replace(/gh/g, 'f');\n      s = s.replace(/([^g]|^)(g)([iey])/g, '$1j$3');\n      s = s.replace(/gg/g, 'g');\n      return s.replace(/g/g, 'k')\n    },\n    dropH: (s) => {\n      return s.replace(/([aeiou])h([^aeiou]|$)/g, '$1$2')\n    },\n    changeCK: (s) => {\n      return s.replace(/ck/g, 'k')\n    },\n    changePH: (s) => {\n      return s.replace(/ph/g, 'f')\n    },\n    changeQ: (s) => {\n      return s.replace(/q/g, 'k')\n    },\n    changeS: (s) => {\n      return s.replace(/s(h|io|ia)/g, 'x$1')\n    },\n    changeT: (s) => {\n      s = s.replace(/t(ia[^n]|io)/g, 'x$1');\n      // return s.replace(/th/, '0')\n      return s\n    },\n    dropT: (s) => {\n      return s.replace(/tch/g, 'ch')\n    },\n    changeV: (s) => {\n      return s.replace(/v/g, 'f')\n    },\n    changeWH: (s) => {\n      return s.replace(/^wh/, 'w')\n    },\n    dropW: (s) => {\n      return s.replace(/w([^aeiou]|$)/g, '$1')\n    },\n    changeX: (s) => {\n      s = s.replace(/^x/, 's');\n      return s.replace(/x/g, 'ks')\n    },\n    dropY: (s) => {\n      return s.replace(/y([^aeiou]|$)/g, '$1')\n    },\n    changeZ: (s) => {\n      return s.replace(/z/, 's')\n    },\n    dropVowels: (s) => {\n      return s //.charAt(0) + s.substr(1, s.length).replace(/[aeiou]/g, '');\n    },\n  };\n  var m = transformations;\n\n  //a js version of the metaphone (#1) algorithm\n\n  const metaphone = function (s) {\n    s = m.dedup(s);\n    s = m.dropInitialLetters(s);\n    s = m.dropBafterMAtEnd(s);\n    s = m.changeCK(s);\n    s = m.cchange(s);\n    s = m.dchange(s);\n    s = m.dropG(s);\n    s = m.changeG(s);\n    s = m.dropH(s);\n    s = m.changePH(s);\n    s = m.changeQ(s);\n    s = m.changeS(s);\n    s = m.changeX(s);\n    s = m.changeT(s);\n    s = m.dropT(s);\n    s = m.changeV(s);\n    s = m.changeWH(s);\n    s = m.dropW(s);\n    s = m.dropY(s);\n    s = m.changeZ(s);\n    s = m.dropVowels(s);\n    return s.trim()\n  };\n\n  var metaphone$1 = metaphone;\n\n  const soundsLike = function (view) {\n    view.docs.forEach(terms => {\n      terms.forEach(term => {\n        term.soundsLike = metaphone$1(term.normal || term.text);\n      });\n    });\n  };\n\n  var soundsLike$1 = soundsLike;\n\n  const starts_with_single_vowel_combos = /^(eu)/i;\n  const joining_consonant_vowel = /^[^aeiou]e([^d]|$)/;\n  const cvcv_same_consonant = /^([^aeiouy])[aeiouy]\\1[aeiouy]/;\n  const cvcv_same_vowel = /^[^aeiouy]([aeiouy])[^aeiouy]\\1/;\n  const cvcv_known_consonants = /^([tg][aeiouy]){2}/;\n  const only_one_or_more_c = /^[^aeiouy]+$/;\n\n  const ends_with_vowel$1 = /[aeiouy]$/;\n  const starts_with_consonant_vowel$1 = /^[^aeiouy]h?[aeiouy]/;\n\n  const ones = [\n    /^[^aeiou]?ion/,\n    /^[^aeiou]?ised/,\n    /^[^aeiou]?iled/,\n\n    // -ing, -ent\n    /[aeiou]n[gt]$/,\n\n    // -ate, -age\n    /\\wa[gt]e$/,\n  ];\n\n  //suffix fixes\n  const postprocess = function (arr) {\n    //trim whitespace\n    arr = arr.map(function (w) {\n      return w.trim()\n    });\n    arr = arr.filter(function (w) {\n      return w !== ''\n    });\n    // if (arr.length > 2) {\n    //   return arr;\n    // }\n    let l = arr.length;\n    if (l > 1) {\n      let suffix = arr[l - 2] + arr[l - 1];\n      for (let i = 0; i < ones.length; i++) {\n        if (suffix.match(ones[i])) {\n          arr[l - 2] = arr[l - 2] + arr[l - 1];\n          arr.pop();\n        }\n      }\n    }\n\n    // since the open syllable detection is overzealous,\n    // sometimes need to rejoin incorrect splits\n    if (arr.length > 1) {\n      let first_is_open =\n        (arr[0].length === 1 || arr[0].match(starts_with_consonant_vowel$1)) &&\n        arr[0].match(ends_with_vowel$1);\n      let second_is_joining = arr[1].match(joining_consonant_vowel);\n\n      if (first_is_open && second_is_joining) {\n        let possible_combination = arr[0] + arr[1];\n        let probably_separate_syllables =\n          possible_combination.match(cvcv_same_consonant) ||\n          possible_combination.match(cvcv_same_vowel) ||\n          possible_combination.match(cvcv_known_consonants);\n\n        if (!probably_separate_syllables) {\n          arr[0] = arr[0] + arr[1];\n          arr.splice(1, 1);\n        }\n      }\n    }\n\n    if (arr.length > 1) {\n      let second_to_last_is_open =\n        arr[arr.length - 2].match(starts_with_consonant_vowel$1) &&\n        arr[arr.length - 2].match(ends_with_vowel$1);\n      let last_is_joining =\n        arr[arr.length - 1].match(joining_consonant_vowel) &&\n        ones.every(re => !arr[arr.length - 1].match(re));\n\n      if (second_to_last_is_open && last_is_joining) {\n        let possible_combination = arr[arr.length - 2] + arr[arr.length - 1];\n        let probably_separate_syllables =\n          possible_combination.match(cvcv_same_consonant) ||\n          possible_combination.match(cvcv_same_vowel) ||\n          possible_combination.match(cvcv_known_consonants);\n\n        if (!probably_separate_syllables) {\n          arr[arr.length - 2] = arr[arr.length - 2] + arr[arr.length - 1];\n          arr.splice(arr.length - 1, 1);\n        }\n      }\n    }\n\n    if (arr.length > 1) {\n      let single = arr[0] + arr[1];\n      if (single.match(starts_with_single_vowel_combos)) {\n        arr[0] = single;\n        arr.splice(1, 1);\n      }\n    }\n\n    if (arr.length > 1) {\n      if (arr[arr.length - 1].match(only_one_or_more_c)) {\n        arr[arr.length - 2] = arr[arr.length - 2] + arr[arr.length - 1];\n        arr.splice(arr.length - 1, 1);\n      }\n    }\n\n    return arr\n  };\n  var postProcess = postprocess;\n\n  //chop a string into pronounced syllables\n\n  const all_spaces = / +/g;\n  const ends_with_vowel = /[aeiouy]$/;\n  const starts_with_consonant_vowel = /^[^aeiouy]h?[aeiouy]/;\n  const starts_with_e_then_specials = /^e[sm]/;\n  const starts_with_e = /^e/;\n  const ends_with_noisy_vowel_combos = /(eo|eu|ia|oa|ua|ui)$/i;\n  const aiouy = /[aiouy]/;\n  const ends_with_ee = /ee$/;\n  // const whitespace_dash = /\\s\\-/\n\n  //method is nested because it's called recursively\n  const doWord = function (w) {\n    let all = [];\n    let chars = w.split('');\n    let before = '';\n    let after = '';\n    let current = '';\n    for (let i = 0; i < chars.length; i++) {\n      before = chars.slice(0, i).join('');\n      current = chars[i];\n      after = chars.slice(i + 1, chars.length).join('');\n      let candidate = before + chars[i];\n\n      //it's a consonant that comes after a vowel\n      if (before.match(ends_with_vowel) && !current.match(ends_with_vowel)) {\n        if (after.match(starts_with_e_then_specials)) {\n          candidate += 'e';\n          after = after.replace(starts_with_e, '');\n        }\n        all.push(candidate);\n        return all.concat(doWord(after))\n      }\n\n      //unblended vowels ('noisy' vowel combinations)\n      if (candidate.match(ends_with_noisy_vowel_combos)) {\n        //'io' is noisy, not in 'ion'\n        all.push(before);\n        all.push(current);\n        return all.concat(doWord(after)) //recursion\n      }\n\n      // if candidate is followed by a CV, assume consecutive open syllables\n      if (candidate.match(ends_with_vowel) && after.match(starts_with_consonant_vowel)) {\n        all.push(candidate);\n        return all.concat(doWord(after))\n      }\n    }\n    //if still running, end last syllable\n    if (w.match(aiouy) || w.match(ends_with_ee)) {\n      //allow silent trailing e\n      all.push(w);\n    } else if (w) {\n      let last = all.length - 1;\n      if (last < 0) {\n        last = 0;\n      }\n      all[last] = (all[last] || '') + w; //append it to the last one\n    }\n    return all\n  };\n\n  let syllables$2 = function (str) {\n    let all = [];\n    if (!str) {\n      return all\n    }\n    str = str.replace(/[.,?]/g, '');\n    str.split(all_spaces).map(s => {\n      all = all.concat(doWord(s));\n    });\n\n    // str.split(whitespace_dash).forEach(doWord)\n    all = postProcess(all);\n\n    //for words like 'tree' and 'free'\n    if (all.length === 0) {\n      all = [str];\n    }\n    //filter blanks\n    all = all.filter(s => s);\n\n    return all\n  };\n\n  // console.log(syllables('civilised'))\n\n  var getSyllables = syllables$2;\n\n  // const defaultObj = { normal: true, text: true, terms: false }\n\n  const syllables = function (view) {\n    view.docs.forEach(terms => {\n      terms.forEach(term => {\n        term.syllables = getSyllables(term.normal || term.text);\n      });\n    });\n  };\n\n  var syllables$1 = syllables;\n\n  var compute = {\n    soundsLike: soundsLike$1,\n    syllables: syllables$1\n  };\n\n  const api = function (View) {\n    /** */\n    View.prototype.syllables = function () {\n      this.compute('syllables');\n      let all = [];\n      this.docs.forEach(terms => {\n        let some = [];\n        terms.forEach(term => {\n          some = some.concat(term.syllables);\n        });\n        if (some.length > 0) {\n          all.push(some);\n        }\n      });\n      return all\n    };\n    /** */\n    View.prototype.soundsLike = function () {\n      this.compute('soundsLike');\n      let all = [];\n      this.docs.forEach(terms => {\n        let some = [];\n        terms.forEach(term => {\n          some = some.concat(term.soundsLike);\n        });\n        if (some.length > 0) {\n          all.push(some);\n        }\n      });\n      return all\n    };\n  };\n  var api$1 = api;\n\n  var plugin = {\n    api: api$1,\n    compute\n  };\n\n  return plugin;\n\n}));\n"
  },
  {
    "path": "plugins/speech/builds/compromise-speech.mjs",
    "content": "var e={dedup:e=>e.replace(/([^c])\\1/g,\"$1\"),dropInitialLetters:e=>e.match(/^(kn|gn|pn|ae|wr)/)?e.substring(1,e.length-1):e,dropBafterMAtEnd:e=>e.replace(/mb$/,\"m\"),cchange:e=>(e=(e=(e=e.replace(/([^s]|^)(c)(h)/g,\"$1x$3\").trim()).replace(/cia/g,\"xia\")).replace(/c([iey])/g,\"s$1\")).replace(/c/g,\"k\"),dchange:e=>(e=e.replace(/d(ge|gy|gi)/g,\"j$1\")).replace(/d/g,\"t\"),dropG:e=>(e=e.replace(/gh(^$|[^aeiou])/g,\"h$1\")).replace(/g(n|ned)$/g,\"$1\"),changeG:e=>(e=(e=(e=e.replace(/gh/g,\"f\")).replace(/([^g]|^)(g)([iey])/g,\"$1j$3\")).replace(/gg/g,\"g\")).replace(/g/g,\"k\"),dropH:e=>e.replace(/([aeiou])h([^aeiou]|$)/g,\"$1$2\"),changeCK:e=>e.replace(/ck/g,\"k\"),changePH:e=>e.replace(/ph/g,\"f\"),changeQ:e=>e.replace(/q/g,\"k\"),changeS:e=>e.replace(/s(h|io|ia)/g,\"x$1\"),changeT:e=>e=e.replace(/t(ia[^n]|io)/g,\"x$1\"),dropT:e=>e.replace(/tch/g,\"ch\"),changeV:e=>e.replace(/v/g,\"f\"),changeWH:e=>e.replace(/^wh/,\"w\"),dropW:e=>e.replace(/w([^aeiou]|$)/g,\"$1\"),changeX:e=>(e=e.replace(/^x/,\"s\")).replace(/x/g,\"ks\"),dropY:e=>e.replace(/y([^aeiou]|$)/g,\"$1\"),changeZ:e=>e.replace(/z/,\"s\"),dropVowels:e=>e};var a=function(a){return a=e.dedup(a),a=e.dropInitialLetters(a),a=e.dropBafterMAtEnd(a),a=e.changeCK(a),a=e.cchange(a),a=e.dchange(a),a=e.dropG(a),a=e.changeG(a),a=e.dropH(a),a=e.changePH(a),a=e.changeQ(a),a=e.changeS(a),a=e.changeX(a),a=e.changeT(a),a=e.dropT(a),a=e.changeV(a),a=e.changeWH(a),a=e.dropW(a),a=e.dropY(a),a=e.changeZ(a),(a=e.dropVowels(a)).trim()};const t=/^(eu)/i,c=/^[^aeiou]e([^d]|$)/,n=/^([^aeiouy])[aeiouy]\\1[aeiouy]/,l=/^[^aeiouy]([aeiouy])[^aeiouy]\\1/,h=/^([tg][aeiouy]){2}/,r=/^[^aeiouy]+$/,o=/[aeiouy]$/,g=/^[^aeiouy]h?[aeiouy]/,i=[/^[^aeiou]?ion/,/^[^aeiou]?ised/,/^[^aeiou]?iled/,/[aeiou]n[gt]$/,/\\wa[gt]e$/];var p=function(e){let a=(e=(e=e.map((function(e){return e.trim()}))).filter((function(e){return\"\"!==e}))).length;if(a>1){let t=e[a-2]+e[a-1];for(let c=0;c<i.length;c++)t.match(i[c])&&(e[a-2]=e[a-2]+e[a-1],e.pop())}if(e.length>1){let a=(1===e[0].length||e[0].match(g))&&e[0].match(o),t=e[1].match(c);if(a&&t){let a=e[0]+e[1];a.match(n)||a.match(l)||a.match(h)||(e[0]=e[0]+e[1],e.splice(1,1))}}if(e.length>1){let a=e[e.length-2].match(g)&&e[e.length-2].match(o),t=e[e.length-1].match(c)&&i.every(a=>!e[e.length-1].match(a));if(a&&t){let a=e[e.length-2]+e[e.length-1];a.match(n)||a.match(l)||a.match(h)||(e[e.length-2]=e[e.length-2]+e[e.length-1],e.splice(e.length-1,1))}}if(e.length>1){let a=e[0]+e[1];a.match(t)&&(e[0]=a,e.splice(1,1))}return e.length>1&&e[e.length-1].match(r)&&(e[e.length-2]=e[e.length-2]+e[e.length-1],e.splice(e.length-1,1)),e};const u=/ +/g,s=/[aeiouy]$/,d=/^[^aeiouy]h?[aeiouy]/,f=/^e[sm]/,m=/^e/,$=/(eo|eu|ia|oa|ua|ui)$/i,y=/[aiouy]/,k=/ee$/,E=function(e){let a=[],t=e.split(\"\"),c=\"\",n=\"\",l=\"\";for(let e=0;e<t.length;e++){c=t.slice(0,e).join(\"\"),l=t[e],n=t.slice(e+1,t.length).join(\"\");let h=c+t[e];if(c.match(s)&&!l.match(s))return n.match(f)&&(h+=\"e\",n=n.replace(m,\"\")),a.push(h),a.concat(E(n));if(h.match($))return a.push(c),a.push(l),a.concat(E(n));if(h.match(s)&&n.match(d))return a.push(h),a.concat(E(n))}if(e.match(y)||e.match(k))a.push(e);else if(e){let t=a.length-1;t<0&&(t=0),a[t]=(a[t]||\"\")+e}return a};var x=function(e){let a=[];return e?((e=e.replace(/[.,?]/g,\"\")).split(u).map(e=>{a=a.concat(E(e))}),a=p(a),0===a.length&&(a=[e]),a=a.filter(e=>e),a):a};var b={api:function(e){e.prototype.syllables=function(){this.compute(\"syllables\");let e=[];return this.docs.forEach(a=>{let t=[];a.forEach(e=>{t=t.concat(e.syllables)}),t.length>0&&e.push(t)}),e},e.prototype.soundsLike=function(){this.compute(\"soundsLike\");let e=[];return this.docs.forEach(a=>{let t=[];a.forEach(e=>{t=t.concat(e.soundsLike)}),t.length>0&&e.push(t)}),e}},compute:{soundsLike:function(e){e.docs.forEach(e=>{e.forEach(e=>{e.soundsLike=a(e.normal||e.text)})})},syllables:function(e){e.docs.forEach(e=>{e.forEach(e=>{e.syllables=x(e.normal||e.text)})})}}};export{b as default};\n"
  },
  {
    "path": "plugins/speech/demo/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n\n  <script src=\"https://unpkg.com/compromise\"></script>\n  <!-- <script src=\"https://unpkg.com/compromise-speech\"></script> -->\n  <script src=\"../builds/compromise-speech.min.js\"></script>\n\n</head>\n\n<body>\n  <p>compromise-speech demo:</p>\n  <ul>\n    <kbd>chocolate microscopes </kbd>\n    <pre id=\"res\">loading</pre>\n  </ul>\n\n  <script defer>\n    nlp.plugin(compromiseSpeech) // window.compromiseSpeech\n    let txt = document.querySelector('kbd').innerText\n    let doc = nlp(txt)\n    let json = doc.syllables()\n    document.querySelector('#res').innerHTML = JSON.stringify(json, null, 2)\n  </script>\n</body>\n\n</html>"
  },
  {
    "path": "plugins/speech/index.d.ts",
    "content": "import nlp from 'compromise'\n\nexport interface SpeechMethods {\n  /** estimate spoken phenomes */\n  syllables(): String[][]\n  /** estimate pronounciation information */\n  soundsLike(): String[][]\n}\n\n/** extended compromise lib **/\ndeclare const nlpSpeech: nlp.TypedPlugin<SpeechMethods>\n\nexport default nlpSpeech\n"
  },
  {
    "path": "plugins/speech/package.json",
    "content": "{\n  \"name\": \"compromise-speech\",\n  \"description\": \"plugin for nlp-compromise\",\n  \"version\": \"0.1.1\",\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"main\": \"./src/plugin.js\",\n  \"unpkg\": \"./builds/compromise-speech.min.js\",\n  \"module\": \"./builds/compromise-speech.mjs\",\n  \"type\": \"module\",\n  \"sideEffects\": false,\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./src/plugin.js\",\n      \"require\": \"./builds/compromise-speech.cjs\",\n      \"types\": \"./index.d.ts\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise/tree/master/plugins/speech\",\n  \"scripts\": {\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"testb\": \"TESTENV=prod tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"build\": \"rollup -c --silent\"\n  },\n  \"eslintIgnore\": [\n    \"builds/*.js\"\n  ],\n  \"files\": [\n    \"builds/\",\n    \"src/\",\n    \"index.d.ts\"\n  ],\n  \"peerDependencies\": {\n    \"compromise\": \">=14.0.0\"\n  },\n  \"dependencies\": {},\n  \"devDependencies\": {},\n  \"license\": \"MIT\"\n}"
  },
  {
    "path": "plugins/speech/scratch.js",
    "content": "/* eslint-disable no-console, no-unused-vars */\nimport nlp from '../../src/three.js'\n\nimport speechPlugin from './src/plugin.js'\nnlp.plugin(speechPlugin)\n// nlp.verbose(true)\n// nlp.verbose('date')\n\nlet txt = ''\ntxt = 'seventh millenium. white collar'\n\n// let doc = nlp(txt).compute(['soundsLike', 'syllables'])\n// console.dir(doc.json()[0], { depth: 5 })\n\nconst doc = nlp('calgary')\ndoc.compute('soundsLike')\nconsole.log(JSON.stringify(doc.json()[0], null, 2))"
  },
  {
    "path": "plugins/speech/src/api.js",
    "content": "const api = function (View) {\n  /** */\n  View.prototype.syllables = function () {\n    this.compute('syllables')\n    const all = []\n    this.docs.forEach(terms => {\n      let some = []\n      terms.forEach(term => {\n        some = some.concat(term.syllables)\n      })\n      if (some.length > 0) {\n        all.push(some)\n      }\n    })\n    return all\n  }\n  /** */\n  View.prototype.soundsLike = function () {\n    this.compute('soundsLike')\n    const all = []\n    this.docs.forEach(terms => {\n      let some = []\n      terms.forEach(term => {\n        some = some.concat(term.soundsLike)\n      })\n      if (some.length > 0) {\n        all.push(some)\n      }\n    })\n    return all\n  }\n}\nexport default api"
  },
  {
    "path": "plugins/speech/src/compute/index.js",
    "content": "import soundsLike from './soundsLike/index.js'\nimport syllables from './syllables/index.js'\n\nexport default {\n  soundsLike,\n  syllables\n}"
  },
  {
    "path": "plugins/speech/src/compute/soundsLike/index.js",
    "content": "import metaphone from './metaphone.js'\n\nconst soundsLike = function (view) {\n  view.docs.forEach(terms => {\n    terms.forEach(term => {\n      term.soundsLike = metaphone(term.normal || term.text)\n    })\n  })\n}\n\nexport default soundsLike"
  },
  {
    "path": "plugins/speech/src/compute/soundsLike/metaphone.js",
    "content": "//a js version of the metaphone (#1) algorithm\n//adapted from the work of Chris Umbel\n// https://github.com/NaturalNode/natural/blob/master/lib/natural/phonetics/metaphone.js\n\nimport m from './transformations.js'\n\nconst metaphone = function (s) {\n  s = m.dedup(s)\n  s = m.dropInitialLetters(s)\n  s = m.dropBafterMAtEnd(s)\n  s = m.changeCK(s)\n  s = m.cchange(s)\n  s = m.dchange(s)\n  s = m.dropG(s)\n  s = m.changeG(s)\n  s = m.dropH(s)\n  s = m.changePH(s)\n  s = m.changeQ(s)\n  s = m.changeS(s)\n  s = m.changeX(s)\n  s = m.changeT(s)\n  s = m.dropT(s)\n  s = m.changeV(s)\n  s = m.changeWH(s)\n  s = m.dropW(s)\n  s = m.dropY(s)\n  s = m.changeZ(s)\n  s = m.dropVowels(s)\n  return s.trim()\n}\n\nexport default metaphone\n"
  },
  {
    "path": "plugins/speech/src/compute/soundsLike/transformations.js",
    "content": "//individual manipulations of the text\nconst transformations = {\n  dedup: (s) => {\n    return s.replace(/([^c])\\1/g, '$1')\n  },\n  dropInitialLetters: (s) => {\n    if (s.match(/^(kn|gn|pn|ae|wr)/)) {\n      return s.substring(1, s.length - 1)\n    }\n    return s\n  },\n  dropBafterMAtEnd: (s) => {\n    return s.replace(/mb$/, 'm')\n  },\n  cchange: (s) => {\n    s = s.replace(/([^s]|^)(c)(h)/g, '$1x$3').trim()\n    s = s.replace(/cia/g, 'xia')\n    s = s.replace(/c([iey])/g, 's$1')\n    return s.replace(/c/g, 'k')\n  },\n  dchange: (s) => {\n    s = s.replace(/d(ge|gy|gi)/g, 'j$1')\n    return s.replace(/d/g, 't')\n  },\n  dropG: (s) => {\n    // Drop 'G' if followed by 'H' and 'H' is not at the end or before a vowel. \n    s = s.replace(/gh(^$|[^aeiou])/g, 'h$1')//eslint-disable-line\n    // Drop 'G' if followed by 'N' or 'NED' and is at the end.\n    return s.replace(/g(n|ned)$/g, '$1')\n  },\n  changeG: (s) => {\n    s = s.replace(/gh/g, 'f')\n    s = s.replace(/([^g]|^)(g)([iey])/g, '$1j$3')\n    s = s.replace(/gg/g, 'g')\n    return s.replace(/g/g, 'k')\n  },\n  dropH: (s) => {\n    return s.replace(/([aeiou])h([^aeiou]|$)/g, '$1$2')\n  },\n  changeCK: (s) => {\n    return s.replace(/ck/g, 'k')\n  },\n  changePH: (s) => {\n    return s.replace(/ph/g, 'f')\n  },\n  changeQ: (s) => {\n    return s.replace(/q/g, 'k')\n  },\n  changeS: (s) => {\n    return s.replace(/s(h|io|ia)/g, 'x$1')\n  },\n  changeT: (s) => {\n    s = s.replace(/t(ia[^n]|io)/g, 'x$1')\n    // return s.replace(/th/, '0')\n    return s\n  },\n  dropT: (s) => {\n    return s.replace(/tch/g, 'ch')\n  },\n  changeV: (s) => {\n    return s.replace(/v/g, 'f')\n  },\n  changeWH: (s) => {\n    return s.replace(/^wh/, 'w')\n  },\n  dropW: (s) => {\n    return s.replace(/w([^aeiou]|$)/g, '$1')\n  },\n  changeX: (s) => {\n    s = s.replace(/^x/, 's')\n    return s.replace(/x/g, 'ks')\n  },\n  dropY: (s) => {\n    return s.replace(/y([^aeiou]|$)/g, '$1')\n  },\n  changeZ: (s) => {\n    return s.replace(/z/, 's')\n  },\n  dropVowels: (s) => {\n    return s //.charAt(0) + s.substr(1, s.length).replace(/[aeiou]/g, '');\n  },\n}\nexport default transformations\n"
  },
  {
    "path": "plugins/speech/src/compute/syllables/index.js",
    "content": "import getSyllables from './syllables.js'\n\n// const defaultObj = { normal: true, text: true, terms: false }\n\nconst syllables = function (view) {\n  view.docs.forEach(terms => {\n    terms.forEach(term => {\n      term.syllables = getSyllables(term.normal || term.text)\n    })\n  })\n}\n\nexport default syllables\n"
  },
  {
    "path": "plugins/speech/src/compute/syllables/postProcess.js",
    "content": "const starts_with_single_vowel_combos = /^(eu)/i\nconst joining_consonant_vowel = /^[^aeiou]e([^d]|$)/\nconst cvcv_same_consonant = /^([^aeiouy])[aeiouy]\\1[aeiouy]/\nconst cvcv_same_vowel = /^[^aeiouy]([aeiouy])[^aeiouy]\\1/\nconst cvcv_known_consonants = /^([tg][aeiouy]){2}/\nconst only_one_or_more_c = /^[^aeiouy]+$/\n\nconst ends_with_vowel = /[aeiouy]$/\nconst starts_with_consonant_vowel = /^[^aeiouy]h?[aeiouy]/\n\nconst ones = [\n  /^[^aeiou]?ion/,\n  /^[^aeiou]?ised/,\n  /^[^aeiou]?iled/,\n\n  // -ing, -ent\n  /[aeiou]n[gt]$/,\n\n  // -ate, -age\n  /\\wa[gt]e$/,\n]\n\n//suffix fixes\nconst postprocess = function (arr) {\n  //trim whitespace\n  arr = arr.map(function (w) {\n    return w.trim()\n  })\n  arr = arr.filter(function (w) {\n    return w !== ''\n  })\n  // if (arr.length > 2) {\n  //   return arr;\n  // }\n  const l = arr.length\n  if (l > 1) {\n    const suffix = arr[l - 2] + arr[l - 1]\n    for (let i = 0; i < ones.length; i++) {\n      if (suffix.match(ones[i])) {\n        arr[l - 2] = arr[l - 2] + arr[l - 1]\n        arr.pop()\n      }\n    }\n  }\n\n  // since the open syllable detection is overzealous,\n  // sometimes need to rejoin incorrect splits\n  if (arr.length > 1) {\n    const first_is_open =\n      (arr[0].length === 1 || arr[0].match(starts_with_consonant_vowel)) &&\n      arr[0].match(ends_with_vowel)\n    const second_is_joining = arr[1].match(joining_consonant_vowel)\n\n    if (first_is_open && second_is_joining) {\n      const possible_combination = arr[0] + arr[1]\n      const probably_separate_syllables =\n        possible_combination.match(cvcv_same_consonant) ||\n        possible_combination.match(cvcv_same_vowel) ||\n        possible_combination.match(cvcv_known_consonants)\n\n      if (!probably_separate_syllables) {\n        arr[0] = arr[0] + arr[1]\n        arr.splice(1, 1)\n      }\n    }\n  }\n\n  if (arr.length > 1) {\n    const second_to_last_is_open =\n      arr[arr.length - 2].match(starts_with_consonant_vowel) &&\n      arr[arr.length - 2].match(ends_with_vowel)\n    const last_is_joining =\n      arr[arr.length - 1].match(joining_consonant_vowel) &&\n      ones.every(re => !arr[arr.length - 1].match(re))\n\n    if (second_to_last_is_open && last_is_joining) {\n      const possible_combination = arr[arr.length - 2] + arr[arr.length - 1]\n      const probably_separate_syllables =\n        possible_combination.match(cvcv_same_consonant) ||\n        possible_combination.match(cvcv_same_vowel) ||\n        possible_combination.match(cvcv_known_consonants)\n\n      if (!probably_separate_syllables) {\n        arr[arr.length - 2] = arr[arr.length - 2] + arr[arr.length - 1]\n        arr.splice(arr.length - 1, 1)\n      }\n    }\n  }\n\n  if (arr.length > 1) {\n    const single = arr[0] + arr[1]\n    if (single.match(starts_with_single_vowel_combos)) {\n      arr[0] = single\n      arr.splice(1, 1)\n    }\n  }\n\n  if (arr.length > 1) {\n    if (arr[arr.length - 1].match(only_one_or_more_c)) {\n      arr[arr.length - 2] = arr[arr.length - 2] + arr[arr.length - 1]\n      arr.splice(arr.length - 1, 1)\n    }\n  }\n\n  return arr\n}\nexport default postprocess\n"
  },
  {
    "path": "plugins/speech/src/compute/syllables/syllables.js",
    "content": "//chop a string into pronounced syllables\nimport postProcess from './postProcess.js'\n\nconst all_spaces = / +/g\nconst ends_with_vowel = /[aeiouy]$/\nconst starts_with_consonant_vowel = /^[^aeiouy]h?[aeiouy]/\nconst starts_with_e_then_specials = /^e[sm]/\nconst starts_with_e = /^e/\nconst ends_with_noisy_vowel_combos = /(eo|eu|ia|oa|ua|ui)$/i\nconst aiouy = /[aiouy]/\nconst ends_with_ee = /ee$/\n// const whitespace_dash = /\\s\\-/\n\n//method is nested because it's called recursively\nconst doWord = function (w) {\n  const all = []\n  const chars = w.split('')\n  let before = ''\n  let after = ''\n  let current = ''\n  for (let i = 0; i < chars.length; i++) {\n    before = chars.slice(0, i).join('')\n    current = chars[i]\n    after = chars.slice(i + 1, chars.length).join('')\n    let candidate = before + chars[i]\n\n    //it's a consonant that comes after a vowel\n    if (before.match(ends_with_vowel) && !current.match(ends_with_vowel)) {\n      if (after.match(starts_with_e_then_specials)) {\n        candidate += 'e'\n        after = after.replace(starts_with_e, '')\n      }\n      all.push(candidate)\n      return all.concat(doWord(after))\n    }\n\n    //unblended vowels ('noisy' vowel combinations)\n    if (candidate.match(ends_with_noisy_vowel_combos)) {\n      //'io' is noisy, not in 'ion'\n      all.push(before)\n      all.push(current)\n      return all.concat(doWord(after)) //recursion\n    }\n\n    // if candidate is followed by a CV, assume consecutive open syllables\n    if (candidate.match(ends_with_vowel) && after.match(starts_with_consonant_vowel)) {\n      all.push(candidate)\n      return all.concat(doWord(after))\n    }\n  }\n  //if still running, end last syllable\n  if (w.match(aiouy) || w.match(ends_with_ee)) {\n    //allow silent trailing e\n    all.push(w)\n  } else if (w) {\n    let last = all.length - 1\n    if (last < 0) {\n      last = 0\n    }\n    all[last] = (all[last] || '') + w //append it to the last one\n  }\n  return all\n}\n\nconst syllables = function (str) {\n  let all = []\n  if (!str) {\n    return all\n  }\n  str = str.replace(/[.,?]/g, '')\n  str.split(all_spaces).map(s => {\n    all = all.concat(doWord(s))\n  })\n\n  // str.split(whitespace_dash).forEach(doWord)\n  all = postProcess(all)\n\n  //for words like 'tree' and 'free'\n  if (all.length === 0) {\n    all = [str]\n  }\n  //filter blanks\n  all = all.filter(s => s)\n\n  return all\n}\n\n// console.log(syllables('civilised'))\n\nexport default syllables\n"
  },
  {
    "path": "plugins/speech/src/plugin.js",
    "content": "import compute from './compute/index.js'\nimport api from './api.js'\n\nexport default {\n  api,\n  compute\n}"
  },
  {
    "path": "plugins/speech/tests/_lib.js",
    "content": "import build from '../../../builds/one/compromise-one.mjs'\nimport src from '../../../src/one.js'\nimport plgBuild from '../builds/compromise-speech.mjs'\nimport plg from '../src/plugin.js'\nlet nlp;\n\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==')  // eslint-disable-line\n  nlp = build\n  nlp.plugin(plgBuild)\n} else {\n  nlp = src\n  nlp.plugin(plg)\n}\nexport default nlp\n"
  },
  {
    "path": "plugins/speech/tests/soundsLike.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('soundsLike-tests', function (t) {\n  const arr = [\n    ['phil collins', 'fil kolins'],\n    ['Philadelphia freedom', 'filatelfia fretom'],\n    ['Shine on me', 'shine on me'],\n    ['peace of mind', 'pease of mint'],\n    ['Yes I do', 'yes i to'],\n    ['Zapped me', 'sapet me'],\n    ['Right between the eyes', 'rit betwen the eyes'],\n    // ['But the times have changed', 'but the times hafe kshanjet'],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    const str = doc.soundsLike({})[0].join(' ')\n    t.equal(str, a[1], a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/speech/tests/syllables.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\nconst words = [\n  'sud den ly',\n  'con sti pa tion',\n  'di a bo lic',\n  'fa ted',\n  'ge ne tic',\n  'hy giene',\n  'o ma ha',\n  'i mi ta ted',\n  'tree',\n  'ci vi lised',\n  'went',\n  'to ge ther',\n  'tog gle',\n  'move ment',\n  'mo ment',\n  'do nate',\n  'vi king',\n  'wat tage',\n  'con gre gate',\n  'some thing',\n  'sales man',\n  're sour ces',\n  'eve ry thing',\n  'eve ry bo dy',\n  'hole',\n  'ho ly',\n  'sec ret',\n  'cause',\n  'fate',\n  'fates',\n  'eu lo gy',\n  'e on',\n  'rea sons',\n  'and',\n  'hoc key',\n  'wild',\n  'fun',\n  'fun ny',\n  'hor ses',\n  'cal ga ry',\n  'tor na do',\n  'pen',\n  'stu dy',\n  'ja mai ca',\n  'tri ni dad',\n  'ca na da',\n  'i ran',\n  'i raq',\n  'sau di a ra bi a',\n  'clin ton',\n  'hub ris',\n  'tur key',\n  'cor si ca',\n  'dev iled',\n  // 'horse',\n  // 'chance',\n  // 'peo ple'\n]\n\ntest('test length', function (t) {\n  words.forEach(sep => {\n    const str = sep.replace(/ /g, '')\n    const doc = nlp(str)\n    const have = doc.syllables()[0]\n    const want = sep.split(/ /g)\n    t.equal(have.length, want.length, str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "plugins/speed/README.md",
    "content": "<div align=\"center\">\n  <img src=\"https://cloud.githubusercontent.com/assets/399657/23590290/ede73772-01aa-11e7-8915-181ef21027bc.png\" />\n\n  <div>nlp performance plugin for <a href=\"https://github.com/spencermountain/compromise/\">compromise</a></div> \n\n  <!-- npm version -->\n  <a href=\"https://npmjs.org/package/compromise-speed\">\n    <img src=\"https://img.shields.io/npm/v/compromise-speed.svg?style=flat-square\" />\n  </a>\n  \n  <!-- file size -->\n  <a href=\"https://unpkg.com/compromise-speed/builds/compromise-speed.min.js\">\n    <img src=\"https://badge-size.herokuapp.com/spencermountain/compromise/master/plugins/plugin-speed/builds/compromise-speed.min.js\" />\n  </a>\n\n  <div align=\"center\">\n    <code>npm install compromise-speed</code>\n  </div>\n</div>\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n\n### WorkerPool\nparse sentences of a large text in parallel:\n```js\nimport {workerPool} from 'compromise-speed'\nnlp.extend(workerPool)\n\nlet doc = await nlp.workerPool(myNovel, 'the #Adjective of #Noun')\ndoc.debug()//results\n```\n\nyou can pass in a [compromise match](https://observablehq.com/@spencermountain/compromise-match-syntax), or a [net](https://observablehq.com/@spencermountain/compromise-sweep):\n```js\nlet net = nlp.buildNet([\n  { match: 'every single #Noun' },\n  { match: 'not (a|one) #Noun' },\n])\nlet doc = await nlp.workerPool(myNovel, net)\ndoc.debug()//results\n```\n\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n### StreamFile\nparse and process a file from your filesystem, without loading it all into memory:\n```js\nimport {streamFile} from 'compromise-speed'\nnlp.extend(streamFile)\n\nnlp.streamFile('./path/to/file.txt', (s)=>{\n  // map fn on each sentence\n  return s.if('the #Adjective of times')\n}).then(doc=>{\n  // just the returned matches\n  doc.debug()\n})\n```\n\n\n### Keypress\nif you are running compromise on every keystroke, it is not necessary to re-parse all sentences, every time.\nThis plugin will cache any already-parsed sentences, and combine them in-memory, with any changed ones.\n\nit will also un-cache any temporary sentences, to clear-up memory.\n```js\nimport {keyPress} from 'compromise-speed'\nnlp.extend(keyPress)\n\nlet doc = nlp.keyPress('parsed once. it was the blurst of')\ndoc = nlp.keyPress('parsed once. it was the blurst of times')\n```\n\nor in the browser:\n```html\n<textarea>Chocolate microscopes? Double guitars?</textarea>\n<script src=\"https://unpkg.com/compromise\"></script>\n<script src=\"https://unpkg.com/compromise-speed\"></script>\n<script defer>\n  nlp.plugin(compromiseSpeed.keyPress)\n  document.querySelector('textarea').onkeypress = (e) => {\n    let doc = nlp.keyPress(e.target.value)\n  }\n</script>\n```\n\nMIT"
  },
  {
    "path": "plugins/speed/builds/compromise-speed.cjs",
    "content": "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('fs'), require('path'), require('url'), require('worker_threads'), require('os')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'fs', 'path', 'url', 'worker_threads', 'os'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.compromiseSpeed = {}, global.fs, global.path, global.url, global.worker_threads, global.os));\n})(this, (function (exports, fs, path, url, worker_threads, os) { 'use strict';\n\n  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;\n  function _interopNamespaceDefault(e) {\n    var n = Object.create(null);\n    if (e) {\n      Object.keys(e).forEach(function (k) {\n        if (k !== 'default') {\n          var d = Object.getOwnPropertyDescriptor(e, k);\n          Object.defineProperty(n, k, d.get ? d : {\n            enumerable: true,\n            get: function () { return e[k]; }\n          });\n        }\n      });\n    }\n    n.default = e;\n    return Object.freeze(n);\n  }\n\n  var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs);\n\n  const streamFile = function (path, fn, opts = {}) {\n    const nlp = this;\n    const world = nlp.world();\n    const splitSentences = nlp.methods().one.tokenize.splitSentences;\n    const s = fs__namespace.createReadStream(path, opts);\n\n    let txt = '';\n    const res = [];\n\n    const doIt = (str) => {\n      const doc = nlp(str);\n      const m = fn(doc);\n      if (m && m.found) {\n        m.docs.forEach(l => res.push(l));\n      }\n    };\n\n    const quickSplit = function (str) {\n      const end = txt.substring(str.length - 300);\n      const arr = splitSentences(end, world);\n      const last = arr[arr.length - 1];\n      const main = str.substr(0, str.length - last.length);\n      return [main, last]\n    };\n\n\n    return new Promise((resolve, reject) => {\n      s.on('data', function (chunk) {\n        txt += chunk;\n        const [main, end] = quickSplit(txt);\n        doIt(main);\n        txt = end;\n      });\n      s.on('end', function () {\n        doIt(txt);// do dangling one\n        // construct document of only results\n        const doc = nlp('');\n        doc.document = res;\n        resolve(doc);\n      });\n      s.on('error', function (err) {\n        console.error(err.stack); // eslint-disable-line\n        reject(err);\n      });\n    })\n\n\n  };\n\n  var streamFile$1 = {\n    lib: {\n      streamFile\n    }\n  };\n\n  const sentenceCache = {};\n\n  /** memoize tagger per-sentence */\n  const keyPress = function (text, lex, opts = {}) {\n    const nlp = this;\n    const splitSentences = this.methods().one.tokenize.splitSentences;\n    const arr = splitSentences(text, this.world());\n\n    const list = [];\n    arr.forEach(str => {\n      //do we already have it parsed?\n      if (sentenceCache.hasOwnProperty(str) === true) {\n        //use the cache\n        list.push(sentenceCache[str].data);\n        sentenceCache[str].used = true;\n        // console.log('used cache: ', str, '\\n')\n      } else {\n        //otherwise, parse it!\n        if (opts.verbose) {\n          console.log(`parsing: '${str}'\\n`);//eslint-disable-line\n        }\n        const json = nlp(str, lex).json(0);\n        //cache it\n        sentenceCache[str] = {\n          data: json,\n          used: true,\n        };\n        list.push(json);\n      }\n    });\n    // delete any unused cache\n    Object.keys(sentenceCache).forEach(k => {\n      if (sentenceCache[k].used !== true) {\n        delete sentenceCache[k];\n      } else {\n        sentenceCache[k].used = null;\n      }\n    });\n    if (opts.verbose) {\n      console.log(`${Object.keys(sentenceCache).length}' sentences in cache\\n`);//eslint-disable-line\n    }\n    return nlp(list)\n  };\n\n  var keyPress$1 = {\n    lib: {\n      keyPress\n    }\n  };\n\n  const fastSplit = function (str, numChunks = 1) {\n    const size = Math.ceil(str.length / numChunks);\n    const chunks = new Array(numChunks);\n    for (let i = 0, o = 0; i < numChunks; ++i, o += size) {\n      chunks[i] = str.substr(o, size);\n    }\n    return chunks\n  };\n\n  const pluckStarts = function (arr, nlp) {\n    const world = nlp.world();\n    const splitSentences = nlp.methods().one.tokenize.splitSentences;\n\n    for (let i = 1; i < arr.length; i += 1) {\n      const top = arr[i].substr(0, 200);\n      const first = splitSentences(top, world)[0];\n      // move the first (part) sentence onto the end of the last one\n      const len = first.length;\n      arr[i - 1] += first;\n      arr[i] = arr[i].substring(len);\n    }\n    return arr\n  };\n\n  // split a text quickly, then repair splits by sentence\n  const rip = function (txt, nlp, parts = 1) {\n    let arr = fastSplit(txt, parts);\n    arr = pluckStarts(arr, nlp);\n    return arr\n  };\n\n  // let res = rip('one, two, three. four five six. seven eight nine', 4)\n  // console.log(JSON.stringify(res, null, 2))\n\n  const dir = path.dirname(url.fileURLToPath((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('compromise-speed.cjs', document.baseURI).href))));\n\n  const makePool = function (count, reg) {\n    const workers = [];\n    for (let i = 0; i < count; i += 1) {\n      const info = {\n        workerData: {\n          workerIndex: i,\n          workerCount: count,\n          reg\n        }\n      };\n      const file = path.join(dir, './worker.js');\n      const worker = new worker_threads.Worker(file, info);\n      worker.on('error', (err) => console.error(err));// eslint-disable-line\n      workers.push(worker);\n    }\n    return workers\n  };\n\n  const cpuCount = os.cpus().length;\n  const workerCount = cpuCount;\n\n  const workerPool$1 = function (txt, reg) {\n    const nlp = this;\n    if (typeof reg === 'string') {\n      reg = nlp.parseMatch(reg);\n    }\n\n    const workers = makePool(workerCount, reg);\n    const parts = rip(txt, nlp, workerCount);\n    // console.log(parts.length)\n    const results = [];\n    const isRunning = workers.map(_ => true);// eslint-disable-line\n\n    // workers.foreach\n    workers.forEach((worker, i) => {\n      worker.postMessage({ type: 'work', work: parts[i] || [] });\n    });\n\n    return new Promise((resolve) => {\n      // setup listeners\n      workers.forEach(worker => {\n        worker.on('message', (msg) => {\n          if (msg.type === 'match') {\n            msg.match.forEach(m => {\n              results.push(m);\n            });\n          }\n          if (msg.type === 'drained') {\n            const index = msg.status.workerIndex;\n            isRunning[index] = false;\n            // console.log(index, 'drained')\n            if (isRunning.every(b => b === false)) {\n              const doc = nlp('');\n              doc.document = results;\n              workers.forEach(w => w.terminate());\n              // console.log('done!')\n              resolve(doc);\n            }\n          }\n        });\n      });\n    })\n  };\n\n  var workerPool = {\n    lib: {\n      workerPool: workerPool$1\n    }\n  };\n\n  const getWords = function (net) {\n    return Object.keys(net.hooks).filter(w => !w.startsWith('#') && !w.startsWith('%'))\n  };\n\n  const maybeMatch = function (doc, net) {\n    // must have *atleast* one of these words\n    const words = getWords(net);\n    if (words.length === 0) {\n      return doc\n    }\n    if (!doc._cache) {\n      doc.cache();\n    }\n    const cache = doc._cache;\n    // return sentences that have one of our needed words\n    return doc.filter((_m, i) => {\n      return words.some(str => cache[i].has(str))\n    })\n  };\n\n  // tokenize first, then only tag sentences required\n  const lazyParse$1 = function (input, reg) {\n    let net = reg;\n    if (typeof reg === 'string') {\n      net = this.buildNet([{ match: reg }]);\n    }\n    const doc = this.tokenize(input);\n    const m = maybeMatch(doc, net);\n    if (m.found) {\n      m.compute(['index', 'tagger']);\n      return m.match(reg)\n    }\n    return doc.none()\n  };\n\n  var lazyParse = {\n    lib: {\n      lazy: lazyParse$1\n    }\n  };\n\n  var version = '0.1.2';\n\n  // combine all the plugins\n  const plugin = {\n    lib: Object.assign({}, streamFile$1.lib, keyPress$1.lib, workerPool.lib, lazyParse.lib),\n    version: version\n  };\n\n  exports.default = plugin;\n  exports.keyPress = keyPress$1;\n  exports.lazyParse = lazyParse;\n  exports.streamFile = streamFile$1;\n  exports.workerPool = workerPool;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n"
  },
  {
    "path": "plugins/speed/builds/compromise-speed.mjs",
    "content": "import*as t from\"fs\";import e from\"path\";import{fileURLToPath as n}from\"url\";import{Worker as o}from\"worker_threads\";import r from\"os\";var s={lib:{streamFile:function(e,n,o={}){const r=this,s=r.world(),c=r.methods().one.tokenize.splitSentences,i=t.createReadStream(e,o);let a=\"\";const u=[],l=t=>{const e=r(t),o=n(e);o&&o.found&&o.docs.forEach((t=>u.push(t)))};return new Promise(((t,e)=>{i.on(\"data\",(function(t){a+=t;const[e,n]=function(t){const e=a.substring(t.length-300),n=c(e,s),o=n[n.length-1];return[t.substr(0,t.length-o.length),o]}(a);l(e),a=n})),i.on(\"end\",(function(){l(a);const e=r(\"\");e.document=u,t(e)})),i.on(\"error\",(function(t){console.error(t.stack),e(t)}))}))}}};const c={};var i={lib:{keyPress:function(t,e,n={}){const o=this,r=(0,this.methods().one.tokenize.splitSentences)(t,this.world()),s=[];return r.forEach((t=>{if(!0===c.hasOwnProperty(t))s.push(c[t].data),c[t].used=!0;else{n.verbose&&console.log(`parsing: '${t}'\\n`);const r=o(t,e).json(0);c[t]={data:r,used:!0},s.push(r)}})),Object.keys(c).forEach((t=>{!0!==c[t].used?delete c[t]:c[t].used=null})),n.verbose&&console.log(`${Object.keys(c).length}' sentences in cache\\n`),o(s)}}};const a=function(t,e,n=1){let o=function(t,e=1){const n=Math.ceil(t.length/e),o=new Array(e);for(let r=0,s=0;r<e;++r,s+=n)o[r]=t.substr(s,n);return o}(t,n);return o=function(t,e){const n=e.world(),o=e.methods().one.tokenize.splitSentences;for(let e=1;e<t.length;e+=1){const r=o(t[e].substr(0,200),n)[0],s=r.length;t[e-1]+=r,t[e]=t[e].substring(s)}return t}(o,e),o},u=e.dirname(n(import.meta.url)),l=r.cpus().length;var h={lib:{workerPool:function(t,n){const r=this;\"string\"==typeof n&&(n=r.parseMatch(n));const s=function(t,n){const r=[];for(let s=0;s<t;s+=1){const c={workerData:{workerIndex:s,workerCount:t,reg:n}},i=e.join(u,\"./worker.js\"),a=new o(i,c);a.on(\"error\",(t=>console.error(t))),r.push(a)}return r}(l,n),c=a(t,r,l),i=[],h=s.map((t=>!0));return s.forEach(((t,e)=>{t.postMessage({type:\"work\",work:c[e]||[]})})),new Promise((t=>{s.forEach((e=>{e.on(\"message\",(e=>{if(\"match\"===e.type&&e.match.forEach((t=>{i.push(t)})),\"drained\"===e.type){const n=e.status.workerIndex;if(h[n]=!1,h.every((t=>!1===t))){const e=r(\"\");e.document=i,s.forEach((t=>t.terminate())),t(e)}}}))}))}))}}};const f=function(t,e){const n=function(t){return Object.keys(t.hooks).filter((t=>!t.startsWith(\"#\")&&!t.startsWith(\"%\")))}(e);if(0===n.length)return t;t._cache||t.cache();const o=t._cache;return t.filter(((t,e)=>n.some((t=>o[e].has(t)))))};var m={lib:{lazy:function(t,e){let n=e;\"string\"==typeof e&&(n=this.buildNet([{match:e}]));const o=this.tokenize(t),r=f(o,n);return r.found?(r.compute([\"index\",\"tagger\"]),r.match(e)):o.none()}}};const d={lib:Object.assign({},s.lib,i.lib,h.lib,m.lib),version:\"0.1.2\"};export{d as default,i as keyPress,m as lazyParse,s as streamFile,h as workerPool};\n"
  },
  {
    "path": "plugins/speed/demo/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n\n  <script src=\"https://unpkg.com/compromise\"></script>\n  <!-- <script src=\"https://unpkg.com/compromise-speed\"></script> -->\n  <script src=\"../builds/compromise-speed.min.js\"></script>\n\n</head>\n\n<body>\n  <p>compromise-speed demo:</p>\n  <h3>nlp.keypress() demo</h3>\n  <div>avoid re-parsing a full-text on each keystroke</div>\n  <div>open devtools and type more text, to see</div>\n  <ul>\n    <textarea style=\"width:80%; height:300px;\" id=\"input\">\n      Like the time I caught the ferry over to Shelbyville - I needed a new heel for my shoe, so I decided to go to Morganville which is what they called Shelbyville in those days. So, I tied an onion to my belt which was the style at the time. Now, to take the ferry cost a nickel. And in those days, nickels had pictures of bumblebees on em. Give me five bees for a quarter, you'd say. \n    </textarea>\n    <pre id=\"res\">loading</pre>\n  </ul>\n\n  <script defer>\n    nlp.plugin(compromiseSpeed.keyPress)\n    const opts = { verbose: true }\n    const parse = function (text) {\n      let doc = nlp.keyPress(text, null, opts)\n      document.querySelector('#res').innerHTML = `${doc.length} sentences - only 1 parsed`\n    }\n    let el = document.querySelector('#input')\n    parse(el.value)\n    el.onkeypress = (e) => parse(e.target.value)\n  </script>\n</body>\n\n</html>"
  },
  {
    "path": "plugins/speed/index.d.ts",
    "content": "import nlp from 'compromise'\n// type View = ReturnType<typeof nlp>\n\nexport interface SpeedMethods {\n  /** parse sentences of a text in parallel */\n  // workerPool(text: string, match: any): View\n  /** parse text without loading in memory */\n  // streamFile(file: string, filter: () => {}): Promise<View>;\n  /** cache pre-parsed text */\n  // keyPress(text: string): View\n}\n\n/** extended compromise lib **/\ndeclare const nlpSpeed: nlp.TypedPlugin<SpeedMethods>\n\nexport default nlpSpeed\n\n"
  },
  {
    "path": "plugins/speed/package.json",
    "content": "{\n  \"name\": \"compromise-speed\",\n  \"description\": \"plugin for nlp-compromise\",\n  \"version\": \"0.1.2\",\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"main\": \"./src/plugin.js\",\n  \"unpkg\": \"./builds/compromise-speed.min.js\",\n  \"module\": \"./builds/compromise-speed.mjs\",\n  \"type\": \"module\",\n  \"sideEffects\": false,\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./src/plugin.js\",\n      \"require\": \"./builds/compromise-speed.cjs\",\n      \"types\": \"./index.d.ts\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise/tree/master/plugins/speed\",\n  \"scripts\": {\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"testb\": \"TESTENV=prod tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"version\": \"node ./scripts/version.js\",\n    \"build\": \"npm run version && rollup -c --silent\"\n  },\n  \"files\": [\n    \"builds/\",\n    \"src/\",\n    \"index.d.ts\"\n  ],\n  \"peerDependencies\": {\n    \"compromise\": \">=14.0.0\"\n  },\n  \"devDependencies\": {\n    \"nlp-corpus\": \"^4.4.0\"\n  },\n  \"license\": \"MIT\"\n}"
  },
  {
    "path": "plugins/speed/scratch.js",
    "content": "/* eslint-disable no-console, no-unused-vars */\nimport nlp from '../../src/three.js'\nimport fs from 'fs'\n\n\nimport plg from './src/plugin.js'\nnlp.plugin(plg)\n\nconst file = `/Users/spencer/Desktop/infinite-jest.txt`\n// file = `/Users/spencer/mountain/compromise/plugins/speed/tests/files/freshPrince.txt`\nconst begin = new Date()\nconst txt = fs.readFileSync(file).toString()\n\nconst net = nlp.buildNet([\n  { match: 'every single #Noun' },\n  { match: 'not (a|one) #Noun' },\n])\n// const doc = nlp.lazy(txt, 'every single #Noun')\nconst doc = nlp.lazy(txt, net)\ndoc.debug()\n\n// let doc = nlp(txt).match('every single #Noun')\n// let doc = nlp(txt).match(net)\n// doc.debug()\nconsole.log(doc.length, 'matches')\n\n\n// let doc = await nlp.workerPool(txt, 'my #Adjective #Noun')\n// doc.debug()\n// console.log(doc.length)\nconsole.log((new Date().getTime() - begin.getTime()) / 1000, 's')\n"
  },
  {
    "path": "plugins/speed/scripts/version.js",
    "content": "import fs from 'fs'\n// avoid requiring our whole package.json file\n// make a small file for our version number\nconst pkg = JSON.parse(fs.readFileSync('./package.json').toString())\n\nfs.writeFileSync('./src/_version.js', `export default '${pkg.version}'`)\n"
  },
  {
    "path": "plugins/speed/src/_version.js",
    "content": "export default '0.1.2'"
  },
  {
    "path": "plugins/speed/src/keypress/index.js",
    "content": "const sentenceCache = {}\n\n/** memoize tagger per-sentence */\nconst keyPress = function (text, lex, opts = {}) {\n  const nlp = this\n  const splitSentences = this.methods().one.tokenize.splitSentences\n  const arr = splitSentences(text, this.world())\n\n  const list = []\n  arr.forEach(str => {\n    //do we already have it parsed?\n    if (sentenceCache.hasOwnProperty(str) === true) {\n      //use the cache\n      list.push(sentenceCache[str].data)\n      sentenceCache[str].used = true\n      // console.log('used cache: ', str, '\\n')\n    } else {\n      //otherwise, parse it!\n      if (opts.verbose) {\n        console.log(`parsing: '${str}'\\n`)//eslint-disable-line\n      }\n      const json = nlp(str, lex).json(0)\n      //cache it\n      sentenceCache[str] = {\n        data: json,\n        used: true,\n      }\n      list.push(json)\n    }\n  })\n  // delete any unused cache\n  Object.keys(sentenceCache).forEach(k => {\n    if (sentenceCache[k].used !== true) {\n      delete sentenceCache[k]\n    } else {\n      sentenceCache[k].used = null\n    }\n  })\n  if (opts.verbose) {\n    console.log(`${Object.keys(sentenceCache).length}' sentences in cache\\n`)//eslint-disable-line\n  }\n  return nlp(list)\n}\n\nexport default {\n  lib: {\n    keyPress\n  }\n}\n"
  },
  {
    "path": "plugins/speed/src/lazyParse/lazyParse.js",
    "content": "import maybeMatch from './maybeMatch.js'\n\n// tokenize first, then only tag sentences required\nconst lazyParse = function (input, reg) {\n  let net = reg\n  if (typeof reg === 'string') {\n    net = this.buildNet([{ match: reg }])\n  }\n  const doc = this.tokenize(input)\n  const m = maybeMatch(doc, net)\n  if (m.found) {\n    m.compute(['index', 'tagger'])\n    return m.match(reg)\n  }\n  return doc.none()\n}\nexport default lazyParse"
  },
  {
    "path": "plugins/speed/src/lazyParse/maybeMatch.js",
    "content": "const getWords = function (net) {\n  return Object.keys(net.hooks).filter(w => !w.startsWith('#') && !w.startsWith('%'))\n}\n\nconst maybeMatch = function (doc, net) {\n  // must have *atleast* one of these words\n  const words = getWords(net)\n  if (words.length === 0) {\n    return doc\n  }\n  if (!doc._cache) {\n    doc.cache()\n  }\n  const cache = doc._cache\n  // return sentences that have one of our needed words\n  return doc.filter((_m, i) => {\n    return words.some(str => cache[i].has(str))\n  })\n}\nexport default maybeMatch"
  },
  {
    "path": "plugins/speed/src/lazyParse/plugin.js",
    "content": "import lazy from './lazyParse.js'\n\nexport default {\n  lib: {\n    lazy\n  }\n}"
  },
  {
    "path": "plugins/speed/src/plugin.js",
    "content": "import streamFile from './stream/streamFile.js'\nimport keyPress from './keypress/index.js'\nimport workerPool from './workerPool/plugin.js'\nimport lazyParse from './lazyParse/plugin.js'\nimport version from './_version.js'\n\n// combine all the plugins\nconst plugin = {\n  lib: Object.assign({}, streamFile.lib, keyPress.lib, workerPool.lib, lazyParse.lib),\n  version: version\n}\n\nexport { streamFile, keyPress, workerPool, lazyParse }\nexport default plugin\n\n"
  },
  {
    "path": "plugins/speed/src/stream/streamFile.js",
    "content": "import * as fs from 'fs';\n\nconst streamFile = function (path, fn, opts = {}) {\n  const nlp = this\n  const world = nlp.world()\n  const splitSentences = nlp.methods().one.tokenize.splitSentences\n  const s = fs.createReadStream(path, opts);\n\n  let txt = ''\n  const res = []\n\n  const doIt = (str) => {\n    const doc = nlp(str)\n    const m = fn(doc)\n    if (m && m.found) {\n      m.docs.forEach(l => res.push(l))\n    }\n  }\n\n  const quickSplit = function (str) {\n    const end = txt.substring(str.length - 300)\n    const arr = splitSentences(end, world)\n    const last = arr[arr.length - 1]\n    const main = str.substr(0, str.length - last.length)\n    return [main, last]\n  }\n\n\n  return new Promise((resolve, reject) => {\n    s.on('data', function (chunk) {\n      txt += chunk;\n      const [main, end] = quickSplit(txt, world)\n      doIt(main)\n      txt = end\n    });\n    s.on('end', function () {\n      doIt(txt)// do dangling one\n      // construct document of only results\n      const doc = nlp('')\n      doc.document = res\n      resolve(doc)\n    });\n    s.on('error', function (err) {\n      console.error(err.stack); // eslint-disable-line\n      reject(err)\n    });\n  })\n\n\n}\n\nexport default {\n  lib: {\n    streamFile\n  }\n}"
  },
  {
    "path": "plugins/speed/src/workerPool/index.js",
    "content": "import rip from './rip.js'\nimport makePool from './pool/create.js'\nimport os from 'os'\nconst cpuCount = os.cpus().length\nconst workerCount = cpuCount\n\nconst workerPool = function (txt, reg) {\n  const nlp = this\n  if (typeof reg === 'string') {\n    reg = nlp.parseMatch(reg)\n  }\n\n  const workers = makePool(workerCount, reg)\n  const parts = rip(txt, nlp, workerCount)\n  // console.log(parts.length)\n  const results = []\n  const isRunning = workers.map(_ => true)// eslint-disable-line\n\n  // workers.foreach\n  workers.forEach((worker, i) => {\n    worker.postMessage({ type: 'work', work: parts[i] || [] })\n  })\n\n  return new Promise((resolve) => {\n    // setup listeners\n    workers.forEach(worker => {\n      worker.on('message', (msg) => {\n        if (msg.type === 'match') {\n          msg.match.forEach(m => {\n            results.push(m)\n          })\n        }\n        if (msg.type === 'drained') {\n          const index = msg.status.workerIndex\n          isRunning[index] = false\n          // console.log(index, 'drained')\n          if (isRunning.every(b => b === false)) {\n            const doc = nlp('')\n            doc.document = results\n            workers.forEach(w => w.terminate())\n            // console.log('done!')\n            resolve(doc)\n          }\n        }\n      })\n    })\n  })\n}\nexport default workerPool\n\n"
  },
  {
    "path": "plugins/speed/src/workerPool/plugin.js",
    "content": "import workerPool from './index.js'\n\nexport default {\n  lib: {\n    workerPool\n  }\n}\n"
  },
  {
    "path": "plugins/speed/src/workerPool/pool/create.js",
    "content": "import path from 'path'\nimport { fileURLToPath } from 'url'\nimport { Worker } from 'worker_threads'\nconst dir = path.dirname(fileURLToPath(import.meta.url))\n\nconst makePool = function (count, reg) {\n  const workers = []\n  for (let i = 0; i < count; i += 1) {\n    const info = {\n      workerData: {\n        workerIndex: i,\n        workerCount: count,\n        reg\n      }\n    }\n    const file = path.join(dir, './worker.js')\n    const worker = new Worker(file, info)\n    worker.on('error', (err) => console.error(err))// eslint-disable-line\n    workers.push(worker)\n  }\n  return workers\n}\nexport default makePool"
  },
  {
    "path": "plugins/speed/src/workerPool/pool/worker.js",
    "content": "import { workerData, parentPort } from 'worker_threads'\n// import nlp from 'compromise'\nimport nlp from '../../../../../src/three.js'\n\nconst { workerIndex, reg } = workerData\n\nconst status = {\n  workerIndex,\n  running: false,\n  queue: []\n}\n\nconst isObject = val => {\n  return Object.prototype.toString.call(val) === '[object Object]'\n}\n\nexport const isNet = val => val && isObject(val) && val.isNet === true\n\nconst go = function () {\n  status.running = true\n  // console.log(`${workerIndex} running`)\n  while (status.queue.length > 0) {\n    const txt = status.queue.pop()//.join('')\n    status.queue = []\n    const doc = nlp(txt)\n    const m = doc.match(reg)\n    if (m.found) {\n      parentPort.postMessage({\n        type: 'match',\n        status,\n        match: m.docs\n      })\n    }\n    // console.log(workerIndex, '  - ', status.queue.length)\n  }\n  status.running = false\n  parentPort.postMessage({\n    type: 'drained',\n    status,\n  })\n}\n\n// log the status of this worker, when asked\nparentPort.on('message', (msg) => {\n  // recieve more sentences to do\n  if (msg.type === 'work') {\n    status.queue.push(msg.work)\n    // kick it off\n    if (!status.running) {\n      go()\n    }\n  }\n})"
  },
  {
    "path": "plugins/speed/src/workerPool/rip.js",
    "content": "const fastSplit = function (str, numChunks = 1) {\n  const size = Math.ceil(str.length / numChunks)\n  const chunks = new Array(numChunks)\n  for (let i = 0, o = 0; i < numChunks; ++i, o += size) {\n    chunks[i] = str.substr(o, size)\n  }\n  return chunks\n}\n\nconst pluckStarts = function (arr, nlp) {\n  const world = nlp.world()\n  const splitSentences = nlp.methods().one.tokenize.splitSentences\n\n  for (let i = 1; i < arr.length; i += 1) {\n    const top = arr[i].substr(0, 200)\n    const first = splitSentences(top, world)[0]\n    // move the first (part) sentence onto the end of the last one\n    const len = first.length\n    arr[i - 1] += first\n    arr[i] = arr[i].substring(len)\n  }\n  return arr\n}\n\n// split a text quickly, then repair splits by sentence\nconst rip = function (txt, nlp, parts = 1) {\n  let arr = fastSplit(txt, parts)\n  arr = pluckStarts(arr, nlp)\n  return arr\n}\nexport default rip\n\n// let res = rip('one, two, three. four five six. seven eight nine', 4)\n// console.log(JSON.stringify(res, null, 2))"
  },
  {
    "path": "plugins/speed/tests/_lib.js",
    "content": "import build from '../../../builds/one/compromise-one.mjs'\nimport src from '../../../src/one.js'\nlet nlp;\n\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==')  // eslint-disable-line\n  nlp = build\n} else {\n  nlp = src\n}\nexport default nlp\n"
  },
  {
    "path": "plugins/speed/tests/files/freshPrince.txt",
    "content": "Now this is a story all about how my life got flipped-turned upside down.\nand I'd like to take a minute, just sit right there, I'll tell you how I became the prince of a town called Bel-Air.\n\nIn west Philadelphia born and raised, on the playground was where I spent most of my days.\nChillin' out maxin' relaxin' all cool, and all shooting some b-ball outside of the school.\nWhen a couple of guys who were up to no good started making trouble in my neighborhood,\nI got in one little fight and my mom got scared, she said, \"You're movin' with your auntie and uncle in Bel-Air\".\n\nI begged and pleaded with her day after day but she packed my suitcase and sent me on my way.\nShe gave me a kiss and then she gave me my ticket. I put my Walkman on and said, \"I might as well kick it\".\n\nFirst class, yo, this is bad. Drinking orange juice out of a champagne glass.\nIs this what the people of Bel-Air living like? Hmm, this might be alright.\n\nBut wait I hear they're prissy, bourgeois, all that. Is this the type of place that they just send this cool cat?\nI don't think so, I'll see when I get there.\nI hope they're prepared for the prince of Bel-Air.\n\nWell, the plane landed and when I came out. There was a dude who looked like a cop standing there with my name out.\nI ain't trying to get arrested yet, I just got here.\nI sprang with the quickness like lightning, disappeared.\n\nI whistled for a cab and when it came near. The license plate said \"Fresh\" and it had dice in the mirror.\nIf anything I could say that this cab was rare, but I thought, \"Nah, forget it\" – \"Yo, home to Bel-Air\"!\n\nI pulled up to the house about 7 or 8 and I yelled to the cabbie, \"Yo home smell ya later\".\nI looked at my kingdom, I was finally there. To sit on my throne as the Prince of Bel-Air.\n"
  },
  {
    "path": "plugins/speed/tests/stream.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nimport fs from 'fs'\nimport path from 'path'\nimport { streamFile } from '../src/plugin.js'\nnlp.plugin(streamFile)\n\n\nimport { fileURLToPath } from 'url'\nconst dir = path.dirname(fileURLToPath(import.meta.url))\n\nconst file = path.join(dir, `./files/freshPrince.txt`)\n\ntest('stream the whole document', function (t) {\n  const want = fs.readFileSync(file).toString()\n  nlp.streamFile(file, (s) => {\n    return s.match('.')\n  }).then(doc => {\n    t.equal(doc.text(), want, 'full-text')\n    t.end()\n  })\n})\n\ntest('return no matches', function (t) {\n  nlp.streamFile(file, (s) => {\n    return s.match('coconut')\n  }).then(doc => {\n    t.equal(doc.text(), '', 'no-text')\n    t.end()\n  })\n})"
  },
  {
    "path": "plugins/stats/README.md",
    "content": "<div align=\"center\">\n  <img src=\"https://cloud.githubusercontent.com/assets/399657/23590290/ede73772-01aa-11e7-8915-181ef21027bc.png\" />\n\n  <div>nlp statistics plugin for <a href=\"https://github.com/spencermountain/compromise/\">compromise</a></div> \n\n  <!-- npm version -->\n  <a href=\"https://npmjs.org/package/compromise-stats\">\n    <img src=\"https://img.shields.io/npm/v/compromise-stats.svg?style=flat-square\" />\n  </a>\n  \n  <!-- file size -->\n  <a href=\"https://unpkg.com/compromise-stats/builds/compromise-stats.min.js\">\n    <img src=\"https://badge-size.herokuapp.com/spencermountain/compromise/master/plugins/plugin-stats/builds/compromise-stats.min.js\" />\n  </a>\n\n  <div align=\"center\">\n    <code>npm install compromise-stats</code>\n  </div>\n</div>\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\n\n##### TFIDF\n[tf-idf](https://en.wikipedia.org/wiki/Tf%E2%80%93idf) is a type of word-analysis that can discover the most-characteristic, or unique words in a text.\nIt combines uniqueness of words, and their frequency in the document.\nThis plugin comes pre-built with a standard english model, so you can fingerprint an arbitrary text with `.tfidif()`\n\n- **.tfidf(opts, model?)** - \n\nalternatively, you can build your own model, from a compromise document:\n- **.buildIDF()** - \n\n```js\nlet model=nlp(shakespeareWords)\nlet doc = nlp('thou art so sus.')\ndoc.tfidf()\n// [ [ 'sus', 5.78 ], [ 'thou', 2.3 ], [ 'art', 1.75 ], [ 'so', 0.44 ] ]\n```\n\nif you want to combine tfidf with other analysis, you can add numbers to individual terms, like this:\n```js\nlet doc = nlp('no, my son is also named Bort')\ndoc.compute('tfidf')\nlet json = doc.json()\njson[0].terms[6]\n// {\"text\":\"Bort\", \"tags\":[], \"tfidf\":5.78, ... }\n```\n\nTF-IDF values are scaled, but have an unbounded maximum. The result for 'foo foo foo foo' would increase every with repitition.\n\n##### Ngrams\n\n- **[.ngrams({})](https://observablehq.com/@spencermountain/compromise-ngram)** - list all repeating sub-phrases, by word-count\n- **[.unigrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams with one word\n- **[.bigrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams with two words\n- **[.trigrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams with three words\n- **[.startgrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams including the first term of a phrase\n- **[.endgrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams including the last term of a phrase\n- **[.edgegrams()](https://observablehq.com/@spencermountain/compromise-ngram)** - n-grams including the first or last term of a phrase\n\nall methods support the same option params:\n```js\nlet doc = nlp('one two three. one two foo.')\ndoc.ngrams({ size: 2 }) // only two-word grams\n/*[\n  { size: 2, count: 2, normal: 'one two' },\n  { size: 2, count: 1, normal: 'two three' },\n  { size: 2, count: 1, normal: 'two foo' }\n]\n*/\n```\n\nor all gram-sizes under/over a limit:\n```js\nlet doc = nlp('one two three. one two foo.')\nlet res = doc.ngrams({ min: 3 }) // or max:2\n/*[\n  { size: 3, count: 1, normal: 'one two three' },\n  { size: 3, count: 1, normal: 'one two foo' }\n]\n*/\n```\n\nMIT"
  },
  {
    "path": "plugins/stats/builds/compromise-stats.cjs",
    "content": "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.compromiseStats = factory());\n})(this, (function () { 'use strict';\n\n  const defaults$2 = {\n    max: 4,\n    min: 1,\n  };\n\n  const oneSize$2 = function (list, size) {\n    let grams = {};\n    // count each instance\n    list.forEach(terms => {\n      for (let i = 0; i < terms.length; i += 1) {\n        let slice = terms.slice(i, i + size);\n        if (slice.length === size) {\n          let str = slice.join(' ');\n          if (grams.hasOwnProperty(str)) {\n            grams[str].count += 1;\n          } else {\n            grams[str] = {\n              size: size,\n              count: 1,\n            };\n          }\n        }\n      }\n    });\n    // turn them into an array\n    let arr = Object.keys(grams).map(k => {\n      grams[k].normal = k;\n      return grams[k]\n    });\n    return arr\n  };\n\n  const allGrams = function (list, options) {\n    // support {size:2} syntax\n    if (options.size) {\n      options.min = options.size;\n      options.max = options.size;\n    }\n    let max = options.max || defaults$2.max;\n    let min = options.min || defaults$2.min;\n    let arr = [];\n    for (let size = min; size <= max; size += 1) {\n      arr = arr.concat(oneSize$2(list, size));\n    }\n    return arr\n  };\n  var getGrams = allGrams;\n\n  const defaults$1 = {\n    max: 4,\n    min: 1,\n  };\n\n  const oneSize$1 = function (list, size) {\n    let grams = {};\n    // count each instance\n    list.forEach(terms => {\n      for (let i = 0; i <= terms.length; i += 1) {\n        let slice = terms.slice(0, i);\n        if (slice.length === size) {\n          let str = slice.join(' ');\n          if (grams.hasOwnProperty(str)) {\n            grams[str].count += 1;\n          } else {\n            grams[str] = {\n              size: size,\n              count: 1,\n            };\n          }\n        }\n      }\n    });\n    // turn them into an array\n    let arr = Object.keys(grams).map(k => {\n      grams[k].normal = k;\n      return grams[k]\n    });\n    return arr\n  };\n\n  const startGrams = function (list, options) {\n    // support {size:2} syntax\n    if (options.size) {\n      options.min = options.size;\n      options.max = options.size;\n    }\n    let max = options.max || defaults$1.max;\n    let min = options.min || defaults$1.min;\n    let arr = [];\n    for (let size = min; size <= max; size++) {\n      arr = arr.concat(oneSize$1(list, size));\n    }\n    return arr\n  };\n  var startGrams$1 = startGrams;\n\n  const defaults = {\n    max: 4,\n    min: 1,\n  };\n\n  const oneSize = function (list, size) {\n    let grams = {};\n    // count each instance\n    list.forEach(terms => {\n      let len = terms.length;\n      for (let i = 0; i <= terms.length; i += 1) {\n        let slice = terms.slice(len - i, len);\n        if (slice.length === size) {\n          let str = slice.join(' ');\n          if (grams.hasOwnProperty(str)) {\n            grams[str].count += 1;\n          } else {\n            grams[str] = {\n              size: size,\n              count: 1,\n            };\n          }\n        }\n      }\n    });\n    // turn them into an array\n    let arr = Object.keys(grams).map(k => {\n      grams[k].normal = k;\n      return grams[k]\n    });\n    return arr\n  };\n\n  const endGrams = function (list, options) {\n    // support {size:2} syntax\n    if (options.size) {\n      options.min = options.size;\n      options.max = options.size;\n    }\n    let max = options.max || defaults.max;\n    let min = options.min || defaults.min;\n    let arr = [];\n    for (let size = min; size <= max; size++) {\n      arr = arr.concat(oneSize(list, size));\n    }\n    return arr\n  };\n  var endGrams$1 = endGrams;\n\n  // tokenize by term\n  const tokenize = function (doc) {\n    let list = doc.json({ text: false }).map(o => {\n      return o.terms.map(t => t.normal)\n    });\n    return list\n  };\n  var tokenize$1 = tokenize;\n\n  const sort = function (arr) {\n    arr = arr.sort((a, b) => {\n      //first sort them by count\n      if (a.count > b.count) {\n        return -1\n      }\n      if (a.count < b.count) {\n        return 1\n      }\n      // in a tie, sort them by size\n      if (a.size > b.size) {\n        return -1\n      }\n      if (a.size < b.size) {\n        return 1\n      }\n      return 0\n    });\n    return arr\n  };\n  var sort$1 = sort;\n\n  const addMethod = function (View) {\n    /** list all repeating sub-phrases, by word-count */\n    View.prototype.ngrams = function (obj) {\n      let list = tokenize$1(this);\n      let arr = getGrams(list, obj || {});\n      arr = sort$1(arr);\n      return arr\n    };\n    View.prototype.nGrams = View.prototype.ngrams;\n    View.prototype.ngram = View.prototype.ngrams;\n\n    /** n-grams with one word */\n    View.prototype.unigrams = function (n) {\n      let arr = getGrams(tokenize$1(this), { max: 1, min: 1 });\n      arr = sort$1(arr);\n      if (typeof n === 'number') {\n        arr = arr[n];\n      }\n      return arr\n    };\n    View.prototype.uniGrams = View.prototype.unigrams;\n\n    /** n-grams with two words */\n    View.prototype.bigrams = function (n) {\n      let arr = getGrams(tokenize$1(this), { max: 2, min: 2 });\n      arr = sort$1(arr);\n      if (typeof n === 'number') {\n        arr = arr[n];\n      }\n      return arr\n    };\n    View.prototype.biGrams = View.prototype.bigrams;\n\n    /** n-grams with three words */\n    View.prototype.trigrams = function (n) {\n      let arr = getGrams(tokenize$1(this), { max: 3, min: 3 });\n      arr = sort$1(arr);\n      if (typeof n === 'number') {\n        arr = arr[n];\n      }\n      return arr\n    };\n    View.prototype.triGrams = View.prototype.trigrams;\n\n    /** list all repeating sub-phrases, using the first word */\n    View.prototype.startgrams = function (obj) {\n      let list = tokenize$1(this);\n      let arr = startGrams$1(list, obj || {});\n      arr = sort$1(arr);\n      return arr\n    };\n    View.prototype.startGrams = View.prototype.startgrams;\n\n    /** list all repeating sub-phrases, connected to the last word of each phrase */\n    View.prototype.endgrams = function (obj) {\n      let list = tokenize$1(this);\n      let arr = endGrams$1(list, obj || {});\n      arr = sort$1(arr);\n      return arr\n    };\n    View.prototype.endGrams = View.prototype.endgrams;\n\n    /** list all repeating sub-phrases, connected to the last word of each phrase */\n    View.prototype.edgegrams = function (obj) {\n      let list = tokenize$1(this);\n      let start = startGrams$1(list, obj || {});\n      let end = endGrams$1(list, obj || {});\n      // combine them together\n      let all = start.concat(end);\n      let combine = all.reduce((h, a) => {\n        if (h[a.normal]) {\n          h[a.normal].count += a.count;\n        } else {\n          h[a.normal] = a;\n        }\n        return h\n      }, {});\n      let arr = Object.keys(combine).map(k => combine[k]);\n      arr = sort$1(arr);\n      return arr\n    };\n    View.prototype.edgeGrams = View.prototype.edgegrams;\n  };\n  var ngram = addMethod;\n\n  var pcked = {\n    \"1.292\": \"true¦the\",\n    \"1.534\": \"true¦be\",\n    \"1.567\": \"true¦to\",\n    \"1.585\": \"true¦and\",\n    \"1.644\": \"true¦of\",\n    \"1.652\": \"true¦a\",\n    \"1.741\": \"true¦i\",\n    \"1.749\": \"true¦in\",\n    \"1.908\": \"true¦you\",\n    \"1.967\": \"true¦that\",\n    \"1.983\": \"true¦it\",\n    \"2.021\": \"true¦not\",\n    \"2.022\": \"true¦for\",\n    \"2.072\": \"true¦have\",\n    \"2.104\": \"true¦this\",\n    \"2.163\": \"true¦on\",\n    \"2.179\": \"true¦with\",\n    \"2.217\": \"true¦do\",\n    \"2.229\": \"true¦he\",\n    \"2.268\": \"true¦as\",\n    \"2.277\": \"true¦my\",\n    \"2.287\": \"true¦we\",\n    \"2.319\": \"true¦at\",\n    \"2.322\": \"true¦but\",\n    \"2.392\": \"true¦they\",\n    \"2.418\": \"true¦me\",\n    \"2.420\": \"true¦your\",\n    \"2.422\": \"true¦his\",\n    \"2.426\": \"true¦get\",\n    \"2.433\": \"true¦will\",\n    \"2.440\": \"true¦so\",\n    \"2.449\": \"true¦by\",\n    \"2.456\": \"true¦all\",\n    \"2.461\": \"true¦can\",\n    \"2.477\": \"true¦from,say\",\n    \"2.481\": \"true¦go\",\n    \"2.495\": \"true¦she\",\n    \"2.509\": \"true¦or\",\n    \"2.524\": \"true¦if,what\",\n    \"2.533\": \"true¦her\",\n    \"2.539\": \"true¦one\",\n    \"2.557\": \"true¦when\",\n    \"2.565\": \"true¦make\",\n    \"2.569\": \"true¦an\",\n    \"2.592\": \"true¦our\",\n    \"2.595\": \"true¦know\",\n    \"2.596\": \"true¦out\",\n    \"2.597\": \"true¦up\",\n    \"2.599\": \"true¦was\",\n    \"2.603\": \"true¦just\",\n    \"2.614\": \"true¦there\",\n    \"2.632\": \"true¦like\",\n    \"2.643\": \"true¦about\",\n    \"2.645\": \"true¦would\",\n    \"2.647\": \"true¦no,time\",\n    \"2.649\": \"true¦is\",\n    \"2.665\": \"true¦come\",\n    \"2.684\": \"true¦him\",\n    \"2.693\": \"true¦who\",\n    \"2.703\": \"true¦more\",\n    \"2.713\": \"true¦good\",\n    \"2.718\": \"true¦which\",\n    \"2.719\": \"true¦their\",\n    \"2.721\": \"true¦had\",\n    \"2.726\": \"true¦them\",\n    \"2.732\": \"true¦person\",\n    \"2.739\": \"true¦toronto\",\n    \"2.743\": \"true¦take\",\n    \"2.747\": \"true¦now,think\",\n    \"2.756\": \"true¦see\",\n    \"2.757\": \"true¦are\",\n    \"2.758\": \"true¦then\",\n    \"2.766\": \"true¦want\",\n    \"2.777\": \"true¦new\",\n    \"2.801\": \"true¦some\",\n    \"2.824\": \"true¦into\",\n    \"2.827\": \"true¦first\",\n    \"2.831\": \"true¦us\",\n    \"2.832\": \"true¦year\",\n    \"2.833\": \"true¦could\",\n    \"2.845\": \"true¦day\",\n    \"2.847\": \"true¦how\",\n    \"2.850\": \"true¦only\",\n    \"2.856\": \"true¦very\",\n    \"2.864\": \"true¦back\",\n    \"2.868\": \"true¦look\",\n    \"2.870\": \"true¦work\",\n    \"2.878\": \"true¦aft0oth0;er\",\n    \"2.882\": \"true¦than\",\n    \"2.893\": \"true¦because\",\n    \"2.898\": \"true¦these\",\n    \"2.902\": \"true¦well\",\n    \"2.903\": \"true¦great\",\n    \"2.909\": \"true¦tell\",\n    \"2.911\": \"true¦call\",\n    \"2.913\": \"true¦its\",\n    \"2.921\": \"true¦down\",\n    \"2.923\": \"true¦give\",\n    \"2.924\": \"true¦h0;as,ere\",\n    \"2.927\": \"true¦also,thing\",\n    \"2.929\": \"true¦find\",\n    \"2.930\": \"true¦right\",\n    \"2.934\": \"true¦over\",\n    \"2.955\": \"true¦way\",\n    \"2.967\": \"true¦man\",\n    \"2.968\": \"true¦where\",\n    \"2.972\": \"true¦place\",\n    \"2.977\": \"true¦ask\",\n    \"2.978\": \"true¦two\",\n    \"2.979\": \"true¦little,should\",\n    \"2.982\": \"true¦use\",\n    \"2.990\": \"true¦am\",\n    \"3.012\": \"true¦ne0;ed,ver\",\n    \"3.019\": \"true¦any\",\n    \"3.023\": \"true¦before\",\n    \"3.026\": \"true¦love\",\n    \"3.038\": \"true¦most\",\n    \"3.043\": \"true¦must\",\n    \"3.045\": \"true¦too\",\n    \"3.047\": \"true¦off\",\n    \"3.048\": \"true¦u\",\n    \"3.049\": \"true¦much\",\n    \"3.050\": \"true¦try\",\n    \"3.061\": \"true¦let\",\n    \"3.063\": \"true¦really\",\n    \"3.067\": \"true¦why\",\n    \"3.068\": \"true¦world\",\n    \"3.074\": \"true¦help\",\n    \"3.075\": \"true¦did\",\n    \"3.080\": \"true¦long\",\n    \"3.083\": \"true¦name\",\n    \"3.090\": \"true¦last\",\n    \"3.097\": \"true¦still\",\n    \"3.100\": \"true¦were\",\n    \"3.103\": \"true¦may\",\n    \"3.105\": \"true¦mean\",\n    \"3.106\": \"true¦friend\",\n    \"3.107\": \"true¦american\",\n    \"3.111\": \"true¦even,keep\",\n    \"3.114\": \"true¦every\",\n    \"3.115\": \"true¦many\",\n    \"3.118\": \"true¦home\",\n    \"3.121\": \"true¦again\",\n    \"3.122\": \"true¦put\",\n    \"3.123\": \"true¦leave\",\n    \"3.138\": \"true¦feel\",\n    \"3.141\": \"true¦old\",\n    \"3.143\": \"true¦play\",\n    \"3.147\": \"true¦king\",\n    \"3.156\": \"true¦city\",\n    \"3.158\": \"true¦state\",\n    \"3.159\": \"true¦food,while\",\n    \"3.165\": \"true¦start\",\n    \"3.170\": \"true¦high\",\n    \"3.171\": \"true¦been,life,through\",\n    \"3.174\": \"true¦those\",\n    \"3.178\": \"true¦oh\",\n    \"3.180\": \"true¦night\",\n    \"3.182\": \"true¦child\",\n    \"3.187\": \"true¦hear\",\n    \"3.188\": \"true¦woman\",\n    \"3.189\": \"true¦bring,country,live,prince\",\n    \"3.200\": \"true¦game\",\n    \"3.203\": \"true¦court,going\",\n    \"3.204\": \"true¦late\",\n    \"3.205\": \"true¦end\",\n    \"3.207\": \"true¦own\",\n    \"3.214\": \"true¦always\",\n    \"3.219\": \"true¦such\",\n    \"3.222\": \"true¦around\",\n    \"3.229\": \"true¦open\",\n    \"3.233\": \"true¦house\",\n    \"3.239\": \"true¦best\",\n    \"3.244\": \"true¦same\",\n    \"3.247\": \"true¦eat\",\n    \"3.250\": \"true¦change\",\n    \"3.255\": \"true¦top\",\n    \"3.256\": \"true¦ever\",\n    \"3.257\": \"true¦meet,part\",\n    \"3.258\": \"true¦next\",\n    \"3.259\": \"true¦without\",\n    \"3.260\": \"true¦once\",\n    \"3.261\": \"true¦away,show\",\n    \"3.263\": \"true¦both\",\n    \"3.264\": \"true¦america\",\n    \"3.267\": \"true¦job\",\n    \"3.269\": \"true¦another\",\n    \"3.271\": \"true¦bad\",\n    \"3.272\": \"true¦guy,hand\",\n    \"3.275\": \"true¦something\",\n    \"3.276\": \"true¦order\",\n    \"3.278\": \"true¦include\",\n    \"3.280\": \"true¦yeah\",\n    \"3.285\": \"true¦family\",\n    \"3.286\": \"true¦girl,under\",\n    \"3.287\": \"true¦three\",\n    \"3.290\": \"true¦become,run,talk\",\n    \"3.297\": \"true¦each\",\n    \"3.299\": \"true¦big\",\n    \"3.301\": \"true¦head\",\n    \"3.303\": \"true¦set\",\n    \"3.306\": \"true¦school,today\",\n    \"3.312\": \"true¦turn\",\n    \"3.317\": \"true¦begin\",\n    \"3.319\": \"true¦wait\",\n    \"3.321\": \"true¦large\",\n    \"3.329\": \"true¦haha\",\n    \"3.330\": \"true¦party\",\n    \"3.331\": \"true¦might\",\n    \"3.335\": \"true¦service\",\n    \"3.341\": \"true¦government\",\n    \"3.342\": \"true¦between,cause\",\n    \"3.350\": \"true¦small\",\n    \"3.351\": \"true¦since\",\n    \"3.353\": \"true¦walk\",\n    \"3.355\": \"true¦hold,sure\",\n    \"3.358\": \"true¦nothing,send\",\n    \"3.361\": \"true¦pay\",\n    \"3.364\": \"true¦believe\",\n    \"3.366\": \"true¦care\",\n    \"3.369\": \"true¦buy,room\",\n    \"3.371\": \"true¦until\",\n    \"3.381\": \"true¦hour\",\n    \"3.382\": \"true¦upon\",\n    \"3.383\": \"true¦number,stand\",\n    \"3.386\": \"true¦word\",\n    \"3.389\": \"true¦lot,though\",\n    \"3.392\": \"true¦money\",\n    \"3.394\": \"true¦done\",\n    \"3.395\": \"true¦s0;econd,it\",\n    \"3.397\": \"true¦together\",\n    \"3.400\": \"true¦wife\",\n    \"3.401\": \"true¦move,water,young\",\n    \"3.404\": \"true¦enough\",\n    \"3.406\": \"true¦point,seem\",\n    \"3.407\": \"true¦hard\",\n    \"3.409\": \"true¦during,soon\",\n    \"3.411\": \"true¦does\",\n    \"3.412\": \"true¦everything,light\",\n    \"3.414\": \"true¦stop\",\n    \"3.415\": \"true¦face,write\",\n    \"3.422\": \"true¦company\",\n    \"3.423\": \"true¦fall\",\n    \"3.425\": \"true¦against,few\",\n    \"3.428\": \"true¦create\",\n    \"3.430\": \"true¦busine0different,pa0;ss\",\n    \"3.433\": \"true¦area,free\",\n    \"3.438\": \"true¦book,law\",\n    \"3.439\": \"true¦lose,tonight\",\n    \"3.441\": \"true¦eye,okay\",\n    \"3.444\": \"true¦lead,pretty\",\n    \"3.446\": \"true¦anything,stay\",\n    \"3.449\": \"true¦case\",\n    \"3.451\": \"true¦gandhi\",\n    \"3.456\": \"true¦issue\",\n    \"3.460\": \"true¦die\",\n    \"3.465\": \"true¦someone\",\n    \"3.467\": \"true¦cut,drink,watch\",\n    \"3.469\": \"true¦hope\",\n    \"3.470\": \"true¦far,side,united\",\n    \"3.472\": \"true¦got,quite\",\n    \"3.474\": \"true¦type\",\n    \"3.476\": \"true¦base,form,kill\",\n    \"3.478\": \"true¦act,serve,week\",\n    \"3.479\": \"true¦line\",\n    \"3.485\": \"true¦h0restaurant;appen,owever\",\n    \"3.487\": \"true¦kind\",\n    \"3.488\": \"true¦bar,plan\",\n    \"3.490\": \"true¦nation\",\n    \"3.492\": \"true¦cry,support\",\n    \"3.494\": \"true¦star,white\",\n    \"3.496\": \"true¦congress,reach\",\n    \"3.498\": \"true¦himself\",\n    \"3.500\": \"true¦close,nice,return\",\n    \"3.502\": \"true¦hey\",\n    \"3.504\": \"true¦problem\",\n    \"3.506\": \"true¦remember\",\n    \"3.507\": \"true¦already,power,s0;een,ystem\",\n    \"3.511\": \"true¦month,win\",\n    \"3.513\": \"true¦princess\",\n    \"3.515\": \"true¦body,term\",\n    \"3.517\": \"true¦ha0marry,yet;lf,ppy\",\n    \"3.519\": \"true¦break\",\n    \"3.521\": \"true¦car,heart,less,question\",\n    \"3.523\": \"true¦answer,build,door\",\n    \"3.525\": \"true¦war\",\n    \"3.527\": \"true¦boy,century,father\",\n    \"3.529\": \"true¦distri0fa0level;ct\",\n    \"3.533\": \"true¦used\",\n    \"3.535\": \"true¦group,hit,read,whole\",\n    \"3.538\": \"true¦thank\",\n    \"3.540\": \"true¦fire,wish\",\n    \"3.542\": \"true¦mind,president\",\n    \"3.544\": \"true¦idea,throw\",\n    \"3.546\": \"true¦continue,minute\",\n    \"3.548\": \"true¦follow,national\",\n    \"3.552\": \"true¦baby\",\n    \"3.555\": \"true¦dec2experien1pr0;i0ov1;ce;ide\",\n    \"3.557\": \"true¦shall\",\n    \"3.559\": \"true¦check\",\n    \"3.561\": \"true¦actually,health\",\n    \"3.565\": \"true¦reason\",\n    \"3.568\": \"true¦please\",\n    \"3.570\": \"true¦shop\",\n    \"3.572\": \"true¦near\",\n    \"3.574\": \"true¦consider,yourself\",\n    \"3.579\": \"true¦full,history,kid,table\",\n    \"3.581\": \"true¦team\",\n    \"3.586\": \"true¦add,real,tax\",\n    \"3.588\": \"true¦else,fight,interest,million,poor,sorry\",\n    \"3.591\": \"true¦low,ma0strong;rket,tter\",\n    \"3.593\": \"true¦often,son\",\n    \"3.595\": \"true¦maybe,till\",\n    \"3.598\": \"true¦force,town\",\n    \"3.600\": \"true¦course\",\n    \"3.602\": \"true¦e0;arly,vent\",\n    \"3.605\": \"true¦black,college,foot,least,mother,spend\",\n    \"3.607\": \"true¦fast\",\n    \"3.610\": \"true¦dog,future,god,lady\",\n    \"3.612\": \"true¦able,claim,s0;everal,peak,treet\",\n    \"3.615\": \"true¦red\",\n    \"3.620\": \"true¦horse,pro0sell;bably,gram\",\n    \"3.622\": \"true¦morning,offer\",\n    \"3.625\": \"true¦learn,sign\",\n    \"3.627\": \"true¦deal,four\",\n    \"3.632\": \"true¦bit,others,sleep\",\n    \"3.635\": \"true¦bed,m0present;usic,yself\",\n    \"3.638\": \"true¦bro0ei0ok,public,queen,store;ther\",\n    \"3.640\": \"true¦commun0secur0;ity\",\n    \"3.643\": \"true¦class,everyone,l0wear;and,etter\",\n    \"3.646\": \"true¦grow,sound,whether\",\n    \"3.648\": \"true¦drive,enjoy,mr\",\n    \"3.651\": \"true¦allow,carry,hot,parent,rule,save,yes\",\n    \"3.654\": \"true¦easy,la,pick,tree\",\n    \"3.656\": \"true¦bill,drop,fi0member,states,ur;lm,ne\",\n    \"3.659\": \"true¦british\",\n    \"3.662\": \"true¦death,receive\",\n    \"3.665\": \"true¦choose,d0office,visit;octor,ream\",\n    \"3.667\": \"true¦john\",\n    \"3.670\": \"true¦chicken\",\n    \"3.673\": \"true¦age,fro0n,park,stude0within;nt\",\n    \"3.676\": \"true¦air,de,result\",\n    \"3.679\": \"true¦finish,round,step,uh\",\n    \"3.682\": \"true¦e,north,player\",\n    \"3.685\": \"true¦dinner,s0;hort,outh\",\n    \"3.687\": \"true¦almo0disease,ground,instead,pa0;st\",\n    \"3.690\": \"true¦join\",\n    \"3.693\": \"true¦c0island,wrong;lick,over\",\n    \"3.696\": \"true¦dead,gone,trade\",\n    \"3.699\": \"true¦account,clean,fly,novel,outside,story,understand\",\n    \"3.702\": \"true¦beautiful,cost,decision,field\",\n    \"3.705\": \"true¦a0;long,ttack\",\n    \"3.708\": \"true¦fuck,los\",\n    \"3.712\": \"true¦c0forget,gold,increase;haracter,ommon\",\n    \"3.715\": \"true¦ball,peace,true\",\n    \"3.718\": \"true¦a1date,education,fun,l0middle,rest,tornado;ay,ol;go,ngeles\",\n    \"3.721\": \"true¦appear,rather\",\n    \"3.724\": \"true¦moment\",\n    \"3.727\": \"true¦enter,finally,taken\",\n    \"3.731\": \"true¦across,economy,fairy,important,ride,seek\",\n    \"3.734\": \"true¦given,major,s0;o0pe0taff,ummer;cial\",\n    \"3.737\": \"true¦listen\",\n    \"3.740\": \"true¦cold,road\",\n    \"3.744\": \"true¦challenge,example,phone,train\",\n    \"3.747\": \"true¦clear,dance,list,record,sea0taste;!t\",\n    \"3.751\": \"true¦le0rate,single;ague,ft\",\n    \"3.754\": \"true¦a1byr2club,huge,indian,r0share;eply,oll;cti0rt;on\",\n    \"3.757\": \"true¦song\",\n    \"3.761\": \"true¦complete,friendly,process\",\n    \"3.764\": \"true¦alone,behind,catch,dear,federal,human,inside\",\n    \"3.768\": \"true¦anyone,budget,dress,leader,note,ready,stuff,view\",\n    \"3.771\": \"true¦position,ring\",\n    \"3.775\": \"true¦among,raise,study\",\n    \"3.779\": \"true¦although,bank,east,possible,review,t0;!hird\",\n    \"3.782\": \"true¦c0hahaha,information,nigga,pull,remain,west;at,harge\",\n    \"3.786\": \"true¦expect,general,produce,re0window;form,port,search\",\n    \"3.790\": \"true¦effort,five,local,sister,wall\",\n    \"3.793\": \"true¦born,language,paper,sometimes\",\n    \"3.797\": \"true¦c0lie,miss,space,title,university;!apital,ontrol\",\n    \"3.801\": \"true¦green,pr0;actice,oduct\",\n    \"3.805\": \"true¦beer\",\n    \"3.808\": \"true¦couple,especially,kingdom\",\n    \"3.812\": \"true¦arm,employee,fill,hang,require,subject,test\",\n    \"3.816\": \"true¦daught0giant,india,piece,rock,wond0;er\",\n    \"3.820\": \"true¦chance,press,river\",\n    \"3.824\": \"true¦agree,c5drug,hundred,noti4p1s0value;en2hip,pot,tanda5weet;ala2olitical,ro0;mi0tein;se;ce;a0itizen;rd\",\n    \"3.828\": \"true¦building,coffee,develop,french,item,s0whose;even,hit\",\n    \"3.832\": \"true¦choice,design,file,hair,location\",\n    \"3.837\": \"true¦menu,opportunity,weapon\",\n    \"3.841\": \"true¦difference,go1master,n0society,wind;atur0early;al\",\n    \"3.845\": \"true¦c2d0energy,fe1worker;efinitely,oll0;ar;ertain,redit\",\n    \"3.849\": \"true¦board,fish,recommend,teacher,voice,w0;ake,hom\",\n    \"3.853\": \"true¦ah,individual,po0secret,thus,worth;pular,st\",\n    \"3.858\": \"true¦amount,bear,e0fail,picture,six;ffect,xplain\",\n    \"3.862\": \"true¦fair,t0uk,v,ya;each,hemselves\",\n    \"3.866\": \"true¦animal,blue,church,fat,leg,mine,protect,rise,travel\",\n    \"3.871\": \"true¦a1count,forward,movie,perfect,s0;hoot,trike;bove,ddress\",\n    \"3.875\": \"true¦a0famous,liver,population,self;greement,ttempt\",\n    \"3.880\": \"true¦b3c2evidence,gla1hi,ro1s0;kill,port;ss;hain,ondition;enefit,itch\",\n    \"3.885\": \"true¦co0english,favorite,joke,quality,treat;lor,ncern\",\n    \"3.889\": \"true¦b1deep,economic,figure,period,s0;afe,ex,ituation;ird,ox\",\n    \"3.894\": \"true¦appeal,d3hall,r1t0york;ou1v;i0ose;ch;etermine,raw\",\n    \"3.899\": \"true¦c1guess,key,option,p0recognize;olouse,rofessional;ontract,ustomer\",\n    \"3.903\": \"true¦apply,cross,describe,freedom,girlfriend,oil,pizza,s0;ing,traight\",\n    \"3.908\": \"true¦due,e3i1kiss,mom,per,roy2s0version;!pring;nternation0tself;al;arth,ngland\",\n    \"3.913\": \"true¦al,b1c0identify,source;ell,heese;!eing,lock\",\n    \"3.918\": \"true¦cent4degree,hate,m2prepare,re0sun,tr1weekend;f3lationsh0;ip;a0ovement;in,rch;er\",\n    \"3.923\": \"true¦b1co0dad,enemy,floor,propose,science,vote,wine;mputer,ol;eauty,lood\",\n    \"3.928\": \"true¦beat,d0ma1plant,suppose,wood;a0ouble;rk\",\n    \"3.933\": \"true¦accord,canada,dama1jud1lunch,sty0troub0;le;ge\",\n    \"3.939\": \"true¦arrive,di1fre1gr0jump,laugh,motion,search,unless,written;ant,eek;sh\",\n    \"3.944\": \"true¦a4former,industry,majes5o2person3realize,s0uni1;eas0ir,tati0;on;ffici0rigin0;al;ctivi0uthor,ward;ty\",\n    \"3.949\": \"true¦anyway,cook,f0herself,stick,wedding;it,lavor\",\n    \"3.955\": \"true¦complete1golden,ice,m0nor,responsibility,tomorrow,usual1;eal,ile;ly\",\n    \"3.960\": \"true¦a1b0cri2difficult,focus,govt,particular,terrible;low,us;pril,weso0;me\",\n    \"3.966\": \"true¦ba2centre,hurt,joey,m0private,simply;arriage,e0;at,ntion;g,ttle\",\n    \"3.971\": \"true¦d6etc,f4german,h3inde2m1offic5perhaps,s0tir2;ection,ite,pecific;!ilitary;ed;ost,usband;eature,urth0;er;!ick\",\n    \"3.977\": \"true¦a0cup,immediately,respect;mazing,partment\",\n    \"3.983\": \"true¦available,burg2code,f1garden,m0opinion,replace,success,thought;easure,odern;inal,low0;er\",\n    \"3.988\": \"true¦e5fund,le,m3prigio,r4s1tr0;eatment,uth;i0t;lver,ze;edical,ount0;ain;urope,vening\",\n    \"3.994\": \"true¦conduct,delicious,everybody,fellow,g7m5r2s1t0worry;arget,herefore;teal,urpri2;e0isk;duce,fu0;se;e0o2;ssage,thod;enerati0un;on\",\n    \"4.000\": \"true¦avoid,baseba4c2development,hi4nucl1s0t1;imple,ort,uper;ear;h0lause;emical,ief;ll\",\n    \"4.006\": \"true¦average,busy,corn5e4hotel,l3news,purpose,role,s1t0whatev5;ext,rust;a0hoe,uit;lad,uce;iving,ord;h,ntire;er\",\n    \"4.013\": \"true¦a3christmas,e1growth,l0pu2reward,shape,track,video;atin,ondon;ncourage,sta0;blish;dvance,rmy\",\n    \"4.019\": \"true¦billion,contain,de4f2in1s0theory,waste;erious,mile,trength;fluence,volve;estiv0inanci0un1;al;ny\",\n    \"4.025\": \"true¦aid,band,c7egg,limit,manag6nature,p4quickly,r3se2t0;e0oward;chnology,rrorist;par2rv3;!ange;ack,l0;ate;er;hina,ontact\",\n    \"4.032\": \"true¦application,discuss,e4introduce,lack,mouth,ne3p1regard,s0ten,warm;ale,enate;ro0urchase;ject,perty;!cessary;m,xactly\",\n    \"4.038\": \"true¦attention,beyond,chinese,discov2f1insurance,james,material,object,policy,s0wollstonecraft;creen,ecure;eeling,ing0;er\",\n    \"4.045\": \"true¦a5b4d3hell,m1own2principle,sentence,t0umm;ea,otal;inist0urd0;er;ecade,ry;east,ottom;bility,ttend\",\n    \"4.052\": \"true¦a8boat,cheap,d5exist,h3i2judgment,knock,l1majority,o,p0;age,erform;ink,or;mprove,rel4;ide,o0;nor,spital;e0irect;m0n;and;ccept,pproach\",\n    \"4.058\": \"true¦argument,c5dwarf,european,gain,i3kick,lift,no4o2pocket,r1suddenly,wi0;lliam,ng;ace,eg4;ccur,nli1;magi0nvite;ne;areer,onstitut0;ion\",\n    \"4.065\": \"true¦a7c6d4e3investment,s1w0yellow;an,ei1;elect,i0uggest;ght;l1xpr4;epend,ir0;ection;ivil,ulture;cc0frica,sleep;ess\",\n    \"4.072\": \"true¦anymore,burn,extremely,legal,pe4re2s0thr3winter;a0peed;d,ndwich;move,p0;eat;ople,rcent\",\n    \"4.080\": \"true¦afraid,c2maintain,nose,p1rachel,s0unit;imilar,pread,tage,upp2;artner,rove;ertain0razy;ly\",\n    \"4.087\": \"true¦ally,ca1glad,h0manner,pair,sultan,wonderful;ealthy,o1;ptain,st0;le\",\n    \"4.094\": \"true¦aBcAd8e6f4ge2heisenberg,most3s0;eptember,h0quare;ake,ut;neral0orge;ly;an,ore0ruit;ign,st;mail,x0;celle1ercise;efenda0uty;nt;alifornia,lothes;head,rgue\",\n    \"4.102\": \"true¦app9britain,c8doubt,fix,id,lo7mo6p5r3s2t0wide;ip,r0;aining,oop;ignificant,moke,word;e0icardo;cently,lease,source;ath,lus,ush;lecu2nica;ck,ss;ap,handler;le\",\n    \"4.110\": \"true¦a7b6c5eight,interview,ju3k,magic,ne2quick,re1structure,t0various;all,w3;quest,sponse;ither,twork;ne,st0;ice;ouncil,urrent;ottle,rand;chieve,ngry\",\n    \"4.117\": \"true¦cr9defense,e6football,h5i3launch,mexic4normal,pop,relate,s2t0wild;hous6o0;ugh,wer;hirt,tupid,unday;raq,tali0;an;igh2oney;asi1xp0;and;ly;eam,own\",\n    \"4.125\": \"true¦aDbCcAd9f6g5hero,internet,l4mass,no3pr2s1t0village,w7;ap,ex4;peech,tone;event,omote;body,rthern;a3ong6;as;iredra1l0;ow;ke;eliv1iamond;entral,hamb0;er;eg,irthday;gency,uthority\",\n    \"4.133\": \"true¦aCcAd8e4fou6global,income,l2model,p0religious,slow,ticket,varie7websi3;ain,hoto,m,o0roud,ursue;lBrt;eh,ibrary,oca0;te;arn,mp2x0;cept,te0;nd;ty;ai0eficit,irect0;ly;amp0omplaint;!aign;dv0ustralia;ice\",\n    \"4.142\": \"true¦a9d8gift,heavy,ir7july,lu6m5p4s3t1w0;ill1omen;hink0ool,tc;ing;ery,i2;ositive,rogre4;etal,issi1;ck;on;amn,irector;ss\",\n    \"4.150\": \"true¦a4ban,c0desire,ear,forth,ho,lo2museum,rush,statu3truck;elebra2o0;a0rr4;st;te;ff1mend0ppoint0;ment;ect\",\n    \"4.159\": \"true¦a6c5d4fr3g2holiday,journey,length,ma1p0strange;articular7rovis6;p,ssive;ay,entleman,overnor;ance,y;ata,epartment;ake,opy,reature;bsolute1ddit0;ion;ly\",\n    \"4.168\": \"true¦aAb8county,d7eventually,fash6hiBi5knowled9loud,m4ob3pai2s0tmr,working;elect5now,omebody,p0tateme1;ecy,in;nt;serve,tain;ana4ouse;mpossible,nspi5;ion;esert,istance;ike,lind,order,rid0;ge;lright,wa0;re\",\n    \"4.176\": \"true¦acGbFcBd9e7fa5kitchen,m4native,p3regular,s0throughout,uncle;c1eni5oft,u0wallow;ff8rfaC;ene,o5;atient,hoebe,rop6;aBeeting;ct0ith;or;arli2nsu0;re;ecemb0iet,r;er;on0rowd;clude,v0;ersation,in0;ce;ite,ranch;id\",\n    \"4.186\": \"true¦aEbDc9de8fancy,inveFjaquel7known,likely,ma6o5p2represBs1t0weather,youth;ask,ie,owards,ri3;cotland,kE;hysic1o0;rtion,verty;al;cean,verall;ch0d;ine;bt,tail;ha2o0;mmitm0nfirm;ent;ir,rming;oss,reakfa1;ladd1rre0;st;in\",\n    \"4.195\": \"true¦airport,below,cDdAe8h6jury,le5m4o3prize,roof,s1wa0yo;shingtBt;ca5heep,ky,pir0ubm0;it;oh,pening,rganizati8;atch,ou4;adership,ss6;and0eat,uh;le;nvironme0qual,verywhere,x;nt;emocracy,r0;ag0iver;on;arpet,o0;mplex,nnect\",\n    \"4.205\": \"true¦aCbAcoBdestroy,e9farm,g7initiative,mil6p4s2t1w0;!elfaCheel;elevisFiny;ett0oldi5plit,trugg0;le;acific,erfecAlaying,o0;litics,und;k,lions;ath0uard;er;ngage,xtra;e0owl,rain;ach;dmi3pparen2s1tmosphe0;re;ian,sociate;tly;nistrat0t;ion\",\n    \"4.214\": \"true¦aCbAd8f5gra4mon3p2relief,s1t0urge,weird;error,hreaten;atur1erious4hould5pendi9tatus;etit6ref4;day;mmar,nd;arm1ebruary,ollowi5ul0;ly;er;ecline,ivis0;ion;asic,elo0;ng;narchist,rticle\",\n    \"4.224\": \"true¦aNbJcGdisordFeDfCimage,joy,knowBlegislatAmonstFp7r4s1transfFwa0yesterday;itAsh;essiIoul,t1u0;cc9rround;ock,r7;e0obert;a0quire8;lity,sonA;l1o0ress2;em,tential;aintiff,eas0;ure;ing;eed;ra,scape,vil,xperi0;ment;er;a1omfort0;able;fe,sh;asically,et,r1utt0;on;ight,o0;k2wn;im,l0rtist;haz0ive;en\",\n    \"4.234\": \"true¦aKbIcGdDelement,fCgraBill,j9kinda,l7m5onto,p2quart8safeFt1u0;m,su5;ailor,housands,otally,radiJ;i1r0;isIoducH;nk,tch3;ill2usic0;al;awy0iao;er;a0urisdicB;nuary,panese;b,ss;allen,irm,riday;espi9i0runk;r0vide;ty;ircumstance,o0u6;llect,urage;athroom,o0;ot,st2;fford,ppropria2rbitra0;ti0;on;te\",\n    \"4.245\": \"true¦annouLcGdeFemployEfAhorribBlemKm9neighbor,ourselves,p6r5s1thin,w0;ave,ent;cream,eize,hi2outhern,p1t0;rengthen,uck;anish,eakA;ft,ne;emind,omaF;o1r0;esent5oceed;ol,ur;emory,ode;a1ema0old3;le;ir0ult;ly;er;feat,pre3;hannel,o0;m0s;mi0pare;ssi0;on;nce\",\n    \"4.256\": \"true¦aRbJcIdFeEfChBimpose,japAknight,l9m8na,orange,r5s2t0unfortunate1vegetable,writPx;homas,ru0;ly;cienti1mart,u0;gar,shi;fCst;ank,e0iK;ce0ligMpublAspoGtire,volutM;nt,ss;edicine,istake;o0ucky;an;elpful,unt;!antast4la0;g,t;rror,xecutiF;e0ifficulty;fe6mocrat0;ic;harles,ommit;alan6e4o2r0;e0o0;ad;w,yfrie0;nd;ginn0n;ing;ce;ppro2s0ugust;ia,sociat0;ion;ve\",\n    \"4.267\": \"true¦aJbid,cEdDeAfacili9g8ii,load,m5p4r2st1tail,w0;elcome,henever,rap;able,orm;adio,e0;cove3j8;len4ot;a1e0;dia,ntal;ry;a2uide;ty;d5l1ngine,stima0xchan5;te;ect;are,ec3;h3o0;mmand,ns1vera0;ge;ent;icago,ristian;d,fternoon\",\n    \"4.278\": \"true¦aDbc,cAdang9f6gym,h5loveCm4nail,o3pr2quiet,r0successful,tour,writ9;e0oute;ference,gula5pair;etend,otest;ctob5hh,ught;agici9erchant,irr3;a,eaven;av1unc0;tion;or;er;l0ommercial,raft;ear0oud;ly;dopt,fric0;an\",\n    \"4.290\": \"true¦aKbIcGdEeAfool,growing,h9i8licenCm6november,op5root,s3t2wa1y0;ard,ours;itress,les;aco,ooth;ecretary,lightly,t0;eak,retch;erate,po6;a0ike;le,nagemE;ntend,slands;at,idden,orn;mp2x0;am,cu0pens9;se;ire,loy;a0ownload;!ngerous;lerk,on0;cept,sist;asis,e0ride;havior,lief;ccid1ffair,g1lternat0;ive;ent\",\n    \"4.301\": \"true¦aHbFcCentirely,fBgolf,honest,inveEjournal,lion,m9newspaper,otherwiIp7re6s3t2v0ye;alley,i0;ce,olen3;hou,rap;acrifi1nack,tr0;ategy,ip;ce;flect,leva7sto3;a0owerful;ttern,yme5;ama,edica0ovy,ultiple;re;etch,olk;anadi3ha5o0;mplain,nte0z;nt;ipartis0urden;an;c1dvantage,li,nybody,ri0;se;ademy,tive\",\n    \"4.314\": \"true¦aTbRcKdJfailuIgotten,iraqi,liHmFp9quDr5s2t1u0;nique,pdP;empNraffic;l1o0teel;mewheEup;a2ip;a2e0;presentati0ser0;ve;re,y;a4e2hysics,r0;ay,o0;be,tB;rm0t;it;nt,rliameF;a0inecraft;gazine,yor;berty,terally;re;etermina4isappoiArag,ude;hocol5irc4o0risis;at,ll1m0ndo;bat,mittee;ec0;tion;le;ate;eef,irth,o0;dmin,mb;ncie0ssume;nt\",\n    \"4.326\": \"true¦aObMcHdDexamiChaBiAj8label,m6n4o2plaCrandom,s1t0viole9western;ale,ech,heatOony;an,olEu3;cc0mg;asFupy;e0oise;ck;at0eaning;e,h;oi0uice;nt;gnoEnfo0;rm;ne;a1e0ismiss;bate,lay;t,v0;id;a3hest,l2ompetit1r0;a4iminal;ion;assic,ever;lm,tegory;ell,lame,u0ye;sh;dult,nywhe0;re\",\n    \"4.339\": \"true¦aMbLcEdCeAgermany,instituBj9lean,m6neighborhood,pr3richard,s1t0;ape,om;chedule,howEo0pell,upre3ymptom;lve,mewhG;evious,i1o0;posJsperity;me;a1i0orH;n,x;dam,il;ack,udiciE;astern,limina0pic;te;e0isappear;sk,vi4;a5h4o0ryst9u8;mment,n1p,unt0;er;cert,fiden0;ce;at;ptu2ve;ond,ulb;ddition1narchism,ssu0;re;al\",\n    \"4.353\": \"true¦aLbKcJdHedit,factoIgeGhaClBnormalDoAp8r6s4t3upstairs,w0y,zoG;age,hoev1i0;nn0tness;er;alk1hick;ervaHhot,w0;ing;e0ussian;su7veal;aul,erformance,o0;et,rk;dd,rdina7;abBegislation,imited;n1rd0;ly;dso0s;me;ne;iscove0ocume4;ry;heat,limb,oin;eside,out;dventure,mbassad1ppoi0rrow;nt;or\",\n    \"4.366\": \"true¦aRbQcLdIexploKfGhEiCjim,mBoAp7r4s1u0van,w9;gLnderstood;a1cottBett4he7m0;ell,s;lary,nta;e0id,ow,s,uin;ad0venue;ing;lan1ri0;nt,or;et;peraDwe;rs,sg;mportance,r0;ish;abit,i0;ghlight,ndu;or0riC;cBever;e0ispute,owntown,rake,u6;cla0serve;re;hip,lo3o1urrent0;ly;!nstruc0;tion;ck;ind,orrow,un1;cknowledge,hm1tta0;ch;ed\",\n    \"4.381\": \"true¦aTbother,cLdJeaten,fiPgHhoFinDjuveniXmCnBp5r2s1toy,u0weak,zealand;niform,ps3;alt,ink,lowE;esponsibUo0uR;ck0man;et;a3e2r0ure;e0oceediB;gna6sence;n,rmane5;r0ssG;is,ticipH;egative,oodL;agnifice1uslim;depende0stitutCteresti4;nt;nest0p;ly;a0raduAuest;ng;e0na;finit5sseA;a5o0;n1u0;ch,sin;flict,ne0stitutional;ct0;ion;ndid0st;ate;ccuse,ffordab3maze,n2pa1si0;de;rt;alysis,xiety;le\",\n    \"4.395\": \"true¦a00bYcUdRexcepQfMhKinJjIlEnCoAp9r6s3t1useful,v0wiX;ariaPictim;as0emperaMheBrus0wen0;ty;c1ho0ileXtatue,uppC;re,ut;aJrP;e0unning;l0nt,solve;ax,y;!atio,hilosophy,itch,ledSroof;rigin0scar;!ally;ickna0ut;me;a2ets,o0;g,v0;er;h,ne;ail,esus,ohnsA;ju1stant,terpreta6;ai,ighway,ung0;ry;ourth,u0;el,rni0;tu0;re;ti2;i0r3;g,scussi0;on;ircuit,o1r0ustom;ew;mbine,nfu0;se;ay,u0;cket,ry;broad,lle1nnual,ppeara0;nce;ge\",\n    \"4.411\": \"true¦aXbTcOdKemperJfFguarantee,hCi9kay,mood,outdoJp7re6s4t3unusual,v2w0;arn0orthy;!i3;eterVia;end,hai;ayi0plendid,tr9uddCwear;ng;acBcover,gime,mark,publicR;atOig,otato,re0unishmeD;cious,viously;mm1n0;stall,telligG;ediEigra9;a0enF;ppin0rE;ess;alse,ounda2r0;ight0oz0;en;tion;or;e1id0;nt;l0monstr3;hi,ight;hemist3o0rack;nfer1rpor0;ate;ence;ry;e1ob,r0;ave,ief;n0sides;ch;fghanist0lbum;an\",\n    \"4.426\": \"true¦aUbRcMdKeJfHgFidentEjeff,knee,lCminXn9opus,p8r5s3t1v0wo,zero;ancouvXe,is6olume;echnique,ra0;ditional,nspN;a0cott,e7hock,picy,ummaCwitch;ke,ra,tisfy;at,e0ub;presentat0solut0;ion;akistan,lain,ossibil5roceduQ;e0iB;ed0t;ed;am0ectuM;b,p;ity;alle0raC;ry;light,r0;iendship,og;fficiCnable,ve;efi0istinguish,riven;ne;eiling,o0;m1n0;stitute,trast;f0prehensive;ort;atter1egun,lon0reath,utl6;de;!y;cqui4ppetiz3r0ssistance;bitrat1rangem0;ent;or;er;re\",\n    \"4.443\": \"true¦a05b01cWdSeNfur,goose,iKkorea,lImHnGoDpCr9s6t4v1w0;a,eigh;e1i0;ctory,rgin7;hicMnue;i2o0;ilet,ne;a1e,heltTkip,li0omehow;ght;il,vM;e1uss0;ia;latRmora;enalty,ortlaRrincipal,ub;bviousLn1ppo0;n7siJ;i9tario;akMeighbourhood,obel,umerous;all,on;attHe0oneG;arnBgisla7;mmigr3n0rL;dicaCstrum0;ent;ffec3ntit2xplan0;ati0;on;le;tive;a1i0ownstair,ust;ne,splay;nc0rkness;ing;arri3hris,on0rab;stant1tribu0;te;ly;er;ackgrou2iology,r0;e0unch;ed;nd;bt,lcohol,pp,ustrali0;an\",\n    \"4.460\": \"true¦aXbRchildren,dQeMfLgJhIiGjus,korean,lEmAp7queSr5s4t1univer9vo0waU;lunteUtU;erritory,hread,i1r0une;easu0yC;re;hown,ingQpecificalTum,ymbol;ach,e0unnP;moHside1;hra1leasa0ossibQrofessor;nt;se;a,e1i0um;chael,ll,nim1;di0reL;um;ee,l,ook0;ing;mpact,nd0;ependen2ustriH;ello,istoric;ilbert,ree0t,ulf;ce;amiliar,ew9lorida,orty;v2x0;ecu0pressi8;te;eryday,oluti6;on,ump;a1u0;st;c2rte0;nd0;er;on;ctu1rrange,ssemb0ttorney,wake;ly;al\",\n    \"4.478\": \"true¦a01b00cMdLeKfHh06iFjEkillWlDmBnobZp7qaeda,r5s2t0uAvegetarian;on,ra0;ce,nsacS;a1ch,hadow,pare,u0;bstantiEici00;dTnd;e0iZosalind;laNquired,ver2;artnership,e2ha1laywood,oll,r0;escripLo;se;ppL;erit,o0;biMd,nkey,v6;!ouis;!ar,ewel,oe;bn,de2lleg2n0;gredie9te9;e7ind1ly1orm0requentG;al;ing;g,ngineB;er6isastA;aAha8o0;lour,m3n0;fro1te0ven5;st;nt;m1petit0;ive;erce,unica0;tiC;pt0rt;er;b1reful0;ly;le;at,one,uck;band5nxi4pprecia3rts,t0uto;lantic,t0;itu0ract;de;te;ous;on\",\n    \"4.496\": \"true¦a0Fb0Bc00diZeWfQgOhNiKkristeva,lImDnCoceania,p6rail,s2turkey,u1vary,w0;ait0Ce08;nlike,sa;cheOexu03hell,ile0Fo2p1t0wim;air,em,olDream;i0GokC;ftwaDlut02;a4e3ile,olitician,pl,r0s;e1ofi0;le,t;paVserve;arl,rsonal08t02;ce,sta;earby,urL;a2i1o0;o4rris;!sfortE;id0kWrie;en;azy,end,iteratu0sd;re;n0srael;itiKs0;i2tructL;ood,ug;ho0reet;st;a4ifty,o1ra0;me;ld,r0;mula,t0;une;ke,te;ntertainKxpe0;ctatAn0;se;p,rt,scouI;a9hef,o1reati0;on,ve;m4n0;clus4gression2s0;equFide0;red;al;monwe1pan0;ion;alth;mpus,nc2;aba,e2u0;g,tt0;er;an,droom;bs4c0dvocate,ustin;cording2hieve0;me0;nt;ly;en0;ce\",\n    \"4.515\": \"true¦a0Ib0Fc01dWeTfRgPhMiIjoseph,kHlGmax,oEp7r5s3t2un1v0Gw0;eep,hip,innN;ab05comfortab05happy;al02e08;leepKpy,tare,u0;bsFrvive;e0urH;ad5commendaWgret,scue;a3c,e1o0ri2;lluUssC;ak,rsua0;de;n1rticVsseng0tT;er;el,touflia;bligaOr0versea;ganic,iginaT;abour,ead7;ennedy,i;lln2n0;n,s0;tance;ess;ear1istoric0orrY;al;ing;oAra0;ham,y;a0ifth,lash,ounta8;me,vouriG;mergency,ntry,x0;act,p0treme;ansiLoO;a2e0ozE;st0voB;ina4ruc4;niErw0;in;aAho8l6m,o0yc5;cktail,n1rpora0unsB;tiD;s1tin0;ent;o0ult;le;assroAima0;te;p,s0;en;b,n0;c0dy;el;bq,ens1re0tw;ast;on;bu3dvi3ffirm,nne,pologize,rm2sse1t0;om;rt;or;se\",\n    \"4.535\": \"true¦a0Ib0Dc00dXeUfrSgQhOiLjam,lKmJnIoGpDquo0ArAs5t2upgra7v1wi0;ck0Gf;acancy,ePiola08s;a1ermin0Kh0ong0Guesday,wOypicalJ;umb,y;g,nk,t;a3cholar,e2li1t0;adium,ir,rongF;de;c0Fvere;ck,l4usaJ;e1i0;dRghts,p;cruit,gis02;arkPeninsula,re1ublicati0;on;cedeWsidenti07;b0ffenSlymp03so;jective,vious;ecessari3yc;etropolitan,idnight,oni04;ab,ip;n1ta0;ly;sIventoB;epatVi0;nt,p;ett0uinea;in;ank,id0;ge;at8gypt,mploy1n0;force0traB;meF;arl5elive1istaEomestMr0;aft,iv4;ry;hampionship,lAo3r0ulturM;aft1u0;el,st;ing;mp3n0w;scie1v0;ert;nce;e1o0;se;te;ie0os5;nt;a2e0jp,ro,ur7;ard,lt,t0;ter;de,s0;ed;c5fterwards,graw4lien,nge3ssi2tom1ven0;ue;ic;st;l,r;al;tor\",\n    \"4.557\": \"true¦a0Ob0Kc0Gd0Ae05f00gXhoWiSjeRknife,looVmPnoOoJpDreCs8t5un4v2w0;a0e0Mithdraw;l0Knt09;entu0Fi0;ctoria,ola05t0B;!known;eGh1r0;ea05iggG;erapy,ir04rone;aiZequence,i2t1u0;b,reO;atisAroke;gn03m;aliIsiR;e4hilosoph3ie,lastic,ortrait,r0;act2i1op0;erIorT;m08oriV;icX;ptide,rspective;bli6ffe2gYp1rgan0;!iz02;tics;nd0;er;e,wheT;assa0elt,iranda;ge;rsey,wish;e,n0;ch,stant4te0;n0rstaC;se;nour,ok;al,e1oodbye,reat0;ly;ar,nI;e2l1or0unerE;gotten,ma7;ame,ip,ood;a0e;st;di3lepha2mo3n,ssenti9x0;amina2ci0hibi2pJtraordinI;te;nt;tion;c,e2igni1o0;ing;ty;ni1te0;ct,rmin8;al;amera,e2losu1o0;mpel,re;re;nsus,remony;alanc2elov2u0;ddy,l0;let;ed;l1nnivers0sh,wkward;ary;ert\",\n    \"4.579\": \"true¦a13b0Yc0Ld0Ie0Df0Ag06hZiUje0VlSmPn05pJrFs8t2unemploy0Ew0;eb,i0ooden;ndows,sdom,t;axpay15h2i1our0;i3na0A;l,ssue;e0roat;at11rapi0;st;eafThort0Si4m3o2p1tudio,u0;ggesMrv09s0U;a0Cit;da,vereign;i1oo1;gh,x0;th;a2e0i8oomm01;lative0Kt0;a05ireW;ge,pe,w;aint0Fersona9i3lug,o2rison0Ou0;blish0Nrp0;le,os;is05lish;l0n;ot;ariBe1iss09o0yste00;b,narch;re,xico;iabi0o;li03;mproveJn0slam;c1itial05ten0;tiV;entive,redibl0;e,y;a4c,e3ollyw2u0;ng07rrica0;ne;ood;aviXritage;nn0v;ah;en2oogle,ri1ui0;lPtar;ef,ll;dYetic;ailed,i1oundXreeze,un0;ctionUdN;nance,refox;ase,d2lsewhere,n1quip0st3;ment;countStree;uc0ward;ate;e1isn0rawGumb;ey;but,cor,posit,vil;aAhairm9lo8o2ur0;rency,ta0;in;al,l4m2n0rn,stume;g,tra0;ry;ic,passi0;on;o8umbia;se6th;an;paci0reful;ty;a1reed0;ing;h,lco1re0;ly;ny;l3r1s0;pect;riv0thur;al;arm,t0;er\",\n    \"4.602\": \"true¦a10b0Xc0Fd0Ae01f00gWhSinRjr,ke,lPmKneIoHpCr9s7t6u4vi1w0yelp;arri2el0I;n07s0;it0u0P;or;hh,ltimate0nivers0Ns0P;!ly;ennis,hursday,witt0N;a0ervi8o0Qtra8;dd0Pid;ati6e1i0omant0M;dicul8v0H;duc0Al0QsolvS;a2ercei0Qlatform,oTr0tolemy,uni06;ay0Gi0;est,vileT;ckaSle,n,yi0;ng;bDverco8;ighbour,rv0;ous;a3edi2is1ol0;i0Fly;erab0Bsi0B;caYev04;c,inP;argeOifeti0;me;n02venU;ealthcare,o0;ck1ly,us0;eho2tS;ey;!lo2r1ui0;ld;andmothVey,oce0;ry;reak,undamentR;l,m5n3t,xten0;d1si0;on,ve;ed;a6for3rico,terpri0;se;bra1er0;ge;ce;e2is0u;agree,cipl5tin0;ct;ep0signC;ly;aFhDlassBo4r2u0;is0rM;ine;it8u0;sh;lumn,m4n0urti9;fid2sist2tribu0;ti0;on;ent;in,munic0;ate;ic0;al;arity,e0;er;binet,nd2rol,thol0us;ic;a1loody,oil,ubb0;le;be,rn;dministr1ge0ssault;nda;ati0;ve\",\n    \"4.627\": \"true¦a12b0Vc0Pd0He0Ef0Ag08h06i00kill0SlYmQnPoOpKrFsCt6u4v3w0yie0Z;eek0Ch1i0;ls02zard;ereas,oa;ess3ietnam;n0rban;d,iR;i4r1unn0wel0M;el;a0end;ns0sh;form,laM;ff,g0S;ampIe1toma06u0;b5e;at0DnatN;a1e0;!ign,publicans;i0p,ve;l0th;way;ar2hiladelphia,i1lKro0;fessiIvince;raAsZ;!o7tP;ak,ccasionalOffensi04;evertheless,otab5;a3emori06i1or0usc4;eov0Crow;d0les,ni;g07st;gistra2n1rb0;le;datoTufactu08;te;il,o0;bGw04;di4mpress2n0;sect,teri0;or;!i0;on;ot;ail,ijazi,mm,oldLu0;rIt;ardenVe0rain;m,nt3;acebook,loat,o0requency;r0x;ge,mer0um;ly;a1motionIn0;t7vironmentH;stN;e6i2j,rown,u0;ct,t0;ch;ctiona5n,s0;abil1clo0;se;ity;ck,mocrats;hi4o1ur0;ry;llecti1m0ntainCrnwall;ing;ve;ck,ldhood;a4e2iologic1onus,r0;eathe,onze;al;ho0neath;ld;ckwards,sk0th;et;ccompany,dmi2hh,l0nnoy,rizona,wful;phonso,togeth0;er;re\",\n    \"4.654\": \"true¦a1Mb1Dc10d0Ue0Nf0Eg0Ah05in02j01ko,lZmYnWooo,pMrEs8t5understandi1Wv2w0yoga;arehouOhisp0Ki0ou1F;pe,re,t1C;ac14i1o0;n,ya0U;be,tam0C;e15hee,oa1Br0ypic0G;ansport10i0;ck,ll10;car4ettle0Gh3i2lap,ovi0Tpi1t0urge9;eYraw;d0Ate;gnature,mi7;arp,elf,ield,udd08;ce0Red,y;a6e2o1ug0yE;!by;b,gers,pe;asonab0Nc2gu1volutiona0;ry;lar0L;a0Ze9;bbit,l0JvQ;a8e4hysici6i3ls,ortZr0sp,ussy;ai1evail,o0;fou0Rmpt;se;ll,t;nnsylvanRr0;centa05mi1si0;an;ss0D;k,lm,nic;arrow,ego6i0Ro0;n,thJ;ah,ichel0Qodify;a0ege0GodY;ddKptop,t0N;ones,ung0N;c1dex,fect05i0nov04;tia0K;iJorpora0J;!a1eight,ostAp,um0;anity,or;rbor,st4waii1yth0;am;!an;en2luckste6overn,r0;andchildr0iev0G;en;ie,t0B;a5e3o01rm,u0;ck1nn0;el;in;lic0n0A;ia;ctu1iQrth0;er;al;a5igh4l3m2stablish1vi0xisten05;deM;meL;iEma;d,izabe0;th;gVrthquaG;e4is2ot,r0;essi00i0;ll,nkiZ;char0liC;ge;ed,ntiHscript8;apBd,eAh8o2r0;eep,ick0;et;alit4ke,lleague,m2ns0rps;ensus,istent0ta6;ly;edy,pens0;at0;ion;iAo0;ke;nt;abCe;a5e4iography,la3o1rea0;ch;ld,riGu0;nd;st;comiDnd;ke1sketba0;ll;!ry;c7l3ng2p,t0;lanta,tribu0;te;le;abama,l0;eged,i0;an0;ce;complish,t0;i0ress;ng\",\n    \"4.682\": \"true¦0:1L;a1Db17c0Vd0Pe0Mf0Ig0Ch09in06j04kind0l03mZnWoTpKquiet0rDsAt7u6ve5w1xx,yellH;a3id2o1;lf,rn;!e0;ff1Blk0XtchD;il,rM;ps,sele1A;attoo,n,o2r1y;ansit,ibe;ma11pic;atelli0Jcroll,haw,il0orr07t2u1;fficie16mm18pervisor;ake,umb13;a5e2o1;ar,bb0Nme;flecImain2n1sin;d0Lew;ing;g,pid1;!ly;a6e5he4leas08o3r2u1;er0Pr6;eparaBimari0;ke,li06pular0Jssessi0W;eb,nomen0V;rsonnMtition0C;r2tie5u1;se;aVi0J;lympics,r1;chard,dina1ganize;nce;ba,e2o1;ti0M;d,ed0H;e2il0u1;g,siciA;anw0Dditerrane9mbers1ntNrry,ss;!hip;ayYobby,ucki0;a1ealSustify;cket,ne;jure,te2v1;estigaMisE;nsYrnal;ans2istori1;an;el;ap,o4r1;a1ind;nd1teful;fathMma;at,odfell1;ow;asten,irework,l1orgiKraud;e1ock;e,x1;ibU;d,nzyme,qu2rr,xclu1;de;al0;a5e2iDo1raF;c,nut;fini2spair,tail1;ed;te;ddy,n,wn;elebrBhAin8lue,o2uri1;ous;lorado,mbo,n1ttM;servati4t1;ext,ro1;ll1versy;er;ve;derlad,e1;ma;arm,eB;ity;a5ooth,ru4u1;ll,r1;nt,ri1;to;sh;nana,re;ctiv7ddict5mino,pplica4sse3w1;hi1;le;ss;nt;!i1;on;e0ist;ly\",\n    \"4.712\": \"true¦0:21;a22b1Uc18d0Ye0Tf0Qg0Mh0Ii0Dj0Ck0Bl05m02nWoUpNrGs9t5u4v3w1zoo;aterfro1Ieak0Kh1orldwi0V;erev0il1T;a22eg1Pisi28;hm,nnecessa1Jsc;empo02h3is,o1ribu27t;r1urism;ch,n;ief,k;c6h5i4li0XmokInake,occ0pray,qui0Ot2u1weep;p,rviv1H;a1ra15;ndFrbucks;ngEre;a7elley,rimp;oIrat9;e2o1uby;a1EllAta1R;c4dd8medy,na3s1vi1M;e1pective08;arch0rB;me;eipt,ogni1L;a5iWlann4ro2un1;ch;hib1mine0U;it;ing;int0r1ssa11;d1Gibanou,liamenta0U;bser1ffici7li1Apposi1Eurs;va1D;a3e2o1;pe;ckla08r16;i,t1;i0Cur1;alQ;a2i1ortga0Rrt,ustard;lita0GnoC;rquis,trix;a5e3i1ols;ber0Lneup,te1;ra0G;a1sbi0K;f,th0;me,p,wrV;a,indneD;et,ulia;c0Wmag07n1;di3juNnoce05s2teg1;rity;tructor,ult;ct01es;a2elicopt0o1;llow;ppi7v1;en;ar3d,enIl6ro2u1;d,t;ss;a04ba04;atig2irm1le0A;ly;ue;arthquak0conomVgyptiZlectric,x1;hau01it,p1teP;ected,i2lo1o0C;de;re;a9e4i2o1;in,mina0D;sti1vor6;nc07;claNf3s1;ceDp1;era08;en1;ce;llas,nc0;aIelebHhEiDlean0o2r1;!ap,iticize;m3n1rp;gratulati1sidera00te5vicX;ons;b7muniIp1;arisVl3o1;s0u1;nd;i1y;me1;nt;inaO;nderella,rcular,te;aracterist2er1;ry;ics;raJ;bba3ribbe2su1;al;an;ge;a5ehalf,iHl2oo1;st;a2e1;ed,ss;de,nd;il,k0ll1;et;er;bsoluAc8dop6mu5n4sto3ttenti2u1;di5tobiography;ve;nish;drew,thrax;se;ti1;on;cepta1re;ble;te\",\n    \"4.744\": \"true¦0:2E;1:1P;a2Cb1Wc1Dd12e0Zf0Ug0Rh0Oi0Hj0Gk0Fl09m00nZoYpQrMsDt9ub0v6w3y2;on1Tup;e3h2il;!a0U;althy,dnesd0I;al2ulner3;id,u2;ab0Q;e4h3obacco,r2ui1;ansla1iv1J;e26ru;lephone,mp0r0Xs7;a9c8e7it6lave1Jo5p4t3yn2;dro14onym,thes0A;eph1Ura1W;eaki1Kur;cg1Sfa,lMur;ti1I;al,conda1Dnsitive;!oR;fe12lm17nc1t;a4e2hy0W;a0Zbuild,gardlIp2treat;!uP;id,re0Y;a8e6h5iano,lay1Lr2;e3ick,o2;duc0mo1;cise0Ulimina13;ilosoph0ysici1L;a2nTrceiv06;ce0Fnut;in0EncaU;ffe1Argani0Nyst0;ightmaMoveli1G;a7cphers0Se6i4o2yth;lecul2p,rt11;ar;croso1Estr2t;ess;h,sseng0;in3n2pSsk;date,ufactur0;e,la10;a6ettu0Vi3o2;op;festyNg3mi2qu11;ta1;a1ht0M;borato0Iunch0;ar,erala;ord12uz;ii,llino7m5n2;do0Uqui3stagram,t2vest0U;errupt,roduc1;re;l2p02;ay;is;e0Ei3o2;e,peM;ke;enerosiYlobe,ra2;nds00v2;e,iW;a5ev0i3lutt0r2ulfill;ed,o0K;dd2x5;le;lkenste0Dre;d3mpow0nterta0Cpisode,stablish2uro,xtern03;ed;it0Bucation01;aAe8i5o4r3um2;!pliX;ead7ou9um;cumentaRuB;scr2verF;e1i2;mina1;light2pt,s;ful;mmQyli2;ght;aHeDhristianiCivic,lBo2rui8;m5n3sta,u2;gh;su2vi6;me;mon5p2;a3ri2;se;ct;ly;ay,iD;ty;l4rtifica1;ti2;on;ia;lo3mbrid2rt;ge;ry;aEeBf,iAlew,o7rut6u2;llsh4mp,r2;ni2;ng;it;al;o3un2;ce;!m;le,n;at3foreha2llissima;nd;en;chel3s2;in;or;fgh6ircra5lexand0rd,thei3u2;nt,thorize;st;er;ft;an\",\n    \"4.779\": \"true¦0:2V;1:2S;2:3P;3:3B;4:2O;5:3N;a3Cb2Yc25d1Ve1Qf1Ig1Dh17i11j10l0Wm0Pn0Jo0Ep05quanti0OrYsNtDuBvAw6;a8e7hi6orkpla3;sk2Qttingt4;d,n;nd,rs;a36ir05ow;nf6rge5;air,ortuna2B;aEeBh9o8r7u6;!b;ail,u2W;w16x34;a,e6ru2Bund0;oret0Ireby;chn0Henag0nsi4rr6;i6or1T;b2fy;ck0Slk2U;aEcFeDharpn2ViClipp0nowfall,oAt8u6ympathy;bseque5fficient2mm1Apport0r6;ge4rouX;a6e1Picklefo31ri1H;b,ck,mp,ples,tuto2I;ap,b0lo6uthea20;!m4;lk,multaneous2xZ;an,conds;dd6mu0Q;am;aBe8i0Uou6ul1;gh6t21;!ly;cogni1Lg7markab0Dp6sort;eated2lace2U;i1Gula1K;dar,inbow;aDhilip,iClBo9r6;e7o6;gram2Hmpt2spe10;mi0senta1E;pulo6rtugue2Kwd0;us;ag1Jun16;er3stol;d,ragraph,ycheR;penings,r9ut7ver6;look,whelm1;er,sta6;nd1;edi,gan0V;a9e8hi,i7o6vm;nsen29vo;e3ggas;gotia10utr1R;s6to;ty;a9e7o6s,unicip1O;ck,nth2untains;chanic6nt0Nr0Qtro;al,s;de,g7k1nufactur1r6;ket1t1M;ic1I;a7ewis,o6uxu1D;be,un0Kv1;d,mar6te2;ck;immy,uni0E;gnorJmpris4n6slam1J;f9qui17stru05t7v6;estiga0Jo1M;eract6ro;!i4;a5la0G;aAe9ft,ir1o8um6;!b6;le;ld0mel18us1;n,rb;s0Btr1I;r8u6;id6m;an3;a3ett6;el;ac04eCiBormat,r8u6;ck1r6;na3thermo0U;an6en;cis6k2;co;!b0nish16;ath0mini03;ag0cho,e,ssenti18u,x6;c8p6;iTlo6ress2;it;essiLlaim;aEeAf,i6ramatic13u0Uyslex0P;m8s6;!appoint0Zc6tribuQ;!our0V;!e;a8fault,p6r,sign0;ende5i6th;ct;l0n;sh,ve;aUe,hMivilian,lLoBr7u6;m,r0N;a8eat7itic6;ism;or;ve;ck,mDn7ok0Jtta6;ge;centraAs7venti6;onZ;ide6um0;ra6;ti4;te;b6pone5;!in0A;assify,iff;a9e7ri6;st;ek,q6;ue;lk,mpi4r6;iot,l6;ey;on;ll1r7ther6;ine;b,olina;ing;aHeElCoAr8u6;nny,tch0;er;a6eeze;!ss;snia,unda6;ry;a6esO;nk;aup7ng6ta,wa7;al;re;ng,rga6the;in;ccJdvGftEka,liDnytiCppare5rmIssBttractiAu7waren6;ess;dien3thent6;ic;ce;on,ve;et,ista5;me;ke;!erwa6;rd;anc7erti6;se;ed;ident8omplish6;me5;nt;al2;ly\",\n    \"4.816\": \"true¦0:31;1:2T;2:2K;3:2J;a2Ob2Ec1Yd1Le1Ef18g15h12i0Wj0Rl0Mm0Dn0Ao08pZquant1ZrTsGtBu9ve7w6y4;ell4outube;!ed;hist30orkers;ggy,t4;!o;si0t4;iFt3;a7h6ime2ot,r5u4wi0M;na,t2Q;adi0ip2T;anksgivi0ink1W;b,pest25;am,cFeDhCiBku08ma0Yp8t7u4weetie,ympho0G;b5ccess26ppor13s4;pe1Ota1S;redd29u1D;at,eady,ocki0rateg2A;!a5ecia4;lize;ke,rk;mi,tu2D;ade,ed,ri0Yuttleworthy;ldom,p4rpe2Overe2xy;arate2t;out,reeni0ulpt2A;a8e5ib,o4u0U;am,g3;ar,imburse21j5m4nt1;a1Aov1;ec2Doi28;dia2CilroMmXtion1;eAo9r4uss;e7o4;misis,se5te4;ct1Esta2C;!cu27;dict,ferr1Cgnan0Wmi0Y;st3tt3;nQr4;pendicular,siste27;ath,bjec22ct,pera0Cr4;al,lando;azi,e5o4;d,on;phew,w2;aAe8isle7lb,o5u4;d,slims;n4t1N;k,opo2u1G;ad;chanism,d1n4;!us;i,laria,nki0Mrsha4xim0I;ll;a6e4ikewi0Cocal00uv;ak,g4igh,p3st;al2itim1D;s,w4;n,su12;a7i6ohn5u4;an;ny;st;w,zz;an,m7n4;fo,te4vi0C;llectu1r4;est0Hpret;munMp4;eri1le0V;a5ome4u;la03work;m,rAve1A;arl0Pl5r4;adual2egg,ip;an0Yitt3;avo8i7l5ollow3r4;eque15ustr0S;i0o6u4;sh;fteen,ght3;ur;ffective2i9lectric8nd7quivale10valu0Nx4;cellen0Qis5peri4;enc00ment1;ti0;eav0Ki0;ity;ne;eEi8o6r4;a4ift;in,m06;ll,nat4;e,i0M;a7git1n3plomaAs4;gui7t4;ribu0Iu4;rb;gno4ry;se;cen4dic05er,m0Fparture,velopK;cy;aFhEitizenship,laDn,o6r5urricul4;um;owdGuY;ff9mmand3n6pp3r4urtesy;d,respo4;nd;!e,sul5t4;emporaFractX;ta04;in;p,rify,sh;art3imney;l5r4thedr1;b00rot;culPl4;ed;aAe8i7obby,r5u4;l2tt;ewe4oadway,uP;ry;l2tter2;auti4e,verage;ful2;d2nn3seB;er;ly;dKgi0isIlGmFnCppellants,r9s7top,utom5wa4xe;it;at4;ic;sign,tonish4;meL;kansas,tifi4;ci1;al;cest5ticip4;ate;or;id,p;as,i4lega9;ce;le;ng;am,j7mi4;ra4ssi5;ti4;on;ective,ust4;!me4;nt\",\n    \"4.858\": \"true¦0:4K;1:4P;2:4R;3:47;4:4S;a45b3Qc2Wd2Re2Gf25g1Yh1Pi1Kjacks4k1Jl1Dm15n0Zo0Tp0Gr0AsRtFuEv7w5yeap;a5idespre0Oorri3Uwii;it25rd17tt;aAe8i7o5;id,l5;cano,unta48;ol21rtue;ggie,ni4Vr5;ify,mo2X;ca4Rlenti4Hria2W;phold,sage,tO;aFeDhCiAo1Qr5u0Z;a7e6op5;hy,ic39;asu3Zmb3;dition3Ui5nsi2vell0;n3Ft;de,m5nk;!i1;ank1With0;a5e,nd26stimony;c2Tse;ki1lent39n;aMcaKensib3hIiHkirt,la36m,nGomeFpCquee3Vsa,t8u6w5ynthet1X;edi4GitzerlaQ;ng,ppor30r5s3E;pl3Vveill4B;a6ev3Yicky,r5;awber3Leetc3U;b5lk;il27;a6o5;il,ns1T;c3Nm;d32th19;ap,eak;a,s;areho1Bo5;rt3Nve0T;llop,n5rl2C;!d2I;cr2Qtisfi2Q;a9e6o5ubb0;b10ve1Cy;ci09fu6li16s5;emb3pect15;nd;dic2Bnch;a,eGiFlCoBr8u5;mp,r5;e2Wsu5;a1Qit;e5oclama2;ce0As5;criSuF;et2Ukem4;a6e5;ad;in2Onk;nt,ty;!n1M;ccasion1Xliv0ngoi1p,r9ut6ver5wl;night,pri3Cwhelm;co6l5;aw,et;me;chestra,ganisa2;a9eed8fl,i7o5t;n5rthwe21tab2Ev;ethe6violQ;ghtinga3le;le02;rra1Pviga30;aBeAi7m03o6u5;mmy,nicipal0Zshroom;de2Wtorcyc3zilla;c5gra2rac3ssissippi;ro5;be;ans,moir;inten2Tnu1EthemaV;and9e7i6o5;okXs0;ab3bertari1Sght0ly,vW;a5i,ss0th1A;pe;i1mark;el1Vh1Om;gnora0Pllust2Jn5so0T;du2Lf7herit,ni1spec2t5va0T;a1Aerfer5;en2J;ect20rastructu1C;aCe9i7o5se;mema5ok0peful1Oriz4ussaL;de;di1ndu5;ism,s;ad6e5n2C;!l;li1Yquart0;mm0ndkerchief,rb1Lsh,ul;e8iTlow,o5uideli1W;d5n;de5wB;ss;!ll0ne5;ti5;cs;aCiAl9o8ran5;c6kl5;in;hi0Jis;rmula2st0undi1;av18uid;e5lt0;ld0;ith6ntasy,vor5;ab3;ful;fficiEggplaTleCnAs9thn8v6xc5;e0IitemeS;alua2e5;rs;ic;s0Jteem;da5ormo13;ng0;ctr4vat5;or;enL;ati1e7is6octri13r0Tu5;b,ra2;closu07posXtinct0L;fendants,lica1Amocrat,scen5tecZvelop0;daEt;aWeThQiPlKoAr7u5;pboard,r5shi4;b,dk0V;aig,eativ6itic5;iRs;ity;conut,il,ll0Ommut0n5up4;dCfuBgr9queYs7tinui1ve5;nie5y;nt;pira5truct;cy;atu5essmZ;la0V;si4;e01om;a8o5;s6t5;hi1;et;n,ssifica2;garet0Nrc08;a6e5;esecaDmiIryl;pOracteri02;a6lebratEre5;al;se;es02lend02p5;tive;aFetrEhai,iDlCo8ri7t,u5;n,r5;ke;ck;a7oksto6r5t;ed;re;st;ah,esYues;ng,tt0;ay;g7nglade07r5;k,m5ri0;an;el;b02cWdQirplaPlMmbInGpprenticeshFrBssho3u5;c2t5;omatic6u5;mn;al5;ly;le;ab7m6te5;ry;our;!ic;ip;aly5ti;ze;edk7it5;io5;us;ar;aska,l6s,zheim0;er;en;ne;apt7verti5;si1;ng;!a2;ti4;on;c5tiva7;ept7u5;ra5;te;an5;ce;!oli5;sh\",\n    \"4.903\": \"true¦0:54;1:5Q;2:48;3:5F;4:44;5:5R;6:5G;7:52;8:5D;a5Eb4Zc42d3Fe32f2Ng2Fh26i21j1Yk1Ul1Om1In1Ao17p0Rqualifi4Lr0FsRtKuHvEwAyea9z;!rs;aBeaAheat,i9ret3J;lliams,shi2;kn35ry;i4Zrd,x;eAi9om12;llag0rg7zi0;lv51nd4Gst;gh,n9pcomi2sb;der9i55precedent4B;go,mi5Hneath,wat0;aEeCin,oBr9yraR;a9eati46iang5J;d0ge4D;ni6ppi2;chnic2Bd,ena33l2Gn9;a50th;bl4Rctics,ta;aTcSePhNiLkiKlJoIpFquad,tCuBwe9ydney;at9d49ethea3D;!er;ccess42mmo3Tpermark4Nspici5;aAo9rongh4X;op,ra2V;r31te3;eAi9;ke,ritu4;ci18e3Z;ck,u0J;am,eepy;nny;gnifica2Ym5n9rna,z;!gapo4G;a08o9;tgun,wi2;lAnsa1rgea4Ht9;tl3Kup;fi01li2;arNri2O;il3KlAt9udi;isfac1yagraha;esm8ty;aHeAid0o9ul0;ll7ta6;aEfi27in,li4Hnaiss4HsAv9;erend,i4J;i9tric1;de9st4E;!n9;ce,ti4;ffirm,g8;ghav,lph,ptors,t9;io,tle9;bo3O;aLerJhotograph0iIlHoFrBsychologiAu9;mpk7nk;c4st;eBinces,o9;duc22pos9spe0Yv36;ed,i1;fer2Mjudi42;l9r1Vtenti11;e,icem8;easa22z;neapp43pe;cep1i9;sh;perwoArticipa1t9;r5ty;rk;ops,pAs,utf9ver3;it;erat2Nt;aEeDice3o9utr03v;minArwegi8twithsta9;ndi2;at9ee;e,i5;at,gle1Hls5st,t38;me3n2Tp,ugh37v9;al,y;aDeBiAorn7ut9;a1u4;d,gh33ld,ni2sappropria1;chan3KdicaErmaEss9;e,y;dn0Uhatma,nn,ssachusetts,themat04;aDeCiAo9;ne,v7;ncoln,qu9;id;ap,ga2H;ce,g,me2Wndlord,s0;ans0WeeBfor35iAn9;owledge38w;m,tt25;n,p0;an,e,ournAu9;nk,st7;ali2C;llu30mpBn9pho2Zv;c9fluenti4k,nova0Vterfe2J;!a,reasing3;at9ersona6rov1P;ie2K;aFeDideo03oCu9v,ydrog1V;n9sse7;!t9;er,i2;nes2Dof,sti2U;ck,r9;oi2Or;i0Wllowe1Or9sti3vi2;n03ve1Y;aFeBigant2Qlo0JoAr9;adXid;ldilocks,odn00;nAolog9t0U;ic4;e9iP;roO;ll5mi2rr1Vtheri2ze;aJeIiGlEo9rienD;oCrAu9;l,rte1C;k,m9;al3;ds;a9i0C;vo11w,x,y;e0El9refight0;li2;a0Ydera1;bAci9reweQt4;al,lita6;r25ulo9;us;ate07ea,lImbGnCqBx9;ception4i21p9tremi19;and0Pedi1lor0;ua1;d9gagUli16trepreneV;lAur9;e,i2;ess;a9roid0;rras0Gssy;e9igib1S;ct9mentaW;ioPron1R;aTePiDoAriveway,u9ye;ll;dAmini5o,ugl9;as;ge;ckeJffereInosaHsAt9;ch;agreEobediXruDt9;incAra9;ct;ti9;ve;pt;eme0X;ur;nt3;ns;ad3bris,creaVlAm,nt4pa9;rt;ega6i9;!be06;i9ys;ry;a01ertifica6hYiWlVoDrBu9;b8t9;ti2;a0Visp9o0G;!y;lNmInAo9verMwork0zy;ki2peX;cCf0necticut,qu0st0Utroversi4ven9;e,i9;en0O;al;e9re6;al,r9;ni2;ng;edi8p9;lAromi9;se;e1icat9;ed;lectAo9;rful;or;own,uD;n9viliza1;dy;ao,eAink,rist9;en;st0;lBrbohydAs9;ino,sim;ra6;cula1l7;aKerl7lGoFrBu9;reaucra9y0;cy;iBo9;adca9oklyn;st;dZlliaK;rough;a9efuscu;nk9ze;et;in;ngaloArb0;er;re;bor1cOds,ffec1ggresNirliMmbulKnJppGrDtAug,vailabili9;ty;hletAtenda9;nt;e,ic;!abi8n9;old;an;ella6roximate3;ly;te;na,t;an9;ce;ne;si5;ademBcount9;ab9;le;ic;ti5;on\",\n    \"4.955\": \"true¦0:6E;1:6A;2:48;3:4N;4:61;5:54;6:6C;7:60;a5Lb50c41d3Le3Af31g2Sh2Ji2Bj27k23l1Tm1In1Fo19p0Squ0Rr0FsWtNuIvDw8xp,y5E;aBheelbarrAi8oo,ur6D;d55ll9ndsh5Fs8;cons5He2;ow;d,gg4rr1X;anilla,eAi9o8;lcan69ti5;agra,nta0Crtu1sa;g5Xr8;di6Fge;n9pload,r8tah;a1Cself;c8dergrou1Teasy;ertain8onstitu2U;!ty;aFeChBoAr8utori1;anscriDi8o30u04;m,um4H;e,k1JrA;irds,n,orough2;m9nnessee,sta5Ox8;tu5B;pt;!y;aPeOhKiImok0nee2UoHpFtDu9w8;an,ift2;bcontract5Bnshi3WpAr9s8;pect0tain57;ge,rend3;erce2Npre3O;a8ool,riki5;irca3Or2St0;a8erm,o4;n,wn;ft2il,le2n02phist2Wuthwe56y;ms,n8tc48;ce4Wgh;!aAe8ld;pherd8riff;!e3E;cklet4ve;nt,ttl3vente0Ww;fegua5Ht4D;aHeAi9na,o8;bins4cky;dAsi5;alm,cDfrac7gist2Zinfor4Clie42sBtaTv8;a9en8;ge;mp;ign,tr8;ai4Uo3S;lGord0;c8iny,m;i3Kk;al01e;aKeHhysic2TiFlaEoDp4Fr9to,u8;blic2l2Ynjab;ivate2o8;b,c8;edur1l8;aim;nnonn3or2rn;intiffs,za;ne,one3ss,zzer8;ia;n8rmanent2;c8n;il;r9ss8thrick,w;iona6wo4P;a8ti1;di2Jnoid;baCklahoCpen2tto,uAver9x8;!fo4LygZ;pa2Etake;n3Ira5t8;p3Lrageo2J;ma;a9d,ecess1Mic8orthea3X;hol3Xk;pole4sa;aGcdona37eFiBo9u8yster25;ltiplay3mbai,rD;d8i3Sntre1ot,rgiana,ti30;ifica7;croarAllen9nimi14s8tche12x0;e0Ihap,souri;nium;ray;antime,lancho2socyclo24;ge,mm1nsi4r8;g2ZylaL;aEeBi9o8yi5;gistics,ngpudd3Drdship;ar,s8;a,ti5;a9nd3o,s8;!l27;fs,se;d9kh,rg0Eugh8;i5t3;en;a8ne20o5;r8t02;amcha8l,nataka;nd;aAe8unc7;rk,w8;elWs;s4ys;mpEn8;cuba6fCsBt8;e8ima6;nd0r8;fa2Fpret3sec7;talla7u2O;er04orm0;ort,rison2Y;aEe9i8obby,r;pst3tt3;aBlAmisphe2Jpat9r8sita6;d,s;it0Kocy6;m1Op0R;dache,p;lo,rr0Ht8y;ch,h;dp,eBlor0Vord4r8uilt;a9i8ub;ll0m;t2Ovy;nBo8;grap9met8r2D;ry;hy;!er2N;aFemini19iClexibil00oAr8urnish;ee2i8nd;ghtful,sk;ne,r8;d,t;c9el1Blipino,redrak8st;es;tion1;llo1Prt,shion0;clip0Hhh,lHmphasiGnCqualRr,sAthi9vol1Ax8y;ce0Eot2C;c1opi1H;!s8;en1G;chAro9t8;husia0Uitle20;ll;ant1Yilada;ze;aboKd3;aLeDi8nt,o06rape;aBnAs8;appoin8miss1;ti5;esafe,i5;be6gnosH;aEcCdBem,fensi0Tl,nsAp9s8;erv0ktop;loy,ot;ity;icat0;ei0Oo8;ra6;f,r2;gg3v8;is;aYeo,hWig0KlSoBrAu8;e,sto8z;di0Qmiz0;ims4op;gniNllapMmpLnDoBpyright,rrup7u8;n8rtya1P;cill12sel12t8;leH;ky,pe8;ra7;fDstrucHt8verG;entBin8;ent1u8;al2;ly;ioG;e8identi1;ss;!etit0Q;se;tiZ;aAi9o8;ne;n0Zp;us;ar8em,ili,ron0Xunk;g0lE;lCmBnnib1rAt8u7;ch3t0E;er;i5l,to4;el;f,i9or8;ie;ph;aMbc,coz,d,eJiGlossFrBu8;ddhi9ff8;alo,et;sm;aAe9isk8ook,u6;et;akthrough,w;dy;om;n8o;di5;ng;gg9ha8lV;ve;ar;!lBt8;mDtlef8;ie8;ld;dw8lot;in;b08cc04dmir1ffilia6lXmQnNppKrHsAttendan9ustri8vocado;an;ce;ap,kd,sBtron8;a9om8;er,ic1y;ut;assin9e8;mbEssN;!a7;chitect8p;!u8;re;eti6lic8;ab8;le;alo9ch8drL;or;gy;azeCbi7eric9ong8;st;as;ti4;on;me8;nt;coholClBo9t8;itu9;ngsi8ud;de;ey;ic;al;!e9umula6;te;nt,pt0;ed;raham,s8;orb,tra9u8;rd;ct\",\n    \"5.013\": \"true¦0:8K;1:89;2:86;3:80;4:7M;5:7J;6:8R;7:8O;a7Wb7Fc66d5Le51f4Jg42h3Vi3Jj3Hk38l2Zm2En2Ao1Xp1Cq19r0Xs02tPuMvJwAy9z8;oologi5Gu;ep,r;aEeDhCillingn4WoAr8uDwe;estl0i8;gley,st,t;nderful7ol,rk8;for6Ao3U;ereup1ir;rd7P;h,istco3Uk7Ol8na,y7L;k5Ut0;a8ersa65iol53l;cci7Ig8lZ;i3Bue;n9t8;ensil,t4Y;finish2lo1Cto;aIdp,eHhFiEldr,oDrAu8yl0;rn8t;er,i4ov0;a9e45i8ous0y34;bbiani,ni5Ovi5;in0mp3Unspare86;fu,kyo,mb;ck,ght79le;!ai46ei02r8understorm;esh1Will0;chnici3mp32nu4Dstify;iw3l8s6Z;es,ib3;a01cYeWhViUkelet1lSnat0Oorrow3GpNtGuBwaAy8;nagogue,r8;i3up;m,y;bsAck0f16per9r8spen19;at,prising7viv4Z;i4Ym3;equ4Did1It8;anti7Ritu6;an5DeeDh,iCr9up8;idi55;ang0i8;de,p8;e,p0;ff,ng;p,r;aBe8he3Uri6;ar,c8nc0;ializ2tac8;le,ul5R;di2Aghetti;a8ot,um;in,ng,sh;an,khs,tt4N;a3Se0oppi4rink;ason2c5Knato8rvices,ttings;rs;ar9en8holar38otXramb5Q;ar6Pt;ce,f;c,mpl0t3;aIeAichards1o8upD;b8ck4Ell0oseveAsi1Y;be52e;aEbIcCdBel,f9gister2h1Linstate6Mlaxa4Ymembr4Nnew5port0vo8;lt;in2riger43ug8;ee;istri36sto5Yuc2;e8or1S;iv2p4S;p,soni4;jk2Znki61;!n,u8;arr8iz;el;aNeJhHick57lFoDr9sychiatri3Cu8y;ppy,zzl2;eAi9o8ude6M;cu2Xductivi42ne,vinci5;ci4ncip6L;!a9p,y;la68nd0rband4Uti1u8;ch;a8ea;ce61yoff;eebs,ysiolog8;ic5y;aAculi4Odicu2Oer,nd,r8;fec49s8ta3N;i2Yua1A;!ch,sa69;ck4Hna0Vr9ssport,tri8vili1;ck;e9ti8;s3ti1;kh,nts;bGfFg,o,pCrButAve8;n,rt8;i1Mu4F;a4break,ta;lea58ph3;era9ti8;mist55on5;!ti36;fe2D;eAs8;cu25es8tac4C;si1;lisk,si38;aAda,eva9i8w;agara,ghtclub,x1;!da;hi,y;aNeLiEoAu8ythology;l8tt0;e,titude;dernAr9tivate8;!d;ali2Yg3;ize;cDg07lCnAs8;appropria6f8siona3Ft4I;old;i8t;m5st3C;kshake,lionai1M;hig3rowa2J;adow,d,nd,r5Ct8;abolism,er;chine37instream,nAr9y8;b,o;io,ri2ti5;ag2i8;fe1Qpu2V;aFbs,eEiClc,o8u4;g9ot,u8;!isiaV;ic8o;!al;ck,fegu3Xght8nguist30;bulb,i4ly;ct,ddy0V;ndscape,s3St0und2U;aEeBi8nit,rishOya;dn9n,t8;!ty;ap,ey;b9n8tt37;singt1tucky;ab;r8shmir;ma;e8i,oshua;n,opardy;cy,d30llum3RmFn8ra3Usola2Fvo2I;cluDdBevit0Xfini6hApOs9teg8;ra6;a3Gight,pect1Kufficie4E;abita4Dibit1J;epend0Yia8o;na;di4;agin0Qp8;lemen9res8;si1H;ta24;aBe9indi,o8ybrid;op,rmo36st0Av0;ir,r8;m3o3A;hn,irc9mpshi0Dn8rd02z32;dIgi4;ut;aLeKf,iIlidd1m,oHrAu8;ardi3es1Njar8;at;aBe9it,oo8;m,ve;a8enhou1J;sy,t0;ce9d8pe,sp;!er;ful;a,dmoth0th2W;ld,m8rls,vi4;me;ek,n1N;!ng3Hr9s8ya;oli2L;din0me3Iy;aMb,eLiJlGoBr9t,u8;r1Bzzy;a8own;g30mewo05;il,nt,r8;bidAe8;caZhe8ign0;ad;!d2E;ag9e8uores37;sh,x;ship;fe,gh24ji,n8sc5tnB;la2U;at,b,d,rnando,t15;g9irn8ll0E;ess;ot;aOcMdinburgh,fficiLin,lImpower2LnFternEvDx8;eBp9tra8;ct;enditu8osu8;re;cution0mpt,rcisis;ic0Ro02;al,i09;dors2franchise2Dginee9joy8;ab19;ri4;d9ev8;a6en;er7;ent7;onomi8stasy;st;r8t1;l,ma8;rk;aQeMiCm,ownw1GrBu9well,y8;!i4;n8o;d0Tge1;aw0o1D;!ap0ctFfferEmin0PplomaDrect2s9v8;erPorc2;posAse28t8;or05ress8;!ed;e,i03;!t;!entia01;at8;or;a0SducYpre0UstructiAtaCv8;a1So8;lv2;ve;me,nforth,rl8;in;a07e04hZlaXoFpm,rCu8;ba,cumb0i,r8s;io8l;si8;ty;avi4eek,i9o8;sEw;b,t0V;ast5lumbOmInDpe,rBst7unt8wboy;en8rym3;an8;ce;p8rect7;se;centraEneHsAt8;emp8inuous7;la6;c8eco,umpB;ioE;mAp8;atibTiTle0Wosi8;ti1;enta9u8;n5te;ry;us;ss8usi,w;ics;a9rist8;ia0Aoph0;l9n8rlot6;deli0gi4;et;ll8rtiorari;ul8;ar;l,meFnEpCrAshy,tf9ve8;rn;ish;ab8niXs1t0ve;as;itol,su8;le;al,n1;!r1;aJeHiGlEoCr9u8;dd0Cff,lk,tterf7;ew0idegroom,o8;ccoli,therhood,wse8;!r;hr,mbi4uld0w8x0;li4;e8u0E;ss2;eb0ngo;havior5in,nt;al;ckboBit,ndh,stAt8;ti4;ng;ard;ne;cc07d00ggressiveZlVmeUnLpJrFssassEtBugusAw8;ak8;en;ta;he9m,t8;ic;ns;ina6;m8ray;e8s;ni3;an;e,propriat8t;e7i1;aEders1nBt8;icipat2on8;io;ed;!ounce8uN;meL;on;rch8tomy;o,y;nd;eAl9p8r;ha;sta6;x,ynikov;!ly;ams,ditionCjaAmini8;st0;er;ce8;nt;al7;ly;ommoda6ura8;cy;te\",\n    \"5.080\": \"true¦0:8Q;1:94;2:9R;3:91;4:AS;5:A8;6:96;7:9Z;8:AN;9:AB;A:A2;B:AF;a9Ab8Cc76d69e5Sf5Kg5Bh4Wi4Gj4Ck47l40m3Hn34o30p21qu1Zr1Fs0HtYuVvPwHxGyDzC;ip,omb32;aCummy;nCrn;g,ke90;in,m00;aHeGhFiEoCrest1;nder6CrC;km6m;d9Onst4thho66;atsoev0enAMol3;ekd6Assex;iv0lki2qt,rra9Ss88tC;ersp3Ts4;aGeEiDoCp;l,r;enna,i,nce9Ov46;ga,ngeAErC;b,if4D;nuatu,u0K;nDpCrn,sh0;vo7ward32;consc4Hdercov0icoA1na07st75wi5Y;aSb,d,eOhJick1ml,oHrEuCwe39;ck,rC;r37t1;aCek;ct9Yg1Pil0nsCvel0;m0Xvesti7;ad,ll,rtillCyo4S;as;eEomps4rC;eaten9FiC;ll,ve;rCsaur75;apeut8Seaft0;helka,lepo9CmpErDxtC;b28ed;mi97ra9U;e8Worari3;ke32mCxi,yl9L;e,p4;a06e04h01i00lYmeXnowm6oWpUtLuGwCynthes0G;arEiCo9G;ftCss;!ne4U;aj,m;bDi7n5Mpra,rC;na5Spa4R;sCtit1;cribe,idC;ia7Ny;aHeGiFrCua8Wy20;iDucC;tur8;ct3ve;f1mula7;rn,wa8R;in,rCtistic8;k,tC;er,up;a,ecifCind1ott0;i7Gy;ar,cia1Pdi7Tme5Cre,vereign9;lt;ee5ToC;pe,w0;ckJsters;aDerlo5ZiCou40utt1y;ni2t9;ft,m;ek0g84ll0miot7SnCqu8Gri8t5V;!tenci2;dDlCn58shi1Qva77y6N;sa,u7;ne40;aSeGiFoDuCyers4;mo81naw4Gth;adsi6Mbot,dCm,tt18;!e7X;ght3m,nd,pe;aKcJdistric3NfIgul8Fmaind0new5IpHquest82sEtro,viC;se,talCv8;ize;cDembl8JiCta80;d4NgW;is5I;l46resentativ6P;err8ra68;k4onsPruit7M;!diDliC;st78za5;ly,ne3J;bbi,ciDj,ndCpp0tif2A;om3y;al,st;aCo2X;ke,lify;a03eZhWiUlRoNrEsych67uC;blis5Tpp15tCzz1;in,ti2;eIiHoC;b4XcEgrDnoun82sp0vC;id0;ammi2es2Z;essi2rastiC;na5;n2Xva42;decess7PmiCtz7Fvi25;eBse;k0litEpDrtr3JstpoAttCutiA;a65e5Z;co7Je;ic30;!aCea4Au4P;n0Mtin6DyC;s0Lwright;lCn43ta;gr7Nl5P;d,ilDoC;!enix,ol6tograph;ippiAlips;bb1e,g,rDtC;al,i7;cCform0u;h,y;c,d3Riseh,lHne,parizou,rEsDtC;h5Erol;si42te;aDtiC;al3es;ll6Snoia;!estini6;asMh5TkEmega,nw7Boohooohooo,rDssingt4ttom6verCwner10z;lap,see;ac1ie6Dna6C;ie;atMe1ViJoDuCxt,y;cle49n,s,tritionW;ah,isGrFtCuronnih54;ch,eC;bCd;ook;m6rC;is;co1netCpp1;eCy;en;h6ionaC;li5U;aOeMgi,iImHoEph,tv,uC;rmuBsCz;harraf,l4G;dDld,nroe,rCss,therfu00u6Ew;bidi9ph4N;e0Fifi60u1;!s;aEnerDsC;o,s3Pt;!al;mi;asure5McYdiCl4mor3Ataph68;ta5;dGkFnErCsh,thematici6;garCketpla6Ct;et;oa,t1;eNin;a2Gis4;aGettBiEoDuC;ke,mb0;ad5Kbu1c1Edgi2ud3y8;cenCeutena5Cme,nux,o46vesto33;ce,si2;k4Aurenti6yC;out;aFetchEg,ina22nCoi;iCot;ck0;up;nye,te;aDoC;!el,i2I;in38lape3DmaiCna,sp0;ca;bm,deOmmen1TnEp16rrDsC;aac,ol4H;eleva4Xita7;aKc32dividu0XfJhe06spiItFvC;aCent5G;de,lC;id;a5PeCimida7rig4M;llige4RrnC;sh0K;ra5;ormati26rin3S;bili9ugu0Q;as,ntiCol4D;c8fC;ica5;aLeJiFmEoCub,w,yacin2W;bhou1Clm3Iov0rriCu0Y;b3d;!mm;lDpcroft,sC;pan41se;arCda;io2B;ar9brCc14lp0redi1X;ew;iz,mFndgun,rDt0untCwthorA;!ed;ass46dCt,v53;co16en,waB;burg0p0;aJeHirGlad3oFrCulp;aCo6;m,ndpaC;re41;re,wn;affe,d1;e,nuiAoC;graph3Kl3O;llbla2Mmepl0Drni2Itew0D;aIbi,ca,eed1LiHloGoErDujiC;ta;ac5onti0;am,l3ssC;il;o12p;an4HxtuB;ith2Vlada,n0Hshion1Bt9x;ager3ditori8inste27k,lePmNnIquHstim36thi2Pv2NxC;cChib0Dplo1E;eEiDluC;si12;ti2;l,ssive3;ip;compaFh47rEtC;husia2RrC;eat,u39;i0Lon;ss;eraMis13otionC;al3;ctoCva5;raC;l,te;a04eTiJoErCu3Hvd;eCink1P;ad;le,mFnDwnC;gra1Qh0Z;aCkey,or;ld;a1Je,inic6;aJnt,sC;cFmEneyCpleaRtinguish34;laC;nd;ay;o,rC;etCiminato1Q;e,iona1P;blo,lCna;!e3M;ad0Uc,du3LfiJgrada5lawaBpenden3GsGtEvC;elopi2oC;n,uB;aTroC;it;ir06piDtiC;ny;se;ciCni2;enC;cy;mErt,soviLyC;tiC;me;!n2H;a0Dbi,h05i04l03mc,n02oJrFustoEyC;cloAstC;eiAic;dy;awl,eEit,ocodi1uC;el9nC;ch;epy,ma7st;lliTmKnFoErC;al,responC;di2;le1Trdi23;ceEjunc5seCtribut2I;queCrva5;nt3;iCp5;ve;eImGpC;arEliC;ca7menC;ta0N;ab1;eCission0unU;mo1An2E;baC;ck;si4;e,t;ari9eani2int4;a,ne;aIeesy,iFoDurchC;ill;ir,rC;us;!lCn,pot1;dCe;caBiV;l,mpagAncell1Tp;bRge,in,l3nto,pitalErCsterbridge,t0;d0KoCpent0ria0A;liA;ism;a04eZhi,iUlOoLrEs,uC;ckingh0MdC;!dhi0W;!aHeaFiEoDuC;no;th;be,ef3;ki2tC;hi2;ce,ke,zili6;ar,bbDil10ld3oC;b,ty;in;aGeFoDuC;sh;ckaCke;de;!nd;dd0;hFllioEoCrla,shop;graph0logi0EtechnC;ol09;ns;ar;aEhavio0HrDstsell0troth0M;er;ry;c4tlC;es;ckFdElDndaEr4siC;cs;d,lo4;ge;w12y12;a,b10c0Td0Lffini9g0Hi0Fl08m01nXpUrQsKuEvia5wCye;ful3;ly;dGr,stronesi6tC;iDomobi1;le;stM;an;io;hGsDylC;um;am,ociDumC;i2p5;atZ;am;bitEcCk;hipelago,tC;ic;ra7;athy,olDpC;liSrov8;ogy;alyEdy,noy0AtiqDyhC;ow;ue;st;aGusC;eDi2;ng;meC;nt;teCz4;ur;aniAbeGfrFlowZtC;ar,erC;na7;te;ed;rt;ne;!rcC;el;ed,iDriculturC;al,e;li9ta5;ti4;equateIheBministrFoEversC;e,i9;ty;rn;atC;or;re;!ly;cCquaintE;ident8laFordDuC;!stom;anC;ce;im;al;breviatEc,duDel,hi,oC;ard;ct;e,i4;on\",\n    \"5.159\": \"true¦0:C2;1:DF;2:DW;3:DE;4:BK;5:DN;6:C4;7:DC;8:DX;9:DK;A:D4;B:BV;C:BZ;D:B6;E:9H;aCYbBTc9Yd91e8Cf7Pg73h6Hi5Zj5Tk5Ol5Cm4Qn4Do43p2Xq2Ur20s0Ut0Cu05vZwLxKyGzoF;mTn2L;aGeFrs,un;a99llowstoBK;ar,hFn18;!oo;b22d;aPeOhMiImi,nt,oGreFud;ck,n9YstA3;lfga2o4XrF;ds,kshop,s9I;g,lGnF;d0k;de,he8IlF;ing4y;a70ereFistleblow0;by;bBQstminBQ;itstaff,rGsFtch6yho3D;nt,p;faBy;aJenIiGoF;dC3odoo;br5QcAVgoroAWlFnd0Rol6Nvo;!la6;t,us;cuAAmpiBniDIr,se;lt4VnGpsF;ca8iBR;believCWdHeGifi5juDlFseDNveCL;ea9Mike4;mpl3Axpect5;erFo;grad2VstandCS;aUc,eThPiNm,oMrGuFwelf81ys1;n,rbiAO;aJeIiHoGuF;dCff8m68;t,ubl5;bAlC3nam82pp6;law4Xn7Q;de03g5Enscrip3;by,lst2Zuc70x6;bet62nFt34;k0t;an5QereHiGorFrivi2;n,ou2C;nk0rD;of,up1;chnologC4ll6ndernA9ymanak;cFk6o,pa,r,x3J;!tC2;a0Hc0Ee0Bh08i06k04l02m01nickeACoZpVqTtKuIwGyF;m3KrBF;aFeeteD;mp,n0R;bst35lim5PpFrpri9Ispic9Y;erviEpleCF;aKeJiIoHrGuF;dios,ff5nB7;ange4eam3L;mp,ut;l,t8G;rBOv6V;ll,tF;eFic;sm5F;mi,uF;a1KirrA7;aAMecGotliBQrinF;gs;ifFt4E;ica3;a01fFmmerfe64ph6LrB9;ia,tCE;a5Cell5il;aFim,p;b,y;atFet80i92yscrap0;e,i2;!eCnFp;gul35ha;aGippi2ortaCrFu19;ed,iek;!dy,kespeaBrp4;att8cGle07mFo6Spa8Cvente6L;!i;!ond4ret4;aFhmidt,iss8Brap4E;rabae92tterF;!ed;!ge,lGmo4QnskrBKtF;i0Vurdays;ly,o1;a06eUhSiNjb,oHrAIss,uF;e,lemaFm,nn6;ki2;blJcIg6Sma89o9Ip0sHtGuFv0;ge,t0;aBIisser5V;es,t0;!k0;ox;bb1cHdGsFval9;ky;dBJicul4V;hFk0J;ar27ly;oFythm;de,n5R;aPbeOcMdesign,e59fJgAjoi57liev5mi6Xn8YspHtaGveFynol24;la3rt;il0lANrd5;eFons6M;ct6L;erend7TinGreshF;!i2;anB5e;!eF;iv0pt7G;kah,lli1;ct7EgeB2;b8DcFke,ng0tt8;co1k3V;at1YuF;aFeso,iAYo;ck,rterback,sh;a0Ee06h05i01lZoSrGuF;d4Flitz0nct2Prch9Ks5M;aPeKiJoF;cureAEgrHlong5mGph3Osecut75tFud4vid5;agoniDoty2V;!ethe7V;amm0es74;c93mit61;dIsGventiF;on,ve;id9Isi2tFump3;ig7Oo;atorMic3;de6Kwn;!d,iElite4nKop,pHrFstuB;sche,tF;ab8ugA;p6ulaF;riF;ze;!y;aFum;tt0;cHerBge1mp,tF;if4YtsburF;gh;!k8O;el2Zilip28;ar,ck,eLnnifeath0rGssimiDtroF;c,l;fHiGpetFvas5E;ua7;l,od6X;ormi2uF;me;k,l,p;ct,lJpa,rHsFt,ula,yro1D;!tF;or,ry;aFtisans56;chu7ke2N;esYm0;cLi4l,mis64n32pKrIuHverF;boa7EjFse8E;oy;!tfie3D;dFgasm,ien3M;er4inari4;erationApo67t8M;cuGeFtop6N;an1M;pi5rr8N;aPeOhl,iLoHrc,sGuF;!cleoti7Jrse9;!pa;i4Vok,rm,str8CtHvF;a,elF;la,ty;or6Dre;bb8cFd,ghtfa0Qke;ki,oF;ti6F;e0DtherlanXwt1;rFtiona8X;ra7;aVcTd,eOhc,iJoHp,t,uFysoB;ni4TrFst0;chis1der0m4Ip3S;c27mFna,r1s78;ent5Kma;c,lIm12nFst0;dGis02neapolFus;is;f3Ls1Q;!waukee;aIin,lHme,nGtaF;bol0W;a8Qta8J;!bour5Yee,lsto1Qo35;ningf3Ftba06;c,donalF;ds;gnific7SnIrHsFtt,z1;cuFturba7;li5S;!ginAia,vello5Nx;a,go,ia,or,uscri4O;aNeLiHk,ooko5DuFynd1;ggaCnFstB;ar;bHd,fGmFn8Fste6Ttiga3v6Mz;b,p;eboNti2;e4Lrari15;ban1mona6EtF;te5M;nte35pErGsag73uFws;ra;!ry;ais0eHhilafGiFr,uwa7Ty8;ll6sE;at;nFv6;!t,ya;amJeIiHoGuF;dge7Ki46;se,yful4;ll;ffers1r9w;aic0Pie;cq,dol,f1Gl,mTnHowa,p,q,roGsF;bn,le;ny;appropr2RcOdMeqLfJherit7Pjec3l0Xma7sIteFvolv5;graGrF;na1Sv2U;l,ti1;tall0ubord2V;ant9erFie1C;!i3X;ua7C;efini7iFulC;e,ffere7Igeno4Mrect4;inerFonvenie7H;at3S;agina9pF;ecc6OortF;ant4ed;aUeNiLoIumHvGyF;pe;ic;b0id;g,mGnFspita70;da,g;aCici5AosexuA;ghl0Bnd0tFv;her07l0;aJhIigh60rGsF;!i12;a0RbF;e5LloB;!e;l0rtF;ed,i4;ck,hIin,llHmilt1nGrF;dcoBp0;ks;uc21w08;!ahahaF;!ha;aUeRiPlMoJrGuFyp28;iccio01tt0;aGeF;atn3Ugo9;c3Pph;blGdEgh,ldmFver50;an;et;e4FiGoF;o54ssa9;mpEt27;bs1llet7mmiFn;ck;laGnoa,oF;graph5Erg4T;to;mInesHrFuC;lFry;and;ha;b22eF;r,s;aZdr,eXiSlPoKrIuF;ck0ng37riGseF;li;ous4;!eewFu1A;ay;g,lIotpri5YrF;eGgiven34mula7tF;hwi0Gr33;!moD;di2;ap,oGufF;fy;a5Luri1S;ddl0erce4lInanci2Or,sHtF;ti2zgeraF;ld;hi2;et,t0D;el6llows0YnF;ci2;a,cul5Cde,iFjita,lc1mi2RrtheDv;nt0;at6csta1Od4Cglint1ighteen02lYmSnQquiPrNsco42vLxFyebr3J;cHecu3on,plFtremi59;icit4oiF;ta3;epGuF;r1Qs;tion29;aFentuA;!de;ic,nFweiterung59;ie;pp5ty;cFdorEhanc5s07thusiaD;loEycloped3L;bHer23o,paF;naFtT;da;aGoF;dy;lm;eFiza;ctronics,ga4WvF;enF;th;!th;a06d,eViKoHrGtm,uAyF;nas4Kslex38;ainaCiv6y0;ck,min4Nom,pe,rotGubtfFwnvo7;ul;hy;aNce,fferentMgestYl,men10sF;aJcGguDmFp2Htille9;al,ou4K;a28eGoF;mfo33uraC;rn;bleFrm;!d;ia7;logFmet0;ue;alersOcMfeVgra2FmKnIpHsir5tGvFy;iEo3;en3;loy3Tosi3rKu41;iEomFse,t1;ina3;ean0HonF;st0E;isFlara07;ive;hip;iIrfHs,tF;abaEed;se;ur;sy;a0Wbc,emete9h0Ni0Ll0Hnn,oPpi,rIuGyliF;nd0;bFpcake;!s;aKeJiteri1oHuGyinF;!g;mb8soe;cieBuF;ch;a29pe;ck0ppy;cai0Sd,l04mZnMol0rHstco,uF;nselFpFri0;li2;niIrFy;eFidS;c3spondenF;ce,t;sh;cesQdNfKsistenJtFverQ;eGradicF;to9;mFn3;pt;cy;iFuT;dentia2XguFne;ra3;eGuctF;or;mn5nsa3;si1;munGpF;lexi2Rul2F;e,icaF;b8tioF;ns;iseFlaterAomb1B;um;aHeGimbi2oF;si2;ar2Oft;m,rk;nFrcuYviliz5;cinnati,nam1;aLeHiGoFurchya0B;pp0;bi,l4;eseburg0mGstnF;ut;icF;al4;llenFmp,rg0t29uc0;gi2;esaQlOnMp24rJshi0talyDuF;ldr1tFve9;ioF;us;st;boGelFgo,vi2;ess;ne;celFon;la3;amaFedon0K;ri;rs;a09eZiToNrHuF;iZm,rFzz;ma,n6;aJeakdIiHoF;ad4n7w;ly;dAt;own;nd1z0R;lJnIoHre,se,ulevaGwF;el;rd;st0ze;apar7di2y;st0;bl0Ncyc8nCochem0NrGzarB;re;minghGthpF;la1H;am;ge;aMeKheaJnjam6stHwiF;ld0;er;ow;in;de;p,tF;!hov19;chFm;es;byl1cLff8ghdad,o,rHsGzooF;ka;h,il;gaiHnGrF;el,y;ey;ni2;kGterF;ia;up;b0Sc0Id0Aerospa0Uffil07g04iyo,l02mZnTppointmRrPsLtJuHvFw;eFoid0S;rt;s,tonoF;my;lFtach0B;as;pirHsGtrolF;ogy;er3ign07;a3e;gentiFtwork;na;enF;ts;alHdrGglo,imat5noyi2ot,s,vF;il;oid;og,ytF;icA;al;bFnes03p8;er,iF;en07;an,e,iFlamistakeo;ght;grava7reeF;ab8;te;ia3;ti1;on;a,hd,opt5vF;anIerGiF;so9;sa9tiseH;ry;ceFi;meT;ed;cGe,he,quFronym;it;essib8oF;mmodaIuntF;abiF;liF;ty;ti2;ng;le;bJerdeIit,seHundF;anF;ce;nt;en;ey,ie\",\n    \"5.256\": \"true¦0:H9;1:IK;2:KA;3:K2;4:K1;5:JF;6:KG;7:KF;8:K4;9:KL;A:KD;B:KE;C:I4;D:JM;E:GS;F:BR;G:KJ;H:JX;I:II;aI9bGPcEIdDCeCDfBPgAWh9Wi90j8Pk8Hl7Rm6Un6Go64p4Sq4Nr3Ss1Rt0Uu0Cv02wLyKzJ;elJMoologD3um,zz;ay,er,oungeItd;aTb,eRhPiMll,oJrong5Rto,wi;ld,n,oKrJ;kIFst;hI2lf;dCTkipedIWldKnterJrt,th0;bothJ7lic4T;erFNlJY;a,eelchair,iJ;chHFm,rl,sk0;bJdEDe,nGW;inGIkinz;g7iv3llNrLsKtJ;ch0erfa56;abi,h2S;dJDe,mJ;er,th;aJ2pap0;aReOiKoJrs,ulAX;gHIus;!al,bDKcLewpoiAii,rtuKtJviJ8;a,ro;al4oH;eroy,tu9;al,danJQlKrJx;offentlicBAtCD;cFVoHT;!h3lESrsiCst4;fo,i,kr73mZnMpriLrKsJtmoI;n,s;du,iCY;gB4si2;avail98cUdQgrate1AiPkiIUloJ2pOrelFOsLtJ;ime4ouchabJ;iC2le;topp95uJ;ccessfulJre;!ly;a7IleasaA;!qI4v;eJr7A;fiErJ;dog,lyi2taBEwJ;ay,eFMhe13;he7CovGO;brelCAmm,piH8;a0Be07hYiXl,oTpc,rJurkiCXym;aPeNiMoKuJ;mpFAro;oI2pe,uJ;blXpe;cky,f1;asur0mJ;endoHor;nsKumaJvolIWy;!tAP;co,lDY;mLnEogFPrJsFurnEK;stF7tJ;ilBWoiF;my,w;dy,er,ght4mo,t;eOiNoMrJs,t,waBYyG0;eKoJ;nELtt1wi2;esoFX;roughfaGNught0C;oeF4rsCst1;oKrJ;apeut95eaboEA;logi5rem;amma8dF7lKnderloGJrrJx2Z;aGIifD;!co,eJ;gra2Iscope;blet9Jd,iLkKmJste8K;!il,pN;!eov0;l53waneF;a1Gc1Be14f,h0Vi0Tk0Rl0Pmoke0On0Mo0Kp0AquaC0s,tWuQwLyJ;mbolA0ntJstemGM;ax;ap,eLimKoJ;on,rdm0J;mi2suHH;a8WeJll;pi2tDG;bNd5ffiH4ggest3icid9lliv5mMndays,pKsJv;penFtain3;erJpo74;b,heE3;mar9PptGZ;cont77poeIIsecB;aSd,eRiQoOrJurEL;aLeJ;ssJw;ful;iJp,y;ghtH2t;ckhoJve;lm;ck0gASle,puFX;adfaIphan15ri1vens7;gKnlDAp1rJtioBP;craft,t1;gerJnaA;!i2;ecRhQiMlendCKoKrJ;awl,u2;ntanHBuJ;s,t;lLnJr9;aJe;ch,l;l,t;er9Vinx;iC0k,uHF;g32lJs,w,x;idariCv3;aAQeJiff;ak0;r,y;end0iJm;ck,ppe6;eJi,yrockD6;pt9Ltc6W;dewF4gnificFOle46mJncere4;oEpl5Qulat1H;aQePiOoLrJ;i1YuJ;b,g;oBBpKrtcoG9wJ;ro1Z;keep0p0;a,ny,ok,pwre4UrlCF;ar,en;kespeare5ll9BmpEEng4Rr7war9T;aNbasA2cy,duFQmiMnKsaDXv2RxJ;t7uBE;sJtiGX;itiviCor;na6ramCL;mJrs;!an;aLene6hizophr6Ri,oKruJulp7F;b,tiFZ;ld,ts;ndinavi5rJ;!ecr8Z;b,lom7m0Inctua6pKrJtu2Lw;ah,banC7;!phiEA;a0Abi,eSiQjd,ly,oMuJ;de4mKsJ;h3se19tD;b91or;dLna6AsKtJutine4;a6i;alERy;eo,riguez;c5dd1g,nk,pp1tchJ;ie;ap0cWdVfUgSiRlPm,nNpLsKunit3vJx;iew0o81;entG8idDHourcBTpect18tor3ulAE;aJetiDRorADti1;iDVy;ew3oJ;!unEVvaB;!ay,evEHiJo8Pucta2Z;a89cs,ve;mburFnveA;aDQiJulAJ;meAst6;erEBraDVus9;ditAOne3P;iLoJruit0yc8G;mmend3nsJuAve6C;ideraBtruDR;eFZpieA;m31ndolKpJsh,t49viEzAJ;i45tAI;ph;aiEIuJ;aKinJot3;oa;d,iAk0rteJsi;r4t;a0Lbs,e0Gh0Di0Al05mc,oZrNsLuJvp,yrotechAD;bliDAnJ;e,iD2;us,ychJ;!ic;acSePiOoJ;cessMdigLfit4QjecKmin8Gpor0TsJudh7verb;ecu8titu8;ti1;ioH;i7or;cy,metiC7;ach0cKdiseaFexis9Ema5VsJtri9;i8Iti92;i9SluGurs9X;!tiJ;c9Kse;aBFiNlLppy,rKsJ;itDYt9;celaCRtfolio;ar,enEMlute5SyJ;nesi5peptiG;nt3soB4;aLuJ;mJra74;b0e;it,nJst0teau,us36;ck,n3s;!a9LcKgESlgrima8NnbaJ;ll;as6NnD;!antKenomen9oJ;sphoryEJtograp49;om;aceMdophi1ep3ki2nLpperoUrJs57trole4A;iJpe4Mson3Xt3K;odDtone48;di2et7H;ful4;bCWcQdd1el78kistaPla8nz0pu5rNsLtJwn;hJie1Cna;og4EwC9;sJtrami;coGer;alyJcABmes5ticipaA;sA1ze;ni;ed,ifiI;bseScd,fficeDNm0Enwar3SpQrLsa71t,utKverJxl9L;cook3doEheaAYp6J;liEwaAX;dMeLganizaKiJthodox;e4Issa;tion9;!g7;e4InCF;a,hthalmoloJpn;gy;rvJsF;ab1er;aVbc,c,eSiMj,oKp,uJxE;de,mb;bi62nvio7Wob,rthwesteStJ;a6epCZ;cLnJ;eteJtenAS;en5W;hJk9O;olsJt;!on;bras17ga8hru,p9rd,st1ur7wJ;boJsteCR;rn;pkB9tional4AvigaB;a08c07e03iYmorpg,oNps,sn,tg,uJvp;cHffB7ltiLrKsJtaA;s9Ftapha;al,do17;p4taS;an,bi5LdSis40lluRnNoMrLsc5OtKuntaJ;inoH;h,oro62to;occo,ta5I;nl4Fr;aLe1JgKsJtaDI;o7troH;er,ol;rc2Qs92;sk;er7Ti;dMme,nLrvi6HsKtiJ;ga8;!chief,solong3Kunderst9I;aj,dblowi2imiFuscu1;dASweI;aCdiLla1MmKrce6PsJte7O;h,opotamB5;orand2Jph8L;aBcin9;d,h;car7gnificeOnMrKsterpieBJtJxim48ze;!ern9tre91uAG;ath7bleheBWgariCCiJk0ve3S;lyn,n0ti9N;age20che8ViJ;!fes4BpuCI;nt4;a03cbo,eXiSoMs,td,uKyJ;!in,net8r2U;cy,mJnche7re,xembourg;brid6Dp;bbyiIft,ma,nMoLrJuiFyalC;ds,rJ;aiE;pho1se4;eli7FgJ;fell4Nstan8Vti9A;bLfesp5ghtKneJpsti03st3ye;ar,r;en,s;erJya;a8tarian2Y;aNgLiKnJonar97te,vera61;n7o9Use,t5E;c3Bsu9T;enda6iJ;sA0t;gu7Mvi2;ck9MgMl9EnLra,st4tKureJva,zi72;a8n;ch,ino;ka;esF;aOeLfc,itKnights,oJrupski,u87;sovo,un;ab,e;epi2l3PndriKshubJyb8I;hai;ck;bob,ha,l,po6GtJ;hariEie;aQd,ePharkhaALiOk,oLuJ;ggl0liJstifi0K;e,o;an,bs,g,hann,nath5sJ;hJt1;!i;hANo;ffr6Tst0;cJin,smiE;in1ZobJ;!iA1;c0Dde5Sh26k0Clb,m07nLps,rKsraeliJv5;!t6W;k,oquo70responsMvi2;c01dXfVgenuiChabAAjUorganDsRteOvJ;aLincKolunJ;ta6;ib1;liJri98;diC;nsKrJ;conne8ZveE;ify;tKurJ;er,geA;in8Vrume1C;e8Uunc8H;lJuF;a8ecBux;iKoJ;nes92;cJgnaAre8P;aBt;ap02epBoKreaJ;si2;nsisteArrect4;agina87i3RmMpJ;ati3OlJroper4;iJor;caB;ineA;ea,ke;!onD;a06e02iWk,oMuKyJ;gieEmn,pothet2P;mb4rd1sJ;h,t1;l7YmQnMpLrKsJur4wl;e,ta46;!sem5;dod6Ne04;!eLoJ;rJurJ;ab1;!ymo7;eJy;own0r,t41;erarcNghLlKppJstor2Sth0;ie,o;ls,t;lanJne69;ds;hy;aven4eLfClJr0D;iJl0;um;d,h86;biTgSlQmPnOo,rLsKvJz5R;a,in,oc;s1ty;a5Zden3mKoJp;ld;le5X;d3ge,k;l5Fst0;lucinogJt;enD;!ue;tu9;a06e02hZigg1lVnocc00oSrMuJwh;aJjara67;camo1ntanamo,rJ;anCnieri;aLeJiev3owl3umb1;aJe3H;se,teI;du9nKphJ;ics;dpa,i8;ldfi2Lrg8Qtting86urm50vernJ;an7WmeJ;nt9;aLitteKoJ;om,r7B;ri2;nd,sg1B;etKomesJ;hi;to;l,nKrm,sJtaw6Q;tu6K;eJo5S;r3Js4Jt1J;bri4Rga,i4lLmbleKndhJsp3;ism;!r;axy,ifr7lJt;op;a05di,e04iZj7GlVm,oRrNuJ;nctionKrJ;nis3Ky;aJi2;liCry;agi1eLiJos2Oustra2O;tt0voJ;loH;a07ezi2igMnchm5;rtJunde7T;nJunate4;igJ;ht;aLea,iKoJuoropho5Z;r1Bwe7O;msy,nt,pp0;mi2re,sk;br3Der6XnJsh0;alLeJ;ly,sF;se;ize;eb1ud;m,r74ulC;ar0Gb0Fc0Ed0Cisenh0Bl03m02nZrYsUtQvOxJ;agge0WpJtin5V;eKloJressw5R;raBsi82;di8l,rimenJ;taB;anJoL;!s;hKobicoJ;ke;anJern3J;!ol;cLpresKtJ;!h0;so;!a7F;ica,neIu1R;cKlighten7Irich7Isla7OtireCvJzym5K;i23y;haAla7MoG;e6ig0Dphas35;bPeNf,iJla,v34;giKsabeJ;th;biJ;liC;ctrJna;ic9;ow;ow0;dJgevil1is7mu63s,uc2X;ie,y;!lectD;ay,o6A;nest4phoE;a0Le05iUoSpc,qs,rOuLwelKyJ;l5namDsfuncB;li2;nKpliJ;ca8;c5o;aJea6;cuKstJ;ic18;la;da,gJn70orw4Kppl0rm,ughn25w6;ma;arrhea,cSetiRff,geIligQoxiGplom4QrePsLvJy;eJil;rt;advanta0GcKmant1paJrega3Csipa8tr0Z;ra8;laim0rimiJ;na8;!c41;en57;ti5;ta8;bXcWfTlRmQnv0odoPpNrLsJt0utsche,vot4Q;mo5AperatJ;e4i7;aJby;il;enJre2I;den3J;raA;an2OoliK;e8iJ;sh;eJi4Goe,y;ctJr;!i66;ay,eiv3is4V;it,ra;inClKn55rJybreak;es3Qr4W;e,it;a1Hbs,c,dp,e1Dh12i0Zl0Ung,oTrNs,uKyJze26;a,b0;dd1lJn1Yrfew;!iJ;na6;aMeLiJowdfu4Numb;nJpp1;ge;ep0sceA;ckdJmp3wl0;own;a0Hh4Jincide0Gl0Bm06nUoSpenhag4JrruRsmoQuMvJwa2Ayo8;aKeJ;!naA;leA;nLrJ;ag4YtJ;n0Qs;ti2;!polit5;pt;kJl0BrdinZ;book,ie;ceGdesce45fRgesBr4DsMtKvJ;eyXinci2;ai1Bemp50inu9rJ;acB;eLoKpicuous4titutionJ;al4;lida8rt;cu2KrvJ;ato6;eJiG;cBsJ;si7;!et,fort2YmKpJ;a14rehe3S;entJo3H;atJ;or;!lectiMoKumJ;niI;nJur3;el,i9;b1ve4;!n3C;!cJti2;hi2;aMeopatra,inicLoJump;ak,ckwork,seJ;ne0Q;al,s;ir,ra,sp3;nd0rrhKtrJ;ic,us;os01;aQeLilKronic1uJ;!bby;de,e5;ckLdd08etah,nKwJ;!i2y;ey;i2oJ;ut;h3OlKn,rJuffeur;!acteri3AgesheV;andritsan2Xkb0Qleng0;le6meAnsorship,rJ;tKvantJ;es;ainCifi3;!dPiOlMnKrJsa,tara1S;l2Rniv9tT;a6did,nabJoe,terbu6;is;culJga6orD;at3;ro;et;a0Pb0Occ,e0Ghar0Fi09l07o02rRta,uJ;chan5nOrMsKtJyi2;te6;hJinessm5t1;el;glJt7;ar;dJk0;!le;aRePiMoJy5;adcaKcaGom,wJ;ni2;st0;efi2ghtJ;ly,neJ;ss;ak0eJ;ch;d,g,nJve6;dy;arMlKmb0Xno,oki2rEurb7yco0A;ne;lywJt;ood;di2;oJueber6;c,g,om,w0N;d1WllKochemist6sJ;cu1Wexu9;bKiJ;aKng;oaJ;rd;ti;aOcaNfrie1NlKneficiaJrnste0FtC;l,ry;gi5iJ;ev0;er;me;d,rJti2;er,i2;do;al,ckseat,d9e,hra06ltimo05mbUnRrMsLtJ;es,htub,tJ;er3;em5s;bKcelo2MroniJ;tt;arKecJie;ue;a,i5;dKkruptJ;cy;it,o;oo;a2Db28c1Ud1Jf1Fg1Ah18iGl0Xm0Nn0Jp0DrYsWtQuLve6wKyJ;!odhya;e,kward4w;!cLf,str09thoriJ;taJz3;ti24;h,kJ;la0U;roMtJ;aKiJ;re;in;ciC;ty;hr0Aki2pectibHsimiNtrJ;ay;abWbitraUcRe1XguQiNomPsenaMtiJ;cuKfaJstD;ct;la8;l,ult;stoJthmetD;crJt1;atD;ab4;aGhJ;!aeologiIer;st;b1l,ry;le;ia;olNpJr7t4;all3liLointKreJt;ciaBntiX;ee;anV;lo;alogoHdreLonymoHtJ;icJo09;ipaByclonD;!u,ws;aQbiNericKmuniBsterdJ;am;aKorJ;ps;ns;anKgJ;uoH;ce;nJzing4;da;aQbePhacOlNmoMsLterJ;aBnatJ;ive4;os;nd;ah,eg07ot;en;it;rKsk5;an;mi2;em,i,medabJ;ad;a,gregatMnoKoJ;ny;stD;ic;e,i7;fKs,terlJ;ife;!aiJect3;rs;d3miPvJ;aKeJ;nt,rse4;iLntagJ;eoH;us;ta;n,ttJ;ed4;ly;ed;cLhi2quKu8;te;aiAisiB;esso6oKumuJ;laB;mLuntJ;aAi2;ng;modaBpaniJ;meA;nt;ti7;on;ry;domLoGusiJ;ve;de;an,in9;al;na\"\n  };\n\n  const tf = function (view, opts = {}) {\n    let counts = {};\n    let form = opts.form || 'root';\n    view.docs.forEach(terms => {\n      terms.forEach(term => {\n        let str = term[form] || term.implicit || term.normal;\n        if (str) {\n          counts[str] = counts[str] || 0;\n          counts[str] += 1;\n        }\n      });\n    });\n    return counts\n  };\n  var tf$1 = tf;\n\n  const idf = function (view, opts = {}) {\n    let counts = {};\n    let total = 0;\n    let form = opts.form || 'root';\n    view.docs.forEach(terms => {\n      terms.forEach(term => {\n        let str = term[form] || term.implicit || term.normal;\n        if (str) {\n          counts[str] = counts[str] || 0;\n          counts[str] += 1;\n          total += 1;\n        }\n      });\n    });\n\n    counts = Object.entries(counts);\n    counts = counts.reduce((h, a) => {\n      if (opts.min && a[1] < opts.min) {\n        return h\n      }\n      // IDF = (Total number of documents) / (total number of documents containing the keyword)\n      let num = Math.log10(total / a[1]);\n      //force between 0-1\n      // num = num / max\n      // num = Math.round(num * 1000) / 1000 // round to 2 digits\n      h[a[0]] = num.toFixed(3);\n      return h\n    }, {});\n    return counts\n  };\n  var idf$1 = idf;\n\n  const BASE = 36;\n  const seq = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\n  const cache = seq.split('').reduce(function (h, c, i) {\n    h[c] = i;\n    return h\n  }, {});\n\n  // 0, 1, 2, ..., A, B, C, ..., 00, 01, ... AA, AB, AC, ..., AAA, AAB, ...\n  const toAlphaCode = function (n) {\n    if (seq[n] !== undefined) {\n      return seq[n]\n    }\n    let places = 1;\n    let range = BASE;\n    let s = '';\n    for (; n >= range; n -= range, places++, range *= BASE) {}\n    while (places--) {\n      const d = n % BASE;\n      s = String.fromCharCode((d < 10 ? 48 : 55) + d) + s;\n      n = (n - d) / BASE;\n    }\n    return s\n  };\n\n  const fromAlphaCode = function (s) {\n    if (cache[s] !== undefined) {\n      return cache[s]\n    }\n    let n = 0;\n    let places = 1;\n    let range = BASE;\n    let pow = 1;\n    for (; places < s.length; n += range, places++, range *= BASE) {}\n    for (let i = s.length - 1; i >= 0; i--, pow *= BASE) {\n      let d = s.charCodeAt(i) - 48;\n      if (d > 10) {\n        d -= 7;\n      }\n      n += d * pow;\n    }\n    return n\n  };\n\n  var encoding = {\n    toAlphaCode,\n    fromAlphaCode\n  };\n\n  const symbols = function (t) {\n    //... process these lines\n    const reSymbol = new RegExp('([0-9A-Z]+):([0-9A-Z]+)');\n    for (let i = 0; i < t.nodes.length; i++) {\n      const m = reSymbol.exec(t.nodes[i]);\n      if (!m) {\n        t.symCount = i;\n        break\n      }\n      t.syms[encoding.fromAlphaCode(m[1])] = encoding.fromAlphaCode(m[2]);\n    }\n    //remove from main node list\n    t.nodes = t.nodes.slice(t.symCount, t.nodes.length);\n  };\n  var parseSymbols = symbols;\n\n  // References are either absolute (symbol) or relative (1 - based)\n  const indexFromRef = function (trie, ref, index) {\n    const dnode = encoding.fromAlphaCode(ref);\n    if (dnode < trie.symCount) {\n      return trie.syms[dnode]\n    }\n    return index + dnode + 1 - trie.symCount\n  };\n\n  const toArray = function (trie) {\n    const all = [];\n    const crawl = (index, pref) => {\n      let node = trie.nodes[index];\n      if (node[0] === '!') {\n        all.push(pref);\n        node = node.slice(1); //ok, we tried. remove it.\n      }\n      const matches = node.split(/([A-Z0-9,]+)/g);\n      for (let i = 0; i < matches.length; i += 2) {\n        const str = matches[i];\n        const ref = matches[i + 1];\n        if (!str) {\n          continue\n        }\n        const have = pref + str;\n        //branch's end\n        if (ref === ',' || ref === undefined) {\n          all.push(have);\n          continue\n        }\n        const newIndex = indexFromRef(trie, ref, index);\n        crawl(newIndex, have);\n      }\n    };\n    crawl(0, '');\n    return all\n  };\n\n  //PackedTrie - Trie traversal of the Trie packed-string representation.\n  const unpack$3 = function (str) {\n    const trie = {\n      nodes: str.split(';'),\n      syms: [],\n      symCount: 0\n    };\n    //process symbols, if they have them\n    if (str.match(':')) {\n      parseSymbols(trie);\n    }\n    return toArray(trie)\n  };\n\n  var traverse = unpack$3;\n\n  const unpack$1 = function (str) {\n    if (!str) {\n      return {}\n    }\n    //turn the weird string into a key-value object again\n    const obj = str.split('|').reduce((h, s) => {\n      const arr = s.split('¦');\n      h[arr[0]] = arr[1];\n      return h\n    }, {});\n    const all = {};\n    Object.keys(obj).forEach(function (cat) {\n      const arr = traverse(obj[cat]);\n      //special case, for botched-boolean\n      if (cat === 'true') {\n        cat = true;\n      }\n      for (let i = 0; i < arr.length; i++) {\n        const k = arr[i];\n        if (all.hasOwnProperty(k) === true) {\n          if (Array.isArray(all[k]) === false) {\n            all[k] = [all[k], cat];\n          } else {\n            all[k].push(cat);\n          }\n        } else {\n          all[k] = cat;\n        }\n      }\n    });\n    return all\n  };\n\n  var unpack$2 = unpack$1;\n\n  const unzip = function (model) {\n    let all = {};\n    Object.keys(model).forEach(k => {\n      model[k] = unpack$2(model[k]);\n      let num = Number(k);\n      Object.keys(model[k]).forEach(w => {\n        all[w] = num;\n      });\n    });\n    return all\n  };\n  var unpack = unzip;\n\n  const model = unpack(pcked);\n  let keys = Object.keys(model);\n  const max = model[keys[keys.length - 1]] * 1.1;\n  // console.log(Object.keys(model).length.toLocaleString())\n  // console.log(model.sway)\n\n  const addMethods = function (View) {\n\n    View.prototype.tfidf = function (opts = {}, mod) {\n      // term frequency\n      let counts = tf$1(this, opts);\n      let freqs = Object.entries(counts);\n      freqs = freqs.map(a => {\n        let [w, count] = a;\n        // tfidf = tf * idf\n        let tfidf = count * (model[w] || max);\n        // round it 2 decimals\n        tfidf = Math.round(tfidf * 100) / 100;\n        a[1] = tfidf;\n        return a\n      });\n\n      return freqs.sort((a, b) => {\n        if (a[1] > b[1]) {\n          return -1\n        } else if (a[1] < b[1]) {\n          return 1\n        }\n        return 0\n      })\n    };\n\n    View.prototype.buildIDF = idf$1;\n  };\n  var tfidf = addMethods;\n\n  const compute = {\n    // this is just the same thing\n    // but written to Term objects\n    tfidf: (view) => {\n      let res = view.tfidf();\n      res = res.reduce((h, a) => {\n        h[a[0]] = a[1];\n        return h\n      }, {});\n      view.docs.forEach(terms => {\n        terms.forEach(term => {\n          term.tfidf = res[term.root || term.implicit || term.normal] || 0;\n        });\n      });\n    }\n  };\n  var compute$1 = compute;\n\n  const api = function (View) {\n    ngram(View);\n    tfidf(View);\n  };\n\n  var plugin = {\n    compute: compute$1,\n    api\n  };\n\n  return plugin;\n\n}));\n"
  },
  {
    "path": "plugins/stats/builds/compromise-stats.mjs",
    "content": "const e=4,t=1,i=function(e,t){let i={};return e.forEach((e=>{for(let r=0;r<e.length;r+=1){let a=e.slice(r,r+t);if(a.length===t){let e=a.join(\" \");i.hasOwnProperty(e)?i[e].count+=1:i[e]={size:t,count:1}}}})),Object.keys(i).map((e=>(i[e].normal=e,i[e])))};var r=function(r,a){a.size&&(a.min=a.size,a.max=a.size);let n=a.max||e,o=[];for(let e=a.min||t;e<=n;e+=1)o=o.concat(i(r,e));return o};const a=4,n=1,o=function(e,t){let i={};return e.forEach((e=>{for(let r=0;r<=e.length;r+=1){let a=e.slice(0,r);if(a.length===t){let e=a.join(\" \");i.hasOwnProperty(e)?i[e].count+=1:i[e]={size:t,count:1}}}})),Object.keys(i).map((e=>(i[e].normal=e,i[e])))};var s=function(e,t){t.size&&(t.min=t.size,t.max=t.size);let i=t.max||a,r=[];for(let a=t.min||n;a<=i;a++)r=r.concat(o(e,a));return r};const l=4,u=1,c=function(e,t){let i={};return e.forEach((e=>{let r=e.length;for(let a=0;a<=e.length;a+=1){let n=e.slice(r-a,r);if(n.length===t){let e=n.join(\" \");i.hasOwnProperty(e)?i[e].count+=1:i[e]={size:t,count:1}}}})),Object.keys(i).map((e=>(i[e].normal=e,i[e])))};var d=function(e,t){t.size&&(t.min=t.size,t.max=t.size);let i=t.max||l,r=[];for(let a=t.min||u;a<=i;a++)r=r.concat(c(e,a));return r};var m=function(e){return e.json({text:!1}).map((e=>e.terms.map((e=>e.normal))))};var p=function(e){return e=e.sort(((e,t)=>e.count>t.count?-1:e.count<t.count?1:e.size>t.size?-1:e.size<t.size?1:0))};var h=function(e){e.prototype.ngrams=function(e){let t=m(this),i=r(t,e||{});return i=p(i),i},e.prototype.nGrams=e.prototype.ngrams,e.prototype.ngram=e.prototype.ngrams,e.prototype.unigrams=function(e){let t=r(m(this),{max:1,min:1});return t=p(t),\"number\"==typeof e&&(t=t[e]),t},e.prototype.uniGrams=e.prototype.unigrams,e.prototype.bigrams=function(e){let t=r(m(this),{max:2,min:2});return t=p(t),\"number\"==typeof e&&(t=t[e]),t},e.prototype.biGrams=e.prototype.bigrams,e.prototype.trigrams=function(e){let t=r(m(this),{max:3,min:3});return t=p(t),\"number\"==typeof e&&(t=t[e]),t},e.prototype.triGrams=e.prototype.trigrams,e.prototype.startgrams=function(e){let t=m(this),i=s(t,e||{});return i=p(i),i},e.prototype.startGrams=e.prototype.startgrams,e.prototype.endgrams=function(e){let t=m(this),i=d(t,e||{});return i=p(i),i},e.prototype.endGrams=e.prototype.endgrams,e.prototype.edgegrams=function(e){let t=m(this),i=s(t,e||{}),r=d(t,e||{}),a=i.concat(r).reduce(((e,t)=>(e[t.normal]?e[t.normal].count+=t.count:e[t.normal]=t,e)),{}),n=Object.keys(a).map((e=>a[e]));return n=p(n),n},e.prototype.edgeGrams=e.prototype.edgegrams};var g=function(e,t={}){let i={},r=t.form||\"root\";return e.docs.forEach((e=>{e.forEach((e=>{let t=e[r]||e.implicit||e.normal;t&&(i[t]=i[t]||0,i[t]+=1)}))})),i};var y=function(e,t={}){let i={},r=0,a=t.form||\"root\";return e.docs.forEach((e=>{e.forEach((e=>{let t=e[a]||e.implicit||e.normal;t&&(i[t]=i[t]||0,i[t]+=1,r+=1)}))})),i=Object.entries(i),i=i.reduce(((e,i)=>{if(t.min&&i[1]<t.min)return e;let a=Math.log10(r/i[1]);return e[i[0]]=a.toFixed(3),e}),{}),i};const f=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",b=f.split(\"\").reduce((function(e,t,i){return e[t]=i,e}),{});var v=function(e){if(void 0!==b[e])return b[e];let t=0,i=1,r=36,a=1;for(;i<e.length;t+=r,i++,r*=36);for(let i=e.length-1;i>=0;i--,a*=36){let r=e.charCodeAt(i)-48;r>10&&(r-=7),t+=r*a}return t};var k=function(e){const t=new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");for(let i=0;i<e.nodes.length;i++){const r=t.exec(e.nodes[i]);if(!r){e.symCount=i;break}e.syms[v(r[1])]=v(r[2])}e.nodes=e.nodes.slice(e.symCount,e.nodes.length)};const J=function(e,t,i){const r=v(t);return r<e.symCount?e.syms[r]:i+r+1-e.symCount};var w=function(e){const t={nodes:e.split(\";\"),syms:[],symCount:0};return e.match(\":\")&&k(t),function(e){const t=[],i=(r,a)=>{let n=e.nodes[r];\"!\"===n[0]&&(t.push(a),n=n.slice(1));const o=n.split(/([A-Z0-9,]+)/g);for(let n=0;n<o.length;n+=2){const s=o[n],l=o[n+1];if(!s)continue;const u=a+s;if(\",\"===l||void 0===l){t.push(u);continue}const c=J(e,l,r);i(c,u)}};return i(0,\"\"),t}(t)};var C=function(e){if(!e)return{};const t=e.split(\"|\").reduce(((e,t)=>{const i=t.split(\"¦\");return e[i[0]]=i[1],e}),{}),i={};return Object.keys(t).forEach((function(e){const r=w(t[e]);\"true\"===e&&(e=!0);for(let t=0;t<r.length;t++){const a=r[t];!0===i.hasOwnProperty(a)?!1===Array.isArray(i[a])?i[a]=[i[a],e]:i[a].push(e):i[a]=e}})),i};var F=function(e){let t={};return Object.keys(e).forEach((i=>{e[i]=C(e[i]);let r=Number(i);Object.keys(e[i]).forEach((e=>{t[e]=r}))})),t};const A=F({1.292:\"true¦the\",1.534:\"true¦be\",1.567:\"true¦to\",1.585:\"true¦and\",1.644:\"true¦of\",1.652:\"true¦a\",1.741:\"true¦i\",1.749:\"true¦in\",1.908:\"true¦you\",1.967:\"true¦that\",1.983:\"true¦it\",2.021:\"true¦not\",2.022:\"true¦for\",2.072:\"true¦have\",2.104:\"true¦this\",2.163:\"true¦on\",2.179:\"true¦with\",2.217:\"true¦do\",2.229:\"true¦he\",2.268:\"true¦as\",2.277:\"true¦my\",2.287:\"true¦we\",2.319:\"true¦at\",2.322:\"true¦but\",2.392:\"true¦they\",2.418:\"true¦me\",\"2.420\":\"true¦your\",2.422:\"true¦his\",2.426:\"true¦get\",2.433:\"true¦will\",\"2.440\":\"true¦so\",2.449:\"true¦by\",2.456:\"true¦all\",2.461:\"true¦can\",2.477:\"true¦from,say\",2.481:\"true¦go\",2.495:\"true¦she\",2.509:\"true¦or\",2.524:\"true¦if,what\",2.533:\"true¦her\",2.539:\"true¦one\",2.557:\"true¦when\",2.565:\"true¦make\",2.569:\"true¦an\",2.592:\"true¦our\",2.595:\"true¦know\",2.596:\"true¦out\",2.597:\"true¦up\",2.599:\"true¦was\",2.603:\"true¦just\",2.614:\"true¦there\",2.632:\"true¦like\",2.643:\"true¦about\",2.645:\"true¦would\",2.647:\"true¦no,time\",2.649:\"true¦is\",2.665:\"true¦come\",2.684:\"true¦him\",2.693:\"true¦who\",2.703:\"true¦more\",2.713:\"true¦good\",2.718:\"true¦which\",2.719:\"true¦their\",2.721:\"true¦had\",2.726:\"true¦them\",2.732:\"true¦person\",2.739:\"true¦toronto\",2.743:\"true¦take\",2.747:\"true¦now,think\",2.756:\"true¦see\",2.757:\"true¦are\",2.758:\"true¦then\",2.766:\"true¦want\",2.777:\"true¦new\",2.801:\"true¦some\",2.824:\"true¦into\",2.827:\"true¦first\",2.831:\"true¦us\",2.832:\"true¦year\",2.833:\"true¦could\",2.845:\"true¦day\",2.847:\"true¦how\",\"2.850\":\"true¦only\",2.856:\"true¦very\",2.864:\"true¦back\",2.868:\"true¦look\",\"2.870\":\"true¦work\",2.878:\"true¦aft0oth0;er\",2.882:\"true¦than\",2.893:\"true¦because\",2.898:\"true¦these\",2.902:\"true¦well\",2.903:\"true¦great\",2.909:\"true¦tell\",2.911:\"true¦call\",2.913:\"true¦its\",2.921:\"true¦down\",2.923:\"true¦give\",2.924:\"true¦h0;as,ere\",2.927:\"true¦also,thing\",2.929:\"true¦find\",\"2.930\":\"true¦right\",2.934:\"true¦over\",2.955:\"true¦way\",2.967:\"true¦man\",2.968:\"true¦where\",2.972:\"true¦place\",2.977:\"true¦ask\",2.978:\"true¦two\",2.979:\"true¦little,should\",2.982:\"true¦use\",\"2.990\":\"true¦am\",3.012:\"true¦ne0;ed,ver\",3.019:\"true¦any\",3.023:\"true¦before\",3.026:\"true¦love\",3.038:\"true¦most\",3.043:\"true¦must\",3.045:\"true¦too\",3.047:\"true¦off\",3.048:\"true¦u\",3.049:\"true¦much\",\"3.050\":\"true¦try\",3.061:\"true¦let\",3.063:\"true¦really\",3.067:\"true¦why\",3.068:\"true¦world\",3.074:\"true¦help\",3.075:\"true¦did\",\"3.080\":\"true¦long\",3.083:\"true¦name\",\"3.090\":\"true¦last\",3.097:\"true¦still\",\"3.100\":\"true¦were\",3.103:\"true¦may\",3.105:\"true¦mean\",3.106:\"true¦friend\",3.107:\"true¦american\",3.111:\"true¦even,keep\",3.114:\"true¦every\",3.115:\"true¦many\",3.118:\"true¦home\",3.121:\"true¦again\",3.122:\"true¦put\",3.123:\"true¦leave\",3.138:\"true¦feel\",3.141:\"true¦old\",3.143:\"true¦play\",3.147:\"true¦king\",3.156:\"true¦city\",3.158:\"true¦state\",3.159:\"true¦food,while\",3.165:\"true¦start\",\"3.170\":\"true¦high\",3.171:\"true¦been,life,through\",3.174:\"true¦those\",3.178:\"true¦oh\",\"3.180\":\"true¦night\",3.182:\"true¦child\",3.187:\"true¦hear\",3.188:\"true¦woman\",3.189:\"true¦bring,country,live,prince\",\"3.200\":\"true¦game\",3.203:\"true¦court,going\",3.204:\"true¦late\",3.205:\"true¦end\",3.207:\"true¦own\",3.214:\"true¦always\",3.219:\"true¦such\",3.222:\"true¦around\",3.229:\"true¦open\",3.233:\"true¦house\",3.239:\"true¦best\",3.244:\"true¦same\",3.247:\"true¦eat\",\"3.250\":\"true¦change\",3.255:\"true¦top\",3.256:\"true¦ever\",3.257:\"true¦meet,part\",3.258:\"true¦next\",3.259:\"true¦without\",\"3.260\":\"true¦once\",3.261:\"true¦away,show\",3.263:\"true¦both\",3.264:\"true¦america\",3.267:\"true¦job\",3.269:\"true¦another\",3.271:\"true¦bad\",3.272:\"true¦guy,hand\",3.275:\"true¦something\",3.276:\"true¦order\",3.278:\"true¦include\",\"3.280\":\"true¦yeah\",3.285:\"true¦family\",3.286:\"true¦girl,under\",3.287:\"true¦three\",\"3.290\":\"true¦become,run,talk\",3.297:\"true¦each\",3.299:\"true¦big\",3.301:\"true¦head\",3.303:\"true¦set\",3.306:\"true¦school,today\",3.312:\"true¦turn\",3.317:\"true¦begin\",3.319:\"true¦wait\",3.321:\"true¦large\",3.329:\"true¦haha\",\"3.330\":\"true¦party\",3.331:\"true¦might\",3.335:\"true¦service\",3.341:\"true¦government\",3.342:\"true¦between,cause\",\"3.350\":\"true¦small\",3.351:\"true¦since\",3.353:\"true¦walk\",3.355:\"true¦hold,sure\",3.358:\"true¦nothing,send\",3.361:\"true¦pay\",3.364:\"true¦believe\",3.366:\"true¦care\",3.369:\"true¦buy,room\",3.371:\"true¦until\",3.381:\"true¦hour\",3.382:\"true¦upon\",3.383:\"true¦number,stand\",3.386:\"true¦word\",3.389:\"true¦lot,though\",3.392:\"true¦money\",3.394:\"true¦done\",3.395:\"true¦s0;econd,it\",3.397:\"true¦together\",\"3.400\":\"true¦wife\",3.401:\"true¦move,water,young\",3.404:\"true¦enough\",3.406:\"true¦point,seem\",3.407:\"true¦hard\",3.409:\"true¦during,soon\",3.411:\"true¦does\",3.412:\"true¦everything,light\",3.414:\"true¦stop\",3.415:\"true¦face,write\",3.422:\"true¦company\",3.423:\"true¦fall\",3.425:\"true¦against,few\",3.428:\"true¦create\",\"3.430\":\"true¦busine0different,pa0;ss\",3.433:\"true¦area,free\",3.438:\"true¦book,law\",3.439:\"true¦lose,tonight\",3.441:\"true¦eye,okay\",3.444:\"true¦lead,pretty\",3.446:\"true¦anything,stay\",3.449:\"true¦case\",3.451:\"true¦gandhi\",3.456:\"true¦issue\",\"3.460\":\"true¦die\",3.465:\"true¦someone\",3.467:\"true¦cut,drink,watch\",3.469:\"true¦hope\",\"3.470\":\"true¦far,side,united\",3.472:\"true¦got,quite\",3.474:\"true¦type\",3.476:\"true¦base,form,kill\",3.478:\"true¦act,serve,week\",3.479:\"true¦line\",3.485:\"true¦h0restaurant;appen,owever\",3.487:\"true¦kind\",3.488:\"true¦bar,plan\",\"3.490\":\"true¦nation\",3.492:\"true¦cry,support\",3.494:\"true¦star,white\",3.496:\"true¦congress,reach\",3.498:\"true¦himself\",\"3.500\":\"true¦close,nice,return\",3.502:\"true¦hey\",3.504:\"true¦problem\",3.506:\"true¦remember\",3.507:\"true¦already,power,s0;een,ystem\",3.511:\"true¦month,win\",3.513:\"true¦princess\",3.515:\"true¦body,term\",3.517:\"true¦ha0marry,yet;lf,ppy\",3.519:\"true¦break\",3.521:\"true¦car,heart,less,question\",3.523:\"true¦answer,build,door\",3.525:\"true¦war\",3.527:\"true¦boy,century,father\",3.529:\"true¦distri0fa0level;ct\",3.533:\"true¦used\",3.535:\"true¦group,hit,read,whole\",3.538:\"true¦thank\",\"3.540\":\"true¦fire,wish\",3.542:\"true¦mind,president\",3.544:\"true¦idea,throw\",3.546:\"true¦continue,minute\",3.548:\"true¦follow,national\",3.552:\"true¦baby\",3.555:\"true¦dec2experien1pr0;i0ov1;ce;ide\",3.557:\"true¦shall\",3.559:\"true¦check\",3.561:\"true¦actually,health\",3.565:\"true¦reason\",3.568:\"true¦please\",\"3.570\":\"true¦shop\",3.572:\"true¦near\",3.574:\"true¦consider,yourself\",3.579:\"true¦full,history,kid,table\",3.581:\"true¦team\",3.586:\"true¦add,real,tax\",3.588:\"true¦else,fight,interest,million,poor,sorry\",3.591:\"true¦low,ma0strong;rket,tter\",3.593:\"true¦often,son\",3.595:\"true¦maybe,till\",3.598:\"true¦force,town\",\"3.600\":\"true¦course\",3.602:\"true¦e0;arly,vent\",3.605:\"true¦black,college,foot,least,mother,spend\",3.607:\"true¦fast\",\"3.610\":\"true¦dog,future,god,lady\",3.612:\"true¦able,claim,s0;everal,peak,treet\",3.615:\"true¦red\",\"3.620\":\"true¦horse,pro0sell;bably,gram\",3.622:\"true¦morning,offer\",3.625:\"true¦learn,sign\",3.627:\"true¦deal,four\",3.632:\"true¦bit,others,sleep\",3.635:\"true¦bed,m0present;usic,yself\",3.638:\"true¦bro0ei0ok,public,queen,store;ther\",\"3.640\":\"true¦commun0secur0;ity\",3.643:\"true¦class,everyone,l0wear;and,etter\",3.646:\"true¦grow,sound,whether\",3.648:\"true¦drive,enjoy,mr\",3.651:\"true¦allow,carry,hot,parent,rule,save,yes\",3.654:\"true¦easy,la,pick,tree\",3.656:\"true¦bill,drop,fi0member,states,ur;lm,ne\",3.659:\"true¦british\",3.662:\"true¦death,receive\",3.665:\"true¦choose,d0office,visit;octor,ream\",3.667:\"true¦john\",\"3.670\":\"true¦chicken\",3.673:\"true¦age,fro0n,park,stude0within;nt\",3.676:\"true¦air,de,result\",3.679:\"true¦finish,round,step,uh\",3.682:\"true¦e,north,player\",3.685:\"true¦dinner,s0;hort,outh\",3.687:\"true¦almo0disease,ground,instead,pa0;st\",\"3.690\":\"true¦join\",3.693:\"true¦c0island,wrong;lick,over\",3.696:\"true¦dead,gone,trade\",3.699:\"true¦account,clean,fly,novel,outside,story,understand\",3.702:\"true¦beautiful,cost,decision,field\",3.705:\"true¦a0;long,ttack\",3.708:\"true¦fuck,los\",3.712:\"true¦c0forget,gold,increase;haracter,ommon\",3.715:\"true¦ball,peace,true\",3.718:\"true¦a1date,education,fun,l0middle,rest,tornado;ay,ol;go,ngeles\",3.721:\"true¦appear,rather\",3.724:\"true¦moment\",3.727:\"true¦enter,finally,taken\",3.731:\"true¦across,economy,fairy,important,ride,seek\",3.734:\"true¦given,major,s0;o0pe0taff,ummer;cial\",3.737:\"true¦listen\",\"3.740\":\"true¦cold,road\",3.744:\"true¦challenge,example,phone,train\",3.747:\"true¦clear,dance,list,record,sea0taste;!t\",3.751:\"true¦le0rate,single;ague,ft\",3.754:\"true¦a1byr2club,huge,indian,r0share;eply,oll;cti0rt;on\",3.757:\"true¦song\",3.761:\"true¦complete,friendly,process\",3.764:\"true¦alone,behind,catch,dear,federal,human,inside\",3.768:\"true¦anyone,budget,dress,leader,note,ready,stuff,view\",3.771:\"true¦position,ring\",3.775:\"true¦among,raise,study\",3.779:\"true¦although,bank,east,possible,review,t0;!hird\",3.782:\"true¦c0hahaha,information,nigga,pull,remain,west;at,harge\",3.786:\"true¦expect,general,produce,re0window;form,port,search\",\"3.790\":\"true¦effort,five,local,sister,wall\",3.793:\"true¦born,language,paper,sometimes\",3.797:\"true¦c0lie,miss,space,title,university;!apital,ontrol\",3.801:\"true¦green,pr0;actice,oduct\",3.805:\"true¦beer\",3.808:\"true¦couple,especially,kingdom\",3.812:\"true¦arm,employee,fill,hang,require,subject,test\",3.816:\"true¦daught0giant,india,piece,rock,wond0;er\",\"3.820\":\"true¦chance,press,river\",3.824:\"true¦agree,c5drug,hundred,noti4p1s0value;en2hip,pot,tanda5weet;ala2olitical,ro0;mi0tein;se;ce;a0itizen;rd\",3.828:\"true¦building,coffee,develop,french,item,s0whose;even,hit\",3.832:\"true¦choice,design,file,hair,location\",3.837:\"true¦menu,opportunity,weapon\",3.841:\"true¦difference,go1master,n0society,wind;atur0early;al\",3.845:\"true¦c2d0energy,fe1worker;efinitely,oll0;ar;ertain,redit\",3.849:\"true¦board,fish,recommend,teacher,voice,w0;ake,hom\",3.853:\"true¦ah,individual,po0secret,thus,worth;pular,st\",3.858:\"true¦amount,bear,e0fail,picture,six;ffect,xplain\",3.862:\"true¦fair,t0uk,v,ya;each,hemselves\",3.866:\"true¦animal,blue,church,fat,leg,mine,protect,rise,travel\",3.871:\"true¦a1count,forward,movie,perfect,s0;hoot,trike;bove,ddress\",3.875:\"true¦a0famous,liver,population,self;greement,ttempt\",\"3.880\":\"true¦b3c2evidence,gla1hi,ro1s0;kill,port;ss;hain,ondition;enefit,itch\",3.885:\"true¦co0english,favorite,joke,quality,treat;lor,ncern\",3.889:\"true¦b1deep,economic,figure,period,s0;afe,ex,ituation;ird,ox\",3.894:\"true¦appeal,d3hall,r1t0york;ou1v;i0ose;ch;etermine,raw\",3.899:\"true¦c1guess,key,option,p0recognize;olouse,rofessional;ontract,ustomer\",3.903:\"true¦apply,cross,describe,freedom,girlfriend,oil,pizza,s0;ing,traight\",3.908:\"true¦due,e3i1kiss,mom,per,roy2s0version;!pring;nternation0tself;al;arth,ngland\",3.913:\"true¦al,b1c0identify,source;ell,heese;!eing,lock\",3.918:\"true¦cent4degree,hate,m2prepare,re0sun,tr1weekend;f3lationsh0;ip;a0ovement;in,rch;er\",3.923:\"true¦b1co0dad,enemy,floor,propose,science,vote,wine;mputer,ol;eauty,lood\",3.928:\"true¦beat,d0ma1plant,suppose,wood;a0ouble;rk\",3.933:\"true¦accord,canada,dama1jud1lunch,sty0troub0;le;ge\",3.939:\"true¦arrive,di1fre1gr0jump,laugh,motion,search,unless,written;ant,eek;sh\",3.944:\"true¦a4former,industry,majes5o2person3realize,s0uni1;eas0ir,tati0;on;ffici0rigin0;al;ctivi0uthor,ward;ty\",3.949:\"true¦anyway,cook,f0herself,stick,wedding;it,lavor\",3.955:\"true¦complete1golden,ice,m0nor,responsibility,tomorrow,usual1;eal,ile;ly\",\"3.960\":\"true¦a1b0cri2difficult,focus,govt,particular,terrible;low,us;pril,weso0;me\",3.966:\"true¦ba2centre,hurt,joey,m0private,simply;arriage,e0;at,ntion;g,ttle\",3.971:\"true¦d6etc,f4german,h3inde2m1offic5perhaps,s0tir2;ection,ite,pecific;!ilitary;ed;ost,usband;eature,urth0;er;!ick\",3.977:\"true¦a0cup,immediately,respect;mazing,partment\",3.983:\"true¦available,burg2code,f1garden,m0opinion,replace,success,thought;easure,odern;inal,low0;er\",3.988:\"true¦e5fund,le,m3prigio,r4s1tr0;eatment,uth;i0t;lver,ze;edical,ount0;ain;urope,vening\",3.994:\"true¦conduct,delicious,everybody,fellow,g7m5r2s1t0worry;arget,herefore;teal,urpri2;e0isk;duce,fu0;se;e0o2;ssage,thod;enerati0un;on\",\"4.000\":\"true¦avoid,baseba4c2development,hi4nucl1s0t1;imple,ort,uper;ear;h0lause;emical,ief;ll\",4.006:\"true¦average,busy,corn5e4hotel,l3news,purpose,role,s1t0whatev5;ext,rust;a0hoe,uit;lad,uce;iving,ord;h,ntire;er\",4.013:\"true¦a3christmas,e1growth,l0pu2reward,shape,track,video;atin,ondon;ncourage,sta0;blish;dvance,rmy\",4.019:\"true¦billion,contain,de4f2in1s0theory,waste;erious,mile,trength;fluence,volve;estiv0inanci0un1;al;ny\",4.025:\"true¦aid,band,c7egg,limit,manag6nature,p4quickly,r3se2t0;e0oward;chnology,rrorist;par2rv3;!ange;ack,l0;ate;er;hina,ontact\",4.032:\"true¦application,discuss,e4introduce,lack,mouth,ne3p1regard,s0ten,warm;ale,enate;ro0urchase;ject,perty;!cessary;m,xactly\",4.038:\"true¦attention,beyond,chinese,discov2f1insurance,james,material,object,policy,s0wollstonecraft;creen,ecure;eeling,ing0;er\",4.045:\"true¦a5b4d3hell,m1own2principle,sentence,t0umm;ea,otal;inist0urd0;er;ecade,ry;east,ottom;bility,ttend\",4.052:\"true¦a8boat,cheap,d5exist,h3i2judgment,knock,l1majority,o,p0;age,erform;ink,or;mprove,rel4;ide,o0;nor,spital;e0irect;m0n;and;ccept,pproach\",4.058:\"true¦argument,c5dwarf,european,gain,i3kick,lift,no4o2pocket,r1suddenly,wi0;lliam,ng;ace,eg4;ccur,nli1;magi0nvite;ne;areer,onstitut0;ion\",4.065:\"true¦a7c6d4e3investment,s1w0yellow;an,ei1;elect,i0uggest;ght;l1xpr4;epend,ir0;ection;ivil,ulture;cc0frica,sleep;ess\",4.072:\"true¦anymore,burn,extremely,legal,pe4re2s0thr3winter;a0peed;d,ndwich;move,p0;eat;ople,rcent\",\"4.080\":\"true¦afraid,c2maintain,nose,p1rachel,s0unit;imilar,pread,tage,upp2;artner,rove;ertain0razy;ly\",4.087:\"true¦ally,ca1glad,h0manner,pair,sultan,wonderful;ealthy,o1;ptain,st0;le\",4.094:\"true¦aBcAd8e6f4ge2heisenberg,most3s0;eptember,h0quare;ake,ut;neral0orge;ly;an,ore0ruit;ign,st;mail,x0;celle1ercise;efenda0uty;nt;alifornia,lothes;head,rgue\",4.102:\"true¦app9britain,c8doubt,fix,id,lo7mo6p5r3s2t0wide;ip,r0;aining,oop;ignificant,moke,word;e0icardo;cently,lease,source;ath,lus,ush;lecu2nica;ck,ss;ap,handler;le\",\"4.110\":\"true¦a7b6c5eight,interview,ju3k,magic,ne2quick,re1structure,t0various;all,w3;quest,sponse;ither,twork;ne,st0;ice;ouncil,urrent;ottle,rand;chieve,ngry\",4.117:\"true¦cr9defense,e6football,h5i3launch,mexic4normal,pop,relate,s2t0wild;hous6o0;ugh,wer;hirt,tupid,unday;raq,tali0;an;igh2oney;asi1xp0;and;ly;eam,own\",4.125:\"true¦aDbCcAd9f6g5hero,internet,l4mass,no3pr2s1t0village,w7;ap,ex4;peech,tone;event,omote;body,rthern;a3ong6;as;iredra1l0;ow;ke;eliv1iamond;entral,hamb0;er;eg,irthday;gency,uthority\",4.133:\"true¦aCcAd8e4fou6global,income,l2model,p0religious,slow,ticket,varie7websi3;ain,hoto,m,o0roud,ursue;lBrt;eh,ibrary,oca0;te;arn,mp2x0;cept,te0;nd;ty;ai0eficit,irect0;ly;amp0omplaint;!aign;dv0ustralia;ice\",4.142:\"true¦a9d8gift,heavy,ir7july,lu6m5p4s3t1w0;ill1omen;hink0ool,tc;ing;ery,i2;ositive,rogre4;etal,issi1;ck;on;amn,irector;ss\",\"4.150\":\"true¦a4ban,c0desire,ear,forth,ho,lo2museum,rush,statu3truck;elebra2o0;a0rr4;st;te;ff1mend0ppoint0;ment;ect\",4.159:\"true¦a6c5d4fr3g2holiday,journey,length,ma1p0strange;articular7rovis6;p,ssive;ay,entleman,overnor;ance,y;ata,epartment;ake,opy,reature;bsolute1ddit0;ion;ly\",4.168:\"true¦aAb8county,d7eventually,fash6hiBi5knowled9loud,m4ob3pai2s0tmr,working;elect5now,omebody,p0tateme1;ecy,in;nt;serve,tain;ana4ouse;mpossible,nspi5;ion;esert,istance;ike,lind,order,rid0;ge;lright,wa0;re\",4.176:\"true¦acGbFcBd9e7fa5kitchen,m4native,p3regular,s0throughout,uncle;c1eni5oft,u0wallow;ff8rfaC;ene,o5;atient,hoebe,rop6;aBeeting;ct0ith;or;arli2nsu0;re;ecemb0iet,r;er;on0rowd;clude,v0;ersation,in0;ce;ite,ranch;id\",4.186:\"true¦aEbDc9de8fancy,inveFjaquel7known,likely,ma6o5p2represBs1t0weather,youth;ask,ie,owards,ri3;cotland,kE;hysic1o0;rtion,verty;al;cean,verall;ch0d;ine;bt,tail;ha2o0;mmitm0nfirm;ent;ir,rming;oss,reakfa1;ladd1rre0;st;in\",4.195:\"true¦airport,below,cDdAe8h6jury,le5m4o3prize,roof,s1wa0yo;shingtBt;ca5heep,ky,pir0ubm0;it;oh,pening,rganizati8;atch,ou4;adership,ss6;and0eat,uh;le;nvironme0qual,verywhere,x;nt;emocracy,r0;ag0iver;on;arpet,o0;mplex,nnect\",4.205:\"true¦aCbAcoBdestroy,e9farm,g7initiative,mil6p4s2t1w0;!elfaCheel;elevisFiny;ett0oldi5plit,trugg0;le;acific,erfecAlaying,o0;litics,und;k,lions;ath0uard;er;ngage,xtra;e0owl,rain;ach;dmi3pparen2s1tmosphe0;re;ian,sociate;tly;nistrat0t;ion\",4.214:\"true¦aCbAd8f5gra4mon3p2relief,s1t0urge,weird;error,hreaten;atur1erious4hould5pendi9tatus;etit6ref4;day;mmar,nd;arm1ebruary,ollowi5ul0;ly;er;ecline,ivis0;ion;asic,elo0;ng;narchist,rticle\",4.224:\"true¦aNbJcGdisordFeDfCimage,joy,knowBlegislatAmonstFp7r4s1transfFwa0yesterday;itAsh;essiIoul,t1u0;cc9rround;ock,r7;e0obert;a0quire8;lity,sonA;l1o0ress2;em,tential;aintiff,eas0;ure;ing;eed;ra,scape,vil,xperi0;ment;er;a1omfort0;able;fe,sh;asically,et,r1utt0;on;ight,o0;k2wn;im,l0rtist;haz0ive;en\",4.234:\"true¦aKbIcGdDelement,fCgraBill,j9kinda,l7m5onto,p2quart8safeFt1u0;m,su5;ailor,housands,otally,radiJ;i1r0;isIoducH;nk,tch3;ill2usic0;al;awy0iao;er;a0urisdicB;nuary,panese;b,ss;allen,irm,riday;espi9i0runk;r0vide;ty;ircumstance,o0u6;llect,urage;athroom,o0;ot,st2;fford,ppropria2rbitra0;ti0;on;te\",4.245:\"true¦annouLcGdeFemployEfAhorribBlemKm9neighbor,ourselves,p6r5s1thin,w0;ave,ent;cream,eize,hi2outhern,p1t0;rengthen,uck;anish,eakA;ft,ne;emind,omaF;o1r0;esent5oceed;ol,ur;emory,ode;a1ema0old3;le;ir0ult;ly;er;feat,pre3;hannel,o0;m0s;mi0pare;ssi0;on;nce\",4.256:\"true¦aRbJcIdFeEfChBimpose,japAknight,l9m8na,orange,r5s2t0unfortunate1vegetable,writPx;homas,ru0;ly;cienti1mart,u0;gar,shi;fCst;ank,e0iK;ce0ligMpublAspoGtire,volutM;nt,ss;edicine,istake;o0ucky;an;elpful,unt;!antast4la0;g,t;rror,xecutiF;e0ifficulty;fe6mocrat0;ic;harles,ommit;alan6e4o2r0;e0o0;ad;w,yfrie0;nd;ginn0n;ing;ce;ppro2s0ugust;ia,sociat0;ion;ve\",4.267:\"true¦aJbid,cEdDeAfacili9g8ii,load,m5p4r2st1tail,w0;elcome,henever,rap;able,orm;adio,e0;cove3j8;len4ot;a1e0;dia,ntal;ry;a2uide;ty;d5l1ngine,stima0xchan5;te;ect;are,ec3;h3o0;mmand,ns1vera0;ge;ent;icago,ristian;d,fternoon\",4.278:\"true¦aDbc,cAdang9f6gym,h5loveCm4nail,o3pr2quiet,r0successful,tour,writ9;e0oute;ference,gula5pair;etend,otest;ctob5hh,ught;agici9erchant,irr3;a,eaven;av1unc0;tion;or;er;l0ommercial,raft;ear0oud;ly;dopt,fric0;an\",\"4.290\":\"true¦aKbIcGdEeAfool,growing,h9i8licenCm6november,op5root,s3t2wa1y0;ard,ours;itress,les;aco,ooth;ecretary,lightly,t0;eak,retch;erate,po6;a0ike;le,nagemE;ntend,slands;at,idden,orn;mp2x0;am,cu0pens9;se;ire,loy;a0ownload;!ngerous;lerk,on0;cept,sist;asis,e0ride;havior,lief;ccid1ffair,g1lternat0;ive;ent\",4.301:\"true¦aHbFcCentirely,fBgolf,honest,inveEjournal,lion,m9newspaper,otherwiIp7re6s3t2v0ye;alley,i0;ce,olen3;hou,rap;acrifi1nack,tr0;ategy,ip;ce;flect,leva7sto3;a0owerful;ttern,yme5;ama,edica0ovy,ultiple;re;etch,olk;anadi3ha5o0;mplain,nte0z;nt;ipartis0urden;an;c1dvantage,li,nybody,ri0;se;ademy,tive\",4.314:\"true¦aTbRcKdJfailuIgotten,iraqi,liHmFp9quDr5s2t1u0;nique,pdP;empNraffic;l1o0teel;mewheEup;a2ip;a2e0;presentati0ser0;ve;re,y;a4e2hysics,r0;ay,o0;be,tB;rm0t;it;nt,rliameF;a0inecraft;gazine,yor;berty,terally;re;etermina4isappoiArag,ude;hocol5irc4o0risis;at,ll1m0ndo;bat,mittee;ec0;tion;le;ate;eef,irth,o0;dmin,mb;ncie0ssume;nt\",4.326:\"true¦aObMcHdDexamiChaBiAj8label,m6n4o2plaCrandom,s1t0viole9western;ale,ech,heatOony;an,olEu3;cc0mg;asFupy;e0oise;ck;at0eaning;e,h;oi0uice;nt;gnoEnfo0;rm;ne;a1e0ismiss;bate,lay;t,v0;id;a3hest,l2ompetit1r0;a4iminal;ion;assic,ever;lm,tegory;ell,lame,u0ye;sh;dult,nywhe0;re\",4.339:\"true¦aMbLcEdCeAgermany,instituBj9lean,m6neighborhood,pr3richard,s1t0;ape,om;chedule,howEo0pell,upre3ymptom;lve,mewhG;evious,i1o0;posJsperity;me;a1i0orH;n,x;dam,il;ack,udiciE;astern,limina0pic;te;e0isappear;sk,vi4;a5h4o0ryst9u8;mment,n1p,unt0;er;cert,fiden0;ce;at;ptu2ve;ond,ulb;ddition1narchism,ssu0;re;al\",4.353:\"true¦aLbKcJdHedit,factoIgeGhaClBnormalDoAp8r6s4t3upstairs,w0y,zoG;age,hoev1i0;nn0tness;er;alk1hick;ervaHhot,w0;ing;e0ussian;su7veal;aul,erformance,o0;et,rk;dd,rdina7;abBegislation,imited;n1rd0;ly;dso0s;me;ne;iscove0ocume4;ry;heat,limb,oin;eside,out;dventure,mbassad1ppoi0rrow;nt;or\",4.366:\"true¦aRbQcLdIexploKfGhEiCjim,mBoAp7r4s1u0van,w9;gLnderstood;a1cottBett4he7m0;ell,s;lary,nta;e0id,ow,s,uin;ad0venue;ing;lan1ri0;nt,or;et;peraDwe;rs,sg;mportance,r0;ish;abit,i0;ghlight,ndu;or0riC;cBever;e0ispute,owntown,rake,u6;cla0serve;re;hip,lo3o1urrent0;ly;!nstruc0;tion;ck;ind,orrow,un1;cknowledge,hm1tta0;ch;ed\",4.381:\"true¦aTbother,cLdJeaten,fiPgHhoFinDjuveniXmCnBp5r2s1toy,u0weak,zealand;niform,ps3;alt,ink,lowE;esponsibUo0uR;ck0man;et;a3e2r0ure;e0oceediB;gna6sence;n,rmane5;r0ssG;is,ticipH;egative,oodL;agnifice1uslim;depende0stitutCteresti4;nt;nest0p;ly;a0raduAuest;ng;e0na;finit5sseA;a5o0;n1u0;ch,sin;flict,ne0stitutional;ct0;ion;ndid0st;ate;ccuse,ffordab3maze,n2pa1si0;de;rt;alysis,xiety;le\",4.395:\"true¦a00bYcUdRexcepQfMhKinJjIlEnCoAp9r6s3t1useful,v0wiX;ariaPictim;as0emperaMheBrus0wen0;ty;c1ho0ileXtatue,uppC;re,ut;aJrP;e0unning;l0nt,solve;ax,y;!atio,hilosophy,itch,ledSroof;rigin0scar;!ally;ickna0ut;me;a2ets,o0;g,v0;er;h,ne;ail,esus,ohnsA;ju1stant,terpreta6;ai,ighway,ung0;ry;ourth,u0;el,rni0;tu0;re;ti2;i0r3;g,scussi0;on;ircuit,o1r0ustom;ew;mbine,nfu0;se;ay,u0;cket,ry;broad,lle1nnual,ppeara0;nce;ge\",4.411:\"true¦aXbTcOdKemperJfFguarantee,hCi9kay,mood,outdoJp7re6s4t3unusual,v2w0;arn0orthy;!i3;eterVia;end,hai;ayi0plendid,tr9uddCwear;ng;acBcover,gime,mark,publicR;atOig,otato,re0unishmeD;cious,viously;mm1n0;stall,telligG;ediEigra9;a0enF;ppin0rE;ess;alse,ounda2r0;ight0oz0;en;tion;or;e1id0;nt;l0monstr3;hi,ight;hemist3o0rack;nfer1rpor0;ate;ence;ry;e1ob,r0;ave,ief;n0sides;ch;fghanist0lbum;an\",4.426:\"true¦aUbRcMdKeJfHgFidentEjeff,knee,lCminXn9opus,p8r5s3t1v0wo,zero;ancouvXe,is6olume;echnique,ra0;ditional,nspN;a0cott,e7hock,picy,ummaCwitch;ke,ra,tisfy;at,e0ub;presentat0solut0;ion;akistan,lain,ossibil5roceduQ;e0iB;ed0t;ed;am0ectuM;b,p;ity;alle0raC;ry;light,r0;iendship,og;fficiCnable,ve;efi0istinguish,riven;ne;eiling,o0;m1n0;stitute,trast;f0prehensive;ort;atter1egun,lon0reath,utl6;de;!y;cqui4ppetiz3r0ssistance;bitrat1rangem0;ent;or;er;re\",4.443:\"true¦a05b01cWdSeNfur,goose,iKkorea,lImHnGoDpCr9s6t4v1w0;a,eigh;e1i0;ctory,rgin7;hicMnue;i2o0;ilet,ne;a1e,heltTkip,li0omehow;ght;il,vM;e1uss0;ia;latRmora;enalty,ortlaRrincipal,ub;bviousLn1ppo0;n7siJ;i9tario;akMeighbourhood,obel,umerous;all,on;attHe0oneG;arnBgisla7;mmigr3n0rL;dicaCstrum0;ent;ffec3ntit2xplan0;ati0;on;le;tive;a1i0ownstair,ust;ne,splay;nc0rkness;ing;arri3hris,on0rab;stant1tribu0;te;ly;er;ackgrou2iology,r0;e0unch;ed;nd;bt,lcohol,pp,ustrali0;an\",\"4.460\":\"true¦aXbRchildren,dQeMfLgJhIiGjus,korean,lEmAp7queSr5s4t1univer9vo0waU;lunteUtU;erritory,hread,i1r0une;easu0yC;re;hown,ingQpecificalTum,ymbol;ach,e0unnP;moHside1;hra1leasa0ossibQrofessor;nt;se;a,e1i0um;chael,ll,nim1;di0reL;um;ee,l,ook0;ing;mpact,nd0;ependen2ustriH;ello,istoric;ilbert,ree0t,ulf;ce;amiliar,ew9lorida,orty;v2x0;ecu0pressi8;te;eryday,oluti6;on,ump;a1u0;st;c2rte0;nd0;er;on;ctu1rrange,ssemb0ttorney,wake;ly;al\",4.478:\"true¦a01b00cMdLeKfHh06iFjEkillWlDmBnobZp7qaeda,r5s2t0uAvegetarian;on,ra0;ce,nsacS;a1ch,hadow,pare,u0;bstantiEici00;dTnd;e0iZosalind;laNquired,ver2;artnership,e2ha1laywood,oll,r0;escripLo;se;ppL;erit,o0;biMd,nkey,v6;!ouis;!ar,ewel,oe;bn,de2lleg2n0;gredie9te9;e7ind1ly1orm0requentG;al;ing;g,ngineB;er6isastA;aAha8o0;lour,m3n0;fro1te0ven5;st;nt;m1petit0;ive;erce,unica0;tiC;pt0rt;er;b1reful0;ly;le;at,one,uck;band5nxi4pprecia3rts,t0uto;lantic,t0;itu0ract;de;te;ous;on\",4.496:\"true¦a0Fb0Bc00diZeWfQgOhNiKkristeva,lImDnCoceania,p6rail,s2turkey,u1vary,w0;ait0Ce08;nlike,sa;cheOexu03hell,ile0Fo2p1t0wim;air,em,olDream;i0GokC;ftwaDlut02;a4e3ile,olitician,pl,r0s;e1ofi0;le,t;paVserve;arl,rsonal08t02;ce,sta;earby,urL;a2i1o0;o4rris;!sfortE;id0kWrie;en;azy,end,iteratu0sd;re;n0srael;itiKs0;i2tructL;ood,ug;ho0reet;st;a4ifty,o1ra0;me;ld,r0;mula,t0;une;ke,te;ntertainKxpe0;ctatAn0;se;p,rt,scouI;a9hef,o1reati0;on,ve;m4n0;clus4gression2s0;equFide0;red;al;monwe1pan0;ion;alth;mpus,nc2;aba,e2u0;g,tt0;er;an,droom;bs4c0dvocate,ustin;cording2hieve0;me0;nt;ly;en0;ce\",4.515:\"true¦a0Ib0Fc01dWeTfRgPhMiIjoseph,kHlGmax,oEp7r5s3t2un1v0Gw0;eep,hip,innN;ab05comfortab05happy;al02e08;leepKpy,tare,u0;bsFrvive;e0urH;ad5commendaWgret,scue;a3c,e1o0ri2;lluUssC;ak,rsua0;de;n1rticVsseng0tT;er;el,touflia;bligaOr0versea;ganic,iginaT;abour,ead7;ennedy,i;lln2n0;n,s0;tance;ess;ear1istoric0orrY;al;ing;oAra0;ham,y;a0ifth,lash,ounta8;me,vouriG;mergency,ntry,x0;act,p0treme;ansiLoO;a2e0ozE;st0voB;ina4ruc4;niErw0;in;aAho8l6m,o0yc5;cktail,n1rpora0unsB;tiD;s1tin0;ent;o0ult;le;assroAima0;te;p,s0;en;b,n0;c0dy;el;bq,ens1re0tw;ast;on;bu3dvi3ffirm,nne,pologize,rm2sse1t0;om;rt;or;se\",4.535:\"true¦a0Ib0Dc00dXeUfrSgQhOiLjam,lKmJnIoGpDquo0ArAs5t2upgra7v1wi0;ck0Gf;acancy,ePiola08s;a1ermin0Kh0ong0Guesday,wOypicalJ;umb,y;g,nk,t;a3cholar,e2li1t0;adium,ir,rongF;de;c0Fvere;ck,l4usaJ;e1i0;dRghts,p;cruit,gis02;arkPeninsula,re1ublicati0;on;cedeWsidenti07;b0ffenSlymp03so;jective,vious;ecessari3yc;etropolitan,idnight,oni04;ab,ip;n1ta0;ly;sIventoB;epatVi0;nt,p;ett0uinea;in;ank,id0;ge;at8gypt,mploy1n0;force0traB;meF;arl5elive1istaEomestMr0;aft,iv4;ry;hampionship,lAo3r0ulturM;aft1u0;el,st;ing;mp3n0w;scie1v0;ert;nce;e1o0;se;te;ie0os5;nt;a2e0jp,ro,ur7;ard,lt,t0;ter;de,s0;ed;c5fterwards,graw4lien,nge3ssi2tom1ven0;ue;ic;st;l,r;al;tor\",4.557:\"true¦a0Ob0Kc0Gd0Ae05f00gXhoWiSjeRknife,looVmPnoOoJpDreCs8t5un4v2w0;a0e0Mithdraw;l0Knt09;entu0Fi0;ctoria,ola05t0B;!known;eGh1r0;ea05iggG;erapy,ir04rone;aiZequence,i2t1u0;b,reO;atisAroke;gn03m;aliIsiR;e4hilosoph3ie,lastic,ortrait,r0;act2i1op0;erIorT;m08oriV;icX;ptide,rspective;bli6ffe2gYp1rgan0;!iz02;tics;nd0;er;e,wheT;assa0elt,iranda;ge;rsey,wish;e,n0;ch,stant4te0;n0rstaC;se;nour,ok;al,e1oodbye,reat0;ly;ar,nI;e2l1or0unerE;gotten,ma7;ame,ip,ood;a0e;st;di3lepha2mo3n,ssenti9x0;amina2ci0hibi2pJtraordinI;te;nt;tion;c,e2igni1o0;ing;ty;ni1te0;ct,rmin8;al;amera,e2losu1o0;mpel,re;re;nsus,remony;alanc2elov2u0;ddy,l0;let;ed;l1nnivers0sh,wkward;ary;ert\",4.579:\"true¦a13b0Yc0Ld0Ie0Df0Ag06hZiUje0VlSmPn05pJrFs8t2unemploy0Ew0;eb,i0ooden;ndows,sdom,t;axpay15h2i1our0;i3na0A;l,ssue;e0roat;at11rapi0;st;eafThort0Si4m3o2p1tudio,u0;ggesMrv09s0U;a0Cit;da,vereign;i1oo1;gh,x0;th;a2e0i8oomm01;lative0Kt0;a05ireW;ge,pe,w;aint0Fersona9i3lug,o2rison0Ou0;blish0Nrp0;le,os;is05lish;l0n;ot;ariBe1iss09o0yste00;b,narch;re,xico;iabi0o;li03;mproveJn0slam;c1itial05ten0;tiV;entive,redibl0;e,y;a4c,e3ollyw2u0;ng07rrica0;ne;ood;aviXritage;nn0v;ah;en2oogle,ri1ui0;lPtar;ef,ll;dYetic;ailed,i1oundXreeze,un0;ctionUdN;nance,refox;ase,d2lsewhere,n1quip0st3;ment;countStree;uc0ward;ate;e1isn0rawGumb;ey;but,cor,posit,vil;aAhairm9lo8o2ur0;rency,ta0;in;al,l4m2n0rn,stume;g,tra0;ry;ic,passi0;on;o8umbia;se6th;an;paci0reful;ty;a1reed0;ing;h,lco1re0;ly;ny;l3r1s0;pect;riv0thur;al;arm,t0;er\",4.602:\"true¦a10b0Xc0Fd0Ae01f00gWhSinRjr,ke,lPmKneIoHpCr9s7t6u4vi1w0yelp;arri2el0I;n07s0;it0u0P;or;hh,ltimate0nivers0Ns0P;!ly;ennis,hursday,witt0N;a0ervi8o0Qtra8;dd0Pid;ati6e1i0omant0M;dicul8v0H;duc0Al0QsolvS;a2ercei0Qlatform,oTr0tolemy,uni06;ay0Gi0;est,vileT;ckaSle,n,yi0;ng;bDverco8;ighbour,rv0;ous;a3edi2is1ol0;i0Fly;erab0Bsi0B;caYev04;c,inP;argeOifeti0;me;n02venU;ealthcare,o0;ck1ly,us0;eho2tS;ey;!lo2r1ui0;ld;andmothVey,oce0;ry;reak,undamentR;l,m5n3t,xten0;d1si0;on,ve;ed;a6for3rico,terpri0;se;bra1er0;ge;ce;e2is0u;agree,cipl5tin0;ct;ep0signC;ly;aFhDlassBo4r2u0;is0rM;ine;it8u0;sh;lumn,m4n0urti9;fid2sist2tribu0;ti0;on;ent;in,munic0;ate;ic0;al;arity,e0;er;binet,nd2rol,thol0us;ic;a1loody,oil,ubb0;le;be,rn;dministr1ge0ssault;nda;ati0;ve\",4.627:\"true¦a12b0Vc0Pd0He0Ef0Ag08h06i00kill0SlYmQnPoOpKrFsCt6u4v3w0yie0Z;eek0Ch1i0;ls02zard;ereas,oa;ess3ietnam;n0rban;d,iR;i4r1unn0wel0M;el;a0end;ns0sh;form,laM;ff,g0S;ampIe1toma06u0;b5e;at0DnatN;a1e0;!ign,publicans;i0p,ve;l0th;way;ar2hiladelphia,i1lKro0;fessiIvince;raAsZ;!o7tP;ak,ccasionalOffensi04;evertheless,otab5;a3emori06i1or0usc4;eov0Crow;d0les,ni;g07st;gistra2n1rb0;le;datoTufactu08;te;il,o0;bGw04;di4mpress2n0;sect,teri0;or;!i0;on;ot;ail,ijazi,mm,oldLu0;rIt;ardenVe0rain;m,nt3;acebook,loat,o0requency;r0x;ge,mer0um;ly;a1motionIn0;t7vironmentH;stN;e6i2j,rown,u0;ct,t0;ch;ctiona5n,s0;abil1clo0;se;ity;ck,mocrats;hi4o1ur0;ry;llecti1m0ntainCrnwall;ing;ve;ck,ldhood;a4e2iologic1onus,r0;eathe,onze;al;ho0neath;ld;ckwards,sk0th;et;ccompany,dmi2hh,l0nnoy,rizona,wful;phonso,togeth0;er;re\",4.654:\"true¦a1Mb1Dc10d0Ue0Nf0Eg0Ah05in02j01ko,lZmYnWooo,pMrEs8t5understandi1Wv2w0yoga;arehouOhisp0Ki0ou1F;pe,re,t1C;ac14i1o0;n,ya0U;be,tam0C;e15hee,oa1Br0ypic0G;ansport10i0;ck,ll10;car4ettle0Gh3i2lap,ovi0Tpi1t0urge9;eYraw;d0Ate;gnature,mi7;arp,elf,ield,udd08;ce0Red,y;a6e2o1ug0yE;!by;b,gers,pe;asonab0Nc2gu1volutiona0;ry;lar0L;a0Ze9;bbit,l0JvQ;a8e4hysici6i3ls,ortZr0sp,ussy;ai1evail,o0;fou0Rmpt;se;ll,t;nnsylvanRr0;centa05mi1si0;an;ss0D;k,lm,nic;arrow,ego6i0Ro0;n,thJ;ah,ichel0Qodify;a0ege0GodY;ddKptop,t0N;ones,ung0N;c1dex,fect05i0nov04;tia0K;iJorpora0J;!a1eight,ostAp,um0;anity,or;rbor,st4waii1yth0;am;!an;en2luckste6overn,r0;andchildr0iev0G;en;ie,t0B;a5e3o01rm,u0;ck1nn0;el;in;lic0n0A;ia;ctu1iQrth0;er;al;a5igh4l3m2stablish1vi0xisten05;deM;meL;iEma;d,izabe0;th;gVrthquaG;e4is2ot,r0;essi00i0;ll,nkiZ;char0liC;ge;ed,ntiHscript8;apBd,eAh8o2r0;eep,ick0;et;alit4ke,lleague,m2ns0rps;ensus,istent0ta6;ly;edy,pens0;at0;ion;iAo0;ke;nt;abCe;a5e4iography,la3o1rea0;ch;ld,riGu0;nd;st;comiDnd;ke1sketba0;ll;!ry;c7l3ng2p,t0;lanta,tribu0;te;le;abama,l0;eged,i0;an0;ce;complish,t0;i0ress;ng\",4.682:\"true¦0:1L;a1Db17c0Vd0Pe0Mf0Ig0Ch09in06j04kind0l03mZnWoTpKquiet0rDsAt7u6ve5w1xx,yellH;a3id2o1;lf,rn;!e0;ff1Blk0XtchD;il,rM;ps,sele1A;attoo,n,o2r1y;ansit,ibe;ma11pic;atelli0Jcroll,haw,il0orr07t2u1;fficie16mm18pervisor;ake,umb13;a5e2o1;ar,bb0Nme;flecImain2n1sin;d0Lew;ing;g,pid1;!ly;a6e5he4leas08o3r2u1;er0Pr6;eparaBimari0;ke,li06pular0Jssessi0W;eb,nomen0V;rsonnMtition0C;r2tie5u1;se;aVi0J;lympics,r1;chard,dina1ganize;nce;ba,e2o1;ti0M;d,ed0H;e2il0u1;g,siciA;anw0Dditerrane9mbers1ntNrry,ss;!hip;ayYobby,ucki0;a1ealSustify;cket,ne;jure,te2v1;estigaMisE;nsYrnal;ans2istori1;an;el;ap,o4r1;a1ind;nd1teful;fathMma;at,odfell1;ow;asten,irework,l1orgiKraud;e1ock;e,x1;ibU;d,nzyme,qu2rr,xclu1;de;al0;a5e2iDo1raF;c,nut;fini2spair,tail1;ed;te;ddy,n,wn;elebrBhAin8lue,o2uri1;ous;lorado,mbo,n1ttM;servati4t1;ext,ro1;ll1versy;er;ve;derlad,e1;ma;arm,eB;ity;a5ooth,ru4u1;ll,r1;nt,ri1;to;sh;nana,re;ctiv7ddict5mino,pplica4sse3w1;hi1;le;ss;nt;!i1;on;e0ist;ly\",4.712:\"true¦0:21;a22b1Uc18d0Ye0Tf0Qg0Mh0Ii0Dj0Ck0Bl05m02nWoUpNrGs9t5u4v3w1zoo;aterfro1Ieak0Kh1orldwi0V;erev0il1T;a22eg1Pisi28;hm,nnecessa1Jsc;empo02h3is,o1ribu27t;r1urism;ch,n;ief,k;c6h5i4li0XmokInake,occ0pray,qui0Ot2u1weep;p,rviv1H;a1ra15;ndFrbucks;ngEre;a7elley,rimp;oIrat9;e2o1uby;a1EllAta1R;c4dd8medy,na3s1vi1M;e1pective08;arch0rB;me;eipt,ogni1L;a5iWlann4ro2un1;ch;hib1mine0U;it;ing;int0r1ssa11;d1Gibanou,liamenta0U;bser1ffici7li1Apposi1Eurs;va1D;a3e2o1;pe;ckla08r16;i,t1;i0Cur1;alQ;a2i1ortga0Rrt,ustard;lita0GnoC;rquis,trix;a5e3i1ols;ber0Lneup,te1;ra0G;a1sbi0K;f,th0;me,p,wrV;a,indneD;et,ulia;c0Wmag07n1;di3juNnoce05s2teg1;rity;tructor,ult;ct01es;a2elicopt0o1;llow;ppi7v1;en;ar3d,enIl6ro2u1;d,t;ss;a04ba04;atig2irm1le0A;ly;ue;arthquak0conomVgyptiZlectric,x1;hau01it,p1teP;ected,i2lo1o0C;de;re;a9e4i2o1;in,mina0D;sti1vor6;nc07;claNf3s1;ceDp1;era08;en1;ce;llas,nc0;aIelebHhEiDlean0o2r1;!ap,iticize;m3n1rp;gratulati1sidera00te5vicX;ons;b7muniIp1;arisVl3o1;s0u1;nd;i1y;me1;nt;inaO;nderella,rcular,te;aracterist2er1;ry;ics;raJ;bba3ribbe2su1;al;an;ge;a5ehalf,iHl2oo1;st;a2e1;ed,ss;de,nd;il,k0ll1;et;er;bsoluAc8dop6mu5n4sto3ttenti2u1;di5tobiography;ve;nish;drew,thrax;se;ti1;on;cepta1re;ble;te\",4.744:\"true¦0:2E;1:1P;a2Cb1Wc1Dd12e0Zf0Ug0Rh0Oi0Hj0Gk0Fl09m00nZoYpQrMsDt9ub0v6w3y2;on1Tup;e3h2il;!a0U;althy,dnesd0I;al2ulner3;id,u2;ab0Q;e4h3obacco,r2ui1;ansla1iv1J;e26ru;lephone,mp0r0Xs7;a9c8e7it6lave1Jo5p4t3yn2;dro14onym,thes0A;eph1Ura1W;eaki1Kur;cg1Sfa,lMur;ti1I;al,conda1Dnsitive;!oR;fe12lm17nc1t;a4e2hy0W;a0Zbuild,gardlIp2treat;!uP;id,re0Y;a8e6h5iano,lay1Lr2;e3ick,o2;duc0mo1;cise0Ulimina13;ilosoph0ysici1L;a2nTrceiv06;ce0Fnut;in0EncaU;ffe1Argani0Nyst0;ightmaMoveli1G;a7cphers0Se6i4o2yth;lecul2p,rt11;ar;croso1Estr2t;ess;h,sseng0;in3n2pSsk;date,ufactur0;e,la10;a6ettu0Vi3o2;op;festyNg3mi2qu11;ta1;a1ht0M;borato0Iunch0;ar,erala;ord12uz;ii,llino7m5n2;do0Uqui3stagram,t2vest0U;errupt,roduc1;re;l2p02;ay;is;e0Ei3o2;e,peM;ke;enerosiYlobe,ra2;nds00v2;e,iW;a5ev0i3lutt0r2ulfill;ed,o0K;dd2x5;le;lkenste0Dre;d3mpow0nterta0Cpisode,stablish2uro,xtern03;ed;it0Bucation01;aAe8i5o4r3um2;!pliX;ead7ou9um;cumentaRuB;scr2verF;e1i2;mina1;light2pt,s;ful;mmQyli2;ght;aHeDhristianiCivic,lBo2rui8;m5n3sta,u2;gh;su2vi6;me;mon5p2;a3ri2;se;ct;ly;ay,iD;ty;l4rtifica1;ti2;on;ia;lo3mbrid2rt;ge;ry;aEeBf,iAlew,o7rut6u2;llsh4mp,r2;ni2;ng;it;al;o3un2;ce;!m;le,n;at3foreha2llissima;nd;en;chel3s2;in;or;fgh6ircra5lexand0rd,thei3u2;nt,thorize;st;er;ft;an\",4.779:\"true¦0:2V;1:2S;2:3P;3:3B;4:2O;5:3N;a3Cb2Yc25d1Ve1Qf1Ig1Dh17i11j10l0Wm0Pn0Jo0Ep05quanti0OrYsNtDuBvAw6;a8e7hi6orkpla3;sk2Qttingt4;d,n;nd,rs;a36ir05ow;nf6rge5;air,ortuna2B;aEeBh9o8r7u6;!b;ail,u2W;w16x34;a,e6ru2Bund0;oret0Ireby;chn0Henag0nsi4rr6;i6or1T;b2fy;ck0Slk2U;aEcFeDharpn2ViClipp0nowfall,oAt8u6ympathy;bseque5fficient2mm1Apport0r6;ge4rouX;a6e1Picklefo31ri1H;b,ck,mp,ples,tuto2I;ap,b0lo6uthea20;!m4;lk,multaneous2xZ;an,conds;dd6mu0Q;am;aBe8i0Uou6ul1;gh6t21;!ly;cogni1Lg7markab0Dp6sort;eated2lace2U;i1Gula1K;dar,inbow;aDhilip,iClBo9r6;e7o6;gram2Hmpt2spe10;mi0senta1E;pulo6rtugue2Kwd0;us;ag1Jun16;er3stol;d,ragraph,ycheR;penings,r9ut7ver6;look,whelm1;er,sta6;nd1;edi,gan0V;a9e8hi,i7o6vm;nsen29vo;e3ggas;gotia10utr1R;s6to;ty;a9e7o6s,unicip1O;ck,nth2untains;chanic6nt0Nr0Qtro;al,s;de,g7k1nufactur1r6;ket1t1M;ic1I;a7ewis,o6uxu1D;be,un0Kv1;d,mar6te2;ck;immy,uni0E;gnorJmpris4n6slam1J;f9qui17stru05t7v6;estiga0Jo1M;eract6ro;!i4;a5la0G;aAe9ft,ir1o8um6;!b6;le;ld0mel18us1;n,rb;s0Btr1I;r8u6;id6m;an3;a3ett6;el;ac04eCiBormat,r8u6;ck1r6;na3thermo0U;an6en;cis6k2;co;!b0nish16;ath0mini03;ag0cho,e,ssenti18u,x6;c8p6;iTlo6ress2;it;essiLlaim;aEeAf,i6ramatic13u0Uyslex0P;m8s6;!appoint0Zc6tribuQ;!our0V;!e;a8fault,p6r,sign0;ende5i6th;ct;l0n;sh,ve;aUe,hMivilian,lLoBr7u6;m,r0N;a8eat7itic6;ism;or;ve;ck,mDn7ok0Jtta6;ge;centraAs7venti6;onZ;ide6um0;ra6;ti4;te;b6pone5;!in0A;assify,iff;a9e7ri6;st;ek,q6;ue;lk,mpi4r6;iot,l6;ey;on;ll1r7ther6;ine;b,olina;ing;aHeElCoAr8u6;nny,tch0;er;a6eeze;!ss;snia,unda6;ry;a6esO;nk;aup7ng6ta,wa7;al;re;ng,rga6the;in;ccJdvGftEka,liDnytiCppare5rmIssBttractiAu7waren6;ess;dien3thent6;ic;ce;on,ve;et,ista5;me;ke;!erwa6;rd;anc7erti6;se;ed;ident8omplish6;me5;nt;al2;ly\",4.816:\"true¦0:31;1:2T;2:2K;3:2J;a2Ob2Ec1Yd1Le1Ef18g15h12i0Wj0Rl0Mm0Dn0Ao08pZquant1ZrTsGtBu9ve7w6y4;ell4outube;!ed;hist30orkers;ggy,t4;!o;si0t4;iFt3;a7h6ime2ot,r5u4wi0M;na,t2Q;adi0ip2T;anksgivi0ink1W;b,pest25;am,cFeDhCiBku08ma0Yp8t7u4weetie,ympho0G;b5ccess26ppor13s4;pe1Ota1S;redd29u1D;at,eady,ocki0rateg2A;!a5ecia4;lize;ke,rk;mi,tu2D;ade,ed,ri0Yuttleworthy;ldom,p4rpe2Overe2xy;arate2t;out,reeni0ulpt2A;a8e5ib,o4u0U;am,g3;ar,imburse21j5m4nt1;a1Aov1;ec2Doi28;dia2CilroMmXtion1;eAo9r4uss;e7o4;misis,se5te4;ct1Esta2C;!cu27;dict,ferr1Cgnan0Wmi0Y;st3tt3;nQr4;pendicular,siste27;ath,bjec22ct,pera0Cr4;al,lando;azi,e5o4;d,on;phew,w2;aAe8isle7lb,o5u4;d,slims;n4t1N;k,opo2u1G;ad;chanism,d1n4;!us;i,laria,nki0Mrsha4xim0I;ll;a6e4ikewi0Cocal00uv;ak,g4igh,p3st;al2itim1D;s,w4;n,su12;a7i6ohn5u4;an;ny;st;w,zz;an,m7n4;fo,te4vi0C;llectu1r4;est0Hpret;munMp4;eri1le0V;a5ome4u;la03work;m,rAve1A;arl0Pl5r4;adual2egg,ip;an0Yitt3;avo8i7l5ollow3r4;eque15ustr0S;i0o6u4;sh;fteen,ght3;ur;ffective2i9lectric8nd7quivale10valu0Nx4;cellen0Qis5peri4;enc00ment1;ti0;eav0Ki0;ity;ne;eEi8o6r4;a4ift;in,m06;ll,nat4;e,i0M;a7git1n3plomaAs4;gui7t4;ribu0Iu4;rb;gno4ry;se;cen4dic05er,m0Fparture,velopK;cy;aFhEitizenship,laDn,o6r5urricul4;um;owdGuY;ff9mmand3n6pp3r4urtesy;d,respo4;nd;!e,sul5t4;emporaFractX;ta04;in;p,rify,sh;art3imney;l5r4thedr1;b00rot;culPl4;ed;aAe8i7obby,r5u4;l2tt;ewe4oadway,uP;ry;l2tter2;auti4e,verage;ful2;d2nn3seB;er;ly;dKgi0isIlGmFnCppellants,r9s7top,utom5wa4xe;it;at4;ic;sign,tonish4;meL;kansas,tifi4;ci1;al;cest5ticip4;ate;or;id,p;as,i4lega9;ce;le;ng;am,j7mi4;ra4ssi5;ti4;on;ective,ust4;!me4;nt\",4.858:\"true¦0:4K;1:4P;2:4R;3:47;4:4S;a45b3Qc2Wd2Re2Gf25g1Yh1Pi1Kjacks4k1Jl1Dm15n0Zo0Tp0Gr0AsRtFuEv7w5yeap;a5idespre0Oorri3Uwii;it25rd17tt;aAe8i7o5;id,l5;cano,unta48;ol21rtue;ggie,ni4Vr5;ify,mo2X;ca4Rlenti4Hria2W;phold,sage,tO;aFeDhCiAo1Qr5u0Z;a7e6op5;hy,ic39;asu3Zmb3;dition3Ui5nsi2vell0;n3Ft;de,m5nk;!i1;ank1With0;a5e,nd26stimony;c2Tse;ki1lent39n;aMcaKensib3hIiHkirt,la36m,nGomeFpCquee3Vsa,t8u6w5ynthet1X;edi4GitzerlaQ;ng,ppor30r5s3E;pl3Vveill4B;a6ev3Yicky,r5;awber3Leetc3U;b5lk;il27;a6o5;il,ns1T;c3Nm;d32th19;ap,eak;a,s;areho1Bo5;rt3Nve0T;llop,n5rl2C;!d2I;cr2Qtisfi2Q;a9e6o5ubb0;b10ve1Cy;ci09fu6li16s5;emb3pect15;nd;dic2Bnch;a,eGiFlCoBr8u5;mp,r5;e2Wsu5;a1Qit;e5oclama2;ce0As5;criSuF;et2Ukem4;a6e5;ad;in2Onk;nt,ty;!n1M;ccasion1Xliv0ngoi1p,r9ut6ver5wl;night,pri3Cwhelm;co6l5;aw,et;me;chestra,ganisa2;a9eed8fl,i7o5t;n5rthwe21tab2Ev;ethe6violQ;ghtinga3le;le02;rra1Pviga30;aBeAi7m03o6u5;mmy,nicipal0Zshroom;de2Wtorcyc3zilla;c5gra2rac3ssissippi;ro5;be;ans,moir;inten2Tnu1EthemaV;and9e7i6o5;okXs0;ab3bertari1Sght0ly,vW;a5i,ss0th1A;pe;i1mark;el1Vh1Om;gnora0Pllust2Jn5so0T;du2Lf7herit,ni1spec2t5va0T;a1Aerfer5;en2J;ect20rastructu1C;aCe9i7o5se;mema5ok0peful1Oriz4ussaL;de;di1ndu5;ism,s;ad6e5n2C;!l;li1Yquart0;mm0ndkerchief,rb1Lsh,ul;e8iTlow,o5uideli1W;d5n;de5wB;ss;!ll0ne5;ti5;cs;aCiAl9o8ran5;c6kl5;in;hi0Jis;rmula2st0undi1;av18uid;e5lt0;ld0;ith6ntasy,vor5;ab3;ful;fficiEggplaTleCnAs9thn8v6xc5;e0IitemeS;alua2e5;rs;ic;s0Jteem;da5ormo13;ng0;ctr4vat5;or;enL;ati1e7is6octri13r0Tu5;b,ra2;closu07posXtinct0L;fendants,lica1Amocrat,scen5tecZvelop0;daEt;aWeThQiPlKoAr7u5;pboard,r5shi4;b,dk0V;aig,eativ6itic5;iRs;ity;conut,il,ll0Ommut0n5up4;dCfuBgr9queYs7tinui1ve5;nie5y;nt;pira5truct;cy;atu5essmZ;la0V;si4;e01om;a8o5;s6t5;hi1;et;n,ssifica2;garet0Nrc08;a6e5;esecaDmiIryl;pOracteri02;a6lebratEre5;al;se;es02lend02p5;tive;aFetrEhai,iDlCo8ri7t,u5;n,r5;ke;ck;a7oksto6r5t;ed;re;st;ah,esYues;ng,tt0;ay;g7nglade07r5;k,m5ri0;an;el;b02cWdQirplaPlMmbInGpprenticeshFrBssho3u5;c2t5;omatic6u5;mn;al5;ly;le;ab7m6te5;ry;our;!ic;ip;aly5ti;ze;edk7it5;io5;us;ar;aska,l6s,zheim0;er;en;ne;apt7verti5;si1;ng;!a2;ti4;on;c5tiva7;ept7u5;ra5;te;an5;ce;!oli5;sh\",4.903:\"true¦0:54;1:5Q;2:48;3:5F;4:44;5:5R;6:5G;7:52;8:5D;a5Eb4Zc42d3Fe32f2Ng2Fh26i21j1Yk1Ul1Om1In1Ao17p0Rqualifi4Lr0FsRtKuHvEwAyea9z;!rs;aBeaAheat,i9ret3J;lliams,shi2;kn35ry;i4Zrd,x;eAi9om12;llag0rg7zi0;lv51nd4Gst;gh,n9pcomi2sb;der9i55precedent4B;go,mi5Hneath,wat0;aEeCin,oBr9yraR;a9eati46iang5J;d0ge4D;ni6ppi2;chnic2Bd,ena33l2Gn9;a50th;bl4Rctics,ta;aTcSePhNiLkiKlJoIpFquad,tCuBwe9ydney;at9d49ethea3D;!er;ccess42mmo3Tpermark4Nspici5;aAo9rongh4X;op,ra2V;r31te3;eAi9;ke,ritu4;ci18e3Z;ck,u0J;am,eepy;nny;gnifica2Ym5n9rna,z;!gapo4G;a08o9;tgun,wi2;lAnsa1rgea4Ht9;tl3Kup;fi01li2;arNri2O;il3KlAt9udi;isfac1yagraha;esm8ty;aHeAid0o9ul0;ll7ta6;aEfi27in,li4Hnaiss4HsAv9;erend,i4J;i9tric1;de9st4E;!n9;ce,ti4;ffirm,g8;ghav,lph,ptors,t9;io,tle9;bo3O;aLerJhotograph0iIlHoFrBsychologiAu9;mpk7nk;c4st;eBinces,o9;duc22pos9spe0Yv36;ed,i1;fer2Mjudi42;l9r1Vtenti11;e,icem8;easa22z;neapp43pe;cep1i9;sh;perwoArticipa1t9;r5ty;rk;ops,pAs,utf9ver3;it;erat2Nt;aEeDice3o9utr03v;minArwegi8twithsta9;ndi2;at9ee;e,i5;at,gle1Hls5st,t38;me3n2Tp,ugh37v9;al,y;aDeBiAorn7ut9;a1u4;d,gh33ld,ni2sappropria1;chan3KdicaErmaEss9;e,y;dn0Uhatma,nn,ssachusetts,themat04;aDeCiAo9;ne,v7;ncoln,qu9;id;ap,ga2H;ce,g,me2Wndlord,s0;ans0WeeBfor35iAn9;owledge38w;m,tt25;n,p0;an,e,ournAu9;nk,st7;ali2C;llu30mpBn9pho2Zv;c9fluenti4k,nova0Vterfe2J;!a,reasing3;at9ersona6rov1P;ie2K;aFeDideo03oCu9v,ydrog1V;n9sse7;!t9;er,i2;nes2Dof,sti2U;ck,r9;oi2Or;i0Wllowe1Or9sti3vi2;n03ve1Y;aFeBigant2Qlo0JoAr9;adXid;ldilocks,odn00;nAolog9t0U;ic4;e9iP;roO;ll5mi2rr1Vtheri2ze;aJeIiGlEo9rienD;oCrAu9;l,rte1C;k,m9;al3;ds;a9i0C;vo11w,x,y;e0El9refight0;li2;a0Ydera1;bAci9reweQt4;al,lita6;r25ulo9;us;ate07ea,lImbGnCqBx9;ception4i21p9tremi19;and0Pedi1lor0;ua1;d9gagUli16trepreneV;lAur9;e,i2;ess;a9roid0;rras0Gssy;e9igib1S;ct9mentaW;ioPron1R;aTePiDoAriveway,u9ye;ll;dAmini5o,ugl9;as;ge;ckeJffereInosaHsAt9;ch;agreEobediXruDt9;incAra9;ct;ti9;ve;pt;eme0X;ur;nt3;ns;ad3bris,creaVlAm,nt4pa9;rt;ega6i9;!be06;i9ys;ry;a01ertifica6hYiWlVoDrBu9;b8t9;ti2;a0Visp9o0G;!y;lNmInAo9verMwork0zy;ki2peX;cCf0necticut,qu0st0Utroversi4ven9;e,i9;en0O;al;e9re6;al,r9;ni2;ng;edi8p9;lAromi9;se;e1icat9;ed;lectAo9;rful;or;own,uD;n9viliza1;dy;ao,eAink,rist9;en;st0;lBrbohydAs9;ino,sim;ra6;cula1l7;aKerl7lGoFrBu9;reaucra9y0;cy;iBo9;adca9oklyn;st;dZlliaK;rough;a9efuscu;nk9ze;et;in;ngaloArb0;er;re;bor1cOds,ffec1ggresNirliMmbulKnJppGrDtAug,vailabili9;ty;hletAtenda9;nt;e,ic;!abi8n9;old;an;ella6roximate3;ly;te;na,t;an9;ce;ne;si5;ademBcount9;ab9;le;ic;ti5;on\",4.955:\"true¦0:6E;1:6A;2:48;3:4N;4:61;5:54;6:6C;7:60;a5Lb50c41d3Le3Af31g2Sh2Ji2Bj27k23l1Tm1In1Fo19p0Squ0Rr0FsWtNuIvDw8xp,y5E;aBheelbarrAi8oo,ur6D;d55ll9ndsh5Fs8;cons5He2;ow;d,gg4rr1X;anilla,eAi9o8;lcan69ti5;agra,nta0Crtu1sa;g5Xr8;di6Fge;n9pload,r8tah;a1Cself;c8dergrou1Teasy;ertain8onstitu2U;!ty;aFeChBoAr8utori1;anscriDi8o30u04;m,um4H;e,k1JrA;irds,n,orough2;m9nnessee,sta5Ox8;tu5B;pt;!y;aPeOhKiImok0nee2UoHpFtDu9w8;an,ift2;bcontract5Bnshi3WpAr9s8;pect0tain57;ge,rend3;erce2Npre3O;a8ool,riki5;irca3Or2St0;a8erm,o4;n,wn;ft2il,le2n02phist2Wuthwe56y;ms,n8tc48;ce4Wgh;!aAe8ld;pherd8riff;!e3E;cklet4ve;nt,ttl3vente0Ww;fegua5Ht4D;aHeAi9na,o8;bins4cky;dAsi5;alm,cDfrac7gist2Zinfor4Clie42sBtaTv8;a9en8;ge;mp;ign,tr8;ai4Uo3S;lGord0;c8iny,m;i3Kk;al01e;aKeHhysic2TiFlaEoDp4Fr9to,u8;blic2l2Ynjab;ivate2o8;b,c8;edur1l8;aim;nnonn3or2rn;intiffs,za;ne,one3ss,zzer8;ia;n8rmanent2;c8n;il;r9ss8thrick,w;iona6wo4P;a8ti1;di2Jnoid;baCklahoCpen2tto,uAver9x8;!fo4LygZ;pa2Etake;n3Ira5t8;p3Lrageo2J;ma;a9d,ecess1Mic8orthea3X;hol3Xk;pole4sa;aGcdona37eFiBo9u8yster25;ltiplay3mbai,rD;d8i3Sntre1ot,rgiana,ti30;ifica7;croarAllen9nimi14s8tche12x0;e0Ihap,souri;nium;ray;antime,lancho2socyclo24;ge,mm1nsi4r8;g2ZylaL;aEeBi9o8yi5;gistics,ngpudd3Drdship;ar,s8;a,ti5;a9nd3o,s8;!l27;fs,se;d9kh,rg0Eugh8;i5t3;en;a8ne20o5;r8t02;amcha8l,nataka;nd;aAe8unc7;rk,w8;elWs;s4ys;mpEn8;cuba6fCsBt8;e8ima6;nd0r8;fa2Fpret3sec7;talla7u2O;er04orm0;ort,rison2Y;aEe9i8obby,r;pst3tt3;aBlAmisphe2Jpat9r8sita6;d,s;it0Kocy6;m1Op0R;dache,p;lo,rr0Ht8y;ch,h;dp,eBlor0Vord4r8uilt;a9i8ub;ll0m;t2Ovy;nBo8;grap9met8r2D;ry;hy;!er2N;aFemini19iClexibil00oAr8urnish;ee2i8nd;ghtful,sk;ne,r8;d,t;c9el1Blipino,redrak8st;es;tion1;llo1Prt,shion0;clip0Hhh,lHmphasiGnCqualRr,sAthi9vol1Ax8y;ce0Eot2C;c1opi1H;!s8;en1G;chAro9t8;husia0Uitle20;ll;ant1Yilada;ze;aboKd3;aLeDi8nt,o06rape;aBnAs8;appoin8miss1;ti5;esafe,i5;be6gnosH;aEcCdBem,fensi0Tl,nsAp9s8;erv0ktop;loy,ot;ity;icat0;ei0Oo8;ra6;f,r2;gg3v8;is;aYeo,hWig0KlSoBrAu8;e,sto8z;di0Qmiz0;ims4op;gniNllapMmpLnDoBpyright,rrup7u8;n8rtya1P;cill12sel12t8;leH;ky,pe8;ra7;fDstrucHt8verG;entBin8;ent1u8;al2;ly;ioG;e8identi1;ss;!etit0Q;se;tiZ;aAi9o8;ne;n0Zp;us;ar8em,ili,ron0Xunk;g0lE;lCmBnnib1rAt8u7;ch3t0E;er;i5l,to4;el;f,i9or8;ie;ph;aMbc,coz,d,eJiGlossFrBu8;ddhi9ff8;alo,et;sm;aAe9isk8ook,u6;et;akthrough,w;dy;om;n8o;di5;ng;gg9ha8lV;ve;ar;!lBt8;mDtlef8;ie8;ld;dw8lot;in;b08cc04dmir1ffilia6lXmQnNppKrHsAttendan9ustri8vocado;an;ce;ap,kd,sBtron8;a9om8;er,ic1y;ut;assin9e8;mbEssN;!a7;chitect8p;!u8;re;eti6lic8;ab8;le;alo9ch8drL;or;gy;azeCbi7eric9ong8;st;as;ti4;on;me8;nt;coholClBo9t8;itu9;ngsi8ud;de;ey;ic;al;!e9umula6;te;nt,pt0;ed;raham,s8;orb,tra9u8;rd;ct\",5.013:\"true¦0:8K;1:89;2:86;3:80;4:7M;5:7J;6:8R;7:8O;a7Wb7Fc66d5Le51f4Jg42h3Vi3Jj3Hk38l2Zm2En2Ao1Xp1Cq19r0Xs02tPuMvJwAy9z8;oologi5Gu;ep,r;aEeDhCillingn4WoAr8uDwe;estl0i8;gley,st,t;nderful7ol,rk8;for6Ao3U;ereup1ir;rd7P;h,istco3Uk7Ol8na,y7L;k5Ut0;a8ersa65iol53l;cci7Ig8lZ;i3Bue;n9t8;ensil,t4Y;finish2lo1Cto;aIdp,eHhFiEldr,oDrAu8yl0;rn8t;er,i4ov0;a9e45i8ous0y34;bbiani,ni5Ovi5;in0mp3Unspare86;fu,kyo,mb;ck,ght79le;!ai46ei02r8understorm;esh1Will0;chnici3mp32nu4Dstify;iw3l8s6Z;es,ib3;a01cYeWhViUkelet1lSnat0Oorrow3GpNtGuBwaAy8;nagogue,r8;i3up;m,y;bsAck0f16per9r8spen19;at,prising7viv4Z;i4Ym3;equ4Did1It8;anti7Ritu6;an5DeeDh,iCr9up8;idi55;ang0i8;de,p8;e,p0;ff,ng;p,r;aBe8he3Uri6;ar,c8nc0;ializ2tac8;le,ul5R;di2Aghetti;a8ot,um;in,ng,sh;an,khs,tt4N;a3Se0oppi4rink;ason2c5Knato8rvices,ttings;rs;ar9en8holar38otXramb5Q;ar6Pt;ce,f;c,mpl0t3;aIeAichards1o8upD;b8ck4Ell0oseveAsi1Y;be52e;aEbIcCdBel,f9gister2h1Linstate6Mlaxa4Ymembr4Nnew5port0vo8;lt;in2riger43ug8;ee;istri36sto5Yuc2;e8or1S;iv2p4S;p,soni4;jk2Znki61;!n,u8;arr8iz;el;aNeJhHick57lFoDr9sychiatri3Cu8y;ppy,zzl2;eAi9o8ude6M;cu2Xductivi42ne,vinci5;ci4ncip6L;!a9p,y;la68nd0rband4Uti1u8;ch;a8ea;ce61yoff;eebs,ysiolog8;ic5y;aAculi4Odicu2Oer,nd,r8;fec49s8ta3N;i2Yua1A;!ch,sa69;ck4Hna0Vr9ssport,tri8vili1;ck;e9ti8;s3ti1;kh,nts;bGfFg,o,pCrButAve8;n,rt8;i1Mu4F;a4break,ta;lea58ph3;era9ti8;mist55on5;!ti36;fe2D;eAs8;cu25es8tac4C;si1;lisk,si38;aAda,eva9i8w;agara,ghtclub,x1;!da;hi,y;aNeLiEoAu8ythology;l8tt0;e,titude;dernAr9tivate8;!d;ali2Yg3;ize;cDg07lCnAs8;appropria6f8siona3Ft4I;old;i8t;m5st3C;kshake,lionai1M;hig3rowa2J;adow,d,nd,r5Ct8;abolism,er;chine37instream,nAr9y8;b,o;io,ri2ti5;ag2i8;fe1Qpu2V;aFbs,eEiClc,o8u4;g9ot,u8;!isiaV;ic8o;!al;ck,fegu3Xght8nguist30;bulb,i4ly;ct,ddy0V;ndscape,s3St0und2U;aEeBi8nit,rishOya;dn9n,t8;!ty;ap,ey;b9n8tt37;singt1tucky;ab;r8shmir;ma;e8i,oshua;n,opardy;cy,d30llum3RmFn8ra3Usola2Fvo2I;cluDdBevit0Xfini6hApOs9teg8;ra6;a3Gight,pect1Kufficie4E;abita4Dibit1J;epend0Yia8o;na;di4;agin0Qp8;lemen9res8;si1H;ta24;aBe9indi,o8ybrid;op,rmo36st0Av0;ir,r8;m3o3A;hn,irc9mpshi0Dn8rd02z32;dIgi4;ut;aLeKf,iIlidd1m,oHrAu8;ardi3es1Njar8;at;aBe9it,oo8;m,ve;a8enhou1J;sy,t0;ce9d8pe,sp;!er;ful;a,dmoth0th2W;ld,m8rls,vi4;me;ek,n1N;!ng3Hr9s8ya;oli2L;din0me3Iy;aMb,eLiJlGoBr9t,u8;r1Bzzy;a8own;g30mewo05;il,nt,r8;bidAe8;caZhe8ign0;ad;!d2E;ag9e8uores37;sh,x;ship;fe,gh24ji,n8sc5tnB;la2U;at,b,d,rnando,t15;g9irn8ll0E;ess;ot;aOcMdinburgh,fficiLin,lImpower2LnFternEvDx8;eBp9tra8;ct;enditu8osu8;re;cution0mpt,rcisis;ic0Ro02;al,i09;dors2franchise2Dginee9joy8;ab19;ri4;d9ev8;a6en;er7;ent7;onomi8stasy;st;r8t1;l,ma8;rk;aQeMiCm,ownw1GrBu9well,y8;!i4;n8o;d0Tge1;aw0o1D;!ap0ctFfferEmin0PplomaDrect2s9v8;erPorc2;posAse28t8;or05ress8;!ed;e,i03;!t;!entia01;at8;or;a0SducYpre0UstructiAtaCv8;a1So8;lv2;ve;me,nforth,rl8;in;a07e04hZlaXoFpm,rCu8;ba,cumb0i,r8s;io8l;si8;ty;avi4eek,i9o8;sEw;b,t0V;ast5lumbOmInDpe,rBst7unt8wboy;en8rym3;an8;ce;p8rect7;se;centraEneHsAt8;emp8inuous7;la6;c8eco,umpB;ioE;mAp8;atibTiTle0Wosi8;ti1;enta9u8;n5te;ry;us;ss8usi,w;ics;a9rist8;ia0Aoph0;l9n8rlot6;deli0gi4;et;ll8rtiorari;ul8;ar;l,meFnEpCrAshy,tf9ve8;rn;ish;ab8niXs1t0ve;as;itol,su8;le;al,n1;!r1;aJeHiGlEoCr9u8;dd0Cff,lk,tterf7;ew0idegroom,o8;ccoli,therhood,wse8;!r;hr,mbi4uld0w8x0;li4;e8u0E;ss2;eb0ngo;havior5in,nt;al;ckboBit,ndh,stAt8;ti4;ng;ard;ne;cc07d00ggressiveZlVmeUnLpJrFssassEtBugusAw8;ak8;en;ta;he9m,t8;ic;ns;ina6;m8ray;e8s;ni3;an;e,propriat8t;e7i1;aEders1nBt8;icipat2on8;io;ed;!ounce8uN;meL;on;rch8tomy;o,y;nd;eAl9p8r;ha;sta6;x,ynikov;!ly;ams,ditionCjaAmini8;st0;er;ce8;nt;al7;ly;ommoda6ura8;cy;te\",\"5.080\":\"true¦0:8Q;1:94;2:9R;3:91;4:AS;5:A8;6:96;7:9Z;8:AN;9:AB;A:A2;B:AF;a9Ab8Cc76d69e5Sf5Kg5Bh4Wi4Gj4Ck47l40m3Hn34o30p21qu1Zr1Fs0HtYuVvPwHxGyDzC;ip,omb32;aCummy;nCrn;g,ke90;in,m00;aHeGhFiEoCrest1;nder6CrC;km6m;d9Onst4thho66;atsoev0enAMol3;ekd6Assex;iv0lki2qt,rra9Ss88tC;ersp3Ts4;aGeEiDoCp;l,r;enna,i,nce9Ov46;ga,ngeAErC;b,if4D;nuatu,u0K;nDpCrn,sh0;vo7ward32;consc4Hdercov0icoA1na07st75wi5Y;aSb,d,eOhJick1ml,oHrEuCwe39;ck,rC;r37t1;aCek;ct9Yg1Pil0nsCvel0;m0Xvesti7;ad,ll,rtillCyo4S;as;eEomps4rC;eaten9FiC;ll,ve;rCsaur75;apeut8Seaft0;helka,lepo9CmpErDxtC;b28ed;mi97ra9U;e8Worari3;ke32mCxi,yl9L;e,p4;a06e04h01i00lYmeXnowm6oWpUtLuGwCynthes0G;arEiCo9G;ftCss;!ne4U;aj,m;bDi7n5Mpra,rC;na5Spa4R;sCtit1;cribe,idC;ia7Ny;aHeGiFrCua8Wy20;iDucC;tur8;ct3ve;f1mula7;rn,wa8R;in,rCtistic8;k,tC;er,up;a,ecifCind1ott0;i7Gy;ar,cia1Pdi7Tme5Cre,vereign9;lt;ee5ToC;pe,w0;ckJsters;aDerlo5ZiCou40utt1y;ni2t9;ft,m;ek0g84ll0miot7SnCqu8Gri8t5V;!tenci2;dDlCn58shi1Qva77y6N;sa,u7;ne40;aSeGiFoDuCyers4;mo81naw4Gth;adsi6Mbot,dCm,tt18;!e7X;ght3m,nd,pe;aKcJdistric3NfIgul8Fmaind0new5IpHquest82sEtro,viC;se,talCv8;ize;cDembl8JiCta80;d4NgW;is5I;l46resentativ6P;err8ra68;k4onsPruit7M;!diDliC;st78za5;ly,ne3J;bbi,ciDj,ndCpp0tif2A;om3y;al,st;aCo2X;ke,lify;a03eZhWiUlRoNrEsych67uC;blis5Tpp15tCzz1;in,ti2;eIiHoC;b4XcEgrDnoun82sp0vC;id0;ammi2es2Z;essi2rastiC;na5;n2Xva42;decess7PmiCtz7Fvi25;eBse;k0litEpDrtr3JstpoAttCutiA;a65e5Z;co7Je;ic30;!aCea4Au4P;n0Mtin6DyC;s0Lwright;lCn43ta;gr7Nl5P;d,ilDoC;!enix,ol6tograph;ippiAlips;bb1e,g,rDtC;al,i7;cCform0u;h,y;c,d3Riseh,lHne,parizou,rEsDtC;h5Erol;si42te;aDtiC;al3es;ll6Snoia;!estini6;asMh5TkEmega,nw7Boohooohooo,rDssingt4ttom6verCwner10z;lap,see;ac1ie6Dna6C;ie;atMe1ViJoDuCxt,y;cle49n,s,tritionW;ah,isGrFtCuronnih54;ch,eC;bCd;ook;m6rC;is;co1netCpp1;eCy;en;h6ionaC;li5U;aOeMgi,iImHoEph,tv,uC;rmuBsCz;harraf,l4G;dDld,nroe,rCss,therfu00u6Ew;bidi9ph4N;e0Fifi60u1;!s;aEnerDsC;o,s3Pt;!al;mi;asure5McYdiCl4mor3Ataph68;ta5;dGkFnErCsh,thematici6;garCketpla6Ct;et;oa,t1;eNin;a2Gis4;aGettBiEoDuC;ke,mb0;ad5Kbu1c1Edgi2ud3y8;cenCeutena5Cme,nux,o46vesto33;ce,si2;k4Aurenti6yC;out;aFetchEg,ina22nCoi;iCot;ck0;up;nye,te;aDoC;!el,i2I;in38lape3DmaiCna,sp0;ca;bm,deOmmen1TnEp16rrDsC;aac,ol4H;eleva4Xita7;aKc32dividu0XfJhe06spiItFvC;aCent5G;de,lC;id;a5PeCimida7rig4M;llige4RrnC;sh0K;ra5;ormati26rin3S;bili9ugu0Q;as,ntiCol4D;c8fC;ica5;aLeJiFmEoCub,w,yacin2W;bhou1Clm3Iov0rriCu0Y;b3d;!mm;lDpcroft,sC;pan41se;arCda;io2B;ar9brCc14lp0redi1X;ew;iz,mFndgun,rDt0untCwthorA;!ed;ass46dCt,v53;co16en,waB;burg0p0;aJeHirGlad3oFrCulp;aCo6;m,ndpaC;re41;re,wn;affe,d1;e,nuiAoC;graph3Kl3O;llbla2Mmepl0Drni2Itew0D;aIbi,ca,eed1LiHloGoErDujiC;ta;ac5onti0;am,l3ssC;il;o12p;an4HxtuB;ith2Vlada,n0Hshion1Bt9x;ager3ditori8inste27k,lePmNnIquHstim36thi2Pv2NxC;cChib0Dplo1E;eEiDluC;si12;ti2;l,ssive3;ip;compaFh47rEtC;husia2RrC;eat,u39;i0Lon;ss;eraMis13otionC;al3;ctoCva5;raC;l,te;a04eTiJoErCu3Hvd;eCink1P;ad;le,mFnDwnC;gra1Qh0Z;aCkey,or;ld;a1Je,inic6;aJnt,sC;cFmEneyCpleaRtinguish34;laC;nd;ay;o,rC;etCiminato1Q;e,iona1P;blo,lCna;!e3M;ad0Uc,du3LfiJgrada5lawaBpenden3GsGtEvC;elopi2oC;n,uB;aTroC;it;ir06piDtiC;ny;se;ciCni2;enC;cy;mErt,soviLyC;tiC;me;!n2H;a0Dbi,h05i04l03mc,n02oJrFustoEyC;cloAstC;eiAic;dy;awl,eEit,ocodi1uC;el9nC;ch;epy,ma7st;lliTmKnFoErC;al,responC;di2;le1Trdi23;ceEjunc5seCtribut2I;queCrva5;nt3;iCp5;ve;eImGpC;arEliC;ca7menC;ta0N;ab1;eCission0unU;mo1An2E;baC;ck;si4;e,t;ari9eani2int4;a,ne;aIeesy,iFoDurchC;ill;ir,rC;us;!lCn,pot1;dCe;caBiV;l,mpagAncell1Tp;bRge,in,l3nto,pitalErCsterbridge,t0;d0KoCpent0ria0A;liA;ism;a04eZhi,iUlOoLrEs,uC;ckingh0MdC;!dhi0W;!aHeaFiEoDuC;no;th;be,ef3;ki2tC;hi2;ce,ke,zili6;ar,bbDil10ld3oC;b,ty;in;aGeFoDuC;sh;ckaCke;de;!nd;dd0;hFllioEoCrla,shop;graph0logi0EtechnC;ol09;ns;ar;aEhavio0HrDstsell0troth0M;er;ry;c4tlC;es;ckFdElDndaEr4siC;cs;d,lo4;ge;w12y12;a,b10c0Td0Lffini9g0Hi0Fl08m01nXpUrQsKuEvia5wCye;ful3;ly;dGr,stronesi6tC;iDomobi1;le;stM;an;io;hGsDylC;um;am,ociDumC;i2p5;atZ;am;bitEcCk;hipelago,tC;ic;ra7;athy,olDpC;liSrov8;ogy;alyEdy,noy0AtiqDyhC;ow;ue;st;aGusC;eDi2;ng;meC;nt;teCz4;ur;aniAbeGfrFlowZtC;ar,erC;na7;te;ed;rt;ne;!rcC;el;ed,iDriculturC;al,e;li9ta5;ti4;equateIheBministrFoEversC;e,i9;ty;rn;atC;or;re;!ly;cCquaintE;ident8laFordDuC;!stom;anC;ce;im;al;breviatEc,duDel,hi,oC;ard;ct;e,i4;on\",5.159:\"true¦0:C2;1:DF;2:DW;3:DE;4:BK;5:DN;6:C4;7:DC;8:DX;9:DK;A:D4;B:BV;C:BZ;D:B6;E:9H;aCYbBTc9Yd91e8Cf7Pg73h6Hi5Zj5Tk5Ol5Cm4Qn4Do43p2Xq2Ur20s0Ut0Cu05vZwLxKyGzoF;mTn2L;aGeFrs,un;a99llowstoBK;ar,hFn18;!oo;b22d;aPeOhMiImi,nt,oGreFud;ck,n9YstA3;lfga2o4XrF;ds,kshop,s9I;g,lGnF;d0k;de,he8IlF;ing4y;a70ereFistleblow0;by;bBQstminBQ;itstaff,rGsFtch6yho3D;nt,p;faBy;aJenIiGoF;dC3odoo;br5QcAVgoroAWlFnd0Rol6Nvo;!la6;t,us;cuAAmpiBniDIr,se;lt4VnGpsF;ca8iBR;believCWdHeGifi5juDlFseDNveCL;ea9Mike4;mpl3Axpect5;erFo;grad2VstandCS;aUc,eThPiNm,oMrGuFwelf81ys1;n,rbiAO;aJeIiHoGuF;dCff8m68;t,ubl5;bAlC3nam82pp6;law4Xn7Q;de03g5Enscrip3;by,lst2Zuc70x6;bet62nFt34;k0t;an5QereHiGorFrivi2;n,ou2C;nk0rD;of,up1;chnologC4ll6ndernA9ymanak;cFk6o,pa,r,x3J;!tC2;a0Hc0Ee0Bh08i06k04l02m01nickeACoZpVqTtKuIwGyF;m3KrBF;aFeeteD;mp,n0R;bst35lim5PpFrpri9Ispic9Y;erviEpleCF;aKeJiIoHrGuF;dios,ff5nB7;ange4eam3L;mp,ut;l,t8G;rBOv6V;ll,tF;eFic;sm5F;mi,uF;a1KirrA7;aAMecGotliBQrinF;gs;ifFt4E;ica3;a01fFmmerfe64ph6LrB9;ia,tCE;a5Cell5il;aFim,p;b,y;atFet80i92yscrap0;e,i2;!eCnFp;gul35ha;aGippi2ortaCrFu19;ed,iek;!dy,kespeaBrp4;att8cGle07mFo6Spa8Cvente6L;!i;!ond4ret4;aFhmidt,iss8Brap4E;rabae92tterF;!ed;!ge,lGmo4QnskrBKtF;i0Vurdays;ly,o1;a06eUhSiNjb,oHrAIss,uF;e,lemaFm,nn6;ki2;blJcIg6Sma89o9Ip0sHtGuFv0;ge,t0;aBIisser5V;es,t0;!k0;ox;bb1cHdGsFval9;ky;dBJicul4V;hFk0J;ar27ly;oFythm;de,n5R;aPbeOcMdesign,e59fJgAjoi57liev5mi6Xn8YspHtaGveFynol24;la3rt;il0lANrd5;eFons6M;ct6L;erend7TinGreshF;!i2;anB5e;!eF;iv0pt7G;kah,lli1;ct7EgeB2;b8DcFke,ng0tt8;co1k3V;at1YuF;aFeso,iAYo;ck,rterback,sh;a0Ee06h05i01lZoSrGuF;d4Flitz0nct2Prch9Ks5M;aPeKiJoF;cureAEgrHlong5mGph3Osecut75tFud4vid5;agoniDoty2V;!ethe7V;amm0es74;c93mit61;dIsGventiF;on,ve;id9Isi2tFump3;ig7Oo;atorMic3;de6Kwn;!d,iElite4nKop,pHrFstuB;sche,tF;ab8ugA;p6ulaF;riF;ze;!y;aFum;tt0;cHerBge1mp,tF;if4YtsburF;gh;!k8O;el2Zilip28;ar,ck,eLnnifeath0rGssimiDtroF;c,l;fHiGpetFvas5E;ua7;l,od6X;ormi2uF;me;k,l,p;ct,lJpa,rHsFt,ula,yro1D;!tF;or,ry;aFtisans56;chu7ke2N;esYm0;cLi4l,mis64n32pKrIuHverF;boa7EjFse8E;oy;!tfie3D;dFgasm,ien3M;er4inari4;erationApo67t8M;cuGeFtop6N;an1M;pi5rr8N;aPeOhl,iLoHrc,sGuF;!cleoti7Jrse9;!pa;i4Vok,rm,str8CtHvF;a,elF;la,ty;or6Dre;bb8cFd,ghtfa0Qke;ki,oF;ti6F;e0DtherlanXwt1;rFtiona8X;ra7;aVcTd,eOhc,iJoHp,t,uFysoB;ni4TrFst0;chis1der0m4Ip3S;c27mFna,r1s78;ent5Kma;c,lIm12nFst0;dGis02neapolFus;is;f3Ls1Q;!waukee;aIin,lHme,nGtaF;bol0W;a8Qta8J;!bour5Yee,lsto1Qo35;ningf3Ftba06;c,donalF;ds;gnific7SnIrHsFtt,z1;cuFturba7;li5S;!ginAia,vello5Nx;a,go,ia,or,uscri4O;aNeLiHk,ooko5DuFynd1;ggaCnFstB;ar;bHd,fGmFn8Fste6Ttiga3v6Mz;b,p;eboNti2;e4Lrari15;ban1mona6EtF;te5M;nte35pErGsag73uFws;ra;!ry;ais0eHhilafGiFr,uwa7Ty8;ll6sE;at;nFv6;!t,ya;amJeIiHoGuF;dge7Ki46;se,yful4;ll;ffers1r9w;aic0Pie;cq,dol,f1Gl,mTnHowa,p,q,roGsF;bn,le;ny;appropr2RcOdMeqLfJherit7Pjec3l0Xma7sIteFvolv5;graGrF;na1Sv2U;l,ti1;tall0ubord2V;ant9erFie1C;!i3X;ua7C;efini7iFulC;e,ffere7Igeno4Mrect4;inerFonvenie7H;at3S;agina9pF;ecc6OortF;ant4ed;aUeNiLoIumHvGyF;pe;ic;b0id;g,mGnFspita70;da,g;aCici5AosexuA;ghl0Bnd0tFv;her07l0;aJhIigh60rGsF;!i12;a0RbF;e5LloB;!e;l0rtF;ed,i4;ck,hIin,llHmilt1nGrF;dcoBp0;ks;uc21w08;!ahahaF;!ha;aUeRiPlMoJrGuFyp28;iccio01tt0;aGeF;atn3Ugo9;c3Pph;blGdEgh,ldmFver50;an;et;e4FiGoF;o54ssa9;mpEt27;bs1llet7mmiFn;ck;laGnoa,oF;graph5Erg4T;to;mInesHrFuC;lFry;and;ha;b22eF;r,s;aZdr,eXiSlPoKrIuF;ck0ng37riGseF;li;ous4;!eewFu1A;ay;g,lIotpri5YrF;eGgiven34mula7tF;hwi0Gr33;!moD;di2;ap,oGufF;fy;a5Luri1S;ddl0erce4lInanci2Or,sHtF;ti2zgeraF;ld;hi2;et,t0D;el6llows0YnF;ci2;a,cul5Cde,iFjita,lc1mi2RrtheDv;nt0;at6csta1Od4Cglint1ighteen02lYmSnQquiPrNsco42vLxFyebr3J;cHecu3on,plFtremi59;icit4oiF;ta3;epGuF;r1Qs;tion29;aFentuA;!de;ic,nFweiterung59;ie;pp5ty;cFdorEhanc5s07thusiaD;loEycloped3L;bHer23o,paF;naFtT;da;aGoF;dy;lm;eFiza;ctronics,ga4WvF;enF;th;!th;a06d,eViKoHrGtm,uAyF;nas4Kslex38;ainaCiv6y0;ck,min4Nom,pe,rotGubtfFwnvo7;ul;hy;aNce,fferentMgestYl,men10sF;aJcGguDmFp2Htille9;al,ou4K;a28eGoF;mfo33uraC;rn;bleFrm;!d;ia7;logFmet0;ue;alersOcMfeVgra2FmKnIpHsir5tGvFy;iEo3;en3;loy3Tosi3rKu41;iEomFse,t1;ina3;ean0HonF;st0E;isFlara07;ive;hip;iIrfHs,tF;abaEed;se;ur;sy;a0Wbc,emete9h0Ni0Ll0Hnn,oPpi,rIuGyliF;nd0;bFpcake;!s;aKeJiteri1oHuGyinF;!g;mb8soe;cieBuF;ch;a29pe;ck0ppy;cai0Sd,l04mZnMol0rHstco,uF;nselFpFri0;li2;niIrFy;eFidS;c3spondenF;ce,t;sh;cesQdNfKsistenJtFverQ;eGradicF;to9;mFn3;pt;cy;iFuT;dentia2XguFne;ra3;eGuctF;or;mn5nsa3;si1;munGpF;lexi2Rul2F;e,icaF;b8tioF;ns;iseFlaterAomb1B;um;aHeGimbi2oF;si2;ar2Oft;m,rk;nFrcuYviliz5;cinnati,nam1;aLeHiGoFurchya0B;pp0;bi,l4;eseburg0mGstnF;ut;icF;al4;llenFmp,rg0t29uc0;gi2;esaQlOnMp24rJshi0talyDuF;ldr1tFve9;ioF;us;st;boGelFgo,vi2;ess;ne;celFon;la3;amaFedon0K;ri;rs;a09eZiToNrHuF;iZm,rFzz;ma,n6;aJeakdIiHoF;ad4n7w;ly;dAt;own;nd1z0R;lJnIoHre,se,ulevaGwF;el;rd;st0ze;apar7di2y;st0;bl0Ncyc8nCochem0NrGzarB;re;minghGthpF;la1H;am;ge;aMeKheaJnjam6stHwiF;ld0;er;ow;in;de;p,tF;!hov19;chFm;es;byl1cLff8ghdad,o,rHsGzooF;ka;h,il;gaiHnGrF;el,y;ey;ni2;kGterF;ia;up;b0Sc0Id0Aerospa0Uffil07g04iyo,l02mZnTppointmRrPsLtJuHvFw;eFoid0S;rt;s,tonoF;my;lFtach0B;as;pirHsGtrolF;ogy;er3ign07;a3e;gentiFtwork;na;enF;ts;alHdrGglo,imat5noyi2ot,s,vF;il;oid;og,ytF;icA;al;bFnes03p8;er,iF;en07;an,e,iFlamistakeo;ght;grava7reeF;ab8;te;ia3;ti1;on;a,hd,opt5vF;anIerGiF;so9;sa9tiseH;ry;ceFi;meT;ed;cGe,he,quFronym;it;essib8oF;mmodaIuntF;abiF;liF;ty;ti2;ng;le;bJerdeIit,seHundF;anF;ce;nt;en;ey,ie\",5.256:\"true¦0:H9;1:IK;2:KA;3:K2;4:K1;5:JF;6:KG;7:KF;8:K4;9:KL;A:KD;B:KE;C:I4;D:JM;E:GS;F:BR;G:KJ;H:JX;I:II;aI9bGPcEIdDCeCDfBPgAWh9Wi90j8Pk8Hl7Rm6Un6Go64p4Sq4Nr3Ss1Rt0Uu0Cv02wLyKzJ;elJMoologD3um,zz;ay,er,oungeItd;aTb,eRhPiMll,oJrong5Rto,wi;ld,n,oKrJ;kIFst;hI2lf;dCTkipedIWldKnterJrt,th0;bothJ7lic4T;erFNlJY;a,eelchair,iJ;chHFm,rl,sk0;bJdEDe,nGW;inGIkinz;g7iv3llNrLsKtJ;ch0erfa56;abi,h2S;dJDe,mJ;er,th;aJ2pap0;aReOiKoJrs,ulAX;gHIus;!al,bDKcLewpoiAii,rtuKtJviJ8;a,ro;al4oH;eroy,tu9;al,danJQlKrJx;offentlicBAtCD;cFVoHT;!h3lESrsiCst4;fo,i,kr73mZnMpriLrKsJtmoI;n,s;du,iCY;gB4si2;avail98cUdQgrate1AiPkiIUloJ2pOrelFOsLtJ;ime4ouchabJ;iC2le;topp95uJ;ccessfulJre;!ly;a7IleasaA;!qI4v;eJr7A;fiErJ;dog,lyi2taBEwJ;ay,eFMhe13;he7CovGO;brelCAmm,piH8;a0Be07hYiXl,oTpc,rJurkiCXym;aPeNiMoKuJ;mpFAro;oI2pe,uJ;blXpe;cky,f1;asur0mJ;endoHor;nsKumaJvolIWy;!tAP;co,lDY;mLnEogFPrJsFurnEK;stF7tJ;ilBWoiF;my,w;dy,er,ght4mo,t;eOiNoMrJs,t,waBYyG0;eKoJ;nELtt1wi2;esoFX;roughfaGNught0C;oeF4rsCst1;oKrJ;apeut95eaboEA;logi5rem;amma8dF7lKnderloGJrrJx2Z;aGIifD;!co,eJ;gra2Iscope;blet9Jd,iLkKmJste8K;!il,pN;!eov0;l53waneF;a1Gc1Be14f,h0Vi0Tk0Rl0Pmoke0On0Mo0Kp0AquaC0s,tWuQwLyJ;mbolA0ntJstemGM;ax;ap,eLimKoJ;on,rdm0J;mi2suHH;a8WeJll;pi2tDG;bNd5ffiH4ggest3icid9lliv5mMndays,pKsJv;penFtain3;erJpo74;b,heE3;mar9PptGZ;cont77poeIIsecB;aSd,eRiQoOrJurEL;aLeJ;ssJw;ful;iJp,y;ghtH2t;ckhoJve;lm;ck0gASle,puFX;adfaIphan15ri1vens7;gKnlDAp1rJtioBP;craft,t1;gerJnaA;!i2;ecRhQiMlendCKoKrJ;awl,u2;ntanHBuJ;s,t;lLnJr9;aJe;ch,l;l,t;er9Vinx;iC0k,uHF;g32lJs,w,x;idariCv3;aAQeJiff;ak0;r,y;end0iJm;ck,ppe6;eJi,yrockD6;pt9Ltc6W;dewF4gnificFOle46mJncere4;oEpl5Qulat1H;aQePiOoLrJ;i1YuJ;b,g;oBBpKrtcoG9wJ;ro1Z;keep0p0;a,ny,ok,pwre4UrlCF;ar,en;kespeare5ll9BmpEEng4Rr7war9T;aNbasA2cy,duFQmiMnKsaDXv2RxJ;t7uBE;sJtiGX;itiviCor;na6ramCL;mJrs;!an;aLene6hizophr6Ri,oKruJulp7F;b,tiFZ;ld,ts;ndinavi5rJ;!ecr8Z;b,lom7m0Inctua6pKrJtu2Lw;ah,banC7;!phiEA;a0Abi,eSiQjd,ly,oMuJ;de4mKsJ;h3se19tD;b91or;dLna6AsKtJutine4;a6i;alERy;eo,riguez;c5dd1g,nk,pp1tchJ;ie;ap0cWdVfUgSiRlPm,nNpLsKunit3vJx;iew0o81;entG8idDHourcBTpect18tor3ulAE;aJetiDRorADti1;iDVy;ew3oJ;!unEVvaB;!ay,evEHiJo8Pucta2Z;a89cs,ve;mburFnveA;aDQiJulAJ;meAst6;erEBraDVus9;ditAOne3P;iLoJruit0yc8G;mmend3nsJuAve6C;ideraBtruDR;eFZpieA;m31ndolKpJsh,t49viEzAJ;i45tAI;ph;aiEIuJ;aKinJot3;oa;d,iAk0rteJsi;r4t;a0Lbs,e0Gh0Di0Al05mc,oZrNsLuJvp,yrotechAD;bliDAnJ;e,iD2;us,ychJ;!ic;acSePiOoJ;cessMdigLfit4QjecKmin8Gpor0TsJudh7verb;ecu8titu8;ti1;ioH;i7or;cy,metiC7;ach0cKdiseaFexis9Ema5VsJtri9;i8Iti92;i9SluGurs9X;!tiJ;c9Kse;aBFiNlLppy,rKsJ;itDYt9;celaCRtfolio;ar,enEMlute5SyJ;nesi5peptiG;nt3soB4;aLuJ;mJra74;b0e;it,nJst0teau,us36;ck,n3s;!a9LcKgESlgrima8NnbaJ;ll;as6NnD;!antKenomen9oJ;sphoryEJtograp49;om;aceMdophi1ep3ki2nLpperoUrJs57trole4A;iJpe4Mson3Xt3K;odDtone48;di2et7H;ful4;bCWcQdd1el78kistaPla8nz0pu5rNsLtJwn;hJie1Cna;og4EwC9;sJtrami;coGer;alyJcABmes5ticipaA;sA1ze;ni;ed,ifiI;bseScd,fficeDNm0Enwar3SpQrLsa71t,utKverJxl9L;cook3doEheaAYp6J;liEwaAX;dMeLganizaKiJthodox;e4Issa;tion9;!g7;e4InCF;a,hthalmoloJpn;gy;rvJsF;ab1er;aVbc,c,eSiMj,oKp,uJxE;de,mb;bi62nvio7Wob,rthwesteStJ;a6epCZ;cLnJ;eteJtenAS;en5W;hJk9O;olsJt;!on;bras17ga8hru,p9rd,st1ur7wJ;boJsteCR;rn;pkB9tional4AvigaB;a08c07e03iYmorpg,oNps,sn,tg,uJvp;cHffB7ltiLrKsJtaA;s9Ftapha;al,do17;p4taS;an,bi5LdSis40lluRnNoMrLsc5OtKuntaJ;inoH;h,oro62to;occo,ta5I;nl4Fr;aLe1JgKsJtaDI;o7troH;er,ol;rc2Qs92;sk;er7Ti;dMme,nLrvi6HsKtiJ;ga8;!chief,solong3Kunderst9I;aj,dblowi2imiFuscu1;dASweI;aCdiLla1MmKrce6PsJte7O;h,opotamB5;orand2Jph8L;aBcin9;d,h;car7gnificeOnMrKsterpieBJtJxim48ze;!ern9tre91uAG;ath7bleheBWgariCCiJk0ve3S;lyn,n0ti9N;age20che8ViJ;!fes4BpuCI;nt4;a03cbo,eXiSoMs,td,uKyJ;!in,net8r2U;cy,mJnche7re,xembourg;brid6Dp;bbyiIft,ma,nMoLrJuiFyalC;ds,rJ;aiE;pho1se4;eli7FgJ;fell4Nstan8Vti9A;bLfesp5ghtKneJpsti03st3ye;ar,r;en,s;erJya;a8tarian2Y;aNgLiKnJonar97te,vera61;n7o9Use,t5E;c3Bsu9T;enda6iJ;sA0t;gu7Mvi2;ck9MgMl9EnLra,st4tKureJva,zi72;a8n;ch,ino;ka;esF;aOeLfc,itKnights,oJrupski,u87;sovo,un;ab,e;epi2l3PndriKshubJyb8I;hai;ck;bob,ha,l,po6GtJ;hariEie;aQd,ePharkhaALiOk,oLuJ;ggl0liJstifi0K;e,o;an,bs,g,hann,nath5sJ;hJt1;!i;hANo;ffr6Tst0;cJin,smiE;in1ZobJ;!iA1;c0Dde5Sh26k0Clb,m07nLps,rKsraeliJv5;!t6W;k,oquo70responsMvi2;c01dXfVgenuiChabAAjUorganDsRteOvJ;aLincKolunJ;ta6;ib1;liJri98;diC;nsKrJ;conne8ZveE;ify;tKurJ;er,geA;in8Vrume1C;e8Uunc8H;lJuF;a8ecBux;iKoJ;nes92;cJgnaAre8P;aBt;ap02epBoKreaJ;si2;nsisteArrect4;agina87i3RmMpJ;ati3OlJroper4;iJor;caB;ineA;ea,ke;!onD;a06e02iWk,oMuKyJ;gieEmn,pothet2P;mb4rd1sJ;h,t1;l7YmQnMpLrKsJur4wl;e,ta46;!sem5;dod6Ne04;!eLoJ;rJurJ;ab1;!ymo7;eJy;own0r,t41;erarcNghLlKppJstor2Sth0;ie,o;ls,t;lanJne69;ds;hy;aven4eLfClJr0D;iJl0;um;d,h86;biTgSlQmPnOo,rLsKvJz5R;a,in,oc;s1ty;a5Zden3mKoJp;ld;le5X;d3ge,k;l5Fst0;lucinogJt;enD;!ue;tu9;a06e02hZigg1lVnocc00oSrMuJwh;aJjara67;camo1ntanamo,rJ;anCnieri;aLeJiev3owl3umb1;aJe3H;se,teI;du9nKphJ;ics;dpa,i8;ldfi2Lrg8Qtting86urm50vernJ;an7WmeJ;nt9;aLitteKoJ;om,r7B;ri2;nd,sg1B;etKomesJ;hi;to;l,nKrm,sJtaw6Q;tu6K;eJo5S;r3Js4Jt1J;bri4Rga,i4lLmbleKndhJsp3;ism;!r;axy,ifr7lJt;op;a05di,e04iZj7GlVm,oRrNuJ;nctionKrJ;nis3Ky;aJi2;liCry;agi1eLiJos2Oustra2O;tt0voJ;loH;a07ezi2igMnchm5;rtJunde7T;nJunate4;igJ;ht;aLea,iKoJuoropho5Z;r1Bwe7O;msy,nt,pp0;mi2re,sk;br3Der6XnJsh0;alLeJ;ly,sF;se;ize;eb1ud;m,r74ulC;ar0Gb0Fc0Ed0Cisenh0Bl03m02nZrYsUtQvOxJ;agge0WpJtin5V;eKloJressw5R;raBsi82;di8l,rimenJ;taB;anJoL;!s;hKobicoJ;ke;anJern3J;!ol;cLpresKtJ;!h0;so;!a7F;ica,neIu1R;cKlighten7Irich7Isla7OtireCvJzym5K;i23y;haAla7MoG;e6ig0Dphas35;bPeNf,iJla,v34;giKsabeJ;th;biJ;liC;ctrJna;ic9;ow;ow0;dJgevil1is7mu63s,uc2X;ie,y;!lectD;ay,o6A;nest4phoE;a0Le05iUoSpc,qs,rOuLwelKyJ;l5namDsfuncB;li2;nKpliJ;ca8;c5o;aJea6;cuKstJ;ic18;la;da,gJn70orw4Kppl0rm,ughn25w6;ma;arrhea,cSetiRff,geIligQoxiGplom4QrePsLvJy;eJil;rt;advanta0GcKmant1paJrega3Csipa8tr0Z;ra8;laim0rimiJ;na8;!c41;en57;ti5;ta8;bXcWfTlRmQnv0odoPpNrLsJt0utsche,vot4Q;mo5AperatJ;e4i7;aJby;il;enJre2I;den3J;raA;an2OoliK;e8iJ;sh;eJi4Goe,y;ctJr;!i66;ay,eiv3is4V;it,ra;inClKn55rJybreak;es3Qr4W;e,it;a1Hbs,c,dp,e1Dh12i0Zl0Ung,oTrNs,uKyJze26;a,b0;dd1lJn1Yrfew;!iJ;na6;aMeLiJowdfu4Numb;nJpp1;ge;ep0sceA;ckdJmp3wl0;own;a0Hh4Jincide0Gl0Bm06nUoSpenhag4JrruRsmoQuMvJwa2Ayo8;aKeJ;!naA;leA;nLrJ;ag4YtJ;n0Qs;ti2;!polit5;pt;kJl0BrdinZ;book,ie;ceGdesce45fRgesBr4DsMtKvJ;eyXinci2;ai1Bemp50inu9rJ;acB;eLoKpicuous4titutionJ;al4;lida8rt;cu2KrvJ;ato6;eJiG;cBsJ;si7;!et,fort2YmKpJ;a14rehe3S;entJo3H;atJ;or;!lectiMoKumJ;niI;nJur3;el,i9;b1ve4;!n3C;!cJti2;hi2;aMeopatra,inicLoJump;ak,ckwork,seJ;ne0Q;al,s;ir,ra,sp3;nd0rrhKtrJ;ic,us;os01;aQeLilKronic1uJ;!bby;de,e5;ckLdd08etah,nKwJ;!i2y;ey;i2oJ;ut;h3OlKn,rJuffeur;!acteri3AgesheV;andritsan2Xkb0Qleng0;le6meAnsorship,rJ;tKvantJ;es;ainCifi3;!dPiOlMnKrJsa,tara1S;l2Rniv9tT;a6did,nabJoe,terbu6;is;culJga6orD;at3;ro;et;a0Pb0Occ,e0Ghar0Fi09l07o02rRta,uJ;chan5nOrMsKtJyi2;te6;hJinessm5t1;el;glJt7;ar;dJk0;!le;aRePiMoJy5;adcaKcaGom,wJ;ni2;st0;efi2ghtJ;ly,neJ;ss;ak0eJ;ch;d,g,nJve6;dy;arMlKmb0Xno,oki2rEurb7yco0A;ne;lywJt;ood;di2;oJueber6;c,g,om,w0N;d1WllKochemist6sJ;cu1Wexu9;bKiJ;aKng;oaJ;rd;ti;aOcaNfrie1NlKneficiaJrnste0FtC;l,ry;gi5iJ;ev0;er;me;d,rJti2;er,i2;do;al,ckseat,d9e,hra06ltimo05mbUnRrMsLtJ;es,htub,tJ;er3;em5s;bKcelo2MroniJ;tt;arKecJie;ue;a,i5;dKkruptJ;cy;it,o;oo;a2Db28c1Ud1Jf1Fg1Ah18iGl0Xm0Nn0Jp0DrYsWtQuLve6wKyJ;!odhya;e,kward4w;!cLf,str09thoriJ;taJz3;ti24;h,kJ;la0U;roMtJ;aKiJ;re;in;ciC;ty;hr0Aki2pectibHsimiNtrJ;ay;abWbitraUcRe1XguQiNomPsenaMtiJ;cuKfaJstD;ct;la8;l,ult;stoJthmetD;crJt1;atD;ab4;aGhJ;!aeologiIer;st;b1l,ry;le;ia;olNpJr7t4;all3liLointKreJt;ciaBntiX;ee;anV;lo;alogoHdreLonymoHtJ;icJo09;ipaByclonD;!u,ws;aQbiNericKmuniBsterdJ;am;aKorJ;ps;ns;anKgJ;uoH;ce;nJzing4;da;aQbePhacOlNmoMsLterJ;aBnatJ;ive4;os;nd;ah,eg07ot;en;it;rKsk5;an;mi2;em,i,medabJ;ad;a,gregatMnoKoJ;ny;stD;ic;e,i7;fKs,terlJ;ife;!aiJect3;rs;d3miPvJ;aKeJ;nt,rse4;iLntagJ;eoH;us;ta;n,ttJ;ed4;ly;ed;cLhi2quKu8;te;aiAisiB;esso6oKumuJ;laB;mLuntJ;aAi2;ng;modaBpaniJ;meA;nt;ti7;on;ry;domLoGusiJ;ve;de;an,in9;al;na\"});let D=Object.keys(A);const E=1.1*A[D[D.length-1]];var B=function(e){e.prototype.tfidf=function(e={},t){let i=g(this,e),r=Object.entries(i);return r=r.map((e=>{let[t,i]=e,r=i*(A[t]||E);return r=Math.round(100*r)/100,e[1]=r,e})),r.sort(((e,t)=>e[1]>t[1]?-1:e[1]<t[1]?1:0))},e.prototype.buildIDF=y};var K={compute:{tfidf:e=>{let t=e.tfidf();t=t.reduce(((e,t)=>(e[t[0]]=t[1],e)),{}),e.docs.forEach((e=>{e.forEach((e=>{e.tfidf=t[e.root||e.implicit||e.normal]||0}))}))}},api:function(e){h(e),B(e)}};export{K as default};\n"
  },
  {
    "path": "plugins/stats/demo/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n\n  <script src=\"https://unpkg.com/compromise\"></script>\n  <!-- <script src=\"https://unpkg.com/compromise-stats\"></script> -->\n  <script src=\"../builds/compromise-stats.min.js\"></script>\n\n</head>\n\n<body>\n  <p>compromise-stats demo:</p>\n  <ul>\n    <kbd>Who keeps the metric system down? We do, we do! </kbd>\n    <pre id=\"res\">loading</pre>\n  </ul>\n\n  <script defer>\n    nlp.plugin(compromiseStats) // window.compromiseDates\n    let txt = document.querySelector('kbd').innerText\n    let doc = nlp(txt)\n    let json = doc.ngrams()\n    document.querySelector('#res').innerHTML = JSON.stringify(json, null, 2)\n  </script>\n</body>\n\n</html>"
  },
  {
    "path": "plugins/stats/index.d.ts",
    "content": "import nlp from 'compromise'\n\nexport type Freq = [word: string, freq: number]\n\ntype Gram = { size: number, count: number, normal: string }\ntype Opts = { min: number, max: number } | { size: number }\n\nexport interface StatsMethods {\n  /** list all repeating sub-phrases, by word-count*/\n  ngrams(options?: Opts): Gram[]\n  /** n-grams with one word*/\n  unigrams(index?: number): Gram[]\n  /** n-grams with two words*/\n  bigrams(index?: number): Gram[]\n  /** n-grams with three words*/\n  trigrams(index?: number): Gram[]\n  /** n-grams including the first term of a phrase*/\n  startgrams(options?: Opts): Gram[]\n  /** n-grams including the last term of a phrase*/\n  endgrams(options?: Opts): Gram[]\n  /** n-grams including the first or last term of a phrase*/\n  edgegrams(options?: Opts): Gram[]\n\n  /** compute word-importance in this document */\n  tfidf(): Freq[]\n}\n\n/** extended compromise lib **/\ndeclare const nlpStats: nlp.TypedPlugin<StatsMethods>\n\nexport default nlpStats\n"
  },
  {
    "path": "plugins/stats/package.json",
    "content": "{\n  \"name\": \"compromise-stats\",\n  \"description\": \"plugin for nlp-compromise\",\n  \"version\": \"0.1.1\",\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"main\": \"./src/plugin.js\",\n  \"unpkg\": \"./builds/compromise-stats.min.js\",\n  \"type\": \"module\",\n  \"module\": \"./builds/compromise-stats.mjs\",\n  \"sideEffects\": false,\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./src/plugin.js\",\n      \"require\": \"./builds/compromise-stats.cjs\",\n      \"types\": \"./index.d.ts\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise/tree/master/plugins/stats\",\n  \"scripts\": {\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"testb\": \"TESTENV=prod tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"generate\": \"node ./scripts/generate.js\",\n    \"stat\": \"node ./scripts/stat.js\",\n    \"perf\": \"node ./scripts/perf.js\",\n    \"build\": \"rollup -c --silent\"\n  },\n  \"files\": [\n    \"builds/\",\n    \"src/\",\n    \"index.d.ts\"\n  ],\n  \"peerDependencies\": {\n    \"compromise\": \">=14.0.0\"\n  },\n  \"dependencies\": {\n    \"efrt\": \"^2.5.0\"\n  },\n  \"devDependencies\": {},\n  \"license\": \"MIT\"\n}"
  },
  {
    "path": "plugins/stats/scratch.js",
    "content": "/* eslint-disable no-console, no-unused-vars */\n// import corpus from 'nlp-corpus'\nimport nlp from '../../src/three.js'\nimport plugin from './src/plugin.js'\nnlp.extend(plugin)\n\n// let txt = 'toronto raptors play a toronto maple leafs'\n// let doc = nlp(txt)\n// console.log(doc.ngrams())\n\nconst doc = nlp('one two three. one two foo.')\nconst res = doc.ngrams({ min: 3 })\n/*[\n  { size: 3, count: 1, normal: 'one two three' },\n  { size: 3, count: 1, normal: 'one two foo' }\n]\n*/\nconsole.log(res)\n// let txt = 'no, my son is also named Bort'\n\n// let doc = nlp(txt)\n// // console.log(doc.tfidf())\n// doc.compute('tfidf')\n// console.log(JSON.stringify(doc.json()[0].terms[6]))"
  },
  {
    "path": "plugins/stats/scripts/generate.js",
    "content": "/* eslint-disable no-console */\nimport corpus from 'nlp-corpus'\nimport fs from 'fs'\nimport nlp from '../../../src/three.js'\nimport plugin from '../src/plugin.js'\nnlp.extend(plugin)\nimport idf from '../src/tfidf/idf.js'\nimport zipUp from './pack.js'\n\nconst fileSize = (pathStr) => {\n  const kb = fs.statSync(pathStr).size / 1024\n  return Math.round(kb) + 'kb'\n}\n\n// let txt = corpus.some(1000).join('\\n')\nconst txt = corpus.all().join(`\\n`)\n\nconst doc = nlp(txt).compute('root')\nconst counts = idf(doc, { use: 'root', min: 4 })\n\n// collect by freq\nconst byFreq = zipUp(counts)\n\n// console.log(counts)\nconst out = \"export default \" + JSON.stringify(byFreq, null, 2)\nfs.writeFileSync('./src/tfidf/_model.js', out)\nconsole.log(fileSize('./src/tfidf/_model.js'))\n"
  },
  {
    "path": "plugins/stats/scripts/pack.js",
    "content": "import { pack } from 'efrt'\n\nconst hasNumber = /[0-9,;!:|¦]/\nconst hasPunct = /[.,/#!$%^&*;:{}=\\-_`~()']/\nconst hasLetter = /[a-z]/\n\nconst zipUp = function (counts) {\n  const byFreq = {}\n  counts = Object.entries(counts)\n  // counts = counts.filter(a => a[1] > 2)\n  counts = counts.sort((a, b) => {\n    if (a[1] > b[1]) {\n      return 1\n    } else if (a[1] < b[1]) {\n      return -1\n    }\n    return 0\n  })\n  counts.forEach(a => {\n    const [str, num] = a\n    if (!str || hasNumber.test(str) || hasPunct.test(str) || !hasLetter.test(str)) {\n      return\n    }\n    const k = String(num)\n    byFreq[k] = byFreq[k] || []\n    byFreq[k].push(str)\n  })\n\n  //compress each key\n  Object.keys(byFreq).forEach(k => {\n    byFreq[k] = pack(byFreq[k])\n  })\n  // console.log(byFreq)\n  return byFreq\n}\nexport default zipUp"
  },
  {
    "path": "plugins/stats/src/compute.js",
    "content": "\nconst compute = {\n  // this is just the same thing\n  // but written to Term objects\n  tfidf: (view) => {\n    let res = view.tfidf()\n    res = res.reduce((h, a) => {\n      h[a[0]] = a[1]\n      return h\n    }, {})\n    view.docs.forEach(terms => {\n      terms.forEach(term => {\n        term.tfidf = res[term.root || term.implicit || term.normal] || 0\n      })\n    })\n  }\n}\nexport default compute"
  },
  {
    "path": "plugins/stats/src/ngram/endGrams.js",
    "content": "const defaults = {\n  max: 4,\n  min: 1,\n}\n\nconst oneSize = function (list, size) {\n  const grams = {}\n  // count each instance\n  list.forEach(terms => {\n    const len = terms.length\n    for (let i = 0; i <= terms.length; i += 1) {\n      const slice = terms.slice(len - i, len)\n      if (slice.length === size) {\n        const str = slice.join(' ')\n        if (grams.hasOwnProperty(str)) {\n          grams[str].count += 1\n        } else {\n          grams[str] = {\n            size: size,\n            count: 1,\n          }\n        }\n      }\n    }\n  })\n  // turn them into an array\n  const arr = Object.keys(grams).map(k => {\n    grams[k].normal = k\n    return grams[k]\n  })\n  return arr\n}\n\nconst endGrams = function (list, options) {\n  // support {size:2} syntax\n  if (options.size) {\n    options.min = options.size\n    options.max = options.size\n  }\n  const max = options.max || defaults.max\n  const min = options.min || defaults.min\n  let arr = []\n  for (let size = min; size <= max; size++) {\n    arr = arr.concat(oneSize(list, size))\n  }\n  return arr\n}\nexport default endGrams\n"
  },
  {
    "path": "plugins/stats/src/ngram/getGrams.js",
    "content": "const defaults = {\n  max: 4,\n  min: 1,\n}\n\nconst oneSize = function (list, size) {\n  const grams = {}\n  // count each instance\n  list.forEach(terms => {\n    for (let i = 0; i < terms.length; i += 1) {\n      const slice = terms.slice(i, i + size)\n      if (slice.length === size) {\n        const str = slice.join(' ')\n        if (grams.hasOwnProperty(str)) {\n          grams[str].count += 1\n        } else {\n          grams[str] = {\n            size: size,\n            count: 1,\n          }\n        }\n      }\n    }\n  })\n  // turn them into an array\n  const arr = Object.keys(grams).map(k => {\n    grams[k].normal = k\n    return grams[k]\n  })\n  return arr\n}\n\nconst allGrams = function (list, options) {\n  // support {size:2} syntax\n  if (options.size) {\n    options.min = options.size\n    options.max = options.size\n  }\n  const max = options.max || defaults.max\n  const min = options.min || defaults.min\n  let arr = []\n  for (let size = min; size <= max; size += 1) {\n    arr = arr.concat(oneSize(list, size))\n  }\n  return arr\n}\nexport default allGrams\n"
  },
  {
    "path": "plugins/stats/src/ngram/index.js",
    "content": "import getGrams from './getGrams.js'\nimport startGrams from './startGrams.js'\nimport endGrams from './endGrams.js'\nimport tokenize from './tokenize.js'\nimport sort from './sort.js'\n\nconst addMethod = function (View) {\n  /** list all repeating sub-phrases, by word-count */\n  View.prototype.ngrams = function (obj) {\n    const list = tokenize(this)\n    let arr = getGrams(list, obj || {})\n    arr = sort(arr)\n    return arr\n  }\n  View.prototype.nGrams = View.prototype.ngrams\n  View.prototype.ngram = View.prototype.ngrams\n\n  /** n-grams with one word */\n  View.prototype.unigrams = function (n) {\n    let arr = getGrams(tokenize(this), { max: 1, min: 1 })\n    arr = sort(arr)\n    if (typeof n === 'number') {\n      arr = arr[n]\n    }\n    return arr\n  }\n  View.prototype.uniGrams = View.prototype.unigrams\n\n  /** n-grams with two words */\n  View.prototype.bigrams = function (n) {\n    let arr = getGrams(tokenize(this), { max: 2, min: 2 })\n    arr = sort(arr)\n    if (typeof n === 'number') {\n      arr = arr[n]\n    }\n    return arr\n  }\n  View.prototype.biGrams = View.prototype.bigrams\n\n  /** n-grams with three words */\n  View.prototype.trigrams = function (n) {\n    let arr = getGrams(tokenize(this), { max: 3, min: 3 })\n    arr = sort(arr)\n    if (typeof n === 'number') {\n      arr = arr[n]\n    }\n    return arr\n  }\n  View.prototype.triGrams = View.prototype.trigrams\n\n  /** list all repeating sub-phrases, using the first word */\n  View.prototype.startgrams = function (obj) {\n    const list = tokenize(this)\n    let arr = startGrams(list, obj || {})\n    arr = sort(arr)\n    return arr\n  }\n  View.prototype.startGrams = View.prototype.startgrams\n\n  /** list all repeating sub-phrases, connected to the last word of each phrase */\n  View.prototype.endgrams = function (obj) {\n    const list = tokenize(this)\n    let arr = endGrams(list, obj || {})\n    arr = sort(arr)\n    return arr\n  }\n  View.prototype.endGrams = View.prototype.endgrams\n\n  /** list all repeating sub-phrases, connected to the last word of each phrase */\n  View.prototype.edgegrams = function (obj) {\n    const list = tokenize(this)\n    const start = startGrams(list, obj || {})\n    const end = endGrams(list, obj || {})\n    // combine them together\n    const all = start.concat(end)\n    const combine = all.reduce((h, a) => {\n      if (h[a.normal]) {\n        h[a.normal].count += a.count\n      } else {\n        h[a.normal] = a\n      }\n      return h\n    }, {})\n    let arr = Object.keys(combine).map(k => combine[k])\n    arr = sort(arr)\n    return arr\n  }\n  View.prototype.edgeGrams = View.prototype.edgegrams\n}\nexport default addMethod\n"
  },
  {
    "path": "plugins/stats/src/ngram/sort.js",
    "content": "const sort = function (arr) {\n  arr = arr.sort((a, b) => {\n    //first sort them by count\n    if (a.count > b.count) {\n      return -1\n    }\n    if (a.count < b.count) {\n      return 1\n    }\n    // in a tie, sort them by size\n    if (a.size > b.size) {\n      return -1\n    }\n    if (a.size < b.size) {\n      return 1\n    }\n    return 0\n  })\n  return arr\n}\nexport default sort\n"
  },
  {
    "path": "plugins/stats/src/ngram/startGrams.js",
    "content": "const defaults = {\n  max: 4,\n  min: 1,\n}\n\nconst oneSize = function (list, size) {\n  const grams = {}\n  // count each instance\n  list.forEach(terms => {\n    for (let i = 0; i <= terms.length; i += 1) {\n      const slice = terms.slice(0, i)\n      if (slice.length === size) {\n        const str = slice.join(' ')\n        if (grams.hasOwnProperty(str)) {\n          grams[str].count += 1\n        } else {\n          grams[str] = {\n            size: size,\n            count: 1,\n          }\n        }\n      }\n    }\n  })\n  // turn them into an array\n  const arr = Object.keys(grams).map(k => {\n    grams[k].normal = k\n    return grams[k]\n  })\n  return arr\n}\n\nconst startGrams = function (list, options) {\n  // support {size:2} syntax\n  if (options.size) {\n    options.min = options.size\n    options.max = options.size\n  }\n  const max = options.max || defaults.max\n  const min = options.min || defaults.min\n  let arr = []\n  for (let size = min; size <= max; size++) {\n    arr = arr.concat(oneSize(list, size))\n  }\n  return arr\n}\nexport default startGrams\n"
  },
  {
    "path": "plugins/stats/src/ngram/tokenize.js",
    "content": "// tokenize by term\nconst tokenize = function (doc) {\n  const list = doc.json({ text: false }).map(o => {\n    return o.terms.map(t => t.normal)\n  })\n  return list\n}\nexport default tokenize\n"
  },
  {
    "path": "plugins/stats/src/plugin.js",
    "content": "import ngram from './ngram/index.js'\nimport tfidf from './tfidf/index.js'\nimport compute from './compute.js'\n\nconst api = function (View) {\n  ngram(View)\n  tfidf(View)\n}\n\nexport default {\n  compute,\n  api\n}"
  },
  {
    "path": "plugins/stats/src/tfidf/_model.js",
    "content": "export default {\n  \"1.292\": \"true¦the\",\n  \"1.534\": \"true¦be\",\n  \"1.567\": \"true¦to\",\n  \"1.585\": \"true¦and\",\n  \"1.644\": \"true¦of\",\n  \"1.652\": \"true¦a\",\n  \"1.741\": \"true¦i\",\n  \"1.749\": \"true¦in\",\n  \"1.908\": \"true¦you\",\n  \"1.967\": \"true¦that\",\n  \"1.983\": \"true¦it\",\n  \"2.021\": \"true¦not\",\n  \"2.022\": \"true¦for\",\n  \"2.072\": \"true¦have\",\n  \"2.104\": \"true¦this\",\n  \"2.163\": \"true¦on\",\n  \"2.179\": \"true¦with\",\n  \"2.217\": \"true¦do\",\n  \"2.229\": \"true¦he\",\n  \"2.268\": \"true¦as\",\n  \"2.277\": \"true¦my\",\n  \"2.287\": \"true¦we\",\n  \"2.319\": \"true¦at\",\n  \"2.322\": \"true¦but\",\n  \"2.392\": \"true¦they\",\n  \"2.418\": \"true¦me\",\n  \"2.420\": \"true¦your\",\n  \"2.422\": \"true¦his\",\n  \"2.426\": \"true¦get\",\n  \"2.433\": \"true¦will\",\n  \"2.440\": \"true¦so\",\n  \"2.449\": \"true¦by\",\n  \"2.456\": \"true¦all\",\n  \"2.461\": \"true¦can\",\n  \"2.477\": \"true¦from,say\",\n  \"2.481\": \"true¦go\",\n  \"2.495\": \"true¦she\",\n  \"2.509\": \"true¦or\",\n  \"2.524\": \"true¦if,what\",\n  \"2.533\": \"true¦her\",\n  \"2.539\": \"true¦one\",\n  \"2.557\": \"true¦when\",\n  \"2.565\": \"true¦make\",\n  \"2.569\": \"true¦an\",\n  \"2.592\": \"true¦our\",\n  \"2.595\": \"true¦know\",\n  \"2.596\": \"true¦out\",\n  \"2.597\": \"true¦up\",\n  \"2.599\": \"true¦was\",\n  \"2.603\": \"true¦just\",\n  \"2.614\": \"true¦there\",\n  \"2.632\": \"true¦like\",\n  \"2.643\": \"true¦about\",\n  \"2.645\": \"true¦would\",\n  \"2.647\": \"true¦no,time\",\n  \"2.649\": \"true¦is\",\n  \"2.665\": \"true¦come\",\n  \"2.684\": \"true¦him\",\n  \"2.693\": \"true¦who\",\n  \"2.703\": \"true¦more\",\n  \"2.713\": \"true¦good\",\n  \"2.718\": \"true¦which\",\n  \"2.719\": \"true¦their\",\n  \"2.721\": \"true¦had\",\n  \"2.726\": \"true¦them\",\n  \"2.732\": \"true¦person\",\n  \"2.739\": \"true¦toronto\",\n  \"2.743\": \"true¦take\",\n  \"2.747\": \"true¦now,think\",\n  \"2.756\": \"true¦see\",\n  \"2.757\": \"true¦are\",\n  \"2.758\": \"true¦then\",\n  \"2.766\": \"true¦want\",\n  \"2.777\": \"true¦new\",\n  \"2.801\": \"true¦some\",\n  \"2.824\": \"true¦into\",\n  \"2.827\": \"true¦first\",\n  \"2.831\": \"true¦us\",\n  \"2.832\": \"true¦year\",\n  \"2.833\": \"true¦could\",\n  \"2.845\": \"true¦day\",\n  \"2.847\": \"true¦how\",\n  \"2.850\": \"true¦only\",\n  \"2.856\": \"true¦very\",\n  \"2.864\": \"true¦back\",\n  \"2.868\": \"true¦look\",\n  \"2.870\": \"true¦work\",\n  \"2.878\": \"true¦aft0oth0;er\",\n  \"2.882\": \"true¦than\",\n  \"2.893\": \"true¦because\",\n  \"2.898\": \"true¦these\",\n  \"2.902\": \"true¦well\",\n  \"2.903\": \"true¦great\",\n  \"2.909\": \"true¦tell\",\n  \"2.911\": \"true¦call\",\n  \"2.913\": \"true¦its\",\n  \"2.921\": \"true¦down\",\n  \"2.923\": \"true¦give\",\n  \"2.924\": \"true¦h0;as,ere\",\n  \"2.927\": \"true¦also,thing\",\n  \"2.929\": \"true¦find\",\n  \"2.930\": \"true¦right\",\n  \"2.934\": \"true¦over\",\n  \"2.955\": \"true¦way\",\n  \"2.967\": \"true¦man\",\n  \"2.968\": \"true¦where\",\n  \"2.972\": \"true¦place\",\n  \"2.977\": \"true¦ask\",\n  \"2.978\": \"true¦two\",\n  \"2.979\": \"true¦little,should\",\n  \"2.982\": \"true¦use\",\n  \"2.990\": \"true¦am\",\n  \"3.012\": \"true¦ne0;ed,ver\",\n  \"3.019\": \"true¦any\",\n  \"3.023\": \"true¦before\",\n  \"3.026\": \"true¦love\",\n  \"3.038\": \"true¦most\",\n  \"3.043\": \"true¦must\",\n  \"3.045\": \"true¦too\",\n  \"3.047\": \"true¦off\",\n  \"3.048\": \"true¦u\",\n  \"3.049\": \"true¦much\",\n  \"3.050\": \"true¦try\",\n  \"3.061\": \"true¦let\",\n  \"3.063\": \"true¦really\",\n  \"3.067\": \"true¦why\",\n  \"3.068\": \"true¦world\",\n  \"3.074\": \"true¦help\",\n  \"3.075\": \"true¦did\",\n  \"3.080\": \"true¦long\",\n  \"3.083\": \"true¦name\",\n  \"3.090\": \"true¦last\",\n  \"3.097\": \"true¦still\",\n  \"3.100\": \"true¦were\",\n  \"3.103\": \"true¦may\",\n  \"3.105\": \"true¦mean\",\n  \"3.106\": \"true¦friend\",\n  \"3.107\": \"true¦american\",\n  \"3.111\": \"true¦even,keep\",\n  \"3.114\": \"true¦every\",\n  \"3.115\": \"true¦many\",\n  \"3.118\": \"true¦home\",\n  \"3.121\": \"true¦again\",\n  \"3.122\": \"true¦put\",\n  \"3.123\": \"true¦leave\",\n  \"3.138\": \"true¦feel\",\n  \"3.141\": \"true¦old\",\n  \"3.143\": \"true¦play\",\n  \"3.147\": \"true¦king\",\n  \"3.156\": \"true¦city\",\n  \"3.158\": \"true¦state\",\n  \"3.159\": \"true¦food,while\",\n  \"3.165\": \"true¦start\",\n  \"3.170\": \"true¦high\",\n  \"3.171\": \"true¦been,life,through\",\n  \"3.174\": \"true¦those\",\n  \"3.178\": \"true¦oh\",\n  \"3.180\": \"true¦night\",\n  \"3.182\": \"true¦child\",\n  \"3.187\": \"true¦hear\",\n  \"3.188\": \"true¦woman\",\n  \"3.189\": \"true¦bring,country,live,prince\",\n  \"3.200\": \"true¦game\",\n  \"3.203\": \"true¦court,going\",\n  \"3.204\": \"true¦late\",\n  \"3.205\": \"true¦end\",\n  \"3.207\": \"true¦own\",\n  \"3.214\": \"true¦always\",\n  \"3.219\": \"true¦such\",\n  \"3.222\": \"true¦around\",\n  \"3.229\": \"true¦open\",\n  \"3.233\": \"true¦house\",\n  \"3.239\": \"true¦best\",\n  \"3.244\": \"true¦same\",\n  \"3.247\": \"true¦eat\",\n  \"3.250\": \"true¦change\",\n  \"3.255\": \"true¦top\",\n  \"3.256\": \"true¦ever\",\n  \"3.257\": \"true¦meet,part\",\n  \"3.258\": \"true¦next\",\n  \"3.259\": \"true¦without\",\n  \"3.260\": \"true¦once\",\n  \"3.261\": \"true¦away,show\",\n  \"3.263\": \"true¦both\",\n  \"3.264\": \"true¦america\",\n  \"3.267\": \"true¦job\",\n  \"3.269\": \"true¦another\",\n  \"3.271\": \"true¦bad\",\n  \"3.272\": \"true¦guy,hand\",\n  \"3.275\": \"true¦something\",\n  \"3.276\": \"true¦order\",\n  \"3.278\": \"true¦include\",\n  \"3.280\": \"true¦yeah\",\n  \"3.285\": \"true¦family\",\n  \"3.286\": \"true¦girl,under\",\n  \"3.287\": \"true¦three\",\n  \"3.290\": \"true¦become,run,talk\",\n  \"3.297\": \"true¦each\",\n  \"3.299\": \"true¦big\",\n  \"3.301\": \"true¦head\",\n  \"3.303\": \"true¦set\",\n  \"3.306\": \"true¦school,today\",\n  \"3.312\": \"true¦turn\",\n  \"3.317\": \"true¦begin\",\n  \"3.319\": \"true¦wait\",\n  \"3.321\": \"true¦large\",\n  \"3.329\": \"true¦haha\",\n  \"3.330\": \"true¦party\",\n  \"3.331\": \"true¦might\",\n  \"3.335\": \"true¦service\",\n  \"3.341\": \"true¦government\",\n  \"3.342\": \"true¦between,cause\",\n  \"3.350\": \"true¦small\",\n  \"3.351\": \"true¦since\",\n  \"3.353\": \"true¦walk\",\n  \"3.355\": \"true¦hold,sure\",\n  \"3.358\": \"true¦nothing,send\",\n  \"3.361\": \"true¦pay\",\n  \"3.364\": \"true¦believe\",\n  \"3.366\": \"true¦care\",\n  \"3.369\": \"true¦buy,room\",\n  \"3.371\": \"true¦until\",\n  \"3.381\": \"true¦hour\",\n  \"3.382\": \"true¦upon\",\n  \"3.383\": \"true¦number,stand\",\n  \"3.386\": \"true¦word\",\n  \"3.389\": \"true¦lot,though\",\n  \"3.392\": \"true¦money\",\n  \"3.394\": \"true¦done\",\n  \"3.395\": \"true¦s0;econd,it\",\n  \"3.397\": \"true¦together\",\n  \"3.400\": \"true¦wife\",\n  \"3.401\": \"true¦move,water,young\",\n  \"3.404\": \"true¦enough\",\n  \"3.406\": \"true¦point,seem\",\n  \"3.407\": \"true¦hard\",\n  \"3.409\": \"true¦during,soon\",\n  \"3.411\": \"true¦does\",\n  \"3.412\": \"true¦everything,light\",\n  \"3.414\": \"true¦stop\",\n  \"3.415\": \"true¦face,write\",\n  \"3.422\": \"true¦company\",\n  \"3.423\": \"true¦fall\",\n  \"3.425\": \"true¦against,few\",\n  \"3.428\": \"true¦create\",\n  \"3.430\": \"true¦busine0different,pa0;ss\",\n  \"3.433\": \"true¦area,free\",\n  \"3.438\": \"true¦book,law\",\n  \"3.439\": \"true¦lose,tonight\",\n  \"3.441\": \"true¦eye,okay\",\n  \"3.444\": \"true¦lead,pretty\",\n  \"3.446\": \"true¦anything,stay\",\n  \"3.449\": \"true¦case\",\n  \"3.451\": \"true¦gandhi\",\n  \"3.456\": \"true¦issue\",\n  \"3.460\": \"true¦die\",\n  \"3.465\": \"true¦someone\",\n  \"3.467\": \"true¦cut,drink,watch\",\n  \"3.469\": \"true¦hope\",\n  \"3.470\": \"true¦far,side,united\",\n  \"3.472\": \"true¦got,quite\",\n  \"3.474\": \"true¦type\",\n  \"3.476\": \"true¦base,form,kill\",\n  \"3.478\": \"true¦act,serve,week\",\n  \"3.479\": \"true¦line\",\n  \"3.485\": \"true¦h0restaurant;appen,owever\",\n  \"3.487\": \"true¦kind\",\n  \"3.488\": \"true¦bar,plan\",\n  \"3.490\": \"true¦nation\",\n  \"3.492\": \"true¦cry,support\",\n  \"3.494\": \"true¦star,white\",\n  \"3.496\": \"true¦congress,reach\",\n  \"3.498\": \"true¦himself\",\n  \"3.500\": \"true¦close,nice,return\",\n  \"3.502\": \"true¦hey\",\n  \"3.504\": \"true¦problem\",\n  \"3.506\": \"true¦remember\",\n  \"3.507\": \"true¦already,power,s0;een,ystem\",\n  \"3.511\": \"true¦month,win\",\n  \"3.513\": \"true¦princess\",\n  \"3.515\": \"true¦body,term\",\n  \"3.517\": \"true¦ha0marry,yet;lf,ppy\",\n  \"3.519\": \"true¦break\",\n  \"3.521\": \"true¦car,heart,less,question\",\n  \"3.523\": \"true¦answer,build,door\",\n  \"3.525\": \"true¦war\",\n  \"3.527\": \"true¦boy,century,father\",\n  \"3.529\": \"true¦distri0fa0level;ct\",\n  \"3.533\": \"true¦used\",\n  \"3.535\": \"true¦group,hit,read,whole\",\n  \"3.538\": \"true¦thank\",\n  \"3.540\": \"true¦fire,wish\",\n  \"3.542\": \"true¦mind,president\",\n  \"3.544\": \"true¦idea,throw\",\n  \"3.546\": \"true¦continue,minute\",\n  \"3.548\": \"true¦follow,national\",\n  \"3.552\": \"true¦baby\",\n  \"3.555\": \"true¦dec2experien1pr0;i0ov1;ce;ide\",\n  \"3.557\": \"true¦shall\",\n  \"3.559\": \"true¦check\",\n  \"3.561\": \"true¦actually,health\",\n  \"3.565\": \"true¦reason\",\n  \"3.568\": \"true¦please\",\n  \"3.570\": \"true¦shop\",\n  \"3.572\": \"true¦near\",\n  \"3.574\": \"true¦consider,yourself\",\n  \"3.579\": \"true¦full,history,kid,table\",\n  \"3.581\": \"true¦team\",\n  \"3.586\": \"true¦add,real,tax\",\n  \"3.588\": \"true¦else,fight,interest,million,poor,sorry\",\n  \"3.591\": \"true¦low,ma0strong;rket,tter\",\n  \"3.593\": \"true¦often,son\",\n  \"3.595\": \"true¦maybe,till\",\n  \"3.598\": \"true¦force,town\",\n  \"3.600\": \"true¦course\",\n  \"3.602\": \"true¦e0;arly,vent\",\n  \"3.605\": \"true¦black,college,foot,least,mother,spend\",\n  \"3.607\": \"true¦fast\",\n  \"3.610\": \"true¦dog,future,god,lady\",\n  \"3.612\": \"true¦able,claim,s0;everal,peak,treet\",\n  \"3.615\": \"true¦red\",\n  \"3.620\": \"true¦horse,pro0sell;bably,gram\",\n  \"3.622\": \"true¦morning,offer\",\n  \"3.625\": \"true¦learn,sign\",\n  \"3.627\": \"true¦deal,four\",\n  \"3.632\": \"true¦bit,others,sleep\",\n  \"3.635\": \"true¦bed,m0present;usic,yself\",\n  \"3.638\": \"true¦bro0ei0ok,public,queen,store;ther\",\n  \"3.640\": \"true¦commun0secur0;ity\",\n  \"3.643\": \"true¦class,everyone,l0wear;and,etter\",\n  \"3.646\": \"true¦grow,sound,whether\",\n  \"3.648\": \"true¦drive,enjoy,mr\",\n  \"3.651\": \"true¦allow,carry,hot,parent,rule,save,yes\",\n  \"3.654\": \"true¦easy,la,pick,tree\",\n  \"3.656\": \"true¦bill,drop,fi0member,states,ur;lm,ne\",\n  \"3.659\": \"true¦british\",\n  \"3.662\": \"true¦death,receive\",\n  \"3.665\": \"true¦choose,d0office,visit;octor,ream\",\n  \"3.667\": \"true¦john\",\n  \"3.670\": \"true¦chicken\",\n  \"3.673\": \"true¦age,fro0n,park,stude0within;nt\",\n  \"3.676\": \"true¦air,de,result\",\n  \"3.679\": \"true¦finish,round,step,uh\",\n  \"3.682\": \"true¦e,north,player\",\n  \"3.685\": \"true¦dinner,s0;hort,outh\",\n  \"3.687\": \"true¦almo0disease,ground,instead,pa0;st\",\n  \"3.690\": \"true¦join\",\n  \"3.693\": \"true¦c0island,wrong;lick,over\",\n  \"3.696\": \"true¦dead,gone,trade\",\n  \"3.699\": \"true¦account,clean,fly,novel,outside,story,understand\",\n  \"3.702\": \"true¦beautiful,cost,decision,field\",\n  \"3.705\": \"true¦a0;long,ttack\",\n  \"3.708\": \"true¦fuck,los\",\n  \"3.712\": \"true¦c0forget,gold,increase;haracter,ommon\",\n  \"3.715\": \"true¦ball,peace,true\",\n  \"3.718\": \"true¦a1date,education,fun,l0middle,rest,tornado;ay,ol;go,ngeles\",\n  \"3.721\": \"true¦appear,rather\",\n  \"3.724\": \"true¦moment\",\n  \"3.727\": \"true¦enter,finally,taken\",\n  \"3.731\": \"true¦across,economy,fairy,important,ride,seek\",\n  \"3.734\": \"true¦given,major,s0;o0pe0taff,ummer;cial\",\n  \"3.737\": \"true¦listen\",\n  \"3.740\": \"true¦cold,road\",\n  \"3.744\": \"true¦challenge,example,phone,train\",\n  \"3.747\": \"true¦clear,dance,list,record,sea0taste;!t\",\n  \"3.751\": \"true¦le0rate,single;ague,ft\",\n  \"3.754\": \"true¦a1byr2club,huge,indian,r0share;eply,oll;cti0rt;on\",\n  \"3.757\": \"true¦song\",\n  \"3.761\": \"true¦complete,friendly,process\",\n  \"3.764\": \"true¦alone,behind,catch,dear,federal,human,inside\",\n  \"3.768\": \"true¦anyone,budget,dress,leader,note,ready,stuff,view\",\n  \"3.771\": \"true¦position,ring\",\n  \"3.775\": \"true¦among,raise,study\",\n  \"3.779\": \"true¦although,bank,east,possible,review,t0;!hird\",\n  \"3.782\": \"true¦c0hahaha,information,nigga,pull,remain,west;at,harge\",\n  \"3.786\": \"true¦expect,general,produce,re0window;form,port,search\",\n  \"3.790\": \"true¦effort,five,local,sister,wall\",\n  \"3.793\": \"true¦born,language,paper,sometimes\",\n  \"3.797\": \"true¦c0lie,miss,space,title,university;!apital,ontrol\",\n  \"3.801\": \"true¦green,pr0;actice,oduct\",\n  \"3.805\": \"true¦beer\",\n  \"3.808\": \"true¦couple,especially,kingdom\",\n  \"3.812\": \"true¦arm,employee,fill,hang,require,subject,test\",\n  \"3.816\": \"true¦daught0giant,india,piece,rock,wond0;er\",\n  \"3.820\": \"true¦chance,press,river\",\n  \"3.824\": \"true¦agree,c5drug,hundred,noti4p1s0value;en2hip,pot,tanda5weet;ala2olitical,ro0;mi0tein;se;ce;a0itizen;rd\",\n  \"3.828\": \"true¦building,coffee,develop,french,item,s0whose;even,hit\",\n  \"3.832\": \"true¦choice,design,file,hair,location\",\n  \"3.837\": \"true¦menu,opportunity,weapon\",\n  \"3.841\": \"true¦difference,go1master,n0society,wind;atur0early;al\",\n  \"3.845\": \"true¦c2d0energy,fe1worker;efinitely,oll0;ar;ertain,redit\",\n  \"3.849\": \"true¦board,fish,recommend,teacher,voice,w0;ake,hom\",\n  \"3.853\": \"true¦ah,individual,po0secret,thus,worth;pular,st\",\n  \"3.858\": \"true¦amount,bear,e0fail,picture,six;ffect,xplain\",\n  \"3.862\": \"true¦fair,t0uk,v,ya;each,hemselves\",\n  \"3.866\": \"true¦animal,blue,church,fat,leg,mine,protect,rise,travel\",\n  \"3.871\": \"true¦a1count,forward,movie,perfect,s0;hoot,trike;bove,ddress\",\n  \"3.875\": \"true¦a0famous,liver,population,self;greement,ttempt\",\n  \"3.880\": \"true¦b3c2evidence,gla1hi,ro1s0;kill,port;ss;hain,ondition;enefit,itch\",\n  \"3.885\": \"true¦co0english,favorite,joke,quality,treat;lor,ncern\",\n  \"3.889\": \"true¦b1deep,economic,figure,period,s0;afe,ex,ituation;ird,ox\",\n  \"3.894\": \"true¦appeal,d3hall,r1t0york;ou1v;i0ose;ch;etermine,raw\",\n  \"3.899\": \"true¦c1guess,key,option,p0recognize;olouse,rofessional;ontract,ustomer\",\n  \"3.903\": \"true¦apply,cross,describe,freedom,girlfriend,oil,pizza,s0;ing,traight\",\n  \"3.908\": \"true¦due,e3i1kiss,mom,per,roy2s0version;!pring;nternation0tself;al;arth,ngland\",\n  \"3.913\": \"true¦al,b1c0identify,source;ell,heese;!eing,lock\",\n  \"3.918\": \"true¦cent4degree,hate,m2prepare,re0sun,tr1weekend;f3lationsh0;ip;a0ovement;in,rch;er\",\n  \"3.923\": \"true¦b1co0dad,enemy,floor,propose,science,vote,wine;mputer,ol;eauty,lood\",\n  \"3.928\": \"true¦beat,d0ma1plant,suppose,wood;a0ouble;rk\",\n  \"3.933\": \"true¦accord,canada,dama1jud1lunch,sty0troub0;le;ge\",\n  \"3.939\": \"true¦arrive,di1fre1gr0jump,laugh,motion,search,unless,written;ant,eek;sh\",\n  \"3.944\": \"true¦a4former,industry,majes5o2person3realize,s0uni1;eas0ir,tati0;on;ffici0rigin0;al;ctivi0uthor,ward;ty\",\n  \"3.949\": \"true¦anyway,cook,f0herself,stick,wedding;it,lavor\",\n  \"3.955\": \"true¦complete1golden,ice,m0nor,responsibility,tomorrow,usual1;eal,ile;ly\",\n  \"3.960\": \"true¦a1b0cri2difficult,focus,govt,particular,terrible;low,us;pril,weso0;me\",\n  \"3.966\": \"true¦ba2centre,hurt,joey,m0private,simply;arriage,e0;at,ntion;g,ttle\",\n  \"3.971\": \"true¦d6etc,f4german,h3inde2m1offic5perhaps,s0tir2;ection,ite,pecific;!ilitary;ed;ost,usband;eature,urth0;er;!ick\",\n  \"3.977\": \"true¦a0cup,immediately,respect;mazing,partment\",\n  \"3.983\": \"true¦available,burg2code,f1garden,m0opinion,replace,success,thought;easure,odern;inal,low0;er\",\n  \"3.988\": \"true¦e5fund,le,m3prigio,r4s1tr0;eatment,uth;i0t;lver,ze;edical,ount0;ain;urope,vening\",\n  \"3.994\": \"true¦conduct,delicious,everybody,fellow,g7m5r2s1t0worry;arget,herefore;teal,urpri2;e0isk;duce,fu0;se;e0o2;ssage,thod;enerati0un;on\",\n  \"4.000\": \"true¦avoid,baseba4c2development,hi4nucl1s0t1;imple,ort,uper;ear;h0lause;emical,ief;ll\",\n  \"4.006\": \"true¦average,busy,corn5e4hotel,l3news,purpose,role,s1t0whatev5;ext,rust;a0hoe,uit;lad,uce;iving,ord;h,ntire;er\",\n  \"4.013\": \"true¦a3christmas,e1growth,l0pu2reward,shape,track,video;atin,ondon;ncourage,sta0;blish;dvance,rmy\",\n  \"4.019\": \"true¦billion,contain,de4f2in1s0theory,waste;erious,mile,trength;fluence,volve;estiv0inanci0un1;al;ny\",\n  \"4.025\": \"true¦aid,band,c7egg,limit,manag6nature,p4quickly,r3se2t0;e0oward;chnology,rrorist;par2rv3;!ange;ack,l0;ate;er;hina,ontact\",\n  \"4.032\": \"true¦application,discuss,e4introduce,lack,mouth,ne3p1regard,s0ten,warm;ale,enate;ro0urchase;ject,perty;!cessary;m,xactly\",\n  \"4.038\": \"true¦attention,beyond,chinese,discov2f1insurance,james,material,object,policy,s0wollstonecraft;creen,ecure;eeling,ing0;er\",\n  \"4.045\": \"true¦a5b4d3hell,m1own2principle,sentence,t0umm;ea,otal;inist0urd0;er;ecade,ry;east,ottom;bility,ttend\",\n  \"4.052\": \"true¦a8boat,cheap,d5exist,h3i2judgment,knock,l1majority,o,p0;age,erform;ink,or;mprove,rel4;ide,o0;nor,spital;e0irect;m0n;and;ccept,pproach\",\n  \"4.058\": \"true¦argument,c5dwarf,european,gain,i3kick,lift,no4o2pocket,r1suddenly,wi0;lliam,ng;ace,eg4;ccur,nli1;magi0nvite;ne;areer,onstitut0;ion\",\n  \"4.065\": \"true¦a7c6d4e3investment,s1w0yellow;an,ei1;elect,i0uggest;ght;l1xpr4;epend,ir0;ection;ivil,ulture;cc0frica,sleep;ess\",\n  \"4.072\": \"true¦anymore,burn,extremely,legal,pe4re2s0thr3winter;a0peed;d,ndwich;move,p0;eat;ople,rcent\",\n  \"4.080\": \"true¦afraid,c2maintain,nose,p1rachel,s0unit;imilar,pread,tage,upp2;artner,rove;ertain0razy;ly\",\n  \"4.087\": \"true¦ally,ca1glad,h0manner,pair,sultan,wonderful;ealthy,o1;ptain,st0;le\",\n  \"4.094\": \"true¦aBcAd8e6f4ge2heisenberg,most3s0;eptember,h0quare;ake,ut;neral0orge;ly;an,ore0ruit;ign,st;mail,x0;celle1ercise;efenda0uty;nt;alifornia,lothes;head,rgue\",\n  \"4.102\": \"true¦app9britain,c8doubt,fix,id,lo7mo6p5r3s2t0wide;ip,r0;aining,oop;ignificant,moke,word;e0icardo;cently,lease,source;ath,lus,ush;lecu2nica;ck,ss;ap,handler;le\",\n  \"4.110\": \"true¦a7b6c5eight,interview,ju3k,magic,ne2quick,re1structure,t0various;all,w3;quest,sponse;ither,twork;ne,st0;ice;ouncil,urrent;ottle,rand;chieve,ngry\",\n  \"4.117\": \"true¦cr9defense,e6football,h5i3launch,mexic4normal,pop,relate,s2t0wild;hous6o0;ugh,wer;hirt,tupid,unday;raq,tali0;an;igh2oney;asi1xp0;and;ly;eam,own\",\n  \"4.125\": \"true¦aDbCcAd9f6g5hero,internet,l4mass,no3pr2s1t0village,w7;ap,ex4;peech,tone;event,omote;body,rthern;a3ong6;as;iredra1l0;ow;ke;eliv1iamond;entral,hamb0;er;eg,irthday;gency,uthority\",\n  \"4.133\": \"true¦aCcAd8e4fou6global,income,l2model,p0religious,slow,ticket,varie7websi3;ain,hoto,m,o0roud,ursue;lBrt;eh,ibrary,oca0;te;arn,mp2x0;cept,te0;nd;ty;ai0eficit,irect0;ly;amp0omplaint;!aign;dv0ustralia;ice\",\n  \"4.142\": \"true¦a9d8gift,heavy,ir7july,lu6m5p4s3t1w0;ill1omen;hink0ool,tc;ing;ery,i2;ositive,rogre4;etal,issi1;ck;on;amn,irector;ss\",\n  \"4.150\": \"true¦a4ban,c0desire,ear,forth,ho,lo2museum,rush,statu3truck;elebra2o0;a0rr4;st;te;ff1mend0ppoint0;ment;ect\",\n  \"4.159\": \"true¦a6c5d4fr3g2holiday,journey,length,ma1p0strange;articular7rovis6;p,ssive;ay,entleman,overnor;ance,y;ata,epartment;ake,opy,reature;bsolute1ddit0;ion;ly\",\n  \"4.168\": \"true¦aAb8county,d7eventually,fash6hiBi5knowled9loud,m4ob3pai2s0tmr,working;elect5now,omebody,p0tateme1;ecy,in;nt;serve,tain;ana4ouse;mpossible,nspi5;ion;esert,istance;ike,lind,order,rid0;ge;lright,wa0;re\",\n  \"4.176\": \"true¦acGbFcBd9e7fa5kitchen,m4native,p3regular,s0throughout,uncle;c1eni5oft,u0wallow;ff8rfaC;ene,o5;atient,hoebe,rop6;aBeeting;ct0ith;or;arli2nsu0;re;ecemb0iet,r;er;on0rowd;clude,v0;ersation,in0;ce;ite,ranch;id\",\n  \"4.186\": \"true¦aEbDc9de8fancy,inveFjaquel7known,likely,ma6o5p2represBs1t0weather,youth;ask,ie,owards,ri3;cotland,kE;hysic1o0;rtion,verty;al;cean,verall;ch0d;ine;bt,tail;ha2o0;mmitm0nfirm;ent;ir,rming;oss,reakfa1;ladd1rre0;st;in\",\n  \"4.195\": \"true¦airport,below,cDdAe8h6jury,le5m4o3prize,roof,s1wa0yo;shingtBt;ca5heep,ky,pir0ubm0;it;oh,pening,rganizati8;atch,ou4;adership,ss6;and0eat,uh;le;nvironme0qual,verywhere,x;nt;emocracy,r0;ag0iver;on;arpet,o0;mplex,nnect\",\n  \"4.205\": \"true¦aCbAcoBdestroy,e9farm,g7initiative,mil6p4s2t1w0;!elfaCheel;elevisFiny;ett0oldi5plit,trugg0;le;acific,erfecAlaying,o0;litics,und;k,lions;ath0uard;er;ngage,xtra;e0owl,rain;ach;dmi3pparen2s1tmosphe0;re;ian,sociate;tly;nistrat0t;ion\",\n  \"4.214\": \"true¦aCbAd8f5gra4mon3p2relief,s1t0urge,weird;error,hreaten;atur1erious4hould5pendi9tatus;etit6ref4;day;mmar,nd;arm1ebruary,ollowi5ul0;ly;er;ecline,ivis0;ion;asic,elo0;ng;narchist,rticle\",\n  \"4.224\": \"true¦aNbJcGdisordFeDfCimage,joy,knowBlegislatAmonstFp7r4s1transfFwa0yesterday;itAsh;essiIoul,t1u0;cc9rround;ock,r7;e0obert;a0quire8;lity,sonA;l1o0ress2;em,tential;aintiff,eas0;ure;ing;eed;ra,scape,vil,xperi0;ment;er;a1omfort0;able;fe,sh;asically,et,r1utt0;on;ight,o0;k2wn;im,l0rtist;haz0ive;en\",\n  \"4.234\": \"true¦aKbIcGdDelement,fCgraBill,j9kinda,l7m5onto,p2quart8safeFt1u0;m,su5;ailor,housands,otally,radiJ;i1r0;isIoducH;nk,tch3;ill2usic0;al;awy0iao;er;a0urisdicB;nuary,panese;b,ss;allen,irm,riday;espi9i0runk;r0vide;ty;ircumstance,o0u6;llect,urage;athroom,o0;ot,st2;fford,ppropria2rbitra0;ti0;on;te\",\n  \"4.245\": \"true¦annouLcGdeFemployEfAhorribBlemKm9neighbor,ourselves,p6r5s1thin,w0;ave,ent;cream,eize,hi2outhern,p1t0;rengthen,uck;anish,eakA;ft,ne;emind,omaF;o1r0;esent5oceed;ol,ur;emory,ode;a1ema0old3;le;ir0ult;ly;er;feat,pre3;hannel,o0;m0s;mi0pare;ssi0;on;nce\",\n  \"4.256\": \"true¦aRbJcIdFeEfChBimpose,japAknight,l9m8na,orange,r5s2t0unfortunate1vegetable,writPx;homas,ru0;ly;cienti1mart,u0;gar,shi;fCst;ank,e0iK;ce0ligMpublAspoGtire,volutM;nt,ss;edicine,istake;o0ucky;an;elpful,unt;!antast4la0;g,t;rror,xecutiF;e0ifficulty;fe6mocrat0;ic;harles,ommit;alan6e4o2r0;e0o0;ad;w,yfrie0;nd;ginn0n;ing;ce;ppro2s0ugust;ia,sociat0;ion;ve\",\n  \"4.267\": \"true¦aJbid,cEdDeAfacili9g8ii,load,m5p4r2st1tail,w0;elcome,henever,rap;able,orm;adio,e0;cove3j8;len4ot;a1e0;dia,ntal;ry;a2uide;ty;d5l1ngine,stima0xchan5;te;ect;are,ec3;h3o0;mmand,ns1vera0;ge;ent;icago,ristian;d,fternoon\",\n  \"4.278\": \"true¦aDbc,cAdang9f6gym,h5loveCm4nail,o3pr2quiet,r0successful,tour,writ9;e0oute;ference,gula5pair;etend,otest;ctob5hh,ught;agici9erchant,irr3;a,eaven;av1unc0;tion;or;er;l0ommercial,raft;ear0oud;ly;dopt,fric0;an\",\n  \"4.290\": \"true¦aKbIcGdEeAfool,growing,h9i8licenCm6november,op5root,s3t2wa1y0;ard,ours;itress,les;aco,ooth;ecretary,lightly,t0;eak,retch;erate,po6;a0ike;le,nagemE;ntend,slands;at,idden,orn;mp2x0;am,cu0pens9;se;ire,loy;a0ownload;!ngerous;lerk,on0;cept,sist;asis,e0ride;havior,lief;ccid1ffair,g1lternat0;ive;ent\",\n  \"4.301\": \"true¦aHbFcCentirely,fBgolf,honest,inveEjournal,lion,m9newspaper,otherwiIp7re6s3t2v0ye;alley,i0;ce,olen3;hou,rap;acrifi1nack,tr0;ategy,ip;ce;flect,leva7sto3;a0owerful;ttern,yme5;ama,edica0ovy,ultiple;re;etch,olk;anadi3ha5o0;mplain,nte0z;nt;ipartis0urden;an;c1dvantage,li,nybody,ri0;se;ademy,tive\",\n  \"4.314\": \"true¦aTbRcKdJfailuIgotten,iraqi,liHmFp9quDr5s2t1u0;nique,pdP;empNraffic;l1o0teel;mewheEup;a2ip;a2e0;presentati0ser0;ve;re,y;a4e2hysics,r0;ay,o0;be,tB;rm0t;it;nt,rliameF;a0inecraft;gazine,yor;berty,terally;re;etermina4isappoiArag,ude;hocol5irc4o0risis;at,ll1m0ndo;bat,mittee;ec0;tion;le;ate;eef,irth,o0;dmin,mb;ncie0ssume;nt\",\n  \"4.326\": \"true¦aObMcHdDexamiChaBiAj8label,m6n4o2plaCrandom,s1t0viole9western;ale,ech,heatOony;an,olEu3;cc0mg;asFupy;e0oise;ck;at0eaning;e,h;oi0uice;nt;gnoEnfo0;rm;ne;a1e0ismiss;bate,lay;t,v0;id;a3hest,l2ompetit1r0;a4iminal;ion;assic,ever;lm,tegory;ell,lame,u0ye;sh;dult,nywhe0;re\",\n  \"4.339\": \"true¦aMbLcEdCeAgermany,instituBj9lean,m6neighborhood,pr3richard,s1t0;ape,om;chedule,howEo0pell,upre3ymptom;lve,mewhG;evious,i1o0;posJsperity;me;a1i0orH;n,x;dam,il;ack,udiciE;astern,limina0pic;te;e0isappear;sk,vi4;a5h4o0ryst9u8;mment,n1p,unt0;er;cert,fiden0;ce;at;ptu2ve;ond,ulb;ddition1narchism,ssu0;re;al\",\n  \"4.353\": \"true¦aLbKcJdHedit,factoIgeGhaClBnormalDoAp8r6s4t3upstairs,w0y,zoG;age,hoev1i0;nn0tness;er;alk1hick;ervaHhot,w0;ing;e0ussian;su7veal;aul,erformance,o0;et,rk;dd,rdina7;abBegislation,imited;n1rd0;ly;dso0s;me;ne;iscove0ocume4;ry;heat,limb,oin;eside,out;dventure,mbassad1ppoi0rrow;nt;or\",\n  \"4.366\": \"true¦aRbQcLdIexploKfGhEiCjim,mBoAp7r4s1u0van,w9;gLnderstood;a1cottBett4he7m0;ell,s;lary,nta;e0id,ow,s,uin;ad0venue;ing;lan1ri0;nt,or;et;peraDwe;rs,sg;mportance,r0;ish;abit,i0;ghlight,ndu;or0riC;cBever;e0ispute,owntown,rake,u6;cla0serve;re;hip,lo3o1urrent0;ly;!nstruc0;tion;ck;ind,orrow,un1;cknowledge,hm1tta0;ch;ed\",\n  \"4.381\": \"true¦aTbother,cLdJeaten,fiPgHhoFinDjuveniXmCnBp5r2s1toy,u0weak,zealand;niform,ps3;alt,ink,lowE;esponsibUo0uR;ck0man;et;a3e2r0ure;e0oceediB;gna6sence;n,rmane5;r0ssG;is,ticipH;egative,oodL;agnifice1uslim;depende0stitutCteresti4;nt;nest0p;ly;a0raduAuest;ng;e0na;finit5sseA;a5o0;n1u0;ch,sin;flict,ne0stitutional;ct0;ion;ndid0st;ate;ccuse,ffordab3maze,n2pa1si0;de;rt;alysis,xiety;le\",\n  \"4.395\": \"true¦a00bYcUdRexcepQfMhKinJjIlEnCoAp9r6s3t1useful,v0wiX;ariaPictim;as0emperaMheBrus0wen0;ty;c1ho0ileXtatue,uppC;re,ut;aJrP;e0unning;l0nt,solve;ax,y;!atio,hilosophy,itch,ledSroof;rigin0scar;!ally;ickna0ut;me;a2ets,o0;g,v0;er;h,ne;ail,esus,ohnsA;ju1stant,terpreta6;ai,ighway,ung0;ry;ourth,u0;el,rni0;tu0;re;ti2;i0r3;g,scussi0;on;ircuit,o1r0ustom;ew;mbine,nfu0;se;ay,u0;cket,ry;broad,lle1nnual,ppeara0;nce;ge\",\n  \"4.411\": \"true¦aXbTcOdKemperJfFguarantee,hCi9kay,mood,outdoJp7re6s4t3unusual,v2w0;arn0orthy;!i3;eterVia;end,hai;ayi0plendid,tr9uddCwear;ng;acBcover,gime,mark,publicR;atOig,otato,re0unishmeD;cious,viously;mm1n0;stall,telligG;ediEigra9;a0enF;ppin0rE;ess;alse,ounda2r0;ight0oz0;en;tion;or;e1id0;nt;l0monstr3;hi,ight;hemist3o0rack;nfer1rpor0;ate;ence;ry;e1ob,r0;ave,ief;n0sides;ch;fghanist0lbum;an\",\n  \"4.426\": \"true¦aUbRcMdKeJfHgFidentEjeff,knee,lCminXn9opus,p8r5s3t1v0wo,zero;ancouvXe,is6olume;echnique,ra0;ditional,nspN;a0cott,e7hock,picy,ummaCwitch;ke,ra,tisfy;at,e0ub;presentat0solut0;ion;akistan,lain,ossibil5roceduQ;e0iB;ed0t;ed;am0ectuM;b,p;ity;alle0raC;ry;light,r0;iendship,og;fficiCnable,ve;efi0istinguish,riven;ne;eiling,o0;m1n0;stitute,trast;f0prehensive;ort;atter1egun,lon0reath,utl6;de;!y;cqui4ppetiz3r0ssistance;bitrat1rangem0;ent;or;er;re\",\n  \"4.443\": \"true¦a05b01cWdSeNfur,goose,iKkorea,lImHnGoDpCr9s6t4v1w0;a,eigh;e1i0;ctory,rgin7;hicMnue;i2o0;ilet,ne;a1e,heltTkip,li0omehow;ght;il,vM;e1uss0;ia;latRmora;enalty,ortlaRrincipal,ub;bviousLn1ppo0;n7siJ;i9tario;akMeighbourhood,obel,umerous;all,on;attHe0oneG;arnBgisla7;mmigr3n0rL;dicaCstrum0;ent;ffec3ntit2xplan0;ati0;on;le;tive;a1i0ownstair,ust;ne,splay;nc0rkness;ing;arri3hris,on0rab;stant1tribu0;te;ly;er;ackgrou2iology,r0;e0unch;ed;nd;bt,lcohol,pp,ustrali0;an\",\n  \"4.460\": \"true¦aXbRchildren,dQeMfLgJhIiGjus,korean,lEmAp7queSr5s4t1univer9vo0waU;lunteUtU;erritory,hread,i1r0une;easu0yC;re;hown,ingQpecificalTum,ymbol;ach,e0unnP;moHside1;hra1leasa0ossibQrofessor;nt;se;a,e1i0um;chael,ll,nim1;di0reL;um;ee,l,ook0;ing;mpact,nd0;ependen2ustriH;ello,istoric;ilbert,ree0t,ulf;ce;amiliar,ew9lorida,orty;v2x0;ecu0pressi8;te;eryday,oluti6;on,ump;a1u0;st;c2rte0;nd0;er;on;ctu1rrange,ssemb0ttorney,wake;ly;al\",\n  \"4.478\": \"true¦a01b00cMdLeKfHh06iFjEkillWlDmBnobZp7qaeda,r5s2t0uAvegetarian;on,ra0;ce,nsacS;a1ch,hadow,pare,u0;bstantiEici00;dTnd;e0iZosalind;laNquired,ver2;artnership,e2ha1laywood,oll,r0;escripLo;se;ppL;erit,o0;biMd,nkey,v6;!ouis;!ar,ewel,oe;bn,de2lleg2n0;gredie9te9;e7ind1ly1orm0requentG;al;ing;g,ngineB;er6isastA;aAha8o0;lour,m3n0;fro1te0ven5;st;nt;m1petit0;ive;erce,unica0;tiC;pt0rt;er;b1reful0;ly;le;at,one,uck;band5nxi4pprecia3rts,t0uto;lantic,t0;itu0ract;de;te;ous;on\",\n  \"4.496\": \"true¦a0Fb0Bc00diZeWfQgOhNiKkristeva,lImDnCoceania,p6rail,s2turkey,u1vary,w0;ait0Ce08;nlike,sa;cheOexu03hell,ile0Fo2p1t0wim;air,em,olDream;i0GokC;ftwaDlut02;a4e3ile,olitician,pl,r0s;e1ofi0;le,t;paVserve;arl,rsonal08t02;ce,sta;earby,urL;a2i1o0;o4rris;!sfortE;id0kWrie;en;azy,end,iteratu0sd;re;n0srael;itiKs0;i2tructL;ood,ug;ho0reet;st;a4ifty,o1ra0;me;ld,r0;mula,t0;une;ke,te;ntertainKxpe0;ctatAn0;se;p,rt,scouI;a9hef,o1reati0;on,ve;m4n0;clus4gression2s0;equFide0;red;al;monwe1pan0;ion;alth;mpus,nc2;aba,e2u0;g,tt0;er;an,droom;bs4c0dvocate,ustin;cording2hieve0;me0;nt;ly;en0;ce\",\n  \"4.515\": \"true¦a0Ib0Fc01dWeTfRgPhMiIjoseph,kHlGmax,oEp7r5s3t2un1v0Gw0;eep,hip,innN;ab05comfortab05happy;al02e08;leepKpy,tare,u0;bsFrvive;e0urH;ad5commendaWgret,scue;a3c,e1o0ri2;lluUssC;ak,rsua0;de;n1rticVsseng0tT;er;el,touflia;bligaOr0versea;ganic,iginaT;abour,ead7;ennedy,i;lln2n0;n,s0;tance;ess;ear1istoric0orrY;al;ing;oAra0;ham,y;a0ifth,lash,ounta8;me,vouriG;mergency,ntry,x0;act,p0treme;ansiLoO;a2e0ozE;st0voB;ina4ruc4;niErw0;in;aAho8l6m,o0yc5;cktail,n1rpora0unsB;tiD;s1tin0;ent;o0ult;le;assroAima0;te;p,s0;en;b,n0;c0dy;el;bq,ens1re0tw;ast;on;bu3dvi3ffirm,nne,pologize,rm2sse1t0;om;rt;or;se\",\n  \"4.535\": \"true¦a0Ib0Dc00dXeUfrSgQhOiLjam,lKmJnIoGpDquo0ArAs5t2upgra7v1wi0;ck0Gf;acancy,ePiola08s;a1ermin0Kh0ong0Guesday,wOypicalJ;umb,y;g,nk,t;a3cholar,e2li1t0;adium,ir,rongF;de;c0Fvere;ck,l4usaJ;e1i0;dRghts,p;cruit,gis02;arkPeninsula,re1ublicati0;on;cedeWsidenti07;b0ffenSlymp03so;jective,vious;ecessari3yc;etropolitan,idnight,oni04;ab,ip;n1ta0;ly;sIventoB;epatVi0;nt,p;ett0uinea;in;ank,id0;ge;at8gypt,mploy1n0;force0traB;meF;arl5elive1istaEomestMr0;aft,iv4;ry;hampionship,lAo3r0ulturM;aft1u0;el,st;ing;mp3n0w;scie1v0;ert;nce;e1o0;se;te;ie0os5;nt;a2e0jp,ro,ur7;ard,lt,t0;ter;de,s0;ed;c5fterwards,graw4lien,nge3ssi2tom1ven0;ue;ic;st;l,r;al;tor\",\n  \"4.557\": \"true¦a0Ob0Kc0Gd0Ae05f00gXhoWiSjeRknife,looVmPnoOoJpDreCs8t5un4v2w0;a0e0Mithdraw;l0Knt09;entu0Fi0;ctoria,ola05t0B;!known;eGh1r0;ea05iggG;erapy,ir04rone;aiZequence,i2t1u0;b,reO;atisAroke;gn03m;aliIsiR;e4hilosoph3ie,lastic,ortrait,r0;act2i1op0;erIorT;m08oriV;icX;ptide,rspective;bli6ffe2gYp1rgan0;!iz02;tics;nd0;er;e,wheT;assa0elt,iranda;ge;rsey,wish;e,n0;ch,stant4te0;n0rstaC;se;nour,ok;al,e1oodbye,reat0;ly;ar,nI;e2l1or0unerE;gotten,ma7;ame,ip,ood;a0e;st;di3lepha2mo3n,ssenti9x0;amina2ci0hibi2pJtraordinI;te;nt;tion;c,e2igni1o0;ing;ty;ni1te0;ct,rmin8;al;amera,e2losu1o0;mpel,re;re;nsus,remony;alanc2elov2u0;ddy,l0;let;ed;l1nnivers0sh,wkward;ary;ert\",\n  \"4.579\": \"true¦a13b0Yc0Ld0Ie0Df0Ag06hZiUje0VlSmPn05pJrFs8t2unemploy0Ew0;eb,i0ooden;ndows,sdom,t;axpay15h2i1our0;i3na0A;l,ssue;e0roat;at11rapi0;st;eafThort0Si4m3o2p1tudio,u0;ggesMrv09s0U;a0Cit;da,vereign;i1oo1;gh,x0;th;a2e0i8oomm01;lative0Kt0;a05ireW;ge,pe,w;aint0Fersona9i3lug,o2rison0Ou0;blish0Nrp0;le,os;is05lish;l0n;ot;ariBe1iss09o0yste00;b,narch;re,xico;iabi0o;li03;mproveJn0slam;c1itial05ten0;tiV;entive,redibl0;e,y;a4c,e3ollyw2u0;ng07rrica0;ne;ood;aviXritage;nn0v;ah;en2oogle,ri1ui0;lPtar;ef,ll;dYetic;ailed,i1oundXreeze,un0;ctionUdN;nance,refox;ase,d2lsewhere,n1quip0st3;ment;countStree;uc0ward;ate;e1isn0rawGumb;ey;but,cor,posit,vil;aAhairm9lo8o2ur0;rency,ta0;in;al,l4m2n0rn,stume;g,tra0;ry;ic,passi0;on;o8umbia;se6th;an;paci0reful;ty;a1reed0;ing;h,lco1re0;ly;ny;l3r1s0;pect;riv0thur;al;arm,t0;er\",\n  \"4.602\": \"true¦a10b0Xc0Fd0Ae01f00gWhSinRjr,ke,lPmKneIoHpCr9s7t6u4vi1w0yelp;arri2el0I;n07s0;it0u0P;or;hh,ltimate0nivers0Ns0P;!ly;ennis,hursday,witt0N;a0ervi8o0Qtra8;dd0Pid;ati6e1i0omant0M;dicul8v0H;duc0Al0QsolvS;a2ercei0Qlatform,oTr0tolemy,uni06;ay0Gi0;est,vileT;ckaSle,n,yi0;ng;bDverco8;ighbour,rv0;ous;a3edi2is1ol0;i0Fly;erab0Bsi0B;caYev04;c,inP;argeOifeti0;me;n02venU;ealthcare,o0;ck1ly,us0;eho2tS;ey;!lo2r1ui0;ld;andmothVey,oce0;ry;reak,undamentR;l,m5n3t,xten0;d1si0;on,ve;ed;a6for3rico,terpri0;se;bra1er0;ge;ce;e2is0u;agree,cipl5tin0;ct;ep0signC;ly;aFhDlassBo4r2u0;is0rM;ine;it8u0;sh;lumn,m4n0urti9;fid2sist2tribu0;ti0;on;ent;in,munic0;ate;ic0;al;arity,e0;er;binet,nd2rol,thol0us;ic;a1loody,oil,ubb0;le;be,rn;dministr1ge0ssault;nda;ati0;ve\",\n  \"4.627\": \"true¦a12b0Vc0Pd0He0Ef0Ag08h06i00kill0SlYmQnPoOpKrFsCt6u4v3w0yie0Z;eek0Ch1i0;ls02zard;ereas,oa;ess3ietnam;n0rban;d,iR;i4r1unn0wel0M;el;a0end;ns0sh;form,laM;ff,g0S;ampIe1toma06u0;b5e;at0DnatN;a1e0;!ign,publicans;i0p,ve;l0th;way;ar2hiladelphia,i1lKro0;fessiIvince;raAsZ;!o7tP;ak,ccasionalOffensi04;evertheless,otab5;a3emori06i1or0usc4;eov0Crow;d0les,ni;g07st;gistra2n1rb0;le;datoTufactu08;te;il,o0;bGw04;di4mpress2n0;sect,teri0;or;!i0;on;ot;ail,ijazi,mm,oldLu0;rIt;ardenVe0rain;m,nt3;acebook,loat,o0requency;r0x;ge,mer0um;ly;a1motionIn0;t7vironmentH;stN;e6i2j,rown,u0;ct,t0;ch;ctiona5n,s0;abil1clo0;se;ity;ck,mocrats;hi4o1ur0;ry;llecti1m0ntainCrnwall;ing;ve;ck,ldhood;a4e2iologic1onus,r0;eathe,onze;al;ho0neath;ld;ckwards,sk0th;et;ccompany,dmi2hh,l0nnoy,rizona,wful;phonso,togeth0;er;re\",\n  \"4.654\": \"true¦a1Mb1Dc10d0Ue0Nf0Eg0Ah05in02j01ko,lZmYnWooo,pMrEs8t5understandi1Wv2w0yoga;arehouOhisp0Ki0ou1F;pe,re,t1C;ac14i1o0;n,ya0U;be,tam0C;e15hee,oa1Br0ypic0G;ansport10i0;ck,ll10;car4ettle0Gh3i2lap,ovi0Tpi1t0urge9;eYraw;d0Ate;gnature,mi7;arp,elf,ield,udd08;ce0Red,y;a6e2o1ug0yE;!by;b,gers,pe;asonab0Nc2gu1volutiona0;ry;lar0L;a0Ze9;bbit,l0JvQ;a8e4hysici6i3ls,ortZr0sp,ussy;ai1evail,o0;fou0Rmpt;se;ll,t;nnsylvanRr0;centa05mi1si0;an;ss0D;k,lm,nic;arrow,ego6i0Ro0;n,thJ;ah,ichel0Qodify;a0ege0GodY;ddKptop,t0N;ones,ung0N;c1dex,fect05i0nov04;tia0K;iJorpora0J;!a1eight,ostAp,um0;anity,or;rbor,st4waii1yth0;am;!an;en2luckste6overn,r0;andchildr0iev0G;en;ie,t0B;a5e3o01rm,u0;ck1nn0;el;in;lic0n0A;ia;ctu1iQrth0;er;al;a5igh4l3m2stablish1vi0xisten05;deM;meL;iEma;d,izabe0;th;gVrthquaG;e4is2ot,r0;essi00i0;ll,nkiZ;char0liC;ge;ed,ntiHscript8;apBd,eAh8o2r0;eep,ick0;et;alit4ke,lleague,m2ns0rps;ensus,istent0ta6;ly;edy,pens0;at0;ion;iAo0;ke;nt;abCe;a5e4iography,la3o1rea0;ch;ld,riGu0;nd;st;comiDnd;ke1sketba0;ll;!ry;c7l3ng2p,t0;lanta,tribu0;te;le;abama,l0;eged,i0;an0;ce;complish,t0;i0ress;ng\",\n  \"4.682\": \"true¦0:1L;a1Db17c0Vd0Pe0Mf0Ig0Ch09in06j04kind0l03mZnWoTpKquiet0rDsAt7u6ve5w1xx,yellH;a3id2o1;lf,rn;!e0;ff1Blk0XtchD;il,rM;ps,sele1A;attoo,n,o2r1y;ansit,ibe;ma11pic;atelli0Jcroll,haw,il0orr07t2u1;fficie16mm18pervisor;ake,umb13;a5e2o1;ar,bb0Nme;flecImain2n1sin;d0Lew;ing;g,pid1;!ly;a6e5he4leas08o3r2u1;er0Pr6;eparaBimari0;ke,li06pular0Jssessi0W;eb,nomen0V;rsonnMtition0C;r2tie5u1;se;aVi0J;lympics,r1;chard,dina1ganize;nce;ba,e2o1;ti0M;d,ed0H;e2il0u1;g,siciA;anw0Dditerrane9mbers1ntNrry,ss;!hip;ayYobby,ucki0;a1ealSustify;cket,ne;jure,te2v1;estigaMisE;nsYrnal;ans2istori1;an;el;ap,o4r1;a1ind;nd1teful;fathMma;at,odfell1;ow;asten,irework,l1orgiKraud;e1ock;e,x1;ibU;d,nzyme,qu2rr,xclu1;de;al0;a5e2iDo1raF;c,nut;fini2spair,tail1;ed;te;ddy,n,wn;elebrBhAin8lue,o2uri1;ous;lorado,mbo,n1ttM;servati4t1;ext,ro1;ll1versy;er;ve;derlad,e1;ma;arm,eB;ity;a5ooth,ru4u1;ll,r1;nt,ri1;to;sh;nana,re;ctiv7ddict5mino,pplica4sse3w1;hi1;le;ss;nt;!i1;on;e0ist;ly\",\n  \"4.712\": \"true¦0:21;a22b1Uc18d0Ye0Tf0Qg0Mh0Ii0Dj0Ck0Bl05m02nWoUpNrGs9t5u4v3w1zoo;aterfro1Ieak0Kh1orldwi0V;erev0il1T;a22eg1Pisi28;hm,nnecessa1Jsc;empo02h3is,o1ribu27t;r1urism;ch,n;ief,k;c6h5i4li0XmokInake,occ0pray,qui0Ot2u1weep;p,rviv1H;a1ra15;ndFrbucks;ngEre;a7elley,rimp;oIrat9;e2o1uby;a1EllAta1R;c4dd8medy,na3s1vi1M;e1pective08;arch0rB;me;eipt,ogni1L;a5iWlann4ro2un1;ch;hib1mine0U;it;ing;int0r1ssa11;d1Gibanou,liamenta0U;bser1ffici7li1Apposi1Eurs;va1D;a3e2o1;pe;ckla08r16;i,t1;i0Cur1;alQ;a2i1ortga0Rrt,ustard;lita0GnoC;rquis,trix;a5e3i1ols;ber0Lneup,te1;ra0G;a1sbi0K;f,th0;me,p,wrV;a,indneD;et,ulia;c0Wmag07n1;di3juNnoce05s2teg1;rity;tructor,ult;ct01es;a2elicopt0o1;llow;ppi7v1;en;ar3d,enIl6ro2u1;d,t;ss;a04ba04;atig2irm1le0A;ly;ue;arthquak0conomVgyptiZlectric,x1;hau01it,p1teP;ected,i2lo1o0C;de;re;a9e4i2o1;in,mina0D;sti1vor6;nc07;claNf3s1;ceDp1;era08;en1;ce;llas,nc0;aIelebHhEiDlean0o2r1;!ap,iticize;m3n1rp;gratulati1sidera00te5vicX;ons;b7muniIp1;arisVl3o1;s0u1;nd;i1y;me1;nt;inaO;nderella,rcular,te;aracterist2er1;ry;ics;raJ;bba3ribbe2su1;al;an;ge;a5ehalf,iHl2oo1;st;a2e1;ed,ss;de,nd;il,k0ll1;et;er;bsoluAc8dop6mu5n4sto3ttenti2u1;di5tobiography;ve;nish;drew,thrax;se;ti1;on;cepta1re;ble;te\",\n  \"4.744\": \"true¦0:2E;1:1P;a2Cb1Wc1Dd12e0Zf0Ug0Rh0Oi0Hj0Gk0Fl09m00nZoYpQrMsDt9ub0v6w3y2;on1Tup;e3h2il;!a0U;althy,dnesd0I;al2ulner3;id,u2;ab0Q;e4h3obacco,r2ui1;ansla1iv1J;e26ru;lephone,mp0r0Xs7;a9c8e7it6lave1Jo5p4t3yn2;dro14onym,thes0A;eph1Ura1W;eaki1Kur;cg1Sfa,lMur;ti1I;al,conda1Dnsitive;!oR;fe12lm17nc1t;a4e2hy0W;a0Zbuild,gardlIp2treat;!uP;id,re0Y;a8e6h5iano,lay1Lr2;e3ick,o2;duc0mo1;cise0Ulimina13;ilosoph0ysici1L;a2nTrceiv06;ce0Fnut;in0EncaU;ffe1Argani0Nyst0;ightmaMoveli1G;a7cphers0Se6i4o2yth;lecul2p,rt11;ar;croso1Estr2t;ess;h,sseng0;in3n2pSsk;date,ufactur0;e,la10;a6ettu0Vi3o2;op;festyNg3mi2qu11;ta1;a1ht0M;borato0Iunch0;ar,erala;ord12uz;ii,llino7m5n2;do0Uqui3stagram,t2vest0U;errupt,roduc1;re;l2p02;ay;is;e0Ei3o2;e,peM;ke;enerosiYlobe,ra2;nds00v2;e,iW;a5ev0i3lutt0r2ulfill;ed,o0K;dd2x5;le;lkenste0Dre;d3mpow0nterta0Cpisode,stablish2uro,xtern03;ed;it0Bucation01;aAe8i5o4r3um2;!pliX;ead7ou9um;cumentaRuB;scr2verF;e1i2;mina1;light2pt,s;ful;mmQyli2;ght;aHeDhristianiCivic,lBo2rui8;m5n3sta,u2;gh;su2vi6;me;mon5p2;a3ri2;se;ct;ly;ay,iD;ty;l4rtifica1;ti2;on;ia;lo3mbrid2rt;ge;ry;aEeBf,iAlew,o7rut6u2;llsh4mp,r2;ni2;ng;it;al;o3un2;ce;!m;le,n;at3foreha2llissima;nd;en;chel3s2;in;or;fgh6ircra5lexand0rd,thei3u2;nt,thorize;st;er;ft;an\",\n  \"4.779\": \"true¦0:2V;1:2S;2:3P;3:3B;4:2O;5:3N;a3Cb2Yc25d1Ve1Qf1Ig1Dh17i11j10l0Wm0Pn0Jo0Ep05quanti0OrYsNtDuBvAw6;a8e7hi6orkpla3;sk2Qttingt4;d,n;nd,rs;a36ir05ow;nf6rge5;air,ortuna2B;aEeBh9o8r7u6;!b;ail,u2W;w16x34;a,e6ru2Bund0;oret0Ireby;chn0Henag0nsi4rr6;i6or1T;b2fy;ck0Slk2U;aEcFeDharpn2ViClipp0nowfall,oAt8u6ympathy;bseque5fficient2mm1Apport0r6;ge4rouX;a6e1Picklefo31ri1H;b,ck,mp,ples,tuto2I;ap,b0lo6uthea20;!m4;lk,multaneous2xZ;an,conds;dd6mu0Q;am;aBe8i0Uou6ul1;gh6t21;!ly;cogni1Lg7markab0Dp6sort;eated2lace2U;i1Gula1K;dar,inbow;aDhilip,iClBo9r6;e7o6;gram2Hmpt2spe10;mi0senta1E;pulo6rtugue2Kwd0;us;ag1Jun16;er3stol;d,ragraph,ycheR;penings,r9ut7ver6;look,whelm1;er,sta6;nd1;edi,gan0V;a9e8hi,i7o6vm;nsen29vo;e3ggas;gotia10utr1R;s6to;ty;a9e7o6s,unicip1O;ck,nth2untains;chanic6nt0Nr0Qtro;al,s;de,g7k1nufactur1r6;ket1t1M;ic1I;a7ewis,o6uxu1D;be,un0Kv1;d,mar6te2;ck;immy,uni0E;gnorJmpris4n6slam1J;f9qui17stru05t7v6;estiga0Jo1M;eract6ro;!i4;a5la0G;aAe9ft,ir1o8um6;!b6;le;ld0mel18us1;n,rb;s0Btr1I;r8u6;id6m;an3;a3ett6;el;ac04eCiBormat,r8u6;ck1r6;na3thermo0U;an6en;cis6k2;co;!b0nish16;ath0mini03;ag0cho,e,ssenti18u,x6;c8p6;iTlo6ress2;it;essiLlaim;aEeAf,i6ramatic13u0Uyslex0P;m8s6;!appoint0Zc6tribuQ;!our0V;!e;a8fault,p6r,sign0;ende5i6th;ct;l0n;sh,ve;aUe,hMivilian,lLoBr7u6;m,r0N;a8eat7itic6;ism;or;ve;ck,mDn7ok0Jtta6;ge;centraAs7venti6;onZ;ide6um0;ra6;ti4;te;b6pone5;!in0A;assify,iff;a9e7ri6;st;ek,q6;ue;lk,mpi4r6;iot,l6;ey;on;ll1r7ther6;ine;b,olina;ing;aHeElCoAr8u6;nny,tch0;er;a6eeze;!ss;snia,unda6;ry;a6esO;nk;aup7ng6ta,wa7;al;re;ng,rga6the;in;ccJdvGftEka,liDnytiCppare5rmIssBttractiAu7waren6;ess;dien3thent6;ic;ce;on,ve;et,ista5;me;ke;!erwa6;rd;anc7erti6;se;ed;ident8omplish6;me5;nt;al2;ly\",\n  \"4.816\": \"true¦0:31;1:2T;2:2K;3:2J;a2Ob2Ec1Yd1Le1Ef18g15h12i0Wj0Rl0Mm0Dn0Ao08pZquant1ZrTsGtBu9ve7w6y4;ell4outube;!ed;hist30orkers;ggy,t4;!o;si0t4;iFt3;a7h6ime2ot,r5u4wi0M;na,t2Q;adi0ip2T;anksgivi0ink1W;b,pest25;am,cFeDhCiBku08ma0Yp8t7u4weetie,ympho0G;b5ccess26ppor13s4;pe1Ota1S;redd29u1D;at,eady,ocki0rateg2A;!a5ecia4;lize;ke,rk;mi,tu2D;ade,ed,ri0Yuttleworthy;ldom,p4rpe2Overe2xy;arate2t;out,reeni0ulpt2A;a8e5ib,o4u0U;am,g3;ar,imburse21j5m4nt1;a1Aov1;ec2Doi28;dia2CilroMmXtion1;eAo9r4uss;e7o4;misis,se5te4;ct1Esta2C;!cu27;dict,ferr1Cgnan0Wmi0Y;st3tt3;nQr4;pendicular,siste27;ath,bjec22ct,pera0Cr4;al,lando;azi,e5o4;d,on;phew,w2;aAe8isle7lb,o5u4;d,slims;n4t1N;k,opo2u1G;ad;chanism,d1n4;!us;i,laria,nki0Mrsha4xim0I;ll;a6e4ikewi0Cocal00uv;ak,g4igh,p3st;al2itim1D;s,w4;n,su12;a7i6ohn5u4;an;ny;st;w,zz;an,m7n4;fo,te4vi0C;llectu1r4;est0Hpret;munMp4;eri1le0V;a5ome4u;la03work;m,rAve1A;arl0Pl5r4;adual2egg,ip;an0Yitt3;avo8i7l5ollow3r4;eque15ustr0S;i0o6u4;sh;fteen,ght3;ur;ffective2i9lectric8nd7quivale10valu0Nx4;cellen0Qis5peri4;enc00ment1;ti0;eav0Ki0;ity;ne;eEi8o6r4;a4ift;in,m06;ll,nat4;e,i0M;a7git1n3plomaAs4;gui7t4;ribu0Iu4;rb;gno4ry;se;cen4dic05er,m0Fparture,velopK;cy;aFhEitizenship,laDn,o6r5urricul4;um;owdGuY;ff9mmand3n6pp3r4urtesy;d,respo4;nd;!e,sul5t4;emporaFractX;ta04;in;p,rify,sh;art3imney;l5r4thedr1;b00rot;culPl4;ed;aAe8i7obby,r5u4;l2tt;ewe4oadway,uP;ry;l2tter2;auti4e,verage;ful2;d2nn3seB;er;ly;dKgi0isIlGmFnCppellants,r9s7top,utom5wa4xe;it;at4;ic;sign,tonish4;meL;kansas,tifi4;ci1;al;cest5ticip4;ate;or;id,p;as,i4lega9;ce;le;ng;am,j7mi4;ra4ssi5;ti4;on;ective,ust4;!me4;nt\",\n  \"4.858\": \"true¦0:4K;1:4P;2:4R;3:47;4:4S;a45b3Qc2Wd2Re2Gf25g1Yh1Pi1Kjacks4k1Jl1Dm15n0Zo0Tp0Gr0AsRtFuEv7w5yeap;a5idespre0Oorri3Uwii;it25rd17tt;aAe8i7o5;id,l5;cano,unta48;ol21rtue;ggie,ni4Vr5;ify,mo2X;ca4Rlenti4Hria2W;phold,sage,tO;aFeDhCiAo1Qr5u0Z;a7e6op5;hy,ic39;asu3Zmb3;dition3Ui5nsi2vell0;n3Ft;de,m5nk;!i1;ank1With0;a5e,nd26stimony;c2Tse;ki1lent39n;aMcaKensib3hIiHkirt,la36m,nGomeFpCquee3Vsa,t8u6w5ynthet1X;edi4GitzerlaQ;ng,ppor30r5s3E;pl3Vveill4B;a6ev3Yicky,r5;awber3Leetc3U;b5lk;il27;a6o5;il,ns1T;c3Nm;d32th19;ap,eak;a,s;areho1Bo5;rt3Nve0T;llop,n5rl2C;!d2I;cr2Qtisfi2Q;a9e6o5ubb0;b10ve1Cy;ci09fu6li16s5;emb3pect15;nd;dic2Bnch;a,eGiFlCoBr8u5;mp,r5;e2Wsu5;a1Qit;e5oclama2;ce0As5;criSuF;et2Ukem4;a6e5;ad;in2Onk;nt,ty;!n1M;ccasion1Xliv0ngoi1p,r9ut6ver5wl;night,pri3Cwhelm;co6l5;aw,et;me;chestra,ganisa2;a9eed8fl,i7o5t;n5rthwe21tab2Ev;ethe6violQ;ghtinga3le;le02;rra1Pviga30;aBeAi7m03o6u5;mmy,nicipal0Zshroom;de2Wtorcyc3zilla;c5gra2rac3ssissippi;ro5;be;ans,moir;inten2Tnu1EthemaV;and9e7i6o5;okXs0;ab3bertari1Sght0ly,vW;a5i,ss0th1A;pe;i1mark;el1Vh1Om;gnora0Pllust2Jn5so0T;du2Lf7herit,ni1spec2t5va0T;a1Aerfer5;en2J;ect20rastructu1C;aCe9i7o5se;mema5ok0peful1Oriz4ussaL;de;di1ndu5;ism,s;ad6e5n2C;!l;li1Yquart0;mm0ndkerchief,rb1Lsh,ul;e8iTlow,o5uideli1W;d5n;de5wB;ss;!ll0ne5;ti5;cs;aCiAl9o8ran5;c6kl5;in;hi0Jis;rmula2st0undi1;av18uid;e5lt0;ld0;ith6ntasy,vor5;ab3;ful;fficiEggplaTleCnAs9thn8v6xc5;e0IitemeS;alua2e5;rs;ic;s0Jteem;da5ormo13;ng0;ctr4vat5;or;enL;ati1e7is6octri13r0Tu5;b,ra2;closu07posXtinct0L;fendants,lica1Amocrat,scen5tecZvelop0;daEt;aWeThQiPlKoAr7u5;pboard,r5shi4;b,dk0V;aig,eativ6itic5;iRs;ity;conut,il,ll0Ommut0n5up4;dCfuBgr9queYs7tinui1ve5;nie5y;nt;pira5truct;cy;atu5essmZ;la0V;si4;e01om;a8o5;s6t5;hi1;et;n,ssifica2;garet0Nrc08;a6e5;esecaDmiIryl;pOracteri02;a6lebratEre5;al;se;es02lend02p5;tive;aFetrEhai,iDlCo8ri7t,u5;n,r5;ke;ck;a7oksto6r5t;ed;re;st;ah,esYues;ng,tt0;ay;g7nglade07r5;k,m5ri0;an;el;b02cWdQirplaPlMmbInGpprenticeshFrBssho3u5;c2t5;omatic6u5;mn;al5;ly;le;ab7m6te5;ry;our;!ic;ip;aly5ti;ze;edk7it5;io5;us;ar;aska,l6s,zheim0;er;en;ne;apt7verti5;si1;ng;!a2;ti4;on;c5tiva7;ept7u5;ra5;te;an5;ce;!oli5;sh\",\n  \"4.903\": \"true¦0:54;1:5Q;2:48;3:5F;4:44;5:5R;6:5G;7:52;8:5D;a5Eb4Zc42d3Fe32f2Ng2Fh26i21j1Yk1Ul1Om1In1Ao17p0Rqualifi4Lr0FsRtKuHvEwAyea9z;!rs;aBeaAheat,i9ret3J;lliams,shi2;kn35ry;i4Zrd,x;eAi9om12;llag0rg7zi0;lv51nd4Gst;gh,n9pcomi2sb;der9i55precedent4B;go,mi5Hneath,wat0;aEeCin,oBr9yraR;a9eati46iang5J;d0ge4D;ni6ppi2;chnic2Bd,ena33l2Gn9;a50th;bl4Rctics,ta;aTcSePhNiLkiKlJoIpFquad,tCuBwe9ydney;at9d49ethea3D;!er;ccess42mmo3Tpermark4Nspici5;aAo9rongh4X;op,ra2V;r31te3;eAi9;ke,ritu4;ci18e3Z;ck,u0J;am,eepy;nny;gnifica2Ym5n9rna,z;!gapo4G;a08o9;tgun,wi2;lAnsa1rgea4Ht9;tl3Kup;fi01li2;arNri2O;il3KlAt9udi;isfac1yagraha;esm8ty;aHeAid0o9ul0;ll7ta6;aEfi27in,li4Hnaiss4HsAv9;erend,i4J;i9tric1;de9st4E;!n9;ce,ti4;ffirm,g8;ghav,lph,ptors,t9;io,tle9;bo3O;aLerJhotograph0iIlHoFrBsychologiAu9;mpk7nk;c4st;eBinces,o9;duc22pos9spe0Yv36;ed,i1;fer2Mjudi42;l9r1Vtenti11;e,icem8;easa22z;neapp43pe;cep1i9;sh;perwoArticipa1t9;r5ty;rk;ops,pAs,utf9ver3;it;erat2Nt;aEeDice3o9utr03v;minArwegi8twithsta9;ndi2;at9ee;e,i5;at,gle1Hls5st,t38;me3n2Tp,ugh37v9;al,y;aDeBiAorn7ut9;a1u4;d,gh33ld,ni2sappropria1;chan3KdicaErmaEss9;e,y;dn0Uhatma,nn,ssachusetts,themat04;aDeCiAo9;ne,v7;ncoln,qu9;id;ap,ga2H;ce,g,me2Wndlord,s0;ans0WeeBfor35iAn9;owledge38w;m,tt25;n,p0;an,e,ournAu9;nk,st7;ali2C;llu30mpBn9pho2Zv;c9fluenti4k,nova0Vterfe2J;!a,reasing3;at9ersona6rov1P;ie2K;aFeDideo03oCu9v,ydrog1V;n9sse7;!t9;er,i2;nes2Dof,sti2U;ck,r9;oi2Or;i0Wllowe1Or9sti3vi2;n03ve1Y;aFeBigant2Qlo0JoAr9;adXid;ldilocks,odn00;nAolog9t0U;ic4;e9iP;roO;ll5mi2rr1Vtheri2ze;aJeIiGlEo9rienD;oCrAu9;l,rte1C;k,m9;al3;ds;a9i0C;vo11w,x,y;e0El9refight0;li2;a0Ydera1;bAci9reweQt4;al,lita6;r25ulo9;us;ate07ea,lImbGnCqBx9;ception4i21p9tremi19;and0Pedi1lor0;ua1;d9gagUli16trepreneV;lAur9;e,i2;ess;a9roid0;rras0Gssy;e9igib1S;ct9mentaW;ioPron1R;aTePiDoAriveway,u9ye;ll;dAmini5o,ugl9;as;ge;ckeJffereInosaHsAt9;ch;agreEobediXruDt9;incAra9;ct;ti9;ve;pt;eme0X;ur;nt3;ns;ad3bris,creaVlAm,nt4pa9;rt;ega6i9;!be06;i9ys;ry;a01ertifica6hYiWlVoDrBu9;b8t9;ti2;a0Visp9o0G;!y;lNmInAo9verMwork0zy;ki2peX;cCf0necticut,qu0st0Utroversi4ven9;e,i9;en0O;al;e9re6;al,r9;ni2;ng;edi8p9;lAromi9;se;e1icat9;ed;lectAo9;rful;or;own,uD;n9viliza1;dy;ao,eAink,rist9;en;st0;lBrbohydAs9;ino,sim;ra6;cula1l7;aKerl7lGoFrBu9;reaucra9y0;cy;iBo9;adca9oklyn;st;dZlliaK;rough;a9efuscu;nk9ze;et;in;ngaloArb0;er;re;bor1cOds,ffec1ggresNirliMmbulKnJppGrDtAug,vailabili9;ty;hletAtenda9;nt;e,ic;!abi8n9;old;an;ella6roximate3;ly;te;na,t;an9;ce;ne;si5;ademBcount9;ab9;le;ic;ti5;on\",\n  \"4.955\": \"true¦0:6E;1:6A;2:48;3:4N;4:61;5:54;6:6C;7:60;a5Lb50c41d3Le3Af31g2Sh2Ji2Bj27k23l1Tm1In1Fo19p0Squ0Rr0FsWtNuIvDw8xp,y5E;aBheelbarrAi8oo,ur6D;d55ll9ndsh5Fs8;cons5He2;ow;d,gg4rr1X;anilla,eAi9o8;lcan69ti5;agra,nta0Crtu1sa;g5Xr8;di6Fge;n9pload,r8tah;a1Cself;c8dergrou1Teasy;ertain8onstitu2U;!ty;aFeChBoAr8utori1;anscriDi8o30u04;m,um4H;e,k1JrA;irds,n,orough2;m9nnessee,sta5Ox8;tu5B;pt;!y;aPeOhKiImok0nee2UoHpFtDu9w8;an,ift2;bcontract5Bnshi3WpAr9s8;pect0tain57;ge,rend3;erce2Npre3O;a8ool,riki5;irca3Or2St0;a8erm,o4;n,wn;ft2il,le2n02phist2Wuthwe56y;ms,n8tc48;ce4Wgh;!aAe8ld;pherd8riff;!e3E;cklet4ve;nt,ttl3vente0Ww;fegua5Ht4D;aHeAi9na,o8;bins4cky;dAsi5;alm,cDfrac7gist2Zinfor4Clie42sBtaTv8;a9en8;ge;mp;ign,tr8;ai4Uo3S;lGord0;c8iny,m;i3Kk;al01e;aKeHhysic2TiFlaEoDp4Fr9to,u8;blic2l2Ynjab;ivate2o8;b,c8;edur1l8;aim;nnonn3or2rn;intiffs,za;ne,one3ss,zzer8;ia;n8rmanent2;c8n;il;r9ss8thrick,w;iona6wo4P;a8ti1;di2Jnoid;baCklahoCpen2tto,uAver9x8;!fo4LygZ;pa2Etake;n3Ira5t8;p3Lrageo2J;ma;a9d,ecess1Mic8orthea3X;hol3Xk;pole4sa;aGcdona37eFiBo9u8yster25;ltiplay3mbai,rD;d8i3Sntre1ot,rgiana,ti30;ifica7;croarAllen9nimi14s8tche12x0;e0Ihap,souri;nium;ray;antime,lancho2socyclo24;ge,mm1nsi4r8;g2ZylaL;aEeBi9o8yi5;gistics,ngpudd3Drdship;ar,s8;a,ti5;a9nd3o,s8;!l27;fs,se;d9kh,rg0Eugh8;i5t3;en;a8ne20o5;r8t02;amcha8l,nataka;nd;aAe8unc7;rk,w8;elWs;s4ys;mpEn8;cuba6fCsBt8;e8ima6;nd0r8;fa2Fpret3sec7;talla7u2O;er04orm0;ort,rison2Y;aEe9i8obby,r;pst3tt3;aBlAmisphe2Jpat9r8sita6;d,s;it0Kocy6;m1Op0R;dache,p;lo,rr0Ht8y;ch,h;dp,eBlor0Vord4r8uilt;a9i8ub;ll0m;t2Ovy;nBo8;grap9met8r2D;ry;hy;!er2N;aFemini19iClexibil00oAr8urnish;ee2i8nd;ghtful,sk;ne,r8;d,t;c9el1Blipino,redrak8st;es;tion1;llo1Prt,shion0;clip0Hhh,lHmphasiGnCqualRr,sAthi9vol1Ax8y;ce0Eot2C;c1opi1H;!s8;en1G;chAro9t8;husia0Uitle20;ll;ant1Yilada;ze;aboKd3;aLeDi8nt,o06rape;aBnAs8;appoin8miss1;ti5;esafe,i5;be6gnosH;aEcCdBem,fensi0Tl,nsAp9s8;erv0ktop;loy,ot;ity;icat0;ei0Oo8;ra6;f,r2;gg3v8;is;aYeo,hWig0KlSoBrAu8;e,sto8z;di0Qmiz0;ims4op;gniNllapMmpLnDoBpyright,rrup7u8;n8rtya1P;cill12sel12t8;leH;ky,pe8;ra7;fDstrucHt8verG;entBin8;ent1u8;al2;ly;ioG;e8identi1;ss;!etit0Q;se;tiZ;aAi9o8;ne;n0Zp;us;ar8em,ili,ron0Xunk;g0lE;lCmBnnib1rAt8u7;ch3t0E;er;i5l,to4;el;f,i9or8;ie;ph;aMbc,coz,d,eJiGlossFrBu8;ddhi9ff8;alo,et;sm;aAe9isk8ook,u6;et;akthrough,w;dy;om;n8o;di5;ng;gg9ha8lV;ve;ar;!lBt8;mDtlef8;ie8;ld;dw8lot;in;b08cc04dmir1ffilia6lXmQnNppKrHsAttendan9ustri8vocado;an;ce;ap,kd,sBtron8;a9om8;er,ic1y;ut;assin9e8;mbEssN;!a7;chitect8p;!u8;re;eti6lic8;ab8;le;alo9ch8drL;or;gy;azeCbi7eric9ong8;st;as;ti4;on;me8;nt;coholClBo9t8;itu9;ngsi8ud;de;ey;ic;al;!e9umula6;te;nt,pt0;ed;raham,s8;orb,tra9u8;rd;ct\",\n  \"5.013\": \"true¦0:8K;1:89;2:86;3:80;4:7M;5:7J;6:8R;7:8O;a7Wb7Fc66d5Le51f4Jg42h3Vi3Jj3Hk38l2Zm2En2Ao1Xp1Cq19r0Xs02tPuMvJwAy9z8;oologi5Gu;ep,r;aEeDhCillingn4WoAr8uDwe;estl0i8;gley,st,t;nderful7ol,rk8;for6Ao3U;ereup1ir;rd7P;h,istco3Uk7Ol8na,y7L;k5Ut0;a8ersa65iol53l;cci7Ig8lZ;i3Bue;n9t8;ensil,t4Y;finish2lo1Cto;aIdp,eHhFiEldr,oDrAu8yl0;rn8t;er,i4ov0;a9e45i8ous0y34;bbiani,ni5Ovi5;in0mp3Unspare86;fu,kyo,mb;ck,ght79le;!ai46ei02r8understorm;esh1Will0;chnici3mp32nu4Dstify;iw3l8s6Z;es,ib3;a01cYeWhViUkelet1lSnat0Oorrow3GpNtGuBwaAy8;nagogue,r8;i3up;m,y;bsAck0f16per9r8spen19;at,prising7viv4Z;i4Ym3;equ4Did1It8;anti7Ritu6;an5DeeDh,iCr9up8;idi55;ang0i8;de,p8;e,p0;ff,ng;p,r;aBe8he3Uri6;ar,c8nc0;ializ2tac8;le,ul5R;di2Aghetti;a8ot,um;in,ng,sh;an,khs,tt4N;a3Se0oppi4rink;ason2c5Knato8rvices,ttings;rs;ar9en8holar38otXramb5Q;ar6Pt;ce,f;c,mpl0t3;aIeAichards1o8upD;b8ck4Ell0oseveAsi1Y;be52e;aEbIcCdBel,f9gister2h1Linstate6Mlaxa4Ymembr4Nnew5port0vo8;lt;in2riger43ug8;ee;istri36sto5Yuc2;e8or1S;iv2p4S;p,soni4;jk2Znki61;!n,u8;arr8iz;el;aNeJhHick57lFoDr9sychiatri3Cu8y;ppy,zzl2;eAi9o8ude6M;cu2Xductivi42ne,vinci5;ci4ncip6L;!a9p,y;la68nd0rband4Uti1u8;ch;a8ea;ce61yoff;eebs,ysiolog8;ic5y;aAculi4Odicu2Oer,nd,r8;fec49s8ta3N;i2Yua1A;!ch,sa69;ck4Hna0Vr9ssport,tri8vili1;ck;e9ti8;s3ti1;kh,nts;bGfFg,o,pCrButAve8;n,rt8;i1Mu4F;a4break,ta;lea58ph3;era9ti8;mist55on5;!ti36;fe2D;eAs8;cu25es8tac4C;si1;lisk,si38;aAda,eva9i8w;agara,ghtclub,x1;!da;hi,y;aNeLiEoAu8ythology;l8tt0;e,titude;dernAr9tivate8;!d;ali2Yg3;ize;cDg07lCnAs8;appropria6f8siona3Ft4I;old;i8t;m5st3C;kshake,lionai1M;hig3rowa2J;adow,d,nd,r5Ct8;abolism,er;chine37instream,nAr9y8;b,o;io,ri2ti5;ag2i8;fe1Qpu2V;aFbs,eEiClc,o8u4;g9ot,u8;!isiaV;ic8o;!al;ck,fegu3Xght8nguist30;bulb,i4ly;ct,ddy0V;ndscape,s3St0und2U;aEeBi8nit,rishOya;dn9n,t8;!ty;ap,ey;b9n8tt37;singt1tucky;ab;r8shmir;ma;e8i,oshua;n,opardy;cy,d30llum3RmFn8ra3Usola2Fvo2I;cluDdBevit0Xfini6hApOs9teg8;ra6;a3Gight,pect1Kufficie4E;abita4Dibit1J;epend0Yia8o;na;di4;agin0Qp8;lemen9res8;si1H;ta24;aBe9indi,o8ybrid;op,rmo36st0Av0;ir,r8;m3o3A;hn,irc9mpshi0Dn8rd02z32;dIgi4;ut;aLeKf,iIlidd1m,oHrAu8;ardi3es1Njar8;at;aBe9it,oo8;m,ve;a8enhou1J;sy,t0;ce9d8pe,sp;!er;ful;a,dmoth0th2W;ld,m8rls,vi4;me;ek,n1N;!ng3Hr9s8ya;oli2L;din0me3Iy;aMb,eLiJlGoBr9t,u8;r1Bzzy;a8own;g30mewo05;il,nt,r8;bidAe8;caZhe8ign0;ad;!d2E;ag9e8uores37;sh,x;ship;fe,gh24ji,n8sc5tnB;la2U;at,b,d,rnando,t15;g9irn8ll0E;ess;ot;aOcMdinburgh,fficiLin,lImpower2LnFternEvDx8;eBp9tra8;ct;enditu8osu8;re;cution0mpt,rcisis;ic0Ro02;al,i09;dors2franchise2Dginee9joy8;ab19;ri4;d9ev8;a6en;er7;ent7;onomi8stasy;st;r8t1;l,ma8;rk;aQeMiCm,ownw1GrBu9well,y8;!i4;n8o;d0Tge1;aw0o1D;!ap0ctFfferEmin0PplomaDrect2s9v8;erPorc2;posAse28t8;or05ress8;!ed;e,i03;!t;!entia01;at8;or;a0SducYpre0UstructiAtaCv8;a1So8;lv2;ve;me,nforth,rl8;in;a07e04hZlaXoFpm,rCu8;ba,cumb0i,r8s;io8l;si8;ty;avi4eek,i9o8;sEw;b,t0V;ast5lumbOmInDpe,rBst7unt8wboy;en8rym3;an8;ce;p8rect7;se;centraEneHsAt8;emp8inuous7;la6;c8eco,umpB;ioE;mAp8;atibTiTle0Wosi8;ti1;enta9u8;n5te;ry;us;ss8usi,w;ics;a9rist8;ia0Aoph0;l9n8rlot6;deli0gi4;et;ll8rtiorari;ul8;ar;l,meFnEpCrAshy,tf9ve8;rn;ish;ab8niXs1t0ve;as;itol,su8;le;al,n1;!r1;aJeHiGlEoCr9u8;dd0Cff,lk,tterf7;ew0idegroom,o8;ccoli,therhood,wse8;!r;hr,mbi4uld0w8x0;li4;e8u0E;ss2;eb0ngo;havior5in,nt;al;ckboBit,ndh,stAt8;ti4;ng;ard;ne;cc07d00ggressiveZlVmeUnLpJrFssassEtBugusAw8;ak8;en;ta;he9m,t8;ic;ns;ina6;m8ray;e8s;ni3;an;e,propriat8t;e7i1;aEders1nBt8;icipat2on8;io;ed;!ounce8uN;meL;on;rch8tomy;o,y;nd;eAl9p8r;ha;sta6;x,ynikov;!ly;ams,ditionCjaAmini8;st0;er;ce8;nt;al7;ly;ommoda6ura8;cy;te\",\n  \"5.080\": \"true¦0:8Q;1:94;2:9R;3:91;4:AS;5:A8;6:96;7:9Z;8:AN;9:AB;A:A2;B:AF;a9Ab8Cc76d69e5Sf5Kg5Bh4Wi4Gj4Ck47l40m3Hn34o30p21qu1Zr1Fs0HtYuVvPwHxGyDzC;ip,omb32;aCummy;nCrn;g,ke90;in,m00;aHeGhFiEoCrest1;nder6CrC;km6m;d9Onst4thho66;atsoev0enAMol3;ekd6Assex;iv0lki2qt,rra9Ss88tC;ersp3Ts4;aGeEiDoCp;l,r;enna,i,nce9Ov46;ga,ngeAErC;b,if4D;nuatu,u0K;nDpCrn,sh0;vo7ward32;consc4Hdercov0icoA1na07st75wi5Y;aSb,d,eOhJick1ml,oHrEuCwe39;ck,rC;r37t1;aCek;ct9Yg1Pil0nsCvel0;m0Xvesti7;ad,ll,rtillCyo4S;as;eEomps4rC;eaten9FiC;ll,ve;rCsaur75;apeut8Seaft0;helka,lepo9CmpErDxtC;b28ed;mi97ra9U;e8Worari3;ke32mCxi,yl9L;e,p4;a06e04h01i00lYmeXnowm6oWpUtLuGwCynthes0G;arEiCo9G;ftCss;!ne4U;aj,m;bDi7n5Mpra,rC;na5Spa4R;sCtit1;cribe,idC;ia7Ny;aHeGiFrCua8Wy20;iDucC;tur8;ct3ve;f1mula7;rn,wa8R;in,rCtistic8;k,tC;er,up;a,ecifCind1ott0;i7Gy;ar,cia1Pdi7Tme5Cre,vereign9;lt;ee5ToC;pe,w0;ckJsters;aDerlo5ZiCou40utt1y;ni2t9;ft,m;ek0g84ll0miot7SnCqu8Gri8t5V;!tenci2;dDlCn58shi1Qva77y6N;sa,u7;ne40;aSeGiFoDuCyers4;mo81naw4Gth;adsi6Mbot,dCm,tt18;!e7X;ght3m,nd,pe;aKcJdistric3NfIgul8Fmaind0new5IpHquest82sEtro,viC;se,talCv8;ize;cDembl8JiCta80;d4NgW;is5I;l46resentativ6P;err8ra68;k4onsPruit7M;!diDliC;st78za5;ly,ne3J;bbi,ciDj,ndCpp0tif2A;om3y;al,st;aCo2X;ke,lify;a03eZhWiUlRoNrEsych67uC;blis5Tpp15tCzz1;in,ti2;eIiHoC;b4XcEgrDnoun82sp0vC;id0;ammi2es2Z;essi2rastiC;na5;n2Xva42;decess7PmiCtz7Fvi25;eBse;k0litEpDrtr3JstpoAttCutiA;a65e5Z;co7Je;ic30;!aCea4Au4P;n0Mtin6DyC;s0Lwright;lCn43ta;gr7Nl5P;d,ilDoC;!enix,ol6tograph;ippiAlips;bb1e,g,rDtC;al,i7;cCform0u;h,y;c,d3Riseh,lHne,parizou,rEsDtC;h5Erol;si42te;aDtiC;al3es;ll6Snoia;!estini6;asMh5TkEmega,nw7Boohooohooo,rDssingt4ttom6verCwner10z;lap,see;ac1ie6Dna6C;ie;atMe1ViJoDuCxt,y;cle49n,s,tritionW;ah,isGrFtCuronnih54;ch,eC;bCd;ook;m6rC;is;co1netCpp1;eCy;en;h6ionaC;li5U;aOeMgi,iImHoEph,tv,uC;rmuBsCz;harraf,l4G;dDld,nroe,rCss,therfu00u6Ew;bidi9ph4N;e0Fifi60u1;!s;aEnerDsC;o,s3Pt;!al;mi;asure5McYdiCl4mor3Ataph68;ta5;dGkFnErCsh,thematici6;garCketpla6Ct;et;oa,t1;eNin;a2Gis4;aGettBiEoDuC;ke,mb0;ad5Kbu1c1Edgi2ud3y8;cenCeutena5Cme,nux,o46vesto33;ce,si2;k4Aurenti6yC;out;aFetchEg,ina22nCoi;iCot;ck0;up;nye,te;aDoC;!el,i2I;in38lape3DmaiCna,sp0;ca;bm,deOmmen1TnEp16rrDsC;aac,ol4H;eleva4Xita7;aKc32dividu0XfJhe06spiItFvC;aCent5G;de,lC;id;a5PeCimida7rig4M;llige4RrnC;sh0K;ra5;ormati26rin3S;bili9ugu0Q;as,ntiCol4D;c8fC;ica5;aLeJiFmEoCub,w,yacin2W;bhou1Clm3Iov0rriCu0Y;b3d;!mm;lDpcroft,sC;pan41se;arCda;io2B;ar9brCc14lp0redi1X;ew;iz,mFndgun,rDt0untCwthorA;!ed;ass46dCt,v53;co16en,waB;burg0p0;aJeHirGlad3oFrCulp;aCo6;m,ndpaC;re41;re,wn;affe,d1;e,nuiAoC;graph3Kl3O;llbla2Mmepl0Drni2Itew0D;aIbi,ca,eed1LiHloGoErDujiC;ta;ac5onti0;am,l3ssC;il;o12p;an4HxtuB;ith2Vlada,n0Hshion1Bt9x;ager3ditori8inste27k,lePmNnIquHstim36thi2Pv2NxC;cChib0Dplo1E;eEiDluC;si12;ti2;l,ssive3;ip;compaFh47rEtC;husia2RrC;eat,u39;i0Lon;ss;eraMis13otionC;al3;ctoCva5;raC;l,te;a04eTiJoErCu3Hvd;eCink1P;ad;le,mFnDwnC;gra1Qh0Z;aCkey,or;ld;a1Je,inic6;aJnt,sC;cFmEneyCpleaRtinguish34;laC;nd;ay;o,rC;etCiminato1Q;e,iona1P;blo,lCna;!e3M;ad0Uc,du3LfiJgrada5lawaBpenden3GsGtEvC;elopi2oC;n,uB;aTroC;it;ir06piDtiC;ny;se;ciCni2;enC;cy;mErt,soviLyC;tiC;me;!n2H;a0Dbi,h05i04l03mc,n02oJrFustoEyC;cloAstC;eiAic;dy;awl,eEit,ocodi1uC;el9nC;ch;epy,ma7st;lliTmKnFoErC;al,responC;di2;le1Trdi23;ceEjunc5seCtribut2I;queCrva5;nt3;iCp5;ve;eImGpC;arEliC;ca7menC;ta0N;ab1;eCission0unU;mo1An2E;baC;ck;si4;e,t;ari9eani2int4;a,ne;aIeesy,iFoDurchC;ill;ir,rC;us;!lCn,pot1;dCe;caBiV;l,mpagAncell1Tp;bRge,in,l3nto,pitalErCsterbridge,t0;d0KoCpent0ria0A;liA;ism;a04eZhi,iUlOoLrEs,uC;ckingh0MdC;!dhi0W;!aHeaFiEoDuC;no;th;be,ef3;ki2tC;hi2;ce,ke,zili6;ar,bbDil10ld3oC;b,ty;in;aGeFoDuC;sh;ckaCke;de;!nd;dd0;hFllioEoCrla,shop;graph0logi0EtechnC;ol09;ns;ar;aEhavio0HrDstsell0troth0M;er;ry;c4tlC;es;ckFdElDndaEr4siC;cs;d,lo4;ge;w12y12;a,b10c0Td0Lffini9g0Hi0Fl08m01nXpUrQsKuEvia5wCye;ful3;ly;dGr,stronesi6tC;iDomobi1;le;stM;an;io;hGsDylC;um;am,ociDumC;i2p5;atZ;am;bitEcCk;hipelago,tC;ic;ra7;athy,olDpC;liSrov8;ogy;alyEdy,noy0AtiqDyhC;ow;ue;st;aGusC;eDi2;ng;meC;nt;teCz4;ur;aniAbeGfrFlowZtC;ar,erC;na7;te;ed;rt;ne;!rcC;el;ed,iDriculturC;al,e;li9ta5;ti4;equateIheBministrFoEversC;e,i9;ty;rn;atC;or;re;!ly;cCquaintE;ident8laFordDuC;!stom;anC;ce;im;al;breviatEc,duDel,hi,oC;ard;ct;e,i4;on\",\n  \"5.159\": \"true¦0:C2;1:DF;2:DW;3:DE;4:BK;5:DN;6:C4;7:DC;8:DX;9:DK;A:D4;B:BV;C:BZ;D:B6;E:9H;aCYbBTc9Yd91e8Cf7Pg73h6Hi5Zj5Tk5Ol5Cm4Qn4Do43p2Xq2Ur20s0Ut0Cu05vZwLxKyGzoF;mTn2L;aGeFrs,un;a99llowstoBK;ar,hFn18;!oo;b22d;aPeOhMiImi,nt,oGreFud;ck,n9YstA3;lfga2o4XrF;ds,kshop,s9I;g,lGnF;d0k;de,he8IlF;ing4y;a70ereFistleblow0;by;bBQstminBQ;itstaff,rGsFtch6yho3D;nt,p;faBy;aJenIiGoF;dC3odoo;br5QcAVgoroAWlFnd0Rol6Nvo;!la6;t,us;cuAAmpiBniDIr,se;lt4VnGpsF;ca8iBR;believCWdHeGifi5juDlFseDNveCL;ea9Mike4;mpl3Axpect5;erFo;grad2VstandCS;aUc,eThPiNm,oMrGuFwelf81ys1;n,rbiAO;aJeIiHoGuF;dCff8m68;t,ubl5;bAlC3nam82pp6;law4Xn7Q;de03g5Enscrip3;by,lst2Zuc70x6;bet62nFt34;k0t;an5QereHiGorFrivi2;n,ou2C;nk0rD;of,up1;chnologC4ll6ndernA9ymanak;cFk6o,pa,r,x3J;!tC2;a0Hc0Ee0Bh08i06k04l02m01nickeACoZpVqTtKuIwGyF;m3KrBF;aFeeteD;mp,n0R;bst35lim5PpFrpri9Ispic9Y;erviEpleCF;aKeJiIoHrGuF;dios,ff5nB7;ange4eam3L;mp,ut;l,t8G;rBOv6V;ll,tF;eFic;sm5F;mi,uF;a1KirrA7;aAMecGotliBQrinF;gs;ifFt4E;ica3;a01fFmmerfe64ph6LrB9;ia,tCE;a5Cell5il;aFim,p;b,y;atFet80i92yscrap0;e,i2;!eCnFp;gul35ha;aGippi2ortaCrFu19;ed,iek;!dy,kespeaBrp4;att8cGle07mFo6Spa8Cvente6L;!i;!ond4ret4;aFhmidt,iss8Brap4E;rabae92tterF;!ed;!ge,lGmo4QnskrBKtF;i0Vurdays;ly,o1;a06eUhSiNjb,oHrAIss,uF;e,lemaFm,nn6;ki2;blJcIg6Sma89o9Ip0sHtGuFv0;ge,t0;aBIisser5V;es,t0;!k0;ox;bb1cHdGsFval9;ky;dBJicul4V;hFk0J;ar27ly;oFythm;de,n5R;aPbeOcMdesign,e59fJgAjoi57liev5mi6Xn8YspHtaGveFynol24;la3rt;il0lANrd5;eFons6M;ct6L;erend7TinGreshF;!i2;anB5e;!eF;iv0pt7G;kah,lli1;ct7EgeB2;b8DcFke,ng0tt8;co1k3V;at1YuF;aFeso,iAYo;ck,rterback,sh;a0Ee06h05i01lZoSrGuF;d4Flitz0nct2Prch9Ks5M;aPeKiJoF;cureAEgrHlong5mGph3Osecut75tFud4vid5;agoniDoty2V;!ethe7V;amm0es74;c93mit61;dIsGventiF;on,ve;id9Isi2tFump3;ig7Oo;atorMic3;de6Kwn;!d,iElite4nKop,pHrFstuB;sche,tF;ab8ugA;p6ulaF;riF;ze;!y;aFum;tt0;cHerBge1mp,tF;if4YtsburF;gh;!k8O;el2Zilip28;ar,ck,eLnnifeath0rGssimiDtroF;c,l;fHiGpetFvas5E;ua7;l,od6X;ormi2uF;me;k,l,p;ct,lJpa,rHsFt,ula,yro1D;!tF;or,ry;aFtisans56;chu7ke2N;esYm0;cLi4l,mis64n32pKrIuHverF;boa7EjFse8E;oy;!tfie3D;dFgasm,ien3M;er4inari4;erationApo67t8M;cuGeFtop6N;an1M;pi5rr8N;aPeOhl,iLoHrc,sGuF;!cleoti7Jrse9;!pa;i4Vok,rm,str8CtHvF;a,elF;la,ty;or6Dre;bb8cFd,ghtfa0Qke;ki,oF;ti6F;e0DtherlanXwt1;rFtiona8X;ra7;aVcTd,eOhc,iJoHp,t,uFysoB;ni4TrFst0;chis1der0m4Ip3S;c27mFna,r1s78;ent5Kma;c,lIm12nFst0;dGis02neapolFus;is;f3Ls1Q;!waukee;aIin,lHme,nGtaF;bol0W;a8Qta8J;!bour5Yee,lsto1Qo35;ningf3Ftba06;c,donalF;ds;gnific7SnIrHsFtt,z1;cuFturba7;li5S;!ginAia,vello5Nx;a,go,ia,or,uscri4O;aNeLiHk,ooko5DuFynd1;ggaCnFstB;ar;bHd,fGmFn8Fste6Ttiga3v6Mz;b,p;eboNti2;e4Lrari15;ban1mona6EtF;te5M;nte35pErGsag73uFws;ra;!ry;ais0eHhilafGiFr,uwa7Ty8;ll6sE;at;nFv6;!t,ya;amJeIiHoGuF;dge7Ki46;se,yful4;ll;ffers1r9w;aic0Pie;cq,dol,f1Gl,mTnHowa,p,q,roGsF;bn,le;ny;appropr2RcOdMeqLfJherit7Pjec3l0Xma7sIteFvolv5;graGrF;na1Sv2U;l,ti1;tall0ubord2V;ant9erFie1C;!i3X;ua7C;efini7iFulC;e,ffere7Igeno4Mrect4;inerFonvenie7H;at3S;agina9pF;ecc6OortF;ant4ed;aUeNiLoIumHvGyF;pe;ic;b0id;g,mGnFspita70;da,g;aCici5AosexuA;ghl0Bnd0tFv;her07l0;aJhIigh60rGsF;!i12;a0RbF;e5LloB;!e;l0rtF;ed,i4;ck,hIin,llHmilt1nGrF;dcoBp0;ks;uc21w08;!ahahaF;!ha;aUeRiPlMoJrGuFyp28;iccio01tt0;aGeF;atn3Ugo9;c3Pph;blGdEgh,ldmFver50;an;et;e4FiGoF;o54ssa9;mpEt27;bs1llet7mmiFn;ck;laGnoa,oF;graph5Erg4T;to;mInesHrFuC;lFry;and;ha;b22eF;r,s;aZdr,eXiSlPoKrIuF;ck0ng37riGseF;li;ous4;!eewFu1A;ay;g,lIotpri5YrF;eGgiven34mula7tF;hwi0Gr33;!moD;di2;ap,oGufF;fy;a5Luri1S;ddl0erce4lInanci2Or,sHtF;ti2zgeraF;ld;hi2;et,t0D;el6llows0YnF;ci2;a,cul5Cde,iFjita,lc1mi2RrtheDv;nt0;at6csta1Od4Cglint1ighteen02lYmSnQquiPrNsco42vLxFyebr3J;cHecu3on,plFtremi59;icit4oiF;ta3;epGuF;r1Qs;tion29;aFentuA;!de;ic,nFweiterung59;ie;pp5ty;cFdorEhanc5s07thusiaD;loEycloped3L;bHer23o,paF;naFtT;da;aGoF;dy;lm;eFiza;ctronics,ga4WvF;enF;th;!th;a06d,eViKoHrGtm,uAyF;nas4Kslex38;ainaCiv6y0;ck,min4Nom,pe,rotGubtfFwnvo7;ul;hy;aNce,fferentMgestYl,men10sF;aJcGguDmFp2Htille9;al,ou4K;a28eGoF;mfo33uraC;rn;bleFrm;!d;ia7;logFmet0;ue;alersOcMfeVgra2FmKnIpHsir5tGvFy;iEo3;en3;loy3Tosi3rKu41;iEomFse,t1;ina3;ean0HonF;st0E;isFlara07;ive;hip;iIrfHs,tF;abaEed;se;ur;sy;a0Wbc,emete9h0Ni0Ll0Hnn,oPpi,rIuGyliF;nd0;bFpcake;!s;aKeJiteri1oHuGyinF;!g;mb8soe;cieBuF;ch;a29pe;ck0ppy;cai0Sd,l04mZnMol0rHstco,uF;nselFpFri0;li2;niIrFy;eFidS;c3spondenF;ce,t;sh;cesQdNfKsistenJtFverQ;eGradicF;to9;mFn3;pt;cy;iFuT;dentia2XguFne;ra3;eGuctF;or;mn5nsa3;si1;munGpF;lexi2Rul2F;e,icaF;b8tioF;ns;iseFlaterAomb1B;um;aHeGimbi2oF;si2;ar2Oft;m,rk;nFrcuYviliz5;cinnati,nam1;aLeHiGoFurchya0B;pp0;bi,l4;eseburg0mGstnF;ut;icF;al4;llenFmp,rg0t29uc0;gi2;esaQlOnMp24rJshi0talyDuF;ldr1tFve9;ioF;us;st;boGelFgo,vi2;ess;ne;celFon;la3;amaFedon0K;ri;rs;a09eZiToNrHuF;iZm,rFzz;ma,n6;aJeakdIiHoF;ad4n7w;ly;dAt;own;nd1z0R;lJnIoHre,se,ulevaGwF;el;rd;st0ze;apar7di2y;st0;bl0Ncyc8nCochem0NrGzarB;re;minghGthpF;la1H;am;ge;aMeKheaJnjam6stHwiF;ld0;er;ow;in;de;p,tF;!hov19;chFm;es;byl1cLff8ghdad,o,rHsGzooF;ka;h,il;gaiHnGrF;el,y;ey;ni2;kGterF;ia;up;b0Sc0Id0Aerospa0Uffil07g04iyo,l02mZnTppointmRrPsLtJuHvFw;eFoid0S;rt;s,tonoF;my;lFtach0B;as;pirHsGtrolF;ogy;er3ign07;a3e;gentiFtwork;na;enF;ts;alHdrGglo,imat5noyi2ot,s,vF;il;oid;og,ytF;icA;al;bFnes03p8;er,iF;en07;an,e,iFlamistakeo;ght;grava7reeF;ab8;te;ia3;ti1;on;a,hd,opt5vF;anIerGiF;so9;sa9tiseH;ry;ceFi;meT;ed;cGe,he,quFronym;it;essib8oF;mmodaIuntF;abiF;liF;ty;ti2;ng;le;bJerdeIit,seHundF;anF;ce;nt;en;ey,ie\",\n  \"5.256\": \"true¦0:H9;1:IK;2:KA;3:K2;4:K1;5:JF;6:KG;7:KF;8:K4;9:KL;A:KD;B:KE;C:I4;D:JM;E:GS;F:BR;G:KJ;H:JX;I:II;aI9bGPcEIdDCeCDfBPgAWh9Wi90j8Pk8Hl7Rm6Un6Go64p4Sq4Nr3Ss1Rt0Uu0Cv02wLyKzJ;elJMoologD3um,zz;ay,er,oungeItd;aTb,eRhPiMll,oJrong5Rto,wi;ld,n,oKrJ;kIFst;hI2lf;dCTkipedIWldKnterJrt,th0;bothJ7lic4T;erFNlJY;a,eelchair,iJ;chHFm,rl,sk0;bJdEDe,nGW;inGIkinz;g7iv3llNrLsKtJ;ch0erfa56;abi,h2S;dJDe,mJ;er,th;aJ2pap0;aReOiKoJrs,ulAX;gHIus;!al,bDKcLewpoiAii,rtuKtJviJ8;a,ro;al4oH;eroy,tu9;al,danJQlKrJx;offentlicBAtCD;cFVoHT;!h3lESrsiCst4;fo,i,kr73mZnMpriLrKsJtmoI;n,s;du,iCY;gB4si2;avail98cUdQgrate1AiPkiIUloJ2pOrelFOsLtJ;ime4ouchabJ;iC2le;topp95uJ;ccessfulJre;!ly;a7IleasaA;!qI4v;eJr7A;fiErJ;dog,lyi2taBEwJ;ay,eFMhe13;he7CovGO;brelCAmm,piH8;a0Be07hYiXl,oTpc,rJurkiCXym;aPeNiMoKuJ;mpFAro;oI2pe,uJ;blXpe;cky,f1;asur0mJ;endoHor;nsKumaJvolIWy;!tAP;co,lDY;mLnEogFPrJsFurnEK;stF7tJ;ilBWoiF;my,w;dy,er,ght4mo,t;eOiNoMrJs,t,waBYyG0;eKoJ;nELtt1wi2;esoFX;roughfaGNught0C;oeF4rsCst1;oKrJ;apeut95eaboEA;logi5rem;amma8dF7lKnderloGJrrJx2Z;aGIifD;!co,eJ;gra2Iscope;blet9Jd,iLkKmJste8K;!il,pN;!eov0;l53waneF;a1Gc1Be14f,h0Vi0Tk0Rl0Pmoke0On0Mo0Kp0AquaC0s,tWuQwLyJ;mbolA0ntJstemGM;ax;ap,eLimKoJ;on,rdm0J;mi2suHH;a8WeJll;pi2tDG;bNd5ffiH4ggest3icid9lliv5mMndays,pKsJv;penFtain3;erJpo74;b,heE3;mar9PptGZ;cont77poeIIsecB;aSd,eRiQoOrJurEL;aLeJ;ssJw;ful;iJp,y;ghtH2t;ckhoJve;lm;ck0gASle,puFX;adfaIphan15ri1vens7;gKnlDAp1rJtioBP;craft,t1;gerJnaA;!i2;ecRhQiMlendCKoKrJ;awl,u2;ntanHBuJ;s,t;lLnJr9;aJe;ch,l;l,t;er9Vinx;iC0k,uHF;g32lJs,w,x;idariCv3;aAQeJiff;ak0;r,y;end0iJm;ck,ppe6;eJi,yrockD6;pt9Ltc6W;dewF4gnificFOle46mJncere4;oEpl5Qulat1H;aQePiOoLrJ;i1YuJ;b,g;oBBpKrtcoG9wJ;ro1Z;keep0p0;a,ny,ok,pwre4UrlCF;ar,en;kespeare5ll9BmpEEng4Rr7war9T;aNbasA2cy,duFQmiMnKsaDXv2RxJ;t7uBE;sJtiGX;itiviCor;na6ramCL;mJrs;!an;aLene6hizophr6Ri,oKruJulp7F;b,tiFZ;ld,ts;ndinavi5rJ;!ecr8Z;b,lom7m0Inctua6pKrJtu2Lw;ah,banC7;!phiEA;a0Abi,eSiQjd,ly,oMuJ;de4mKsJ;h3se19tD;b91or;dLna6AsKtJutine4;a6i;alERy;eo,riguez;c5dd1g,nk,pp1tchJ;ie;ap0cWdVfUgSiRlPm,nNpLsKunit3vJx;iew0o81;entG8idDHourcBTpect18tor3ulAE;aJetiDRorADti1;iDVy;ew3oJ;!unEVvaB;!ay,evEHiJo8Pucta2Z;a89cs,ve;mburFnveA;aDQiJulAJ;meAst6;erEBraDVus9;ditAOne3P;iLoJruit0yc8G;mmend3nsJuAve6C;ideraBtruDR;eFZpieA;m31ndolKpJsh,t49viEzAJ;i45tAI;ph;aiEIuJ;aKinJot3;oa;d,iAk0rteJsi;r4t;a0Lbs,e0Gh0Di0Al05mc,oZrNsLuJvp,yrotechAD;bliDAnJ;e,iD2;us,ychJ;!ic;acSePiOoJ;cessMdigLfit4QjecKmin8Gpor0TsJudh7verb;ecu8titu8;ti1;ioH;i7or;cy,metiC7;ach0cKdiseaFexis9Ema5VsJtri9;i8Iti92;i9SluGurs9X;!tiJ;c9Kse;aBFiNlLppy,rKsJ;itDYt9;celaCRtfolio;ar,enEMlute5SyJ;nesi5peptiG;nt3soB4;aLuJ;mJra74;b0e;it,nJst0teau,us36;ck,n3s;!a9LcKgESlgrima8NnbaJ;ll;as6NnD;!antKenomen9oJ;sphoryEJtograp49;om;aceMdophi1ep3ki2nLpperoUrJs57trole4A;iJpe4Mson3Xt3K;odDtone48;di2et7H;ful4;bCWcQdd1el78kistaPla8nz0pu5rNsLtJwn;hJie1Cna;og4EwC9;sJtrami;coGer;alyJcABmes5ticipaA;sA1ze;ni;ed,ifiI;bseScd,fficeDNm0Enwar3SpQrLsa71t,utKverJxl9L;cook3doEheaAYp6J;liEwaAX;dMeLganizaKiJthodox;e4Issa;tion9;!g7;e4InCF;a,hthalmoloJpn;gy;rvJsF;ab1er;aVbc,c,eSiMj,oKp,uJxE;de,mb;bi62nvio7Wob,rthwesteStJ;a6epCZ;cLnJ;eteJtenAS;en5W;hJk9O;olsJt;!on;bras17ga8hru,p9rd,st1ur7wJ;boJsteCR;rn;pkB9tional4AvigaB;a08c07e03iYmorpg,oNps,sn,tg,uJvp;cHffB7ltiLrKsJtaA;s9Ftapha;al,do17;p4taS;an,bi5LdSis40lluRnNoMrLsc5OtKuntaJ;inoH;h,oro62to;occo,ta5I;nl4Fr;aLe1JgKsJtaDI;o7troH;er,ol;rc2Qs92;sk;er7Ti;dMme,nLrvi6HsKtiJ;ga8;!chief,solong3Kunderst9I;aj,dblowi2imiFuscu1;dASweI;aCdiLla1MmKrce6PsJte7O;h,opotamB5;orand2Jph8L;aBcin9;d,h;car7gnificeOnMrKsterpieBJtJxim48ze;!ern9tre91uAG;ath7bleheBWgariCCiJk0ve3S;lyn,n0ti9N;age20che8ViJ;!fes4BpuCI;nt4;a03cbo,eXiSoMs,td,uKyJ;!in,net8r2U;cy,mJnche7re,xembourg;brid6Dp;bbyiIft,ma,nMoLrJuiFyalC;ds,rJ;aiE;pho1se4;eli7FgJ;fell4Nstan8Vti9A;bLfesp5ghtKneJpsti03st3ye;ar,r;en,s;erJya;a8tarian2Y;aNgLiKnJonar97te,vera61;n7o9Use,t5E;c3Bsu9T;enda6iJ;sA0t;gu7Mvi2;ck9MgMl9EnLra,st4tKureJva,zi72;a8n;ch,ino;ka;esF;aOeLfc,itKnights,oJrupski,u87;sovo,un;ab,e;epi2l3PndriKshubJyb8I;hai;ck;bob,ha,l,po6GtJ;hariEie;aQd,ePharkhaALiOk,oLuJ;ggl0liJstifi0K;e,o;an,bs,g,hann,nath5sJ;hJt1;!i;hANo;ffr6Tst0;cJin,smiE;in1ZobJ;!iA1;c0Dde5Sh26k0Clb,m07nLps,rKsraeliJv5;!t6W;k,oquo70responsMvi2;c01dXfVgenuiChabAAjUorganDsRteOvJ;aLincKolunJ;ta6;ib1;liJri98;diC;nsKrJ;conne8ZveE;ify;tKurJ;er,geA;in8Vrume1C;e8Uunc8H;lJuF;a8ecBux;iKoJ;nes92;cJgnaAre8P;aBt;ap02epBoKreaJ;si2;nsisteArrect4;agina87i3RmMpJ;ati3OlJroper4;iJor;caB;ineA;ea,ke;!onD;a06e02iWk,oMuKyJ;gieEmn,pothet2P;mb4rd1sJ;h,t1;l7YmQnMpLrKsJur4wl;e,ta46;!sem5;dod6Ne04;!eLoJ;rJurJ;ab1;!ymo7;eJy;own0r,t41;erarcNghLlKppJstor2Sth0;ie,o;ls,t;lanJne69;ds;hy;aven4eLfClJr0D;iJl0;um;d,h86;biTgSlQmPnOo,rLsKvJz5R;a,in,oc;s1ty;a5Zden3mKoJp;ld;le5X;d3ge,k;l5Fst0;lucinogJt;enD;!ue;tu9;a06e02hZigg1lVnocc00oSrMuJwh;aJjara67;camo1ntanamo,rJ;anCnieri;aLeJiev3owl3umb1;aJe3H;se,teI;du9nKphJ;ics;dpa,i8;ldfi2Lrg8Qtting86urm50vernJ;an7WmeJ;nt9;aLitteKoJ;om,r7B;ri2;nd,sg1B;etKomesJ;hi;to;l,nKrm,sJtaw6Q;tu6K;eJo5S;r3Js4Jt1J;bri4Rga,i4lLmbleKndhJsp3;ism;!r;axy,ifr7lJt;op;a05di,e04iZj7GlVm,oRrNuJ;nctionKrJ;nis3Ky;aJi2;liCry;agi1eLiJos2Oustra2O;tt0voJ;loH;a07ezi2igMnchm5;rtJunde7T;nJunate4;igJ;ht;aLea,iKoJuoropho5Z;r1Bwe7O;msy,nt,pp0;mi2re,sk;br3Der6XnJsh0;alLeJ;ly,sF;se;ize;eb1ud;m,r74ulC;ar0Gb0Fc0Ed0Cisenh0Bl03m02nZrYsUtQvOxJ;agge0WpJtin5V;eKloJressw5R;raBsi82;di8l,rimenJ;taB;anJoL;!s;hKobicoJ;ke;anJern3J;!ol;cLpresKtJ;!h0;so;!a7F;ica,neIu1R;cKlighten7Irich7Isla7OtireCvJzym5K;i23y;haAla7MoG;e6ig0Dphas35;bPeNf,iJla,v34;giKsabeJ;th;biJ;liC;ctrJna;ic9;ow;ow0;dJgevil1is7mu63s,uc2X;ie,y;!lectD;ay,o6A;nest4phoE;a0Le05iUoSpc,qs,rOuLwelKyJ;l5namDsfuncB;li2;nKpliJ;ca8;c5o;aJea6;cuKstJ;ic18;la;da,gJn70orw4Kppl0rm,ughn25w6;ma;arrhea,cSetiRff,geIligQoxiGplom4QrePsLvJy;eJil;rt;advanta0GcKmant1paJrega3Csipa8tr0Z;ra8;laim0rimiJ;na8;!c41;en57;ti5;ta8;bXcWfTlRmQnv0odoPpNrLsJt0utsche,vot4Q;mo5AperatJ;e4i7;aJby;il;enJre2I;den3J;raA;an2OoliK;e8iJ;sh;eJi4Goe,y;ctJr;!i66;ay,eiv3is4V;it,ra;inClKn55rJybreak;es3Qr4W;e,it;a1Hbs,c,dp,e1Dh12i0Zl0Ung,oTrNs,uKyJze26;a,b0;dd1lJn1Yrfew;!iJ;na6;aMeLiJowdfu4Numb;nJpp1;ge;ep0sceA;ckdJmp3wl0;own;a0Hh4Jincide0Gl0Bm06nUoSpenhag4JrruRsmoQuMvJwa2Ayo8;aKeJ;!naA;leA;nLrJ;ag4YtJ;n0Qs;ti2;!polit5;pt;kJl0BrdinZ;book,ie;ceGdesce45fRgesBr4DsMtKvJ;eyXinci2;ai1Bemp50inu9rJ;acB;eLoKpicuous4titutionJ;al4;lida8rt;cu2KrvJ;ato6;eJiG;cBsJ;si7;!et,fort2YmKpJ;a14rehe3S;entJo3H;atJ;or;!lectiMoKumJ;niI;nJur3;el,i9;b1ve4;!n3C;!cJti2;hi2;aMeopatra,inicLoJump;ak,ckwork,seJ;ne0Q;al,s;ir,ra,sp3;nd0rrhKtrJ;ic,us;os01;aQeLilKronic1uJ;!bby;de,e5;ckLdd08etah,nKwJ;!i2y;ey;i2oJ;ut;h3OlKn,rJuffeur;!acteri3AgesheV;andritsan2Xkb0Qleng0;le6meAnsorship,rJ;tKvantJ;es;ainCifi3;!dPiOlMnKrJsa,tara1S;l2Rniv9tT;a6did,nabJoe,terbu6;is;culJga6orD;at3;ro;et;a0Pb0Occ,e0Ghar0Fi09l07o02rRta,uJ;chan5nOrMsKtJyi2;te6;hJinessm5t1;el;glJt7;ar;dJk0;!le;aRePiMoJy5;adcaKcaGom,wJ;ni2;st0;efi2ghtJ;ly,neJ;ss;ak0eJ;ch;d,g,nJve6;dy;arMlKmb0Xno,oki2rEurb7yco0A;ne;lywJt;ood;di2;oJueber6;c,g,om,w0N;d1WllKochemist6sJ;cu1Wexu9;bKiJ;aKng;oaJ;rd;ti;aOcaNfrie1NlKneficiaJrnste0FtC;l,ry;gi5iJ;ev0;er;me;d,rJti2;er,i2;do;al,ckseat,d9e,hra06ltimo05mbUnRrMsLtJ;es,htub,tJ;er3;em5s;bKcelo2MroniJ;tt;arKecJie;ue;a,i5;dKkruptJ;cy;it,o;oo;a2Db28c1Ud1Jf1Fg1Ah18iGl0Xm0Nn0Jp0DrYsWtQuLve6wKyJ;!odhya;e,kward4w;!cLf,str09thoriJ;taJz3;ti24;h,kJ;la0U;roMtJ;aKiJ;re;in;ciC;ty;hr0Aki2pectibHsimiNtrJ;ay;abWbitraUcRe1XguQiNomPsenaMtiJ;cuKfaJstD;ct;la8;l,ult;stoJthmetD;crJt1;atD;ab4;aGhJ;!aeologiIer;st;b1l,ry;le;ia;olNpJr7t4;all3liLointKreJt;ciaBntiX;ee;anV;lo;alogoHdreLonymoHtJ;icJo09;ipaByclonD;!u,ws;aQbiNericKmuniBsterdJ;am;aKorJ;ps;ns;anKgJ;uoH;ce;nJzing4;da;aQbePhacOlNmoMsLterJ;aBnatJ;ive4;os;nd;ah,eg07ot;en;it;rKsk5;an;mi2;em,i,medabJ;ad;a,gregatMnoKoJ;ny;stD;ic;e,i7;fKs,terlJ;ife;!aiJect3;rs;d3miPvJ;aKeJ;nt,rse4;iLntagJ;eoH;us;ta;n,ttJ;ed4;ly;ed;cLhi2quKu8;te;aiAisiB;esso6oKumuJ;laB;mLuntJ;aAi2;ng;modaBpaniJ;meA;nt;ti7;on;ry;domLoGusiJ;ve;de;an,in9;al;na\"\n}"
  },
  {
    "path": "plugins/stats/src/tfidf/idf.js",
    "content": "const idf = function (view, opts = {}) {\n  let counts = {}\n  let total = 0\n  const form = opts.form || 'root'\n  view.docs.forEach(terms => {\n    terms.forEach(term => {\n      const str = term[form] || term.implicit || term.normal\n      if (str) {\n        counts[str] = counts[str] || 0\n        counts[str] += 1\n        total += 1\n      }\n    })\n  })\n\n  counts = Object.entries(counts)\n  counts = counts.reduce((h, a) => {\n    if (opts.min && a[1] < opts.min) {\n      return h\n    }\n    // IDF = (Total number of documents) / (total number of documents containing the keyword)\n    const num = Math.log10(total / a[1])\n    //force between 0-1\n    // num = num / max\n    // num = Math.round(num * 1000) / 1000 // round to 2 digits\n    h[a[0]] = num.toFixed(3)\n    return h\n  }, {})\n  return counts\n}\nexport default idf"
  },
  {
    "path": "plugins/stats/src/tfidf/index.js",
    "content": "import pcked from './_model.js'\nimport tf from './tf.js'\nimport idf from './idf.js'\nimport unpack from './unpack.js'\n\nconst model = unpack(pcked)\nconst keys = Object.keys(model)\nconst max = model[keys[keys.length - 1]] * 1.1\n// console.log(Object.keys(model).length.toLocaleString())\n// console.log(model.sway)\n\nconst addMethods = function (View) {\n\n  View.prototype.tfidf = function (opts = {}, mod) {\n    if (!mod) {\n      mod = model\n    }\n    // term frequency\n    const counts = tf(this, opts)\n    let freqs = Object.entries(counts)\n    freqs = freqs.map(a => {\n      const [w, count] = a\n      // tfidf = tf * idf\n      let tfidf = count * (model[w] || max)\n      // round it 2 decimals\n      tfidf = Math.round(tfidf * 100) / 100\n      a[1] = tfidf\n      return a\n    })\n\n    return freqs.sort((a, b) => {\n      if (a[1] > b[1]) {\n        return -1\n      } else if (a[1] < b[1]) {\n        return 1\n      }\n      return 0\n    })\n  }\n\n  View.prototype.buildIDF = idf\n}\nexport default addMethods"
  },
  {
    "path": "plugins/stats/src/tfidf/tf.js",
    "content": "const tf = function (view, opts = {}) {\n  const counts = {}\n  const form = opts.form || 'root'\n  view.docs.forEach(terms => {\n    terms.forEach(term => {\n      const str = term[form] || term.implicit || term.normal\n      if (str) {\n        counts[str] = counts[str] || 0\n        counts[str] += 1\n      }\n    })\n  })\n  return counts\n}\nexport default tf"
  },
  {
    "path": "plugins/stats/src/tfidf/unpack.js",
    "content": "import { unpack } from 'efrt'\n\nconst unzip = function (model) {\n  const all = {}\n  Object.keys(model).forEach(k => {\n    model[k] = unpack(model[k])\n    const num = Number(k)\n    Object.keys(model[k]).forEach(w => {\n      all[w] = num\n    })\n  })\n  return all\n}\nexport default unzip"
  },
  {
    "path": "plugins/stats/tests/_lib.js",
    "content": "import build from '../../../builds/one/compromise-one.mjs'\nimport src from '../../../src/one.js'\nimport plgBuild from '../builds/compromise-stats.mjs'\nimport plg from '../src/plugin.js'\nlet nlp;\n\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==')  // eslint-disable-line\n  nlp = build\n  nlp.plugin(plgBuild)\n} else {\n  nlp = src\n  nlp.plugin(plg)\n}\nexport default nlp\n"
  },
  {
    "path": "plugins/stats/tests/edgegram.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('edgegram-sizes:', function (t) {\n  const r = nlp(`he is cool. john was cool. He is really nice.`)\n\n  let arr = r.startGrams({ size: 5 })\n  t.equal(arr.length, 0, 'no-overgrams')\n\n  arr = r.startGrams({ size: 4 })\n  t.equal(arr.length, 1, 'one-4-startgram')\n  arr = r.startGrams({ size: 3 })\n  t.equal(arr.length, 3, 'found-3-startgrams')\n  arr = r.startGrams({ size: 2 })\n  t.equal(arr.length, 2, 'found-2-startgrams')\n\n  arr = r.endGrams({ size: 4 })\n  t.equal(arr.length, 1, 'one-4-endgram')\n  arr = r.endGrams({ size: 3 })\n  t.equal(arr.length, 3, 'found-3-endgram')\n\n  arr = r.nGrams({ size: 5 })\n  t.equal(arr.length, 0, 'zero-5-ngram')\n  arr = r.nGrams({ size: 4 })\n  t.equal(arr.length, 1, 'one-4-ngram')\n  arr = r.nGrams({ size: 3 })\n  t.equal(arr.length, 4, 'four-3-ngrams')\n  arr = r.nGrams({ size: 2 })\n  t.equal(arr.length, 6, 'six-2-ngrams')\n\n  t.end()\n})\n\ntest('edgegram:', function (t) {\n  const doc = nlp('my birthday is June 5th my birthday')\n  const arr = doc.edgegrams()\n  t.equal(arr[0].normal, 'my birthday', 'combine edges')\n  t.equal(arr[0].count, 2, 'found both edges')\n  t.end()\n})\n\ntest('start-sizes:', function (t) {\n  const r = nlp(`he is cool. john was cool. He is really nice.`)\n  const arr = r.startGrams()\n  t.equal(arr[0].normal, 'he is', 'sorted-by-freq')\n  t.equal(arr[0].count, 2, 'normalized-counted')\n  t.equal(arr[0].size, 2, 'normalized-counted')\n  t.end()\n})\n"
  },
  {
    "path": "plugins/stats/tests/misc.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('misc ngrams', function (t) {\n  let doc = nlp(`quickly, suddenly`)\n  t.equal(doc.ngrams().length, 3, 'found three ngrams')\n\n  doc = nlp(`john, bill, joe`)\n  t.equal(doc.unigrams().length, 3, 'found three unigrams')\n\n  doc = nlp(`john, bill, joe`)\n  t.equal(doc.bigrams().length, 2, 'found 2 bigrams')\n\n  doc = nlp(`john, bill, joe`)\n  t.equal(doc.trigrams().length, 1, 'found 1 trigrams')\n\n  doc = nlp('i am in houston texas. i am a good person. so i think he is a good person.')\n  const arr = doc.endgrams({ size: 2 }) || []\n  t.equal(arr.length, 2, 'found 2 endgrams of size-2')\n  const first = arr[0] || {}\n  t.equal(first.normal, 'good person', 'found good person')\n  t.equal(first.count, 2, 'found 2 good person results')\n  t.end()\n})\n"
  },
  {
    "path": "plugins/stats/tests/ngram.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('ngram-test:', function (t) {\n  const r = nlp('he is strong. he is cool')\n  const arr = r.ngrams()\n\n  t.equal(arr[0].normal, 'he is', 'sorted-by-freq')\n  t.equal(arr[0].count, 2, 'normalized-counted')\n  t.equal(arr[0].size, 2, 'normalized-counted')\n\n  t.equal(arr.length, 9, 'ngram-length')\n  t.end()\n})\n\ntest('sort-bigrams:', function (t) {\n  const r = nlp('he is strong. he is cool')\n  const arr = r.ngrams({\n    size: 2,\n  })\n  t.equal(arr[0].normal, 'he is', '#1-by-freq')\n  t.equal(arr[1].normal, 'is strong', '#2-by-freq')\n  t.equal(arr[2].normal, 'is cool', '#3-by-freq')\n  t.equal(arr.length, 3, 'ngram-length')\n  t.end()\n})\n\ntest('contractions-support:', function (t) {\n  const r = nlp(\"It's free for me and free for you\")\n  const arr = r.ngrams()\n  const obj = arr.find(o => o.normal === 'free for')\n  t.equal(obj.count, 2, 'dont include empty contraction')\n  t.end()\n})\n\ntest('ngrams-options:', function (t) {\n  const doc = nlp('one two three four five, one two three four five, one two three four five')\n  let arr = doc.ngrams({\n    max: 5,\n  })\n  t.equal(arr[0].size, 5, 'ngram-max-size-5')\n  arr = doc.ngrams({\n    max: 2,\n  })\n  t.equal(arr[0].size, 2, 'ngram-max-size-2')\n  arr = doc.ngrams({\n    max: 9,\n  })\n  t.equal(arr[0].size, 5, 'ngram-max-size-9')\n\n  arr = doc.ngrams({\n    size: 2,\n  })\n  t.equal(arr[0].size, 2, 'ngram-size-2')\n  arr = doc.ngrams({\n    size: 4,\n  })\n  t.equal(arr[0].size, 4, 'ngram-size-4')\n  t.end()\n})\n"
  },
  {
    "path": "plugins/wikipedia/README.md",
    "content": "<div align=\"center\">\n  <img src=\"https://cloud.githubusercontent.com/assets/399657/23590290/ede73772-01aa-11e7-8915-181ef21027bc.png\" />\n\n  <div>Efficient Named-entity Recognition for <a href=\"https://github.com/spencermountain/compromise/\">compromise</a></div>\n\n  <!-- npm version -->\n  <a href=\"https://npmjs.org/package/compromise-wikipedia\">\n    <img src=\"https://img.shields.io/npm/v/compromise-wikipedia.svg?style=flat-square\" />\n  </a>\n\n  <!-- file size -->\n  <a href=\"https://unpkg.com/compromise-wikipedia/builds/compromise-wikipedia.min.js\">\n    <img src=\"https://badge-size.herokuapp.com/spencermountain/compromise/master/plugins/plugin-wikipedia/builds/compromise-wikipedia.min.js\" />\n  </a>\n\n  <div align=\"center\">\n    <code>npm install compromise-wikipedia</code>\n  </div>\n</div>\n\n<!-- spacer -->\n<img height=\"30px\" src=\"https://user-images.githubusercontent.com/399657/68221862-17ceb980-ffb8-11e9-87d4-7b30b6488f16.png\"/>\n\nThis experimental plugin provides a highly-compressed list of ~38 thousand popular wikipedia articles, and efficiently scans a text for them.\n\nThe plugin is approximately 300kb, minified. It does not include wikipedia's redirects (which it should!).\n\nIt is intended as a proof-of-concept, for compressing a large lexicon onto the client-side.\n\n### Wikipedia\n```js\nimport plg from 'compromise-wikipedia'\nnlp.extend(plg)\n\nlet doc = nlp('You could always go to McGill, the Harvard of Canada!')\nlet m = doc.wikipedia()\nm.json()\n// [...]\n```\n\n\nMIT\n"
  },
  {
    "path": "plugins/wikipedia/builds/compromise-wikipedia.cjs",
    "content": "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.compromiseWikipedia = factory());\n})(this, (function () { 'use strict';\n\n  const BASE = 36;\n  const seq = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\n  const cache = seq.split('').reduce(function (h, c, i) {\n    h[c] = i;\n    return h\n  }, {});\n\n  // 0, 1, 2, ..., A, B, C, ..., 00, 01, ... AA, AB, AC, ..., AAA, AAB, ...\n  const toAlphaCode = function (n) {\n    if (seq[n] !== undefined) {\n      return seq[n]\n    }\n    let places = 1;\n    let range = BASE;\n    let s = '';\n    for (; n >= range; n -= range, places++, range *= BASE) {}\n    while (places--) {\n      const d = n % BASE;\n      s = String.fromCharCode((d < 10 ? 48 : 55) + d) + s;\n      n = (n - d) / BASE;\n    }\n    return s\n  };\n\n  const fromAlphaCode = function (s) {\n    if (cache[s] !== undefined) {\n      return cache[s]\n    }\n    let n = 0;\n    let places = 1;\n    let range = BASE;\n    let pow = 1;\n    for (; places < s.length; n += range, places++, range *= BASE) {}\n    for (let i = s.length - 1; i >= 0; i--, pow *= BASE) {\n      let d = s.charCodeAt(i) - 48;\n      if (d > 10) {\n        d -= 7;\n      }\n      n += d * pow;\n    }\n    return n\n  };\n\n  var encoding = {\n    toAlphaCode,\n    fromAlphaCode\n  };\n\n  const symbols = function (t) {\n    //... process these lines\n    const reSymbol = new RegExp('([0-9A-Z]+):([0-9A-Z]+)');\n    for (let i = 0; i < t.nodes.length; i++) {\n      const m = reSymbol.exec(t.nodes[i]);\n      if (!m) {\n        t.symCount = i;\n        break\n      }\n      t.syms[encoding.fromAlphaCode(m[1])] = encoding.fromAlphaCode(m[2]);\n    }\n    //remove from main node list\n    t.nodes = t.nodes.slice(t.symCount, t.nodes.length);\n  };\n\n  // References are either absolute (symbol) or relative (1 - based)\n  const indexFromRef = function (trie, ref, index) {\n    const dnode = encoding.fromAlphaCode(ref);\n    if (dnode < trie.symCount) {\n      return trie.syms[dnode]\n    }\n    return index + dnode + 1 - trie.symCount\n  };\n\n  const toArray = function (trie) {\n    const all = [];\n    const crawl = (index, pref) => {\n      let node = trie.nodes[index];\n      if (node[0] === '!') {\n        all.push(pref);\n        node = node.slice(1); //ok, we tried. remove it.\n      }\n      const matches = node.split(/([A-Z0-9,]+)/g);\n      for (let i = 0; i < matches.length; i += 2) {\n        const str = matches[i];\n        const ref = matches[i + 1];\n        if (!str) {\n          continue\n        }\n        const have = pref + str;\n        //branch's end\n        if (ref === ',' || ref === undefined) {\n          all.push(have);\n          continue\n        }\n        const newIndex = indexFromRef(trie, ref, index);\n        crawl(newIndex, have);\n      }\n    };\n    crawl(0, '');\n    return all\n  };\n\n  //PackedTrie - Trie traversal of the Trie packed-string representation.\n  const unpack$1 = function (str) {\n    const trie = {\n      nodes: str.split(';'),\n      syms: [],\n      symCount: 0\n    };\n    //process symbols, if they have them\n    if (str.match(':')) {\n      symbols(trie);\n    }\n    return toArray(trie)\n  };\n\n  const unpack = function (str) {\n    //turn the weird string into a key-value object again\n    const obj = str.split('|').reduce((h, s) => {\n      const arr = s.split('¦');\n      h[arr[0]] = arr[1];\n      return h\n    }, {});\n    const all = {};\n    Object.keys(obj).forEach(function (cat) {\n      const arr = unpack$1(obj[cat]);\n      //special case, for botched-boolean\n      if (cat === 'true') {\n        cat = true;\n      }\n      for (let i = 0; i < arr.length; i++) {\n        const k = arr[i];\n        if (all.hasOwnProperty(k) === true) {\n          if (Array.isArray(all[k]) === false) {\n            all[k] = [all[k], cat];\n          } else {\n            all[k].push(cat);\n          }\n        } else {\n          all[k] = cat;\n        }\n      }\n    });\n    return all\n  };\n\n  var model = `true¦0:HR0;1:HTI;2:HSM;3:HV6;4:HOR;5:HU9;6:HO8;7:HVY;8:HWE;9:HPV;A:HMD;B:HRB;C:HQF;D:HPC;E:HTC;F:HOW;G:HM1;H:HR5;I:HQ0;J:HFH;K:HQ8;L:HVB;M:HSO;N:HUY;\"weird al\" yankHX6'HX2aF7QbDONcBZ8dAYKeA9Ff9LVg8W1h86Gi7Q8j6WLk6G4l5RXm4LKn42So3SMp2XRq2VQr27Es0Y8tW1uPKvHEw6Lx5Sy2Bz06£9PHàstrid bergès-frisbEá03ättestuH2YåHPTæ01çatalhöyük,éUîle-de-E4EóTöSúrsula corbe79PüRđorđe martinovićD5Płódź,ōQśūnyatā,škoda PžOʻoumuamHHLμ2XK;eljko ivanGTSydrūnas savickHWQ;auHEFoctE0V;dARNkaHON;bermensHL1rüm5ZB;gede9IOtFWQzlem türeGVU;lafur darri ólGT3scar mingueGXY;amon de vaCTWdRlQmile Pric Ovariste gDAW;ro7EWzemBQX;durkDG0zoHW2;anELUodie 970;er milit9LRgar raGTMith piGY6ouardO; mO-henri avrH9C;anHSQenHFE;on10SsHSLthelO;red the unreaHFCst1;lvaro morPngel O;corrHQBdi marG6A;aHWNte; 1R-1Qa15bigniew brzeziCTCd14e0Sfs,h0Ii0Al09oSsa zsa gabHSUuPweihäGOTx FBByOz topGPFüFIC;klon b,nGT0;bin8Q3cchiHLUlOmwaltFOJrichHJZ;fikar aliEPRu O;kFSClaH4NpeH2J;diac03eYg i of albDE6hXlWmToRpicDR6rPsia m3KFyaHCYë O;bucEIUk665qH30roENHwanamDVU;a neale hurGTNin HNSk,oastOro;er,rFB7;ey deALYlOm video D1VpC8NtopA;aGOJoH50;aHDNbieO;! OlaHS0;a9T1landDII;pidGNXtán61Z;ar,oGED; PyO; deGY's extraordinary 8BK;collGI8kPlisterD9XpDSQsaldaO;na,ña;az1raFZD;! 5WC;atan ibrahimH04ib;dovuCKRffADYgUllHTFmSnQonPpOta hanrHVY; FYLfGGA;! w5IPiHM3;c91Pdagi Oedine z5TC;mere gha1RYna milegi doDGG;babweOmermann teleFT9;! GP7anCI9;bHN6gBAA;aSeQoOuge l8M3;ngnanhHJYu O;dF6ZenlHJX;j8M0ng O;he,yi sH35;ng Po O;liFZEwH2JziEVT;weiHLYyimPzO;h92TiFBX;i8ou;aland65HbGdd,enat 76KitgAIBlda YnVppGTKrQtOus;aOtelka7IJ;! reticuHLT;kFUJmelo–fraenkel seFDDoO; P-OdGJQzeroATN;knowledge pGUNpointE9Asum HF4widthCP9;dark thirHOKesA4Ymo0XBtO;o the powe0KNwo;! and the art of motorcycle maintenG9DdayaGO2er61JiPoO;'s parad9VRbA;maxA5Nth;fDL9wiG4C;f,zisław beks7H9;'3LQcYdieGONgreXhWiVkTlCXVmbAn11Kpatista army of national libeHQBrQtPwe asD2KyOzie beeHN9;ed bin sultan6MFn mFU9;anHG2o6F8;aOdBJV; OgoGVZ;l6UJtinBF5; Oir naGPQk wylGI6;bEXZpeHCVstaBH1zCVA;bBWFre;a99Ei hawaHTFn mccla9UM;b,us; WhQk O;and miri make a porH1Wde la rocGJ5rBT8snyderO;!'s justiTB; Pary O;goEZYleFE7qu9SQtaCR7;braHCEeQgPhadIki8laHCPstone is gonna beGJGwO;iGXEooHJ4;aEJRilGK9;dErHMQ;efr2taCR2;lDLXtB7B;naHPQsEX5; 32a27e1Sg1Ri1Qm1Pn1Oo0GuUvPōkOūrH1F;ai,o hikaHBM;ePonne O;d5F5m3PNorGUWstrahoGPQ;s Ptte O;mim5GGnicoleE6R;bissouHM6montaHQ1;a07en woo-DANg04i 03ji oku7ORkZlYmXnVppHRKrTsRta4K9vPyu hakusGOZzuO;!ru han8VT;!aO;l noah haAFTn shankar raGM5;aku mae6SEuO;f demHPZke 4T8;i Ot;andropGS8bezmenGS8gagE6Clowe70MoBTG;gOn1; GLRblH9A;e nikHC5i's cG51; bryEAQe,ia tymoGPP;aHTYiOon; O-FC3o miETO;kajiOtsu8EF;!uG;horHR4i0U0m1CW;a545oslavO; Oia;partisaNwaHRE; mi8N2n O;dF4ZshikHHX;-0Ua0Tda,el roD42g0Qj8TRko0Oland0Mm kippur0Lna0Ko0Fr0As06tam ottolengHGVuPwO;amushi pDTUeri museveHIX; 03'02nUpoHINr TsStO;h of75PubeO;! O-GNBr;creator GIOkiHI0mGEBpremiHDXreOtv;d,wiHP8;ef al-obaidHDSsef kerkoH9G;highHRZlie in aprH5Z; yuh-D2Man nowzar3VKgO; Q'sDNGboy never broke70Qer Ohoe7U2;dryasOfANN;! impactAPL;aQdADEearth creatHI1fPlady andG7Wmone2JTroJs1KKtO;hEQ0urHIV;orEVJrankeGTD;dult0XYvBQH;ll never walk8AFre so va4ve got FRT;are my0BIdon't mess with the z7IAquiz48Xshall not steMwere never really G0R;emite8ZGhiPuO;ga no BDFke id8DF;!hiOnori kitaHR4tsugu matsuoGXN;de suGPHro togHG8;denis ug9ZMgos lanthimHKEkPuO; ni kake8S6b8R3; FLIshireO;! O;and the huHMQpudH6BtGAX; Pk su64Fn O;eu3KUse-HIL;ah-4in-HDUjae75Mseu0CyO;eon5NKoung-O;chFQLj4; of the A2Xtan nEL3;! w9;a Oi viDNM;h978sald1I8; OhaHKI;k6XJoGZQtaHGI;aPi OuHSD;aditya95UbDF4;! sutras of patanjaHIX;ne wisH9OsoFMT;kai wFP2yo HKC;gwie malms73Gw mH66;ca,ir; sunCRRd880fy,k yGO9n and ESMtzhak rGNV; H1XgdrA42;a00ezDh ZkaterinF91llowWm5nVoSrRsOti; OhHCRterday and0CA;dOmiD2V;ay,iHJW;ba H7Jev1sinia pestF; jin-gGUJm1nO; saOgj78Tmi G82;ng-GMU; pH2Nnefer of vengAZQ; PjacketDNHkDZ2stone O;cal4U2n8YE;e8TJfEUBj923rHMIvests 9AN;jawaani hai dee8NYrishta kya kehlatB6Q;h yeah yeaF88r Ost,t;without a BZIzeHFU;cht HAVh0Gir lapHOZk0Cl0Bm06nZoYphet kotH99rWsQyOz5I;a Ooi kusaHJR;d45StouEI8;en-GUWh SminQser arafHD3uO;jirō oG8YkO;e,uni shGUY; Oe bl43O;ag5JJmiHIE;cH7PrajCAT;a shahiHF7ichin bitchDN5oslav O;amosGPSthe4MN; GTJi;deSgQis varoufG11keePniO;!ck biGNP;! d920; Oon,tEO7;di-pertuan aCRDgu5TQmi;reG8ZxO;! DVH;aOi gautHNXl,nayaDDX;d64Bguchi-1KFha QtO;a no or6QIoO; GXB-EAI;cG9Hm5WI;e FJStaGAT;!ov dzhuga6IDuO;lt,tsPzaO;! kiwaHIR;!k;tzHIIwG78ya O;abdul-mateeH6Rkh1;cOtu mamá tambi8K8;hromoCMDombinHAE; window FS3-0Ea09box06co05e01f00hZiTlSmRno7MGoQqc,tPuanza8v3CRxxOzibHMZ;!t4HRx;c,uFSG;chitl1PYlo maridueBQTr H6G;as,l; BFArFU; R'1aPnjiangOongEFB;! internment4AI; dF22ng5T2oO; zh1lin show5ZKmi;jinpingOmingENF;! th467;amHG5erdan shaqiHMCosa GYS;ce,iFCU;noPon,rO;ox,xesGRD;bladeFG6g90Yn,phoO;bAn;de,m;! O;cloud gaGSDgame Oo6series x and series s,wireless 47I;paHOZsHHQ;bi a9WTmGLFnRviO;! Per O;d791wB6O;heGQ3siGKD;der berkG1Athan gHAO;fFM6m5rayO;! crystallHJC;a7Xe62h4Ti1YjD8Vkrp in ciKSladimir CBo0Dps 89Rr03u00weRyOładysław szpiEC0;att PcOnonna juFDMoGS3siwyg,veHF7;k godCNElef 797;eaFPHrEGI;! O;championB6Bh2V1intercontinentCBBnTrawQsPuniOwomen's tS;ted stateH1OversCBA;mackdownOtuHHC;! O;tOwomen'H1L;ag team H1L;eOxt;tFW9w year'921; P-tang9YJhanOnmi mosaBZKthering90MxA;! institute of viCQV;a3OMc8MQzeB3P;aVeRiPoO;cłHECught DKK;ght OtFQQ;brEVMfly0;ckPstlemaniaO;! back8VR; of the O-it r437;rms3GEt3GF;ng3XCth of O;m1the tiE7V;bZFjGLCk84Ml11m0Wn0To0OrOunded kneeECV;cestershire0Md0Kk0GldPmOzel gummH6W;!ho7; P's OomHB4;columbian exCOLend harGH2faHL7stronge0F0;b09ch07darts FSSe06giviC9Wh04m03of 01p00raZseriesYtWwO;arQide Oonder ring stardH47;fund for B49webO;! consorERB;! O;iOz;! cD6iO;! Oi;byGXHcD4inE3P;ourismCAFrO;adeEJBiED1;! of pGYI;lly H0OpidY;oA6QrofessionalEN5;tF00warcraftO;! cBYZ;ap,usHOY;appinessAT2eO;althEJ3ritage 8LG;conomic f7T8nergy supply and consu2HA;ampionshipOesH0F; wGG1s in wDCO;ankPlitzO; chesH0C;! gH5X; breakdown FEVers' paBBHinOweek and wG1;' moHMGg O;meDPRtiO;me,tleC7O; cFR3pGZ2s O;bubble up like soda pGVPper minuH;! DZH;dPlO;ly mamEK4worthsCAG;peF31row CXEs6K9y O;allAVVgFG5haO;rre7GMy3; ji7UJderOg karVD; OlHOCsAJGwallG91;egg prioGWYgDSSwEAS;an oRbH9HenO; P's O-are-wonderful ESN;empowerGXTrFGAsuffFJ8;and children3OSof theFCXt77X;f the b662n tGVB;fPverO;hamGQOi6;! R's QdGYFeGO5gang Oman 1E6rama986wBKW;amadeus mozaHNSpOvaAMG;auHEDetFDJuJ;laHJSra4;aHI5cGEThaC; haCN7-fi2GcGCFde2Fe2Efe of aHN4i2Dki2Cl0Nm 0MnZon,pHBSreWsVtRves of henryHE3zO; khDH0ardOkHKXzHJO;iAACs of O;theGAAwaverly4YS; FABan sulaG3LchQhOold pil791; Oania somn4IFin tempG3QnailVA;a little help from my9KSgreat power comes greatBYTtDRN; trials in the early modern8E4-CJUc9SFer,ing 6DP;cons4e man's grandcB6Zh EYDsam ben yeE4RtCSP; 2DDg86LlessOsDHO;! O;access8YJpower 2DB;aFT6chester08dZf121gXkleWniSona rydH5Dr9sQterOxDJ1; O's EQH;olG05paH6Fs0TRw9;ome s8XVton O;chCDHduGOO;ePnBFIpegO;! jeHIR; O-the-08F;ha99Tmadikizela-m45E;rHMCvossCAL; chHM9dHJPnutC6Es O;haC9EofHHY; VhoGJWmiCowPsO;cal99Zor GBV; H7Os O;ins6A6mQnPp9QQr48GsOup7HQvGNKxp;eFLGubsystem for2FC;otepHIJt;eOovie203;!d8I;pH1Mt98X;! O;mysteA9OrFNY;hGM9wenFYW; wheHE0bur s1Bco1Ad15f13helm11lSmRsonPtO; GJRsDIU; O'sH3N;bethIphE9I; hosEQMer valderC69; 0S-o'-the-wiFP7a282em0RiQowGGAyO; O'sGF1s GCR;brC9QwonGR9;amPe OsB4Z;gaH0TneGPE; P-adolphe bougueEC6s O;cG3Tgrand prixE6NsH5S;a0Jb0Hc0Gd0Fewart gladsGESf0Dg0Bh08i06j02l01mYpVrUsStPwOzabGR4;alH5GestmoBW7ilberfFIGordGCMyl0;ePhe OynF9S;c6KJsiG6H;cumseh s395ll;haOtuart-hCF4;kespeaBtn0;andolph9ATehnquiHIQoBUT;ePittCZXoO;o7weC;nn,rry33QtFBU;aPcF7WoO;nc9NMrrF;kepeace thackerKpoH7L;ane c0UBindsay gASDuther BFXyon mackenziFRW;aOennings bBC4oyHL0;ckson hEFVmesO;! sO;idF;iOv; H1Li H1L;aPenryB3LoOuHLR;ld5ward taFQ6;in3rtD8D;iHD4oldOuarneB;i8m1;aulBGJichDOKrO;aGKBiedk4;anCS8eva6;aFKAhester m542laHHB;aOlaGMY;lH4Err;badHIYustin0PH; dafoeHEP-alexander6NQ;arGNLeALCfQge0pProHDXsOyunDKG;asGJ4h1GMmi6DEuccess spoil rock hunter?;aGNOouFRK;erre6RQorH; Oina6NL;canG0Uke8EMmohnGMPrGKFscHHZ;ord bri6XYrO;ed 76Gied zaG9S; PcaOebeeHHRfiB;rd5BBtt0;bPhuH4NtuB7Gwild O;cGTPweHHO;ill hickHBPo9;!xon signed-ran1G2;miH2VoHL7;!feHH5leaksE2Xmedia731pE8FsoBVI;! u;nerH1Bsel awc; a5MNvi6;! protected O;acH1As4D2;-mF9Ua0Re0GiToPy O;him?,women HEW; Q's Pis,le Oopi goE70re8HI;foodsARWlotta8YK;afraid of virginia woolf?,minding the mint?,neA76the bosAVT;framed roger3HUkilled captain alex?,model list of essential medicH7Nwants to be a millionairFEP;le my guitar gently weeGUZpsnade4XSrlpool 09s07tO;ePney O;cuAU3hCDI; Q-PhAQFsOy4BX;nakeGDKpaceDRF;b8Q2tail072;a00bZcYdDIKelephant giftF07fWgenocideE7RhoTmF9InSpRrQsPtO;ig0raHBU;outh afrGVDtar H7GupreBNP;h7O9oHIN;ap0eGQMhosphorus munG3KoGFE;aG3NoiHIL;le,useO;! O;chiefCU3doHH6farm 8DZ;lOox;ag,igHH1;hEH1liffs of dE2L;l2CZoy FPQ;mGV1nglo-saxon protest4WT;kOperQBtZL;eyFYWy;cG2GgFUO;atXeUn SreOy; O's wallQ-to-be-bornHJ8;eagles daBis everybodPthe O;crawdads H8Gwild things aB;y?;callsQ4hopeFYSmarnie was tFROnature calls with helen miALBtheO; camellia bl9LJy see D;in,l of O;fortune and8QPtO;h8R0iHJI;!ston8UM;le8OBrton school of the university5QLtO; P's OabouFYBsaGEX;eating gilbert g0WCmy linFDOwrong with secretaryBIT;a wonderfulHI0happened to0HPlies benFFZremains of edith fAQJwO;e do in the shF0Pomen waH34; 1C're the m445a19b10ch0Zdding 0Ye0Uhrm82Li0Sl0NmbleyDMQn0Fr0BsPtOwoHFC; lDZSlaHFHr29I; 06ley05sHITtO; Xboro bap1GCern Pinghouse electr1MXjHFNliHJ2minster O;aAPOscEYU;aUblHJMcSdB1SeRghaHF0n3CQphFXLr9UUsQuniPwO;aCorHHU;on,tH68;aFI8cFKW;soteriGRFuGRV;aOulH5W;n2pe;sAtG2ZuCVE;afFRTbRcAJVendDIEgermanQindiesPmemphis4X5papua national0LAsOvC41y3R6;ideHI3uAJO;! cEZA;icGTAy;aGIKeO;ngalOrl4;! state electricity distribu2B9; snEROaF0I;a37JbAYXcPmanGTMstOweG84;rE5QuH6P;ha7R6rGAH;ewolQnOwoGNZ;er heOher von8LV;isGIYrzogHC4;f,ves wi5V7;dOtworth H9Nyen gab970;elSiQyO; O's;ca212monBL2ricHG9wiFS3; Oe maAPBgo;deng61Cmclendon-covE; meldrH38l O;andEGIpiBCL;come to ma4OOfareF10lPsh OterweHFD;c353laGQWpeGOS; to hell6JAePingtonOs farG6K;! paranormM;rm1sleyFZV;bullEA8ghtOm7SV; 8GXed arithmetic me1lifting fairy kim bok8FJ;kOn,z0;end Ply shōnen O;juFO5m2K9;at bernie9JXblockb475;anniversaLcrasEOG;at,sler adult intelligenceEFO; QasBQ9cHEYdGM4gl,hoH8UkHEEley revoB72os,p,rtc,sPtoO;on,rG64;itDUXoDPU;apB7SbH1cSdeRf1GThosting438ofDNSpaH04sO;craCYOervO;erOiHH5;! directoEPH;siGX8vGQ8;oBZVraCGW;k7U2pons of the vietnamGBJr H9JsItherO; OingX4;forecGOYreH5Lu5IL;are SbRdidn't start th94VgotQnePsOthreeATSwere s14M;hall fight on the beaHG6ummon the89F;ed to do sometDX2ver l4KM; mWYta get out of this4SZ;ar8SCought a4UW;lad7I3tG8L;bi-saFC8coE84d24ff23g21hhabiH83iting for godHHWk1Yl1Amiqa gabFC8n11r0Bs04tWvTyPzO;e,i8K0;anDRIbackEW2faHDPlon jeBUJmo,ne Ov,ward013;bDH4gBJVhenC39knHEFmard7neD69roPthieF77wO;aAJ1iFQZ;geHFFonE;!eO; Ol9GQnuHBJ–particle dCV6;eqF7VfuH28interfG1B;chTerPfoHF1kin tudorD77tO;o,pHD3s f8B4; Obo2R6fallG1Igat6UVmC50ship 5QFwHFT;bDCXcPma74BpOresouETUscarFOP;olCZNuriDH6;ons7L9yc7; Om5os;doHDXthe5M5;aFBRhingQpPsily kandiGD9teO; FEWwater1DW;!-G16; mEVLton O;capitaHEWfGASirFWXmOwizGNK;etroOoB58;!pF0M;! 05c9LZd04ez2QCf03gGFWhammer age of sigm9lo02ner00pGKGrVsQtPwickO; dGK4sDD7;!ime sexualHEA; of the RawO;! O;pactOup8GH;! invasion of cAT6;rHFOt1WZ;ant Ren PingO; states87Ft2;bOcDIJeFLOjefDD9mo2oH3Os1W2zev2;e3ZRufDTF;ca3CToCIV; OmE44;animationGY3mBR;ck,rdADH;ar4raHGC; BPQrobe malH1A;and37UcBJQforE9QhaG2Yin TmEUZoOtG1P;f the Pn O;druHD5teDSG;austrianC1firstPleague of cambrH4WsOthirdP;ixthOpanishC0; coaliHBU;dOheG7X;arfGWJonbHG6;dRgPkelCLPnO;acry ransomwareDQCseeG02; Oan4SX;leehGVCyiDZQ;aQerO;erOing jG2QleiGET; above the sea of fGQRsDJB; OviH1W;naGsyk3ven7OC;d09esF9RgrESFk08l02maHG2nFA1purgisD54rDtOz3X1; Yer Qher Pon Oz;faG7Bg69C;pp,von brauchiECI;bTcronkiHdur1HFhiCkSlAPHmQoBWSpPralDS1sOu1U6;coH6VmiGXS;aFN4idGN5;atthGTWcmFLWoO;dInF3C;o9SEruCQ2;eOreCDW;ck0njDJV;disneyOwhiCMV;! O;a2U8piFK8studios motionAX8wHE3; HBR-e,aQis PonApaperCL1s and b0GSy O;cGGOweHC7;and fuE3OsF3D;by,cOrGI4;e OhA;and gromHBPfardEB1hANIs8Q5; thCXPer hay3m1;en,orf O;astoriaHB4eCR9;anHDBeOizH2S; O-on-l1;fores5VYisH88; tYOner Oon tH03yu;gGWRmouG;e2AQle houseHEI;dOeE24;esdon4SOy wachtI; 7Ra5NcaHCRe4Ff4Ega4Dhs,i11l0Umware0SoWpnEDVrVsUtDGFulRyOáclav h7DOõ nguyên giáp;aPbO;oGXOz kaF79;cheslav molotGDGsa;canPfpeJgaOk1tuBva;r lEXLte; centaGV7oHCA;dc free video 822s vintorH7O;bo,chH0Fedefort CH7il;ca0Hd0GguE0Eice 0Djvo5KGlZmiHF0nVoUrSwIxRyO;ageOeuFD2nich manuDKV; HEKr Os of christopher coCBA;golden C2YpFCG; mE29el;onoi9KZtO;ex,igeH40;dooBBBt; Petta03ItaO;e9WVze burfiGPV;dOmiH5Jneumann F6G;utH2U;atile organic co3DBbeH02can00gYkswagenTleyGH4odymyr ze1WJtPvoO;! 7Y6;!aOesEE6r2;geOiB;! O;divFU3piFJ0;! O;beDTAemissions H8KgQjFZHpPtO;igu1ouarDUM;assGZToH5J;oGJEroGVT;aOoEEU;! gUX;ic explosivGK1o;c85MoOtyH28;f Over GQ6;aFMQvADH;afo6ka;lOtionalCPW; rGMSoHBCs;! O;esA21wATJ;adPc medOog;ia GT8; RiO;mir OvostH4J;harkCNWkramnG8Vlen4nabokGC8p8GMtGIEzO;elG9UhirinoFPS;and FG9the imp25Q;acomcFIEb2Yc2Ad23e1Ug1Tjay1Rk1Jl1GmFZBn13ol11perC1Mr0Es05tVvPzO; mE17sHD5; riF74a la vidaSeRiO;an PenOsG60; lDPRne weG5T;caH51vFRZ;k oberDM0nH1D;! or death and all his9AV;aRel6WXiliG1MoPruviOtorio de 5VX;anH8Rus; Or belGLG;corlATNg44P; sackville-HA0lQminO;! O;a,c,d,e,k;iOy zdorovetskiy; Ok butAAXy mykolG9C;klitschGLL;aTcoSegrádGUQhE1ZiQsel koFF0taGual Owanathan aEZK;eGZJnGQDsO;nHAWtudio FG3yFEK;ble ES4gothOt mallorcaDGD;icF97s;siH6MuGWO; requirements for OkhapaACH;indianOunited statesO; citizeN;a08giVtuOustotM;alQeO;! O;etBUAsign044; ObGDZiEFM;l1mPnetwork cC1Lprivate OrETUwHBB;nFJGseFBF;acG9EeDE8;l ZnO; ViO;aOe efiGty;! O-GG0;beach RfFOAgiuffBhQmPtechOvalleDJOwooGHS;! sCJA;a1WLckEOC;alas mccaDK2ey;np6IXsCJ7;aPgOiGAFmE00of the rAHQrF9G;alCCRroGU1;tECUuCOO;ablGSFeaFC2van dijk;l Ot k29N;hemorrhagicAYDvectorEAW;a9ULet Oin;everGIVjessGJS; dA50ayaZceReQg rhGB7laH8AnOícius júAP3;ie Oy testaverFZR;jHA0paFAB;eth sreeniv6AYssa ER1; SntO; Oe m5EE;caDRQd'onofrGA8gPkOpFJQvan goH5Q;artheEBUoG2N;alH3BigF3V;caH50gOlomb4QWm0NZneGOUoFHAstaERCv4RByFJ9;illOuarFBU;!ig1; vidheya BVPk damodar savAQT;laOniD;ge Orreal A6I;ofB7TpeGI6roadshowATH;ingTraPtor O;durasHC4frankl,orbCTHtsDK9yanukovyH03;mOnt maH8V; OarkuA8I;bEH5saOvedG0D;mvGX8rabhH07; Os;aGTPeQ2; Oanagar8BV;an4XMdever68OfH4YkDZ3mallGJBsethupathiH4X;enère0JAgo morFNP;nnaUtO; co8namO;! Pese O;alF77laGJVpeGHR;naG54warO;! cO;asualH67;! O;new year'sFZHphilharmFQD;eoPkun quisH3RyO;a bal1ut jammwM; OdGUQt4A0;editing FVWfiESMgameOho05Mkilled the radio ANVnEMSon2IC;! O;c8KIdevelopOg9FQiF29publiFR2;er,meGUP; 08e05hy DIMia faGSCkZtorO; TiO;aOoD; O's secrH78nA7X;and albert7YSbE4EcPde angelFfFPZjH5MpOso8t3TJwoHAY;e4XFrinc2NT;oren 65BroH9R;bRdavis haH38emmanuel ii8Yga6A8huFZ0lustG6XmQoladiERQvPwO;ebH0MiFFU;escoFDHykhryH7H;aGXHos3;orGSUuoGI6;ers Si Qy O;cristina2E7kOmAHB;au132rieGL3;la965peO;pperBZPteGP3;mDE8wE7A; Pnte O;cFXFfeGAMluqGYS;mDY1presid9IV;fPmOreG3V;arH0CignGBoDKX;a6DYliJ;er,raH5X; c3SM; cFSUb stutt7M7l wolfsERC;ctor 0Ud0Se0Qg0Khicle 0Hl0Dn06rRsOtrimaG9Lvo;na vulGEPpO;aOer lyH6A;!si1;a00cingetorGQCizon CG0khovna 9U5mYnWonUsStOy hi8N;ebraQiO;cal Ogo;b9f8MV;l column,te;aH98ionO; cGFQs of bladWG;a,ica O;cFIYlaGBImaH7XveG;aOe F2B; bC23cula424;iFOVoO;nt,uGRT; O-eGGScryF5K;f0AGlyGS2mEZZ;eSiRkat prabEH1lafaxi6mo,n9G2turQusO; OtraGHU;de miH10fly6M7of willenABHwiFJ7;e3QBi EEG;ceCVYs2;to,zuelaO;!n0ZG;ik3JSma dC6VociQvetO;! revolO;uH52v0;raGO5ty;id3UWregistration plateO;!s of O;euGI2tBYZ;aReOgietC9V;miHtaO;ble4AMrianismO;! EMI;!niGZRs O;golden knF1OpGXGvaG8Y;p,rO;-zaaGapp1;aOic7ZW;nH9Gs;calculus identiH3ZgBQIpEU7sC3D;a1Qc1Kdim khamuttski9IFg1Iishno devi1Gj1Fkeel saEZRl0Tmpire0Qn05por04rWsRtQuO;dG3ZxO;-le-vicEPZhall moDMT; id3UFicaEER;cQec8EKilOopreFSYsarFQH;iy lomaFJWopiH99y O;arkhipG7DstB06;o da 5T1ulO;arCR2itF;anTg vikeD50iQuO;du kaavaleDXLn O;d1J3tDX9;aOcella zoster9U1eties of c860;ble-frequencyGC8nO;ce,t creuBGB;aGZAgianO; g7RWs; ERNwaGXR; 05a04c00dWessa SgRiPnOtabEIFuaG79;aDQMes A92;lla Oshing gradientDSCtH8G;fC4UiH7OsG75;elFuard-GBU;bGNUcDL2fQhudCNVkD5TlPmarcGLAparadFrOwiFHX;ay,ed9CC;achEen80J;erliGQ0iF7G;alQerO;bilt Opump rFRJ;faFZOunFQ0; sa91Ts;e6LIouverO;! O;canFMRiO;nGVSsH14;diGSTm;allen radiation DGPdPhOjH0FmoE0SwiEQ5;alD5LuGRO;arkholH7Ver waalsF48;! O;hunterANPwO;ee8YL; kiFUGeZhYimGWGkVlSorRproaHsalva maneuv0tQue-added0L1ve PérieO; pécr7W0n ismaël;cFQDiH78;er 0K0teri bottH7R;aGRFieEJS;aPeO;tH82y of theAJR;bhbhaiFS9d4W3;nF1RyrO;ae,iO;aEXKe;alH73eGLG;dictoGQKnSrO;iOy legasG60;aPe O;bert8WEhE1Kle2pacDSZsolanH7F; goCQ5n and the city of a thousand plaCDL;cQtinO;a Oe8LAo2H5;allegra de f6KAsFIBtereshFD1;e elec3ZWiaO;! A1Zn3J;iralongH2rayaGSM;! templeO;! stamCJ9;inaOusA0;!l lu166;ation94JcinQhirawit chivaarGYVuum O;clCKFpermOtuF8Y;eaE6FitEHK;aH2MeO;! O;adverse event reportF8DhesitD0R;niDHBs153;for vendFS5sO;iGM9p4OD;-8YAaG5Lb5Yc5Wd5Uefa5Of5Ng5Mh5Lk5Gl55m4Yn10p0Tr0DsYtQwe boCyPzOğur şah4;bek07Fi,u3TU; scuFTBghurC0I;aSeRilitQkarsh ambu5GOopArDXKsuro-bu6tarO; pradeshOakAOI;! legislative 3EM;arELVy; GD1rD;da hika866hO;! O;jaBE7monoliGOLutes39S; 01aYbWc trojan5ZRd AH1eShRl Qman khawaFYVs Otaše;aFF9cOjE3RlibertyCFGmonBNX;aG1DoD56;chGIJleagueGCM;anGBDuaA; QnH2Qr O;aFTRdatagramGNEinterfaceOsH5J;! GLO;case14Qyour illusionFW3;! O-c;flashG9UhBNPon-the-FUH;! Pge share of Oin boET1;o50Oweb browseH48;nFCXtQK;aFXCchauC63;aZbaVdu,eUho kekk5RKiSlRolaD74sPtica dioiFV1uOvashi rau1CK;guayEZYk,sei yatsuG;aEGYodeoxycholCYKula O;andGGYvon der ley5;! shor0UA; geGX1cH3Eel,jah fE3Zm and thummGJWnaO;ry tract7INti2;a,mAthG;in le vFOAnO; OiE8Q;arGZVd323legeH1YmOoutfFDLplF13rail transiDJQ;ey0ytEMG;lQnO;iumOus;! g9BT; DKHicGG1;anishaGUJn,pPstateH1JtoOwoH1M;n sincDU1wn fuG5A;eOsaH56;na,r O;eaPpOweP;aleCFDeninsula of m5NC;st DOG;a3Kbreakable kimmy sc9PWc3Fd38e36f34guE5ViVknown pleasFA8manned TobtaiBM6rRsQtiO;l 9G0tled O;captain america sequIdeadpool H0Yfifth indiana jones H0YgoosE5Dmario H0Y;a6imulatedBZOolved9YJp8BXupervi0AG;avel6ZVeal O;eFJNt92L;aOcombat aO;eri1YG;c2Tdentified flying4EVf2Ngi6lE7XmGG1n2Mon 2Iq2HswF4Nt0KversQxO;! O-liG6U;sE88tiH54;al0City O;atD0Uc7B3of O;a07b05c02d8BLe01f370g00hBY7illinois urbana-ch8T9kansH54loFKFmWnUoxFV5pTsStQutGV8vBQ4wO;aOisconsin–mESV;sCYCtE54;exas at0EYoO;kGB3rA4L;outhern c8D8t3PBy07C;arFen7KLittsAV0;ew so3KWoO;rth carolina at chapel E71tre SK;aQel6XFiO;aGWTchFS4nnesoH58ssO;i968ouH0V;n9VWssachusetts amherH1J;eCFHlasgH2L;dA8KxGQU;aPhBC7iOolorado bouEMU;ncin7BF;l8CXmE5B;olAKriO;stH3Wtish coluD5C;lOr21NuBSF;abamaOb2SE;! in huntsvilleCB9; OiGV1ly uniqueAJW;asynchronous receiver-tr3LPbasic i3M3classicAO1declaration9KLhealth2ZAmQpPstudios Otransverse mercator cCL0;f36Bh8YX;iF94lug and GR8roduc7D0;usicGLZ; 1Jar1GePy O;chEVZt7WI; the right rB5WdO; OhealthGLV;a19f18iBEAkingdom14nations10parcelE33ruG0MstatesO;! O;a0Ub0Tc0Od0Ke0Jf0Ihous0Hin0Dm08na03oYpVsQtwPvD41wO;a6Q1omen's national sEKF;entyYoY;ePoccer0LEpO;aEK5e6BC;cretOnaH; sE2Wary of O;dDJAsEMM;ostalE2Tresidential O;elFWEline ofO; succEX1;f aRne-O;dPhundredO;-dO;ollar DLG;l,meFCJ;tional s0KvO;al5VAyO;! O;oD4MsealO; selection and7PYs;arRen's national QiO;dterm3IQlitary Onor outlyingG1K;a5V5casualties 8P1;baskeFXDsEJS;ine6YZshalsE2C;fluenza statistics by flu C08telligenceQvO;asion of Oolvement in regimA07;greDH5panaGVN; c9JC;e0KFingAAG;ederal executive depar992ooEXA;lectoralFKVmbargo against cuGKN;eOoEJA;clarationB9Ppartment of O;dDIIhOjGXYsELUthe treasuL;ealth and humanFOOomeland 7HC;apitH2GensusDT2hained consuRoOustomary72H;ast2BJnO;gGE0sO;tiD1SuO;mer p7HZ;ill of9J7ullion dDCV;irEZ9rmOttorney ge901;edEFKyO;! O;a0KToD3Vr46HsU;! O;convention on the law of0WQeconomic and social83Qframework convention72XgePhuman rights83QpeaceA9TsO;ecurity83P;neral 3APo4VJ;! O;of PsO;pecialEFB;great britain andA2CtE0J;or hEIAruit FTA;irFMRrOustraliaGW7;ab OtD2I;e9S8rFQW;ianPy O;mGIPsEL5; universaFM0iGT1;of me29YtDK1;lo,ue selling proC21;bQcouncil of minDHIjaJo3OBpOsEL1tEIK;acific Oublic service9AU;bigCD8r94T;a1RRui5D3;corporated EM2terruptibl055;iQormO; resourceAHNed servicesC4Hs O;and insignia of the schut15Nof0A7;cation of Ped O;extensible firmwareEYZmodel9KVpaymentsEYZ;geFRZiD0K;ef,oO;deOrn;! subscripts and superscripGXS;ai3LVorgO;iv5oEKX;mployGBZscoOthical human experimentAY2;! intangible cultural heritage2H;eOrafted sports5WN;fADMrO; RgOta7wH0F;arGBUrO;aduate Oound948;deGOZeCDR;arAW4one 5WHprEKVsDSCthe silver 86O;annyRertaintyF3GhaQle Oontacted8LRut geGZX;bOsGYLtom's cFXJv6WH;en,uJ;ined me5O0rtGWV;! F0H; stubF6CbomberT8caBP4;aRberto Oineko7NJmag8GZp7;eGNPiO; Oi O;of iCZW; Pmi,r,yyad cO;aGTAonquest of hispCJH;musume pretty d5UNthuFO1;aanba2SCcerative colF7Tlu,m,st0tOu80W;imate VrO;aOon; hR-Qm1sBC5vOwide formaGX0;ioletOox;! iH0N–visible 1XO;high-definitio7JDwideBCI;d blu-rKiO;gh fF8N;customCQBfOmaDRXsFP0tensile06G;ate9EViA2R; Rg,iyoA1ArainOule7;ePian O;a9X7g1CShryvnAinsurgentC36laG9IpA98soviet B3L;! FUQ–natoBB4;dC1KindependenceGUIsingles8O8;tred8YIuru kenyatH1A;anGYYly bERDo humGJC;cBMKotGWI;! O;cReuropOnatGCGsuperGCM;a Oean GCT;conferenOleGCG;ceGCE;hGCBoDLCup winners'GCI;aOeEVYhamGUBo ki0;ciGU9loyESZy9ET; bOla brui461;rows0;aGWLba,erSisoftQlock39Us,untuO;! O;phFETveFBD;! O;conDJUmE6W;! eaGW5; A9Z-01SaY4biliGR2cY2eUXf–idf,gv,hCJiAHjx52CkGWZms GABntAGo5Sp-6CYr27s22t21u10v0Vw0BxEPPyOzu82Béa leoGQ1ýr,ā moG8Tết; 09cho braGOTe3D8ga,ler 05ne daGL1pWrOsonD7K;aTeSiRoO;nOsi6; 0W9e O;pGF8wi63K;an puG9VonCB5;ek E2Bse7BH; bEBLnnO; mathFANoGLC;eShOogGTM;oOus;idAM5n,onO;! O-G3G;haCW3rGOL; Q-GUHfaGZ7r34LsOwr97J; of OcEVP;prostitution in modern75TswGOQ;a and type b personalBHJi and type ii er3T1o n3ZQxxiG3C;hQjPpOrENKwCO2;erLosE;ames DLGoE35;o5YTunALDyn3;burDCCcoF9OjoGX3siHJwaG6N;eZiToO; R's compC4M-O;facPsO;p8W2t8WL;e,tor EHZ;and a halfGXObrothersAHAfatE4Nmules for sister saGrodeA4Ysteps from E2L;gG8LliRnQsted PtterO;! suspGCZ;mFRDpaGVPsiGPC; peaGPFkle1YD;ghtOo;! zone8AL;lPnty OrGKK;on097thousand leagues under01H;fth SveO; O-stepCMN;days ofGZ7grDSPminut3oPtribes O;cBCXof isGN6;'clock98XlympGO9;doGLTnGW5; Qb aOos,xq;nniversary FONwards winnersO; lCZ0;asaGMNg44XpaOtD9Y;rental guidelGM6trGYC;a0Nb0Lck0Kesday weGXMf0Jl0Gmb0Fn0Bp0ArTsQtPvaO;!lu,n4VT;ankhamGYBoCTSsi;caFU4keO;gee On7IJ;airm5syphilis6ZT;andGZ7bo03du8Q3in01kUmerGZAnQpPquFY9ritopsis dohrnGUUtleO;! rockEREs all the way 580;enEHNinCAJ;-based s4K2er QiO;ng Op,t4;pointBF3rGTY;b5KVclassicDNOsGI9;anaC9JeySiOmeG9Ws and caicDI5u;c EDZsh O;aPdelGVKinvasion of cy36LlOpeG50radio and televisionFH5wB51;aG73iG;ir2G1lEUE;! O;naFSAvG96;!g O;aCY4c35KmED1teGV6; c42VchaDSBencabFGCf1jGUQprG5Z;acEK8le,pence miCCR;dGgPisOnelFI7;!iaES6;stenOuskaCFA;! c0P6;bGU2lr;anER3ipPpa,sOum;a raceDLYi gabDSD;! mCG8;nel84VtD3U;er carG18man's stages of groupG6F;eOi,ularCG1; mEXFr3NG; tagovailFG5re7H6tha dé danaGGC; 4UVeokbokGGI;aQg G7Winghua EQVmc,uO;gumi ohGFAkihiGXUnOredureFP6shima EMDtomu86T;aGPVdeB;i ing-w5rO;! bomGF7domFU5;a1Ke11i09oXuPypO;oG5YtoAFX;die stG2YeTff7jGU3mRnajayaQsPth O;so0G3tGTE;s,ted platformEVJ;! rFCP;an capoHpO;et,iGO6; OcaGON;b82PdM2li3r3NO;ian bellisFT4jan YllXmsø,nWpStsk4BAubleRvo GMQyO; Oe s9WM;aiDK9bCX9dOeG42gaG6KkotsGDUpolama7E7;eFPPo9Q7; with theCPDd730;hic sta0C6icO; Pal Os;cycCSFsavanna79I;of BI1tFIN;!dCGS;!eyDH5faGWIs world F2I;hA39w9;a08b07c05dent04e03g00lZm6C1niWpUsPtiGHZvOxie ma0XW;aFLEikram srinivGX6;hQkeFC7taO;n OrAEU;and iseuEJWda cunFLUthDPN; strBCDa O;paytGX1yearG3R; hG4Ladv81Ile OoGNSpie 609uG;bottom GK6crown of acGX8ent8RMh,s7MK;dadPty O;college du816sBZP;! and tobaFL4;ateral95CobiH;eminalPlyceFE7onometrOun;ic8XCy; nAU8;!r,sH;!ineC8X;eratoG77ia O;helf0leigh 9NN;aGKNecaDOE;ge,lSngPssicOtAMI;!–jur2HM;leOular FUW;! O;iCABs4HT; of OwaB;arne cheyenneCQHmiANB;aYbXe Wha89KlGNSnUpEROvoQyO; OarGKS;anastDIVlFAVpaDNBsongz;h c3IFnARRr O;hoGLQla8RWmcFC9noGMFpOslGQ3;eaCFAhilO;iG6RliG6R;chGI3dyGVJt O;alexander-14Oba128gFZ9reznGST;oB9Htra3FXweC;linka0I3uED1;dsFOQsTtO; DHRy oO;f On the non-proliferation of nuclear w8U1;brest-lit5NXlPsèvr3tOv2R2;orde737riDK4;aus6ORisb2;on,ure O;isGOZplEML;b19c0Zd0TeDR0f0Rg0Qi0Njan0Mm0LnZpXudl j28DvPxamDWyOzo8C1;lor CSQv5ME;elSis O;bQfi9F2kPsEJIv1GTwO;alton ufoC4Qi5Z4;alaBI2elGV0;aDMOiFB2r6NI; Ping wilburFOClO;er's7YGing salesmanDFK;agF37m1; mFGSezoidOp FN2;!alB42;ceFGPsO; 06-04cendental01d99NfYgenderWh1M7iTlaGR5mission SnisFLGpoOsexuMubstaEA2y7B7;rtOse;! O;inG3HlayerO;! 79L;controlGCFelectron mic1RW;storPtO; authority of river F2Uion23G;! cEY9;! O;flG0JhFJF;e44Xigura1K6ormO;ationOerCQZ; mGBDal leadBD0; OiGLP;meditationOnuGPB;! BHU;neptunian44OpBCUsiberian O;orche2W5rD93;m1woO;m6KIrldBWO;!adGU9;!'sA29;lPnO; to bus1ingF7Bli6wrecksFGP; of0ZCer park DSZ;edy of the comFP9icA6X;alga746fic O;cF5JlGRQ;eRiO;ng3FUtional O;aG8Mchinese O;chBVXmA5O; uG5FmarkOr joe8WF;! FUH;eUhTi SkRtQy O;cALZletGQAmOpoD11wolfs2;cgCU6oBOK;atus logico-philosophD46or; andDWOmCCJ;lGJ9th2ZNwolGU6;eomalE8RtenberEVU; Pe elliECBrCGLy O;cD3RulDGJ;adF04cDFI;aGDZzonO;!spGQV; 48ast 9V1b43chigi FG2d3YeiF0Yfu,go,h3Xilet-bound hanako7AFk3Olue6m26n1Do1Bp14qGIKr0Ts0Pt0Iu0Bv09w03x01yO;! sGTDah willcFVFotOs \"r\" D;aOomi hidey7QE;! O;aWcUdynamic forceBZOfTgr ShiRjzBZOland cruiserQpG3GsPtOuzBZOyF9V;a5S5uESV; eF8DupG;! pCL5;aGT9gh4XWlFIM;eF8AyF9Q;jAD2ort3ZI;amLeliFIUorollaOroGR0;! cGAD; eF86lpGRL;ic mascu4BGoplasmO;a gondGPTosF;erPnO;es v04BsvFOS; Ps of bolO;ogGF3;brGBIh9GWof O;bCKAgGTQhanD27loF8Y;e Oino AH5;j9OQlo;cQhouNQker suleD5DlGRYrOssaint louverGGC; de OetteGD3i7EVmaGGQ;frF80sGC1;an,hO; PsO;cFWHtoneAB5;t581yourAI;alPo Otenham hotspurCWP;iv,w3G4; Ob0UWener7LJiE8H;dramaQeclipseOfertili3O6w9; ofO; theAC;! EHNraGLG;caQhiPliFSTs O;a coin to your witFTWbD19;ba,ro mifu6yuki moriAUV;! 5IS; bGJ0ah,chFZSiWnado VontoTpeFZVqGHEreRtPus,yO;! lanGLW;!oiseO;!shell30M;ntOy devitGAO; 6UHz;! O;fc,iDKLmaple leaCPJpearson GGKrapD6QsD3ZvanD33;aERRrEPW; Oi;amGKJbE2PkG6WspGLC; R-Qaz,herGR0kapı D9Dl55RoO;graphic prominGQ9logO;ical sorGSYy;down and bottom-up G80lB2J;bFGAchBUVgPhGEAof the O;laFU8poG34;ear challe24Eun; Ofa1naGKJtsGQ8;close for comG0Nold to dieDNN;es0Fg0Ei09sil08yO; Oa h22F;a04b02cuGBDd00fFQBgoZhaYiomGKFjERZkXlVmTpaDJErQsPtO;he landsCMUoEG9;coGJIhalhoDP4iriGELopEOF;anACXevo7IJiEXSoO;bOmo;biNiGKR;eGL4oO;nCB5wbrK;eung chiuOip;-wGGT;h1usDDQ;le,wk;ldwFQKn367;aOunG15;lt2nFTF;eOlaGO9;llFEQnFUD;bA9KwardO;! for bestDDGs;!lEYE; OcCC6;bQco2E8garGHAkPmoDKNsOtennFMW;ervEJStoGER;roGJKukoč;asG4PraGAR;a,hGCL; a6G5; 03a02bXer siESBiWmQoOyrF;kazu suDGNrrow OyukiQ2;never DWRx9X1;ie fra63PyO; OinnGNY;cQfuLhilfERJkiGNIlPmoOshC8Gtub8MEwi6AX;rrFN2ttoGR3;a8N3ee2P1;aldFIBho8; lahr5e; Ooy;of QraiderO;! O;ii,rel4XN;caecilia metGQUthe unknown 1C9; zdravkFVSsz schafernCR2to;a0Mb0Jc0Ad09f07g05h01kCURl00moZpVsRtykw0wO;aiGMZePilEZSolfO;!e;lGJRrn0;eQizeGKBker45BmDXHtO;oOuAPX;lBYEpAJN;guGlC72;ettyPidCA1rO;iGNMyGQ9;! O;and the heartbAJGdiGIZ;naF2YrGI9;aEXXe2WO;aQeFDJiddBNCoOulGQ4;llandOop0pp0;!er;nGGRrG9Syd5;rOuiL;av3e5;eFN5lFRHoOrDJ4u3EO;gEV1rd;alEel2TI;lancyPoOruiseGK2;nwKtt2urtenK;! G09'sO;! O;ghost reconQrainbow sixOsplinter A04the E9A;! O;ex901sDH2;! O;breakpFQQwil9R5;ak0ereG8YombadG3ArO;aG9CoO;kGFBokshi0;ckeC0Qnd jerryO;! O;fGJPinGM3;aVelG4Ei poGBLuTyoO;! OpFXR;broadcasting system9VAdecadGNOgQimperiHKmx,revANSsOtG55;kyGE6toOubway sarinD0C;ckE5Zry;hoEO9odfDND;gawa OsARY;ieQFshoguCG8;imura nuclear816mFM8;eeb jimG62o;d Orick FIT;fiF5XguC0ChOkohlheFLBm4MGphDCZruEAY;aOoCPK;berOyn3;koGF8;aRey magui9UTias QleFOYy O;fFQZhuGOPjGNNkebFRXleonardCAUonwuMEregD9FsOtuFWO;eb7PLtepGAC;lütFRBme7H4; catastrophAWHcGBV;catch a Pkill a mo2Q3love 7P7pimp a4JNtOyour8GG;ell the0A7hGK4;pEO1t76G;! equivaF9Y;a1Mbe1Jc1Idal lG8Yer1Hf1Eg18juana7RLk17l12m02nWoVpTraSshDAPtOz5ësG79;anOePYi1o ortAS1us wellGKD; FG4faCiOobF7Ms;cFQWumO;! d2ZW;miFBKna;pOu 70W;er 1O5i heFGN;beGOQ;aRkerPnitDo livramECOto b524y tO;ina's wondDN6oon3UF; OcGL2;beCtailor soldierGOT; OsGDN;aBEQd3KNfElo9Z9majoAPGsinDUOtuFW2weymG0X; 09b08eVoPurO;!iGAD; weFVZthO;y Oée ch2DC;bQdaFLGhuFRIlPmcvD19oOs1MKt553weGLR;lypG01munG5W;aurGMHeaL;atFMDot5R7; VlineQr,s O;higher education1PIsquareO;! FRJ; of Os of worldEZQ;aQhPnational8CZprehFCYstar trFLUthe OwCZR;evolutionary historyB21far fuGBJjames webb3CR;istoric i88ZumanB29;bolition of slavery and serfdG3ZncientEZM;banAEWcRdiF5Denough at 63Uformatting and storage buGLIin QmaEMKof con1IIperson 7W2sPtOvarianceBZLzo6;eGLKr6NB;eGFUigA3Z;auC0XcDBXtCG1;omplexiGI7ryDABuEQG;aGHLukFNA;aFVJbYcVdUferALKhSmRpoGNTrPsOtebGMC;c706tokeG96y2Z6;iGNPoO;bDFUthGHV;athFLUcFHSeaNinFS2;eideE3EoO;rDDWwaGM3;aG90raFPXuEE3;oPurryO;! performaGNA;nwKok;ePlakeDYVuO;cERSrtDA2;rners-lGFXv1; schweEO3aRdPia,lO; lindeG6Ey1D5;a Oe;cobham-heAO1swiD9W; teqK1pA;a sumE6BtGES; notaGC8erQht0M8raO;n petroEUHy O;reF7Ow9;! O;iFX2ki8laFPGshOwA4KzindA2Y;aGJRroG5X;a CD5fanO;i thieD92y O;dar0PLhad73Qt9W5yEV2; AW8ra del fueFBX;-tac-tFADkerC37onderoga-A6R;riDtO;! autonomous 5LSan O;buddEPBpeFU0; PmatE84nO;anme12Qgong sp6MWj4;carreBm57I;aHOe1Si16o0Bq0ArXuQwaites glaci0yPérèse of lis49Zích O;nhất hạDOVquảng đức;laFBFm7BJroGKV;cydidesTgSleRms G52nderQrPs spoke OtmoseDGC;kishibe r6CVzarathu2OH;good8LFingA; bKbolt and li7WFp406sAQ3;! air G8V;gGF1s of hindoFYJ;! 5ZS;aYeeQill0B1oO;ne of Ough the looking-g8T9;b7SAg8T8; Q's FDR-OsoGN1;bodyD6Zd8K3legged crGKXpO;hase electricG21oint field goM;colours9XDdQflavours cornetto9XDgorges7TWk13Dlaws of r3ANmOpercF9wise mEHK;en and a Oile island7Y7;baGI4little3CZ;ays OogCC6;gGL7of theEZP;cOsh1V0;e,iaN;! nordGNA;mUnTrQse who wish meFDYth,uO;ght9TNsandO; day9I9-yard sZG;!a birGB4iOoughbrGHZpeCYK;n oaken8ZBumO;!-based nucleB3K; mCMFg; yorFO8asOpson suY0son reuEUE; O-alexandre dumGMLin mcDGO;a08b07c06desiABOedFI3g05h00ian3AOjZkYleBDMmXneERRpVrUsStPvint9UKwolO;fe,sE;he PuO;chIll;aDQGtankBS0;aOoFD9;d3SVnG31;heGDHobert mal8AQ;aOeterf2CQikECUynF8E;i6rtE;aG4MeBC6iddledGANoBüGDC;inF6UretsG1A;a6e5MN;aQePoO;bb3mer-dFKF;arNnryFL8;denEDRrO;dy,rF;iGDOomGEX;arly7oGCUr6BM;angaESEeCTVrodie-sangGBV;nEYCqu519;a07baut cour6BYe06n02rRs O;boyGLMisOtoo shall FCU; OlandE55;eG1Wspinal tEL9t0K4us;dTtOuvananthap1IR;eenPy O;seconds6YJy9H9; Pth O;a8R2doG8D;colo4NPlCF6; P-O;pe8NXw8IA;battle of panipG79c8IHeDQ5genPno5REplague p6NRr8ICservileFFDwO;ay,orGK7;d0e9H6; lizzyFEQgQkO; CYKpadO;! C4;ivG5Zs fallGLL;l fellowFXKrryCNM;go Omi6;alcânAHXsFK7; 0Cer0Air 09l08mFni esw9o00rQsPta,y O;both die at0JJliGAJmight beZCshall not grow oGJX;aG6JeDsaloENW;aWeUmOopoGJC;al QiEUGoO; fisher scientE8Ibaric9Z1coup7electric Onuclear9Z1;c72OefDQ1g7GT;conductiPeO;xp7T4;on,viGEQ; will be6QN's something about mOm4sa5XK;aLiriGHY;nGCRpeut7X2vaGJ3; UbroF1ScE54doRfanis gekGKZloFU1rOsEZC;etical pE5Py of O;eBXf9MCmOr85O;iGH0ultiple intelligeGJX;rOsi1VS; Oe ro9FFicFPI;herzl,moCXF;jFJTr1UMv2wBPK;eGD0onious moFKE;fi98Vsatanic majesties reqGFA;aOpugal virkapadG5H;n adhigaaram ond7K8thon bunma824;aE7bD0cBUdAWeAGf9Sg8Xh88i7Mj7Fk73l69m5An4Ro4Jp3Tqu3Qr36s1Ut12u0Vv0NwTxSyOzomDJ3;ardbES9ePoung O;and the restC1Bindiana jonesEALpoG8St2OT;ar Ollow wallpC2A;of magical tA4Hwithout a santa c6D6; 1LH-fEARx;a08b,e06h01iXoOrong misF6I;lf among Dman VnderUrldO; P's O;biD32finest assassin gets reincarnated in another world as an aristocrG61;atFE4endsQfactB42is not9G8of the O;mOwG5G;arF6S; withFBS; y7V1ful wizard of A9H;in the house across the street from the girl in the2GOwho fell toE3H;ck4Fg90Yld QndOre,tFKYzarding world8Q4; Os of 8OP;in the wi7EErAT4;b9HPthornberrFCRwild GGU;eel GJYiOoFDA;stQteO; Ost kids u'042;l9N9man's buFQPstrDSU;le707;aOdding G21ekndFD5instei1CDll-tempered cla9AYst AOI;l3V6ther7I2;chowskFlUnderingE35r TsSterboyCFOy O;of PwO;ay DTNe weB;kGGMthe O;househAV3wiGFW;hington44YtT6;b5FXof the3Pwith g9XA;l street jCDZtO; disne6XEoN;aReQiPoO;ice DQKy4SX;car of diA3Xper FYUralA5P;lvet2R0nomC67rG8S;lhallI0mpire PnO;guardG14quisDPV;cE9IdiO;aGAOes in no GJC;ltimate TmbrellaSnPpD2DsO;os,ual 6BP;bearable Pcanny CL1dOforgivGF1;ertCJ4oi8;lightness of bB1Fweight of massiveF3O; a5AWs of cherBPJ;fFP5wF1Q;a0De08h01imeZoVrTuQwO;ilightBUUo O;jFAQpop3;b3doGH6rO;nOtl3; of the sAMNer3V;ans45Ueachery of imFTGiMoOuma7Q;op,uFVE;morrowFCRnight showPrD6werO; of the s98Uing87V;! starring jO;immy faEHRohnny caFXH; mDXIlessFA5sO;! E9Z;iQree PundO;erEDY;musketAATstoog5DZteBE0;ck70nPrO;dGE4ty-fathom 8MQ; man goeENTg Ok0ni8;about pGFLfrom17P;ll-taleRmpQnPrminaOstament of sister newAAAxas chain sawD6F;l,tGF8;derl8Z0oGGM;eGFBtGBV; hCND;le of Oming of the shrF58tami41Px colleG55;genFJDthe bamboo cuEJJ;a0Uc0Se0Mh0Hi0Bli0Am08now7TVo03p01tRuPwO;eFAOord of030;btle art of not giving a fuJn also12XpO;eriorF69r9XX;aUiToRrO;aPeet profiGE2oO;k3ngest sage with the weakest cF3W;ightGHCngDV4;ne Oog3rmlight arCXD;quA8NrGH7;g,ng;nPrOtion nightclub GDB;-spangled baCZ9li8ryC7C;d,ley parGDR;aOe6Longebob squarepantsGFOy who dumpeC91;nish p9UXrk04M;cial Rng of achiFK2pr3BEuO;nd OvenirGDY;and theCP6of O;mF33silGFG;d1NPnEON;ashing puOithsFB2urCEJ;mpENN;m shady 35Sts;lRmPsters of m5IKxO; million dollarGD5th sEGD;psons3HsO;! reASD;entFW1marO;ilEWP;aQiPoOrink nextBRF;o5PTp around the coFOI;eGG6p that died 1X4;dowOnnaraE7Jpe 9BGrd,w129;! 7H9s;aScret QeEZWlfish ge6ries fiB8FttDUCvenOx lives of college7VX; Oth 7CB;basic pRBhusbands of evelyn huF5N;d3DTgaFO3hF5Klife of A9Jof O;kESSnimh; 2XLrcDNP;arlet OhoolG1Worpi6MUreGE8;leEICpimpernI;ga of tanya the D6Gint's magic power is omnipoEKIlRnPrah jane3MFtanic Oxon2B;teCX2ve2IK;dOta clBFF;!lGHJ;isbury poisonGDYvaB1N;a06eXhythmC7ZiToQuO;mble in the juD8PnO;aF8AdoGE5;ad PckOlling stonDE0mance of luGDSne2CoGCSyal tenenbauGF9;ford7Fy horror p3D;not t0HVto el C82;ghteous Qme of the ancient marEIVsPte ofO; spFTI;e and fall of ziggy stardust and the spiders fromB1Zing of the shieldA4V;brDN7gem7YT;al Rd Pign of the supeF3Imains of theETApair 84KscuersO;! down uF9E;sOturt7;ea diving re78JlAGO;ghostb35RhousewivesO;! O;of Oultimate girls 82A;atlFUHbeverly hFZ9chesCD0m6W8new Oorange c371potomEEYsalt l0PG;je69PyCPF;nG4Zpe of the sabineB0Bv5;aPeen isF7PiO;ck brown fox jumps over the lazyFRAntessential quintup275;lity of nationFMGrrym5;a0Be08h07i04la02m's d45QoXrQtlCCCuO;rOssycat7QS;ge,suit of happyGFC;acGB6etTiQoO;claiEQ1diFPFmised n4T5tOu1EH;ocols of the elders of zi2égé;nceOsF3K; 9BYss O;and594swG4M;enESLty reckBWY;gu3interA2kémo18MliRssession of hannahGEGwerO; of Opuff7UM;nGDZtO;heFQV;cCW7tical1T5;ce beyond theOneGBTtENUyboy7LG; pG36;aFNIcPlOnk p66Uper at the gates of 8QKrate bK;grim's progFQWlars5JY;kwick 2A8ture of dorian A3J;antom of the22Ril silver64oenix – s kCBS;anutPmbrokeshire 79SntDR0rsOt girl of sakurasF7F;istence of CHEonal history of david copAAP; butter215sGDG;le blue eDKCndemicY5rOssion of the FYKtrick sta2Q;allItridgF77;a,bsoleteGB5ffUld man and09NmeTnSrvFASsmDK7ther RutOversGEXwlGE4;erPfERHlaO;st0OTw josey2VP; w6VU;guF8Aside of11HtA97w0A7;es who walk away from om8YTi2;gaGAZn;-BCCspFS5;a03eYflWiToQutcrackerO;! and the O;four r8DImousELL;rthPteAZ5vembO;erGAT; ECAm1;c5G4ghtOnth FVA; Omare beforeGFA;gwen stacy77FhGDPof; tO;odK;ighbourGFAon dFDUverRw Oxt karateD0D;batman3KDpoG3ErF3JscDURyorkO; timesOer;! best seller ANO;endingGE7s;ked Pme of the OnFAA;roGDHwiGB6;diG1NgGEE;a03e01iZoVuQyO;sterious Oth of sisy7F2;affair at stFJUisG80;mmy9A0nsEMPppetQrderOsicGAB; of roger acAFIbotO; diaG63; Os;christmas cGE3shGCN;dAKJnPody bluDBRrOst d39CtherlandETVuntain goaGAJ;e the mEX5ríg1tal i9K;keOsters are due on maple GB0umentsGCU;esF7Wy's pG3P;ckey mouseCAJdnight Oghty c5OZllion dollar homeFQVndy8Usfit of demon king569z;clDBDgospIsFDD;g,ntaAN5rchant of ve2IVtamorphEU4yerowitzO; sG5S;c05g03llorca4ZnYp of tiny perfectGBCrTsStrixOuritaF9D;! O;awaBMMonG1PreO;l4KSs3URvO;isCVWolAWO;k of zorG2Pque of the redEAXter and marga25B;bleGDTriage of figaG2OsQvelOy tyler moor7K;eOous misadventures of flap04Ws;tt3; vFCIhall O;mathers 329tuckP4; Qchurian candi698daloFXBy O;adventures of winnie the Osaints of newaGA6;poFUB;fromDXFin the high F38who O;killed don q9MXshot liberty v6WF;ic Onificent sBGW;f2Y5moDGD;hiEGUk; 9MOa0Ae04iWoQuO;cyOm6EX; ASJ–desi comedy 54D;bG3Tckdown se7I4nRrd of the09Kst QtG7Rud housePvO;e 85Din' spoonfEC4;! mGBJ;boF6Id434syFDSvC87;elAUEg O;and winding 8GBballG9NcaCdaG9R;brary of bC4Fes of locke lamoGfe TmSon Rttle PvO;es of DK3ing daylE69;mOprGCY;atch CODer3E0;g6X0ki8sleeps6J8;ehouse golF5Qits to1I4;aquatic with steve zissF55of O;david AWNpAO3;agueSft hand of75BgOnnon7Fsser key o0F4;end of Po O;batmanGB4gFV5mGB5;h6WEkEIMsleepy ho93Dthe blueFRUvox 9WRzO;elGBJorG1Q;! of extraordinary gentl0I9;mb lies down on broaDEInd before GDAst PteOwrence welk ARY; late show with james coFK2ness of the 53R;boy scoE7HdrDOGe7F8leRof QpPsamCU3wiO;sh,tch CL0;ictur6G;the mohFODusG98;gi2tter from your4VW;aYiOominsky GBY;d larCLQllVnPssing5L5tO;e 8WO;gOksF6B; P's Okiller chronF1Y;affF5Jm1s85P;a61Gin ye92Xof O;fightersOquDPJstateE1F;! xv;eGAZing of a sacrO;ed 0PY;pil sharm53Wrate kidDMQshmir3B;aTeRim henso15AoQuO;mp,ngleO;! AWI;e rogan2W7shua G0U;fferACDopardy FS0rry springeOsus rA4MtACD;r ARA;ckbox party CHQm,zz FUS;c07d06m05nWpcress 6E8rSslPtO; croEIYalian63;and Oe2J;of Owith bear gDAY;doctor moD2Igiant insFZ1;isFURonPregularO; at mag4D9s; Oy14P;gEMYsheF7M;betweeD8UcVdepenBLFfUheritance3N5k spoG86tPvisible O;gG6Ym1;eOouchaFOQ;lligenQrO;nOprFYF;atioB38shFOG;ce ofC67t iELG;ernal nFB9inity gauntlG8K;al,rediFOK;aginarium of doctor p3R1itXRportance of being ear90B;aten deities know only23MiGCIol6DK;e OkabFMW;age adventures of buckDA6roG7X;a04e02iZoSuO;dsoDIBmQnOrt D2I;chback of notre-OgZMt for red octob0;daGBW;!anFNN;bbG8AlRme depGCAneymooD8Cok up DP3rus hereEXYuOwl0B;nd of the bask72se O;in fata mor6WVof the O;deG7Orising9W4;idKlPocaustO;! in23C;i3owG9Vywood re3YJ;dden PeropFMSn98Lstory of the decline and fall of the8NAtO;c1SBman6V0;dungeon only i can eF8OwiFU7;iG9OrO;o with a thousand f2WSshe6PC;gFZXlTmpD15nQrdy D9QtPunting of O;bly3P7hillG9X;eful eG8IiB43;dOgov0C; 8PEmaidO;'G8Pen;fOloween88K; of G7R;a0Denius prince's guide to raising a nation out of de07Ohost and molly0Ci0Ala09o02rQuO;ardianOess wF6Flag archipeE5Ynk;!s of the galaxy hOY;aWeatPinnOudFTG;ingG6N; Pest O;demon lord is reborn as a typical no5SMinEJHshoEGE;bQdiPgatsG6BhuFUVindian kit8MZk0OHmouse dOnFMSpottery throw 4KDwave off kan65S;etecFRA;ctFUV;eAX5ritish O;bake8HNsewing4L;duaHham nortoPnd Opes ofDVMss8EX;budapest73EtoFRD;n APJ;-go8CRdRes wrong APIlden QoO;d Oni3;dino6IUfG7Vli9pFU7wiGAN;gCFSpaFU6; of PfathO;erDKN;hD04smallG7K;morous imperial concuCMAss735;ftFPJrl Ov0;befoBin the yellow ju98Mwith the dragon tattFDF; mcgG2G;mQng carries a corpse up a DCWrden of PteO; 7I0way puBTQ;earthly delE33sinD70wFZF;bAe awardO; for game 7HXs;a04e02iYlWoRrOull monG45;ePozen ALCuit of O;eBSWgrisaA;ddie mercury tributeEYPewheelin' bob d60Onch dispE7Esh prince of bel-aG6N;oBBRrQuOx and the hALA;nOr agreFXU;d0tainG65;biddenE6Iever p0MJgotten O;baB0SciG3X;iOorida4F;ght attenEB7nt7S6;f15KgFG4nQrOsher FVEve loveFKJ;e8BBst O;great train rob31XlFZ5p0MDwivesC60;al de8EMg0;ar Oderalist 24DllowshipA7N;iG9Istreet9KE;belE56cEPLirly oddp3MLlTmPraway palad4tOult in ourCESvouV8; AC3e of the furAVW;e,ilO;iaPy O;iER0m1sF2J;r of 98K;con and the winter 0UTl of the house of uEPW;cono7ZXdge of seven5L8ight hun37Pl00mWnSpoch t7JZqualBSric andr30vPxoOye95E;dDrcism of emily EGZ;erlPil O;deG5Lwi4MB;y DG1;dOglish FTVola holmes92Utire history ofF17; of OlessDBI;e2RLhistory and the laO;stG50;ineQojiG77pO;eror's new Oire sPR;clo0QCgrooFYR;m AO2nce in shadG7C;der scrollsPectrical life of louis 04Ylen degenereO;s AO0;! CRX;a0Ae02iZoVrQuO;ellC9AkeOmE4Ongeon of black F00rrEKS; of death and his 39Ns of hazFT8;agon ReO;am of the fisherman29sOw care0U;denOs; fDZH;prG8Fre73I;me at america'Q5oOwnward spirM;bi0J7rO; into AH2s O;diG14of8MC;ary of a you14Dck van dyk28nnerG2Nrty doz5sposseCBYvO;ergenOisio4ME;t EBI;aScReQfe1EBpartG48scenPvilO; jB5D'sG5W;d3LSt;pG79r CGL;amA3Vline ofG5J;d Pth of O;stA05the au14Y;poG83sFKK; vinci EBSily WkoG95rSve clark 207wn of eRy O;afterPof the 91Uthe O;earth stood stiCmusic70T;! 973;verytCO2;jeeling62Ok O;c0IDfoEU7knight Opictures antFHLs8J3;rOtD52;etDB5is3;bD63life of the immortal FTPsOtelegCSMwiB;hG6Bto53C; p8R5a0Jh0Bl08oYrTuOw;ckoo's cRltQrO;eF1Lious incident of the dog in the night-G8ArentF25se of O;la llo4RMoak DWT;!ure of critiqu0G3;alG0W;aReation of adG57iterion 7K0oQucD6JyO;iB0TstO;al COU;oFX2wnedCEU;mFIOnberFZE;ca-col98XlUmmunSnQok of castD85rG66sbPunOwsFQR;s4VMt of monte6FO;y AMN;juringOneG63;! uFSJ;arFWVistO; manifesFPP;lege dropoE23oO;r Our and the shaFW4;of7YZpuFHK;aFZFeveland AMFoO;s0veO;hitch 48Irfield0JR;aUeTiSrOurch of jesus christ of latter-dayBXM;istmas QonicO;!les of O;na7G0ridEHG;cDXPpF3T;cFXMeftE52naFR7;mical DDXstnutG30;insmoEQ0nge-FP9;bWll of VnUptain goes down with the FJPrRsPtO; rDA4cher in the rDC2;agraC50e Ok of amontillaFEBtle of caglio8DAual vacC1B;files of lord el-mello2XQstudy of van92E;dPlyleFP2ol burnet04pOs;enEF7; C92igaN;nonba8AFterbu7A4;cthulDEOt8KP;in i2JOl4MQ;a0Ne0Fi08lZoSrPuOyrFW5;cket AFSreau of magicalG41tterfly DC3;ad3S8eakfa242idge on the river kwFVUoO;kenwood90Cnx,thers Own C2B;jFZLkaramazF5P;bSdy 7UVld Rnfire of the vaAKVoOriEXRss FS5;k OndockBWY;of Ot6NY;bCGWeFXUfive02OhC9A;and the b4DZtyFV8; newharO's burgersG4M;t ALJ;aRiQueO; Os DD8;danuE8Smarb7;ng FJGp,tz;ckOir witch10; OstoneFOF;cr59CkPpO;aDQAho6;eEZDlCO0;g Qllion dollar E9Qrth of PshopO;'s EPM;a B4HvenD;bQfat quiz 7E0lePreG2GsO;hoG6RiJtG2W;ap,boEH9;ang DOXoDAT;aRll Qst Ptty whitOverly hillbA5Mwitchin' 4FV;e AL1;damn9HRexotic marigold6YUfifa men's FLWyears of o9YU;cBYEj9;ch bQtlesOutifu7JA;! FYD' O;christmasDZOrooftopEUMsecond albFR4;oysEZIum;bSh468llad of RnPtO;man who la94Ttle at lake changj4;gl3kO; jDUR;buster sc97Pjohn and 6YPsongbirds and snEXQ;adoFWYylonO; bFXW;-EZZbyG51ccidental biCORd05ge of 04l02m00nTquatope on white DBCrQsOtD6Lutopsy of jane dESS;h3sOteriskEZTylFQU;assination of jesse james by the coward robert EW2ocE9H;isto61QtO; of Os;computer9VCs9KRw9;archTcient magus' bENAdQgry birdsG3JimO;aOeG1A;ls,trFM3;rOy griffith AKE;ewsOomeda stFQR; sCKW;ist cookAPGy;azing OerFGUityville43Y;m3PPraG4YsETMworld of gumF8E;an parsonsUlO;-kn95Nman brothers AGZ;adaFSTinnocG35;amRdamCFMjustmentCVIventures of O;baron munc103ozzie and harriG1Wpinoc1KSroPtO;iBN5om sa9MP;bin G5Kcky and bullwinkle and82Y; p6IF;bo mbeFNZddeus676gom7EiXlUm luang cave rescFTSnRppG1ArDPRtO; P's OcheE3R;my49Iso rEX4;mitchell and webb 3A0time i got reincarnated as a sliG5Avegan2V3which survBYU;aPdiwe BU4kOos; you for being a fB72sgiELA;sis7KOtFX1wat suengchitthaw2;aOes of mil8QVido7UYía;ivG18mDssoO;cDPCphFPU; Ol0V0;baG25c5ZDlaFDOpublic broadcaOscE0X;stiQS;a2Lc2Cd22e1Yhr1Xjasswi prakaFWNkk5l1Om1Jn16o15ppan28Rq14r0Ds04tZuton4DAxPyOófimo lópFXY;a4VOonah paBU1; VasRtO; PileO;! iDW7;edAMDm65Z;! O;boD9Vhold 'EWZiPlonghor3ACrO;ang4I1eBNB;nstrumG0B;aFE3riOwaEG6;c6S2tt0; 6GLanDrOsuya no71YtigoniASR;aPisO;! D9J;grammFW6hOpG4R;e9FDydrocannabinG3Y;co,la TsQtO; O-drivenFCXic7osF3Q;criCCFdrive unlimited solar cD80of english as a foreigEMO; of the d'urbPaCX2eO;lEL7raFFV;erviF6J;autopilG4TcPmodel O;s,x,y;oFHBybertBK9;a0De09f,i 08m03pe6rPtOuo6QB;iBGAulEAK;aZeXiTorSyO; O's chocolateCWG-9RT;bBLGcA4DgPjG25kaFMAmelF50niC9Up0SArOsDRYwC31;iE9NossF2G;illiG14leFMJoodATA; in2B5iFUQ; Qer,toriO;al OesB6D;disputes in the south chinaFIGevolutionB6C;iCOVschiavoBFT;ll oBQUnce O;hoC3Pma9AT;cOpFIZrA;eG2BottaB65;iOs of endearFDY;naOte;l Ptor O;genisEWHsal9GC;high altitude areaCJ3luciAMBvEBA;gaFWWhBLQpoFV5;nce Psa O;of áviG3ApaEQCte8wrG0P;baF8WcrC2ZhiCmckDFKrattEQZstaE9PtO;ao,rent d'arFYT; pA36nce FLYtoFVW;uiG36;chew F9Zdoro obiang nguema mbasoERTtihu1DM; Z-Yacious9JDcentWerifeVgUnesseeSoRsPtOzing norgK;acle eroE68h 8WN;hin nasuA59orO;! pBK0flG1B;chtitl1r;! O;tiCM5wiECY;riFTXu,w9;! airportFT5;! O;gF2Bqq,vEOY;coEQVdRV;commandmFYPlost trib3yearsVT;pOuera moCVZ;eQleOo,uG; Oos;gr174hill FD2inDB4mE62of artemFunEKX;h,rate6F9; avFCWan6O2eRlQma9UGnFZEoPugu O;cAUJlaFBK;meB; me yourFYPtaleEG1urideCUQy savalG2Z;communica3FOgFWHoFBZpRtQvisionO;! O;prDR4shG0Q;e8PIo2ubD1B;atFWEhone number1C5;an,ik-i-taliban pa93J; 5BOnOrasil dangG0VtoEGV; PaO; BY5ge mutant ninja turtles8DG;dAMKpFAAtiCLGwoF7Y; Qdy Oros adhanom ghebreyC13;bOpenderg4FH;e9oy,ridgewERU;aF9MbTcSdaFV1hRkQlPmOnuEPZraiFUKstevens anchorag28LtuF9I;cgiDOMonDQ8;asF0GeFKY;aA1LeBK6nFZH;a25UuCSJ;a8HZh6T6rEUM;r37ZunFLF;hOumsEIW;laFYHnO;icSoO;!cDMGlogO;ical s788yO;! O;coESWreadinessCMJ;al OolFYT;anEGMdeYHuniversity of8B4; Tgan E6Qk,l,mRpot dom5FSrOsing master takagi06E; along the dotteA69s O;for f7CVin rain m623of theO; sG1FmF; Ofight t86HspeEYAvi5SKwoFXZ;l959ninEUCseG20tre3;partyDR5withCUV;héky karF81l Op congestionF7P;c77YteDC1;a39b32c2Xda2We2Ug2Th2Ri2Jj2Hk24l1Vm1Hn12o10p0Xr0Ms0Kt07u06w03x00yOz3PYíF9E; Y-k,e9XAloOsom D40;rOur p8WO; O'7SC;co7fFKMhTjenkins 1R5kiSlauC4Wmoms5rRsOto8WB;chAFNeFSZh2EOwiftO;! O's reputation stadium E6Z;aFECmastersEEYsiBYC;aEX3usEZF;nnEtsFQ1;aOeinF37;ckERMnFVJwE7E;bridgeFRDc3Z7; hET9at9XOiPonomOus baccaG1X;ic 836y; FWBcab2AT;awa onPhFYWny O;cypFCCkita5; moEFJ;! ceENWri6;aVeSiRmadFQCo5G2suPtooOumWHyanaDDL;! yESU;hisa3KOki fuji5W5roO; yamashiG1N; gabriFAQana mas6J4; P–labiancO;a 6V2;doCMRm6MR; PrsO;!t1;consultancyEMKfaESJgFIPmoCEXsO;ky,oNtO;arbEFOeI;h17JmaniaOuku hat4ZI;!n9SL;aUdiTek el mousFIHget SiRja turun5oPraBtaOy1JLz1;n,r25I;!n e5CEtO;! cardBU8;m bEMOq lamptE;cEJDfECJ;gDKAs; PnOxacFLI; killFXMtuG09;neEZKreFY4sO;tEXButEMZ; air portugMas,iO;ocaOr;! bEFO;! ObF8FiFR3;ruspoFRAte cCFX; C84a00gWhaF1DiVjir2F7kUmay bhFM4nRtPya rOzBIK;eB46obETF;alFL7rOō;a,icAUO;erOin; OiH;bu8YWsCXY; m1ie,sB2Jōb2;a raymDJAshk bagcFNU; QeOi0lFVH;nt,rineO;! dFX2;dDBTpi8soo F6YwF7H; Oya be2JB;mongeFEAr795;aYeXiUlyn tomiG0GmRpPsin Ozin ou3K6;e5BKgreEW6;a bay OeB;buccan9S0lD7S;anESTy O;a8A2faye OwynF17;bBYWm0R7; oldham ashc84ZlOm bin hamad6XS; Os;laF8Cna8WOrCPHscDVL; imB38ra m4JS;goB77le,m shudBBInnaFPVrO;a OiFVU;doFRBtaAWL;eSiQkPlOmFFBulah rCMF;iFHZow,ulah bankFVG; taBS7ing hea2DG;a Ob1esin j3WJ;a0YIbalsFWHsBVX; of the nine tailFUSs O;from the1HWof O;arObersB4WluminELTphantFKIsymphE6Pthe a3TAvespB4WzestirA;c9E5iFXV;aXePlamakIWo233t F70uO;mi mina88Qya 6WK; U-two7YPfusaThiRichi n5BDru satFFHshiO; O's EOE;kOobaFZP;anes6M0iF6R;ro tomiOto koO;yaELE; kuCIV;me toDQToEQSthFKT;hiro sakCFWnori niPshi mO;iiF0Qu6ST;shiA0U; 2R3ikO;iFABs; Uga,ka wai3XApSsPwanO;!ese7J0;hPsa fO;armiEVQ;o otome fairy FYPō;ei,ing O;heavenlyDV1rEDV;cFMEtuivaFGD;ar 9RFiO;ni,r raj bhEKMti; heu0alo8HH;joOkw68Iye2; B37nB36;lPOmichi kuri09D;hQitDko 49MoPtical O;r3FPsCGK;! F0Qma fd;i,yO;cardAon; C66byTernac7leOula raFG1; Pau EJ9tO; cED1op r3FJ;moD0Oof Ote8NK;handgun and rifle cartOkeyboard shortcuFU4;riCW3; cFJY's 9B3;psee panCN5rO;ak mehta ka ooltah chashmFODe zameen p9;aGmobileOpa4s8ZQ;! D;a02Ebs 02DcZXd 9OFeUOhQ9iMNjMMkM1lL8mKPnK6oFXpDJqD8rD4sCXt6Du1Nv1Kw0UySzRámi X4ão QéOøren kierk3HUüper lEUB;amusA0Fbastien O;haFP6loDES;pauFPGtomé and prínciFMA;a,czec4;bi1d0Je0Ify,k0Hl0Bm04nWphE1GrTstemO; PanDUOd,s O;developmentISeFAJthDGE;oOpreEI1s927;f On a 16Y;a 473linear8T7;acusDQRiaO;!c F6Cn O;cE5OdemocraticDAF;apsUcSdEBQeRgman rhFPKtO;ax,hO;-pF5BesOwaFMY;iz0;cd4ZQsE71;hronOopaFT9reECG;iE54ousBUW;e,id;bRmetricFDQpO;athPhony ofO; the seFXI;e1Q6y for9P3;ioOolic 5A1;neseOsF; l4JE;lSvO;ester stallo9M9ia O;hoeFNAkriPplaFFCsiO;dnE;stI;ab7o2F8;es–picot 77GkuF4P; raa narasimha1L9d kirDJD; bED9ney O;aFKYgreenFTEharbour CXSnew year'sFGCoRpQsPtO;huEPOo the mF8Y;ixeFV3uper BNWweEPB;enES8olD6Y;lympic park tennis6YGperaFVD;a09e00iSoO;osie kurFPHrdOt ALE;! O;aOof3ME;nd sorceLrt onlineEYB;gF5WnUssQtOzz beaFPD;ched-modOzerl0MN;e power su2TS; O-system7TZ;armOfra7OTg6G2international airCAWmark6SS;edD9By O;kC41m1;d2gEHS;ating9LXdQeOyn forkbEHZ;ney3Qt O;but psEEThome alaD2Hm93potaFEA;enQish O;aOemFHUhouse mEX7k4FRlaF51social dem2D1;irDSRlDSCrmBJV;! O;dOnaEQ8;emoc1S2u5IQ;bAchh bharat DAVdlinCRMeBVLhili F4Vmi vivek1PCnQrPstikaOt;! CYL;oES1thmoreEDW;! 718sFQB; werder br013alCQGeO;nOtlana alliluCKG; boB3I-bertil tauDY3goolFTV; bing9AHb3Wc3Sd3Pe3Mf3Kg3EharFDWi36joy gF0Tk34l2Xm2Pn29p0Yr0GsXtton WvarnabhumiFJZzO;anSi quatFKFuPy O;amis92JmiFN6paCN2;kOme no tojimaFS5;a na3R3i O;jimER8swiE0Nvi9SL; EYPnO;a5YJe O;cC5DpleshEX8soE5MveESR;foFLShEYN;aVhUie TpRsFVDtainabOurBV4;iDD0le O;developmentOenCA7;! goaFTR;ended 6QKiO;cious pBYOrA;deFFFesEZKmcaEQMw2II;a9MIi,mitEHX;!nO; PnOoo-no-mikoFDD;a h2A8e 1SP;atE1EbDLGdUflanAC4goD18hRlQolPsOwoDZR;a44FontF0Uu8UN;iv0s5;ucEUQynFJW;aPuntington gilbertO; dE3Z;rris0PUyBV4;ey,o5MH;a04bhi chandFGRfZgXiWj5WTnaFVArUströmEXOtr,vOya;een4UAivO;al RorO;m1sO; of theOhip ABK; flEJU;fiFQRgaFV4hoC7CmoEIT;eOo6E1;aEEOnder 611y;naFV1yaFOK;eOical3LF;on gener6ZZry;acPsO;haFQYide condominiumCN2;eOtaFEO; BT0-O;mount 9J4tF0K;jFN3nneBKTt;erVpRrO;eme Oiya pathER3;court of OleaderE2V;iF2UruER6tF3G;ly PortO; your local gunfF0M-vectorD9B;and11YchainO;! DSJ; 07bFQHc04g03hZmSnQpF9Ns8R7t4DDvO;iOol0OT;sed 9K6;aturalOoETF;! fF7U;!aO;nQrPssive Ox01M;black 76YgETH;ine spitFPLkFQR;! O;iOrCWY;i,n FPV;eroPumanO; str7TO;! O;fiFPSmFRV;iaC8OraFT5;apacABLentenaFD8haCO3oOrFK4;mE8SnOpa de espa9UF;d8O6ti8NO;bowl ScrFK1dave osbCP9g2OTheavy-lift launchC0Fju970leagueA94mPnintendo en25BsO;e8VTiz9DU;arioOetE8T;! O;gE4SkaFU5oFR5pFNLs3WWwFSK;iEEHlXvi,xO;iF35lVvUxO;!iYvWxO;!iXvO;!iO;!iO;!iO;! halftime showE70;!iEE9;!iRvP;iQvO;!iO;!iF2U;!iF2Tv,x; ZdVflower farmers90Wg ka8iTjoSk1TDlFQJmi,nQsO;etOhine skyway CU7;! D3H;iFI8y O;deFSRkauLXl99SozeCsuljFTW; AXYng9GO;dhi004el83Ml Ot4JY;gavask9vaEWI;aOiMown A3M;nce PrOy in the park withABO; pi3B0baN;fCL1kFQP;bPdF40gym C8WmicrosF8DtOyat-s5;eBKLzu;eOoCY5;ar,ltED3; of norm5Y2aUerCOSiTmOo;aFOPer Oit F31;glF79oQpDL5sPwaO;lk0rs;olsFNS;f C7KlE60;re ueBNLtro djojohadikusuE4U;c,tG;aweFJLeiman the magnifiFCKfurTlStanO; Qate of O;rFDMzanO;zib9;batheLkös5;a,i,y sull51B;! d237icFQ5;arF07hC19i waterhFR3jAX6umarO;!a kurFAC; dD4BcidOkCUJ;al TeO;! OboEL8;by Qin5YHmC37of OpiCs9YC;amandaOjadi45Wkurt7OK; toDGC;han5VHjumping from heFPG;id1KItend18P;aOeASKoroA2J;b1Z3rO; Oca6;bPray O;l4NZroDWK;eFOMoCX9;fOiFITjan5TZ;oBKTragETI; Pt,z cO;anMrBOO;ann niCZNl9QBpBBK;anDLZden iPetenFL6ha murFLRokuO;! solving5QJ;m7BZnfant deathFBM;cPharit bhakFFYker punch D17rO;a755oFQF;e3X0uO;bDlentBA8;-saharanE0Aa01com00hasZlime8EJmaVnUprime mortg5P7rahmanyan chandrasekh9sPtOurb2VVwoof0;iFBOropiDYU;etRidERUtO;aPitutionO; ciBIR;ck,nceFFE;! sumCBN;auDUFetDYI;cBVGrineO;! Ps inO; the united states7HA;communicationsAFSsAWU; 5IJh CSD;andanteC1UpactAA0;ruOtomic pEGD;! O;ejAX1foreFHCimpreESUle6ACoD19t84Jw6TZ; 65a46e1Ri1Kjepan1G0o11r00uPx F1EyOéphane peterhaFIL;giomeduF8Zx;art WcFDLdRn098rOtt63CxnFNQyvesantA93;gPmO;abtei3MAgeschützCKA;e2illDF8;entRioO; Oc8BB;biFNCchiE8RdOghibFI0mFNGtAMU;e5rD2B; 6YK's t-AU5;attEHZb2H8cOdaC54maDWRsut4Z1t99R;raEN9;a09e00iUoRucturPyOzyENW;chDKTk0;aEAKeO; DA8d9GE;ke,mPng O;and weak tyB7Pgirl bong-1J9i7GT; thurC6Zae;ctly SkQng PpO;chFCItF84;iBW0thD99;eOing vi6T0; the5WDbAKF;ballF60come danD5Q;amUetQisand CVKptococcOss–strainBIO;al phary31GusO;! pyog8LJ; OsAZ2;dance girlsEWHfighterOwomanEWH;! O;iEZRv; of5PXing OlaDVB;mCE4teBHW;bismDdivaEZTiYngeUsAWQtQuss–howe genera9BTva,wOy 2G3; m1berryO;! field5II;egOford-upon-av2ton oakB9M;ic Oy 0OQ;bombOdefenseCL2;er,ing2SI; Qr O;in a strangOthFN2;e FJA;case of dr jekyll and mr 7O3fBUO;ght QtO; of Os timC5M;gibr75AmageBWM;edF89outta comET3;at,c01iEYCke00ll5mach AASnTpwat,rOut,weCFFya;age E8TmRyO; of ObBUItFIK;sea9PLyO;anxi C6KouCZA; 1FAing of the bastEKYy danAWRzy;eOy brook DIT; PhC4Lman douglas h1M2wall O;jERXr26B;aF7Zcold steveQoDKBsoF66templO;e piO;loFLI; auADL;-on-tEDTs' CP4;hasticQkO; Oard chDKWholm6IJx;aitken wa9JIexD5JfooERImarketEVNph69H;! O;gradient d7W3pF65;ckyTeg l4PHffSll RmuB7UngQpe miocFPZrlingO; O's approxiF3H;eE3SmoFOF; FHGrK;gaFPCsE43; littleOneFOC; finFI2;a1We1Sf1Pg1Oll1Hm 8YYn1Gp0Sr0Ntson5Z7vPwart Oyr aCMG;copeFIDlFH3;eRiO;a,e Pn O;joD42sEY3;nCM8ray0CXwondEID; W-o,nO; Os–johnsF8O;aTbDEUcSdonzDP3gRkQlBM3moffFARoECKpi7EBsPtEUBuF9MvOwiES9yeFOH;an zACI;e4LLoderAWSpie3AHtDFX;nFM0ruAZG;erCJ8uDW1;auEEAroCX9;daFN6veL;a06b02c00ditEXDeZgYhXiC9QjoDTPkWlVmQnaFGHoedekeFKVpBLXreEIEsPuDXWvFDJwOyDW9zaD3R;inEVMoz88TyF78;arkiDVFpurEUD;aQcPillO;er A05;naFL0qEKT;dd5rO;iENXtAVO;i34MukaFAH;azFGGeFHSiEMElov3;a9ONufFG4;leFL3u0V8;ar7iESF;aC16h5ooO;g1k;aQiPlF9AroALMuO;rNsceFGG;ko,ng;cksEHBlEB1nn2;lOoF6X;biFE1l5;eoRling OnF94oFLS;ha442sO;hJPuO;bmBRZ;phonic s9Z4tyFCF;an ban2QLhPpeO;!rBLG;anie 06enO; OieBS2;a07Wb02cZdYfLgXhVjay g8FOkingBTGla8mUpTrSsRtoQwO;aOolfrFKZ;lDVTrd;bolEMPmpDWK;ilFNZondB7HtF6L;ea,oFOB;ad42GoFO3;c6O7e2ALoy0;aOeDUWill1CIumph5ZS;rp0wF91;rCGMy3GX;ilCYXorF5W;ampbellB8UhFLLoOurL;lOvE;beFNVliN;aOrE2JunFNX;lF6QrDZG;beaPlaFJQmOs5AR;cm8MV;chFKHtr9Q3;! ekF68dhM;aOer's sea8UG; RnPr O;cBNFeB5W; OtF;skEJ7;mOsB2A;axEE6cc6ES;anFGToF8J;anOfi grEP0on9IPán karl stefánEJT; Oie 7IWos tsits6AX–boltzmannE80;mol16RzBS7;lOn raskF07; Oe dosDNTy d1;ba7Q7mO;agnoliFN4;kRlth QmO; Oboat wiBWAos,puEMP;awETNdeJeE1Cloc30Lpowered gir3JZt79C;a7S3gaFMX;! tarO;taB;b1Lc1Fd1Eff1Cg1BhlheFIHi19l18mAZ0n0Qp0Pr07si,tPyO; c701c; q8V1eXh lets flaFIMiSuO;e of Qs q8V0tO;e of limitFG4ory O;raFAZ;libDR4uD9Czeus at olympA;cQn,on Pstical O;hypothesisC49iE6OmeAE3significE17;elAPGtoE30wCXS; O-x;r8OSs8QV; Q-space0QSl3ZLn DB1s O;and OofEAL;federal territories of m8MCterritories27Sunion territorie802;aRba0BYcaE0KduFERfarm QincomePof OreE69;maDNJp5M0; tEYB;aAC0sECQ;nthem773th3BY; V-612bUcTdSfiFDXgateQk5WTliEM0ro,sOtBA6z;' top recipe at fun-7W7hip O;enEWAtr0TI;! O;atlB28uF6R;ew DL4ust crusaDYL;h,raDQT;ouFIAucFC5;al8HXc9BMiEU7oVtrekTwarsO;! O;hQprPreOsPtCIL;beFK0siAQZ;equel8WD;oliday4C;! O;b4MTcontinu3g51Cinto6DP;ce1f O;b96dB9SliFLN;hylococcus aureDleAOF; 03a kD6CdTford SisQley O;bEKScOd479h8Z7kubriCGCtEL0wiDVD;ai6up;lav Oław lEDU;ianeEHGpetrEK9;marshmallow8SKprison8SKsupe5OEunE3I; V-Uard Qing O;on the shoulders ofOwaFAV; gi2YH;chQd00QeBXQfor the uniform scheduling of medicines and poi9L7mE5WoPraid leAD7sO;coBtr7R7;il,perating proceduB;arterFGRiDNY;up1R3your-groundE68;by me doraEK2newsO;! raids and arr8ML;kroenEN0lOw5BB;aurIee;ag luftCEAiFAH;nOrwayED0;d,less sB5M;ed,fE1Y; sergeaF4XordshireO;! E3I;e de reiFJEium arcaEBI;ey RkQy O;keOmaDQQ;aF9Hi4KD; oBGIdrFFX;aD1HdOso076;aFCKoFU;-in-the-back 7LJle8VH;albaNdaviF9Tjames's C1Knazair913paO;ncra3LVuUN; Qc Pe composiOh file5V9l671;teFKA;combined graduate levelAD9tua9HE;andrea d83UcaliforEFMeQla bourgCDnormandFIHrichar3I1uPwinfO;ieldB9U;mbrAnF7R;dmundBB6mpire blFIS;ebrenicaC8Hgb,iO; PdeD4KnOracE9F;ag9ivasa ramanuj1;aurob98ElankaDSF;lXuO;aSeaky fromFKHiO;dQrO;e,relO;! BV5;! F4Mward tentaDAI;dQmaFKTreO; OsAEQ;enF0LroFKQwaF9L;!ron supreFK9;! i7ASiH;a1Ee0Oh0Li02l01oSqr,rQss,yO; Oro;kiF93× EBO;atlyEI7eadsBJMing O;and autumn6AZb9COfJ1;ck,il tEWBnUrPtO;i1AIted hyeF5I;tOus; Qing 28TsO; Owe9;betFK9c9equipEU1gaFJXinAMA;club corinthians paulEKSof a1PXutilityBQB;geOtaneous human combusFFK;!bob squarep2WS;e5it in6QP;ce04derYes in disg8TZke XnTrPtzO;!er27U;itPoO; agnE6InolacECE; ObEKZe7JLf6DSuaD0W;aEWMunt26M;aPn7SGoOtC2E;saF4XziFA8; bifiFHQch,l O;coFHDstenDZ4;chunsoDO7jonCGOlFBDmiC4UspiBEN;!-O;gw5hFGGmanOvF42wC6G;! O;in PnoFFPsOu4K6;trike7SY;fiFEZoth0BVteBATv8KT;! OjFFQ;and9FBgBOA;erOi7ZVynx1QZ;e,ical O;cAZUeETHharmoDQ6;a09cYeTnRrPtsO;es,nCU8;mOo ded3;! CDR;cer Oser confidF3D;faEALliFFVrepeatingDKHtD39;ch RdO; Of1rFIF;of Or1NOtaF78;lFFZs9TW;aEUCr1IQs0ZOtransmiss7KK;iStOulati92F;acled E2SrO;alPe,oOum;grFFSs0FE;! d866;al Pfic O;heat c6AEimp8CK;aPboatCHMfoCVEopOr73I;erations execuEYVs;ctivitieOirCHK;s A4T;kOrman's rank 161; nFGGeOing in ton7XZ;aE4Mr of the united states houseO; of represent9LW;ceZghettiYhn1ZGinDCEnQrO;kling C5OseEYOtaO;!cDnAKO;dau UishOning treeEZH; O–2R1;armaFGHcQemF3QfOinq5JLlaEQXnCGAr7TH;lu,ootballO; leaguBD1;ivDQ7oO;loBJ2nquest of the aztec F3L;ba9NPprEDS;! 06Q; QbDXBd repe8ERtiFI4xO;! O;marsB5IraEWVst5EO;battleship y9LUcoUdTeSghost coast toE4ZinvaDUHjFF1launch DJLneed7oRraFHDsO;huttleOw1NY;! cO;hallenger9SOolumb9SN;dA0IpeG;levF1QxploFDK;anF0YebrF;loCCMwCG2; 3Vap14Qb3Tc34d2Xf2Kh2Iil,j2GkalBTQl20m1Un14o12p0Rr0Ps0OtrovimD8NuWvPyO; BT9be1lentBKTou;ereignSietO; P–O;afghCX9j7KC;aOin53RnaDV7uESK;irCUC; Oty;citizenD6Umilitary order of malFI2sD0B;l0Dnd0Cp0Br09s BCJthO; TamEKMePwestO; airE1Qe2LA;astQrnO; Omost point buE56;baptis7TJc6PReuEQ8fDBGmethodis3YAoDC0rhodDQWunF4I; F2IernE1F;aYby sou1PXcWd1PVea1PUgeorgia and the south sandwichEFGhampstead9Z5iEPIkoreaUoss5J3pQsPtyrFGRv8GYwest OyMA;afDQ7eEXG;e8I6ud1;arOo7;k,q vaccinationO; speO;ciM;! EB1n O;d1PKw2;aroEBBhina O;morning32DsFB7;fricaPmeDPXsiaOuATH;!n association for regional1FW;! nCNVn O;aE89bord7K0national deCX4rE5E;av ganguF1QceOdETR; DK1-availabl79X;! joumE8I; of0P2cEWKgaENNs and sileFFZt7HU; OjaART;foFGZmE22;!ie5L;aOe throF2HghF1Mry to botherE8CtingCBQ; ama6AKiro8TR;hOraEOAwithCQ8;iPoO;cl3moB;a Te O;cooEISdRellis-bextFDAhuEDOmQnél9OPokoneENHruE2HschoCtOwiA7K;hOuENK;atEHDomD4L;a353csCB;aD8Wuk0;buF83di BDXlOmELFof hanBZ4petrD8HtaylorCSS;iDLLor5;n-yi pDR1rO;arai pott6G0yavansF41; 0Ba0Adra locEI1equa martin3I1g03iZnXoUs of aF4UyO;! P's spider-manF0Va OlEQ8;cEUUdEBD;comput7G5entertainmenA5Ainteractiv0B9mQpicturesO;! O;aEU8haJmotion pictureEXWrel0GIteB7O;iDK9usicBWM;rPs,ya mO;izuENP;anD0H;et,i natteDJWy O;boENMchiEXHfr2NKliEDQ;a Qc O;a8VUboEVCco9Y4fOmAY5tC9x,yERU;oCSOrontEUW;gD2Dsotom857; Phai F1As Owr7NK;from the big cBG0in the key9T8;dCRLhye-kEM0jRkangQof OstD6K;sonFCQthe O;sERNthEQ1;!-EAX;i-hELWoong-EYC;kshi sinE4Jli be8MTmBQ6r;heung4H9na-eFF4of OyeENE;a crF43the362;aliSeO; Qbody that i used toPrsFC0tO;hing5Bimes i might be intro3LW; knFDG;gBKIlike it hFFYtime inBOC; cDNFa,laFBOs; invi5WWaWdierCHReVfèEXPiRoOsFAB; leveF83monO; O's4GQ;iEDHnorthEX4;dPpsiF5ZtaO;iBryAJQ; s3QG-state OiF90wE0D;bF94dEIY;il moon frCJUnoFCR;nTrO; OciF8WpuEEW;ceCeQfA40hijri772irradiDTQopposEG3pPsOwiFBC;tiCyDGP;anIow0;c3BDnBTI;aDDCge knDW2;ournerOu; tCPR;aOo; 1LEil DAHm 68W;iXtOía vergaG; VbankEWKcore3Q7max EZUwareO; P-defined O;networF03rE11;aRbCBZdePeERFfDQreleaseOtBWGversEL5; life2PK;sign7R1velopmentO;! pEVD;rD6Rs0SS;dEECmCTCpETQroJskEXC;! sE50a O;boutFE7cOhubCH1pernFEOthe1FP;aET7op7AC;der children disB2ZiumPomO; and gomorrF4Py;! P-O;i3HMvapor7EI;bicaB4PcB4OhyO;dB4MpochloO;riH;hi,iPks,otGratO;es,ic FD5;alReOoENE;dade esportiva palmeirFECtO;alC6Dy O;for worldwide interbank financial tele5EGofA7O; SiO;sOte;m,t O;federal republicBIApar4ESreOsCWT;public AW5v5F0;a6YQb3WIcYdWissF2GjusticeVlA5JmediaTnetworkRsO;ciFBMecurity PimulOtra0C0;ation EY8;dea058nuF88;! A2GiO;ngCCU;! O;maEPGuse by7GN;! wDWD;arwiF30emocraO;cy,tic p1ZM;lPonOredi9S2;structF2Wt73Bv3YH;aFCPub;el op880hita dhuliAH6iborO; exter7R4;awkBDDi married the anti-f1ji-sCAE;a04e00iXoPuO;ff F95s;oSwO; OballCWTf6IIpie2T3ruBUPy6IS;cB33l38EpaEJCwhiteO;! O;and the huntEHBwith the red BDJ;kPpO; doggE6My;er,i;cDVSpO;erOping toFCN;! rDEP;akPllO;'sDY0en70K;erOy peH;elFCRs;ke Op5C1;caFBKoEQ2; 04aVeUiRoOs;key Poth cri6K5sh,therO;s CJD;and the banditEEHroDHA;lOthsonianBBO;eOing7AFod2;gaHy;dley buE1XgF56lls like teen sp79D;llRrtOsh mEOOug; Obe9p7GUwD9U;cOfort96E;aFAKiF6Go72BritAI8; Opox0OZtaB5DvE7T;and medium-sized9LOfPint5WNmodularBGMsO;oldERL;ac3orO;m-factor pluggable transA1PwaFAF;entertainmentOtoF9Q;! artBCJ;a08e01iYoQumPy O;and the family66ScoDP9sE56;!dog mil4OD;bodan UtTuRvPwO;diF1PthF13;akAenO;e EKXia;ching towards bOgh;ethlC2J; mCQYhA0E;miloš564praljE8K;cePmO; picAKDe moFAV; o9PJd b578;dgehammTepPnder manO;! stabBKB; QerOing 9Y6less in seaA2N; Os;hF8GshEO9;apnF63depri8OKpDQH;erDP3;de,p BG7shUughterhouse-13GvPyO; the sEXBer;ePic Ooj žižE90s;lEMApa6W8; states and freeEYYryO;! in O;a02WtEKI;er F7C;a06e04iZopESHrillYs,uVyO; Sdance7MLfaClPpe,scOteF8OwestADG;aBSVrATG;aOer gis5LI;b,nDO1r O;a9ZIgrE;caE0PfCGZgOneF2JspC7Kuk;o,roET9;llPnkO;! wDWJ;! and bF9E;!ex; Rff7llshaBnO; O-37WheF79walker1SC;of hQNwhiO;teF1R;jumAS3mask the slump7PA;cCHOet ulCXFletal8YZptOtchESZwFA8;a,iEJK;!ndO;ar4KAerbBRN;ón,ögrenEUR; 38a36be33c2Yd2Re2Ig2Ak28l1Tm12n0Co07phonophorEX7r05sYtXvakarthikey1wa o5SQxOânBY8; S-dRtO;een canBRWhOon3; O-7GD;foEXZge86N;ayE4S;degrees of PflagsOminutes to2NUof cE1Vs9GI;! nCBY;kevinOsepaF6J; b76O;ar,cEQ6h,ti08C;sTtOy6AY;erQine O;chapelOsKQ;! ceiF3D; Ohood75X;aEM3ciF4Drosetta th65s7RPwB47;el kyrkje4NTy spacE7R; gawain and the greenAATaEZ2han siF1EiO;!us3XK;bhQn soEI4uxO;!sie O;and the bans4VDsioDZ6;an fOán mcsweE2S;ahEinn75D;a0Cbad the sailF73c0Adh,e 09gZhalYisterC0kUn fé4o-RtPusDGYéad O;cuDGToARD; OerklaFAF;eustatiDmaart5;indian Psoviet Otibet71CvAZ2;borderD5ZsplF6P;border 3UQw9;ho7ing of O;mv sewF9Kthe O;ms e23Rrms Ot11H;lUGt11G;a EIOes77O; EYUaporeUhF72in'TlePular O;thEvalueA9O; Q-Oton7MB;c22Fnucleotide poly6RpO;age0ERl22Tr8GY;a4NFplEPHsign-2; in the EUX;! O;aOdoCPYnaE3Q;irDU1rmAXA;and coDTHwaEZ3; EUQlair O;broadcaBO4l994; weiBTGiD5Ploa6BUtrD9B; 900ciF3Ed,eon saxe-coburg-5OXmER4o04pXuQónO; bolO;ív9; CALlO;aOtaneous localization and1FB;crRtO;ed anneaF26ionO;! Os ER2;h867v22D;a and si107um;!lPson's O;p7GCru7;eOified chinese3CZy6NF; Ox;liPmOnetwork managementEQEpl1;ail5JPinEY7;near21Uvi8; häyhä,nO; Pe O;asEUUbCZHde beauCB8i7E1misBVweEM5;bB8ZcSfRhEMkDZPle b2monQoPpeDWNrF8OsinE69wO;hitER4ies743ooEY1;akF27f cyETI;jaJ;arnaF48ras2MJ;a7YYoO;lBIHweC;ambarasF2Fden01eYicUk TuES2vO;ana armenulEDIerOio berlus6AH; OfiF0IstoneD5O;linPpiDDNsO;ab7t9urf0;ings p0EQk;roF4OsDO0;a gIonO;! Oe;cOd1J8g9Q8vaD7O;arbiDWC;nt OsA;fiF48gC6PhOnF5NspEL9w0P5;iCouF6O;afELJ;hOkEMIorsky7DN; ETViEZ4s; TiSmRnPourney EO1rid kaEDTurO; rE7Ad; Oal-to-noise8L4;fuETDlaEGZof theBHC;a,oid ETBund 360;l,riEG8;mOsCY3;cx,px;gSmeNnQrra PveO; of erat7TDrt;enEI8leoneD24n6NC;a,na O;guil6QRmiEZ9;e of Pfried O;li6sas10G;bastOjadotvE35lenC8TsarajeDAVtobrCF2york9IE;og6; Sdhant chaturveEVZeDZAharthEEney O;crBSRgoALluQpoPsO;he8PC;iDR7weC;ft,mF4A;cCU7jE6YmeOsr4YUvic9TTwadA34;i0lt2;! semper tyra7X1hQilOkle cellEP2;ian Oy;dAP6mE8I;erheitsdienF4JuanO;! AL9;l kek29KriaO;!n O;cETBh4O3tD7N;mese On h7RT;cET9fighting DG1;baseDSHderivedDSH;a25e1Ci0MmiF7Yo06rWtisIuSweta tiwaF3MyPōO;chū,jo4CVnen4CV;am PlO;a stylF0CoJ;benBFMsinghaCWE; 3A3bOeisDW6ma-goCS1tters43O;-nigguCS0h mangal O;sOzyada sO;aav400;addhaBHPeRiQoPuti O;ha465ramachaAZI;psB3Mud of tur4;mp,neF59ya sE6L;kQwPya ghoO;shM;!sDG5;! O;foreverOt336; aBJ0;ck02e01g00hZko asaD63lKnda rh6H6otVpTrRtPuting fire in a crowded2WFvelA76wO;gBBXmEIVruBO5; g7D2ac2gunO;! sC9Z;'sC1TeDSYtO; sF62est pathBQShaF30ness of brD3F;ee,i0X9pO;ers drug BGEing 5Y7; 'em EOHing O;g5Q4of O;ashli ba4HKdaniel shEMAjacob b6BPmO;arkeis mcgloc4F3ichaelBJJ;ei ohCF5reh aghdashlE9F;akuk1i,un; BD7biCgaC3Q; 63Ming3W0;a0Bb0AddES8geru miya51Gh tDO4i7LDko9GPlpa7GTm08nZon2SSp XrSsh8EVvOzuka ishigaEYK; QaO;! Oani C7Bji;ayyadBN9baF1N;n8AGseERV;aRley Oō i2WV;baF3Mchis6EXh76TjPmaOteBM9;clDUVns2;acE8Hon3; pCBXz;of theOp2FA; ETHseD; TeSiRji QkaDJ0sOto,zo aD85;enOuke5S6;guEY6;k50Smi5ZW;chirō1WIgaEY4ng7MS; on you crazy9APdoF37e;g2J5hye-sF5GmOse3HOtae4SW;egami tensei OinA8N;iv,v;eC6Yla,onO; p7XPeF6D;a iBUTboleENZuEDS; O–sunni9G3;iEUOlabe6XM; 0E's 0D-0Ba09e08f07i05lZmXnWpherd's pF3JrOtEYX; shah suF1Wa daD8AeUiTlock holmesSmanPp64Bry8WQshaEVYyl O;crF3NlEXLsandEOI; P's march toO; theEK4;firefEQFhemD6C;! chapterEBV;danDZLlyn feEO0;e nEH9metyev1GX; yF4Zya8zh5;!aOp B2G;le,rAQN; s406by mus7U5don SlO; sQac,ey Py O;kisA8Imi8Z5;d9W1fab7FQhDLGlo8w8WZ;cD17hoJ;adeE8JcoDI3;kh Ola h5TW;haA43mujibur raENK;ali chow62QfDH2;na eaE2Wr heartBFI; w2SXmDr O;mAZPstEG5;huAXSraO;! and the princesses ofEK5;a6F7out of myEGUtheF0J;professed herself pupil of the wOwas prCVM;iseF0H;a1IbbEQPd16ggy roEXRh13i11k0Wl0Vm0Rn0Dolin 0Cp08quille07rYshi XunTwQyO; One toE0G;haCNYmi8CR;arEX8n O;aEY3dCUTgDM9leDIEmOrhC6Uw95P;eB2FiE80; Oa roDG8;ca7KEdoPeBRBg9A2o8XEthe sheAENwO;alEO5hiH;olE;kEUCtharoF1E;eVia,kSlRmQna buD73on PpOvari waEYH; cDNBe8HDsD63;caEXSgALFho9YRl8EEos4X9sDXBtaHvan eCNN; el-shei7E3ila03G;een spiAAAto co7DT;! taO;le,nkO;! iECM;it,pE4VwaB; o'0V3;ePiro–wilO;k DMH; of Osh16X;tEOUyDVX;monasEY6s2VY;do8e ZgUia tTnPtO;ae,el vansant5hanu bhag5YX;a moa5TCen d8PPon Oyn sossam2;e3B3lePshO;arESF;e,to;wa4; dCFT-chiQhaiOri-F3P;! O;cooperationB4Pm8S7no2tEJ3;! and the legend of the tenO; rF0U;bCDXdaDXFgiD93mOvC86wA5X;acgIOcm839;anQbhaF3IeikAP1iPmiBECsO;heG;s5ta7E4; EP2iEUF;lF47om brune-fCXR;a,ePiOshouE8Runtala 1RL;b al2FXra cDS9;rs,speareO; ARC's O;plaDWCsonA9W; gilgeous-aAGPlene Ot1viEU8;wooEXL; PaF1Pid kOnamDK4;aZRh1;jB5FrukhEWY;es of VowO; OhunDBArF2V;and C6Tin the3JFof PtO;he hedgehEE8;a douQthe O;coloBLKtOv8VE;hEDJoOA;bt;bQgrPpOrEYKwDC8ye7T7;iE2XuECY;ay,e5;lERKroF0B;di mein zarooOn7RE;r aaEOK;a3Vb3Qc2Zdi2Ye2WfECSg2Ti2OjongE7TkhmEZHl2Bm21n1Vo1Rp1Lqu1Gr0Ns0Lt0Gung0Fv01wage00xOycheE57; Vagenary2DUiETOtaEMTualO; Pity Oly transmitted5FS;in aU4of3I3;aRdiQfB73ha7TOi2TLo8PQpenetEYMrePsO;laECAti0TP;prCR7voALG;moD4N;rousMssBUEt7CI;and Qc8F0eAEWiCU4mF07o9WYpPreassignment10WsyE2TtO;oy,r5F9;istoF0SoA2H;gender dis5KUth30Z; tr586;a00ePillO;a E5Xe;nOrus snaEQW; Q-segment5UNthO; 1DP-day advenO;tistCU9;archaA92bSdRlaws of noESPnQof CWCpPsOvAMJwonders of the anciF14y7Y2;amBJBum5QS;illars of wisdEHTo1HY;a9N0etD9A;eadly 8Q1irty wERBwarAZ5;ridOucks CBM;es for seveC8Pges of kön3LV;n nişany1stACJ;-hui cDXGri; CKQh OiE3I;a8J8cEGSd22KgQmProO;g8A6lBBQ;a2YTeC9S;abIre5;ameOsion initiaEJ7;! EYG;aph0Cb08en07fdEHFgYiSj tan8Z9mon on theD52otonin5V1piEOCtraEPCvO;al,er QiceOomAZF;-OnEZX;leve09Woriented CU1;messag1I7name iB1J;alQeOf,ne; Os and parallel circuiEXQ;a,b; OiC4S;aF2AcomEU5experiments DZ8kiESYpO;eripher8H5oF21;eRiO; 0NHo Oño deEYK;agüeEQ2busqueEXJl8I4matt1VJpOramETJ;ablETIérEUM; Qi Py O;br4shoygu;eiseE26korolETTprokofiETTrachmaniD7Us0EM;gOibaE6Lmo9I9;aA7UnabL;a BN9ity prEH2;iaOo-croa8FVs;! On EA1;andOnaDVB; monten1XK;! ofOim of sDDL; tO;heO; eEXH;eQoiaO; Odendron giganteEM3;c9D1sempervi0GF;l,nceO;! d9SW;aration of Secat jagu9hRpQsFtOul6RM;iOuagiEKV;c BE7mius sevACC; 2M1u9B8;ardCP3oG;conc8L1poDOT; QhyF0Eng uiAB9ulO;! O;b3N6nationaAXA;bERRhyE8Kin-gC7Wyea-E1U; çal kapımı,dReQgoku5RQran kaguGsPtiO;enF05me35TneleEZB;e and sen9CDitivity and specifiD8Dor;caAETgalCUP; in the cl9R0ai,er policy fO;rameD7K;aVen,iOoDUV;-TcoPoCXEtic O;lEB2peE74;l2nductorO;! O;device faOiCRU;briE0D;arid5CQpresidentiaANQ;glu1DCnticO; wCH6s;aZeUf-QiPjuBE4kEY5lOma bBOV;afDC7ing sunsEWS;mDQ7naAPH;aQdPeOhaENBimmoDH3;fficaD7YsteDSG;eterminatioBI6riving9IS;ct8WLwareEZ8;ctiQnOuciELK;aOiEL1; g4WC;o51Cve serO;otonin reuptak1WRvicAUV; AZUngEWR;kQnOsmic6S2zuB;eOfeEYP;!n45E;an68HlDoO;! mat41F;aOundCTSwK;! O;gEP8saB1X; you47MkOth0; lBHAing a friend for the end7VF;mentary EJ6ti2;ess8VYondWretRtio64EuO;laCY4rO;e6FJitO;ies and exchange board CQUy haCER; ParyOs of sulphur sDSM;-general5RLbiEXF;headquarD7FinPof 4N6sO;oBI0u4F6;telligen53TvaELJ; P-w6W7ary O;eABJs06N;ame02bZcXfrench WgViUlRo723pPsOteBFCvatican60Ew71W;chleswigDT8i720panP;olOunicDT7;ishC2C;aPiO;by3FOfe;ngE7Ww71Z;m720n6W4talo-ethiopiCES;e7UVreat awakeEPO;emEKLintervention inA0A;h723oOru720;ldDSYmi8n721;aOo724;lkCEMttle of O;e725fallujEP8;n74Gric3FE;astiOeEHS;an Pán O;marroquAHYpiYAyC4J;baENDgiovinEL6ku84Smanisc7X9st1veO;ttI; 0Jb0IfoEZ0h84Yl0Emus he9KCnZrVson UtPwO;isD9Dolf-E2C; ibiE08tleO;! O–tacom5SN;krPsO;eahCILupersoD5O;ak5;hu8J2of st805;chOs; engineOl6V5;! O;maEA5o0Q8; On williamANN;a00bZcXdWfDEBgVhTkSlRmcQpOrEUEstri44KyD5W;aOennERZ;rk0trick fla9F1ul,yt2;d80UvK;e9PIoJ;an1iDW0;aOepburn f2AC;nCKYrrFy3;elaIuEGO;uf0OPycEMS;hipEG8oO;mD31nneryERP;e1iggersA89;b8FSst4; Os and crofETX;oPteamO; sEEC;f soK8;isCUU;ane8N5c0E6lRoPpCDFshOurE1P;anERN;f Ott0;azDWHgalilEPQtDRE;evel1UBtd;a1Penes from a97Bh19i0ZleroderEQ5o04p 03rUuQyO;lEXFthO;e,iaEK3;ba52GdPlpEKLm's OrDB9ttEQE;wiEPC; mE3Geria O;alphaDMMf7JPtoro07Z;aUeenSiQoO;ogeOtEIG; mc8ZQd;bd,ptO; kiddEV9in7GC; OplKwr755;actors guilDN1geEVRprAB5;bb7mO;ble forD5UjETT;f4FP– containment brA7R;l0Ho0Ep0Dr0BtOuEVUvilleBV1;ch08iaAKGland06s E5WtO; SgDWEiOy hoCLC;e Qsh O;cl1foEVXga3IShighlDVDi93UnationalEQWpO;eE3Premi9F4;baATIpi7SM;adZbXcaWdUeaDPJfTgRhoD1FjoBRLmQpPrA18sOweiEQA;peeDSYteCZ4;eEBPilgrEB3;ctominKoBPX;leEFGoOr679;ttliCDR;isDXTolEreBB9;erricDZ5iOo494;siJ;an,wBY5;aOe48AoEQ0;io,kuEWH;aEV4kiN;! O;naDQNyaEUL; O-irish5HH;gaEWPwh1WH;chedCG0pionO;!s EOQ;es2A6olaDDIus;by-dooPtO;! mcnaiLer5ZT;! and guess who?;d's brid7iDC3;-hBTAaCZ9enPkit-l1ZJmBZRpio africanDssor sO;ev5isD4B;ceTtO;ific PologyO;! and celeb6QD;mPnoDCSrO;aE4OeAEU;aCU9eEV5;! fOdireE7Ps CDA;aDIBiction2GK;a02e01iZlYmidt sting painEVPnXoSrödingerRuPwOönbrun3PO;a,erer gustE0C;ko,mann resonaEV9tO;zsta5WC; CMP's13T;lQolOttky32T;! O;of EFFsA2V;astOz6ST;icDEL;apE6Ieider el8C7i3D3;eswig-ho304ieffen C95umBPV;ndler's 94Htt8OKzoO;affect2NKidCWOphrCTMtypCWN;herazaDJIngeCFN;denfreuDJHrnhorst-BFG;bi3da,lYnVpUrPtman O;crC25joCAN;letPy O;mETEstories to tell9FD; Pt O;b5CAjohanss8GW;fBYCnexDspDBHwEK1;a AR4hiEM7;dinaviaPia CMDnO;eETMing electron m7P7;!n9X9;abPlOpi8;i2op;iCCMle vector05D;d3QOentertainment DKZtv;a60b5Vc5Od5Kf5Dg5Bh5Ai4Qj4Pk4Nl40m2Vn1Qo1Op1Lq1Kr0Xs0Pt0Au01vTweetET3xoQyPzaeOïd benrahENOúl ñíDSKṃsāG;-s1;aka kETFyeshCUW;nOp6ZB;s,yO;!-anhaCI3;aSePiOoy;ng private 8LLtribai3VA; Od by the DXD;the9MNyourO; t65X;g2OLnO;nah OtEEN;cEGPwANV;ber motorsEIWcy sanADXdQerk1Y9lPmlaEDKna,roOsageBD5;n,poET3; gBNDi niinistö; oEL4aDIKiO; Oa;araObinladinECI;biaOmEH2;!n-led intervention in yO;em5;an00elliteYhya sa1DUiXoUsumaD9SurQyO;aOendra nath CODr; nadEU9jit8O8;day night QnO;! OalA;awE19devouring his4X7v;fBXAliEJU;mi saDYTrPshi O;k2na2PLtajiEQM; 53Yu iwaEUX;re,sA1K;! O;internet88EteALU;!iO;c p0LOsm;aThQkOuke4ON;atOia reDNT;ch6BSo2;a OiEM9;aA7AbC5PcATGgrEjEMOpietEESspiO;elECX;ki On6X4;and m2KMkoji1RH;aUbanes–oxleyE5HcoidD9NdSgRiQkPlacc,m0VXoOpatta parambA3s,um1vepalli radh2LY;jini nai7QZo brieA4K;!aru vaari paaEUH;!leru neekevva5TMn,t5RG;assoE8Eon of akkEPV;ar uD42inO;e,iaAOK; 01c5h OjeCWPswaDGHwDQ7;aA6YbZchYeEATfDRSgXhWisgEAAjessica 9F4knDM7lUmSpQrPsOwayne cal8T2;haEHHilveDGKnoEKPu3KU;a6ACoem0;aOoCSR;l4riELDuDWY;c3DQiO;chelle geC9Sllic1;aOeD76;ncasAQ2wrenceDBA;arE7GolcoDK3yEMQ;ad2oBG2;alDV8;aarA0We8V3loom raABGrighA0W;al6FMbareiDVMd4JTgilEC1jean uAAPmartiNpaOraG6;scDG8xt2;ib saleDLLuon65A;!pO;hOoEHQ;iBo;irseOri hayaELD; ron1-monica8K9; 0Ga0FcEGXd03ford a4VVg-e-marBZ4ia 8B1j00na9YLo4DBsZtPyaO; malhCSJ;aRerD3Aiago PoO; 9ELriEIXs DWG;calatraDS3de composO;teESR; Ona EL6;cPmO;onica CG1uAH;laOruz de tA6D;rita658usO;!'s61;-serCPDkrEPD;ay Oeev venkEEMu;duEK2g2ASleela bhansaEJQpuran singhO; cYM;aYbox ED2eep9TCiWm1rQsDLIwiEHAy O;brEAPdOhook elementary0P3koufE4Q;enDO1uCIM;a QinPo O;botticD54koDO7raDPY;e bS7ghamER4;bPdOoh,ávila beltrAAI;ayA5Hee,icD19;ernEQEulloBN7; toksvDOSa Oe C7Lnista national liberatioDJQsk;moCQ0peak tramwK;lDZBra D8V; CO1a la6A0;anXdiegoVfSgRjQmPpeDYYquentin stateOsebastiAAB; prDO1;a8SSiguel de a4OO;ose shCKLunipeEGQ;abrieA6Dimig4EN;ernando CRAranciscoO;! O;ba3ZNcB34inEG2;! O;comic-c2inEG0;dreas fBJQtonioO;! spuEQ9; 0A'sAO2a05b6KVe04ha4i zaDQNm01oZsTuO;el QraiOs DRJthirakaEHU;! O;champlDUUjaJ;becAO3eto2O5joOli9ILpepDKQtaylor col23Oum2QDweEOU;hEKIsl4;on,ungO;! O;eBQQgalaxyO;! O;a CUFnotOs CUFtab CUF;e CUE;aOsa,y9HN;! jDEJ;i hanr1B0o DOQy O;gOh4NL;ravaDZ9ueC5B;-sex marri1SXer thahENY;el,jwadiELAntha PrO;a w552iBAFkaENS;bPfDSVmOpoDK8ruth prabhuEL3slD5IwoB41;a51Ao9HI;ec3ODoENP;a04b03c02d01e00feDK5gian2J9hXjaA1ZkinDN3lWmUn7QSpTrRsQtaEJYwOyEOH;aOitw0ortAKT;lt2t3NU;he8K1miE9I;aiEJFiOockwe3Y1;egIlE;eckinpEHIit9YP;aOcqDNEeAOVorrE4A;gEO6nekC6A;aDSXeBVN;aAG9euD3BoOyDEW;usOweC;er,t2;llioAXNsCQ7;arDOV;la7ULooDSR;ankman-fDDLeazlEot3TEradDH5;cDM6l9YE; 09a07but0KEe04i02ly ZmWomón rondCKWtTuSvOzC85;aPia O;divin4VTofficinalF;dor Otore maranzaDYH;a4N5dalí;ki,te; O-n-peDX3onE59water c12L;and sanctuaLbECWlOmBTU;ak2P0;aOonEQC; h6HZn O;bin abdulaz8TAkhEK6oEGXrushdEOF;ann h3TAfD2HgeDO6hPke40Dlin3ZWme5phBDTrOstrutBX3;iDEBoDDN;awCWHemENH;cAATmOsCZNu adetunDRJ; khaBBM–sulaDY5;m witchPsO; taxe6YZfCMV; tr9W1;ar,d8ZSfiCFOh,mO;aDJ2i;kh1m10KvulKN;haOo90Jug1;!l4;al aEB2id jAE9; 06cANMd3I7f al05gō takaDQHlor moon03nOp1tam3OX;a nehwMsbury6S4tO; O-trAP4s rowE03;baYcXgeB2ThelWjoBTMkittsVlucAmaE5WnicholEQ9pSsQthomas christEFBvO;alentineOincent and the grenadEDD;!'s dayBDZ;eOteph5ylvester644;b5Q0iDXZ;atrickPeterOierre and miqu9DW;!sC76;!'sD2I;! and nBK1;eEBEi0;hristoAGXroE67;rthéleCL9siO;l's ABV;! cO;ryBBM;-islam1J5i CLB;baba of shirEDQdharam0JWmadhav 3C3pal707;aGel,itya akademi1BGrawi arab democraticBSP;e sOo m7APrada famílA;talAKT;aSdQePfronO;! burDGJ; st8GBmo2;ar7DOiO;e BVW;ri 8FVvid O;dC17ir1; sat1ako yama5MPdQhgu5P2iOomasocCR8;e Oo ma7GNq CKY;fDRWsiDP3;am73Miq bE;agawEJFcThPkleAZKrO;amento81Ged0YP;a Pet–param17ViO; 9AIn tendulk9;baron cAV7dO;haw1;haromyces cerevisiEB9o and vanzDBQ;aRer6OJhaapAWOine Qle,rO;e,ina O;b1G2c9XHouazaEET;hossenfeC79schmiEHN;!h,n DZ1;b aOho,rEI4;b,u6EA;aJ3bJ2cIYdx,eD8gb9DChCMi9Cj 9Bk9AlcCLQms 97na,o2Gp2Es2Dt2Cu06w04yPza,éOöyksoDKFúben 0KXōn4;sumé,uDZS; coC3ManSeRlan clark-0FJoya kuriCO0uPz5ōyū koOūnosuke akut4JK;bayECH;gyong5HAichi2JWkyu Osuke hDT7;iDMWkCL3;!rsoC6I; O'sENDaEL1;aVbUcooAWTduE74egCBTfitzp8OBgThSleDQIo'0FDpRrQsPtOwCXP;anneBQWeB68;eacDACtCEZ;eAHTos1X6;hillipECVoCPQ;iDLGolBV7urELE;arcCYMigELGosEH7uDM6;ad0inAFS;daEMSrcidiacoDW2;andaOby;!n AD9;airiA19b1Ld1Be1Afus 19g17h16i hac59Cja ignatoDNCkia kuchiE70l13m0Zn0Wp0Qr0MsXtQud PyO; lANAi's royal love in the B52;gullEKSvan nistelroDC2;aTgerShO; Oerford4VQ;bPgoBTZjEM8keaEA1maCZXnegDL5porE9ZwO;est44IiDRG;ader ginsC5DuzCOE; hCDZs CH6; lEG0baDL1;' DULh 0Bkin 8XJsQtO; O–eater b8VN;beCAYshoot224; 07ell01iaQoO; BUE-O;georgiC3Jj6QMukrainiC3J;! DHTn O;aVcCVVemE9CfUgTlaDWJmDOPnaD1GoSprRrPsO;f67Hleep7UUoviet federative 8QL;eOo9TNub7;pDCAvoA6E;eBUMovisional g5FX;ligBQUr90H;roundC0G;a4NJoreign agentD8K;erospa6RBirOlCJNmeCWKrC0D; fCK2craft carrier admiral kuznetsDMA; P'sO; p6UL;bQcroweEH4gE5BhoANDjEG3peCVGs3D5tPwO;estbAUFiDQS; DCBovE;raEJPufaA6C;brKmD2FtD8U;diEFKlimbAQO;al PikOouni ken2W3;! dBZ5;arEHHpO;urE5L;aulQert Oi kaE3R;e3GWf9P4gA7Xmu4KApenryA1KsO;anCZPheldBDF;!'s drag raceO;! O;allAS0uk; P-dmc,away truck 35YesOge–kuttaAXUrDJDwK;!caEBE;bEIXhide fEK5lolaBU9the jeweEL4;!er7CJiQmPpO; sC5RelstiltA4Z;ikBJTy;!ko tak8P;a le7EWeO; of Os of c94J;lEBZthCUM;ollah khom3ERr;by OraEIO;uDXPw8UI;buck B2JseDDPwainCVY; mccl36Qsha little8FA;olRyO; Oard kipEFD;gOruettCMQy2J6;ay,iulD7EoE57;f Rph O;the red-nosedOval2S3; reinO;de0;abIclausiDhOnureyEEQs6U5;eELIöELI;' al kUber TeRiQy O;baBDGl4on r0XZrOwDYD;idE4NoEKW;c2k's cuCOC; goldbergC10lELZnOus hagrEJV; fleBDAs barrichEDQ;duck debug4PDsoCKK;haED4;rs E3TsELQ;s,y6ED;gOk; mAM0;a69b4Cc3Sd3He 3GfecoxE40g36h31isin conaEFUku,l2Um22n1Ko1Ar16s0Ht0Du0Bvan2Q7w09x08yO; 03alPce O;g376pierrDJL; Oe union saint-gillDLJ;aYbankAZRcVdutch61VmaUnRrumbleQsPtOvictorian2UB;hai5C2ombs of the joseonBXP;ecret0TAoB4F;! mCIZ;avyAMXoble consort O;hwabin yELBsuOuibin s9LRwonbin 2A0;!bin D27;il,rE91;aOentral school of speech5N8oat of arm8VR;nadian OribbeanD2W;a7I1mountedBAHnaCZ9;cademy of2MTirCI2lbert DEOustralian O;a7HZnaCZ7;benavidEELcQdemD7FkPlic2STorb64IrOscheD1JthCM2woELT;ayB1RoEEE;ea6i5PH;hu8oC0H;etHie rDVHyD6R; echelon 9MQan Oo2;atCU4b1D8;en,lDMTnd-robin Oting informaE2J;scheduEE3t6IR;at91PhQoscoA28tO;eOwe0UA;n tomato3rdEIC; iGschilJI; 1RFa05co04eVh hashanEBHiTsPtoOwell9UBé;ck,v-on-d2; Oano brCLE;bPgeECClBIIma974p87BuO;lbricEI9;arCOUraEIB;crucC0Ee O;huntington-whitCWKo490perEE1; Qanne baEE9ly8E1marOtta5FDwoEL8;ie de42Ry O;cD80haAA2keA2R;ayling-eCQ5bSkeA2Ql90RmPnOpaC4Lsc4DGweEHT;amajunEL1yDDU;atafD6PcO;gOiv0;ow1;ow4PXyr6;e arbuD08smECN; TceE6WlRmund piDMHnnPrO;io daDE9y;a Oe BX3;arDFUpanBLV;ind Oynn AZP;caECAfCENrBBI;luxemC1SpCCUsCKE;onoa zoE8Yschach D2Py O;cPg90DkO;e5ZHi5OF;ochDDTu5O8;ibECBm Wney VsStO; P-mean-square dOkEGW;evCNY;be0meaO;n 4TV;evelt PtO;er t0WP;faDBUisEDF;faDBTmaG;in E3Xt4XH; 00's gone wDGYaUda ro1NLeTnO;ie Py cO;hie8ox;baBB5coPjames dDIFo'747radDLTsOvan 0FGwoEKA;peE6T;lD0Cr5NF;la hajaD6Nn rubiDKM;ldPn O;faAUMkA1GrafEDVthe acc96L; OinDF4;aPkoD07mcCZYreaganOspeiEI1;! washington E7Q;ll5raúAR3;d9ZVfunEIFg79ChoAJMjereCF8kRlQmaIpPreC1YwO;atCPPeaCKIhiHoodDJL;aCI2erB62;ei5EJi79Z;aEIRla4; the space9JXaUeSiRola gQulusOy sc6DEárDI0;! aO;nd remDugustAE8;arE8B; CZYnaDYN;!lu lu1OYo Oro duDR5sh rang612;+9SGa9SFbBD5;in gros431nO; XcTesqu5TIiQs8VCticO; OiEA3;c7VMmD4O; 5KGaOchM;!n O;laDRYreA1V;e Oing the5DM;fiEEXis a bonus 932lDTQnDWNof the tO;hree kO;ingdoEHJ;abramoBF6bCRIcTe514griffin71NhBPTkCFIleD32nuCF4pRrPsOà cl9LI;afiuD05eA9H;eOiHoaE83;igNpD7K;olanskiOr5IP;! sexual abuse9UW;aQoO;nOp6ES;c7OXquesCR7sCH9;l9KCtholEJH;and SeRf77UlO;er coaE8Uing5D7o,s-royce O;ho2TQlB0DmO;eBTHotor 52P;-playinH8x;barOemmeC4ZorzabMratz3RF;th3; RiO;ngya Pt O;cDZ5shCI4;geCA9peDP5;jeong-eCPAmoDQD;er QueO; OliDK9;o6plC9AwaE7U;aC8UbTcSdReE12fed98Qgoo9DSlloyd-ANMmQpenCPRsOwaCQD;crut2tO;auAR5o6;cgDPGiE9KooB;altrEeaCOA;oD54raigDCD;aEILinDDM;de0m9P; Vdy UeSgers and hammeDGBman fleDAYney Rolfo5K0rOtang jitmuanA9Y;igo OyD6K;dutOsanBBB;erH;alcaEHTdangeCTZki8;nt,rick O;k02DstDEVwiCRR;mcdo6TTpD08ricE6K;of ascleCIEsOta9F1;erEAPteO;ig0wartDBA; 9FWco siffreE5Zh03kOoE49; 00aZeTnr3NLstQy O;aur rani ki prem kaC5HbalbD05fFWiDR7jEAFmOv;arc64HoCFD;ar OeadyCAJ;advanced game9NHgamesOnDTJ;! ADQ;feller StO; P-propelledO; g042;lOrac29P;aDJDeDTH;ceDEQfaD97;bBBNll;and rollOhuDYLmD2Upaper scissoEFP;! hN0; thériB93eOfort BIA;!lle O;hum3waO;leDDQ; 1Cb18ertYinRlox2OHoOyn lAYH;cDP2tO;! 68OicOs exclusDV2; process au4Z3s; PhoOson crusD43;!od 93T;caven4XCde jesús,fox D8SgiRhoQlAG6olE67tPvan persEF0wO;illiamsEARrEEA;hDIVuD70;bb,od;bb,veN; Sa fBR4o O;bQcOdur9YYfir6QIman5WSorDGEr4D8;aOlem6BS;rlE8V;aA1UenigE6R;a0Qb0Pc0Nd0Le0Kf0Ig0Gh0Bi0Aj06k03l01mZpXrVsRtQuC36v1WGwOzemeckF;aOeCQZiEFGolCTE;dlEEUgn0lpo7;he b6KEo1Z4rEL;aQchuDZ9ean3CLhPtOánE99;aJepE1J;e5OKwaDEF;lCXDpo3S7;eOi'cEEKoDDYy1;df5BDed,iE57;atOeIic3P5laE0H;riJtiE97;aOcnD45itchE1Ios3ugaCIM;lo6ppleth3XHrk 5DBudCHBxD7J;ewandoCRDoOudlE1G;ggAuis4U;a382iPraCL8uO;biD5IrCKA;rB3CyoBZK;ames-c483oO;hnOrd1y; Os2;\"mutt\" lDPCb8FC;i 45Il0;aQePoO;hm1oDHZrL;leniDrjav55X;lf2nsOrDZBys;en,s5;rOuillauEG6;av3iffinB96;alconA59orE62rO;iDBLoECX;gE8UngD8Y;aC00e niroE9KuO;ncan mcn7FBrECUva3MO;arOliE5AonrEBWruD6Hu141;ly7ra957;al8H0iUNosch g8ZurNyEDR;lOramaDM2;an auBEGtm1;ert dijkgraDHNie Py O;beE8Ck1IZ;aOcoltD93d6UMfo9EYjarvFkea6la9EYroCR7wiCPF;meC;bryd2corddLdUe7FXfoEDKgThalSkRlQmPpiDHFrOsc69Fvan5MOya8z3S5;eCHPi3HEoy ma8VG;aAL8celheD5H;ieBJZoA41;a375nDGX;foEDFl;aB8FronCQB;el911yrdDCO;dQld Onoke coloDASring twenEAJt9XD;amunOdaC7W;ds5; tOside picnEFY;o per69Sra4;carpathAempress7F3lPolympEFWqueen Ot06P;e2M9maL;usit9XH;-bE3No7X3;bCVGm5P; 2Wa2Vbo9B1c18d0Ze0Uf0Tg0OhCFCk0Nley 0Mm0Kn0Ho0Cp 0Aqui puDBGs02tWvPyadOzE4L; mahrE85h;aTeOi1;rOt; Ps O;cuoCR2of blood67S;pC78thDE6where the moonO; r8O3;lDLWt1KN;a Qchie Oeish deshmu6OHu arDMW;bOvaleN;lackE86oD7N;cA3ZhayworthOmoAKFoGsiD9FwiDI4;! and shawO;shank rede7S;c4VXe Qhi Ping su63JkOotDWMperi5V1; CCQy A7R;kE4EsunDB3;againEBKof the O;footQg94YpB86tO;eenage mutant ninja turDYJoO;mb raCUJ;soAAC;toE43vO;an w21G; Pt gO;am3rrBHC;de janD8YfC0ZgrandeO;! O;do sCCPgorg5PK;a sawaDIDgOko kikDIU; of Oo starrD7Ns of saAGGwED1;fiBh6DB;aOwECZ; ho949c neD3E;keDR2reEBS; mayaCer7X2i lindECRsdDJL;a,el,htPoOveECD;lBGCr moDX6; said frE9H-Oeous among theDPEmoE3G;hand8MOwing poO;liCAUpuCXP; w9kin'sB5Yle; Pmann O;h7ARsDYVze7S4;kugi57TtaO;kOnaDIZ;ahE1K;dUePgeOley scoAKF; h7W8; QrO;s O–waite tarot deJ;ofE8LrD27;likeOthe70W; the 69X;ick Ol0;boA22moECP; 19ardo 18ciCJBe17h03in,kOo ve02E; Qr8BSson45y O;gervaFkambuaDLImaCJAneDGTpoOr21UschrBSC;nEDWweC;aYbXdWfDEUgr5NRhVjDCNkarsdoCDDmUnAEZoA0FpAAMrSsOwakCTT;aQcoE4PprA97tO;aCOTeO;in0v3;lom2;ioEAUoECFubinO;! production E5G;acDCNorBXL;aB66ofE4V;anDLTec50N;eaDV2rEAB;nd m1CXs7YX; 0PaOe9WIie samAMLter magnitudeBAW;rd Ot C3V;a0Lb0Jc0Hd0Ef0Dg0Bh09i08j06k04l03m00nDBHoXpVrSsQwO;a72BiO;dD8NnCKY;ac527chiDV9imD7LpeJtO;alAZBrD5E;aPoOud6XK;dE5RgeEB3;mirE5W;erLrO;oen1K8yE9L;'PsmanO;!'s house ofCPZ;b8TXcalCOWsu7BZ;aOuAY4;dd5nuIrOthDAA;cinDL9x;e8Z2i5AG;aE26iOukli99V;el,lEnd;eOoEA2;nCIHweC; DSMi7A1;aOiD92uCRY;lsey beE9CmASNrrF;eBiOriB5;bs2lliE5L;ey3QKrancis 5AO;awPeOoATMrey02R;an6X8nt;kiNs2;hD9PoOrBO9uDVB;l3ttA3Jy7;aseE59eOlaFoo6raE4Su928;c393lz0njamin7UBym0;nd maOshCGVttenbDOZyoaCZW;ry 8XGuriceBTN;bDVAdad poor dE82pO;aCAEiaDXL; C53gDWY;montalb9TXpeASL;fB0IocasD96;a cerA0nA64;myung0G7sol-D1H; blood group CDIa07e03iYoSyO;dianQs ifaNthmO;! O;and4XQgaEBV; vV1;dOmbDna mitG;eOiDWNoden7ML; C0AsO;! schol48CiaO;!n O;bu45WridgeBLK;anna pRnO;ePoO;c4FQvBP2;!land-palatiA1V;ratcheE2Q;a Qnzy fel8E4toricPumatO;ic7XOoid a091;!alB7U;du8L9p45Jri6KOseeE0W;bdomyolCPYmondreO; stA8F;a52b4Vc4Hd3Ge3Df38g2Ui2NkD06l2Cm24n1Oo 1Mp10quiem0Zs0Ct01uCJ7vQx PyOza 102; 7KSkjavík,nold7EZ;bu89RhaB45ry1tilleDPX;ersVisionTolOue starlE8B;utOv0;!ionO;! of Pary O;armed forces of co5IGgirl uteDWM;digBXSt6QC; cDGYist O;wes6NE;e Oi;dns lookDSReDNNosmCQLpOtranscription polymeraMN;olishAYLroCLW;ailWiUroSurn O;oPto O;castle wolfeDBHhogwBL8the blue l0BL;f the On697;jeDYUobra diDT9;aOvBOA;ctive2F7rDZ9;culocyte product6CFnO;a52Sol;! O;b48Up4PP;cue of jessica m7HFe02iXoWpTtPurrecOveraDGJ;tion 942;aurant Oless legsDU8;gordonPtoO; anotherE96; r5JN;awCVNiratory syPonsiO;bility assignmentDQPve web DPV;ncytial6VVstD2L;nCOZrts world6J9;dOn,stE72;ent evilPualO; nBZO-current9IW;! O;v5ECzeDYM;archSrvO;ationA48eOoirA48; Od ip addre4QB;baOcu7PU;nk C1B; OgaH;and Ostations inGItB1QunCRY;analysis 8EOdDIH;! for4JL;eat p8XDli08r04til02ubliO;cOka srpsDEZ; QanismPs of O;ruD6Dt7MF;! 7DP;of OrC6Z;artsa6JBcSfRgenCS1irelQkProse BYCsingapore4ZWtOve0E5;exE9Vh7X0;arDDJoreR;andC3O;lDMUormoDRC;hinOrimE3S;a O;aOnaCN5;irC5Yrm9X2;e,ian O;cAX3humanoE72;esentatiOiseC2X;onal state OveBTM;trO;ansf0;cation A5Yt;haBS3speedO; wBKJwBKJ;aWdeVeTin–angiotensi7FCminC43nE5Qt-a8HRéO; Pe O;elise goldsbA6Czellw9JR;aPdescart3giB3JmagrO;itH;ngélDM6uberjo4G1; 889eOwableANKé 5SK; g2U8;rE19zvous with 8T1;issanceRtQultO;! O;clD7Bft,iD3Nmé929;e reinsDYAo s44I;! O;aE96hOt517;umaDY4;ain 1AGbr8WDdesivE56eRington E75oPus lBZAy O;hE4Xl6PS;te Ove7H6;desktopDPWprocedure 81S;dQmbO;er the Orance of earth's paE5K;monster7K2tiARJ;y DIP;atiUiO;ance Sc DINgioO;nOus views2NO;! in O;aOcAVYgeCYHind78Hj92LruD50s8O1tA02;ncient DS7;enDIJi4J1;onal47QvO;e Oity6JC;kEpermitBJ0strengOthermE7V;thE7V;chsSdQ2gn of teAKKki,ms,nOwa;a ueE6Hc0L0deer0QOforceQhO;aBUGold mO;esE1C;d7E5ment 7XW;führer-E78tag O;buAKAfiB;enZgWiPression 8WOular Oé-jean DKF;ex84KshE61;a ma7TVmeDRVnaRonPsO; philb4tered trademark D81;al comprehensive econom8PXs of O;e69KfrCMLiA6JtBZU; Pld O;dy0veljE0G;cC6RhaCki8spektE4M;aePie O;buDZImiDZ0wCGV;!t2;cy eOsBOZ;n8GTra;ormQrOs;actiOig723;on,veE77; OaE3D;clB4Gj539; drumANRbDYId PnaBWNseOve88C; witherspoATK's peanut butter cuDI6;biDTChaB9B; T-Sbu8D3dRfQis,mi,neJoOs5CGtuC9Iuced instruction set7RGwaC–black DVO; of heOx;al0;aCoo; 8JKit;light2UFtailed AHY;army0Hb0Cd06e05fo04guard03hYjXlettWmeDT3nose day ac25TpTrSsPthreadOwoDCP; of DWC;caBea,kPpaAHYq4GUtaO;r belgBQWtes and blueDUF;eD3SuC;iDW0ose4B1;anE5Dill and blu3Y2roducO;tioO;n CXV;er6I1;oBM0unglefoBC5;aPerDJQoO;od,t chili peppeA6X;ir,tO;! enterpriseO; lCVM;i1s;rt,x;lCZFnveC8W;aE40eOwaA57;adOer;! O;onDU1reO;deOvo7VU;mpE2E;lRullO;! O;gOp1H7raBLO;mbh;ood 7G9;! fDI1;eYhargeable2JUkXoSreationRtQuO;rOva;rent8JXsi2;i7LYum;alACT;illessC7Tmmende6CFnRrdO; Oer of d1NX;of Op6KH;lodossD04ragnarDX6;quD75struction73D;fC4IiDXF;ivePnt Op tayyip er3ZTsDS8;african origin of modernC1Dd9ZY;d pronuncC9Or operating characte4TJ;aTePuO;ild of0O3s;cca Pl wiO;ls2thout a0MR;bBG0de moBJTfD3YgibnEhaCmiDX5romijn,sO;chaeCBFug9; mce3F0r;ctXdVgan assassination atUlOp0r02G; Q-time Pity Ome,politD15;bD6Tte9XC;o14Vs1R8;betFesBOJmadrid cPnuE03sOtime streamDJGv1UB;ociedE1PteI;astBAFf;temC1M;-only A7ByO; player 729-to-assemble furniDSJ; naDLVive oxygen6TBos; celta de viCTXaPd O;espanyE4Zm00G;! O;c0NYrC2O; leiB6Ymk;'s a4Ia4Gb4Bc3Sd3Ae38f31g2Yh2Vi2Lj2Fk2Cl25m1Rn14p0Zquel 0Yr0Ws0Lt0Eul j77Iv08w imageBN4yPúl O;ca6BBespD6V; Ua and the last BGLleigh scat4SFmQnaudDP2oOtheon4XO; valleOn;caDCY;an,ond O;abBFBbPcOfr8L8s107van barneveE40;h9AGrCXJ;o72VuDYG;aDCCbYcXdVharryUj,kTlSmRofE29r6HSstevensQwO;alD2WiO;lliam9ZAnsCXV;!on;anz3SHeaE38ilDY9;ewFi3VK;r75QurzweDI2;haus5;aOoAQP;lD3Avi3;h8DNomC9T;o0WKradCE0;aDQDeRiO; Ochandran a5NU;shaOtejaDYDvakDHU;nk9stE0Y;!ena taCK6nO; CPN'C9Y-symo6W0na,sbrückBLB; TaSionalRko mladD9Cpac-dunQs33OtO;!leO; and071s2FU;e DEO; D31iDV9;n3SEtouCZP;ki8paJ;cal does not dream of WhRpberryOtafaE0O;! piO;! O;f3MSos;aRidPmiOom2triya swayamsevak sanDY8; ACBka mandC4I; BZXa OunDWB;jE2BtlaDM8;ad pA7Wd eAQU;a dreamiObunny girl senpDSZ;ng AF0;bg,e-earO;th e998;ca6JSw9X2; DNKeRhael war2ESiPtuBunzelO;!'s tangled3BC;d Oer;antige8NBeye movement sle9DXtra62I;! during the occupat91ZlKseDZD;a daggubaCQMbir ka09ch dr8A9dWgVi UkOma ½,somDW6ulph f1OFveerDXR;inRs and insignia of O;natoPthe waffeO;n-E2Y;! armies offi47R;e1EOgO; 7FZs of universitieD8;lakshmibDSImBG4padC7E; CRHasthBQTe3UL; Yall XeWhirAE8i z7BToSy O;b8SXcQgre9GTjD5WmPneC90o8TPq7PCrh04HsOtrD73weDJC;a5XFtBTH;eiDWRoE2P;al5C0ouDQI;lph QmO; O-75Vized controlled1H5neE2M;access memoDUVfoCP9hE21number3M5v6PQwa9W8;ch8U1sBRB; 330e heDUN;cu9UPe802paDZI;al'OcCM4paC1Q;thE04;po6HV; 00aUbTeRiQjDZSmsD3ZonB0FsayPu6zOónAW3;an kadyrD1Yi yous95N; m821's kitc2RE; malD0Fn dj5QQ;n,sO;h bal4ZNsesCT3;oAW8ut1;! rajamDU0d1k0R0nOyaDON; Pa maharsDQTi durvaBZ7ujaO;!n sumDH6;spectO;rosO;coE2R;chD2GdaE21gopal vDVBmohanBS1nath koCSNpickDKRtrCHR;f Tly 7J8phO; Oie3FJ;bPfiennesD4UinD0Glauren29ZmacI8nOriC8Fvaugha7NGwaldo e2XS;ad0or4BE;aksDQJel1J4rO;eaks the iCZRoE00;li8TErang8P7sc3E9;esh jhunjhunB46im,shPuO;l preetDWIt5;aDKDit6D1; Sas5K8eRiQkummarD6JneeshOon r4CLpBWXya 242;! mBRYpO;urDZN;nikan2UWvBP1;ndra7LHsh1L;kDS7raja1S9;!ders of the lost0CMj4lWnQsing O;arOdi2the flag on2BA;izoDNY; SbowRdropQeOfoCO5mDONn 9BXwater harvAK4;r Oy q1Q9;maria rilD43werner fass4Z5; 75Fs keep fallin' on my DY9;! tDY3;m1of4JOpBUH; t4RgE1Q;eemCU9m e0ONul O;dr9Q7gBOOkO;ohDT2;'n'boneDXNdoCe against62OiPnarOtiE26; lodbrDT1ök;ng A6W;ael Re PfO;aella carrà,ey ca6HO;judC7XsO;paC;aguilar guaj80YbenítDUXcPdos anjDTTnadMtrO;ujBTZ;aro quin55PzichDTR; Okw2;dawn c1Q0sremmuDZP;a04e02for01hYiPoO;n,van karadžD6F;aUcal5YJoPsh,um7M9xO;! 4TM;! R-frequency idenQactive Ocarbon daE22h57Visotope thermoelectric4XFs9T1;contamination from the rocky fOd6D3w6VA;lats9K1;tiA1Q;city music CULfC98spBGTtelevision of k419waDQX;n,tionO;! 96C;a Pe shyDYJika O;apHm044;krishnaAQ2mi79B;d CSZ;onOtzkyB4G;! rx vega C3Z;mel falcD9Cr;co2e 04hTiQketOlD2P; AZJeerO; influenced and corrupt organizationsDCPi8;al segrega5XnOsm8GK;g O;gaE17v0U4;ael Xel O;bVcampos-dufRMdUfr5VWgrShuRjDTNleDJNmQrANZsPtic206wOzeA99;aDYYei2B2;enJBheCCF;addDYZcaC48in0;nt0rd-D7U;e5iO;ffitBHP;olezMrBY0;iD45loDGArosnA2V;ha9PYleigh7S0s4A0ta8XV;and Ocon5V9;crim51Lethnicit247iBQE; ne bana di joDOTaRbitQindranathO; taO;goB;! rabbitY5;t,ul;njhanC0AshiOzi; khC0R;l ghBYW; 1N'orianka kilD1F-1Ma1Ibit1HeBCKi1DlipBC6r 1Cs1BuOwC51;a0IbDX0e00iPoOr1tb min9venzhané waC5Q;kD5Kra,t6EX;bi,cWddDOYet BIKnPque sánchez flD1DtO; indiaBPQo;cRi6oa,tO;aPon O;de koJjD2K; bruDSWna rD36;eOy9QC;!aO;ñeG;!kO;bDQ9soE0HtiE08;bec4JCchu5R9eUnSrRstPtOzoB64;iaCHPzalcoatl86I;iOloDPG;onnAM5;c3CLy 20Q;tin Oya;criC2YtarantinoDTK;nOr; Q's gPpiNsO;! of the stone8JMlaDW5rÿcDOI;ambDWDuaDXR;anne1HObDRRdiDS0elizabethRhyoC6Kii,jeongsDZClQmary university 70Sof Ov5YN;sB2Othe O;damnDV6u8PL;atifDQ0etizia BDX; P-class O;a6IBbAJG;ii,the queenBIV;d07il,keDXTl01ntUrQs9ternOvo;aLionO;!s and spatial roCG3;anBIKk,tO;erPi7zO;! cDHL;-l13JbaJ;iSumO;! O;b5NBc8OEdDZWentang94Hfiel51Zg1ZTharmonic o84PlPme8QXof soDIUpBKAsuOtunnDS3;icide andAK1per8Z4;eBYVogic DFE;cDWBle,tative O;eaDO4;commSiO;a,tO;ative5NUy O;ass6NLof O;liDZ1sAY6;! snapBAC;rOtrDR0;aRiPoO;!phBWV;ga fintech sBVlateralO;! security dialBLR;ntiDNYtO;ic Oure amplituCFP;eqBPLfAS9; worl8KP;coCMLd8YK;anlong50Tgo8l4nOyu50P; PgO; dBAKdD6ShDNI;dBAJshi h663;torCMY;nQsBKYtarO;! O;aCPYinvestment99OnaCSK;on,tasD51;fBV0le7OB;faDLB; versus npAIJ-UHaMFbsMEcMDdM8eH9fH8hEYiD5j D4kA2ClBWnBUo75r1Us1Ct17uYyOère lachaiseBQVéter márki-zK–nHF;chaDLJgmy5IOoWrStO;hOorDMZ;agorOia;as,ean tO;hAXYrC0B;amidQenePiHolCCYrhO;ic v4HLus of epBBU;anAPKes;! 1R5; yeD60ngAYZtr ilyich tchaiCAG;'er6ZWb0Me0Kff4g,l0Bmp09nYpWrSsQtPyi,zO;hu,zle v0R5;loBDBrefD9Pty;ha5WUsy O;caDTZgaloBriDYLt8Z1;chasing power paD7Adue QgaDXDiPple O;hA30m1; jagannadh,m,taN;phDQCunCFX;etta maresCN0pO;et on a 1YMy;cVeUiTjabSkQtO; gDXDa O;a5CScaDJD; Oy33K;roJs56K;! nation6E4iB9B;c CGNsh0;!eth rajkBLD;ak jayaPhOtBOD;-drunk9LFed 7O1;! regC5B;edOk4; up kAUQ-storage hydrDE;itzer prizeUmonary eTp RsO;ar,eO; oxim7DK-O;coCE8width CE9;fDAVmO;aga985;deDPRm0HJ;! for O;d8HBfDAR;lla magi madoka ma6LCrto O;riDJLvall1Q7wiC6Y;erDR0gCFXic 9XFliOmDSM;cOsh–subscribe69K; O-key6ORation history of marvel comics crossoverDSR;coCNYdomainSeBSKhRiQkey Pr8YWsector undertaking5N4tOu7A9;ransDL4;c4JEinfraBNU;mage7I0nvestment 6BJvy;e17Tolidays in9IQ;! O;dKin8ZE;eroRolemO;aic PyO;! i sAF1;dB8OkBT8;carpus santal1CBdactD9DsaDDC;a04eudo03ilocyb01o475v eindh1U2yO;!chOlANL;edelic YiVoO;-CNSaTkinDM7logQnCA8pOsFth91L;athyOoC2U;! che4F1;ical Oy;d8GMfDA2hoA8WpBHXtOwaDIN;hriDNSrB1D;ctive05YnCB5;atrOc;iOy;c h5HHst;drATPmCHRpD46roJ;e cub9KZinO;! mushDBS;coCK4ephedD02monas aerug7VPnDH6r4S3sB6O; gDE4lDUP; mBRJa4Ne3Qi1VoQuOzewalski's72G;e l87Gnella sc8WZssiaO;!n2LS; 1Nb1Ic1Gduction 1Ef18g0Zhibi0Yject0Tk6D5l0Sm0Pn0Oof of 0Np0Fs08t01ud 00vPxO;ima centauri65CyBV1;enceXiO;ncePsional O;government of the frenchAZ6irish r3T3; ofTs O;and territoriesA9Vof O;cAJIiQnepMsBA9thO;aiDP7e O;nAU0phDJ8;nd64CtaDGS; barceB19;!-alpes-côte d'azDCE;boCONmaL;a7F7eThom aDNCiDSQoO;-PnOtyDK5zCE3;!maD8Uv69H;germani75Uindo-europeanOsina59B; Os;laD4Dm98E;ctorate of bohemia and mor9ZZin9GAro988stanCAMus;ciAPFeTopagnosAperity theoD4TtOus;aOhDL3i9UH;glQteO;! O;caDL5m03G;and4;!cDHT;aUerties 6PIhetToRrOylene g6CZ;anolDUViO;etary Oo68T;lBU3soCGC;fDUSrtionalOsiDR3; repres7I6;!s and messengers BT2;gDTGne;conceBR6s6A5woDRB;gDKQoDUP;aBethPisO;c8MUed DOCing youngWX;a95VeD;etariDGVog; Pions of populationO; g6V5;g366haPjupyt0mOpDA5ru34Rver6Q2zomboDSL;aBT0e5OJkultG;bakkB21il BGN;tion8AA;eVnatBWRrO;ammRessivO;e OiDLJ;eGhDTCmCMUroJsupranuclear pAQ9webO; ap7KR;able logic 0CCe for international student21Ning O;languageOparadigm;!s used in most popular websCVP;rAsCTY;aBHDessOumoA6M;ionalPor O;laC24moriDOCx;! O;dartsCD8seCG7wrestlingO;! match 9MI;car speed 8IWmCFSof the O;james bond8E3lord of the rings fil08Z;eOol h1LEra5Z2u23;dural7JXssor regiDKE;abilityPiBVTlem O;of AJOsolCAG;! O;dOmass DFBthBCU;ensity DFAisAMF;boRevolution s1LYfootball hQkabaddiD62t83Fwrestling O;illustrOnoDKG;atDPK;all4CG;no,wl;c1Dde and preju3EXm13n07o05pyDFVsYtVvRyaO; bhavaniBXCd2T4nka O;arul m3JOboDSLchopraO;! j5OJ;aOy council 841;cy8D1teO; Oly held CKP;eq8LLmilitar47RnC0S;am,hviraj OiCEM;cOkDJJsukumCTC;ha1EH;cilla TonOtiDFB;! QerO; 5FD's dOs of the ghostDMX;ilemDM3;b5HLpOscB9D;lay8DH;ch1p1XT;n,rO;ity queDI1y of DFN;cPgl3tO;ed circuit6FXf format 1U7ingBFBmaDEU;eQipalO; Oity of sCZN;compone1YHph4DF; 00lyBC5sOtoBB7; in the7C7s O;alice of Xbeatrice5C6cVdeokhAY0eThaya bint67Ojulian4NAleAmQstéphanie of m8N3victoria O;louise 5MQof O;hesse and by89Wsaxe-coburg-saalAXO;arPiXononoCV0ärtha O;louise4SKo90L;garDPOina 05;lisabethOugenDQZ; antarcBVZ;ecilie 02harlotte of O;cXw8TS;baTt8IU;aXeWgeorge of cVhUjoTlouis of RmiPof Owilliam of glouceDJ1;p0JPw8TP;chael of O;keDCS;baOcR;ttCTB;achim 5MAhn 82X;einrich ruzzo reuss of plau5isahito of akis10C;amATM;dward BHDmmanuel de meroCGJugene of savCGK;lbQndrewO;! O;of greece andCOA;ert of sax47YumD5H;'sANOaUePitive 7GZorO;dial nucliCGDsky krDHD; Pira B8Cra división rf8UYtime emmy awardO;! for outstanding comedBV6s;minister of Onumber74Usu6YV;au94ZcaA6EiOj8MMm6SGsw8ZWt8IA;ndAsDGK;lit3EEry Ote;c65GsO;cB83ector of the8M0;eOhard colBMC; PwaterhousecO–earnings754;oo4UN;elasticity ofOiDRV; de9FP;-0Iamble to the constitut6MUc0Fdni7APf0Eg0Dhistor0City zinDSRju3D2m08nuptia07sQtO;orAty OzI;boy0JXcuBgood privaBZWin piCRYlittle liaDQCwAF8y3OJ;byterB7Hc03idenUsOter 7KQ; freedomDROurO;e Oized water9W3;c3V9mO;acCOWeO;asuO;reD25;cy of VtO; Pial O;medal of6FCsyBTJ;of Opro tempore of the united states se9I8;chi7f7ETgeCHUi5TFme8T1ruCODso7EKthe O;european PpOrDQunDEY;eople's rDPhDF1;c60EuD2P;b632d630j9JEthe council 8KS;ott3ARription013;l 522;am,ierO; leagueOship rugDMW;! O;dB1Yrecords and7BX;ic6NDy;ab7IZn9LG;ectures 3XIrontal c92S;ambDANe90LiOog2YX;ousOpiC7Xsion and re7KH; mCJF;coOejacuARWraphaelite bBGA;de5LYlumbi6OH;bhXdWeUgPkash rD79mila jayapMnaOtama aDI6vin t8OF;b mukhDH5v mohanlMyaDJO;e4QYmaQueO;! O;astronomical cD9AcaCGFspD3X; 7WNtiO;cs,sm;torianOy for9JJ; g4AK;a,er–williDARhan mantri kisan samman nidDES;as,u 65R;aBPDc4BdcaDNWe4Ag49i3Zk3Nl2Hm2Cn28o26p1Fr0Rs0AtYuXvWwerOynting2CNznań; PaD9AbaClTMpc,sOwoCWD; bootDFKheClaDGB;brD0XfSiC5NlDG2mCIYoRpCYNrangersQsO;eOu0O1;ri3t;! dino9Y7;f3LGver55Z;aDDKive conCB0;ertyCYVidone-io8G2;ltLnd D68ti6;aTePplD6BsdDNRterO;moBy;mkin v4USntiO;al OomDCV;enOsuper5MD;erCZRlargement 8JM;sQtoO;! O;chD2S;h,siumO;! O;chC7Vh9GNnC7T;e3YKi01tO; Z-Val codeTcoRgrQmodernO; OiDH0;arBIFli6DF;aduate92Desql;deOlonC97;s 6U3;!s in O;ba7D8caA41si7CX;apocalyptDQPcreditsQd7XQgr2QhardBHKimDECpunkProJsOt889;ovietDDAtruc0IW;! revAI1; s3O;ma9L8office passport seva keBOX;tOx;ivOron emission tomDJL;e8FKiDGM;c08firio AKIky5RUn03phB46rD7Vsche00tO; Xable networkWerVia deTland Sman68ZoRraQsmD1SugO;alBJUuese O;colonialCJPemDBAiCY0laCYHman o'CJPpeCWD;it of a lady o5O1yal of james bond iDLF;!fiCXE;ceCZWtrail blazeDNW; rO;osDGI; 3YZ's five force61U; g878;and starb9U8e1WKforwOmoresDKVr6G5wi6;arD3H;! O;cayBEAmOpana75Atayc1;ac1;hAMBmd,ographO;ic filmQyO;! O;in3VFlaws by 2NO;! aDC4;eCMSoPupineO;! DDH; rosCNB; 0C-8DQcorn0BeXpUulO;aOiDFW;r Qtion O;d6CMg6P9of canadaO;! by province andB5E;cCZXmO;obilizationB1TusDPN;eDN7yO;! O;de9A0moAGFplayDP0seDKD;! PyeO;! jDMYs;aXbWclement VfUgregoryCQ7hormisdDP1john TlQpOsilveCYD;aul B8Wius O;ix,xDKZ;eo OinD;i,xO;!iDKW;iCY3paulCENxxiDKV;elix CYOr84O;i,vDKT;enedict xB8Oonifac2DT;gapetOlexander B8N;usCPW;! DOLflD4X;aDOUmC9UpuCOBrOsmoCQAteam epDP4;ap,oJ;d7jaOn lD2J; hegCC7i;di06Sg,tOyo,z1HA; du 6U2e mo6FTiO;ac Ous piAOW;fire5PMgD67; RePodoro 8B7peO;ii,y;gra9EMlo,raniaO;!nCZ4;klement577poCWS; pDOOa0Oe0Li06ka05l02o01t6BIyO;a9PUcZdorBHMeWgVlact9GSmSnRpPsD8MtOuret3X2vinyl chC5M;etrafluoro4APh1DT;hOropy4AP;enDNIia;es3UWo26A;aD66erO;!aO;se chainCNW;on,raARG;st0thyleneO;! O;g65DterephthaAOD;a9E5ystic ovaryD7I;! g,niD8P;utOy 1KD;ant standardsDNAion of the gaO;ng3;!-dotDJ7;ce 00oZshUticO;al Po,s of O;cAB2t9F6;appointments by3SYcorrectDMMe8H7pPsO;ciDL7pB2Status ofC6D;artOhC1Z;ie5W1y; P–O;lithuanian commonwe0Y7sovietCHB;aPhus1QJlanOp6VSzłoDH6;dB04gCW2;irBJRlBJCrB02;! vAM4;in a pDNIranks OunC58;aBEHof98Y; PnDNRsO;!t9;of inacces7YTwe716;ndBH5rO; Ois;bearOc93S;! plO;unD5C;erYi52VémonO;! O;bUdiamond andVevTfirered and leafgCQ5goRheartgold and soulSomega ruby and alphaQplatinD7VrPsOtrading card D79uA7Dx and y,ye6CZ;un and DHLword and 5ZO;ed and2CFuby andO; sapp9JD;!ld and O;si7BZ;ol855;lack andA51rilliant diamond and shiningO; p0CN;! pAM7;nTrot's earlyA9FsO;oning of sergei and yulia sQsonO; dAER's O;eqBDArB1D;krO;ipM;caré88MsettAtO; Ps of theO; comCDI;and c6TDb5ACg45Wof AKI;c1B2rD1T;'sC79tL;ahontDMHoCSK;c financialC7YeumoO;nAthorCYA;aXeTiny26ot of the rue saint-nic25LuPyOácido 87Q;mCY5woDMG;g-in4OYsQtO;arDAPoO;! C84cB6FniD72; and minus s6Y–minus D1M;ase pleas760dge of allegiC0QiPurO;iC88otus ostre81I;ad3stoO;ce6;ce0Kg0Hn0Ast08tYyOza4EI;bTerunknownSing cardRstationOto6;! O;nOportDHPst0QKviDMF;etBSSow;! 88N;!'s battlegrounds 5B8;ac2B4oO;i c6XTyO;! O;m4TUplayD1J;eVform TinumQoOypD;!'s retCQJnic Oon;loDAZs1A7;! OgCKR;eDHTjubileeO;! o7XC;asOgaDLK; aAKH; OlDHX;ar7FYtectoBSG;er,ic O;heAVRono 7WUp187sJJ; b CVFckSd3NNetPkt2ned parentDLJtO; sym05Har04Q; Pary defense coordination 45Ds O;beyond nepB09in a46S;h0ni6oAESsyB6DzCO3; O'sC63;coAY9l5KPu3R5;iaBJMueO; Os 6GX;doD7Vof justiCG1;bo,s1E4;ha7L6masDB5;-1Fa1Cc16d15e0Tg0Ska0Rl0Mn0Bon,p06ra03s01tWvotDGSxQzzaOñaDLJ;! OgateA8K;hBF8margheBZ;aQelB9EiOlr;e Ov;loDC4;bKrO;! aO;nimati6XM; 9PLaCSQcRtsburghOuitary0C;! O;penguiNsO;leep quCQRteeAXO;airnCISh perAPN;a,tO;aYol;cy,nhaPteO;d movie release 9CJs of the caribCXP;! 6X9; torReOpi longstD41; Pr O;a553la9NZperaA48;boCAYo8EL;reN;-upC4RbaCeVgu,kQnipDFQoOteC63y4;cOy big broD68;chCIN; OpantheCVB;diDCEflO;amingDC3oydO;! O;diDCB– OP;aOw6X2;lOpp7; gDD9;aRlarO; Ps of O;crC6e5AY;of s4WS;f,t3;!cARD; 9F8eonholeBLR;ces of aLMdYl B8FrStPzO;oe3UY; mondD2Zer bruegelPro O;d'abaCREscCBW; the eB20; paolo paACRce brosn1oCZMrPs O;co30Pmo8DV;eOot; P-O;auguste renoDFYemerick aubameAKCsimon lapD31;bou4J3c9N4gasD4EkoLlavMomidy9tr2K1; piper of hamCI5moD3D; 013g4;atinny BGZkPo BZWrC6CsaDJStOus;s,ures at an exhibiDF7;etQleOup t8ZF;baCd cO;ucuDDP; feDIIt'sAPM; DAHnoO;! key frequO;en9AN;ho7rame3ZF;a1Oen1Ni0Enom peAKRoZp,rWyO;lTsiO;cPoO;g9YSloCSB;al Oi1;attractiveDI4fOgrC2AlCYOquality ofNRth8NX;itDI3;icia rashDEZlis Oogenetic D77um;diDA6ge9VOl9HWsCRZ;ases from the hitcPeAT8ygiaO;!n cBIG;hhiker's guide to127;!eXnTsphRtoO;electric ANTgraPli5W3n,pDD0sOvoltaiBPX;yn6FN;mm6YVpDCH;aHorO;icDGAus;eQk,oO;graphOn;! 872;me,pe,tiBPPyCCI;be RniO;ciaPx sO;ky harbor D6DuN;!n BE7;bridDBBcD5PdynevDF8fCJUnich7AHto18Iwaller-AJA;! beta85HlPmBY3neas Osh8X8;and ferb,gaD0Q; 0Ia0Eeas0DiVlipToO;loCRKsophO;erQiæ naturalis principia mathe66AyO;! of O;friedrich n59LsASL;!'s4CM; Oa sCL3s exeter29Y;huA8EschofBU3;pOstD5G; WpOs;aDE6e SineO; Os CC0–0QU;aOeBNPleroy-beaulBSQnaBVNpeso3M7re90Nst3M5tr95F;irOrBDH; fBEGlD5A;cPoCIJpO;ozzo di borC6BéBQC;leCS3out2M9;bak2AAg5O4iRle84BmQpulA48rPseymourOthe9BLv AW2; hD9G;iALIoD00;c05Vichael 75HorrisBZ0;iPv of O;frBWEsAVZ; of Oi AVW;frBWCmacCTFsAVX; foC59;delphiaOnth7O0;! O;eOflAP9inD5G;a5YGx6OL;anselBTKbARLcoXdWfAJKhUivEjCJRknDENlSmRnCCOsO;iOpeD4A;lversOmDFU;! archival45I;cCAYickeCKPuBL7;a48Eord and christopher D8KyO;noD8M;ar8OSeO;aCZHllmuCZH;o6A6unD7A;llOuCKJ;en,iCAE;cycli86IibBBHol,ylketon3OB;lVnSrQse-O;lockedOs58S; loCOU;aCXCise3macOoah75Orel08Q;euticalB8Ey;ero8TLtom O;bOst454th3C5;loDH7re9GW;anx ciD80loplASS;c cskaDEUiz0;a4Cc1d45e3Zg3Wjo8VRking3Vl3Smbroke welsh c3Rn2Zo2Qp2Ir1Hs1FtRugeDHEwdiepieQxeDEZyO;oHtoO;n mBC8;! vs t-BJG; s1Aah tikCFSeXite m2SErQtOula0C9;icoatOy harbour–maddox coD64; juD1S; TarD58oO; poroCCXlPnasOpavlovsk-kamcha473;! C4I; eBV2eumO;! O;iB7XjCUT;fiaDG8y1čeD52; 0UrO; ObCTBlooA4E;a6NMb0Pc0Ld0Jf0Gg0Ch0Aii08jCIOkr07l06m02nyCCFoBKHp00sStQustinCF4vPweO;ir,ll0;auBSK;hOoDCG;eCL7iI;aTcSeRiQtPuO;nC41t2OB;ee7ormaB;dd7ng0;lAT7rafin340;h2D9olaDCDulD10;fr1rsO;g0ZYteCMQ;aOhA3BrBI0;n,ul ru54;aQeij0oOu9MO;lOrg1;yneC4Q;cnicDFEnlE;awC63orBynD4G;auDEGopoCBZ; of OiCCB;ruCCDy9K4;i8CEoO;lm,rt2tD8S;aQrO;av3iffiO;n,th;briA15diDG6lCMV;aPinD46onDDVrO;amCIReu5RK;c54Plk;aOinklageCHJruAUQuesCYE;szCBXvCB7;apBFLe3QEhern4oQrPuO;ll5s9V1;aCBQiDEJouD3Z;ok,yoH;as6TUeCY9illPoOutterwCR5;gd1T1y7;ingBG3;bRc9IZdPhegseCXHmaraABCpostle0ZKroDDVsOtownsheDBKw8W3;amprDFFe8PU;a4AOoO;ct0hBJQ;eDC3uO;rNttigi9VQ;emaD6Khop ADFoUP;cetarianD1Ehaw9tO; 83OiB6S; aspera ad aGBc0Jdita3W0e0Hf0Fi0Bl0Am05nell 04petual9DCr03sQtOu9LDvez musharrCGX;hOinCR1;! scorcALI;eXiUonO; of3RZaO; and reception of roman reRlO; OiBFU;cOdigital as4OWf74Slife of clint eaC7Brelationships of paul 1P5;aBomBTM;igN;anOmm2; Os;cD0IguCK4laCNE;pOus;ho6olisO;! 4EJ;ieCLBy 1T5;rB2Gw66F;aRiOuBV2;anOtAP7;!–triO;assic7ME;cCPAfCH1;!in nCDZ; giA49cQneCZBodicDA6pheralPtonO;eCZAitF;! neur9LX;ardBKXl3;ect Oormanc03R;blD2QdaDACnuD8Lworld6W4;grineOstroiCJBzAIU; f2KY;ePivMussion i9JHy O;bysshe sheBD7f5ODjCGD;ntPptO;i2r2;-8N2i7; Ue TiSpPsiO;!co;a pCA9erO; OmiCXSoD3R;pBHNx;jn lijnBQEn the shoDE7;r13Bt26W;guardioDDJ;ny,pleO; U's Os2F6;aSliberation armyQparty PrO;epublic4IO;for freedom andAXWo9RJ;! O;a6A0groundBA2naBR8;cZLrmy of v6D9;for the ethical treatment of3V0power 8W5; 6O2a8d0Ee0Cg07i03nVtOélope cruzD75;aPecostOhouse a1D3iCYGose phosphate pat4EB;!aBX6;gPtoniO;cAB7x;on OrDAH;pa4FQufo vO;ideD59; TsylvaniaSy O;lanQma9IXsO;eOinglAEB;renaC10;caD38e;! 3B3;bad7A7jiOstate nittany lio0IR;llCEK; 7YGciBU5nsular QsO;! enO;larBB4vy;m6CZw9; QuinO;! Os of madag175;bD31randomDBG;lOshuD1O;ei,iyu1;i285lope O;ann D40foDAQwiC9F;leton 9CNulCXQ;orCSP;ic1lPoponnesOvFé;e,iASC;agGi sandD8O; o8DP;aPgy lO;ee,iCFR;sDtr2;-wee SrO; Q-to-410ageO; of Os 6GE;eCSNt829;gyCWAre7LT;heBZ8;agoCLLerastyTiat7WPop7P7rO;i,o O;alQc0RHiOpaBSDrodrigues filC7KsC79; Oi O;of br6ZC;modóv9onCAB;! in ancient7RE;!cTfoAHBky blinBOPnutSrOsants'AICt;l QsonO; O's chi-squared BUB;correlation 4QH;hAUIjD95;! buBD9s;e QhO;! boOes ge9PH;wl,y river9V2;doAS4of KC;cPfO;! split and merCU7; Oa;order of mA5Gworld O;cup4IQdAAJ; CW3i9N3partpiAQY;! 01I;an7Oblo 7Nc7Kd7BelDBFg76hlaviANIi70kistan6Xl6Jm6Fn5No5Kp5Ar39s2Wt1KulZvWwTx ro2ZEyRzO; OuBTD;de la huOveC8M;erDC6; 934-per-7KZo5LYpalOsafe720tm;! mCCF; paCHIan kaly1eł teclCDFnO; sOe596;a3O7taD9O;aniPeO;l dNHment condit5D6; rB4B; Z-peter tC7Sa YeXiQo Py O;d,s8EJ;coelC6KdybaDB1freiBs2FQ; TnO;a porizBH5e O;cOepisCV6mcA93;hOol9KT;alO;amD7N;e3GCmatrCOT;tteS3y perrCCJ;abdB9Fde5hiC08jD94new86YpaCDQr5PZyCYB;a0Vb0Rc0Qd0Pe0Ofe0Ng0Lh0Hi0Gj0Fk0Dl0Cm08n07o06p05r01sYthWvSwOyBIJ;alPeOhitBQU;ll0slE;kCTBterO; ha7XM;arC9AeQoO;lAQ2n hindO;enAS3;rho8DR;eAEXomas aO;nders9WT;cOhaBG9im2o0BNtaAWYun-hyung9A4;hOi5U0;ol3r93I;ePiBBVoOuddD49y1;bC88dD3H;is0uOveB;beN;i74VogCS2;'g9ACf7PP;ewmD42uCT6;cOeBQIichael gl9E7oBE9;cartneyOgaCSX;! O;an963diD2K;e 2AViebeC8GynBY4;aOlD29ru6LK;gaDADye;oseph6UHunger 2S2; oC6QsC1J;ePoOubschmD7T;g1l54V;at2nOym1;reD7Q;aOe9MTiamAZBleD6Qos9reeng1N3u1ZX;sco1A7u7YU;ig,ld0;at2rdős;aCHNepodBKKirB8G;astelBXBéz32W;eQiPrownX7uO;chheD6Fny1;lCT2sso6CDya;rn78Wt05B;degboyega olaw8V3ll5nCEXt1IR; 0Pa0Oh0LrWsy UtO;aCHRiPon oswaAWQy O;duCBIh4YRjAE9mCSIs5AG; Oe bo868;dCD4haA2MlPsO;cialC4BmiCRU;abCJAuCD3;cCWYke584rO;aA4Xo4UW;e2iPoO;clDnymDA4;aCY3cPk s9WDot Ozia reggBUB;aCKZfC0Q;e 05i01k O;baZco450dXe7E4leaD34mVo'bCSMroTsRtro8HDvQwO;aOhiteC7AinC75;r47Oy6;allBNZiC6P;c72Fom54AtOwayA6J;ar,eCCE;bC2DthO;fuD8B;aOcgo2YU;h65CrleCNI;e32EoviCP2ufO;fy;mBZ9tBPF;a Oo mC41;arC48cPde lC47gC8DhOkrenwiAZDneMrout5Q5;aCWAeD0NighsCI0odCRB;l2Q1oA0K;désiPlumumCQGo'Orush5;neM;leD4S; Ofinder role0Q5oCI1s of47é;integral forOof exi7;muBPN;gBG5udBC9;bVcUhiTmRnC75rQsPtO;il9V2oomE;ajC53me9ummeCQ8;ilEoBK5;ah64TcafD0KetheC3ZoO;riD95;ng7tch8RQ;aD09umAJN;enOoo6u679;at9;calYhtXsQtO; m7W3a,eOraD0K;b4u397;age on the lady 31BePov0portOwoD6A;! to pimliCUP;ngerOri6; piCFVs of theO; tO;itO;anD8T;o,uN; si6AT's O;t9ZVw83E;a0Ve0Si0Qk0Al06m03o02rD8Ms00tOvathy thiruvotAFL; of50UhXiQnership forPy of O;fiCXF; p4C7;alScle QtionO; AZ8s ofO; poD15;accel62Cb9CKpASTswarm oO;pt0OJ; dOly orderedCKF;erivaCO4i72;enoOiaBGL;gCX8n;ec,iOlEnCK2;ng,s;dy,xeAQP;aPiO;giano regg4UAnder nagG;!lCTE;er,iamentOop5BP; of Pary O;rBW0syB96;eCNOf4ELiCFPso1O6t7XA; Rer Qinson's PoCNZs and recrO;eaD37;dCOSlCWK;posEsolar proB9F;avenCVUbo-YchXeun-WgUhRjiPmin878sO;eo876hiUo-dD4E;-3IPn-O;jCA5yBER;ae1J8ee-PyO;e-BTJung-sC2J;so2;euOyu871;n-hABT;b4seCY2;an2M8ung-hCZ0;gCRZyBEJ;mB45neeti6W4s OzaD30;ag4HFcommu6hiC3LjC98métCVFsCQQ;id38FntPsBGHto O;d9Z3efficiBENprB8V;al advi5H0i8;b0Ec0Bd05ffin wCIWg03ll01mWnoTpRsO;hu7QViBLTocial3JAyO;mpatheOte;tiAL4;hOsBL7;ilAraD5B;iaPrmalO;! 3JD;! aBU7; vir c6OQahansa yogRiliCY2oO;re,tD3DuntO; O+;aCKNnBDGpiBBF;anD4Q;ax,el O;c7VHlCTRmACYuniverses inCC2; agrawMuayO;!anC0B;iQoxO;! O;iBBAof 1PB;gmPse O;loD36pd;! s4B8;eOoCWX;lsDtO;amD5M;le of the OoD5U;good samarAOIprodigal38T;aTerQpy boyiBT0riCB6ua OyrD;cB1VnO;ew guinD07; PbackO;! wr5DP;mC1OsiA36; Ql OrB65ver somniferCQUya;naD5YsO;ho3tCT3;john's88Or7TW;k C95lO;a fr28Ro O;di canC44gC53mal40Anu5NVso0C9; D2S's laby1OS-a0Ea0Ac07d02e01g00ic ZjXkaj Wnonian avaD3WoptB2WpsycB7LsVtQzerO; Of8S5;i5A5viii 6MB;eGhPi3oOyhoD47;miD5One;eOé2;iCW9rO;! 9IQa;ex8JHpe5DC;kCLYtB53;a vaisshnavOshirB18; t9U4;a9FSroCKT;aCZJol4rD2F;er,tBY3;emicRorO;aOum; O's bC6M;pa47K;! sev1GH;aC6Xho vA9WreaO;s,tiO;c 7PZtF;maOsBKEvia tor1TH;! O;cOpa47D;anMiCYS;fB6Omerican45P; Qela OpAAA;aOcouCJMste1M3;dl2n75F;beesCPPdawb0fe8TZgCAIhuC0FolCZV;! 235aYeViUlSmOpaANU; oCHVa de mQeOyG; ACMr O;lu6I7raiCTR;al5CY;aBV6iativeO; caB;!ndCOE; PoOrBGNstine liber34N;coMUge6l8ELn7ZNzoD56;blue dD52of sett89NrBKI;ce of Od4ntir3WUu;vOw7XA;ersaiC6O;! Oi rupCWD;a584international869naOs85Etehreek-e-insC6A;tABCvy;ge Qm2nO; andOg takh2tings by1JI; g4N0;hPsMYturCQMvanO;zaCO3;o942uD24;aniQeOli7WC;rOt29X;!aC3X; Osm;huayGz965;dSmOre pC2Fua;aOé amiBJP; OavCPSnabhaswamy25E;bOlak5S7shD06vibO;hu6BN;ington BNXy O;and the Pconsi7T7mO;cgC2Y;raCZQ;-m1hPific O;crest tB1AnCDoAYFt8FJw9;elbel's c9S0inCCC;acosta villarAADescob9hBQTlarra8MTneruD1Yp0QMs1AW; singh t3AVi ch madhaaCTI;adic C25vCS4; 9HI'har9S-9Ra9Lb98c8Kd8De88f82g7Yh7Qi7Ojib8S3k7Dl63m5Pn4Zo4Xp3Fr1Ps12t0Ru0Cv05w03xTySzO; the great and powerfB1YarCTQonePymanOzy osbourAGK;diD3Q;! O;depleCZAlCJ5;myak2o r55Ist0;al8W4enM4fQyO;coOmor2toc4;do6nt4;am,ordO;! Os8ZV;english dQhOuniversityAP5;ighO; school8A6;ictioO;naL;en Ol3ME;haD3HwiC6G;erOid; the S-the-RcookCYIfCGHjustificatio52VleC4Zseas QtonPview of gun laws by 813wO;atch seasonalCYOoC8H; windD11;c40IfrBHO;counterCEtop mediaA20;garde5EQr48Z;d,grée-marihaA7MiBVFrWsmane dembé0AZtO; of U-of-place artifaCEFback7VSer TkaCZTlPsO;ide the 52RourAI0;aPine of O;academic disciplCQ4james 7CBt5BK;st,w O;ki8motorcycle8YS;he9KNp8JFs7X8wilCRR;our h4CVsCZUthe9JO; Pan high school hoOoborCUL;st8YO;beloved 7AQf84JgQkind of C96laO;dy of Ost crusade or the rise of a n97N;fátiCUZguadaluCQX;a8iA5G;aXhWiVsu'D1EtO;awaTer,oO; Om8K5;c8KSfQpremiCL6skorzeBXSvon PwarmO;bi0;b4JNh1ZX;arBY2raC25;! sena9GC; maCQ3s r80X;elCTSo;go,ku; x08a05c00ecCPYiZkar YloXmVprEtQwald O;moB2Ysp5YNthe luckyO; r29I;eoPrO;aCAJiCQNogotAIW;aPpO;atCVRorBHP;rthrB8N;anC3BiCMXosisO;! jD00;! aCQW;dirlewaCKNschinBWE; mBMCrF;arOillo5VNoB1R; O-C5F;de la hoC9ShammersteiCI0i9MQmich9IUnunCUTpOw4QR;eCGGiO;aC3Ks2TJ;ka,mO;a1SFu O;dazCQFte46O;! O;el capAK0m735yoseCE0;a15bit12c0Zd0Qe0Ng0Ai01knElZphXson WtO;hoOolan bD1X;doxTgQpedicO; sO;ur7IT;onalOraph2WI; OiCV7;frequency-division multiple1SPmCHQ; j3X1y;be1scott 6RQweC3J;anABCeusO;! and eury2M4;ando OyCP7éaN;an71Rb7TMcitC4PinCP3mCYOnightclub884; and the VchalcCM4entUgQini kaiJVonO; O's 9A0;n7A0piB60;aCT8en,inO; of Pal O;antigenic s4equipment manufactADAfiCWRs4videoB7X;laC9Pthe domesticCBX;! e9CCaBKO;blind BMPwill of the wisCBM;aOo6y;niOsm;c UsSzO;ationOed c74D; Os of the duneCLG;for security and co-operation5OMof O;americanCNZukrainian national90U;ation of islamicOm; co9H6;cPfO;arC34oD0W;h9LDoO;mp7BN;gOiBCMo;aC87onO;! tAY1;er of RinaOov35Kre des arts et des letBLL;l BYYry O;diOjBNAleast s1DHpeC70;fferential AR3;aRcQm9U0nine an5HAop2FYs7IVthe O;bOcompanions of h7IWgaCTLthiBPL;aCIIr7JW;a9E7hC32;ssas6NZ;!hO;estraOidaAYL;!l manoeuvres7JY;! Pal O;me7ROp61I;bCQ7ofCUQ;cSdour-sur-gl63Sl RnO;!gO;e Out1;boA54fAIQis the newAA1;aAAGrehydration 84TsCZL;ene4GEleO;! O;cBIMd2Z9;al,e06h05iUo5OWpoSrah win7XNtiPuO;ntAs dC7B;cal Omus p73B;character rOf6FYi8L2mCYB;ecog278;!rtunityOsitional defiantB0P; coCWL;nion polling QoidPumO;! BIK;! epidemic7EZ;for the next Pon O;scottish767the emmanuel macron p9SU;austrianSdEJgRiQpolishPspEJuO;krainianOnEH; parliamentaryES;sraeliPtEJ;erEMreekO; legislativeEP;anCDFelia lovi78Uiu6NZthal5KY;c,l0Jn09raOth;nt coC5PtO;iOors in c and c03W;nB0UonO; Pal ampli6ETs O;maAX8re93S;b00cYdWeUfi7Q9gTmQnorthw6G1over3E0paperclCBHre8UVse0NOt1ESvPwO;arp speCUJeserübu8rath 5D7;aAKJe6FQ;arPince73KoO;cki3B8;ket C5UtyrALC;lBLAraCH0;agle clCO4nO;during5MEtebB0Z;exteC85own1A2rO;ago2;artwCK4hastiCXFoBBTrossrO;oaCNU;aPluOSoO;denplCTXlo;gCUHrb55L; U-Qai,b4RLcPdNgl,jdk,sOv5CFwCZ1;ea,treetmAY8uCX9;l,v;mid Psource O;iAO8lAXCsoBJL;back Ofront unO;rounded vowI;acCFAera tennis records – men's sin5FFl8QGmCTOsOunBGHwCX9;hortest pathOo79C; firCVD;! O;aOcAKD;stG;na Ort1EG;c4FZo5FH; 0A-board diagnosAV4ce upon a time in 09danseR2eWiVlPomatopoeAtOyx;arBWNoC7G;ine RyO; OfaN;fools and hoOmurders in the4ZD;rs3;advertiCMZchCJXfood or4EPgamOjavascript iBLWm4QRshop8F1video483;bCQUe;!on,si2; R-Pco4dC1TplDrBMJshCYKwO;!orCWS;child7H3pOtime pCTZ;artyAGQunchCTI;america ne2KEchCA6d8I2foot in the 523hundred UoSp81ZrRspring8NBtOw7K6;hOimes 37HruB46;eOousand and on97Y; w9KX;ace7HHi8;f OrdinaryBAE;th9W1us is lB24;and one dalmOyears of solAV6;atCMX;aB6Lh4SCme7YWsha5WKthCUJ;becoming a god in central fPthe O;basis of7S2origin of5LDwaterfBOW;lo4YD; ZaUeRicronQniPoOsk;rCL9s;-m1scient interfering 76W;! iBVO;gOprAQZrtà;aOle;! CF4vCI3;ha4An,rO; PiO; hard7WHon;al-bashCTObraCREepC7YkhayyCUDsO;hHOy;mani padmeOshanti CCO; hCI5;' dirty bastaCV3a0Vd0Le0Hga 0GiYkiluoto nuclear p4NLlWmeB4Aof palCX9ubVx,ympO;iPus O;haB6KmoN;a dukB73cPque O;de marseBS9lyonnaF; O-class ocean lAZ4;gBW7sp9T4weightlO;ifCXE;ad1;ie w035y O;a8A3muCV3; BCBebCWCgaCLHvO;eYiO;a Per O;gi16Ama7MTs8NV;cTdQhPjaBKJmuCF9newton-6PDoC02rodriBL5thirlCS2wilO;de,lB6H;a9PNoAJOuCU2;'a9GIeO; havilCPVjO;onCEY;oOulADP;lm1oBYC; oC9Mr O;cr2M9hQjackson-c92LmacgreeBA4nC8Ap9QNreCRXsPtO;o7CYrCOFwiCTE;acCMLto6yk3;aOuCDI;rCFKzard perry-CCF;kurylBSPmered6Z2of kiCOOtokarczA3H; Pd,g OicCTXksandr usBY1mbe8ZU;karavay92YpenB8K;gunnar solskjær,kirk christiaB97miss rebelsO;! fBZ3; Oest C2Ss4LO;aVbelie9ZWchurch slavBBJeC70k00FnTsStRworldO;! O;moOvC70;nkE;eATUown 4YRr0BP;chool runes569tyle and new style dCJB;e7X5orseO;! 7X9;cquaintBANge; caB0Wf OnWLv v3VB;ii3VAsc3C0; Xa9CIex,inawa Wja,lahomaRonomiQrPsana OtoberC79;grigor1UQlynC5V;!a;yaCEI;! O;cityPsO;oone9V4tate cowboysBYJ;! O;b93YtBH6;isCOVpC32;bo288cBAEtaec7VM;l pOngo bo7H4r1;a89Cl71V; TioPmO;!'sBGF;! O-BZ3;rCQHstate O;buckeyes footballOunBDE;! statistical leaB7X;my 967seO;-hCUV;aneBS0c Qgy and the cockroaCTZhO;am,uz tO;urCLE;niCUN; mice andCTHfO; RicOlineBH6;eOial language7XK; Or6WDwBGA;christmasCOUof strategicBGRs7PL;the 56V;cdQdipusO;! O;c5PKrCUM;! betterO; lifeCUI;a nob8BDdSeRiQnoklassAXOoPsonne édo3EEysseO;us,y;ac0;n,sBJQ; to0N1d feCIBon leiceste34CsCCItte annCQMya CBE; Os67K;fuCHOta5J3;a6GKc05eXimum tenuifl2ZOtQulus O;qCPEriftO;! s;aSoO;ber QpO;ath trav7RQusO;'s C1Dsy;re8D4sBTE;l,ne raCUWvO;e,i1D8;anOlCUY; T's QiOus;aOc36P;! fAHR;el7X9tO;hOwelCJO;ir25T;lAWBsunB2T;am3R4itanSuO;lt,pO;ationOy wall CQL; 306al O;safety andFQth7YZ; C2Qie;d-ii piCJ2eXi-wan kenoAOWjectUlas52Loe,sO; AH3cured by18UeOidian9AJ;rvPssive–compulsive O;dAUZpAUW;aOer56B;bleCEJnce of christma41XtionalO; c665;-oriented6JEivP–relationalO; m0Z7;e-c,iCKI;rOsiCNK;gruppenfüOlinBBHth 9YQ;hr0;hu,kQsW4tOuCBVxaBIR;!h kOmeMsAME;ee3VZ;! AI7land O;aOr3DE;thleAQD;mikuBUKzo6;e CHC;'golo kan31Y-IEaDIbDBcD6damukong suh,e8Af84gi5A5h7Yi3Vjan marykutCN9kvd,le ch9H9m3Uo0Sp0Ps0Ot0NuWvUw5PZxSyOábr8LMée,íðhög2F4ürburgC67āBQF;aQck de vCKTkAT4lPmOpd1IZquist–shannon sampling 9T0stagmDx;eria 9YTph;a B0Pon;a 1KPn15rlath2ZS;ivm,t cO;hC5JruiserweighC5G;idiaOm94L;! nve4LH; mBL9alphan lamsCQAbAcle05d03j02ll4HWmXnWrSsrat fateh RtOuk;elCSWm99RriOty puttyBJL;a,tionO;!al y9QV;al4FB;-34RembergPsO;ery rhyCT4ultan nazarbayCLC;! O;coBGRexec7BDlaCK2tr7YN;!avAN9cha738o espírito sCAT;berQerOpy;a8G8ical OoC23;anB7HcBYT; OsB9C;of9QJsiC8DthABE;ab3;eOg6ZQity53N; b837;ar OicCQAo5O;and radiation A5YfUgAF7magneticTpowerPr8WQsBWCwO;aCEPe66OiBPT;! O;byC1Iin PpO;hase-oAMVlaCCF;frB77geBIKiC0Rt7IC; re7FQ;aBK4isCELuCEL;fs,r,sc;oCA7y4KO;-Or;cOhQH;ompleteCRF; 2Ma2Fb25cturnal 24d23e21fARVh,i20kAlan 1Zm1Xn1Po1Nr01sZtTun,vOwrBKNël co8S6;aReQgorod9VDiOosibirARMy56E; sCO9chokO; aBFS;lCRXmber-BVT;! scotAk djokCSRrtFvC47; SeQreOt8JH; dame fighting irishBUX-dame de parisO;! CNF;padWPs fromO; u0T2;another teenCPSgo50Xsafe for AYY;feraBQWql,tO;a4Y5radBSO;a17bCOGd15epinephBVNfolk14ilAR9m0Ro0Qse0OtRwO;ayALXegian OiCGG;air shu7IJforestOlaC0K; cCDN;e de santander0RDhO; 02amBUYeSrop grumm1umbRwestO; OerA9L;pOt8S4;asALY;erCKWrA;astUrn O;aB0JcReQhemi8CFirelandOmarianaBPSp9YHtA7Y;! O;as6ZY;uC0FxpoAAV;al3ZYyO;prD; Pern uniO;tCEMvB9F;iBZMmegal1D6;a01by nZcarolina2P9dYeaXgermanWhollywood shoo2B6koreaUmac83pTrhine-SsePv5R1weXyO;orks8NV;aPntinO;el AFW;! CCQ;westphBJE;acific right 9LYo7;! BL4n dO–south korea71I;ef955; AGVicC1M;stC79;akoCRM;orO;thCNW;fricaPmericaO;!n free trad0H;!n4F7; Om5;colonization of northAZRm83L;dom sihano9XYvA4E; m6PMaO; she3KZlWnO; PdyOi,s;! landCNP;bScoRfinke0V0jos7OYlQmaPos3L6rOvincent pea7;eedDo6IE;il0;e9lo7N5;nquest5O6waN;at3orla9NU; Pized difference O;veget4S8watCJV;d9INpeBX2;! AF2; 6UMic Os1IRv545;c13HmBAV; OgaCIIh8GG;ephr2fateCE3waldstäA9G;mOr inayat ALYtropCQX;!i ra7KS; non biyoCMH-Pa32Hdenominational387oAO8profit9L2steroidal anti-inflammatoryOtriniA5Lverbal 2QL; dr9NI;alignedAFJbScoRdisclosurQeuclideanPfungible1U1governmental9L0hodgkin lymphoCIMnewtonian81Hpenetrative7KNresident indian and person of indianO; o955; ge668;e 40J;mmissioned7SKoperationAFF;inary geBITreaking7KJ;aOic; dumezRRd,lizo leah tuBOX;g5HQnC1R;da,se p0CTtamiCBI;l Other'4GM;cl5GCfielC3Ug75S;em72Sirbek abdusattorBOK;a43BeA4I;el SiA74leQuO; 71WhiOnaga shi1J9o uem6RV;ko o0KYro watsuC8G; Osse obliC82;eightfold56IgCPV;memorial prize in economicCC6pO;eace8ZErizeO;! in O;li5CRphysiO;cs,ology or60Q;hOm choAVM; P'sO; aCLL;baum8Y8cPgOhaBOIjuCDTreCN2schBKJta7MIwy7;a9V5laCOJ;entOyrD;inBB8;country for oldCNMgame no CP8hiding00Vjacket requirCKRlonger h5QRmanOsudden moCEQtime to dCN6; 53E's O;laCLKsBO6;ap,daC44; no kuCF2a3Lbiru cataclyCFYc22e1Zg1Kh1JihC3Lk14l10m0Zn0Eo0Dp0Ar07sYtPue,vin pauCA3zhnO;y novgorCPG;hVi aayC04rO;am,ic ToO;gOus oBCV;enOlyc5N0;! O;c87EdO;ioBCR;acCMLoBCQ;i4ya m0QC;ek8XNour square9CVsanO;! O;gTleBQRnaA2LpatSqashqCDNrRsOvq7ULx-tAMEz-c9;e4AOiPkylineOtaBFC;! gR;lvA;b7UHogCD9;hfiBHHrCO7;t-r;maOvanaBI1;lOtrelvCL1; purBH4a sithar209;pOsey huss7;le,on O;bs BVWtv;biC9Gh;a 05e01iHjYoy aquinXtO;endoPh O;ge5K6;! O;dsSeQswitchOv5K6;! O;liHonCBO;nOshBW1;tertain72N;! BFUi;o CC2;aOutBAI;! O;asB8Bga8FUscAYGthA6P; P-dart fiCFStOvB4R;een eighty-AE4y-five thes3;inch nOnAUYy5JO;aiCM4;ariCM7dobrCGAhOsi6D9tuBV2;aOoCN2;g5r69P;itz-56IrCO5;and 9UCeOsson schmilBKK;! O;cOn33Kr0NG;roB7M;i00kWoO; kovač,cado avocaBUPlPnO;! f-mAQT;aOe hannah821; Ri Oj coster-waldC20y yezhBMC;buPdOgogCN3rimsky-korsQD;urBMA;kh90Dlg05P;jokBS8tesCN9vuč2HI;hil1EXiOo7V6; Oe de j7IR;bCN5cBOUdel7BJfBA3gOh8SYreCIVsi6ZP;i5WLl8R6ra40A; lauCLNta O;khrush2J7mazep4;iB71on falcC2S;eVg0htO; QbPcoBwiO;ng,sh;irBB0ooCDD;at the3BAc9PSiQof the lPtO;eeC5D;iv4W1ong kn8GS;n the1SS;lQrO;!iaO;! BGZnAV1; Pla O;laBGKs89L;faAIKgBQ6haOlaBGJmanBKVng,slBCC;veCL4w1BL;cy naCEMlsPr reincO;ar7KV; boCADen ratCJT;arC7Scolò 15e14h0Wk0AoO;! 08dem07lSmachean et74GniC95sAtinO;amide Oe;adenine diOmonoO;nucleoO;tiBAG;aYeRleOás maduCB3; 6HBtteO; shO;er619; Otte 8OE;aSbRholofc814kidBOHmPri7STsO;cherC57u5LQ;aOui0VO;in3lliotAWF;rownAAHy0;niBK5ri 77Q; Pe ceauș2KEs Ous copern8W7;anelBRFcageCFXfl9VYpé169sarkoC30winding refn;coug16FpOst7TVwaBBR;ageCDJelCEY;o scarA7Pus;hülkBMNr1GX; UelQi Py O;ba8IKhilton rothsc660;cly6minC23;!baJodeonO–metal hydride0ZI;! O;aOkids' choic6SUmoBOG;ll-star bra9R5nimation A93;antosBB2b00cWdVfTgaC4Bh8KXj4GJkSlaRmPnolHoffeB8TsO;ab1e5BLiriBKHza95S;aOo1DV;rkAVWs2;chEnd;am5roCyrgiCDR;ol3roCIQuO;eB8Yry;i9WXraBNJ;aOleB9C;nn2s1WBveO;! and the bad seeO;dsBF0;osOrimb7;a,trC11;elle07ZijBD9khCL3olO;as Oe9XW;brSf60IgonRhQiBHYlPrOspADT;al9P1;ati25Lyndh5AM;am91NouA8E;zalCEF;aCKWi2CJ;haCD2neAJ1;machiavAXTpaga410; Qc4gara2STll Pmh O;a9LMmc7ZU;fBJ9h9R2;dOjBX8lo8;acBI3;kSl O;heritage6VPoPstadiuOwintY8;m ANR;n tC4XutdoorO; gBK8s at lake t7OI;! general B70;lOt;! O;on QplayPregular 7HVsO;couting com8WLunday ti8SX;of8HP;cAPSfBM8;-BR2a4Cb4Ac47d 45e40fer0J9g3Wh3Ui3Jko3Il3Cm38neh 37o2Up2Sr2Qs2Nt2Au1Yv1Pw06xQym9zO;ha,ukO;o kamaBRQ;on,tOus moC9R; OcC0H;dutchXgeViRlQspPunO;ited kingdomW;anR;evel ch7MZibyan presidentiW;ndQrPtO;alP;ishR;ianQ;neration air dom6AErO;man fedP; genO;erO;alO; elBCY; W-ageB5Lark liberty C85castle upon ty6eB7Wfoundland and laAUTgrUhaCKMli6sStO; Qon's O;cr7Z9lawOmeCJ6; of universal graviB0Qs of8II;gingA6GscamaBCX; corpOmBW6naCFXpeBGK;!oCFV;anC2FoO;unC93;a0Vb0Scal0Rde0Pe0LfrAYPg0Kh0Ij0Eki0Bline7BOm0Ane1B5orleans08s04t02w01yRzealandO;! O;film4SMnational O;cA0FfBDYrugby union BE0;earUorkO; O-7MQ;cityPd6BWgiWWisl9B4jeCFSkn9H2metOpoCGSrNMs8V5unB1Uyanke3;rA3Ps;! O;c3KVdraft r0Ffc,police Os9FZ;commissiB76de0JC;! hon2Q's O;dKeveOre5WHsC03;! iAZ3;aveB4Yorld vBUI;eAHDhOr9GT;ougCGR;inceBSToPpO;a4ri8;uthO; w7K7;! O;pelBUPsa89G;e7KMo2;dsOnNM; on thO;e bC1F;aQerseyOourney toCG4;! O;deviCHC;ck s6NXpan pro-wBB1;a599oO;l4DUrizoN;i9M1uinea3LB;diCEVnglandO;! O;patrOsCAW;ioCEX;al,lC6QmO;ocraticCCP;edAQB;alAXKrunswickO;! neurological syndrome of unknownO; c7H8;dministrativeOge,msterdCFW; c6UP;aCH0eSiO;lle Os;chBG6lO;ancelotOongbottBY4; g5NR; 7AUrO; PlandOmiCEV; r17U;been ki8LLgonna give you C0Dmind the buzzc5O1rarely sometimes alB9Xsay never1QF;châtIrUschwansteTtrO;al RiBQ5oO;nOphBVJ;! O;boB8Zst9;cBRBmilk3AX;in B7K;alRoO;-linguistic67UdB09loBRImaC7Xn,plastiAPYs9SMtO;iBQPrO;ansmiAJG; nAP4iBI0; YbXcC3ZeaCGRflixWherlandsUscTworkO; O-attached830;address transAYZf8CYinterface QsPtO;imeBZAopoBRA;o8Q3wC6L;coN5;aC6DoACB;! O;a0R3in8T2naBBX;! aBW1;eaNoC8V;iOne82F;ncoCHX;aGpr50Ksun dorCA8tO;lé,orO; makhBPFiaC72;iC2Okonda paarvC6Inst A8Fo,vO;a,ou9W3;alOhilBVRoAWNtu6;! s8SXi BQB; 8WD-YcVdymium magnCE4ge6lRm,nOplatoC6X;! genesisO; eO;vangeAWR;iPoO;giC87;be792thicO;! 800;lassicPoO;nservaAWC;a3Q4iC82;assyr4KEbabylon4KEnO;a508oCDO;ch8EF;aPesisO;! gBGE; cOtoB4Y;onneC3Y;lRson Oumbo nucCC;dilipkA4SmPpOroc6AJ;elC9Ri9DK;andeCGR; tiger Oie bC1Vy furtaBNZ;frC8X;paG;ghbXlO; Ol blom62S;aUciciereBDUdTgSha783pRsQtPwa565youngO;! discography and8JT;enA9L;edaBLWim2;atrick55ReaCH3;aiman8M9orsuC5A;egrasse7BAia8WXruckBZ6;rmBDHs33;ouCEU;a Oemiah per1NK;k11DshC8Z;aProO;!ni;sonic teenage warCCHtiveO; binomi0IC-index metam8BG;d for speedQlPm karolOnYFraj65Kt;i BXX;am kotXAima azeB8N;! O;heC25pay9QBrivaCEG;beOkBULlXZ;atCA3;ar zad8I9roO;m8A7nomADFp6T2sFtizingO; fasciAMU;r0GPuO;chadnezz8RBla award 2TS;l Rnder4B8politan Qr-O;deathOearthPVfield 2GF; experiCDR;no77Tp7IX;cas76EmPpurvis and robert5IMsO;ch2te0X6;aupKcdonBSU;aa division iPt dOuti gatBK2;iC83reCCZ;! O;football Omen's basketball4D8;bowl sub9YRchBS2;a RcO;! sPsn,uniO;versM;p9BTundaCX;all-staPfiA8UgBRJm1Hon O;abc,es4TDtBZI;r BZY;a4Ib4Hca airfoBSOd4Cemyeong7J6ftali2PMg48hua9S3i47j46ked 44l42m3Wn3Ao34p31r2Ps2Kt09u07v01wazZxalite–maoist insu06ZyWzO;aUca8TWgûl,iOneen con3L7riya nazBTN; Osm;concentrationRgeB5Jhuman experim62EpC9AsOufC7F;aPymO;boAZ5;luH; c795;nin boniaC3GreBXK;aPe2iOpyidC4I;b buke7rah testi8Q0; 7FRntAEI; shOuddin sidd7OW;arABR;aQeOier–stokes5AOjot singh sid9MPy14R;enOl,r; a6FE;joPl OrB;battle of guadalc4ZBmi6ravi2LH;! 7D2;ghtyBPYru,sC98tiO;cal 7OUlD; 1Wa1Ke 1Hh14i00oYsuXtō,uOyCC2;fian821rO;alOiC5N; Oi9HX;born kSdC4Ve2RUgCF1lQnuC98rPsO;atel767ciCCJelB7H;e6PNuAQM;aOoga99W;ngu5UFw;il9RR;ki hanC0Wme sōseBXE;! O;bombing8IXjoint military symboBNUphonetic AAD;onQvO;e Oi2ZB;american4N5hawaiC3S; 0NalO; PisO;m,t congressC88;a0Ib0Hco0Fde0Cf06geographCF2h05i01lXpTrPsOuniversity of si619wrestling5AD;cience fictionAR1ecurity 7QFtock exchange A5P;alBZ9eO;gister of historicOsistance front o2A5; plO;ac3;arOeople'sBPB;kPtyO; of 7QP;! s9D9;ampoon's Peague O;nBPXsBQ3;christmasOeuropeanOvaBE2; vaBE1;dQnstituteO; of standards and 62Es ofO; heOT;entifica9HN;ealth9CZocAX4;asc7FCilm rSlBJDootball O;coAY1leagueO;! mO;ost valuable playerO; a8DO;egiA57;bt7G6mocratic O;al59OpO;arty7BR;aliOllegiate athletic7F8uncil of proviCCV;tionC7E;a7F4olsheARR;nthemBA2ssembly oO;f so0U9;ofC2Gs9WC;aOuram godCC3;lie XnO; Qiel O;cOhaw123;halobC3O;aRbQch5fOla6;iOorB50;e9VMlASJ;edford 46RitumazaCD0;ké,sO;pi7CN;emOkeACA;manuI;bu2M7dPne824rO;oAHJueCC8;i9O9oB0P;lTrajan chandrasekBCLsO;cha Rha Oia de219;bed88Sgregson wa52Ahens0C7lPo3V2rO;iAIKothB3Z;eggeC1Eiu bord0D5y7X7;kamp1RDmcel4H2;iOya neidC5Z;a Re O;aB04co7do17VgoCBMho9ZTimbruAF6mOportmC6Fsc2OPtr1woCD3zC71;a72UeO;rcBO0;dy0teBYB;king V5loC24wO;olBUZ;! C4Ua,carRd9NNeePh equilibriBXMim pedrC8OpeCAVsOtassja ki79Y;er al-attiyC2Xim nicholas tal9TH;m hOruddin 1F;amC80;! cu8K2;cVdwu9enSgis fakhC8Rit36Im0rRuOwhM;hiBUEtoO;! uzuO;maBV5;aBSQow-body4HN; Pdra modiO;! sB2U;chandra dCCIgUC;issPoO;l4XXs;a5IJisO;m,t2VV;aC7XhtB14l3oleonOrox5st0;! Oic AV4;bon2RSdBOJhiCiiBLJ; tōBG6kRmiOya131; Oe513;caBD8ekpe8R1foner gy05CmcduffC9Wo86Vs9ZXwO;atC7Yu;i OoYD;uraBG3yosBG5;a vis6TJcXdSga parbBXRi8EXjingRny m18LoPtOyang technologica88F;es,u8JY;mGYrOte9M6;oboA8P;! m8ZT; BRWaOo4DS; Qmuri O;balakOharikOkalyan rC8U;rishBXA;de9VR;iYy O;abu58OcarWdUgrace romanTjuv0X9kRmPpeloC2Ire9TUsOtrBF3waB14;h68Vin9HBpu5WJ;arc5TJcOe9JA;ke2;an19OerrAYZuO;lp; s2PL;oOrAYCuss933;lm1w;eCtAKN; grALG; SaRco,eOibAkoong m4ma m5ZMor;c5P3s O;and titles of jesus A90of O;godL3j75El0P9the days of the weB8H;haBTKsH;joo9IAyoon-AXJ;anC9FoOtreO;xo6;aOl58V;nd af5RFt4KU;ib razB7Hwa nimC7A;roA5Wve bayes classi5QN; hammadi82XaPinaCBKoOpBRJ;rno-karabakh185ya; OlaC78saBTN;chait25WmunchA1L;ezhda tolokonAGRhim zahaBYLiOji jBX6ya sulAR9;a Qne PrOya hussa4;shC14;cA0UniT8;boulaBTJcomăneBA6;haan rizw1y keïCBB;cp;grC7SspAIU; BH8aOMbs AWOcO7dO6eJ9f J8gJ4i9Zj9Yls nextBQ1m9Xn9Vo4Jp4IqC1Yr4Es49t46u12v 11x BQAySáRädchen a64Kåne7SPéPónica 2HWöOýa,āori 3BTỹ lai8YM;bi95tley crüe;lanie lauAYWnOtF;age à troFièreAXT;laB7Jrio jardI; 09a07c02e00kZles YntGoWrVsRthO;!bPic Ori movie 3R8;humanoiBZIqC57;usAIE;oBpaC9Uql,tO;!erOiBIU;io,y O;fiBUSm5;na lAY4rh;cardiOpA;al infarcC61tF;gAQIke7S2;elti wXJonC24;lodysplasticBTWrs–briggs typO;e ind3K6;eQoOroft7WC;bacterium tuberOle pruiC1D;culAPQ;liBUZnaeO;!an6P7;nOsthenia grBDF;ime6INm9na buBMP;b08c05d04f01girlfriend is an a3D7he00isekai C9TlWmiBZYnUoSroommate is a gumiB56sRtQwO;eek with marilB8Iife and O;kiBYW;eenage 8KOhree 69M;enpai is annoAE6o-called C9Pweet 2OO;ctopusOwn private i5DG; teaBAO;ame is Oeighbor to92W;ea9CM;eft 9TSiPove from thO;e 5ML;fe is ANFttle O;m49Gold7KNpoB4Y;art will go 2ro0CK;aOirst girlfriend is a gM;irOvorit3H3; laBSN;arling clem83Zinner with a5GNress-up5I6;hemical rPousin vO;inB4R;omAO1;eOig fat greek5T8;autiful dark twisted3GKst friend's5T7;barag9FBdoña p9KGwilhelm gust8IJ;a2Pc2Od2Ng2Ih2Cjahi15Ak2Al1Mm1Fn19on,r0AsUtPv-luv,watallOzzle b8ZI;i C5E;aC4Ziny on the bRsuhiroQual O;assuredA6IfuC5GinO;fBKStelligi98P; w135;ounC2W;c02e01h00iUkTlimQsItOée d881;aOel6X7;fa kemal atatüC54rd6QX;! Os;b9XWconquest of pOsaliA9MwC7P;ersA;et,ox,rBUP;cOkve586; Qal O;fiC4Ji8E5notOt88D;aC4Ke;ch9LDg4DMiA05of the harry pott0CEtOvAUL;h9RBo be murdered C41;isBWGoku L8roBO5;s,um of modern09W;at,le6R9;a0LdRmanA7YphyQray Oungakkai4AV;bOroth92Y;art1WM; b9C5'sATG;erPoch O;faB04m51T; oPs of O;abigail williams and liberty geAV9chris kyle and chad littlAJSwilliam and patricia wyche7J1;f On the orient8JQ;a09b08cassie jo stoddaC8Pd06elizabeth olt5g04jYkiWlaci peBN2mVrUsRtQxxxtPyO;etunde3OTingyingJA;entaci2;ori stNWravis4J9upac9UB;aPeOherri rasmu8TQkylar n8NFtephen la440ylvia li7GJ;leBTSth 9UI;muel paC20rah eve92L;uth pelB9Yyan poB5Y;eredith kerB92uriel mBQO;m 4JXtty gO;enoveC6O;amesRerry michaeQoPunO; l4ko furuC8L;hn le6Z8rd132;l 8TT; buO;lg0;abriel0G4eorgeO; f667;ee dee bOora b505;lancC5P;ianca de85Robbie jo stinBAB;hmaud arPnO;a kriégIni de348;beL;d i3EImaBPE;awar faruqAEEgShwa b9O0iOmun d0NU;chOshk6V1;! O;aOm8VJ– the edge 3T8;g3HZirBXI; BKPo j84O;bQmPtaz O;mahM;ers pa9R4y;aiPleO; rA6XcoB;! O;city BAOsaB4A;atBP6e,led 8UMshi4JOtiO; theft9FX-05c02l00meZnWplQtiePvO;ariate 092ers2VI;r 9ZC;ayer SeOication2BC; Q-cOx0;amera sO;etBOX;citizenBJDmye2TUsAMN;online battl6WRv01;ationalAPQomial O;d8Z5logisticO; reA08;dAt0;ayer percepOingualBT7;tr2;ast PulO;tu6YF;a3N0dN;armed6XHcore prBRfactor9AHlevelBIFpO;aradigm2T7lO;ayerO;! vO;ideo BQZ;ba8den7FQesh O;amADWbansM;ammadOteşem yüzyıl; O's w806;aliPiOnasiruddin al-alADTof ghC3Axii of g4WEzia-ul-h9HH;bn musa al-khwarizBYMnBVEqbM;! O;jinnBWPof52A;gRhal O;ar9YJempO;eOiB;roC4I;iNsy bo4LT;!dy waAE7;h ado about n0TOus;mmarOy thBUZ; gadda1QB;s ocePvO;! video music AVT;anBY0; Q-dBXZcPnOx;!bc; cru6F5iC4Q;achille lauBUFdhoBVTeO;stADC; Qap,bOna94Qs d7XQunal t9RZ; 9IZeastO;! 3ME;huBMXinbet2JT;emba 9ATho tutu van furBO0; 4Ya4Xb4Rc4Pd4Be49ff gide2g48h3Vi3Pja3Ok3Nl3Cm37n1Qo1Hr0Ps0Gt06uVvTzO;aRillaPzO;arC5F;! O;f1O3th448; bint3TSmb6SL;eAXHiOsar evloBXX;eV5ng9JN;lin r0X4nOssa sissoBE6;i9UNtO; QainObatte8QO;! Os of97A;dASCm5P8t7H8we9P7;aSeRfuB6HhoC5OkQmaunganAC6oly2QRrPsinBU7taOvesuviDwhi2X2;kaBU1m8EV;aiBK5uBYO;ai3C1ilimanjaBTS;lbrDtBQVveAR3;r9FUthBX7;hViRoPtOörh3BH; the hoBBTe-and-bailey995;maBXCrOwn;c7NJoC4W;on OvaC0X;capBS2picture O;association filmOcontentOproduct582; r793;!erOm1ra; tereBMQ'sAHMb89O; d77DaBQDcoSes QfC1Hhe day1in–nagaBOUque–cathedral 7ULsC0Zt Oul;common words05NdOeligible b0SLlivableC01;angerou4SN;brings plenBYPinOma805; iBTTgrC1Y;viBPSwO;! O;kOm5T2theater h227;reBM8;a0Cd0Be09fydd08gZiXmonBH7occo9YRphWrisVsA7WtO;aPen h626gage lo1imer sO;ac2TW;lOr and peATW; PiO;ty AM2;kombatOs97R;! x; chestn9YTon2X2sE;eDi6;arty the pat9MLnga oleO;ifeG;anPeOoBML;lloNnthau 9HP; PaOe pola71M; 2DOtic6DW;britRfQle fKsOwaBBH;pOta9QH;eBR1urBMC;airc5O2reeB66;taAZJ; claC09;cambe andOna bacc8GX; wiC2O;echai haBI5rBZH;liBXUrji dPviaO;!n9VT;esBSR;d7miNnRrO;ePsO;! 2XY;'sAOS–penros2J;! QbyA27dance dA5Xlite bunnyr0T4riseA07sO; of Ohi6t7JU;jup4BJsa85Y;blood4BRchae335embracing5O6ga73Nj15GknC0WlandingOr1B4z6QU;! conspiracy theoBV4;a0Yct2d0We0Sgo0Mi0Jk0Ho0Broe d0As04tPuOzaA0L;ment A2QriBMD; b1NT-saint-A7Sana01eUgomery cliA8Fhly girls' nozaki2K0pellierTrRserrBPGy O;hall8NOpythonO;! and the holy gA14's O;flying circDlife of bBMS;ealOéal–trudeau BRE;! canadAH2;! hB70; Ql vontavious QEnPrrEsOvAPA;quAE4sori7FK;egBRU;caOki9N3mar8X3;rloOs94L;! O;meC28tree 87W;! C0R-8N0; pubFanBL4o2tO;aAMEerO; P's B61a delic497s OvBNV;aEAunAL4;gBKXhunterOmusuC37;! 8R8;octB6S; no aBVAamine oxidasScRlithQsPtO;hSQonic BO2reC33;odium glutaBIUpaced foBMU;! 9CA;lonal anti1KIyH;e 4OZ;!ey O;b1Y0ki8selfie copyright 0NF;ca Osm,tor liBMV;bellB25galAPGlewiAZ5poA40raOs948;mBH3y8BK;db,lOoC1B; QiaOoC0Bs;!n O;laBBCp5B2sc9YL;emBO4invasionO; of4QGs 28N;ro,tary6LOyO; ObaC;h4PWlaun3J3suO;ppBNC;aOelezAJO;y nightB58; RcoQrchOsBWD;! b1Z8i46PyO;! 2HW;! g9IG;lisaOs9QE;! s7C3;baBJYentRina mustehs1mie deaAO0oO; PlaBYHrdica charantAtaO;rō;challenge139hirBQX; of inertA-generating BN6um;aWchat doBUIdVecular b9NAièBlRnQoOten salt864ybdenBN1;ch,tovO; cocktaBF4–ribbentrop 3M4;iya3JSupiravBYE;usAR2yO; O'4PO;ephraBG0go97Qpa8T1qB91ringAZXsOw3VWyAIL;ha6T4iC0A;avAoB0W;r Oss3;concentBXKmaC0X;a pC2BsAQP;ng9UIve9M8;rOssa8M6;aOé4E3; QiO;!ne damoO;drBX1;kBFVmactag1U4st9RG;aQenjo-daBQ0iPs scale of mineral hO;ardC0M;nder0JAt raiBN2;mPnOwk B81; 1SIl18K;ed TmO;ad Red O;bin Ovi of morocBNQzeeshan ayy8Y9;rashi2Z9sO;a8NOulayATK;azharudd4hasna4reza p4BT;aOfarrah aidBYVh3GDmorBS4s115;l-f9V1tC1S;a4KFwBPZ; 7Y7bO;us s3MX; sC0NafinBE7bDeTok,uO;lOs ope4SJ;aOo 8HJ;r Oti2;a41RmultiplicativO;e invBLO;l–view–Um,rnPst mO;ouBZIussorgsAZT; Pa,iO;sm,ty;ar9T0display of the confederate battle 8KSfPliberalism 6G9monetar8OIpOstandard 31Rt1L6;a3LAortfolio 9JD;aASFlat earth bel0Z7;co5VviewmAL8;edB0Qhi,kOtezuma BWW;ingjKuBS4;b7ALile Po AQDutu sese seB9AyO;!-AAK;aAW7de8ZPoQp44RsPtO;elep8K1;oALKuit gu3M6;per74K;!b,i;dao zu sBO8gi8LWha5ZH;emoOist1ZT;nC11sy6;orpg,r8Z7; 1P5ölnBWR;a8Lc4Qd45e44g3Yh3XjB38k2Xl24m21n1Ap8Y1r0Ys0AtTui,xRyPzO;k9WUorBXErah9OH;aOuki sawas2N6;moto m1MKvi;aACAedO; ma71D-iBRX; l9YXanBQ0chZe,hXoUragyna spec467sOt romnEzi gaynBWY;ki,uO; RbishiO;! O;ecWGgBHYlancerOmo8E3out044pajeBOI;! e7IN;muSN;chondriOsFt3C7;al Oon;dBLHeBPB;raBM7un chakrabO;orBTO; Qell O;and weA9XtrubO;isAYO;gOhedBIMmcc6MA;l1SYrACB;an0Ac09e08ha899kel spil8M2o07sRtO;boBP9er OletAMJress of the rob3;carto2nOrogers'BZU;egaBFX; YiRouriPy O;elBQTperegrBKE;! O;compromiBY3rBUJ; py7ng TonRssO;auAWFippiO;! O;b5QUrBUFst9SF; maOary 6Z5;j8ODngM;square4VBwhite womNC;e06Afisher's murder4SLkobayashi's dragon RmQpoA0IsOuBJYwBY1;a4B4carlet and the duB11lO;oa6;aB91oneyp82V;maBWS;!gyAUIphA6J; enAN-en-scè6;ege6X3ha ba6P5;dLth65G;!aTcea Seille enBQYiam Rko cro0OKnalini9J2rorPtaO;zaAGM;'s edgeOless5EH;! cat74Z;hA4Vmargoly3riAO4;eliaAMOmo5Q0; RcQge,mBAWnda O;cosg8ARhOkeBS4lamBHHotBGQriA4Fw5OM;aBZ5o7O0;aBVPle o5YP;fu7YNnaBV5soO;rviB6E; 0Ca sund4AIced2K0d0Be06g05iZkYnSoPsOt 3O5;k,trel 6DE;an Pr OtaBF6xidBBQ;arQHleague bQEs8WF;c67FerupBUD;al muraBPIePie O;drBTKmBX3ripe6OL;apolisQsotaO;! O;north83Dtimber5YFvikBVFwiBX8;!–saint paulBM9;!a1I9owski6SV; SclBAPmOstryBVT;aQum O;spanning BMJviable310wO;age6DO;liBOZx;displayBM9h9VD; d9A1-na w5ma gyabu sherB4Kw;craftQrO;alOva mcgonMZ;! oBB7;! O;dungeoNse9WY; m9XLanB63fulBX4geAV9y kaBQS;aung hlai8mO;inBV3;e,i O;k9LYndiOroBQS;weBNQ;a0Cdred giBW1e09f,gram54Witary04k03lSoQton PwaukeeO;! bACO;ber7f4PYke6IF; Orad dodAT4š foAKM;giBPJventimiA03yiannBAX;aWeRiOvina de1y sh8RQ; vanPcent simm92Be bOm2Ron dollar BIVpeALH;obby8ANraBGU;ilBOL;nPrOt; columN's cA4T;ar9CXniO;aBVNum O;actB8Lprize probleBVW; jovo8TJrd O;fillBQSmi55D; tBRMy9UP;! O;budget6ZShistory of Po8S7rankO;!s3I7;italyOthe united statesO; du1JS;s Ova marB1Yy cyrusAQM;davOjuASTm4GHteBOG;isAQK; kunA71nOp zaveBTE;! Oa vayntr8U1kovitch cy9ND;ca7J9kunOmalpensaBL3;deG;a0KeVhail Pi matsu7I7lós hoA8SoO;!y1;bQgorba1SUkalPpopkAVPtO;al,ukhacheA99;aA35in4;aPulgO;akAVL;kun4ryA32; Pl arteBXEy O;dKwK;and the me6OCb8Pc08d07ehrmant06fa05g04h02j6TDk01l00mYni82JoWpUro7L9sStQvPwO;ebBMSink40B;arshaASMogIr7NJ;he headless 3O3oOuB3Sys2;dd,ml4;hOi5FG;an7YNi2HP;aAZ9enBW0oO;mpAIFr5Q6;'hOl6OVst9X3;eaBM3;arBP6cOuA0AyeBUO;caA86ge9s25E;eiBQBin6RSoBLT;ri76Z;oOuckabBOB;lm9HLwe;le6NJunBFH;iBT7r892;ra9QK;!e8JKitB1C;aOoA2R;usE; PelO; pers6JOa shiffr4;häkkin5zibaOE;aly csikszentmihal9D0oB2B;hty Ros,raQuel O;car5CKdOf84herr7DYr3AXsapochnARCángel félix g0DL;e cervaAJ5íaz-c6JZ;i6tion2MX;morphin power rOwBSW;anBOR;ruko-BLNsha 9EO;-06a05dleZf9E4ge uBiYlXnight Uori fr6BUriBE4sStowNZwO;ayPesteO;rnB4N; O-4ED;a8IWgAUX;omOuAIG;er 2PQm9;cowbAJGin PoB8QrBV6sO;oNun;pABIthe switchg08L;if60K;!an; P-earth46Em8YNsO;brB8Dex;ag3c41PeQkOnaBVJsc9B6;inO;gdom 4R8;aBSAngB67;s,zAK1;aOcentury mo1OS;tlantic acBF4utumn8N9;a3Hh0Ok0FroO; 6HJ-0Dc0Bm0An09or3FPp07sPwaveO;! SH;coBJJeAGVoftO;! O;a00bi8cADVeYflightAD7oWpUredmond ca2GGsSt40XvisPwOxBGO;indows5LJoBT0;io,ual O;cOstA65;++;pider solit8H3ql9TUtOur9S1;oBuBMU;aiBESowerOro282; 9PRpAVE;f2F0nenoHutO;loBLT;dBD5xcO;el,hange9TN;cOzuB;ad1X2cO;eBTTouBEK;enFho6rO;oc4S2; 5IZesA;etB;ephaBFFoO;ntroBLR;!starABQ; Uey Oy do8KX;c80Jd8VMhGWmProOspil95R;onEurAW7;a55RouseO;! O;clubhBSWfunhBSWmixed-upO; a3AA;fOja8ITmaBSHroBMWsc15Tta6RC;le0R4olE;a0DeViO;el huiAY7ganPo O;ka64G;! O–ohio stateAWW;staOwolverin9A8;diBF1te O;spartaOunAC1;nsAWU;lOál2SJ; 03angelo02e 01inZle Oson–morley510;bXdockeLfWg1Q8ke7VYmUoTpSrRtPvi9O7wu,yeBA8zaO;un0;h9UErO;achtAUBiola m5XV;oAR4y1;f5J6h8H2;baBM7d3QQ;cOo7I6y1HT;coBT7nAHB;ai74Borb3;achelBQ6r0IY;! gO;uiAHE;baB8SlBLJmorASX;! antonioBJE;de montaTOfouc8L6goA0Qhouellebecq,nEperAQX;elOil CF; Ra Ois–menten ki4F5;coPstraBJ8wO;at9ZE;el,nl4;a1Jb1Dc16d12eiBMJf0Yg0Th0Ri0Pj0Nk0Ml0Jm0Dn0Co0Ap04r01sUurBR7vRwPyO;ead2oBPG;al547eatherBE6hiteAMDiO;n9H5ttBBR;aOiJ;n geOrt1;rw5;arnTchuSe89ChQoPp1F1tO;iBHIr7V6uhlbaBC1;rrYP;a6KBeO;en,llen;maATYr;osBBP;apaBH0ed3X5i9MPoO;c5MEok0senO;!baBDV;aQePh1IYiBK6oO;ll1rt9KZ;nn,terson6Hña;ge,l4rO;enAFHkO;iBLDs;'Oh0liBRBw5;d5A1k1HJ;esB1PouBOWyqviBPL;aRcQoO;orOriBME;coJe;elhaAV8i4XNke1;ds5liBRYnOsi;do,n;aPeOindsay-hoAG3;arnBNVwF;nd2udrBA9;am5eBK2oBQL;aOet0oBPW;ckson4JEi8AN; 7AHmperioBJ9n8BFrO;on8BEv4;aOutchBPY;neAU0;aRiaccQoO;lOve;dASLenieA30;hiAZS;mb5DGnd1HL;aQlPrO;anzeBQM;a5DSyBAI;radKssbendBAC;eQoOukA1Y;rOuglasAV4;m1n; luAGYll;ai5GXeGhSi41ClaRoPrO;awAI0ic6ZT;nOrl58A;nB61s12A;rke1NTyt2;aOe,iklF;b2nAM6;aSiRloomBAIoQuO;bOrL;lé;lt2nd;e96Js78G;ll,y;lANSnO;ga9NNsaG;!h p49V; SmiOsma 99Y;! O;dolp4F0hPinternational aOm9B6viBQR;irBFCut904;eBD3urrican97E;and the white A6Hfa81ZgoB9GkOmal9X5saGtAWMwasikowsAWD;h7KXirs8CY; QmO; Ot;grand403resortsA8D;caBPBm7OL;doB6Jg76Z; 4Ia4Bc48d3Ue3Pg3Eh39i38ko8l2Im28n1Sphistoph8SIr0Zs0RtWxicQyer PzO;cMuzBHBzo-sop9N8;laAND;anQoO;! O;cityBERnaAKW; P–O;americ96I;ar9MBc1L8drugAKRre79Gw5XG; gaBQJa08eor06form4h00life7UBoZrPtO;a sandiford-arA8Ze frede6OO;e,ic VoO; T-goldwyn-mB6DidRnQpoliO;s,tan O;frA5Cmuseum ofRWpoBLGs6AX;id9K6oBQQ;! Ov78V;d1LRfuBCPp5U4;boom4ex80HmaniBQA;pOsy9S7;refB6W;clopra3GCny9LY;aRoOuselBGQylpheni1LL;dOtrexaH; OiBH4oAZLs of computing square3UG;acBQSm1of loAPR;do6m58OnOqua7LL;e,ol; 6SViHoO;id,loAZH;! 13P-6EUboliWcVdaBQSlRmPphOr,st27Ytr2vBAXwin opas-iamkajoBFT;or,y9B5;a9PIorphosO;es,is; PcoBlOo3NH;icaAJGurAZB;ch9HWgearO;! solid hd 31X;og0XIr57U;cB9Psm;caBDBhuggBG8oUsOtiBENut özB31;engeSiO;aPerO; ob230;hOn2J8;! in2LH;r rBBC;a9YOl6ZSpotKPthelioBI6zoBQD;c00edith ZgeYiXkWlTmaBNCoving7BIrQseOv g86Wyl streepARQ;nne Oy88T;p5T7twiBFP;ell6DHiO;ck gOFtt O;p621w8SF;e PinO;! o9DG;hag4V7ob5KO;aAOIle BDP;t99Qwether531; 2HDrs and acquisA8Y;ba5MWgrEha4EOsa509;a02ePia,kBOYuryO; p7A0sAJE;desOnaL; X-O;amgUbenzO;! O;aRcQeRgPiAJXsO;-c3VFlQpriAMCtaAFO;-c3VEleP;-c3VDlaO;-c3VC;! O;gt,o6;amg high performance pOma6F1;owertr9MK;doMSntiA8Ntor9A9; 01aXdWe1HQg'erViUnonAPYsRtO;al OhBODzBI9;d9PWheO;alB71;aA61h809truaOur suljATH;lOti2; c774;ng9VD; z02H;elian inheritA3Coza BC1;! QcO;e ii 875hem O;beg4mendel schneeB3B;mAWLsuvaBKS;aOgoing their own9LTin black BKP;t 9VG;ber stateTeSmingenBCGoPphis O;depKgrizz5NR;i8RGriO;alA10es of Ost;muA27the alhambG;!nto AONti9VG; 6HEs of O;naB66the O;commonwealOu2GD;thAZJ; 09a03bourne01chizedALFiTlon collie and the infinite s98SoRroseQtPunAVSvinO; c603s;ing2ZNy1TW; pB7L;dOra h854xicBL6;raBGHy thor9ZH;lBNRnda Ussa O;bSethRfu6YYgQjoan BH3lA9VmPo'neB13rOsue48YvillaseñBKS;auBCJi8ROox5E7;athAJNc603;e80NilB6K;erB5W;arA8IenoiBKS;di9MUfrench4BE;! O;cricket 5YThaCs7SQ;nPtO;on4;ch1P6esAiOoBG4;a3Z0e On;c,gr9XQham9TKlyn7VFma6DOp778sO;afASQcroAHTyk3;bQfPgiO;bs89Medroyc;err0;!la3FRrooksAPI;ji restoBJ8n ka0KIosFster eBGJ;diRmePranO; karimi nasseBJNga9O2;d Ot 5CS;iv,t0LYvAWR; h0MD; WaRhaOumi ogaBNVyn176;laAVAn O;mOt63;ark7c5RD; m1ciBH0de85AfauB8RloRmiPn Otr2uploBJ7;bN1e2ISfAOKga8DNis misBC1mull5OYrapinAA1thee stalA2E; Ond;tensAUM;d2p08W;foBD3jBFNrOt8H6w9W5;o0TZyBGM;k 2E3nakshi sundareshw9rRsAI9t O;joe8X1me at our2S6the O;f8CSpOrobin5MQspar85V;arBIK;kB8Put;al of h3LXd7e00gar e8QKiOuB4L;aWcReval warm2DTna,tOum-density fibreb7RI;aPerranean O;c574diBJAsBGZ;tion7IP;aBIIinO;al plQeO;! atO; m8JD;anBIJ; Oco9MIfiBtAJT;markt,playO;er5X4;a,llín2OQs;anum wB7Rca,haOklenburg-vorpommeBC2;! anime and0RYgOn871t8LE;odz8R6;dTgan 3UEnOt loAOAve le68U; Oing5ZT;absolute Pg7RFsOvalu3TG;quaredPtr72L;e7YLpercentageO; e7YK;!ow IV;at theOt7WB; zAP2;ma,ou moct9pi; 9DOafBE2cart00donZgYkVlarenSmO;aOurdoA2L;fArtin preschoolPstO;er 9F4; t7H0;! O;autOs8XZ;omoB28;aOennaBKB;meyOyla marA8Z; manBIM;!il7IA;ald3NRnell1SS;hOney 8VS;yiBCG; GZaGUcG0dF5eF1fia5JEgEDhDViDLjDBkD5lCKmC8nAToARpAPr3Qs2Mt12u0Ox02yPzO;da,zy 4YM; Ya UbaTdKeRfQim bi9LDnard james ke30OoOumi t0KCwand district 2FP; clinBM8nn04Zr of OtH;h3G9kings5W1loA12n7UJ;aBHYlB0Q; 0BErlO;ing6UM;ch,nk;anPc5UAerski6forstAAUhOjaBDVrud463;awAN7iAIE;d theOgelAD3; t8AG;bOdKfourth9AOpa8;riBCL; 01iSwelO; coAIAlO; P's O–boltzmann8DD;dAJZe4GPsilver 9CR;c23Yj8PPreBGL; rodríAIGmPne O;peaAMWst9AZ; gTa and miniBDIe vachier-la3P9iQum O;car621liOsubarr853;fe ANCkelihood0E1;liOnus thrAX1;an Oen robes337;i of6M5sc8O5;orAJTun;brBB0ernBHTgree2FHhUiroNju2O6lTmRpQriPstiARZthie931vOw5G7;e0QFon sydBIV;cAQXeme97T;ay6lanJur4UL;a9QKiOo9LK;nghBKGtte874;a7N8evAOK;eadB04ol7CJ; ma2KKde a0O8i,lana k0OZna kBEVrQsO;!er,oleum at halicO;arna82Y;a tieB6Geen WiSo PyO; chayk4a B61;cPf3E9icO;arB8L;ast9CL;cPtOzio2M9;ania9EGiD;e Oio po3GH;che3EOgi9UHr1J7w9TG;constance gAJGdo9QTm0DZo'Ostarkey tigA0N;haGsu4JK;a15ch12e0Zh0Silda 0Rl9B7pB63r0NtO; 06e04hOi nykän5y 8WP;ew Rias O;corvPschO;oenaADBweighöf0;inD;bro8A3daYef8P5fALIgXh9Q2lVmRp7HArhACXsPt8O8vO;aug8Z3;he5CStO;afAA8;acfady5cQePoO;di6rrAFO;rc0;conaugh8E7g2AI;a3FNiO;bat66Tl5L1;ooA7Mray gu0JA;ddAFKvF;l,o berret41XrO; 9S3hoB9C;amodAI4b00cZdYfr1AFgXhaWlSmiAQXnaASYprA94rQsPtO;aib9EKol1QT;erGmiB1Vto6;eADAhu7idO;d7lE;aQePiOo8ucBJR;ebeA6E;b13PinaBJV;fleB01u0;ig,n72NrB2Nss5HO;aeBC5roeBA0;am85Hi9IF;orrMzuchL;eOom0;lOrL;la9ES;iOosAOEyoshka5G7;aB7Voshka bB4Dx O;c397multi598noB6BresO;urre8SK;ii,luBBVt84TzD7; B2NePiO;as ruBG1eu amalrBJQ;matical Pw O;bay9UHh8EE;an9XNi4D0l3LJmA3IopO;erators and symbols in uni9M7tO;imi8M0;o kovQBrO;a,ialO;iB9Ms7OW; Oa;gOpAJC;aBIWroB0N; Oram s571;haBEZ;a0Jc0Herati0Gha and the A2Ri oANUjid al-hANQked 0Flow's hierarchy of n0Eo0AsXtO;erOod2urbaBEH; T'8SVcRs O;of Ot3G2;sBI9the O;aBEZuB39;aBGHhefO;! QD;boot 66Yin theBH1of Op,sy9K6;arBEEb8SXf8SUno6pup5ASr8ZRs8ST; WacTiveO–energy equivalBG5; Rly multiplayer online O;gaBIHrO;ole-O;playi6B2;a7SQopen online 92;husettsPreO; of the innocBDWs of poles in volhynia and eastern ga99X;! institute56K;effectQkillings under communist reg2SIm85ZpPsO;hooting3QRpectr4Y9;r96Jsychogenic iBH7;! legendary2DD;nOretic44V; Ory,–dixo01P;gOm9L5ve8C4;ooAVYr7FX;eeB70;siB0PwoAND;! quattro8U2;arALDuO;li94M;bTda,kRla QmuneOshi kishi1CV;!-kunO;'s rev7WO;chB6J;i Oo no0GI;kBFXsuBFY;a gO;upBI7;-a-9CEa6Kb6Ic5Qd5Pe 5Of5Ng56i3Yjorie taylor gr95Nk2Rl2Lm2Kn2Jqu2Gr2Ds25t17uti16v0Sx0QyPziOía pedraAJ5;a kjellB0Gp1; S-Qada ram9HRlaBDUse O;mizOoue5N5;an4;kate Olouise 62U;and ashley42Do95D;a0Gb0Ec0Del08gaitsBBVh07i4EZjane51Nk04l03mZof YpWrVsRtPuBwO;ick3ollstonec3MO;oOyler72M;dd93Z;ePhe9GEim2teenbu748uO;e,r8AA;aOlwK;co7;ichardson 6YUoBFS;aOi0N1oppins4CF;ge keB8DreB10;g4REteJ;aQcOo63S;cOd63L;ar28Oor7TL;gda23Nll2rvI;e63Fynn rajsk8DV;aOom;tharine hBE0y O;b1IRletour2C0pB0D;arr2opk4;izabeth Qlen tO;raO;inBDK;e9M0mastrOwin9JS;antonAF4;elAV6hA94r81L;a9QWeOoleAFA;rLth huBGZ;liBG1nnOstBDE;e mOi8;acleod3RWo89I; 8N0's theory of alie6EJismO;!–leniB5T; 00elRin O;ga8L5hOmiACTvettoBCO;aOeem9VG;mlisB4YrrAC3; R's Oous marvin ha7OK;guardians ofOmidnightBB6netflix tKC; theO; g9R9;animatRcQenterPgAFGone-shoBC6sOte77TuB0X;tuB84uperheroes secret 9Z6;pr5PCtAQD;i6P2o9B5;ed f3FOi2;f8FAle9TQ; suzuAYS;a ka3O0ha0IiRon csokBG8yO; Or;f5SDrob87LsO;chott0WBt95U; pe460a0AnO; Qa Pe mccutc19QiOs licF;qB4E–h7IA;hingFnavrati3E;a9J3b02c01eberBDQfZgYheXkoB58lVmUsQvan bur5ødO;egO;aaBDP;corsesePensm3ALhOtaB91;aw,e5kreB6OoBG2;! O;and leonardo d2YWfB9B;cdonaB9JuC;aOorentz2uB1K;ndATYwrBDA;ide843n5G4;arrAVXoB;itzmOre9VV;au9ND;aAGMlA29ompAD8;aQorAXWrO;aiOyaAZ9;thw6OK;lsBCFyf9R9;l Pn O;c4Z5man7N5;artsOlB4F;! BAX; O's vineA15;arge91GfOmarcy may mar21Tpl0YXs7PB;ie99O;! UeAABhOupiM;aPmO;a454elB6L; thomBBOlOwn3UF; o2ZWl O;applew9O2fau77QiAD6mclOpl1;uh1;orbiter 8TLr7XO;akeB6MiO;ageOott9W3;! sBE6;esPisO; de 3HQe7RR; brownlB6Ps;i nAD5us labusch6N5;iHot;a SeQoO; 52Cn O;brandoB88veGw5FJ;e matl4ne Oy s7VP;diet90U;g385ma8U4; 01-paul gossela9doBBReWiUov RuPy mark and the funkO;y b4C8;p AN4s O;feehiAZAp872;chainOdecisionAV4;! montO;e carB5V;eOp38N; poBB7;lle f5FOtO; Qing OpAXP;mAULsO;trateANE;capita8H5segm511;a0Eb8Pcub1d0Bf09gatiBD8h07k06l04m01no00pZrVsStQwOz4M9;ahOoolhBCN;lbergB7O;h6W5wO;a4i4LX;aPchle2DNtO;ooAOMro8;lB6OnB6E;oQuPyO;lanceAFVpi5;f79RtH;b0ns2thAMF;h811roksB2Cu6BK;b7r718;aPckiA3MillOothersb7H1;ar,ey;doAVYns2rgZH;aOinn-b7DL;b2H2n7FM;elAYGnopfl0;aOenLoppDuAXF;mi0KArm2;e90HiOuhA0C;e980sh0;aPris0FTuO;d8E9p3JO;cascB5Bvid54Z;dAWJnO;toA8P; lw69Ua0Je0Ek5FHl0Bn03oSsPusz pudziano9O6yaO; takeAHT;a tomAKRha56Xka hPolO; ni7IZ;argitK; Pn O;cot0X6daAFKroBC9;anVbaUcTdr3I4kaBDGlRpPvaO;n37rgas lloAUT;artyOuB1R;! supers7HZ;emOopB61;ieA1R;hal9MSuo9P0;lot9PFtaB3V;dr9ZK; hUa ReO; Os,tte dupain-che8;le8KNpO;ol6VF;abramAHFbay sAAZdiama7F9oswald PpOsiAVU;ic9F6;poB5Y;ink7;li2u he7TYyn O;cham6XDmOvos sa187;aB57o53P; PlOtte har4YC; 0Ala fro7VO;aPc7G3fredrikA97k1MHoOthérèse6KK;f6UOs7SP;ntoinADWvgerAPM; Tdb,h car43Gm-uz-za8YSnO;a RnO;a 8EOe O;faithfuCwO;illiams2;iAAHtr6ZO;bQca7QEdoyle 6TWfa07Ag14UmontessoB8HrPshOtheresa3K2v2VQ;arapoAB9rB79;a2F9esATX;aOelB3P;kaOrtiro9O7;loAB5; helg0KTaTery mB8QinSoPrethe ii69Xuerite de O;c0W1thibouvA79; Pt O;ki7TNrobb9L0;harsAUDmartin8ZT; 551al843;rPux O;he3VQ;et Oi6;aUbrTcA73meB7Un0V3oSqRr3VNsQtPwO;hi736;h6TWudB8K;aAUIull3TP;ua9AT;'b5SWf anjA3E;e6A4oB8X;nn neB11tAIJ;anAVC;of east5M1tranquillitatFwi72W; ko dard nahi hoBC4i3AZuk; 0A-andré 09el03h00ia YoSus O;aure0V7cQfre9RVga5BOjunius brutDlPmOr9GMvipsanius agripAHV;arioBC1umA1O;icinius cra7TSu7E0;ho8; Ps O;rodríguez pantoA3Vs0M;asensA9QbeltraB3HpPrOvan ba0YZ;ubA9P;ierre7TLoloO;! bridge6KD;b9RIcOgay haAI3;laB7BroBAB; Oeline be12Y;comes in like OequinACJ;a 9QC; Qa vOlo mastroiA9Mo bielAST;alladO;olB8N;ducPmaOprouB7X;rceAPC;ha9H4;le6IUter steg5;anRb0U5cPdut0BFm94IrOwe9L0;and3VIuAQ2;hOlotB7CucurBAJ;agaC;dree7W9t7U8;elBAHle,urg O;f915v8OA; 6K9thO;a AW5i AJCon; p8VZleOpa,re595s to the7FKucAZA;! syrASGdu5KJsB9Y; OiB1B;an9EXze6C8; 10's search for meaB13-0Za0Wc0Rd0Je0Ifred 0Hg0Fh0Ci05j04k,moh95Sn01oZsWtTuPx Oy-worlds i5NJ;cAWBlaAJ7; b87Zal5OOel Ofacturing cAJYte bB9Y;fB0IlanziB0AnOpelleg04P;eu0orO;ieA7D;a541iOra; te6KcoBsO;! shri9GH;a muAS0lPoO;n A1Vor ali khan pat7Kur024;augAGB;j b8UNlo rOr9T7sp9ICw9;eiAVQ; villagePa,e98Ning A1Ry O–whitney u 9SC;jac38Pp7HA; t4FH;aAYIu wAFP; Ta,cQfOkka vinay4FNla,pAQKsha koirala,toARK;estOoB8S; destiA5C; PhaO;eiB0N;pixie dream 7KQstreet preac8GF;ra49K;attanOwa;! O;melod5TTp1MW;aOifer8LHo,roAZ5;!neB8B;maAS7von richth1I5;d55Ski-neAIA;aSelQip 10Yol4y O;m6UWpatiOroB87;nk4;a vanObrotAM5; peeAM2;eiB08lPrin Otory196;c26ZorAIJ;a,orAYO;aB95hO;esterPuO; AFXk4HPrA;! aO;irAXCrena7HK;!gementOtB18us;! O;con13Vi2T2;e9YLin-the-middle7JL;in the ironOwith no 4JP; ma98H;aYdouh elssbiKie XlukWmRoru Ota mohandB9A;hosoB7CmPoO;shB58;iyaAGP;aPoO;n,ottyB2L;l,ry iO;nterO;courB7H;! s4X4;eisenhAO0gu9VLvan d2NO;'7J0dy doumbouAGTmABPtaAYO; e7VEaZcolmVd72Fe ga861iTlRmQnutriB4KtPuOwaBé;kuA6Xma,s;!a,esAHDhus8O3;edy7WNö; 7FPaB6Leus maleficOor9XR;arATL;! Ok b32Ln å8WFque thompson-d4PY;emAU3naA2K; O-jamal waAFN;glaPin the mi0SZmOturn7DEx,y9G1;a7E5c9L6;d9ZHz0; zimet31QcVika aroGla yousafzAX8ng13OrAvika moh9KJwi92HyOzan book of the 9HX; AH3aRo-polynesi2ZKsiaO;! Pn O;movement controlGRunited democratic44A;aALEnaA2B;lB5En O;emeOt98F;rg9FZ;ca,hiH;aRePing a5YHoOro; komuAWMto shinkAWY; AGBmO;aA9Wy2TW;rOti; sankr64Eov 54;apahB4Kel9OAorO; Odo9K2;aTdepressSfilm90Qhistocompatibility42JlOnon-nato 59Rprofessional sports leagues in the united states and 7LVreligious grouAINs85S;az0eague O;bPsO;occ0;aseAAQ;ive98U;pp43RrO;caATC;a 02Fd iWka4YUlVmon9U8nSsie RtOze;land 77LreyO;a,i ramO;akrishn1;adB4Qwi9HD; batt7KTeOframe4RMichi bTZland7V3s electricity 8L2z;! O;co2;chi9DPlardA7I;n m4IQ;aYeViTjo8mOogaA2Uōtsukai no yo277;oud aQudO; of ghazAX9ul hasanO; j9V7;bbB7JhmadiO;nejB3C;-maAV2ma mak891rO;a 92X;rshala8JOsh O;bOja449manjr7VZ;abuB0ThaAYH;bhaTlSrQtPvOyaASQ;atar babaA87iG;hir mohamB34ma8TM;aOishi mahesh yoAN1ram mammady9JE;na prat96MshtG;anobisFOia4Y3;raB7K;adheeGda0Aeina tovAX9gi05hr8NTiZlAZAnOpB4T;a cXePolAuOús ver magnúA3N;m93Ds car8UU;siumUtO;! urRiO;c Osm;fOmoAH0resonance ima19Z;ieB5Kl9VK;i O;scheB6T;! sulAVS;arB78;!cOnot AU0; Qal O;creaturesOgi89Imystery 9C0objectsO; in3CO;in3CNjAZ4k92XmikeOr9Ysq1G5;! xACA;!e O;aderin-po6PMb4KTch7I1gPlaA01q,sO;iAOPmiAOM;raB5TyO;llenRW; goe0BOlena a7YY; PrskO;! alabamaARL;ma9C1wO;eB35hi6DP; 0Fa09cap6NGd07eYhVison ToPrAJ6s O;mLProerslAYH;ff investmen85InnaO; O–whore40O;aAIWsO;eb263i72V;be0cawtAVLis9MEpe0KEsquarO;e ACU;aga9YHuOya9IP;baB5OrO;am,i dixB2G; Ta,iGlO;aine pe82Qeine Qine Pyn O;cAT7puAZQ;ka8KTmiAX1ziAY8;aOha6UXma9W1s20O;lbrB2WstB2J;in Om1;aOhe9XL;byB4S;en nfl,ie zO;ie7DT;gSlyn murray o'75TmOn lMra101;aQe O;bovaLdOtussauAUKw8MD;e pompadoAM1u b4W4; b12C;asc9;about9X3gB5Oli9ADmOtv;axOen;! beyond thund6WC; 0Ba08b05d,edon3NKg04h00intoshYkUosRroQuPyO; 4T2's;ahui8HSlar deg83H;e81Mp9IQss;! O;big sALQc5KHhigh si6SBmoOsi6SBve9G9;jaAUKnterE;eOleAYH;nzie OrI;a5T4bOc7C1dA8Jf9SWph7SCs8SY;ezAWZ;! oO;perating5YA; A3HeHinOu picc8CH;e OiAXD;co9SPgunO;! kAJ6;r76Gu8OLyv0;eAN1ookO;! O;aB16pAT8;dPqAT9r2uOw;!lay culk6BU;amA;a2KWdemarAR1ga5YWjB2QmQos xOpAT4;! snow lO;eo4XC;ccPiO;ll0ni;lu8;naa41JsQt,yaO; saO;ka0ZH;ai AAZtrichtO;! 40Q;anand sheeB43ba7VHdongO;-seAVB;'NT-doAAOaHWcd sound95YeCHgCBhaAM1i6Njubl8G9l6Io2Fp 2Esu t5USte frequency bA2Ju08v07yPéa seydo9T3üO; 67VbeJ;c04dia 03e,ft,le 02mZnSoRre,sPtham 9XBudmila pO;avli9FFuAPR;eOo603;nkoiAUWrgic acid diethyla2U1;n,to macA8B;a khoudB0Cching5JIdTnPsey de2JFx,yrd skynyrdO;! 6TS; PdieAK8e O;ch9WGfre7U0;coOred386;l7DLmA75nwK;a 7J2on laroucASLsy fonse9T1;eALAphO; no9ROati9YoO;cyHma;and erik meneAWUlo4KXwagg9R9;cor6QTlitvyA08weB0Q;hAVQoris radN3;iv,mh; 1Sann de lesseAEEbunA2Nc12d0Xft0Tg0Rh0Pi0Lk09l08m06n00o84IpWsVtSuk2VHxOz2ís fi9S4;embourgQoPury O;c9g4KKv7A7;r,t96I;! 9BAiAVC;ePherOz graf schwerin von krosigk; vandAK7aASV;!fi92V;ail iconic770it6LRt;e fi51LiOus;n tPta nyongO;'o;he thiB1B;-class ekrano8GPaPgOisolar2VD;! 5O8; Qr O;c2VBecOgat2IRne64EpA4L;lipB1U;blMLlove3B8; inv6W1en Oinar1VJ;f9F3t1VJ;ar9Q0ulemon athle960zs1SW;a Ye O;brWcVe7PPf41Kgr2DEhUmSnosA0BpeRrock06HsPthe evange5BSwiA6EyO;oungb28D;av9Y8kyOtol6AI;wa9SH;aAHPrL;aOe1UJ;cfar8E8;em9TJu87G;aAL7om97T;acEy1;dončA7IgA4BmodrA7I;gi's m2AYsOz inácio lula daA1R; Oa5TQe ra94U;buñuIgOs5VC;ara514u0FJ;anskOn7XQ; p4B2;er Oh;pistB22;hansaPwO;afB2G;! O;fA8Zh3PV;acrFdiHovico einRwig O;ah8NOboltzAKWgör3XQii of bav9OXmies van der roAR2vOwittgeA33;an beethOon m5BJ;ov5;auAQF; 0Ca06ch2MGh03iVkUrezia Ty O;and ricky ric51Cboy9DPdQfLha7in the sky with diam86WlPmauOp401wor932;d mo7TQ;aw6J4iu;aOe50M;cDvF;b6D1millaWE;nB04y luc2OS;anTd SeRferQlPndSTus O;m48Dquinctius cincinn5HJ;e B2le A4W;!aB0L; 4M6n lavisc953;aAYCdAZ0mo7FZ; Oo pavar6L9;freAHP;a Pino viscO;on9OJ;libB; RsO; OfiAXH;bOcruikshaA1Jd1Vhe7ZNoil758tiCwo8;laJra94M;guadagniA9CzO;ida6;be9YBlon4YOmontagAGE;co9DHd61C;re96Ms5W2;-fi9MUb3Nc3Fd0E5fi 7CDg32h31is 30jb1k2Yl2Tmbard2Sn23o1Xpe1Wr18s0Xt0Uu03vSwOx; Q-pa88PeO;'s,r Ost temperature recorded on8KW;m4COpeAJYsaxo9WT;earth2J7ge9O9tier3FJ;ePiO;e9VGng0P4; RcraftianQrs Pstruck in thOyatAXK;e 98Z;of the r7HBroJ; ho7DK;aQb79IiPnwanOof AVOy4CR;ti9NW;n the moonlAYBt or list AXP;cOlaAO8;tu52W; 0Cd0BiPvreO;! pyramAYO;e3LZsO; Ua Se QianaO;! O;creol2YMpA28;brAR1erd8N7fOle5NDp74Lt8P1woodward6CU;l4JDoAYT;hOjASMma65S;arAU2;a7N1bra9W0de fun2J2farra8WGga41Jh2WYix68VkA3Ple5N9m706pYslXtVvUwa4xOzampeV2;iRvO;! o68UiO;! o68TiO; o68Si;ii,vO;! o68Q;an gaMuiA3A;heOo3VA; p5MMro9PC;ot4;aOhilippeA1UriASX;rOsteAH0;trAIG;on wainwright7TJspe70D;diamond7NMferrigA82gOh4UJlloA2Qpear7MRreAVT;ehr9WOra6Z0; polish627har matthäDtery jackpot8TUus O;caAYIeO;liAYVmiGsprAWT; Qe493s ALBtO; OpropheAW5;cause of the confede8KIdecA07fiAVXg7YEin5UOjFH;angelesOzetB0C;! O-A3R;cSdRinAO0kAX3la9IPmeQpoliceOraAYIt2AF; deO;partAA9;morial coli70Ktro 8XK;odASV;harASUlip22C;az5PBd07eXiUnQrO;aine Oie0IF;br714gr8S0n02H;a Pe O;b6QDgr8NVmiA33;dOlu94Ls630;oo6; Os kaA99;gre91TlOp8QEsiAIH;i28Zo9X8;m ipsAKMnPtta O;deAI8lyAI5swAW6y975;e scaf9M4tz UzO;a So O;dQfertitB04insPlO;amAZP;ig6;e'6E6i bonav2Q1;izAO5;f8VWtAB1; P's Oe,i;prAF0resistance61Q;b6UPcha95Ghur2of OrHSvoldemoAZO;the f4YMw9; de aguirBra2P5;king for alSnQp Ose5J5ti8;heANOquantum gO;ra8OR;a,ey tunesO;! cartooN;asA48; horiA3Mdon02e 01gOi3K1nie don713sdaleiHzGK; T-time nuclear waste warning messA9MePiOs47Vyearby5;nDtu9MT;st Ovity claiAXE;common subsequence7J1fl8RNpalindromic subPrecorded sniper178wordO; inA9Q;stABO;beach ScovAWIislandPjohn Om821short-term 70L;baldLsi4O2;! O;iced40Jserial O;kiAQ0;aAMRpolytechnO;ic5GL;su8EPwolf and c7VL;! O;academy of music andUbTcSe83Cg5CYha983king's crosRpostalLRsPuO;nder59N;chool ofQRtOy909;anstedAMJo79V;s railway9F1;alAR9ityAMH;o3X6rAGH; dramaticO; aAYR;s,y;a QiO;c2ta O;ciAS4fashi2;glau1SUvan wagO;en5; Oi;sab9N4;ch8OLnettl7Z8; keA6ri; 6ZK-YaTiOmein ham3T9os;cQn,stic PtO;!eAMM;fuAJ4re8RB;! O;gaHpAMF;n PrithmO;!ic7VP;inALSlPmarshallOpa8W9;-gA13;e9KOuc9WQ;normO;al7PX;alSh nessRkPusO; ofA3Nt;doAUYed-inAHFheed Osmith94L;c9GFma93G;! m2XI; OhoAUJ;aOgAFE;rea8N2;b91WlawOo23Dst0; compaO;ni3; cool j,aReyton0F8iana 2YRoydOvm; O's 3YEs 6KN;au5LFbO;oc7J3ri7VA;ma,nfairpwllgwyn41D; 5Aa57b4Sc4Pd4Me4Hfe47g3Zjo3Yk3Vl3Fm37n1Zo1Vp1Squ1Prim hajrulla84Ts0Tt06u 03vXzOèAFN; UaRzO;ie Po,y O;ca8AKpat82B;boA42mcg3FW; Ord;kosAQVmOt0AVweAA8;inn99M;a73RcOmi450p6XBtruAW7;aAQCh9PH; SePing O;in the materialAVQsi7OSwith45U; Ple9TErOs1BC;!poAWF;aAUJfree orAUSin front of a studio audiAUMlife 2N8;he9QHmo5R4tA29ullAFD;bA4Dcix4shaoPyO;ifA4C;qi;a 09e03hZre,tOurgic2Z2;le Poral O;c2PGzo6;b9KIcUfTice5GGmiRnightmares9YBrQsimz,wO;itchOom5; ac4UH;ed riding AWUicAUI;ss sOx;uns9TG;eAICoc9F4;aeOhAWN;saAUO;iumOogAQ5uan3EO;! P-iO;on9T;iron phosphate9Spolymer9S;co4rO;aOo8Z6;cQry Oture re55O;moderALKrO;ea9FX;y 5BM;foAU3grE;a 08b06dexamfe9D3kov substitut4HAsajous2DXtO;ed2XBs of O;a00boZcUdSearthqu9NTfRhighest-grossing5FRlegendar1NHmetro-goldwyn-mayQnetflix original5FRone piece475pPstate leaders by5FUtowns and cities in england by 3EDuniversalYv3XNwO;alt disney studios5FQorld heritage s9X3;aramountWeople who disappearARGokémon473;er5FO;ilAUDooAL0;c comicsOeaths by 6OK; ch5XD;entenarAL4oO;lPuntries O;and6W7by gdp;oAU0umbiaO; pictures5FG;llywood5FFx office number-one5FF;ctive separatist movAJDnimOstronomical objAID;ated Oe;feature5FCtO;elevis2T5;eth saOon8DE;la9OC;aXbWdel gioc15JedeVgerrits5hartm4T4jane pers9UGkudrATKlTmRnQrPsOvanderpu91Q;ta0FXu;inAH2obin0FD;ieANM;arie pOcvEur96A;re8W7;isa and cultOop3; jASG;ls9W1;onARTrennan-6PM;nn,s63A;efied petroleum5D6idPorO;!iAUN;! nitrog5-crystal1NC; sync ba5LUiPschitzO; contin5MV;d,zz1; ti9Y9nOr r869;! d99Qel PsO; for lam8ZZgate0BV;b3CWl8HTmesALVri61Bs82B; biA31-manuel mirAT7a 0Tcoln0Pd08eZgXkTseed6HAuO;s QxO;! O;d7N2kernel4LCmiAER;pauANMro53VsOtorvalAJW;a8G2eb1UV; Q-PedOin park9O6trAMR; 53Hin4KI;b9IKlocal2AY;aggre84Jc41P;am,cAIGerASJuO;a fr6B1istic r2FL; SaOba89Un;geAMJr O;aPb,discriminaOeq8LBi7HMm8U5p4K6re8NV;nt 5J6;!l747;i2GOof O;duAOAsucceO;ssion to the britishO; th9TR;a Tbergh kidnSisf5WHsPt,y O;b1QGef7ZE;ay Pey O;buck6LNgr7NAmo5OJs13IvoACT;du8K8e8ZJh8KBl0JYmAD2wa3JK;ap6B6;bXcWeUfiorTgrKhSkRlQmcPpOronstaA0Vtri9PTu7D9;erLu7X4;c1LSm3TM;av4ee cAFoADL;asaRCoz8JE;a9QOuADY;en6RN;moAQBvanO;gel9UZs;ard329hu8;a938laAQC; Os6QG;cPh1UOmOr7GT;ot2SK;a6FZontinentM;esAG6meO;diAFC;aUbSeQiOmy,one6p bizkAQA;na8B1ted O;hango8O0liabilit17L;rOs9MGwiB;enAT2iJ;iOo;c 8V8;!ssAT1; X' WiTlQyO; O-rose de9P3ha9G9pic810;aA0Oc732gA1Jj9SOof the 8SJra8VJtoAAY;ePiOyANA; pa9G7an8YL;! o9WX; PbetBZth,um,ánaO; szilág8AA;el8VDreinAMEta5QD;flA5MkA7D;bSdRj2lQnas9CGpPrel howeLuzi Ow67Nx1yachAN2;veATK;e635u8ZD;oadAOL;ic9S1uAP9;!aAOF;eOud; nastA12lihoodOrt7QU; AE3-ratio 9B8; jose pellisseLmol joARL;a mx,er,htOniHurA; T-RhouseQning Pstorm A32weightO;! directory0S3;m9P2n8ZT;! 8D8;emittingOye9; dio9GL;m6WOnA68raA5Vt6I5; P-cycleO; asse3JK;expect6MOiRoQpe0with O;eOlu90F;lizabeAAU;f 798n5DV;mpris15LnsuranceQs O;bOs7NT;eautif8QW;! c9B9; RcQutenant governorPv sO;chre48N; of pen188;hte9T2;gAA6to ASG;ar,en5C0iOl,oc9GZ;a ba04Rja bO;ač9WZ;ence to AMPhOorice5V4;!eO;n,ss;erRi9Z5orio bello948rOya;ary Oe1C9;gAHLof O;a8FDcA35;aSia,tO;arianQi6yO;! O;leading 2PMm7FRshA4Bun99Y; soc9AYiAIO;ce,lPtion O;of8IJtigers of tamil eelAOZ; OiAIL;arts63ZdemocraPparty of O;au64Bca75Q;cy,tic party9O9; mchuALNm Pngel98r O;gaARTli9;devl4g57Lhem9ICnees7DRo58Vp663;b32Qkeq1IKwenl1IK; SbtO;! O;c37Qdemographics5U0inAGIrights Osy8CR;b30in O;c7F1i9ZRj5LOru9O3tA0D;c9A9e7QF; 51'veo50a4Cb48c46d42e32ft30g2Bh7XWi25l24m20n1Mo15p13r11s0Kt09ukABAvZwis XxQyO; AETlahO; fAKE; luTicographRusO;! O;gs,is,lOrx;fa,s,x;icO; o953;g0thAO0;and clark2LNcaOgAQQha9NSnixon7KBt1;p8RAr91I; VaTenshteinSiPon Oy ro9OV;aro9M3heAMU; bel19WathanO;! O;f96Bw9IR; di5W3;nOr 1PB; saginaINt;kamenAJ8tahANPvygo1HDyaO;sh4; X's Vhal Uitia 904oStO;erOuAQ9; Pboxd,s fromO; iw7SG;caAPCf8YG;! ii atO;re9D6;i2HBwe44P;go bOmake6EG;ra963;him 9EZit bleAM0me be your5QWthem eat 3TQ; 00bZhy,lQot9LTsO;-1V9er aO;nti9SQ;eySie O;bQcPdavid6MReasteOgAOWho6QBjoANZmaA8Yniels3YIph7DPstefaAJ2uggaAOUv6A7;rb6XD;ar2h71Z;e1HYi90HricusAOY; Q-annO; 5DVe O;doANJ;ann3PSgoBma84Fs05N;i1os;clayQinval9COmiséraA2Qpa8OKstPtontons flinguOwexn0;euAOD;roA5Y;poAPL;naean hydGoy O;jethro g2JOsa3HE;idop10YrOtospir95P;echaAPJo9C7; 01nRpOs carA20;aANVold O;and lo86RiO; o9QHi9QF; VaQhard e3VJiO;dOe benesAEE; brezhnAI4as9R5; l4P9rdO; Qo dO;a vinciOicaprioAJC;!–fiumicinoADO;b3H5c6VRfourn9R4la9RGnim9DHsuss5EX;czolgoOe9WEr7GLsp0BItro1G3;sz;sPtolst9DEvaraO;dk9;ay0tr9HZ; 00aXd-lA6XiUnPo8SFsOtA2Lz9AE;!kaAPT;a,oQy O;b2T0h6RTkO;ra8T9;n–Ox42Y;mcc1GY; rPnO;'s mausoleAA8iAG0;iefensta8HRob4DU; Ope;du8VNhOkaAAQol4r9DU;eadEor6;blavatn9KHdeig5X5wis95I; b6OEmQonPurO;!ia;!y snicket's a serieAKN;i8y;and skl9e 2N6;bniz integral4XMcSf RghOla57Ipz9LAsure suit l4FL; P-anne pinOton meeAEZ;noJ;anne tuoAIMbardu9DAtaylor5OSwhan6BW;eri9R5g955;a44CeAEV;a03endWiToOuAOW;! OlAOY;dQmO;arvel super17Sodular buiO;ldALO;c super-vill8M9imA2B;a warsADTon of Pslative O;council1LUyu1;h575m7I8super-h17O; of the Sary Rre 5U7s of O;runet6BNtO;he Oo3N4;faC;crABDen9YLpi8TC;galactic17Hse2B9white sO;na9Q6; noAMAcy of ka4lPtum prospO;er9UH; Sity of Oly74M;bitcoin bQcOeuth344inceAL7;annabFhildO; po5QH;y country or84I;drinking57Xstatus of O;fictional pornography depicting mi5JJpsilocybin mushr2Q6;-O–right political 83D; and right-hand traffAOPwing5ZS; Och,ds,k,leeXProy5VQt,–e1IN;b0Jc0Gd0Cg9JRh09i08j03k00mXpaANGrWsQtaePPvan cle5QFyoO;o-AG5ung-O;ae,ji;eRi5NUoo9C2trasA6TunO;-PgO;-k1YL;b4kyANE;-Oung-A3S;hAFRy8VB;adziwiCe4HO;aPeriweA9Pin-Oyung-b9K6;ho,ju8;ck,joALWrv4;ang-4uPwangO;-s9QJ;an y9AI;ae-m1YAe-342iRoPuO;ng01;ng00VonO;!-A3G;-ADRn02N;acoc9CJsaac c9KJ;aPi,sien loo8yO;e-AJMoAJM;nAFBrvey os9LD;aQix2oO;-9V6ng-O;hAAZwookAGW;-hAF7n5U9;hOor9LB;iALZoonO;-jA9D;oPyung-O;ch8LHhAMN;-y8ULyd mal8Q0; Oa and the sw1g0;la8T7zeppelinO;! O;diAF6i9WC;h wałęA4OiOlerc 706;th4;anPensOron6PS;boACGraA7T;ese Oon;c8UUpe9TE; 09d05gue of 02h re8QGmington s9T5n00p ZrnWst Tth8JTvO;eQing O;l2VPnO;ev9FX; it to beA2Ds of gO;raALR;common mult8OLdeveloped cPsO;qu2X1;ountADY;ed helplPing O;c6ENm50V;essALK;secoAIQye9; O-A4Bing tower of piA45n r1WQ;manufactu9Z5six s4S2;ireland premiPlegendsOnAFU;! w9YG;er 859; Q–O;acidOcrime3J2; bAG6;bA0Hp66V;miche7salOth7EW;on9J4;n 9OG;corbu8MWmorte d'a7KRsamouraï; 5Aal singh cha285b54c50d4Ef387g47hoBi44k3Vl3Tm3Hn2Ko2Ip2Dquon t2Br1Js14t0Xu08v05wWxVySzO;aOio,y4WH;da,rO; kagOus of betha9HC;ano7I0; O's,ne st6RFsla de o5TM;kay kAB2zO;ha8;aA25mAI0; Rless la435rence Os2OM;bittaker and roy no6AXkPsOta5IUwe6EJ;t8W3um8VL;asd1r9E6;aRenforcement Qof O;cosA8ZlO;arge num66E;ag8TCin5O2;biding4B7ndAGH;aPeOrentiy b5R5;rne9MWyan sataAAU;nduAL8r 9OD;danA6Fghing under t0ArOs0EFtaro m3BV;a ZePie Ous nob8P1yn 7NR;an4LZd69Hm3X8;l and hardyAF0nO; Qce Oe powell 6FO;fOha4LIluckin736oli3CI;ishbur4AEox;aSbRc0AYgQh779jaureg8S1lPsOtsAA2;chmidt hiss87Jhuler do72KoutheAAUwic18PánADQ;apkDo90P;e981r7E6;a4E9oeA3T;mb8SHsh;bWcVdUfr6OVhaRingQk6OSli9B0ma8HBnyA9KpPra7GHsan giaOvandervooALGwh09Jzi635;co8X5;endergest-ho881rep2;alls46Br7E0;dPrriO;er,ng;doJ;eAAIonn9Z7;a142urr1;a77Sen5H7ran98BuACL;heO; clouA9U;a mangeshk9eShe,iOrode12Bte,v330;nOtu98J;! Ox;aOch8CJemA67ho5G3la9TEp9SGsc8GN;l8GPme8TM; Ont 6H3ral flow 92Ux;bronze age7CUmi3M2regi7V5show with david l1YK; Yag6ca99DerXhana2ZZik,se hal1HHtO; OpaAJO;action48Obattle of the battleship b21TchAKOglacial UjTkn8D7lAANmeMnight in so9FSof the summer 77Vsu7OZtRwO;eek tonight with john olAFJill and testamentO; ofO; ad4BR;ango in Orain toAKJ;halif9WFp90B;udg9UK;maximA5Ap3LQ;!di9NU;menQpalmAKGvegasO;! O;r142s260;inAKD;a0Bce9FJd,ge06i05k voorhi3ry Qs Oy30V;mOul86Fvon triA2I;ikke881;bZd685e1FPfWhTkSlRmcmurtLnass9paA2FsPthe cablO;e g7AR;aA2StO;orA8K;a68Yi4FA;e34Qi8;aPoO;g1lm3ov0;gm1nAA0;iOlyA3Porte9G7;nOt6AH;e,k;iPlO;yd5;it6MZrd; w8SRan8CF; Qst O;aOorganisAI0;irlines9AQrtificial non-nuclear explosAD3;hadron coll8ZJmagellanicOultraviolet optical infrared surveyAGC; c9ZB; OineTCvI;croftPdOflynn b89Il6IFpu48O;utAK0;! and the temple of os22P;reO;ad9AD;is lazuAAAlaO;ceOnd9D8; P's O;d9I1eq89Z;op3DOt3WK;tiOzi;an8R6;a0Gc08dXe WgPiakea supercluA96tOzaroH;au tomorrow 823ern7B3;ston79AuageO; Ss O;of Owith official statu291;af8RYb9JMca6WXeu9RWi9R8pa3JWsOtA64;i45SoOw651;uth8RH;fa9AKiso7JH;a9Q3ki82M; U-granTed6VTfiCing SlRoPsO;kn79Tli96M; On do74L;calris8PIno67X;i6ocked9RO;at sa5KJpaA12;t 8BS;of QroverO;! dO;e724i9S1;nAIUthe lust7AA;as6F3eOia; OlAJ2;a74QbaShen5GEreQstO;eOroC;pheAB2;d8SCnO;tzI;nAFDrb0ss; Oi;cPdel rey9BOrho9IBtu9PEwO;acho8T5oAIJ;lZCo8V8;arXbQelPiaOonica g8YIprE;!ceA4E;o 9L1; and mu9KTdaTeRorghiniO;! O;avent8SNcountaA6Ndi4SRgOhurac601murcié8CVurD;all4H4;au7KFrt wO; A32i9LB;! c27Y; Ocus al3PC;j9K6od9XD; bahadur sha9JQaO; amar1VP;eQhta 545ot1GHshO;adwe5RRmiO;! 28I;! Oith sta1CC;bRcQd4VerAFKg9Q4mPof the oz8A1supe90EtOv2GK;ah94Kitica96S;ich954;hADNo8TP;aikMeC;d-back 7YAka,la PnOssez-f73P;e5I8ie 3AM;aA8Hm3NQ;a1oTrangOuardiaA5H;e Pian O;me590p9HY;multip2BRpoO;iA19lynoO;miM;morp969s;a08baACMyO; O-in-waiAHP;a04bird6BGc02di00gZhyegy5H8jWlUmarSof the Qpamela h7EGrPsarah Ove3XW;ch4G4mccorquo852;andolph ch57S;bOla9IY;ed3MK;garet beau9PEmaO;la94V;eshuAACouiseO; mo8BY;ane2MEeOusABY;anne 597sO;si961;aga9AAo3LS;anOmitr0EY;a sA6H;hatterley'sOolin 592; l6ZK;!nd the tO;ra8MX;! ni9FRinian to3BFkh;ey cha9ZChlanQock3N8r6U8tO;icAE9ose inO;toler8VB; mu0DP;iaRours of herc902radoPyO;rin9YR;od7rO;! re1RM;! mO;ajoGinoG;bWcai92Jdolce viAGZg8REh952jet98KlTmarseillSni4GVpaRtPviO;e en 8NQolencA;oya47FravO;iaAGW;lA8Qz;aiAEV;a Pi9D8loO;roA1S;a5Z1laACH;ohèAG9rea tar piAC3;hôpital4ORo3CA;-G3aBJbs dBIc and the sunshine 4RMde,e87fc,gb,h7Ki44j a9MHl3Umart3Tn3Fo23pmg,r14s13t12u0Gv0Fw0CySármáRöPōO;haku uta ga71Kki uchi9K5;nOppen climate6G6se0RQ;igs9YW;n A3D;iv,lTm ka80RoPrOshtymA5Yus7NHōiku kan9H1;a s3EDgyz9REie ir8W3sten s57M;go furuhA3NtoO;! O;animationOb28p9X3;! arson6Q8;eSiOo r5;an mbapQe O;je6X2minogueOsonique63K;! si6CJ;pé; Or 6II;a9MUch5KWea984gUkuzA82lTmQpitABKri89DshPwO;a953hitt66Y;an6HM;acOo92O;lacO;hl1;owL;a308uy;aOon naG;k do1Q2me nkrumA5OnOzulu-natM;tung5HQz8F2;aAEGm47E; klux kl1ala lumpurA35b08ch07d8X0iper 6O6kABJllback–leibler div06m05n00omin343rQsOwaABU;ariOha8O3;gaA7O;dUil islandsSoko3JBsk submar30CtOukshetra995; OosFwood99A;a76Yc2BEgödIr764vonPwaO;ld5YTrn0; schlH4neg89F;! O;dispuH;istanOs;! O;re8YXworkers'A8Q;al nayy9chacko bJSda78Gg fu Rio0VBjPoOta kinH;icA2O;ali marOeld9A5;akk9;hu943pAD2;ail nanj8ZNi9A2kum bhag9MTquA0M;ergACH; kuch hot3U1isake-7XH;ern2DQla20Yo and the two strABP; tunstaCm;i,tp-90O;a0Hemlin wall necr0FiVoRs-o6uQyOzysztof kieś83X;pt2stO;al 5OCen ri8FT;pp,skal3TV;g0nO; gPecker O;delAF1p5V6;racACA;egs9I4sQtO;a,hi2OSi O;kharbACLs72N; 02hna01s00tO; novosYaVen SiQofPy O;mcnichADRs4JB;er hiv93Ufer pola936; no96Han wil2Z2n O;chenowe9WEd9HNkre7LBne9HIscott 41W;beCh59Gj7BLsOwi9AH;cOte9HA;haM; Olln0XGnna l2BY;a9L9kosO;on5;elAEM; veA0S;!machari srikk51D;hu7IHje6V8kristoEIma6JKwuO;! sex A8E;opO;olF;ftRkQmpDsnoyar8D5ut9XBvOy51N; ma9ARenO; the 6LM's last 5AG;at8W1en,ów; hei746on,weA9T;aADEb0Wch0Ud0Ne0Lfi 0Kh0Ii0Hj0Fl0Dm0Bn05o03pi luw9A3rVsRtPurtney59wloon walled 8LCyO;aanisqatA4Ioharu got57u9WC;aOori koiwA2E; 5KTk mahindra 60Tt8ZX;her0Z9ovoOtas tsimikADQ;! O;lOw9;ibera4Y5;eaOn;! under japanese4M2n O;aSbRc07SdQem9YWla9M3n5EHpeople's armyPreu1UEwaO;r,ve;! air and anti-a39Q;emil40TraA5Q;roadca0D8;ir,xe murder5MD; 828kaO;burG;aRda p91Vj8BNoPrad aden832stantin Otinental hoc8WC;chern99Hrokosso8PF;n moOsu9UN;lo9W9;miOrk sunEH;! 8G8;aram bhe959b91Wi Oodo 7O9;can't commun7ZRp7SJr91H;a OkaADImogorov–smirnov 8V5;n878superdeep bore1PL;ak,iO; k0MUma 7M7;!ne g7DK;-i-noA9LlO;'s,berg kravis r80Ora87N;a5B7ki9AI;i tec8OSnigseggO;! jes9LB;aPiO; smit-m9Aa8WN;guQkPnshaO;! u9UB;! b7MN; dO;istri9O1; Oi;fa943i0N3m708;ayashi ma1C5e bOoAB7;e5ESryantO;! sexual assault5OA;apsack6WEe03WiToPuO;ckles the echid9XVts92I;ckin' on heaven's5M9ssA47wO; Oing brA46;nOthy3NSyour custOU;ot6RS;ghtOves7MX; R's cross of the iron71Qs O;hospiPof Otempl9;co58Usid8JHthe roundA7W;taA3A;and8ONbOof the order of the gaA5A;achO;elA8R;! 5OF; rah8AAaSeRiOm9IEondike g61PuH;ff kings8L2ment voroshilovPnO;efelt7YWgo8U5;! 6P2;in bo52Hpt7W3;rQus Oy74H;baOki591m9XGschw82Ovoor9U8;de7YPrbA9K;a Ona;and3W3hi90U;a31bbuA4Cck2Yd2Se2NgaA2Lji9CPk2Jl25m18n0Cp0ArZsWtPwiOzuna A0F; fA9Zf6G9; ScRsQtOzbühI;!y O;c773hawk-2U5pry8ZB;ch,u6;hen nightm2LX;cOha6WZk9X9;a9Q5u1F8;hore702sO; OaniABGxsF;diA3Jfrom a 8IOkiss5BQme A4Opr8DA;aXby Wchhoff's circuit53AiVk Sov-class battlec7BBstOti9LP;en QiOy macDN;e a8ACn maldoO;na9I7;dunA84gillib7NA;cPdo646fer5RZhOs76W;a47TerbstreA7O;am46Aou3YU; te ka7C7ba8XSll kapriz99S;howell-baptI8s6KS; buH7n9EY; Oo and the age of wonderbeasA6XpA1A;th76B;d0Ge0EgPm5sOtsu9QW;ey78Pha9SN; 04's 02dom Rfi8R3sO; Pley ben-adA79ton upon O;huCth9A1;isA41of 5KO;hearts48Hof O;aks9VPbWc4GWe9QYfr8PFgVhUiTjSkRna7QCp97Ar5SZsPthe Oy6F2;n78Stwo sici4A1;aOcZZerbAi90T;rd4VVxo961;on8Z1uA2D;e7ITudA0W;reA3Tta9VG;an6TBej7LQun7QE;alicia and lodom5G4re1TF;av8X0oh9UBu6JS;c0GLdiseasOf8MEindia5RZ;e A6M;a793cUdo6W7gTjames 2NRko8le9of QrPs650vO;on,ul9XC;an9YX;i68YmasPsA0PthO;e 7CMo9ZW;k 9SJ;eorge v9JNhidorA0J;a9C0obGrims1T7;ct,s7VEtic O;bombard9KDen6OP; ofPergartenOl0WZ; c9HV; bl9YL; Y's5R0bSc9XTiQoO;no,ra lee sO;im94M; Oko gle9SH;ni todo9BQräikkön5;al SerlOo sA4Pra;ey w3CCy O;guPwO;illiams-pai8AMyaA14;ilf7ZU;mu894;b08ca07d05f8KJgo04h01il-0L6joYkXmin-8ZCn6FBpWri83HsRtae-QwPyoO;-21Io-5JH;il8XHoo5K3;hA1Mri;eQoOung-cheA94;-Oo-9HH;hyA94ye2;-j59JoO;k9HCn-94S;etrA9OhilA4Toss77X;a13i-d7GLyu7VV;ng-Po-O;hA8Yry8GX;ch87Rhyun,il,nA6Hun;ee-5MyO;e-yo2o59Cun-jooO;!ng;-eA8Trd2;aOeMic5HJotc9OP;-A1De-5IZrA4J;rn3tt9QR;a9RFodnAum;lQoOroy was 8HAt;-9CQwatt-O;ho9PM; XeVing Oswitch enga9RE;e9YFin the 3JKjo9ATme softly with his so8of Othem soft9TW;breonSdaunte 8I9eric ga9G3gabby peDIjonbenéJUosamaRsophie toscan du plan8SEtOwalter5Y8;imothy russell and malissPrayvO;on8EP;a 6UR; bin l3Z6;na228;d in 9KFrO; 73Ks of the flower A3I;'em aClA37; 2LBai sentai zenka88WiPukoO; ino9X8; O's delivery77QmoG;cama4YFdA0M;fer suRrOvan rus';an Onan ship9DQsey cle938;cu1CEtO;ie9UFrippi0;th91R; Rada5YLnPs dianO;a 4N7;apping of Oey;elizabeth s6I5jaycee du3E4;aOcu9WHroJ;! mn8HX;assPboOstaA1L;xi8;torrA3X; spor9ABraO; ad36J;aUilafat7XJloéSmer QoPruOu9Z8y094;angb4shchyov9DA;is1pe9ZV;em9TMla9GTrO;ou9QF; kaO;rdas7JH;b00lTmzat chimaA0BnRrQtOzaA67;!ia buniatiO;shvi9YW;ij98Yk9HXto9SV; aO;ca4VL;ed hossTiO;d QfaOstan7X5; bin zayedO; al nahy1;ibn al-walA5Csheikh moO;hammA34;ei9XI;arPibOy laA7Q; nurmagomed96B;ov86X;a2Wb7YHdar4Re2Pf2Ohl2Ni2Bke 29l1Qm1Pn0Uon2IJp0Rr0Fs0Ct0Aurig dr 5L8vTyO; Rboard Qm67HnesianPsO;er sö74Rhawn61Ptroke log0AO; e73U;i6CSl3AD;sig3MYweA4C;in Ol9on 8UH;alejand9VTb23Ac01dZfei9PPgar99WhaA7PjYkXlo9WRmUna9Z3oTpRru7VDsOtancharo5;miPor6R6pacey99Cus9BCysO;tr9MR;thA0W;ai94FetOiet7XDoll93O;er 90A;'l75PweN;aPcki7V6iO;chael15Ot4TM;c925g6SKx8Y4;e693li6;am3onA78;e bruy6i861uranO;d,t;la9YPoO;nr8URstn9PB;a8NWch9ORoO;genic1J8ne,sF;hOsl7TW;a,u ee veedinte naO;dh1;aXbal space5UBeWguelen94YiVmitTnelQose6ry O;co8M8kOpa7LYw606;a2RRe5OK; O-based viRI;densityOmeA5M; esti9KS; tO;he fr9HJ; r6XIng;m bürs4n wo33T;laOt4;! blasters 99U;a arrizabala93FlerO; s0KJ's O;laws of planetary64Psuper6EW; 0Dan6Z2d09gan ashuGjiro t7YnYosha unrest5DAsWtOya; Uaro1Vo yaTuckyO;! O;dQwildcatO;s O;f992m3AA;erA1I;ma7OS;ho8VVstat54C;ho o9DSingtoO;n 6MV;eSy O;chesnEdalg9GVeQg,k4H0lPmOome930ro9YW;ccor3ZW;og8HB;ve8M9;dy Rth O;brana41DcoOfe8WKmoBtobEwi8FM;nnA2NpeO;!laA24;cOfa8XGspac4S3;enter ho516urA4D;all5WCo,rO;a Pick O;lamar8Z2sam7TU;s7TJwFO;bRcu9OQf6TjeQkesEl4TQm7W2no4VPsPth6YDwO;atana87O;ham9P3ta51ugi95W;nnA2Jo8;erLurN;a8P7ono jih5pegowd0ZH; 05e04is,lRow9R1pA3BseOvin gastel9QF;a ballePy O;asb90MchA3Fgra8S6;ri9V8;an lu9Y2en Yogg27CyO; O's0OEanneF3;b6C9cVgre6S6hu,lUmRosY1pQrOsta9HU;e6ZEi9BNoO;hr6E1w9YH;i71Qre930;aOcgi8AG;c8LArO;cIi2K;eb9OMyn9TO;larS8r99Nu9O6;go9NCmoO;nd,oB; okere96Sla;mi3CW;pa8RQrO;os9NS; c9ko nobuZXnYrWth O;brymer5UYcUd5SXeTf0QOhRjaQmo2rPsOu58E;ilve92Y;an4K4i7YJ;c972r8L3;a9HIunter jesO;pe9JG;me9JF;arra4U0hegw4; staOa knigh3QF;rm0;an2N4;a9UEsteinhaD;fiy8L7ir,lavík 9SE;chantTgan-michael kElRm3HGnQpOrthy su0UK;aA3Ling up O;appearaA3Nwith the kardash9TO;an wy9MXen ivory w45C;ey haOy shaye8YH;w3zeC; se8VC;la se4UZnu reevO;es9XW;rama 8TY;a46b41cey musgr997d40e3Zfka on the s57Fg3Xh3Wi3Qj3Pk3Nl3Am31n2Ip2Er1Hs1At04u9T0va,w00yVzO;aSimir male709uO;o ishigu9SMshiQyO;a nak9SXoshiO; miuG; sakura9LMge no75S;khOn; 9CPst1; QaPden k9KNfa862ky,lOvan n69K;a bra9N4eigh mcena8ZC; scodel8ZPk;ca4V5kOle6UEpa6V1;ay men2en3OM;aQhiO; lO;eo8E8;ii,saki9L5; 0Ra0Qe0FhXie Tniss everSrina RsuQt 6PLyO; Oa zamolodchi89Mn6ROusha rocket laun94N;m924pe4Z5w9K3;hiro oto8FQyuki konFU;b314ka806l9ST;de5;cQho5PUl6F6mPpO;av32Wip0o9WTriA2Z;cg7OBel9OJo4XR;a2J7ourA44;arine 03erXie lee gif8TOleen Vman30IoEryn Sy O;baQg6KMhOnaji7YX;i901oO;ch81R;k0t3;bigPcr6O8hOne5SBwa8ST;a7IBu90H;elA1A;h83GquiG9ro8ERsOtu9AC;toJ;ine Oyn win4PO;heRj8F0lanQmPpar8BWry1sc3WBwatO;er90X;cn8QPo8JA;a9KTg8TA;igl,l6JA;gA2Kh7KImOroA25v854;cph9UY; Pe sack3XEy sO;agM;a9W3bTcap7I1flRhu9K0j956mQo'f70SpPsOu963winsl9ZF;i5Y4nA0Wpa8QO;h6Q4ie9HL;aGcki4U2ic927oA1Yulgr8PQ;an4JIeO;et99O;ecPoOu9UH;sw9EIt3OI;kin70T;kana,lin karikó,mari da46Ana,wa shou69Z;de4FVgr6VMtiOvon3IM;mpf;aThQperO; schOsky l7TH;mei86P;i vishwaPmirO;! c7YB;nath3V;bi1;a0Ed0Ce05g8AGi03lWma,nVoUruechTst,tOush–kuhn–tucker cond8LXy mu87N;hiRikO; aa3SVeyaO;! gummO;ak64D;!ck n603;e tr1; parisy1lyn gr1CI;ata97Aö12H; O-anthony t4SIa homol979ie k110sru9QS;döni9UTglu964laSmaQne7TOpPu55Nvon hO;abs7JC;ilki8P0o76I;lOrx;d5o6;ger76Euter6AR; Ok4C8m benze9UDne van4YBsma6CI;b5XAla93P;eTlSn O;a992blQcarPdot89Re956gi68Jo,pO;a9K6e98Fit59B;nEpe8YZ;aJix5; lop1GJia;m abdul-jabb9na6CA;ashOeşler9FS;ev6ZGia6MU; Rc9PEite0XBkorPmo6EMn Oo93Fte;joh9kundrG;amOum;! h12C;h1XOsO;wi8HP;il QoOt2;o6BSsi's sarO;co9TU;d9TPsh9TS;a03e 01gViehtiio 9QXji,na9ZMpurUsaQtOye west9E5;ai 1D8ō O;re8L9;i QsO;! city chO;ie5Y2;re8L5tv;! m3PG; PaOchenjun8Y4xi136;l shepherd9C1na rana7VFr940;haQtO;he cO;onqu134;-ne7ZDn-9MK;b74LtO;ana962;! hanaPgawO;a p98B;za950;aSchatka7WXeQiOpaA0K;!ka6Y2la valO;ie8ZT;hameha923n riderO;! re6ZT; sutGlOru u94Pz; haPa O;ha5PSkh1;as1; ZashYeXiUkiSmQpanaPvin6NTyani priyadO;ar38A; chawA09;aOykA;n77Pr4TN;! koO;ec8XZ; Pko kaua9O5ningradO;! FO;l8P3uchFyu8XB;!ido2U4vaA01y cuo9MO; 96Unikov81T;ho naa 8VIpe9IR;ashi ha2F6egurui – compulsive gamOá;bl0;al aggarwMilC6ol,sa ollon7LF; Sa Qju,r9S2sPtlOz5;an69Oin o93Fyn d72Y;er perman1UWt;geO;rb0;havOBkara-67T;aa9PTi,lil gibr1o shibu97Z;ami mOemus8OVg7;oc9NO; a5D3so8;aseela bir1OLokawa shot5;aRbQhi alvida naa keh9LEirPuOy 14Y;ki,l;! s9TN;al9Q1;d9NTneri of the iron f32K;ba,nekkaa6thu vaakula rendu kaadhM;class bli85Ud 9NWi9ZAlite codec 64Vmeans0MQnearest neighbors6UQp97F; T9-T8aJUbJQcpe8PJdJPeEVhEUiD0j fei9YFo3Kp3IqueLrue h76Cson3Gtbc9RHuWySägermei9POérôme boa5ACóQöPürgen O;habe8EPklo8V7;rmungandr,tu9I3;hann jóhann8W9n páll sigmOzef piłsuds9I9;ar8W8;otOp 99M;hi94LirO;aoOl08Y; phu7; ji-2FVan 32bin nautiyMc9O1d2Ii2Hju2Fl1Am17n0Spiter0Rr0JsPtOárez 5PA;e,la9VN; so9QAsi0EtO; 07-in-time compi8G6iO;ce 00nO; Pe Oian90L;bat8FLlu9NLmu7YK;bWchaVf89Zgaeth9G2hTjeSk1lRroi9SFsp8ZOtOve1ZIw5G9;hePimber14ArOu7ED;ude9DI;ro8NW;in,o8;ffe9DS;aOer9HO;r3KSw84Zy5YV;m5JQtw4;art8NVieb8SA;leagueQsO;mi9H3ocieO;ty 65W;! O;da9UXuO;nl6GD;bSeatRfQgo with 9VAinto4WRmPone of thO;e gu8RJ;er86G;or laughs ga9VOri7XB;! take9SW;eyo9UW; björ9RCe smollettO;! assaultO; ho9AK;aQche8SCisPnee smO;olMJ; 2RQprud9W5; sud 7IJssicO;! O;park76LworldO;! O;camp cretaceoDdomi99A;! ascen9C8; ji-964ction 0EQeZgViQji itoPoO; te6E8;! 1A3;chi Qor PperO;! b5VB;dos s08Ufir7F8se9CH;maOsuwa805;su9WB; Oian arche5Q2ko9P0;chae4Y0hPsoOwoo-09Fyoo95T;-m4;ae-4; Oteen9G4;all6KRb71Icarter 7ACdiane rap0H3forKlo9QYstruOwh87O;gg7;an8YWia,pO; Oing the12R;f7U9poin62D;es 0QiPy O;cr5UEmo9MBre5GC;a06eUoSus O;and ethel r8RXbQc7K4ePh9PAstrO;ei8YK;r8DRvo9XC;ab95Nu9FB; O-claud5JC;césar c0B4i2K8j9VL; StO; Qte O;binOl3WX;oc9M2;m9G6ryl8C2st5UJ;andSbRc5ZHdOhag81Wkavn0lo8CUnewm9wal85B;el9X5rO;e8RRisO;coC;e6NQow5; the phanOre9OB;to9VL; ZnO; TaSe koepc8YXnO;a Qe O;h99Zm5IDnO;icho90D;margu3WCpe3XH; o6V0;ass961b3FNcaRdQe0LTfellPgl6FQle4O7mOnagels9FGs8V7;cm2WEo5M3;ow3;ay,enn8SL;l4YCsablanc9X1;a9FCc3GPdSgRhaa9X6j9UWlPmc6R3or6D2q93Yroberts9QGsOvol82Q;awal8LQt7N8;eOouis-d8R7;migo8VSnn2;a93Til3XW;avFucourn9B2;biOver6;anc9KE;be,tsuO;! ka1QI;ce wr0VIlliard6M3;a04d 02eZge WiRo,y O;cPd8ZYgOh37Umikovi9SFparfi9NSsheinJR;ar9PPe8U3re0;h444ol662; Rc8WKtO; polgár,h O;bOdu46Al9TI;ar9N7u8LI;d5JPlo9LP;dPju9FGreinOsteve ha3WG;ho9V1;re7K8; Oa;beOhiCl9LCt70A;ll5NH;aOhi8U0ne8ZF;pat9U3;ismPs O;and the black m2ZLisca7E6pr3X5;!'s view 4PJ;carlos i23Sguaidó,josé esparragoza4WUmaPpO;ablo monto93Yer7PYonce de5BF;nuel Ota;albendea pab7PWfaO;ng8U9;! webO; t1TO;egOmorgan4Z5;!m8WM; 8Za8Ibb8R2ck8Fd89e71h39int 34j2Zko wido92Pl2Xn1Tols1Sr1BsWtaro ku631urney TyPão Oël mat982;cance9N8f6OJ; Pce O;bulifa9FIcarol o9IWvan pa7ER;beh9cro51KdO;avi8RIi7EK;di9NRto the O;centerOsavage pl7MDwe9SG; of the7EX; ve11e0Fh00iYs XéO; Ophine jo9E3;al92Ecarr7VSde sUfeThuiz9mourSrRsO;aOá;lvador alvOntacruz londo2QHrama8JR;aren8SB;aúl capa5BNizM;in8QJ;lic1HXrr0;ou9CY;a1Ds8NZwh96Y;e tot9LGp broz O;ti9D1; Pua O;h5XHj8XC;bZdXgVhSkRl5MKo5C5peJrQsOwiddicom7X4;te8Y6wO;e9GTic0IG;adn9RRos5;e9MMlingho80H;aPer8QUoOutc2MW;l5MQm9UZ;rt8XEwlE;ad,o70NrO;ob1;a68XuO;gg9h74En;o803rol51U;f 08i07on,pO; tarradellas barcelona–el prat9INhO; Q-louis lagr93Pine PusO;! on4O6;b5UJea7UIl64W;b00cYducre8JCfXgoVhaydn,james de6K4kTlyoNmRradetzky von rade9N9sOts9JC;chPmi9CQtaO;l4t5;oo9N8ump9GR;azz9LYc46LerO;co9U5riJ;al4GEoO;ny,si4RN;eOrdon-levi9LM;bbe9SF;ie7OTou8ZY;a8VFoO;l6E1nr9Q8tt5;eu8N0onO;an91U; m752;f24Kmenge7s4LD;rsta2PM;dPge Oja f8VG;j5SMluis borg3masvidMsalcedo cab8EO;anRiPynO; w3AV; el niño pOn sp7M9;ol9TN; PaO; brew9JW;belVcUfi8A1h1UEkyr8LJmTnRpOr9OV;ePiOoo7;ck8JZ;e7te98H;oOwoG;rmal 4V0;as98Dec6FE;am3OTlAQ;fo9TYl; h3C1' annual hootenan8OY; 0DaRes440i mitchell8MXjoe k5X8nOtr2;ie pea5CPy O;buOcla812gr5RFha5INk97Ll9KO;ck9MP;h 05s 03than O;b01c00dYfraXgWhaVkUlTmajo9RMnCOpry9SUrRsQtaylor 3H4vOw3L4;anOil9LT; 9SG-t9QG;p9R1wi7Y4;hys1NIoO;ss,um9R4;a97Zipn97V;e 0A1um02Q;i8ZUrrF;ottsc8M8ro9BG;k3nz5;aviOem9T7;d,s;a4re8QA;an9J6ra5VJ;br6ZIlösOsa5LR;sl;fQhOlot1;auer-9EAex,iO;ll9MI;alc2;an3TEbWcry0favreau9MGgrud5hVj9QWkUloTmo8S4oRpeQrPsOvo9PZwat9OR;e9R2paih9OQte8VY;i7YDo9LE;rtw9KPte9QY;ri9BHsO;so9AZ;rd,vi9LD;abat-zi9B5rak7IJ;amm9M8ed0ur8V0;aQerOon jo7CNrower min8MZ;nthO;al9M5;rZXtO;isH;ene bla9AKlO;ib9KDy rog0;oOu4AX; P's bizarreOli2; a38A;rOsi8WG;abb9OT;c52Edirect attack muRentrance examination – adva7MNprobability6KEsO;ecuritPpeO;cial operations5FN;y 7C4;ni9NX;an37nO; 03nPsO; hopkin5XYton a6F8;ie 00y O;apple4V4b57GcXdepp9LMenglishUf6PVgaTkSl3RHmQra3HAsPte9OXun2N3v52UwOyong0EY;eissmu9J7i8P5;equoy9I8iNo4DY;aOcda9PJ;nziIrr,thF;lim8P3noxv8N2;lDNrga8ZI;! O;re0M9strikesO; aga4;aOr5R6;rs2sh;co2QSwa8H5;a2Kb2Dc22d1Ve1Uf1Pg1Kh1Bi19ja18k15l0Wm0Ln0Ko0Jp0Equincy3NOr0As02tYupdi8TFvoXwO;aTesleySiPoo,yO;cl4PU;ck,lO;kesOl81A; b0NL;! fl39Y;ll,rn0te9PNyneO;! O;f9L1ga7Z5;lanth5n n99T;erLhOit9O4oCravolta9KYurtur9FSyl0;aw,e O;a6VGbapO;ti9O6;ax2chna7SGea7iTl9L6tO;aRein86ZoPuO;art 0I9rg3;cOn3;kt2;m9J0n951;mm,ngO;er s8EKl6S3;aPhys-8FVi7S8oOu591;b8K4me9FF;m6AStzOw9P2;en6KZ;aQePrO;i6ofu82X;e9P1tr8Q7;rt,ul O;getty6JWi906j9OUva99A;'hu51Dat3f gau9AMl9LS;et9AOob7;aVcTeSiPonEuO;ir,l4C9;chael PlO;iDls,t2;hig81X;ars6Xllen779;af9IHca4e3HNg9LKiOtieEQv9ODwho9JS;ntiB;dd5ga9EXh8DLj9N9lkovi3KFsefield48Ctusz8MWyO;aCer,nardO; ke4B1;aUeRiPoOucas 70Fyd2;c8S5ne,we;nOst,thg9OC;dsK; PgOnn199wF;e9MJuizamo9JV;car6H5mesu8VW;ndFrOss9CHyf824;ch,ro8LE;ePn8RJrO;asi4NEee9OPicfalu9GZ;a9M0rL;cob astor901y;iiOsn0; sobies98P;aUenryTiSoPuO;rt,st2;rtonOwa9NU; coO;nwK;lle8CO; ne7V6;i9JOn58YrO;b5T2vey kello8DD;ielg95Jle988oRrO;egory d2ZCiO;mshaw wOsh9MR;il7YD;o8LJt8CB;als4ZSet3JNie8K3oQrO;anOusci7HN;cis d5V1kl4;g7U1rOster du8RQ;d,syt9E4;dw8W8f8FNlwKntwi8EPverett millaF;aTeRiQoOrew b27Bu po99A;e,nO;ah8C8ne;l4BCma5A9; lanc9N5ac2bnEeOl313mjanj6WFnv0r8MJwE;!re;lt2vid5IN;aTena9IUhSl64EoQrOu7VR;av5eO;asE;lt8IJnsOr0SL;tan785;o,rysost94J;b9PLge,irnc95PlRn988rPsOza7;sav1O1;maJpe8M6rO;a4EBoll24D;e,v4;aSeQiPlu1K1oOr4LP;nh9LZo8BQye8LV;rch 67Esh8WM;l3LnnetOrc9MU;t ra6K6;rrOsi5K1;o7U4y9I3;braSda9N4lQm9GNnOst4;d lorena boOi8MH;bbi9FY;de4EPlen O;ch92Zmu6KI;ham9I7ms2; UnO; Ra elisabeth of holstein-gotto7OGesO; Obu97E;brah9MVgOhøsflot klæ68Bke6WYr7CDverA6;ut8OW;ha9KNsOwolfgang von goet9D2;cho971ebastian 5X6trauss8EC;cruy96Nde 66; 02lQy O;bOdi6ZHfa8H3heathe4EDjord8K0ki8la1K2ra3DL;atEo960; Py O;c5XTfi84Fri7TT;do3KVeVgrEkinnUmSosRsOw0Z2;cPi3DDpoO;ls8N1;huma8P1;te5;a8EBcO;cr9I8ha7;am1;dOmbi9LL;ge4E0;a0Eb0Bc09d08e07f05g04h02j1IHke01lZmVnama964pTquesa9M6roSsRtQwO;al9FMilOr9L1;ki9GHloJ;a1XJessi89X;atr88Nim2tru8AK;g1ot;aOes8N5;ntol1AEt7PW;anQiOon56R;lOx2;lion69R;ch4gani9F4teg996;aGoOy1XV; trugl8LYuF;eLnnedy6GN;a9NUisaO;is9B8;al9EZel8U2ib7SE;l5ONraO;zi0;l9EMx7OU;anHima589on5JN;arn5PCoO;ck0muz7NK;aPid5onam1V3r8UAuO;ck,rr9L8;stia1WC;bercrOlw8LS;omb9KZ;elle f8GChRie Oorowsky's1IHy a8UB;cPfost95GsweOturn31Vwhitt5N1;et4;om0;aa akb9iO; mK;o wilPsOy 4WI;tr7MH;li8MP;chim 03nQquO;in phoenix9GGín \"el chapo\" guO;zm54R; VnO;a Qe O;frogga9E0wO;ha7LSo2JZ;ca22Dgos9FFjędrzej3OVluQn18Mo3SSpaPscaO;nl1;cuła,ge;mlE;a8TRbRcQdi4ZGfPhac5IQje9DUl42FmiOof a4UIplo7VTri6Q9si9KY;ró;ont8B5;h5l2CXol5W3r5LXu7T0;a9FHen8OZlon4HToocock5LU;m31Hpe84Nt8S3von ribbentr8U6;da8LDjPk8A7nesO;bø;o7VGungO;-s6TF; 1Eang1Bd19gme khesar namgyel wangchuJh17i8LBll13mWnSoQroPs8P6tOří procház8RE;endra6AXt0; horik0IMemon 0JK;! O;platf2NR;gle Pn,uO; jo6PN;aOb7XO;ll the7JC; 05i hendrix8FEmO;i02y O;bZcXdVeat9KPfUgaroppo9DIhof8GNio94Kki25EpTsQtPwO;al3e7W2;ar4J6;avileOmi9HTom1GWwagY0;! sexual abusO;e 9GC;a945iersaC;a7KSloyd hasselbai8LL;oOur7DU;o4CDre;arOh4;r,t0;a5I2uO;f5YNtl0; s79Pe O;a8SRwa8B1;b07c04d03fa61Fga02h00jYk8ZTloXmVnabo9JQpUrSstPtOva97E;h2Goy;eOu7NZ;iOr9E7;nm1;a9D4oO;ge9JKhn,ss;ar3L4lun5HI;aOcm2KRo6E9;ttF;nd9D6veC;armOon3;us99R;aOe9DSu8NU;n9BArb5OG;ff88Krr8GT;a7o9A;aPla9H6orbett0RXroOu2UW;ce,w4D0;rr6FAviezI;aRelQoe54NrOuckMK;i2XHoO;adbe94Swn;us98N;ckDkk0; Pian O;beCmi8O2;b5CIclay3B0gascOhennes86Zi3V0lat17Gs78Nv5FAwa2A2;oi6;adOyo;!i 3DB;!du krishnamO;ur87C; PsO;hi,u;qi8zem4;changPhy4V7sO;oo,u8;-wo9BG;ark32Eené ai8T2o7UPumpa l6WM;an3Jb3Id3Ge3Dff2Phovah2Oju 791l2Mm2Ln1Qon1Kr0Ts01tUwOzebI;'s SelRish Os;autonomous Od8VHethnic divis9DVpopula60B;obO;la9H8; st4THleL;ha7K6; PbOhro tull 9CEst9;l98Pr7HS;e7YNfPha59Bli9DSsO;et86Ft9H7;ighter gOuI;enO;er9DJ;per c7WFsSt0us Oy6UVús vida3KH;christ suQiO;n Os 95C;c01Xi98W;per2WV; opp08e 03iOy schr9GZ; 02Eca Pe O;buc7NMca998ed5j,mei 9ASwaB;alZbYcWde gouw,hTjSlRmcnam9BRpQraPsOtZ6wa7QD;eA9im77X;bb9GAi6;a6ANlu86H;an921ow5HDuc9JV;on3u8;aPeOyn3;c9GSn4IS;hn,rp0;aOhastain8LK;b1p6YN;a8QDiIrown findlK;ba,v3;a65Oeis8JWjaRlQmPo56FpOs992tyler f8HHv1A0;a867le8E1;cc0B0etc59X;ee so7OWin2P2;c8LMm3ne;enO;he5WM;emy 06i05main04ome5J1ry RseyPusalemO;! articho8L0;! O;d68Jmike's su7O4;brXcant5VXfal8A5gWhVj9H7lTmag21UoSrRsPv6NHweOya8;intra6G0st;andOe9Kpri91Uti9AB;us8HY;e9EGi9IGub4;'c45Jr5RS;a4I8eO;e2WJwF;aCe9A5ol7OW;a8PTolds8RX;o9G4uO;ckheimerOd9AR;! f6HZ; def85Ne39U; 39Ac8E0;allen611bUcRda8L5irQkle7KTl4m1CQnorRBp6OHre601sPthO;or972;is90Kou7um716wi7NG;oNvi6;lPoO;rb8H7;ar8KU;enR4re99Tul2AU; QgO;jOye2;o 4N5;soOyeo-be5;-Omi;m4ye2; 0Ha ma5DLnRsO; stolt8IRenOon bu8KZ; O's4W8;a5NKh1PN; 5L2a 0Cette mccTYiRy O;agu7JFhar99LlPmc3UCry1sO;eag5U3laH;ewFi9EF; f38Fe g8SHferO; P's O;bo918;ani5F9b04c01doud93Le00fl3F8gYhXjWlRmPnet91Zp1ro7TJsOt6C5westf6II;aun7UJy9I3;eOo6AX;e,y0;aRoO;p9AXveO; heO;wi994;nd2wr9FI;ason4MDon3;a7ol9AZu8YU;a8OTrO;a91Key;h7s0XB;aPoO;nn8VWol8ZM;pria84Ar4Q4;ea9FOotte4ID;bush h4CTc3K0d0Z6el996f68Lha6ESjam8F5m2ANor84I;li7GLp70Ota4EK;aine c4MLima k2QXma5H9;ena mc63AlO;e klaas5o biafGy7Q0;!'s witneXM; Yerson XreO;e 2UAy O;ar8I8dRepsteinOj9FDkatz8HRtamb9E3wr9EG;! viO; fO;ounda9D0;aQeOo62Z;anOmu8ZO; mo4BD;hm0;airp6SEd8KJstDS;bYcon9BBdXfi7X9gWhVj7XCkUlTmaggioncal9FBpSrRst99SwayneO;!'s musical version of the war of the worldsO;! – the newO; g6F6;a8IQich5X6;or5KQrob9DU;ab9eb9C7yn6;a6U7i86RooN;ar900e5MC;a6RJoldbl91R;an4NSu7N8;ae92BeOha8H5ri6EOuc7KJ;ck,z98N;pOt kunU4zy;! O;cj,grand cherok98Lw5OT;dahOediah bi9GCi;! t8VR; bu98A; 04-Tette Rine QnOs;e Oie gaff83Y;cal8QOmo66Ltripple961;ann r544pir94W;m3F8nO;ol1;bédel bok1O7cXjacques VlTmQpO;aul Oierre jeun9CU;belmQAm6QVsartB;arPichel O;basqui922jarB;c vall88Die le6O2;uc Oéon gérô9GA;bC8go8U1mélen82Epi36L;dessal93GrousO;se8UH;hristophe bouv9CLlaude van dam9G6;a6EQbaudr03c02d00gZhaYlouisaXmarWpUre8NQsPto8MPvalO;je1;e8YVhQiOma9GCta4EM;beOm8AL;liD;e6VYrO;im8J2;asseparOiag9CD;to7A5;aFsh; k8U2;g5rl9DR;i05GrE;e cOuj5WQ;arroLG;hréti5oc1YS;il3GS; 6BOownlo58F; Ol;bPhi-O;fi;la17Q; 90'marr4ITb8Yc6Sd6Ne6Lg69hang9BUi66k5Rl5Nm3Bn21p1Cr0Zs0Cthi ratnaWCu0Av04w03xon 536yRzO;minPz O;fu91Ije3SM; grace grUWe 1ZJ; U-z8S4aTcee 954lRmes6AMne mPson4ONwO;al90O;aOe6WQ;nsf7R6;en waOon89B;dd7; b94XpuGs4OP;and silent bob rebo9FObQcPdup1LEe7KEf4BMh984kKle8MTmo92Opa9B9roOseb8RW;a93Oc38K;h86Su849;!aOl8F2;kk0ru7J7;aharlal neh0EQed kar8T3;aPelin t17Xier O;bardem98Khe8FApe3FE;! Ones8NKsc7AV;development k9BFvO;e7PXiO;rtual6TL;me collet-s51XnO;di9E7;min08on Oprit bumr951;al06b05c04d02flemy8g01is00kYmVnewst9A5opp37QpUrTsQto72QvoorPwO;at7KOi6XT;he3;ang83KcPegIpOtaN8udeikF;e949is8B1;hwa8CAott5DZ;ei4M1i7FSob8LC;a2UXri30A;aOom7WTr6PO;nOr0V5;fo9CDtzouk9EM;eOi72F;l9DTn89R;aacs97ZbeC;ar7UNou9D4;erOo603;ek5R9u95T;l24Pon3UY;atem97Teg92Vig9B8l8Z6o6Z;de1e4RF; savoy5R5e O;cephas548g64U; jar bZeUno opToRrOvis co6TB;ePod bO;ow5;d gil23t s617;mír jáOn varsa8LO;gr;me0;d Ot3QC;bu95Md5U3fY7go8W6ha531kQleto97IpO;adalOolF;ec8WJ;ee8BWus5ZJ;in93X;anOon8O8;! 05eseO; P-language proficiencO;y 7VV;aZbWcVdr6OXhoUiSla8MCm4QDnRoccupation of t75Kpe8K8rac3WTsQtelevision0F7verb conju6NGwOy5;aOrit7F7;r cr0NW;piderTPwo9BH;a9DMe4ENu79J;d9CZnO;vasion of manchKM;ldo77Rnorifi7KK;al4EWom4ETui7X7;attleship Or13O;mOnaga8V9y3H9;us912;ircraft carrier Osset price2KL;aka8T8hi0CRka8A9shiOtai223;na8KX;airRduQground Smaritime SnOself-d86;a876eO;ws72O;ring5O9; Ol90F;self-defense79J; 0U-0Sa 0Qe03gZhvi5NMiSnik sRuO;a533sO;!z kamO;ińs8VO;chü8VFi5U9;cTnQsO; OsaL;i1jo67E;a Pe O;lindemu6V4tu8JW;gav7G4wójcicka hos7IR;e 5PGza47F; Oo 5PR;hPkiOna-Gseung-5K0won4CL;-yo8;ee8KGy6JR; T's add8Q3ane garo58JlSs iBTt O;jPl5P0mOs4JBwood4VRye8JS;cte0o641;acOon3;ks0VH; parri947le monáe;a02bi958c01dig97ReyBfZgoYhXkVlTmcg6X8pSr63EsRthe viQwO;ieOym1;dl4;rg4;ey36W;aulEo83B;eOyn90U;ev3vy;aczmOra7N2;ar89F;aw8XJorr2HO;l882o2WV;a7B4oO;n9ACst0;am560u7HU;sh0uO;st5;gana Ok3MY;ma8XI;krzysztof du9A6michaelO; v16U;błachPhOmay5van eyJ;oo91Zus;owicz;a1Wba5CCe04iPmu,setjiO; ta9CB; g01eOroqu90I; Q-lO;ee oOynn si5JV;'d3Y6;beCcVdSfRhyn7RZian7OPke4TGlQmu8VRol96Npa62QrPv4CBwayO;le92V;a4TLedk86N;ee cu8UMynn sp0MH;a94Soxx954;ePim2oO;rn1;metri834;aOhu8la7IY;mpbell7C3rra8IM;er941;ela jam8OEis w1Es O;a1Ab14c10d0Xe0Vf0Tg0Ph0Li0Fjo0El0Dm06ne05o'k04p03r00sYtXvTwO;aQebb space telescopePhOis7RMoo90A;it94K;! sun1NZ;de,n,tO;s2t;! 0DanQiO;! aO;nd8CE; der2J1d3PU;a482he8FW;p53TtO;a7IPe8E3;an8Z0em9ig4IXodO;ay Orí887;ro885;at8PJuref7YN;ee9AQ;sbi5HEwton 57T;aRcPiOo31Vu7U;chael8G2ln0;aOc02Bteig8Z7;rd7v7YH;ca69BdPn6XUrsOs2y;d5te98T;d86Ais2;ass1IBi8DQong970;seph dresn91Iy99Y;! RiPvO; QoL; of Oi P;e8QMscP;of scO;ot93L;aQePoOu8U7;ng,rn0;r6SFtf7M7wi91K;rd5v5;aOlai7QFu8SQ;nOrn0;dOg;olfi8ZZ;enimore co7MZle96Mox,rancO;is e4IBo93P;arl Ol3ANnnis636;j983rK;'1ZNa2BSePoOys2;oh1;an,en;aQh3IPlerk0PXoPrO;om80W;bu8ZGmEok,rd5;an,gnEl7M0m4GErv851y6;aSe96Qlu8TOoProOu28K;l4wn;l96UndOw97L;! O;in2B8m7V1;dge 6XIl8SX;ca8ZOnd oliver phPrOveL;ne98Qth8Q5;el8K9;in87C;icaOl6W0rcus38B;! 83Gn paO;toF;ape24KePiscoOlianwala bagh5XE;! new generation 4ZB;el5RPn O;g8CLhur95Ara64Q; and da36Uar99We SoO;bOv sedl9; Oi13H;dOfu5XS;yl1;ange905bUe30Df1TMgyllenhaalShN8j91SlPmcdo7W1pa77Kr6X3steOta6DN;in6DL;aOlo45O;cy,mO;ot99N;! O;f92Oo8B2;rPuO;sEtt;ew0; cour00Kde92DmOni8ZNp8PGr bolsona8XD;e Oie1JV;ki8lor13Omu8T0press8TQr65I;aVdTgeRuarO;! Oun8WW;ca96Zf-8X4landOxj; r5RI;d littlOry;e 2XR;pOt78T;an8UL;dish Qme thandhPpathi O;ba4C6;ir95N;chandra 72B; 7OYden marO;teC;a pinke1XJeOon sanc83P; Pn82Iveon cloO;wnE;carOthirl1K6;giC;ar96Jcard97Winda 1Rk05lyn82EoWqueO;line TsO; O-louis4LV;brIcQdePlOoffen5H0ta7UXv2UE;ac1e grF; molKr18Y;hir76Mous1RA;biOdu p5Z1f913kennedy 71J;ss94L; pasVbO; Pe257iO;an matrix and determi70Sn,ti8YQ;bQcPelor8W2fortune-l36BrOtremblKzu90E;a63Bees-mo7VK;ol129;atal2eO;rt6JY;to8HC; 04a01box7L1f5CGiSsO;eptice6CHonO; Oville jagua95Y;brOfa7ZDpol8PUwa8;ow6; Ve O;b6B9cPearle h5D5gle94Aro7C2sO;hro8PWte8AR;hanQoO;l5H6oO;g1p0;! O;a0NGf914;p7POwe8N5;lPsO;s f6A7;!o8VQ;a0Rb0Pc0Od0Jel94Ff0Ig0Hh0Dk0Bl08m07nic04os02p01q2T1rYsUtRwO;a8E6el8VVhitePilO;d,s7FF;!haC;at8S6he ripperO;! O;susp8TT;avQcPpa5HVwiO;ge97G;hloss8PY;or7TQ;ePuO;by,sse7PI;a87Wyn93R;al7LMosobiWP;boO;ur6;hoPkO;laD;ls5SV;a,cbr8MFu7AL;alPe6GLoO;nd2rd,wd5;an6;eOir91Zlu2HX;rou754vor33X;aOe1QGig7HYu84E;nPrOw7CK;k95Nl94K;dEna;le844rea8HC;aQDro93E;aReQoPu0XKylan grO;az0;rsE;mpsE;niel18Bven8UD;a1M0h3WWonH;en81Nla60ZrO;ooks4THu95O;l7HQnto7CKr875s4E8;arOb7MH;de8VR;bOoukie young-w7F8;a the hu8XEerw6UT;mo81Tru7;ho8UFp8DT;ba6BRd6AS; FA'm F8-8Z8aEPbEFcE0dDTfr92JgDHiDGkDAlCTmBTn43o3Vp3Iq3Hr2Js0Pt05u04vUwSxten8SDzQ²c,̇O–v–vi–iv p6Z9;lkay günOzm92D;doğ1;anaOumo-class multi-purpose6YH;gi,mi;an rOi t5BSo 67K;he2;aPermect4oryOy8HO;! coast6ZT;nOr the bone4MN; Qa Oh7SLka1H2;baque8U5miličOt2EA;ev8AD;kon8XYmQpavl84CrPtOvi824;he terr641onE;ai8XQei4D2;il8RDozgov81W; 8XPcn red 3E8; 02's ZaRcQer,il,un1RDzO;hak pOiar itu20Ly;er5RT; l5N0; a7WRchiUewon c1BNlOni8QC;iaPo-turkiOy6ZE;sh7Z9; r42On O;aPcOfas8DQla8DZna0XFr2IBsocial68Dwa93H;ui7P1;ir71Om8GHr70P; uchi7U4;aOokay to not be okK; wonderfu1IJlO;l coming back to me n934ways sunny in philadel044;cOfoZIhappened one4UHshould happen 5KU;hapterQoO;mes at4UFnO;sul95F; t2YP; 1Fa0Zco,ek8TQf56Zh0Wi0Vko45Tl08ma05oYraelRsPtOu7MN;anbul6MPhmian8GSrA;a r8R3ei sO;aga890;! QiO; Ot3–palestini0D;a216new shekI;adesQdPkO;amakawiwoʻo7ey3;efense6HH;an8CO; RmPpropyl2QZroku yamaOto8T0;mo8MI;etrOo76G;ic6PV;metric screw thPweek O;daH;re90H;'i7O5el Pil sabri yaak6T6ïlaO; sa8XP;\"el mayo\" zamba92Ncruz córdo83F;aReO; of Os of sc5YG;manOsk690w91G;! 8VK; 1VEmOnd6XR;! 01ab908iOo8CK;c Osm;c0W7eWg278ne45AreTsO;chools and brRtateO;! of iraq and the leP–talibO;an6ZW;va8NX;an92P;public of Pvolutionary guardO; c8EM;a2RAiranU4;mirate Oscha3Z0;ar6ZDoO;f a2R7;and Qby8CRin PmakhaO;ch8W4;eu8COi8C0;ca8ZO;ah 2RFng7O6s5PZ;aan kha74Xikawa1A8maItaPwar chandra vidyasO;ag9;r 8JQ; gu7SJac 01belQdoraPiah4X0mbard kingdom bOo taka6SL;runI; du6TI; Ua merc8YYlO;a Pe O;adja8TBfuh7QBhupSC;gQiPo4BJrO;oss1BP; o39Ii 6HL;om8WE;aPl4UUmaO;x7UBy;llO;en7R1;as81WhOne4S7;ay3erz8E5;it wrong to try to pick up girls in a dungeon?,tO;ank 7URhis 8ZO;a0Ce08i00kut72Gma gre91Pn-b02UoRrPving Oène j01L;be6DTthal8LY;ational Oe7MZfan8WMitable bow4KIum6HVévers61H;g828nu8XE;nOquoF; Pclad wOman triat2T1y;ar8F9;a8L9bScQdo930gMFl8YXmaPoBpillar of del8QOsO;ky,p7IV;id50Nn;hefOro91Yur7B9;! a7BQ;utterf8NN;di8NPna sha84GsO; Sh O;am8DYc7AQf6LGla8BEmQpe89ArPtravel6FQwO;ar39Bolfh3DQ;epublican450;ob,yt8BS;flower data8F6muO;rdo8R4;landQnO;aeDe O;a7WZcaGd2C4pap92Nry1;! b81L;nQqO;! O;inquiLw9;! Qian P–O;contra5EBi4HH;calMUembassy5T1p6HUre4KW;hOna7W8;ostO;ag377; c52Balu8YPi6J4; YaTconf7YGhoneRodPsOtv; p3Q4ec,wi8QO;! O;c3COna89Qs149t6QB;! xO;!r,s; QdO;! Oos;a8YBmi8RRp8QD;pulmonic consonantOvowelO; chart with a7CZ;addressOco7PMm1;! 8LD; i76Ran gruffu6PSdi6nSsQwaO;! O-5LI;st6UR;! O;jailbrea8N1ve7CQ;! Oe sk66CiziUG;antonOthru8RN;es3EI; 71-70a6Yb6Xc6Pd4De4Bf3Hg3Ch3Bi37j36k34land 33n2Zo2Yput4A8q2Xs2Et03u01vOxs;aYePiO;ctDsib8WY;nting 71OrRstO;co71Dment O;bOma6ZH;an8MR;ar0YWne90HseQtO;eOi2J5;b7ISd question and exclamation m6TM; O-square7M7;fu8MCtrigonometric11Y;der z8FBsion of O;ku5DOpo8UFthe body snatc67Q;it,yashO;a,i8JU;eUoSrPuitO;!i2;aPoduction toOusion detec275; algorith8ZF;cranial8RNmuscular i0RNn8XIvenous 45V; the wOlerable cruel8US;hiHoo8PZ;g1Il1BrO; mi19-17active bro7JHc16f2W2governmental panel15ior 8GEm14nUpSquartile4H7racial marriag01QsOview with the v2T2;cope6UDeQpecies revie7OStO;ate highwa3UGellar trO;avI;cti35Gx;ersonal relat8D1lanetary f4VLolOun8CA;! no8VOa8WI;a04et Pment of japaneseLJshO;a90Eip;aZb916cWd0TOeVf5MiUmeSof8XLpPrelay Oservice prov7GMt7AZ;ch8MF;o42UrotocolO;! O;s8GAte4S3;me,ssageO; access8HO;nformation7M4;ngineering task6WVx280;ePoO;m1GJntrol message8HK;leb89Lnsorship 4CW;c8H3dult filmOr5FM; dO;ata8M0;l 0Dtional O;air transport41Rb0Ac06dat4IRenglish language te05la04m01nuclear event5XZo00pYrSsOunion for conservation of 2FQ;ociety for krishnaQpPtandard book 7YOystem ofO; u65;ace7GM; conscio3FS;eOough215;cognition of Ol8TI;is8O4kQthe state ofO; pO;alK0;oso72U;honetic alphabetOrognost0C4;! c8SY;lympicEXrganization for standardi62V;athematical olympi8VTilitary tribunal for the faPoO;bile equipment id1GNnetary 1EA;r 5XI;bour5UJw;st71A;ivil aviQoPriO;cket00Pminal c628;urt8UHvenant on civil and political1FZ;ation5UE;aOrotherhood of teams77I;ccalaureaHnk account 7Y1;coPen5E1mOrevenue5YJ;onol6MA;mbustion456nflict in myanm9;ittent f86Todal con4CK; on1WB;eptor14Lontinental ballistic857rural3TT;process Oservices6OY;co15M;ami 1U6l1;! TlO;ectual QiO;genceOj 7GK;! quot5K1;dOprop73O;ark45Bisa5YO;coBgraphic19management44Tquick syncLN;erTrO;aOi8SU;l,tO;ed Pion bO;y p69D;c6VUdevelopmentBV;! O;factoOo4UH;ri61V; 05ane clown p5CCcr1MTertio04ha7SIide 03omnia02pector01tRuO;l4rO;an8Y6gency in khyO;ber pakhtunkh82V;aUitutPruO;ction se4W0ment land709;e Pional revO;olutionary8SD;for advancedPof electrical and electronics engO;in2QR; s4ER;ca8YUgr8VLnt O;fa7Q4mO;essa1M; k81B;!c7BM;llewyn1GWm1;n QA;ari89Jvikramadit86B;ui3Y3;de,ri mina8WU;aQer Osb4E9;mongOproduct3SO;olA;! lillahi wa inna ilayhi raji'8XOte immun4T0;em8JMtaip1; Oiga84Cs18A;ma8O3;ective 8J3; Qtial O;d,public offeringOteaching 6TP;! 34S;fi7;erently funny 26Pu6T7; g8FOerRlourious baster8MWmar bQrid PushO;etA;bOol8SU;er291; s4CU;a0De0Ci06lXoRraO;r8T4sO;ou8TYtructureO;! investment and jobs895;rmation Os7QFwa8VT;aQretrievMsPtO;e67Uh6G5;e3F0y6Z7;ge,nd communicationO;s 2LU;aUectionTuenO;cer893zaO;! O;a1IWpOv5W7;andO;em8XX;! p7XS;mmatOti2;i2ory bowel8EL;mum and supr3STnitO;e Ri,yO;! O;ge8VIsOt8I8wa8V1;t8V5y7X6;fr7GFje8TZmonkey 5WNstrat8OZ;ctious mononucle7CPrnal36D;mous secoPntO;!ry f53G;ndO; s2;quality of arithmetic and geometric m5Y2rtiaO;!l naviga22Y;e1Ki0Ao04ra03uQyO;a4I2caO;r 6ZG;ctUlg8UGsO; StrO;ialOy 8HV; Oi4XI;mOre4F9workers1SD;etMus8X8;r8RMvalley civ23;an8VZiOor;on Qve O;charOr8N0;gi8;cOm4TX;oo8HS;! noo6DC;-QnesiaOre;! 7QAn O;la850nation0TBrupi8ML;aryan Peuropean Oirani0NFpakistani wars and conflic8S7;l86Sm1XR;l86Rm1XQp6BS;aYe XgSra Pt8VUvidualO; involvement in2MXi8MW;gandhiOv8OJ;! O;in8JZnational ope6DX;enous PoO;! c7NH;a8L7languages4WZpeoplesO;! O;in 59Uo4WY;fo4OOga8W0p83OroJ;! 0J's best da8LJnO–pakistan368; WaO;! RpolisO;! O;col8RPmotorO; spee5X1;jonesPpaOuniversity bloomi7IO;ce8TW;! and the O;kingdom of the crystal skuClast c0SOtemple of do8B3;a08ba7VFc07e06in04n02o01pZrRsOt6BY;pace research4WDtPuO;bconti1PAp62H;andard 8VL;ailwayTeRhPupeeO;! 8B0;inocO;er8NC;moval86WsO;er281; Os;accounts5UCcatering and tourism7E1;a4VMe81VoliOre626;ce5UA;ce1il7DY;aOew year's6M3umber6WS;t866vy;dependence6KHstitutes of O;ma6T6te65E;l86Ang85X;l39Iui7EU;dministrative5U2ir6RHm86Arm4IL;ei6VSgaHnational Pox7VGpOsu7HR;ale a7o8RW;c6BFf7OY;cen8RMpendenYx O;ca8THfWlibrorum prohibitVof O;aRbranche50UeQlanguageTpPunderwaterOvatican city–S; di7AZ;oliticsRsychologyR;conomic1I9nvironmentalQ;ncient egypt–Ortsakh-O;relatedO; arti6KX;or8FM;i8DEu8QX;ce-0NBt O;and identicPorder of odd feP0politOstate of cro2W1;ici1;ally distributed389;aUeRheon8IClusion–eQome PrementaOubD;l 8ET;in82Ntax39U;xclus2FK;l,nPp8Q6stO;! in film and 4LW;di3se; 8FSndescent light bulb,rcer2QL;ar 14Ur3JA;n8FTri ōO5uguration ofO; j4LX;n-out 0AQplace5P9;another world with my smartp0YBbrYcoldXfl7TDliving78praise of p86Irainbo8L9search of lost 8U8tPuY1vitro fertO;ili4UZ;hPrO;eat84A;e Orough the out441;airRcourt of the crimsQe84Ehe6MPlPmoOrealm of the s4QY;od for4HTuth6EK;and of lea6HTo81Q;on 8FB; ton8R2; bZ7;ug3; 0La0Ebo5A9db0Delda 0Cg0Bh0Ai gal86Xl8ROm02o00pOran 6PH;!act YePostor8DJrO;actical jo7CDe8I2;achment of billFOrO;ative2JAialO; Oi8KF;cShouse Qjapanese PuO;ni8PK;ar6P3na778;ofO; j3NP;ollege 78Z;e4APfa8GBw7LC;genOv8RB; p0XJe co7IJ;aSigrationQortalPunO;e 6V1oglobulin g;i8N6s fenyx TA;! to O;me3UJt825;culate Pnuel O;ka8D4;con16Ore16O;ot435; mode8RAur;m53Mstau74K;! 7F4;c,gPn Ox;shumHXvel3LG;eQinO;ary 7RIe O;drago7M6en834; Ob4XMmo5WN;co6NWfi6AMre25Psensor6AN;si-w1yooO;n-8J5; 03aiyaraa7LCeana d'02ha00iWk30ElPovey7KJse Oya naishu8K2;hi7QPko8HD;aTeRiQm6DGumiPyrO;ia8F6;na7FF;noF;anaOgal drug6CC; do4LN;cme plen61Mn mes0MY;aOza shle8AU; topPd,s akhoO;ma8H3;urA;m aliy8KSn O;om9;cr7KR;di6VBvo8JX;ePig8H5oO; uwaFn; Pa,r caO;si56F;barOtu7ZC;inh2MD;hf world junior 84Ft kharagp88Q; Ybo 7YQgy XlVnRor QuaO;na,zuO; f77E;and grichka bogda6YFstravi7OG;!aOeous 8BK;tius of PzO; semmelweFio c6LG;antio8GJloyo8RP;esia niOoo; c5JC;azal8M3p7ZN;farb5nobel51M; 7CTaTeQiOl3ris elba8LG; 4W9na menzIoO;c6C3m,pathic pulmonary2URsyncra7DZ;alPmpot8PGntity Oo80Ys of5UV;docu81Xp43G; gas7CMi8IF; lupi7ZCho;a00c ZeShPici 4EVlo87GoO;!nocla8IC;igo kuro6ARthyO;oOs;sa882; P-t,berg 117landO;!a8NVi21L;a89Sbucket 56BcRhockeyQninePposeO;id2; k8A6;! world champ80W;re8OFu6TE;aw7Y3world tes83H;l3SRo a01rO;ly,us;erian WiVlFmUn RrahimPuprO;of5; ko8JLa konaO;té;aObattu8ROkhald8QNsa86Xtaymiyy8HE;l-hayOra6LY;th8O5;! personal2B1;bo,za;p6N3u81Y;go asp8R4i03mbic pentam8D8nRta Ou designated constell8KF;aOdelay c6P2;irporO;t 6U2; On di8NM;an2RDbWcUduLf7NKgThSliv2KTmPnepomniach3YFsOwr8NY;mi88Zomerha693;ax7HRcO;diarm8OCew1ke7XXsO;ha6;a8R0o8ME;i4XBou8PF;haOu89P;rl7O7;li8POoO;h5th8NM; kf8MWn O;armi7SJb623c6LWgl5mcgil89EsO;tir8J7;not Oquitting heroi8standing on a million2J0thinking of ending8ND;a rob8QXt6YJ;am 04c03d02give it a 4IZhave01know wh00lTmSori71PsRthink you should leave with tim QwO;ant to Oill always love7I0;eat your pancre8QHhold your 289;ro6UP;aw2I1exually identify as an attack h68Qpit on your 0UF;ay destroy7HWe 777;iQove O;lu6XXto sO;in7N4;terally just told7HSve in grosvenoO;r O;sqO;uaB;at you did last 2Y4y the caged bird s8MZ; a8N0;on't feel at home in this world any8JAream of jeann8NS;are a8QFhi8;g0ZTja2XPmo8BUnot okay with Qs8MZthO;at i 8MYe O;night—color me5ZWwalrD;thF;-P7aI9boI7clI4dI3eD3g7BSi96jalmar sch95m91o4Br49s48t41u18wa15ySéO;ctor PlO;mer h7ACène louva8Q2;beller48TelizOluis palm6PJ;on7WN;a0Yb0Wd0Me8B7g0Lks8HKmen0Jou7URpUsterTunPwelO; b5N4; Qa,dai O;ela0BEmotor Osanta 8PHtucs2;co7GDg87C;b4y6X0;esFia;atAerVh5ixInUoO;cRglyc898thO;al7Q4eOyV;rmAsFtical O;axis victory 50Fmoon of me0IX;alc894hondO;ri70;ag62WosF;-v,bo02dimension neptunAg01iXlWm2MPobjectUp7WZr66IsStOvTW;ePhyOrophic24G;roi8DC;n8B9xtO; t0U7;eOonic fl8M8;nsi5ZRx432; iO;ndust8GE;i7OSo7WQ;nflationPon cO;ant8GU;! in the weimO;ar5RY;a6KBeometric5GZ;lOr8J0;a,ic0PH;!opO;teG;ge,rom8AZ;erab8KOrO;aVoO;cTeSgenQl739poPthermal 45TxyO;chloroqui6zi6;ni6VOw0;! O;at83Ybo8KScyani7CApe4ETsulfi7CAv4V1;lectri6W5;a88Oeph7RIhlor4H4;ng8IMzi6;e774rid O;e88th66Yv4UW× heart magias academy ataraxA;lur0OFttO;! regency walkway5GJ;ng Osa;chan-Odong5VCin-yo863;su8; 2Fa2Db25dson22e1Zffman 824g1Pi 7URl1Nm08nYon peninsula0CHrRsPttonO; gi8FY;ayn ibn60KsO;ar,ein8EK;dy-gTgha8MCli8rOt6FK;eQicane O;iOkat29Ws3E;da,r8GF;m O;sult1;ur873;an,dTgarSiep7VNky doLs,tO; for the wilder7UFerOington7B3sman4M9; O-gath3E5;b4FJrenfr8LTscO× 4VO;haf0;ia761y;red Oun;daysOy1JC;! O;offensi8D1; 10a00ble ZidVko deewana karUmSoRpOv8FK;back 5IChOty dump8HE;rey boO;ga8NV;ri8E8ur;er,iOus;ng0OR; ga5S4; Oi8H7;continentOsubtropicO;alO; c27N;bu799p8L4; 0MnOy8MS; QiP–computerO; i0D8;sm,ti3;b0Ec0Dd0Ce0Bgenome08h06impact on the03leukocyte ant3LHmi01na8A3over15FpYrWsQtOvaginal 4TV;a52SrO;affic88G;aSexPkO;el5O3in03; r61TualO; Oi8GS;ac5XN;cri72;esourceOights in nor32I; 6KWs;apillomavirusPenisO;! 4TJ; inf7FF;g8IIssionO; to37Z; eO;nvirO;on7WU;airOe8JRis8LY; c0ZN;! pO;roO;je7Y1;vo454x4Oye;evelopment8M1iges0U1;anniba764lo8CZ;odyOra4;! O;tOwe8JH;em37D;abed4qures8A1;do hamarOkahan ke sachay thK;e 7T7;kOu;! h4L4;hTinn and muni84No Oueno8I2;awardQbo8L8cPll3BLm22NwO;ea728;háv8F3;! O;for bestRO; Oie4TD;bonn7H4cap8IGdPgOhefn0j0F5la4PJmarlo4AF;la8L1raCK;an6TNe1B8i6KW;!l,y lO;ewisOo8;! and the0XT; P's baO;y 7CK;bKr8GR;bleRePie halloOrF;we5;i,rt hO;umphrE; O's76I;dPsOultra-dP;pac0YQ;eep5NW; Ow7SZ;guofe8mul1;jint7THyao3LU;cTmlStpO; Os;c5V4live sPstrict transport O;se32S;trea7NR;! e3QD;! vi8AM;bc,l and hsv,n;iOvy;day8I8sto stoichk7JUthik rosh8EQ; chi minh4Cagy ca4Ab48dge379fstede's cultural dimension4KDg42i41k3Yl2Zm2En1Qo1Np1Jr14s10t0Uu01wOyeon 3UV; Vard RiPlO;'s moving 7AAin'2H6;e Otz0;lo8ma044;cQdul85UhPkeImo4A4sOthe 2N8un72Yzi83H;ch2MDhoBte8AJ;aw8B2u5B5;a8E5o7IT;a realist hero rebuilt the6H8i met your Rnot to summon a demon Qto O;be si5CMget away with 6YNtrain your 5W3wiO;n friends and influenc0IHth john 3UD;lo8IP;fa86Pmo86P; yif1ghton 7DSn0EsOthi6A2;ePing affordabil7QUton O;r884texaN; Phold Os of the ho85I;h328incomLG;m75XoQpPspa4VBun-american activitiesO; committ8CI;ri3ZT;f On wGP;bo03commons 01gZhXlWmVnormUplantagen8GZroman7J6sQtPv3YZwiOyi;n6FEttels4T8;he 5VOud8H7;aOt6A9;ud,v786xO;e-coburg and O;got798;an83G;!e3YZ;an5X6e7P7or899;aOohenzo1XT;bs61Fn52X;lü5M3rOuc7JJ;im6K8;of O;ca4XZt39V;nOrgAu849;ap33G;dsOsfield5HR; of47R; S-air bal40Iel Pline mOst9;ia8C1;cSAdel lu85Fmumb88Nrw8I3traO;nsyO;lv422;d7UQfu2RLgirls want8F7in M8on3p8KBs3EAtub time5YJwFZ;ni mubar7G6pitalPtO;age rescue 7DSi82H;! Oity6B2;play2SD;atio horn01iXmo6nWo1DGrUsOtic7UIus; d'oeuvBeQtO; buchO-wessel-1CS;ho6V0;head n2SFp7YPraPshoeO; cr6AF;di8B7;ible boOor fi83W;ss3; of6RXet;-san to miyamuraQzon O;forbidden 8G8wOzero 0U2;orl88C;-k8IT;bl7YF;e OliHpin' 2BUs;dPsandOvan dy6;ovM;avFia4ZD;kPte8HBver O;d8G6i4HY;ah,e73Y;d03eYg Tky châ126oPsO;hu,la ra0SL;luVrOur5T6; Oary 64Tific nicknames in popular749é de balz6HF;bl0C4k2WZof1V6swinton bO;yr6;guk-y3IUkongPxiuO;qu1;! O;fOin86Onational securi4J9poli5Z1s4U2;lu;st tRyO; bPsuckleOweC; w0CO;a1V6ee;hi3L0;aOur8IR;! O;ac6NLb3O9cPd3O9f8F2hrQinOk3O9nsx,prelu76B; 7D9tegG;iPrO;-v;ty,vicO;! type r;e00iXm0PUoOunc4D1;! Tmorphic encr16Cph835sexualO; behavior inRityO;! in O;ancient Oj3CE;gr39Xro8IB; aVO;erePfloresi46RhOsap6VQ;ab6LQeidelberg46Q;ctD;ci75VnO;iOy;d848ni; RoPr663schOtown cha-cha-c76Xw8GR;oo8AQ;p4PLstO;asF;aPpa808sweet homeOvideo game cRJ; a4D4;lo6n0HUpp1DSsRWuO;to7VY;d0Ii0Hl00oVt mccalUy O;g6FAl6WFn0QLroman eRsO;ee,pirit inO; cO;hr25;mpO;er8EEiB;la7CY;cOdom8ECg8B9live 65X;aust deniMeneO;! O;c09IexO;ti82J;and02iday grai806ow00yO; Toa87JwoodO;! O;acco8HQblaQforever69QoPpi6M8r6EKsi7WWwalkO; of fa8HE;n 48T;ck2PY;hSj89TmaQroPvOw8CI;al6VV;binson peeHwe;d7CUrie O;com6M2;o8CTu7E9; O-point bu2MO;e7REkn8E6m1;! Oai4SJ;r5J1ta3E1;!daH; 30QenOi77P;! cO;auO;lf6SR;kOus85L;aidoOi5;! consadole sappo857;ch4PGsin 4SA;an'sRmanKwartsO;! O;leOs3QU;ga6OD; hO;ero3;a8GVbO;it,y;rmicO;haI;! 6O3; prison bel7I4ac,hs britann8H0onQs O;ho8GMvO;ic8FO;g 7MV;ac8DG;am ab1KYb3Jd3Der36g2Ej676k2Cl1Zm1Un1Mp1Gr16sUtPvO;!es;ac83YlerQman's wifeOtite5RS;'s bodygO;ua8E2;! O;fa77Qy7S1; 0Yashi 0Xen8ENpani0VtO;a6X0oPrionO;ic6GX;gr8D2rO;i0My of O;a0Jb0Ic0Ce0Af09g07i03j3A2k3IPl74Om00pXrWsUtOu67Tv1HHw2SKyou40I;a6YSe47Ghe O;au05Abritish faRca1VOeQi7CVjews in 7CEnational football leagu0MAoaklandOph835telep0K0un831; rO;ai6SC;lectric4MA;rt4VC;elf-driving Ola7P6ou2VCpa4yph6JB;ca8DW;ad7E2u7C8;alPersonal compu6NLhOiz7H6o88Vrogramming7Q5y5GZ;ot89A;es5YM;a6CCicrosoft Oobile ph8DMus8G6;ofO;fi8EX;ndArQsPtO;a80Bun3;l8CIraI;an,e88M;e75EoOr372;og7;a2M6i8B1r6TZ;ar7XHgy6B9nglOu7O6;a8BJi86Z;aRhOo2ZC;ePi80RrO;istia61X;mi66Kss;lOrt88S;enda8DA;a30Wit1PQ;maz2nOrtifici64Mu3RJ;cient israel and jud85Aglo-saxon7V6i8F3;cOog88O; 7V2al PiO;ty 38G;d2YXf7SDj4DHm1WLrankings of prO;esidents3HAime minister2OX;c and latinoOo8EK; am7Q2;eg7JB;dark mater3KFgirl fr5LH;aWoO; UhiTkazu kore-e8CYmu ara2GMnobu sak7J7o oSshiRyuki O;nisPsaO;na8CWwa7MB;hiBZ; ka8Ima;no8CT;ko ara7X8to;m4VFshimo7M6;ga801; hop5S2hop tamiz73DpO;ie,ocO;aQratO;es,icO; oa7WJ;mpD;dOes 4E5kley point c nuclear power6USterkaifeck 8C;enburg848i 7MXuO; RiQsOt7D9;!tanO; unil5H0i 7MU;sm7MA;aOc065d6RKku85U;st3FP;aPbo,esh Oi7MO;p6YUresham7Y;c635layaO;nOs; sa60X;arXbert38EdWfspoliz7LFlRma af kQton O;mOworldwi71O;cr802;li7XP; streetRaryQb57Xel sl4JDsO;borough Odale6VJong65L;d83Rs748; c3J0; b7VB;egard of bi1YLur guðnadótt8A2;iPy O;du7VWfa86Wha5SMswa7DF;a b7CQe BX;aruOiko7DV; nakaAW;e0Eg0DhPurashiO; when the1WF; 05-Tclere 72OePschool o265way O;of6A3t1JK;r Ost unclimbed 5FT;e3PJsecondary schoolO; cO;ertif603;bandwidth digital content prot75Xcontext and low-context cult6I7dTfrequency773intensity intervalSlevelRpQrise5D0speed railO;! in O;au3PQc50Qeu7M4;a5KEerformance liquid chro801; p0W1; tr1NW;ePynamic-rangeO; v6YX;finition Qnsity polyO;ethyO;le6;te44Jv6YT;dart5R0efficiency Rfa6Z4guardian spi8CDli6mi1EEno2plains dri4P2school O;dOm4YM;ipOxd;lo85A;imagOvi7QG;e 5UH; i8CEs bos2;hi817;archPonymusO; bos819;icalQyO;! of O;a3J9the cath64E; clusO;te7PB;den ReO;aki Pki Oo ko5E7takaLK;ka6Eto4JS;an7K4itsu7K4;fOmarkov6WV;e9ig6HB;atullah akhundza8AMiscD; never4M's al4L-man4Ka3Lb3HcaHd3Cge4N1i30l28m25n1Go1Fp1BrZsWtUuTwlett-pacSxPyOzbo761; ju703day2VZsel stadium82A; PaO;d4XBg2;ed2TT;ka8A4;rist8CS;eroOtienne 6SLz0;chromia irid7X2sI1;i8CCsPtO;ia,on blum075;e,i03;'s,a0Wb0Mcule0Kd im0S6e0Hgé,i0GmZnYoQpes simplexPri8schel Otfords48Jvé villechai599;space o667wa71G;! v5PI; S's jou7XSdPes of Oin,ku,n;might and magic5K4the s2EU; OotD;antOt7GP;ip8BZ;fiennesOmotoco6BPoWOs4TX; O-O;ti5VG;ia,án cort1WQ;aXeUiOès;one RtO;!agePiO;an7RX; mu4C3;badd6N3co6NFgO;ra7U9;neu68BsPticO; order of the golden 0M6i826;! trismegi0F;nPphroditO;e,us; R's herQn O;fege71Lgö7O2hO;es89V;mi876;ca4melv76F;cium erina42Etage2RR; comeP's lu6IXditary Oro and namaqua 353sy,tics06I;pe0; the 4T1s1VJ; poirotOs;! in li0Y8;! UertRiO;e Ovore89A;f4HVhO;an3U4; Os cuku894;ho4TNmarcu89HsOvon karaj1;obIpe80I;alPeO;de4X6;pe8B4;! hilm9clOk6PZldL;es,iO;tDus;aPburn roma55JhaeOta7ZA;stD;!r4titisO;! c; sung-t7WRnj3F7;an,drik verwoe88Gley passport8A4n0Boch–schönlein purpuGrOt7ZB;i06y O;b0U5c03da02e7JXfo01g5XPhiCiXjaWkis7SQlVmUrTth6AZvQwO;adsworth longfe10IinO;kl0; 7QJiO; 7QIiO; 7QHi17X;if7ol4JXug87B;anQ2i81Io34I;au,ee41Q;c4X6m3; 7QCiOv P; Oi O;of O;e7QBfr6OS;n88Crd;ng0vid tho506;aOeju7H0lKzer75E;rlton c53HviC; Oetta l4OKk i466;bergs2charrièBde toulouse-lautrPgiOmat2I5poinca50V;ra7PQ;ec;a,es6W2;aPoOp;gl0PUrrho87F; ma53AtiH;a,en04iZlQmutOsinki5RJve6CM; Oh weid82H;baka6GCko627sc0UA; Vb6XHeniToPra59PsOuva 4X1; a3GAi8; PfOwe5;re81B;kittyOneighb86C;! 6NC;cOstic0H; a15V;is oth5RHlet l3X4;anXYcoQgo82NoOum;cent67WsO;!p6HI;bacter pyOpt0;lo85J; Ra Oe f50C;bOc6LNmatt75Yze0KU;lavaOo16X;ts783;ch76Nge4LWhSke80EmQof tr6WZr623sO;haOke75R;pi7XKv0;ccOirren7B3;roL;ay3uO;nt82M;anYdWke maka55UlUnPr appa6X9sO;ei,man tr6NH;ek5rich PzO;! gude7S4;hOschlie7RC;eOimml0;i6r81I;ongjOu8;ia8;el7RLi O;fl5DWg5MJkl7TN; p1A2;geRoniPy laO;ma81W;c treadOsm;miC; 0N1h7JH;eQrO;ew Oid3;al64Hb56Vc00Hla7H5;i,p2L9;d0Glth0Dp0Cr07tTuxBCvO;enQiside step 7TFyO; Owe85H;d,met2MSra4w6XP; official's bl2EMlO;y cr07S; WhO; le1KQerOrow7W6; Os;gr514havriles771lock0N8mPo4YFrae53FsO;maC;ccPeOil867;nzi3;arO;tnE;cRdeath0LYePi87Lpu6E5si77StransferOw7CY;! MC;q5YNxcO;ha7QN;apa6FJ;d island and mcdonald760ing3O5st 6X2tO; Os of irQG;attack38Kfai1EOofPraHsO;ignMy77U; d7HG;so881;! OyK0;and appearance of mi1YOcare2N1insuranceO;! portability and accountability7J4; of R-upQac7W8ington hil69Vph85NquartersO; of the uO;nited7IV; dis7UI;gOs5QA;overn7HN;! and the masters0LE;i7WSlHN; di82S;fc 3UKmi,tv; tO;echnoloO;gi3;! O;go,m7J8n857; ji6Ka6Ib6Gc6Dd69emophilia68f67g65i5Xj5Vk5Sl5Am4Pn3Ip3Ar0Qs0Ht0Au09v05wXxe,ySzO;arQbinPelO;ight5ZVn61F; hotI;as,d1JV;aoG3den RlOreddin barb0DW;ey Oie du7PA;at6XZkiOm7PRwi6GP;yo7FK;c6JBpanett2M8;aiiTkO;!er PiOwi835;ng4OM;huPtO;em5FYyp0N9;nt0rrica6;!an O;a7JRi74Wk633la7FE;anaQeO; i Orsine500;been pwn611got news for6YA;! s7QC;m80Rs57te cou7TI;azō ad11Och5GIfield–mccoy fe7MChTsRtO;ie PoOu7O8;n garden safe deposit burg14Nri hanzō;jacqu3mcda4GF;heps60QuO;ne mi2GOyu86H;a yo73Cor; 6FTan Vb7USeen dillru7NVhRidQsO;anOie1OH;-i sabb7WKal bolki7WK;ic1X; QiOt7BO;mOsh;a 5USoto's thyroid6CT;fu7R8t81Z;minh7M3pik0;a23b22d1Te1Ql1Gm1Bnaaz5DKold 15p10r07shad06t01uWvOya7RN;ard Tey O;el7XAfie745guillRkPmi3YSno6SVva7weinsteinO;! s3KB;eOo6ST;itI;én;business4VFcOlaw4VFun6NV;las5QTol6NO;hi suzuRkOn al-rash83G;a tom27Wi muO;raO;ka7XW;mi7DQ; Phacn600sfield–jackson atlantO;a 7TJ;boc4RDfOto 7YQ;amily O;mur6I4; meh864;dy5D0i06o05y O;an262belaf65Tchap4dean sta6GXe03gregson-4RCh01ka6l23Um00nilssOHosZpRreQsOtread7ZR;heOt7AJ;ar0;dk70Iid7T9;a6S6otterO;! O;and the Ov16W;cRdeathly haQgoblet3DWhalf-blood441order of the5XJpO;hilosopher'sOrisoner of azk4J0; s6Y1;llo7WB;hamber812ursed1P1;bo7UR;ag0NUo2ZD;a7MLouO;di7UX;nf6GZ;ds,w4UK;eTsO; Qon O;ash809fO;ord7YJ;d6DLjaO;yar7KU;r jump j81Ct O;beecher sPtuOwa6BD;bm1;to3T8;! RePo7DsiOy1BU;cho82M;j75QrO; l7WLc4E8;seM;aSb2X0goRhQl22Xmacmi4B9pOr55Lshi1W8wi77W;erriOi71Q;ne7IW;are5OMo5RH;dwi7X3u839;braha82Und mau6S8;onPy's despecializedO; eYV;icOy ko783; Oa;me1o29N;an VeO;mSqu4yO; P-daO;vi7LA;more74UquinnO;! s7D6;! O;globetrot6C1r1H4;cob5eO;ll6ZQ;!diOm,wood82J; jO;udai7UO; Tcore Riness3FQtaJware rO;andom numberO; gO;en0YA;h467pO;o361u73L;disk77IrockOscience79Dw6T5;! O;ca83Ms6U6;haj5YXin,or–ucla medical 2PZ;ld PmO;!be;bluetOfair43Thard0NSqu2R6v2Y;oo7LR;pOtic 1RW;ieTy O;birthday 4J8c58FdRfeetQmadison 5CTplanPtree013wO;hee81K;et830;! t1X4;a6W6eath6FZ;r than 566st 30A; 0Pa0Ld0Ieda7RAf0Gg0Cja,k09lon08nXoWsRuQyO;a yanagi62Iu shuiping kaO;os7R0;kk7TIm1; R-ulrich rudIeQiO;e cron7K1ka motO;wa7SZ;atic7EZl and gretI;albert 46Hchristian and5T7f04Xholbein3H8is7WBre534zimm6WF;i,v0;aQibalO;! O;bu7E2le4A8mejb7Z7; aU-barbeGh O;arSeinRfLgQjohn-PmOsi1S7wadd3U9;ckKon3LYu7N1;kam5;ads7Y5ro81Y;bi6VK;en79Fte2SU;lström;'s raz7ZI; Oe bruins sl838;aOg75Wm26Op7NIvo7ZTwi6CE;ar2z6P5; Qing gardensPoOul,zh6UB;ut with y75Hv0; of babyl2;'em0CFse2NN;ord Ou;siH;bPe erçIj5R6kerchief 65NoverOs36; of ho547;aCra746; PfOkoto7JW;i,u80L;kiO;muG;cRd5E3hyoQji-PsoO;-h7U6lo;e81Qm4;-j752;hi64R;a05burg02dan bin mohamme01iXl7YMmTpSsQzO;a chouO;dhuL;a,tO;er,ri8;i,s3YIton court 4IR;am,erPing Oond o2W6u2PQ;co6PPdi370; Ohead6U;and si6HDfilm 5B7;dQltonian Psh liO;nkl6R7;me2TCpa7JZ; karz7QJou dial7TA;d al makto7MO;!erO;! O;bu74Bsv;d Os;bin khalifaOin7PH; al t5P7; 03al,be7ZGey 01f-81FiZlRoPstonOting4LLva,yna hutc0P7;! 5VR; Og5;ef56Hi4LVo12Owa7ZN; effectUeSiRmarkQoweenPuciO;g5Z9na7X6;! k7K5; c1ES;bu2RD; bOy's c57J;a4O6erL;! sens7Y0;fax 3PZmah yO;ac5PW;b4YNjoel os7BCluO; ri66P;am6Q6h480lOm3MDsp5TEtej819wi0LV;a1JGind5;a7TGeem Pim ziye7PLkOone ek3SRuo7JQ;a 77K;jXBolajuw2;ime Oj;isa74Zno 5I0;er,fa,jby4CWku,lSn1r RtO;ham bin tariq,iO;!an O;re3JFvod6SI;lo7ZW; 5MHeO; sela2RTe steinfeOy bi1W1;ld6U2;fi7SEgFia soO;phA;ez54Eþór júlíus björn6XB;! in european royal7UE;doJePi7IRrianO;!'s 0CC;an,sO;!to7XQ;hikō,kO; and s74a51RerOsaw r7IF;!ra707;ane7OTeOsburg2FB;as corpDr7H2;kon viiOst's17F; of n1M8;-w2;class battleship proposa7YCi7ZU; PG-PFaLWb0C7dań5ZJeGAf324g a6H9hG1iDWk2JVlC8mC6nBYo8Hr2Hs2Gtk,u05wYySz7CJävle go7M0érard depaRöPōjū-O;ryū;bekli te7OIdel's incompleteness theore7YJktür7QAtO;terdämmeru8z von berlichi1L1;rd6AS;aSeonggi prRlPms3UNnecomastApsOro0TV;um,ycrus3SV;es brandOfi sigurð6WPlenha40A;re7I6;ov7ZC;ru;angRenOilym3ZAyneth paltr7XW; sOdoline0SNpo7ZC;hamblin6VItO;a67Kefa7PN;haegun 34HjO;u upO;ri7OL;a1Jcci1Hdrun bur723e1Eg1Ci0Vjarat0Tl0Nm0Kn09pt08r04sVtenberg38SyOz 5VC; O-manuel de homem-ch4R3a7L8;berr4BMdSfPlomb1YPpear7Z2rit35YsebO;as1E3;awkesOie7VT;! O;ma5YVn7WO;e mau0NMol6FV; Vset500taO;f TvO; Re Pus adolO;phD;courb7VVdo4QAeiOflau7I0;ffI;hol7W8klimt,ma7DPsc1SG;sk6V9v;f7C0gri33Kkenwo6AZvan 635;banQga2k6O5ren laPu O;gobind7T1nan6VMrandha73Csomasund747;ga7HO;guly berdimuhamed7X5i j2VQ;a 7KL; violencXbarrelUd7W6ma 6L3powderRsO; Ohot w2A4mo70U;akOn' ros4W6;im4IU;! O;milksOpl7ZH;ha70P; hO;igO;hwK;e 2E8; PbOmo,ro7UStr7QQ;o,y;arab7ZC;ag,f PlOs4NC;!ah,iver's tra2QGy39Q;cOof tonkin37Rst7VPw9;a5R3ooperationO; cO;ounc7BN;!i O;la777pe753;ana space03d02lVnQtarO;! O;he7MVtun7VE;ePnessO;! world5RV;aOveB;! O-bissau5SC;na6S9p6UL;dRlPty gearO;! st720;aOerm4RCo5H8;in–barré7HWume c5P0;!fo7W2hall school of musicO; andO; d2I4; parti036o van ro0N4; centB;lielmo marOu mbatha-r7N6;co7NT;nther s05OrOss who's coming to di4F9;nsErilla O;g6X3wa7JY;! DRoO; g6X7;dYm,nOtema7XJva; Wch3gRtanamo bay QyO;in,uO; zh6PF;deten5EDnaval 7JG;do8xOzh6PD;i,uO; eO;mpO;er7UC;yu;alOel0Q8;ajaraPcanalO;! cLR;! 3NB;c game7W4m;a32e0Ji03oPuOyffi6AC;!mman tbf ave7G3n7FOyère 32S;cery4KPgu,ot,ss domestic00uSverQwPyOz6SO;pe7VH;ing p5UUn-i7OZth hor1MJ; O's4SA;cleve7QF;choTndRpO; Oon,thi6WY;b,of Os7WRth5FP;e7U8s301;eOhog69O;d 5FL; maO;rx; p3DN;dirGPffin01gorWmTnSselda Rts,zzlyO; P–polar bearO; hybr7UH;be9m1;bl4PEr5U1;ch,dr; 07Hgar of fantasy and a7OHms' faiOoiB;ryO; t2XF;i Py O;orl6VCp4WKzinovi7OY;pere4IZraO;spO;ut4;! O;d165gluJ;at12co-pers6FEe0Jg02mlin3SFn00tSville QCyO; P'29houndO;! l7JQ;aOde4RZ;li5;a Tchen PlO; b0C1;cPm7VRwhitmerO;! kidnapping pl7WS;ar6ZJorO;be7NH;gOscacc7JXthun7F1van f72O;ar4FZerw6SG;adOdIfell tower 7RGob7;a,e,ier2IU; Wg UorO; meF5ian cSy O;hQof nazianzDpPsO;car72Ci3J3;eJo7P7;in3ou7UI;al2XDha7FR;al4I8popo4RXsuO;lk4;ab1DKberl2S5chappeCdaUgTh2WIkRlPmce1WEod5sesOwi7UE;te7K8;a6XJiO;nd7ELpp7E7;iOur2JQ;nne9;er7E4ir22Sut502;n32Mvi3;ce5PMd05k 03nOr ga7AB; Y's XhouseTlandSpRsle6P7wichO;! O;mea7POvO;il1NX;ea7UV;! s3Q0;! O;ef50EgasO;! emiO;ss7OT;fu7GDth4UW;aQbPca7T6d2I1goOkn7SElan07Om1revolution73Et7PG;bl4;ay pac6DSoo7R4u47E;cr3nac3X9rr7T6;al5R6c636dark 75PfiBgOla73Um37Vnu5R5or27Xprimordial d68Lu53Hw21R;e5MTovernment-d0BB;faCy4Q5; YeO;rQst O;common divOg4T7;is7RR; Q-O;thaO;n 7AF;bo6SNeast asia co-prosperity 3FOloQm0M4toO;kyOrontO;o 5ER;nd2s4W7;a0Db0Achi09d08expect7O8fi06ga7UUh04l03molasses f02northern6OOoxida22QpZreWsTteacher oniSvowel sRwOzimbab3J8;allPhiteO; s3PA; of4I5;hi5ZF;zu6ZQ;alt PeOmog 0VKphinxU;al2WZ;la6WB;c5NTdPpla5VYsO;et,ig2SH; sp7UZ;acific garbage p5RKlaPow0ur7CRyramidO; of gi6VX;gue 0VCiN;lo7UL;ak3eap for3U6;eathen2WNornedO; o4ZE;lt0reO; 0V6waC;a6e1QP;cago 7PHnese fa6B4;arriPooksOri62J; of the western7ST;er re2WGngton524;mericanPtO;tra7GT; n77F;c22d1Veme 1Uf6D8ham1Pm1Dn0Ip08ss07teful d06uman's c05vWyOz; S'QsO;ca7on O;a712p3R1;s anaO;to5PA;asPbOco6HK;ox4BH;ex37Q;eUitO;ational RyO;! P's rO;ainb7RM;f68Vof5D0;accele7PBco56OsOwa7IY;ingu24N; Os'7AV;ac7DBof the firef1SS;hinese3SZ;ead6MS;ho4XUla7PO;eWhO; Ue6iO;cPteO;! o6H1; Qal us3ZFs O;cOdisplay re160pr6E9;a7R4ore ne0G0;de78Pn76M;colo75Wth5BQ;!f3XR; 0Fada0Dblue0CdRitPt O;gu2H3ima5SAmo4M0tiIF; xOe;ha6Y4; Pmaster fO;la7KO;admiral thra7Q6bl7HFc04duchZeXfunkVJmosque seizuBprix motorcycle ra582slamVtO;etonRheft autoOo555;! O;iOon7G7v;ii,v; nO;ationaO;l 696; ofO; d533;st,thiopian renaissanceO; d7PP;ess Qy of O;fOlithu3ATm7QJtusca6NX;in7LR;anastasiOolgO;a nikolaevna6OY;any2entral terOr6FC;minM; fa6EK;! O;cf,w9;cOto1SS;an6ESoO;lo3T6; p0AO-XmO–schmidt78Y;aTy awardO;! Os;for Or5PD;album Osong O;of thO;e 3KO;rPtical O;ca7QLge6KR;!ly;negaOposiO;tive 1VI; O'0VN;c1JHe37Ngr5FWhQki8linPmctavi7JLnOpo5T3;a7JKo2HW;eh1;an3AYiC;ed7A3fo2R0sou7QU;iPuate O;aptitude test in4CBmanagement a2AZrecord examin7L6sc57F;entQng O;in33SsystemO;s 552;! O;boos7RZdY9;eQie O;a6YPfa6J5mO;an7DL; Ola7NQ;and frank7P9b4Z4de7BAgu6E6hOj7PHk75Ps0YEvanderwaM;ig6JCo4VU; 33a32b30chuja8d2Te2Sg2Riânia2Qjong1ESku,l24m23n1Wo0Qp0Pr0Es07tXuWvernOwtam tinnanu7NL;ment of UorO; O-general 5IL;general454of O;cOn7NBv2CF;alO;ifoO;rnA;c1E6i6ZDt2GY;ac7FRgh whitl7O7la7IUt;abaya rajapak78ThSla7NDtOye;friPhard baseO; tu3OQ;d svartOed wilhelm leibn1TP;ho7MP; sRam 5YMen587ic Os;ar5J3f74Ela6ZMrO;evivaOoJ;l 5J0;ubc71P;ford 679pOsip 41N;elOo7R4;! O;m6C2of O;jPlu6SHmaOth5R7;rk,tth6DK;o55Nud7QT;!an drag6VBdRe vQg2illaPr the god b5E8y6CHōO; miya597;!z6JX;erbi2NTidM;iTonO; Osto7Q0;b4U2liQmPrOstewart north5EB;amsK;ooBu7AJ;ght5AH;an kn7QVe ho3ET;n6LNro; 0Rd0FgPsebO;erLum70X;i0ClePolO;!pl7PU;! O+,pl7PT;a05b7G9c02d00e70IfYgWEhWim70Pke303lVmUne7H8pTsPtrOv52Rworks2KN;ans4QOen7F5;chol9earchPh36Dit3l6CKtO;adAoBr1ZF;! cO;on2N7;ay,hot7HWixIlKublic dN;a70Me7MG;eNlc,o6EB;aOo7PZ;c7B8ngou7LS;e75Nl5IIoO;n7LQr7O7;oOri7F6uo;cs,od7;al2R7hrome1G6lO;a5CDoudO; pl1VZ;cc5SRdsQnaly5MHsPuthentO;ic79J;sis52Q;!en7O5;e 5HO; S-bye to aQbye Pfe43Nhart6AEnight punp7P1rO;ea7EI;christopher r05Hyellow brick S4;llO; th7B7;bu4JGcount4X5fridayRking wencesl7PJluck charl7N7mQoPtOvibr7IUwill7PQ;im3;meNn p377;an2KKorning5Y6us7PW;! O;agO;ree6ZE;gooOhaG; d1H6;d4QUe baby go6g Rorrh7JBzO;alo higua387o O;jOpo2RB;our68P;hyo6WTli,mPseuOy6RW;ng2OZ;yu8;be chimpanzee6IUo1Z7; 6AWan08dQemPgi appar24DiathOl79Ushifteh fara5CJ;! tabu7EP;! cre7IB; 04a me7L7bach's2AYenTfi7GJiPman sO;ac55L;e Qlocks and the threO;e bO;ea7MW;ha7LX; PdOe4TC;ood7;age of Ue5U9fl2GAgSh564joystick 6EAkam4FAli2os7OArOstate 0QTte44L;aPeOi7NZu7;tri4RD;spberry awardOt6MW; for worst p7B5s;atOir7MKlobe award3KE;e 4P9;pOte3FY;i58Oo7DY;har2QMr1LXs726; he5GZ; ac2XF; and mag6Z7gleb6PNury6A4;bbels6FNthe's f3AP; Rad77DfaQwin693zillaO;! singularO; p6ON;ll,ther of harl6GD;c0IOemperorJFha7KDis6FEof war Psave theO; q6K9;ii6XFragnarök;i58HlinO;! 3JJ;!ts head so75S;aGmin-7ES;arlsUk dinamo zagr54QoTuO;! O;compiler QgOlesser gOpP;eneral pO;ublic l5MJ;coll6GE;cc7BHme,s6W5; bar5RH;aOm69O; n5UKil;a0Zen0Qioblasto7G1o02uVyO;cQnOpho3W9; j7Iis j7In O;e6UAtu6AD;ePi6oO;g5l624;mOr7MX;ic7N0;coTtO;aQenOto6IQ;!-freeO; di7JT;miOthio6;c7KUne;cortico7KUneog7CPse;b03ck,na7MBomh6F3rUsPttal st6UYucester183vOw 2;er teix6KKo;sary of Oter 2SC;bittorrentQc24TmPnauticalQpOvideo gameQ;okerProfessional wrestlingP;athematical sy588usic termi4XD; ter7LF;iPy O;ho7;a PouO;s 35I;estef1fo7CXgraRhQin excelsis d68Rmacapagal arro6T5sOv21O;tOwa7FH;ein6F3ua7N6;atrick mc6F3unni6D0;ha7MV;alOe3MA; Pfound7E4izationO;! and world cities research5C7;cRfinancial centr42Bhung7G1innovOEnorth and globaQpPterrorism7M9wO;ar6P4;ea31Wosition5O7;l s6YJ;atastrophic ri5LWi7GD; Vda1DLnO; Oe head77D;beJcSdFJfRgQhoPmOs4KYyoungk4;cg578i7DO;dd7we2CH;ou7L6r6KD;o7KArE;lo7KX;ca6NHd43Spo6DB;dWgolVi7BOm UnsE0sPucOxosmithk79Nzer ownership of manchester un43W;o7EOus atlant3W4;gowQsOtonbury4E7; aOdo7IZes;nima7KA;! O;coma4JWs2VY;m6E5roJ;itic 3SD;iPos,ys O;co5YVkn7J5;at7IRus;a1Cb18f,g10l0Jm0In0Ao05rXsTtRuseppe QvePzaO;! pyramid0GH;n 0WFon;garib5LZver79Y;!a gopiOh4IQl5CR;na740;ele Oh gall6TJ;bOyash9;arreto fOündXP;et1FR;af7LLlOolamo savona045; SfriendRsO; P' Odo4V0;front78Yg4JSlast 5R0;a71Cjust want to have f7L3und panz0;'s5Y5;from now5TNinOm3SKnamed t70Ywith a pearl ear6Y9; r7GW;achino rossi7BArPvanni O;ribi7CAs11Wvan bronck2O;dano bGWgio O;aOchiTNmor507;gamb5r57P;! Ua SgerQi Pkgo bilo72UnOo d'acam52Fse8;ifer goo74JyF8;co463;! O;b3L5ly73Pro7E2;cOgersh2lollobrigi7JFmck7D4ro6IGto5KZ;a5HColad4AP;and t60Grum5GLta7DJ;li gl612p; 02bertYdXes cWgVlPmoreO; g3Q4;es QiO;an Ogan'13W;an1LIf4ITjaco5PW;deOv173; Oleu4I5;raF;a06Oit-balti6WA;or5;a ra4YNed24J; Po rO;odríguez orej1S0;aOgottf67Co'04V;ren7KU;birm3BZced5CRge4F1kOscott-h1FT;en1; y5S3aQg4RPiOn; hO;ad7I5; QbitPnO;oto75Vto50D; ethe6HH;chikad4HOnOt6FC;eva7IN;bQrPson lesO; pa5IP;alt9;on,s free3YS; c02como 00da Zl7BSnO; lWcarlo esVluigi TniRtO; P's causO;ewK;p7IDs24Yt6JP; 6AHna fac6IIsO; antetokounm517;buff2donnarO;um7CG;po02E;orenzo berOuca passi de preposu7BI;ni79S;colagrEJd0YH;casa3SEpucO;ci79P;aran6ZSopFP;aVeUislaineTostO;! Pbusters6LEeOface ki6DHla7G2wrRJ;ma6;aPdo76Jin theOof tsu4K1pe4O6r5ZPto7GZwhisp2A1; s4MW;dvent5OL; max6AN;e,nt;na5DMriM;ar57c6S6ddy3IYe54f52g51i50l4Zm4Xn3Lo1Ar00sYtO; WafeVtO;ing Sr,yO; QsburgO; aO;dd6UI;fa6B1im6TY;over it with bennett fod72Jstra7GIthings O;do6;! 0E7;ha7H7rich or die try393s3T0;ine bullock-p3AJtaO;lt28Wpo;a0Nd 0Mhard schröd0i0LmYoni5V9ryRtrude Pvonta01QwynO; p5R2;beCpressOs6JU;bu4D7; PmanO;de6VT;aQgo52RmarPraO;ff5NJ;sd5;da7HCnd the paceO;ma61I; theory of709aO;ine 08nO; S-occupied06PiOy5CV;a,cOum; Ous;l6TApO;a37eo4YB;a00battleship XcUeTinstrument of surre6BGk0LLla6REnSoQpeasant0EDreOs4EFtanks 3TS;sistance to na01MuO;ni3IT;ccupation of OrVW;c0V8n14Jthe channel6GR;a5W6uclear weapons363;ast5R2m741;oPruiser O;admiral graf sp7AFprinz eug5;lAVn5MG;bPgneisen6WSscharnOtirpi7B4;hor7FB;ismarJ;irOm6TLr5DT; f5EScraft carrier graf zepp6GY;fr4AVg1KS; halli699t7HQ;mü79Gvon rundste6OV;lPrd O;butl70Jpiqué,wK;dOt of rivA; Tine Oo 2IL;cRj6HAmcQsomD3viswO;anaO;th1;ew1;ha4CI;david las6K5fo7FVmcr23J;c1Xff1Sg1Klog1Jmetr1Gp2TNrgQstOthermal3WF;ationaryOo74Z; o0J3; 1AeZiPy O;malenk6GIzhuk6GI;aQe he540nOsm;a Oio wijnald72P;c19Cleonid7HW;! Pn O;eGla6QD;bulldogs6KGeT8gQoPst5AOteO;ch,n5AE;'keef7HI;roo7HNuideO;st7FL; Ss Otow4ZC;bata6COlemaîtBméliQsO;e0WIt-O;pi2BF;ès;a0Sb0Oc0Md0Le0Kf0Gg0Dha0Ai06j05ke2Z7l04m01or68DpYrXsUtTv6QRwOzimme647;aPeO;ah,n6NY;l70RshingtonO;! O;ca5G4un5Z7;ak6OPhoroP7;andPegMh1ILor793pa4W6tO;ephan6UBi671ra7DO;!e7FB;a5LVe6AQ;attPeO;ll,p19R;on 6R0;aOc09Hea64Richa42H;lOrt4so4YS;loL;azen7C7incoln ro18Mop79Xucas7AI;e5SEon3u8; of greQiOv; of great5P6iO;! 1QV;at5P4e7G6;l7GWrrO;isO;on6A1;al38HerPurdjO;ie6YW;shw4;loydPor5WXrideric haO;ndI;! O;prot0HT;li7GZng69FzG;icapr6ET;a4R4hakOloon4AOo2ERro7FIuk7D6;irF;eQlaPoo7uO;rNsh intercontinent749;ke,n7EJ;ns2rnard 4VDst;lagi76Irmstrong cu769;cant7CZstanford3T6vOwilhelm friedrich h3BF;on tO;ra6BQ;ic PyO;! da77T;d488me1p59Bse77G;ic time4DTy;raphPuesO;sr;ic RyO;! of O;associatiOi6O4;on6IO;c2WKiO;nforma0LW; Prey O;chaU1ru77H;cPjOmi76Y;ohN;ap3o76N;ac3V8entric603; 2W2a ro0Yd0UeXg0K5iWnVoQrikh ya75Sshin imPtO;i7l5Q8ri3FR;pa6R3;a,cidePme,vO;ese3QF;! ofOs17F; indigenousO; p4UZ;ady golovk4dy tarta5RN;tal pier4UIus; 0Galogy28Ulia0TXrWsis VticSvO;aPiO;eve l6E2ève bujo7E2;! coO;nv1L7; Pally modified orO;ga74H;a4A8d5G6e6RV;di77Bflood nar2U0m3CLp-o1E3ro6CE;aOic14N;lStiO;on Pve aO;dversari54Hrt;aOiv3J0w9x,z;lp63V; Qized Oplan o7BU;aOlinear5ZC;nxie5FU;agreement on tariffs and4YIcertificate2QXdXeWhVmTofSrRsecretary of the cO;hinese com2G7ommunist partyO; oO;f t0RD;ela4PF; the armi3f2H8;an29Yil7CSotorsO;! ls-based sm2I7;osp4XP;ducationYMl0UY;ata protection re132y3MX;autLb155h7Qk6STrQsPtOwi4WU;h2JEie70D;a74Mim693;ay4VYoddenb3BM;arm2N5erO;! O;dysphXKeq2SDiOro7sy6EG;dV7nequality6KJ;wl6CJ;a64Dma Os672;arte24Bch1j7CB;at4i raubMlert grindel6C8;co,ger 3G1s634;ard mousa751e aku76A;fen57NorceO;! n7C4;k 1STly,naWMtha O;ar79ZgoviO;nd7B4;box 5YZing56Js O;of67W;b2Tc2Sd2Qel2Pgan b2Oi2Kl24m1Mn1Dr0Hs0Bt07uYvUwa4yRzO;a Opr6TD;ci77PsO;tr6Q7; P-friend6YPatri maOniggers from outer28B;ntG;m5nigger association 3KTsexual pract6RH;in Orilo princ6Q3;andres5bazu42Rleath2V2mPnOross51Kwo7DZ;ews6T5;acle7DXci587;g1KMl39LrVssRtO;amOe8; ada73Fa buO;dd62H;'s5YGian O–seidel 7CG;bPeli2BHfu6YLiOp6U9quad1YL;ntegrM;e7AJl6TZ;i 592;ePling3HCoOta62Hwick71D;-6GZra615;n matarPNs mc3FVway O;ar71Vof6LI; Ql37Mo70Npar noé,troO;eOintestinal t2Ypo7BI;nter5JVsophageal reflux6UL;cPtO;ur3OV;ha77Io4Q9;a0Iden0He0Df5P1g535l7DQm4r08th 07uda06y O;b01coZdou7AMgYlWmUnToldm76Opayton6EPridWYsSvaPwO;ald72Me5N6ilm7DL;lenOyner3JO;cOti6;ia6KN;cott45Nini7BJ;ev684um1;ca67Yer2DPoO;oBrt2;a6RKinO;ek0;en228li5E0oet6AIyg6OT;leOop0;!m1;aQet2K6uO;rgOsE;e7BRho6UX;rl7AM;! indL0;br72Oje1PS;etQison kei5IOoHyO; O's m7CR;kasp5OSma3I4shand758; dilla295t O;hed65Emo31K;naPth baO;le,rL;! freO;e 77N; of 2JPi8;g0M9m2EY;bare dōki-720da6HNes615gQsu,tO;tOz; c759; Ses,nam s5B4re6sPubai kathiO;awa707; of784tO;aOer disci4RN; r5BL's paradi7AM;ba8of 522ra70D;al abdel04b01eSi3C5maO;! Q-O;aminoOhydroxyOray b013;butyr34K;co64Hd441fu6WYrK; R+,br6I3cu5DWm3BSr,sO; workPtopO;! short squee491;sh6JI;boyPchanger63Je5Q7fOjo4YPo79Rth4UB;re684;! O;advanceOcOP;! 5EM;iPlO;er's4FHi8;a 65Hno3MG; na36Z; gad7C0aYba,e XiVlPwKápagos O;i69Nt6B0;bla3T2eRiO;c 5UCpoliOum; cO;ampai6QW;on,ry of sovereign stateO; fla78A;cia5TJleO;e,o galil6IQ;anne hu794go4H0;ctRdQh776nPva6V1xyO;! q75V;thD;riI;ic 1XDus;aQji5WAnOus ma6KJ;-of-functionOax; re3FL;! h07S;iya70R; garcía be35Ds; elm5RIsdeO;n 3US; 62Fha 6V5;ape2SKby giff6ZSe ne61Sle stev68EoZrielOy hoff6T9; U'sTaRlO;a wPe O;anw9cartWNu6LO;il5YG; hO;ear77J; inf5CR;aubLbQgarcía már31CiX9j395maO;c77PrtO;in5N0;arbo6S7or7B3yr6;n54Hurey sidi5CI;co5Y7dr4LPea6R4f56Wsp7AY;m32Dprotein-coupled6P9s1DC; is fo3KP-N6aJLbi JKc JDeGUfGTiC2jo78Aka twi77DlA3mA2n9Yo6Tps66Wr14tse all-world index 5D1uXxx,yVábio coentrUéRüO;hrerOr eli78X;!buO;nk0;dération internationale de l'auOlix auger-aliassi7AC;toO;mo4CV;ão;odor dostoOre424;e5MEye5ME; 0Tb0Re0Mg0Lji0Jku0Fl07mio kis6E9nZrXsion6P8tOzzyCK;ana76AsMurO;a72GeOi70R; Qs coO;ntO;ra6LH;combat aiG2d6A2nostaG4of O;an expanding6UJe6K9the O;indianOroyalO; na5NG;oseOry fand6P9;mi5XK;cTdamental Pgi49Bi6NWkO;!y1K6;iQrightPtheorem of cO;alc34C;s 6HT;nter6L7;hMtional O;g6RDp0Z5;a 6G3gencio bat6AIlO; Oe6U1metal aQ;brRh781metal O;aOja3HH;lcheO;mi76B;eakO;fa769;o6EFshima O;daiichi nuclear Onuclear6Z9;d6Z9pO;ower2RO; tOan,t5VJ;e30Qv;a59Fe3;l QrtevO;enO;tuG;ceCiOo6M4;nj61N;ini'Oo5UZu;s 48J;manc4GF;a2Xe0EiXoPuOédéric chop4;cto77Gits bask75D;do bag5K6g,mRntPstOt,y gutierr71Vze6P2;biHpu68M;-end web6HAend and bacOier2AN;ke751; Oso5TQ;dusk till JFhere toOthe earth73Bup on poppy 4B0; eO;ter4VE;c74Eda02eTgSsiRtzO; Ol2KI;h46Qjoubert duOla8we6O9;ques6;an6J0;aHg;dQndsOs71O; withOh6KR; m5VI; Rrich O;e2EZhPnOpa330;ietz11T;ay65I;chiO;ck5; kah6ZQy night O;di3PHfunk2XZ;aks and g25d19e0Oi0Nm0MnUquencySsPyO;a a3ESja,r;h off the Pnel O;e03KleN;bo6TU; 5OU-sO;hift ke5CC;ch RkiePulum of prepuce ofO; penF; de O;jo8;a0Abulld6ISc07d2PDf01guia6TEho6XFin00la6GJmon2QWnXorL4pWrRsPtOwars of 293;hird4AWoa74Q;econd4AVouthern and antarctic l660te6AXubmarine surcO;ouf;eOivieG;publicanPsi2CSvolutionO;!ary 5QM; cO;al293;e6E6olyn5H5;aPewO; wa6WX;me,vy;doc3UZvasion63Y;iRoQrO;aOi3;nc;reign le5RBurP;fOr1A5;th4AE;ampaign in egypt and4LKoOui5R2;lOm28N;onial 6SP;cademy of6TPir and spa4NGlg2CSnd indi4MUrm2UR;anezum4Y3m multipurpose6N8;burg im breisg6LIda p5Qk6HS; 01b00cZdomSlanceQmOwaB;aOi6S1; agy5NFn d3TXsonL; mOr;arketp6QH; Q-O;class littoral cO;omba5RB;caQfront 6OKin5Y2ofOsh6J8wri5EU; sO;pee6VE;ucD;ad,ode4NH;sd;and open-sourcTcity of dSdRfQg3XFpapua4W2soPtOwill156;hr74P;ft6YXlo;aCr5LB;ownload man21W;anz62W;e 5RJ; 06d01ericRriO;c49Mk O;bOneij;ac3TE; WkO; Pa mandelO;ba6RB;dougCLf34At6B7wiO;lliam iPnslowO; ta23C; PiO; Oi O;of p62Q;for5RY;ie Py O;fazbear's pizzeria5O7kru2GP;fri5HIgPhigh6ZFmeOprin43Cstro6YI;rcuL;ib5AZ;aWbaCdV6gVhUmac38Uro6YVsRtPvanv6CIwO;a73We72Wil175;atascOh3YOru5C4;ioB;aPcOirie6MA;hne5LU;va6O6;am68Zechi6OK;wyn6;ga4nd georgePrmOst3RV;is5; wO;ea56G;ee6VS; f6XKct21g1Zkt6M5me 5N3nQsi0ternOud;al birth order and male se0SFities and soroO;ri70O; 1Uc12kXtz f3TTz WçoisO; Q-henri pRe O;bettencourtOh266; me4D5;dPholl01leg3X2mitter4HIpOtruffa4ZQ;in3X1;a359uO;vaO;li0;beckenb4V6ha4NLjoseph i50Ek543liszt,sc57Zvon pap5; 04-walter steinm03a pot02enstein01furtZiRlinOs; 0ZJ's lostO; expeO;di70Y;e Onc53X;a58Db4V5edg9gPjOmun17Tv0TI;on759;oes toPrO;an5ST; hO;olO;ly6BU;! O;a6SWsc4KM;!'s4P;enH;ei0;abag1VWb0Ac08d07fa6O0g06h01lZmiYoXrUsRvQwPzaO;ne,p097;e5U7h3A8;in6OJ;er3GBhePinaZ2omO;erv5ZU;er1;ei6T5osO;enO;thM;ce1z;ll0r;aOloyd 5DPuc74M;m0X5ng744;am0erbertO;!'s O;childrenOdu6; ofO; du6;atli6MJehLif5UGoBr4WD;arabo6O3il4FJux;aOo6VO;li,pG;ru6BT; weer0Ee03his02iRk QoO; O-4JPist4IB;ne6SIzeffir5GK;kessié,ribéL;a,sO; Pco O;fr3WJgo6BYmacías ngue6WDpiz0ZM;bUcTd3U6fRgaPi2BGlaOm5YXngann5VMof as6URxaV3;wr71L;lt2ry O;po5RR;ord copOuku67V;po73I;ol3DDriJ;ac2;e t695i8;! XsO; TcO;a Qo O;barac5SOsOt2MX;chet315;aSVea5W0hOw3W3;ay33D;beanOconr5RAde la 58Wfi5JOha,mcdor2QYshand ky4RH; cO;oba4;in the mi04Una5XD;wi6ZN;dres649jOkra3TTlebo65Qtarke5ERw05S;eff6UP;gl0DAile O;stat3IWx6MZ;al,i2;c2Nggy4E1ie2Ml2Kn2Jo2Ar0Xs0Rtheringh0QuWxOyle's5X4;! QcPtO;el,r73O;at641o6LM;br5TUc5LUki6S4nRsO;earchlPpO;ir6ZK;ight0KW;e6U2fl52E;cault pendQNla,n0ErO; 04-01ier 00tO;eenYhO; Q-wO;aveO; femi6S4;cTgeYJinRrOwaC;utteO; cabO;in6Z7;dustriO;al 2L8;ru5K; w6RLth a83;se6TYt0FW;dPstOwheel66A;roke288;imensional1WY;asian ti6VBhQl2W3noble trut4J9sPtemperam6Y3weddings and a fuO;nerM;easons hotels and res3YIy4NK;illsRorsemen of theO; aO;poO;calyp70V; tO;ourna6CF;dOtain4A1;atOing fathers24L;io4K1;ay 5RC;silSterO; P's home for imaginaryO; fri50O;thO;e 68J;! fuI; 0Yb0Tce 0Sd0De08g00mVni61VrestTspStOward6VOza 33D; kn63Ah 42QnitePr1une favoursOy-seven rōn4; the MM;! O;battle4B3w19L;ok5; gOal-KD;ri4LGu57W;aldeRic6ZAula O;e,oneO;! O;c9eng6OX;hy5PD;eSotten O;rQwO;eaO;poN;eal6ZU;d iPtting sarahO; ma371;n 6WP;ign Pnsic37CplKsO;k4t wT6;directPexchange08Srelations of O;c3ORi69Hna6J5ta5K5; invest6BF; Oh04I;bron6NJcrown v00eZfYgt,mSpRra6JXsuper du6UZtOvNA;a6MKhPo11MraO;ns6XN;under2E;in6IY;oPustangO;! mach01F;dPnd5MUtO;or 5RR;elOular26N; t;-53Ji5BGocD;-53Icoboost26KsB1x08F;ictK0;i690majeuB;esPidden O;ci6UJpl4RK;!' list of the O;most valuable football clu55Mworld's highest-paid athlO;et3;a few dollars 6TYhOlo68Dwhom the bell t0SN;on6XD; fighte30Jb9dStO; QballOwe9;! O;i5FWleague first 4JFp6P0;bin6EEf34O; Op6YN;and Pdeli69Ui4RSp0G3sO;afety and standards authorit1FDe1HU;agriculture3V5drug4AT;d6OTt awe1W7z6Y5;aHie à de5P2kO; E5loB; gr70E;al lRus O;fPhomeO; i554;eat551;eng6IA; Oaf6YS;fPher3LYmOsc9;ag,ini6S5;al,ive-s22Xnc; 67Bo62D; 4N0a11cl,e0Vi0Qo03uUyO; me6UI-by-SdPTing PnO;n 44V;a6Z9dutc6I8l039spaghettiO; mO;on6PT;wiB;i1HIla 172oRsheQtOvoxa5GPx;e,tO;er 69S;d 6TW;rOxe4IN;escenPi6oantimO;on2S8;ce,tO; la55O; 09ating-point a08o04p03rTwPydO; p1BW–warshall3UI;c6SIerO;ing2HUs O;for algeOin the att6ZZ;rn2; de la459enTiO;an RdaO;! O;ke5S1m1p2H5sO;chool for 3XIt4S8;munt0YBze6QE;ce Ot malou6XE;andPca2L9faivBhOn1IBpu6T0w2S3;en0ZN; the4DT;py di4YDs;d Qr O;and ceilingOja5BW; fun48B;my6H4;rithmet6ZI;ri6X4;ckr,ghtRntQpOx6OV; Oka6Z5;or fl66Jwi623;! water 2VEloJ; of the nav5J0pl1;ab645etPmi6QFsch–kincaid readability t001tcher4R8urO; 3WF-de-lF; fQwood O;mac5RZpark racetO;raJ;ox3;c,gYmWnVppTshRtPvOx,yi8;io bria5KLor fl62R; e68UironOli3V2ul6W6; bu3AN; Od5D3;go447me304th3R4;er,y O;bi6W9;de6WInery2B9;eOin5MO;n6KMthr6DF; Pel5F3s of O;eu673the confederate state357;c63Tof O;aTbr0L8c0L6eSfr5CTge5O6iRj1SAmissiQnaY3ru5UPsPthe O;n3W6ph6LEs1H1u2PR;o0KUpa4;ssip3EO;ndAta6IW;ng6R8u66W;fg69Du2AH;a4Ab44c3Yd3Se3Nf3Ag33ji,l2Ombul2Nn1Kon1Gr0As01t00veQxOzz bu15R;atO;ion6XH; R-Orr;pPstar Oyear planBJ;ra5XM;ercent 1VSointed 0AQ;bedrScharacters in search of an ex6UAey3fRgu5QKnights at freddyQpillars of6MOstaOws;ges of gOr4N2;ri203;'s;ami0WYeet6XYinger death pVE;oo6W0;b6U4girl rep3C6; VcUhPtO; of the north 0AHi8; andRerO; P's exact 5FO–yates sO;huff7;inf692ki8s2CI; c66Y;al 2PZ;alpine ski30ski jumping30;!axis5AJe0Lm0KstO; T-O;fo6XSorderQpO;ast-the-post vo6XNeO;rson3FB; lO;og6XR;a2Mb06c01frenc1GQiYjewish–rom4CRlaWmexica55Xn6QLoVpr4Z2reform6SJsiTtrPwO;orld5R0;anscontinentalOiumvi5EJ; rO;ailO;ro6SZ;no-jO;apan2LT;pium5QT;dy1ZAng65LwO; of thermo1EN;mOndochina5QQ;peachment ofO; d82;hRoPruO;sa5KH;nOuncil of nica6QVw;go5QK;echen5QJ;aQlo6WUoPulgarO;ia55D;er5QG;lk4C5ttle of O;buPeOthe m1YK;l alame4;ll43O;a66LwaB; Sa6JGbRfPhose of false6WLwO;at6KWor6MH;lyOox0MR;! 47L;a6UUiH;eOf4SPin the sCWm4LLos,pTZ;mblemOxtingui5CE;! f6JF;a On1GU;a6E5bPgubOsh6LA;el6EK;ru6VH;a08d01eZgerp2GRiWlandVnO; Sa6SEeRish Oo-ugr66Hs;aPc540defenOla64O;ce48Q;ir4SDr4RE;as o'c1IFgans 505;bál6SNco7j6TXwO;itt6FColf6TQ;! 36Wi3YU–russia165;sterre2C3teO; O-state4AI;diff5FWelem1BWf57Nimpulse35; O-structure 48S;a6W0gaIyoung canniba6TS; Ring O;a6QEdoLne57OyourO; rO;oo6RH;a Pmy ipO;ho6;gra6KV;l Tncial Oste5CZ;and social rankings of sovereign statRendow65MsPtO;e45Oim3;eOtate65K;creSBrv691;esJ5;cut6ANdeYfantasyPgo6VJsO;o2DWpa6UO;! O;iUtTvQxO;!iOv64K;!i64Jv;!iO;!iO;! rema5WUi;ac4RV;i64Ev,x;sti1SZ;wi5S4;eYiUmO; Ofar11Pma6G9natio5G5;diRgQi4M9no6R9producPsO;coBe6M8;er,ti2;enB;re6HKs3MY;bu6KRpO;i281po iO;nzO;ag6IE; Oh4BPsystem hierarchy68Ft mi2MDz3ZD;allocaPex026sy4W9tO;ransfer6BR;tion6QC;htOure ska6UX; S-or-flight1WerPing O;de5P2ga6UJwith my 5M2; aO;ircO;ra4Z5;cl3R8for my4RM;aVe,tO;hPy shades ofO; grE; P-O;generation608;aOgePXh34U;menO;dment to the united states co2SZ;! O;clubQwoO;men'sPrld O;c6BUr1FX; w11R;ldOsta 1MV; P-Os2T0;effect3E3programmable gate6E0;goMof drO;ea6S8;dler on the 5TOeO;! RlOsz; caPity invesO;tm6PD;st6I5;ti6DMw0QN;k's laws of diffu6FRtional Pus religO;io6BC;planets of the solaQuniverseO; ofO; harry po4UR;r 4V5;erPonacci5RYromyaO;lgA;-optic cPgO;la6SI;ab7oO;mmuni5TA; world endurancQcre2F8nna fá66EtO;! O;chrysler a2OOm5GDp6RH;e 65G;mp39Sp9A;a1Vbruary 2BRc3d18e15l0Sm0Mn0GrTsRtQuda5CVv0yO;en09VnmanO; d1KY;li6T0ty w4SN;s 1EFtO;ivDus eze6JZ;al0CUdinand 06enc pusk05guson20Oland men6C6m00nando YoXrQtilO;e crOiz0;es6CS;aRePis bueller's dayOomagne57W; o6B6;ro Ot;ro5TRs5Z7;n Pri testO;aros6AI;jutglà,to4SK;cactus wislize6IKze4F8;aOto4SI;lon5QR;at's lQen596iO; pOon;arad5TZ;as24IittlO;e 3S4;ás;de saus4BTiPmaOpor0LZvii 46O;ge2Z4rc6KD; of Oi of ar43P;a5IGbu31O;cingSder strato45BgQneOr6ORtan3M7ug3T3way sports6A5;c Ol;f5TPs0A9; sh4Z1hO;ua8; respon6QT;ale RinPke halGUmO;e fa6S5;a Oi6IV;ge34Umiss60B;ejaNFgenital muti58Yhyst1XOreproducO;tiv2MX;a ku5EQdsp9iPlOo5NE;at5QEow of the roya3AI;ciVd6E6foUn6E6pe Rs,x O;dzerzhi5OBlePmendels3M6sOyusup5QN;te4U0;it0;mPviO;! 461;as69J;rmA;a54Dty O;hOj6PSke6M9;uf6JC;dPling O;go6RW;baJforward156;eQorO; emelian5NWaO;! l5GA; 2E7rPxO;! e32Uf53E;aRico O;chie695fPgarcía O;lor5GH;el3KV;lStO;ed states of micrQionO;! of O;bosnia 2ZUma2RT;on50S; PisO;m,t6KX;bureau of inves1H1communicationsSdeposit insurance59Vemergency management 235governmRholidayQr0OQsO;ecurity3Q5ubjecO;ts5NK;s 16H;ent1TG; cO;om45N;r Tst of the RtureO; Ps of tO;he m1ZR;fi6MLsca6JM;a6PYcircumcision1LRholy nO;ame 1KC;and loathing inQfactor0P8of missPst6N9the walkO;ing5I2;ing41H; lO;as v21I;augs47WbaQda34SgPmidtjyl6JVpor68Jred bull salz47WsOzenit saint peters47W;hakhtar donet4PYpartak6OK;irondins de bord37Noa;rcelonaQsIyernO; muO;ni6F2;! b;i6Q2most wanted terror2QJten most wanted fugit2K3; c36b30c2Pfn6MThadh fa2Oi2Gke2Fl1Tm1In16q,r0Ls08tVuUvTwSyPzeO; cl1; riPe O;dun6KLwo8;plE;ad 4LXlty 5E6;e6PZic2;da,st,vi6GY; Zal Xboy WherTimQs doPty O;ac6NSliver67J;mi5XT;aOid6I5; sana shaiOh;kh; O's52N;christmas iOjohn mis6JTt6LF;s 3ZY;sl641;atOf7RinsomnA;tr61H;j5CQleonard 6KDm1;cZhionWtO; O-moving consumer06Oa36Fer-than-l6MYi8;c17HfQinverse square Ptimes at ridgemontO; hi6JN;ro6Q9;i6F3oO;odOu02Y;! reO;stau5LC;! O;accesOi4GY;soL;es,i6G8; 04-03aYeWhan66Iming57KnazVoTrah PsO;ca6DT;aQfO;awO;ce6GN;br3IB;e5NHkh engiOuk L5;ne0; sh4FX;ed z0BDs fO;ar3;dayRh O;kh1pO;ahO;la495; ca67E's law of iJ1;l20Pright20Q;cryPsO;ide of6JM;! new O;da6M6; XdangoWnTtasO;i1tic Py O;c014fi6KKis6I2liC0;beasts and where to find th5H2fOpl4FN;e6LPourO;! i6KF;ie fla5CCy O;andOb4WL; a21V; m3CF;bOf623s3NO;ing2WW;as,iOke jan3A1oti1DW;ly One;a30Jfe64Bg3F7mat4WGof StO;i3ree of O;british monarc459mu3KCthe O;british rOgreek2GW;oy2OO;bQdOj2G2;onaldO; tWW;arac3UC;a07con06kland05lRsOun 1OP;e Oifia3NS;fl5TNme2PXpositives and false neg0RPvacuum dO;ecK; Ra4VWen aQingOon sher67Nschirmjäg0; Ow5DI;in rev68Sski3;ngI;gu5GUoO;f Out1Z2;constantin5UKsTthe O;berliQwesternO; rO;oma4WP;n O;waC;aOi0AM;ig2; i5LYs5HO;! hea51C; OfI;ch5; ne6EQ;lure mode and effectUrQsal o6DYthO; Ole6MP;e3A6hiCno 6GW; u6M4porQuza ba2GAyO;! taO;il,le;t con1ZS;s 1C1;as60H;eUial recogniTGtPundo campO;az6C1;ions of ha6EUorO; 1BWiQy methodO; patO;te6CT;al,o; with tears of joy emo5O8bookPit,punch4FXsOti6N9; 357it6NK;! O–cambridge analytica data 6HM;messe65U;a4LGergé4WDiQle3G6rO;izio rOício werd67Z;oma5UO;anPo O;cannava6BElanzo6CS; 35Go carua68H;ommunity Oup;sh4YS;nu6H7s4EBte6JR; OR-OPaN7bN4cMDdJVeJTfJEgJ1hlers–danlos syndrJ0iI6jI3kI1lDQmAYn8To8Sp89qu84r63s4Xt44u2Lv1Ewan mcgreg1DxWyeSzO;ekielQra Otv;koOmi6DZp0XT;en5J1;! 08X; Os wide sh4GZ;cPmovement desensitization and rep02Cof O;h5WJproB5the35;ol6JD;c0Ye0Pf68Dhib6BTisten0Lo0Kp07tOxonmob5ZN;e03inct00or6IBrO;aTemeO; Qly largO;e tO;eleG8;j4B4p0BZultraviolet liO;th6G1;cellular62Oordinary5E0sensoryRtPversion and introO;ver68F;errestriaOor5AK;l 6M5; perO;cep6HZ; in tPionO;! e23C;he3KD;nded PrO;mina42Q;euclidean3H3plK;aYeVloTonentiaRressO; 4L5io6BAvPwayO;s 4D8;pn;l Oti2;d3E1fu66YgM0;itOratory data 1AG;atio6HHs of a young don ju1;ctPdia63Krimental O;m573roJ;ation–maximization3GSed v6A7;nsionOtriaH; of669;!c6I5pl4CHr5U3tic s2LU;ce PtialO; 2I8i6CB;ofO; g6LS;cutOne cerven5QMt0;able and linkab436iO;on Rve O;c9d67IpO;rodO;uc0;by firing0R9of O;nguyễn văn lém,saddamOthe romanov 5CX; husse4;aSess mortality in the soviet union under0CQhange-traded RlO;amPusive O;economic1X0or;ation 5GT;fu6HF;lib61Nv651;or6EP;a0EeUgenia medveTil QoO; m4AlutionO;!ary1AO;deadOe3PO;! O;ii,ri6JI;de5JX; 04l02n01rO; YcXgTnoHq6FKyO; breath you RbodyOday 6KPthing everywhere all at 0QBwhere at the end 6KU; O's talk2AL;hates chrFloves rOwants to rule5BX;ay30Y;ta5MH;lQrO;ande62FeenO;! a-class contai0Z5;ad3ow;le9;aOg3QA;ft0n0L2;-toed ungu3L1t 2LX; kni34Yyn O;g01Uw2NQ;a5R9babi6D3he5DZoOplu5AZ;f tOn67Q;he dale6AH; WnO; Qder hol3SUe5ZIgeliPnaO; l3HN;ca53Xne l3EC;al2IBgo36Sh1PGmRpe4S5rPsO;ha4K3pi2FE;achel 5R1odriO;gu3;cpC2o04L;aTbScaRgQlPmOper4E2;arie s19Je2HP;ee kunEong37;ab6GRre5;ssi634;ra6JG;mur6G4ndersson-d36W;c12daim4R9g0Uk0Tler0Nmill3SVn0Mph0LrQtO;hOrophi5JS;an650;asia0Eeka4YYip569oOyth4ER; 0Bc09d4YFfighter typ08le5VNmaYGn06pOst9tr5W3vision so51Xzo6;a universalis 5TQeOl3H0;!an O;b5FDcWdVeQfree trade1L8parlia5TVrPsOtheatre of2USu5UNwildc65H;ingleR5pa08Iup3QK;ob4;conomic PmissionO; stand5QC;ar6DQcO;omO;mu468;ebt 2G3;entrToO;lo2KCm3Y2nvention onQuO;nc5WGrtO; ofO; humanO; r4BY;al 26H;eOy5IZ;ws,xt;ho2;ha2GUopterO; t4J9;bankn4C8cOsi5YN;oiN;!n O;economic1C6lyPsO;tep67C;nx;emi69NorAr666;ice kennedy shr6DXu67G; R's PianO–lagrangX9; pa611;f3C7idOtotient 63V;enti6CL;anOme6HP;gl3;aryoH;enQène O;delOiones650;acro5Z0;e PiO;a co55Ocs,o derb6BL;a5PQle4W5oPsO;led60U;'nHV;alyptDhQlidO;!ean O;a3DHdi1NHgeYHs1CWve657;a61Bre;a carin64Jernal 0EhTiRoQrPsy,ta Oy3Y;j5HIp61S;i6FLuscan c0R4;n500ro;had59Kka,qO;a,u5JN; zu44Ga03eWiopiaUnRylO; ace40YeneO;! gOdiaminetetraacet2AS;lyc6HK;ic groupOog6BR;!s in O;eu5QWru5EK;! 5BXn O;a5V0em63Gorthodox tewahedo49R;l SrO;!e62UnetO;! O;fOover twisted pa6E8;ra6HW;bOke1ZMme54M;arry6B3;nPrkkum thunindhO;av1; Ool;c45Whaw5JFlW0peJsO;an5C4upl69K;re2JRsO;epte6BXunshine of the spotless6DT;ai m0Sc0Kkimo0Jmé creed-m47Yo0Cp09q08s01tPwaO;ti67C;anis pedYeUher TimateQonPrOuaL;adi6GXog5;ia2C6;d number of civilian guns per capita 3UUs of historical world O;poO;pu4Y7;ace315duf68UrHIwi4R1;ban oc2lle Pr expóO;si5Z5;g47Wha26DpO;ar0GZ;ro6GW;ay,ePieO; d5KK;nRxO;!-O;class aO;ircraf02;!tial23A;uiB;er5YSio0XWnPor6CUrO;es5EZ;!+,cricin42C;m,phagTteric O;naRpO;rogrammO;inO;g 5PE;zi67F;e11Jus;! callb54G;ape QhPitalopr6DPorO;t c5M8;a1BNerichia 3MG;from Psequences2ZVto the chaOv4O6;te5UV;mogaPn6CJpretOspider6CGtark5F6;orA;dis3NX;or1H4;a1Le1Ifurt latr1Hgo pro4RDi09ling haa69LnZoUroTtuğr4EQwin RyPéndira ibO;arG;kah baDCsipO;el6GG;roOschrödi5Z0;mmI;l f3E2r 619;geRs,tO;icOom1YE; Oa,i66U;a6GFh1RMlac4WM;!nous1RV;estSie Rst Oő rub5BD;hae3AXjü5YRkaltenbPrö3B5stavro bO;lo3KE;ru2X9;b3RJhu5X0l2X2; Oo fonseca carr480;borg49ShePrOshackl3GX;uther561;minO;gwK;c00e cZkRnOtr69Y; Oy3;a0FYbroc3BQd65grKkell2ROmO;or1u4JH; Ra Pson's stages of psychosociO;al5O4;eleOharla5GI;ni5BZ;estQjan ha30Zkillmo5YAper PsO;at6DCom4PC;suEQ;ra6DP;anM; Va Uh Oss2;fShRludendor5XNmQraPvon O;dän167ma5G0;ed0;aria remarq63Suhsf3FR;art5XQone3UG;ro2DV;d3Nlind4UZ;a09b08c01dZes63QfeYgarc51Uharris and dylan kleXid7liWmVrSsPtNRwOyu1;ei5FTi5CB;cPtoOyk3;l67Sne6BJu68Z;hmi5LP;oPudO;ol3IK;b584th;c1TJorecam4H0;d1AAve5ZS;bo6DO;lln0;a6icO;ke5TJ;aRhOlapton5RK;asePristianO; o42N; an0F9;nPrO;m5r,tm1;to606;a605enét,isc090lJRogo4LBrist6CLu3KE;da6CYnd35H;ine64I;bDctiPdiv2M8n O;ba65Fye19R;le dys5ZIon;g2sPtO;osth9F;er6ACmDuB;aOestr3TPin5FQ;lPtorO;!ial guinea48B; Os 5TS;rights amend5OFtempera5OF;c6EQhe04iRo4P7sOub,yc;il2on,teinO; didn't kill himPP–barrO; v3RO;cTdemiSgeRlQphan1B0stePtheO;li5Z0t;mo5N8;ep507;ne4AT;c,o5N5; Qanthic 3REtPurO;ea637us;etD;fi69KgamPme0QYof gilgaOpoTYr4B2;me65J;esO;! s4ZU;b0QJd5HGmOsD;erF;n 3N0s; 1Rc1Jd19e12field polt10gl0Nhyp5i0Mk0Llargement of 0Kn0Jo0Hr08s06tYumclaw horse sex1PKvUya,zO;oQymeO;! O;inhib0V5; fO;erO;ra69P;er QironmentO; vOa1SO;ari698;hox52Apas52A;erQhPity–relationship4XSrOwicklung 4G0;epreneurU4o6D4;al6D3ir1; the Rprise Qtainment O;o6software ratingO; b2HV;resource pl48Lso4Y6;dr3OFm5TIvo6AR;che50Wemble O;ca6A0le02V;iPonO;! 67J;cQque O;e5VHiOpeña nie5UVt2SC;glesi6D4;hedPo O;colanto62Qfer651; teO;xt;cOla gK;h2CKk mwepu;eagram o0HEio morri377;na5UMth15U;a,i;ac,d bl4K8gma3RF;andYishO; P-speakiO;ng6BB;al48LcTelectricSfootball leagueRg0QVlPpOref5O7wikip30C;e5J4ho3MU;a5L7iO;te0XK;! 4E3; l3KE;ha2A3iv4KGountO;ry6AW;! O;c3SSna56A;ergO;ei696;dina351mRrgy dQs O;kanterOünM; freed5RM;en4U6;aPy at theO; g5ZC;! of the3UU; TangeredSer'Rian6B4oO;crin26Vmetri4ROplasmic reticPrpO;hiN;ul5WW;s 5W9; spe23B;of wOti6BY;at60Eorld war iiO; inO; eu5KO;an5TNeSlave and exc3TErRyclopO;ediaOædia britanni50T;! draO;ma4EJ;yp67F;ladDphalitisO;! letharO;gi50N;pas4FF;a2Db27cure pharmaceutica69Mer21i18m0Go0EpSraanQuO;! w9lO;at688si2; haO;sh63J;a08eror01hy00irUloyRress Pty O;ne689;dowager ciOelisabeth46Fjosép587matil69K;xi;ees' Ome5V4;provident fund2C0state insO;ur4PV;e QicO;al eOi61V;vid68T;of Pstate O;bu2N9of67B;brY4j156trebizo67B;se63F;! O;jim3N0mei5C0no110of Sp0ZPtaiOxuanzP;sQzO;ong of O;ta8;hō;c2YBj14Y;na691t64I;! r4ABji,ry 43UtiO;c2on40B;aWeTiSyO; PlouO; ha1ZS;aw5HEroO;ss5VJ;tt54N;line pankhPr3YDtt O;s4KWtiC;ur67E; UnuelO; Qle O;béa6AQchr1K1seiO;gn0;adebPdeOm2BW;nnF;ay672;ap18Vbu4LOcXdVgUhemingTlOMmSpor2DJrRsQthomPwaO;lton2Lts2;as,pson5DE;am68Kto6;aduca2Z6ob53A;aNLo46B; wi4FC;ol55Z;'Ou1TF;ar4HR;hamberOo2MM;la4s;!lVnem5MPrO;ateOu; of Qs O;f5GCof the united arab eOs50B;mir5X2;abu dha44NdPgO;ra2NO;ub5YI; 07e 06iYy O;a4WYbUcompag5HCdShaRin40Bl080mort2N0os5JVrataj4KIsPvan3QDwO;a4L6ickerGF;waO;ll67L;mps263;eOic4I9;sch0XI;ePlu5TCroO;n4E4w600;ech66Itt rick5G7;aQe liPo O;aguin0GIest1SD;vi573; Q-romag5UVno O;buend4JGmOzapa69U;artín62A;clOf5AMj67A;ar5AZ;hi572smith 1XM;ci3EZnol4WX;aRg66TiQson O;c4QVfittip497rO;oyM;l lag15EtD;ld Oude toubA;fen1VZtabl65H;arReQraO;cer5QPerO;! e-jeDD;dde239th david61K;raO;ss5J0;ar proper63Wcs,il5KGnOs44;cipation procla5MWuel sweden0G3; 3Sa3Ob3Nche 3Mde3Je1Yf1Vgin m1Ui0Tk0Sl08mer b07o03r01sUton johnSviPyO;es g1ZIsi5TN;ra4VZs O;co604preslO;eyO;! O;a5LDsi25D;aQePie O;fi4OP;vi0; OgaH;lOpata57B;anO;che5YE;ic of melniboOo64M;né; r1CBhimPise mum4YHn muskO;!'s tesla road5YA;! pO;ran5WA;er58U;a 05eYiOor5D3;e WotTpOs 3WQ;sRticO; curveP-curveO; crypt61P;! digital signature332;e,is; 5KBt O;gOs5GYwave49U;ou66O;goul5LTke5Yrow55Sta14X; Sn O;bQdegenPhol2U6pomp4TOwO;hit27Q;er3;a60Iurst56C;f434ki8macpO;he5ME;baliOf1YAhu5RIpur1UN;ns5CQ;!an baggo5YVe so4UC; 0Na0Le w0Khu ka609jah 0In0Got 0Fs0Bte dange2Z9ud kipcho5PWzO;aPebeth smith fO;rie53F; 06bethO; Oan4N;b03c02deb5M1fr2B6gil01h00iZlYmWoUpeTsRtPwO;a96oodv52L;a14FulO;lo5VW;chuylerOpr02X; ha53V;r4D8ña;f Ols5;ru53Ryo63B;a2Y6cOiF3o2YN;go10K;a5K7ecompH;! 5N8i;o1TBu1HO;be67Dli3;hai vasarhel3NYoun54X;anks60Ler4ARowes-ly2áthoL;cOdush0H8scanl5ta140;ou5VA;abeth PeOha cuth5PJ; c28Z;hass051mOsh5VC;ax4XTo65X;ne65Wsp579; norde3S0or doO;nah5V8;blue al2T2mOw0WC;iELu32K;iesI; Os kote66S;kaz1;a5OLc2CNm41Zro5ORwalla5V4;ar5J2;!eO;d0OCn O;li61V;anor 13ctWfa5QAktra3ZXmentary Vna UphantSusinianQvO;at636enth O;do5T6; mO;yste5XP;! O;bi646seM;ana5E8bashkiro559ferr3YBk3OFsa3P9;c3CJp4V7;ion0Soral count5HOrO;a0Pic0AoOum; h64Oc08encephal5ZSl04mYnPpO;la66Iop;! TicOvo3T1; Oa;ar61XcPdance4RBm4RCroJti2E1wO;asH;igar57EompoO;ne5PS;configu61NmOs393transport cha4;icroO;sco5U7;agnetOotive429;!iO;c Osm;f4HNiPpOr2NJsp3L0;ul64A;nd4YC;ux,yO;sisOte;! O;of1Q0;ardi5Z7onvulsive 1AE; Ral Pity O;g33Osector 5DN;discharge machi5W0e5I6imp1XQresistivity and condOwi5I7;uc3G4;b5ZCcVdipole mo5FLeIf4HBgTlRm22VpoPvehicleO;! b5ZB;t5PQwerO;! t3JY;ady5YIight orchesO;tra4YM;enOu38L;er5P4;arPhaOur4TG;ir,r5NH;! use 3IK; cO;om06K; commissOs 5D7;ion 3WA;mon3STof aquit4TMpRrPtoO;mli5XK;ig608oO;oseve3RV;a2VZo4VV;n Pr fO;ut1ZE;he5XEri8;cf;a,e;gab57Rine Om,stic29B;bPmKpOstr5T7;ai5MZ;en3;cRdo1VVgre5QYmariQniPrisOsalv4F5;it64Q;ño;ac5S9;apitanOid;! t240; villainOstrakla5M5ta2EZ; r375;aPner johO;an511;cu4L6;d0DffelN5gVichiro o62Jleen UnOza1NH;sOtracht frankfu64L;atzgruRtein fO;a4VUieldO; eO;qu5XM;pp5;at4A2b12Igu;en04htO; 00-Xeenth dynasty Vh Qy yO;earO;s'4XW;gePwonderO; of4V3;neO;ration of vO;ideo game consol3;ofO; egy3ZR;nationOthousa4WI; alO;li4ID;isPqueensO; puzz7; en5GI;decomposition of a5JXvalues and eigenv2HL; al-Qetic 259osO; i48I-montO;réM;ad4SEfitr;om3;ali3IRgZoUyO; maulana vik5ZMptO;! 4XBianO; P–hittite peace O;trea5X4;aOhieroglyp3K3la5BZpyrami5SB;ir3ZP; Qn sO;chie7pO;en2BD;d3ZUnwO;od5H7; as15Tn5E1p1LKs beGY; english proficien01e ajag5KLfTi system parSl PrO;aim divero5TZen r2ZO;cPleague O;o6tWP;h5F7up;ti5YP;ectSiO;cient-marketOe QM; hO;ypoO;th5SA; 29Hive altr4QMs ofO; climatO;e 3IS;cy629; l2K8ga,l,naO;du; 1Rama62Od1Ie1Dg13i0Tm0Mna2FKo0Ls0Ju0Dvard 0BwOx;ardPin O;hu086van der s9; QiO;anO; eG;al5L2b03e32Sfur2F4h01iYjXno0SHsVtSvQwO;i3LIoO;od228; 5IHiO;! 5IGi5BP;e5TIhe O;black20ZconfOe3KKmartyr;ess5Z0;a5ZTcissorh50FnO;owd5;ames olm5U2e2JG;! 5I9iOvP;! 5I8iO;! 5I7;eOo36H;a5K7rr5KH;erna4USoOurN;nham 2H2;g2IHmO;un5QG;ardo savScationO; inPal O;s53Vte3C3; Od61F;e5HYge4RSi59Zj0VWpa2Ns0HCt5AL;er4;el,on O;barbo537st4C0;! p31ardo mapelli moz41Xm;ontonTund O;b4W2hQiPkeO;mp0;!r2KM;ilOusse34F;laL;! oi3EH; gathe5HDe TnPr6th O;pr3S2t0XLwha0RG; dže59ZburghPson caO;va5R6;! O;a5PAca4QJ;a44IbrQfPsO;edg10E;al5NK;ickeC;ar SeO; Orrin240;c0Q4of O;toO;mo2BR;allan p4NVbuRcay60Fd1BUrice burPthe peacef3ZDwO;i4Y5r5Y4;roO;ug3HQ;ch4CZ;ma,nO; Ps O;ze5P9;brOha5KU;ol4;a gö5DHie Oy4OY;alUb5K7cSgI4hRiz5KRmQnketi5QZredm1F3the7TvO;aOe2IB;n hal5;ars1ek55Qurphy5U8;aCo1P2;ib5JSoO;chr1;be60Uv1PX;aZb356ge4hYko5P1mWoUredTsPwO;est0ZMo60P;heer2E0kQuO;llO;iv1;re4;li5OV;'nOrgVG;eiC;cmOili0BQ;ah2;a1PBel5YK;nd lorraineOsn5II; wa1W;c0Ch0Bkhart t0Ama26EoOu4AN;lo59AnomOsy41Qtou3YK;i04y of O;au1CIb02cN1fr4EOge4Q1i00j0U5mZnXpWru4WKsVtQu3RWvO;ieO;tn5X1;a4IThe PorOuML;on5HS;e0T0ph5N5republicOs0ISu1RI; ofO; i0A1;iMLoMJ;a0No5SZ;aOor0FC;zi4NW;alaysA;ndOta5KI;ia,on496;aMPrMO;c Oes of2XC;freedom fPgOi1DI;row5HP;igh47F;ol7;el2id5KZl;hi,lesiaO;st3;ay,enPoOrahim rai5Q7;la,ny,ok; b36Zezer scroo5HM; 2VCgle12mon10r0DsQtPzyO;-e; pray1N0ing407on township weis markets164;e of doing busi09tRyO; PjetO;! 1L5;a,o4QVr4F2; VeO–west sc40Y;n4BKrO;! Sn O;blQcatholic chur5XNeu57VgOnew england59Ror0BRprom084t1AR;oldf49Qray squiO;rrI;oc;is5S3ri5NQ;aVcUend Tge4OVindiSmiRof5F0pPsuOtim5VM;ss5YG;aOru4VC;ki5A7;dl4WY;a 4PI;of 4E4;oast112;fricaOsA;!n 42L;ne2AT;lSthPwigO;! and the w5N1; similar54M's Oa ki5PRb09Jqua509s5SOwo5LK;magnetic30UoOro4EZ;rb5UY; 00iest known life fZy O;ac5F5hUmOslavs,world ma591;iSodern Puslim conquO;es5U8;e593hPpO;eri5YI;um1;ddle 58R;istory ofPuman mO;igr5RM; vO;ideo4BB;or5WG;greyRsOwaT;cPweatsO;hi5YB;rug5UY; t5S4; faOn1K4;rr5;! Os 5Q0;e32IfiO;ghting 5A0;commS3girls and e-2W2heOleNJ;nt5MI;nu5S2pluribus un5INstreet 097;'007-s38PaQ2bs 1KWc PXdPWeFVhFLi9Nj9Ik m9Hm9Cn99o42r28s26u0Ov0Jw09xdi534yPzhokhar tsarna5PZáil éirea5G6éjà 4BBüsselO;do1W3;a06bb34Qing5UQlan00naRsO;autonomAcalcPen5RKlexAon 1IEtO;h4SFopA;ulA;miRstO;ies in chinese48KyO;! O;warr29S;cOte; O-link1PAa1KP;host configura5EIpMXrOty1E9;andom-O;access 1YZ; On 4X4;ar4V3b1X6mPo0EEpe5FQs0JWth3XQwO;al5OX;cdPiO;nn4YL;ermo5OE;n ca0OBtlov pass167;aSeezil z0K5ight PyaneO; wa4KT;ho1WVschPyoO;ak5U2;ruHul5PN;rfPyne O;has42Vjohns2IY; Oi5NL;fOpl3NO;ort57W;dQorak kO;eyboard lO;ayo3R1;! regO-v4IJ;ion 3ZV; pon14a0Zb0Yc0Vdley1HWe0Tff mck3EUg0Rke0Jl0Im0Fn01ol0I6p00quesne spy 59ErXstTtch Ošan vlah51B;baby panRePgOla55Bov5pe537r4L4sY0;olden0GC;ast indiOm5I2;a 4NCes;ca4YA; 0PEin Py O;hiCspr1S8;d2CMh5O1lance36HmOpoi523rh3UK;i2HTosko409;anPb1ga,hOi1;am 3PF; dur29Wd 5JO;o5G5uytren's contrac5J8;bYcan WdeUeRgeon fighter 2EXia11ZkiPning–kruge1C7s scO;otD;n' donu5S4rkO;! evac3MW;! Od4;ii,mO;essi5MD;e,r mifO;fl4;iOj5U2sand4OT;da4R8;ar'PlO;ane2JV;s 4UE;bPpO;ing in dix5TOli8; and du5Q6ledore's0Y6o;ce de l52le129o3ESquer salma1é 2Y3;! Ps O;in05U;blue devils mRel2SOof Oun4DO;arPdevons1S7edOgraft2norfo1OFyo5RS;inLV;gyC;enO;'s ba0HE;a rOo8;ad9; di3L5lO;! at di064;kOti3CQ; Oduck4JSt0W4;d377ty1CA;ai5J6lin3D4rovn4QOst15A; liRlPne O;al2HNcMW;-clutch09GsO;hoJ;pa4OK;t 4MS;chingOhk,tv;his 3QR; 1Fa0Me02iZoVuPyO; i5UHad,waC;dgeSg Rid,mOze;! O;and Ok5RI;ba5U2;ca3NEenforcement35Eo30F; re5IX;it du seigne5BEme2K7pOug5S1; Ob4W8kick murph4NN;be9dead Osh0HU;di4TT;b00Ell4G2nking Pving O;miss dai4GXunder the influ5SF;the kool-a5SBw4K3;aWdd,sd5w Oyfus26O;bScarEgRloJmPpOs3II;e59Bi4QZ;a3AFciO;ntyB;od58E;arrymoPlOre3;eds4HC;re5O2; de matt4GAdVmO; RcaQworks O;animationOd5TCpi3Z9;! 1LV;st,t4V8;ch1Y1of the red Pp521s40GtO;he4JN;cha5OL;lPnoughtO;!-4XS;oc5KA;c0Cft0AgVkeRvidPwnOx the3MOymond1X8žen pe4SV; toge5G1;a munnetra kazhOi39K;ag5R4; QnPo the rO;ul0;ga5RV;beCdi5M4eq3KN; Yged acrossWoOunov sniper3VF;nOon,stea din t51D; O's dog5M9ball07Jf3QBh1YUl48Is' d5;a5C5ballQquestOsc39J;! O;i5PXv,x535;! O;fighteOgt,sWZz;rz; concO;reH;co2EFme tQq4PSreducO;tioO;n 3V6;o 2WP; hO;or5S1;oPulaO;! unto5S6; mO;alf4H5;congo 4N9disreOpe2XR;spe54T; 4Nb2N8c46d41g3Uha,ja cat4MMkos shipwreJl3Km2Kn14o0Xp0Vr0Ks,t0HuVveUwPxO;b4i8ycyc5GL; jones industrial379nOry,si8; s5CXloadable3WKtO;em3A9onO; aO;bbE; camO8;bleZgPjinOla;!s5GR; Thn3NAlas Oray1I7;a3W7bRfairb34KgPhOke4IUluVNmaca2RMpi5K8sbd daunt19U;ens4LZod5B9;reO;sh5PY;ad0oo5B1;co48BemN8fQhutch4OIl50ImOpeTD;ccO;luB;lK3o5QN; V-PcO;liJ;entry bookSheadedRprQslitO; exO;peri52S;ecision floating-point3AA; e3Y7;kee19F;asteroid redirect0BSba5RLenteOfa4ENindem3F8jeop0T6;ndB; p194-comPa,s per O;in5GY; buY0;aVemiUiRmam34EoOs5OUt215;hedoro,ro,thy O;danOkilga4ZHpa2JEstra3BEth2L0zbo21H;dr5A9;an Ps Ot5K5;dKl5K5r3G3;el1AYy5FF; mPM; Oem2;and the lost city of 3FAthe exO;plor0;a490pO;elgä5ARle17Y;-w4ZQdle champion island457k5PTlittl8AmQrdaO;rOsh;sh1; Qer,g2ILsO;crQ4day O;c59Yru7;at your2QUete1MAm4JVpa4XS; 0O't 0Ha0Ab5RYca5HTda09e05g zh04key02nQovan mOtnod 51W;cna41ViO;tc2UX;a Ter paSie Qy O;ha3W8os27Wvan deO; be4OV;dar508m19Fwahl5AHyO;en5L7;r5LDss;brazi7dSmRre5MYsu4EAtQzO;uckO;er5AC;ar5IQr4F9;il5PJu3V8;ix2o1KE;! kongO;! c50A;uo;rQtskO;! pO;eople's2UB; keb3I4;! 5O2;lOtell4HH; l3DXd O;cer4QFdRfaQgPknu59Ao186pleas5OSrums2VIsutherland5KPtO;ru3X8;l29So5EC;g5is2;af4DUuJ;breat5FLlook TrepeatSsPworryO; dar5JO;ay a PtO;ar5G9op believ1GO;wo5OR; y2C;n5OSup;am01b00cZdel3IVfYgWhUjSkRl4PJmQqPri1W2shO;i11Cu5QG;uixoH;c4IYe1KH;i8n3UE;oOu1;h5J7n;eOuff5DV;ck,nlE;iOu4D9;ov4P0;e38Rr2V5;he15GoryeC;lu58Lra4MB;ec5F0; 0La0De09hnall g1U2iO;nOti1;a06iRoO; O's0T4es;haQEkO;ir4RZ;cRk Qon,que O;dStO;h2LGi2UK;myster4OH; SaQk O;cr4IDdOr2MO;un6;!n O;o43Sr4EG;cQh8Dmo1ECpOra3GUt2S5we5MU;errott5MEurO;ceC;alvert-lPhia3SGo42PuO;mm5MS;ew4;nce and sub34Ftr565; of thQnico de 0MXsO;day 09Ktic O;g0RKv5NC;e 595;inOntas sabonF; Q-O;driven 552specifiO;c 4Y7;nameOrQ;! O;rOsy3R4;egistr9;delOpéri1H5;ui5NY;by Wemite is my VlSoQphO; Oin;lu3AIzig1XH;m4QAres O;o'rio5MRum2Q2;arOfa5OMy pa0F9; 54PsO; t2LT;na5P7;atm5H0d7St1ONvi5B7; ReQgOv4K9;er5I9yO; s3NZs3NZ;co4;b3N2day afterno2me5ARtO;he boun1WRrO;ai5FG;ecaheRge Oi f3IOo;chaOv472;lOrg0;le57J;dr2; 01sFtorPumentO; object495ary 5KE; OaH;doXegWfaHmVoRstrangeQwhoO;! missingO; epis3MQ;! in the multiverse394;c239f O;mPosteopathicOph430; mO;edi4CM;anhatt1;gm1;li0F1om;aPhOma3U4;oll2V1;nt7;androids dream of electric sheep?,it Rnot go gentle into that good1DNtheOyou love your mom and her two-hit multi-target attackP; rightPy know it's christmaO;s?; t23R;to 5KOyO;ourO;se4TI;aOce,epropetrovsk man3V5iep0s over htt4YQyaneshwar agas5CP;! O;methy44VreE0sequen335;a5OBc delRitrOx;i Py O;mMLrybolovl5G8;mendele5G7shosta2JX;ore1;etca4T9; Rango PiO;!bou4AHmon houns4FH;rein4UDunchaO;in5J5;khal5J4po53Zqu42Z; bonaventura5Ka4Sc4Gd4Fe3Tff3Og30hydrogen monoxide paro56Ujkstra2Zl2Pm2Hn26o1Zp1Wr1Bs02t01vPwa5EMxie Oy3D6zzy gillesp5LI;ca5GWd0UX;erXiRoQya O;bhOkhosla2C9nare3MJ;ar4A9;ck ori53Hrce dem5H7;nOsionAX;a5J9e O;cQright O;ofO; k5KD;ome56J;genceOs4THticul3TZ;! 2MW;a von t22Gh0;a0Rc0Gguised t4ABh0Fjoint-set3E0k0Dney03pYruptive innoXsoTtO;ance0ZDil443rO;iOok5KT;buted Oct a590;c0C6leO;dg0;ciative identi3O2lution of O;cPtO;he s05Y;zechoslovakA;va5IR;ensa46LlayO; Opo5N9;aspectPreOsi2K5;so15I; r31N;! T's hollywS+QlandPtoO;on3FJ;! p42O;! hotO;st9;ood3FF;c03fa4EAjuQmedia and entertainment2ESpPrOtelevision3TJxd;enaiss41A;rin53D;ni5JC; uO;ti33T;a pa2V3onor5HW; joXoTrOw5L7;ete Oi0KE;cosinePfouOma3J6;rierO; tO;rans0NM;! elysi578gs,rd31NveryO; O+;cOfa4DV;ha1JW;ckE;bi33Gppearance of O;aeryn giQbrian sha3RNdonPmadeleine mcca54Mnatalee hOsusan1LW;ol1DX; lLJ;lle5BM;ac 06eWichlet2E5k Tty O;dQgPhOjo3QXw9;arLonE;rand4SA;an311eeds done dirt cO;he3LF;bOnowitz54J;eOlo310og0IY;nedi4XB; WctO; TedPor of Ov,x;nation3BAthe central iAJ; Q-energyO; weO;ap2;acyclic25Ug25V;c49Td35TmemoryO; ac52B;straits4EVwo4QX;delOeq3C7;ta 56I;hOlo,ole ant2XG;enhydra42DthO;erAo8; br0ONcleTde,gSmede4JInRphantinQrO;!a bO;ai5J7;e 3BY; dim4KLne war0KEysD;en3o jo5LR;ti1;aReshQgo,ner for4RHoO; dOsaur55F;e laurentiF; d'sou4ML; Rh O;ma3RCshO;erOoB;id1;ashPea4DEmeO;r0LPy0;erUK; s55Sash kudai17QeRitQple O;hay3KHkapO;adA;ar berbat4JGri van den 0SN;bag dQnsionOthyl sulfo48H;! f2JVality rO;ed4DC;ar1XF; chahtWaUdo,eepSip Qjit dosanjh,lPma rousse52Wopho560raba dilmOwale dulhania le jay1ZI;ur56E;!ian whyH;k388vengsO;ark9;! O;f5E3r4SI;n yeşilgöz-zege4TXtedO; cardiomy1S0;a h595;'s2FE; a po4FOeorge541ga0AiO;mon06talO; O-to-analog 3YZis,o3EX;a02cZd2CEextrYimWmVobjectTrSsiPtw4visuO;al3H7;gPngle-lens reflexO; caY;na572;e12Pights 3I4; identiO;fi0;a4VPillennium copyright4VI;age pO;rocQA;em3;aPombat41ZuO;rr3RL;meG;rt,udio wO;orks40B;! O;aOghost 542;dven56N; d;'rent str0PLerential Pie–hellman key2ZPr4V8usionO;! of innov5D3;eq3ABgeO;omO;etL; 03drich b1CCgXlVppTrks bSsQtO;ary fOhyl e55Frich bonhoe3P0;ib0; ir55Mel O;e3XVfuI;en55;e O;ra5GX;ecO;tr5JV;etic44Jo O;c4G4ga4Q4lu54RmQri48EsOveláz19Z;imO;eo6;araO;do54N;anRflederQhardOin a gunf5G7;! with a veO;nge3XO;maD;other3VKtwO;oo5GU;ier drog50Fo;e,hen l085kPlofen3HCtatorO;!sh4V6; Q's sportingO; gO;oo57S;butkDcRgLUpo49QsQturp4vOwo4O5yo5EU;an Oerme4VS;dy4KGpa31S;ar467traw2JH;aPh4B1larkO;!'s new year's rockin'51Z;ve59U; 0Eblo i4RWcr0Dg0Bh09l04mond 02nRrQs4TOtoOz07W;mOnic2GA;!aceous31W;rh5CNy of a wimpy23R; fo5FSa Ve QnO;a agr2e O;f1LRwJH;cil35Wdisney 59JgRkQlaPmo0CKsaO;wy0;dd,ne;e59Xrug0;uerre56O;ch08Sdo5GEgabaPhy5BFk4ZRm1ONrO;i45Soss4BJ;ld2;dOis unbreak5DY;allas 4UGo5F3; m for 3VVectO; conti13GicO;!al O;behavior 0MUmO;at40X;ann c1LMnne abO;bo596;eo,nostic and statistical manual of mental disor3UEonalizaO;ble4Y6;it5IF;mir4JB; pi3MN;aQiPl,o7yan cO;ha5DZ;bu ninan 5Drubhai am3OZ;ka,mp5E1nSrO; 503mO;aOe3GJ;! 2QWcO;hakG;iOush5B4; ha2AF; 9Ka83b7Jc6Vd6Re6Gf64gree 4HIhrad5GZi60jan kuluse4DCkal4SEl58m3Tn2Ro2Op2Er1Xs14t0Xu0Lv00wZxO;amethaXtO;erRroO;amPmethorO;ph1;phe3Y9; P's laO;bora5GL;flPhOis48Jmo0BG;ol5AF;et4I3;so6; p4HMey decimal1H8; 07a06elop03iToOs;!lver dRnOps; Oi1ta4B4;ao4ZPf3B3lOmu515sa4L5;ar29Z;ig301; sriWanta5H9ce 5BXlRn O;bo4QXhe56Xn43PratrKsiPtO;ownse5D5;ngle58A; maR'QmanPsO; t4VY;! cry51X;s 35C;y cL; pras5CO;ed4PKing4PKmentO; 2JTal O;coordination3HLps3V1;da57Fnaga5CS;a335p41C;s exXtO;erUschO;e RlandO;-Oli5BU;classO; c2GD;baOma5CGtelek4VSw4Q0;hn,nk;aOi518ocanonical b56E;go3J7;! O;mac23P;eQroitO;! O;l59Mmetropolitan543pis25Ure1BU;ctPrminO;a4ZXi56S;iOor1G4;ve4LM; o0X2ali0DZc0Cert08haun07i00ktopZmond YpWse5GBtO;inRroyO; allOer; mO;ons3NT; daniel cre4IIationQy'sO; cO;hi5EK; w0EE;aci4XMerate housew19DicablO;e 5FS;do5ESho1FJtu4EL; c3UF; TderSgnOlu 2OY; Oated marksman3H4ingZH;pattPtO;hin50W;erN;a5G1io alberto arnaz 5BN;arn2QM; wa3QY;! PiO;fi4FBon;cOe3L0;li4V6;endants ofPriptiveO; s2ER; theO; s5EQ; ring des nibelu03by02eUmToSrPvla kirw1yck whiO;blE;en1S3ick PyO;! g1K6;goBh1HGlEJro5DNth3FK;n 20V;at3LNot mu1HH;a2HZk O;and the domin56VcRdeQjPkol3IVmu566pri26QranOtr3TS;daC;aco39Ret0;a4ASlga3PZ;a584hO;auv4iO;soG;!s1BA;ng5;aVeRleted uraVKortivo Pp v news group newspapersOth1J9; ltd;alavOde la coruF3;és;che mo38CndenOrsona2HL;cy inOt and independentSB;j476versO;ion3GF;rtmentOu1AY; s40Js0MI;do4A5ntO;ayOo4NL; wi2WO;a0Ng0Lholm 0Ki0Bmark09nVsitySverQzel O;c4SYv18TwashingtO;on4GA;! O;bronc565in524nug332;! O;funcOof5AJ;tional 2WP;is Qy O;dOl42Q;oh3IL;bergXfaWhUmi559ni31YprRqQrPwO;a82e4TPi4HB;ad0it0KAo49W;ua5BK;ag0iO;esO;tlE;aOo2IA;ste5E5ys4WG;ri4ZC;ka3JX;! 47O–nO;orwK; avdi466al-of-servi1AZm,sO; Re PoO;n 36Pv1;cOho,ri37Bvan 0XD;o50Tr1YG;didQl2C1o'08Wth0VNvPzO;ak400;illen0S5;er5DZ;el54O; xiao0UBueO; f2G7;li,turedOzi1DI; alcoh5CS;ar0Ye0Ui0RoO;cr0EgraphQnO;! O's sou5BCd 0MSo4MFym;coBda460;icRyO;! of O;au0PMthe O;n2B5u02X; tran0CVs of O;b03c02eu4LXf01g00h2SUiZj076me0E9n1LZpo569rYsRtOu34X;he PuO;rkE;un504w5BP;eRiQoOpa4w0KC;uth O;af3LTk0FN;ngapoB;xual oO;riO;en3TA;om0UZu49A;ndAs50Tta4XK;e42Pr04D;in55Vr3RB;a1QJhi4Y6;aPrOu1LV;az4PN;ngla3PA;aOitD;cyXticO; O-republican567;backsli4QDkampuch56MpSrepublic of PsocialisOunion0DU;m,t1JE;aPthO;e c284;fg4NP;aOrogressive561;rtyO; ofRV;! i5BT-dictatorship5BS; Pan maAlOur4UIán bich58K;itarized0NY;lova4U0m0XE;ntiaQtO;er,rO;ess 4EDious168;! with lewy bo2HA; deroz1ai Qcus couPyius O;th3CG;siN;grK;! 0Ea0Ae 09ft06hi02iYlWoVphiUroy StOu4XZ;aPoidO; musc7; Oru6;air 3W2b468f388goodr440;g47GlO;in4IO;! 5AL;itHnt58I;! Oa r1QS;c4Q8lat391optiD3;riumQverO;an5AYoo,yO; he4ZY;! tremeN;! O–mumbai expresswK;mPsO;ulta11S;et4ZT;! universityO; of O;te2LK;al527;unay trianQwareO;! confederate moO;nu4LD;gu3S0;in cylindrical and spherical coordin4YDm0WEs02B;dre 445nonyQonPsm,ty,veson figueiO;re4I1; s22A;chD; XaWc2enQinitePorestOt591; ke3A1a56Q; m4RAly may3CZ;ce Se2LFse O;iPof O;sihang14Vthe anci56H;ntelligenO;ce 0MS;m3C0research and development1BJ;ma56Iult mode308;jam Olep3F;record57N; Wbo samuIpOz0; RakQfa4CEika padukoPl transl4UJmi56Wwater horizon oil sO;piC;ne546; c4R3;insa2X9learningQpurple43Vrock gal0B2sOvein thromb3Q6w2RC;iOou4SO;lv0;! super samp536;bradley16Pdee raOsn3QD;mo6; morQeOuc50T; g2O5e pfO;ei3FT;oz;a09e02iWlaQoO;lo252mpressionOn37Kupl55M; sick599;n 3I1ratiO;on of the rights of man and of theQveO; pO;rogram4CJ; cO;itiz5;bImalSsionO; treeO-ma4VB;! O;leO;ar50F;! separ4TR;mbrist2FZntralO;a562izO;a55Jed O;aPex2PTfO;in3OD;pOutonomous24H;pli49L;pi3Q5tO;hl2;b02iWorQra Ot-trap diploD6ut31N;jo ru454mOwi4SA;es4YDo03Q;ah Ora-lee fur58K;ann woCch57GfRke52QmeQsPvan valkenO;bur53B;an0SGn8E;ad5;alc3WR; m397anRtO; Ps and creO;di556;ca575;! O;ve3K8;ie Py O;ry1;a4GAgi50VhPrO;e0CYo0XJ;arL;d0Ul with0Sn0Jr evan ha3LXthO; Rlo4GQsO; Otro4AQ;due toOof kris kremers and lisanne fro2; the chernobyl4YV;and state funeral of0Cb09cab for c08e3Y9gri4JJm07noHoRpQrow32DstOva37Yzo6;ar,rO;an4MR;a2SHro48O;f On the ni7;a00bZcYdavid b3HHelisa l55TjVkendrick12XmQsO;teve i1TOushaO;nt singh rajp32Z;arilynQiO;chaelO; j4AU; moO;nr3VE;amesPeffrey eO;ps496; co4ZF;aylee0R8hristine daceGleop2E4;enito21Grian w3JZ; sale4CDdOyr2KD;olf3XH;arch to the parallel world r1K7etM;ut564;ecomes h0y O;bOcocon32J;ur4YR; joseph stO;al4; S-charlesPa3DVdreO; h3E1; cO;haO;pm1;cQja1WIma3DRno0X4paul3DQstoPwO;in3FW;ck3YX;a4orC; theO; d1X7; SlPpoolOsh58Cwater feC;! and korg rea4JB;iOoJ;est pandemicsOft; in3IS;by dayl54TcRha53Yis50Wkenned40Hman'sQpoets 1Q7ri4WJseaO;! scrO;ol55Q; sw4W4;an d3M8el55O;bQhavilland Ola 1MAmorgan'sZIstijl;c2DRmosqui4PEvO;am4SZ;ee55N;r sdr54It;animated Rblack l0Y7co32DeQf26Kleague of super-Pm14VuniverseO;! animated original1WJ;pe539;n4HGx0G8;movie4RXu4RY; na8b9Oc9Ld9Ke9Jf9Hg9Eh9Di92k8Yl8Lm83n5Aphne 59r41s3Tt3Eu3Bv05w00x sheZyQzO;n,zle camoufO;la4PJ; oVbUlight savinTmond Ss O;go6of O;being25DoOt3SM;urO; l10P;jo2M1;g 572;rea3PK;f t1GS;pa54U;n Qood ibPsonO;'s27K;rah4KX;fr0U7oOw3IE;f20Bliv4OX;a2Re2BiPy O;croc12Wjones' 1XD;d Vesia TnQs O;c4OIen4GTguggOm4PG;en0QB;a mcPci resol4W0soO;n s41J;caC;de4YscO;hwarzene1V1;a1Xb1Oc1Dd19e18f13g0Xh0Ri0Qj0Pk0Kl0Em08n2C8o06p00rVsStQvise0O9wOy4TQ;aOe3CW;ll3G6y6;eOhewlFrezegu52W;n2Z5pp0;chwi3T3ePhu1TAiOo34Ppa3U4trathai4VXu2NE;l45Cm2ro56V;am1d3M7;aRe1JLiQoOu2PZyaC;bi4YUcO;kefe4XF;c58zz44K;sc4US;aRetr1P6oProO;d3YRw54O;l2G5rO;tn3TU;cko3YCrkerOsque4WV; rK;gden st4KZrt8NyeloO;wo;am52EccRiQoOu52A;rOy3;ri537se;scavi4O5;a3HHorO;miJ;eRiPloydO9u8FynO;ch4ZB;nd5vO;ings3YF;an,e ro4NTit4U6tO;te3SF;a35HoQrO;o54NumhO;ol4Y7;ch,eOre4X7;c1R6pp;as2us50D;c476r3LJ;aRe1HCil4O0oQu55Gyde O;piO;er54Q;cknEr136;r07JsselO;ho4NI;eSiQoPra0IuO;et55Qlpil4I9;g3GHw0;lOno54U;mo4LM;ff5st;iRosterPrOur4WQ;o51Xum;! O;wal4OF;lo,nch4NA;ig45Cll40L;astmalc2GBePin3AUobr407ra4CKuO;chov407ke; g4Z0nO;c404m1;aUhSoQroOu33U;n456sO;by,s;pOsta27Cult52Kver2SI;pe3GJ;aOoe;ng,se;ge,mQrPsO;si4NPtañe52S;raTUu42L;er2;aUeSiRl3T3oQrOurt49Kyr6;om38CucO;kn0;hm,i3n0MGrean2FJwie3XQ;eb0;c1Y1nOrko46P;-gu48Vio4MK;ddiIilElOszuc4MY;dWEe;lQrPttenborouOy0;gh4XS;c4NHqu45L;a4LNlan c3QZ; QedOy boy3Y6; dO;ig511;aZbYcVfUgTlRmPnavOr1R0;ar4SF;atthewsOccaLust3SL;! FF;a3XHeO;e tr47Bge4BJ;ah1ro2WC;i007olEr1WE;alPhO;app4DFis036;ho539l1WP;aut44Oru3JH;nn4ZIr51W;nteOo 3BB; a36V;ghter Ophin0BN;from another2MSof theO; wo48Y;aUe PuraO;! stramoKC;aPforma2GVof birth WZpa4Z6withO; the0A1; 4SRnd time notO;atO;ion IR; QbO;ase Or20H;n268sche4VO;an3HUcQe4GZlink l4IVmi4TSsPty4RLvisOw0XA;ua267;ci50Vt2TZ;e40BomO;pr2WF; UhPsault O;av36Omirage1W6rafa7;!aQiO;!ell haO;mme4U9; nekra3YIvaO;taG;bo53FkET; es sala4ZYa0Uby 2JKi0Qjee4VMk08l06on mala05pa,rWtTumaSvaza gas 05GwinRyl O;dPhaOj209sa0NZ;ll,nn4T3;i44Kr2E2; núñ4VSi4TH; doC;h PitFmouth3KGs wO;orldOK;ma310v0VH;ePyl stinO;glE;ll bTnO; Ot 1OD;aronofs41Eba3ZJcQmcgPpa8sOtiC;h1WSt9;av4;ri51J;eveC;ki1;ene Oing in the franEL;c4PKlo4RP; X-sky prVeTly dreaming deSm1netQsO;e4ZVi3EStO;al3KT;! mO;ark4YO;xt0;r thOst d49O;an2C5;esO;er4RF;aSenRfa3O6horse co2WZma338sOtri4Y0w2IU;h2JFidePoulsO;! 2BZ; of the 4EO;er4B4l4B7;cPvO;en4UP;ad4LM;a sav3WZo QusOén g31C; Oz wo0CA;ru2GXt46L;a2P8franchit3OE; khosrowsha4PFz;du mau47Bzuni3YM; 1Xa1Nc1Hdy,e1Fg1Ci07nRse macabBtOu33Oy ga48J;dm,e O;aligh4JPbOgabriel ross3O8;as4NW;i01y O;ai4SZboYcareXdVel4T4gl1K8hu3Z9in4YHjohn-j3KYkaUlTmSpRrQst3YBtPwO;el3H8;h31Xre18Q;ol4U5;hant4GTi491o4HZu4PG;as4G1cb3IV;loXU;meko4MUye;eOrinkw3QNy0;vi4J4;!y;naOy7;du50K;elynn biOi min2NX;rk4X2; a1H7ca 0QelRil Psh O;k40Dla49QrK2;kvy4MTmO;edved4TA; Ta melchi4XQlO;a2S2e O;br4R0cQdeadw469mPpanab10UroseOs0LE; r1RT;ac3GY;a41Zol4W4;b0Cc0Bd06e04g02he3QOinou25Hj1Y7ka00lYm2FMnegrXoWpeVrTsQwPzovO;at4IN;eb4QRu;nPtuOunja519;rr4IO;yd0;adcliffe42MicciO;ar47K;a0JQmbeQM;'dN2r3NI;ea1PJ;aOog1;rus3YJ;hn3GSluu48FwO;czyXO;ilO;li3;k,lls4J6spO;ino4I0;aPeOu3VZ;f3N3n42R;ePy-lO;ewF; k4E8;ormi0ra3WF;aPe1Roo6rO;a32Zü2SK;lOrenbo4E4;a412dw4;mcke2G6pO;at35V;anron46AerO; f2WDous liaiO;soN; Ol4P0;co4QSdeha1;eQing O;m0I0oOpallbeare4XY;n i4Z5; mP-p47GhaCrJHs with O;wo1FT;o4Y1us509; Oher3ICi guriG;aUbScaRdelQhiCpPrOter4Y1w38O;ee4OY;e00la4HF;a3UVoren4O7;rvE;aOrun3M4;rr2sh;ndO;re4QG;a03b02c00fogYgiXhUmaTnig4NSorlo3BMpeSqu4PrQsOw38F;chOeSQim3TXte26Z;ne3F9u1LN;a4L7eO;ev3yn035;ña;ri46U;a37TenPoO;ok0us0;de4DT;lr3MV;elOl0;be4HWm1;aOren2E3;mp41Arl4stellane4ZI;il4I4lo2E4on0IDro4W6u4OI;nd frankPyO;kroVE; ca4KP;!ascus03e01iSoOpi8;cl3n O;alba4OChPlindel3YNwO;ayaN;err46EiC;anQen O;chaz48BhO;a0NRir4VJ; Oo0C7;grammat0ZLhRlPprOw0CY;ie4VG;ewFilO;la4WE;a0NLu092;! commanderO; oHY;! O;go4K5s0IU;ai la4QQeXiWlasSmRton O;ga8sOtr25;chO;ul4QX;atA; P–fort worth metroO;pl4XS;buyers0U5cow1WFdupree1TEj22NmOs132;aver1VA; and cocky0WSa kadda,da,t; Ok;car3A5d22PeaO;rn44L; pres2LTarPota O;f2TCj4QI;! rO;al4IQ;hXk2lyUmTry SsOzen m40S;uke Py O;edgar0C5ri4RW;namiOo45F;ka41V;caODp0EEq3TW;ler 434yo; Omo4TF;bug7e18ZmO;a4AOi19W;at3JW;omEy4X2; hammarskjö4WAe48Ygubati–akkinen310marOon,uerreo4LU;a domińO;cz3Z5;fy One ke5t LY;duJ; jang ge4IBd40Fgu,mon t6Lnerys targary5;'sZPa,dy yank4PA;hPiaO;! du4NB;au2DWshu4TJ;a4SJbs gQneyOo swi3N4; cO;ol3DJ;re0;aOonta for3DH;ngeloPrcy wO;reUH;! r1NZ; 0OW++,-0OVa0ALb0AKc0AId0AEe07QhRPiPGkKlLKmLHnLFo61p5Xr25ss,t22u0Nvs phar0MyVzechQádPéOú chulai4FI;line sciam4PEsar azpilicue4XJ;iz; RoslovakOs; Oia;socialiO;st1ZX;koru4IDla45Ir3LB;an0Cb06c03d char4Zmbopog2n00pXrSsticRtoO;kineOmegalov2AB;! sO;to4JS; fibr3CC;ano de berger2V4ilOus41H; Plic O;alphabe4SIsc2SJ;abitebo2UXgOramapho4EA;ra1JE;herL1rO;essOus;! 1YR;di laPet3thia O;da16De2ZAleNMn3UTroth4FW;up0;ad,lO;e det3OYic redundancy cheJoO;benzap400ne,th3R5;eOill s1RZo4F5;le,rO;bull30KcQne2T1punkOsecurity 3H6;! derivO;at0PS;ri4W7;!i0GPoO;bact01N;ma33S;b0Vc0Tda,e0Sl0Em0Cn0Ap08rXsStO;ieQtO;ing Ole34J;cr3IT; h3J0s; d'Rco,hPtO;a4TRomer relationship 2TV; jOing's4FJ;um1FM;ama4DN;aç43Sb your enthusia4MGc0PMiosity Xly 0SRrWsStO; Qis O;blayd3lemKma248sli3ZTyO;arv4;h3BSs44N;e Oi4KZ;and mark of Pof O;dimensi07h4SM;ca4;ency 3VJiculum vit4HOy0RF;st4SI;cak3X7he4RFidOping 00A;! and psyc4K1;arOeiWOni48At;d 4IP; OaNbrAin,ulative distributio4GC;sh4VTto4SJ;linan00tO;! UurO;al SeO; Pd O;me4GY;cl1S0of Ose4MI;i43BjP8t0MP;appropr2YOmarxism1IOre0DO;fQoO;f persO;ona2CA;i4QOolloO;wi8; d1B3; 1QYva4GF;koOu4P7;ld,o; sTaQiOo4SE;c Osm;crysta0I2eq2LGzirc324;!n O;missilOre0DA;e 0RA;wa4N8; sc1esiph2hulhuOvWJ;! mythosO;! d37Z;a2Xe2Ci18o0Iu07yO;e38Yo31JptVsOt3RP;is,talO; Odisk3Q2;cas4ECdy12RgRoQrPsO;kuCt2L6;ad3SQe4PR;scill4E8;ay7;analysis of the enXoO;currencRgraphOkit4PCp3HVzoo43F;ic Oy;hash 4F8nO;on4TK;i3yO;! O;buPex2A5waO;ll4QJ;bb7;ig4ME;cifixNFelUiseSnchyrollRsOx;adeOta2OL;r Os;kings1MZst4H4ta3TO;! anim0N; Or;m3ZNsh464; intQla de v46UtyO; sO;qu4PP;ent4N6;atia07c04hn3GVis2XJm03n02p4PYre,ssUwOyd2;!dSn O;heights 2BQjewel3NoPprince O;hyomyTJmunh3ZTsa40J;f cO;asti7;ed4S0fun47F; T-Pb4RGfiOing the rub2QNra46Jwo4RD;r4T2t;co28DdrQorigin resource sha465plPsite O;request forAQscrip4TS;atUN;es4I6;entOof saint p4FKp09Z;ro4T2;!us;weO3ā;h4POodilOs;eOia;! dund4L2;! 3N1n O;la41RwO;arO; ofO; iO;ndepend4QN;b01Bc0Mm0Aps,sXtiO;cOque of pure4PI;al Rism Ps' choice moviO;e 3IJ;of faO;ceCN;path 4ROrPthO;eoLin4E3;acOo7;e 2B8; cYis VpTtO;ero3MJiO;ano ronQnO; milio3F9a O;fernández de kirc1E9v4KH;al3ZH;in gl1B8rO;! gene edi4SV;in venezPoO;f the third centuLn earth-x;ue4S3;a4LLollin3IZyO;bo4B7;eRinal QsonO;! O;d2CQpe3ON;l4HDmMU; RaOs0C5;!n O;kOta0X2w9;ha0IH;and 3Sbo4R6fi4CIin O;chPn10Zsan francOt40V;is4ED;ica3GD;buRketO;! O;b4DPwO;orld43V;zz;a01dit YeUma4NLole TtPuO;tzfeldt–jakob495;aceousOe;!–paleogeneO; extincO;ti08T;la40Cp277;! QdOpypas4S6; Oence clearwater revival3KY;bra3U8ii;su3EA;default sw2R2k4JWsO;coBuO;is4Q1;m WVtiO;ne,onX4vO;e Oi4L6;aPcommonsOde2OP;! l2Q2;rtists 03AsO;se0AW;b 03ck coc3FVdle of 01igWmerUnb0OEps,sh TySzy O;exQfr425hOrich as4GF;ea4RIorseO;! memo0M5;-gT0;fi4ITon shin-4GV;bandico4RLlanding on3IQ;'sO; ru7; PsO;li4NV;chPd0EZf3OYof the1RMsO;he2WFteveIZ;arl3;cOfil491;ivi1TT;ga4QVnO;ebu4QH;uOy1S2; O-z;cOso0YP;ac4FA;aEXbEVcEFdE4eDZffeDWgnDQhen'sDOiDIlB0m7Un3Zo3Pp37r1Rs1Bt13u05vVwSxPyoHzO;umIy0QD; enO;terprO;is3; tPboyOin;! beb3Y7;oo4OJ;aTeOfe4QBid;ntLrO;age of google strPtO; affai4OI;eet O;vi3D5;lent QriancePxO;!in;! m46J;bo4MF;gar0Jlomb3B0nYpWrQsO;coDinO; marria48E;age the cowardly40YseGtO; ReQney O;e4HNfo4NWhenggN5lo4FDsto3G8thorneO;-s3YZ;ney3RAs1;of ow4O0tv mys4JV; dOe de 0XO;'ét4BNe grâ4P9;cil o04tO; d01er-1ViXrQy dO;on0Y3uO;rh4MT;ieRyO; Ob34Y;code top-lOjoe277m3AZp3XEroJ;evel doma4;s O;ofO; tFC;es of Png cO;a4NOro4GK;e45NiO;re4IN;ooOracu4P4;ku;f Pn foreignO; rR3;chalc411eu3Y6tO;hIDre494;! O;to4MG;e de pUswT3tO;ageSonO; O-eyed2DC;bowlOg4; cO;lass4PN; UGcoB;ab4GI;i01mUplKs13JtOw40Q; of electricity by Ra Oco;concordOri3DZ;iaO;! d4EU;soO;ur4O7;e2LLic RoO; kPlogOs;ical 21Sy;ram0;microwave backOrKs4;grO;ou4KV;mo de'039ne simiO;la3XS;a10b0Zd0We0Sfu,i0Om0Jn0Dona09pXrTsi3DLtRuF7vQy O;bo3YImontOwo8;ei46N;etHid4AMus;a49YiO;co33As4NU;elationQie ten bo43SuptO;ed bloodXFionO;! perceptions4NV;! does not imply cau0P3;oraRse O;b35QhOp4HZro4K7;usO;ba4KF;lTtO;e PiO;on,sm;govern32PsocialOtS1; responO;si1NJ;! O;punish3Y4;ry arteJQtion PvO;ac,irD;oOst4KB;f elizabeth 4JZ; st1QXeRisQwallO;! cO;ap26T;h 3WD;d beQ2lO; 4KJius2El 2GQ;ac QoranO; Ot;stri3PC;mcO;ca2Z8;a3G8nOolis2JX;ne Oth;foO;xx;ldr4CJy O;fPhaOreR8s1AItaKE;im,rr3J0w2TA;el3J7;arrelleOed ware0AC; pO;at41W;ev3Z7in ber303;lOzon aqui3UT; Oi6;ca3CCrePH; 04a 03enhagen00pXrVsh3UTtSyO;le2RTrightPwO;ri4NF;! O;infrin2L1sy3N1term extensP4;ic Os;la3VLorO;thodox2EO;opO;hilA;a it3EYerOola family 4B0;! peptide ghk-O;cu;! O;a4AOiO;nterpre336;amé2VKdel rElibertad3NK;la4IVu479;ber pe45QkTlQper Prdinated universO;al 4ML;h4E4ku3I3m2HX; Oio;hand lu3O8ruO;nn4JE; QiO;eOng ba2X4;! c21I;i3KIpartisan voti7F; a4IOan 3Ec38d31e30f2Mg2Ii2Hj2Dn27or 23quist2WUrad 22s0Ut02vSwayO; twKS's O;gameOl4BE; oO;f 4M2;eQolutionO;!alO; n2BJ;nience19GrOx 474;genPsion O;of paul1Q3thQW;ce ofPtO; e04K; randomO; varia3YF;a0De05iYrOumeliosus of ri4EW;aUoO;lQversial reddit cO;ommuO;ni4GV; Pled O;flight into ter46Tsubstances3X7;of fire by early2GYth249;ct Ol43Jpo0BOs;br43MkO;il4EC;guous3UFnO;ental SuO;a1SIity 2C7ousO; Ply variableO; t203;fu46Iinteg4H6uniform1DK;ar2GVdivide0MDph2ZW;mporary clTnt Pxt-free gO;ramm9;delivery2ATmO;anageO;menO;t 2MV;assicO;al36H;ctless pay3VCiO;ner 3XF;angui27Uc0Le0Figl0Eo0Cpiracy theor0BtXuO;eloTmerO;! Oi4BR;behavio41JelectronicsPprOs1K2;i009ot3DM;! O;sh4IX; vO;andO;erbi27T;anVellationUiOructed 3TH;pa4GKtuO;ent assemblRtionO;! of PalO; mo49A;i3SWt0CA;y 2BX;!-40N;ce wu,tinO; 4G9e Oop7;iOt3PExi palaiolog4CG; Oi O;ofO; grC5;ies about adolf hitler's2H3y;lidated pby cOna449;ata3EN;ieB;ns3D4rvatiO;on QsmOve party0Y4;! O;inMO;of0YPstO;atD;iTriptionO;! in O;sOt3SX;ouO;thO; kMS;enPoO;us4J1;ce,tiousO; obje46Pne4J0;hi3GHmu440vei3QI;gQlPmO;cgr1ER;esl4HM;al3QZ;ac4GWectSie Por O;be3XKjess41Jmcd07Rswind2VA;bPfrOn0L7sYR;ancF;oo41Tri3MA; 29Nic2DWu;oined7EuO;gate Onctiv2Q6;gradiOp326;ent 4IE;c0AHf0;eQo Press O;of vi1VFpo4CM;cr0G1f224;e,nital heart de1OD;eUiRuO;ciPsO;ion3ZL;a48Jus;dence Prmation O;bi4JC;intervMt2P2;ctioTderatPrenceO; u40T;e states Qion of O;african3LUtheO; r3FW;ar2EGof2RV;neL;y 27J;ensed mi0BNitionSoPé O;na4FS;leezza 2QQmOr;!iO;ni43Q; 3H9al O;expec2Z9p1I9;acafSePhata fer0VHor36Hre4EHubiO;na410;ntrated solPrO;neda46Zt for15;ar3XQ;! 09G;ex28YgrKoPthe O;barba41Qd2B3;'bO;ri5;a2Sb2Lca4FCe2Cfort2Bi22m14or12pO;a0Petition between airbus and bo0Oil0Nle0Io0Fre0Aton09utO;ational 04erOi8; Q-O;aided 3XTgenerated imaO;geL;aZcYdata034e3UZgWhVkeyb0MXmSn2P6programRsPviO;rDsi2;ci4FWeOo337;cu3RF;!mi8;e0JUoO;nOu4GO;it4EU;ard4AA;rapO;hi2P3;he4H2;ni3W2r2A3;complexQfluiO;d O;dy0Q7;it15H; h17A;hensive and progressive agreement for trans-pPssed naturalO; g4HW;acifO;ic partnO;er3TY;sOund inte33E;er,ite O;index of national capa1H4m0CJ;mentQx O;conju3XLnu4BVpost-tOsystem0DG;raumatic stress2IH; 2J3ary coO;lo4FM;ation of final fantasy v4DKer;ei8;ct XnSrOss;ison of Otmental models in epidem22I;bittorrentPfileAKlinux distribOonline dating32YsshPtop chess players throughout2SDvirtual reality headse4D7;ut4AR; cli4CV;ion of Oy rule 3PD;hQthe order of sO;t michael and stO; ge0TU;ono3XM;c9di3KLexecutiveOsBK; c9;biOos2B1;di4AS;a0Fe0CoWuniO;ca3Y3sPtyO;! of20D;m,t O;i2Y3party Os1ZN;of Ou3YJ;cu3YBge36Ti3P0the O;r2KQsO;oviet9W;d02nO; Rwealth O;ba3GGg3FUof PrO;ea4CC;e3WSindependent43Tn4A2;aUco4FCeTgateway2DKl45QnRost22UraPsecurity and defenceO; poli2OA;cOv5;coon3RE;ightinO;ga7;ra,uropean framework of reference for3QW;dmissO;ioO;n 2YI;i4A3us;dia dell'Prcial O;bankV1so318v0MR;arH;!-separated3XRndO;-line2D5er O;ke5oO;f the order of the brO;itisO;h 41I;cUk4CIngPx waveO; f1F5; O-of-age4F7;homePofOto2OT; a3Y8; in O;the da4BY; Os;bo46R; wom5; VdPtO;! hale–bo3BA;ians in cars getting coSyO;! P-dO;ra481;centralOfi4BBho0RW;! r32M;ff47H;and36Qfrom 49R;inOus4B9;atRed O;dPsO;tatistical 1ZC;na index 2H0rug i3FA;i2oO;ri2MF;!nc43X; nee2PHby covi327chi33Fd1Ze1Tg28Ai1Ll0Vm0QoZsonYtTumbO;iOo;aOd41Ene high school135;! O-3IS;pi2K1rOsportswe9un2X4;ec444iv0; Q's manufacturi35Von O;du3XKhaOuWD;yn3;mcc32Tsingle acO;tionHC; white4AX;gne010mb0Bn02rRssPurO; index2W4e43X;al sOe3ZTus of rh2D0;qu4CG; SadoQectO;al O;ca44E;! O-0YH;avalanc43Cr49Q;blind4DRcomment3YLdep3WVps2T4renderiSs96tOw3ZY;eOh1X8;le1XLmO;peO;ra41I;ng4E4;el UiQsay1WAy of vO;irgO;inA;aPzation ofO; ma4CL; dignid4ADlO; historyGRi452;r1V5s15Ktom O;pa15E;iaPoO;! c0P6;! 385n2A0; Qan O;domO;in32I;feoBmeO;anE;a04eOin ch35Qoqu2X1;ctive 01en YgeO; Ohum4AR;anTbaSfootballO;! O;national championships in ncaa division i f2IUplayoffO;! nationO;al 3Q2;sket3GO;d universityO; rO;ank4AP;balPca2JVo'shaughOwi8;ne4B1;li3WE;security treaty18FunconscO;ioD;g5pse of the wTtO;eralPzO; conj3KY; Oized debt obli1NA;beO;au478;orld tradO;e O;ce3AI;n Oseum alfonso pér46C;dTfSh1OWjo4A7kaeperRleQmOpo34Asalm2trevo0O0;cr3ZGoO;c25Lrg1;akE;niJ;ar0PXir3VC;on004; QsO; superO;mar40I;haPpo469sOtu1S7;pr4BJ;us0; QplPstreamO; gu3JO;ay368;ca4BFfPpurO;su49C;e49Au3YW;lg4CAmba2YUnQtal alignment O;technO;iq417; flPba4B9s of the united statesOtelp414; do1SU;ipTJ; kO;ap3IX;ac,iO;tiOza3WD;on,ve O;bPdisOps2QWs1MS;son2R3;ehavioral H9i4CK;a arabi31GeO;! Oh4AW;be1la3E3stain 0RV;fficient of QlOn brothers45W;acOiac3TM;an3UF;deterA6pOvar2FT;erform2QU;!eRy O;garOko,rh2A9s208;brO;an3IP; ScQfo1OUi6mPxO;! gig4C6;as2JX;aOhEC;de27E;gea4B0of hammuOrefacto3ONve4;ra26Q;a01cinell00kWoPteauO; twiN; Ra 3OZmQnutO;! O;cr22No3OT;el2;auPchO;anI;st4; QatPnErOta3OO;oa404;iIoo;and ballCGri8;id3XO;!-co4B6ineO;! 2VG;a1YDie smul2NXol,raOy0TP;! k405;chQgu2S7tPxialO; c475; of 49Ni; 0QDella valley music and arts138; t3QEame Obc,id2XQn,ut3G2;re2G9; Pos,ykO; color2VL;pu3AX;a1Ve19i0HoWuOyde drexl0émence poé2XA;bQePj-napo305ster O;an2PN;do,le4A4; Pe O;atlético min35Ide regatas do flamen2ZC;atlético r1BFbrugge kv,pO;enO;gu4;juBmife6n05pidogrIris le04seWthing227udRvOwn;eOis3C5;!rO;f2MOw2VX; PfO;laB;cPsO;ee3OL;ompu4B1; RdO; P-circuiO;t 022;be4B2ci44B;enPquarters battle reO;ce45H;counters of the third Oou44B;ki46O;ac3SR;azPiO;di6;ep47D;c0Cent–server2UPff06mate YnSp studio pRtQve O;ba11CcusOd3DOow5;sl0;orF;ai3U0;icalStO; PonO; body c2D6–lewinsky 44K;eastwOho09Wwa2ZI;ood43M; ps2OF;changeTof QpledgO;e aO;re3VG;auMDi3I3tO;he uO;nited266;! miO;ti1JK; Pord the big rO;ed3KM;buQcu3SRmaPrO;ichard330o2L5;rtin42N;rt2;hé,kO;baOte46M;it,nk;a03f,mWopatraZKtus kaVveO;landOr haN;! O;brRcaval3OFgQtorsoO; murdO;er0;uard3YJ;owN;sa3SF;entQson O;tOun2R6;ige18K; attl413ineO;! O;barn255chO;urc1BD; dSnRr channel memoraQvon O;liO;tt7;nd3TW; baS7;uvaC;es 9Air14n12r0Rs05uRyO; OmoB;aOmatthews11X;ik5;dOs von stauff397;eViO;a Pne long457oOus; ran3QT;b1IQcardiRjeQk3MQschi2E6wO;el46QiO;nkl2OY;ss46E;na7; Otte col3R5;a2EGdebus2UOlévi-sQmon44Zr262sO;haO;nn2;tr30U;h of c08sO; 05ful1XUiQless inter-domain rou48RroomO;! of the eO;liH;cQficationO; of Os of fai3ZM;de32Tindian43Asw3X7; Xal O;antiqVco3EKeD9grUhollywoodSlQmO;eOus48Q;cha2F5;ibeO;ra2RQ; cO;ine40E;ee47D;ui41Q;chinese noOmac 3ZT;ve45Z;c23OdO;ia25S;iviliz419laN;a Wence ViTkO; QeOson's fa3UT; pe2FN's threeO; la3YR;du39FgOjames g43HmiM7s3X9;ab7re2V8;n443ssa dicksoO;n 2GT;th281williams10N;b45Ios35IpetO;ac36V; Ocy0KFg;ca38L;e Oo,voy2M2;bSd20UfoQho1UCrOvan kamp5wi2H3;eOi212;df2J8;rOy;la3X3;lo3MO;ar1Tc1Qd0elab color1Ogar1Ll1Jn16p15r0Is0FtUudad jTvilO; PizationO;! v3GJ;e3JUrigh1WFserviceO;!sO; exa51;uár402;a07i00rVyO; Q-O;buildiOs1PR;ng 3R9;football3OOg0BZhu342index3OOof Op3EN;brusse44ZlPmanchester0ADwO;estmin3WV;i3o2MA;ic acidRoënQusO;! O;bo1BV;! 3VQ;! cP1;ba36Gg3OGzenO; 3NMshipO;! O;of thO;e eO;uropeanO; u3HG;del0MUt3CM;coPge2Z6sy hO;ou346; s3LO;cPque du sole3JFrh2M0yl O;ga6;a04e,le of fift1N3uO;it YlaUmPs taO;ve3VT;cisOf2QD;ionO;! O;ofO; j04O;rPtorO;y 27O; eO;co0LO;bRde O;mPspa-francorchO;am3GK;ona3S8;re05S;dian rhyt10YssiaO;!nO; Os;ge1XF;h0rofloxac4;cinnatiYdUemaQnaPque tO;erB;b9m2; Ot3Z9x;of Oparadi33N;i3DRjOt3ED;ap1;erellaQy O;cr04WmoOw07Q;rg1;! m1;! beO;arcats385nga43G;en3N7lO;a1FCian murphy38H;!etteO;!s afterO; s44U; sO;pa44K;a43DeO;lyOro; t0RX;aPán hO;in3U1; bKF;aAPe87h84i57l4Zm457o4Gr0Gth2KAuRvr43MyPâteau pétrDūO;ichi nagu2GZnibyō;ler9HnO;a,na0S3;b0Bck01kotka autonomous okr124m00nYpacabGrO;chOu3VR; QesPiO;ll 0HZ; of 3NN;f126of O;e3KVsPthe O;ea41Kholy sepulchB;at1cO;ienOot3XT;to3DR; doo-hw1gO;ha,king0FU;bawam3M0l3WF; PleO; 1AWfi3W5;bTconSgras256j42GlQnoPpalahni1BIschum0yeO;ag0;ll,rrF;idOorB;deC;no42G;aTDeO;rry2XK;a hub0YJu-nipp3BI;is06oSysO;anthQlerO;! O;bu0G9hemi9S;em3OZ;mVnO;ic SoO; Plogy of Os;j02It3OJ;c3KJtO;ri0SE;fatigue3NKobstructive pulmonaOtraumatic0BFwasting3L7;ry3L6;aRePi3OQoO;so43U; Obo3UPca40N;os,remote deskt3BGweb0R3; kEtO;i2SQog3XC; 23ann b21hell st20s1WtO;a m1Tchurch1Ri0Kmas0EophPy O;maJtur10J; waltz3X5eO; 2JAr O;at29Gbr09c07d05ecc04g3Y7hi03j02lZmSnol3X2pRrQsPtOwalk5;olki5;ca22Btreet2G1;ee3SSobin mil6;ao0WVlu2Q4oo7;aRc2JGeQintz-plPoltisO;an2Q0;as41V;lo3T3;rOs3HX;kus and stephen mcfOloRO;ee3O1;aPee,loO;yd;m3LQng1;ud3LE;tc3NT;le30S;orner shootings and manOun0ZU;hu3MT;oOro421;lumbD;ow3TF;! Oti2QM;and holidaQe3S7iPm2O5trOwith the kr1EF;ee,u427;n 2ZAs3VZ;y O;se3ZC;a08e br07nO;aYe O;baraWcUeberTg02Ghà,keSlaQmPtaO;yl3ZD;ax2TKcv40E;gOh2P8;ar2QA;el0;so7;hubOol0C1;buJ;ns3L2; O's412;aScr01Rgrimm405hRmi28Pon1VRpPrOto3T6;ic31O;azsiOer3YHi07K;tz314;aaJendr0ZE;guiOpple3I9;leG;in25W;an HQnO; RityOs;! O;by3AXin O;i3A7t3AT;a03b02c01dVeUhTixSka6l0XQmccafRpPsOwo427;ci3ZMl2RB;o2UNuO;lis42H;frE; of2XF;a2OJo38V;riks5;eOi3YI;mocratic unQnoO;miO;na3XF;ionO; of2PS;a3JWou34V;ale3V5r4U;ngelo3APpologe1YC;! mosquO;e shoot3YF;caulOi3SN;if41B;ie hyn2P5y O;coPme3U1teO;ig5;st0YD;au3ZU;reO;nn1;avelWFb0Mc0Id0He0Gf0Eg0Dh08isa2XLjeric2WFk06l04m01no3JDoZpXrVsRtQwOzyl36A;al3KMei2X2hOil3J9;it3UX;ar2WTu1GA;aQilvIEpPtaO;pl123;ed3EY;c2Q2ra2GG;eOoJ;a,df2CU;aOe3JEi6ra3S6;rNVtt5ul;'doOla3Q8;nNTwd;a26KccandHOeOu2HU;ledand3WZsOtz5;si3MA;a3THoweOy3J7;!ll;aOy7;maGtt1;aQePuO;gh3h6;dg3m2R6;df2CFns5rdO;wiJ;ar1EBo3JP;aB1oO;wl0;l3RMuNL;'347iamant3DIobE;hPlareJPoOuo2CD;lf0op0rNA;ibOr02E;naC;enoitOo3RXrown2TKum238;! double-murder an1M2; 03ct3PBe deok02i ZlSnRp suErPw Ozen tog34O;ch3Y4me4yun-f3LX;dOi3OS; p1TBaH;drichthy3gqi8;a1BTeOi6;ra,sO;kyOter3ZF; dO;ecomO;poO;si3VM;mi0ABsooPtaeOwoo-sh2V5ye-3LD;-jo2;-y279;-s4;kyu-37KmiPyeo-jO;eo8;-ye2;amydAoO;e SrQé8Zë O;grace more3S9seO;vig2UW;i6oOpromaAA;fo3MKphyC;bOfin2FTti8;a0MCenn3VX; r2UN-squared 2Ja2Gba t36Pc1Yef 1Pgorin0EUl1Fm1En08p01rWtQvalryOwetel ejiof3W6yo miya380șinău;! of a failedO; kn3WH;a Sin,on,rangada3T5tO;aQerl3W9y chittyO; bang O;ba8;go8;ri2OD;aQlane mccrKoO;n,prO;act3ZP;gOnjeevi3SO; pat3C4; k3DAko1OCotleRpendQsO; hO;ar3I4;al3;! mexicanO; gO;riC;a0Ich13Kese Pk,oOua ache20V; mo04E;a0Cba09c04d03e01folk 00guardian l3S9immigration toYla37GmWnUoTpe35CrSsRwaterPzO;odi1X7; tO;or3LM;up15K;emainder 0Y7o3E2;peG;a3YNeO;w R5;aOyt37O;rtial 18W; meO;xi3KS;re2IB;conomic reOxclus0J;fo3LF;em1ILr19L;alRhQiv26ComOui2I2;munO;ist3RZ;arac265;end9;skeO;tballO; assoc21P;ircraft carrier PstO;ro378;liao3OKshanO;do8;! S–O;pakistan economic corrQunited states O;rOtrade2RT;el3RC;id3UM;a3AVcSglobalRmiév2T0na2RSrich gPsouthernO; a3AU;irlfO;rie3U0; television1N7;entral P7h3VO;amanda ngozi adi3Ypanz3PL;dQe1RNi O;con cOpe121;ar6; Rb0V4renO; of P's online privacy protectO;ion38Z;bod3CWdu6m5;a3L8d35Ygroo2ZWlaPpoOsexual3L7;rn3R2;bo3DW;executiveTjusticeRkeQoOtechnologyT;f staff of the united statesOperatingS; ar1SR;ef; ofO; t361; oO;ffO;ic0;agoWhen it2YMkPoLxulub O;cr2MG; cT-filSenOp3R8; Op2YE;asPr3WItikkaO; masa3WO; fo3X6;-a;or3R2;! R-O;styleO; pO;iz2YA;bRcQdi3OXfire 303mePoutf3T9sO;ev5;d,tr1GJ;anMu21L;ea3UTlackh1GLul3UQ; Png Op3WRroscu3L1;kai-sh2TSm3LC;se3RY;d0OOte3TF;atPichOor3SN;hoB;rapati shivaji maharaj 3KAtisga1X2; gue1A4a23byshev20c1Vddar 1Ue1Qgg,hBk1Pl1Jm17n14o10q3KWr0Ls07t04u35MvQyenne O;brOj2YM;an33B;roPyO; c2XL;letOn2EZ;! O;bigWcUimTmaliSsPtO;ah2J1;ilveNFmPubuO;rb1;allS;bu;pa3VR;aOorv2XG;ma3KFp23V;-block1O; Pan Oni3M2;bhag3HPsh3OA;at21UbVTh17H;aYhireXsStO;er On1Q4y pu3N1;benni2IQreOw6D;ynO;ol3KR;! O;ope3M8pQrPtO;it7;at1X7;ie3V0;! c3HD; boPpeake O;bKsh2WG;ud4;ami01enkov0D8iZnSok3NEryPub,yl O;h3IQla1JFya8;! O;bloOj3TF;ss3AS;i2GKobO;og,ylO;! O;d3L8exclusion71liquida099nO;ew safePuclear power plantO;! sarcophagD; confine35C; o0Xe O;b0JNcu1L3; l07H;ljOngs3S4;onO;g O;of jose2;gPnaiO;! e069; xi32Xdu;iTmRoPtrailO; c0IGs over the countryQU;thO;era3UK;y O;al1IK;calPstO; wOPry; Os;bo3QVca154ePi1LZre366subO;st298;le34Q;sea QyabinskO;! O;mete3R8;cPf26Cg2XNhOm1PUper2H3winA1;an2OW;li25S;a,hov'sYA;chQseOt3KL; sOca2W2;andML; m071;ch09D;hPkO; 2PSe3SC;enOn324; republic of ichkOs;erA; O's7Z;polynomO;ia3S3;p t1ZVtO; e28E; 4JceTBd4Be48gas3B9i3Zk3Yl3Sm3On35os 34p2YrVsStQuvi3J7v,zO; bo31Jz palminO;te3Q2;b3UCroOsworth3SCurbaH;ul2V8;e Otity02L;at0UEba2TJstO;ok3;acter2Gc2Dd,g2Ai24lTmRo000terO; Ped financial anO;aly3QJ;commun37K;ed,iO;an ca3MTn9;e0Ti01otteOton he2RAyne 1AG; P'sOsville car03V; w1AA;br1Y2cXdouglaWfVgaThorSkemp mu1LXof mecklenburg-stre0VYrO;aQiO;lEtO;ch3R6;e,mp3M2;ne3P7;insO;bou3C4;c,la3PL;s 3H1;h1KZordK; 0DePze thO;er0F5; Q'sO; aO;nge3R4;and the chocolate 07b04c00daYhUk230mSpQro3RKsPwO;at3OVeF;he5;aOlu2FNu3B3;rk0ti30J;c25IuO;ng0rp3MJ;eOunn3PV;at2bdoO; sO;hoo3T4;nOy;ie3QR;a1RIhPox,rO;ess2JLi3PI;aplOe0VE;in3M5;ak0rO;ew0oO;ok0wn;fac3RR;balti3LQdOxcx;'amel2QR;m0Rne ti2OYs O;aznavo38Ub0Nco19Td0Ke0Jfrancis swee2NOgr19Hh0Ii0Cko3GVl05m02n01o00pon1SLroYsVthe ba3R3viTwRxO;!ii oO;f swO;ed5;hiOoo39A;tm1; o08iO; o07i06;aaPchwab2ATobhr382pOta1EB;ur2ZN;tc3FS;bertOck3OIv5; j0WI;liv2PC;elson re0M1g,jonZ8;aOi34U;ns2rtO;el,in3OC;aSeQiO;ghto3J0ndO;ber3LN;cleO;rc;ugO;ht2; of SiQn1PLv 15TxO; oO;f ZD; of Oi 15Q;e37Ps15R;a2HJe37O;arre2URos206;dward st1HA;aPe gaulle196icOur3HY;keN;n3QRrw4;aOoy0ro3JXu225;bOr1V2udel0DE;ba39L;ag6;otRsOty wak22K;e castro2L9ma cOsa0JV;arO;pe2OA;!sO; of 3ME;eOé d'affa09W; of the light briga2ES-coupledO; de0Q2;oPutO;er3OR;al,t–marie–tooth389; Wi0TWs O;in Sof the O;dc exQfinal fantasy vii 1THgrishav3BImO;arvel ciO;nematic3BE;tended3BD;romeo aOthe mario franchi3PA;ndO; juli3N5;en34J;elwSo trap3P4paquiddickPters and verses of theO; b0OZ; inO;ciO;de3AC;aiH;m3NWth190; sung 05a04ce02dVelUgRnOson de l'oiI5;el PingO; tat3BA;i2OIone 2MUtuO0;'1ePi3E9pengO; zh2YB;li8s in star wars re-rele0D1;! west2D8;igarhSler RraO; Pgupta maO;ur2Y4;wi2TE;bi8j3O4;! kare aashO;iq1WR; the ra0UFllor of O;ge2FZthe exchequ0;k2XXthip songkr2BY;ju8;ath palihapiti2XVeQoPpO;ag6ionnat 274s-élysé3;mi7;le2;cRd3JYking theQlengerO; deO;ep; do3MG;olO;ith3Q8;a 1L8ra;m UnSrO;man of the joint cOpe349;hiefsO; of sO;ta37Q; Osaw3KZ;ma32Hru7;tOwa17O;op3OT; sooPb3OSl sOy1WT;onn5;-b4; Owick bos25L;huTj3HSkroSloDOmRsPvO;ea3DQ;mi37CtaheO;ls37T;cq2LAichael RX;eg0;rlE;chaan PeO;un-w2RV;te8; mar3AAbu28cil26dr20e1Zl1Km1Jn0Co,phal0BrWsQtOu3PHvic3DK;ac3J3iriO;zi6;arPc fàbrOs3AEto3N3;eg3OZ; Pe bO;orgA;c29EmiVEroO;me3D5;am3PAb01eVnUseiStifiOv352;cateQed O;loverOpublic accoun11R; b2CE; autho2XT; lanO;ni3EJ;!unn3GE;al,bOmonial 34K;e204rO;al PospinalO; flu3LZ;cOp0JT;ort3NY;erD;ic3NUop3OI;k uyg34Ro0Ts0OtO;aur0Me0Hi0Gos,rRurO;i2y O;e2BRof hO;umil1RQ;al Ue-QiOo3LP;fugOpetOsm;al1KH;baJlO;eftO; pO;oli1KR;a03bYc3FUeuropeXintelligenceVlimiUn129pQtO;imeO; zo6;arkOo2BQr28U;! O;joggerOt32X; ca3MB;t 0NA;! O;ag1VD;!a3HS;a2NEoardO; of secondO;aryO; eO;du2NF;frican republicOme1WEsA;! c1VG;pe2B6;lla asia1Q8nRrO; ofPs for disease control and preO;ven3J3; ma3ME;a36Hnial olympic parkVI;!w3LZ;orshipQus in O;auO;str2FB;! O;in0AK;zo3NO; yılm0Y7e36W;a1PMeXiVlRtO;ic Os;bri0COl2XHmOn3GFw0A1;yt2W3; Qo,ulO;ar OitFo3LG;autom3EIn1TRrespi3IL;memb2G7nucleD;a i1UBne O;di2;bPry,steO; o3S; jih3IOrO;atory gun3HZityO;! sex2B;dee la2D6loPP;ic Ous;aQdigPthe enterO;ta1OL;goL;leO;xa2F6; Oia payne-gaposc2IJy 2J7;kell3GMrh1KI; PaO;no 2UZ;ci3G3p19Q; O-r31Pawg2LA;projektPtO;eneri3M4;! r3HL;h pou2EWlO;ean0;c DMee0KPgb,s;bDIche replacement poliDHdD8esCZfCXg3MLhokAiCJjuNlB2m9Yn80o7Yp76r2Gs16t05uWvRyPzzieO; dA3;enne Om2K5;pe0QF;alReOi9; Oto3J6;paOs3L8;in3MA;ier king charles spaVTry;cPlifl30ZsO;a133es of world war2N4;asShyO; d0DW–schwarzO; iO;neqO;ua12Y;ian 3K2usO;! 00J; 0M's cr0La0Hch me if you c1e0Efish0DhQn2XWoPskilOt7w08N;l 00H; the you349;a08erine Tie 2SDoOy2FK;de-ray 61lic O;b0JUchurchO;! O;by2UAsO;exual abuse084;ba39VdeYhoL6i2HSkeXmUoRpa3ELsc0OItQwPzetaO;-j3JC;ay6;aHhe2Q4;'1KFf Ox2LN;ar0WGvO;aloF;cPiO;ddl0M5;corXM;en0;'PnO;eu3AD; meO;di2KB;rOy p18C;i3BLsF;!i8; blanchett2MTgorOrpi110;ical impeOy 13C;ra312;comb1BClOn,ra2W9t1S4;an PonAyO;sFtic 1ZE;la2TCnu3F0;ad7;p2ZRsO;te0S8; anv9a0Vcad0Se0Lh0Ii0Gp0Cs03tQuO; mart227alties of the iO;raq2EE; ZawKeYile andXlTor SrO;atQoO;l performanO;ce3JY;i2o;and poll293o2XE;eOi8; Ov2I;bOin the00Arock 2UC;ra1N4; le1E6;! system 2SBllammar91;awKir2of 0; eVaTetteSiOowaL;ni–Pus O;sta169;huyO;geN; ta38B;ndra Ova;ha91pe2YL;lli3KE;ar david fried164er Pian O;s3E0t1JY;the friendly gOvan di5;ho3GO;miOno,o;r 0OP; Oew,mere wo3J5;a2F8tO;ruJ; Sin,mi381y O–shill3CY;affQdOkas2BTneist35Dwi2MV;esO;antF;leJ;bl37Yclos3EVsOwestern reserv1CI;tu32L;ePing style shO;ee3FA; r2SE;blO;an28D; 4Ca45b3Jc3Hd37e35g34har3AJi2Zl24m1Xn1Ko0Qp0Nr03son 01tRwood li2MFy O;elw3g2EYjoji O;fukO;una2G5;eShagRoonO;! O;network3AXsaO;lo2;e,o delenda e3FY;l,r Rsian O;cPpO;rodu2UH;oordinatDS;bur29Wre33U;k0V7pa25NwO;en3BJ;aJe18ViXoSy on O;at yourQcamPdiJgNVhL6regardO;le3HV;pi8; conveni3GE;ll Pm,tO;! t2QE;oPshO;el3DW;'conn3FC;a30VeRngtOon;onO; eO;ve32B; P-anneOr-grade n348; mo3HI;bQco2fi1YKha2EYj3AYl3FGsnodg2TGuO;ndO;er2P7;rad0XE;aOe di2AI;l tunnOthian X6;el31X;lRn kQ–kanO;n dO;ef3FT;ea3II; 04e 01inQyn O;bessette-Oj3G3;keU;a Ue QgiO;an O;d0TRem33F;f0RZkeQmPpolach2F4queO;nt4;un36A;nne30Z;gaitQhurric1B9pPreO;ap0;ant0O9;án;baPki8lO;aK5om0C0;sk4;bur2K4ch1D0dVii Rka6ly13Tof theQthPvorO;de24E;at2IG; b1T3;ofO; rO;omO;anA;an0L2weJ;ation Xegie mello0Z6ivQotO; cOa32Q;yc7;alRorO;a,ousO; pO;la311;! O;cruisOr3F4;e 34G;reO;voO;lu3CS;ePiO;l3GOne persi33B;loQn eO;jo25AlO;ectG; aO;nt009; 09a 07es puigde06i05oQy O;aquiOchaik4rae jeps5sim2;li2OE; 00s O;cXghoWhaTlehd0maRsPtO;ev39O;anOl2UP;ta325;c2BLrO;ín;nkPthO;coJ; gonzál39H;sn;asta17KoO;nd3CW;ancelOgambi2O0;ot230;s7to's1DK;mo304;b2J7guOju3CG;gi2NV;\"alfalfa\" sw2GNbenVfriedrich g28Mgustaf emil mannerUica0V6ju8lSmccu2YOnass2Y5pRrQsPtanzl0von clause2IKwOxvi gust2I2;e0DMi2JG;ag1chmi37E;e1I6o38Y;er1M1;innZ3uO;mb30V;he2U2;jKEz;bbeanQce vOna l2UA;an hO;out5;! O;n0DVs3A0;iCoUL;less whisp0s2R9y O;lo26Qmu015; Wam2V5captor0S2iPsO; against huma12F; b,ac ar21FffTnalPoO;pulmonary resusci1W5vascular2WZ; Oi39E;dPrichel1Q9vO;irtu3;ir285;! b0I0;co3FUga3FJsecurity 1IN;assOiG8;on6;i6oOuret3C5;hyd1WTnPxO;yl7Z;! RaPiO;c3CUfe06Y;ra,tedO; w24L;c00dioxideYfVmonoxiSnPsO;teI;anoPeO;utra0WE;tu1H4;deO;! pO;oi35I;iPootpO;ri2YS;be3D3;! in earth's atmoO;sp1MZ;apture andOyc7; sto1AE; Rbin2WWcaPvaOwK;gg2D4;lOs;!la;dOg36L;eOu6;leving6;cEPseat head20C; 0E4acit0Ec2TZe0Age1I7i02o01p00riZsWtPu22PyO;baG;ain Oc23Eure of the dutch fleet at den he0WS;a1NDbSdisiRho35Fne1QItO;omOsuba2W5; mO;ooB;llu30G;eefhJBri1MQ;aic4icumO;! anO;nu2Z6;!corn2KJ;adocAucci2LU;col35OeiGre1RQ;llary 2PPtO;alPol O;hill occupied pro1W9r1BA; Oi34R;go3E9o6punishmentO;! O;by2MVinO; t5J; Pr,tO;ian0PO;breto12Fc3E3hOof good ho327to3B3verde17V;att1E6o33E;an3D7or; c2LTimhínO; kelleh0; 1J't 1Ga0Ub0Tc0Qd0Fe0Di0Cn01oVtOva;erburyRinfl3DUonO;e3C8s of O;swO;itz26T;! O;caO;thedrM;laSn O;eQof sherlockO; hoO;lm3;f lens1GGos; o2QF;abiVeTiOon,y edge dete304;balPng stock rO;ouH; Oi33Y;corp3BSholocO;au3A3;d 9LsO;! f052;di3CKsO;! sO;ati2C2;d2Z7s; cor2B2lo O;álv2D;ace ViSleRyO;! O;crushOpalm229; sa29T;!m3CZ;ce Ode;beO;rg5;bushPcameron buBoOpa03T;weN;neC;eOún;lOr; c2NF;erG;an07dRl+,rO;a Py O;i2ANwhaAW;ba2C8;aZian O;armXb0SQdo0SKenglishVfQindian residential schooPnationalQKpOtiB;acificQJre0J8;l 1DY;oPrO;en30T;o16Drces maritimeO; comO;ma38G;! language proficiency indexO; p1A2;ed0OVy;! O–united states bo1PW;gPmen's national O;ice hockey 262s0SG;oo3AK;! O;smith-njig2TG;help falling Otake my eyes off23K;inO; lo318;bDyO;am1ou ever forgive m165; 0Pb0Ee01iUorGpO; RaQbell sOeonato brasileiro série07Hh38Iing worldF8;co32ZoO;up 22H;nAri;dOlaz335;av397;lOno de santia1ZY;a RlO;a Pe O;cott4kost28Ppa1DTraz2XAsaint-saëN;b2L4luddi1YEp1N2;aRKcab32XmO;e92or2AQ;lXo WrO;aUoO;n Oon15C;boy3APcQdiaz34WmoPno11AwO;inklevo3AD;na1NF;roO;we;! obscuG;appear1PS;! Plia sinOot;ensF;ca39Mt1XW;odiaTriO;anQdgeO;! Os7H;analy1DSfi30B;! O;explo2WZ;!nO; Q–vO;ietnamO;ese24O;c1IRge12F;neO;wt2;a12c0Re0Mgary0Ki04lWor38Htr2IEumVvO;aLinO; Oi31B;and hoRcQhaPj335kO;att9le4;rrF;ool2SH;bb3; s0YA; Pan rydz,ig343um O;hudson-odJ3tu2HG;me Sof Othe mid1TG;du344juQtO;heO; n37E;ar339;if you get21Qk2W0; 02a2Y9b0c00forniaTgu39WpQstO;a fOhe1H7o tan1AF;lo336;e38AhateO;! O;of córdo2RK;! O;co1MYdreamSgRhigh-speed 17Iinstitute of tQpolytechnic state university football team O;plane cO;ra31N;e0K6h0KA;old 2QH;in';he,o O;c2VLjaJ;ca128;! O;fl28Win2XL;b landQndar ofO; saO;in35J;ryO; j37M;iumRulO;atorPusO;! of vari32Y;! sp326;! O;cQhOo1X5;ydO;ro1X3;aOh1QT;rboO;naH;bOis,mity ja6;arz2rA;l00nWrVtO;lPríona bO;al391;inPynO; jeQD; fO;itO;zgera37R;n4Wo;! O;and PvelasO;qu31W;abI;ee spae246l20I; Of2UH;ch2KK;arOi2TO; R's1GPeanQi2s supO;erO;do38Q; s219;anQciPsO;al34K;ph0;d 38L;av0buLdysVe cuSillacPmi2TFuO;ceD;! elO;doO;ra2FC;nnO;inO;gh35D;haJ;ci3; c00aZba2QJernet sauviYinet of Sle Qo sanO; lO;uc38B;teO;le0R2;jRtO;he uO;nited O;k14Dst2V8;oe bO;id5;gn2;l,r34D;alO;lowK;reactive pro28Hs0IT;dRmQstandardO; lO;ibraL;aj34Gin34G;ata Oynamic memory al1LI;typ3; 0IO-0ILa06Sb06Gc06Dd06AeWSflixWRhW6iQRjQJlLVmLUnLRoECr4Js4Gt4Bu03ySánh mì,éO;chamel J4la bartQrénice marlo2W7zierO; cO;ur2WW;ók; Vford dolph4juTron RtQung-chul h1zantiO;ne Oum;em2SWfZ1;ed1M1;ho77leftO;wi2VV; raveeO's;ndr1;dawn's early34Cthe grace ofO; theO; go2W7;b3Qc3Id37en34f2Lg2Ai21k1Xl1Em1Bn15oy14pr12r0Cs00tSzzO; PfeedO;! unsolv32I;aldr4lightO;ye9; i'm a cheerleUch cassidyTtPyrO;ic34K; pl048-numb-a-08AerOoc2X3;fly PmiOs stot2VHworth0E5;lk;ef0BWkEE;! and the sundanceS5;ad0;an,hYinessTpi264tPyO; philip2HFb285;a rhym3er O;doPke2YDwO;el2V8;ugl36T;! P-to-O;busi35O;i0W7j332mOpl373;a14LodelO;! canv36O; 1Y3i2DG;a0Ab3Meauc0QRg07j 04kina faso10Hl02m01nSrRsa,tOun2UJz2RE; Oon upon t1UP;bachara2UYkwo0DIl0JBreOwa34By1DW;ynolds2ZZ;a36Wi2O8–hamilton duI; UaTham-on-s30Iing OlE;mRofOsun 30S; wO;asO;hi1T5;an,o08M; b1TYby;afterOno312; rea2K1;aK9es2EP; Oe292;iv3;alPkhO;ali20M; ar0WU;eOun2P2;r 2R8ss meO;redi2O1;kPri dO;eat0ML;um4;enorp22MoO;pi2;an1DF;desSgQk'd,ningsOty aur bab2WL; wO;ar1LF;al33Kie,o strayO; do32J;li22Ht2AYwe2T1;blePpyO; j2Y1;!b2XD;g03im18Rk00lO;! Xd2GBetQfPi2WNp2N7shit O;jo1AA;igh35Q; Pin boarOproof ve327;d 16W;cl024for my vQjOti35B;ouO;rnM;alO;en0O5;sOt1NN;ha316; mO;odO;ulD;arOur;iaOs;!n 2DK; missPayo Oka26NoDH;sa29Y;ilO;e 16F;ckVldO; Ring O;information mode2XGmO;ateO;riM;back better PdiO;vi1SD;a2G3pl1;! rCV;attiTsO; Ry O;maPsiO;egI;lo6;bun1ZQ;! O;aQchPveO;yr2;ir2;utomob0UN;fPord puO;ss0;alo Ter oRy O;sainte-Pthe vampire O;sl2JQ;mar31W;verO;fl320;bTsQwiO;lOng;d w30W;abr3oPprO;ingf1FS;ldi0;illRuffalo buffalo buffalo buffalo buffalo buffaloO; bO;ufO;fa2V9;!s;a vista Oos aMJ;socialO; cl00I; Xa0CRdOgerig9we03M;aVhSy O;eQhOri2S3;acOol2OD;ke2UR;bs5;aOi2U5;ho33Ns of bamO;iy1; b3A;g1Z1s2SX;hUkO; 1HZet2Z8inghamRminster fu2UHnelQwPy baO;rn3;he2P0;l 0W9; JXsO;hiB;a1OVenwald0JQ;bleOonic pl2EY; Qgum O;crO;isF;guppi3so33At2X5; g2KQdi1QJrRsO;! O;a2FOin the so2AMsiO;ngle2FO;fs;-t17QdOe sens32F;! licO;ens3;a7Ee5Ui2Eno,o0UuYyOüno;anQce Oson ti2TW;dallas OhaCpapenb9Ly1A5;ho2H; Ob1QE;adams1VXb066cRdanie25VfQgre230lOQsO;i2LAtO;eve2V4;erL;a29NranO;stOH;ce 04g3nWsRtO;alisPe-forO;ceCQ;t 0UG;hless dc electricQselsO;! O;a2Q8spro0WJ; mO;ot2YY;ei,hi30Xo O;delboTfernaSgRkQma30BsamO;marO;ti29Q;ir2XC;aSHuimarã3;nd3;nnI;a00bYca233dXedwards iWfVgrUhSjeJ8l2TVmcQspringstePwO;el2QGill1BR;en1V8;giClO;ar5;arEKorO;ns2X2;een28M;orsy2JW;viN;av1XCe2R8ic1AD;oOuJ;udRPxlei4V;lOr2QS;migh2VC; dad2KOad10c0Zd0Tke0Pmi6n0Jok06theZwO;nQser O;exOga31J;ten2NJ; QiO;anOng hi-p2GJ; mo2X4;be9dQmarmorated stink bYLrOsug9un1JA;at,ecluseO; sp1H8;waO;rf;l,rO; 1L6s O;griRof O;iPjO;esD;ta2LW;mm; lZe WingsTlynO;! PnO; pr30B;bPde0G3nO;e2WSine-0US;ecUKr2IU; iO;nstiO;tu2WJ;b03IdPhOla1NOmue2RYsh1BI;og1;'orsK;op2TO; Rch179ny3Iski be2MFtQze O;a2IXstarO; m1B;o2LXë 1S5;breOs2SD;akk0;back 02Vn O;arrow kPf7BwindowO;s 0IY;ill2XC;erickRieQy O;dOjeHM;al7; l2S7; crO;aw1QE;co2R4k lesn9;ba2WFcRsQwayO; tO;heatB;he2WK;astOh0RV; syOi8;ndi1ZX;an26c25d1Ue1Rg1Fn1Ds1AtO; 17a16b21Bish Xney speaWp27OtO; Tany PneyO; po1QV;da9TfuQhoPmu13No'gOsn2XU;ra2IZ;wa2XP;rl1;bOek2SYro1B8;ak0;rs1T1;a0Pc0Idarts0Fe0Cfilm instituHho01Fi08m05n02overseas00pYrWsUtherm0KOunPvO;irgin1XS;dergraduate degreePion of fascO;is2VH; cO;lassiO;fi1ZF;hortO;ha2VT;aj,oyO;al 1QZ;aOe25X;ss2NC; tO;erri2QM;ationalOoYS; p2SZiO;ty1K3;aPuO;se2K2;la273;nPsO;l3rae1IQ;diaOva2L4;!n ocean0FA;mpireOng29S;! mO;edM; orgaO;niO;sa2UL;olOui1IK;oPuO;mbA;nizationO; oO;f the amerO;ic2YS;cademy film 1OAirways252mericaSnd american keybo25DrmO;ed0BCyO;! oO;fficer rank insiO;gnA;!n tobO;ac2KS;in's g1IWnnA;mOsc0E3;ar2R3il2OM;ba6k2UTtolO;! O;beauf24Bold vic theatreNSstoolW1;e,g me the O;horiz2;adeYette lundy-p1MThSitte O;aQbard2YOmPnO;ie0M1;acr2;ub0;am youngStO; P's2FDbu2NLli6onO;! and ho2ND;meO;moL;! 0QZ;! comba0ED;! Pf enO;cou1UZ;la2CI;eshead revisFDgO;eOit m12Q; of no reVrt2t Owater associ2KY;cSfRjones's Qk2BYmoynPrO;eg1;ah1;ba2SWd1XQ;on2VT;hrO;ist2VC;tu2N2;k,s; Ona hildeb09I;austin0Ib0Ec0Bd07e06fl1YCgr05h03j01kZliYmUoTtyQwO;ilO;l173s2;l0reeO; hO;enL;'coEJr1K7;ay,cQichael bePuO;lr1KA;ndF;fa1ND;tt9V;eOilmea1KU;i2F8mp;ag1KSoO;h2PLn3;aOoy0;llisKrt2KA;az0ee6;no,ps1XK;'arcyQePoyle-O;mu2GY; pal2P7nne2QI; j1VY;l29MoO;nlExO; f2QB;aumgQen1Z6lOo1NA;eOo2C2;ss2S0;arU; g1ZR;a0Nc0Le0Hm5nXsenham's lineRKtOx2T1; Uman 2FZon082tO; Oe harHZon wood0AU;favBgRhun2QJkavanQl2ODrOso169;aOypi5;tn0;au2Q8;eIOoUW;easton0D7ha2WMmi1ZJwO;ei1WX; light03dSnan lee muHNtOé97; QfordOon thwa1X8;! communityO; s1MM;ri1LBsp0Y7vena28N;aPon O;ur2TW; Tn O;c0M1ei2KKfrRgQhu2FVo'cPpOschaSW;en1RC;ar16A;le1TJ;as0;bleth1UHfri0B2l2NTsPvacO;ca2KA;o8t1SN; mO;acO;hineO; g2V8; o1YZdOze1N0;erOon on the XY; rO;ea2IE; bas2DTkinO; m1AK;d00kRstO;! O;ca2L3fO;etis0XB;-up of tVbe2H7coBfast149ing Sthrough starRupO; of yO;ugoslO;avA;sh2VT;bOthe w208w2GJ;ad,enjO;am4;he bea2F4;bTfStO;hOu0X6;-firsO;t O;seY6;ru2RJ;oa2SW;! 1Oc1Nd1Bhm16i12m0Zn0Bs06t04un02veXwUxton berri2MVy wya2M8zO–ketIN;en SilOze2T4;! nQian O;jiu-jitsuOportugue2TGreM;! rank0WF;a1OSut;buC;lOn gp; sO;ta2SW; PhOly defMB;ea2UZ;gPnO;ew2TB;ir2SO; stro0ZWschO;we1QT; Oisla1TI;paJ;sOílA; Oica olerac2OL;iPknuO;ckl3;nstru24I; 1JIch08dO; new cherry fl06e03iYoOy nor215;lini1F4n O;burl1KUflVl2M5mSnRr265sOtee2FR;andersonPtO;alE;! 23Z;ov1QI;aPoO;re21P;rs1N2;o1HWy2CH; Qn O;c2K1eO;cho2S0;cOlo2J9rh0S0;arli7yrD;iPnburgO;! 29V;s 0MU;av2QI; david2IXeO;s ofO; s03Z; Opt2;cOst23M;oh5;l7nO;!fuJly,stPwas93–computO;er0QH;em,or1VX;aRiPosO;!-2PK; On;sc0PA;!n; Uford city stadium 2OMley O;beMco164fQj1SGwO;al2KYhO;it1JE;ightingO; vO;eh1I5;aRbi2R0dour0PMfalQg19DhaCpOrenf2HJ;ai0TUiO;tt2MN;ch004;ll1;hio2ECk2PG;siQ6; 6Za6Nb5Aca jun59d51eing4Yfu2P4g4Uh4Oiling 4Nja4Mk4Il4Amb3Wn32o2Er1Ls0Yt0Tu0Kvi0Gw08xZyQzOötes vo2QI; scag2PVo theO; clo2Q3; Sapati sriHUd hQle1DPs over fPz O;ii2R2n the 2T0;lo1GO;olbO;ro2JO;ba2OYeras2O3ge5EmQscoutO;s O;of11I;eets2RB; U-Rer17Qing O;career of mOdK;anny pOuhammad04X;acqui20J;drawingOoffice bo1J1; charaO;ct0;jelly10Yoffice moOpl2SW;jo; and a31en T3ie kUlQserO;!'sO; fuL; Oi8;chaOga2SA;llenge246mpionshiO;p 0UT;ni2S1;d2EAne spongiformO; encephalO;opO;at2LQ;di1H2gainvilleVnTrOvet 0GL;bon PgeoOn23V;is2PR;restoration in PwhiO;skE;fr16I;ty O;hu1OY; 0GDa;a1N3f2CLsTGtPuliO;num tox4sm;le Oom-tier character tomo0AA;roO;ck2O4;e08hin1LInia04on,p21Is02tonO;! O;brZcXdyWlVmaRred s1SXsOtea2LAun19I;co2IStO;ranO;gl0;rathonOsFF; bO;omO;bi8;egM;na0M9;el0O3oO;l191nsulting290;ahm4uiN; lBOa O;no1Q6; Pks,n O;ge0ISla1ZSw9;and herzegoO;vi2CL; c19R–einstein condenO;saH;a0Dde09ei-1UKg,i02nYoUschtSussia PzO;oi;dortPmönchengladO;ba2FF;mu2N4;! O;be0DR;bud27An,ughs ofO; nO;ew yO;ork 0YC; Oeo;to PwithO; horN;d2OEr2Q3;c2O4s O;iii of buSj2J3kQpastePsOyelts4;hcherbi2C1pass1PD;rn1MV;arOodj1DA;lo28O;lg1CV;a1F4rO; Oline0R8;coOgateway27H;ll2O3; PcKtOx;! subsequent movie2LW;boG;boo s0Ag07kUlean Smer esi2MStO;i8syO; cO;olO;liN;alOd2EBsatisfiabilityA2;gebG; QerPsO;ma2Q9; priN5;dWof O;bUdSeQg2FBisai2G4j0EKk11FlevitPmo0YIreve16PtO;he1H4;icD;no2EBxO;odD;aOeutero5E;niI;oba 2O;eposi2OY;alPiO;e n0I8;oo0EV;te1SN; 0Ga0Cd08e00gUham carteTnQoPs2E9uOzibud28N;s 1H2;!bo;!ie O;and cly1D5bed1T8hu298lOrai2GNt1UQwr2MI;ang1FJ;r 1GX; jooSbongQcloudO; aO;ttaJ; mO;arc2H3;n-1KE; PyO; k2ET;maStO;hugs-n-hPomaO;hawk;arO;mo1KB;rr2MX; Qage positions andO; mO;etho2DV;giRQ;iBnOr19P;noOza; cO;rim1GA;iv0jovi1I1s0CJ;aVeUing of O;dresden PtO;ok1UU;inO; wO;orld wO;ar 2KN;!rm1;rdier globalRyO;! sO;toO;ck04E; eO;xp1ZD; b2NQivAly1V5oQshPtzmann Oza1VXé2CP;b29Cco01CdGE;evi2EC; yRgnO;a,eO;se O;sau2NI;eu8; ch1BUePo h1T1u no O;pi2AD;em woodOh;bi6;ck hors14Ana novak2OI;fr1YUp1OE;emiaOr18B;!nO; Oi2EJ;clKOgPrO;hapso26X;ro2D4;danovPeOotá;ym1; aO;ffa2K0;! O;commercial airpl0H1dreamliO;ft0;hiUyO; PbuO;il21E;dysmorphic0OFfat percen1PHhPmaO;ss2MZ;e296oO;rr2K4;dh2FPsatt1MC;io2LH; 0B's bur2G4a09bRcatPslO;ei2H4;! goldthO;wa2JP;i02y O;b00cYdXfVgeUhop2BHjoe TkotiJlSmQro2EWsPvi0YJwoO;maJ;an2C3ea7hmur2LB;cfeOoynih1;rr4;as28Ree;lo8;or259;arOis1NTlK;reC;ar4;annava7hO;ar1JE;e2IVon3ro2K0; kristinaPeO; ge1VO; bQA; On mar1RA;fe2DW;b08c07d05ei1N9f04g02h00ig0ka6lZmVnew2FOodenkirk2G7ro2LPsQthPue01SwO;ei1N8i0RT;e bui04U;aReOtoo1X6;g0mpO;le O;ta1M8;g2IWpp;arleyQorOura0X8;lEtO;im0;! and the wailer1Z4;az9ea0HQ;earts abisho2LYoO;pe,s0S6;eOu0XL;ld1M1;os2KP;env0o7ylO;an1FF;hap1J9ou188ra6;aPiO;sw2M5tme2HZ;lOrk0;ab1;!rdOz and ja1PQ; TingBEsPwalO;k 27B; oO;f O;caO;na2JZ;ga2LSof O;control for crickeQdirO;ecO;to2JT;t 1TR;bur0S0dOj1NT;aOer1IRid2FN;ll2LO;p parib2LNsfO; rO;ailwK;aa,p 032w;a27e23i1Vo0RuOythe da2O; 0O-rKeQmhousPrredO; l28M;e UM; 01's c22V-YbeXgrass16KpVsTtoothO;! O;lowPspecial intereO;st22Y; enO;er1UC;! 24LtO;ac2B7;oiOri24W;nt0Y8;a2IWrL;collar woC2eyed Pfooted boo2G9ringed ocO;topD;so0J9;ar06b02ch01exorci2HSfug284iYjaXloJmVoUp275ridge TsSwhalePöysterO; cu07T;! O;challO;en233;c2Rky0DH;mo0I9;rig4;an22FoO;untain03Ev2IG;s11Ky;s the warmestPvy O;ca2DS; colo211;ee2J2;aPeO;et7;l2IInO;is0SB;chi29Q;del bOhu246;arr1IO;c0Lemfon1KYg,nd0IoOw223;d00mQns towerOp; dO;ef0IY; V's taTberg RsburyO;! O;publisO;hi8;billionairOcommod1Q6us aggregate bond2JM;es2JL;xoO;no0FF;fi0QHinO;to1BK; QbF7houndOs,–brain b1PI;! O;ga8;alcohol0N6dZe0PGin bloodUJlYmeri0S8of WpVrTsRtypePveO;ssI;! distribuO;tion X5;iOugar sex mag1F0;mp7;edO; s1IH;las2BZr02V;eOzeD;lv3;ibI;iaO;mo2FP;e onPiO;e 2BJ; bl02J; p2D3kO; QbusterOchain23L; lO;lc;cipher mode of Om1ZK;ope2EX;nSpRtzkPzzardO;! 1T8;riO;eg;pi;dOg 1VRk2FJ; Oing l0BN;fRTmen and an1U4;aQnOtchley 0ZD;d0heim O;pa22C;ch,k2HD;c05de02i01ke Wnche TstSxploi0ZCzO;bl27Aing saO;dPmO;ur27I;dl3; furna2I3;deverPgO;ard4;ea17D;bRe1PBgQjeVlPsO;he1F5;ive23D;ri027;eCor22E;re0Qse pa0YH; Oe;ii,ruO;nn0; chy23VkO; 05-YaXbeScRfa2HPjaJkklQlPpOroJs1RB–scholes12Q;ink1BMo2HQ;e0JGig2FE;an1M7;ur1DW;a2G2rryO;! O;lOos;imO;it2DG;dd0;and-red broadTboOeyed p2C6i29P;dyQxO; tO;es2IB; rO;ad0LG;biC;a0Ob0Kc0Hd0Eeyed pe2HYfo13Kh0Dl08m05narci04or03pZrockWsRtQvOw0EX;eil Oul24P;br147;ea,ie;abbaRcPea,to6waO;n 007;reen O;of0E9;th1AX; sO;hoO;ot0;aPeOud1VE;op7pp0;int2EDntherO;! p2B5; w0QF;ssD;aPetMiO;di,rr2E1;fi16Rg2HUm1YRrk2DQ;aOives ma0IF;beOgo2;l O;soO;cie2AW;ebrew israel1I3o7;ahlAeO;a1Z7sert O;on24C;at,lPoO;me203u1PW;ov0;et2AOiPoOu161;dy,lt,x;llionaO;ir3;d2DUnd O;taN;arne strouUörOørnstjerne bjør29B;k,n O;andrés5bo1ZJirQuO;lvO;aeD;onO;si14B;str1YC;a4Xb4Nc4Kd4Jg3Rh9j3Okini3Ml1On19o0Sp0Mr0Gs04tQzO; Oaardva2CK;mark2E9s197; 0XVcXdeWlVmap2FZtRwO;a1N8ise operationO;!sO; in c;erPorrentO;! traVG; sweet sympOs;ho1BK;oVDy;fe18W;hQoO;in SJnO;ne1RL;es br12XuH;exualXhVmPpectr2FKsagO;os1E5;aOu1Y5;ck biyQrck-O;class bO;attle1S6;omO;bo;k1D0opO;! of 1ZJ; Oi29J;fl1L5; taw1SRch,dSefring2DDkin b1L4minghamRthOya25I; c1LLdOs18F;ayO; pJH;! DV; of prEs aren't M7;aQin raw21Bolar O;d0GIjunctionO; transi0OU;rtiteOsha ba11R; gO;raIX;ch03di02infor0C5lZmVnte23WsPtOwaB;ePLin;!afetyRhockO;! iO;nfiO;niH; lO;evI;a2E8eO;!dO;icalO; e1RR;ogOumine1U8;icalOy; immortaW9;esIv0WX;emi06B; lade01aVdiSg crRomial Otu1BP;coOd70nomencla21SthEG;efficO;ie1YN;os2A2; iPng of iO;sa0D6;rw4;n2E2ryO; P-coded dO;ecimM;co12Che0E4nu28XsOtr26I;earch Ot9;a9Ltr26G;n 163;b1MId1Ie,i1FlOtmore esX9; 0Pboard chOUi0Iy O;b0Ec09d05eZgYherXid2DVjoWmSo092pre1C6rayQthePwOza6;e2BAiWO; k2BY; cO;yrD;agPiO;ll11O;nuO;ss5;el17I;ri112;ibboNr72;icSlliotO;! tO;heO; mO;usVX;hn0;ePoO;nov1;e O;wi0NJ;a1EYoQrO;ud1VLyO;stM;nnOrg1;ol1YJ;ea6ob thorO;ntO;on277;e PonO;aiB;eilish16VhK7jPlOp0VQ;ou2BE;eanPoe aO;rm1A8;! 1YR;ac0Bb07c02d00eZfi1W4gXhWken0MMlaimbe0mTnSpPr4Bsk19CwO;at1S1itJVym1;aPo21OulO;lm1;rc0OUxt2;e1GJig26Yye;aPe27BuO;my,rrK;cy,h0;ad0ic239wa8;at3oO;ld1VX;vaN;a1YKe blO;as1BD;a0J4li0ODoOu1K5;n0ZMsbyOwh0;! sexual assaultO; cO;as3;aQeliPix284loJrOu263;ys2;chiJ;ilE;km1;bi23Mnear iPrO;ub4;nterpo0TH;erberg mPungsrO;om1;ee2CY;! aO;toC;ec288ouO; phO;illi1N2; S-boxRfo2CWgOil; Pest ball of tO;wi6;bo2BE; s0YC;b05c04d03ey3fZhit0XJlYmac1IFn29DoXpharmaUsTtOw;eRime Qrouble in littleO; cO;hi1XP;adole1RCru23U;ch,n0W7;e1h2A2ur,wo7; cO;onspiracO;y UJ; no0SH;!ie,o21B;iQlPour accounting fir2AAreO;edA;op1I7;sh,ve personality trai27Q;a2CCiG8;at,ity grOG;aRen,ottomO; mO;asO;sacB;ng,sh1NH;et,s to college bowl0OT;e1M8hon fPycleO;! t155;ri2A3; forWiUlO;eRiO;cal Oog254;apocr09LcOma1RC;an2;! bO;eYAlaJ; a3Wmb0AUsara assaubaO;ye1AA;tu1WS;fGnca PsO; of an estim1V3–variance tradeo1TG;bePjaO;gg0;la27H;aZeeXoUp,uO;miQsOt1;hanO; kYO; pednPbol adulyadO;ej;ek9;oOpal20U;l bhulaiy0AJtO; po25L;mOshma parv27V;ante vaz1YIla nay176;d bhab28KgSrO;atOti ai036; Oanaty27Riya janata24Fpe;ane neOrat1W7;nu;aPyasO;hr22I;t24Dvad O;gi2B2; mo1CW;a82b7Zc7Rd7Me77f6Zg6Uh6Oi6Dl56n2Uowu1FVr19s14t02ulah bon1YJverlVwitch25VyO;bladeTonO;cé13RdO; Oer;good and Po0O6the bounO;daL;ev1ND;! burst quadd1E1;eyTy O;cl8Pd'Rhills Oj22S;c1HXhO;ighO; scPU;ange21M; c1QP;a0Lelgeu28Mfa26Fh0Co o0Bsy d0AtSwO;ay,een tO;he butPwo ferns with zach gaO;lifian0JY;toN;any03eWie 1M9y O;bScroP2d1DBfo27SgQwhiteO;! f23H's off their rO;oc0SE;iOr25M;lp4;o1HHrO;a1TKoO;de0FL; SrO; Oidge's law of headl1WX;businessOcall sa07YwatchKC; buO;re1NW;davisOmi140;! 64; huO;gh3;ra1B6;'ro13U; Uany RePlO;eh11K;nny fraZNsda O;game020sof0UE;ha15Tjoy O;leO;nz;beh27CharOp01E;m2t; O-methylamino-l-ala030;bPdOfu1U5is1X6;ecKis18;loO7;lan schoolQsPt bO;uy;a1ZBel 1TZ; sO;ie1R7;ber17et29Eg14ing13k0Wl0Nmuda0KnZry gor1S0sXtPylO;li1TR; Tie caSolt brRrand O;rPtraoO;ré;us16M;ec25U;rvI;con0M8kreO;is19I;eOh1DO;rk0;!aUeseTie QoulliO; O's0AE;d0Mnu22T;eccles117maPsOtaYX;an0KX;c,do1QN; mountain1J9;dette ZrdO; Qine evaPo O;bertol17Ms179;ris1Q4;arnUbressl1XDcRhQkPl205moO;ntgomeL;ay,er13H;err1QLiCop0E3;oPribO;biN;rn0Z1;auUZ;pe0FXsoubiO;roD;! tO;riaO;ng7;anti H6inO;! O;bTco0RXiOwaC;nternationalO; fO;ilmO; festO;ivM;loc0SDrandenburg1VL;eley Plee college of0SWshireO;! ha0C4;balconyRsoftwareO; dO;isO;tribu238; collap260; stYFia;amotPenOha4maVY;!-belsenNZ; or1GD; l1HTs; 14a10d0Xe0Lford0S5gal0Gi0Aj00nRoit mandelbr27StleyQzO;e6odiazepineO;! withdrawal1QX;! continental gt;iTy O;aQblPgOhiC;oo130;an1TF;ndO;er13P;eOngton0OQ; thO;omV2;amOi ma0X5;in QínO; arellano fO;él1N7;bSdisrCXf00VgrRhaQmPnO;etanyaE9;en1PWillepi225;rr12E;ah23R;ra1XX;ciRgno aquinoQk afo08On,toO; musO;so02; i22P;o del O;to1UX;! QiO; Os;al02Fla1F3;c1S6pOt06I;resid0E2; gessYathUdQil dariu1Y1l0V3ttonO; fO;ormu25Z;etta carQict O;ar142cOwo8xQ9;umberb03B;li1VZ; the pO;lanet oO;f the O;ap3;er22J; it like bOy and the inkKQ;ecO;kh230;drQy venu26GzirO; bhO;ut1NQ;yl;a0Gb0Cc09f07g04h03kingsl02mZnYpXrTsOwhiKW;chw1YFhRiPtO;e4ill1O3;lbOm10B;er1O5;api1U3;eQi0B7oethlisO;beO;rg0;il1QE;la1WS;evF;cPendelOi1WO;soKF;kenz238;ey1YZ;arp0;azzaGerPibOurion1TA;ba237;ra236;alOel115ol1U9;co6;a1JWhOro24A;aOil0W5;pl4;ernan16VrO;eretonOoDI;! O;díG6;ffleOskr5;ck1YK; po13Za0Qfa21Ug0Ji0GlXow deckWphVsniUtPuga Oén cu0FI;wha7; and roadRrán-leyvaO; oO;rgaO;ni7T; initia1L2;ckI;eg21H;! mediterrane1; 05's 03aUe TmanO; VB–fordO; aO;lgoO;ritO;hm;delp11Dkn15Vs04Iépoq1SZ; RmyQtO;or m1WUrix lesO;tr1DG; y0BV;ci1CEhQpo7HraPthO;or6;msE;ad21VeathO;coH;pOth3T;al0QD;h1U9la093pe8L;al,nda cOsa1DMze;arO;lis7;iPraO;de,vA;an OumY0;cQfirst divisionPsO;heJY; a;on0S9; lugo1UPlPrusO;!ia0M3; muO;hamm1ZR;jingVnOrY1; Sg O;john malPtheO; ricard1VKre;koO;vi1S5;spO;or1ZG;! O;capital 1RCsO;ubwK;aPeO;mo1LL;n22Sti prinUGviorO;al Oi1U2;eOsi134;conoY9;gOinU;ars banQinO;',g theO; ques1YY;qu1ZN;a1OOoreO; PigO;ne219;mRsunQtPwe 0RFyour O;ey3;ri1C6;ri21Js1ZG;idn202;! 00chWf TlzebSrQtO;leOro23E;!jui229;! hall puO–lambert0NQ;ts1RC;ub;stroga092wO;elO;li0PM;!craft O;bonPkOsuper kO;ing1YY;an143;and puppyc1OCgeOm20C;es0VV; Pe,iveBknobs and broomstOou4;ic1SL;bPsiO;ze;ug;ause this is my first 228hdel 0KJkO;! Ry O;g,haC4jPlO;yn1QT;ohn100;bPweO;at8P;en14O;e Oop;bueCneuwOrex0R0;ir1K9; 0Och20Kg7nie 0Lr0Est09tZuPvO;er,is and butt-1XZ; TfortRty andPx-artO;s U3; the bO;ea1YT; sO;ca7;bPfO;ly1KA;id5riO;dg3; Ules for Tn0X1rix Os0L;oOpo02W;f tO;he nO;ethO;erl0ZS;sa7;gPit,sO;ab0;ene1X7; Ra1ZMiPs of the southernO; wi206;e O;bo0U5;b0P4of gévaud1; QdO;!more inflexO;ib7;br188gQin the big blue1ZQmccrPsO;tearN;eaL;ryl1Z8;baPfeO;lds11R;bi3;aObenader1XI;rth1HI; 06Oo worldOsm; dO;art1D3;gOryWUs national championship 1L7; vO;ac0OZ;cRkO; eO;lectO;ro07R;! O;fTi1G9ne1RQo6sStRworldO; sO;erO;vi1ZZ;hr1SHwo;po20Utu1SE;il1YV;'athisBEal,bB1c9Zd9Ne9HffiP1g9Eh9Ai96j91k8Tl7Wm7Un6Qp6Nr4Gs3Ot08u07v0MYyPzO; luhr1IWoo15J; 01eTlor PonetOwXJ;!ta;beaQuniversityO;! sexual assaulO;t 1US;rs132;r,sOux tapeRN;' Sian O;i0KBn073pPsO;tatisWZ;robaO;biHE;thO;eor0SA;city D0le11WoO;f OvM;bengMpigsO; inva1M1;douin10GhaDxiH; 31a2Xch 2Tgi2Shs2Rm2ItO;a0F2leO; Vbo1VQcTfieldSsO; of QhipOtar galac02N;! pO;otemk4;khalkhin g1Z6lexington and con04Rnarv0V1the ison1OE; v;ruO;is0;angel ali205hymn of the2OofQroyalPtO;end07Ahrough the hea78;e 1JV; Pf sO;am9;a1Yb1Qc1Hd1Ff1Cg1Bh17i13jut1SOk10l0Tm0Nn0Loki0Kp0Hrorke's dri048s07tQuh1F9vPwatO;erl12B;erd1YXiBF;ara13IheRippecan0M8ou1XKrPsuO;shi1RR;afaOe0AQ;lg9; Ormopyl1LG;aVbUcTfalkland0XEhydasp3little big1OSphilippine1DRrQsOteutoburg 0KZ;anta cruz0XDchOom1ZA;el15T;iverO; pO;laH;atalaunian plWNho17oral1DL;oy6ul1HD;la0B2ssunpinkPtO;lant1ZL; cO;re0W5;aVekY3hTtaPuiO;ya8;lPmford O;br1GT;inO;gr1UR;anOil1F0;gh1NH;ip1lOragar1MFvo NA;amF;asschendae7elePla1VZolta0XNrincO;et2;liu;na12O;ew orlO;eaN;aRiQoO;nte casOsc1WF;si162;dwK;da8nzike1YOraO;th2;eSoO;ngeQsO; angO;el3;wa1XW;iOp1G0yte gu13K;pz0UF;aPhe saOorega2urXF;nh;de1PRm0ASsserine 0P4;a dra8sandlQwO;o O;ji1QD;wa1JH;aQoOürtgen 0JN;ngO; ko8;st1US;augame1XIettysF1run0VS;ort sumt0rO;an1X5ederiO;cksEY;ien bien p56riniumorOunki1TS; r1SO;aThQoronIrPullO;od5;eHé05B;ancellorsv0SQoO;sin reserO;vo1TV;nn1JNpOstle iYO;orO;et1FA;aUe83lair SoQriPunker O;hiC;sba6ta4;ro0D6sworthO; f096;moO;un05M;dr,nnockEO;cRgincQl06PnPp bVMusterO;li1PT;tiet1U6z0VH;ou1XE;ti1HZ;anPoO;bi7;! O;beSfQi1SLrO;etO;urN;orO;ev0;giNyo1T2;he1EA;rl;fi7nO;ormaO;liO;za1SE; c0FCan deathPvianO; r0L2; mO;ar1L2;mas1B6out of O;heC; ruFJal0De08f,h06iUketballTma1W5que80sQtO;et,iO; vaman shen0K6l7; Oo2;guOre0PY;it9;! p0FR;c VlO;! OiVJ;bSiRjoPof caesG4rathO;bo6;seO;ph;i,wan0XR;ro1TA;accessQfighter maneuPinstin17JreproducO;tion 0UH;ve1U5; authenti0VV;arOkorto17C; al-ass1RV; rateRbaClO;! O;i1RYpO;robl0O0; falla03H; Ot;ganY0metabolic 0D5; 1Ra1Mb11c0Zd0Yen0Vi0Tkhad ab1JQlEn0Mo0FrWtPuch spino0X6yO;ce0SSon; SholomewOon fi0VE; tO;heO; aO;po0KQ;e127sO;imJKta1OP;a04ele03i02on01yO; Omor0MY;bYc0AgXhuWjVkeo07JlTmanil1TCpeSsPvOw04F;an dy0X3;an07TeMonnO;enO;fe1U0;pp0;eOy0AN;vi1NR;en013;mph1MH;i056oldw0KG;on1K2; hi0RM;er transf9Pst0;ye;cu1T6nquO;il1UM;nRquePtrO;au1N9;! O;m0G4p12J;! Oet;cOfar016mor11Psame1IT;orb4; oTaSey Qum O;efO;fe165;mi1LTsO;ti1N6;c7rd0CA;wl;! wOto6;ei1TK;akedOts18Y; laO;di3;! c0C4;eOla0N4o0I3;lo1FU; and star go to vista del07aTec1IRiPra streiOu1SI;sa1QI; be05Me fQturateO;! oO;verdo1SQ;err0RI;d1M0rO;a Oi1y 09A;bWcorcVed5goUhTlu1FLnSorb0PQpaRsPwO;al01YinOY;inOtanwyJ;atG;lv4;iv5;a7ershEu0WJ;rd2;or1;aProcOu1LI;co1KP;ch,in; m9;cQgPngays of quezoO;n 01B;oo1TC;k oO;ba1LZ;and bat mitzv1JTkokhbaPrefO;ae1KG; revoGG;hPtisO;m,ts;om1PW; ki-1O2ana0Pco 0Nd0Ig05ished from the hero94jo04kQsh1LBtu 8Wy1zaiO; cO;har1BN; Ving 11GnoteUruptcyOsy;! of lehO;maO;n O;brO;otO;he1RB;!s of the pound0L6;for international settl1GPhRof O;a01Ybaro1RAe198mO;ontO;reM;olO;idK;!-kazoo1QQ; XaWk1JUladeshO;! O;liberaTnRpO;reO;miO;er14L;atO;ional c95;tion0MK;loBr0I6;br1KIsiO;-hyO;uk; on theR-Oai namco 12McaYO;ma1Q3paO;ssO; fiYZ; r1RX;de o1GTsanO;ta0L3;! Ora1KQ;fi1K0r0GSwa1QH; margeGbO;i,oo; gangadhar til0OMan0Hd0Be0Afour09i08kan07l00moral 0HFochi13Nr135tQwinderO; sandO;hu;hazar gISiPoO;!-slav12K;c SmoreO;! O;orioles minor league plaPraO;veN;ye1Q5;dPsO;ea,t1F5;ry1RG; lTad,eSistQon PpointO; p5;d'1OK;a,ic missileO;! s0VE;rs,t;ight1I8; 0ALs;!an of ib0Q9; decla1NC;aric0PQncia0OJ; Sr,ur's gateRwin O;fa0J5iv ofO; jeO;rusal0JP;! i1NL;and bankruNDeX2; woPce of O;na1EApaym1MZ;nderw1Q2;eShtiarp17TiPla0QBuO;!gan battle braw4A; the grapPng poO;wd0;pl0;liHr O;is1KCmaO;yf030;aPirao masOrangi bhaija1;ta1GV; californiaPjO; au18V;! s17H;du,konur cosmQlO;eOiwick of guer003;e mETys irish c1NX;od1AM;aPra4ujan samaj1KKáʼí fO;ai18Z;dur shah zaf9mO;as,ut;el,hd1MPpPuO;a,etHio;ip3; PkO;hy1Q4sang arts 0GA;doo1C4sO;u178ystemsO;! temO;pe1NE; Oen-württem19Bfi197g0mi01Voo;and cra174bUco0H9luck banging or loony Tmo1OTrQs14FtO;ea0RBimes at the elO; roya7;e0A9obot O;produO;ct1JS;po1FU;oys PuO;d19Dn0LK;foOii;r 1Q1;ar1E7c0Oh08kTon,tO;eriRriaO;!nO; cO;amI;a,op03G; TgaSpropaRsOtr1BA;la1HNtreet O;bo0IPrO;ook1NP;ga1LM;mm2;inUto O;bUsc5Hthe O;futureQoO;utO;baJ;! part O;ii0Z0; bO;laJ;chan pandEelorPman–turner O;overd0TA; P'Oette1J8;s BB;of Op1J7;ar1LBbUe124fRla1GHsQteO;chO;no0YJ;ci1N0;inO;e O;ar1L5;usinessO; aO;dminiO;st1KV;ar1AW;a Ye Xi y9o2ur,yO; T's daySlonOm0H3;! beQ's ash3iaO;!n capO;tiEI;rl4; oJ7;booYPdr1JWfacePke0H4sharkO;! d03I; ne0S4;ru16Z;vOya0LQ;an0LP;m,t irO;aq;flatPsOtr1GL;eg0YT; maj1LD;ceCm1MDposi14VvitaO;miN; 1IL-1IIa1GUb1C0c184d11Me10Kf0YKg0WLh0W4i0TNj0T4k0S2l0BPm041nNSoNJpL0qKQrDDs94t6Gu2Fv1Cw15x0Zy09zPşk laftan anlamO;az;a03eYiUoTraItecSurO; Qe O;drO;ag2;la6; 19Ss;r3v batta03I;mQthromyc4z O;ansa1KGshaversO;hi1; prem0P8u16D;alia bRrO;baijanOty;!iO; 0WQs;an1E6;dPtOzI;ho166; kashm1KCirachtO;a indi0D0;a06e03m00n Zo dosunYrWuSyO;appanum koshiy18TubidO; dO;ynO;as1HL;mQrve1M0shmanO; bharat yoOn khurra19A;ja199;i hama6Uu mura1M9;ton sO;en196;mu;ra1JU;an al-zawPeric laO;porH;ahi1JP;let zPshaO; c122;ur0; Tan hirsiShuas0CGko kawasu1FInO; mQePna pO;resO3; sakuG;uker0OB; a1E6;ca1EX;el tuanzeP8iPl UIoloO;tl;e infi9VomPs O;ba0MWpo0B0;! of chO;oi1MG;aQkwafinaO;! is nora from quO;eeN;ken1JWrds and decorations of the united states arO;medO; foO;rc3;a0Be06g1MZiZl 1B1n 0CIoVrO; microcontSil lavigRo O;lOvulc1;anO;ca1CQ;ne0G1;rolO;le1KT;gadro OidantNI;coO;nsO;ta16D; SaPcOgn2;en180ii;n0BItionO;! O;accidents and incid1I0;ar1ICkaO;pl1;nged sevenRrO;age human heighOro3;t O;by0V4;fo1KY; YlTnQstOt9;! antivO;irD; jPt-gardeO;! m07D;ogA;ancheQoO;kiteśOn;vaG;! sO;o06Vtudios13N;duveQgOm0XV;arO;dn0;rnK;b3Jckland3Id32g2QkDl2Pm shinrik0RZn2Lr2Gs14tOvergne-rhône-alp3;ar0KLe128h10ism0XoPumnO;! rees0; 0P-0Oba0Nc0Ld0Ienc0Hfell0GhotkEimmune130m02nomRpQregressive OstereoJM;integrated movingOm063; aveH7;ha0USsy;iVous O;administration of north and eastScommunities Pregion of bougaiO;nv0GO;ofO; sO;pa4; sO;yrA;c nO;ervouO;s MW;atSoO;bilePtiveO;! industry0TB;! dO;acA;a 3Ned tellTiOon;c Oon;differeQtO;ransO;mis173;ntOK;erO; mO;ac0HR;at0J8;od0;eskOidac0T7;! O;ma0SQrev1H9;ad,la1A3oOraSG;rre01J;hn;tu6;cRrO;aPickO;sh19P;ci8;liO;ck0;! O;spO;ectr15B;entic brands124oriO;tarO;ia19L;chwitz0WtO;in0Ron matthe1BBrO;al02iaVoO;-Sa0UMnesiO;an O;l0UNpO;eoO;pl3;prussiO;an0DX;! 0DX-hSn O;em15Gfootball bundesQpeoplePscO;ho1JE;'s1DN;li0GU;unO;gaL;asAiaPoO;pithecD;! 04n O;arF6b02caZdVe0UIfDTgUlabor1DGop5rulTsO;ecuritiesQhePuO;rviv1GF;phe1HJ; exO;ch0SM;es0MC;rand pr0ZW;ePoO;ll9;fenO;ceFU;pitalOttle0UA; tO;erri1IN;roadcasting020;dKnational Oz0M5;cPsO;occer 0D9;rickeO;t 0D7; Osh1H4–bergstrom 16Z;aPbu089powersOsto0A3;! in gold1DE;bra1HF; concentraO;tion O;caP4;angzRePBoO;cPraO;! tea0PP;hs;eb;g san suu kQjanuePt O;jemi1B6mK; eNZ;yi;d lang sy6iʻi craval0DX;mented rXsWustO; Ue Rine of hPo pinoO;ch1F3;ipO;po;cPrO;od4;omH;am3von mackeVC;bu11A;eaO;li1C5;iWrO;aUeO; lSy O;hPmeOtaut09X;ado19A;epO;bu17Q;or05W; mcY7;! Te muLVoOt; PsO;la17E;fiO;leO; form13Q;quatt16Ctt;! a15V;reyPurO;n AW; P–maturiO;n KF;anderson-em0CCpla0J9; 28a23e1AQh1Pif a16Nl15mospher0Yo0Kp 0Jr0Csumi tane0BtPx,ypO;icM;acVeTiPraction to transgendO;er 0O6;cOla;a prison PuO;s 0Y6;ri1I1;mpted assassination of ronald reOntion deficit hyperactiviIG;ag1;hmenYkO; Qing midfO;ieO;ld0;hSoO;f the dead1FKn O;mers-el-kéb1DNpearl hPrichard nixon's motorca051tO;it1;arb1DZ;elicoO;pt0;t O;thO;eoL;za0ZQ;angi Bial fibrilXVoO;cities in the congo fQpO;a belladOi6;on12H;reeO; sO;taH;c0YNto0XC;mPrvastO;at4;! heartYic SoQwaffen O;diO;vi12S;xeO;ti6;bQc0YPkiPnu1AYorbO;itM;tt5;lPombings of hiroshima and nagaO;sa0Z6;on048; mo12D;eRic O;prO;esO;suB;! O;ofO; e0QL;aPus,éticoO; madr1DS;ntQsO; Osi1;en0Q8moDNshrugg1BIv;aUiO;c Os;coaRoAOpuQrD8slaveO; tO;ra03Q;ff4;st000;! O;br0KTfalcoNhTmOunited 0J7;etrO;opO;olitaO;n O;ar19W;aw15T;anasius 00eTiSletQulyaO; raO;vi;e's Oic bilb0NM;fo1G2;na 8Xr1;i167nOrosV2;a karkSianOs13A; dO;emO;ocO;raN3;anF;of2J;camaQl bihari vPriOxA;! 1C5;ajpay175; dO;ese1FH;si0UOthe mountainsO; of mO;ad1E5; 3T-salamu alayk0ZZa3Obest16Yc3Id3He3Cg3Bh2Mi2Cking2Am26nawi mangku25obo 24p1Ws0PtUuQyO;lum8ImptomO;at1FL;nci8YraOs;!'sO; wO;ra0X2;a0Ger0Ch179igmaTTo07rPuO;ri1EZte-0IF;a02id li00oO; b02KbYlTnQpOworld festival crowd c0VD;hyO;siLT;a8ZomO;icOy;alZO;aGNogO;ical sPyO;! and the class124;i0U2yO;mbo1CL;io0NN;ndO;gr5;lOzene03G; pO;roj06Y;lRn martinOr 05W;! O;i08YvaO;lkyr1C1;fo;aCJiQoidO;! O;be12ci17Wimpact avoidSRmi14N;sk,x;rOti6;o0W7te;aZeWisteVociatQumption of PyriaO;!n 0KI;maL;ePion O;f0GPof tennis professio71; PdO; p0OW;de116;d sui5H;mbly 0MEtO;! BQto cO;or0VE;m,ssinQtaOultF6; sO;hak0U4;'s creed09ationO;! O;cla06of O;a01indiraZjWkim joVmahatmaZqasSreinhaQwilliam mcO;kiO;nlE;rd heydO;ri11X;emO; soleiO;ma134;ng-n1AC;amalPulius cO;aes9; k0T3; gO;and10V;brahamQrchduke franz fO;erdiO;na19B; li11W;ss0SE;! O;c34ii0MBoRrQsyndPuOvalhal1CN;ni16P;icaH;og11C;dy1A6riO5;arUeShQiO;c,rO;ated conso5Iin;aOyxA;lt;n 19rgO;er0WC;agDta1CO;stNO;al19M;l hQoOr;deDnO;go1B8;ol0QD; aO;lexandrA;aOcs;! T-pRn Otic RJ;am0NJel0NHfPgO;am3iant ho09A;ootball 1Z;acO;if1CS;aOcarWSkate diB5;rgO;en0TZ; vs evil03Da bhos7by-de-la-z0Ber12Cgab0XVi09kenaz08lSnik0KOokQraf gPton kOwini vaishn118;ut0CY;ha11U; kOa;um9;eOy b3R;eZigh b15Oy O;bXgrWha08GjUmToSrRsQtisPzuO;keYO;da7;co132;ob04W;ls5;ad07E;eOLuO;dd;ee6;e147id5; sO;imO;ps2;i je12K;sh vidyart0Z7ta noO; jYA;ou0ZY;a19Ahar farha0ZG;anRxualO; reOi154;prO;od03X;! football F8; rna mot7Qa;ePiiOleBL;! a1BH;nOti0JK;dance of a bookwo0Y6sioO;n O;is149; Rfoeti199p O;mPrO;oc09U;ob;akiGbutteMSh0I1;good as it Pmonaco 0E8saint-étiOvMyou like 17E;en6;ge16Q;a6Gb6Dc5Cd58e4Ug4Ni3Qj3Lk3Fl2Zm1Zn1Qo1Np1MquebDr1Cs18tYuUvind Tw5yaO; RbQn O;bOra1A5;rother1AX;ha1B8;sta16R;kejriwMswa63;ba,nO;acPdhatiO; rYC;halN8; 0Te0Qh09iVp0I8s and crafSurO; Po gO;atX4;beterbi12PpawO;loL8;tsO; mO;ove0KH;cZe Yficial OlleL;gRiVnO;eurO;alO; nH2;enerPraO;vi13W;alO; iO;ntelO;lig17O;l0J0sh0Z4;ho0BPles of O;conDW;dal01r00ur O;aXbalWcTduSmi112rimRsO;chopenhPeyss-inqO;ua1A4;au0;ba0PJ;nc1;h19Tonan dPuO;rr17H;oy7;fo0Q4;ndOs0Y7;ers5;itFop19R; cO;hroniO;cl3;!misO;! p7Bia O;absinthi0UAgentilesc0X3;bPca0V6de0VOfi151garfuOnouve0NOp0H2roJ;nkI;eCrO;il3;eniQène O;lOwe0RX;up4;c,o 026;ayUd111ested0HLhenius SiRoO;ndissementOwv0TR;s ofO; pOX;et12S;eqO;ua14P; data O;stO;ruc0VS;an15B;n ral06Koj aftPund the world in eightyO; da01K;ab;elUis,oO;lOn mil0YG;d Pfini portO;ra155;ma0CFroths09AschPvoO;sl0BG;o08Zwarzenegg0QW; piO;ne16Q; 0La0Ee01iYorWsTy O;of Qranks aO;nd insignia O;of0GK;d0I2thO;eZMi01Y; iO;nduO;stL; R5ed O;coB;e PnO; meiw3iD;haUU;d forces of XniaO;!n O;aRgePkingdom of ciOla0GP;licA;noO;ciVP;l3XpostO;olicO; chO;ur0WD;tPuO;krWE;he ph0V0;dTgedd2nO;dOi; Po O;bro004iann06Z;assOhaUC;anH;il0Z2;arO;chit0EX;eVington nationalUo QynO; pO;hoen0NS;gPpO;ar0XH;utO;hr154; ceme118;igh burkeRne O;daPmaO;rtI;hl;-classO; dO;esO;troy0; of the coveSanPhangel6CnO;igh12W;!ePsasO;! razorbacks09Q; s0YR;na0QQ;en robb5unO; PaO;! phalgu0SC;k0WHrOsarZ9;ed0PW; a0WQa0Cel09hant-0ABjit10Jpipr08st01thmeticWzonaO;! O;cRstO;atO;e O;unOJ;ardiPoyO;ot3;na14L;! O;logicRHme1pO;roO;grO;es0SG;aToO;phRtleO;! O;onO;assF;an3; r3D;azo7; Ole kebbI;castro kidnapp131pi05VshOwi038;ar2;dnUnO; moSa Oi0WPna huffiSX;deQgranPriO;ch0CP;deZ9;bo14G;ay119;a g0IWe;entinQiPonO;!au11O;ni6;aQe primerO;a divisiO;ón;! ZK; you Xa of a11WcRna fPpa,s,tha fO;rankl4;ooO;tball0HD;aRibo O;mesPoO;bserva14R;sa0NQ; nOce0RK;ut;afraid of the dark?,being servQexperiePthe onO;e?;nc10O;ed?;al o'hanl2eQuinoO;! O;iSXu0CT;nn3; 0N'0Made 0LhTtO;icOurD;! O;c11Cf06EmPoO;ce1;onkeXR; 0Ba04bishop02duYeXiO;e QmedesPpeOt0CCve of our124;laT9;!'6R;coSmPpanjaOrenaTLy0S2;bi;an0VBoO;untbatten-winO;ds11H;miBS;ry,ty0T0;chess Pke O;franz ferdinandPkarl ludwigP;giselaOmarie valerieO; of aUL;! of O;canterDNyo10L;eSicQnO;a purOgI;an0Y8; huO;maN;a,oO;lo0DIpT;ePlT0mO;an0US;neO;my;fiBga148;teryx;de triomp0SQsystem wP9;aaz PitO;ra0MD;kh1; general belg06bRchn11LgoQl0IImaicOny00Evinda sametha veera ragha030;! O;alY;n,rn; 01iQs,–israeliO; cO;onfli0FC;anVcO;! O;alRla0CFnuQscO;riO;pt;mera11R;phO;ab103; pO;eninO;su138;le0FDsp0G8w128;ra0B4;ib tal0LEuO;aOiline no11Z; SmaO;nOti2;! and the lostO; kO;ingd0IP;regAteen hungerO; fO;or12L; dhi25a1Te1Ph1Ki1Ho0RpSriQsPulAéritif and digestO;if;-c,is;c13Ll O;as0OTbowl0YCfools'FN;a0Ee0Bian0AlQointment withOrentice0FB; dO;ea0L5;e00iO;cationRed maO;theO;maO;ti9X; R-specific integratedO; cO;irO;cu0Z8;binaryOl0IBprogrammingOsoNO; intO;erO;fa120;! O;c0D6dai0NEiSmNVnetwork1Epa0YNrRsilQtvPwO;at0R2;!+;ic2;ec0RF;!d,i; wK;ndic8Ztite forO; deO;strUY;lachiaQreO;l,nt magnO;ituPZ;!n O;moPtO;ra0F7;untO;aiN;c07lloXpVstOtheHP;asySlesOrop0QN; P'O; c02;in the new teO;sta0C3;! O;in0QR;hOtHH;enA;! Onian and diony8H;abort mVcUglobal RlunarQpO;roO;gr0YR; modu7;maO;naO;ge0BR;re0WY;od3;alypPrO;ypQD;sePtO;ic and post-apocalyptic070o;! nowO;! redQ4;!aPchatpong weerasethakOnk;ul;ce0NG;aRex tw4oQrodiO;siOte;ac;ri0RV;nt0MBsA;!p,r0O1t0XVx O;legPpO;red0KY;en0Q1; sYcheOrthe0YLt0UP;! O;cUhRkQlOsHDtomc0MQ;icO;en0ZG;af05Y;ado08KttpO; seO;rv0;assaO;ndG;ty7;ll2; haru I5i VkTlRmg,rtic Qsta Ou0YV;vaO;llE;a0R7dissT6;! O;ma0DK;igaO;haG;koXDyū0J3; FHaE1bariE0cDHdA0e9VfCAg7Sh7Qi71jelica huY5k6Yn3Wo3Ns3Ft04uUwar sad0M6xietyTyO; givenRa PdeOthing go3;sk;chalOtaylor-jO3;otG; suEJ;! d18; mWbFel Vnna0IVpamRrag kashyQsO;!hka shO;ar0SJet0TX;ap; Oaa;kh0tO;ripO;at0NQ;aa;alV9;! an2X-man2Va2Pe2Mh1Ni0Qje tra0OEoUweTz,ónio O;de oliveirPguteO;rr3;a sO;alO;az9;rp;ine0EnO; 09iQy Oín dvořák;bli032sO;ta0SW; 04a 02nZo O;bWcVd'ami0LXgSlQrüdPsal0HPvivO;al0NM;ig0;u0L1ópez de santa O;an0L0;iovinOramsYT;azO;zi;onH;andOro0WK;er0ZG; scRFe Pus O;piD;pl0B3waC;kiV3thO;om0ZB;gaudí,poO;ro9Y;chOlavEyel02W;ePiguO;rh;khXO; PtteO; b0E3;de saint-exupéLfuq0JWgriez0HDlavoiPweO;slE;si0;-0Bb07ch06g04h03kythera m02m00nZoXpVsOvirus JS;emiDRociO;alO; pO;ersonaliO;tyO; dO;isoCG;oOsych02;d3pe;ch,xiO;da0ID;aCQoD;aOoTT;tt0;echa0NP;e0MTisFB;en,uaO;! and barbu0WK;olinerg0YWri0V7;iQodyO;!-dependent enhanO;ce08E;ot0YS;aUcoCCdefamation0A0lock brakQmaterielOven0DL; rO;if7;inO;g O;syO;stQ8;ircraft0JZmeO;rica0N8;oWrO;ax,opO;icRoO;ce6lo071moOsCC;rpO;hi0OH; prO;incO;ip7;ine 0Clog0Any O;a06b03c02d012ed5fauX0h00jZkiedFlapaYmVneWOof pad0IMpeUquTraT7sRtrolQwePzerO;be;in0;lo0LW;alOpilot0LY;er055;ay7i0FY;r3EttF;aPichaeO;l QF;ck0V6r0HR;glA;eselnSMosh0IA;e0T9oO;p37roZM;asVA;lu0H1oPuO;rge0W9;urda4y7;lbaPndO;e0BSre0O5;ne0VM;y O;se0OD;hu0FL; Oat0lo0LA;pavel01LsundaraO;ni0FK;goSl04UnanaQrO;cOes;tiLV;riO;vo;ni0TM;! and the waO;sp;ste0SM;chlu0VPel Ti QonOu faJA; mO;ou0GE;c,escapO;e O;coK8;aOelgo0WR;da0US;aUha0HXmalTnymousRrexQther th06PushkaO; shO;ank9;ia nervo0E0; conO;te0G3;i0DXocC4;'OʻO;i NR; 2F-margr0SMa0Xe02iTo RuO;ncPs horribO;ilF;ia0RT;doOmun0K3;mi0LT;-frid lyngVe O;beThaCleRmuQoaPpO;ot0RT;klE;rp0PK;iboOnnX7;vi0OH;sa0FM;st0RQ; Z-marieWliTtte Qxation of crimea by the rO;ussian O;fede0RE;bPfunic0N4oO;'too7;ad0OSe0M4;d,ese O;miO;chI;! O;du0DPmediO;waX6;arWAbZfranYhUmu0FIof TrRwO;ePith an e,oO;jc09X;yi8;i0UOoO;bi0NU;aL9clOUgreen ga07Qki0NI;aQeOidalJK;c0JSgO;er0OX;th0PC;cFk;aRoQrO;onO;të;leTKnQB;nOxt0;croO;ft; 08-06att0JHbeZlVmarie tUpurnaOsophia ro4Y;! O;iRlaQpiO;ctO;ur3;bs;nterac0AZ;enP5;ePynne mcO;co0SI;igh Ona baerboJ;ashKQ;llPthO; gi0M7;a sciRe O;comePwaO;llF;s 0SZ;orG;louise ploOmaria sieklucZF;wm1;a0Hbary0Gc0Adi020f09gu0CRh07jKk02l0M7maYnWoQRpVrTsQtoPunC8winO;to0AR;dd,rv;aw0IYhOorok4;aOcherba01;ff0;iOudoZI;char0B5;aqu4oppleL1;eOicoleO3;ag7;d5IxwellPy O;wo8; maO;rt4;areni0FEendRoO;nk7urO;niO;koSS;riJ;opO;kiN;arFriI;aShO;aPluO;msSG;nceO;ll0QA;mp;shnikS5;ka0EZndO; thOe084;e 0EQ;cUdRjPsarOwiWN;no0BL;ilO;li1;oPuO;nh0QA;wd;leMSouPuO;saJ;lt0;aGh,le–brachial pressure0SNylosO;a0EGing spondylO;itF;ka noni 0Bl08mTplSrudh ravichaLQsRta O;ek0BTmPpallTEraLGsarkeeO;si1;ui;e,h gi0P3;ex,us 0E1;aSeOi0JJ;! nP-influencedO; a06V;etO;wo0OT; and animDl TnRtPxO;! 0DU;i2roO;niP;iaO;cs;cQfa0FLhO;ou0R2usbaO;ndL;ros0HA; Oi05C;amOda0K3k0I3;ba0I6;ro0QW;edOui;onA; l0K6e10i0Ukor w0E1l0Bo02r00uO;il0RXlarSs O;deaQiPyO;ou8;mr0PY;yt2; Ojs;fQmoment0CZvO;eloO;ci0LS;requO;enO;cy;ezi meIDy bO;ir0GV;laSstura bQuO;lê0RVrie O;ri0R6;itO;te0PW;!nO; cO;ivO;ilLI;e04ican01oO;-PspO;heB;inXsOzuluLE;axonPoviet invasionO; of ir1; Os;rE6settlemenO;t O;ofO; bO;riO;ta4;di1; cOi0HW;hurch of southernOommu024; af02;!rOs;fi0IS;e Ona;bRcepe0P9dPever0K3haO;rm2;icO;ki0JJ;ow0OQ; postecoglIKlPviO;n 0CB; 05's04aUina joSsO; inO; aO;meO;riFS;lOrd1;ie0K9; Oba0LX;baVcTdU1kiSlansRmeQraPwO;hiH;yn0;rkI;buL;nsE;artO;wr0NJ;sse0HN; eDY;f5LhQiO;nveO;st0N1;aOea0QK;s O;faXD;mQsOu0GU;thO;esA;ia,oO;i,m0CB; 32a30e2Sh2Pi2NorGr0Gy O;be0Cc0Ad09f06g01jasC6k00l04CmXrVsSwO;arh0PFe0MChQiO;llO;ia0OA;itf1S;am08PerkPumO;me0O0;is0JE;e0NDicVUodO;diJ;ilonPuO;rrKschiCC;akF;au0H9;aQiPrO;iffi07R;bb;rcOv4;ía;airweatherPorO;dh0MI; l0NE;aLZe07YiJ;arOoh5;roC;rPsO;he9;na0N5;a1Te0Fiy s0Do03zej 00éO; Ss O;iniQmanuel lópez oO;brO;ad0LV;es0PM;ayBXde shTle nôtBoSpRrQthOvillas-bo0P7;e gO;ia08U;ieu;rev4;na0AG;iel0DW;du0N3sapO;koO;ws07H;gWid SmedaO; gP–milky way cO;olli0AT;alaO;xy;application packa06YstQtv,veO;rsionO; hCW;udMX;en,yJV;hevO;chKS; 0Za0Ressen horoQTi 0Nw O;breitba0OQc0Edice 0Df0Cg09j08koPGl06m01ng,p00rVsStaHuRKwOya8;akQiO;gOl3;giN;ef07;chuPtaO;nt2;lz;annRidgQoO;berO;ts2;elE;el0M6;arker b55;aRccO;aPoO;ll08W;rt0HN;do066;aQCi0CRloyd weOuJ;bb0;acQ3oh0GF;aOo0MK;rfO;ie0MI;linto05Zo0AS;clK;aRuO;nPoO;mo;an1;lPrO;neg0LC;laO;gh1;arloJBchikati0EYsakhQtarO;koO;vsM9;arM1; Rs O;cOwei05R;hrisO;te05;anQbOco0GHga00Ajeremi0DHpir0EQriseb002;a8ocO;el0E3;de0LB;agObrauUCiguo2S;as0DX; dK; osI9e macO;doDZ;adh0MHraO; praO;de0EM;anTrsOs; Qon O;coOsLT;op0;behring breivI3thomas jeO;ns5; coO;nd0JG;lusAman O;and nicobarKSiKT;gaHthen there were O;no6;ho05ienO; ré03t O;aZcartYegyptTgreeQhATolOro0MK;ympicO; gLM;ce,kO;! O;ph0Ure69;!ian O;dQrO;aceOe66; controver8F;ei0HB;ha04I;lPstronO;au0I1;ieN;gi0M5;vy;vu; 0Zb0Vc0Ugr0J2heim d0Tl0Bn09phylaxFrch01staZtOïs n4;id085oO;lTmO;ical terms of RyO;! of a O;muO;rd0;loLQ;iPy O;dyatlKFkarpKF; bOa;oukre0DZugors04D;cAs mikO;oy1;i0CBo-Oy;cQprimitiPsyndO;ica58;vi0C8;aPoO;mmu0AR;piO;ta53;dabazar patriQHsi,ya paO;ndK; s0KYges0LXog00yO;sis UticO; phRal Os;ePpsO;ycUD;ngi6;ilosO;op0EU;of variRpO;arO;alO;ysF;an0KE; cQ-to-digital O;coO;nve0E5;omO;put0;uc0AY;hro0A3on0J1;apQolic O;steO;ro0IB;ti0BE;brnabPCde PgastOkaspa03V;ey0;aOla regueG;rm0KQ;aWeUinspectorSlushanPofficer and aOyuSC; gentl0V; rO;ebelO;li2; cO;al0IH;duKAvening with silk sO;on0KX;ffair0ELmerican O;piRtaXCwerewolf iO;n O;loO;nd2;ck7;a5Ob5Bc 57d4Ze1Yh1Ui1Rl1Om1Fnes1Bo15p0Vr0Qst0OtrGJu0JwKyOél0HY; U's bakiAVbeth mcnTgSlPotrophic lateral sO;clerQ; and the sniffe0I8oO;idOse;osF;da0JO;ul0DQ;a0Ab08c04fi03gFMh02ir01jM5klobuch9l0BUmaZpXrWsRwPyasO;beJ;ax,inO;eh0ID;chQedPherman-pallaOma0K4pa02J;diRF;arF;neOum0;id0;ed9Uy1;aOoeY0;scM;cOd70;do0CO;vi8;ennFS;sh0;a0COoneyO; bO;arO;re0AM;el7rennO;em1;ck0da0HN;l,nPsement O;pa0FB;!dsen–scott south poleO; sO;ta0EW;erdamOrad cpc;! airport schiph0IJ;apali g1iQullah sO;alO;eh;shNEtO;a0CRs9;erWhSliO;fi0tuO;de O;moduO;la0EK;ePibiO;an,o33;taO;mi6;e,sa0EX;e005l0E1nRr Ps tam0FPxiciO;ll4;fa59tO;owl3; Og D;amSUgö00O;ia,tyO; iO;nterO;nationM;an,onO;iPoO;id0CH;a,um O;chQnO;itO;raH;loO;ri5W; ame5e00AoO;diOg0IO;pi6; koshimiPga,no0FLsh,tO;abh bachch0BKripty05C;zu;ar0IJerstO; cO;olO;le006;deo modigl2Nesha2Llia 2Jnhotep i2IriOthy0EQ;caOgo vespH5; 2C's 26-23n Os;a1Sb1Pc1Hd1Ge1Bf12g0Yh0Si0Jje08Tm0Fn0Cp04re02sVtSunPwO;ire gau001omen's voluntary3D;ivO;erO;si0BF;op BNruckO; simO;ul01G;amTiRnQoOtaffordshire01;ng conO;te0ED;ip0;eZQgO;n Q1;oa;uSAvolutionO;!aryB7;iPsO;ycCH;cSt O;buO;llO; tO;erMR;ke0F9;azi0ASinja wO;arO;ri0DR;afAcgeeQotorsO; cO;orpo0CN;!'s0BM;dVmpTnO;dQstitute inO; taO;iw1;ian O;wa0EW;erO;ia0C;i0H5ol;istorySoOu5U;cQrror storPuseO;wi0GG;i3y;keySC; x;igo07YoQrO;afO;fi32;ds,th0GY;ilm instituteVootballQrO;onO;ti0;! O;co0CleS3pPrO;ul3;osO;it09M;! 5S;ngQWxO;cepOpR4;tioO;naO;li06O;ec03Are0D0;iRrPuiO;si6;ime0F3oO;codi7;nematographer manuMvil O;reOw9;liO;gi2;is2lacOr6Ful00J;k O;be9;irWllVnd british english spelling difUsStOuXH;hleticO; coO;nfO;er0D6;saO;ss4;fere0EL;igZA;linesLT;class amphibioO;us assaulO;t RK;gQnext topO; mO;odI;otO; taO;leYY;cQfO;erO;reG;hav080;!ii;ear080kinOwaM0;ka2O; pO;atI;ia04N; QahlO;'sO; l03W;accelerated prQradeon O;soO;ft06W;ocessingO; un0B4;nePtheaO;tr3;twO;or04M;erTiQliProsO;e,ia;n OI;entOgr0BG; mO;us0EX; OgrF;hSmidtRroseQtPvallO;et0ES;amblCT;! rev04G;hu6W;ea0C1;do c18im warrior at the border01Gl13n0Ir0Gte0Cury gui0BzO;ing 07onO;! Os;a02b01ec99fire 00gD7kiZluXmWprimeTrQs05VwebO; seO;rvRN;ainOiv0;foO;re0AS;! vO;idO;eo;echanical tu09Vus0ED;mberOna;ya0BM;nd7;tv;as4;ir,lePppsO;toB;xa;faOg0BY;ntaO;sy;ch2;raQurO; rO;adBQ;su;'e stoudemiBanVHetV6tyO;a s5;cio or07dRgkurat ii of matI8ita O;muscPphalloO;id3;arA;a Ola stDK;abbi01b00crZdonohYgoXhold5knEHnWow5pTrighRsO;chuCeO;al3yfO;ri08F;etO;ti;aPe09FluO;mm0;lm0;un3;rm1;oe;ew;laEIyn3;ngt2;te9N; cQa GXee,fiO; cO;oa09I;loO;onE;arrillo fueO;nt3; FJ-FDaDGbCMcC2dBMe78f6Kg66ham64i4Kjamain4Jka4Fl1Vm1Qnwick 1Oo1Kp14s10t0Aum04vin Yways on my08PyPzheimerO;'sTS; VsQvia aO;lynO; li08M;on Psa miO;laJY;hannPstO;on0;ig1;mH9raiG6;and the chipmSbraRkQsO;arO;geVY;amaG;gg;un025;!iniumO;! O;allQoO;xiO;de;oy;-r08Ya08erRon PrO;ui02I;toO;we09X; 02natO;e ZiO;ngVve O;forThip hJDmeRroJversions ofO; sO;piderO;-m1;diOtM;ci6; ge1H; cO;urO;reV8;hOreality VO;is0AN;brTAeO;go;iPmont freeO; conce0BJ; rOcLO;epO;ubl0BQ;aOtQJ;ceOgoff 2O;!–lorrO;ai6; arsl1a02hSine PrazOs;ol081;lOskii8;inO;ux;aSonsO;e mPo O;daD7;ucO;ha;! Ob077go,zeZ5–beta pru019;cenQpO;artO;ic7;tau06T;ca;e QisOk kanojAnzo g02Hpecia area0B3y; hiO;tl0;veG;caO;st7;aQoO;had02Dnd,stO; faA2; mOty;at0; 13-0Ya0Re0Di02m01o00sZuQy O;mcbeMsheeTDwaO;lk0; arRri sitarama P–konidelO;a 1Q;raO;ju;aRjunO;! filmography anO;d O;awGQ;vi067;pi09Bvensk1;saVAtropes ofU2;ov07Ous0AG;eQgTQson O;jaOmaJstokBK;nnE; sherRUdPs of world warO; iJ3; invasion of siS-occupied O;aPgeO;rma4Z;usO;trA;ciUE;gTn O;duBPginsSCiveO7kRlPstanO;fo07D;eeXZuO;dd5;le4;iant SoryQrO;a O;versa08P;! of theO; caYM;a05LsO;taO;diU3;hTn O;hPlaOsaint-maxim4;mb;ePoldO;swKS;inRU;!ab04Y;russia state television and radio brOtime olympic games medal04Q;oadcastiO;ng O;coO;mpa46;a0Pdogs go0Ne0Jgas no br0Ii0Amy07nippon04of us are03quiet on the wester01rights reserv047tQyouO; need is Or base are belong to D;kiCloY4;hRoO;morPo O;weC;roZP;e Pings must O;pa07O;bells sKlight we cannotRmoneyO; inO; tO;he076; s00D;n fO;roS8; de04C; aO;irO;wa12; cO;hilO;dr5; want for christmas isTnPsO; lo051; thOdia trinamoolJ4;e O;faO;miSV; yO;ou;ak3;litePyez oO;n 07Y; wO;rest00K; to heO;av5;boutR4long the watcO;htMV;lOne;iOo059;! mO;etM; ster00B; 12a10baba 0Zc08e02reza firouz01sQtPyXTzO;ée;alA;on TsRtair O;macPovereO;em;le1;a white-glOon;uz;br054dooQGeaRkrQloPOmoy03SpiCsO;tea36ud06QweO;enE;au06B;stE2;ja;nOxpI7; OwaB;abdQresuO;rrO;ec02S;uc02R;anHeSia O;keQnaYNsilversPvikaOwiY7;nd0;to6;ys; P's adventures inO; wond00;br06co02e00in XkriP3lePCroVsUtullSwO;alQeO;idItterO;lu02Y;k0t2;y O;haC;pr03J;bOosevelt longwIB;er02F;bordPchaiO;nsT;erZN;ngle06QvO;aNe;ltQopO;erO;! YG;ra6;a37ooWD;cLZgO0; Osi8;bhaXFshawkRY;baba and the forty tQeren demirez5fazMhePkhamenDMlaZDmacOwo8;grV9;ws2;hiO;ev3;bGduliO;llW8;arVBeSie044oO;nquiQrithmO;!icO; traJS;n CD;bGeVriaO;! PnO; w9;naO;tional fO;ooO;tball O;te02O; sEL;a06ie 04onso 02reO; wooJDdO; Po di stéO;faD4;aXbWdUeThitchcockRjoQmoPnobIpennywH7rOtAA;os5U;liQX;dl;! O;fYXpres00X;noTT;reO;yfD;ur6Y;dl0;cuarónYQribOxi01A;eiTJ;aC9soloO;moN; romeoPlO;fa;! iO;n O;formulaB8;!c 3Yister cro3Xjandr3Oksand3Fm3Ep3Bs34uti30xO; 1Ya08e04iO; lai02s PthO;ymA;arZbledIdVkUmRohaQsPtO;ex04W;ánX6;ni1;acO; aO;lliUM;na05;eOzieQ3; tocquOnis4E;evO;il7;qu5V;ho;i navalQy O;oleynOpajitn31;ik;ny; 17ndO;er 01rO;a Qe Oia ocasio-cortX8é pölPK;dOlacaz5MpaM2;esplPYum04B;bWdaddVelbaky1gUhedTmariaSofQpaNLshiPtruO;so34;pp; denO;ma004; laG;is2;raNS;ar2A;otWWreckenrLV;a0Mdreym2f0Lg0Hha0Fi08kere07l02m00ne2WovecZpWsSt8PvOzverW5;inQoO;lkanoOn humbolAF;vsMG;dm1;criQidd00kO;arsO;gå01K;ab4;ay6oOusQ;pe,veO;tk4;hk4;cqO;ue5;itvinRuO;dwPkaO;shP;ig;enBX;ns26; oRiPsO;ak; oPiO; oO;f O;ruO;ssA;miO;lt2;odun1PrQustO;afO;ss2;aham 59othendieJ;le5D;cSlQrmO;stO;ro8;b2ekO;hi6;os03A;bli01TcSdRiPpenaveO;ga;nteO;rnZ4;avalUIem00F;hu8;alb2bo0Ncaru0Md0Lf0Kg0Hh0Cj00Lk07l04oYpeWrSsBKtQwO;iOolKS;nt0;rebOu9J;ek;aQid0oO;driO;guVD;mírVC;rOttyf0;eiG;'loRxlade-O;chO;amberO;la4;ugO;hl4;aPifO;es2;nQ3wNY;iQuO;rtO;zm1;ngO;st2;asRiQoO;nOr6;no00K;rsQB;seC;arUXrO;eenO;wa00F;ergus2;e minaI4imitri1L;so;rs28;anO; iO;slO;anQG;ha dTsO;andrOia caGo;a ambrosQo O;del piePRnivo011vO;ol01U;io;ix2;hOpo;! O;nuVI;anQY;ar Tr O;akQdug4karPsolzhenitsO;yn;el4;imO;ov;hPmiOrak5Mvuč5M;tr5K;em2;aTo O;cao de benRgonzález iñárriQjodorO;owsO;ky;tu;ós; sO;ilO;va;wlE;bPdouglas-Z6gO;uinZM;alJR;abra giant t01eXiWoPrich O;am3; gSsQusO; huO;xlE;teO;ro6;ucO;ci;!s hodIK;bQn ehrenrPrO;nEsh00P;eiOP;ar1;ortO;oiYN;atraz 05hem02ibi01oOubierre3S;holOn A4;! TiO;cOsm; dPs anonyO;moD;riO;nk;by voluZWflushSiQpO;roO;of;ntoxiO;caVH; reB9;ad3;ical Oy;syO;mbZ1;federal penitentOisSR;iaL;a09ePiOrecht dür0us dumbledoB;niQ6on;do,rtO; Ra,o fO;ePujiO;moVK;rnáSB;anastKHb01c00eiYfiXiTkesselC1pierrepSsPweO;sk0;alRDchwePpe0tuivO;enI2;itz0;oiJ0; oPiO; oO;f bO;elgiJZ;nnEsh;nsO;te4;amD;litNJourYMrP0; RniaOtFI;!n O;la7ImO;afA;baptQflProhrwaO;ch0;or3;isZ8; vaikunthapurramul1Jbama1Dddin1Cin 18n02qua00ricZsQuddin khalPwO;it3;ji;kaRtair O;cOsCM;aOoPH;mp0T;! Pn O;bush 4ZmalamuH;aBGpO;urcO;haWX; i; cO;ox; Sa Pis morissOs;etH;de la gOhaC9;arO;za;a0Nb0Lc0Jd0Gedward 0Fgreen0Ej0Cla09m08p06r00sWtQwaO;keOtTZ;! U7;hRitchQuO;dOri8;yk;marPN;icO;ke;chaQhePilveOug9;stU1;ar0paVP;af;iOuJ;ckOtchs2;manO;! oO;n screen and sO;taFX;arOriWZ;k0soNtrFJ;e0XooB;dd,sO;ceO;ll3;acO;ks2;sp1;beC;aPershoO;wiPY;vi3;aQHumO;mi8;at3enO;neOE;lVCrk4;dePpO;roTY; boOl2;tt2;! sa6;! crimson tideQ–georgiaO; football rO;ivalL; fO;ootO;baC;oo;aQbiPghazaNOqO;aeUY;ruMI;ndPqsa moO;sqL4;alD;ahl02ca01d00fraZgYhilal sXjUmiTpacinoRsO;harPteO;waWU;pt2;! on stage and scO;re5;chaeUI;azeeraPoO;ls2;! e74;fc;oBre5;nk5;avF;po6;y O;sc;a0Eb9h0Ai02kZm,on,rotiri and dhekYsWuO;damaTla-O;classO; sO;ubO;maO;ri6; dO;riL9;ai Ohay0K;ch4;elA;adian Pineni nageswaraO; r3S;emH7la4E;hiDKnFLo ōtsu0Sra Pva goldO;sm1;isSkuPtoriO;yaO0;roOsQ;saO;wa;hiTQ;anTPenat5ilO; Pesh yadO;av;akkineL7;ike information crWnRri kiQsOthisA;aROhic recordsO;! of bastard magic instruI3;tō;e yPkshaO; puRF;amO;agO;ucIV;iteO;ri2; 02aSeeb daastaaNithRla tomlO;janO;ovO;ić; kumarOJ;gajanthWntUxQy O;devgnOHgO;hoMK; tO;heO; gO;reGJ;a cO;av3;arRQ;lMKmPstO;yl3;ichalO;ka; 1Zchi 1Sd1Iki1Hlee1Gme16n11rWsO;hPling O;bONfrancioLB;aRwarya raO;iOjeM4;! O;bK3fNZ; tO;yl0; 05-t02asAbYcraft Udr20fo7CpQsh6LtPwoO;lf;ag;laQoO;dsOrt;! pIK;ne,y;cPinO; f7I;arO;ri0;nb,orne early warning andVusO;! belugaO;! O;xl;o-airO; mO;issi7;aK5c05euro04f01gTAi1ZjoRAkor00new zZpollutXquVsupRtrafficO; cO;onO;trT5;eriorityOpEI; fO;igO;ht0;alO;ityT3;ionO;! iT2;eaMN;yo;orcePrO;anSRy0; o6;pa;anadaQhiEToO;nditO;ioJR;! fO;lePN;sley earQu O;peO;op7;harO;dt;eOr; R-ffionO; eO;dwO;arHW;gaRlou QmaBCteeO;gaO;rd5;woT0;rcA;!n wuornKM;do;an Py brO;yaCH;gRhQqPtuO;rn0;uiB1;utchiL4;alPiO;ll5;laO;gh0;pStO;elevisiO;on O;broadcO;asSO;refO;ecF5;dQkaPweiwO;ei;kuKJyaS;unO;ge2;eg03mXn RrQsoka Oura mazQA;taO;no;im1;bRePhyo-seO;op;unO;-j4;o-O;hyRB;adQeO;dOt ertegR9; i,abNP; shah mPiyO;ya;asso7F;ao;a15e0Bg05ile software02nXoVrO;aSicultureO;! O;inO; iO;ndA;! O;foRP;da,raO;phC4;eRosPès vO;arPI;tiO;ciHX;s mooreN5tha fältsk24; dO;evO;elop1A;lutinativPretsuO;ko;e O;laO;ngO;ua99; Zi8nt Ws of consent O;bySin O;asAeuQtO;heO; unDY;roF4; cO;ouO;ntL;orPsO;mi8T;an8X;disparity in sexual relat03of O;aqua01c00diYeTmOtB5;ajoRytO;hoO;loO;gy;riK7;ar8KmpiresPnlO;ighten0J;! iO;iOv;!i;scoO;veL;onseA1;riD;ionsO;hi0R; 00memn2pe,rYtO;e,hO;a Pe roussO;el7;christiePhO;arkP0;! R's O;maPpoO;irQD;rp7;bibliJG;!icus bispO;orD;coQkhanO;! O;iv;ok0;c 1Bf12g0Zi 0Yr00shanZterO; TlifeSmath O;enO;tertO;ainO;me9B;! of theJ6;eRthe Pwe O;collidKSfeC;daLGthO;inKV;ar7H; azL9;iToaO;siatO;icO; lO;anguO;ag3;caRkaO; kOaNneN8;orO;ps;! cup09nO; T-american O;cRvernacularO; eO;ngO;liGJ;ulBQ;am00bushXdVelYnatRuQwildO; dO;og;ni2;ionalO; cO;ongO;reNO;iasO;poG; elO;epO;ha8A;erO;icaN; ofO; nHS;feL7;haO;niO;st1; 0Eair of the diamond neck7NiQordable careO; aO;ct;liateRne tPrmative O;acJU;ransfO;or25; maO;rkeOD;aWbournUchQnPwimblO;ed2;or62;ampO;ionsO; leO;agC9;emO;ou5W;jPsianO; c5H;ax; dil hai mushk0Og0Lne0Kr07s01w OxN6;battle of the belJHdYramXtPwO;orld R;bPnO;t P;s O;chO;ampO;ionO;shO;ip;pa5M;ynaO;miH; instructionSchRopPpa,theticO;iDWs;!'s faO;bl3;ylD; sJK; Yith gainsbWoO;bic exerciLLflNJgIsO;mithRol,paceO;! eO;ngineeO;ri8;! aO;lbumO;s EZ;orO;ouGN;liO;ngD;as,id;ean Ois;aOsGT;irl9W;il; 63-61a48block46d3Ne3Di2Yj2Slai stevenso2Rmi2Jnan 2Fo1Hr0Pult0KvSwaBx flRzuki Qèle O;exarchOhaenI;opoulEE;be1;orK4;aWeO;ntOrb;!ureO; Qs O;in babysOof huckleberry fi4S;itMO;fPgaMBnOtiMB;ovI;icHY;ita ved05nceO; publ03-fee scJ7d O;audiZeUmRvO;ector extPiO;deX;ensFI;essage queuPicro devO;ic3;ing34;ncryptO;ionO; sO;tanO;daJP;o O;coO;di8;icF5;anM7; OeL;aPswOtrainDJ;im;niO;maHA;en0BiO;aYenO; Ue misTne O;baPshO;el68;il2rO;beO;au;hl0;agrPbroO;dy,n0;esH; arjo6PnPticO; sFB; Ra liDIne O;cPpalO;ic3Q;urL;chSgreRleQnewEpeO;teO;rs2;st0wF;ni0;aJFil3;alQergicOoch4L; receO;ptHJ; gDYi6;beYlPnFrationO; of the ma0M;eVfPphe thO;ieIT; Oo suárez madrid–barajas8K;eiRhitlerO;!'s rise toO; pO;ow0;ch2X;scI4;! O;a07creative 03dream01flashYiUlightSpPsO;ysteIQ;hotoshopPremiereO; p8Q;! 7V;roO;om;llustr43nO;deO;siO;gn;! O;plO;ay0;weO;av0;cPsO;uiH;loO;ud;crob5Mfter6EniO;maH;januzQkO;hashogO;gi;aj;nistrative Rral gorshkov-O;classO; friO;gaH;counties O;ofO; eO;ngCO;n FL;acencyQecPoa andOugateQ;oh;ti8Q; mO;atrO;ix; shan01abaticYdasWn VpuUtO;i rao hySya O;cQroy kO;apO;ur;hopG;daFA;ruAR;roI4;! yeeO;zy; pO;roO;ceHZ;kaG; eVelUlRnPwale akinnuoye-agbaO;je;!osineO;! triphosAT;aide Pe O;diAVone night on3J;ka6; akht9;dmonO;ds2;ams family04e03iTress O;bRresoluO;tionO; pO;rotocHW;ar,o9D;cE5sO; aUonO; R'sO; dO;isO;eaGT;r4EtiO;ml4;baO;ba;raC; vaO;lu3;! O;plD; 1DbooEVmVnPsO;sa; cRa demirspEOiO; gO;roO;up;anO;to; S's O;aQbrPrO;ib;idZ;pp7;a0Vb0Pc0Nd0Kg0Eh0Dk09l05m04n01pa00ricZsRvinatQwOyau65;arOeEH;loJ;ieDQ;aSchPmiO;th;iPleO;si05;ff;ndlPvaO;ge;erAW;hm1;ge,scM;euO;maO;nn;ckK;aPeO;vi6;lla2LmO;beHC;inPownacO;ki;ziO;ng0;ilEZ;ilRoOranduciI;dlEldO;beO;rg;chO;riDM;ePrBPuO;ri9C;m8Jvi6;o7uO;rtF;alSea53ilQoh9AroPuO;xt2;dy;zeO;ri1;dw4;m4nQrO;cOk4;huleGV;dOt; e5N;loOwo8;veO;laFL;roJ;ck;blO;oc1F; 3Ga2Dc1Xe1Mf fioren1Kh16id 15kerman12ne,o0Xr0ItXuO;punc2Yra,te O;acTmyeloid leukSradiatiO;onO; sO;yndO;roFY;emA;ceO;nt;iQs of the aposPuO;atCI;tl3;nopterygBUonXvO;atTe QisionO;! blizO;zaDI;direcEWelectronically scannedO; aO;rrK;edOio0I; caO;rb2; O-adventureP;bro7ZfiTgaFGpQrole-playingO;! O;gaFE;aBEotO;enO;tiM;cAZlm;oQylonitrile butadiene sO;tyO;re6;megaYnXpTssO; tO;heO; uO;nivO;erDJ;hQolisO; of atO;heN;obA;ym;ly;nOrn;cPitO;um;agO;ua;n O;fuO;ncAC;ra4;aemeniYelouWilleQondroplPraf haki6Ntung O;ba9S;asA; lauroQsO;! and patroclD' O;heI; hijO;acO;ki8;saO;urD;d O;emO;piB;tiO;na; Sh,tO;icBMo6ylO;cOe6;ho1CystO;ei6;aRcombQfrePof O;baCH;hlE;at;ttoO;rnE;eZipitriXorWra,uO;racy PweaO;th0;and prRinternational aO;rcticOwm; waO;rfaB;eciO;si2;!di2;dOform3;ae;lerOn0D;ationPomO;et0;!i42;cAdPpulO;co;emPiaO;!ns;ic 09y O;awardPof motion picture arts andO; scieCC;! for best Os;aYcineXdUinternational feature 8Soriginal sSpRsupporting act04visualO; eO;ffO;ec8X;icX;cOo8;oBrW;iOocumentaryS;reO;ct9M;mat6H;ctTdapted scrRnimatedO; fO;eaO;tuB;eenO;plK;or,reBQ;dXgrading in tPranking of world universi7PteOye9;rm;he O;phSunO;itO;edO; stO;at3;ilippO;in3;ePiscipO;li6;gr47;cobGpower plugs and sO;ocO;ke83; inb4Ga4Db39c35d2Ce22hi1Ti1KkhazAle1Ho17r0Ts0AuPweO;hr; RgiACja,l a'la maudu06ndance of the chemO;ical O;elO;em7N;az03bakr01dhabiTghraib torture and prisonerRibrahim al-hashimi al-qurPmusab al-zarqaOsimbItahsin al-salQ;wi;asO;hi; aO;buAF;! O;inO;terO;nationO;alO; aO;irO;poBY;! al-baghdaO;di;raI;-cbn,int05oluteWtract PurO;di27;aBSdRexPsyntax O;tr3D;preO;ss0N;ata O;tyO;pe; Oly fabuloD;moTpRvPzeO;ro;alO;ue;itO;ch;naO;rc4R;he;aPuzO;zo;hamQj OxB3;al ba7FkudO;ai; Oic relig4C;aSbeaAWinQliPmasl8Tvan helO;si8;ncoln; iO;sl7S;ccO;orO;ds;lUrPut O;faH;iginal aQtionO;! lO;aw;ustralO;iaN;itO;ioO;ni12;i11ton O;liO;ve;dj1gail RogPyO; ahm5M;enO;esF;bresl4sQtO;hoO;rn;peO;nc0;jitUmanyu Sshek O;bPkO;apo6P;achO;ch1;dassaOmishGs3P;ni; banO;erj1P; viWbUl fSrO;de5fanO; dO;isaO;st0;erraG;ra;ooO;ks;go7Q;alla hamd0Fe08ication of edward07om01uO;cWlOwali mu80; hamid 5Klah Prazak gurnO;ah;iiSoO;f sO;audi aO;rabA;ia; of 6P;tive rO;eaO;soO;ni8;en,inal O;aorticOpa4; aO;neuO;ryO;sm; vi52; ezzalzSl fattah O;al-buQel-O;siO;si;rh1;ouO;li;ok; PdeO;fu;neOs0G;ws;!a0Iey 0Ci03ott Vy O;and brittany heTelRlO;ee O;miO;ll0;lioO;tt;nsI;and coSeleQlaboraO;toO;ri3;menO;taL;stO;elO;lo; jUe O;corReQhO;ofO;fm1;at2;niO;sh;acoO;bs2;lSroadO;! sO;tuO;diO;os;ee;! UsO; kiarosRidO; caO;liO;phaH;taO;mi;diO;sc14;cDdd2lo6ndonO;waB;ne;ev; b19ch5dha9kanksha15m0UrRsmah m3PyushO; shO;arO;ma;d0MhDne–thompson–uth0Kon Pón sanO;ch07;a0Gbu0Fc0Cd09e07h04le02mcgrud0paul0RrZsStO;aOve3N;ylor-jO;ohO;ns2;oSpQwO;arO;tz;elO;li8;rk4;in;amsPodO;ge4Z;da7ey;nn2wF;is;ernaO;ndO;ez;ckO;ha6W;esPoO;na5A;sn0;aPopO;la2P;rt0;rr;shO;moB;er5V;us;maOva2C;n animO;atO;ioN; aadmiVirO; khO;anO;! fO;ilmO;ogO;rapO;hy; pO;arO;ty; sO;inO;gh;ar;atO;teL;ha,leO;ague3WvI;el;b5Ec4Ld41f3Ng3Ahistory of37is for35journal for 32k2Ul2Rm24ni1Zp1Rquiet place1Pr1Is0Pt04vYwPyear-end meO;dlE;alkThiQizard of earthsPrinkle iO;n 5J;ea;sker Oter shade of pa7;awK;ay; to reO;meO;mb0;ery british Riew to O;a O;kiC;ll;scaO;ndM;a02hWown likeUriO;be called qSpO; toO; thO;e O;mo2;ue1U; aO;li4A;eoryPousand splendidO; suN; ofO; jO;usO;ti44;le of twoRxi O;drO;iv0;er; ciO;ti3;aucerful0DeZiWong of ice and UtQunday afternoon on the island of la grande jO;atH;te;op at wPreetcar namedOudy in scarl0X; desiB;illoughO;by;fiB;re;ngPster's all you neO;ed;leR;at at theZpaXrO;biaTiO;ePousO; m1;s of unfortunateO; evO;enX;n O;fiO;lm;raO;ti2; tO;ab7; ofO; secreO;ts;ainy day inQoom of one's0Xush of blood to the O;heO;ad; nO;ewO; yoO;rk;! part O;ii;ail ofTerfectRiece of yourPriori and a posterioO;ri; miO;nd; cO;irc7; aO;ir;ce place to visRghtmare on elm O;stO;reO;et;it;an who defies the world of bl,emory of07iUoO;desRmentary lapse ofO; reO;as2;on;t proposM;al;dsummer night'sXllion PnO;or;littleSways to die inO; thO;e O;weO;st; thO;inO;gs; dO;reO;am; lO;igO;ht;eague of theirOittl1A; oO;wn;indTnight'SoreO;an oO;dyO;ssE;ey;s 27; of mO;ag2S;joO;rd1;an; acO;id; vO;iolO;en1D;ame oYentleman inVhost16ooO;d day toRfyO; mO;ovO;ie; die O;haO;rd; mO;oscO;ow;f thrO;on3;aWew goodUisPlock of seagulO;ls;h called wQtful of doO;llaO;rs;anO;da; m5;en;ll fromQrewell to O;arO;ms; gO;ra0M;aZiToO;g's way Rll'sO; hO;ouO;se;ho14;fferPscovery of witO;ch3;entO; wO;orO;ld;nPy in thO;e 0P;ce with dRgerouO;s O;meO;th0Y;ragoN;ns;a0Aertain 04hWinderellaVoRure for weO;llO;neO;ss;nfederacy of duPurt of thorns and rO;os3;nc3;es; sQ;arlie brown0Hristmas O;cSprQsO;toL;ry;inO;ce;arO;ol;magicPscientific railgO;un;alO; iO;ndO;ex;lQppOstle for03;elO;la;ifornia00l toO; sO;py;a03eautiful day in the00oy calledXrRugO;'s O;liO;fe;ief history Qonx O;ta7;le;of O;tiO;me; chO;ristmO;as; neighborO;hoO;od;bysitter's guide to monsterQndO; apaO;rt; hO;unO;ti8;ng;ndrangheQsalem'sO; lO;ot;ta;ovO;ic`;\n\n  const plugin = {\n    api: function (View) {\n      View.prototype.wikipedia = function () {\n        return this.lookup(this.world.model.wpTree)\n      };\n    },\n    mutate: (world, nlp) => {\n      // console.log('unpacking list..')\n      let list = Object.keys(unpack(model));\n      // console.log(list.length.toLocaleString(), 'articles')\n      world.model.wpTree = nlp.buildTrie(list);\n    }\n  };\n\n  return plugin;\n\n}));\n"
  },
  {
    "path": "plugins/wikipedia/builds/compromise-wikipedia.mjs",
    "content": "const a=36,e=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",O=e.split(\"\").reduce((function(a,e,O){return a[e]=O,a}),{});var i=function(e){if(void 0!==O[e])return O[e];let i=0,o=1,r=a,n=1;for(;o<e.length;i+=r,o++,r*=a);for(let O=e.length-1;O>=0;O--,n*=a){let a=e.charCodeAt(O)-48;a>10&&(a-=7),i+=a*n}return i};const o=function(a,e,O){const o=i(e);return o<a.symCount?a.syms[o]:O+o+1-a.symCount},r=function(a){const e={nodes:a.split(\";\"),syms:[],symCount:0};return a.match(\":\")&&function(a){const e=new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");for(let O=0;O<a.nodes.length;O++){const o=e.exec(a.nodes[O]);if(!o){a.symCount=O;break}a.syms[i(o[1])]=i(o[2])}a.nodes=a.nodes.slice(a.symCount,a.nodes.length)}(e),function(a){const e=[],O=(i,r)=>{let n=a.nodes[i];\"!\"===n[0]&&(e.push(r),n=n.slice(1));const t=n.split(/([A-Z0-9,]+)/g);for(let n=0;n<t.length;n+=2){const s=t[n],l=t[n+1];if(!s)continue;const c=r+s;if(\",\"===l||void 0===l){e.push(c);continue}const h=o(a,l,i);O(h,c)}};return O(0,\"\"),e}(e)};const n={api:function(a){a.prototype.wikipedia=function(){return this.lookup(this.world.model.wpTree)}},mutate:(a,e)=>{let O=Object.keys(function(a){const e=a.split(\"|\").reduce(((a,e)=>{const O=e.split(\"¦\");return a[O[0]]=O[1],a}),{}),O={};return Object.keys(e).forEach((function(a){const i=r(e[a]);\"true\"===a&&(a=!0);for(let e=0;e<i.length;e++){const o=i[e];!0===O.hasOwnProperty(o)?!1===Array.isArray(O[o])?O[o]=[O[o],a]:O[o].push(a):O[o]=a}})),O}(\"true¦0:HR0;1:HTI;2:HSM;3:HV6;4:HOR;5:HU9;6:HO8;7:HVY;8:HWE;9:HPV;A:HMD;B:HRB;C:HQF;D:HPC;E:HTC;F:HOW;G:HM1;H:HR5;I:HQ0;J:HFH;K:HQ8;L:HVB;M:HSO;N:HUY;\\\"weird al\\\" yankHX6'HX2aF7QbDONcBZ8dAYKeA9Ff9LVg8W1h86Gi7Q8j6WLk6G4l5RXm4LKn42So3SMp2XRq2VQr27Es0Y8tW1uPKvHEw6Lx5Sy2Bz06£9PHàstrid bergès-frisbEá03ättestuH2YåHPTæ01çatalhöyük,éUîle-de-E4EóTöSúrsula corbe79PüRđorđe martinovićD5Płódź,ōQśūnyatā,škoda PžOʻoumuamHHLμ2XK;eljko ivanGTSydrūnas savickHWQ;auHEFoctE0V;dARNkaHON;bermensHL1rüm5ZB;gede9IOtFWQzlem türeGVU;lafur darri ólGT3scar mingueGXY;amon de vaCTWdRlQmile Pric Ovariste gDAW;ro7EWzemBQX;durkDG0zoHW2;anELUodie 970;er milit9LRgar raGTMith piGY6ouardO; mO-henri avrH9C;anHSQenHFE;on10SsHSLthelO;red the unreaHFCst1;lvaro morPngel O;corrHQBdi marG6A;aHWNte; 1R-1Qa15bigniew brzeziCTCd14e0Sfs,h0Ii0Al09oSsa zsa gabHSUuPweihäGOTx FBByOz topGPFüFIC;klon b,nGT0;bin8Q3cchiHLUlOmwaltFOJrichHJZ;fikar aliEPRu O;kFSClaH4NpeH2J;diac03eYg i of albDE6hXlWmToRpicDR6rPsia m3KFyaHCYë O;bucEIUk665qH30roENHwanamDVU;a neale hurGTNin HNSk,oastOro;er,rFB7;ey deALYlOm video D1VpC8NtopA;aGOJoH50;aHDNbieO;! OlaHS0;a9T1landDII;pidGNXtán61Z;ar,oGED; PyO; deGY's extraordinary 8BK;collGI8kPlisterD9XpDSQsaldaO;na,ña;az1raFZD;! 5WC;atan ibrahimH04ib;dovuCKRffADYgUllHTFmSnQonPpOta hanrHVY; FYLfGGA;! w5IPiHM3;c91Pdagi Oedine z5TC;mere gha1RYna milegi doDGG;babweOmermann teleFT9;! GP7anCI9;bHN6gBAA;aSeQoOuge l8M3;ngnanhHJYu O;dF6ZenlHJX;j8M0ng O;he,yi sH35;ng Po O;liFZEwH2JziEVT;weiHLYyimPzO;h92TiFBX;i8ou;aland65HbGdd,enat 76KitgAIBlda YnVppGTKrQtOus;aOtelka7IJ;! reticuHLT;kFUJmelo–fraenkel seFDDoO; P-OdGJQzeroATN;knowledge pGUNpointE9Asum HF4widthCP9;dark thirHOKesA4Ymo0XBtO;o the powe0KNwo;! and the art of motorcycle maintenG9DdayaGO2er61JiPoO;'s parad9VRbA;maxA5Nth;fDL9wiG4C;f,zisław beks7H9;'3LQcYdieGONgreXhWiVkTlCXVmbAn11Kpatista army of national libeHQBrQtPwe asD2KyOzie beeHN9;ed bin sultan6MFn mFU9;anHG2o6F8;aOdBJV; OgoGVZ;l6UJtinBF5; Oir naGPQk wylGI6;bEXZpeHCVstaBH1zCVA;bBWFre;a99Ei hawaHTFn mccla9UM;b,us; WhQk O;and miri make a porH1Wde la rocGJ5rBT8snyderO;!'s justiTB; Pary O;goEZYleFE7qu9SQtaCR7;braHCEeQgPhadIki8laHCPstone is gonna beGJGwO;iGXEooHJ4;aEJRilGK9;dErHMQ;efr2taCR2;lDLXtB7B;naHPQsEX5; 32a27e1Sg1Ri1Qm1Pn1Oo0GuUvPōkOūrH1F;ai,o hikaHBM;ePonne O;d5F5m3PNorGUWstrahoGPQ;s Ptte O;mim5GGnicoleE6R;bissouHM6montaHQ1;a07en woo-DANg04i 03ji oku7ORkZlYmXnVppHRKrTsRta4K9vPyu hakusGOZzuO;!ru han8VT;!aO;l noah haAFTn shankar raGM5;aku mae6SEuO;f demHPZke 4T8;i Ot;andropGS8bezmenGS8gagE6Clowe70MoBTG;gOn1; GLRblH9A;e nikHC5i's cG51; bryEAQe,ia tymoGPP;aHTYiOon; O-FC3o miETO;kajiOtsu8EF;!uG;horHR4i0U0m1CW;a545oslavO; Oia;partisaNwaHRE; mi8N2n O;dF4ZshikHHX;-0Ua0Tda,el roD42g0Qj8TRko0Oland0Mm kippur0Lna0Ko0Fr0As06tam ottolengHGVuPwO;amushi pDTUeri museveHIX; 03'02nUpoHINr TsStO;h of75PubeO;! O-GNBr;creator GIOkiHI0mGEBpremiHDXreOtv;d,wiHP8;ef al-obaidHDSsef kerkoH9G;highHRZlie in aprH5Z; yuh-D2Man nowzar3VKgO; Q'sDNGboy never broke70Qer Ohoe7U2;dryasOfANN;! impactAPL;aQdADEearth creatHI1fPlady andG7Wmone2JTroJs1KKtO;hEQ0urHIV;orEVJrankeGTD;dult0XYvBQH;ll never walk8AFre so va4ve got FRT;are my0BIdon't mess with the z7IAquiz48Xshall not steMwere never really G0R;emite8ZGhiPuO;ga no BDFke id8DF;!hiOnori kitaHR4tsugu matsuoGXN;de suGPHro togHG8;denis ug9ZMgos lanthimHKEkPuO; ni kake8S6b8R3; FLIshireO;! O;and the huHMQpudH6BtGAX; Pk su64Fn O;eu3KUse-HIL;ah-4in-HDUjae75Mseu0CyO;eon5NKoung-O;chFQLj4; of the A2Xtan nEL3;! w9;a Oi viDNM;h978sald1I8; OhaHKI;k6XJoGZQtaHGI;aPi OuHSD;aditya95UbDF4;! sutras of patanjaHIX;ne wisH9OsoFMT;kai wFP2yo HKC;gwie malms73Gw mH66;ca,ir; sunCRRd880fy,k yGO9n and ESMtzhak rGNV; H1XgdrA42;a00ezDh ZkaterinF91llowWm5nVoSrRsOti; OhHCRterday and0CA;dOmiD2V;ay,iHJW;ba H7Jev1sinia pestF; jin-gGUJm1nO; saOgj78Tmi G82;ng-GMU; pH2Nnefer of vengAZQ; PjacketDNHkDZ2stone O;cal4U2n8YE;e8TJfEUBj923rHMIvests 9AN;jawaani hai dee8NYrishta kya kehlatB6Q;h yeah yeaF88r Ost,t;without a BZIzeHFU;cht HAVh0Gir lapHOZk0Cl0Bm06nZoYphet kotH99rWsQyOz5I;a Ooi kusaHJR;d45StouEI8;en-GUWh SminQser arafHD3uO;jirō oG8YkO;e,uni shGUY; Oe bl43O;ag5JJmiHIE;cH7PrajCAT;a shahiHF7ichin bitchDN5oslav O;amosGPSthe4MN; GTJi;deSgQis varoufG11keePniO;!ck biGNP;! d920; Oon,tEO7;di-pertuan aCRDgu5TQmi;reG8ZxO;! DVH;aOi gautHNXl,nayaDDX;d64Bguchi-1KFha QtO;a no or6QIoO; GXB-EAI;cG9Hm5WI;e FJStaGAT;!ov dzhuga6IDuO;lt,tsPzaO;! kiwaHIR;!k;tzHIIwG78ya O;abdul-mateeH6Rkh1;cOtu mamá tambi8K8;hromoCMDombinHAE; window FS3-0Ea09box06co05e01f00hZiTlSmRno7MGoQqc,tPuanza8v3CRxxOzibHMZ;!t4HRx;c,uFSG;chitl1PYlo maridueBQTr H6G;as,l; BFArFU; R'1aPnjiangOongEFB;! internment4AI; dF22ng5T2oO; zh1lin show5ZKmi;jinpingOmingENF;! th467;amHG5erdan shaqiHMCosa GYS;ce,iFCU;noPon,rO;ox,xesGRD;bladeFG6g90Yn,phoO;bAn;de,m;! O;cloud gaGSDgame Oo6series x and series s,wireless 47I;paHOZsHHQ;bi a9WTmGLFnRviO;! Per O;d791wB6O;heGQ3siGKD;der berkG1Athan gHAO;fFM6m5rayO;! crystallHJC;a7Xe62h4Ti1YjD8Vkrp in ciKSladimir CBo0Dps 89Rr03u00weRyOładysław szpiEC0;att PcOnonna juFDMoGS3siwyg,veHF7;k godCNElef 797;eaFPHrEGI;! O;championB6Bh2V1intercontinentCBBnTrawQsPuniOwomen's tS;ted stateH1OversCBA;mackdownOtuHHC;! O;tOwomen'H1L;ag team H1L;eOxt;tFW9w year'921; P-tang9YJhanOnmi mosaBZKthering90MxA;! institute of viCQV;a3OMc8MQzeB3P;aVeRiPoO;cłHECught DKK;ght OtFQQ;brEVMfly0;ckPstlemaniaO;! back8VR; of the O-it r437;rms3GEt3GF;ng3XCth of O;m1the tiE7V;bZFjGLCk84Ml11m0Wn0To0OrOunded kneeECV;cestershire0Md0Kk0GldPmOzel gummH6W;!ho7; P's OomHB4;columbian exCOLend harGH2faHL7stronge0F0;b09ch07darts FSSe06giviC9Wh04m03of 01p00raZseriesYtWwO;arQide Oonder ring stardH47;fund for B49webO;! consorERB;! O;iOz;! cD6iO;! Oi;byGXHcD4inE3P;ourismCAFrO;adeEJBiED1;! of pGYI;lly H0OpidY;oA6QrofessionalEN5;tF00warcraftO;! cBYZ;ap,usHOY;appinessAT2eO;althEJ3ritage 8LG;conomic f7T8nergy supply and consu2HA;ampionshipOesH0F; wGG1s in wDCO;ankPlitzO; chesH0C;! gH5X; breakdown FEVers' paBBHinOweek and wG1;' moHMGg O;meDPRtiO;me,tleC7O; cFR3pGZ2s O;bubble up like soda pGVPper minuH;! DZH;dPlO;ly mamEK4worthsCAG;peF31row CXEs6K9y O;allAVVgFG5haO;rre7GMy3; ji7UJderOg karVD; OlHOCsAJGwallG91;egg prioGWYgDSSwEAS;an oRbH9HenO; P's O-are-wonderful ESN;empowerGXTrFGAsuffFJ8;and children3OSof theFCXt77X;f the b662n tGVB;fPverO;hamGQOi6;! R's QdGYFeGO5gang Oman 1E6rama986wBKW;amadeus mozaHNSpOvaAMG;auHEDetFDJuJ;laHJSra4;aHI5cGEThaC; haCN7-fi2GcGCFde2Fe2Efe of aHN4i2Dki2Cl0Nm 0MnZon,pHBSreWsVtRves of henryHE3zO; khDH0ardOkHKXzHJO;iAACs of O;theGAAwaverly4YS; FABan sulaG3LchQhOold pil791; Oania somn4IFin tempG3QnailVA;a little help from my9KSgreat power comes greatBYTtDRN; trials in the early modern8E4-CJUc9SFer,ing 6DP;cons4e man's grandcB6Zh EYDsam ben yeE4RtCSP; 2DDg86LlessOsDHO;! O;access8YJpower 2DB;aFT6chester08dZf121gXkleWniSona rydH5Dr9sQterOxDJ1; O's EQH;olG05paH6Fs0TRw9;ome s8XVton O;chCDHduGOO;ePnBFIpegO;! jeHIR; O-the-08F;ha99Tmadikizela-m45E;rHMCvossCAL; chHM9dHJPnutC6Es O;haC9EofHHY; VhoGJWmiCowPsO;cal99Zor GBV; H7Os O;ins6A6mQnPp9QQr48GsOup7HQvGNKxp;eFLGubsystem for2FC;otepHIJt;eOovie203;!d8I;pH1Mt98X;! O;mysteA9OrFNY;hGM9wenFYW; wheHE0bur s1Bco1Ad15f13helm11lSmRsonPtO; GJRsDIU; O'sH3N;bethIphE9I; hosEQMer valderC69; 0S-o'-the-wiFP7a282em0RiQowGGAyO; O'sGF1s GCR;brC9QwonGR9;amPe OsB4Z;gaH0TneGPE; P-adolphe bougueEC6s O;cG3Tgrand prixE6NsH5S;a0Jb0Hc0Gd0Fewart gladsGESf0Dg0Bh08i06j02l01mYpVrUsStPwOzabGR4;alH5GestmoBW7ilberfFIGordGCMyl0;ePhe OynF9S;c6KJsiG6H;cumseh s395ll;haOtuart-hCF4;kespeaBtn0;andolph9ATehnquiHIQoBUT;ePittCZXoO;o7weC;nn,rry33QtFBU;aPcF7WoO;nc9NMrrF;kepeace thackerKpoH7L;ane c0UBindsay gASDuther BFXyon mackenziFRW;aOennings bBC4oyHL0;ckson hEFVmesO;! sO;idF;iOv; H1Li H1L;aPenryB3LoOuHLR;ld5ward taFQ6;in3rtD8D;iHD4oldOuarneB;i8m1;aulBGJichDOKrO;aGKBiedk4;anCS8eva6;aFKAhester m542laHHB;aOlaGMY;lH4Err;badHIYustin0PH; dafoeHEP-alexander6NQ;arGNLeALCfQge0pProHDXsOyunDKG;asGJ4h1GMmi6DEuccess spoil rock hunter?;aGNOouFRK;erre6RQorH; Oina6NL;canG0Uke8EMmohnGMPrGKFscHHZ;ord bri6XYrO;ed 76Gied zaG9S; PcaOebeeHHRfiB;rd5BBtt0;bPhuH4NtuB7Gwild O;cGTPweHHO;ill hickHBPo9;!xon signed-ran1G2;miH2VoHL7;!feHH5leaksE2Xmedia731pE8FsoBVI;! u;nerH1Bsel awc; a5MNvi6;! protected O;acH1As4D2;-mF9Ua0Re0GiToPy O;him?,women HEW; Q's Pis,le Oopi goE70re8HI;foodsARWlotta8YK;afraid of virginia woolf?,minding the mint?,neA76the bosAVT;framed roger3HUkilled captain alex?,model list of essential medicH7Nwants to be a millionairFEP;le my guitar gently weeGUZpsnade4XSrlpool 09s07tO;ePney O;cuAU3hCDI; Q-PhAQFsOy4BX;nakeGDKpaceDRF;b8Q2tail072;a00bZcYdDIKelephant giftF07fWgenocideE7RhoTmF9InSpRrQsPtO;ig0raHBU;outh afrGVDtar H7GupreBNP;h7O9oHIN;ap0eGQMhosphorus munG3KoGFE;aG3NoiHIL;le,useO;! O;chiefCU3doHH6farm 8DZ;lOox;ag,igHH1;hEH1liffs of dE2L;l2CZoy FPQ;mGV1nglo-saxon protest4WT;kOperQBtZL;eyFYWy;cG2GgFUO;atXeUn SreOy; O's wallQ-to-be-bornHJ8;eagles daBis everybodPthe O;crawdads H8Gwild things aB;y?;callsQ4hopeFYSmarnie was tFROnature calls with helen miALBtheO; camellia bl9LJy see D;in,l of O;fortune and8QPtO;h8R0iHJI;!ston8UM;le8OBrton school of the university5QLtO; P's OabouFYBsaGEX;eating gilbert g0WCmy linFDOwrong with secretaryBIT;a wonderfulHI0happened to0HPlies benFFZremains of edith fAQJwO;e do in the shF0Pomen waH34; 1C're the m445a19b10ch0Zdding 0Ye0Uhrm82Li0Sl0NmbleyDMQn0Fr0BsPtOwoHFC; lDZSlaHFHr29I; 06ley05sHITtO; Xboro bap1GCern Pinghouse electr1MXjHFNliHJ2minster O;aAPOscEYU;aUblHJMcSdB1SeRghaHF0n3CQphFXLr9UUsQuniPwO;aCorHHU;on,tH68;aFI8cFKW;soteriGRFuGRV;aOulH5W;n2pe;sAtG2ZuCVE;afFRTbRcAJVendDIEgermanQindiesPmemphis4X5papua national0LAsOvC41y3R6;ideHI3uAJO;! cEZA;icGTAy;aGIKeO;ngalOrl4;! state electricity distribu2B9; snEROaF0I;a37JbAYXcPmanGTMstOweG84;rE5QuH6P;ha7R6rGAH;ewolQnOwoGNZ;er heOher von8LV;isGIYrzogHC4;f,ves wi5V7;dOtworth H9Nyen gab970;elSiQyO; O's;ca212monBL2ricHG9wiFS3; Oe maAPBgo;deng61Cmclendon-covE; meldrH38l O;andEGIpiBCL;come to ma4OOfareF10lPsh OterweHFD;c353laGQWpeGOS; to hell6JAePingtonOs farG6K;! paranormM;rm1sleyFZV;bullEA8ghtOm7SV; 8GXed arithmetic me1lifting fairy kim bok8FJ;kOn,z0;end Ply shōnen O;juFO5m2K9;at bernie9JXblockb475;anniversaLcrasEOG;at,sler adult intelligenceEFO; QasBQ9cHEYdGM4gl,hoH8UkHEEley revoB72os,p,rtc,sPtoO;on,rG64;itDUXoDPU;apB7SbH1cSdeRf1GThosting438ofDNSpaH04sO;craCYOervO;erOiHH5;! directoEPH;siGX8vGQ8;oBZVraCGW;k7U2pons of the vietnamGBJr H9JsItherO; OingX4;forecGOYreH5Lu5IL;are SbRdidn't start th94VgotQnePsOthreeATSwere s14M;hall fight on the beaHG6ummon the89F;ed to do sometDX2ver l4KM; mWYta get out of this4SZ;ar8SCought a4UW;lad7I3tG8L;bi-saFC8coE84d24ff23g21hhabiH83iting for godHHWk1Yl1Amiqa gabFC8n11r0Bs04tWvTyPzO;e,i8K0;anDRIbackEW2faHDPlon jeBUJmo,ne Ov,ward013;bDH4gBJVhenC39knHEFmard7neD69roPthieF77wO;aAJ1iFQZ;geHFFonE;!eO; Ol9GQnuHBJ–particle dCV6;eqF7VfuH28interfG1B;chTerPfoHF1kin tudorD77tO;o,pHD3s f8B4; Obo2R6fallG1Igat6UVmC50ship 5QFwHFT;bDCXcPma74BpOresouETUscarFOP;olCZNuriDH6;ons7L9yc7; Om5os;doHDXthe5M5;aFBRhingQpPsily kandiGD9teO; FEWwater1DW;!-G16; mEVLton O;capitaHEWfGASirFWXmOwizGNK;etroOoB58;!pF0M;! 05c9LZd04ez2QCf03gGFWhammer age of sigm9lo02ner00pGKGrVsQtPwickO; dGK4sDD7;!ime sexualHEA; of the RawO;! O;pactOup8GH;! invasion of cAT6;rHFOt1WZ;ant Ren PingO; states87Ft2;bOcDIJeFLOjefDD9mo2oH3Os1W2zev2;e3ZRufDTF;ca3CToCIV; OmE44;animationGY3mBR;ck,rdADH;ar4raHGC; BPQrobe malH1A;and37UcBJQforE9QhaG2Yin TmEUZoOtG1P;f the Pn O;druHD5teDSG;austrianC1firstPleague of cambrH4WsOthirdP;ixthOpanishC0; coaliHBU;dOheG7X;arfGWJonbHG6;dRgPkelCLPnO;acry ransomwareDQCseeG02; Oan4SX;leehGVCyiDZQ;aQerO;erOing jG2QleiGET; above the sea of fGQRsDJB; OviH1W;naGsyk3ven7OC;d09esF9RgrESFk08l02maHG2nFA1purgisD54rDtOz3X1; Yer Qher Pon Oz;faG7Bg69C;pp,von brauchiECI;bTcronkiHdur1HFhiCkSlAPHmQoBWSpPralDS1sOu1U6;coH6VmiGXS;aFN4idGN5;atthGTWcmFLWoO;dInF3C;o9SEruCQ2;eOreCDW;ck0njDJV;disneyOwhiCMV;! O;a2U8piFK8studios motionAX8wHE3; HBR-e,aQis PonApaperCL1s and b0GSy O;cGGOweHC7;and fuE3OsF3D;by,cOrGI4;e OhA;and gromHBPfardEB1hANIs8Q5; thCXPer hay3m1;en,orf O;astoriaHB4eCR9;anHDBeOizH2S; O-on-l1;fores5VYisH88; tYOner Oon tH03yu;gGWRmouG;e2AQle houseHEI;dOeE24;esdon4SOy wachtI; 7Ra5NcaHCRe4Ff4Ega4Dhs,i11l0Umware0SoWpnEDVrVsUtDGFulRyOáclav h7DOõ nguyên giáp;aPbO;oGXOz kaF79;cheslav molotGDGsa;canPfpeJgaOk1tuBva;r lEXLte; centaGV7oHCA;dc free video 822s vintorH7O;bo,chH0Fedefort CH7il;ca0Hd0GguE0Eice 0Djvo5KGlZmiHF0nVoUrSwIxRyO;ageOeuFD2nich manuDKV; HEKr Os of christopher coCBA;golden C2YpFCG; mE29el;onoi9KZtO;ex,igeH40;dooBBBt; Petta03ItaO;e9WVze burfiGPV;dOmiH5Jneumann F6G;utH2U;atile organic co3DBbeH02can00gYkswagenTleyGH4odymyr ze1WJtPvoO;! 7Y6;!aOesEE6r2;geOiB;! O;divFU3piFJ0;! O;beDTAemissions H8KgQjFZHpPtO;igu1ouarDUM;assGZToH5J;oGJEroGVT;aOoEEU;! gUX;ic explosivGK1o;c85MoOtyH28;f Over GQ6;aFMQvADH;afo6ka;lOtionalCPW; rGMSoHBCs;! O;esA21wATJ;adPc medOog;ia GT8; RiO;mir OvostH4J;harkCNWkramnG8Vlen4nabokGC8p8GMtGIEzO;elG9UhirinoFPS;and FG9the imp25Q;acomcFIEb2Yc2Ad23e1Ug1Tjay1Rk1Jl1GmFZBn13ol11perC1Mr0Es05tVvPzO; mE17sHD5; riF74a la vidaSeRiO;an PenOsG60; lDPRne weG5T;caH51vFRZ;k oberDM0nH1D;! or death and all his9AV;aRel6WXiliG1MoPruviOtorio de 5VX;anH8Rus; Or belGLG;corlATNg44P; sackville-HA0lQminO;! O;a,c,d,e,k;iOy zdorovetskiy; Ok butAAXy mykolG9C;klitschGLL;aTcoSegrádGUQhE1ZiQsel koFF0taGual Owanathan aEZK;eGZJnGQDsO;nHAWtudio FG3yFEK;ble ES4gothOt mallorcaDGD;icF97s;siH6MuGWO; requirements for OkhapaACH;indianOunited statesO; citizeN;a08giVtuOustotM;alQeO;! O;etBUAsign044; ObGDZiEFM;l1mPnetwork cC1Lprivate OrETUwHBB;nFJGseFBF;acG9EeDE8;l ZnO; ViO;aOe efiGty;! O-GG0;beach RfFOAgiuffBhQmPtechOvalleDJOwooGHS;! sCJA;a1WLckEOC;alas mccaDK2ey;np6IXsCJ7;aPgOiGAFmE00of the rAHQrF9G;alCCRroGU1;tECUuCOO;ablGSFeaFC2van dijk;l Ot k29N;hemorrhagicAYDvectorEAW;a9ULet Oin;everGIVjessGJS; dA50ayaZceReQg rhGB7laH8AnOícius júAP3;ie Oy testaverFZR;jHA0paFAB;eth sreeniv6AYssa ER1; SntO; Oe m5EE;caDRQd'onofrGA8gPkOpFJQvan goH5Q;artheEBUoG2N;alH3BigF3V;caH50gOlomb4QWm0NZneGOUoFHAstaERCv4RByFJ9;illOuarFBU;!ig1; vidheya BVPk damodar savAQT;laOniD;ge Orreal A6I;ofB7TpeGI6roadshowATH;ingTraPtor O;durasHC4frankl,orbCTHtsDK9yanukovyH03;mOnt maH8V; OarkuA8I;bEH5saOvedG0D;mvGX8rabhH07; Os;aGTPeQ2; Oanagar8BV;an4XMdever68OfH4YkDZ3mallGJBsethupathiH4X;enère0JAgo morFNP;nnaUtO; co8namO;! Pese O;alF77laGJVpeGHR;naG54warO;! cO;asualH67;! O;new year'sFZHphilharmFQD;eoPkun quisH3RyO;a bal1ut jammwM; OdGUQt4A0;editing FVWfiESMgameOho05Mkilled the radio ANVnEMSon2IC;! O;c8KIdevelopOg9FQiF29publiFR2;er,meGUP; 08e05hy DIMia faGSCkZtorO; TiO;aOoD; O's secrH78nA7X;and albert7YSbE4EcPde angelFfFPZjH5MpOso8t3TJwoHAY;e4XFrinc2NT;oren 65BroH9R;bRdavis haH38emmanuel ii8Yga6A8huFZ0lustG6XmQoladiERQvPwO;ebH0MiFFU;escoFDHykhryH7H;aGXHos3;orGSUuoGI6;ers Si Qy O;cristina2E7kOmAHB;au132rieGL3;la965peO;pperBZPteGP3;mDE8wE7A; Pnte O;cFXFfeGAMluqGYS;mDY1presid9IV;fPmOreG3V;arH0CignGBoDKX;a6DYliJ;er,raH5X; c3SM; cFSUb stutt7M7l wolfsERC;ctor 0Ud0Se0Qg0Khicle 0Hl0Dn06rRsOtrimaG9Lvo;na vulGEPpO;aOer lyH6A;!si1;a00cingetorGQCizon CG0khovna 9U5mYnWonUsStOy hi8N;ebraQiO;cal Ogo;b9f8MV;l column,te;aH98ionO; cGFQs of bladWG;a,ica O;cFIYlaGBImaH7XveG;aOe F2B; bC23cula424;iFOVoO;nt,uGRT; O-eGGScryF5K;f0AGlyGS2mEZZ;eSiRkat prabEH1lafaxi6mo,n9G2turQusO; OtraGHU;de miH10fly6M7of willenABHwiFJ7;e3QBi EEG;ceCVYs2;to,zuelaO;!n0ZG;ik3JSma dC6VociQvetO;! revolO;uH52v0;raGO5ty;id3UWregistration plateO;!s of O;euGI2tBYZ;aReOgietC9V;miHtaO;ble4AMrianismO;! EMI;!niGZRs O;golden knF1OpGXGvaG8Y;p,rO;-zaaGapp1;aOic7ZW;nH9Gs;calculus identiH3ZgBQIpEU7sC3D;a1Qc1Kdim khamuttski9IFg1Iishno devi1Gj1Fkeel saEZRl0Tmpire0Qn05por04rWsRtQuO;dG3ZxO;-le-vicEPZhall moDMT; id3UFicaEER;cQec8EKilOopreFSYsarFQH;iy lomaFJWopiH99y O;arkhipG7DstB06;o da 5T1ulO;arCR2itF;anTg vikeD50iQuO;du kaavaleDXLn O;d1J3tDX9;aOcella zoster9U1eties of c860;ble-frequencyGC8nO;ce,t creuBGB;aGZAgianO; g7RWs; ERNwaGXR; 05a04c00dWessa SgRiPnOtabEIFuaG79;aDQMes A92;lla Oshing gradientDSCtH8G;fC4UiH7OsG75;elFuard-GBU;bGNUcDL2fQhudCNVkD5TlPmarcGLAparadFrOwiFHX;ay,ed9CC;achEen80J;erliGQ0iF7G;alQerO;bilt Opump rFRJ;faFZOunFQ0; sa91Ts;e6LIouverO;! O;canFMRiO;nGVSsH14;diGSTm;allen radiation DGPdPhOjH0FmoE0SwiEQ5;alD5LuGRO;arkholH7Ver waalsF48;! O;hunterANPwO;ee8YL; kiFUGeZhYimGWGkVlSorRproaHsalva maneuv0tQue-added0L1ve PérieO; pécr7W0n ismaël;cFQDiH78;er 0K0teri bottH7R;aGRFieEJS;aPeO;tH82y of theAJR;bhbhaiFS9d4W3;nF1RyrO;ae,iO;aEXKe;alH73eGLG;dictoGQKnSrO;iOy legasG60;aPe O;bert8WEhE1Kle2pacDSZsolanH7F; goCQ5n and the city of a thousand plaCDL;cQtinO;a Oe8LAo2H5;allegra de f6KAsFIBtereshFD1;e elec3ZWiaO;! A1Zn3J;iralongH2rayaGSM;! templeO;! stamCJ9;inaOusA0;!l lu166;ation94JcinQhirawit chivaarGYVuum O;clCKFpermOtuF8Y;eaE6FitEHK;aH2MeO;! O;adverse event reportF8DhesitD0R;niDHBs153;for vendFS5sO;iGM9p4OD;-8YAaG5Lb5Yc5Wd5Uefa5Of5Ng5Mh5Lk5Gl55m4Yn10p0Tr0DsYtQwe boCyPzOğur şah4;bek07Fi,u3TU; scuFTBghurC0I;aSeRilitQkarsh ambu5GOopArDXKsuro-bu6tarO; pradeshOakAOI;! legislative 3EM;arELVy; GD1rD;da hika866hO;! O;jaBE7monoliGOLutes39S; 01aYbWc trojan5ZRd AH1eShRl Qman khawaFYVs Otaše;aFF9cOjE3RlibertyCFGmonBNX;aG1DoD56;chGIJleagueGCM;anGBDuaA; QnH2Qr O;aFTRdatagramGNEinterfaceOsH5J;! GLO;case14Qyour illusionFW3;! O-c;flashG9UhBNPon-the-FUH;! Pge share of Oin boET1;o50Oweb browseH48;nFCXtQK;aFXCchauC63;aZbaVdu,eUho kekk5RKiSlRolaD74sPtica dioiFV1uOvashi rau1CK;guayEZYk,sei yatsuG;aEGYodeoxycholCYKula O;andGGYvon der ley5;! shor0UA; geGX1cH3Eel,jah fE3Zm and thummGJWnaO;ry tract7INti2;a,mAthG;in le vFOAnO; OiE8Q;arGZVd323legeH1YmOoutfFDLplF13rail transiDJQ;ey0ytEMG;lQnO;iumOus;! g9BT; DKHicGG1;anishaGUJn,pPstateH1JtoOwoH1M;n sincDU1wn fuG5A;eOsaH56;na,r O;eaPpOweP;aleCFDeninsula of m5NC;st DOG;a3Kbreakable kimmy sc9PWc3Fd38e36f34guE5ViVknown pleasFA8manned TobtaiBM6rRsQtiO;l 9G0tled O;captain america sequIdeadpool H0Yfifth indiana jones H0YgoosE5Dmario H0Y;a6imulatedBZOolved9YJp8BXupervi0AG;avel6ZVeal O;eFJNt92L;aOcombat aO;eri1YG;c2Tdentified flying4EVf2Ngi6lE7XmGG1n2Mon 2Iq2HswF4Nt0KversQxO;! O-liG6U;sE88tiH54;al0City O;atD0Uc7B3of O;a07b05c02d8BLe01f370g00hBY7illinois urbana-ch8T9kansH54loFKFmWnUoxFV5pTsStQutGV8vBQ4wO;aOisconsin–mESV;sCYCtE54;exas at0EYoO;kGB3rA4L;outhern c8D8t3PBy07C;arFen7KLittsAV0;ew so3KWoO;rth carolina at chapel E71tre SK;aQel6XFiO;aGWTchFS4nnesoH58ssO;i968ouH0V;n9VWssachusetts amherH1J;eCFHlasgH2L;dA8KxGQU;aPhBC7iOolorado bouEMU;ncin7BF;l8CXmE5B;olAKriO;stH3Wtish coluD5C;lOr21NuBSF;abamaOb2SE;! in huntsvilleCB9; OiGV1ly uniqueAJW;asynchronous receiver-tr3LPbasic i3M3classicAO1declaration9KLhealth2ZAmQpPstudios Otransverse mercator cCL0;f36Bh8YX;iF94lug and GR8roduc7D0;usicGLZ; 1Jar1GePy O;chEVZt7WI; the right rB5WdO; OhealthGLV;a19f18iBEAkingdom14nations10parcelE33ruG0MstatesO;! O;a0Ub0Tc0Od0Ke0Jf0Ihous0Hin0Dm08na03oYpVsQtwPvD41wO;a6Q1omen's national sEKF;entyYoY;ePoccer0LEpO;aEK5e6BC;cretOnaH; sE2Wary of O;dDJAsEMM;ostalE2Tresidential O;elFWEline ofO; succEX1;f aRne-O;dPhundredO;-dO;ollar DLG;l,meFCJ;tional s0KvO;al5VAyO;! O;oD4MsealO; selection and7PYs;arRen's national QiO;dterm3IQlitary Onor outlyingG1K;a5V5casualties 8P1;baskeFXDsEJS;ine6YZshalsE2C;fluenza statistics by flu C08telligenceQvO;asion of Oolvement in regimA07;greDH5panaGVN; c9JC;e0KFingAAG;ederal executive depar992ooEXA;lectoralFKVmbargo against cuGKN;eOoEJA;clarationB9Ppartment of O;dDIIhOjGXYsELUthe treasuL;ealth and humanFOOomeland 7HC;apitH2GensusDT2hained consuRoOustomary72H;ast2BJnO;gGE0sO;tiD1SuO;mer p7HZ;ill of9J7ullion dDCV;irEZ9rmOttorney ge901;edEFKyO;! O;a0KToD3Vr46HsU;! O;convention on the law of0WQeconomic and social83Qframework convention72XgePhuman rights83QpeaceA9TsO;ecurity83P;neral 3APo4VJ;! O;of PsO;pecialEFB;great britain andA2CtE0J;or hEIAruit FTA;irFMRrOustraliaGW7;ab OtD2I;e9S8rFQW;ianPy O;mGIPsEL5; universaFM0iGT1;of me29YtDK1;lo,ue selling proC21;bQcouncil of minDHIjaJo3OBpOsEL1tEIK;acific Oublic service9AU;bigCD8r94T;a1RRui5D3;corporated EM2terruptibl055;iQormO; resourceAHNed servicesC4Hs O;and insignia of the schut15Nof0A7;cation of Ped O;extensible firmwareEYZmodel9KVpaymentsEYZ;geFRZiD0K;ef,oO;deOrn;! subscripts and superscripGXS;ai3LVorgO;iv5oEKX;mployGBZscoOthical human experimentAY2;! intangible cultural heritage2H;eOrafted sports5WN;fADMrO; RgOta7wH0F;arGBUrO;aduate Oound948;deGOZeCDR;arAW4one 5WHprEKVsDSCthe silver 86O;annyRertaintyF3GhaQle Oontacted8LRut geGZX;bOsGYLtom's cFXJv6WH;en,uJ;ined me5O0rtGWV;! F0H; stubF6CbomberT8caBP4;aRberto Oineko7NJmag8GZp7;eGNPiO; Oi O;of iCZW; Pmi,r,yyad cO;aGTAonquest of hispCJH;musume pretty d5UNthuFO1;aanba2SCcerative colF7Tlu,m,st0tOu80W;imate VrO;aOon; hR-Qm1sBC5vOwide formaGX0;ioletOox;! iH0N–visible 1XO;high-definitio7JDwideBCI;d blu-rKiO;gh fF8N;customCQBfOmaDRXsFP0tensile06G;ate9EViA2R; Rg,iyoA1ArainOule7;ePian O;a9X7g1CShryvnAinsurgentC36laG9IpA98soviet B3L;! FUQ–natoBB4;dC1KindependenceGUIsingles8O8;tred8YIuru kenyatH1A;anGYYly bERDo humGJC;cBMKotGWI;! O;cReuropOnatGCGsuperGCM;a Oean GCT;conferenOleGCG;ceGCE;hGCBoDLCup winners'GCI;aOeEVYhamGUBo ki0;ciGU9loyESZy9ET; bOla brui461;rows0;aGWLba,erSisoftQlock39Us,untuO;! O;phFETveFBD;! O;conDJUmE6W;! eaGW5; A9Z-01SaY4biliGR2cY2eUXf–idf,gv,hCJiAHjx52CkGWZms GABntAGo5Sp-6CYr27s22t21u10v0Vw0BxEPPyOzu82Béa leoGQ1ýr,ā moG8Tết; 09cho braGOTe3D8ga,ler 05ne daGL1pWrOsonD7K;aTeSiRoO;nOsi6; 0W9e O;pGF8wi63K;an puG9VonCB5;ek E2Bse7BH; bEBLnnO; mathFANoGLC;eShOogGTM;oOus;idAM5n,onO;! O-G3G;haCW3rGOL; Q-GUHfaGZ7r34LsOwr97J; of OcEVP;prostitution in modern75TswGOQ;a and type b personalBHJi and type ii er3T1o n3ZQxxiG3C;hQjPpOrENKwCO2;erLosE;ames DLGoE35;o5YTunALDyn3;burDCCcoF9OjoGX3siHJwaG6N;eZiToO; R's compC4M-O;facPsO;p8W2t8WL;e,tor EHZ;and a halfGXObrothersAHAfatE4Nmules for sister saGrodeA4Ysteps from E2L;gG8LliRnQsted PtterO;! suspGCZ;mFRDpaGVPsiGPC; peaGPFkle1YD;ghtOo;! zone8AL;lPnty OrGKK;on097thousand leagues under01H;fth SveO; O-stepCMN;days ofGZ7grDSPminut3oPtribes O;cBCXof isGN6;'clock98XlympGO9;doGLTnGW5; Qb aOos,xq;nniversary FONwards winnersO; lCZ0;asaGMNg44XpaOtD9Y;rental guidelGM6trGYC;a0Nb0Lck0Kesday weGXMf0Jl0Gmb0Fn0Bp0ArTsQtPvaO;!lu,n4VT;ankhamGYBoCTSsi;caFU4keO;gee On7IJ;airm5syphilis6ZT;andGZ7bo03du8Q3in01kUmerGZAnQpPquFY9ritopsis dohrnGUUtleO;! rockEREs all the way 580;enEHNinCAJ;-based s4K2er QiO;ng Op,t4;pointBF3rGTY;b5KVclassicDNOsGI9;anaC9JeySiOmeG9Ws and caicDI5u;c EDZsh O;aPdelGVKinvasion of cy36LlOpeG50radio and televisionFH5wB51;aG73iG;ir2G1lEUE;! O;naFSAvG96;!g O;aCY4c35KmED1teGV6; c42VchaDSBencabFGCf1jGUQprG5Z;acEK8le,pence miCCR;dGgPisOnelFI7;!iaES6;stenOuskaCFA;! c0P6;bGU2lr;anER3ipPpa,sOum;a raceDLYi gabDSD;! mCG8;nel84VtD3U;er carG18man's stages of groupG6F;eOi,ularCG1; mEXFr3NG; tagovailFG5re7H6tha dé danaGGC; 4UVeokbokGGI;aQg G7Winghua EQVmc,uO;gumi ohGFAkihiGXUnOredureFP6shima EMDtomu86T;aGPVdeB;i ing-w5rO;! bomGF7domFU5;a1Ke11i09oXuPypO;oG5YtoAFX;die stG2YeTff7jGU3mRnajayaQsPth O;so0G3tGTE;s,ted platformEVJ;! rFCP;an capoHpO;et,iGO6; OcaGON;b82PdM2li3r3NO;ian bellisFT4jan YllXmsø,nWpStsk4BAubleRvo GMQyO; Oe s9WM;aiDK9bCX9dOeG42gaG6KkotsGDUpolama7E7;eFPPo9Q7; with theCPDd730;hic sta0C6icO; Pal Os;cycCSFsavanna79I;of BI1tFIN;!dCGS;!eyDH5faGWIs world F2I;hA39w9;a08b07c05dent04e03g00lZm6C1niWpUsPtiGHZvOxie ma0XW;aFLEikram srinivGX6;hQkeFC7taO;n OrAEU;and iseuEJWda cunFLUthDPN; strBCDa O;paytGX1yearG3R; hG4Ladv81Ile OoGNSpie 609uG;bottom GK6crown of acGX8ent8RMh,s7MK;dadPty O;college du816sBZP;! and tobaFL4;ateral95CobiH;eminalPlyceFE7onometrOun;ic8XCy; nAU8;!r,sH;!ineC8X;eratoG77ia O;helf0leigh 9NN;aGKNecaDOE;ge,lSngPssicOtAMI;!–jur2HM;leOular FUW;! O;iCABs4HT; of OwaB;arne cheyenneCQHmiANB;aYbXe Wha89KlGNSnUpEROvoQyO; OarGKS;anastDIVlFAVpaDNBsongz;h c3IFnARRr O;hoGLQla8RWmcFC9noGMFpOslGQ3;eaCFAhilO;iG6RliG6R;chGI3dyGVJt O;alexander-14Oba128gFZ9reznGST;oB9Htra3FXweC;linka0I3uED1;dsFOQsTtO; DHRy oO;f On the non-proliferation of nuclear w8U1;brest-lit5NXlPsèvr3tOv2R2;orde737riDK4;aus6ORisb2;on,ure O;isGOZplEML;b19c0Zd0TeDR0f0Rg0Qi0Njan0Mm0LnZpXudl j28DvPxamDWyOzo8C1;lor CSQv5ME;elSis O;bQfi9F2kPsEJIv1GTwO;alton ufoC4Qi5Z4;alaBI2elGV0;aDMOiFB2r6NI; Ping wilburFOClO;er's7YGing salesmanDFK;agF37m1; mFGSezoidOp FN2;!alB42;ceFGPsO; 06-04cendental01d99NfYgenderWh1M7iTlaGR5mission SnisFLGpoOsexuMubstaEA2y7B7;rtOse;! O;inG3HlayerO;! 79L;controlGCFelectron mic1RW;storPtO; authority of river F2Uion23G;! cEY9;! O;flG0JhFJF;e44Xigura1K6ormO;ationOerCQZ; mGBDal leadBD0; OiGLP;meditationOnuGPB;! BHU;neptunian44OpBCUsiberian O;orche2W5rD93;m1woO;m6KIrldBWO;!adGU9;!'sA29;lPnO; to bus1ingF7Bli6wrecksFGP; of0ZCer park DSZ;edy of the comFP9icA6X;alga746fic O;cF5JlGRQ;eRiO;ng3FUtional O;aG8Mchinese O;chBVXmA5O; uG5FmarkOr joe8WF;! FUH;eUhTi SkRtQy O;cALZletGQAmOpoD11wolfs2;cgCU6oBOK;atus logico-philosophD46or; andDWOmCCJ;lGJ9th2ZNwolGU6;eomalE8RtenberEVU; Pe elliECBrCGLy O;cD3RulDGJ;adF04cDFI;aGDZzonO;!spGQV; 48ast 9V1b43chigi FG2d3YeiF0Yfu,go,h3Xilet-bound hanako7AFk3Olue6m26n1Do1Bp14qGIKr0Ts0Pt0Iu0Bv09w03x01yO;! sGTDah willcFVFotOs \\\"r\\\" D;aOomi hidey7QE;! O;aWcUdynamic forceBZOfTgr ShiRjzBZOland cruiserQpG3GsPtOuzBZOyF9V;a5S5uESV; eF8DupG;! pCL5;aGT9gh4XWlFIM;eF8AyF9Q;jAD2ort3ZI;amLeliFIUorollaOroGR0;! cGAD; eF86lpGRL;ic mascu4BGoplasmO;a gondGPTosF;erPnO;es v04BsvFOS; Ps of bolO;ogGF3;brGBIh9GWof O;bCKAgGTQhanD27loF8Y;e Oino AH5;j9OQlo;cQhouNQker suleD5DlGRYrOssaint louverGGC; de OetteGD3i7EVmaGGQ;frF80sGC1;an,hO; PsO;cFWHtoneAB5;t581yourAI;alPo Otenham hotspurCWP;iv,w3G4; Ob0UWener7LJiE8H;dramaQeclipseOfertili3O6w9; ofO; theAC;! EHNraGLG;caQhiPliFSTs O;a coin to your witFTWbD19;ba,ro mifu6yuki moriAUV;! 5IS; bGJ0ah,chFZSiWnado VontoTpeFZVqGHEreRtPus,yO;! lanGLW;!oiseO;!shell30M;ntOy devitGAO; 6UHz;! O;fc,iDKLmaple leaCPJpearson GGKrapD6QsD3ZvanD33;aERRrEPW; Oi;amGKJbE2PkG6WspGLC; R-Qaz,herGR0kapı D9Dl55RoO;graphic prominGQ9logO;ical sorGSYy;down and bottom-up G80lB2J;bFGAchBUVgPhGEAof the O;laFU8poG34;ear challe24Eun; Ofa1naGKJtsGQ8;close for comG0Nold to dieDNN;es0Fg0Ei09sil08yO; Oa h22F;a04b02cuGBDd00fFQBgoZhaYiomGKFjERZkXlVmTpaDJErQsPtO;he landsCMUoEG9;coGJIhalhoDP4iriGELopEOF;anACXevo7IJiEXSoO;bOmo;biNiGKR;eGL4oO;nCB5wbrK;eung chiuOip;-wGGT;h1usDDQ;le,wk;ldwFQKn367;aOunG15;lt2nFTF;eOlaGO9;llFEQnFUD;bA9KwardO;! for bestDDGs;!lEYE; OcCC6;bQco2E8garGHAkPmoDKNsOtennFMW;ervEJStoGER;roGJKukoč;asG4PraGAR;a,hGCL; a6G5; 03a02bXer siESBiWmQoOyrF;kazu suDGNrrow OyukiQ2;never DWRx9X1;ie fra63PyO; OinnGNY;cQfuLhilfERJkiGNIlPmoOshC8Gtub8MEwi6AX;rrFN2ttoGR3;a8N3ee2P1;aldFIBho8; lahr5e; Ooy;of QraiderO;! O;ii,rel4XN;caecilia metGQUthe unknown 1C9; zdravkFVSsz schafernCR2to;a0Mb0Jc0Ad09f07g05h01kCURl00moZpVsRtykw0wO;aiGMZePilEZSolfO;!e;lGJRrn0;eQizeGKBker45BmDXHtO;oOuAPX;lBYEpAJN;guGlC72;ettyPidCA1rO;iGNMyGQ9;! O;and the heartbAJGdiGIZ;naF2YrGI9;aEXXe2WO;aQeFDJiddBNCoOulGQ4;llandOop0pp0;!er;nGGRrG9Syd5;rOuiL;av3e5;eFN5lFRHoOrDJ4u3EO;gEV1rd;alEel2TI;lancyPoOruiseGK2;nwKtt2urtenK;! G09'sO;! O;ghost reconQrainbow sixOsplinter A04the E9A;! O;ex901sDH2;! O;breakpFQQwil9R5;ak0ereG8YombadG3ArO;aG9CoO;kGFBokshi0;ckeC0Qnd jerryO;! O;fGJPinGM3;aVelG4Ei poGBLuTyoO;! OpFXR;broadcasting system9VAdecadGNOgQimperiHKmx,revANSsOtG55;kyGE6toOubway sarinD0C;ckE5Zry;hoEO9odfDND;gawa OsARY;ieQFshoguCG8;imura nuclear816mFM8;eeb jimG62o;d Orick FIT;fiF5XguC0ChOkohlheFLBm4MGphDCZruEAY;aOoCPK;berOyn3;koGF8;aRey magui9UTias QleFOYy O;fFQZhuGOPjGNNkebFRXleonardCAUonwuMEregD9FsOtuFWO;eb7PLtepGAC;lütFRBme7H4; catastrophAWHcGBV;catch a Pkill a mo2Q3love 7P7pimp a4JNtOyour8GG;ell the0A7hGK4;pEO1t76G;! equivaF9Y;a1Mbe1Jc1Idal lG8Yer1Hf1Eg18juana7RLk17l12m02nWoVpTraSshDAPtOz5ësG79;anOePYi1o ortAS1us wellGKD; FG4faCiOobF7Ms;cFQWumO;! d2ZW;miFBKna;pOu 70W;er 1O5i heFGN;beGOQ;aRkerPnitDo livramECOto b524y tO;ina's wondDN6oon3UF; OcGL2;beCtailor soldierGOT; OsGDN;aBEQd3KNfElo9Z9majoAPGsinDUOtuFW2weymG0X; 09b08eVoPurO;!iGAD; weFVZthO;y Oée ch2DC;bQdaFLGhuFRIlPmcvD19oOs1MKt553weGLR;lypG01munG5W;aurGMHeaL;atFMDot5R7; VlineQr,s O;higher education1PIsquareO;! FRJ; of Os of worldEZQ;aQhPnational8CZprehFCYstar trFLUthe OwCZR;evolutionary historyB21far fuGBJjames webb3CR;istoric i88ZumanB29;bolition of slavery and serfdG3ZncientEZM;banAEWcRdiF5Denough at 63Uformatting and storage buGLIin QmaEMKof con1IIperson 7W2sPtOvarianceBZLzo6;eGLKr6NB;eGFUigA3Z;auC0XcDBXtCG1;omplexiGI7ryDABuEQG;aGHLukFNA;aFVJbYcVdUferALKhSmRpoGNTrPsOtebGMC;c706tokeG96y2Z6;iGNPoO;bDFUthGHV;athFLUcFHSeaNinFS2;eideE3EoO;rDDWwaGM3;aG90raFPXuEE3;oPurryO;! performaGNA;nwKok;ePlakeDYVuO;cERSrtDA2;rners-lGFXv1; schweEO3aRdPia,lO; lindeG6Ey1D5;a Oe;cobham-heAO1swiD9W; teqK1pA;a sumE6BtGES; notaGC8erQht0M8raO;n petroEUHy O;reF7Ow9;! O;iFX2ki8laFPGshOwA4KzindA2Y;aGJRroG5X;a CD5fanO;i thieD92y O;dar0PLhad73Qt9W5yEV2; AW8ra del fueFBX;-tac-tFADkerC37onderoga-A6R;riDtO;! autonomous 5LSan O;buddEPBpeFU0; PmatE84nO;anme12Qgong sp6MWj4;carreBm57I;aHOe1Si16o0Bq0ArXuQwaites glaci0yPérèse of lis49Zích O;nhất hạDOVquảng đức;laFBFm7BJroGKV;cydidesTgSleRms G52nderQrPs spoke OtmoseDGC;kishibe r6CVzarathu2OH;good8LFingA; bKbolt and li7WFp406sAQ3;! air G8V;gGF1s of hindoFYJ;! 5ZS;aYeeQill0B1oO;ne of Ough the looking-g8T9;b7SAg8T8; Q's FDR-OsoGN1;bodyD6Zd8K3legged crGKXpO;hase electricG21oint field goM;colours9XDdQflavours cornetto9XDgorges7TWk13Dlaws of r3ANmOpercF9wise mEHK;en and a Oile island7Y7;baGI4little3CZ;ays OogCC6;gGL7of theEZP;cOsh1V0;e,iaN;! nordGNA;mUnTrQse who wish meFDYth,uO;ght9TNsandO; day9I9-yard sZG;!a birGB4iOoughbrGHZpeCYK;n oaken8ZBumO;!-based nucleB3K; mCMFg; yorFO8asOpson suY0son reuEUE; O-alexandre dumGMLin mcDGO;a08b07c06desiABOedFI3g05h00ian3AOjZkYleBDMmXneERRpVrUsStPvint9UKwolO;fe,sE;he PuO;chIll;aDQGtankBS0;aOoFD9;d3SVnG31;heGDHobert mal8AQ;aOeterf2CQikECUynF8E;i6rtE;aG4MeBC6iddledGANoBüGDC;inF6UretsG1A;a6e5MN;aQePoO;bb3mer-dFKF;arNnryFL8;denEDRrO;dy,rF;iGDOomGEX;arly7oGCUr6BM;angaESEeCTVrodie-sangGBV;nEYCqu519;a07baut cour6BYe06n02rRs O;boyGLMisOtoo shall FCU; OlandE55;eG1Wspinal tEL9t0K4us;dTtOuvananthap1IR;eenPy O;seconds6YJy9H9; Pth O;a8R2doG8D;colo4NPlCF6; P-O;pe8NXw8IA;battle of panipG79c8IHeDQ5genPno5REplague p6NRr8ICservileFFDwO;ay,orGK7;d0e9H6; lizzyFEQgQkO; CYKpadO;! C4;ivG5Zs fallGLL;l fellowFXKrryCNM;go Omi6;alcânAHXsFK7; 0Cer0Air 09l08mFni esw9o00rQsPta,y O;both die at0JJliGAJmight beZCshall not grow oGJX;aG6JeDsaloENW;aWeUmOopoGJC;al QiEUGoO; fisher scientE8Ibaric9Z1coup7electric Onuclear9Z1;c72OefDQ1g7GT;conductiPeO;xp7T4;on,viGEQ; will be6QN's something about mOm4sa5XK;aLiriGHY;nGCRpeut7X2vaGJ3; UbroF1ScE54doRfanis gekGKZloFU1rOsEZC;etical pE5Py of O;eBXf9MCmOr85O;iGH0ultiple intelligeGJX;rOsi1VS; Oe ro9FFicFPI;herzl,moCXF;jFJTr1UMv2wBPK;eGD0onious moFKE;fi98Vsatanic majesties reqGFA;aOpugal virkapadG5H;n adhigaaram ond7K8thon bunma824;aE7bD0cBUdAWeAGf9Sg8Xh88i7Mj7Fk73l69m5An4Ro4Jp3Tqu3Qr36s1Ut12u0Vv0NwTxSyOzomDJ3;ardbES9ePoung O;and the restC1Bindiana jonesEALpoG8St2OT;ar Ollow wallpC2A;of magical tA4Hwithout a santa c6D6; 1LH-fEARx;a08b,e06h01iXoOrong misF6I;lf among Dman VnderUrldO; P's O;biD32finest assassin gets reincarnated in another world as an aristocrG61;atFE4endsQfactB42is not9G8of the O;mOwG5G;arF6S; withFBS; y7V1ful wizard of A9H;in the house across the street from the girl in the2GOwho fell toE3H;ck4Fg90Yld QndOre,tFKYzarding world8Q4; Os of 8OP;in the wi7EErAT4;b9HPthornberrFCRwild GGU;eel GJYiOoFDA;stQteO; Ost kids u'042;l9N9man's buFQPstrDSU;le707;aOdding G21ekndFD5instei1CDll-tempered cla9AYst AOI;l3V6ther7I2;chowskFlUnderingE35r TsSterboyCFOy O;of PwO;ay DTNe weB;kGGMthe O;househAV3wiGFW;hington44YtT6;b5FXof the3Pwith g9XA;l street jCDZtO; disne6XEoN;aReQiPoO;ice DQKy4SX;car of diA3Xper FYUralA5P;lvet2R0nomC67rG8S;lhallI0mpire PnO;guardG14quisDPV;cE9IdiO;aGAOes in no GJC;ltimate TmbrellaSnPpD2DsO;os,ual 6BP;bearable Pcanny CL1dOforgivGF1;ertCJ4oi8;lightness of bB1Fweight of massiveF3O; a5AWs of cherBPJ;fFP5wF1Q;a0De08h01imeZoVrTuQwO;ilightBUUo O;jFAQpop3;b3doGH6rO;nOtl3; of the sAMNer3V;ans45Ueachery of imFTGiMoOuma7Q;op,uFVE;morrowFCRnight showPrD6werO; of the s98Uing87V;! starring jO;immy faEHRohnny caFXH; mDXIlessFA5sO;! E9Z;iQree PundO;erEDY;musketAATstoog5DZteBE0;ck70nPrO;dGE4ty-fathom 8MQ; man goeENTg Ok0ni8;about pGFLfrom17P;ll-taleRmpQnPrminaOstament of sister newAAAxas chain sawD6F;l,tGF8;derl8Z0oGGM;eGFBtGBV; hCND;le of Oming of the shrF58tami41Px colleG55;genFJDthe bamboo cuEJJ;a0Uc0Se0Mh0Hi0Bli0Am08now7TVo03p01tRuPwO;eFAOord of030;btle art of not giving a fuJn also12XpO;eriorF69r9XX;aUiToRrO;aPeet profiGE2oO;k3ngest sage with the weakest cF3W;ightGHCngDV4;ne Oog3rmlight arCXD;quA8NrGH7;g,ng;nPrOtion nightclub GDB;-spangled baCZ9li8ryC7C;d,ley parGDR;aOe6Longebob squarepantsGFOy who dumpeC91;nish p9UXrk04M;cial Rng of achiFK2pr3BEuO;nd OvenirGDY;and theCP6of O;mF33silGFG;d1NPnEON;ashing puOithsFB2urCEJ;mpENN;m shady 35Sts;lRmPsters of m5IKxO; million dollarGD5th sEGD;psons3HsO;! reASD;entFW1marO;ilEWP;aQiPoOrink nextBRF;o5PTp around the coFOI;eGG6p that died 1X4;dowOnnaraE7Jpe 9BGrd,w129;! 7H9s;aScret QeEZWlfish ge6ries fiB8FttDUCvenOx lives of college7VX; Oth 7CB;basic pRBhusbands of evelyn huF5N;d3DTgaFO3hF5Klife of A9Jof O;kESSnimh; 2XLrcDNP;arlet OhoolG1Worpi6MUreGE8;leEICpimpernI;ga of tanya the D6Gint's magic power is omnipoEKIlRnPrah jane3MFtanic Oxon2B;teCX2ve2IK;dOta clBFF;!lGHJ;isbury poisonGDYvaB1N;a06eXhythmC7ZiToQuO;mble in the juD8PnO;aF8AdoGE5;ad PckOlling stonDE0mance of luGDSne2CoGCSyal tenenbauGF9;ford7Fy horror p3D;not t0HVto el C82;ghteous Qme of the ancient marEIVsPte ofO; spFTI;e and fall of ziggy stardust and the spiders fromB1Zing of the shieldA4V;brDN7gem7YT;al Rd Pign of the supeF3Imains of theETApair 84KscuersO;! down uF9E;sOturt7;ea diving re78JlAGO;ghostb35RhousewivesO;! O;of Oultimate girls 82A;atlFUHbeverly hFZ9chesCD0m6W8new Oorange c371potomEEYsalt l0PG;je69PyCPF;nG4Zpe of the sabineB0Bv5;aPeen isF7PiO;ck brown fox jumps over the lazyFRAntessential quintup275;lity of nationFMGrrym5;a0Be08h07i04la02m's d45QoXrQtlCCCuO;rOssycat7QS;ge,suit of happyGFC;acGB6etTiQoO;claiEQ1diFPFmised n4T5tOu1EH;ocols of the elders of zi2égé;nceOsF3K; 9BYss O;and594swG4M;enESLty reckBWY;gu3interA2kémo18MliRssession of hannahGEGwerO; of Opuff7UM;nGDZtO;heFQV;cCW7tical1T5;ce beyond theOneGBTtENUyboy7LG; pG36;aFNIcPlOnk p66Uper at the gates of 8QKrate bK;grim's progFQWlars5JY;kwick 2A8ture of dorian A3J;antom of the22Ril silver64oenix – s kCBS;anutPmbrokeshire 79SntDR0rsOt girl of sakurasF7F;istence of CHEonal history of david copAAP; butter215sGDG;le blue eDKCndemicY5rOssion of the FYKtrick sta2Q;allItridgF77;a,bsoleteGB5ffUld man and09NmeTnSrvFASsmDK7ther RutOversGEXwlGE4;erPfERHlaO;st0OTw josey2VP; w6VU;guF8Aside of11HtA97w0A7;es who walk away from om8YTi2;gaGAZn;-BCCspFS5;a03eYflWiToQutcrackerO;! and the O;four r8DImousELL;rthPteAZ5vembO;erGAT; ECAm1;c5G4ghtOnth FVA; Omare beforeGFA;gwen stacy77FhGDPof; tO;odK;ighbourGFAon dFDUverRw Oxt karateD0D;batman3KDpoG3ErF3JscDURyorkO; timesOer;! best seller ANO;endingGE7s;ked Pme of the OnFAA;roGDHwiGB6;diG1NgGEE;a03e01iZoVuQyO;sterious Oth of sisy7F2;affair at stFJUisG80;mmy9A0nsEMPppetQrderOsicGAB; of roger acAFIbotO; diaG63; Os;christmas cGE3shGCN;dAKJnPody bluDBRrOst d39CtherlandETVuntain goaGAJ;e the mEX5ríg1tal i9K;keOsters are due on maple GB0umentsGCU;esF7Wy's pG3P;ckey mouseCAJdnight Oghty c5OZllion dollar homeFQVndy8Usfit of demon king569z;clDBDgospIsFDD;g,ntaAN5rchant of ve2IVtamorphEU4yerowitzO; sG5S;c05g03llorca4ZnYp of tiny perfectGBCrTsStrixOuritaF9D;! O;awaBMMonG1PreO;l4KSs3URvO;isCVWolAWO;k of zorG2Pque of the redEAXter and marga25B;bleGDTriage of figaG2OsQvelOy tyler moor7K;eOous misadventures of flap04Ws;tt3; vFCIhall O;mathers 329tuckP4; Qchurian candi698daloFXBy O;adventures of winnie the Osaints of newaGA6;poFUB;fromDXFin the high F38who O;killed don q9MXshot liberty v6WF;ic Onificent sBGW;f2Y5moDGD;hiEGUk; 9MOa0Ae04iWoQuO;cyOm6EX; ASJ–desi comedy 54D;bG3Tckdown se7I4nRrd of the09Kst QtG7Rud housePvO;e 85Din' spoonfEC4;! mGBJ;boF6Id434syFDSvC87;elAUEg O;and winding 8GBballG9NcaCdaG9R;brary of bC4Fes of locke lamoGfe TmSon Rttle PvO;es of DK3ing daylE69;mOprGCY;atch CODer3E0;g6X0ki8sleeps6J8;ehouse golF5Qits to1I4;aquatic with steve zissF55of O;david AWNpAO3;agueSft hand of75BgOnnon7Fsser key o0F4;end of Po O;batmanGB4gFV5mGB5;h6WEkEIMsleepy ho93Dthe blueFRUvox 9WRzO;elGBJorG1Q;! of extraordinary gentl0I9;mb lies down on broaDEInd before GDAst PteOwrence welk ARY; late show with james coFK2ness of the 53R;boy scoE7HdrDOGe7F8leRof QpPsamCU3wiO;sh,tch CL0;ictur6G;the mohFODusG98;gi2tter from your4VW;aYiOominsky GBY;d larCLQllVnPssing5L5tO;e 8WO;gOksF6B; P's Okiller chronF1Y;affF5Jm1s85P;a61Gin ye92Xof O;fightersOquDPJstateE1F;! xv;eGAZing of a sacrO;ed 0PY;pil sharm53Wrate kidDMQshmir3B;aTeRim henso15AoQuO;mp,ngleO;! AWI;e rogan2W7shua G0U;fferACDopardy FS0rry springeOsus rA4MtACD;r ARA;ckbox party CHQm,zz FUS;c07d06m05nWpcress 6E8rSslPtO; croEIYalian63;and Oe2J;of Owith bear gDAY;doctor moD2Igiant insFZ1;isFURonPregularO; at mag4D9s; Oy14P;gEMYsheF7M;betweeD8UcVdepenBLFfUheritance3N5k spoG86tPvisible O;gG6Ym1;eOouchaFOQ;lligenQrO;nOprFYF;atioB38shFOG;ce ofC67t iELG;ernal nFB9inity gauntlG8K;al,rediFOK;aginarium of doctor p3R1itXRportance of being ear90B;aten deities know only23MiGCIol6DK;e OkabFMW;age adventures of buckDA6roG7X;a04e02iZoSuO;dsoDIBmQnOrt D2I;chback of notre-OgZMt for red octob0;daGBW;!anFNN;bbG8AlRme depGCAneymooD8Cok up DP3rus hereEXYuOwl0B;nd of the bask72se O;in fata mor6WVof the O;deG7Orising9W4;idKlPocaustO;! in23C;i3owG9Vywood re3YJ;dden PeropFMSn98Lstory of the decline and fall of the8NAtO;c1SBman6V0;dungeon only i can eF8OwiFU7;iG9OrO;o with a thousand f2WSshe6PC;gFZXlTmpD15nQrdy D9QtPunting of O;bly3P7hillG9X;eful eG8IiB43;dOgov0C; 8PEmaidO;'G8Pen;fOloween88K; of G7R;a0Denius prince's guide to raising a nation out of de07Ohost and molly0Ci0Ala09o02rQuO;ardianOess wF6Flag archipeE5Ynk;!s of the galaxy hOY;aWeatPinnOudFTG;ingG6N; Pest O;demon lord is reborn as a typical no5SMinEJHshoEGE;bQdiPgatsG6BhuFUVindian kit8MZk0OHmouse dOnFMSpottery throw 4KDwave off kan65S;etecFRA;ctFUV;eAX5ritish O;bake8HNsewing4L;duaHham nortoPnd Opes ofDVMss8EX;budapest73EtoFRD;n APJ;-go8CRdRes wrong APIlden QoO;d Oni3;dino6IUfG7Vli9pFU7wiGAN;gCFSpaFU6; of PfathO;erDKN;hD04smallG7K;morous imperial concuCMAss735;ftFPJrl Ov0;befoBin the yellow ju98Mwith the dragon tattFDF; mcgG2G;mQng carries a corpse up a DCWrden of PteO; 7I0way puBTQ;earthly delE33sinD70wFZF;bAe awardO; for game 7HXs;a04e02iYlWoRrOull monG45;ePozen ALCuit of O;eBSWgrisaA;ddie mercury tributeEYPewheelin' bob d60Onch dispE7Esh prince of bel-aG6N;oBBRrQuOx and the hALA;nOr agreFXU;d0tainG65;biddenE6Iever p0MJgotten O;baB0SciG3X;iOorida4F;ght attenEB7nt7S6;f15KgFG4nQrOsher FVEve loveFKJ;e8BBst O;great train rob31XlFZ5p0MDwivesC60;al de8EMg0;ar Oderalist 24DllowshipA7N;iG9Istreet9KE;belE56cEPLirly oddp3MLlTmPraway palad4tOult in ourCESvouV8; AC3e of the furAVW;e,ilO;iaPy O;iER0m1sF2J;r of 98K;con and the winter 0UTl of the house of uEPW;cono7ZXdge of seven5L8ight hun37Pl00mWnSpoch t7JZqualBSric andr30vPxoOye95E;dDrcism of emily EGZ;erlPil O;deG5Lwi4MB;y DG1;dOglish FTVola holmes92Utire history ofF17; of OlessDBI;e2RLhistory and the laO;stG50;ineQojiG77pO;eror's new Oire sPR;clo0QCgrooFYR;m AO2nce in shadG7C;der scrollsPectrical life of louis 04Ylen degenereO;s AO0;! CRX;a0Ae02iZoVrQuO;ellC9AkeOmE4Ongeon of black F00rrEKS; of death and his 39Ns of hazFT8;agon ReO;am of the fisherman29sOw care0U;denOs; fDZH;prG8Fre73I;me at america'Q5oOwnward spirM;bi0J7rO; into AH2s O;diG14of8MC;ary of a you14Dck van dyk28nnerG2Nrty doz5sposseCBYvO;ergenOisio4ME;t EBI;aScReQfe1EBpartG48scenPvilO; jB5D'sG5W;d3LSt;pG79r CGL;amA3Vline ofG5J;d Pth of O;stA05the au14Y;poG83sFKK; vinci EBSily WkoG95rSve clark 207wn of eRy O;afterPof the 91Uthe O;earth stood stiCmusic70T;! 973;verytCO2;jeeling62Ok O;c0IDfoEU7knight Opictures antFHLs8J3;rOtD52;etDB5is3;bD63life of the immortal FTPsOtelegCSMwiB;hG6Bto53C; p8R5a0Jh0Bl08oYrTuOw;ckoo's cRltQrO;eF1Lious incident of the dog in the night-G8ArentF25se of O;la llo4RMoak DWT;!ure of critiqu0G3;alG0W;aReation of adG57iterion 7K0oQucD6JyO;iB0TstO;al COU;oFX2wnedCEU;mFIOnberFZE;ca-col98XlUmmunSnQok of castD85rG66sbPunOwsFQR;s4VMt of monte6FO;y AMN;juringOneG63;! uFSJ;arFWVistO; manifesFPP;lege dropoE23oO;r Our and the shaFW4;of7YZpuFHK;aFZFeveland AMFoO;s0veO;hitch 48Irfield0JR;aUeTiSrOurch of jesus christ of latter-dayBXM;istmas QonicO;!les of O;na7G0ridEHG;cDXPpF3T;cFXMeftE52naFR7;mical DDXstnutG30;insmoEQ0nge-FP9;bWll of VnUptain goes down with the FJPrRsPtO; rDA4cher in the rDC2;agraC50e Ok of amontillaFEBtle of caglio8DAual vacC1B;files of lord el-mello2XQstudy of van92E;dPlyleFP2ol burnet04pOs;enEF7; C92igaN;nonba8AFterbu7A4;cthulDEOt8KP;in i2JOl4MQ;a0Ne0Fi08lZoSrPuOyrFW5;cket AFSreau of magicalG41tterfly DC3;ad3S8eakfa242idge on the river kwFVUoO;kenwood90Cnx,thers Own C2B;jFZLkaramazF5P;bSdy 7UVld Rnfire of the vaAKVoOriEXRss FS5;k OndockBWY;of Ot6NY;bCGWeFXUfive02OhC9A;and the b4DZtyFV8; newharO's burgersG4M;t ALJ;aRiQueO; Os DD8;danuE8Smarb7;ng FJGp,tz;ckOir witch10; OstoneFOF;cr59CkPpO;aDQAho6;eEZDlCO0;g Qllion dollar E9Qrth of PshopO;'s EPM;a B4HvenD;bQfat quiz 7E0lePreG2GsO;hoG6RiJtG2W;ap,boEH9;ang DOXoDAT;aRll Qst Ptty whitOverly hillbA5Mwitchin' 4FV;e AL1;damn9HRexotic marigold6YUfifa men's FLWyears of o9YU;cBYEj9;ch bQtlesOutifu7JA;! FYD' O;christmasDZOrooftopEUMsecond albFR4;oysEZIum;bSh468llad of RnPtO;man who la94Ttle at lake changj4;gl3kO; jDUR;buster sc97Pjohn and 6YPsongbirds and snEXQ;adoFWYylonO; bFXW;-EZZbyG51ccidental biCORd05ge of 04l02m00nTquatope on white DBCrQsOtD6Lutopsy of jane dESS;h3sOteriskEZTylFQU;assination of jesse james by the coward robert EW2ocE9H;isto61QtO; of Os;computer9VCs9KRw9;archTcient magus' bENAdQgry birdsG3JimO;aOeG1A;ls,trFM3;rOy griffith AKE;ewsOomeda stFQR; sCKW;ist cookAPGy;azing OerFGUityville43Y;m3PPraG4YsETMworld of gumF8E;an parsonsUlO;-kn95Nman brothers AGZ;adaFSTinnocG35;amRdamCFMjustmentCVIventures of O;baron munc103ozzie and harriG1Wpinoc1KSroPtO;iBN5om sa9MP;bin G5Kcky and bullwinkle and82Y; p6IF;bo mbeFNZddeus676gom7EiXlUm luang cave rescFTSnRppG1ArDPRtO; P's OcheE3R;my49Iso rEX4;mitchell and webb 3A0time i got reincarnated as a sliG5Avegan2V3which survBYU;aPdiwe BU4kOos; you for being a fB72sgiELA;sis7KOtFX1wat suengchitthaw2;aOes of mil8QVido7UYía;ivG18mDssoO;cDPCphFPU; Ol0V0;baG25c5ZDlaFDOpublic broadcaOscE0X;stiQS;a2Lc2Cd22e1Yhr1Xjasswi prakaFWNkk5l1Om1Jn16o15ppan28Rq14r0Ds04tZuton4DAxPyOófimo lópFXY;a4VOonah paBU1; VasRtO; PileO;! iDW7;edAMDm65Z;! O;boD9Vhold 'EWZiPlonghor3ACrO;ang4I1eBNB;nstrumG0B;aFE3riOwaEG6;c6S2tt0; 6GLanDrOsuya no71YtigoniASR;aPisO;! D9J;grammFW6hOpG4R;e9FDydrocannabinG3Y;co,la TsQtO; O-drivenFCXic7osF3Q;criCCFdrive unlimited solar cD80of english as a foreigEMO; of the d'urbPaCX2eO;lEL7raFFV;erviF6J;autopilG4TcPmodel O;s,x,y;oFHBybertBK9;a0De09f,i 08m03pe6rPtOuo6QB;iBGAulEAK;aZeXiTorSyO; O's chocolateCWG-9RT;bBLGcA4DgPjG25kaFMAmelF50niC9Up0SArOsDRYwC31;iE9NossF2G;illiG14leFMJoodATA; in2B5iFUQ; Qer,toriO;al OesB6D;disputes in the south chinaFIGevolutionB6C;iCOVschiavoBFT;ll oBQUnce O;hoC3Pma9AT;cOpFIZrA;eG2BottaB65;iOs of endearFDY;naOte;l Ptor O;genisEWHsal9GC;high altitude areaCJ3luciAMBvEBA;gaFWWhBLQpoFV5;nce Psa O;of áviG3ApaEQCte8wrG0P;baF8WcrC2ZhiCmckDFKrattEQZstaE9PtO;ao,rent d'arFYT; pA36nce FLYtoFVW;uiG36;chew F9Zdoro obiang nguema mbasoERTtihu1DM; Z-Yacious9JDcentWerifeVgUnesseeSoRsPtOzing norgK;acle eroE68h 8WN;hin nasuA59orO;! pBK0flG1B;chtitl1r;! O;tiCM5wiECY;riFTXu,w9;! airportFT5;! O;gF2Bqq,vEOY;coEQVdRV;commandmFYPlost trib3yearsVT;pOuera moCVZ;eQleOo,uG; Oos;gr174hill FD2inDB4mE62of artemFunEKX;h,rate6F9; avFCWan6O2eRlQma9UGnFZEoPugu O;cAUJlaFBK;meB; me yourFYPtaleEG1urideCUQy savalG2Z;communica3FOgFWHoFBZpRtQvisionO;! O;prDR4shG0Q;e8PIo2ubD1B;atFWEhone number1C5;an,ik-i-taliban pa93J; 5BOnOrasil dangG0VtoEGV; PaO; BY5ge mutant ninja turtles8DG;dAMKpFAAtiCLGwoF7Y; Qdy Oros adhanom ghebreyC13;bOpenderg4FH;e9oy,ridgewERU;aF9MbTcSdaFV1hRkQlPmOnuEPZraiFUKstevens anchorag28LtuF9I;cgiDOMonDQ8;asF0GeFKY;aA1LeBK6nFZH;a25UuCSJ;a8HZh6T6rEUM;r37ZunFLF;hOumsEIW;laFYHnO;icSoO;!cDMGlogO;ical s788yO;! O;coESWreadinessCMJ;al OolFYT;anEGMdeYHuniversity of8B4; Tgan E6Qk,l,mRpot dom5FSrOsing master takagi06E; along the dotteA69s O;for f7CVin rain m623of theO; sG1FmF; Ofight t86HspeEYAvi5SKwoFXZ;l959ninEUCseG20tre3;partyDR5withCUV;héky karF81l Op congestionF7P;c77YteDC1;a39b32c2Xda2We2Ug2Th2Ri2Jj2Hk24l1Vm1Hn12o10p0Xr0Ms0Kt07u06w03x00yOz3PYíF9E; Y-k,e9XAloOsom D40;rOur p8WO; O'7SC;co7fFKMhTjenkins 1R5kiSlauC4Wmoms5rRsOto8WB;chAFNeFSZh2EOwiftO;! O's reputation stadium E6Z;aFECmastersEEYsiBYC;aEX3usEZF;nnEtsFQ1;aOeinF37;ckERMnFVJwE7E;bridgeFRDc3Z7; hET9at9XOiPonomOus baccaG1X;ic 836y; FWBcab2AT;awa onPhFYWny O;cypFCCkita5; moEFJ;! ceENWri6;aVeSiRmadFQCo5G2suPtooOumWHyanaDDL;! yESU;hisa3KOki fuji5W5roO; yamashiG1N; gabriFAQana mas6J4; P–labiancO;a 6V2;doCMRm6MR; PrsO;!t1;consultancyEMKfaESJgFIPmoCEXsO;ky,oNtO;arbEFOeI;h17JmaniaOuku hat4ZI;!n9SL;aUdiTek el mousFIHget SiRja turun5oPraBtaOy1JLz1;n,r25I;!n e5CEtO;! cardBU8;m bEMOq lamptE;cEJDfECJ;gDKAs; PnOxacFLI; killFXMtuG09;neEZKreFY4sO;tEXButEMZ; air portugMas,iO;ocaOr;! bEFO;! ObF8FiFR3;ruspoFRAte cCFX; C84a00gWhaF1DiVjir2F7kUmay bhFM4nRtPya rOzBIK;eB46obETF;alFL7rOō;a,icAUO;erOin; OiH;bu8YWsCXY; m1ie,sB2Jōb2;a raymDJAshk bagcFNU; QeOi0lFVH;nt,rineO;! dFX2;dDBTpi8soo F6YwF7H; Oya be2JB;mongeFEAr795;aYeXiUlyn tomiG0GmRpPsin Ozin ou3K6;e5BKgreEW6;a bay OeB;buccan9S0lD7S;anESTy O;a8A2faye OwynF17;bBYWm0R7; oldham ashc84ZlOm bin hamad6XS; Os;laF8Cna8WOrCPHscDVL; imB38ra m4JS;goB77le,m shudBBInnaFPVrO;a OiFVU;doFRBtaAWL;eSiQkPlOmFFBulah rCMF;iFHZow,ulah bankFVG; taBS7ing hea2DG;a Ob1esin j3WJ;a0YIbalsFWHsBVX; of the nine tailFUSs O;from the1HWof O;arObersB4WluminELTphantFKIsymphE6Pthe a3TAvespB4WzestirA;c9E5iFXV;aXePlamakIWo233t F70uO;mi mina88Qya 6WK; U-two7YPfusaThiRichi n5BDru satFFHshiO; O's EOE;kOobaFZP;anes6M0iF6R;ro tomiOto koO;yaELE; kuCIV;me toDQToEQSthFKT;hiro sakCFWnori niPshi mO;iiF0Qu6ST;shiA0U; 2R3ikO;iFABs; Uga,ka wai3XApSsPwanO;!ese7J0;hPsa fO;armiEVQ;o otome fairy FYPō;ei,ing O;heavenlyDV1rEDV;cFMEtuivaFGD;ar 9RFiO;ni,r raj bhEKMti; heu0alo8HH;joOkw68Iye2; B37nB36;lPOmichi kuri09D;hQitDko 49MoPtical O;r3FPsCGK;! F0Qma fd;i,yO;cardAon; C66byTernac7leOula raFG1; Pau EJ9tO; cED1op r3FJ;moD0Oof Ote8NK;handgun and rifle cartOkeyboard shortcuFU4;riCW3; cFJY's 9B3;psee panCN5rO;ak mehta ka ooltah chashmFODe zameen p9;aGmobileOpa4s8ZQ;! D;a02Ebs 02DcZXd 9OFeUOhQ9iMNjMMkM1lL8mKPnK6oFXpDJqD8rD4sCXt6Du1Nv1Kw0UySzRámi X4ão QéOøren kierk3HUüper lEUB;amusA0Fbastien O;haFP6loDES;pauFPGtomé and prínciFMA;a,czec4;bi1d0Je0Ify,k0Hl0Bm04nWphE1GrTstemO; PanDUOd,s O;developmentISeFAJthDGE;oOpreEI1s927;f On a 16Y;a 473linear8T7;acusDQRiaO;!c F6Cn O;cE5OdemocraticDAF;apsUcSdEBQeRgman rhFPKtO;ax,hO;-pF5BesOwaFMY;iz0;cd4ZQsE71;hronOopaFT9reECG;iE54ousBUW;e,id;bRmetricFDQpO;athPhony ofO; the seFXI;e1Q6y for9P3;ioOolic 5A1;neseOsF; l4JE;lSvO;ester stallo9M9ia O;hoeFNAkriPplaFFCsiO;dnE;stI;ab7o2F8;es–picot 77GkuF4P; raa narasimha1L9d kirDJD; bED9ney O;aFKYgreenFTEharbour CXSnew year'sFGCoRpQsPtO;huEPOo the mF8Y;ixeFV3uper BNWweEPB;enES8olD6Y;lympic park tennis6YGperaFVD;a09e00iSoO;osie kurFPHrdOt ALE;! O;aOof3ME;nd sorceLrt onlineEYB;gF5WnUssQtOzz beaFPD;ched-modOzerl0MN;e power su2TS; O-system7TZ;armOfra7OTg6G2international airCAWmark6SS;edD9By O;kC41m1;d2gEHS;ating9LXdQeOyn forkbEHZ;ney3Qt O;but psEEThome alaD2Hm93potaFEA;enQish O;aOemFHUhouse mEX7k4FRlaF51social dem2D1;irDSRlDSCrmBJV;! O;dOnaEQ8;emoc1S2u5IQ;bAchh bharat DAVdlinCRMeBVLhili F4Vmi vivek1PCnQrPstikaOt;! CYL;oES1thmoreEDW;! 718sFQB; werder br013alCQGeO;nOtlana alliluCKG; boB3I-bertil tauDY3goolFTV; bing9AHb3Wc3Sd3Pe3Mf3Kg3EharFDWi36joy gF0Tk34l2Xm2Pn29p0Yr0GsXtton WvarnabhumiFJZzO;anSi quatFKFuPy O;amis92JmiFN6paCN2;kOme no tojimaFS5;a na3R3i O;jimER8swiE0Nvi9SL; EYPnO;a5YJe O;cC5DpleshEX8soE5MveESR;foFLShEYN;aVhUie TpRsFVDtainabOurBV4;iDD0le O;developmentOenCA7;! goaFTR;ended 6QKiO;cious pBYOrA;deFFFesEZKmcaEQMw2II;a9MIi,mitEHX;!nO; PnOoo-no-mikoFDD;a h2A8e 1SP;atE1EbDLGdUflanAC4goD18hRlQolPsOwoDZR;a44FontF0Uu8UN;iv0s5;ucEUQynFJW;aPuntington gilbertO; dE3Z;rris0PUyBV4;ey,o5MH;a04bhi chandFGRfZgXiWj5WTnaFVArUströmEXOtr,vOya;een4UAivO;al RorO;m1sO; of theOhip ABK; flEJU;fiFQRgaFV4hoC7CmoEIT;eOo6E1;aEEOnder 611y;naFV1yaFOK;eOical3LF;on gener6ZZry;acPsO;haFQYide condominiumCN2;eOtaFEO; BT0-O;mount 9J4tF0K;jFN3nneBKTt;erVpRrO;eme Oiya pathER3;court of OleaderE2V;iF2UruER6tF3G;ly PortO; your local gunfF0M-vectorD9B;and11YchainO;! DSJ; 07bFQHc04g03hZmSnQpF9Ns8R7t4DDvO;iOol0OT;sed 9K6;aturalOoETF;! fF7U;!aO;nQrPssive Ox01M;black 76YgETH;ine spitFPLkFQR;! O;iOrCWY;i,n FPV;eroPumanO; str7TO;! O;fiFPSmFRV;iaC8OraFT5;apacABLentenaFD8haCO3oOrFK4;mE8SnOpa de espa9UF;d8O6ti8NO;bowl ScrFK1dave osbCP9g2OTheavy-lift launchC0Fju970leagueA94mPnintendo en25BsO;e8VTiz9DU;arioOetE8T;! O;gE4SkaFU5oFR5pFNLs3WWwFSK;iEEHlXvi,xO;iF35lVvUxO;!iYvWxO;!iXvO;!iO;!iO;!iO;! halftime showE70;!iEE9;!iRvP;iQvO;!iO;!iF2U;!iF2Tv,x; ZdVflower farmers90Wg ka8iTjoSk1TDlFQJmi,nQsO;etOhine skyway CU7;! D3H;iFI8y O;deFSRkauLXl99SozeCsuljFTW; AXYng9GO;dhi004el83Ml Ot4JY;gavask9vaEWI;aOiMown A3M;nce PrOy in the park withABO; pi3B0baN;fCL1kFQP;bPdF40gym C8WmicrosF8DtOyat-s5;eBKLzu;eOoCY5;ar,ltED3; of norm5Y2aUerCOSiTmOo;aFOPer Oit F31;glF79oQpDL5sPwaO;lk0rs;olsFNS;f C7KlE60;re ueBNLtro djojohadikusuE4U;c,tG;aweFJLeiman the magnifiFCKfurTlStanO; Qate of O;rFDMzanO;zib9;batheLkös5;a,i,y sull51B;! d237icFQ5;arF07hC19i waterhFR3jAX6umarO;!a kurFAC; dD4BcidOkCUJ;al TeO;! OboEL8;by Qin5YHmC37of OpiCs9YC;amandaOjadi45Wkurt7OK; toDGC;han5VHjumping from heFPG;id1KItend18P;aOeASKoroA2J;b1Z3rO; Oca6;bPray O;l4NZroDWK;eFOMoCX9;fOiFITjan5TZ;oBKTragETI; Pt,z cO;anMrBOO;ann niCZNl9QBpBBK;anDLZden iPetenFL6ha murFLRokuO;! solving5QJ;m7BZnfant deathFBM;cPharit bhakFFYker punch D17rO;a755oFQF;e3X0uO;bDlentBA8;-saharanE0Aa01com00hasZlime8EJmaVnUprime mortg5P7rahmanyan chandrasekh9sPtOurb2VVwoof0;iFBOropiDYU;etRidERUtO;aPitutionO; ciBIR;ck,nceFFE;! sumCBN;auDUFetDYI;cBVGrineO;! Ps inO; the united states7HA;communicationsAFSsAWU; 5IJh CSD;andanteC1UpactAA0;ruOtomic pEGD;! O;ejAX1foreFHCimpreESUle6ACoD19t84Jw6TZ; 65a46e1Ri1Kjepan1G0o11r00uPx F1EyOéphane peterhaFIL;giomeduF8Zx;art WcFDLdRn098rOtt63CxnFNQyvesantA93;gPmO;abtei3MAgeschützCKA;e2illDF8;entRioO; Oc8BB;biFNCchiE8RdOghibFI0mFNGtAMU;e5rD2B; 6YK's t-AU5;attEHZb2H8cOdaC54maDWRsut4Z1t99R;raEN9;a09e00iUoRucturPyOzyENW;chDKTk0;aEAKeO; DA8d9GE;ke,mPng O;and weak tyB7Pgirl bong-1J9i7GT; thurC6Zae;ctly SkQng PpO;chFCItF84;iBW0thD99;eOing vi6T0; the5WDbAKF;ballF60come danD5Q;amUetQisand CVKptococcOss–strainBIO;al phary31GusO;! pyog8LJ; OsAZ2;dance girlsEWHfighterOwomanEWH;! O;iEZRv; of5PXing OlaDVB;mCE4teBHW;bismDdivaEZTiYngeUsAWQtQuss–howe genera9BTva,wOy 2G3; m1berryO;! field5II;egOford-upon-av2ton oakB9M;ic Oy 0OQ;bombOdefenseCL2;er,ing2SI; Qr O;in a strangOthFN2;e FJA;case of dr jekyll and mr 7O3fBUO;ght QtO; of Os timC5M;gibr75AmageBWM;edF89outta comET3;at,c01iEYCke00ll5mach AASnTpwat,rOut,weCFFya;age E8TmRyO; of ObBUItFIK;sea9PLyO;anxi C6KouCZA; 1FAing of the bastEKYy danAWRzy;eOy brook DIT; PhC4Lman douglas h1M2wall O;jERXr26B;aF7Zcold steveQoDKBsoF66templO;e piO;loFLI; auADL;-on-tEDTs' CP4;hasticQkO; Oard chDKWholm6IJx;aitken wa9JIexD5JfooERImarketEVNph69H;! O;gradient d7W3pF65;ckyTeg l4PHffSll RmuB7UngQpe miocFPZrlingO; O's approxiF3H;eE3SmoFOF; FHGrK;gaFPCsE43; littleOneFOC; finFI2;a1We1Sf1Pg1Oll1Hm 8YYn1Gp0Sr0Ntson5Z7vPwart Oyr aCMG;copeFIDlFH3;eRiO;a,e Pn O;joD42sEY3;nCM8ray0CXwondEID; W-o,nO; Os–johnsF8O;aTbDEUcSdonzDP3gRkQlBM3moffFARoECKpi7EBsPtEUBuF9MvOwiES9yeFOH;an zACI;e4LLoderAWSpie3AHtDFX;nFM0ruAZG;erCJ8uDW1;auEEAroCX9;daFN6veL;a06b02c00ditEXDeZgYhXiC9QjoDTPkWlVmQnaFGHoedekeFKVpBLXreEIEsPuDXWvFDJwOyDW9zaD3R;inEVMoz88TyF78;arkiDVFpurEUD;aQcPillO;er A05;naFL0qEKT;dd5rO;iENXtAVO;i34MukaFAH;azFGGeFHSiEMElov3;a9ONufFG4;leFL3u0V8;ar7iESF;aC16h5ooO;g1k;aQiPlF9AroALMuO;rNsceFGG;ko,ng;cksEHBlEB1nn2;lOoF6X;biFE1l5;eoRling OnF94oFLS;ha442sO;hJPuO;bmBRZ;phonic s9Z4tyFCF;an ban2QLhPpeO;!rBLG;anie 06enO; OieBS2;a07Wb02cZdYfLgXhVjay g8FOkingBTGla8mUpTrSsRtoQwO;aOolfrFKZ;lDVTrd;bolEMPmpDWK;ilFNZondB7HtF6L;ea,oFOB;ad42GoFO3;c6O7e2ALoy0;aOeDUWill1CIumph5ZS;rp0wF91;rCGMy3GX;ilCYXorF5W;ampbellB8UhFLLoOurL;lOvE;beFNVliN;aOrE2JunFNX;lF6QrDZG;beaPlaFJQmOs5AR;cm8MV;chFKHtr9Q3;! ekF68dhM;aOer's sea8UG; RnPr O;cBNFeB5W; OtF;skEJ7;mOsB2A;axEE6cc6ES;anFGToF8J;anOfi grEP0on9IPán karl stefánEJT; Oie 7IWos tsits6AX–boltzmannE80;mol16RzBS7;lOn raskF07; Oe dosDNTy d1;ba7Q7mO;agnoliFN4;kRlth QmO; Oboat wiBWAos,puEMP;awETNdeJeE1Cloc30Lpowered gir3JZt79C;a7S3gaFMX;! tarO;taB;b1Lc1Fd1Eff1Cg1BhlheFIHi19l18mAZ0n0Qp0Pr07si,tPyO; c701c; q8V1eXh lets flaFIMiSuO;e of Qs q8V0tO;e of limitFG4ory O;raFAZ;libDR4uD9Czeus at olympA;cQn,on Pstical O;hypothesisC49iE6OmeAE3significE17;elAPGtoE30wCXS; O-x;r8OSs8QV; Q-space0QSl3ZLn DB1s O;and OofEAL;federal territories of m8MCterritories27Sunion territorie802;aRba0BYcaE0KduFERfarm QincomePof OreE69;maDNJp5M0; tEYB;aAC0sECQ;nthem773th3BY; V-612bUcTdSfiFDXgateQk5WTliEM0ro,sOtBA6z;' top recipe at fun-7W7hip O;enEWAtr0TI;! O;atlB28uF6R;ew DL4ust crusaDYL;h,raDQT;ouFIAucFC5;al8HXc9BMiEU7oVtrekTwarsO;! O;hQprPreOsPtCIL;beFK0siAQZ;equel8WD;oliday4C;! O;b4MTcontinu3g51Cinto6DP;ce1f O;b96dB9SliFLN;hylococcus aureDleAOF; 03a kD6CdTford SisQley O;bEKScOd479h8Z7kubriCGCtEL0wiDVD;ai6up;lav Oław lEDU;ianeEHGpetrEK9;marshmallow8SKprison8SKsupe5OEunE3I; V-Uard Qing O;on the shoulders ofOwaFAV; gi2YH;chQd00QeBXQfor the uniform scheduling of medicines and poi9L7mE5WoPraid leAD7sO;coBtr7R7;il,perating proceduB;arterFGRiDNY;up1R3your-groundE68;by me doraEK2newsO;! raids and arr8ML;kroenEN0lOw5BB;aurIee;ag luftCEAiFAH;nOrwayED0;d,less sB5M;ed,fE1Y; sergeaF4XordshireO;! E3I;e de reiFJEium arcaEBI;ey RkQy O;keOmaDQQ;aF9Hi4KD; oBGIdrFFX;aD1HdOso076;aFCKoFU;-in-the-back 7LJle8VH;albaNdaviF9Tjames's C1Knazair913paO;ncra3LVuUN; Qc Pe composiOh file5V9l671;teFKA;combined graduate levelAD9tua9HE;andrea d83UcaliforEFMeQla bourgCDnormandFIHrichar3I1uPwinfO;ieldB9U;mbrAnF7R;dmundBB6mpire blFIS;ebrenicaC8Hgb,iO; PdeD4KnOracE9F;ag9ivasa ramanuj1;aurob98ElankaDSF;lXuO;aSeaky fromFKHiO;dQrO;e,relO;! BV5;! F4Mward tentaDAI;dQmaFKTreO; OsAEQ;enF0LroFKQwaF9L;!ron supreFK9;! i7ASiH;a1Ee0Oh0Li02l01oSqr,rQss,yO; Oro;kiF93× EBO;atlyEI7eadsBJMing O;and autumn6AZb9COfJ1;ck,il tEWBnUrPtO;i1AIted hyeF5I;tOus; Qing 28TsO; Owe9;betFK9c9equipEU1gaFJXinAMA;club corinthians paulEKSof a1PXutilityBQB;geOtaneous human combusFFK;!bob squarep2WS;e5it in6QP;ce04derYes in disg8TZke XnTrPtzO;!er27U;itPoO; agnE6InolacECE; ObEKZe7JLf6DSuaD0W;aEWMunt26M;aPn7SGoOtC2E;saF4XziFA8; bifiFHQch,l O;coFHDstenDZ4;chunsoDO7jonCGOlFBDmiC4UspiBEN;!-O;gw5hFGGmanOvF42wC6G;! O;in PnoFFPsOu4K6;trike7SY;fiFEZoth0BVteBATv8KT;! OjFFQ;and9FBgBOA;erOi7ZVynx1QZ;e,ical O;cAZUeETHharmoDQ6;a09cYeTnRrPtsO;es,nCU8;mOo ded3;! CDR;cer Oser confidF3D;faEALliFFVrepeatingDKHtD39;ch RdO; Of1rFIF;of Or1NOtaF78;lFFZs9TW;aEUCr1IQs0ZOtransmiss7KK;iStOulati92F;acled E2SrO;alPe,oOum;grFFSs0FE;! d866;al Pfic O;heat c6AEimp8CK;aPboatCHMfoCVEopOr73I;erations execuEYVs;ctivitieOirCHK;s A4T;kOrman's rank 161; nFGGeOing in ton7XZ;aE4Mr of the united states houseO; of represent9LW;ceZghettiYhn1ZGinDCEnQrO;kling C5OseEYOtaO;!cDnAKO;dau UishOning treeEZH; O–2R1;armaFGHcQemF3QfOinq5JLlaEQXnCGAr7TH;lu,ootballO; leaguBD1;ivDQ7oO;loBJ2nquest of the aztec F3L;ba9NPprEDS;! 06Q; QbDXBd repe8ERtiFI4xO;! O;marsB5IraEWVst5EO;battleship y9LUcoUdTeSghost coast toE4ZinvaDUHjFF1launch DJLneed7oRraFHDsO;huttleOw1NY;! cO;hallenger9SOolumb9SN;dA0IpeG;levF1QxploFDK;anF0YebrF;loCCMwCG2; 3Vap14Qb3Tc34d2Xf2Kh2Iil,j2GkalBTQl20m1Un14o12p0Rr0Ps0OtrovimD8NuWvPyO; BT9be1lentBKTou;ereignSietO; P–O;afghCX9j7KC;aOin53RnaDV7uESK;irCUC; Oty;citizenD6Umilitary order of malFI2sD0B;l0Dnd0Cp0Br09s BCJthO; TamEKMePwestO; airE1Qe2LA;astQrnO; Omost point buE56;baptis7TJc6PReuEQ8fDBGmethodis3YAoDC0rhodDQWunF4I; F2IernE1F;aYby sou1PXcWd1PVea1PUgeorgia and the south sandwichEFGhampstead9Z5iEPIkoreaUoss5J3pQsPtyrFGRv8GYwest OyMA;afDQ7eEXG;e8I6ud1;arOo7;k,q vaccinationO; speO;ciM;! EB1n O;d1PKw2;aroEBBhina O;morning32DsFB7;fricaPmeDPXsiaOuATH;!n association for regional1FW;! nCNVn O;aE89bord7K0national deCX4rE5E;av ganguF1QceOdETR; DK1-availabl79X;! joumE8I; of0P2cEWKgaENNs and sileFFZt7HU; OjaART;foFGZmE22;!ie5L;aOe throF2HghF1Mry to botherE8CtingCBQ; ama6AKiro8TR;hOraEOAwithCQ8;iPoO;cl3moB;a Te O;cooEISdRellis-bextFDAhuEDOmQnél9OPokoneENHruE2HschoCtOwiA7K;hOuENK;atEHDomD4L;a353csCB;aD8Wuk0;buF83di BDXlOmELFof hanBZ4petrD8HtaylorCSS;iDLLor5;n-yi pDR1rO;arai pott6G0yavansF41; 0Ba0Adra locEI1equa martin3I1g03iZnXoUs of aF4UyO;! P's spider-manF0Va OlEQ8;cEUUdEBD;comput7G5entertainmenA5Ainteractiv0B9mQpicturesO;! O;aEU8haJmotion pictureEXWrel0GIteB7O;iDK9usicBWM;rPs,ya mO;izuENP;anD0H;et,i natteDJWy O;boENMchiEXHfr2NKliEDQ;a Qc O;a8VUboEVCco9Y4fOmAY5tC9x,yERU;oCSOrontEUW;gD2Dsotom857; Phai F1As Owr7NK;from the big cBG0in the key9T8;dCRLhye-kEM0jRkangQof OstD6K;sonFCQthe O;sERNthEQ1;!-EAX;i-hELWoong-EYC;kshi sinE4Jli be8MTmBQ6r;heung4H9na-eFF4of OyeENE;a crF43the362;aliSeO; Qbody that i used toPrsFC0tO;hing5Bimes i might be intro3LW; knFDG;gBKIlike it hFFYtime inBOC; cDNFa,laFBOs; invi5WWaWdierCHReVfèEXPiRoOsFAB; leveF83monO; O's4GQ;iEDHnorthEX4;dPpsiF5ZtaO;iBryAJQ; s3QG-state OiF90wE0D;bF94dEIY;il moon frCJUnoFCR;nTrO; OciF8WpuEEW;ceCeQfA40hijri772irradiDTQopposEG3pPsOwiFBC;tiCyDGP;anIow0;c3BDnBTI;aDDCge knDW2;ournerOu; tCPR;aOo; 1LEil DAHm 68W;iXtOía vergaG; VbankEWKcore3Q7max EZUwareO; P-defined O;networF03rE11;aRbCBZdePeERFfDQreleaseOtBWGversEL5; life2PK;sign7R1velopmentO;! pEVD;rD6Rs0SS;dEECmCTCpETQroJskEXC;! sE50a O;boutFE7cOhubCH1pernFEOthe1FP;aET7op7AC;der children disB2ZiumPomO; and gomorrF4Py;! P-O;i3HMvapor7EI;bicaB4PcB4OhyO;dB4MpochloO;riH;hi,iPks,otGratO;es,ic FD5;alReOoENE;dade esportiva palmeirFECtO;alC6Dy O;for worldwide interbank financial tele5EGofA7O; SiO;sOte;m,t O;federal republicBIApar4ESreOsCWT;public AW5v5F0;a6YQb3WIcYdWissF2GjusticeVlA5JmediaTnetworkRsO;ciFBMecurity PimulOtra0C0;ation EY8;dea058nuF88;! A2GiO;ngCCU;! O;maEPGuse by7GN;! wDWD;arwiF30emocraO;cy,tic p1ZM;lPonOredi9S2;structF2Wt73Bv3YH;aFCPub;el op880hita dhuliAH6iborO; exter7R4;awkBDDi married the anti-f1ji-sCAE;a04e00iXoPuO;ff F95s;oSwO; OballCWTf6IIpie2T3ruBUPy6IS;cB33l38EpaEJCwhiteO;! O;and the huntEHBwith the red BDJ;kPpO; doggE6My;er,i;cDVSpO;erOping toFCN;! rDEP;akPllO;'sDY0en70K;erOy peH;elFCRs;ke Op5C1;caFBKoEQ2; 04aVeUiRoOs;key Poth cri6K5sh,therO;s CJD;and the banditEEHroDHA;lOthsonianBBO;eOing7AFod2;gaHy;dley buE1XgF56lls like teen sp79D;llRrtOsh mEOOug; Obe9p7GUwD9U;cOfort96E;aFAKiF6Go72BritAI8; Opox0OZtaB5DvE7T;and medium-sized9LOfPint5WNmodularBGMsO;oldERL;ac3orO;m-factor pluggable transA1PwaFAF;entertainmentOtoF9Q;! artBCJ;a08e01iYoQumPy O;and the family66ScoDP9sE56;!dog mil4OD;bodan UtTuRvPwO;diF1PthF13;akAenO;e EKXia;ching towards bOgh;ethlC2J; mCQYhA0E;miloš564praljE8K;cePmO; picAKDe moFAV; o9PJd b578;dgehammTepPnder manO;! stabBKB; QerOing 9Y6less in seaA2N; Os;hF8GshEO9;apnF63depri8OKpDQH;erDP3;de,p BG7shUughterhouse-13GvPyO; the sEXBer;ePic Ooj žižE90s;lEMApa6W8; states and freeEYYryO;! in O;a02WtEKI;er F7C;a06e04iZopESHrillYs,uVyO; Sdance7MLfaClPpe,scOteF8OwestADG;aBSVrATG;aOer gis5LI;b,nDO1r O;a9ZIgrE;caE0PfCGZgOneF2JspC7Kuk;o,roET9;llPnkO;! wDWJ;! and bF9E;!ex; Rff7llshaBnO; O-37WheF79walker1SC;of hQNwhiO;teF1R;jumAS3mask the slump7PA;cCHOet ulCXFletal8YZptOtchESZwFA8;a,iEJK;!ndO;ar4KAerbBRN;ón,ögrenEUR; 38a36be33c2Yd2Re2Ig2Ak28l1Tm12n0Co07phonophorEX7r05sYtXvakarthikey1wa o5SQxOânBY8; S-dRtO;een canBRWhOon3; O-7GD;foEXZge86N;ayE4S;degrees of PflagsOminutes to2NUof cE1Vs9GI;! nCBY;kevinOsepaF6J; b76O;ar,cEQ6h,ti08C;sTtOy6AY;erQine O;chapelOsKQ;! ceiF3D; Ohood75X;aEM3ciF4Drosetta th65s7RPwB47;el kyrkje4NTy spacE7R; gawain and the greenAATaEZ2han siF1EiO;!us3XK;bhQn soEI4uxO;!sie O;and the bans4VDsioDZ6;an fOán mcsweE2S;ahEinn75D;a0Cbad the sailF73c0Adh,e 09gZhalYisterC0kUn fé4o-RtPusDGYéad O;cuDGToARD; OerklaFAF;eustatiDmaart5;indian Psoviet Otibet71CvAZ2;borderD5ZsplF6P;border 3UQw9;ho7ing of O;mv sewF9Kthe O;ms e23Rrms Ot11H;lUGt11G;a EIOes77O; EYUaporeUhF72in'TlePular O;thEvalueA9O; Q-Oton7MB;c22Fnucleotide poly6RpO;age0ERl22Tr8GY;a4NFplEPHsign-2; in the EUX;! O;aOdoCPYnaE3Q;irDU1rmAXA;and coDTHwaEZ3; EUQlair O;broadcaBO4l994; weiBTGiD5Ploa6BUtrD9B; 900ciF3Ed,eon saxe-coburg-5OXmER4o04pXuQónO; bolO;ív9; CALlO;aOtaneous localization and1FB;crRtO;ed anneaF26ionO;! Os ER2;h867v22D;a and si107um;!lPson's O;p7GCru7;eOified chinese3CZy6NF; Ox;liPmOnetwork managementEQEpl1;ail5JPinEY7;near21Uvi8; häyhä,nO; Pe O;asEUUbCZHde beauCB8i7E1misBVweEM5;bB8ZcSfRhEMkDZPle b2monQoPpeDWNrF8OsinE69wO;hitER4ies743ooEY1;akF27f cyETI;jaJ;arnaF48ras2MJ;a7YYoO;lBIHweC;ambarasF2Fden01eYicUk TuES2vO;ana armenulEDIerOio berlus6AH; OfiF0IstoneD5O;linPpiDDNsO;ab7t9urf0;ings p0EQk;roF4OsDO0;a gIonO;! Oe;cOd1J8g9Q8vaD7O;arbiDWC;nt OsA;fiF48gC6PhOnF5NspEL9w0P5;iCouF6O;afELJ;hOkEMIorsky7DN; ETViEZ4s; TiSmRnPourney EO1rid kaEDTurO; rE7Ad; Oal-to-noise8L4;fuETDlaEGZof theBHC;a,oid ETBund 360;l,riEG8;mOsCY3;cx,px;gSmeNnQrra PveO; of erat7TDrt;enEI8leoneD24n6NC;a,na O;guil6QRmiEZ9;e of Pfried O;li6sas10G;bastOjadotvE35lenC8TsarajeDAVtobrCF2york9IE;og6; Sdhant chaturveEVZeDZAharthEEney O;crBSRgoALluQpoPsO;he8PC;iDR7weC;ft,mF4A;cCU7jE6YmeOsr4YUvic9TTwadA34;i0lt2;! semper tyra7X1hQilOkle cellEP2;ian Oy;dAP6mE8I;erheitsdienF4JuanO;! AL9;l kek29KriaO;!n O;cETBh4O3tD7N;mese On h7RT;cET9fighting DG1;baseDSHderivedDSH;a25e1Ci0MmiF7Yo06rWtisIuSweta tiwaF3MyPōO;chū,jo4CVnen4CV;am PlO;a stylF0CoJ;benBFMsinghaCWE; 3A3bOeisDW6ma-goCS1tters43O;-nigguCS0h mangal O;sOzyada sO;aav400;addhaBHPeRiQoPuti O;ha465ramachaAZI;psB3Mud of tur4;mp,neF59ya sE6L;kQwPya ghoO;shM;!sDG5;! O;foreverOt336; aBJ0;ck02e01g00hZko asaD63lKnda rh6H6otVpTrRtPuting fire in a crowded2WFvelA76wO;gBBXmEIVruBO5; g7D2ac2gunO;! sC9Z;'sC1TeDSYtO; sF62est pathBQShaF30ness of brD3F;ee,i0X9pO;ers drug BGEing 5Y7; 'em EOHing O;g5Q4of O;ashli ba4HKdaniel shEMAjacob b6BPmO;arkeis mcgloc4F3ichaelBJJ;ei ohCF5reh aghdashlE9F;akuk1i,un; BD7biCgaC3Q; 63Ming3W0;a0Bb0AddES8geru miya51Gh tDO4i7LDko9GPlpa7GTm08nZon2SSp XrSsh8EVvOzuka ishigaEYK; QaO;! Oani C7Bji;ayyadBN9baF1N;n8AGseERV;aRley Oō i2WV;baF3Mchis6EXh76TjPmaOteBM9;clDUVns2;acE8Hon3; pCBXz;of theOp2FA; ETHseD; TeSiRji QkaDJ0sOto,zo aD85;enOuke5S6;guEY6;k50Smi5ZW;chirō1WIgaEY4ng7MS; on you crazy9APdoF37e;g2J5hye-sF5GmOse3HOtae4SW;egami tensei OinA8N;iv,v;eC6Yla,onO; p7XPeF6D;a iBUTboleENZuEDS; O–sunni9G3;iEUOlabe6XM; 0E's 0D-0Ba09e08f07i05lZmXnWpherd's pF3JrOtEYX; shah suF1Wa daD8AeUiTlock holmesSmanPp64Bry8WQshaEVYyl O;crF3NlEXLsandEOI; P's march toO; theEK4;firefEQFhemD6C;! chapterEBV;danDZLlyn feEO0;e nEH9metyev1GX; yF4Zya8zh5;!aOp B2G;le,rAQN; s406by mus7U5don SlO; sQac,ey Py O;kisA8Imi8Z5;d9W1fab7FQhDLGlo8w8WZ;cD17hoJ;adeE8JcoDI3;kh Ola h5TW;haA43mujibur raENK;ali chow62QfDH2;na eaE2Wr heartBFI; w2SXmDr O;mAZPstEG5;huAXSraO;! and the princesses ofEK5;a6F7out of myEGUtheF0J;professed herself pupil of the wOwas prCVM;iseF0H;a1IbbEQPd16ggy roEXRh13i11k0Wl0Vm0Rn0Dolin 0Cp08quille07rYshi XunTwQyO; One toE0G;haCNYmi8CR;arEX8n O;aEY3dCUTgDM9leDIEmOrhC6Uw95P;eB2FiE80; Oa roDG8;ca7KEdoPeBRBg9A2o8XEthe sheAENwO;alEO5hiH;olE;kEUCtharoF1E;eVia,kSlRmQna buD73on PpOvari waEYH; cDNBe8HDsD63;caEXSgALFho9YRl8EEos4X9sDXBtaHvan eCNN; el-shei7E3ila03G;een spiAAAto co7DT;! taO;le,nkO;! iECM;it,pE4VwaB; o'0V3;ePiro–wilO;k DMH; of Osh16X;tEOUyDVX;monasEY6s2VY;do8e ZgUia tTnPtO;ae,el vansant5hanu bhag5YX;a moa5TCen d8PPon Oyn sossam2;e3B3lePshO;arESF;e,to;wa4; dCFT-chiQhaiOri-F3P;! O;cooperationB4Pm8S7no2tEJ3;! and the legend of the tenO; rF0U;bCDXdaDXFgiD93mOvC86wA5X;acgIOcm839;anQbhaF3IeikAP1iPmiBECsO;heG;s5ta7E4; EP2iEUF;lF47om brune-fCXR;a,ePiOshouE8Runtala 1RL;b al2FXra cDS9;rs,speareO; ARC's O;plaDWCsonA9W; gilgeous-aAGPlene Ot1viEU8;wooEXL; PaF1Pid kOnamDK4;aZRh1;jB5FrukhEWY;es of VowO; OhunDBArF2V;and C6Tin the3JFof PtO;he hedgehEE8;a douQthe O;coloBLKtOv8VE;hEDJoOA;bt;bQgrPpOrEYKwDC8ye7T7;iE2XuECY;ay,e5;lERKroF0B;di mein zarooOn7RE;r aaEOK;a3Vb3Qc2Zdi2Ye2WfECSg2Ti2OjongE7TkhmEZHl2Bm21n1Vo1Rp1Lqu1Gr0Ns0Lt0Gung0Fv01wage00xOycheE57; Vagenary2DUiETOtaEMTualO; Pity Oly transmitted5FS;in aU4of3I3;aRdiQfB73ha7TOi2TLo8PQpenetEYMrePsO;laECAti0TP;prCR7voALG;moD4N;rousMssBUEt7CI;and Qc8F0eAEWiCU4mF07o9WYpPreassignment10WsyE2TtO;oy,r5F9;istoF0SoA2H;gender dis5KUth30Z; tr586;a00ePillO;a E5Xe;nOrus snaEQW; Q-segment5UNthO; 1DP-day advenO;tistCU9;archaA92bSdRlaws of noESPnQof CWCpPsOvAMJwonders of the anciF14y7Y2;amBJBum5QS;illars of wisdEHTo1HY;a9N0etD9A;eadly 8Q1irty wERBwarAZ5;ridOucks CBM;es for seveC8Pges of kön3LV;n nişany1stACJ;-hui cDXGri; CKQh OiE3I;a8J8cEGSd22KgQmProO;g8A6lBBQ;a2YTeC9S;abIre5;ameOsion initiaEJ7;! EYG;aph0Cb08en07fdEHFgYiSj tan8Z9mon on theD52otonin5V1piEOCtraEPCvO;al,er QiceOomAZF;-OnEZX;leve09Woriented CU1;messag1I7name iB1J;alQeOf,ne; Os and parallel circuiEXQ;a,b; OiC4S;aF2AcomEU5experiments DZ8kiESYpO;eripher8H5oF21;eRiO; 0NHo Oño deEYK;agüeEQ2busqueEXJl8I4matt1VJpOramETJ;ablETIérEUM; Qi Py O;br4shoygu;eiseE26korolETTprokofiETTrachmaniD7Us0EM;gOibaE6Lmo9I9;aA7UnabL;a BN9ity prEH2;iaOo-croa8FVs;! On EA1;andOnaDVB; monten1XK;! ofOim of sDDL; tO;heO; eEXH;eQoiaO; Odendron giganteEM3;c9D1sempervi0GF;l,nceO;! d9SW;aration of Secat jagu9hRpQsFtOul6RM;iOuagiEKV;c BE7mius sevACC; 2M1u9B8;ardCP3oG;conc8L1poDOT; QhyF0Eng uiAB9ulO;! O;b3N6nationaAXA;bERRhyE8Kin-gC7Wyea-E1U; çal kapımı,dReQgoku5RQran kaguGsPtiO;enF05me35TneleEZB;e and sen9CDitivity and specifiD8Dor;caAETgalCUP; in the cl9R0ai,er policy fO;rameD7K;aVen,iOoDUV;-TcoPoCXEtic O;lEB2peE74;l2nductorO;! O;device faOiCRU;briE0D;arid5CQpresidentiaANQ;glu1DCnticO; wCH6s;aZeUf-QiPjuBE4kEY5lOma bBOV;afDC7ing sunsEWS;mDQ7naAPH;aQdPeOhaENBimmoDH3;fficaD7YsteDSG;eterminatioBI6riving9IS;ct8WLwareEZ8;ctiQnOuciELK;aOiEL1; g4WC;o51Cve serO;otonin reuptak1WRvicAUV; AZUngEWR;kQnOsmic6S2zuB;eOfeEYP;!n45E;an68HlDoO;! mat41F;aOundCTSwK;! O;gEP8saB1X; you47MkOth0; lBHAing a friend for the end7VF;mentary EJ6ti2;ess8VYondWretRtio64EuO;laCY4rO;e6FJitO;ies and exchange board CQUy haCER; ParyOs of sulphur sDSM;-general5RLbiEXF;headquarD7FinPof 4N6sO;oBI0u4F6;telligen53TvaELJ; P-w6W7ary O;eABJs06N;ame02bZcXfrench WgViUlRo723pPsOteBFCvatican60Ew71W;chleswigDT8i720panP;olOunicDT7;ishC2C;aPiO;by3FOfe;ngE7Ww71Z;m720n6W4talo-ethiopiCES;e7UVreat awakeEPO;emEKLintervention inA0A;h723oOru720;ldDSYmi8n721;aOo724;lkCEMttle of O;e725fallujEP8;n74Gric3FE;astiOeEHS;an Pán O;marroquAHYpiYAyC4J;baENDgiovinEL6ku84Smanisc7X9st1veO;ttI; 0Jb0IfoEZ0h84Yl0Emus he9KCnZrVson UtPwO;isD9Dolf-E2C; ibiE08tleO;! O–tacom5SN;krPsO;eahCILupersoD5O;ak5;hu8J2of st805;chOs; engineOl6V5;! O;maEA5o0Q8; On williamANN;a00bZcXdWfDEBgVhTkSlRmcQpOrEUEstri44KyD5W;aOennERZ;rk0trick fla9F1ul,yt2;d80UvK;e9PIoJ;an1iDW0;aOepburn f2AC;nCKYrrFy3;elaIuEGO;uf0OPycEMS;hipEG8oO;mD31nneryERP;e1iggersA89;b8FSst4; Os and crofETX;oPteamO; sEEC;f soK8;isCUU;ane8N5c0E6lRoPpCDFshOurE1P;anERN;f Ott0;azDWHgalilEPQtDRE;evel1UBtd;a1Penes from a97Bh19i0ZleroderEQ5o04p 03rUuQyO;lEXFthO;e,iaEK3;ba52GdPlpEKLm's OrDB9ttEQE;wiEPC; mE3Geria O;alphaDMMf7JPtoro07Z;aUeenSiQoO;ogeOtEIG; mc8ZQd;bd,ptO; kiddEV9in7GC; OplKwr755;actors guilDN1geEVRprAB5;bb7mO;ble forD5UjETT;f4FP– containment brA7R;l0Ho0Ep0Dr0BtOuEVUvilleBV1;ch08iaAKGland06s E5WtO; SgDWEiOy hoCLC;e Qsh O;cl1foEVXga3IShighlDVDi93UnationalEQWpO;eE3Premi9F4;baATIpi7SM;adZbXcaWdUeaDPJfTgRhoD1FjoBRLmQpPrA18sOweiEQA;peeDSYteCZ4;eEBPilgrEB3;ctominKoBPX;leEFGoOr679;ttliCDR;isDXTolEreBB9;erricDZ5iOo494;siJ;an,wBY5;aOe48AoEQ0;io,kuEWH;aEV4kiN;! O;naDQNyaEUL; O-irish5HH;gaEWPwh1WH;chedCG0pionO;!s EOQ;es2A6olaDDIus;by-dooPtO;! mcnaiLer5ZT;! and guess who?;d's brid7iDC3;-hBTAaCZ9enPkit-l1ZJmBZRpio africanDssor sO;ev5isD4B;ceTtO;ific PologyO;! and celeb6QD;mPnoDCSrO;aE4OeAEU;aCU9eEV5;! fOdireE7Ps CDA;aDIBiction2GK;a02e01iZlYmidt sting painEVPnXoSrödingerRuPwOönbrun3PO;a,erer gustE0C;ko,mann resonaEV9tO;zsta5WC; CMP's13T;lQolOttky32T;! O;of EFFsA2V;astOz6ST;icDEL;apE6Ieider el8C7i3D3;eswig-ho304ieffen C95umBPV;ndler's 94Htt8OKzoO;affect2NKidCWOphrCTMtypCWN;herazaDJIngeCFN;denfreuDJHrnhorst-BFG;bi3da,lYnVpUrPtman O;crC25joCAN;letPy O;mETEstories to tell9FD; Pt O;b5CAjohanss8GW;fBYCnexDspDBHwEK1;a AR4hiEM7;dinaviaPia CMDnO;eETMing electron m7P7;!n9X9;abPlOpi8;i2op;iCCMle vector05D;d3QOentertainment DKZtv;a60b5Vc5Od5Kf5Dg5Bh5Ai4Qj4Pk4Nl40m2Vn1Qo1Op1Lq1Kr0Xs0Pt0Au01vTweetET3xoQyPzaeOïd benrahENOúl ñíDSKṃsāG;-s1;aka kETFyeshCUW;nOp6ZB;s,yO;!-anhaCI3;aSePiOoy;ng private 8LLtribai3VA; Od by the DXD;the9MNyourO; t65X;g2OLnO;nah OtEEN;cEGPwANV;ber motorsEIWcy sanADXdQerk1Y9lPmlaEDKna,roOsageBD5;n,poET3; gBNDi niinistö; oEL4aDIKiO; Oa;araObinladinECI;biaOmEH2;!n-led intervention in yO;em5;an00elliteYhya sa1DUiXoUsumaD9SurQyO;aOendra nath CODr; nadEU9jit8O8;day night QnO;! OalA;awE19devouring his4X7v;fBXAliEJU;mi saDYTrPshi O;k2na2PLtajiEQM; 53Yu iwaEUX;re,sA1K;! O;internet88EteALU;!iO;c p0LOsm;aThQkOuke4ON;atOia reDNT;ch6BSo2;a OiEM9;aA7AbC5PcATGgrEjEMOpietEESspiO;elECX;ki On6X4;and m2KMkoji1RH;aUbanes–oxleyE5HcoidD9NdSgRiQkPlacc,m0VXoOpatta parambA3s,um1vepalli radh2LY;jini nai7QZo brieA4K;!aru vaari paaEUH;!leru neekevva5TMn,t5RG;assoE8Eon of akkEPV;ar uD42inO;e,iaAOK; 01c5h OjeCWPswaDGHwDQ7;aA6YbZchYeEATfDRSgXhWisgEAAjessica 9F4knDM7lUmSpQrPsOwayne cal8T2;haEHHilveDGKnoEKPu3KU;a6ACoem0;aOoCSR;l4riELDuDWY;c3DQiO;chelle geC9Sllic1;aOeD76;ncasAQ2wrenceDBA;arE7GolcoDK3yEMQ;ad2oBG2;alDV8;aarA0We8V3loom raABGrighA0W;al6FMbareiDVMd4JTgilEC1jean uAAPmartiNpaOraG6;scDG8xt2;ib saleDLLuon65A;!pO;hOoEHQ;iBo;irseOri hayaELD; ron1-monica8K9; 0Ga0FcEGXd03ford a4VVg-e-marBZ4ia 8B1j00na9YLo4DBsZtPyaO; malhCSJ;aRerD3Aiago PoO; 9ELriEIXs DWG;calatraDS3de composO;teESR; Ona EL6;cPmO;onica CG1uAH;laOruz de tA6D;rita658usO;!'s61;-serCPDkrEPD;ay Oeev venkEEMu;duEK2g2ASleela bhansaEJQpuran singhO; cYM;aYbox ED2eep9TCiWm1rQsDLIwiEHAy O;brEAPdOhook elementary0P3koufE4Q;enDO1uCIM;a QinPo O;botticD54koDO7raDPY;e bS7ghamER4;bPdOoh,ávila beltrAAI;ayA5Hee,icD19;ernEQEulloBN7; toksvDOSa Oe C7Lnista national liberatioDJQsk;moCQ0peak tramwK;lDZBra D8V; CO1a la6A0;anXdiegoVfSgRjQmPpeDYYquentin stateOsebastiAAB; prDO1;a8SSiguel de a4OO;ose shCKLunipeEGQ;abrieA6Dimig4EN;ernando CRAranciscoO;! O;ba3ZNcB34inEG2;! O;comic-c2inEG0;dreas fBJQtonioO;! spuEQ9; 0A'sAO2a05b6KVe04ha4i zaDQNm01oZsTuO;el QraiOs DRJthirakaEHU;! O;champlDUUjaJ;becAO3eto2O5joOli9ILpepDKQtaylor col23Oum2QDweEOU;hEKIsl4;on,ungO;! O;eBQQgalaxyO;! O;a CUFnotOs CUFtab CUF;e CUE;aOsa,y9HN;! jDEJ;i hanr1B0o DOQy O;gOh4NL;ravaDZ9ueC5B;-sex marri1SXer thahENY;el,jwadiELAntha PrO;a w552iBAFkaENS;bPfDSVmOpoDK8ruth prabhuEL3slD5IwoB41;a51Ao9HI;ec3ODoENP;a04b03c02d01e00feDK5gian2J9hXjaA1ZkinDN3lWmUn7QSpTrRsQtaEJYwOyEOH;aOitw0ortAKT;lt2t3NU;he8K1miE9I;aiEJFiOockwe3Y1;egIlE;eckinpEHIit9YP;aOcqDNEeAOVorrE4A;gEO6nekC6A;aDSXeBVN;aAG9euD3BoOyDEW;usOweC;er,t2;llioAXNsCQ7;arDOV;la7ULooDSR;ankman-fDDLeazlEot3TEradDH5;cDM6l9YE; 09a07but0KEe04i02ly ZmWomón rondCKWtTuSvOzC85;aPia O;divin4VTofficinalF;dor Otore maranzaDYH;a4N5dalí;ki,te; O-n-peDX3onE59water c12L;and sanctuaLbECWlOmBTU;ak2P0;aOonEQC; h6HZn O;bin abdulaz8TAkhEK6oEGXrushdEOF;ann h3TAfD2HgeDO6hPke40Dlin3ZWme5phBDTrOstrutBX3;iDEBoDDN;awCWHemENH;cAATmOsCZNu adetunDRJ; khaBBM–sulaDY5;m witchPsO; taxe6YZfCMV; tr9W1;ar,d8ZSfiCFOh,mO;aDJ2i;kh1m10KvulKN;haOo90Jug1;!l4;al aEB2id jAE9; 06cANMd3I7f al05gō takaDQHlor moon03nOp1tam3OX;a nehwMsbury6S4tO; O-trAP4s rowE03;baYcXgeB2ThelWjoBTMkittsVlucAmaE5WnicholEQ9pSsQthomas christEFBvO;alentineOincent and the grenadEDD;!'s dayBDZ;eOteph5ylvester644;b5Q0iDXZ;atrickPeterOierre and miqu9DW;!sC76;!'sD2I;! and nBK1;eEBEi0;hristoAGXroE67;rthéleCL9siO;l's ABV;! cO;ryBBM;-islam1J5i CLB;baba of shirEDQdharam0JWmadhav 3C3pal707;aGel,itya akademi1BGrawi arab democraticBSP;e sOo m7APrada famílA;talAKT;aSdQePfronO;! burDGJ; st8GBmo2;ar7DOiO;e BVW;ri 8FVvid O;dC17ir1; sat1ako yama5MPdQhgu5P2iOomasocCR8;e Oo ma7GNq CKY;fDRWsiDP3;am73Miq bE;agawEJFcThPkleAZKrO;amento81Ged0YP;a Pet–param17ViO; 9AIn tendulk9;baron cAV7dO;haw1;haromyces cerevisiEB9o and vanzDBQ;aRer6OJhaapAWOine Qle,rO;e,ina O;b1G2c9XHouazaEET;hossenfeC79schmiEHN;!h,n DZ1;b aOho,rEI4;b,u6EA;aJ3bJ2cIYdx,eD8gb9DChCMi9Cj 9Bk9AlcCLQms 97na,o2Gp2Es2Dt2Cu06w04yPza,éOöyksoDKFúben 0KXōn4;sumé,uDZS; coC3ManSeRlan clark-0FJoya kuriCO0uPz5ōyū koOūnosuke akut4JK;bayECH;gyong5HAichi2JWkyu Osuke hDT7;iDMWkCL3;!rsoC6I; O'sENDaEL1;aVbUcooAWTduE74egCBTfitzp8OBgThSleDQIo'0FDpRrQsPtOwCXP;anneBQWeB68;eacDACtCEZ;eAHTos1X6;hillipECVoCPQ;iDLGolBV7urELE;arcCYMigELGosEH7uDM6;ad0inAFS;daEMSrcidiacoDW2;andaOby;!n AD9;airiA19b1Ld1Be1Afus 19g17h16i hac59Cja ignatoDNCkia kuchiE70l13m0Zn0Wp0Qr0MsXtQud PyO; lANAi's royal love in the B52;gullEKSvan nistelroDC2;aTgerShO; Oerford4VQ;bPgoBTZjEM8keaEA1maCZXnegDL5porE9ZwO;est44IiDRG;ader ginsC5DuzCOE; hCDZs CH6; lEG0baDL1;' DULh 0Bkin 8XJsQtO; O–eater b8VN;beCAYshoot224; 07ell01iaQoO; BUE-O;georgiC3Jj6QMukrainiC3J;! DHTn O;aVcCVVemE9CfUgTlaDWJmDOPnaD1GoSprRrPsO;f67Hleep7UUoviet federative 8QL;eOo9TNub7;pDCAvoA6E;eBUMovisional g5FX;ligBQUr90H;roundC0G;a4NJoreign agentD8K;erospa6RBirOlCJNmeCWKrC0D; fCK2craft carrier admiral kuznetsDMA; P'sO; p6UL;bQcroweEH4gE5BhoANDjEG3peCVGs3D5tPwO;estbAUFiDQS; DCBovE;raEJPufaA6C;brKmD2FtD8U;diEFKlimbAQO;al PikOouni ken2W3;! dBZ5;arEHHpO;urE5L;aulQert Oi kaE3R;e3GWf9P4gA7Xmu4KApenryA1KsO;anCZPheldBDF;!'s drag raceO;! O;allAS0uk; P-dmc,away truck 35YesOge–kuttaAXUrDJDwK;!caEBE;bEIXhide fEK5lolaBU9the jeweEL4;!er7CJiQmPpO; sC5RelstiltA4Z;ikBJTy;!ko tak8P;a le7EWeO; of Os of c94J;lEBZthCUM;ollah khom3ERr;by OraEIO;uDXPw8UI;buck B2JseDDPwainCVY; mccl36Qsha little8FA;olRyO; Oard kipEFD;gOruettCMQy2J6;ay,iulD7EoE57;f Rph O;the red-nosedOval2S3; reinO;de0;abIclausiDhOnureyEEQs6U5;eELIöELI;' al kUber TeRiQy O;baBDGl4on r0XZrOwDYD;idE4NoEKW;c2k's cuCOC; goldbergC10lELZnOus hagrEJV; fleBDAs barrichEDQ;duck debug4PDsoCKK;haED4;rs E3TsELQ;s,y6ED;gOk; mAM0;a69b4Cc3Sd3He 3GfecoxE40g36h31isin conaEFUku,l2Um22n1Ko1Ar16s0Ht0Du0Bvan2Q7w09x08yO; 03alPce O;g376pierrDJL; Oe union saint-gillDLJ;aYbankAZRcVdutch61VmaUnRrumbleQsPtOvictorian2UB;hai5C2ombs of the joseonBXP;ecret0TAoB4F;! mCIZ;avyAMXoble consort O;hwabin yELBsuOuibin s9LRwonbin 2A0;!bin D27;il,rE91;aOentral school of speech5N8oat of arm8VR;nadian OribbeanD2W;a7I1mountedBAHnaCZ9;cademy of2MTirCI2lbert DEOustralian O;a7HZnaCZ7;benavidEELcQdemD7FkPlic2STorb64IrOscheD1JthCM2woELT;ayB1RoEEE;ea6i5PH;hu8oC0H;etHie rDVHyD6R; echelon 9MQan Oo2;atCU4b1D8;en,lDMTnd-robin Oting informaE2J;scheduEE3t6IR;at91PhQoscoA28tO;eOwe0UA;n tomato3rdEIC; iGschilJI; 1RFa05co04eVh hashanEBHiTsPtoOwell9UBé;ck,v-on-d2; Oano brCLE;bPgeECClBIIma974p87BuO;lbricEI9;arCOUraEIB;crucC0Ee O;huntington-whitCWKo490perEE1; Qanne baEE9ly8E1marOtta5FDwoEL8;ie de42Ry O;cD80haAA2keA2R;ayling-eCQ5bSkeA2Ql90RmPnOpaC4Lsc4DGweEHT;amajunEL1yDDU;atafD6PcO;gOiv0;ow1;ow4PXyr6;e arbuD08smECN; TceE6WlRmund piDMHnnPrO;io daDE9y;a Oe BX3;arDFUpanBLV;ind Oynn AZP;caECAfCENrBBI;luxemC1SpCCUsCKE;onoa zoE8Yschach D2Py O;cPg90DkO;e5ZHi5OF;ochDDTu5O8;ibECBm Wney VsStO; P-mean-square dOkEGW;evCNY;be0meaO;n 4TV;evelt PtO;er t0WP;faDBUisEDF;faDBTmaG;in E3Xt4XH; 00's gone wDGYaUda ro1NLeTnO;ie Py cO;hie8ox;baBB5coPjames dDIFo'747radDLTsOvan 0FGwoEKA;peE6T;lD0Cr5NF;la hajaD6Nn rubiDKM;ldPn O;faAUMkA1GrafEDVthe acc96L; OinDF4;aPkoD07mcCZYreaganOspeiEI1;! washington E7Q;ll5raúAR3;d9ZVfunEIFg79ChoAJMjereCF8kRlQmaIpPreC1YwO;atCPPeaCKIhiHoodDJL;aCI2erB62;ei5EJi79Z;aEIRla4; the space9JXaUeSiRola gQulusOy sc6DEárDI0;! aO;nd remDugustAE8;arE8B; CZYnaDYN;!lu lu1OYo Oro duDR5sh rang612;+9SGa9SFbBD5;in gros431nO; XcTesqu5TIiQs8VCticO; OiEA3;c7VMmD4O; 5KGaOchM;!n O;laDRYreA1V;e Oing the5DM;fiEEXis a bonus 932lDTQnDWNof the tO;hree kO;ingdoEHJ;abramoBF6bCRIcTe514griffin71NhBPTkCFIleD32nuCF4pRrPsOà cl9LI;afiuD05eA9H;eOiHoaE83;igNpD7K;olanskiOr5IP;! sexual abuse9UW;aQoO;nOp6ES;c7OXquesCR7sCH9;l9KCtholEJH;and SeRf77UlO;er coaE8Uing5D7o,s-royce O;ho2TQlB0DmO;eBTHotor 52P;-playinH8x;barOemmeC4ZorzabMratz3RF;th3; RiO;ngya Pt O;cDZ5shCI4;geCA9peDP5;jeong-eCPAmoDQD;er QueO; OliDK9;o6plC9AwaE7U;aC8UbTcSdReE12fed98Qgoo9DSlloyd-ANMmQpenCPRsOwaCQD;crut2tO;auAR5o6;cgDPGiE9KooB;altrEeaCOA;oD54raigDCD;aEILinDDM;de0m9P; Vdy UeSgers and hammeDGBman fleDAYney Rolfo5K0rOtang jitmuanA9Y;igo OyD6K;dutOsanBBB;erH;alcaEHTdangeCTZki8;nt,rick O;k02DstDEVwiCRR;mcdo6TTpD08ricE6K;of ascleCIEsOta9F1;erEAPteO;ig0wartDBA; 9FWco siffreE5Zh03kOoE49; 00aZeTnr3NLstQy O;aur rani ki prem kaC5HbalbD05fFWiDR7jEAFmOv;arc64HoCFD;ar OeadyCAJ;advanced game9NHgamesOnDTJ;! ADQ;feller StO; P-propelledO; g042;lOrac29P;aDJDeDTH;ceDEQfaD97;bBBNll;and rollOhuDYLmD2Upaper scissoEFP;! hN0; thériB93eOfort BIA;!lle O;hum3waO;leDDQ; 1Cb18ertYinRlox2OHoOyn lAYH;cDP2tO;! 68OicOs exclusDV2; process au4Z3s; PhoOson crusD43;!od 93T;caven4XCde jesús,fox D8SgiRhoQlAG6olE67tPvan persEF0wO;illiamsEARrEEA;hDIVuD70;bb,od;bb,veN; Sa fBR4o O;bQcOdur9YYfir6QIman5WSorDGEr4D8;aOlem6BS;rlE8V;aA1UenigE6R;a0Qb0Pc0Nd0Le0Kf0Ig0Gh0Bi0Aj06k03l01mZpXrVsRtQuC36v1WGwOzemeckF;aOeCQZiEFGolCTE;dlEEUgn0lpo7;he b6KEo1Z4rEL;aQchuDZ9ean3CLhPtOánE99;aJepE1J;e5OKwaDEF;lCXDpo3S7;eOi'cEEKoDDYy1;df5BDed,iE57;atOeIic3P5laE0H;riJtiE97;aOcnD45itchE1Ios3ugaCIM;lo6ppleth3XHrk 5DBudCHBxD7J;ewandoCRDoOudlE1G;ggAuis4U;a382iPraCL8uO;biD5IrCKA;rB3CyoBZK;ames-c483oO;hnOrd1y; Os2;\\\"mutt\\\" lDPCb8FC;i 45Il0;aQePoO;hm1oDHZrL;leniDrjav55X;lf2nsOrDZBys;en,s5;rOuillauEG6;av3iffinB96;alconA59orE62rO;iDBLoECX;gE8UngD8Y;aC00e niroE9KuO;ncan mcn7FBrECUva3MO;arOliE5AonrEBWruD6Hu141;ly7ra957;al8H0iUNosch g8ZurNyEDR;lOramaDM2;an auBEGtm1;ert dijkgraDHNie Py O;beE8Ck1IZ;aOcoltD93d6UMfo9EYjarvFkea6la9EYroCR7wiCPF;meC;bryd2corddLdUe7FXfoEDKgThalSkRlQmPpiDHFrOsc69Fvan5MOya8z3S5;eCHPi3HEoy ma8VG;aAL8celheD5H;ieBJZoA41;a375nDGX;foEDFl;aB8FronCQB;el911yrdDCO;dQld Onoke coloDASring twenEAJt9XD;amunOdaC7W;ds5; tOside picnEFY;o per69Sra4;carpathAempress7F3lPolympEFWqueen Ot06P;e2M9maL;usit9XH;-bE3No7X3;bCVGm5P; 2Wa2Vbo9B1c18d0Ze0Uf0Tg0OhCFCk0Nley 0Mm0Kn0Ho0Cp 0Aqui puDBGs02tWvPyadOzE4L; mahrE85h;aTeOi1;rOt; Ps O;cuoCR2of blood67S;pC78thDE6where the moonO; r8O3;lDLWt1KN;a Qchie Oeish deshmu6OHu arDMW;bOvaleN;lackE86oD7N;cA3ZhayworthOmoAKFoGsiD9FwiDI4;! and shawO;shank rede7S;c4VXe Qhi Ping su63JkOotDWMperi5V1; CCQy A7R;kE4EsunDB3;againEBKof the O;footQg94YpB86tO;eenage mutant ninja turDYJoO;mb raCUJ;soAAC;toE43vO;an w21G; Pt gO;am3rrBHC;de janD8YfC0ZgrandeO;! O;do sCCPgorg5PK;a sawaDIDgOko kikDIU; of Oo starrD7Ns of saAGGwED1;fiBh6DB;aOwECZ; ho949c neD3E;keDR2reEBS; mayaCer7X2i lindECRsdDJL;a,el,htPoOveECD;lBGCr moDX6; said frE9H-Oeous among theDPEmoE3G;hand8MOwing poO;liCAUpuCXP; w9kin'sB5Yle; Pmann O;h7ARsDYVze7S4;kugi57TtaO;kOnaDIZ;ahE1K;dUePgeOley scoAKF; h7W8; QrO;s O–waite tarot deJ;ofE8LrD27;likeOthe70W; the 69X;ick Ol0;boA22moECP; 19ardo 18ciCJBe17h03in,kOo ve02E; Qr8BSson45y O;gervaFkambuaDLImaCJAneDGTpoOr21UschrBSC;nEDWweC;aYbXdWfDEUgr5NRhVjDCNkarsdoCDDmUnAEZoA0FpAAMrSsOwakCTT;aQcoE4PprA97tO;aCOTeO;in0v3;lom2;ioEAUoECFubinO;! production E5G;acDCNorBXL;aB66ofE4V;anDLTec50N;eaDV2rEAB;nd m1CXs7YX; 0PaOe9WIie samAMLter magnitudeBAW;rd Ot C3V;a0Lb0Jc0Hd0Ef0Dg0Bh09i08j06k04l03m00nDBHoXpVrSsQwO;a72BiO;dD8NnCKY;ac527chiDV9imD7LpeJtO;alAZBrD5E;aPoOud6XK;dE5RgeEB3;mirE5W;erLrO;oen1K8yE9L;'PsmanO;!'s house ofCPZ;b8TXcalCOWsu7BZ;aOuAY4;dd5nuIrOthDAA;cinDL9x;e8Z2i5AG;aE26iOukli99V;el,lEnd;eOoEA2;nCIHweC; DSMi7A1;aOiD92uCRY;lsey beE9CmASNrrF;eBiOriB5;bs2lliE5L;ey3QKrancis 5AO;awPeOoATMrey02R;an6X8nt;kiNs2;hD9PoOrBO9uDVB;l3ttA3Jy7;aseE59eOlaFoo6raE4Su928;c393lz0njamin7UBym0;nd maOshCGVttenbDOZyoaCZW;ry 8XGuriceBTN;bDVAdad poor dE82pO;aCAEiaDXL; C53gDWY;montalb9TXpeASL;fB0IocasD96;a cerA0nA64;myung0G7sol-D1H; blood group CDIa07e03iYoSyO;dianQs ifaNthmO;! O;and4XQgaEBV; vV1;dOmbDna mitG;eOiDWNoden7ML; C0AsO;! schol48CiaO;!n O;bu45WridgeBLK;anna pRnO;ePoO;c4FQvBP2;!land-palatiA1V;ratcheE2Q;a Qnzy fel8E4toricPumatO;ic7XOoid a091;!alB7U;du8L9p45Jri6KOseeE0W;bdomyolCPYmondreO; stA8F;a52b4Vc4Hd3Ge3Df38g2Ui2NkD06l2Cm24n1Oo 1Mp10quiem0Zs0Ct01uCJ7vQx PyOza 102; 7KSkjavík,nold7EZ;bu89RhaB45ry1tilleDPX;ersVisionTolOue starlE8B;utOv0;!ionO;! of Pary O;armed forces of co5IGgirl uteDWM;digBXSt6QC; cDGYist O;wes6NE;e Oi;dns lookDSReDNNosmCQLpOtranscription polymeraMN;olishAYLroCLW;ailWiUroSurn O;oPto O;castle wolfeDBHhogwBL8the blue l0BL;f the On697;jeDYUobra diDT9;aOvBOA;ctive2F7rDZ9;culocyte product6CFnO;a52Sol;! O;b48Up4PP;cue of jessica m7HFe02iXoWpTtPurrecOveraDGJ;tion 942;aurant Oless legsDU8;gordonPtoO; anotherE96; r5JN;awCVNiratory syPonsiO;bility assignmentDQPve web DPV;ncytial6VVstD2L;nCOZrts world6J9;dOn,stE72;ent evilPualO; nBZO-current9IW;! O;v5ECzeDYM;archSrvO;ationA48eOoirA48; Od ip addre4QB;baOcu7PU;nk C1B; OgaH;and Ostations inGItB1QunCRY;analysis 8EOdDIH;! for4JL;eat p8XDli08r04til02ubliO;cOka srpsDEZ; QanismPs of O;ruD6Dt7MF;! 7DP;of OrC6Z;artsa6JBcSfRgenCS1irelQkProse BYCsingapore4ZWtOve0E5;exE9Vh7X0;arDDJoreR;andC3O;lDMUormoDRC;hinOrimE3S;a O;aOnaCN5;irC5Yrm9X2;e,ian O;cAX3humanoE72;esentatiOiseC2X;onal state OveBTM;trO;ansf0;cation A5Yt;haBS3speedO; wBKJwBKJ;aWdeVeTin–angiotensi7FCminC43nE5Qt-a8HRéO; Pe O;elise goldsbA6Czellw9JR;aPdescart3giB3JmagrO;itH;ngélDM6uberjo4G1; 889eOwableANKé 5SK; g2U8;rE19zvous with 8T1;issanceRtQultO;! O;clD7Bft,iD3Nmé929;e reinsDYAo s44I;! O;aE96hOt517;umaDY4;ain 1AGbr8WDdesivE56eRington E75oPus lBZAy O;hE4Xl6PS;te Ove7H6;desktopDPWprocedure 81S;dQmbO;er the Orance of earth's paE5K;monster7K2tiARJ;y DIP;atiUiO;ance Sc DINgioO;nOus views2NO;! in O;aOcAVYgeCYHind78Hj92LruD50s8O1tA02;ncient DS7;enDIJi4J1;onal47QvO;e Oity6JC;kEpermitBJ0strengOthermE7V;thE7V;chsSdQ2gn of teAKKki,ms,nOwa;a ueE6Hc0L0deer0QOforceQhO;aBUGold mO;esE1C;d7E5ment 7XW;führer-E78tag O;buAKAfiB;enZgWiPression 8WOular Oé-jean DKF;ex84KshE61;a ma7TVmeDRVnaRonPsO; philb4tered trademark D81;al comprehensive econom8PXs of O;e69KfrCMLiA6JtBZU; Pld O;dy0veljE0G;cC6RhaCki8spektE4M;aePie O;buDZImiDZ0wCGV;!t2;cy eOsBOZ;n8GTra;ormQrOs;actiOig723;on,veE77; OaE3D;clB4Gj539; drumANRbDYId PnaBWNseOve88C; witherspoATK's peanut butter cuDI6;biDTChaB9B; T-Sbu8D3dRfQis,mi,neJoOs5CGtuC9Iuced instruction set7RGwaC–black DVO; of heOx;al0;aCoo; 8JKit;light2UFtailed AHY;army0Hb0Cd06e05fo04guard03hYjXlettWmeDT3nose day ac25TpTrSsPthreadOwoDCP; of DWC;caBea,kPpaAHYq4GUtaO;r belgBQWtes and blueDUF;eD3SuC;iDW0ose4B1;anE5Dill and blu3Y2roducO;tioO;n CXV;er6I1;oBM0unglefoBC5;aPerDJQoO;od,t chili peppeA6X;ir,tO;! enterpriseO; lCVM;i1s;rt,x;lCZFnveC8W;aE40eOwaA57;adOer;! O;onDU1reO;deOvo7VU;mpE2E;lRullO;! O;gOp1H7raBLO;mbh;ood 7G9;! fDI1;eYhargeable2JUkXoSreationRtQuO;rOva;rent8JXsi2;i7LYum;alACT;illessC7Tmmende6CFnRrdO; Oer of d1NX;of Op6KH;lodossD04ragnarDX6;quD75struction73D;fC4IiDXF;ivePnt Op tayyip er3ZTsDS8;african origin of modernC1Dd9ZY;d pronuncC9Or operating characte4TJ;aTePuO;ild of0O3s;cca Pl wiO;ls2thout a0MR;bBG0de moBJTfD3YgibnEhaCmiDX5romijn,sO;chaeCBFug9; mce3F0r;ctXdVgan assassination atUlOp0r02G; Q-time Pity Ome,politD15;bD6Tte9XC;o14Vs1R8;betFesBOJmadrid cPnuE03sOtime streamDJGv1UB;ociedE1PteI;astBAFf;temC1M;-only A7ByO; player 729-to-assemble furniDSJ; naDLVive oxygen6TBos; celta de viCTXaPd O;espanyE4Zm00G;! O;c0NYrC2O; leiB6Ymk;'s a4Ia4Gb4Bc3Sd3Ae38f31g2Yh2Vi2Lj2Fk2Cl25m1Rn14p0Zquel 0Yr0Ws0Lt0Eul j77Iv08w imageBN4yPúl O;ca6BBespD6V; Ua and the last BGLleigh scat4SFmQnaudDP2oOtheon4XO; valleOn;caDCY;an,ond O;abBFBbPcOfr8L8s107van barneveE40;h9AGrCXJ;o72VuDYG;aDCCbYcXdVharryUj,kTlSmRofE29r6HSstevensQwO;alD2WiO;lliam9ZAnsCXV;!on;anz3SHeaE38ilDY9;ewFi3VK;r75QurzweDI2;haus5;aOoAQP;lD3Avi3;h8DNomC9T;o0WKradCE0;aDQDeRiO; Ochandran a5NU;shaOtejaDYDvakDHU;nk9stE0Y;!ena taCK6nO; CPN'C9Y-symo6W0na,sbrückBLB; TaSionalRko mladD9Cpac-dunQs33OtO;!leO; and071s2FU;e DEO; D31iDV9;n3SEtouCZP;ki8paJ;cal does not dream of WhRpberryOtafaE0O;! piO;! O;f3MSos;aRidPmiOom2triya swayamsevak sanDY8; ACBka mandC4I; BZXa OunDWB;jE2BtlaDM8;ad pA7Wd eAQU;a dreamiObunny girl senpDSZ;ng AF0;bg,e-earO;th e998;ca6JSw9X2; DNKeRhael war2ESiPtuBunzelO;!'s tangled3BC;d Oer;antige8NBeye movement sle9DXtra62I;! during the occupat91ZlKseDZD;a daggubaCQMbir ka09ch dr8A9dWgVi UkOma ½,somDW6ulph f1OFveerDXR;inRs and insignia of O;natoPthe waffeO;n-E2Y;! armies offi47R;e1EOgO; 7FZs of universitieD8;lakshmibDSImBG4padC7E; CRHasthBQTe3UL; Yall XeWhirAE8i z7BToSy O;b8SXcQgre9GTjD5WmPneC90o8TPq7PCrh04HsOtrD73weDJC;a5XFtBTH;eiDWRoE2P;al5C0ouDQI;lph QmO; O-75Vized controlled1H5neE2M;access memoDUVfoCP9hE21number3M5v6PQwa9W8;ch8U1sBRB; 330e heDUN;cu9UPe802paDZI;al'OcCM4paC1Q;thE04;po6HV; 00aUbTeRiQjDZSmsD3ZonB0FsayPu6zOónAW3;an kadyrD1Yi yous95N; m821's kitc2RE; malD0Fn dj5QQ;n,sO;h bal4ZNsesCT3;oAW8ut1;! rajamDU0d1k0R0nOyaDON; Pa maharsDQTi durvaBZ7ujaO;!n sumDH6;spectO;rosO;coE2R;chD2GdaE21gopal vDVBmohanBS1nath koCSNpickDKRtrCHR;f Tly 7J8phO; Oie3FJ;bPfiennesD4UinD0Glauren29ZmacI8nOriC8Fvaugha7NGwaldo e2XS;ad0or4BE;aksDQJel1J4rO;eaks the iCZRoE00;li8TErang8P7sc3E9;esh jhunjhunB46im,shPuO;l preetDWIt5;aDKDit6D1; Sas5K8eRiQkummarD6JneeshOon r4CLpBWXya 242;! mBRYpO;urDZN;nikan2UWvBP1;ndra7LHsh1L;kDS7raja1S9;!ders of the lost0CMj4lWnQsing O;arOdi2the flag on2BA;izoDNY; SbowRdropQeOfoCO5mDONn 9BXwater harvAK4;r Oy q1Q9;maria rilD43werner fass4Z5; 75Fs keep fallin' on my DY9;! tDY3;m1of4JOpBUH; t4RgE1Q;eemCU9m e0ONul O;dr9Q7gBOOkO;ohDT2;'n'boneDXNdoCe against62OiPnarOtiE26; lodbrDT1ök;ng A6W;ael Re PfO;aella carrà,ey ca6HO;judC7XsO;paC;aguilar guaj80YbenítDUXcPdos anjDTTnadMtrO;ujBTZ;aro quin55PzichDTR; Okw2;dawn c1Q0sremmuDZP;a04e02for01hYiPoO;n,van karadžD6F;aUcal5YJoPsh,um7M9xO;! 4TM;! R-frequency idenQactive Ocarbon daE22h57Visotope thermoelectric4XFs9T1;contamination from the rocky fOd6D3w6VA;lats9K1;tiA1Q;city music CULfC98spBGTtelevision of k419waDQX;n,tionO;! 96C;a Pe shyDYJika O;apHm044;krishnaAQ2mi79B;d CSZ;onOtzkyB4G;! rx vega C3Z;mel falcD9Cr;co2e 04hTiQketOlD2P; AZJeerO; influenced and corrupt organizationsDCPi8;al segrega5XnOsm8GK;g O;gaE17v0U4;ael Xel O;bVcampos-dufRMdUfr5VWgrShuRjDTNleDJNmQrANZsPtic206wOzeA99;aDYYei2B2;enJBheCCF;addDYZcaC48in0;nt0rd-D7U;e5iO;ffitBHP;olezMrBY0;iD45loDGArosnA2V;ha9PYleigh7S0s4A0ta8XV;and Ocon5V9;crim51Lethnicit247iBQE; ne bana di joDOTaRbitQindranathO; taO;goB;! rabbitY5;t,ul;njhanC0AshiOzi; khC0R;l ghBYW; 1N'orianka kilD1F-1Ma1Ibit1HeBCKi1DlipBC6r 1Cs1BuOwC51;a0IbDX0e00iPoOr1tb min9venzhané waC5Q;kD5Kra,t6EX;bi,cWddDOYet BIKnPque sánchez flD1DtO; indiaBPQo;cRi6oa,tO;aPon O;de koJjD2K; bruDSWna rD36;eOy9QC;!aO;ñeG;!kO;bDQ9soE0HtiE08;bec4JCchu5R9eUnSrRstPtOzoB64;iaCHPzalcoatl86I;iOloDPG;onnAM5;c3CLy 20Q;tin Oya;criC2YtarantinoDTK;nOr; Q's gPpiNsO;! of the stone8JMlaDW5rÿcDOI;ambDWDuaDXR;anne1HObDRRdiDS0elizabethRhyoC6Kii,jeongsDZClQmary university 70Sof Ov5YN;sB2Othe O;damnDV6u8PL;atifDQ0etizia BDX; P-class O;a6IBbAJG;ii,the queenBIV;d07il,keDXTl01ntUrQs9ternOvo;aLionO;!s and spatial roCG3;anBIKk,tO;erPi7zO;! cDHL;-l13JbaJ;iSumO;! O;b5NBc8OEdDZWentang94Hfiel51Zg1ZTharmonic o84PlPme8QXof soDIUpBKAsuOtunnDS3;icide andAK1per8Z4;eBYVogic DFE;cDWBle,tative O;eaDO4;commSiO;a,tO;ative5NUy O;ass6NLof O;liDZ1sAY6;! snapBAC;rOtrDR0;aRiPoO;!phBWV;ga fintech sBVlateralO;! security dialBLR;ntiDNYtO;ic Oure amplituCFP;eqBPLfAS9; worl8KP;coCMLd8YK;anlong50Tgo8l4nOyu50P; PgO; dBAKdD6ShDNI;dBAJshi h663;torCMY;nQsBKYtarO;! O;aCPYinvestment99OnaCSK;on,tasD51;fBV0le7OB;faDLB; versus npAIJ-UHaMFbsMEcMDdM8eH9fH8hEYiD5j D4kA2ClBWnBUo75r1Us1Ct17uYyOère lachaiseBQVéter márki-zK–nHF;chaDLJgmy5IOoWrStO;hOorDMZ;agorOia;as,ean tO;hAXYrC0B;amidQenePiHolCCYrhO;ic v4HLus of epBBU;anAPKes;! 1R5; yeD60ngAYZtr ilyich tchaiCAG;'er6ZWb0Me0Kff4g,l0Bmp09nYpWrSsQtPyi,zO;hu,zle v0R5;loBDBrefD9Pty;ha5WUsy O;caDTZgaloBriDYLt8Z1;chasing power paD7Adue QgaDXDiPple O;hA30m1; jagannadh,m,taN;phDQCunCFX;etta maresCN0pO;et on a 1YMy;cVeUiTjabSkQtO; gDXDa O;a5CScaDJD; Oy33K;roJs56K;! nation6E4iB9B;c CGNsh0;!eth rajkBLD;ak jayaPhOtBOD;-drunk9LFed 7O1;! regC5B;edOk4; up kAUQ-storage hydrDE;itzer prizeUmonary eTp RsO;ar,eO; oxim7DK-O;coCE8width CE9;fDAVmO;aga985;deDPRm0HJ;! for O;d8HBfDAR;lla magi madoka ma6LCrto O;riDJLvall1Q7wiC6Y;erDR0gCFXic 9XFliOmDSM;cOsh–subscribe69K; O-key6ORation history of marvel comics crossoverDSR;coCNYdomainSeBSKhRiQkey Pr8YWsector undertaking5N4tOu7A9;ransDL4;c4JEinfraBNU;mage7I0nvestment 6BJvy;e17Tolidays in9IQ;! O;dKin8ZE;eroRolemO;aic PyO;! i sAF1;dB8OkBT8;carpus santal1CBdactD9DsaDDC;a04eudo03ilocyb01o475v eindh1U2yO;!chOlANL;edelic YiVoO;-CNSaTkinDM7logQnCA8pOsFth91L;athyOoC2U;! che4F1;ical Oy;d8GMfDA2hoA8WpBHXtOwaDIN;hriDNSrB1D;ctive05YnCB5;atrOc;iOy;c h5HHst;drATPmCHRpD46roJ;e cub9KZinO;! mushDBS;coCK4ephedD02monas aerug7VPnDH6r4S3sB6O; gDE4lDUP; mBRJa4Ne3Qi1VoQuOzewalski's72G;e l87Gnella sc8WZssiaO;!n2LS; 1Nb1Ic1Gduction 1Ef18g0Zhibi0Yject0Tk6D5l0Sm0Pn0Oof of 0Np0Fs08t01ud 00vPxO;ima centauri65CyBV1;enceXiO;ncePsional O;government of the frenchAZ6irish r3T3; ofTs O;and territoriesA9Vof O;cAJIiQnepMsBA9thO;aiDP7e O;nAU0phDJ8;nd64CtaDGS; barceB19;!-alpes-côte d'azDCE;boCONmaL;a7F7eThom aDNCiDSQoO;-PnOtyDK5zCE3;!maD8Uv69H;germani75Uindo-europeanOsina59B; Os;laD4Dm98E;ctorate of bohemia and mor9ZZin9GAro988stanCAMus;ciAPFeTopagnosAperity theoD4TtOus;aOhDL3i9UH;glQteO;! O;caDL5m03G;and4;!cDHT;aUerties 6PIhetToRrOylene g6CZ;anolDUViO;etary Oo68T;lBU3soCGC;fDUSrtionalOsiDR3; repres7I6;!s and messengers BT2;gDTGne;conceBR6s6A5woDRB;gDKQoDUP;aBethPisO;c8MUed DOCing youngWX;a95VeD;etariDGVog; Pions of populationO; g6V5;g366haPjupyt0mOpDA5ru34Rver6Q2zomboDSL;aBT0e5OJkultG;bakkB21il BGN;tion8AA;eVnatBWRrO;ammRessivO;e OiDLJ;eGhDTCmCMUroJsupranuclear pAQ9webO; ap7KR;able logic 0CCe for international student21Ning O;languageOparadigm;!s used in most popular websCVP;rAsCTY;aBHDessOumoA6M;ionalPor O;laC24moriDOCx;! O;dartsCD8seCG7wrestlingO;! match 9MI;car speed 8IWmCFSof the O;james bond8E3lord of the rings fil08Z;eOol h1LEra5Z2u23;dural7JXssor regiDKE;abilityPiBVTlem O;of AJOsolCAG;! O;dOmass DFBthBCU;ensity DFAisAMF;boRevolution s1LYfootball hQkabaddiD62t83Fwrestling O;illustrOnoDKG;atDPK;all4CG;no,wl;c1Dde and preju3EXm13n07o05pyDFVsYtVvRyaO; bhavaniBXCd2T4nka O;arul m3JOboDSLchopraO;! j5OJ;aOy council 841;cy8D1teO; Oly held CKP;eq8LLmilitar47RnC0S;am,hviraj OiCEM;cOkDJJsukumCTC;ha1EH;cilla TonOtiDFB;! QerO; 5FD's dOs of the ghostDMX;ilemDM3;b5HLpOscB9D;lay8DH;ch1p1XT;n,rO;ity queDI1y of DFN;cPgl3tO;ed circuit6FXf format 1U7ingBFBmaDEU;eQipalO; Oity of sCZN;compone1YHph4DF; 00lyBC5sOtoBB7; in the7C7s O;alice of Xbeatrice5C6cVdeokhAY0eThaya bint67Ojulian4NAleAmQstéphanie of m8N3victoria O;louise 5MQof O;hesse and by89Wsaxe-coburg-saalAXO;arPiXononoCV0ärtha O;louise4SKo90L;garDPOina 05;lisabethOugenDQZ; antarcBVZ;ecilie 02harlotte of O;cXw8TS;baTt8IU;aXeWgeorge of cVhUjoTlouis of RmiPof Owilliam of glouceDJ1;p0JPw8TP;chael of O;keDCS;baOcR;ttCTB;achim 5MAhn 82X;einrich ruzzo reuss of plau5isahito of akis10C;amATM;dward BHDmmanuel de meroCGJugene of savCGK;lbQndrewO;! O;of greece andCOA;ert of sax47YumD5H;'sANOaUePitive 7GZorO;dial nucliCGDsky krDHD; Pira B8Cra división rf8UYtime emmy awardO;! for outstanding comedBV6s;minister of Onumber74Usu6YV;au94ZcaA6EiOj8MMm6SGsw8ZWt8IA;ndAsDGK;lit3EEry Ote;c65GsO;cB83ector of the8M0;eOhard colBMC; PwaterhousecO–earnings754;oo4UN;elasticity ofOiDRV; de9FP;-0Iamble to the constitut6MUc0Fdni7APf0Eg0Dhistor0City zinDSRju3D2m08nuptia07sQtO;orAty OzI;boy0JXcuBgood privaBZWin piCRYlittle liaDQCwAF8y3OJ;byterB7Hc03idenUsOter 7KQ; freedomDROurO;e Oized water9W3;c3V9mO;acCOWeO;asuO;reD25;cy of VtO; Pial O;medal of6FCsyBTJ;of Opro tempore of the united states se9I8;chi7f7ETgeCHUi5TFme8T1ruCODso7EKthe O;european PpOrDQunDEY;eople's rDPhDF1;c60EuD2P;b632d630j9JEthe council 8KS;ott3ARription013;l 522;am,ierO; leagueOship rugDMW;! O;dB1Yrecords and7BX;ic6NDy;ab7IZn9LG;ectures 3XIrontal c92S;ambDANe90LiOog2YX;ousOpiC7Xsion and re7KH; mCJF;coOejacuARWraphaelite bBGA;de5LYlumbi6OH;bhXdWeUgPkash rD79mila jayapMnaOtama aDI6vin t8OF;b mukhDH5v mohanlMyaDJO;e4QYmaQueO;! O;astronomical cD9AcaCGFspD3X; 7WNtiO;cs,sm;torianOy for9JJ; g4AK;a,er–williDARhan mantri kisan samman nidDES;as,u 65R;aBPDc4BdcaDNWe4Ag49i3Zk3Nl2Hm2Cn28o26p1Fr0Rs0AtYuXvWwerOynting2CNznań; PaD9AbaClTMpc,sOwoCWD; bootDFKheClaDGB;brD0XfSiC5NlDG2mCIYoRpCYNrangersQsO;eOu0O1;ri3t;! dino9Y7;f3LGver55Z;aDDKive conCB0;ertyCYVidone-io8G2;ltLnd D68ti6;aTePplD6BsdDNRterO;moBy;mkin v4USntiO;al OomDCV;enOsuper5MD;erCZRlargement 8JM;sQtoO;! O;chD2S;h,siumO;! O;chC7Vh9GNnC7T;e3YKi01tO; Z-Val codeTcoRgrQmodernO; OiDH0;arBIFli6DF;aduate92Desql;deOlonC97;s 6U3;!s in O;ba7D8caA41si7CX;apocalyptDQPcreditsQd7XQgr2QhardBHKimDECpunkProJsOt889;ovietDDAtruc0IW;! revAI1; s3O;ma9L8office passport seva keBOX;tOx;ivOron emission tomDJL;e8FKiDGM;c08firio AKIky5RUn03phB46rD7Vsche00tO; Xable networkWerVia deTland Sman68ZoRraQsmD1SugO;alBJUuese O;colonialCJPemDBAiCY0laCYHman o'CJPpeCWD;it of a lady o5O1yal of james bond iDLF;!fiCXE;ceCZWtrail blazeDNW; rO;osDGI; 3YZ's five force61U; g878;and starb9U8e1WKforwOmoresDKVr6G5wi6;arD3H;! O;cayBEAmOpana75Atayc1;ac1;hAMBmd,ographO;ic filmQyO;! O;in3VFlaws by 2NO;! aDC4;eCMSoPupineO;! DDH; rosCNB; 0C-8DQcorn0BeXpUulO;aOiDFW;r Qtion O;d6CMg6P9of canadaO;! by province andB5E;cCZXmO;obilizationB1TusDPN;eDN7yO;! O;de9A0moAGFplayDP0seDKD;! PyeO;! jDMYs;aXbWclement VfUgregoryCQ7hormisdDP1john TlQpOsilveCYD;aul B8Wius O;ix,xDKZ;eo OinD;i,xO;!iDKW;iCY3paulCENxxiDKV;elix CYOr84O;i,vDKT;enedict xB8Oonifac2DT;gapetOlexander B8N;usCPW;! DOLflD4X;aDOUmC9UpuCOBrOsmoCQAteam epDP4;ap,oJ;d7jaOn lD2J; hegCC7i;di06Sg,tOyo,z1HA; du 6U2e mo6FTiO;ac Ous piAOW;fire5PMgD67; RePodoro 8B7peO;ii,y;gra9EMlo,raniaO;!nCZ4;klement577poCWS; pDOOa0Oe0Li06ka05l02o01t6BIyO;a9PUcZdorBHMeWgVlact9GSmSnRpPsD8MtOuret3X2vinyl chC5M;etrafluoro4APh1DT;hOropy4AP;enDNIia;es3UWo26A;aD66erO;!aO;se chainCNW;on,raARG;st0thyleneO;! O;g65DterephthaAOD;a9E5ystic ovaryD7I;! g,niD8P;utOy 1KD;ant standardsDNAion of the gaO;ng3;!-dotDJ7;ce 00oZshUticO;al Po,s of O;cAB2t9F6;appointments by3SYcorrectDMMe8H7pPsO;ciDL7pB2Status ofC6D;artOhC1Z;ie5W1y; P–O;lithuanian commonwe0Y7sovietCHB;aPhus1QJlanOp6VSzłoDH6;dB04gCW2;irBJRlBJCrB02;! vAM4;in a pDNIranks OunC58;aBEHof98Y; PnDNRsO;!t9;of inacces7YTwe716;ndBH5rO; Ois;bearOc93S;! plO;unD5C;erYi52VémonO;! O;bUdiamond andVevTfirered and leafgCQ5goRheartgold and soulSomega ruby and alphaQplatinD7VrPsOtrading card D79uA7Dx and y,ye6CZ;un and DHLword and 5ZO;ed and2CFuby andO; sapp9JD;!ld and O;si7BZ;ol855;lack andA51rilliant diamond and shiningO; p0CN;! pAM7;nTrot's earlyA9FsO;oning of sergei and yulia sQsonO; dAER's O;eqBDArB1D;krO;ipM;caré88MsettAtO; Ps of theO; comCDI;and c6TDb5ACg45Wof AKI;c1B2rD1T;'sC79tL;ahontDMHoCSK;c financialC7YeumoO;nAthorCYA;aXeTiny26ot of the rue saint-nic25LuPyOácido 87Q;mCY5woDMG;g-in4OYsQtO;arDAPoO;! C84cB6FniD72; and minus s6Y–minus D1M;ase pleas760dge of allegiC0QiPurO;iC88otus ostre81I;ad3stoO;ce6;ce0Kg0Hn0Ast08tYyOza4EI;bTerunknownSing cardRstationOto6;! O;nOportDHPst0QKviDMF;etBSSow;! 88N;!'s battlegrounds 5B8;ac2B4oO;i c6XTyO;! O;m4TUplayD1J;eVform TinumQoOypD;!'s retCQJnic Oon;loDAZs1A7;! OgCKR;eDHTjubileeO;! o7XC;asOgaDLK; aAKH; OlDHX;ar7FYtectoBSG;er,ic O;heAVRono 7WUp187sJJ; b CVFckSd3NNetPkt2ned parentDLJtO; sym05Har04Q; Pary defense coordination 45Ds O;beyond nepB09in a46S;h0ni6oAESsyB6DzCO3; O'sC63;coAY9l5KPu3R5;iaBJMueO; Os 6GX;doD7Vof justiCG1;bo,s1E4;ha7L6masDB5;-1Fa1Cc16d15e0Tg0Ska0Rl0Mn0Bon,p06ra03s01tWvotDGSxQzzaOñaDLJ;! OgateA8K;hBF8margheBZ;aQelB9EiOlr;e Ov;loDC4;bKrO;! aO;nimati6XM; 9PLaCSQcRtsburghOuitary0C;! O;penguiNsO;leep quCQRteeAXO;airnCISh perAPN;a,tO;aYol;cy,nhaPteO;d movie release 9CJs of the caribCXP;! 6X9; torReOpi longstD41; Pr O;a553la9NZperaA48;boCAYo8EL;reN;-upC4RbaCeVgu,kQnipDFQoOteC63y4;cOy big broD68;chCIN; OpantheCVB;diDCEflO;amingDC3oydO;! O;diDCB– OP;aOw6X2;lOpp7; gDD9;aRlarO; Ps of O;crC6e5AY;of s4WS;f,t3;!cARD; 9F8eonholeBLR;ces of aLMdYl B8FrStPzO;oe3UY; mondD2Zer bruegelPro O;d'abaCREscCBW; the eB20; paolo paACRce brosn1oCZMrPs O;co30Pmo8DV;eOot; P-O;auguste renoDFYemerick aubameAKCsimon lapD31;bou4J3c9N4gasD4EkoLlavMomidy9tr2K1; piper of hamCI5moD3D; 013g4;atinny BGZkPo BZWrC6CsaDJStOus;s,ures at an exhibiDF7;etQleOup t8ZF;baCd cO;ucuDDP; feDIIt'sAPM; DAHnoO;! key frequO;en9AN;ho7rame3ZF;a1Oen1Ni0Enom peAKRoZp,rWyO;lTsiO;cPoO;g9YSloCSB;al Oi1;attractiveDI4fOgrC2AlCYOquality ofNRth8NX;itDI3;icia rashDEZlis Oogenetic D77um;diDA6ge9VOl9HWsCRZ;ases from the hitcPeAT8ygiaO;!n cBIG;hhiker's guide to127;!eXnTsphRtoO;electric ANTgraPli5W3n,pDD0sOvoltaiBPX;yn6FN;mm6YVpDCH;aHorO;icDGAus;eQk,oO;graphOn;! 872;me,pe,tiBPPyCCI;be RniO;ciaPx sO;ky harbor D6DuN;!n BE7;bridDBBcD5PdynevDF8fCJUnich7AHto18Iwaller-AJA;! beta85HlPmBY3neas Osh8X8;and ferb,gaD0Q; 0Ia0Eeas0DiVlipToO;loCRKsophO;erQiæ naturalis principia mathe66AyO;! of O;friedrich n59LsASL;!'s4CM; Oa sCL3s exeter29Y;huA8EschofBU3;pOstD5G; WpOs;aDE6e SineO; Os CC0–0QU;aOeBNPleroy-beaulBSQnaBVNpeso3M7re90Nst3M5tr95F;irOrBDH; fBEGlD5A;cPoCIJpO;ozzo di borC6BéBQC;leCS3out2M9;bak2AAg5O4iRle84BmQpulA48rPseymourOthe9BLv AW2; hD9G;iALIoD00;c05Vichael 75HorrisBZ0;iPv of O;frBWEsAVZ; of Oi AVW;frBWCmacCTFsAVX; foC59;delphiaOnth7O0;! O;eOflAP9inD5G;a5YGx6OL;anselBTKbARLcoXdWfAJKhUivEjCJRknDENlSmRnCCOsO;iOpeD4A;lversOmDFU;! archival45I;cCAYickeCKPuBL7;a48Eord and christopher D8KyO;noD8M;ar8OSeO;aCZHllmuCZH;o6A6unD7A;llOuCKJ;en,iCAE;cycli86IibBBHol,ylketon3OB;lVnSrQse-O;lockedOs58S; loCOU;aCXCise3macOoah75Orel08Q;euticalB8Ey;ero8TLtom O;bOst454th3C5;loDH7re9GW;anx ciD80loplASS;c cskaDEUiz0;a4Cc1d45e3Zg3Wjo8VRking3Vl3Smbroke welsh c3Rn2Zo2Qp2Ir1Hs1FtRugeDHEwdiepieQxeDEZyO;oHtoO;n mBC8;! vs t-BJG; s1Aah tikCFSeXite m2SErQtOula0C9;icoatOy harbour–maddox coD64; juD1S; TarD58oO; poroCCXlPnasOpavlovsk-kamcha473;! C4I; eBV2eumO;! O;iB7XjCUT;fiaDG8y1čeD52; 0UrO; ObCTBlooA4E;a6NMb0Pc0Ld0Jf0Gg0Ch0Aii08jCIOkr07l06m02nyCCFoBKHp00sStQustinCF4vPweO;ir,ll0;auBSK;hOoDCG;eCL7iI;aTcSeRiQtPuO;nC41t2OB;ee7ormaB;dd7ng0;lAT7rafin340;h2D9olaDCDulD10;fr1rsO;g0ZYteCMQ;aOhA3BrBI0;n,ul ru54;aQeij0oOu9MO;lOrg1;yneC4Q;cnicDFEnlE;awC63orBynD4G;auDEGopoCBZ; of OiCCB;ruCCDy9K4;i8CEoO;lm,rt2tD8S;aQrO;av3iffiO;n,th;briA15diDG6lCMV;aPinD46onDDVrO;amCIReu5RK;c54Plk;aOinklageCHJruAUQuesCYE;szCBXvCB7;apBFLe3QEhern4oQrPuO;ll5s9V1;aCBQiDEJouD3Z;ok,yoH;as6TUeCY9illPoOutterwCR5;gd1T1y7;ingBG3;bRc9IZdPhegseCXHmaraABCpostle0ZKroDDVsOtownsheDBKw8W3;amprDFFe8PU;a4AOoO;ct0hBJQ;eDC3uO;rNttigi9VQ;emaD6Khop ADFoUP;cetarianD1Ehaw9tO; 83OiB6S; aspera ad aGBc0Jdita3W0e0Hf0Fi0Bl0Am05nell 04petual9DCr03sQtOu9LDvez musharrCGX;hOinCR1;! scorcALI;eXiUonO; of3RZaO; and reception of roman reRlO; OiBFU;cOdigital as4OWf74Slife of clint eaC7Brelationships of paul 1P5;aBomBTM;igN;anOmm2; Os;cD0IguCK4laCNE;pOus;ho6olisO;! 4EJ;ieCLBy 1T5;rB2Gw66F;aRiOuBV2;anOtAP7;!–triO;assic7ME;cCPAfCH1;!in nCDZ; giA49cQneCZBodicDA6pheralPtonO;eCZAitF;! neur9LX;ardBKXl3;ect Oormanc03R;blD2QdaDACnuD8Lworld6W4;grineOstroiCJBzAIU; f2KY;ePivMussion i9JHy O;bysshe sheBD7f5ODjCGD;ntPptO;i2r2;-8N2i7; Ue TiSpPsiO;!co;a pCA9erO; OmiCXSoD3R;pBHNx;jn lijnBQEn the shoDE7;r13Bt26W;guardioDDJ;ny,pleO; U's Os2F6;aSliberation armyQparty PrO;epublic4IO;for freedom andAXWo9RJ;! O;a6A0groundBA2naBR8;cZLrmy of v6D9;for the ethical treatment of3V0power 8W5; 6O2a8d0Ee0Cg07i03nVtOélope cruzD75;aPecostOhouse a1D3iCYGose phosphate pat4EB;!aBX6;gPtoniO;cAB7x;on OrDAH;pa4FQufo vO;ideD59; TsylvaniaSy O;lanQma9IXsO;eOinglAEB;renaC10;caD38e;! 3B3;bad7A7jiOstate nittany lio0IR;llCEK; 7YGciBU5nsular QsO;! enO;larBB4vy;m6CZw9; QuinO;! Os of madag175;bD31randomDBG;lOshuD1O;ei,iyu1;i285lope O;ann D40foDAQwiC9F;leton 9CNulCXQ;orCSP;ic1lPoponnesOvFé;e,iASC;agGi sandD8O; o8DP;aPgy lO;ee,iCFR;sDtr2;-wee SrO; Q-to-410ageO; of Os 6GE;eCSNt829;gyCWAre7LT;heBZ8;agoCLLerastyTiat7WPop7P7rO;i,o O;alQc0RHiOpaBSDrodrigues filC7KsC79; Oi O;of br6ZC;modóv9onCAB;! in ancient7RE;!cTfoAHBky blinBOPnutSrOsants'AICt;l QsonO; O's chi-squared BUB;correlation 4QH;hAUIjD95;! buBD9s;e QhO;! boOes ge9PH;wl,y river9V2;doAS4of KC;cPfO;! split and merCU7; Oa;order of mA5Gworld O;cup4IQdAAJ; CW3i9N3partpiAQY;! 01I;an7Oblo 7Nc7Kd7BelDBFg76hlaviANIi70kistan6Xl6Jm6Fn5No5Kp5Ar39s2Wt1KulZvWwTx ro2ZEyRzO; OuBTD;de la huOveC8M;erDC6; 934-per-7KZo5LYpalOsafe720tm;! mCCF; paCHIan kaly1eł teclCDFnO; sOe596;a3O7taD9O;aniPeO;l dNHment condit5D6; rB4B; Z-peter tC7Sa YeXiQo Py O;d,s8EJ;coelC6KdybaDB1freiBs2FQ; TnO;a porizBH5e O;cOepisCV6mcA93;hOol9KT;alO;amD7N;e3GCmatrCOT;tteS3y perrCCJ;abdB9Fde5hiC08jD94new86YpaCDQr5PZyCYB;a0Vb0Rc0Qd0Pe0Ofe0Ng0Lh0Hi0Gj0Fk0Dl0Cm08n07o06p05r01sYthWvSwOyBIJ;alPeOhitBQU;ll0slE;kCTBterO; ha7XM;arC9AeQoO;lAQ2n hindO;enAS3;rho8DR;eAEXomas aO;nders9WT;cOhaBG9im2o0BNtaAWYun-hyung9A4;hOi5U0;ol3r93I;ePiBBVoOuddD49y1;bC88dD3H;is0uOveB;beN;i74VogCS2;'g9ACf7PP;ewmD42uCT6;cOeBQIichael gl9E7oBE9;cartneyOgaCSX;! O;an963diD2K;e 2AViebeC8GynBY4;aOlD29ru6LK;gaDADye;oseph6UHunger 2S2; oC6QsC1J;ePoOubschmD7T;g1l54V;at2nOym1;reD7Q;aOe9MTiamAZBleD6Qos9reeng1N3u1ZX;sco1A7u7YU;ig,ld0;at2rdős;aCHNepodBKKirB8G;astelBXBéz32W;eQiPrownX7uO;chheD6Fny1;lCT2sso6CDya;rn78Wt05B;degboyega olaw8V3ll5nCEXt1IR; 0Pa0Oh0LrWsy UtO;aCHRiPon oswaAWQy O;duCBIh4YRjAE9mCSIs5AG; Oe bo868;dCD4haA2MlPsO;cialC4BmiCRU;abCJAuCD3;cCWYke584rO;aA4Xo4UW;e2iPoO;clDnymDA4;aCY3cPk s9WDot Ozia reggBUB;aCKZfC0Q;e 05i01k O;baZco450dXe7E4leaD34mVo'bCSMroTsRtro8HDvQwO;aOhiteC7AinC75;r47Oy6;allBNZiC6P;c72Fom54AtOwayA6J;ar,eCCE;bC2DthO;fuD8B;aOcgo2YU;h65CrleCNI;e32EoviCP2ufO;fy;mBZ9tBPF;a Oo mC41;arC48cPde lC47gC8DhOkrenwiAZDneMrout5Q5;aCWAeD0NighsCI0odCRB;l2Q1oA0K;désiPlumumCQGo'Orush5;neM;leD4S; Ofinder role0Q5oCI1s of47é;integral forOof exi7;muBPN;gBG5udBC9;bVcUhiTmRnC75rQsPtO;il9V2oomE;ajC53me9ummeCQ8;ilEoBK5;ah64TcafD0KetheC3ZoO;riD95;ng7tch8RQ;aD09umAJN;enOoo6u679;at9;calYhtXsQtO; m7W3a,eOraD0K;b4u397;age on the lady 31BePov0portOwoD6A;! to pimliCUP;ngerOri6; piCFVs of theO; tO;itO;anD8T;o,uN; si6AT's O;t9ZVw83E;a0Ve0Si0Qk0Al06m03o02rD8Ms00tOvathy thiruvotAFL; of50UhXiQnership forPy of O;fiCXF; p4C7;alScle QtionO; AZ8s ofO; poD15;accel62Cb9CKpASTswarm oO;pt0OJ; dOly orderedCKF;erivaCO4i72;enoOiaBGL;gCX8n;ec,iOlEnCK2;ng,s;dy,xeAQP;aPiO;giano regg4UAnder nagG;!lCTE;er,iamentOop5BP; of Pary O;rBW0syB96;eCNOf4ELiCFPso1O6t7XA; Rer Qinson's PoCNZs and recrO;eaD37;dCOSlCWK;posEsolar proB9F;avenCVUbo-YchXeun-WgUhRjiPmin878sO;eo876hiUo-dD4E;-3IPn-O;jCA5yBER;ae1J8ee-PyO;e-BTJung-sC2J;so2;euOyu871;n-hABT;b4seCY2;an2M8ung-hCZ0;gCRZyBEJ;mB45neeti6W4s OzaD30;ag4HFcommu6hiC3LjC98métCVFsCQQ;id38FntPsBGHto O;d9Z3efficiBENprB8V;al advi5H0i8;b0Ec0Bd05ffin wCIWg03ll01mWnoTpRsO;hu7QViBLTocial3JAyO;mpatheOte;tiAL4;hOsBL7;ilAraD5B;iaPrmalO;! 3JD;! aBU7; vir c6OQahansa yogRiliCY2oO;re,tD3DuntO; O+;aCKNnBDGpiBBF;anD4Q;ax,el O;c7VHlCTRmACYuniverses inCC2; agrawMuayO;!anC0B;iQoxO;! O;iBBAof 1PB;gmPse O;loD36pd;! s4B8;eOoCWX;lsDtO;amD5M;le of the OoD5U;good samarAOIprodigal38T;aTerQpy boyiBT0riCB6ua OyrD;cB1VnO;ew guinD07; PbackO;! wr5DP;mC1OsiA36; Ql OrB65ver somniferCQUya;naD5YsO;ho3tCT3;john's88Or7TW;k C95lO;a fr28Ro O;di canC44gC53mal40Anu5NVso0C9; D2S's laby1OS-a0Ea0Ac07d02e01g00ic ZjXkaj Wnonian avaD3WoptB2WpsycB7LsVtQzerO; Of8S5;i5A5viii 6MB;eGhPi3oOyhoD47;miD5One;eOé2;iCW9rO;! 9IQa;ex8JHpe5DC;kCLYtB53;a vaisshnavOshirB18; t9U4;a9FSroCKT;aCZJol4rD2F;er,tBY3;emicRorO;aOum; O's bC6M;pa47K;! sev1GH;aC6Xho vA9WreaO;s,tiO;c 7PZtF;maOsBKEvia tor1TH;! O;cOpa47D;anMiCYS;fB6Omerican45P; Qela OpAAA;aOcouCJMste1M3;dl2n75F;beesCPPdawb0fe8TZgCAIhuC0FolCZV;! 235aYeViUlSmOpaANU; oCHVa de mQeOyG; ACMr O;lu6I7raiCTR;al5CY;aBV6iativeO; caB;!ndCOE; PoOrBGNstine liber34N;coMUge6l8ELn7ZNzoD56;blue dD52of sett89NrBKI;ce of Od4ntir3WUu;vOw7XA;ersaiC6O;! Oi rupCWD;a584international869naOs85Etehreek-e-insC6A;tABCvy;ge Qm2nO; andOg takh2tings by1JI; g4N0;hPsMYturCQMvanO;zaCO3;o942uD24;aniQeOli7WC;rOt29X;!aC3X; Osm;huayGz965;dSmOre pC2Fua;aOé amiBJP; OavCPSnabhaswamy25E;bOlak5S7shD06vibO;hu6BN;ington BNXy O;and the Pconsi7T7mO;cgC2Y;raCZQ;-m1hPific O;crest tB1AnCDoAYFt8FJw9;elbel's c9S0inCCC;acosta villarAADescob9hBQTlarra8MTneruD1Yp0QMs1AW; singh t3AVi ch madhaaCTI;adic C25vCS4; 9HI'har9S-9Ra9Lb98c8Kd8De88f82g7Yh7Qi7Ojib8S3k7Dl63m5Pn4Zo4Xp3Fr1Ps12t0Ru0Cv05w03xTySzO; the great and powerfB1YarCTQonePymanOzy osbourAGK;diD3Q;! O;depleCZAlCJ5;myak2o r55Ist0;al8W4enM4fQyO;coOmor2toc4;do6nt4;am,ordO;! Os8ZV;english dQhOuniversityAP5;ighO; school8A6;ictioO;naL;en Ol3ME;haD3HwiC6G;erOid; the S-the-RcookCYIfCGHjustificatio52VleC4Zseas QtonPview of gun laws by 813wO;atch seasonalCYOoC8H; windD11;c40IfrBHO;counterCEtop mediaA20;garde5EQr48Z;d,grée-marihaA7MiBVFrWsmane dembé0AZtO; of U-of-place artifaCEFback7VSer TkaCZTlPsO;ide the 52RourAI0;aPine of O;academic disciplCQ4james 7CBt5BK;st,w O;ki8motorcycle8YS;he9KNp8JFs7X8wilCRR;our h4CVsCZUthe9JO; Pan high school hoOoborCUL;st8YO;beloved 7AQf84JgQkind of C96laO;dy of Ost crusade or the rise of a n97N;fátiCUZguadaluCQX;a8iA5G;aXhWiVsu'D1EtO;awaTer,oO; Om8K5;c8KSfQpremiCL6skorzeBXSvon PwarmO;bi0;b4JNh1ZX;arBY2raC25;! sena9GC; maCQ3s r80X;elCTSo;go,ku; x08a05c00ecCPYiZkar YloXmVprEtQwald O;moB2Ysp5YNthe luckyO; r29I;eoPrO;aCAJiCQNogotAIW;aPpO;atCVRorBHP;rthrB8N;anC3BiCMXosisO;! jD00;! aCQW;dirlewaCKNschinBWE; mBMCrF;arOillo5VNoB1R; O-C5F;de la hoC9ShammersteiCI0i9MQmich9IUnunCUTpOw4QR;eCGGiO;aC3Ks2TJ;ka,mO;a1SFu O;dazCQFte46O;! O;el capAK0m735yoseCE0;a15bit12c0Zd0Qe0Ng0Ai01knElZphXson WtO;hoOolan bD1X;doxTgQpedicO; sO;ur7IT;onalOraph2WI; OiCV7;frequency-division multiple1SPmCHQ; j3X1y;be1scott 6RQweC3J;anABCeusO;! and eury2M4;ando OyCP7éaN;an71Rb7TMcitC4PinCP3mCYOnightclub884; and the VchalcCM4entUgQini kaiJVonO; O's 9A0;n7A0piB60;aCT8en,inO; of Pal O;antigenic s4equipment manufactADAfiCWRs4videoB7X;laC9Pthe domesticCBX;! e9CCaBKO;blind BMPwill of the wisCBM;aOo6y;niOsm;c UsSzO;ationOed c74D; Os of the duneCLG;for security and co-operation5OMof O;americanCNZukrainian national90U;ation of islamicOm; co9H6;cPfO;arC34oD0W;h9LDoO;mp7BN;gOiBCMo;aC87onO;! tAY1;er of RinaOov35Kre des arts et des letBLL;l BYYry O;diOjBNAleast s1DHpeC70;fferential AR3;aRcQm9U0nine an5HAop2FYs7IVthe O;bOcompanions of h7IWgaCTLthiBPL;aCIIr7JW;a9E7hC32;ssas6NZ;!hO;estraOidaAYL;!l manoeuvres7JY;! Pal O;me7ROp61I;bCQ7ofCUQ;cSdour-sur-gl63Sl RnO;!gO;e Out1;boA54fAIQis the newAA1;aAAGrehydration 84TsCZL;ene4GEleO;! O;cBIMd2Z9;al,e06h05iUo5OWpoSrah win7XNtiPuO;ntAs dC7B;cal Omus p73B;character rOf6FYi8L2mCYB;ecog278;!rtunityOsitional defiantB0P; coCWL;nion polling QoidPumO;! BIK;! epidemic7EZ;for the next Pon O;scottish767the emmanuel macron p9SU;austrianSdEJgRiQpolishPspEJuO;krainianOnEH; parliamentaryES;sraeliPtEJ;erEMreekO; legislativeEP;anCDFelia lovi78Uiu6NZthal5KY;c,l0Jn09raOth;nt coC5PtO;iOors in c and c03W;nB0UonO; Pal ampli6ETs O;maAX8re93S;b00cYdWeUfi7Q9gTmQnorthw6G1over3E0paperclCBHre8UVse0NOt1ESvPwO;arp speCUJeserübu8rath 5D7;aAKJe6FQ;arPince73KoO;cki3B8;ket C5UtyrALC;lBLAraCH0;agle clCO4nO;during5MEtebB0Z;exteC85own1A2rO;ago2;artwCK4hastiCXFoBBTrossrO;oaCNU;aPluOSoO;denplCTXlo;gCUHrb55L; U-Qai,b4RLcPdNgl,jdk,sOv5CFwCZ1;ea,treetmAY8uCX9;l,v;mid Psource O;iAO8lAXCsoBJL;back Ofront unO;rounded vowI;acCFAera tennis records – men's sin5FFl8QGmCTOsOunBGHwCX9;hortest pathOo79C; firCVD;! O;aOcAKD;stG;na Ort1EG;c4FZo5FH; 0A-board diagnosAV4ce upon a time in 09danseR2eWiVlPomatopoeAtOyx;arBWNoC7G;ine RyO; OfaN;fools and hoOmurders in the4ZD;rs3;advertiCMZchCJXfood or4EPgamOjavascript iBLWm4QRshop8F1video483;bCQUe;!on,si2; R-Pco4dC1TplDrBMJshCYKwO;!orCWS;child7H3pOtime pCTZ;artyAGQunchCTI;america ne2KEchCA6d8I2foot in the 523hundred UoSp81ZrRspring8NBtOw7K6;hOimes 37HruB46;eOousand and on97Y; w9KX;ace7HHi8;f OrdinaryBAE;th9W1us is lB24;and one dalmOyears of solAV6;atCMX;aB6Lh4SCme7YWsha5WKthCUJ;becoming a god in central fPthe O;basis of7S2origin of5LDwaterfBOW;lo4YD; ZaUeRicronQniPoOsk;rCL9s;-m1scient interfering 76W;! iBVO;gOprAQZrtà;aOle;! CF4vCI3;ha4An,rO; PiO; hard7WHon;al-bashCTObraCREepC7YkhayyCUDsO;hHOy;mani padmeOshanti CCO; hCI5;' dirty bastaCV3a0Vd0Le0Hga 0GiYkiluoto nuclear p4NLlWmeB4Aof palCX9ubVx,ympO;iPus O;haB6KmoN;a dukB73cPque O;de marseBS9lyonnaF; O-class ocean lAZ4;gBW7sp9T4weightlO;ifCXE;ad1;ie w035y O;a8A3muCV3; BCBebCWCgaCLHvO;eYiO;a Per O;gi16Ama7MTs8NV;cTdQhPjaBKJmuCF9newton-6PDoC02rodriBL5thirlCS2wilO;de,lB6H;a9PNoAJOuCU2;'a9GIeO; havilCPVjO;onCEY;oOulADP;lm1oBYC; oC9Mr O;cr2M9hQjackson-c92LmacgreeBA4nC8Ap9QNreCRXsPtO;o7CYrCOFwiCTE;acCMLto6yk3;aOuCDI;rCFKzard perry-CCF;kurylBSPmered6Z2of kiCOOtokarczA3H; Pd,g OicCTXksandr usBY1mbe8ZU;karavay92YpenB8K;gunnar solskjær,kirk christiaB97miss rebelsO;! fBZ3; Oest C2Ss4LO;aVbelie9ZWchurch slavBBJeC70k00FnTsStRworldO;! O;moOvC70;nkE;eATUown 4YRr0BP;chool runes569tyle and new style dCJB;e7X5orseO;! 7X9;cquaintBANge; caB0Wf OnWLv v3VB;ii3VAsc3C0; Xa9CIex,inawa Wja,lahomaRonomiQrPsana OtoberC79;grigor1UQlynC5V;!a;yaCEI;! O;cityPsO;oone9V4tate cowboysBYJ;! O;b93YtBH6;isCOVpC32;bo288cBAEtaec7VM;l pOngo bo7H4r1;a89Cl71V; TioPmO;!'sBGF;! O-BZ3;rCQHstate O;buckeyes footballOunBDE;! statistical leaB7X;my 967seO;-hCUV;aneBS0c Qgy and the cockroaCTZhO;am,uz tO;urCLE;niCUN; mice andCTHfO; RicOlineBH6;eOial language7XK; Or6WDwBGA;christmasCOUof strategicBGRs7PL;the 56V;cdQdipusO;! O;c5PKrCUM;! betterO; lifeCUI;a nob8BDdSeRiQnoklassAXOoPsonne édo3EEysseO;us,y;ac0;n,sBJQ; to0N1d feCIBon leiceste34CsCCItte annCQMya CBE; Os67K;fuCHOta5J3;a6GKc05eXimum tenuifl2ZOtQulus O;qCPEriftO;! s;aSoO;ber QpO;ath trav7RQusO;'s C1Dsy;re8D4sBTE;l,ne raCUWvO;e,i1D8;anOlCUY; T's QiOus;aOc36P;! fAHR;el7X9tO;hOwelCJO;ir25T;lAWBsunB2T;am3R4itanSuO;lt,pO;ationOy wall CQL; 306al O;safety andFQth7YZ; C2Qie;d-ii piCJ2eXi-wan kenoAOWjectUlas52Loe,sO; AH3cured by18UeOidian9AJ;rvPssive–compulsive O;dAUZpAUW;aOer56B;bleCEJnce of christma41XtionalO; c665;-oriented6JEivP–relationalO; m0Z7;e-c,iCKI;rOsiCNK;gruppenfüOlinBBHth 9YQ;hr0;hu,kQsW4tOuCBVxaBIR;!h kOmeMsAME;ee3VZ;! AI7land O;aOr3DE;thleAQD;mikuBUKzo6;e CHC;'golo kan31Y-IEaDIbDBcD6damukong suh,e8Af84gi5A5h7Yi3Vjan marykutCN9kvd,le ch9H9m3Uo0Sp0Ps0Ot0NuWvUw5PZxSyOábr8LMée,íðhög2F4ürburgC67āBQF;aQck de vCKTkAT4lPmOpd1IZquist–shannon sampling 9T0stagmDx;eria 9YTph;a B0Pon;a 1KPn15rlath2ZS;ivm,t cO;hC5JruiserweighC5G;idiaOm94L;! nve4LH; mBL9alphan lamsCQAbAcle05d03j02ll4HWmXnWrSsrat fateh RtOuk;elCSWm99RriOty puttyBJL;a,tionO;!al y9QV;al4FB;-34RembergPsO;ery rhyCT4ultan nazarbayCLC;! O;coBGRexec7BDlaCK2tr7YN;!avAN9cha738o espírito sCAT;berQerOpy;a8G8ical OoC23;anB7HcBYT; OsB9C;of9QJsiC8DthABE;ab3;eOg6ZQity53N; b837;ar OicCQAo5O;and radiation A5YfUgAF7magneticTpowerPr8WQsBWCwO;aCEPe66OiBPT;! O;byC1Iin PpO;hase-oAMVlaCCF;frB77geBIKiC0Rt7IC; re7FQ;aBK4isCELuCEL;fs,r,sc;oCA7y4KO;-Or;cOhQH;ompleteCRF; 2Ma2Fb25cturnal 24d23e21fARVh,i20kAlan 1Zm1Xn1Po1Nr01sZtTun,vOwrBKNël co8S6;aReQgorod9VDiOosibirARMy56E; sCO9chokO; aBFS;lCRXmber-BVT;! scotAk djokCSRrtFvC47; SeQreOt8JH; dame fighting irishBUX-dame de parisO;! CNF;padWPs fromO; u0T2;another teenCPSgo50Xsafe for AYY;feraBQWql,tO;a4Y5radBSO;a17bCOGd15epinephBVNfolk14ilAR9m0Ro0Qse0OtRwO;ayALXegian OiCGG;air shu7IJforestOlaC0K; cCDN;e de santander0RDhO; 02amBUYeSrop grumm1umbRwestO; OerA9L;pOt8S4;asALY;erCKWrA;astUrn O;aB0JcReQhemi8CFirelandOmarianaBPSp9YHtA7Y;! O;as6ZY;uC0FxpoAAV;al3ZYyO;prD; Pern uniO;tCEMvB9F;iBZMmegal1D6;a01by nZcarolina2P9dYeaXgermanWhollywood shoo2B6koreaUmac83pTrhine-SsePv5R1weXyO;orks8NV;aPntinO;el AFW;! CCQ;westphBJE;acific right 9LYo7;! BL4n dO–south korea71I;ef955; AGVicC1M;stC79;akoCRM;orO;thCNW;fricaPmericaO;!n free trad0H;!n4F7; Om5;colonization of northAZRm83L;dom sihano9XYvA4E; m6PMaO; she3KZlWnO; PdyOi,s;! landCNP;bScoRfinke0V0jos7OYlQmaPos3L6rOvincent pea7;eedDo6IE;il0;e9lo7N5;nquest5O6waN;at3orla9NU; Pized difference O;veget4S8watCJV;d9INpeBX2;! AF2; 6UMic Os1IRv545;c13HmBAV; OgaCIIh8GG;ephr2fateCE3waldstäA9G;mOr inayat ALYtropCQX;!i ra7KS; non biyoCMH-Pa32Hdenominational387oAO8profit9L2steroidal anti-inflammatoryOtriniA5Lverbal 2QL; dr9NI;alignedAFJbScoRdisclosurQeuclideanPfungible1U1governmental9L0hodgkin lymphoCIMnewtonian81Hpenetrative7KNresident indian and person of indianO; o955; ge668;e 40J;mmissioned7SKoperationAFF;inary geBITreaking7KJ;aOic; dumezRRd,lizo leah tuBOX;g5HQnC1R;da,se p0CTtamiCBI;l Other'4GM;cl5GCfielC3Ug75S;em72Sirbek abdusattorBOK;a43BeA4I;el SiA74leQuO; 71WhiOnaga shi1J9o uem6RV;ko o0KYro watsuC8G; Osse obliC82;eightfold56IgCPV;memorial prize in economicCC6pO;eace8ZErizeO;! in O;li5CRphysiO;cs,ology or60Q;hOm choAVM; P'sO; aCLL;baum8Y8cPgOhaBOIjuCDTreCN2schBKJta7MIwy7;a9V5laCOJ;entOyrD;inBB8;country for oldCNMgame no CP8hiding00Vjacket requirCKRlonger h5QRmanOsudden moCEQtime to dCN6; 53E's O;laCLKsBO6;ap,daC44; no kuCF2a3Lbiru cataclyCFYc22e1Zg1Kh1JihC3Lk14l10m0Zn0Eo0Dp0Ar07sYtPue,vin pauCA3zhnO;y novgorCPG;hVi aayC04rO;am,ic ToO;gOus oBCV;enOlyc5N0;! O;c87EdO;ioBCR;acCMLoBCQ;i4ya m0QC;ek8XNour square9CVsanO;! O;gTleBQRnaA2LpatSqashqCDNrRsOvq7ULx-tAMEz-c9;e4AOiPkylineOtaBFC;! gR;lvA;b7UHogCD9;hfiBHHrCO7;t-r;maOvanaBI1;lOtrelvCL1; purBH4a sithar209;pOsey huss7;le,on O;bs BVWtv;biC9Gh;a 05e01iHjYoy aquinXtO;endoPh O;ge5K6;! O;dsSeQswitchOv5K6;! O;liHonCBO;nOshBW1;tertain72N;! BFUi;o CC2;aOutBAI;! O;asB8Bga8FUscAYGthA6P; P-dart fiCFStOvB4R;een eighty-AE4y-five thes3;inch nOnAUYy5JO;aiCM4;ariCM7dobrCGAhOsi6D9tuBV2;aOoCN2;g5r69P;itz-56IrCO5;and 9UCeOsson schmilBKK;! O;cOn33Kr0NG;roB7M;i00kWoO; kovač,cado avocaBUPlPnO;! f-mAQT;aOe hannah821; Ri Oj coster-waldC20y yezhBMC;buPdOgogCN3rimsky-korsQD;urBMA;kh90Dlg05P;jokBS8tesCN9vuč2HI;hil1EXiOo7V6; Oe de j7IR;bCN5cBOUdel7BJfBA3gOh8SYreCIVsi6ZP;i5WLl8R6ra40A; lauCLNta O;khrush2J7mazep4;iB71on falcC2S;eVg0htO; QbPcoBwiO;ng,sh;irBB0ooCDD;at the3BAc9PSiQof the lPtO;eeC5D;iv4W1ong kn8GS;n the1SS;lQrO;!iaO;! BGZnAV1; Pla O;laBGKs89L;faAIKgBQ6haOlaBGJmanBKVng,slBCC;veCL4w1BL;cy naCEMlsPr reincO;ar7KV; boCADen ratCJT;arC7Scolò 15e14h0Wk0AoO;! 08dem07lSmachean et74GniC95sAtinO;amide Oe;adenine diOmonoO;nucleoO;tiBAG;aYeRleOás maduCB3; 6HBtteO; shO;er619; Otte 8OE;aSbRholofc814kidBOHmPri7STsO;cherC57u5LQ;aOui0VO;in3lliotAWF;rownAAHy0;niBK5ri 77Q; Pe ceauș2KEs Ous copern8W7;anelBRFcageCFXfl9VYpé169sarkoC30winding refn;coug16FpOst7TVwaBBR;ageCDJelCEY;o scarA7Pus;hülkBMNr1GX; UelQi Py O;ba8IKhilton rothsc660;cly6minC23;!baJodeonO–metal hydride0ZI;! O;aOkids' choic6SUmoBOG;ll-star bra9R5nimation A93;antosBB2b00cWdVfTgaC4Bh8KXj4GJkSlaRmPnolHoffeB8TsO;ab1e5BLiriBKHza95S;aOo1DV;rkAVWs2;chEnd;am5roCyrgiCDR;ol3roCIQuO;eB8Yry;i9WXraBNJ;aOleB9C;nn2s1WBveO;! and the bad seeO;dsBF0;osOrimb7;a,trC11;elle07ZijBD9khCL3olO;as Oe9XW;brSf60IgonRhQiBHYlPrOspADT;al9P1;ati25Lyndh5AM;am91NouA8E;zalCEF;aCKWi2CJ;haCD2neAJ1;machiavAXTpaga410; Qc4gara2STll Pmh O;a9LMmc7ZU;fBJ9h9R2;dOjBX8lo8;acBI3;kSl O;heritage6VPoPstadiuOwintY8;m ANR;n tC4XutdoorO; gBK8s at lake t7OI;! general B70;lOt;! O;on QplayPregular 7HVsO;couting com8WLunday ti8SX;of8HP;cAPSfBM8;-BR2a4Cb4Ac47d 45e40fer0J9g3Wh3Ui3Jko3Il3Cm38neh 37o2Up2Sr2Qs2Nt2Au1Yv1Pw06xQym9zO;ha,ukO;o kamaBRQ;on,tOus moC9R; OcC0H;dutchXgeViRlQspPunO;ited kingdomW;anR;evel ch7MZibyan presidentiW;ndQrPtO;alP;ishR;ianQ;neration air dom6AErO;man fedP; genO;erO;alO; elBCY; W-ageB5Lark liberty C85castle upon ty6eB7Wfoundland and laAUTgrUhaCKMli6sStO; Qon's O;cr7Z9lawOmeCJ6; of universal graviB0Qs of8II;gingA6GscamaBCX; corpOmBW6naCFXpeBGK;!oCFV;anC2FoO;unC93;a0Vb0Scal0Rde0Pe0LfrAYPg0Kh0Ij0Eki0Bline7BOm0Ane1B5orleans08s04t02w01yRzealandO;! O;film4SMnational O;cA0FfBDYrugby union BE0;earUorkO; O-7MQ;cityPd6BWgiWWisl9B4jeCFSkn9H2metOpoCGSrNMs8V5unB1Uyanke3;rA3Ps;! O;c3KVdraft r0Ffc,police Os9FZ;commissiB76de0JC;! hon2Q's O;dKeveOre5WHsC03;! iAZ3;aveB4Yorld vBUI;eAHDhOr9GT;ougCGR;inceBSToPpO;a4ri8;uthO; w7K7;! O;pelBUPsa89G;e7KMo2;dsOnNM; on thO;e bC1F;aQerseyOourney toCG4;! O;deviCHC;ck s6NXpan pro-wBB1;a599oO;l4DUrizoN;i9M1uinea3LB;diCEVnglandO;! O;patrOsCAW;ioCEX;al,lC6QmO;ocraticCCP;edAQB;alAXKrunswickO;! neurological syndrome of unknownO; c7H8;dministrativeOge,msterdCFW; c6UP;aCH0eSiO;lle Os;chBG6lO;ancelotOongbottBY4; g5NR; 7AUrO; PlandOmiCEV; r17U;been ki8LLgonna give you C0Dmind the buzzc5O1rarely sometimes alB9Xsay never1QF;châtIrUschwansteTtrO;al RiBQ5oO;nOphBVJ;! O;boB8Zst9;cBRBmilk3AX;in B7K;alRoO;-linguistic67UdB09loBRImaC7Xn,plastiAPYs9SMtO;iBQPrO;ansmiAJG; nAP4iBI0; YbXcC3ZeaCGRflixWherlandsUscTworkO; O-attached830;address transAYZf8CYinterface QsPtO;imeBZAopoBRA;o8Q3wC6L;coN5;aC6DoACB;! O;a0R3in8T2naBBX;! aBW1;eaNoC8V;iOne82F;ncoCHX;aGpr50Ksun dorCA8tO;lé,orO; makhBPFiaC72;iC2Okonda paarvC6Inst A8Fo,vO;a,ou9W3;alOhilBVRoAWNtu6;! s8SXi BQB; 8WD-YcVdymium magnCE4ge6lRm,nOplatoC6X;! genesisO; eO;vangeAWR;iPoO;giC87;be792thicO;! 800;lassicPoO;nservaAWC;a3Q4iC82;assyr4KEbabylon4KEnO;a508oCDO;ch8EF;aPesisO;! gBGE; cOtoB4Y;onneC3Y;lRson Oumbo nucCC;dilipkA4SmPpOroc6AJ;elC9Ri9DK;andeCGR; tiger Oie bC1Vy furtaBNZ;frC8X;paG;ghbXlO; Ol blom62S;aUciciereBDUdTgSha783pRsQtPwa565youngO;! discography and8JT;enA9L;edaBLWim2;atrick55ReaCH3;aiman8M9orsuC5A;egrasse7BAia8WXruckBZ6;rmBDHs33;ouCEU;a Oemiah per1NK;k11DshC8Z;aProO;!ni;sonic teenage warCCHtiveO; binomi0IC-index metam8BG;d for speedQlPm karolOnYFraj65Kt;i BXX;am kotXAima azeB8N;! O;heC25pay9QBrivaCEG;beOkBULlXZ;atCA3;ar zad8I9roO;m8A7nomADFp6T2sFtizingO; fasciAMU;r0GPuO;chadnezz8RBla award 2TS;l Rnder4B8politan Qr-O;deathOearthPVfield 2GF; experiCDR;no77Tp7IX;cas76EmPpurvis and robert5IMsO;ch2te0X6;aupKcdonBSU;aa division iPt dOuti gatBK2;iC83reCCZ;! O;football Omen's basketball4D8;bowl sub9YRchBS2;a RcO;! sPsn,uniO;versM;p9BTundaCX;all-staPfiA8UgBRJm1Hon O;abc,es4TDtBZI;r BZY;a4Ib4Hca airfoBSOd4Cemyeong7J6ftali2PMg48hua9S3i47j46ked 44l42m3Wn3Ao34p31r2Ps2Kt09u07v01wazZxalite–maoist insu06ZyWzO;aUca8TWgûl,iOneen con3L7riya nazBTN; Osm;concentrationRgeB5Jhuman experim62EpC9AsOufC7F;aPymO;boAZ5;luH; c795;nin boniaC3GreBXK;aPe2iOpyidC4I;b buke7rah testi8Q0; 7FRntAEI; shOuddin sidd7OW;arABR;aQeOier–stokes5AOjot singh sid9MPy14R;enOl,r; a6FE;joPl OrB;battle of guadalc4ZBmi6ravi2LH;! 7D2;ghtyBPYru,sC98tiO;cal 7OUlD; 1Wa1Ke 1Hh14i00oYsuXtō,uOyCC2;fian821rO;alOiC5N; Oi9HX;born kSdC4Ve2RUgCF1lQnuC98rPsO;atel767ciCCJelB7H;e6PNuAQM;aOoga99W;ngu5UFw;il9RR;ki hanC0Wme sōseBXE;! O;bombing8IXjoint military symboBNUphonetic AAD;onQvO;e Oi2ZB;american4N5hawaiC3S; 0NalO; PisO;m,t congressC88;a0Ib0Hco0Fde0Cf06geographCF2h05i01lXpTrPsOuniversity of si619wrestling5AD;cience fictionAR1ecurity 7QFtock exchange A5P;alBZ9eO;gister of historicOsistance front o2A5; plO;ac3;arOeople'sBPB;kPtyO; of 7QP;! s9D9;ampoon's Peague O;nBPXsBQ3;christmasOeuropeanOvaBE2; vaBE1;dQnstituteO; of standards and 62Es ofO; heOT;entifica9HN;ealth9CZocAX4;asc7FCilm rSlBJDootball O;coAY1leagueO;! mO;ost valuable playerO; a8DO;egiA57;bt7G6mocratic O;al59OpO;arty7BR;aliOllegiate athletic7F8uncil of proviCCV;tionC7E;a7F4olsheARR;nthemBA2ssembly oO;f so0U9;ofC2Gs9WC;aOuram godCC3;lie XnO; Qiel O;cOhaw123;halobC3O;aRbQch5fOla6;iOorB50;e9VMlASJ;edford 46RitumazaCD0;ké,sO;pi7CN;emOkeACA;manuI;bu2M7dPne824rO;oAHJueCC8;i9O9oB0P;lTrajan chandrasekBCLsO;cha Rha Oia de219;bed88Sgregson wa52Ahens0C7lPo3V2rO;iAIKothB3Z;eggeC1Eiu bord0D5y7X7;kamp1RDmcel4H2;iOya neidC5Z;a Re O;aB04co7do17VgoCBMho9ZTimbruAF6mOportmC6Fsc2OPtr1woCD3zC71;a72UeO;rcBO0;dy0teBYB;king V5loC24wO;olBUZ;! C4Ua,carRd9NNeePh equilibriBXMim pedrC8OpeCAVsOtassja ki79Y;er al-attiyC2Xim nicholas tal9TH;m hOruddin 1F;amC80;! cu8K2;cVdwu9enSgis fakhC8Rit36Im0rRuOwhM;hiBUEtoO;! uzuO;maBV5;aBSQow-body4HN; Pdra modiO;! sB2U;chandra dCCIgUC;issPoO;l4XXs;a5IJisO;m,t2VV;aC7XhtB14l3oleonOrox5st0;! Oic AV4;bon2RSdBOJhiCiiBLJ; tōBG6kRmiOya131; Oe513;caBD8ekpe8R1foner gy05CmcduffC9Wo86Vs9ZXwO;atC7Yu;i OoYD;uraBG3yosBG5;a vis6TJcXdSga parbBXRi8EXjingRny m18LoPtOyang technologica88F;es,u8JY;mGYrOte9M6;oboA8P;! m8ZT; BRWaOo4DS; Qmuri O;balakOharikOkalyan rC8U;rishBXA;de9VR;iYy O;abu58OcarWdUgrace romanTjuv0X9kRmPpeloC2Ire9TUsOtrBF3waB14;h68Vin9HBpu5WJ;arc5TJcOe9JA;ke2;an19OerrAYZuO;lp; s2PL;oOrAYCuss933;lm1w;eCtAKN; grALG; SaRco,eOibAkoong m4ma m5ZMor;c5P3s O;and titles of jesus A90of O;godL3j75El0P9the days of the weB8H;haBTKsH;joo9IAyoon-AXJ;anC9FoOtreO;xo6;aOl58V;nd af5RFt4KU;ib razB7Hwa nimC7A;roA5Wve bayes classi5QN; hammadi82XaPinaCBKoOpBRJ;rno-karabakh185ya; OlaC78saBTN;chait25WmunchA1L;ezhda tolokonAGRhim zahaBYLiOji jBX6ya sulAR9;a Qne PrOya hussa4;shC14;cA0UniT8;boulaBTJcomăneBA6;haan rizw1y keïCBB;cp;grC7SspAIU; BH8aOMbs AWOcO7dO6eJ9f J8gJ4i9Zj9Yls nextBQ1m9Xn9Vo4Jp4IqC1Yr4Es49t46u12v 11x BQAySáRädchen a64Kåne7SPéPónica 2HWöOýa,āori 3BTỹ lai8YM;bi95tley crüe;lanie lauAYWnOtF;age à troFièreAXT;laB7Jrio jardI; 09a07c02e00kZles YntGoWrVsRthO;!bPic Ori movie 3R8;humanoiBZIqC57;usAIE;oBpaC9Uql,tO;!erOiBIU;io,y O;fiBUSm5;na lAY4rh;cardiOpA;al infarcC61tF;gAQIke7S2;elti wXJonC24;lodysplasticBTWrs–briggs typO;e ind3K6;eQoOroft7WC;bacterium tuberOle pruiC1D;culAPQ;liBUZnaeO;!an6P7;nOsthenia grBDF;ime6INm9na buBMP;b08c05d04f01girlfriend is an a3D7he00isekai C9TlWmiBZYnUoSroommate is a gumiB56sRtQwO;eek with marilB8Iife and O;kiBYW;eenage 8KOhree 69M;enpai is annoAE6o-called C9Pweet 2OO;ctopusOwn private i5DG; teaBAO;ame is Oeighbor to92W;ea9CM;eft 9TSiPove from thO;e 5ML;fe is ANFttle O;m49Gold7KNpoB4Y;art will go 2ro0CK;aOirst girlfriend is a gM;irOvorit3H3; laBSN;arling clem83Zinner with a5GNress-up5I6;hemical rPousin vO;inB4R;omAO1;eOig fat greek5T8;autiful dark twisted3GKst friend's5T7;barag9FBdoña p9KGwilhelm gust8IJ;a2Pc2Od2Ng2Ih2Cjahi15Ak2Al1Mm1Fn19on,r0AsUtPv-luv,watallOzzle b8ZI;i C5E;aC4Ziny on the bRsuhiroQual O;assuredA6IfuC5GinO;fBKStelligi98P; w135;ounC2W;c02e01h00iUkTlimQsItOée d881;aOel6X7;fa kemal atatüC54rd6QX;! Os;b9XWconquest of pOsaliA9MwC7P;ersA;et,ox,rBUP;cOkve586; Qal O;fiC4Ji8E5notOt88D;aC4Ke;ch9LDg4DMiA05of the harry pott0CEtOvAUL;h9RBo be murdered C41;isBWGoku L8roBO5;s,um of modern09W;at,le6R9;a0LdRmanA7YphyQray Oungakkai4AV;bOroth92Y;art1WM; b9C5'sATG;erPoch O;faB04m51T; oPs of O;abigail williams and liberty geAV9chris kyle and chad littlAJSwilliam and patricia wyche7J1;f On the orient8JQ;a09b08cassie jo stoddaC8Pd06elizabeth olt5g04jYkiWlaci peBN2mVrUsRtQxxxtPyO;etunde3OTingyingJA;entaci2;ori stNWravis4J9upac9UB;aPeOherri rasmu8TQkylar n8NFtephen la440ylvia li7GJ;leBTSth 9UI;muel paC20rah eve92L;uth pelB9Yyan poB5Y;eredith kerB92uriel mBQO;m 4JXtty gO;enoveC6O;amesRerry michaeQoPunO; l4ko furuC8L;hn le6Z8rd132;l 8TT; buO;lg0;abriel0G4eorgeO; f667;ee dee bOora b505;lancC5P;ianca de85Robbie jo stinBAB;hmaud arPnO;a kriégIni de348;beL;d i3EImaBPE;awar faruqAEEgShwa b9O0iOmun d0NU;chOshk6V1;! O;aOm8VJ– the edge 3T8;g3HZirBXI; BKPo j84O;bQmPtaz O;mahM;ers pa9R4y;aiPleO; rA6XcoB;! O;city BAOsaB4A;atBP6e,led 8UMshi4JOtiO; theft9FX-05c02l00meZnWplQtiePvO;ariate 092ers2VI;r 9ZC;ayer SeOication2BC; Q-cOx0;amera sO;etBOX;citizenBJDmye2TUsAMN;online battl6WRv01;ationalAPQomial O;d8Z5logisticO; reA08;dAt0;ayer percepOingualBT7;tr2;ast PulO;tu6YF;a3N0dN;armed6XHcore prBRfactor9AHlevelBIFpO;aradigm2T7lO;ayerO;! vO;ideo BQZ;ba8den7FQesh O;amADWbansM;ammadOteşem yüzyıl; O's w806;aliPiOnasiruddin al-alADTof ghC3Axii of g4WEzia-ul-h9HH;bn musa al-khwarizBYMnBVEqbM;! O;jinnBWPof52A;gRhal O;ar9YJempO;eOiB;roC4I;iNsy bo4LT;!dy waAE7;h ado about n0TOus;mmarOy thBUZ; gadda1QB;s ocePvO;! video music AVT;anBY0; Q-dBXZcPnOx;!bc; cru6F5iC4Q;achille lauBUFdhoBVTeO;stADC; Qap,bOna94Qs d7XQunal t9RZ; 9IZeastO;! 3ME;huBMXinbet2JT;emba 9ATho tutu van furBO0; 4Ya4Xb4Rc4Pd4Be49ff gide2g48h3Vi3Pja3Ok3Nl3Cm37n1Qo1Hr0Ps0Gt06uVvTzO;aRillaPzO;arC5F;! O;f1O3th448; bint3TSmb6SL;eAXHiOsar evloBXX;eV5ng9JN;lin r0X4nOssa sissoBE6;i9UNtO; QainObatte8QO;! Os of97A;dASCm5P8t7H8we9P7;aSeRfuB6HhoC5OkQmaunganAC6oly2QRrPsinBU7taOvesuviDwhi2X2;kaBU1m8EV;aiBK5uBYO;ai3C1ilimanjaBTS;lbrDtBQVveAR3;r9FUthBX7;hViRoPtOörh3BH; the hoBBTe-and-bailey995;maBXCrOwn;c7NJoC4W;on OvaC0X;capBS2picture O;association filmOcontentOproduct582; r793;!erOm1ra; tereBMQ'sAHMb89O; d77DaBQDcoSes QfC1Hhe day1in–nagaBOUque–cathedral 7ULsC0Zt Oul;common words05NdOeligible b0SLlivableC01;angerou4SN;brings plenBYPinOma805; iBTTgrC1Y;viBPSwO;! O;kOm5T2theater h227;reBM8;a0Cd0Be09fydd08gZiXmonBH7occo9YRphWrisVsA7WtO;aPen h626gage lo1imer sO;ac2TW;lOr and peATW; PiO;ty AM2;kombatOs97R;! x; chestn9YTon2X2sE;eDi6;arty the pat9MLnga oleO;ifeG;anPeOoBML;lloNnthau 9HP; PaOe pola71M; 2DOtic6DW;britRfQle fKsOwaBBH;pOta9QH;eBR1urBMC;airc5O2reeB66;taAZJ; claC09;cambe andOna bacc8GX; wiC2O;echai haBI5rBZH;liBXUrji dPviaO;!n9VT;esBSR;d7miNnRrO;ePsO;! 2XY;'sAOS–penros2J;! QbyA27dance dA5Xlite bunnyr0T4riseA07sO; of Ohi6t7JU;jup4BJsa85Y;blood4BRchae335embracing5O6ga73Nj15GknC0WlandingOr1B4z6QU;! conspiracy theoBV4;a0Yct2d0We0Sgo0Mi0Jk0Ho0Broe d0As04tPuOzaA0L;ment A2QriBMD; b1NT-saint-A7Sana01eUgomery cliA8Fhly girls' nozaki2K0pellierTrRserrBPGy O;hall8NOpythonO;! and the holy gA14's O;flying circDlife of bBMS;ealOéal–trudeau BRE;! canadAH2;! hB70; Ql vontavious QEnPrrEsOvAPA;quAE4sori7FK;egBRU;caOki9N3mar8X3;rloOs94L;! O;meC28tree 87W;! C0R-8N0; pubFanBL4o2tO;aAMEerO; P's B61a delic497s OvBNV;aEAunAL4;gBKXhunterOmusuC37;! 8R8;octB6S; no aBVAamine oxidasScRlithQsPtO;hSQonic BO2reC33;odium glutaBIUpaced foBMU;! 9CA;lonal anti1KIyH;e 4OZ;!ey O;b1Y0ki8selfie copyright 0NF;ca Osm,tor liBMV;bellB25galAPGlewiAZ5poA40raOs948;mBH3y8BK;db,lOoC1B; QiaOoC0Bs;!n O;laBBCp5B2sc9YL;emBO4invasionO; of4QGs 28N;ro,tary6LOyO; ObaC;h4PWlaun3J3suO;ppBNC;aOelezAJO;y nightB58; RcoQrchOsBWD;! b1Z8i46PyO;! 2HW;! g9IG;lisaOs9QE;! s7C3;baBJYentRina mustehs1mie deaAO0oO; PlaBYHrdica charantAtaO;rō;challenge139hirBQX; of inertA-generating BN6um;aWchat doBUIdVecular b9NAièBlRnQoOten salt864ybdenBN1;ch,tovO; cocktaBF4–ribbentrop 3M4;iya3JSupiravBYE;usAR2yO; O'4PO;ephraBG0go97Qpa8T1qB91ringAZXsOw3VWyAIL;ha6T4iC0A;avAoB0W;r Oss3;concentBXKmaC0X;a pC2BsAQP;ng9UIve9M8;rOssa8M6;aOé4E3; QiO;!ne damoO;drBX1;kBFVmactag1U4st9RG;aQenjo-daBQ0iPs scale of mineral hO;ardC0M;nder0JAt raiBN2;mPnOwk B81; 1SIl18K;ed TmO;ad Red O;bin Ovi of morocBNQzeeshan ayy8Y9;rashi2Z9sO;a8NOulayATK;azharudd4hasna4reza p4BT;aOfarrah aidBYVh3GDmorBS4s115;l-f9V1tC1S;a4KFwBPZ; 7Y7bO;us s3MX; sC0NafinBE7bDeTok,uO;lOs ope4SJ;aOo 8HJ;r Oti2;a41RmultiplicativO;e invBLO;l–view–Um,rnPst mO;ouBZIussorgsAZT; Pa,iO;sm,ty;ar9T0display of the confederate battle 8KSfPliberalism 6G9monetar8OIpOstandard 31Rt1L6;a3LAortfolio 9JD;aASFlat earth bel0Z7;co5VviewmAL8;edB0Qhi,kOtezuma BWW;ingjKuBS4;b7ALile Po AQDutu sese seB9AyO;!-AAK;aAW7de8ZPoQp44RsPtO;elep8K1;oALKuit gu3M6;per74K;!b,i;dao zu sBO8gi8LWha5ZH;emoOist1ZT;nC11sy6;orpg,r8Z7; 1P5ölnBWR;a8Lc4Qd45e44g3Yh3XjB38k2Xl24m21n1Ap8Y1r0Ys0AtTui,xRyPzO;k9WUorBXErah9OH;aOuki sawas2N6;moto m1MKvi;aACAedO; ma71D-iBRX; l9YXanBQ0chZe,hXoUragyna spec467sOt romnEzi gaynBWY;ki,uO; RbishiO;! O;ecWGgBHYlancerOmo8E3out044pajeBOI;! e7IN;muSN;chondriOsFt3C7;al Oon;dBLHeBPB;raBM7un chakrabO;orBTO; Qell O;and weA9XtrubO;isAYO;gOhedBIMmcc6MA;l1SYrACB;an0Ac09e08ha899kel spil8M2o07sRtO;boBP9er OletAMJress of the rob3;carto2nOrogers'BZU;egaBFX; YiRouriPy O;elBQTperegrBKE;! O;compromiBY3rBUJ; py7ng TonRssO;auAWFippiO;! O;b5QUrBUFst9SF; maOary 6Z5;j8ODngM;square4VBwhite womNC;e06Afisher's murder4SLkobayashi's dragon RmQpoA0IsOuBJYwBY1;a4B4carlet and the duB11lO;oa6;aB91oneyp82V;maBWS;!gyAUIphA6J; enAN-en-scè6;ege6X3ha ba6P5;dLth65G;!aTcea Seille enBQYiam Rko cro0OKnalini9J2rorPtaO;zaAGM;'s edgeOless5EH;! cat74Z;hA4Vmargoly3riAO4;eliaAMOmo5Q0; RcQge,mBAWnda O;cosg8ARhOkeBS4lamBHHotBGQriA4Fw5OM;aBZ5o7O0;aBVPle o5YP;fu7YNnaBV5soO;rviB6E; 0Ca sund4AIced2K0d0Be06g05iZkYnSoPsOt 3O5;k,trel 6DE;an Pr OtaBF6xidBBQ;arQHleague bQEs8WF;c67FerupBUD;al muraBPIePie O;drBTKmBX3ripe6OL;apolisQsotaO;! O;north83Dtimber5YFvikBVFwiBX8;!–saint paulBM9;!a1I9owski6SV; SclBAPmOstryBVT;aQum O;spanning BMJviable310wO;age6DO;liBOZx;displayBM9h9VD; d9A1-na w5ma gyabu sherB4Kw;craftQrO;alOva mcgonMZ;! oBB7;! O;dungeoNse9WY; m9XLanB63fulBX4geAV9y kaBQS;aung hlai8mO;inBV3;e,i O;k9LYndiOroBQS;weBNQ;a0Cdred giBW1e09f,gram54Witary04k03lSoQton PwaukeeO;! bACO;ber7f4PYke6IF; Orad dodAT4š foAKM;giBPJventimiA03yiannBAX;aWeRiOvina de1y sh8RQ; vanPcent simm92Be bOm2Ron dollar BIVpeALH;obby8ANraBGU;ilBOL;nPrOt; columN's cA4T;ar9CXniO;aBVNum O;actB8Lprize probleBVW; jovo8TJrd O;fillBQSmi55D; tBRMy9UP;! O;budget6ZShistory of Po8S7rankO;!s3I7;italyOthe united statesO; du1JS;s Ova marB1Yy cyrusAQM;davOjuASTm4GHteBOG;isAQK; kunA71nOp zaveBTE;! Oa vayntr8U1kovitch cy9ND;ca7J9kunOmalpensaBL3;deG;a0KeVhail Pi matsu7I7lós hoA8SoO;!y1;bQgorba1SUkalPpopkAVPtO;al,ukhacheA99;aA35in4;aPulgO;akAVL;kun4ryA32; Pl arteBXEy O;dKwK;and the me6OCb8Pc08d07ehrmant06fa05g04h02j6TDk01l00mYni82JoWpUro7L9sStQvPwO;ebBMSink40B;arshaASMogIr7NJ;he headless 3O3oOuB3Sys2;dd,ml4;hOi5FG;an7YNi2HP;aAZ9enBW0oO;mpAIFr5Q6;'hOl6OVst9X3;eaBM3;arBP6cOuA0AyeBUO;caA86ge9s25E;eiBQBin6RSoBLT;ri76Z;oOuckabBOB;lm9HLwe;le6NJunBFH;iBT7r892;ra9QK;!e8JKitB1C;aOoA2R;usE; PelO; pers6JOa shiffr4;häkkin5zibaOE;aly csikszentmihal9D0oB2B;hty Ros,raQuel O;car5CKdOf84herr7DYr3AXsapochnARCángel félix g0DL;e cervaAJ5íaz-c6JZ;i6tion2MX;morphin power rOwBSW;anBOR;ruko-BLNsha 9EO;-06a05dleZf9E4ge uBiYlXnight Uori fr6BUriBE4sStowNZwO;ayPesteO;rnB4N; O-4ED;a8IWgAUX;omOuAIG;er 2PQm9;cowbAJGin PoB8QrBV6sO;oNun;pABIthe switchg08L;if60K;!an; P-earth46Em8YNsO;brB8Dex;ag3c41PeQkOnaBVJsc9B6;inO;gdom 4R8;aBSAngB67;s,zAK1;aOcentury mo1OS;tlantic acBF4utumn8N9;a3Hh0Ok0FroO; 6HJ-0Dc0Bm0An09or3FPp07sPwaveO;! SH;coBJJeAGVoftO;! O;a00bi8cADVeYflightAD7oWpUredmond ca2GGsSt40XvisPwOxBGO;indows5LJoBT0;io,ual O;cOstA65;++;pider solit8H3ql9TUtOur9S1;oBuBMU;aiBESowerOro282; 9PRpAVE;f2F0nenoHutO;loBLT;dBD5xcO;el,hange9TN;cOzuB;ad1X2cO;eBTTouBEK;enFho6rO;oc4S2; 5IZesA;etB;ephaBFFoO;ntroBLR;!starABQ; Uey Oy do8KX;c80Jd8VMhGWmProOspil95R;onEurAW7;a55RouseO;! O;clubhBSWfunhBSWmixed-upO; a3AA;fOja8ITmaBSHroBMWsc15Tta6RC;le0R4olE;a0DeViO;el huiAY7ganPo O;ka64G;! O–ohio stateAWW;staOwolverin9A8;diBF1te O;spartaOunAC1;nsAWU;lOál2SJ; 03angelo02e 01inZle Oson–morley510;bXdockeLfWg1Q8ke7VYmUoTpSrRtPvi9O7wu,yeBA8zaO;un0;h9UErO;achtAUBiola m5XV;oAR4y1;f5J6h8H2;baBM7d3QQ;cOo7I6y1HT;coBT7nAHB;ai74Borb3;achelBQ6r0IY;! gO;uiAHE;baB8SlBLJmorASX;! antonioBJE;de montaTOfouc8L6goA0Qhouellebecq,nEperAQX;elOil CF; Ra Ois–menten ki4F5;coPstraBJ8wO;at9ZE;el,nl4;a1Jb1Dc16d12eiBMJf0Yg0Th0Ri0Pj0Nk0Ml0Jm0Dn0Co0Ap04r01sUurBR7vRwPyO;ead2oBPG;al547eatherBE6hiteAMDiO;n9H5ttBBR;aOiJ;n geOrt1;rw5;arnTchuSe89ChQoPp1F1tO;iBHIr7V6uhlbaBC1;rrYP;a6KBeO;en,llen;maATYr;osBBP;apaBH0ed3X5i9MPoO;c5MEok0senO;!baBDV;aQePh1IYiBK6oO;ll1rt9KZ;nn,terson6Hña;ge,l4rO;enAFHkO;iBLDs;'Oh0liBRBw5;d5A1k1HJ;esB1PouBOWyqviBPL;aRcQoO;orOriBME;coJe;elhaAV8i4XNke1;ds5liBRYnOsi;do,n;aPeOindsay-hoAG3;arnBNVwF;nd2udrBA9;am5eBK2oBQL;aOet0oBPW;ckson4JEi8AN; 7AHmperioBJ9n8BFrO;on8BEv4;aOutchBPY;neAU0;aRiaccQoO;lOve;dASLenieA30;hiAZS;mb5DGnd1HL;aQlPrO;anzeBQM;a5DSyBAI;radKssbendBAC;eQoOukA1Y;rOuglasAV4;m1n; luAGYll;ai5GXeGhSi41ClaRoPrO;awAI0ic6ZT;nOrl58A;nB61s12A;rke1NTyt2;aOe,iklF;b2nAM6;aSiRloomBAIoQuO;bOrL;lé;lt2nd;e96Js78G;ll,y;lANSnO;ga9NNsaG;!h p49V; SmiOsma 99Y;! O;dolp4F0hPinternational aOm9B6viBQR;irBFCut904;eBD3urrican97E;and the white A6Hfa81ZgoB9GkOmal9X5saGtAWMwasikowsAWD;h7KXirs8CY; QmO; Ot;grand403resortsA8D;caBPBm7OL;doB6Jg76Z; 4Ia4Bc48d3Ue3Pg3Eh39i38ko8l2Im28n1Sphistoph8SIr0Zs0RtWxicQyer PzO;cMuzBHBzo-sop9N8;laAND;anQoO;! O;cityBERnaAKW; P–O;americ96I;ar9MBc1L8drugAKRre79Gw5XG; gaBQJa08eor06form4h00life7UBoZrPtO;a sandiford-arA8Ze frede6OO;e,ic VoO; T-goldwyn-mB6DidRnQpoliO;s,tan O;frA5Cmuseum ofRWpoBLGs6AX;id9K6oBQQ;! Ov78V;d1LRfuBCPp5U4;boom4ex80HmaniBQA;pOsy9S7;refB6W;clopra3GCny9LY;aRoOuselBGQylpheni1LL;dOtrexaH; OiBH4oAZLs of computing square3UG;acBQSm1of loAPR;do6m58OnOqua7LL;e,ol; 6SViHoO;id,loAZH;! 13P-6EUboliWcVdaBQSlRmPphOr,st27Ytr2vBAXwin opas-iamkajoBFT;or,y9B5;a9PIorphosO;es,is; PcoBlOo3NH;icaAJGurAZB;ch9HWgearO;! solid hd 31X;og0XIr57U;cB9Psm;caBDBhuggBG8oUsOtiBENut özB31;engeSiO;aPerO; ob230;hOn2J8;! in2LH;r rBBC;a9YOl6ZSpotKPthelioBI6zoBQD;c00edith ZgeYiXkWlTmaBNCoving7BIrQseOv g86Wyl streepARQ;nne Oy88T;p5T7twiBFP;ell6DHiO;ck gOFtt O;p621w8SF;e PinO;! o9DG;hag4V7ob5KO;aAOIle BDP;t99Qwether531; 2HDrs and acquisA8Y;ba5MWgrEha4EOsa509;a02ePia,kBOYuryO; p7A0sAJE;desOnaL; X-O;amgUbenzO;! O;aRcQeRgPiAJXsO;-c3VFlQpriAMCtaAFO;-c3VEleP;-c3VDlaO;-c3VC;! O;gt,o6;amg high performance pOma6F1;owertr9MK;doMSntiA8Ntor9A9; 01aXdWe1HQg'erViUnonAPYsRtO;al OhBODzBI9;d9PWheO;alB71;aA61h809truaOur suljATH;lOti2; c774;ng9VD; z02H;elian inheritA3Coza BC1;! QcO;e ii 875hem O;beg4mendel schneeB3B;mAWLsuvaBKS;aOgoing their own9LTin black BKP;t 9VG;ber stateTeSmingenBCGoPphis O;depKgrizz5NR;i8RGriO;alA10es of Ost;muA27the alhambG;!nto AONti9VG; 6HEs of O;naB66the O;commonwealOu2GD;thAZJ; 09a03bourne01chizedALFiTlon collie and the infinite s98SoRroseQtPunAVSvinO; c603s;ing2ZNy1TW; pB7L;dOra h854xicBL6;raBGHy thor9ZH;lBNRnda Ussa O;bSethRfu6YYgQjoan BH3lA9VmPo'neB13rOsue48YvillaseñBKS;auBCJi8ROox5E7;athAJNc603;e80NilB6K;erB5W;arA8IenoiBKS;di9MUfrench4BE;! O;cricket 5YThaCs7SQ;nPtO;on4;ch1P6esAiOoBG4;a3Z0e On;c,gr9XQham9TKlyn7VFma6DOp778sO;afASQcroAHTyk3;bQfPgiO;bs89Medroyc;err0;!la3FRrooksAPI;ji restoBJ8n ka0KIosFster eBGJ;diRmePranO; karimi nasseBJNga9O2;d Ot 5CS;iv,t0LYvAWR; h0MD; WaRhaOumi ogaBNVyn176;laAVAn O;mOt63;ark7c5RD; m1ciBH0de85AfauB8RloRmiPn Otr2uploBJ7;bN1e2ISfAOKga8DNis misBC1mull5OYrapinAA1thee stalA2E; Ond;tensAUM;d2p08W;foBD3jBFNrOt8H6w9W5;o0TZyBGM;k 2E3nakshi sundareshw9rRsAI9t O;joe8X1me at our2S6the O;f8CSpOrobin5MQspar85V;arBIK;kB8Put;al of h3LXd7e00gar e8QKiOuB4L;aWcReval warm2DTna,tOum-density fibreb7RI;aPerranean O;c574diBJAsBGZ;tion7IP;aBIIinO;al plQeO;! atO; m8JD;anBIJ; Oco9MIfiBtAJT;markt,playO;er5X4;a,llín2OQs;anum wB7Rca,haOklenburg-vorpommeBC2;! anime and0RYgOn871t8LE;odz8R6;dTgan 3UEnOt loAOAve le68U; Oing5ZT;absolute Pg7RFsOvalu3TG;quaredPtr72L;e7YLpercentageO; e7YK;!ow IV;at theOt7WB; zAP2;ma,ou moct9pi; 9DOafBE2cart00donZgYkVlarenSmO;aOurdoA2L;fArtin preschoolPstO;er 9F4; t7H0;! O;autOs8XZ;omoB28;aOennaBKB;meyOyla marA8Z; manBIM;!il7IA;ald3NRnell1SS;hOney 8VS;yiBCG; GZaGUcG0dF5eF1fia5JEgEDhDViDLjDBkD5lCKmC8nAToARpAPr3Qs2Mt12u0Ox02yPzO;da,zy 4YM; Ya UbaTdKeRfQim bi9LDnard james ke30OoOumi t0KCwand district 2FP; clinBM8nn04Zr of OtH;h3G9kings5W1loA12n7UJ;aBHYlB0Q; 0BErlO;ing6UM;ch,nk;anPc5UAerski6forstAAUhOjaBDVrud463;awAN7iAIE;d theOgelAD3; t8AG;bOdKfourth9AOpa8;riBCL; 01iSwelO; coAIAlO; P's O–boltzmann8DD;dAJZe4GPsilver 9CR;c23Yj8PPreBGL; rodríAIGmPne O;peaAMWst9AZ; gTa and miniBDIe vachier-la3P9iQum O;car621liOsubarr853;fe ANCkelihood0E1;liOnus thrAX1;an Oen robes337;i of6M5sc8O5;orAJTun;brBB0ernBHTgree2FHhUiroNju2O6lTmRpQriPstiARZthie931vOw5G7;e0QFon sydBIV;cAQXeme97T;ay6lanJur4UL;a9QKiOo9LK;nghBKGtte874;a7N8evAOK;eadB04ol7CJ; ma2KKde a0O8i,lana k0OZna kBEVrQsO;!er,oleum at halicO;arna82Y;a tieB6Geen WiSo PyO; chayk4a B61;cPf3E9icO;arB8L;ast9CL;cPtOzio2M9;ania9EGiD;e Oio po3GH;che3EOgi9UHr1J7w9TG;constance gAJGdo9QTm0DZo'Ostarkey tigA0N;haGsu4JK;a15ch12e0Zh0Silda 0Rl9B7pB63r0NtO; 06e04hOi nykän5y 8WP;ew Rias O;corvPschO;oenaADBweighöf0;inD;bro8A3daYef8P5fALIgXh9Q2lVmRp7HArhACXsPt8O8vO;aug8Z3;he5CStO;afAA8;acfady5cQePoO;di6rrAFO;rc0;conaugh8E7g2AI;a3FNiO;bat66Tl5L1;ooA7Mray gu0JA;ddAFKvF;l,o berret41XrO; 9S3hoB9C;amodAI4b00cZdYfr1AFgXhaWlSmiAQXnaASYprA94rQsPtO;aib9EKol1QT;erGmiB1Vto6;eADAhu7idO;d7lE;aQePiOo8ucBJR;ebeA6E;b13PinaBJV;fleB01u0;ig,n72NrB2Nss5HO;aeBC5roeBA0;am85Hi9IF;orrMzuchL;eOom0;lOrL;la9ES;iOosAOEyoshka5G7;aB7Voshka bB4Dx O;c397multi598noB6BresO;urre8SK;ii,luBBVt84TzD7; B2NePiO;as ruBG1eu amalrBJQ;matical Pw O;bay9UHh8EE;an9XNi4D0l3LJmA3IopO;erators and symbols in uni9M7tO;imi8M0;o kovQBrO;a,ialO;iB9Ms7OW; Oa;gOpAJC;aBIWroB0N; Oram s571;haBEZ;a0Jc0Herati0Gha and the A2Ri oANUjid al-hANQked 0Flow's hierarchy of n0Eo0AsXtO;erOod2urbaBEH; T'8SVcRs O;of Ot3G2;sBI9the O;aBEZuB39;aBGHhefO;! QD;boot 66Yin theBH1of Op,sy9K6;arBEEb8SXf8SUno6pup5ASr8ZRs8ST; WacTiveO–energy equivalBG5; Rly multiplayer online O;gaBIHrO;ole-O;playi6B2;a7SQopen online 92;husettsPreO; of the innocBDWs of poles in volhynia and eastern ga99X;! institute56K;effectQkillings under communist reg2SIm85ZpPsO;hooting3QRpectr4Y9;r96Jsychogenic iBH7;! legendary2DD;nOretic44V; Ory,–dixo01P;gOm9L5ve8C4;ooAVYr7FX;eeB70;siB0PwoAND;! quattro8U2;arALDuO;li94M;bTda,kRla QmuneOshi kishi1CV;!-kunO;'s rev7WO;chB6J;i Oo no0GI;kBFXsuBFY;a gO;upBI7;-a-9CEa6Kb6Ic5Qd5Pe 5Of5Ng56i3Yjorie taylor gr95Nk2Rl2Lm2Kn2Jqu2Gr2Ds25t17uti16v0Sx0QyPziOía pedraAJ5;a kjellB0Gp1; S-Qada ram9HRlaBDUse O;mizOoue5N5;an4;kate Olouise 62U;and ashley42Do95D;a0Gb0Ec0Del08gaitsBBVh07i4EZjane51Nk04l03mZof YpWrVsRtPuBwO;ick3ollstonec3MO;oOyler72M;dd93Z;ePhe9GEim2teenbu748uO;e,r8AA;aOlwK;co7;ichardson 6YUoBFS;aOi0N1oppins4CF;ge keB8DreB10;g4REteJ;aQcOo63S;cOd63L;ar28Oor7TL;gda23Nll2rvI;e63Fynn rajsk8DV;aOom;tharine hBE0y O;b1IRletour2C0pB0D;arr2opk4;izabeth Qlen tO;raO;inBDK;e9M0mastrOwin9JS;antonAF4;elAV6hA94r81L;a9QWeOoleAFA;rLth huBGZ;liBG1nnOstBDE;e mOi8;acleod3RWo89I; 8N0's theory of alie6EJismO;!–leniB5T; 00elRin O;ga8L5hOmiACTvettoBCO;aOeem9VG;mlisB4YrrAC3; R's Oous marvin ha7OK;guardians ofOmidnightBB6netflix tKC; theO; g9R9;animatRcQenterPgAFGone-shoBC6sOte77TuB0X;tuB84uperheroes secret 9Z6;pr5PCtAQD;i6P2o9B5;ed f3FOi2;f8FAle9TQ; suzuAYS;a ka3O0ha0IiRon csokBG8yO; Or;f5SDrob87LsO;chott0WBt95U; pe460a0AnO; Qa Pe mccutc19QiOs licF;qB4E–h7IA;hingFnavrati3E;a9J3b02c01eberBDQfZgYheXkoB58lVmUsQvan bur5ødO;egO;aaBDP;corsesePensm3ALhOtaB91;aw,e5kreB6OoBG2;! O;and leonardo d2YWfB9B;cdonaB9JuC;aOorentz2uB1K;ndATYwrBDA;ide843n5G4;arrAVXoB;itzmOre9VV;au9ND;aAGMlA29ompAD8;aQorAXWrO;aiOyaAZ9;thw6OK;lsBCFyf9R9;l Pn O;c4Z5man7N5;artsOlB4F;! BAX; O's vineA15;arge91GfOmarcy may mar21Tpl0YXs7PB;ie99O;! UeAABhOupiM;aPmO;a454elB6L; thomBBOlOwn3UF; o2ZWl O;applew9O2fau77QiAD6mclOpl1;uh1;orbiter 8TLr7XO;akeB6MiO;ageOott9W3;! sBE6;esPisO; de 3HQe7RR; brownlB6Ps;i nAD5us labusch6N5;iHot;a SeQoO; 52Cn O;brandoB88veGw5FJ;e matl4ne Oy s7VP;diet90U;g385ma8U4; 01-paul gossela9doBBReWiUov RuPy mark and the funkO;y b4C8;p AN4s O;feehiAZAp872;chainOdecisionAV4;! montO;e carB5V;eOp38N; poBB7;lle f5FOtO; Qing OpAXP;mAULsO;trateANE;capita8H5segm511;a0Eb8Pcub1d0Bf09gatiBD8h07k06l04m01no00pZrVsStQwOz4M9;ahOoolhBCN;lbergB7O;h6W5wO;a4i4LX;aPchle2DNtO;ooAOMro8;lB6OnB6E;oQuPyO;lanceAFVpi5;f79RtH;b0ns2thAMF;h811roksB2Cu6BK;b7r718;aPckiA3MillOothersb7H1;ar,ey;doAVYns2rgZH;aOinn-b7DL;b2H2n7FM;elAYGnopfl0;aOenLoppDuAXF;mi0KArm2;e90HiOuhA0C;e980sh0;aPris0FTuO;d8E9p3JO;cascB5Bvid54Z;dAWJnO;toA8P; lw69Ua0Je0Ek5FHl0Bn03oSsPusz pudziano9O6yaO; takeAHT;a tomAKRha56Xka hPolO; ni7IZ;argitK; Pn O;cot0X6daAFKroBC9;anVbaUcTdr3I4kaBDGlRpPvaO;n37rgas lloAUT;artyOuB1R;! supers7HZ;emOopB61;ieA1R;hal9MSuo9P0;lot9PFtaB3V;dr9ZK; hUa ReO; Os,tte dupain-che8;le8KNpO;ol6VF;abramAHFbay sAAZdiama7F9oswald PpOsiAVU;ic9F6;poB5Y;ink7;li2u he7TYyn O;cham6XDmOvos sa187;aB57o53P; PlOtte har4YC; 0Ala fro7VO;aPc7G3fredrikA97k1MHoOthérèse6KK;f6UOs7SP;ntoinADWvgerAPM; Tdb,h car43Gm-uz-za8YSnO;a RnO;a 8EOe O;faithfuCwO;illiams2;iAAHtr6ZO;bQca7QEdoyle 6TWfa07Ag14UmontessoB8HrPshOtheresa3K2v2VQ;arapoAB9rB79;a2F9esATX;aOelB3P;kaOrtiro9O7;loAB5; helg0KTaTery mB8QinSoPrethe ii69Xuerite de O;c0W1thibouvA79; Pt O;ki7TNrobb9L0;harsAUDmartin8ZT; 551al843;rPux O;he3VQ;et Oi6;aUbrTcA73meB7Un0V3oSqRr3VNsQtPwO;hi736;h6TWudB8K;aAUIull3TP;ua9AT;'b5SWf anjA3E;e6A4oB8X;nn neB11tAIJ;anAVC;of east5M1tranquillitatFwi72W; ko dard nahi hoBC4i3AZuk; 0A-andré 09el03h00ia YoSus O;aure0V7cQfre9RVga5BOjunius brutDlPmOr9GMvipsanius agripAHV;arioBC1umA1O;icinius cra7TSu7E0;ho8; Ps O;rodríguez pantoA3Vs0M;asensA9QbeltraB3HpPrOvan ba0YZ;ubA9P;ierre7TLoloO;! bridge6KD;b9RIcOgay haAI3;laB7BroBAB; Oeline be12Y;comes in like OequinACJ;a 9QC; Qa vOlo mastroiA9Mo bielAST;alladO;olB8N;ducPmaOprouB7X;rceAPC;ha9H4;le6IUter steg5;anRb0U5cPdut0BFm94IrOwe9L0;and3VIuAQ2;hOlotB7CucurBAJ;agaC;dree7W9t7U8;elBAHle,urg O;f915v8OA; 6K9thO;a AW5i AJCon; p8VZleOpa,re595s to the7FKucAZA;! syrASGdu5KJsB9Y; OiB1B;an9EXze6C8; 10's search for meaB13-0Za0Wc0Rd0Je0Ifred 0Hg0Fh0Ci05j04k,moh95Sn01oZsWtTuPx Oy-worlds i5NJ;cAWBlaAJ7; b87Zal5OOel Ofacturing cAJYte bB9Y;fB0IlanziB0AnOpelleg04P;eu0orO;ieA7D;a541iOra; te6KcoBsO;! shri9GH;a muAS0lPoO;n A1Vor ali khan pat7Kur024;augAGB;j b8UNlo rOr9T7sp9ICw9;eiAVQ; villagePa,e98Ning A1Ry O–whitney u 9SC;jac38Pp7HA; t4FH;aAYIu wAFP; Ta,cQfOkka vinay4FNla,pAQKsha koirala,toARK;estOoB8S; destiA5C; PhaO;eiB0N;pixie dream 7KQstreet preac8GF;ra49K;attanOwa;! O;melod5TTp1MW;aOifer8LHo,roAZ5;!neB8B;maAS7von richth1I5;d55Ski-neAIA;aSelQip 10Yol4y O;m6UWpatiOroB87;nk4;a vanObrotAM5; peeAM2;eiB08lPrin Otory196;c26ZorAIJ;a,orAYO;aB95hO;esterPuO; AFXk4HPrA;! aO;irAXCrena7HK;!gementOtB18us;! O;con13Vi2T2;e9YLin-the-middle7JL;in the ironOwith no 4JP; ma98H;aYdouh elssbiKie XlukWmRoru Ota mohandB9A;hosoB7CmPoO;shB58;iyaAGP;aPoO;n,ottyB2L;l,ry iO;nterO;courB7H;! s4X4;eisenhAO0gu9VLvan d2NO;'7J0dy doumbouAGTmABPtaAYO; e7VEaZcolmVd72Fe ga861iTlRmQnutriB4KtPuOwaBé;kuA6Xma,s;!a,esAHDhus8O3;edy7WNö; 7FPaB6Leus maleficOor9XR;arATL;! Ok b32Ln å8WFque thompson-d4PY;emAU3naA2K; O-jamal waAFN;glaPin the mi0SZmOturn7DEx,y9G1;a7E5c9L6;d9ZHz0; zimet31QcVika aroGla yousafzAX8ng13OrAvika moh9KJwi92HyOzan book of the 9HX; AH3aRo-polynesi2ZKsiaO;! Pn O;movement controlGRunited democratic44A;aALEnaA2B;lB5En O;emeOt98F;rg9FZ;ca,hiH;aRePing a5YHoOro; komuAWMto shinkAWY; AGBmO;aA9Wy2TW;rOti; sankr64Eov 54;apahB4Kel9OAorO; Odo9K2;aTdepressSfilm90Qhistocompatibility42JlOnon-nato 59Rprofessional sports leagues in the united states and 7LVreligious grouAINs85S;az0eague O;bPsO;occ0;aseAAQ;ive98U;pp43RrO;caATC;a 02Fd iWka4YUlVmon9U8nSsie RtOze;land 77LreyO;a,i ramO;akrishn1;adB4Qwi9HD; batt7KTeOframe4RMichi bTZland7V3s electricity 8L2z;! O;co2;chi9DPlardA7I;n m4IQ;aYeViTjo8mOogaA2Uōtsukai no yo277;oud aQudO; of ghazAX9ul hasanO; j9V7;bbB7JhmadiO;nejB3C;-maAV2ma mak891rO;a 92X;rshala8JOsh O;bOja449manjr7VZ;abuB0ThaAYH;bhaTlSrQtPvOyaASQ;atar babaA87iG;hir mohamB34ma8TM;aOishi mahesh yoAN1ram mammady9JE;na prat96MshtG;anobisFOia4Y3;raB7K;adheeGda0Aeina tovAX9gi05hr8NTiZlAZAnOpB4T;a cXePolAuOús ver magnúA3N;m93Ds car8UU;siumUtO;! urRiO;c Osm;fOmoAH0resonance ima19Z;ieB5Kl9VK;i O;scheB6T;! sulAVS;arB78;!cOnot AU0; Qal O;creaturesOgi89Imystery 9C0objectsO; in3CO;in3CNjAZ4k92XmikeOr9Ysq1G5;! xACA;!e O;aderin-po6PMb4KTch7I1gPlaA01q,sO;iAOPmiAOM;raB5TyO;llenRW; goe0BOlena a7YY; PrskO;! alabamaARL;ma9C1wO;eB35hi6DP; 0Fa09cap6NGd07eYhVison ToPrAJ6s O;mLProerslAYH;ff investmen85InnaO; O–whore40O;aAIWsO;eb263i72V;be0cawtAVLis9MEpe0KEsquarO;e ACU;aga9YHuOya9IP;baB5OrO;am,i dixB2G; Ta,iGlO;aine pe82Qeine Qine Pyn O;cAT7puAZQ;ka8KTmiAX1ziAY8;aOha6UXma9W1s20O;lbrB2WstB2J;in Om1;aOhe9XL;byB4S;en nfl,ie zO;ie7DT;gSlyn murray o'75TmOn lMra101;aQe O;bovaLdOtussauAUKw8MD;e pompadoAM1u b4W4; b12C;asc9;about9X3gB5Oli9ADmOtv;axOen;! beyond thund6WC; 0Ba08b05d,edon3NKg04h00intoshYkUosRroQuPyO; 4T2's;ahui8HSlar deg83H;e81Mp9IQss;! O;big sALQc5KHhigh si6SBmoOsi6SBve9G9;jaAUKnterE;eOleAYH;nzie OrI;a5T4bOc7C1dA8Jf9SWph7SCs8SY;ezAWZ;! oO;perating5YA; A3HeHinOu picc8CH;e OiAXD;co9SPgunO;! kAJ6;r76Gu8OLyv0;eAN1ookO;! O;aB16pAT8;dPqAT9r2uOw;!lay culk6BU;amA;a2KWdemarAR1ga5YWjB2QmQos xOpAT4;! snow lO;eo4XC;ccPiO;ll0ni;lu8;naa41JsQt,yaO; saO;ka0ZH;ai AAZtrichtO;! 40Q;anand sheeB43ba7VHdongO;-seAVB;'NT-doAAOaHWcd sound95YeCHgCBhaAM1i6Njubl8G9l6Io2Fp 2Esu t5USte frequency bA2Ju08v07yPéa seydo9T3üO; 67VbeJ;c04dia 03e,ft,le 02mZnSoRre,sPtham 9XBudmila pO;avli9FFuAPR;eOo603;nkoiAUWrgic acid diethyla2U1;n,to macA8B;a khoudB0Cching5JIdTnPsey de2JFx,yrd skynyrdO;! 6TS; PdieAK8e O;ch9WGfre7U0;coOred386;l7DLmA75nwK;a 7J2on laroucASLsy fonse9T1;eALAphO; no9ROati9YoO;cyHma;and erik meneAWUlo4KXwagg9R9;cor6QTlitvyA08weB0Q;hAVQoris radN3;iv,mh; 1Sann de lesseAEEbunA2Nc12d0Xft0Tg0Rh0Pi0Lk09l08m06n00o84IpWsVtSuk2VHxOz2ís fi9S4;embourgQoPury O;c9g4KKv7A7;r,t96I;! 9BAiAVC;ePherOz graf schwerin von krosigk; vandAK7aASV;!fi92V;ail iconic770it6LRt;e fi51LiOus;n tPta nyongO;'o;he thiB1B;-class ekrano8GPaPgOisolar2VD;! 5O8; Qr O;c2VBecOgat2IRne64EpA4L;lipB1U;blMLlove3B8; inv6W1en Oinar1VJ;f9F3t1VJ;ar9Q0ulemon athle960zs1SW;a Ye O;brWcVe7PPf41Kgr2DEhUmSnosA0BpeRrock06HsPthe evange5BSwiA6EyO;oungb28D;av9Y8kyOtol6AI;wa9SH;aAHPrL;aOe1UJ;cfar8E8;em9TJu87G;aAL7om97T;acEy1;dončA7IgA4BmodrA7I;gi's m2AYsOz inácio lula daA1R; Oa5TQe ra94U;buñuIgOs5VC;ara514u0FJ;anskOn7XQ; p4B2;er Oh;pistB22;hansaPwO;afB2G;! O;fA8Zh3PV;acrFdiHovico einRwig O;ah8NOboltzAKWgör3XQii of bav9OXmies van der roAR2vOwittgeA33;an beethOon m5BJ;ov5;auAQF; 0Ca06ch2MGh03iVkUrezia Ty O;and ricky ric51Cboy9DPdQfLha7in the sky with diam86WlPmauOp401wor932;d mo7TQ;aw6J4iu;aOe50M;cDvF;b6D1millaWE;nB04y luc2OS;anTd SeRferQlPndSTus O;m48Dquinctius cincinn5HJ;e B2le A4W;!aB0L; 4M6n lavisc953;aAYCdAZ0mo7FZ; Oo pavar6L9;freAHP;a Pino viscO;on9OJ;libB; RsO; OfiAXH;bOcruikshaA1Jd1Vhe7ZNoil758tiCwo8;laJra94M;guadagniA9CzO;ida6;be9YBlon4YOmontagAGE;co9DHd61C;re96Ms5W2;-fi9MUb3Nc3Fd0E5fi 7CDg32h31is 30jb1k2Yl2Tmbard2Sn23o1Xpe1Wr18s0Xt0Uu03vSwOx; Q-pa88PeO;'s,r Ost temperature recorded on8KW;m4COpeAJYsaxo9WT;earth2J7ge9O9tier3FJ;ePiO;e9VGng0P4; RcraftianQrs Pstruck in thOyatAXK;e 98Z;of the r7HBroJ; ho7DK;aQb79IiPnwanOof AVOy4CR;ti9NW;n the moonlAYBt or list AXP;cOlaAO8;tu52W; 0Cd0BiPvreO;! pyramAYO;e3LZsO; Ua Se QianaO;! O;creol2YMpA28;brAR1erd8N7fOle5NDp74Lt8P1woodward6CU;l4JDoAYT;hOjASMma65S;arAU2;a7N1bra9W0de fun2J2farra8WGga41Jh2WYix68VkA3Ple5N9m706pYslXtVvUwa4xOzampeV2;iRvO;! o68UiO;! o68TiO; o68Si;ii,vO;! o68Q;an gaMuiA3A;heOo3VA; p5MMro9PC;ot4;aOhilippeA1UriASX;rOsteAH0;trAIG;on wainwright7TJspe70D;diamond7NMferrigA82gOh4UJlloA2Qpear7MRreAVT;ehr9WOra6Z0; polish627har matthäDtery jackpot8TUus O;caAYIeO;liAYVmiGsprAWT; Qe493s ALBtO; OpropheAW5;cause of the confede8KIdecA07fiAVXg7YEin5UOjFH;angelesOzetB0C;! O-A3R;cSdRinAO0kAX3la9IPmeQpoliceOraAYIt2AF; deO;partAA9;morial coli70Ktro 8XK;odASV;harASUlip22C;az5PBd07eXiUnQrO;aine Oie0IF;br714gr8S0n02H;a Pe O;b6QDgr8NVmiA33;dOlu94Ls630;oo6; Os kaA99;gre91TlOp8QEsiAIH;i28Zo9X8;m ipsAKMnPtta O;deAI8lyAI5swAW6y975;e scaf9M4tz UzO;a So O;dQfertitB04insPlO;amAZP;ig6;e'6E6i bonav2Q1;izAO5;f8VWtAB1; P's Oe,i;prAF0resistance61Q;b6UPcha95Ghur2of OrHSvoldemoAZO;the f4YMw9; de aguirBra2P5;king for alSnQp Ose5J5ti8;heANOquantum gO;ra8OR;a,ey tunesO;! cartooN;asA48; horiA3Mdon02e 01gOi3K1nie don713sdaleiHzGK; T-time nuclear waste warning messA9MePiOs47Vyearby5;nDtu9MT;st Ovity claiAXE;common subsequence7J1fl8RNpalindromic subPrecorded sniper178wordO; inA9Q;stABO;beach ScovAWIislandPjohn Om821short-term 70L;baldLsi4O2;! O;iced40Jserial O;kiAQ0;aAMRpolytechnO;ic5GL;su8EPwolf and c7VL;! O;academy of music andUbTcSe83Cg5CYha983king's crosRpostalLRsPuO;nder59N;chool ofQRtOy909;anstedAMJo79V;s railway9F1;alAR9ityAMH;o3X6rAGH; dramaticO; aAYR;s,y;a QiO;c2ta O;ciAS4fashi2;glau1SUvan wagO;en5; Oi;sab9N4;ch8OLnettl7Z8; keA6ri; 6ZK-YaTiOmein ham3T9os;cQn,stic PtO;!eAMM;fuAJ4re8RB;! O;gaHpAMF;n PrithmO;!ic7VP;inALSlPmarshallOpa8W9;-gA13;e9KOuc9WQ;normO;al7PX;alSh nessRkPusO; ofA3Nt;doAUYed-inAHFheed Osmith94L;c9GFma93G;! m2XI; OhoAUJ;aOgAFE;rea8N2;b91WlawOo23Dst0; compaO;ni3; cool j,aReyton0F8iana 2YRoydOvm; O's 3YEs 6KN;au5LFbO;oc7J3ri7VA;ma,nfairpwllgwyn41D; 5Aa57b4Sc4Pd4Me4Hfe47g3Zjo3Yk3Vl3Fm37n1Zo1Vp1Squ1Prim hajrulla84Ts0Tt06u 03vXzOèAFN; UaRzO;ie Po,y O;ca8AKpat82B;boA42mcg3FW; Ord;kosAQVmOt0AVweAA8;inn99M;a73RcOmi450p6XBtruAW7;aAQCh9PH; SePing O;in the materialAVQsi7OSwith45U; Ple9TErOs1BC;!poAWF;aAUJfree orAUSin front of a studio audiAUMlife 2N8;he9QHmo5R4tA29ullAFD;bA4Dcix4shaoPyO;ifA4C;qi;a 09e03hZre,tOurgic2Z2;le Poral O;c2PGzo6;b9KIcUfTice5GGmiRnightmares9YBrQsimz,wO;itchOom5; ac4UH;ed riding AWUicAUI;ss sOx;uns9TG;eAICoc9F4;aeOhAWN;saAUO;iumOogAQ5uan3EO;! P-iO;on9T;iron phosphate9Spolymer9S;co4rO;aOo8Z6;cQry Oture re55O;moderALKrO;ea9FX;y 5BM;foAU3grE;a 08b06dexamfe9D3kov substitut4HAsajous2DXtO;ed2XBs of O;a00boZcUdSearthqu9NTfRhighest-grossing5FRlegendar1NHmetro-goldwyn-mayQnetflix original5FRone piece475pPstate leaders by5FUtowns and cities in england by 3EDuniversalYv3XNwO;alt disney studios5FQorld heritage s9X3;aramountWeople who disappearARGokémon473;er5FO;ilAUDooAL0;c comicsOeaths by 6OK; ch5XD;entenarAL4oO;lPuntries O;and6W7by gdp;oAU0umbiaO; pictures5FG;llywood5FFx office number-one5FF;ctive separatist movAJDnimOstronomical objAID;ated Oe;feature5FCtO;elevis2T5;eth saOon8DE;la9OC;aXbWdel gioc15JedeVgerrits5hartm4T4jane pers9UGkudrATKlTmRnQrPsOvanderpu91Q;ta0FXu;inAH2obin0FD;ieANM;arie pOcvEur96A;re8W7;isa and cultOop3; jASG;ls9W1;onARTrennan-6PM;nn,s63A;efied petroleum5D6idPorO;!iAUN;! nitrog5-crystal1NC; sync ba5LUiPschitzO; contin5MV;d,zz1; ti9Y9nOr r869;! d99Qel PsO; for lam8ZZgate0BV;b3CWl8HTmesALVri61Bs82B; biA31-manuel mirAT7a 0Tcoln0Pd08eZgXkTseed6HAuO;s QxO;! O;d7N2kernel4LCmiAER;pauANMro53VsOtorvalAJW;a8G2eb1UV; Q-PedOin park9O6trAMR; 53Hin4KI;b9IKlocal2AY;aggre84Jc41P;am,cAIGerASJuO;a fr6B1istic r2FL; SaOba89Un;geAMJr O;aPb,discriminaOeq8LBi7HMm8U5p4K6re8NV;nt 5J6;!l747;i2GOof O;duAOAsucceO;ssion to the britishO; th9TR;a Tbergh kidnSisf5WHsPt,y O;b1QGef7ZE;ay Pey O;buck6LNgr7NAmo5OJs13IvoACT;du8K8e8ZJh8KBl0JYmAD2wa3JK;ap6B6;bXcWeUfiorTgrKhSkRlQmcPpOronstaA0Vtri9PTu7D9;erLu7X4;c1LSm3TM;av4ee cAFoADL;asaRCoz8JE;a9QOuADY;en6RN;moAQBvanO;gel9UZs;ard329hu8;a938laAQC; Os6QG;cPh1UOmOr7GT;ot2SK;a6FZontinentM;esAG6meO;diAFC;aUbSeQiOmy,one6p bizkAQA;na8B1ted O;hango8O0liabilit17L;rOs9MGwiB;enAT2iJ;iOo;c 8V8;!ssAT1; X' WiTlQyO; O-rose de9P3ha9G9pic810;aA0Oc732gA1Jj9SOof the 8SJra8VJtoAAY;ePiOyANA; pa9G7an8YL;! o9WX; PbetBZth,um,ánaO; szilág8AA;el8VDreinAMEta5QD;flA5MkA7D;bSdRj2lQnas9CGpPrel howeLuzi Ow67Nx1yachAN2;veATK;e635u8ZD;oadAOL;ic9S1uAP9;!aAOF;eOud; nastA12lihoodOrt7QU; AE3-ratio 9B8; jose pellisseLmol joARL;a mx,er,htOniHurA; T-RhouseQning Pstorm A32weightO;! directory0S3;m9P2n8ZT;! 8D8;emittingOye9; dio9GL;m6WOnA68raA5Vt6I5; P-cycleO; asse3JK;expect6MOiRoQpe0with O;eOlu90F;lizabeAAU;f 798n5DV;mpris15LnsuranceQs O;bOs7NT;eautif8QW;! c9B9; RcQutenant governorPv sO;chre48N; of pen188;hte9T2;gAA6to ASG;ar,en5C0iOl,oc9GZ;a ba04Rja bO;ač9WZ;ence to AMPhOorice5V4;!eO;n,ss;erRi9Z5orio bello948rOya;ary Oe1C9;gAHLof O;a8FDcA35;aSia,tO;arianQi6yO;! O;leading 2PMm7FRshA4Bun99Y; soc9AYiAIO;ce,lPtion O;of8IJtigers of tamil eelAOZ; OiAIL;arts63ZdemocraPparty of O;au64Bca75Q;cy,tic party9O9; mchuALNm Pngel98r O;gaARTli9;devl4g57Lhem9ICnees7DRo58Vp663;b32Qkeq1IKwenl1IK; SbtO;! O;c37Qdemographics5U0inAGIrights Osy8CR;b30in O;c7F1i9ZRj5LOru9O3tA0D;c9A9e7QF; 51'veo50a4Cb48c46d42e32ft30g2Bh7XWi25l24m20n1Mo15p13r11s0Kt09ukABAvZwis XxQyO; AETlahO; fAKE; luTicographRusO;! O;gs,is,lOrx;fa,s,x;icO; o953;g0thAO0;and clark2LNcaOgAQQha9NSnixon7KBt1;p8RAr91I; VaTenshteinSiPon Oy ro9OV;aro9M3heAMU; bel19WathanO;! O;f96Bw9IR; di5W3;nOr 1PB; saginaINt;kamenAJ8tahANPvygo1HDyaO;sh4; X's Vhal Uitia 904oStO;erOuAQ9; Pboxd,s fromO; iw7SG;caAPCf8YG;! ii atO;re9D6;i2HBwe44P;go bOmake6EG;ra963;him 9EZit bleAM0me be your5QWthem eat 3TQ; 00bZhy,lQot9LTsO;-1V9er aO;nti9SQ;eySie O;bQcPdavid6MReasteOgAOWho6QBjoANZmaA8Yniels3YIph7DPstefaAJ2uggaAOUv6A7;rb6XD;ar2h71Z;e1HYi90HricusAOY; Q-annO; 5DVe O;doANJ;ann3PSgoBma84Fs05N;i1os;clayQinval9COmiséraA2Qpa8OKstPtontons flinguOwexn0;euAOD;roA5Y;poAPL;naean hydGoy O;jethro g2JOsa3HE;idop10YrOtospir95P;echaAPJo9C7; 01nRpOs carA20;aANVold O;and lo86RiO; o9QHi9QF; VaQhard e3VJiO;dOe benesAEE; brezhnAI4as9R5; l4P9rdO; Qo dO;a vinciOicaprioAJC;!–fiumicinoADO;b3H5c6VRfourn9R4la9RGnim9DHsuss5EX;czolgoOe9WEr7GLsp0BItro1G3;sz;sPtolst9DEvaraO;dk9;ay0tr9HZ; 00aXd-lA6XiUnPo8SFsOtA2Lz9AE;!kaAPT;a,oQy O;b2T0h6RTkO;ra8T9;n–Ox42Y;mcc1GY; rPnO;'s mausoleAA8iAG0;iefensta8HRob4DU; Ope;du8VNhOkaAAQol4r9DU;eadEor6;blavatn9KHdeig5X5wis95I; b6OEmQonPurO;!ia;!y snicket's a serieAKN;i8y;and skl9e 2N6;bniz integral4XMcSf RghOla57Ipz9LAsure suit l4FL; P-anne pinOton meeAEZ;noJ;anne tuoAIMbardu9DAtaylor5OSwhan6BW;eri9R5g955;a44CeAEV;a03endWiToOuAOW;! OlAOY;dQmO;arvel super17Sodular buiO;ldALO;c super-vill8M9imA2B;a warsADTon of Pslative O;council1LUyu1;h575m7I8super-h17O; of the Sary Rre 5U7s of O;runet6BNtO;he Oo3N4;faC;crABDen9YLpi8TC;galactic17Hse2B9white sO;na9Q6; noAMAcy of ka4lPtum prospO;er9UH; Sity of Oly74M;bitcoin bQcOeuth344inceAL7;annabFhildO; po5QH;y country or84I;drinking57Xstatus of O;fictional pornography depicting mi5JJpsilocybin mushr2Q6;-O–right political 83D; and right-hand traffAOPwing5ZS; Och,ds,k,leeXProy5VQt,–e1IN;b0Jc0Gd0Cg9JRh09i08j03k00mXpaANGrWsQtaePPvan cle5QFyoO;o-AG5ung-O;ae,ji;eRi5NUoo9C2trasA6TunO;-PgO;-k1YL;b4kyANE;-Oung-A3S;hAFRy8VB;adziwiCe4HO;aPeriweA9Pin-Oyung-b9K6;ho,ju8;ck,joALWrv4;ang-4uPwangO;-s9QJ;an y9AI;ae-m1YAe-342iRoPuO;ng01;ng00VonO;!-A3G;-ADRn02N;acoc9CJsaac c9KJ;aPi,sien loo8yO;e-AJMoAJM;nAFBrvey os9LD;aQix2oO;-9V6ng-O;hAAZwookAGW;-hAF7n5U9;hOor9LB;iALZoonO;-jA9D;oPyung-O;ch8LHhAMN;-y8ULyd mal8Q0; Oa and the sw1g0;la8T7zeppelinO;! O;diAF6i9WC;h wałęA4OiOlerc 706;th4;anPensOron6PS;boACGraA7T;ese Oon;c8UUpe9TE; 09d05gue of 02h re8QGmington s9T5n00p ZrnWst Tth8JTvO;eQing O;l2VPnO;ev9FX; it to beA2Ds of gO;raALR;common mult8OLdeveloped cPsO;qu2X1;ountADY;ed helplPing O;c6ENm50V;essALK;secoAIQye9; O-A4Bing tower of piA45n r1WQ;manufactu9Z5six s4S2;ireland premiPlegendsOnAFU;! w9YG;er 859; Q–O;acidOcrime3J2; bAG6;bA0Hp66V;miche7salOth7EW;on9J4;n 9OG;corbu8MWmorte d'a7KRsamouraï; 5Aal singh cha285b54c50d4Ef387g47hoBi44k3Vl3Tm3Hn2Ko2Ip2Dquon t2Br1Js14t0Xu08v05wWxVySzO;aOio,y4WH;da,rO; kagOus of betha9HC;ano7I0; O's,ne st6RFsla de o5TM;kay kAB2zO;ha8;aA25mAI0; Rless la435rence Os2OM;bittaker and roy no6AXkPsOta5IUwe6EJ;t8W3um8VL;asd1r9E6;aRenforcement Qof O;cosA8ZlO;arge num66E;ag8TCin5O2;biding4B7ndAGH;aPeOrentiy b5R5;rne9MWyan sataAAU;nduAL8r 9OD;danA6Fghing under t0ArOs0EFtaro m3BV;a ZePie Ous nob8P1yn 7NR;an4LZd69Hm3X8;l and hardyAF0nO; Qce Oe powell 6FO;fOha4LIluckin736oli3CI;ishbur4AEox;aSbRc0AYgQh779jaureg8S1lPsOtsAA2;chmidt hiss87Jhuler do72KoutheAAUwic18PánADQ;apkDo90P;e981r7E6;a4E9oeA3T;mb8SHsh;bWcVdUfr6OVhaRingQk6OSli9B0ma8HBnyA9KpPra7GHsan giaOvandervooALGwh09Jzi635;co8X5;endergest-ho881rep2;alls46Br7E0;dPrriO;er,ng;doJ;eAAIonn9Z7;a142urr1;a77Sen5H7ran98BuACL;heO; clouA9U;a mangeshk9eShe,iOrode12Bte,v330;nOtu98J;! Ox;aOch8CJemA67ho5G3la9TEp9SGsc8GN;l8GPme8TM; Ont 6H3ral flow 92Ux;bronze age7CUmi3M2regi7V5show with david l1YK; Yag6ca99DerXhana2ZZik,se hal1HHtO; OpaAJO;action48Obattle of the battleship b21TchAKOglacial UjTkn8D7lAANmeMnight in so9FSof the summer 77Vsu7OZtRwO;eek tonight with john olAFJill and testamentO; ofO; ad4BR;ango in Orain toAKJ;halif9WFp90B;udg9UK;maximA5Ap3LQ;!di9NU;menQpalmAKGvegasO;! O;r142s260;inAKD;a0Bce9FJd,ge06i05k voorhi3ry Qs Oy30V;mOul86Fvon triA2I;ikke881;bZd685e1FPfWhTkSlRmcmurtLnass9paA2FsPthe cablO;e g7AR;aA2StO;orA8K;a68Yi4FA;e34Qi8;aPoO;g1lm3ov0;gm1nAA0;iOlyA3Porte9G7;nOt6AH;e,k;iPlO;yd5;it6MZrd; w8SRan8CF; Qst O;aOorganisAI0;irlines9AQrtificial non-nuclear explosAD3;hadron coll8ZJmagellanicOultraviolet optical infrared surveyAGC; c9ZB; OineTCvI;croftPdOflynn b89Il6IFpu48O;utAK0;! and the temple of os22P;reO;ad9AD;is lazuAAAlaO;ceOnd9D8; P's O;d9I1eq89Z;op3DOt3WK;tiOzi;an8R6;a0Gc08dXe WgPiakea supercluA96tOzaroH;au tomorrow 823ern7B3;ston79AuageO; Ss O;of Owith official statu291;af8RYb9JMca6WXeu9RWi9R8pa3JWsOtA64;i45SoOw651;uth8RH;fa9AKiso7JH;a9Q3ki82M; U-granTed6VTfiCing SlRoPsO;kn79Tli96M; On do74L;calris8PIno67X;i6ocked9RO;at sa5KJpaA12;t 8BS;of QroverO;! dO;e724i9S1;nAIUthe lust7AA;as6F3eOia; OlAJ2;a74QbaShen5GEreQstO;eOroC;pheAB2;d8SCnO;tzI;nAFDrb0ss; Oi;cPdel rey9BOrho9IBtu9PEwO;acho8T5oAIJ;lZCo8V8;arXbQelPiaOonica g8YIprE;!ceA4E;o 9L1; and mu9KTdaTeRorghiniO;! O;avent8SNcountaA6Ndi4SRgOhurac601murcié8CVurD;all4H4;au7KFrt wO; A32i9LB;! c27Y; Ocus al3PC;j9K6od9XD; bahadur sha9JQaO; amar1VP;eQhta 545ot1GHshO;adwe5RRmiO;! 28I;! Oith sta1CC;bRcQd4VerAFKg9Q4mPof the oz8A1supe90EtOv2GK;ah94Kitica96S;ich954;hADNo8TP;aikMeC;d-back 7YAka,la PnOssez-f73P;e5I8ie 3AM;aA8Hm3NQ;a1oTrangOuardiaA5H;e Pian O;me590p9HY;multip2BRpoO;iA19lynoO;miM;morp969s;a08baACMyO; O-in-waiAHP;a04bird6BGc02di00gZhyegy5H8jWlUmarSof the Qpamela h7EGrPsarah Ove3XW;ch4G4mccorquo852;andolph ch57S;bOla9IY;ed3MK;garet beau9PEmaO;la94V;eshuAACouiseO; mo8BY;ane2MEeOusABY;anne 597sO;si961;aga9AAo3LS;anOmitr0EY;a sA6H;hatterley'sOolin 592; l6ZK;!nd the tO;ra8MX;! ni9FRinian to3BFkh;ey cha9ZChlanQock3N8r6U8tO;icAE9ose inO;toler8VB; mu0DP;iaRours of herc902radoPyO;rin9YR;od7rO;! re1RM;! mO;ajoGinoG;bWcai92Jdolce viAGZg8REh952jet98KlTmarseillSni4GVpaRtPviO;e en 8NQolencA;oya47FravO;iaAGW;lA8Qz;aiAEV;a Pi9D8loO;roA1S;a5Z1laACH;ohèAG9rea tar piAC3;hôpital4ORo3CA;-G3aBJbs dBIc and the sunshine 4RMde,e87fc,gb,h7Ki44j a9MHl3Umart3Tn3Fo23pmg,r14s13t12u0Gv0Fw0CySármáRöPōO;haku uta ga71Kki uchi9K5;nOppen climate6G6se0RQ;igs9YW;n A3D;iv,lTm ka80RoPrOshtymA5Yus7NHōiku kan9H1;a s3EDgyz9REie ir8W3sten s57M;go furuhA3NtoO;! O;animationOb28p9X3;! arson6Q8;eSiOo r5;an mbapQe O;je6X2minogueOsonique63K;! si6CJ;pé; Or 6II;a9MUch5KWea984gUkuzA82lTmQpitABKri89DshPwO;a953hitt66Y;an6HM;acOo92O;lacO;hl1;owL;a308uy;aOon naG;k do1Q2me nkrumA5OnOzulu-natM;tung5HQz8F2;aAEGm47E; klux kl1ala lumpurA35b08ch07d8X0iper 6O6kABJllback–leibler div06m05n00omin343rQsOwaABU;ariOha8O3;gaA7O;dUil islandsSoko3JBsk submar30CtOukshetra995; OosFwood99A;a76Yc2BEgödIr764vonPwaO;ld5YTrn0; schlH4neg89F;! O;dispuH;istanOs;! O;re8YXworkers'A8Q;al nayy9chacko bJSda78Gg fu Rio0VBjPoOta kinH;icA2O;ali marOeld9A5;akk9;hu943pAD2;ail nanj8ZNi9A2kum bhag9MTquA0M;ergACH; kuch hot3U1isake-7XH;ern2DQla20Yo and the two strABP; tunstaCm;i,tp-90O;a0Hemlin wall necr0FiVoRs-o6uQyOzysztof kieś83X;pt2stO;al 5OCen ri8FT;pp,skal3TV;g0nO; gPecker O;delAF1p5V6;racACA;egs9I4sQtO;a,hi2OSi O;kharbACLs72N; 02hna01s00tO; novosYaVen SiQofPy O;mcnichADRs4JB;er hiv93Ufer pola936; no96Han wil2Z2n O;chenowe9WEd9HNkre7LBne9HIscott 41W;beCh59Gj7BLsOwi9AH;cOte9HA;haM; Olln0XGnna l2BY;a9L9kosO;on5;elAEM; veA0S;!machari srikk51D;hu7IHje6V8kristoEIma6JKwuO;! sex A8E;opO;olF;ftRkQmpDsnoyar8D5ut9XBvOy51N; ma9ARenO; the 6LM's last 5AG;at8W1en,ów; hei746on,weA9T;aADEb0Wch0Ud0Ne0Lfi 0Kh0Ii0Hj0Fl0Dm0Bn05o03pi luw9A3rVsRtPurtney59wloon walled 8LCyO;aanisqatA4Ioharu got57u9WC;aOori koiwA2E; 5KTk mahindra 60Tt8ZX;her0Z9ovoOtas tsimikADQ;! O;lOw9;ibera4Y5;eaOn;! under japanese4M2n O;aSbRc07SdQem9YWla9M3n5EHpeople's armyPreu1UEwaO;r,ve;! air and anti-a39Q;emil40TraA5Q;roadca0D8;ir,xe murder5MD; 828kaO;burG;aRda p91Vj8BNoPrad aden832stantin Otinental hoc8WC;chern99Hrokosso8PF;n moOsu9UN;lo9W9;miOrk sunEH;! 8G8;aram bhe959b91Wi Oodo 7O9;can't commun7ZRp7SJr91H;a OkaADImogorov–smirnov 8V5;n878superdeep bore1PL;ak,iO; k0MUma 7M7;!ne g7DK;-i-noA9LlO;'s,berg kravis r80Ora87N;a5B7ki9AI;i tec8OSnigseggO;! jes9LB;aPiO; smit-m9Aa8WN;guQkPnshaO;! u9UB;! b7MN; dO;istri9O1; Oi;fa943i0N3m708;ayashi ma1C5e bOoAB7;e5ESryantO;! sexual assault5OA;apsack6WEe03WiToPuO;ckles the echid9XVts92I;ckin' on heaven's5M9ssA47wO; Oing brA46;nOthy3NSyour custOU;ot6RS;ghtOves7MX; R's cross of the iron71Qs O;hospiPof Otempl9;co58Usid8JHthe roundA7W;taA3A;and8ONbOof the order of the gaA5A;achO;elA8R;! 5OF; rah8AAaSeRiOm9IEondike g61PuH;ff kings8L2ment voroshilovPnO;efelt7YWgo8U5;! 6P2;in bo52Hpt7W3;rQus Oy74H;baOki591m9XGschw82Ovoor9U8;de7YPrbA9K;a Ona;and3W3hi90U;a31bbuA4Cck2Yd2Se2NgaA2Lji9CPk2Jl25m18n0Cp0ArZsWtPwiOzuna A0F; fA9Zf6G9; ScRsQtOzbühI;!y O;c773hawk-2U5pry8ZB;ch,u6;hen nightm2LX;cOha6WZk9X9;a9Q5u1F8;hore702sO; OaniABGxsF;diA3Jfrom a 8IOkiss5BQme A4Opr8DA;aXby Wchhoff's circuit53AiVk Sov-class battlec7BBstOti9LP;en QiOy macDN;e a8ACn maldoO;na9I7;dunA84gillib7NA;cPdo646fer5RZhOs76W;a47TerbstreA7O;am46Aou3YU; te ka7C7ba8XSll kapriz99S;howell-baptI8s6KS; buH7n9EY; Oo and the age of wonderbeasA6XpA1A;th76B;d0Ge0EgPm5sOtsu9QW;ey78Pha9SN; 04's 02dom Rfi8R3sO; Pley ben-adA79ton upon O;huCth9A1;isA41of 5KO;hearts48Hof O;aks9VPbWc4GWe9QYfr8PFgVhUiTjSkRna7QCp97Ar5SZsPthe Oy6F2;n78Stwo sici4A1;aOcZZerbAi90T;rd4VVxo961;on8Z1uA2D;e7ITudA0W;reA3Tta9VG;an6TBej7LQun7QE;alicia and lodom5G4re1TF;av8X0oh9UBu6JS;c0GLdiseasOf8MEindia5RZ;e A6M;a793cUdo6W7gTjames 2NRko8le9of QrPs650vO;on,ul9XC;an9YX;i68YmasPsA0PthO;e 7CMo9ZW;k 9SJ;eorge v9JNhidorA0J;a9C0obGrims1T7;ct,s7VEtic O;bombard9KDen6OP; ofPergartenOl0WZ; c9HV; bl9YL; Y's5R0bSc9XTiQoO;no,ra lee sO;im94M; Oko gle9SH;ni todo9BQräikkön5;al SerlOo sA4Pra;ey w3CCy O;guPwO;illiams-pai8AMyaA14;ilf7ZU;mu894;b08ca07d05f8KJgo04h01il-0L6joYkXmin-8ZCn6FBpWri83HsRtae-QwPyoO;-21Io-5JH;il8XHoo5K3;hA1Mri;eQoOung-cheA94;-Oo-9HH;hyA94ye2;-j59JoO;k9HCn-94S;etrA9OhilA4Toss77X;a13i-d7GLyu7VV;ng-Po-O;hA8Yry8GX;ch87Rhyun,il,nA6Hun;ee-5MyO;e-yo2o59Cun-jooO;!ng;-eA8Trd2;aOeMic5HJotc9OP;-A1De-5IZrA4J;rn3tt9QR;a9RFodnAum;lQoOroy was 8HAt;-9CQwatt-O;ho9PM; XeVing Oswitch enga9RE;e9YFin the 3JKjo9ATme softly with his so8of Othem soft9TW;breonSdaunte 8I9eric ga9G3gabby peDIjonbenéJUosamaRsophie toscan du plan8SEtOwalter5Y8;imothy russell and malissPrayvO;on8EP;a 6UR; bin l3Z6;na228;d in 9KFrO; 73Ks of the flower A3I;'em aClA37; 2LBai sentai zenka88WiPukoO; ino9X8; O's delivery77QmoG;cama4YFdA0M;fer suRrOvan rus';an Onan ship9DQsey cle938;cu1CEtO;ie9UFrippi0;th91R; Rada5YLnPs dianO;a 4N7;apping of Oey;elizabeth s6I5jaycee du3E4;aOcu9WHroJ;! mn8HX;assPboOstaA1L;xi8;torrA3X; spor9ABraO; ad36J;aUilafat7XJloéSmer QoPruOu9Z8y094;angb4shchyov9DA;is1pe9ZV;em9TMla9GTrO;ou9QF; kaO;rdas7JH;b00lTmzat chimaA0BnRrQtOzaA67;!ia buniatiO;shvi9YW;ij98Yk9HXto9SV; aO;ca4VL;ed hossTiO;d QfaOstan7X5; bin zayedO; al nahy1;ibn al-walA5Csheikh moO;hammA34;ei9XI;arPibOy laA7Q; nurmagomed96B;ov86X;a2Wb7YHdar4Re2Pf2Ohl2Ni2Bke 29l1Qm1Pn0Uon2IJp0Rr0Fs0Ct0Aurig dr 5L8vTyO; Rboard Qm67HnesianPsO;er sö74Rhawn61Ptroke log0AO; e73U;i6CSl3AD;sig3MYweA4C;in Ol9on 8UH;alejand9VTb23Ac01dZfei9PPgar99WhaA7PjYkXlo9WRmUna9Z3oTpRru7VDsOtancharo5;miPor6R6pacey99Cus9BCysO;tr9MR;thA0W;ai94FetOiet7XDoll93O;er 90A;'l75PweN;aPcki7V6iO;chael15Ot4TM;c925g6SKx8Y4;e693li6;am3onA78;e bruy6i861uranO;d,t;la9YPoO;nr8URstn9PB;a8NWch9ORoO;genic1J8ne,sF;hOsl7TW;a,u ee veedinte naO;dh1;aXbal space5UBeWguelen94YiVmitTnelQose6ry O;co8M8kOpa7LYw606;a2RRe5OK; O-based viRI;densityOmeA5M; esti9KS; tO;he fr9HJ; r6XIng;m bürs4n wo33T;laOt4;! blasters 99U;a arrizabala93FlerO; s0KJ's O;laws of planetary64Psuper6EW; 0Dan6Z2d09gan ashuGjiro t7YnYosha unrest5DAsWtOya; Uaro1Vo yaTuckyO;! O;dQwildcatO;s O;f992m3AA;erA1I;ma7OS;ho8VVstat54C;ho o9DSingtoO;n 6MV;eSy O;chesnEdalg9GVeQg,k4H0lPmOome930ro9YW;ccor3ZW;og8HB;ve8M9;dy Rth O;brana41DcoOfe8WKmoBtobEwi8FM;nnA2NpeO;!laA24;cOfa8XGspac4S3;enter ho516urA4D;all5WCo,rO;a Pick O;lamar8Z2sam7TU;s7TJwFO;bRcu9OQf6TjeQkesEl4TQm7W2no4VPsPth6YDwO;atana87O;ham9P3ta51ugi95W;nnA2Jo8;erLurN;a8P7ono jih5pegowd0ZH; 05e04is,lRow9R1pA3BseOvin gastel9QF;a ballePy O;asb90MchA3Fgra8S6;ri9V8;an lu9Y2en Yogg27CyO; O's0OEanneF3;b6C9cVgre6S6hu,lUmRosY1pQrOsta9HU;e6ZEi9BNoO;hr6E1w9YH;i71Qre930;aOcgi8AG;c8LArO;cIi2K;eb9OMyn9TO;larS8r99Nu9O6;go9NCmoO;nd,oB; okere96Sla;mi3CW;pa8RQrO;os9NS; c9ko nobuZXnYrWth O;brymer5UYcUd5SXeTf0QOhRjaQmo2rPsOu58E;ilve92Y;an4K4i7YJ;c972r8L3;a9HIunter jesO;pe9JG;me9JF;arra4U0hegw4; staOa knigh3QF;rm0;an2N4;a9UEsteinhaD;fiy8L7ir,lavík 9SE;chantTgan-michael kElRm3HGnQpOrthy su0UK;aA3Ling up O;appearaA3Nwith the kardash9TO;an wy9MXen ivory w45C;ey haOy shaye8YH;w3zeC; se8VC;la se4UZnu reevO;es9XW;rama 8TY;a46b41cey musgr997d40e3Zfka on the s57Fg3Xh3Wi3Qj3Pk3Nl3Am31n2Ip2Er1Hs1At04u9T0va,w00yVzO;aSimir male709uO;o ishigu9SMshiQyO;a nak9SXoshiO; miuG; sakura9LMge no75S;khOn; 9CPst1; QaPden k9KNfa862ky,lOvan n69K;a bra9N4eigh mcena8ZC; scodel8ZPk;ca4V5kOle6UEpa6V1;ay men2en3OM;aQhiO; lO;eo8E8;ii,saki9L5; 0Ra0Qe0FhXie Tniss everSrina RsuQt 6PLyO; Oa zamolodchi89Mn6ROusha rocket laun94N;m924pe4Z5w9K3;hiro oto8FQyuki konFU;b314ka806l9ST;de5;cQho5PUl6F6mPpO;av32Wip0o9WTriA2Z;cg7OBel9OJo4XR;a2J7ourA44;arine 03erXie lee gif8TOleen Vman30IoEryn Sy O;baQg6KMhOnaji7YX;i901oO;ch81R;k0t3;bigPcr6O8hOne5SBwa8ST;a7IBu90H;elA1A;h83GquiG9ro8ERsOtu9AC;toJ;ine Oyn win4PO;heRj8F0lanQmPpar8BWry1sc3WBwatO;er90X;cn8QPo8JA;a9KTg8TA;igl,l6JA;gA2Kh7KImOroA25v854;cph9UY; Pe sack3XEy sO;agM;a9W3bTcap7I1flRhu9K0j956mQo'f70SpPsOu963winsl9ZF;i5Y4nA0Wpa8QO;h6Q4ie9HL;aGcki4U2ic927oA1Yulgr8PQ;an4JIeO;et99O;ecPoOu9UH;sw9EIt3OI;kin70T;kana,lin karikó,mari da46Ana,wa shou69Z;de4FVgr6VMtiOvon3IM;mpf;aThQperO; schOsky l7TH;mei86P;i vishwaPmirO;! c7YB;nath3V;bi1;a0Ed0Ce05g8AGi03lWma,nVoUruechTst,tOush–kuhn–tucker cond8LXy mu87N;hiRikO; aa3SVeyaO;! gummO;ak64D;!ck n603;e tr1; parisy1lyn gr1CI;ata97Aö12H; O-anthony t4SIa homol979ie k110sru9QS;döni9UTglu964laSmaQne7TOpPu55Nvon hO;abs7JC;ilki8P0o76I;lOrx;d5o6;ger76Euter6AR; Ok4C8m benze9UDne van4YBsma6CI;b5XAla93P;eTlSn O;a992blQcarPdot89Re956gi68Jo,pO;a9K6e98Fit59B;nEpe8YZ;aJix5; lop1GJia;m abdul-jabb9na6CA;ashOeşler9FS;ev6ZGia6MU; Rc9PEite0XBkorPmo6EMn Oo93Fte;joh9kundrG;amOum;! h12C;h1XOsO;wi8HP;il QoOt2;o6BSsi's sarO;co9TU;d9TPsh9TS;a03e 01gViehtiio 9QXji,na9ZMpurUsaQtOye west9E5;ai 1D8ō O;re8L9;i QsO;! city chO;ie5Y2;re8L5tv;! m3PG; PaOchenjun8Y4xi136;l shepherd9C1na rana7VFr940;haQtO;he cO;onqu134;-ne7ZDn-9MK;b74LtO;ana962;! hanaPgawO;a p98B;za950;aSchatka7WXeQiOpaA0K;!ka6Y2la valO;ie8ZT;hameha923n riderO;! re6ZT; sutGlOru u94Pz; haPa O;ha5PSkh1;as1; ZashYeXiUkiSmQpanaPvin6NTyani priyadO;ar38A; chawA09;aOykA;n77Pr4TN;! koO;ec8XZ; Pko kaua9O5ningradO;! FO;l8P3uchFyu8XB;!ido2U4vaA01y cuo9MO; 96Unikov81T;ho naa 8VIpe9IR;ashi ha2F6egurui – compulsive gamOá;bl0;al aggarwMilC6ol,sa ollon7LF; Sa Qju,r9S2sPtlOz5;an69Oin o93Fyn d72Y;er perman1UWt;geO;rb0;havOBkara-67T;aa9PTi,lil gibr1o shibu97Z;ami mOemus8OVg7;oc9NO; a5D3so8;aseela bir1OLokawa shot5;aRbQhi alvida naa keh9LEirPuOy 14Y;ki,l;! s9TN;al9Q1;d9NTneri of the iron f32K;ba,nekkaa6thu vaakula rendu kaadhM;class bli85Ud 9NWi9ZAlite codec 64Vmeans0MQnearest neighbors6UQp97F; T9-T8aJUbJQcpe8PJdJPeEVhEUiD0j fei9YFo3Kp3IqueLrue h76Cson3Gtbc9RHuWySägermei9POérôme boa5ACóQöPürgen O;habe8EPklo8V7;rmungandr,tu9I3;hann jóhann8W9n páll sigmOzef piłsuds9I9;ar8W8;otOp 99M;hi94LirO;aoOl08Y; phu7; ji-2FVan 32bin nautiyMc9O1d2Ii2Hju2Fl1Am17n0Spiter0Rr0JsPtOárez 5PA;e,la9VN; so9QAsi0EtO; 07-in-time compi8G6iO;ce 00nO; Pe Oian90L;bat8FLlu9NLmu7YK;bWchaVf89Zgaeth9G2hTjeSk1lRroi9SFsp8ZOtOve1ZIw5G9;hePimber14ArOu7ED;ude9DI;ro8NW;in,o8;ffe9DS;aOer9HO;r3KSw84Zy5YV;m5JQtw4;art8NVieb8SA;leagueQsO;mi9H3ocieO;ty 65W;! O;da9UXuO;nl6GD;bSeatRfQgo with 9VAinto4WRmPone of thO;e gu8RJ;er86G;or laughs ga9VOri7XB;! take9SW;eyo9UW; björ9RCe smollettO;! assaultO; ho9AK;aQche8SCisPnee smO;olMJ; 2RQprud9W5; sud 7IJssicO;! O;park76LworldO;! O;camp cretaceoDdomi99A;! ascen9C8; ji-964ction 0EQeZgViQji itoPoO; te6E8;! 1A3;chi Qor PperO;! b5VB;dos s08Ufir7F8se9CH;maOsuwa805;su9WB; Oian arche5Q2ko9P0;chae4Y0hPsoOwoo-09Fyoo95T;-m4;ae-4; Oteen9G4;all6KRb71Icarter 7ACdiane rap0H3forKlo9QYstruOwh87O;gg7;an8YWia,pO; Oing the12R;f7U9poin62D;es 0QiPy O;cr5UEmo9MBre5GC;a06eUoSus O;and ethel r8RXbQc7K4ePh9PAstrO;ei8YK;r8DRvo9XC;ab95Nu9FB; O-claud5JC;césar c0B4i2K8j9VL; StO; Qte O;binOl3WX;oc9M2;m9G6ryl8C2st5UJ;andSbRc5ZHdOhag81Wkavn0lo8CUnewm9wal85B;el9X5rO;e8RRisO;coC;e6NQow5; the phanOre9OB;to9VL; ZnO; TaSe koepc8YXnO;a Qe O;h99Zm5IDnO;icho90D;margu3WCpe3XH; o6V0;ass961b3FNcaRdQe0LTfellPgl6FQle4O7mOnagels9FGs8V7;cm2WEo5M3;ow3;ay,enn8SL;l4YCsablanc9X1;a9FCc3GPdSgRhaa9X6j9UWlPmc6R3or6D2q93Yroberts9QGsOvol82Q;awal8LQt7N8;eOouis-d8R7;migo8VSnn2;a93Til3XW;avFucourn9B2;biOver6;anc9KE;be,tsuO;! ka1QI;ce wr0VIlliard6M3;a04d 02eZge WiRo,y O;cPd8ZYgOh37Umikovi9SFparfi9NSsheinJR;ar9PPe8U3re0;h444ol662; Rc8WKtO; polgár,h O;bOdu46Al9TI;ar9N7u8LI;d5JPlo9LP;dPju9FGreinOsteve ha3WG;ho9V1;re7K8; Oa;beOhiCl9LCt70A;ll5NH;aOhi8U0ne8ZF;pat9U3;ismPs O;and the black m2ZLisca7E6pr3X5;!'s view 4PJ;carlos i23Sguaidó,josé esparragoza4WUmaPpO;ablo monto93Yer7PYonce de5BF;nuel Ota;albendea pab7PWfaO;ng8U9;! webO; t1TO;egOmorgan4Z5;!m8WM; 8Za8Ibb8R2ck8Fd89e71h39int 34j2Zko wido92Pl2Xn1Tols1Sr1BsWtaro ku631urney TyPão Oël mat982;cance9N8f6OJ; Pce O;bulifa9FIcarol o9IWvan pa7ER;beh9cro51KdO;avi8RIi7EK;di9NRto the O;centerOsavage pl7MDwe9SG; of the7EX; ve11e0Fh00iYs XéO; Ophine jo9E3;al92Ecarr7VSde sUfeThuiz9mourSrRsO;aOá;lvador alvOntacruz londo2QHrama8JR;aren8SB;aúl capa5BNizM;in8QJ;lic1HXrr0;ou9CY;a1Ds8NZwh96Y;e tot9LGp broz O;ti9D1; Pua O;h5XHj8XC;bZdXgVhSkRl5MKo5C5peJrQsOwiddicom7X4;te8Y6wO;e9GTic0IG;adn9RRos5;e9MMlingho80H;aPer8QUoOutc2MW;l5MQm9UZ;rt8XEwlE;ad,o70NrO;ob1;a68XuO;gg9h74En;o803rol51U;f 08i07on,pO; tarradellas barcelona–el prat9INhO; Q-louis lagr93Pine PusO;! on4O6;b5UJea7UIl64W;b00cYducre8JCfXgoVhaydn,james de6K4kTlyoNmRradetzky von rade9N9sOts9JC;chPmi9CQtaO;l4t5;oo9N8ump9GR;azz9LYc46LerO;co9U5riJ;al4GEoO;ny,si4RN;eOrdon-levi9LM;bbe9SF;ie7OTou8ZY;a8VFoO;l6E1nr9Q8tt5;eu8N0onO;an91U; m752;f24Kmenge7s4LD;rsta2PM;dPge Oja f8VG;j5SMluis borg3masvidMsalcedo cab8EO;anRiPynO; w3AV; el niño pOn sp7M9;ol9TN; PaO; brew9JW;belVcUfi8A1h1UEkyr8LJmTnRpOr9OV;ePiOoo7;ck8JZ;e7te98H;oOwoG;rmal 4V0;as98Dec6FE;am3OTlAQ;fo9TYl; h3C1' annual hootenan8OY; 0DaRes440i mitchell8MXjoe k5X8nOtr2;ie pea5CPy O;buOcla812gr5RFha5INk97Ll9KO;ck9MP;h 05s 03than O;b01c00dYfraXgWhaVkUlTmajo9RMnCOpry9SUrRsQtaylor 3H4vOw3L4;anOil9LT; 9SG-t9QG;p9R1wi7Y4;hys1NIoO;ss,um9R4;a97Zipn97V;e 0A1um02Q;i8ZUrrF;ottsc8M8ro9BG;k3nz5;aviOem9T7;d,s;a4re8QA;an9J6ra5VJ;br6ZIlösOsa5LR;sl;fQhOlot1;auer-9EAex,iO;ll9MI;alc2;an3TEbWcry0favreau9MGgrud5hVj9QWkUloTmo8S4oRpeQrPsOvo9PZwat9OR;e9R2paih9OQte8VY;i7YDo9LE;rtw9KPte9QY;ri9BHsO;so9AZ;rd,vi9LD;abat-zi9B5rak7IJ;amm9M8ed0ur8V0;aQerOon jo7CNrower min8MZ;nthO;al9M5;rZXtO;isH;ene bla9AKlO;ib9KDy rog0;oOu4AX; P's bizarreOli2; a38A;rOsi8WG;abb9OT;c52Edirect attack muRentrance examination – adva7MNprobability6KEsO;ecuritPpeO;cial operations5FN;y 7C4;ni9NX;an37nO; 03nPsO; hopkin5XYton a6F8;ie 00y O;apple4V4b57GcXdepp9LMenglishUf6PVgaTkSl3RHmQra3HAsPte9OXun2N3v52UwOyong0EY;eissmu9J7i8P5;equoy9I8iNo4DY;aOcda9PJ;nziIrr,thF;lim8P3noxv8N2;lDNrga8ZI;! O;re0M9strikesO; aga4;aOr5R6;rs2sh;co2QSwa8H5;a2Kb2Dc22d1Ve1Uf1Pg1Kh1Bi19ja18k15l0Wm0Ln0Ko0Jp0Equincy3NOr0As02tYupdi8TFvoXwO;aTesleySiPoo,yO;cl4PU;ck,lO;kesOl81A; b0NL;! fl39Y;ll,rn0te9PNyneO;! O;f9L1ga7Z5;lanth5n n99T;erLhOit9O4oCravolta9KYurtur9FSyl0;aw,e O;a6VGbapO;ti9O6;ax2chna7SGea7iTl9L6tO;aRein86ZoPuO;art 0I9rg3;cOn3;kt2;m9J0n951;mm,ngO;er s8EKl6S3;aPhys-8FVi7S8oOu591;b8K4me9FF;m6AStzOw9P2;en6KZ;aQePrO;i6ofu82X;e9P1tr8Q7;rt,ul O;getty6JWi906j9OUva99A;'hu51Dat3f gau9AMl9LS;et9AOob7;aVcTeSiPonEuO;ir,l4C9;chael PlO;iDls,t2;hig81X;ars6Xllen779;af9IHca4e3HNg9LKiOtieEQv9ODwho9JS;ntiB;dd5ga9EXh8DLj9N9lkovi3KFsefield48Ctusz8MWyO;aCer,nardO; ke4B1;aUeRiPoOucas 70Fyd2;c8S5ne,we;nOst,thg9OC;dsK; PgOnn199wF;e9MJuizamo9JV;car6H5mesu8VW;ndFrOss9CHyf824;ch,ro8LE;ePn8RJrO;asi4NEee9OPicfalu9GZ;a9M0rL;cob astor901y;iiOsn0; sobies98P;aUenryTiSoPuO;rt,st2;rtonOwa9NU; coO;nwK;lle8CO; ne7V6;i9JOn58YrO;b5T2vey kello8DD;ielg95Jle988oRrO;egory d2ZCiO;mshaw wOsh9MR;il7YD;o8LJt8CB;als4ZSet3JNie8K3oQrO;anOusci7HN;cis d5V1kl4;g7U1rOster du8RQ;d,syt9E4;dw8W8f8FNlwKntwi8EPverett millaF;aTeRiQoOrew b27Bu po99A;e,nO;ah8C8ne;l4BCma5A9; lanc9N5ac2bnEeOl313mjanj6WFnv0r8MJwE;!re;lt2vid5IN;aTena9IUhSl64EoQrOu7VR;av5eO;asE;lt8IJnsOr0SL;tan785;o,rysost94J;b9PLge,irnc95PlRn988rPsOza7;sav1O1;maJpe8M6rO;a4EBoll24D;e,v4;aSeQiPlu1K1oOr4LP;nh9LZo8BQye8LV;rch 67Esh8WM;l3LnnetOrc9MU;t ra6K6;rrOsi5K1;o7U4y9I3;braSda9N4lQm9GNnOst4;d lorena boOi8MH;bbi9FY;de4EPlen O;ch92Zmu6KI;ham9I7ms2; UnO; Ra elisabeth of holstein-gotto7OGesO; Obu97E;brah9MVgOhøsflot klæ68Bke6WYr7CDverA6;ut8OW;ha9KNsOwolfgang von goet9D2;cho971ebastian 5X6trauss8EC;cruy96Nde 66; 02lQy O;bOdi6ZHfa8H3heathe4EDjord8K0ki8la1K2ra3DL;atEo960; Py O;c5XTfi84Fri7TT;do3KVeVgrEkinnUmSosRsOw0Z2;cPi3DDpoO;ls8N1;huma8P1;te5;a8EBcO;cr9I8ha7;am1;dOmbi9LL;ge4E0;a0Eb0Bc09d08e07f05g04h02j1IHke01lZmVnama964pTquesa9M6roSsRtQwO;al9FMilOr9L1;ki9GHloJ;a1XJessi89X;atr88Nim2tru8AK;g1ot;aOes8N5;ntol1AEt7PW;anQiOon56R;lOx2;lion69R;ch4gani9F4teg996;aGoOy1XV; trugl8LYuF;eLnnedy6GN;a9NUisaO;is9B8;al9EZel8U2ib7SE;l5ONraO;zi0;l9EMx7OU;anHima589on5JN;arn5PCoO;ck0muz7NK;aPid5onam1V3r8UAuO;ck,rr9L8;stia1WC;bercrOlw8LS;omb9KZ;elle f8GChRie Oorowsky's1IHy a8UB;cPfost95GsweOturn31Vwhitt5N1;et4;om0;aa akb9iO; mK;o wilPsOy 4WI;tr7MH;li8MP;chim 03nQquO;in phoenix9GGín \\\"el chapo\\\" guO;zm54R; VnO;a Qe O;frogga9E0wO;ha7LSo2JZ;ca22Dgos9FFjędrzej3OVluQn18Mo3SSpaPscaO;nl1;cuła,ge;mlE;a8TRbRcQdi4ZGfPhac5IQje9DUl42FmiOof a4UIplo7VTri6Q9si9KY;ró;ont8B5;h5l2CXol5W3r5LXu7T0;a9FHen8OZlon4HToocock5LU;m31Hpe84Nt8S3von ribbentr8U6;da8LDjPk8A7nesO;bø;o7VGungO;-s6TF; 1Eang1Bd19gme khesar namgyel wangchuJh17i8LBll13mWnSoQroPs8P6tOří procház8RE;endra6AXt0; horik0IMemon 0JK;! O;platf2NR;gle Pn,uO; jo6PN;aOb7XO;ll the7JC; 05i hendrix8FEmO;i02y O;bZcXdVeat9KPfUgaroppo9DIhof8GNio94Kki25EpTsQtPwO;al3e7W2;ar4J6;avileOmi9HTom1GWwagY0;! sexual abusO;e 9GC;a945iersaC;a7KSloyd hasselbai8LL;oOur7DU;o4CDre;arOh4;r,t0;a5I2uO;f5YNtl0; s79Pe O;a8SRwa8B1;b07c04d03fa61Fga02h00jYk8ZTloXmVnabo9JQpUrSstPtOva97E;h2Goy;eOu7NZ;iOr9E7;nm1;a9D4oO;ge9JKhn,ss;ar3L4lun5HI;aOcm2KRo6E9;ttF;nd9D6veC;armOon3;us99R;aOe9DSu8NU;n9BArb5OG;ff88Krr8GT;a7o9A;aPla9H6orbett0RXroOu2UW;ce,w4D0;rr6FAviezI;aRelQoe54NrOuckMK;i2XHoO;adbe94Swn;us98N;ckDkk0; Pian O;beCmi8O2;b5CIclay3B0gascOhennes86Zi3V0lat17Gs78Nv5FAwa2A2;oi6;adOyo;!i 3DB;!du krishnamO;ur87C; PsO;hi,u;qi8zem4;changPhy4V7sO;oo,u8;-wo9BG;ark32Eené ai8T2o7UPumpa l6WM;an3Jb3Id3Ge3Dff2Phovah2Oju 791l2Mm2Ln1Qon1Kr0Ts01tUwOzebI;'s SelRish Os;autonomous Od8VHethnic divis9DVpopula60B;obO;la9H8; st4THleL;ha7K6; PbOhro tull 9CEst9;l98Pr7HS;e7YNfPha59Bli9DSsO;et86Ft9H7;ighter gOuI;enO;er9DJ;per c7WFsSt0us Oy6UVús vida3KH;christ suQiO;n Os 95C;c01Xi98W;per2WV; opp08e 03iOy schr9GZ; 02Eca Pe O;buc7NMca998ed5j,mei 9ASwaB;alZbYcWde gouw,hTjSlRmcnam9BRpQraPsOtZ6wa7QD;eA9im77X;bb9GAi6;a6ANlu86H;an921ow5HDuc9JV;on3u8;aPeOyn3;c9GSn4IS;hn,rp0;aOhastain8LK;b1p6YN;a8QDiIrown findlK;ba,v3;a65Oeis8JWjaRlQmPo56FpOs992tyler f8HHv1A0;a867le8E1;cc0B0etc59X;ee so7OWin2P2;c8LMm3ne;enO;he5WM;emy 06i05main04ome5J1ry RseyPusalemO;! articho8L0;! O;d68Jmike's su7O4;brXcant5VXfal8A5gWhVj9H7lTmag21UoSrRsPv6NHweOya8;intra6G0st;andOe9Kpri91Uti9AB;us8HY;e9EGi9IGub4;'c45Jr5RS;a4I8eO;e2WJwF;aCe9A5ol7OW;a8PTolds8RX;o9G4uO;ckheimerOd9AR;! f6HZ; def85Ne39U; 39Ac8E0;allen611bUcRda8L5irQkle7KTl4m1CQnorRBp6OHre601sPthO;or972;is90Kou7um716wi7NG;oNvi6;lPoO;rb8H7;ar8KU;enR4re99Tul2AU; QgO;jOye2;o 4N5;soOyeo-be5;-Omi;m4ye2; 0Ha ma5DLnRsO; stolt8IRenOon bu8KZ; O's4W8;a5NKh1PN; 5L2a 0Cette mccTYiRy O;agu7JFhar99LlPmc3UCry1sO;eag5U3laH;ewFi9EF; f38Fe g8SHferO; P's O;bo918;ani5F9b04c01doud93Le00fl3F8gYhXjWlRmPnet91Zp1ro7TJsOt6C5westf6II;aun7UJy9I3;eOo6AX;e,y0;aRoO;p9AXveO; heO;wi994;nd2wr9FI;ason4MDon3;a7ol9AZu8YU;a8OTrO;a91Key;h7s0XB;aPoO;nn8VWol8ZM;pria84Ar4Q4;ea9FOotte4ID;bush h4CTc3K0d0Z6el996f68Lha6ESjam8F5m2ANor84I;li7GLp70Ota4EK;aine c4MLima k2QXma5H9;ena mc63AlO;e klaas5o biafGy7Q0;!'s witneXM; Yerson XreO;e 2UAy O;ar8I8dRepsteinOj9FDkatz8HRtamb9E3wr9EG;! viO; fO;ounda9D0;aQeOo62Z;anOmu8ZO; mo4BD;hm0;airp6SEd8KJstDS;bYcon9BBdXfi7X9gWhVj7XCkUlTmaggioncal9FBpSrRst99SwayneO;!'s musical version of the war of the worldsO;! – the newO; g6F6;a8IQich5X6;or5KQrob9DU;ab9eb9C7yn6;a6U7i86RooN;ar900e5MC;a6RJoldbl91R;an4NSu7N8;ae92BeOha8H5ri6EOuc7KJ;ck,z98N;pOt kunU4zy;! O;cj,grand cherok98Lw5OT;dahOediah bi9GCi;! t8VR; bu98A; 04-Tette Rine QnOs;e Oie gaff83Y;cal8QOmo66Ltripple961;ann r544pir94W;m3F8nO;ol1;bédel bok1O7cXjacques VlTmQpO;aul Oierre jeun9CU;belmQAm6QVsartB;arPichel O;basqui922jarB;c vall88Die le6O2;uc Oéon gérô9GA;bC8go8U1mélen82Epi36L;dessal93GrousO;se8UH;hristophe bouv9CLlaude van dam9G6;a6EQbaudr03c02d00gZhaYlouisaXmarWpUre8NQsPto8MPvalO;je1;e8YVhQiOma9GCta4EM;beOm8AL;liD;e6VYrO;im8J2;asseparOiag9CD;to7A5;aFsh; k8U2;g5rl9DR;i05GrE;e cOuj5WQ;arroLG;hréti5oc1YS;il3GS; 6BOownlo58F; Ol;bPhi-O;fi;la17Q; 90'marr4ITb8Yc6Sd6Ne6Lg69hang9BUi66k5Rl5Nm3Bn21p1Cr0Zs0Cthi ratnaWCu0Av04w03xon 536yRzO;minPz O;fu91Ije3SM; grace grUWe 1ZJ; U-z8S4aTcee 954lRmes6AMne mPson4ONwO;al90O;aOe6WQ;nsf7R6;en waOon89B;dd7; b94XpuGs4OP;and silent bob rebo9FObQcPdup1LEe7KEf4BMh984kKle8MTmo92Opa9B9roOseb8RW;a93Oc38K;h86Su849;!aOl8F2;kk0ru7J7;aharlal neh0EQed kar8T3;aPelin t17Xier O;bardem98Khe8FApe3FE;! Ones8NKsc7AV;development k9BFvO;e7PXiO;rtual6TL;me collet-s51XnO;di9E7;min08on Oprit bumr951;al06b05c04d02flemy8g01is00kYmVnewst9A5opp37QpUrTsQto72QvoorPwO;at7KOi6XT;he3;ang83KcPegIpOtaN8udeikF;e949is8B1;hwa8CAott5DZ;ei4M1i7FSob8LC;a2UXri30A;aOom7WTr6PO;nOr0V5;fo9CDtzouk9EM;eOi72F;l9DTn89R;aacs97ZbeC;ar7UNou9D4;erOo603;ek5R9u95T;l24Pon3UY;atem97Teg92Vig9B8l8Z6o6Z;de1e4RF; savoy5R5e O;cephas548g64U; jar bZeUno opToRrOvis co6TB;ePod bO;ow5;d gil23t s617;mír jáOn varsa8LO;gr;me0;d Ot3QC;bu95Md5U3fY7go8W6ha531kQleto97IpO;adalOolF;ec8WJ;ee8BWus5ZJ;in93X;anOon8O8;! 05eseO; P-language proficiencO;y 7VV;aZbWcVdr6OXhoUiSla8MCm4QDnRoccupation of t75Kpe8K8rac3WTsQtelevision0F7verb conju6NGwOy5;aOrit7F7;r cr0NW;piderTPwo9BH;a9DMe4ENu79J;d9CZnO;vasion of manchKM;ldo77Rnorifi7KK;al4EWom4ETui7X7;attleship Or13O;mOnaga8V9y3H9;us912;ircraft carrier Osset price2KL;aka8T8hi0CRka8A9shiOtai223;na8KX;airRduQground Smaritime SnOself-d86;a876eO;ws72O;ring5O9; Ol90F;self-defense79J; 0U-0Sa 0Qe03gZhvi5NMiSnik sRuO;a533sO;!z kamO;ińs8VO;chü8VFi5U9;cTnQsO; OsaL;i1jo67E;a Pe O;lindemu6V4tu8JW;gav7G4wójcicka hos7IR;e 5PGza47F; Oo 5PR;hPkiOna-Gseung-5K0won4CL;-yo8;ee8KGy6JR; T's add8Q3ane garo58JlSs iBTt O;jPl5P0mOs4JBwood4VRye8JS;cte0o641;acOon3;ks0VH; parri947le monáe;a02bi958c01dig97ReyBfZgoYhXkVlTmcg6X8pSr63EsRthe viQwO;ieOym1;dl4;rg4;ey36W;aulEo83B;eOyn90U;ev3vy;aczmOra7N2;ar89F;aw8XJorr2HO;l882o2WV;a7B4oO;n9ACst0;am560u7HU;sh0uO;st5;gana Ok3MY;ma8XI;krzysztof du9A6michaelO; v16U;błachPhOmay5van eyJ;oo91Zus;owicz;a1Wba5CCe04iPmu,setjiO; ta9CB; g01eOroqu90I; Q-lO;ee oOynn si5JV;'d3Y6;beCcVdSfRhyn7RZian7OPke4TGlQmu8VRol96Npa62QrPv4CBwayO;le92V;a4TLedk86N;ee cu8UMynn sp0MH;a94Soxx954;ePim2oO;rn1;metri834;aOhu8la7IY;mpbell7C3rra8IM;er941;ela jam8OEis w1Es O;a1Ab14c10d0Xe0Vf0Tg0Ph0Li0Fjo0El0Dm06ne05o'k04p03r00sYtXvTwO;aQebb space telescopePhOis7RMoo90A;it94K;! sun1NZ;de,n,tO;s2t;! 0DanQiO;! aO;nd8CE; der2J1d3PU;a482he8FW;p53TtO;a7IPe8E3;an8Z0em9ig4IXodO;ay Orí887;ro885;at8PJuref7YN;ee9AQ;sbi5HEwton 57T;aRcPiOo31Vu7U;chael8G2ln0;aOc02Bteig8Z7;rd7v7YH;ca69BdPn6XUrsOs2y;d5te98T;d86Ais2;ass1IBi8DQong970;seph dresn91Iy99Y;! RiPvO; QoL; of Oi P;e8QMscP;of scO;ot93L;aQePoOu8U7;ng,rn0;r6SFtf7M7wi91K;rd5v5;aOlai7QFu8SQ;nOrn0;dOg;olfi8ZZ;enimore co7MZle96Mox,rancO;is e4IBo93P;arl Ol3ANnnis636;j983rK;'1ZNa2BSePoOys2;oh1;an,en;aQh3IPlerk0PXoPrO;om80W;bu8ZGmEok,rd5;an,gnEl7M0m4GErv851y6;aSe96Qlu8TOoProOu28K;l4wn;l96UndOw97L;! O;in2B8m7V1;dge 6XIl8SX;ca8ZOnd oliver phPrOveL;ne98Qth8Q5;el8K9;in87C;icaOl6W0rcus38B;! 83Gn paO;toF;ape24KePiscoOlianwala bagh5XE;! new generation 4ZB;el5RPn O;g8CLhur95Ara64Q; and da36Uar99We SoO;bOv sedl9; Oi13H;dOfu5XS;yl1;ange905bUe30Df1TMgyllenhaalShN8j91SlPmcdo7W1pa77Kr6X3steOta6DN;in6DL;aOlo45O;cy,mO;ot99N;! O;f92Oo8B2;rPuO;sEtt;ew0; cour00Kde92DmOni8ZNp8PGr bolsona8XD;e Oie1JV;ki8lor13Omu8T0press8TQr65I;aVdTgeRuarO;! Oun8WW;ca96Zf-8X4landOxj; r5RI;d littlOry;e 2XR;pOt78T;an8UL;dish Qme thandhPpathi O;ba4C6;ir95N;chandra 72B; 7OYden marO;teC;a pinke1XJeOon sanc83P; Pn82Iveon cloO;wnE;carOthirl1K6;giC;ar96Jcard97Winda 1Rk05lyn82EoWqueO;line TsO; O-louis4LV;brIcQdePlOoffen5H0ta7UXv2UE;ac1e grF; molKr18Y;hir76Mous1RA;biOdu p5Z1f913kennedy 71J;ss94L; pasVbO; Pe257iO;an matrix and determi70Sn,ti8YQ;bQcPelor8W2fortune-l36BrOtremblKzu90E;a63Bees-mo7VK;ol129;atal2eO;rt6JY;to8HC; 04a01box7L1f5CGiSsO;eptice6CHonO; Oville jagua95Y;brOfa7ZDpol8PUwa8;ow6; Ve O;b6B9cPearle h5D5gle94Aro7C2sO;hro8PWte8AR;hanQoO;l5H6oO;g1p0;! O;a0NGf914;p7POwe8N5;lPsO;s f6A7;!o8VQ;a0Rb0Pc0Od0Jel94Ff0Ig0Hh0Dk0Bl08m07nic04os02p01q2T1rYsUtRwO;a8E6el8VVhitePilO;d,s7FF;!haC;at8S6he ripperO;! O;susp8TT;avQcPpa5HVwiO;ge97G;hloss8PY;or7TQ;ePuO;by,sse7PI;a87Wyn93R;al7LMosobiWP;boO;ur6;hoPkO;laD;ls5SV;a,cbr8MFu7AL;alPe6GLoO;nd2rd,wd5;an6;eOir91Zlu2HX;rou754vor33X;aOe1QGig7HYu84E;nPrOw7CK;k95Nl94K;dEna;le844rea8HC;aQDro93E;aReQoPu0XKylan grO;az0;rsE;mpsE;niel18Bven8UD;a1M0h3WWonH;en81Nla60ZrO;ooks4THu95O;l7HQnto7CKr875s4E8;arOb7MH;de8VR;bOoukie young-w7F8;a the hu8XEerw6UT;mo81Tru7;ho8UFp8DT;ba6BRd6AS; FA'm F8-8Z8aEPbEFcE0dDTfr92JgDHiDGkDAlCTmBTn43o3Vp3Iq3Hr2Js0Pt05u04vUwSxten8SDzQ²c,̇O–v–vi–iv p6Z9;lkay günOzm92D;doğ1;anaOumo-class multi-purpose6YH;gi,mi;an rOi t5BSo 67K;he2;aPermect4oryOy8HO;! coast6ZT;nOr the bone4MN; Qa Oh7SLka1H2;baque8U5miličOt2EA;ev8AD;kon8XYmQpavl84CrPtOvi824;he terr641onE;ai8XQei4D2;il8RDozgov81W; 8XPcn red 3E8; 02's ZaRcQer,il,un1RDzO;hak pOiar itu20Ly;er5RT; l5N0; a7WRchiUewon c1BNlOni8QC;iaPo-turkiOy6ZE;sh7Z9; r42On O;aPcOfas8DQla8DZna0XFr2IBsocial68Dwa93H;ui7P1;ir71Om8GHr70P; uchi7U4;aOokay to not be okK; wonderfu1IJlO;l coming back to me n934ways sunny in philadel044;cOfoZIhappened one4UHshould happen 5KU;hapterQoO;mes at4UFnO;sul95F; t2YP; 1Fa0Zco,ek8TQf56Zh0Wi0Vko45Tl08ma05oYraelRsPtOu7MN;anbul6MPhmian8GSrA;a r8R3ei sO;aga890;! QiO; Ot3–palestini0D;a216new shekI;adesQdPkO;amakawiwoʻo7ey3;efense6HH;an8CO; RmPpropyl2QZroku yamaOto8T0;mo8MI;etrOo76G;ic6PV;metric screw thPweek O;daH;re90H;'i7O5el Pil sabri yaak6T6ïlaO; sa8XP;\\\"el mayo\\\" zamba92Ncruz córdo83F;aReO; of Os of sc5YG;manOsk690w91G;! 8VK; 1VEmOnd6XR;! 01ab908iOo8CK;c Osm;c0W7eWg278ne45AreTsO;chools and brRtateO;! of iraq and the leP–talibO;an6ZW;va8NX;an92P;public of Pvolutionary guardO; c8EM;a2RAiranU4;mirate Oscha3Z0;ar6ZDoO;f a2R7;and Qby8CRin PmakhaO;ch8W4;eu8COi8C0;ca8ZO;ah 2RFng7O6s5PZ;aan kha74Xikawa1A8maItaPwar chandra vidyasO;ag9;r 8JQ; gu7SJac 01belQdoraPiah4X0mbard kingdom bOo taka6SL;runI; du6TI; Ua merc8YYlO;a Pe O;adja8TBfuh7QBhupSC;gQiPo4BJrO;oss1BP; o39Ii 6HL;om8WE;aPl4UUmaO;x7UBy;llO;en7R1;as81WhOne4S7;ay3erz8E5;it wrong to try to pick up girls in a dungeon?,tO;ank 7URhis 8ZO;a0Ce08i00kut72Gma gre91Pn-b02UoRrPving Oène j01L;be6DTthal8LY;ational Oe7MZfan8WMitable bow4KIum6HVévers61H;g828nu8XE;nOquoF; Pclad wOman triat2T1y;ar8F9;a8L9bScQdo930gMFl8YXmaPoBpillar of del8QOsO;ky,p7IV;id50Nn;hefOro91Yur7B9;! a7BQ;utterf8NN;di8NPna sha84GsO; Sh O;am8DYc7AQf6LGla8BEmQpe89ArPtravel6FQwO;ar39Bolfh3DQ;epublican450;ob,yt8BS;flower data8F6muO;rdo8R4;landQnO;aeDe O;a7WZcaGd2C4pap92Nry1;! b81L;nQqO;! O;inquiLw9;! Qian P–O;contra5EBi4HH;calMUembassy5T1p6HUre4KW;hOna7W8;ostO;ag377; c52Balu8YPi6J4; YaTconf7YGhoneRodPsOtv; p3Q4ec,wi8QO;! O;c3COna89Qs149t6QB;! xO;!r,s; QdO;! Oos;a8YBmi8RRp8QD;pulmonic consonantOvowelO; chart with a7CZ;addressOco7PMm1;! 8LD; i76Ran gruffu6PSdi6nSsQwaO;! O-5LI;st6UR;! O;jailbrea8N1ve7CQ;! Oe sk66CiziUG;antonOthru8RN;es3EI; 71-70a6Yb6Xc6Pd4De4Bf3Hg3Ch3Bi37j36k34land 33n2Zo2Yput4A8q2Xs2Et03u01vOxs;aYePiO;ctDsib8WY;nting 71OrRstO;co71Dment O;bOma6ZH;an8MR;ar0YWne90HseQtO;eOi2J5;b7ISd question and exclamation m6TM; O-square7M7;fu8MCtrigonometric11Y;der z8FBsion of O;ku5DOpo8UFthe body snatc67Q;it,yashO;a,i8JU;eUoSrPuitO;!i2;aPoduction toOusion detec275; algorith8ZF;cranial8RNmuscular i0RNn8XIvenous 45V; the wOlerable cruel8US;hiHoo8PZ;g1Il1BrO; mi19-17active bro7JHc16f2W2governmental panel15ior 8GEm14nUpSquartile4H7racial marriag01QsOview with the v2T2;cope6UDeQpecies revie7OStO;ate highwa3UGellar trO;avI;cti35Gx;ersonal relat8D1lanetary f4VLolOun8CA;! no8VOa8WI;a04et Pment of japaneseLJshO;a90Eip;aZb916cWd0TOeVf5MiUmeSof8XLpPrelay Oservice prov7GMt7AZ;ch8MF;o42UrotocolO;! O;s8GAte4S3;me,ssageO; access8HO;nformation7M4;ngineering task6WVx280;ePoO;m1GJntrol message8HK;leb89Lnsorship 4CW;c8H3dult filmOr5FM; dO;ata8M0;l 0Dtional O;air transport41Rb0Ac06dat4IRenglish language te05la04m01nuclear event5XZo00pYrSsOunion for conservation of 2FQ;ociety for krishnaQpPtandard book 7YOystem ofO; u65;ace7GM; conscio3FS;eOough215;cognition of Ol8TI;is8O4kQthe state ofO; pO;alK0;oso72U;honetic alphabetOrognost0C4;! c8SY;lympicEXrganization for standardi62V;athematical olympi8VTilitary tribunal for the faPoO;bile equipment id1GNnetary 1EA;r 5XI;bour5UJw;st71A;ivil aviQoPriO;cket00Pminal c628;urt8UHvenant on civil and political1FZ;ation5UE;aOrotherhood of teams77I;ccalaureaHnk account 7Y1;coPen5E1mOrevenue5YJ;onol6MA;mbustion456nflict in myanm9;ittent f86Todal con4CK; on1WB;eptor14Lontinental ballistic857rural3TT;process Oservices6OY;co15M;ami 1U6l1;! TlO;ectual QiO;genceOj 7GK;! quot5K1;dOprop73O;ark45Bisa5YO;coBgraphic19management44Tquick syncLN;erTrO;aOi8SU;l,tO;ed Pion bO;y p69D;c6VUdevelopmentBV;! O;factoOo4UH;ri61V; 05ane clown p5CCcr1MTertio04ha7SIide 03omnia02pector01tRuO;l4rO;an8Y6gency in khyO;ber pakhtunkh82V;aUitutPruO;ction se4W0ment land709;e Pional revO;olutionary8SD;for advancedPof electrical and electronics engO;in2QR; s4ER;ca8YUgr8VLnt O;fa7Q4mO;essa1M; k81B;!c7BM;llewyn1GWm1;n QA;ari89Jvikramadit86B;ui3Y3;de,ri mina8WU;aQer Osb4E9;mongOproduct3SO;olA;! lillahi wa inna ilayhi raji'8XOte immun4T0;em8JMtaip1; Oiga84Cs18A;ma8O3;ective 8J3; Qtial O;d,public offeringOteaching 6TP;! 34S;fi7;erently funny 26Pu6T7; g8FOerRlourious baster8MWmar bQrid PushO;etA;bOol8SU;er291; s4CU;a0De0Ci06lXoRraO;r8T4sO;ou8TYtructureO;! investment and jobs895;rmation Os7QFwa8VT;aQretrievMsPtO;e67Uh6G5;e3F0y6Z7;ge,nd communicationO;s 2LU;aUectionTuenO;cer893zaO;! O;a1IWpOv5W7;andO;em8XX;! p7XS;mmatOti2;i2ory bowel8EL;mum and supr3STnitO;e Ri,yO;! O;ge8VIsOt8I8wa8V1;t8V5y7X6;fr7GFje8TZmonkey 5WNstrat8OZ;ctious mononucle7CPrnal36D;mous secoPntO;!ry f53G;ndO; s2;quality of arithmetic and geometric m5Y2rtiaO;!l naviga22Y;e1Ki0Ao04ra03uQyO;a4I2caO;r 6ZG;ctUlg8UGsO; StrO;ialOy 8HV; Oi4XI;mOre4F9workers1SD;etMus8X8;r8RMvalley civ23;an8VZiOor;on Qve O;charOr8N0;gi8;cOm4TX;oo8HS;! noo6DC;-QnesiaOre;! 7QAn O;la850nation0TBrupi8ML;aryan Peuropean Oirani0NFpakistani wars and conflic8S7;l86Sm1XR;l86Rm1XQp6BS;aYe XgSra Pt8VUvidualO; involvement in2MXi8MW;gandhiOv8OJ;! O;in8JZnational ope6DX;enous PoO;! c7NH;a8L7languages4WZpeoplesO;! O;in 59Uo4WY;fo4OOga8W0p83OroJ;! 0J's best da8LJnO–pakistan368; WaO;! RpolisO;! O;col8RPmotorO; spee5X1;jonesPpaOuniversity bloomi7IO;ce8TW;! and the O;kingdom of the crystal skuClast c0SOtemple of do8B3;a08ba7VFc07e06in04n02o01pZrRsOt6BY;pace research4WDtPuO;bconti1PAp62H;andard 8VL;ailwayTeRhPupeeO;! 8B0;inocO;er8NC;moval86WsO;er281; Os;accounts5UCcatering and tourism7E1;a4VMe81VoliOre626;ce5UA;ce1il7DY;aOew year's6M3umber6WS;t866vy;dependence6KHstitutes of O;ma6T6te65E;l86Ang85X;l39Iui7EU;dministrative5U2ir6RHm86Arm4IL;ei6VSgaHnational Pox7VGpOsu7HR;ale a7o8RW;c6BFf7OY;cen8RMpendenYx O;ca8THfWlibrorum prohibitVof O;aRbranche50UeQlanguageTpPunderwaterOvatican city–S; di7AZ;oliticsRsychologyR;conomic1I9nvironmentalQ;ncient egypt–Ortsakh-O;relatedO; arti6KX;or8FM;i8DEu8QX;ce-0NBt O;and identicPorder of odd feP0politOstate of cro2W1;ici1;ally distributed389;aUeRheon8IClusion–eQome PrementaOubD;l 8ET;in82Ntax39U;xclus2FK;l,nPp8Q6stO;! in film and 4LW;di3se; 8FSndescent light bulb,rcer2QL;ar 14Ur3JA;n8FTri ōO5uguration ofO; j4LX;n-out 0AQplace5P9;another world with my smartp0YBbrYcoldXfl7TDliving78praise of p86Irainbo8L9search of lost 8U8tPuY1vitro fertO;ili4UZ;hPrO;eat84A;e Orough the out441;airRcourt of the crimsQe84Ehe6MPlPmoOrealm of the s4QY;od for4HTuth6EK;and of lea6HTo81Q;on 8FB; ton8R2; bZ7;ug3; 0La0Ebo5A9db0Delda 0Cg0Bh0Ai gal86Xl8ROm02o00pOran 6PH;!act YePostor8DJrO;actical jo7CDe8I2;achment of billFOrO;ative2JAialO; Oi8KF;cShouse Qjapanese PuO;ni8PK;ar6P3na778;ofO; j3NP;ollege 78Z;e4APfa8GBw7LC;genOv8RB; p0XJe co7IJ;aSigrationQortalPunO;e 6V1oglobulin g;i8N6s fenyx TA;! to O;me3UJt825;culate Pnuel O;ka8D4;con16Ore16O;ot435; mode8RAur;m53Mstau74K;! 7F4;c,gPn Ox;shumHXvel3LG;eQinO;ary 7RIe O;drago7M6en834; Ob4XMmo5WN;co6NWfi6AMre25Psensor6AN;si-w1yooO;n-8J5; 03aiyaraa7LCeana d'02ha00iWk30ElPovey7KJse Oya naishu8K2;hi7QPko8HD;aTeRiQm6DGumiPyrO;ia8F6;na7FF;noF;anaOgal drug6CC; do4LN;cme plen61Mn mes0MY;aOza shle8AU; topPd,s akhoO;ma8H3;urA;m aliy8KSn O;om9;cr7KR;di6VBvo8JX;ePig8H5oO; uwaFn; Pa,r caO;si56F;barOtu7ZC;inh2MD;hf world junior 84Ft kharagp88Q; Ybo 7YQgy XlVnRor QuaO;na,zuO; f77E;and grichka bogda6YFstravi7OG;!aOeous 8BK;tius of PzO; semmelweFio c6LG;antio8GJloyo8RP;esia niOoo; c5JC;azal8M3p7ZN;farb5nobel51M; 7CTaTeQiOl3ris elba8LG; 4W9na menzIoO;c6C3m,pathic pulmonary2URsyncra7DZ;alPmpot8PGntity Oo80Ys of5UV;docu81Xp43G; gas7CMi8IF; lupi7ZCho;a00c ZeShPici 4EVlo87GoO;!nocla8IC;igo kuro6ARthyO;oOs;sa882; P-t,berg 117landO;!a8NVi21L;a89Sbucket 56BcRhockeyQninePposeO;id2; k8A6;! world champ80W;re8OFu6TE;aw7Y3world tes83H;l3SRo a01rO;ly,us;erian WiVlFmUn RrahimPuprO;of5; ko8JLa konaO;té;aObattu8ROkhald8QNsa86Xtaymiyy8HE;l-hayOra6LY;th8O5;! personal2B1;bo,za;p6N3u81Y;go asp8R4i03mbic pentam8D8nRta Ou designated constell8KF;aOdelay c6P2;irporO;t 6U2; On di8NM;an2RDbWcUduLf7NKgThSliv2KTmPnepomniach3YFsOwr8NY;mi88Zomerha693;ax7HRcO;diarm8OCew1ke7XXsO;ha6;a8R0o8ME;i4XBou8PF;haOu89P;rl7O7;li8POoO;h5th8NM; kf8MWn O;armi7SJb623c6LWgl5mcgil89EsO;tir8J7;not Oquitting heroi8standing on a million2J0thinking of ending8ND;a rob8QXt6YJ;am 04c03d02give it a 4IZhave01know wh00lTmSori71PsRthink you should leave with tim QwO;ant to Oill always love7I0;eat your pancre8QHhold your 289;ro6UP;aw2I1exually identify as an attack h68Qpit on your 0UF;ay destroy7HWe 777;iQove O;lu6XXto sO;in7N4;terally just told7HSve in grosvenoO;r O;sqO;uaB;at you did last 2Y4y the caged bird s8MZ; a8N0;on't feel at home in this world any8JAream of jeann8NS;are a8QFhi8;g0ZTja2XPmo8BUnot okay with Qs8MZthO;at i 8MYe O;night—color me5ZWwalrD;thF;-P7aI9boI7clI4dI3eD3g7BSi96jalmar sch95m91o4Br49s48t41u18wa15ySéO;ctor PlO;mer h7ACène louva8Q2;beller48TelizOluis palm6PJ;on7WN;a0Yb0Wd0Me8B7g0Lks8HKmen0Jou7URpUsterTunPwelO; b5N4; Qa,dai O;ela0BEmotor Osanta 8PHtucs2;co7GDg87C;b4y6X0;esFia;atAerVh5ixInUoO;cRglyc898thO;al7Q4eOyV;rmAsFtical O;axis victory 50Fmoon of me0IX;alc894hondO;ri70;ag62WosF;-v,bo02dimension neptunAg01iXlWm2MPobjectUp7WZr66IsStOvTW;ePhyOrophic24G;roi8DC;n8B9xtO; t0U7;eOonic fl8M8;nsi5ZRx432; iO;ndust8GE;i7OSo7WQ;nflationPon cO;ant8GU;! in the weimO;ar5RY;a6KBeometric5GZ;lOr8J0;a,ic0PH;!opO;teG;ge,rom8AZ;erab8KOrO;aVoO;cTeSgenQl739poPthermal 45TxyO;chloroqui6zi6;ni6VOw0;! O;at83Ybo8KScyani7CApe4ETsulfi7CAv4V1;lectri6W5;a88Oeph7RIhlor4H4;ng8IMzi6;e774rid O;e88th66Yv4UW× heart magias academy ataraxA;lur0OFttO;! regency walkway5GJ;ng Osa;chan-Odong5VCin-yo863;su8; 2Fa2Db25dson22e1Zffman 824g1Pi 7URl1Nm08nYon peninsula0CHrRsPttonO; gi8FY;ayn ibn60KsO;ar,ein8EK;dy-gTgha8MCli8rOt6FK;eQicane O;iOkat29Ws3E;da,r8GF;m O;sult1;ur873;an,dTgarSiep7VNky doLs,tO; for the wilder7UFerOington7B3sman4M9; O-gath3E5;b4FJrenfr8LTscO× 4VO;haf0;ia761y;red Oun;daysOy1JC;! O;offensi8D1; 10a00ble ZidVko deewana karUmSoRpOv8FK;back 5IChOty dump8HE;rey boO;ga8NV;ri8E8ur;er,iOus;ng0OR; ga5S4; Oi8H7;continentOsubtropicO;alO; c27N;bu799p8L4; 0MnOy8MS; QiP–computerO; i0D8;sm,ti3;b0Ec0Dd0Ce0Bgenome08h06impact on the03leukocyte ant3LHmi01na8A3over15FpYrWsQtOvaginal 4TV;a52SrO;affic88G;aSexPkO;el5O3in03; r61TualO; Oi8GS;ac5XN;cri72;esourceOights in nor32I; 6KWs;apillomavirusPenisO;! 4TJ; inf7FF;g8IIssionO; to37Z; eO;nvirO;on7WU;airOe8JRis8LY; c0ZN;! pO;roO;je7Y1;vo454x4Oye;evelopment8M1iges0U1;anniba764lo8CZ;odyOra4;! O;tOwe8JH;em37D;abed4qures8A1;do hamarOkahan ke sachay thK;e 7T7;kOu;! h4L4;hTinn and muni84No Oueno8I2;awardQbo8L8cPll3BLm22NwO;ea728;háv8F3;! O;for bestRO; Oie4TD;bonn7H4cap8IGdPgOhefn0j0F5la4PJmarlo4AF;la8L1raCK;an6TNe1B8i6KW;!l,y lO;ewisOo8;! and the0XT; P's baO;y 7CK;bKr8GR;bleRePie halloOrF;we5;i,rt hO;umphrE; O's76I;dPsOultra-dP;pac0YQ;eep5NW; Ow7SZ;guofe8mul1;jint7THyao3LU;cTmlStpO; Os;c5V4live sPstrict transport O;se32S;trea7NR;! e3QD;! vi8AM;bc,l and hsv,n;iOvy;day8I8sto stoichk7JUthik rosh8EQ; chi minh4Cagy ca4Ab48dge379fstede's cultural dimension4KDg42i41k3Yl2Zm2En1Qo1Np1Jr14s10t0Uu01wOyeon 3UV; Vard RiPlO;'s moving 7AAin'2H6;e Otz0;lo8ma044;cQdul85UhPkeImo4A4sOthe 2N8un72Yzi83H;ch2MDhoBte8AJ;aw8B2u5B5;a8E5o7IT;a realist hero rebuilt the6H8i met your Rnot to summon a demon Qto O;be si5CMget away with 6YNtrain your 5W3wiO;n friends and influenc0IHth john 3UD;lo8IP;fa86Pmo86P; yif1ghton 7DSn0EsOthi6A2;ePing affordabil7QUton O;r884texaN; Phold Os of the ho85I;h328incomLG;m75XoQpPspa4VBun-american activitiesO; committ8CI;ri3ZT;f On wGP;bo03commons 01gZhXlWmVnormUplantagen8GZroman7J6sQtPv3YZwiOyi;n6FEttels4T8;he 5VOud8H7;aOt6A9;ud,v786xO;e-coburg and O;got798;an83G;!e3YZ;an5X6e7P7or899;aOohenzo1XT;bs61Fn52X;lü5M3rOuc7JJ;im6K8;of O;ca4XZt39V;nOrgAu849;ap33G;dsOsfield5HR; of47R; S-air bal40Iel Pline mOst9;ia8C1;cSAdel lu85Fmumb88Nrw8I3traO;nsyO;lv422;d7UQfu2RLgirls want8F7in M8on3p8KBs3EAtub time5YJwFZ;ni mubar7G6pitalPtO;age rescue 7DSi82H;! Oity6B2;play2SD;atio horn01iXmo6nWo1DGrUsOtic7UIus; d'oeuvBeQtO; buchO-wessel-1CS;ho6V0;head n2SFp7YPraPshoeO; cr6AF;di8B7;ible boOor fi83W;ss3; of6RXet;-san to miyamuraQzon O;forbidden 8G8wOzero 0U2;orl88C;-k8IT;bl7YF;e OliHpin' 2BUs;dPsandOvan dy6;ovM;avFia4ZD;kPte8HBver O;d8G6i4HY;ah,e73Y;d03eYg Tky châ126oPsO;hu,la ra0SL;luVrOur5T6; Oary 64Tific nicknames in popular749é de balz6HF;bl0C4k2WZof1V6swinton bO;yr6;guk-y3IUkongPxiuO;qu1;! O;fOin86Onational securi4J9poli5Z1s4U2;lu;st tRyO; bPsuckleOweC; w0CO;a1V6ee;hi3L0;aOur8IR;! O;ac6NLb3O9cPd3O9f8F2hrQinOk3O9nsx,prelu76B; 7D9tegG;iPrO;-v;ty,vicO;! type r;e00iXm0PUoOunc4D1;! Tmorphic encr16Cph835sexualO; behavior inRityO;! in O;ancient Oj3CE;gr39Xro8IB; aVO;erePfloresi46RhOsap6VQ;ab6LQeidelberg46Q;ctD;ci75VnO;iOy;d848ni; RoPr663schOtown cha-cha-c76Xw8GR;oo8AQ;p4PLstO;asF;aPpa808sweet homeOvideo game cRJ; a4D4;lo6n0HUpp1DSsRWuO;to7VY;d0Ii0Hl00oVt mccalUy O;g6FAl6WFn0QLroman eRsO;ee,pirit inO; cO;hr25;mpO;er8EEiB;la7CY;cOdom8ECg8B9live 65X;aust deniMeneO;! O;c09IexO;ti82J;and02iday grai806ow00yO; Toa87JwoodO;! O;acco8HQblaQforever69QoPpi6M8r6EKsi7WWwalkO; of fa8HE;n 48T;ck2PY;hSj89TmaQroPvOw8CI;al6VV;binson peeHwe;d7CUrie O;com6M2;o8CTu7E9; O-point bu2MO;e7REkn8E6m1;! Oai4SJ;r5J1ta3E1;!daH; 30QenOi77P;! cO;auO;lf6SR;kOus85L;aidoOi5;! consadole sappo857;ch4PGsin 4SA;an'sRmanKwartsO;! O;leOs3QU;ga6OD; hO;ero3;a8GVbO;it,y;rmicO;haI;! 6O3; prison bel7I4ac,hs britann8H0onQs O;ho8GMvO;ic8FO;g 7MV;ac8DG;am ab1KYb3Jd3Der36g2Ej676k2Cl1Zm1Un1Mp1Gr16sUtPvO;!es;ac83YlerQman's wifeOtite5RS;'s bodygO;ua8E2;! O;fa77Qy7S1; 0Yashi 0Xen8ENpani0VtO;a6X0oPrionO;ic6GX;gr8D2rO;i0My of O;a0Jb0Ic0Ce0Af09g07i03j3A2k3IPl74Om00pXrWsUtOu67Tv1HHw2SKyou40I;a6YSe47Ghe O;au05Abritish faRca1VOeQi7CVjews in 7CEnational football leagu0MAoaklandOph835telep0K0un831; rO;ai6SC;lectric4MA;rt4VC;elf-driving Ola7P6ou2VCpa4yph6JB;ca8DW;ad7E2u7C8;alPersonal compu6NLhOiz7H6o88Vrogramming7Q5y5GZ;ot89A;es5YM;a6CCicrosoft Oobile ph8DMus8G6;ofO;fi8EX;ndArQsPtO;a80Bun3;l8CIraI;an,e88M;e75EoOr372;og7;a2M6i8B1r6TZ;ar7XHgy6B9nglOu7O6;a8BJi86Z;aRhOo2ZC;ePi80RrO;istia61X;mi66Kss;lOrt88S;enda8DA;a30Wit1PQ;maz2nOrtifici64Mu3RJ;cient israel and jud85Aglo-saxon7V6i8F3;cOog88O; 7V2al PiO;ty 38G;d2YXf7SDj4DHm1WLrankings of prO;esidents3HAime minister2OX;c and latinoOo8EK; am7Q2;eg7JB;dark mater3KFgirl fr5LH;aWoO; UhiTkazu kore-e8CYmu ara2GMnobu sak7J7o oSshiRyuki O;nisPsaO;na8CWwa7MB;hiBZ; ka8Ima;no8CT;ko ara7X8to;m4VFshimo7M6;ga801; hop5S2hop tamiz73DpO;ie,ocO;aQratO;es,icO; oa7WJ;mpD;dOes 4E5kley point c nuclear power6USterkaifeck 8C;enburg848i 7MXuO; RiQsOt7D9;!tanO; unil5H0i 7MU;sm7MA;aOc065d6RKku85U;st3FP;aPbo,esh Oi7MO;p6YUresham7Y;c635layaO;nOs; sa60X;arXbert38EdWfspoliz7LFlRma af kQton O;mOworldwi71O;cr802;li7XP; streetRaryQb57Xel sl4JDsO;borough Odale6VJong65L;d83Rs748; c3J0; b7VB;egard of bi1YLur guðnadótt8A2;iPy O;du7VWfa86Wha5SMswa7DF;a b7CQe BX;aruOiko7DV; nakaAW;e0Eg0DhPurashiO; when the1WF; 05-Tclere 72OePschool o265way O;of6A3t1JK;r Ost unclimbed 5FT;e3PJsecondary schoolO; cO;ertif603;bandwidth digital content prot75Xcontext and low-context cult6I7dTfrequency773intensity intervalSlevelRpQrise5D0speed railO;! in O;au3PQc50Qeu7M4;a5KEerformance liquid chro801; p0W1; tr1NW;ePynamic-rangeO; v6YX;finition Qnsity polyO;ethyO;le6;te44Jv6YT;dart5R0efficiency Rfa6Z4guardian spi8CDli6mi1EEno2plains dri4P2school O;dOm4YM;ipOxd;lo85A;imagOvi7QG;e 5UH; i8CEs bos2;hi817;archPonymusO; bos819;icalQyO;! of O;a3J9the cath64E; clusO;te7PB;den ReO;aki Pki Oo ko5E7takaLK;ka6Eto4JS;an7K4itsu7K4;fOmarkov6WV;e9ig6HB;atullah akhundza8AMiscD; never4M's al4L-man4Ka3Lb3HcaHd3Cge4N1i30l28m25n1Go1Fp1BrZsWtUuTwlett-pacSxPyOzbo761; ju703day2VZsel stadium82A; PaO;d4XBg2;ed2TT;ka8A4;rist8CS;eroOtienne 6SLz0;chromia irid7X2sI1;i8CCsPtO;ia,on blum075;e,i03;'s,a0Wb0Mcule0Kd im0S6e0Hgé,i0GmZnYoQpes simplexPri8schel Otfords48Jvé villechai599;space o667wa71G;! v5PI; S's jou7XSdPes of Oin,ku,n;might and magic5K4the s2EU; OotD;antOt7GP;ip8BZ;fiennesOmotoco6BPoWOs4TX; O-O;ti5VG;ia,án cort1WQ;aXeUiOès;one RtO;!agePiO;an7RX; mu4C3;badd6N3co6NFgO;ra7U9;neu68BsPticO; order of the golden 0M6i826;! trismegi0F;nPphroditO;e,us; R's herQn O;fege71Lgö7O2hO;es89V;mi876;ca4melv76F;cium erina42Etage2RR; comeP's lu6IXditary Oro and namaqua 353sy,tics06I;pe0; the 4T1s1VJ; poirotOs;! in li0Y8;! UertRiO;e Ovore89A;f4HVhO;an3U4; Os cuku894;ho4TNmarcu89HsOvon karaj1;obIpe80I;alPeO;de4X6;pe8B4;! hilm9clOk6PZldL;es,iO;tDus;aPburn roma55JhaeOta7ZA;stD;!r4titisO;! c; sung-t7WRnj3F7;an,drik verwoe88Gley passport8A4n0Boch–schönlein purpuGrOt7ZB;i06y O;b0U5c03da02e7JXfo01g5XPhiCiXjaWkis7SQlVmUrTth6AZvQwO;adsworth longfe10IinO;kl0; 7QJiO; 7QIiO; 7QHi17X;if7ol4JXug87B;anQ2i81Io34I;au,ee41Q;c4X6m3; 7QCiOv P; Oi O;of O;e7QBfr6OS;n88Crd;ng0vid tho506;aOeju7H0lKzer75E;rlton c53HviC; Oetta l4OKk i466;bergs2charrièBde toulouse-lautrPgiOmat2I5poinca50V;ra7PQ;ec;a,es6W2;aPoOp;gl0PUrrho87F; ma53AtiH;a,en04iZlQmutOsinki5RJve6CM; Oh weid82H;baka6GCko627sc0UA; Vb6XHeniToPra59PsOuva 4X1; a3GAi8; PfOwe5;re81B;kittyOneighb86C;! 6NC;cOstic0H; a15V;is oth5RHlet l3X4;anXYcoQgo82NoOum;cent67WsO;!p6HI;bacter pyOpt0;lo85J; Ra Oe f50C;bOc6LNmatt75Yze0KU;lavaOo16X;ts783;ch76Nge4LWhSke80EmQof tr6WZr623sO;haOke75R;pi7XKv0;ccOirren7B3;roL;ay3uO;nt82M;anYdWke maka55UlUnPr appa6X9sO;ei,man tr6NH;ek5rich PzO;! gude7S4;hOschlie7RC;eOimml0;i6r81I;ongjOu8;ia8;el7RLi O;fl5DWg5MJkl7TN; p1A2;geRoniPy laO;ma81W;c treadOsm;miC; 0N1h7JH;eQrO;ew Oid3;al64Hb56Vc00Hla7H5;i,p2L9;d0Glth0Dp0Cr07tTuxBCvO;enQiside step 7TFyO; Owe85H;d,met2MSra4w6XP; official's bl2EMlO;y cr07S; WhO; le1KQerOrow7W6; Os;gr514havriles771lock0N8mPo4YFrae53FsO;maC;ccPeOil867;nzi3;arO;tnE;cRdeath0LYePi87Lpu6E5si77StransferOw7CY;! MC;q5YNxcO;ha7QN;apa6FJ;d island and mcdonald760ing3O5st 6X2tO; Os of irQG;attack38Kfai1EOofPraHsO;ignMy77U; d7HG;so881;! OyK0;and appearance of mi1YOcare2N1insuranceO;! portability and accountability7J4; of R-upQac7W8ington hil69Vph85NquartersO; of the uO;nited7IV; dis7UI;gOs5QA;overn7HN;! and the masters0LE;i7WSlHN; di82S;fc 3UKmi,tv; tO;echnoloO;gi3;! O;go,m7J8n857; ji6Ka6Ib6Gc6Dd69emophilia68f67g65i5Xj5Vk5Sl5Am4Pn3Ip3Ar0Qs0Ht0Au09v05wXxe,ySzO;arQbinPelO;ight5ZVn61F; hotI;as,d1JV;aoG3den RlOreddin barb0DW;ey Oie du7PA;at6XZkiOm7PRwi6GP;yo7FK;c6JBpanett2M8;aiiTkO;!er PiOwi835;ng4OM;huPtO;em5FYyp0N9;nt0rrica6;!an O;a7JRi74Wk633la7FE;anaQeO; i Orsine500;been pwn611got news for6YA;! s7QC;m80Rs57te cou7TI;azō ad11Och5GIfield–mccoy fe7MChTsRtO;ie PoOu7O8;n garden safe deposit burg14Nri hanzō;jacqu3mcda4GF;heps60QuO;ne mi2GOyu86H;a yo73Cor; 6FTan Vb7USeen dillru7NVhRidQsO;anOie1OH;-i sabb7WKal bolki7WK;ic1X; QiOt7BO;mOsh;a 5USoto's thyroid6CT;fu7R8t81Z;minh7M3pik0;a23b22d1Te1Ql1Gm1Bnaaz5DKold 15p10r07shad06t01uWvOya7RN;ard Tey O;el7XAfie745guillRkPmi3YSno6SVva7weinsteinO;! s3KB;eOo6ST;itI;én;business4VFcOlaw4VFun6NV;las5QTol6NO;hi suzuRkOn al-rash83G;a tom27Wi muO;raO;ka7XW;mi7DQ; Phacn600sfield–jackson atlantO;a 7TJ;boc4RDfOto 7YQ;amily O;mur6I4; meh864;dy5D0i06o05y O;an262belaf65Tchap4dean sta6GXe03gregson-4RCh01ka6l23Um00nilssOHosZpRreQsOtread7ZR;heOt7AJ;ar0;dk70Iid7T9;a6S6otterO;! O;and the Ov16W;cRdeathly haQgoblet3DWhalf-blood441order of the5XJpO;hilosopher'sOrisoner of azk4J0; s6Y1;llo7WB;hamber812ursed1P1;bo7UR;ag0NUo2ZD;a7MLouO;di7UX;nf6GZ;ds,w4UK;eTsO; Qon O;ash809fO;ord7YJ;d6DLjaO;yar7KU;r jump j81Ct O;beecher sPtuOwa6BD;bm1;to3T8;! RePo7DsiOy1BU;cho82M;j75QrO; l7WLc4E8;seM;aSb2X0goRhQl22Xmacmi4B9pOr55Lshi1W8wi77W;erriOi71Q;ne7IW;are5OMo5RH;dwi7X3u839;braha82Und mau6S8;onPy's despecializedO; eYV;icOy ko783; Oa;me1o29N;an VeO;mSqu4yO; P-daO;vi7LA;more74UquinnO;! s7D6;! O;globetrot6C1r1H4;cob5eO;ll6ZQ;!diOm,wood82J; jO;udai7UO; Tcore Riness3FQtaJware rO;andom numberO; gO;en0YA;h467pO;o361u73L;disk77IrockOscience79Dw6T5;! O;ca83Ms6U6;haj5YXin,or–ucla medical 2PZ;ld PmO;!be;bluetOfair43Thard0NSqu2R6v2Y;oo7LR;pOtic 1RW;ieTy O;birthday 4J8c58FdRfeetQmadison 5CTplanPtree013wO;hee81K;et830;! t1X4;a6W6eath6FZ;r than 566st 30A; 0Pa0Ld0Ieda7RAf0Gg0Cja,k09lon08nXoWsRuQyO;a yanagi62Iu shuiping kaO;os7R0;kk7TIm1; R-ulrich rudIeQiO;e cron7K1ka motO;wa7SZ;atic7EZl and gretI;albert 46Hchristian and5T7f04Xholbein3H8is7WBre534zimm6WF;i,v0;aQibalO;! O;bu7E2le4A8mejb7Z7; aU-barbeGh O;arSeinRfLgQjohn-PmOsi1S7wadd3U9;ckKon3LYu7N1;kam5;ads7Y5ro81Y;bi6VK;en79Fte2SU;lström;'s raz7ZI; Oe bruins sl838;aOg75Wm26Op7NIvo7ZTwi6CE;ar2z6P5; Qing gardensPoOul,zh6UB;ut with y75Hv0; of babyl2;'em0CFse2NN;ord Ou;siH;bPe erçIj5R6kerchief 65NoverOs36; of ho547;aCra746; PfOkoto7JW;i,u80L;kiO;muG;cRd5E3hyoQji-PsoO;-h7U6lo;e81Qm4;-j752;hi64R;a05burg02dan bin mohamme01iXl7YMmTpSsQzO;a chouO;dhuL;a,tO;er,ri8;i,s3YIton court 4IR;am,erPing Oond o2W6u2PQ;co6PPdi370; Ohead6U;and si6HDfilm 5B7;dQltonian Psh liO;nkl6R7;me2TCpa7JZ; karz7QJou dial7TA;d al makto7MO;!erO;! O;bu74Bsv;d Os;bin khalifaOin7PH; al t5P7; 03al,be7ZGey 01f-81FiZlRoPstonOting4LLva,yna hutc0P7;! 5VR; Og5;ef56Hi4LVo12Owa7ZN; effectUeSiRmarkQoweenPuciO;g5Z9na7X6;! k7K5; c1ES;bu2RD; bOy's c57J;a4O6erL;! sens7Y0;fax 3PZmah yO;ac5PW;b4YNjoel os7BCluO; ri66P;am6Q6h480lOm3MDsp5TEtej819wi0LV;a1JGind5;a7TGeem Pim ziye7PLkOone ek3SRuo7JQ;a 77K;jXBolajuw2;ime Oj;isa74Zno 5I0;er,fa,jby4CWku,lSn1r RtO;ham bin tariq,iO;!an O;re3JFvod6SI;lo7ZW; 5MHeO; sela2RTe steinfeOy bi1W1;ld6U2;fi7SEgFia soO;phA;ez54Eþór júlíus björn6XB;! in european royal7UE;doJePi7IRrianO;!'s 0CC;an,sO;!to7XQ;hikō,kO; and s74a51RerOsaw r7IF;!ra707;ane7OTeOsburg2FB;as corpDr7H2;kon viiOst's17F; of n1M8;-w2;class battleship proposa7YCi7ZU; PG-PFaLWb0C7dań5ZJeGAf324g a6H9hG1iDWk2JVlC8mC6nBYo8Hr2Hs2Gtk,u05wYySz7CJävle go7M0érard depaRöPōjū-O;ryū;bekli te7OIdel's incompleteness theore7YJktür7QAtO;terdämmeru8z von berlichi1L1;rd6AS;aSeonggi prRlPms3UNnecomastApsOro0TV;um,ycrus3SV;es brandOfi sigurð6WPlenha40A;re7I6;ov7ZC;ru;angRenOilym3ZAyneth paltr7XW; sOdoline0SNpo7ZC;hamblin6VItO;a67Kefa7PN;haegun 34HjO;u upO;ri7OL;a1Jcci1Hdrun bur723e1Eg1Ci0Vjarat0Tl0Nm0Kn09pt08r04sVtenberg38SyOz 5VC; O-manuel de homem-ch4R3a7L8;berr4BMdSfPlomb1YPpear7Z2rit35YsebO;as1E3;awkesOie7VT;! O;ma5YVn7WO;e mau0NMol6FV; Vset500taO;f TvO; Re Pus adolO;phD;courb7VVdo4QAeiOflau7I0;ffI;hol7W8klimt,ma7DPsc1SG;sk6V9v;f7C0gri33Kkenwo6AZvan 635;banQga2k6O5ren laPu O;gobind7T1nan6VMrandha73Csomasund747;ga7HO;guly berdimuhamed7X5i j2VQ;a 7KL; violencXbarrelUd7W6ma 6L3powderRsO; Ohot w2A4mo70U;akOn' ros4W6;im4IU;! O;milksOpl7ZH;ha70P; hO;igO;hwK;e 2E8; PbOmo,ro7UStr7QQ;o,y;arab7ZC;ag,f PlOs4NC;!ah,iver's tra2QGy39Q;cOof tonkin37Rst7VPw9;a5R3ooperationO; cO;ounc7BN;!i O;la777pe753;ana space03d02lVnQtarO;! O;he7MVtun7VE;ePnessO;! world5RV;aOveB;! O-bissau5SC;na6S9p6UL;dRlPty gearO;! st720;aOerm4RCo5H8;in–barré7HWume c5P0;!fo7W2hall school of musicO; andO; d2I4; parti036o van ro0N4; centB;lielmo marOu mbatha-r7N6;co7NT;nther s05OrOss who's coming to di4F9;nsErilla O;g6X3wa7JY;! DRoO; g6X7;dYm,nOtema7XJva; Wch3gRtanamo bay QyO;in,uO; zh6PF;deten5EDnaval 7JG;do8xOzh6PD;i,uO; eO;mpO;er7UC;yu;alOel0Q8;ajaraPcanalO;! cLR;! 3NB;c game7W4m;a32e0Ji03oPuOyffi6AC;!mman tbf ave7G3n7FOyère 32S;cery4KPgu,ot,ss domestic00uSverQwPyOz6SO;pe7VH;ing p5UUn-i7OZth hor1MJ; O's4SA;cleve7QF;choTndRpO; Oon,thi6WY;b,of Os7WRth5FP;e7U8s301;eOhog69O;d 5FL; maO;rx; p3DN;dirGPffin01gorWmTnSselda Rts,zzlyO; P–polar bearO; hybr7UH;be9m1;bl4PEr5U1;ch,dr; 07Hgar of fantasy and a7OHms' faiOoiB;ryO; t2XF;i Py O;orl6VCp4WKzinovi7OY;pere4IZraO;spO;ut4;! O;d165gluJ;at12co-pers6FEe0Jg02mlin3SFn00tSville QCyO; P'29houndO;! l7JQ;aOde4RZ;li5;a Tchen PlO; b0C1;cPm7VRwhitmerO;! kidnapping pl7WS;ar6ZJorO;be7NH;gOscacc7JXthun7F1van f72O;ar4FZerw6SG;adOdIfell tower 7RGob7;a,e,ier2IU; Wg UorO; meF5ian cSy O;hQof nazianzDpPsO;car72Ci3J3;eJo7P7;in3ou7UI;al2XDha7FR;al4I8popo4RXsuO;lk4;ab1DKberl2S5chappeCdaUgTh2WIkRlPmce1WEod5sesOwi7UE;te7K8;a6XJiO;nd7ELpp7E7;iOur2JQ;nne9;er7E4ir22Sut502;n32Mvi3;ce5PMd05k 03nOr ga7AB; Y's XhouseTlandSpRsle6P7wichO;! O;mea7POvO;il1NX;ea7UV;! s3Q0;! O;ef50EgasO;! emiO;ss7OT;fu7GDth4UW;aQbPca7T6d2I1goOkn7SElan07Om1revolution73Et7PG;bl4;ay pac6DSoo7R4u47E;cr3nac3X9rr7T6;al5R6c636dark 75PfiBgOla73Um37Vnu5R5or27Xprimordial d68Lu53Hw21R;e5MTovernment-d0BB;faCy4Q5; YeO;rQst O;common divOg4T7;is7RR; Q-O;thaO;n 7AF;bo6SNeast asia co-prosperity 3FOloQm0M4toO;kyOrontO;o 5ER;nd2s4W7;a0Db0Achi09d08expect7O8fi06ga7UUh04l03molasses f02northern6OOoxida22QpZreWsTteacher oniSvowel sRwOzimbab3J8;allPhiteO; s3PA; of4I5;hi5ZF;zu6ZQ;alt PeOmog 0VKphinxU;al2WZ;la6WB;c5NTdPpla5VYsO;et,ig2SH; sp7UZ;acific garbage p5RKlaPow0ur7CRyramidO; of gi6VX;gue 0VCiN;lo7UL;ak3eap for3U6;eathen2WNornedO; o4ZE;lt0reO; 0V6waC;a6e1QP;cago 7PHnese fa6B4;arriPooksOri62J; of the western7ST;er re2WGngton524;mericanPtO;tra7GT; n77F;c22d1Veme 1Uf6D8ham1Pm1Dn0Ip08ss07teful d06uman's c05vWyOz; S'QsO;ca7on O;a712p3R1;s anaO;to5PA;asPbOco6HK;ox4BH;ex37Q;eUitO;ational RyO;! P's rO;ainb7RM;f68Vof5D0;accele7PBco56OsOwa7IY;ingu24N; Os'7AV;ac7DBof the firef1SS;hinese3SZ;ead6MS;ho4XUla7PO;eWhO; Ue6iO;cPteO;! o6H1; Qal us3ZFs O;cOdisplay re160pr6E9;a7R4ore ne0G0;de78Pn76M;colo75Wth5BQ;!f3XR; 0Fada0Dblue0CdRitPt O;gu2H3ima5SAmo4M0tiIF; xOe;ha6Y4; Pmaster fO;la7KO;admiral thra7Q6bl7HFc04duchZeXfunkVJmosque seizuBprix motorcycle ra582slamVtO;etonRheft autoOo555;! O;iOon7G7v;ii,v; nO;ationaO;l 696; ofO; d533;st,thiopian renaissanceO; d7PP;ess Qy of O;fOlithu3ATm7QJtusca6NX;in7LR;anastasiOolgO;a nikolaevna6OY;any2entral terOr6FC;minM; fa6EK;! O;cf,w9;cOto1SS;an6ESoO;lo3T6; p0AO-XmO–schmidt78Y;aTy awardO;! Os;for Or5PD;album Osong O;of thO;e 3KO;rPtical O;ca7QLge6KR;!ly;negaOposiO;tive 1VI; O'0VN;c1JHe37Ngr5FWhQki8linPmctavi7JLnOpo5T3;a7JKo2HW;eh1;an3AYiC;ed7A3fo2R0sou7QU;iPuate O;aptitude test in4CBmanagement a2AZrecord examin7L6sc57F;entQng O;in33SsystemO;s 552;! O;boos7RZdY9;eQie O;a6YPfa6J5mO;an7DL; Ola7NQ;and frank7P9b4Z4de7BAgu6E6hOj7PHk75Ps0YEvanderwaM;ig6JCo4VU; 33a32b30chuja8d2Te2Sg2Riânia2Qjong1ESku,l24m23n1Wo0Qp0Pr0Es07tXuWvernOwtam tinnanu7NL;ment of UorO; O-general 5IL;general454of O;cOn7NBv2CF;alO;ifoO;rnA;c1E6i6ZDt2GY;ac7FRgh whitl7O7la7IUt;abaya rajapak78ThSla7NDtOye;friPhard baseO; tu3OQ;d svartOed wilhelm leibn1TP;ho7MP; sRam 5YMen587ic Os;ar5J3f74Ela6ZMrO;evivaOoJ;l 5J0;ubc71P;ford 679pOsip 41N;elOo7R4;! O;m6C2of O;jPlu6SHmaOth5R7;rk,tth6DK;o55Nud7QT;!an drag6VBdRe vQg2illaPr the god b5E8y6CHōO; miya597;!z6JX;erbi2NTidM;iTonO; Osto7Q0;b4U2liQmPrOstewart north5EB;amsK;ooBu7AJ;ght5AH;an kn7QVe ho3ET;n6LNro; 0Rd0FgPsebO;erLum70X;i0ClePolO;!pl7PU;! O+,pl7PT;a05b7G9c02d00e70IfYgWEhWim70Pke303lVmUne7H8pTsPtrOv52Rworks2KN;ans4QOen7F5;chol9earchPh36Dit3l6CKtO;adAoBr1ZF;! cO;on2N7;ay,hot7HWixIlKublic dN;a70Me7MG;eNlc,o6EB;aOo7PZ;c7B8ngou7LS;e75Nl5IIoO;n7LQr7O7;oOri7F6uo;cs,od7;al2R7hrome1G6lO;a5CDoudO; pl1VZ;cc5SRdsQnaly5MHsPuthentO;ic79J;sis52Q;!en7O5;e 5HO; S-bye to aQbye Pfe43Nhart6AEnight punp7P1rO;ea7EI;christopher r05Hyellow brick S4;llO; th7B7;bu4JGcount4X5fridayRking wencesl7PJluck charl7N7mQoPtOvibr7IUwill7PQ;im3;meNn p377;an2KKorning5Y6us7PW;! O;agO;ree6ZE;gooOhaG; d1H6;d4QUe baby go6g Rorrh7JBzO;alo higua387o O;jOpo2RB;our68P;hyo6WTli,mPseuOy6RW;ng2OZ;yu8;be chimpanzee6IUo1Z7; 6AWan08dQemPgi appar24DiathOl79Ushifteh fara5CJ;! tabu7EP;! cre7IB; 04a me7L7bach's2AYenTfi7GJiPman sO;ac55L;e Qlocks and the threO;e bO;ea7MW;ha7LX; PdOe4TC;ood7;age of Ue5U9fl2GAgSh564joystick 6EAkam4FAli2os7OArOstate 0QTte44L;aPeOi7NZu7;tri4RD;spberry awardOt6MW; for worst p7B5s;atOir7MKlobe award3KE;e 4P9;pOte3FY;i58Oo7DY;har2QMr1LXs726; he5GZ; ac2XF; and mag6Z7gleb6PNury6A4;bbels6FNthe's f3AP; Rad77DfaQwin693zillaO;! singularO; p6ON;ll,ther of harl6GD;c0IOemperorJFha7KDis6FEof war Psave theO; q6K9;ii6XFragnarök;i58HlinO;! 3JJ;!ts head so75S;aGmin-7ES;arlsUk dinamo zagr54QoTuO;! O;compiler QgOlesser gOpP;eneral pO;ublic l5MJ;coll6GE;cc7BHme,s6W5; bar5RH;aOm69O; n5UKil;a0Zen0Qioblasto7G1o02uVyO;cQnOpho3W9; j7Iis j7In O;e6UAtu6AD;ePi6oO;g5l624;mOr7MX;ic7N0;coTtO;aQenOto6IQ;!-freeO; di7JT;miOthio6;c7KUne;cortico7KUneog7CPse;b03ck,na7MBomh6F3rUsPttal st6UYucester183vOw 2;er teix6KKo;sary of Oter 2SC;bittorrentQc24TmPnauticalQpOvideo gameQ;okerProfessional wrestlingP;athematical sy588usic termi4XD; ter7LF;iPy O;ho7;a PouO;s 35I;estef1fo7CXgraRhQin excelsis d68Rmacapagal arro6T5sOv21O;tOwa7FH;ein6F3ua7N6;atrick mc6F3unni6D0;ha7MV;alOe3MA; Pfound7E4izationO;! and world cities research5C7;cRfinancial centr42Bhung7G1innovOEnorth and globaQpPterrorism7M9wO;ar6P4;ea31Wosition5O7;l s6YJ;atastrophic ri5LWi7GD; Vda1DLnO; Oe head77D;beJcSdFJfRgQhoPmOs4KYyoungk4;cg578i7DO;dd7we2CH;ou7L6r6KD;o7KArE;lo7KX;ca6NHd43Spo6DB;dWgolVi7BOm UnsE0sPucOxosmithk79Nzer ownership of manchester un43W;o7EOus atlant3W4;gowQsOtonbury4E7; aOdo7IZes;nima7KA;! O;coma4JWs2VY;m6E5roJ;itic 3SD;iPos,ys O;co5YVkn7J5;at7IRus;a1Cb18f,g10l0Jm0In0Ao05rXsTtRuseppe QvePzaO;! pyramid0GH;n 0WFon;garib5LZver79Y;!a gopiOh4IQl5CR;na740;ele Oh gall6TJ;bOyash9;arreto fOündXP;et1FR;af7LLlOolamo savona045; SfriendRsO; P' Odo4V0;front78Yg4JSlast 5R0;a71Cjust want to have f7L3und panz0;'s5Y5;from now5TNinOm3SKnamed t70Ywith a pearl ear6Y9; r7GW;achino rossi7BArPvanni O;ribi7CAs11Wvan bronck2O;dano bGWgio O;aOchiTNmor507;gamb5r57P;! Ua SgerQi Pkgo bilo72UnOo d'acam52Fse8;ifer goo74JyF8;co463;! O;b3L5ly73Pro7E2;cOgersh2lollobrigi7JFmck7D4ro6IGto5KZ;a5HColad4AP;and t60Grum5GLta7DJ;li gl612p; 02bertYdXes cWgVlPmoreO; g3Q4;es QiO;an Ogan'13W;an1LIf4ITjaco5PW;deOv173; Oleu4I5;raF;a06Oit-balti6WA;or5;a ra4YNed24J; Po rO;odríguez orej1S0;aOgottf67Co'04V;ren7KU;birm3BZced5CRge4F1kOscott-h1FT;en1; y5S3aQg4RPiOn; hO;ad7I5; QbitPnO;oto75Vto50D; ethe6HH;chikad4HOnOt6FC;eva7IN;bQrPson lesO; pa5IP;alt9;on,s free3YS; c02como 00da Zl7BSnO; lWcarlo esVluigi TniRtO; P's causO;ewK;p7IDs24Yt6JP; 6AHna fac6IIsO; antetokounm517;buff2donnarO;um7CG;po02E;orenzo berOuca passi de preposu7BI;ni79S;colagrEJd0YH;casa3SEpucO;ci79P;aran6ZSopFP;aVeUislaineTostO;! Pbusters6LEeOface ki6DHla7G2wrRJ;ma6;aPdo76Jin theOof tsu4K1pe4O6r5ZPto7GZwhisp2A1; s4MW;dvent5OL; max6AN;e,nt;na5DMriM;ar57c6S6ddy3IYe54f52g51i50l4Zm4Xn3Lo1Ar00sYtO; WafeVtO;ing Sr,yO; QsburgO; aO;dd6UI;fa6B1im6TY;over it with bennett fod72Jstra7GIthings O;do6;! 0E7;ha7H7rich or die try393s3T0;ine bullock-p3AJtaO;lt28Wpo;a0Nd 0Mhard schröd0i0LmYoni5V9ryRtrude Pvonta01QwynO; p5R2;beCpressOs6JU;bu4D7; PmanO;de6VT;aQgo52RmarPraO;ff5NJ;sd5;da7HCnd the paceO;ma61I; theory of709aO;ine 08nO; S-occupied06PiOy5CV;a,cOum; Ous;l6TApO;a37eo4YB;a00battleship XcUeTinstrument of surre6BGk0LLla6REnSoQpeasant0EDreOs4EFtanks 3TS;sistance to na01MuO;ni3IT;ccupation of OrVW;c0V8n14Jthe channel6GR;a5W6uclear weapons363;ast5R2m741;oPruiser O;admiral graf sp7AFprinz eug5;lAVn5MG;bPgneisen6WSscharnOtirpi7B4;hor7FB;ismarJ;irOm6TLr5DT; f5EScraft carrier graf zepp6GY;fr4AVg1KS; halli699t7HQ;mü79Gvon rundste6OV;lPrd O;butl70Jpiqué,wK;dOt of rivA; Tine Oo 2IL;cRj6HAmcQsomD3viswO;anaO;th1;ew1;ha4CI;david las6K5fo7FVmcr23J;c1Xff1Sg1Klog1Jmetr1Gp2TNrgQstOthermal3WF;ationaryOo74Z; o0J3; 1AeZiPy O;malenk6GIzhuk6GI;aQe he540nOsm;a Oio wijnald72P;c19Cleonid7HW;! Pn O;eGla6QD;bulldogs6KGeT8gQoPst5AOteO;ch,n5AE;'keef7HI;roo7HNuideO;st7FL; Ss Otow4ZC;bata6COlemaîtBméliQsO;e0WIt-O;pi2BF;ès;a0Sb0Oc0Md0Le0Kf0Gg0Dha0Ai06j05ke2Z7l04m01or68DpYrXsUtTv6QRwOzimme647;aPeO;ah,n6NY;l70RshingtonO;! O;ca5G4un5Z7;ak6OPhoroP7;andPegMh1ILor793pa4W6tO;ephan6UBi671ra7DO;!e7FB;a5LVe6AQ;attPeO;ll,p19R;on 6R0;aOc09Hea64Richa42H;lOrt4so4YS;loL;azen7C7incoln ro18Mop79Xucas7AI;e5SEon3u8; of greQiOv; of great5P6iO;! 1QV;at5P4e7G6;l7GWrrO;isO;on6A1;al38HerPurdjO;ie6YW;shw4;loydPor5WXrideric haO;ndI;! O;prot0HT;li7GZng69FzG;icapr6ET;a4R4hakOloon4AOo2ERro7FIuk7D6;irF;eQlaPoo7uO;rNsh intercontinent749;ke,n7EJ;ns2rnard 4VDst;lagi76Irmstrong cu769;cant7CZstanford3T6vOwilhelm friedrich h3BF;on tO;ra6BQ;ic PyO;! da77T;d488me1p59Bse77G;ic time4DTy;raphPuesO;sr;ic RyO;! of O;associatiOi6O4;on6IO;c2WKiO;nforma0LW; Prey O;chaU1ru77H;cPjOmi76Y;ohN;ap3o76N;ac3V8entric603; 2W2a ro0Yd0UeXg0K5iWnVoQrikh ya75Sshin imPtO;i7l5Q8ri3FR;pa6R3;a,cidePme,vO;ese3QF;! ofOs17F; indigenousO; p4UZ;ady golovk4dy tarta5RN;tal pier4UIus; 0Galogy28Ulia0TXrWsis VticSvO;aPiO;eve l6E2ève bujo7E2;! coO;nv1L7; Pally modified orO;ga74H;a4A8d5G6e6RV;di77Bflood nar2U0m3CLp-o1E3ro6CE;aOic14N;lStiO;on Pve aO;dversari54Hrt;aOiv3J0w9x,z;lp63V; Qized Oplan o7BU;aOlinear5ZC;nxie5FU;agreement on tariffs and4YIcertificate2QXdXeWhVmTofSrRsecretary of the cO;hinese com2G7ommunist partyO; oO;f t0RD;ela4PF; the armi3f2H8;an29Yil7CSotorsO;! ls-based sm2I7;osp4XP;ducationYMl0UY;ata protection re132y3MX;autLb155h7Qk6STrQsPtOwi4WU;h2JEie70D;a74Mim693;ay4VYoddenb3BM;arm2N5erO;! O;dysphXKeq2SDiOro7sy6EG;dV7nequality6KJ;wl6CJ;a64Dma Os672;arte24Bch1j7CB;at4i raubMlert grindel6C8;co,ger 3G1s634;ard mousa751e aku76A;fen57NorceO;! n7C4;k 1STly,naWMtha O;ar79ZgoviO;nd7B4;box 5YZing56Js O;of67W;b2Tc2Sd2Qel2Pgan b2Oi2Kl24m1Mn1Dr0Hs0Bt07uYvUwa4yRzO;a Opr6TD;ci77PsO;tr6Q7; P-friend6YPatri maOniggers from outer28B;ntG;m5nigger association 3KTsexual pract6RH;in Orilo princ6Q3;andres5bazu42Rleath2V2mPnOross51Kwo7DZ;ews6T5;acle7DXci587;g1KMl39LrVssRtO;amOe8; ada73Fa buO;dd62H;'s5YGian O–seidel 7CG;bPeli2BHfu6YLiOp6U9quad1YL;ntegrM;e7AJl6TZ;i 592;ePling3HCoOta62Hwick71D;-6GZra615;n matarPNs mc3FVway O;ar71Vof6LI; Ql37Mo70Npar noé,troO;eOintestinal t2Ypo7BI;nter5JVsophageal reflux6UL;cPtO;ur3OV;ha77Io4Q9;a0Iden0He0Df5P1g535l7DQm4r08th 07uda06y O;b01coZdou7AMgYlWmUnToldm76Opayton6EPridWYsSvaPwO;ald72Me5N6ilm7DL;lenOyner3JO;cOti6;ia6KN;cott45Nini7BJ;ev684um1;ca67Yer2DPoO;oBrt2;a6RKinO;ek0;en228li5E0oet6AIyg6OT;leOop0;!m1;aQet2K6uO;rgOsE;e7BRho6UX;rl7AM;! indL0;br72Oje1PS;etQison kei5IOoHyO; O's m7CR;kasp5OSma3I4shand758; dilla295t O;hed65Emo31K;naPth baO;le,rL;! freO;e 77N; of 2JPi8;g0M9m2EY;bare dōki-720da6HNes615gQsu,tO;tOz; c759; Ses,nam s5B4re6sPubai kathiO;awa707; of784tO;aOer disci4RN; r5BL's paradi7AM;ba8of 522ra70D;al abdel04b01eSi3C5maO;! Q-O;aminoOhydroxyOray b013;butyr34K;co64Hd441fu6WYrK; R+,br6I3cu5DWm3BSr,sO; workPtopO;! short squee491;sh6JI;boyPchanger63Je5Q7fOjo4YPo79Rth4UB;re684;! O;advanceOcOP;! 5EM;iPlO;er's4FHi8;a 65Hno3MG; na36Z; gad7C0aYba,e XiVlPwKápagos O;i69Nt6B0;bla3T2eRiO;c 5UCpoliOum; cO;ampai6QW;on,ry of sovereign stateO; fla78A;cia5TJleO;e,o galil6IQ;anne hu794go4H0;ctRdQh776nPva6V1xyO;! q75V;thD;riI;ic 1XDus;aQji5WAnOus ma6KJ;-of-functionOax; re3FL;! h07S;iya70R; garcía be35Ds; elm5RIsdeO;n 3US; 62Fha 6V5;ape2SKby giff6ZSe ne61Sle stev68EoZrielOy hoff6T9; U'sTaRlO;a wPe O;anw9cartWNu6LO;il5YG; hO;ear77J; inf5CR;aubLbQgarcía már31CiX9j395maO;c77PrtO;in5N0;arbo6S7or7B3yr6;n54Hurey sidi5CI;co5Y7dr4LPea6R4f56Wsp7AY;m32Dprotein-coupled6P9s1DC; is fo3KP-N6aJLbi JKc JDeGUfGTiC2jo78Aka twi77DlA3mA2n9Yo6Tps66Wr14tse all-world index 5D1uXxx,yVábio coentrUéRüO;hrerOr eli78X;!buO;nk0;dération internationale de l'auOlix auger-aliassi7AC;toO;mo4CV;ão;odor dostoOre424;e5MEye5ME; 0Tb0Re0Mg0Lji0Jku0Fl07mio kis6E9nZrXsion6P8tOzzyCK;ana76AsMurO;a72GeOi70R; Qs coO;ntO;ra6LH;combat aiG2d6A2nostaG4of O;an expanding6UJe6K9the O;indianOroyalO; na5NG;oseOry fand6P9;mi5XK;cTdamental Pgi49Bi6NWkO;!y1K6;iQrightPtheorem of cO;alc34C;s 6HT;nter6L7;hMtional O;g6RDp0Z5;a 6G3gencio bat6AIlO; Oe6U1metal aQ;brRh781metal O;aOja3HH;lcheO;mi76B;eakO;fa769;o6EFshima O;daiichi nuclear Onuclear6Z9;d6Z9pO;ower2RO; tOan,t5VJ;e30Qv;a59Fe3;l QrtevO;enO;tuG;ceCiOo6M4;nj61N;ini'Oo5UZu;s 48J;manc4GF;a2Xe0EiXoPuOédéric chop4;cto77Gits bask75D;do bag5K6g,mRntPstOt,y gutierr71Vze6P2;biHpu68M;-end web6HAend and bacOier2AN;ke751; Oso5TQ;dusk till JFhere toOthe earth73Bup on poppy 4B0; eO;ter4VE;c74Eda02eTgSsiRtzO; Ol2KI;h46Qjoubert duOla8we6O9;ques6;an6J0;aHg;dQndsOs71O; withOh6KR; m5VI; Rrich O;e2EZhPnOpa330;ietz11T;ay65I;chiO;ck5; kah6ZQy night O;di3PHfunk2XZ;aks and g25d19e0Oi0Nm0MnUquencySsPyO;a a3ESja,r;h off the Pnel O;e03KleN;bo6TU; 5OU-sO;hift ke5CC;ch RkiePulum of prepuce ofO; penF; de O;jo8;a0Abulld6ISc07d2PDf01guia6TEho6XFin00la6GJmon2QWnXorL4pWrRsPtOwars of 293;hird4AWoa74Q;econd4AVouthern and antarctic l660te6AXubmarine surcO;ouf;eOivieG;publicanPsi2CSvolutionO;!ary 5QM; cO;al293;e6E6olyn5H5;aPewO; wa6WX;me,vy;doc3UZvasion63Y;iRoQrO;aOi3;nc;reign le5RBurP;fOr1A5;th4AE;ampaign in egypt and4LKoOui5R2;lOm28N;onial 6SP;cademy of6TPir and spa4NGlg2CSnd indi4MUrm2UR;anezum4Y3m multipurpose6N8;burg im breisg6LIda p5Qk6HS; 01b00cZdomSlanceQmOwaB;aOi6S1; agy5NFn d3TXsonL; mOr;arketp6QH; Q-O;class littoral cO;omba5RB;caQfront 6OKin5Y2ofOsh6J8wri5EU; sO;pee6VE;ucD;ad,ode4NH;sd;and open-sourcTcity of dSdRfQg3XFpapua4W2soPtOwill156;hr74P;ft6YXlo;aCr5LB;ownload man21W;anz62W;e 5RJ; 06d01ericRriO;c49Mk O;bOneij;ac3TE; WkO; Pa mandelO;ba6RB;dougCLf34At6B7wiO;lliam iPnslowO; ta23C; PiO; Oi O;of p62Q;for5RY;ie Py O;fazbear's pizzeria5O7kru2GP;fri5HIgPhigh6ZFmeOprin43Cstro6YI;rcuL;ib5AZ;aWbaCdV6gVhUmac38Uro6YVsRtPvanv6CIwO;a73We72Wil175;atascOh3YOru5C4;ioB;aPcOirie6MA;hne5LU;va6O6;am68Zechi6OK;wyn6;ga4nd georgePrmOst3RV;is5; wO;ea56G;ee6VS; f6XKct21g1Zkt6M5me 5N3nQsi0ternOud;al birth order and male se0SFities and soroO;ri70O; 1Uc12kXtz f3TTz WçoisO; Q-henri pRe O;bettencourtOh266; me4D5;dPholl01leg3X2mitter4HIpOtruffa4ZQ;in3X1;a359uO;vaO;li0;beckenb4V6ha4NLjoseph i50Ek543liszt,sc57Zvon pap5; 04-walter steinm03a pot02enstein01furtZiRlinOs; 0ZJ's lostO; expeO;di70Y;e Onc53X;a58Db4V5edg9gPjOmun17Tv0TI;on759;oes toPrO;an5ST; hO;olO;ly6BU;! O;a6SWsc4KM;!'s4P;enH;ei0;abag1VWb0Ac08d07fa6O0g06h01lZmiYoXrUsRvQwPzaO;ne,p097;e5U7h3A8;in6OJ;er3GBhePinaZ2omO;erv5ZU;er1;ei6T5osO;enO;thM;ce1z;ll0r;aOloyd 5DPuc74M;m0X5ng744;am0erbertO;!'s O;childrenOdu6; ofO; du6;atli6MJehLif5UGoBr4WD;arabo6O3il4FJux;aOo6VO;li,pG;ru6BT; weer0Ee03his02iRk QoO; O-4JPist4IB;ne6SIzeffir5GK;kessié,ribéL;a,sO; Pco O;fr3WJgo6BYmacías ngue6WDpiz0ZM;bUcTd3U6fRgaPi2BGlaOm5YXngann5VMof as6URxaV3;wr71L;lt2ry O;po5RR;ord copOuku67V;po73I;ol3DDriJ;ac2;e t695i8;! XsO; TcO;a Qo O;barac5SOsOt2MX;chet315;aSVea5W0hOw3W3;ay33D;beanOconr5RAde la 58Wfi5JOha,mcdor2QYshand ky4RH; cO;oba4;in the mi04Una5XD;wi6ZN;dres649jOkra3TTlebo65Qtarke5ERw05S;eff6UP;gl0DAile O;stat3IWx6MZ;al,i2;c2Nggy4E1ie2Ml2Kn2Jo2Ar0Xs0Rtheringh0QuWxOyle's5X4;! QcPtO;el,r73O;at641o6LM;br5TUc5LUki6S4nRsO;earchlPpO;ir6ZK;ight0KW;e6U2fl52E;cault pendQNla,n0ErO; 04-01ier 00tO;eenYhO; Q-wO;aveO; femi6S4;cTgeYJinRrOwaC;utteO; cabO;in6Z7;dustriO;al 2L8;ru5K; w6RLth a83;se6TYt0FW;dPstOwheel66A;roke288;imensional1WY;asian ti6VBhQl2W3noble trut4J9sPtemperam6Y3weddings and a fuO;nerM;easons hotels and res3YIy4NK;illsRorsemen of theO; aO;poO;calyp70V; tO;ourna6CF;dOtain4A1;atOing fathers24L;io4K1;ay 5RC;silSterO; P's home for imaginaryO; fri50O;thO;e 68J;! fuI; 0Yb0Tce 0Sd0De08g00mVni61VrestTspStOward6VOza 33D; kn63Ah 42QnitePr1une favoursOy-seven rōn4; the MM;! O;battle4B3w19L;ok5; gOal-KD;ri4LGu57W;aldeRic6ZAula O;e,oneO;! O;c9eng6OX;hy5PD;eSotten O;rQwO;eaO;poN;eal6ZU;d iPtting sarahO; ma371;n 6WP;ign Pnsic37CplKsO;k4t wT6;directPexchange08Srelations of O;c3ORi69Hna6J5ta5K5; invest6BF; Oh04I;bron6NJcrown v00eZfYgt,mSpRra6JXsuper du6UZtOvNA;a6MKhPo11MraO;ns6XN;under2E;in6IY;oPustangO;! mach01F;dPnd5MUtO;or 5RR;elOular26N; t;-53Ji5BGocD;-53Icoboost26KsB1x08F;ictK0;i690majeuB;esPidden O;ci6UJpl4RK;!' list of the O;most valuable football clu55Mworld's highest-paid athlO;et3;a few dollars 6TYhOlo68Dwhom the bell t0SN;on6XD; fighte30Jb9dStO; QballOwe9;! O;i5FWleague first 4JFp6P0;bin6EEf34O; Op6YN;and Pdeli69Ui4RSp0G3sO;afety and standards authorit1FDe1HU;agriculture3V5drug4AT;d6OTt awe1W7z6Y5;aHie à de5P2kO; E5loB; gr70E;al lRus O;fPhomeO; i554;eat551;eng6IA; Oaf6YS;fPher3LYmOsc9;ag,ini6S5;al,ive-s22Xnc; 67Bo62D; 4N0a11cl,e0Vi0Qo03uUyO; me6UI-by-SdPTing PnO;n 44V;a6Z9dutc6I8l039spaghettiO; mO;on6PT;wiB;i1HIla 172oRsheQtOvoxa5GPx;e,tO;er 69S;d 6TW;rOxe4IN;escenPi6oantimO;on2S8;ce,tO; la55O; 09ating-point a08o04p03rTwPydO; p1BW–warshall3UI;c6SIerO;ing2HUs O;for algeOin the att6ZZ;rn2; de la459enTiO;an RdaO;! O;ke5S1m1p2H5sO;chool for 3XIt4S8;munt0YBze6QE;ce Ot malou6XE;andPca2L9faivBhOn1IBpu6T0w2S3;en0ZN; the4DT;py di4YDs;d Qr O;and ceilingOja5BW; fun48B;my6H4;rithmet6ZI;ri6X4;ckr,ghtRntQpOx6OV; Oka6Z5;or fl66Jwi623;! water 2VEloJ; of the nav5J0pl1;ab645etPmi6QFsch–kincaid readability t001tcher4R8urO; 3WF-de-lF; fQwood O;mac5RZpark racetO;raJ;ox3;c,gYmWnVppTshRtPvOx,yi8;io bria5KLor fl62R; e68UironOli3V2ul6W6; bu3AN; Od5D3;go447me304th3R4;er,y O;bi6W9;de6WInery2B9;eOin5MO;n6KMthr6DF; Pel5F3s of O;eu673the confederate state357;c63Tof O;aTbr0L8c0L6eSfr5CTge5O6iRj1SAmissiQnaY3ru5UPsPthe O;n3W6ph6LEs1H1u2PR;o0KUpa4;ssip3EO;ndAta6IW;ng6R8u66W;fg69Du2AH;a4Ab44c3Yd3Se3Nf3Ag33ji,l2Ombul2Nn1Kon1Gr0As01t00veQxOzz bu15R;atO;ion6XH; R-Orr;pPstar Oyear planBJ;ra5XM;ercent 1VSointed 0AQ;bedrScharacters in search of an ex6UAey3fRgu5QKnights at freddyQpillars of6MOstaOws;ges of gOr4N2;ri203;'s;ami0WYeet6XYinger death pVE;oo6W0;b6U4girl rep3C6; VcUhPtO; of the north 0AHi8; andRerO; P's exact 5FO–yates sO;huff7;inf692ki8s2CI; c66Y;al 2PZ;alpine ski30ski jumping30;!axis5AJe0Lm0KstO; T-O;fo6XSorderQpO;ast-the-post vo6XNeO;rson3FB; lO;og6XR;a2Mb06c01frenc1GQiYjewish–rom4CRlaWmexica55Xn6QLoVpr4Z2reform6SJsiTtrPwO;orld5R0;anscontinentalOiumvi5EJ; rO;ailO;ro6SZ;no-jO;apan2LT;pium5QT;dy1ZAng65LwO; of thermo1EN;mOndochina5QQ;peachment ofO; d82;hRoPruO;sa5KH;nOuncil of nica6QVw;go5QK;echen5QJ;aQlo6WUoPulgarO;ia55D;er5QG;lk4C5ttle of O;buPeOthe m1YK;l alame4;ll43O;a66LwaB; Sa6JGbRfPhose of false6WLwO;at6KWor6MH;lyOox0MR;! 47L;a6UUiH;eOf4SPin the sCWm4LLos,pTZ;mblemOxtingui5CE;! f6JF;a On1GU;a6E5bPgubOsh6LA;el6EK;ru6VH;a08d01eZgerp2GRiWlandVnO; Sa6SEeRish Oo-ugr66Hs;aPc540defenOla64O;ce48Q;ir4SDr4RE;as o'c1IFgans 505;bál6SNco7j6TXwO;itt6FColf6TQ;! 36Wi3YU–russia165;sterre2C3teO; O-state4AI;diff5FWelem1BWf57Nimpulse35; O-structure 48S;a6W0gaIyoung canniba6TS; Ring O;a6QEdoLne57OyourO; rO;oo6RH;a Pmy ipO;ho6;gra6KV;l Tncial Oste5CZ;and social rankings of sovereign statRendow65MsPtO;e45Oim3;eOtate65K;creSBrv691;esJ5;cut6ANdeYfantasyPgo6VJsO;o2DWpa6UO;! O;iUtTvQxO;!iOv64K;!i64Jv;!iO;!iO;! rema5WUi;ac4RV;i64Ev,x;sti1SZ;wi5S4;eYiUmO; Ofar11Pma6G9natio5G5;diRgQi4M9no6R9producPsO;coBe6M8;er,ti2;enB;re6HKs3MY;bu6KRpO;i281po iO;nzO;ag6IE; Oh4BPsystem hierarchy68Ft mi2MDz3ZD;allocaPex026sy4W9tO;ransfer6BR;tion6QC;htOure ska6UX; S-or-flight1WerPing O;de5P2ga6UJwith my 5M2; aO;ircO;ra4Z5;cl3R8for my4RM;aVe,tO;hPy shades ofO; grE; P-O;generation608;aOgePXh34U;menO;dment to the united states co2SZ;! O;clubQwoO;men'sPrld O;c6BUr1FX; w11R;ldOsta 1MV; P-Os2T0;effect3E3programmable gate6E0;goMof drO;ea6S8;dler on the 5TOeO;! RlOsz; caPity invesO;tm6PD;st6I5;ti6DMw0QN;k's laws of diffu6FRtional Pus religO;io6BC;planets of the solaQuniverseO; ofO; harry po4UR;r 4V5;erPonacci5RYromyaO;lgA;-optic cPgO;la6SI;ab7oO;mmuni5TA; world endurancQcre2F8nna fá66EtO;! O;chrysler a2OOm5GDp6RH;e 65G;mp39Sp9A;a1Vbruary 2BRc3d18e15l0Sm0Mn0GrTsRtQuda5CVv0yO;en09VnmanO; d1KY;li6T0ty w4SN;s 1EFtO;ivDus eze6JZ;al0CUdinand 06enc pusk05guson20Oland men6C6m00nando YoXrQtilO;e crOiz0;es6CS;aRePis bueller's dayOomagne57W; o6B6;ro Ot;ro5TRs5Z7;n Pri testO;aros6AI;jutglà,to4SK;cactus wislize6IKze4F8;aOto4SI;lon5QR;at's lQen596iO; pOon;arad5TZ;as24IittlO;e 3S4;ás;de saus4BTiPmaOpor0LZvii 46O;ge2Z4rc6KD; of Oi of ar43P;a5IGbu31O;cingSder strato45BgQneOr6ORtan3M7ug3T3way sports6A5;c Ol;f5TPs0A9; sh4Z1hO;ua8; respon6QT;ale RinPke halGUmO;e fa6S5;a Oi6IV;ge34Umiss60B;ejaNFgenital muti58Yhyst1XOreproducO;tiv2MX;a ku5EQdsp9iPlOo5NE;at5QEow of the roya3AI;ciVd6E6foUn6E6pe Rs,x O;dzerzhi5OBlePmendels3M6sOyusup5QN;te4U0;it0;mPviO;! 461;as69J;rmA;a54Dty O;hOj6PSke6M9;uf6JC;dPling O;go6RW;baJforward156;eQorO; emelian5NWaO;! l5GA; 2E7rPxO;! e32Uf53E;aRico O;chie695fPgarcía O;lor5GH;el3KV;lStO;ed states of micrQionO;! of O;bosnia 2ZUma2RT;on50S; PisO;m,t6KX;bureau of inves1H1communicationsSdeposit insurance59Vemergency management 235governmRholidayQr0OQsO;ecurity3Q5ubjecO;ts5NK;s 16H;ent1TG; cO;om45N;r Tst of the RtureO; Ps of tO;he m1ZR;fi6MLsca6JM;a6PYcircumcision1LRholy nO;ame 1KC;and loathing inQfactor0P8of missPst6N9the walkO;ing5I2;ing41H; lO;as v21I;augs47WbaQda34SgPmidtjyl6JVpor68Jred bull salz47WsOzenit saint peters47W;hakhtar donet4PYpartak6OK;irondins de bord37Noa;rcelonaQsIyernO; muO;ni6F2;! b;i6Q2most wanted terror2QJten most wanted fugit2K3; c36b30c2Pfn6MThadh fa2Oi2Gke2Fl1Tm1In16q,r0Ls08tVuUvTwSyPzeO; cl1; riPe O;dun6KLwo8;plE;ad 4LXlty 5E6;e6PZic2;da,st,vi6GY; Zal Xboy WherTimQs doPty O;ac6NSliver67J;mi5XT;aOid6I5; sana shaiOh;kh; O's52N;christmas iOjohn mis6JTt6LF;s 3ZY;sl641;atOf7RinsomnA;tr61H;j5CQleonard 6KDm1;cZhionWtO; O-moving consumer06Oa36Fer-than-l6MYi8;c17HfQinverse square Ptimes at ridgemontO; hi6JN;ro6Q9;i6F3oO;odOu02Y;! reO;stau5LC;! O;accesOi4GY;soL;es,i6G8; 04-03aYeWhan66Iming57KnazVoTrah PsO;ca6DT;aQfO;awO;ce6GN;br3IB;e5NHkh engiOuk L5;ne0; sh4FX;ed z0BDs fO;ar3;dayRh O;kh1pO;ahO;la495; ca67E's law of iJ1;l20Pright20Q;cryPsO;ide of6JM;! new O;da6M6; XdangoWnTtasO;i1tic Py O;c014fi6KKis6I2liC0;beasts and where to find th5H2fOpl4FN;e6LPourO;! i6KF;ie fla5CCy O;andOb4WL; a21V; m3CF;bOf623s3NO;ing2WW;as,iOke jan3A1oti1DW;ly One;a30Jfe64Bg3F7mat4WGof StO;i3ree of O;british monarc459mu3KCthe O;british rOgreek2GW;oy2OO;bQdOj2G2;onaldO; tWW;arac3UC;a07con06kland05lRsOun 1OP;e Oifia3NS;fl5TNme2PXpositives and false neg0RPvacuum dO;ecK; Ra4VWen aQingOon sher67Nschirmjäg0; Ow5DI;in rev68Sski3;ngI;gu5GUoO;f Out1Z2;constantin5UKsTthe O;berliQwesternO; rO;oma4WP;n O;waC;aOi0AM;ig2; i5LYs5HO;! hea51C; OfI;ch5; ne6EQ;lure mode and effectUrQsal o6DYthO; Ole6MP;e3A6hiCno 6GW; u6M4porQuza ba2GAyO;! taO;il,le;t con1ZS;s 1C1;as60H;eUial recogniTGtPundo campO;az6C1;ions of ha6EUorO; 1BWiQy methodO; patO;te6CT;al,o; with tears of joy emo5O8bookPit,punch4FXsOti6N9; 357it6NK;! O–cambridge analytica data 6HM;messe65U;a4LGergé4WDiQle3G6rO;izio rOício werd67Z;oma5UO;anPo O;cannava6BElanzo6CS; 35Go carua68H;ommunity Oup;sh4YS;nu6H7s4EBte6JR; OR-OPaN7bN4cMDdJVeJTfJEgJ1hlers–danlos syndrJ0iI6jI3kI1lDQmAYn8To8Sp89qu84r63s4Xt44u2Lv1Ewan mcgreg1DxWyeSzO;ekielQra Otv;koOmi6DZp0XT;en5J1;! 08X; Os wide sh4GZ;cPmovement desensitization and rep02Cof O;h5WJproB5the35;ol6JD;c0Ye0Pf68Dhib6BTisten0Lo0Kp07tOxonmob5ZN;e03inct00or6IBrO;aTemeO; Qly largO;e tO;eleG8;j4B4p0BZultraviolet liO;th6G1;cellular62Oordinary5E0sensoryRtPversion and introO;ver68F;errestriaOor5AK;l 6M5; perO;cep6HZ; in tPionO;! e23C;he3KD;nded PrO;mina42Q;euclidean3H3plK;aYeVloTonentiaRressO; 4L5io6BAvPwayO;s 4D8;pn;l Oti2;d3E1fu66YgM0;itOratory data 1AG;atio6HHs of a young don ju1;ctPdia63Krimental O;m573roJ;ation–maximization3GSed v6A7;nsionOtriaH; of669;!c6I5pl4CHr5U3tic s2LU;ce PtialO; 2I8i6CB;ofO; g6LS;cutOne cerven5QMt0;able and linkab436iO;on Rve O;c9d67IpO;rodO;uc0;by firing0R9of O;nguyễn văn lém,saddamOthe romanov 5CX; husse4;aSess mortality in the soviet union under0CQhange-traded RlO;amPusive O;economic1X0or;ation 5GT;fu6HF;lib61Nv651;or6EP;a0EeUgenia medveTil QoO; m4AlutionO;!ary1AO;deadOe3PO;! O;ii,ri6JI;de5JX; 04l02n01rO; YcXgTnoHq6FKyO; breath you RbodyOday 6KPthing everywhere all at 0QBwhere at the end 6KU; O's talk2AL;hates chrFloves rOwants to rule5BX;ay30Y;ta5MH;lQrO;ande62FeenO;! a-class contai0Z5;ad3ow;le9;aOg3QA;ft0n0L2;-toed ungu3L1t 2LX; kni34Yyn O;g01Uw2NQ;a5R9babi6D3he5DZoOplu5AZ;f tOn67Q;he dale6AH; WnO; Qder hol3SUe5ZIgeliPnaO; l3HN;ca53Xne l3EC;al2IBgo36Sh1PGmRpe4S5rPsO;ha4K3pi2FE;achel 5R1odriO;gu3;cpC2o04L;aTbScaRgQlPmOper4E2;arie s19Je2HP;ee kunEong37;ab6GRre5;ssi634;ra6JG;mur6G4ndersson-d36W;c12daim4R9g0Uk0Tler0Nmill3SVn0Mph0LrQtO;hOrophi5JS;an650;asia0Eeka4YYip569oOyth4ER; 0Bc09d4YFfighter typ08le5VNmaYGn06pOst9tr5W3vision so51Xzo6;a universalis 5TQeOl3H0;!an O;b5FDcWdVeQfree trade1L8parlia5TVrPsOtheatre of2USu5UNwildc65H;ingleR5pa08Iup3QK;ob4;conomic PmissionO; stand5QC;ar6DQcO;omO;mu468;ebt 2G3;entrToO;lo2KCm3Y2nvention onQuO;nc5WGrtO; ofO; humanO; r4BY;al 26H;eOy5IZ;ws,xt;ho2;ha2GUopterO; t4J9;bankn4C8cOsi5YN;oiN;!n O;economic1C6lyPsO;tep67C;nx;emi69NorAr666;ice kennedy shr6DXu67G; R's PianO–lagrangX9; pa611;f3C7idOtotient 63V;enti6CL;anOme6HP;gl3;aryoH;enQène O;delOiones650;acro5Z0;e PiO;a co55Ocs,o derb6BL;a5PQle4W5oPsO;led60U;'nHV;alyptDhQlidO;!ean O;a3DHdi1NHgeYHs1CWve657;a61Bre;a carin64Jernal 0EhTiRoQrPsy,ta Oy3Y;j5HIp61S;i6FLuscan c0R4;n500ro;had59Kka,qO;a,u5JN; zu44Ga03eWiopiaUnRylO; ace40YeneO;! gOdiaminetetraacet2AS;lyc6HK;ic groupOog6BR;!s in O;eu5QWru5EK;! 5BXn O;a5V0em63Gorthodox tewahedo49R;l SrO;!e62UnetO;! O;fOover twisted pa6E8;ra6HW;bOke1ZMme54M;arry6B3;nPrkkum thunindhO;av1; Ool;c45Whaw5JFlW0peJsO;an5C4upl69K;re2JRsO;epte6BXunshine of the spotless6DT;ai m0Sc0Kkimo0Jmé creed-m47Yo0Cp09q08s01tPwaO;ti67C;anis pedYeUher TimateQonPrOuaL;adi6GXog5;ia2C6;d number of civilian guns per capita 3UUs of historical world O;poO;pu4Y7;ace315duf68UrHIwi4R1;ban oc2lle Pr expóO;si5Z5;g47Wha26DpO;ar0GZ;ro6GW;ay,ePieO; d5KK;nRxO;!-O;class aO;ircraf02;!tial23A;uiB;er5YSio0XWnPor6CUrO;es5EZ;!+,cricin42C;m,phagTteric O;naRpO;rogrammO;inO;g 5PE;zi67F;e11Jus;! callb54G;ape QhPitalopr6DPorO;t c5M8;a1BNerichia 3MG;from Psequences2ZVto the chaOv4O6;te5UV;mogaPn6CJpretOspider6CGtark5F6;orA;dis3NX;or1H4;a1Le1Ifurt latr1Hgo pro4RDi09ling haa69LnZoUroTtuğr4EQwin RyPéndira ibO;arG;kah baDCsipO;el6GG;roOschrödi5Z0;mmI;l f3E2r 619;geRs,tO;icOom1YE; Oa,i66U;a6GFh1RMlac4WM;!nous1RV;estSie Rst Oő rub5BD;hae3AXjü5YRkaltenbPrö3B5stavro bO;lo3KE;ru2X9;b3RJhu5X0l2X2; Oo fonseca carr480;borg49ShePrOshackl3GX;uther561;minO;gwK;c00e cZkRnOtr69Y; Oy3;a0FYbroc3BQd65grKkell2ROmO;or1u4JH; Ra Pson's stages of psychosociO;al5O4;eleOharla5GI;ni5BZ;estQjan ha30Zkillmo5YAper PsO;at6DCom4PC;suEQ;ra6DP;anM; Va Uh Oss2;fShRludendor5XNmQraPvon O;dän167ma5G0;ed0;aria remarq63Suhsf3FR;art5XQone3UG;ro2DV;d3Nlind4UZ;a09b08c01dZes63QfeYgarc51Uharris and dylan kleXid7liWmVrSsPtNRwOyu1;ei5FTi5CB;cPtoOyk3;l67Sne6BJu68Z;hmi5LP;oPudO;ol3IK;b584th;c1TJorecam4H0;d1AAve5ZS;bo6DO;lln0;a6icO;ke5TJ;aRhOlapton5RK;asePristianO; o42N; an0F9;nPrO;m5r,tm1;to606;a605enét,isc090lJRogo4LBrist6CLu3KE;da6CYnd35H;ine64I;bDctiPdiv2M8n O;ba65Fye19R;le dys5ZIon;g2sPtO;osth9F;er6ACmDuB;aOestr3TPin5FQ;lPtorO;!ial guinea48B; Os 5TS;rights amend5OFtempera5OF;c6EQhe04iRo4P7sOub,yc;il2on,teinO; didn't kill himPP–barrO; v3RO;cTdemiSgeRlQphan1B0stePtheO;li5Z0t;mo5N8;ep507;ne4AT;c,o5N5; Qanthic 3REtPurO;ea637us;etD;fi69KgamPme0QYof gilgaOpoTYr4B2;me65J;esO;! s4ZU;b0QJd5HGmOsD;erF;n 3N0s; 1Rc1Jd19e12field polt10gl0Nhyp5i0Mk0Llargement of 0Kn0Jo0Hr08s06tYumclaw horse sex1PKvUya,zO;oQymeO;! O;inhib0V5; fO;erO;ra69P;er QironmentO; vOa1SO;ari698;hox52Apas52A;erQhPity–relationship4XSrOwicklung 4G0;epreneurU4o6D4;al6D3ir1; the Rprise Qtainment O;o6software ratingO; b2HV;resource pl48Lso4Y6;dr3OFm5TIvo6AR;che50Wemble O;ca6A0le02V;iPonO;! 67J;cQque O;e5VHiOpeña nie5UVt2SC;glesi6D4;hedPo O;colanto62Qfer651; teO;xt;cOla gK;h2CKk mwepu;eagram o0HEio morri377;na5UMth15U;a,i;ac,d bl4K8gma3RF;andYishO; P-speakiO;ng6BB;al48LcTelectricSfootball leagueRg0QVlPpOref5O7wikip30C;e5J4ho3MU;a5L7iO;te0XK;! 4E3; l3KE;ha2A3iv4KGountO;ry6AW;! O;c3SSna56A;ergO;ei696;dina351mRrgy dQs O;kanterOünM; freed5RM;en4U6;aPy at theO; g5ZC;! of the3UU; TangeredSer'Rian6B4oO;crin26Vmetri4ROplasmic reticPrpO;hiN;ul5WW;s 5W9; spe23B;of wOti6BY;at60Eorld war iiO; inO; eu5KO;an5TNeSlave and exc3TErRyclopO;ediaOædia britanni50T;! draO;ma4EJ;yp67F;ladDphalitisO;! letharO;gi50N;pas4FF;a2Db27cure pharmaceutica69Mer21i18m0Go0EpSraanQuO;! w9lO;at688si2; haO;sh63J;a08eror01hy00irUloyRress Pty O;ne689;dowager ciOelisabeth46Fjosép587matil69K;xi;ees' Ome5V4;provident fund2C0state insO;ur4PV;e QicO;al eOi61V;vid68T;of Pstate O;bu2N9of67B;brY4j156trebizo67B;se63F;! O;jim3N0mei5C0no110of Sp0ZPtaiOxuanzP;sQzO;ong of O;ta8;hō;c2YBj14Y;na691t64I;! r4ABji,ry 43UtiO;c2on40B;aWeTiSyO; PlouO; ha1ZS;aw5HEroO;ss5VJ;tt54N;line pankhPr3YDtt O;s4KWtiC;ur67E; UnuelO; Qle O;béa6AQchr1K1seiO;gn0;adebPdeOm2BW;nnF;ay672;ap18Vbu4LOcXdVgUhemingTlOMmSpor2DJrRsQthomPwaO;lton2Lts2;as,pson5DE;am68Kto6;aduca2Z6ob53A;aNLo46B; wi4FC;ol55Z;'Ou1TF;ar4HR;hamberOo2MM;la4s;!lVnem5MPrO;ateOu; of Qs O;f5GCof the united arab eOs50B;mir5X2;abu dha44NdPgO;ra2NO;ub5YI; 07e 06iYy O;a4WYbUcompag5HCdShaRin40Bl080mort2N0os5JVrataj4KIsPvan3QDwO;a4L6ickerGF;waO;ll67L;mps263;eOic4I9;sch0XI;ePlu5TCroO;n4E4w600;ech66Itt rick5G7;aQe liPo O;aguin0GIest1SD;vi573; Q-romag5UVno O;buend4JGmOzapa69U;artín62A;clOf5AMj67A;ar5AZ;hi572smith 1XM;ci3EZnol4WX;aRg66TiQson O;c4QVfittip497rO;oyM;l lag15EtD;ld Oude toubA;fen1VZtabl65H;arReQraO;cer5QPerO;! e-jeDD;dde239th david61K;raO;ss5J0;ar proper63Wcs,il5KGnOs44;cipation procla5MWuel sweden0G3; 3Sa3Ob3Nche 3Mde3Je1Yf1Vgin m1Ui0Tk0Sl08mer b07o03r01sUton johnSviPyO;es g1ZIsi5TN;ra4VZs O;co604preslO;eyO;! O;a5LDsi25D;aQePie O;fi4OP;vi0; OgaH;lOpata57B;anO;che5YE;ic of melniboOo64M;né; r1CBhimPise mum4YHn muskO;!'s tesla road5YA;! pO;ran5WA;er58U;a 05eYiOor5D3;e WotTpOs 3WQ;sRticO; curveP-curveO; crypt61P;! digital signature332;e,is; 5KBt O;gOs5GYwave49U;ou66O;goul5LTke5Yrow55Sta14X; Sn O;bQdegenPhol2U6pomp4TOwO;hit27Q;er3;a60Iurst56C;f434ki8macpO;he5ME;baliOf1YAhu5RIpur1UN;ns5CQ;!an baggo5YVe so4UC; 0Na0Le w0Khu ka609jah 0In0Got 0Fs0Bte dange2Z9ud kipcho5PWzO;aPebeth smith fO;rie53F; 06bethO; Oan4N;b03c02deb5M1fr2B6gil01h00iZlYmWoUpeTsRtPwO;a96oodv52L;a14FulO;lo5VW;chuylerOpr02X; ha53V;r4D8ña;f Ols5;ru53Ryo63B;a2Y6cOiF3o2YN;go10K;a5K7ecompH;! 5N8i;o1TBu1HO;be67Dli3;hai vasarhel3NYoun54X;anks60Ler4ARowes-ly2áthoL;cOdush0H8scanl5ta140;ou5VA;abeth PeOha cuth5PJ; c28Z;hass051mOsh5VC;ax4XTo65X;ne65Wsp579; norde3S0or doO;nah5V8;blue al2T2mOw0WC;iELu32K;iesI; Os kote66S;kaz1;a5OLc2CNm41Zro5ORwalla5V4;ar5J2;!eO;d0OCn O;li61V;anor 13ctWfa5QAktra3ZXmentary Vna UphantSusinianQvO;at636enth O;do5T6; mO;yste5XP;! O;bi646seM;ana5E8bashkiro559ferr3YBk3OFsa3P9;c3CJp4V7;ion0Soral count5HOrO;a0Pic0AoOum; h64Oc08encephal5ZSl04mYnPpO;la66Iop;! TicOvo3T1; Oa;ar61XcPdance4RBm4RCroJti2E1wO;asH;igar57EompoO;ne5PS;configu61NmOs393transport cha4;icroO;sco5U7;agnetOotive429;!iO;c Osm;f4HNiPpOr2NJsp3L0;ul64A;nd4YC;ux,yO;sisOte;! O;of1Q0;ardi5Z7onvulsive 1AE; Ral Pity O;g33Osector 5DN;discharge machi5W0e5I6imp1XQresistivity and condOwi5I7;uc3G4;b5ZCcVdipole mo5FLeIf4HBgTlRm22VpoPvehicleO;! b5ZB;t5PQwerO;! t3JY;ady5YIight orchesO;tra4YM;enOu38L;er5P4;arPhaOur4TG;ir,r5NH;! use 3IK; cO;om06K; commissOs 5D7;ion 3WA;mon3STof aquit4TMpRrPtoO;mli5XK;ig608oO;oseve3RV;a2VZo4VV;n Pr fO;ut1ZE;he5XEri8;cf;a,e;gab57Rine Om,stic29B;bPmKpOstr5T7;ai5MZ;en3;cRdo1VVgre5QYmariQniPrisOsalv4F5;it64Q;ño;ac5S9;apitanOid;! t240; villainOstrakla5M5ta2EZ; r375;aPner johO;an511;cu4L6;d0DffelN5gVichiro o62Jleen UnOza1NH;sOtracht frankfu64L;atzgruRtein fO;a4VUieldO; eO;qu5XM;pp5;at4A2b12Igu;en04htO; 00-Xeenth dynasty Vh Qy yO;earO;s'4XW;gePwonderO; of4V3;neO;ration of vO;ideo game consol3;ofO; egy3ZR;nationOthousa4WI; alO;li4ID;isPqueensO; puzz7; en5GI;decomposition of a5JXvalues and eigenv2HL; al-Qetic 259osO; i48I-montO;réM;ad4SEfitr;om3;ali3IRgZoUyO; maulana vik5ZMptO;! 4XBianO; P–hittite peace O;trea5X4;aOhieroglyp3K3la5BZpyrami5SB;ir3ZP; Qn sO;chie7pO;en2BD;d3ZUnwO;od5H7; as15Tn5E1p1LKs beGY; english proficien01e ajag5KLfTi system parSl PrO;aim divero5TZen r2ZO;cPleague O;o6tWP;h5F7up;ti5YP;ectSiO;cient-marketOe QM; hO;ypoO;th5SA; 29Hive altr4QMs ofO; climatO;e 3IS;cy629; l2K8ga,l,naO;du; 1Rama62Od1Ie1Dg13i0Tm0Mna2FKo0Ls0Ju0Dvard 0BwOx;ardPin O;hu086van der s9; QiO;anO; eG;al5L2b03e32Sfur2F4h01iYjXno0SHsVtSvQwO;i3LIoO;od228; 5IHiO;! 5IGi5BP;e5TIhe O;black20ZconfOe3KKmartyr;ess5Z0;a5ZTcissorh50FnO;owd5;ames olm5U2e2JG;! 5I9iOvP;! 5I8iO;! 5I7;eOo36H;a5K7rr5KH;erna4USoOurN;nham 2H2;g2IHmO;un5QG;ardo savScationO; inPal O;s53Vte3C3; Od61F;e5HYge4RSi59Zj0VWpa2Ns0HCt5AL;er4;el,on O;barbo537st4C0;! p31ardo mapelli moz41Xm;ontonTund O;b4W2hQiPkeO;mp0;!r2KM;ilOusse34F;laL;! oi3EH; gathe5HDe TnPr6th O;pr3S2t0XLwha0RG; dže59ZburghPson caO;va5R6;! O;a5PAca4QJ;a44IbrQfPsO;edg10E;al5NK;ickeC;ar SeO; Orrin240;c0Q4of O;toO;mo2BR;allan p4NVbuRcay60Fd1BUrice burPthe peacef3ZDwO;i4Y5r5Y4;roO;ug3HQ;ch4CZ;ma,nO; Ps O;ze5P9;brOha5KU;ol4;a gö5DHie Oy4OY;alUb5K7cSgI4hRiz5KRmQnketi5QZredm1F3the7TvO;aOe2IB;n hal5;ars1ek55Qurphy5U8;aCo1P2;ib5JSoO;chr1;be60Uv1PX;aZb356ge4hYko5P1mWoUredTsPwO;est0ZMo60P;heer2E0kQuO;llO;iv1;re4;li5OV;'nOrgVG;eiC;cmOili0BQ;ah2;a1PBel5YK;nd lorraineOsn5II; wa1W;c0Ch0Bkhart t0Ama26EoOu4AN;lo59AnomOsy41Qtou3YK;i04y of O;au1CIb02cN1fr4EOge4Q1i00j0U5mZnXpWru4WKsVtQu3RWvO;ieO;tn5X1;a4IThe PorOuML;on5HS;e0T0ph5N5republicOs0ISu1RI; ofO; i0A1;iMLoMJ;a0No5SZ;aOor0FC;zi4NW;alaysA;ndOta5KI;ia,on496;aMPrMO;c Oes of2XC;freedom fPgOi1DI;row5HP;igh47F;ol7;el2id5KZl;hi,lesiaO;st3;ay,enPoOrahim rai5Q7;la,ny,ok; b36Zezer scroo5HM; 2VCgle12mon10r0DsQtPzyO;-e; pray1N0ing407on township weis markets164;e of doing busi09tRyO; PjetO;! 1L5;a,o4QVr4F2; VeO–west sc40Y;n4BKrO;! Sn O;blQcatholic chur5XNeu57VgOnew england59Ror0BRprom084t1AR;oldf49Qray squiO;rrI;oc;is5S3ri5NQ;aVcUend Tge4OVindiSmiRof5F0pPsuOtim5VM;ss5YG;aOru4VC;ki5A7;dl4WY;a 4PI;of 4E4;oast112;fricaOsA;!n 42L;ne2AT;lSthPwigO;! and the w5N1; similar54M's Oa ki5PRb09Jqua509s5SOwo5LK;magnetic30UoOro4EZ;rb5UY; 00iest known life fZy O;ac5F5hUmOslavs,world ma591;iSodern Puslim conquO;es5U8;e593hPpO;eri5YI;um1;ddle 58R;istory ofPuman mO;igr5RM; vO;ideo4BB;or5WG;greyRsOwaT;cPweatsO;hi5YB;rug5UY; t5S4; faOn1K4;rr5;! Os 5Q0;e32IfiO;ghting 5A0;commS3girls and e-2W2heOleNJ;nt5MI;nu5S2pluribus un5INstreet 097;'007-s38PaQ2bs 1KWc PXdPWeFVhFLi9Nj9Ik m9Hm9Cn99o42r28s26u0Ov0Jw09xdi534yPzhokhar tsarna5PZáil éirea5G6éjà 4BBüsselO;do1W3;a06bb34Qing5UQlan00naRsO;autonomAcalcPen5RKlexAon 1IEtO;h4SFopA;ulA;miRstO;ies in chinese48KyO;! O;warr29S;cOte; O-link1PAa1KP;host configura5EIpMXrOty1E9;andom-O;access 1YZ; On 4X4;ar4V3b1X6mPo0EEpe5FQs0JWth3XQwO;al5OX;cdPiO;nn4YL;ermo5OE;n ca0OBtlov pass167;aSeezil z0K5ight PyaneO; wa4KT;ho1WVschPyoO;ak5U2;ruHul5PN;rfPyne O;has42Vjohns2IY; Oi5NL;fOpl3NO;ort57W;dQorak kO;eyboard lO;ayo3R1;! regO-v4IJ;ion 3ZV; pon14a0Zb0Yc0Vdley1HWe0Tff mck3EUg0Rke0Jl0Im0Fn01ol0I6p00quesne spy 59ErXstTtch Ošan vlah51B;baby panRePgOla55Bov5pe537r4L4sY0;olden0GC;ast indiOm5I2;a 4NCes;ca4YA; 0PEin Py O;hiCspr1S8;d2CMh5O1lance36HmOpoi523rh3UK;i2HTosko409;anPb1ga,hOi1;am 3PF; dur29Wd 5JO;o5G5uytren's contrac5J8;bYcan WdeUeRgeon fighter 2EXia11ZkiPning–kruge1C7s scO;otD;n' donu5S4rkO;! evac3MW;! Od4;ii,mO;essi5MD;e,r mifO;fl4;iOj5U2sand4OT;da4R8;ar'PlO;ane2JV;s 4UE;bPpO;ing in dix5TOli8; and du5Q6ledore's0Y6o;ce de l52le129o3ESquer salma1é 2Y3;! Ps O;in05U;blue devils mRel2SOof Oun4DO;arPdevons1S7edOgraft2norfo1OFyo5RS;inLV;gyC;enO;'s ba0HE;a rOo8;ad9; di3L5lO;! at di064;kOti3CQ; Oduck4JSt0W4;d377ty1CA;ai5J6lin3D4rovn4QOst15A; liRlPne O;al2HNcMW;-clutch09GsO;hoJ;pa4OK;t 4MS;chingOhk,tv;his 3QR; 1Fa0Me02iZoVuPyO; i5UHad,waC;dgeSg Rid,mOze;! O;and Ok5RI;ba5U2;ca3NEenforcement35Eo30F; re5IX;it du seigne5BEme2K7pOug5S1; Ob4W8kick murph4NN;be9dead Osh0HU;di4TT;b00Ell4G2nking Pving O;miss dai4GXunder the influ5SF;the kool-a5SBw4K3;aWdd,sd5w Oyfus26O;bScarEgRloJmPpOs3II;e59Bi4QZ;a3AFciO;ntyB;od58E;arrymoPlOre3;eds4HC;re5O2; de matt4GAdVmO; RcaQworks O;animationOd5TCpi3Z9;! 1LV;st,t4V8;ch1Y1of the red Pp521s40GtO;he4JN;cha5OL;lPnoughtO;!-4XS;oc5KA;c0Cft0AgVkeRvidPwnOx the3MOymond1X8žen pe4SV; toge5G1;a munnetra kazhOi39K;ag5R4; QnPo the rO;ul0;ga5RV;beCdi5M4eq3KN; Yged acrossWoOunov sniper3VF;nOon,stea din t51D; O's dog5M9ball07Jf3QBh1YUl48Is' d5;a5C5ballQquestOsc39J;! O;i5PXv,x535;! O;fighteOgt,sWZz;rz; concO;reH;co2EFme tQq4PSreducO;tioO;n 3V6;o 2WP; hO;or5S1;oPulaO;! unto5S6; mO;alf4H5;congo 4N9disreOpe2XR;spe54T; 4Nb2N8c46d41g3Uha,ja cat4MMkos shipwreJl3Km2Kn14o0Xp0Vr0Ks,t0HuVveUwPxO;b4i8ycyc5GL; jones industrial379nOry,si8; s5CXloadable3WKtO;em3A9onO; aO;bbE; camO8;bleZgPjinOla;!s5GR; Thn3NAlas Oray1I7;a3W7bRfairb34KgPhOke4IUluVNmaca2RMpi5K8sbd daunt19U;ens4LZod5B9;reO;sh5PY;ad0oo5B1;co48BemN8fQhutch4OIl50ImOpeTD;ccO;luB;lK3o5QN; V-PcO;liJ;entry bookSheadedRprQslitO; exO;peri52S;ecision floating-point3AA; e3Y7;kee19F;asteroid redirect0BSba5RLenteOfa4ENindem3F8jeop0T6;ndB; p194-comPa,s per O;in5GY; buY0;aVemiUiRmam34EoOs5OUt215;hedoro,ro,thy O;danOkilga4ZHpa2JEstra3BEth2L0zbo21H;dr5A9;an Ps Ot5K5;dKl5K5r3G3;el1AYy5FF; mPM; Oem2;and the lost city of 3FAthe exO;plor0;a490pO;elgä5ARle17Y;-w4ZQdle champion island457k5PTlittl8AmQrdaO;rOsh;sh1; Qer,g2ILsO;crQ4day O;c59Yru7;at your2QUete1MAm4JVpa4XS; 0O't 0Ha0Ab5RYca5HTda09e05g zh04key02nQovan mOtnod 51W;cna41ViO;tc2UX;a Ter paSie Qy O;ha3W8os27Wvan deO; be4OV;dar508m19Fwahl5AHyO;en5L7;r5LDss;brazi7dSmRre5MYsu4EAtQzO;uckO;er5AC;ar5IQr4F9;il5PJu3V8;ix2o1KE;! kongO;! c50A;uo;rQtskO;! pO;eople's2UB; keb3I4;! 5O2;lOtell4HH; l3DXd O;cer4QFdRfaQgPknu59Ao186pleas5OSrums2VIsutherland5KPtO;ru3X8;l29So5EC;g5is2;af4DUuJ;breat5FLlook TrepeatSsPworryO; dar5JO;ay a PtO;ar5G9op believ1GO;wo5OR; y2C;n5OSup;am01b00cZdel3IVfYgWhUjSkRl4PJmQqPri1W2shO;i11Cu5QG;uixoH;c4IYe1KH;i8n3UE;oOu1;h5J7n;eOuff5DV;ck,nlE;iOu4D9;ov4P0;e38Rr2V5;he15GoryeC;lu58Lra4MB;ec5F0; 0La0De09hnall g1U2iO;nOti1;a06iRoO; O's0T4es;haQEkO;ir4RZ;cRk Qon,que O;dStO;h2LGi2UK;myster4OH; SaQk O;cr4IDdOr2MO;un6;!n O;o43Sr4EG;cQh8Dmo1ECpOra3GUt2S5we5MU;errott5MEurO;ceC;alvert-lPhia3SGo42PuO;mm5MS;ew4;nce and sub34Ftr565; of thQnico de 0MXsO;day 09Ktic O;g0RKv5NC;e 595;inOntas sabonF; Q-O;driven 552specifiO;c 4Y7;nameOrQ;! O;rOsy3R4;egistr9;delOpéri1H5;ui5NY;by Wemite is my VlSoQphO; Oin;lu3AIzig1XH;m4QAres O;o'rio5MRum2Q2;arOfa5OMy pa0F9; 54PsO; t2LT;na5P7;atm5H0d7St1ONvi5B7; ReQgOv4K9;er5I9yO; s3NZs3NZ;co4;b3N2day afterno2me5ARtO;he boun1WRrO;ai5FG;ecaheRge Oi f3IOo;chaOv472;lOrg0;le57J;dr2; 01sFtorPumentO; object495ary 5KE; OaH;doXegWfaHmVoRstrangeQwhoO;! missingO; epis3MQ;! in the multiverse394;c239f O;mPosteopathicOph430; mO;edi4CM;anhatt1;gm1;li0F1om;aPhOma3U4;oll2V1;nt7;androids dream of electric sheep?,it Rnot go gentle into that good1DNtheOyou love your mom and her two-hit multi-target attackP; rightPy know it's christmaO;s?; t23R;to 5KOyO;ourO;se4TI;aOce,epropetrovsk man3V5iep0s over htt4YQyaneshwar agas5CP;! O;methy44VreE0sequen335;a5OBc delRitrOx;i Py O;mMLrybolovl5G8;mendele5G7shosta2JX;ore1;etca4T9; Rango PiO;!bou4AHmon houns4FH;rein4UDunchaO;in5J5;khal5J4po53Zqu42Z; bonaventura5Ka4Sc4Gd4Fe3Tff3Og30hydrogen monoxide paro56Ujkstra2Zl2Pm2Hn26o1Zp1Wr1Bs02t01vPwa5EMxie Oy3D6zzy gillesp5LI;ca5GWd0UX;erXiRoQya O;bhOkhosla2C9nare3MJ;ar4A9;ck ori53Hrce dem5H7;nOsionAX;a5J9e O;cQright O;ofO; k5KD;ome56J;genceOs4THticul3TZ;! 2MW;a von t22Gh0;a0Rc0Gguised t4ABh0Fjoint-set3E0k0Dney03pYruptive innoXsoTtO;ance0ZDil443rO;iOok5KT;buted Oct a590;c0C6leO;dg0;ciative identi3O2lution of O;cPtO;he s05Y;zechoslovakA;va5IR;ensa46LlayO; Opo5N9;aspectPreOsi2K5;so15I; r31N;! T's hollywS+QlandPtoO;on3FJ;! p42O;! hotO;st9;ood3FF;c03fa4EAjuQmedia and entertainment2ESpPrOtelevision3TJxd;enaiss41A;rin53D;ni5JC; uO;ti33T;a pa2V3onor5HW; joXoTrOw5L7;ete Oi0KE;cosinePfouOma3J6;rierO; tO;rans0NM;! elysi578gs,rd31NveryO; O+;cOfa4DV;ha1JW;ckE;bi33Gppearance of O;aeryn giQbrian sha3RNdonPmadeleine mcca54Mnatalee hOsusan1LW;ol1DX; lLJ;lle5BM;ac 06eWichlet2E5k Tty O;dQgPhOjo3QXw9;arLonE;rand4SA;an311eeds done dirt cO;he3LF;bOnowitz54J;eOlo310og0IY;nedi4XB; WctO; TedPor of Ov,x;nation3BAthe central iAJ; Q-energyO; weO;ap2;acyclic25Ug25V;c49Td35TmemoryO; ac52B;straits4EVwo4QX;delOeq3C7;ta 56I;hOlo,ole ant2XG;enhydra42DthO;erAo8; br0ONcleTde,gSmede4JInRphantinQrO;!a bO;ai5J7;e 3BY; dim4KLne war0KEysD;en3o jo5LR;ti1;aReshQgo,ner for4RHoO; dOsaur55F;e laurentiF; d'sou4ML; Rh O;ma3RCshO;erOoB;id1;ashPea4DEmeO;r0LPy0;erUK; s55Sash kudai17QeRitQple O;hay3KHkapO;adA;ar berbat4JGri van den 0SN;bag dQnsionOthyl sulfo48H;! f2JVality rO;ed4DC;ar1XF; chahtWaUdo,eepSip Qjit dosanjh,lPma rousse52Wopho560raba dilmOwale dulhania le jay1ZI;ur56E;!ian whyH;k388vengsO;ark9;! O;f5E3r4SI;n yeşilgöz-zege4TXtedO; cardiomy1S0;a h595;'s2FE; a po4FOeorge541ga0AiO;mon06talO; O-to-analog 3YZis,o3EX;a02cZd2CEextrYimWmVobjectTrSsiPtw4visuO;al3H7;gPngle-lens reflexO; caY;na572;e12Pights 3I4; identiO;fi0;a4VPillennium copyright4VI;age pO;rocQA;em3;aPombat41ZuO;rr3RL;meG;rt,udio wO;orks40B;! O;aOghost 542;dven56N; d;'rent str0PLerential Pie–hellman key2ZPr4V8usionO;! of innov5D3;eq3ABgeO;omO;etL; 03drich b1CCgXlVppTrks bSsQtO;ary fOhyl e55Frich bonhoe3P0;ib0; ir55Mel O;e3XVfuI;en55;e O;ra5GX;ecO;tr5JV;etic44Jo O;c4G4ga4Q4lu54RmQri48EsOveláz19Z;imO;eo6;araO;do54N;anRflederQhardOin a gunf5G7;! with a veO;nge3XO;maD;other3VKtwO;oo5GU;ier drog50Fo;e,hen l085kPlofen3HCtatorO;!sh4V6; Q's sportingO; gO;oo57S;butkDcRgLUpo49QsQturp4vOwo4O5yo5EU;an Oerme4VS;dy4KGpa31S;ar467traw2JH;aPh4B1larkO;!'s new year's rockin'51Z;ve59U; 0Eblo i4RWcr0Dg0Bh09l04mond 02nRrQs4TOtoOz07W;mOnic2GA;!aceous31W;rh5CNy of a wimpy23R; fo5FSa Ve QnO;a agr2e O;f1LRwJH;cil35Wdisney 59JgRkQlaPmo0CKsaO;wy0;dd,ne;e59Xrug0;uerre56O;ch08Sdo5GEgabaPhy5BFk4ZRm1ONrO;i45Soss4BJ;ld2;dOis unbreak5DY;allas 4UGo5F3; m for 3VVectO; conti13GicO;!al O;behavior 0MUmO;at40X;ann c1LMnne abO;bo596;eo,nostic and statistical manual of mental disor3UEonalizaO;ble4Y6;it5IF;mir4JB; pi3MN;aQiPl,o7yan cO;ha5DZ;bu ninan 5Drubhai am3OZ;ka,mp5E1nSrO; 503mO;aOe3GJ;! 2QWcO;hakG;iOush5B4; ha2AF; 9Ka83b7Jc6Vd6Re6Gf64gree 4HIhrad5GZi60jan kuluse4DCkal4SEl58m3Tn2Ro2Op2Er1Xs14t0Xu0Lv00wZxO;amethaXtO;erRroO;amPmethorO;ph1;phe3Y9; P's laO;bora5GL;flPhOis48Jmo0BG;ol5AF;et4I3;so6; p4HMey decimal1H8; 07a06elop03iToOs;!lver dRnOps; Oi1ta4B4;ao4ZPf3B3lOmu515sa4L5;ar29Z;ig301; sriWanta5H9ce 5BXlRn O;bo4QXhe56Xn43PratrKsiPtO;ownse5D5;ngle58A; maR'QmanPsO; t4VY;! cry51X;s 35C;y cL; pras5CO;ed4PKing4PKmentO; 2JTal O;coordination3HLps3V1;da57Fnaga5CS;a335p41C;s exXtO;erUschO;e RlandO;-Oli5BU;classO; c2GD;baOma5CGtelek4VSw4Q0;hn,nk;aOi518ocanonical b56E;go3J7;! O;mac23P;eQroitO;! O;l59Mmetropolitan543pis25Ure1BU;ctPrminO;a4ZXi56S;iOor1G4;ve4LM; o0X2ali0DZc0Cert08haun07i00ktopZmond YpWse5GBtO;inRroyO; allOer; mO;ons3NT; daniel cre4IIationQy'sO; cO;hi5EK; w0EE;aci4XMerate housew19DicablO;e 5FS;do5ESho1FJtu4EL; c3UF; TderSgnOlu 2OY; Oated marksman3H4ingZH;pattPtO;hin50W;erN;a5G1io alberto arnaz 5BN;arn2QM; wa3QY;! PiO;fi4FBon;cOe3L0;li4V6;endants ofPriptiveO; s2ER; theO; s5EQ; ring des nibelu03by02eUmToSrPvla kirw1yck whiO;blE;en1S3ick PyO;! g1K6;goBh1HGlEJro5DNth3FK;n 20V;at3LNot mu1HH;a2HZk O;and the domin56VcRdeQjPkol3IVmu566pri26QranOtr3TS;daC;aco39Ret0;a4ASlga3PZ;a584hO;auv4iO;soG;!s1BA;ng5;aVeRleted uraVKortivo Pp v news group newspapersOth1J9; ltd;alavOde la coruF3;és;che mo38CndenOrsona2HL;cy inOt and independentSB;j476versO;ion3GF;rtmentOu1AY; s40Js0MI;do4A5ntO;ayOo4NL; wi2WO;a0Ng0Lholm 0Ki0Bmark09nVsitySverQzel O;c4SYv18TwashingtO;on4GA;! O;bronc565in524nug332;! O;funcOof5AJ;tional 2WP;is Qy O;dOl42Q;oh3IL;bergXfaWhUmi559ni31YprRqQrPwO;a82e4TPi4HB;ad0it0KAo49W;ua5BK;ag0iO;esO;tlE;aOo2IA;ste5E5ys4WG;ri4ZC;ka3JX;! 47O–nO;orwK; avdi466al-of-servi1AZm,sO; Re PoO;n 36Pv1;cOho,ri37Bvan 0XD;o50Tr1YG;didQl2C1o'08Wth0VNvPzO;ak400;illen0S5;er5DZ;el54O; xiao0UBueO; f2G7;li,turedOzi1DI; alcoh5CS;ar0Ye0Ui0RoO;cr0EgraphQnO;! O's sou5BCd 0MSo4MFym;coBda460;icRyO;! of O;au0PMthe O;n2B5u02X; tran0CVs of O;b03c02eu4LXf01g00h2SUiZj076me0E9n1LZpo569rYsRtOu34X;he PuO;rkE;un504w5BP;eRiQoOpa4w0KC;uth O;af3LTk0FN;ngapoB;xual oO;riO;en3TA;om0UZu49A;ndAs50Tta4XK;e42Pr04D;in55Vr3RB;a1QJhi4Y6;aPrOu1LV;az4PN;ngla3PA;aOitD;cyXticO; O-republican567;backsli4QDkampuch56MpSrepublic of PsocialisOunion0DU;m,t1JE;aPthO;e c284;fg4NP;aOrogressive561;rtyO; ofRV;! i5BT-dictatorship5BS; Pan maAlOur4UIán bich58K;itarized0NY;lova4U0m0XE;ntiaQtO;er,rO;ess 4EDious168;! with lewy bo2HA; deroz1ai Qcus couPyius O;th3CG;siN;grK;! 0Ea0Ae 09ft06hi02iYlWoVphiUroy StOu4XZ;aPoidO; musc7; Oru6;air 3W2b468f388goodr440;g47GlO;in4IO;! 5AL;itHnt58I;! Oa r1QS;c4Q8lat391optiD3;riumQverO;an5AYoo,yO; he4ZY;! tremeN;! O–mumbai expresswK;mPsO;ulta11S;et4ZT;! universityO; of O;te2LK;al527;unay trianQwareO;! confederate moO;nu4LD;gu3S0;in cylindrical and spherical coordin4YDm0WEs02B;dre 445nonyQonPsm,ty,veson figueiO;re4I1; s22A;chD; XaWc2enQinitePorestOt591; ke3A1a56Q; m4RAly may3CZ;ce Se2LFse O;iPof O;sihang14Vthe anci56H;ntelligenO;ce 0MS;m3C0research and development1BJ;ma56Iult mode308;jam Olep3F;record57N; Wbo samuIpOz0; RakQfa4CEika padukoPl transl4UJmi56Wwater horizon oil sO;piC;ne546; c4R3;insa2X9learningQpurple43Vrock gal0B2sOvein thromb3Q6w2RC;iOou4SO;lv0;! super samp536;bradley16Pdee raOsn3QD;mo6; morQeOuc50T; g2O5e pfO;ei3FT;oz;a09e02iWlaQoO;lo252mpressionOn37Kupl55M; sick599;n 3I1ratiO;on of the rights of man and of theQveO; pO;rogram4CJ; cO;itiz5;bImalSsionO; treeO-ma4VB;! O;leO;ar50F;! separ4TR;mbrist2FZntralO;a562izO;a55Jed O;aPex2PTfO;in3OD;pOutonomous24H;pli49L;pi3Q5tO;hl2;b02iWorQra Ot-trap diploD6ut31N;jo ru454mOwi4SA;es4YDo03Q;ah Ora-lee fur58K;ann woCch57GfRke52QmeQsPvan valkenO;bur53B;an0SGn8E;ad5;alc3WR; m397anRtO; Ps and creO;di556;ca575;! O;ve3K8;ie Py O;ry1;a4GAgi50VhPrO;e0CYo0XJ;arL;d0Ul with0Sn0Jr evan ha3LXthO; Rlo4GQsO; Otro4AQ;due toOof kris kremers and lisanne fro2; the chernobyl4YV;and state funeral of0Cb09cab for c08e3Y9gri4JJm07noHoRpQrow32DstOva37Yzo6;ar,rO;an4MR;a2SHro48O;f On the ni7;a00bZcYdavid b3HHelisa l55TjVkendrick12XmQsO;teve i1TOushaO;nt singh rajp32Z;arilynQiO;chaelO; j4AU; moO;nr3VE;amesPeffrey eO;ps496; co4ZF;aylee0R8hristine daceGleop2E4;enito21Grian w3JZ; sale4CDdOyr2KD;olf3XH;arch to the parallel world r1K7etM;ut564;ecomes h0y O;bOcocon32J;ur4YR; joseph stO;al4; S-charlesPa3DVdreO; h3E1; cO;haO;pm1;cQja1WIma3DRno0X4paul3DQstoPwO;in3FW;ck3YX;a4orC; theO; d1X7; SlPpoolOsh58Cwater feC;! and korg rea4JB;iOoJ;est pandemicsOft; in3IS;by dayl54TcRha53Yis50Wkenned40Hman'sQpoets 1Q7ri4WJseaO;! scrO;ol55Q; sw4W4;an d3M8el55O;bQhavilland Ola 1MAmorgan'sZIstijl;c2DRmosqui4PEvO;am4SZ;ee55N;r sdr54It;animated Rblack l0Y7co32DeQf26Kleague of super-Pm14VuniverseO;! animated original1WJ;pe539;n4HGx0G8;movie4RXu4RY; na8b9Oc9Ld9Ke9Jf9Hg9Eh9Di92k8Yl8Lm83n5Aphne 59r41s3Tt3Eu3Bv05w00x sheZyQzO;n,zle camoufO;la4PJ; oVbUlight savinTmond Ss O;go6of O;being25DoOt3SM;urO; l10P;jo2M1;g 572;rea3PK;f t1GS;pa54U;n Qood ibPsonO;'s27K;rah4KX;fr0U7oOw3IE;f20Bliv4OX;a2Re2BiPy O;croc12Wjones' 1XD;d Vesia TnQs O;c4OIen4GTguggOm4PG;en0QB;a mcPci resol4W0soO;n s41J;caC;de4YscO;hwarzene1V1;a1Xb1Oc1Dd19e18f13g0Xh0Ri0Qj0Pk0Kl0Em08n2C8o06p00rVsStQvise0O9wOy4TQ;aOe3CW;ll3G6y6;eOhewlFrezegu52W;n2Z5pp0;chwi3T3ePhu1TAiOo34Ppa3U4trathai4VXu2NE;l45Cm2ro56V;am1d3M7;aRe1JLiQoOu2PZyaC;bi4YUcO;kefe4XF;c58zz44K;sc4US;aRetr1P6oProO;d3YRw54O;l2G5rO;tn3TU;cko3YCrkerOsque4WV; rK;gden st4KZrt8NyeloO;wo;am52EccRiQoOu52A;rOy3;ri537se;scavi4O5;a3HHorO;miJ;eRiPloydO9u8FynO;ch4ZB;nd5vO;ings3YF;an,e ro4NTit4U6tO;te3SF;a35HoQrO;o54NumhO;ol4Y7;ch,eOre4X7;c1R6pp;as2us50D;c476r3LJ;aRe1HCil4O0oQu55Gyde O;piO;er54Q;cknEr136;r07JsselO;ho4NI;eSiQoPra0IuO;et55Qlpil4I9;g3GHw0;lOno54U;mo4LM;ff5st;iRosterPrOur4WQ;o51Xum;! O;wal4OF;lo,nch4NA;ig45Cll40L;astmalc2GBePin3AUobr407ra4CKuO;chov407ke; g4Z0nO;c404m1;aUhSoQroOu33U;n456sO;by,s;pOsta27Cult52Kver2SI;pe3GJ;aOoe;ng,se;ge,mQrPsO;si4NPtañe52S;raTUu42L;er2;aUeSiRl3T3oQrOurt49Kyr6;om38CucO;kn0;hm,i3n0MGrean2FJwie3XQ;eb0;c1Y1nOrko46P;-gu48Vio4MK;ddiIilElOszuc4MY;dWEe;lQrPttenborouOy0;gh4XS;c4NHqu45L;a4LNlan c3QZ; QedOy boy3Y6; dO;ig511;aZbYcVfUgTlRmPnavOr1R0;ar4SF;atthewsOccaLust3SL;! FF;a3XHeO;e tr47Bge4BJ;ah1ro2WC;i007olEr1WE;alPhO;app4DFis036;ho539l1WP;aut44Oru3JH;nn4ZIr51W;nteOo 3BB; a36V;ghter Ophin0BN;from another2MSof theO; wo48Y;aUe PuraO;! stramoKC;aPforma2GVof birth WZpa4Z6withO; the0A1; 4SRnd time notO;atO;ion IR; QbO;ase Or20H;n268sche4VO;an3HUcQe4GZlink l4IVmi4TSsPty4RLvisOw0XA;ua267;ci50Vt2TZ;e40BomO;pr2WF; UhPsault O;av36Omirage1W6rafa7;!aQiO;!ell haO;mme4U9; nekra3YIvaO;taG;bo53FkET; es sala4ZYa0Uby 2JKi0Qjee4VMk08l06on mala05pa,rWtTumaSvaza gas 05GwinRyl O;dPhaOj209sa0NZ;ll,nn4T3;i44Kr2E2; núñ4VSi4TH; doC;h PitFmouth3KGs wO;orldOK;ma310v0VH;ePyl stinO;glE;ll bTnO; Ot 1OD;aronofs41Eba3ZJcQmcgPpa8sOtiC;h1WSt9;av4;ri51J;eveC;ki1;ene Oing in the franEL;c4PKlo4RP; X-sky prVeTly dreaming deSm1netQsO;e4ZVi3EStO;al3KT;! mO;ark4YO;xt0;r thOst d49O;an2C5;esO;er4RF;aSenRfa3O6horse co2WZma338sOtri4Y0w2IU;h2JFidePoulsO;! 2BZ; of the 4EO;er4B4l4B7;cPvO;en4UP;ad4LM;a sav3WZo QusOén g31C; Oz wo0CA;ru2GXt46L;a2P8franchit3OE; khosrowsha4PFz;du mau47Bzuni3YM; 1Xa1Nc1Hdy,e1Fg1Ci07nRse macabBtOu33Oy ga48J;dm,e O;aligh4JPbOgabriel ross3O8;as4NW;i01y O;ai4SZboYcareXdVel4T4gl1K8hu3Z9in4YHjohn-j3KYkaUlTmSpRrQst3YBtPwO;el3H8;h31Xre18Q;ol4U5;hant4GTi491o4HZu4PG;as4G1cb3IV;loXU;meko4MUye;eOrinkw3QNy0;vi4J4;!y;naOy7;du50K;elynn biOi min2NX;rk4X2; a1H7ca 0QelRil Psh O;k40Dla49QrK2;kvy4MTmO;edved4TA; Ta melchi4XQlO;a2S2e O;br4R0cQdeadw469mPpanab10UroseOs0LE; r1RT;ac3GY;a41Zol4W4;b0Cc0Bd06e04g02he3QOinou25Hj1Y7ka00lYm2FMnegrXoWpeVrTsQwPzovO;at4IN;eb4QRu;nPtuOunja519;rr4IO;yd0;adcliffe42MicciO;ar47K;a0JQmbeQM;'dN2r3NI;ea1PJ;aOog1;rus3YJ;hn3GSluu48FwO;czyXO;ilO;li3;k,lls4J6spO;ino4I0;aPeOu3VZ;f3N3n42R;ePy-lO;ewF; k4E8;ormi0ra3WF;aPe1Roo6rO;a32Zü2SK;lOrenbo4E4;a412dw4;mcke2G6pO;at35V;anron46AerO; f2WDous liaiO;soN; Ol4P0;co4QSdeha1;eQing O;m0I0oOpallbeare4XY;n i4Z5; mP-p47GhaCrJHs with O;wo1FT;o4Y1us509; Oher3ICi guriG;aUbScaRdelQhiCpPrOter4Y1w38O;ee4OY;e00la4HF;a3UVoren4O7;rvE;aOrun3M4;rr2sh;ndO;re4QG;a03b02c00fogYgiXhUmaTnig4NSorlo3BMpeSqu4PrQsOw38F;chOeSQim3TXte26Z;ne3F9u1LN;a4L7eO;ev3yn035;ña;ri46U;a37TenPoO;ok0us0;de4DT;lr3MV;elOl0;be4HWm1;aOren2E3;mp41Arl4stellane4ZI;il4I4lo2E4on0IDro4W6u4OI;nd frankPyO;kroVE; ca4KP;!ascus03e01iSoOpi8;cl3n O;alba4OChPlindel3YNwO;ayaN;err46EiC;anQen O;chaz48BhO;a0NRir4VJ; Oo0C7;grammat0ZLhRlPprOw0CY;ie4VG;ewFilO;la4WE;a0NLu092;! commanderO; oHY;! O;go4K5s0IU;ai la4QQeXiWlasSmRton O;ga8sOtr25;chO;ul4QX;atA; P–fort worth metroO;pl4XS;buyers0U5cow1WFdupree1TEj22NmOs132;aver1VA; and cocky0WSa kadda,da,t; Ok;car3A5d22PeaO;rn44L; pres2LTarPota O;f2TCj4QI;! rO;al4IQ;hXk2lyUmTry SsOzen m40S;uke Py O;edgar0C5ri4RW;namiOo45F;ka41V;caODp0EEq3TW;ler 434yo; Omo4TF;bug7e18ZmO;a4AOi19W;at3JW;omEy4X2; hammarskjö4WAe48Ygubati–akkinen310marOon,uerreo4LU;a domińO;cz3Z5;fy One ke5t LY;duJ; jang ge4IBd40Fgu,mon t6Lnerys targary5;'sZPa,dy yank4PA;hPiaO;! du4NB;au2DWshu4TJ;a4SJbs gQneyOo swi3N4; cO;ol3DJ;re0;aOonta for3DH;ngeloPrcy wO;reUH;! r1NZ; 0OW++,-0OVa0ALb0AKc0AId0AEe07QhRPiPGkKlLKmLHnLFo61p5Xr25ss,t22u0Nvs phar0MyVzechQádPéOú chulai4FI;line sciam4PEsar azpilicue4XJ;iz; RoslovakOs; Oia;socialiO;st1ZX;koru4IDla45Ir3LB;an0Cb06c03d char4Zmbopog2n00pXrSsticRtoO;kineOmegalov2AB;! sO;to4JS; fibr3CC;ano de berger2V4ilOus41H; Plic O;alphabe4SIsc2SJ;abitebo2UXgOramapho4EA;ra1JE;herL1rO;essOus;! 1YR;di laPet3thia O;da16De2ZAleNMn3UTroth4FW;up0;ad,lO;e det3OYic redundancy cheJoO;benzap400ne,th3R5;eOill s1RZo4F5;le,rO;bull30KcQne2T1punkOsecurity 3H6;! derivO;at0PS;ri4W7;!i0GPoO;bact01N;ma33S;b0Vc0Tda,e0Sl0Em0Cn0Ap08rXsStO;ieQtO;ing Ole34J;cr3IT; h3J0s; d'Rco,hPtO;a4TRomer relationship 2TV; jOing's4FJ;um1FM;ama4DN;aç43Sb your enthusia4MGc0PMiosity Xly 0SRrWsStO; Qis O;blayd3lemKma248sli3ZTyO;arv4;h3BSs44N;e Oi4KZ;and mark of Pof O;dimensi07h4SM;ca4;ency 3VJiculum vit4HOy0RF;st4SI;cak3X7he4RFidOping 00A;! and psyc4K1;arOeiWOni48At;d 4IP; OaNbrAin,ulative distributio4GC;sh4VTto4SJ;linan00tO;! UurO;al SeO; Pd O;me4GY;cl1S0of Ose4MI;i43BjP8t0MP;appropr2YOmarxism1IOre0DO;fQoO;f persO;ona2CA;i4QOolloO;wi8; d1B3; 1QYva4GF;koOu4P7;ld,o; sTaQiOo4SE;c Osm;crysta0I2eq2LGzirc324;!n O;missilOre0DA;e 0RA;wa4N8; sc1esiph2hulhuOvWJ;! mythosO;! d37Z;a2Xe2Ci18o0Iu07yO;e38Yo31JptVsOt3RP;is,talO; Odisk3Q2;cas4ECdy12RgRoQrPsO;kuCt2L6;ad3SQe4PR;scill4E8;ay7;analysis of the enXoO;currencRgraphOkit4PCp3HVzoo43F;ic Oy;hash 4F8nO;on4TK;i3yO;! O;buPex2A5waO;ll4QJ;bb7;ig4ME;cifixNFelUiseSnchyrollRsOx;adeOta2OL;r Os;kings1MZst4H4ta3TO;! anim0N; Or;m3ZNsh464; intQla de v46UtyO; sO;qu4PP;ent4N6;atia07c04hn3GVis2XJm03n02p4PYre,ssUwOyd2;!dSn O;heights 2BQjewel3NoPprince O;hyomyTJmunh3ZTsa40J;f cO;asti7;ed4S0fun47F; T-Pb4RGfiOing the rub2QNra46Jwo4RD;r4T2t;co28DdrQorigin resource sha465plPsite O;request forAQscrip4TS;atUN;es4I6;entOof saint p4FKp09Z;ro4T2;!us;weO3ā;h4POodilOs;eOia;! dund4L2;! 3N1n O;la41RwO;arO; ofO; iO;ndepend4QN;b01Bc0Mm0Aps,sXtiO;cOque of pure4PI;al Rism Ps' choice moviO;e 3IJ;of faO;ceCN;path 4ROrPthO;eoLin4E3;acOo7;e 2B8; cYis VpTtO;ero3MJiO;ano ronQnO; milio3F9a O;fernández de kirc1E9v4KH;al3ZH;in gl1B8rO;! gene edi4SV;in venezPoO;f the third centuLn earth-x;ue4S3;a4LLollin3IZyO;bo4B7;eRinal QsonO;! O;d2CQpe3ON;l4HDmMU; RaOs0C5;!n O;kOta0X2w9;ha0IH;and 3Sbo4R6fi4CIin O;chPn10Zsan francOt40V;is4ED;ica3GD;buRketO;! O;b4DPwO;orld43V;zz;a01dit YeUma4NLole TtPuO;tzfeldt–jakob495;aceousOe;!–paleogeneO; extincO;ti08T;la40Cp277;! QdOpypas4S6; Oence clearwater revival3KY;bra3U8ii;su3EA;default sw2R2k4JWsO;coBuO;is4Q1;m WVtiO;ne,onX4vO;e Oi4L6;aPcommonsOde2OP;! l2Q2;rtists 03AsO;se0AW;b 03ck coc3FVdle of 01igWmerUnb0OEps,sh TySzy O;exQfr425hOrich as4GF;ea4RIorseO;! memo0M5;-gT0;fi4ITon shin-4GV;bandico4RLlanding on3IQ;'sO; ru7; PsO;li4NV;chPd0EZf3OYof the1RMsO;he2WFteveIZ;arl3;cOfil491;ivi1TT;ga4QVnO;ebu4QH;uOy1S2; O-z;cOso0YP;ac4FA;aEXbEVcEFdE4eDZffeDWgnDQhen'sDOiDIlB0m7Un3Zo3Pp37r1Rs1Bt13u05vVwSxPyoHzO;umIy0QD; enO;terprO;is3; tPboyOin;! beb3Y7;oo4OJ;aTeOfe4QBid;ntLrO;age of google strPtO; affai4OI;eet O;vi3D5;lent QriancePxO;!in;! m46J;bo4MF;gar0Jlomb3B0nYpWrQsO;coDinO; marria48E;age the cowardly40YseGtO; ReQney O;e4HNfo4NWhenggN5lo4FDsto3G8thorneO;-s3YZ;ney3RAs1;of ow4O0tv mys4JV; dOe de 0XO;'ét4BNe grâ4P9;cil o04tO; d01er-1ViXrQy dO;on0Y3uO;rh4MT;ieRyO; Ob34Y;code top-lOjoe277m3AZp3XEroJ;evel doma4;s O;ofO; tFC;es of Png cO;a4NOro4GK;e45NiO;re4IN;ooOracu4P4;ku;f Pn foreignO; rR3;chalc411eu3Y6tO;hIDre494;! O;to4MG;e de pUswT3tO;ageSonO; O-eyed2DC;bowlOg4; cO;lass4PN; UGcoB;ab4GI;i01mUplKs13JtOw40Q; of electricity by Ra Oco;concordOri3DZ;iaO;! d4EU;soO;ur4O7;e2LLic RoO; kPlogOs;ical 21Sy;ram0;microwave backOrKs4;grO;ou4KV;mo de'039ne simiO;la3XS;a10b0Zd0We0Sfu,i0Om0Jn0Dona09pXrTsi3DLtRuF7vQy O;bo3YImontOwo8;ei46N;etHid4AMus;a49YiO;co33As4NU;elationQie ten bo43SuptO;ed bloodXFionO;! perceptions4NV;! does not imply cau0P3;oraRse O;b35QhOp4HZro4K7;usO;ba4KF;lTtO;e PiO;on,sm;govern32PsocialOtS1; responO;si1NJ;! O;punish3Y4;ry arteJQtion PvO;ac,irD;oOst4KB;f elizabeth 4JZ; st1QXeRisQwallO;! cO;ap26T;h 3WD;d beQ2lO; 4KJius2El 2GQ;ac QoranO; Ot;stri3PC;mcO;ca2Z8;a3G8nOolis2JX;ne Oth;foO;xx;ldr4CJy O;fPhaOreR8s1AItaKE;im,rr3J0w2TA;el3J7;arrelleOed ware0AC; pO;at41W;ev3Z7in ber303;lOzon aqui3UT; Oi6;ca3CCrePH; 04a 03enhagen00pXrVsh3UTtSyO;le2RTrightPwO;ri4NF;! O;infrin2L1sy3N1term extensP4;ic Os;la3VLorO;thodox2EO;opO;hilA;a it3EYerOola family 4B0;! peptide ghk-O;cu;! O;a4AOiO;nterpre336;amé2VKdel rElibertad3NK;la4IVu479;ber pe45QkTlQper Prdinated universO;al 4ML;h4E4ku3I3m2HX; Oio;hand lu3O8ruO;nn4JE; QiO;eOng ba2X4;! c21I;i3KIpartisan voti7F; a4IOan 3Ec38d31e30f2Mg2Ii2Hj2Dn27or 23quist2WUrad 22s0Ut02vSwayO; twKS's O;gameOl4BE; oO;f 4M2;eQolutionO;!alO; n2BJ;nience19GrOx 474;genPsion O;of paul1Q3thQW;ce ofPtO; e04K; randomO; varia3YF;a0De05iYrOumeliosus of ri4EW;aUoO;lQversial reddit cO;ommuO;ni4GV; Pled O;flight into ter46Tsubstances3X7;of fire by early2GYth249;ct Ol43Jpo0BOs;br43MkO;il4EC;guous3UFnO;ental SuO;a1SIity 2C7ousO; Ply variableO; t203;fu46Iinteg4H6uniform1DK;ar2GVdivide0MDph2ZW;mporary clTnt Pxt-free gO;ramm9;delivery2ATmO;anageO;menO;t 2MV;assicO;al36H;ctless pay3VCiO;ner 3XF;angui27Uc0Le0Figl0Eo0Cpiracy theor0BtXuO;eloTmerO;! Oi4BR;behavio41JelectronicsPprOs1K2;i009ot3DM;! O;sh4IX; vO;andO;erbi27T;anVellationUiOructed 3TH;pa4GKtuO;ent assemblRtionO;! of PalO; mo49A;i3SWt0CA;y 2BX;!-40N;ce wu,tinO; 4G9e Oop7;iOt3PExi palaiolog4CG; Oi O;ofO; grC5;ies about adolf hitler's2H3y;lidated pby cOna449;ata3EN;ieB;ns3D4rvatiO;on QsmOve party0Y4;! O;inMO;of0YPstO;atD;iTriptionO;! in O;sOt3SX;ouO;thO; kMS;enPoO;us4J1;ce,tiousO; obje46Pne4J0;hi3GHmu440vei3QI;gQlPmO;cgr1ER;esl4HM;al3QZ;ac4GWectSie Por O;be3XKjess41Jmcd07Rswind2VA;bPfrOn0L7sYR;ancF;oo41Tri3MA; 29Nic2DWu;oined7EuO;gate Onctiv2Q6;gradiOp326;ent 4IE;c0AHf0;eQo Press O;of vi1VFpo4CM;cr0G1f224;e,nital heart de1OD;eUiRuO;ciPsO;ion3ZL;a48Jus;dence Prmation O;bi4JC;intervMt2P2;ctioTderatPrenceO; u40T;e states Qion of O;african3LUtheO; r3FW;ar2EGof2RV;neL;y 27J;ensed mi0BNitionSoPé O;na4FS;leezza 2QQmOr;!iO;ni43Q; 3H9al O;expec2Z9p1I9;acafSePhata fer0VHor36Hre4EHubiO;na410;ntrated solPrO;neda46Zt for15;ar3XQ;! 09G;ex28YgrKoPthe O;barba41Qd2B3;'bO;ri5;a2Sb2Lca4FCe2Cfort2Bi22m14or12pO;a0Petition between airbus and bo0Oil0Nle0Io0Fre0Aton09utO;ational 04erOi8; Q-O;aided 3XTgenerated imaO;geL;aZcYdata034e3UZgWhVkeyb0MXmSn2P6programRsPviO;rDsi2;ci4FWeOo337;cu3RF;!mi8;e0JUoO;nOu4GO;it4EU;ard4AA;rapO;hi2P3;he4H2;ni3W2r2A3;complexQfluiO;d O;dy0Q7;it15H; h17A;hensive and progressive agreement for trans-pPssed naturalO; g4HW;acifO;ic partnO;er3TY;sOund inte33E;er,ite O;index of national capa1H4m0CJ;mentQx O;conju3XLnu4BVpost-tOsystem0DG;raumatic stress2IH; 2J3ary coO;lo4FM;ation of final fantasy v4DKer;ei8;ct XnSrOss;ison of Otmental models in epidem22I;bittorrentPfileAKlinux distribOonline dating32YsshPtop chess players throughout2SDvirtual reality headse4D7;ut4AR; cli4CV;ion of Oy rule 3PD;hQthe order of sO;t michael and stO; ge0TU;ono3XM;c9di3KLexecutiveOsBK; c9;biOos2B1;di4AS;a0Fe0CoWuniO;ca3Y3sPtyO;! of20D;m,t O;i2Y3party Os1ZN;of Ou3YJ;cu3YBge36Ti3P0the O;r2KQsO;oviet9W;d02nO; Rwealth O;ba3GGg3FUof PrO;ea4CC;e3WSindependent43Tn4A2;aUco4FCeTgateway2DKl45QnRost22UraPsecurity and defenceO; poli2OA;cOv5;coon3RE;ightinO;ga7;ra,uropean framework of reference for3QW;dmissO;ioO;n 2YI;i4A3us;dia dell'Prcial O;bankV1so318v0MR;arH;!-separated3XRndO;-line2D5er O;ke5oO;f the order of the brO;itisO;h 41I;cUk4CIngPx waveO; f1F5; O-of-age4F7;homePofOto2OT; a3Y8; in O;the da4BY; Os;bo46R; wom5; VdPtO;! hale–bo3BA;ians in cars getting coSyO;! P-dO;ra481;centralOfi4BBho0RW;! r32M;ff47H;and36Qfrom 49R;inOus4B9;atRed O;dPsO;tatistical 1ZC;na index 2H0rug i3FA;i2oO;ri2MF;!nc43X; nee2PHby covi327chi33Fd1Ze1Tg28Ai1Ll0Vm0QoZsonYtTumbO;iOo;aOd41Ene high school135;! O-3IS;pi2K1rOsportswe9un2X4;ec444iv0; Q's manufacturi35Von O;du3XKhaOuWD;yn3;mcc32Tsingle acO;tionHC; white4AX;gne010mb0Bn02rRssPurO; index2W4e43X;al sOe3ZTus of rh2D0;qu4CG; SadoQectO;al O;ca44E;! O-0YH;avalanc43Cr49Q;blind4DRcomment3YLdep3WVps2T4renderiSs96tOw3ZY;eOh1X8;le1XLmO;peO;ra41I;ng4E4;el UiQsay1WAy of vO;irgO;inA;aPzation ofO; ma4CL; dignid4ADlO; historyGRi452;r1V5s15Ktom O;pa15E;iaPoO;! c0P6;! 385n2A0; Qan O;domO;in32I;feoBmeO;anE;a04eOin ch35Qoqu2X1;ctive 01en YgeO; Ohum4AR;anTbaSfootballO;! O;national championships in ncaa division i f2IUplayoffO;! nationO;al 3Q2;sket3GO;d universityO; rO;ank4AP;balPca2JVo'shaughOwi8;ne4B1;li3WE;security treaty18FunconscO;ioD;g5pse of the wTtO;eralPzO; conj3KY; Oized debt obli1NA;beO;au478;orld tradO;e O;ce3AI;n Oseum alfonso pér46C;dTfSh1OWjo4A7kaeperRleQmOpo34Asalm2trevo0O0;cr3ZGoO;c25Lrg1;akE;niJ;ar0PXir3VC;on004; QsO; superO;mar40I;haPpo469sOtu1S7;pr4BJ;us0; QplPstreamO; gu3JO;ay368;ca4BFfPpurO;su49C;e49Au3YW;lg4CAmba2YUnQtal alignment O;technO;iq417; flPba4B9s of the united statesOtelp414; do1SU;ipTJ; kO;ap3IX;ac,iO;tiOza3WD;on,ve O;bPdisOps2QWs1MS;son2R3;ehavioral H9i4CK;a arabi31GeO;! Oh4AW;be1la3E3stain 0RV;fficient of QlOn brothers45W;acOiac3TM;an3UF;deterA6pOvar2FT;erform2QU;!eRy O;garOko,rh2A9s208;brO;an3IP; ScQfo1OUi6mPxO;! gig4C6;as2JX;aOhEC;de27E;gea4B0of hammuOrefacto3ONve4;ra26Q;a01cinell00kWoPteauO; twiN; Ra 3OZmQnutO;! O;cr22No3OT;el2;auPchO;anI;st4; QatPnErOta3OO;oa404;iIoo;and ballCGri8;id3XO;!-co4B6ineO;! 2VG;a1YDie smul2NXol,raOy0TP;! k405;chQgu2S7tPxialO; c475; of 49Ni; 0QDella valley music and arts138; t3QEame Obc,id2XQn,ut3G2;re2G9; Pos,ykO; color2VL;pu3AX;a1Ve19i0HoWuOyde drexl0émence poé2XA;bQePj-napo305ster O;an2PN;do,le4A4; Pe O;atlético min35Ide regatas do flamen2ZC;atlético r1BFbrugge kv,pO;enO;gu4;juBmife6n05pidogrIris le04seWthing227udRvOwn;eOis3C5;!rO;f2MOw2VX; PfO;laB;cPsO;ee3OL;ompu4B1; RdO; P-circuiO;t 022;be4B2ci44B;enPquarters battle reO;ce45H;counters of the third Oou44B;ki46O;ac3SR;azPiO;di6;ep47D;c0Cent–server2UPff06mate YnSp studio pRtQve O;ba11CcusOd3DOow5;sl0;orF;ai3U0;icalStO; PonO; body c2D6–lewinsky 44K;eastwOho09Wwa2ZI;ood43M; ps2OF;changeTof QpledgO;e aO;re3VG;auMDi3I3tO;he uO;nited266;! miO;ti1JK; Pord the big rO;ed3KM;buQcu3SRmaPrO;ichard330o2L5;rtin42N;rt2;hé,kO;baOte46M;it,nk;a03f,mWopatraZKtus kaVveO;landOr haN;! O;brRcaval3OFgQtorsoO; murdO;er0;uard3YJ;owN;sa3SF;entQson O;tOun2R6;ige18K; attl413ineO;! O;barn255chO;urc1BD; dSnRr channel memoraQvon O;liO;tt7;nd3TW; baS7;uvaC;es 9Air14n12r0Rs05uRyO; OmoB;aOmatthews11X;ik5;dOs von stauff397;eViO;a Pne long457oOus; ran3QT;b1IQcardiRjeQk3MQschi2E6wO;el46QiO;nkl2OY;ss46E;na7; Otte col3R5;a2EGdebus2UOlévi-sQmon44Zr262sO;haO;nn2;tr30U;h of c08sO; 05ful1XUiQless inter-domain rou48RroomO;! of the eO;liH;cQficationO; of Os of fai3ZM;de32Tindian43Asw3X7; Xal O;antiqVco3EKeD9grUhollywoodSlQmO;eOus48Q;cha2F5;ibeO;ra2RQ; cO;ine40E;ee47D;ui41Q;chinese noOmac 3ZT;ve45Z;c23OdO;ia25S;iviliz419laN;a Wence ViTkO; QeOson's fa3UT; pe2FN's threeO; la3YR;du39FgOjames g43HmiM7s3X9;ab7re2V8;n443ssa dicksoO;n 2GT;th281williams10N;b45Ios35IpetO;ac36V; Ocy0KFg;ca38L;e Oo,voy2M2;bSd20UfoQho1UCrOvan kamp5wi2H3;eOi212;df2J8;rOy;la3X3;lo3MO;ar1Tc1Qd0elab color1Ogar1Ll1Jn16p15r0Is0FtUudad jTvilO; PizationO;! v3GJ;e3JUrigh1WFserviceO;!sO; exa51;uár402;a07i00rVyO; Q-O;buildiOs1PR;ng 3R9;football3OOg0BZhu342index3OOof Op3EN;brusse44ZlPmanchester0ADwO;estmin3WV;i3o2MA;ic acidRoënQusO;! O;bo1BV;! 3VQ;! cP1;ba36Gg3OGzenO; 3NMshipO;! O;of thO;e eO;uropeanO; u3HG;del0MUt3CM;coPge2Z6sy hO;ou346; s3LO;cPque du sole3JFrh2M0yl O;ga6;a04e,le of fift1N3uO;it YlaUmPs taO;ve3VT;cisOf2QD;ionO;! O;ofO; j04O;rPtorO;y 27O; eO;co0LO;bRde O;mPspa-francorchO;am3GK;ona3S8;re05S;dian rhyt10YssiaO;!nO; Os;ge1XF;h0rofloxac4;cinnatiYdUemaQnaPque tO;erB;b9m2; Ot3Z9x;of Oparadi33N;i3DRjOt3ED;ap1;erellaQy O;cr04WmoOw07Q;rg1;! m1;! beO;arcats385nga43G;en3N7lO;a1FCian murphy38H;!etteO;!s afterO; s44U; sO;pa44K;a43DeO;lyOro; t0RX;aPán hO;in3U1; bKF;aAPe87h84i57l4Zm457o4Gr0Gth2KAuRvr43MyPâteau pétrDūO;ichi nagu2GZnibyō;ler9HnO;a,na0S3;b0Bck01kotka autonomous okr124m00nYpacabGrO;chOu3VR; QesPiO;ll 0HZ; of 3NN;f126of O;e3KVsPthe O;ea41Kholy sepulchB;at1cO;ienOot3XT;to3DR; doo-hw1gO;ha,king0FU;bawam3M0l3WF; PleO; 1AWfi3W5;bTconSgras256j42GlQnoPpalahni1BIschum0yeO;ag0;ll,rrF;idOorB;deC;no42G;aTDeO;rry2XK;a hub0YJu-nipp3BI;is06oSysO;anthQlerO;! O;bu0G9hemi9S;em3OZ;mVnO;ic SoO; Plogy of Os;j02It3OJ;c3KJtO;ri0SE;fatigue3NKobstructive pulmonaOtraumatic0BFwasting3L7;ry3L6;aRePi3OQoO;so43U; Obo3UPca40N;os,remote deskt3BGweb0R3; kEtO;i2SQog3XC; 23ann b21hell st20s1WtO;a m1Tchurch1Ri0Kmas0EophPy O;maJtur10J; waltz3X5eO; 2JAr O;at29Gbr09c07d05ecc04g3Y7hi03j02lZmSnol3X2pRrQsPtOwalk5;olki5;ca22Btreet2G1;ee3SSobin mil6;ao0WVlu2Q4oo7;aRc2JGeQintz-plPoltisO;an2Q0;as41V;lo3T3;rOs3HX;kus and stephen mcfOloRO;ee3O1;aPee,loO;yd;m3LQng1;ud3LE;tc3NT;le30S;orner shootings and manOun0ZU;hu3MT;oOro421;lumbD;ow3TF;! Oti2QM;and holidaQe3S7iPm2O5trOwith the kr1EF;ee,u427;n 2ZAs3VZ;y O;se3ZC;a08e br07nO;aYe O;baraWcUeberTg02Ghà,keSlaQmPtaO;yl3ZD;ax2TKcv40E;gOh2P8;ar2QA;el0;so7;hubOol0C1;buJ;ns3L2; O's412;aScr01Rgrimm405hRmi28Pon1VRpPrOto3T6;ic31O;azsiOer3YHi07K;tz314;aaJendr0ZE;guiOpple3I9;leG;in25W;an HQnO; RityOs;! O;by3AXin O;i3A7t3AT;a03b02c01dVeUhTixSka6l0XQmccafRpPsOwo427;ci3ZMl2RB;o2UNuO;lis42H;frE; of2XF;a2OJo38V;riks5;eOi3YI;mocratic unQnoO;miO;na3XF;ionO; of2PS;a3JWou34V;ale3V5r4U;ngelo3APpologe1YC;! mosquO;e shoot3YF;caulOi3SN;if41B;ie hyn2P5y O;coPme3U1teO;ig5;st0YD;au3ZU;reO;nn1;avelWFb0Mc0Id0He0Gf0Eg0Dh08isa2XLjeric2WFk06l04m01no3JDoZpXrVsRtQwOzyl36A;al3KMei2X2hOil3J9;it3UX;ar2WTu1GA;aQilvIEpPtaO;pl123;ed3EY;c2Q2ra2GG;eOoJ;a,df2CU;aOe3JEi6ra3S6;rNVtt5ul;'doOla3Q8;nNTwd;a26KccandHOeOu2HU;ledand3WZsOtz5;si3MA;a3THoweOy3J7;!ll;aOy7;maGtt1;aQePuO;gh3h6;dg3m2R6;df2CFns5rdO;wiJ;ar1EBo3JP;aB1oO;wl0;l3RMuNL;'347iamant3DIobE;hPlareJPoOuo2CD;lf0op0rNA;ibOr02E;naC;enoitOo3RXrown2TKum238;! double-murder an1M2; 03ct3PBe deok02i ZlSnRp suErPw Ozen tog34O;ch3Y4me4yun-f3LX;dOi3OS; p1TBaH;drichthy3gqi8;a1BTeOi6;ra,sO;kyOter3ZF; dO;ecomO;poO;si3VM;mi0ABsooPtaeOwoo-sh2V5ye-3LD;-jo2;-y279;-s4;kyu-37KmiPyeo-jO;eo8;-ye2;amydAoO;e SrQé8Zë O;grace more3S9seO;vig2UW;i6oOpromaAA;fo3MKphyC;bOfin2FTti8;a0MCenn3VX; r2UN-squared 2Ja2Gba t36Pc1Yef 1Pgorin0EUl1Fm1En08p01rWtQvalryOwetel ejiof3W6yo miya380șinău;! of a failedO; kn3WH;a Sin,on,rangada3T5tO;aQerl3W9y chittyO; bang O;ba8;go8;ri2OD;aQlane mccrKoO;n,prO;act3ZP;gOnjeevi3SO; pat3C4; k3DAko1OCotleRpendQsO; hO;ar3I4;al3;! mexicanO; gO;riC;a0Ich13Kese Pk,oOua ache20V; mo04E;a0Cba09c04d03e01folk 00guardian l3S9immigration toYla37GmWnUoTpe35CrSsRwaterPzO;odi1X7; tO;or3LM;up15K;emainder 0Y7o3E2;peG;a3YNeO;w R5;aOyt37O;rtial 18W; meO;xi3KS;re2IB;conomic reOxclus0J;fo3LF;em1ILr19L;alRhQiv26ComOui2I2;munO;ist3RZ;arac265;end9;skeO;tballO; assoc21P;ircraft carrier PstO;ro378;liao3OKshanO;do8;! S–O;pakistan economic corrQunited states O;rOtrade2RT;el3RC;id3UM;a3AVcSglobalRmiév2T0na2RSrich gPsouthernO; a3AU;irlfO;rie3U0; television1N7;entral P7h3VO;amanda ngozi adi3Ypanz3PL;dQe1RNi O;con cOpe121;ar6; Rb0V4renO; of P's online privacy protectO;ion38Z;bod3CWdu6m5;a3L8d35Ygroo2ZWlaPpoOsexual3L7;rn3R2;bo3DW;executiveTjusticeRkeQoOtechnologyT;f staff of the united statesOperatingS; ar1SR;ef; ofO; t361; oO;ffO;ic0;agoWhen it2YMkPoLxulub O;cr2MG; cT-filSenOp3R8; Op2YE;asPr3WItikkaO; masa3WO; fo3X6;-a;or3R2;! R-O;styleO; pO;iz2YA;bRcQdi3OXfire 303mePoutf3T9sO;ev5;d,tr1GJ;anMu21L;ea3UTlackh1GLul3UQ; Png Op3WRroscu3L1;kai-sh2TSm3LC;se3RY;d0OOte3TF;atPichOor3SN;hoB;rapati shivaji maharaj 3KAtisga1X2; gue1A4a23byshev20c1Vddar 1Ue1Qgg,hBk1Pl1Jm17n14o10q3KWr0Ls07t04u35MvQyenne O;brOj2YM;an33B;roPyO; c2XL;letOn2EZ;! O;bigWcUimTmaliSsPtO;ah2J1;ilveNFmPubuO;rb1;allS;bu;pa3VR;aOorv2XG;ma3KFp23V;-block1O; Pan Oni3M2;bhag3HPsh3OA;at21UbVTh17H;aYhireXsStO;er On1Q4y pu3N1;benni2IQreOw6D;ynO;ol3KR;! O;ope3M8pQrPtO;it7;at1X7;ie3V0;! c3HD; boPpeake O;bKsh2WG;ud4;ami01enkov0D8iZnSok3NEryPub,yl O;h3IQla1JFya8;! O;bloOj3TF;ss3AS;i2GKobO;og,ylO;! O;d3L8exclusion71liquida099nO;ew safePuclear power plantO;! sarcophagD; confine35C; o0Xe O;b0JNcu1L3; l07H;ljOngs3S4;onO;g O;of jose2;gPnaiO;! e069; xi32Xdu;iTmRoPtrailO; c0IGs over the countryQU;thO;era3UK;y O;al1IK;calPstO; wOPry; Os;bo3QVca154ePi1LZre366subO;st298;le34Q;sea QyabinskO;! O;mete3R8;cPf26Cg2XNhOm1PUper2H3winA1;an2OW;li25S;a,hov'sYA;chQseOt3KL; sOca2W2;andML; m071;ch09D;hPkO; 2PSe3SC;enOn324; republic of ichkOs;erA; O's7Z;polynomO;ia3S3;p t1ZVtO; e28E; 4JceTBd4Be48gas3B9i3Zk3Yl3Sm3On35os 34p2YrVsStQuvi3J7v,zO; bo31Jz palminO;te3Q2;b3UCroOsworth3SCurbaH;ul2V8;e Otity02L;at0UEba2TJstO;ok3;acter2Gc2Dd,g2Ai24lTmRo000terO; Ped financial anO;aly3QJ;commun37K;ed,iO;an ca3MTn9;e0Ti01otteOton he2RAyne 1AG; P'sOsville car03V; w1AA;br1Y2cXdouglaWfVgaThorSkemp mu1LXof mecklenburg-stre0VYrO;aQiO;lEtO;ch3R6;e,mp3M2;ne3P7;insO;bou3C4;c,la3PL;s 3H1;h1KZordK; 0DePze thO;er0F5; Q'sO; aO;nge3R4;and the chocolate 07b04c00daYhUk230mSpQro3RKsPwO;at3OVeF;he5;aOlu2FNu3B3;rk0ti30J;c25IuO;ng0rp3MJ;eOunn3PV;at2bdoO; sO;hoo3T4;nOy;ie3QR;a1RIhPox,rO;ess2JLi3PI;aplOe0VE;in3M5;ak0rO;ew0oO;ok0wn;fac3RR;balti3LQdOxcx;'amel2QR;m0Rne ti2OYs O;aznavo38Ub0Nco19Td0Ke0Jfrancis swee2NOgr19Hh0Ii0Cko3GVl05m02n01o00pon1SLroYsVthe ba3R3viTwRxO;!ii oO;f swO;ed5;hiOoo39A;tm1; o08iO; o07i06;aaPchwab2ATobhr382pOta1EB;ur2ZN;tc3FS;bertOck3OIv5; j0WI;liv2PC;elson re0M1g,jonZ8;aOi34U;ns2rtO;el,in3OC;aSeQiO;ghto3J0ndO;ber3LN;cleO;rc;ugO;ht2; of SiQn1PLv 15TxO; oO;f ZD; of Oi 15Q;e37Ps15R;a2HJe37O;arre2URos206;dward st1HA;aPe gaulle196icOur3HY;keN;n3QRrw4;aOoy0ro3JXu225;bOr1V2udel0DE;ba39L;ag6;otRsOty wak22K;e castro2L9ma cOsa0JV;arO;pe2OA;!sO; of 3ME;eOé d'affa09W; of the light briga2ES-coupledO; de0Q2;oPutO;er3OR;al,t–marie–tooth389; Wi0TWs O;in Sof the O;dc exQfinal fantasy vii 1THgrishav3BImO;arvel ciO;nematic3BE;tended3BD;romeo aOthe mario franchi3PA;ndO; juli3N5;en34J;elwSo trap3P4paquiddickPters and verses of theO; b0OZ; inO;ciO;de3AC;aiH;m3NWth190; sung 05a04ce02dVelUgRnOson de l'oiI5;el PingO; tat3BA;i2OIone 2MUtuO0;'1ePi3E9pengO; zh2YB;li8s in star wars re-rele0D1;! west2D8;igarhSler RraO; Pgupta maO;ur2Y4;wi2TE;bi8j3O4;! kare aashO;iq1WR; the ra0UFllor of O;ge2FZthe exchequ0;k2XXthip songkr2BY;ju8;ath palihapiti2XVeQoPpO;ag6ionnat 274s-élysé3;mi7;le2;cRd3JYking theQlengerO; deO;ep; do3MG;olO;ith3Q8;a 1L8ra;m UnSrO;man of the joint cOpe349;hiefsO; of sO;ta37Q; Osaw3KZ;ma32Hru7;tOwa17O;op3OT; sooPb3OSl sOy1WT;onn5;-b4; Owick bos25L;huTj3HSkroSloDOmRsPvO;ea3DQ;mi37CtaheO;ls37T;cq2LAichael RX;eg0;rlE;chaan PeO;un-w2RV;te8; mar3AAbu28cil26dr20e1Zl1Km1Jn0Co,phal0BrWsQtOu3PHvic3DK;ac3J3iriO;zi6;arPc fàbrOs3AEto3N3;eg3OZ; Pe bO;orgA;c29EmiVEroO;me3D5;am3PAb01eVnUseiStifiOv352;cateQed O;loverOpublic accoun11R; b2CE; autho2XT; lanO;ni3EJ;!unn3GE;al,bOmonial 34K;e204rO;al PospinalO; flu3LZ;cOp0JT;ort3NY;erD;ic3NUop3OI;k uyg34Ro0Ts0OtO;aur0Me0Hi0Gos,rRurO;i2y O;e2BRof hO;umil1RQ;al Ue-QiOo3LP;fugOpetOsm;al1KH;baJlO;eftO; pO;oli1KR;a03bYc3FUeuropeXintelligenceVlimiUn129pQtO;imeO; zo6;arkOo2BQr28U;! O;joggerOt32X; ca3MB;t 0NA;! O;ag1VD;!a3HS;a2NEoardO; of secondO;aryO; eO;du2NF;frican republicOme1WEsA;! c1VG;pe2B6;lla asia1Q8nRrO; ofPs for disease control and preO;ven3J3; ma3ME;a36Hnial olympic parkVI;!w3LZ;orshipQus in O;auO;str2FB;! O;in0AK;zo3NO; yılm0Y7e36W;a1PMeXiVlRtO;ic Os;bri0COl2XHmOn3GFw0A1;yt2W3; Qo,ulO;ar OitFo3LG;autom3EIn1TRrespi3IL;memb2G7nucleD;a i1UBne O;di2;bPry,steO; o3S; jih3IOrO;atory gun3HZityO;! sex2B;dee la2D6loPP;ic Ous;aQdigPthe enterO;ta1OL;goL;leO;xa2F6; Oia payne-gaposc2IJy 2J7;kell3GMrh1KI; PaO;no 2UZ;ci3G3p19Q; O-r31Pawg2LA;projektPtO;eneri3M4;! r3HL;h pou2EWlO;ean0;c DMee0KPgb,s;bDIche replacement poliDHdD8esCZfCXg3MLhokAiCJjuNlB2m9Yn80o7Yp76r2Gs16t05uWvRyPzzieO; dA3;enne Om2K5;pe0QF;alReOi9; Oto3J6;paOs3L8;in3MA;ier king charles spaVTry;cPlifl30ZsO;a133es of world war2N4;asShyO; d0DW–schwarzO; iO;neqO;ua12Y;ian 3K2usO;! 00J; 0M's cr0La0Hch me if you c1e0Efish0DhQn2XWoPskilOt7w08N;l 00H; the you349;a08erine Tie 2SDoOy2FK;de-ray 61lic O;b0JUchurchO;! O;by2UAsO;exual abuse084;ba39VdeYhoL6i2HSkeXmUoRpa3ELsc0OItQwPzetaO;-j3JC;ay6;aHhe2Q4;'1KFf Ox2LN;ar0WGvO;aloF;cPiO;ddl0M5;corXM;en0;'PnO;eu3AD; meO;di2KB;rOy p18C;i3BLsF;!i8; blanchett2MTgorOrpi110;ical impeOy 13C;ra312;comb1BClOn,ra2W9t1S4;an PonAyO;sFtic 1ZE;la2TCnu3F0;ad7;p2ZRsO;te0S8; anv9a0Vcad0Se0Lh0Ii0Gp0Cs03tQuO; mart227alties of the iO;raq2EE; ZawKeYile andXlTor SrO;atQoO;l performanO;ce3JY;i2o;and poll293o2XE;eOi8; Ov2I;bOin the00Arock 2UC;ra1N4; le1E6;! system 2SBllammar91;awKir2of 0; eVaTetteSiOowaL;ni–Pus O;sta169;huyO;geN; ta38B;ndra Ova;ha91pe2YL;lli3KE;ar david fried164er Pian O;s3E0t1JY;the friendly gOvan di5;ho3GO;miOno,o;r 0OP; Oew,mere wo3J5;a2F8tO;ruJ; Sin,mi381y O–shill3CY;affQdOkas2BTneist35Dwi2MV;esO;antF;leJ;bl37Yclos3EVsOwestern reserv1CI;tu32L;ePing style shO;ee3FA; r2SE;blO;an28D; 4Ca45b3Jc3Hd37e35g34har3AJi2Zl24m1Xn1Ko0Qp0Nr03son 01tRwood li2MFy O;elw3g2EYjoji O;fukO;una2G5;eShagRoonO;! O;network3AXsaO;lo2;e,o delenda e3FY;l,r Rsian O;cPpO;rodu2UH;oordinatDS;bur29Wre33U;k0V7pa25NwO;en3BJ;aJe18ViXoSy on O;at yourQcamPdiJgNVhL6regardO;le3HV;pi8; conveni3GE;ll Pm,tO;! t2QE;oPshO;el3DW;'conn3FC;a30VeRngtOon;onO; eO;ve32B; P-anneOr-grade n348; mo3HI;bQco2fi1YKha2EYj3AYl3FGsnodg2TGuO;ndO;er2P7;rad0XE;aOe di2AI;l tunnOthian X6;el31X;lRn kQ–kanO;n dO;ef3FT;ea3II; 04e 01inQyn O;bessette-Oj3G3;keU;a Ue QgiO;an O;d0TRem33F;f0RZkeQmPpolach2F4queO;nt4;un36A;nne30Z;gaitQhurric1B9pPreO;ap0;ant0O9;án;baPki8lO;aK5om0C0;sk4;bur2K4ch1D0dVii Rka6ly13Tof theQthPvorO;de24E;at2IG; b1T3;ofO; rO;omO;anA;an0L2weJ;ation Xegie mello0Z6ivQotO; cOa32Q;yc7;alRorO;a,ousO; pO;la311;! O;cruisOr3F4;e 34G;reO;voO;lu3CS;ePiO;l3GOne persi33B;loQn eO;jo25AlO;ectG; aO;nt009; 09a 07es puigde06i05oQy O;aquiOchaik4rae jeps5sim2;li2OE; 00s O;cXghoWhaTlehd0maRsPtO;ev39O;anOl2UP;ta325;c2BLrO;ín;nkPthO;coJ; gonzál39H;sn;asta17KoO;nd3CW;ancelOgambi2O0;ot230;s7to's1DK;mo304;b2J7guOju3CG;gi2NV;\\\"alfalfa\\\" sw2GNbenVfriedrich g28Mgustaf emil mannerUica0V6ju8lSmccu2YOnass2Y5pRrQsPtanzl0von clause2IKwOxvi gust2I2;e0DMi2JG;ag1chmi37E;e1I6o38Y;er1M1;innZ3uO;mb30V;he2U2;jKEz;bbeanQce vOna l2UA;an hO;out5;! O;n0DVs3A0;iCoUL;less whisp0s2R9y O;lo26Qmu015; Wam2V5captor0S2iPsO; against huma12F; b,ac ar21FffTnalPoO;pulmonary resusci1W5vascular2WZ; Oi39E;dPrichel1Q9vO;irtu3;ir285;! b0I0;co3FUga3FJsecurity 1IN;assOiG8;on6;i6oOuret3C5;hyd1WTnPxO;yl7Z;! RaPiO;c3CUfe06Y;ra,tedO; w24L;c00dioxideYfVmonoxiSnPsO;teI;anoPeO;utra0WE;tu1H4;deO;! pO;oi35I;iPootpO;ri2YS;be3D3;! in earth's atmoO;sp1MZ;apture andOyc7; sto1AE; Rbin2WWcaPvaOwK;gg2D4;lOs;!la;dOg36L;eOu6;leving6;cEPseat head20C; 0E4acit0Ec2TZe0Age1I7i02o01p00riZsWtPu22PyO;baG;ain Oc23Eure of the dutch fleet at den he0WS;a1NDbSdisiRho35Fne1QItO;omOsuba2W5; mO;ooB;llu30G;eefhJBri1MQ;aic4icumO;! anO;nu2Z6;!corn2KJ;adocAucci2LU;col35OeiGre1RQ;llary 2PPtO;alPol O;hill occupied pro1W9r1BA; Oi34R;go3E9o6punishmentO;! O;by2MVinO; t5J; Pr,tO;ian0PO;breto12Fc3E3hOof good ho327to3B3verde17V;att1E6o33E;an3D7or; c2LTimhínO; kelleh0; 1J't 1Ga0Ub0Tc0Qd0Fe0Di0Cn01oVtOva;erburyRinfl3DUonO;e3C8s of O;swO;itz26T;! O;caO;thedrM;laSn O;eQof sherlockO; hoO;lm3;f lens1GGos; o2QF;abiVeTiOon,y edge dete304;balPng stock rO;ouH; Oi33Y;corp3BSholocO;au3A3;d 9LsO;! f052;di3CKsO;! sO;ati2C2;d2Z7s; cor2B2lo O;álv2D;ace ViSleRyO;! O;crushOpalm229; sa29T;!m3CZ;ce Ode;beO;rg5;bushPcameron buBoOpa03T;weN;neC;eOún;lOr; c2NF;erG;an07dRl+,rO;a Py O;i2ANwhaAW;ba2C8;aZian O;armXb0SQdo0SKenglishVfQindian residential schooPnationalQKpOtiB;acificQJre0J8;l 1DY;oPrO;en30T;o16Drces maritimeO; comO;ma38G;! language proficiency indexO; p1A2;ed0OVy;! O–united states bo1PW;gPmen's national O;ice hockey 262s0SG;oo3AK;! O;smith-njig2TG;help falling Otake my eyes off23K;inO; lo318;bDyO;am1ou ever forgive m165; 0Pb0Ee01iUorGpO; RaQbell sOeonato brasileiro série07Hh38Iing worldF8;co32ZoO;up 22H;nAri;dOlaz335;av397;lOno de santia1ZY;a RlO;a Pe O;cott4kost28Ppa1DTraz2XAsaint-saëN;b2L4luddi1YEp1N2;aRKcab32XmO;e92or2AQ;lXo WrO;aUoO;n Oon15C;boy3APcQdiaz34WmoPno11AwO;inklevo3AD;na1NF;roO;we;! obscuG;appear1PS;! Plia sinOot;ensF;ca39Mt1XW;odiaTriO;anQdgeO;! Os7H;analy1DSfi30B;! O;explo2WZ;!nO; Q–vO;ietnamO;ese24O;c1IRge12F;neO;wt2;a12c0Re0Mgary0Ki04lWor38Htr2IEumVvO;aLinO; Oi31B;and hoRcQhaPj335kO;att9le4;rrF;ool2SH;bb3; s0YA; Pan rydz,ig343um O;hudson-odJ3tu2HG;me Sof Othe mid1TG;du344juQtO;heO; n37E;ar339;if you get21Qk2W0; 02a2Y9b0c00forniaTgu39WpQstO;a fOhe1H7o tan1AF;lo336;e38AhateO;! O;of córdo2RK;! O;co1MYdreamSgRhigh-speed 17Iinstitute of tQpolytechnic state university football team O;plane cO;ra31N;e0K6h0KA;old 2QH;in';he,o O;c2VLjaJ;ca128;! O;fl28Win2XL;b landQndar ofO; saO;in35J;ryO; j37M;iumRulO;atorPusO;! of vari32Y;! sp326;! O;cQhOo1X5;ydO;ro1X3;aOh1QT;rboO;naH;bOis,mity ja6;arz2rA;l00nWrVtO;lPríona bO;al391;inPynO; jeQD; fO;itO;zgera37R;n4Wo;! O;and PvelasO;qu31W;abI;ee spae246l20I; Of2UH;ch2KK;arOi2TO; R's1GPeanQi2s supO;erO;do38Q; s219;anQciPsO;al34K;ph0;d 38L;av0buLdysVe cuSillacPmi2TFuO;ceD;! elO;doO;ra2FC;nnO;inO;gh35D;haJ;ci3; c00aZba2QJernet sauviYinet of Sle Qo sanO; lO;uc38B;teO;le0R2;jRtO;he uO;nited O;k14Dst2V8;oe bO;id5;gn2;l,r34D;alO;lowK;reactive pro28Hs0IT;dRmQstandardO; lO;ibraL;aj34Gin34G;ata Oynamic memory al1LI;typ3; 0IO-0ILa06Sb06Gc06Dd06AeWSflixWRhW6iQRjQJlLVmLUnLRoECr4Js4Gt4Bu03ySánh mì,éO;chamel J4la bartQrénice marlo2W7zierO; cO;ur2WW;ók; Vford dolph4juTron RtQung-chul h1zantiO;ne Oum;em2SWfZ1;ed1M1;ho77leftO;wi2VV; raveeO's;ndr1;dawn's early34Cthe grace ofO; theO; go2W7;b3Qc3Id37en34f2Lg2Ai21k1Xl1Em1Bn15oy14pr12r0Cs00tSzzO; PfeedO;! unsolv32I;aldr4lightO;ye9; i'm a cheerleUch cassidyTtPyrO;ic34K; pl048-numb-a-08AerOoc2X3;fly PmiOs stot2VHworth0E5;lk;ef0BWkEE;! and the sundanceS5;ad0;an,hYinessTpi264tPyO; philip2HFb285;a rhym3er O;doPke2YDwO;el2V8;ugl36T;! P-to-O;busi35O;i0W7j332mOpl373;a14LodelO;! canv36O; 1Y3i2DG;a0Ab3Meauc0QRg07j 04kina faso10Hl02m01nSrRsa,tOun2UJz2RE; Oon upon t1UP;bachara2UYkwo0DIl0JBreOwa34By1DW;ynolds2ZZ;a36Wi2O8–hamilton duI; UaTham-on-s30Iing OlE;mRofOsun 30S; wO;asO;hi1T5;an,o08M; b1TYby;afterOno312; rea2K1;aK9es2EP; Oe292;iv3;alPkhO;ali20M; ar0WU;eOun2P2;r 2R8ss meO;redi2O1;kPri dO;eat0ML;um4;enorp22MoO;pi2;an1DF;desSgQk'd,ningsOty aur bab2WL; wO;ar1LF;al33Kie,o strayO; do32J;li22Ht2AYwe2T1;blePpyO; j2Y1;!b2XD;g03im18Rk00lO;! Xd2GBetQfPi2WNp2N7shit O;jo1AA;igh35Q; Pin boarOproof ve327;d 16W;cl024for my vQjOti35B;ouO;rnM;alO;en0O5;sOt1NN;ha316; mO;odO;ulD;arOur;iaOs;!n 2DK; missPayo Oka26NoDH;sa29Y;ilO;e 16F;ckVldO; Ring O;information mode2XGmO;ateO;riM;back better PdiO;vi1SD;a2G3pl1;! rCV;attiTsO; Ry O;maPsiO;egI;lo6;bun1ZQ;! O;aQchPveO;yr2;ir2;utomob0UN;fPord puO;ss0;alo Ter oRy O;sainte-Pthe vampire O;sl2JQ;mar31W;verO;fl320;bTsQwiO;lOng;d w30W;abr3oPprO;ingf1FS;ldi0;illRuffalo buffalo buffalo buffalo buffalo buffaloO; bO;ufO;fa2V9;!s;a vista Oos aMJ;socialO; cl00I; Xa0CRdOgerig9we03M;aVhSy O;eQhOri2S3;acOol2OD;ke2UR;bs5;aOi2U5;ho33Ns of bamO;iy1; b3A;g1Z1s2SX;hUkO; 1HZet2Z8inghamRminster fu2UHnelQwPy baO;rn3;he2P0;l 0W9; JXsO;hiB;a1OVenwald0JQ;bleOonic pl2EY; Qgum O;crO;isF;guppi3so33At2X5; g2KQdi1QJrRsO;! O;a2FOin the so2AMsiO;ngle2FO;fs;-t17QdOe sens32F;! licO;ens3;a7Ee5Ui2Eno,o0UuYyOüno;anQce Oson ti2TW;dallas OhaCpapenb9Ly1A5;ho2H; Ob1QE;adams1VXb066cRdanie25VfQgre230lOQsO;i2LAtO;eve2V4;erL;a29NranO;stOH;ce 04g3nWsRtO;alisPe-forO;ceCQ;t 0UG;hless dc electricQselsO;! O;a2Q8spro0WJ; mO;ot2YY;ei,hi30Xo O;delboTfernaSgRkQma30BsamO;marO;ti29Q;ir2XC;aSHuimarã3;nd3;nnI;a00bYca233dXedwards iWfVgrUhSjeJ8l2TVmcQspringstePwO;el2QGill1BR;en1V8;giClO;ar5;arEKorO;ns2X2;een28M;orsy2JW;viN;av1XCe2R8ic1AD;oOuJ;udRPxlei4V;lOr2QS;migh2VC; dad2KOad10c0Zd0Tke0Pmi6n0Jok06theZwO;nQser O;exOga31J;ten2NJ; QiO;anOng hi-p2GJ; mo2X4;be9dQmarmorated stink bYLrOsug9un1JA;at,ecluseO; sp1H8;waO;rf;l,rO; 1L6s O;griRof O;iPjO;esD;ta2LW;mm; lZe WingsTlynO;! PnO; pr30B;bPde0G3nO;e2WSine-0US;ecUKr2IU; iO;nstiO;tu2WJ;b03IdPhOla1NOmue2RYsh1BI;og1;'orsK;op2TO; Rch179ny3Iski be2MFtQze O;a2IXstarO; m1B;o2LXë 1S5;breOs2SD;akk0;back 02Vn O;arrow kPf7BwindowO;s 0IY;ill2XC;erickRieQy O;dOjeHM;al7; l2S7; crO;aw1QE;co2R4k lesn9;ba2WFcRsQwayO; tO;heatB;he2WK;astOh0RV; syOi8;ndi1ZX;an26c25d1Ue1Rg1Fn1Ds1AtO; 17a16b21Bish Xney speaWp27OtO; Tany PneyO; po1QV;da9TfuQhoPmu13No'gOsn2XU;ra2IZ;wa2XP;rl1;bOek2SYro1B8;ak0;rs1T1;a0Pc0Idarts0Fe0Cfilm instituHho01Fi08m05n02overseas00pYrWsUtherm0KOunPvO;irgin1XS;dergraduate degreePion of fascO;is2VH; cO;lassiO;fi1ZF;hortO;ha2VT;aj,oyO;al 1QZ;aOe25X;ss2NC; tO;erri2QM;ationalOoYS; p2SZiO;ty1K3;aPuO;se2K2;la273;nPsO;l3rae1IQ;diaOva2L4;!n ocean0FA;mpireOng29S;! mO;edM; orgaO;niO;sa2UL;olOui1IK;oPuO;mbA;nizationO; oO;f the amerO;ic2YS;cademy film 1OAirways252mericaSnd american keybo25DrmO;ed0BCyO;! oO;fficer rank insiO;gnA;!n tobO;ac2KS;in's g1IWnnA;mOsc0E3;ar2R3il2OM;ba6k2UTtolO;! O;beauf24Bold vic theatreNSstoolW1;e,g me the O;horiz2;adeYette lundy-p1MThSitte O;aQbard2YOmPnO;ie0M1;acr2;ub0;am youngStO; P's2FDbu2NLli6onO;! and ho2ND;meO;moL;! 0QZ;! comba0ED;! Pf enO;cou1UZ;la2CI;eshead revisFDgO;eOit m12Q; of no reVrt2t Owater associ2KY;cSfRjones's Qk2BYmoynPrO;eg1;ah1;ba2SWd1XQ;on2VT;hrO;ist2VC;tu2N2;k,s; Ona hildeb09I;austin0Ib0Ec0Bd07e06fl1YCgr05h03j01kZliYmUoTtyQwO;ilO;l173s2;l0reeO; hO;enL;'coEJr1K7;ay,cQichael bePuO;lr1KA;ndF;fa1ND;tt9V;eOilmea1KU;i2F8mp;ag1KSoO;h2PLn3;aOoy0;llisKrt2KA;az0ee6;no,ps1XK;'arcyQePoyle-O;mu2GY; pal2P7nne2QI; j1VY;l29MoO;nlExO; f2QB;aumgQen1Z6lOo1NA;eOo2C2;ss2S0;arU; g1ZR;a0Nc0Le0Hm5nXsenham's lineRKtOx2T1; Uman 2FZon082tO; Oe harHZon wood0AU;favBgRhun2QJkavanQl2ODrOso169;aOypi5;tn0;au2Q8;eIOoUW;easton0D7ha2WMmi1ZJwO;ei1WX; light03dSnan lee muHNtOé97; QfordOon thwa1X8;! communityO; s1MM;ri1LBsp0Y7vena28N;aPon O;ur2TW; Tn O;c0M1ei2KKfrRgQhu2FVo'cPpOschaSW;en1RC;ar16A;le1TJ;as0;bleth1UHfri0B2l2NTsPvacO;ca2KA;o8t1SN; mO;acO;hineO; g2V8; o1YZdOze1N0;erOon on the XY; rO;ea2IE; bas2DTkinO; m1AK;d00kRstO;! O;ca2L3fO;etis0XB;-up of tVbe2H7coBfast149ing Sthrough starRupO; of yO;ugoslO;avA;sh2VT;bOthe w208w2GJ;ad,enjO;am4;he bea2F4;bTfStO;hOu0X6;-firsO;t O;seY6;ru2RJ;oa2SW;! 1Oc1Nd1Bhm16i12m0Zn0Bs06t04un02veXwUxton berri2MVy wya2M8zO–ketIN;en SilOze2T4;! nQian O;jiu-jitsuOportugue2TGreM;! rank0WF;a1OSut;buC;lOn gp; sO;ta2SW; PhOly defMB;ea2UZ;gPnO;ew2TB;ir2SO; stro0ZWschO;we1QT; Oisla1TI;paJ;sOílA; Oica olerac2OL;iPknuO;ckl3;nstru24I; 1JIch08dO; new cherry fl06e03iYoOy nor215;lini1F4n O;burl1KUflVl2M5mSnRr265sOtee2FR;andersonPtO;alE;! 23Z;ov1QI;aPoO;re21P;rs1N2;o1HWy2CH; Qn O;c2K1eO;cho2S0;cOlo2J9rh0S0;arli7yrD;iPnburgO;! 29V;s 0MU;av2QI; david2IXeO;s ofO; s03Z; Opt2;cOst23M;oh5;l7nO;!fuJly,stPwas93–computO;er0QH;em,or1VX;aRiPosO;!-2PK; On;sc0PA;!n; Uford city stadium 2OMley O;beMco164fQj1SGwO;al2KYhO;it1JE;ightingO; vO;eh1I5;aRbi2R0dour0PMfalQg19DhaCpOrenf2HJ;ai0TUiO;tt2MN;ch004;ll1;hio2ECk2PG;siQ6; 6Za6Nb5Aca jun59d51eing4Yfu2P4g4Uh4Oiling 4Nja4Mk4Il4Amb3Wn32o2Er1Ls0Yt0Tu0Kvi0Gw08xZyQzOötes vo2QI; scag2PVo theO; clo2Q3; Sapati sriHUd hQle1DPs over fPz O;ii2R2n the 2T0;lo1GO;olbO;ro2JO;ba2OYeras2O3ge5EmQscoutO;s O;of11I;eets2RB; U-Rer17Qing O;career of mOdK;anny pOuhammad04X;acqui20J;drawingOoffice bo1J1; charaO;ct0;jelly10Yoffice moOpl2SW;jo; and a31en T3ie kUlQserO;!'sO; fuL; Oi8;chaOga2SA;llenge246mpionshiO;p 0UT;ni2S1;d2EAne spongiformO; encephalO;opO;at2LQ;di1H2gainvilleVnTrOvet 0GL;bon PgeoOn23V;is2PR;restoration in PwhiO;skE;fr16I;ty O;hu1OY; 0GDa;a1N3f2CLsTGtPuliO;num tox4sm;le Oom-tier character tomo0AA;roO;ck2O4;e08hin1LInia04on,p21Is02tonO;! O;brZcXdyWlVmaRred s1SXsOtea2LAun19I;co2IStO;ranO;gl0;rathonOsFF; bO;omO;bi8;egM;na0M9;el0O3oO;l191nsulting290;ahm4uiN; lBOa O;no1Q6; Pks,n O;ge0ISla1ZSw9;and herzegoO;vi2CL; c19R–einstein condenO;saH;a0Dde09ei-1UKg,i02nYoUschtSussia PzO;oi;dortPmönchengladO;ba2FF;mu2N4;! O;be0DR;bud27An,ughs ofO; nO;ew yO;ork 0YC; Oeo;to PwithO; horN;d2OEr2Q3;c2O4s O;iii of buSj2J3kQpastePsOyelts4;hcherbi2C1pass1PD;rn1MV;arOodj1DA;lo28O;lg1CV;a1F4rO; Oline0R8;coOgateway27H;ll2O3; PcKtOx;! subsequent movie2LW;boG;boo s0Ag07kUlean Smer esi2MStO;i8syO; cO;olO;liN;alOd2EBsatisfiabilityA2;gebG; QerPsO;ma2Q9; priN5;dWof O;bUdSeQg2FBisai2G4j0EKk11FlevitPmo0YIreve16PtO;he1H4;icD;no2EBxO;odD;aOeutero5E;niI;oba 2O;eposi2OY;alPiO;e n0I8;oo0EV;te1SN; 0Ga0Cd08e00gUham carteTnQoPs2E9uOzibud28N;s 1H2;!bo;!ie O;and cly1D5bed1T8hu298lOrai2GNt1UQwr2MI;ang1FJ;r 1GX; jooSbongQcloudO; aO;ttaJ; mO;arc2H3;n-1KE; PyO; k2ET;maStO;hugs-n-hPomaO;hawk;arO;mo1KB;rr2MX; Qage positions andO; mO;etho2DV;giRQ;iBnOr19P;noOza; cO;rim1GA;iv0jovi1I1s0CJ;aVeUing of O;dresden PtO;ok1UU;inO; wO;orld wO;ar 2KN;!rm1;rdier globalRyO;! sO;toO;ck04E; eO;xp1ZD; b2NQivAly1V5oQshPtzmann Oza1VXé2CP;b29Cco01CdGE;evi2EC; yRgnO;a,eO;se O;sau2NI;eu8; ch1BUePo h1T1u no O;pi2AD;em woodOh;bi6;ck hors14Ana novak2OI;fr1YUp1OE;emiaOr18B;!nO; Oi2EJ;clKOgPrO;hapso26X;ro2D4;danovPeOotá;ym1; aO;ffa2K0;! O;commercial airpl0H1dreamliO;ft0;hiUyO; PbuO;il21E;dysmorphic0OFfat percen1PHhPmaO;ss2MZ;e296oO;rr2K4;dh2FPsatt1MC;io2LH; 0B's bur2G4a09bRcatPslO;ei2H4;! goldthO;wa2JP;i02y O;b00cYdXfVgeUhop2BHjoe TkotiJlSmQro2EWsPvi0YJwoO;maJ;an2C3ea7hmur2LB;cfeOoynih1;rr4;as28Ree;lo8;or259;arOis1NTlK;reC;ar4;annava7hO;ar1JE;e2IVon3ro2K0; kristinaPeO; ge1VO; bQA; On mar1RA;fe2DW;b08c07d05ei1N9f04g02h00ig0ka6lZmVnew2FOodenkirk2G7ro2LPsQthPue01SwO;ei1N8i0RT;e bui04U;aReOtoo1X6;g0mpO;le O;ta1M8;g2IWpp;arleyQorOura0X8;lEtO;im0;! and the wailer1Z4;az9ea0HQ;earts abisho2LYoO;pe,s0S6;eOu0XL;ld1M1;os2KP;env0o7ylO;an1FF;hap1J9ou188ra6;aPiO;sw2M5tme2HZ;lOrk0;ab1;!rdOz and ja1PQ; TingBEsPwalO;k 27B; oO;f O;caO;na2JZ;ga2LSof O;control for crickeQdirO;ecO;to2JT;t 1TR;bur0S0dOj1NT;aOer1IRid2FN;ll2LO;p parib2LNsfO; rO;ailwK;aa,p 032w;a27e23i1Vo0RuOythe da2O; 0O-rKeQmhousPrredO; l28M;e UM; 01's c22V-YbeXgrass16KpVsTtoothO;! O;lowPspecial intereO;st22Y; enO;er1UC;! 24LtO;ac2B7;oiOri24W;nt0Y8;a2IWrL;collar woC2eyed Pfooted boo2G9ringed ocO;topD;so0J9;ar06b02ch01exorci2HSfug284iYjaXloJmVoUp275ridge TsSwhalePöysterO; cu07T;! O;challO;en233;c2Rky0DH;mo0I9;rig4;an22FoO;untain03Ev2IG;s11Ky;s the warmestPvy O;ca2DS; colo211;ee2J2;aPeO;et7;l2IInO;is0SB;chi29Q;del bOhu246;arr1IO;c0Lemfon1KYg,nd0IoOw223;d00mQns towerOp; dO;ef0IY; V's taTberg RsburyO;! O;publisO;hi8;billionairOcommod1Q6us aggregate bond2JM;es2JL;xoO;no0FF;fi0QHinO;to1BK; QbF7houndOs,–brain b1PI;! O;ga8;alcohol0N6dZe0PGin bloodUJlYmeri0S8of WpVrTsRtypePveO;ssI;! distribuO;tion X5;iOugar sex mag1F0;mp7;edO; s1IH;las2BZr02V;eOzeD;lv3;ibI;iaO;mo2FP;e onPiO;e 2BJ; bl02J; p2D3kO; QbusterOchain23L; lO;lc;cipher mode of Om1ZK;ope2EX;nSpRtzkPzzardO;! 1T8;riO;eg;pi;dOg 1VRk2FJ; Oing l0BN;fRTmen and an1U4;aQnOtchley 0ZD;d0heim O;pa22C;ch,k2HD;c05de02i01ke Wnche TstSxploi0ZCzO;bl27Aing saO;dPmO;ur27I;dl3; furna2I3;deverPgO;ard4;ea17D;bRe1PBgQjeVlPsO;he1F5;ive23D;ri027;eCor22E;re0Qse pa0YH; Oe;ii,ruO;nn0; chy23VkO; 05-YaXbeScRfa2HPjaJkklQlPpOroJs1RB–scholes12Q;ink1BMo2HQ;e0JGig2FE;an1M7;ur1DW;a2G2rryO;! O;lOos;imO;it2DG;dd0;and-red broadTboOeyed p2C6i29P;dyQxO; tO;es2IB; rO;ad0LG;biC;a0Ob0Kc0Hd0Eeyed pe2HYfo13Kh0Dl08m05narci04or03pZrockWsRtQvOw0EX;eil Oul24P;br147;ea,ie;abbaRcPea,to6waO;n 007;reen O;of0E9;th1AX; sO;hoO;ot0;aPeOud1VE;op7pp0;int2EDntherO;! p2B5; w0QF;ssD;aPetMiO;di,rr2E1;fi16Rg2HUm1YRrk2DQ;aOives ma0IF;beOgo2;l O;soO;cie2AW;ebrew israel1I3o7;ahlAeO;a1Z7sert O;on24C;at,lPoO;me203u1PW;ov0;et2AOiPoOu161;dy,lt,x;llionaO;ir3;d2DUnd O;taN;arne strouUörOørnstjerne bjør29B;k,n O;andrés5bo1ZJirQuO;lvO;aeD;onO;si14B;str1YC;a4Xb4Nc4Kd4Jg3Rh9j3Okini3Ml1On19o0Sp0Mr0Gs04tQzO; Oaardva2CK;mark2E9s197; 0XVcXdeWlVmap2FZtRwO;a1N8ise operationO;!sO; in c;erPorrentO;! traVG; sweet sympOs;ho1BK;oVDy;fe18W;hQoO;in SJnO;ne1RL;es br12XuH;exualXhVmPpectr2FKsagO;os1E5;aOu1Y5;ck biyQrck-O;class bO;attle1S6;omO;bo;k1D0opO;! of 1ZJ; Oi29J;fl1L5; taw1SRch,dSefring2DDkin b1L4minghamRthOya25I; c1LLdOs18F;ayO; pJH;! DV; of prEs aren't M7;aQin raw21Bolar O;d0GIjunctionO; transi0OU;rtiteOsha ba11R; gO;raIX;ch03di02infor0C5lZmVnte23WsPtOwaB;ePLin;!afetyRhockO;! iO;nfiO;niH; lO;evI;a2E8eO;!dO;icalO; e1RR;ogOumine1U8;icalOy; immortaW9;esIv0WX;emi06B; lade01aVdiSg crRomial Otu1BP;coOd70nomencla21SthEG;efficO;ie1YN;os2A2; iPng of iO;sa0D6;rw4;n2E2ryO; P-coded dO;ecimM;co12Che0E4nu28XsOtr26I;earch Ot9;a9Ltr26G;n 163;b1MId1Ie,i1FlOtmore esX9; 0Pboard chOUi0Iy O;b0Ec09d05eZgYherXid2DVjoWmSo092pre1C6rayQthePwOza6;e2BAiWO; k2BY; cO;yrD;agPiO;ll11O;nuO;ss5;el17I;ri112;ibboNr72;icSlliotO;! tO;heO; mO;usVX;hn0;ePoO;nov1;e O;wi0NJ;a1EYoQrO;ud1VLyO;stM;nnOrg1;ol1YJ;ea6ob thorO;ntO;on277;e PonO;aiB;eilish16VhK7jPlOp0VQ;ou2BE;eanPoe aO;rm1A8;! 1YR;ac0Bb07c02d00eZfi1W4gXhWken0MMlaimbe0mTnSpPr4Bsk19CwO;at1S1itJVym1;aPo21OulO;lm1;rc0OUxt2;e1GJig26Yye;aPe27BuO;my,rrK;cy,h0;ad0ic239wa8;at3oO;ld1VX;vaN;a1YKe blO;as1BD;a0J4li0ODoOu1K5;n0ZMsbyOwh0;! sexual assaultO; cO;as3;aQeliPix284loJrOu263;ys2;chiJ;ilE;km1;bi23Mnear iPrO;ub4;nterpo0TH;erberg mPungsrO;om1;ee2CY;! aO;toC;ec288ouO; phO;illi1N2; S-boxRfo2CWgOil; Pest ball of tO;wi6;bo2BE; s0YC;b05c04d03ey3fZhit0XJlYmac1IFn29DoXpharmaUsTtOw;eRime Qrouble in littleO; cO;hi1XP;adole1RCru23U;ch,n0W7;e1h2A2ur,wo7; cO;onspiracO;y UJ; no0SH;!ie,o21B;iQlPour accounting fir2AAreO;edA;op1I7;sh,ve personality trai27Q;a2CCiG8;at,ity grOG;aRen,ottomO; mO;asO;sacB;ng,sh1NH;et,s to college bowl0OT;e1M8hon fPycleO;! t155;ri2A3; forWiUlO;eRiO;cal Oog254;apocr09LcOma1RC;an2;! bO;eYAlaJ; a3Wmb0AUsara assaubaO;ye1AA;tu1WS;fGnca PsO; of an estim1V3–variance tradeo1TG;bePjaO;gg0;la27H;aZeeXoUp,uO;miQsOt1;hanO; kYO; pednPbol adulyadO;ej;ek9;oOpal20U;l bhulaiy0AJtO; po25L;mOshma parv27V;ante vaz1YIla nay176;d bhab28KgSrO;atOti ai036; Oanaty27Riya janata24Fpe;ane neOrat1W7;nu;aPyasO;hr22I;t24Dvad O;gi2B2; mo1CW;a82b7Zc7Rd7Me77f6Zg6Uh6Oi6Dl56n2Uowu1FVr19s14t02ulah bon1YJverlVwitch25VyO;bladeTonO;cé13RdO; Oer;good and Po0O6the bounO;daL;ev1ND;! burst quadd1E1;eyTy O;cl8Pd'Rhills Oj22S;c1HXhO;ighO; scPU;ange21M; c1QP;a0Lelgeu28Mfa26Fh0Co o0Bsy d0AtSwO;ay,een tO;he butPwo ferns with zach gaO;lifian0JY;toN;any03eWie 1M9y O;bScroP2d1DBfo27SgQwhiteO;! f23H's off their rO;oc0SE;iOr25M;lp4;o1HHrO;a1TKoO;de0FL; SrO; Oidge's law of headl1WX;businessOcall sa07YwatchKC; buO;re1NW;davisOmi140;! 64; huO;gh3;ra1B6;'ro13U; Uany RePlO;eh11K;nny fraZNsda O;game020sof0UE;ha15Tjoy O;leO;nz;beh27CharOp01E;m2t; O-methylamino-l-ala030;bPdOfu1U5is1X6;ecKis18;loO7;lan schoolQsPt bO;uy;a1ZBel 1TZ; sO;ie1R7;ber17et29Eg14ing13k0Wl0Nmuda0KnZry gor1S0sXtPylO;li1TR; Tie caSolt brRrand O;rPtraoO;ré;us16M;ec25U;rvI;con0M8kreO;is19I;eOh1DO;rk0;!aUeseTie QoulliO; O's0AE;d0Mnu22T;eccles117maPsOtaYX;an0KX;c,do1QN; mountain1J9;dette ZrdO; Qine evaPo O;bertol17Ms179;ris1Q4;arnUbressl1XDcRhQkPl205moO;ntgomeL;ay,er13H;err1QLiCop0E3;oPribO;biN;rn0Z1;auUZ;pe0FXsoubiO;roD;! tO;riaO;ng7;anti H6inO;! O;bTco0RXiOwaC;nternationalO; fO;ilmO; festO;ivM;loc0SDrandenburg1VL;eley Plee college of0SWshireO;! ha0C4;balconyRsoftwareO; dO;isO;tribu238; collap260; stYFia;amotPenOha4maVY;!-belsenNZ; or1GD; l1HTs; 14a10d0Xe0Lford0S5gal0Gi0Aj00nRoit mandelbr27StleyQzO;e6odiazepineO;! withdrawal1QX;! continental gt;iTy O;aQblPgOhiC;oo130;an1TF;ndO;er13P;eOngton0OQ; thO;omV2;amOi ma0X5;in QínO; arellano fO;él1N7;bSdisrCXf00VgrRhaQmPnO;etanyaE9;en1PWillepi225;rr12E;ah23R;ra1XX;ciRgno aquinoQk afo08On,toO; musO;so02; i22P;o del O;to1UX;! QiO; Os;al02Fla1F3;c1S6pOt06I;resid0E2; gessYathUdQil dariu1Y1l0V3ttonO; fO;ormu25Z;etta carQict O;ar142cOwo8xQ9;umberb03B;li1VZ; the pO;lanet oO;f the O;ap3;er22J; it like bOy and the inkKQ;ecO;kh230;drQy venu26GzirO; bhO;ut1NQ;yl;a0Gb0Cc09f07g04h03kingsl02mZnYpXrTsOwhiKW;chw1YFhRiPtO;e4ill1O3;lbOm10B;er1O5;api1U3;eQi0B7oethlisO;beO;rg0;il1QE;la1WS;evF;cPendelOi1WO;soKF;kenz238;ey1YZ;arp0;azzaGerPibOurion1TA;ba237;ra236;alOel115ol1U9;co6;a1JWhOro24A;aOil0W5;pl4;ernan16VrO;eretonOoDI;! O;díG6;ffleOskr5;ck1YK; po13Za0Qfa21Ug0Ji0GlXow deckWphVsniUtPuga Oén cu0FI;wha7; and roadRrán-leyvaO; oO;rgaO;ni7T; initia1L2;ckI;eg21H;! mediterrane1; 05's 03aUe TmanO; VB–fordO; aO;lgoO;ritO;hm;delp11Dkn15Vs04Iépoq1SZ; RmyQtO;or m1WUrix lesO;tr1DG; y0BV;ci1CEhQpo7HraPthO;or6;msE;ad21VeathO;coH;pOth3T;al0QD;h1U9la093pe8L;al,nda cOsa1DMze;arO;lis7;iPraO;de,vA;an OumY0;cQfirst divisionPsO;heJY; a;on0S9; lugo1UPlPrusO;!ia0M3; muO;hamm1ZR;jingVnOrY1; Sg O;john malPtheO; ricard1VKre;koO;vi1S5;spO;or1ZG;! O;capital 1RCsO;ubwK;aPeO;mo1LL;n22Sti prinUGviorO;al Oi1U2;eOsi134;conoY9;gOinU;ars banQinO;',g theO; ques1YY;qu1ZN;a1OOoreO; PigO;ne219;mRsunQtPwe 0RFyour O;ey3;ri1C6;ri21Js1ZG;idn202;! 00chWf TlzebSrQtO;leOro23E;!jui229;! hall puO–lambert0NQ;ts1RC;ub;stroga092wO;elO;li0PM;!craft O;bonPkOsuper kO;ing1YY;an143;and puppyc1OCgeOm20C;es0VV; Pe,iveBknobs and broomstOou4;ic1SL;bPsiO;ze;ug;ause this is my first 228hdel 0KJkO;! Ry O;g,haC4jPlO;yn1QT;ohn100;bPweO;at8P;en14O;e Oop;bueCneuwOrex0R0;ir1K9; 0Och20Kg7nie 0Lr0Est09tZuPvO;er,is and butt-1XZ; TfortRty andPx-artO;s U3; the bO;ea1YT; sO;ca7;bPfO;ly1KA;id5riO;dg3; Ules for Tn0X1rix Os0L;oOpo02W;f tO;he nO;ethO;erl0ZS;sa7;gPit,sO;ab0;ene1X7; Ra1ZMiPs of the southernO; wi206;e O;bo0U5;b0P4of gévaud1; QdO;!more inflexO;ib7;br188gQin the big blue1ZQmccrPsO;tearN;eaL;ryl1Z8;baPfeO;lds11R;bi3;aObenader1XI;rth1HI; 06Oo worldOsm; dO;art1D3;gOryWUs national championship 1L7; vO;ac0OZ;cRkO; eO;lectO;ro07R;! O;fTi1G9ne1RQo6sStRworldO; sO;erO;vi1ZZ;hr1SHwo;po20Utu1SE;il1YV;'athisBEal,bB1c9Zd9Ne9HffiP1g9Eh9Ai96j91k8Tl7Wm7Un6Qp6Nr4Gs3Ot08u07v0MYyPzO; luhr1IWoo15J; 01eTlor PonetOwXJ;!ta;beaQuniversityO;! sexual assaulO;t 1US;rs132;r,sOux tapeRN;' Sian O;i0KBn073pPsO;tatisWZ;robaO;biHE;thO;eor0SA;city D0le11WoO;f OvM;bengMpigsO; inva1M1;douin10GhaDxiH; 31a2Xch 2Tgi2Shs2Rm2ItO;a0F2leO; Vbo1VQcTfieldSsO; of QhipOtar galac02N;! pO;otemk4;khalkhin g1Z6lexington and con04Rnarv0V1the ison1OE; v;ruO;is0;angel ali205hymn of the2OofQroyalPtO;end07Ahrough the hea78;e 1JV; Pf sO;am9;a1Yb1Qc1Hd1Ff1Cg1Bh17i13jut1SOk10l0Tm0Nn0Loki0Kp0Hrorke's dri048s07tQuh1F9vPwatO;erl12B;erd1YXiBF;ara13IheRippecan0M8ou1XKrPsuO;shi1RR;afaOe0AQ;lg9; Ormopyl1LG;aVbUcTfalkland0XEhydasp3little big1OSphilippine1DRrQsOteutoburg 0KZ;anta cruz0XDchOom1ZA;el15T;iverO; pO;laH;atalaunian plWNho17oral1DL;oy6ul1HD;la0B2ssunpinkPtO;lant1ZL; cO;re0W5;aVekY3hTtaPuiO;ya8;lPmford O;br1GT;inO;gr1UR;anOil1F0;gh1NH;ip1lOragar1MFvo NA;amF;asschendae7elePla1VZolta0XNrincO;et2;liu;na12O;ew orlO;eaN;aRiQoO;nte casOsc1WF;si162;dwK;da8nzike1YOraO;th2;eSoO;ngeQsO; angO;el3;wa1XW;iOp1G0yte gu13K;pz0UF;aPhe saOorega2urXF;nh;de1PRm0ASsserine 0P4;a dra8sandlQwO;o O;ji1QD;wa1JH;aQoOürtgen 0JN;ngO; ko8;st1US;augame1XIettysF1run0VS;ort sumt0rO;an1X5ederiO;cksEY;ien bien p56riniumorOunki1TS; r1SO;aThQoronIrPullO;od5;eHé05B;ancellorsv0SQoO;sin reserO;vo1TV;nn1JNpOstle iYO;orO;et1FA;aUe83lair SoQriPunker O;hiC;sba6ta4;ro0D6sworthO; f096;moO;un05M;dr,nnockEO;cRgincQl06PnPp bVMusterO;li1PT;tiet1U6z0VH;ou1XE;ti1HZ;anPoO;bi7;! O;beSfQi1SLrO;etO;urN;orO;ev0;giNyo1T2;he1EA;rl;fi7nO;ormaO;liO;za1SE; c0FCan deathPvianO; r0L2; mO;ar1L2;mas1B6out of O;heC; ruFJal0De08f,h06iUketballTma1W5que80sQtO;et,iO; vaman shen0K6l7; Oo2;guOre0PY;it9;! p0FR;c VlO;! OiVJ;bSiRjoPof caesG4rathO;bo6;seO;ph;i,wan0XR;ro1TA;accessQfighter maneuPinstin17JreproducO;tion 0UH;ve1U5; authenti0VV;arOkorto17C; al-ass1RV; rateRbaClO;! O;i1RYpO;robl0O0; falla03H; Ot;ganY0metabolic 0D5; 1Ra1Mb11c0Zd0Yen0Vi0Tkhad ab1JQlEn0Mo0FrWtPuch spino0X6yO;ce0SSon; SholomewOon fi0VE; tO;heO; aO;po0KQ;e127sO;imJKta1OP;a04ele03i02on01yO; Omor0MY;bYc0AgXhuWjVkeo07JlTmanil1TCpeSsPvOw04F;an dy0X3;an07TeMonnO;enO;fe1U0;pp0;eOy0AN;vi1NR;en013;mph1MH;i056oldw0KG;on1K2; hi0RM;er transf9Pst0;ye;cu1T6nquO;il1UM;nRquePtrO;au1N9;! O;m0G4p12J;! Oet;cOfar016mor11Psame1IT;orb4; oTaSey Qum O;efO;fe165;mi1LTsO;ti1N6;c7rd0CA;wl;! wOto6;ei1TK;akedOts18Y; laO;di3;! c0C4;eOla0N4o0I3;lo1FU; and star go to vista del07aTec1IRiPra streiOu1SI;sa1QI; be05Me fQturateO;! oO;verdo1SQ;err0RI;d1M0rO;a Oi1y 09A;bWcorcVed5goUhTlu1FLnSorb0PQpaRsPwO;al01YinOY;inOtanwyJ;atG;lv4;iv5;a7ershEu0WJ;rd2;or1;aProcOu1LI;co1KP;ch,in; m9;cQgPngays of quezoO;n 01B;oo1TC;k oO;ba1LZ;and bat mitzv1JTkokhbaPrefO;ae1KG; revoGG;hPtisO;m,ts;om1PW; ki-1O2ana0Pco 0Nd0Ig05ished from the hero94jo04kQsh1LBtu 8Wy1zaiO; cO;har1BN; Ving 11GnoteUruptcyOsy;! of lehO;maO;n O;brO;otO;he1RB;!s of the pound0L6;for international settl1GPhRof O;a01Ybaro1RAe198mO;ontO;reM;olO;idK;!-kazoo1QQ; XaWk1JUladeshO;! O;liberaTnRpO;reO;miO;er14L;atO;ional c95;tion0MK;loBr0I6;br1KIsiO;-hyO;uk; on theR-Oai namco 12McaYO;ma1Q3paO;ssO; fiYZ; r1RX;de o1GTsanO;ta0L3;! Ora1KQ;fi1K0r0GSwa1QH; margeGbO;i,oo; gangadhar til0OMan0Hd0Be0Afour09i08kan07l00moral 0HFochi13Nr135tQwinderO; sandO;hu;hazar gISiPoO;!-slav12K;c SmoreO;! O;orioles minor league plaPraO;veN;ye1Q5;dPsO;ea,t1F5;ry1RG; lTad,eSistQon PpointO; p5;d'1OK;a,ic missileO;! s0VE;rs,t;ight1I8; 0ALs;!an of ib0Q9; decla1NC;aric0PQncia0OJ; Sr,ur's gateRwin O;fa0J5iv ofO; jeO;rusal0JP;! i1NL;and bankruNDeX2; woPce of O;na1EApaym1MZ;nderw1Q2;eShtiarp17TiPla0QBuO;!gan battle braw4A; the grapPng poO;wd0;pl0;liHr O;is1KCmaO;yf030;aPirao masOrangi bhaija1;ta1GV; californiaPjO; au18V;! s17H;du,konur cosmQlO;eOiwick of guer003;e mETys irish c1NX;od1AM;aPra4ujan samaj1KKáʼí fO;ai18Z;dur shah zaf9mO;as,ut;el,hd1MPpPuO;a,etHio;ip3; PkO;hy1Q4sang arts 0GA;doo1C4sO;u178ystemsO;! temO;pe1NE; Oen-württem19Bfi197g0mi01Voo;and cra174bUco0H9luck banging or loony Tmo1OTrQs14FtO;ea0RBimes at the elO; roya7;e0A9obot O;produO;ct1JS;po1FU;oys PuO;d19Dn0LK;foOii;r 1Q1;ar1E7c0Oh08kTon,tO;eriRriaO;!nO; cO;amI;a,op03G; TgaSpropaRsOtr1BA;la1HNtreet O;bo0IPrO;ook1NP;ga1LM;mm2;inUto O;bUsc5Hthe O;futureQoO;utO;baJ;! part O;ii0Z0; bO;laJ;chan pandEelorPman–turner O;overd0TA; P'Oette1J8;s BB;of Op1J7;ar1LBbUe124fRla1GHsQteO;chO;no0YJ;ci1N0;inO;e O;ar1L5;usinessO; aO;dminiO;st1KV;ar1AW;a Ye Xi y9o2ur,yO; T's daySlonOm0H3;! beQ's ash3iaO;!n capO;tiEI;rl4; oJ7;booYPdr1JWfacePke0H4sharkO;! d03I; ne0S4;ru16Z;vOya0LQ;an0LP;m,t irO;aq;flatPsOtr1GL;eg0YT; maj1LD;ceCm1MDposi14VvitaO;miN; 1IL-1IIa1GUb1C0c184d11Me10Kf0YKg0WLh0W4i0TNj0T4k0S2l0BPm041nNSoNJpL0qKQrDDs94t6Gu2Fv1Cw15x0Zy09zPşk laftan anlamO;az;a03eYiUoTraItecSurO; Qe O;drO;ag2;la6; 19Ss;r3v batta03I;mQthromyc4z O;ansa1KGshaversO;hi1; prem0P8u16D;alia bRrO;baijanOty;!iO; 0WQs;an1E6;dPtOzI;ho166; kashm1KCirachtO;a indi0D0;a06e03m00n Zo dosunYrWuSyO;appanum koshiy18TubidO; dO;ynO;as1HL;mQrve1M0shmanO; bharat yoOn khurra19A;ja199;i hama6Uu mura1M9;ton sO;en196;mu;ra1JU;an al-zawPeric laO;porH;ahi1JP;let zPshaO; c122;ur0; Tan hirsiShuas0CGko kawasu1FInO; mQePna pO;resO3; sakuG;uker0OB; a1E6;ca1EX;el tuanzeP8iPl UIoloO;tl;e infi9VomPs O;ba0MWpo0B0;! of chO;oi1MG;aQkwafinaO;! is nora from quO;eeN;ken1JWrds and decorations of the united states arO;medO; foO;rc3;a0Be06g1MZiZl 1B1n 0CIoVrO; microcontSil lavigRo O;lOvulc1;anO;ca1CQ;ne0G1;rolO;le1KT;gadro OidantNI;coO;nsO;ta16D; SaPcOgn2;en180ii;n0BItionO;! O;accidents and incid1I0;ar1ICkaO;pl1;nged sevenRrO;age human heighOro3;t O;by0V4;fo1KY; YlTnQstOt9;! antivO;irD; jPt-gardeO;! m07D;ogA;ancheQoO;kiteśOn;vaG;! sO;o06Vtudios13N;duveQgOm0XV;arO;dn0;rnK;b3Jckland3Id32g2QkDl2Pm shinrik0RZn2Lr2Gs14tOvergne-rhône-alp3;ar0KLe128h10ism0XoPumnO;! rees0; 0P-0Oba0Nc0Ld0Ienc0Hfell0GhotkEimmune130m02nomRpQregressive OstereoJM;integrated movingOm063; aveH7;ha0USsy;iVous O;administration of north and eastScommunities Pregion of bougaiO;nv0GO;ofO; sO;pa4; sO;yrA;c nO;ervouO;s MW;atSoO;bilePtiveO;! industry0TB;! dO;acA;a 3Ned tellTiOon;c Oon;differeQtO;ransO;mis173;ntOK;erO; mO;ac0HR;at0J8;od0;eskOidac0T7;! O;ma0SQrev1H9;ad,la1A3oOraSG;rre01J;hn;tu6;cRrO;aPickO;sh19P;ci8;liO;ck0;! O;spO;ectr15B;entic brands124oriO;tarO;ia19L;chwitz0WtO;in0Ron matthe1BBrO;al02iaVoO;-Sa0UMnesiO;an O;l0UNpO;eoO;pl3;prussiO;an0DX;! 0DX-hSn O;em15Gfootball bundesQpeoplePscO;ho1JE;'s1DN;li0GU;unO;gaL;asAiaPoO;pithecD;! 04n O;arF6b02caZdVe0UIfDTgUlabor1DGop5rulTsO;ecuritiesQhePuO;rviv1GF;phe1HJ; exO;ch0SM;es0MC;rand pr0ZW;ePoO;ll9;fenO;ceFU;pitalOttle0UA; tO;erri1IN;roadcasting020;dKnational Oz0M5;cPsO;occer 0D9;rickeO;t 0D7; Osh1H4–bergstrom 16Z;aPbu089powersOsto0A3;! in gold1DE;bra1HF; concentraO;tion O;caP4;angzRePBoO;cPraO;! tea0PP;hs;eb;g san suu kQjanuePt O;jemi1B6mK; eNZ;yi;d lang sy6iʻi craval0DX;mented rXsWustO; Ue Rine of hPo pinoO;ch1F3;ipO;po;cPrO;od4;omH;am3von mackeVC;bu11A;eaO;li1C5;iWrO;aUeO; lSy O;hPmeOtaut09X;ado19A;epO;bu17Q;or05W; mcY7;! Te muLVoOt; PsO;la17E;fiO;leO; form13Q;quatt16Ctt;! a15V;reyPurO;n AW; P–maturiO;n KF;anderson-em0CCpla0J9; 28a23e1AQh1Pif a16Nl15mospher0Yo0Kp 0Jr0Csumi tane0BtPx,ypO;icM;acVeTiPraction to transgendO;er 0O6;cOla;a prison PuO;s 0Y6;ri1I1;mpted assassination of ronald reOntion deficit hyperactiviIG;ag1;hmenYkO; Qing midfO;ieO;ld0;hSoO;f the dead1FKn O;mers-el-kéb1DNpearl hPrichard nixon's motorca051tO;it1;arb1DZ;elicoO;pt0;t O;thO;eoL;za0ZQ;angi Bial fibrilXVoO;cities in the congo fQpO;a belladOi6;on12H;reeO; sO;taH;c0YNto0XC;mPrvastO;at4;! heartYic SoQwaffen O;diO;vi12S;xeO;ti6;bQc0YPkiPnu1AYorbO;itM;tt5;lPombings of hiroshima and nagaO;sa0Z6;on048; mo12D;eRic O;prO;esO;suB;! O;ofO; e0QL;aPus,éticoO; madr1DS;ntQsO; Osi1;en0Q8moDNshrugg1BIv;aUiO;c Os;coaRoAOpuQrD8slaveO; tO;ra03Q;ff4;st000;! O;br0KTfalcoNhTmOunited 0J7;etrO;opO;olitaO;n O;ar19W;aw15T;anasius 00eTiSletQulyaO; raO;vi;e's Oic bilb0NM;fo1G2;na 8Xr1;i167nOrosV2;a karkSianOs13A; dO;emO;ocO;raN3;anF;of2J;camaQl bihari vPriOxA;! 1C5;ajpay175; dO;ese1FH;si0UOthe mountainsO; of mO;ad1E5; 3T-salamu alayk0ZZa3Obest16Yc3Id3He3Cg3Bh2Mi2Cking2Am26nawi mangku25obo 24p1Ws0PtUuQyO;lum8ImptomO;at1FL;nci8YraOs;!'sO; wO;ra0X2;a0Ger0Ch179igmaTTo07rPuO;ri1EZte-0IF;a02id li00oO; b02KbYlTnQpOworld festival crowd c0VD;hyO;siLT;a8ZomO;icOy;alZO;aGNogO;ical sPyO;! and the class124;i0U2yO;mbo1CL;io0NN;ndO;gr5;lOzene03G; pO;roj06Y;lRn martinOr 05W;! O;i08YvaO;lkyr1C1;fo;aCJiQoidO;! O;be12ci17Wimpact avoidSRmi14N;sk,x;rOti6;o0W7te;aZeWisteVociatQumption of PyriaO;!n 0KI;maL;ePion O;f0GPof tennis professio71; PdO; p0OW;de116;d sui5H;mbly 0MEtO;! BQto cO;or0VE;m,ssinQtaOultF6; sO;hak0U4;'s creed09ationO;! O;cla06of O;a01indiraZjWkim joVmahatmaZqasSreinhaQwilliam mcO;kiO;nlE;rd heydO;ri11X;emO; soleiO;ma134;ng-n1AC;amalPulius cO;aes9; k0T3; gO;and10V;brahamQrchduke franz fO;erdiO;na19B; li11W;ss0SE;! O;c34ii0MBoRrQsyndPuOvalhal1CN;ni16P;icaH;og11C;dy1A6riO5;arUeShQiO;c,rO;ated conso5Iin;aOyxA;lt;n 19rgO;er0WC;agDta1CO;stNO;al19M;l hQoOr;deDnO;go1B8;ol0QD; aO;lexandrA;aOcs;! T-pRn Otic RJ;am0NJel0NHfPgO;am3iant ho09A;ootball 1Z;acO;if1CS;aOcarWSkate diB5;rgO;en0TZ; vs evil03Da bhos7by-de-la-z0Ber12Cgab0XVi09kenaz08lSnik0KOokQraf gPton kOwini vaishn118;ut0CY;ha11U; kOa;um9;eOy b3R;eZigh b15Oy O;bXgrWha08GjUmToSrRsQtisPzuO;keYO;da7;co132;ob04W;ls5;ad07E;eOLuO;dd;ee6;e147id5; sO;imO;ps2;i je12K;sh vidyart0Z7ta noO; jYA;ou0ZY;a19Ahar farha0ZG;anRxualO; reOi154;prO;od03X;! football F8; rna mot7Qa;ePiiOleBL;! a1BH;nOti0JK;dance of a bookwo0Y6sioO;n O;is149; Rfoeti199p O;mPrO;oc09U;ob;akiGbutteMSh0I1;good as it Pmonaco 0E8saint-étiOvMyou like 17E;en6;ge16Q;a6Gb6Dc5Cd58e4Ug4Ni3Qj3Lk3Fl2Zm1Zn1Qo1Np1MquebDr1Cs18tYuUvind Tw5yaO; RbQn O;bOra1A5;rother1AX;ha1B8;sta16R;kejriwMswa63;ba,nO;acPdhatiO; rYC;halN8; 0Te0Qh09iVp0I8s and crafSurO; Po gO;atX4;beterbi12PpawO;loL8;tsO; mO;ove0KH;cZe Yficial OlleL;gRiVnO;eurO;alO; nH2;enerPraO;vi13W;alO; iO;ntelO;lig17O;l0J0sh0Z4;ho0BPles of O;conDW;dal01r00ur O;aXbalWcTduSmi112rimRsO;chopenhPeyss-inqO;ua1A4;au0;ba0PJ;nc1;h19Tonan dPuO;rr17H;oy7;fo0Q4;ndOs0Y7;ers5;itFop19R; cO;hroniO;cl3;!misO;! p7Bia O;absinthi0UAgentilesc0X3;bPca0V6de0VOfi151garfuOnouve0NOp0H2roJ;nkI;eCrO;il3;eniQène O;lOwe0RX;up4;c,o 026;ayUd111ested0HLhenius SiRoO;ndissementOwv0TR;s ofO; pOX;et12S;eqO;ua14P; data O;stO;ruc0VS;an15B;n ral06Koj aftPund the world in eightyO; da01K;ab;elUis,oO;lOn mil0YG;d Pfini portO;ra155;ma0CFroths09AschPvoO;sl0BG;o08Zwarzenegg0QW; piO;ne16Q; 0La0Ee01iYorWsTy O;of Qranks aO;nd insignia O;of0GK;d0I2thO;eZMi01Y; iO;nduO;stL; R5ed O;coB;e PnO; meiw3iD;haUU;d forces of XniaO;!n O;aRgePkingdom of ciOla0GP;licA;noO;ciVP;l3XpostO;olicO; chO;ur0WD;tPuO;krWE;he ph0V0;dTgedd2nO;dOi; Po O;bro004iann06Z;assOhaUC;anH;il0Z2;arO;chit0EX;eVington nationalUo QynO; pO;hoen0NS;gPpO;ar0XH;utO;hr154; ceme118;igh burkeRne O;daPmaO;rtI;hl;-classO; dO;esO;troy0; of the coveSanPhangel6CnO;igh12W;!ePsasO;! razorbacks09Q; s0YR;na0QQ;en robb5unO; PaO;! phalgu0SC;k0WHrOsarZ9;ed0PW; a0WQa0Cel09hant-0ABjit10Jpipr08st01thmeticWzonaO;! O;cRstO;atO;e O;unOJ;ardiPoyO;ot3;na14L;! O;logicRHme1pO;roO;grO;es0SG;aToO;phRtleO;! O;onO;assF;an3; r3D;azo7; Ole kebbI;castro kidnapp131pi05VshOwi038;ar2;dnUnO; moSa Oi0WPna huffiSX;deQgranPriO;ch0CP;deZ9;bo14G;ay119;a g0IWe;entinQiPonO;!au11O;ni6;aQe primerO;a divisiO;ón;! ZK; you Xa of a11WcRna fPpa,s,tha fO;rankl4;ooO;tball0HD;aRibo O;mesPoO;bserva14R;sa0NQ; nOce0RK;ut;afraid of the dark?,being servQexperiePthe onO;e?;nc10O;ed?;al o'hanl2eQuinoO;! O;iSXu0CT;nn3; 0N'0Made 0LhTtO;icOurD;! O;c11Cf06EmPoO;ce1;onkeXR; 0Ba04bishop02duYeXiO;e QmedesPpeOt0CCve of our124;laT9;!'6R;coSmPpanjaOrenaTLy0S2;bi;an0VBoO;untbatten-winO;ds11H;miBS;ry,ty0T0;chess Pke O;franz ferdinandPkarl ludwigP;giselaOmarie valerieO; of aUL;! of O;canterDNyo10L;eSicQnO;a purOgI;an0Y8; huO;maN;a,oO;lo0DIpT;ePlT0mO;an0US;neO;my;fiBga148;teryx;de triomp0SQsystem wP9;aaz PitO;ra0MD;kh1; general belg06bRchn11LgoQl0IImaicOny00Evinda sametha veera ragha030;! O;alY;n,rn; 01iQs,–israeliO; cO;onfli0FC;anVcO;! O;alRla0CFnuQscO;riO;pt;mera11R;phO;ab103; pO;eninO;su138;le0FDsp0G8w128;ra0B4;ib tal0LEuO;aOiline no11Z; SmaO;nOti2;! and the lostO; kO;ingd0IP;regAteen hungerO; fO;or12L; dhi25a1Te1Ph1Ki1Ho0RpSriQsPulAéritif and digestO;if;-c,is;c13Ll O;as0OTbowl0YCfools'FN;a0Ee0Bian0AlQointment withOrentice0FB; dO;ea0L5;e00iO;cationRed maO;theO;maO;ti9X; R-specific integratedO; cO;irO;cu0Z8;binaryOl0IBprogrammingOsoNO; intO;erO;fa120;! O;c0D6dai0NEiSmNVnetwork1Epa0YNrRsilQtvPwO;at0R2;!+;ic2;ec0RF;!d,i; wK;ndic8Ztite forO; deO;strUY;lachiaQreO;l,nt magnO;ituPZ;!n O;moPtO;ra0F7;untO;aiN;c07lloXpVstOtheHP;asySlesOrop0QN; P'O; c02;in the new teO;sta0C3;! O;in0QR;hOtHH;enA;! Onian and diony8H;abort mVcUglobal RlunarQpO;roO;gr0YR; modu7;maO;naO;ge0BR;re0WY;od3;alypPrO;ypQD;sePtO;ic and post-apocalyptic070o;! nowO;! redQ4;!aPchatpong weerasethakOnk;ul;ce0NG;aRex tw4oQrodiO;siOte;ac;ri0RV;nt0MBsA;!p,r0O1t0XVx O;legPpO;red0KY;en0Q1; sYcheOrthe0YLt0UP;! O;cUhRkQlOsHDtomc0MQ;icO;en0ZG;af05Y;ado08KttpO; seO;rv0;assaO;ndG;ty7;ll2; haru I5i VkTlRmg,rtic Qsta Ou0YV;vaO;llE;a0R7dissT6;! O;ma0DK;igaO;haG;koXDyū0J3; FHaE1bariE0cDHdA0e9VfCAg7Sh7Qi71jelica huY5k6Yn3Wo3Ns3Ft04uUwar sad0M6xietyTyO; givenRa PdeOthing go3;sk;chalOtaylor-jO3;otG; suEJ;! d18; mWbFel Vnna0IVpamRrag kashyQsO;!hka shO;ar0SJet0TX;ap; Oaa;kh0tO;ripO;at0NQ;aa;alV9;! an2X-man2Va2Pe2Mh1Ni0Qje tra0OEoUweTz,ónio O;de oliveirPguteO;rr3;a sO;alO;az9;rp;ine0EnO; 09iQy Oín dvořák;bli032sO;ta0SW; 04a 02nZo O;bWcVd'ami0LXgSlQrüdPsal0HPvivO;al0NM;ig0;u0L1ópez de santa O;an0L0;iovinOramsYT;azO;zi;onH;andOro0WK;er0ZG; scRFe Pus O;piD;pl0B3waC;kiV3thO;om0ZB;gaudí,poO;ro9Y;chOlavEyel02W;ePiguO;rh;khXO; PtteO; b0E3;de saint-exupéLfuq0JWgriez0HDlavoiPweO;slE;si0;-0Bb07ch06g04h03kythera m02m00nZoXpVsOvirus JS;emiDRociO;alO; pO;ersonaliO;tyO; dO;isoCG;oOsych02;d3pe;ch,xiO;da0ID;aCQoD;aOoTT;tt0;echa0NP;e0MTisFB;en,uaO;! and barbu0WK;olinerg0YWri0V7;iQodyO;!-dependent enhanO;ce08E;ot0YS;aUcoCCdefamation0A0lock brakQmaterielOven0DL; rO;if7;inO;g O;syO;stQ8;ircraft0JZmeO;rica0N8;oWrO;ax,opO;icRoO;ce6lo071moOsCC;rpO;hi0OH; prO;incO;ip7;ine 0Clog0Any O;a06b03c02d012ed5fauX0h00jZkiedFlapaYmVneWOof pad0IMpeUquTraT7sRtrolQwePzerO;be;in0;lo0LW;alOpilot0LY;er055;ay7i0FY;r3EttF;aPichaeO;l QF;ck0V6r0HR;glA;eselnSMosh0IA;e0T9oO;p37roZM;asVA;lu0H1oPuO;rge0W9;urda4y7;lbaPndO;e0BSre0O5;ne0VM;y O;se0OD;hu0FL; Oat0lo0LA;pavel01LsundaraO;ni0FK;goSl04UnanaQrO;cOes;tiLV;riO;vo;ni0TM;! and the waO;sp;ste0SM;chlu0VPel Ti QonOu faJA; mO;ou0GE;c,escapO;e O;coK8;aOelgo0WR;da0US;aUha0HXmalTnymousRrexQther th06PushkaO; shO;ank9;ia nervo0E0; conO;te0G3;i0DXocC4;'OʻO;i NR; 2F-margr0SMa0Xe02iTo RuO;ncPs horribO;ilF;ia0RT;doOmun0K3;mi0LT;-frid lyngVe O;beThaCleRmuQoaPpO;ot0RT;klE;rp0PK;iboOnnX7;vi0OH;sa0FM;st0RQ; Z-marieWliTtte Qxation of crimea by the rO;ussian O;fede0RE;bPfunic0N4oO;'too7;ad0OSe0M4;d,ese O;miO;chI;! O;du0DPmediO;waX6;arWAbZfranYhUmu0FIof TrRwO;ePith an e,oO;jc09X;yi8;i0UOoO;bi0NU;aL9clOUgreen ga07Qki0NI;aQeOidalJK;c0JSgO;er0OX;th0PC;cFk;aRoQrO;onO;të;leTKnQB;nOxt0;croO;ft; 08-06att0JHbeZlVmarie tUpurnaOsophia ro4Y;! O;iRlaQpiO;ctO;ur3;bs;nterac0AZ;enP5;ePynne mcO;co0SI;igh Ona baerboJ;ashKQ;llPthO; gi0M7;a sciRe O;comePwaO;llF;s 0SZ;orG;louise ploOmaria sieklucZF;wm1;a0Hbary0Gc0Adi020f09gu0CRh07jKk02l0M7maYnWoQRpVrTsQtoPunC8winO;to0AR;dd,rv;aw0IYhOorok4;aOcherba01;ff0;iOudoZI;char0B5;aqu4oppleL1;eOicoleO3;ag7;d5IxwellPy O;wo8; maO;rt4;areni0FEendRoO;nk7urO;niO;koSS;riJ;opO;kiN;arFriI;aShO;aPluO;msSG;nceO;ll0QA;mp;shnikS5;ka0EZndO; thOe084;e 0EQ;cUdRjPsarOwiWN;no0BL;ilO;li1;oPuO;nh0QA;wd;leMSouPuO;saJ;lt0;aGh,le–brachial pressure0SNylosO;a0EGing spondylO;itF;ka noni 0Bl08mTplSrudh ravichaLQsRta O;ek0BTmPpallTEraLGsarkeeO;si1;ui;e,h gi0P3;ex,us 0E1;aSeOi0JJ;! nP-influencedO; a06V;etO;wo0OT; and animDl TnRtPxO;! 0DU;i2roO;niP;iaO;cs;cQfa0FLhO;ou0R2usbaO;ndL;ros0HA; Oi05C;amOda0K3k0I3;ba0I6;ro0QW;edOui;onA; l0K6e10i0Ukor w0E1l0Bo02r00uO;il0RXlarSs O;deaQiPyO;ou8;mr0PY;yt2; Ojs;fQmoment0CZvO;eloO;ci0LS;requO;enO;cy;ezi meIDy bO;ir0GV;laSstura bQuO;lê0RVrie O;ri0R6;itO;te0PW;!nO; cO;ivO;ilLI;e04ican01oO;-PspO;heB;inXsOzuluLE;axonPoviet invasionO; of ir1; Os;rE6settlemenO;t O;ofO; bO;riO;ta4;di1; cOi0HW;hurch of southernOommu024; af02;!rOs;fi0IS;e Ona;bRcepe0P9dPever0K3haO;rm2;icO;ki0JJ;ow0OQ; postecoglIKlPviO;n 0CB; 05's04aUina joSsO; inO; aO;meO;riFS;lOrd1;ie0K9; Oba0LX;baVcTdU1kiSlansRmeQraPwO;hiH;yn0;rkI;buL;nsE;artO;wr0NJ;sse0HN; eDY;f5LhQiO;nveO;st0N1;aOea0QK;s O;faXD;mQsOu0GU;thO;esA;ia,oO;i,m0CB; 32a30e2Sh2Pi2NorGr0Gy O;be0Cc0Ad09f06g01jasC6k00l04CmXrVsSwO;arh0PFe0MChQiO;llO;ia0OA;itf1S;am08PerkPumO;me0O0;is0JE;e0NDicVUodO;diJ;ilonPuO;rrKschiCC;akF;au0H9;aQiPrO;iffi07R;bb;rcOv4;ía;airweatherPorO;dh0MI; l0NE;aLZe07YiJ;arOoh5;roC;rPsO;he9;na0N5;a1Te0Fiy s0Do03zej 00éO; Ss O;iniQmanuel lópez oO;brO;ad0LV;es0PM;ayBXde shTle nôtBoSpRrQthOvillas-bo0P7;e gO;ia08U;ieu;rev4;na0AG;iel0DW;du0N3sapO;koO;ws07H;gWid SmedaO; gP–milky way cO;olli0AT;alaO;xy;application packa06YstQtv,veO;rsionO; hCW;udMX;en,yJV;hevO;chKS; 0Za0Ressen horoQTi 0Nw O;breitba0OQc0Edice 0Df0Cg09j08koPGl06m01ng,p00rVsStaHuRKwOya8;akQiO;gOl3;giN;ef07;chuPtaO;nt2;lz;annRidgQoO;berO;ts2;elE;el0M6;arker b55;aRccO;aPoO;ll08W;rt0HN;do066;aQCi0CRloyd weOuJ;bb0;acQ3oh0GF;aOo0MK;rfO;ie0MI;linto05Zo0AS;clK;aRuO;nPoO;mo;an1;lPrO;neg0LC;laO;gh1;arloJBchikati0EYsakhQtarO;koO;vsM9;arM1; Rs O;cOwei05R;hrisO;te05;anQbOco0GHga00Ajeremi0DHpir0EQriseb002;a8ocO;el0E3;de0LB;agObrauUCiguo2S;as0DX; dK; osI9e macO;doDZ;adh0MHraO; praO;de0EM;anTrsOs; Qon O;coOsLT;op0;behring breivI3thomas jeO;ns5; coO;nd0JG;lusAman O;and nicobarKSiKT;gaHthen there were O;no6;ho05ienO; ré03t O;aZcartYegyptTgreeQhATolOro0MK;ympicO; gLM;ce,kO;! O;ph0Ure69;!ian O;dQrO;aceOe66; controver8F;ei0HB;ha04I;lPstronO;au0I1;ieN;gi0M5;vy;vu; 0Zb0Vc0Ugr0J2heim d0Tl0Bn09phylaxFrch01staZtOïs n4;id085oO;lTmO;ical terms of RyO;! of a O;muO;rd0;loLQ;iPy O;dyatlKFkarpKF; bOa;oukre0DZugors04D;cAs mikO;oy1;i0CBo-Oy;cQprimitiPsyndO;ica58;vi0C8;aPoO;mmu0AR;piO;ta53;dabazar patriQHsi,ya paO;ndK; s0KYges0LXog00yO;sis UticO; phRal Os;ePpsO;ycUD;ngi6;ilosO;op0EU;of variRpO;arO;alO;ysF;an0KE; cQ-to-digital O;coO;nve0E5;omO;put0;uc0AY;hro0A3on0J1;apQolic O;steO;ro0IB;ti0BE;brnabPCde PgastOkaspa03V;ey0;aOla regueG;rm0KQ;aWeUinspectorSlushanPofficer and aOyuSC; gentl0V; rO;ebelO;li2; cO;al0IH;duKAvening with silk sO;on0KX;ffair0ELmerican O;piRtaXCwerewolf iO;n O;loO;nd2;ck7;a5Ob5Bc 57d4Ze1Yh1Ui1Rl1Om1Fnes1Bo15p0Vr0Qst0OtrGJu0JwKyOél0HY; U's bakiAVbeth mcnTgSlPotrophic lateral sO;clerQ; and the sniffe0I8oO;idOse;osF;da0JO;ul0DQ;a0Ab08c04fi03gFMh02ir01jM5klobuch9l0BUmaZpXrWsRwPyasO;beJ;ax,inO;eh0ID;chQedPherman-pallaOma0K4pa02J;diRF;arF;neOum0;id0;ed9Uy1;aOoeY0;scM;cOd70;do0CO;vi8;ennFS;sh0;a0COoneyO; bO;arO;re0AM;el7rennO;em1;ck0da0HN;l,nPsement O;pa0FB;!dsen–scott south poleO; sO;ta0EW;erdamOrad cpc;! airport schiph0IJ;apali g1iQullah sO;alO;eh;shNEtO;a0CRs9;erWhSliO;fi0tuO;de O;moduO;la0EK;ePibiO;an,o33;taO;mi6;e,sa0EX;e005l0E1nRr Ps tam0FPxiciO;ll4;fa59tO;owl3; Og D;amSUgö00O;ia,tyO; iO;nterO;nationM;an,onO;iPoO;id0CH;a,um O;chQnO;itO;raH;loO;ri5W; ame5e00AoO;diOg0IO;pi6; koshimiPga,no0FLsh,tO;abh bachch0BKripty05C;zu;ar0IJerstO; cO;olO;le006;deo modigl2Nesha2Llia 2Jnhotep i2IriOthy0EQ;caOgo vespH5; 2C's 26-23n Os;a1Sb1Pc1Hd1Ge1Bf12g0Yh0Si0Jje08Tm0Fn0Cp04re02sVtSunPwO;ire gau001omen's voluntary3D;ivO;erO;si0BF;op BNruckO; simO;ul01G;amTiRnQoOtaffordshire01;ng conO;te0ED;ip0;eZQgO;n Q1;oa;uSAvolutionO;!aryB7;iPsO;ycCH;cSt O;buO;llO; tO;erMR;ke0F9;azi0ASinja wO;arO;ri0DR;afAcgeeQotorsO; cO;orpo0CN;!'s0BM;dVmpTnO;dQstitute inO; taO;iw1;ian O;wa0EW;erO;ia0C;i0H5ol;istorySoOu5U;cQrror storPuseO;wi0GG;i3y;keySC; x;igo07YoQrO;afO;fi32;ds,th0GY;ilm instituteVootballQrO;onO;ti0;! O;co0CleS3pPrO;ul3;osO;it09M;! 5S;ngQWxO;cepOpR4;tioO;naO;li06O;ec03Are0D0;iRrPuiO;si6;ime0F3oO;codi7;nematographer manuMvil O;reOw9;liO;gi2;is2lacOr6Ful00J;k O;be9;irWllVnd british english spelling difUsStOuXH;hleticO; coO;nfO;er0D6;saO;ss4;fere0EL;igZA;linesLT;class amphibioO;us assaulO;t RK;gQnext topO; mO;odI;otO; taO;leYY;cQfO;erO;reG;hav080;!ii;ear080kinOwaM0;ka2O; pO;atI;ia04N; QahlO;'sO; l03W;accelerated prQradeon O;soO;ft06W;ocessingO; un0B4;nePtheaO;tr3;twO;or04M;erTiQliProsO;e,ia;n OI;entOgr0BG; mO;us0EX; OgrF;hSmidtRroseQtPvallO;et0ES;amblCT;! rev04G;hu6W;ea0C1;do c18im warrior at the border01Gl13n0Ir0Gte0Cury gui0BzO;ing 07onO;! Os;a02b01ec99fire 00gD7kiZluXmWprimeTrQs05VwebO; seO;rvRN;ainOiv0;foO;re0AS;! vO;idO;eo;echanical tu09Vus0ED;mberOna;ya0BM;nd7;tv;as4;ir,lePppsO;toB;xa;faOg0BY;ntaO;sy;ch2;raQurO; rO;adBQ;su;'e stoudemiBanVHetV6tyO;a s5;cio or07dRgkurat ii of matI8ita O;muscPphalloO;id3;arA;a Ola stDK;abbi01b00crZdonohYgoXhold5knEHnWow5pTrighRsO;chuCeO;al3yfO;ri08F;etO;ti;aPe09FluO;mm0;lm0;un3;rm1;oe;ew;laEIyn3;ngt2;te9N; cQa GXee,fiO; cO;oa09I;loO;onE;arrillo fueO;nt3; FJ-FDaDGbCMcC2dBMe78f6Kg66ham64i4Kjamain4Jka4Fl1Vm1Qnwick 1Oo1Kp14s10t0Aum04vin Yways on my08PyPzheimerO;'sTS; VsQvia aO;lynO; li08M;on Psa miO;laJY;hannPstO;on0;ig1;mH9raiG6;and the chipmSbraRkQsO;arO;geVY;amaG;gg;un025;!iniumO;! O;allQoO;xiO;de;oy;-r08Ya08erRon PrO;ui02I;toO;we09X; 02natO;e ZiO;ngVve O;forThip hJDmeRroJversions ofO; sO;piderO;-m1;diOtM;ci6; ge1H; cO;urO;reV8;hOreality VO;is0AN;brTAeO;go;iPmont freeO; conce0BJ; rOcLO;epO;ubl0BQ;aOtQJ;ceOgoff 2O;!–lorrO;ai6; arsl1a02hSine PrazOs;ol081;lOskii8;inO;ux;aSonsO;e mPo O;daD7;ucO;ha;! Ob077go,zeZ5–beta pru019;cenQpO;artO;ic7;tau06T;ca;e QisOk kanojAnzo g02Hpecia area0B3y; hiO;tl0;veG;caO;st7;aQoO;had02Dnd,stO; faA2; mOty;at0; 13-0Ya0Re0Di02m01o00sZuQy O;mcbeMsheeTDwaO;lk0; arRri sitarama P–konidelO;a 1Q;raO;ju;aRjunO;! filmography anO;d O;awGQ;vi067;pi09Bvensk1;saVAtropes ofU2;ov07Ous0AG;eQgTQson O;jaOmaJstokBK;nnE; sherRUdPs of world warO; iJ3; invasion of siS-occupied O;aPgeO;rma4Z;usO;trA;ciUE;gTn O;duBPginsSCiveO7kRlPstanO;fo07D;eeXZuO;dd5;le4;iant SoryQrO;a O;versa08P;! of theO; caYM;a05LsO;taO;diU3;hTn O;hPlaOsaint-maxim4;mb;ePoldO;swKS;inRU;!ab04Y;russia state television and radio brOtime olympic games medal04Q;oadcastiO;ng O;coO;mpa46;a0Pdogs go0Ne0Jgas no br0Ii0Amy07nippon04of us are03quiet on the wester01rights reserv047tQyouO; need is Or base are belong to D;kiCloY4;hRoO;morPo O;weC;roZP;e Pings must O;pa07O;bells sKlight we cannotRmoneyO; inO; tO;he076; s00D;n fO;roS8; de04C; aO;irO;wa12; cO;hilO;dr5; want for christmas isTnPsO; lo051; thOdia trinamoolJ4;e O;faO;miSV; yO;ou;ak3;litePyez oO;n 07Y; wO;rest00K; to heO;av5;boutR4long the watcO;htMV;lOne;iOo059;! mO;etM; ster00B; 12a10baba 0Zc08e02reza firouz01sQtPyXTzO;ée;alA;on TsRtair O;macPovereO;em;le1;a white-glOon;uz;br054dooQGeaRkrQloPOmoy03SpiCsO;tea36ud06QweO;enE;au06B;stE2;ja;nOxpI7; OwaB;abdQresuO;rrO;ec02S;uc02R;anHeSia O;keQnaYNsilversPvikaOwiY7;nd0;to6;ys; P's adventures inO; wond00;br06co02e00in XkriP3lePCroVsUtullSwO;alQeO;idItterO;lu02Y;k0t2;y O;haC;pr03J;bOosevelt longwIB;er02F;bordPchaiO;nsT;erZN;ngle06QvO;aNe;ltQopO;erO;! YG;ra6;a37ooWD;cLZgO0; Osi8;bhaXFshawkRY;baba and the forty tQeren demirez5fazMhePkhamenDMlaZDmacOwo8;grV9;ws2;hiO;ev3;bGduliO;llW8;arVBeSie044oO;nquiQrithmO;!icO; traJS;n CD;bGeVriaO;! PnO; w9;naO;tional fO;ooO;tball O;te02O; sEL;a06ie 04onso 02reO; wooJDdO; Po di stéO;faD4;aXbWdUeThitchcockRjoQmoPnobIpennywH7rOtAA;os5U;liQX;dl;! O;fYXpres00X;noTT;reO;yfD;ur6Y;dl0;cuarónYQribOxi01A;eiTJ;aC9soloO;moN; romeoPlO;fa;! iO;n O;formulaB8;!c 3Yister cro3Xjandr3Oksand3Fm3Ep3Bs34uti30xO; 1Ya08e04iO; lai02s PthO;ymA;arZbledIdVkUmRohaQsPtO;ex04W;ánX6;ni1;acO; aO;lliUM;na05;eOzieQ3; tocquOnis4E;evO;il7;qu5V;ho;i navalQy O;oleynOpajitn31;ik;ny; 17ndO;er 01rO;a Qe Oia ocasio-cortX8é pölPK;dOlacaz5MpaM2;esplPYum04B;bWdaddVelbaky1gUhedTmariaSofQpaNLshiPtruO;so34;pp; denO;ma004; laG;is2;raNS;ar2A;otWWreckenrLV;a0Mdreym2f0Lg0Hha0Fi08kere07l02m00ne2WovecZpWsSt8PvOzverW5;inQoO;lkanoOn humbolAF;vsMG;dm1;criQidd00kO;arsO;gå01K;ab4;ay6oOusQ;pe,veO;tk4;hk4;cqO;ue5;itvinRuO;dwPkaO;shP;ig;enBX;ns26; oRiPsO;ak; oPiO; oO;f O;ruO;ssA;miO;lt2;odun1PrQustO;afO;ss2;aham 59othendieJ;le5D;cSlQrmO;stO;ro8;b2ekO;hi6;os03A;bli01TcSdRiPpenaveO;ga;nteO;rnZ4;avalUIem00F;hu8;alb2bo0Ncaru0Md0Lf0Kg0Hh0Cj00Lk07l04oYpeWrSsBKtQwO;iOolKS;nt0;rebOu9J;ek;aQid0oO;driO;guVD;mírVC;rOttyf0;eiG;'loRxlade-O;chO;amberO;la4;ugO;hl4;aPifO;es2;nQ3wNY;iQuO;rtO;zm1;ngO;st2;asRiQoO;nOr6;no00K;rsQB;seC;arUXrO;eenO;wa00F;ergus2;e minaI4imitri1L;so;rs28;anO; iO;slO;anQG;ha dTsO;andrOia caGo;a ambrosQo O;del piePRnivo011vO;ol01U;io;ix2;hOpo;! O;nuVI;anQY;ar Tr O;akQdug4karPsolzhenitsO;yn;el4;imO;ov;hPmiOrak5Mvuč5M;tr5K;em2;aTo O;cao de benRgonzález iñárriQjodorO;owsO;ky;tu;ós; sO;ilO;va;wlE;bPdouglas-Z6gO;uinZM;alJR;abra giant t01eXiWoPrich O;am3; gSsQusO; huO;xlE;teO;ro6;ucO;ci;!s hodIK;bQn ehrenrPrO;nEsh00P;eiOP;ar1;ortO;oiYN;atraz 05hem02ibi01oOubierre3S;holOn A4;! TiO;cOsm; dPs anonyO;moD;riO;nk;by voluZWflushSiQpO;roO;of;ntoxiO;caVH; reB9;ad3;ical Oy;syO;mbZ1;federal penitentOisSR;iaL;a09ePiOrecht dür0us dumbledoB;niQ6on;do,rtO; Ra,o fO;ePujiO;moVK;rnáSB;anastKHb01c00eiYfiXiTkesselC1pierrepSsPweO;sk0;alRDchwePpe0tuivO;enI2;itz0;oiJ0; oPiO; oO;f bO;elgiJZ;nnEsh;nsO;te4;amD;litNJourYMrP0; RniaOtFI;!n O;la7ImO;afA;baptQflProhrwaO;ch0;or3;isZ8; vaikunthapurramul1Jbama1Dddin1Cin 18n02qua00ricZsQuddin khalPwO;it3;ji;kaRtair O;cOsCM;aOoPH;mp0T;! Pn O;bush 4ZmalamuH;aBGpO;urcO;haWX; i; cO;ox; Sa Pis morissOs;etH;de la gOhaC9;arO;za;a0Nb0Lc0Jd0Gedward 0Fgreen0Ej0Cla09m08p06r00sWtQwaO;keOtTZ;! U7;hRitchQuO;dOri8;yk;marPN;icO;ke;chaQhePilveOug9;stU1;ar0paVP;af;iOuJ;ckOtchs2;manO;! oO;n screen and sO;taFX;arOriWZ;k0soNtrFJ;e0XooB;dd,sO;ceO;ll3;acO;ks2;sp1;beC;aPershoO;wiPY;vi3;aQHumO;mi8;at3enO;neOE;lVCrk4;dePpO;roTY; boOl2;tt2;! sa6;! crimson tideQ–georgiaO; football rO;ivalL; fO;ootO;baC;oo;aQbiPghazaNOqO;aeUY;ruMI;ndPqsa moO;sqL4;alD;ahl02ca01d00fraZgYhilal sXjUmiTpacinoRsO;harPteO;waWU;pt2;! on stage and scO;re5;chaeUI;azeeraPoO;ls2;! e74;fc;oBre5;nk5;avF;po6;y O;sc;a0Eb9h0Ai02kZm,on,rotiri and dhekYsWuO;damaTla-O;classO; sO;ubO;maO;ri6; dO;riL9;ai Ohay0K;ch4;elA;adian Pineni nageswaraO; r3S;emH7la4E;hiDKnFLo ōtsu0Sra Pva goldO;sm1;isSkuPtoriO;yaO0;roOsQ;saO;wa;hiTQ;anTPenat5ilO; Pesh yadO;av;akkineL7;ike information crWnRri kiQsOthisA;aROhic recordsO;! of bastard magic instruI3;tō;e yPkshaO; puRF;amO;agO;ucIV;iteO;ri2; 02aSeeb daastaaNithRla tomlO;janO;ovO;ić; kumarOJ;gajanthWntUxQy O;devgnOHgO;hoMK; tO;heO; gO;reGJ;a cO;av3;arRQ;lMKmPstO;yl3;ichalO;ka; 1Zchi 1Sd1Iki1Hlee1Gme16n11rWsO;hPling O;bONfrancioLB;aRwarya raO;iOjeM4;! O;bK3fNZ; tO;yl0; 05-t02asAbYcraft Udr20fo7CpQsh6LtPwoO;lf;ag;laQoO;dsOrt;! pIK;ne,y;cPinO; f7I;arO;ri0;nb,orne early warning andVusO;! belugaO;! O;xl;o-airO; mO;issi7;aK5c05euro04f01gTAi1ZjoRAkor00new zZpollutXquVsupRtrafficO; cO;onO;trT5;eriorityOpEI; fO;igO;ht0;alO;ityT3;ionO;! iT2;eaMN;yo;orcePrO;anSRy0; o6;pa;anadaQhiEToO;nditO;ioJR;! fO;lePN;sley earQu O;peO;op7;harO;dt;eOr; R-ffionO; eO;dwO;arHW;gaRlou QmaBCteeO;gaO;rd5;woT0;rcA;!n wuornKM;do;an Py brO;yaCH;gRhQqPtuO;rn0;uiB1;utchiL4;alPiO;ll5;laO;gh0;pStO;elevisiO;on O;broadcO;asSO;refO;ecF5;dQkaPweiwO;ei;kuKJyaS;unO;ge2;eg03mXn RrQsoka Oura mazQA;taO;no;im1;bRePhyo-seO;op;unO;-j4;o-O;hyRB;adQeO;dOt ertegR9; i,abNP; shah mPiyO;ya;asso7F;ao;a15e0Bg05ile software02nXoVrO;aSicultureO;! O;inO; iO;ndA;! O;foRP;da,raO;phC4;eRosPès vO;arPI;tiO;ciHX;s mooreN5tha fältsk24; dO;evO;elop1A;lutinativPretsuO;ko;e O;laO;ngO;ua99; Zi8nt Ws of consent O;bySin O;asAeuQtO;heO; unDY;roF4; cO;ouO;ntL;orPsO;mi8T;an8X;disparity in sexual relat03of O;aqua01c00diYeTmOtB5;ajoRytO;hoO;loO;gy;riK7;ar8KmpiresPnlO;ighten0J;! iO;iOv;!i;scoO;veL;onseA1;riD;ionsO;hi0R; 00memn2pe,rYtO;e,hO;a Pe roussO;el7;christiePhO;arkP0;! R's O;maPpoO;irQD;rp7;bibliJG;!icus bispO;orD;coQkhanO;! O;iv;ok0;c 1Bf12g0Zi 0Yr00shanZterO; TlifeSmath O;enO;tertO;ainO;me9B;! of theJ6;eRthe Pwe O;collidKSfeC;daLGthO;inKV;ar7H; azL9;iToaO;siatO;icO; lO;anguO;ag3;caRkaO; kOaNneN8;orO;ps;! cup09nO; T-american O;cRvernacularO; eO;ngO;liGJ;ulBQ;am00bushXdVelYnatRuQwildO; dO;og;ni2;ionalO; cO;ongO;reNO;iasO;poG; elO;epO;ha8A;erO;icaN; ofO; nHS;feL7;haO;niO;st1; 0Eair of the diamond neck7NiQordable careO; aO;ct;liateRne tPrmative O;acJU;ransfO;or25; maO;rkeOD;aWbournUchQnPwimblO;ed2;or62;ampO;ionsO; leO;agC9;emO;ou5W;jPsianO; c5H;ax; dil hai mushk0Og0Lne0Kr07s01w OxN6;battle of the belJHdYramXtPwO;orld R;bPnO;t P;s O;chO;ampO;ionO;shO;ip;pa5M;ynaO;miH; instructionSchRopPpa,theticO;iDWs;!'s faO;bl3;ylD; sJK; Yith gainsbWoO;bic exerciLLflNJgIsO;mithRol,paceO;! eO;ngineeO;ri8;! aO;lbumO;s EZ;orO;ouGN;liO;ngD;as,id;ean Ois;aOsGT;irl9W;il; 63-61a48block46d3Ne3Di2Yj2Slai stevenso2Rmi2Jnan 2Fo1Hr0Pult0KvSwaBx flRzuki Qèle O;exarchOhaenI;opoulEE;be1;orK4;aWeO;ntOrb;!ureO; Qs O;in babysOof huckleberry fi4S;itMO;fPgaMBnOtiMB;ovI;icHY;ita ved05nceO; publ03-fee scJ7d O;audiZeUmRvO;ector extPiO;deX;ensFI;essage queuPicro devO;ic3;ing34;ncryptO;ionO; sO;tanO;daJP;o O;coO;di8;icF5;anM7; OeL;aPswOtrainDJ;im;niO;maHA;en0BiO;aYenO; Ue misTne O;baPshO;el68;il2rO;beO;au;hl0;agrPbroO;dy,n0;esH; arjo6PnPticO; sFB; Ra liDIne O;cPpalO;ic3Q;urL;chSgreRleQnewEpeO;teO;rs2;st0wF;ni0;aJFil3;alQergicOoch4L; receO;ptHJ; gDYi6;beYlPnFrationO; of the ma0M;eVfPphe thO;ieIT; Oo suárez madrid–barajas8K;eiRhitlerO;!'s rise toO; pO;ow0;ch2X;scI4;! O;a07creative 03dream01flashYiUlightSpPsO;ysteIQ;hotoshopPremiereO; p8Q;! 7V;roO;om;llustr43nO;deO;siO;gn;! O;plO;ay0;weO;av0;cPsO;uiH;loO;ud;crob5Mfter6EniO;maH;januzQkO;hashogO;gi;aj;nistrative Rral gorshkov-O;classO; friO;gaH;counties O;ofO; eO;ngCO;n FL;acencyQecPoa andOugateQ;oh;ti8Q; mO;atrO;ix; shan01abaticYdasWn VpuUtO;i rao hySya O;cQroy kO;apO;ur;hopG;daFA;ruAR;roI4;! yeeO;zy; pO;roO;ceHZ;kaG; eVelUlRnPwale akinnuoye-agbaO;je;!osineO;! triphosAT;aide Pe O;diAVone night on3J;ka6; akht9;dmonO;ds2;ams family04e03iTress O;bRresoluO;tionO; pO;rotocHW;ar,o9D;cE5sO; aUonO; R'sO; dO;isO;eaGT;r4EtiO;ml4;baO;ba;raC; vaO;lu3;! O;plD; 1DbooEVmVnPsO;sa; cRa demirspEOiO; gO;roO;up;anO;to; S's O;aQbrPrO;ib;idZ;pp7;a0Vb0Pc0Nd0Kg0Eh0Dk09l05m04n01pa00ricZsRvinatQwOyau65;arOeEH;loJ;ieDQ;aSchPmiO;th;iPleO;si05;ff;ndlPvaO;ge;erAW;hm1;ge,scM;euO;maO;nn;ckK;aPeO;vi6;lla2LmO;beHC;inPownacO;ki;ziO;ng0;ilEZ;ilRoOranduciI;dlEldO;beO;rg;chO;riDM;ePrBPuO;ri9C;m8Jvi6;o7uO;rtF;alSea53ilQoh9AroPuO;xt2;dy;zeO;ri1;dw4;m4nQrO;cOk4;huleGV;dOt; e5N;loOwo8;veO;laFL;roJ;ck;blO;oc1F; 3Ga2Dc1Xe1Mf fioren1Kh16id 15kerman12ne,o0Xr0ItXuO;punc2Yra,te O;acTmyeloid leukSradiatiO;onO; sO;yndO;roFY;emA;ceO;nt;iQs of the aposPuO;atCI;tl3;nopterygBUonXvO;atTe QisionO;! blizO;zaDI;direcEWelectronically scannedO; aO;rrK;edOio0I; caO;rb2; O-adventureP;bro7ZfiTgaFGpQrole-playingO;! O;gaFE;aBEotO;enO;tiM;cAZlm;oQylonitrile butadiene sO;tyO;re6;megaYnXpTssO; tO;heO; uO;nivO;erDJ;hQolisO; of atO;heN;obA;ym;ly;nOrn;cPitO;um;agO;ua;n O;fuO;ncAC;ra4;aemeniYelouWilleQondroplPraf haki6Ntung O;ba9S;asA; lauroQsO;! and patroclD' O;heI; hijO;acO;ki8;saO;urD;d O;emO;piB;tiO;na; Sh,tO;icBMo6ylO;cOe6;ho1CystO;ei6;aRcombQfrePof O;baCH;hlE;at;ttoO;rnE;eZipitriXorWra,uO;racy PweaO;th0;and prRinternational aO;rcticOwm; waO;rfaB;eciO;si2;!di2;dOform3;ae;lerOn0D;ationPomO;et0;!i42;cAdPpulO;co;emPiaO;!ns;ic 09y O;awardPof motion picture arts andO; scieCC;! for best Os;aYcineXdUinternational feature 8Soriginal sSpRsupporting act04visualO; eO;ffO;ec8X;icX;cOo8;oBrW;iOocumentaryS;reO;ct9M;mat6H;ctTdapted scrRnimatedO; fO;eaO;tuB;eenO;plK;or,reBQ;dXgrading in tPranking of world universi7PteOye9;rm;he O;phSunO;itO;edO; stO;at3;ilippO;in3;ePiscipO;li6;gr47;cobGpower plugs and sO;ocO;ke83; inb4Ga4Db39c35d2Ce22hi1Ti1KkhazAle1Ho17r0Ts0AuPweO;hr; RgiACja,l a'la maudu06ndance of the chemO;ical O;elO;em7N;az03bakr01dhabiTghraib torture and prisonerRibrahim al-hashimi al-qurPmusab al-zarqaOsimbItahsin al-salQ;wi;asO;hi; aO;buAF;! O;inO;terO;nationO;alO; aO;irO;poBY;! al-baghdaO;di;raI;-cbn,int05oluteWtract PurO;di27;aBSdRexPsyntax O;tr3D;preO;ss0N;ata O;tyO;pe; Oly fabuloD;moTpRvPzeO;ro;alO;ue;itO;ch;naO;rc4R;he;aPuzO;zo;hamQj OxB3;al ba7FkudO;ai; Oic relig4C;aSbeaAWinQliPmasl8Tvan helO;si8;ncoln; iO;sl7S;ccO;orO;ds;lUrPut O;faH;iginal aQtionO;! lO;aw;ustralO;iaN;itO;ioO;ni12;i11ton O;liO;ve;dj1gail RogPyO; ahm5M;enO;esF;bresl4sQtO;hoO;rn;peO;nc0;jitUmanyu Sshek O;bPkO;apo6P;achO;ch1;dassaOmishGs3P;ni; banO;erj1P; viWbUl fSrO;de5fanO; dO;isaO;st0;erraG;ra;ooO;ks;go7Q;alla hamd0Fe08ication of edward07om01uO;cWlOwali mu80; hamid 5Klah Prazak gurnO;ah;iiSoO;f sO;audi aO;rabA;ia; of 6P;tive rO;eaO;soO;ni8;en,inal O;aorticOpa4; aO;neuO;ryO;sm; vi52; ezzalzSl fattah O;al-buQel-O;siO;si;rh1;ouO;li;ok; PdeO;fu;neOs0G;ws;!a0Iey 0Ci03ott Vy O;and brittany heTelRlO;ee O;miO;ll0;lioO;tt;nsI;and coSeleQlaboraO;toO;ri3;menO;taL;stO;elO;lo; jUe O;corReQhO;ofO;fm1;at2;niO;sh;acoO;bs2;lSroadO;! sO;tuO;diO;os;ee;! UsO; kiarosRidO; caO;liO;phaH;taO;mi;diO;sc14;cDdd2lo6ndonO;waB;ne;ev; b19ch5dha9kanksha15m0UrRsmah m3PyushO; shO;arO;ma;d0MhDne–thompson–uth0Kon Pón sanO;ch07;a0Gbu0Fc0Cd09e07h04le02mcgrud0paul0RrZsStO;aOve3N;ylor-jO;ohO;ns2;oSpQwO;arO;tz;elO;li8;rk4;in;amsPodO;ge4Z;da7ey;nn2wF;is;ernaO;ndO;ez;ckO;ha6W;esPoO;na5A;sn0;aPopO;la2P;rt0;rr;shO;moB;er5V;us;maOva2C;n animO;atO;ioN; aadmiVirO; khO;anO;! fO;ilmO;ogO;rapO;hy; pO;arO;ty; sO;inO;gh;ar;atO;teL;ha,leO;ague3WvI;el;b5Ec4Ld41f3Ng3Ahistory of37is for35journal for 32k2Ul2Rm24ni1Zp1Rquiet place1Pr1Is0Pt04vYwPyear-end meO;dlE;alkThiQizard of earthsPrinkle iO;n 5J;ea;sker Oter shade of pa7;awK;ay; to reO;meO;mb0;ery british Riew to O;a O;kiC;ll;scaO;ndM;a02hWown likeUriO;be called qSpO; toO; thO;e O;mo2;ue1U; aO;li4A;eoryPousand splendidO; suN; ofO; jO;usO;ti44;le of twoRxi O;drO;iv0;er; ciO;ti3;aucerful0DeZiWong of ice and UtQunday afternoon on the island of la grande jO;atH;te;op at wPreetcar namedOudy in scarl0X; desiB;illoughO;by;fiB;re;ngPster's all you neO;ed;leR;at at theZpaXrO;biaTiO;ePousO; m1;s of unfortunateO; evO;enX;n O;fiO;lm;raO;ti2; tO;ab7; ofO; secreO;ts;ainy day inQoom of one's0Xush of blood to the O;heO;ad; nO;ewO; yoO;rk;! part O;ii;ail ofTerfectRiece of yourPriori and a posterioO;ri; miO;nd; cO;irc7; aO;ir;ce place to visRghtmare on elm O;stO;reO;et;it;an who defies the world of bl,emory of07iUoO;desRmentary lapse ofO; reO;as2;on;t proposM;al;dsummer night'sXllion PnO;or;littleSways to die inO; thO;e O;weO;st; thO;inO;gs; dO;reO;am; lO;igO;ht;eague of theirOittl1A; oO;wn;indTnight'SoreO;an oO;dyO;ssE;ey;s 27; of mO;ag2S;joO;rd1;an; acO;id; vO;iolO;en1D;ame oYentleman inVhost16ooO;d day toRfyO; mO;ovO;ie; die O;haO;rd; mO;oscO;ow;f thrO;on3;aWew goodUisPlock of seagulO;ls;h called wQtful of doO;llaO;rs;anO;da; m5;en;ll fromQrewell to O;arO;ms; gO;ra0M;aZiToO;g's way Rll'sO; hO;ouO;se;ho14;fferPscovery of witO;ch3;entO; wO;orO;ld;nPy in thO;e 0P;ce with dRgerouO;s O;meO;th0Y;ragoN;ns;a0Aertain 04hWinderellaVoRure for weO;llO;neO;ss;nfederacy of duPurt of thorns and rO;os3;nc3;es; sQ;arlie brown0Hristmas O;cSprQsO;toL;ry;inO;ce;arO;ol;magicPscientific railgO;un;alO; iO;ndO;ex;lQppOstle for03;elO;la;ifornia00l toO; sO;py;a03eautiful day in the00oy calledXrRugO;'s O;liO;fe;ief history Qonx O;ta7;le;of O;tiO;me; chO;ristmO;as; neighborO;hoO;od;bysitter's guide to monsterQndO; apaO;rt; hO;unO;ti8;ng;ndrangheQsalem'sO; lO;ot;ta;ovO;ic\"));a.model.wpTree=e.buildTrie(O)}};export{n as default};\n"
  },
  {
    "path": "plugins/wikipedia/config.js",
    "content": "export default {\n  lang: 'en',\n  project: 'wikipedia',\n  // min_pageviews: 3 // remove 378,151\n  min_pageviews: 200 // remove 1,159,783\n  // fresh: true, //start fresh\n}\n"
  },
  {
    "path": "plugins/wikipedia/demo/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n\n  <script src=\"https://unpkg.com/compromise\"></script>\n  <!-- <script src=\"https://unpkg.com/compromise-stats\"></script> -->\n  <script src=\"../builds/compromise-wikipedia.min.js\"></script>\n\n</head>\n\n<body>\n  <p>compromise-wikipedia demo:</p>\n  <ul>\n    <kbd>you could still go to McGill, the Harvard of Canada!</kbd>\n    <pre id=\"res\">loading</pre>\n  </ul>\n\n  <script defer>\n    nlp.plugin(compromiseWikipedia)\n    let txt = document.querySelector('kbd').innerText\n    let doc = nlp(txt)\n    let json = doc.wikipedia().out('array')\n    document.querySelector('#res').innerHTML = JSON.stringify(json, null, 2)\n  </script>\n</body>\n\n</html>"
  },
  {
    "path": "plugins/wikipedia/index.d.ts",
    "content": "import nlp from 'compromise'\ntype View = ReturnType<typeof nlp>\n\nexport interface WikiMethods {\n  /** phrases that match wikipedia titles */\n  wikipedia(): View\n}\n\n/** extended compromise lib **/\ndeclare const nlpWiki: nlp.TypedPlugin<WikiMethods>\n\nexport default nlpWiki\n"
  },
  {
    "path": "plugins/wikipedia/package.json",
    "content": "{\n  \"name\": \"compromise-wikipedia\",\n  \"description\": \"plugin for nlp-compromise\",\n  \"version\": \"0.1.1\",\n  \"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n  \"main\": \"./src/plugin.js\",\n  \"unpkg\": \"./builds/compromise-wikipedia.min.js\",\n  \"type\": \"module\",\n  \"sideEffects\": false,\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./src/plugin.js\",\n      \"require\": \"./builds/compromise-wikipedia.cjs\",\n      \"types\": \"./index.d.ts\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/spencermountain/compromise.git\"\n  },\n  \"homepage\": \"https://github.com/spencermountain/compromise/tree/master/plugins/wikipedia\",\n  \"scripts\": {\n    \"test\": \"tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"testb\": \"TESTENV=prod tape \\\"./tests/**/*.test.js\\\" | tap-dancer  --color always\",\n    \"watch\": \"node --watch ./scratch.js\",\n    \"generate\": \"node ./scripts/generate/index.js\",\n    \"stat\": \"node ./scripts/stat.js\",\n    \"perf\": \"node ./scripts/perf.js\",\n    \"build\": \"rollup -c --silent\"\n  },\n  \"peerDependencies\": {\n    \"compromise\": \">=14.0.0\"\n  },\n  \"dependencies\": {\n    \"efrt\": \"^2.5.0\"\n  },\n  \"files\": [\n    \"builds/\",\n    \"src/\",\n    \"index.d.ts\"\n  ],\n  \"devDependencies\": {\n    \"colorette\": \"2.0.16\",\n    \"node-wget-promise\": \"0.1.6\"\n  },\n  \"license\": \"MIT\"\n}"
  },
  {
    "path": "plugins/wikipedia/scratch.js",
    "content": "// import corpus from 'nlp-corpus'\nimport nlp from '../../src/one.js'\nimport plugin from './src/plugin.js'\nnlp.extend(plugin)\n\nlet txt = ''\ntxt = `Moreover, it is always possible to consolidate for discovery different cases that involve construction of the same claims.`\n\ntxt = 'i saw the toronto raptors play a cleveland foops'\nconst doc = nlp(txt)\nconst m = doc.wikipedia()\nm.debug()"
  },
  {
    "path": "plugins/wikipedia/scripts/generate/01-download.js",
    "content": "/* eslint-disable no-console */\nimport wget from 'node-wget-promise'\nimport { yellow } from 'colorette'\nimport sh from 'shelljs'\nconst file = `./files/pageviews.tsv`\n\nconst date = new Date()\nconst month = `${date.getMonth() + 1}`.padStart(2, '0')\nconst year = date.getFullYear()\n\n// create the filename for the last dump\nconst getDate = () => {\n  const d = new Date()\n  d.setDate(d.getDate() - 10) // do yesterday\n  const m = `${d.getMonth() + 1}`.padStart(2, '0')\n  const str = `${d.getDate()}`.padStart(2, '0')\n  return `${d.getFullYear()}${m}${str}`\n}\n\nconst getIt = async function () {\n  // download dump\n  console.log(yellow(`\\n-- downloading pageview dataset:   (~5 mins)--`))\n  const url = `https://dumps.wikimedia.org/other/pageview_complete/${year}/${year}-${month}/pageviews-${getDate()}-user.bz2`\n  await wget(url, {\n    output: file + '.bz2',\n  })\n  // unzip\n  console.log(yellow(`\\n--- unzipping pageviews data  (~4 mins) --`))\n  sh.exec(`bzip2 -d  ${file}.bz2`)\n  console.log(yellow(`\\n finished unzipping pageviews`))\n\n  // sh.exec(`rm  ${file}.bz2`)\n\n}\n\nexport default getIt\n"
  },
  {
    "path": "plugins/wikipedia/scripts/generate/02-filter.js",
    "content": "/* eslint-disable no-console */\nimport fs from 'fs'\nimport sh from 'shelljs'\nimport { blue, yellow } from 'colorette'\nimport nlp from '../../../../src/two.js'\nimport nos from './_no-list.js'\nimport conf from '../../config.js'\n\nconst { lang, project, min_pageviews } = conf\nconst tsvOut = `./files/${lang}.${project}-pageviews.tsv`\nconst output = `./files/${lang}.${project}-pageviews.json`\nconst file = `./files/pageviews.tsv`\n\nconst lex = nlp.model().one.lexicon\n\nconst keep = {\n  Person: true,\n  Place: true,\n  Organization: true,\n  Country: true,\n  City: true,\n  Region: true,\n  SportsTeam: true,\n}\nconst noList = new Set(nos)\n\n// const userPage = /^User:./\n// const userTalk = /^User talk:./\n// const catPage = /^Category:./\nconst list = /^list of ./\nconst hasNum = /[0-9]/\n\nconst hasPunct = /[.,/#!$%^&*;:{}=_`~()+\\\\]/\n\n//tot to internal id\nconst toName = function (title = '') {\n  title = title.replace(/_/g, ' ')\n  title = title.trim().toLowerCase()\n  return title\n}\n\nconst ignorePage = function (title) {\n  if (title === 'main page' || title.length < 3) {\n    return true\n  }\n  // block by compromise lexicon\n  if (lex[title] && keep[lex[title]] !== true) {\n    return true\n  }\n  if (hasNum.test(title) || hasPunct.test(title) || list.test(title)) {\n    return true\n  }\n  // ban-list\n  if (noList.has(title)) {\n    return true\n  }\n  return false\n}\n\nconst toList = function () {\n  let final = []\n  let nope = 0\n  const arr = fs.readFileSync(tsvOut).toString().split(/\\n/)\n  for (let i = 0; i < arr.length; i += 1) {\n    const a = arr[i].split(' ')\n    let title = a[1]\n    if (title !== undefined && a[4] !== '1') {\n      title = toName(title)\n      const num = Number(a[4])\n      // another filter\n      if (ignorePage(title) === true) {\n        continue\n      }\n      if (num <= min_pageviews) {\n        nope += 1\n      } else {\n        final.push([title, num])\n      }\n    }\n  }\n  final = final.sort((a, b) => {\n    if (a[1] > b[1]) {\n      return -1\n    } else if (a[1] < b[1]) {\n      return 1\n    }\n    return 0\n  })\n  final = final.map(a => a[0])\n  console.log(`   ... removed ${nope.toLocaleString()} articles`)\n  console.log('final list', Object.keys(final).length.toLocaleString(), ' articles')\n  final = JSON.stringify(final, null, 2)\n  fs.writeFileSync(output, final)\n  return final\n}\n\nconst round = n => Math.round(n * 10) / 10\n\nconst fileSize = (pathStr) => {\n  const kb = fs.statSync(pathStr).size / 1024\n  const num = round(kb / 1000)\n  return num.toLocaleString() + 'mb'\n}\n\nconst getLines = function (fpath) {\n  const { stdout } = sh.exec(`wc -l ${fpath}`, { silent: true })\n  const arr = stdout.split(/\\W/).filter(s => s)\n  const lines = Number(arr[0]).toLocaleString()\n  console.log('   ', blue(lines))\n}\n\nconst filterIt = function () {\n  console.log(yellow('initial dump size (~40m lines):'))\n  // 40,043,607\n  getLines(file)\n  console.log('   ', fileSize(file))\n\n  console.log(yellow('\\n--running grep filter--'))\n  //filter-it down to our project only\n  sh.exec(`grep '^${lang}.${project} .* desktop ' ${file} > ${tsvOut}`)\n\n  console.log(yellow('\\n--running regex filters--'))\n  console.log('  min pageview: ', min_pageviews)\n  console.log('   ', blue(fileSize(tsvOut)))\n  toList()\n  console.log(yellow('\\n\\n out ->'))\n  getLines(output, 'lines')\n  console.log('   uncompressed: ', fileSize(output))\n}\nexport default filterIt"
  },
  {
    "path": "plugins/wikipedia/scripts/generate/03-compress.js",
    "content": "/* eslint-disable no-console */\nimport { pack } from 'efrt'\nimport fs from 'fs'\nimport conf from '../../config.js'\nimport { blue, yellow } from 'colorette'\nconst { lang, project } = conf\nconst output = `./files/${lang}.${project}-pageviews.json`\nconst model = './_model.js'\n\nconst round = n => Math.round(n * 10) / 10\n\nconst fileSize = (pathStr) => {\n  const kb = fs.statSync(pathStr).size / 1024\n  const num = round(kb / 1000)\n  return num.toLocaleString() + 'mb'\n}\n\nconst compress = function () {\n  const arr = JSON.parse(fs.readFileSync(output))\n  console.log(yellow('\\ncompressing', arr.length.toLocaleString(), 'articles'))\n  const smol = pack(arr)\n  fs.writeFileSync(model, `export default \\`` + smol + '`')\n  console.log('output:', blue(fileSize(model)))\n}\nexport default compress"
  },
  {
    "path": "plugins/wikipedia/scripts/generate/_no-list.js",
    "content": "export default [\n  'a hero',\n  'a level',\n  'actor',\n  'actress',\n  'album',\n  'anger',\n  'anniversary',\n  'author',\n  'basic',\n  'bat',\n  'beauty',\n  'behavior',\n  'belief',\n  'beta',\n  'bird',\n  'birthday',\n  'brass',\n  'by the way',\n  'c',\n  'calendar',\n  'capital city',\n  'car',\n  'castle',\n  'cat',\n  'chairman',\n  'climate',\n  'clock',\n  'cloud',\n  'college',\n  'column',\n  'common sense',\n  'communication',\n  'company',\n  'competition',\n  'computer',\n  'concept',\n  'confidence',\n  'construction',\n  'continent',\n  'contract',\n  'country',\n  'crab',\n  'cream',\n  'crime',\n  'culture',\n  'data',\n  'definition',\n  'devil',\n  'diamond',\n  'dictionary',\n  'disaster',\n  'discovery',\n  'disease',\n  'dog',\n  'download',\n  'dragon',\n  'drama',\n  'drug',\n  'duck',\n  'earth',\n  'email address',\n  'email',\n  'emotion',\n  'empire',\n  'emporer',\n  'engine',\n  'english',\n  'fact',\n  'fantasy',\n  'forest',\n  'frequency',\n  'fruit',\n  'game',\n  'generation',\n  'glass',\n  'goat',\n  'government',\n  'heart',\n  'holiday',\n  'horizon',\n  'hotel',\n  'human',\n  'image',\n  'in my life',\n  'in time',\n  'inch',\n  'infection',\n  'innovation',\n  'investment',\n  'island',\n  'kitchen',\n  'knight',\n  'lady',\n  'language',\n  'laptop',\n  'law',\n  'leadership',\n  'legislature',\n  'length',\n  'library',\n  'life',\n  'logo',\n  'lord',\n  'machine',\n  'magazine',\n  'mass',\n  'matter',\n  'memory',\n  'metal',\n  'metropolitan area',\n  'mini',\n  'molecule',\n  'monster',\n  'multiplayer',\n  'museum',\n  'my family',\n  'my way',\n  'nature',\n  'new world',\n  'newspaper',\n  'nigga',\n  'no doubt',\n  'noodle',\n  'on the road',\n  'organization',\n  'pain',\n  'paper',\n  'percentage',\n  'personality',\n  'pie',\n  'planet',\n  'pollution',\n  'population',\n  'pride',\n  'pub',\n  'pussy',\n  'ratio',\n  'reality',\n  'reference',\n  'restaurant',\n  'revenue',\n  'river',\n  'road',\n  'rocket',\n  'rocky',\n  'saint',\n  'sake',\n  'scholar',\n  'sea',\n  'snack',\n  'snake',\n  'society',\n  'software',\n  'song',\n  'soul',\n  'space',\n  'sport',\n  'stock',\n  'strategy',\n  'sun',\n  'symbol',\n  'synonym',\n  'tank',\n  'tax',\n  'teacher',\n  'temperature',\n  'the apartment',\n  'the band',\n  'the bill',\n  'the butler',\n  'the conversation',\n  'the crown',\n  'the doors',\n  'the edge',\n  'the interview',\n  'the office',\n  'the police',\n  'the prince',\n  'the road',\n  'the room',\n  'the sweet',\n  'the wall',\n  'theatre',\n  'this man',\n  'tiff',\n  'toilet',\n  'tool',\n  'transportation',\n  'tree',\n  'truck',\n  'truth',\n  'universe',\n  'university',\n  'vehicle',\n  'video',\n  'village',\n  'virus',\n  'volume',\n  'weapon',\n  'website',\n  'windows',\n  'winter',\n  'world',\n  'writer',\n  'york',\n  'you again',\n  'your name',\n  'community',\n  'fairy',\n  'precedent',\n  'professional',\n  'emperor',\n  'mountain',\n  'classroom',\n  'discovery',\n  'toy',\n  'friendship',\n  'cheque',\n  'guild',\n  'retail',\n  'little boy',\n  'proposition',\n  'chink',\n  'ceo',\n  'spice',\n  'density',\n  'logic',\n  'an education',\n  'transport',\n  'translation',\n  'airplane',\n  'crimson',\n  'the shadow',\n  'chariot',\n  'duke',\n  'utility',\n  'genius',\n  'political party',\n  'dam',\n  'the jungle',\n  'calorie',\n  'angle',\n  'the practice',\n  'office space',\n  'the hindu',\n  'the trial',\n  'marketplace',\n  'the night of',\n  'mummy',\n  'brick',\n  'sphere',\n  'asset',\n\n]\n\n\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "plugins/wikipedia/scripts/generate/index.js",
    "content": "// import download from './01-download.js'\nimport filter from './02-filter.js'\nimport compress from './03-compress.js'\n\n// await download()\nfilter()\ncompress()"
  },
  {
    "path": "plugins/wikipedia/scripts/perf.js",
    "content": "/* eslint-disable no-console, no-unused-vars */\nimport corpus from 'nlp-corpus'\nimport nlp from '../../../src/one.js'\nimport plugin from '../src/plugin.js'\nnlp.extend(plugin)\n\nconst n = 30000\nconsole.log(` -- processing ${n.toLocaleString()} sentences-`)\nconst docs = corpus.all().slice(30000, n + 30000)\n\nconst percent = (part, total) => {\n  let num = (part / total) * 100;\n  num = Math.round(num * 10) / 10;\n  return num;\n};\n\nlet found = {}\nlet matches = 0\n\ndocs.forEach(str => {\n  const doc = nlp(str)\n  const res = doc.wikipedia().json({ normal: true })\n  res.forEach(o => {\n    if (o.normal === 'discovery' || o.normal === 'a level') {\n      console.log(str)\n    }\n    found[o.normal] = found[o.normal] || 0\n    found[o.normal] += 1\n    matches += 1\n  })\n})\n// sort by freq\nfound = Object.keys(found).map(k => [k, found[k]])\nfound = found.sort((a, b) => (a[1] > b[1] ? -1 : 0))\nfound = found.slice(0, 400)\n\n\nconsole.log(JSON.stringify(found, null, 2))\nconsole.log(`found ${matches.toLocaleString()} matches in ${n} sentences`)\nconsole.log(percent(matches, n) + '%')"
  },
  {
    "path": "plugins/wikipedia/scripts/stat.js",
    "content": "/* eslint-disable no-console */\nimport sh from 'shelljs'\nimport fs from 'fs'\n\nimport conf from '../config.js'\nconst { lang, project } = conf\nconst file = `./files/${lang}.${project}-pageviews.json`\n// const file = './files/pageviews.tsv'\n\nconst round = n => Math.round(n * 10) / 10\n\nconst fileSize = (pathStr) => {\n  const kb = fs.statSync(pathStr).size / 1024\n  const num = round(kb / 1000)\n  return num.toLocaleString() + 'mb'\n}\n\nconsole.log('article count ( lines):')\n\n//raw: 40,043,607\n//filtered: 1,049,500\nconst { stdout } = sh.exec(`wc -l ${file}`, { silent: true })\nconst lines = Number(stdout.split(/\\W/)[1]).toLocaleString()\n\nconsole.log('lines', lines)\nconsole.log('size', fileSize(file))\n"
  },
  {
    "path": "plugins/wikipedia/src/_model.js",
    "content": "export default `true¦0:HR0;1:HTI;2:HSM;3:HV6;4:HOR;5:HU9;6:HO8;7:HVY;8:HWE;9:HPV;A:HMD;B:HRB;C:HQF;D:HPC;E:HTC;F:HOW;G:HM1;H:HR5;I:HQ0;J:HFH;K:HQ8;L:HVB;M:HSO;N:HUY;\"weird al\" yankHX6'HX2aF7QbDONcBZ8dAYKeA9Ff9LVg8W1h86Gi7Q8j6WLk6G4l5RXm4LKn42So3SMp2XRq2VQr27Es0Y8tW1uPKvHEw6Lx5Sy2Bz06£9PHàstrid bergès-frisbEá03ättestuH2YåHPTæ01çatalhöyük,éUîle-de-E4EóTöSúrsula corbe79PüRđorđe martinovićD5Płódź,ōQśūnyatā,škoda PžOʻoumuamHHLμ2XK;eljko ivanGTSydrūnas savickHWQ;auHEFoctE0V;dARNkaHON;bermensHL1rüm5ZB;gede9IOtFWQzlem türeGVU;lafur darri ólGT3scar mingueGXY;amon de vaCTWdRlQmile Pric Ovariste gDAW;ro7EWzemBQX;durkDG0zoHW2;anELUodie 970;er milit9LRgar raGTMith piGY6ouardO; mO-henri avrH9C;anHSQenHFE;on10SsHSLthelO;red the unreaHFCst1;lvaro morPngel O;corrHQBdi marG6A;aHWNte; 1R-1Qa15bigniew brzeziCTCd14e0Sfs,h0Ii0Al09oSsa zsa gabHSUuPweihäGOTx FBByOz topGPFüFIC;klon b,nGT0;bin8Q3cchiHLUlOmwaltFOJrichHJZ;fikar aliEPRu O;kFSClaH4NpeH2J;diac03eYg i of albDE6hXlWmToRpicDR6rPsia m3KFyaHCYë O;bucEIUk665qH30roENHwanamDVU;a neale hurGTNin HNSk,oastOro;er,rFB7;ey deALYlOm video D1VpC8NtopA;aGOJoH50;aHDNbieO;! OlaHS0;a9T1landDII;pidGNXtán61Z;ar,oGED; PyO; deGY's extraordinary 8BK;collGI8kPlisterD9XpDSQsaldaO;na,ña;az1raFZD;! 5WC;atan ibrahimH04ib;dovuCKRffADYgUllHTFmSnQonPpOta hanrHVY; FYLfGGA;! w5IPiHM3;c91Pdagi Oedine z5TC;mere gha1RYna milegi doDGG;babweOmermann teleFT9;! GP7anCI9;bHN6gBAA;aSeQoOuge l8M3;ngnanhHJYu O;dF6ZenlHJX;j8M0ng O;he,yi sH35;ng Po O;liFZEwH2JziEVT;weiHLYyimPzO;h92TiFBX;i8ou;aland65HbGdd,enat 76KitgAIBlda YnVppGTKrQtOus;aOtelka7IJ;! reticuHLT;kFUJmelo–fraenkel seFDDoO; P-OdGJQzeroATN;knowledge pGUNpointE9Asum HF4widthCP9;dark thirHOKesA4Ymo0XBtO;o the powe0KNwo;! and the art of motorcycle maintenG9DdayaGO2er61JiPoO;'s parad9VRbA;maxA5Nth;fDL9wiG4C;f,zisław beks7H9;'3LQcYdieGONgreXhWiVkTlCXVmbAn11Kpatista army of national libeHQBrQtPwe asD2KyOzie beeHN9;ed bin sultan6MFn mFU9;anHG2o6F8;aOdBJV; OgoGVZ;l6UJtinBF5; Oir naGPQk wylGI6;bEXZpeHCVstaBH1zCVA;bBWFre;a99Ei hawaHTFn mccla9UM;b,us; WhQk O;and miri make a porH1Wde la rocGJ5rBT8snyderO;!'s justiTB; Pary O;goEZYleFE7qu9SQtaCR7;braHCEeQgPhadIki8laHCPstone is gonna beGJGwO;iGXEooHJ4;aEJRilGK9;dErHMQ;efr2taCR2;lDLXtB7B;naHPQsEX5; 32a27e1Sg1Ri1Qm1Pn1Oo0GuUvPōkOūrH1F;ai,o hikaHBM;ePonne O;d5F5m3PNorGUWstrahoGPQ;s Ptte O;mim5GGnicoleE6R;bissouHM6montaHQ1;a07en woo-DANg04i 03ji oku7ORkZlYmXnVppHRKrTsRta4K9vPyu hakusGOZzuO;!ru han8VT;!aO;l noah haAFTn shankar raGM5;aku mae6SEuO;f demHPZke 4T8;i Ot;andropGS8bezmenGS8gagE6Clowe70MoBTG;gOn1; GLRblH9A;e nikHC5i's cG51; bryEAQe,ia tymoGPP;aHTYiOon; O-FC3o miETO;kajiOtsu8EF;!uG;horHR4i0U0m1CW;a545oslavO; Oia;partisaNwaHRE; mi8N2n O;dF4ZshikHHX;-0Ua0Tda,el roD42g0Qj8TRko0Oland0Mm kippur0Lna0Ko0Fr0As06tam ottolengHGVuPwO;amushi pDTUeri museveHIX; 03'02nUpoHINr TsStO;h of75PubeO;! O-GNBr;creator GIOkiHI0mGEBpremiHDXreOtv;d,wiHP8;ef al-obaidHDSsef kerkoH9G;highHRZlie in aprH5Z; yuh-D2Man nowzar3VKgO; Q'sDNGboy never broke70Qer Ohoe7U2;dryasOfANN;! impactAPL;aQdADEearth creatHI1fPlady andG7Wmone2JTroJs1KKtO;hEQ0urHIV;orEVJrankeGTD;dult0XYvBQH;ll never walk8AFre so va4ve got FRT;are my0BIdon't mess with the z7IAquiz48Xshall not steMwere never really G0R;emite8ZGhiPuO;ga no BDFke id8DF;!hiOnori kitaHR4tsugu matsuoGXN;de suGPHro togHG8;denis ug9ZMgos lanthimHKEkPuO; ni kake8S6b8R3; FLIshireO;! O;and the huHMQpudH6BtGAX; Pk su64Fn O;eu3KUse-HIL;ah-4in-HDUjae75Mseu0CyO;eon5NKoung-O;chFQLj4; of the A2Xtan nEL3;! w9;a Oi viDNM;h978sald1I8; OhaHKI;k6XJoGZQtaHGI;aPi OuHSD;aditya95UbDF4;! sutras of patanjaHIX;ne wisH9OsoFMT;kai wFP2yo HKC;gwie malms73Gw mH66;ca,ir; sunCRRd880fy,k yGO9n and ESMtzhak rGNV; H1XgdrA42;a00ezDh ZkaterinF91llowWm5nVoSrRsOti; OhHCRterday and0CA;dOmiD2V;ay,iHJW;ba H7Jev1sinia pestF; jin-gGUJm1nO; saOgj78Tmi G82;ng-GMU; pH2Nnefer of vengAZQ; PjacketDNHkDZ2stone O;cal4U2n8YE;e8TJfEUBj923rHMIvests 9AN;jawaani hai dee8NYrishta kya kehlatB6Q;h yeah yeaF88r Ost,t;without a BZIzeHFU;cht HAVh0Gir lapHOZk0Cl0Bm06nZoYphet kotH99rWsQyOz5I;a Ooi kusaHJR;d45StouEI8;en-GUWh SminQser arafHD3uO;jirō oG8YkO;e,uni shGUY; Oe bl43O;ag5JJmiHIE;cH7PrajCAT;a shahiHF7ichin bitchDN5oslav O;amosGPSthe4MN; GTJi;deSgQis varoufG11keePniO;!ck biGNP;! d920; Oon,tEO7;di-pertuan aCRDgu5TQmi;reG8ZxO;! DVH;aOi gautHNXl,nayaDDX;d64Bguchi-1KFha QtO;a no or6QIoO; GXB-EAI;cG9Hm5WI;e FJStaGAT;!ov dzhuga6IDuO;lt,tsPzaO;! kiwaHIR;!k;tzHIIwG78ya O;abdul-mateeH6Rkh1;cOtu mamá tambi8K8;hromoCMDombinHAE; window FS3-0Ea09box06co05e01f00hZiTlSmRno7MGoQqc,tPuanza8v3CRxxOzibHMZ;!t4HRx;c,uFSG;chitl1PYlo maridueBQTr H6G;as,l; BFArFU; R'1aPnjiangOongEFB;! internment4AI; dF22ng5T2oO; zh1lin show5ZKmi;jinpingOmingENF;! th467;amHG5erdan shaqiHMCosa GYS;ce,iFCU;noPon,rO;ox,xesGRD;bladeFG6g90Yn,phoO;bAn;de,m;! O;cloud gaGSDgame Oo6series x and series s,wireless 47I;paHOZsHHQ;bi a9WTmGLFnRviO;! Per O;d791wB6O;heGQ3siGKD;der berkG1Athan gHAO;fFM6m5rayO;! crystallHJC;a7Xe62h4Ti1YjD8Vkrp in ciKSladimir CBo0Dps 89Rr03u00weRyOładysław szpiEC0;att PcOnonna juFDMoGS3siwyg,veHF7;k godCNElef 797;eaFPHrEGI;! O;championB6Bh2V1intercontinentCBBnTrawQsPuniOwomen's tS;ted stateH1OversCBA;mackdownOtuHHC;! O;tOwomen'H1L;ag team H1L;eOxt;tFW9w year'921; P-tang9YJhanOnmi mosaBZKthering90MxA;! institute of viCQV;a3OMc8MQzeB3P;aVeRiPoO;cłHECught DKK;ght OtFQQ;brEVMfly0;ckPstlemaniaO;! back8VR; of the O-it r437;rms3GEt3GF;ng3XCth of O;m1the tiE7V;bZFjGLCk84Ml11m0Wn0To0OrOunded kneeECV;cestershire0Md0Kk0GldPmOzel gummH6W;!ho7; P's OomHB4;columbian exCOLend harGH2faHL7stronge0F0;b09ch07darts FSSe06giviC9Wh04m03of 01p00raZseriesYtWwO;arQide Oonder ring stardH47;fund for B49webO;! consorERB;! O;iOz;! cD6iO;! Oi;byGXHcD4inE3P;ourismCAFrO;adeEJBiED1;! of pGYI;lly H0OpidY;oA6QrofessionalEN5;tF00warcraftO;! cBYZ;ap,usHOY;appinessAT2eO;althEJ3ritage 8LG;conomic f7T8nergy supply and consu2HA;ampionshipOesH0F; wGG1s in wDCO;ankPlitzO; chesH0C;! gH5X; breakdown FEVers' paBBHinOweek and wG1;' moHMGg O;meDPRtiO;me,tleC7O; cFR3pGZ2s O;bubble up like soda pGVPper minuH;! DZH;dPlO;ly mamEK4worthsCAG;peF31row CXEs6K9y O;allAVVgFG5haO;rre7GMy3; ji7UJderOg karVD; OlHOCsAJGwallG91;egg prioGWYgDSSwEAS;an oRbH9HenO; P's O-are-wonderful ESN;empowerGXTrFGAsuffFJ8;and children3OSof theFCXt77X;f the b662n tGVB;fPverO;hamGQOi6;! R's QdGYFeGO5gang Oman 1E6rama986wBKW;amadeus mozaHNSpOvaAMG;auHEDetFDJuJ;laHJSra4;aHI5cGEThaC; haCN7-fi2GcGCFde2Fe2Efe of aHN4i2Dki2Cl0Nm 0MnZon,pHBSreWsVtRves of henryHE3zO; khDH0ardOkHKXzHJO;iAACs of O;theGAAwaverly4YS; FABan sulaG3LchQhOold pil791; Oania somn4IFin tempG3QnailVA;a little help from my9KSgreat power comes greatBYTtDRN; trials in the early modern8E4-CJUc9SFer,ing 6DP;cons4e man's grandcB6Zh EYDsam ben yeE4RtCSP; 2DDg86LlessOsDHO;! O;access8YJpower 2DB;aFT6chester08dZf121gXkleWniSona rydH5Dr9sQterOxDJ1; O's EQH;olG05paH6Fs0TRw9;ome s8XVton O;chCDHduGOO;ePnBFIpegO;! jeHIR; O-the-08F;ha99Tmadikizela-m45E;rHMCvossCAL; chHM9dHJPnutC6Es O;haC9EofHHY; VhoGJWmiCowPsO;cal99Zor GBV; H7Os O;ins6A6mQnPp9QQr48GsOup7HQvGNKxp;eFLGubsystem for2FC;otepHIJt;eOovie203;!d8I;pH1Mt98X;! O;mysteA9OrFNY;hGM9wenFYW; wheHE0bur s1Bco1Ad15f13helm11lSmRsonPtO; GJRsDIU; O'sH3N;bethIphE9I; hosEQMer valderC69; 0S-o'-the-wiFP7a282em0RiQowGGAyO; O'sGF1s GCR;brC9QwonGR9;amPe OsB4Z;gaH0TneGPE; P-adolphe bougueEC6s O;cG3Tgrand prixE6NsH5S;a0Jb0Hc0Gd0Fewart gladsGESf0Dg0Bh08i06j02l01mYpVrUsStPwOzabGR4;alH5GestmoBW7ilberfFIGordGCMyl0;ePhe OynF9S;c6KJsiG6H;cumseh s395ll;haOtuart-hCF4;kespeaBtn0;andolph9ATehnquiHIQoBUT;ePittCZXoO;o7weC;nn,rry33QtFBU;aPcF7WoO;nc9NMrrF;kepeace thackerKpoH7L;ane c0UBindsay gASDuther BFXyon mackenziFRW;aOennings bBC4oyHL0;ckson hEFVmesO;! sO;idF;iOv; H1Li H1L;aPenryB3LoOuHLR;ld5ward taFQ6;in3rtD8D;iHD4oldOuarneB;i8m1;aulBGJichDOKrO;aGKBiedk4;anCS8eva6;aFKAhester m542laHHB;aOlaGMY;lH4Err;badHIYustin0PH; dafoeHEP-alexander6NQ;arGNLeALCfQge0pProHDXsOyunDKG;asGJ4h1GMmi6DEuccess spoil rock hunter?;aGNOouFRK;erre6RQorH; Oina6NL;canG0Uke8EMmohnGMPrGKFscHHZ;ord bri6XYrO;ed 76Gied zaG9S; PcaOebeeHHRfiB;rd5BBtt0;bPhuH4NtuB7Gwild O;cGTPweHHO;ill hickHBPo9;!xon signed-ran1G2;miH2VoHL7;!feHH5leaksE2Xmedia731pE8FsoBVI;! u;nerH1Bsel awc; a5MNvi6;! protected O;acH1As4D2;-mF9Ua0Re0GiToPy O;him?,women HEW; Q's Pis,le Oopi goE70re8HI;foodsARWlotta8YK;afraid of virginia woolf?,minding the mint?,neA76the bosAVT;framed roger3HUkilled captain alex?,model list of essential medicH7Nwants to be a millionairFEP;le my guitar gently weeGUZpsnade4XSrlpool 09s07tO;ePney O;cuAU3hCDI; Q-PhAQFsOy4BX;nakeGDKpaceDRF;b8Q2tail072;a00bZcYdDIKelephant giftF07fWgenocideE7RhoTmF9InSpRrQsPtO;ig0raHBU;outh afrGVDtar H7GupreBNP;h7O9oHIN;ap0eGQMhosphorus munG3KoGFE;aG3NoiHIL;le,useO;! O;chiefCU3doHH6farm 8DZ;lOox;ag,igHH1;hEH1liffs of dE2L;l2CZoy FPQ;mGV1nglo-saxon protest4WT;kOperQBtZL;eyFYWy;cG2GgFUO;atXeUn SreOy; O's wallQ-to-be-bornHJ8;eagles daBis everybodPthe O;crawdads H8Gwild things aB;y?;callsQ4hopeFYSmarnie was tFROnature calls with helen miALBtheO; camellia bl9LJy see D;in,l of O;fortune and8QPtO;h8R0iHJI;!ston8UM;le8OBrton school of the university5QLtO; P's OabouFYBsaGEX;eating gilbert g0WCmy linFDOwrong with secretaryBIT;a wonderfulHI0happened to0HPlies benFFZremains of edith fAQJwO;e do in the shF0Pomen waH34; 1C're the m445a19b10ch0Zdding 0Ye0Uhrm82Li0Sl0NmbleyDMQn0Fr0BsPtOwoHFC; lDZSlaHFHr29I; 06ley05sHITtO; Xboro bap1GCern Pinghouse electr1MXjHFNliHJ2minster O;aAPOscEYU;aUblHJMcSdB1SeRghaHF0n3CQphFXLr9UUsQuniPwO;aCorHHU;on,tH68;aFI8cFKW;soteriGRFuGRV;aOulH5W;n2pe;sAtG2ZuCVE;afFRTbRcAJVendDIEgermanQindiesPmemphis4X5papua national0LAsOvC41y3R6;ideHI3uAJO;! cEZA;icGTAy;aGIKeO;ngalOrl4;! state electricity distribu2B9; snEROaF0I;a37JbAYXcPmanGTMstOweG84;rE5QuH6P;ha7R6rGAH;ewolQnOwoGNZ;er heOher von8LV;isGIYrzogHC4;f,ves wi5V7;dOtworth H9Nyen gab970;elSiQyO; O's;ca212monBL2ricHG9wiFS3; Oe maAPBgo;deng61Cmclendon-covE; meldrH38l O;andEGIpiBCL;come to ma4OOfareF10lPsh OterweHFD;c353laGQWpeGOS; to hell6JAePingtonOs farG6K;! paranormM;rm1sleyFZV;bullEA8ghtOm7SV; 8GXed arithmetic me1lifting fairy kim bok8FJ;kOn,z0;end Ply shōnen O;juFO5m2K9;at bernie9JXblockb475;anniversaLcrasEOG;at,sler adult intelligenceEFO; QasBQ9cHEYdGM4gl,hoH8UkHEEley revoB72os,p,rtc,sPtoO;on,rG64;itDUXoDPU;apB7SbH1cSdeRf1GThosting438ofDNSpaH04sO;craCYOervO;erOiHH5;! directoEPH;siGX8vGQ8;oBZVraCGW;k7U2pons of the vietnamGBJr H9JsItherO; OingX4;forecGOYreH5Lu5IL;are SbRdidn't start th94VgotQnePsOthreeATSwere s14M;hall fight on the beaHG6ummon the89F;ed to do sometDX2ver l4KM; mWYta get out of this4SZ;ar8SCought a4UW;lad7I3tG8L;bi-saFC8coE84d24ff23g21hhabiH83iting for godHHWk1Yl1Amiqa gabFC8n11r0Bs04tWvTyPzO;e,i8K0;anDRIbackEW2faHDPlon jeBUJmo,ne Ov,ward013;bDH4gBJVhenC39knHEFmard7neD69roPthieF77wO;aAJ1iFQZ;geHFFonE;!eO; Ol9GQnuHBJ–particle dCV6;eqF7VfuH28interfG1B;chTerPfoHF1kin tudorD77tO;o,pHD3s f8B4; Obo2R6fallG1Igat6UVmC50ship 5QFwHFT;bDCXcPma74BpOresouETUscarFOP;olCZNuriDH6;ons7L9yc7; Om5os;doHDXthe5M5;aFBRhingQpPsily kandiGD9teO; FEWwater1DW;!-G16; mEVLton O;capitaHEWfGASirFWXmOwizGNK;etroOoB58;!pF0M;! 05c9LZd04ez2QCf03gGFWhammer age of sigm9lo02ner00pGKGrVsQtPwickO; dGK4sDD7;!ime sexualHEA; of the RawO;! O;pactOup8GH;! invasion of cAT6;rHFOt1WZ;ant Ren PingO; states87Ft2;bOcDIJeFLOjefDD9mo2oH3Os1W2zev2;e3ZRufDTF;ca3CToCIV; OmE44;animationGY3mBR;ck,rdADH;ar4raHGC; BPQrobe malH1A;and37UcBJQforE9QhaG2Yin TmEUZoOtG1P;f the Pn O;druHD5teDSG;austrianC1firstPleague of cambrH4WsOthirdP;ixthOpanishC0; coaliHBU;dOheG7X;arfGWJonbHG6;dRgPkelCLPnO;acry ransomwareDQCseeG02; Oan4SX;leehGVCyiDZQ;aQerO;erOing jG2QleiGET; above the sea of fGQRsDJB; OviH1W;naGsyk3ven7OC;d09esF9RgrESFk08l02maHG2nFA1purgisD54rDtOz3X1; Yer Qher Pon Oz;faG7Bg69C;pp,von brauchiECI;bTcronkiHdur1HFhiCkSlAPHmQoBWSpPralDS1sOu1U6;coH6VmiGXS;aFN4idGN5;atthGTWcmFLWoO;dInF3C;o9SEruCQ2;eOreCDW;ck0njDJV;disneyOwhiCMV;! O;a2U8piFK8studios motionAX8wHE3; HBR-e,aQis PonApaperCL1s and b0GSy O;cGGOweHC7;and fuE3OsF3D;by,cOrGI4;e OhA;and gromHBPfardEB1hANIs8Q5; thCXPer hay3m1;en,orf O;astoriaHB4eCR9;anHDBeOizH2S; O-on-l1;fores5VYisH88; tYOner Oon tH03yu;gGWRmouG;e2AQle houseHEI;dOeE24;esdon4SOy wachtI; 7Ra5NcaHCRe4Ff4Ega4Dhs,i11l0Umware0SoWpnEDVrVsUtDGFulRyOáclav h7DOõ nguyên giáp;aPbO;oGXOz kaF79;cheslav molotGDGsa;canPfpeJgaOk1tuBva;r lEXLte; centaGV7oHCA;dc free video 822s vintorH7O;bo,chH0Fedefort CH7il;ca0Hd0GguE0Eice 0Djvo5KGlZmiHF0nVoUrSwIxRyO;ageOeuFD2nich manuDKV; HEKr Os of christopher coCBA;golden C2YpFCG; mE29el;onoi9KZtO;ex,igeH40;dooBBBt; Petta03ItaO;e9WVze burfiGPV;dOmiH5Jneumann F6G;utH2U;atile organic co3DBbeH02can00gYkswagenTleyGH4odymyr ze1WJtPvoO;! 7Y6;!aOesEE6r2;geOiB;! O;divFU3piFJ0;! O;beDTAemissions H8KgQjFZHpPtO;igu1ouarDUM;assGZToH5J;oGJEroGVT;aOoEEU;! gUX;ic explosivGK1o;c85MoOtyH28;f Over GQ6;aFMQvADH;afo6ka;lOtionalCPW; rGMSoHBCs;! O;esA21wATJ;adPc medOog;ia GT8; RiO;mir OvostH4J;harkCNWkramnG8Vlen4nabokGC8p8GMtGIEzO;elG9UhirinoFPS;and FG9the imp25Q;acomcFIEb2Yc2Ad23e1Ug1Tjay1Rk1Jl1GmFZBn13ol11perC1Mr0Es05tVvPzO; mE17sHD5; riF74a la vidaSeRiO;an PenOsG60; lDPRne weG5T;caH51vFRZ;k oberDM0nH1D;! or death and all his9AV;aRel6WXiliG1MoPruviOtorio de 5VX;anH8Rus; Or belGLG;corlATNg44P; sackville-HA0lQminO;! O;a,c,d,e,k;iOy zdorovetskiy; Ok butAAXy mykolG9C;klitschGLL;aTcoSegrádGUQhE1ZiQsel koFF0taGual Owanathan aEZK;eGZJnGQDsO;nHAWtudio FG3yFEK;ble ES4gothOt mallorcaDGD;icF97s;siH6MuGWO; requirements for OkhapaACH;indianOunited statesO; citizeN;a08giVtuOustotM;alQeO;! O;etBUAsign044; ObGDZiEFM;l1mPnetwork cC1Lprivate OrETUwHBB;nFJGseFBF;acG9EeDE8;l ZnO; ViO;aOe efiGty;! O-GG0;beach RfFOAgiuffBhQmPtechOvalleDJOwooGHS;! sCJA;a1WLckEOC;alas mccaDK2ey;np6IXsCJ7;aPgOiGAFmE00of the rAHQrF9G;alCCRroGU1;tECUuCOO;ablGSFeaFC2van dijk;l Ot k29N;hemorrhagicAYDvectorEAW;a9ULet Oin;everGIVjessGJS; dA50ayaZceReQg rhGB7laH8AnOícius júAP3;ie Oy testaverFZR;jHA0paFAB;eth sreeniv6AYssa ER1; SntO; Oe m5EE;caDRQd'onofrGA8gPkOpFJQvan goH5Q;artheEBUoG2N;alH3BigF3V;caH50gOlomb4QWm0NZneGOUoFHAstaERCv4RByFJ9;illOuarFBU;!ig1; vidheya BVPk damodar savAQT;laOniD;ge Orreal A6I;ofB7TpeGI6roadshowATH;ingTraPtor O;durasHC4frankl,orbCTHtsDK9yanukovyH03;mOnt maH8V; OarkuA8I;bEH5saOvedG0D;mvGX8rabhH07; Os;aGTPeQ2; Oanagar8BV;an4XMdever68OfH4YkDZ3mallGJBsethupathiH4X;enère0JAgo morFNP;nnaUtO; co8namO;! Pese O;alF77laGJVpeGHR;naG54warO;! cO;asualH67;! O;new year'sFZHphilharmFQD;eoPkun quisH3RyO;a bal1ut jammwM; OdGUQt4A0;editing FVWfiESMgameOho05Mkilled the radio ANVnEMSon2IC;! O;c8KIdevelopOg9FQiF29publiFR2;er,meGUP; 08e05hy DIMia faGSCkZtorO; TiO;aOoD; O's secrH78nA7X;and albert7YSbE4EcPde angelFfFPZjH5MpOso8t3TJwoHAY;e4XFrinc2NT;oren 65BroH9R;bRdavis haH38emmanuel ii8Yga6A8huFZ0lustG6XmQoladiERQvPwO;ebH0MiFFU;escoFDHykhryH7H;aGXHos3;orGSUuoGI6;ers Si Qy O;cristina2E7kOmAHB;au132rieGL3;la965peO;pperBZPteGP3;mDE8wE7A; Pnte O;cFXFfeGAMluqGYS;mDY1presid9IV;fPmOreG3V;arH0CignGBoDKX;a6DYliJ;er,raH5X; c3SM; cFSUb stutt7M7l wolfsERC;ctor 0Ud0Se0Qg0Khicle 0Hl0Dn06rRsOtrimaG9Lvo;na vulGEPpO;aOer lyH6A;!si1;a00cingetorGQCizon CG0khovna 9U5mYnWonUsStOy hi8N;ebraQiO;cal Ogo;b9f8MV;l column,te;aH98ionO; cGFQs of bladWG;a,ica O;cFIYlaGBImaH7XveG;aOe F2B; bC23cula424;iFOVoO;nt,uGRT; O-eGGScryF5K;f0AGlyGS2mEZZ;eSiRkat prabEH1lafaxi6mo,n9G2turQusO; OtraGHU;de miH10fly6M7of willenABHwiFJ7;e3QBi EEG;ceCVYs2;to,zuelaO;!n0ZG;ik3JSma dC6VociQvetO;! revolO;uH52v0;raGO5ty;id3UWregistration plateO;!s of O;euGI2tBYZ;aReOgietC9V;miHtaO;ble4AMrianismO;! EMI;!niGZRs O;golden knF1OpGXGvaG8Y;p,rO;-zaaGapp1;aOic7ZW;nH9Gs;calculus identiH3ZgBQIpEU7sC3D;a1Qc1Kdim khamuttski9IFg1Iishno devi1Gj1Fkeel saEZRl0Tmpire0Qn05por04rWsRtQuO;dG3ZxO;-le-vicEPZhall moDMT; id3UFicaEER;cQec8EKilOopreFSYsarFQH;iy lomaFJWopiH99y O;arkhipG7DstB06;o da 5T1ulO;arCR2itF;anTg vikeD50iQuO;du kaavaleDXLn O;d1J3tDX9;aOcella zoster9U1eties of c860;ble-frequencyGC8nO;ce,t creuBGB;aGZAgianO; g7RWs; ERNwaGXR; 05a04c00dWessa SgRiPnOtabEIFuaG79;aDQMes A92;lla Oshing gradientDSCtH8G;fC4UiH7OsG75;elFuard-GBU;bGNUcDL2fQhudCNVkD5TlPmarcGLAparadFrOwiFHX;ay,ed9CC;achEen80J;erliGQ0iF7G;alQerO;bilt Opump rFRJ;faFZOunFQ0; sa91Ts;e6LIouverO;! O;canFMRiO;nGVSsH14;diGSTm;allen radiation DGPdPhOjH0FmoE0SwiEQ5;alD5LuGRO;arkholH7Ver waalsF48;! O;hunterANPwO;ee8YL; kiFUGeZhYimGWGkVlSorRproaHsalva maneuv0tQue-added0L1ve PérieO; pécr7W0n ismaël;cFQDiH78;er 0K0teri bottH7R;aGRFieEJS;aPeO;tH82y of theAJR;bhbhaiFS9d4W3;nF1RyrO;ae,iO;aEXKe;alH73eGLG;dictoGQKnSrO;iOy legasG60;aPe O;bert8WEhE1Kle2pacDSZsolanH7F; goCQ5n and the city of a thousand plaCDL;cQtinO;a Oe8LAo2H5;allegra de f6KAsFIBtereshFD1;e elec3ZWiaO;! A1Zn3J;iralongH2rayaGSM;! templeO;! stamCJ9;inaOusA0;!l lu166;ation94JcinQhirawit chivaarGYVuum O;clCKFpermOtuF8Y;eaE6FitEHK;aH2MeO;! O;adverse event reportF8DhesitD0R;niDHBs153;for vendFS5sO;iGM9p4OD;-8YAaG5Lb5Yc5Wd5Uefa5Of5Ng5Mh5Lk5Gl55m4Yn10p0Tr0DsYtQwe boCyPzOğur şah4;bek07Fi,u3TU; scuFTBghurC0I;aSeRilitQkarsh ambu5GOopArDXKsuro-bu6tarO; pradeshOakAOI;! legislative 3EM;arELVy; GD1rD;da hika866hO;! O;jaBE7monoliGOLutes39S; 01aYbWc trojan5ZRd AH1eShRl Qman khawaFYVs Otaše;aFF9cOjE3RlibertyCFGmonBNX;aG1DoD56;chGIJleagueGCM;anGBDuaA; QnH2Qr O;aFTRdatagramGNEinterfaceOsH5J;! GLO;case14Qyour illusionFW3;! O-c;flashG9UhBNPon-the-FUH;! Pge share of Oin boET1;o50Oweb browseH48;nFCXtQK;aFXCchauC63;aZbaVdu,eUho kekk5RKiSlRolaD74sPtica dioiFV1uOvashi rau1CK;guayEZYk,sei yatsuG;aEGYodeoxycholCYKula O;andGGYvon der ley5;! shor0UA; geGX1cH3Eel,jah fE3Zm and thummGJWnaO;ry tract7INti2;a,mAthG;in le vFOAnO; OiE8Q;arGZVd323legeH1YmOoutfFDLplF13rail transiDJQ;ey0ytEMG;lQnO;iumOus;! g9BT; DKHicGG1;anishaGUJn,pPstateH1JtoOwoH1M;n sincDU1wn fuG5A;eOsaH56;na,r O;eaPpOweP;aleCFDeninsula of m5NC;st DOG;a3Kbreakable kimmy sc9PWc3Fd38e36f34guE5ViVknown pleasFA8manned TobtaiBM6rRsQtiO;l 9G0tled O;captain america sequIdeadpool H0Yfifth indiana jones H0YgoosE5Dmario H0Y;a6imulatedBZOolved9YJp8BXupervi0AG;avel6ZVeal O;eFJNt92L;aOcombat aO;eri1YG;c2Tdentified flying4EVf2Ngi6lE7XmGG1n2Mon 2Iq2HswF4Nt0KversQxO;! O-liG6U;sE88tiH54;al0City O;atD0Uc7B3of O;a07b05c02d8BLe01f370g00hBY7illinois urbana-ch8T9kansH54loFKFmWnUoxFV5pTsStQutGV8vBQ4wO;aOisconsin–mESV;sCYCtE54;exas at0EYoO;kGB3rA4L;outhern c8D8t3PBy07C;arFen7KLittsAV0;ew so3KWoO;rth carolina at chapel E71tre SK;aQel6XFiO;aGWTchFS4nnesoH58ssO;i968ouH0V;n9VWssachusetts amherH1J;eCFHlasgH2L;dA8KxGQU;aPhBC7iOolorado bouEMU;ncin7BF;l8CXmE5B;olAKriO;stH3Wtish coluD5C;lOr21NuBSF;abamaOb2SE;! in huntsvilleCB9; OiGV1ly uniqueAJW;asynchronous receiver-tr3LPbasic i3M3classicAO1declaration9KLhealth2ZAmQpPstudios Otransverse mercator cCL0;f36Bh8YX;iF94lug and GR8roduc7D0;usicGLZ; 1Jar1GePy O;chEVZt7WI; the right rB5WdO; OhealthGLV;a19f18iBEAkingdom14nations10parcelE33ruG0MstatesO;! O;a0Ub0Tc0Od0Ke0Jf0Ihous0Hin0Dm08na03oYpVsQtwPvD41wO;a6Q1omen's national sEKF;entyYoY;ePoccer0LEpO;aEK5e6BC;cretOnaH; sE2Wary of O;dDJAsEMM;ostalE2Tresidential O;elFWEline ofO; succEX1;f aRne-O;dPhundredO;-dO;ollar DLG;l,meFCJ;tional s0KvO;al5VAyO;! O;oD4MsealO; selection and7PYs;arRen's national QiO;dterm3IQlitary Onor outlyingG1K;a5V5casualties 8P1;baskeFXDsEJS;ine6YZshalsE2C;fluenza statistics by flu C08telligenceQvO;asion of Oolvement in regimA07;greDH5panaGVN; c9JC;e0KFingAAG;ederal executive depar992ooEXA;lectoralFKVmbargo against cuGKN;eOoEJA;clarationB9Ppartment of O;dDIIhOjGXYsELUthe treasuL;ealth and humanFOOomeland 7HC;apitH2GensusDT2hained consuRoOustomary72H;ast2BJnO;gGE0sO;tiD1SuO;mer p7HZ;ill of9J7ullion dDCV;irEZ9rmOttorney ge901;edEFKyO;! O;a0KToD3Vr46HsU;! O;convention on the law of0WQeconomic and social83Qframework convention72XgePhuman rights83QpeaceA9TsO;ecurity83P;neral 3APo4VJ;! O;of PsO;pecialEFB;great britain andA2CtE0J;or hEIAruit FTA;irFMRrOustraliaGW7;ab OtD2I;e9S8rFQW;ianPy O;mGIPsEL5; universaFM0iGT1;of me29YtDK1;lo,ue selling proC21;bQcouncil of minDHIjaJo3OBpOsEL1tEIK;acific Oublic service9AU;bigCD8r94T;a1RRui5D3;corporated EM2terruptibl055;iQormO; resourceAHNed servicesC4Hs O;and insignia of the schut15Nof0A7;cation of Ped O;extensible firmwareEYZmodel9KVpaymentsEYZ;geFRZiD0K;ef,oO;deOrn;! subscripts and superscripGXS;ai3LVorgO;iv5oEKX;mployGBZscoOthical human experimentAY2;! intangible cultural heritage2H;eOrafted sports5WN;fADMrO; RgOta7wH0F;arGBUrO;aduate Oound948;deGOZeCDR;arAW4one 5WHprEKVsDSCthe silver 86O;annyRertaintyF3GhaQle Oontacted8LRut geGZX;bOsGYLtom's cFXJv6WH;en,uJ;ined me5O0rtGWV;! F0H; stubF6CbomberT8caBP4;aRberto Oineko7NJmag8GZp7;eGNPiO; Oi O;of iCZW; Pmi,r,yyad cO;aGTAonquest of hispCJH;musume pretty d5UNthuFO1;aanba2SCcerative colF7Tlu,m,st0tOu80W;imate VrO;aOon; hR-Qm1sBC5vOwide formaGX0;ioletOox;! iH0N–visible 1XO;high-definitio7JDwideBCI;d blu-rKiO;gh fF8N;customCQBfOmaDRXsFP0tensile06G;ate9EViA2R; Rg,iyoA1ArainOule7;ePian O;a9X7g1CShryvnAinsurgentC36laG9IpA98soviet B3L;! FUQ–natoBB4;dC1KindependenceGUIsingles8O8;tred8YIuru kenyatH1A;anGYYly bERDo humGJC;cBMKotGWI;! O;cReuropOnatGCGsuperGCM;a Oean GCT;conferenOleGCG;ceGCE;hGCBoDLCup winners'GCI;aOeEVYhamGUBo ki0;ciGU9loyESZy9ET; bOla brui461;rows0;aGWLba,erSisoftQlock39Us,untuO;! O;phFETveFBD;! O;conDJUmE6W;! eaGW5; A9Z-01SaY4biliGR2cY2eUXf–idf,gv,hCJiAHjx52CkGWZms GABntAGo5Sp-6CYr27s22t21u10v0Vw0BxEPPyOzu82Béa leoGQ1ýr,ā moG8Tết; 09cho braGOTe3D8ga,ler 05ne daGL1pWrOsonD7K;aTeSiRoO;nOsi6; 0W9e O;pGF8wi63K;an puG9VonCB5;ek E2Bse7BH; bEBLnnO; mathFANoGLC;eShOogGTM;oOus;idAM5n,onO;! O-G3G;haCW3rGOL; Q-GUHfaGZ7r34LsOwr97J; of OcEVP;prostitution in modern75TswGOQ;a and type b personalBHJi and type ii er3T1o n3ZQxxiG3C;hQjPpOrENKwCO2;erLosE;ames DLGoE35;o5YTunALDyn3;burDCCcoF9OjoGX3siHJwaG6N;eZiToO; R's compC4M-O;facPsO;p8W2t8WL;e,tor EHZ;and a halfGXObrothersAHAfatE4Nmules for sister saGrodeA4Ysteps from E2L;gG8LliRnQsted PtterO;! suspGCZ;mFRDpaGVPsiGPC; peaGPFkle1YD;ghtOo;! zone8AL;lPnty OrGKK;on097thousand leagues under01H;fth SveO; O-stepCMN;days ofGZ7grDSPminut3oPtribes O;cBCXof isGN6;'clock98XlympGO9;doGLTnGW5; Qb aOos,xq;nniversary FONwards winnersO; lCZ0;asaGMNg44XpaOtD9Y;rental guidelGM6trGYC;a0Nb0Lck0Kesday weGXMf0Jl0Gmb0Fn0Bp0ArTsQtPvaO;!lu,n4VT;ankhamGYBoCTSsi;caFU4keO;gee On7IJ;airm5syphilis6ZT;andGZ7bo03du8Q3in01kUmerGZAnQpPquFY9ritopsis dohrnGUUtleO;! rockEREs all the way 580;enEHNinCAJ;-based s4K2er QiO;ng Op,t4;pointBF3rGTY;b5KVclassicDNOsGI9;anaC9JeySiOmeG9Ws and caicDI5u;c EDZsh O;aPdelGVKinvasion of cy36LlOpeG50radio and televisionFH5wB51;aG73iG;ir2G1lEUE;! O;naFSAvG96;!g O;aCY4c35KmED1teGV6; c42VchaDSBencabFGCf1jGUQprG5Z;acEK8le,pence miCCR;dGgPisOnelFI7;!iaES6;stenOuskaCFA;! c0P6;bGU2lr;anER3ipPpa,sOum;a raceDLYi gabDSD;! mCG8;nel84VtD3U;er carG18man's stages of groupG6F;eOi,ularCG1; mEXFr3NG; tagovailFG5re7H6tha dé danaGGC; 4UVeokbokGGI;aQg G7Winghua EQVmc,uO;gumi ohGFAkihiGXUnOredureFP6shima EMDtomu86T;aGPVdeB;i ing-w5rO;! bomGF7domFU5;a1Ke11i09oXuPypO;oG5YtoAFX;die stG2YeTff7jGU3mRnajayaQsPth O;so0G3tGTE;s,ted platformEVJ;! rFCP;an capoHpO;et,iGO6; OcaGON;b82PdM2li3r3NO;ian bellisFT4jan YllXmsø,nWpStsk4BAubleRvo GMQyO; Oe s9WM;aiDK9bCX9dOeG42gaG6KkotsGDUpolama7E7;eFPPo9Q7; with theCPDd730;hic sta0C6icO; Pal Os;cycCSFsavanna79I;of BI1tFIN;!dCGS;!eyDH5faGWIs world F2I;hA39w9;a08b07c05dent04e03g00lZm6C1niWpUsPtiGHZvOxie ma0XW;aFLEikram srinivGX6;hQkeFC7taO;n OrAEU;and iseuEJWda cunFLUthDPN; strBCDa O;paytGX1yearG3R; hG4Ladv81Ile OoGNSpie 609uG;bottom GK6crown of acGX8ent8RMh,s7MK;dadPty O;college du816sBZP;! and tobaFL4;ateral95CobiH;eminalPlyceFE7onometrOun;ic8XCy; nAU8;!r,sH;!ineC8X;eratoG77ia O;helf0leigh 9NN;aGKNecaDOE;ge,lSngPssicOtAMI;!–jur2HM;leOular FUW;! O;iCABs4HT; of OwaB;arne cheyenneCQHmiANB;aYbXe Wha89KlGNSnUpEROvoQyO; OarGKS;anastDIVlFAVpaDNBsongz;h c3IFnARRr O;hoGLQla8RWmcFC9noGMFpOslGQ3;eaCFAhilO;iG6RliG6R;chGI3dyGVJt O;alexander-14Oba128gFZ9reznGST;oB9Htra3FXweC;linka0I3uED1;dsFOQsTtO; DHRy oO;f On the non-proliferation of nuclear w8U1;brest-lit5NXlPsèvr3tOv2R2;orde737riDK4;aus6ORisb2;on,ure O;isGOZplEML;b19c0Zd0TeDR0f0Rg0Qi0Njan0Mm0LnZpXudl j28DvPxamDWyOzo8C1;lor CSQv5ME;elSis O;bQfi9F2kPsEJIv1GTwO;alton ufoC4Qi5Z4;alaBI2elGV0;aDMOiFB2r6NI; Ping wilburFOClO;er's7YGing salesmanDFK;agF37m1; mFGSezoidOp FN2;!alB42;ceFGPsO; 06-04cendental01d99NfYgenderWh1M7iTlaGR5mission SnisFLGpoOsexuMubstaEA2y7B7;rtOse;! O;inG3HlayerO;! 79L;controlGCFelectron mic1RW;storPtO; authority of river F2Uion23G;! cEY9;! O;flG0JhFJF;e44Xigura1K6ormO;ationOerCQZ; mGBDal leadBD0; OiGLP;meditationOnuGPB;! BHU;neptunian44OpBCUsiberian O;orche2W5rD93;m1woO;m6KIrldBWO;!adGU9;!'sA29;lPnO; to bus1ingF7Bli6wrecksFGP; of0ZCer park DSZ;edy of the comFP9icA6X;alga746fic O;cF5JlGRQ;eRiO;ng3FUtional O;aG8Mchinese O;chBVXmA5O; uG5FmarkOr joe8WF;! FUH;eUhTi SkRtQy O;cALZletGQAmOpoD11wolfs2;cgCU6oBOK;atus logico-philosophD46or; andDWOmCCJ;lGJ9th2ZNwolGU6;eomalE8RtenberEVU; Pe elliECBrCGLy O;cD3RulDGJ;adF04cDFI;aGDZzonO;!spGQV; 48ast 9V1b43chigi FG2d3YeiF0Yfu,go,h3Xilet-bound hanako7AFk3Olue6m26n1Do1Bp14qGIKr0Ts0Pt0Iu0Bv09w03x01yO;! sGTDah willcFVFotOs \"r\" D;aOomi hidey7QE;! O;aWcUdynamic forceBZOfTgr ShiRjzBZOland cruiserQpG3GsPtOuzBZOyF9V;a5S5uESV; eF8DupG;! pCL5;aGT9gh4XWlFIM;eF8AyF9Q;jAD2ort3ZI;amLeliFIUorollaOroGR0;! cGAD; eF86lpGRL;ic mascu4BGoplasmO;a gondGPTosF;erPnO;es v04BsvFOS; Ps of bolO;ogGF3;brGBIh9GWof O;bCKAgGTQhanD27loF8Y;e Oino AH5;j9OQlo;cQhouNQker suleD5DlGRYrOssaint louverGGC; de OetteGD3i7EVmaGGQ;frF80sGC1;an,hO; PsO;cFWHtoneAB5;t581yourAI;alPo Otenham hotspurCWP;iv,w3G4; Ob0UWener7LJiE8H;dramaQeclipseOfertili3O6w9; ofO; theAC;! EHNraGLG;caQhiPliFSTs O;a coin to your witFTWbD19;ba,ro mifu6yuki moriAUV;! 5IS; bGJ0ah,chFZSiWnado VontoTpeFZVqGHEreRtPus,yO;! lanGLW;!oiseO;!shell30M;ntOy devitGAO; 6UHz;! O;fc,iDKLmaple leaCPJpearson GGKrapD6QsD3ZvanD33;aERRrEPW; Oi;amGKJbE2PkG6WspGLC; R-Qaz,herGR0kapı D9Dl55RoO;graphic prominGQ9logO;ical sorGSYy;down and bottom-up G80lB2J;bFGAchBUVgPhGEAof the O;laFU8poG34;ear challe24Eun; Ofa1naGKJtsGQ8;close for comG0Nold to dieDNN;es0Fg0Ei09sil08yO; Oa h22F;a04b02cuGBDd00fFQBgoZhaYiomGKFjERZkXlVmTpaDJErQsPtO;he landsCMUoEG9;coGJIhalhoDP4iriGELopEOF;anACXevo7IJiEXSoO;bOmo;biNiGKR;eGL4oO;nCB5wbrK;eung chiuOip;-wGGT;h1usDDQ;le,wk;ldwFQKn367;aOunG15;lt2nFTF;eOlaGO9;llFEQnFUD;bA9KwardO;! for bestDDGs;!lEYE; OcCC6;bQco2E8garGHAkPmoDKNsOtennFMW;ervEJStoGER;roGJKukoč;asG4PraGAR;a,hGCL; a6G5; 03a02bXer siESBiWmQoOyrF;kazu suDGNrrow OyukiQ2;never DWRx9X1;ie fra63PyO; OinnGNY;cQfuLhilfERJkiGNIlPmoOshC8Gtub8MEwi6AX;rrFN2ttoGR3;a8N3ee2P1;aldFIBho8; lahr5e; Ooy;of QraiderO;! O;ii,rel4XN;caecilia metGQUthe unknown 1C9; zdravkFVSsz schafernCR2to;a0Mb0Jc0Ad09f07g05h01kCURl00moZpVsRtykw0wO;aiGMZePilEZSolfO;!e;lGJRrn0;eQizeGKBker45BmDXHtO;oOuAPX;lBYEpAJN;guGlC72;ettyPidCA1rO;iGNMyGQ9;! O;and the heartbAJGdiGIZ;naF2YrGI9;aEXXe2WO;aQeFDJiddBNCoOulGQ4;llandOop0pp0;!er;nGGRrG9Syd5;rOuiL;av3e5;eFN5lFRHoOrDJ4u3EO;gEV1rd;alEel2TI;lancyPoOruiseGK2;nwKtt2urtenK;! G09'sO;! O;ghost reconQrainbow sixOsplinter A04the E9A;! O;ex901sDH2;! O;breakpFQQwil9R5;ak0ereG8YombadG3ArO;aG9CoO;kGFBokshi0;ckeC0Qnd jerryO;! O;fGJPinGM3;aVelG4Ei poGBLuTyoO;! OpFXR;broadcasting system9VAdecadGNOgQimperiHKmx,revANSsOtG55;kyGE6toOubway sarinD0C;ckE5Zry;hoEO9odfDND;gawa OsARY;ieQFshoguCG8;imura nuclear816mFM8;eeb jimG62o;d Orick FIT;fiF5XguC0ChOkohlheFLBm4MGphDCZruEAY;aOoCPK;berOyn3;koGF8;aRey magui9UTias QleFOYy O;fFQZhuGOPjGNNkebFRXleonardCAUonwuMEregD9FsOtuFWO;eb7PLtepGAC;lütFRBme7H4; catastrophAWHcGBV;catch a Pkill a mo2Q3love 7P7pimp a4JNtOyour8GG;ell the0A7hGK4;pEO1t76G;! equivaF9Y;a1Mbe1Jc1Idal lG8Yer1Hf1Eg18juana7RLk17l12m02nWoVpTraSshDAPtOz5ësG79;anOePYi1o ortAS1us wellGKD; FG4faCiOobF7Ms;cFQWumO;! d2ZW;miFBKna;pOu 70W;er 1O5i heFGN;beGOQ;aRkerPnitDo livramECOto b524y tO;ina's wondDN6oon3UF; OcGL2;beCtailor soldierGOT; OsGDN;aBEQd3KNfElo9Z9majoAPGsinDUOtuFW2weymG0X; 09b08eVoPurO;!iGAD; weFVZthO;y Oée ch2DC;bQdaFLGhuFRIlPmcvD19oOs1MKt553weGLR;lypG01munG5W;aurGMHeaL;atFMDot5R7; VlineQr,s O;higher education1PIsquareO;! FRJ; of Os of worldEZQ;aQhPnational8CZprehFCYstar trFLUthe OwCZR;evolutionary historyB21far fuGBJjames webb3CR;istoric i88ZumanB29;bolition of slavery and serfdG3ZncientEZM;banAEWcRdiF5Denough at 63Uformatting and storage buGLIin QmaEMKof con1IIperson 7W2sPtOvarianceBZLzo6;eGLKr6NB;eGFUigA3Z;auC0XcDBXtCG1;omplexiGI7ryDABuEQG;aGHLukFNA;aFVJbYcVdUferALKhSmRpoGNTrPsOtebGMC;c706tokeG96y2Z6;iGNPoO;bDFUthGHV;athFLUcFHSeaNinFS2;eideE3EoO;rDDWwaGM3;aG90raFPXuEE3;oPurryO;! performaGNA;nwKok;ePlakeDYVuO;cERSrtDA2;rners-lGFXv1; schweEO3aRdPia,lO; lindeG6Ey1D5;a Oe;cobham-heAO1swiD9W; teqK1pA;a sumE6BtGES; notaGC8erQht0M8raO;n petroEUHy O;reF7Ow9;! O;iFX2ki8laFPGshOwA4KzindA2Y;aGJRroG5X;a CD5fanO;i thieD92y O;dar0PLhad73Qt9W5yEV2; AW8ra del fueFBX;-tac-tFADkerC37onderoga-A6R;riDtO;! autonomous 5LSan O;buddEPBpeFU0; PmatE84nO;anme12Qgong sp6MWj4;carreBm57I;aHOe1Si16o0Bq0ArXuQwaites glaci0yPérèse of lis49Zích O;nhất hạDOVquảng đức;laFBFm7BJroGKV;cydidesTgSleRms G52nderQrPs spoke OtmoseDGC;kishibe r6CVzarathu2OH;good8LFingA; bKbolt and li7WFp406sAQ3;! air G8V;gGF1s of hindoFYJ;! 5ZS;aYeeQill0B1oO;ne of Ough the looking-g8T9;b7SAg8T8; Q's FDR-OsoGN1;bodyD6Zd8K3legged crGKXpO;hase electricG21oint field goM;colours9XDdQflavours cornetto9XDgorges7TWk13Dlaws of r3ANmOpercF9wise mEHK;en and a Oile island7Y7;baGI4little3CZ;ays OogCC6;gGL7of theEZP;cOsh1V0;e,iaN;! nordGNA;mUnTrQse who wish meFDYth,uO;ght9TNsandO; day9I9-yard sZG;!a birGB4iOoughbrGHZpeCYK;n oaken8ZBumO;!-based nucleB3K; mCMFg; yorFO8asOpson suY0son reuEUE; O-alexandre dumGMLin mcDGO;a08b07c06desiABOedFI3g05h00ian3AOjZkYleBDMmXneERRpVrUsStPvint9UKwolO;fe,sE;he PuO;chIll;aDQGtankBS0;aOoFD9;d3SVnG31;heGDHobert mal8AQ;aOeterf2CQikECUynF8E;i6rtE;aG4MeBC6iddledGANoBüGDC;inF6UretsG1A;a6e5MN;aQePoO;bb3mer-dFKF;arNnryFL8;denEDRrO;dy,rF;iGDOomGEX;arly7oGCUr6BM;angaESEeCTVrodie-sangGBV;nEYCqu519;a07baut cour6BYe06n02rRs O;boyGLMisOtoo shall FCU; OlandE55;eG1Wspinal tEL9t0K4us;dTtOuvananthap1IR;eenPy O;seconds6YJy9H9; Pth O;a8R2doG8D;colo4NPlCF6; P-O;pe8NXw8IA;battle of panipG79c8IHeDQ5genPno5REplague p6NRr8ICservileFFDwO;ay,orGK7;d0e9H6; lizzyFEQgQkO; CYKpadO;! C4;ivG5Zs fallGLL;l fellowFXKrryCNM;go Omi6;alcânAHXsFK7; 0Cer0Air 09l08mFni esw9o00rQsPta,y O;both die at0JJliGAJmight beZCshall not grow oGJX;aG6JeDsaloENW;aWeUmOopoGJC;al QiEUGoO; fisher scientE8Ibaric9Z1coup7electric Onuclear9Z1;c72OefDQ1g7GT;conductiPeO;xp7T4;on,viGEQ; will be6QN's something about mOm4sa5XK;aLiriGHY;nGCRpeut7X2vaGJ3; UbroF1ScE54doRfanis gekGKZloFU1rOsEZC;etical pE5Py of O;eBXf9MCmOr85O;iGH0ultiple intelligeGJX;rOsi1VS; Oe ro9FFicFPI;herzl,moCXF;jFJTr1UMv2wBPK;eGD0onious moFKE;fi98Vsatanic majesties reqGFA;aOpugal virkapadG5H;n adhigaaram ond7K8thon bunma824;aE7bD0cBUdAWeAGf9Sg8Xh88i7Mj7Fk73l69m5An4Ro4Jp3Tqu3Qr36s1Ut12u0Vv0NwTxSyOzomDJ3;ardbES9ePoung O;and the restC1Bindiana jonesEALpoG8St2OT;ar Ollow wallpC2A;of magical tA4Hwithout a santa c6D6; 1LH-fEARx;a08b,e06h01iXoOrong misF6I;lf among Dman VnderUrldO; P's O;biD32finest assassin gets reincarnated in another world as an aristocrG61;atFE4endsQfactB42is not9G8of the O;mOwG5G;arF6S; withFBS; y7V1ful wizard of A9H;in the house across the street from the girl in the2GOwho fell toE3H;ck4Fg90Yld QndOre,tFKYzarding world8Q4; Os of 8OP;in the wi7EErAT4;b9HPthornberrFCRwild GGU;eel GJYiOoFDA;stQteO; Ost kids u'042;l9N9man's buFQPstrDSU;le707;aOdding G21ekndFD5instei1CDll-tempered cla9AYst AOI;l3V6ther7I2;chowskFlUnderingE35r TsSterboyCFOy O;of PwO;ay DTNe weB;kGGMthe O;househAV3wiGFW;hington44YtT6;b5FXof the3Pwith g9XA;l street jCDZtO; disne6XEoN;aReQiPoO;ice DQKy4SX;car of diA3Xper FYUralA5P;lvet2R0nomC67rG8S;lhallI0mpire PnO;guardG14quisDPV;cE9IdiO;aGAOes in no GJC;ltimate TmbrellaSnPpD2DsO;os,ual 6BP;bearable Pcanny CL1dOforgivGF1;ertCJ4oi8;lightness of bB1Fweight of massiveF3O; a5AWs of cherBPJ;fFP5wF1Q;a0De08h01imeZoVrTuQwO;ilightBUUo O;jFAQpop3;b3doGH6rO;nOtl3; of the sAMNer3V;ans45Ueachery of imFTGiMoOuma7Q;op,uFVE;morrowFCRnight showPrD6werO; of the s98Uing87V;! starring jO;immy faEHRohnny caFXH; mDXIlessFA5sO;! E9Z;iQree PundO;erEDY;musketAATstoog5DZteBE0;ck70nPrO;dGE4ty-fathom 8MQ; man goeENTg Ok0ni8;about pGFLfrom17P;ll-taleRmpQnPrminaOstament of sister newAAAxas chain sawD6F;l,tGF8;derl8Z0oGGM;eGFBtGBV; hCND;le of Oming of the shrF58tami41Px colleG55;genFJDthe bamboo cuEJJ;a0Uc0Se0Mh0Hi0Bli0Am08now7TVo03p01tRuPwO;eFAOord of030;btle art of not giving a fuJn also12XpO;eriorF69r9XX;aUiToRrO;aPeet profiGE2oO;k3ngest sage with the weakest cF3W;ightGHCngDV4;ne Oog3rmlight arCXD;quA8NrGH7;g,ng;nPrOtion nightclub GDB;-spangled baCZ9li8ryC7C;d,ley parGDR;aOe6Longebob squarepantsGFOy who dumpeC91;nish p9UXrk04M;cial Rng of achiFK2pr3BEuO;nd OvenirGDY;and theCP6of O;mF33silGFG;d1NPnEON;ashing puOithsFB2urCEJ;mpENN;m shady 35Sts;lRmPsters of m5IKxO; million dollarGD5th sEGD;psons3HsO;! reASD;entFW1marO;ilEWP;aQiPoOrink nextBRF;o5PTp around the coFOI;eGG6p that died 1X4;dowOnnaraE7Jpe 9BGrd,w129;! 7H9s;aScret QeEZWlfish ge6ries fiB8FttDUCvenOx lives of college7VX; Oth 7CB;basic pRBhusbands of evelyn huF5N;d3DTgaFO3hF5Klife of A9Jof O;kESSnimh; 2XLrcDNP;arlet OhoolG1Worpi6MUreGE8;leEICpimpernI;ga of tanya the D6Gint's magic power is omnipoEKIlRnPrah jane3MFtanic Oxon2B;teCX2ve2IK;dOta clBFF;!lGHJ;isbury poisonGDYvaB1N;a06eXhythmC7ZiToQuO;mble in the juD8PnO;aF8AdoGE5;ad PckOlling stonDE0mance of luGDSne2CoGCSyal tenenbauGF9;ford7Fy horror p3D;not t0HVto el C82;ghteous Qme of the ancient marEIVsPte ofO; spFTI;e and fall of ziggy stardust and the spiders fromB1Zing of the shieldA4V;brDN7gem7YT;al Rd Pign of the supeF3Imains of theETApair 84KscuersO;! down uF9E;sOturt7;ea diving re78JlAGO;ghostb35RhousewivesO;! O;of Oultimate girls 82A;atlFUHbeverly hFZ9chesCD0m6W8new Oorange c371potomEEYsalt l0PG;je69PyCPF;nG4Zpe of the sabineB0Bv5;aPeen isF7PiO;ck brown fox jumps over the lazyFRAntessential quintup275;lity of nationFMGrrym5;a0Be08h07i04la02m's d45QoXrQtlCCCuO;rOssycat7QS;ge,suit of happyGFC;acGB6etTiQoO;claiEQ1diFPFmised n4T5tOu1EH;ocols of the elders of zi2égé;nceOsF3K; 9BYss O;and594swG4M;enESLty reckBWY;gu3interA2kémo18MliRssession of hannahGEGwerO; of Opuff7UM;nGDZtO;heFQV;cCW7tical1T5;ce beyond theOneGBTtENUyboy7LG; pG36;aFNIcPlOnk p66Uper at the gates of 8QKrate bK;grim's progFQWlars5JY;kwick 2A8ture of dorian A3J;antom of the22Ril silver64oenix – s kCBS;anutPmbrokeshire 79SntDR0rsOt girl of sakurasF7F;istence of CHEonal history of david copAAP; butter215sGDG;le blue eDKCndemicY5rOssion of the FYKtrick sta2Q;allItridgF77;a,bsoleteGB5ffUld man and09NmeTnSrvFASsmDK7ther RutOversGEXwlGE4;erPfERHlaO;st0OTw josey2VP; w6VU;guF8Aside of11HtA97w0A7;es who walk away from om8YTi2;gaGAZn;-BCCspFS5;a03eYflWiToQutcrackerO;! and the O;four r8DImousELL;rthPteAZ5vembO;erGAT; ECAm1;c5G4ghtOnth FVA; Omare beforeGFA;gwen stacy77FhGDPof; tO;odK;ighbourGFAon dFDUverRw Oxt karateD0D;batman3KDpoG3ErF3JscDURyorkO; timesOer;! best seller ANO;endingGE7s;ked Pme of the OnFAA;roGDHwiGB6;diG1NgGEE;a03e01iZoVuQyO;sterious Oth of sisy7F2;affair at stFJUisG80;mmy9A0nsEMPppetQrderOsicGAB; of roger acAFIbotO; diaG63; Os;christmas cGE3shGCN;dAKJnPody bluDBRrOst d39CtherlandETVuntain goaGAJ;e the mEX5ríg1tal i9K;keOsters are due on maple GB0umentsGCU;esF7Wy's pG3P;ckey mouseCAJdnight Oghty c5OZllion dollar homeFQVndy8Usfit of demon king569z;clDBDgospIsFDD;g,ntaAN5rchant of ve2IVtamorphEU4yerowitzO; sG5S;c05g03llorca4ZnYp of tiny perfectGBCrTsStrixOuritaF9D;! O;awaBMMonG1PreO;l4KSs3URvO;isCVWolAWO;k of zorG2Pque of the redEAXter and marga25B;bleGDTriage of figaG2OsQvelOy tyler moor7K;eOous misadventures of flap04Ws;tt3; vFCIhall O;mathers 329tuckP4; Qchurian candi698daloFXBy O;adventures of winnie the Osaints of newaGA6;poFUB;fromDXFin the high F38who O;killed don q9MXshot liberty v6WF;ic Onificent sBGW;f2Y5moDGD;hiEGUk; 9MOa0Ae04iWoQuO;cyOm6EX; ASJ–desi comedy 54D;bG3Tckdown se7I4nRrd of the09Kst QtG7Rud housePvO;e 85Din' spoonfEC4;! mGBJ;boF6Id434syFDSvC87;elAUEg O;and winding 8GBballG9NcaCdaG9R;brary of bC4Fes of locke lamoGfe TmSon Rttle PvO;es of DK3ing daylE69;mOprGCY;atch CODer3E0;g6X0ki8sleeps6J8;ehouse golF5Qits to1I4;aquatic with steve zissF55of O;david AWNpAO3;agueSft hand of75BgOnnon7Fsser key o0F4;end of Po O;batmanGB4gFV5mGB5;h6WEkEIMsleepy ho93Dthe blueFRUvox 9WRzO;elGBJorG1Q;! of extraordinary gentl0I9;mb lies down on broaDEInd before GDAst PteOwrence welk ARY; late show with james coFK2ness of the 53R;boy scoE7HdrDOGe7F8leRof QpPsamCU3wiO;sh,tch CL0;ictur6G;the mohFODusG98;gi2tter from your4VW;aYiOominsky GBY;d larCLQllVnPssing5L5tO;e 8WO;gOksF6B; P's Okiller chronF1Y;affF5Jm1s85P;a61Gin ye92Xof O;fightersOquDPJstateE1F;! xv;eGAZing of a sacrO;ed 0PY;pil sharm53Wrate kidDMQshmir3B;aTeRim henso15AoQuO;mp,ngleO;! AWI;e rogan2W7shua G0U;fferACDopardy FS0rry springeOsus rA4MtACD;r ARA;ckbox party CHQm,zz FUS;c07d06m05nWpcress 6E8rSslPtO; croEIYalian63;and Oe2J;of Owith bear gDAY;doctor moD2Igiant insFZ1;isFURonPregularO; at mag4D9s; Oy14P;gEMYsheF7M;betweeD8UcVdepenBLFfUheritance3N5k spoG86tPvisible O;gG6Ym1;eOouchaFOQ;lligenQrO;nOprFYF;atioB38shFOG;ce ofC67t iELG;ernal nFB9inity gauntlG8K;al,rediFOK;aginarium of doctor p3R1itXRportance of being ear90B;aten deities know only23MiGCIol6DK;e OkabFMW;age adventures of buckDA6roG7X;a04e02iZoSuO;dsoDIBmQnOrt D2I;chback of notre-OgZMt for red octob0;daGBW;!anFNN;bbG8AlRme depGCAneymooD8Cok up DP3rus hereEXYuOwl0B;nd of the bask72se O;in fata mor6WVof the O;deG7Orising9W4;idKlPocaustO;! in23C;i3owG9Vywood re3YJ;dden PeropFMSn98Lstory of the decline and fall of the8NAtO;c1SBman6V0;dungeon only i can eF8OwiFU7;iG9OrO;o with a thousand f2WSshe6PC;gFZXlTmpD15nQrdy D9QtPunting of O;bly3P7hillG9X;eful eG8IiB43;dOgov0C; 8PEmaidO;'G8Pen;fOloween88K; of G7R;a0Denius prince's guide to raising a nation out of de07Ohost and molly0Ci0Ala09o02rQuO;ardianOess wF6Flag archipeE5Ynk;!s of the galaxy hOY;aWeatPinnOudFTG;ingG6N; Pest O;demon lord is reborn as a typical no5SMinEJHshoEGE;bQdiPgatsG6BhuFUVindian kit8MZk0OHmouse dOnFMSpottery throw 4KDwave off kan65S;etecFRA;ctFUV;eAX5ritish O;bake8HNsewing4L;duaHham nortoPnd Opes ofDVMss8EX;budapest73EtoFRD;n APJ;-go8CRdRes wrong APIlden QoO;d Oni3;dino6IUfG7Vli9pFU7wiGAN;gCFSpaFU6; of PfathO;erDKN;hD04smallG7K;morous imperial concuCMAss735;ftFPJrl Ov0;befoBin the yellow ju98Mwith the dragon tattFDF; mcgG2G;mQng carries a corpse up a DCWrden of PteO; 7I0way puBTQ;earthly delE33sinD70wFZF;bAe awardO; for game 7HXs;a04e02iYlWoRrOull monG45;ePozen ALCuit of O;eBSWgrisaA;ddie mercury tributeEYPewheelin' bob d60Onch dispE7Esh prince of bel-aG6N;oBBRrQuOx and the hALA;nOr agreFXU;d0tainG65;biddenE6Iever p0MJgotten O;baB0SciG3X;iOorida4F;ght attenEB7nt7S6;f15KgFG4nQrOsher FVEve loveFKJ;e8BBst O;great train rob31XlFZ5p0MDwivesC60;al de8EMg0;ar Oderalist 24DllowshipA7N;iG9Istreet9KE;belE56cEPLirly oddp3MLlTmPraway palad4tOult in ourCESvouV8; AC3e of the furAVW;e,ilO;iaPy O;iER0m1sF2J;r of 98K;con and the winter 0UTl of the house of uEPW;cono7ZXdge of seven5L8ight hun37Pl00mWnSpoch t7JZqualBSric andr30vPxoOye95E;dDrcism of emily EGZ;erlPil O;deG5Lwi4MB;y DG1;dOglish FTVola holmes92Utire history ofF17; of OlessDBI;e2RLhistory and the laO;stG50;ineQojiG77pO;eror's new Oire sPR;clo0QCgrooFYR;m AO2nce in shadG7C;der scrollsPectrical life of louis 04Ylen degenereO;s AO0;! CRX;a0Ae02iZoVrQuO;ellC9AkeOmE4Ongeon of black F00rrEKS; of death and his 39Ns of hazFT8;agon ReO;am of the fisherman29sOw care0U;denOs; fDZH;prG8Fre73I;me at america'Q5oOwnward spirM;bi0J7rO; into AH2s O;diG14of8MC;ary of a you14Dck van dyk28nnerG2Nrty doz5sposseCBYvO;ergenOisio4ME;t EBI;aScReQfe1EBpartG48scenPvilO; jB5D'sG5W;d3LSt;pG79r CGL;amA3Vline ofG5J;d Pth of O;stA05the au14Y;poG83sFKK; vinci EBSily WkoG95rSve clark 207wn of eRy O;afterPof the 91Uthe O;earth stood stiCmusic70T;! 973;verytCO2;jeeling62Ok O;c0IDfoEU7knight Opictures antFHLs8J3;rOtD52;etDB5is3;bD63life of the immortal FTPsOtelegCSMwiB;hG6Bto53C; p8R5a0Jh0Bl08oYrTuOw;ckoo's cRltQrO;eF1Lious incident of the dog in the night-G8ArentF25se of O;la llo4RMoak DWT;!ure of critiqu0G3;alG0W;aReation of adG57iterion 7K0oQucD6JyO;iB0TstO;al COU;oFX2wnedCEU;mFIOnberFZE;ca-col98XlUmmunSnQok of castD85rG66sbPunOwsFQR;s4VMt of monte6FO;y AMN;juringOneG63;! uFSJ;arFWVistO; manifesFPP;lege dropoE23oO;r Our and the shaFW4;of7YZpuFHK;aFZFeveland AMFoO;s0veO;hitch 48Irfield0JR;aUeTiSrOurch of jesus christ of latter-dayBXM;istmas QonicO;!les of O;na7G0ridEHG;cDXPpF3T;cFXMeftE52naFR7;mical DDXstnutG30;insmoEQ0nge-FP9;bWll of VnUptain goes down with the FJPrRsPtO; rDA4cher in the rDC2;agraC50e Ok of amontillaFEBtle of caglio8DAual vacC1B;files of lord el-mello2XQstudy of van92E;dPlyleFP2ol burnet04pOs;enEF7; C92igaN;nonba8AFterbu7A4;cthulDEOt8KP;in i2JOl4MQ;a0Ne0Fi08lZoSrPuOyrFW5;cket AFSreau of magicalG41tterfly DC3;ad3S8eakfa242idge on the river kwFVUoO;kenwood90Cnx,thers Own C2B;jFZLkaramazF5P;bSdy 7UVld Rnfire of the vaAKVoOriEXRss FS5;k OndockBWY;of Ot6NY;bCGWeFXUfive02OhC9A;and the b4DZtyFV8; newharO's burgersG4M;t ALJ;aRiQueO; Os DD8;danuE8Smarb7;ng FJGp,tz;ckOir witch10; OstoneFOF;cr59CkPpO;aDQAho6;eEZDlCO0;g Qllion dollar E9Qrth of PshopO;'s EPM;a B4HvenD;bQfat quiz 7E0lePreG2GsO;hoG6RiJtG2W;ap,boEH9;ang DOXoDAT;aRll Qst Ptty whitOverly hillbA5Mwitchin' 4FV;e AL1;damn9HRexotic marigold6YUfifa men's FLWyears of o9YU;cBYEj9;ch bQtlesOutifu7JA;! FYD' O;christmasDZOrooftopEUMsecond albFR4;oysEZIum;bSh468llad of RnPtO;man who la94Ttle at lake changj4;gl3kO; jDUR;buster sc97Pjohn and 6YPsongbirds and snEXQ;adoFWYylonO; bFXW;-EZZbyG51ccidental biCORd05ge of 04l02m00nTquatope on white DBCrQsOtD6Lutopsy of jane dESS;h3sOteriskEZTylFQU;assination of jesse james by the coward robert EW2ocE9H;isto61QtO; of Os;computer9VCs9KRw9;archTcient magus' bENAdQgry birdsG3JimO;aOeG1A;ls,trFM3;rOy griffith AKE;ewsOomeda stFQR; sCKW;ist cookAPGy;azing OerFGUityville43Y;m3PPraG4YsETMworld of gumF8E;an parsonsUlO;-kn95Nman brothers AGZ;adaFSTinnocG35;amRdamCFMjustmentCVIventures of O;baron munc103ozzie and harriG1Wpinoc1KSroPtO;iBN5om sa9MP;bin G5Kcky and bullwinkle and82Y; p6IF;bo mbeFNZddeus676gom7EiXlUm luang cave rescFTSnRppG1ArDPRtO; P's OcheE3R;my49Iso rEX4;mitchell and webb 3A0time i got reincarnated as a sliG5Avegan2V3which survBYU;aPdiwe BU4kOos; you for being a fB72sgiELA;sis7KOtFX1wat suengchitthaw2;aOes of mil8QVido7UYía;ivG18mDssoO;cDPCphFPU; Ol0V0;baG25c5ZDlaFDOpublic broadcaOscE0X;stiQS;a2Lc2Cd22e1Yhr1Xjasswi prakaFWNkk5l1Om1Jn16o15ppan28Rq14r0Ds04tZuton4DAxPyOófimo lópFXY;a4VOonah paBU1; VasRtO; PileO;! iDW7;edAMDm65Z;! O;boD9Vhold 'EWZiPlonghor3ACrO;ang4I1eBNB;nstrumG0B;aFE3riOwaEG6;c6S2tt0; 6GLanDrOsuya no71YtigoniASR;aPisO;! D9J;grammFW6hOpG4R;e9FDydrocannabinG3Y;co,la TsQtO; O-drivenFCXic7osF3Q;criCCFdrive unlimited solar cD80of english as a foreigEMO; of the d'urbPaCX2eO;lEL7raFFV;erviF6J;autopilG4TcPmodel O;s,x,y;oFHBybertBK9;a0De09f,i 08m03pe6rPtOuo6QB;iBGAulEAK;aZeXiTorSyO; O's chocolateCWG-9RT;bBLGcA4DgPjG25kaFMAmelF50niC9Up0SArOsDRYwC31;iE9NossF2G;illiG14leFMJoodATA; in2B5iFUQ; Qer,toriO;al OesB6D;disputes in the south chinaFIGevolutionB6C;iCOVschiavoBFT;ll oBQUnce O;hoC3Pma9AT;cOpFIZrA;eG2BottaB65;iOs of endearFDY;naOte;l Ptor O;genisEWHsal9GC;high altitude areaCJ3luciAMBvEBA;gaFWWhBLQpoFV5;nce Psa O;of áviG3ApaEQCte8wrG0P;baF8WcrC2ZhiCmckDFKrattEQZstaE9PtO;ao,rent d'arFYT; pA36nce FLYtoFVW;uiG36;chew F9Zdoro obiang nguema mbasoERTtihu1DM; Z-Yacious9JDcentWerifeVgUnesseeSoRsPtOzing norgK;acle eroE68h 8WN;hin nasuA59orO;! pBK0flG1B;chtitl1r;! O;tiCM5wiECY;riFTXu,w9;! airportFT5;! O;gF2Bqq,vEOY;coEQVdRV;commandmFYPlost trib3yearsVT;pOuera moCVZ;eQleOo,uG; Oos;gr174hill FD2inDB4mE62of artemFunEKX;h,rate6F9; avFCWan6O2eRlQma9UGnFZEoPugu O;cAUJlaFBK;meB; me yourFYPtaleEG1urideCUQy savalG2Z;communica3FOgFWHoFBZpRtQvisionO;! O;prDR4shG0Q;e8PIo2ubD1B;atFWEhone number1C5;an,ik-i-taliban pa93J; 5BOnOrasil dangG0VtoEGV; PaO; BY5ge mutant ninja turtles8DG;dAMKpFAAtiCLGwoF7Y; Qdy Oros adhanom ghebreyC13;bOpenderg4FH;e9oy,ridgewERU;aF9MbTcSdaFV1hRkQlPmOnuEPZraiFUKstevens anchorag28LtuF9I;cgiDOMonDQ8;asF0GeFKY;aA1LeBK6nFZH;a25UuCSJ;a8HZh6T6rEUM;r37ZunFLF;hOumsEIW;laFYHnO;icSoO;!cDMGlogO;ical s788yO;! O;coESWreadinessCMJ;al OolFYT;anEGMdeYHuniversity of8B4; Tgan E6Qk,l,mRpot dom5FSrOsing master takagi06E; along the dotteA69s O;for f7CVin rain m623of theO; sG1FmF; Ofight t86HspeEYAvi5SKwoFXZ;l959ninEUCseG20tre3;partyDR5withCUV;héky karF81l Op congestionF7P;c77YteDC1;a39b32c2Xda2We2Ug2Th2Ri2Jj2Hk24l1Vm1Hn12o10p0Xr0Ms0Kt07u06w03x00yOz3PYíF9E; Y-k,e9XAloOsom D40;rOur p8WO; O'7SC;co7fFKMhTjenkins 1R5kiSlauC4Wmoms5rRsOto8WB;chAFNeFSZh2EOwiftO;! O's reputation stadium E6Z;aFECmastersEEYsiBYC;aEX3usEZF;nnEtsFQ1;aOeinF37;ckERMnFVJwE7E;bridgeFRDc3Z7; hET9at9XOiPonomOus baccaG1X;ic 836y; FWBcab2AT;awa onPhFYWny O;cypFCCkita5; moEFJ;! ceENWri6;aVeSiRmadFQCo5G2suPtooOumWHyanaDDL;! yESU;hisa3KOki fuji5W5roO; yamashiG1N; gabriFAQana mas6J4; P–labiancO;a 6V2;doCMRm6MR; PrsO;!t1;consultancyEMKfaESJgFIPmoCEXsO;ky,oNtO;arbEFOeI;h17JmaniaOuku hat4ZI;!n9SL;aUdiTek el mousFIHget SiRja turun5oPraBtaOy1JLz1;n,r25I;!n e5CEtO;! cardBU8;m bEMOq lamptE;cEJDfECJ;gDKAs; PnOxacFLI; killFXMtuG09;neEZKreFY4sO;tEXButEMZ; air portugMas,iO;ocaOr;! bEFO;! ObF8FiFR3;ruspoFRAte cCFX; C84a00gWhaF1DiVjir2F7kUmay bhFM4nRtPya rOzBIK;eB46obETF;alFL7rOō;a,icAUO;erOin; OiH;bu8YWsCXY; m1ie,sB2Jōb2;a raymDJAshk bagcFNU; QeOi0lFVH;nt,rineO;! dFX2;dDBTpi8soo F6YwF7H; Oya be2JB;mongeFEAr795;aYeXiUlyn tomiG0GmRpPsin Ozin ou3K6;e5BKgreEW6;a bay OeB;buccan9S0lD7S;anESTy O;a8A2faye OwynF17;bBYWm0R7; oldham ashc84ZlOm bin hamad6XS; Os;laF8Cna8WOrCPHscDVL; imB38ra m4JS;goB77le,m shudBBInnaFPVrO;a OiFVU;doFRBtaAWL;eSiQkPlOmFFBulah rCMF;iFHZow,ulah bankFVG; taBS7ing hea2DG;a Ob1esin j3WJ;a0YIbalsFWHsBVX; of the nine tailFUSs O;from the1HWof O;arObersB4WluminELTphantFKIsymphE6Pthe a3TAvespB4WzestirA;c9E5iFXV;aXePlamakIWo233t F70uO;mi mina88Qya 6WK; U-two7YPfusaThiRichi n5BDru satFFHshiO; O's EOE;kOobaFZP;anes6M0iF6R;ro tomiOto koO;yaELE; kuCIV;me toDQToEQSthFKT;hiro sakCFWnori niPshi mO;iiF0Qu6ST;shiA0U; 2R3ikO;iFABs; Uga,ka wai3XApSsPwanO;!ese7J0;hPsa fO;armiEVQ;o otome fairy FYPō;ei,ing O;heavenlyDV1rEDV;cFMEtuivaFGD;ar 9RFiO;ni,r raj bhEKMti; heu0alo8HH;joOkw68Iye2; B37nB36;lPOmichi kuri09D;hQitDko 49MoPtical O;r3FPsCGK;! F0Qma fd;i,yO;cardAon; C66byTernac7leOula raFG1; Pau EJ9tO; cED1op r3FJ;moD0Oof Ote8NK;handgun and rifle cartOkeyboard shortcuFU4;riCW3; cFJY's 9B3;psee panCN5rO;ak mehta ka ooltah chashmFODe zameen p9;aGmobileOpa4s8ZQ;! D;a02Ebs 02DcZXd 9OFeUOhQ9iMNjMMkM1lL8mKPnK6oFXpDJqD8rD4sCXt6Du1Nv1Kw0UySzRámi X4ão QéOøren kierk3HUüper lEUB;amusA0Fbastien O;haFP6loDES;pauFPGtomé and prínciFMA;a,czec4;bi1d0Je0Ify,k0Hl0Bm04nWphE1GrTstemO; PanDUOd,s O;developmentISeFAJthDGE;oOpreEI1s927;f On a 16Y;a 473linear8T7;acusDQRiaO;!c F6Cn O;cE5OdemocraticDAF;apsUcSdEBQeRgman rhFPKtO;ax,hO;-pF5BesOwaFMY;iz0;cd4ZQsE71;hronOopaFT9reECG;iE54ousBUW;e,id;bRmetricFDQpO;athPhony ofO; the seFXI;e1Q6y for9P3;ioOolic 5A1;neseOsF; l4JE;lSvO;ester stallo9M9ia O;hoeFNAkriPplaFFCsiO;dnE;stI;ab7o2F8;es–picot 77GkuF4P; raa narasimha1L9d kirDJD; bED9ney O;aFKYgreenFTEharbour CXSnew year'sFGCoRpQsPtO;huEPOo the mF8Y;ixeFV3uper BNWweEPB;enES8olD6Y;lympic park tennis6YGperaFVD;a09e00iSoO;osie kurFPHrdOt ALE;! O;aOof3ME;nd sorceLrt onlineEYB;gF5WnUssQtOzz beaFPD;ched-modOzerl0MN;e power su2TS; O-system7TZ;armOfra7OTg6G2international airCAWmark6SS;edD9By O;kC41m1;d2gEHS;ating9LXdQeOyn forkbEHZ;ney3Qt O;but psEEThome alaD2Hm93potaFEA;enQish O;aOemFHUhouse mEX7k4FRlaF51social dem2D1;irDSRlDSCrmBJV;! O;dOnaEQ8;emoc1S2u5IQ;bAchh bharat DAVdlinCRMeBVLhili F4Vmi vivek1PCnQrPstikaOt;! CYL;oES1thmoreEDW;! 718sFQB; werder br013alCQGeO;nOtlana alliluCKG; boB3I-bertil tauDY3goolFTV; bing9AHb3Wc3Sd3Pe3Mf3Kg3EharFDWi36joy gF0Tk34l2Xm2Pn29p0Yr0GsXtton WvarnabhumiFJZzO;anSi quatFKFuPy O;amis92JmiFN6paCN2;kOme no tojimaFS5;a na3R3i O;jimER8swiE0Nvi9SL; EYPnO;a5YJe O;cC5DpleshEX8soE5MveESR;foFLShEYN;aVhUie TpRsFVDtainabOurBV4;iDD0le O;developmentOenCA7;! goaFTR;ended 6QKiO;cious pBYOrA;deFFFesEZKmcaEQMw2II;a9MIi,mitEHX;!nO; PnOoo-no-mikoFDD;a h2A8e 1SP;atE1EbDLGdUflanAC4goD18hRlQolPsOwoDZR;a44FontF0Uu8UN;iv0s5;ucEUQynFJW;aPuntington gilbertO; dE3Z;rris0PUyBV4;ey,o5MH;a04bhi chandFGRfZgXiWj5WTnaFVArUströmEXOtr,vOya;een4UAivO;al RorO;m1sO; of theOhip ABK; flEJU;fiFQRgaFV4hoC7CmoEIT;eOo6E1;aEEOnder 611y;naFV1yaFOK;eOical3LF;on gener6ZZry;acPsO;haFQYide condominiumCN2;eOtaFEO; BT0-O;mount 9J4tF0K;jFN3nneBKTt;erVpRrO;eme Oiya pathER3;court of OleaderE2V;iF2UruER6tF3G;ly PortO; your local gunfF0M-vectorD9B;and11YchainO;! DSJ; 07bFQHc04g03hZmSnQpF9Ns8R7t4DDvO;iOol0OT;sed 9K6;aturalOoETF;! fF7U;!aO;nQrPssive Ox01M;black 76YgETH;ine spitFPLkFQR;! O;iOrCWY;i,n FPV;eroPumanO; str7TO;! O;fiFPSmFRV;iaC8OraFT5;apacABLentenaFD8haCO3oOrFK4;mE8SnOpa de espa9UF;d8O6ti8NO;bowl ScrFK1dave osbCP9g2OTheavy-lift launchC0Fju970leagueA94mPnintendo en25BsO;e8VTiz9DU;arioOetE8T;! O;gE4SkaFU5oFR5pFNLs3WWwFSK;iEEHlXvi,xO;iF35lVvUxO;!iYvWxO;!iXvO;!iO;!iO;!iO;! halftime showE70;!iEE9;!iRvP;iQvO;!iO;!iF2U;!iF2Tv,x; ZdVflower farmers90Wg ka8iTjoSk1TDlFQJmi,nQsO;etOhine skyway CU7;! D3H;iFI8y O;deFSRkauLXl99SozeCsuljFTW; AXYng9GO;dhi004el83Ml Ot4JY;gavask9vaEWI;aOiMown A3M;nce PrOy in the park withABO; pi3B0baN;fCL1kFQP;bPdF40gym C8WmicrosF8DtOyat-s5;eBKLzu;eOoCY5;ar,ltED3; of norm5Y2aUerCOSiTmOo;aFOPer Oit F31;glF79oQpDL5sPwaO;lk0rs;olsFNS;f C7KlE60;re ueBNLtro djojohadikusuE4U;c,tG;aweFJLeiman the magnifiFCKfurTlStanO; Qate of O;rFDMzanO;zib9;batheLkös5;a,i,y sull51B;! d237icFQ5;arF07hC19i waterhFR3jAX6umarO;!a kurFAC; dD4BcidOkCUJ;al TeO;! OboEL8;by Qin5YHmC37of OpiCs9YC;amandaOjadi45Wkurt7OK; toDGC;han5VHjumping from heFPG;id1KItend18P;aOeASKoroA2J;b1Z3rO; Oca6;bPray O;l4NZroDWK;eFOMoCX9;fOiFITjan5TZ;oBKTragETI; Pt,z cO;anMrBOO;ann niCZNl9QBpBBK;anDLZden iPetenFL6ha murFLRokuO;! solving5QJ;m7BZnfant deathFBM;cPharit bhakFFYker punch D17rO;a755oFQF;e3X0uO;bDlentBA8;-saharanE0Aa01com00hasZlime8EJmaVnUprime mortg5P7rahmanyan chandrasekh9sPtOurb2VVwoof0;iFBOropiDYU;etRidERUtO;aPitutionO; ciBIR;ck,nceFFE;! sumCBN;auDUFetDYI;cBVGrineO;! Ps inO; the united states7HA;communicationsAFSsAWU; 5IJh CSD;andanteC1UpactAA0;ruOtomic pEGD;! O;ejAX1foreFHCimpreESUle6ACoD19t84Jw6TZ; 65a46e1Ri1Kjepan1G0o11r00uPx F1EyOéphane peterhaFIL;giomeduF8Zx;art WcFDLdRn098rOtt63CxnFNQyvesantA93;gPmO;abtei3MAgeschützCKA;e2illDF8;entRioO; Oc8BB;biFNCchiE8RdOghibFI0mFNGtAMU;e5rD2B; 6YK's t-AU5;attEHZb2H8cOdaC54maDWRsut4Z1t99R;raEN9;a09e00iUoRucturPyOzyENW;chDKTk0;aEAKeO; DA8d9GE;ke,mPng O;and weak tyB7Pgirl bong-1J9i7GT; thurC6Zae;ctly SkQng PpO;chFCItF84;iBW0thD99;eOing vi6T0; the5WDbAKF;ballF60come danD5Q;amUetQisand CVKptococcOss–strainBIO;al phary31GusO;! pyog8LJ; OsAZ2;dance girlsEWHfighterOwomanEWH;! O;iEZRv; of5PXing OlaDVB;mCE4teBHW;bismDdivaEZTiYngeUsAWQtQuss–howe genera9BTva,wOy 2G3; m1berryO;! field5II;egOford-upon-av2ton oakB9M;ic Oy 0OQ;bombOdefenseCL2;er,ing2SI; Qr O;in a strangOthFN2;e FJA;case of dr jekyll and mr 7O3fBUO;ght QtO; of Os timC5M;gibr75AmageBWM;edF89outta comET3;at,c01iEYCke00ll5mach AASnTpwat,rOut,weCFFya;age E8TmRyO; of ObBUItFIK;sea9PLyO;anxi C6KouCZA; 1FAing of the bastEKYy danAWRzy;eOy brook DIT; PhC4Lman douglas h1M2wall O;jERXr26B;aF7Zcold steveQoDKBsoF66templO;e piO;loFLI; auADL;-on-tEDTs' CP4;hasticQkO; Oard chDKWholm6IJx;aitken wa9JIexD5JfooERImarketEVNph69H;! O;gradient d7W3pF65;ckyTeg l4PHffSll RmuB7UngQpe miocFPZrlingO; O's approxiF3H;eE3SmoFOF; FHGrK;gaFPCsE43; littleOneFOC; finFI2;a1We1Sf1Pg1Oll1Hm 8YYn1Gp0Sr0Ntson5Z7vPwart Oyr aCMG;copeFIDlFH3;eRiO;a,e Pn O;joD42sEY3;nCM8ray0CXwondEID; W-o,nO; Os–johnsF8O;aTbDEUcSdonzDP3gRkQlBM3moffFARoECKpi7EBsPtEUBuF9MvOwiES9yeFOH;an zACI;e4LLoderAWSpie3AHtDFX;nFM0ruAZG;erCJ8uDW1;auEEAroCX9;daFN6veL;a06b02c00ditEXDeZgYhXiC9QjoDTPkWlVmQnaFGHoedekeFKVpBLXreEIEsPuDXWvFDJwOyDW9zaD3R;inEVMoz88TyF78;arkiDVFpurEUD;aQcPillO;er A05;naFL0qEKT;dd5rO;iENXtAVO;i34MukaFAH;azFGGeFHSiEMElov3;a9ONufFG4;leFL3u0V8;ar7iESF;aC16h5ooO;g1k;aQiPlF9AroALMuO;rNsceFGG;ko,ng;cksEHBlEB1nn2;lOoF6X;biFE1l5;eoRling OnF94oFLS;ha442sO;hJPuO;bmBRZ;phonic s9Z4tyFCF;an ban2QLhPpeO;!rBLG;anie 06enO; OieBS2;a07Wb02cZdYfLgXhVjay g8FOkingBTGla8mUpTrSsRtoQwO;aOolfrFKZ;lDVTrd;bolEMPmpDWK;ilFNZondB7HtF6L;ea,oFOB;ad42GoFO3;c6O7e2ALoy0;aOeDUWill1CIumph5ZS;rp0wF91;rCGMy3GX;ilCYXorF5W;ampbellB8UhFLLoOurL;lOvE;beFNVliN;aOrE2JunFNX;lF6QrDZG;beaPlaFJQmOs5AR;cm8MV;chFKHtr9Q3;! ekF68dhM;aOer's sea8UG; RnPr O;cBNFeB5W; OtF;skEJ7;mOsB2A;axEE6cc6ES;anFGToF8J;anOfi grEP0on9IPán karl stefánEJT; Oie 7IWos tsits6AX–boltzmannE80;mol16RzBS7;lOn raskF07; Oe dosDNTy d1;ba7Q7mO;agnoliFN4;kRlth QmO; Oboat wiBWAos,puEMP;awETNdeJeE1Cloc30Lpowered gir3JZt79C;a7S3gaFMX;! tarO;taB;b1Lc1Fd1Eff1Cg1BhlheFIHi19l18mAZ0n0Qp0Pr07si,tPyO; c701c; q8V1eXh lets flaFIMiSuO;e of Qs q8V0tO;e of limitFG4ory O;raFAZ;libDR4uD9Czeus at olympA;cQn,on Pstical O;hypothesisC49iE6OmeAE3significE17;elAPGtoE30wCXS; O-x;r8OSs8QV; Q-space0QSl3ZLn DB1s O;and OofEAL;federal territories of m8MCterritories27Sunion territorie802;aRba0BYcaE0KduFERfarm QincomePof OreE69;maDNJp5M0; tEYB;aAC0sECQ;nthem773th3BY; V-612bUcTdSfiFDXgateQk5WTliEM0ro,sOtBA6z;' top recipe at fun-7W7hip O;enEWAtr0TI;! O;atlB28uF6R;ew DL4ust crusaDYL;h,raDQT;ouFIAucFC5;al8HXc9BMiEU7oVtrekTwarsO;! O;hQprPreOsPtCIL;beFK0siAQZ;equel8WD;oliday4C;! O;b4MTcontinu3g51Cinto6DP;ce1f O;b96dB9SliFLN;hylococcus aureDleAOF; 03a kD6CdTford SisQley O;bEKScOd479h8Z7kubriCGCtEL0wiDVD;ai6up;lav Oław lEDU;ianeEHGpetrEK9;marshmallow8SKprison8SKsupe5OEunE3I; V-Uard Qing O;on the shoulders ofOwaFAV; gi2YH;chQd00QeBXQfor the uniform scheduling of medicines and poi9L7mE5WoPraid leAD7sO;coBtr7R7;il,perating proceduB;arterFGRiDNY;up1R3your-groundE68;by me doraEK2newsO;! raids and arr8ML;kroenEN0lOw5BB;aurIee;ag luftCEAiFAH;nOrwayED0;d,less sB5M;ed,fE1Y; sergeaF4XordshireO;! E3I;e de reiFJEium arcaEBI;ey RkQy O;keOmaDQQ;aF9Hi4KD; oBGIdrFFX;aD1HdOso076;aFCKoFU;-in-the-back 7LJle8VH;albaNdaviF9Tjames's C1Knazair913paO;ncra3LVuUN; Qc Pe composiOh file5V9l671;teFKA;combined graduate levelAD9tua9HE;andrea d83UcaliforEFMeQla bourgCDnormandFIHrichar3I1uPwinfO;ieldB9U;mbrAnF7R;dmundBB6mpire blFIS;ebrenicaC8Hgb,iO; PdeD4KnOracE9F;ag9ivasa ramanuj1;aurob98ElankaDSF;lXuO;aSeaky fromFKHiO;dQrO;e,relO;! BV5;! F4Mward tentaDAI;dQmaFKTreO; OsAEQ;enF0LroFKQwaF9L;!ron supreFK9;! i7ASiH;a1Ee0Oh0Li02l01oSqr,rQss,yO; Oro;kiF93× EBO;atlyEI7eadsBJMing O;and autumn6AZb9COfJ1;ck,il tEWBnUrPtO;i1AIted hyeF5I;tOus; Qing 28TsO; Owe9;betFK9c9equipEU1gaFJXinAMA;club corinthians paulEKSof a1PXutilityBQB;geOtaneous human combusFFK;!bob squarep2WS;e5it in6QP;ce04derYes in disg8TZke XnTrPtzO;!er27U;itPoO; agnE6InolacECE; ObEKZe7JLf6DSuaD0W;aEWMunt26M;aPn7SGoOtC2E;saF4XziFA8; bifiFHQch,l O;coFHDstenDZ4;chunsoDO7jonCGOlFBDmiC4UspiBEN;!-O;gw5hFGGmanOvF42wC6G;! O;in PnoFFPsOu4K6;trike7SY;fiFEZoth0BVteBATv8KT;! OjFFQ;and9FBgBOA;erOi7ZVynx1QZ;e,ical O;cAZUeETHharmoDQ6;a09cYeTnRrPtsO;es,nCU8;mOo ded3;! CDR;cer Oser confidF3D;faEALliFFVrepeatingDKHtD39;ch RdO; Of1rFIF;of Or1NOtaF78;lFFZs9TW;aEUCr1IQs0ZOtransmiss7KK;iStOulati92F;acled E2SrO;alPe,oOum;grFFSs0FE;! d866;al Pfic O;heat c6AEimp8CK;aPboatCHMfoCVEopOr73I;erations execuEYVs;ctivitieOirCHK;s A4T;kOrman's rank 161; nFGGeOing in ton7XZ;aE4Mr of the united states houseO; of represent9LW;ceZghettiYhn1ZGinDCEnQrO;kling C5OseEYOtaO;!cDnAKO;dau UishOning treeEZH; O–2R1;armaFGHcQemF3QfOinq5JLlaEQXnCGAr7TH;lu,ootballO; leaguBD1;ivDQ7oO;loBJ2nquest of the aztec F3L;ba9NPprEDS;! 06Q; QbDXBd repe8ERtiFI4xO;! O;marsB5IraEWVst5EO;battleship y9LUcoUdTeSghost coast toE4ZinvaDUHjFF1launch DJLneed7oRraFHDsO;huttleOw1NY;! cO;hallenger9SOolumb9SN;dA0IpeG;levF1QxploFDK;anF0YebrF;loCCMwCG2; 3Vap14Qb3Tc34d2Xf2Kh2Iil,j2GkalBTQl20m1Un14o12p0Rr0Ps0OtrovimD8NuWvPyO; BT9be1lentBKTou;ereignSietO; P–O;afghCX9j7KC;aOin53RnaDV7uESK;irCUC; Oty;citizenD6Umilitary order of malFI2sD0B;l0Dnd0Cp0Br09s BCJthO; TamEKMePwestO; airE1Qe2LA;astQrnO; Omost point buE56;baptis7TJc6PReuEQ8fDBGmethodis3YAoDC0rhodDQWunF4I; F2IernE1F;aYby sou1PXcWd1PVea1PUgeorgia and the south sandwichEFGhampstead9Z5iEPIkoreaUoss5J3pQsPtyrFGRv8GYwest OyMA;afDQ7eEXG;e8I6ud1;arOo7;k,q vaccinationO; speO;ciM;! EB1n O;d1PKw2;aroEBBhina O;morning32DsFB7;fricaPmeDPXsiaOuATH;!n association for regional1FW;! nCNVn O;aE89bord7K0national deCX4rE5E;av ganguF1QceOdETR; DK1-availabl79X;! joumE8I; of0P2cEWKgaENNs and sileFFZt7HU; OjaART;foFGZmE22;!ie5L;aOe throF2HghF1Mry to botherE8CtingCBQ; ama6AKiro8TR;hOraEOAwithCQ8;iPoO;cl3moB;a Te O;cooEISdRellis-bextFDAhuEDOmQnél9OPokoneENHruE2HschoCtOwiA7K;hOuENK;atEHDomD4L;a353csCB;aD8Wuk0;buF83di BDXlOmELFof hanBZ4petrD8HtaylorCSS;iDLLor5;n-yi pDR1rO;arai pott6G0yavansF41; 0Ba0Adra locEI1equa martin3I1g03iZnXoUs of aF4UyO;! P's spider-manF0Va OlEQ8;cEUUdEBD;comput7G5entertainmenA5Ainteractiv0B9mQpicturesO;! O;aEU8haJmotion pictureEXWrel0GIteB7O;iDK9usicBWM;rPs,ya mO;izuENP;anD0H;et,i natteDJWy O;boENMchiEXHfr2NKliEDQ;a Qc O;a8VUboEVCco9Y4fOmAY5tC9x,yERU;oCSOrontEUW;gD2Dsotom857; Phai F1As Owr7NK;from the big cBG0in the key9T8;dCRLhye-kEM0jRkangQof OstD6K;sonFCQthe O;sERNthEQ1;!-EAX;i-hELWoong-EYC;kshi sinE4Jli be8MTmBQ6r;heung4H9na-eFF4of OyeENE;a crF43the362;aliSeO; Qbody that i used toPrsFC0tO;hing5Bimes i might be intro3LW; knFDG;gBKIlike it hFFYtime inBOC; cDNFa,laFBOs; invi5WWaWdierCHReVfèEXPiRoOsFAB; leveF83monO; O's4GQ;iEDHnorthEX4;dPpsiF5ZtaO;iBryAJQ; s3QG-state OiF90wE0D;bF94dEIY;il moon frCJUnoFCR;nTrO; OciF8WpuEEW;ceCeQfA40hijri772irradiDTQopposEG3pPsOwiFBC;tiCyDGP;anIow0;c3BDnBTI;aDDCge knDW2;ournerOu; tCPR;aOo; 1LEil DAHm 68W;iXtOía vergaG; VbankEWKcore3Q7max EZUwareO; P-defined O;networF03rE11;aRbCBZdePeERFfDQreleaseOtBWGversEL5; life2PK;sign7R1velopmentO;! pEVD;rD6Rs0SS;dEECmCTCpETQroJskEXC;! sE50a O;boutFE7cOhubCH1pernFEOthe1FP;aET7op7AC;der children disB2ZiumPomO; and gomorrF4Py;! P-O;i3HMvapor7EI;bicaB4PcB4OhyO;dB4MpochloO;riH;hi,iPks,otGratO;es,ic FD5;alReOoENE;dade esportiva palmeirFECtO;alC6Dy O;for worldwide interbank financial tele5EGofA7O; SiO;sOte;m,t O;federal republicBIApar4ESreOsCWT;public AW5v5F0;a6YQb3WIcYdWissF2GjusticeVlA5JmediaTnetworkRsO;ciFBMecurity PimulOtra0C0;ation EY8;dea058nuF88;! A2GiO;ngCCU;! O;maEPGuse by7GN;! wDWD;arwiF30emocraO;cy,tic p1ZM;lPonOredi9S2;structF2Wt73Bv3YH;aFCPub;el op880hita dhuliAH6iborO; exter7R4;awkBDDi married the anti-f1ji-sCAE;a04e00iXoPuO;ff F95s;oSwO; OballCWTf6IIpie2T3ruBUPy6IS;cB33l38EpaEJCwhiteO;! O;and the huntEHBwith the red BDJ;kPpO; doggE6My;er,i;cDVSpO;erOping toFCN;! rDEP;akPllO;'sDY0en70K;erOy peH;elFCRs;ke Op5C1;caFBKoEQ2; 04aVeUiRoOs;key Poth cri6K5sh,therO;s CJD;and the banditEEHroDHA;lOthsonianBBO;eOing7AFod2;gaHy;dley buE1XgF56lls like teen sp79D;llRrtOsh mEOOug; Obe9p7GUwD9U;cOfort96E;aFAKiF6Go72BritAI8; Opox0OZtaB5DvE7T;and medium-sized9LOfPint5WNmodularBGMsO;oldERL;ac3orO;m-factor pluggable transA1PwaFAF;entertainmentOtoF9Q;! artBCJ;a08e01iYoQumPy O;and the family66ScoDP9sE56;!dog mil4OD;bodan UtTuRvPwO;diF1PthF13;akAenO;e EKXia;ching towards bOgh;ethlC2J; mCQYhA0E;miloš564praljE8K;cePmO; picAKDe moFAV; o9PJd b578;dgehammTepPnder manO;! stabBKB; QerOing 9Y6less in seaA2N; Os;hF8GshEO9;apnF63depri8OKpDQH;erDP3;de,p BG7shUughterhouse-13GvPyO; the sEXBer;ePic Ooj žižE90s;lEMApa6W8; states and freeEYYryO;! in O;a02WtEKI;er F7C;a06e04iZopESHrillYs,uVyO; Sdance7MLfaClPpe,scOteF8OwestADG;aBSVrATG;aOer gis5LI;b,nDO1r O;a9ZIgrE;caE0PfCGZgOneF2JspC7Kuk;o,roET9;llPnkO;! wDWJ;! and bF9E;!ex; Rff7llshaBnO; O-37WheF79walker1SC;of hQNwhiO;teF1R;jumAS3mask the slump7PA;cCHOet ulCXFletal8YZptOtchESZwFA8;a,iEJK;!ndO;ar4KAerbBRN;ón,ögrenEUR; 38a36be33c2Yd2Re2Ig2Ak28l1Tm12n0Co07phonophorEX7r05sYtXvakarthikey1wa o5SQxOânBY8; S-dRtO;een canBRWhOon3; O-7GD;foEXZge86N;ayE4S;degrees of PflagsOminutes to2NUof cE1Vs9GI;! nCBY;kevinOsepaF6J; b76O;ar,cEQ6h,ti08C;sTtOy6AY;erQine O;chapelOsKQ;! ceiF3D; Ohood75X;aEM3ciF4Drosetta th65s7RPwB47;el kyrkje4NTy spacE7R; gawain and the greenAATaEZ2han siF1EiO;!us3XK;bhQn soEI4uxO;!sie O;and the bans4VDsioDZ6;an fOán mcsweE2S;ahEinn75D;a0Cbad the sailF73c0Adh,e 09gZhalYisterC0kUn fé4o-RtPusDGYéad O;cuDGToARD; OerklaFAF;eustatiDmaart5;indian Psoviet Otibet71CvAZ2;borderD5ZsplF6P;border 3UQw9;ho7ing of O;mv sewF9Kthe O;ms e23Rrms Ot11H;lUGt11G;a EIOes77O; EYUaporeUhF72in'TlePular O;thEvalueA9O; Q-Oton7MB;c22Fnucleotide poly6RpO;age0ERl22Tr8GY;a4NFplEPHsign-2; in the EUX;! O;aOdoCPYnaE3Q;irDU1rmAXA;and coDTHwaEZ3; EUQlair O;broadcaBO4l994; weiBTGiD5Ploa6BUtrD9B; 900ciF3Ed,eon saxe-coburg-5OXmER4o04pXuQónO; bolO;ív9; CALlO;aOtaneous localization and1FB;crRtO;ed anneaF26ionO;! Os ER2;h867v22D;a and si107um;!lPson's O;p7GCru7;eOified chinese3CZy6NF; Ox;liPmOnetwork managementEQEpl1;ail5JPinEY7;near21Uvi8; häyhä,nO; Pe O;asEUUbCZHde beauCB8i7E1misBVweEM5;bB8ZcSfRhEMkDZPle b2monQoPpeDWNrF8OsinE69wO;hitER4ies743ooEY1;akF27f cyETI;jaJ;arnaF48ras2MJ;a7YYoO;lBIHweC;ambarasF2Fden01eYicUk TuES2vO;ana armenulEDIerOio berlus6AH; OfiF0IstoneD5O;linPpiDDNsO;ab7t9urf0;ings p0EQk;roF4OsDO0;a gIonO;! Oe;cOd1J8g9Q8vaD7O;arbiDWC;nt OsA;fiF48gC6PhOnF5NspEL9w0P5;iCouF6O;afELJ;hOkEMIorsky7DN; ETViEZ4s; TiSmRnPourney EO1rid kaEDTurO; rE7Ad; Oal-to-noise8L4;fuETDlaEGZof theBHC;a,oid ETBund 360;l,riEG8;mOsCY3;cx,px;gSmeNnQrra PveO; of erat7TDrt;enEI8leoneD24n6NC;a,na O;guil6QRmiEZ9;e of Pfried O;li6sas10G;bastOjadotvE35lenC8TsarajeDAVtobrCF2york9IE;og6; Sdhant chaturveEVZeDZAharthEEney O;crBSRgoALluQpoPsO;he8PC;iDR7weC;ft,mF4A;cCU7jE6YmeOsr4YUvic9TTwadA34;i0lt2;! semper tyra7X1hQilOkle cellEP2;ian Oy;dAP6mE8I;erheitsdienF4JuanO;! AL9;l kek29KriaO;!n O;cETBh4O3tD7N;mese On h7RT;cET9fighting DG1;baseDSHderivedDSH;a25e1Ci0MmiF7Yo06rWtisIuSweta tiwaF3MyPōO;chū,jo4CVnen4CV;am PlO;a stylF0CoJ;benBFMsinghaCWE; 3A3bOeisDW6ma-goCS1tters43O;-nigguCS0h mangal O;sOzyada sO;aav400;addhaBHPeRiQoPuti O;ha465ramachaAZI;psB3Mud of tur4;mp,neF59ya sE6L;kQwPya ghoO;shM;!sDG5;! O;foreverOt336; aBJ0;ck02e01g00hZko asaD63lKnda rh6H6otVpTrRtPuting fire in a crowded2WFvelA76wO;gBBXmEIVruBO5; g7D2ac2gunO;! sC9Z;'sC1TeDSYtO; sF62est pathBQShaF30ness of brD3F;ee,i0X9pO;ers drug BGEing 5Y7; 'em EOHing O;g5Q4of O;ashli ba4HKdaniel shEMAjacob b6BPmO;arkeis mcgloc4F3ichaelBJJ;ei ohCF5reh aghdashlE9F;akuk1i,un; BD7biCgaC3Q; 63Ming3W0;a0Bb0AddES8geru miya51Gh tDO4i7LDko9GPlpa7GTm08nZon2SSp XrSsh8EVvOzuka ishigaEYK; QaO;! Oani C7Bji;ayyadBN9baF1N;n8AGseERV;aRley Oō i2WV;baF3Mchis6EXh76TjPmaOteBM9;clDUVns2;acE8Hon3; pCBXz;of theOp2FA; ETHseD; TeSiRji QkaDJ0sOto,zo aD85;enOuke5S6;guEY6;k50Smi5ZW;chirō1WIgaEY4ng7MS; on you crazy9APdoF37e;g2J5hye-sF5GmOse3HOtae4SW;egami tensei OinA8N;iv,v;eC6Yla,onO; p7XPeF6D;a iBUTboleENZuEDS; O–sunni9G3;iEUOlabe6XM; 0E's 0D-0Ba09e08f07i05lZmXnWpherd's pF3JrOtEYX; shah suF1Wa daD8AeUiTlock holmesSmanPp64Bry8WQshaEVYyl O;crF3NlEXLsandEOI; P's march toO; theEK4;firefEQFhemD6C;! chapterEBV;danDZLlyn feEO0;e nEH9metyev1GX; yF4Zya8zh5;!aOp B2G;le,rAQN; s406by mus7U5don SlO; sQac,ey Py O;kisA8Imi8Z5;d9W1fab7FQhDLGlo8w8WZ;cD17hoJ;adeE8JcoDI3;kh Ola h5TW;haA43mujibur raENK;ali chow62QfDH2;na eaE2Wr heartBFI; w2SXmDr O;mAZPstEG5;huAXSraO;! and the princesses ofEK5;a6F7out of myEGUtheF0J;professed herself pupil of the wOwas prCVM;iseF0H;a1IbbEQPd16ggy roEXRh13i11k0Wl0Vm0Rn0Dolin 0Cp08quille07rYshi XunTwQyO; One toE0G;haCNYmi8CR;arEX8n O;aEY3dCUTgDM9leDIEmOrhC6Uw95P;eB2FiE80; Oa roDG8;ca7KEdoPeBRBg9A2o8XEthe sheAENwO;alEO5hiH;olE;kEUCtharoF1E;eVia,kSlRmQna buD73on PpOvari waEYH; cDNBe8HDsD63;caEXSgALFho9YRl8EEos4X9sDXBtaHvan eCNN; el-shei7E3ila03G;een spiAAAto co7DT;! taO;le,nkO;! iECM;it,pE4VwaB; o'0V3;ePiro–wilO;k DMH; of Osh16X;tEOUyDVX;monasEY6s2VY;do8e ZgUia tTnPtO;ae,el vansant5hanu bhag5YX;a moa5TCen d8PPon Oyn sossam2;e3B3lePshO;arESF;e,to;wa4; dCFT-chiQhaiOri-F3P;! O;cooperationB4Pm8S7no2tEJ3;! and the legend of the tenO; rF0U;bCDXdaDXFgiD93mOvC86wA5X;acgIOcm839;anQbhaF3IeikAP1iPmiBECsO;heG;s5ta7E4; EP2iEUF;lF47om brune-fCXR;a,ePiOshouE8Runtala 1RL;b al2FXra cDS9;rs,speareO; ARC's O;plaDWCsonA9W; gilgeous-aAGPlene Ot1viEU8;wooEXL; PaF1Pid kOnamDK4;aZRh1;jB5FrukhEWY;es of VowO; OhunDBArF2V;and C6Tin the3JFof PtO;he hedgehEE8;a douQthe O;coloBLKtOv8VE;hEDJoOA;bt;bQgrPpOrEYKwDC8ye7T7;iE2XuECY;ay,e5;lERKroF0B;di mein zarooOn7RE;r aaEOK;a3Vb3Qc2Zdi2Ye2WfECSg2Ti2OjongE7TkhmEZHl2Bm21n1Vo1Rp1Lqu1Gr0Ns0Lt0Gung0Fv01wage00xOycheE57; Vagenary2DUiETOtaEMTualO; Pity Oly transmitted5FS;in aU4of3I3;aRdiQfB73ha7TOi2TLo8PQpenetEYMrePsO;laECAti0TP;prCR7voALG;moD4N;rousMssBUEt7CI;and Qc8F0eAEWiCU4mF07o9WYpPreassignment10WsyE2TtO;oy,r5F9;istoF0SoA2H;gender dis5KUth30Z; tr586;a00ePillO;a E5Xe;nOrus snaEQW; Q-segment5UNthO; 1DP-day advenO;tistCU9;archaA92bSdRlaws of noESPnQof CWCpPsOvAMJwonders of the anciF14y7Y2;amBJBum5QS;illars of wisdEHTo1HY;a9N0etD9A;eadly 8Q1irty wERBwarAZ5;ridOucks CBM;es for seveC8Pges of kön3LV;n nişany1stACJ;-hui cDXGri; CKQh OiE3I;a8J8cEGSd22KgQmProO;g8A6lBBQ;a2YTeC9S;abIre5;ameOsion initiaEJ7;! EYG;aph0Cb08en07fdEHFgYiSj tan8Z9mon on theD52otonin5V1piEOCtraEPCvO;al,er QiceOomAZF;-OnEZX;leve09Woriented CU1;messag1I7name iB1J;alQeOf,ne; Os and parallel circuiEXQ;a,b; OiC4S;aF2AcomEU5experiments DZ8kiESYpO;eripher8H5oF21;eRiO; 0NHo Oño deEYK;agüeEQ2busqueEXJl8I4matt1VJpOramETJ;ablETIérEUM; Qi Py O;br4shoygu;eiseE26korolETTprokofiETTrachmaniD7Us0EM;gOibaE6Lmo9I9;aA7UnabL;a BN9ity prEH2;iaOo-croa8FVs;! On EA1;andOnaDVB; monten1XK;! ofOim of sDDL; tO;heO; eEXH;eQoiaO; Odendron giganteEM3;c9D1sempervi0GF;l,nceO;! d9SW;aration of Secat jagu9hRpQsFtOul6RM;iOuagiEKV;c BE7mius sevACC; 2M1u9B8;ardCP3oG;conc8L1poDOT; QhyF0Eng uiAB9ulO;! O;b3N6nationaAXA;bERRhyE8Kin-gC7Wyea-E1U; çal kapımı,dReQgoku5RQran kaguGsPtiO;enF05me35TneleEZB;e and sen9CDitivity and specifiD8Dor;caAETgalCUP; in the cl9R0ai,er policy fO;rameD7K;aVen,iOoDUV;-TcoPoCXEtic O;lEB2peE74;l2nductorO;! O;device faOiCRU;briE0D;arid5CQpresidentiaANQ;glu1DCnticO; wCH6s;aZeUf-QiPjuBE4kEY5lOma bBOV;afDC7ing sunsEWS;mDQ7naAPH;aQdPeOhaENBimmoDH3;fficaD7YsteDSG;eterminatioBI6riving9IS;ct8WLwareEZ8;ctiQnOuciELK;aOiEL1; g4WC;o51Cve serO;otonin reuptak1WRvicAUV; AZUngEWR;kQnOsmic6S2zuB;eOfeEYP;!n45E;an68HlDoO;! mat41F;aOundCTSwK;! O;gEP8saB1X; you47MkOth0; lBHAing a friend for the end7VF;mentary EJ6ti2;ess8VYondWretRtio64EuO;laCY4rO;e6FJitO;ies and exchange board CQUy haCER; ParyOs of sulphur sDSM;-general5RLbiEXF;headquarD7FinPof 4N6sO;oBI0u4F6;telligen53TvaELJ; P-w6W7ary O;eABJs06N;ame02bZcXfrench WgViUlRo723pPsOteBFCvatican60Ew71W;chleswigDT8i720panP;olOunicDT7;ishC2C;aPiO;by3FOfe;ngE7Ww71Z;m720n6W4talo-ethiopiCES;e7UVreat awakeEPO;emEKLintervention inA0A;h723oOru720;ldDSYmi8n721;aOo724;lkCEMttle of O;e725fallujEP8;n74Gric3FE;astiOeEHS;an Pán O;marroquAHYpiYAyC4J;baENDgiovinEL6ku84Smanisc7X9st1veO;ttI; 0Jb0IfoEZ0h84Yl0Emus he9KCnZrVson UtPwO;isD9Dolf-E2C; ibiE08tleO;! O–tacom5SN;krPsO;eahCILupersoD5O;ak5;hu8J2of st805;chOs; engineOl6V5;! O;maEA5o0Q8; On williamANN;a00bZcXdWfDEBgVhTkSlRmcQpOrEUEstri44KyD5W;aOennERZ;rk0trick fla9F1ul,yt2;d80UvK;e9PIoJ;an1iDW0;aOepburn f2AC;nCKYrrFy3;elaIuEGO;uf0OPycEMS;hipEG8oO;mD31nneryERP;e1iggersA89;b8FSst4; Os and crofETX;oPteamO; sEEC;f soK8;isCUU;ane8N5c0E6lRoPpCDFshOurE1P;anERN;f Ott0;azDWHgalilEPQtDRE;evel1UBtd;a1Penes from a97Bh19i0ZleroderEQ5o04p 03rUuQyO;lEXFthO;e,iaEK3;ba52GdPlpEKLm's OrDB9ttEQE;wiEPC; mE3Geria O;alphaDMMf7JPtoro07Z;aUeenSiQoO;ogeOtEIG; mc8ZQd;bd,ptO; kiddEV9in7GC; OplKwr755;actors guilDN1geEVRprAB5;bb7mO;ble forD5UjETT;f4FP– containment brA7R;l0Ho0Ep0Dr0BtOuEVUvilleBV1;ch08iaAKGland06s E5WtO; SgDWEiOy hoCLC;e Qsh O;cl1foEVXga3IShighlDVDi93UnationalEQWpO;eE3Premi9F4;baATIpi7SM;adZbXcaWdUeaDPJfTgRhoD1FjoBRLmQpPrA18sOweiEQA;peeDSYteCZ4;eEBPilgrEB3;ctominKoBPX;leEFGoOr679;ttliCDR;isDXTolEreBB9;erricDZ5iOo494;siJ;an,wBY5;aOe48AoEQ0;io,kuEWH;aEV4kiN;! O;naDQNyaEUL; O-irish5HH;gaEWPwh1WH;chedCG0pionO;!s EOQ;es2A6olaDDIus;by-dooPtO;! mcnaiLer5ZT;! and guess who?;d's brid7iDC3;-hBTAaCZ9enPkit-l1ZJmBZRpio africanDssor sO;ev5isD4B;ceTtO;ific PologyO;! and celeb6QD;mPnoDCSrO;aE4OeAEU;aCU9eEV5;! fOdireE7Ps CDA;aDIBiction2GK;a02e01iZlYmidt sting painEVPnXoSrödingerRuPwOönbrun3PO;a,erer gustE0C;ko,mann resonaEV9tO;zsta5WC; CMP's13T;lQolOttky32T;! O;of EFFsA2V;astOz6ST;icDEL;apE6Ieider el8C7i3D3;eswig-ho304ieffen C95umBPV;ndler's 94Htt8OKzoO;affect2NKidCWOphrCTMtypCWN;herazaDJIngeCFN;denfreuDJHrnhorst-BFG;bi3da,lYnVpUrPtman O;crC25joCAN;letPy O;mETEstories to tell9FD; Pt O;b5CAjohanss8GW;fBYCnexDspDBHwEK1;a AR4hiEM7;dinaviaPia CMDnO;eETMing electron m7P7;!n9X9;abPlOpi8;i2op;iCCMle vector05D;d3QOentertainment DKZtv;a60b5Vc5Od5Kf5Dg5Bh5Ai4Qj4Pk4Nl40m2Vn1Qo1Op1Lq1Kr0Xs0Pt0Au01vTweetET3xoQyPzaeOïd benrahENOúl ñíDSKṃsāG;-s1;aka kETFyeshCUW;nOp6ZB;s,yO;!-anhaCI3;aSePiOoy;ng private 8LLtribai3VA; Od by the DXD;the9MNyourO; t65X;g2OLnO;nah OtEEN;cEGPwANV;ber motorsEIWcy sanADXdQerk1Y9lPmlaEDKna,roOsageBD5;n,poET3; gBNDi niinistö; oEL4aDIKiO; Oa;araObinladinECI;biaOmEH2;!n-led intervention in yO;em5;an00elliteYhya sa1DUiXoUsumaD9SurQyO;aOendra nath CODr; nadEU9jit8O8;day night QnO;! OalA;awE19devouring his4X7v;fBXAliEJU;mi saDYTrPshi O;k2na2PLtajiEQM; 53Yu iwaEUX;re,sA1K;! O;internet88EteALU;!iO;c p0LOsm;aThQkOuke4ON;atOia reDNT;ch6BSo2;a OiEM9;aA7AbC5PcATGgrEjEMOpietEESspiO;elECX;ki On6X4;and m2KMkoji1RH;aUbanes–oxleyE5HcoidD9NdSgRiQkPlacc,m0VXoOpatta parambA3s,um1vepalli radh2LY;jini nai7QZo brieA4K;!aru vaari paaEUH;!leru neekevva5TMn,t5RG;assoE8Eon of akkEPV;ar uD42inO;e,iaAOK; 01c5h OjeCWPswaDGHwDQ7;aA6YbZchYeEATfDRSgXhWisgEAAjessica 9F4knDM7lUmSpQrPsOwayne cal8T2;haEHHilveDGKnoEKPu3KU;a6ACoem0;aOoCSR;l4riELDuDWY;c3DQiO;chelle geC9Sllic1;aOeD76;ncasAQ2wrenceDBA;arE7GolcoDK3yEMQ;ad2oBG2;alDV8;aarA0We8V3loom raABGrighA0W;al6FMbareiDVMd4JTgilEC1jean uAAPmartiNpaOraG6;scDG8xt2;ib saleDLLuon65A;!pO;hOoEHQ;iBo;irseOri hayaELD; ron1-monica8K9; 0Ga0FcEGXd03ford a4VVg-e-marBZ4ia 8B1j00na9YLo4DBsZtPyaO; malhCSJ;aRerD3Aiago PoO; 9ELriEIXs DWG;calatraDS3de composO;teESR; Ona EL6;cPmO;onica CG1uAH;laOruz de tA6D;rita658usO;!'s61;-serCPDkrEPD;ay Oeev venkEEMu;duEK2g2ASleela bhansaEJQpuran singhO; cYM;aYbox ED2eep9TCiWm1rQsDLIwiEHAy O;brEAPdOhook elementary0P3koufE4Q;enDO1uCIM;a QinPo O;botticD54koDO7raDPY;e bS7ghamER4;bPdOoh,ávila beltrAAI;ayA5Hee,icD19;ernEQEulloBN7; toksvDOSa Oe C7Lnista national liberatioDJQsk;moCQ0peak tramwK;lDZBra D8V; CO1a la6A0;anXdiegoVfSgRjQmPpeDYYquentin stateOsebastiAAB; prDO1;a8SSiguel de a4OO;ose shCKLunipeEGQ;abrieA6Dimig4EN;ernando CRAranciscoO;! O;ba3ZNcB34inEG2;! O;comic-c2inEG0;dreas fBJQtonioO;! spuEQ9; 0A'sAO2a05b6KVe04ha4i zaDQNm01oZsTuO;el QraiOs DRJthirakaEHU;! O;champlDUUjaJ;becAO3eto2O5joOli9ILpepDKQtaylor col23Oum2QDweEOU;hEKIsl4;on,ungO;! O;eBQQgalaxyO;! O;a CUFnotOs CUFtab CUF;e CUE;aOsa,y9HN;! jDEJ;i hanr1B0o DOQy O;gOh4NL;ravaDZ9ueC5B;-sex marri1SXer thahENY;el,jwadiELAntha PrO;a w552iBAFkaENS;bPfDSVmOpoDK8ruth prabhuEL3slD5IwoB41;a51Ao9HI;ec3ODoENP;a04b03c02d01e00feDK5gian2J9hXjaA1ZkinDN3lWmUn7QSpTrRsQtaEJYwOyEOH;aOitw0ortAKT;lt2t3NU;he8K1miE9I;aiEJFiOockwe3Y1;egIlE;eckinpEHIit9YP;aOcqDNEeAOVorrE4A;gEO6nekC6A;aDSXeBVN;aAG9euD3BoOyDEW;usOweC;er,t2;llioAXNsCQ7;arDOV;la7ULooDSR;ankman-fDDLeazlEot3TEradDH5;cDM6l9YE; 09a07but0KEe04i02ly ZmWomón rondCKWtTuSvOzC85;aPia O;divin4VTofficinalF;dor Otore maranzaDYH;a4N5dalí;ki,te; O-n-peDX3onE59water c12L;and sanctuaLbECWlOmBTU;ak2P0;aOonEQC; h6HZn O;bin abdulaz8TAkhEK6oEGXrushdEOF;ann h3TAfD2HgeDO6hPke40Dlin3ZWme5phBDTrOstrutBX3;iDEBoDDN;awCWHemENH;cAATmOsCZNu adetunDRJ; khaBBM–sulaDY5;m witchPsO; taxe6YZfCMV; tr9W1;ar,d8ZSfiCFOh,mO;aDJ2i;kh1m10KvulKN;haOo90Jug1;!l4;al aEB2id jAE9; 06cANMd3I7f al05gō takaDQHlor moon03nOp1tam3OX;a nehwMsbury6S4tO; O-trAP4s rowE03;baYcXgeB2ThelWjoBTMkittsVlucAmaE5WnicholEQ9pSsQthomas christEFBvO;alentineOincent and the grenadEDD;!'s dayBDZ;eOteph5ylvester644;b5Q0iDXZ;atrickPeterOierre and miqu9DW;!sC76;!'sD2I;! and nBK1;eEBEi0;hristoAGXroE67;rthéleCL9siO;l's ABV;! cO;ryBBM;-islam1J5i CLB;baba of shirEDQdharam0JWmadhav 3C3pal707;aGel,itya akademi1BGrawi arab democraticBSP;e sOo m7APrada famílA;talAKT;aSdQePfronO;! burDGJ; st8GBmo2;ar7DOiO;e BVW;ri 8FVvid O;dC17ir1; sat1ako yama5MPdQhgu5P2iOomasocCR8;e Oo ma7GNq CKY;fDRWsiDP3;am73Miq bE;agawEJFcThPkleAZKrO;amento81Ged0YP;a Pet–param17ViO; 9AIn tendulk9;baron cAV7dO;haw1;haromyces cerevisiEB9o and vanzDBQ;aRer6OJhaapAWOine Qle,rO;e,ina O;b1G2c9XHouazaEET;hossenfeC79schmiEHN;!h,n DZ1;b aOho,rEI4;b,u6EA;aJ3bJ2cIYdx,eD8gb9DChCMi9Cj 9Bk9AlcCLQms 97na,o2Gp2Es2Dt2Cu06w04yPza,éOöyksoDKFúben 0KXōn4;sumé,uDZS; coC3ManSeRlan clark-0FJoya kuriCO0uPz5ōyū koOūnosuke akut4JK;bayECH;gyong5HAichi2JWkyu Osuke hDT7;iDMWkCL3;!rsoC6I; O'sENDaEL1;aVbUcooAWTduE74egCBTfitzp8OBgThSleDQIo'0FDpRrQsPtOwCXP;anneBQWeB68;eacDACtCEZ;eAHTos1X6;hillipECVoCPQ;iDLGolBV7urELE;arcCYMigELGosEH7uDM6;ad0inAFS;daEMSrcidiacoDW2;andaOby;!n AD9;airiA19b1Ld1Be1Afus 19g17h16i hac59Cja ignatoDNCkia kuchiE70l13m0Zn0Wp0Qr0MsXtQud PyO; lANAi's royal love in the B52;gullEKSvan nistelroDC2;aTgerShO; Oerford4VQ;bPgoBTZjEM8keaEA1maCZXnegDL5porE9ZwO;est44IiDRG;ader ginsC5DuzCOE; hCDZs CH6; lEG0baDL1;' DULh 0Bkin 8XJsQtO; O–eater b8VN;beCAYshoot224; 07ell01iaQoO; BUE-O;georgiC3Jj6QMukrainiC3J;! DHTn O;aVcCVVemE9CfUgTlaDWJmDOPnaD1GoSprRrPsO;f67Hleep7UUoviet federative 8QL;eOo9TNub7;pDCAvoA6E;eBUMovisional g5FX;ligBQUr90H;roundC0G;a4NJoreign agentD8K;erospa6RBirOlCJNmeCWKrC0D; fCK2craft carrier admiral kuznetsDMA; P'sO; p6UL;bQcroweEH4gE5BhoANDjEG3peCVGs3D5tPwO;estbAUFiDQS; DCBovE;raEJPufaA6C;brKmD2FtD8U;diEFKlimbAQO;al PikOouni ken2W3;! dBZ5;arEHHpO;urE5L;aulQert Oi kaE3R;e3GWf9P4gA7Xmu4KApenryA1KsO;anCZPheldBDF;!'s drag raceO;! O;allAS0uk; P-dmc,away truck 35YesOge–kuttaAXUrDJDwK;!caEBE;bEIXhide fEK5lolaBU9the jeweEL4;!er7CJiQmPpO; sC5RelstiltA4Z;ikBJTy;!ko tak8P;a le7EWeO; of Os of c94J;lEBZthCUM;ollah khom3ERr;by OraEIO;uDXPw8UI;buck B2JseDDPwainCVY; mccl36Qsha little8FA;olRyO; Oard kipEFD;gOruettCMQy2J6;ay,iulD7EoE57;f Rph O;the red-nosedOval2S3; reinO;de0;abIclausiDhOnureyEEQs6U5;eELIöELI;' al kUber TeRiQy O;baBDGl4on r0XZrOwDYD;idE4NoEKW;c2k's cuCOC; goldbergC10lELZnOus hagrEJV; fleBDAs barrichEDQ;duck debug4PDsoCKK;haED4;rs E3TsELQ;s,y6ED;gOk; mAM0;a69b4Cc3Sd3He 3GfecoxE40g36h31isin conaEFUku,l2Um22n1Ko1Ar16s0Ht0Du0Bvan2Q7w09x08yO; 03alPce O;g376pierrDJL; Oe union saint-gillDLJ;aYbankAZRcVdutch61VmaUnRrumbleQsPtOvictorian2UB;hai5C2ombs of the joseonBXP;ecret0TAoB4F;! mCIZ;avyAMXoble consort O;hwabin yELBsuOuibin s9LRwonbin 2A0;!bin D27;il,rE91;aOentral school of speech5N8oat of arm8VR;nadian OribbeanD2W;a7I1mountedBAHnaCZ9;cademy of2MTirCI2lbert DEOustralian O;a7HZnaCZ7;benavidEELcQdemD7FkPlic2STorb64IrOscheD1JthCM2woELT;ayB1RoEEE;ea6i5PH;hu8oC0H;etHie rDVHyD6R; echelon 9MQan Oo2;atCU4b1D8;en,lDMTnd-robin Oting informaE2J;scheduEE3t6IR;at91PhQoscoA28tO;eOwe0UA;n tomato3rdEIC; iGschilJI; 1RFa05co04eVh hashanEBHiTsPtoOwell9UBé;ck,v-on-d2; Oano brCLE;bPgeECClBIIma974p87BuO;lbricEI9;arCOUraEIB;crucC0Ee O;huntington-whitCWKo490perEE1; Qanne baEE9ly8E1marOtta5FDwoEL8;ie de42Ry O;cD80haAA2keA2R;ayling-eCQ5bSkeA2Ql90RmPnOpaC4Lsc4DGweEHT;amajunEL1yDDU;atafD6PcO;gOiv0;ow1;ow4PXyr6;e arbuD08smECN; TceE6WlRmund piDMHnnPrO;io daDE9y;a Oe BX3;arDFUpanBLV;ind Oynn AZP;caECAfCENrBBI;luxemC1SpCCUsCKE;onoa zoE8Yschach D2Py O;cPg90DkO;e5ZHi5OF;ochDDTu5O8;ibECBm Wney VsStO; P-mean-square dOkEGW;evCNY;be0meaO;n 4TV;evelt PtO;er t0WP;faDBUisEDF;faDBTmaG;in E3Xt4XH; 00's gone wDGYaUda ro1NLeTnO;ie Py cO;hie8ox;baBB5coPjames dDIFo'747radDLTsOvan 0FGwoEKA;peE6T;lD0Cr5NF;la hajaD6Nn rubiDKM;ldPn O;faAUMkA1GrafEDVthe acc96L; OinDF4;aPkoD07mcCZYreaganOspeiEI1;! washington E7Q;ll5raúAR3;d9ZVfunEIFg79ChoAJMjereCF8kRlQmaIpPreC1YwO;atCPPeaCKIhiHoodDJL;aCI2erB62;ei5EJi79Z;aEIRla4; the space9JXaUeSiRola gQulusOy sc6DEárDI0;! aO;nd remDugustAE8;arE8B; CZYnaDYN;!lu lu1OYo Oro duDR5sh rang612;+9SGa9SFbBD5;in gros431nO; XcTesqu5TIiQs8VCticO; OiEA3;c7VMmD4O; 5KGaOchM;!n O;laDRYreA1V;e Oing the5DM;fiEEXis a bonus 932lDTQnDWNof the tO;hree kO;ingdoEHJ;abramoBF6bCRIcTe514griffin71NhBPTkCFIleD32nuCF4pRrPsOà cl9LI;afiuD05eA9H;eOiHoaE83;igNpD7K;olanskiOr5IP;! sexual abuse9UW;aQoO;nOp6ES;c7OXquesCR7sCH9;l9KCtholEJH;and SeRf77UlO;er coaE8Uing5D7o,s-royce O;ho2TQlB0DmO;eBTHotor 52P;-playinH8x;barOemmeC4ZorzabMratz3RF;th3; RiO;ngya Pt O;cDZ5shCI4;geCA9peDP5;jeong-eCPAmoDQD;er QueO; OliDK9;o6plC9AwaE7U;aC8UbTcSdReE12fed98Qgoo9DSlloyd-ANMmQpenCPRsOwaCQD;crut2tO;auAR5o6;cgDPGiE9KooB;altrEeaCOA;oD54raigDCD;aEILinDDM;de0m9P; Vdy UeSgers and hammeDGBman fleDAYney Rolfo5K0rOtang jitmuanA9Y;igo OyD6K;dutOsanBBB;erH;alcaEHTdangeCTZki8;nt,rick O;k02DstDEVwiCRR;mcdo6TTpD08ricE6K;of ascleCIEsOta9F1;erEAPteO;ig0wartDBA; 9FWco siffreE5Zh03kOoE49; 00aZeTnr3NLstQy O;aur rani ki prem kaC5HbalbD05fFWiDR7jEAFmOv;arc64HoCFD;ar OeadyCAJ;advanced game9NHgamesOnDTJ;! ADQ;feller StO; P-propelledO; g042;lOrac29P;aDJDeDTH;ceDEQfaD97;bBBNll;and rollOhuDYLmD2Upaper scissoEFP;! hN0; thériB93eOfort BIA;!lle O;hum3waO;leDDQ; 1Cb18ertYinRlox2OHoOyn lAYH;cDP2tO;! 68OicOs exclusDV2; process au4Z3s; PhoOson crusD43;!od 93T;caven4XCde jesús,fox D8SgiRhoQlAG6olE67tPvan persEF0wO;illiamsEARrEEA;hDIVuD70;bb,od;bb,veN; Sa fBR4o O;bQcOdur9YYfir6QIman5WSorDGEr4D8;aOlem6BS;rlE8V;aA1UenigE6R;a0Qb0Pc0Nd0Le0Kf0Ig0Gh0Bi0Aj06k03l01mZpXrVsRtQuC36v1WGwOzemeckF;aOeCQZiEFGolCTE;dlEEUgn0lpo7;he b6KEo1Z4rEL;aQchuDZ9ean3CLhPtOánE99;aJepE1J;e5OKwaDEF;lCXDpo3S7;eOi'cEEKoDDYy1;df5BDed,iE57;atOeIic3P5laE0H;riJtiE97;aOcnD45itchE1Ios3ugaCIM;lo6ppleth3XHrk 5DBudCHBxD7J;ewandoCRDoOudlE1G;ggAuis4U;a382iPraCL8uO;biD5IrCKA;rB3CyoBZK;ames-c483oO;hnOrd1y; Os2;\"mutt\" lDPCb8FC;i 45Il0;aQePoO;hm1oDHZrL;leniDrjav55X;lf2nsOrDZBys;en,s5;rOuillauEG6;av3iffinB96;alconA59orE62rO;iDBLoECX;gE8UngD8Y;aC00e niroE9KuO;ncan mcn7FBrECUva3MO;arOliE5AonrEBWruD6Hu141;ly7ra957;al8H0iUNosch g8ZurNyEDR;lOramaDM2;an auBEGtm1;ert dijkgraDHNie Py O;beE8Ck1IZ;aOcoltD93d6UMfo9EYjarvFkea6la9EYroCR7wiCPF;meC;bryd2corddLdUe7FXfoEDKgThalSkRlQmPpiDHFrOsc69Fvan5MOya8z3S5;eCHPi3HEoy ma8VG;aAL8celheD5H;ieBJZoA41;a375nDGX;foEDFl;aB8FronCQB;el911yrdDCO;dQld Onoke coloDASring twenEAJt9XD;amunOdaC7W;ds5; tOside picnEFY;o per69Sra4;carpathAempress7F3lPolympEFWqueen Ot06P;e2M9maL;usit9XH;-bE3No7X3;bCVGm5P; 2Wa2Vbo9B1c18d0Ze0Uf0Tg0OhCFCk0Nley 0Mm0Kn0Ho0Cp 0Aqui puDBGs02tWvPyadOzE4L; mahrE85h;aTeOi1;rOt; Ps O;cuoCR2of blood67S;pC78thDE6where the moonO; r8O3;lDLWt1KN;a Qchie Oeish deshmu6OHu arDMW;bOvaleN;lackE86oD7N;cA3ZhayworthOmoAKFoGsiD9FwiDI4;! and shawO;shank rede7S;c4VXe Qhi Ping su63JkOotDWMperi5V1; CCQy A7R;kE4EsunDB3;againEBKof the O;footQg94YpB86tO;eenage mutant ninja turDYJoO;mb raCUJ;soAAC;toE43vO;an w21G; Pt gO;am3rrBHC;de janD8YfC0ZgrandeO;! O;do sCCPgorg5PK;a sawaDIDgOko kikDIU; of Oo starrD7Ns of saAGGwED1;fiBh6DB;aOwECZ; ho949c neD3E;keDR2reEBS; mayaCer7X2i lindECRsdDJL;a,el,htPoOveECD;lBGCr moDX6; said frE9H-Oeous among theDPEmoE3G;hand8MOwing poO;liCAUpuCXP; w9kin'sB5Yle; Pmann O;h7ARsDYVze7S4;kugi57TtaO;kOnaDIZ;ahE1K;dUePgeOley scoAKF; h7W8; QrO;s O–waite tarot deJ;ofE8LrD27;likeOthe70W; the 69X;ick Ol0;boA22moECP; 19ardo 18ciCJBe17h03in,kOo ve02E; Qr8BSson45y O;gervaFkambuaDLImaCJAneDGTpoOr21UschrBSC;nEDWweC;aYbXdWfDEUgr5NRhVjDCNkarsdoCDDmUnAEZoA0FpAAMrSsOwakCTT;aQcoE4PprA97tO;aCOTeO;in0v3;lom2;ioEAUoECFubinO;! production E5G;acDCNorBXL;aB66ofE4V;anDLTec50N;eaDV2rEAB;nd m1CXs7YX; 0PaOe9WIie samAMLter magnitudeBAW;rd Ot C3V;a0Lb0Jc0Hd0Ef0Dg0Bh09i08j06k04l03m00nDBHoXpVrSsQwO;a72BiO;dD8NnCKY;ac527chiDV9imD7LpeJtO;alAZBrD5E;aPoOud6XK;dE5RgeEB3;mirE5W;erLrO;oen1K8yE9L;'PsmanO;!'s house ofCPZ;b8TXcalCOWsu7BZ;aOuAY4;dd5nuIrOthDAA;cinDL9x;e8Z2i5AG;aE26iOukli99V;el,lEnd;eOoEA2;nCIHweC; DSMi7A1;aOiD92uCRY;lsey beE9CmASNrrF;eBiOriB5;bs2lliE5L;ey3QKrancis 5AO;awPeOoATMrey02R;an6X8nt;kiNs2;hD9PoOrBO9uDVB;l3ttA3Jy7;aseE59eOlaFoo6raE4Su928;c393lz0njamin7UBym0;nd maOshCGVttenbDOZyoaCZW;ry 8XGuriceBTN;bDVAdad poor dE82pO;aCAEiaDXL; C53gDWY;montalb9TXpeASL;fB0IocasD96;a cerA0nA64;myung0G7sol-D1H; blood group CDIa07e03iYoSyO;dianQs ifaNthmO;! O;and4XQgaEBV; vV1;dOmbDna mitG;eOiDWNoden7ML; C0AsO;! schol48CiaO;!n O;bu45WridgeBLK;anna pRnO;ePoO;c4FQvBP2;!land-palatiA1V;ratcheE2Q;a Qnzy fel8E4toricPumatO;ic7XOoid a091;!alB7U;du8L9p45Jri6KOseeE0W;bdomyolCPYmondreO; stA8F;a52b4Vc4Hd3Ge3Df38g2Ui2NkD06l2Cm24n1Oo 1Mp10quiem0Zs0Ct01uCJ7vQx PyOza 102; 7KSkjavík,nold7EZ;bu89RhaB45ry1tilleDPX;ersVisionTolOue starlE8B;utOv0;!ionO;! of Pary O;armed forces of co5IGgirl uteDWM;digBXSt6QC; cDGYist O;wes6NE;e Oi;dns lookDSReDNNosmCQLpOtranscription polymeraMN;olishAYLroCLW;ailWiUroSurn O;oPto O;castle wolfeDBHhogwBL8the blue l0BL;f the On697;jeDYUobra diDT9;aOvBOA;ctive2F7rDZ9;culocyte product6CFnO;a52Sol;! O;b48Up4PP;cue of jessica m7HFe02iXoWpTtPurrecOveraDGJ;tion 942;aurant Oless legsDU8;gordonPtoO; anotherE96; r5JN;awCVNiratory syPonsiO;bility assignmentDQPve web DPV;ncytial6VVstD2L;nCOZrts world6J9;dOn,stE72;ent evilPualO; nBZO-current9IW;! O;v5ECzeDYM;archSrvO;ationA48eOoirA48; Od ip addre4QB;baOcu7PU;nk C1B; OgaH;and Ostations inGItB1QunCRY;analysis 8EOdDIH;! for4JL;eat p8XDli08r04til02ubliO;cOka srpsDEZ; QanismPs of O;ruD6Dt7MF;! 7DP;of OrC6Z;artsa6JBcSfRgenCS1irelQkProse BYCsingapore4ZWtOve0E5;exE9Vh7X0;arDDJoreR;andC3O;lDMUormoDRC;hinOrimE3S;a O;aOnaCN5;irC5Yrm9X2;e,ian O;cAX3humanoE72;esentatiOiseC2X;onal state OveBTM;trO;ansf0;cation A5Yt;haBS3speedO; wBKJwBKJ;aWdeVeTin–angiotensi7FCminC43nE5Qt-a8HRéO; Pe O;elise goldsbA6Czellw9JR;aPdescart3giB3JmagrO;itH;ngélDM6uberjo4G1; 889eOwableANKé 5SK; g2U8;rE19zvous with 8T1;issanceRtQultO;! O;clD7Bft,iD3Nmé929;e reinsDYAo s44I;! O;aE96hOt517;umaDY4;ain 1AGbr8WDdesivE56eRington E75oPus lBZAy O;hE4Xl6PS;te Ove7H6;desktopDPWprocedure 81S;dQmbO;er the Orance of earth's paE5K;monster7K2tiARJ;y DIP;atiUiO;ance Sc DINgioO;nOus views2NO;! in O;aOcAVYgeCYHind78Hj92LruD50s8O1tA02;ncient DS7;enDIJi4J1;onal47QvO;e Oity6JC;kEpermitBJ0strengOthermE7V;thE7V;chsSdQ2gn of teAKKki,ms,nOwa;a ueE6Hc0L0deer0QOforceQhO;aBUGold mO;esE1C;d7E5ment 7XW;führer-E78tag O;buAKAfiB;enZgWiPression 8WOular Oé-jean DKF;ex84KshE61;a ma7TVmeDRVnaRonPsO; philb4tered trademark D81;al comprehensive econom8PXs of O;e69KfrCMLiA6JtBZU; Pld O;dy0veljE0G;cC6RhaCki8spektE4M;aePie O;buDZImiDZ0wCGV;!t2;cy eOsBOZ;n8GTra;ormQrOs;actiOig723;on,veE77; OaE3D;clB4Gj539; drumANRbDYId PnaBWNseOve88C; witherspoATK's peanut butter cuDI6;biDTChaB9B; T-Sbu8D3dRfQis,mi,neJoOs5CGtuC9Iuced instruction set7RGwaC–black DVO; of heOx;al0;aCoo; 8JKit;light2UFtailed AHY;army0Hb0Cd06e05fo04guard03hYjXlettWmeDT3nose day ac25TpTrSsPthreadOwoDCP; of DWC;caBea,kPpaAHYq4GUtaO;r belgBQWtes and blueDUF;eD3SuC;iDW0ose4B1;anE5Dill and blu3Y2roducO;tioO;n CXV;er6I1;oBM0unglefoBC5;aPerDJQoO;od,t chili peppeA6X;ir,tO;! enterpriseO; lCVM;i1s;rt,x;lCZFnveC8W;aE40eOwaA57;adOer;! O;onDU1reO;deOvo7VU;mpE2E;lRullO;! O;gOp1H7raBLO;mbh;ood 7G9;! fDI1;eYhargeable2JUkXoSreationRtQuO;rOva;rent8JXsi2;i7LYum;alACT;illessC7Tmmende6CFnRrdO; Oer of d1NX;of Op6KH;lodossD04ragnarDX6;quD75struction73D;fC4IiDXF;ivePnt Op tayyip er3ZTsDS8;african origin of modernC1Dd9ZY;d pronuncC9Or operating characte4TJ;aTePuO;ild of0O3s;cca Pl wiO;ls2thout a0MR;bBG0de moBJTfD3YgibnEhaCmiDX5romijn,sO;chaeCBFug9; mce3F0r;ctXdVgan assassination atUlOp0r02G; Q-time Pity Ome,politD15;bD6Tte9XC;o14Vs1R8;betFesBOJmadrid cPnuE03sOtime streamDJGv1UB;ociedE1PteI;astBAFf;temC1M;-only A7ByO; player 729-to-assemble furniDSJ; naDLVive oxygen6TBos; celta de viCTXaPd O;espanyE4Zm00G;! O;c0NYrC2O; leiB6Ymk;'s a4Ia4Gb4Bc3Sd3Ae38f31g2Yh2Vi2Lj2Fk2Cl25m1Rn14p0Zquel 0Yr0Ws0Lt0Eul j77Iv08w imageBN4yPúl O;ca6BBespD6V; Ua and the last BGLleigh scat4SFmQnaudDP2oOtheon4XO; valleOn;caDCY;an,ond O;abBFBbPcOfr8L8s107van barneveE40;h9AGrCXJ;o72VuDYG;aDCCbYcXdVharryUj,kTlSmRofE29r6HSstevensQwO;alD2WiO;lliam9ZAnsCXV;!on;anz3SHeaE38ilDY9;ewFi3VK;r75QurzweDI2;haus5;aOoAQP;lD3Avi3;h8DNomC9T;o0WKradCE0;aDQDeRiO; Ochandran a5NU;shaOtejaDYDvakDHU;nk9stE0Y;!ena taCK6nO; CPN'C9Y-symo6W0na,sbrückBLB; TaSionalRko mladD9Cpac-dunQs33OtO;!leO; and071s2FU;e DEO; D31iDV9;n3SEtouCZP;ki8paJ;cal does not dream of WhRpberryOtafaE0O;! piO;! O;f3MSos;aRidPmiOom2triya swayamsevak sanDY8; ACBka mandC4I; BZXa OunDWB;jE2BtlaDM8;ad pA7Wd eAQU;a dreamiObunny girl senpDSZ;ng AF0;bg,e-earO;th e998;ca6JSw9X2; DNKeRhael war2ESiPtuBunzelO;!'s tangled3BC;d Oer;antige8NBeye movement sle9DXtra62I;! during the occupat91ZlKseDZD;a daggubaCQMbir ka09ch dr8A9dWgVi UkOma ½,somDW6ulph f1OFveerDXR;inRs and insignia of O;natoPthe waffeO;n-E2Y;! armies offi47R;e1EOgO; 7FZs of universitieD8;lakshmibDSImBG4padC7E; CRHasthBQTe3UL; Yall XeWhirAE8i z7BToSy O;b8SXcQgre9GTjD5WmPneC90o8TPq7PCrh04HsOtrD73weDJC;a5XFtBTH;eiDWRoE2P;al5C0ouDQI;lph QmO; O-75Vized controlled1H5neE2M;access memoDUVfoCP9hE21number3M5v6PQwa9W8;ch8U1sBRB; 330e heDUN;cu9UPe802paDZI;al'OcCM4paC1Q;thE04;po6HV; 00aUbTeRiQjDZSmsD3ZonB0FsayPu6zOónAW3;an kadyrD1Yi yous95N; m821's kitc2RE; malD0Fn dj5QQ;n,sO;h bal4ZNsesCT3;oAW8ut1;! rajamDU0d1k0R0nOyaDON; Pa maharsDQTi durvaBZ7ujaO;!n sumDH6;spectO;rosO;coE2R;chD2GdaE21gopal vDVBmohanBS1nath koCSNpickDKRtrCHR;f Tly 7J8phO; Oie3FJ;bPfiennesD4UinD0Glauren29ZmacI8nOriC8Fvaugha7NGwaldo e2XS;ad0or4BE;aksDQJel1J4rO;eaks the iCZRoE00;li8TErang8P7sc3E9;esh jhunjhunB46im,shPuO;l preetDWIt5;aDKDit6D1; Sas5K8eRiQkummarD6JneeshOon r4CLpBWXya 242;! mBRYpO;urDZN;nikan2UWvBP1;ndra7LHsh1L;kDS7raja1S9;!ders of the lost0CMj4lWnQsing O;arOdi2the flag on2BA;izoDNY; SbowRdropQeOfoCO5mDONn 9BXwater harvAK4;r Oy q1Q9;maria rilD43werner fass4Z5; 75Fs keep fallin' on my DY9;! tDY3;m1of4JOpBUH; t4RgE1Q;eemCU9m e0ONul O;dr9Q7gBOOkO;ohDT2;'n'boneDXNdoCe against62OiPnarOtiE26; lodbrDT1ök;ng A6W;ael Re PfO;aella carrà,ey ca6HO;judC7XsO;paC;aguilar guaj80YbenítDUXcPdos anjDTTnadMtrO;ujBTZ;aro quin55PzichDTR; Okw2;dawn c1Q0sremmuDZP;a04e02for01hYiPoO;n,van karadžD6F;aUcal5YJoPsh,um7M9xO;! 4TM;! R-frequency idenQactive Ocarbon daE22h57Visotope thermoelectric4XFs9T1;contamination from the rocky fOd6D3w6VA;lats9K1;tiA1Q;city music CULfC98spBGTtelevision of k419waDQX;n,tionO;! 96C;a Pe shyDYJika O;apHm044;krishnaAQ2mi79B;d CSZ;onOtzkyB4G;! rx vega C3Z;mel falcD9Cr;co2e 04hTiQketOlD2P; AZJeerO; influenced and corrupt organizationsDCPi8;al segrega5XnOsm8GK;g O;gaE17v0U4;ael Xel O;bVcampos-dufRMdUfr5VWgrShuRjDTNleDJNmQrANZsPtic206wOzeA99;aDYYei2B2;enJBheCCF;addDYZcaC48in0;nt0rd-D7U;e5iO;ffitBHP;olezMrBY0;iD45loDGArosnA2V;ha9PYleigh7S0s4A0ta8XV;and Ocon5V9;crim51Lethnicit247iBQE; ne bana di joDOTaRbitQindranathO; taO;goB;! rabbitY5;t,ul;njhanC0AshiOzi; khC0R;l ghBYW; 1N'orianka kilD1F-1Ma1Ibit1HeBCKi1DlipBC6r 1Cs1BuOwC51;a0IbDX0e00iPoOr1tb min9venzhané waC5Q;kD5Kra,t6EX;bi,cWddDOYet BIKnPque sánchez flD1DtO; indiaBPQo;cRi6oa,tO;aPon O;de koJjD2K; bruDSWna rD36;eOy9QC;!aO;ñeG;!kO;bDQ9soE0HtiE08;bec4JCchu5R9eUnSrRstPtOzoB64;iaCHPzalcoatl86I;iOloDPG;onnAM5;c3CLy 20Q;tin Oya;criC2YtarantinoDTK;nOr; Q's gPpiNsO;! of the stone8JMlaDW5rÿcDOI;ambDWDuaDXR;anne1HObDRRdiDS0elizabethRhyoC6Kii,jeongsDZClQmary university 70Sof Ov5YN;sB2Othe O;damnDV6u8PL;atifDQ0etizia BDX; P-class O;a6IBbAJG;ii,the queenBIV;d07il,keDXTl01ntUrQs9ternOvo;aLionO;!s and spatial roCG3;anBIKk,tO;erPi7zO;! cDHL;-l13JbaJ;iSumO;! O;b5NBc8OEdDZWentang94Hfiel51Zg1ZTharmonic o84PlPme8QXof soDIUpBKAsuOtunnDS3;icide andAK1per8Z4;eBYVogic DFE;cDWBle,tative O;eaDO4;commSiO;a,tO;ative5NUy O;ass6NLof O;liDZ1sAY6;! snapBAC;rOtrDR0;aRiPoO;!phBWV;ga fintech sBVlateralO;! security dialBLR;ntiDNYtO;ic Oure amplituCFP;eqBPLfAS9; worl8KP;coCMLd8YK;anlong50Tgo8l4nOyu50P; PgO; dBAKdD6ShDNI;dBAJshi h663;torCMY;nQsBKYtarO;! O;aCPYinvestment99OnaCSK;on,tasD51;fBV0le7OB;faDLB; versus npAIJ-UHaMFbsMEcMDdM8eH9fH8hEYiD5j D4kA2ClBWnBUo75r1Us1Ct17uYyOère lachaiseBQVéter márki-zK–nHF;chaDLJgmy5IOoWrStO;hOorDMZ;agorOia;as,ean tO;hAXYrC0B;amidQenePiHolCCYrhO;ic v4HLus of epBBU;anAPKes;! 1R5; yeD60ngAYZtr ilyich tchaiCAG;'er6ZWb0Me0Kff4g,l0Bmp09nYpWrSsQtPyi,zO;hu,zle v0R5;loBDBrefD9Pty;ha5WUsy O;caDTZgaloBriDYLt8Z1;chasing power paD7Adue QgaDXDiPple O;hA30m1; jagannadh,m,taN;phDQCunCFX;etta maresCN0pO;et on a 1YMy;cVeUiTjabSkQtO; gDXDa O;a5CScaDJD; Oy33K;roJs56K;! nation6E4iB9B;c CGNsh0;!eth rajkBLD;ak jayaPhOtBOD;-drunk9LFed 7O1;! regC5B;edOk4; up kAUQ-storage hydrDE;itzer prizeUmonary eTp RsO;ar,eO; oxim7DK-O;coCE8width CE9;fDAVmO;aga985;deDPRm0HJ;! for O;d8HBfDAR;lla magi madoka ma6LCrto O;riDJLvall1Q7wiC6Y;erDR0gCFXic 9XFliOmDSM;cOsh–subscribe69K; O-key6ORation history of marvel comics crossoverDSR;coCNYdomainSeBSKhRiQkey Pr8YWsector undertaking5N4tOu7A9;ransDL4;c4JEinfraBNU;mage7I0nvestment 6BJvy;e17Tolidays in9IQ;! O;dKin8ZE;eroRolemO;aic PyO;! i sAF1;dB8OkBT8;carpus santal1CBdactD9DsaDDC;a04eudo03ilocyb01o475v eindh1U2yO;!chOlANL;edelic YiVoO;-CNSaTkinDM7logQnCA8pOsFth91L;athyOoC2U;! che4F1;ical Oy;d8GMfDA2hoA8WpBHXtOwaDIN;hriDNSrB1D;ctive05YnCB5;atrOc;iOy;c h5HHst;drATPmCHRpD46roJ;e cub9KZinO;! mushDBS;coCK4ephedD02monas aerug7VPnDH6r4S3sB6O; gDE4lDUP; mBRJa4Ne3Qi1VoQuOzewalski's72G;e l87Gnella sc8WZssiaO;!n2LS; 1Nb1Ic1Gduction 1Ef18g0Zhibi0Yject0Tk6D5l0Sm0Pn0Oof of 0Np0Fs08t01ud 00vPxO;ima centauri65CyBV1;enceXiO;ncePsional O;government of the frenchAZ6irish r3T3; ofTs O;and territoriesA9Vof O;cAJIiQnepMsBA9thO;aiDP7e O;nAU0phDJ8;nd64CtaDGS; barceB19;!-alpes-côte d'azDCE;boCONmaL;a7F7eThom aDNCiDSQoO;-PnOtyDK5zCE3;!maD8Uv69H;germani75Uindo-europeanOsina59B; Os;laD4Dm98E;ctorate of bohemia and mor9ZZin9GAro988stanCAMus;ciAPFeTopagnosAperity theoD4TtOus;aOhDL3i9UH;glQteO;! O;caDL5m03G;and4;!cDHT;aUerties 6PIhetToRrOylene g6CZ;anolDUViO;etary Oo68T;lBU3soCGC;fDUSrtionalOsiDR3; repres7I6;!s and messengers BT2;gDTGne;conceBR6s6A5woDRB;gDKQoDUP;aBethPisO;c8MUed DOCing youngWX;a95VeD;etariDGVog; Pions of populationO; g6V5;g366haPjupyt0mOpDA5ru34Rver6Q2zomboDSL;aBT0e5OJkultG;bakkB21il BGN;tion8AA;eVnatBWRrO;ammRessivO;e OiDLJ;eGhDTCmCMUroJsupranuclear pAQ9webO; ap7KR;able logic 0CCe for international student21Ning O;languageOparadigm;!s used in most popular websCVP;rAsCTY;aBHDessOumoA6M;ionalPor O;laC24moriDOCx;! O;dartsCD8seCG7wrestlingO;! match 9MI;car speed 8IWmCFSof the O;james bond8E3lord of the rings fil08Z;eOol h1LEra5Z2u23;dural7JXssor regiDKE;abilityPiBVTlem O;of AJOsolCAG;! O;dOmass DFBthBCU;ensity DFAisAMF;boRevolution s1LYfootball hQkabaddiD62t83Fwrestling O;illustrOnoDKG;atDPK;all4CG;no,wl;c1Dde and preju3EXm13n07o05pyDFVsYtVvRyaO; bhavaniBXCd2T4nka O;arul m3JOboDSLchopraO;! j5OJ;aOy council 841;cy8D1teO; Oly held CKP;eq8LLmilitar47RnC0S;am,hviraj OiCEM;cOkDJJsukumCTC;ha1EH;cilla TonOtiDFB;! QerO; 5FD's dOs of the ghostDMX;ilemDM3;b5HLpOscB9D;lay8DH;ch1p1XT;n,rO;ity queDI1y of DFN;cPgl3tO;ed circuit6FXf format 1U7ingBFBmaDEU;eQipalO; Oity of sCZN;compone1YHph4DF; 00lyBC5sOtoBB7; in the7C7s O;alice of Xbeatrice5C6cVdeokhAY0eThaya bint67Ojulian4NAleAmQstéphanie of m8N3victoria O;louise 5MQof O;hesse and by89Wsaxe-coburg-saalAXO;arPiXononoCV0ärtha O;louise4SKo90L;garDPOina 05;lisabethOugenDQZ; antarcBVZ;ecilie 02harlotte of O;cXw8TS;baTt8IU;aXeWgeorge of cVhUjoTlouis of RmiPof Owilliam of glouceDJ1;p0JPw8TP;chael of O;keDCS;baOcR;ttCTB;achim 5MAhn 82X;einrich ruzzo reuss of plau5isahito of akis10C;amATM;dward BHDmmanuel de meroCGJugene of savCGK;lbQndrewO;! O;of greece andCOA;ert of sax47YumD5H;'sANOaUePitive 7GZorO;dial nucliCGDsky krDHD; Pira B8Cra división rf8UYtime emmy awardO;! for outstanding comedBV6s;minister of Onumber74Usu6YV;au94ZcaA6EiOj8MMm6SGsw8ZWt8IA;ndAsDGK;lit3EEry Ote;c65GsO;cB83ector of the8M0;eOhard colBMC; PwaterhousecO–earnings754;oo4UN;elasticity ofOiDRV; de9FP;-0Iamble to the constitut6MUc0Fdni7APf0Eg0Dhistor0City zinDSRju3D2m08nuptia07sQtO;orAty OzI;boy0JXcuBgood privaBZWin piCRYlittle liaDQCwAF8y3OJ;byterB7Hc03idenUsOter 7KQ; freedomDROurO;e Oized water9W3;c3V9mO;acCOWeO;asuO;reD25;cy of VtO; Pial O;medal of6FCsyBTJ;of Opro tempore of the united states se9I8;chi7f7ETgeCHUi5TFme8T1ruCODso7EKthe O;european PpOrDQunDEY;eople's rDPhDF1;c60EuD2P;b632d630j9JEthe council 8KS;ott3ARription013;l 522;am,ierO; leagueOship rugDMW;! O;dB1Yrecords and7BX;ic6NDy;ab7IZn9LG;ectures 3XIrontal c92S;ambDANe90LiOog2YX;ousOpiC7Xsion and re7KH; mCJF;coOejacuARWraphaelite bBGA;de5LYlumbi6OH;bhXdWeUgPkash rD79mila jayapMnaOtama aDI6vin t8OF;b mukhDH5v mohanlMyaDJO;e4QYmaQueO;! O;astronomical cD9AcaCGFspD3X; 7WNtiO;cs,sm;torianOy for9JJ; g4AK;a,er–williDARhan mantri kisan samman nidDES;as,u 65R;aBPDc4BdcaDNWe4Ag49i3Zk3Nl2Hm2Cn28o26p1Fr0Rs0AtYuXvWwerOynting2CNznań; PaD9AbaClTMpc,sOwoCWD; bootDFKheClaDGB;brD0XfSiC5NlDG2mCIYoRpCYNrangersQsO;eOu0O1;ri3t;! dino9Y7;f3LGver55Z;aDDKive conCB0;ertyCYVidone-io8G2;ltLnd D68ti6;aTePplD6BsdDNRterO;moBy;mkin v4USntiO;al OomDCV;enOsuper5MD;erCZRlargement 8JM;sQtoO;! O;chD2S;h,siumO;! O;chC7Vh9GNnC7T;e3YKi01tO; Z-Val codeTcoRgrQmodernO; OiDH0;arBIFli6DF;aduate92Desql;deOlonC97;s 6U3;!s in O;ba7D8caA41si7CX;apocalyptDQPcreditsQd7XQgr2QhardBHKimDECpunkProJsOt889;ovietDDAtruc0IW;! revAI1; s3O;ma9L8office passport seva keBOX;tOx;ivOron emission tomDJL;e8FKiDGM;c08firio AKIky5RUn03phB46rD7Vsche00tO; Xable networkWerVia deTland Sman68ZoRraQsmD1SugO;alBJUuese O;colonialCJPemDBAiCY0laCYHman o'CJPpeCWD;it of a lady o5O1yal of james bond iDLF;!fiCXE;ceCZWtrail blazeDNW; rO;osDGI; 3YZ's five force61U; g878;and starb9U8e1WKforwOmoresDKVr6G5wi6;arD3H;! O;cayBEAmOpana75Atayc1;ac1;hAMBmd,ographO;ic filmQyO;! O;in3VFlaws by 2NO;! aDC4;eCMSoPupineO;! DDH; rosCNB; 0C-8DQcorn0BeXpUulO;aOiDFW;r Qtion O;d6CMg6P9of canadaO;! by province andB5E;cCZXmO;obilizationB1TusDPN;eDN7yO;! O;de9A0moAGFplayDP0seDKD;! PyeO;! jDMYs;aXbWclement VfUgregoryCQ7hormisdDP1john TlQpOsilveCYD;aul B8Wius O;ix,xDKZ;eo OinD;i,xO;!iDKW;iCY3paulCENxxiDKV;elix CYOr84O;i,vDKT;enedict xB8Oonifac2DT;gapetOlexander B8N;usCPW;! DOLflD4X;aDOUmC9UpuCOBrOsmoCQAteam epDP4;ap,oJ;d7jaOn lD2J; hegCC7i;di06Sg,tOyo,z1HA; du 6U2e mo6FTiO;ac Ous piAOW;fire5PMgD67; RePodoro 8B7peO;ii,y;gra9EMlo,raniaO;!nCZ4;klement577poCWS; pDOOa0Oe0Li06ka05l02o01t6BIyO;a9PUcZdorBHMeWgVlact9GSmSnRpPsD8MtOuret3X2vinyl chC5M;etrafluoro4APh1DT;hOropy4AP;enDNIia;es3UWo26A;aD66erO;!aO;se chainCNW;on,raARG;st0thyleneO;! O;g65DterephthaAOD;a9E5ystic ovaryD7I;! g,niD8P;utOy 1KD;ant standardsDNAion of the gaO;ng3;!-dotDJ7;ce 00oZshUticO;al Po,s of O;cAB2t9F6;appointments by3SYcorrectDMMe8H7pPsO;ciDL7pB2Status ofC6D;artOhC1Z;ie5W1y; P–O;lithuanian commonwe0Y7sovietCHB;aPhus1QJlanOp6VSzłoDH6;dB04gCW2;irBJRlBJCrB02;! vAM4;in a pDNIranks OunC58;aBEHof98Y; PnDNRsO;!t9;of inacces7YTwe716;ndBH5rO; Ois;bearOc93S;! plO;unD5C;erYi52VémonO;! O;bUdiamond andVevTfirered and leafgCQ5goRheartgold and soulSomega ruby and alphaQplatinD7VrPsOtrading card D79uA7Dx and y,ye6CZ;un and DHLword and 5ZO;ed and2CFuby andO; sapp9JD;!ld and O;si7BZ;ol855;lack andA51rilliant diamond and shiningO; p0CN;! pAM7;nTrot's earlyA9FsO;oning of sergei and yulia sQsonO; dAER's O;eqBDArB1D;krO;ipM;caré88MsettAtO; Ps of theO; comCDI;and c6TDb5ACg45Wof AKI;c1B2rD1T;'sC79tL;ahontDMHoCSK;c financialC7YeumoO;nAthorCYA;aXeTiny26ot of the rue saint-nic25LuPyOácido 87Q;mCY5woDMG;g-in4OYsQtO;arDAPoO;! C84cB6FniD72; and minus s6Y–minus D1M;ase pleas760dge of allegiC0QiPurO;iC88otus ostre81I;ad3stoO;ce6;ce0Kg0Hn0Ast08tYyOza4EI;bTerunknownSing cardRstationOto6;! O;nOportDHPst0QKviDMF;etBSSow;! 88N;!'s battlegrounds 5B8;ac2B4oO;i c6XTyO;! O;m4TUplayD1J;eVform TinumQoOypD;!'s retCQJnic Oon;loDAZs1A7;! OgCKR;eDHTjubileeO;! o7XC;asOgaDLK; aAKH; OlDHX;ar7FYtectoBSG;er,ic O;heAVRono 7WUp187sJJ; b CVFckSd3NNetPkt2ned parentDLJtO; sym05Har04Q; Pary defense coordination 45Ds O;beyond nepB09in a46S;h0ni6oAESsyB6DzCO3; O'sC63;coAY9l5KPu3R5;iaBJMueO; Os 6GX;doD7Vof justiCG1;bo,s1E4;ha7L6masDB5;-1Fa1Cc16d15e0Tg0Ska0Rl0Mn0Bon,p06ra03s01tWvotDGSxQzzaOñaDLJ;! OgateA8K;hBF8margheBZ;aQelB9EiOlr;e Ov;loDC4;bKrO;! aO;nimati6XM; 9PLaCSQcRtsburghOuitary0C;! O;penguiNsO;leep quCQRteeAXO;airnCISh perAPN;a,tO;aYol;cy,nhaPteO;d movie release 9CJs of the caribCXP;! 6X9; torReOpi longstD41; Pr O;a553la9NZperaA48;boCAYo8EL;reN;-upC4RbaCeVgu,kQnipDFQoOteC63y4;cOy big broD68;chCIN; OpantheCVB;diDCEflO;amingDC3oydO;! O;diDCB– OP;aOw6X2;lOpp7; gDD9;aRlarO; Ps of O;crC6e5AY;of s4WS;f,t3;!cARD; 9F8eonholeBLR;ces of aLMdYl B8FrStPzO;oe3UY; mondD2Zer bruegelPro O;d'abaCREscCBW; the eB20; paolo paACRce brosn1oCZMrPs O;co30Pmo8DV;eOot; P-O;auguste renoDFYemerick aubameAKCsimon lapD31;bou4J3c9N4gasD4EkoLlavMomidy9tr2K1; piper of hamCI5moD3D; 013g4;atinny BGZkPo BZWrC6CsaDJStOus;s,ures at an exhibiDF7;etQleOup t8ZF;baCd cO;ucuDDP; feDIIt'sAPM; DAHnoO;! key frequO;en9AN;ho7rame3ZF;a1Oen1Ni0Enom peAKRoZp,rWyO;lTsiO;cPoO;g9YSloCSB;al Oi1;attractiveDI4fOgrC2AlCYOquality ofNRth8NX;itDI3;icia rashDEZlis Oogenetic D77um;diDA6ge9VOl9HWsCRZ;ases from the hitcPeAT8ygiaO;!n cBIG;hhiker's guide to127;!eXnTsphRtoO;electric ANTgraPli5W3n,pDD0sOvoltaiBPX;yn6FN;mm6YVpDCH;aHorO;icDGAus;eQk,oO;graphOn;! 872;me,pe,tiBPPyCCI;be RniO;ciaPx sO;ky harbor D6DuN;!n BE7;bridDBBcD5PdynevDF8fCJUnich7AHto18Iwaller-AJA;! beta85HlPmBY3neas Osh8X8;and ferb,gaD0Q; 0Ia0Eeas0DiVlipToO;loCRKsophO;erQiæ naturalis principia mathe66AyO;! of O;friedrich n59LsASL;!'s4CM; Oa sCL3s exeter29Y;huA8EschofBU3;pOstD5G; WpOs;aDE6e SineO; Os CC0–0QU;aOeBNPleroy-beaulBSQnaBVNpeso3M7re90Nst3M5tr95F;irOrBDH; fBEGlD5A;cPoCIJpO;ozzo di borC6BéBQC;leCS3out2M9;bak2AAg5O4iRle84BmQpulA48rPseymourOthe9BLv AW2; hD9G;iALIoD00;c05Vichael 75HorrisBZ0;iPv of O;frBWEsAVZ; of Oi AVW;frBWCmacCTFsAVX; foC59;delphiaOnth7O0;! O;eOflAP9inD5G;a5YGx6OL;anselBTKbARLcoXdWfAJKhUivEjCJRknDENlSmRnCCOsO;iOpeD4A;lversOmDFU;! archival45I;cCAYickeCKPuBL7;a48Eord and christopher D8KyO;noD8M;ar8OSeO;aCZHllmuCZH;o6A6unD7A;llOuCKJ;en,iCAE;cycli86IibBBHol,ylketon3OB;lVnSrQse-O;lockedOs58S; loCOU;aCXCise3macOoah75Orel08Q;euticalB8Ey;ero8TLtom O;bOst454th3C5;loDH7re9GW;anx ciD80loplASS;c cskaDEUiz0;a4Cc1d45e3Zg3Wjo8VRking3Vl3Smbroke welsh c3Rn2Zo2Qp2Ir1Hs1FtRugeDHEwdiepieQxeDEZyO;oHtoO;n mBC8;! vs t-BJG; s1Aah tikCFSeXite m2SErQtOula0C9;icoatOy harbour–maddox coD64; juD1S; TarD58oO; poroCCXlPnasOpavlovsk-kamcha473;! C4I; eBV2eumO;! O;iB7XjCUT;fiaDG8y1čeD52; 0UrO; ObCTBlooA4E;a6NMb0Pc0Ld0Jf0Gg0Ch0Aii08jCIOkr07l06m02nyCCFoBKHp00sStQustinCF4vPweO;ir,ll0;auBSK;hOoDCG;eCL7iI;aTcSeRiQtPuO;nC41t2OB;ee7ormaB;dd7ng0;lAT7rafin340;h2D9olaDCDulD10;fr1rsO;g0ZYteCMQ;aOhA3BrBI0;n,ul ru54;aQeij0oOu9MO;lOrg1;yneC4Q;cnicDFEnlE;awC63orBynD4G;auDEGopoCBZ; of OiCCB;ruCCDy9K4;i8CEoO;lm,rt2tD8S;aQrO;av3iffiO;n,th;briA15diDG6lCMV;aPinD46onDDVrO;amCIReu5RK;c54Plk;aOinklageCHJruAUQuesCYE;szCBXvCB7;apBFLe3QEhern4oQrPuO;ll5s9V1;aCBQiDEJouD3Z;ok,yoH;as6TUeCY9illPoOutterwCR5;gd1T1y7;ingBG3;bRc9IZdPhegseCXHmaraABCpostle0ZKroDDVsOtownsheDBKw8W3;amprDFFe8PU;a4AOoO;ct0hBJQ;eDC3uO;rNttigi9VQ;emaD6Khop ADFoUP;cetarianD1Ehaw9tO; 83OiB6S; aspera ad aGBc0Jdita3W0e0Hf0Fi0Bl0Am05nell 04petual9DCr03sQtOu9LDvez musharrCGX;hOinCR1;! scorcALI;eXiUonO; of3RZaO; and reception of roman reRlO; OiBFU;cOdigital as4OWf74Slife of clint eaC7Brelationships of paul 1P5;aBomBTM;igN;anOmm2; Os;cD0IguCK4laCNE;pOus;ho6olisO;! 4EJ;ieCLBy 1T5;rB2Gw66F;aRiOuBV2;anOtAP7;!–triO;assic7ME;cCPAfCH1;!in nCDZ; giA49cQneCZBodicDA6pheralPtonO;eCZAitF;! neur9LX;ardBKXl3;ect Oormanc03R;blD2QdaDACnuD8Lworld6W4;grineOstroiCJBzAIU; f2KY;ePivMussion i9JHy O;bysshe sheBD7f5ODjCGD;ntPptO;i2r2;-8N2i7; Ue TiSpPsiO;!co;a pCA9erO; OmiCXSoD3R;pBHNx;jn lijnBQEn the shoDE7;r13Bt26W;guardioDDJ;ny,pleO; U's Os2F6;aSliberation armyQparty PrO;epublic4IO;for freedom andAXWo9RJ;! O;a6A0groundBA2naBR8;cZLrmy of v6D9;for the ethical treatment of3V0power 8W5; 6O2a8d0Ee0Cg07i03nVtOélope cruzD75;aPecostOhouse a1D3iCYGose phosphate pat4EB;!aBX6;gPtoniO;cAB7x;on OrDAH;pa4FQufo vO;ideD59; TsylvaniaSy O;lanQma9IXsO;eOinglAEB;renaC10;caD38e;! 3B3;bad7A7jiOstate nittany lio0IR;llCEK; 7YGciBU5nsular QsO;! enO;larBB4vy;m6CZw9; QuinO;! Os of madag175;bD31randomDBG;lOshuD1O;ei,iyu1;i285lope O;ann D40foDAQwiC9F;leton 9CNulCXQ;orCSP;ic1lPoponnesOvFé;e,iASC;agGi sandD8O; o8DP;aPgy lO;ee,iCFR;sDtr2;-wee SrO; Q-to-410ageO; of Os 6GE;eCSNt829;gyCWAre7LT;heBZ8;agoCLLerastyTiat7WPop7P7rO;i,o O;alQc0RHiOpaBSDrodrigues filC7KsC79; Oi O;of br6ZC;modóv9onCAB;! in ancient7RE;!cTfoAHBky blinBOPnutSrOsants'AICt;l QsonO; O's chi-squared BUB;correlation 4QH;hAUIjD95;! buBD9s;e QhO;! boOes ge9PH;wl,y river9V2;doAS4of KC;cPfO;! split and merCU7; Oa;order of mA5Gworld O;cup4IQdAAJ; CW3i9N3partpiAQY;! 01I;an7Oblo 7Nc7Kd7BelDBFg76hlaviANIi70kistan6Xl6Jm6Fn5No5Kp5Ar39s2Wt1KulZvWwTx ro2ZEyRzO; OuBTD;de la huOveC8M;erDC6; 934-per-7KZo5LYpalOsafe720tm;! mCCF; paCHIan kaly1eł teclCDFnO; sOe596;a3O7taD9O;aniPeO;l dNHment condit5D6; rB4B; Z-peter tC7Sa YeXiQo Py O;d,s8EJ;coelC6KdybaDB1freiBs2FQ; TnO;a porizBH5e O;cOepisCV6mcA93;hOol9KT;alO;amD7N;e3GCmatrCOT;tteS3y perrCCJ;abdB9Fde5hiC08jD94new86YpaCDQr5PZyCYB;a0Vb0Rc0Qd0Pe0Ofe0Ng0Lh0Hi0Gj0Fk0Dl0Cm08n07o06p05r01sYthWvSwOyBIJ;alPeOhitBQU;ll0slE;kCTBterO; ha7XM;arC9AeQoO;lAQ2n hindO;enAS3;rho8DR;eAEXomas aO;nders9WT;cOhaBG9im2o0BNtaAWYun-hyung9A4;hOi5U0;ol3r93I;ePiBBVoOuddD49y1;bC88dD3H;is0uOveB;beN;i74VogCS2;'g9ACf7PP;ewmD42uCT6;cOeBQIichael gl9E7oBE9;cartneyOgaCSX;! O;an963diD2K;e 2AViebeC8GynBY4;aOlD29ru6LK;gaDADye;oseph6UHunger 2S2; oC6QsC1J;ePoOubschmD7T;g1l54V;at2nOym1;reD7Q;aOe9MTiamAZBleD6Qos9reeng1N3u1ZX;sco1A7u7YU;ig,ld0;at2rdős;aCHNepodBKKirB8G;astelBXBéz32W;eQiPrownX7uO;chheD6Fny1;lCT2sso6CDya;rn78Wt05B;degboyega olaw8V3ll5nCEXt1IR; 0Pa0Oh0LrWsy UtO;aCHRiPon oswaAWQy O;duCBIh4YRjAE9mCSIs5AG; Oe bo868;dCD4haA2MlPsO;cialC4BmiCRU;abCJAuCD3;cCWYke584rO;aA4Xo4UW;e2iPoO;clDnymDA4;aCY3cPk s9WDot Ozia reggBUB;aCKZfC0Q;e 05i01k O;baZco450dXe7E4leaD34mVo'bCSMroTsRtro8HDvQwO;aOhiteC7AinC75;r47Oy6;allBNZiC6P;c72Fom54AtOwayA6J;ar,eCCE;bC2DthO;fuD8B;aOcgo2YU;h65CrleCNI;e32EoviCP2ufO;fy;mBZ9tBPF;a Oo mC41;arC48cPde lC47gC8DhOkrenwiAZDneMrout5Q5;aCWAeD0NighsCI0odCRB;l2Q1oA0K;désiPlumumCQGo'Orush5;neM;leD4S; Ofinder role0Q5oCI1s of47é;integral forOof exi7;muBPN;gBG5udBC9;bVcUhiTmRnC75rQsPtO;il9V2oomE;ajC53me9ummeCQ8;ilEoBK5;ah64TcafD0KetheC3ZoO;riD95;ng7tch8RQ;aD09umAJN;enOoo6u679;at9;calYhtXsQtO; m7W3a,eOraD0K;b4u397;age on the lady 31BePov0portOwoD6A;! to pimliCUP;ngerOri6; piCFVs of theO; tO;itO;anD8T;o,uN; si6AT's O;t9ZVw83E;a0Ve0Si0Qk0Al06m03o02rD8Ms00tOvathy thiruvotAFL; of50UhXiQnership forPy of O;fiCXF; p4C7;alScle QtionO; AZ8s ofO; poD15;accel62Cb9CKpASTswarm oO;pt0OJ; dOly orderedCKF;erivaCO4i72;enoOiaBGL;gCX8n;ec,iOlEnCK2;ng,s;dy,xeAQP;aPiO;giano regg4UAnder nagG;!lCTE;er,iamentOop5BP; of Pary O;rBW0syB96;eCNOf4ELiCFPso1O6t7XA; Rer Qinson's PoCNZs and recrO;eaD37;dCOSlCWK;posEsolar proB9F;avenCVUbo-YchXeun-WgUhRjiPmin878sO;eo876hiUo-dD4E;-3IPn-O;jCA5yBER;ae1J8ee-PyO;e-BTJung-sC2J;so2;euOyu871;n-hABT;b4seCY2;an2M8ung-hCZ0;gCRZyBEJ;mB45neeti6W4s OzaD30;ag4HFcommu6hiC3LjC98métCVFsCQQ;id38FntPsBGHto O;d9Z3efficiBENprB8V;al advi5H0i8;b0Ec0Bd05ffin wCIWg03ll01mWnoTpRsO;hu7QViBLTocial3JAyO;mpatheOte;tiAL4;hOsBL7;ilAraD5B;iaPrmalO;! 3JD;! aBU7; vir c6OQahansa yogRiliCY2oO;re,tD3DuntO; O+;aCKNnBDGpiBBF;anD4Q;ax,el O;c7VHlCTRmACYuniverses inCC2; agrawMuayO;!anC0B;iQoxO;! O;iBBAof 1PB;gmPse O;loD36pd;! s4B8;eOoCWX;lsDtO;amD5M;le of the OoD5U;good samarAOIprodigal38T;aTerQpy boyiBT0riCB6ua OyrD;cB1VnO;ew guinD07; PbackO;! wr5DP;mC1OsiA36; Ql OrB65ver somniferCQUya;naD5YsO;ho3tCT3;john's88Or7TW;k C95lO;a fr28Ro O;di canC44gC53mal40Anu5NVso0C9; D2S's laby1OS-a0Ea0Ac07d02e01g00ic ZjXkaj Wnonian avaD3WoptB2WpsycB7LsVtQzerO; Of8S5;i5A5viii 6MB;eGhPi3oOyhoD47;miD5One;eOé2;iCW9rO;! 9IQa;ex8JHpe5DC;kCLYtB53;a vaisshnavOshirB18; t9U4;a9FSroCKT;aCZJol4rD2F;er,tBY3;emicRorO;aOum; O's bC6M;pa47K;! sev1GH;aC6Xho vA9WreaO;s,tiO;c 7PZtF;maOsBKEvia tor1TH;! O;cOpa47D;anMiCYS;fB6Omerican45P; Qela OpAAA;aOcouCJMste1M3;dl2n75F;beesCPPdawb0fe8TZgCAIhuC0FolCZV;! 235aYeViUlSmOpaANU; oCHVa de mQeOyG; ACMr O;lu6I7raiCTR;al5CY;aBV6iativeO; caB;!ndCOE; PoOrBGNstine liber34N;coMUge6l8ELn7ZNzoD56;blue dD52of sett89NrBKI;ce of Od4ntir3WUu;vOw7XA;ersaiC6O;! Oi rupCWD;a584international869naOs85Etehreek-e-insC6A;tABCvy;ge Qm2nO; andOg takh2tings by1JI; g4N0;hPsMYturCQMvanO;zaCO3;o942uD24;aniQeOli7WC;rOt29X;!aC3X; Osm;huayGz965;dSmOre pC2Fua;aOé amiBJP; OavCPSnabhaswamy25E;bOlak5S7shD06vibO;hu6BN;ington BNXy O;and the Pconsi7T7mO;cgC2Y;raCZQ;-m1hPific O;crest tB1AnCDoAYFt8FJw9;elbel's c9S0inCCC;acosta villarAADescob9hBQTlarra8MTneruD1Yp0QMs1AW; singh t3AVi ch madhaaCTI;adic C25vCS4; 9HI'har9S-9Ra9Lb98c8Kd8De88f82g7Yh7Qi7Ojib8S3k7Dl63m5Pn4Zo4Xp3Fr1Ps12t0Ru0Cv05w03xTySzO; the great and powerfB1YarCTQonePymanOzy osbourAGK;diD3Q;! O;depleCZAlCJ5;myak2o r55Ist0;al8W4enM4fQyO;coOmor2toc4;do6nt4;am,ordO;! Os8ZV;english dQhOuniversityAP5;ighO; school8A6;ictioO;naL;en Ol3ME;haD3HwiC6G;erOid; the S-the-RcookCYIfCGHjustificatio52VleC4Zseas QtonPview of gun laws by 813wO;atch seasonalCYOoC8H; windD11;c40IfrBHO;counterCEtop mediaA20;garde5EQr48Z;d,grée-marihaA7MiBVFrWsmane dembé0AZtO; of U-of-place artifaCEFback7VSer TkaCZTlPsO;ide the 52RourAI0;aPine of O;academic disciplCQ4james 7CBt5BK;st,w O;ki8motorcycle8YS;he9KNp8JFs7X8wilCRR;our h4CVsCZUthe9JO; Pan high school hoOoborCUL;st8YO;beloved 7AQf84JgQkind of C96laO;dy of Ost crusade or the rise of a n97N;fátiCUZguadaluCQX;a8iA5G;aXhWiVsu'D1EtO;awaTer,oO; Om8K5;c8KSfQpremiCL6skorzeBXSvon PwarmO;bi0;b4JNh1ZX;arBY2raC25;! sena9GC; maCQ3s r80X;elCTSo;go,ku; x08a05c00ecCPYiZkar YloXmVprEtQwald O;moB2Ysp5YNthe luckyO; r29I;eoPrO;aCAJiCQNogotAIW;aPpO;atCVRorBHP;rthrB8N;anC3BiCMXosisO;! jD00;! aCQW;dirlewaCKNschinBWE; mBMCrF;arOillo5VNoB1R; O-C5F;de la hoC9ShammersteiCI0i9MQmich9IUnunCUTpOw4QR;eCGGiO;aC3Ks2TJ;ka,mO;a1SFu O;dazCQFte46O;! O;el capAK0m735yoseCE0;a15bit12c0Zd0Qe0Ng0Ai01knElZphXson WtO;hoOolan bD1X;doxTgQpedicO; sO;ur7IT;onalOraph2WI; OiCV7;frequency-division multiple1SPmCHQ; j3X1y;be1scott 6RQweC3J;anABCeusO;! and eury2M4;ando OyCP7éaN;an71Rb7TMcitC4PinCP3mCYOnightclub884; and the VchalcCM4entUgQini kaiJVonO; O's 9A0;n7A0piB60;aCT8en,inO; of Pal O;antigenic s4equipment manufactADAfiCWRs4videoB7X;laC9Pthe domesticCBX;! e9CCaBKO;blind BMPwill of the wisCBM;aOo6y;niOsm;c UsSzO;ationOed c74D; Os of the duneCLG;for security and co-operation5OMof O;americanCNZukrainian national90U;ation of islamicOm; co9H6;cPfO;arC34oD0W;h9LDoO;mp7BN;gOiBCMo;aC87onO;! tAY1;er of RinaOov35Kre des arts et des letBLL;l BYYry O;diOjBNAleast s1DHpeC70;fferential AR3;aRcQm9U0nine an5HAop2FYs7IVthe O;bOcompanions of h7IWgaCTLthiBPL;aCIIr7JW;a9E7hC32;ssas6NZ;!hO;estraOidaAYL;!l manoeuvres7JY;! Pal O;me7ROp61I;bCQ7ofCUQ;cSdour-sur-gl63Sl RnO;!gO;e Out1;boA54fAIQis the newAA1;aAAGrehydration 84TsCZL;ene4GEleO;! O;cBIMd2Z9;al,e06h05iUo5OWpoSrah win7XNtiPuO;ntAs dC7B;cal Omus p73B;character rOf6FYi8L2mCYB;ecog278;!rtunityOsitional defiantB0P; coCWL;nion polling QoidPumO;! BIK;! epidemic7EZ;for the next Pon O;scottish767the emmanuel macron p9SU;austrianSdEJgRiQpolishPspEJuO;krainianOnEH; parliamentaryES;sraeliPtEJ;erEMreekO; legislativeEP;anCDFelia lovi78Uiu6NZthal5KY;c,l0Jn09raOth;nt coC5PtO;iOors in c and c03W;nB0UonO; Pal ampli6ETs O;maAX8re93S;b00cYdWeUfi7Q9gTmQnorthw6G1over3E0paperclCBHre8UVse0NOt1ESvPwO;arp speCUJeserübu8rath 5D7;aAKJe6FQ;arPince73KoO;cki3B8;ket C5UtyrALC;lBLAraCH0;agle clCO4nO;during5MEtebB0Z;exteC85own1A2rO;ago2;artwCK4hastiCXFoBBTrossrO;oaCNU;aPluOSoO;denplCTXlo;gCUHrb55L; U-Qai,b4RLcPdNgl,jdk,sOv5CFwCZ1;ea,treetmAY8uCX9;l,v;mid Psource O;iAO8lAXCsoBJL;back Ofront unO;rounded vowI;acCFAera tennis records – men's sin5FFl8QGmCTOsOunBGHwCX9;hortest pathOo79C; firCVD;! O;aOcAKD;stG;na Ort1EG;c4FZo5FH; 0A-board diagnosAV4ce upon a time in 09danseR2eWiVlPomatopoeAtOyx;arBWNoC7G;ine RyO; OfaN;fools and hoOmurders in the4ZD;rs3;advertiCMZchCJXfood or4EPgamOjavascript iBLWm4QRshop8F1video483;bCQUe;!on,si2; R-Pco4dC1TplDrBMJshCYKwO;!orCWS;child7H3pOtime pCTZ;artyAGQunchCTI;america ne2KEchCA6d8I2foot in the 523hundred UoSp81ZrRspring8NBtOw7K6;hOimes 37HruB46;eOousand and on97Y; w9KX;ace7HHi8;f OrdinaryBAE;th9W1us is lB24;and one dalmOyears of solAV6;atCMX;aB6Lh4SCme7YWsha5WKthCUJ;becoming a god in central fPthe O;basis of7S2origin of5LDwaterfBOW;lo4YD; ZaUeRicronQniPoOsk;rCL9s;-m1scient interfering 76W;! iBVO;gOprAQZrtà;aOle;! CF4vCI3;ha4An,rO; PiO; hard7WHon;al-bashCTObraCREepC7YkhayyCUDsO;hHOy;mani padmeOshanti CCO; hCI5;' dirty bastaCV3a0Vd0Le0Hga 0GiYkiluoto nuclear p4NLlWmeB4Aof palCX9ubVx,ympO;iPus O;haB6KmoN;a dukB73cPque O;de marseBS9lyonnaF; O-class ocean lAZ4;gBW7sp9T4weightlO;ifCXE;ad1;ie w035y O;a8A3muCV3; BCBebCWCgaCLHvO;eYiO;a Per O;gi16Ama7MTs8NV;cTdQhPjaBKJmuCF9newton-6PDoC02rodriBL5thirlCS2wilO;de,lB6H;a9PNoAJOuCU2;'a9GIeO; havilCPVjO;onCEY;oOulADP;lm1oBYC; oC9Mr O;cr2M9hQjackson-c92LmacgreeBA4nC8Ap9QNreCRXsPtO;o7CYrCOFwiCTE;acCMLto6yk3;aOuCDI;rCFKzard perry-CCF;kurylBSPmered6Z2of kiCOOtokarczA3H; Pd,g OicCTXksandr usBY1mbe8ZU;karavay92YpenB8K;gunnar solskjær,kirk christiaB97miss rebelsO;! fBZ3; Oest C2Ss4LO;aVbelie9ZWchurch slavBBJeC70k00FnTsStRworldO;! O;moOvC70;nkE;eATUown 4YRr0BP;chool runes569tyle and new style dCJB;e7X5orseO;! 7X9;cquaintBANge; caB0Wf OnWLv v3VB;ii3VAsc3C0; Xa9CIex,inawa Wja,lahomaRonomiQrPsana OtoberC79;grigor1UQlynC5V;!a;yaCEI;! O;cityPsO;oone9V4tate cowboysBYJ;! O;b93YtBH6;isCOVpC32;bo288cBAEtaec7VM;l pOngo bo7H4r1;a89Cl71V; TioPmO;!'sBGF;! O-BZ3;rCQHstate O;buckeyes footballOunBDE;! statistical leaB7X;my 967seO;-hCUV;aneBS0c Qgy and the cockroaCTZhO;am,uz tO;urCLE;niCUN; mice andCTHfO; RicOlineBH6;eOial language7XK; Or6WDwBGA;christmasCOUof strategicBGRs7PL;the 56V;cdQdipusO;! O;c5PKrCUM;! betterO; lifeCUI;a nob8BDdSeRiQnoklassAXOoPsonne édo3EEysseO;us,y;ac0;n,sBJQ; to0N1d feCIBon leiceste34CsCCItte annCQMya CBE; Os67K;fuCHOta5J3;a6GKc05eXimum tenuifl2ZOtQulus O;qCPEriftO;! s;aSoO;ber QpO;ath trav7RQusO;'s C1Dsy;re8D4sBTE;l,ne raCUWvO;e,i1D8;anOlCUY; T's QiOus;aOc36P;! fAHR;el7X9tO;hOwelCJO;ir25T;lAWBsunB2T;am3R4itanSuO;lt,pO;ationOy wall CQL; 306al O;safety andFQth7YZ; C2Qie;d-ii piCJ2eXi-wan kenoAOWjectUlas52Loe,sO; AH3cured by18UeOidian9AJ;rvPssive–compulsive O;dAUZpAUW;aOer56B;bleCEJnce of christma41XtionalO; c665;-oriented6JEivP–relationalO; m0Z7;e-c,iCKI;rOsiCNK;gruppenfüOlinBBHth 9YQ;hr0;hu,kQsW4tOuCBVxaBIR;!h kOmeMsAME;ee3VZ;! AI7land O;aOr3DE;thleAQD;mikuBUKzo6;e CHC;'golo kan31Y-IEaDIbDBcD6damukong suh,e8Af84gi5A5h7Yi3Vjan marykutCN9kvd,le ch9H9m3Uo0Sp0Ps0Ot0NuWvUw5PZxSyOábr8LMée,íðhög2F4ürburgC67āBQF;aQck de vCKTkAT4lPmOpd1IZquist–shannon sampling 9T0stagmDx;eria 9YTph;a B0Pon;a 1KPn15rlath2ZS;ivm,t cO;hC5JruiserweighC5G;idiaOm94L;! nve4LH; mBL9alphan lamsCQAbAcle05d03j02ll4HWmXnWrSsrat fateh RtOuk;elCSWm99RriOty puttyBJL;a,tionO;!al y9QV;al4FB;-34RembergPsO;ery rhyCT4ultan nazarbayCLC;! O;coBGRexec7BDlaCK2tr7YN;!avAN9cha738o espírito sCAT;berQerOpy;a8G8ical OoC23;anB7HcBYT; OsB9C;of9QJsiC8DthABE;ab3;eOg6ZQity53N; b837;ar OicCQAo5O;and radiation A5YfUgAF7magneticTpowerPr8WQsBWCwO;aCEPe66OiBPT;! O;byC1Iin PpO;hase-oAMVlaCCF;frB77geBIKiC0Rt7IC; re7FQ;aBK4isCELuCEL;fs,r,sc;oCA7y4KO;-Or;cOhQH;ompleteCRF; 2Ma2Fb25cturnal 24d23e21fARVh,i20kAlan 1Zm1Xn1Po1Nr01sZtTun,vOwrBKNël co8S6;aReQgorod9VDiOosibirARMy56E; sCO9chokO; aBFS;lCRXmber-BVT;! scotAk djokCSRrtFvC47; SeQreOt8JH; dame fighting irishBUX-dame de parisO;! CNF;padWPs fromO; u0T2;another teenCPSgo50Xsafe for AYY;feraBQWql,tO;a4Y5radBSO;a17bCOGd15epinephBVNfolk14ilAR9m0Ro0Qse0OtRwO;ayALXegian OiCGG;air shu7IJforestOlaC0K; cCDN;e de santander0RDhO; 02amBUYeSrop grumm1umbRwestO; OerA9L;pOt8S4;asALY;erCKWrA;astUrn O;aB0JcReQhemi8CFirelandOmarianaBPSp9YHtA7Y;! O;as6ZY;uC0FxpoAAV;al3ZYyO;prD; Pern uniO;tCEMvB9F;iBZMmegal1D6;a01by nZcarolina2P9dYeaXgermanWhollywood shoo2B6koreaUmac83pTrhine-SsePv5R1weXyO;orks8NV;aPntinO;el AFW;! CCQ;westphBJE;acific right 9LYo7;! BL4n dO–south korea71I;ef955; AGVicC1M;stC79;akoCRM;orO;thCNW;fricaPmericaO;!n free trad0H;!n4F7; Om5;colonization of northAZRm83L;dom sihano9XYvA4E; m6PMaO; she3KZlWnO; PdyOi,s;! landCNP;bScoRfinke0V0jos7OYlQmaPos3L6rOvincent pea7;eedDo6IE;il0;e9lo7N5;nquest5O6waN;at3orla9NU; Pized difference O;veget4S8watCJV;d9INpeBX2;! AF2; 6UMic Os1IRv545;c13HmBAV; OgaCIIh8GG;ephr2fateCE3waldstäA9G;mOr inayat ALYtropCQX;!i ra7KS; non biyoCMH-Pa32Hdenominational387oAO8profit9L2steroidal anti-inflammatoryOtriniA5Lverbal 2QL; dr9NI;alignedAFJbScoRdisclosurQeuclideanPfungible1U1governmental9L0hodgkin lymphoCIMnewtonian81Hpenetrative7KNresident indian and person of indianO; o955; ge668;e 40J;mmissioned7SKoperationAFF;inary geBITreaking7KJ;aOic; dumezRRd,lizo leah tuBOX;g5HQnC1R;da,se p0CTtamiCBI;l Other'4GM;cl5GCfielC3Ug75S;em72Sirbek abdusattorBOK;a43BeA4I;el SiA74leQuO; 71WhiOnaga shi1J9o uem6RV;ko o0KYro watsuC8G; Osse obliC82;eightfold56IgCPV;memorial prize in economicCC6pO;eace8ZErizeO;! in O;li5CRphysiO;cs,ology or60Q;hOm choAVM; P'sO; aCLL;baum8Y8cPgOhaBOIjuCDTreCN2schBKJta7MIwy7;a9V5laCOJ;entOyrD;inBB8;country for oldCNMgame no CP8hiding00Vjacket requirCKRlonger h5QRmanOsudden moCEQtime to dCN6; 53E's O;laCLKsBO6;ap,daC44; no kuCF2a3Lbiru cataclyCFYc22e1Zg1Kh1JihC3Lk14l10m0Zn0Eo0Dp0Ar07sYtPue,vin pauCA3zhnO;y novgorCPG;hVi aayC04rO;am,ic ToO;gOus oBCV;enOlyc5N0;! O;c87EdO;ioBCR;acCMLoBCQ;i4ya m0QC;ek8XNour square9CVsanO;! O;gTleBQRnaA2LpatSqashqCDNrRsOvq7ULx-tAMEz-c9;e4AOiPkylineOtaBFC;! gR;lvA;b7UHogCD9;hfiBHHrCO7;t-r;maOvanaBI1;lOtrelvCL1; purBH4a sithar209;pOsey huss7;le,on O;bs BVWtv;biC9Gh;a 05e01iHjYoy aquinXtO;endoPh O;ge5K6;! O;dsSeQswitchOv5K6;! O;liHonCBO;nOshBW1;tertain72N;! BFUi;o CC2;aOutBAI;! O;asB8Bga8FUscAYGthA6P; P-dart fiCFStOvB4R;een eighty-AE4y-five thes3;inch nOnAUYy5JO;aiCM4;ariCM7dobrCGAhOsi6D9tuBV2;aOoCN2;g5r69P;itz-56IrCO5;and 9UCeOsson schmilBKK;! O;cOn33Kr0NG;roB7M;i00kWoO; kovač,cado avocaBUPlPnO;! f-mAQT;aOe hannah821; Ri Oj coster-waldC20y yezhBMC;buPdOgogCN3rimsky-korsQD;urBMA;kh90Dlg05P;jokBS8tesCN9vuč2HI;hil1EXiOo7V6; Oe de j7IR;bCN5cBOUdel7BJfBA3gOh8SYreCIVsi6ZP;i5WLl8R6ra40A; lauCLNta O;khrush2J7mazep4;iB71on falcC2S;eVg0htO; QbPcoBwiO;ng,sh;irBB0ooCDD;at the3BAc9PSiQof the lPtO;eeC5D;iv4W1ong kn8GS;n the1SS;lQrO;!iaO;! BGZnAV1; Pla O;laBGKs89L;faAIKgBQ6haOlaBGJmanBKVng,slBCC;veCL4w1BL;cy naCEMlsPr reincO;ar7KV; boCADen ratCJT;arC7Scolò 15e14h0Wk0AoO;! 08dem07lSmachean et74GniC95sAtinO;amide Oe;adenine diOmonoO;nucleoO;tiBAG;aYeRleOás maduCB3; 6HBtteO; shO;er619; Otte 8OE;aSbRholofc814kidBOHmPri7STsO;cherC57u5LQ;aOui0VO;in3lliotAWF;rownAAHy0;niBK5ri 77Q; Pe ceauș2KEs Ous copern8W7;anelBRFcageCFXfl9VYpé169sarkoC30winding refn;coug16FpOst7TVwaBBR;ageCDJelCEY;o scarA7Pus;hülkBMNr1GX; UelQi Py O;ba8IKhilton rothsc660;cly6minC23;!baJodeonO–metal hydride0ZI;! O;aOkids' choic6SUmoBOG;ll-star bra9R5nimation A93;antosBB2b00cWdVfTgaC4Bh8KXj4GJkSlaRmPnolHoffeB8TsO;ab1e5BLiriBKHza95S;aOo1DV;rkAVWs2;chEnd;am5roCyrgiCDR;ol3roCIQuO;eB8Yry;i9WXraBNJ;aOleB9C;nn2s1WBveO;! and the bad seeO;dsBF0;osOrimb7;a,trC11;elle07ZijBD9khCL3olO;as Oe9XW;brSf60IgonRhQiBHYlPrOspADT;al9P1;ati25Lyndh5AM;am91NouA8E;zalCEF;aCKWi2CJ;haCD2neAJ1;machiavAXTpaga410; Qc4gara2STll Pmh O;a9LMmc7ZU;fBJ9h9R2;dOjBX8lo8;acBI3;kSl O;heritage6VPoPstadiuOwintY8;m ANR;n tC4XutdoorO; gBK8s at lake t7OI;! general B70;lOt;! O;on QplayPregular 7HVsO;couting com8WLunday ti8SX;of8HP;cAPSfBM8;-BR2a4Cb4Ac47d 45e40fer0J9g3Wh3Ui3Jko3Il3Cm38neh 37o2Up2Sr2Qs2Nt2Au1Yv1Pw06xQym9zO;ha,ukO;o kamaBRQ;on,tOus moC9R; OcC0H;dutchXgeViRlQspPunO;ited kingdomW;anR;evel ch7MZibyan presidentiW;ndQrPtO;alP;ishR;ianQ;neration air dom6AErO;man fedP; genO;erO;alO; elBCY; W-ageB5Lark liberty C85castle upon ty6eB7Wfoundland and laAUTgrUhaCKMli6sStO; Qon's O;cr7Z9lawOmeCJ6; of universal graviB0Qs of8II;gingA6GscamaBCX; corpOmBW6naCFXpeBGK;!oCFV;anC2FoO;unC93;a0Vb0Scal0Rde0Pe0LfrAYPg0Kh0Ij0Eki0Bline7BOm0Ane1B5orleans08s04t02w01yRzealandO;! O;film4SMnational O;cA0FfBDYrugby union BE0;earUorkO; O-7MQ;cityPd6BWgiWWisl9B4jeCFSkn9H2metOpoCGSrNMs8V5unB1Uyanke3;rA3Ps;! O;c3KVdraft r0Ffc,police Os9FZ;commissiB76de0JC;! hon2Q's O;dKeveOre5WHsC03;! iAZ3;aveB4Yorld vBUI;eAHDhOr9GT;ougCGR;inceBSToPpO;a4ri8;uthO; w7K7;! O;pelBUPsa89G;e7KMo2;dsOnNM; on thO;e bC1F;aQerseyOourney toCG4;! O;deviCHC;ck s6NXpan pro-wBB1;a599oO;l4DUrizoN;i9M1uinea3LB;diCEVnglandO;! O;patrOsCAW;ioCEX;al,lC6QmO;ocraticCCP;edAQB;alAXKrunswickO;! neurological syndrome of unknownO; c7H8;dministrativeOge,msterdCFW; c6UP;aCH0eSiO;lle Os;chBG6lO;ancelotOongbottBY4; g5NR; 7AUrO; PlandOmiCEV; r17U;been ki8LLgonna give you C0Dmind the buzzc5O1rarely sometimes alB9Xsay never1QF;châtIrUschwansteTtrO;al RiBQ5oO;nOphBVJ;! O;boB8Zst9;cBRBmilk3AX;in B7K;alRoO;-linguistic67UdB09loBRImaC7Xn,plastiAPYs9SMtO;iBQPrO;ansmiAJG; nAP4iBI0; YbXcC3ZeaCGRflixWherlandsUscTworkO; O-attached830;address transAYZf8CYinterface QsPtO;imeBZAopoBRA;o8Q3wC6L;coN5;aC6DoACB;! O;a0R3in8T2naBBX;! aBW1;eaNoC8V;iOne82F;ncoCHX;aGpr50Ksun dorCA8tO;lé,orO; makhBPFiaC72;iC2Okonda paarvC6Inst A8Fo,vO;a,ou9W3;alOhilBVRoAWNtu6;! s8SXi BQB; 8WD-YcVdymium magnCE4ge6lRm,nOplatoC6X;! genesisO; eO;vangeAWR;iPoO;giC87;be792thicO;! 800;lassicPoO;nservaAWC;a3Q4iC82;assyr4KEbabylon4KEnO;a508oCDO;ch8EF;aPesisO;! gBGE; cOtoB4Y;onneC3Y;lRson Oumbo nucCC;dilipkA4SmPpOroc6AJ;elC9Ri9DK;andeCGR; tiger Oie bC1Vy furtaBNZ;frC8X;paG;ghbXlO; Ol blom62S;aUciciereBDUdTgSha783pRsQtPwa565youngO;! discography and8JT;enA9L;edaBLWim2;atrick55ReaCH3;aiman8M9orsuC5A;egrasse7BAia8WXruckBZ6;rmBDHs33;ouCEU;a Oemiah per1NK;k11DshC8Z;aProO;!ni;sonic teenage warCCHtiveO; binomi0IC-index metam8BG;d for speedQlPm karolOnYFraj65Kt;i BXX;am kotXAima azeB8N;! O;heC25pay9QBrivaCEG;beOkBULlXZ;atCA3;ar zad8I9roO;m8A7nomADFp6T2sFtizingO; fasciAMU;r0GPuO;chadnezz8RBla award 2TS;l Rnder4B8politan Qr-O;deathOearthPVfield 2GF; experiCDR;no77Tp7IX;cas76EmPpurvis and robert5IMsO;ch2te0X6;aupKcdonBSU;aa division iPt dOuti gatBK2;iC83reCCZ;! O;football Omen's basketball4D8;bowl sub9YRchBS2;a RcO;! sPsn,uniO;versM;p9BTundaCX;all-staPfiA8UgBRJm1Hon O;abc,es4TDtBZI;r BZY;a4Ib4Hca airfoBSOd4Cemyeong7J6ftali2PMg48hua9S3i47j46ked 44l42m3Wn3Ao34p31r2Ps2Kt09u07v01wazZxalite–maoist insu06ZyWzO;aUca8TWgûl,iOneen con3L7riya nazBTN; Osm;concentrationRgeB5Jhuman experim62EpC9AsOufC7F;aPymO;boAZ5;luH; c795;nin boniaC3GreBXK;aPe2iOpyidC4I;b buke7rah testi8Q0; 7FRntAEI; shOuddin sidd7OW;arABR;aQeOier–stokes5AOjot singh sid9MPy14R;enOl,r; a6FE;joPl OrB;battle of guadalc4ZBmi6ravi2LH;! 7D2;ghtyBPYru,sC98tiO;cal 7OUlD; 1Wa1Ke 1Hh14i00oYsuXtō,uOyCC2;fian821rO;alOiC5N; Oi9HX;born kSdC4Ve2RUgCF1lQnuC98rPsO;atel767ciCCJelB7H;e6PNuAQM;aOoga99W;ngu5UFw;il9RR;ki hanC0Wme sōseBXE;! O;bombing8IXjoint military symboBNUphonetic AAD;onQvO;e Oi2ZB;american4N5hawaiC3S; 0NalO; PisO;m,t congressC88;a0Ib0Hco0Fde0Cf06geographCF2h05i01lXpTrPsOuniversity of si619wrestling5AD;cience fictionAR1ecurity 7QFtock exchange A5P;alBZ9eO;gister of historicOsistance front o2A5; plO;ac3;arOeople'sBPB;kPtyO; of 7QP;! s9D9;ampoon's Peague O;nBPXsBQ3;christmasOeuropeanOvaBE2; vaBE1;dQnstituteO; of standards and 62Es ofO; heOT;entifica9HN;ealth9CZocAX4;asc7FCilm rSlBJDootball O;coAY1leagueO;! mO;ost valuable playerO; a8DO;egiA57;bt7G6mocratic O;al59OpO;arty7BR;aliOllegiate athletic7F8uncil of proviCCV;tionC7E;a7F4olsheARR;nthemBA2ssembly oO;f so0U9;ofC2Gs9WC;aOuram godCC3;lie XnO; Qiel O;cOhaw123;halobC3O;aRbQch5fOla6;iOorB50;e9VMlASJ;edford 46RitumazaCD0;ké,sO;pi7CN;emOkeACA;manuI;bu2M7dPne824rO;oAHJueCC8;i9O9oB0P;lTrajan chandrasekBCLsO;cha Rha Oia de219;bed88Sgregson wa52Ahens0C7lPo3V2rO;iAIKothB3Z;eggeC1Eiu bord0D5y7X7;kamp1RDmcel4H2;iOya neidC5Z;a Re O;aB04co7do17VgoCBMho9ZTimbruAF6mOportmC6Fsc2OPtr1woCD3zC71;a72UeO;rcBO0;dy0teBYB;king V5loC24wO;olBUZ;! C4Ua,carRd9NNeePh equilibriBXMim pedrC8OpeCAVsOtassja ki79Y;er al-attiyC2Xim nicholas tal9TH;m hOruddin 1F;amC80;! cu8K2;cVdwu9enSgis fakhC8Rit36Im0rRuOwhM;hiBUEtoO;! uzuO;maBV5;aBSQow-body4HN; Pdra modiO;! sB2U;chandra dCCIgUC;issPoO;l4XXs;a5IJisO;m,t2VV;aC7XhtB14l3oleonOrox5st0;! Oic AV4;bon2RSdBOJhiCiiBLJ; tōBG6kRmiOya131; Oe513;caBD8ekpe8R1foner gy05CmcduffC9Wo86Vs9ZXwO;atC7Yu;i OoYD;uraBG3yosBG5;a vis6TJcXdSga parbBXRi8EXjingRny m18LoPtOyang technologica88F;es,u8JY;mGYrOte9M6;oboA8P;! m8ZT; BRWaOo4DS; Qmuri O;balakOharikOkalyan rC8U;rishBXA;de9VR;iYy O;abu58OcarWdUgrace romanTjuv0X9kRmPpeloC2Ire9TUsOtrBF3waB14;h68Vin9HBpu5WJ;arc5TJcOe9JA;ke2;an19OerrAYZuO;lp; s2PL;oOrAYCuss933;lm1w;eCtAKN; grALG; SaRco,eOibAkoong m4ma m5ZMor;c5P3s O;and titles of jesus A90of O;godL3j75El0P9the days of the weB8H;haBTKsH;joo9IAyoon-AXJ;anC9FoOtreO;xo6;aOl58V;nd af5RFt4KU;ib razB7Hwa nimC7A;roA5Wve bayes classi5QN; hammadi82XaPinaCBKoOpBRJ;rno-karabakh185ya; OlaC78saBTN;chait25WmunchA1L;ezhda tolokonAGRhim zahaBYLiOji jBX6ya sulAR9;a Qne PrOya hussa4;shC14;cA0UniT8;boulaBTJcomăneBA6;haan rizw1y keïCBB;cp;grC7SspAIU; BH8aOMbs AWOcO7dO6eJ9f J8gJ4i9Zj9Yls nextBQ1m9Xn9Vo4Jp4IqC1Yr4Es49t46u12v 11x BQAySáRädchen a64Kåne7SPéPónica 2HWöOýa,āori 3BTỹ lai8YM;bi95tley crüe;lanie lauAYWnOtF;age à troFièreAXT;laB7Jrio jardI; 09a07c02e00kZles YntGoWrVsRthO;!bPic Ori movie 3R8;humanoiBZIqC57;usAIE;oBpaC9Uql,tO;!erOiBIU;io,y O;fiBUSm5;na lAY4rh;cardiOpA;al infarcC61tF;gAQIke7S2;elti wXJonC24;lodysplasticBTWrs–briggs typO;e ind3K6;eQoOroft7WC;bacterium tuberOle pruiC1D;culAPQ;liBUZnaeO;!an6P7;nOsthenia grBDF;ime6INm9na buBMP;b08c05d04f01girlfriend is an a3D7he00isekai C9TlWmiBZYnUoSroommate is a gumiB56sRtQwO;eek with marilB8Iife and O;kiBYW;eenage 8KOhree 69M;enpai is annoAE6o-called C9Pweet 2OO;ctopusOwn private i5DG; teaBAO;ame is Oeighbor to92W;ea9CM;eft 9TSiPove from thO;e 5ML;fe is ANFttle O;m49Gold7KNpoB4Y;art will go 2ro0CK;aOirst girlfriend is a gM;irOvorit3H3; laBSN;arling clem83Zinner with a5GNress-up5I6;hemical rPousin vO;inB4R;omAO1;eOig fat greek5T8;autiful dark twisted3GKst friend's5T7;barag9FBdoña p9KGwilhelm gust8IJ;a2Pc2Od2Ng2Ih2Cjahi15Ak2Al1Mm1Fn19on,r0AsUtPv-luv,watallOzzle b8ZI;i C5E;aC4Ziny on the bRsuhiroQual O;assuredA6IfuC5GinO;fBKStelligi98P; w135;ounC2W;c02e01h00iUkTlimQsItOée d881;aOel6X7;fa kemal atatüC54rd6QX;! Os;b9XWconquest of pOsaliA9MwC7P;ersA;et,ox,rBUP;cOkve586; Qal O;fiC4Ji8E5notOt88D;aC4Ke;ch9LDg4DMiA05of the harry pott0CEtOvAUL;h9RBo be murdered C41;isBWGoku L8roBO5;s,um of modern09W;at,le6R9;a0LdRmanA7YphyQray Oungakkai4AV;bOroth92Y;art1WM; b9C5'sATG;erPoch O;faB04m51T; oPs of O;abigail williams and liberty geAV9chris kyle and chad littlAJSwilliam and patricia wyche7J1;f On the orient8JQ;a09b08cassie jo stoddaC8Pd06elizabeth olt5g04jYkiWlaci peBN2mVrUsRtQxxxtPyO;etunde3OTingyingJA;entaci2;ori stNWravis4J9upac9UB;aPeOherri rasmu8TQkylar n8NFtephen la440ylvia li7GJ;leBTSth 9UI;muel paC20rah eve92L;uth pelB9Yyan poB5Y;eredith kerB92uriel mBQO;m 4JXtty gO;enoveC6O;amesRerry michaeQoPunO; l4ko furuC8L;hn le6Z8rd132;l 8TT; buO;lg0;abriel0G4eorgeO; f667;ee dee bOora b505;lancC5P;ianca de85Robbie jo stinBAB;hmaud arPnO;a kriégIni de348;beL;d i3EImaBPE;awar faruqAEEgShwa b9O0iOmun d0NU;chOshk6V1;! O;aOm8VJ– the edge 3T8;g3HZirBXI; BKPo j84O;bQmPtaz O;mahM;ers pa9R4y;aiPleO; rA6XcoB;! O;city BAOsaB4A;atBP6e,led 8UMshi4JOtiO; theft9FX-05c02l00meZnWplQtiePvO;ariate 092ers2VI;r 9ZC;ayer SeOication2BC; Q-cOx0;amera sO;etBOX;citizenBJDmye2TUsAMN;online battl6WRv01;ationalAPQomial O;d8Z5logisticO; reA08;dAt0;ayer percepOingualBT7;tr2;ast PulO;tu6YF;a3N0dN;armed6XHcore prBRfactor9AHlevelBIFpO;aradigm2T7lO;ayerO;! vO;ideo BQZ;ba8den7FQesh O;amADWbansM;ammadOteşem yüzyıl; O's w806;aliPiOnasiruddin al-alADTof ghC3Axii of g4WEzia-ul-h9HH;bn musa al-khwarizBYMnBVEqbM;! O;jinnBWPof52A;gRhal O;ar9YJempO;eOiB;roC4I;iNsy bo4LT;!dy waAE7;h ado about n0TOus;mmarOy thBUZ; gadda1QB;s ocePvO;! video music AVT;anBY0; Q-dBXZcPnOx;!bc; cru6F5iC4Q;achille lauBUFdhoBVTeO;stADC; Qap,bOna94Qs d7XQunal t9RZ; 9IZeastO;! 3ME;huBMXinbet2JT;emba 9ATho tutu van furBO0; 4Ya4Xb4Rc4Pd4Be49ff gide2g48h3Vi3Pja3Ok3Nl3Cm37n1Qo1Hr0Ps0Gt06uVvTzO;aRillaPzO;arC5F;! O;f1O3th448; bint3TSmb6SL;eAXHiOsar evloBXX;eV5ng9JN;lin r0X4nOssa sissoBE6;i9UNtO; QainObatte8QO;! Os of97A;dASCm5P8t7H8we9P7;aSeRfuB6HhoC5OkQmaunganAC6oly2QRrPsinBU7taOvesuviDwhi2X2;kaBU1m8EV;aiBK5uBYO;ai3C1ilimanjaBTS;lbrDtBQVveAR3;r9FUthBX7;hViRoPtOörh3BH; the hoBBTe-and-bailey995;maBXCrOwn;c7NJoC4W;on OvaC0X;capBS2picture O;association filmOcontentOproduct582; r793;!erOm1ra; tereBMQ'sAHMb89O; d77DaBQDcoSes QfC1Hhe day1in–nagaBOUque–cathedral 7ULsC0Zt Oul;common words05NdOeligible b0SLlivableC01;angerou4SN;brings plenBYPinOma805; iBTTgrC1Y;viBPSwO;! O;kOm5T2theater h227;reBM8;a0Cd0Be09fydd08gZiXmonBH7occo9YRphWrisVsA7WtO;aPen h626gage lo1imer sO;ac2TW;lOr and peATW; PiO;ty AM2;kombatOs97R;! x; chestn9YTon2X2sE;eDi6;arty the pat9MLnga oleO;ifeG;anPeOoBML;lloNnthau 9HP; PaOe pola71M; 2DOtic6DW;britRfQle fKsOwaBBH;pOta9QH;eBR1urBMC;airc5O2reeB66;taAZJ; claC09;cambe andOna bacc8GX; wiC2O;echai haBI5rBZH;liBXUrji dPviaO;!n9VT;esBSR;d7miNnRrO;ePsO;! 2XY;'sAOS–penros2J;! QbyA27dance dA5Xlite bunnyr0T4riseA07sO; of Ohi6t7JU;jup4BJsa85Y;blood4BRchae335embracing5O6ga73Nj15GknC0WlandingOr1B4z6QU;! conspiracy theoBV4;a0Yct2d0We0Sgo0Mi0Jk0Ho0Broe d0As04tPuOzaA0L;ment A2QriBMD; b1NT-saint-A7Sana01eUgomery cliA8Fhly girls' nozaki2K0pellierTrRserrBPGy O;hall8NOpythonO;! and the holy gA14's O;flying circDlife of bBMS;ealOéal–trudeau BRE;! canadAH2;! hB70; Ql vontavious QEnPrrEsOvAPA;quAE4sori7FK;egBRU;caOki9N3mar8X3;rloOs94L;! O;meC28tree 87W;! C0R-8N0; pubFanBL4o2tO;aAMEerO; P's B61a delic497s OvBNV;aEAunAL4;gBKXhunterOmusuC37;! 8R8;octB6S; no aBVAamine oxidasScRlithQsPtO;hSQonic BO2reC33;odium glutaBIUpaced foBMU;! 9CA;lonal anti1KIyH;e 4OZ;!ey O;b1Y0ki8selfie copyright 0NF;ca Osm,tor liBMV;bellB25galAPGlewiAZ5poA40raOs948;mBH3y8BK;db,lOoC1B; QiaOoC0Bs;!n O;laBBCp5B2sc9YL;emBO4invasionO; of4QGs 28N;ro,tary6LOyO; ObaC;h4PWlaun3J3suO;ppBNC;aOelezAJO;y nightB58; RcoQrchOsBWD;! b1Z8i46PyO;! 2HW;! g9IG;lisaOs9QE;! s7C3;baBJYentRina mustehs1mie deaAO0oO; PlaBYHrdica charantAtaO;rō;challenge139hirBQX; of inertA-generating BN6um;aWchat doBUIdVecular b9NAièBlRnQoOten salt864ybdenBN1;ch,tovO; cocktaBF4–ribbentrop 3M4;iya3JSupiravBYE;usAR2yO; O'4PO;ephraBG0go97Qpa8T1qB91ringAZXsOw3VWyAIL;ha6T4iC0A;avAoB0W;r Oss3;concentBXKmaC0X;a pC2BsAQP;ng9UIve9M8;rOssa8M6;aOé4E3; QiO;!ne damoO;drBX1;kBFVmactag1U4st9RG;aQenjo-daBQ0iPs scale of mineral hO;ardC0M;nder0JAt raiBN2;mPnOwk B81; 1SIl18K;ed TmO;ad Red O;bin Ovi of morocBNQzeeshan ayy8Y9;rashi2Z9sO;a8NOulayATK;azharudd4hasna4reza p4BT;aOfarrah aidBYVh3GDmorBS4s115;l-f9V1tC1S;a4KFwBPZ; 7Y7bO;us s3MX; sC0NafinBE7bDeTok,uO;lOs ope4SJ;aOo 8HJ;r Oti2;a41RmultiplicativO;e invBLO;l–view–Um,rnPst mO;ouBZIussorgsAZT; Pa,iO;sm,ty;ar9T0display of the confederate battle 8KSfPliberalism 6G9monetar8OIpOstandard 31Rt1L6;a3LAortfolio 9JD;aASFlat earth bel0Z7;co5VviewmAL8;edB0Qhi,kOtezuma BWW;ingjKuBS4;b7ALile Po AQDutu sese seB9AyO;!-AAK;aAW7de8ZPoQp44RsPtO;elep8K1;oALKuit gu3M6;per74K;!b,i;dao zu sBO8gi8LWha5ZH;emoOist1ZT;nC11sy6;orpg,r8Z7; 1P5ölnBWR;a8Lc4Qd45e44g3Yh3XjB38k2Xl24m21n1Ap8Y1r0Ys0AtTui,xRyPzO;k9WUorBXErah9OH;aOuki sawas2N6;moto m1MKvi;aACAedO; ma71D-iBRX; l9YXanBQ0chZe,hXoUragyna spec467sOt romnEzi gaynBWY;ki,uO; RbishiO;! O;ecWGgBHYlancerOmo8E3out044pajeBOI;! e7IN;muSN;chondriOsFt3C7;al Oon;dBLHeBPB;raBM7un chakrabO;orBTO; Qell O;and weA9XtrubO;isAYO;gOhedBIMmcc6MA;l1SYrACB;an0Ac09e08ha899kel spil8M2o07sRtO;boBP9er OletAMJress of the rob3;carto2nOrogers'BZU;egaBFX; YiRouriPy O;elBQTperegrBKE;! O;compromiBY3rBUJ; py7ng TonRssO;auAWFippiO;! O;b5QUrBUFst9SF; maOary 6Z5;j8ODngM;square4VBwhite womNC;e06Afisher's murder4SLkobayashi's dragon RmQpoA0IsOuBJYwBY1;a4B4carlet and the duB11lO;oa6;aB91oneyp82V;maBWS;!gyAUIphA6J; enAN-en-scè6;ege6X3ha ba6P5;dLth65G;!aTcea Seille enBQYiam Rko cro0OKnalini9J2rorPtaO;zaAGM;'s edgeOless5EH;! cat74Z;hA4Vmargoly3riAO4;eliaAMOmo5Q0; RcQge,mBAWnda O;cosg8ARhOkeBS4lamBHHotBGQriA4Fw5OM;aBZ5o7O0;aBVPle o5YP;fu7YNnaBV5soO;rviB6E; 0Ca sund4AIced2K0d0Be06g05iZkYnSoPsOt 3O5;k,trel 6DE;an Pr OtaBF6xidBBQ;arQHleague bQEs8WF;c67FerupBUD;al muraBPIePie O;drBTKmBX3ripe6OL;apolisQsotaO;! O;north83Dtimber5YFvikBVFwiBX8;!–saint paulBM9;!a1I9owski6SV; SclBAPmOstryBVT;aQum O;spanning BMJviable310wO;age6DO;liBOZx;displayBM9h9VD; d9A1-na w5ma gyabu sherB4Kw;craftQrO;alOva mcgonMZ;! oBB7;! O;dungeoNse9WY; m9XLanB63fulBX4geAV9y kaBQS;aung hlai8mO;inBV3;e,i O;k9LYndiOroBQS;weBNQ;a0Cdred giBW1e09f,gram54Witary04k03lSoQton PwaukeeO;! bACO;ber7f4PYke6IF; Orad dodAT4š foAKM;giBPJventimiA03yiannBAX;aWeRiOvina de1y sh8RQ; vanPcent simm92Be bOm2Ron dollar BIVpeALH;obby8ANraBGU;ilBOL;nPrOt; columN's cA4T;ar9CXniO;aBVNum O;actB8Lprize probleBVW; jovo8TJrd O;fillBQSmi55D; tBRMy9UP;! O;budget6ZShistory of Po8S7rankO;!s3I7;italyOthe united statesO; du1JS;s Ova marB1Yy cyrusAQM;davOjuASTm4GHteBOG;isAQK; kunA71nOp zaveBTE;! Oa vayntr8U1kovitch cy9ND;ca7J9kunOmalpensaBL3;deG;a0KeVhail Pi matsu7I7lós hoA8SoO;!y1;bQgorba1SUkalPpopkAVPtO;al,ukhacheA99;aA35in4;aPulgO;akAVL;kun4ryA32; Pl arteBXEy O;dKwK;and the me6OCb8Pc08d07ehrmant06fa05g04h02j6TDk01l00mYni82JoWpUro7L9sStQvPwO;ebBMSink40B;arshaASMogIr7NJ;he headless 3O3oOuB3Sys2;dd,ml4;hOi5FG;an7YNi2HP;aAZ9enBW0oO;mpAIFr5Q6;'hOl6OVst9X3;eaBM3;arBP6cOuA0AyeBUO;caA86ge9s25E;eiBQBin6RSoBLT;ri76Z;oOuckabBOB;lm9HLwe;le6NJunBFH;iBT7r892;ra9QK;!e8JKitB1C;aOoA2R;usE; PelO; pers6JOa shiffr4;häkkin5zibaOE;aly csikszentmihal9D0oB2B;hty Ros,raQuel O;car5CKdOf84herr7DYr3AXsapochnARCángel félix g0DL;e cervaAJ5íaz-c6JZ;i6tion2MX;morphin power rOwBSW;anBOR;ruko-BLNsha 9EO;-06a05dleZf9E4ge uBiYlXnight Uori fr6BUriBE4sStowNZwO;ayPesteO;rnB4N; O-4ED;a8IWgAUX;omOuAIG;er 2PQm9;cowbAJGin PoB8QrBV6sO;oNun;pABIthe switchg08L;if60K;!an; P-earth46Em8YNsO;brB8Dex;ag3c41PeQkOnaBVJsc9B6;inO;gdom 4R8;aBSAngB67;s,zAK1;aOcentury mo1OS;tlantic acBF4utumn8N9;a3Hh0Ok0FroO; 6HJ-0Dc0Bm0An09or3FPp07sPwaveO;! SH;coBJJeAGVoftO;! O;a00bi8cADVeYflightAD7oWpUredmond ca2GGsSt40XvisPwOxBGO;indows5LJoBT0;io,ual O;cOstA65;++;pider solit8H3ql9TUtOur9S1;oBuBMU;aiBESowerOro282; 9PRpAVE;f2F0nenoHutO;loBLT;dBD5xcO;el,hange9TN;cOzuB;ad1X2cO;eBTTouBEK;enFho6rO;oc4S2; 5IZesA;etB;ephaBFFoO;ntroBLR;!starABQ; Uey Oy do8KX;c80Jd8VMhGWmProOspil95R;onEurAW7;a55RouseO;! O;clubhBSWfunhBSWmixed-upO; a3AA;fOja8ITmaBSHroBMWsc15Tta6RC;le0R4olE;a0DeViO;el huiAY7ganPo O;ka64G;! O–ohio stateAWW;staOwolverin9A8;diBF1te O;spartaOunAC1;nsAWU;lOál2SJ; 03angelo02e 01inZle Oson–morley510;bXdockeLfWg1Q8ke7VYmUoTpSrRtPvi9O7wu,yeBA8zaO;un0;h9UErO;achtAUBiola m5XV;oAR4y1;f5J6h8H2;baBM7d3QQ;cOo7I6y1HT;coBT7nAHB;ai74Borb3;achelBQ6r0IY;! gO;uiAHE;baB8SlBLJmorASX;! antonioBJE;de montaTOfouc8L6goA0Qhouellebecq,nEperAQX;elOil CF; Ra Ois–menten ki4F5;coPstraBJ8wO;at9ZE;el,nl4;a1Jb1Dc16d12eiBMJf0Yg0Th0Ri0Pj0Nk0Ml0Jm0Dn0Co0Ap04r01sUurBR7vRwPyO;ead2oBPG;al547eatherBE6hiteAMDiO;n9H5ttBBR;aOiJ;n geOrt1;rw5;arnTchuSe89ChQoPp1F1tO;iBHIr7V6uhlbaBC1;rrYP;a6KBeO;en,llen;maATYr;osBBP;apaBH0ed3X5i9MPoO;c5MEok0senO;!baBDV;aQePh1IYiBK6oO;ll1rt9KZ;nn,terson6Hña;ge,l4rO;enAFHkO;iBLDs;'Oh0liBRBw5;d5A1k1HJ;esB1PouBOWyqviBPL;aRcQoO;orOriBME;coJe;elhaAV8i4XNke1;ds5liBRYnOsi;do,n;aPeOindsay-hoAG3;arnBNVwF;nd2udrBA9;am5eBK2oBQL;aOet0oBPW;ckson4JEi8AN; 7AHmperioBJ9n8BFrO;on8BEv4;aOutchBPY;neAU0;aRiaccQoO;lOve;dASLenieA30;hiAZS;mb5DGnd1HL;aQlPrO;anzeBQM;a5DSyBAI;radKssbendBAC;eQoOukA1Y;rOuglasAV4;m1n; luAGYll;ai5GXeGhSi41ClaRoPrO;awAI0ic6ZT;nOrl58A;nB61s12A;rke1NTyt2;aOe,iklF;b2nAM6;aSiRloomBAIoQuO;bOrL;lé;lt2nd;e96Js78G;ll,y;lANSnO;ga9NNsaG;!h p49V; SmiOsma 99Y;! O;dolp4F0hPinternational aOm9B6viBQR;irBFCut904;eBD3urrican97E;and the white A6Hfa81ZgoB9GkOmal9X5saGtAWMwasikowsAWD;h7KXirs8CY; QmO; Ot;grand403resortsA8D;caBPBm7OL;doB6Jg76Z; 4Ia4Bc48d3Ue3Pg3Eh39i38ko8l2Im28n1Sphistoph8SIr0Zs0RtWxicQyer PzO;cMuzBHBzo-sop9N8;laAND;anQoO;! O;cityBERnaAKW; P–O;americ96I;ar9MBc1L8drugAKRre79Gw5XG; gaBQJa08eor06form4h00life7UBoZrPtO;a sandiford-arA8Ze frede6OO;e,ic VoO; T-goldwyn-mB6DidRnQpoliO;s,tan O;frA5Cmuseum ofRWpoBLGs6AX;id9K6oBQQ;! Ov78V;d1LRfuBCPp5U4;boom4ex80HmaniBQA;pOsy9S7;refB6W;clopra3GCny9LY;aRoOuselBGQylpheni1LL;dOtrexaH; OiBH4oAZLs of computing square3UG;acBQSm1of loAPR;do6m58OnOqua7LL;e,ol; 6SViHoO;id,loAZH;! 13P-6EUboliWcVdaBQSlRmPphOr,st27Ytr2vBAXwin opas-iamkajoBFT;or,y9B5;a9PIorphosO;es,is; PcoBlOo3NH;icaAJGurAZB;ch9HWgearO;! solid hd 31X;og0XIr57U;cB9Psm;caBDBhuggBG8oUsOtiBENut özB31;engeSiO;aPerO; ob230;hOn2J8;! in2LH;r rBBC;a9YOl6ZSpotKPthelioBI6zoBQD;c00edith ZgeYiXkWlTmaBNCoving7BIrQseOv g86Wyl streepARQ;nne Oy88T;p5T7twiBFP;ell6DHiO;ck gOFtt O;p621w8SF;e PinO;! o9DG;hag4V7ob5KO;aAOIle BDP;t99Qwether531; 2HDrs and acquisA8Y;ba5MWgrEha4EOsa509;a02ePia,kBOYuryO; p7A0sAJE;desOnaL; X-O;amgUbenzO;! O;aRcQeRgPiAJXsO;-c3VFlQpriAMCtaAFO;-c3VEleP;-c3VDlaO;-c3VC;! O;gt,o6;amg high performance pOma6F1;owertr9MK;doMSntiA8Ntor9A9; 01aXdWe1HQg'erViUnonAPYsRtO;al OhBODzBI9;d9PWheO;alB71;aA61h809truaOur suljATH;lOti2; c774;ng9VD; z02H;elian inheritA3Coza BC1;! QcO;e ii 875hem O;beg4mendel schneeB3B;mAWLsuvaBKS;aOgoing their own9LTin black BKP;t 9VG;ber stateTeSmingenBCGoPphis O;depKgrizz5NR;i8RGriO;alA10es of Ost;muA27the alhambG;!nto AONti9VG; 6HEs of O;naB66the O;commonwealOu2GD;thAZJ; 09a03bourne01chizedALFiTlon collie and the infinite s98SoRroseQtPunAVSvinO; c603s;ing2ZNy1TW; pB7L;dOra h854xicBL6;raBGHy thor9ZH;lBNRnda Ussa O;bSethRfu6YYgQjoan BH3lA9VmPo'neB13rOsue48YvillaseñBKS;auBCJi8ROox5E7;athAJNc603;e80NilB6K;erB5W;arA8IenoiBKS;di9MUfrench4BE;! O;cricket 5YThaCs7SQ;nPtO;on4;ch1P6esAiOoBG4;a3Z0e On;c,gr9XQham9TKlyn7VFma6DOp778sO;afASQcroAHTyk3;bQfPgiO;bs89Medroyc;err0;!la3FRrooksAPI;ji restoBJ8n ka0KIosFster eBGJ;diRmePranO; karimi nasseBJNga9O2;d Ot 5CS;iv,t0LYvAWR; h0MD; WaRhaOumi ogaBNVyn176;laAVAn O;mOt63;ark7c5RD; m1ciBH0de85AfauB8RloRmiPn Otr2uploBJ7;bN1e2ISfAOKga8DNis misBC1mull5OYrapinAA1thee stalA2E; Ond;tensAUM;d2p08W;foBD3jBFNrOt8H6w9W5;o0TZyBGM;k 2E3nakshi sundareshw9rRsAI9t O;joe8X1me at our2S6the O;f8CSpOrobin5MQspar85V;arBIK;kB8Put;al of h3LXd7e00gar e8QKiOuB4L;aWcReval warm2DTna,tOum-density fibreb7RI;aPerranean O;c574diBJAsBGZ;tion7IP;aBIIinO;al plQeO;! atO; m8JD;anBIJ; Oco9MIfiBtAJT;markt,playO;er5X4;a,llín2OQs;anum wB7Rca,haOklenburg-vorpommeBC2;! anime and0RYgOn871t8LE;odz8R6;dTgan 3UEnOt loAOAve le68U; Oing5ZT;absolute Pg7RFsOvalu3TG;quaredPtr72L;e7YLpercentageO; e7YK;!ow IV;at theOt7WB; zAP2;ma,ou moct9pi; 9DOafBE2cart00donZgYkVlarenSmO;aOurdoA2L;fArtin preschoolPstO;er 9F4; t7H0;! O;autOs8XZ;omoB28;aOennaBKB;meyOyla marA8Z; manBIM;!il7IA;ald3NRnell1SS;hOney 8VS;yiBCG; GZaGUcG0dF5eF1fia5JEgEDhDViDLjDBkD5lCKmC8nAToARpAPr3Qs2Mt12u0Ox02yPzO;da,zy 4YM; Ya UbaTdKeRfQim bi9LDnard james ke30OoOumi t0KCwand district 2FP; clinBM8nn04Zr of OtH;h3G9kings5W1loA12n7UJ;aBHYlB0Q; 0BErlO;ing6UM;ch,nk;anPc5UAerski6forstAAUhOjaBDVrud463;awAN7iAIE;d theOgelAD3; t8AG;bOdKfourth9AOpa8;riBCL; 01iSwelO; coAIAlO; P's O–boltzmann8DD;dAJZe4GPsilver 9CR;c23Yj8PPreBGL; rodríAIGmPne O;peaAMWst9AZ; gTa and miniBDIe vachier-la3P9iQum O;car621liOsubarr853;fe ANCkelihood0E1;liOnus thrAX1;an Oen robes337;i of6M5sc8O5;orAJTun;brBB0ernBHTgree2FHhUiroNju2O6lTmRpQriPstiARZthie931vOw5G7;e0QFon sydBIV;cAQXeme97T;ay6lanJur4UL;a9QKiOo9LK;nghBKGtte874;a7N8evAOK;eadB04ol7CJ; ma2KKde a0O8i,lana k0OZna kBEVrQsO;!er,oleum at halicO;arna82Y;a tieB6Geen WiSo PyO; chayk4a B61;cPf3E9icO;arB8L;ast9CL;cPtOzio2M9;ania9EGiD;e Oio po3GH;che3EOgi9UHr1J7w9TG;constance gAJGdo9QTm0DZo'Ostarkey tigA0N;haGsu4JK;a15ch12e0Zh0Silda 0Rl9B7pB63r0NtO; 06e04hOi nykän5y 8WP;ew Rias O;corvPschO;oenaADBweighöf0;inD;bro8A3daYef8P5fALIgXh9Q2lVmRp7HArhACXsPt8O8vO;aug8Z3;he5CStO;afAA8;acfady5cQePoO;di6rrAFO;rc0;conaugh8E7g2AI;a3FNiO;bat66Tl5L1;ooA7Mray gu0JA;ddAFKvF;l,o berret41XrO; 9S3hoB9C;amodAI4b00cZdYfr1AFgXhaWlSmiAQXnaASYprA94rQsPtO;aib9EKol1QT;erGmiB1Vto6;eADAhu7idO;d7lE;aQePiOo8ucBJR;ebeA6E;b13PinaBJV;fleB01u0;ig,n72NrB2Nss5HO;aeBC5roeBA0;am85Hi9IF;orrMzuchL;eOom0;lOrL;la9ES;iOosAOEyoshka5G7;aB7Voshka bB4Dx O;c397multi598noB6BresO;urre8SK;ii,luBBVt84TzD7; B2NePiO;as ruBG1eu amalrBJQ;matical Pw O;bay9UHh8EE;an9XNi4D0l3LJmA3IopO;erators and symbols in uni9M7tO;imi8M0;o kovQBrO;a,ialO;iB9Ms7OW; Oa;gOpAJC;aBIWroB0N; Oram s571;haBEZ;a0Jc0Herati0Gha and the A2Ri oANUjid al-hANQked 0Flow's hierarchy of n0Eo0AsXtO;erOod2urbaBEH; T'8SVcRs O;of Ot3G2;sBI9the O;aBEZuB39;aBGHhefO;! QD;boot 66Yin theBH1of Op,sy9K6;arBEEb8SXf8SUno6pup5ASr8ZRs8ST; WacTiveO–energy equivalBG5; Rly multiplayer online O;gaBIHrO;ole-O;playi6B2;a7SQopen online 92;husettsPreO; of the innocBDWs of poles in volhynia and eastern ga99X;! institute56K;effectQkillings under communist reg2SIm85ZpPsO;hooting3QRpectr4Y9;r96Jsychogenic iBH7;! legendary2DD;nOretic44V; Ory,–dixo01P;gOm9L5ve8C4;ooAVYr7FX;eeB70;siB0PwoAND;! quattro8U2;arALDuO;li94M;bTda,kRla QmuneOshi kishi1CV;!-kunO;'s rev7WO;chB6J;i Oo no0GI;kBFXsuBFY;a gO;upBI7;-a-9CEa6Kb6Ic5Qd5Pe 5Of5Ng56i3Yjorie taylor gr95Nk2Rl2Lm2Kn2Jqu2Gr2Ds25t17uti16v0Sx0QyPziOía pedraAJ5;a kjellB0Gp1; S-Qada ram9HRlaBDUse O;mizOoue5N5;an4;kate Olouise 62U;and ashley42Do95D;a0Gb0Ec0Del08gaitsBBVh07i4EZjane51Nk04l03mZof YpWrVsRtPuBwO;ick3ollstonec3MO;oOyler72M;dd93Z;ePhe9GEim2teenbu748uO;e,r8AA;aOlwK;co7;ichardson 6YUoBFS;aOi0N1oppins4CF;ge keB8DreB10;g4REteJ;aQcOo63S;cOd63L;ar28Oor7TL;gda23Nll2rvI;e63Fynn rajsk8DV;aOom;tharine hBE0y O;b1IRletour2C0pB0D;arr2opk4;izabeth Qlen tO;raO;inBDK;e9M0mastrOwin9JS;antonAF4;elAV6hA94r81L;a9QWeOoleAFA;rLth huBGZ;liBG1nnOstBDE;e mOi8;acleod3RWo89I; 8N0's theory of alie6EJismO;!–leniB5T; 00elRin O;ga8L5hOmiACTvettoBCO;aOeem9VG;mlisB4YrrAC3; R's Oous marvin ha7OK;guardians ofOmidnightBB6netflix tKC; theO; g9R9;animatRcQenterPgAFGone-shoBC6sOte77TuB0X;tuB84uperheroes secret 9Z6;pr5PCtAQD;i6P2o9B5;ed f3FOi2;f8FAle9TQ; suzuAYS;a ka3O0ha0IiRon csokBG8yO; Or;f5SDrob87LsO;chott0WBt95U; pe460a0AnO; Qa Pe mccutc19QiOs licF;qB4E–h7IA;hingFnavrati3E;a9J3b02c01eberBDQfZgYheXkoB58lVmUsQvan bur5ødO;egO;aaBDP;corsesePensm3ALhOtaB91;aw,e5kreB6OoBG2;! O;and leonardo d2YWfB9B;cdonaB9JuC;aOorentz2uB1K;ndATYwrBDA;ide843n5G4;arrAVXoB;itzmOre9VV;au9ND;aAGMlA29ompAD8;aQorAXWrO;aiOyaAZ9;thw6OK;lsBCFyf9R9;l Pn O;c4Z5man7N5;artsOlB4F;! BAX; O's vineA15;arge91GfOmarcy may mar21Tpl0YXs7PB;ie99O;! UeAABhOupiM;aPmO;a454elB6L; thomBBOlOwn3UF; o2ZWl O;applew9O2fau77QiAD6mclOpl1;uh1;orbiter 8TLr7XO;akeB6MiO;ageOott9W3;! sBE6;esPisO; de 3HQe7RR; brownlB6Ps;i nAD5us labusch6N5;iHot;a SeQoO; 52Cn O;brandoB88veGw5FJ;e matl4ne Oy s7VP;diet90U;g385ma8U4; 01-paul gossela9doBBReWiUov RuPy mark and the funkO;y b4C8;p AN4s O;feehiAZAp872;chainOdecisionAV4;! montO;e carB5V;eOp38N; poBB7;lle f5FOtO; Qing OpAXP;mAULsO;trateANE;capita8H5segm511;a0Eb8Pcub1d0Bf09gatiBD8h07k06l04m01no00pZrVsStQwOz4M9;ahOoolhBCN;lbergB7O;h6W5wO;a4i4LX;aPchle2DNtO;ooAOMro8;lB6OnB6E;oQuPyO;lanceAFVpi5;f79RtH;b0ns2thAMF;h811roksB2Cu6BK;b7r718;aPckiA3MillOothersb7H1;ar,ey;doAVYns2rgZH;aOinn-b7DL;b2H2n7FM;elAYGnopfl0;aOenLoppDuAXF;mi0KArm2;e90HiOuhA0C;e980sh0;aPris0FTuO;d8E9p3JO;cascB5Bvid54Z;dAWJnO;toA8P; lw69Ua0Je0Ek5FHl0Bn03oSsPusz pudziano9O6yaO; takeAHT;a tomAKRha56Xka hPolO; ni7IZ;argitK; Pn O;cot0X6daAFKroBC9;anVbaUcTdr3I4kaBDGlRpPvaO;n37rgas lloAUT;artyOuB1R;! supers7HZ;emOopB61;ieA1R;hal9MSuo9P0;lot9PFtaB3V;dr9ZK; hUa ReO; Os,tte dupain-che8;le8KNpO;ol6VF;abramAHFbay sAAZdiama7F9oswald PpOsiAVU;ic9F6;poB5Y;ink7;li2u he7TYyn O;cham6XDmOvos sa187;aB57o53P; PlOtte har4YC; 0Ala fro7VO;aPc7G3fredrikA97k1MHoOthérèse6KK;f6UOs7SP;ntoinADWvgerAPM; Tdb,h car43Gm-uz-za8YSnO;a RnO;a 8EOe O;faithfuCwO;illiams2;iAAHtr6ZO;bQca7QEdoyle 6TWfa07Ag14UmontessoB8HrPshOtheresa3K2v2VQ;arapoAB9rB79;a2F9esATX;aOelB3P;kaOrtiro9O7;loAB5; helg0KTaTery mB8QinSoPrethe ii69Xuerite de O;c0W1thibouvA79; Pt O;ki7TNrobb9L0;harsAUDmartin8ZT; 551al843;rPux O;he3VQ;et Oi6;aUbrTcA73meB7Un0V3oSqRr3VNsQtPwO;hi736;h6TWudB8K;aAUIull3TP;ua9AT;'b5SWf anjA3E;e6A4oB8X;nn neB11tAIJ;anAVC;of east5M1tranquillitatFwi72W; ko dard nahi hoBC4i3AZuk; 0A-andré 09el03h00ia YoSus O;aure0V7cQfre9RVga5BOjunius brutDlPmOr9GMvipsanius agripAHV;arioBC1umA1O;icinius cra7TSu7E0;ho8; Ps O;rodríguez pantoA3Vs0M;asensA9QbeltraB3HpPrOvan ba0YZ;ubA9P;ierre7TLoloO;! bridge6KD;b9RIcOgay haAI3;laB7BroBAB; Oeline be12Y;comes in like OequinACJ;a 9QC; Qa vOlo mastroiA9Mo bielAST;alladO;olB8N;ducPmaOprouB7X;rceAPC;ha9H4;le6IUter steg5;anRb0U5cPdut0BFm94IrOwe9L0;and3VIuAQ2;hOlotB7CucurBAJ;agaC;dree7W9t7U8;elBAHle,urg O;f915v8OA; 6K9thO;a AW5i AJCon; p8VZleOpa,re595s to the7FKucAZA;! syrASGdu5KJsB9Y; OiB1B;an9EXze6C8; 10's search for meaB13-0Za0Wc0Rd0Je0Ifred 0Hg0Fh0Ci05j04k,moh95Sn01oZsWtTuPx Oy-worlds i5NJ;cAWBlaAJ7; b87Zal5OOel Ofacturing cAJYte bB9Y;fB0IlanziB0AnOpelleg04P;eu0orO;ieA7D;a541iOra; te6KcoBsO;! shri9GH;a muAS0lPoO;n A1Vor ali khan pat7Kur024;augAGB;j b8UNlo rOr9T7sp9ICw9;eiAVQ; villagePa,e98Ning A1Ry O–whitney u 9SC;jac38Pp7HA; t4FH;aAYIu wAFP; Ta,cQfOkka vinay4FNla,pAQKsha koirala,toARK;estOoB8S; destiA5C; PhaO;eiB0N;pixie dream 7KQstreet preac8GF;ra49K;attanOwa;! O;melod5TTp1MW;aOifer8LHo,roAZ5;!neB8B;maAS7von richth1I5;d55Ski-neAIA;aSelQip 10Yol4y O;m6UWpatiOroB87;nk4;a vanObrotAM5; peeAM2;eiB08lPrin Otory196;c26ZorAIJ;a,orAYO;aB95hO;esterPuO; AFXk4HPrA;! aO;irAXCrena7HK;!gementOtB18us;! O;con13Vi2T2;e9YLin-the-middle7JL;in the ironOwith no 4JP; ma98H;aYdouh elssbiKie XlukWmRoru Ota mohandB9A;hosoB7CmPoO;shB58;iyaAGP;aPoO;n,ottyB2L;l,ry iO;nterO;courB7H;! s4X4;eisenhAO0gu9VLvan d2NO;'7J0dy doumbouAGTmABPtaAYO; e7VEaZcolmVd72Fe ga861iTlRmQnutriB4KtPuOwaBé;kuA6Xma,s;!a,esAHDhus8O3;edy7WNö; 7FPaB6Leus maleficOor9XR;arATL;! Ok b32Ln å8WFque thompson-d4PY;emAU3naA2K; O-jamal waAFN;glaPin the mi0SZmOturn7DEx,y9G1;a7E5c9L6;d9ZHz0; zimet31QcVika aroGla yousafzAX8ng13OrAvika moh9KJwi92HyOzan book of the 9HX; AH3aRo-polynesi2ZKsiaO;! Pn O;movement controlGRunited democratic44A;aALEnaA2B;lB5En O;emeOt98F;rg9FZ;ca,hiH;aRePing a5YHoOro; komuAWMto shinkAWY; AGBmO;aA9Wy2TW;rOti; sankr64Eov 54;apahB4Kel9OAorO; Odo9K2;aTdepressSfilm90Qhistocompatibility42JlOnon-nato 59Rprofessional sports leagues in the united states and 7LVreligious grouAINs85S;az0eague O;bPsO;occ0;aseAAQ;ive98U;pp43RrO;caATC;a 02Fd iWka4YUlVmon9U8nSsie RtOze;land 77LreyO;a,i ramO;akrishn1;adB4Qwi9HD; batt7KTeOframe4RMichi bTZland7V3s electricity 8L2z;! O;co2;chi9DPlardA7I;n m4IQ;aYeViTjo8mOogaA2Uōtsukai no yo277;oud aQudO; of ghazAX9ul hasanO; j9V7;bbB7JhmadiO;nejB3C;-maAV2ma mak891rO;a 92X;rshala8JOsh O;bOja449manjr7VZ;abuB0ThaAYH;bhaTlSrQtPvOyaASQ;atar babaA87iG;hir mohamB34ma8TM;aOishi mahesh yoAN1ram mammady9JE;na prat96MshtG;anobisFOia4Y3;raB7K;adheeGda0Aeina tovAX9gi05hr8NTiZlAZAnOpB4T;a cXePolAuOús ver magnúA3N;m93Ds car8UU;siumUtO;! urRiO;c Osm;fOmoAH0resonance ima19Z;ieB5Kl9VK;i O;scheB6T;! sulAVS;arB78;!cOnot AU0; Qal O;creaturesOgi89Imystery 9C0objectsO; in3CO;in3CNjAZ4k92XmikeOr9Ysq1G5;! xACA;!e O;aderin-po6PMb4KTch7I1gPlaA01q,sO;iAOPmiAOM;raB5TyO;llenRW; goe0BOlena a7YY; PrskO;! alabamaARL;ma9C1wO;eB35hi6DP; 0Fa09cap6NGd07eYhVison ToPrAJ6s O;mLProerslAYH;ff investmen85InnaO; O–whore40O;aAIWsO;eb263i72V;be0cawtAVLis9MEpe0KEsquarO;e ACU;aga9YHuOya9IP;baB5OrO;am,i dixB2G; Ta,iGlO;aine pe82Qeine Qine Pyn O;cAT7puAZQ;ka8KTmiAX1ziAY8;aOha6UXma9W1s20O;lbrB2WstB2J;in Om1;aOhe9XL;byB4S;en nfl,ie zO;ie7DT;gSlyn murray o'75TmOn lMra101;aQe O;bovaLdOtussauAUKw8MD;e pompadoAM1u b4W4; b12C;asc9;about9X3gB5Oli9ADmOtv;axOen;! beyond thund6WC; 0Ba08b05d,edon3NKg04h00intoshYkUosRroQuPyO; 4T2's;ahui8HSlar deg83H;e81Mp9IQss;! O;big sALQc5KHhigh si6SBmoOsi6SBve9G9;jaAUKnterE;eOleAYH;nzie OrI;a5T4bOc7C1dA8Jf9SWph7SCs8SY;ezAWZ;! oO;perating5YA; A3HeHinOu picc8CH;e OiAXD;co9SPgunO;! kAJ6;r76Gu8OLyv0;eAN1ookO;! O;aB16pAT8;dPqAT9r2uOw;!lay culk6BU;amA;a2KWdemarAR1ga5YWjB2QmQos xOpAT4;! snow lO;eo4XC;ccPiO;ll0ni;lu8;naa41JsQt,yaO; saO;ka0ZH;ai AAZtrichtO;! 40Q;anand sheeB43ba7VHdongO;-seAVB;'NT-doAAOaHWcd sound95YeCHgCBhaAM1i6Njubl8G9l6Io2Fp 2Esu t5USte frequency bA2Ju08v07yPéa seydo9T3üO; 67VbeJ;c04dia 03e,ft,le 02mZnSoRre,sPtham 9XBudmila pO;avli9FFuAPR;eOo603;nkoiAUWrgic acid diethyla2U1;n,to macA8B;a khoudB0Cching5JIdTnPsey de2JFx,yrd skynyrdO;! 6TS; PdieAK8e O;ch9WGfre7U0;coOred386;l7DLmA75nwK;a 7J2on laroucASLsy fonse9T1;eALAphO; no9ROati9YoO;cyHma;and erik meneAWUlo4KXwagg9R9;cor6QTlitvyA08weB0Q;hAVQoris radN3;iv,mh; 1Sann de lesseAEEbunA2Nc12d0Xft0Tg0Rh0Pi0Lk09l08m06n00o84IpWsVtSuk2VHxOz2ís fi9S4;embourgQoPury O;c9g4KKv7A7;r,t96I;! 9BAiAVC;ePherOz graf schwerin von krosigk; vandAK7aASV;!fi92V;ail iconic770it6LRt;e fi51LiOus;n tPta nyongO;'o;he thiB1B;-class ekrano8GPaPgOisolar2VD;! 5O8; Qr O;c2VBecOgat2IRne64EpA4L;lipB1U;blMLlove3B8; inv6W1en Oinar1VJ;f9F3t1VJ;ar9Q0ulemon athle960zs1SW;a Ye O;brWcVe7PPf41Kgr2DEhUmSnosA0BpeRrock06HsPthe evange5BSwiA6EyO;oungb28D;av9Y8kyOtol6AI;wa9SH;aAHPrL;aOe1UJ;cfar8E8;em9TJu87G;aAL7om97T;acEy1;dončA7IgA4BmodrA7I;gi's m2AYsOz inácio lula daA1R; Oa5TQe ra94U;buñuIgOs5VC;ara514u0FJ;anskOn7XQ; p4B2;er Oh;pistB22;hansaPwO;afB2G;! O;fA8Zh3PV;acrFdiHovico einRwig O;ah8NOboltzAKWgör3XQii of bav9OXmies van der roAR2vOwittgeA33;an beethOon m5BJ;ov5;auAQF; 0Ca06ch2MGh03iVkUrezia Ty O;and ricky ric51Cboy9DPdQfLha7in the sky with diam86WlPmauOp401wor932;d mo7TQ;aw6J4iu;aOe50M;cDvF;b6D1millaWE;nB04y luc2OS;anTd SeRferQlPndSTus O;m48Dquinctius cincinn5HJ;e B2le A4W;!aB0L; 4M6n lavisc953;aAYCdAZ0mo7FZ; Oo pavar6L9;freAHP;a Pino viscO;on9OJ;libB; RsO; OfiAXH;bOcruikshaA1Jd1Vhe7ZNoil758tiCwo8;laJra94M;guadagniA9CzO;ida6;be9YBlon4YOmontagAGE;co9DHd61C;re96Ms5W2;-fi9MUb3Nc3Fd0E5fi 7CDg32h31is 30jb1k2Yl2Tmbard2Sn23o1Xpe1Wr18s0Xt0Uu03vSwOx; Q-pa88PeO;'s,r Ost temperature recorded on8KW;m4COpeAJYsaxo9WT;earth2J7ge9O9tier3FJ;ePiO;e9VGng0P4; RcraftianQrs Pstruck in thOyatAXK;e 98Z;of the r7HBroJ; ho7DK;aQb79IiPnwanOof AVOy4CR;ti9NW;n the moonlAYBt or list AXP;cOlaAO8;tu52W; 0Cd0BiPvreO;! pyramAYO;e3LZsO; Ua Se QianaO;! O;creol2YMpA28;brAR1erd8N7fOle5NDp74Lt8P1woodward6CU;l4JDoAYT;hOjASMma65S;arAU2;a7N1bra9W0de fun2J2farra8WGga41Jh2WYix68VkA3Ple5N9m706pYslXtVvUwa4xOzampeV2;iRvO;! o68UiO;! o68TiO; o68Si;ii,vO;! o68Q;an gaMuiA3A;heOo3VA; p5MMro9PC;ot4;aOhilippeA1UriASX;rOsteAH0;trAIG;on wainwright7TJspe70D;diamond7NMferrigA82gOh4UJlloA2Qpear7MRreAVT;ehr9WOra6Z0; polish627har matthäDtery jackpot8TUus O;caAYIeO;liAYVmiGsprAWT; Qe493s ALBtO; OpropheAW5;cause of the confede8KIdecA07fiAVXg7YEin5UOjFH;angelesOzetB0C;! O-A3R;cSdRinAO0kAX3la9IPmeQpoliceOraAYIt2AF; deO;partAA9;morial coli70Ktro 8XK;odASV;harASUlip22C;az5PBd07eXiUnQrO;aine Oie0IF;br714gr8S0n02H;a Pe O;b6QDgr8NVmiA33;dOlu94Ls630;oo6; Os kaA99;gre91TlOp8QEsiAIH;i28Zo9X8;m ipsAKMnPtta O;deAI8lyAI5swAW6y975;e scaf9M4tz UzO;a So O;dQfertitB04insPlO;amAZP;ig6;e'6E6i bonav2Q1;izAO5;f8VWtAB1; P's Oe,i;prAF0resistance61Q;b6UPcha95Ghur2of OrHSvoldemoAZO;the f4YMw9; de aguirBra2P5;king for alSnQp Ose5J5ti8;heANOquantum gO;ra8OR;a,ey tunesO;! cartooN;asA48; horiA3Mdon02e 01gOi3K1nie don713sdaleiHzGK; T-time nuclear waste warning messA9MePiOs47Vyearby5;nDtu9MT;st Ovity claiAXE;common subsequence7J1fl8RNpalindromic subPrecorded sniper178wordO; inA9Q;stABO;beach ScovAWIislandPjohn Om821short-term 70L;baldLsi4O2;! O;iced40Jserial O;kiAQ0;aAMRpolytechnO;ic5GL;su8EPwolf and c7VL;! O;academy of music andUbTcSe83Cg5CYha983king's crosRpostalLRsPuO;nder59N;chool ofQRtOy909;anstedAMJo79V;s railway9F1;alAR9ityAMH;o3X6rAGH; dramaticO; aAYR;s,y;a QiO;c2ta O;ciAS4fashi2;glau1SUvan wagO;en5; Oi;sab9N4;ch8OLnettl7Z8; keA6ri; 6ZK-YaTiOmein ham3T9os;cQn,stic PtO;!eAMM;fuAJ4re8RB;! O;gaHpAMF;n PrithmO;!ic7VP;inALSlPmarshallOpa8W9;-gA13;e9KOuc9WQ;normO;al7PX;alSh nessRkPusO; ofA3Nt;doAUYed-inAHFheed Osmith94L;c9GFma93G;! m2XI; OhoAUJ;aOgAFE;rea8N2;b91WlawOo23Dst0; compaO;ni3; cool j,aReyton0F8iana 2YRoydOvm; O's 3YEs 6KN;au5LFbO;oc7J3ri7VA;ma,nfairpwllgwyn41D; 5Aa57b4Sc4Pd4Me4Hfe47g3Zjo3Yk3Vl3Fm37n1Zo1Vp1Squ1Prim hajrulla84Ts0Tt06u 03vXzOèAFN; UaRzO;ie Po,y O;ca8AKpat82B;boA42mcg3FW; Ord;kosAQVmOt0AVweAA8;inn99M;a73RcOmi450p6XBtruAW7;aAQCh9PH; SePing O;in the materialAVQsi7OSwith45U; Ple9TErOs1BC;!poAWF;aAUJfree orAUSin front of a studio audiAUMlife 2N8;he9QHmo5R4tA29ullAFD;bA4Dcix4shaoPyO;ifA4C;qi;a 09e03hZre,tOurgic2Z2;le Poral O;c2PGzo6;b9KIcUfTice5GGmiRnightmares9YBrQsimz,wO;itchOom5; ac4UH;ed riding AWUicAUI;ss sOx;uns9TG;eAICoc9F4;aeOhAWN;saAUO;iumOogAQ5uan3EO;! P-iO;on9T;iron phosphate9Spolymer9S;co4rO;aOo8Z6;cQry Oture re55O;moderALKrO;ea9FX;y 5BM;foAU3grE;a 08b06dexamfe9D3kov substitut4HAsajous2DXtO;ed2XBs of O;a00boZcUdSearthqu9NTfRhighest-grossing5FRlegendar1NHmetro-goldwyn-mayQnetflix original5FRone piece475pPstate leaders by5FUtowns and cities in england by 3EDuniversalYv3XNwO;alt disney studios5FQorld heritage s9X3;aramountWeople who disappearARGokémon473;er5FO;ilAUDooAL0;c comicsOeaths by 6OK; ch5XD;entenarAL4oO;lPuntries O;and6W7by gdp;oAU0umbiaO; pictures5FG;llywood5FFx office number-one5FF;ctive separatist movAJDnimOstronomical objAID;ated Oe;feature5FCtO;elevis2T5;eth saOon8DE;la9OC;aXbWdel gioc15JedeVgerrits5hartm4T4jane pers9UGkudrATKlTmRnQrPsOvanderpu91Q;ta0FXu;inAH2obin0FD;ieANM;arie pOcvEur96A;re8W7;isa and cultOop3; jASG;ls9W1;onARTrennan-6PM;nn,s63A;efied petroleum5D6idPorO;!iAUN;! nitrog5-crystal1NC; sync ba5LUiPschitzO; contin5MV;d,zz1; ti9Y9nOr r869;! d99Qel PsO; for lam8ZZgate0BV;b3CWl8HTmesALVri61Bs82B; biA31-manuel mirAT7a 0Tcoln0Pd08eZgXkTseed6HAuO;s QxO;! O;d7N2kernel4LCmiAER;pauANMro53VsOtorvalAJW;a8G2eb1UV; Q-PedOin park9O6trAMR; 53Hin4KI;b9IKlocal2AY;aggre84Jc41P;am,cAIGerASJuO;a fr6B1istic r2FL; SaOba89Un;geAMJr O;aPb,discriminaOeq8LBi7HMm8U5p4K6re8NV;nt 5J6;!l747;i2GOof O;duAOAsucceO;ssion to the britishO; th9TR;a Tbergh kidnSisf5WHsPt,y O;b1QGef7ZE;ay Pey O;buck6LNgr7NAmo5OJs13IvoACT;du8K8e8ZJh8KBl0JYmAD2wa3JK;ap6B6;bXcWeUfiorTgrKhSkRlQmcPpOronstaA0Vtri9PTu7D9;erLu7X4;c1LSm3TM;av4ee cAFoADL;asaRCoz8JE;a9QOuADY;en6RN;moAQBvanO;gel9UZs;ard329hu8;a938laAQC; Os6QG;cPh1UOmOr7GT;ot2SK;a6FZontinentM;esAG6meO;diAFC;aUbSeQiOmy,one6p bizkAQA;na8B1ted O;hango8O0liabilit17L;rOs9MGwiB;enAT2iJ;iOo;c 8V8;!ssAT1; X' WiTlQyO; O-rose de9P3ha9G9pic810;aA0Oc732gA1Jj9SOof the 8SJra8VJtoAAY;ePiOyANA; pa9G7an8YL;! o9WX; PbetBZth,um,ánaO; szilág8AA;el8VDreinAMEta5QD;flA5MkA7D;bSdRj2lQnas9CGpPrel howeLuzi Ow67Nx1yachAN2;veATK;e635u8ZD;oadAOL;ic9S1uAP9;!aAOF;eOud; nastA12lihoodOrt7QU; AE3-ratio 9B8; jose pellisseLmol joARL;a mx,er,htOniHurA; T-RhouseQning Pstorm A32weightO;! directory0S3;m9P2n8ZT;! 8D8;emittingOye9; dio9GL;m6WOnA68raA5Vt6I5; P-cycleO; asse3JK;expect6MOiRoQpe0with O;eOlu90F;lizabeAAU;f 798n5DV;mpris15LnsuranceQs O;bOs7NT;eautif8QW;! c9B9; RcQutenant governorPv sO;chre48N; of pen188;hte9T2;gAA6to ASG;ar,en5C0iOl,oc9GZ;a ba04Rja bO;ač9WZ;ence to AMPhOorice5V4;!eO;n,ss;erRi9Z5orio bello948rOya;ary Oe1C9;gAHLof O;a8FDcA35;aSia,tO;arianQi6yO;! O;leading 2PMm7FRshA4Bun99Y; soc9AYiAIO;ce,lPtion O;of8IJtigers of tamil eelAOZ; OiAIL;arts63ZdemocraPparty of O;au64Bca75Q;cy,tic party9O9; mchuALNm Pngel98r O;gaARTli9;devl4g57Lhem9ICnees7DRo58Vp663;b32Qkeq1IKwenl1IK; SbtO;! O;c37Qdemographics5U0inAGIrights Osy8CR;b30in O;c7F1i9ZRj5LOru9O3tA0D;c9A9e7QF; 51'veo50a4Cb48c46d42e32ft30g2Bh7XWi25l24m20n1Mo15p13r11s0Kt09ukABAvZwis XxQyO; AETlahO; fAKE; luTicographRusO;! O;gs,is,lOrx;fa,s,x;icO; o953;g0thAO0;and clark2LNcaOgAQQha9NSnixon7KBt1;p8RAr91I; VaTenshteinSiPon Oy ro9OV;aro9M3heAMU; bel19WathanO;! O;f96Bw9IR; di5W3;nOr 1PB; saginaINt;kamenAJ8tahANPvygo1HDyaO;sh4; X's Vhal Uitia 904oStO;erOuAQ9; Pboxd,s fromO; iw7SG;caAPCf8YG;! ii atO;re9D6;i2HBwe44P;go bOmake6EG;ra963;him 9EZit bleAM0me be your5QWthem eat 3TQ; 00bZhy,lQot9LTsO;-1V9er aO;nti9SQ;eySie O;bQcPdavid6MReasteOgAOWho6QBjoANZmaA8Yniels3YIph7DPstefaAJ2uggaAOUv6A7;rb6XD;ar2h71Z;e1HYi90HricusAOY; Q-annO; 5DVe O;doANJ;ann3PSgoBma84Fs05N;i1os;clayQinval9COmiséraA2Qpa8OKstPtontons flinguOwexn0;euAOD;roA5Y;poAPL;naean hydGoy O;jethro g2JOsa3HE;idop10YrOtospir95P;echaAPJo9C7; 01nRpOs carA20;aANVold O;and lo86RiO; o9QHi9QF; VaQhard e3VJiO;dOe benesAEE; brezhnAI4as9R5; l4P9rdO; Qo dO;a vinciOicaprioAJC;!–fiumicinoADO;b3H5c6VRfourn9R4la9RGnim9DHsuss5EX;czolgoOe9WEr7GLsp0BItro1G3;sz;sPtolst9DEvaraO;dk9;ay0tr9HZ; 00aXd-lA6XiUnPo8SFsOtA2Lz9AE;!kaAPT;a,oQy O;b2T0h6RTkO;ra8T9;n–Ox42Y;mcc1GY; rPnO;'s mausoleAA8iAG0;iefensta8HRob4DU; Ope;du8VNhOkaAAQol4r9DU;eadEor6;blavatn9KHdeig5X5wis95I; b6OEmQonPurO;!ia;!y snicket's a serieAKN;i8y;and skl9e 2N6;bniz integral4XMcSf RghOla57Ipz9LAsure suit l4FL; P-anne pinOton meeAEZ;noJ;anne tuoAIMbardu9DAtaylor5OSwhan6BW;eri9R5g955;a44CeAEV;a03endWiToOuAOW;! OlAOY;dQmO;arvel super17Sodular buiO;ldALO;c super-vill8M9imA2B;a warsADTon of Pslative O;council1LUyu1;h575m7I8super-h17O; of the Sary Rre 5U7s of O;runet6BNtO;he Oo3N4;faC;crABDen9YLpi8TC;galactic17Hse2B9white sO;na9Q6; noAMAcy of ka4lPtum prospO;er9UH; Sity of Oly74M;bitcoin bQcOeuth344inceAL7;annabFhildO; po5QH;y country or84I;drinking57Xstatus of O;fictional pornography depicting mi5JJpsilocybin mushr2Q6;-O–right political 83D; and right-hand traffAOPwing5ZS; Och,ds,k,leeXProy5VQt,–e1IN;b0Jc0Gd0Cg9JRh09i08j03k00mXpaANGrWsQtaePPvan cle5QFyoO;o-AG5ung-O;ae,ji;eRi5NUoo9C2trasA6TunO;-PgO;-k1YL;b4kyANE;-Oung-A3S;hAFRy8VB;adziwiCe4HO;aPeriweA9Pin-Oyung-b9K6;ho,ju8;ck,joALWrv4;ang-4uPwangO;-s9QJ;an y9AI;ae-m1YAe-342iRoPuO;ng01;ng00VonO;!-A3G;-ADRn02N;acoc9CJsaac c9KJ;aPi,sien loo8yO;e-AJMoAJM;nAFBrvey os9LD;aQix2oO;-9V6ng-O;hAAZwookAGW;-hAF7n5U9;hOor9LB;iALZoonO;-jA9D;oPyung-O;ch8LHhAMN;-y8ULyd mal8Q0; Oa and the sw1g0;la8T7zeppelinO;! O;diAF6i9WC;h wałęA4OiOlerc 706;th4;anPensOron6PS;boACGraA7T;ese Oon;c8UUpe9TE; 09d05gue of 02h re8QGmington s9T5n00p ZrnWst Tth8JTvO;eQing O;l2VPnO;ev9FX; it to beA2Ds of gO;raALR;common mult8OLdeveloped cPsO;qu2X1;ountADY;ed helplPing O;c6ENm50V;essALK;secoAIQye9; O-A4Bing tower of piA45n r1WQ;manufactu9Z5six s4S2;ireland premiPlegendsOnAFU;! w9YG;er 859; Q–O;acidOcrime3J2; bAG6;bA0Hp66V;miche7salOth7EW;on9J4;n 9OG;corbu8MWmorte d'a7KRsamouraï; 5Aal singh cha285b54c50d4Ef387g47hoBi44k3Vl3Tm3Hn2Ko2Ip2Dquon t2Br1Js14t0Xu08v05wWxVySzO;aOio,y4WH;da,rO; kagOus of betha9HC;ano7I0; O's,ne st6RFsla de o5TM;kay kAB2zO;ha8;aA25mAI0; Rless la435rence Os2OM;bittaker and roy no6AXkPsOta5IUwe6EJ;t8W3um8VL;asd1r9E6;aRenforcement Qof O;cosA8ZlO;arge num66E;ag8TCin5O2;biding4B7ndAGH;aPeOrentiy b5R5;rne9MWyan sataAAU;nduAL8r 9OD;danA6Fghing under t0ArOs0EFtaro m3BV;a ZePie Ous nob8P1yn 7NR;an4LZd69Hm3X8;l and hardyAF0nO; Qce Oe powell 6FO;fOha4LIluckin736oli3CI;ishbur4AEox;aSbRc0AYgQh779jaureg8S1lPsOtsAA2;chmidt hiss87Jhuler do72KoutheAAUwic18PánADQ;apkDo90P;e981r7E6;a4E9oeA3T;mb8SHsh;bWcVdUfr6OVhaRingQk6OSli9B0ma8HBnyA9KpPra7GHsan giaOvandervooALGwh09Jzi635;co8X5;endergest-ho881rep2;alls46Br7E0;dPrriO;er,ng;doJ;eAAIonn9Z7;a142urr1;a77Sen5H7ran98BuACL;heO; clouA9U;a mangeshk9eShe,iOrode12Bte,v330;nOtu98J;! Ox;aOch8CJemA67ho5G3la9TEp9SGsc8GN;l8GPme8TM; Ont 6H3ral flow 92Ux;bronze age7CUmi3M2regi7V5show with david l1YK; Yag6ca99DerXhana2ZZik,se hal1HHtO; OpaAJO;action48Obattle of the battleship b21TchAKOglacial UjTkn8D7lAANmeMnight in so9FSof the summer 77Vsu7OZtRwO;eek tonight with john olAFJill and testamentO; ofO; ad4BR;ango in Orain toAKJ;halif9WFp90B;udg9UK;maximA5Ap3LQ;!di9NU;menQpalmAKGvegasO;! O;r142s260;inAKD;a0Bce9FJd,ge06i05k voorhi3ry Qs Oy30V;mOul86Fvon triA2I;ikke881;bZd685e1FPfWhTkSlRmcmurtLnass9paA2FsPthe cablO;e g7AR;aA2StO;orA8K;a68Yi4FA;e34Qi8;aPoO;g1lm3ov0;gm1nAA0;iOlyA3Porte9G7;nOt6AH;e,k;iPlO;yd5;it6MZrd; w8SRan8CF; Qst O;aOorganisAI0;irlines9AQrtificial non-nuclear explosAD3;hadron coll8ZJmagellanicOultraviolet optical infrared surveyAGC; c9ZB; OineTCvI;croftPdOflynn b89Il6IFpu48O;utAK0;! and the temple of os22P;reO;ad9AD;is lazuAAAlaO;ceOnd9D8; P's O;d9I1eq89Z;op3DOt3WK;tiOzi;an8R6;a0Gc08dXe WgPiakea supercluA96tOzaroH;au tomorrow 823ern7B3;ston79AuageO; Ss O;of Owith official statu291;af8RYb9JMca6WXeu9RWi9R8pa3JWsOtA64;i45SoOw651;uth8RH;fa9AKiso7JH;a9Q3ki82M; U-granTed6VTfiCing SlRoPsO;kn79Tli96M; On do74L;calris8PIno67X;i6ocked9RO;at sa5KJpaA12;t 8BS;of QroverO;! dO;e724i9S1;nAIUthe lust7AA;as6F3eOia; OlAJ2;a74QbaShen5GEreQstO;eOroC;pheAB2;d8SCnO;tzI;nAFDrb0ss; Oi;cPdel rey9BOrho9IBtu9PEwO;acho8T5oAIJ;lZCo8V8;arXbQelPiaOonica g8YIprE;!ceA4E;o 9L1; and mu9KTdaTeRorghiniO;! O;avent8SNcountaA6Ndi4SRgOhurac601murcié8CVurD;all4H4;au7KFrt wO; A32i9LB;! c27Y; Ocus al3PC;j9K6od9XD; bahadur sha9JQaO; amar1VP;eQhta 545ot1GHshO;adwe5RRmiO;! 28I;! Oith sta1CC;bRcQd4VerAFKg9Q4mPof the oz8A1supe90EtOv2GK;ah94Kitica96S;ich954;hADNo8TP;aikMeC;d-back 7YAka,la PnOssez-f73P;e5I8ie 3AM;aA8Hm3NQ;a1oTrangOuardiaA5H;e Pian O;me590p9HY;multip2BRpoO;iA19lynoO;miM;morp969s;a08baACMyO; O-in-waiAHP;a04bird6BGc02di00gZhyegy5H8jWlUmarSof the Qpamela h7EGrPsarah Ove3XW;ch4G4mccorquo852;andolph ch57S;bOla9IY;ed3MK;garet beau9PEmaO;la94V;eshuAACouiseO; mo8BY;ane2MEeOusABY;anne 597sO;si961;aga9AAo3LS;anOmitr0EY;a sA6H;hatterley'sOolin 592; l6ZK;!nd the tO;ra8MX;! ni9FRinian to3BFkh;ey cha9ZChlanQock3N8r6U8tO;icAE9ose inO;toler8VB; mu0DP;iaRours of herc902radoPyO;rin9YR;od7rO;! re1RM;! mO;ajoGinoG;bWcai92Jdolce viAGZg8REh952jet98KlTmarseillSni4GVpaRtPviO;e en 8NQolencA;oya47FravO;iaAGW;lA8Qz;aiAEV;a Pi9D8loO;roA1S;a5Z1laACH;ohèAG9rea tar piAC3;hôpital4ORo3CA;-G3aBJbs dBIc and the sunshine 4RMde,e87fc,gb,h7Ki44j a9MHl3Umart3Tn3Fo23pmg,r14s13t12u0Gv0Fw0CySármáRöPōO;haku uta ga71Kki uchi9K5;nOppen climate6G6se0RQ;igs9YW;n A3D;iv,lTm ka80RoPrOshtymA5Yus7NHōiku kan9H1;a s3EDgyz9REie ir8W3sten s57M;go furuhA3NtoO;! O;animationOb28p9X3;! arson6Q8;eSiOo r5;an mbapQe O;je6X2minogueOsonique63K;! si6CJ;pé; Or 6II;a9MUch5KWea984gUkuzA82lTmQpitABKri89DshPwO;a953hitt66Y;an6HM;acOo92O;lacO;hl1;owL;a308uy;aOon naG;k do1Q2me nkrumA5OnOzulu-natM;tung5HQz8F2;aAEGm47E; klux kl1ala lumpurA35b08ch07d8X0iper 6O6kABJllback–leibler div06m05n00omin343rQsOwaABU;ariOha8O3;gaA7O;dUil islandsSoko3JBsk submar30CtOukshetra995; OosFwood99A;a76Yc2BEgödIr764vonPwaO;ld5YTrn0; schlH4neg89F;! O;dispuH;istanOs;! O;re8YXworkers'A8Q;al nayy9chacko bJSda78Gg fu Rio0VBjPoOta kinH;icA2O;ali marOeld9A5;akk9;hu943pAD2;ail nanj8ZNi9A2kum bhag9MTquA0M;ergACH; kuch hot3U1isake-7XH;ern2DQla20Yo and the two strABP; tunstaCm;i,tp-90O;a0Hemlin wall necr0FiVoRs-o6uQyOzysztof kieś83X;pt2stO;al 5OCen ri8FT;pp,skal3TV;g0nO; gPecker O;delAF1p5V6;racACA;egs9I4sQtO;a,hi2OSi O;kharbACLs72N; 02hna01s00tO; novosYaVen SiQofPy O;mcnichADRs4JB;er hiv93Ufer pola936; no96Han wil2Z2n O;chenowe9WEd9HNkre7LBne9HIscott 41W;beCh59Gj7BLsOwi9AH;cOte9HA;haM; Olln0XGnna l2BY;a9L9kosO;on5;elAEM; veA0S;!machari srikk51D;hu7IHje6V8kristoEIma6JKwuO;! sex A8E;opO;olF;ftRkQmpDsnoyar8D5ut9XBvOy51N; ma9ARenO; the 6LM's last 5AG;at8W1en,ów; hei746on,weA9T;aADEb0Wch0Ud0Ne0Lfi 0Kh0Ii0Hj0Fl0Dm0Bn05o03pi luw9A3rVsRtPurtney59wloon walled 8LCyO;aanisqatA4Ioharu got57u9WC;aOori koiwA2E; 5KTk mahindra 60Tt8ZX;her0Z9ovoOtas tsimikADQ;! O;lOw9;ibera4Y5;eaOn;! under japanese4M2n O;aSbRc07SdQem9YWla9M3n5EHpeople's armyPreu1UEwaO;r,ve;! air and anti-a39Q;emil40TraA5Q;roadca0D8;ir,xe murder5MD; 828kaO;burG;aRda p91Vj8BNoPrad aden832stantin Otinental hoc8WC;chern99Hrokosso8PF;n moOsu9UN;lo9W9;miOrk sunEH;! 8G8;aram bhe959b91Wi Oodo 7O9;can't commun7ZRp7SJr91H;a OkaADImogorov–smirnov 8V5;n878superdeep bore1PL;ak,iO; k0MUma 7M7;!ne g7DK;-i-noA9LlO;'s,berg kravis r80Ora87N;a5B7ki9AI;i tec8OSnigseggO;! jes9LB;aPiO; smit-m9Aa8WN;guQkPnshaO;! u9UB;! b7MN; dO;istri9O1; Oi;fa943i0N3m708;ayashi ma1C5e bOoAB7;e5ESryantO;! sexual assault5OA;apsack6WEe03WiToPuO;ckles the echid9XVts92I;ckin' on heaven's5M9ssA47wO; Oing brA46;nOthy3NSyour custOU;ot6RS;ghtOves7MX; R's cross of the iron71Qs O;hospiPof Otempl9;co58Usid8JHthe roundA7W;taA3A;and8ONbOof the order of the gaA5A;achO;elA8R;! 5OF; rah8AAaSeRiOm9IEondike g61PuH;ff kings8L2ment voroshilovPnO;efelt7YWgo8U5;! 6P2;in bo52Hpt7W3;rQus Oy74H;baOki591m9XGschw82Ovoor9U8;de7YPrbA9K;a Ona;and3W3hi90U;a31bbuA4Cck2Yd2Se2NgaA2Lji9CPk2Jl25m18n0Cp0ArZsWtPwiOzuna A0F; fA9Zf6G9; ScRsQtOzbühI;!y O;c773hawk-2U5pry8ZB;ch,u6;hen nightm2LX;cOha6WZk9X9;a9Q5u1F8;hore702sO; OaniABGxsF;diA3Jfrom a 8IOkiss5BQme A4Opr8DA;aXby Wchhoff's circuit53AiVk Sov-class battlec7BBstOti9LP;en QiOy macDN;e a8ACn maldoO;na9I7;dunA84gillib7NA;cPdo646fer5RZhOs76W;a47TerbstreA7O;am46Aou3YU; te ka7C7ba8XSll kapriz99S;howell-baptI8s6KS; buH7n9EY; Oo and the age of wonderbeasA6XpA1A;th76B;d0Ge0EgPm5sOtsu9QW;ey78Pha9SN; 04's 02dom Rfi8R3sO; Pley ben-adA79ton upon O;huCth9A1;isA41of 5KO;hearts48Hof O;aks9VPbWc4GWe9QYfr8PFgVhUiTjSkRna7QCp97Ar5SZsPthe Oy6F2;n78Stwo sici4A1;aOcZZerbAi90T;rd4VVxo961;on8Z1uA2D;e7ITudA0W;reA3Tta9VG;an6TBej7LQun7QE;alicia and lodom5G4re1TF;av8X0oh9UBu6JS;c0GLdiseasOf8MEindia5RZ;e A6M;a793cUdo6W7gTjames 2NRko8le9of QrPs650vO;on,ul9XC;an9YX;i68YmasPsA0PthO;e 7CMo9ZW;k 9SJ;eorge v9JNhidorA0J;a9C0obGrims1T7;ct,s7VEtic O;bombard9KDen6OP; ofPergartenOl0WZ; c9HV; bl9YL; Y's5R0bSc9XTiQoO;no,ra lee sO;im94M; Oko gle9SH;ni todo9BQräikkön5;al SerlOo sA4Pra;ey w3CCy O;guPwO;illiams-pai8AMyaA14;ilf7ZU;mu894;b08ca07d05f8KJgo04h01il-0L6joYkXmin-8ZCn6FBpWri83HsRtae-QwPyoO;-21Io-5JH;il8XHoo5K3;hA1Mri;eQoOung-cheA94;-Oo-9HH;hyA94ye2;-j59JoO;k9HCn-94S;etrA9OhilA4Toss77X;a13i-d7GLyu7VV;ng-Po-O;hA8Yry8GX;ch87Rhyun,il,nA6Hun;ee-5MyO;e-yo2o59Cun-jooO;!ng;-eA8Trd2;aOeMic5HJotc9OP;-A1De-5IZrA4J;rn3tt9QR;a9RFodnAum;lQoOroy was 8HAt;-9CQwatt-O;ho9PM; XeVing Oswitch enga9RE;e9YFin the 3JKjo9ATme softly with his so8of Othem soft9TW;breonSdaunte 8I9eric ga9G3gabby peDIjonbenéJUosamaRsophie toscan du plan8SEtOwalter5Y8;imothy russell and malissPrayvO;on8EP;a 6UR; bin l3Z6;na228;d in 9KFrO; 73Ks of the flower A3I;'em aClA37; 2LBai sentai zenka88WiPukoO; ino9X8; O's delivery77QmoG;cama4YFdA0M;fer suRrOvan rus';an Onan ship9DQsey cle938;cu1CEtO;ie9UFrippi0;th91R; Rada5YLnPs dianO;a 4N7;apping of Oey;elizabeth s6I5jaycee du3E4;aOcu9WHroJ;! mn8HX;assPboOstaA1L;xi8;torrA3X; spor9ABraO; ad36J;aUilafat7XJloéSmer QoPruOu9Z8y094;angb4shchyov9DA;is1pe9ZV;em9TMla9GTrO;ou9QF; kaO;rdas7JH;b00lTmzat chimaA0BnRrQtOzaA67;!ia buniatiO;shvi9YW;ij98Yk9HXto9SV; aO;ca4VL;ed hossTiO;d QfaOstan7X5; bin zayedO; al nahy1;ibn al-walA5Csheikh moO;hammA34;ei9XI;arPibOy laA7Q; nurmagomed96B;ov86X;a2Wb7YHdar4Re2Pf2Ohl2Ni2Bke 29l1Qm1Pn0Uon2IJp0Rr0Fs0Ct0Aurig dr 5L8vTyO; Rboard Qm67HnesianPsO;er sö74Rhawn61Ptroke log0AO; e73U;i6CSl3AD;sig3MYweA4C;in Ol9on 8UH;alejand9VTb23Ac01dZfei9PPgar99WhaA7PjYkXlo9WRmUna9Z3oTpRru7VDsOtancharo5;miPor6R6pacey99Cus9BCysO;tr9MR;thA0W;ai94FetOiet7XDoll93O;er 90A;'l75PweN;aPcki7V6iO;chael15Ot4TM;c925g6SKx8Y4;e693li6;am3onA78;e bruy6i861uranO;d,t;la9YPoO;nr8URstn9PB;a8NWch9ORoO;genic1J8ne,sF;hOsl7TW;a,u ee veedinte naO;dh1;aXbal space5UBeWguelen94YiVmitTnelQose6ry O;co8M8kOpa7LYw606;a2RRe5OK; O-based viRI;densityOmeA5M; esti9KS; tO;he fr9HJ; r6XIng;m bürs4n wo33T;laOt4;! blasters 99U;a arrizabala93FlerO; s0KJ's O;laws of planetary64Psuper6EW; 0Dan6Z2d09gan ashuGjiro t7YnYosha unrest5DAsWtOya; Uaro1Vo yaTuckyO;! O;dQwildcatO;s O;f992m3AA;erA1I;ma7OS;ho8VVstat54C;ho o9DSingtoO;n 6MV;eSy O;chesnEdalg9GVeQg,k4H0lPmOome930ro9YW;ccor3ZW;og8HB;ve8M9;dy Rth O;brana41DcoOfe8WKmoBtobEwi8FM;nnA2NpeO;!laA24;cOfa8XGspac4S3;enter ho516urA4D;all5WCo,rO;a Pick O;lamar8Z2sam7TU;s7TJwFO;bRcu9OQf6TjeQkesEl4TQm7W2no4VPsPth6YDwO;atana87O;ham9P3ta51ugi95W;nnA2Jo8;erLurN;a8P7ono jih5pegowd0ZH; 05e04is,lRow9R1pA3BseOvin gastel9QF;a ballePy O;asb90MchA3Fgra8S6;ri9V8;an lu9Y2en Yogg27CyO; O's0OEanneF3;b6C9cVgre6S6hu,lUmRosY1pQrOsta9HU;e6ZEi9BNoO;hr6E1w9YH;i71Qre930;aOcgi8AG;c8LArO;cIi2K;eb9OMyn9TO;larS8r99Nu9O6;go9NCmoO;nd,oB; okere96Sla;mi3CW;pa8RQrO;os9NS; c9ko nobuZXnYrWth O;brymer5UYcUd5SXeTf0QOhRjaQmo2rPsOu58E;ilve92Y;an4K4i7YJ;c972r8L3;a9HIunter jesO;pe9JG;me9JF;arra4U0hegw4; staOa knigh3QF;rm0;an2N4;a9UEsteinhaD;fiy8L7ir,lavík 9SE;chantTgan-michael kElRm3HGnQpOrthy su0UK;aA3Ling up O;appearaA3Nwith the kardash9TO;an wy9MXen ivory w45C;ey haOy shaye8YH;w3zeC; se8VC;la se4UZnu reevO;es9XW;rama 8TY;a46b41cey musgr997d40e3Zfka on the s57Fg3Xh3Wi3Qj3Pk3Nl3Am31n2Ip2Er1Hs1At04u9T0va,w00yVzO;aSimir male709uO;o ishigu9SMshiQyO;a nak9SXoshiO; miuG; sakura9LMge no75S;khOn; 9CPst1; QaPden k9KNfa862ky,lOvan n69K;a bra9N4eigh mcena8ZC; scodel8ZPk;ca4V5kOle6UEpa6V1;ay men2en3OM;aQhiO; lO;eo8E8;ii,saki9L5; 0Ra0Qe0FhXie Tniss everSrina RsuQt 6PLyO; Oa zamolodchi89Mn6ROusha rocket laun94N;m924pe4Z5w9K3;hiro oto8FQyuki konFU;b314ka806l9ST;de5;cQho5PUl6F6mPpO;av32Wip0o9WTriA2Z;cg7OBel9OJo4XR;a2J7ourA44;arine 03erXie lee gif8TOleen Vman30IoEryn Sy O;baQg6KMhOnaji7YX;i901oO;ch81R;k0t3;bigPcr6O8hOne5SBwa8ST;a7IBu90H;elA1A;h83GquiG9ro8ERsOtu9AC;toJ;ine Oyn win4PO;heRj8F0lanQmPpar8BWry1sc3WBwatO;er90X;cn8QPo8JA;a9KTg8TA;igl,l6JA;gA2Kh7KImOroA25v854;cph9UY; Pe sack3XEy sO;agM;a9W3bTcap7I1flRhu9K0j956mQo'f70SpPsOu963winsl9ZF;i5Y4nA0Wpa8QO;h6Q4ie9HL;aGcki4U2ic927oA1Yulgr8PQ;an4JIeO;et99O;ecPoOu9UH;sw9EIt3OI;kin70T;kana,lin karikó,mari da46Ana,wa shou69Z;de4FVgr6VMtiOvon3IM;mpf;aThQperO; schOsky l7TH;mei86P;i vishwaPmirO;! c7YB;nath3V;bi1;a0Ed0Ce05g8AGi03lWma,nVoUruechTst,tOush–kuhn–tucker cond8LXy mu87N;hiRikO; aa3SVeyaO;! gummO;ak64D;!ck n603;e tr1; parisy1lyn gr1CI;ata97Aö12H; O-anthony t4SIa homol979ie k110sru9QS;döni9UTglu964laSmaQne7TOpPu55Nvon hO;abs7JC;ilki8P0o76I;lOrx;d5o6;ger76Euter6AR; Ok4C8m benze9UDne van4YBsma6CI;b5XAla93P;eTlSn O;a992blQcarPdot89Re956gi68Jo,pO;a9K6e98Fit59B;nEpe8YZ;aJix5; lop1GJia;m abdul-jabb9na6CA;ashOeşler9FS;ev6ZGia6MU; Rc9PEite0XBkorPmo6EMn Oo93Fte;joh9kundrG;amOum;! h12C;h1XOsO;wi8HP;il QoOt2;o6BSsi's sarO;co9TU;d9TPsh9TS;a03e 01gViehtiio 9QXji,na9ZMpurUsaQtOye west9E5;ai 1D8ō O;re8L9;i QsO;! city chO;ie5Y2;re8L5tv;! m3PG; PaOchenjun8Y4xi136;l shepherd9C1na rana7VFr940;haQtO;he cO;onqu134;-ne7ZDn-9MK;b74LtO;ana962;! hanaPgawO;a p98B;za950;aSchatka7WXeQiOpaA0K;!ka6Y2la valO;ie8ZT;hameha923n riderO;! re6ZT; sutGlOru u94Pz; haPa O;ha5PSkh1;as1; ZashYeXiUkiSmQpanaPvin6NTyani priyadO;ar38A; chawA09;aOykA;n77Pr4TN;! koO;ec8XZ; Pko kaua9O5ningradO;! FO;l8P3uchFyu8XB;!ido2U4vaA01y cuo9MO; 96Unikov81T;ho naa 8VIpe9IR;ashi ha2F6egurui – compulsive gamOá;bl0;al aggarwMilC6ol,sa ollon7LF; Sa Qju,r9S2sPtlOz5;an69Oin o93Fyn d72Y;er perman1UWt;geO;rb0;havOBkara-67T;aa9PTi,lil gibr1o shibu97Z;ami mOemus8OVg7;oc9NO; a5D3so8;aseela bir1OLokawa shot5;aRbQhi alvida naa keh9LEirPuOy 14Y;ki,l;! s9TN;al9Q1;d9NTneri of the iron f32K;ba,nekkaa6thu vaakula rendu kaadhM;class bli85Ud 9NWi9ZAlite codec 64Vmeans0MQnearest neighbors6UQp97F; T9-T8aJUbJQcpe8PJdJPeEVhEUiD0j fei9YFo3Kp3IqueLrue h76Cson3Gtbc9RHuWySägermei9POérôme boa5ACóQöPürgen O;habe8EPklo8V7;rmungandr,tu9I3;hann jóhann8W9n páll sigmOzef piłsuds9I9;ar8W8;otOp 99M;hi94LirO;aoOl08Y; phu7; ji-2FVan 32bin nautiyMc9O1d2Ii2Hju2Fl1Am17n0Spiter0Rr0JsPtOárez 5PA;e,la9VN; so9QAsi0EtO; 07-in-time compi8G6iO;ce 00nO; Pe Oian90L;bat8FLlu9NLmu7YK;bWchaVf89Zgaeth9G2hTjeSk1lRroi9SFsp8ZOtOve1ZIw5G9;hePimber14ArOu7ED;ude9DI;ro8NW;in,o8;ffe9DS;aOer9HO;r3KSw84Zy5YV;m5JQtw4;art8NVieb8SA;leagueQsO;mi9H3ocieO;ty 65W;! O;da9UXuO;nl6GD;bSeatRfQgo with 9VAinto4WRmPone of thO;e gu8RJ;er86G;or laughs ga9VOri7XB;! take9SW;eyo9UW; björ9RCe smollettO;! assaultO; ho9AK;aQche8SCisPnee smO;olMJ; 2RQprud9W5; sud 7IJssicO;! O;park76LworldO;! O;camp cretaceoDdomi99A;! ascen9C8; ji-964ction 0EQeZgViQji itoPoO; te6E8;! 1A3;chi Qor PperO;! b5VB;dos s08Ufir7F8se9CH;maOsuwa805;su9WB; Oian arche5Q2ko9P0;chae4Y0hPsoOwoo-09Fyoo95T;-m4;ae-4; Oteen9G4;all6KRb71Icarter 7ACdiane rap0H3forKlo9QYstruOwh87O;gg7;an8YWia,pO; Oing the12R;f7U9poin62D;es 0QiPy O;cr5UEmo9MBre5GC;a06eUoSus O;and ethel r8RXbQc7K4ePh9PAstrO;ei8YK;r8DRvo9XC;ab95Nu9FB; O-claud5JC;césar c0B4i2K8j9VL; StO; Qte O;binOl3WX;oc9M2;m9G6ryl8C2st5UJ;andSbRc5ZHdOhag81Wkavn0lo8CUnewm9wal85B;el9X5rO;e8RRisO;coC;e6NQow5; the phanOre9OB;to9VL; ZnO; TaSe koepc8YXnO;a Qe O;h99Zm5IDnO;icho90D;margu3WCpe3XH; o6V0;ass961b3FNcaRdQe0LTfellPgl6FQle4O7mOnagels9FGs8V7;cm2WEo5M3;ow3;ay,enn8SL;l4YCsablanc9X1;a9FCc3GPdSgRhaa9X6j9UWlPmc6R3or6D2q93Yroberts9QGsOvol82Q;awal8LQt7N8;eOouis-d8R7;migo8VSnn2;a93Til3XW;avFucourn9B2;biOver6;anc9KE;be,tsuO;! ka1QI;ce wr0VIlliard6M3;a04d 02eZge WiRo,y O;cPd8ZYgOh37Umikovi9SFparfi9NSsheinJR;ar9PPe8U3re0;h444ol662; Rc8WKtO; polgár,h O;bOdu46Al9TI;ar9N7u8LI;d5JPlo9LP;dPju9FGreinOsteve ha3WG;ho9V1;re7K8; Oa;beOhiCl9LCt70A;ll5NH;aOhi8U0ne8ZF;pat9U3;ismPs O;and the black m2ZLisca7E6pr3X5;!'s view 4PJ;carlos i23Sguaidó,josé esparragoza4WUmaPpO;ablo monto93Yer7PYonce de5BF;nuel Ota;albendea pab7PWfaO;ng8U9;! webO; t1TO;egOmorgan4Z5;!m8WM; 8Za8Ibb8R2ck8Fd89e71h39int 34j2Zko wido92Pl2Xn1Tols1Sr1BsWtaro ku631urney TyPão Oël mat982;cance9N8f6OJ; Pce O;bulifa9FIcarol o9IWvan pa7ER;beh9cro51KdO;avi8RIi7EK;di9NRto the O;centerOsavage pl7MDwe9SG; of the7EX; ve11e0Fh00iYs XéO; Ophine jo9E3;al92Ecarr7VSde sUfeThuiz9mourSrRsO;aOá;lvador alvOntacruz londo2QHrama8JR;aren8SB;aúl capa5BNizM;in8QJ;lic1HXrr0;ou9CY;a1Ds8NZwh96Y;e tot9LGp broz O;ti9D1; Pua O;h5XHj8XC;bZdXgVhSkRl5MKo5C5peJrQsOwiddicom7X4;te8Y6wO;e9GTic0IG;adn9RRos5;e9MMlingho80H;aPer8QUoOutc2MW;l5MQm9UZ;rt8XEwlE;ad,o70NrO;ob1;a68XuO;gg9h74En;o803rol51U;f 08i07on,pO; tarradellas barcelona–el prat9INhO; Q-louis lagr93Pine PusO;! on4O6;b5UJea7UIl64W;b00cYducre8JCfXgoVhaydn,james de6K4kTlyoNmRradetzky von rade9N9sOts9JC;chPmi9CQtaO;l4t5;oo9N8ump9GR;azz9LYc46LerO;co9U5riJ;al4GEoO;ny,si4RN;eOrdon-levi9LM;bbe9SF;ie7OTou8ZY;a8VFoO;l6E1nr9Q8tt5;eu8N0onO;an91U; m752;f24Kmenge7s4LD;rsta2PM;dPge Oja f8VG;j5SMluis borg3masvidMsalcedo cab8EO;anRiPynO; w3AV; el niño pOn sp7M9;ol9TN; PaO; brew9JW;belVcUfi8A1h1UEkyr8LJmTnRpOr9OV;ePiOoo7;ck8JZ;e7te98H;oOwoG;rmal 4V0;as98Dec6FE;am3OTlAQ;fo9TYl; h3C1' annual hootenan8OY; 0DaRes440i mitchell8MXjoe k5X8nOtr2;ie pea5CPy O;buOcla812gr5RFha5INk97Ll9KO;ck9MP;h 05s 03than O;b01c00dYfraXgWhaVkUlTmajo9RMnCOpry9SUrRsQtaylor 3H4vOw3L4;anOil9LT; 9SG-t9QG;p9R1wi7Y4;hys1NIoO;ss,um9R4;a97Zipn97V;e 0A1um02Q;i8ZUrrF;ottsc8M8ro9BG;k3nz5;aviOem9T7;d,s;a4re8QA;an9J6ra5VJ;br6ZIlösOsa5LR;sl;fQhOlot1;auer-9EAex,iO;ll9MI;alc2;an3TEbWcry0favreau9MGgrud5hVj9QWkUloTmo8S4oRpeQrPsOvo9PZwat9OR;e9R2paih9OQte8VY;i7YDo9LE;rtw9KPte9QY;ri9BHsO;so9AZ;rd,vi9LD;abat-zi9B5rak7IJ;amm9M8ed0ur8V0;aQerOon jo7CNrower min8MZ;nthO;al9M5;rZXtO;isH;ene bla9AKlO;ib9KDy rog0;oOu4AX; P's bizarreOli2; a38A;rOsi8WG;abb9OT;c52Edirect attack muRentrance examination – adva7MNprobability6KEsO;ecuritPpeO;cial operations5FN;y 7C4;ni9NX;an37nO; 03nPsO; hopkin5XYton a6F8;ie 00y O;apple4V4b57GcXdepp9LMenglishUf6PVgaTkSl3RHmQra3HAsPte9OXun2N3v52UwOyong0EY;eissmu9J7i8P5;equoy9I8iNo4DY;aOcda9PJ;nziIrr,thF;lim8P3noxv8N2;lDNrga8ZI;! O;re0M9strikesO; aga4;aOr5R6;rs2sh;co2QSwa8H5;a2Kb2Dc22d1Ve1Uf1Pg1Kh1Bi19ja18k15l0Wm0Ln0Ko0Jp0Equincy3NOr0As02tYupdi8TFvoXwO;aTesleySiPoo,yO;cl4PU;ck,lO;kesOl81A; b0NL;! fl39Y;ll,rn0te9PNyneO;! O;f9L1ga7Z5;lanth5n n99T;erLhOit9O4oCravolta9KYurtur9FSyl0;aw,e O;a6VGbapO;ti9O6;ax2chna7SGea7iTl9L6tO;aRein86ZoPuO;art 0I9rg3;cOn3;kt2;m9J0n951;mm,ngO;er s8EKl6S3;aPhys-8FVi7S8oOu591;b8K4me9FF;m6AStzOw9P2;en6KZ;aQePrO;i6ofu82X;e9P1tr8Q7;rt,ul O;getty6JWi906j9OUva99A;'hu51Dat3f gau9AMl9LS;et9AOob7;aVcTeSiPonEuO;ir,l4C9;chael PlO;iDls,t2;hig81X;ars6Xllen779;af9IHca4e3HNg9LKiOtieEQv9ODwho9JS;ntiB;dd5ga9EXh8DLj9N9lkovi3KFsefield48Ctusz8MWyO;aCer,nardO; ke4B1;aUeRiPoOucas 70Fyd2;c8S5ne,we;nOst,thg9OC;dsK; PgOnn199wF;e9MJuizamo9JV;car6H5mesu8VW;ndFrOss9CHyf824;ch,ro8LE;ePn8RJrO;asi4NEee9OPicfalu9GZ;a9M0rL;cob astor901y;iiOsn0; sobies98P;aUenryTiSoPuO;rt,st2;rtonOwa9NU; coO;nwK;lle8CO; ne7V6;i9JOn58YrO;b5T2vey kello8DD;ielg95Jle988oRrO;egory d2ZCiO;mshaw wOsh9MR;il7YD;o8LJt8CB;als4ZSet3JNie8K3oQrO;anOusci7HN;cis d5V1kl4;g7U1rOster du8RQ;d,syt9E4;dw8W8f8FNlwKntwi8EPverett millaF;aTeRiQoOrew b27Bu po99A;e,nO;ah8C8ne;l4BCma5A9; lanc9N5ac2bnEeOl313mjanj6WFnv0r8MJwE;!re;lt2vid5IN;aTena9IUhSl64EoQrOu7VR;av5eO;asE;lt8IJnsOr0SL;tan785;o,rysost94J;b9PLge,irnc95PlRn988rPsOza7;sav1O1;maJpe8M6rO;a4EBoll24D;e,v4;aSeQiPlu1K1oOr4LP;nh9LZo8BQye8LV;rch 67Esh8WM;l3LnnetOrc9MU;t ra6K6;rrOsi5K1;o7U4y9I3;braSda9N4lQm9GNnOst4;d lorena boOi8MH;bbi9FY;de4EPlen O;ch92Zmu6KI;ham9I7ms2; UnO; Ra elisabeth of holstein-gotto7OGesO; Obu97E;brah9MVgOhøsflot klæ68Bke6WYr7CDverA6;ut8OW;ha9KNsOwolfgang von goet9D2;cho971ebastian 5X6trauss8EC;cruy96Nde 66; 02lQy O;bOdi6ZHfa8H3heathe4EDjord8K0ki8la1K2ra3DL;atEo960; Py O;c5XTfi84Fri7TT;do3KVeVgrEkinnUmSosRsOw0Z2;cPi3DDpoO;ls8N1;huma8P1;te5;a8EBcO;cr9I8ha7;am1;dOmbi9LL;ge4E0;a0Eb0Bc09d08e07f05g04h02j1IHke01lZmVnama964pTquesa9M6roSsRtQwO;al9FMilOr9L1;ki9GHloJ;a1XJessi89X;atr88Nim2tru8AK;g1ot;aOes8N5;ntol1AEt7PW;anQiOon56R;lOx2;lion69R;ch4gani9F4teg996;aGoOy1XV; trugl8LYuF;eLnnedy6GN;a9NUisaO;is9B8;al9EZel8U2ib7SE;l5ONraO;zi0;l9EMx7OU;anHima589on5JN;arn5PCoO;ck0muz7NK;aPid5onam1V3r8UAuO;ck,rr9L8;stia1WC;bercrOlw8LS;omb9KZ;elle f8GChRie Oorowsky's1IHy a8UB;cPfost95GsweOturn31Vwhitt5N1;et4;om0;aa akb9iO; mK;o wilPsOy 4WI;tr7MH;li8MP;chim 03nQquO;in phoenix9GGín \"el chapo\" guO;zm54R; VnO;a Qe O;frogga9E0wO;ha7LSo2JZ;ca22Dgos9FFjędrzej3OVluQn18Mo3SSpaPscaO;nl1;cuła,ge;mlE;a8TRbRcQdi4ZGfPhac5IQje9DUl42FmiOof a4UIplo7VTri6Q9si9KY;ró;ont8B5;h5l2CXol5W3r5LXu7T0;a9FHen8OZlon4HToocock5LU;m31Hpe84Nt8S3von ribbentr8U6;da8LDjPk8A7nesO;bø;o7VGungO;-s6TF; 1Eang1Bd19gme khesar namgyel wangchuJh17i8LBll13mWnSoQroPs8P6tOří procház8RE;endra6AXt0; horik0IMemon 0JK;! O;platf2NR;gle Pn,uO; jo6PN;aOb7XO;ll the7JC; 05i hendrix8FEmO;i02y O;bZcXdVeat9KPfUgaroppo9DIhof8GNio94Kki25EpTsQtPwO;al3e7W2;ar4J6;avileOmi9HTom1GWwagY0;! sexual abusO;e 9GC;a945iersaC;a7KSloyd hasselbai8LL;oOur7DU;o4CDre;arOh4;r,t0;a5I2uO;f5YNtl0; s79Pe O;a8SRwa8B1;b07c04d03fa61Fga02h00jYk8ZTloXmVnabo9JQpUrSstPtOva97E;h2Goy;eOu7NZ;iOr9E7;nm1;a9D4oO;ge9JKhn,ss;ar3L4lun5HI;aOcm2KRo6E9;ttF;nd9D6veC;armOon3;us99R;aOe9DSu8NU;n9BArb5OG;ff88Krr8GT;a7o9A;aPla9H6orbett0RXroOu2UW;ce,w4D0;rr6FAviezI;aRelQoe54NrOuckMK;i2XHoO;adbe94Swn;us98N;ckDkk0; Pian O;beCmi8O2;b5CIclay3B0gascOhennes86Zi3V0lat17Gs78Nv5FAwa2A2;oi6;adOyo;!i 3DB;!du krishnamO;ur87C; PsO;hi,u;qi8zem4;changPhy4V7sO;oo,u8;-wo9BG;ark32Eené ai8T2o7UPumpa l6WM;an3Jb3Id3Ge3Dff2Phovah2Oju 791l2Mm2Ln1Qon1Kr0Ts01tUwOzebI;'s SelRish Os;autonomous Od8VHethnic divis9DVpopula60B;obO;la9H8; st4THleL;ha7K6; PbOhro tull 9CEst9;l98Pr7HS;e7YNfPha59Bli9DSsO;et86Ft9H7;ighter gOuI;enO;er9DJ;per c7WFsSt0us Oy6UVús vida3KH;christ suQiO;n Os 95C;c01Xi98W;per2WV; opp08e 03iOy schr9GZ; 02Eca Pe O;buc7NMca998ed5j,mei 9ASwaB;alZbYcWde gouw,hTjSlRmcnam9BRpQraPsOtZ6wa7QD;eA9im77X;bb9GAi6;a6ANlu86H;an921ow5HDuc9JV;on3u8;aPeOyn3;c9GSn4IS;hn,rp0;aOhastain8LK;b1p6YN;a8QDiIrown findlK;ba,v3;a65Oeis8JWjaRlQmPo56FpOs992tyler f8HHv1A0;a867le8E1;cc0B0etc59X;ee so7OWin2P2;c8LMm3ne;enO;he5WM;emy 06i05main04ome5J1ry RseyPusalemO;! articho8L0;! O;d68Jmike's su7O4;brXcant5VXfal8A5gWhVj9H7lTmag21UoSrRsPv6NHweOya8;intra6G0st;andOe9Kpri91Uti9AB;us8HY;e9EGi9IGub4;'c45Jr5RS;a4I8eO;e2WJwF;aCe9A5ol7OW;a8PTolds8RX;o9G4uO;ckheimerOd9AR;! f6HZ; def85Ne39U; 39Ac8E0;allen611bUcRda8L5irQkle7KTl4m1CQnorRBp6OHre601sPthO;or972;is90Kou7um716wi7NG;oNvi6;lPoO;rb8H7;ar8KU;enR4re99Tul2AU; QgO;jOye2;o 4N5;soOyeo-be5;-Omi;m4ye2; 0Ha ma5DLnRsO; stolt8IRenOon bu8KZ; O's4W8;a5NKh1PN; 5L2a 0Cette mccTYiRy O;agu7JFhar99LlPmc3UCry1sO;eag5U3laH;ewFi9EF; f38Fe g8SHferO; P's O;bo918;ani5F9b04c01doud93Le00fl3F8gYhXjWlRmPnet91Zp1ro7TJsOt6C5westf6II;aun7UJy9I3;eOo6AX;e,y0;aRoO;p9AXveO; heO;wi994;nd2wr9FI;ason4MDon3;a7ol9AZu8YU;a8OTrO;a91Key;h7s0XB;aPoO;nn8VWol8ZM;pria84Ar4Q4;ea9FOotte4ID;bush h4CTc3K0d0Z6el996f68Lha6ESjam8F5m2ANor84I;li7GLp70Ota4EK;aine c4MLima k2QXma5H9;ena mc63AlO;e klaas5o biafGy7Q0;!'s witneXM; Yerson XreO;e 2UAy O;ar8I8dRepsteinOj9FDkatz8HRtamb9E3wr9EG;! viO; fO;ounda9D0;aQeOo62Z;anOmu8ZO; mo4BD;hm0;airp6SEd8KJstDS;bYcon9BBdXfi7X9gWhVj7XCkUlTmaggioncal9FBpSrRst99SwayneO;!'s musical version of the war of the worldsO;! – the newO; g6F6;a8IQich5X6;or5KQrob9DU;ab9eb9C7yn6;a6U7i86RooN;ar900e5MC;a6RJoldbl91R;an4NSu7N8;ae92BeOha8H5ri6EOuc7KJ;ck,z98N;pOt kunU4zy;! O;cj,grand cherok98Lw5OT;dahOediah bi9GCi;! t8VR; bu98A; 04-Tette Rine QnOs;e Oie gaff83Y;cal8QOmo66Ltripple961;ann r544pir94W;m3F8nO;ol1;bédel bok1O7cXjacques VlTmQpO;aul Oierre jeun9CU;belmQAm6QVsartB;arPichel O;basqui922jarB;c vall88Die le6O2;uc Oéon gérô9GA;bC8go8U1mélen82Epi36L;dessal93GrousO;se8UH;hristophe bouv9CLlaude van dam9G6;a6EQbaudr03c02d00gZhaYlouisaXmarWpUre8NQsPto8MPvalO;je1;e8YVhQiOma9GCta4EM;beOm8AL;liD;e6VYrO;im8J2;asseparOiag9CD;to7A5;aFsh; k8U2;g5rl9DR;i05GrE;e cOuj5WQ;arroLG;hréti5oc1YS;il3GS; 6BOownlo58F; Ol;bPhi-O;fi;la17Q; 90'marr4ITb8Yc6Sd6Ne6Lg69hang9BUi66k5Rl5Nm3Bn21p1Cr0Zs0Cthi ratnaWCu0Av04w03xon 536yRzO;minPz O;fu91Ije3SM; grace grUWe 1ZJ; U-z8S4aTcee 954lRmes6AMne mPson4ONwO;al90O;aOe6WQ;nsf7R6;en waOon89B;dd7; b94XpuGs4OP;and silent bob rebo9FObQcPdup1LEe7KEf4BMh984kKle8MTmo92Opa9B9roOseb8RW;a93Oc38K;h86Su849;!aOl8F2;kk0ru7J7;aharlal neh0EQed kar8T3;aPelin t17Xier O;bardem98Khe8FApe3FE;! Ones8NKsc7AV;development k9BFvO;e7PXiO;rtual6TL;me collet-s51XnO;di9E7;min08on Oprit bumr951;al06b05c04d02flemy8g01is00kYmVnewst9A5opp37QpUrTsQto72QvoorPwO;at7KOi6XT;he3;ang83KcPegIpOtaN8udeikF;e949is8B1;hwa8CAott5DZ;ei4M1i7FSob8LC;a2UXri30A;aOom7WTr6PO;nOr0V5;fo9CDtzouk9EM;eOi72F;l9DTn89R;aacs97ZbeC;ar7UNou9D4;erOo603;ek5R9u95T;l24Pon3UY;atem97Teg92Vig9B8l8Z6o6Z;de1e4RF; savoy5R5e O;cephas548g64U; jar bZeUno opToRrOvis co6TB;ePod bO;ow5;d gil23t s617;mír jáOn varsa8LO;gr;me0;d Ot3QC;bu95Md5U3fY7go8W6ha531kQleto97IpO;adalOolF;ec8WJ;ee8BWus5ZJ;in93X;anOon8O8;! 05eseO; P-language proficiencO;y 7VV;aZbWcVdr6OXhoUiSla8MCm4QDnRoccupation of t75Kpe8K8rac3WTsQtelevision0F7verb conju6NGwOy5;aOrit7F7;r cr0NW;piderTPwo9BH;a9DMe4ENu79J;d9CZnO;vasion of manchKM;ldo77Rnorifi7KK;al4EWom4ETui7X7;attleship Or13O;mOnaga8V9y3H9;us912;ircraft carrier Osset price2KL;aka8T8hi0CRka8A9shiOtai223;na8KX;airRduQground Smaritime SnOself-d86;a876eO;ws72O;ring5O9; Ol90F;self-defense79J; 0U-0Sa 0Qe03gZhvi5NMiSnik sRuO;a533sO;!z kamO;ińs8VO;chü8VFi5U9;cTnQsO; OsaL;i1jo67E;a Pe O;lindemu6V4tu8JW;gav7G4wójcicka hos7IR;e 5PGza47F; Oo 5PR;hPkiOna-Gseung-5K0won4CL;-yo8;ee8KGy6JR; T's add8Q3ane garo58JlSs iBTt O;jPl5P0mOs4JBwood4VRye8JS;cte0o641;acOon3;ks0VH; parri947le monáe;a02bi958c01dig97ReyBfZgoYhXkVlTmcg6X8pSr63EsRthe viQwO;ieOym1;dl4;rg4;ey36W;aulEo83B;eOyn90U;ev3vy;aczmOra7N2;ar89F;aw8XJorr2HO;l882o2WV;a7B4oO;n9ACst0;am560u7HU;sh0uO;st5;gana Ok3MY;ma8XI;krzysztof du9A6michaelO; v16U;błachPhOmay5van eyJ;oo91Zus;owicz;a1Wba5CCe04iPmu,setjiO; ta9CB; g01eOroqu90I; Q-lO;ee oOynn si5JV;'d3Y6;beCcVdSfRhyn7RZian7OPke4TGlQmu8VRol96Npa62QrPv4CBwayO;le92V;a4TLedk86N;ee cu8UMynn sp0MH;a94Soxx954;ePim2oO;rn1;metri834;aOhu8la7IY;mpbell7C3rra8IM;er941;ela jam8OEis w1Es O;a1Ab14c10d0Xe0Vf0Tg0Ph0Li0Fjo0El0Dm06ne05o'k04p03r00sYtXvTwO;aQebb space telescopePhOis7RMoo90A;it94K;! sun1NZ;de,n,tO;s2t;! 0DanQiO;! aO;nd8CE; der2J1d3PU;a482he8FW;p53TtO;a7IPe8E3;an8Z0em9ig4IXodO;ay Orí887;ro885;at8PJuref7YN;ee9AQ;sbi5HEwton 57T;aRcPiOo31Vu7U;chael8G2ln0;aOc02Bteig8Z7;rd7v7YH;ca69BdPn6XUrsOs2y;d5te98T;d86Ais2;ass1IBi8DQong970;seph dresn91Iy99Y;! RiPvO; QoL; of Oi P;e8QMscP;of scO;ot93L;aQePoOu8U7;ng,rn0;r6SFtf7M7wi91K;rd5v5;aOlai7QFu8SQ;nOrn0;dOg;olfi8ZZ;enimore co7MZle96Mox,rancO;is e4IBo93P;arl Ol3ANnnis636;j983rK;'1ZNa2BSePoOys2;oh1;an,en;aQh3IPlerk0PXoPrO;om80W;bu8ZGmEok,rd5;an,gnEl7M0m4GErv851y6;aSe96Qlu8TOoProOu28K;l4wn;l96UndOw97L;! O;in2B8m7V1;dge 6XIl8SX;ca8ZOnd oliver phPrOveL;ne98Qth8Q5;el8K9;in87C;icaOl6W0rcus38B;! 83Gn paO;toF;ape24KePiscoOlianwala bagh5XE;! new generation 4ZB;el5RPn O;g8CLhur95Ara64Q; and da36Uar99We SoO;bOv sedl9; Oi13H;dOfu5XS;yl1;ange905bUe30Df1TMgyllenhaalShN8j91SlPmcdo7W1pa77Kr6X3steOta6DN;in6DL;aOlo45O;cy,mO;ot99N;! O;f92Oo8B2;rPuO;sEtt;ew0; cour00Kde92DmOni8ZNp8PGr bolsona8XD;e Oie1JV;ki8lor13Omu8T0press8TQr65I;aVdTgeRuarO;! Oun8WW;ca96Zf-8X4landOxj; r5RI;d littlOry;e 2XR;pOt78T;an8UL;dish Qme thandhPpathi O;ba4C6;ir95N;chandra 72B; 7OYden marO;teC;a pinke1XJeOon sanc83P; Pn82Iveon cloO;wnE;carOthirl1K6;giC;ar96Jcard97Winda 1Rk05lyn82EoWqueO;line TsO; O-louis4LV;brIcQdePlOoffen5H0ta7UXv2UE;ac1e grF; molKr18Y;hir76Mous1RA;biOdu p5Z1f913kennedy 71J;ss94L; pasVbO; Pe257iO;an matrix and determi70Sn,ti8YQ;bQcPelor8W2fortune-l36BrOtremblKzu90E;a63Bees-mo7VK;ol129;atal2eO;rt6JY;to8HC; 04a01box7L1f5CGiSsO;eptice6CHonO; Oville jagua95Y;brOfa7ZDpol8PUwa8;ow6; Ve O;b6B9cPearle h5D5gle94Aro7C2sO;hro8PWte8AR;hanQoO;l5H6oO;g1p0;! O;a0NGf914;p7POwe8N5;lPsO;s f6A7;!o8VQ;a0Rb0Pc0Od0Jel94Ff0Ig0Hh0Dk0Bl08m07nic04os02p01q2T1rYsUtRwO;a8E6el8VVhitePilO;d,s7FF;!haC;at8S6he ripperO;! O;susp8TT;avQcPpa5HVwiO;ge97G;hloss8PY;or7TQ;ePuO;by,sse7PI;a87Wyn93R;al7LMosobiWP;boO;ur6;hoPkO;laD;ls5SV;a,cbr8MFu7AL;alPe6GLoO;nd2rd,wd5;an6;eOir91Zlu2HX;rou754vor33X;aOe1QGig7HYu84E;nPrOw7CK;k95Nl94K;dEna;le844rea8HC;aQDro93E;aReQoPu0XKylan grO;az0;rsE;mpsE;niel18Bven8UD;a1M0h3WWonH;en81Nla60ZrO;ooks4THu95O;l7HQnto7CKr875s4E8;arOb7MH;de8VR;bOoukie young-w7F8;a the hu8XEerw6UT;mo81Tru7;ho8UFp8DT;ba6BRd6AS; FA'm F8-8Z8aEPbEFcE0dDTfr92JgDHiDGkDAlCTmBTn43o3Vp3Iq3Hr2Js0Pt05u04vUwSxten8SDzQ²c,̇O–v–vi–iv p6Z9;lkay günOzm92D;doğ1;anaOumo-class multi-purpose6YH;gi,mi;an rOi t5BSo 67K;he2;aPermect4oryOy8HO;! coast6ZT;nOr the bone4MN; Qa Oh7SLka1H2;baque8U5miličOt2EA;ev8AD;kon8XYmQpavl84CrPtOvi824;he terr641onE;ai8XQei4D2;il8RDozgov81W; 8XPcn red 3E8; 02's ZaRcQer,il,un1RDzO;hak pOiar itu20Ly;er5RT; l5N0; a7WRchiUewon c1BNlOni8QC;iaPo-turkiOy6ZE;sh7Z9; r42On O;aPcOfas8DQla8DZna0XFr2IBsocial68Dwa93H;ui7P1;ir71Om8GHr70P; uchi7U4;aOokay to not be okK; wonderfu1IJlO;l coming back to me n934ways sunny in philadel044;cOfoZIhappened one4UHshould happen 5KU;hapterQoO;mes at4UFnO;sul95F; t2YP; 1Fa0Zco,ek8TQf56Zh0Wi0Vko45Tl08ma05oYraelRsPtOu7MN;anbul6MPhmian8GSrA;a r8R3ei sO;aga890;! QiO; Ot3–palestini0D;a216new shekI;adesQdPkO;amakawiwoʻo7ey3;efense6HH;an8CO; RmPpropyl2QZroku yamaOto8T0;mo8MI;etrOo76G;ic6PV;metric screw thPweek O;daH;re90H;'i7O5el Pil sabri yaak6T6ïlaO; sa8XP;\"el mayo\" zamba92Ncruz córdo83F;aReO; of Os of sc5YG;manOsk690w91G;! 8VK; 1VEmOnd6XR;! 01ab908iOo8CK;c Osm;c0W7eWg278ne45AreTsO;chools and brRtateO;! of iraq and the leP–talibO;an6ZW;va8NX;an92P;public of Pvolutionary guardO; c8EM;a2RAiranU4;mirate Oscha3Z0;ar6ZDoO;f a2R7;and Qby8CRin PmakhaO;ch8W4;eu8COi8C0;ca8ZO;ah 2RFng7O6s5PZ;aan kha74Xikawa1A8maItaPwar chandra vidyasO;ag9;r 8JQ; gu7SJac 01belQdoraPiah4X0mbard kingdom bOo taka6SL;runI; du6TI; Ua merc8YYlO;a Pe O;adja8TBfuh7QBhupSC;gQiPo4BJrO;oss1BP; o39Ii 6HL;om8WE;aPl4UUmaO;x7UBy;llO;en7R1;as81WhOne4S7;ay3erz8E5;it wrong to try to pick up girls in a dungeon?,tO;ank 7URhis 8ZO;a0Ce08i00kut72Gma gre91Pn-b02UoRrPving Oène j01L;be6DTthal8LY;ational Oe7MZfan8WMitable bow4KIum6HVévers61H;g828nu8XE;nOquoF; Pclad wOman triat2T1y;ar8F9;a8L9bScQdo930gMFl8YXmaPoBpillar of del8QOsO;ky,p7IV;id50Nn;hefOro91Yur7B9;! a7BQ;utterf8NN;di8NPna sha84GsO; Sh O;am8DYc7AQf6LGla8BEmQpe89ArPtravel6FQwO;ar39Bolfh3DQ;epublican450;ob,yt8BS;flower data8F6muO;rdo8R4;landQnO;aeDe O;a7WZcaGd2C4pap92Nry1;! b81L;nQqO;! O;inquiLw9;! Qian P–O;contra5EBi4HH;calMUembassy5T1p6HUre4KW;hOna7W8;ostO;ag377; c52Balu8YPi6J4; YaTconf7YGhoneRodPsOtv; p3Q4ec,wi8QO;! O;c3COna89Qs149t6QB;! xO;!r,s; QdO;! Oos;a8YBmi8RRp8QD;pulmonic consonantOvowelO; chart with a7CZ;addressOco7PMm1;! 8LD; i76Ran gruffu6PSdi6nSsQwaO;! O-5LI;st6UR;! O;jailbrea8N1ve7CQ;! Oe sk66CiziUG;antonOthru8RN;es3EI; 71-70a6Yb6Xc6Pd4De4Bf3Hg3Ch3Bi37j36k34land 33n2Zo2Yput4A8q2Xs2Et03u01vOxs;aYePiO;ctDsib8WY;nting 71OrRstO;co71Dment O;bOma6ZH;an8MR;ar0YWne90HseQtO;eOi2J5;b7ISd question and exclamation m6TM; O-square7M7;fu8MCtrigonometric11Y;der z8FBsion of O;ku5DOpo8UFthe body snatc67Q;it,yashO;a,i8JU;eUoSrPuitO;!i2;aPoduction toOusion detec275; algorith8ZF;cranial8RNmuscular i0RNn8XIvenous 45V; the wOlerable cruel8US;hiHoo8PZ;g1Il1BrO; mi19-17active bro7JHc16f2W2governmental panel15ior 8GEm14nUpSquartile4H7racial marriag01QsOview with the v2T2;cope6UDeQpecies revie7OStO;ate highwa3UGellar trO;avI;cti35Gx;ersonal relat8D1lanetary f4VLolOun8CA;! no8VOa8WI;a04et Pment of japaneseLJshO;a90Eip;aZb916cWd0TOeVf5MiUmeSof8XLpPrelay Oservice prov7GMt7AZ;ch8MF;o42UrotocolO;! O;s8GAte4S3;me,ssageO; access8HO;nformation7M4;ngineering task6WVx280;ePoO;m1GJntrol message8HK;leb89Lnsorship 4CW;c8H3dult filmOr5FM; dO;ata8M0;l 0Dtional O;air transport41Rb0Ac06dat4IRenglish language te05la04m01nuclear event5XZo00pYrSsOunion for conservation of 2FQ;ociety for krishnaQpPtandard book 7YOystem ofO; u65;ace7GM; conscio3FS;eOough215;cognition of Ol8TI;is8O4kQthe state ofO; pO;alK0;oso72U;honetic alphabetOrognost0C4;! c8SY;lympicEXrganization for standardi62V;athematical olympi8VTilitary tribunal for the faPoO;bile equipment id1GNnetary 1EA;r 5XI;bour5UJw;st71A;ivil aviQoPriO;cket00Pminal c628;urt8UHvenant on civil and political1FZ;ation5UE;aOrotherhood of teams77I;ccalaureaHnk account 7Y1;coPen5E1mOrevenue5YJ;onol6MA;mbustion456nflict in myanm9;ittent f86Todal con4CK; on1WB;eptor14Lontinental ballistic857rural3TT;process Oservices6OY;co15M;ami 1U6l1;! TlO;ectual QiO;genceOj 7GK;! quot5K1;dOprop73O;ark45Bisa5YO;coBgraphic19management44Tquick syncLN;erTrO;aOi8SU;l,tO;ed Pion bO;y p69D;c6VUdevelopmentBV;! O;factoOo4UH;ri61V; 05ane clown p5CCcr1MTertio04ha7SIide 03omnia02pector01tRuO;l4rO;an8Y6gency in khyO;ber pakhtunkh82V;aUitutPruO;ction se4W0ment land709;e Pional revO;olutionary8SD;for advancedPof electrical and electronics engO;in2QR; s4ER;ca8YUgr8VLnt O;fa7Q4mO;essa1M; k81B;!c7BM;llewyn1GWm1;n QA;ari89Jvikramadit86B;ui3Y3;de,ri mina8WU;aQer Osb4E9;mongOproduct3SO;olA;! lillahi wa inna ilayhi raji'8XOte immun4T0;em8JMtaip1; Oiga84Cs18A;ma8O3;ective 8J3; Qtial O;d,public offeringOteaching 6TP;! 34S;fi7;erently funny 26Pu6T7; g8FOerRlourious baster8MWmar bQrid PushO;etA;bOol8SU;er291; s4CU;a0De0Ci06lXoRraO;r8T4sO;ou8TYtructureO;! investment and jobs895;rmation Os7QFwa8VT;aQretrievMsPtO;e67Uh6G5;e3F0y6Z7;ge,nd communicationO;s 2LU;aUectionTuenO;cer893zaO;! O;a1IWpOv5W7;andO;em8XX;! p7XS;mmatOti2;i2ory bowel8EL;mum and supr3STnitO;e Ri,yO;! O;ge8VIsOt8I8wa8V1;t8V5y7X6;fr7GFje8TZmonkey 5WNstrat8OZ;ctious mononucle7CPrnal36D;mous secoPntO;!ry f53G;ndO; s2;quality of arithmetic and geometric m5Y2rtiaO;!l naviga22Y;e1Ki0Ao04ra03uQyO;a4I2caO;r 6ZG;ctUlg8UGsO; StrO;ialOy 8HV; Oi4XI;mOre4F9workers1SD;etMus8X8;r8RMvalley civ23;an8VZiOor;on Qve O;charOr8N0;gi8;cOm4TX;oo8HS;! noo6DC;-QnesiaOre;! 7QAn O;la850nation0TBrupi8ML;aryan Peuropean Oirani0NFpakistani wars and conflic8S7;l86Sm1XR;l86Rm1XQp6BS;aYe XgSra Pt8VUvidualO; involvement in2MXi8MW;gandhiOv8OJ;! O;in8JZnational ope6DX;enous PoO;! c7NH;a8L7languages4WZpeoplesO;! O;in 59Uo4WY;fo4OOga8W0p83OroJ;! 0J's best da8LJnO–pakistan368; WaO;! RpolisO;! O;col8RPmotorO; spee5X1;jonesPpaOuniversity bloomi7IO;ce8TW;! and the O;kingdom of the crystal skuClast c0SOtemple of do8B3;a08ba7VFc07e06in04n02o01pZrRsOt6BY;pace research4WDtPuO;bconti1PAp62H;andard 8VL;ailwayTeRhPupeeO;! 8B0;inocO;er8NC;moval86WsO;er281; Os;accounts5UCcatering and tourism7E1;a4VMe81VoliOre626;ce5UA;ce1il7DY;aOew year's6M3umber6WS;t866vy;dependence6KHstitutes of O;ma6T6te65E;l86Ang85X;l39Iui7EU;dministrative5U2ir6RHm86Arm4IL;ei6VSgaHnational Pox7VGpOsu7HR;ale a7o8RW;c6BFf7OY;cen8RMpendenYx O;ca8THfWlibrorum prohibitVof O;aRbranche50UeQlanguageTpPunderwaterOvatican city–S; di7AZ;oliticsRsychologyR;conomic1I9nvironmentalQ;ncient egypt–Ortsakh-O;relatedO; arti6KX;or8FM;i8DEu8QX;ce-0NBt O;and identicPorder of odd feP0politOstate of cro2W1;ici1;ally distributed389;aUeRheon8IClusion–eQome PrementaOubD;l 8ET;in82Ntax39U;xclus2FK;l,nPp8Q6stO;! in film and 4LW;di3se; 8FSndescent light bulb,rcer2QL;ar 14Ur3JA;n8FTri ōO5uguration ofO; j4LX;n-out 0AQplace5P9;another world with my smartp0YBbrYcoldXfl7TDliving78praise of p86Irainbo8L9search of lost 8U8tPuY1vitro fertO;ili4UZ;hPrO;eat84A;e Orough the out441;airRcourt of the crimsQe84Ehe6MPlPmoOrealm of the s4QY;od for4HTuth6EK;and of lea6HTo81Q;on 8FB; ton8R2; bZ7;ug3; 0La0Ebo5A9db0Delda 0Cg0Bh0Ai gal86Xl8ROm02o00pOran 6PH;!act YePostor8DJrO;actical jo7CDe8I2;achment of billFOrO;ative2JAialO; Oi8KF;cShouse Qjapanese PuO;ni8PK;ar6P3na778;ofO; j3NP;ollege 78Z;e4APfa8GBw7LC;genOv8RB; p0XJe co7IJ;aSigrationQortalPunO;e 6V1oglobulin g;i8N6s fenyx TA;! to O;me3UJt825;culate Pnuel O;ka8D4;con16Ore16O;ot435; mode8RAur;m53Mstau74K;! 7F4;c,gPn Ox;shumHXvel3LG;eQinO;ary 7RIe O;drago7M6en834; Ob4XMmo5WN;co6NWfi6AMre25Psensor6AN;si-w1yooO;n-8J5; 03aiyaraa7LCeana d'02ha00iWk30ElPovey7KJse Oya naishu8K2;hi7QPko8HD;aTeRiQm6DGumiPyrO;ia8F6;na7FF;noF;anaOgal drug6CC; do4LN;cme plen61Mn mes0MY;aOza shle8AU; topPd,s akhoO;ma8H3;urA;m aliy8KSn O;om9;cr7KR;di6VBvo8JX;ePig8H5oO; uwaFn; Pa,r caO;si56F;barOtu7ZC;inh2MD;hf world junior 84Ft kharagp88Q; Ybo 7YQgy XlVnRor QuaO;na,zuO; f77E;and grichka bogda6YFstravi7OG;!aOeous 8BK;tius of PzO; semmelweFio c6LG;antio8GJloyo8RP;esia niOoo; c5JC;azal8M3p7ZN;farb5nobel51M; 7CTaTeQiOl3ris elba8LG; 4W9na menzIoO;c6C3m,pathic pulmonary2URsyncra7DZ;alPmpot8PGntity Oo80Ys of5UV;docu81Xp43G; gas7CMi8IF; lupi7ZCho;a00c ZeShPici 4EVlo87GoO;!nocla8IC;igo kuro6ARthyO;oOs;sa882; P-t,berg 117landO;!a8NVi21L;a89Sbucket 56BcRhockeyQninePposeO;id2; k8A6;! world champ80W;re8OFu6TE;aw7Y3world tes83H;l3SRo a01rO;ly,us;erian WiVlFmUn RrahimPuprO;of5; ko8JLa konaO;té;aObattu8ROkhald8QNsa86Xtaymiyy8HE;l-hayOra6LY;th8O5;! personal2B1;bo,za;p6N3u81Y;go asp8R4i03mbic pentam8D8nRta Ou designated constell8KF;aOdelay c6P2;irporO;t 6U2; On di8NM;an2RDbWcUduLf7NKgThSliv2KTmPnepomniach3YFsOwr8NY;mi88Zomerha693;ax7HRcO;diarm8OCew1ke7XXsO;ha6;a8R0o8ME;i4XBou8PF;haOu89P;rl7O7;li8POoO;h5th8NM; kf8MWn O;armi7SJb623c6LWgl5mcgil89EsO;tir8J7;not Oquitting heroi8standing on a million2J0thinking of ending8ND;a rob8QXt6YJ;am 04c03d02give it a 4IZhave01know wh00lTmSori71PsRthink you should leave with tim QwO;ant to Oill always love7I0;eat your pancre8QHhold your 289;ro6UP;aw2I1exually identify as an attack h68Qpit on your 0UF;ay destroy7HWe 777;iQove O;lu6XXto sO;in7N4;terally just told7HSve in grosvenoO;r O;sqO;uaB;at you did last 2Y4y the caged bird s8MZ; a8N0;on't feel at home in this world any8JAream of jeann8NS;are a8QFhi8;g0ZTja2XPmo8BUnot okay with Qs8MZthO;at i 8MYe O;night—color me5ZWwalrD;thF;-P7aI9boI7clI4dI3eD3g7BSi96jalmar sch95m91o4Br49s48t41u18wa15ySéO;ctor PlO;mer h7ACène louva8Q2;beller48TelizOluis palm6PJ;on7WN;a0Yb0Wd0Me8B7g0Lks8HKmen0Jou7URpUsterTunPwelO; b5N4; Qa,dai O;ela0BEmotor Osanta 8PHtucs2;co7GDg87C;b4y6X0;esFia;atAerVh5ixInUoO;cRglyc898thO;al7Q4eOyV;rmAsFtical O;axis victory 50Fmoon of me0IX;alc894hondO;ri70;ag62WosF;-v,bo02dimension neptunAg01iXlWm2MPobjectUp7WZr66IsStOvTW;ePhyOrophic24G;roi8DC;n8B9xtO; t0U7;eOonic fl8M8;nsi5ZRx432; iO;ndust8GE;i7OSo7WQ;nflationPon cO;ant8GU;! in the weimO;ar5RY;a6KBeometric5GZ;lOr8J0;a,ic0PH;!opO;teG;ge,rom8AZ;erab8KOrO;aVoO;cTeSgenQl739poPthermal 45TxyO;chloroqui6zi6;ni6VOw0;! O;at83Ybo8KScyani7CApe4ETsulfi7CAv4V1;lectri6W5;a88Oeph7RIhlor4H4;ng8IMzi6;e774rid O;e88th66Yv4UW× heart magias academy ataraxA;lur0OFttO;! regency walkway5GJ;ng Osa;chan-Odong5VCin-yo863;su8; 2Fa2Db25dson22e1Zffman 824g1Pi 7URl1Nm08nYon peninsula0CHrRsPttonO; gi8FY;ayn ibn60KsO;ar,ein8EK;dy-gTgha8MCli8rOt6FK;eQicane O;iOkat29Ws3E;da,r8GF;m O;sult1;ur873;an,dTgarSiep7VNky doLs,tO; for the wilder7UFerOington7B3sman4M9; O-gath3E5;b4FJrenfr8LTscO× 4VO;haf0;ia761y;red Oun;daysOy1JC;! O;offensi8D1; 10a00ble ZidVko deewana karUmSoRpOv8FK;back 5IChOty dump8HE;rey boO;ga8NV;ri8E8ur;er,iOus;ng0OR; ga5S4; Oi8H7;continentOsubtropicO;alO; c27N;bu799p8L4; 0MnOy8MS; QiP–computerO; i0D8;sm,ti3;b0Ec0Dd0Ce0Bgenome08h06impact on the03leukocyte ant3LHmi01na8A3over15FpYrWsQtOvaginal 4TV;a52SrO;affic88G;aSexPkO;el5O3in03; r61TualO; Oi8GS;ac5XN;cri72;esourceOights in nor32I; 6KWs;apillomavirusPenisO;! 4TJ; inf7FF;g8IIssionO; to37Z; eO;nvirO;on7WU;airOe8JRis8LY; c0ZN;! pO;roO;je7Y1;vo454x4Oye;evelopment8M1iges0U1;anniba764lo8CZ;odyOra4;! O;tOwe8JH;em37D;abed4qures8A1;do hamarOkahan ke sachay thK;e 7T7;kOu;! h4L4;hTinn and muni84No Oueno8I2;awardQbo8L8cPll3BLm22NwO;ea728;háv8F3;! O;for bestRO; Oie4TD;bonn7H4cap8IGdPgOhefn0j0F5la4PJmarlo4AF;la8L1raCK;an6TNe1B8i6KW;!l,y lO;ewisOo8;! and the0XT; P's baO;y 7CK;bKr8GR;bleRePie halloOrF;we5;i,rt hO;umphrE; O's76I;dPsOultra-dP;pac0YQ;eep5NW; Ow7SZ;guofe8mul1;jint7THyao3LU;cTmlStpO; Os;c5V4live sPstrict transport O;se32S;trea7NR;! e3QD;! vi8AM;bc,l and hsv,n;iOvy;day8I8sto stoichk7JUthik rosh8EQ; chi minh4Cagy ca4Ab48dge379fstede's cultural dimension4KDg42i41k3Yl2Zm2En1Qo1Np1Jr14s10t0Uu01wOyeon 3UV; Vard RiPlO;'s moving 7AAin'2H6;e Otz0;lo8ma044;cQdul85UhPkeImo4A4sOthe 2N8un72Yzi83H;ch2MDhoBte8AJ;aw8B2u5B5;a8E5o7IT;a realist hero rebuilt the6H8i met your Rnot to summon a demon Qto O;be si5CMget away with 6YNtrain your 5W3wiO;n friends and influenc0IHth john 3UD;lo8IP;fa86Pmo86P; yif1ghton 7DSn0EsOthi6A2;ePing affordabil7QUton O;r884texaN; Phold Os of the ho85I;h328incomLG;m75XoQpPspa4VBun-american activitiesO; committ8CI;ri3ZT;f On wGP;bo03commons 01gZhXlWmVnormUplantagen8GZroman7J6sQtPv3YZwiOyi;n6FEttels4T8;he 5VOud8H7;aOt6A9;ud,v786xO;e-coburg and O;got798;an83G;!e3YZ;an5X6e7P7or899;aOohenzo1XT;bs61Fn52X;lü5M3rOuc7JJ;im6K8;of O;ca4XZt39V;nOrgAu849;ap33G;dsOsfield5HR; of47R; S-air bal40Iel Pline mOst9;ia8C1;cSAdel lu85Fmumb88Nrw8I3traO;nsyO;lv422;d7UQfu2RLgirls want8F7in M8on3p8KBs3EAtub time5YJwFZ;ni mubar7G6pitalPtO;age rescue 7DSi82H;! Oity6B2;play2SD;atio horn01iXmo6nWo1DGrUsOtic7UIus; d'oeuvBeQtO; buchO-wessel-1CS;ho6V0;head n2SFp7YPraPshoeO; cr6AF;di8B7;ible boOor fi83W;ss3; of6RXet;-san to miyamuraQzon O;forbidden 8G8wOzero 0U2;orl88C;-k8IT;bl7YF;e OliHpin' 2BUs;dPsandOvan dy6;ovM;avFia4ZD;kPte8HBver O;d8G6i4HY;ah,e73Y;d03eYg Tky châ126oPsO;hu,la ra0SL;luVrOur5T6; Oary 64Tific nicknames in popular749é de balz6HF;bl0C4k2WZof1V6swinton bO;yr6;guk-y3IUkongPxiuO;qu1;! O;fOin86Onational securi4J9poli5Z1s4U2;lu;st tRyO; bPsuckleOweC; w0CO;a1V6ee;hi3L0;aOur8IR;! O;ac6NLb3O9cPd3O9f8F2hrQinOk3O9nsx,prelu76B; 7D9tegG;iPrO;-v;ty,vicO;! type r;e00iXm0PUoOunc4D1;! Tmorphic encr16Cph835sexualO; behavior inRityO;! in O;ancient Oj3CE;gr39Xro8IB; aVO;erePfloresi46RhOsap6VQ;ab6LQeidelberg46Q;ctD;ci75VnO;iOy;d848ni; RoPr663schOtown cha-cha-c76Xw8GR;oo8AQ;p4PLstO;asF;aPpa808sweet homeOvideo game cRJ; a4D4;lo6n0HUpp1DSsRWuO;to7VY;d0Ii0Hl00oVt mccalUy O;g6FAl6WFn0QLroman eRsO;ee,pirit inO; cO;hr25;mpO;er8EEiB;la7CY;cOdom8ECg8B9live 65X;aust deniMeneO;! O;c09IexO;ti82J;and02iday grai806ow00yO; Toa87JwoodO;! O;acco8HQblaQforever69QoPpi6M8r6EKsi7WWwalkO; of fa8HE;n 48T;ck2PY;hSj89TmaQroPvOw8CI;al6VV;binson peeHwe;d7CUrie O;com6M2;o8CTu7E9; O-point bu2MO;e7REkn8E6m1;! Oai4SJ;r5J1ta3E1;!daH; 30QenOi77P;! cO;auO;lf6SR;kOus85L;aidoOi5;! consadole sappo857;ch4PGsin 4SA;an'sRmanKwartsO;! O;leOs3QU;ga6OD; hO;ero3;a8GVbO;it,y;rmicO;haI;! 6O3; prison bel7I4ac,hs britann8H0onQs O;ho8GMvO;ic8FO;g 7MV;ac8DG;am ab1KYb3Jd3Der36g2Ej676k2Cl1Zm1Un1Mp1Gr16sUtPvO;!es;ac83YlerQman's wifeOtite5RS;'s bodygO;ua8E2;! O;fa77Qy7S1; 0Yashi 0Xen8ENpani0VtO;a6X0oPrionO;ic6GX;gr8D2rO;i0My of O;a0Jb0Ic0Ce0Af09g07i03j3A2k3IPl74Om00pXrWsUtOu67Tv1HHw2SKyou40I;a6YSe47Ghe O;au05Abritish faRca1VOeQi7CVjews in 7CEnational football leagu0MAoaklandOph835telep0K0un831; rO;ai6SC;lectric4MA;rt4VC;elf-driving Ola7P6ou2VCpa4yph6JB;ca8DW;ad7E2u7C8;alPersonal compu6NLhOiz7H6o88Vrogramming7Q5y5GZ;ot89A;es5YM;a6CCicrosoft Oobile ph8DMus8G6;ofO;fi8EX;ndArQsPtO;a80Bun3;l8CIraI;an,e88M;e75EoOr372;og7;a2M6i8B1r6TZ;ar7XHgy6B9nglOu7O6;a8BJi86Z;aRhOo2ZC;ePi80RrO;istia61X;mi66Kss;lOrt88S;enda8DA;a30Wit1PQ;maz2nOrtifici64Mu3RJ;cient israel and jud85Aglo-saxon7V6i8F3;cOog88O; 7V2al PiO;ty 38G;d2YXf7SDj4DHm1WLrankings of prO;esidents3HAime minister2OX;c and latinoOo8EK; am7Q2;eg7JB;dark mater3KFgirl fr5LH;aWoO; UhiTkazu kore-e8CYmu ara2GMnobu sak7J7o oSshiRyuki O;nisPsaO;na8CWwa7MB;hiBZ; ka8Ima;no8CT;ko ara7X8to;m4VFshimo7M6;ga801; hop5S2hop tamiz73DpO;ie,ocO;aQratO;es,icO; oa7WJ;mpD;dOes 4E5kley point c nuclear power6USterkaifeck 8C;enburg848i 7MXuO; RiQsOt7D9;!tanO; unil5H0i 7MU;sm7MA;aOc065d6RKku85U;st3FP;aPbo,esh Oi7MO;p6YUresham7Y;c635layaO;nOs; sa60X;arXbert38EdWfspoliz7LFlRma af kQton O;mOworldwi71O;cr802;li7XP; streetRaryQb57Xel sl4JDsO;borough Odale6VJong65L;d83Rs748; c3J0; b7VB;egard of bi1YLur guðnadótt8A2;iPy O;du7VWfa86Wha5SMswa7DF;a b7CQe BX;aruOiko7DV; nakaAW;e0Eg0DhPurashiO; when the1WF; 05-Tclere 72OePschool o265way O;of6A3t1JK;r Ost unclimbed 5FT;e3PJsecondary schoolO; cO;ertif603;bandwidth digital content prot75Xcontext and low-context cult6I7dTfrequency773intensity intervalSlevelRpQrise5D0speed railO;! in O;au3PQc50Qeu7M4;a5KEerformance liquid chro801; p0W1; tr1NW;ePynamic-rangeO; v6YX;finition Qnsity polyO;ethyO;le6;te44Jv6YT;dart5R0efficiency Rfa6Z4guardian spi8CDli6mi1EEno2plains dri4P2school O;dOm4YM;ipOxd;lo85A;imagOvi7QG;e 5UH; i8CEs bos2;hi817;archPonymusO; bos819;icalQyO;! of O;a3J9the cath64E; clusO;te7PB;den ReO;aki Pki Oo ko5E7takaLK;ka6Eto4JS;an7K4itsu7K4;fOmarkov6WV;e9ig6HB;atullah akhundza8AMiscD; never4M's al4L-man4Ka3Lb3HcaHd3Cge4N1i30l28m25n1Go1Fp1BrZsWtUuTwlett-pacSxPyOzbo761; ju703day2VZsel stadium82A; PaO;d4XBg2;ed2TT;ka8A4;rist8CS;eroOtienne 6SLz0;chromia irid7X2sI1;i8CCsPtO;ia,on blum075;e,i03;'s,a0Wb0Mcule0Kd im0S6e0Hgé,i0GmZnYoQpes simplexPri8schel Otfords48Jvé villechai599;space o667wa71G;! v5PI; S's jou7XSdPes of Oin,ku,n;might and magic5K4the s2EU; OotD;antOt7GP;ip8BZ;fiennesOmotoco6BPoWOs4TX; O-O;ti5VG;ia,án cort1WQ;aXeUiOès;one RtO;!agePiO;an7RX; mu4C3;badd6N3co6NFgO;ra7U9;neu68BsPticO; order of the golden 0M6i826;! trismegi0F;nPphroditO;e,us; R's herQn O;fege71Lgö7O2hO;es89V;mi876;ca4melv76F;cium erina42Etage2RR; comeP's lu6IXditary Oro and namaqua 353sy,tics06I;pe0; the 4T1s1VJ; poirotOs;! in li0Y8;! UertRiO;e Ovore89A;f4HVhO;an3U4; Os cuku894;ho4TNmarcu89HsOvon karaj1;obIpe80I;alPeO;de4X6;pe8B4;! hilm9clOk6PZldL;es,iO;tDus;aPburn roma55JhaeOta7ZA;stD;!r4titisO;! c; sung-t7WRnj3F7;an,drik verwoe88Gley passport8A4n0Boch–schönlein purpuGrOt7ZB;i06y O;b0U5c03da02e7JXfo01g5XPhiCiXjaWkis7SQlVmUrTth6AZvQwO;adsworth longfe10IinO;kl0; 7QJiO; 7QIiO; 7QHi17X;if7ol4JXug87B;anQ2i81Io34I;au,ee41Q;c4X6m3; 7QCiOv P; Oi O;of O;e7QBfr6OS;n88Crd;ng0vid tho506;aOeju7H0lKzer75E;rlton c53HviC; Oetta l4OKk i466;bergs2charrièBde toulouse-lautrPgiOmat2I5poinca50V;ra7PQ;ec;a,es6W2;aPoOp;gl0PUrrho87F; ma53AtiH;a,en04iZlQmutOsinki5RJve6CM; Oh weid82H;baka6GCko627sc0UA; Vb6XHeniToPra59PsOuva 4X1; a3GAi8; PfOwe5;re81B;kittyOneighb86C;! 6NC;cOstic0H; a15V;is oth5RHlet l3X4;anXYcoQgo82NoOum;cent67WsO;!p6HI;bacter pyOpt0;lo85J; Ra Oe f50C;bOc6LNmatt75Yze0KU;lavaOo16X;ts783;ch76Nge4LWhSke80EmQof tr6WZr623sO;haOke75R;pi7XKv0;ccOirren7B3;roL;ay3uO;nt82M;anYdWke maka55UlUnPr appa6X9sO;ei,man tr6NH;ek5rich PzO;! gude7S4;hOschlie7RC;eOimml0;i6r81I;ongjOu8;ia8;el7RLi O;fl5DWg5MJkl7TN; p1A2;geRoniPy laO;ma81W;c treadOsm;miC; 0N1h7JH;eQrO;ew Oid3;al64Hb56Vc00Hla7H5;i,p2L9;d0Glth0Dp0Cr07tTuxBCvO;enQiside step 7TFyO; Owe85H;d,met2MSra4w6XP; official's bl2EMlO;y cr07S; WhO; le1KQerOrow7W6; Os;gr514havriles771lock0N8mPo4YFrae53FsO;maC;ccPeOil867;nzi3;arO;tnE;cRdeath0LYePi87Lpu6E5si77StransferOw7CY;! MC;q5YNxcO;ha7QN;apa6FJ;d island and mcdonald760ing3O5st 6X2tO; Os of irQG;attack38Kfai1EOofPraHsO;ignMy77U; d7HG;so881;! OyK0;and appearance of mi1YOcare2N1insuranceO;! portability and accountability7J4; of R-upQac7W8ington hil69Vph85NquartersO; of the uO;nited7IV; dis7UI;gOs5QA;overn7HN;! and the masters0LE;i7WSlHN; di82S;fc 3UKmi,tv; tO;echnoloO;gi3;! O;go,m7J8n857; ji6Ka6Ib6Gc6Dd69emophilia68f67g65i5Xj5Vk5Sl5Am4Pn3Ip3Ar0Qs0Ht0Au09v05wXxe,ySzO;arQbinPelO;ight5ZVn61F; hotI;as,d1JV;aoG3den RlOreddin barb0DW;ey Oie du7PA;at6XZkiOm7PRwi6GP;yo7FK;c6JBpanett2M8;aiiTkO;!er PiOwi835;ng4OM;huPtO;em5FYyp0N9;nt0rrica6;!an O;a7JRi74Wk633la7FE;anaQeO; i Orsine500;been pwn611got news for6YA;! s7QC;m80Rs57te cou7TI;azō ad11Och5GIfield–mccoy fe7MChTsRtO;ie PoOu7O8;n garden safe deposit burg14Nri hanzō;jacqu3mcda4GF;heps60QuO;ne mi2GOyu86H;a yo73Cor; 6FTan Vb7USeen dillru7NVhRidQsO;anOie1OH;-i sabb7WKal bolki7WK;ic1X; QiOt7BO;mOsh;a 5USoto's thyroid6CT;fu7R8t81Z;minh7M3pik0;a23b22d1Te1Ql1Gm1Bnaaz5DKold 15p10r07shad06t01uWvOya7RN;ard Tey O;el7XAfie745guillRkPmi3YSno6SVva7weinsteinO;! s3KB;eOo6ST;itI;én;business4VFcOlaw4VFun6NV;las5QTol6NO;hi suzuRkOn al-rash83G;a tom27Wi muO;raO;ka7XW;mi7DQ; Phacn600sfield–jackson atlantO;a 7TJ;boc4RDfOto 7YQ;amily O;mur6I4; meh864;dy5D0i06o05y O;an262belaf65Tchap4dean sta6GXe03gregson-4RCh01ka6l23Um00nilssOHosZpRreQsOtread7ZR;heOt7AJ;ar0;dk70Iid7T9;a6S6otterO;! O;and the Ov16W;cRdeathly haQgoblet3DWhalf-blood441order of the5XJpO;hilosopher'sOrisoner of azk4J0; s6Y1;llo7WB;hamber812ursed1P1;bo7UR;ag0NUo2ZD;a7MLouO;di7UX;nf6GZ;ds,w4UK;eTsO; Qon O;ash809fO;ord7YJ;d6DLjaO;yar7KU;r jump j81Ct O;beecher sPtuOwa6BD;bm1;to3T8;! RePo7DsiOy1BU;cho82M;j75QrO; l7WLc4E8;seM;aSb2X0goRhQl22Xmacmi4B9pOr55Lshi1W8wi77W;erriOi71Q;ne7IW;are5OMo5RH;dwi7X3u839;braha82Und mau6S8;onPy's despecializedO; eYV;icOy ko783; Oa;me1o29N;an VeO;mSqu4yO; P-daO;vi7LA;more74UquinnO;! s7D6;! O;globetrot6C1r1H4;cob5eO;ll6ZQ;!diOm,wood82J; jO;udai7UO; Tcore Riness3FQtaJware rO;andom numberO; gO;en0YA;h467pO;o361u73L;disk77IrockOscience79Dw6T5;! O;ca83Ms6U6;haj5YXin,or–ucla medical 2PZ;ld PmO;!be;bluetOfair43Thard0NSqu2R6v2Y;oo7LR;pOtic 1RW;ieTy O;birthday 4J8c58FdRfeetQmadison 5CTplanPtree013wO;hee81K;et830;! t1X4;a6W6eath6FZ;r than 566st 30A; 0Pa0Ld0Ieda7RAf0Gg0Cja,k09lon08nXoWsRuQyO;a yanagi62Iu shuiping kaO;os7R0;kk7TIm1; R-ulrich rudIeQiO;e cron7K1ka motO;wa7SZ;atic7EZl and gretI;albert 46Hchristian and5T7f04Xholbein3H8is7WBre534zimm6WF;i,v0;aQibalO;! O;bu7E2le4A8mejb7Z7; aU-barbeGh O;arSeinRfLgQjohn-PmOsi1S7wadd3U9;ckKon3LYu7N1;kam5;ads7Y5ro81Y;bi6VK;en79Fte2SU;lström;'s raz7ZI; Oe bruins sl838;aOg75Wm26Op7NIvo7ZTwi6CE;ar2z6P5; Qing gardensPoOul,zh6UB;ut with y75Hv0; of babyl2;'em0CFse2NN;ord Ou;siH;bPe erçIj5R6kerchief 65NoverOs36; of ho547;aCra746; PfOkoto7JW;i,u80L;kiO;muG;cRd5E3hyoQji-PsoO;-h7U6lo;e81Qm4;-j752;hi64R;a05burg02dan bin mohamme01iXl7YMmTpSsQzO;a chouO;dhuL;a,tO;er,ri8;i,s3YIton court 4IR;am,erPing Oond o2W6u2PQ;co6PPdi370; Ohead6U;and si6HDfilm 5B7;dQltonian Psh liO;nkl6R7;me2TCpa7JZ; karz7QJou dial7TA;d al makto7MO;!erO;! O;bu74Bsv;d Os;bin khalifaOin7PH; al t5P7; 03al,be7ZGey 01f-81FiZlRoPstonOting4LLva,yna hutc0P7;! 5VR; Og5;ef56Hi4LVo12Owa7ZN; effectUeSiRmarkQoweenPuciO;g5Z9na7X6;! k7K5; c1ES;bu2RD; bOy's c57J;a4O6erL;! sens7Y0;fax 3PZmah yO;ac5PW;b4YNjoel os7BCluO; ri66P;am6Q6h480lOm3MDsp5TEtej819wi0LV;a1JGind5;a7TGeem Pim ziye7PLkOone ek3SRuo7JQ;a 77K;jXBolajuw2;ime Oj;isa74Zno 5I0;er,fa,jby4CWku,lSn1r RtO;ham bin tariq,iO;!an O;re3JFvod6SI;lo7ZW; 5MHeO; sela2RTe steinfeOy bi1W1;ld6U2;fi7SEgFia soO;phA;ez54Eþór júlíus björn6XB;! in european royal7UE;doJePi7IRrianO;!'s 0CC;an,sO;!to7XQ;hikō,kO; and s74a51RerOsaw r7IF;!ra707;ane7OTeOsburg2FB;as corpDr7H2;kon viiOst's17F; of n1M8;-w2;class battleship proposa7YCi7ZU; PG-PFaLWb0C7dań5ZJeGAf324g a6H9hG1iDWk2JVlC8mC6nBYo8Hr2Hs2Gtk,u05wYySz7CJävle go7M0érard depaRöPōjū-O;ryū;bekli te7OIdel's incompleteness theore7YJktür7QAtO;terdämmeru8z von berlichi1L1;rd6AS;aSeonggi prRlPms3UNnecomastApsOro0TV;um,ycrus3SV;es brandOfi sigurð6WPlenha40A;re7I6;ov7ZC;ru;angRenOilym3ZAyneth paltr7XW; sOdoline0SNpo7ZC;hamblin6VItO;a67Kefa7PN;haegun 34HjO;u upO;ri7OL;a1Jcci1Hdrun bur723e1Eg1Ci0Vjarat0Tl0Nm0Kn09pt08r04sVtenberg38SyOz 5VC; O-manuel de homem-ch4R3a7L8;berr4BMdSfPlomb1YPpear7Z2rit35YsebO;as1E3;awkesOie7VT;! O;ma5YVn7WO;e mau0NMol6FV; Vset500taO;f TvO; Re Pus adolO;phD;courb7VVdo4QAeiOflau7I0;ffI;hol7W8klimt,ma7DPsc1SG;sk6V9v;f7C0gri33Kkenwo6AZvan 635;banQga2k6O5ren laPu O;gobind7T1nan6VMrandha73Csomasund747;ga7HO;guly berdimuhamed7X5i j2VQ;a 7KL; violencXbarrelUd7W6ma 6L3powderRsO; Ohot w2A4mo70U;akOn' ros4W6;im4IU;! O;milksOpl7ZH;ha70P; hO;igO;hwK;e 2E8; PbOmo,ro7UStr7QQ;o,y;arab7ZC;ag,f PlOs4NC;!ah,iver's tra2QGy39Q;cOof tonkin37Rst7VPw9;a5R3ooperationO; cO;ounc7BN;!i O;la777pe753;ana space03d02lVnQtarO;! O;he7MVtun7VE;ePnessO;! world5RV;aOveB;! O-bissau5SC;na6S9p6UL;dRlPty gearO;! st720;aOerm4RCo5H8;in–barré7HWume c5P0;!fo7W2hall school of musicO; andO; d2I4; parti036o van ro0N4; centB;lielmo marOu mbatha-r7N6;co7NT;nther s05OrOss who's coming to di4F9;nsErilla O;g6X3wa7JY;! DRoO; g6X7;dYm,nOtema7XJva; Wch3gRtanamo bay QyO;in,uO; zh6PF;deten5EDnaval 7JG;do8xOzh6PD;i,uO; eO;mpO;er7UC;yu;alOel0Q8;ajaraPcanalO;! cLR;! 3NB;c game7W4m;a32e0Ji03oPuOyffi6AC;!mman tbf ave7G3n7FOyère 32S;cery4KPgu,ot,ss domestic00uSverQwPyOz6SO;pe7VH;ing p5UUn-i7OZth hor1MJ; O's4SA;cleve7QF;choTndRpO; Oon,thi6WY;b,of Os7WRth5FP;e7U8s301;eOhog69O;d 5FL; maO;rx; p3DN;dirGPffin01gorWmTnSselda Rts,zzlyO; P–polar bearO; hybr7UH;be9m1;bl4PEr5U1;ch,dr; 07Hgar of fantasy and a7OHms' faiOoiB;ryO; t2XF;i Py O;orl6VCp4WKzinovi7OY;pere4IZraO;spO;ut4;! O;d165gluJ;at12co-pers6FEe0Jg02mlin3SFn00tSville QCyO; P'29houndO;! l7JQ;aOde4RZ;li5;a Tchen PlO; b0C1;cPm7VRwhitmerO;! kidnapping pl7WS;ar6ZJorO;be7NH;gOscacc7JXthun7F1van f72O;ar4FZerw6SG;adOdIfell tower 7RGob7;a,e,ier2IU; Wg UorO; meF5ian cSy O;hQof nazianzDpPsO;car72Ci3J3;eJo7P7;in3ou7UI;al2XDha7FR;al4I8popo4RXsuO;lk4;ab1DKberl2S5chappeCdaUgTh2WIkRlPmce1WEod5sesOwi7UE;te7K8;a6XJiO;nd7ELpp7E7;iOur2JQ;nne9;er7E4ir22Sut502;n32Mvi3;ce5PMd05k 03nOr ga7AB; Y's XhouseTlandSpRsle6P7wichO;! O;mea7POvO;il1NX;ea7UV;! s3Q0;! O;ef50EgasO;! emiO;ss7OT;fu7GDth4UW;aQbPca7T6d2I1goOkn7SElan07Om1revolution73Et7PG;bl4;ay pac6DSoo7R4u47E;cr3nac3X9rr7T6;al5R6c636dark 75PfiBgOla73Um37Vnu5R5or27Xprimordial d68Lu53Hw21R;e5MTovernment-d0BB;faCy4Q5; YeO;rQst O;common divOg4T7;is7RR; Q-O;thaO;n 7AF;bo6SNeast asia co-prosperity 3FOloQm0M4toO;kyOrontO;o 5ER;nd2s4W7;a0Db0Achi09d08expect7O8fi06ga7UUh04l03molasses f02northern6OOoxida22QpZreWsTteacher oniSvowel sRwOzimbab3J8;allPhiteO; s3PA; of4I5;hi5ZF;zu6ZQ;alt PeOmog 0VKphinxU;al2WZ;la6WB;c5NTdPpla5VYsO;et,ig2SH; sp7UZ;acific garbage p5RKlaPow0ur7CRyramidO; of gi6VX;gue 0VCiN;lo7UL;ak3eap for3U6;eathen2WNornedO; o4ZE;lt0reO; 0V6waC;a6e1QP;cago 7PHnese fa6B4;arriPooksOri62J; of the western7ST;er re2WGngton524;mericanPtO;tra7GT; n77F;c22d1Veme 1Uf6D8ham1Pm1Dn0Ip08ss07teful d06uman's c05vWyOz; S'QsO;ca7on O;a712p3R1;s anaO;to5PA;asPbOco6HK;ox4BH;ex37Q;eUitO;ational RyO;! P's rO;ainb7RM;f68Vof5D0;accele7PBco56OsOwa7IY;ingu24N; Os'7AV;ac7DBof the firef1SS;hinese3SZ;ead6MS;ho4XUla7PO;eWhO; Ue6iO;cPteO;! o6H1; Qal us3ZFs O;cOdisplay re160pr6E9;a7R4ore ne0G0;de78Pn76M;colo75Wth5BQ;!f3XR; 0Fada0Dblue0CdRitPt O;gu2H3ima5SAmo4M0tiIF; xOe;ha6Y4; Pmaster fO;la7KO;admiral thra7Q6bl7HFc04duchZeXfunkVJmosque seizuBprix motorcycle ra582slamVtO;etonRheft autoOo555;! O;iOon7G7v;ii,v; nO;ationaO;l 696; ofO; d533;st,thiopian renaissanceO; d7PP;ess Qy of O;fOlithu3ATm7QJtusca6NX;in7LR;anastasiOolgO;a nikolaevna6OY;any2entral terOr6FC;minM; fa6EK;! O;cf,w9;cOto1SS;an6ESoO;lo3T6; p0AO-XmO–schmidt78Y;aTy awardO;! Os;for Or5PD;album Osong O;of thO;e 3KO;rPtical O;ca7QLge6KR;!ly;negaOposiO;tive 1VI; O'0VN;c1JHe37Ngr5FWhQki8linPmctavi7JLnOpo5T3;a7JKo2HW;eh1;an3AYiC;ed7A3fo2R0sou7QU;iPuate O;aptitude test in4CBmanagement a2AZrecord examin7L6sc57F;entQng O;in33SsystemO;s 552;! O;boos7RZdY9;eQie O;a6YPfa6J5mO;an7DL; Ola7NQ;and frank7P9b4Z4de7BAgu6E6hOj7PHk75Ps0YEvanderwaM;ig6JCo4VU; 33a32b30chuja8d2Te2Sg2Riânia2Qjong1ESku,l24m23n1Wo0Qp0Pr0Es07tXuWvernOwtam tinnanu7NL;ment of UorO; O-general 5IL;general454of O;cOn7NBv2CF;alO;ifoO;rnA;c1E6i6ZDt2GY;ac7FRgh whitl7O7la7IUt;abaya rajapak78ThSla7NDtOye;friPhard baseO; tu3OQ;d svartOed wilhelm leibn1TP;ho7MP; sRam 5YMen587ic Os;ar5J3f74Ela6ZMrO;evivaOoJ;l 5J0;ubc71P;ford 679pOsip 41N;elOo7R4;! O;m6C2of O;jPlu6SHmaOth5R7;rk,tth6DK;o55Nud7QT;!an drag6VBdRe vQg2illaPr the god b5E8y6CHōO; miya597;!z6JX;erbi2NTidM;iTonO; Osto7Q0;b4U2liQmPrOstewart north5EB;amsK;ooBu7AJ;ght5AH;an kn7QVe ho3ET;n6LNro; 0Rd0FgPsebO;erLum70X;i0ClePolO;!pl7PU;! O+,pl7PT;a05b7G9c02d00e70IfYgWEhWim70Pke303lVmUne7H8pTsPtrOv52Rworks2KN;ans4QOen7F5;chol9earchPh36Dit3l6CKtO;adAoBr1ZF;! cO;on2N7;ay,hot7HWixIlKublic dN;a70Me7MG;eNlc,o6EB;aOo7PZ;c7B8ngou7LS;e75Nl5IIoO;n7LQr7O7;oOri7F6uo;cs,od7;al2R7hrome1G6lO;a5CDoudO; pl1VZ;cc5SRdsQnaly5MHsPuthentO;ic79J;sis52Q;!en7O5;e 5HO; S-bye to aQbye Pfe43Nhart6AEnight punp7P1rO;ea7EI;christopher r05Hyellow brick S4;llO; th7B7;bu4JGcount4X5fridayRking wencesl7PJluck charl7N7mQoPtOvibr7IUwill7PQ;im3;meNn p377;an2KKorning5Y6us7PW;! O;agO;ree6ZE;gooOhaG; d1H6;d4QUe baby go6g Rorrh7JBzO;alo higua387o O;jOpo2RB;our68P;hyo6WTli,mPseuOy6RW;ng2OZ;yu8;be chimpanzee6IUo1Z7; 6AWan08dQemPgi appar24DiathOl79Ushifteh fara5CJ;! tabu7EP;! cre7IB; 04a me7L7bach's2AYenTfi7GJiPman sO;ac55L;e Qlocks and the threO;e bO;ea7MW;ha7LX; PdOe4TC;ood7;age of Ue5U9fl2GAgSh564joystick 6EAkam4FAli2os7OArOstate 0QTte44L;aPeOi7NZu7;tri4RD;spberry awardOt6MW; for worst p7B5s;atOir7MKlobe award3KE;e 4P9;pOte3FY;i58Oo7DY;har2QMr1LXs726; he5GZ; ac2XF; and mag6Z7gleb6PNury6A4;bbels6FNthe's f3AP; Rad77DfaQwin693zillaO;! singularO; p6ON;ll,ther of harl6GD;c0IOemperorJFha7KDis6FEof war Psave theO; q6K9;ii6XFragnarök;i58HlinO;! 3JJ;!ts head so75S;aGmin-7ES;arlsUk dinamo zagr54QoTuO;! O;compiler QgOlesser gOpP;eneral pO;ublic l5MJ;coll6GE;cc7BHme,s6W5; bar5RH;aOm69O; n5UKil;a0Zen0Qioblasto7G1o02uVyO;cQnOpho3W9; j7Iis j7In O;e6UAtu6AD;ePi6oO;g5l624;mOr7MX;ic7N0;coTtO;aQenOto6IQ;!-freeO; di7JT;miOthio6;c7KUne;cortico7KUneog7CPse;b03ck,na7MBomh6F3rUsPttal st6UYucester183vOw 2;er teix6KKo;sary of Oter 2SC;bittorrentQc24TmPnauticalQpOvideo gameQ;okerProfessional wrestlingP;athematical sy588usic termi4XD; ter7LF;iPy O;ho7;a PouO;s 35I;estef1fo7CXgraRhQin excelsis d68Rmacapagal arro6T5sOv21O;tOwa7FH;ein6F3ua7N6;atrick mc6F3unni6D0;ha7MV;alOe3MA; Pfound7E4izationO;! and world cities research5C7;cRfinancial centr42Bhung7G1innovOEnorth and globaQpPterrorism7M9wO;ar6P4;ea31Wosition5O7;l s6YJ;atastrophic ri5LWi7GD; Vda1DLnO; Oe head77D;beJcSdFJfRgQhoPmOs4KYyoungk4;cg578i7DO;dd7we2CH;ou7L6r6KD;o7KArE;lo7KX;ca6NHd43Spo6DB;dWgolVi7BOm UnsE0sPucOxosmithk79Nzer ownership of manchester un43W;o7EOus atlant3W4;gowQsOtonbury4E7; aOdo7IZes;nima7KA;! O;coma4JWs2VY;m6E5roJ;itic 3SD;iPos,ys O;co5YVkn7J5;at7IRus;a1Cb18f,g10l0Jm0In0Ao05rXsTtRuseppe QvePzaO;! pyramid0GH;n 0WFon;garib5LZver79Y;!a gopiOh4IQl5CR;na740;ele Oh gall6TJ;bOyash9;arreto fOündXP;et1FR;af7LLlOolamo savona045; SfriendRsO; P' Odo4V0;front78Yg4JSlast 5R0;a71Cjust want to have f7L3und panz0;'s5Y5;from now5TNinOm3SKnamed t70Ywith a pearl ear6Y9; r7GW;achino rossi7BArPvanni O;ribi7CAs11Wvan bronck2O;dano bGWgio O;aOchiTNmor507;gamb5r57P;! Ua SgerQi Pkgo bilo72UnOo d'acam52Fse8;ifer goo74JyF8;co463;! O;b3L5ly73Pro7E2;cOgersh2lollobrigi7JFmck7D4ro6IGto5KZ;a5HColad4AP;and t60Grum5GLta7DJ;li gl612p; 02bertYdXes cWgVlPmoreO; g3Q4;es QiO;an Ogan'13W;an1LIf4ITjaco5PW;deOv173; Oleu4I5;raF;a06Oit-balti6WA;or5;a ra4YNed24J; Po rO;odríguez orej1S0;aOgottf67Co'04V;ren7KU;birm3BZced5CRge4F1kOscott-h1FT;en1; y5S3aQg4RPiOn; hO;ad7I5; QbitPnO;oto75Vto50D; ethe6HH;chikad4HOnOt6FC;eva7IN;bQrPson lesO; pa5IP;alt9;on,s free3YS; c02como 00da Zl7BSnO; lWcarlo esVluigi TniRtO; P's causO;ewK;p7IDs24Yt6JP; 6AHna fac6IIsO; antetokounm517;buff2donnarO;um7CG;po02E;orenzo berOuca passi de preposu7BI;ni79S;colagrEJd0YH;casa3SEpucO;ci79P;aran6ZSopFP;aVeUislaineTostO;! Pbusters6LEeOface ki6DHla7G2wrRJ;ma6;aPdo76Jin theOof tsu4K1pe4O6r5ZPto7GZwhisp2A1; s4MW;dvent5OL; max6AN;e,nt;na5DMriM;ar57c6S6ddy3IYe54f52g51i50l4Zm4Xn3Lo1Ar00sYtO; WafeVtO;ing Sr,yO; QsburgO; aO;dd6UI;fa6B1im6TY;over it with bennett fod72Jstra7GIthings O;do6;! 0E7;ha7H7rich or die try393s3T0;ine bullock-p3AJtaO;lt28Wpo;a0Nd 0Mhard schröd0i0LmYoni5V9ryRtrude Pvonta01QwynO; p5R2;beCpressOs6JU;bu4D7; PmanO;de6VT;aQgo52RmarPraO;ff5NJ;sd5;da7HCnd the paceO;ma61I; theory of709aO;ine 08nO; S-occupied06PiOy5CV;a,cOum; Ous;l6TApO;a37eo4YB;a00battleship XcUeTinstrument of surre6BGk0LLla6REnSoQpeasant0EDreOs4EFtanks 3TS;sistance to na01MuO;ni3IT;ccupation of OrVW;c0V8n14Jthe channel6GR;a5W6uclear weapons363;ast5R2m741;oPruiser O;admiral graf sp7AFprinz eug5;lAVn5MG;bPgneisen6WSscharnOtirpi7B4;hor7FB;ismarJ;irOm6TLr5DT; f5EScraft carrier graf zepp6GY;fr4AVg1KS; halli699t7HQ;mü79Gvon rundste6OV;lPrd O;butl70Jpiqué,wK;dOt of rivA; Tine Oo 2IL;cRj6HAmcQsomD3viswO;anaO;th1;ew1;ha4CI;david las6K5fo7FVmcr23J;c1Xff1Sg1Klog1Jmetr1Gp2TNrgQstOthermal3WF;ationaryOo74Z; o0J3; 1AeZiPy O;malenk6GIzhuk6GI;aQe he540nOsm;a Oio wijnald72P;c19Cleonid7HW;! Pn O;eGla6QD;bulldogs6KGeT8gQoPst5AOteO;ch,n5AE;'keef7HI;roo7HNuideO;st7FL; Ss Otow4ZC;bata6COlemaîtBméliQsO;e0WIt-O;pi2BF;ès;a0Sb0Oc0Md0Le0Kf0Gg0Dha0Ai06j05ke2Z7l04m01or68DpYrXsUtTv6QRwOzimme647;aPeO;ah,n6NY;l70RshingtonO;! O;ca5G4un5Z7;ak6OPhoroP7;andPegMh1ILor793pa4W6tO;ephan6UBi671ra7DO;!e7FB;a5LVe6AQ;attPeO;ll,p19R;on 6R0;aOc09Hea64Richa42H;lOrt4so4YS;loL;azen7C7incoln ro18Mop79Xucas7AI;e5SEon3u8; of greQiOv; of great5P6iO;! 1QV;at5P4e7G6;l7GWrrO;isO;on6A1;al38HerPurdjO;ie6YW;shw4;loydPor5WXrideric haO;ndI;! O;prot0HT;li7GZng69FzG;icapr6ET;a4R4hakOloon4AOo2ERro7FIuk7D6;irF;eQlaPoo7uO;rNsh intercontinent749;ke,n7EJ;ns2rnard 4VDst;lagi76Irmstrong cu769;cant7CZstanford3T6vOwilhelm friedrich h3BF;on tO;ra6BQ;ic PyO;! da77T;d488me1p59Bse77G;ic time4DTy;raphPuesO;sr;ic RyO;! of O;associatiOi6O4;on6IO;c2WKiO;nforma0LW; Prey O;chaU1ru77H;cPjOmi76Y;ohN;ap3o76N;ac3V8entric603; 2W2a ro0Yd0UeXg0K5iWnVoQrikh ya75Sshin imPtO;i7l5Q8ri3FR;pa6R3;a,cidePme,vO;ese3QF;! ofOs17F; indigenousO; p4UZ;ady golovk4dy tarta5RN;tal pier4UIus; 0Galogy28Ulia0TXrWsis VticSvO;aPiO;eve l6E2ève bujo7E2;! coO;nv1L7; Pally modified orO;ga74H;a4A8d5G6e6RV;di77Bflood nar2U0m3CLp-o1E3ro6CE;aOic14N;lStiO;on Pve aO;dversari54Hrt;aOiv3J0w9x,z;lp63V; Qized Oplan o7BU;aOlinear5ZC;nxie5FU;agreement on tariffs and4YIcertificate2QXdXeWhVmTofSrRsecretary of the cO;hinese com2G7ommunist partyO; oO;f t0RD;ela4PF; the armi3f2H8;an29Yil7CSotorsO;! ls-based sm2I7;osp4XP;ducationYMl0UY;ata protection re132y3MX;autLb155h7Qk6STrQsPtOwi4WU;h2JEie70D;a74Mim693;ay4VYoddenb3BM;arm2N5erO;! O;dysphXKeq2SDiOro7sy6EG;dV7nequality6KJ;wl6CJ;a64Dma Os672;arte24Bch1j7CB;at4i raubMlert grindel6C8;co,ger 3G1s634;ard mousa751e aku76A;fen57NorceO;! n7C4;k 1STly,naWMtha O;ar79ZgoviO;nd7B4;box 5YZing56Js O;of67W;b2Tc2Sd2Qel2Pgan b2Oi2Kl24m1Mn1Dr0Hs0Bt07uYvUwa4yRzO;a Opr6TD;ci77PsO;tr6Q7; P-friend6YPatri maOniggers from outer28B;ntG;m5nigger association 3KTsexual pract6RH;in Orilo princ6Q3;andres5bazu42Rleath2V2mPnOross51Kwo7DZ;ews6T5;acle7DXci587;g1KMl39LrVssRtO;amOe8; ada73Fa buO;dd62H;'s5YGian O–seidel 7CG;bPeli2BHfu6YLiOp6U9quad1YL;ntegrM;e7AJl6TZ;i 592;ePling3HCoOta62Hwick71D;-6GZra615;n matarPNs mc3FVway O;ar71Vof6LI; Ql37Mo70Npar noé,troO;eOintestinal t2Ypo7BI;nter5JVsophageal reflux6UL;cPtO;ur3OV;ha77Io4Q9;a0Iden0He0Df5P1g535l7DQm4r08th 07uda06y O;b01coZdou7AMgYlWmUnToldm76Opayton6EPridWYsSvaPwO;ald72Me5N6ilm7DL;lenOyner3JO;cOti6;ia6KN;cott45Nini7BJ;ev684um1;ca67Yer2DPoO;oBrt2;a6RKinO;ek0;en228li5E0oet6AIyg6OT;leOop0;!m1;aQet2K6uO;rgOsE;e7BRho6UX;rl7AM;! indL0;br72Oje1PS;etQison kei5IOoHyO; O's m7CR;kasp5OSma3I4shand758; dilla295t O;hed65Emo31K;naPth baO;le,rL;! freO;e 77N; of 2JPi8;g0M9m2EY;bare dōki-720da6HNes615gQsu,tO;tOz; c759; Ses,nam s5B4re6sPubai kathiO;awa707; of784tO;aOer disci4RN; r5BL's paradi7AM;ba8of 522ra70D;al abdel04b01eSi3C5maO;! Q-O;aminoOhydroxyOray b013;butyr34K;co64Hd441fu6WYrK; R+,br6I3cu5DWm3BSr,sO; workPtopO;! short squee491;sh6JI;boyPchanger63Je5Q7fOjo4YPo79Rth4UB;re684;! O;advanceOcOP;! 5EM;iPlO;er's4FHi8;a 65Hno3MG; na36Z; gad7C0aYba,e XiVlPwKápagos O;i69Nt6B0;bla3T2eRiO;c 5UCpoliOum; cO;ampai6QW;on,ry of sovereign stateO; fla78A;cia5TJleO;e,o galil6IQ;anne hu794go4H0;ctRdQh776nPva6V1xyO;! q75V;thD;riI;ic 1XDus;aQji5WAnOus ma6KJ;-of-functionOax; re3FL;! h07S;iya70R; garcía be35Ds; elm5RIsdeO;n 3US; 62Fha 6V5;ape2SKby giff6ZSe ne61Sle stev68EoZrielOy hoff6T9; U'sTaRlO;a wPe O;anw9cartWNu6LO;il5YG; hO;ear77J; inf5CR;aubLbQgarcía már31CiX9j395maO;c77PrtO;in5N0;arbo6S7or7B3yr6;n54Hurey sidi5CI;co5Y7dr4LPea6R4f56Wsp7AY;m32Dprotein-coupled6P9s1DC; is fo3KP-N6aJLbi JKc JDeGUfGTiC2jo78Aka twi77DlA3mA2n9Yo6Tps66Wr14tse all-world index 5D1uXxx,yVábio coentrUéRüO;hrerOr eli78X;!buO;nk0;dération internationale de l'auOlix auger-aliassi7AC;toO;mo4CV;ão;odor dostoOre424;e5MEye5ME; 0Tb0Re0Mg0Lji0Jku0Fl07mio kis6E9nZrXsion6P8tOzzyCK;ana76AsMurO;a72GeOi70R; Qs coO;ntO;ra6LH;combat aiG2d6A2nostaG4of O;an expanding6UJe6K9the O;indianOroyalO; na5NG;oseOry fand6P9;mi5XK;cTdamental Pgi49Bi6NWkO;!y1K6;iQrightPtheorem of cO;alc34C;s 6HT;nter6L7;hMtional O;g6RDp0Z5;a 6G3gencio bat6AIlO; Oe6U1metal aQ;brRh781metal O;aOja3HH;lcheO;mi76B;eakO;fa769;o6EFshima O;daiichi nuclear Onuclear6Z9;d6Z9pO;ower2RO; tOan,t5VJ;e30Qv;a59Fe3;l QrtevO;enO;tuG;ceCiOo6M4;nj61N;ini'Oo5UZu;s 48J;manc4GF;a2Xe0EiXoPuOédéric chop4;cto77Gits bask75D;do bag5K6g,mRntPstOt,y gutierr71Vze6P2;biHpu68M;-end web6HAend and bacOier2AN;ke751; Oso5TQ;dusk till JFhere toOthe earth73Bup on poppy 4B0; eO;ter4VE;c74Eda02eTgSsiRtzO; Ol2KI;h46Qjoubert duOla8we6O9;ques6;an6J0;aHg;dQndsOs71O; withOh6KR; m5VI; Rrich O;e2EZhPnOpa330;ietz11T;ay65I;chiO;ck5; kah6ZQy night O;di3PHfunk2XZ;aks and g25d19e0Oi0Nm0MnUquencySsPyO;a a3ESja,r;h off the Pnel O;e03KleN;bo6TU; 5OU-sO;hift ke5CC;ch RkiePulum of prepuce ofO; penF; de O;jo8;a0Abulld6ISc07d2PDf01guia6TEho6XFin00la6GJmon2QWnXorL4pWrRsPtOwars of 293;hird4AWoa74Q;econd4AVouthern and antarctic l660te6AXubmarine surcO;ouf;eOivieG;publicanPsi2CSvolutionO;!ary 5QM; cO;al293;e6E6olyn5H5;aPewO; wa6WX;me,vy;doc3UZvasion63Y;iRoQrO;aOi3;nc;reign le5RBurP;fOr1A5;th4AE;ampaign in egypt and4LKoOui5R2;lOm28N;onial 6SP;cademy of6TPir and spa4NGlg2CSnd indi4MUrm2UR;anezum4Y3m multipurpose6N8;burg im breisg6LIda p5Qk6HS; 01b00cZdomSlanceQmOwaB;aOi6S1; agy5NFn d3TXsonL; mOr;arketp6QH; Q-O;class littoral cO;omba5RB;caQfront 6OKin5Y2ofOsh6J8wri5EU; sO;pee6VE;ucD;ad,ode4NH;sd;and open-sourcTcity of dSdRfQg3XFpapua4W2soPtOwill156;hr74P;ft6YXlo;aCr5LB;ownload man21W;anz62W;e 5RJ; 06d01ericRriO;c49Mk O;bOneij;ac3TE; WkO; Pa mandelO;ba6RB;dougCLf34At6B7wiO;lliam iPnslowO; ta23C; PiO; Oi O;of p62Q;for5RY;ie Py O;fazbear's pizzeria5O7kru2GP;fri5HIgPhigh6ZFmeOprin43Cstro6YI;rcuL;ib5AZ;aWbaCdV6gVhUmac38Uro6YVsRtPvanv6CIwO;a73We72Wil175;atascOh3YOru5C4;ioB;aPcOirie6MA;hne5LU;va6O6;am68Zechi6OK;wyn6;ga4nd georgePrmOst3RV;is5; wO;ea56G;ee6VS; f6XKct21g1Zkt6M5me 5N3nQsi0ternOud;al birth order and male se0SFities and soroO;ri70O; 1Uc12kXtz f3TTz WçoisO; Q-henri pRe O;bettencourtOh266; me4D5;dPholl01leg3X2mitter4HIpOtruffa4ZQ;in3X1;a359uO;vaO;li0;beckenb4V6ha4NLjoseph i50Ek543liszt,sc57Zvon pap5; 04-walter steinm03a pot02enstein01furtZiRlinOs; 0ZJ's lostO; expeO;di70Y;e Onc53X;a58Db4V5edg9gPjOmun17Tv0TI;on759;oes toPrO;an5ST; hO;olO;ly6BU;! O;a6SWsc4KM;!'s4P;enH;ei0;abag1VWb0Ac08d07fa6O0g06h01lZmiYoXrUsRvQwPzaO;ne,p097;e5U7h3A8;in6OJ;er3GBhePinaZ2omO;erv5ZU;er1;ei6T5osO;enO;thM;ce1z;ll0r;aOloyd 5DPuc74M;m0X5ng744;am0erbertO;!'s O;childrenOdu6; ofO; du6;atli6MJehLif5UGoBr4WD;arabo6O3il4FJux;aOo6VO;li,pG;ru6BT; weer0Ee03his02iRk QoO; O-4JPist4IB;ne6SIzeffir5GK;kessié,ribéL;a,sO; Pco O;fr3WJgo6BYmacías ngue6WDpiz0ZM;bUcTd3U6fRgaPi2BGlaOm5YXngann5VMof as6URxaV3;wr71L;lt2ry O;po5RR;ord copOuku67V;po73I;ol3DDriJ;ac2;e t695i8;! XsO; TcO;a Qo O;barac5SOsOt2MX;chet315;aSVea5W0hOw3W3;ay33D;beanOconr5RAde la 58Wfi5JOha,mcdor2QYshand ky4RH; cO;oba4;in the mi04Una5XD;wi6ZN;dres649jOkra3TTlebo65Qtarke5ERw05S;eff6UP;gl0DAile O;stat3IWx6MZ;al,i2;c2Nggy4E1ie2Ml2Kn2Jo2Ar0Xs0Rtheringh0QuWxOyle's5X4;! QcPtO;el,r73O;at641o6LM;br5TUc5LUki6S4nRsO;earchlPpO;ir6ZK;ight0KW;e6U2fl52E;cault pendQNla,n0ErO; 04-01ier 00tO;eenYhO; Q-wO;aveO; femi6S4;cTgeYJinRrOwaC;utteO; cabO;in6Z7;dustriO;al 2L8;ru5K; w6RLth a83;se6TYt0FW;dPstOwheel66A;roke288;imensional1WY;asian ti6VBhQl2W3noble trut4J9sPtemperam6Y3weddings and a fuO;nerM;easons hotels and res3YIy4NK;illsRorsemen of theO; aO;poO;calyp70V; tO;ourna6CF;dOtain4A1;atOing fathers24L;io4K1;ay 5RC;silSterO; P's home for imaginaryO; fri50O;thO;e 68J;! fuI; 0Yb0Tce 0Sd0De08g00mVni61VrestTspStOward6VOza 33D; kn63Ah 42QnitePr1une favoursOy-seven rōn4; the MM;! O;battle4B3w19L;ok5; gOal-KD;ri4LGu57W;aldeRic6ZAula O;e,oneO;! O;c9eng6OX;hy5PD;eSotten O;rQwO;eaO;poN;eal6ZU;d iPtting sarahO; ma371;n 6WP;ign Pnsic37CplKsO;k4t wT6;directPexchange08Srelations of O;c3ORi69Hna6J5ta5K5; invest6BF; Oh04I;bron6NJcrown v00eZfYgt,mSpRra6JXsuper du6UZtOvNA;a6MKhPo11MraO;ns6XN;under2E;in6IY;oPustangO;! mach01F;dPnd5MUtO;or 5RR;elOular26N; t;-53Ji5BGocD;-53Icoboost26KsB1x08F;ictK0;i690majeuB;esPidden O;ci6UJpl4RK;!' list of the O;most valuable football clu55Mworld's highest-paid athlO;et3;a few dollars 6TYhOlo68Dwhom the bell t0SN;on6XD; fighte30Jb9dStO; QballOwe9;! O;i5FWleague first 4JFp6P0;bin6EEf34O; Op6YN;and Pdeli69Ui4RSp0G3sO;afety and standards authorit1FDe1HU;agriculture3V5drug4AT;d6OTt awe1W7z6Y5;aHie à de5P2kO; E5loB; gr70E;al lRus O;fPhomeO; i554;eat551;eng6IA; Oaf6YS;fPher3LYmOsc9;ag,ini6S5;al,ive-s22Xnc; 67Bo62D; 4N0a11cl,e0Vi0Qo03uUyO; me6UI-by-SdPTing PnO;n 44V;a6Z9dutc6I8l039spaghettiO; mO;on6PT;wiB;i1HIla 172oRsheQtOvoxa5GPx;e,tO;er 69S;d 6TW;rOxe4IN;escenPi6oantimO;on2S8;ce,tO; la55O; 09ating-point a08o04p03rTwPydO; p1BW–warshall3UI;c6SIerO;ing2HUs O;for algeOin the att6ZZ;rn2; de la459enTiO;an RdaO;! O;ke5S1m1p2H5sO;chool for 3XIt4S8;munt0YBze6QE;ce Ot malou6XE;andPca2L9faivBhOn1IBpu6T0w2S3;en0ZN; the4DT;py di4YDs;d Qr O;and ceilingOja5BW; fun48B;my6H4;rithmet6ZI;ri6X4;ckr,ghtRntQpOx6OV; Oka6Z5;or fl66Jwi623;! water 2VEloJ; of the nav5J0pl1;ab645etPmi6QFsch–kincaid readability t001tcher4R8urO; 3WF-de-lF; fQwood O;mac5RZpark racetO;raJ;ox3;c,gYmWnVppTshRtPvOx,yi8;io bria5KLor fl62R; e68UironOli3V2ul6W6; bu3AN; Od5D3;go447me304th3R4;er,y O;bi6W9;de6WInery2B9;eOin5MO;n6KMthr6DF; Pel5F3s of O;eu673the confederate state357;c63Tof O;aTbr0L8c0L6eSfr5CTge5O6iRj1SAmissiQnaY3ru5UPsPthe O;n3W6ph6LEs1H1u2PR;o0KUpa4;ssip3EO;ndAta6IW;ng6R8u66W;fg69Du2AH;a4Ab44c3Yd3Se3Nf3Ag33ji,l2Ombul2Nn1Kon1Gr0As01t00veQxOzz bu15R;atO;ion6XH; R-Orr;pPstar Oyear planBJ;ra5XM;ercent 1VSointed 0AQ;bedrScharacters in search of an ex6UAey3fRgu5QKnights at freddyQpillars of6MOstaOws;ges of gOr4N2;ri203;'s;ami0WYeet6XYinger death pVE;oo6W0;b6U4girl rep3C6; VcUhPtO; of the north 0AHi8; andRerO; P's exact 5FO–yates sO;huff7;inf692ki8s2CI; c66Y;al 2PZ;alpine ski30ski jumping30;!axis5AJe0Lm0KstO; T-O;fo6XSorderQpO;ast-the-post vo6XNeO;rson3FB; lO;og6XR;a2Mb06c01frenc1GQiYjewish–rom4CRlaWmexica55Xn6QLoVpr4Z2reform6SJsiTtrPwO;orld5R0;anscontinentalOiumvi5EJ; rO;ailO;ro6SZ;no-jO;apan2LT;pium5QT;dy1ZAng65LwO; of thermo1EN;mOndochina5QQ;peachment ofO; d82;hRoPruO;sa5KH;nOuncil of nica6QVw;go5QK;echen5QJ;aQlo6WUoPulgarO;ia55D;er5QG;lk4C5ttle of O;buPeOthe m1YK;l alame4;ll43O;a66LwaB; Sa6JGbRfPhose of false6WLwO;at6KWor6MH;lyOox0MR;! 47L;a6UUiH;eOf4SPin the sCWm4LLos,pTZ;mblemOxtingui5CE;! f6JF;a On1GU;a6E5bPgubOsh6LA;el6EK;ru6VH;a08d01eZgerp2GRiWlandVnO; Sa6SEeRish Oo-ugr66Hs;aPc540defenOla64O;ce48Q;ir4SDr4RE;as o'c1IFgans 505;bál6SNco7j6TXwO;itt6FColf6TQ;! 36Wi3YU–russia165;sterre2C3teO; O-state4AI;diff5FWelem1BWf57Nimpulse35; O-structure 48S;a6W0gaIyoung canniba6TS; Ring O;a6QEdoLne57OyourO; rO;oo6RH;a Pmy ipO;ho6;gra6KV;l Tncial Oste5CZ;and social rankings of sovereign statRendow65MsPtO;e45Oim3;eOtate65K;creSBrv691;esJ5;cut6ANdeYfantasyPgo6VJsO;o2DWpa6UO;! O;iUtTvQxO;!iOv64K;!i64Jv;!iO;!iO;! rema5WUi;ac4RV;i64Ev,x;sti1SZ;wi5S4;eYiUmO; Ofar11Pma6G9natio5G5;diRgQi4M9no6R9producPsO;coBe6M8;er,ti2;enB;re6HKs3MY;bu6KRpO;i281po iO;nzO;ag6IE; Oh4BPsystem hierarchy68Ft mi2MDz3ZD;allocaPex026sy4W9tO;ransfer6BR;tion6QC;htOure ska6UX; S-or-flight1WerPing O;de5P2ga6UJwith my 5M2; aO;ircO;ra4Z5;cl3R8for my4RM;aVe,tO;hPy shades ofO; grE; P-O;generation608;aOgePXh34U;menO;dment to the united states co2SZ;! O;clubQwoO;men'sPrld O;c6BUr1FX; w11R;ldOsta 1MV; P-Os2T0;effect3E3programmable gate6E0;goMof drO;ea6S8;dler on the 5TOeO;! RlOsz; caPity invesO;tm6PD;st6I5;ti6DMw0QN;k's laws of diffu6FRtional Pus religO;io6BC;planets of the solaQuniverseO; ofO; harry po4UR;r 4V5;erPonacci5RYromyaO;lgA;-optic cPgO;la6SI;ab7oO;mmuni5TA; world endurancQcre2F8nna fá66EtO;! O;chrysler a2OOm5GDp6RH;e 65G;mp39Sp9A;a1Vbruary 2BRc3d18e15l0Sm0Mn0GrTsRtQuda5CVv0yO;en09VnmanO; d1KY;li6T0ty w4SN;s 1EFtO;ivDus eze6JZ;al0CUdinand 06enc pusk05guson20Oland men6C6m00nando YoXrQtilO;e crOiz0;es6CS;aRePis bueller's dayOomagne57W; o6B6;ro Ot;ro5TRs5Z7;n Pri testO;aros6AI;jutglà,to4SK;cactus wislize6IKze4F8;aOto4SI;lon5QR;at's lQen596iO; pOon;arad5TZ;as24IittlO;e 3S4;ás;de saus4BTiPmaOpor0LZvii 46O;ge2Z4rc6KD; of Oi of ar43P;a5IGbu31O;cingSder strato45BgQneOr6ORtan3M7ug3T3way sports6A5;c Ol;f5TPs0A9; sh4Z1hO;ua8; respon6QT;ale RinPke halGUmO;e fa6S5;a Oi6IV;ge34Umiss60B;ejaNFgenital muti58Yhyst1XOreproducO;tiv2MX;a ku5EQdsp9iPlOo5NE;at5QEow of the roya3AI;ciVd6E6foUn6E6pe Rs,x O;dzerzhi5OBlePmendels3M6sOyusup5QN;te4U0;it0;mPviO;! 461;as69J;rmA;a54Dty O;hOj6PSke6M9;uf6JC;dPling O;go6RW;baJforward156;eQorO; emelian5NWaO;! l5GA; 2E7rPxO;! e32Uf53E;aRico O;chie695fPgarcía O;lor5GH;el3KV;lStO;ed states of micrQionO;! of O;bosnia 2ZUma2RT;on50S; PisO;m,t6KX;bureau of inves1H1communicationsSdeposit insurance59Vemergency management 235governmRholidayQr0OQsO;ecurity3Q5ubjecO;ts5NK;s 16H;ent1TG; cO;om45N;r Tst of the RtureO; Ps of tO;he m1ZR;fi6MLsca6JM;a6PYcircumcision1LRholy nO;ame 1KC;and loathing inQfactor0P8of missPst6N9the walkO;ing5I2;ing41H; lO;as v21I;augs47WbaQda34SgPmidtjyl6JVpor68Jred bull salz47WsOzenit saint peters47W;hakhtar donet4PYpartak6OK;irondins de bord37Noa;rcelonaQsIyernO; muO;ni6F2;! b;i6Q2most wanted terror2QJten most wanted fugit2K3; c36b30c2Pfn6MThadh fa2Oi2Gke2Fl1Tm1In16q,r0Ls08tVuUvTwSyPzeO; cl1; riPe O;dun6KLwo8;plE;ad 4LXlty 5E6;e6PZic2;da,st,vi6GY; Zal Xboy WherTimQs doPty O;ac6NSliver67J;mi5XT;aOid6I5; sana shaiOh;kh; O's52N;christmas iOjohn mis6JTt6LF;s 3ZY;sl641;atOf7RinsomnA;tr61H;j5CQleonard 6KDm1;cZhionWtO; O-moving consumer06Oa36Fer-than-l6MYi8;c17HfQinverse square Ptimes at ridgemontO; hi6JN;ro6Q9;i6F3oO;odOu02Y;! reO;stau5LC;! O;accesOi4GY;soL;es,i6G8; 04-03aYeWhan66Iming57KnazVoTrah PsO;ca6DT;aQfO;awO;ce6GN;br3IB;e5NHkh engiOuk L5;ne0; sh4FX;ed z0BDs fO;ar3;dayRh O;kh1pO;ahO;la495; ca67E's law of iJ1;l20Pright20Q;cryPsO;ide of6JM;! new O;da6M6; XdangoWnTtasO;i1tic Py O;c014fi6KKis6I2liC0;beasts and where to find th5H2fOpl4FN;e6LPourO;! i6KF;ie fla5CCy O;andOb4WL; a21V; m3CF;bOf623s3NO;ing2WW;as,iOke jan3A1oti1DW;ly One;a30Jfe64Bg3F7mat4WGof StO;i3ree of O;british monarc459mu3KCthe O;british rOgreek2GW;oy2OO;bQdOj2G2;onaldO; tWW;arac3UC;a07con06kland05lRsOun 1OP;e Oifia3NS;fl5TNme2PXpositives and false neg0RPvacuum dO;ecK; Ra4VWen aQingOon sher67Nschirmjäg0; Ow5DI;in rev68Sski3;ngI;gu5GUoO;f Out1Z2;constantin5UKsTthe O;berliQwesternO; rO;oma4WP;n O;waC;aOi0AM;ig2; i5LYs5HO;! hea51C; OfI;ch5; ne6EQ;lure mode and effectUrQsal o6DYthO; Ole6MP;e3A6hiCno 6GW; u6M4porQuza ba2GAyO;! taO;il,le;t con1ZS;s 1C1;as60H;eUial recogniTGtPundo campO;az6C1;ions of ha6EUorO; 1BWiQy methodO; patO;te6CT;al,o; with tears of joy emo5O8bookPit,punch4FXsOti6N9; 357it6NK;! O–cambridge analytica data 6HM;messe65U;a4LGergé4WDiQle3G6rO;izio rOício werd67Z;oma5UO;anPo O;cannava6BElanzo6CS; 35Go carua68H;ommunity Oup;sh4YS;nu6H7s4EBte6JR; OR-OPaN7bN4cMDdJVeJTfJEgJ1hlers–danlos syndrJ0iI6jI3kI1lDQmAYn8To8Sp89qu84r63s4Xt44u2Lv1Ewan mcgreg1DxWyeSzO;ekielQra Otv;koOmi6DZp0XT;en5J1;! 08X; Os wide sh4GZ;cPmovement desensitization and rep02Cof O;h5WJproB5the35;ol6JD;c0Ye0Pf68Dhib6BTisten0Lo0Kp07tOxonmob5ZN;e03inct00or6IBrO;aTemeO; Qly largO;e tO;eleG8;j4B4p0BZultraviolet liO;th6G1;cellular62Oordinary5E0sensoryRtPversion and introO;ver68F;errestriaOor5AK;l 6M5; perO;cep6HZ; in tPionO;! e23C;he3KD;nded PrO;mina42Q;euclidean3H3plK;aYeVloTonentiaRressO; 4L5io6BAvPwayO;s 4D8;pn;l Oti2;d3E1fu66YgM0;itOratory data 1AG;atio6HHs of a young don ju1;ctPdia63Krimental O;m573roJ;ation–maximization3GSed v6A7;nsionOtriaH; of669;!c6I5pl4CHr5U3tic s2LU;ce PtialO; 2I8i6CB;ofO; g6LS;cutOne cerven5QMt0;able and linkab436iO;on Rve O;c9d67IpO;rodO;uc0;by firing0R9of O;nguyễn văn lém,saddamOthe romanov 5CX; husse4;aSess mortality in the soviet union under0CQhange-traded RlO;amPusive O;economic1X0or;ation 5GT;fu6HF;lib61Nv651;or6EP;a0EeUgenia medveTil QoO; m4AlutionO;!ary1AO;deadOe3PO;! O;ii,ri6JI;de5JX; 04l02n01rO; YcXgTnoHq6FKyO; breath you RbodyOday 6KPthing everywhere all at 0QBwhere at the end 6KU; O's talk2AL;hates chrFloves rOwants to rule5BX;ay30Y;ta5MH;lQrO;ande62FeenO;! a-class contai0Z5;ad3ow;le9;aOg3QA;ft0n0L2;-toed ungu3L1t 2LX; kni34Yyn O;g01Uw2NQ;a5R9babi6D3he5DZoOplu5AZ;f tOn67Q;he dale6AH; WnO; Qder hol3SUe5ZIgeliPnaO; l3HN;ca53Xne l3EC;al2IBgo36Sh1PGmRpe4S5rPsO;ha4K3pi2FE;achel 5R1odriO;gu3;cpC2o04L;aTbScaRgQlPmOper4E2;arie s19Je2HP;ee kunEong37;ab6GRre5;ssi634;ra6JG;mur6G4ndersson-d36W;c12daim4R9g0Uk0Tler0Nmill3SVn0Mph0LrQtO;hOrophi5JS;an650;asia0Eeka4YYip569oOyth4ER; 0Bc09d4YFfighter typ08le5VNmaYGn06pOst9tr5W3vision so51Xzo6;a universalis 5TQeOl3H0;!an O;b5FDcWdVeQfree trade1L8parlia5TVrPsOtheatre of2USu5UNwildc65H;ingleR5pa08Iup3QK;ob4;conomic PmissionO; stand5QC;ar6DQcO;omO;mu468;ebt 2G3;entrToO;lo2KCm3Y2nvention onQuO;nc5WGrtO; ofO; humanO; r4BY;al 26H;eOy5IZ;ws,xt;ho2;ha2GUopterO; t4J9;bankn4C8cOsi5YN;oiN;!n O;economic1C6lyPsO;tep67C;nx;emi69NorAr666;ice kennedy shr6DXu67G; R's PianO–lagrangX9; pa611;f3C7idOtotient 63V;enti6CL;anOme6HP;gl3;aryoH;enQène O;delOiones650;acro5Z0;e PiO;a co55Ocs,o derb6BL;a5PQle4W5oPsO;led60U;'nHV;alyptDhQlidO;!ean O;a3DHdi1NHgeYHs1CWve657;a61Bre;a carin64Jernal 0EhTiRoQrPsy,ta Oy3Y;j5HIp61S;i6FLuscan c0R4;n500ro;had59Kka,qO;a,u5JN; zu44Ga03eWiopiaUnRylO; ace40YeneO;! gOdiaminetetraacet2AS;lyc6HK;ic groupOog6BR;!s in O;eu5QWru5EK;! 5BXn O;a5V0em63Gorthodox tewahedo49R;l SrO;!e62UnetO;! O;fOover twisted pa6E8;ra6HW;bOke1ZMme54M;arry6B3;nPrkkum thunindhO;av1; Ool;c45Whaw5JFlW0peJsO;an5C4upl69K;re2JRsO;epte6BXunshine of the spotless6DT;ai m0Sc0Kkimo0Jmé creed-m47Yo0Cp09q08s01tPwaO;ti67C;anis pedYeUher TimateQonPrOuaL;adi6GXog5;ia2C6;d number of civilian guns per capita 3UUs of historical world O;poO;pu4Y7;ace315duf68UrHIwi4R1;ban oc2lle Pr expóO;si5Z5;g47Wha26DpO;ar0GZ;ro6GW;ay,ePieO; d5KK;nRxO;!-O;class aO;ircraf02;!tial23A;uiB;er5YSio0XWnPor6CUrO;es5EZ;!+,cricin42C;m,phagTteric O;naRpO;rogrammO;inO;g 5PE;zi67F;e11Jus;! callb54G;ape QhPitalopr6DPorO;t c5M8;a1BNerichia 3MG;from Psequences2ZVto the chaOv4O6;te5UV;mogaPn6CJpretOspider6CGtark5F6;orA;dis3NX;or1H4;a1Le1Ifurt latr1Hgo pro4RDi09ling haa69LnZoUroTtuğr4EQwin RyPéndira ibO;arG;kah baDCsipO;el6GG;roOschrödi5Z0;mmI;l f3E2r 619;geRs,tO;icOom1YE; Oa,i66U;a6GFh1RMlac4WM;!nous1RV;estSie Rst Oő rub5BD;hae3AXjü5YRkaltenbPrö3B5stavro bO;lo3KE;ru2X9;b3RJhu5X0l2X2; Oo fonseca carr480;borg49ShePrOshackl3GX;uther561;minO;gwK;c00e cZkRnOtr69Y; Oy3;a0FYbroc3BQd65grKkell2ROmO;or1u4JH; Ra Pson's stages of psychosociO;al5O4;eleOharla5GI;ni5BZ;estQjan ha30Zkillmo5YAper PsO;at6DCom4PC;suEQ;ra6DP;anM; Va Uh Oss2;fShRludendor5XNmQraPvon O;dän167ma5G0;ed0;aria remarq63Suhsf3FR;art5XQone3UG;ro2DV;d3Nlind4UZ;a09b08c01dZes63QfeYgarc51Uharris and dylan kleXid7liWmVrSsPtNRwOyu1;ei5FTi5CB;cPtoOyk3;l67Sne6BJu68Z;hmi5LP;oPudO;ol3IK;b584th;c1TJorecam4H0;d1AAve5ZS;bo6DO;lln0;a6icO;ke5TJ;aRhOlapton5RK;asePristianO; o42N; an0F9;nPrO;m5r,tm1;to606;a605enét,isc090lJRogo4LBrist6CLu3KE;da6CYnd35H;ine64I;bDctiPdiv2M8n O;ba65Fye19R;le dys5ZIon;g2sPtO;osth9F;er6ACmDuB;aOestr3TPin5FQ;lPtorO;!ial guinea48B; Os 5TS;rights amend5OFtempera5OF;c6EQhe04iRo4P7sOub,yc;il2on,teinO; didn't kill himPP–barrO; v3RO;cTdemiSgeRlQphan1B0stePtheO;li5Z0t;mo5N8;ep507;ne4AT;c,o5N5; Qanthic 3REtPurO;ea637us;etD;fi69KgamPme0QYof gilgaOpoTYr4B2;me65J;esO;! s4ZU;b0QJd5HGmOsD;erF;n 3N0s; 1Rc1Jd19e12field polt10gl0Nhyp5i0Mk0Llargement of 0Kn0Jo0Hr08s06tYumclaw horse sex1PKvUya,zO;oQymeO;! O;inhib0V5; fO;erO;ra69P;er QironmentO; vOa1SO;ari698;hox52Apas52A;erQhPity–relationship4XSrOwicklung 4G0;epreneurU4o6D4;al6D3ir1; the Rprise Qtainment O;o6software ratingO; b2HV;resource pl48Lso4Y6;dr3OFm5TIvo6AR;che50Wemble O;ca6A0le02V;iPonO;! 67J;cQque O;e5VHiOpeña nie5UVt2SC;glesi6D4;hedPo O;colanto62Qfer651; teO;xt;cOla gK;h2CKk mwepu;eagram o0HEio morri377;na5UMth15U;a,i;ac,d bl4K8gma3RF;andYishO; P-speakiO;ng6BB;al48LcTelectricSfootball leagueRg0QVlPpOref5O7wikip30C;e5J4ho3MU;a5L7iO;te0XK;! 4E3; l3KE;ha2A3iv4KGountO;ry6AW;! O;c3SSna56A;ergO;ei696;dina351mRrgy dQs O;kanterOünM; freed5RM;en4U6;aPy at theO; g5ZC;! of the3UU; TangeredSer'Rian6B4oO;crin26Vmetri4ROplasmic reticPrpO;hiN;ul5WW;s 5W9; spe23B;of wOti6BY;at60Eorld war iiO; inO; eu5KO;an5TNeSlave and exc3TErRyclopO;ediaOædia britanni50T;! draO;ma4EJ;yp67F;ladDphalitisO;! letharO;gi50N;pas4FF;a2Db27cure pharmaceutica69Mer21i18m0Go0EpSraanQuO;! w9lO;at688si2; haO;sh63J;a08eror01hy00irUloyRress Pty O;ne689;dowager ciOelisabeth46Fjosép587matil69K;xi;ees' Ome5V4;provident fund2C0state insO;ur4PV;e QicO;al eOi61V;vid68T;of Pstate O;bu2N9of67B;brY4j156trebizo67B;se63F;! O;jim3N0mei5C0no110of Sp0ZPtaiOxuanzP;sQzO;ong of O;ta8;hō;c2YBj14Y;na691t64I;! r4ABji,ry 43UtiO;c2on40B;aWeTiSyO; PlouO; ha1ZS;aw5HEroO;ss5VJ;tt54N;line pankhPr3YDtt O;s4KWtiC;ur67E; UnuelO; Qle O;béa6AQchr1K1seiO;gn0;adebPdeOm2BW;nnF;ay672;ap18Vbu4LOcXdVgUhemingTlOMmSpor2DJrRsQthomPwaO;lton2Lts2;as,pson5DE;am68Kto6;aduca2Z6ob53A;aNLo46B; wi4FC;ol55Z;'Ou1TF;ar4HR;hamberOo2MM;la4s;!lVnem5MPrO;ateOu; of Qs O;f5GCof the united arab eOs50B;mir5X2;abu dha44NdPgO;ra2NO;ub5YI; 07e 06iYy O;a4WYbUcompag5HCdShaRin40Bl080mort2N0os5JVrataj4KIsPvan3QDwO;a4L6ickerGF;waO;ll67L;mps263;eOic4I9;sch0XI;ePlu5TCroO;n4E4w600;ech66Itt rick5G7;aQe liPo O;aguin0GIest1SD;vi573; Q-romag5UVno O;buend4JGmOzapa69U;artín62A;clOf5AMj67A;ar5AZ;hi572smith 1XM;ci3EZnol4WX;aRg66TiQson O;c4QVfittip497rO;oyM;l lag15EtD;ld Oude toubA;fen1VZtabl65H;arReQraO;cer5QPerO;! e-jeDD;dde239th david61K;raO;ss5J0;ar proper63Wcs,il5KGnOs44;cipation procla5MWuel sweden0G3; 3Sa3Ob3Nche 3Mde3Je1Yf1Vgin m1Ui0Tk0Sl08mer b07o03r01sUton johnSviPyO;es g1ZIsi5TN;ra4VZs O;co604preslO;eyO;! O;a5LDsi25D;aQePie O;fi4OP;vi0; OgaH;lOpata57B;anO;che5YE;ic of melniboOo64M;né; r1CBhimPise mum4YHn muskO;!'s tesla road5YA;! pO;ran5WA;er58U;a 05eYiOor5D3;e WotTpOs 3WQ;sRticO; curveP-curveO; crypt61P;! digital signature332;e,is; 5KBt O;gOs5GYwave49U;ou66O;goul5LTke5Yrow55Sta14X; Sn O;bQdegenPhol2U6pomp4TOwO;hit27Q;er3;a60Iurst56C;f434ki8macpO;he5ME;baliOf1YAhu5RIpur1UN;ns5CQ;!an baggo5YVe so4UC; 0Na0Le w0Khu ka609jah 0In0Got 0Fs0Bte dange2Z9ud kipcho5PWzO;aPebeth smith fO;rie53F; 06bethO; Oan4N;b03c02deb5M1fr2B6gil01h00iZlYmWoUpeTsRtPwO;a96oodv52L;a14FulO;lo5VW;chuylerOpr02X; ha53V;r4D8ña;f Ols5;ru53Ryo63B;a2Y6cOiF3o2YN;go10K;a5K7ecompH;! 5N8i;o1TBu1HO;be67Dli3;hai vasarhel3NYoun54X;anks60Ler4ARowes-ly2áthoL;cOdush0H8scanl5ta140;ou5VA;abeth PeOha cuth5PJ; c28Z;hass051mOsh5VC;ax4XTo65X;ne65Wsp579; norde3S0or doO;nah5V8;blue al2T2mOw0WC;iELu32K;iesI; Os kote66S;kaz1;a5OLc2CNm41Zro5ORwalla5V4;ar5J2;!eO;d0OCn O;li61V;anor 13ctWfa5QAktra3ZXmentary Vna UphantSusinianQvO;at636enth O;do5T6; mO;yste5XP;! O;bi646seM;ana5E8bashkiro559ferr3YBk3OFsa3P9;c3CJp4V7;ion0Soral count5HOrO;a0Pic0AoOum; h64Oc08encephal5ZSl04mYnPpO;la66Iop;! TicOvo3T1; Oa;ar61XcPdance4RBm4RCroJti2E1wO;asH;igar57EompoO;ne5PS;configu61NmOs393transport cha4;icroO;sco5U7;agnetOotive429;!iO;c Osm;f4HNiPpOr2NJsp3L0;ul64A;nd4YC;ux,yO;sisOte;! O;of1Q0;ardi5Z7onvulsive 1AE; Ral Pity O;g33Osector 5DN;discharge machi5W0e5I6imp1XQresistivity and condOwi5I7;uc3G4;b5ZCcVdipole mo5FLeIf4HBgTlRm22VpoPvehicleO;! b5ZB;t5PQwerO;! t3JY;ady5YIight orchesO;tra4YM;enOu38L;er5P4;arPhaOur4TG;ir,r5NH;! use 3IK; cO;om06K; commissOs 5D7;ion 3WA;mon3STof aquit4TMpRrPtoO;mli5XK;ig608oO;oseve3RV;a2VZo4VV;n Pr fO;ut1ZE;he5XEri8;cf;a,e;gab57Rine Om,stic29B;bPmKpOstr5T7;ai5MZ;en3;cRdo1VVgre5QYmariQniPrisOsalv4F5;it64Q;ño;ac5S9;apitanOid;! t240; villainOstrakla5M5ta2EZ; r375;aPner johO;an511;cu4L6;d0DffelN5gVichiro o62Jleen UnOza1NH;sOtracht frankfu64L;atzgruRtein fO;a4VUieldO; eO;qu5XM;pp5;at4A2b12Igu;en04htO; 00-Xeenth dynasty Vh Qy yO;earO;s'4XW;gePwonderO; of4V3;neO;ration of vO;ideo game consol3;ofO; egy3ZR;nationOthousa4WI; alO;li4ID;isPqueensO; puzz7; en5GI;decomposition of a5JXvalues and eigenv2HL; al-Qetic 259osO; i48I-montO;réM;ad4SEfitr;om3;ali3IRgZoUyO; maulana vik5ZMptO;! 4XBianO; P–hittite peace O;trea5X4;aOhieroglyp3K3la5BZpyrami5SB;ir3ZP; Qn sO;chie7pO;en2BD;d3ZUnwO;od5H7; as15Tn5E1p1LKs beGY; english proficien01e ajag5KLfTi system parSl PrO;aim divero5TZen r2ZO;cPleague O;o6tWP;h5F7up;ti5YP;ectSiO;cient-marketOe QM; hO;ypoO;th5SA; 29Hive altr4QMs ofO; climatO;e 3IS;cy629; l2K8ga,l,naO;du; 1Rama62Od1Ie1Dg13i0Tm0Mna2FKo0Ls0Ju0Dvard 0BwOx;ardPin O;hu086van der s9; QiO;anO; eG;al5L2b03e32Sfur2F4h01iYjXno0SHsVtSvQwO;i3LIoO;od228; 5IHiO;! 5IGi5BP;e5TIhe O;black20ZconfOe3KKmartyr;ess5Z0;a5ZTcissorh50FnO;owd5;ames olm5U2e2JG;! 5I9iOvP;! 5I8iO;! 5I7;eOo36H;a5K7rr5KH;erna4USoOurN;nham 2H2;g2IHmO;un5QG;ardo savScationO; inPal O;s53Vte3C3; Od61F;e5HYge4RSi59Zj0VWpa2Ns0HCt5AL;er4;el,on O;barbo537st4C0;! p31ardo mapelli moz41Xm;ontonTund O;b4W2hQiPkeO;mp0;!r2KM;ilOusse34F;laL;! oi3EH; gathe5HDe TnPr6th O;pr3S2t0XLwha0RG; dže59ZburghPson caO;va5R6;! O;a5PAca4QJ;a44IbrQfPsO;edg10E;al5NK;ickeC;ar SeO; Orrin240;c0Q4of O;toO;mo2BR;allan p4NVbuRcay60Fd1BUrice burPthe peacef3ZDwO;i4Y5r5Y4;roO;ug3HQ;ch4CZ;ma,nO; Ps O;ze5P9;brOha5KU;ol4;a gö5DHie Oy4OY;alUb5K7cSgI4hRiz5KRmQnketi5QZredm1F3the7TvO;aOe2IB;n hal5;ars1ek55Qurphy5U8;aCo1P2;ib5JSoO;chr1;be60Uv1PX;aZb356ge4hYko5P1mWoUredTsPwO;est0ZMo60P;heer2E0kQuO;llO;iv1;re4;li5OV;'nOrgVG;eiC;cmOili0BQ;ah2;a1PBel5YK;nd lorraineOsn5II; wa1W;c0Ch0Bkhart t0Ama26EoOu4AN;lo59AnomOsy41Qtou3YK;i04y of O;au1CIb02cN1fr4EOge4Q1i00j0U5mZnXpWru4WKsVtQu3RWvO;ieO;tn5X1;a4IThe PorOuML;on5HS;e0T0ph5N5republicOs0ISu1RI; ofO; i0A1;iMLoMJ;a0No5SZ;aOor0FC;zi4NW;alaysA;ndOta5KI;ia,on496;aMPrMO;c Oes of2XC;freedom fPgOi1DI;row5HP;igh47F;ol7;el2id5KZl;hi,lesiaO;st3;ay,enPoOrahim rai5Q7;la,ny,ok; b36Zezer scroo5HM; 2VCgle12mon10r0DsQtPzyO;-e; pray1N0ing407on township weis markets164;e of doing busi09tRyO; PjetO;! 1L5;a,o4QVr4F2; VeO–west sc40Y;n4BKrO;! Sn O;blQcatholic chur5XNeu57VgOnew england59Ror0BRprom084t1AR;oldf49Qray squiO;rrI;oc;is5S3ri5NQ;aVcUend Tge4OVindiSmiRof5F0pPsuOtim5VM;ss5YG;aOru4VC;ki5A7;dl4WY;a 4PI;of 4E4;oast112;fricaOsA;!n 42L;ne2AT;lSthPwigO;! and the w5N1; similar54M's Oa ki5PRb09Jqua509s5SOwo5LK;magnetic30UoOro4EZ;rb5UY; 00iest known life fZy O;ac5F5hUmOslavs,world ma591;iSodern Puslim conquO;es5U8;e593hPpO;eri5YI;um1;ddle 58R;istory ofPuman mO;igr5RM; vO;ideo4BB;or5WG;greyRsOwaT;cPweatsO;hi5YB;rug5UY; t5S4; faOn1K4;rr5;! Os 5Q0;e32IfiO;ghting 5A0;commS3girls and e-2W2heOleNJ;nt5MI;nu5S2pluribus un5INstreet 097;'007-s38PaQ2bs 1KWc PXdPWeFVhFLi9Nj9Ik m9Hm9Cn99o42r28s26u0Ov0Jw09xdi534yPzhokhar tsarna5PZáil éirea5G6éjà 4BBüsselO;do1W3;a06bb34Qing5UQlan00naRsO;autonomAcalcPen5RKlexAon 1IEtO;h4SFopA;ulA;miRstO;ies in chinese48KyO;! O;warr29S;cOte; O-link1PAa1KP;host configura5EIpMXrOty1E9;andom-O;access 1YZ; On 4X4;ar4V3b1X6mPo0EEpe5FQs0JWth3XQwO;al5OX;cdPiO;nn4YL;ermo5OE;n ca0OBtlov pass167;aSeezil z0K5ight PyaneO; wa4KT;ho1WVschPyoO;ak5U2;ruHul5PN;rfPyne O;has42Vjohns2IY; Oi5NL;fOpl3NO;ort57W;dQorak kO;eyboard lO;ayo3R1;! regO-v4IJ;ion 3ZV; pon14a0Zb0Yc0Vdley1HWe0Tff mck3EUg0Rke0Jl0Im0Fn01ol0I6p00quesne spy 59ErXstTtch Ošan vlah51B;baby panRePgOla55Bov5pe537r4L4sY0;olden0GC;ast indiOm5I2;a 4NCes;ca4YA; 0PEin Py O;hiCspr1S8;d2CMh5O1lance36HmOpoi523rh3UK;i2HTosko409;anPb1ga,hOi1;am 3PF; dur29Wd 5JO;o5G5uytren's contrac5J8;bYcan WdeUeRgeon fighter 2EXia11ZkiPning–kruge1C7s scO;otD;n' donu5S4rkO;! evac3MW;! Od4;ii,mO;essi5MD;e,r mifO;fl4;iOj5U2sand4OT;da4R8;ar'PlO;ane2JV;s 4UE;bPpO;ing in dix5TOli8; and du5Q6ledore's0Y6o;ce de l52le129o3ESquer salma1é 2Y3;! Ps O;in05U;blue devils mRel2SOof Oun4DO;arPdevons1S7edOgraft2norfo1OFyo5RS;inLV;gyC;enO;'s ba0HE;a rOo8;ad9; di3L5lO;! at di064;kOti3CQ; Oduck4JSt0W4;d377ty1CA;ai5J6lin3D4rovn4QOst15A; liRlPne O;al2HNcMW;-clutch09GsO;hoJ;pa4OK;t 4MS;chingOhk,tv;his 3QR; 1Fa0Me02iZoVuPyO; i5UHad,waC;dgeSg Rid,mOze;! O;and Ok5RI;ba5U2;ca3NEenforcement35Eo30F; re5IX;it du seigne5BEme2K7pOug5S1; Ob4W8kick murph4NN;be9dead Osh0HU;di4TT;b00Ell4G2nking Pving O;miss dai4GXunder the influ5SF;the kool-a5SBw4K3;aWdd,sd5w Oyfus26O;bScarEgRloJmPpOs3II;e59Bi4QZ;a3AFciO;ntyB;od58E;arrymoPlOre3;eds4HC;re5O2; de matt4GAdVmO; RcaQworks O;animationOd5TCpi3Z9;! 1LV;st,t4V8;ch1Y1of the red Pp521s40GtO;he4JN;cha5OL;lPnoughtO;!-4XS;oc5KA;c0Cft0AgVkeRvidPwnOx the3MOymond1X8žen pe4SV; toge5G1;a munnetra kazhOi39K;ag5R4; QnPo the rO;ul0;ga5RV;beCdi5M4eq3KN; Yged acrossWoOunov sniper3VF;nOon,stea din t51D; O's dog5M9ball07Jf3QBh1YUl48Is' d5;a5C5ballQquestOsc39J;! O;i5PXv,x535;! O;fighteOgt,sWZz;rz; concO;reH;co2EFme tQq4PSreducO;tioO;n 3V6;o 2WP; hO;or5S1;oPulaO;! unto5S6; mO;alf4H5;congo 4N9disreOpe2XR;spe54T; 4Nb2N8c46d41g3Uha,ja cat4MMkos shipwreJl3Km2Kn14o0Xp0Vr0Ks,t0HuVveUwPxO;b4i8ycyc5GL; jones industrial379nOry,si8; s5CXloadable3WKtO;em3A9onO; aO;bbE; camO8;bleZgPjinOla;!s5GR; Thn3NAlas Oray1I7;a3W7bRfairb34KgPhOke4IUluVNmaca2RMpi5K8sbd daunt19U;ens4LZod5B9;reO;sh5PY;ad0oo5B1;co48BemN8fQhutch4OIl50ImOpeTD;ccO;luB;lK3o5QN; V-PcO;liJ;entry bookSheadedRprQslitO; exO;peri52S;ecision floating-point3AA; e3Y7;kee19F;asteroid redirect0BSba5RLenteOfa4ENindem3F8jeop0T6;ndB; p194-comPa,s per O;in5GY; buY0;aVemiUiRmam34EoOs5OUt215;hedoro,ro,thy O;danOkilga4ZHpa2JEstra3BEth2L0zbo21H;dr5A9;an Ps Ot5K5;dKl5K5r3G3;el1AYy5FF; mPM; Oem2;and the lost city of 3FAthe exO;plor0;a490pO;elgä5ARle17Y;-w4ZQdle champion island457k5PTlittl8AmQrdaO;rOsh;sh1; Qer,g2ILsO;crQ4day O;c59Yru7;at your2QUete1MAm4JVpa4XS; 0O't 0Ha0Ab5RYca5HTda09e05g zh04key02nQovan mOtnod 51W;cna41ViO;tc2UX;a Ter paSie Qy O;ha3W8os27Wvan deO; be4OV;dar508m19Fwahl5AHyO;en5L7;r5LDss;brazi7dSmRre5MYsu4EAtQzO;uckO;er5AC;ar5IQr4F9;il5PJu3V8;ix2o1KE;! kongO;! c50A;uo;rQtskO;! pO;eople's2UB; keb3I4;! 5O2;lOtell4HH; l3DXd O;cer4QFdRfaQgPknu59Ao186pleas5OSrums2VIsutherland5KPtO;ru3X8;l29So5EC;g5is2;af4DUuJ;breat5FLlook TrepeatSsPworryO; dar5JO;ay a PtO;ar5G9op believ1GO;wo5OR; y2C;n5OSup;am01b00cZdel3IVfYgWhUjSkRl4PJmQqPri1W2shO;i11Cu5QG;uixoH;c4IYe1KH;i8n3UE;oOu1;h5J7n;eOuff5DV;ck,nlE;iOu4D9;ov4P0;e38Rr2V5;he15GoryeC;lu58Lra4MB;ec5F0; 0La0De09hnall g1U2iO;nOti1;a06iRoO; O's0T4es;haQEkO;ir4RZ;cRk Qon,que O;dStO;h2LGi2UK;myster4OH; SaQk O;cr4IDdOr2MO;un6;!n O;o43Sr4EG;cQh8Dmo1ECpOra3GUt2S5we5MU;errott5MEurO;ceC;alvert-lPhia3SGo42PuO;mm5MS;ew4;nce and sub34Ftr565; of thQnico de 0MXsO;day 09Ktic O;g0RKv5NC;e 595;inOntas sabonF; Q-O;driven 552specifiO;c 4Y7;nameOrQ;! O;rOsy3R4;egistr9;delOpéri1H5;ui5NY;by Wemite is my VlSoQphO; Oin;lu3AIzig1XH;m4QAres O;o'rio5MRum2Q2;arOfa5OMy pa0F9; 54PsO; t2LT;na5P7;atm5H0d7St1ONvi5B7; ReQgOv4K9;er5I9yO; s3NZs3NZ;co4;b3N2day afterno2me5ARtO;he boun1WRrO;ai5FG;ecaheRge Oi f3IOo;chaOv472;lOrg0;le57J;dr2; 01sFtorPumentO; object495ary 5KE; OaH;doXegWfaHmVoRstrangeQwhoO;! missingO; epis3MQ;! in the multiverse394;c239f O;mPosteopathicOph430; mO;edi4CM;anhatt1;gm1;li0F1om;aPhOma3U4;oll2V1;nt7;androids dream of electric sheep?,it Rnot go gentle into that good1DNtheOyou love your mom and her two-hit multi-target attackP; rightPy know it's christmaO;s?; t23R;to 5KOyO;ourO;se4TI;aOce,epropetrovsk man3V5iep0s over htt4YQyaneshwar agas5CP;! O;methy44VreE0sequen335;a5OBc delRitrOx;i Py O;mMLrybolovl5G8;mendele5G7shosta2JX;ore1;etca4T9; Rango PiO;!bou4AHmon houns4FH;rein4UDunchaO;in5J5;khal5J4po53Zqu42Z; bonaventura5Ka4Sc4Gd4Fe3Tff3Og30hydrogen monoxide paro56Ujkstra2Zl2Pm2Hn26o1Zp1Wr1Bs02t01vPwa5EMxie Oy3D6zzy gillesp5LI;ca5GWd0UX;erXiRoQya O;bhOkhosla2C9nare3MJ;ar4A9;ck ori53Hrce dem5H7;nOsionAX;a5J9e O;cQright O;ofO; k5KD;ome56J;genceOs4THticul3TZ;! 2MW;a von t22Gh0;a0Rc0Gguised t4ABh0Fjoint-set3E0k0Dney03pYruptive innoXsoTtO;ance0ZDil443rO;iOok5KT;buted Oct a590;c0C6leO;dg0;ciative identi3O2lution of O;cPtO;he s05Y;zechoslovakA;va5IR;ensa46LlayO; Opo5N9;aspectPreOsi2K5;so15I; r31N;! T's hollywS+QlandPtoO;on3FJ;! p42O;! hotO;st9;ood3FF;c03fa4EAjuQmedia and entertainment2ESpPrOtelevision3TJxd;enaiss41A;rin53D;ni5JC; uO;ti33T;a pa2V3onor5HW; joXoTrOw5L7;ete Oi0KE;cosinePfouOma3J6;rierO; tO;rans0NM;! elysi578gs,rd31NveryO; O+;cOfa4DV;ha1JW;ckE;bi33Gppearance of O;aeryn giQbrian sha3RNdonPmadeleine mcca54Mnatalee hOsusan1LW;ol1DX; lLJ;lle5BM;ac 06eWichlet2E5k Tty O;dQgPhOjo3QXw9;arLonE;rand4SA;an311eeds done dirt cO;he3LF;bOnowitz54J;eOlo310og0IY;nedi4XB; WctO; TedPor of Ov,x;nation3BAthe central iAJ; Q-energyO; weO;ap2;acyclic25Ug25V;c49Td35TmemoryO; ac52B;straits4EVwo4QX;delOeq3C7;ta 56I;hOlo,ole ant2XG;enhydra42DthO;erAo8; br0ONcleTde,gSmede4JInRphantinQrO;!a bO;ai5J7;e 3BY; dim4KLne war0KEysD;en3o jo5LR;ti1;aReshQgo,ner for4RHoO; dOsaur55F;e laurentiF; d'sou4ML; Rh O;ma3RCshO;erOoB;id1;ashPea4DEmeO;r0LPy0;erUK; s55Sash kudai17QeRitQple O;hay3KHkapO;adA;ar berbat4JGri van den 0SN;bag dQnsionOthyl sulfo48H;! f2JVality rO;ed4DC;ar1XF; chahtWaUdo,eepSip Qjit dosanjh,lPma rousse52Wopho560raba dilmOwale dulhania le jay1ZI;ur56E;!ian whyH;k388vengsO;ark9;! O;f5E3r4SI;n yeşilgöz-zege4TXtedO; cardiomy1S0;a h595;'s2FE; a po4FOeorge541ga0AiO;mon06talO; O-to-analog 3YZis,o3EX;a02cZd2CEextrYimWmVobjectTrSsiPtw4visuO;al3H7;gPngle-lens reflexO; caY;na572;e12Pights 3I4; identiO;fi0;a4VPillennium copyright4VI;age pO;rocQA;em3;aPombat41ZuO;rr3RL;meG;rt,udio wO;orks40B;! O;aOghost 542;dven56N; d;'rent str0PLerential Pie–hellman key2ZPr4V8usionO;! of innov5D3;eq3ABgeO;omO;etL; 03drich b1CCgXlVppTrks bSsQtO;ary fOhyl e55Frich bonhoe3P0;ib0; ir55Mel O;e3XVfuI;en55;e O;ra5GX;ecO;tr5JV;etic44Jo O;c4G4ga4Q4lu54RmQri48EsOveláz19Z;imO;eo6;araO;do54N;anRflederQhardOin a gunf5G7;! with a veO;nge3XO;maD;other3VKtwO;oo5GU;ier drog50Fo;e,hen l085kPlofen3HCtatorO;!sh4V6; Q's sportingO; gO;oo57S;butkDcRgLUpo49QsQturp4vOwo4O5yo5EU;an Oerme4VS;dy4KGpa31S;ar467traw2JH;aPh4B1larkO;!'s new year's rockin'51Z;ve59U; 0Eblo i4RWcr0Dg0Bh09l04mond 02nRrQs4TOtoOz07W;mOnic2GA;!aceous31W;rh5CNy of a wimpy23R; fo5FSa Ve QnO;a agr2e O;f1LRwJH;cil35Wdisney 59JgRkQlaPmo0CKsaO;wy0;dd,ne;e59Xrug0;uerre56O;ch08Sdo5GEgabaPhy5BFk4ZRm1ONrO;i45Soss4BJ;ld2;dOis unbreak5DY;allas 4UGo5F3; m for 3VVectO; conti13GicO;!al O;behavior 0MUmO;at40X;ann c1LMnne abO;bo596;eo,nostic and statistical manual of mental disor3UEonalizaO;ble4Y6;it5IF;mir4JB; pi3MN;aQiPl,o7yan cO;ha5DZ;bu ninan 5Drubhai am3OZ;ka,mp5E1nSrO; 503mO;aOe3GJ;! 2QWcO;hakG;iOush5B4; ha2AF; 9Ka83b7Jc6Vd6Re6Gf64gree 4HIhrad5GZi60jan kuluse4DCkal4SEl58m3Tn2Ro2Op2Er1Xs14t0Xu0Lv00wZxO;amethaXtO;erRroO;amPmethorO;ph1;phe3Y9; P's laO;bora5GL;flPhOis48Jmo0BG;ol5AF;et4I3;so6; p4HMey decimal1H8; 07a06elop03iToOs;!lver dRnOps; Oi1ta4B4;ao4ZPf3B3lOmu515sa4L5;ar29Z;ig301; sriWanta5H9ce 5BXlRn O;bo4QXhe56Xn43PratrKsiPtO;ownse5D5;ngle58A; maR'QmanPsO; t4VY;! cry51X;s 35C;y cL; pras5CO;ed4PKing4PKmentO; 2JTal O;coordination3HLps3V1;da57Fnaga5CS;a335p41C;s exXtO;erUschO;e RlandO;-Oli5BU;classO; c2GD;baOma5CGtelek4VSw4Q0;hn,nk;aOi518ocanonical b56E;go3J7;! O;mac23P;eQroitO;! O;l59Mmetropolitan543pis25Ure1BU;ctPrminO;a4ZXi56S;iOor1G4;ve4LM; o0X2ali0DZc0Cert08haun07i00ktopZmond YpWse5GBtO;inRroyO; allOer; mO;ons3NT; daniel cre4IIationQy'sO; cO;hi5EK; w0EE;aci4XMerate housew19DicablO;e 5FS;do5ESho1FJtu4EL; c3UF; TderSgnOlu 2OY; Oated marksman3H4ingZH;pattPtO;hin50W;erN;a5G1io alberto arnaz 5BN;arn2QM; wa3QY;! PiO;fi4FBon;cOe3L0;li4V6;endants ofPriptiveO; s2ER; theO; s5EQ; ring des nibelu03by02eUmToSrPvla kirw1yck whiO;blE;en1S3ick PyO;! g1K6;goBh1HGlEJro5DNth3FK;n 20V;at3LNot mu1HH;a2HZk O;and the domin56VcRdeQjPkol3IVmu566pri26QranOtr3TS;daC;aco39Ret0;a4ASlga3PZ;a584hO;auv4iO;soG;!s1BA;ng5;aVeRleted uraVKortivo Pp v news group newspapersOth1J9; ltd;alavOde la coruF3;és;che mo38CndenOrsona2HL;cy inOt and independentSB;j476versO;ion3GF;rtmentOu1AY; s40Js0MI;do4A5ntO;ayOo4NL; wi2WO;a0Ng0Lholm 0Ki0Bmark09nVsitySverQzel O;c4SYv18TwashingtO;on4GA;! O;bronc565in524nug332;! O;funcOof5AJ;tional 2WP;is Qy O;dOl42Q;oh3IL;bergXfaWhUmi559ni31YprRqQrPwO;a82e4TPi4HB;ad0it0KAo49W;ua5BK;ag0iO;esO;tlE;aOo2IA;ste5E5ys4WG;ri4ZC;ka3JX;! 47O–nO;orwK; avdi466al-of-servi1AZm,sO; Re PoO;n 36Pv1;cOho,ri37Bvan 0XD;o50Tr1YG;didQl2C1o'08Wth0VNvPzO;ak400;illen0S5;er5DZ;el54O; xiao0UBueO; f2G7;li,turedOzi1DI; alcoh5CS;ar0Ye0Ui0RoO;cr0EgraphQnO;! O's sou5BCd 0MSo4MFym;coBda460;icRyO;! of O;au0PMthe O;n2B5u02X; tran0CVs of O;b03c02eu4LXf01g00h2SUiZj076me0E9n1LZpo569rYsRtOu34X;he PuO;rkE;un504w5BP;eRiQoOpa4w0KC;uth O;af3LTk0FN;ngapoB;xual oO;riO;en3TA;om0UZu49A;ndAs50Tta4XK;e42Pr04D;in55Vr3RB;a1QJhi4Y6;aPrOu1LV;az4PN;ngla3PA;aOitD;cyXticO; O-republican567;backsli4QDkampuch56MpSrepublic of PsocialisOunion0DU;m,t1JE;aPthO;e c284;fg4NP;aOrogressive561;rtyO; ofRV;! i5BT-dictatorship5BS; Pan maAlOur4UIán bich58K;itarized0NY;lova4U0m0XE;ntiaQtO;er,rO;ess 4EDious168;! with lewy bo2HA; deroz1ai Qcus couPyius O;th3CG;siN;grK;! 0Ea0Ae 09ft06hi02iYlWoVphiUroy StOu4XZ;aPoidO; musc7; Oru6;air 3W2b468f388goodr440;g47GlO;in4IO;! 5AL;itHnt58I;! Oa r1QS;c4Q8lat391optiD3;riumQverO;an5AYoo,yO; he4ZY;! tremeN;! O–mumbai expresswK;mPsO;ulta11S;et4ZT;! universityO; of O;te2LK;al527;unay trianQwareO;! confederate moO;nu4LD;gu3S0;in cylindrical and spherical coordin4YDm0WEs02B;dre 445nonyQonPsm,ty,veson figueiO;re4I1; s22A;chD; XaWc2enQinitePorestOt591; ke3A1a56Q; m4RAly may3CZ;ce Se2LFse O;iPof O;sihang14Vthe anci56H;ntelligenO;ce 0MS;m3C0research and development1BJ;ma56Iult mode308;jam Olep3F;record57N; Wbo samuIpOz0; RakQfa4CEika padukoPl transl4UJmi56Wwater horizon oil sO;piC;ne546; c4R3;insa2X9learningQpurple43Vrock gal0B2sOvein thromb3Q6w2RC;iOou4SO;lv0;! super samp536;bradley16Pdee raOsn3QD;mo6; morQeOuc50T; g2O5e pfO;ei3FT;oz;a09e02iWlaQoO;lo252mpressionOn37Kupl55M; sick599;n 3I1ratiO;on of the rights of man and of theQveO; pO;rogram4CJ; cO;itiz5;bImalSsionO; treeO-ma4VB;! O;leO;ar50F;! separ4TR;mbrist2FZntralO;a562izO;a55Jed O;aPex2PTfO;in3OD;pOutonomous24H;pli49L;pi3Q5tO;hl2;b02iWorQra Ot-trap diploD6ut31N;jo ru454mOwi4SA;es4YDo03Q;ah Ora-lee fur58K;ann woCch57GfRke52QmeQsPvan valkenO;bur53B;an0SGn8E;ad5;alc3WR; m397anRtO; Ps and creO;di556;ca575;! O;ve3K8;ie Py O;ry1;a4GAgi50VhPrO;e0CYo0XJ;arL;d0Ul with0Sn0Jr evan ha3LXthO; Rlo4GQsO; Otro4AQ;due toOof kris kremers and lisanne fro2; the chernobyl4YV;and state funeral of0Cb09cab for c08e3Y9gri4JJm07noHoRpQrow32DstOva37Yzo6;ar,rO;an4MR;a2SHro48O;f On the ni7;a00bZcYdavid b3HHelisa l55TjVkendrick12XmQsO;teve i1TOushaO;nt singh rajp32Z;arilynQiO;chaelO; j4AU; moO;nr3VE;amesPeffrey eO;ps496; co4ZF;aylee0R8hristine daceGleop2E4;enito21Grian w3JZ; sale4CDdOyr2KD;olf3XH;arch to the parallel world r1K7etM;ut564;ecomes h0y O;bOcocon32J;ur4YR; joseph stO;al4; S-charlesPa3DVdreO; h3E1; cO;haO;pm1;cQja1WIma3DRno0X4paul3DQstoPwO;in3FW;ck3YX;a4orC; theO; d1X7; SlPpoolOsh58Cwater feC;! and korg rea4JB;iOoJ;est pandemicsOft; in3IS;by dayl54TcRha53Yis50Wkenned40Hman'sQpoets 1Q7ri4WJseaO;! scrO;ol55Q; sw4W4;an d3M8el55O;bQhavilland Ola 1MAmorgan'sZIstijl;c2DRmosqui4PEvO;am4SZ;ee55N;r sdr54It;animated Rblack l0Y7co32DeQf26Kleague of super-Pm14VuniverseO;! animated original1WJ;pe539;n4HGx0G8;movie4RXu4RY; na8b9Oc9Ld9Ke9Jf9Hg9Eh9Di92k8Yl8Lm83n5Aphne 59r41s3Tt3Eu3Bv05w00x sheZyQzO;n,zle camoufO;la4PJ; oVbUlight savinTmond Ss O;go6of O;being25DoOt3SM;urO; l10P;jo2M1;g 572;rea3PK;f t1GS;pa54U;n Qood ibPsonO;'s27K;rah4KX;fr0U7oOw3IE;f20Bliv4OX;a2Re2BiPy O;croc12Wjones' 1XD;d Vesia TnQs O;c4OIen4GTguggOm4PG;en0QB;a mcPci resol4W0soO;n s41J;caC;de4YscO;hwarzene1V1;a1Xb1Oc1Dd19e18f13g0Xh0Ri0Qj0Pk0Kl0Em08n2C8o06p00rVsStQvise0O9wOy4TQ;aOe3CW;ll3G6y6;eOhewlFrezegu52W;n2Z5pp0;chwi3T3ePhu1TAiOo34Ppa3U4trathai4VXu2NE;l45Cm2ro56V;am1d3M7;aRe1JLiQoOu2PZyaC;bi4YUcO;kefe4XF;c58zz44K;sc4US;aRetr1P6oProO;d3YRw54O;l2G5rO;tn3TU;cko3YCrkerOsque4WV; rK;gden st4KZrt8NyeloO;wo;am52EccRiQoOu52A;rOy3;ri537se;scavi4O5;a3HHorO;miJ;eRiPloydO9u8FynO;ch4ZB;nd5vO;ings3YF;an,e ro4NTit4U6tO;te3SF;a35HoQrO;o54NumhO;ol4Y7;ch,eOre4X7;c1R6pp;as2us50D;c476r3LJ;aRe1HCil4O0oQu55Gyde O;piO;er54Q;cknEr136;r07JsselO;ho4NI;eSiQoPra0IuO;et55Qlpil4I9;g3GHw0;lOno54U;mo4LM;ff5st;iRosterPrOur4WQ;o51Xum;! O;wal4OF;lo,nch4NA;ig45Cll40L;astmalc2GBePin3AUobr407ra4CKuO;chov407ke; g4Z0nO;c404m1;aUhSoQroOu33U;n456sO;by,s;pOsta27Cult52Kver2SI;pe3GJ;aOoe;ng,se;ge,mQrPsO;si4NPtañe52S;raTUu42L;er2;aUeSiRl3T3oQrOurt49Kyr6;om38CucO;kn0;hm,i3n0MGrean2FJwie3XQ;eb0;c1Y1nOrko46P;-gu48Vio4MK;ddiIilElOszuc4MY;dWEe;lQrPttenborouOy0;gh4XS;c4NHqu45L;a4LNlan c3QZ; QedOy boy3Y6; dO;ig511;aZbYcVfUgTlRmPnavOr1R0;ar4SF;atthewsOccaLust3SL;! FF;a3XHeO;e tr47Bge4BJ;ah1ro2WC;i007olEr1WE;alPhO;app4DFis036;ho539l1WP;aut44Oru3JH;nn4ZIr51W;nteOo 3BB; a36V;ghter Ophin0BN;from another2MSof theO; wo48Y;aUe PuraO;! stramoKC;aPforma2GVof birth WZpa4Z6withO; the0A1; 4SRnd time notO;atO;ion IR; QbO;ase Or20H;n268sche4VO;an3HUcQe4GZlink l4IVmi4TSsPty4RLvisOw0XA;ua267;ci50Vt2TZ;e40BomO;pr2WF; UhPsault O;av36Omirage1W6rafa7;!aQiO;!ell haO;mme4U9; nekra3YIvaO;taG;bo53FkET; es sala4ZYa0Uby 2JKi0Qjee4VMk08l06on mala05pa,rWtTumaSvaza gas 05GwinRyl O;dPhaOj209sa0NZ;ll,nn4T3;i44Kr2E2; núñ4VSi4TH; doC;h PitFmouth3KGs wO;orldOK;ma310v0VH;ePyl stinO;glE;ll bTnO; Ot 1OD;aronofs41Eba3ZJcQmcgPpa8sOtiC;h1WSt9;av4;ri51J;eveC;ki1;ene Oing in the franEL;c4PKlo4RP; X-sky prVeTly dreaming deSm1netQsO;e4ZVi3EStO;al3KT;! mO;ark4YO;xt0;r thOst d49O;an2C5;esO;er4RF;aSenRfa3O6horse co2WZma338sOtri4Y0w2IU;h2JFidePoulsO;! 2BZ; of the 4EO;er4B4l4B7;cPvO;en4UP;ad4LM;a sav3WZo QusOén g31C; Oz wo0CA;ru2GXt46L;a2P8franchit3OE; khosrowsha4PFz;du mau47Bzuni3YM; 1Xa1Nc1Hdy,e1Fg1Ci07nRse macabBtOu33Oy ga48J;dm,e O;aligh4JPbOgabriel ross3O8;as4NW;i01y O;ai4SZboYcareXdVel4T4gl1K8hu3Z9in4YHjohn-j3KYkaUlTmSpRrQst3YBtPwO;el3H8;h31Xre18Q;ol4U5;hant4GTi491o4HZu4PG;as4G1cb3IV;loXU;meko4MUye;eOrinkw3QNy0;vi4J4;!y;naOy7;du50K;elynn biOi min2NX;rk4X2; a1H7ca 0QelRil Psh O;k40Dla49QrK2;kvy4MTmO;edved4TA; Ta melchi4XQlO;a2S2e O;br4R0cQdeadw469mPpanab10UroseOs0LE; r1RT;ac3GY;a41Zol4W4;b0Cc0Bd06e04g02he3QOinou25Hj1Y7ka00lYm2FMnegrXoWpeVrTsQwPzovO;at4IN;eb4QRu;nPtuOunja519;rr4IO;yd0;adcliffe42MicciO;ar47K;a0JQmbeQM;'dN2r3NI;ea1PJ;aOog1;rus3YJ;hn3GSluu48FwO;czyXO;ilO;li3;k,lls4J6spO;ino4I0;aPeOu3VZ;f3N3n42R;ePy-lO;ewF; k4E8;ormi0ra3WF;aPe1Roo6rO;a32Zü2SK;lOrenbo4E4;a412dw4;mcke2G6pO;at35V;anron46AerO; f2WDous liaiO;soN; Ol4P0;co4QSdeha1;eQing O;m0I0oOpallbeare4XY;n i4Z5; mP-p47GhaCrJHs with O;wo1FT;o4Y1us509; Oher3ICi guriG;aUbScaRdelQhiCpPrOter4Y1w38O;ee4OY;e00la4HF;a3UVoren4O7;rvE;aOrun3M4;rr2sh;ndO;re4QG;a03b02c00fogYgiXhUmaTnig4NSorlo3BMpeSqu4PrQsOw38F;chOeSQim3TXte26Z;ne3F9u1LN;a4L7eO;ev3yn035;ña;ri46U;a37TenPoO;ok0us0;de4DT;lr3MV;elOl0;be4HWm1;aOren2E3;mp41Arl4stellane4ZI;il4I4lo2E4on0IDro4W6u4OI;nd frankPyO;kroVE; ca4KP;!ascus03e01iSoOpi8;cl3n O;alba4OChPlindel3YNwO;ayaN;err46EiC;anQen O;chaz48BhO;a0NRir4VJ; Oo0C7;grammat0ZLhRlPprOw0CY;ie4VG;ewFilO;la4WE;a0NLu092;! commanderO; oHY;! O;go4K5s0IU;ai la4QQeXiWlasSmRton O;ga8sOtr25;chO;ul4QX;atA; P–fort worth metroO;pl4XS;buyers0U5cow1WFdupree1TEj22NmOs132;aver1VA; and cocky0WSa kadda,da,t; Ok;car3A5d22PeaO;rn44L; pres2LTarPota O;f2TCj4QI;! rO;al4IQ;hXk2lyUmTry SsOzen m40S;uke Py O;edgar0C5ri4RW;namiOo45F;ka41V;caODp0EEq3TW;ler 434yo; Omo4TF;bug7e18ZmO;a4AOi19W;at3JW;omEy4X2; hammarskjö4WAe48Ygubati–akkinen310marOon,uerreo4LU;a domińO;cz3Z5;fy One ke5t LY;duJ; jang ge4IBd40Fgu,mon t6Lnerys targary5;'sZPa,dy yank4PA;hPiaO;! du4NB;au2DWshu4TJ;a4SJbs gQneyOo swi3N4; cO;ol3DJ;re0;aOonta for3DH;ngeloPrcy wO;reUH;! r1NZ; 0OW++,-0OVa0ALb0AKc0AId0AEe07QhRPiPGkKlLKmLHnLFo61p5Xr25ss,t22u0Nvs phar0MyVzechQádPéOú chulai4FI;line sciam4PEsar azpilicue4XJ;iz; RoslovakOs; Oia;socialiO;st1ZX;koru4IDla45Ir3LB;an0Cb06c03d char4Zmbopog2n00pXrSsticRtoO;kineOmegalov2AB;! sO;to4JS; fibr3CC;ano de berger2V4ilOus41H; Plic O;alphabe4SIsc2SJ;abitebo2UXgOramapho4EA;ra1JE;herL1rO;essOus;! 1YR;di laPet3thia O;da16De2ZAleNMn3UTroth4FW;up0;ad,lO;e det3OYic redundancy cheJoO;benzap400ne,th3R5;eOill s1RZo4F5;le,rO;bull30KcQne2T1punkOsecurity 3H6;! derivO;at0PS;ri4W7;!i0GPoO;bact01N;ma33S;b0Vc0Tda,e0Sl0Em0Cn0Ap08rXsStO;ieQtO;ing Ole34J;cr3IT; h3J0s; d'Rco,hPtO;a4TRomer relationship 2TV; jOing's4FJ;um1FM;ama4DN;aç43Sb your enthusia4MGc0PMiosity Xly 0SRrWsStO; Qis O;blayd3lemKma248sli3ZTyO;arv4;h3BSs44N;e Oi4KZ;and mark of Pof O;dimensi07h4SM;ca4;ency 3VJiculum vit4HOy0RF;st4SI;cak3X7he4RFidOping 00A;! and psyc4K1;arOeiWOni48At;d 4IP; OaNbrAin,ulative distributio4GC;sh4VTto4SJ;linan00tO;! UurO;al SeO; Pd O;me4GY;cl1S0of Ose4MI;i43BjP8t0MP;appropr2YOmarxism1IOre0DO;fQoO;f persO;ona2CA;i4QOolloO;wi8; d1B3; 1QYva4GF;koOu4P7;ld,o; sTaQiOo4SE;c Osm;crysta0I2eq2LGzirc324;!n O;missilOre0DA;e 0RA;wa4N8; sc1esiph2hulhuOvWJ;! mythosO;! d37Z;a2Xe2Ci18o0Iu07yO;e38Yo31JptVsOt3RP;is,talO; Odisk3Q2;cas4ECdy12RgRoQrPsO;kuCt2L6;ad3SQe4PR;scill4E8;ay7;analysis of the enXoO;currencRgraphOkit4PCp3HVzoo43F;ic Oy;hash 4F8nO;on4TK;i3yO;! O;buPex2A5waO;ll4QJ;bb7;ig4ME;cifixNFelUiseSnchyrollRsOx;adeOta2OL;r Os;kings1MZst4H4ta3TO;! anim0N; Or;m3ZNsh464; intQla de v46UtyO; sO;qu4PP;ent4N6;atia07c04hn3GVis2XJm03n02p4PYre,ssUwOyd2;!dSn O;heights 2BQjewel3NoPprince O;hyomyTJmunh3ZTsa40J;f cO;asti7;ed4S0fun47F; T-Pb4RGfiOing the rub2QNra46Jwo4RD;r4T2t;co28DdrQorigin resource sha465plPsite O;request forAQscrip4TS;atUN;es4I6;entOof saint p4FKp09Z;ro4T2;!us;weO3ā;h4POodilOs;eOia;! dund4L2;! 3N1n O;la41RwO;arO; ofO; iO;ndepend4QN;b01Bc0Mm0Aps,sXtiO;cOque of pure4PI;al Rism Ps' choice moviO;e 3IJ;of faO;ceCN;path 4ROrPthO;eoLin4E3;acOo7;e 2B8; cYis VpTtO;ero3MJiO;ano ronQnO; milio3F9a O;fernández de kirc1E9v4KH;al3ZH;in gl1B8rO;! gene edi4SV;in venezPoO;f the third centuLn earth-x;ue4S3;a4LLollin3IZyO;bo4B7;eRinal QsonO;! O;d2CQpe3ON;l4HDmMU; RaOs0C5;!n O;kOta0X2w9;ha0IH;and 3Sbo4R6fi4CIin O;chPn10Zsan francOt40V;is4ED;ica3GD;buRketO;! O;b4DPwO;orld43V;zz;a01dit YeUma4NLole TtPuO;tzfeldt–jakob495;aceousOe;!–paleogeneO; extincO;ti08T;la40Cp277;! QdOpypas4S6; Oence clearwater revival3KY;bra3U8ii;su3EA;default sw2R2k4JWsO;coBuO;is4Q1;m WVtiO;ne,onX4vO;e Oi4L6;aPcommonsOde2OP;! l2Q2;rtists 03AsO;se0AW;b 03ck coc3FVdle of 01igWmerUnb0OEps,sh TySzy O;exQfr425hOrich as4GF;ea4RIorseO;! memo0M5;-gT0;fi4ITon shin-4GV;bandico4RLlanding on3IQ;'sO; ru7; PsO;li4NV;chPd0EZf3OYof the1RMsO;he2WFteveIZ;arl3;cOfil491;ivi1TT;ga4QVnO;ebu4QH;uOy1S2; O-z;cOso0YP;ac4FA;aEXbEVcEFdE4eDZffeDWgnDQhen'sDOiDIlB0m7Un3Zo3Pp37r1Rs1Bt13u05vVwSxPyoHzO;umIy0QD; enO;terprO;is3; tPboyOin;! beb3Y7;oo4OJ;aTeOfe4QBid;ntLrO;age of google strPtO; affai4OI;eet O;vi3D5;lent QriancePxO;!in;! m46J;bo4MF;gar0Jlomb3B0nYpWrQsO;coDinO; marria48E;age the cowardly40YseGtO; ReQney O;e4HNfo4NWhenggN5lo4FDsto3G8thorneO;-s3YZ;ney3RAs1;of ow4O0tv mys4JV; dOe de 0XO;'ét4BNe grâ4P9;cil o04tO; d01er-1ViXrQy dO;on0Y3uO;rh4MT;ieRyO; Ob34Y;code top-lOjoe277m3AZp3XEroJ;evel doma4;s O;ofO; tFC;es of Png cO;a4NOro4GK;e45NiO;re4IN;ooOracu4P4;ku;f Pn foreignO; rR3;chalc411eu3Y6tO;hIDre494;! O;to4MG;e de pUswT3tO;ageSonO; O-eyed2DC;bowlOg4; cO;lass4PN; UGcoB;ab4GI;i01mUplKs13JtOw40Q; of electricity by Ra Oco;concordOri3DZ;iaO;! d4EU;soO;ur4O7;e2LLic RoO; kPlogOs;ical 21Sy;ram0;microwave backOrKs4;grO;ou4KV;mo de'039ne simiO;la3XS;a10b0Zd0We0Sfu,i0Om0Jn0Dona09pXrTsi3DLtRuF7vQy O;bo3YImontOwo8;ei46N;etHid4AMus;a49YiO;co33As4NU;elationQie ten bo43SuptO;ed bloodXFionO;! perceptions4NV;! does not imply cau0P3;oraRse O;b35QhOp4HZro4K7;usO;ba4KF;lTtO;e PiO;on,sm;govern32PsocialOtS1; responO;si1NJ;! O;punish3Y4;ry arteJQtion PvO;ac,irD;oOst4KB;f elizabeth 4JZ; st1QXeRisQwallO;! cO;ap26T;h 3WD;d beQ2lO; 4KJius2El 2GQ;ac QoranO; Ot;stri3PC;mcO;ca2Z8;a3G8nOolis2JX;ne Oth;foO;xx;ldr4CJy O;fPhaOreR8s1AItaKE;im,rr3J0w2TA;el3J7;arrelleOed ware0AC; pO;at41W;ev3Z7in ber303;lOzon aqui3UT; Oi6;ca3CCrePH; 04a 03enhagen00pXrVsh3UTtSyO;le2RTrightPwO;ri4NF;! O;infrin2L1sy3N1term extensP4;ic Os;la3VLorO;thodox2EO;opO;hilA;a it3EYerOola family 4B0;! peptide ghk-O;cu;! O;a4AOiO;nterpre336;amé2VKdel rElibertad3NK;la4IVu479;ber pe45QkTlQper Prdinated universO;al 4ML;h4E4ku3I3m2HX; Oio;hand lu3O8ruO;nn4JE; QiO;eOng ba2X4;! c21I;i3KIpartisan voti7F; a4IOan 3Ec38d31e30f2Mg2Ii2Hj2Dn27or 23quist2WUrad 22s0Ut02vSwayO; twKS's O;gameOl4BE; oO;f 4M2;eQolutionO;!alO; n2BJ;nience19GrOx 474;genPsion O;of paul1Q3thQW;ce ofPtO; e04K; randomO; varia3YF;a0De05iYrOumeliosus of ri4EW;aUoO;lQversial reddit cO;ommuO;ni4GV; Pled O;flight into ter46Tsubstances3X7;of fire by early2GYth249;ct Ol43Jpo0BOs;br43MkO;il4EC;guous3UFnO;ental SuO;a1SIity 2C7ousO; Ply variableO; t203;fu46Iinteg4H6uniform1DK;ar2GVdivide0MDph2ZW;mporary clTnt Pxt-free gO;ramm9;delivery2ATmO;anageO;menO;t 2MV;assicO;al36H;ctless pay3VCiO;ner 3XF;angui27Uc0Le0Figl0Eo0Cpiracy theor0BtXuO;eloTmerO;! Oi4BR;behavio41JelectronicsPprOs1K2;i009ot3DM;! O;sh4IX; vO;andO;erbi27T;anVellationUiOructed 3TH;pa4GKtuO;ent assemblRtionO;! of PalO; mo49A;i3SWt0CA;y 2BX;!-40N;ce wu,tinO; 4G9e Oop7;iOt3PExi palaiolog4CG; Oi O;ofO; grC5;ies about adolf hitler's2H3y;lidated pby cOna449;ata3EN;ieB;ns3D4rvatiO;on QsmOve party0Y4;! O;inMO;of0YPstO;atD;iTriptionO;! in O;sOt3SX;ouO;thO; kMS;enPoO;us4J1;ce,tiousO; obje46Pne4J0;hi3GHmu440vei3QI;gQlPmO;cgr1ER;esl4HM;al3QZ;ac4GWectSie Por O;be3XKjess41Jmcd07Rswind2VA;bPfrOn0L7sYR;ancF;oo41Tri3MA; 29Nic2DWu;oined7EuO;gate Onctiv2Q6;gradiOp326;ent 4IE;c0AHf0;eQo Press O;of vi1VFpo4CM;cr0G1f224;e,nital heart de1OD;eUiRuO;ciPsO;ion3ZL;a48Jus;dence Prmation O;bi4JC;intervMt2P2;ctioTderatPrenceO; u40T;e states Qion of O;african3LUtheO; r3FW;ar2EGof2RV;neL;y 27J;ensed mi0BNitionSoPé O;na4FS;leezza 2QQmOr;!iO;ni43Q; 3H9al O;expec2Z9p1I9;acafSePhata fer0VHor36Hre4EHubiO;na410;ntrated solPrO;neda46Zt for15;ar3XQ;! 09G;ex28YgrKoPthe O;barba41Qd2B3;'bO;ri5;a2Sb2Lca4FCe2Cfort2Bi22m14or12pO;a0Petition between airbus and bo0Oil0Nle0Io0Fre0Aton09utO;ational 04erOi8; Q-O;aided 3XTgenerated imaO;geL;aZcYdata034e3UZgWhVkeyb0MXmSn2P6programRsPviO;rDsi2;ci4FWeOo337;cu3RF;!mi8;e0JUoO;nOu4GO;it4EU;ard4AA;rapO;hi2P3;he4H2;ni3W2r2A3;complexQfluiO;d O;dy0Q7;it15H; h17A;hensive and progressive agreement for trans-pPssed naturalO; g4HW;acifO;ic partnO;er3TY;sOund inte33E;er,ite O;index of national capa1H4m0CJ;mentQx O;conju3XLnu4BVpost-tOsystem0DG;raumatic stress2IH; 2J3ary coO;lo4FM;ation of final fantasy v4DKer;ei8;ct XnSrOss;ison of Otmental models in epidem22I;bittorrentPfileAKlinux distribOonline dating32YsshPtop chess players throughout2SDvirtual reality headse4D7;ut4AR; cli4CV;ion of Oy rule 3PD;hQthe order of sO;t michael and stO; ge0TU;ono3XM;c9di3KLexecutiveOsBK; c9;biOos2B1;di4AS;a0Fe0CoWuniO;ca3Y3sPtyO;! of20D;m,t O;i2Y3party Os1ZN;of Ou3YJ;cu3YBge36Ti3P0the O;r2KQsO;oviet9W;d02nO; Rwealth O;ba3GGg3FUof PrO;ea4CC;e3WSindependent43Tn4A2;aUco4FCeTgateway2DKl45QnRost22UraPsecurity and defenceO; poli2OA;cOv5;coon3RE;ightinO;ga7;ra,uropean framework of reference for3QW;dmissO;ioO;n 2YI;i4A3us;dia dell'Prcial O;bankV1so318v0MR;arH;!-separated3XRndO;-line2D5er O;ke5oO;f the order of the brO;itisO;h 41I;cUk4CIngPx waveO; f1F5; O-of-age4F7;homePofOto2OT; a3Y8; in O;the da4BY; Os;bo46R; wom5; VdPtO;! hale–bo3BA;ians in cars getting coSyO;! P-dO;ra481;centralOfi4BBho0RW;! r32M;ff47H;and36Qfrom 49R;inOus4B9;atRed O;dPsO;tatistical 1ZC;na index 2H0rug i3FA;i2oO;ri2MF;!nc43X; nee2PHby covi327chi33Fd1Ze1Tg28Ai1Ll0Vm0QoZsonYtTumbO;iOo;aOd41Ene high school135;! O-3IS;pi2K1rOsportswe9un2X4;ec444iv0; Q's manufacturi35Von O;du3XKhaOuWD;yn3;mcc32Tsingle acO;tionHC; white4AX;gne010mb0Bn02rRssPurO; index2W4e43X;al sOe3ZTus of rh2D0;qu4CG; SadoQectO;al O;ca44E;! O-0YH;avalanc43Cr49Q;blind4DRcomment3YLdep3WVps2T4renderiSs96tOw3ZY;eOh1X8;le1XLmO;peO;ra41I;ng4E4;el UiQsay1WAy of vO;irgO;inA;aPzation ofO; ma4CL; dignid4ADlO; historyGRi452;r1V5s15Ktom O;pa15E;iaPoO;! c0P6;! 385n2A0; Qan O;domO;in32I;feoBmeO;anE;a04eOin ch35Qoqu2X1;ctive 01en YgeO; Ohum4AR;anTbaSfootballO;! O;national championships in ncaa division i f2IUplayoffO;! nationO;al 3Q2;sket3GO;d universityO; rO;ank4AP;balPca2JVo'shaughOwi8;ne4B1;li3WE;security treaty18FunconscO;ioD;g5pse of the wTtO;eralPzO; conj3KY; Oized debt obli1NA;beO;au478;orld tradO;e O;ce3AI;n Oseum alfonso pér46C;dTfSh1OWjo4A7kaeperRleQmOpo34Asalm2trevo0O0;cr3ZGoO;c25Lrg1;akE;niJ;ar0PXir3VC;on004; QsO; superO;mar40I;haPpo469sOtu1S7;pr4BJ;us0; QplPstreamO; gu3JO;ay368;ca4BFfPpurO;su49C;e49Au3YW;lg4CAmba2YUnQtal alignment O;technO;iq417; flPba4B9s of the united statesOtelp414; do1SU;ipTJ; kO;ap3IX;ac,iO;tiOza3WD;on,ve O;bPdisOps2QWs1MS;son2R3;ehavioral H9i4CK;a arabi31GeO;! Oh4AW;be1la3E3stain 0RV;fficient of QlOn brothers45W;acOiac3TM;an3UF;deterA6pOvar2FT;erform2QU;!eRy O;garOko,rh2A9s208;brO;an3IP; ScQfo1OUi6mPxO;! gig4C6;as2JX;aOhEC;de27E;gea4B0of hammuOrefacto3ONve4;ra26Q;a01cinell00kWoPteauO; twiN; Ra 3OZmQnutO;! O;cr22No3OT;el2;auPchO;anI;st4; QatPnErOta3OO;oa404;iIoo;and ballCGri8;id3XO;!-co4B6ineO;! 2VG;a1YDie smul2NXol,raOy0TP;! k405;chQgu2S7tPxialO; c475; of 49Ni; 0QDella valley music and arts138; t3QEame Obc,id2XQn,ut3G2;re2G9; Pos,ykO; color2VL;pu3AX;a1Ve19i0HoWuOyde drexl0émence poé2XA;bQePj-napo305ster O;an2PN;do,le4A4; Pe O;atlético min35Ide regatas do flamen2ZC;atlético r1BFbrugge kv,pO;enO;gu4;juBmife6n05pidogrIris le04seWthing227udRvOwn;eOis3C5;!rO;f2MOw2VX; PfO;laB;cPsO;ee3OL;ompu4B1; RdO; P-circuiO;t 022;be4B2ci44B;enPquarters battle reO;ce45H;counters of the third Oou44B;ki46O;ac3SR;azPiO;di6;ep47D;c0Cent–server2UPff06mate YnSp studio pRtQve O;ba11CcusOd3DOow5;sl0;orF;ai3U0;icalStO; PonO; body c2D6–lewinsky 44K;eastwOho09Wwa2ZI;ood43M; ps2OF;changeTof QpledgO;e aO;re3VG;auMDi3I3tO;he uO;nited266;! miO;ti1JK; Pord the big rO;ed3KM;buQcu3SRmaPrO;ichard330o2L5;rtin42N;rt2;hé,kO;baOte46M;it,nk;a03f,mWopatraZKtus kaVveO;landOr haN;! O;brRcaval3OFgQtorsoO; murdO;er0;uard3YJ;owN;sa3SF;entQson O;tOun2R6;ige18K; attl413ineO;! O;barn255chO;urc1BD; dSnRr channel memoraQvon O;liO;tt7;nd3TW; baS7;uvaC;es 9Air14n12r0Rs05uRyO; OmoB;aOmatthews11X;ik5;dOs von stauff397;eViO;a Pne long457oOus; ran3QT;b1IQcardiRjeQk3MQschi2E6wO;el46QiO;nkl2OY;ss46E;na7; Otte col3R5;a2EGdebus2UOlévi-sQmon44Zr262sO;haO;nn2;tr30U;h of c08sO; 05ful1XUiQless inter-domain rou48RroomO;! of the eO;liH;cQficationO; of Os of fai3ZM;de32Tindian43Asw3X7; Xal O;antiqVco3EKeD9grUhollywoodSlQmO;eOus48Q;cha2F5;ibeO;ra2RQ; cO;ine40E;ee47D;ui41Q;chinese noOmac 3ZT;ve45Z;c23OdO;ia25S;iviliz419laN;a Wence ViTkO; QeOson's fa3UT; pe2FN's threeO; la3YR;du39FgOjames g43HmiM7s3X9;ab7re2V8;n443ssa dicksoO;n 2GT;th281williams10N;b45Ios35IpetO;ac36V; Ocy0KFg;ca38L;e Oo,voy2M2;bSd20UfoQho1UCrOvan kamp5wi2H3;eOi212;df2J8;rOy;la3X3;lo3MO;ar1Tc1Qd0elab color1Ogar1Ll1Jn16p15r0Is0FtUudad jTvilO; PizationO;! v3GJ;e3JUrigh1WFserviceO;!sO; exa51;uár402;a07i00rVyO; Q-O;buildiOs1PR;ng 3R9;football3OOg0BZhu342index3OOof Op3EN;brusse44ZlPmanchester0ADwO;estmin3WV;i3o2MA;ic acidRoënQusO;! O;bo1BV;! 3VQ;! cP1;ba36Gg3OGzenO; 3NMshipO;! O;of thO;e eO;uropeanO; u3HG;del0MUt3CM;coPge2Z6sy hO;ou346; s3LO;cPque du sole3JFrh2M0yl O;ga6;a04e,le of fift1N3uO;it YlaUmPs taO;ve3VT;cisOf2QD;ionO;! O;ofO; j04O;rPtorO;y 27O; eO;co0LO;bRde O;mPspa-francorchO;am3GK;ona3S8;re05S;dian rhyt10YssiaO;!nO; Os;ge1XF;h0rofloxac4;cinnatiYdUemaQnaPque tO;erB;b9m2; Ot3Z9x;of Oparadi33N;i3DRjOt3ED;ap1;erellaQy O;cr04WmoOw07Q;rg1;! m1;! beO;arcats385nga43G;en3N7lO;a1FCian murphy38H;!etteO;!s afterO; s44U; sO;pa44K;a43DeO;lyOro; t0RX;aPán hO;in3U1; bKF;aAPe87h84i57l4Zm457o4Gr0Gth2KAuRvr43MyPâteau pétrDūO;ichi nagu2GZnibyō;ler9HnO;a,na0S3;b0Bck01kotka autonomous okr124m00nYpacabGrO;chOu3VR; QesPiO;ll 0HZ; of 3NN;f126of O;e3KVsPthe O;ea41Kholy sepulchB;at1cO;ienOot3XT;to3DR; doo-hw1gO;ha,king0FU;bawam3M0l3WF; PleO; 1AWfi3W5;bTconSgras256j42GlQnoPpalahni1BIschum0yeO;ag0;ll,rrF;idOorB;deC;no42G;aTDeO;rry2XK;a hub0YJu-nipp3BI;is06oSysO;anthQlerO;! O;bu0G9hemi9S;em3OZ;mVnO;ic SoO; Plogy of Os;j02It3OJ;c3KJtO;ri0SE;fatigue3NKobstructive pulmonaOtraumatic0BFwasting3L7;ry3L6;aRePi3OQoO;so43U; Obo3UPca40N;os,remote deskt3BGweb0R3; kEtO;i2SQog3XC; 23ann b21hell st20s1WtO;a m1Tchurch1Ri0Kmas0EophPy O;maJtur10J; waltz3X5eO; 2JAr O;at29Gbr09c07d05ecc04g3Y7hi03j02lZmSnol3X2pRrQsPtOwalk5;olki5;ca22Btreet2G1;ee3SSobin mil6;ao0WVlu2Q4oo7;aRc2JGeQintz-plPoltisO;an2Q0;as41V;lo3T3;rOs3HX;kus and stephen mcfOloRO;ee3O1;aPee,loO;yd;m3LQng1;ud3LE;tc3NT;le30S;orner shootings and manOun0ZU;hu3MT;oOro421;lumbD;ow3TF;! Oti2QM;and holidaQe3S7iPm2O5trOwith the kr1EF;ee,u427;n 2ZAs3VZ;y O;se3ZC;a08e br07nO;aYe O;baraWcUeberTg02Ghà,keSlaQmPtaO;yl3ZD;ax2TKcv40E;gOh2P8;ar2QA;el0;so7;hubOol0C1;buJ;ns3L2; O's412;aScr01Rgrimm405hRmi28Pon1VRpPrOto3T6;ic31O;azsiOer3YHi07K;tz314;aaJendr0ZE;guiOpple3I9;leG;in25W;an HQnO; RityOs;! O;by3AXin O;i3A7t3AT;a03b02c01dVeUhTixSka6l0XQmccafRpPsOwo427;ci3ZMl2RB;o2UNuO;lis42H;frE; of2XF;a2OJo38V;riks5;eOi3YI;mocratic unQnoO;miO;na3XF;ionO; of2PS;a3JWou34V;ale3V5r4U;ngelo3APpologe1YC;! mosquO;e shoot3YF;caulOi3SN;if41B;ie hyn2P5y O;coPme3U1teO;ig5;st0YD;au3ZU;reO;nn1;avelWFb0Mc0Id0He0Gf0Eg0Dh08isa2XLjeric2WFk06l04m01no3JDoZpXrVsRtQwOzyl36A;al3KMei2X2hOil3J9;it3UX;ar2WTu1GA;aQilvIEpPtaO;pl123;ed3EY;c2Q2ra2GG;eOoJ;a,df2CU;aOe3JEi6ra3S6;rNVtt5ul;'doOla3Q8;nNTwd;a26KccandHOeOu2HU;ledand3WZsOtz5;si3MA;a3THoweOy3J7;!ll;aOy7;maGtt1;aQePuO;gh3h6;dg3m2R6;df2CFns5rdO;wiJ;ar1EBo3JP;aB1oO;wl0;l3RMuNL;'347iamant3DIobE;hPlareJPoOuo2CD;lf0op0rNA;ibOr02E;naC;enoitOo3RXrown2TKum238;! double-murder an1M2; 03ct3PBe deok02i ZlSnRp suErPw Ozen tog34O;ch3Y4me4yun-f3LX;dOi3OS; p1TBaH;drichthy3gqi8;a1BTeOi6;ra,sO;kyOter3ZF; dO;ecomO;poO;si3VM;mi0ABsooPtaeOwoo-sh2V5ye-3LD;-jo2;-y279;-s4;kyu-37KmiPyeo-jO;eo8;-ye2;amydAoO;e SrQé8Zë O;grace more3S9seO;vig2UW;i6oOpromaAA;fo3MKphyC;bOfin2FTti8;a0MCenn3VX; r2UN-squared 2Ja2Gba t36Pc1Yef 1Pgorin0EUl1Fm1En08p01rWtQvalryOwetel ejiof3W6yo miya380șinău;! of a failedO; kn3WH;a Sin,on,rangada3T5tO;aQerl3W9y chittyO; bang O;ba8;go8;ri2OD;aQlane mccrKoO;n,prO;act3ZP;gOnjeevi3SO; pat3C4; k3DAko1OCotleRpendQsO; hO;ar3I4;al3;! mexicanO; gO;riC;a0Ich13Kese Pk,oOua ache20V; mo04E;a0Cba09c04d03e01folk 00guardian l3S9immigration toYla37GmWnUoTpe35CrSsRwaterPzO;odi1X7; tO;or3LM;up15K;emainder 0Y7o3E2;peG;a3YNeO;w R5;aOyt37O;rtial 18W; meO;xi3KS;re2IB;conomic reOxclus0J;fo3LF;em1ILr19L;alRhQiv26ComOui2I2;munO;ist3RZ;arac265;end9;skeO;tballO; assoc21P;ircraft carrier PstO;ro378;liao3OKshanO;do8;! S–O;pakistan economic corrQunited states O;rOtrade2RT;el3RC;id3UM;a3AVcSglobalRmiév2T0na2RSrich gPsouthernO; a3AU;irlfO;rie3U0; television1N7;entral P7h3VO;amanda ngozi adi3Ypanz3PL;dQe1RNi O;con cOpe121;ar6; Rb0V4renO; of P's online privacy protectO;ion38Z;bod3CWdu6m5;a3L8d35Ygroo2ZWlaPpoOsexual3L7;rn3R2;bo3DW;executiveTjusticeRkeQoOtechnologyT;f staff of the united statesOperatingS; ar1SR;ef; ofO; t361; oO;ffO;ic0;agoWhen it2YMkPoLxulub O;cr2MG; cT-filSenOp3R8; Op2YE;asPr3WItikkaO; masa3WO; fo3X6;-a;or3R2;! R-O;styleO; pO;iz2YA;bRcQdi3OXfire 303mePoutf3T9sO;ev5;d,tr1GJ;anMu21L;ea3UTlackh1GLul3UQ; Png Op3WRroscu3L1;kai-sh2TSm3LC;se3RY;d0OOte3TF;atPichOor3SN;hoB;rapati shivaji maharaj 3KAtisga1X2; gue1A4a23byshev20c1Vddar 1Ue1Qgg,hBk1Pl1Jm17n14o10q3KWr0Ls07t04u35MvQyenne O;brOj2YM;an33B;roPyO; c2XL;letOn2EZ;! O;bigWcUimTmaliSsPtO;ah2J1;ilveNFmPubuO;rb1;allS;bu;pa3VR;aOorv2XG;ma3KFp23V;-block1O; Pan Oni3M2;bhag3HPsh3OA;at21UbVTh17H;aYhireXsStO;er On1Q4y pu3N1;benni2IQreOw6D;ynO;ol3KR;! O;ope3M8pQrPtO;it7;at1X7;ie3V0;! c3HD; boPpeake O;bKsh2WG;ud4;ami01enkov0D8iZnSok3NEryPub,yl O;h3IQla1JFya8;! O;bloOj3TF;ss3AS;i2GKobO;og,ylO;! O;d3L8exclusion71liquida099nO;ew safePuclear power plantO;! sarcophagD; confine35C; o0Xe O;b0JNcu1L3; l07H;ljOngs3S4;onO;g O;of jose2;gPnaiO;! e069; xi32Xdu;iTmRoPtrailO; c0IGs over the countryQU;thO;era3UK;y O;al1IK;calPstO; wOPry; Os;bo3QVca154ePi1LZre366subO;st298;le34Q;sea QyabinskO;! O;mete3R8;cPf26Cg2XNhOm1PUper2H3winA1;an2OW;li25S;a,hov'sYA;chQseOt3KL; sOca2W2;andML; m071;ch09D;hPkO; 2PSe3SC;enOn324; republic of ichkOs;erA; O's7Z;polynomO;ia3S3;p t1ZVtO; e28E; 4JceTBd4Be48gas3B9i3Zk3Yl3Sm3On35os 34p2YrVsStQuvi3J7v,zO; bo31Jz palminO;te3Q2;b3UCroOsworth3SCurbaH;ul2V8;e Otity02L;at0UEba2TJstO;ok3;acter2Gc2Dd,g2Ai24lTmRo000terO; Ped financial anO;aly3QJ;commun37K;ed,iO;an ca3MTn9;e0Ti01otteOton he2RAyne 1AG; P'sOsville car03V; w1AA;br1Y2cXdouglaWfVgaThorSkemp mu1LXof mecklenburg-stre0VYrO;aQiO;lEtO;ch3R6;e,mp3M2;ne3P7;insO;bou3C4;c,la3PL;s 3H1;h1KZordK; 0DePze thO;er0F5; Q'sO; aO;nge3R4;and the chocolate 07b04c00daYhUk230mSpQro3RKsPwO;at3OVeF;he5;aOlu2FNu3B3;rk0ti30J;c25IuO;ng0rp3MJ;eOunn3PV;at2bdoO; sO;hoo3T4;nOy;ie3QR;a1RIhPox,rO;ess2JLi3PI;aplOe0VE;in3M5;ak0rO;ew0oO;ok0wn;fac3RR;balti3LQdOxcx;'amel2QR;m0Rne ti2OYs O;aznavo38Ub0Nco19Td0Ke0Jfrancis swee2NOgr19Hh0Ii0Cko3GVl05m02n01o00pon1SLroYsVthe ba3R3viTwRxO;!ii oO;f swO;ed5;hiOoo39A;tm1; o08iO; o07i06;aaPchwab2ATobhr382pOta1EB;ur2ZN;tc3FS;bertOck3OIv5; j0WI;liv2PC;elson re0M1g,jonZ8;aOi34U;ns2rtO;el,in3OC;aSeQiO;ghto3J0ndO;ber3LN;cleO;rc;ugO;ht2; of SiQn1PLv 15TxO; oO;f ZD; of Oi 15Q;e37Ps15R;a2HJe37O;arre2URos206;dward st1HA;aPe gaulle196icOur3HY;keN;n3QRrw4;aOoy0ro3JXu225;bOr1V2udel0DE;ba39L;ag6;otRsOty wak22K;e castro2L9ma cOsa0JV;arO;pe2OA;!sO; of 3ME;eOé d'affa09W; of the light briga2ES-coupledO; de0Q2;oPutO;er3OR;al,t–marie–tooth389; Wi0TWs O;in Sof the O;dc exQfinal fantasy vii 1THgrishav3BImO;arvel ciO;nematic3BE;tended3BD;romeo aOthe mario franchi3PA;ndO; juli3N5;en34J;elwSo trap3P4paquiddickPters and verses of theO; b0OZ; inO;ciO;de3AC;aiH;m3NWth190; sung 05a04ce02dVelUgRnOson de l'oiI5;el PingO; tat3BA;i2OIone 2MUtuO0;'1ePi3E9pengO; zh2YB;li8s in star wars re-rele0D1;! west2D8;igarhSler RraO; Pgupta maO;ur2Y4;wi2TE;bi8j3O4;! kare aashO;iq1WR; the ra0UFllor of O;ge2FZthe exchequ0;k2XXthip songkr2BY;ju8;ath palihapiti2XVeQoPpO;ag6ionnat 274s-élysé3;mi7;le2;cRd3JYking theQlengerO; deO;ep; do3MG;olO;ith3Q8;a 1L8ra;m UnSrO;man of the joint cOpe349;hiefsO; of sO;ta37Q; Osaw3KZ;ma32Hru7;tOwa17O;op3OT; sooPb3OSl sOy1WT;onn5;-b4; Owick bos25L;huTj3HSkroSloDOmRsPvO;ea3DQ;mi37CtaheO;ls37T;cq2LAichael RX;eg0;rlE;chaan PeO;un-w2RV;te8; mar3AAbu28cil26dr20e1Zl1Km1Jn0Co,phal0BrWsQtOu3PHvic3DK;ac3J3iriO;zi6;arPc fàbrOs3AEto3N3;eg3OZ; Pe bO;orgA;c29EmiVEroO;me3D5;am3PAb01eVnUseiStifiOv352;cateQed O;loverOpublic accoun11R; b2CE; autho2XT; lanO;ni3EJ;!unn3GE;al,bOmonial 34K;e204rO;al PospinalO; flu3LZ;cOp0JT;ort3NY;erD;ic3NUop3OI;k uyg34Ro0Ts0OtO;aur0Me0Hi0Gos,rRurO;i2y O;e2BRof hO;umil1RQ;al Ue-QiOo3LP;fugOpetOsm;al1KH;baJlO;eftO; pO;oli1KR;a03bYc3FUeuropeXintelligenceVlimiUn129pQtO;imeO; zo6;arkOo2BQr28U;! O;joggerOt32X; ca3MB;t 0NA;! O;ag1VD;!a3HS;a2NEoardO; of secondO;aryO; eO;du2NF;frican republicOme1WEsA;! c1VG;pe2B6;lla asia1Q8nRrO; ofPs for disease control and preO;ven3J3; ma3ME;a36Hnial olympic parkVI;!w3LZ;orshipQus in O;auO;str2FB;! O;in0AK;zo3NO; yılm0Y7e36W;a1PMeXiVlRtO;ic Os;bri0COl2XHmOn3GFw0A1;yt2W3; Qo,ulO;ar OitFo3LG;autom3EIn1TRrespi3IL;memb2G7nucleD;a i1UBne O;di2;bPry,steO; o3S; jih3IOrO;atory gun3HZityO;! sex2B;dee la2D6loPP;ic Ous;aQdigPthe enterO;ta1OL;goL;leO;xa2F6; Oia payne-gaposc2IJy 2J7;kell3GMrh1KI; PaO;no 2UZ;ci3G3p19Q; O-r31Pawg2LA;projektPtO;eneri3M4;! r3HL;h pou2EWlO;ean0;c DMee0KPgb,s;bDIche replacement poliDHdD8esCZfCXg3MLhokAiCJjuNlB2m9Yn80o7Yp76r2Gs16t05uWvRyPzzieO; dA3;enne Om2K5;pe0QF;alReOi9; Oto3J6;paOs3L8;in3MA;ier king charles spaVTry;cPlifl30ZsO;a133es of world war2N4;asShyO; d0DW–schwarzO; iO;neqO;ua12Y;ian 3K2usO;! 00J; 0M's cr0La0Hch me if you c1e0Efish0DhQn2XWoPskilOt7w08N;l 00H; the you349;a08erine Tie 2SDoOy2FK;de-ray 61lic O;b0JUchurchO;! O;by2UAsO;exual abuse084;ba39VdeYhoL6i2HSkeXmUoRpa3ELsc0OItQwPzetaO;-j3JC;ay6;aHhe2Q4;'1KFf Ox2LN;ar0WGvO;aloF;cPiO;ddl0M5;corXM;en0;'PnO;eu3AD; meO;di2KB;rOy p18C;i3BLsF;!i8; blanchett2MTgorOrpi110;ical impeOy 13C;ra312;comb1BClOn,ra2W9t1S4;an PonAyO;sFtic 1ZE;la2TCnu3F0;ad7;p2ZRsO;te0S8; anv9a0Vcad0Se0Lh0Ii0Gp0Cs03tQuO; mart227alties of the iO;raq2EE; ZawKeYile andXlTor SrO;atQoO;l performanO;ce3JY;i2o;and poll293o2XE;eOi8; Ov2I;bOin the00Arock 2UC;ra1N4; le1E6;! system 2SBllammar91;awKir2of 0; eVaTetteSiOowaL;ni–Pus O;sta169;huyO;geN; ta38B;ndra Ova;ha91pe2YL;lli3KE;ar david fried164er Pian O;s3E0t1JY;the friendly gOvan di5;ho3GO;miOno,o;r 0OP; Oew,mere wo3J5;a2F8tO;ruJ; Sin,mi381y O–shill3CY;affQdOkas2BTneist35Dwi2MV;esO;antF;leJ;bl37Yclos3EVsOwestern reserv1CI;tu32L;ePing style shO;ee3FA; r2SE;blO;an28D; 4Ca45b3Jc3Hd37e35g34har3AJi2Zl24m1Xn1Ko0Qp0Nr03son 01tRwood li2MFy O;elw3g2EYjoji O;fukO;una2G5;eShagRoonO;! O;network3AXsaO;lo2;e,o delenda e3FY;l,r Rsian O;cPpO;rodu2UH;oordinatDS;bur29Wre33U;k0V7pa25NwO;en3BJ;aJe18ViXoSy on O;at yourQcamPdiJgNVhL6regardO;le3HV;pi8; conveni3GE;ll Pm,tO;! t2QE;oPshO;el3DW;'conn3FC;a30VeRngtOon;onO; eO;ve32B; P-anneOr-grade n348; mo3HI;bQco2fi1YKha2EYj3AYl3FGsnodg2TGuO;ndO;er2P7;rad0XE;aOe di2AI;l tunnOthian X6;el31X;lRn kQ–kanO;n dO;ef3FT;ea3II; 04e 01inQyn O;bessette-Oj3G3;keU;a Ue QgiO;an O;d0TRem33F;f0RZkeQmPpolach2F4queO;nt4;un36A;nne30Z;gaitQhurric1B9pPreO;ap0;ant0O9;án;baPki8lO;aK5om0C0;sk4;bur2K4ch1D0dVii Rka6ly13Tof theQthPvorO;de24E;at2IG; b1T3;ofO; rO;omO;anA;an0L2weJ;ation Xegie mello0Z6ivQotO; cOa32Q;yc7;alRorO;a,ousO; pO;la311;! O;cruisOr3F4;e 34G;reO;voO;lu3CS;ePiO;l3GOne persi33B;loQn eO;jo25AlO;ectG; aO;nt009; 09a 07es puigde06i05oQy O;aquiOchaik4rae jeps5sim2;li2OE; 00s O;cXghoWhaTlehd0maRsPtO;ev39O;anOl2UP;ta325;c2BLrO;ín;nkPthO;coJ; gonzál39H;sn;asta17KoO;nd3CW;ancelOgambi2O0;ot230;s7to's1DK;mo304;b2J7guOju3CG;gi2NV;\"alfalfa\" sw2GNbenVfriedrich g28Mgustaf emil mannerUica0V6ju8lSmccu2YOnass2Y5pRrQsPtanzl0von clause2IKwOxvi gust2I2;e0DMi2JG;ag1chmi37E;e1I6o38Y;er1M1;innZ3uO;mb30V;he2U2;jKEz;bbeanQce vOna l2UA;an hO;out5;! O;n0DVs3A0;iCoUL;less whisp0s2R9y O;lo26Qmu015; Wam2V5captor0S2iPsO; against huma12F; b,ac ar21FffTnalPoO;pulmonary resusci1W5vascular2WZ; Oi39E;dPrichel1Q9vO;irtu3;ir285;! b0I0;co3FUga3FJsecurity 1IN;assOiG8;on6;i6oOuret3C5;hyd1WTnPxO;yl7Z;! RaPiO;c3CUfe06Y;ra,tedO; w24L;c00dioxideYfVmonoxiSnPsO;teI;anoPeO;utra0WE;tu1H4;deO;! pO;oi35I;iPootpO;ri2YS;be3D3;! in earth's atmoO;sp1MZ;apture andOyc7; sto1AE; Rbin2WWcaPvaOwK;gg2D4;lOs;!la;dOg36L;eOu6;leving6;cEPseat head20C; 0E4acit0Ec2TZe0Age1I7i02o01p00riZsWtPu22PyO;baG;ain Oc23Eure of the dutch fleet at den he0WS;a1NDbSdisiRho35Fne1QItO;omOsuba2W5; mO;ooB;llu30G;eefhJBri1MQ;aic4icumO;! anO;nu2Z6;!corn2KJ;adocAucci2LU;col35OeiGre1RQ;llary 2PPtO;alPol O;hill occupied pro1W9r1BA; Oi34R;go3E9o6punishmentO;! O;by2MVinO; t5J; Pr,tO;ian0PO;breto12Fc3E3hOof good ho327to3B3verde17V;att1E6o33E;an3D7or; c2LTimhínO; kelleh0; 1J't 1Ga0Ub0Tc0Qd0Fe0Di0Cn01oVtOva;erburyRinfl3DUonO;e3C8s of O;swO;itz26T;! O;caO;thedrM;laSn O;eQof sherlockO; hoO;lm3;f lens1GGos; o2QF;abiVeTiOon,y edge dete304;balPng stock rO;ouH; Oi33Y;corp3BSholocO;au3A3;d 9LsO;! f052;di3CKsO;! sO;ati2C2;d2Z7s; cor2B2lo O;álv2D;ace ViSleRyO;! O;crushOpalm229; sa29T;!m3CZ;ce Ode;beO;rg5;bushPcameron buBoOpa03T;weN;neC;eOún;lOr; c2NF;erG;an07dRl+,rO;a Py O;i2ANwhaAW;ba2C8;aZian O;armXb0SQdo0SKenglishVfQindian residential schooPnationalQKpOtiB;acificQJre0J8;l 1DY;oPrO;en30T;o16Drces maritimeO; comO;ma38G;! language proficiency indexO; p1A2;ed0OVy;! O–united states bo1PW;gPmen's national O;ice hockey 262s0SG;oo3AK;! O;smith-njig2TG;help falling Otake my eyes off23K;inO; lo318;bDyO;am1ou ever forgive m165; 0Pb0Ee01iUorGpO; RaQbell sOeonato brasileiro série07Hh38Iing worldF8;co32ZoO;up 22H;nAri;dOlaz335;av397;lOno de santia1ZY;a RlO;a Pe O;cott4kost28Ppa1DTraz2XAsaint-saëN;b2L4luddi1YEp1N2;aRKcab32XmO;e92or2AQ;lXo WrO;aUoO;n Oon15C;boy3APcQdiaz34WmoPno11AwO;inklevo3AD;na1NF;roO;we;! obscuG;appear1PS;! Plia sinOot;ensF;ca39Mt1XW;odiaTriO;anQdgeO;! Os7H;analy1DSfi30B;! O;explo2WZ;!nO; Q–vO;ietnamO;ese24O;c1IRge12F;neO;wt2;a12c0Re0Mgary0Ki04lWor38Htr2IEumVvO;aLinO; Oi31B;and hoRcQhaPj335kO;att9le4;rrF;ool2SH;bb3; s0YA; Pan rydz,ig343um O;hudson-odJ3tu2HG;me Sof Othe mid1TG;du344juQtO;heO; n37E;ar339;if you get21Qk2W0; 02a2Y9b0c00forniaTgu39WpQstO;a fOhe1H7o tan1AF;lo336;e38AhateO;! O;of córdo2RK;! O;co1MYdreamSgRhigh-speed 17Iinstitute of tQpolytechnic state university football team O;plane cO;ra31N;e0K6h0KA;old 2QH;in';he,o O;c2VLjaJ;ca128;! O;fl28Win2XL;b landQndar ofO; saO;in35J;ryO; j37M;iumRulO;atorPusO;! of vari32Y;! sp326;! O;cQhOo1X5;ydO;ro1X3;aOh1QT;rboO;naH;bOis,mity ja6;arz2rA;l00nWrVtO;lPríona bO;al391;inPynO; jeQD; fO;itO;zgera37R;n4Wo;! O;and PvelasO;qu31W;abI;ee spae246l20I; Of2UH;ch2KK;arOi2TO; R's1GPeanQi2s supO;erO;do38Q; s219;anQciPsO;al34K;ph0;d 38L;av0buLdysVe cuSillacPmi2TFuO;ceD;! elO;doO;ra2FC;nnO;inO;gh35D;haJ;ci3; c00aZba2QJernet sauviYinet of Sle Qo sanO; lO;uc38B;teO;le0R2;jRtO;he uO;nited O;k14Dst2V8;oe bO;id5;gn2;l,r34D;alO;lowK;reactive pro28Hs0IT;dRmQstandardO; lO;ibraL;aj34Gin34G;ata Oynamic memory al1LI;typ3; 0IO-0ILa06Sb06Gc06Dd06AeWSflixWRhW6iQRjQJlLVmLUnLRoECr4Js4Gt4Bu03ySánh mì,éO;chamel J4la bartQrénice marlo2W7zierO; cO;ur2WW;ók; Vford dolph4juTron RtQung-chul h1zantiO;ne Oum;em2SWfZ1;ed1M1;ho77leftO;wi2VV; raveeO's;ndr1;dawn's early34Cthe grace ofO; theO; go2W7;b3Qc3Id37en34f2Lg2Ai21k1Xl1Em1Bn15oy14pr12r0Cs00tSzzO; PfeedO;! unsolv32I;aldr4lightO;ye9; i'm a cheerleUch cassidyTtPyrO;ic34K; pl048-numb-a-08AerOoc2X3;fly PmiOs stot2VHworth0E5;lk;ef0BWkEE;! and the sundanceS5;ad0;an,hYinessTpi264tPyO; philip2HFb285;a rhym3er O;doPke2YDwO;el2V8;ugl36T;! P-to-O;busi35O;i0W7j332mOpl373;a14LodelO;! canv36O; 1Y3i2DG;a0Ab3Meauc0QRg07j 04kina faso10Hl02m01nSrRsa,tOun2UJz2RE; Oon upon t1UP;bachara2UYkwo0DIl0JBreOwa34By1DW;ynolds2ZZ;a36Wi2O8–hamilton duI; UaTham-on-s30Iing OlE;mRofOsun 30S; wO;asO;hi1T5;an,o08M; b1TYby;afterOno312; rea2K1;aK9es2EP; Oe292;iv3;alPkhO;ali20M; ar0WU;eOun2P2;r 2R8ss meO;redi2O1;kPri dO;eat0ML;um4;enorp22MoO;pi2;an1DF;desSgQk'd,ningsOty aur bab2WL; wO;ar1LF;al33Kie,o strayO; do32J;li22Ht2AYwe2T1;blePpyO; j2Y1;!b2XD;g03im18Rk00lO;! Xd2GBetQfPi2WNp2N7shit O;jo1AA;igh35Q; Pin boarOproof ve327;d 16W;cl024for my vQjOti35B;ouO;rnM;alO;en0O5;sOt1NN;ha316; mO;odO;ulD;arOur;iaOs;!n 2DK; missPayo Oka26NoDH;sa29Y;ilO;e 16F;ckVldO; Ring O;information mode2XGmO;ateO;riM;back better PdiO;vi1SD;a2G3pl1;! rCV;attiTsO; Ry O;maPsiO;egI;lo6;bun1ZQ;! O;aQchPveO;yr2;ir2;utomob0UN;fPord puO;ss0;alo Ter oRy O;sainte-Pthe vampire O;sl2JQ;mar31W;verO;fl320;bTsQwiO;lOng;d w30W;abr3oPprO;ingf1FS;ldi0;illRuffalo buffalo buffalo buffalo buffalo buffaloO; bO;ufO;fa2V9;!s;a vista Oos aMJ;socialO; cl00I; Xa0CRdOgerig9we03M;aVhSy O;eQhOri2S3;acOol2OD;ke2UR;bs5;aOi2U5;ho33Ns of bamO;iy1; b3A;g1Z1s2SX;hUkO; 1HZet2Z8inghamRminster fu2UHnelQwPy baO;rn3;he2P0;l 0W9; JXsO;hiB;a1OVenwald0JQ;bleOonic pl2EY; Qgum O;crO;isF;guppi3so33At2X5; g2KQdi1QJrRsO;! O;a2FOin the so2AMsiO;ngle2FO;fs;-t17QdOe sens32F;! licO;ens3;a7Ee5Ui2Eno,o0UuYyOüno;anQce Oson ti2TW;dallas OhaCpapenb9Ly1A5;ho2H; Ob1QE;adams1VXb066cRdanie25VfQgre230lOQsO;i2LAtO;eve2V4;erL;a29NranO;stOH;ce 04g3nWsRtO;alisPe-forO;ceCQ;t 0UG;hless dc electricQselsO;! O;a2Q8spro0WJ; mO;ot2YY;ei,hi30Xo O;delboTfernaSgRkQma30BsamO;marO;ti29Q;ir2XC;aSHuimarã3;nd3;nnI;a00bYca233dXedwards iWfVgrUhSjeJ8l2TVmcQspringstePwO;el2QGill1BR;en1V8;giClO;ar5;arEKorO;ns2X2;een28M;orsy2JW;viN;av1XCe2R8ic1AD;oOuJ;udRPxlei4V;lOr2QS;migh2VC; dad2KOad10c0Zd0Tke0Pmi6n0Jok06theZwO;nQser O;exOga31J;ten2NJ; QiO;anOng hi-p2GJ; mo2X4;be9dQmarmorated stink bYLrOsug9un1JA;at,ecluseO; sp1H8;waO;rf;l,rO; 1L6s O;griRof O;iPjO;esD;ta2LW;mm; lZe WingsTlynO;! PnO; pr30B;bPde0G3nO;e2WSine-0US;ecUKr2IU; iO;nstiO;tu2WJ;b03IdPhOla1NOmue2RYsh1BI;og1;'orsK;op2TO; Rch179ny3Iski be2MFtQze O;a2IXstarO; m1B;o2LXë 1S5;breOs2SD;akk0;back 02Vn O;arrow kPf7BwindowO;s 0IY;ill2XC;erickRieQy O;dOjeHM;al7; l2S7; crO;aw1QE;co2R4k lesn9;ba2WFcRsQwayO; tO;heatB;he2WK;astOh0RV; syOi8;ndi1ZX;an26c25d1Ue1Rg1Fn1Ds1AtO; 17a16b21Bish Xney speaWp27OtO; Tany PneyO; po1QV;da9TfuQhoPmu13No'gOsn2XU;ra2IZ;wa2XP;rl1;bOek2SYro1B8;ak0;rs1T1;a0Pc0Idarts0Fe0Cfilm instituHho01Fi08m05n02overseas00pYrWsUtherm0KOunPvO;irgin1XS;dergraduate degreePion of fascO;is2VH; cO;lassiO;fi1ZF;hortO;ha2VT;aj,oyO;al 1QZ;aOe25X;ss2NC; tO;erri2QM;ationalOoYS; p2SZiO;ty1K3;aPuO;se2K2;la273;nPsO;l3rae1IQ;diaOva2L4;!n ocean0FA;mpireOng29S;! mO;edM; orgaO;niO;sa2UL;olOui1IK;oPuO;mbA;nizationO; oO;f the amerO;ic2YS;cademy film 1OAirways252mericaSnd american keybo25DrmO;ed0BCyO;! oO;fficer rank insiO;gnA;!n tobO;ac2KS;in's g1IWnnA;mOsc0E3;ar2R3il2OM;ba6k2UTtolO;! O;beauf24Bold vic theatreNSstoolW1;e,g me the O;horiz2;adeYette lundy-p1MThSitte O;aQbard2YOmPnO;ie0M1;acr2;ub0;am youngStO; P's2FDbu2NLli6onO;! and ho2ND;meO;moL;! 0QZ;! comba0ED;! Pf enO;cou1UZ;la2CI;eshead revisFDgO;eOit m12Q; of no reVrt2t Owater associ2KY;cSfRjones's Qk2BYmoynPrO;eg1;ah1;ba2SWd1XQ;on2VT;hrO;ist2VC;tu2N2;k,s; Ona hildeb09I;austin0Ib0Ec0Bd07e06fl1YCgr05h03j01kZliYmUoTtyQwO;ilO;l173s2;l0reeO; hO;enL;'coEJr1K7;ay,cQichael bePuO;lr1KA;ndF;fa1ND;tt9V;eOilmea1KU;i2F8mp;ag1KSoO;h2PLn3;aOoy0;llisKrt2KA;az0ee6;no,ps1XK;'arcyQePoyle-O;mu2GY; pal2P7nne2QI; j1VY;l29MoO;nlExO; f2QB;aumgQen1Z6lOo1NA;eOo2C2;ss2S0;arU; g1ZR;a0Nc0Le0Hm5nXsenham's lineRKtOx2T1; Uman 2FZon082tO; Oe harHZon wood0AU;favBgRhun2QJkavanQl2ODrOso169;aOypi5;tn0;au2Q8;eIOoUW;easton0D7ha2WMmi1ZJwO;ei1WX; light03dSnan lee muHNtOé97; QfordOon thwa1X8;! communityO; s1MM;ri1LBsp0Y7vena28N;aPon O;ur2TW; Tn O;c0M1ei2KKfrRgQhu2FVo'cPpOschaSW;en1RC;ar16A;le1TJ;as0;bleth1UHfri0B2l2NTsPvacO;ca2KA;o8t1SN; mO;acO;hineO; g2V8; o1YZdOze1N0;erOon on the XY; rO;ea2IE; bas2DTkinO; m1AK;d00kRstO;! O;ca2L3fO;etis0XB;-up of tVbe2H7coBfast149ing Sthrough starRupO; of yO;ugoslO;avA;sh2VT;bOthe w208w2GJ;ad,enjO;am4;he bea2F4;bTfStO;hOu0X6;-firsO;t O;seY6;ru2RJ;oa2SW;! 1Oc1Nd1Bhm16i12m0Zn0Bs06t04un02veXwUxton berri2MVy wya2M8zO–ketIN;en SilOze2T4;! nQian O;jiu-jitsuOportugue2TGreM;! rank0WF;a1OSut;buC;lOn gp; sO;ta2SW; PhOly defMB;ea2UZ;gPnO;ew2TB;ir2SO; stro0ZWschO;we1QT; Oisla1TI;paJ;sOílA; Oica olerac2OL;iPknuO;ckl3;nstru24I; 1JIch08dO; new cherry fl06e03iYoOy nor215;lini1F4n O;burl1KUflVl2M5mSnRr265sOtee2FR;andersonPtO;alE;! 23Z;ov1QI;aPoO;re21P;rs1N2;o1HWy2CH; Qn O;c2K1eO;cho2S0;cOlo2J9rh0S0;arli7yrD;iPnburgO;! 29V;s 0MU;av2QI; david2IXeO;s ofO; s03Z; Opt2;cOst23M;oh5;l7nO;!fuJly,stPwas93–computO;er0QH;em,or1VX;aRiPosO;!-2PK; On;sc0PA;!n; Uford city stadium 2OMley O;beMco164fQj1SGwO;al2KYhO;it1JE;ightingO; vO;eh1I5;aRbi2R0dour0PMfalQg19DhaCpOrenf2HJ;ai0TUiO;tt2MN;ch004;ll1;hio2ECk2PG;siQ6; 6Za6Nb5Aca jun59d51eing4Yfu2P4g4Uh4Oiling 4Nja4Mk4Il4Amb3Wn32o2Er1Ls0Yt0Tu0Kvi0Gw08xZyQzOötes vo2QI; scag2PVo theO; clo2Q3; Sapati sriHUd hQle1DPs over fPz O;ii2R2n the 2T0;lo1GO;olbO;ro2JO;ba2OYeras2O3ge5EmQscoutO;s O;of11I;eets2RB; U-Rer17Qing O;career of mOdK;anny pOuhammad04X;acqui20J;drawingOoffice bo1J1; charaO;ct0;jelly10Yoffice moOpl2SW;jo; and a31en T3ie kUlQserO;!'sO; fuL; Oi8;chaOga2SA;llenge246mpionshiO;p 0UT;ni2S1;d2EAne spongiformO; encephalO;opO;at2LQ;di1H2gainvilleVnTrOvet 0GL;bon PgeoOn23V;is2PR;restoration in PwhiO;skE;fr16I;ty O;hu1OY; 0GDa;a1N3f2CLsTGtPuliO;num tox4sm;le Oom-tier character tomo0AA;roO;ck2O4;e08hin1LInia04on,p21Is02tonO;! O;brZcXdyWlVmaRred s1SXsOtea2LAun19I;co2IStO;ranO;gl0;rathonOsFF; bO;omO;bi8;egM;na0M9;el0O3oO;l191nsulting290;ahm4uiN; lBOa O;no1Q6; Pks,n O;ge0ISla1ZSw9;and herzegoO;vi2CL; c19R–einstein condenO;saH;a0Dde09ei-1UKg,i02nYoUschtSussia PzO;oi;dortPmönchengladO;ba2FF;mu2N4;! O;be0DR;bud27An,ughs ofO; nO;ew yO;ork 0YC; Oeo;to PwithO; horN;d2OEr2Q3;c2O4s O;iii of buSj2J3kQpastePsOyelts4;hcherbi2C1pass1PD;rn1MV;arOodj1DA;lo28O;lg1CV;a1F4rO; Oline0R8;coOgateway27H;ll2O3; PcKtOx;! subsequent movie2LW;boG;boo s0Ag07kUlean Smer esi2MStO;i8syO; cO;olO;liN;alOd2EBsatisfiabilityA2;gebG; QerPsO;ma2Q9; priN5;dWof O;bUdSeQg2FBisai2G4j0EKk11FlevitPmo0YIreve16PtO;he1H4;icD;no2EBxO;odD;aOeutero5E;niI;oba 2O;eposi2OY;alPiO;e n0I8;oo0EV;te1SN; 0Ga0Cd08e00gUham carteTnQoPs2E9uOzibud28N;s 1H2;!bo;!ie O;and cly1D5bed1T8hu298lOrai2GNt1UQwr2MI;ang1FJ;r 1GX; jooSbongQcloudO; aO;ttaJ; mO;arc2H3;n-1KE; PyO; k2ET;maStO;hugs-n-hPomaO;hawk;arO;mo1KB;rr2MX; Qage positions andO; mO;etho2DV;giRQ;iBnOr19P;noOza; cO;rim1GA;iv0jovi1I1s0CJ;aVeUing of O;dresden PtO;ok1UU;inO; wO;orld wO;ar 2KN;!rm1;rdier globalRyO;! sO;toO;ck04E; eO;xp1ZD; b2NQivAly1V5oQshPtzmann Oza1VXé2CP;b29Cco01CdGE;evi2EC; yRgnO;a,eO;se O;sau2NI;eu8; ch1BUePo h1T1u no O;pi2AD;em woodOh;bi6;ck hors14Ana novak2OI;fr1YUp1OE;emiaOr18B;!nO; Oi2EJ;clKOgPrO;hapso26X;ro2D4;danovPeOotá;ym1; aO;ffa2K0;! O;commercial airpl0H1dreamliO;ft0;hiUyO; PbuO;il21E;dysmorphic0OFfat percen1PHhPmaO;ss2MZ;e296oO;rr2K4;dh2FPsatt1MC;io2LH; 0B's bur2G4a09bRcatPslO;ei2H4;! goldthO;wa2JP;i02y O;b00cYdXfVgeUhop2BHjoe TkotiJlSmQro2EWsPvi0YJwoO;maJ;an2C3ea7hmur2LB;cfeOoynih1;rr4;as28Ree;lo8;or259;arOis1NTlK;reC;ar4;annava7hO;ar1JE;e2IVon3ro2K0; kristinaPeO; ge1VO; bQA; On mar1RA;fe2DW;b08c07d05ei1N9f04g02h00ig0ka6lZmVnew2FOodenkirk2G7ro2LPsQthPue01SwO;ei1N8i0RT;e bui04U;aReOtoo1X6;g0mpO;le O;ta1M8;g2IWpp;arleyQorOura0X8;lEtO;im0;! and the wailer1Z4;az9ea0HQ;earts abisho2LYoO;pe,s0S6;eOu0XL;ld1M1;os2KP;env0o7ylO;an1FF;hap1J9ou188ra6;aPiO;sw2M5tme2HZ;lOrk0;ab1;!rdOz and ja1PQ; TingBEsPwalO;k 27B; oO;f O;caO;na2JZ;ga2LSof O;control for crickeQdirO;ecO;to2JT;t 1TR;bur0S0dOj1NT;aOer1IRid2FN;ll2LO;p parib2LNsfO; rO;ailwK;aa,p 032w;a27e23i1Vo0RuOythe da2O; 0O-rKeQmhousPrredO; l28M;e UM; 01's c22V-YbeXgrass16KpVsTtoothO;! O;lowPspecial intereO;st22Y; enO;er1UC;! 24LtO;ac2B7;oiOri24W;nt0Y8;a2IWrL;collar woC2eyed Pfooted boo2G9ringed ocO;topD;so0J9;ar06b02ch01exorci2HSfug284iYjaXloJmVoUp275ridge TsSwhalePöysterO; cu07T;! O;challO;en233;c2Rky0DH;mo0I9;rig4;an22FoO;untain03Ev2IG;s11Ky;s the warmestPvy O;ca2DS; colo211;ee2J2;aPeO;et7;l2IInO;is0SB;chi29Q;del bOhu246;arr1IO;c0Lemfon1KYg,nd0IoOw223;d00mQns towerOp; dO;ef0IY; V's taTberg RsburyO;! O;publisO;hi8;billionairOcommod1Q6us aggregate bond2JM;es2JL;xoO;no0FF;fi0QHinO;to1BK; QbF7houndOs,–brain b1PI;! O;ga8;alcohol0N6dZe0PGin bloodUJlYmeri0S8of WpVrTsRtypePveO;ssI;! distribuO;tion X5;iOugar sex mag1F0;mp7;edO; s1IH;las2BZr02V;eOzeD;lv3;ibI;iaO;mo2FP;e onPiO;e 2BJ; bl02J; p2D3kO; QbusterOchain23L; lO;lc;cipher mode of Om1ZK;ope2EX;nSpRtzkPzzardO;! 1T8;riO;eg;pi;dOg 1VRk2FJ; Oing l0BN;fRTmen and an1U4;aQnOtchley 0ZD;d0heim O;pa22C;ch,k2HD;c05de02i01ke Wnche TstSxploi0ZCzO;bl27Aing saO;dPmO;ur27I;dl3; furna2I3;deverPgO;ard4;ea17D;bRe1PBgQjeVlPsO;he1F5;ive23D;ri027;eCor22E;re0Qse pa0YH; Oe;ii,ruO;nn0; chy23VkO; 05-YaXbeScRfa2HPjaJkklQlPpOroJs1RB–scholes12Q;ink1BMo2HQ;e0JGig2FE;an1M7;ur1DW;a2G2rryO;! O;lOos;imO;it2DG;dd0;and-red broadTboOeyed p2C6i29P;dyQxO; tO;es2IB; rO;ad0LG;biC;a0Ob0Kc0Hd0Eeyed pe2HYfo13Kh0Dl08m05narci04or03pZrockWsRtQvOw0EX;eil Oul24P;br147;ea,ie;abbaRcPea,to6waO;n 007;reen O;of0E9;th1AX; sO;hoO;ot0;aPeOud1VE;op7pp0;int2EDntherO;! p2B5; w0QF;ssD;aPetMiO;di,rr2E1;fi16Rg2HUm1YRrk2DQ;aOives ma0IF;beOgo2;l O;soO;cie2AW;ebrew israel1I3o7;ahlAeO;a1Z7sert O;on24C;at,lPoO;me203u1PW;ov0;et2AOiPoOu161;dy,lt,x;llionaO;ir3;d2DUnd O;taN;arne strouUörOørnstjerne bjør29B;k,n O;andrés5bo1ZJirQuO;lvO;aeD;onO;si14B;str1YC;a4Xb4Nc4Kd4Jg3Rh9j3Okini3Ml1On19o0Sp0Mr0Gs04tQzO; Oaardva2CK;mark2E9s197; 0XVcXdeWlVmap2FZtRwO;a1N8ise operationO;!sO; in c;erPorrentO;! traVG; sweet sympOs;ho1BK;oVDy;fe18W;hQoO;in SJnO;ne1RL;es br12XuH;exualXhVmPpectr2FKsagO;os1E5;aOu1Y5;ck biyQrck-O;class bO;attle1S6;omO;bo;k1D0opO;! of 1ZJ; Oi29J;fl1L5; taw1SRch,dSefring2DDkin b1L4minghamRthOya25I; c1LLdOs18F;ayO; pJH;! DV; of prEs aren't M7;aQin raw21Bolar O;d0GIjunctionO; transi0OU;rtiteOsha ba11R; gO;raIX;ch03di02infor0C5lZmVnte23WsPtOwaB;ePLin;!afetyRhockO;! iO;nfiO;niH; lO;evI;a2E8eO;!dO;icalO; e1RR;ogOumine1U8;icalOy; immortaW9;esIv0WX;emi06B; lade01aVdiSg crRomial Otu1BP;coOd70nomencla21SthEG;efficO;ie1YN;os2A2; iPng of iO;sa0D6;rw4;n2E2ryO; P-coded dO;ecimM;co12Che0E4nu28XsOtr26I;earch Ot9;a9Ltr26G;n 163;b1MId1Ie,i1FlOtmore esX9; 0Pboard chOUi0Iy O;b0Ec09d05eZgYherXid2DVjoWmSo092pre1C6rayQthePwOza6;e2BAiWO; k2BY; cO;yrD;agPiO;ll11O;nuO;ss5;el17I;ri112;ibboNr72;icSlliotO;! tO;heO; mO;usVX;hn0;ePoO;nov1;e O;wi0NJ;a1EYoQrO;ud1VLyO;stM;nnOrg1;ol1YJ;ea6ob thorO;ntO;on277;e PonO;aiB;eilish16VhK7jPlOp0VQ;ou2BE;eanPoe aO;rm1A8;! 1YR;ac0Bb07c02d00eZfi1W4gXhWken0MMlaimbe0mTnSpPr4Bsk19CwO;at1S1itJVym1;aPo21OulO;lm1;rc0OUxt2;e1GJig26Yye;aPe27BuO;my,rrK;cy,h0;ad0ic239wa8;at3oO;ld1VX;vaN;a1YKe blO;as1BD;a0J4li0ODoOu1K5;n0ZMsbyOwh0;! sexual assaultO; cO;as3;aQeliPix284loJrOu263;ys2;chiJ;ilE;km1;bi23Mnear iPrO;ub4;nterpo0TH;erberg mPungsrO;om1;ee2CY;! aO;toC;ec288ouO; phO;illi1N2; S-boxRfo2CWgOil; Pest ball of tO;wi6;bo2BE; s0YC;b05c04d03ey3fZhit0XJlYmac1IFn29DoXpharmaUsTtOw;eRime Qrouble in littleO; cO;hi1XP;adole1RCru23U;ch,n0W7;e1h2A2ur,wo7; cO;onspiracO;y UJ; no0SH;!ie,o21B;iQlPour accounting fir2AAreO;edA;op1I7;sh,ve personality trai27Q;a2CCiG8;at,ity grOG;aRen,ottomO; mO;asO;sacB;ng,sh1NH;et,s to college bowl0OT;e1M8hon fPycleO;! t155;ri2A3; forWiUlO;eRiO;cal Oog254;apocr09LcOma1RC;an2;! bO;eYAlaJ; a3Wmb0AUsara assaubaO;ye1AA;tu1WS;fGnca PsO; of an estim1V3–variance tradeo1TG;bePjaO;gg0;la27H;aZeeXoUp,uO;miQsOt1;hanO; kYO; pednPbol adulyadO;ej;ek9;oOpal20U;l bhulaiy0AJtO; po25L;mOshma parv27V;ante vaz1YIla nay176;d bhab28KgSrO;atOti ai036; Oanaty27Riya janata24Fpe;ane neOrat1W7;nu;aPyasO;hr22I;t24Dvad O;gi2B2; mo1CW;a82b7Zc7Rd7Me77f6Zg6Uh6Oi6Dl56n2Uowu1FVr19s14t02ulah bon1YJverlVwitch25VyO;bladeTonO;cé13RdO; Oer;good and Po0O6the bounO;daL;ev1ND;! burst quadd1E1;eyTy O;cl8Pd'Rhills Oj22S;c1HXhO;ighO; scPU;ange21M; c1QP;a0Lelgeu28Mfa26Fh0Co o0Bsy d0AtSwO;ay,een tO;he butPwo ferns with zach gaO;lifian0JY;toN;any03eWie 1M9y O;bScroP2d1DBfo27SgQwhiteO;! f23H's off their rO;oc0SE;iOr25M;lp4;o1HHrO;a1TKoO;de0FL; SrO; Oidge's law of headl1WX;businessOcall sa07YwatchKC; buO;re1NW;davisOmi140;! 64; huO;gh3;ra1B6;'ro13U; Uany RePlO;eh11K;nny fraZNsda O;game020sof0UE;ha15Tjoy O;leO;nz;beh27CharOp01E;m2t; O-methylamino-l-ala030;bPdOfu1U5is1X6;ecKis18;loO7;lan schoolQsPt bO;uy;a1ZBel 1TZ; sO;ie1R7;ber17et29Eg14ing13k0Wl0Nmuda0KnZry gor1S0sXtPylO;li1TR; Tie caSolt brRrand O;rPtraoO;ré;us16M;ec25U;rvI;con0M8kreO;is19I;eOh1DO;rk0;!aUeseTie QoulliO; O's0AE;d0Mnu22T;eccles117maPsOtaYX;an0KX;c,do1QN; mountain1J9;dette ZrdO; Qine evaPo O;bertol17Ms179;ris1Q4;arnUbressl1XDcRhQkPl205moO;ntgomeL;ay,er13H;err1QLiCop0E3;oPribO;biN;rn0Z1;auUZ;pe0FXsoubiO;roD;! tO;riaO;ng7;anti H6inO;! O;bTco0RXiOwaC;nternationalO; fO;ilmO; festO;ivM;loc0SDrandenburg1VL;eley Plee college of0SWshireO;! ha0C4;balconyRsoftwareO; dO;isO;tribu238; collap260; stYFia;amotPenOha4maVY;!-belsenNZ; or1GD; l1HTs; 14a10d0Xe0Lford0S5gal0Gi0Aj00nRoit mandelbr27StleyQzO;e6odiazepineO;! withdrawal1QX;! continental gt;iTy O;aQblPgOhiC;oo130;an1TF;ndO;er13P;eOngton0OQ; thO;omV2;amOi ma0X5;in QínO; arellano fO;él1N7;bSdisrCXf00VgrRhaQmPnO;etanyaE9;en1PWillepi225;rr12E;ah23R;ra1XX;ciRgno aquinoQk afo08On,toO; musO;so02; i22P;o del O;to1UX;! QiO; Os;al02Fla1F3;c1S6pOt06I;resid0E2; gessYathUdQil dariu1Y1l0V3ttonO; fO;ormu25Z;etta carQict O;ar142cOwo8xQ9;umberb03B;li1VZ; the pO;lanet oO;f the O;ap3;er22J; it like bOy and the inkKQ;ecO;kh230;drQy venu26GzirO; bhO;ut1NQ;yl;a0Gb0Cc09f07g04h03kingsl02mZnYpXrTsOwhiKW;chw1YFhRiPtO;e4ill1O3;lbOm10B;er1O5;api1U3;eQi0B7oethlisO;beO;rg0;il1QE;la1WS;evF;cPendelOi1WO;soKF;kenz238;ey1YZ;arp0;azzaGerPibOurion1TA;ba237;ra236;alOel115ol1U9;co6;a1JWhOro24A;aOil0W5;pl4;ernan16VrO;eretonOoDI;! O;díG6;ffleOskr5;ck1YK; po13Za0Qfa21Ug0Ji0GlXow deckWphVsniUtPuga Oén cu0FI;wha7; and roadRrán-leyvaO; oO;rgaO;ni7T; initia1L2;ckI;eg21H;! mediterrane1; 05's 03aUe TmanO; VB–fordO; aO;lgoO;ritO;hm;delp11Dkn15Vs04Iépoq1SZ; RmyQtO;or m1WUrix lesO;tr1DG; y0BV;ci1CEhQpo7HraPthO;or6;msE;ad21VeathO;coH;pOth3T;al0QD;h1U9la093pe8L;al,nda cOsa1DMze;arO;lis7;iPraO;de,vA;an OumY0;cQfirst divisionPsO;heJY; a;on0S9; lugo1UPlPrusO;!ia0M3; muO;hamm1ZR;jingVnOrY1; Sg O;john malPtheO; ricard1VKre;koO;vi1S5;spO;or1ZG;! O;capital 1RCsO;ubwK;aPeO;mo1LL;n22Sti prinUGviorO;al Oi1U2;eOsi134;conoY9;gOinU;ars banQinO;',g theO; ques1YY;qu1ZN;a1OOoreO; PigO;ne219;mRsunQtPwe 0RFyour O;ey3;ri1C6;ri21Js1ZG;idn202;! 00chWf TlzebSrQtO;leOro23E;!jui229;! hall puO–lambert0NQ;ts1RC;ub;stroga092wO;elO;li0PM;!craft O;bonPkOsuper kO;ing1YY;an143;and puppyc1OCgeOm20C;es0VV; Pe,iveBknobs and broomstOou4;ic1SL;bPsiO;ze;ug;ause this is my first 228hdel 0KJkO;! Ry O;g,haC4jPlO;yn1QT;ohn100;bPweO;at8P;en14O;e Oop;bueCneuwOrex0R0;ir1K9; 0Och20Kg7nie 0Lr0Est09tZuPvO;er,is and butt-1XZ; TfortRty andPx-artO;s U3; the bO;ea1YT; sO;ca7;bPfO;ly1KA;id5riO;dg3; Ules for Tn0X1rix Os0L;oOpo02W;f tO;he nO;ethO;erl0ZS;sa7;gPit,sO;ab0;ene1X7; Ra1ZMiPs of the southernO; wi206;e O;bo0U5;b0P4of gévaud1; QdO;!more inflexO;ib7;br188gQin the big blue1ZQmccrPsO;tearN;eaL;ryl1Z8;baPfeO;lds11R;bi3;aObenader1XI;rth1HI; 06Oo worldOsm; dO;art1D3;gOryWUs national championship 1L7; vO;ac0OZ;cRkO; eO;lectO;ro07R;! O;fTi1G9ne1RQo6sStRworldO; sO;erO;vi1ZZ;hr1SHwo;po20Utu1SE;il1YV;'athisBEal,bB1c9Zd9Ne9HffiP1g9Eh9Ai96j91k8Tl7Wm7Un6Qp6Nr4Gs3Ot08u07v0MYyPzO; luhr1IWoo15J; 01eTlor PonetOwXJ;!ta;beaQuniversityO;! sexual assaulO;t 1US;rs132;r,sOux tapeRN;' Sian O;i0KBn073pPsO;tatisWZ;robaO;biHE;thO;eor0SA;city D0le11WoO;f OvM;bengMpigsO; inva1M1;douin10GhaDxiH; 31a2Xch 2Tgi2Shs2Rm2ItO;a0F2leO; Vbo1VQcTfieldSsO; of QhipOtar galac02N;! pO;otemk4;khalkhin g1Z6lexington and con04Rnarv0V1the ison1OE; v;ruO;is0;angel ali205hymn of the2OofQroyalPtO;end07Ahrough the hea78;e 1JV; Pf sO;am9;a1Yb1Qc1Hd1Ff1Cg1Bh17i13jut1SOk10l0Tm0Nn0Loki0Kp0Hrorke's dri048s07tQuh1F9vPwatO;erl12B;erd1YXiBF;ara13IheRippecan0M8ou1XKrPsuO;shi1RR;afaOe0AQ;lg9; Ormopyl1LG;aVbUcTfalkland0XEhydasp3little big1OSphilippine1DRrQsOteutoburg 0KZ;anta cruz0XDchOom1ZA;el15T;iverO; pO;laH;atalaunian plWNho17oral1DL;oy6ul1HD;la0B2ssunpinkPtO;lant1ZL; cO;re0W5;aVekY3hTtaPuiO;ya8;lPmford O;br1GT;inO;gr1UR;anOil1F0;gh1NH;ip1lOragar1MFvo NA;amF;asschendae7elePla1VZolta0XNrincO;et2;liu;na12O;ew orlO;eaN;aRiQoO;nte casOsc1WF;si162;dwK;da8nzike1YOraO;th2;eSoO;ngeQsO; angO;el3;wa1XW;iOp1G0yte gu13K;pz0UF;aPhe saOorega2urXF;nh;de1PRm0ASsserine 0P4;a dra8sandlQwO;o O;ji1QD;wa1JH;aQoOürtgen 0JN;ngO; ko8;st1US;augame1XIettysF1run0VS;ort sumt0rO;an1X5ederiO;cksEY;ien bien p56riniumorOunki1TS; r1SO;aThQoronIrPullO;od5;eHé05B;ancellorsv0SQoO;sin reserO;vo1TV;nn1JNpOstle iYO;orO;et1FA;aUe83lair SoQriPunker O;hiC;sba6ta4;ro0D6sworthO; f096;moO;un05M;dr,nnockEO;cRgincQl06PnPp bVMusterO;li1PT;tiet1U6z0VH;ou1XE;ti1HZ;anPoO;bi7;! O;beSfQi1SLrO;etO;urN;orO;ev0;giNyo1T2;he1EA;rl;fi7nO;ormaO;liO;za1SE; c0FCan deathPvianO; r0L2; mO;ar1L2;mas1B6out of O;heC; ruFJal0De08f,h06iUketballTma1W5que80sQtO;et,iO; vaman shen0K6l7; Oo2;guOre0PY;it9;! p0FR;c VlO;! OiVJ;bSiRjoPof caesG4rathO;bo6;seO;ph;i,wan0XR;ro1TA;accessQfighter maneuPinstin17JreproducO;tion 0UH;ve1U5; authenti0VV;arOkorto17C; al-ass1RV; rateRbaClO;! O;i1RYpO;robl0O0; falla03H; Ot;ganY0metabolic 0D5; 1Ra1Mb11c0Zd0Yen0Vi0Tkhad ab1JQlEn0Mo0FrWtPuch spino0X6yO;ce0SSon; SholomewOon fi0VE; tO;heO; aO;po0KQ;e127sO;imJKta1OP;a04ele03i02on01yO; Omor0MY;bYc0AgXhuWjVkeo07JlTmanil1TCpeSsPvOw04F;an dy0X3;an07TeMonnO;enO;fe1U0;pp0;eOy0AN;vi1NR;en013;mph1MH;i056oldw0KG;on1K2; hi0RM;er transf9Pst0;ye;cu1T6nquO;il1UM;nRquePtrO;au1N9;! O;m0G4p12J;! Oet;cOfar016mor11Psame1IT;orb4; oTaSey Qum O;efO;fe165;mi1LTsO;ti1N6;c7rd0CA;wl;! wOto6;ei1TK;akedOts18Y; laO;di3;! c0C4;eOla0N4o0I3;lo1FU; and star go to vista del07aTec1IRiPra streiOu1SI;sa1QI; be05Me fQturateO;! oO;verdo1SQ;err0RI;d1M0rO;a Oi1y 09A;bWcorcVed5goUhTlu1FLnSorb0PQpaRsPwO;al01YinOY;inOtanwyJ;atG;lv4;iv5;a7ershEu0WJ;rd2;or1;aProcOu1LI;co1KP;ch,in; m9;cQgPngays of quezoO;n 01B;oo1TC;k oO;ba1LZ;and bat mitzv1JTkokhbaPrefO;ae1KG; revoGG;hPtisO;m,ts;om1PW; ki-1O2ana0Pco 0Nd0Ig05ished from the hero94jo04kQsh1LBtu 8Wy1zaiO; cO;har1BN; Ving 11GnoteUruptcyOsy;! of lehO;maO;n O;brO;otO;he1RB;!s of the pound0L6;for international settl1GPhRof O;a01Ybaro1RAe198mO;ontO;reM;olO;idK;!-kazoo1QQ; XaWk1JUladeshO;! O;liberaTnRpO;reO;miO;er14L;atO;ional c95;tion0MK;loBr0I6;br1KIsiO;-hyO;uk; on theR-Oai namco 12McaYO;ma1Q3paO;ssO; fiYZ; r1RX;de o1GTsanO;ta0L3;! Ora1KQ;fi1K0r0GSwa1QH; margeGbO;i,oo; gangadhar til0OMan0Hd0Be0Afour09i08kan07l00moral 0HFochi13Nr135tQwinderO; sandO;hu;hazar gISiPoO;!-slav12K;c SmoreO;! O;orioles minor league plaPraO;veN;ye1Q5;dPsO;ea,t1F5;ry1RG; lTad,eSistQon PpointO; p5;d'1OK;a,ic missileO;! s0VE;rs,t;ight1I8; 0ALs;!an of ib0Q9; decla1NC;aric0PQncia0OJ; Sr,ur's gateRwin O;fa0J5iv ofO; jeO;rusal0JP;! i1NL;and bankruNDeX2; woPce of O;na1EApaym1MZ;nderw1Q2;eShtiarp17TiPla0QBuO;!gan battle braw4A; the grapPng poO;wd0;pl0;liHr O;is1KCmaO;yf030;aPirao masOrangi bhaija1;ta1GV; californiaPjO; au18V;! s17H;du,konur cosmQlO;eOiwick of guer003;e mETys irish c1NX;od1AM;aPra4ujan samaj1KKáʼí fO;ai18Z;dur shah zaf9mO;as,ut;el,hd1MPpPuO;a,etHio;ip3; PkO;hy1Q4sang arts 0GA;doo1C4sO;u178ystemsO;! temO;pe1NE; Oen-württem19Bfi197g0mi01Voo;and cra174bUco0H9luck banging or loony Tmo1OTrQs14FtO;ea0RBimes at the elO; roya7;e0A9obot O;produO;ct1JS;po1FU;oys PuO;d19Dn0LK;foOii;r 1Q1;ar1E7c0Oh08kTon,tO;eriRriaO;!nO; cO;amI;a,op03G; TgaSpropaRsOtr1BA;la1HNtreet O;bo0IPrO;ook1NP;ga1LM;mm2;inUto O;bUsc5Hthe O;futureQoO;utO;baJ;! part O;ii0Z0; bO;laJ;chan pandEelorPman–turner O;overd0TA; P'Oette1J8;s BB;of Op1J7;ar1LBbUe124fRla1GHsQteO;chO;no0YJ;ci1N0;inO;e O;ar1L5;usinessO; aO;dminiO;st1KV;ar1AW;a Ye Xi y9o2ur,yO; T's daySlonOm0H3;! beQ's ash3iaO;!n capO;tiEI;rl4; oJ7;booYPdr1JWfacePke0H4sharkO;! d03I; ne0S4;ru16Z;vOya0LQ;an0LP;m,t irO;aq;flatPsOtr1GL;eg0YT; maj1LD;ceCm1MDposi14VvitaO;miN; 1IL-1IIa1GUb1C0c184d11Me10Kf0YKg0WLh0W4i0TNj0T4k0S2l0BPm041nNSoNJpL0qKQrDDs94t6Gu2Fv1Cw15x0Zy09zPşk laftan anlamO;az;a03eYiUoTraItecSurO; Qe O;drO;ag2;la6; 19Ss;r3v batta03I;mQthromyc4z O;ansa1KGshaversO;hi1; prem0P8u16D;alia bRrO;baijanOty;!iO; 0WQs;an1E6;dPtOzI;ho166; kashm1KCirachtO;a indi0D0;a06e03m00n Zo dosunYrWuSyO;appanum koshiy18TubidO; dO;ynO;as1HL;mQrve1M0shmanO; bharat yoOn khurra19A;ja199;i hama6Uu mura1M9;ton sO;en196;mu;ra1JU;an al-zawPeric laO;porH;ahi1JP;let zPshaO; c122;ur0; Tan hirsiShuas0CGko kawasu1FInO; mQePna pO;resO3; sakuG;uker0OB; a1E6;ca1EX;el tuanzeP8iPl UIoloO;tl;e infi9VomPs O;ba0MWpo0B0;! of chO;oi1MG;aQkwafinaO;! is nora from quO;eeN;ken1JWrds and decorations of the united states arO;medO; foO;rc3;a0Be06g1MZiZl 1B1n 0CIoVrO; microcontSil lavigRo O;lOvulc1;anO;ca1CQ;ne0G1;rolO;le1KT;gadro OidantNI;coO;nsO;ta16D; SaPcOgn2;en180ii;n0BItionO;! O;accidents and incid1I0;ar1ICkaO;pl1;nged sevenRrO;age human heighOro3;t O;by0V4;fo1KY; YlTnQstOt9;! antivO;irD; jPt-gardeO;! m07D;ogA;ancheQoO;kiteśOn;vaG;! sO;o06Vtudios13N;duveQgOm0XV;arO;dn0;rnK;b3Jckland3Id32g2QkDl2Pm shinrik0RZn2Lr2Gs14tOvergne-rhône-alp3;ar0KLe128h10ism0XoPumnO;! rees0; 0P-0Oba0Nc0Ld0Ienc0Hfell0GhotkEimmune130m02nomRpQregressive OstereoJM;integrated movingOm063; aveH7;ha0USsy;iVous O;administration of north and eastScommunities Pregion of bougaiO;nv0GO;ofO; sO;pa4; sO;yrA;c nO;ervouO;s MW;atSoO;bilePtiveO;! industry0TB;! dO;acA;a 3Ned tellTiOon;c Oon;differeQtO;ransO;mis173;ntOK;erO; mO;ac0HR;at0J8;od0;eskOidac0T7;! O;ma0SQrev1H9;ad,la1A3oOraSG;rre01J;hn;tu6;cRrO;aPickO;sh19P;ci8;liO;ck0;! O;spO;ectr15B;entic brands124oriO;tarO;ia19L;chwitz0WtO;in0Ron matthe1BBrO;al02iaVoO;-Sa0UMnesiO;an O;l0UNpO;eoO;pl3;prussiO;an0DX;! 0DX-hSn O;em15Gfootball bundesQpeoplePscO;ho1JE;'s1DN;li0GU;unO;gaL;asAiaPoO;pithecD;! 04n O;arF6b02caZdVe0UIfDTgUlabor1DGop5rulTsO;ecuritiesQhePuO;rviv1GF;phe1HJ; exO;ch0SM;es0MC;rand pr0ZW;ePoO;ll9;fenO;ceFU;pitalOttle0UA; tO;erri1IN;roadcasting020;dKnational Oz0M5;cPsO;occer 0D9;rickeO;t 0D7; Osh1H4–bergstrom 16Z;aPbu089powersOsto0A3;! in gold1DE;bra1HF; concentraO;tion O;caP4;angzRePBoO;cPraO;! tea0PP;hs;eb;g san suu kQjanuePt O;jemi1B6mK; eNZ;yi;d lang sy6iʻi craval0DX;mented rXsWustO; Ue Rine of hPo pinoO;ch1F3;ipO;po;cPrO;od4;omH;am3von mackeVC;bu11A;eaO;li1C5;iWrO;aUeO; lSy O;hPmeOtaut09X;ado19A;epO;bu17Q;or05W; mcY7;! Te muLVoOt; PsO;la17E;fiO;leO; form13Q;quatt16Ctt;! a15V;reyPurO;n AW; P–maturiO;n KF;anderson-em0CCpla0J9; 28a23e1AQh1Pif a16Nl15mospher0Yo0Kp 0Jr0Csumi tane0BtPx,ypO;icM;acVeTiPraction to transgendO;er 0O6;cOla;a prison PuO;s 0Y6;ri1I1;mpted assassination of ronald reOntion deficit hyperactiviIG;ag1;hmenYkO; Qing midfO;ieO;ld0;hSoO;f the dead1FKn O;mers-el-kéb1DNpearl hPrichard nixon's motorca051tO;it1;arb1DZ;elicoO;pt0;t O;thO;eoL;za0ZQ;angi Bial fibrilXVoO;cities in the congo fQpO;a belladOi6;on12H;reeO; sO;taH;c0YNto0XC;mPrvastO;at4;! heartYic SoQwaffen O;diO;vi12S;xeO;ti6;bQc0YPkiPnu1AYorbO;itM;tt5;lPombings of hiroshima and nagaO;sa0Z6;on048; mo12D;eRic O;prO;esO;suB;! O;ofO; e0QL;aPus,éticoO; madr1DS;ntQsO; Osi1;en0Q8moDNshrugg1BIv;aUiO;c Os;coaRoAOpuQrD8slaveO; tO;ra03Q;ff4;st000;! O;br0KTfalcoNhTmOunited 0J7;etrO;opO;olitaO;n O;ar19W;aw15T;anasius 00eTiSletQulyaO; raO;vi;e's Oic bilb0NM;fo1G2;na 8Xr1;i167nOrosV2;a karkSianOs13A; dO;emO;ocO;raN3;anF;of2J;camaQl bihari vPriOxA;! 1C5;ajpay175; dO;ese1FH;si0UOthe mountainsO; of mO;ad1E5; 3T-salamu alayk0ZZa3Obest16Yc3Id3He3Cg3Bh2Mi2Cking2Am26nawi mangku25obo 24p1Ws0PtUuQyO;lum8ImptomO;at1FL;nci8YraOs;!'sO; wO;ra0X2;a0Ger0Ch179igmaTTo07rPuO;ri1EZte-0IF;a02id li00oO; b02KbYlTnQpOworld festival crowd c0VD;hyO;siLT;a8ZomO;icOy;alZO;aGNogO;ical sPyO;! and the class124;i0U2yO;mbo1CL;io0NN;ndO;gr5;lOzene03G; pO;roj06Y;lRn martinOr 05W;! O;i08YvaO;lkyr1C1;fo;aCJiQoidO;! O;be12ci17Wimpact avoidSRmi14N;sk,x;rOti6;o0W7te;aZeWisteVociatQumption of PyriaO;!n 0KI;maL;ePion O;f0GPof tennis professio71; PdO; p0OW;de116;d sui5H;mbly 0MEtO;! BQto cO;or0VE;m,ssinQtaOultF6; sO;hak0U4;'s creed09ationO;! O;cla06of O;a01indiraZjWkim joVmahatmaZqasSreinhaQwilliam mcO;kiO;nlE;rd heydO;ri11X;emO; soleiO;ma134;ng-n1AC;amalPulius cO;aes9; k0T3; gO;and10V;brahamQrchduke franz fO;erdiO;na19B; li11W;ss0SE;! O;c34ii0MBoRrQsyndPuOvalhal1CN;ni16P;icaH;og11C;dy1A6riO5;arUeShQiO;c,rO;ated conso5Iin;aOyxA;lt;n 19rgO;er0WC;agDta1CO;stNO;al19M;l hQoOr;deDnO;go1B8;ol0QD; aO;lexandrA;aOcs;! T-pRn Otic RJ;am0NJel0NHfPgO;am3iant ho09A;ootball 1Z;acO;if1CS;aOcarWSkate diB5;rgO;en0TZ; vs evil03Da bhos7by-de-la-z0Ber12Cgab0XVi09kenaz08lSnik0KOokQraf gPton kOwini vaishn118;ut0CY;ha11U; kOa;um9;eOy b3R;eZigh b15Oy O;bXgrWha08GjUmToSrRsQtisPzuO;keYO;da7;co132;ob04W;ls5;ad07E;eOLuO;dd;ee6;e147id5; sO;imO;ps2;i je12K;sh vidyart0Z7ta noO; jYA;ou0ZY;a19Ahar farha0ZG;anRxualO; reOi154;prO;od03X;! football F8; rna mot7Qa;ePiiOleBL;! a1BH;nOti0JK;dance of a bookwo0Y6sioO;n O;is149; Rfoeti199p O;mPrO;oc09U;ob;akiGbutteMSh0I1;good as it Pmonaco 0E8saint-étiOvMyou like 17E;en6;ge16Q;a6Gb6Dc5Cd58e4Ug4Ni3Qj3Lk3Fl2Zm1Zn1Qo1Np1MquebDr1Cs18tYuUvind Tw5yaO; RbQn O;bOra1A5;rother1AX;ha1B8;sta16R;kejriwMswa63;ba,nO;acPdhatiO; rYC;halN8; 0Te0Qh09iVp0I8s and crafSurO; Po gO;atX4;beterbi12PpawO;loL8;tsO; mO;ove0KH;cZe Yficial OlleL;gRiVnO;eurO;alO; nH2;enerPraO;vi13W;alO; iO;ntelO;lig17O;l0J0sh0Z4;ho0BPles of O;conDW;dal01r00ur O;aXbalWcTduSmi112rimRsO;chopenhPeyss-inqO;ua1A4;au0;ba0PJ;nc1;h19Tonan dPuO;rr17H;oy7;fo0Q4;ndOs0Y7;ers5;itFop19R; cO;hroniO;cl3;!misO;! p7Bia O;absinthi0UAgentilesc0X3;bPca0V6de0VOfi151garfuOnouve0NOp0H2roJ;nkI;eCrO;il3;eniQène O;lOwe0RX;up4;c,o 026;ayUd111ested0HLhenius SiRoO;ndissementOwv0TR;s ofO; pOX;et12S;eqO;ua14P; data O;stO;ruc0VS;an15B;n ral06Koj aftPund the world in eightyO; da01K;ab;elUis,oO;lOn mil0YG;d Pfini portO;ra155;ma0CFroths09AschPvoO;sl0BG;o08Zwarzenegg0QW; piO;ne16Q; 0La0Ee01iYorWsTy O;of Qranks aO;nd insignia O;of0GK;d0I2thO;eZMi01Y; iO;nduO;stL; R5ed O;coB;e PnO; meiw3iD;haUU;d forces of XniaO;!n O;aRgePkingdom of ciOla0GP;licA;noO;ciVP;l3XpostO;olicO; chO;ur0WD;tPuO;krWE;he ph0V0;dTgedd2nO;dOi; Po O;bro004iann06Z;assOhaUC;anH;il0Z2;arO;chit0EX;eVington nationalUo QynO; pO;hoen0NS;gPpO;ar0XH;utO;hr154; ceme118;igh burkeRne O;daPmaO;rtI;hl;-classO; dO;esO;troy0; of the coveSanPhangel6CnO;igh12W;!ePsasO;! razorbacks09Q; s0YR;na0QQ;en robb5unO; PaO;! phalgu0SC;k0WHrOsarZ9;ed0PW; a0WQa0Cel09hant-0ABjit10Jpipr08st01thmeticWzonaO;! O;cRstO;atO;e O;unOJ;ardiPoyO;ot3;na14L;! O;logicRHme1pO;roO;grO;es0SG;aToO;phRtleO;! O;onO;assF;an3; r3D;azo7; Ole kebbI;castro kidnapp131pi05VshOwi038;ar2;dnUnO; moSa Oi0WPna huffiSX;deQgranPriO;ch0CP;deZ9;bo14G;ay119;a g0IWe;entinQiPonO;!au11O;ni6;aQe primerO;a divisiO;ón;! ZK; you Xa of a11WcRna fPpa,s,tha fO;rankl4;ooO;tball0HD;aRibo O;mesPoO;bserva14R;sa0NQ; nOce0RK;ut;afraid of the dark?,being servQexperiePthe onO;e?;nc10O;ed?;al o'hanl2eQuinoO;! O;iSXu0CT;nn3; 0N'0Made 0LhTtO;icOurD;! O;c11Cf06EmPoO;ce1;onkeXR; 0Ba04bishop02duYeXiO;e QmedesPpeOt0CCve of our124;laT9;!'6R;coSmPpanjaOrenaTLy0S2;bi;an0VBoO;untbatten-winO;ds11H;miBS;ry,ty0T0;chess Pke O;franz ferdinandPkarl ludwigP;giselaOmarie valerieO; of aUL;! of O;canterDNyo10L;eSicQnO;a purOgI;an0Y8; huO;maN;a,oO;lo0DIpT;ePlT0mO;an0US;neO;my;fiBga148;teryx;de triomp0SQsystem wP9;aaz PitO;ra0MD;kh1; general belg06bRchn11LgoQl0IImaicOny00Evinda sametha veera ragha030;! O;alY;n,rn; 01iQs,–israeliO; cO;onfli0FC;anVcO;! O;alRla0CFnuQscO;riO;pt;mera11R;phO;ab103; pO;eninO;su138;le0FDsp0G8w128;ra0B4;ib tal0LEuO;aOiline no11Z; SmaO;nOti2;! and the lostO; kO;ingd0IP;regAteen hungerO; fO;or12L; dhi25a1Te1Ph1Ki1Ho0RpSriQsPulAéritif and digestO;if;-c,is;c13Ll O;as0OTbowl0YCfools'FN;a0Ee0Bian0AlQointment withOrentice0FB; dO;ea0L5;e00iO;cationRed maO;theO;maO;ti9X; R-specific integratedO; cO;irO;cu0Z8;binaryOl0IBprogrammingOsoNO; intO;erO;fa120;! O;c0D6dai0NEiSmNVnetwork1Epa0YNrRsilQtvPwO;at0R2;!+;ic2;ec0RF;!d,i; wK;ndic8Ztite forO; deO;strUY;lachiaQreO;l,nt magnO;ituPZ;!n O;moPtO;ra0F7;untO;aiN;c07lloXpVstOtheHP;asySlesOrop0QN; P'O; c02;in the new teO;sta0C3;! O;in0QR;hOtHH;enA;! Onian and diony8H;abort mVcUglobal RlunarQpO;roO;gr0YR; modu7;maO;naO;ge0BR;re0WY;od3;alypPrO;ypQD;sePtO;ic and post-apocalyptic070o;! nowO;! redQ4;!aPchatpong weerasethakOnk;ul;ce0NG;aRex tw4oQrodiO;siOte;ac;ri0RV;nt0MBsA;!p,r0O1t0XVx O;legPpO;red0KY;en0Q1; sYcheOrthe0YLt0UP;! O;cUhRkQlOsHDtomc0MQ;icO;en0ZG;af05Y;ado08KttpO; seO;rv0;assaO;ndG;ty7;ll2; haru I5i VkTlRmg,rtic Qsta Ou0YV;vaO;llE;a0R7dissT6;! O;ma0DK;igaO;haG;koXDyū0J3; FHaE1bariE0cDHdA0e9VfCAg7Sh7Qi71jelica huY5k6Yn3Wo3Ns3Ft04uUwar sad0M6xietyTyO; givenRa PdeOthing go3;sk;chalOtaylor-jO3;otG; suEJ;! d18; mWbFel Vnna0IVpamRrag kashyQsO;!hka shO;ar0SJet0TX;ap; Oaa;kh0tO;ripO;at0NQ;aa;alV9;! an2X-man2Va2Pe2Mh1Ni0Qje tra0OEoUweTz,ónio O;de oliveirPguteO;rr3;a sO;alO;az9;rp;ine0EnO; 09iQy Oín dvořák;bli032sO;ta0SW; 04a 02nZo O;bWcVd'ami0LXgSlQrüdPsal0HPvivO;al0NM;ig0;u0L1ópez de santa O;an0L0;iovinOramsYT;azO;zi;onH;andOro0WK;er0ZG; scRFe Pus O;piD;pl0B3waC;kiV3thO;om0ZB;gaudí,poO;ro9Y;chOlavEyel02W;ePiguO;rh;khXO; PtteO; b0E3;de saint-exupéLfuq0JWgriez0HDlavoiPweO;slE;si0;-0Bb07ch06g04h03kythera m02m00nZoXpVsOvirus JS;emiDRociO;alO; pO;ersonaliO;tyO; dO;isoCG;oOsych02;d3pe;ch,xiO;da0ID;aCQoD;aOoTT;tt0;echa0NP;e0MTisFB;en,uaO;! and barbu0WK;olinerg0YWri0V7;iQodyO;!-dependent enhanO;ce08E;ot0YS;aUcoCCdefamation0A0lock brakQmaterielOven0DL; rO;if7;inO;g O;syO;stQ8;ircraft0JZmeO;rica0N8;oWrO;ax,opO;icRoO;ce6lo071moOsCC;rpO;hi0OH; prO;incO;ip7;ine 0Clog0Any O;a06b03c02d012ed5fauX0h00jZkiedFlapaYmVneWOof pad0IMpeUquTraT7sRtrolQwePzerO;be;in0;lo0LW;alOpilot0LY;er055;ay7i0FY;r3EttF;aPichaeO;l QF;ck0V6r0HR;glA;eselnSMosh0IA;e0T9oO;p37roZM;asVA;lu0H1oPuO;rge0W9;urda4y7;lbaPndO;e0BSre0O5;ne0VM;y O;se0OD;hu0FL; Oat0lo0LA;pavel01LsundaraO;ni0FK;goSl04UnanaQrO;cOes;tiLV;riO;vo;ni0TM;! and the waO;sp;ste0SM;chlu0VPel Ti QonOu faJA; mO;ou0GE;c,escapO;e O;coK8;aOelgo0WR;da0US;aUha0HXmalTnymousRrexQther th06PushkaO; shO;ank9;ia nervo0E0; conO;te0G3;i0DXocC4;'OʻO;i NR; 2F-margr0SMa0Xe02iTo RuO;ncPs horribO;ilF;ia0RT;doOmun0K3;mi0LT;-frid lyngVe O;beThaCleRmuQoaPpO;ot0RT;klE;rp0PK;iboOnnX7;vi0OH;sa0FM;st0RQ; Z-marieWliTtte Qxation of crimea by the rO;ussian O;fede0RE;bPfunic0N4oO;'too7;ad0OSe0M4;d,ese O;miO;chI;! O;du0DPmediO;waX6;arWAbZfranYhUmu0FIof TrRwO;ePith an e,oO;jc09X;yi8;i0UOoO;bi0NU;aL9clOUgreen ga07Qki0NI;aQeOidalJK;c0JSgO;er0OX;th0PC;cFk;aRoQrO;onO;të;leTKnQB;nOxt0;croO;ft; 08-06att0JHbeZlVmarie tUpurnaOsophia ro4Y;! O;iRlaQpiO;ctO;ur3;bs;nterac0AZ;enP5;ePynne mcO;co0SI;igh Ona baerboJ;ashKQ;llPthO; gi0M7;a sciRe O;comePwaO;llF;s 0SZ;orG;louise ploOmaria sieklucZF;wm1;a0Hbary0Gc0Adi020f09gu0CRh07jKk02l0M7maYnWoQRpVrTsQtoPunC8winO;to0AR;dd,rv;aw0IYhOorok4;aOcherba01;ff0;iOudoZI;char0B5;aqu4oppleL1;eOicoleO3;ag7;d5IxwellPy O;wo8; maO;rt4;areni0FEendRoO;nk7urO;niO;koSS;riJ;opO;kiN;arFriI;aShO;aPluO;msSG;nceO;ll0QA;mp;shnikS5;ka0EZndO; thOe084;e 0EQ;cUdRjPsarOwiWN;no0BL;ilO;li1;oPuO;nh0QA;wd;leMSouPuO;saJ;lt0;aGh,le–brachial pressure0SNylosO;a0EGing spondylO;itF;ka noni 0Bl08mTplSrudh ravichaLQsRta O;ek0BTmPpallTEraLGsarkeeO;si1;ui;e,h gi0P3;ex,us 0E1;aSeOi0JJ;! nP-influencedO; a06V;etO;wo0OT; and animDl TnRtPxO;! 0DU;i2roO;niP;iaO;cs;cQfa0FLhO;ou0R2usbaO;ndL;ros0HA; Oi05C;amOda0K3k0I3;ba0I6;ro0QW;edOui;onA; l0K6e10i0Ukor w0E1l0Bo02r00uO;il0RXlarSs O;deaQiPyO;ou8;mr0PY;yt2; Ojs;fQmoment0CZvO;eloO;ci0LS;requO;enO;cy;ezi meIDy bO;ir0GV;laSstura bQuO;lê0RVrie O;ri0R6;itO;te0PW;!nO; cO;ivO;ilLI;e04ican01oO;-PspO;heB;inXsOzuluLE;axonPoviet invasionO; of ir1; Os;rE6settlemenO;t O;ofO; bO;riO;ta4;di1; cOi0HW;hurch of southernOommu024; af02;!rOs;fi0IS;e Ona;bRcepe0P9dPever0K3haO;rm2;icO;ki0JJ;ow0OQ; postecoglIKlPviO;n 0CB; 05's04aUina joSsO; inO; aO;meO;riFS;lOrd1;ie0K9; Oba0LX;baVcTdU1kiSlansRmeQraPwO;hiH;yn0;rkI;buL;nsE;artO;wr0NJ;sse0HN; eDY;f5LhQiO;nveO;st0N1;aOea0QK;s O;faXD;mQsOu0GU;thO;esA;ia,oO;i,m0CB; 32a30e2Sh2Pi2NorGr0Gy O;be0Cc0Ad09f06g01jasC6k00l04CmXrVsSwO;arh0PFe0MChQiO;llO;ia0OA;itf1S;am08PerkPumO;me0O0;is0JE;e0NDicVUodO;diJ;ilonPuO;rrKschiCC;akF;au0H9;aQiPrO;iffi07R;bb;rcOv4;ía;airweatherPorO;dh0MI; l0NE;aLZe07YiJ;arOoh5;roC;rPsO;he9;na0N5;a1Te0Fiy s0Do03zej 00éO; Ss O;iniQmanuel lópez oO;brO;ad0LV;es0PM;ayBXde shTle nôtBoSpRrQthOvillas-bo0P7;e gO;ia08U;ieu;rev4;na0AG;iel0DW;du0N3sapO;koO;ws07H;gWid SmedaO; gP–milky way cO;olli0AT;alaO;xy;application packa06YstQtv,veO;rsionO; hCW;udMX;en,yJV;hevO;chKS; 0Za0Ressen horoQTi 0Nw O;breitba0OQc0Edice 0Df0Cg09j08koPGl06m01ng,p00rVsStaHuRKwOya8;akQiO;gOl3;giN;ef07;chuPtaO;nt2;lz;annRidgQoO;berO;ts2;elE;el0M6;arker b55;aRccO;aPoO;ll08W;rt0HN;do066;aQCi0CRloyd weOuJ;bb0;acQ3oh0GF;aOo0MK;rfO;ie0MI;linto05Zo0AS;clK;aRuO;nPoO;mo;an1;lPrO;neg0LC;laO;gh1;arloJBchikati0EYsakhQtarO;koO;vsM9;arM1; Rs O;cOwei05R;hrisO;te05;anQbOco0GHga00Ajeremi0DHpir0EQriseb002;a8ocO;el0E3;de0LB;agObrauUCiguo2S;as0DX; dK; osI9e macO;doDZ;adh0MHraO; praO;de0EM;anTrsOs; Qon O;coOsLT;op0;behring breivI3thomas jeO;ns5; coO;nd0JG;lusAman O;and nicobarKSiKT;gaHthen there were O;no6;ho05ienO; ré03t O;aZcartYegyptTgreeQhATolOro0MK;ympicO; gLM;ce,kO;! O;ph0Ure69;!ian O;dQrO;aceOe66; controver8F;ei0HB;ha04I;lPstronO;au0I1;ieN;gi0M5;vy;vu; 0Zb0Vc0Ugr0J2heim d0Tl0Bn09phylaxFrch01staZtOïs n4;id085oO;lTmO;ical terms of RyO;! of a O;muO;rd0;loLQ;iPy O;dyatlKFkarpKF; bOa;oukre0DZugors04D;cAs mikO;oy1;i0CBo-Oy;cQprimitiPsyndO;ica58;vi0C8;aPoO;mmu0AR;piO;ta53;dabazar patriQHsi,ya paO;ndK; s0KYges0LXog00yO;sis UticO; phRal Os;ePpsO;ycUD;ngi6;ilosO;op0EU;of variRpO;arO;alO;ysF;an0KE; cQ-to-digital O;coO;nve0E5;omO;put0;uc0AY;hro0A3on0J1;apQolic O;steO;ro0IB;ti0BE;brnabPCde PgastOkaspa03V;ey0;aOla regueG;rm0KQ;aWeUinspectorSlushanPofficer and aOyuSC; gentl0V; rO;ebelO;li2; cO;al0IH;duKAvening with silk sO;on0KX;ffair0ELmerican O;piRtaXCwerewolf iO;n O;loO;nd2;ck7;a5Ob5Bc 57d4Ze1Yh1Ui1Rl1Om1Fnes1Bo15p0Vr0Qst0OtrGJu0JwKyOél0HY; U's bakiAVbeth mcnTgSlPotrophic lateral sO;clerQ; and the sniffe0I8oO;idOse;osF;da0JO;ul0DQ;a0Ab08c04fi03gFMh02ir01jM5klobuch9l0BUmaZpXrWsRwPyasO;beJ;ax,inO;eh0ID;chQedPherman-pallaOma0K4pa02J;diRF;arF;neOum0;id0;ed9Uy1;aOoeY0;scM;cOd70;do0CO;vi8;ennFS;sh0;a0COoneyO; bO;arO;re0AM;el7rennO;em1;ck0da0HN;l,nPsement O;pa0FB;!dsen–scott south poleO; sO;ta0EW;erdamOrad cpc;! airport schiph0IJ;apali g1iQullah sO;alO;eh;shNEtO;a0CRs9;erWhSliO;fi0tuO;de O;moduO;la0EK;ePibiO;an,o33;taO;mi6;e,sa0EX;e005l0E1nRr Ps tam0FPxiciO;ll4;fa59tO;owl3; Og D;amSUgö00O;ia,tyO; iO;nterO;nationM;an,onO;iPoO;id0CH;a,um O;chQnO;itO;raH;loO;ri5W; ame5e00AoO;diOg0IO;pi6; koshimiPga,no0FLsh,tO;abh bachch0BKripty05C;zu;ar0IJerstO; cO;olO;le006;deo modigl2Nesha2Llia 2Jnhotep i2IriOthy0EQ;caOgo vespH5; 2C's 26-23n Os;a1Sb1Pc1Hd1Ge1Bf12g0Yh0Si0Jje08Tm0Fn0Cp04re02sVtSunPwO;ire gau001omen's voluntary3D;ivO;erO;si0BF;op BNruckO; simO;ul01G;amTiRnQoOtaffordshire01;ng conO;te0ED;ip0;eZQgO;n Q1;oa;uSAvolutionO;!aryB7;iPsO;ycCH;cSt O;buO;llO; tO;erMR;ke0F9;azi0ASinja wO;arO;ri0DR;afAcgeeQotorsO; cO;orpo0CN;!'s0BM;dVmpTnO;dQstitute inO; taO;iw1;ian O;wa0EW;erO;ia0C;i0H5ol;istorySoOu5U;cQrror storPuseO;wi0GG;i3y;keySC; x;igo07YoQrO;afO;fi32;ds,th0GY;ilm instituteVootballQrO;onO;ti0;! O;co0CleS3pPrO;ul3;osO;it09M;! 5S;ngQWxO;cepOpR4;tioO;naO;li06O;ec03Are0D0;iRrPuiO;si6;ime0F3oO;codi7;nematographer manuMvil O;reOw9;liO;gi2;is2lacOr6Ful00J;k O;be9;irWllVnd british english spelling difUsStOuXH;hleticO; coO;nfO;er0D6;saO;ss4;fere0EL;igZA;linesLT;class amphibioO;us assaulO;t RK;gQnext topO; mO;odI;otO; taO;leYY;cQfO;erO;reG;hav080;!ii;ear080kinOwaM0;ka2O; pO;atI;ia04N; QahlO;'sO; l03W;accelerated prQradeon O;soO;ft06W;ocessingO; un0B4;nePtheaO;tr3;twO;or04M;erTiQliProsO;e,ia;n OI;entOgr0BG; mO;us0EX; OgrF;hSmidtRroseQtPvallO;et0ES;amblCT;! rev04G;hu6W;ea0C1;do c18im warrior at the border01Gl13n0Ir0Gte0Cury gui0BzO;ing 07onO;! Os;a02b01ec99fire 00gD7kiZluXmWprimeTrQs05VwebO; seO;rvRN;ainOiv0;foO;re0AS;! vO;idO;eo;echanical tu09Vus0ED;mberOna;ya0BM;nd7;tv;as4;ir,lePppsO;toB;xa;faOg0BY;ntaO;sy;ch2;raQurO; rO;adBQ;su;'e stoudemiBanVHetV6tyO;a s5;cio or07dRgkurat ii of matI8ita O;muscPphalloO;id3;arA;a Ola stDK;abbi01b00crZdonohYgoXhold5knEHnWow5pTrighRsO;chuCeO;al3yfO;ri08F;etO;ti;aPe09FluO;mm0;lm0;un3;rm1;oe;ew;laEIyn3;ngt2;te9N; cQa GXee,fiO; cO;oa09I;loO;onE;arrillo fueO;nt3; FJ-FDaDGbCMcC2dBMe78f6Kg66ham64i4Kjamain4Jka4Fl1Vm1Qnwick 1Oo1Kp14s10t0Aum04vin Yways on my08PyPzheimerO;'sTS; VsQvia aO;lynO; li08M;on Psa miO;laJY;hannPstO;on0;ig1;mH9raiG6;and the chipmSbraRkQsO;arO;geVY;amaG;gg;un025;!iniumO;! O;allQoO;xiO;de;oy;-r08Ya08erRon PrO;ui02I;toO;we09X; 02natO;e ZiO;ngVve O;forThip hJDmeRroJversions ofO; sO;piderO;-m1;diOtM;ci6; ge1H; cO;urO;reV8;hOreality VO;is0AN;brTAeO;go;iPmont freeO; conce0BJ; rOcLO;epO;ubl0BQ;aOtQJ;ceOgoff 2O;!–lorrO;ai6; arsl1a02hSine PrazOs;ol081;lOskii8;inO;ux;aSonsO;e mPo O;daD7;ucO;ha;! Ob077go,zeZ5–beta pru019;cenQpO;artO;ic7;tau06T;ca;e QisOk kanojAnzo g02Hpecia area0B3y; hiO;tl0;veG;caO;st7;aQoO;had02Dnd,stO; faA2; mOty;at0; 13-0Ya0Re0Di02m01o00sZuQy O;mcbeMsheeTDwaO;lk0; arRri sitarama P–konidelO;a 1Q;raO;ju;aRjunO;! filmography anO;d O;awGQ;vi067;pi09Bvensk1;saVAtropes ofU2;ov07Ous0AG;eQgTQson O;jaOmaJstokBK;nnE; sherRUdPs of world warO; iJ3; invasion of siS-occupied O;aPgeO;rma4Z;usO;trA;ciUE;gTn O;duBPginsSCiveO7kRlPstanO;fo07D;eeXZuO;dd5;le4;iant SoryQrO;a O;versa08P;! of theO; caYM;a05LsO;taO;diU3;hTn O;hPlaOsaint-maxim4;mb;ePoldO;swKS;inRU;!ab04Y;russia state television and radio brOtime olympic games medal04Q;oadcastiO;ng O;coO;mpa46;a0Pdogs go0Ne0Jgas no br0Ii0Amy07nippon04of us are03quiet on the wester01rights reserv047tQyouO; need is Or base are belong to D;kiCloY4;hRoO;morPo O;weC;roZP;e Pings must O;pa07O;bells sKlight we cannotRmoneyO; inO; tO;he076; s00D;n fO;roS8; de04C; aO;irO;wa12; cO;hilO;dr5; want for christmas isTnPsO; lo051; thOdia trinamoolJ4;e O;faO;miSV; yO;ou;ak3;litePyez oO;n 07Y; wO;rest00K; to heO;av5;boutR4long the watcO;htMV;lOne;iOo059;! mO;etM; ster00B; 12a10baba 0Zc08e02reza firouz01sQtPyXTzO;ée;alA;on TsRtair O;macPovereO;em;le1;a white-glOon;uz;br054dooQGeaRkrQloPOmoy03SpiCsO;tea36ud06QweO;enE;au06B;stE2;ja;nOxpI7; OwaB;abdQresuO;rrO;ec02S;uc02R;anHeSia O;keQnaYNsilversPvikaOwiY7;nd0;to6;ys; P's adventures inO; wond00;br06co02e00in XkriP3lePCroVsUtullSwO;alQeO;idItterO;lu02Y;k0t2;y O;haC;pr03J;bOosevelt longwIB;er02F;bordPchaiO;nsT;erZN;ngle06QvO;aNe;ltQopO;erO;! YG;ra6;a37ooWD;cLZgO0; Osi8;bhaXFshawkRY;baba and the forty tQeren demirez5fazMhePkhamenDMlaZDmacOwo8;grV9;ws2;hiO;ev3;bGduliO;llW8;arVBeSie044oO;nquiQrithmO;!icO; traJS;n CD;bGeVriaO;! PnO; w9;naO;tional fO;ooO;tball O;te02O; sEL;a06ie 04onso 02reO; wooJDdO; Po di stéO;faD4;aXbWdUeThitchcockRjoQmoPnobIpennywH7rOtAA;os5U;liQX;dl;! O;fYXpres00X;noTT;reO;yfD;ur6Y;dl0;cuarónYQribOxi01A;eiTJ;aC9soloO;moN; romeoPlO;fa;! iO;n O;formulaB8;!c 3Yister cro3Xjandr3Oksand3Fm3Ep3Bs34uti30xO; 1Ya08e04iO; lai02s PthO;ymA;arZbledIdVkUmRohaQsPtO;ex04W;ánX6;ni1;acO; aO;lliUM;na05;eOzieQ3; tocquOnis4E;evO;il7;qu5V;ho;i navalQy O;oleynOpajitn31;ik;ny; 17ndO;er 01rO;a Qe Oia ocasio-cortX8é pölPK;dOlacaz5MpaM2;esplPYum04B;bWdaddVelbaky1gUhedTmariaSofQpaNLshiPtruO;so34;pp; denO;ma004; laG;is2;raNS;ar2A;otWWreckenrLV;a0Mdreym2f0Lg0Hha0Fi08kere07l02m00ne2WovecZpWsSt8PvOzverW5;inQoO;lkanoOn humbolAF;vsMG;dm1;criQidd00kO;arsO;gå01K;ab4;ay6oOusQ;pe,veO;tk4;hk4;cqO;ue5;itvinRuO;dwPkaO;shP;ig;enBX;ns26; oRiPsO;ak; oPiO; oO;f O;ruO;ssA;miO;lt2;odun1PrQustO;afO;ss2;aham 59othendieJ;le5D;cSlQrmO;stO;ro8;b2ekO;hi6;os03A;bli01TcSdRiPpenaveO;ga;nteO;rnZ4;avalUIem00F;hu8;alb2bo0Ncaru0Md0Lf0Kg0Hh0Cj00Lk07l04oYpeWrSsBKtQwO;iOolKS;nt0;rebOu9J;ek;aQid0oO;driO;guVD;mírVC;rOttyf0;eiG;'loRxlade-O;chO;amberO;la4;ugO;hl4;aPifO;es2;nQ3wNY;iQuO;rtO;zm1;ngO;st2;asRiQoO;nOr6;no00K;rsQB;seC;arUXrO;eenO;wa00F;ergus2;e minaI4imitri1L;so;rs28;anO; iO;slO;anQG;ha dTsO;andrOia caGo;a ambrosQo O;del piePRnivo011vO;ol01U;io;ix2;hOpo;! O;nuVI;anQY;ar Tr O;akQdug4karPsolzhenitsO;yn;el4;imO;ov;hPmiOrak5Mvuč5M;tr5K;em2;aTo O;cao de benRgonzález iñárriQjodorO;owsO;ky;tu;ós; sO;ilO;va;wlE;bPdouglas-Z6gO;uinZM;alJR;abra giant t01eXiWoPrich O;am3; gSsQusO; huO;xlE;teO;ro6;ucO;ci;!s hodIK;bQn ehrenrPrO;nEsh00P;eiOP;ar1;ortO;oiYN;atraz 05hem02ibi01oOubierre3S;holOn A4;! TiO;cOsm; dPs anonyO;moD;riO;nk;by voluZWflushSiQpO;roO;of;ntoxiO;caVH; reB9;ad3;ical Oy;syO;mbZ1;federal penitentOisSR;iaL;a09ePiOrecht dür0us dumbledoB;niQ6on;do,rtO; Ra,o fO;ePujiO;moVK;rnáSB;anastKHb01c00eiYfiXiTkesselC1pierrepSsPweO;sk0;alRDchwePpe0tuivO;enI2;itz0;oiJ0; oPiO; oO;f bO;elgiJZ;nnEsh;nsO;te4;amD;litNJourYMrP0; RniaOtFI;!n O;la7ImO;afA;baptQflProhrwaO;ch0;or3;isZ8; vaikunthapurramul1Jbama1Dddin1Cin 18n02qua00ricZsQuddin khalPwO;it3;ji;kaRtair O;cOsCM;aOoPH;mp0T;! Pn O;bush 4ZmalamuH;aBGpO;urcO;haWX; i; cO;ox; Sa Pis morissOs;etH;de la gOhaC9;arO;za;a0Nb0Lc0Jd0Gedward 0Fgreen0Ej0Cla09m08p06r00sWtQwaO;keOtTZ;! U7;hRitchQuO;dOri8;yk;marPN;icO;ke;chaQhePilveOug9;stU1;ar0paVP;af;iOuJ;ckOtchs2;manO;! oO;n screen and sO;taFX;arOriWZ;k0soNtrFJ;e0XooB;dd,sO;ceO;ll3;acO;ks2;sp1;beC;aPershoO;wiPY;vi3;aQHumO;mi8;at3enO;neOE;lVCrk4;dePpO;roTY; boOl2;tt2;! sa6;! crimson tideQ–georgiaO; football rO;ivalL; fO;ootO;baC;oo;aQbiPghazaNOqO;aeUY;ruMI;ndPqsa moO;sqL4;alD;ahl02ca01d00fraZgYhilal sXjUmiTpacinoRsO;harPteO;waWU;pt2;! on stage and scO;re5;chaeUI;azeeraPoO;ls2;! e74;fc;oBre5;nk5;avF;po6;y O;sc;a0Eb9h0Ai02kZm,on,rotiri and dhekYsWuO;damaTla-O;classO; sO;ubO;maO;ri6; dO;riL9;ai Ohay0K;ch4;elA;adian Pineni nageswaraO; r3S;emH7la4E;hiDKnFLo ōtsu0Sra Pva goldO;sm1;isSkuPtoriO;yaO0;roOsQ;saO;wa;hiTQ;anTPenat5ilO; Pesh yadO;av;akkineL7;ike information crWnRri kiQsOthisA;aROhic recordsO;! of bastard magic instruI3;tō;e yPkshaO; puRF;amO;agO;ucIV;iteO;ri2; 02aSeeb daastaaNithRla tomlO;janO;ovO;ić; kumarOJ;gajanthWntUxQy O;devgnOHgO;hoMK; tO;heO; gO;reGJ;a cO;av3;arRQ;lMKmPstO;yl3;ichalO;ka; 1Zchi 1Sd1Iki1Hlee1Gme16n11rWsO;hPling O;bONfrancioLB;aRwarya raO;iOjeM4;! O;bK3fNZ; tO;yl0; 05-t02asAbYcraft Udr20fo7CpQsh6LtPwoO;lf;ag;laQoO;dsOrt;! pIK;ne,y;cPinO; f7I;arO;ri0;nb,orne early warning andVusO;! belugaO;! O;xl;o-airO; mO;issi7;aK5c05euro04f01gTAi1ZjoRAkor00new zZpollutXquVsupRtrafficO; cO;onO;trT5;eriorityOpEI; fO;igO;ht0;alO;ityT3;ionO;! iT2;eaMN;yo;orcePrO;anSRy0; o6;pa;anadaQhiEToO;nditO;ioJR;! fO;lePN;sley earQu O;peO;op7;harO;dt;eOr; R-ffionO; eO;dwO;arHW;gaRlou QmaBCteeO;gaO;rd5;woT0;rcA;!n wuornKM;do;an Py brO;yaCH;gRhQqPtuO;rn0;uiB1;utchiL4;alPiO;ll5;laO;gh0;pStO;elevisiO;on O;broadcO;asSO;refO;ecF5;dQkaPweiwO;ei;kuKJyaS;unO;ge2;eg03mXn RrQsoka Oura mazQA;taO;no;im1;bRePhyo-seO;op;unO;-j4;o-O;hyRB;adQeO;dOt ertegR9; i,abNP; shah mPiyO;ya;asso7F;ao;a15e0Bg05ile software02nXoVrO;aSicultureO;! O;inO; iO;ndA;! O;foRP;da,raO;phC4;eRosPès vO;arPI;tiO;ciHX;s mooreN5tha fältsk24; dO;evO;elop1A;lutinativPretsuO;ko;e O;laO;ngO;ua99; Zi8nt Ws of consent O;bySin O;asAeuQtO;heO; unDY;roF4; cO;ouO;ntL;orPsO;mi8T;an8X;disparity in sexual relat03of O;aqua01c00diYeTmOtB5;ajoRytO;hoO;loO;gy;riK7;ar8KmpiresPnlO;ighten0J;! iO;iOv;!i;scoO;veL;onseA1;riD;ionsO;hi0R; 00memn2pe,rYtO;e,hO;a Pe roussO;el7;christiePhO;arkP0;! R's O;maPpoO;irQD;rp7;bibliJG;!icus bispO;orD;coQkhanO;! O;iv;ok0;c 1Bf12g0Zi 0Yr00shanZterO; TlifeSmath O;enO;tertO;ainO;me9B;! of theJ6;eRthe Pwe O;collidKSfeC;daLGthO;inKV;ar7H; azL9;iToaO;siatO;icO; lO;anguO;ag3;caRkaO; kOaNneN8;orO;ps;! cup09nO; T-american O;cRvernacularO; eO;ngO;liGJ;ulBQ;am00bushXdVelYnatRuQwildO; dO;og;ni2;ionalO; cO;ongO;reNO;iasO;poG; elO;epO;ha8A;erO;icaN; ofO; nHS;feL7;haO;niO;st1; 0Eair of the diamond neck7NiQordable careO; aO;ct;liateRne tPrmative O;acJU;ransfO;or25; maO;rkeOD;aWbournUchQnPwimblO;ed2;or62;ampO;ionsO; leO;agC9;emO;ou5W;jPsianO; c5H;ax; dil hai mushk0Og0Lne0Kr07s01w OxN6;battle of the belJHdYramXtPwO;orld R;bPnO;t P;s O;chO;ampO;ionO;shO;ip;pa5M;ynaO;miH; instructionSchRopPpa,theticO;iDWs;!'s faO;bl3;ylD; sJK; Yith gainsbWoO;bic exerciLLflNJgIsO;mithRol,paceO;! eO;ngineeO;ri8;! aO;lbumO;s EZ;orO;ouGN;liO;ngD;as,id;ean Ois;aOsGT;irl9W;il; 63-61a48block46d3Ne3Di2Yj2Slai stevenso2Rmi2Jnan 2Fo1Hr0Pult0KvSwaBx flRzuki Qèle O;exarchOhaenI;opoulEE;be1;orK4;aWeO;ntOrb;!ureO; Qs O;in babysOof huckleberry fi4S;itMO;fPgaMBnOtiMB;ovI;icHY;ita ved05nceO; publ03-fee scJ7d O;audiZeUmRvO;ector extPiO;deX;ensFI;essage queuPicro devO;ic3;ing34;ncryptO;ionO; sO;tanO;daJP;o O;coO;di8;icF5;anM7; OeL;aPswOtrainDJ;im;niO;maHA;en0BiO;aYenO; Ue misTne O;baPshO;el68;il2rO;beO;au;hl0;agrPbroO;dy,n0;esH; arjo6PnPticO; sFB; Ra liDIne O;cPpalO;ic3Q;urL;chSgreRleQnewEpeO;teO;rs2;st0wF;ni0;aJFil3;alQergicOoch4L; receO;ptHJ; gDYi6;beYlPnFrationO; of the ma0M;eVfPphe thO;ieIT; Oo suárez madrid–barajas8K;eiRhitlerO;!'s rise toO; pO;ow0;ch2X;scI4;! O;a07creative 03dream01flashYiUlightSpPsO;ysteIQ;hotoshopPremiereO; p8Q;! 7V;roO;om;llustr43nO;deO;siO;gn;! O;plO;ay0;weO;av0;cPsO;uiH;loO;ud;crob5Mfter6EniO;maH;januzQkO;hashogO;gi;aj;nistrative Rral gorshkov-O;classO; friO;gaH;counties O;ofO; eO;ngCO;n FL;acencyQecPoa andOugateQ;oh;ti8Q; mO;atrO;ix; shan01abaticYdasWn VpuUtO;i rao hySya O;cQroy kO;apO;ur;hopG;daFA;ruAR;roI4;! yeeO;zy; pO;roO;ceHZ;kaG; eVelUlRnPwale akinnuoye-agbaO;je;!osineO;! triphosAT;aide Pe O;diAVone night on3J;ka6; akht9;dmonO;ds2;ams family04e03iTress O;bRresoluO;tionO; pO;rotocHW;ar,o9D;cE5sO; aUonO; R'sO; dO;isO;eaGT;r4EtiO;ml4;baO;ba;raC; vaO;lu3;! O;plD; 1DbooEVmVnPsO;sa; cRa demirspEOiO; gO;roO;up;anO;to; S's O;aQbrPrO;ib;idZ;pp7;a0Vb0Pc0Nd0Kg0Eh0Dk09l05m04n01pa00ricZsRvinatQwOyau65;arOeEH;loJ;ieDQ;aSchPmiO;th;iPleO;si05;ff;ndlPvaO;ge;erAW;hm1;ge,scM;euO;maO;nn;ckK;aPeO;vi6;lla2LmO;beHC;inPownacO;ki;ziO;ng0;ilEZ;ilRoOranduciI;dlEldO;beO;rg;chO;riDM;ePrBPuO;ri9C;m8Jvi6;o7uO;rtF;alSea53ilQoh9AroPuO;xt2;dy;zeO;ri1;dw4;m4nQrO;cOk4;huleGV;dOt; e5N;loOwo8;veO;laFL;roJ;ck;blO;oc1F; 3Ga2Dc1Xe1Mf fioren1Kh16id 15kerman12ne,o0Xr0ItXuO;punc2Yra,te O;acTmyeloid leukSradiatiO;onO; sO;yndO;roFY;emA;ceO;nt;iQs of the aposPuO;atCI;tl3;nopterygBUonXvO;atTe QisionO;! blizO;zaDI;direcEWelectronically scannedO; aO;rrK;edOio0I; caO;rb2; O-adventureP;bro7ZfiTgaFGpQrole-playingO;! O;gaFE;aBEotO;enO;tiM;cAZlm;oQylonitrile butadiene sO;tyO;re6;megaYnXpTssO; tO;heO; uO;nivO;erDJ;hQolisO; of atO;heN;obA;ym;ly;nOrn;cPitO;um;agO;ua;n O;fuO;ncAC;ra4;aemeniYelouWilleQondroplPraf haki6Ntung O;ba9S;asA; lauroQsO;! and patroclD' O;heI; hijO;acO;ki8;saO;urD;d O;emO;piB;tiO;na; Sh,tO;icBMo6ylO;cOe6;ho1CystO;ei6;aRcombQfrePof O;baCH;hlE;at;ttoO;rnE;eZipitriXorWra,uO;racy PweaO;th0;and prRinternational aO;rcticOwm; waO;rfaB;eciO;si2;!di2;dOform3;ae;lerOn0D;ationPomO;et0;!i42;cAdPpulO;co;emPiaO;!ns;ic 09y O;awardPof motion picture arts andO; scieCC;! for best Os;aYcineXdUinternational feature 8Soriginal sSpRsupporting act04visualO; eO;ffO;ec8X;icX;cOo8;oBrW;iOocumentaryS;reO;ct9M;mat6H;ctTdapted scrRnimatedO; fO;eaO;tuB;eenO;plK;or,reBQ;dXgrading in tPranking of world universi7PteOye9;rm;he O;phSunO;itO;edO; stO;at3;ilippO;in3;ePiscipO;li6;gr47;cobGpower plugs and sO;ocO;ke83; inb4Ga4Db39c35d2Ce22hi1Ti1KkhazAle1Ho17r0Ts0AuPweO;hr; RgiACja,l a'la maudu06ndance of the chemO;ical O;elO;em7N;az03bakr01dhabiTghraib torture and prisonerRibrahim al-hashimi al-qurPmusab al-zarqaOsimbItahsin al-salQ;wi;asO;hi; aO;buAF;! O;inO;terO;nationO;alO; aO;irO;poBY;! al-baghdaO;di;raI;-cbn,int05oluteWtract PurO;di27;aBSdRexPsyntax O;tr3D;preO;ss0N;ata O;tyO;pe; Oly fabuloD;moTpRvPzeO;ro;alO;ue;itO;ch;naO;rc4R;he;aPuzO;zo;hamQj OxB3;al ba7FkudO;ai; Oic relig4C;aSbeaAWinQliPmasl8Tvan helO;si8;ncoln; iO;sl7S;ccO;orO;ds;lUrPut O;faH;iginal aQtionO;! lO;aw;ustralO;iaN;itO;ioO;ni12;i11ton O;liO;ve;dj1gail RogPyO; ahm5M;enO;esF;bresl4sQtO;hoO;rn;peO;nc0;jitUmanyu Sshek O;bPkO;apo6P;achO;ch1;dassaOmishGs3P;ni; banO;erj1P; viWbUl fSrO;de5fanO; dO;isaO;st0;erraG;ra;ooO;ks;go7Q;alla hamd0Fe08ication of edward07om01uO;cWlOwali mu80; hamid 5Klah Prazak gurnO;ah;iiSoO;f sO;audi aO;rabA;ia; of 6P;tive rO;eaO;soO;ni8;en,inal O;aorticOpa4; aO;neuO;ryO;sm; vi52; ezzalzSl fattah O;al-buQel-O;siO;si;rh1;ouO;li;ok; PdeO;fu;neOs0G;ws;!a0Iey 0Ci03ott Vy O;and brittany heTelRlO;ee O;miO;ll0;lioO;tt;nsI;and coSeleQlaboraO;toO;ri3;menO;taL;stO;elO;lo; jUe O;corReQhO;ofO;fm1;at2;niO;sh;acoO;bs2;lSroadO;! sO;tuO;diO;os;ee;! UsO; kiarosRidO; caO;liO;phaH;taO;mi;diO;sc14;cDdd2lo6ndonO;waB;ne;ev; b19ch5dha9kanksha15m0UrRsmah m3PyushO; shO;arO;ma;d0MhDne–thompson–uth0Kon Pón sanO;ch07;a0Gbu0Fc0Cd09e07h04le02mcgrud0paul0RrZsStO;aOve3N;ylor-jO;ohO;ns2;oSpQwO;arO;tz;elO;li8;rk4;in;amsPodO;ge4Z;da7ey;nn2wF;is;ernaO;ndO;ez;ckO;ha6W;esPoO;na5A;sn0;aPopO;la2P;rt0;rr;shO;moB;er5V;us;maOva2C;n animO;atO;ioN; aadmiVirO; khO;anO;! fO;ilmO;ogO;rapO;hy; pO;arO;ty; sO;inO;gh;ar;atO;teL;ha,leO;ague3WvI;el;b5Ec4Ld41f3Ng3Ahistory of37is for35journal for 32k2Ul2Rm24ni1Zp1Rquiet place1Pr1Is0Pt04vYwPyear-end meO;dlE;alkThiQizard of earthsPrinkle iO;n 5J;ea;sker Oter shade of pa7;awK;ay; to reO;meO;mb0;ery british Riew to O;a O;kiC;ll;scaO;ndM;a02hWown likeUriO;be called qSpO; toO; thO;e O;mo2;ue1U; aO;li4A;eoryPousand splendidO; suN; ofO; jO;usO;ti44;le of twoRxi O;drO;iv0;er; ciO;ti3;aucerful0DeZiWong of ice and UtQunday afternoon on the island of la grande jO;atH;te;op at wPreetcar namedOudy in scarl0X; desiB;illoughO;by;fiB;re;ngPster's all you neO;ed;leR;at at theZpaXrO;biaTiO;ePousO; m1;s of unfortunateO; evO;enX;n O;fiO;lm;raO;ti2; tO;ab7; ofO; secreO;ts;ainy day inQoom of one's0Xush of blood to the O;heO;ad; nO;ewO; yoO;rk;! part O;ii;ail ofTerfectRiece of yourPriori and a posterioO;ri; miO;nd; cO;irc7; aO;ir;ce place to visRghtmare on elm O;stO;reO;et;it;an who defies the world of bl,emory of07iUoO;desRmentary lapse ofO; reO;as2;on;t proposM;al;dsummer night'sXllion PnO;or;littleSways to die inO; thO;e O;weO;st; thO;inO;gs; dO;reO;am; lO;igO;ht;eague of theirOittl1A; oO;wn;indTnight'SoreO;an oO;dyO;ssE;ey;s 27; of mO;ag2S;joO;rd1;an; acO;id; vO;iolO;en1D;ame oYentleman inVhost16ooO;d day toRfyO; mO;ovO;ie; die O;haO;rd; mO;oscO;ow;f thrO;on3;aWew goodUisPlock of seagulO;ls;h called wQtful of doO;llaO;rs;anO;da; m5;en;ll fromQrewell to O;arO;ms; gO;ra0M;aZiToO;g's way Rll'sO; hO;ouO;se;ho14;fferPscovery of witO;ch3;entO; wO;orO;ld;nPy in thO;e 0P;ce with dRgerouO;s O;meO;th0Y;ragoN;ns;a0Aertain 04hWinderellaVoRure for weO;llO;neO;ss;nfederacy of duPurt of thorns and rO;os3;nc3;es; sQ;arlie brown0Hristmas O;cSprQsO;toL;ry;inO;ce;arO;ol;magicPscientific railgO;un;alO; iO;ndO;ex;lQppOstle for03;elO;la;ifornia00l toO; sO;py;a03eautiful day in the00oy calledXrRugO;'s O;liO;fe;ief history Qonx O;ta7;le;of O;tiO;me; chO;ristmO;as; neighborO;hoO;od;bysitter's guide to monsterQndO; apaO;rt; hO;unO;ti8;ng;ndrangheQsalem'sO; lO;ot;ta;ovO;ic`"
  },
  {
    "path": "plugins/wikipedia/src/plugin.js",
    "content": "import { unpack } from 'efrt'\nimport model from './_model.js'\n\nconst plugin = {\n  api: function (View) {\n    View.prototype.wikipedia = function () {\n      return this.lookup(this.world.model.wpTree)\n    }\n  },\n  mutate: (world, nlp) => {\n    // console.log('unpacking list..')\n    const list = Object.keys(unpack(model))\n    // console.log(list.length.toLocaleString(), 'articles')\n    world.model.wpTree = nlp.buildTrie(list)\n  }\n}\n\nexport default plugin\n"
  },
  {
    "path": "plugins/wikipedia/tests/_lib.js",
    "content": "import build from '../../../builds/one/compromise-one.mjs'\nimport src from '../../../src/one.js'\nimport plgBuild from '../builds/compromise-wikipedia.mjs'\nimport plg from '../src/plugin.js'\nlet nlp;\n\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==')  // eslint-disable-line\n  nlp = build\n  nlp.plugin(plgBuild)\n} else {\n  nlp = src\n  nlp.plugin(plg)\n}\nexport default nlp\n"
  },
  {
    "path": "plugins/wikipedia/tests/misc.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\n\ntest('true-positive', function (t) {\n  let doc = nlp('i learned css')\n  let res = doc.wikipedia().json()\n  t.equal(res.length, 1, 'found-1 result')\n  t.equal(res[0].text, 'css', 'found css result')\n\n  doc = nlp('Melania Trump was trending')\n  res = doc.wikipedia().json({ normal: true })\n  t.equal(res[0].normal, 'melania trump', 'found trump result')\n\n  t.end()\n})\n\ntest('true-negative', function (t) {\n  const doc = nlp('i learned the csss grid layout')\n  const res = doc.wikipedia().json()\n  t.equal(res.length, 0, 'found 0 results')\n  t.end()\n})"
  },
  {
    "path": "scratch.js",
    "content": "\nimport nlp from './src/three.js'\n// import plg from './plugins/dates/src/plugin.js'\n// import plg from './plugins/_experiments/cmd-k/src/plugin.js'\n// nlp.plugin(plg)\n\n\nlet txt = 'toes'\n// txt = 'rooms'\n// txt = 'students'\n// txt = 'trees'\n// txt = 'eyed'\n// txt = 'sized'\n// txt = 'faced'\n// txt = 'admitted'\n// txt = 'substances'\n// txt = 'crocodiles'\n// txt = 'affairs'\n// txt = 'buddies'\n// txt = 'residents'\n// txt = 'girls'\n// txt = 'hills'\n// txt = 'commitments'\n// txt = 'units'\n// txt = 'banks'\n// txt = 'toys'\n// txt = 'lights'\n// txt = 'grounds'\n// txt = 'albertans'\n// txt = 'towers'\n\n// txt = `i sent the documents up the hill`\n// txt = `he would up stage his friend`\n// txt = `he couldn't off gas`\n// txt = `he got up over the hill`\n// txt = 'piled up over'\n// text = ``\n// let doc = nlp(txt).debug()\n// doc.compute('root')\n// console.log(doc.text('root'))\n\n\n// Underscore example\nlet text = `\nTo the window, to the wall below.\n_________________________________________________`;\nlet doc = nlp(text);\nconsole.log(doc.debug());\n\n// console.log(doc.docs)"
  },
  {
    "path": "scripts/chunks.js",
    "content": "import corpus from 'nlp-corpus'\nimport nlp from '../src/three.js'\nconst docs = corpus.some(13)\ndocs.forEach(str => {\n  nlp(str).debug({ tags: false, chunks: true })\n})\n"
  },
  {
    "path": "scripts/coreference/index.js",
    "content": "import corpus from 'nlp-corpus'\nimport nlp from '../../src/three.js'\n\nconst start = 80000\nconst list = corpus.all().slice(start, start + 1000)\nlist.forEach(str => {\n  const doc = nlp(str)\n  const out = {}\n  doc.pronouns().forEach(p => {\n    const n = p.refersTo()\n    if (n.found) {\n      out[p.text('normal')] = n.text('normal')\n    }\n  })\n  if (Object.keys(out).length) {\n    // console.log(JSON.stringify([str, out], null, 2) + ',\\n')\n  }\n})\n"
  },
  {
    "path": "scripts/debug.js",
    "content": "/* eslint-disable no-console */\nimport nlp from '../src/three.js'\nconst txt = process.argv.slice(2).join(' ')\nconsole.log(`\\n\\n======== '${txt}' ======\\n`)\nnlp.verbose(true)\n\nnlp(txt).debug()\n"
  },
  {
    "path": "scripts/match-linter.js",
    "content": "/* eslint-disable no-console */\nimport model from '../src/04-postTagger/model/index.js'\nimport nlp from '../src/three.js'\nimport corpus from 'nlp-corpus'\n// const { methods } = nlp.world()\n\nconst matches = model.two.matches\nconsole.log(`${matches.length} matches (before compliling)`)\n\nconst n = 1000\nconsole.log(` -- pre-processing ${n.toLocaleString()} sentences-`)\nlet docs = corpus.all().slice(0, n)\ndocs = docs.map(str => nlp(str))\nconsole.log(` -- ok, ready --`)\n\n// qa\nconst already = {}\nmatches.forEach(todo => {\n  const regs = nlp.parseMatch(todo.match)\n  if (!todo.tag || !todo.reason || !todo.match || regs.length === 0 || already[todo.reason]) {\n    console.log('Issue: ', todo) // eslint-disable-line\n  }\n  already[todo.reason] = true\n})\n\nconst counts = {}\ndocs.forEach(doc => {\n  matches.forEach(todo => {\n    if (doc.has(todo.match)) {\n      counts[todo.reason] = counts[todo.reason] || 0\n      counts[todo.reason] += 1\n    }\n  })\n})\n\nconst ranked = matches\n  .map(todo => todo.reason)\n  .sort((a, b) => {\n    counts[a] = counts[a] || 0\n    counts[b] = counts[b] || 0\n    if (counts[a] > counts[b]) {\n      return -1\n    } else if (counts[a] < counts[b]) {\n      return 1\n    }\n    return 0\n  })\nranked.forEach(reason => {\n  console.log(reason, counts[reason])\n})\n"
  },
  {
    "path": "scripts/match.js",
    "content": "/* eslint-disable no-console */\nimport repl from 'repl'\nimport corpus from 'nlp-corpus'\nimport nlp from '../src/three.js'\n\nconst n = 12000\nconsole.log(` -- pre-processing ${n} sentences-`)\nlet docs = corpus.some(n)\ndocs = docs.map(str => nlp(str).compute('offset'))\nconsole.log(` -- ok, ready --`)\n\nconst doMatch = function (match) {\n  docs.forEach(doc => {\n    const m = doc.match(match)\n    if (m.found) {\n      m.debug({ highlight: true, tags: false })\n    }\n  })\n  console.log('--')\n}\n\nlet arg = process.argv.slice(2).join(' ')\narg = arg.trim()\nif (arg) {\n  doMatch(arg)\n}\n\nrepl.start({\n  eval: function (match) {\n    doMatch(match)\n  },\n})\n"
  },
  {
    "path": "scripts/pack.js",
    "content": "/* eslint-disable no-console */\nimport fs from 'fs'\nimport { pack } from 'efrt'\nimport { compress, learn } from 'suffix-thumb'\n// import { compress, learn } from '/Users/spencer/mountain/suffix-thumb/src/index.js'\n\nimport lexicon from '../data/lexicon/index.js'\nimport models from '../data/pairs/index.js'\n\nconst steps = [\n  {\n    label: 'lexicon',\n    path: './src/2-two/preTagger/model/lexicon/_data.js',\n    compress: function () {\n      const packed = {}\n      //turn them into a series of flat-arrays\n      Object.keys(lexicon).forEach(word => {\n        let tags = lexicon[word]\n        if (typeof tags === 'string') {\n          tags = [tags]\n        }\n        tags.forEach(tag => {\n          packed[tag] = packed[tag] || []\n          packed[tag].push(word)\n        })\n      })\n      //pack each array into a tiny string\n      Object.keys(packed).forEach(tag => {\n        packed[tag] = pack(packed[tag])\n      })\n      return packed\n    },\n  },\n  {\n    label: 'pairs',\n    path: './src/2-two/preTagger/model/models/_data.js',\n    compress: function () {\n      const begin = new Date()\n      Object.keys(models).forEach(k => {\n        console.log('     - ' + k)\n        const opts = {}\n        if (k === 'AdjToNoun') {\n          opts.reverse = false\n        }\n        const model = learn(models[k], opts)\n        models[k] = compress(model)\n      })\n      const end = new Date()\n      console.log((end.getTime() - begin.getTime()) / 1000)\n      return models\n    },\n  },\n  // {\n  //   label: 'senses',\n  //   path: './src/4-four/sense/model/_data.js',\n  //   compress: function () {\n  //     Object.keys(senses).forEach(ambig => {\n  //       senses[ambig].forEach(sense => {\n  //         sense.words = pack(sense.words)\n  //       })\n  //     })\n  //     return senses\n  //   },\n  // },\n]\n\n// run through all our steps\nsteps.forEach(obj => {\n  console.log(`\\n 🕑  - packing ${obj.label}..`)\n  const packed = obj.compress()\n\n  //write it to a file in ./src\n  const banner = `// generated in ./lib/${obj.label}\\n`\n  fs.writeFileSync(obj.path, banner + 'export default ' + JSON.stringify(packed, null, 2), 'utf8')\n\n  //get filesize\n  const stats = fs.statSync(obj.path)\n  const size = (stats.size / 1000.0).toFixed(1)\n  console.log(`       - ${obj.label} is  ` + size + 'k\\n')\n})\n"
  },
  {
    "path": "scripts/patterns/manual.js",
    "content": "module.exports = [\n  `u r cool`,\n  `pretty good`,\n  `i better go`,\n  `walking is cool`,\n  `walking should be fun`,\n  `holy shit`,\n  `aircraft designer`,\n  `u go to the mall`,\n  `but u must`,\n  `that car goes`,\n  `John who goes`,\n  `that car goes`,\n  `a bit much`,\n  `all students`,\n  `work which has been done`,\n  `is just like`,\n  `folks like her`,\n  `john up`,\n  `he had survived`,\n  `were he to survive`,\n  `how`,\n  `how would he`,\n  `which`,\n  `so john`,\n  `how he is driving`,\n  `when i go fishing`,\n  `sun the 5th`,\n  `1pm next sun`,\n  `this sat`,\n  `sat november`,\n  `all march`,\n  `this march`,\n  `next march`,\n  `last may`,\n  `march 5th`,\n  `5 march`,\n  `5th of march`,\n  `march and feb`,\n  `feb to march`,\n  `quickly march`,\n  `march quickly`,\n  `march 5 to 7`,\n  `march the 12th`,\n  `june 7`,\n  `7 june`,\n  `may twenty five`,\n  `in june`,\n  `during june`,\n  `on june`,\n  `by june`,\n  `before june`,\n  `thursday june`,\n  `june 1992`,\n  `june smith`,\n  `june m. cooper`,\n  `one second`,\n  `all fell apart`,\n  `very rusty`,\n  `rusty smith`,\n  `rusty a. smith`,\n  `it is just`,\n  `jack is guarded`,\n  `smoked poutine is`,\n  `baked onions are`,\n  `well made`,\n  `is fucked up`,\n  `jack seems guarded`,\n  `a staggering cost`,\n  `as amusing as`,\n  `more amusing than`,\n  `very amusing`,\n  `it was amusing`,\n  `found it amusing`,\n  `a bit amusing`,\n  `jury is out`,\n  `the sun`,\n  `did a 900`,\n  `the can`,\n  `spencer kelly's`,\n  `Super Corp's fundraiser`,\n  `Los Angeles's fundraiser`,\n  `assign all tasks`,\n  `the above is clear`,\n  `real evil is`,\n  `have big dreams`,\n  `big dreams, critical thinking`,\n  `excellent answer spencer`,\n  `one big reason`,\n  `won widespread support`,\n  `adorable little store`,\n  `very big dreams`,\n  `good wait staff`,\n  `many poses`,\n  `of basic training`,\n  `justifiying higher costs`,\n  `early warning`,\n  `do the dance`,\n  `his fine`,\n  `some pressing issues`,\n  `more walking`,\n  `walking and hushing`,\n  `rock and roll`,\n  `rights of man`,\n  `a bit`,\n  `my first thought`,\n  `running-a-show`,\n  `the-only-reason`,\n  `the nice swim`,\n  `the wait to vote`,\n  `the truly nice swim`,\n  `the test string`,\n  `the orange is`,\n  `a nice deal`,\n  `a sense of`,\n  `a stream runs`,\n  `next career move`,\n  `the threat of force`,\n  `the western line`,\n  `her polling`,\n  `her fines`,\n  `linear algebra`,\n  `a blown motor`,\n  `walk the walk`,\n  `this swimming`,\n  `at some point`,\n  `air-flow`,\n  `is no walk`,\n  `has different views than`,\n  `goes to sleep`,\n  `a great run`,\n  `do so`,\n  `is mark hughes`,\n  `a close`,\n  `what the hell`,\n  `the staff were`,\n  `running for congress`,\n  `running to work`,\n  `any questions for`,\n  `have fun`,\n  `co-founder`,\n  ``,\n  `still good`,\n  `still make`,\n  `so hot`,\n  `way hotter`,\n  `way too hot`,\n  `all singing`,\n  `sing like an angel`,\n  `barely even walk`,\n  `even held`,\n  `even left`,\n  `cheering hard`,\n  `much appreciated`,\n  `is well`,\n  `a bit cold`,\n  `dark green`,\n  `kinda sparkly`,\n  `1 800 232-9873`,\n  `(454) 232-9873`,\n  `chinese yuan`,\n  `5 yan`,\n  `minus 7`,\n  `5 kg.`,\n  `seven point five`,\n  `ten bucks`,\n  `quarter million`,\n  `thousand and two`,\n  `a hour`,\n  `amusing his aunt`,\n  `loving you`,\n  `slowly stunning`,\n  `like`,\n  `do not simply like`,\n  `does mean`,\n  `i mean`,\n  `he left`,\n  `this rocks`,\n  `was walking`,\n  `would walk`,\n  `would have had`,\n  `would be walking`,\n  `had been walking`,\n  `will walk`,\n  `about to go`,\n  `would be walking`,\n  `were being run`,\n  `have run`,\n  `would have had`,\n  `had been walking`,\n  `was being driven`,\n  `foo-up`,\n  `fall over`,\n  `back it up`,\n  `will be running`,\n  `march to`,\n  `must march`,\n  `let him glue`,\n  `he quickly foo`,\n  `will secure our`,\n  `he disguised the thing`,\n  `is eager to go`,\n  `open the door`,\n  `compromises are possible`,\n  `would wade`,\n  `to mark`,\n  `wade smith`,\n  `wade m. Cooper`,\n  `damn them`,\n  `West Norforlk`,\n  `Foo District`,\n  `District of Foo`,\n  `in Foo California`,\n  `in houston`,\n  `houston texas`,\n  `John & Joe's`,\n  `teachers union of Ontario`,\n  `walmart USA`,\n  `organization`,\n  `FitBit Inc`,\n  `the OCED`,\n  `global trade union`,\n  `schools`,\n  `is foo Smith`,\n  `pope francis`,\n  `Dwayne 'the rock' Johnson`,\n  `my buddy`,\n  `general pearson`,\n  `remove single 'mr'`,\n  `j.k Rowling`,\n  `king of spain`,\n  `lady Florence`,\n  `saint Foo`,\n  `Foo U Ford`,\n  `al sharpton`,\n  `ferdinand de almar`,\n  `Osama bin Laden`,\n  `John L. Foo`,\n  `Andrew Lloyd Webber`,\n  `Mr Foo`,\n  `peter the great`,\n  `faith smith`,\n  `faith m. Smith`,\n  `give to april`,\n  `remind june`,\n  `may waits for`,\n  `may waits to`,\n  `april will`,\n  `may be`,\n  `would april`,\n  `it is may`,\n  `may is`,\n  `with april`,\n  `with april`,\n  `for april`,\n  `this april`,\n  `next april`,\n  `last april`,\n  `wednesday april`,\n  `may 5th`,\n  `5th of may`,\n  `dick van dyke`,\n  `jose de Sucre`,\n  `Jani K. Smith`,\n  `John Foo`,\n  `Joe K. Sombrero`,\n  `Anthony de Marco`,\n  'a half millionth',\n]\n"
  },
  {
    "path": "scripts/patterns/patterns.js",
    "content": "// list of all match patterns, Nov 2020\nlet patterns = []\npatterns = patterns.reduce((h, str) => {\n  h[str] = 0\n  return h\n}, {})\n\nmodule.exports = patterns\n"
  },
  {
    "path": "scripts/patterns/tester.js",
    "content": "/* eslint-disable no-console */\n// try to hit every match in ./tagger/corrections\nconst corpus = require('nlp-corpus') //install with `npm i nlp-corpus --no-save`\nconst nlp = require('../../src')\nconst penn = require('../../tests/_pennSample')\nconst patterns = require('./patterns')\nconst manual = require('./manual').map(str => {\n  return { text: str }\n})\nconst texts = penn.concat(manual)\n\n// add some random texts in\nfor (let i = 0; i < 1000; i++) {\n  texts.push({ text: corpus.random() })\n}\n\ntexts.forEach(sentence => {\n  const doc = nlp(sentence.text)\n  doc.reasons.forEach(r => {\n    patterns[r] += 1\n  })\n})\nlet arr = Object.keys(patterns).map(k => [k, patterns[k]])\narr = arr.sort((a, b) => {\n  if (a[1] > b[1]) {\n    return -1\n  } else if (a[1] < b[1]) {\n    return 1\n  }\n  return 0\n})\narr.forEach(a => {\n  console.log(a[0] + '\\t' + a[1])\n})\n\nconsole.log(arr.filter(a => a[1] === 0).length, ' empty')\n// console.log(JSON.stringify(arr, null, 2))\n"
  },
  {
    "path": "scripts/perf/_fetch.js",
    "content": "import https from 'https'\n\nconst fetch = function (url) {\n  return new Promise((resolve, reject) => {\n    https\n      .get(url, resp => {\n        let data = ''\n        resp.on('data', chunk => {\n          data += chunk\n        })\n        resp.on('end', () => {\n          resolve(JSON.parse(data))\n        })\n      })\n      .on('error', err => {\n        console.error('Error: ' + err.message) // eslint-disable-line\n        reject()\n      })\n  })\n}\n\nexport default fetch\n"
  },
  {
    "path": "scripts/perf/flame/_sotu-text.js",
    "content": "export default `Mr. Speaker, Vice President Cheney, Members of Congress, distinguished guests, and fellow citizens:\nAmerica this evening is a Nation called to great responsibilities. And we are rising to meet them.\nAs we gather tonight, hundreds of thousands of American servicemen and women are deployed across the world in the war on terror. By bringing hope to the oppressed, and delivering justice to the violent, they are making America more secure.\nEach day, law enforcement personnel and intelligence officers are tracking terrorist threats; analysts are examining airline passenger lists; the men and women of our new Homeland Security Department are patrolling our coasts and borders. And their vigilance is protecting America.\nAmericans are proving once again to be the hardest working people in the world. The American economy is growing stronger. The tax relief you passed is working.\nTonight, Members of Congress can take pride in great works of compassion and reform that skeptics had thought impossible. You are raising the standards of our public schools; and you are giving our senior citizens prescription drug coverage under Medicare.\nWe have faced serious challenges together - and now we face a choice. We can go forward with confidence and resolve - or we can turn back to the dangerous illusion that terrorists are not plotting and outlaw regimes are no threat to us. We can press on with economic growth, and reforms in education and Medicare - or we can turn back to the old policies and old divisions.\nWe have not come all this way - through tragedy, and trial, and war - only to falter and leave our work unfinished. Americans are rising to the tasks of history, and they expect the same of us. In their efforts, their enterprise, and their character, the American people are showing that the state of our Union is confident and strong.\nOur greatest responsibility is the active defense of the American people. Twenty-eight months have passed since September 11th, 2001 - over two years without an attack on American soil - and it is tempting to believe that the danger is behind us. That hope is understandable, comforting - and false. The killing has continued in Bali, Jakarta, Casablanca, Riyadh, Mombassa, Jerusalem, Istanbul, and Baghdad. The terrorists continue to plot against America and the civilized world. And by our will and courage, this danger will be defeated.\nInside the United States, where the war began, we must continue to give homeland security and law enforcement personnel every tool they need to defend us. And one of those essential tools is the PATRIOT Act, which allows Federal law enforcement to better share information, to track terrorists, to disrupt their cells, and to seize their assets. For years, we have used similar provisions to catch embezzlers and drug traffickers. If these methods are good for hunting criminals, they are even more important for hunting terrorists. Key provisions of the PATRIOT Act are set to expire next year. The terrorist threat will not expire on that schedule. Our law enforcement needs this vital legislation to protect our citizens - you need to renew the PATRIOT Act.\nAmerica is on the offensive against the terrorists who started this war. Last March, Khalid Shaikh Mohammed, a mastermind of September 11th, awoke to find himself in the custody of U.S. and Pakistani authorities. Last August 11th brought the capture of the terrorist Hambali, who was a key player in the attack in Indonesia that killed over 200 people. We are tracking al-Qaida around the world - and nearly two-thirds of their known leaders have now been captured or killed. Thousands of very skilled and determined military personnel are on a manhunt, going after the remaining killers who hide in cities and caves - and, one by one, we will bring the terrorists to justice.\nAs part of the offensive against terror, we are also confronting the regimes that harbor and support terrorists, and could supply them with nuclear, chemical, or biological weapons. The United States and our allies are determined: We refuse to live in the shadow of this ultimate danger.\nThe first to see our determination were the Taliban, who made Afghanistan the primary training base of al-Qaida killers. As of this month, that country has a new constitution, guaranteeing free elections and full participation by women. Businesses are opening, health care centers are being established, and the boys and girls of Afghanistan are back in school. With help from the new Afghan Army, our coalition is leading aggressive raids against surviving members of the Taliban and al-Qaida. The men and women of Afghanistan are building a nation that is free, and proud, and fighting terror - and America is honored to be their friend.\nSince we last met in this chamber, combat forces of the United States, Great Britain, Australia, Poland, and other countries enforced the demands of the United Nations, ended the rule of Saddam Hussein - and the people of Iraq are free. Having broken the Baathist regime, we face a remnant of violent Saddam supporters. Men who ran away from our troops in battle are now dispersed and attack from the shadows.\nThese killers, joined by foreign terrorists, are a serious, continuing danger. Yet we are making progress against them. The once all-powerful ruler of Iraq was found in a hole, and now sits in a prison cell. Of the top 55 officials of the former regime, we have captured or killed 45. Our forces are on the offensive, leading over 1,600 patrols a day, and conducting an average of 180 raids every week. We are dealing with these thugs in Iraq, just as surely as we dealt with Saddam Hussein's evil regime.\nThe work of building a new Iraq is hard, and it is right. And America has always been willing to do what it takes for what is right. Last January, Iraq's only law was the whim of one brutal man. Today our coalition is working with the Iraqi Governing Council to draft a basic law, with a bill of rights. We are working with Iraqis and the United Nations to prepare for a transition to full Iraqi sovereignty by the end of June. As democracy takes hold in Iraq, the enemies of freedom will do all in their power to spread violence and fear. They are trying to shake the will of our country and our friends - but the United States of America will never be intimidated by thugs and assassins. The killers will fail, and the Iraqi people will live in freedom.\nMonth by month, Iraqis are assuming more responsibility for their own security and their own future. And tonight we are honored to welcome one of Iraq's most respected leaders: the current President of the Iraqi Governing Council, Adnan Pachachi. Sir, America stands with you and the Iraqi people as you build a free and peaceful nation.\nBecause of American leadership and resolve, the world is changing for the better. Last month, the leader of Libya voluntarily pledged to disclose and dismantle all of his regime's weapons of mass destruction programs, including a uranium enrichment project for nuclear weapons. Colonel Qadhafi correctly judged that his country would be better off, and far more secure, without weapons of mass murder. Nine months of intense negotiations involving the United States and Great Britain succeeded with Libya, while 12 years of diplomacy with Iraq did not. And one reason is clear: For diplomacy to be effective, words must be credible - and no one can now doubt the word of America.\nDifferent threats require different strategies. Along with nations in the region, we are insisting that North Korea eliminate its nuclear program. America and the international community are demanding that Iran meet its commitments and not develop nuclear weapons. America is committed to keeping the world's most dangerous weapons out of the hands of the world's most dangerous regimes.\nWhen I came to this rostrum on September 20th, 2001, I brought the police shield of a fallen officer, my reminder of lives that ended, and a task that does not end. I gave to you and to all Americans my complete commitment to securing our country and defeating our enemies. And this pledge, given by one, has been kept by many. You in the Congress have provided the resources for our defense, and cast the difficult votes of war and peace. Our closest allies have been unwavering. America's intelligence personnel and diplomats have been skilled and tireless.\nd the men and women of the American military - they have taken the hardest duty. We have seen their skill and courage in armored charges, and midnight raids, and lonely hours on faithful watch. We have seen the joy when they return, and felt the sorrow when one is lost. I have had the honor of meeting our servicemen and women at many posts, from the deck of a carrier in the Pacific, to a mess hall in Baghdad. Many of our troops are listening tonight. And I want you and your families to know: America is proud of you. And my Administration, and this Congress, will give you the resources you need to fight and win the war on terror.\nI know that some people question if America is really in a war at all. They view terrorism more as a crime - a problem to be solved mainly with law enforcement and indictments. After the World Trade Center was first attacked in 1993, some of the guilty were indicted, tried, convicted, and sent to prison. But the matter was not settled. The terrorists were still training and plotting in other nations, and drawing up more ambitious plans. After the chaos and carnage of September 11th, it is not enough to serve our enemies with legal papers. The terrorists and their supporters declared war on the United States - and war is what they got.\nSome in this chamber, and in our country, did not support the liberation of Iraq. Objections to war often come from principled motives. But let us be candid about the consequences of leaving Saddam Hussein in power. We are seeking all the facts - already the Kay Report identified dozens of weapons of mass destruction-related program activities and significant amounts of equipment that Iraq concealed from the United Nations. Had we failed to act, the dictator's weapons of mass destruction programs would continue to this day. Had we failed to act, Security Council resolutions on Iraq would have been revealed as empty threats, weakening the United Nations and encouraging defiance by dictators around the world. Iraq's torture chambers would still be filled with victims - terrified and innocent. The killing fields of Iraq - where hundreds of thousands of men, women, and children vanished into the sands - would still be known only to the killers. For all who love freedom and peace, the world without Saddam Hussein's regime is a better and safer place.\nSome critics have said our duties in Iraq must be internationalized. This particular criticism is hard to explain to our partners in Britain, Australia, Japan, South Korea, the Philippines, Thailand, Italy, Spain, Poland, Denmark, Hungary, Bulgaria, Ukraine, Romania, the Netherlands, Norway, El Salvador, and the 17 other countries that have committed troops to Iraq. As we debate at home, we must never ignore the vital contributions of our international partners, or dismiss their sacrifices. From the beginning, America has sought international support for operations in Afghanistan and Iraq, and we have gained much support. There is a difference, however, between leading a coalition of many nations, and submitting to the objections of a few. America will never seek a permission slip to defend the security of our people.\nWe also hear doubts that democracy is a realistic goal for the greater Middle East, where freedom is rare. Yet it is mistaken, and condescending, to assume that whole cultures and great religions are incompatible with liberty and self-government. I believe that God has planted in every heart the desire to live in freedom. And even when that desire is crushed by tyranny for decades, it will rise again.\nAs long as the Middle East remains a place of tyranny, despair, and anger, it will continue to produce men and movements that threaten the safety of America and our friends. So America is pursuing a forward strategy of freedom in the greater Middle East. We will challenge the enemies of reform, confront the allies of terror, and expect a higher standard from our friends. To cut through the barriers of hateful propaganda, the Voice of America and other broadcast services are expanding their programming in Arabic and Persian - and soon, a new television service will begin providing reliable news and information across the region. I will send you a proposal to double the budget of the National Endowment for Democracy, and to focus its new work on the development of free elections, free markets, free press, and free labor unions in the Middle East. And above all, we will finish the historic work of democracy in Afghanistan and Iraq, so those nations can light the way for others, and help transform a troubled part of the world.\nAmerica is a Nation with a mission - and that mission comes from our most basic beliefs. We have no desire to dominate, no ambitions of empire. Our aim is a democratic peace - a peace founded upon the dignity and rights of every man and woman. America acts in this cause with friends and allies at our side, yet we understand our special calling: This great Republic will lead the cause of freedom.\nIn these last three years, adversity has also revealed the fundamental strengths of the American economy. We have come through recession, and terrorist attack, and corporate scandals, and the uncertainties of war. And because you acted to stimulate our economy with tax relief, this economy is strong, and growing stronger.\nYou have doubled the child tax credit from 500 to a thousand dollars, reduced the marriage penalty, begun to phase out the death tax, reduced taxes on capital gains and stock dividends, cut taxes on small businesses, and you have lowered taxes for every American who pays income taxes.\nAmericans took those dollars and put them to work, driving this economy forward. The pace of economic growth in the third quarter of 2003 was the fastest in nearly 20 years. New home construction: the highest in almost 20 years. Home ownership rates: the highest ever. Manufacturing activity is increasing. Inflation is low. Interest rates are low. Exports are growing. Productivity is high. And jobs are on the rise.\nThese numbers confirm that the American people are using their money far better than government would have - and you were right to return it.\nAmerica's growing economy is also a changing economy. As technology transforms the way almost every job is done, America becomes more productive, and workers need new skills. Much of our job growth will be found in high-skilled fields like health care and biotechnology. So we must respond by helping more Americans gain the skills to find good jobs in our new economy.\nAll skills begin with the basics of reading and math, which are supposed to be learned in the early grades of our schools. Yet for too long, for too many children, those skills were never mastered. By passing the No Child Left Behind Act, you have made the expectation of literacy the law of our country. We are providing more funding for our schools - a 36 percent increase since 2001. We are requiring higher standards. We are regularly testing every child on the fundamentals. We are reporting results to parents, and making sure they have better options when schools are not performing. We are making progress toward excellence for every child.\nBut the status quo always has defenders. Some want to undermine the No Child Left Behind Act by weakening standards and accountability. Yet the results we require are really a matter of common sense: We expect third graders to read and do math at third grade level - and that is not asking too much. Testing is the only way to identify and help students who are falling behind.\nThis Nation will not go back to the days of simply shuffling children along from grade to grade without them learning the basics. I refuse to give up on any child - and the No Child Left Behind Act is opening the door of opportunity to all of America's children.\nAt the same time, we must ensure that older students and adults can gain the skills they need to find work now. Many of the fastest-growing occupations require strong math and science preparation, and training beyond the high school level. So tonight I propose a series of measures called Jobs for the 21st Century. This program will provide extra help to middle- and high school students who fall behind in reading and math, expand Advanced Placement programs in low-income schools, and invite math and science professionals from the private sector to teach part-time in our high schools. I propose larger Pell Grants for students who prepare for college with demanding courses in high school. I propose increasing our support for America's fine community colleges, so they can train workers for the industries that are creating the most new jobs. By all these actions, we will help more and more Americans to join in the growing prosperity of our country.\nJob training is important, and so is job creation. We must continue to pursue an aggressive, pro-growth economic agenda.\nCongress has some unfinished business on the issue of taxes. The tax reductions you passed are set to expire. Unless you act, the unfair tax on marriage will go back up. Unless you act, millions of families will be charged 300 dollars more in Federal taxes for every child. Unless you act, small businesses will pay higher taxes. Unless you act, the death tax will eventually come back to life. Unless you act, Americans face a tax increase. What the Congress has given, the Congress should not take away: For the sake of job growth, the tax cuts you passed should be permanent.\nOur agenda for jobs and growth must help small business owners and employees with relief from needless Federal regulation, and protect them from junk and frivolous lawsuits. Consumers and businesses need reliable supplies of energy to make our economy run - so I urge you to pass legislation to modernize our electricity system, promote conservation, and make America less dependent on foreign sources of energy. My Administration is promoting free and fair trade, to open up new markets for America's entrepreneurs, and manufacturers, and farmers, and to create jobs for America's workers. Younger workers should have the opportunity to build a nest egg by saving part of their Social Security taxes in a personal retirement account. We should make the Social Security system a source of ownership for the American people.\nAnd we should limit the burden of government on this economy by acting as good stewards of taxpayer dollars. In two weeks, I will send you a budget that funds the war, protects the homeland, and meets important domestic needs, while limiting the growth in discretionary spending to less than four percent. This will require that Congress focus on priorities, cut wasteful spending, and be wise with the people's money. By doing so, we can cut the deficit in half over the next five years.\nTonight I also ask you to reform our immigration laws, so they reflect our values and benefit our economy. I propose a new temporary worker program to match willing foreign workers with willing employers, when no Americans can be found to fill the job. This reform will be good for our economy - because employers will find needed workers in an honest and orderly system. A temporary worker program will help protect our homeland - allowing border patrol and law enforcement to focus on true threats to our national security. I oppose amnesty, because it would encourage further illegal immigration, and unfairly reward those who break our laws. My temporary worker program will preserve the citizenship path for those who respect the law, while bringing millions of hardworking men and women out from the shadows of American life.\nOur Nation's health care system, like our economy, is also in a time of change. Amazing medical technologies are improving and saving lives. This dramatic progress has brought its own challenge, in the rising costs of medical care and health insurance. Members of Congress, we must work together to help control those costs and extend the benefits of modern medicine throughout our country.\nMeeting these goals requires bipartisan effort - and two months ago, you showed the way. By strengthening Medicare and adding a prescription drug benefit, you kept a basic commitment to our seniors: You are giving them the modern medicine they deserve.\nStarting this year, under the law you passed, seniors can choose to receive a drug discount card, saving them 10 to 25 percent off the retail price of most prescription drugs - and millions of low-income seniors can get an additional 600 dollars to buy medicine. Beginning next year, seniors will have new coverage for preventive screenings against diabetes and heart disease, and seniors just entering Medicare can receive wellness exams.\nIn January of 2006, seniors can get prescription drug coverage under Medicare. For a monthly premium of about 35 dollars, most seniors who do not have that coverage today can expect to see their drug bills cut roughly in half. Under this reform, senior citizens will be able to keep their Medicare just as it is, or they can choose a Medicare plan that fits them best - just as you, as Members of Congress, can choose an insurance plan that meets your needs. And starting this year, millions of Americans will be able to save money tax-free for their medical expenses, in a health savings account.\nI signed this measure proudly, and any attempt to limit the choices of our seniors, or to take away their prescription drug coverage under Medicare, will meet my veto.\nOn the critical issue of health care, our goal is to ensure that Americans can choose and afford private health care coverage that best fits their individual needs. To make insurance more affordable, Congress must act to address rapidly rising health care costs. Small businesses should be able to band together and negotiate for lower insurance rates, so they can cover more workers with health insurance - I urge you to pass Association Health Plans. I ask you to give lower-income Americans a refundable tax credit that would allow millions to buy their own basic health insurance. By computerizing health records, we can avoid dangerous medical mistakes, reduce costs, and improve care. To protect the doctor-patient relationship, and keep good doctors doing good work, we must eliminate wasteful and frivolous medical lawsuits. And tonight I propose that individuals who buy catastrophic health care coverage, as part of our new health savings accounts, be allowed to deduct 100 percent of the premiums from their taxes.\nA government-run health care system is the wrong prescription. By keeping costs under control, expanding access, and helping more Americans afford coverage, we will preserve the system of private medicine that makes America's health care the best in the world.\nWe are living in a time of great change - in our world, in our economy, and in science and medicine. Yet some things endure - courage and compassion, reverence and integrity, respect for differences of faith and race. The values we try to live by never change. And they are instilled in us by fundamental institutions, such as families, and schools, and religious congregations. These institutions - the unseen pillars of civilization - must remain strong in America, and we will defend them.\nWe must stand with our families to help them raise healthy, responsible children. And when it comes to helping children make right choices, there is work for all of us to do.\nOne of the worst decisions our children can make is to gamble their lives and futures on drugs. Our government is helping parents confront this problem, with aggressive education, treatment, and law enforcement. Drug use in high school has declined by 11 percent over the past two years. Four hundred thousand fewer young people are using illegal drugs than in the year 2001. In my budget, I have proposed new funding to continue our aggressive, community-based strategy to reduce demand for illegal drugs. Drug testing in our schools has proven to be an effective part of this effort. So tonight I propose an additional 23 million dollars for schools that want to use drug testing as a tool to save children's lives. The aim here is not to punish children, but to send them this message: We love you, and we don't want to lose you.\nTo help children make right choices, they need good examples. Athletics play such an important role in our society, but, unfortunately, some in professional sports are not setting much of an example. The use of performance-enhancing drugs like steroids in baseball, football, and other sports is dangerous, and it sends the wrong message - that there are shortcuts to accomplishment, and that performance is more important than character. So tonight I call on team owners, union representatives, coaches, and players to take the lead, to send the right signal, to get tough, and to get rid of steroids now.\nTo encourage right choices, we must be willing to confront the dangers young people face - even when they are difficult to talk about. Each year, about three million teenagers contract sexually transmitted diseases that can harm them, or kill them, or prevent them from ever becoming parents. In my budget, I propose a grassroots campaign to help inform families about these medical risks. We will double Federal funding for abstinence programs, so schools can teach this fact of life: Abstinence for young people is the only certain way to avoid sexually transmitted diseases. Decisions children make now can affect their health and character for the rest of their lives. All of us - parents, schools, government - must work together to counter the negative influence of the culture, and to send the right messages to our children.\nA strong America must also value the institution of marriage. I believe we should respect individuals as we take a principled stand for one of the most fundamental, enduring institutions of our civilization. Congress has already taken a stand on this issue by passing the Defense of Marriage Act, signed in 1996 by President Clinton. That statute protects marriage under Federal law as the union of a man and a woman, and declares that one state may not redefine marriage for other states. Activist judges, however, have begun redefining marriage by court order, without regard for the will of the people and their elected representatives. On an issue of such great consequence, the people's voice must be heard. If judges insist on forcing their arbitrary will upon the people, the only alternative left to the people would be the constitutional process. Our Nation must defend the sanctity of marriage.\nThe outcome of this debate is important - and so is the way we conduct it. The same moral tradition that defines marriage also teaches that each individual has dignity and value in God's sight.\nIt is also important to strengthen our communities by unleashing the compassion of America's religious institutions. Religious charities of every creed are doing some of the most vital work in our country - mentoring children, feeding the hungry, taking the hand of the lonely. Yet government has often denied social service grants and contracts to these groups, just because they have a cross or Star of David or crescent on the wall. By Executive Order, I have opened billions of dollars in grant money to competition that includes faith-based charities. Tonight I ask you to codify this into law, so people of faith can know that the law will never discriminate against them again.\nIn the past, we have worked together to bring mentors to the children of prisoners, and provide treatment for the addicted, and help for the homeless. Tonight I ask you to consider another group of Americans in need of help. This year, some 600,000 inmates will be released from prison back into society. We know from long experience that if they can't find work, or a home, or help, they are much more likely to commit more crimes and return to prison. So tonight, I propose a four-year, 300 million dollar Prisoner Re-Entry Initiative to expand job training and placement services, to provide transitional housing, and to help newly released prisoners get mentoring, including from faith-based groups. America is the land of the second chance - and when the gates of the prison open, the path ahead should lead to a better life.\nFor all Americans, the last three years have brought tests we did not ask for, and achievements shared by all. By our actions, we have shown what kind of Nation we are. In grief, we found the grace to go on. In challenge, we rediscovered the courage and daring of a free people. In victory, we have shown the noble aims and good heart of America. And having come this far, we sense that we live in a time set apart.\nI have been a witness to the character of the American people, who have shown calm in times of danger, compassion for one another, and toughness for the long haul. All of us have been partners in a great enterprise. And even some of the youngest understand that we are living in historic times. Last month a girl in Lincoln, Rhode Island, sent me a letter. It began, \"Dear George W. Bush.\" \"If there is anything you know, I Ashley Pearson age 10 can do to help anyone, please send me a letter and tell me what I can do to save our country.\" She added this P.S.: \"If you can send a letter to the troops ... please put, 'Ashley Pearson believes in you.'\" Tonight, Ashley, your message to our troops has just been conveyed. And yes, you have some duties yourself. Study hard in school, listen to your mom and dad, help someone in need, and when you and your friends see a man or woman in uniform, say \"thank you.\" And while you do your part, all of us here in this great chamber will do our best to keep you and the rest of America safe and free.\nMy fellow citizens, we now move forward, with confidence and faith. Our Nation is strong and steadfast. The cause we serve is right, because it is the cause of all mankind. The momentum of freedom in our world is unmistakable - and it is not carried forward by our power alone. We can trust in that greater power Who guides the unfolding of the years. And in all that is to come, we can know that His purposes are just and true.\nMay God bless the United States of America. Thank you.`\n"
  },
  {
    "path": "scripts/perf/flame/index.js",
    "content": "/* eslint-disable no-console */\nimport txt from './_sotu-text.js'\n\nconsole.log('\\n-- testing:  --')\nconsole.time('load')\nimport nlp from '../../../src/three.js'\nconsole.timeEnd('load')\n\nconsole.time('parse')\nconst doc = nlp(txt)\nconsole.timeEnd('parse')\n\nconsole.time('match')\ndoc.match('#Noun')\nconsole.timeEnd('match')\nconsole.log('\\n   v' + nlp.version, '\\n')\n"
  },
  {
    "path": "scripts/perf/index.js",
    "content": "/* eslint-disable no-console */\nimport Pool from './pool/pool.js'\nimport fetch from './_fetch.js'\n\n// const BASELINE = 92 //node 12, 2017 macbook\nconst BASELINE = 67 //node 12, 2020 mac mini\n\nif (!process.version.match(/^v16\\./)) {\n  console.warn('Warn: Expecting node v16.x - got ' + process.version)\n}\n\nconst docs = [\n  'nlp-corpus-1.json',\n  'nlp-corpus-2.json',\n  'nlp-corpus-3.json',\n  'nlp-corpus-4.json',\n  'nlp-corpus-5.json',\n  'nlp-corpus-6.json',\n  'nlp-corpus-7.json',\n  'nlp-corpus-8.json',\n  'nlp-corpus-9.json',\n  'nlp-corpus-10.json',\n]\n\nconst fetchAll = function (urls) {\n  return Promise.all(urls.map(u => fetch(u))).then(res => res.map(texts => texts.join('\\n')))\n}\n\nconst growth = (baseline, current) => {\n  let percent = (current / baseline) * 100\n  percent = 100 - Math.round(percent)\n  percent = percent * -1\n  if (percent > 5) {\n    percent = '\\x1b[31m' + percent + '% slower\\x1b[0m'\n  } else if (percent < -5) {\n    percent = '\\x1b[32m' + Math.abs(percent) + '% faster\\x1b[0m'\n  }\n  return percent\n}\n\n  ; (async () => {\n    const p = new Pool()\n    const texts = await fetchAll(docs.map(file => `https://unpkg.com/nlp-corpus@3.3.0/builds/${file}`))\n    console.log(`\\n\\n  running ${texts.length} texts on ${p.count()} workers`)\n    const nums = []\n    for (let i = 0; i < texts.length; i += 1) {\n      console.log(`    text #${i + 1} - 🕰`)\n      const num = await p.do(texts[i])\n      nums.push(num)\n    }\n    let sum = nums.reduce((h, n) => h + n, 0)\n    sum = Math.round(sum * 10) / 10\n    console.log('\\n\\n', sum, ' total')\n    // console.log('  +/- ', diff(sum), '% ')\n    console.log('  +/- ', growth(BASELINE, sum))\n    p.close()\n  })()\n\n// console.log(growth(100, 110))\n"
  },
  {
    "path": "scripts/perf/novel.js",
    "content": "/* eslint-disable no-console, no-unused-vars */\nimport nlp from '../../src/three.js'\nimport corpus from 'nlp-corpus'\nimport fs from 'fs'\n  // import wtf from 'wtf_wikipedia'\n\n  ; (async () => {\n\n\n    // const txt = await wtf.fetch('Julius and Ethel Rosenberg').then(d => d.text())\n    // const txt = corpus.all().slice(0, 10000).join('\\n')\n    const txt = fs.readFileSync('/Users/spencer/data/infinite-jest/infinite-jest.txt').toString()\n    // txt = txt.substring(39390, 80000)\n    //get filesize\n    const bytes = Buffer.byteLength(txt)\n    const size = Math.ceil(bytes / 1024)\n    console.log(` ${size}kb`)\n\n    const words = txt.split(' ')\n    console.log(words.length.toLocaleString(), 'words')\n\n\n    const begin = new Date()\n    const doc = nlp(txt)\n    let m = doc.match('#Verb #Preposition').out('topk')\n    m = m.slice(0, 4000).filter(o => o.count > 2)\n    console.log(JSON.stringify(m, null, 2))\n\n    const end = new Date()\n    console.log((end.getTime() - begin.getTime()) / 1000, 'seconds')\n  })()\n\n\n// dupe ids:\n// let all = {}\n// let dupes = 0\n// arr.forEach(o => {\n//   o.terms.forEach(term => {\n//     if (term.id && all[term.id] === true) {\n//       console.log('dupe', term.id)\n//       dupes += 1\n//     }\n//     all[term.id] = true\n//   })\n// })\n// console.log('dupes:', dupes)\n\n\n/*(node 16)\n\n* *regular novel*\n  7,000 sentences\n  80,000 words\n  525kb \n\n  * one:  0.6 seconds\n  * two: 2.4s\n  * three: 3s\n\t\n* *Infinite Jest:*   - 6x novels\n  *36,247 sentences*\n  *543,861 words*\n    15 word sentences\n    3.4mb\n\n  * one:  2.6 seconds\n  * two: 14s\n  * three: 20s\n*/\n"
  },
  {
    "path": "scripts/perf/package.json",
    "content": "{\n  \"name\": \"perf\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"compromise13.0.0\": \"npm:compromise@13.0.0\",\n    \"compromise13.1.0\": \"npm:compromise@13.1.0\",\n    \"compromise13.1.1\": \"npm:compromise@13.1.1\",\n    \"compromise13.10.0\": \"npm:compromise@13.10.0\",\n    \"compromise13.10.1\": \"npm:compromise@13.10.1\",\n    \"compromise13.10.2\": \"npm:compromise@13.10.2\",\n    \"compromise13.2.0\": \"npm:compromise@13.2.0\",\n    \"compromise13.3.0\": \"npm:compromise@13.3.0\",\n    \"compromise13.3.1\": \"npm:compromise@13.3.1\",\n    \"compromise13.3.2\": \"npm:compromise@13.3.2\",\n    \"compromise13.4.0\": \"npm:compromise@13.4.0\",\n    \"compromise13.5.0\": \"npm:compromise@13.5.0\",\n    \"compromise13.6.0\": \"npm:compromise@13.6.0\",\n    \"compromise13.7.0\": \"npm:compromise@13.7.0\",\n    \"compromise13.8.0\": \"npm:compromise@13.8.0\",\n    \"compromise13.9.0\": \"npm:compromise@13.9.0\",\n    \"compromise13.9.1\": \"npm:compromise@13.9.1\",\n    \"compromise13.9.2\": \"npm:compromise@13.9.2\",\n    \"compromise13.9.3\": \"npm:compromise@13.9.3\"\n  }\n}\n"
  },
  {
    "path": "scripts/perf/pool/_lib.js",
    "content": "/* eslint-disable no-console */\nimport src from '../../../src/three.js'\nimport build from '../../../builds/three/compromise-three.mjs'\n\nlet nlp\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==')\n  // nlp = require('../../../builds/compromise.min.js')\n  nlp = build\n} else {\n  nlp = src\n  // nlp.extend(require('../plugins/numbers/src'))\n}\n\nexport default nlp\n"
  },
  {
    "path": "scripts/perf/pool/lookup-worker.js",
    "content": "/* eslint-disable no-console, no-unused-vars */\nimport { parentPort } from 'worker_threads'\n// const nlp = require('../../src')\nimport nlp from './_lib.js'\n\nconst matches = [\n  `Toronto Aeros`,\n  `Toronto Arenas`,\n  `Toronto Aura Lee`,\n  `Toronto 228th Battalion (NHA)`,\n  `Toronto Blueshirts`,\n  `Toronto Jr. Canadiens`,\n  `Dixie Beehives (2005–11)`,\n  `East York Lyndhursts`,\n  `Toronto Granites`,\n  `Toronto Knob Hill Farms`,\n  `Toronto Lions`,\n  `Toronto Maple Leafs`,\n  `Toronto Marlboros`,\n  `Toronto Marlies`,\n  `Mimico Monarchs`,\n  `Toronto Native Sons`,\n  `Niagara-on-the-Lake Predators`,\n  `North York Rangers`,\n  `North York Rangers (1967–1984)`,\n  `Toronto Ontarios`,\n  `Toronto Professional Hockey Club`,\n  `Toronto Ravinas`,\n  `Toronto Roadrunners`,\n  `Royal York Royals`,\n  `Toronto St. Patricks`,\n  `Toronto Shamrocks`,\n  `St. Michael's Buzzers`,\n  `Toronto Tecumsehs`,\n  `Toronto Toros`,\n  `Toronto Attack`,\n  `Toronto Furies`,\n  'and then',\n  `Toronto Jr. Aeros`,\n  `Toronto Neil McNeil Maroons`,\n  `Toronto Patriots`,\n  `Toronto Six`,\n  `Toronto St. Michael's Majors`,\n  `Toronto Varsity Blues men's ice hockey`,\n  `Torontos`,\n  `Toronto Wellingtons`,\n  `West Toronto Nationals`,\n  `Toronto Young Rangers`,\n]\nconst trie = nlp.buildTrie(matches)\n\nconst doit = async function (txt) {\n  const doc = nlp(txt)\n  let count = 0\n  // matches.forEach(reg => {\n  //   count += doc.match(reg).length\n  // })\n  count += doc.lookup(trie).length\n  console.log(count)\n  doc.json()\n}\n\nparentPort.on('message', async msg => {\n  const begin = new Date()\n  doit(msg)\n  const end = new Date()\n  const delta = (end.getTime() - begin.getTime()) / 1000\n  parentPort.postMessage(delta)\n})\n\n// new Promise(async resolve => {\n//   parentPort.postMessage(r)\n//   resolve(r)\n// })\n"
  },
  {
    "path": "scripts/perf/pool/pool.js",
    "content": "import { Worker } from 'worker_threads'\nimport os from 'os'\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nconst cpus = os.cpus().length\nconst dir = path.dirname(fileURLToPath(import.meta.url))\n\nclass Pool {\n  constructor() {\n    this.workers = []\n    for (let i = 0; i < cpus; i += 1) {\n      this.workers.push(new Worker(dir + '/worker.js'))\n      // this.workers.push(new Worker(dir + '/lookup-worker.js'))\n    }\n  }\n  do(msg) {\n    const ps = this.workers.map(w => {\n      return new Promise(resolve => {\n        w.on('message', res => {\n          w.removeAllListeners('message')\n          resolve(res)\n        })\n        w.postMessage(msg)\n      })\n    })\n    return Promise.all(ps).then(nums => {\n      // console.log(nums)\n      let avg = nums.reduce((h, n) => h + n, 0) / nums.length\n      avg = Math.round(avg * 10) / 10\n      return avg\n    })\n  }\n  count() {\n    return this.workers.length\n  }\n  close() {\n    this.workers.forEach(w => w.terminate())\n  }\n}\nexport default Pool\n\n// let p = new Pool()\n// p.do(\"hey now, you're a rockstar\").then(() => p.close())\n"
  },
  {
    "path": "scripts/perf/pool/worker.js",
    "content": "import { parentPort } from 'worker_threads'\n// const nlp = require('../../src')\nimport nlp from './_lib.js'\n// import plg from '../../../plugins/dates/src/plugin.js'\n// nlp.plugin(plg)\n\n\nconst matches = [\n  'out of range',\n  '#Person #Person',\n  '. of the world',\n  '#Noun+ house',\n  'range #Noun+',\n  'doubt . of #Verb',\n  '(watch|house|#Verb) .',\n  '(watch|house|#Verb)?',\n  '(watch a film|eat a cake)+',\n  '(#Noun of #Noun)+',\n  '. @hasQuestionMark',\n  'the .+',\n  'keep a #Noun',\n]\n\nconst doit = async function (txt) {\n  const doc = nlp(txt)\n  // doc.compute('root')\n  matches.forEach(reg => {\n    doc.match(reg).text()\n  })\n  doc.json()\n}\n\nparentPort.on('message', async msg => {\n  const begin = new Date()\n  doit(msg)\n  const end = new Date()\n  const delta = (end.getTime() - begin.getTime()) / 1000\n  parentPort.postMessage(delta)\n})\n\n// new Promise(async resolve => {\n//   parentPort.postMessage(r)\n//   resolve(r)\n// })\n"
  },
  {
    "path": "scripts/perf/versions.js",
    "content": "/* eslint-disable no-console */\nimport fetch from './_fetch'\n\nconst versions = [\n  // '13.0.0',// feb 2020\n  // '13.1.0',\n  // '13.1.1',\n  // '13.2.0',\n  // '13.3.0',\n  // '13.3.1',\n  // '13.3.2',\n  // '13.4.0',\n  // '13.5.0',\n  // '13.6.0',\n  // '13.7.0',\n  // '13.8.0',\n  // '13.9.0',\n  // '13.9.1',\n  // '13.9.2',\n  // '13.9.3',\n  // '13.10.0',\n  '13.10.1',\n  '13.10.2',\n]\n\nconst matches = [\n  'out of range',\n  '#Person #Person',\n  '. of the world',\n  '#Noun+ house',\n  'range #Noun+',\n  'doubt . of #Verb',\n  '(watch|house|#Verb) .',\n  '(watch|house|#Verb)?',\n  '(watch a film|eat a cake)+',\n  '(#Noun of #Noun)+',\n  '. @hasQuestionMark',\n  'the .+',\n  'keep a #Noun',\n]\nconst nlps = versions.map(version => {\n  return require('compromise' + version)\n})\nnlps.push(require('../../types'))\n\nconst testOne = function (nlp, texts) {\n  const begin = new Date()\n  texts.forEach(txt => {\n    const doc = nlp(txt)\n    matches.forEach(reg => {\n      doc.match(reg).text()\n      doc.json()\n    })\n  })\n  const end = new Date()\n  return (end.getTime() - begin.getTime()) / 1000\n}\n\n;(async () => {\n  const texts = []\n  for (let i = 1; i < 5; i += 1) {\n    const text = await fetch(`https://unpkg.com/nlp-corpus@3.3.0/builds/nlp-corpus-${i}.json`)\n    texts.push(text.join('\\n'))\n  }\n\n  console.log(`\\n\\n\\n === got ${texts.length} texts, and ${nlps.length} versions\\n`)\n  for (let i = 0; i < nlps.length; i += 1) {\n    console.log('\\n' + nlps[i].version + ':')\n    const time = testOne(nlps[i], texts)\n    console.log(`         ${time}s`)\n  }\n})()\n"
  },
  {
    "path": "scripts/plugins.js",
    "content": "/* eslint-disable no-console */\n// Run arbitrary (but typically npm) commands for each plugin\n// Example: \"node ./plugins.js npm install\"\nimport sh from 'shelljs'\n\n// process.argv contains the complete command-line, with [0] as the node\n// executable, and [1] as the script (this file).  [2] is the beginning of any\n// remaining args.\nconst args = process.argv.slice(2)\nconst command = args.join(' ')\n\nlet shouldFail = false\nsh.ls('./plugins').forEach(function (dir) {\n  console.log('\\n===' + dir + '===')\n  const code = sh.exec(command, { cwd: `./plugins/${dir}` }).code\n  if (code !== 0) {\n    shouldFail = dir\n  }\n})\n\nif (shouldFail !== false) {\n  console.warn('==================')\n  console.log('    dir: ' + shouldFail)\n  console.warn('==================')\n  throw shouldFail\n}\n"
  },
  {
    "path": "scripts/test/coverage.js",
    "content": "/* eslint-disable no-console */\nconst exec = require('shelljs').exec\nconst codecov = '15039ad1-b495-48cd-b4a0-bcf124c9b318' //i don't really care if you steal this.\n\n//let cmd=`./node_modules/.bin/nyc --reporter=text ./node_modules/.bin/tape ./test/**/*.test.js`\n//run all the tests\nconst cmd = `./node_modules/.bin/c8 --reporter=text-lcov ./node_modules/.bin/tape ./tests/**/*.test.js > coverage.lcov && ./node_modules/.bin/codecov -t ${codecov}`\nexec(cmd)\nconsole.log('\\n 🏃 done!')\n"
  },
  {
    "path": "scripts/test/index.js",
    "content": "/* eslint-disable no-console */\nconst sh = require('shelljs')\n\n// if given, run just one test:\nconst arg = process.argv[2]\nif (arg) {\n  let code = 0\n  console.log(arg + ':')\n  if (arg === 'main') {\n    code = sh.exec('tape \"./tests/**/*.test.js\" | tap-dancer --color always').code\n  } else {\n    code = sh.exec(`tape \"./plugins/${arg}/tests/**/*.test.js\" | tap-dancer --color always`).code\n  }\n  sh.exit(code)\n}\n\n// run the main tests:\nlet fail = false\nlet code = sh.exec('tape \"./tests/**/*.test.js\" | tap-dancer --color always').code\nif (code !== 0) {\n  fail = true\n}\n\n// run each plugin's tests:\nsh.ls('./plugins').forEach(function (dir) {\n  code = sh.exec(`tape \"./plugins/${dir}/tests/**/*.test.js\" | tap-dancer --color always`).code\n  if (code !== 0) {\n    console.log(dir)\n    fail = true\n  }\n})\n\n// return proper exit-code:\nif (fail) {\n  sh.exit(1)\n} else {\n  sh.exit(0)\n}\n"
  },
  {
    "path": "scripts/test/smoke.test.js",
    "content": "/* eslint-disable no-console */\nimport test from 'tape'\n// import main from '../../builds/compromise.js'\nimport main from '../../builds/three/compromise-three.mjs'\nimport one from '../../builds/one/compromise-one.cjs'\n// import two from '../../builds/two/compromise-two.cjs'\nconsole.log('\\n 🎗️  - running smoke-test..\\n') // eslint-disable-line\n\n//'sanity-test' the builds\ntest('main build', function (t) {\n  const doc = main('John and Joe walked to the store')\n  t.equal(doc.people().json().length, 2, 'found-people')\n  t.equal(doc.verbs().json().length, 1, 'found-verbs')\n  t.equal(doc.match('joe walked .').found, true, 'match-statement')\n  t.equal(doc.terms(1).text('reduced'), 'and', 'text-out')\n  t.equal(doc.match('joe walked .').found, true)\n  t.end()\n})\n\n// test('min build', function (t) {\n//   let doc = min('John and Joe walked to the store')\n//   t.equal(doc.people().json().length, 2, 'found-people')\n//   t.equal(doc.verbs().json().length, 1, 'found-verbs')\n//   t.equal(doc.match('joe walked .').found, true, 'match-statement')\n//   t.equal(doc.terms(1).text('reduced'), 'and', 'text-out')\n//   t.equal(doc.match('joe walked .').found, true)\n//   t.end()\n// })\n\ntest('tokenize build', function (t) {\n  const doc = one('John and Joe walked to the store')\n  t.equal(doc.match('joe walked .').found, true, 'match-statement')\n  t.equal(doc.match('joe walked .').found, true, 'match-statement')\n  t.equal(doc.has('#Person'), false, 'no sneaky tags')\n  //ensure lexicon works\n  // let tmp = tokenize('spencer kelly', { spencer: 'Cool' })\n  // t.equal(tmp.match('#Cool').text(), 'spencer', 'lexicon-works')\n  t.end()\n})\n"
  },
  {
    "path": "scripts/test/stress.js",
    "content": "/* eslint-disable no-console, no-unused-vars */\nimport corpus from 'nlp-corpus' //install with `npm i nlp-corpus --no-save`\nimport nlp from '../../src/three.js'\nconst texts = corpus.all()\nconsole.log(`\\n\\n--- running compromise on ${texts.length.toLocaleString()} random sentences---\\n`)\nconsole.log('    --should take a few minutes--')\n\nfor (let i = 0; i < texts.length; i++) {\n  const txt = texts[i]\n  nlp(txt)\n    .sentences()\n    .forEach(s => {\n      s.verbs().forEach(vb => {\n        if (vb.terms().not('(#Adverb|#Auxiliary|#Negative|#PhrasalVerb)').length > 1) {\n          // console.log(vb.text())\n        }\n      })\n\n    })\n}\n\nconsole.log('\\n\\n - done!')\n"
  },
  {
    "path": "scripts/test/types.ts",
    "content": "// a smoke-test for our typescipt typings\nimport nlp from '../../'\nimport tape from 'tape'\nimport stats, { StatsMethods } from '../../plugins/stats'\nimport dates, { DatesMethods } from '../../plugins/dates'\nimport speech, { SpeechMethods } from '../../plugins/speech'\nimport speed, { SpeedMethods } from '../../plugins/speed'\nimport wiki, { WikiMethods } from '../../plugins/wikipedia'\nnlp.plugin(stats)\nnlp.plugin(dates)\nnlp.plugin(speech)\nnlp.plugin(speed)\nnlp.plugin(wiki)\n\nconsole.log('\\n 🥗  - running types-test..\\n')\n\ntape('misc functions', function (t) {\n  let doc = nlp('John and Joe walked to the store')\n  let m = doc.filter(s => s.found)\n  const b = doc.map(s => s)\n  doc.forEach((s) => s)\n  const o = doc.find(s => s.found)\n  m = doc.some(s => s.found)\n  m = doc.random()\n  m = doc.all()\n  m = doc.eq(0)\n  m = doc.first()\n  m = doc.firstTerms()\n  m = doc.fullSentences()\n  m = doc.last()\n  m = doc.lastTerms()\n  m = doc.none()\n  m = doc.slice(0, 1)\n  m = doc.terms()\n  m = doc.update([])\n  m = doc.toView([])\n  m = doc.fromText('')\n  m = doc.clone()\n  const obj = doc.groups()\n  let arr = doc.termList()\n  const c = doc.wordCount()\n  doc.fullPointer\n  doc.docs\n  doc.pointer\n  doc.methods\n  doc.model\n  doc.hooks\n  doc.isView\n  doc.found\n  doc.length\n\n  // One\n  doc.compute('id')\n  // change\n  m = doc.toLowerCase()\n  m = doc.toUpperCase()\n  m = doc.toTitleCase()\n  m = doc.toCamelCase()\n  m = doc.insertAfter('asdf')\n  m = doc.insertBefore('boo')\n  m = doc.append('foo')\n  m = doc.prepend('foo')\n  m = doc.insert('bar')\n  m = doc.match('flood').replaceWith('asf')\n  m = doc.replace('m', 'woo')\n  m = doc.remove('foo')\n  m = doc.delete('bar')\n  m = doc.pre(' ')\n  m = doc.post(' ')\n  m = doc.trim()\n  m = doc.hyphenate()\n  m = doc.dehyphenate()\n  m = doc.toQuotations()\n  m = doc.toParentheses()\n  m = doc.deHyphenate()\n  m = doc.toQuotation()\n  m = doc.unique()\n  m = doc.reverse()\n  m = doc.sort()\n  m = doc.concat(doc.none())\n  // doc.fork()\n\n  doc.compute('contractions')\n  doc.compute('lexicon')\n  doc.lookup(['blue jays', 'farmer'])\n\n  // match\n  m = doc.matchOne('#Foo')\n  m = doc.match('#Foo')\n  const bool = doc.has('#Foo')\n  m = doc.if('#Foo')\n  m = doc.ifNo('#Foo')\n  m = doc.before('#Foo')\n  m = doc.after('#Foo')\n  m = doc.growLeft('#Foo')\n  m = doc.growRight('#Foo')\n  m = doc.grow('#Foo')\n  m = doc.splitOn('#Foo')\n  m = doc.splitBefore('#Foo')\n  m = doc.splitAfter('#Foo')\n  m = doc.split('#Foo')\n\n  // output\n  const res = doc.out()\n  let txt = doc.text()\n  txt = doc.text('normal')\n  txt = doc.text('machine')\n  txt = doc.text('root')\n  txt = doc.text('implicit')\n  txt = doc.json()\n\n  // sets\n  m = doc.union('blah')\n  m = doc.and('blah')\n  m = doc.intersection('blah')\n  m = doc.difference('blah')\n  m = doc.not('blah')\n  m = doc.complement('blah')\n  m = doc.settle('blah')\n\n  m = doc.tag('Foo')\n  m = doc.tagSafe('Foo')\n  m = doc.unTag('Foo')\n  m = doc.canBe('Foo')\n\n  doc.compute('alias')\n  doc.compute('normal')\n  doc.compute('machine')\n  doc.compute('freq')\n  doc.compute('offset')\n  doc.compute('index')\n  doc.compute('wordCount')\n\n  doc.compute('typeahead')\n  doc.autoFill()\n\n  // sweep\n  const matches = [\n    { match: '2nd quarter of? 2022', tag: 'TimePeriod' },\n    { match: '(from|by|before) now', tag: 'FooBar' },\n  ]\n  const net = nlp.buildNet(matches)\n  doc = nlp(`so good by now. woo hoo before now. in the 2nd quarter 2022`)\n  const sr = doc.sweep(net)\n\n  // lazy\n  doc = nlp.lazy('hello', 'foo')\n\n  // Two\n  doc.compute('contractionTwo')\n  m = doc.contractions()\n  m = doc.contractions().expand()\n\n  doc.confidence()\n\n  doc.compute('preTagger')\n  doc.compute('tagRank')\n  doc.compute('root')\n  doc.compute('penn')\n\n  m = doc.swap('rock', 'stone', '#Noun')\n\n\n  // Three\n  doc.compute('chunks')\n  m = doc.chunks()\n  m = doc.clauses()\n\n  // nouns\n  let tmp = doc.nouns().parse()\n  arr = doc.nouns().json()\n  let noun = doc.nouns().isPlural()\n  noun = doc.nouns().adjectives()\n  noun = doc.nouns().toPlural()\n  noun = doc.nouns().toSingular()\n  // numbers\n  tmp = doc.numbers().parse()\n  doc.numbers().get()\n  arr = doc.numbers().json()\n  let num = doc.numbers().isOrdinal()\n  num = doc.numbers().isCardinal()\n  num = doc.numbers().toNumber()\n  num = doc.numbers().toLocaleString()\n  num = doc.numbers().toText()\n  num = doc.numbers().toCardinal()\n  num = doc.numbers().toOrdinal()\n  num = doc.numbers().isEqual()\n  num = doc.numbers().greaterThan(3)\n  num = doc.numbers().lessThan(3)\n  num = doc.numbers().between(3, 4)\n  num = doc.numbers().set(2)\n  num = doc.numbers().add(3)\n  num = doc.numbers().subtract(2)\n  num = doc.numbers().increment()\n  num = doc.numbers().decrement()\n  num = doc.percentages().json()\n  num = doc.money().json()\n  num = doc.fractions().json()\n\n  // sentences\n  let s = doc.sentences().toPastTense()\n  s = doc.sentences().toPresentTense()\n  s = doc.sentences().toFutureTense()\n  s = doc.sentences().toInfinitive()\n  s = doc.sentences().toNegative()\n  s = doc.questions()\n\n  // verbs\n  // arr = doc.verbs().parse()\n  arr = doc.verbs().json()\n  const sj = doc.verbs().subjects()\n  let vb = doc.verbs().isSingular()\n  vb = doc.verbs().isPlural()\n  vb = doc.verbs().isImperative()\n  vb = doc.verbs().toInfinitive()\n  vb = doc.verbs().toPresentTense()\n  vb = doc.verbs().toPastTense()\n  vb = doc.verbs().toFutureTense()\n  vb = doc.verbs().toGerund()\n  vb = doc.verbs().conjugate()\n  vb = doc.verbs().isNegative()\n  vb = doc.verbs().isPositive()\n  vb = doc.verbs().toPositive()\n  vb = doc.verbs().toNegative()\n\n  // misc\n  m = doc.redact()\n  m = doc.topics()\n  m = doc.organizations()\n  tmp = doc.people().parse()\n  arr = doc.people().json()\n  m = doc.places()\n\n  m = doc.quotations()\n  m = doc.quotations().strip()\n  m = doc.parentheses()\n  m = doc.parentheses().strip()\n  m = doc.possessives()\n  m = doc.possessives().strip()\n\n  t.ok(true)\n  t.end()\n})\n\ntape('plugin-date', function (t) {\n  const doc = nlp<DatesMethods>('foo bar baz')\n  const a = doc.dates()\n  const b = doc.times()\n  const c = doc.durations()\n\n  let m = doc.dates().match('foo')\n  m = doc.dates().format('foo')\n  const arr = doc.dates().get()\n  // doc.dates().floob()\n  // doc.floob()\n  t.end()\n})\n\ntape('plugin-speech', function (t) {\n  const doc = nlp<SpeechMethods>('foo bar baz')\n  let arr = doc.syllables()\n  arr = doc.soundsLike()\n  t.end()\n})\n\ntape('plugin-speed', function (t) {\n  const doc = nlp<SpeedMethods>('foo bar')\n  // nlp.workerPool()\n  doc.match('foo')\n  t.end()\n})\n\ntape('plugin-stats', function (t) {\n  const doc = nlp<StatsMethods>('foo bar baz. foo')\n  let arr = doc.ngrams()\n  arr = doc.ngrams()\n  arr = doc.unigrams()\n  arr = doc.bigrams()\n  arr = doc.trigrams()\n  arr = doc.startgrams()\n  arr = doc.endgrams()\n  arr = doc.edgegrams()\n  const res = doc.tfidf()\n  t.end()\n})\n\ntape('plugin-wikipedia', function (t) {\n  const doc = nlp<WikiMethods>('foo bar baz. foo')\n  const wp = doc.wikipedia()\n  t.end()\n})\n\n"
  },
  {
    "path": "scripts/typescript/one.ts",
    "content": "// import nlp from '../../src/three.js'\nimport nlp from '../../types/one'\n\nconst doc = nlp('okay cool')\n\n// ### Lib\nnlp.tokenize('adf')\nnlp.plugin({})\nnlp.parseMatch()\n\nnlp.world()\nnlp.model()\nnlp.methods()\nnlp.hooks()\nnlp.verbose()\nnlp.version\n\n// ### API\ndoc.compute('')\ndoc.forEach(s => s)\ndoc.map(s => s)\ndoc.filter(s => s.found)\ndoc.find(s => s.found)\ndoc.some(s => s.found)\ndoc.random()\n\ndoc.termList()\ndoc.terms()\ndoc.groups()\ndoc.eq(3)\ndoc.first()\ndoc.last()\ndoc.firstTerms()\ndoc.lastTerms()\ndoc.slice(3)\ndoc.all()\ndoc.fullSentences()\ndoc.none()\ndoc.isDoc()\ndoc.wordCount()\n\ndoc.docs\ndoc.pointer\ndoc.methods\ndoc.model\ndoc.hooks\ndoc.isView\ndoc.found\ndoc.length\ndoc.fullPointer\ndoc.update(null)\ndoc.toView(null)\ndoc.fromText('')\ndoc.clone()\n\n// ### Change\ndoc.compute('id')\ndoc.toLowerCase()\ndoc.toUpperCase()\ndoc.toTitleCase()\ndoc.toCamelCase()\n\ndoc.concat('')\n\ndoc.insertAfter('')\ndoc.insertBefore('')\n\ndoc.remove('')\n\ndoc.replace('', '')\ndoc.replaceWith('')\n\ndoc.unique()\ndoc.reverse()\ndoc.sort()\n\ndoc.pre()\ndoc.post()\ndoc.trim()\ndoc.hyphenate()\ndoc.dehyphenate()\ndoc.toQuotations()\ndoc.toParentheses()\n\n// ### Output\ndoc.html({})\ndoc.json()\ndoc.out()\ndoc.debug()\ndoc.text()\ndoc.wrap({})\n\n// ### Match\nnlp.parseMatch()\n\ndoc.match('')\ndoc.matchOne('')\ndoc.has('')\ndoc.if('')\ndoc.ifNo('')\n\ndoc.before('')\ndoc.after('')\ndoc.growLeft('')\ndoc.growRight('')\ndoc.grow('')\n\ndoc.splitOn()\ndoc.splitBefore()\ndoc.splitAfter()\n\n// ### Pointers\ndoc.union('')\ndoc.intersection('')\ndoc.not('')\ndoc.complement('')\ndoc.settle('')\n\n// ### Tag\nnlp.addTags({})\ndoc.compute('tagRank')\n\ndoc.tag('')\ndoc.tagSafe('')\ndoc.unTag('')\ndoc.canBe('')\n\n// ### Contractions\ndoc.compute('contractions')\n\n// ### Tokenize\ndoc.compute('alias')\ndoc.compute('machine')\ndoc.compute('normal')\ndoc.compute('freq')\ndoc.compute('offset')\ndoc.compute('index')\ndoc.compute('wordCount')\n\n// ### Cache\ndoc.compute('cache')\ndoc.cache()\ndoc.uncache()\n\n// ### Lookup\nnlp.buildTrie([''])\ndoc.lookup({})\n\n// ### Typeahead\nnlp.typeahead({})\ndoc.compute('typeahead')\ndoc.autoFill()\n\n// ### Lexicon\ndoc.compute('lexicon')\nnlp.addWords({})\n\n\n\n\n"
  },
  {
    "path": "scripts/typescript/three.ts",
    "content": "// import nlp from '../../src/three.js'\nimport nlp from '../../types/three'\n\nconst doc = nlp('okay cool')\n\n// ### Chunker\ndoc.compute('chunks')\ndoc.chunks()\ndoc.clauses()\n\n// ### Normalize\ndoc.normalize()\n\n// ### Redact\ndoc.redact()\n\n// ### Misc\ndoc.hyphenated()\ndoc.hashTags()\ndoc.emails()\ndoc.emoji()\ndoc.emoticons()\ndoc.atMentions()\ndoc.urls()\ndoc.pronouns()\ndoc.conjunctions()\ndoc.prepositions()\ndoc.honorifics()\ndoc.abbreviations()\ndoc.phoneNumbers()\n\ndoc.acronyms()\ndoc.acronyms().strip()\ndoc.parentheses()\ndoc.parentheses().strip()\ndoc.possessives()\ndoc.possessives().strip()\ndoc.quotations()\ndoc.quotations().strip()\ndoc.adjectives()\ndoc.adjectives().json()\ndoc.adverbs()\ndoc.adverbs().json()\n\n// ### Nouns\ndoc.nouns()\ndoc.nouns().parse()\ndoc.nouns().json()\ndoc.nouns().isPlural()\ndoc.nouns().adjectives()\ndoc.nouns().toPlural()\ndoc.nouns().toSingular()\n\n// ### Numbers\ndoc.numbers()\ndoc.numbers().parse()\ndoc.numbers().get()\ndoc.numbers().json()\ndoc.numbers().isOrdinal()\ndoc.numbers().isCardinal()\ndoc.numbers().isUnit('km')\ndoc.numbers().toNumber()\ndoc.numbers().toLocaleString()\ndoc.numbers().toText()\ndoc.numbers().toCardinal()\ndoc.numbers().toOrdinal()\ndoc.numbers().isEqual()\ndoc.numbers().greaterThan(2)\ndoc.numbers().lessThan(2)\ndoc.numbers().between(2, 3)\ndoc.numbers().set(2)\ndoc.numbers().add(2)\ndoc.numbers().subtract(2)\ndoc.numbers().increment()\ndoc.numbers().decrement()\ndoc.percentages()\ndoc.money()\ndoc.fractions()\ndoc.fractions().parse()\ndoc.fractions().get()\ndoc.fractions().json()\ndoc.fractions().toDecimal()\ndoc.fractions().toFraction()\ndoc.fractions().toOrdinal()\ndoc.fractions().toCardinal()\ndoc.fractions().toPercentage()\n\n// ### Sentences\ndoc.sentences()\ndoc.sentences().json()\ndoc.sentences().toPastTense()\ndoc.sentences().toPresentTense()\ndoc.sentences().toFutureTense()\ndoc.sentences().toInfinitive()\ndoc.sentences().toNegative()\ndoc.sentences().toPositive()\ndoc.sentences().isQuestion()\ndoc.sentences().isExclamation()\ndoc.sentences().isStatement()\ndoc.questions()\n\n// ### Verbs\ndoc.verbs()\ndoc.verbs().parse()\ndoc.verbs().json()\ndoc.verbs().subjects()\ndoc.verbs().adverbs()\ndoc.verbs().isSingular()\ndoc.verbs().isPlural()\ndoc.verbs().isImperative()\n\ndoc.verbs().toInfinitive()\ndoc.verbs().toPresentTense()\ndoc.verbs().toPastTense()\ndoc.verbs().toFutureTense()\ndoc.verbs().toGerund()\ndoc.verbs().conjugate()\ndoc.verbs().isNegative()\ndoc.verbs().isPositive()\ndoc.verbs().toPositive()\ndoc.verbs().toNegative()\n\n// ### Topics\ndoc.people()\ndoc.people().parse()\ndoc.people().json()\ndoc.places()\ndoc.organizations()\ndoc.topics()\n"
  },
  {
    "path": "scripts/typescript/two.ts",
    "content": "// import nlp from '../../src/three.js'\nimport nlp from '../../types/two'\n\nconst doc = nlp('okay cool')\n\n// ### Pre-tagger\ndoc.compute('preTagger')\ndoc.compute('root')\ndoc.compute('penn')\n\n// ### Contraction-two\ndoc.compute('contractionTwo')\ndoc.contractions()\ndoc.contractions().expand()\ndoc.contract()\n\n// ### Post-tagger\ndoc.compute('postTagger')\ndoc.confidence()\n\n\n// ### Swap\ndoc.swap('', '')\n"
  },
  {
    "path": "scripts/version.js",
    "content": "import fs from 'fs'\n// avoid requiring our whole package.json file\n// make a small file for our version number\nconst pkg = JSON.parse(fs.readFileSync('./package.json').toString())\n\nfs.writeFileSync('./src/_version.js', `export default '${pkg.version}'`)\n"
  },
  {
    "path": "src/1-one/cache/api.js",
    "content": "const methods = {\n  /** */\n  cache: function () {\n    this._cache = this.methods.one.cacheDoc(this.document)\n    return this\n  },\n  /** */\n  uncache: function () {\n    this._cache = null\n    return this\n  },\n}\nconst addAPI = function (View) {\n  Object.assign(View.prototype, methods)\n}\nexport default addAPI\n"
  },
  {
    "path": "src/1-one/cache/compute.js",
    "content": "\nexport default {\n  cache: function (view) {\n    view._cache = view.methods.one.cacheDoc(view.document)\n  }\n}"
  },
  {
    "path": "src/1-one/cache/methods/cacheDoc.js",
    "content": "const createCache = function (document) {\n  const cache = document.map(terms => {\n    const items = new Set()\n    terms.forEach(term => {\n      // add words\n      if (term.normal !== '') {\n        items.add(term.normal)\n      }\n      // cache switch-status - '%Noun|Verb%'\n      if (term.switch) {\n        items.add(`%${term.switch}%`)\n      }\n      // cache implicit words, too\n      if (term.implicit) {\n        items.add(term.implicit)\n      }\n      if (term.machine) {\n        items.add(term.machine)\n      }\n      if (term.root) {\n        items.add(term.root)\n      }\n      // cache slashes words, etc\n      if (term.alias) {\n        term.alias.forEach(str => items.add(str))\n      }\n      const tags = Array.from(term.tags)\n      for (let t = 0; t < tags.length; t += 1) {\n        items.add('#' + tags[t])\n      }\n    })\n    return items\n  })\n  return cache\n}\nexport default createCache\n"
  },
  {
    "path": "src/1-one/cache/methods/index.js",
    "content": "import cacheDoc from './cacheDoc.js'\n\nexport default {\n  one: {\n    cacheDoc,\n  },\n}\n"
  },
  {
    "path": "src/1-one/cache/plugin.js",
    "content": "import methods from './methods/index.js'\nimport api from './api.js'\nimport compute from './compute.js'\n\nexport default {\n  api,\n  compute,\n  methods,\n}\n"
  },
  {
    "path": "src/1-one/change/api/case.js",
    "content": "export default {\n  /** */\n  toLowerCase: function () {\n    this.termList().forEach(t => {\n      t.text = t.text.toLowerCase()\n    })\n    return this\n  },\n  /** */\n  toUpperCase: function () {\n    this.termList().forEach(t => {\n      t.text = t.text.toUpperCase()\n    })\n    return this\n  },\n  /** */\n  toTitleCase: function () {\n    this.termList().forEach(t => {\n      t.text = t.text.replace(/^ *[a-z\\u00C0-\\u00FF]/, x => x.toUpperCase()) //support unicode?\n    })\n    return this\n  },\n  /** */\n  toCamelCase: function () {\n    this.docs.forEach(terms => {\n      terms.forEach((t, i) => {\n        if (i !== 0) {\n          t.text = t.text.replace(/^ *[a-z\\u00C0-\\u00FF]/, x => x.toUpperCase()) //support unicode?\n        }\n        if (i !== terms.length - 1) {\n          t.post = ''\n        }\n      })\n    })\n    return this\n  },\n}\n"
  },
  {
    "path": "src/1-one/change/api/concat.js",
    "content": "const isArray = (arr) => Object.prototype.toString.call(arr) === '[object Array]'\n\n// append a new document, somehow\nconst combineDocs = function (homeDocs, inputDocs) {\n  if (homeDocs.length > 0) {\n    // add a space\n    const end = homeDocs[homeDocs.length - 1]\n    const last = end[end.length - 1]\n    if (/ /.test(last.post) === false) {\n      last.post += ' '\n    }\n  }\n  homeDocs = homeDocs.concat(inputDocs)\n  return homeDocs\n}\n\nconst combineViews = function (home, input) {\n  // is it a view from the same document?\n  if (home.document === input.document) {\n    const ptrs = home.fullPointer.concat(input.fullPointer)\n    return home.toView(ptrs).compute('index')\n  }\n  // update n of new pointer, to end of our pointer\n  const ptrs = input.fullPointer\n  ptrs.forEach(a => {\n    a[0] += home.document.length\n  })\n  home.document = combineDocs(home.document, input.docs)\n  return home.all()\n}\n\nexport default {\n  // add string as new match/sentence\n  concat: function (input) {\n    // parse and splice-in new terms\n    if (typeof input === 'string') {\n      const more = this.fromText(input)\n      // easy concat\n      if (!this.found || !this.ptrs) {\n        this.document = this.document.concat(more.document)\n      } else {\n        // if we are in the middle, this is actually a splice operation\n        const ptrs = this.fullPointer\n        const at = ptrs[ptrs.length - 1][0]\n        this.document.splice(at, 0, ...more.document)\n      }\n      // put the docs\n      return this.all().compute('index')\n    }\n    // plop some view objects together\n    if (typeof input === 'object' && input.isView) {\n      return combineViews(this, input)\n    }\n    // assume it's an array of terms\n    if (isArray(input)) {\n      const docs = combineDocs(this.document, input)\n      this.document = docs\n      return this.all()\n    }\n    return this\n  },\n}"
  },
  {
    "path": "src/1-one/change/api/harden.js",
    "content": "// add indexes to pointers\nconst harden = function () {\n  this.ptrs = this.fullPointer\n  return this\n}\n// remove indexes from pointers\nconst soften = function () {\n  let ptr = this.ptrs\n  if (!ptr || ptr.length < 1) {\n    return this\n  }\n  ptr = ptr.map(a => a.slice(0, 3))\n  this.ptrs = ptr\n  return this\n}\nexport default { harden, soften }"
  },
  {
    "path": "src/1-one/change/api/index.js",
    "content": "import caseFns from './case.js'\nimport insert from './insert.js'\nimport replace from './replace.js'\nimport remove from './remove.js'\nimport whitespace from './whitespace.js'\nimport sort from './sort.js'\nimport concat from './concat.js'\nimport harden from './harden.js'\n\nconst methods = Object.assign({}, caseFns, insert, replace, remove, whitespace, sort, concat, harden)\n\nconst addAPI = function (View) {\n  Object.assign(View.prototype, methods)\n}\nexport default addAPI\n"
  },
  {
    "path": "src/1-one/change/api/insert.js",
    "content": "import { cleanAppend, cleanPrepend } from './lib/insert.js'\nimport uuid from '../compute/uuid.js'\n// are we inserting inside a contraction?\n// expand it first\nconst expand = function (m) {\n  if (m.has('@hasContraction') && typeof m.contractions === 'function') {\n    //&& m.after('^.').has('@hasContraction')\n    const more = m.grow('@hasContraction')\n    more.contractions().expand()\n  }\n}\n\nconst isArray = arr => Object.prototype.toString.call(arr) === '[object Array]'\n\n// set new ids for each terms\nconst addIds = function (terms) {\n  terms = terms.map(term => {\n    term.id = uuid(term)\n    return term\n  })\n  return terms\n}\n\nconst getTerms = function (input, world) {\n  const { methods } = world\n  // create our terms from a string\n  if (typeof input === 'string') {\n    return methods.one.tokenize.fromString(input, world)[0] //assume one sentence\n  }\n  //allow a view object\n  if (typeof input === 'object' && input.isView) {\n    return input.clone().docs[0] || [] //assume one sentence\n  }\n  //allow an array of terms, too\n  if (isArray(input)) {\n    return isArray(input[0]) ? input[0] : input\n  }\n  return []\n}\n\nconst insert = function (input, view, prepend) {\n  const { document, world } = view\n  view.uncache()\n  // insert words at end of each doc\n  const ptrs = view.fullPointer\n  const selfPtrs = view.fullPointer\n  view.forEach((m, i) => {\n    const ptr = m.fullPointer[0]\n    const [n] = ptr\n    // add-in the words\n    const home = document[n]\n    let terms = getTerms(input, world)\n    // are we inserting nothing?\n    if (terms.length === 0) {\n      return\n    }\n    terms = addIds(terms)\n    if (prepend) {\n      expand(view.update([ptr]).firstTerm())\n      cleanPrepend(home, ptr, terms, document)\n    } else {\n      expand(view.update([ptr]).lastTerm())\n      cleanAppend(home, ptr, terms, document)\n    }\n    // harden the pointer\n    if (document[n] && document[n][ptr[1]]) {\n      ptr[3] = document[n][ptr[1]].id\n    }\n    // change self backwards by len\n    selfPtrs[i] = ptr\n    // extend the pointer\n    ptr[2] += terms.length\n    ptrs[i] = ptr\n  })\n  const doc = view.toView(ptrs)\n  // shift our self pointer, if necessary\n  view.ptrs = selfPtrs\n  // try to tag them, too\n  doc.compute(['id', 'index', 'freeze', 'lexicon'])\n  if (doc.world.compute.preTagger) {\n    doc.compute('preTagger')\n  }\n  doc.compute('unfreeze')\n  return doc\n}\n\nconst fns = {\n  insertAfter: function (input) {\n    return insert(input, this, false)\n  },\n  insertBefore: function (input) {\n    return insert(input, this, true)\n  },\n}\nfns.append = fns.insertAfter\nfns.prepend = fns.insertBefore\nfns.insert = fns.insertAfter\n\nexport default fns\n"
  },
  {
    "path": "src/1-one/change/api/lib/_sort.js",
    "content": "/** alphabetical order */\nconst alpha = (a, b) => {\n  if (a.normal < b.normal) {\n    return -1\n  }\n  if (a.normal > b.normal) {\n    return 1\n  }\n  return 0\n}\n\n/** count the # of characters of each match */\nconst length = (a, b) => {\n  const left = a.normal.trim().length\n  const right = b.normal.trim().length\n  if (left < right) {\n    return 1\n  }\n  if (left > right) {\n    return -1\n  }\n  return 0\n}\n\n/** count the # of terms in each match */\nconst wordCount = (a, b) => {\n  if (a.words < b.words) {\n    return 1\n  }\n  if (a.words > b.words) {\n    return -1\n  }\n  return 0\n}\n\n/** count the # of terms in each match */\nconst sequential = (a, b) => {\n  if (a[0] < b[0]) {\n    return 1\n  }\n  if (a[0] > b[0]) {\n    return -1\n  }\n  return a[1] > b[1] ? 1 : -1\n}\n\n/** sort by # of duplicates in the document*/\nconst byFreq = function (arr) {\n  const counts = {}\n  arr.forEach(o => {\n    counts[o.normal] = counts[o.normal] || 0\n    counts[o.normal] += 1\n  })\n  // sort by freq\n  arr.sort((a, b) => {\n    const left = counts[a.normal]\n    const right = counts[b.normal]\n    if (left < right) {\n      return 1\n    }\n    if (left > right) {\n      return -1\n    }\n    return 0\n  })\n  return arr\n}\n\nexport default { alpha, length, wordCount, sequential, byFreq }\n"
  },
  {
    "path": "src/1-one/change/api/lib/insert.js",
    "content": "// case logic\nconst isTitleCase = (str) => /^\\p{Lu}[\\p{Ll}'’]/u.test(str) || /^\\p{Lu}$/u.test(str)\nconst toTitleCase = (str) => str.replace(/^\\p{Ll}/u, x => x.toUpperCase())\nconst toLowerCase = (str) => str.replace(/^\\p{Lu}/u, x => x.toLowerCase())\n\n// splice an array into an array\nconst spliceArr = (parent, index, child) => {\n  // tag them as dirty\n  child.forEach(term => term.dirty = true)\n  if (parent) {\n    const args = [index, 0].concat(child)\n    Array.prototype.splice.apply(parent, args)\n  }\n  return parent\n}\n\n// add a space at end, if required\nconst endSpace = function (terms) {\n  const hasSpace = / $/\n  const hasDash = /[-–—]/\n  const lastTerm = terms[terms.length - 1]\n  if (lastTerm && !hasSpace.test(lastTerm.post) && !hasDash.test(lastTerm.post)) {\n    lastTerm.post += ' '\n  }\n}\n\n// sentence-ending punctuation should move in append\nconst movePunct = (source, end, needle) => {\n  const juicy = /[-.?!,;:)–—'\"]/g\n  const wasLast = source[end - 1]\n  if (!wasLast) {\n    return\n  }\n  const post = wasLast.post\n  if (juicy.test(post)) {\n    const punct = post.match(juicy).join('') //not perfect\n    const last = needle[needle.length - 1]\n    last.post = punct + last.post\n    // remove it, from source\n    wasLast.post = wasLast.post.replace(juicy, '')\n  }\n}\n\n\nconst moveTitleCase = function (home, start, needle) {\n  const from = home[start]\n  // should we bother?\n  if (start !== 0 || !isTitleCase(from.text)) {\n    return\n  }\n  // titlecase new first term\n  needle[0].text = toTitleCase(needle[0].text)\n  // should we un-titlecase the old word?\n  const old = home[start]\n  if (old.tags.has('ProperNoun') || old.tags.has('Acronym')) {\n    return\n  }\n  if (isTitleCase(old.text) && old.text.length > 1) {\n    old.text = toLowerCase(old.text)\n  }\n}\n\n// put these words before the others\nconst cleanPrepend = function (home, ptr, needle, document) {\n  const [n, start, end] = ptr\n  // introduce spaces appropriately\n  if (start === 0) {\n    // at start - need space in insert\n    endSpace(needle)\n  } else if (end === document[n].length) {\n    // at end - need space in home\n    endSpace(needle)\n  } else {\n    // in middle - need space in home and insert\n    endSpace(needle)\n    endSpace([home[ptr[1]]])\n  }\n  moveTitleCase(home, start, needle)\n  // movePunct(home, end, needle)\n  spliceArr(home, start, needle)\n}\n\nconst cleanAppend = function (home, ptr, needle, document) {\n  const [n, , end] = ptr\n  const total = (document[n] || []).length\n  if (end < total) {\n    // are we in the middle?\n    // add trailing space on self\n    movePunct(home, end, needle)\n    endSpace(needle)\n  } else if (total === end) {\n    // are we at the end?\n    // add a space to predecessor\n    endSpace(home)\n    // very end, move period\n    movePunct(home, end, needle)\n    // is there another sentence after?\n    if (document[n + 1]) {\n      needle[needle.length - 1].post += ' '\n    }\n  }\n  spliceArr(home, ptr[2], needle)\n  // set new endId\n  ptr[4] = needle[needle.length - 1].id\n}\n\nexport { cleanPrepend, cleanAppend, spliceArr }\n"
  },
  {
    "path": "src/1-one/change/api/lib/remove.js",
    "content": "\n// transfer sentence-ending punctuation\nconst repairPunct = function (terms, len) {\n  const last = terms.length - 1\n  const from = terms[last]\n  const to = terms[last - len]\n  if (to && from) {\n    to.post += from.post //this isn't perfect.\n    to.post = to.post.replace(/ +([.?!,;:])/, '$1')\n    // don't allow any silly punctuation outcomes like ',!'\n    to.post = to.post.replace(/[,;:]+([.?!])/, '$1')\n  }\n}\n\n// remove terms from document json\nconst pluckOut = function (document, nots) {\n  nots.forEach(ptr => {\n    const [n, start, end] = ptr\n    const len = end - start\n    if (!document[n]) {\n      return // weird!\n    }\n    if (end === document[n].length && end > 1) {\n      repairPunct(document[n], len)\n    }\n    document[n].splice(start, len) // replaces len terms at index start\n  })\n  // remove any now-empty sentences\n  // (foreach + splice = 'mutable filter')\n  for (let i = document.length - 1; i >= 0; i -= 1) {\n    if (document[i].length === 0) {\n      document.splice(i, 1)\n      // remove any trailing whitespace before our removed sentence\n      if (i === document.length && document[i - 1]) {\n        const terms = document[i - 1]\n        const lastTerm = terms[terms.length - 1]\n        if (lastTerm) {\n          lastTerm.post = lastTerm.post.trimEnd()\n        }\n      }\n      // repair any downstream indexes\n      // for (let k = i; k < document.length; k += 1) {\n      //   document[k].forEach(term => term.index[0] -= 1)\n      // }\n    }\n  }\n  return document\n}\n\nexport default pluckOut"
  },
  {
    "path": "src/1-one/change/api/remove.js",
    "content": "import pluckOutTerm from './lib/remove.js'\n\nconst fixPointers = function (ptrs, gonePtrs) {\n  ptrs = ptrs.map(ptr => {\n    const [n] = ptr\n    if (!gonePtrs[n]) {\n      return ptr\n    }\n    gonePtrs[n].forEach(no => {\n      const len = no[2] - no[1]\n      // does it effect our pointer?\n      if (ptr[1] <= no[1] && ptr[2] >= no[2]) {\n        ptr[2] -= len\n      }\n    })\n    return ptr\n  })\n\n  // decrement any pointers after a now-empty pointer\n  ptrs.forEach((ptr, i) => {\n    // is the pointer now empty?\n    if (ptr[1] === 0 && ptr[2] == 0) {\n      // go down subsequent pointers\n      for (let n = i + 1; n < ptrs.length; n += 1) {\n        ptrs[n][0] -= 1\n        if (ptrs[n][0] < 0) {\n          ptrs[n][0] = 0\n        }\n      }\n    }\n  })\n  // remove any now-empty pointers\n  ptrs = ptrs.filter(ptr => ptr[2] - ptr[1] > 0)\n\n  // remove old hard-pointers\n  ptrs = ptrs.map((ptr) => {\n    ptr[3] = null\n    ptr[4] = null\n    return ptr\n  })\n  return ptrs\n}\n\nconst methods = {\n  /** */\n  remove: function (reg) {\n    const { indexN } = this.methods.one.pointer\n    this.uncache()\n    // two modes:\n    //  - a. remove self, from full parent\n    let self = this.all()\n    let not = this\n    //  - b. remove a match, from self\n    if (reg) {\n      self = this\n      not = this.match(reg)\n    }\n    const isFull = !self.ptrs\n    // is it part of a contraction?\n    if (not.has('@hasContraction') && not.contractions) {\n      const more = not.grow('@hasContraction')\n      more.contractions().expand()\n    }\n\n    let ptrs = self.fullPointer\n    const nots = not.fullPointer.reverse()\n    // remove them from the actual document)\n    const document = pluckOutTerm(this.document, nots)\n    // repair our pointers\n    const gonePtrs = indexN(nots)\n    ptrs = fixPointers(ptrs, gonePtrs)\n    // clean up our original inputs\n    self.ptrs = ptrs\n    self.document = document\n    self.compute('index')\n    // if we started zoomed-out, try to end zoomed-out\n    if (isFull) {\n      self.ptrs = undefined\n    }\n    if (!reg) {\n      this.ptrs = []\n      return self.none()\n    }\n    const res = self.toView(ptrs) //return new document\n    return res\n  },\n}\n\n// aliases\nmethods.delete = methods.remove\nexport default methods\n"
  },
  {
    "path": "src/1-one/change/api/replace.js",
    "content": "const dollarStub = /\\$[0-9a-z]+/g\nconst fns = {}\n\n// case logic\nconst isTitleCase = (str) => /^\\p{Lu}[\\p{Ll}'’]/u.test(str) || /^\\p{Lu}$/u.test(str)\nconst toTitleCase = (str) => str.replace(/^\\p{Ll}/u, x => x.toUpperCase())\nconst toLowerCase = (str) => str.replace(/^\\p{Lu}/u, x => x.toLowerCase())\n\n// doc.replace('foo', (m)=>{})\nconst replaceByFn = function (main, fn, keep) {\n  main.forEach(m => {\n    const out = fn(m)\n    m.replaceWith(out, keep)\n  })\n  return main\n}\n\n// support 'foo $0' replacements\nconst subDollarSign = function (input, main) {\n  if (typeof input !== 'string') {\n    return input\n  }\n  const groups = main.groups()\n  input = input.replace(dollarStub, a => {\n    const num = a.replace(/\\$/, '')\n    if (groups.hasOwnProperty(num)) {\n      return groups[num].text()\n    }\n    return a\n  })\n  return input\n}\n\nfns.replaceWith = function (input, keep = {}) {\n  let ptrs = this.fullPointer\n  const main = this\n  this.uncache()\n  if (typeof input === 'function') {\n    return replaceByFn(main, input, keep)\n  }\n  const terms = main.docs[0]\n  if (!terms) return main\n  const isOriginalPossessive = keep.possessives && terms[terms.length - 1].tags.has('Possessive')\n  const isOriginalTitleCase = keep.case && isTitleCase(terms[0].text)\n  // support 'foo $0' replacements\n  input = subDollarSign(input, main)\n\n  const original = this.update(ptrs)\n  // soften-up pointer\n  ptrs = ptrs.map(ptr => ptr.slice(0, 3))\n  // original.freeze()\n  const oldTags = (original.docs[0] || []).map(term => Array.from(term.tags))\n  const originalPre = original.docs[0][0].pre\n  const originalPost = original.docs[0][original.docs[0].length - 1].post\n  // slide this in\n  if (typeof input === 'string') {\n    input = this.fromText(input).compute('id')\n  }\n  main.insertAfter(input)\n  // are we replacing part of a contraction?\n  if (original.has('@hasContraction') && main.contractions) {\n    const more = main.grow('@hasContraction+')\n    more.contractions().expand()\n  }\n  // delete the original terms\n  main.delete(original) //science.\n\n  // keep \"John's\"\n  if (isOriginalPossessive) {\n    const tmp = main.docs[0]\n    const term = tmp[tmp.length - 1]\n    if (!term.tags.has('Possessive')) {\n      term.text += \"'s\"\n      term.normal += \"'s\"\n      term.tags.add('Possessive')\n    }\n  }\n\n  // try to keep some pre-punctuation\n  if (originalPre && main.docs[0]) {\n    main.docs[0][0].pre = originalPre\n  }\n  // try to keep any post-punctuation\n  if (originalPost && main.docs[0]) {\n    const lastOne = main.docs[0][main.docs[0].length - 1]\n    if (!lastOne.post.trim()) {\n      lastOne.post = originalPost\n    }\n  }\n\n  // what should we return?\n  const m = main.toView(ptrs).compute(['index', 'freeze', 'lexicon'])\n  if (m.world.compute.preTagger) {\n    m.compute('preTagger')\n  }\n  m.compute('unfreeze')\n  // replace any old tags\n  if (keep.tags) {\n    m.terms().forEach((term, i) => {\n      term.tagSafe(oldTags[i])\n    })\n  }\n\n  if (!m.docs[0] || !m.docs[0][0]) return m\n\n  // try to co-erce case, too\n  if (keep.case) {\n    const transformCase = isOriginalTitleCase ? toTitleCase : toLowerCase\n    m.docs[0][0].text = transformCase(m.docs[0][0].text)\n  }\n\n  // console.log(input.docs[0])\n  // let regs = input.docs[0].map(t => {\n  //   return { id: t.id, optional: true }\n  // })\n  // m.after('(a|hoy)').debug()\n  // m.growRight('(a|hoy)').debug()\n  // console.log(m)\n  return m\n}\n\nfns.replace = function (match, input, keep) {\n  if (match && !input) {\n    return this.replaceWith(match, keep)\n  }\n  const m = this.match(match)\n  if (!m.found) {\n    return this\n  }\n  this.soften()\n  return m.replaceWith(input, keep)\n}\nexport default fns\n"
  },
  {
    "path": "src/1-one/change/api/sort.js",
    "content": "import methods from './lib/_sort.js'\n// aliases\nconst seqNames = new Set(['index', 'sequence', 'seq', 'sequential', 'chron', 'chronological'])\nconst freqNames = new Set(['freq', 'frequency', 'topk', 'repeats'])\nconst alphaNames = new Set(['alpha', 'alphabetical'])\n\n// support function as parameter\nconst customSort = function (view, fn) {\n  let ptrs = view.fullPointer\n  ptrs = ptrs.sort((a, b) => {\n    a = view.update([a])\n    b = view.update([b])\n    return fn(a, b)\n  })\n  view.ptrs = ptrs //mutate original\n  return view\n}\n\n/** re-arrange the order of the matches (in place) */\nconst sort = function (input) {\n  const { docs, pointer } = this\n  this.uncache()\n  if (typeof input === 'function') {\n    return customSort(this, input)\n  }\n  input = input || 'alpha'\n  const ptrs = pointer || docs.map((_d, n) => [n])\n  let arr = docs.map((terms, n) => {\n    return {\n      index: n,\n      words: terms.length,\n      normal: terms.map(t => t.machine || t.normal || '').join(' '),\n      pointer: ptrs[n],\n    }\n  })\n  // 'chronological' sorting\n  if (seqNames.has(input)) {\n    input = 'sequential'\n  }\n  // alphabetical sorting\n  if (alphaNames.has(input)) {\n    input = 'alpha'\n  }\n  // sort by frequency\n  if (freqNames.has(input)) {\n    arr = methods.byFreq(arr)\n    return this.update(arr.map(o => o.pointer))\n  }\n  // apply sort method on each phrase\n  if (typeof methods[input] === 'function') {\n    arr = arr.sort(methods[input])\n    return this.update(arr.map(o => o.pointer))\n  }\n  return this\n}\n\n/** reverse the order of the matches, but not the words or index */\nconst reverse = function () {\n  let ptrs = this.pointer || this.docs.map((_d, n) => [n])\n  ptrs = [].concat(ptrs)\n  ptrs = ptrs.reverse()\n  if (this._cache) {\n    this._cache = this._cache.reverse()\n  }\n  return this.update(ptrs)\n}\n\n/** remove any duplicate matches */\nconst unique = function () {\n  const already = new Set()\n  const res = this.filter(m => {\n    const txt = m.text('machine')\n    if (already.has(txt)) {\n      return false\n    }\n    already.add(txt)\n    return true\n  })\n  // this.ptrs = res.ptrs //mutate original?\n  return res//.compute('index')\n}\n\nexport default { unique, reverse, sort }\n"
  },
  {
    "path": "src/1-one/change/api/whitespace.js",
    "content": "const methods = {\n  /** add this punctuation or whitespace before each match: */\n  pre: function (str, concat) {\n    if (str === undefined && this.found) {\n      return this.docs[0][0].pre\n    }\n    this.docs.forEach(terms => {\n      const term = terms[0]\n      if (concat === true) {\n        term.pre += str\n      } else {\n        term.pre = str\n      }\n    })\n    return this\n  },\n\n  /** add this punctuation or whitespace after each match: */\n  post: function (str, concat) {\n    if (str === undefined) {\n      const last = this.docs[this.docs.length - 1]\n      return last[last.length - 1].post\n    }\n    this.docs.forEach(terms => {\n      const term = terms[terms.length - 1]\n      if (concat === true) {\n        term.post += str\n      } else {\n        term.post = str\n      }\n    })\n    return this\n  },\n\n  /** remove whitespace from start/end */\n  trim: function () {\n    if (!this.found) {\n      return this\n    }\n    const docs = this.docs\n    const start = docs[0][0]\n    start.pre = start.pre.trimStart()\n    const last = docs[docs.length - 1]\n    const end = last[last.length - 1]\n    end.post = end.post.trimEnd()\n    return this\n  },\n\n  /** connect words with hyphen, and remove whitespace */\n  hyphenate: function () {\n    this.docs.forEach(terms => {\n      //remove whitespace\n      terms.forEach((t, i) => {\n        if (i !== 0) {\n          t.pre = ''\n        }\n        if (terms[i + 1]) {\n          t.post = '-'\n        }\n      })\n    })\n    return this\n  },\n\n  /** remove hyphens between words, and set whitespace */\n  dehyphenate: function () {\n    const hasHyphen = /[-–—]/\n    this.docs.forEach(terms => {\n      //remove whitespace\n      terms.forEach(t => {\n        if (hasHyphen.test(t.post)) {\n          t.post = ' '\n        }\n      })\n    })\n    return this\n  },\n\n  /** add quotations around these matches */\n  toQuotations: function (start, end) {\n    start = start || `\"`\n    end = end || `\"`\n    this.docs.forEach(terms => {\n      terms[0].pre = start + terms[0].pre\n      const last = terms[terms.length - 1]\n      last.post = end + last.post\n    })\n    return this\n  },\n\n  /** add brackets around these matches */\n  toParentheses: function (start, end) {\n    start = start || `(`\n    end = end || `)`\n    this.docs.forEach(terms => {\n      terms[0].pre = start + terms[0].pre\n      const last = terms[terms.length - 1]\n      last.post = end + last.post\n    })\n    return this\n  },\n}\n\n// aliases\nmethods.deHyphenate = methods.dehyphenate\nmethods.toQuotation = methods.toQuotations\n\nexport default methods\n"
  },
  {
    "path": "src/1-one/change/compute/index.js",
    "content": "import uuid from './uuid.js'\n\nconst compute = {\n  id: function (view) {\n    const docs = view.docs\n    for (let n = 0; n < docs.length; n += 1) {\n      for (let i = 0; i < docs[n].length; i += 1) {\n        const term = docs[n][i]\n        term.id = term.id || uuid(term)\n      }\n    }\n  }\n}\n\nexport default compute"
  },
  {
    "path": "src/1-one/change/compute/uuid.js",
    "content": "/*\nunique & ordered term ids, based on time & term index\n\nBase 36 (numbers+ascii)\n  3 digit 4,600\n  2 digit 1,200\n  1 digit 36\n\n  TTT|NNN|II|R\n\nTTT -> 46 terms since load\nNNN -> 46 thousand sentences (>1 inf-jest)\nII  -> 1,200 words in a sentence (nuts)\nR   -> 1-36 random number \n\nnovels: \n  avg 80,000 words\n    15 words per sentence\n  5,000 sentences\n\nInfinite Jest:\n  36,247 sentences\n  https://en.wikipedia.org/wiki/List_of_longest_novels\n\ncollisions are more-likely after\n    46 seconds have passed,\n  and \n    after 46-thousand sentences\n\n*/\nlet index = 0\n\nconst pad3 = (str) => {\n  str = str.length < 3 ? '0' + str : str\n  return str.length < 3 ? '0' + str : str\n}\n\nconst toId = function (term) {\n  let [n, i] = term.index || [0, 0]\n  index += 1\n\n  //don't overflow index\n  index = index > 46655 ? 0 : index\n  //don't overflow sentences\n  n = n > 46655 ? 0 : n\n  // //don't overflow terms\n  i = i > 1294 ? 0 : i\n\n  // 3 digits for time\n  let id = pad3(index.toString(36))\n  // 3 digit  for sentence index (46k)\n  id += pad3(n.toString(36))\n\n  // 1 digit for term index (36)\n  let tx = i.toString(36)\n  tx = tx.length < 2 ? '0' + tx : tx //pad2\n  id += tx\n\n  // 1 digit random number\n  const r = parseInt(Math.random() * 36, 10)\n  id += (r).toString(36)\n\n  return term.normal + '|' + id.toUpperCase()\n}\n\nexport default toId\n\n// setInterval(() => console.log(toId(4, 12)), 100)\n"
  },
  {
    "path": "src/1-one/change/plugin.js",
    "content": "import api from './api/index.js'\nimport compute from './compute/index.js'\n\nexport default {\n  api,\n  compute,\n}\n"
  },
  {
    "path": "src/1-one/contraction-one/compute/contractions/_splice.js",
    "content": "// put n new words where 1 word was\nconst insertContraction = function (document, point, words) {\n  const [n, w] = point\n  if (!words || words.length === 0) {\n    return\n  }\n  words = words.map((word, i) => {\n    word.implicit = word.text\n    word.machine = word.text\n    word.pre = ''\n    word.post = ''\n    word.text = ''\n    word.normal = ''\n    word.index = [n, w + i]\n    return word\n  })\n  if (words[0]) {\n    // move whitespace over\n    words[0].pre = document[n][w].pre\n    words[words.length - 1].post = document[n][w].post\n    // add the text/normal to the first term\n    words[0].text = document[n][w].text\n    words[0].normal = document[n][w].normal // move tags too?\n  }\n  // do the splice\n  document[n].splice(w, 1, ...words)\n}\nexport default insertContraction\n"
  },
  {
    "path": "src/1-one/contraction-one/compute/contractions/apostrophe-d.js",
    "content": "const hasContraction = /'/\n//look for a past-tense verb\n// const hasPastTense = (terms, i) => {\n//   let after = terms.slice(i + 1, i + 3)\n//   return after.some(t => t.tags.has('PastTense'))\n// }\n// he'd walked -> had\n// how'd -> did\n// he'd go -> would\n\nconst alwaysDid = new Set([\n  'what',\n  'how',\n  'when',\n  'where',\n  'why',\n])\n\n// after-words\nconst useWould = new Set([\n  'be',\n  'go',\n  'start',\n  'think',\n  'need',\n])\n\nconst useHad = new Set([\n  'been',\n  'gone'\n])\n// they'd gone\n// they'd go\n\n\n// he'd been\n//    he had been\n//    he would been\n\nconst _apostropheD = function (terms, i) {\n  const before = terms[i].normal.split(hasContraction)[0]\n\n  // what'd, how'd\n  if (alwaysDid.has(before)) {\n    return [before, 'did']\n  }\n  if (terms[i + 1]) {\n    // they'd gone\n    if (useHad.has(terms[i + 1].normal)) {\n      return [before, 'had']\n    }\n    // they'd go\n    if (useWould.has(terms[i + 1].normal)) {\n      return [before, 'would']\n    }\n  }\n  return null\n  //   if (hasPastTense(terms, i) === true) {\n  //     return [before, 'had']\n  //   }\n  //   // had/would/did\n  //   return [before, 'would']\n}\nexport default _apostropheD\n"
  },
  {
    "path": "src/1-one/contraction-one/compute/contractions/apostrophe-t.js",
    "content": "\n//ain't -> are/is not\nconst apostropheT = function (terms, i) {\n  if (terms[i].normal === \"ain't\" || terms[i].normal === 'aint') {\n    return null //do this in ./two/\n  }\n  const before = terms[i].normal.replace(/n't/, '')\n  return [before, 'not']\n}\n\nexport default apostropheT\n"
  },
  {
    "path": "src/1-one/contraction-one/compute/contractions/french.js",
    "content": "const hasContraction = /'/\nconst isFeminine = /(e|é|aison|sion|tion)$/\nconst isMasculine = /(age|isme|acle|ege|oire)$/\n// l'amour\nconst preL = (terms, i) => {\n  // le/la\n  const after = terms[i].normal.split(hasContraction)[1]\n  // quick french gender disambig (rough)\n  if (after && after.endsWith('e')) {\n    return ['la', after]\n  }\n  return ['le', after]\n}\n\n// d'amerique\nconst preD = (terms, i) => {\n  const after = terms[i].normal.split(hasContraction)[1]\n  // quick guess for noun-agreement (rough)\n  if (after && isFeminine.test(after) && !isMasculine.test(after)) {\n    return ['du', after]\n  } else if (after && after.endsWith('s')) {\n    return ['des', after]\n  }\n  return ['de', after]\n}\n\n// j'aime\nconst preJ = (terms, i) => {\n  const after = terms[i].normal.split(hasContraction)[1]\n  return ['je', after]\n}\n\nexport default {\n  preJ,\n  preL,\n  preD,\n}\n"
  },
  {
    "path": "src/1-one/contraction-one/compute/contractions/index.js",
    "content": "import splice from './_splice.js'\nimport apostropheD from './apostrophe-d.js'\nimport apostropheT from './apostrophe-t.js'\nimport french from './french.js'\nimport numberRange from './number-range.js'\nimport numberUnit from './number-unit.js'\n\nconst byApostrophe = /'/\nconst numDash = /^[0-9][^-–—]*[-–—].*?[0-9]/\n\n// run tagger on our new implicit terms\nconst reTag = function (terms, view, start, len) {\n  const tmp = view.update()\n  tmp.document = [terms]\n  // offer to re-tag neighbours, too\n  let end = start + len\n  if (start > 0) {\n    start -= 1\n  }\n  if (terms[end]) {\n    end += 1\n  }\n  tmp.ptrs = [[0, start, end]]\n}\n\nconst byEnd = {\n  // ain't\n  t: (terms, i) => apostropheT(terms, i),\n  // how'd\n  d: (terms, i) => apostropheD(terms, i),\n}\n\nconst byStart = {\n  // j'aime\n  j: (terms, i) => french.preJ(terms, i),\n  // l'amour\n  l: (terms, i) => french.preL(terms, i),\n  // d'amerique\n  d: (terms, i) => french.preD(terms, i),\n}\n\n// pull-apart known contractions from model\nconst knownOnes = function (list, term, before, after) {\n  for (let i = 0; i < list.length; i += 1) {\n    const o = list[i]\n    // look for word-word match (cannot-> [can, not])\n    if (o.word === term.normal) {\n      return o.out\n    }\n    // look for after-match ('re -> [_, are])\n    else if (after !== null && after === o.after) {\n      return [before].concat(o.out)\n    }\n    // look for before-match (l' -> [le, _])\n    else if (before !== null && before === o.before && after && after.length > 2) {\n      return o.out.concat(after)\n      // return [o.out, after] //typeof o.out === 'string' ? [o.out, after] : o.out(terms, i)\n    }\n  }\n  return null\n}\n\nconst toDocs = function (words, view) {\n  const doc = view.fromText(words.join(' '))\n  doc.compute(['id', 'alias'])\n  return doc.docs[0]\n}\n\n// there's is usually [there, is]\n// but can be 'there has' for 'there has (..) been'\nconst thereHas = function (terms, i) {\n  for (let k = i + 1; k < 5; k += 1) {\n    if (!terms[k]) {\n      break\n    }\n    if (terms[k].normal === 'been') {\n      return ['there', 'has']\n    }\n  }\n  return ['there', 'is']\n}\n\n//really easy ones\nconst contractions = view => {\n  const { world, document } = view\n  const { model, methods } = world\n  const list = model.one.contractions || []\n  // let units = new Set(model.one.units || [])\n  // each sentence\n  document.forEach((terms, n) => {\n    // loop through terms backwards\n    for (let i = terms.length - 1; i >= 0; i -= 1) {\n      let before = null\n      let after = null\n      if (byApostrophe.test(terms[i].normal) === true) {\n        const res = terms[i].normal.split(byApostrophe)\n        before = res[0]\n        after = res[1]\n      }\n      // any known-ones, like 'dunno'?\n      let words = knownOnes(list, terms[i], before, after)\n      // ['foo', 's']\n      if (!words && byEnd.hasOwnProperty(after)) {\n        words = byEnd[after](terms, i, world)\n      }\n      // ['j', 'aime']\n      if (!words && byStart.hasOwnProperty(before)) {\n        words = byStart[before](terms, i)\n      }\n      // 'there is' vs 'there has'\n      if (before === 'there' && after === 's') {\n        words = thereHas(terms, i)\n      }\n      // actually insert the new terms\n      if (words) {\n        words = toDocs(words, view)\n        splice(document, [n, i], words)\n        reTag(document[n], view, i, words.length)\n        continue\n      }\n      // '44-2' has special care\n      if (numDash.test(terms[i].normal)) {\n        words = numberRange(terms, i)\n        if (words) {\n          words = toDocs(words, view)\n          splice(document, [n, i], words)\n          methods.one.setTag(words, 'NumberRange', world) //add custom tag\n          // is it a time-range, like '5-9pm'\n          if (words[2] && words[2].tags.has('Time')) {\n            methods.one.setTag([words[0]], 'Time', world, null, 'time-range')\n          }\n          reTag(document[n], view, i, words.length)\n        }\n        continue\n      }\n      // split-apart '4km'\n      words = numberUnit(terms, i, world)\n      if (words) {\n        words = toDocs(words, view)\n        splice(document, [n, i], words)\n        methods.one.setTag([words[1]], 'Unit', world, null, 'contraction-unit')\n      }\n    }\n  })\n}\nexport default contractions\n"
  },
  {
    "path": "src/1-one/contraction-one/compute/contractions/number-range.js",
    "content": "const isRange = /^([0-9.]{1,4}[a-z]{0,2}) ?[-–—] ?([0-9]{1,4}[a-z]{0,2})$/i\nconst timeRange = /^([0-9]{1,2}(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9]{1,2}(:[0-9][0-9])?(am|pm)?)$/i\nconst phoneNum = /^[0-9]{3}-[0-9]{4}$/\n\nconst numberRange = function (terms, i) {\n  const term = terms[i]\n  let parts = term.text.match(isRange)\n  if (parts !== null) {\n    // 123-1234 is a phone number, not a number-range\n    if (term.tags.has('PhoneNumber') === true || phoneNum.test(term.text)) {\n      return null\n    }\n    return [parts[1], 'to', parts[2]]\n  } else {\n    parts = term.text.match(timeRange)\n    if (parts !== null) {\n      return [parts[1], 'to', parts[4]]\n    }\n  }\n  return null\n}\nexport default numberRange\n"
  },
  {
    "path": "src/1-one/contraction-one/compute/contractions/number-unit.js",
    "content": "const numUnit = /^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/ //(must be lowercase)\n\nconst numberUnit = function (terms, i, world) {\n  const notUnit = world.model.one.numberSuffixes || {}\n  const term = terms[i]\n  const parts = term.text.match(numUnit)\n  if (parts !== null) {\n    // is it a recognized unit, like 'km'?\n    const unit = parts[2].toLowerCase().trim()\n    // don't split '3rd'\n    if (notUnit.hasOwnProperty(unit)) {\n      return null\n    }\n    return [parts[1], unit] //split it\n  }\n  return null\n}\nexport default numberUnit\n"
  },
  {
    "path": "src/1-one/contraction-one/compute/index.js",
    "content": "import contractions from './contractions/index.js'\n\nexport default { contractions }\n"
  },
  {
    "path": "src/1-one/contraction-one/model/contractions.js",
    "content": "export default [\n  // simple mappings\n  { word: '@', out: ['at'] },\n  { word: 'arent', out: ['are', 'not'] },\n  { word: 'alot', out: ['a', 'lot'] },\n  { word: 'brb', out: ['be', 'right', 'back'] },\n  { word: 'cannot', out: ['can', 'not'] },\n  { word: 'dun', out: ['do', 'not'] },\n  { word: \"can't\", out: ['can', 'not'] },\n  { word: \"shan't\", out: ['should', 'not'] },\n  { word: \"won't\", out: ['will', 'not'] },\n  { word: \"that's\", out: ['that', 'is'] },\n  { word: \"what's\", out: ['what', 'is'] },\n  { word: \"let's\", out: ['let', 'us'] },\n  // { word: \"there's\", out: ['there', 'is'] },\n  { word: 'dunno', out: ['do', 'not', 'know'] },\n  { word: 'gonna', out: ['going', 'to'] },\n  { word: 'gotta', out: ['have', 'got', 'to'] }, //hmm\n  { word: 'gimme', out: ['give', 'me'] },\n  { word: 'outta', out: ['out', 'of'] },\n  { word: 'tryna', out: ['trying', 'to'] },\n  { word: 'gtg', out: ['got', 'to', 'go'] },\n  { word: 'im', out: ['i', 'am'] },\n  { word: 'imma', out: ['I', 'will'] },\n  { word: 'imo', out: ['in', 'my', 'opinion'] },\n  { word: 'irl', out: ['in', 'real', 'life'] },\n  { word: 'ive', out: ['i', 'have'] },\n  { word: 'rn', out: ['right', 'now'] },\n  { word: 'tbh', out: ['to', 'be', 'honest'] },\n  { word: 'wanna', out: ['want', 'to'] },\n  { word: `c'mere`, out: ['come', 'here'] },\n  { word: `c'mon`, out: ['come', 'on'] },\n  // shoulda, coulda\n  { word: 'shoulda', out: ['should', 'have'] },\n  { word: 'coulda', out: ['coulda', 'have'] },\n  { word: 'woulda', out: ['woulda', 'have'] },\n  { word: 'musta', out: ['must', 'have'] },\n\n  { word: \"tis\", out: ['it', 'is'] },\n  { word: \"twas\", out: ['it', 'was'] },\n  { word: `y'know`, out: ['you', 'know'] },\n  { word: \"ne'er\", out: ['never'] },\n  { word: \"o'er\", out: ['over'] },\n  // contraction-part mappings\n  { after: 'll', out: ['will'] },\n  { after: 've', out: ['have'] },\n  { after: 're', out: ['are'] },\n  { after: 'm', out: ['am'] },\n  // french contractions\n  { before: 'c', out: ['ce'] },\n  { before: 'm', out: ['me'] },\n  { before: 'n', out: ['ne'] },\n  { before: 'qu', out: ['que'] },\n  { before: 's', out: ['se'] },\n  { before: 't', out: ['tu'] }, // t'aime\n\n  // missing apostrophes\n  { word: 'shouldnt', out: ['should', 'not'] },\n  { word: 'couldnt', out: ['could', 'not'] },\n  { word: 'wouldnt', out: ['would', 'not'] },\n  { word: 'hasnt', out: ['has', 'not'] },\n  { word: 'wasnt', out: ['was', 'not'] },\n  { word: 'isnt', out: ['is', 'not'] },\n  { word: 'cant', out: ['can', 'not'] },\n  { word: 'dont', out: ['do', 'not'] },\n  { word: 'wont', out: ['will', 'not'] },\n  // apostrophe d\n  { word: 'howd', out: ['how', 'did'] },\n  { word: 'whatd', out: ['what', 'did'] },\n  { word: 'whend', out: ['when', 'did'] },\n  { word: 'whered', out: ['where', 'did'] },\n]\n"
  },
  {
    "path": "src/1-one/contraction-one/model/index.js",
    "content": "import contractions from './contractions.js'\nimport numberSuffixes from './number-suffix.js'\n\nexport default {\n  one: {\n    contractions,\n    numberSuffixes\n  }\n}\n"
  },
  {
    "path": "src/1-one/contraction-one/model/number-suffix.js",
    "content": "// number suffixes that are not units\nconst t = true\nexport default {\n  'st': t,\n  'nd': t,\n  'rd': t,\n  'th': t,\n  'am': t,\n  'pm': t,\n  'max': t,\n  '°': t,\n  's': t, // 1990s\n  'e': t, // 18e - french/spanish ordinal\n  'er': t, //french 1er\n  'ère': t, //''\n  'ème': t, //french 2ème\n}"
  },
  {
    "path": "src/1-one/contraction-one/plugin.js",
    "content": "import model from './model/index.js'\nimport compute from './compute/index.js'\n\nconst plugin = {\n  model: model,\n  compute: compute,\n  hooks: ['contractions'],\n}\nexport default plugin\n"
  },
  {
    "path": "src/1-one/freeze/compute.js",
    "content": "const freeze = function (view) {\n  const world = view.world\n  const { model, methods } = view.world\n  const setTag = methods.one.setTag\n  const { frozenLex } = model.one\n  const multi = model.one._multiCache || {}\n\n  view.docs.forEach(terms => {\n    for (let i = 0; i < terms.length; i += 1) {\n      // basic lexicon lookup\n      const t = terms[i]\n      const word = t.machine || t.normal\n\n      // test a multi-word\n      if (multi[word] !== undefined && terms[i + 1]) {\n        const end = i + multi[word] - 1\n        for (let k = end; k > i; k -= 1) {\n          const words = terms.slice(i, k + 1)\n          const str = words.map(term => term.machine || term.normal).join(' ')\n          // lookup frozen lexicon\n          if (frozenLex.hasOwnProperty(str) === true) {\n            setTag(words, frozenLex[str], world, false, '1-frozen-multi-lexicon')\n            words.forEach(term => (term.frozen = true))\n            continue\n          }\n        }\n      }\n      // test single word\n      if (frozenLex[word] !== undefined && frozenLex.hasOwnProperty(word)) {\n        setTag([t], frozenLex[word], world, false, '1-freeze-lexicon')\n        t.frozen = true\n        continue\n      }\n    }\n  })\n}\n\nconst unfreeze = function (view) {\n  view.docs.forEach(ts => {\n    ts.forEach(term => {\n      delete term.frozen\n    })\n  })\n  return view\n}\nexport default { frozen: freeze, freeze, unfreeze }\n"
  },
  {
    "path": "src/1-one/freeze/debug.js",
    "content": "/* eslint-disable no-console */\nconst blue = str => '\\x1b[34m' + str + '\\x1b[0m'\nconst dim = str => '\\x1b[3m\\x1b[2m' + str + '\\x1b[0m'\n\nconst debug = function (view) {\n  view.docs.forEach(terms => {\n    console.log(blue('\\n  ┌─────────'))\n    terms.forEach(t => {\n      let str = `  ${dim('│')}  `\n      const txt = t.implicit || t.text || '-'\n      if (t.frozen === true) {\n        str += `${blue(txt)} ❄️`\n      } else {\n        str += dim(txt)\n      }\n      console.log(str)\n    })\n  })\n}\nexport default debug\n"
  },
  {
    "path": "src/1-one/freeze/plugin.js",
    "content": "import compute from './compute.js'\nimport debug from './debug.js'\n\nexport default {\n  // add .compute('freeze')\n  compute,\n\n  mutate: world => {\n    const methods = world.methods.one\n    // add @isFrozen method\n    methods.termMethods.isFrozen = term => term.frozen === true\n    // adds `.debug('frozen')`\n    methods.debug.freeze = debug\n    methods.debug.frozen = debug\n  },\n\n  api: function (View) {\n    // set all terms to reject any desctructive tags\n    View.prototype.freeze = function () {\n      this.docs.forEach(ts => {\n        ts.forEach(term => {\n          term.frozen = true\n        })\n      })\n      return this\n    }\n    // reset all terms to allow  any desctructive tags\n    View.prototype.unfreeze = function () {\n      this.compute('unfreeze')\n    }\n    // return all frozen terms\n    View.prototype.isFrozen = function () {\n      return this.match('@isFrozen+')\n    }\n  },\n  // run it in init\n  hooks: ['freeze'],\n}\n"
  },
  {
    "path": "src/1-one/lexicon/compute/index.js",
    "content": "import multiWord from './multi-word.js'\nimport singleWord from './single-word.js'\n\n// tag any words in our lexicon - even if it hasn't been filled-up yet\n// rest of pre-tagger is in ./two/preTagger\nconst lexicon = function (view) {\n  const world = view.world\n  // loop through our terms\n  view.docs.forEach(terms => {\n    for (let i = 0; i < terms.length; i += 1) {\n      if (terms[i].tags.size === 0) {\n        let found = null\n        found = found || multiWord(terms, i, world)\n        // lookup known words\n        found = found || singleWord(terms, i, world)\n      }\n    }\n  })\n}\n\nexport default {\n  lexicon,\n}\n"
  },
  {
    "path": "src/1-one/lexicon/compute/multi-word.js",
    "content": "// scan-ahead to match multiple-word terms - 'jack rabbit'\nconst multiWord = function (terms, start_i, world) {\n  const { model, methods } = world\n  const setTag = methods.one.setTag\n  const multi = model.one._multiCache || {}\n  const { lexicon } = model.one || {}\n  const t = terms[start_i]\n  const word = t.machine || t.normal\n\n  // found a word to scan-ahead on\n  if (multi[word] !== undefined && terms[start_i + 1]) {\n    const end = start_i + multi[word] - 1\n    for (let i = end; i > start_i; i -= 1) {\n      const words = terms.slice(start_i, i + 1)\n      if (words.length <= 1) {\n        return false\n      }\n      const str = words.map(term => term.machine || term.normal).join(' ')\n      // lookup regular lexicon\n      if (lexicon.hasOwnProperty(str) === true) {\n        const tag = lexicon[str]\n        setTag(words, tag, world, false, '1-multi-lexicon')\n        // special case for phrasal-verbs - 2nd word is a #Particle\n        if (tag && tag.length === 2 && (tag[0] === 'PhrasalVerb' || tag[1] === 'PhrasalVerb')) {\n          setTag([words[1]], 'Particle', world, false, '1-phrasal-particle')\n        }\n        return true\n      }\n    }\n    return false\n  }\n  return null\n}\nexport default multiWord\n"
  },
  {
    "path": "src/1-one/lexicon/compute/single-word.js",
    "content": "const prefix = /^(under|over|mis|re|un|dis|semi|pre|post)-?/\n// anti|non|extra|inter|intra|over\nconst allowPrefix = new Set(['Verb', 'Infinitive', 'PastTense', 'Gerund', 'PresentTense', 'Adjective', 'Participle'])\n\n// tag any words in our lexicon\nconst checkLexicon = function (terms, i, world) {\n  const { model, methods } = world\n  // const fastTag = methods.one.fastTag\n  const setTag = methods.one.setTag\n  const { lexicon } = model.one\n\n  // basic lexicon lookup\n  const t = terms[i]\n  const word = t.machine || t.normal\n  // normal lexicon lookup\n  if (lexicon[word] !== undefined && lexicon.hasOwnProperty(word)) {\n    setTag([t], lexicon[word], world, false, '1-lexicon')\n    return true\n  }\n  // lookup aliases in the lexicon\n  if (t.alias) {\n    const found = t.alias.find(str => lexicon.hasOwnProperty(str))\n    if (found) {\n      setTag([t], lexicon[found], world, false, '1-lexicon-alias')\n      return true\n    }\n  }\n  // prefixing for verbs/adjectives\n  if (prefix.test(word) === true) {\n    const stem = word.replace(prefix, '')\n    if (lexicon.hasOwnProperty(stem) && stem.length > 3) {\n      // only allow prefixes for verbs/adjectives\n      if (allowPrefix.has(lexicon[stem])) {\n        // console.log('->', word, stem, lexicon[stem])\n        setTag([t], lexicon[stem], world, false, '1-lexicon-prefix')\n        return true\n      }\n    }\n  }\n  return null\n}\nexport default checkLexicon\n"
  },
  {
    "path": "src/1-one/lexicon/lib.js",
    "content": "/** insert new words/phrases into the lexicon */\nconst addWords = function (words, isFrozen = false) {\n  const world = this.world()\n  const { methods, model } = world\n  if (!words) {\n    return\n  }\n  // normalize tag vals\n  Object.keys(words).forEach(k => {\n    if (typeof words[k] === 'string' && words[k].startsWith('#')) {\n      words[k] = words[k].replace(/^#/, '')\n    }\n  })\n  // these words go into a seperate lexicon\n  if (isFrozen === true) {\n    const { lex, _multi } = methods.one.expandLexicon(words, world)\n    Object.assign(model.one._multiCache, _multi)\n    Object.assign(model.one.frozenLex, lex)\n    return\n  }\n  // add some words to our lexicon\n  if (methods.two.expandLexicon) {\n    // do fancy ./two version\n    const { lex, _multi } = methods.two.expandLexicon(words, world)\n    Object.assign(model.one.lexicon, lex)\n    Object.assign(model.one._multiCache, _multi)\n  }\n  // do basic ./one version\n  const { lex, _multi } = methods.one.expandLexicon(words, world)\n  Object.assign(model.one.lexicon, lex)\n  Object.assign(model.one._multiCache, _multi)\n}\n\nexport default { addWords }\n"
  },
  {
    "path": "src/1-one/lexicon/methods/expand.js",
    "content": "// derive clever things from our lexicon key-value pairs\nconst expand = function (words) {\n  // const { methods, model } = world\n  const lex = {}\n  // console.log('start:', Object.keys(lex).length)\n  const _multi = {}\n  // go through each word in this key-value obj:\n  Object.keys(words).forEach(word => {\n    const tag = words[word]\n    // normalize lexicon a little bit\n    word = word.toLowerCase().trim()\n    word = word.replace(/'s\\b/, '')\n    // cache multi-word terms\n    const split = word.split(/ /)\n    if (split.length > 1) {\n      // prefer longer ones\n      if (_multi[split[0]] === undefined || split.length > _multi[split[0]]) {\n        _multi[split[0]] = split.length\n      }\n    }\n    lex[word] = lex[word] || tag\n  })\n  // cleanup\n  delete lex['']\n  delete lex[null]\n  delete lex[' ']\n  return { lex, _multi }\n}\nexport default expand\n"
  },
  {
    "path": "src/1-one/lexicon/methods/index.js",
    "content": "import expandLexicon from './expand.js'\n\nexport default {\n  one: {\n    expandLexicon,\n  }\n}"
  },
  {
    "path": "src/1-one/lexicon/plugin.js",
    "content": "import compute from './compute/index.js'\nimport methods from './methods/index.js'\nimport lib from './lib.js'\n\nconst model = {\n  one: {\n    lexicon: {}, //setup blank lexicon\n    _multiCache: {},\n    frozenLex: {}, //2nd lexicon\n  },\n}\n\nexport default {\n  model,\n  methods,\n  compute,\n  lib,\n  hooks: ['lexicon'],\n}\n"
  },
  {
    "path": "src/1-one/lookup/api/buildTrie/compress.js",
    "content": "// chop-off tail of redundant vals at end of array\nconst truncate = (list, val) => {\n  for (let i = list.length - 1; i >= 0; i -= 1) {\n    if (list[i] !== val) {\n      list = list.slice(0, i + 1)\n      return list\n    }\n  }\n  return list\n}\n\n// prune trie a bit\nconst compress = function (trie) {\n  trie.goNext = trie.goNext.map(o => {\n    if (Object.keys(o).length === 0) {\n      return undefined\n    }\n    return o\n  })\n  // chop-off tail of undefined vals in goNext array\n  trie.goNext = truncate(trie.goNext, undefined)\n  // chop-off tail of zeros in failTo array\n  trie.failTo = truncate(trie.failTo, 0)\n  // chop-off tail of nulls in endAs array\n  trie.endAs = truncate(trie.endAs, null)\n  return trie\n}\nexport default compress"
  },
  {
    "path": "src/1-one/lookup/api/buildTrie/index.js",
    "content": "// edited by Spencer Kelly\n// credit to https://github.com/BrunoRB/ahocorasick by Bruno Roberto Búrigo.\n\nconst tokenize = function (phrase, world) {\n  const { methods, model } = world\n  const terms = methods.one.tokenize.splitTerms(phrase, model).map(t => methods.one.tokenize.splitWhitespace(t, model))\n  return terms.map(term => term.text.toLowerCase())\n}\n\n// turn an array or object into a compressed aho-corasick structure\nconst buildTrie = function (phrases, world) {\n\n  // const tokenize=methods.one.\n  const goNext = [{}]\n  const endAs = [null]\n  const failTo = [0]\n\n  const xs = []\n  let n = 0\n  phrases.forEach(function (phrase) {\n    let curr = 0\n    // let wordsB = phrase.split(/ /g).filter(w => w)\n    const words = tokenize(phrase, world)\n    for (let i = 0; i < words.length; i++) {\n      const word = words[i]\n      if (goNext[curr] && goNext[curr].hasOwnProperty(word)) {\n        curr = goNext[curr][word]\n      } else {\n        n++\n        goNext[curr][word] = n\n        goNext[n] = {}\n        curr = n\n        endAs[n] = null\n      }\n    }\n    endAs[curr] = [words.length]\n  })\n  // f(s) = 0 for all states of depth 1 (the ones from which the 0 state can transition to)\n  for (const word in goNext[0]) {\n    n = goNext[0][word]\n    failTo[n] = 0\n    xs.push(n)\n  }\n\n  while (xs.length) {\n    const r = xs.shift()\n    // for each symbol a such that g(r, a) = s\n    const keys = Object.keys(goNext[r])\n    for (let i = 0; i < keys.length; i += 1) {\n      const word = keys[i]\n      const s = goNext[r][word]\n      xs.push(s)\n      // set state = f(r)\n      n = failTo[r]\n      while (n > 0 && !goNext[n].hasOwnProperty(word)) {\n        n = failTo[n]\n      }\n      if (goNext.hasOwnProperty(n)) {\n        const fs = goNext[n][word]\n        failTo[s] = fs\n        if (endAs[fs]) {\n          endAs[s] = endAs[s] || []\n          endAs[s] = endAs[s].concat(endAs[fs])\n        }\n      } else {\n        failTo[s] = 0\n      }\n    }\n  }\n  return { goNext, endAs, failTo }\n}\nexport default buildTrie\n\n// console.log(buildTrie(['smart and cool', 'smart and nice']))\n"
  },
  {
    "path": "src/1-one/lookup/api/index.js",
    "content": "import build from './buildTrie/index.js'\nimport scan from './scan.js'\n\nconst isObject = val => {\n  return Object.prototype.toString.call(val) === '[object Object]'\n}\n\nexport default function (View) {\n\n  /** find all matches in this document */\n  View.prototype.lookup = function (input, opts = {}) {\n    if (!input) {\n      return this.none()\n    }\n    if (typeof input === 'string') {\n      input = [input]\n    }\n    const trie = isObject(input) ? input : build(input, this.world)\n    let res = scan(this, trie, opts)\n    res = res.settle()\n    return res\n  }\n}"
  },
  {
    "path": "src/1-one/lookup/api/scan.js",
    "content": "// follow our trie structure\nconst scanWords = function (terms, trie, opts) {\n  let n = 0\n  const results = []\n  for (let i = 0; i < terms.length; i++) {\n    const word = terms[i][opts.form] || terms[i].normal\n    // main match-logic loop:\n    while (n > 0 && (trie.goNext[n] === undefined || !trie.goNext[n].hasOwnProperty(word))) {\n      n = trie.failTo[n] || 0 // (usually back to 0)\n    }\n    // did we fail?\n    if (!trie.goNext[n].hasOwnProperty(word)) {\n      continue\n    }\n    n = trie.goNext[n][word]\n    if (trie.endAs[n]) {\n      const arr = trie.endAs[n]\n      for (let o = 0; o < arr.length; o++) {\n        const len = arr[o]\n        const term = terms[i - len + 1]\n        const [no, start] = term.index\n        results.push([no, start, start + len, term.id])\n      }\n    }\n  }\n  return results\n}\n\nconst cacheMiss = function (words, cache) {\n  for (let i = 0; i < words.length; i += 1) {\n    if (cache.has(words[i]) === true) {\n      return false\n    }\n  }\n  return true\n}\n\nconst scan = function (view, trie, opts) {\n  let results = []\n  opts.form = opts.form || 'normal'\n  const docs = view.docs\n  if (!trie.goNext || !trie.goNext[0]) {\n    console.error('Compromise invalid lookup trie')//eslint-disable-line\n    return view.none()\n  }\n  const firstWords = Object.keys(trie.goNext[0])\n  // do each phrase\n  for (let i = 0; i < docs.length; i++) {\n    // can we skip the phrase, all together?\n    if (view._cache && view._cache[i] && cacheMiss(firstWords, view._cache[i]) === true) {\n      continue\n    }\n    const terms = docs[i]\n    const found = scanWords(terms, trie, opts)\n    if (found.length > 0) {\n      results = results.concat(found)\n    }\n  }\n  return view.update(results)\n}\nexport default scan\n"
  },
  {
    "path": "src/1-one/lookup/plugin.js",
    "content": "import api from './api/index.js'\nimport compress from './api/buildTrie/compress.js'\nimport build from './api/buildTrie/index.js'\n\n/** pre-compile a list of matches to lookup */\nconst lib = {\n  /** turn an array or object into a compressed trie*/\n  buildTrie: function (input) {\n    const trie = build(input, this.world())\n    return compress(trie)\n  }\n}\n// add alias\nlib.compile = lib.buildTrie\n\nexport default {\n  api,\n  lib\n}\n"
  },
  {
    "path": "src/1-one/match/api/_lib.js",
    "content": "export const relPointer = function (ptrs, parent) {\n  if (!parent) {\n    return ptrs\n  }\n  ptrs.forEach(ptr => {\n    const n = ptr[0]\n    if (parent[n]) {\n      ptr[0] = parent[n][0] //n\n      ptr[1] += parent[n][1] //start\n      ptr[2] += parent[n][1] //end\n    }\n  })\n  return ptrs\n}\n\n// make match-result relative to whole document\nexport const fixPointers = function (res, parent) {\n  let { ptrs } = res\n  const { byGroup } = res\n  ptrs = relPointer(ptrs, parent)\n  Object.keys(byGroup).forEach(k => {\n    byGroup[k] = relPointer(byGroup[k], parent)\n  })\n  return { ptrs, byGroup }\n}\n\n// turn any matchable input intp a list of matches\nexport const parseRegs = function (regs, opts, world) {\n  const one = world.methods.one\n  if (typeof regs === 'number') {\n    regs = String(regs)\n  }\n  // support param as string\n  if (typeof regs === 'string') {\n    regs = one.killUnicode(regs, world)\n    regs = one.parseMatch(regs, opts, world)\n  }\n  return regs\n}\n\nconst isObject = val => {\n  return Object.prototype.toString.call(val) === '[object Object]'\n}\n\n// did they pass-in a compromise object?\nexport const isView = val => val && isObject(val) && val.isView === true\n\nexport const isNet = val => val && isObject(val) && val.isNet === true\n"
  },
  {
    "path": "src/1-one/match/api/index.js",
    "content": "import match from './match.js'\nimport lookaround from './lookaround.js'\nimport split from './split.js'\nimport join from './join.js'\n\nconst methods = Object.assign({}, match, lookaround, split, join)\n// aliases\nmethods.lookBehind = methods.before\nmethods.lookBefore = methods.before\n\nmethods.lookAhead = methods.after\nmethods.lookAfter = methods.after\n\nmethods.notIf = methods.ifNo\nconst matchAPI = function (View) {\n  Object.assign(View.prototype, methods)\n}\nexport default matchAPI\n"
  },
  {
    "path": "src/1-one/match/api/join.js",
    "content": "// check if two pointers are perfectly consecutive\nconst isNeighbour = function (ptrL, ptrR) {\n  // validate\n  if (!ptrL || !ptrR) {\n    return false\n  }\n  // same sentence\n  if (ptrL[0] !== ptrR[0]) {\n    return false\n  }\n  // ensure R starts where L ends\n  return ptrL[2] === ptrR[1]\n}\n\n// join two neighbouring words, if they both match\nconst mergeIf = function (doc, lMatch, rMatch) {\n  const world = doc.world\n  const parseMatch = world.methods.one.parseMatch\n  lMatch = lMatch || '.$' //defaults\n  rMatch = rMatch || '^.'\n  const leftMatch = parseMatch(lMatch, {}, world)\n  const rightMatch = parseMatch(rMatch, {}, world)\n  // ensure end-requirement to left-match, start-requiremnts to right match\n  leftMatch[leftMatch.length - 1].end = true\n  rightMatch[0].start = true\n  // let's get going.\n  const ptrs = doc.fullPointer\n  const res = [ptrs[0]]\n  for (let i = 1; i < ptrs.length; i += 1) {\n    const ptrL = res[res.length - 1]\n    const ptrR = ptrs[i]\n    const left = doc.update([ptrL])\n    const right = doc.update([ptrR])\n    // should we marge left+right?\n    if (isNeighbour(ptrL, ptrR) && left.has(leftMatch) && right.has(rightMatch)) {\n      // merge right ptr into existing result\n      res[res.length - 1] = [ptrL[0], ptrL[1], ptrR[2], ptrL[3], ptrR[4]]\n    } else {\n      res.push(ptrR)\n    }\n  }\n  // return new pointers\n  return doc.update(res)\n}\n\nconst methods = {\n  //  merge only if conditions are met\n  joinIf: function (lMatch, rMatch) {\n    return mergeIf(this, lMatch, rMatch)\n  },\n  // merge all neighbouring matches\n  join: function () {\n    return mergeIf(this)\n  },\n}\nexport default methods\n"
  },
  {
    "path": "src/1-one/match/api/lookaround.js",
    "content": "const before = function (regs, group, opts) {\n  const { indexN } = this.methods.one.pointer\n  const pre = []\n  const byN = indexN(this.fullPointer)\n  Object.keys(byN).forEach(k => {\n    // check only the earliest match in the sentence\n    const first = byN[k].sort((a, b) => (a[1] > b[1] ? 1 : -1))[0]\n    if (first[1] > 0) {\n      pre.push([first[0], 0, first[1]])\n    }\n  })\n  const preWords = this.toView(pre)\n  if (!regs) {\n    return preWords\n  }\n  return preWords.match(regs, group, opts)\n}\n\nconst after = function (regs, group, opts) {\n  const { indexN } = this.methods.one.pointer\n  const post = []\n  const byN = indexN(this.fullPointer)\n  const document = this.document\n  Object.keys(byN).forEach(k => {\n    // check only the latest match in the sentence\n    const last = byN[k].sort((a, b) => (a[1] > b[1] ? -1 : 1))[0]\n    const [n, , end] = last\n    if (end < document[n].length) {\n      post.push([n, end, document[n].length])\n    }\n  })\n  const postWords = this.toView(post)\n  if (!regs) {\n    return postWords\n  }\n  return postWords.match(regs, group, opts)\n}\n\nconst growLeft = function (regs, group, opts) {\n  if (typeof regs === 'string') {\n    regs = this.world.methods.one.parseMatch(regs, opts, this.world)\n  }\n  regs[regs.length - 1].end = true // ensure matches are beside us ←\n  const ptrs = this.fullPointer\n  this.forEach((m, n) => {\n    const more = m.before(regs, group)\n    if (more.found) {\n      const terms = more.terms()\n      ptrs[n][1] -= terms.length\n      ptrs[n][3] = terms.docs[0][0].id\n    }\n  })\n  return this.update(ptrs)\n}\n\nconst growRight = function (regs, group, opts) {\n  if (typeof regs === 'string') {\n    regs = this.world.methods.one.parseMatch(regs, opts, this.world)\n  }\n  regs[0].start = true // ensure matches are beside us →\n  const ptrs = this.fullPointer\n  this.forEach((m, n) => {\n    const more = m.after(regs, group)\n    if (more.found) {\n      const terms = more.terms()\n      ptrs[n][2] += terms.length\n      ptrs[n][4] = null //remove end-id\n    }\n  })\n  return this.update(ptrs)\n}\n\nconst grow = function (regs, group, opts) {\n  return this.growRight(regs, group, opts).growLeft(regs, group, opts)\n}\n\nexport default { before, after, growLeft, growRight, grow }\n"
  },
  {
    "path": "src/1-one/match/api/match.js",
    "content": "import { fixPointers, isView, isNet, parseRegs } from './_lib.js'\n\nconst match = function (regs, group, opts) {\n  const one = this.methods.one\n  // support param as view object\n  if (isView(regs)) {\n    return this.intersection(regs)\n  }\n  // support a compiled set of matches\n  if (isNet(regs)) {\n    return this.sweep(regs, { tagger: false }).view.settle()\n  }\n  regs = parseRegs(regs, opts, this.world)\n  const todo = { regs, group }\n  const res = one.match(this.docs, todo, this._cache)\n  const { ptrs, byGroup } = fixPointers(res, this.fullPointer)\n  const view = this.toView(ptrs)\n  view._groups = byGroup\n  return view\n}\n\nconst matchOne = function (regs, group, opts) {\n  const one = this.methods.one\n  // support at view as a param\n  if (isView(regs)) {\n    return this.intersection(regs).eq(0)\n  }\n  // support a compiled set of matches\n  if (isNet(regs)) {\n    return this.sweep(regs, { tagger: false, matchOne: true }).view\n  }\n  regs = parseRegs(regs, opts, this.world)\n  const todo = { regs, group, justOne: true }\n  const res = one.match(this.docs, todo, this._cache)\n  const { ptrs, byGroup } = fixPointers(res, this.fullPointer)\n  const view = this.toView(ptrs)\n  view._groups = byGroup\n  return view\n}\n\nconst has = function (regs, group, opts) {\n  const one = this.methods.one\n  // support view as input\n  if (isView(regs)) {\n    const ptrs = this.intersection(regs).fullPointer\n    return ptrs.length > 0\n  }\n  // support a compiled set of matches\n  if (isNet(regs)) {\n    return this.sweep(regs, { tagger: false }).view.found\n  }\n  regs = parseRegs(regs, opts, this.world)\n  const todo = { regs, group, justOne: true }\n  const ptrs = one.match(this.docs, todo, this._cache).ptrs\n  return ptrs.length > 0\n}\n\n// 'if'\nconst ifFn = function (regs, group, opts) {\n  const one = this.methods.one\n  // support view as input\n  if (isView(regs)) {\n    return this.filter(m => m.intersection(regs).found)\n  }\n  // support a compiled set of matches\n  if (isNet(regs)) {\n    const m = this.sweep(regs, { tagger: false }).view.settle()\n    return this.if(m) //recurse with result\n  }\n  regs = parseRegs(regs, opts, this.world)\n  const todo = { regs, group, justOne: true }\n  let ptrs = this.fullPointer\n  const cache = this._cache || []\n  ptrs = ptrs.filter((ptr, i) => {\n    const m = this.update([ptr])\n    const res = one.match(m.docs, todo, cache[i]).ptrs\n    return res.length > 0\n  })\n  const view = this.update(ptrs)\n  // try and reconstruct the cache\n  if (this._cache) {\n    view._cache = ptrs.map(ptr => cache[ptr[0]])\n  }\n  return view\n}\n\nconst ifNo = function (regs, group, opts) {\n  const { methods } = this\n  const one = methods.one\n  // support a view object as input\n  if (isView(regs)) {\n    return this.filter(m => !m.intersection(regs).found)\n  }\n  // support a compiled set of matches\n  if (isNet(regs)) {\n    const m = this.sweep(regs, { tagger: false }).view.settle()\n    return this.ifNo(m)\n  }\n  // otherwise parse the match string\n  regs = parseRegs(regs, opts, this.world)\n  const cache = this._cache || []\n  const view = this.filter((m, i) => {\n    const todo = { regs, group, justOne: true }\n    const ptrs = one.match(m.docs, todo, cache[i]).ptrs\n    return ptrs.length === 0\n  })\n  // try to reconstruct the cache\n  if (this._cache) {\n    view._cache = view.ptrs.map(ptr => cache[ptr[0]])\n  }\n  return view\n}\n\nexport default { matchOne, match, has, if: ifFn, ifNo }\n"
  },
  {
    "path": "src/1-one/match/api/split.js",
    "content": "const combine = function (left, right) {\n  return [left[0], left[1], right[2]]\n}\n\nconst isArray = function (arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\nconst getDoc = (reg, view, group) => {\n  if (typeof reg === 'string' || isArray(reg)) {\n    return view.match(reg, group)\n  }\n  if (!reg) {\n    return view.none()\n  }\n  return reg\n}\n\nconst addIds = function (ptr, view) {\n  const [n, start, end] = ptr\n  if (view.document[n] && view.document[n][start]) {\n    ptr[3] = ptr[3] || view.document[n][start].id\n    if (view.document[n][end - 1]) {\n      ptr[4] = ptr[4] || view.document[n][end - 1].id\n    }\n  }\n  return ptr\n}\n\nconst methods = {}\n// [before], [match], [after]\nmethods.splitOn = function (m, group) {\n  const { splitAll } = this.methods.one.pointer\n  const splits = getDoc(m, this, group).fullPointer\n  const all = splitAll(this.fullPointer, splits)\n  let res = []\n  all.forEach(o => {\n    res.push(o.passthrough)\n    res.push(o.before)\n    res.push(o.match)\n    res.push(o.after)\n  })\n  res = res.filter(p => p)\n  res = res.map(p => addIds(p, this))\n  return this.update(res)\n}\n\n// [before], [match after]\nmethods.splitBefore = function (m, group) {\n  const { splitAll } = this.methods.one.pointer\n  const splits = getDoc(m, this, group).fullPointer\n  const all = splitAll(this.fullPointer, splits)\n  // repair matches to favor [match, after]\n  // - instead of [before, match]\n  for (let i = 0; i < all.length; i += 1) {\n    // move a before to a preceding after\n    if (!all[i].after && all[i + 1] && all[i + 1].before) {\n      // ensure it's from the same original sentence\n      if (all[i].match && all[i].match[0] === all[i + 1].before[0]) {\n        all[i].after = all[i + 1].before\n        delete all[i + 1].before\n      }\n    }\n  }\n\n  let res = []\n  all.forEach(o => {\n    res.push(o.passthrough)\n    res.push(o.before)\n    // a, [x, b]\n    if (o.match && o.after) {\n      res.push(combine(o.match, o.after))\n    } else {\n      // a, [x], b\n      res.push(o.match)\n    }\n  })\n  res = res.filter(p => p)\n  res = res.map(p => addIds(p, this))\n  return this.update(res)\n}\n\n// [before match], [after]\nmethods.splitAfter = function (m, group) {\n  const { splitAll } = this.methods.one.pointer\n  const splits = getDoc(m, this, group).fullPointer\n  const all = splitAll(this.fullPointer, splits)\n  let res = []\n  all.forEach(o => {\n    res.push(o.passthrough)\n    if (o.before && o.match) {\n      res.push(combine(o.before, o.match))\n    } else {\n      res.push(o.before)\n      res.push(o.match)\n    }\n    res.push(o.after)\n  })\n  res = res.filter(p => p)\n  res = res.map(p => addIds(p, this))\n  return this.update(res)\n}\nmethods.split = methods.splitAfter\n\nexport default methods\n"
  },
  {
    "path": "src/1-one/match/lib.js",
    "content": "\nexport default {\n  /** pre-parse any match statements */\n  parseMatch: function (str, opts) {\n    const world = this.world()\n    const killUnicode = world.methods.one.killUnicode\n    if (killUnicode) {\n      str = killUnicode(str, world)\n    }\n    return world.methods.one.parseMatch(str, opts, world)\n  }\n}"
  },
  {
    "path": "src/1-one/match/methods/index.js",
    "content": "import parseMatch from './parseMatch/index.js'\nimport match from './match/index.js'\nimport termMethods from './termMethods.js'\n\nconst methods = {\n  one: {\n    termMethods,\n    parseMatch,\n    match,\n  },\n}\n\nexport default methods\n"
  },
  {
    "path": "src/1-one/match/methods/match/01-failFast.js",
    "content": "const anyIntersection = function (setA, setB) {\n  for (const elem of setB) {\n    if (setA.has(elem)) {\n      return true\n    }\n  }\n  return false\n}\n// check words/tags against our cache\nconst failFast = function (regs, cache) {\n  for (let i = 0; i < regs.length; i += 1) {\n    const reg = regs[i]\n    if (reg.optional === true || reg.negative === true || reg.fuzzy === true) {\n      continue\n    }\n    // is the word missing from the cache?\n    if (reg.word !== undefined && cache.has(reg.word) === false) {\n      return true\n    }\n    // is the tag missing?\n    if (reg.tag !== undefined && cache.has('#' + reg.tag) === false) {\n      return true\n    }\n    // perform a speedup for fast-or\n    if (reg.fastOr && anyIntersection(reg.fastOr, cache) === false) {\n      return false\n    }\n  }\n  return false\n}\nexport default failFast\n"
  },
  {
    "path": "src/1-one/match/methods/match/02-from-here.js",
    "content": "import doAstrix from './steps/astrix.js'\nimport doOrBlock from './steps/or-block.js'\nimport doAndBlock from './steps/and-block.js'\nimport doNegative from './steps/negative.js'\nimport simpleMatch from './steps/simple-match.js'\nimport { isEndGreedy } from './steps/logic/greedy.js'\nimport matchTerm from './term/doesMatch.js'\n// i formally apologize for how complicated this is.\n\n/** \n * try a sequence of match tokens ('regs') \n * on a sequence of terms, \n * starting at this certain term.\n */\nconst tryHere = function (terms, regs, start_i, phrase_length) {\n  // console.log(`\\n\\n:start: '${terms[0].text}':`)\n  if (terms.length === 0 || regs.length === 0) {\n    return null\n  }\n  // all the variables that matter\n  const state = {\n    t: 0,\n    terms: terms,\n    r: 0,\n    regs: regs,\n    groups: {},\n    start_i: start_i,\n    phrase_length: phrase_length,\n    inGroup: null,\n  }\n\n  // we must satisfy every token in 'regs'\n  // if we get to the end, we have a match.\n  for (; state.r < regs.length; state.r += 1) {\n    const reg = regs[state.r]\n    // Check if this reg has a named capture group\n    state.hasGroup = Boolean(reg.group)\n    // Reuse previous capture group if same\n    if (state.hasGroup === true) {\n      state.inGroup = reg.group\n    } else {\n      state.inGroup = null\n    }\n    //have we run-out of terms?\n    if (!state.terms[state.t]) {\n      //are all remaining regs optional or negative?\n      const alive = regs.slice(state.r).some(remain => !remain.optional)\n      if (alive === false) {\n        break //done!\n      }\n      return null // die\n    }\n    // support 'unspecific greedy' .* properly\n    if (reg.anything === true && reg.greedy === true) {\n      const alive = doAstrix(state)\n      if (!alive) {\n        return null\n      }\n      continue\n    }\n    // slow-OR - multi-word OR (a|b|foo bar)\n    if (reg.choices !== undefined && reg.operator === 'or') {\n      const alive = doOrBlock(state)\n      if (!alive) {\n        return null\n      }\n      continue\n    }\n    // slow-AND - multi-word AND (#Noun && foo) blocks\n    if (reg.choices !== undefined && reg.operator === 'and') {\n      const alive = doAndBlock(state)\n      if (!alive) {\n        return null\n      }\n      continue\n    }\n    // support '.' as any-single\n    if (reg.anything === true) {\n      // '!.' negative anything should insta-fail\n      if (reg.negative && reg.anything) {\n        return null\n      }\n      const alive = simpleMatch(state)\n      if (!alive) {\n        return null\n      }\n      continue\n    }\n    // support 'foo*$' until the end\n    if (isEndGreedy(reg, state) === true) {\n      const alive = simpleMatch(state)\n      if (!alive) {\n        return null\n      }\n      continue\n    }\n    // ok, it doesn't match - but maybe it wasn't *supposed* to?\n    if (reg.negative) {\n      // we want *anything* but this term\n      const alive = doNegative(state)\n      if (!alive) {\n        return null\n      }\n      continue\n    }\n    // ok, finally test the term-reg\n    const hasMatch = matchTerm(state.terms[state.t], reg, state.start_i + state.t, state.phrase_length)\n    if (hasMatch === true) {\n      const alive = simpleMatch(state)\n      if (!alive) {\n        return null\n      }\n      continue\n    }\n    //ok who cares, keep going\n    if (reg.optional === true) {\n      continue\n    }\n\n    // finally, we die\n    return null\n  }\n  //return our results, as pointers\n  const pntr = [null, start_i, state.t + start_i]\n  if (pntr[1] === pntr[2]) {\n    return null //found 0 terms\n  }\n  const groups = {}\n  Object.keys(state.groups).forEach(k => {\n    const o = state.groups[k]\n    const start = start_i + o.start\n    groups[k] = [null, start, start + o.length]\n  })\n  return { pointer: pntr, groups: groups }\n}\nexport default tryHere\n"
  },
  {
    "path": "src/1-one/match/methods/match/03-getGroup.js",
    "content": "// support returning a subset of a match\n// like 'foo [bar] baz' -> bar\nconst getGroup = function (res, group) {\n  const ptrs = []\n  const byGroup = {}\n  if (res.length === 0) {\n    return { ptrs, byGroup }\n  }\n  if (typeof group === 'number') {\n    group = String(group)\n  }\n  if (group) {\n    res.forEach(r => {\n      if (r.groups[group]) {\n        ptrs.push(r.groups[group])\n      }\n    })\n  } else {\n    res.forEach(r => {\n      ptrs.push(r.pointer)\n      Object.keys(r.groups).forEach(k => {\n        byGroup[k] = byGroup[k] || []\n        byGroup[k].push(r.groups[k])\n      })\n    })\n  }\n  return { ptrs, byGroup }\n}\nexport default getGroup\n"
  },
  {
    "path": "src/1-one/match/methods/match/03-notIf.js",
    "content": "import fromHere from './02-from-here.js'\n\nconst notIf = function (results, not, docs) {\n  results = results.filter(res => {\n    const [n, start, end] = res.pointer\n    const terms = docs[n].slice(start, end)\n    for (let i = 0; i < terms.length; i += 1) {\n      const slice = terms.slice(i)\n      const found = fromHere(slice, not, i, terms.length)\n      if (found !== null) {\n        return false\n      }\n    }\n    return true\n  })\n  return results\n}\n\nexport default notIf"
  },
  {
    "path": "src/1-one/match/methods/match/_lib.js",
    "content": "\n\nexport const getGroup = function (state, term_index) {\n  if (state.groups[state.inGroup]) {\n    return state.groups[state.inGroup]\n  }\n  state.groups[state.inGroup] = {\n    start: term_index,\n    length: 0,\n  }\n  return state.groups[state.inGroup]\n}\n"
  },
  {
    "path": "src/1-one/match/methods/match/index.js",
    "content": "import failFast from './01-failFast.js'\nimport fromHere from './02-from-here.js'\nimport getGroup from './03-getGroup.js'\nimport notIf from './03-notIf.js'\n\n\n// make proper pointers\nconst addSentence = function (res, n) {\n  res.pointer[0] = n\n  Object.keys(res.groups).forEach(k => {\n    res.groups[k][0] = n\n  })\n  return res\n}\n\nconst handleStart = function (terms, regs, n) {\n  let res = fromHere(terms, regs, 0, terms.length)\n  if (res) {\n    res = addSentence(res, n)\n    return res //getGroup([res], group)\n  }\n  return null\n}\n\n// ok, here we go.\nconst runMatch = function (docs, todo, cache) {\n  cache = cache || []\n  const { regs, group, justOne } = todo\n  let results = []\n  if (!regs || regs.length === 0) {\n    return { ptrs: [], byGroup: {} }\n  }\n\n  const minLength = regs.filter(r => r.optional !== true && r.negative !== true).length\n  docs: for (let n = 0; n < docs.length; n += 1) {\n    const terms = docs[n]\n    // let index = terms[0].index || []\n    // can we skip this sentence?\n    if (cache[n] && failFast(regs, cache[n])) {\n      continue\n    }\n    // ^start regs only run once, per phrase\n    if (regs[0].start === true) {\n      const foundStart = handleStart(terms, regs, n, group)\n      if (foundStart) {\n        results.push(foundStart)\n      }\n      continue\n    }\n    //ok, try starting the match now from every term\n    for (let i = 0; i < terms.length; i += 1) {\n      const slice = terms.slice(i)\n      // ensure it's long-enough\n      if (slice.length < minLength) {\n        break\n      }\n      let res = fromHere(slice, regs, i, terms.length)\n      // did we find a result?\n      if (res) {\n        // res = addSentence(res, index[0])\n        res = addSentence(res, n)\n        results.push(res)\n        // should we stop here?\n        if (justOne === true) {\n          break docs\n        }\n        // skip ahead, over these results\n        const end = res.pointer[2]\n        if (Math.abs(end - 1) > i) {\n          i = Math.abs(end - 1)\n        }\n      }\n    }\n  }\n  // ensure any end-results ($) match until the last term\n  if (regs[regs.length - 1].end === true) {\n    results = results.filter(res => {\n      const n = res.pointer[0]\n      return docs[n].length === res.pointer[2]\n    })\n  }\n  if (todo.notIf) {\n    results = notIf(results, todo.notIf, docs)\n  }\n  // grab the requested group\n  results = getGroup(results, group)\n  // add ids to pointers\n  results.ptrs.forEach(ptr => {\n    const [n, start, end] = ptr\n    ptr[3] = docs[n][start].id//start-id\n    ptr[4] = docs[n][end - 1].id//end-id\n  })\n  return results\n}\n\nexport default runMatch\n"
  },
  {
    "path": "src/1-one/match/methods/match/steps/and-block.js",
    "content": "import { doAndBlock } from './logic/and-or.js'\nimport { getGroup } from '../_lib.js'\n\n// '(foo && #Noun)' - require all matches on the term\nconst andBlock = function (state) {\n  const { regs } = state\n  const reg = regs[state.r]\n\n  const skipNum = doAndBlock(state)\n  if (skipNum) {\n    // handle 'not' logic\n    if (reg.negative === true) {\n      return null // die\n    }\n    if (state.hasGroup === true) {\n      const g = getGroup(state, state.t)\n      g.length += skipNum\n    }\n    // ensure we're at the end\n    if (reg.end === true) {\n      const end = state.phrase_length - 1\n      if (state.t + state.start_i !== end) {\n        return null\n      }\n    }\n    state.t += skipNum\n    // log(`✓ |found-and|`)\n    return true\n  } else if (!reg.optional) {\n    return null //die\n  }\n  return true\n}\nexport default andBlock"
  },
  {
    "path": "src/1-one/match/methods/match/steps/astrix.js",
    "content": "import { greedyTo } from './logic/greedy.js'\nimport { getGroup } from '../_lib.js'\n\n//support 'unspecific greedy' .* properly\n// its logic is 'greedy until', where it's looking for the next token\n// '.+ foo' means we check for 'foo', indefinetly\nconst doAstrix = function (state) {\n  const { regs } = state\n  const reg = regs[state.r]\n\n  const skipto = greedyTo(state, regs[state.r + 1])\n  //maybe we couldn't find it\n  if (skipto === null || skipto === 0) {\n    return null\n  }\n  // ensure it's long enough\n  if (reg.min !== undefined && skipto - state.t < reg.min) {\n    return null\n  }\n  // reduce it back, if it's too long\n  if (reg.max !== undefined && skipto - state.t > reg.max) {\n    state.t = state.t + reg.max\n    return true\n  }\n  // set the group result\n  if (state.hasGroup === true) {\n    const g = getGroup(state, state.t)\n    g.length = skipto - state.t\n  }\n  state.t = skipto\n  // log(`✓ |greedy|`)\n  return true\n}\nexport default doAstrix"
  },
  {
    "path": "src/1-one/match/methods/match/steps/contraction-skip.js",
    "content": "// for: ['we', 'have']\n// a match for \"we have\" should work as normal\n// but matching \"we've\" should skip over implict terms\nconst contractionSkip = function (state) {\n  const term = state.terms[state.t]\n  const reg = state.regs[state.r]\n  // did we match the first part of a contraction?\n  if (term.implicit && state.terms[state.t + 1]) {\n    const nextTerm = state.terms[state.t + 1]\n    // ensure next word is implicit\n    if (!nextTerm.implicit) {\n      return\n    }\n    // we matched \"we've\" - skip-over [we, have]\n    if (reg.word === term.normal) {\n      state.t += 1\n    }\n    // also skip for @hasContraction\n    if (reg.method === 'hasContraction') {\n      state.t += 1\n    }\n  }\n}\nexport default contractionSkip"
  },
  {
    "path": "src/1-one/match/methods/match/steps/greedy-match.js",
    "content": "import { getGreedy } from './logic/greedy.js'\n\n// keep 'foo+' or 'foo*' going..\nconst greedyMatch = function (state) {\n  const { regs, phrase_length } = state\n  const reg = regs[state.r]\n  state.t = getGreedy(state, regs[state.r + 1])\n  if (state.t === null) {\n    return null //greedy was too short\n  }\n  // foo{2,4} - has a greed-minimum\n  if (reg.min && reg.min > state.t) {\n    return null //greedy was too short\n  }\n  // 'foo+$' - if also an end-anchor, ensure we really reached the end\n  if (reg.end === true && state.start_i + state.t !== phrase_length) {\n    return null //greedy didn't reach the end\n  }\n  return true\n}\nexport default greedyMatch"
  },
  {
    "path": "src/1-one/match/methods/match/steps/logic/and-or.js",
    "content": "import doesMatch from '../../term/doesMatch.js'\n\nconst isArray = function (arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\nexport const doOrBlock = function (state, skipN = 0) {\n  const block = state.regs[state.r]\n  let wasFound = false\n  // do each multiword sequence\n  for (let c = 0; c < block.choices.length; c += 1) {\n    // try to match this list of tokens\n    const regs = block.choices[c]\n    if (!isArray(regs)) {\n      return false\n    }\n    wasFound = regs.every((cr, w_index) => {\n      let extra = 0\n      const t = state.t + w_index + skipN + extra\n      if (state.terms[t] === undefined) {\n        return false\n      }\n      const foundBlock = doesMatch(state.terms[t], cr, t + state.start_i, state.phrase_length)\n      // this can be greedy - '(foo+ bar)'\n      if (foundBlock === true && cr.greedy === true) {\n        for (let i = 1; i < state.terms.length; i += 1) {\n          const term = state.terms[t + i]\n          if (term) {\n            const keepGoing = doesMatch(term, cr, state.start_i + i, state.phrase_length)\n            if (keepGoing === true) {\n              extra += 1\n            } else {\n              break\n            }\n          }\n        }\n      }\n      skipN += extra\n      return foundBlock\n    })\n    if (wasFound) {\n      skipN += regs.length\n      break\n    }\n  }\n  // we found a match -  is it greedy though?\n  if (wasFound && block.greedy === true) {\n    return doOrBlock(state, skipN) // try it again!\n  }\n  return skipN\n}\n\nconst doAndBlock = function (state) {\n  let longest = 0\n  // all blocks must match, and we return the greediest match\n  const reg = state.regs[state.r]\n  const allDidMatch = reg.choices.every(block => {\n    //  for multi-word blocks, all must match\n    const allWords = block.every((cr, w_index) => {\n      const tryTerm = state.t + w_index\n      if (state.terms[tryTerm] === undefined) {\n        return false\n      }\n      return doesMatch(state.terms[tryTerm], cr, tryTerm, state.phrase_length)\n    })\n    if (allWords === true && block.length > longest) {\n      longest = block.length\n    }\n    return allWords\n  })\n  if (allDidMatch === true) {\n    // console.log(`doAndBlock ${state.terms[state.t].normal}`)\n    return longest\n  }\n  return false\n}\nexport { doAndBlock }"
  },
  {
    "path": "src/1-one/match/methods/match/steps/logic/greedy.js",
    "content": "import doesMatch from '../../term/doesMatch.js'\n\n// for greedy checking, we no longer care about the reg.start\n// value, and leaving it can cause failures for anchored greedy\n// matches.  ditto for end-greedy matches: we need an earlier non-\n// ending match to succceed until we get to the actual end.\nconst getGreedy = function (state, endReg) {\n  const reg = Object.assign({}, state.regs[state.r], { start: false, end: false })\n  const start = state.t\n  for (; state.t < state.terms.length; state.t += 1) {\n    //stop for next-reg match\n    if (endReg && doesMatch(state.terms[state.t], endReg, state.start_i + state.t, state.phrase_length)) {\n      return state.t\n    }\n    const count = state.t - start + 1\n    // is it max-length now?\n    if (reg.max !== undefined && count === reg.max) {\n      return state.t\n    }\n    //stop here\n    if (doesMatch(state.terms[state.t], reg, state.start_i + state.t, state.phrase_length) === false) {\n      // is it too short?\n      if (reg.min !== undefined && count < reg.min) {\n        return null\n      }\n      return state.t\n    }\n  }\n  return state.t\n}\n\nconst greedyTo = function (state, nextReg) {\n  let t = state.t\n  //if there's no next one, just go off the end!\n  if (!nextReg) {\n    return state.terms.length\n  }\n  //otherwise, we're looking for the next one\n  for (; t < state.terms.length; t += 1) {\n    if (doesMatch(state.terms[t], nextReg, state.start_i + t, state.phrase_length) === true) {\n      // console.log(`greedyTo ${state.terms[t].normal}`)\n      return t\n    }\n  }\n  //guess it doesn't exist, then.\n  return null\n}\n\nconst isEndGreedy = function (reg, state) {\n  if (reg.end === true && reg.greedy === true) {\n    if (state.start_i + state.t < state.phrase_length - 1) {\n      const tmpReg = Object.assign({}, reg, { end: false })\n      if (doesMatch(state.terms[state.t], tmpReg, state.start_i + state.t, state.phrase_length) === true) {\n        // console.log(`endGreedy ${state.terms[state.t].normal}`)\n        return true\n      }\n    }\n  }\n  return false\n}\n\nexport { isEndGreedy, greedyTo, getGreedy }"
  },
  {
    "path": "src/1-one/match/methods/match/steps/logic/negative-greedy.js",
    "content": "import doesMatch from '../../term/doesMatch.js'\n\nconst negGreedy = function (state, reg, nextReg) {\n  let skip = 0\n  for (let t = state.t; t < state.terms.length; t += 1) {\n    let found = doesMatch(state.terms[t], reg, state.start_i + state.t, state.phrase_length)\n    // we don't want a match, here\n    if (found) {\n      break//stop going\n    }\n    // are we doing 'greedy-to'?\n    // - \"!foo+ after\"  should stop at 'after'\n    if (nextReg) {\n      found = doesMatch(state.terms[t], nextReg, state.start_i + state.t, state.phrase_length)\n      if (found) {\n        break\n      }\n    }\n    skip += 1\n    // is it max-length now?\n    if (reg.max !== undefined && skip === reg.max) {\n      break\n    }\n  }\n  if (skip === 0) {\n    return false //dead\n  }\n  // did we satisfy min for !foo{min,max}\n  if (reg.min && reg.min > skip) {\n    return false//dead\n  }\n  state.t += skip\n  // state.r += 1\n  return true\n}\n\nexport default negGreedy"
  },
  {
    "path": "src/1-one/match/methods/match/steps/negative.js",
    "content": "import matchTerm from '../term/doesMatch.js'\nimport negGreedy from './logic/negative-greedy.js'\n\n// '!foo' should match anything that isn't 'foo'\n// if it matches, return false\nconst doNegative = function (state) {\n  const { regs } = state\n  const reg = regs[state.r]\n\n  // match *anything* but this term\n  const tmpReg = Object.assign({}, reg)\n  tmpReg.negative = false // try removing it\n\n  // found it? if so, we die here\n  const found = matchTerm(state.terms[state.t], tmpReg, state.start_i + state.t, state.phrase_length)\n  if (found) {\n    return false//bye\n  }\n  // should we skip the term too?\n  if (reg.optional) {\n    // \"before after\" - \"before !foo? after\"\n    // does the next reg match the this term?\n    const nextReg = regs[state.r + 1]\n    if (nextReg) {\n      const fNext = matchTerm(state.terms[state.t], nextReg, state.start_i + state.t, state.phrase_length)\n      if (fNext) {\n        state.r += 1\n      } else if (nextReg.optional && regs[state.r + 2]) {\n        // ugh. ok,\n        // support \"!foo? extra? need\"\n        // but don't scan ahead more than that.\n        const fNext2 = matchTerm(state.terms[state.t], regs[state.r + 2], state.start_i + state.t, state.phrase_length)\n        if (fNext2) {\n          state.r += 2\n        }\n      }\n    }\n  }\n  // negative greedy - !foo+  - super hard!\n  if (reg.greedy) {\n    return negGreedy(state, tmpReg, regs[state.r + 1])\n  }\n  state.t += 1\n  return true\n}\nexport default doNegative"
  },
  {
    "path": "src/1-one/match/methods/match/steps/optional-match.js",
    "content": "import matchTerm from '../term/doesMatch.js'\n\n// 'foo? foo' matches are tricky.\nconst foundOptional = function (state) {\n  const { regs } = state\n  const reg = regs[state.r]\n  const term = state.terms[state.t]\n  // does the next reg match it too?\n  const nextRegMatched = matchTerm(term, regs[state.r + 1], state.start_i + state.t, state.phrase_length)\n  if (reg.negative || nextRegMatched) {\n    // but does the next reg match the next term??\n    // only skip if it doesn't\n    const nextTerm = state.terms[state.t + 1]\n    if (!nextTerm || !matchTerm(nextTerm, regs[state.r + 1], state.start_i + state.t, state.phrase_length)) {\n      state.r += 1\n    }\n  }\n}\n\nexport default foundOptional"
  },
  {
    "path": "src/1-one/match/methods/match/steps/or-block.js",
    "content": "import { doOrBlock } from './logic/and-or.js'\nimport { getGroup } from '../_lib.js'\n\nconst orBlock = function (state) {\n  const { regs } = state\n  const reg = regs[state.r]\n  const skipNum = doOrBlock(state)\n  // did we find a match?\n  if (skipNum) {\n    // handle 'not' logic\n    if (reg.negative === true) {\n      return null // die\n    }\n    // tuck in as named-group\n    if (state.hasGroup === true) {\n      const g = getGroup(state, state.t)\n      g.length += skipNum\n    }\n    // ensure we're at the end\n    if (reg.end === true) {\n      const end = state.phrase_length\n      if (state.t + state.start_i + skipNum !== end) {\n        return null\n      }\n    }\n    state.t += skipNum\n    // log(`✓ |found-or|`)\n    return true\n  } else if (!reg.optional) {\n    return null //die\n  }\n  return true\n}\nexport default orBlock"
  },
  {
    "path": "src/1-one/match/methods/match/steps/simple-match.js",
    "content": "import { getGroup } from '../_lib.js'\nimport foundOptional from './optional-match.js'\nimport greedyMatch from './greedy-match.js'\nimport contractionSkip from './contraction-skip.js'\n\n\n// '[foo]' should also be logged as a group\nconst setGroup = function (state, startAt) {\n  const reg = state.regs[state.r]\n  // Get or create capture group\n  const g = getGroup(state, startAt)\n  // Update group - add greedy or increment length\n  if (state.t > 1 && reg.greedy) {\n    g.length += state.t - startAt\n  } else {\n    g.length++\n  }\n}\n\n// when a reg matches a term\nconst simpleMatch = function (state) {\n  const { regs } = state\n  const reg = regs[state.r]\n  const term = state.terms[state.t]\n  const startAt = state.t\n  // if it's a negative optional match... :0\n  if (reg.optional && regs[state.r + 1] && reg.negative) {\n    return true\n  }\n  // okay, it was a match, but if it's optional too,\n  // we should check the next reg too, to skip it?\n  if (reg.optional && regs[state.r + 1]) {\n    foundOptional(state)\n  }\n  // Contraction skip:\n  // did we match the first part of a contraction?\n  if (term.implicit && state.terms[state.t + 1]) {\n    contractionSkip(state)\n  }\n  //advance to the next term!\n  state.t += 1\n  //check any ending '$' flags\n  //if this isn't the last term, refuse the match\n  if (reg.end === true && state.t !== state.terms.length && reg.greedy !== true) {\n    return null //die\n  }\n  // keep 'foo+' going...\n  if (reg.greedy === true) {\n    const alive = greedyMatch(state)\n    if (!alive) {\n      return null\n    }\n  }\n  // log '[foo]' as a group\n  if (state.hasGroup === true) {\n    setGroup(state, startAt)\n  }\n  return true\n}\nexport default simpleMatch"
  },
  {
    "path": "src/1-one/match/methods/match/term/_fuzzy.js",
    "content": "// fuzzy-match (damerau-levenshtein)\n// Based on  tad-lispy /node-damerau-levenshtein\n// https://github.com/tad-lispy/node-damerau-levenshtein/blob/master/index.js\n// count steps (insertions, deletions, substitutions, or transpositions)\nconst editDistance = function (strA, strB) {\n  const aLength = strA.length,\n    bLength = strB.length\n  // fail-fast\n  if (aLength === 0) {\n    return bLength\n  }\n  if (bLength === 0) {\n    return aLength\n  }\n  // If the limit is not defined it will be calculate from this and that args.\n  const limit = (bLength > aLength ? bLength : aLength) + 1\n  if (Math.abs(aLength - bLength) > (limit || 100)) {\n    return limit || 100\n  }\n  // init the array\n  const matrix = []\n  for (let i = 0; i < limit; i++) {\n    matrix[i] = [i]\n    matrix[i].length = limit\n  }\n  for (let i = 0; i < limit; i++) {\n    matrix[0][i] = i\n  }\n  // Calculate matrix.\n  let j, a_index, b_index, cost, min, t\n  for (let i = 1; i <= aLength; ++i) {\n    a_index = strA[i - 1]\n    for (j = 1; j <= bLength; ++j) {\n      // Check the jagged distance total so far\n      if (i === j && matrix[i][j] > 4) {\n        return aLength\n      }\n      b_index = strB[j - 1]\n      cost = a_index === b_index ? 0 : 1 // Step 5\n      // Calculate the minimum (much faster than Math.min(...)).\n      min = matrix[i - 1][j] + 1 // Deletion.\n      if ((t = matrix[i][j - 1] + 1) < min) min = t // Insertion.\n      if ((t = matrix[i - 1][j - 1] + cost) < min) min = t // Substitution.\n      // Update matrix.\n      const shouldUpdate =\n        i > 1 && j > 1 && a_index === strB[j - 2] && strA[i - 2] === b_index && (t = matrix[i - 2][j - 2] + cost) < min\n      if (shouldUpdate) {\n        matrix[i][j] = t\n      } else {\n        matrix[i][j] = min\n      }\n    }\n  }\n  // return number of steps\n  return matrix[aLength][bLength]\n}\n// score similarity by from 0-1 (steps/length)\nconst fuzzyMatch = function (strA, strB, minLength = 3) {\n  if (strA === strB) {\n    return 1\n  }\n  //don't even bother on tiny strings\n  if (strA.length < minLength || strB.length < minLength) {\n    return 0\n  }\n  const steps = editDistance(strA, strB)\n  const length = Math.max(strA.length, strB.length)\n  const relative = length === 0 ? 0 : steps / length\n  const similarity = 1 - relative\n  return similarity\n}\nexport default fuzzyMatch\n"
  },
  {
    "path": "src/1-one/match/methods/match/term/doesMatch.js",
    "content": "import fuzzy from './_fuzzy.js'\nimport methods from '../../termMethods.js' //this should load off of 'methods.one.termMethods'\n\n//declare it up here\nlet wrapMatch = function () { }\n/** ignore optional/greedy logic, straight-up term match*/\nconst doesMatch = function (term, reg, index, length) {\n  // support '.'\n  if (reg.anything === true) {\n    return true\n  }\n  // support '^' (in parentheses)\n  if (reg.start === true && index !== 0) {\n    return false\n  }\n  // support '$' (in parentheses)\n  if (reg.end === true && index !== length - 1) {\n    return false\n  }\n  // match an id\n  if (reg.id !== undefined && reg.id === term.id) {\n    return true\n  }\n  //support a text match\n  if (reg.word !== undefined) {\n    // check case-sensitivity, etc\n    if (reg.use) {\n      return reg.word === term[reg.use]\n    }\n    //match contractions, machine-form\n    if (term.machine !== null && term.machine === reg.word) {\n      return true\n    }\n    // term aliases for slashes and things\n    if (term.alias !== undefined && term.alias.hasOwnProperty(reg.word)) {\n      return true\n    }\n    // support ~ fuzzy match\n    if (reg.fuzzy === true) {\n      if (reg.word === term.root) {\n        return true\n      }\n      const score = fuzzy(reg.word, term.normal)\n      if (score >= reg.min) {\n        return true\n      }\n    }\n    // match slashes and things\n    if (term.alias && term.alias.some(str => str === reg.word)) {\n      return true\n    }\n    //match either .normal or .text\n    return reg.word === term.text || reg.word === term.normal\n  }\n  //support #Tag\n  if (reg.tag !== undefined) {\n    return term.tags.has(reg.tag) === true\n  }\n  //support @method\n  if (reg.method !== undefined) {\n    if (typeof methods[reg.method] === 'function' && methods[reg.method](term) === true) {\n      return true\n    }\n    return false\n  }\n  //support whitespace/punctuation\n  if (reg.pre !== undefined) {\n    return term.pre && term.pre.includes(reg.pre)\n  }\n  if (reg.post !== undefined) {\n    return term.post && term.post.includes(reg.post)\n  }\n  //support /reg/\n  if (reg.regex !== undefined) {\n    let str = term.normal\n    if (reg.use) {\n      str = term[reg.use]\n    }\n    return reg.regex.test(str)\n  }\n  //support <chunk>\n  if (reg.chunk !== undefined) {\n    return term.chunk === reg.chunk\n  }\n  //support %Noun|Verb%\n  if (reg.switch !== undefined) {\n    return term.switch === reg.switch\n  }\n  //support {machine}\n  if (reg.machine !== undefined) {\n    return term.normal === reg.machine || term.machine === reg.machine || term.root === reg.machine\n  }\n  //support {word/sense}\n  if (reg.sense !== undefined) {\n    return term.sense === reg.sense\n  }\n  // support optimized (one|two)\n  if (reg.fastOr !== undefined) {\n    // {work/verb} must be a verb\n    if (reg.pos && !term.tags.has(reg.pos)) {\n      return null\n    }\n    const str = term.root || term.implicit || term.machine || term.normal\n    return reg.fastOr.has(str) || reg.fastOr.has(term.text)\n  }\n  //support slower (one|two)\n  if (reg.choices !== undefined) {\n    // try to support && operator\n    if (reg.operator === 'and') {\n      // must match them all\n      return reg.choices.every(r => wrapMatch(term, r, index, length))\n    }\n    // or must match one\n    return reg.choices.some(r => wrapMatch(term, r, index, length))\n  }\n  return false\n}\n// wrap result for !negative match logic\nwrapMatch = function (t, reg, index, length) {\n  const result = doesMatch(t, reg, index, length)\n  if (reg.negative === true) {\n    return !result\n  }\n  return result\n}\nexport default wrapMatch\n"
  },
  {
    "path": "src/1-one/match/methods/parseMatch/01-parseBlocks.js",
    "content": "// match  'foo /yes/' and not 'foo/no/bar'\nconst bySlashes = /(?:^|\\s)([![^]*(?:<[^<]*>)?\\/.*?[^\\\\/]\\/[?\\]+*$~]*)(?:\\s|$)/\n// match '(yes) but not foo(no)bar'\nconst byParentheses = /([!~[^]*(?:<[^<]*>)?\\([^)]+[^\\\\)]\\)[?\\]+*$~]*)(?:\\s|$)/\n// okay\nconst byWord = / /g\n\nconst isBlock = str => {\n  return /^[![^]*(<[^<]*>)?\\(/.test(str) && /\\)[?\\]+*$~]*$/.test(str)\n}\nconst isReg = str => {\n  return /^[![^]*(<[^<]*>)?\\//.test(str) && /\\/[?\\]+*$~]*$/.test(str)\n}\n\nconst cleanUp = function (arr) {\n  arr = arr.map(str => str.trim())\n  arr = arr.filter(str => str)\n  return arr\n}\n\nconst parseBlocks = function (txt) {\n  // parse by /regex/ first\n  const arr = txt.split(bySlashes)\n  let res = []\n  // parse by (blocks), next\n  arr.forEach(str => {\n    if (isReg(str)) {\n      res.push(str)\n      return\n    }\n    res = res.concat(str.split(byParentheses))\n  })\n  res = cleanUp(res)\n  // split by spaces, now\n  let final = []\n  res.forEach(str => {\n    if (isBlock(str)) {\n      final.push(str)\n    } else if (isReg(str)) {\n      final.push(str)\n    } else {\n      final = final.concat(str.split(byWord))\n    }\n  })\n  final = cleanUp(final)\n  return final\n}\nexport default parseBlocks\n"
  },
  {
    "path": "src/1-one/match/methods/parseMatch/02-parseToken.js",
    "content": "const hasMinMax = /\\{([0-9]+)?(, *[0-9]*)?\\}/\nconst andSign = /&&/\n// const hasDash = /\\p{Letter}[-–—]\\p{Letter}/u\nconst captureName = new RegExp(/^<\\s*(\\S+)\\s*>/)\n/* break-down a match expression into this:\n{\n  word:'',\n  tag:'',\n  regex:'',\n\n  start:false,\n  end:false,\n  negative:false,\n  anything:false,\n  greedy:false,\n  optional:false,\n\n  named:'',\n  choices:[],\n}\n*/\nconst titleCase = str => str.charAt(0).toUpperCase() + str.substring(1)\nconst end = (str) => str.charAt(str.length - 1)\nconst start = (str) => str.charAt(0)\nconst stripStart = (str) => str.substring(1)\nconst stripEnd = (str) => str.substring(0, str.length - 1)\n\nconst stripBoth = function (str) {\n  str = stripStart(str)\n  str = stripEnd(str)\n  return str\n}\n//\nconst parseToken = function (w, opts) {\n  const obj = {}\n  //collect any flags (do it twice)\n  for (let i = 0; i < 2; i += 1) {\n    //end-flag\n    if (end(w) === '$') {\n      obj.end = true\n      w = stripEnd(w)\n    }\n    //front-flag\n    if (start(w) === '^') {\n      obj.start = true\n      w = stripStart(w)\n    }\n    if (end(w) === '?') {\n      obj.optional = true\n      w = stripEnd(w)\n    }\n    //capture group (this one can span multiple-terms)\n    if (start(w) === '[' || end(w) === ']') {\n      obj.group = null\n      if (start(w) === '[') {\n        obj.groupStart = true\n      }\n      if (end(w) === ']') {\n        obj.groupEnd = true\n      }\n      w = w.replace(/^\\[/, '')\n      w = w.replace(/\\]$/, '')\n      // Use capture group name\n      if (start(w) === '<') {\n        const res = captureName.exec(w)\n        if (res.length >= 2) {\n          obj.group = res[1]\n          w = w.replace(res[0], '')\n        }\n      }\n    }\n    //back-flags\n    if (end(w) === '+') {\n      obj.greedy = true\n      w = stripEnd(w)\n    }\n    if (w !== '*' && end(w) === '*' && w !== '\\\\*') {\n      obj.greedy = true\n      w = stripEnd(w)\n    }\n    if (start(w) === '!') {\n      obj.negative = true\n      // obj.optional = true\n      w = stripStart(w)\n    }\n    //soft-match\n    if (start(w) === '~' && end(w) === '~' && w.length > 2) {\n      w = stripBoth(w)\n      obj.fuzzy = true\n      obj.min = opts.fuzzy || 0.85\n      if (/\\(/.test(w) === false) {\n        obj.word = w\n        return obj\n      }\n    }\n\n    //regex\n    if (start(w) === '/' && end(w) === '/') {\n      w = stripBoth(w)\n      if (opts.caseSensitive) {\n        obj.use = 'text'\n      }\n      obj.regex = new RegExp(w) //potential vuln - security/detect-non-literal-regexp\n      return obj\n    }\n\n    // support foo{1,9}\n    if (hasMinMax.test(w) === true) {\n      w = w.replace(hasMinMax, (_a, b, c) => {\n        if (c === undefined) {\n          // '{3}'\tExactly three times\n          obj.min = Number(b)\n          obj.max = Number(b)\n        } else {\n          c = c.replace(/, */, '')\n          if (b === undefined) {\n            // '{,9}' implied zero min\n            obj.min = 0\n            obj.max = Number(c)\n          } else {\n            // '{2,4}' Two to four times\n            obj.min = Number(b)\n            // '{3,}' Three or more times\n            obj.max = Number(c || 999)\n          }\n        }\n        // use same method as '+'\n        obj.greedy = true\n        // 0 as min means the same as '?'\n        if (!obj.min) {\n          obj.optional = true\n        }\n        return ''\n      })\n    }\n\n    //wrapped-flags\n    if (start(w) === '(' && end(w) === ')') {\n      // support (one && two)\n      if (andSign.test(w)) {\n        obj.choices = w.split(andSign)\n        obj.operator = 'and'\n      } else {\n        obj.choices = w.split('|')\n        obj.operator = 'or'\n      }\n      //remove '(' and ')'\n      obj.choices[0] = stripStart(obj.choices[0])\n      const last = obj.choices.length - 1\n      obj.choices[last] = stripEnd(obj.choices[last])\n      // clean up the results\n      obj.choices = obj.choices.map(s => s.trim())\n      obj.choices = obj.choices.filter(s => s)\n      //recursion alert!\n      obj.choices = obj.choices.map(str => {\n        return str.split(/ /g).map(s => parseToken(s, opts))\n      })\n      w = ''\n    }\n\n    //root/sense overloaded\n    if (start(w) === '{' && end(w) === '}') {\n      w = stripBoth(w)\n      // obj.sense = w\n      obj.root = w\n      if (/\\//.test(w)) {\n        const split = obj.root.split(/\\//)\n        obj.root = split[0]\n        obj.pos = split[1]\n        if (obj.pos === 'adj') {\n          obj.pos = 'Adjective'\n        }\n        // titlecase\n        obj.pos = obj.pos.charAt(0).toUpperCase() + obj.pos.substr(1).toLowerCase()\n        // add sense-number too\n        if (split[2] !== undefined) {\n          obj.sense = split[2]\n        }\n      }\n      return obj\n    }\n    //chunks\n    if (start(w) === '<' && end(w) === '>') {\n      w = stripBoth(w)\n      obj.chunk = titleCase(w)\n      obj.greedy = true\n      return obj\n    }\n    if (start(w) === '%' && end(w) === '%') {\n      w = stripBoth(w)\n      obj.switch = w\n      return obj\n    }\n  }\n  //do the actual token content\n  if (start(w) === '#') {\n    obj.tag = stripStart(w)\n    obj.tag = titleCase(obj.tag)\n    return obj\n  }\n  //dynamic function on a term object\n  if (start(w) === '@') {\n    obj.method = stripStart(w)\n    return obj\n  }\n  if (w === '.') {\n    obj.anything = true\n    return obj\n  }\n  //support alone-astrix\n  if (w === '*') {\n    obj.anything = true\n    obj.greedy = true\n    obj.optional = true\n    return obj\n  }\n  if (w) {\n    //somehow handle encoded-chars?\n    w = w.replace('\\\\*', '*')\n    w = w.replace('\\\\.', '.')\n    if (opts.caseSensitive) {\n      obj.use = 'text'\n    } else {\n      w = w.toLowerCase()\n    }\n    obj.word = w\n  }\n  return obj\n}\nexport default parseToken\n"
  },
  {
    "path": "src/1-one/match/methods/parseMatch/03-splitHyphens.js",
    "content": "const hasDash = /[a-z0-9][-–—][a-z]/i\n\n// match 're-do' -> ['re','do']\nconst splitHyphens = function (regs, world) {\n  const prefixes = world.model.one.prefixes\n  for (let i = regs.length - 1; i >= 0; i -= 1) {\n    const reg = regs[i]\n    if (reg.word && hasDash.test(reg.word)) {\n      let words = reg.word.split(/[-–—]/g)\n      // don't split 're-cycle', etc\n      if (prefixes.hasOwnProperty(words[0])) {\n        continue\n      }\n      words = words.filter(w => w).reverse()\n      regs.splice(i, 1)\n      words.forEach(w => {\n        const obj = Object.assign({}, reg)\n        obj.word = w\n        regs.splice(i, 0, obj)\n      })\n    }\n  }\n  return regs\n}\nexport default splitHyphens"
  },
  {
    "path": "src/1-one/match/methods/parseMatch/04-inflect-root.js",
    "content": "\n// add all conjugations of this verb\nconst addVerbs = function (token, world) {\n  const { all } = world.methods.two.transform.verb || {}\n  const str = token.root\n  if (!all) {\n    return []\n  }\n  return all(str, world.model)\n}\n\n// add all inflections of this noun\nconst addNoun = function (token, world) {\n  const { all } = world.methods.two.transform.noun || {}\n  if (!all) {\n    return [token.root]\n  }\n  return all(token.root, world.model)\n}\n\n// add all inflections of this adjective\nconst addAdjective = function (token, world) {\n  const { all } = world.methods.two.transform.adjective || {}\n  if (!all) {\n    return [token.root]\n  }\n  return all(token.root, world.model)\n}\n\n// turn '{walk}' into 'walking', 'walked', etc\nconst inflectRoot = function (regs, world) {\n  // do we have compromise/two?\n  regs = regs.map(token => {\n    // a reg to convert '{foo}'\n    if (token.root) {\n      // check if compromise/two is loaded\n      if (world.methods.two && world.methods.two.transform) {\n        let choices = []\n        // have explicitly set from POS - '{sweet/adjective}'\n        if (token.pos) {\n          if (token.pos === 'Verb') {\n            choices = choices.concat(addVerbs(token, world))\n          } else if (token.pos === 'Noun') {\n            choices = choices.concat(addNoun(token, world))\n          } else if (token.pos === 'Adjective') {\n            choices = choices.concat(addAdjective(token, world))\n          }\n        } else {\n          // do verb/noun/adj by default\n          choices = choices.concat(addVerbs(token, world))\n          choices = choices.concat(addNoun(token, world))\n          choices = choices.concat(addAdjective(token, world))\n        }\n        choices = choices.filter(str => str)\n        if (choices.length > 0) {\n          token.operator = 'or'\n          token.fastOr = new Set(choices)\n        }\n      } else {\n        // if no compromise/two, drop down into 'machine' lookup\n        token.machine = token.root\n        delete token.id\n        delete token.root\n      }\n    }\n    return token\n  })\n\n  return regs\n}\nexport default inflectRoot"
  },
  {
    "path": "src/1-one/match/methods/parseMatch/05-postProcess.js",
    "content": "// name any [unnamed] capture-groups with a number\nconst nameGroups = function (regs) {\n  let index = 0\n  let inGroup = null\n  //'fill in' capture groups between start-end\n  for (let i = 0; i < regs.length; i++) {\n    const token = regs[i]\n    if (token.groupStart === true) {\n      inGroup = token.group\n      if (inGroup === null) {\n        inGroup = String(index)\n        index += 1\n      }\n    }\n    if (inGroup !== null) {\n      token.group = inGroup\n    }\n    if (token.groupEnd === true) {\n      inGroup = null\n    }\n  }\n  return regs\n}\n\n// optimize an 'or' lookup, when the (a|b|c) list is simple or multi-word\nconst doFastOrMode = function (tokens) {\n  return tokens.map(token => {\n    if (token.choices !== undefined) {\n      // make sure it's an OR\n      if (token.operator !== 'or') {\n        return token\n      }\n      if (token.fuzzy === true) {\n        return token\n      }\n      // are they all straight-up words? then optimize them.\n      const shouldPack = token.choices.every(block => {\n        if (block.length !== 1) {\n          return false\n        }\n        const reg = block[0]\n        // ~fuzzy~ words need more care\n        if (reg.fuzzy === true) {\n          return false\n        }\n        // ^ and $ get lost in fastOr\n        if (reg.start || reg.end) {\n          return false\n        }\n        if (reg.word !== undefined && reg.negative !== true && reg.optional !== true && reg.method !== true) {\n          return true //reg is simple-enough\n        }\n        return false\n      })\n      if (shouldPack === true) {\n        token.fastOr = new Set()\n        token.choices.forEach(block => {\n          token.fastOr.add(block[0].word)\n        })\n        delete token.choices\n      }\n    }\n    return token\n  })\n}\n\n// support ~(a|b|c)~\nconst fuzzyOr = function (regs) {\n  return regs.map(reg => {\n    if (reg.fuzzy && reg.choices) {\n      // pass fuzzy-data to each OR choice\n      reg.choices.forEach(r => {\n        if (r.length === 1 && r[0].word) {\n          r[0].fuzzy = true\n          r[0].min = reg.min\n        }\n      })\n    }\n    return reg\n  })\n}\n\nconst postProcess = function (regs) {\n  // ensure all capture groups names are filled between start and end\n  regs = nameGroups(regs)\n  // convert 'choices' format to 'fastOr' format\n  regs = doFastOrMode(regs)\n  // support ~(foo|bar)~\n  regs = fuzzyOr(regs)\n  return regs\n}\nexport default postProcess\n"
  },
  {
    "path": "src/1-one/match/methods/parseMatch/index.js",
    "content": "import parseBlocks from './01-parseBlocks.js'\nimport parseToken from './02-parseToken.js'\nimport splitHyphens from './03-splitHyphens.js'\nimport inflectRoot from './04-inflect-root.js'\nimport postProcess from './05-postProcess.js'\n\n/** parse a match-syntax string into json */\nconst syntax = function (input, opts, world) {\n  // fail-fast\n  if (input === null || input === undefined || input === '') {\n    return []\n  }\n  opts = opts || {}\n  if (typeof input === 'number') {\n    input = String(input) //go for it?\n  }\n  let tokens = parseBlocks(input)\n  //turn them into objects\n  tokens = tokens.map(str => parseToken(str, opts))\n  // '~re-do~'\n  tokens = splitHyphens(tokens, world)\n  // '{walk}'\n  tokens = inflectRoot(tokens, world)\n  //clean up anything weird\n  tokens = postProcess(tokens, opts)\n  // console.log(tokens)\n  return tokens\n}\nexport default syntax\n"
  },
  {
    "path": "src/1-one/match/methods/termMethods.js",
    "content": "// these methods are called with '@hasComma' in the match syntax\n// various unicode quotation-mark formats\nconst startQuote =\n  /([\\u0022\\uFF02\\u0027\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F])/\n\nconst endQuote = /([\\u0022\\uFF02\\u0027\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4])/\n\nconst hasHyphen = /^[-–—]$/\nconst hasDash = / [-–—]{1,3} /\n\n/** search the term's 'post' punctuation  */\nconst hasPost = (term, punct) => term.post.indexOf(punct) !== -1\n/** search the term's 'pre' punctuation  */\n// const hasPre = (term, punct) => term.pre.indexOf(punct) !== -1\n\nconst methods = {\n  /** does it have a quotation symbol?  */\n  hasQuote: term => startQuote.test(term.pre) || endQuote.test(term.post),\n  /** does it have a comma?  */\n  hasComma: term => hasPost(term, ','),\n  /** does it end in a period? */\n  hasPeriod: term => hasPost(term, '.') === true && hasPost(term, '...') === false,\n  /** does it end in an exclamation */\n  hasExclamation: term => hasPost(term, '!'),\n  /** does it end with a question mark? */\n  hasQuestionMark: term => hasPost(term, '?') || hasPost(term, '¿'),\n  /** is there a ... at the end? */\n  hasEllipses: term => hasPost(term, '..') || hasPost(term, '…'),\n  /** is there a semicolon after term word? */\n  hasSemicolon: term => hasPost(term, ';'),\n  /** is there a colon after term word? */\n  hasColon: term => hasPost(term, ':'),\n  /** is there a slash '/' in term word? */\n  hasSlash: term => /\\//.test(term.text),\n  /** a hyphen connects two words like-term */\n  hasHyphen: term => hasHyphen.test(term.post) || hasHyphen.test(term.pre),\n  /** a dash separates words - like that */\n  hasDash: term => hasDash.test(term.post) || hasDash.test(term.pre),\n  /** is it multiple words combinded */\n  hasContraction: term => Boolean(term.implicit),\n  /** is it an acronym */\n  isAcronym: term => term.tags.has('Acronym'),\n  /** does it have any tags */\n  isKnown: term => term.tags.size > 0,\n  /** uppercase first letter, then a lowercase */\n  isTitleCase: term => /^\\p{Lu}[a-z'\\u00C0-\\u00FF]/u.test(term.text),\n  /** uppercase all letters */\n  isUpperCase: term => /^\\p{Lu}+$/u.test(term.text),\n}\n// aliases\nmethods.hasQuotation = methods.hasQuote\n\nexport default methods\n"
  },
  {
    "path": "src/1-one/match/plugin.js",
    "content": "import api from './api/index.js'\nimport methods from './methods/index.js'\nimport lib from './lib.js'\n\nexport default {\n  api,\n  methods,\n  lib,\n}\n"
  },
  {
    "path": "src/1-one/output/api/_fmts.js",
    "content": "const fmts = {\n  text: {\n    form: 'text',\n  },\n  normal: {\n    whitespace: 'some',\n    punctuation: 'some',\n    case: 'some',\n    unicode: 'some',\n    form: 'normal',\n  },\n  machine: {\n    keepSpace: false,\n    whitespace: 'some',\n    punctuation: 'some',\n    case: 'none',\n    unicode: 'some',\n    form: 'machine',\n  },\n  root: {\n    keepSpace: false,\n    whitespace: 'some',\n    punctuation: 'some',\n    case: 'some',\n    unicode: 'some',\n    form: 'root',\n  },\n  implicit: {\n    form: 'implicit',\n  }\n}\nfmts.clean = fmts.normal\nfmts.reduced = fmts.root\nexport default fmts"
  },
  {
    "path": "src/1-one/output/api/_text.js",
    "content": "const trimEnd = /[,:;)\\]*.?~!\\u0022\\uFF02\\u201D\\u2019\\u00BB\\u203A\\u2032\\u2033\\u2034\\u301E\\u00B4—-]+$/\nconst trimStart =\n  /^[(['\"*~\\uFF02\\u201C\\u2018\\u201F\\u201B\\u201E\\u2E42\\u201A\\u00AB\\u2039\\u2035\\u2036\\u2037\\u301D\\u0060\\u301F]+/\n\nconst punctToKill = /[,:;)('\"\\u201D\\]]/\nconst isHyphen = /^[-–—]$/\nconst hasSpace = / /\n\nconst textFromTerms = function (terms, opts, keepSpace = true) {\n  let txt = ''\n  terms.forEach(t => {\n    let pre = t.pre || ''\n    let post = t.post || ''\n    if (opts.punctuation === 'some') {\n      pre = pre.replace(trimStart, '')\n      // replace a hyphen with a space\n      if (isHyphen.test(post)) {\n        post = ' '\n      }\n      post = post.replace(punctToKill, '')\n      // cleanup exclamations\n      post = post.replace(/\\?!+/, '?')\n      post = post.replace(/!+/, '!')\n      post = post.replace(/\\?+/, '?')\n      // kill elipses\n      post = post.replace(/\\.{2,}/, '')\n      // kill abbreviation periods\n      if (t.tags.has('Abbreviation')) {\n        post = post.replace(/\\./, '')\n      }\n    }\n    if (opts.whitespace === 'some') {\n      pre = pre.replace(/\\s/, '') //remove pre-whitespace\n      post = post.replace(/\\s+/, ' ') //replace post-whitespace with a space\n    }\n    if (!opts.keepPunct) {\n      pre = pre.replace(trimStart, '')\n      if (post === '-') {\n        post = ' '\n      } else {\n        post = post.replace(trimEnd, '')\n      }\n    }\n    // grab the correct word format\n    let word = t[opts.form || 'text'] || t.normal || ''\n    if (opts.form === 'implicit') {\n      word = t.implicit || t.text\n    }\n    if (opts.form === 'root' && t.implicit) {\n      word = t.root || t.implicit || t.normal\n    }\n    // add an implicit space, for contractions\n    if ((opts.form === 'machine' || opts.form === 'implicit' || opts.form === 'root') && t.implicit) {\n      if (!post || !hasSpace.test(post)) {\n        post += ' '\n      }\n    }\n    txt += pre + word + post\n  })\n  if (keepSpace === false) {\n    txt = txt.trim()\n  }\n  if (opts.lowerCase === true) {\n    txt = txt.toLowerCase()\n  }\n  return txt\n}\n\nconst textFromDoc = function (docs, opts) {\n  let text = ''\n  if (!docs || !docs[0] || !docs[0][0]) {\n    return text\n  }\n  for (let i = 0; i < docs.length; i += 1) {\n    // middle\n    text += textFromTerms(docs[i], opts, true)\n  }\n  if (!opts.keepSpace) {\n    text = text.trim()\n  }\n  if (opts.keepEndPunct === false) {\n    // don't remove ':)' etc\n    if (!docs[0][0].tags.has('Emoticon')) {\n      text = text.replace(trimStart, '')\n    }\n    // remove ending periods\n    const last = docs[docs.length - 1]\n    if (!last[last.length - 1].tags.has('Emoticon')) {\n      text = text.replace(trimEnd, '')\n    }\n    // kill end quotations\n    if (text.endsWith(`'`) && !text.endsWith(`s'`)) {\n      text = text.replace(/'/, '')\n    }\n  }\n  if (opts.cleanWhitespace === true) {\n    text = text.trim()\n  }\n  return text\n}\nexport { textFromDoc, textFromTerms }\n"
  },
  {
    "path": "src/1-one/output/api/debug.js",
    "content": "const isClientSide = () => typeof window !== 'undefined' && window.document\n\n//output some helpful stuff to the console\nconst debug = function (fmt) {\n  const debugMethods = this.methods.one.debug || {}\n  // see if method name exists\n  if (fmt && debugMethods.hasOwnProperty(fmt)) {\n    debugMethods[fmt](this)\n    return this\n  }\n  // log default client-side view\n  if (isClientSide()) {\n    debugMethods.clientSide(this)\n    return this\n  }\n  // else, show regular server-side tags view\n  debugMethods.tags(this)\n  return this\n}\nexport default debug\n"
  },
  {
    "path": "src/1-one/output/api/html.js",
    "content": "const isClass = /^\\../\nconst isId = /^#./\n\nconst escapeXml = str => {\n  str = str.replace(/&/g, '&amp;')\n  str = str.replace(/</g, '&lt;')\n  str = str.replace(/>/g, '&gt;')\n  str = str.replace(/\"/g, '&quot;')\n  str = str.replace(/'/g, '&apos;')\n  return str\n}\n\n// interpret .class, #id, tagName\nconst toTag = function (k) {\n  let start = ''\n  let end = '</span>'\n  k = escapeXml(k)\n  if (isClass.test(k)) {\n    start = `<span class=\"${k.replace(/^\\./, '')}\"`\n  } else if (isId.test(k)) {\n    start = `<span id=\"${k.replace(/^#/, '')}\"`\n  } else {\n    start = `<${k}`\n    end = `</${k}>`\n  }\n  start += '>'\n  return { start, end }\n}\n\nconst getIndex = function (doc, obj) {\n  const starts = {}\n  const ends = {}\n  Object.keys(obj).forEach(k => {\n    let res = obj[k]\n    const tag = toTag(k)\n    if (typeof res === 'string') {\n      res = doc.match(res)\n    }\n    res.docs.forEach(terms => {\n      // don't highlight implicit terms\n      if (terms.every(t => t.implicit)) {\n        return\n      }\n      const a = terms[0].id\n      starts[a] = starts[a] || []\n      starts[a].push(tag.start)\n      const b = terms[terms.length - 1].id\n      ends[b] = ends[b] || []\n      ends[b].push(tag.end)\n    })\n  })\n  return { starts, ends }\n}\n\nconst html = function (obj) {\n  // index ids to highlight\n  const { starts, ends } = getIndex(this, obj)\n  // create the text output\n  let out = ''\n  this.docs.forEach(terms => {\n    for (let i = 0; i < terms.length; i += 1) {\n      const t = terms[i]\n      // do a span tag\n      if (starts.hasOwnProperty(t.id)) {\n        out += starts[t.id].join('')\n      }\n      out += t.pre || ''\n      out += t.text || ''\n      if (ends.hasOwnProperty(t.id)) {\n        out += ends[t.id].join('')\n      }\n      out += t.post || ''\n    }\n  })\n  return out\n}\nexport default { html }\n"
  },
  {
    "path": "src/1-one/output/api/index.js",
    "content": "import html from './html.js'\nimport json from './json.js'\nimport out from './out.js'\nimport text from './text.js'\n\nconst methods = Object.assign({}, out, text, json, html)\n\nconst addAPI = function (View) {\n  Object.assign(View.prototype, methods)\n}\nexport default addAPI\n"
  },
  {
    "path": "src/1-one/output/api/json.js",
    "content": "import { textFromTerms } from './_text.js'\nimport fmts from './_fmts.js'\nimport hash from '../methods/hash.js'\n\nconst defaults = {\n  text: true,\n  terms: true,\n}\n\nconst opts = { case: 'none', unicode: 'some', form: 'machine', punctuation: 'some' }\n\nconst merge = function (a, b) {\n  return Object.assign({}, a, b)\n}\n\nconst fns = {\n  text: terms => textFromTerms(terms, { keepPunct: true }, false),\n  normal: terms => textFromTerms(terms, merge(fmts.normal, { keepPunct: true }), false),\n  implicit: terms => textFromTerms(terms, merge(fmts.implicit, { keepPunct: true }), false),\n\n  machine: terms => textFromTerms(terms, opts, false),\n  root: terms => textFromTerms(terms, merge(opts, { form: 'root' }), false),\n\n  hash: terms => hash(textFromTerms(terms, { keepPunct: true }, false)),\n\n  offset: terms => {\n    const len = fns.text(terms).length\n    return {\n      index: terms[0].offset.index,\n      start: terms[0].offset.start,\n      length: len,\n    }\n  },\n  terms: terms => {\n    return terms.map(t => {\n      const term = Object.assign({}, t)\n      term.tags = Array.from(t.tags)\n      return term\n    })\n  },\n  confidence: (_terms, view, i) => view.eq(i).confidence(),\n  syllables: (_terms, view, i) => view.eq(i).syllables(),\n  sentence: (_terms, view, i) => view.eq(i).fullSentence().text(),\n  dirty: terms => terms.some(t => t.dirty === true),\n}\nfns.sentences = fns.sentence\nfns.clean = fns.normal\nfns.reduced = fns.root\n\nconst toJSON = function (view, option) {\n  option = option || {}\n  if (typeof option === 'string') {\n    option = {}\n  }\n  option = Object.assign({}, defaults, option)\n  // run any necessary upfront steps\n  if (option.offset) {\n    view.compute('offset')\n  }\n  return view.docs.map((terms, i) => {\n    const res = {}\n    Object.keys(option).forEach(k => {\n      if (option[k] && fns[k]) {\n        res[k] = fns[k](terms, view, i)\n      }\n    })\n    return res\n  })\n}\n\nconst methods = {\n  /** return data */\n  json: function (n) {\n    const res = toJSON(this, n)\n    if (typeof n === 'number') {\n      return res[n]\n    }\n    return res\n  },\n}\nmethods.data = methods.json\nexport default methods\n"
  },
  {
    "path": "src/1-one/output/api/out.js",
    "content": "import debug from './debug.js'\nimport wrap from './wrap.js'\nimport hash from '../methods/hash.js'\n\nconst isObject = val => {\n  return Object.prototype.toString.call(val) === '[object Object]'\n}\n\n// sort by frequency\nconst topk = function (arr) {\n  const obj = {}\n  arr.forEach(a => {\n    obj[a] = obj[a] || 0\n    obj[a] += 1\n  })\n  const res = Object.keys(obj).map(k => {\n    return { normal: k, count: obj[k] }\n  })\n  return res.sort((a, b) => (a.count > b.count ? -1 : 0))\n}\n\n/** some named output formats */\nconst out = function (method) {\n  // support custom outputs\n  if (isObject(method)) {\n    return wrap(this, method)\n  }\n  // text out formats\n  if (method === 'text') {\n    return this.text()\n  }\n  if (method === 'normal') {\n    return this.text('normal')\n  }\n  if (method === 'root') {\n    return this.text('root')\n  }\n  if (method === 'machine' || method === 'reduced') {\n    return this.text('machine')\n  }\n  if (method === 'hash' || method === 'md5') {\n    return hash(this.text())\n  }\n\n  // json data formats\n  if (method === 'json') {\n    return this.json()\n  }\n  if (method === 'offset' || method === 'offsets') {\n    this.compute('offset')\n    return this.json({ offset: true })\n  }\n  if (method === 'array') {\n    const arr = this.docs.map(terms => {\n      return terms\n        .reduce((str, t) => {\n          return str + t.pre + t.text + t.post\n        }, '')\n        .trim()\n    })\n    return arr.filter(str => str)\n  }\n  // return terms sorted by frequency\n  if (method === 'freq' || method === 'frequency' || method === 'topk') {\n    return topk(this.json({ normal: true }).map(o => o.normal))\n  }\n\n  // some handy ad-hoc outputs\n  if (method === 'terms') {\n    let list = []\n    this.docs.forEach(terms => {\n      let words = terms.map(t => t.text)\n      words = words.filter(t => t)\n      list = list.concat(words)\n    })\n    return list\n  }\n  if (method === 'tags') {\n    return this.docs.map(terms => {\n      return terms.reduce((h, t) => {\n        h[t.implicit || t.normal] = Array.from(t.tags)\n        return h\n      }, {})\n    })\n  }\n  if (method === 'debug') {\n    return this.debug() //allow\n  }\n  return this.text()\n}\n\nconst methods = {\n  /** */\n  debug: debug,\n  /** */\n  out,\n  /** */\n  wrap: function (obj) {\n    return wrap(this, obj)\n  },\n}\n\nexport default methods\n"
  },
  {
    "path": "src/1-one/output/api/text.js",
    "content": "import { textFromDoc } from './_text.js'\nimport fmts from './_fmts.js'\n\nconst isObject = val => {\n  return Object.prototype.toString.call(val) === '[object Object]'\n}\n\nexport default {\n  /** */\n  text: function (fmt) {\n    let opts = {}\n    if (fmt && typeof fmt === 'string' && fmts.hasOwnProperty(fmt)) {\n      opts = Object.assign({}, fmts[fmt])\n    } else if (fmt && isObject(fmt)) {\n      opts = Object.assign({}, fmt) //todo: fixme\n    }\n    // is it a full document?\n    if (opts.keepSpace === undefined && !this.isFull()) {\n      //\n      opts.keepSpace = false\n    }\n    if (opts.keepEndPunct === undefined && this.pointer) {\n      const ptr = this.pointer[0]\n      if (ptr && ptr[1]) {\n        opts.keepEndPunct = false\n      } else {\n        opts.keepEndPunct = true\n      }\n    }\n    // set defaults\n    if (opts.keepPunct === undefined) {\n      opts.keepPunct = true\n    }\n    if (opts.keepSpace === undefined) {\n      opts.keepSpace = true\n    }\n    return textFromDoc(this.docs, opts)\n  },\n}\n"
  },
  {
    "path": "src/1-one/output/api/wrap.js",
    "content": "const toText = function (term) {\n  const pre = term.pre || ''\n  const post = term.post || ''\n  return pre + term.text + post\n}\n\nconst findStarts = function (doc, obj) {\n  const starts = {}\n  Object.keys(obj).forEach(reg => {\n    const m = doc.match(reg)\n    m.fullPointer.forEach(a => {\n      starts[a[3]] = { fn: obj[reg], end: a[2] }\n    })\n  })\n  return starts\n}\n\nconst wrap = function (doc, obj) {\n  // index ids to highlight\n  const starts = findStarts(doc, obj)\n  let text = ''\n  doc.docs.forEach((terms, n) => {\n    for (let i = 0; i < terms.length; i += 1) {\n      const t = terms[i]\n      // do a span tag\n      if (starts.hasOwnProperty(t.id)) {\n        const { fn, end } = starts[t.id]\n        const m = doc.update([[n, i, end]])\n        text += terms[i].pre || ''\n        text += fn(m)\n        i = end - 1\n        text += terms[i].post || ''\n      } else {\n        text += toText(t)\n      }\n    }\n  })\n  return text\n}\nexport default wrap"
  },
  {
    "path": "src/1-one/output/methods/debug/_color.js",
    "content": "// https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color\nconst reset = '\\x1b[0m'\n\n//cheaper than requiring chalk\nconst cli = {\n  green: str => '\\x1b[32m' + str + reset,\n  red: str => '\\x1b[31m' + str + reset,\n  blue: str => '\\x1b[34m' + str + reset,\n  magenta: str => '\\x1b[35m' + str + reset,\n  cyan: str => '\\x1b[36m' + str + reset,\n  yellow: str => '\\x1b[33m' + str + reset,\n  black: str => '\\x1b[30m' + str + reset,\n  dim: str => '\\x1b[2m' + str + reset,\n  i: str => '\\x1b[3m' + str + reset,\n}\nexport default cli\n"
  },
  {
    "path": "src/1-one/output/methods/debug/chunks.js",
    "content": "/* eslint-disable no-console */\nimport cli from './_color.js'\n\nconst showChunks = function (view) {\n  const { docs } = view\n  console.log('')\n  docs.forEach(terms => {\n    const out = []\n    terms.forEach(term => {\n      if (term.chunk === 'Noun') {\n        out.push(cli.blue(term.implicit || term.normal))\n      } else if (term.chunk === 'Verb') {\n        out.push(cli.green(term.implicit || term.normal))\n      } else if (term.chunk === 'Adjective') {\n        out.push(cli.yellow(term.implicit || term.normal))\n      } else if (term.chunk === 'Pivot') {\n        out.push(cli.red(term.implicit || term.normal))\n      } else {\n        out.push(term.implicit || term.normal)\n      }\n    })\n    console.log(out.join(' '), '\\n')\n  })\n  console.log('\\n')\n}\nexport default showChunks\n"
  },
  {
    "path": "src/1-one/output/methods/debug/client-side.js",
    "content": "/* eslint-disable no-console */\nconst logClientSide = function (view) {\n  console.log('%c -=-=- ', 'background-color:#6699cc;')\n  view.forEach(m => {\n    console.groupCollapsed(m.text())\n    const terms = m.docs[0]\n    const out = terms.map(t => {\n      let text = t.text || '-'\n      if (t.implicit) {\n        text = '[' + t.implicit + ']'\n      }\n      const tags = '[' + Array.from(t.tags).join(', ') + ']'\n      return { text, tags }\n    })\n    console.table(out, ['text', 'tags'])\n    console.groupEnd()\n  })\n}\nexport default logClientSide\n"
  },
  {
    "path": "src/1-one/output/methods/debug/highlight.js",
    "content": "/* eslint-disable no-console */\nimport cli from './_color.js'\n\nconst split = (txt, offset, index) => {\n  const buff = index * 9 //there are 9 new chars addded to each highlight\n  const start = offset.start + buff\n  const end = start + offset.length\n  const pre = txt.substring(0, start)\n  const mid = txt.substring(start, end)\n  const post = txt.substring(end, txt.length)\n  return [pre, mid, post]\n}\n\nconst spliceIn = function (txt, offset, index) {\n  const parts = split(txt, offset, index)\n  return `${parts[0]}${cli.blue(parts[1])}${parts[2]}`\n}\n\nconst showHighlight = function (doc) {\n  if (!doc.found) {\n    return\n  }\n  const bySentence = {}\n  doc.fullPointer.forEach(ptr => {\n    bySentence[ptr[0]] = bySentence[ptr[0]] || []\n    bySentence[ptr[0]].push(ptr)\n  })\n  Object.keys(bySentence).forEach(k => {\n    const full = doc.update([[Number(k)]])\n    let txt = full.text()\n    const matches = doc.update(bySentence[k])\n    const json = matches.json({ offset: true })\n    json.forEach((obj, i) => {\n      txt = spliceIn(txt, obj.offset, i)\n    })\n    console.log(txt)\n  })\n  console.log('\\n')\n}\nexport default showHighlight\n"
  },
  {
    "path": "src/1-one/output/methods/debug/index.js",
    "content": "import clientSide from './client-side.js'\nimport tags from './tags.js'\nimport chunks from './chunks.js'\nimport highlight from './highlight.js'\n\nconst debug = {\n  tags,\n  clientSide,\n  chunks,\n  highlight,\n}\nexport default debug\n"
  },
  {
    "path": "src/1-one/output/methods/debug/tags.js",
    "content": "/* eslint-disable no-console */\nimport cli from './_color.js'\n\nconst tagString = function (tags, model) {\n  if (model.one.tagSet) {\n    tags = tags.map(tag => {\n      if (!model.one.tagSet.hasOwnProperty(tag)) {\n        return tag\n      }\n      const c = model.one.tagSet[tag].color || 'blue'\n      return cli[c](tag)\n    })\n  }\n  return tags.join(', ')\n}\n\nconst showTags = function (view) {\n  const { docs, model } = view\n  if (docs.length === 0) {\n    console.log(cli.blue('\\n     ──────'))\n  }\n  docs.forEach(terms => {\n    console.log(cli.blue('\\n  ┌─────────'))\n    terms.forEach(t => {\n      const tags = [...(t.tags || [])]\n      let text = t.text || '-'\n      if (t.sense) {\n        text = `{${t.normal}/${t.sense}}`\n      }\n      if (t.implicit) {\n        text = '[' + t.implicit + ']'\n      }\n      text = cli.yellow(text)\n      let word = \"'\" + text + \"'\"\n      if (t.reference) {\n        const str = view.update([t.reference]).text('normal')\n        word += ` - ${cli.dim(cli.i('[' + str + ']'))}`\n      }\n      word = word.padEnd(18)\n      const str = cli.blue('  │ ') + cli.i(word) + '  - ' + tagString(tags, model)\n      console.log(str)\n    })\n  })\n  console.log('\\n')\n}\nexport default showTags\n"
  },
  {
    "path": "src/1-one/output/methods/hash.js",
    "content": "/* eslint-disable no-bitwise */\n/* eslint-disable no-mixed-operators */\n/* eslint-disable no-multi-assign */\n\n// https://github.com/jbt/tiny-hashes/\nconst k = []\nlet i = 0\nfor (; i < 64; ) {\n  k[i] = 0 | (Math.sin(++i % Math.PI) * 4294967296)\n}\n\nconst md5 = function (s) {\n  let b,\n    c,\n    d,\n    j = decodeURI(encodeURI(s)) + '\\x80',\n    a = j.length\n\n  const h = [(b = 0x67452301), (c = 0xefcdab89), ~b, ~c],\n    words = []\n\n  s = (--a / 4 + 2) | 15\n\n  words[--s] = a * 8\n\n  for (; ~a; ) {\n    words[a >> 2] |= j.charCodeAt(a) << (8 * a--)\n  }\n\n  for (i = j = 0; i < s; i += 16) {\n    a = h\n\n    for (\n      ;\n      j < 64;\n      a = [\n        (d = a[3]),\n        b +\n          (((d =\n            a[0] +\n            [(b & c) | (~b & d), (d & b) | (~d & c), b ^ c ^ d, c ^ (b | ~d)][(a = j >> 4)] +\n            k[j] +\n            ~~words[i | ([j, 5 * j + 1, 3 * j + 5, 7 * j][a] & 15)]) <<\n            (a = [7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21][4 * a + (j++ % 4)])) |\n            (d >>> -a)),\n        b,\n        c,\n      ]\n    ) {\n      b = a[1] | 0\n      c = a[2]\n    }\n    for (j = 4; j; ) h[--j] += a[j]\n  }\n\n  for (s = ''; j < 32; ) {\n    s += ((h[j >> 3] >> ((1 ^ j++) * 4)) & 15).toString(16)\n  }\n\n  return s\n}\nexport default md5\n// console.log(md5('food-safety'))\n"
  },
  {
    "path": "src/1-one/output/methods/index.js",
    "content": "import hash from './hash.js'\nimport debug from './debug/index.js'\n\nexport { hash, debug }\n"
  },
  {
    "path": "src/1-one/output/plugin.js",
    "content": "import api from './api/index.js'\nimport { debug, hash } from './methods/index.js'\n\nexport default {\n  api,\n  methods: {\n    one: {\n      hash,\n      debug,\n    },\n  },\n}\n"
  },
  {
    "path": "src/1-one/pointers/api/index.js",
    "content": "import getUnion from './lib/union.js'\nimport getDifference from './lib/difference.js'\nimport getIntersection from './lib/intersection.js'\n\nconst isArray = function (arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\nconst getDoc = (m, view) => {\n  if (typeof m === 'string' || isArray(m)) {\n    return view.match(m)\n  }\n  if (!m) {\n    return view.none()\n  }\n  // support pre-parsed reg object\n  return m\n}\n\n// 'harden' our json pointers, again\nconst addIds = function (ptrs, docs) {\n  return ptrs.map(ptr => {\n    const [n, start] = ptr\n    if (docs[n] && docs[n][start]) {\n      ptr[3] = docs[n][start].id\n    }\n    return ptr\n  })\n}\n\nconst methods = {}\n\n// all parts, minus duplicates\nmethods.union = function (m) {\n  m = getDoc(m, this)\n  let ptrs = getUnion(this.fullPointer, m.fullPointer)\n  ptrs = addIds(ptrs, this.document)\n  return this.toView(ptrs)\n}\nmethods.and = methods.union\n\n// only parts they both have\nmethods.intersection = function (m) {\n  m = getDoc(m, this)\n  let ptrs = getIntersection(this.fullPointer, m.fullPointer)\n  ptrs = addIds(ptrs, this.document)\n  return this.toView(ptrs)\n}\n\n// only parts of a that b does not have\nmethods.not = function (m) {\n  m = getDoc(m, this)\n  let ptrs = getDifference(this.fullPointer, m.fullPointer)\n  ptrs = addIds(ptrs, this.document)\n  return this.toView(ptrs)\n}\nmethods.difference = methods.not\n\n// get opposite of a match\nmethods.complement = function () {\n  const doc = this.all()\n  let ptrs = getDifference(doc.fullPointer, this.fullPointer)\n  ptrs = addIds(ptrs, this.document)\n  return this.toView(ptrs)\n}\n\n// remove overlaps\nmethods.settle = function () {\n  let ptrs = this.fullPointer\n  ptrs.forEach(ptr => {\n    ptrs = getUnion(ptrs, [ptr])\n  })\n  ptrs = addIds(ptrs, this.document)\n  return this.update(ptrs)\n}\n\nconst addAPI = function (View) {\n  // add set/intersection/union\n  Object.assign(View.prototype, methods)\n}\nexport default addAPI\n"
  },
  {
    "path": "src/1-one/pointers/api/lib/_lib.js",
    "content": "// do the pointers intersect?\nexport const doesOverlap = function (a, b) {\n  if (a[0] !== b[0]) {\n    return false\n  }\n  const [, startA, endA] = a\n  const [, startB, endB] = b\n  // [a,a,a,-,-,-,]\n  // [-,-,b,b,b,-,]\n  if (startA <= startB && endA > startB) {\n    return true\n  }\n  // [-,-,-,a,a,-,]\n  // [-,-,b,b,b,-,]\n  if (startB <= startA && endB > startA) {\n    return true\n  }\n  return false\n}\n\n// get widest min/max\nexport const getExtent = function (ptrs) {\n  let min = ptrs[0][1]\n  let max = ptrs[0][2]\n  ptrs.forEach(ptr => {\n    if (ptr[1] < min) {\n      min = ptr[1]\n    }\n    if (ptr[2] > max) {\n      max = ptr[2]\n    }\n  })\n  return [ptrs[0][0], min, max]\n}\n\n// collect pointers by sentence number\nexport const indexN = function (ptrs) {\n  const byN = {}\n  ptrs.forEach(ref => {\n    byN[ref[0]] = byN[ref[0]] || []\n    byN[ref[0]].push(ref)\n  })\n  return byN\n}\n\n// remove exact duplicates\nexport const uniquePtrs = function (arr) {\n  const obj = {}\n  for (let i = 0; i < arr.length; i += 1) {\n    obj[arr[i].join(',')] = arr[i]\n  }\n  return Object.values(obj)\n}\n\n// a before b\n// console.log(doesOverlap([0, 0, 4], [0, 2, 5]))\n// // b before a\n// console.log(doesOverlap([0, 3, 4], [0, 1, 5]))\n// // disjoint\n// console.log(doesOverlap([0, 0, 3], [0, 4, 5]))\n// neighbours\n// console.log(doesOverlap([0, 1, 3], [0, 3, 5]))\n// console.log(doesOverlap([0, 3, 5], [0, 1, 3]))\n\n// console.log(\n//   getExtent([\n//     [0, 3, 4],\n//     [0, 4, 5],\n//     [0, 1, 2],\n//   ])\n// )\n"
  },
  {
    "path": "src/1-one/pointers/api/lib/difference.js",
    "content": "import splitAll from './split.js'\n\nconst subtract = function (refs, not) {\n  const res = []\n  const found = splitAll(refs, not)\n  found.forEach(o => {\n    if (o.passthrough) {\n      res.push(o.passthrough)\n    }\n    if (o.before) {\n      res.push(o.before)\n    }\n    if (o.after) {\n      res.push(o.after)\n    }\n  })\n  return res\n}\nexport default subtract\n\n// console.log(subtract([[0, 0, 2]], [[0, 0, 1]]))\n// console.log(subtract([[0, 0, 2]], [[0, 1, 2]]))\n"
  },
  {
    "path": "src/1-one/pointers/api/lib/intersection.js",
    "content": "import { doesOverlap, indexN } from './_lib.js'\n\n// [a,a,a,a,-,-,]\n// [-,-,b,b,b,-,]\n// [-,-,x,x,-,-,]\nconst intersection = function (a, b) {\n  // find the latest-start\n  const start = a[1] < b[1] ? b[1] : a[1]\n  // find the earliest-end\n  const end = a[2] > b[2] ? b[2] : a[2]\n  // does it form a valid pointer?\n  if (start < end) {\n    return [a[0], start, end]\n  }\n  return null\n}\n\nconst getIntersection = function (a, b) {\n  const byN = indexN(b)\n  const res = []\n  a.forEach(ptr => {\n    let hmm = byN[ptr[0]] || []\n    hmm = hmm.filter(p => doesOverlap(ptr, p))\n    // no sentence-pairs, so no intersection\n    if (hmm.length === 0) {\n      return\n    }\n    hmm.forEach(h => {\n      const overlap = intersection(ptr, h)\n      if (overlap) {\n        res.push(overlap)\n      }\n    })\n  })\n  return res\n}\nexport default getIntersection\n\n// console.log(getIntersection([[0, 1, 3]], [[0, 2, 4]]))\n"
  },
  {
    "path": "src/1-one/pointers/api/lib/split.js",
    "content": "import { indexN } from './_lib.js'\n\n// split a pointer, by match pointer\nconst pivotBy = function (full, m) {\n  const [n, start] = full\n  const mStart = m[1]\n  const mEnd = m[2]\n  const res = {}\n  // is there space before the match?\n  if (start < mStart) {\n    const end = mStart < full[2] ? mStart : full[2] // find closest end-point\n    res.before = [n, start, end] //before segment\n  }\n  res.match = m\n  // is there space after the match?\n  if (full[2] > mEnd) {\n    res.after = [n, mEnd, full[2]] //after segment\n  }\n  return res\n}\n\nconst doesMatch = function (full, m) {\n  return full[1] <= m[1] && m[2] <= full[2]\n}\n\nconst splitAll = function (full, m) {\n  const byN = indexN(m)\n  const res = []\n  full.forEach(ptr => {\n    const [n] = ptr\n    let matches = byN[n] || []\n    matches = matches.filter(p => doesMatch(ptr, p))\n    if (matches.length === 0) {\n      res.push({ passthrough: ptr })\n      return\n    }\n    // ensure matches are in-order\n    matches = matches.sort((a, b) => a[1] - b[1])\n    // start splitting our left-to-right\n    let carry = ptr\n    matches.forEach((p, i) => {\n      const found = pivotBy(carry, p)\n      // last one\n      if (!matches[i + 1]) {\n        res.push(found)\n      } else {\n        res.push({ before: found.before, match: found.match })\n        if (found.after) {\n          carry = found.after\n        }\n      }\n    })\n  })\n  return res\n}\n\nexport default splitAll\n"
  },
  {
    "path": "src/1-one/pointers/api/lib/union.js",
    "content": "import { doesOverlap, getExtent, indexN, uniquePtrs } from './_lib.js'\n\n// a union is a + b, minus duplicates\nconst getUnion = function (a, b) {\n  const both = a.concat(b)\n  const byN = indexN(both)\n  let res = []\n  both.forEach(ptr => {\n    const [n] = ptr\n    if (byN[n].length === 1) {\n      // we're alone on this sentence, so we're good\n      res.push(ptr)\n      return\n    }\n    // there may be overlaps\n    const hmm = byN[n].filter(m => doesOverlap(ptr, m))\n    hmm.push(ptr)\n    const range = getExtent(hmm)\n    res.push(range)\n  })\n  res = uniquePtrs(res)\n  return res\n}\nexport default getUnion\n\n// two disjoint\n// console.log(getUnion([[1, 3, 4]], [[0, 1, 2]]))\n// two disjoint\n// console.log(getUnion([[0, 3, 4]], [[0, 1, 2]]))\n// overlap-plus\n// console.log(getUnion([[0, 1, 4]], [[0, 2, 6]]))\n// overlap\n// console.log(getUnion([[0, 1, 4]], [[0, 2, 3]]))\n// neighbours\n// console.log(getUnion([[0, 1, 3]], [[0, 3, 5]]))\n"
  },
  {
    "path": "src/1-one/pointers/methods/getDoc.js",
    "content": "const max = 20\n\n// sweep-around looking for our start term uuid\nconst blindSweep = function (id, doc, n) {\n  for (let i = 0; i < max; i += 1) {\n    // look up a sentence\n    if (doc[n - i]) {\n      const index = doc[n - i].findIndex(term => term.id === id)\n      if (index !== -1) {\n        return [n - i, index]\n      }\n    }\n    // look down a sentence\n    if (doc[n + i]) {\n      const index = doc[n + i].findIndex(term => term.id === id)\n      if (index !== -1) {\n        return [n + i, index]\n      }\n    }\n  }\n  return null\n}\n\nconst repairEnding = function (ptr, document) {\n  const [n, start, , , endId] = ptr\n  const terms = document[n]\n  // look for end-id\n  const newEnd = terms.findIndex(t => t.id === endId)\n  if (newEnd === -1) {\n    // if end-term wasn't found, so go all the way to the end\n    ptr[2] = document[n].length\n    ptr[4] = terms.length ? terms[terms.length - 1].id : null\n  } else {\n    ptr[2] = newEnd // repair ending pointer\n  }\n  return document[n].slice(start, ptr[2] + 1)\n}\n\n/** return a subset of the document, from a pointer */\nconst getDoc = function (ptrs, document) {\n  let doc = []\n  ptrs.forEach((ptr, i) => {\n    if (!ptr) {\n      return\n    }\n    // eslint-disable-next-line prefer-const\n    let [n, start, end, id, endId] = ptr //parsePointer(ptr)\n    let terms = document[n] || []\n    if (start === undefined) {\n      start = 0\n    }\n    if (end === undefined) {\n      end = terms.length\n    }\n    if (id && (!terms[start] || terms[start].id !== id)) {\n      // console.log('  repairing pointer...')\n      const wild = blindSweep(id, document, n)\n      if (wild !== null) {\n        const len = end - start\n        terms = document[wild[0]].slice(wild[1], wild[1] + len)\n        // actually change the pointer\n        const startId = terms[0] ? terms[0].id : null\n        ptrs[i] = [wild[0], wild[1], wild[1] + len, startId]\n      }\n    } else {\n      terms = terms.slice(start, end)\n    }\n    if (terms.length === 0) {\n      return\n    }\n    if (start === end) {\n      return\n    }\n    // test end-id, if it exists\n    if (endId && terms[terms.length - 1].id !== endId) {\n      terms = repairEnding(ptr, document)\n    }\n    // otherwise, looks good!\n    doc.push(terms)\n  })\n  doc = doc.filter(a => a.length > 0)\n  return doc\n}\nexport default getDoc"
  },
  {
    "path": "src/1-one/pointers/methods/index.js",
    "content": "import { indexN } from '../api/lib/_lib.js'\nimport splitAll from '../api/lib/split.js'\nimport getDoc from './getDoc.js'\n\n// flat list of terms from nested document\nconst termList = function (docs) {\n  const arr = []\n  for (let i = 0; i < docs.length; i += 1) {\n    for (let t = 0; t < docs[i].length; t += 1) {\n      arr.push(docs[i][t])\n    }\n  }\n  return arr\n}\n\nexport default {\n  one: {\n    termList,\n    getDoc,\n    pointer: {\n      indexN,\n      splitAll,\n    }\n  },\n}\n"
  },
  {
    "path": "src/1-one/pointers/plugin.js",
    "content": "import methods from './methods/index.js'\nimport api from './api/index.js'\n\nexport default {\n  methods,\n  api,\n}\n"
  },
  {
    "path": "src/1-one/sweep/api.js",
    "content": "const api = function (View) {\n\n  /** speedy match a sequence of matches */\n  View.prototype.sweep = function (net, opts = {}) {\n    const { world, docs } = this\n    const { methods } = world\n    let found = methods.one.bulkMatch(docs, net, this.methods, opts)\n\n    // apply any changes\n    if (opts.tagger !== false) {\n      methods.one.bulkTagger(found, docs, this.world)\n    }\n    // fix the pointers\n    // collect all found results into a View\n    found = found.map(o => {\n      const ptr = o.pointer\n      const term = docs[ptr[0]][ptr[1]]\n      const len = ptr[2] - ptr[1]\n      if (term.index) {\n        o.pointer = [\n          term.index[0],\n          term.index[1],\n          ptr[1] + len\n        ]\n      }\n      return o\n    })\n    const ptrs = found.map(o => o.pointer)\n    // cleanup results a bit\n    found = found.map(obj => {\n      obj.view = this.update([obj.pointer])\n      delete obj.regs\n      delete obj.needs\n      delete obj.pointer\n      delete obj._expanded\n      return obj\n    })\n    return {\n      view: this.update(ptrs),\n      found\n    }\n  }\n\n}\nexport default api"
  },
  {
    "path": "src/1-one/sweep/lib.js",
    "content": "export default {\n  // compile a list of matches into a match-net\n  buildNet: function (matches) {\n    const methods = this.methods()\n    const net = methods.one.buildNet(matches, this.world())\n    net.isNet = true\n    return net\n  }\n}"
  },
  {
    "path": "src/1-one/sweep/methods/buildNet/01-parse.js",
    "content": "// extract the clear needs for an individual match token\nconst getTokenNeeds = function (reg) {\n  // negatives can't be cached\n  if (reg.optional === true || reg.negative === true) {\n    return null\n  }\n  if (reg.tag) {\n    return '#' + reg.tag\n  }\n  if (reg.word) {\n    return reg.word\n  }\n  if (reg.switch) {\n    return `%${reg.switch}%`\n  }\n  return null\n}\n\nconst getNeeds = function (regs) {\n  const needs = []\n  regs.forEach(reg => {\n    needs.push(getTokenNeeds(reg))\n    // support AND (foo && tag)\n    if (reg.operator === 'and' && reg.choices) {\n      reg.choices.forEach(oneSide => {\n        oneSide.forEach(r => {\n          needs.push(getTokenNeeds(r))\n        })\n      })\n    }\n  })\n  return needs.filter(str => str)\n}\n\nconst getWants = function (regs) {\n  const wants = []\n  let count = 0\n  regs.forEach(reg => {\n    if (reg.operator === 'or' && !reg.optional && !reg.negative) {\n      // add fast-or terms\n      if (reg.fastOr) {\n        Array.from(reg.fastOr).forEach(w => {\n          wants.push(w)\n        })\n      }\n      // add slow-or\n      if (reg.choices) {\n        reg.choices.forEach(rs => {\n          rs.forEach(r => {\n            const n = getTokenNeeds(r)\n            if (n) {\n              wants.push(n)\n            }\n          })\n        })\n      }\n      count += 1\n    }\n  })\n  return { wants, count }\n}\n\nconst parse = function (matches, world) {\n  const parseMatch = world.methods.one.parseMatch\n  matches.forEach(obj => {\n    obj.regs = parseMatch(obj.match, {}, world)\n    // wrap these ifNo properties into an array\n    if (typeof obj.ifNo === 'string') {\n      obj.ifNo = [obj.ifNo]\n    }\n    if (obj.notIf) {\n      obj.notIf = parseMatch(obj.notIf, {}, world)\n    }\n    // cache any requirements up-front \n    obj.needs = getNeeds(obj.regs)\n    const { wants, count } = getWants(obj.regs)\n    obj.wants = wants\n    obj.minWant = count\n    // get rid of tiny sentences\n    obj.minWords = obj.regs.filter(o => !o.optional).length\n  })\n  return matches\n}\n\nexport default parse\n"
  },
  {
    "path": "src/1-one/sweep/methods/buildNet/index.js",
    "content": "import parse from './01-parse.js'\n\n// do some indexing on the list of matches\nconst buildNet = function (matches, world) {\n  // turn match-syntax into json\n  matches = parse(matches, world)\n\n  // collect by wants and needs\n  const hooks = {}\n  matches.forEach(obj => {\n    // add needs\n    obj.needs.forEach(str => {\n      hooks[str] = Array.isArray(hooks[str]) ? hooks[str] : []\n      hooks[str].push(obj)\n    })\n    // add wants\n    obj.wants.forEach(str => {\n      hooks[str] = Array.isArray(hooks[str]) ? hooks[str] : []\n      hooks[str].push(obj)\n    })\n  })\n  // remove duplicates\n  Object.keys(hooks).forEach(k => {\n    const already = {}\n    hooks[k] = hooks[k].filter(obj => {\n      if (typeof already[obj.match] === 'boolean') {\n        return false\n      }\n      already[obj.match] = true\n      return true\n    })\n  })\n\n  // keep all un-cacheable matches (those with no needs) \n  const always = matches.filter(o => o.needs.length === 0 && o.wants.length === 0)\n  return {\n    hooks,\n    always\n  }\n}\n\nexport default buildNet\n"
  },
  {
    "path": "src/1-one/sweep/methods/index.js",
    "content": "import buildNet from './buildNet/index.js'\nimport bulkMatch from './sweep/index.js'\nimport bulkTagger from './tagger/index.js'\n\nexport default {\n  buildNet,\n  bulkMatch,\n  bulkTagger\n}"
  },
  {
    "path": "src/1-one/sweep/methods/sweep/01-getHooks.js",
    "content": "// for each cached-sentence, find a list of possible matches\nconst getHooks = function (docCaches, hooks) {\n  return docCaches.map((set, i) => {\n    let maybe = []\n    Object.keys(hooks).forEach(k => {\n      if (docCaches[i].has(k)) {\n        maybe = maybe.concat(hooks[k])\n      }\n    })\n    // remove duplicates\n    const already = {}\n    maybe = maybe.filter(m => {\n      if (typeof already[m.match] === 'boolean') {\n        return false\n      }\n      already[m.match] = true\n      return true\n    })\n    return maybe\n  })\n}\n\nexport default getHooks\n"
  },
  {
    "path": "src/1-one/sweep/methods/sweep/02-trim-down.js",
    "content": "// filter-down list of maybe-matches\nconst localTrim = function (maybeList, docCache) {\n  return maybeList.map((list, n) => {\n    const haves = docCache[n]\n    // ensure all stated-needs of the match are met\n    list = list.filter(obj => {\n      return obj.needs.every(need => haves.has(need))\n    })\n    // ensure nothing matches in our 'ifNo' property\n    list = list.filter(obj => {\n      if (obj.ifNo !== undefined && obj.ifNo.some(no => haves.has(no)) === true) {\n        return false\n      }\n      return true\n    })\n    // ensure atleast one(?) of the wants is found\n    list = list.filter(obj => {\n      if (obj.wants.length === 0) {\n        return true\n      }\n      // ensure there's one cache-hit\n      const found = obj.wants.filter(str => haves.has(str)).length\n      return found >= obj.minWant\n    })\n    return list\n  })\n}\nexport default localTrim\n"
  },
  {
    "path": "src/1-one/sweep/methods/sweep/04-runMatch.js",
    "content": "// finally,\n// actually run these match-statements on the terms\nconst runMatch = function (maybeList, document, docCache, methods, opts) {\n  const results = []\n  for (let n = 0; n < maybeList.length; n += 1) {\n    for (let i = 0; i < maybeList[n].length; i += 1) {\n      const m = maybeList[n][i]\n      // ok, actually do the work.\n      const res = methods.one.match([document[n]], m)\n      // found something.\n      if (res.ptrs.length > 0) {\n        res.ptrs.forEach(ptr => {\n          ptr[0] = n // fix the sentence pointer\n          // check ifNo\n          // if (m.ifNo !== undefined) {\n          //   let terms = document[n].slice(ptr[1], ptr[2])\n          //   for (let k = 0; k < m.ifNo.length; k += 1) {\n          //     const no = m.ifNo[k]\n          //     // quick-check cache\n          //     if (docCache[n].has(no)) {\n          //       if (no.startsWith('#')) {\n          //         let tag = no.replace(/^#/, '')\n          //         if (terms.find(t => t.tags.has(tag))) {\n          //           console.log('+' + tag)\n          //           return\n          //         }\n          //       } else if (terms.find(t => t.normal === no || t.tags.has(no))) {\n          //         console.log('+' + no)\n          //         return\n          //       }\n          //     }\n          //   }\n          // }\n          const todo = Object.assign({}, m, { pointer: ptr })\n          if (m.unTag !== undefined) {\n            todo.unTag = m.unTag\n          }\n          results.push(todo)\n        })\n        //ok cool, can we stop early?\n        if (opts.matchOne === true) {\n          return [results[0]]\n        }\n      }\n    }\n  }\n  return results\n}\nexport default runMatch\n"
  },
  {
    "path": "src/1-one/sweep/methods/sweep/index.js",
    "content": "import getHooks from './01-getHooks.js'\nimport trimDown from './02-trim-down.js'\n// import getWants from './03-get-wants.js'\nimport runMatch from './04-runMatch.js'\n\n\nconst tooSmall = function (maybeList, document) {\n  return maybeList.map((arr, i) => {\n    const termCount = document[i].length\n    arr = arr.filter(o => {\n      return termCount >= o.minWords\n    })\n    return arr\n  })\n}\n\nconst sweep = function (document, net, methods, opts = {}) {\n  // find suitable matches to attempt, on each sentence\n  const docCache = methods.one.cacheDoc(document)\n  // collect possible matches for this document\n  let maybeList = getHooks(docCache, net.hooks)\n  // ensure all defined needs are met for each match\n  maybeList = trimDown(maybeList, docCache, document)\n  // add unchacheable matches to each sentence's todo-list\n  if (net.always.length > 0) {\n    maybeList = maybeList.map(arr => arr.concat(net.always))\n  }\n  // if we don't have enough words\n  maybeList = tooSmall(maybeList, document)\n\n  // now actually run the matches\n  const results = runMatch(maybeList, document, docCache, methods, opts)\n  // console.dir(results, { depth: 5 })\n  return results\n}\nexport default sweep\n"
  },
  {
    "path": "src/1-one/sweep/methods/tagger/canBe.js",
    "content": "// is this tag consistent with the tags they already have?\nconst canBe = function (terms, tag, model) {\n  const tagSet = model.one.tagSet\n  if (!tagSet.hasOwnProperty(tag)) {\n    return true\n  }\n  const not = tagSet[tag].not || []\n  for (let i = 0; i < terms.length; i += 1) {\n    const term = terms[i]\n    for (let k = 0; k < not.length; k += 1) {\n      if (term.tags.has(not[k]) === true) {\n        return false //found a tag conflict - bail!\n      }\n    }\n  }\n  return true\n}\nexport default canBe\n"
  },
  {
    "path": "src/1-one/sweep/methods/tagger/index.js",
    "content": "import canBe from './canBe.js'\n\nconst tagger = function (list, document, world) {\n  const { model, methods } = world\n  const { getDoc, setTag, unTag } = methods.one\n  const looksPlural = methods.two.looksPlural\n  if (list.length === 0) {\n    return list\n  }\n  // some logging for debugging\n  const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env\n  if (env.DEBUG_TAGS) {\n    console.log(`\\n\\n  \\x1b[32m→ ${list.length} post-tagger:\\x1b[0m`) //eslint-disable-line\n  }\n  return list.map(todo => {\n    if (!todo.tag && !todo.chunk && !todo.unTag) {\n      return\n    }\n    const reason = todo.reason || todo.match\n    const terms = getDoc([todo.pointer], document)[0]\n    // handle 'safe' tag\n    if (todo.safe === true) {\n      // check for conflicting tags\n      if (canBe(terms, todo.tag, model) === false) {\n        return\n      }\n      // dont tag half of a hyphenated word\n      if (terms[terms.length - 1].post === '-') {\n        return\n      }\n    }\n    if (todo.tag !== undefined) {\n      setTag(terms, todo.tag, world, todo.safe, `[post] '${reason}'`)\n      // quick and dirty plural tagger 😕\n      if (todo.tag === 'Noun' && looksPlural) {\n        const term = terms[terms.length - 1]\n        if (looksPlural(term.text)) {\n          setTag([term], 'Plural', world, todo.safe, 'quick-plural')\n        } else {\n          setTag([term], 'Singular', world, todo.safe, 'quick-singular')\n        }\n      }\n      // allow freezing this match, too\n      if (todo.freeze === true) {\n        terms.forEach(term => (term.frozen = true))\n      }\n    }\n    if (todo.unTag !== undefined) {\n      unTag(terms, todo.unTag, world, todo.safe, reason)\n    }\n    // allow setting chunks, too\n    if (todo.chunk) {\n      terms.forEach(t => (t.chunk = todo.chunk))\n    }\n  })\n}\nexport default tagger\n"
  },
  {
    "path": "src/1-one/sweep/plugin.js",
    "content": "import lib from './lib.js'\nimport api from './api.js'\nimport methods from './methods/index.js'\n\nexport default {\n  lib,\n  api,\n  methods: {\n    one: methods,\n  }\n}"
  },
  {
    "path": "src/1-one/tag/api/index.js",
    "content": "import tag from './tag.js'\n\nconst tagAPI = function (View) {\n  Object.assign(View.prototype, tag)\n}\nexport default tagAPI\n"
  },
  {
    "path": "src/1-one/tag/api/tag.js",
    "content": "/* eslint no-console: 0 */\nconst isArray = function (arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\nconst fns = {\n  /** add a given tag, to all these terms */\n  tag: function (input, reason = '', isSafe) {\n    if (!this.found || !input) {\n      return this\n    }\n    const terms = this.termList()\n    if (terms.length === 0) {\n      return this\n    }\n    const { methods, verbose, world } = this\n    // logger\n    if (verbose === true) {\n      console.log(' +  ', input, reason || '')\n    }\n    if (isArray(input)) {\n      input.forEach(tag => methods.one.setTag(terms, tag, world, isSafe, reason))\n    } else {\n      methods.one.setTag(terms, input, world, isSafe, reason)\n    }\n    // uncache\n    this.uncache()\n    return this\n  },\n\n  /** add a given tag, only if it is consistent */\n  tagSafe: function (input, reason = '') {\n    return this.tag(input, reason, true)\n  },\n\n  /** remove a given tag from all these terms */\n  unTag: function (input, reason) {\n    if (!this.found || !input) {\n      return this\n    }\n    const terms = this.termList()\n    if (terms.length === 0) {\n      return this\n    }\n    const { methods, verbose, model } = this\n    // logger\n    if (verbose === true) {\n      console.log(' -  ', input, reason || '')\n    }\n    const tagSet = model.one.tagSet\n    if (isArray(input)) {\n      input.forEach(tag => methods.one.unTag(terms, tag, tagSet))\n    } else {\n      methods.one.unTag(terms, input, tagSet)\n    }\n    // uncache\n    this.uncache()\n    return this\n  },\n\n  /** return only the terms that can be this tag  */\n  canBe: function (tag) {\n    tag = tag.replace(/^#/, '')\n    const tagSet = this.model.one.tagSet\n    const canBe = this.methods.one.canBe\n    const nope = []\n    this.document.forEach((terms, n) => {\n      terms.forEach((term, i) => {\n        if (!canBe(term, tag, tagSet)) {\n          nope.push([n, i, i + 1])\n        }\n      })\n    })\n    const noDoc = this.update(nope)\n    return this.difference(noDoc)\n  },\n}\nexport default fns\n"
  },
  {
    "path": "src/1-one/tag/compute/tagRank.js",
    "content": "const boringTags = new Set(['Auxiliary', 'Possessive'])\n\nconst sortByKids = function (tags, tagSet) {\n  tags = tags.sort((a, b) => {\n    // (unknown tags are interesting)\n    if (boringTags.has(a) || !tagSet.hasOwnProperty(b)) {\n      return 1\n    }\n    if (boringTags.has(b) || !tagSet.hasOwnProperty(a)) {\n      return -1\n    }\n    let kids = tagSet[a].children || []\n    const aKids = kids.length\n    kids = tagSet[b].children || []\n    const bKids = kids.length\n    return aKids - bKids\n  })\n  return tags\n}\n\nconst tagRank = function (view) {\n  const { document, world } = view\n  const tagSet = world.model.one.tagSet\n  document.forEach(terms => {\n    terms.forEach(term => {\n      const tags = Array.from(term.tags)\n      term.tagRank = sortByKids(tags, tagSet)\n    })\n  })\n}\nexport default tagRank\n"
  },
  {
    "path": "src/1-one/tag/lib.js",
    "content": "// wire-up more pos-tags to our model\nconst addTags = function (tags) {\n  const { model, methods } = this.world()\n  const tagSet = model.one.tagSet\n  const fn = methods.one.addTags\n  const res = fn(tags, tagSet)\n  model.one.tagSet = res\n  return this\n}\n\nexport default { addTags }"
  },
  {
    "path": "src/1-one/tag/methods/addTags/01-validate.js",
    "content": "\nconst toArr = function (input) {\n  if (!input) {\n    return []\n  }\n  if (typeof input === 'string') {\n    return [input]\n  }\n  return input\n}\n\nconst addImplied = function (tags, already) {\n  Object.keys(tags).forEach(k => {\n    // support deprecated fmts\n    if (tags[k].isA) {\n      tags[k].is = tags[k].isA\n    }\n    if (tags[k].notA) {\n      tags[k].not = tags[k].notA\n    }\n    // add any implicit 'is' tags\n    if (tags[k].is && typeof tags[k].is === 'string') {\n      if (!already.hasOwnProperty(tags[k].is) && !tags.hasOwnProperty(tags[k].is)) {\n        tags[tags[k].is] = {}\n      }\n    }\n    // add any implicit 'not' tags\n    if (tags[k].not && typeof tags[k].not === 'string' && !tags.hasOwnProperty(tags[k].not)) {\n      if (!already.hasOwnProperty(tags[k].not) && !tags.hasOwnProperty(tags[k].not)) {\n        tags[tags[k].not] = {}\n      }\n    }\n  })\n  return tags\n}\n\n\nconst validate = function (tags, already) {\n\n  tags = addImplied(tags, already)\n\n  // property validation\n  Object.keys(tags).forEach(k => {\n    tags[k].children = toArr(tags[k].children)\n    tags[k].not = toArr(tags[k].not)\n  })\n  // not links are bi-directional\n  // add any incoming not tags\n  Object.keys(tags).forEach(k => {\n    const nots = tags[k].not || []\n    nots.forEach(no => {\n      if (tags[no] && tags[no].not) {\n        tags[no].not.push(k)\n      }\n    })\n  })\n  return tags\n}\nexport default validate"
  },
  {
    "path": "src/1-one/tag/methods/addTags/02-fmt.js",
    "content": "import colors from './_colors.js'\n\nconst getColor = function (node) {\n  if (colors.hasOwnProperty(node.id)) {\n    return colors[node.id]\n  }\n  if (colors.hasOwnProperty(node.is)) {\n    return colors[node.is]\n  }\n  const found = node._cache.parents.find(c => colors[c])\n  return colors[found]\n}\n\n// convert tags to our final format\nconst fmt = function (nodes) {\n  const res = {}\n  nodes.forEach(node => {\n    const { not, also, is, novel } = node.props\n    let parents = node._cache.parents\n    if (also) {\n      parents = parents.concat(also)\n    }\n    res[node.id] = {\n      is,\n      not,\n      novel,\n      also,\n      parents,\n      children: node._cache.children,\n      color: getColor(node)\n    }\n  })\n  // lastly, add all children of all nots\n  Object.keys(res).forEach(k => {\n    const nots = new Set(res[k].not)\n    res[k].not.forEach(not => {\n      if (res[not]) {\n        res[not].children.forEach(tag => nots.add(tag))\n      }\n    })\n    res[k].not = Array.from(nots)\n  })\n  return res\n}\n\nexport default fmt"
  },
  {
    "path": "src/1-one/tag/methods/addTags/_colors.js",
    "content": "// i just made these up\nconst colors = {\n  Noun: 'blue',\n  Verb: 'green',\n  Negative: 'green',\n  Date: 'red',\n  Value: 'red',\n  Adjective: 'magenta',\n  Preposition: 'cyan',\n  Conjunction: 'cyan',\n  Determiner: 'cyan',\n  Hyphenated: 'cyan',\n  Adverb: 'cyan',\n}\n\nexport default colors"
  },
  {
    "path": "src/1-one/tag/methods/addTags/index.js",
    "content": "import grad from 'grad-school'\nimport fmt from './02-fmt.js'\nimport validate from './01-validate.js'\n\n// 'fill-down' parent logic inference\nconst compute = function (allTags) {\n  // setup graph-lib format\n  const flatList = Object.keys(allTags).map(k => {\n    const o = allTags[k]\n    const props = { not: new Set(o.not), also: o.also, is: o.is, novel: o.novel }\n    return { id: k, parent: o.is, props, children: [] }\n  })\n  const graph = grad(flatList).cache().fillDown()\n  return graph.out('array')\n}\n\nconst fromUser = function (tags) {\n  Object.keys(tags).forEach(k => {\n    tags[k] = Object.assign({}, tags[k])\n    tags[k].novel = true\n  })\n  return tags\n}\n\nconst addTags = function (tags, already) {\n  // are these tags internal ones, or user-generated?\n  if (Object.keys(already).length > 0) {\n    tags = fromUser(tags)\n  }\n  tags = validate(tags, already)\n\n  const allTags = Object.assign({}, already, tags)\n  // do some basic setting-up\n  // 'fill-down' parent logic\n  const nodes = compute(allTags)\n  // convert it to our final format\n  const res = fmt(nodes)\n  return res\n}\nexport default addTags\n"
  },
  {
    "path": "src/1-one/tag/methods/canBe.js",
    "content": "// quick check if this tag will require any untagging\nconst canBe = function (term, tag, tagSet) {\n  if (!tagSet.hasOwnProperty(tag)) {\n    return true // everything can be an unknown tag\n  }\n  const not = tagSet[tag].not || []\n  for (let i = 0; i < not.length; i += 1) {\n    if (term.tags.has(not[i])) {\n      return false\n    }\n  }\n  return true\n}\nexport default canBe\n"
  },
  {
    "path": "src/1-one/tag/methods/index.js",
    "content": "import setTag from './setTag.js'\nimport unTag from './unTag.js'\nimport canBe from './canBe.js'\nimport addTags from './addTags/index.js'\n\nexport default {\n  one: {\n    setTag,\n    unTag,\n    addTags,\n    canBe,\n  },\n}\n"
  },
  {
    "path": "src/1-one/tag/methods/setTag.js",
    "content": "const isMulti = / /\n\nconst addChunk = function (term, tag) {\n  if (tag === 'Noun') {\n    term.chunk = tag\n  }\n  if (tag === 'Verb') {\n    term.chunk = tag\n  }\n}\n\nconst tagTerm = function (term, tag, tagSet, isSafe) {\n  // does it already have this tag?\n  if (term.tags.has(tag) === true) {\n    return null\n  }\n  // allow this shorthand in multiple-tag strings\n  if (tag === '.') {\n    return null\n  }\n  // don't overwrite any tags, if term is frozen\n  if (term.frozen === true) {\n    isSafe = true\n  }\n  // for known tags, do logical dependencies first\n  const known = tagSet[tag]\n  if (known) {\n    // first, we remove any conflicting tags\n    if (known.not && known.not.length > 0) {\n      for (let o = 0; o < known.not.length; o += 1) {\n        // if we're in tagSafe, skip this term.\n        if (isSafe === true && term.tags.has(known.not[o])) {\n          return null\n        }\n        term.tags.delete(known.not[o])\n      }\n    }\n    // add parent tags\n    if (known.parents && known.parents.length > 0) {\n      for (let o = 0; o < known.parents.length; o += 1) {\n        term.tags.add(known.parents[o])\n        addChunk(term, known.parents[o])\n      }\n    }\n  }\n  // finally, add our tag\n  term.tags.add(tag)\n  // now it's dirty?\n  term.dirty = true\n  // add a chunk too, if it's easy\n  addChunk(term, tag)\n  return true\n}\n\n// support '#Noun . #Adjective' syntax\nconst multiTag = function (terms, tagString, tagSet, isSafe) {\n  const tags = tagString.split(isMulti)\n  terms.forEach((term, i) => {\n    let tag = tags[i]\n    if (tag) {\n      tag = tag.replace(/^#/, '')\n      tagTerm(term, tag, tagSet, isSafe)\n    }\n  })\n}\n\nconst isArray = function (arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\n// verbose-mode tagger debuging\nconst log = (terms, tag, reason = '') => {\n  const yellow = str => '\\x1b[33m\\x1b[3m' + str + '\\x1b[0m'\n  const i = str => '\\x1b[3m' + str + '\\x1b[0m'\n  const word = terms\n    .map(t => {\n      return t.text || '[' + t.implicit + ']'\n    })\n    .join(' ')\n  if (typeof tag !== 'string' && tag.length > 2) {\n    tag = tag.slice(0, 2).join(', #') + ' +' //truncate the list of tags\n  }\n  tag = typeof tag !== 'string' ? tag.join(', #') : tag\n  console.log(` ${yellow(word).padEnd(24)} \\x1b[32m→\\x1b[0m #${tag.padEnd(22)}  ${i(reason)}`) // eslint-disable-line\n}\n\n// add a tag to all these terms\nconst setTag = function (terms, tag, world = {}, isSafe, reason) {\n  const tagSet = world.model.one.tagSet || {}\n  if (!tag) {\n    return\n  }\n  // some logging for debugging\n  const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env\n  if (env && env.DEBUG_TAGS) {\n    log(terms, tag, reason)\n  }\n  if (isArray(tag) === true) {\n    tag.forEach(tg => setTag(terms, tg, world, isSafe))\n    return\n  }\n  if (typeof tag !== 'string') {\n    console.warn(`compromise: Invalid tag '${tag}'`) // eslint-disable-line\n    return\n  }\n  tag = tag.trim()\n  // support '#Noun . #Adjective' syntax\n  if (isMulti.test(tag)) {\n    multiTag(terms, tag, tagSet, isSafe)\n    return\n  }\n  tag = tag.replace(/^#/, '')\n  // let set = false\n  for (let i = 0; i < terms.length; i += 1) {\n    tagTerm(terms[i], tag, tagSet, isSafe)\n  }\n}\nexport default setTag\n"
  },
  {
    "path": "src/1-one/tag/methods/unTag.js",
    "content": "// remove this tag, and its children, from these terms\nconst unTag = function (terms, tag, tagSet) {\n  tag = tag.trim().replace(/^#/, '')\n  for (let i = 0; i < terms.length; i += 1) {\n    const term = terms[i]\n    // don't untag anything if term is frozen\n    if (term.frozen === true) {\n      continue\n    }\n    // support clearing all tags, with '*'\n    if (tag === '*') {\n      term.tags.clear()\n      continue\n    }\n    // for known tags, do logical dependencies first\n    const known = tagSet[tag]\n    // removing #Verb should also remove #PastTense\n    if (known && known.children.length > 0) {\n      for (let o = 0; o < known.children.length; o += 1) {\n        term.tags.delete(known.children[o])\n      }\n    }\n    term.tags.delete(tag)\n  }\n}\nexport default unTag\n"
  },
  {
    "path": "src/1-one/tag/plugin.js",
    "content": "import methods from './methods/index.js'\nimport api from './api/index.js'\nimport lib from './lib.js'\nimport tagRank from './compute/tagRank.js'\n\n\nexport default {\n  model: {\n    one: { tagSet: {} }\n  },\n  compute: {\n    tagRank\n  },\n  methods,\n  api,\n  lib\n}\n"
  },
  {
    "path": "src/1-one/tokenize/compute/alias.js",
    "content": "const hasSlash = /\\//\nconst hasDomain = /[a-z]\\.[a-z]/i\nconst isMath = /[0-9]/\n// const hasSlash = /[a-z\\u00C0-\\u00FF] ?\\/ ?[a-z\\u00C0-\\u00FF]/\n// const hasApostrophe = /['’]s$/\n\nconst addAliases = function (term, world) {\n  const str = term.normal || term.text || term.machine\n  const aliases = world.model.one.aliases\n  // lookup known aliases like '&'\n  if (aliases.hasOwnProperty(str)) {\n    term.alias = term.alias || []\n    term.alias.push(aliases[str])\n  }\n  // support slashes as aliases\n  if (hasSlash.test(str) && !hasDomain.test(str) && !isMath.test(str)) {\n    const arr = str.split(hasSlash)\n    // don't split urls and things\n    if (arr.length <= 3) {\n      arr.forEach(word => {\n        word = word.trim()\n        if (word !== '') {\n          term.alias = term.alias || []\n          term.alias.push(word)\n        }\n      })\n    }\n  }\n  // aliases for apostrophe-s\n  // if (hasApostrophe.test(str)) {\n  //   let main = str.replace(hasApostrophe, '').trim()\n  //   term.alias = term.alias || []\n  //   term.alias.push(main)\n  // }\n  return term\n}\nexport default addAliases\n"
  },
  {
    "path": "src/1-one/tokenize/compute/freq.js",
    "content": "// sort words by frequency\nconst freq = function (view) {\n  const docs = view.docs\n  const counts = {}\n  for (let i = 0; i < docs.length; i += 1) {\n    for (let t = 0; t < docs[i].length; t += 1) {\n      const term = docs[i][t]\n      const word = term.machine || term.normal\n      counts[word] = counts[word] || 0\n      counts[word] += 1\n    }\n  }\n  // add counts on each term\n  for (let i = 0; i < docs.length; i += 1) {\n    for (let t = 0; t < docs[i].length; t += 1) {\n      const term = docs[i][t]\n      const word = term.machine || term.normal\n      term.freq = counts[word]\n    }\n  }\n}\nexport default freq\n"
  },
  {
    "path": "src/1-one/tokenize/compute/index.js",
    "content": "import alias from './alias.js'\nimport normal from './normal/index.js'\nimport machine from './machine.js'\nimport freq from './freq.js'\nimport offset from './offset.js'\nimport index from './reindex.js'\nimport wordCount from './wordCount.js'\n\n// cheat-method for a quick loop\nconst termLoop = function (view, fn) {\n  const docs = view.docs\n  for (let i = 0; i < docs.length; i += 1) {\n    for (let t = 0; t < docs[i].length; t += 1) {\n      fn(docs[i][t], view.world)\n    }\n  }\n}\n\nconst methods = {\n  alias: (view) => termLoop(view, alias),\n  machine: (view) => termLoop(view, machine),\n  normal: (view) => termLoop(view, normal),\n  freq,\n  offset,\n  index,\n  wordCount,\n}\nexport default methods\n"
  },
  {
    "path": "src/1-one/tokenize/compute/machine.js",
    "content": "const hasDash = /^\\p{Letter}+-\\p{Letter}+$/u\n// 'machine' is a normalized form that looses human-readability\nconst doMachine = function (term) {\n  let str = term.implicit || term.normal || term.text\n  // remove apostrophes\n  str = str.replace(/['’]s$/, '')\n  str = str.replace(/s['’]$/, 's')\n  //lookin'->looking (make it easier for conjugation)\n  str = str.replace(/([aeiou][ktrp])in'$/, '$1ing')\n  //turn re-enactment to reenactment\n  if (hasDash.test(str)) {\n    str = str.replace(/-/g, '')\n  }\n  //#tags, @mentions\n  str = str.replace(/^[#@]/, '')\n  if (str !== term.normal) {\n    term.machine = str\n  }\n}\nexport default doMachine\n"
  },
  {
    "path": "src/1-one/tokenize/compute/normal/01-cleanup.js",
    "content": "/** some basic operations on a string to reduce noise */\nconst clean = function (str) {\n  str = str || ''\n  str = str.toLowerCase()\n  str = str.trim()\n  const original = str\n  //punctuation\n  str = str.replace(/[,;.!?]+$/, '')\n  //coerce Unicode ellipses\n  str = str.replace(/\\u2026/g, '...')\n  //en-dash\n  str = str.replace(/\\u2013/g, '-')\n  //strip leading & trailing grammatical punctuation\n  if (/^[:;]/.test(str) === false) {\n    str = str.replace(/\\.{3,}$/g, '')\n    str = str.replace(/[\",.!:;?)]+$/g, '')\n    str = str.replace(/^['\"(]+/g, '')\n  }\n  // remove zero-width characters\n  str = str.replace(/[\\u200B-\\u200D\\uFEFF]/g, '')\n  //do this again..\n  str = str.trim()\n  //oh shucks,\n  if (str === '') {\n    str = original\n  }\n  //no-commas in numbers\n  str = str.replace(/([0-9]),([0-9])/g, '$1$2')\n  return str\n}\nexport default clean\n"
  },
  {
    "path": "src/1-one/tokenize/compute/normal/02-acronyms.js",
    "content": "// do acronyms need to be ASCII?  ... kind of?\nconst periodAcronym = /([A-Z]\\.)+[A-Z]?,?$/\nconst oneLetterAcronym = /^[A-Z]\\.,?$/\nconst noPeriodAcronym = /[A-Z]{2,}('s|,)?$/\nconst lowerCaseAcronym = /([a-z]\\.)+[a-z]\\.?$/\n\nconst isAcronym = function (str) {\n  //like N.D.A\n  if (periodAcronym.test(str) === true) {\n    return true\n  }\n  //like c.e.o\n  if (lowerCaseAcronym.test(str) === true) {\n    return true\n  }\n  //like 'F.'\n  if (oneLetterAcronym.test(str) === true) {\n    return true\n  }\n  //like NDA\n  if (noPeriodAcronym.test(str) === true) {\n    return true\n  }\n  return false\n}\n\nconst doAcronym = function (str) {\n  if (isAcronym(str)) {\n    str = str.replace(/\\./g, '')\n  }\n  return str\n}\nexport default doAcronym\n"
  },
  {
    "path": "src/1-one/tokenize/compute/normal/index.js",
    "content": "import cleanup from './01-cleanup.js'\n// import doUnicode from './02-unicode.js'\nimport doAcronyms from './02-acronyms.js'\n\nconst normalize = function (term, world) {\n  const killUnicode = world.methods.one.killUnicode\n  // console.log(world.methods.one)\n  let str = term.text || ''\n  str = cleanup(str)\n  //(very) rough ASCII transliteration -  bjŏrk -> bjork\n  str = killUnicode(str, world)\n  str = doAcronyms(str)\n  term.normal = str\n}\nexport default normalize\n"
  },
  {
    "path": "src/1-one/tokenize/compute/offset.js",
    "content": "// get all character startings in doc\nconst offset = function (view) {\n  let elapsed = 0\n  let index = 0\n  const docs = view.document //start from the actual-top\n  for (let i = 0; i < docs.length; i += 1) {\n    for (let t = 0; t < docs[i].length; t += 1) {\n      const term = docs[i][t]\n      term.offset = {\n        index: index,\n        start: elapsed + term.pre.length,\n        length: term.text.length,\n      }\n      elapsed += term.pre.length + term.text.length + term.post.length\n      index += 1\n    }\n  }\n}\n\n\nexport default offset\n"
  },
  {
    "path": "src/1-one/tokenize/compute/reindex.js",
    "content": "// cheat- add the document's pointer to the terms\nconst index = function (view) {\n  // console.log('reindex')\n  const document = view.document\n  for (let n = 0; n < document.length; n += 1) {\n    for (let i = 0; i < document[n].length; i += 1) {\n      document[n][i].index = [n, i]\n    }\n  }\n  // let ptrs = b.fullPointer\n  // console.log(ptrs)\n  // for (let i = 0; i < docs.length; i += 1) {\n  //   const [n, start] = ptrs[i]\n  //   for (let t = 0; t < docs[i].length; t += 1) {\n  //     let term = docs[i][t]\n  //     term.index = [n, start + t]\n  //   }\n  // }\n}\n\nexport default index"
  },
  {
    "path": "src/1-one/tokenize/compute/wordCount.js",
    "content": "const wordCount = function (view) {\n  let n = 0\n  const docs = view.docs\n  for (let i = 0; i < docs.length; i += 1) {\n    for (let t = 0; t < docs[i].length; t += 1) {\n      if (docs[i][t].normal === '') {\n        continue //skip implicit words\n      }\n      n += 1\n      docs[i][t].wordCount = n\n    }\n  }\n}\n\nexport default wordCount\n"
  },
  {
    "path": "src/1-one/tokenize/methods/01-sentences/01-simple-split.js",
    "content": "// split by periods, question marks, unicode ⁇, etc\nconst initSplit = /([.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s)/g\n// merge these back into prev sentence\nconst splitsOnly = /^[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049\\u3002]+\\s$/\nconst newLine = /((?:\\r?\\n|\\r)+)/ // Match different new-line formats\n\n// Start with a regex:\nconst basicSplit = function (text) {\n  const all = []\n  //first, split by newline\n  const lines = text.split(newLine)\n  for (let i = 0; i < lines.length; i++) {\n    //split by period, question-mark, and exclamation-mark\n    const arr = lines[i].split(initSplit)\n    for (let o = 0; o < arr.length; o++) {\n      // merge 'foo' + '.'\n      if (arr[o + 1] && splitsOnly.test(arr[o + 1]) === true) {\n        arr[o] += arr[o + 1]\n        arr[o + 1] = ''\n      }\n      if (arr[o] !== '') {\n        all.push(arr[o])\n      }\n    }\n  }\n  return all\n}\nexport default basicSplit\n"
  },
  {
    "path": "src/1-one/tokenize/methods/01-sentences/02-simple-merge.js",
    "content": "const hasLetter = /[a-z0-9\\u00C0-\\u00FF\\u00a9\\u00ae\\u2000-\\u3300\\ud000-\\udfff]/i\nconst hasSomething = /\\S/\n\nconst notEmpty = function (splits) {\n  const chunks = []\n  for (let i = 0; i < splits.length; i++) {\n    const s = splits[i]\n    if (s === undefined || s === '') {\n      continue\n    }\n    //this is meaningful whitespace\n    if (hasSomething.test(s) === false || hasLetter.test(s) === false) {\n      //add it to the last one\n      if (chunks[chunks.length - 1]) {\n        chunks[chunks.length - 1] += s\n        continue\n      } else if (splits[i + 1]) {\n        //add it to the next one\n        splits[i + 1] = s + splits[i + 1]\n        continue\n      }\n    }\n    //else, only whitespace, no terms, no sentence\n    chunks.push(s)\n  }\n  return chunks\n}\nexport default notEmpty"
  },
  {
    "path": "src/1-one/tokenize/methods/01-sentences/03-smart-merge.js",
    "content": "const hasNewline = function (c) {\n  return Boolean(c.match(/\\n$/))\n}\n\n//loop through these chunks, and join the non-sentence chunks back together..\nconst smartMerge = function (chunks, world) {\n  const isSentence = world.methods.one.tokenize.isSentence\n  const abbrevs = world.model.one.abbreviations || new Set()\n\n  const sentences = []\n  for (let i = 0; i < chunks.length; i++) {\n    const c = chunks[i]\n    //should this chunk be combined with the next one?\n    if (chunks[i + 1] && !isSentence(c, abbrevs) && !hasNewline(c)) {\n      chunks[i + 1] = c + (chunks[i + 1] || '')\n    } else if (c && c.length > 0) {\n      //this chunk is a proper sentence..\n      sentences.push(c)\n      chunks[i] = ''\n    }\n  }\n  return sentences\n}\nexport default smartMerge"
  },
  {
    "path": "src/1-one/tokenize/methods/01-sentences/04-quote-merge.js",
    "content": "/* eslint-disable regexp/no-dupe-characters-character-class */\n\n// merge embedded quotes into 1 sentence\n// like - 'he said \"no!\" and left.'\nconst MAX_QUOTE = 280// ¯\\_(ツ)_/¯\n\n// don't support single-quotes for multi-sentences\nconst pairs = {\n  '\\u0022': '\\u0022', // 'StraightDoubleQuotes'\n  '\\uFF02': '\\uFF02', // 'StraightDoubleQuotesWide'\n  // '\\u0027': '\\u0027', // 'StraightSingleQuotes'\n  '\\u201C': '\\u201D', // 'CommaDoubleQuotes'\n  // '\\u2018': '\\u2019', // 'CommaSingleQuotes'\n  '\\u201F': '\\u201D', // 'CurlyDoubleQuotesReversed'\n  // '\\u201B': '\\u2019', // 'CurlySingleQuotesReversed'\n  '\\u201E': '\\u201D', // 'LowCurlyDoubleQuotes'\n  '\\u2E42': '\\u201D', // 'LowCurlyDoubleQuotesReversed'\n  '\\u201A': '\\u2019', // 'LowCurlySingleQuotes'\n  '\\u00AB': '\\u00BB', // 'AngleDoubleQuotes'\n  '\\u2039': '\\u203A', // 'AngleSingleQuotes'\n  '\\u2035': '\\u2032', // 'PrimeSingleQuotes'\n  '\\u2036': '\\u2033', // 'PrimeDoubleQuotes'\n  '\\u2037': '\\u2034', // 'PrimeTripleQuotes'\n  '\\u301D': '\\u301E', // 'PrimeDoubleQuotes'\n  // '\\u0060': '\\u00B4', // 'PrimeSingleQuotes'\n  '\\u301F': '\\u301E', // 'LowPrimeDoubleQuotesReversed'\n}\nconst openQuote = RegExp('[' + Object.keys(pairs).join('') + ']', 'g')\nconst closeQuote = RegExp('[' + Object.values(pairs).join('') + ']', 'g')\n\nconst closesQuote = function (str) {\n  if (!str) {\n    return false\n  }\n  const m = str.match(closeQuote)\n  if (m !== null && m.length === 1) {\n    return true\n  }\n  return false\n}\n\n// allow micro-sentences when inside a quotation, like:\n// the doc said \"no sir. i will not beg\" and walked away.\nconst quoteMerge = function (splits) {\n  const arr = []\n  for (let i = 0; i < splits.length; i += 1) {\n    const split = splits[i]\n    // do we have an open-quote and not a closed one?\n    const m = split.match(openQuote)\n    if (m !== null && m.length === 1) {\n\n      // look at the next sentence for a closing quote,\n      if (closesQuote(splits[i + 1]) && splits[i + 1].length < MAX_QUOTE) {\n        splits[i] += splits[i + 1]// merge them\n        arr.push(splits[i])\n        splits[i + 1] = ''\n        i += 1\n        continue\n      }\n      // look at n+2 for a closing quote,\n      if (closesQuote(splits[i + 2])) {\n        const toAdd = splits[i + 1] + splits[i + 2]// merge them all\n        //make sure it's not too-long\n        if (toAdd.length < MAX_QUOTE) {\n          splits[i] += toAdd\n          arr.push(splits[i])\n          splits[i + 1] = ''\n          splits[i + 2] = ''\n          i += 2\n          continue\n        }\n      }\n    }\n    arr.push(splits[i])\n  }\n  return arr\n}\nexport default quoteMerge\n"
  },
  {
    "path": "src/1-one/tokenize/methods/01-sentences/05-parens-merge.js",
    "content": "const MAX_LEN = 250// ¯\\_(ツ)_/¯\n\n// support unicode variants?\n// https://stackoverflow.com/questions/13535172/list-of-all-unicodes-open-close-brackets\nconst hasOpen = /\\(/g\nconst hasClosed = /\\)/g\nconst mergeParens = function (splits) {\n  const arr = []\n  for (let i = 0; i < splits.length; i += 1) {\n    const split = splits[i]\n    const m = split.match(hasOpen)\n    if (m !== null && m.length === 1) {\n      // look at next sentence, for closing parenthesis\n      if (splits[i + 1] && splits[i + 1].length < MAX_LEN) {\n        const m2 = splits[i + 1].match(hasClosed)\n        if (m2 !== null && m.length === 1 && !hasOpen.test(splits[i + 1])) {\n          // merge in 2nd sentence\n          splits[i] += splits[i + 1]\n          arr.push(splits[i])\n          splits[i + 1] = ''\n          i += 1\n          continue\n        }\n      }\n    }\n    arr.push(splits[i])\n  }\n  return arr\n}\nexport default mergeParens"
  },
  {
    "path": "src/1-one/tokenize/methods/01-sentences/index.js",
    "content": "import simpleSplit from './01-simple-split.js'\nimport simpleMerge from './02-simple-merge.js'\nimport smartMerge from './03-smart-merge.js'\nimport quoteMerge from './04-quote-merge.js'\nimport parensMerge from './05-parens-merge.js'\n//(Rule-based sentence boundary segmentation) - chop given text into its proper sentences.\n// Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc.\n//regs-\nconst hasSomething = /\\S/\nconst startWhitespace = /^\\s+/\n\nconst splitSentences = function (text, world) {\n  text = text || ''\n  text = String(text)\n  // Ensure it 'smells like' a sentence\n  if (!text || typeof text !== 'string' || hasSomething.test(text) === false) {\n    return []\n  }\n  // cleanup unicode-spaces\n  text = text.replace('\\xa0', ' ')\n  // First do a greedy-split..\n  const splits = simpleSplit(text)\n  // Filter-out the crap ones\n  let sentences = simpleMerge(splits)\n  //detection of non-sentence chunks:\n  sentences = smartMerge(sentences, world)\n  // allow 'he said \"no sir.\" and left.'\n  sentences = quoteMerge(sentences)\n  // allow 'i thought (no way!) and left.'\n  sentences = parensMerge(sentences)\n  //if we never got a sentence, return the given text\n  if (sentences.length === 0) {\n    return [text]\n  }\n  //move whitespace to the ends of sentences, when possible\n  //['hello',' world'] -> ['hello ','world']\n  for (let i = 1; i < sentences.length; i += 1) {\n    const ws = sentences[i].match(startWhitespace)\n    if (ws !== null) {\n      sentences[i - 1] += ws[0]\n      sentences[i] = sentences[i].replace(startWhitespace, '')\n    }\n  }\n  return sentences\n}\nexport default splitSentences\n"
  },
  {
    "path": "src/1-one/tokenize/methods/01-sentences/is-sentence.js",
    "content": "const isAcronym = /[ .][A-Z]\\.? *$/i //asci - 'n.s.a.'\nconst hasEllipse = /(?:\\u2026|\\.{2,}) *$/ // '...'\nconst hasLetter = /\\p{L}/u\nconst hasPeriod = /\\. *$/\nconst leadInit = /^[A-Z]\\. $/ // \"W. Kensington\"\n\n/** does this look like a sentence? */\nconst isSentence = function (str, abbrevs) {\n  // must have a letter\n  if (hasLetter.test(str) === false) {\n    return false\n  }\n  // check for 'F.B.I.'\n  if (isAcronym.test(str) === true) {\n    return false\n  }\n  // check for leading initial - \"W. Kensington\"\n  if (str.length === 3 && leadInit.test(str)) {\n    return false\n  }\n  //check for '...'\n  if (hasEllipse.test(str) === true) {\n    return false\n  }\n  const txt = str.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/, '')\n  const words = txt.split(' ')\n  const lastWord = words[words.length - 1].toLowerCase()\n  // check for 'Mr.' (and not mr?)\n  if (abbrevs.hasOwnProperty(lastWord) === true && hasPeriod.test(str) === true) {\n    return false\n  }\n  // //check for jeopardy!\n  // if (blacklist.hasOwnProperty(lastWord)) {\n  //   return false\n  // }\n  return true\n}\nexport default isSentence\n"
  },
  {
    "path": "src/1-one/tokenize/methods/02-terms/01-hyphens.js",
    "content": "const hasHyphen = function (str, model) {\n  const parts = str.split(/[-–—]/)\n  if (parts.length <= 1) {\n    return false\n  }\n  const { prefixes, suffixes } = model.one\n\n  // l-theanine, x-ray\n  if (parts[0].length === 1 && /[a-z]/i.test(parts[0])) {\n    return false\n  }\n  //dont split 're-do'\n  if (prefixes.hasOwnProperty(parts[0])) {\n    return false\n  }\n  //dont split 'flower-like'\n  parts[1] = parts[1].trim().replace(/[.?!]$/, '')\n  if (suffixes.hasOwnProperty(parts[1])) {\n    return false\n  }\n  //letter-number 'aug-20'\n  const reg = /^([a-z\\u00C0-\\u00FF`\"'/]+)[-–—]([a-z0-9\\u00C0-\\u00FF].*)/i\n  if (reg.test(str) === true) {\n    return true\n  }\n  //number-letter '20-aug'\n  const reg2 = /^[('\"]?([0-9]{1,4})[-–—]([a-z\\u00C0-\\u00FF`\"'/-]+[)'\"]?$)/i\n  if (reg2.test(str) === true) {\n    return true\n  }\n  return false\n}\n\nconst splitHyphens = function (word) {\n  const arr = []\n  //support multiple-hyphenated-terms\n  const hyphens = word.split(/[-–—]/)\n  let whichDash = '-'\n  const found = word.match(/[-–—]/)\n  if (found && found[0]) {\n    whichDash = found\n  }\n  for (let o = 0; o < hyphens.length; o++) {\n    if (o === hyphens.length - 1) {\n      arr.push(hyphens[o])\n    } else {\n      arr.push(hyphens[o] + whichDash)\n    }\n  }\n  return arr\n}\n\nexport { splitHyphens, hasHyphen }\n"
  },
  {
    "path": "src/1-one/tokenize/methods/02-terms/02-slashes.js",
    "content": "const isSlash = /\\p{L} ?\\/ ?\\p{L}+$/u\n\n// 'he / she' should be one word\nconst combineSlashes = function (arr) {\n  for (let i = 1; i < arr.length - 1; i++) {\n    if (isSlash.test(arr[i])) {\n      arr[i - 1] += arr[i] + arr[i + 1]\n      arr[i] = null\n      arr[i + 1] = null\n    }\n  }\n  return arr\n}\nexport default combineSlashes\n"
  },
  {
    "path": "src/1-one/tokenize/methods/02-terms/03-ranges.js",
    "content": "// combine '2 - 5' like '2-5' is\n// 2-4: 2, 4\nconst combineRanges = function (arr) {\n  const startRange = /^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?[-–—] ?$/\n  const endRange = /^[0-9]{1,4}([a-z]{1,2})? ?$/\n  for (let i = 0; i < arr.length - 1; i += 1) {\n    if (arr[i + 1] && startRange.test(arr[i]) && endRange.test(arr[i + 1])) {\n      arr[i] = arr[i] + arr[i + 1]\n      arr[i + 1] = null\n    }\n  }\n  return arr\n}\nexport default combineRanges\n"
  },
  {
    "path": "src/1-one/tokenize/methods/02-terms/index.js",
    "content": "import { hasHyphen, splitHyphens } from './01-hyphens.js'\nimport combineRanges from './03-ranges.js'\nimport combineSlashes from './02-slashes.js'\n\nconst wordlike = /\\S/\nconst isBoundary = /^[!?.]+$/\nconst naiiveSplit = /(\\S+)/\n\nlet notWord = [\n  '.',\n  '?',\n  '!',\n  ':',\n  ';',\n  '-',\n  '–',\n  '—',\n  '--',\n  '...',\n  '(',\n  ')',\n  '[',\n  ']',\n  '\"',\n  \"'\",\n  '`',\n  '«',\n  '»',\n  '*',\n  '•',\n]\nnotWord = notWord.reduce((h, c) => {\n  h[c] = true\n  return h\n}, {})\n\nconst isArray = function (arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\n//turn a string into an array of strings (naiive for now, lumped later)\nconst splitWords = function (str, model) {\n  let result = []\n  let arr = []\n  //start with a naiive split\n  str = str || ''\n  if (typeof str === 'number') {\n    str = String(str)\n  }\n  if (isArray(str)) {\n    return str\n  }\n  const words = str.split(naiiveSplit)\n  for (let i = 0; i < words.length; i++) {\n    //split 'one-two'\n    if (hasHyphen(words[i], model) === true) {\n      arr = arr.concat(splitHyphens(words[i]))\n      continue\n    }\n    arr.push(words[i])\n  }\n  //greedy merge whitespace+arr to the right\n  let carry = ''\n  for (let i = 0; i < arr.length; i++) {\n    const word = arr[i]\n    //if it's more than a whitespace\n    if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) {\n      //put whitespace on end of previous term, if possible\n      if (result.length > 0) {\n        result[result.length - 1] += carry\n        result.push(word)\n      } else {\n        //otherwise, but whitespace before\n        result.push(carry + word)\n      }\n      carry = ''\n    } else {\n      carry += word\n    }\n  }\n  //handle last one\n  if (carry) {\n    if (result.length === 0) {\n      result[0] = ''\n    }\n    result[result.length - 1] += carry //put it on the end\n  }\n  // combine 'one / two'\n  result = combineSlashes(result)\n  result = combineRanges(result)\n  // remove empty results\n  result = result.filter(s => s)\n  return result\n}\nexport default splitWords\n"
  },
  {
    "path": "src/1-one/tokenize/methods/03-whitespace/index.js",
    "content": "import tokenize from './tokenize.js'\n\nconst parseTerm = (txt, model) => {\n  // cleanup any punctuation as whitespace\n  const { str, pre, post } = tokenize(txt, model)\n  const parsed = {\n    text: str,\n    pre: pre,\n    post: post,\n    tags: new Set(),\n  }\n  return parsed\n}\nexport default parseTerm\n"
  },
  {
    "path": "src/1-one/tokenize/methods/03-whitespace/tokenize.js",
    "content": "//all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation\n\n//we have slightly different rules for start/end - like #hashtags.\nconst isLetter = /\\p{Letter}/u\nconst isNumber = /[\\p{Number}\\p{Currency_Symbol}]/u\nconst hasAcronym = /^[a-z]\\.([a-z]\\.)+/i\nconst chillin = /[sn]['’]$/\n\nconst normalizePunctuation = function (str, model) {\n  // quick lookup for allowed pre/post punctuation\n  const { prePunctuation, postPunctuation, emoticons } = model.one\n  let original = str\n  let pre = ''\n  let post = ''\n  const chars = Array.from(str)\n\n  // punctuation-only words, like '<3'\n  if (emoticons.hasOwnProperty(str.trim())) {\n    return { str: str.trim(), pre, post: ' ' } //not great\n  }\n\n  // pop any punctuation off of the start\n  let len = chars.length\n  for (let i = 0; i < len; i += 1) {\n    const c = chars[0]\n    // keep any declared chars\n    if (prePunctuation[c] === true) {\n      continue//keep it\n    }\n    // keep '+' or '-' only before a number\n    if ((c === '+' || c === '-') && isNumber.test(chars[1])) {\n      break//done\n    }\n    // '97 - year short-form\n    if (c === \"'\" && c.length === 3 && isNumber.test(chars[1])) {\n      break//done\n    }\n    // start of word\n    if (isLetter.test(c) || isNumber.test(c)) {\n      break //done\n    }\n    // punctuation\n    pre += chars.shift()//keep going\n  }\n\n  // pop any punctuation off of the end\n  len = chars.length\n  for (let i = 0; i < len; i += 1) {\n    const c = chars[chars.length - 1]\n    // keep any declared chars\n    if (postPunctuation[c] === true) {\n      continue//keep it\n    }\n    // start of word\n    if (isLetter.test(c) || isNumber.test(c)) {\n      break //done\n    }\n    // F.B.I.\n    if (c === '.' && hasAcronym.test(original) === true) {\n      continue//keep it\n    }\n    //  keep s-apostrophe - \"flanders'\" or \"chillin'\"\n    if (c === \"'\" && chillin.test(original) === true) {\n      continue//keep it\n    }\n    // punctuation\n    post = chars.pop() + post//keep going\n  }\n  str = chars.join('')\n  //we went too far..\n  if (str === '') {\n    // do a very mild parse, and hope for the best.\n    original = original.replace(/ *$/, after => {\n      post = after || ''\n      return ''\n    })\n    str = original\n    pre = ''\n  }\n  return { str, pre, post }\n}\nexport default normalizePunctuation\n"
  },
  {
    "path": "src/1-one/tokenize/methods/index.js",
    "content": "import splitSentences from './01-sentences/index.js'\nimport splitTerms from './02-terms/index.js'\nimport splitWhitespace from './03-whitespace/index.js'\nimport killUnicode from './unicode.js'\nimport fromString from './parse.js'\nimport isSentence from './01-sentences/is-sentence.js'\n\nexport default {\n  one: {\n    killUnicode,\n    tokenize: {\n      splitSentences,\n      isSentence,\n      splitTerms,\n      splitWhitespace,\n      fromString,\n    },\n  },\n}\n"
  },
  {
    "path": "src/1-one/tokenize/methods/parse.js",
    "content": "import normalize from '../compute/normal/index.js'\n\n// turn a string input into a 'document' json format\nconst parse = function (input, world) {\n  const { methods, model } = world\n  const { splitSentences, splitTerms, splitWhitespace } = methods.one.tokenize\n  input = input || ''\n  // split into sentences\n  const sentences = splitSentences(input, world)\n  // split into word objects\n  input = sentences.map((txt) => {\n    let terms = splitTerms(txt, model)\n    // split into [pre-text-post]\n    terms = terms.map(t => splitWhitespace(t, model))\n    // add normalized term format, always\n    terms.forEach((t) => {\n      normalize(t, world)\n    })\n    return terms\n  })\n  return input\n}\nexport default parse"
  },
  {
    "path": "src/1-one/tokenize/methods/unicode.js",
    "content": "// 'Björk' to 'Bjork'.\nconst killUnicode = function (str, world) {\n  const unicode = world.model.one.unicode || {}\n  str = str || ''\n  const chars = str.split('')\n  chars.forEach((s, i) => {\n    if (unicode[s]) {\n      chars[i] = unicode[s]\n    }\n  })\n  return chars.join('')\n}\nexport default killUnicode\n"
  },
  {
    "path": "src/1-one/tokenize/model/abbreviations/honorifics.js",
    "content": "export default [\n  'adj',\n  'adm',\n  'adv',\n  'asst',\n  'atty',\n  'bldg',\n  'brig',\n  'capt',\n  'cmdr',\n  'comdr',\n  'cpl',\n  'det',\n  'dr',\n  'esq',\n  'gen',\n  'gov',\n  'hon',\n  'jr',\n  'llb',\n  'lt',\n  'maj',\n  'messrs',\n  'mlle',\n  'mme',\n  'mr',\n  'mrs',\n  'ms',\n  'mstr',\n  'phd',\n  'prof',\n  'pvt',\n  'rep',\n  'reps',\n  'res',\n  'rev',\n  'sen',\n  'sens',\n  'sfc',\n  'sgt',\n  'sir',\n  'sr',\n  'supt',\n  'surg'\n  //miss\n  //misses\n]\n"
  },
  {
    "path": "src/1-one/tokenize/model/abbreviations/misc.js",
    "content": "export default [\n  'approx',\n  'apt',\n  'bc',\n  'cyn',\n  'eg',\n  'esp',\n  'est',\n  'etc',\n  'ex',\n  'exp',\n  'prob', //probably\n  'pron', // Pronunciation\n  'gal', //gallon\n  'min',\n  'pseud',\n  'fig', //figure\n  'jd',\n  'lat', //latitude\n  'lng', //longitude\n  'vol', //volume\n  'fm', //not am\n  'def', //definition\n  'misc',\n  'plz', //please\n  'ea', //each\n  'ps',\n  'sec', //second\n  'pt',\n  'pref', //preface\n  'pl', //plural\n  'pp', //pages\n  'qt', //quarter\n  'fr', //french\n  'sq',\n  'nee', //given name at birth\n  'ss', //ship, or sections\n  'tel',\n  'temp',\n  'vet',\n  'ver', //version\n  'fem', //feminine\n  'masc', //masculine\n  'eng', //engineering/english\n  'adj', //adjective\n  'vb', //verb\n  'rb', //adverb\n  'inf', //infinitive\n  'situ', // in situ\n  'vivo',\n  'vitro',\n  'wr', //world record\n]\n"
  },
  {
    "path": "src/1-one/tokenize/model/abbreviations/months.js",
    "content": "export default ['jan', 'feb', 'mar', 'apr', 'jun', 'jul', 'aug', 'sep', 'sept', 'oct', 'nov', 'dec']\n"
  },
  {
    "path": "src/1-one/tokenize/model/abbreviations/nouns.js",
    "content": "export default [\n  'ad',\n  'al',\n  'arc',\n  'ba',\n  'bl',\n  'ca',\n  'cca',\n  'col',\n  'corp',\n  'ft',\n  'fy',\n  'ie',\n  'lit',\n  'ma',\n  'md',\n  'pd',\n  'tce',\n]\n"
  },
  {
    "path": "src/1-one/tokenize/model/abbreviations/organizations.js",
    "content": "export default ['dept', 'univ', 'assn', 'bros', 'inc', 'ltd', 'co']\n"
  },
  {
    "path": "src/1-one/tokenize/model/abbreviations/places.js",
    "content": "export default [\n  'rd',\n  'st',\n  'dist',\n  'mt',\n  'ave',\n  'blvd',\n  'cl',\n  // 'ct',\n  'cres',\n  'hwy',\n  //states\n  'ariz',\n  'cal',\n  'calif',\n  'colo',\n  'conn',\n  'fla',\n  'fl',\n  'ga',\n  'ida',\n  'ia',\n  'kan',\n  'kans',\n\n  'minn',\n  'neb',\n  'nebr',\n  'okla',\n  'penna',\n  'penn',\n  'pa',\n  'dak',\n  'tenn',\n  'tex',\n  'ut',\n  'vt',\n  'va',\n  'wis',\n  'wisc',\n  'wy',\n  'wyo',\n  'usafa',\n  'alta',\n  'ont',\n  'que',\n  'sask',\n]\n"
  },
  {
    "path": "src/1-one/tokenize/model/abbreviations/units.js",
    "content": "// units that are abbreviations too\nexport default [\n  'dl',\n  'ml',\n  'gal',\n  // 'ft', //ambiguous\n  'qt',\n  'pt',\n  'tbl',\n  'tsp',\n  'tbsp',\n  'km',\n  'dm', //decimeter\n  'cm',\n  'mm',\n  'mi',\n  'td',\n  'hr', //hour\n  'hrs', //hour\n  'kg',\n  'hg',\n  'dg', //decigram\n  'cg', //centigram\n  'mg', //milligram\n  'µg', //microgram\n  'lb', //pound\n  'oz', //ounce\n  'sq ft',\n  'hz', //hertz\n  'mps', //meters per second\n  'mph',\n  'kmph', //kilometers per hour\n  'kb', //kilobyte\n  'mb', //megabyte\n  // 'gb', //ambig\n  'tb', //terabyte\n  'lx', //lux\n  'lm', //lumen\n  // 'pa', //ambig\n  'fl oz', //\n  'yb',\n]\n"
  },
  {
    "path": "src/1-one/tokenize/model/aliases.js",
    "content": "const aliases = {\n  '&': 'and',\n  '@': 'at',\n  '%': 'percent',\n  'plz': 'please',\n  'bein': 'being',\n}\nexport default aliases\n"
  },
  {
    "path": "src/1-one/tokenize/model/index.js",
    "content": "import aliases from './aliases.js'\nimport { lexicon, abbreviations } from './lexicon.js'\nimport prefixes from './prefixes.js'\nimport suffixes from './suffixes.js'\nimport unicode from './unicode.js'\nimport { prePunctuation, postPunctuation, emoticons } from './punctuation.js'\n\nexport default {\n  one: {\n    aliases,\n    abbreviations,\n    prefixes,\n    suffixes,\n    prePunctuation,\n    postPunctuation,\n    lexicon, //give this one forward\n    unicode,\n    emoticons\n  },\n}\n"
  },
  {
    "path": "src/1-one/tokenize/model/lexicon.js",
    "content": "import misc from './abbreviations/misc.js'\nimport honorifics from './abbreviations/honorifics.js'\nimport months from './abbreviations/months.js'\nimport nouns from './abbreviations/nouns.js'\nimport organizations from './abbreviations/organizations.js'\nimport places from './abbreviations/places.js'\nimport units from './abbreviations/units.js'\n\n// add our abbreviation list to our lexicon\nconst list = [\n  [misc],\n  [units, 'Unit'],\n  [nouns, 'Noun'],\n  [honorifics, 'Honorific'],\n  [months, 'Month'],\n  [organizations, 'Organization'],\n  [places, 'Place'],\n]\n// create key-val for sentence-tokenizer\nconst abbreviations = {}\n// add them to a future lexicon\nconst lexicon = {}\n\nlist.forEach(a => {\n  a[0].forEach(w => {\n    // sentence abbrevs\n    abbreviations[w] = true\n    // future-lexicon\n    lexicon[w] = 'Abbreviation'\n    if (a[1] !== undefined) {\n      lexicon[w] = [lexicon[w], a[1]]\n    }\n  })\n})\n\nexport { lexicon, abbreviations }\n"
  },
  {
    "path": "src/1-one/tokenize/model/prefixes.js",
    "content": "// dashed prefixes that are not independent words\n//  'mid-century', 'pre-history'\nexport default [\n  'anti',\n  'bi',\n  'co',\n  'contra',\n  'de',\n  'extra',\n  'infra',\n  'inter',\n  'intra',\n  'macro',\n  'micro',\n  'mis',\n  'mono',\n  'multi',\n  'peri',\n  'pre',\n  'pro',\n  'proto',\n  'pseudo',\n  're',\n  'sub',\n  'supra',\n  'trans',\n  'tri',\n  'un',\n  'out', //out-lived\n  'ex',//ex-wife\n\n  // 'counter',\n  // 'mid',\n  // 'out',\n  // 'non',\n  // 'over',\n  // 'post',\n  // 'semi',\n  // 'super', //'super-cool'\n  // 'ultra', //'ulta-cool'\n  // 'under',\n  // 'whole',\n].reduce((h, str) => {\n  h[str] = true\n  return h\n}, {})"
  },
  {
    "path": "src/1-one/tokenize/model/punctuation.js",
    "content": "// https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp?a=%5Cp%7Bpunctuation%7D\n\n// punctuation to keep at start of word\nconst prePunctuation = {\n  '#': true, //#hastag\n  '@': true, //@atmention\n  '_': true,//underscore\n  '°': true,\n  // '+': true,//+4\n  // '\\\\-',//-4  (escape)\n  // '.',//.4\n  // zero-width chars\n  '\\u200B': true,\n  '\\u200C': true,\n  '\\u200D': true,\n  '\\uFEFF': true\n}\n\n// punctuation to keep at end of word\nconst postPunctuation = {\n  '%': true,//88%\n  '_': true,//underscore\n  '°': true,//degrees, italian ordinal\n  // '\\'',// sometimes\n  // zero-width chars\n  '\\u200B': true,\n  '\\u200C': true,\n  '\\u200D': true,\n  '\\uFEFF': true\n}\n\nconst emoticons = {\n  '<3': true,\n  '</3': true,\n  '<\\\\3': true,\n  ':^P': true,\n  ':^p': true,\n  ':^O': true,\n  ':^3': true,\n}\n\nexport { prePunctuation, postPunctuation, emoticons }"
  },
  {
    "path": "src/1-one/tokenize/model/suffixes.js",
    "content": "// dashed suffixes that are not independent words\n//  'flower-like', 'president-elect'\nexport default {\n  'like': true,\n  'ish': true,\n  'less': true,\n  'able': true,\n  'elect': true,\n  'type': true,\n  'designate': true,\n  // 'fold':true,\n}"
  },
  {
    "path": "src/1-one/tokenize/model/unicode.js",
    "content": "//a hugely-ignorant, and widely subjective transliteration of latin, cryllic, greek unicode characters to english ascii.\n//approximate visual (not semantic or phonetic) relationship between unicode and ascii characters\n//http://en.wikipedia.org/wiki/List_of_Unicode_characters\n//https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E\nconst compact = {\n  '!': '¡',\n  '?': '¿Ɂ',\n  '\"': '“”\"❝❞',\n  \"'\": '‘‛❛❜’',\n  '-': '—–',\n  a: 'ªÀÁÂÃÄÅàáâãäåĀāĂăĄąǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАаѦѧӐӑӒӓƛæ',\n  b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ',\n  c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼϲϹϽϾСсєҀҁҪҫ',\n  d: 'ÐĎďĐđƉƊȡƋƌ',\n  e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƐȄȅȆȇȨȩɆɇΈΕΞΣέεξϵЀЁЕеѐёҼҽҾҿӖӗễ',\n  f: 'ƑƒϜϝӺӻҒғſ',\n  g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ',\n  h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ',\n  I: 'ÌÍÎÏ',\n  i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇіїi̇',\n  j: 'ĴĵǰȷɈɉϳЈј',\n  k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ',\n  l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ',\n  m: 'ΜϺϻМмӍӎ',\n  n: 'ÑñŃńŅņŇňŉŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ',\n  o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϴОФоѲѳӦӧӨөӪӫ',\n  p: 'ƤΡρϷϸϼРрҎҏÞ',\n  q: 'Ɋɋ',\n  r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ',\n  s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ',\n  t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт',\n  u: 'ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰυϋύ',\n  v: 'νѴѵѶѷ',\n  w: 'ŴŵƜωώϖϢϣШЩшщѡѿ',\n  x: '×ΧχϗϰХхҲҳӼӽӾӿ',\n  y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ',\n  z: 'ŹźŻżŽžƵƶȤȥɀΖ',\n}\n//decompress data into two hashes\nconst unicode = {}\nObject.keys(compact).forEach(function (k) {\n  compact[k].split('').forEach(function (s) {\n    unicode[s] = k\n  })\n})\nexport default unicode\n"
  },
  {
    "path": "src/1-one/tokenize/plugin.js",
    "content": "import methods from './methods/index.js'\nimport model from './model/index.js'\nimport compute from './compute/index.js'\n\nexport default {\n  compute,\n  methods,\n  model,\n  hooks: ['alias', 'machine', 'index', 'id'],\n}\n\n// const plugin = function (world) {\n//   let { methods, model, parsers } = world\n//   Object.assign({}, methods, _methods)\n//   Object.assign(model, _model)\n//   methods.one.tokenize.fromString = tokenize\n//   parsers.push('normal')\n//   parsers.push('alias')\n//   parsers.push('machine')\n//   // extend View class\n//   // addMethods(View)\n// }\n// export default plugin\n"
  },
  {
    "path": "src/1-one/typeahead/api.js",
    "content": "// assume any discovered prefixes\nconst autoFill = function () {\n  const docs = this.docs\n  if (docs.length === 0) {\n    return this\n  }\n  const lastPhrase = docs[docs.length - 1] || []\n  const term = lastPhrase[lastPhrase.length - 1]\n  if (term.typeahead === true && term.machine) {\n    term.text = term.machine\n    term.normal = term.machine\n  }\n  return this\n}\n\nconst api = function (View) {\n  View.prototype.autoFill = autoFill\n}\nexport default api"
  },
  {
    "path": "src/1-one/typeahead/compute.js",
    "content": "// lookup last word in the type-ahead prefixes\nconst typeahead = function (view) {\n  const prefixes = view.model.one.typeahead\n  const docs = view.docs\n  if (docs.length === 0 || Object.keys(prefixes).length === 0) {\n    return\n  }\n  const lastPhrase = docs[docs.length - 1] || []\n  const lastTerm = lastPhrase[lastPhrase.length - 1]\n  // if we've already put whitespace, end.\n  if (lastTerm.post) {\n    return\n  }\n  // if we found something\n  if (prefixes.hasOwnProperty(lastTerm.normal)) {\n    const found = prefixes[lastTerm.normal]\n    // add full-word as an implicit result\n    lastTerm.implicit = found\n    lastTerm.machine = found\n    lastTerm.typeahead = true\n    // tag it, as our assumed term\n    if (view.compute.preTagger) {\n      view.last().unTag('*').compute(['lexicon', 'preTagger'])\n    }\n  }\n}\n\nexport default { typeahead }\n"
  },
  {
    "path": "src/1-one/typeahead/lib/allPrefixes.js",
    "content": "// generate all the possible prefixes up-front\nconst getPrefixes = function (arr, opts, world) {\n  let index = {}\n  const collisions = []\n  const existing = world.prefixes || {}\n  arr.forEach((str) => {\n    str = str.toLowerCase().trim()\n    let max = str.length\n    if (opts.max && max > opts.max) {\n      max = opts.max\n    }\n    for (let size = opts.min; size < max; size += 1) {\n      const prefix = str.substring(0, size)\n      // ensure prefix is not a word\n      if (opts.safe && world.model.one.lexicon.hasOwnProperty(prefix)) {\n        continue\n      }\n      // does it already exist?\n      if (existing.hasOwnProperty(prefix) === true) {\n        collisions.push(prefix)\n        continue\n      }\n      if (index.hasOwnProperty(prefix) === true) {\n        collisions.push(prefix)\n        continue\n      }\n      index[prefix] = str\n    }\n  })\n  // merge with existing prefixes\n  index = Object.assign({}, existing, index)\n  // remove ambiguous-prefixes\n  collisions.forEach((str) => {\n    delete index[str]\n  })\n  return index\n}\n\nexport default getPrefixes\n"
  },
  {
    "path": "src/1-one/typeahead/lib/index.js",
    "content": "import allPrefixes from './allPrefixes.js'\n\nconst isObject = val => {\n  return Object.prototype.toString.call(val) === '[object Object]'\n}\n\nconst defaults = {\n  safe: true,\n  min: 3,\n}\n\nconst prepare = function (words = [], opts = {}) {\n  const model = this.model()\n  opts = Object.assign({}, defaults, opts)\n  if (isObject(words)) {\n    Object.assign(model.one.lexicon, words)\n    words = Object.keys(words)\n  }\n  const prefixes = allPrefixes(words, opts, this.world())\n  // manually combine these with any existing prefixes\n  Object.keys(prefixes).forEach(str => {\n    // explode any overlaps\n    if (model.one.typeahead.hasOwnProperty(str)) {\n      delete model.one.typeahead[str]\n      return\n    }\n    model.one.typeahead[str] = prefixes[str]\n  })\n  return this\n}\n\nexport default {\n  typeahead: prepare\n}"
  },
  {
    "path": "src/1-one/typeahead/plugin.js",
    "content": "import compute from './compute.js'\nimport api from './api.js'\nimport lib from './lib/index.js'\n\nconst model = {\n  one: {\n    typeahead: {} //set a blank key-val\n  }\n}\nexport default {\n  model,\n  api,\n  lib,\n  compute,\n  hooks: ['typeahead']\n}\n\n"
  },
  {
    "path": "src/2-two/contraction-two/api/contract.js",
    "content": "const postPunct = /[,)\"';:\\-–—.…]/\n\nconst setContraction = function (m, suffix) {\n  if (!m.found) {\n    return\n  }\n  const terms = m.termList()\n  //avoid any problematic punctuation\n  for (let i = 0; i < terms.length - 1; i++) {\n    const t = terms[i]\n    if (postPunct.test(t.post)) {\n      return\n    }\n  }\n  // set first word as full text\n  terms[0].implicit = terms[0].normal\n  terms[0].text += suffix\n  terms[0].normal += suffix\n  // clean-up the others\n  terms.slice(1).forEach(t => {\n    t.implicit = t.normal\n    t.text = ''\n    t.normal = ''\n  })\n  for (let i = 0; i < terms.length - 1; i++) {\n    terms[i].post = terms[i].post.replace(/ /, '')\n  }\n}\n\n/** turn 'i am' into i'm */\nconst contract = function () {\n  const doc = this.not('@hasContraction')\n  // we are -> we're\n  let m = doc.match('(we|they|you) are')\n  setContraction(m, `'re`)\n  // they will -> they'll\n  m = doc.match('(he|she|they|it|we|you) will')\n  setContraction(m, `'ll`)\n  // she is -> she's\n  m = doc.match('(he|she|they|it|we) is')\n  setContraction(m, `'s`)\n  // spencer is -> spencer's\n  m = doc.match('#Person is')\n  setContraction(m, `'s`)\n  // spencer would -> spencer'd\n  m = doc.match('#Person would')\n  setContraction(m, `'d`)\n  // would not -> wouldn't\n  m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not')\n  setContraction(m, `n't`)\n  // i have -> i've\n  m = doc.match('(i|we|they) have')\n  setContraction(m, `'ve`)\n  // would have -> would've\n  m = doc.match('(would|should|could) have')\n  setContraction(m, `'ve`)\n  // i am -> i'm\n  m = doc.match('i am')\n  setContraction(m, `'m`)\n  // going to -> gonna\n  m = doc.match('going to')\n  return this\n}\nexport default contract\n"
  },
  {
    "path": "src/2-two/contraction-two/api/index.js",
    "content": "const titleCase = /^\\p{Lu}[\\p{Ll}'’]/u //upercase, then lowercase\nimport contract from './contract.js'\n\nconst toTitleCase = function (str = '') {\n  str = str.replace(/^ *[a-z\\u00C0-\\u00FF]/, x => x.toUpperCase()) //TODO: support unicode\n  return str\n}\n\nconst api = function (View) {\n  /** */\n  class Contractions extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Contraction'\n    }\n    /** i've -> 'i have' */\n    expand() {\n      this.docs.forEach(terms => {\n        const isTitleCase = titleCase.test(terms[0].text)\n        terms.forEach((t, i) => {\n          t.text = t.implicit || ''\n          delete t.implicit\n          //add whitespace\n          if (i < terms.length - 1 && t.post === '') {\n            t.post += ' '\n          }\n          // flag it as dirty\n          t.dirty = true\n        })\n        // make the first word title-case?\n        if (isTitleCase) {\n          terms[0].text = toTitleCase(terms[0].text)\n        }\n      })\n      this.compute('normal') //re-set normalized text\n      return this\n    }\n  }\n  // add fn to View\n  View.prototype.contractions = function () {\n    const m = this.match('@hasContraction+')\n    return new Contractions(this.document, m.pointer)\n  }\n  View.prototype.contract = contract\n}\n\nexport default api\n"
  },
  {
    "path": "src/2-two/contraction-two/compute/_splice.js",
    "content": "// put n new words where 1 word was\nconst insertContraction = function (document, point, words) {\n  const [n, w] = point\n  if (!words || words.length === 0) {\n    return\n  }\n  words = words.map((word, i) => {\n    word.implicit = word.text\n    word.machine = word.text\n    word.pre = ''\n    word.post = ''\n    word.text = ''\n    word.normal = ''\n    word.index = [n, w + i]\n    return word\n  })\n  if (words[0]) {\n    // move whitespace over\n    words[0].pre = document[n][w].pre\n    words[words.length - 1].post = document[n][w].post\n    // add the text/normal to the first term\n    words[0].text = document[n][w].text\n    words[0].normal = document[n][w].normal // move tags too?\n  }\n  // do the splice\n  document[n].splice(w, 1, ...words)\n}\nexport default insertContraction\n"
  },
  {
    "path": "src/2-two/contraction-two/compute/apostrophe-d.js",
    "content": "const hasContraction = /'/\n\nconst hadWords = new Set([\n  'better', //had better\n  'done', //had done\n  'before', // he'd _ before\n  'it', // he'd _ it\n  'had', //she'd had -> she would have..\n])\n\nconst wouldWords = new Set([\n  'have', // 'i'd have' -> i would have..\n  'be', //' she'd be'\n])\n\n//look for a past-tense verb\n// You'd mentioned -> you had mentioned\n// You'd mention -> you would mention\nconst hadOrWould = (terms, i) => {\n  // scan ahead\n  for (let o = i + 1; o < terms.length; o += 1) {\n    const t = terms[o]\n    // you'd better go\n    if (hadWords.has(t.normal)) {\n      return 'had'\n    }\n    // we'd have\n    if (wouldWords.has(t.normal)) {\n      return 'would'\n    }\n    // You'd mentioned -> you had mentioned\n    if (t.tags.has('PastTense') || t.switch === 'Adj|Past') {\n      return 'had'\n    }\n    // You'd mention -> you would mention\n    if (t.tags.has('PresentTense') || t.tags.has('Infinitive')) {\n      return 'would'\n    }\n    // i'd an issue\n    if (t.tags.has('#Determiner')) {\n      return 'had'\n    }\n    if (t.tags.has('Adjective')) {\n      return 'would'\n    }\n  }\n  return false\n}\n\n// he'd walked -> had\n// how'd -> did\n// he'd go -> would\nconst _apostropheD = function (terms, i) {\n  const before = terms[i].normal.split(hasContraction)[0]\n  // what'd, how'd\n  if (before === 'how' || before === 'what') {\n    return [before, 'did']\n  }\n  if (hadOrWould(terms, i) === 'had') {\n    return [before, 'had']\n  }\n  // had/would/did\n  return [before, 'would']\n}\nexport default _apostropheD\n"
  },
  {
    "path": "src/2-two/contraction-two/compute/apostrophe-s.js",
    "content": "const hasContraction = /'/\n\nconst hasWords = new Set([\n  'been', //the meeting's been ..\n  'become', //my son's become\n])\nconst isWords = new Set([\n  'what', //it's what\n  'how', //it's how\n  'when',\n  'if', //it's if\n  'too',\n])\nconst adjLike = new Set(['too', 'also', 'enough'])\n\n// the big clue is the tense of the following verb\nconst isOrHas = (terms, i) => {\n  // scan ahead for the next verb or adjective\n  for (let o = i + 1; o < terms.length; o += 1) {\n    const t = terms[o]\n    if (hasWords.has(t.normal)) {\n      return 'has'\n    }\n    if (isWords.has(t.normal)) {\n      return 'is'\n    }\n    // the cat's sleeping\n    if (t.tags.has('Gerund')) {\n      return 'is'\n    }\n    // she's the one\n    if (t.tags.has('Determiner')) {\n      return 'is'\n    }\n    // the food's ready\n    if (t.tags.has('Adjective')) {\n      return 'is'\n    }\n    // the car's parked\n    if (t.switch === 'Adj|Past') {\n      if (terms[o + 1]) {\n        // car's parked too ..\n        if (adjLike.has(terms[o + 1].normal)) {\n          return 'is'\n        }\n        // car's parked on ..\n        if (terms[o + 1].tags.has('Preposition')) {\n          return 'is'\n        }\n      }\n      // return 'is'\n    }\n    // The meeting's scheduled vs The plane's landed\n    if (t.tags.has('PastTense')) {\n      // meeting's scheduled for\n      if (terms[o + 1] && terms[o + 1].normal === 'for') {\n        return 'is'\n      }\n      return 'has'\n    }\n  }\n  return 'is'\n}\n\n// 's -> [possessive, 'has', 'is', 'are', 'us']\nconst apostropheS = function (terms, i) {\n  // possessive, is/has\n  const before = terms[i].normal.split(hasContraction)[0]\n  // let's - >[let, us]\n  if (before === 'let') {\n    return [before, 'us']\n  }\n  // allow slang \"there's cookies\" -> there are\n  if (before === 'there') {\n    const t = terms[i + 1]\n    if (t && t.tags.has('Plural')) {\n      return [before, 'are']\n    }\n  }\n  // spencer's got -> spencer has got\n  if (isOrHas(terms, i) === 'has') {\n    return [before, 'has']\n  }\n  return [before, 'is']\n}\nexport default apostropheS\n"
  },
  {
    "path": "src/2-two/contraction-two/compute/apostrophe-t.js",
    "content": "const lastNoun = function (terms, i) {\n  for (let n = i - 1; n >= 0; n -= 1) {\n    if (\n      terms[n].tags.has('Noun') ||\n      terms[n].tags.has('Pronoun') ||\n      terms[n].tags.has('Plural') ||\n      terms[n].tags.has('Singular')\n    ) {\n      return terms[n]\n    }\n  }\n  return null\n}\n\n//ain't -> are/is not\nconst apostropheT = function (terms, i) {\n  if (terms[i].normal === \"ain't\" || terms[i].normal === 'aint') {\n    // \"ain't never\" -> have never (?)\n    if (terms[i + 1] && terms[i + 1].normal === 'never') {\n      return ['have']\n    }\n    // we aint -> are not,   she aint -> is not\n    const noun = lastNoun(terms, i)\n    if (noun) {\n      // plural/singular pronouns\n      if (noun.normal === 'we' || noun.normal === 'they') {\n        return ['are', 'not']\n      }\n      if (noun.normal === 'i') {\n        return ['am', 'not']\n      }\n      // plural/singular tags\n      if (noun.tags && noun.tags.has('Plural')) {\n        return ['are', 'not']\n      }\n    }\n    return ['is', 'not']\n  }\n  const before = terms[i].normal.replace(/n't/, '')\n  return [before, 'not']\n}\n\nexport default apostropheT\n"
  },
  {
    "path": "src/2-two/contraction-two/compute/index.js",
    "content": "import splice from './_splice.js'\nimport apostropheS from './apostrophe-s.js'\nimport apostropheD from './apostrophe-d.js'\nimport apostropheT from './apostrophe-t.js'\nimport isPossessive from './isPossessive.js'\n\nconst byApostrophe = /'/\n\n// poor-mans reindexing of this sentence only\nconst reIndex = function (terms) {\n  terms.forEach((t, i) => {\n    if (t.index) {\n      t.index[1] = i\n    }\n  })\n}\n\n// run tagger on our new implicit terms\nconst reTag = function (terms, view, start, len) {\n  const tmp = view.update()\n  tmp.document = [terms]\n  // offer to re-tag neighbours, too\n  let end = start + len\n  if (start > 0) {\n    start -= 1\n  }\n  if (terms[end]) {\n    end += 1\n  }\n  tmp.ptrs = [[0, start, end]]\n  tmp.compute(['freeze', 'lexicon', 'preTagger', 'unfreeze'])\n  // don't for a reindex of the whole document\n  reIndex(terms)\n}\n\nconst byEnd = {\n  // how'd\n  d: (terms, i) => apostropheD(terms, i),\n  // we ain't\n  t: (terms, i) => apostropheT(terms, i),\n  // bob's\n  s: (terms, i, world) => {\n    // [bob's house] vs [bob's cool]\n    if (isPossessive(terms, i)) {\n      return world.methods.one.setTag([terms[i]], 'Possessive', world, null, '2-contraction')\n    }\n    return apostropheS(terms, i)\n  },\n}\n\nconst toDocs = function (words, view) {\n  const doc = view.fromText(words.join(' '))\n  doc.compute('id')\n  return doc.docs[0]\n}\n\n//really easy ones\nconst contractionTwo = view => {\n  const { world, document } = view\n  // each sentence\n  document.forEach((terms, n) => {\n    // loop through terms backwards\n    for (let i = terms.length - 1; i >= 0; i -= 1) {\n      // is it already a contraction\n      if (terms[i].implicit) {\n        continue\n      }\n      let after = null\n      if (byApostrophe.test(terms[i].normal) === true) {\n        after = terms[i].normal.split(byApostrophe)[1]\n      }\n      let words = null\n      // any known-ones, like 'dunno'?\n      if (byEnd.hasOwnProperty(after)) {\n        words = byEnd[after](terms, i, world)\n      }\n      // actually insert the new terms\n      if (words) {\n        words = toDocs(words, view)\n        splice(document, [n, i], words)\n        reTag(document[n], view, i, words.length)\n        continue\n      }\n    }\n  })\n}\nexport default { contractionTwo }\n"
  },
  {
    "path": "src/2-two/contraction-two/compute/isPossessive.js",
    "content": "const banList = {\n  that: true,\n  there: true,\n  let: true,\n  here: true,\n  everywhere: true,\n}\n\nconst beforePossessive = {\n  in: true, //in sunday's\n  by: true, //by sunday's\n  for: true, //for sunday's\n}\nconst adjLike = new Set(['too', 'also', 'enough', 'about'])\nconst nounLike = new Set(['is', 'are', 'did', 'were', 'could', 'should', 'must', 'had', 'have'])\n\nconst isPossessive = (terms, i) => {\n  const term = terms[i]\n  // these can't be possessive\n  if (banList.hasOwnProperty(term.machine || term.normal)) {\n    return false\n  }\n  // if we already know it\n  if (term.tags.has('Possessive')) {\n    return true\n  }\n  // who's\n  if (term.tags.has('QuestionWord')) {\n    return false\n  }\n  // some pronouns are never possessive\n  if (term.normal === `he's` || term.normal === `she's`) {\n    return false\n  }\n  //if end of sentence, it is possessive - \"was spencer's\"\n  const nextTerm = terms[i + 1]\n  if (!nextTerm) {\n    return true\n  }\n  // \"it's a life\" vs \"run it's business\"\n  if (term.normal === `it's`) {\n    if (nextTerm.tags.has('#Noun')) {\n      return true\n    }\n    return false\n  }\n  // the sun's setting vs the artist's painting\n  // gerund = is,  noun = possessive\n  // (we are doing some dupe-work of the switch classifier here)\n  if (nextTerm.switch == 'Noun|Gerund') {\n    const next2 = terms[i + 2]\n    // the artist's painting.\n    if (!next2) {\n      if (term.tags.has('Actor') || term.tags.has('ProperNoun')) {\n        return true\n      }\n      return false\n    }\n    // the artist's painting is..\n    if (next2.tags.has('Copula')) {\n      return true\n    }\n    // the cat's sleeping on ..\n    if (next2.normal === 'on' || next2.normal === 'in') {\n      return false\n    }\n    return false\n  }\n  //a gerund suggests 'is walking'\n  if (nextTerm.tags.has('Verb')) {\n    //fix 'jamie's bite'\n    if (nextTerm.tags.has('Infinitive')) {\n      return true\n    }\n    //'jamaica's growing'\n    if (nextTerm.tags.has('Gerund')) {\n      return false\n    }\n    //fix 'spencer's runs'\n    if (nextTerm.tags.has('PresentTense')) {\n      return true\n    }\n    return false\n  }\n\n  // john's nuts\n  if (nextTerm.switch === 'Adj|Noun') {\n    const twoTerm = terms[i + 2]\n    if (!twoTerm) {\n      return false //adj\n    }\n    // john's nuts were..\n    if (nounLike.has(twoTerm.normal)) {\n      return true\n    }\n    // john's nuts about..\n    if (adjLike.has(twoTerm.normal)) {\n      return false //adj\n    }\n  }\n  //spencer's house\n  if (nextTerm.tags.has('Noun')) {\n    const nextStr = nextTerm.machine || nextTerm.normal\n    // 'spencer's here'\n    if (nextStr === 'here' || nextStr === 'there' || nextStr === 'everywhere') {\n      return false\n    }\n    // the chair's his\n    if (nextTerm.tags.has('Possessive')) {\n      return false\n    }\n    // the captain's John\n    if (nextTerm.tags.has('ProperNoun') && !term.tags.has('ProperNoun')) {\n      return false\n    }\n    return true\n  }\n\n  // by sunday's final\n  if (terms[i - 1] && beforePossessive[terms[i - 1].normal] === true) {\n    return true\n  }\n\n  // spencer's tired\n  if (nextTerm.tags.has('Adjective')) {\n    const twoTerm = terms[i + 2]\n    //the rocket's red\n    if (!twoTerm) {\n      return false\n    }\n    // rocket's red nozzle\n    if (twoTerm.tags.has('Noun') && !twoTerm.tags.has('Pronoun')) {\n      //project's behind schedule\n      const str = nextTerm.normal\n      if (str === 'above' || str === 'below' || str === 'behind') {\n        return false\n      }\n      return true\n    }\n    // rocket's red glare\n    if (twoTerm.switch === 'Noun|Verb') {\n      return true\n    }\n    //othwerwise, an adjective suggests 'is good'\n    return false\n  }\n  // baby's first steps\n  if (nextTerm.tags.has('Value')) {\n    return true\n  }\n  // otherwise not possessive\n  return false\n}\nexport default isPossessive\n"
  },
  {
    "path": "src/2-two/contraction-two/plugin.js",
    "content": "import api from './api/index.js'\nimport compute from './compute/index.js'\n\nexport default {\n  compute,\n  api,\n  hooks: ['contractionTwo']\n}"
  },
  {
    "path": "src/2-two/lazy/lazyParse.js",
    "content": "import maybeMatch from './maybeMatch.js'\n\n// tokenize first, then only tag sentences required\nconst lazyParse = function (input, reg) {\n  let net = reg\n  if (typeof reg === 'string') {\n    net = this.buildNet([{ match: reg }])\n  }\n  const doc = this.tokenize(input)\n  const m = maybeMatch(doc, net)\n  if (m.found) {\n    m.compute(['index', 'tagger'])\n    return m.match(reg)\n  }\n  return doc.none()\n}\nexport default lazyParse"
  },
  {
    "path": "src/2-two/lazy/maybeMatch.js",
    "content": "const getWords = function (net) {\n  return Object.keys(net.hooks).filter(w => !w.startsWith('#') && !w.startsWith('%'))\n}\n\nconst maybeMatch = function (doc, net) {\n  // must have *atleast* one of these words\n  const words = getWords(net)\n  if (words.length === 0) {\n    return doc\n  }\n  if (!doc._cache) {\n    doc.cache()\n  }\n  const cache = doc._cache\n  // return sentences that have one of our needed words\n  return doc.filter((_m, i) => {\n    return words.some(str => cache[i].has(str))\n  })\n}\nexport default maybeMatch"
  },
  {
    "path": "src/2-two/lazy/plugin.js",
    "content": "import lazy from './lazyParse.js'\n\nexport default {\n  lib: {\n    lazy\n  }\n}"
  },
  {
    "path": "src/2-two/postTagger/api.js",
    "content": "const round = n => Math.round(n * 100) / 100\n\nexport default function (View) {\n  // average tagger score\n  View.prototype.confidence = function () {\n    let sum = 0\n    let count = 0\n    this.docs.forEach(terms => {\n      terms.forEach(term => {\n        count += 1\n        sum += term.confidence || 1\n      })\n    })\n    if (count === 0) {\n      return 1\n    }\n    return round(sum / count)\n  }\n\n  // (re-) run the POS-tagger\n  View.prototype.tagger = function () {\n    return this.compute(['tagger'])\n  }\n}"
  },
  {
    "path": "src/2-two/postTagger/compute/index.js",
    "content": "let net = null\n\n// runs all match/tag patterns in model.two.matches\nconst postTagger = function (view) {\n  const { world } = view\n  const { model, methods } = world\n  net = net || methods.one.buildNet(model.two.matches, world)\n  // perform these matches on a comma-seperated document\n  const document = methods.two.quickSplit(view.document)\n  const ptrs = document.map(terms => {\n    const t = terms[0]\n    return [t.index[0], t.index[1], t.index[1] + terms.length]\n  })\n  const m = view.update(ptrs)\n  m.cache()\n  m.sweep(net)\n  view.uncache()\n  view.unfreeze()\n  return view\n}\n\n// helper function for compute('tagger')\nconst tagger = view => view.compute(['freeze', 'lexicon', 'preTagger', 'postTagger', 'unfreeze'])\n\nexport default { postTagger, tagger }\n"
  },
  {
    "path": "src/2-two/postTagger/model/_misc.js",
    "content": "// order matters\nconst matches = [\n  // u r cool\n  { match: 'u r', tag: '#Pronoun #Copula', reason: 'u r' },\n  { match: '#Noun [(who|whom)]', group: 0, tag: 'Determiner', reason: 'captain-who' },\n\n  // ==== Conditions ====\n  // had he survived,\n  { match: '[had] #Noun+ #PastTense', group: 0, tag: 'Condition', reason: 'had-he' },\n  // were he to survive\n  { match: '[were] #Noun+ to #Infinitive', group: 0, tag: 'Condition', reason: 'were-he' },\n\n  // some sort of\n  { match: 'some sort of', tag: 'Adjective Noun Conjunction', reason: 'some-sort-of' },\n  // some of\n  // { match: 'some of', tag: 'Noun Conjunction', reason: 'some-of' },\n  // of some sort\n  { match: 'of some sort', tag: 'Conjunction Adjective Noun', reason: 'of-some-sort' },\n  // such skill\n  { match: '[such] (a|an|is)? #Noun', group: 0, tag: 'Determiner', reason: 'such-skill' },\n  // another one\n  // { match: '[another] (#Noun|#Value)', group: 0, tag: 'Adjective', reason: 'another-one' },\n  // right after\n  { match: '[right] (before|after|in|into|to|toward)', group: 0, tag: '#Adverb', reason: 'right-into' },\n  // at about\n  { match: '#Preposition [about]', group: 0, tag: 'Adjective', reason: 'at-about' },\n  // are ya\n  { match: '(are|#Modal|see|do|for) [ya]', group: 0, tag: 'Pronoun', reason: 'are-ya' },\n  // long live\n  { match: '[long live] .', group: 0, tag: '#Adjective #Infinitive', reason: 'long-live' },\n  // plenty of\n  { match: '[plenty] of', group: 0, tag: '#Uncountable', reason: 'plenty-of' },\n  // 'there' as adjective\n  { match: '(always|nearly|barely|practically) [there]', group: 0, tag: 'Adjective', reason: 'always-there' },\n  // existential 'there'\n  // there she is\n  { match: '[there] (#Adverb|#Pronoun)? #Copula', group: 0, tag: 'There', reason: 'there-is' },\n  // is there food\n  { match: '#Copula [there] .', group: 0, tag: 'There', reason: 'is-there' },\n  // should there\n  { match: '#Modal #Adverb? [there]', group: 0, tag: 'There', reason: 'should-there' },\n  // do you\n  { match: '^[do] (you|we|they)', group: 0, tag: 'QuestionWord', reason: 'do-you' },\n  // does he\n  { match: '^[does] (he|she|it|#ProperNoun)', group: 0, tag: 'QuestionWord', reason: 'does-he' },\n  // the person who\n  { match: '#Determiner #Noun+ [who] #Verb', group: 0, tag: 'Preposition', reason: 'the-x-who' },\n  // the person which\n  { match: '#Determiner #Noun+ [which] #Verb', group: 0, tag: 'Preposition', reason: 'the-x-which' },\n  // a while\n  { match: 'a [while]', group: 0, tag: 'Noun', reason: 'a-while' },\n  // guess who\n  { match: 'guess who', tag: '#Infinitive #QuestionWord', reason: 'guess-who' },\n  // swear words\n  { match: '[fucking] !#Verb', group: 0, tag: '#Gerund', reason: 'f-as-gerund' },\n]\nexport default matches\n"
  },
  {
    "path": "src/2-two/postTagger/model/adjective/adj-adverb.js",
    "content": "const adverbAdj = `(dark|bright|flat|light|soft|pale|dead|dim|faux|little|wee|sheer|most|near|good|extra|all)`\nconst noLy = '(hard|fast|late|early|high|right|deep|close|direct)'\n\nexport default [\n  // kinda sparkly\n  { match: `#Adverb [#Adverb] (and|or|then)`, group: 0, tag: 'Adjective', reason: 'kinda-sparkly-and' },\n  // dark green\n  { match: `[${adverbAdj}] #Adjective`, group: 0, tag: 'Adverb', reason: 'dark-green' },\n  // far too\n  { match: `#Copula [far too] #Adjective`, group: 0, tag: 'Adverb', reason: 'far-too' },\n  // was still in\n  { match: `#Copula [still] (in|#Gerund|#Adjective)`, group: 0, tag: 'Adverb', reason: 'was-still-walking' },\n  // studies hard\n  { match: `#Plural ${noLy}`, tag: '#PresentTense #Adverb', reason: 'studies-hard' },\n  // shops direct\n  {\n    match: `#Verb [${noLy}] !#Noun?`,\n    group: 0,\n    notIf: '(#Copula|get|got|getting|become|became|becoming|feel|feels|feeling|#Determiner|#Preposition)',\n    tag: 'Adverb',\n    reason: 'shops-direct',\n  },\n  // studies a lot\n  { match: `[#Plural] a lot`, tag: 'PresentTense', reason: 'studies-a-lot' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/adjective/adj-gerund.js",
    "content": "// Gerund-Adjectives - 'amusing, annoying'\nexport default [\n  //a staggering cost\n  // { match: '(a|an) [#Gerund]', group: 0, tag: 'Adjective', reason: 'a|an' },\n  //as amusing as\n  { match: 'as [#Gerund] as', group: 0, tag: 'Adjective', reason: 'as-gerund-as' },\n  // more amusing than\n  { match: 'more [#Gerund] than', group: 0, tag: 'Adjective', reason: 'more-gerund-than' },\n  // very amusing\n  { match: '(so|very|extremely) [#Gerund]', group: 0, tag: 'Adjective', reason: 'so-gerund' },\n  // found it amusing\n  { match: '(found|found) it #Adverb? [#Gerund]', group: 0, tag: 'Adjective', reason: 'found-it-gerund' },\n  // a bit amusing\n  { match: 'a (little|bit|wee) bit? [#Gerund]', group: 0, tag: 'Adjective', reason: 'a-bit-gerund' },\n  // looking annoying\n  {\n    match: '#Gerund [#Gerund]',\n    group: 0,\n    tag: 'Adjective',\n    notIf: '(impersonating|practicing|considering|assuming)',\n    reason: 'looking-annoying',\n  },\n  // looked amazing\n  {\n    match: '(looked|look|looks) #Adverb? [%Adj|Gerund%]',\n    group: 0,\n    tag: 'Adjective',\n    notIf: '(impersonating|practicing|considering|assuming)',\n    reason: 'looked-amazing',\n  },\n  // were really amazing\n  // { match: '(looked|look|looks) #Adverb [%Adj|Gerund%]', group: 0, tag: 'Adjective', notIf: '(impersonating|practicing|considering|assuming)', reason: 'looked-amazing' },\n  // developing a\n  { match: '[%Adj|Gerund%] #Determiner', group: 0, tag: 'Gerund', reason: 'developing-a' },\n  // world's leading manufacturer\n  { match: '#Possessive [%Adj|Gerund%] #Noun', group: 0, tag: 'Adjective', reason: 'leading-manufacturer' },\n  // meaning alluring\n  { match: '%Noun|Gerund% %Adj|Gerund%', tag: 'Gerund #Adjective', reason: 'meaning-alluring' },\n\n  // face shocking revelations\n  {\n    match: '(face|embrace|reveal|stop|start|resume) %Adj|Gerund%',\n    tag: '#PresentTense #Adjective',\n    reason: 'face-shocking',\n  },\n  // are enduring symbols\n  { match: '(are|were) [%Adj|Gerund%] #Plural', group: 0, tag: 'Adjective', reason: 'are-enduring-symbols' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/adjective/adj-noun.js",
    "content": "export default [\n  //the above is clear\n  { match: '#Determiner [#Adjective] #Copula', group: 0, tag: 'Noun', reason: 'the-adj-is' },\n  //real evil is\n  { match: '#Adjective [#Adjective] #Copula', group: 0, tag: 'Noun', reason: 'adj-adj-is' },\n  //his fine\n  { match: '(his|its) [%Adj|Noun%]', group: 0, tag: 'Noun', notIf: '#Hyphenated', reason: 'his-fine' },\n  //is all\n  { match: '#Copula #Adverb? [all]', group: 0, tag: 'Noun', reason: 'is-all' },\n  // have fun\n  { match: `(have|had) [#Adjective] #Preposition .`, group: 0, tag: 'Noun', reason: 'have-fun' },\n  // brewing giant\n  { match: `#Gerund (giant|capital|center|zone|application)`, tag: 'Noun', reason: 'brewing-giant' },\n  // in an instant\n  { match: `#Preposition (a|an) [#Adjective]$`, group: 0, tag: 'Noun', reason: 'an-instant' },\n  // no golden would\n  { match: `no [#Adjective] #Modal`, group: 0, tag: 'Noun', reason: 'no-golden' },\n  // brand new\n  { match: `[brand #Gerund?] new`, group: 0, tag: 'Adverb', reason: 'brand-new' },\n  // some kind\n  { match: `(#Determiner|#Comparative|new|different) [kind]`, group: 0, tag: 'Noun', reason: 'some-kind' },\n  // her favourite sport\n  { match: `#Possessive [%Adj|Noun%] #Noun`, group: 0, tag: 'Adjective', reason: 'her-favourite' },\n  // must-win\n  { match: `must && #Hyphenated .`, tag: 'Adjective', reason: 'must-win' },\n  // the present\n  {\n    match: `#Determiner [#Adjective]$`,\n    tag: 'Noun',\n    notIf: '(this|that|#Comparative|#Superlative)',\n    reason: 'the-south',\n  }, //are that crazy.\n  // company-wide\n  {\n    match: `(#Noun && #Hyphenated) (#Adjective && #Hyphenated)`,\n    tag: 'Adjective',\n    notIf: '(this|that|#Comparative|#Superlative)',\n    reason: 'company-wide',\n  },\n  // the poor were\n  {\n    match: `#Determiner [#Adjective] (#Copula|#Determiner)`,\n    notIf: '(#Comparative|#Superlative)',\n    group: 0,\n    tag: 'Noun',\n    reason: 'the-poor',\n  },\n  // professional bodybuilder\n  {\n    match: `[%Adj|Noun%] #Noun`,\n    notIf: '(#Pronoun|#ProperNoun)',\n    group: 0,\n    tag: 'Adjective',\n    reason: 'stable-foundations',\n  },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/adjective/adj-verb.js",
    "content": "export default [\n  // amusing his aunt\n  // { match: '[#Adjective] #Possessive #Noun', group: 0, tag: 'Verb', reason: 'gerund-his-noun' },\n  // loving you\n  // { match: '[#Adjective] (us|you)', group: 0, tag: 'Gerund', reason: 'loving-you' },\n  // slowly stunning\n  { match: '(slowly|quickly) [#Adjective]', group: 0, tag: 'Verb', reason: 'slowly-adj' },\n  // does mean\n  { match: 'does (#Adverb|not)? [#Adjective]', group: 0, tag: 'PresentTense', reason: 'does-mean' },\n  // okay by me\n  { match: '[(fine|okay|cool|ok)] by me', group: 0, tag: 'Adjective', reason: 'okay-by-me' },\n  // i mean\n  { match: 'i (#Adverb|do)? not? [mean]', group: 0, tag: 'PresentTense', reason: 'i-mean' },\n  //will secure our\n  { match: 'will #Adjective', tag: 'Auxiliary Infinitive', reason: 'will-adj' },\n  //he disguised the thing\n  { match: '#Pronoun [#Adjective] #Determiner #Adjective? #Noun', group: 0, tag: 'Verb', reason: 'he-adj-the' },\n  //is eager to go\n  { match: '#Copula [%Adj|Present%] to #Verb', group: 0, tag: 'Verb', reason: 'adj-to' },\n  //is done well\n  { match: '#Copula [#Adjective] (well|badly|quickly|slowly)', group: 0, tag: 'Verb', reason: 'done-well' },\n  // rude and insulting\n  { match: '#Adjective and [#Gerund] !#Preposition?', group: 0, tag: 'Adjective', reason: 'rude-and-x' },\n  // were over cooked\n  { match: '#Copula #Adverb? (over|under) [#PastTense]', group: 0, tag: 'Adjective', reason: 'over-cooked' },\n  // was bland and overcooked\n  { match: '#Copula #Adjective+ (and|or) [#PastTense]$', group: 0, tag: 'Adjective', reason: 'bland-and-overcooked' },\n  // got tired of\n  { match: 'got #Adverb? [#PastTense] of', group: 0, tag: 'Adjective', reason: 'got-tired-of' },\n  //felt loved\n  {\n    match:\n      '(seem|seems|seemed|appear|appeared|appears|feel|feels|felt|sound|sounds|sounded) (#Adverb|#Adjective)? [#PastTense]',\n    group: 0,\n    tag: 'Adjective',\n    reason: 'felt-loved',\n  },\n  // seem confused\n  { match: '(seem|feel|seemed|felt) [#PastTense #Particle?]', group: 0, tag: 'Adjective', reason: 'seem-confused' },\n  // a bit confused\n  { match: 'a (bit|little|tad) [#PastTense #Particle?]', group: 0, tag: 'Adjective', reason: 'a-bit-confused' },\n  // do not be embarrassed\n  { match: 'not be [%Adj|Past% #Particle?]', group: 0, tag: 'Adjective', reason: 'do-not-be-confused' },\n  // is just right\n  { match: '#Copula just [%Adj|Past% #Particle?]', group: 0, tag: 'Adjective', reason: 'is-just-right' },\n  // as pale as\n  { match: 'as [#Infinitive] as', group: 0, tag: 'Adjective', reason: 'as-pale-as' },\n  //failed and oppressive\n  { match: '[%Adj|Past%] and #Adjective', group: 0, tag: 'Adjective', reason: 'faled-and-oppressive' },\n  // or heightened emotion\n  {\n    match: 'or [#PastTense] #Noun',\n    group: 0,\n    tag: 'Adjective',\n    notIf: '(#Copula|#Pronoun)',\n    reason: 'or-heightened-emotion',\n  },\n  // became involved\n  { match: '(become|became|becoming|becomes) [#Verb]', group: 0, tag: 'Adjective', reason: 'become-verb' },\n  // their declared intentions\n  { match: '#Possessive [#PastTense] #Noun', group: 0, tag: 'Adjective', reason: 'declared-intentions' },\n  // is he cool\n  { match: '#Copula #Pronoun [%Adj|Present%]', group: 0, tag: 'Adjective', reason: 'is-he-cool' },\n  // is crowded with\n  {\n    match: '#Copula [%Adj|Past%] with',\n    group: 0,\n    tag: 'Adjective',\n    notIf: '(associated|worn|baked|aged|armed|bound|fried|loaded|mixed|packed|pumped|filled|sealed)',\n    reason: 'is-crowded-with',\n  },\n  // is empty$\n  { match: '#Copula #Adverb? [%Adj|Present%]$', group: 0, tag: 'Adjective', reason: 'was-empty$' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/adjective/adjective.js",
    "content": "export default [\n  // all fell apart\n  { match: '[(all|both)] #Determiner #Noun', group: 0, tag: 'Noun', reason: 'all-noun' },\n  //sometimes not-adverbs\n  { match: '#Copula [(just|alone)]$', group: 0, tag: 'Adjective', reason: 'not-adverb' },\n  //jack is guarded\n  { match: '#Singular is #Adverb? [#PastTense$]', group: 0, tag: 'Adjective', reason: 'is-filled' },\n  // smoked poutine is\n  { match: '[#PastTense] #Singular is', group: 0, tag: 'Adjective', reason: 'smoked-poutine' },\n  // baked onions are\n  { match: '[#PastTense] #Plural are', group: 0, tag: 'Adjective', reason: 'baked-onions' },\n  // well made\n  { match: 'well [#PastTense]', group: 0, tag: 'Adjective', reason: 'well-made' },\n  // is f*ed up\n  { match: '#Copula [fucked up?]', group: 0, tag: 'Adjective', reason: 'swears-adjective' },\n  //jack seems guarded\n  { match: '#Singular (seems|appears) #Adverb? [#PastTense$]', group: 0, tag: 'Adjective', reason: 'seems-filled' },\n  // jury is out - preposition ➔ adjective\n  { match: '#Copula #Adjective? [(out|in|through)]$', group: 0, tag: 'Adjective', reason: 'still-out' },\n  // shut the door\n  { match: '^[#Adjective] (the|your) #Noun', group: 0, notIf: '(all|even)', tag: 'Infinitive', reason: 'shut-the' },\n  // the said card\n  { match: 'the [said] #Noun', group: 0, tag: 'Adjective', reason: 'the-said-card' },\n  // faith-based, much-appreciated, soft-boiled\n  { match: '[#Hyphenated (#Hyphenated && #PastTense)] (#Noun|#Conjunction)', group: 0, tag: 'Adjective', notIf: '#Adverb', reason: 'faith-based' },\n  //self-driving\n  { match: '[#Hyphenated (#Hyphenated && #Gerund)] (#Noun|#Conjunction)', group: 0, tag: 'Adjective', notIf: '#Adverb', reason: 'self-driving' },\n  //dammed-up\n  { match: '[#PastTense (#Hyphenated && #PhrasalVerb)] (#Noun|#Conjunction)', group: 0, tag: 'Adjective', reason: 'dammed-up' },\n  //two-fold\n  { match: '(#Hyphenated && #Value) fold', tag: 'Adjective', reason: 'two-fold' },\n  //must-win\n  { match: 'must (#Hyphenated && #Infinitive)', tag: 'Adjective', reason: 'must-win' },\n  // vacuum-sealed\n  { match: `(#Hyphenated && #Infinitive) #Hyphenated`, tag: 'Adjective', notIf: '#PhrasalVerb', reason: 'vacuum-sealed' },\n\n  { match: 'too much', tag: 'Adverb Adjective', reason: 'bit-4' },\n  { match: 'a bit much', tag: 'Determiner Adverb Adjective', reason: 'bit-3' },\n\n  // adjective-prefixes - 'un skilled'\n  { match: '[(un|contra|extra|inter|intra|macro|micro|mid|mis|mono|multi|pre|sub|tri|ex)] #Adjective', group: 0, tag: ['Adjective', 'Prefix'], reason: 'un-skilled' },\n\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/adverb.js",
    "content": "// const adverbAdj = '(dark|bright|flat|light|soft|pale|dead|dim|faux|little|wee|sheer|most|near|good|extra|all)'\n\nexport default [\n  //still good\n  { match: '[still] #Adjective', group: 0, tag: 'Adverb', reason: 'still-advb' },\n  //still make\n  { match: '[still] #Verb', group: 0, tag: 'Adverb', reason: 'still-verb' },\n  // so hot\n  { match: '[so] #Adjective', group: 0, tag: 'Adverb', reason: 'so-adv' },\n  // way hotter\n  { match: '[way] #Comparative', group: 0, tag: 'Adverb', reason: 'way-adj' },\n  // way too hot\n  { match: '[way] #Adverb #Adjective', group: 0, tag: 'Adverb', reason: 'way-too-adj' },\n  // all singing\n  { match: '[all] #Verb', group: 0, tag: 'Adverb', reason: 'all-verb' },\n  // sing like an angel\n  { match: '#Verb  [like]', group: 0, notIf: '(#Modal|#PhrasalVerb)', tag: 'Adverb', reason: 'verb-like' },\n  //barely even walk\n  { match: '(barely|hardly) even', tag: 'Adverb', reason: 'barely-even' },\n  //even held\n  { match: '[even] #Verb', group: 0, tag: 'Adverb', reason: 'even-walk' },\n  //even worse\n  { match: '[even] #Comparative', group: 0, tag: 'Adverb', reason: 'even-worse' },\n  // even the greatest\n  { match: '[even] (#Determiner|#Possessive)', group: 0, tag: '#Adverb', reason: 'even-the' },\n  // even left\n  { match: 'even left', tag: '#Adverb #Verb', reason: 'even-left' },\n  // way over\n  { match: '[way] #Adjective', group: 0, tag: '#Adverb', reason: 'way-over' },\n  //cheering hard - dropped -ly's\n  {\n    match: '#PresentTense [(hard|quick|bright|slow|fast|backwards|forwards)]',\n    notIf: '#Copula',\n    group: 0,\n    tag: 'Adverb',\n    reason: 'lazy-ly',\n  },\n  // much appreciated\n  { match: '[much] #Adjective', group: 0, tag: 'Adverb', reason: 'bit-1' },\n  // is well\n  { match: '#Copula [#Adverb]$', group: 0, tag: 'Adjective', reason: 'is-well' },\n  // a bit cold\n  { match: 'a [(little|bit|wee) bit?] #Adjective', group: 0, tag: 'Adverb', reason: 'a-bit-cold' },\n  // super strong\n  { match: `[(super|pretty)] #Adjective`, group: 0, tag: 'Adverb', reason: 'super-strong' },\n  // become overly weakened\n  { match: '(become|fall|grow) #Adverb? [#PastTense]', group: 0, tag: 'Adjective', reason: 'overly-weakened' },\n  // a completely beaten man\n  { match: '(a|an) #Adverb [#Participle] #Noun', group: 0, tag: 'Adjective', reason: 'completely-beaten' },\n  //a close\n  { match: '#Determiner #Adverb? [close]', group: 0, tag: 'Adjective', reason: 'a-close' },\n  //walking close\n  { match: '#Gerund #Adverb? [close]', group: 0, tag: 'Adverb', notIf: '(getting|becoming|feeling)', reason: 'being-close' },\n  // a blown motor\n  { match: '(the|those|these|a|an) [#Participle] #Noun', group: 0, tag: 'Adjective', reason: 'blown-motor' },\n  // charged back\n  { match: '(#PresentTense|#PastTense) [back]', group: 0, tag: 'Adverb', notIf: '(#PhrasalVerb|#Copula)', reason: 'charge-back' },\n  // send around\n  { match: '#Verb [around]', group: 0, tag: 'Adverb', notIf: '#PhrasalVerb', reason: 'send-around' },\n  // later say\n  { match: '[later] #PresentTense', group: 0, tag: 'Adverb', reason: 'later-say' },\n  // the well\n  { match: '#Determiner [well] !#PastTense?', group: 0, tag: 'Noun', reason: 'the-well' },\n  // high enough\n  { match: '#Adjective [enough]', group: 0, tag: 'Adverb', reason: 'high-enough' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/conjunctions.js",
    "content": "export default [\n  // ==== Conjunctions ====\n  { match: '[so] #Noun', group: 0, tag: 'Conjunction', reason: 'so-conj' },\n  //how he is driving\n  {\n    match: '[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)',\n    group: 0,\n    tag: 'Conjunction',\n    reason: 'how-he-is-x',\n  },\n  // when he\n  { match: '#Copula [(who|what|where|why|how|when)] #Noun', group: 0, tag: 'Conjunction', reason: 'when-he' },\n  // says that he..\n  { match: '#Verb [that] #Pronoun', group: 0, tag: 'Conjunction', reason: 'said-that-he' },\n  // things that are required\n  { match: '#Noun [that] #Copula', group: 0, tag: 'Conjunction', reason: 'that-are' },\n  // things that seem cool\n  { match: '#Noun [that] #Verb #Adjective', group: 0, tag: 'Conjunction', reason: 'that-seem' },\n  // wasn't that wide..\n  { match: '#Noun #Copula not? [that] #Adjective', group: 0, tag: 'Adverb', reason: 'that-adj' },\n\n  // ==== Prepositions ====\n  //all students\n  { match: '#Verb #Adverb? #Noun [(that|which)]', group: 0, tag: 'Preposition', reason: 'that-prep' },\n  //work, which has been done.\n  { match: '@hasComma [which] (#Pronoun|#Verb)', group: 0, tag: 'Preposition', reason: 'which-copula' },\n  //folks like her\n  { match: '#Noun [like] #Noun', group: 0, tag: 'Preposition', reason: 'noun-like' },\n  //like the time\n  { match: '^[like] #Determiner', group: 0, tag: 'Preposition', reason: 'like-the' },\n  //a day like this\n  { match: 'a #Noun [like] (#Noun|#Determiner)', group: 0, tag: 'Preposition', reason: 'a-noun-like' },\n  // really like\n  { match: '#Adverb [like]', group: 0, tag: 'Verb', reason: 'really-like' },\n  // nothing like\n  { match: '(not|nothing|never) [like]', group: 0, tag: 'Preposition', reason: 'nothing-like' },\n  // treat them like\n  { match: '#Infinitive #Pronoun [like]', group: 0, tag: 'Preposition', reason: 'treat-them-like' },\n\n\n\n\n  // ==== Questions ====\n  // where\n  // why\n  // when\n  // who\n  // whom\n  // whose\n  // what\n  // which\n  //the word 'how many'\n  // { match: '^(how|which)', tag: 'QuestionWord', reason: 'how-question' },\n  // how-he, when the\n  { match: '[#QuestionWord] (#Pronoun|#Determiner)', group: 0, tag: 'Preposition', reason: 'how-he' },\n  // when stolen\n  { match: '[#QuestionWord] #Participle', group: 0, tag: 'Preposition', reason: 'when-stolen' },\n  // how is\n  { match: '[how] (#Determiner|#Copula|#Modal|#PastTense)', group: 0, tag: 'QuestionWord', reason: 'how-is' },\n  // children who dance\n  { match: '#Plural [(who|which|when)] .', group: 0, tag: 'Preposition', reason: 'people-who' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/dates/date-phrase.js",
    "content": "export default [\n  // ==== Holiday ====\n  { match: '#Holiday (day|eve)', tag: 'Holiday', reason: 'holiday-day' },\n  //5th of March\n  { match: '#Value of #Month', tag: 'Date', reason: 'value-of-month' },\n  //5 March\n  { match: '#Cardinal #Month', tag: 'Date', reason: 'cardinal-month' },\n  //march 5 to 7\n  { match: '#Month #Value to #Value', tag: 'Date', reason: 'value-to-value' },\n  //march the 12th\n  { match: '#Month the #Value', tag: 'Date', reason: 'month-the-value' },\n  //june 7\n  { match: '(#WeekDay|#Month) #Value', tag: 'Date', reason: 'date-value' },\n  //7 june\n  { match: '#Value (#WeekDay|#Month)', tag: 'Date', reason: 'value-date' },\n  //may twenty five\n  { match: '(#TextValue && #Date) #TextValue', tag: 'Date', reason: 'textvalue-date' },\n  // 'aug 20-21'\n  { match: `#Month #NumberRange`, tag: 'Date', reason: 'aug 20-21' },\n  // wed march 5th\n  { match: `#WeekDay #Month #Ordinal`, tag: 'Date', reason: 'week mm-dd' },\n  // aug 5th 2021\n  { match: `#Month #Ordinal #Cardinal`, tag: 'Date', reason: 'mm-dd-yyy' },\n\n  // === timezones ===\n  // china standard time\n  { match: `(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time`, tag: 'Timezone', reason: 'std-time' },\n  // eastern time\n  {\n    match: `(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time`,\n    tag: 'Timezone',\n    reason: 'eastern-time',\n  },\n  // 5pm central\n  { match: `#Time [(eastern|mountain|pacific|central|est|pst|gmt)]`, group: 0, tag: 'Timezone', reason: '5pm-central' },\n  // central european time\n  { match: `(central|western|eastern) european time`, tag: 'Timezone', reason: 'cet' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/dates/date.js",
    "content": "export default [\n  // ==== WeekDay ====\n  // sun the 5th\n  { match: '[sun] the #Ordinal', tag: 'WeekDay', reason: 'sun-the-5th' },\n  //sun feb 2\n  { match: '[sun] #Date', group: 0, tag: 'WeekDay', reason: 'sun-feb' },\n  //1pm next sun\n  { match: '#Date (on|this|next|last|during)? [sun]', group: 0, tag: 'WeekDay', reason: '1pm-sun' },\n  //this sat\n  { match: `(in|by|before|during|on|until|after|of|within|all) [sat]`, group: 0, tag: 'WeekDay', reason: 'sat' },\n  { match: `(in|by|before|during|on|until|after|of|within|all) [wed]`, group: 0, tag: 'WeekDay', reason: 'wed' },\n  { match: `(in|by|before|during|on|until|after|of|within|all) [march]`, group: 0, tag: 'Month', reason: 'march' },\n  //sat november\n  { match: '[sat] #Date', group: 0, tag: 'WeekDay', reason: 'sat-feb' },\n\n  // ==== Month ====\n  //all march\n  { match: `#Preposition [(march|may)]`, group: 0, tag: 'Month', reason: 'in-month' },\n  //this march\n  { match: `(this|next|last) (march|may) !#Infinitive?`, tag: '#Date #Month', reason: 'this-month' },\n  // march 5th\n  { match: `(march|may) the? #Value`, tag: '#Month #Date #Date', reason: 'march-5th' },\n  // 5th of march\n  { match: `#Value of? (march|may)`, tag: '#Date #Date #Month', reason: '5th-of-march' },\n  // march and feb\n  { match: `[(march|may)] .? #Date`, group: 0, tag: 'Month', reason: 'march-and-feb' },\n  // feb to march\n  { match: `#Date .? [(march|may)]`, group: 0, tag: 'Month', reason: 'feb-and-march' },\n  //quickly march\n  { match: `#Adverb [(march|may)]`, group: 0, tag: 'Verb', reason: 'quickly-march' },\n  //march quickly\n  { match: `[(march|may)] #Adverb`, group: 0, tag: 'Verb', reason: 'march-quickly' },\n  //12 am\n  { match: `#Value (am|pm)`, tag: 'Time', reason: '2-am' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/expressions.js",
    "content": "export default [\n\n  //swear-words as non-expression POS\n  { match: 'holy (shit|fuck|hell)', tag: 'Expression', reason: 'swears-expression' },\n  // well..\n  { match: '^[(well|so|okay|now)] !#Adjective?', group: 0, tag: 'Expression', reason: 'well-' },\n  // well..\n  { match: '^come on', tag: 'Expression', reason: 'come-on' },\n  // sorry\n  { match: '(say|says|said) [sorry]', group: 0, tag: 'Expression', reason: 'say-sorry' },\n  // ok,\n  { match: '^(ok|alright|shoot|hell|anyways)', tag: 'Expression', reason: 'ok-' },\n  // c'mon marge..\n  // { match: '^[come on] #Noun', group: 0, tag: 'Expression', reason: 'come-on' },\n  // say,\n  { match: '^(say && @hasComma)', tag: 'Expression', reason: 'say-' },\n  { match: '^(like && @hasComma)', tag: 'Expression', reason: 'like-' },\n  // dude we should\n  { match: '^[(dude|man|girl)] #Pronoun', group: 0, tag: 'Expression', reason: 'dude-i' },\n]"
  },
  {
    "path": "src/2-two/postTagger/model/index.js",
    "content": "import adj from './adjective/adjective.js'\nimport advAdj from './adjective/adj-adverb.js'\nimport gerundAdj from './adjective/adj-gerund.js'\nimport nounAdj from './adjective/adj-noun.js'\nimport adjVerb from './adjective/adj-verb.js'\n\nimport adv from './adverb.js'\n\nimport dates from './dates/date-phrase.js'\nimport ambigDates from './dates/date.js'\n\nimport noun from './nouns/nouns.js'\nimport gerundNouns from './verbs/noun-gerund.js'\nimport presNouns from './verbs/verb-noun.js'\n\nimport money from './numbers/money.js'\nimport fractions from './numbers/fractions.js'\nimport numbers from './numbers/numbers.js'\n\nimport person from './person/person-phrase.js'\nimport personName from './person/ambig-name.js'\n\nimport verbs from './verbs/verbs.js'\nimport auxiliary from './verbs/auxiliary.js'\nimport phrasal from './verbs/phrasal.js'\nimport imperative from './verbs/imperative.js'\nimport adjGerund from './verbs/adj-gerund.js'\nimport passive from './verbs/passive.js'\n\nimport misc from './_misc.js'\n\nimport orgs from './nouns/organizations.js'\nimport places from './nouns/places.js'\nimport conjunctions from './conjunctions.js'\nimport expressions from './expressions.js'\n\nconst matches = [].concat(\n  // order matters top-matches can get overwritten\n  passive,\n  adj,\n  advAdj,\n  gerundAdj,\n  nounAdj,\n  adv,\n  ambigDates,\n  dates,\n  noun,\n  gerundNouns,\n  presNouns,\n  money,\n  fractions,\n  numbers,\n  person,\n  personName,\n  verbs,\n  adjVerb,\n  auxiliary,\n  phrasal,\n  imperative,\n  adjGerund,\n  misc,\n  orgs,\n  places,\n  conjunctions,\n  expressions\n)\nexport default {\n  two: {\n    matches,\n  },\n}\n"
  },
  {
    "path": "src/2-two/postTagger/model/nouns/nouns.js",
    "content": "const infNouns =\n  '(feel|sense|process|rush|side|bomb|bully|challenge|cover|crush|dump|exchange|flow|function|issue|lecture|limit|march|process)'\nexport default [\n  //'more' is not always an adverb\n  // any more\n  { match: '(the|any) [more]', group: 0, tag: 'Singular', reason: 'more-noun' },\n  // more players\n  { match: '[more] #Noun', group: 0, tag: 'Adjective', reason: 'more-noun' },\n  // rights of man\n  { match: '(right|rights) of .', tag: 'Noun', reason: 'right-of' },\n  // a bit\n  { match: 'a [bit]', group: 0, tag: 'Singular', reason: 'bit-2' },\n  // a must\n  { match: 'a [must]', group: 0, tag: 'Singular', reason: 'must-2' },\n  // we all\n  { match: '(we|us) [all]', group: 0, tag: 'Noun', reason: 'we all' },\n  // due to weather\n  { match: 'due to [#Verb]', group: 0, tag: 'Noun', reason: 'due-to' },\n\n  //some pressing issues\n  { match: 'some [#Verb] #Plural', group: 0, tag: 'Noun', reason: 'determiner6' },\n  // my first thought\n  { match: '#Possessive #Ordinal [#PastTense]', group: 0, tag: 'Noun', reason: 'first-thought' },\n  //the nice swim\n  {\n    match: '(the|this|those|these) #Adjective [%Verb|Noun%]',\n    group: 0,\n    tag: 'Noun',\n    notIf: '#Copula',\n    reason: 'the-adj-verb',\n  },\n  // the truly nice swim\n  { match: '(the|this|those|these) #Adverb #Adjective [#Verb]', group: 0, tag: 'Noun', reason: 'determiner4' },\n  //the wait to vote\n  { match: 'the [#Verb] #Preposition .', group: 0, tag: 'Noun', reason: 'determiner1' },\n  //a sense of\n  { match: '(a|an|the) [#Verb] of', group: 0, tag: 'Noun', reason: 'the-verb-of' },\n  //the threat of force\n  { match: '#Determiner #Noun of [#Verb]', group: 0, tag: 'Noun', notIf: '#Gerund', reason: 'noun-of-noun' },\n  // ended in ruins\n  {\n    match: '#PastTense #Preposition [#PresentTense]',\n    group: 0,\n    notIf: '#Gerund',\n    tag: 'Noun',\n    reason: 'ended-in-ruins',\n  },\n  //'u' as pronoun\n  { match: '#Conjunction [u]', group: 0, tag: 'Pronoun', reason: 'u-pronoun-2' },\n  { match: '[u] #Verb', group: 0, tag: 'Pronoun', reason: 'u-pronoun-1' },\n  //the western line\n  {\n    match: '#Determiner [(western|eastern|northern|southern|central)] #Noun',\n    group: 0,\n    tag: 'Noun',\n    reason: 'western-line',\n  },\n  //air-flow\n  { match: '(#Singular && @hasHyphen) #PresentTense', tag: 'Noun', reason: 'hyphen-verb' },\n  //is no walk\n  { match: 'is no [#Verb]', group: 0, tag: 'Noun', reason: 'is-no-verb' },\n  //do so\n  { match: 'do [so]', group: 0, tag: 'Noun', reason: 'so-noun' },\n  // what the hell\n  { match: '#Determiner [(shit|damn|hell)]', group: 0, tag: 'Noun', reason: 'swears-noun' },\n  // go to shit\n  { match: 'to [(shit|hell)]', group: 0, tag: 'Noun', reason: 'to-swears' },\n  // the staff were\n  { match: '(the|these) [#Singular] (were|are)', group: 0, tag: 'Plural', reason: 'singular-were' },\n  // a comdominium, or simply condo\n  { match: `a #Noun+ or #Adverb+? [#Verb]`, group: 0, tag: 'Noun', reason: 'noun-or-noun' },\n  // walk the walk\n  {\n    match: '(the|those|these|a|an) #Adjective? [#PresentTense #Particle?]',\n    group: 0,\n    tag: 'Noun',\n    notIf: '(seem|appear|include|#Gerund|#Copula)',\n    reason: 'det-inf',\n  },\n  // { match: '(the|those|these|a|an) #Adjective? [#PresentTense #Particle?]', group: 0, tag: 'Noun', notIf: '(#Gerund|#Copula)', reason: 'det-pres' },\n\n  // ==== Actor ====\n  //Aircraft designer\n  { match: '#Noun #Actor', tag: 'Actor', notIf: '(#Person|#Pronoun)', reason: 'thing-doer' },\n  //lighting designer\n  { match: '#Gerund #Actor', tag: 'Actor', reason: 'gerund-doer' },\n  // captain sanders\n  // { match: '[#Actor+] #ProperNoun', group: 0, tag: 'Honorific', reason: 'sgt-kelly' },\n  // co-founder\n  { match: `co #Singular`, tag: 'Actor', reason: 'co-noun' },\n  // co-founder\n  {\n    match: `[#Noun+] #Actor`,\n    group: 0,\n    tag: 'Actor',\n    notIf: '(#Honorific|#Pronoun|#Possessive)',\n    reason: 'air-traffic-controller',\n  },\n  // fine-artist\n  {\n    match: `(urban|cardiac|cardiovascular|respiratory|medical|clinical|visual|graphic|creative|dental|exotic|fine|certified|registered|technical|virtual|professional|amateur|junior|senior|special|pharmaceutical|theoretical)+ #Noun? #Actor`,\n    tag: 'Actor',\n    reason: 'fine-artist',\n  },\n  // dance coach\n  {\n    match: `#Noun+ (coach|chef|king|engineer|fellow|personality|boy|girl|man|woman|master)`,\n    tag: 'Actor',\n    reason: 'dance-coach',\n  },\n  // chief design officer\n  { match: `chief . officer`, tag: 'Actor', reason: 'chief-x-officer' },\n  // chief of police\n  { match: `chief of #Noun+`, tag: 'Actor', reason: 'chief-of-police' },\n  // president of marketing\n  { match: `senior? vice? president of #Noun+`, tag: 'Actor', reason: 'president-of' },\n\n  // ==== Singular ====\n  //the sun\n  { match: '#Determiner [sun]', group: 0, tag: 'Singular', reason: 'the-sun' },\n  //did a 900, paid a 20\n  { match: '#Verb (a|an) [#Value]$', group: 0, tag: 'Singular', reason: 'did-a-value' },\n  //'the can'\n  { match: 'the [(can|will|may)]', group: 0, tag: 'Singular', reason: 'the can' },\n\n  // ==== Possessive ====\n  //spencer kelly's\n  { match: '#FirstName #Acronym? (#Possessive && #LastName)', tag: 'Possessive', reason: 'name-poss' },\n  //Super Corp's fundraiser\n  { match: '#Organization+ #Possessive', tag: 'Possessive', reason: 'org-possessive' },\n  //Los Angeles's fundraiser\n  { match: '#Place+ #Possessive', tag: 'Possessive', reason: 'place-possessive' },\n  // Ptolemy's experiments\n  { match: '#Possessive #PresentTense #Particle?', notIf: '(#Gerund|her)', tag: 'Noun', reason: 'possessive-verb' }, // anna's eating vs anna's eating lunch\n  // my presidents house\n  { match: '(my|our|their|her|his|its) [(#Plural && #Actor)] #Noun', tag: 'Possessive', reason: 'my-dads' },\n\n  // 10th of a second\n  { match: '#Value of a [second]', group: 0, unTag: 'Value', tag: 'Singular', reason: '10th-of-a-second' },\n  // 10 seconds\n  { match: '#Value [seconds]', group: 0, unTag: 'Value', tag: 'Plural', reason: '10-seconds' },\n  // in time\n  { match: 'in [#Infinitive]', group: 0, tag: 'Singular', reason: 'in-age' },\n  // a minor in\n  { match: 'a [#Adjective] #Preposition', group: 0, tag: 'Noun', reason: 'a-minor-in' },\n  //the repairer said\n  { match: '#Determiner [#Singular] said', group: 0, tag: 'Actor', reason: 'the-actor-said' },\n  //the euro sense\n  {\n    match: `#Determiner #Noun [${infNouns}] !(#Preposition|to|#Adverb)?`,\n    group: 0,\n    tag: 'Noun',\n    reason: 'the-noun-sense',\n  },\n  // photographs of a computer are\n  { match: '[#PresentTense] (of|by|for) (a|an|the) #Noun #Copula', group: 0, tag: 'Plural', reason: 'photographs-of' },\n  // fight and win\n  { match: '#Infinitive and [%Noun|Verb%]', group: 0, tag: 'Infinitive', reason: 'fight and win' },\n  // peace and flowers and love\n  { match: '#Noun and [#Verb] and #Noun', group: 0, tag: 'Noun', reason: 'peace-and-flowers' },\n  // the 1992 classic\n  { match: 'the #Cardinal [%Adj|Noun%]', group: 0, tag: 'Noun', reason: 'the-1992-classic' },\n  // the premier university\n  { match: '#Copula the [%Adj|Noun%] #Noun', group: 0, tag: 'Adjective', reason: 'the-premier-university' },\n\n  // scottish - i ate me sandwich\n  { match: 'i #Verb [me] #Noun', group: 0, tag: 'Possessive', reason: 'scottish-me' },\n  // dance music\n  {\n    match: '[#PresentTense] (music|class|lesson|night|party|festival|league|ceremony)',\n    group: 0,\n    tag: 'Noun',\n    reason: 'dance-music',\n  },\n  // wit it\n  { match: '[wit] (me|it)', group: 0, tag: 'Presposition', reason: 'wit-me' },\n  //left-her-boots, shoved her hand\n  { match: '#PastTense #Possessive [#Verb]', group: 0, tag: 'Noun', notIf: '(saw|made)', reason: 'left-her-boots' },\n  //35 signs\n  { match: '#Value [%Plural|Verb%]', group: 0, tag: 'Plural', notIf: '(one|1|a|an)', reason: '35-signs' },\n  //had time\n  { match: 'had [#PresentTense]', group: 0, tag: 'Noun', notIf: '(#Gerund|come|become)', reason: 'had-time' },\n  //instant access\n  { match: '%Adj|Noun% %Noun|Verb%', tag: '#Adjective #Noun', notIf: '#ProperNoun #Noun', reason: 'instant-access' },\n  // a representative to\n  { match: '#Determiner [%Adj|Noun%] #Conjunction', group: 0, tag: 'Noun', reason: 'a-rep-to' },\n  // near death experiences, ambitious sales targets\n  {\n    match: '#Adjective #Noun [%Plural|Verb%]$',\n    group: 0,\n    tag: 'Plural',\n    notIf: '#Pronoun',\n    reason: 'near-death-experiences',\n  },\n  // your guild colors\n  { match: '#Possessive #Noun [%Plural|Verb%]$', group: 0, tag: 'Plural', reason: 'your-guild-colors' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/nouns/organizations.js",
    "content": "// import orgWords from './_orgWords.js'\n// let orgMap = `(${orgWords.join('|')})`\n\n/*\nconst multi = [\n  'building society',\n  'central bank',\n  'department store',\n  'institute of technology',\n  'liberation army',\n  'people party',\n  'social club',\n  'state police',\n  'state university',\n]\n*/\n\nexport default [\n  // Foo University\n  // { match: `#Noun ${orgMap}`, tag: 'Organization', safe: true, reason: 'foo-university' },\n  // // University of Toronto\n  // { match: `${orgMap} of #Place`, tag: 'Organization', safe: true, reason: 'university-of-foo' },\n\n  // // foo regional health authority\n  // { match: `${orgMap} (health|local|regional)+ authority`, tag: 'Organization', reason: 'regional-health' },\n  // // foo stock exchange\n  // { match: `${orgMap} (stock|mergantile)+ exchange`, tag: 'Organization', reason: 'stock-exchange' },\n  // // foo news service\n  // { match: `${orgMap} (daily|evening|local)+ news service?`, tag: 'Organization', reason: 'foo-news' },\n  //University of Foo\n  { match: 'university of #Place', tag: 'Organization', reason: 'university-of-Foo' },\n  //John & Joe's\n  { match: '#Noun (&|n) #Noun', tag: 'Organization', reason: 'Noun-&-Noun' },\n  // teachers union of Ontario\n  { match: '#Organization of the? #ProperNoun', tag: 'Organization', reason: 'org-of-place', safe: true },\n  //walmart USA\n  { match: '#Organization #Country', tag: 'Organization', reason: 'org-country' },\n  //organization\n  { match: '#ProperNoun #Organization', tag: 'Organization', notIf: '#FirstName', reason: 'titlecase-org' },\n  //FitBit Inc\n  { match: '#ProperNoun (ltd|co|inc|dept|assn|bros)', tag: 'Organization', reason: 'org-abbrv' },\n  // the OCED\n  { match: 'the [#Acronym]', group: 0, tag: 'Organization', reason: 'the-acronym', safe: true },\n  // government of india\n  { match: 'government of the? [#Place+]', tag: 'Organization', reason: 'government-of-x' },\n  // school board\n  { match: '(health|school|commerce) board', tag: 'Organization', reason: 'school-board' },\n  // special comittee\n  {\n    match: '(nominating|special|conference|executive|steering|central|congressional) committee',\n    tag: 'Organization',\n    reason: 'special-comittee',\n  },\n  // global trade union\n  {\n    match: '(world|global|international|national|#Demonym) #Organization',\n    tag: 'Organization',\n    reason: 'global-org',\n  },\n  // schools\n  { match: '#Noun+ (public|private) school', tag: 'School', reason: 'noun-public-school' },\n  // new york yankees\n  { match: '#Place+ #SportsTeam', tag: 'SportsTeam', reason: 'place-sportsteam' },\n  // 'manchester united'\n  {\n    match: '(dc|atlanta|minnesota|manchester|newcastle|sheffield) united',\n    tag: 'SportsTeam',\n    reason: 'united-sportsteam',\n  },\n  // 'toronto fc'\n  { match: '#Place+ fc', tag: 'SportsTeam', reason: 'fc-sportsteam' },\n\n  // baltimore quilting club\n  {\n    match: '#Place+ #Noun{0,2} (club|society|group|team|committee|commission|association|guild|crew)',\n    tag: 'Organization',\n    reason: 'place-noun-society',\n  },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/nouns/places.js",
    "content": "export default [\n  // ==== Region ====\n  // West Norforlk\n  { match: '(west|north|south|east|western|northern|southern|eastern)+ #Place', tag: 'Region', reason: 'west-norfolk' },\n  //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..)\n  {\n    match: '#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]',\n    group: 0,\n    tag: 'Region',\n    reason: 'us-state',\n  },\n  // portland oregon\n  { match: 'portland [or]', group: 0, tag: 'Region', reason: 'portland-or' },\n  //words removed from preTagger/placeWords\n  {\n    match: '#ProperNoun+ (cliff|place|range|pit|place|point|room|grounds|ruins)',\n    tag: 'Place',\n    reason: 'foo-point',\n  },\n  // in Foo California\n  { match: 'in [#ProperNoun] #Place', group: 0, tag: 'Place', reason: 'propernoun-place' },\n  // Address\n  {\n    match: '#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)',\n    tag: 'Address',\n    reason: 'address-st',\n  },\n  // port dover\n  { match: '(port|mount|mt) #ProperName', tag: 'Place', reason: 'port-name' },\n  // generic 'oak ridge' names\n  // { match: '(oak|maple|spruce|pine|cedar|willow|green|sunset|sunrise) #Place', tag: 'Place', reason: 'tree-name' },\n  // generic 'sunset view' names\n  // { match: '() #Place', tag: 'Place', reason: 'tree-name' },\n\n  // Sports Arenas and Complexs\n  // {\n  //   match:\n  //     '(#Place+|#Place|#ProperNoun) (memorial|athletic|community|financial)? (sportsplex|stadium|sports centre|sports field|soccer complex|soccer centre|sports complex|civic centre|centre|arena|gardens|complex|coliseum|auditorium|place|building)',\n  //   tag: 'Place',\n  //   reason: 'sport-complex',\n  // },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/numbers/fractions.js",
    "content": "export default [\n  // half a penny\n  { match: '[(half|quarter)] of? (a|an)', group: 0, tag: 'Fraction', reason: 'millionth' },\n  // nearly half\n  { match: '#Adverb [half]', group: 0, tag: 'Fraction', reason: 'nearly-half' },\n  // half the\n  { match: '[half] the', group: 0, tag: 'Fraction', reason: 'half-the' },\n  // and a half\n  { match: '#Cardinal and a half', tag: 'Fraction', reason: 'and-a-half' },\n  // two-halves\n  { match: '#Value (halves|halfs|quarters)', tag: 'Fraction', reason: 'two-halves' },\n\n  // ---ordinals as fractions---\n  // a fifth\n  { match: 'a #Ordinal', tag: 'Fraction', reason: 'a-quarter' },\n  // seven fifths\n  { match: '[#Cardinal+] (#Fraction && /s$/)', tag: 'Fraction', reason: 'seven-fifths' },\n  // doc.match('(#Fraction && /s$/)').lookBefore('#Cardinal+$').tag('Fraction')\n  // one third of ..\n  { match: '[#Cardinal+ #Ordinal] of .', group: 0, tag: 'Fraction', reason: 'ordinal-of' },\n  // 100th of\n  { match: '[(#NumericValue && #Ordinal)] of .', group: 0, tag: 'Fraction', reason: 'num-ordinal-of' },\n  // a twenty fifth\n  { match: '(a|one) #Cardinal?+ #Ordinal', tag: 'Fraction', reason: 'a-ordinal' },\n\n  // //  '3 out of 5'\n  { match: '#Cardinal+ out? of every? #Cardinal', tag: 'Fraction', reason: 'out-of' },\n]\n\n// {match:'', tag:'',reason:''},\n"
  },
  {
    "path": "src/2-two/postTagger/model/numbers/money.js",
    "content": "export default [\n  { match: '#Money and #Money #Currency?', tag: 'Money', reason: 'money-and-money' },\n  // 6 dollars and 5 cents\n  { match: '#Value #Currency [and] #Value (cents|ore|centavos|sens)', group: 0, tag: 'money', reason: 'and-5-cents' },\n  // maybe currencies\n  { match: '#Value (mark|rand|won|rub|ore)', tag: '#Money #Currency', reason: '4-mark' },\n  // 3 pounds\n  { match: 'a pound', tag: '#Money #Unit', reason: 'a-pound' },\n  { match: '#Value (pound|pounds)', tag: '#Money #Unit', reason: '4-pounds' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/numbers/numbers.js",
    "content": "export default [\n  // ==== Ambiguous numbers ====\n  // 'second'\n  { match: `#Cardinal [second]`, tag: 'Unit', reason: 'one-second' },\n  //'a/an' can mean 1 - \"a hour\"\n  {\n    match: '!once? [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)',\n    group: 0,\n    tag: 'Value',\n    reason: 'a-is-one',\n  },\n  // ==== PhoneNumber ====\n  //1 800 ...\n  { match: '1 #Value #PhoneNumber', tag: 'PhoneNumber', reason: '1-800-Value' },\n  //(454) 232-9873\n  { match: '#NumericValue #PhoneNumber', tag: 'PhoneNumber', reason: '(800) PhoneNumber' },\n\n  // ==== Currency ====\n  // chinese yuan\n  { match: '#Demonym #Currency', tag: 'Currency', reason: 'demonym-currency' },\n  // ten bucks\n  { match: '#Value [(buck|bucks|grand)]', group: 0, tag: 'Currency', reason: 'value-bucks' },\n  // ==== Money ====\n  { match: '[#Value+] #Currency', group: 0, tag: 'Money', reason: '15 usd' },\n\n  // ==== Ordinal ====\n  { match: '[second] #Noun', group: 0, tag: 'Ordinal', reason: 'second-noun' },\n\n  // ==== Units ====\n  //5 yan\n  { match: '#Value+ [#Currency]', group: 0, tag: 'Unit', reason: '5-yan' },\n  { match: '#Value [(foot|feet)]', group: 0, tag: 'Unit', reason: 'foot-unit' },\n  //5 kg.\n  { match: '#Value [#Abbreviation]', group: 0, tag: 'Unit', reason: 'value-abbr' },\n  { match: '#Value [k]', group: 0, tag: 'Unit', reason: 'value-k' },\n  { match: '#Unit an hour', tag: 'Unit', reason: 'unit-an-hour' },\n\n  // ==== Magnitudes ====\n  //minus 7\n  { match: '(minus|negative) #Value', tag: 'Value', reason: 'minus-value' },\n  //seven point five\n  { match: '#Value (point|decimal) #Value', tag: 'Value', reason: 'value-point-value' },\n  //quarter million\n  { match: '#Determiner [(half|quarter)] #Ordinal', group: 0, tag: 'Value', reason: 'half-ordinal' },\n  // thousand and two\n  { match: `#Multiple+ and #Value`, tag: 'Value', reason: 'magnitude-and-value' },\n  // ambiguous units like 'gb'\n  // { match: '#Value square? [(kb|mb|gb|tb|ml|pt|qt|tbl|tbsp|km|cm|mm|mi|ft|yd|kg|hg|mg|oz|lb|mph|pa|miles|yard|yards|pound|pounds)]', group: 0, tag: 'Unit', reason: '12-gb' },\n  // 5 miles per hour\n  { match: '#Value #Unit [(per|an) (hr|hour|sec|second|min|minute)]', group: 0, tag: 'Unit', reason: '12-miles-per-second' },\n  // 5 square miles\n  { match: '#Value [(square|cubic)] #Unit', group: 0, tag: 'Unit', reason: 'square-miles' },\n  // 5) The expenses\n  // { match: '^[#Value] (#Determiner|#Gerund)', group: 0, tag: 'Expression', unTag: 'Value', reason: 'numbered-list' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/person/ambig-name.js",
    "content": "// const personAdj = '(misty|rusty|dusty|rich|randy|sandy|young|earnest|frank|brown)'\n\nexport default [\n  // ebenezer scrooge\n  {\n    match: '#FirstName #Noun$',\n    tag: '. #LastName',\n    notIf: '(#Possessive|#Organization|#Place|#Pronoun|@hasTitleCase)',\n    reason: 'firstname-noun',\n  },\n\n  // ===person-date===\n  { match: '%Person|Date% #Acronym? #ProperNoun', tag: 'Person', reason: 'jan-thierson' },\n  // ===person-noun===\n  //Cliff Clavin\n  { match: '%Person|Noun% #Acronym? #ProperNoun', tag: 'Person', reason: 'switch-person', safe: true },\n  // olive garden\n  { match: '%Person|Noun% #Organization', tag: 'Organization', reason: 'olive-garden' },\n  // ===person-verb===\n  // ollie faroo\n  { match: '%Person|Verb% #Acronym? #ProperNoun', tag: 'Person', reason: 'verb-propernoun', ifNo: '#Actor' },\n  // chuck will ...\n  {\n    match: `[%Person|Verb%] (will|had|has|said|says|told|did|learned|wants|wanted)`,\n    group: 0,\n    tag: 'Person',\n    reason: 'person-said',\n  },\n\n  // ===person-place===\n  //sydney harbour\n  {\n    match: `[%Person|Place%] (harbor|harbour|pier|town|city|place|dump|landfill)`,\n    group: 0,\n    tag: 'Place',\n    reason: 'sydney-harbour',\n  },\n  // east sydney\n  { match: `(west|east|north|south) [%Person|Place%]`, group: 0, tag: 'Place', reason: 'east-sydney' },\n\n  // ===person-adjective===\n  // rusty smith\n  // { match: `${personAdj} #Person`, tag: 'Person', reason: 'randy-smith' },\n  // rusty a. smith\n  // { match: `${personAdj} #Acronym? #ProperNoun`, tag: 'Person', reason: 'rusty-smith' },\n  // very rusty\n  // { match: `#Adverb [${personAdj}]`, group: 0, tag: 'Adjective', reason: 'really-rich' },\n\n  // ===person-verb===\n  // would wade\n  { match: `#Modal [%Person|Verb%]`, group: 0, tag: 'Verb', reason: 'would-mark' },\n  // really wade\n  { match: `#Adverb [%Person|Verb%]`, group: 0, tag: 'Verb', reason: 'really-mark' },\n  // drew closer\n  { match: `[%Person|Verb%] (#Adverb|#Comparative)`, group: 0, tag: 'Verb', reason: 'drew-closer' },\n  // wade smith\n  { match: `%Person|Verb% #Person`, tag: 'Person', reason: 'rob-smith' },\n  // wade m. Cooper\n  { match: `%Person|Verb% #Acronym #ProperNoun`, tag: 'Person', reason: 'rob-a-smith' },\n  // will go\n  { match: '[will] #Verb', group: 0, tag: 'Modal', reason: 'will-verb' },\n  // will Pharell\n  { match: '(will && @isTitleCase) #ProperNoun', tag: 'Person', reason: 'will-name' },\n  // jack layton won\n  {\n    match: '(#FirstName && !#Possessive) [#Singular] #Verb',\n    group: 0,\n    safe: true,\n    tag: 'LastName',\n    reason: 'jack-layton',\n  },\n  // sherwood anderson told\n  { match: '^[#Singular] #Person #Verb', group: 0, safe: true, tag: 'Person', reason: 'sherwood-anderson' },\n  // bought a warhol\n  { match: '(a|an) [#Person]$', group: 0, unTag: 'Person', reason: 'a-warhol' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/person/person-phrase.js",
    "content": "export default [\n  // ==== FirstNames ====\n  //is foo Smith\n  { match: '#Copula [(#Noun|#PresentTense)] #LastName', group: 0, tag: 'FirstName', reason: 'copula-noun-lastname' },\n  //pope francis\n  {\n    match: '(sister|pope|brother|father|aunt|uncle|grandpa|grandfather|grandma) #ProperNoun',\n    tag: 'Person',\n    reason: 'lady-titlecase',\n    safe: true,\n  },\n\n  // ==== Nickname ====\n  // Dwayne 'the rock' Johnson\n  { match: '#FirstName [#Determiner #Noun] #LastName', group: 0, tag: 'Person', reason: 'first-noun-last' },\n  {\n    match: '#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun',\n    tag: 'Person',\n    reason: 'titlecase-acronym-titlecase',\n    safe: true,\n  },\n  { match: '#Acronym #LastName', tag: 'Person', reason: 'acronym-lastname', safe: true },\n  { match: '#Person (jr|sr|md)', tag: 'Person', reason: 'person-honorific' },\n  //remove single 'mr'\n  { match: '#Honorific #Acronym', tag: 'Person', reason: 'Honorific-TitleCase' },\n  { match: '#Person #Person the? #RomanNumeral', tag: 'Person', reason: 'roman-numeral' },\n  { match: '#FirstName [/^[^aiurck]$/]', group: 0, tag: ['Acronym', 'Person'], reason: 'john-e' },\n  //j.k Rowling\n  { match: '#Noun van der? #Noun', tag: 'Person', reason: 'van der noun', safe: true },\n  //king of spain\n  { match: '(king|queen|prince|saint|lady) of #Noun', tag: 'Person', reason: 'king-of-noun', safe: true },\n  //lady Florence\n  { match: '(prince|lady) #Place', tag: 'Person', reason: 'lady-place' },\n  //saint Foo\n  { match: '(king|queen|prince|saint) #ProperNoun', tag: 'Person', notIf: '#Place', reason: 'saint-foo' },\n\n  // al sharpton\n  { match: 'al (#Person|#ProperNoun)', tag: 'Person', reason: 'al-borlen', safe: true },\n  //ferdinand de almar\n  { match: '#FirstName de #Noun', tag: 'Person', reason: 'bill-de-noun' },\n  //Osama bin Laden\n  { match: '#FirstName (bin|al) #Noun', tag: 'Person', reason: 'bill-al-noun' },\n  //John L. Foo\n  { match: '#FirstName #Acronym #ProperNoun', tag: 'Person', reason: 'bill-acronym-title' },\n  //Andrew Lloyd Webber\n  { match: '#FirstName #FirstName #ProperNoun', tag: 'Person', reason: 'bill-firstname-title' },\n  //Mr Foo\n  { match: '#Honorific #FirstName? #ProperNoun', tag: 'Person', reason: 'dr-john-Title' },\n  //peter the great\n  { match: '#FirstName the #Adjective', tag: 'Person', reason: 'name-the-great' },\n\n  // dick van dyke\n  { match: '#ProperNoun (van|al|bin) #ProperNoun', tag: 'Person', reason: 'title-van-title', safe: true },\n  //jose de Sucre\n  { match: '#ProperNoun (de|du) la? #ProperNoun', tag: 'Person', notIf: '#Place', reason: 'title-de-title' },\n  //Jani K. Smith\n  { match: '#Singular #Acronym #LastName', tag: '#FirstName #Person .', reason: 'title-acro-noun', safe: true },\n  //Foo Ford\n  { match: '[#ProperNoun] #Person', group: 0, tag: 'Person', reason: 'proper-person', safe: true },\n  // john keith jones\n  {\n    match: '#Person [#ProperNoun #ProperNoun]',\n    group: 0,\n    tag: 'Person',\n    notIf: '#Possessive',\n    reason: 'three-name-person',\n    safe: true,\n  },\n  //John Foo\n  {\n    match: '#FirstName #Acronym? [#ProperNoun]',\n    group: 0,\n    tag: 'LastName',\n    notIf: '#Possessive',\n    reason: 'firstname-titlecase',\n  },\n  // john stewart\n  { match: '#FirstName [#FirstName]', group: 0, tag: 'LastName', reason: 'firstname-firstname' },\n  //Joe K. Sombrero\n  { match: '#FirstName #Acronym #Noun', tag: 'Person', reason: 'n-acro-noun', safe: true },\n  //Anthony de Marco\n  { match: '#FirstName [(de|di|du|van|von)] #Person', group: 0, tag: 'LastName', reason: 'de-firstname' },\n\n  // baker jenna smith\n  // { match: '[#Actor+] #Person', group: 0, tag: 'Person', reason: 'baker-sam-smith' },\n  // sergeant major Harold\n  {\n    match:\n      '[(lieutenant|corporal|sergeant|captain|qeen|king|admiral|major|colonel|marshal|president|queen|king)+] #ProperNoun',\n    group: 0,\n    tag: 'Honorific',\n    reason: 'seargeant-john',\n  },\n  // ==== Honorics ====\n  {\n    match: '[(private|general|major|rear|prime|field|count|miss)] #Honorific? #Person',\n    group: 0,\n    tag: ['Honorific', 'Person'],\n    reason: 'ambg-honorifics',\n  },\n  // dr john foobar\n  {\n    match: '#Honorific #FirstName [#Singular]',\n    group: 0,\n    tag: 'LastName',\n    notIf: '#Possessive',\n    reason: 'dr-john-foo',\n    safe: true,\n  },\n  //his-excellency\n  {\n    match: '[(his|her) (majesty|honour|worship|excellency|honorable)] #Person',\n    group: 0,\n    tag: 'Honorific',\n    reason: 'his-excellency',\n  },\n  // Lieutenant colonel\n  { match: '#Honorific #Actor', tag: 'Honorific', reason: 'Lieutenant colonel' },\n  // first lady, second admiral\n  { match: '(first|second|third|1st|2nd|3rd) #Actor', tag: 'Honorific', reason: 'first lady' },\n  // Louis IV\n  { match: '#Person #RomanNumeral', tag: 'Person', reason: 'louis-IV' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/verbs/adj-gerund.js",
    "content": "export default [\n  // that were growing\n  { match: '(that|which) were [%Adj|Gerund%]', group: 0, tag: 'Gerund', reason: 'that-were-growing' },\n  // was dissapointing\n  // { match: '#Copula [%Adj|Gerund%]$', group: 0, tag: 'Adjective', reason: 'was-disappointing$' },\n\n  // repairing crubling roads\n  { match: '#Gerund [#Gerund] #Plural', group: 0, tag: 'Adjective', reason: 'hard-working-fam' },\n\n  // { match: '(that|which) were [%Adj|Gerund%]', group: 0, tag: 'Gerund', reason: 'that-were-growing' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/verbs/auxiliary.js",
    "content": "// these are some of our heaviest-used matches\nexport default [\n  // ==== Auxiliary ====\n  // have been\n  { match: `will (#Adverb|not)+? [have] (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'will-have-vb' },\n  //was walking\n  { match: `[#Copula] (#Adverb|not)+? (#Gerund|#PastTense)`, group: 0, tag: 'Auxiliary', reason: 'copula-walking' },\n  //would walk\n  { match: `[(#Modal|did)+] (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'modal-verb' },\n  //would have had\n  { match: `#Modal (#Adverb|not)+? [have] (#Adverb|not)+? [had] (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-have' },\n  //support a splattering of auxillaries before a verb\n  { match: `[(has|had)] (#Adverb|not)+? #PastTense`, group: 0, tag: 'Auxiliary', reason: 'had-walked' },\n  // will walk\n  { match: '[(do|does|did|will|have|had|has|got)] (not|#Adverb)+? #Verb', group: 0, tag: 'Auxiliary', reason: 'have-had' },\n  // about to go\n  { match: '[about to] #Adverb? #Verb', group: 0, tag: ['Auxiliary', 'Verb'], reason: 'about-to' },\n  //would be walking\n  { match: `#Modal (#Adverb|not)+? [be] (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'would-be' },\n  //had been walking\n  { match: `[(#Modal|had|has)] (#Adverb|not)+? [been] (#Adverb|not)+? #Verb`, group: 0, tag: 'Auxiliary', reason: 'had-been' },\n  // was being driven\n  { match: '[(be|being|been)] #Participle', group: 0, tag: 'Auxiliary', reason: 'being-driven' },\n  // may want\n  { match: '[may] #Adverb? #Infinitive', group: 0, tag: 'Auxiliary', reason: 'may-want' },\n  // was being walked\n  { match: '#Copula (#Adverb|not)+? [(be|being|been)] #Adverb+? #PastTense', group: 0, tag: 'Auxiliary', reason: 'being-walked' },\n  // will be walked\n  { match: 'will [be] #PastTense', group: 0, tag: 'Auxiliary', reason: 'will-be-x' },\n  // been walking\n  { match: '[(be|been)] (#Adverb|not)+? #Gerund', group: 0, tag: 'Auxiliary', reason: 'been-walking' },\n  // used to walk\n  { match: '[used to] #PresentTense', group: 0, tag: 'Auxiliary', reason: 'used-to-walk' },\n  // was going to walk\n  { match: '#Copula (#Adverb|not)+? [going to] #Adverb+? #PresentTense', group: 0, tag: 'Auxiliary', reason: 'going-to-walk' },\n  // tell me\n  { match: '#Imperative [(me|him|her)]', group: 0, tag: 'Reflexive', reason: 'tell-him' },\n  // there is no x\n  { match: '(is|was) #Adverb? [no]', group: 0, tag: 'Negative', reason: 'is-no' },\n  // been told\n  { match: '[(been|had|became|came)] #PastTense', group: 0, notIf: '#PhrasalVerb', tag: 'Auxiliary', reason: 'been-told' },\n  // being born\n  { match: '[(being|having|getting)] #Verb', group: 0, tag: 'Auxiliary', reason: 'being-born' },\n  // be walking\n  { match: '[be] #Gerund', group: 0, tag: 'Auxiliary', reason: 'be-walking' },\n  // better go\n  { match: '[better] #PresentTense', group: 0, tag: 'Modal', notIf: '(#Copula|#Gerund)', reason: 'better-go' },\n  // even better\n  { match: 'even better', tag: 'Adverb #Comparative', reason: 'even-better' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/verbs/imperative.js",
    "content": "// this is really hard to do\nconst notIf = '(i|we|they)' //we do not go\nexport default [\n  // do not go\n  { match: '^do not? [#Infinitive #Particle?]', notIf, group: 0, tag: 'Imperative', reason: 'do-eat' },\n  // please go\n  { match: '^please do? not? [#Infinitive #Particle?]', group: 0, tag: 'Imperative', reason: 'please-go' },\n  // just go\n  { match: '^just do? not? [#Infinitive #Particle?]', group: 0, tag: 'Imperative', reason: 'just-go' },\n  // do it better\n  { match: '^[#Infinitive] it #Comparative', notIf, group: 0, tag: 'Imperative', reason: 'do-it-better' },\n  // do it again\n  { match: '^[#Infinitive] it (please|now|again|plz)', notIf, group: 0, tag: 'Imperative', reason: 'do-it-please' },\n  // go quickly.\n  { match: '^[#Infinitive] (#Adjective|#Adverb)$', group: 0, tag: 'Imperative', notIf: '(so|such|rather|enough)', reason: 'go-quickly' },\n  // turn down the noise\n  { match: '^[#Infinitive] (up|down|over) #Determiner', group: 0, tag: 'Imperative', reason: 'turn-down' },\n  // eat my shorts\n  { match: '^[#Infinitive] (your|my|the|a|an|any|each|every|some|more|with|on)', group: 0, notIf: 'like', tag: 'Imperative', reason: 'eat-my-shorts' },\n  // tell him the story\n  { match: '^[#Infinitive] (him|her|it|us|me|there)', group: 0, tag: 'Imperative', reason: 'tell-him' },\n  // avoid loud noises\n  { match: '^[#Infinitive] #Adjective #Noun$', group: 0, tag: 'Imperative', reason: 'avoid-loud-noises' },\n  // call and reserve\n  { match: '^[#Infinitive] (#Adjective|#Adverb)? and #Infinitive', group: 0, tag: 'Imperative', reason: 'call-and-reserve' },\n  // one-word imperatives\n  { match: '^(go|stop|wait|hurry) please?$', tag: 'Imperative', reason: 'go' },\n  // somebody call\n  { match: '^(somebody|everybody) [#Infinitive]', group: 0, tag: 'Imperative', reason: 'somebody-call' },\n  // let's leave\n  { match: '^let (us|me) [#Infinitive]', group: 0, tag: 'Imperative', reason: 'lets-leave' },\n  // shut the door\n  { match: '^[(shut|close|open|start|stop|end|keep)] #Determiner #Noun', group: 0, tag: 'Imperative', reason: 'shut-the-door' },\n  // turn off the light\n  { match: '^[#PhrasalVerb #Particle] #Determiner #Noun', group: 0, tag: 'Imperative', reason: 'turn-off-the-light' },\n  // go to toronto\n  { match: '^[go] to .', group: 0, tag: 'Imperative', reason: 'go-to-toronto' },\n  // would you recommend\n  { match: '^#Modal you [#Infinitive]', group: 0, tag: 'Imperative', reason: 'would-you-' },\n  // never say\n  { match: '^never [#Infinitive]', group: 0, tag: 'Imperative', reason: 'never-stop' },\n  // come have a drink\n  { match: '^come #Infinitive', tag: 'Imperative', notIf: 'on', reason: 'come-have' },\n  // come and have a drink\n  { match: '^come and? #Infinitive', tag: 'Imperative . Imperative', notIf: '#PhrasalVerb', reason: 'come-and-have' },\n  // stay away\n  { match: '^stay (out|away|back)', tag: 'Imperative', reason: 'stay-away' },\n  // stay cool\n  { match: '^[(stay|be|keep)] #Adjective', group: 0, tag: 'Imperative', reason: 'stay-cool' },\n  // keep it silent\n  { match: '^[keep it] #Adjective', group: 0, tag: 'Imperative', reason: 'keep-it-cool' },\n  // don't be late\n  { match: '^do not [#Infinitive]', group: 0, tag: 'Imperative', reason: 'do-not-be' },\n  // allow yourself\n  { match: '[#Infinitive] (yourself|yourselves)', group: 0, tag: 'Imperative', reason: 'allow-yourself' },\n  // look what\n  { match: '[#Infinitive] what .', group: 0, tag: 'Imperative', reason: 'look-what' },\n  // continue playing\n  { match: '^[#Infinitive] #Gerund', group: 0, tag: 'Imperative', reason: 'keep-playing' },\n  // go to it\n  { match: '^[#Infinitive] (to|for|into|toward|here|there)', group: 0, tag: 'Imperative', reason: 'go-to' },\n  // relax and unwind\n  { match: '^[#Infinitive] (and|or) #Infinitive', group: 0, tag: 'Imperative', reason: 'inf-and-inf' },\n\n  // commit to\n  { match: '^[%Noun|Verb%] to', group: 0, tag: 'Imperative', reason: 'commit-to' },\n  // maintain eye contact\n  { match: '^[#Infinitive] #Adjective? #Singular #Singular', group: 0, tag: 'Imperative', reason: 'maintain-eye-contact' },\n  // don't forget to clean\n  { match: 'do not (forget|omit|neglect) to [#Infinitive]', group: 0, tag: 'Imperative', reason: 'do-not-forget' },\n  // pay attention\n  { match: '^[(ask|wear|pay|look|help|show|watch|act|fix|kill|stop|start|turn|try|win)] #Noun', group: 0, tag: 'Imperative', reason: 'pay-attention' },\n\n]"
  },
  {
    "path": "src/2-two/postTagger/model/verbs/noun-gerund.js",
    "content": "export default [\n  // the planning processes\n  { match: '(this|that|the|a|an) [#Gerund #Infinitive]', group: 0, tag: 'Singular', reason: 'the-planning-process' },\n  // the paving stones\n  { match: '(that|the) [#Gerund #PresentTense]', group: 0, ifNo: '#Copula', tag: 'Plural', reason: 'the-paving-stones' },\n  // this swimming\n  // { match: '(this|that|the) [#Gerund]', group: 0, tag: 'Noun', reason: 'this-gerund' },\n  // the remaining claims\n  { match: '#Determiner [#Gerund] #Noun', group: 0, tag: 'Adjective', reason: 'the-gerund-noun' },\n  // i think tipping sucks\n  { match: `#Pronoun #Infinitive [#Gerund] #PresentTense`, group: 0, tag: 'Noun', reason: 'tipping-sucks' },\n  // early warning\n  { match: '#Adjective [#Gerund]', group: 0, tag: 'Noun', notIf: '(still|even|just)', reason: 'early-warning' },\n  //walking is cool\n  { match: '[#Gerund] #Adverb? not? #Copula', group: 0, tag: 'Activity', reason: 'gerund-copula' },\n  //are doing is\n  { match: '#Copula [(#Gerund|#Activity)] #Copula', group: 0, tag: 'Gerund', reason: 'are-doing-is' },\n  //walking should be fun\n  { match: '[#Gerund] #Modal', group: 0, tag: 'Activity', reason: 'gerund-modal' },\n  // finish listening\n  // { match: '#Infinitive [#Gerund]', group: 0, tag: 'Activity', reason: 'finish-listening' },\n  // the ruling party\n\n  // responsibility for setting\n  { match: '#Singular for [%Noun|Gerund%]', group: 0, tag: 'Gerund', reason: 'noun-for-gerund' },\n  // better for training\n  { match: '#Comparative (for|at) [%Noun|Gerund%]', group: 0, tag: 'Gerund', reason: 'better-for-gerund' },\n  // keep the touching\n  { match: '#PresentTense the [#Gerund]', group: 0, tag: 'Noun', reason: 'keep-the-touching' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/verbs/passive.js",
    "content": "// ==== Passive voice ===\nexport default [\n  // got walked, was walked, were walked\n  { match: '(got|were|was|is|are|am) (#PastTense|#Participle)', tag: 'Passive', reason: 'got-walked' },\n  // was being walked\n  { match: '(was|were|is|are|am) being (#PastTense|#Participle)', tag: 'Passive', reason: 'was-being' },\n  // had been walked, have been eaten\n  { match: '(had|have|has) been (#PastTense|#Participle)', tag: 'Passive', reason: 'had-been' },\n  // will be cleaned\n  { match: 'will be being? (#PastTense|#Participle)', tag: 'Passive', reason: 'will-be-cleaned' },\n  // suffered by the country\n  { match: '#Noun [(#PastTense|#Participle)] by (the|a) #Noun', group: 0, tag: 'Passive', reason: 'suffered-by' },\n\n]"
  },
  {
    "path": "src/2-two/postTagger/model/verbs/phrasal.js",
    "content": "export default [\n  // ==== Phrasal ====\n  //'foo-up'\n  { match: '(#Verb && @hasHyphen) up', tag: 'PhrasalVerb', reason: 'foo-up' },\n  { match: '(#Verb && @hasHyphen) off', tag: 'PhrasalVerb', reason: 'foo-off' },\n  { match: '(#Verb && @hasHyphen) over', tag: 'PhrasalVerb', reason: 'foo-over' },\n  { match: '(#Verb && @hasHyphen) out', tag: 'PhrasalVerb', reason: 'foo-out' },\n  // walk in on\n  {\n    match: '[#Verb (in|out|up|down|off|back)] (on|in)',\n    notIf: '#Copula',\n    tag: 'PhrasalVerb Particle',\n    reason: 'walk-in-on',\n  },\n  // went on for\n  { match: '(lived|went|crept|go) [on] for', group: 0, tag: 'PhrasalVerb', reason: 'went-on' },\n  // the curtains come down\n  { match: '#Verb (up|down|in|on|for)$', tag: 'PhrasalVerb #Particle', notIf: '#PhrasalVerb', reason: 'come-down$' },\n  // got me thinking\n  // { match: '(got|had) me [#Noun]', group: 0, tag: 'Verb', reason: 'got-me-gerund' },\n  // help stop\n  { match: 'help [(stop|end|make|start)]', group: 0, tag: 'Infinitive', reason: 'help-stop' },\n  // work in the office\n  { match: '#PhrasalVerb (in && #Particle) #Determiner', tag: '#Verb #Preposition #Determiner', unTag: 'PhrasalVerb', reason: 'work-in-the' },\n  // start listening\n  { match: '[(stop|start|finish|help)] #Gerund', group: 0, tag: 'Infinitive', reason: 'start-listening' },\n  // mis-fired\n  // { match: '[(mis)] #Verb', group: 0, tag: 'Verb', reason: 'mis-firedsa' },\n  //back it up\n  {\n    match: '#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]',\n    group: 0,\n    tag: 'Adverb',\n    reason: 'phrasal-pronoun-advb',\n  },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/verbs/verb-noun.js",
    "content": "export default [\n  // do the dance\n  { match: '#Infinitive (this|that|the) [#Infinitive]', group: 0, tag: 'Noun', reason: 'do-this-dance' },\n  //running-a-show\n  { match: '#Gerund #Determiner [#Infinitive]', group: 0, tag: 'Noun', reason: 'running-a-show' },\n  //the-only-reason\n  { match: '#Determiner (only|further|just|more|backward) [#Infinitive]', group: 0, tag: 'Noun', reason: 'the-only-reason' },\n  // a stream runs\n  { match: '(the|this|a|an) [#Infinitive] #Adverb? #Verb', group: 0, tag: 'Noun', reason: 'determiner5' },\n  //a nice deal\n  { match: '#Determiner #Adjective #Adjective? [#Infinitive]', group: 0, tag: 'Noun', reason: 'a-nice-inf' },\n  // the mexican train\n  { match: '#Determiner #Demonym [#PresentTense]', group: 0, tag: 'Noun', reason: 'mexican-train' },\n  //next career move\n  { match: '#Adjective #Noun+ [#Infinitive] #Copula', group: 0, tag: 'Noun', reason: 'career-move' },\n  // at some point\n  { match: 'at some [#Infinitive]', group: 0, tag: 'Noun', reason: 'at-some-inf' },\n  // goes to sleep\n  { match: '(go|goes|went) to [#Infinitive]', group: 0, tag: 'Noun', reason: 'goes-to-verb' },\n  //a close watch on\n  { match: '(a|an) #Adjective? #Noun [#Infinitive] (#Preposition|#Noun)', group: 0, notIf: 'from', tag: 'Noun', reason: 'a-noun-inf' },\n  //a tv show\n  { match: '(a|an) #Noun [#Infinitive]$', group: 0, tag: 'Noun', reason: 'a-noun-inf2' },\n  //is mark hughes\n  // { match: '#Copula [#Infinitive] #Noun', group: 0, tag: 'Noun', reason: 'is-pres-noun' },\n  // good wait staff\n  // { match: '#Adjective [#Infinitive] #Noun', group: 0, tag: 'Noun', reason: 'good-wait-staff' },\n  // running for congress\n  { match: '#Gerund #Adjective? for [#Infinitive]', group: 0, tag: 'Noun', reason: 'running-for' },\n  // running to work\n  // { match: '#Gerund #Adjective to [#Infinitive]', group: 0, tag: 'Noun', reason: 'running-to' },\n  // about love\n  { match: 'about [#Infinitive]', group: 0, tag: 'Singular', reason: 'about-love' },\n  // singers on stage\n  { match: '#Plural on [#Infinitive]', group: 0, tag: 'Noun', reason: 'on-stage' },\n  // any charge\n  { match: 'any [#Infinitive]', group: 0, tag: 'Noun', reason: 'any-charge' },\n  // no doubt\n  { match: 'no [#Infinitive]', group: 0, tag: 'Noun', reason: 'no-doubt' },\n  // number of seats\n  { match: 'number of [#PresentTense]', group: 0, tag: 'Noun', reason: 'number-of-x' },\n  // teaches/taught\n  { match: '(taught|teaches|learns|learned) [#PresentTense]', group: 0, tag: 'Noun', reason: 'teaches-x' },\n  // use reverse\n  { match: '(try|use|attempt|build|make) [#Verb #Particle?]', notIf: '(#Copula|#Noun|sure|fun|up)', group: 0, tag: 'Noun', reason: 'do-verb' },//make sure of\n  // checkmate is\n  { match: '^[#Infinitive] (is|was)', group: 0, tag: 'Noun', reason: 'checkmate-is' },\n  // get much sleep\n  { match: '#Infinitive much [#Infinitive]', group: 0, tag: 'Noun', reason: 'get-much' },\n  // cause i gotta\n  { match: '[cause] #Pronoun #Verb', group: 0, tag: 'Conjunction', reason: 'cause-cuz' },\n  // the cardio dance party\n  { match: 'the #Singular [#Infinitive] #Noun', group: 0, tag: 'Noun', notIf: '#Pronoun', reason: 'cardio-dance' },\n\n  // that should smoke\n  { match: '#Determiner #Modal [#Noun]', group: 0, tag: 'PresentTense', reason: 'should-smoke' },\n  //this rocks\n  { match: 'this [#Plural]', group: 0, tag: 'PresentTense', notIf: '(#Preposition|#Date)', reason: 'this-verbs' },\n  //voice that rocks\n  { match: '#Noun that [#Plural]', group: 0, tag: 'PresentTense', notIf: '(#Preposition|#Pronoun|way)', reason: 'voice-that-rocks' },\n  //that leads to\n  { match: 'that [#Plural] to', group: 0, tag: 'PresentTense', notIf: '#Preposition', reason: 'that-leads-to' },\n  //let him glue\n  {\n    match: '(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)',\n    group: 0,\n    tag: 'Infinitive',\n    reason: 'let-him-glue',\n  },\n\n  // assign all tasks\n  { match: '#Verb (all|every|each|most|some|no) [#PresentTense]', notIf: '#Modal', group: 0, tag: 'Noun', reason: 'all-presentTense' },  // PresentTense/Noun ambiguities\n  // big dreams, critical thinking\n  // have big dreams\n  { match: '(had|have|#PastTense) #Adjective [#PresentTense]', group: 0, tag: 'Noun', notIf: 'better', reason: 'adj-presentTense' },\n  // excellent answer spencer\n  // { match: '^#Adjective [#PresentTense]', group: 0, tag: 'Noun', reason: 'start adj-presentTense' },\n  // one big reason\n  { match: '#Value #Adjective [#PresentTense]', group: 0, tag: 'Noun', notIf: '#Copula', reason: 'one-big-reason' },\n  // won widespread support\n  { match: '#PastTense #Adjective+ [#PresentTense]', group: 0, tag: 'Noun', notIf: '(#Copula|better)', reason: 'won-wide-support' },\n  // many poses\n  { match: '(many|few|several|couple) [#PresentTense]', group: 0, tag: 'Noun', notIf: '#Copula', reason: 'many-poses' },\n  // very big dreams\n  { match: '#Determiner #Adverb #Adjective [%Noun|Verb%]', group: 0, tag: 'Noun', notIf: '#Copula', reason: 'very-big-dream' },\n  // from start to finish\n  { match: 'from #Noun to [%Noun|Verb%]', group: 0, tag: 'Noun', reason: 'start-to-finish' },\n  // for comparison or contrast\n  { match: '(for|with|of) #Noun (and|or|not) [%Noun|Verb%]', group: 0, tag: 'Noun', notIf: '#Pronoun', reason: 'for-food-and-gas' },\n  // adorable little store\n  { match: '#Adjective #Adjective [#PresentTense]', group: 0, tag: 'Noun', notIf: '#Copula', reason: 'adorable-little-store' },\n  // of basic training\n  // { match: '#Preposition #Adjective [#PresentTense]', group: 0, tag: 'Noun', reason: 'of-basic-training' },\n  // justifiying higher costs\n  { match: '#Gerund #Adverb? #Comparative [#PresentTense]', group: 0, tag: 'Noun', notIf: '#Copula', reason: 'higher-costs' },\n\n  { match: '(#Noun && @hasComma) #Noun (and|or) [#PresentTense]', group: 0, tag: 'Noun', notIf: '#Copula', reason: 'noun-list' },\n\n  // any questions for\n  { match: '(many|any|some|several) [#PresentTense] for', group: 0, tag: 'Noun', reason: 'any-verbs-for' },\n  // to facilitate gas exchange with\n  { match: `to #PresentTense #Noun [#PresentTense] #Preposition`, group: 0, tag: 'Noun', reason: 'gas-exchange' },\n  // waited until release\n  { match: `#PastTense (until|as|through|without) [#PresentTense]`, group: 0, tag: 'Noun', reason: 'waited-until-release' },\n  // selling like hot cakes\n  { match: `#Gerund like #Adjective? [#PresentTense]`, group: 0, tag: 'Plural', reason: 'like-hot-cakes' },\n  // some valid reason\n  { match: `some #Adjective [#PresentTense]`, group: 0, tag: 'Noun', reason: 'some-reason' },\n  // for some reason\n  { match: `for some [#PresentTense]`, group: 0, tag: 'Noun', reason: 'for-some-reason' },\n  // same kind of shouts\n  { match: `(same|some|the|that|a) kind of [#PresentTense]`, group: 0, tag: 'Noun', reason: 'some-kind-of' },\n  // a type of shout\n  { match: `(same|some|the|that|a) type of [#PresentTense]`, group: 0, tag: 'Noun', reason: 'some-type-of' },\n  // doing better for fights\n  { match: `#Gerund #Adjective #Preposition [#PresentTense]`, group: 0, tag: 'Noun', reason: 'doing-better-for-x' },\n  // get better aim\n  { match: `(get|got|have) #Comparative [#PresentTense]`, group: 0, tag: 'Noun', reason: 'got-better-aim' },\n  // whose name was\n  { match: 'whose [#PresentTense] #Copula', group: 0, tag: 'Noun', reason: 'whos-name-was' },\n  // give up on reason\n  { match: `#PhrasalVerb #Particle #Preposition [#PresentTense]`, group: 0, tag: 'Noun', reason: 'given-up-on-x' },\n  //there are reasons\n  { match: 'there (are|were) #Adjective? [#PresentTense]', group: 0, tag: 'Plural', reason: 'there-are' },\n  // 30 trains\n  { match: '#Value [#PresentTense] of', group: 0, notIf: '(one|1|#Copula|#Infinitive)', tag: 'Plural', reason: '2-trains' },\n  // compromises are possible\n  { match: '[#PresentTense] (are|were) #Adjective', group: 0, tag: 'Plural', reason: 'compromises-are-possible' },\n  // hope i helped\n  { match: '^[(hope|guess|thought|think)] #Pronoun #Verb', group: 0, tag: 'Infinitive', reason: 'suppose-i' },\n  //pursue its dreams\n  // { match: '#PresentTense #Possessive [#PresentTense]', notIf: '#Gerund', group: 0, tag: 'Plural', reason: 'pursue-its-dreams' },\n  // our unyielding support\n  { match: '#Possessive #Adjective [#Verb]', group: 0, tag: 'Noun', notIf: '#Copula', reason: 'our-full-support' },\n  // tastes good\n  { match: '[(tastes|smells)] #Adverb? #Adjective', group: 0, tag: 'PresentTense', reason: 'tastes-good' },\n  // are you playing golf\n  // { match: '^are #Pronoun [#Noun]', group: 0, notIf: '(here|there)', tag: 'Verb', reason: 'are-you-x' },\n  // ignoring commute\n  { match: '#Copula #Gerund [#PresentTense] !by?', group: 0, tag: 'Noun', notIf: 'going', reason: 'ignoring-commute' },\n  // noun-pastTense variables\n  { match: '#Determiner #Adjective? [(shed|thought|rose|bid|saw|spelt)]', group: 0, tag: 'Noun', reason: 'noun-past' },\n\n  // 'verb-to'\n  // how to watch\n  { match: 'how to [%Noun|Verb%]', group: 0, tag: 'Infinitive', reason: 'how-to-noun' },\n  // which boost it\n  { match: 'which [%Noun|Verb%] #Noun', group: 0, tag: 'Infinitive', reason: 'which-boost-it' },\n  // asking questions\n  { match: '#Gerund [%Plural|Verb%]', group: 0, tag: 'Plural', reason: 'asking-questions' },\n  // ready to stream\n  { match: '(ready|available|difficult|hard|easy|made|attempt|try) to [%Noun|Verb%]', group: 0, tag: 'Infinitive', reason: 'ready-to-noun' },\n  // bring to market\n  { match: '(bring|went|go|drive|run|bike) to [%Noun|Verb%]', group: 0, tag: 'Noun', reason: 'bring-to-noun' },\n  // can i sleep, would you look\n  { match: '#Modal #Noun [%Noun|Verb%]', group: 0, tag: 'Infinitive', reason: 'would-you-look' },\n  // is just spam\n  { match: '#Copula just [#Infinitive]', group: 0, tag: 'Noun', reason: 'is-just-spam' },\n  // request copies\n  { match: '^%Noun|Verb% %Plural|Verb%', tag: 'Imperative #Plural', reason: 'request-copies' },\n  // homemade pickles and drinks\n  { match: '#Adjective #Plural and [%Plural|Verb%]', group: 0, tag: '#Plural', reason: 'pickles-and-drinks' },\n  // the 1968 film\n  { match: '#Determiner #Year [#Verb]', group: 0, tag: 'Noun', reason: 'the-1968-film' },\n  // the break up\n  { match: '#Determiner [#PhrasalVerb #Particle]', group: 0, tag: 'Noun', reason: 'the-break-up' },\n  // the individual goals\n  { match: '#Determiner [%Adj|Noun%] #Noun', group: 0, tag: 'Adjective', notIf: '(#Pronoun|#Possessive|#ProperNoun)', reason: 'the-individual-goals' },\n  // work or prepare\n  { match: '[%Noun|Verb%] or #Infinitive', group: 0, tag: 'Infinitive', reason: 'work-or-prepare' },\n  // to give thanks\n  { match: 'to #Infinitive [#PresentTense]', group: 0, tag: 'Noun', notIf: '(#Gerund|#Copula|help)', reason: 'to-give-thanks' },\n  // kills me\n  { match: '[#Noun] me', group: 0, tag: 'Verb', reason: 'kills-me' },\n  // removes wrinkles\n  { match: '%Plural|Verb% %Plural|Verb%', tag: '#PresentTense #Plural', reason: 'removes-wrinkles' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/model/verbs/verbs.js",
    "content": "export default [\n  //sometimes adverbs - 'pretty good','well above'\n  {\n    match: '#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)',\n    tag: '#Copula #Adverb #Adjective',\n    reason: 'sometimes-adverb',\n  },\n  //i better ..\n  { match: '(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense', group: 0, tag: 'Modal', reason: 'i-better' },\n  // adj -> gerund\n  // like\n  { match: '(#Modal|i|they|we|do) not? [like]', group: 0, tag: 'PresentTense', reason: 'modal-like' },\n  // ==== Tense ====\n  //he left\n  { match: '#Noun #Adverb? [left]', group: 0, tag: 'PastTense', reason: 'left-verb' },\n\n  // ==== Copula ====\n  //will be running (not copula)\n  { match: 'will #Adverb? not? #Adverb? [be] #Gerund', group: 0, tag: 'Copula', reason: 'will-be-copula' },\n  //for more complex forms, just tag 'be'\n  { match: 'will #Adverb? not? #Adverb? [be] #Adjective', group: 0, tag: 'Copula', reason: 'be-copula' },\n  // ==== Infinitive ====\n  //march to\n  { match: '[march] (up|down|back|toward)', notIf: '#Date', group: 0, tag: 'Infinitive', reason: 'march-to' },\n  //must march\n  { match: '#Modal [march]', group: 0, tag: 'Infinitive', reason: 'must-march' },\n  // may be\n  { match: `[may] be`, group: 0, tag: 'Verb', reason: 'may-be' },\n  // subject to\n  { match: `[(subject|subjects|subjected)] to`, group: 0, tag: 'Verb', reason: 'subject to' },\n  // subject to\n  { match: `[home] to`, group: 0, tag: 'PresentTense', reason: 'home to' },\n\n  // === misc==\n  // side with\n  // { match: '[(side|fool|monkey)] with', group: 0, tag: 'Infinitive', reason: 'fool-with' },\n  // open the door\n  { match: '[open] #Determiner', group: 0, tag: 'Infinitive', reason: 'open-the' },\n  //were being run\n  { match: `(were|was) being [#PresentTense]`, group: 0, tag: 'PastTense', reason: 'was-being' },\n  //had been broken\n  { match: `(had|has|have) [been /en$/]`, group: 0, tag: 'Auxiliary Participle', reason: 'had-been-broken' },\n  //had been smoked\n  { match: `(had|has|have) [been /ed$/]`, group: 0, tag: 'Auxiliary PastTense', reason: 'had-been-smoked' },\n  //were being run\n  { match: `(had|has) #Adverb? [been] #Adverb? #PastTense`, group: 0, tag: 'Auxiliary', reason: 'had-been-adj' },\n  //had to walk\n  { match: `(had|has) to [#Noun] (#Determiner|#Possessive)`, group: 0, tag: 'Infinitive', reason: 'had-to-noun' },\n  // have read\n  { match: `have [#PresentTense]`, group: 0, tag: 'PastTense', notIf: '(come|gotten)', reason: 'have-read' },\n  // does that work\n  { match: `(does|will|#Modal) that [work]`, group: 0, tag: 'PastTense', reason: 'does-that-work' },\n  // sounds fun\n  { match: `[(sound|sounds)] #Adjective`, group: 0, tag: 'PresentTense', reason: 'sounds-fun' },\n  // look good\n  { match: `[(look|looks)] #Adjective`, group: 0, tag: 'PresentTense', reason: 'looks-good' },\n  // stops thinking\n  { match: `[(start|starts|stop|stops|begin|begins)] #Gerund`, group: 0, tag: 'Verb', reason: 'starts-thinking' },\n  // have read\n  { match: `(have|had) read`, tag: 'Modal #PastTense', reason: 'read-read' },\n  //were under cooked\n  {\n    match: `(is|was|were) [(under|over) #PastTense]`,\n    group: 0,\n    tag: 'Adverb Adjective',\n    reason: 'was-under-cooked',\n  },\n\n  // damn them\n  { match: '[shit] (#Determiner|#Possessive|them)', group: 0, tag: 'Verb', reason: 'swear1-verb' },\n  { match: '[damn] (#Determiner|#Possessive|them)', group: 0, tag: 'Verb', reason: 'swear2-verb' },\n  { match: '[fuck] (#Determiner|#Possessive|them)', group: 0, tag: 'Verb', reason: 'swear3-verb' },\n\n  // jobs that fit\n  { match: '#Plural that %Noun|Verb%', tag: '. #Preposition #Infinitive', reason: 'jobs-that-work' },\n  // works for me\n  { match: '[works] for me', group: 0, tag: 'PresentTense', reason: 'works-for-me' },\n  // as we please\n  { match: 'as #Pronoun [please]', group: 0, tag: 'Infinitive', reason: 'as-we-please' },\n  // verb-prefixes - 'co write'\n  { match: '[(co|mis|de|inter|intra|pre|re|un|out|under|over|counter)] #Verb', group: 0, tag: ['Verb', 'Prefix'], notIf: '(#Copula|#PhrasalVerb)', reason: 'co-write' },\n  // dressed and left\n  { match: '#PastTense and [%Adj|Past%]', group: 0, tag: 'PastTense', reason: 'dressed-and-left' },\n  // melted and fallen\n  { match: '[%Adj|Past%] and #PastTense', group: 0, tag: 'PastTense', reason: 'dressed-and-left' },\n  // is he stoked\n  { match: '#Copula #Pronoun [%Adj|Past%]', group: 0, tag: 'Adjective', reason: 'is-he-stoked' },\n  // to dream of\n  { match: 'to [%Noun|Verb%] #Preposition', group: 0, tag: 'Infinitive', reason: 'to-dream-of' },\n]\n"
  },
  {
    "path": "src/2-two/postTagger/plugin.js",
    "content": "import model from './model/index.js'\nimport compute from './compute/index.js'\nimport api from './api.js'\n\n\nconst plugin = {\n  api,\n  compute,\n  model,\n  hooks: ['postTagger'],\n}\nexport default plugin\n"
  },
  {
    "path": "src/2-two/preTagger/compute/index.js",
    "content": "import preTagger from './tagger/index.js'\nimport root from './root.js'\nimport penn from './penn.js'\n\nexport default { preTagger, root, penn }\n"
  },
  {
    "path": "src/2-two/preTagger/compute/penn.js",
    "content": "// rough connection between compromise tagset and Penn Treebank\n// https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html\n\nconst mapping = {\n  // adverbs\n  // 'Comparative': 'RBR',\n  // 'Superlative': 'RBS',\n  Adverb: 'RB',\n\n  // adjectives\n  Comparative: 'JJR',\n  Superlative: 'JJS',\n  Adjective: 'JJ',\n  TO: 'Conjunction',\n\n  // verbs\n  Modal: 'MD',\n  Auxiliary: 'MD',\n  Gerund: 'VBG', //throwing\n  PastTense: 'VBD', //threw\n  Participle: 'VBN', //thrown\n  PresentTense: 'VBZ', //throws\n  Infinitive: 'VB', //throw\n  Particle: 'RP', //phrasal particle\n  Verb: 'VB', // throw\n\n  // pronouns\n  Pronoun: 'PRP',\n\n  // misc\n  Cardinal: 'CD',\n  Conjunction: 'CC',\n  Determiner: 'DT',\n  Preposition: 'IN',\n  // 'Determiner': 'WDT',\n  // 'Expression': 'FW',\n  QuestionWord: 'WP',\n  Expression: 'UH',\n\n  //nouns\n  Possessive: 'POS',\n  ProperNoun: 'NNP',\n  Person: 'NNP',\n  Place: 'NNP',\n  Organization: 'NNP',\n  Singular: 'NN',\n  Plural: 'NNS',\n  Noun: 'NN',\n\n  There: 'EX', //'there'\n  // 'Adverb':'WRB',\n  // 'Noun':'PDT', //predeterminer\n  // 'Noun':'SYM', //symbol\n  // 'Noun':'NFP', //\n\n  //  WDT \tWh-determiner\n  // \tWP \tWh-pronoun\n  // \tWP$ \tPossessive wh-pronoun\n  // \tWRB \tWh-adverb\n}\n\nconst toPenn = function (term) {\n  // try some ad-hoc ones\n  if (term.tags.has('ProperNoun') && term.tags.has('Plural')) {\n    return 'NNPS'\n  }\n  if (term.tags.has('Possessive') && term.tags.has('Pronoun')) {\n    return 'PRP$'\n  }\n  if (term.normal === 'there') {\n    return 'EX'\n  }\n  if (term.normal === 'to') {\n    return 'TO'\n  }\n  // run through an ordered list of tags\n  const arr = term.tagRank || []\n  for (let i = 0; i < arr.length; i += 1) {\n    if (mapping.hasOwnProperty(arr[i])) {\n      return mapping[arr[i]]\n    }\n  }\n  return null\n}\n\nconst pennTag = function (view) {\n  view.compute('tagRank')\n  view.docs.forEach(terms => {\n    terms.forEach(term => {\n      term.penn = toPenn(term)\n    })\n  })\n}\nexport default pennTag\n"
  },
  {
    "path": "src/2-two/preTagger/compute/root.js",
    "content": "const toRoot = {\n  // 'spencer's' -> 'spencer'\n  'Possessive': (term) => {\n    let str = term.machine || term.normal || term.text\n    str = str.replace(/'s$/, '')\n    return str\n  },\n  // 'drinks' -> 'drink'\n  'Plural': (term, world) => {\n    const str = term.machine || term.normal || term.text\n    return world.methods.two.transform.noun.toSingular(str, world.model)\n  },\n  // ''\n  'Copula': () => {\n    return 'is'\n  },\n  // 'walked' -> 'walk'\n  'PastTense': (term, world) => {\n    const str = term.machine || term.normal || term.text\n    return world.methods.two.transform.verb.toInfinitive(str, world.model, 'PastTense')\n  },\n  // 'walking' -> 'walk'\n  'Gerund': (term, world) => {\n    const str = term.machine || term.normal || term.text\n    return world.methods.two.transform.verb.toInfinitive(str, world.model, 'Gerund')\n  },\n  // 'walks' -> 'walk'\n  'PresentTense': (term, world) => {\n    const str = term.machine || term.normal || term.text\n    if (term.tags.has('Infinitive')) {\n      return str\n    }\n    return world.methods.two.transform.verb.toInfinitive(str, world.model, 'PresentTense')\n  },\n  // 'quieter' -> 'quiet'\n  'Comparative': (term, world) => {\n    const str = term.machine || term.normal || term.text\n    return world.methods.two.transform.adjective.fromComparative(str, world.model)\n  },\n  // 'quietest' -> 'quiet'\n  'Superlative': (term, world) => {\n    const str = term.machine || term.normal || term.text\n    return world.methods.two.transform.adjective.fromSuperlative(str, world.model)\n  },\n  // 'suddenly' -> 'sudden'\n  'Adverb': (term, world) => {\n    const { fromAdverb } = world.methods.two.transform.adjective\n    const str = term.machine || term.normal || term.text\n    return fromAdverb(str)\n  },\n}\n\nconst getRoot = function (view) {\n  const world = view.world\n  const keys = Object.keys(toRoot)\n  view.docs.forEach(terms => {\n    for (let i = 0; i < terms.length; i += 1) {\n      const term = terms[i]\n      for (let k = 0; k < keys.length; k += 1) {\n        if (term.tags.has(keys[k])) {\n          const fn = toRoot[keys[k]]\n          const root = fn(term, world)\n          if (term.normal !== root) {\n            term.root = root\n          }\n          break\n        }\n      }\n    }\n  })\n}\nexport default getRoot"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/1st-pass/01-colons.js",
    "content": "const byPunctuation = function (terms, i, model, world) {\n  const setTag = world.methods.one.setTag\n  // colon following first word\n  // edit: foo\n  // breaking: foobar\n  if (i === 0 && terms.length >= 3) {\n    const hasColon = /:/\n    const post = terms[0].post\n    if (post.match(hasColon)) {\n      // phone: 555-2938\n      const nextTerm = terms[1]\n      if (nextTerm.tags.has('Value') || nextTerm.tags.has('Email') || nextTerm.tags.has('PhoneNumber')) {\n        return\n      }\n      //\n      setTag([terms[0]], 'Expression', world, null, `2-punct-colon''`)\n    }\n  }\n}\nexport default byPunctuation\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/1st-pass/02-hyphens.js",
    "content": "const byHyphen = function (terms, i, model, world) {\n  const setTag = world.methods.one.setTag\n  // two words w/ a dash\n  if (terms[i].post === '-' && terms[i + 1]) {\n    setTag([terms[i], terms[i + 1]], 'Hyphenated', world, null, `1-punct-hyphen''`)\n\n    // bone-headed, man-made, good-tempered, coursely-ground\n    // if (terms[i + 1].tags.has('PastTense')) {\n    //   let tags = terms[i].tags\n    //   if (tags.has('Noun') || tags.has('Adverb')) {\n    //     setTag([terms[i], terms[i + 1]], 'Adjective', world, null, `2-punct-dash''`)\n    //   }\n\n    // }\n  }\n}\nexport default byHyphen\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/2nd-pass/00-tagSwitch.js",
    "content": "const prefix = /^(under|over|mis|re|un|dis|semi)-?/\n\nconst tagSwitch = function (terms, i, model) {\n  const switches = model.two.switches\n  const term = terms[i]\n  if (switches.hasOwnProperty(term.normal)) {\n    term.switch = switches[term.normal]\n    return\n  }\n  // support 'restrike' -> 'strike'\n  if (prefix.test(term.normal)) {\n    const stem = term.normal.replace(prefix, '')\n    if (stem.length > 3 && switches.hasOwnProperty(stem)) {\n      term.switch = switches[stem]\n    }\n  }\n}\nexport default tagSwitch"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/2nd-pass/01-case.js",
    "content": "import fastTag from '../_fastTag.js'\nimport fillTags from '../3rd-pass/_fillTags.js'\n\nconst titleCase = /^\\p{Lu}[\\p{Ll}'’]/u\nconst hasNumber = /[0-9]/\nconst notProper = ['Date', 'Month', 'WeekDay', 'Unit', 'Expression']\n\n// roman numeral by regex\nconst hasIVX = /[IVX]/ // does it ~look like~ a roman numeral?\n// quick-version\nconst romanNumeral = /^[IVXLCDM]{2,}$/\n// https://stackoverflow.com/a/267405/168877\nconst romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/\nconst nope = {\n  li: true,\n  dc: true,\n  md: true,\n  dm: true,\n  ml: true,\n}\n\n// if it's a unknown titlecase word, it's a propernoun\nconst checkCase = function (terms, i, model) {\n  const term = terms[i]\n  // assume terms are already indexed\n  term.index = term.index || [0, 0]\n  const index = term.index[1]\n  const str = term.text || '' //need case info\n  // titlecase and not first word of sentence\n  if (index !== 0 && titleCase.test(str) === true && hasNumber.test(str) === false) {\n    // skip Dates and stuff\n    if (notProper.find(tag => term.tags.has(tag))) {\n      return null\n    }\n    // first word in a quotation?\n    if (term.pre.match(/[\"']$/)) {\n      return null\n    }\n    if (term.normal === 'the') {\n      return null\n    }\n    fillTags(terms, i, model)\n    if (!term.tags.has('Noun') && !term.frozen) {\n      term.tags.clear()\n    }\n    fastTag(term, 'ProperNoun', '2-titlecase')\n    return true\n  }\n  //roman numberals - XVII\n  if (str.length >= 2 && romanNumeral.test(str) && hasIVX.test(str) && romanNumValid.test(str) && !nope[term.normal]) {\n    fastTag(term, 'RomanNumeral', '2-xvii')\n    return true\n  }\n\n  return null\n}\nexport default checkCase\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/2nd-pass/02-suffix.js",
    "content": "import fastTag from '../_fastTag.js'\n\n//sweep-through all suffixes\nconst suffixLoop = function (str = '', suffixes = []) {\n  const len = str.length\n  let max = 7\n  if (len <= max) {\n    max = len - 1\n  }\n  for (let i = max; i > 1; i -= 1) {\n    const suffix = str.substring(len - i, len)\n    if (suffixes[suffix.length].hasOwnProperty(suffix) === true) {\n      // console.log(suffix)\n      const tag = suffixes[suffix.length][suffix]\n      return tag\n    }\n  }\n  return null\n}\n\n// decide tag from the ending of the word\nconst tagBySuffix = function (terms, i, model) {\n  const term = terms[i]\n  if (term.tags.size === 0) {\n    let tag = suffixLoop(term.normal, model.two.suffixPatterns)\n    if (tag !== null) {\n      fastTag(term, tag, '2-suffix')\n      term.confidence = 0.7\n      return true\n    }\n    // try implicit form of word, too\n    if (term.implicit) {\n      tag = suffixLoop(term.implicit, model.two.suffixPatterns)\n      if (tag !== null) {\n        fastTag(term, tag, '2-implicit-suffix')\n        term.confidence = 0.7\n        return true\n      }\n    }\n    // Infinitive suffix + 's' can be PresentTense\n    // if (term.normal[term.normal.length - 1] === 's') {\n    //   let str = term.normal.replace(/s$/, '')\n    //   if (suffixLoop(str, model.two.suffixPatterns) === 'Infinitive') {\n    //     console.log(str)\n    //     fastTag(term, 'PresentTense', '2-implied-present')\n    //     term.confidence = 0.5\n    //     return true\n    //   }\n    // }\n  }\n  return null\n}\nexport default tagBySuffix\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/2nd-pass/03-regex.js",
    "content": "const hasApostrophe = /['‘’‛‵′`´]/\n\n// normal regexes\nconst doRegs = function (str, regs) {\n  for (let i = 0; i < regs.length; i += 1) {\n    if (regs[i][0].test(str) === true) {\n      return regs[i]\n    }\n  }\n  return null\n}\n// suffix-regexes, indexed by last-character\nconst doEndsWith = function (str = '', byEnd) {\n  const char = str[str.length - 1]\n  if (byEnd.hasOwnProperty(char) === true) {\n    const regs = byEnd[char] || []\n    for (let r = 0; r < regs.length; r += 1) {\n      if (regs[r][0].test(str) === true) {\n        return regs[r]\n      }\n    }\n  }\n  return null\n}\n\nconst checkRegex = function (terms, i, model, world) {\n  const setTag = world.methods.one.setTag\n  const { regexText, regexNormal, regexNumbers, endsWith } = model.two\n  const term = terms[i]\n  const normal = term.machine || term.normal\n  let text = term.text\n  // keep dangling apostrophe?\n  if (hasApostrophe.test(term.post) && !hasApostrophe.test(term.pre)) {\n    text += term.post.trim()\n  }\n  let arr = doRegs(text, regexText) || doRegs(normal, regexNormal)\n  // hide a bunch of number regexes behind this one\n  if (!arr && /[0-9]/.test(normal)) {\n    arr = doRegs(normal, regexNumbers)\n  }\n  // only run endsWith if we're desperate\n  if (!arr && term.tags.size === 0) {\n    arr = doEndsWith(normal, endsWith)\n  }\n  if (arr) {\n    // console.log(arr)\n    setTag([term], arr[1], world, null, `2-regex-'${arr[2] || arr[0]}'`)\n    term.confidence = 0.6\n    return true\n  }\n  return null\n}\nexport default checkRegex\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/2nd-pass/04-prefix.js",
    "content": "import fastTag from '../_fastTag.js'\n// const prefixes = /^(anti|re|un|non|extra|inter|intra|over)([a-z-]{3})/\n\n//sweep-through all prefixes\nconst prefixLoop = function (str = '', prefixes = []) {\n  const len = str.length\n  let max = 7\n  if (max > len - 3) {\n    max = len - 3\n  }\n  for (let i = max; i > 2; i -= 1) {\n    const prefix = str.substring(0, i)\n    if (prefixes[prefix.length].hasOwnProperty(prefix) === true) {\n      const tag = prefixes[prefix.length][prefix]\n      return tag\n    }\n  }\n  return null\n}\n\n// give 'overwork' the same tag as 'work'\nconst checkPrefix = function (terms, i, model) {\n  const term = terms[i]\n  if (term.tags.size === 0) {\n    const tag = prefixLoop(term.normal, model.two.prefixPatterns)\n    if (tag !== null) {\n      // console.log(term.normal, '->', tag)\n      fastTag(term, tag, '2-prefix')\n      term.confidence = 0.5\n      return true\n    }\n  }\n  return null\n}\nexport default checkPrefix\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/2nd-pass/05-year.js",
    "content": "import fastTag from '../_fastTag.js'\nconst min = 1400\nconst max = 2100\n\nconst dateWords = new Set([\n  'in',\n  'on',\n  'by',\n  'until',\n  'for',\n  'to',\n  'during',\n  'throughout',\n  'through',\n  'within',\n  'before',\n  'after',\n  'of',\n  'this',\n  'next',\n  'last',\n  'circa',\n  'around',\n  'post',\n  'pre',\n  'budget',\n  'classic',\n  'plan',\n  'may',\n])\n\nconst seemsGood = function (term) {\n  if (!term) {\n    return false\n  }\n  const str = term.normal || term.implicit\n  if (dateWords.has(str)) {\n    return true\n  }\n  if (term.tags.has('Date') || term.tags.has('Month') || term.tags.has('WeekDay') || term.tags.has('Year')) {\n    return true\n  }\n  // 1999 Film Festival\n  if (term.tags.has('ProperNoun')) {\n    return true\n  }\n  return false\n}\n\nconst seemsOkay = function (term) {\n  if (!term) {\n    return false\n  }\n  if (term.tags.has('Ordinal')) {\n    return true\n  }\n  // untagged 'june 13 2007'\n  if (term.tags.has('Cardinal') && term.normal.length < 3) {\n    return true\n  }\n  // 2020 was ..\n  if (term.normal === 'is' || term.normal === 'was') {\n    return true\n  }\n  return false\n}\n\nconst seemsFine = function (term) {\n  return term && (term.tags.has('Date') || term.tags.has('Month') || term.tags.has('WeekDay') || term.tags.has('Year'))\n}\n\n// recognize '1993' as a year\nconst tagYear = function (terms, i) {\n  const term = terms[i]\n  if (term.tags.has('NumericValue') && term.tags.has('Cardinal') && term.normal.length === 4) {\n    const num = Number(term.normal)\n    // number between 1400 and 2100\n    if (num && !isNaN(num)) {\n      if (num > min && num < max) {\n        const lastTerm = terms[i - 1]\n        const nextTerm = terms[i + 1]\n        if (seemsGood(lastTerm) || seemsGood(nextTerm)) {\n          return fastTag(term, 'Year', '2-tagYear')\n        }\n        // or is it really-close to a year?\n        if (num >= 1920 && num < 2025) {\n          // look at neighbours\n          if (seemsOkay(lastTerm) || seemsOkay(nextTerm)) {\n            return fastTag(term, 'Year', '2-tagYear-close')\n          }\n          // look at far-neighbours\n          if (seemsFine(terms[i - 2]) || seemsFine(terms[i + 2])) {\n            return fastTag(term, 'Year', '2-tagYear-far')\n          }\n          // 'the 2002 hit', 'my 1950 convertable'\n          if (lastTerm && (lastTerm.tags.has('Determiner') || lastTerm.tags.has('Possessive'))) {\n            if (nextTerm && nextTerm.tags.has('Noun') && !nextTerm.tags.has('Plural')) {\n              return fastTag(term, 'Year', '2-tagYear-noun')\n            }\n          }\n        }\n      }\n    }\n  }\n  return null\n}\n\nexport default tagYear\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/3rd-pass/01-acronym.js",
    "content": "import fastTag from '../_fastTag.js'\n\nconst oneLetterAcronym = /^[A-Z]('s|,)?$/\nconst isUpperCase = /^[A-Z-]+$/\nconst upperThenS = /^[A-Z]+s$/\nconst periodAcronym = /([A-Z]\\.)+[A-Z]?,?$/\nconst noPeriodAcronym = /[A-Z]{2,}('s|,)?$/\nconst lowerCaseAcronym = /([a-z]\\.)+[a-z]\\.?$/\n\nconst oneLetterWord = {\n  I: true,\n  A: true,\n}\n\n// only assume these are places if they are uppercased\nconst places = {\n  la: true,\n  ny: true,\n  us: true,\n  dc: true,\n  gb: true,\n}\n\n// just uppercase acronyms, no periods - 'UNOCHA'\nconst isNoPeriodAcronym = function (term, model) {\n  let str = term.text\n  // ensure it's all upper-case\n  if (isUpperCase.test(str) === false) {\n    // allow lower-case plural - 'MMVAs'\n    if (str.length > 3 && upperThenS.test(str) === true) {\n      str = str.replace(/s$/, '')\n    } else {\n      return false\n    }\n  }\n  // long capitalized words are not usually either\n  if (str.length > 5) {\n    return false\n  }\n  // 'I' is not a acronym\n  if (oneLetterWord.hasOwnProperty(str)) {\n    return false\n  }\n  // known-words, like 'PIZZA' is not an acronym.\n  if (model.one.lexicon.hasOwnProperty(term.normal)) {\n    return false\n  }\n  //like N.D.A\n  if (periodAcronym.test(str) === true) {\n    return true\n  }\n  //like c.e.o\n  if (lowerCaseAcronym.test(str) === true) {\n    return true\n  }\n  //like 'F.'\n  if (oneLetterAcronym.test(str) === true) {\n    return true\n  }\n  //like NDA\n  if (noPeriodAcronym.test(str) === true) {\n    return true\n  }\n  return false\n}\n\nconst isAcronym = function (terms, i, model) {\n  const term = terms[i]\n  //these are not acronyms\n  if (term.tags.has('RomanNumeral') || term.tags.has('Acronym') || term.frozen) {\n    return null\n  }\n  //non-period ones are harder\n  if (isNoPeriodAcronym(term, model)) {\n    term.tags.clear()\n    fastTag(term, ['Acronym', 'Noun'], '3-no-period-acronym')\n    // ny, la\n    if (places[term.normal] === true) {\n      fastTag(term, 'Place', '3-place-acronym')\n    }\n    // UFOs\n    if (upperThenS.test(term.text) === true) {\n      fastTag(term, 'Plural', '3-plural-acronym')\n    }\n    // if(term.normal\n    return true\n  }\n  // one-letter acronyms\n  if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n    term.tags.clear()\n    fastTag(term, ['Acronym', 'Noun'], '3-one-letter-acronym')\n    return true\n  }\n  //if it's a very-short organization?\n  if (term.tags.has('Organization') && term.text.length <= 3) {\n    fastTag(term, 'Acronym', '3-org-acronym')\n    return true\n  }\n  // upper-case org, like UNESCO\n  if (term.tags.has('Organization') && isUpperCase.test(term.text) && term.text.length <= 6) {\n    fastTag(term, 'Acronym', '3-titlecase-acronym')\n    return true\n  }\n  return null\n}\nexport default isAcronym\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/3rd-pass/02-neighbours.js",
    "content": "import fastTag from '../_fastTag.js'\nimport fillTag from './_fillTags.js'\n\nconst lookAtWord = function (term, words) {\n  if (!term) {\n    return null\n  }\n  // look at prev word <-\n  const found = words.find(a => term.normal === a[0])\n  if (found) {\n    return found[1]\n  }\n  return null\n}\n\nconst lookAtTag = function (term, tags) {\n  if (!term) {\n    return null\n  }\n  const found = tags.find(a => term.tags.has(a[0]))\n  if (found) {\n    return found[1]\n  }\n  return null\n}\n\n// look at neighbours for hints on unknown words\nconst neighbours = function (terms, i, model) {\n  const { leftTags, leftWords, rightWords, rightTags } = model.two.neighbours\n  const term = terms[i]\n  if (term.tags.size === 0) {\n    let tag = null\n    // look left <-\n    tag = tag || lookAtWord(terms[i - 1], leftWords)\n    // look right ->\n    tag = tag || lookAtWord(terms[i + 1], rightWords)\n    // look left <-\n    tag = tag || lookAtTag(terms[i - 1], leftTags)\n    // look right ->\n    tag = tag || lookAtTag(terms[i + 1], rightTags)\n    if (tag) {\n      fastTag(term, tag, '3-[neighbour]')\n      fillTag(terms, i, model)\n      terms[i].confidence = 0.2\n      return true\n    }\n  }\n  return null\n}\nexport default neighbours\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/3rd-pass/03-orgWords.js",
    "content": "const isTitleCase = (str) => /^\\p{Lu}[\\p{Ll}'’]/u.test(str)\n\nconst isOrg = function (term, i, yelling) {\n  if (!term) {\n    return false\n  }\n  if (term.tags.has('FirstName') || term.tags.has('Place')) {\n    return false\n  }\n  if (term.tags.has('ProperNoun') || term.tags.has('Organization') || term.tags.has('Acronym')) {\n    return true\n  }\n  // allow anything titlecased to be an org\n  if (!yelling && isTitleCase(term.text)) {\n    // only tag a titlecased first-word, if it checks-out\n    if (i === 0) {\n      return term.tags.has('Singular')\n    }\n    return true\n  }\n  return false\n}\n\nconst tagOrgs = function (terms, i, world, yelling) {\n  const orgWords = world.model.two.orgWords\n  const setTag = world.methods.one.setTag\n  const term = terms[i]\n  const str = term.machine || term.normal\n  if (orgWords[str] === true && isOrg(terms[i - 1], i - 1, yelling)) {\n    setTag([terms[i]], 'Organization', world, null, '3-[org-word]')\n    // loop backwards, tag organization-like things\n    for (let t = i; t >= 0; t -= 1) {\n      if (isOrg(terms[t], t, yelling)) {\n        setTag([terms[t]], 'Organization', world, null, '3-[org-word]')\n      } else {\n        break\n      }\n    }\n  }\n  return null\n}\nexport default tagOrgs"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/3rd-pass/04-placeWords.js",
    "content": "const isTitleCase = str => /^\\p{Lu}[\\p{Ll}'’]/u.test(str)\nconst isPossessive = /'s$/\n\n// words that can fit inside a place\nconst placeCont = new Set([\n  'athletic',\n  'city',\n  'community',\n  'eastern',\n  'federal',\n  'financial',\n  'great',\n  'historic',\n  'historical',\n  'local',\n  'memorial',\n  'municipal',\n  'national',\n  'northern',\n  'provincial',\n  'southern',\n  'state',\n  'western',\n  'spring',\n  'pine',\n  'sunset',\n  'view',\n  'oak',\n  'maple',\n  'spruce',\n  'cedar',\n  'willow',\n])\n// center of...\nconst noBefore = new Set(['center', 'centre', 'way', 'range', 'bar', 'bridge', 'field', 'pit'])\n\nconst isPlace = function (term, i, yelling) {\n  if (!term) {\n    return false\n  }\n  const tags = term.tags\n  if (tags.has('Organization') || tags.has('Possessive') || isPossessive.test(term.normal)) {\n    return false\n  }\n  if (tags.has('ProperNoun') || tags.has('Place')) {\n    return true\n  }\n  // allow anything titlecased to be an org\n  if (!yelling && isTitleCase(term.text)) {\n    // only tag a titlecased first-word, if it checks-out\n    if (i === 0) {\n      return tags.has('Singular')\n    }\n    return true\n  }\n  return false\n}\n\nconst tagOrgs = function (terms, i, world, yelling) {\n  const placeWords = world.model.two.placeWords\n  const setTag = world.methods.one.setTag\n  const term = terms[i]\n  const str = term.machine || term.normal\n\n  // 'river', delta, street, etc\n  if (placeWords[str] === true) {\n    //loop backward - 'Foo River ...'\n    for (let n = i - 1; n >= 0; n -= 1) {\n      // 'municipal ...'\n      if (placeCont.has(terms[n].normal)) {\n        continue\n      }\n      if (isPlace(terms[n], n, yelling)) {\n        setTag(terms.slice(n, i + 1), 'Place', world, null, '3-[place-of-foo]')\n        continue\n      }\n      break\n    }\n    //loop forward - 'River of Foo...'\n    // 'center of x'\n    if (noBefore.has(str)) {\n      return false\n    }\n    for (let n = i + 1; n < terms.length; n += 1) {\n      if (isPlace(terms[n], n, yelling)) {\n        setTag(terms.slice(i, n + 1), 'Place', world, null, '3-[foo-place]')\n        return true\n      }\n      // 'municipal ...'\n      if (terms[n].normal === 'of' || placeCont.has(terms[n].normal)) {\n        continue\n      }\n      break\n    }\n  }\n  return null\n}\nexport default tagOrgs\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/3rd-pass/05-fallback.js",
    "content": "import fastTag from '../_fastTag.js'\nimport fillTag from './_fillTags.js'\n\nconst nounFallback = function (terms, i, model) {\n  let isEmpty = false\n  const tags = terms[i].tags\n  if (tags.size === 0) {\n    isEmpty = true\n  } else if (tags.size === 1) {\n    // weaker tags to ignore\n    if (tags.has('Hyphenated') || tags.has('HashTag') || tags.has('Prefix') || tags.has('SlashedTerm')) {\n      isEmpty = true\n    }\n  }\n  if (isEmpty) {\n    fastTag(terms[i], 'Noun', '3-[fallback]')\n    // try to give it singluar/plural tags, too\n    fillTag(terms, i, model)\n    terms[i].confidence = 0.1\n  }\n}\nexport default nounFallback\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/3rd-pass/06-switches.js",
    "content": "/* eslint-disable no-console */\nimport fillTags from './_fillTags.js'\nconst env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env\nimport adhoc from './_adhoc.js'\nconst prefix = /^(under|over|mis|re|un|dis|semi)-?/\n\nconst checkWord = (term, obj) => {\n  if (!term || !obj) {\n    return null\n  }\n  const str = term.normal || term.implicit\n  let found = null\n  if (obj.hasOwnProperty(str)) {\n    found = obj[str]\n  }\n  if (found && env.DEBUG_TAGS) {\n    console.log(`\\n  \\x1b[2m\\x1b[3m     ↓ - '${str}' \\x1b[0m`)\n  }\n  return found\n}\n\nconst checkTag = (term, obj = {}, tagSet) => {\n  if (!term || !obj) {\n    return null\n  }\n  // rough sort, so 'Noun' is after ProperNoun, etc\n  const tags = Array.from(term.tags).sort((a, b) => {\n    const numA = tagSet[a] ? tagSet[a].parents.length : 0\n    const numB = tagSet[b] ? tagSet[b].parents.length : 0\n    return numA > numB ? -1 : 1\n  })\n  let found = tags.find(tag => obj[tag])\n  if (found && env.DEBUG_TAGS) {\n    console.log(`  \\x1b[2m\\x1b[3m      ↓ - '${term.normal || term.implicit}' (#${found})  \\x1b[0m`)\n  }\n  found = obj[found]\n  return found\n}\n\nconst pickTag = function (terms, i, clues, model) {\n  if (!clues) {\n    return null\n  }\n  const beforeIndex = terms[i - 1]?.text !== 'also' ? i - 1 : Math.max(0, i - 2)\n  const tagSet = model.one.tagSet\n  // look -> right word, first\n  let tag = checkWord(terms[i + 1], clues.afterWords)\n  // look <- left word, second\n  tag = tag || checkWord(terms[beforeIndex], clues.beforeWords)\n  // look <- left tag\n  tag = tag || checkTag(terms[beforeIndex], clues.beforeTags, tagSet)\n  // look -> right tag\n  tag = tag || checkTag(terms[i + 1], clues.afterTags, tagSet)\n  // console.log(clues)\n  return tag\n}\n\n// words like 'bob' that can change between two tags\nconst doSwitches = function (terms, i, world) {\n  const model = world.model\n  const setTag = world.methods.one.setTag\n  const { switches, clues } = model.two\n  const term = terms[i]\n  let str = term.normal || term.implicit || ''\n  // support prefixes for switching words\n  if (prefix.test(str) && !switches[str]) {\n    str = str.replace(prefix, '') // could use some guards, here\n  }\n  if (term.switch) {\n    const form = term.switch\n    // skip propernouns, acronyms, etc\n    if (term.tags.has('Acronym') || term.tags.has('PhrasalVerb')) {\n      return\n    }\n    let tag = pickTag(terms, i, clues[form], model)\n    // lean-harder on some variable forms\n    if (adhoc[form]) {\n      tag = adhoc[form](terms, i) || tag\n    }\n    // did we find anything?\n    if (tag) {\n      // tag it\n      setTag([term], tag, world, null, `3-[switch] (${form})`)\n      // add plural/singular etc.\n      fillTags(terms, i, model)\n    } else if (env.DEBUG_TAGS) {\n      console.log(`\\n -> X  - '${str}'  : (${form})  `)\n    }\n  }\n}\nexport default doSwitches\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/3rd-pass/07-verb-type.js",
    "content": "const verbType = function (terms, i, model, world) {\n  const setTag = world.methods.one.setTag\n  const term = terms[i]\n  const types = ['PastTense', 'PresentTense', 'Auxiliary', 'Modal', 'Particle']\n  if (term.tags.has('Verb')) {\n    const type = types.find(typ => term.tags.has(typ))\n    // is it a bare #Verb tag?\n    if (!type) {\n      setTag([term], 'Infinitive', world, null, `2-verb-type''`)\n    }\n  }\n}\nexport default verbType"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/3rd-pass/08-imperative.js",
    "content": "const beside = {\n  there: true, //go there\n  this: true, //try this\n  it: true, //do it\n  him: true,\n  her: true,\n  us: true, //tell us\n}\n\n// '[place] tea bags in hot water'\nconst imperative = function (terms, world) {\n  const setTag = world.methods.one.setTag\n  const multiWords = world.model.one._multiCache || {}\n  const t = terms[0]\n  const isRight = t.switch === 'Noun|Verb' || t.tags.has('Infinitive')\n  if (isRight && terms.length >= 2) {\n    // ensure rest of sentence is ok\n    if (terms.length < 4 && !beside[terms[1].normal]) {\n      return\n    }\n    // avoid multi-noun words like '[board] room'\n    if (!t.tags.has('PhrasalVerb') && multiWords.hasOwnProperty(t.normal)) {\n      return\n    }\n    // is the next word a noun? - 'compile information ..'\n    const nextNoun = terms[1].tags.has('Noun') || terms[1].tags.has('Determiner')\n    if (nextNoun) {\n      // ensure no soon-verb -  'waste materials are ..'\n      const soonVerb = terms.slice(1, 3).some(term => term.tags.has('Verb'))\n      if (!soonVerb || t.tags.has('#PhrasalVerb')) {\n        setTag([t], 'Imperative', world, null, '3-[imperative]')\n      }\n    }\n  }\n}\nexport default imperative\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/3rd-pass/_adhoc.js",
    "content": "const isTitleCase = /^[A-Z][a-z]/\n\nconst isCapital = (terms, i) => {\n  if (terms[i].tags.has('ProperNoun') && isTitleCase.test(terms[i].text)) {// 'Comfort Inn'\n    return 'Noun'\n  }\n  return null\n}\n\nconst isAlone = (terms, i, tag) => {\n  if (i === 0 && !terms[1]) {// 'Help'\n    return tag\n  }\n  return null\n}\n\n// 'a rental'\nconst isEndNoun = function (terms, i) {\n  if (!terms[i + 1] && terms[i - 1] && terms[i - 1].tags.has('Determiner')) {\n    return 'Noun'\n  }\n  return null\n}\n\n// the first word in the sentence\nconst isStart = function (terms, i, tag) {\n  if (i === 0 && terms.length > 3) {\n    return tag\n  }\n  return null\n}\n\nconst adhoc = {\n  'Adj|Gerund': (terms, i) => {\n    return isCapital(terms, i)\n  },\n  'Adj|Noun': (terms, i) => {\n    return isCapital(terms, i) || isEndNoun(terms, i)\n  },\n  'Actor|Verb': (terms, i) => {\n    return isCapital(terms, i)\n  },\n  'Adj|Past': (terms, i) => {\n    return isCapital(terms, i)\n  },\n  'Adj|Present': (terms, i) => {\n    return isCapital(terms, i)\n  },\n  'Noun|Gerund': (terms, i) => {\n    return isCapital(terms, i)\n  },\n  'Noun|Verb': (terms, i) => {\n    return (i > 0 && isCapital(terms, i)) || isAlone(terms, i, 'Infinitive')\n  },\n  'Plural|Verb': (terms, i) => {\n    return isCapital(terms, i) || isAlone(terms, i, 'PresentTense') || isStart(terms, i, 'Plural')\n  },\n  'Person|Noun': (terms, i) => {\n    return isCapital(terms, i)\n  },\n  'Person|Verb': (terms, i) => {\n    if (i !== 0) {\n      return isCapital(terms, i)\n    }\n    return null\n  },\n  'Person|Adj': (terms, i) => {\n    if (i === 0 && terms.length > 1) {\n      return 'Person'\n    }\n    return isCapital(terms, i) ? 'Person' : null\n  },\n}\nexport default adhoc"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/3rd-pass/_fillTags.js",
    "content": "import fastTag from '../_fastTag.js'\nimport looksPlural from '../../../methods/looksPlural.js'\nimport getTense from '../../../methods/transform/verbs/getTense/index.js'\n// tags that are neither plural or singular\nconst uncountable = [\n  'Acronym',\n  'Abbreviation',\n  'ProperNoun',\n  'Uncountable',\n  'Possessive',\n  'Pronoun',\n  'Activity',\n  'Honorific',\n  'Month',\n]\n// try to guess if each noun is a plural/singular\nconst setPluralSingular = function (term) {\n  if (!term.tags.has('Noun') || term.tags.has('Plural') || term.tags.has('Singular')) {\n    return\n  }\n  if (uncountable.find(tag => term.tags.has(tag))) {\n    return\n  }\n  if (looksPlural(term.normal)) {\n    fastTag(term, 'Plural', '3-plural-guess')\n  } else {\n    fastTag(term, 'Singular', '3-singular-guess')\n  }\n}\n\n// try to guess the tense of a naked verb\nconst setTense = function (term) {\n  const tags = term.tags\n  if (tags.has('Verb') && tags.size === 1) {\n    const guess = getTense(term.normal)\n    if (guess) {\n      fastTag(term, guess, '3-verb-tense-guess')\n    }\n  }\n}\n\n//add deduced parent tags to our terms\nconst fillTags = function (terms, i, model) {\n  const term = terms[i]\n  //there is probably just one tag, but we'll allow more\n  const tags = Array.from(term.tags)\n  for (let k = 0; k < tags.length; k += 1) {\n    if (model.one.tagSet[tags[k]]) {\n      const toAdd = model.one.tagSet[tags[k]].parents\n      fastTag(term, toAdd, ` -inferred by #${tags[k]}`)\n    }\n  }\n  // turn 'Noun' into Plural/Singular\n  setPluralSingular(term)\n  // turn 'Verb' into Present/PastTense\n  setTense(term, model)\n}\nexport default fillTags\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/_fastTag.js",
    "content": "// verbose-mode tagger debuging\nconst log = (term, tag, reason = '') => {\n  const yellow = str => '\\x1b[33m\\x1b[3m' + str + '\\x1b[0m'\n  const i = str => '\\x1b[3m' + str + '\\x1b[0m'\n  const word = term.text || '[' + term.implicit + ']'\n  if (typeof tag !== 'string' && tag.length > 2) {\n    tag = tag.slice(0, 2).join(', #') + ' +' //truncate the list of tags\n  }\n  tag = typeof tag !== 'string' ? tag.join(', #') : tag\n  console.log(` ${yellow(word).padEnd(24)} \\x1b[32m→\\x1b[0m #${tag.padEnd(22)}  ${i(reason)}`) // eslint-disable-line\n}\n\n// a faster version than the user-facing one in ./methods\nconst fastTag = function (term, tag, reason) {\n  if (!tag || tag.length === 0) {\n    return\n  }\n  if (term.frozen === true) {\n    return\n  }\n  // some logging for debugging\n  const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env\n  if (env && env.DEBUG_TAGS) {\n    log(term, tag, reason)\n  }\n  term.tags = term.tags || new Set()\n  if (typeof tag === 'string') {\n    term.tags.add(tag)\n  } else {\n    tag.forEach(tg => term.tags.add(tg))\n  }\n}\n\nexport default fastTag\n"
  },
  {
    "path": "src/2-two/preTagger/compute/tagger/index.js",
    "content": "import colons from './1st-pass/01-colons.js'\nimport hyphens from './1st-pass/02-hyphens.js'\n\nimport tagSwitch from './2nd-pass/00-tagSwitch.js'\nimport checkCase from './2nd-pass/01-case.js'\nimport checkSuffix from './2nd-pass/02-suffix.js'\nimport checkRegex from './2nd-pass/03-regex.js'\nimport checkPrefix from './2nd-pass/04-prefix.js'\nimport checkYear from './2nd-pass/05-year.js'\nimport verbType from './3rd-pass/07-verb-type.js'\n\nimport fillTags from './3rd-pass/_fillTags.js'\nimport checkAcronym from './3rd-pass/01-acronym.js'\nimport neighbours from './3rd-pass/02-neighbours.js'\nimport orgWords from './3rd-pass/03-orgWords.js'\nimport placeWords from './3rd-pass/04-placeWords.js'\nimport nounFallback from './3rd-pass/05-fallback.js'\nimport switches from './3rd-pass/06-switches.js'\nimport imperative from './3rd-pass/08-imperative.js'\n\n// is it all yelling-case?\nconst ignoreCase = function (terms) {\n  // allow 'John F Kennedy'\n  if (terms.filter(t => !t.tags.has('ProperNoun')).length <= 3) {\n    return false\n  }\n  const lowerCase = /^[a-z]/\n  return terms.every(t => !lowerCase.test(t.text))\n}\n\n// taggers with no clause-splitting\nconst firstPass = function (docs, model, world) {\n  docs.forEach(terms => {\n    // check whitespace/punctuation\n    colons(terms, 0, model, world)\n  })\n}\n\n// these methods don't care about word-neighbours\nconst secondPass = function (terms, model, world, isYelling) {\n  for (let i = 0; i < terms.length; i += 1) {\n    // skip frozen terms, for now\n    if (terms[i].frozen === true) {\n      continue\n    }\n    // mark Noun|Verb on term metadata\n    tagSwitch(terms, i, model)\n    //  is it titlecased?\n    if (isYelling === false) {\n      checkCase(terms, i, model)\n    }\n    // look at word ending\n    checkSuffix(terms, i, model)\n    // try look-like rules\n    checkRegex(terms, i, model, world)\n    // check for recognized prefix, like 'micro-'\n    checkPrefix(terms, i, model)\n    // turn '1993' into a year\n    checkYear(terms, i, model)\n  }\n}\n\n// neighbour-based tagging\nconst thirdPass = function (terms, model, world, isYelling) {\n  for (let i = 0; i < terms.length; i += 1) {\n    // let these tags get layered\n    let found = checkAcronym(terms, i, model)\n    // deduce parent tags\n    fillTags(terms, i, model)\n    // look left+right for hints\n    found = found || neighbours(terms, i, model)\n    //  ¯\\_(ツ)_/¯ - found nothing\n    found = found || nounFallback(terms, i, model)\n  }\n  for (let i = 0; i < terms.length; i += 1) {\n    // skip these\n    if (terms[i].frozen === true) {\n      continue\n    }\n    // Johnson LLC\n    orgWords(terms, i, world, isYelling)\n    // Wawel Castle\n    placeWords(terms, i, world, isYelling)\n    // verb-noun disambiguation, etc\n    switches(terms, i, world)\n    // give bare verbs more tags\n    verbType(terms, i, model, world)\n    // hard-nosed\n    hyphens(terms, i, model, world)\n  }\n  // place tea bags\n  imperative(terms, world)\n}\n\nconst preTagger = function (view) {\n  const { methods, model, world } = view\n  const docs = view.docs\n  // try some early stuff\n  firstPass(docs, model, world)\n  // roughly split sentences up by clause\n  const document = methods.two.quickSplit(docs)\n  // start with all terms\n  for (let n = 0; n < document.length; n += 1) {\n    const terms = document[n]\n    // is it all upper-case?\n    const isYelling = ignoreCase(terms)\n    // guess by the letters\n    secondPass(terms, model, world, isYelling)\n    // guess by the neighbours\n    thirdPass(terms, model, world, isYelling)\n  }\n  return document\n}\n\nexport default preTagger\n"
  },
  {
    "path": "src/2-two/preTagger/methods/expand/byTag.js",
    "content": "// transformations to make on our lexicon\nexport default {\n  // add plural forms of singular nouns\n  Singular: (word, lex, methods, model) => {\n    const already = model.one.lexicon\n    const plural = methods.two.transform.noun.toPlural(word, model)\n    if (!already[plural]) {\n      lex[plural] = lex[plural] || 'Plural'\n    }\n  },\n  // 'lawyer', 'manager' plural forms\n  Actor: (word, lex, methods, model) => {\n    const already = model.one.lexicon\n    const plural = methods.two.transform.noun.toPlural(word, model)\n    if (!already[plural]) {\n      lex[plural] = lex[plural] || ['Plural', 'Actor']\n    }\n  },\n\n  // superlative/ comparative forms for adjectives\n  Comparable: (word, lex, methods, model) => {\n    const already = model.one.lexicon\n    const { toSuperlative, toComparative } = methods.two.transform.adjective\n    // fast -> fastest\n    const sup = toSuperlative(word, model)\n    if (!already[sup]) {\n      lex[sup] = lex[sup] || 'Superlative'\n    }\n    // fast -> faster\n    const comp = toComparative(word, model)\n    if (!already[comp]) {\n      lex[comp] = lex[comp] || 'Comparative'\n    }\n    // overwrite\n    lex[word] = 'Adjective'\n  },\n\n  // 'german' -> 'germans'\n  Demonym: (word, lex, methods, model) => {\n    const plural = methods.two.transform.noun.toPlural(word, model)\n    lex[plural] = lex[plural] || ['Demonym', 'Plural']\n  },\n\n  // conjugate all forms of these verbs\n  Infinitive: (word, lex, methods, model) => {\n    const already = model.one.lexicon\n    const all = methods.two.transform.verb.conjugate(word, model)\n    Object.entries(all).forEach(a => {\n      if (!already[a[1]] && !lex[a[1]] && a[0] !== 'FutureTense') {\n        lex[a[1]] = a[0]\n      }\n    })\n  },\n\n  // 'walk up' should conjugate, too\n  PhrasalVerb: (word, lex, methods, model) => {\n    const already = model.one.lexicon\n    lex[word] = ['PhrasalVerb', 'Infinitive']\n    const _multi = model.one._multiCache\n    const [inf, rest] = word.split(' ')\n    // add root verb\n    if (!already[inf]) {\n      lex[inf] = lex[inf] || 'Infinitive'\n    }\n    // conjugate it\n    const all = methods.two.transform.verb.conjugate(inf, model)\n    delete all.FutureTense\n    Object.entries(all).forEach(a => {\n      // not 'walker up', or 'had taken up'\n      if (a[0] === 'Actor' || a[1] === '') {\n        return\n      }\n      // add the root verb, alone\n      if (!lex[a[1]] && !already[a[1]]) {\n        lex[a[1]] = a[0]\n      }\n      _multi[a[1]] = 2\n      const str = a[1] + ' ' + rest\n      lex[str] = lex[str] || [a[0], 'PhrasalVerb']\n    })\n  },\n\n  // expand 'million'\n  Multiple: (word, lex) => {\n    lex[word] = ['Multiple', 'Cardinal']\n    // 'millionth'\n    lex[word + 'th'] = ['Multiple', 'Ordinal']\n    // 'millionths'\n    lex[word + 'ths'] = ['Multiple', 'Fraction']\n  },\n  // expand number-words\n  Cardinal: (word, lex) => {\n    lex[word] = ['TextValue', 'Cardinal']\n  },\n\n  // 'millionth'\n  Ordinal: (word, lex) => {\n    lex[word] = ['TextValue', 'Ordinal']\n    lex[word + 's'] = ['TextValue', 'Fraction']\n  },\n  // 'thames'\n  Place: (word, lex) => {\n    lex[word] = ['Place', 'ProperNoun']\n  },\n  // 'ontario'\n  Region: (word, lex) => {\n    lex[word] = ['Region', 'ProperNoun']\n  },\n}\n"
  },
  {
    "path": "src/2-two/preTagger/methods/expand/index.js",
    "content": "import byTag from './byTag.js'\n\n// derive clever things from our lexicon key-value pairs\n// this method runs as the pre-tagger plugin gets loaded\nconst expand = function (words, world) {\n  const { methods, model } = world\n  const lex = {}\n  // console.log('start:', Object.keys(lex).length)\n  const _multi = {}\n  // go through each word in this key-value obj:\n  Object.keys(words).forEach(word => {\n    const tag = words[word]\n    // normalize lexicon a little bit\n    word = word.toLowerCase().trim()\n    word = word.replace(/'s\\b/, '')\n    // cache multi-word terms\n    const split = word.split(/ /)\n    if (split.length > 1) {\n      // prefer longer ones\n      if (_multi[split[0]] === undefined || split.length > _multi[split[0]]) {\n        _multi[split[0]] = split.length\n      }\n    }\n    // do any clever-business, by it's tag\n    if (byTag.hasOwnProperty(tag) === true) {\n      byTag[tag](word, lex, methods, model)\n    }\n    lex[word] = lex[word] || tag\n  })\n  // cleanup\n  delete lex['']\n  delete lex[null]\n  delete lex[' ']\n  return { lex, _multi }\n}\nexport default expand\n"
  },
  {
    "path": "src/2-two/preTagger/methods/index.js",
    "content": "import transform from './transform/index.js'\nimport expandLexicon from './expand/index.js'\nimport quickSplit from './quickSplit.js'\nimport looksPlural from './looksPlural.js'\n\n\nexport default {\n  two: {\n    quickSplit,\n    expandLexicon,\n    transform,\n    looksPlural\n  },\n}\n"
  },
  {
    "path": "src/2-two/preTagger/methods/looksPlural.js",
    "content": "//similar to plural/singularize rules, but not the same\nconst isPlural = {\n  e: ['mice', 'louse', 'antennae', 'formulae', 'nebulae', 'vertebrae', 'vitae'],\n  i: ['tia', 'octopi', 'viri', 'radii', 'nuclei', 'fungi', 'cacti', 'stimuli'],\n  n: ['men'],\n  t: ['feet'],\n}\n// plural words as exceptions to suffix-rules\nconst exceptions = new Set([\n  // 'formulas',\n  // 'umbrellas',\n  // 'gorillas',\n  // 'koalas',\n  'israelis',\n  'menus',\n  'logos',\n])\n\nconst notPlural = [\n  'bus',\n  'mas', //christmas\n  'was',\n  // 'las',\n  'ias', //alias\n  'xas',\n  'vas',\n  'cis', //probocis\n  'lis',\n  'nis', //tennis\n  'ois',\n  'ris',\n  'sis', //thesis\n  'tis', //mantis, testis\n  'xis',\n  'aus',\n  'cus',\n  'eus', //nucleus\n  'fus', //doofus\n  'gus', //fungus\n  'ius', //radius\n  'lus', //stimulus\n  'nus',\n  'das',\n  'ous',\n  'pus', //octopus\n  'rus', //virus\n  'sus', //census\n  'tus', //status,cactus\n  'xus',\n  'aos', //chaos\n  'igos',\n  'ados', //barbados\n  'ogos',\n  \"'s\",\n  'ss',\n]\n\nconst looksPlural = function (str) {\n  // not long enough to be plural\n  if (!str || str.length <= 3) {\n    return false\n  }\n  // 'menus' etc\n  if (exceptions.has(str)) {\n    return true\n  }\n  const end = str[str.length - 1]\n  // look at 'firemen'\n  if (isPlural.hasOwnProperty(end)) {\n    return isPlural[end].find(suff => str.endsWith(suff))\n  }\n  if (end !== 's') {\n    return false\n  }\n  // look for 'virus'\n  if (notPlural.find(suff => str.endsWith(suff))) {\n    return false\n  }\n  // ends with an s, seems plural i guess.\n  return true\n}\nexport default looksPlural\n"
  },
  {
    "path": "src/2-two/preTagger/methods/quickSplit.js",
    "content": "// roughly, split a document by comma or semicolon\n\nconst splitOn = function (terms, i) {\n  const isNum = /^[0-9]+$/\n  const term = terms[i]\n  // early on, these may not be dates yet:\n  if (!term) {\n    return false\n  }\n  const maybeDate = new Set(['may', 'april', 'august', 'jan'])\n  // veggies, like figs\n  if (term.normal === 'like' || maybeDate.has(term.normal)) {\n    return false\n  }\n  // toronto, canada  - tuesday, march\n  if (term.tags.has('Place') || term.tags.has('Date')) {\n    return false\n  }\n  if (terms[i - 1]) {\n    const lastTerm = terms[i - 1]\n    // thursday, june\n    if (lastTerm.tags.has('Date') || maybeDate.has(lastTerm.normal)) {\n      return false\n    }\n    // pretty, nice, and fun\n    if (lastTerm.tags.has('Adjective') || term.tags.has('Adjective')) {\n      return false\n    }\n  }\n  // don't split numbers, yet\n  const str = term.normal\n  if (str.length === 1 || str.length === 2 || str.length === 4) {\n    if (isNum.test(str)) {\n      return false\n    }\n  }\n  return true\n}\n\n// kind-of a dirty sentence chunker\nconst quickSplit = function (document) {\n  const splitHere = /[,:;]/\n  const arr = []\n  document.forEach(terms => {\n    let start = 0\n    terms.forEach((term, i) => {\n      // does it have a comma/semicolon ?\n      if (splitHere.test(term.post) && splitOn(terms, i + 1)) {\n        arr.push(terms.slice(start, i + 1))\n        start = i + 1\n      }\n    })\n    if (start < terms.length) {\n      arr.push(terms.slice(start, terms.length))\n    }\n  })\n  return arr\n}\n\nexport default quickSplit"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/adjectives/conjugate/fromAdverb.js",
    "content": "import doRules from './lib.js'\n\nconst s = 'ically'\nconst ical = new Set([\n  'analyt' + s, //analytical\n  'chem' + s,// chemical\n  'class' + s, //classical\n  'clin' + s, // clinical\n  'crit' + s,// critical\n  'ecolog' + s,// ecological\n  'electr' + s,// electrical\n  'empir' + s, // empirical\n  'frant' + s, // frantical\n  'grammat' + s,// grammatical\n  'ident' + s, // identical\n  'ideolog' + s, // ideological\n  'log' + s, // logical\n  'mag' + s, //magical\n  'mathemat' + s,// mathematical\n  'mechan' + s,// mechanical\n  'med' + s,// medical\n  'method' + s, // methodical\n  'method' + s,// methodical\n  'mus' + s, // musical\n  'phys' + s, // physical\n  'phys' + s,// physical\n  'polit' + s,// political\n  'pract' + s,// practical\n  'rad' + s, //radical\n  'satir' + s, // satirical\n  'statist' + s, // statistical\n  'techn' + s,// technical\n  'technolog' + s, // technological\n  'theoret' + s,// theoretical\n  'typ' + s,// typical\n  'vert' + s,// vertical\n  'whims' + s,// whimsical\n])\n\nconst suffixes = [\n  null,\n  {},\n  { 'ly': '' },\n  {\n    'ily': 'y',\n    'bly': 'ble',\n    'ply': 'ple',\n  },\n  {\n    'ally': 'al',\n    'rply': 'rp',\n  },\n  {\n    'ually': 'ual',\n    'ially': 'ial',\n    'cally': 'cal',\n    'eally': 'eal',\n    'rally': 'ral',\n    'nally': 'nal',\n    'mally': 'mal',\n    'eeply': 'eep',\n    'eaply': 'eap',\n  },\n  {\n    ically: 'ic',\n  }\n]\n\nconst noAdj = new Set([\n  'early',\n  'only',\n  'hourly',\n  'daily',\n  'weekly',\n  'monthly',\n  'yearly',\n  'mostly',\n  'duly',\n  'unduly',\n  'especially',\n  'undoubtedly',\n  'conversely',\n  'namely',\n  'exceedingly',\n  'presumably',\n  'accordingly',\n  'overly',\n  'best',\n  'latter',\n  'little',\n  'long',\n  'low'\n])\n\n// exceptions to rules\nconst exceptions = {\n  wholly: 'whole',\n  fully: 'full',\n  truly: 'true',\n  gently: 'gentle',\n  singly: 'single',\n  customarily: 'customary',\n  idly: 'idle',\n  publically: 'public',\n  quickly: 'quick',\n  superbly: 'superb',\n  cynically: 'cynical',\n  well: 'good',// -?\n}\n\n\nconst toAdjective = function (str) {\n  if (!str.endsWith('ly')) {\n    return null\n  }\n  // 'electronic' vs 'electronical'\n  if (ical.has(str)) {\n    return str.replace(/ically/, 'ical')\n  }\n  if (noAdj.has(str)) {\n    return null\n  }\n  if (exceptions.hasOwnProperty(str)) {\n    return exceptions[str]\n  }\n  return doRules(str, suffixes) || str\n}\nexport default toAdjective\n\n// console.log(toAdjective('emphatically'))\n// console.log(toAdjective('usually'))\n// console.log(toAdjective('mechanically'))\n// console.log(toAdjective('vertically'))"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/adjectives/conjugate/lib.js",
    "content": "//sweep-through all suffixes\nconst suffixLoop = function (str = '', suffixes = []) {\n  const len = str.length\n  const max = len <= 6 ? len - 1 : 6\n  for (let i = max; i >= 1; i -= 1) {\n    const suffix = str.substring(len - i, str.length)\n    if (suffixes[suffix.length].hasOwnProperty(suffix) === true) {\n      const pre = str.slice(0, len - i)\n      const post = suffixes[suffix.length][suffix]\n      return pre + post\n    }\n  }\n  return null\n}\nexport default suffixLoop"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/adjectives/conjugate/toAdverb.js",
    "content": "import doRules from './lib.js'\n\nconst suffixes = [\n  null,\n  {\n    y: 'ily'\n  },\n  {\n    ly: 'ly',//unchanged\n    ic: 'ically'\n  },\n  {\n    ial: 'ially',\n    ual: 'ually',\n    tle: 'tly',\n    ble: 'bly',\n    ple: 'ply',\n    ary: 'arily',\n  },\n  {},\n  {},\n  {},\n]\n\nconst exceptions = {\n  cool: 'cooly',\n  whole: 'wholly',\n  full: 'fully',\n  good: 'well',\n  idle: 'idly',\n  public: 'publicly',\n  single: 'singly',\n  special: 'especially',\n}\n\n// a lot of adjectives *don't really* have a adverb\n// 'roomy' -> 'roomily'\n// but here, conjugate what it would be, if it made sense to\nconst toAdverb = function (str) {\n  if (exceptions.hasOwnProperty(str)) {\n    return exceptions[str]\n  }\n  let adv = doRules(str, suffixes)\n  if (!adv) {\n    adv = str + 'ly'\n  }\n  // only return this if it exists in lexicon?\n  // console.log(model.one.lexicon[adv])\n  return adv\n}\nexport default toAdverb\n// console.log(toAdverb('unsightly'))"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/adjectives/index.js",
    "content": "import { toSuperlative, toComparative, fromSuperlative, fromComparative, toNoun } from './inflect.js'\nimport fromAdverb from './conjugate/fromAdverb.js'\nimport toAdverb from './conjugate/toAdverb.js'\n// import toNoun from './conjugate/toNoun.js'\n\nconst all = function (str, model) {\n  let arr = [str]\n  arr.push(toSuperlative(str, model))\n  arr.push(toComparative(str, model))\n  arr.push(toAdverb(str))\n  arr = arr.filter(s => s)\n  arr = new Set(arr)\n  return Array.from(arr)\n}\n\n\nexport default {\n  toSuperlative, toComparative, toAdverb, toNoun,\n  fromAdverb, fromSuperlative, fromComparative,\n  all,\n}"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/adjectives/inflect.js",
    "content": "import { convert } from 'suffix-thumb'\n// import toAdverb from './adverbs/toAdverb.js'\n\n\nconst toSuperlative = function (adj, model) {\n  const mod = model.two.models.toSuperlative\n  return convert(adj, mod)\n}\nconst toComparative = function (adj, model) {\n  const mod = model.two.models.toComparative\n  return convert(adj, mod)\n}\nconst fromComparative = function (adj, model) {\n  const mod = model.two.models.fromComparative\n  return convert(adj, mod)\n}\nconst fromSuperlative = function (adj, model) {\n  const mod = model.two.models.fromSuperlative\n  return convert(adj, mod)\n}\nconst toNoun = function (adj, model) {\n  const mod = model.two.models.adjToNoun\n  return convert(adj, mod)\n}\n\nexport {\n  toSuperlative, toComparative, fromComparative, fromSuperlative, toNoun\n}\n"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/index.js",
    "content": "import nouns from './nouns/index.js'\nimport verbs from './verbs/index.js'\nimport adjectives from './adjectives/index.js'\n\nexport default {\n  noun: nouns,\n  verb: verbs,\n  adjective: adjectives\n}\n"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/nouns/index.js",
    "content": "import toPlural from './toPlural/index.js'\nimport toSingular from './toSingular/index.js'\n\nconst all = function (str, model) {\n  const arr = [str]\n  const p = toPlural(str, model)\n  if (p !== str) {\n    arr.push(p)\n  }\n  const s = toSingular(str, model)\n  if (s !== str) {\n    arr.push(s)\n  }\n  return arr\n}\n\nexport default { toPlural, toSingular, all }\n"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/nouns/toPlural/_rules.js",
    "content": "/** patterns for turning 'bus' to 'buses'*/\nconst suffixes = {\n  a: [\n    [/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'],\n    [/ia$/i, 'ia'],\n  ],\n  e: [\n    [/(kn|l|w)ife$/i, '$1ives'],\n    [/(hive)$/i, '$1s'],\n    [/([m|l])ouse$/i, '$1ice'],\n    [/([m|l])ice$/i, '$1ice'],\n  ],\n  f: [\n    [/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'],\n    [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves'],\n  ],\n  i: [[/(octop|vir)i$/i, '$1i']],\n  m: [[/([ti])um$/i, '$1a']],\n  n: [[/^(oxen)$/i, '$1']],\n  o: [[/(al|ad|at|er|et|ed)o$/i, '$1oes']],\n  s: [\n    [/(ax|test)is$/i, '$1es'],\n    [/(alias|status)$/i, '$1es'],\n    [/sis$/i, 'ses'],\n    [/(bu)s$/i, '$1ses'],\n    [/(sis)$/i, 'ses'],\n    [/^(?!talis|.*hu)(.*)man$/i, '$1men'],\n    [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i'],\n  ],\n  x: [\n    [/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'],\n    [/^(ox)$/i, '$1en'],\n  ],\n  y: [[/([^aeiouy]|qu)y$/i, '$1ies']],\n  z: [[/(quiz)$/i, '$1zes']],\n}\nexport default suffixes\n"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/nouns/toPlural/index.js",
    "content": "import rules from './_rules.js'\nconst addE = /([xsz]|ch|sh)$/\n\nconst trySuffix = function (str) {\n  const c = str[str.length - 1]\n  if (rules.hasOwnProperty(c) === true) {\n    for (let i = 0; i < rules[c].length; i += 1) {\n      const reg = rules[c][i][0]\n      if (reg.test(str) === true) {\n        return str.replace(reg, rules[c][i][1])\n      }\n    }\n  }\n  return null\n}\n/** Turn a singular noun into a plural\n * assume the given string is singular\n */\nconst pluralize = function (str = '', model) {\n  const { irregularPlurals, uncountable } = model.two\n  // is it a word without a plural form?\n  if (uncountable.hasOwnProperty(str)) {\n    return str\n  }\n  // check irregulars list\n  if (irregularPlurals.hasOwnProperty(str)) {\n    return irregularPlurals[str]\n  }\n  //we have some rules to try-out\n  const plural = trySuffix(str)\n  if (plural !== null) {\n    return plural\n  }\n  //like 'church'\n  if (addE.test(str)) {\n    return str + 'es'\n  }\n  // ¯\\_(ツ)_/¯\n  return str + 's'\n}\nexport default pluralize\n"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/nouns/toSingular/_rules.js",
    "content": "export default [\n  [/([^v])ies$/i, '$1y'],\n  [/(ise)s$/i, '$1'],//promises\n  [/(kn|[^o]l|w)ives$/i, '$1ife'],\n  [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'],\n  [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'],\n  [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'],\n  [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'],\n  [/(buffal|tomat|tornad)(oes)$/i, '$1o'],\n\n  [/(ause)s$/i, '$1'],//causes\n  [/(ease)s$/i, '$1'],//diseases\n  [/(ious)es$/i, '$1'],//geniouses\n  [/(ouse)s$/i, '$1'],//houses\n  [/(ose)s$/i, '$1'],//roses\n\n  [/(..ase)s$/i, '$1'],\n  [/(..[aeiu]s)es$/i, '$1'],\n  [/(vert|ind|cort)(ices)$/i, '$1ex'],\n  [/(matr|append)(ices)$/i, '$1ix'],\n  [/([xo]|ch|ss|sh)es$/i, '$1'],\n  [/men$/i, 'man'],\n  [/(n)ews$/i, '$1ews'],\n  [/([ti])a$/i, '$1um'],\n  [/([^aeiouy]|qu)ies$/i, '$1y'],\n  [/(s)eries$/i, '$1eries'],\n  [/(m)ovies$/i, '$1ovie'],\n  [/(cris|ax|test)es$/i, '$1is'],\n  [/(alias|status)es$/i, '$1'],\n  [/(ss)$/i, '$1'],\n  [/(ic)s$/i, '$1'],\n  [/s$/i, ''],\n]\n"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/nouns/toSingular/index.js",
    "content": "import rules from './_rules.js'\nconst invertObj = function (obj) {\n  return Object.keys(obj).reduce((h, k) => {\n    h[obj[k]] = k\n    return h\n  }, {})\n}\n\nconst toSingular = function (str, model) {\n  const { irregularPlurals } = model.two\n  const invert = invertObj(irregularPlurals) //(not very efficient)\n  // check irregulars list\n  if (invert.hasOwnProperty(str)) {\n    return invert[str]\n  }\n  // go through our regexes\n  for (let i = 0; i < rules.length; i++) {\n    if (rules[i][0].test(str) === true) {\n      // console.log(rules[i])\n      str = str.replace(rules[i][0], rules[i][1])\n      return str\n    }\n  }\n  return str\n}\nexport default toSingular\n"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/verbs/conjugate/index.js",
    "content": "// import { toPast, toPresent, toGerund, toParticiple } from '../../../../model/models/index.js'\nimport { convert } from 'suffix-thumb'\n\n// pull-apart phrasal verb 'fall over'\nconst parse = (inf) => {\n  if (/ /.test(inf)) {\n    return inf.split(/ /)\n  }\n  return [inf, '']\n}\n\n//we run this on every verb in the lexicon, so please keep it fast\n//we assume the input word is a proper infinitive\nconst conjugate = function (inf, model) {\n  const { toPast, toPresent, toGerund, toParticiple } = model.two.models\n  // ad-hoc Copula response\n  if (inf === 'be') {\n    return {\n      Infinitive: inf,\n      Gerund: 'being',\n      PastTense: 'was',\n      PresentTense: 'is',\n    }\n  }\n  const [str, particle] = parse(inf)\n  const found = {\n    Infinitive: str,\n    PastTense: convert(str, toPast),\n    PresentTense: convert(str, toPresent),\n    Gerund: convert(str, toGerund),\n    FutureTense: 'will ' + str\n  }\n  // add past-participle if it's interesting\n  // drive -> driven (not drove)\n  let pastPrt = convert(str, toParticiple)\n  if (pastPrt !== inf && pastPrt !== found.PastTense) {\n    // ensure it's a known participle\n    const lex = model.one.lexicon || {}\n    if (lex[pastPrt] === 'Participle' || lex[pastPrt] === 'Adjective') {\n      // one exception\n      if (inf === 'play') {\n        pastPrt = 'played'\n      }\n      found.Participle = pastPrt\n    }\n  }\n  // put phrasal-verbs back together again\n  if (particle) {\n    Object.keys(found).forEach(k => {\n      found[k] += ' ' + particle\n    })\n  }\n  return found\n}\n\n\nexport default conjugate\n\n// console.log(toPresent.rules.y)\n// console.log(convert('buy', toPresent))\n\n"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/verbs/getTense/_guess.js",
    "content": "let guessVerb = {\n  Gerund: ['ing'],\n  Actor: ['erer'],\n  Infinitive: [\n    'ate',\n    'ize',\n    'tion',\n    'rify',\n    'then',\n    'ress',\n    'ify',\n    'age',\n    'nce',\n    'ect',\n    'ise',\n    'ine',\n    'ish',\n    'ace',\n    'ash',\n    'ure',\n    'tch',\n    'end',\n    'ack',\n    'and',\n    'ute',\n    'ade',\n    'ock',\n    'ite',\n    'ase',\n    'ose',\n    'use',\n    'ive',\n    'int',\n    'nge',\n    'lay',\n    'est',\n    'ain',\n    'ant',\n    'ent',\n    'eed',\n    'er',\n    'le',\n    'unk',\n    'ung',\n    'upt',\n    'en',\n  ],\n  PastTense: ['ept', 'ed', 'lt', 'nt', 'ew', 'ld'],\n  PresentTense: [\n    'rks',\n    'cks',\n    'nks',\n    'ngs',\n    'mps',\n    'tes',\n    'zes',\n    'ers',\n    'les',\n    'acks',\n    'ends',\n    'ands',\n    'ocks',\n    'lays',\n    'eads',\n    'lls',\n    'els',\n    'ils',\n    'ows',\n    'nds',\n    'ays',\n    'ams',\n    'ars',\n    'ops',\n    'ffs',\n    'als',\n    'urs',\n    'lds',\n    'ews',\n    'ips',\n    'es',\n    'ts',\n    'ns',\n  ],\n  Participle: ['ken', 'wn']\n}\n//flip it into a lookup object\nguessVerb = Object.keys(guessVerb).reduce((h, k) => {\n  guessVerb[k].forEach(a => (h[a] = k))\n  return h\n}, {})\nexport default guessVerb\n"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/verbs/getTense/index.js",
    "content": "import guess from './_guess.js'\n\n/** it helps to know what we're conjugating from */\nconst getTense = function (str) {\n  const three = str.substring(str.length - 3)\n  if (guess.hasOwnProperty(three) === true) {\n    return guess[three]\n  }\n  const two = str.substring(str.length - 2)\n  if (guess.hasOwnProperty(two) === true) {\n    return guess[two]\n  }\n  const one = str.substring(str.length - 1)\n  if (one === 's') {\n    return 'PresentTense'\n  }\n  return null\n}\nexport default getTense"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/verbs/index.js",
    "content": "import toInfinitive from './toInfinitive/index.js'\nimport conjugate from './conjugate/index.js'\n\nconst all = function (str, model) {\n  const res = conjugate(str, model)\n  delete res.FutureTense\n  return Object.values(res).filter(s => s)\n}\nexport default {\n  toInfinitive, conjugate, all\n}\n"
  },
  {
    "path": "src/2-two/preTagger/methods/transform/verbs/toInfinitive/index.js",
    "content": "import { convert } from 'suffix-thumb'\nimport getTense from '../getTense/index.js'\n\nconst toParts = function (str, model) {\n  let prefix = ''\n  let prefixes = {}\n  if (model.one && model.one.prefixes) {\n    prefixes = model.one.prefixes\n  }\n  // pull-apart phrasal verb 'fall over'\n  let [verb, particle] = str.split(/ /)\n  // support 'over cleaned'\n  if (particle && prefixes[verb] === true) {\n    prefix = verb\n    verb = particle\n    particle = ''\n  }\n  return {\n    prefix, verb, particle\n  }\n}\n\n\n// dunno about these..\nconst copulaMap = {\n  are: 'be',\n  were: 'be',\n  been: 'be',\n  is: 'be',\n  am: 'be',\n  was: 'be',\n  be: 'be',\n  being: 'be',\n}\n\nconst toInfinitive = function (str, model, tense) {\n  const { fromPast, fromPresent, fromGerund, fromParticiple } = model.two.models\n  const { prefix, verb, particle } = toParts(str, model)\n  let inf = ''\n  if (!tense) {\n    tense = getTense(str)\n  }\n  if (copulaMap.hasOwnProperty(str)) {\n    inf = copulaMap[str]\n  } else if (tense === 'Participle') {\n    inf = convert(verb, fromParticiple)\n  } else if (tense === 'PastTense') {\n    inf = convert(verb, fromPast)\n  } else if (tense === 'PresentTense') {\n    inf = convert(verb, fromPresent)\n  } else if (tense === 'Gerund') {\n    inf = convert(verb, fromGerund)\n  } else {\n    return str\n  }\n\n  // stitch phrasal back on\n  if (particle) {\n    inf += ' ' + particle\n  }\n  // stitch prefix back on\n  if (prefix) {\n    inf = prefix + ' ' + inf\n  }\n  return inf\n}\nexport default toInfinitive\n\n// console.log(toInfinitive('snarled', { one: {} }))\n// console.log(convert('snarled', fromPast))"
  },
  {
    "path": "src/2-two/preTagger/model/_expand/index.js",
    "content": "import methods from '../../methods/index.js'\nimport expandIrregulars from './irregulars.js'\nimport toPlural from '../../methods/transform/nouns/toPlural/index.js'\nimport conjugate from '../../methods/transform/verbs/conjugate/index.js'\nimport { toSuperlative, toComparative } from '../../methods/transform/adjectives/inflect.js'\nimport toInfinitive from '../../methods/transform/verbs/toInfinitive/index.js'\nimport models from '../models/index.js'\nconst tmpModel = {\n  one: { lexicon: {} },\n  two: { models }\n}\n\n// defaults for switches\nconst switchDefaults = {\n  // 'pilot'\n  'Actor|Verb': 'Actor', //\n  // 'amusing'\n  'Adj|Gerund': 'Adjective', //+conjugations\n  // 'standard'\n  'Adj|Noun': 'Adjective',\n  // 'boiled'\n  'Adj|Past': 'Adjective', //+conjugations\n  // 'smooth'\n  'Adj|Present': 'Adjective',//+conjugations\n  // 'box'\n  'Noun|Verb': 'Singular', //+conjugations (no-present)\n  //'singing'\n  'Noun|Gerund': 'Gerund', //+conjugations\n  // 'hope'\n  'Person|Noun': 'Noun',\n  // 'April'\n  'Person|Date': 'Month',\n  // 'rob'\n  'Person|Verb': 'FirstName',//+conjugations\n  // 'victoria'\n  'Person|Place': 'Person',\n  // 'rusty'\n  'Person|Adj': 'Comparative',\n  // 'boxes'\n  'Plural|Verb': 'Plural', //(these are already derivative)\n  // 'miles'\n  'Unit|Noun': 'Noun',\n}\n\nconst expandLexicon = function (words, model) {\n  // do clever tricks to grow the words\n  const world = { model, methods }\n  const { lex, _multi } = methods.two.expandLexicon(words, world)\n  // store multiple-word terms in a cache\n  Object.assign(model.one.lexicon, lex)\n  Object.assign(model.one._multiCache, _multi)\n  return model\n}\n\n// these words have no singular/plural conjugation\nconst addUncountables = function (words, model) {\n  Object.keys(words).forEach(k => {\n    if (words[k] === 'Uncountable') {\n      model.two.uncountable[k] = true\n      words[k] = 'Uncountable'\n    }\n  })\n  return model\n}\n\nconst expandVerb = function (str, words, doPresent) {\n  const obj = conjugate(str, tmpModel)\n  words[obj.PastTense] = words[obj.PastTense] || 'PastTense'\n  words[obj.Gerund] = words[obj.Gerund] || 'Gerund'\n  if (doPresent === true) {\n    // is this plural noun, or present-tense?\n    words[obj.PresentTense] = words[obj.PresentTense] || 'PresentTense'\n  }\n}\n\nconst expandAdjective = function (str, words, model) {\n  const sup = toSuperlative(str, model)\n  words[sup] = words[sup] || 'Superlative'\n  const comp = toComparative(str, model)\n  words[comp] = words[comp] || 'Comparative'\n}\n\nconst expandNoun = function (str, words, model) {\n  const plur = toPlural(str, model)\n  words[plur] = words[plur] || 'Plural'\n}\n\n// harvest ambiguous words for any conjugations\nconst expandVariable = function (switchWords, model) {\n  const words = {}\n  const lex = model.one.lexicon\n  //add first tag as an assumption for each variable word\n  Object.keys(switchWords).forEach(w => {\n    const name = switchWords[w]\n    words[w] = switchDefaults[name]\n    // conjugate some verbs\n    if (name === 'Noun|Verb' || name === 'Person|Verb' || name === 'Actor|Verb') {\n      expandVerb(w, lex, false)\n    }\n    if (name === 'Adj|Present') {\n      expandVerb(w, lex, true)\n      expandAdjective(w, lex, model)\n    }\n    if (name === 'Person|Adj') {\n      expandAdjective(w, lex, model)\n    }\n    // add infinitives for gerunds\n    if (name === 'Adj|Gerund' || name === 'Noun|Gerund') {\n      const inf = toInfinitive(w, tmpModel, 'Gerund')\n      if (!lex[inf]) {\n        words[inf] = 'Infinitive' //expand it later\n      }\n    }\n    // add plurals for nouns\n    if (name === 'Noun|Gerund' || name === 'Adj|Noun' || name === 'Person|Noun') {\n      expandNoun(w, lex, model)\n    }\n    if (name === 'Adj|Past') {\n      const inf = toInfinitive(w, tmpModel, 'PastTense')\n      if (!lex[inf]) {\n        words[inf] = 'Infinitive' //expand it later\n      }\n    }\n  })\n  // add conjugations\n  model = expandLexicon(words, model)\n  return model\n}\n\nconst expand = function (model) {\n  model = expandLexicon(model.one.lexicon, model)\n  model = addUncountables(model.one.lexicon, model)\n  model = expandVariable(model.two.switches, model)\n  model = expandIrregulars(model)\n  return model\n}\nexport default expand\n"
  },
  {
    "path": "src/2-two/preTagger/model/_expand/irregulars.js",
    "content": "// import irregularVerbs from './conjugations.js'\n// harvest list of irregulars for any juicy word-data\nconst expandIrregulars = function (model) {\n  const { irregularPlurals } = model.two\n  const { lexicon } = model.one\n  Object.entries(irregularPlurals).forEach(a => {\n    lexicon[a[0]] = lexicon[a[0]] || 'Singular'\n    lexicon[a[1]] = lexicon[a[1]] || 'Plural'\n  })\n  return model\n}\nexport default expandIrregulars\n"
  },
  {
    "path": "src/2-two/preTagger/model/clues/_adj.js",
    "content": "const jj = 'Adjective'\n\nexport default {\n  beforeTags: {\n    Determiner: jj, //the detailed\n    // Copula: jj, //is detailed\n    Possessive: jj, //spencer's detailed\n    Hyphenated: jj, //rapidly-changing\n  },\n\n  afterTags: {\n    // Noun: jj, //detailed plan, overwhelming evidence\n    Adjective: jj, //intoxicated little\n  },\n\n  beforeWords: {\n    seem: jj, //seem prepared\n    seemed: jj,\n    seems: jj,\n    feel: jj, //feel prepared\n    feels: jj,\n    felt: jj,\n    stay: jj,\n    appear: jj,\n    appears: jj,\n    appeared: jj,\n    also: jj,\n    over: jj, //over cooked\n    under: jj,\n    too: jj, //too insulting\n    it: jj, //find it insulting\n    but: jj, //nothing but frustrating\n    still: jj, //still scared\n    // adverbs that are adjective-ish\n    really: jj, //really damaged\n    quite: jj,\n    well: jj,\n    very: jj,\n    truly: jj,\n    how: jj, //how slow\n    deeply: jj,\n    hella: jj,\n    // always: jj,\n    // never: jj,\n    profoundly: jj,\n    extremely: jj,\n    so: jj,\n    badly: jj,\n    mostly: jj,\n    totally: jj,\n    awfully: jj,\n    rather: jj,\n    nothing: jj, //nothing secret,\n    something: jj, //something wrong\n    anything: jj,\n    not: jj, //not swell\n    me: jj, //called me swell\n    is: jj,\n\n    face: jj, //faces shocking revelations\n    faces: jj,\n    faced: jj,\n\n    look: jj,\n    looks: jj,\n    looked: jj,\n\n    reveal: jj,\n    reveals: jj,\n    revealed: jj,\n\n    sound: jj,\n    sounded: jj,\n    sounds: jj,\n    remains: jj,\n    remained: jj,\n    prove: jj, //would prove shocking\n    proves: jj,\n    proved: jj,\n\n    becomes: jj,\n    stays: jj,\n    tastes: jj,\n    taste: jj,\n    smells: jj,\n    smell: jj,\n    gets: jj, //gets shocking snowfall\n    grows: jj,\n    as: jj,\n    rings: jj,\n    radiates: jj,\n    conveys: jj,\n    convey: jj,\n    conveyed: jj,\n    of: jj,\n    // 'smacks of': jj,\n    // 'reeks of': jj,\n  },\n  afterWords: {\n    too: jj, //insulting too\n    also: jj, //insulting too\n    or: jj, //insulting or\n    enough: jj, //cool enough\n    as: jj, //as shocking as\n    //about: jj, //cool about\n  },\n}\n"
  },
  {
    "path": "src/2-two/preTagger/model/clues/_gerund.js",
    "content": "const g = 'Gerund'\n\n// Adj|Gerund\n// Noun|Gerund\n\nexport default {\n  beforeTags: {\n    // Verb: g, // loves shocking\n    Adverb: g, //quickly shocking\n    Preposition: g, //by insulting\n    Conjunction: g, //to insulting\n  },\n  afterTags: {\n    Adverb: g, //shocking quickly\n    Possessive: g, //shocking spencer's\n    Person: g, //telling spencer\n    Pronoun: g, //shocking him\n    Determiner: g, //shocking the\n    Copula: g, //shocking is\n    Preposition: g, //dashing by, swimming in\n    Conjunction: g, //insulting to\n    Comparative: g, //growing shorter\n  },\n  beforeWords: {\n    been: g,\n    keep: g,//keep going\n    continue: g,//\n    stop: g,//\n    am: g,//am watching\n    be: g,//be timing\n    me: g,//got me thinking\n    // action-words\n    began: g,\n    start: g,\n    starts: g,\n    started: g,\n    stops: g,\n    stopped: g,\n    help: g,\n    helps: g,\n    avoid: g,\n    avoids: g,\n    love: g,//love painting\n    loves: g,\n    loved: g,\n    hate: g,\n    hates: g,\n    hated: g,\n    // was:g,//was working\n    // is:g,\n    // be:g,\n  },\n  afterWords: {\n    you: g, //telling you\n    me: g, //\n    her: g, //\n    him: g, //\n    his: g, //\n    them: g, //\n    their: g, // fighting their\n    it: g, //dumping it\n    this: g, //running this\n    there: g, // swimming there\n    on: g, // landing on\n    about: g, // talking about\n    for: g, // paying for\n    up: g, //speeding up\n    down: g, //\n  },\n}\n"
  },
  {
    "path": "src/2-two/preTagger/model/clues/_noun.js",
    "content": "const n = 'Singular'\nexport default {\n  beforeTags: {\n    Determiner: n, //the date\n    Possessive: n, //his date\n    Acronym: n, //u.s. state\n    // ProperNoun:n,\n    Noun: n, //nasa funding\n    Adjective: n, //whole bottles\n    // Verb:true, //save storm victims\n    PresentTense: n, //loves hiking\n    Gerund: n, //uplifting victims\n    PastTense: n, //saved storm victims\n    Infinitive: n, //profess love\n    Date: n, //9pm show\n    Ordinal: n, //first date\n    Demonym: n, //dutch map\n  },\n  afterTags: {\n    Value: n, //date nine  -?\n    Modal: n, //date would\n    Copula: n, //fear is\n    PresentTense: n, //babysitting sucks\n    PastTense: n, //babysitting sucked\n    // Noun:n, //talking therapy, planning process\n    Demonym: n, //american touch\n    Actor: n, //dance therapist\n  },\n  // ownTags: { ProperNoun: n },\n  beforeWords: {\n    the: n, //the brands\n    with: n, //with cakes\n    without: n, //\n    // was:n, //was time  -- was working\n    // is:n, //\n    of: n, //of power\n    for: n, //for rats\n    any: n, //any rats\n    all: n, //all tips\n    on: n, //on time\n    // thing-ish verbs\n    cut: n, //cut spending\n    cuts: n, //cut spending\n    increase: n, // increase funding\n    decrease: n, //\n    raise: n, //\n    drop: n, //\n    // give: n,//give parents\n    save: n, //\n    saved: n, //\n    saves: n, //\n    make: n, //\n    makes: n, //\n    made: n, //\n    minus: n, //minus laughing\n    plus: n, //\n    than: n, //more than age\n    another: n, //\n    versus: n, //\n    neither: n, //\n    about: n, //about claims\n    // strong adjectives\n    favorite: n, //\n    best: n, //\n    daily: n, //\n    weekly: n, //\n    linear: n, //\n    binary: n, //\n    mobile: n, //\n    lexical: n, //\n    technical: n, //\n    computer: n, //\n    scientific: n, //\n    security: n, //\n    government: n, //\n    popular: n, //\n    formal: n,\n    no: n, //no worries\n    more: n, //more details\n    one: n, //one flood\n    let: n, //let fear\n    her: n, //her boots\n    his: n, //\n    their: n, //\n    our: n, //\n    us: n, //served us drinks\n    sheer: n,\n\n    monthly: n,\n    yearly: n,\n    current: n,\n    previous: n,\n    upcoming: n,\n    last: n,\n    next: n,\n    main: n,\n    initial: n,\n    final: n,\n    beginning: n,\n    end: n,\n    top: n,\n    bottom: n,\n    future: n,\n    past: n,\n    major: n,\n    minor: n,\n    side: n,\n    central: n,\n    peripheral: n,\n    public: n,\n    private: n,\n  },\n  afterWords: {\n    of: n, //date of birth (preposition)\n    system: n,\n    aid: n,\n    method: n,\n    utility: n,\n    tool: n,\n    reform: n,\n    therapy: n,\n    philosophy: n,\n    room: n,\n    authority: n,\n    says: n,\n    said: n,\n    wants: n,\n    wanted: n,\n    is: n,\n    did: n,\n    do: n,\n    can: n, //parents can\n    wise: n, //service-wise\n    // they: n,//snakes they\n  },\n}\n"
  },
  {
    "path": "src/2-two/preTagger/model/clues/_person.js",
    "content": "const p = 'Person'\n\nexport default {\n  beforeTags: {\n    Honorific: p,\n    Person: p,\n    // Preposition: p, //with sue\n  },\n  afterTags: {\n    Person: p,\n    ProperNoun: p,\n    Verb: p, //bob could\n    // Modal:true, //bob could\n    // Copula:true, //bob is\n    // PresentTense:true, //bob seems\n  },\n  ownTags: {\n    ProperNoun: p, //capital letter\n  },\n  beforeWords: {\n    hi: p,\n    hey: p,\n    yo: p,\n    dear: p,\n    hello: p,\n  },\n  afterWords: {\n    // person-usually verbs\n    said: p,\n    says: p,\n    told: p,\n    tells: p,\n    feels: p,\n    felt: p,\n    seems: p,\n    thinks: p,\n    thought: p,\n    spends: p,\n    spendt: p,\n    plays: p,\n    played: p,\n    sing: p,\n    sang: p,\n    learn: p,\n    learned: p,\n    wants: p,\n    wanted: p\n    // and:true, //sue and jeff\n  },\n}\n"
  },
  {
    "path": "src/2-two/preTagger/model/clues/_verb.js",
    "content": "const v = 'Infinitive'\n\nexport default {\n  beforeTags: {\n    Modal: v, //would date\n    Adverb: v, //quickly date\n    Negative: v, //not date\n    Plural: v, //characters drink\n    // ProperNoun: vb,//google thought\n  },\n  afterTags: {\n    Determiner: v, //flash the\n    Adverb: v, //date quickly\n    Possessive: v, //date his\n    Reflexive: v, //resolve yourself\n    // Noun:true, //date spencer\n    Preposition: v, //date around, dump onto, grumble about\n    // Conjunction: v, // dip to, dip through\n    Cardinal: v, //cut 3 squares\n    Comparative: v, //feel greater\n    Superlative: v, //feel greatest\n  },\n  beforeWords: {\n    i: v, //i date\n    we: v, //we date\n    you: v, //you date\n    they: v, //they date\n    to: v, //to date\n    please: v, //please check\n    will: v, //will check\n    have: v,\n    had: v,\n    would: v,\n    could: v,\n    should: v,\n    do: v,\n    did: v,\n    does: v,\n    can: v,\n    must: v,\n    us: v,\n    me: v,\n    let: v,\n    even: v,\n    when: v,\n    help: v, //help combat\n    // them: v,\n    he: v,\n    she: v,\n    it: v,\n    being: v,\n    // prefixes\n    bi: v,\n    co: v,\n    contra: v,\n    de: v,\n    inter: v,\n    intra: v,\n    mis: v,\n    pre: v,\n    out: v,\n    counter: v,\n    nobody: v,\n    somebody: v,\n    anybody: v,\n    everybody: v,\n    // un: v,\n    // over: v,\n    // under: v,\n  },\n  afterWords: {\n    the: v, //echo the\n    me: v, //date me\n    you: v, //date you\n    him: v, //loves him\n    us: v, //cost us\n    her: v, //\n    his: v, //\n    them: v, //\n    they: v, //\n    it: v, //hope it\n    himself: v,\n    herself: v,\n    itself: v,\n    myself: v,\n    ourselves: v,\n    themselves: v,\n    something: v,\n    anything: v,\n\n    a: v, //covers a\n    an: v, //covers an\n    // from: v, //ranges from\n    up: v, //serves up\n    down: v, //serves up\n    by: v,\n    // in: v, //bob in\n    out: v,\n    // on: v,\n    off: v,\n    under: v,\n    what: v, //look what\n    // when: v,//starts when\n    // for:true, //settled for\n    all: v, //shiver all night\n    // conjunctions\n    to: v, //dip to\n    because: v, //\n    although: v, //\n    // after: v,\n    // before: v,//\n    how: v, //\n    otherwise: v, //\n    together: v, //fit together\n    though: v, //\n    into: v, //\n    yet: v, //\n    more: v, //kill more\n    here: v, // look here\n    there: v, //\n    away: v, //float away\n  },\n}\n"
  },
  {
    "path": "src/2-two/preTagger/model/clues/actor-verb.js",
    "content": "import noun from './_noun.js'\nimport verb from './_verb.js'\n// 'the pilot' vs 'pilot the plane'\nconst clue = {\n  beforeTags: Object.assign({}, verb.beforeTags, noun.beforeTags, {\n  }),\n  afterTags: Object.assign({}, verb.afterTags, noun.afterTags, {}),\n  beforeWords: Object.assign({}, verb.beforeWords, noun.beforeWords, {}),\n  afterWords: Object.assign({}, verb.afterWords, noun.afterWords, {}),\n}\n\nexport default clue"
  },
  {
    "path": "src/2-two/preTagger/model/clues/adj-gerund.js",
    "content": "import adj from './_adj.js'\nimport gerund from './_gerund.js'\nconst g = 'Gerund'\nconst jj = 'Adjective'\n\n// rallying the troops\n// her rallying cry\nconst clue = {\n  beforeTags: Object.assign({}, adj.beforeTags, gerund.beforeTags, {\n    // Copula: jj,\n    Imperative: g, //recommend living in\n    Infinitive: jj, //say charming things\n    // PresentTense: g,\n    Plural: g, //kids cutting\n  }),\n\n  afterTags: Object.assign({}, adj.afterTags, gerund.afterTags, {\n    Noun: jj, //shocking ignorance\n    // Plural: jj, //shocking lies\n  }),\n\n  beforeWords: Object.assign({}, adj.beforeWords, gerund.beforeWords, {\n    is: jj,\n    are: g, //is overflowing: JJ, are overflowing : VB ??\n    was: jj,\n    of: jj, //of varying\n    suggest: g,\n    suggests: g,\n    suggested: g,\n\n    recommend: g,\n    recommends: g,\n    recommended: g,\n\n    imagine: g,\n    imagines: g,\n    imagined: g,\n\n    consider: g,\n    considered: g,\n    considering: g,\n\n    resist: g,\n    resists: g,\n    resisted: g,\n\n    avoid: g,\n    avoided: g,\n    avoiding: g,\n\n    except: jj,\n    accept: jj,\n    assess: g,\n    explore: g,\n    fear: g,\n    fears: g,\n    appreciate: g,\n    question: g,\n    help: g,\n    embrace: g,\n    with: jj, //filled with daring\n  }),\n\n  afterWords: Object.assign({}, adj.afterWords, gerund.afterWords, {\n    to: g,\n    not: g, //trying not to car\n    the: g, //sweeping the country\n  }),\n}\n// console.log(clue)\nexport default clue\n"
  },
  {
    "path": "src/2-two/preTagger/model/clues/adj-noun.js",
    "content": "import adj from './_adj.js'\nimport noun from './_noun.js'\n// the commercial market\n// watching the commercial\n\nconst misc = {\n  beforeTags: {\n    Determiner: undefined, //the premier university\n    Cardinal: 'Noun',//1950 convertable\n    PhrasalVerb: 'Adjective'//starts out fine\n  },\n  afterTags: {\n    // Pronoun: 'Noun'//as an adult i\n  }\n}\nconst clue = {\n  beforeTags: Object.assign({}, adj.beforeTags, noun.beforeTags, misc.beforeTags),\n  afterTags: Object.assign({}, adj.afterTags, noun.afterTags, misc.afterTags),\n  beforeWords: Object.assign({}, adj.beforeWords, noun.beforeWords, {\n    // are representative\n    are: 'Adjective', is: 'Adjective', was: 'Adjective', be: 'Adjective',\n    // phrasals\n    off: 'Adjective',//start off fine\n    out: 'Adjective',//comes out fine\n  }),\n  afterWords: Object.assign({}, adj.afterWords, noun.afterWords),\n}\nexport default clue"
  },
  {
    "path": "src/2-two/preTagger/model/clues/adj-past.js",
    "content": "import adj from './_adj.js'\n\n// the boiled egg\n// boiled the water\nconst past = 'PastTense'\nconst jj = 'Adjective'\n\nconst adjPast = {\n  beforeTags: {\n    Adverb: past, //quickly detailed\n    Pronoun: past, //he detailed\n    ProperNoun: past, //toronto closed\n    Auxiliary: past,\n    Noun: past, //eye closed  -- i guess.\n  },\n  afterTags: {\n    Possessive: past, //hooked him\n    Pronoun: past, //hooked me\n    Determiner: past, //hooked the\n    Adverb: past, //cooked perfectly\n    Comparative: past, //closed higher\n    Date: past, // alleged thursday\n    Gerund: past, //left dancing\n  },\n  beforeWords: {\n    be: past, //be hooked vs be embarrassed\n    who: past, //who lost\n    get: jj, //get charged\n    had: past,\n    has: past,\n    have: past,\n    been: past,\n    it: past, //it intoxicated him\n    as: past, //as requested\n    for: jj, //for discounted items\n    more: jj, //more broken promises\n    always: jj,\n  },\n  afterWords: {\n    by: past, //damaged by\n    back: past, //charged back\n    out: past, //charged out\n    in: past, //crowded in\n    up: past, //heated up\n    down: past, //hammered down\n    before: past, //\n    after: past, //\n    for: past, //settled for\n    the: past, //settled the\n    with: past, //obsessed with\n    as: past, //known as\n    on: past, //focused on\n    at: past, //recorded at\n    between: past, //settled between\n    to: past, //dedicated to\n    into: past, //pumped into\n    us: past, //charged us\n    them: past, //charged us\n    his: past, //shared his\n    her: past, //\n    their: past, //\n    our: past, //\n    me: past, //\n    about: jj,\n  },\n}\n\nexport default {\n  beforeTags: Object.assign({}, adj.beforeTags, adjPast.beforeTags),\n  afterTags: Object.assign({}, adj.afterTags, adjPast.afterTags),\n  beforeWords: Object.assign({}, adj.beforeWords, adjPast.beforeWords),\n  afterWords: Object.assign({}, adj.afterWords, adjPast.afterWords),\n}\n"
  },
  {
    "path": "src/2-two/preTagger/model/clues/adj-present.js",
    "content": "import adj from './_adj.js'\nimport verb from './_verb.js'\n\n// 'would mean' vs 'is mean'\nconst misc = {\n  afterTags: {\n    Noun: 'Adjective',//ruling party\n    Conjunction: undefined //clean and excellent\n  }\n}\nconst clue = {\n  beforeTags: Object.assign({}, adj.beforeTags, verb.beforeTags, {\n    // always clean\n    Adverb: undefined, Negative: undefined\n  }),\n  afterTags: Object.assign({}, adj.afterTags, verb.afterTags, misc.afterTags),\n  beforeWords: Object.assign({}, adj.beforeWords, verb.beforeWords, {\n    // have seperate contracts\n    have: undefined, had: undefined, not: undefined,\n    //went wrong, got wrong\n    went: 'Adjective', goes: 'Adjective', got: 'Adjective',\n    // be sure\n    be: 'Adjective'\n  }),\n  afterWords: Object.assign({}, adj.afterWords, verb.afterWords, {\n    to: undefined,//slick to the touch\n    as: 'Adjective',//pale as\n  }),\n}\n// console.log(clue.beforeWords)\n// console.log(clue)\nexport default clue"
  },
  {
    "path": "src/2-two/preTagger/model/clues/index.js",
    "content": "import actorVerb from './actor-verb.js'\nimport adjGerund from './adj-gerund.js'\nimport adjNoun from './adj-noun.js'\nimport adjPast from './adj-past.js'\nimport adjPresent from './adj-present.js'\nimport nounGerund from './noun-gerund.js'\nimport nounVerb from './noun-verb.js'\nimport personDate from './person-date.js'\nimport personNoun from './person-noun.js'\nimport personVerb from './person-verb.js'\nimport personPlace from './person-place.js'\nimport personAdj from './person-adj.js'\nimport unitNoun from './unit-noun.js'\n\nconst clues = {\n  'Actor|Verb': actorVerb,\n  'Adj|Gerund': adjGerund,\n  'Adj|Noun': adjNoun,\n  'Adj|Past': adjPast,\n  'Adj|Present': adjPresent,\n  'Noun|Verb': nounVerb,\n  'Noun|Gerund': nounGerund,\n  'Person|Noun': personNoun,\n  'Person|Date': personDate,\n  'Person|Verb': personVerb,\n  'Person|Place': personPlace,\n  'Person|Adj': personAdj,\n  'Unit|Noun': unitNoun,\n}\n\nconst copy = (obj, more) => {\n  const res = Object.keys(obj).reduce((h, k) => {\n    h[k] = obj[k] === 'Infinitive' ? 'PresentTense' : 'Plural'\n    return h\n  }, {})\n  return Object.assign(res, more)\n}\n\n// make a copy of this one\nclues['Plural|Verb'] = {\n  beforeWords: copy(clues['Noun|Verb'].beforeWords, {\n    had: 'Plural', //had tears\n    have: 'Plural',\n  }),\n  afterWords: copy(clues['Noun|Verb'].afterWords, {\n    his: 'PresentTense', her: 'PresentTense', its: 'PresentTense',\n    in: null, to: null,\n    is: 'PresentTense', //the way it works is\n    by: 'PresentTense', //it works by\n  }),\n  beforeTags: copy(clues['Noun|Verb'].beforeTags, {\n    Conjunction: 'PresentTense', //and changes\n    Noun: undefined, //the century demands\n    ProperNoun: 'PresentTense'//john plays\n  }),\n  afterTags: copy(clues['Noun|Verb'].afterTags, {\n    Gerund: 'Plural',//ice caps disappearing\n    Noun: 'PresentTense', //changes gears\n    Value: 'PresentTense' //changes seven gears\n  }),\n}\n// add some custom plural clues\nexport default clues"
  },
  {
    "path": "src/2-two/preTagger/model/clues/noun-gerund.js",
    "content": "import noun from './_noun.js'\nimport gerund from './_gerund.js'\n\n// 'operating the crane', or 'operating room'\nconst misc = {\n  beforeTags: {\n    Copula: 'Gerund',\n    PastTense: 'Gerund',\n    PresentTense: 'Gerund',\n    Infinitive: 'Gerund',\n  },\n  afterTags: {\n    Value: 'Gerund', //maintaining 500\n  },\n  beforeWords: {\n    are: 'Gerund',\n    were: 'Gerund',\n    be: 'Gerund',\n    no: 'Gerund',\n    without: 'Gerund',\n    //are you playing\n    you: 'Gerund',\n    we: 'Gerund',\n    they: 'Gerund',\n    he: 'Gerund',\n    she: 'Gerund',\n    //stop us playing\n    us: 'Gerund',\n    them: 'Gerund',\n  },\n  afterWords: {\n    // offering the\n    the: 'Gerund',\n    this: 'Gerund',\n    that: 'Gerund',\n    //got me thinking\n    me: 'Gerund',\n    us: 'Gerund',\n    them: 'Gerund',\n  },\n}\nconst clue = {\n  beforeTags: Object.assign({}, gerund.beforeTags, noun.beforeTags, misc.beforeTags),\n  afterTags: Object.assign({}, gerund.afterTags, noun.afterTags, misc.afterTags),\n  beforeWords: Object.assign({}, gerund.beforeWords, noun.beforeWords, misc.beforeWords),\n  afterWords: Object.assign({}, gerund.afterWords, noun.afterWords, misc.afterWords),\n}\nexport default clue\n"
  },
  {
    "path": "src/2-two/preTagger/model/clues/noun-verb.js",
    "content": "import noun from './_noun.js'\nimport verb from './_verb.js'\nconst nn = 'Singular'\nconst vb = 'Infinitive'\n// 'boot the ball'   -  'the red boot'\n// 'boots the ball'  -   'the red boots'\nconst clue = {\n  beforeTags: Object.assign({}, verb.beforeTags, noun.beforeTags, {\n    // Noun: undefined\n    Adjective: nn,//great name\n    Particle: nn//brought under control\n  }),\n  afterTags: Object.assign({}, verb.afterTags, noun.afterTags, {\n    ProperNoun: vb, Gerund: vb, Adjective: vb,\n    Copula: nn,\n  }),\n  beforeWords: Object.assign({}, verb.beforeWords, noun.beforeWords, {\n    // is time\n    is: nn, was: nn,\n    //balance of power\n    of: nn,\n    have: null //have cash\n  }),\n  afterWords: Object.assign({}, verb.afterWords, noun.afterWords, {\n    // for: vb,//work for\n    instead: vb,\n    // that: nn,//subject that was\n    // for: vb,//work for\n    about: vb,//talk about\n    his: vb,//shot his\n    her: vb,//\n    to: null,\n    by: null,\n    in: null\n  }),\n}\n\nexport default clue"
  },
  {
    "path": "src/2-two/preTagger/model/clues/person-adj.js",
    "content": "import person from './_person.js'\nimport adj from './_adj.js'\n\n// 'rusty nail'   -  'rusty smith'\nconst clues = {\n  beforeTags: Object.assign({}, person.beforeTags, adj.beforeTags),\n  afterTags: Object.assign({}, person.afterTags, adj.afterTags),\n  beforeWords: Object.assign({}, person.beforeWords, adj.beforeWords),\n  afterWords: Object.assign({}, person.afterWords, adj.afterWords),\n}\nexport default clues"
  },
  {
    "path": "src/2-two/preTagger/model/clues/person-date.js",
    "content": "import person from './_person.js'\n\n// 'april o'neil'  -  'april 1st'\n\nconst m = 'Month'\nconst p = 'Person'\nconst month = {\n  beforeTags: {\n    Date: m,\n    Value: m,\n  },\n  afterTags: {\n    Date: m,\n    Value: m,\n  },\n  beforeWords: {\n    by: m,\n    in: m,\n    on: m,\n    during: m,\n    after: m,\n    before: m,\n    between: m,\n    until: m,\n    til: m,\n    sometime: m,\n    of: m, //5th of april\n    this: m, //this april\n    next: m,\n    last: m,\n    previous: m,\n    following: m,\n    with: p,\n    // for: p,\n  },\n  afterWords: {\n    sometime: m,\n    in: m,\n    of: m,\n    until: m,\n    the: m, //june the 4th\n  },\n}\nexport default {\n  beforeTags: Object.assign({}, person.beforeTags, month.beforeTags),\n  afterTags: Object.assign({}, person.afterTags, month.afterTags),\n  beforeWords: Object.assign({}, person.beforeWords, month.beforeWords),\n  afterWords: Object.assign({}, person.afterWords, month.afterWords),\n}\n"
  },
  {
    "path": "src/2-two/preTagger/model/clues/person-noun.js",
    "content": "import person from './_person.js'\nimport noun from './_noun.js'\n\n// 'babling brook' vs 'brook sheilds'\n\nconst clue = {\n  beforeTags: Object.assign({}, noun.beforeTags, person.beforeTags),\n  afterTags: Object.assign({}, noun.afterTags, person.afterTags),\n  beforeWords: Object.assign({}, noun.beforeWords, person.beforeWords, { i: 'Infinitive', we: 'Infinitive' }),\n  afterWords: Object.assign({}, noun.afterWords, person.afterWords),\n}\nexport default clue"
  },
  {
    "path": "src/2-two/preTagger/model/clues/person-place.js",
    "content": "import person from './_person.js'\nconst p = 'Place'\n\n// 'paris hilton' vs 'paris france'\nconst place = {\n  beforeTags: {\n    Place: p\n  },\n  afterTags: {\n    Place: p,\n    Abbreviation: p\n  },\n  beforeWords: {\n    in: p,\n    by: p,\n    near: p,\n    from: p,\n    to: p,\n  },\n  afterWords: {\n    in: p,\n    by: p,\n    near: p,\n    from: p,\n    to: p,\n    government: p,\n    council: p,\n    region: p,\n    city: p,\n  },\n}\n\nconst clue = {\n  beforeTags: Object.assign({}, place.beforeTags, person.beforeTags),\n  afterTags: Object.assign({}, place.afterTags, person.afterTags),\n  beforeWords: Object.assign({}, place.beforeWords, person.beforeWords),\n  afterWords: Object.assign({}, place.afterWords, person.afterWords),\n}\nexport default clue"
  },
  {
    "path": "src/2-two/preTagger/model/clues/person-verb.js",
    "content": "import person from './_person.js'\nimport verb from './_verb.js'\nimport noun from './_noun.js'\n\n// 'rob the store'   -  'rob lowe'\n// can be a noun too - 'losing hope'\nconst clues = {\n  beforeTags: Object.assign({}, noun.beforeTags, person.beforeTags, verb.beforeTags),\n  afterTags: Object.assign({}, noun.afterTags, person.afterTags, verb.afterTags),\n  beforeWords: Object.assign({}, noun.beforeWords, person.beforeWords, verb.beforeWords),\n  afterWords: Object.assign({}, noun.afterWords, person.afterWords, verb.afterWords),\n}\nexport default clues"
  },
  {
    "path": "src/2-two/preTagger/model/clues/unit-noun.js",
    "content": "// '5 oz'   -  'dr oz'\nconst un = 'Unit'\nconst clues = {\n  beforeTags: { Value: un },\n  afterTags: {},\n  beforeWords: {\n    per: un,\n    every: un,\n    each: un,\n    square: un, //square km\n    cubic: un,\n    sq: un,\n    metric: un //metric ton\n  },\n  afterWords: {\n    per: un,\n    squared: un,\n    cubed: un,\n    long: un //foot long\n  },\n}\nexport default clues"
  },
  {
    "path": "src/2-two/preTagger/model/index.js",
    "content": "import irregularPlurals from './irregulars/plurals.js'\nimport { lexicon, switches, frozenLex } from './lexicon/index.js'\nimport clues from './clues/index.js'\nimport suffixPatterns from './patterns/suffixes.js'\nimport prefixPatterns from './patterns/prefixes.js'\nimport endsWith from './patterns/endsWith.js'\nimport neighbours from './patterns/neighbours.js'\nimport models from './models/index.js'\nimport regexNormal from './regex/regex-normal.js'\nimport regexText from './regex/regex-text.js'\nimport regexNumbers from './regex/regex-numbers.js'\nimport orgWords from './orgWords.js'\nimport placeWords from './placeWords.js'\nimport expandLexicon from './_expand/index.js'\n\nlet model = {\n  one: {\n    _multiCache: {},\n    lexicon,\n    frozenLex,\n  },\n  two: {\n    irregularPlurals,\n    models,\n\n    suffixPatterns,\n    prefixPatterns,\n    endsWith,\n    neighbours,\n\n    regexNormal,\n    regexText,\n    regexNumbers,\n\n    switches,\n    clues,\n\n    uncountable: {},\n\n    orgWords,\n    placeWords,\n  },\n}\nmodel = expandLexicon(model)\nexport default model\n\n// console.log(model.one.lexicon.see)\n"
  },
  {
    "path": "src/2-two/preTagger/model/irregulars/plurals.js",
    "content": "//nouns with irregular plural/singular forms\n//used in nouns.toPlural(), and also in the lexicon.\n\nexport default {\n  // -a\n  addendum: 'addenda',\n  corpus: 'corpora',\n  criterion: 'criteria',\n  curriculum: 'curricula',\n  genus: 'genera',\n  memorandum: 'memoranda',\n  opus: 'opera',\n  ovum: 'ova',\n  phenomenon: 'phenomena',\n  referendum: 'referenda',\n\n  // -ae\n  alga: 'algae',\n  alumna: 'alumnae',\n  antenna: 'antennae',\n  formula: 'formulae',\n  larva: 'larvae',\n  nebula: 'nebulae',\n  vertebra: 'vertebrae',\n\n  // -is\n  analysis: 'analyses',\n  axis: 'axes',\n  diagnosis: 'diagnoses',\n  parenthesis: 'parentheses',\n  prognosis: 'prognoses',\n  synopsis: 'synopses',\n  thesis: 'theses',\n  neurosis: 'neuroses',\n  // -x\n  appendix: 'appendices',\n  index: 'indices',\n  matrix: 'matrices',\n  ox: 'oxen',\n  sex: 'sexes',\n\n  // -i\n  alumnus: 'alumni',\n  bacillus: 'bacilli',\n  cactus: 'cacti',\n  fungus: 'fungi',\n  hippopotamus: 'hippopotami',\n  libretto: 'libretti',\n  modulus: 'moduli',\n  nucleus: 'nuclei',\n  octopus: 'octopi',\n  radius: 'radii',\n  stimulus: 'stimuli',\n  syllabus: 'syllabi',\n\n  // -ie\n  cookie: 'cookies',\n  calorie: 'calories',\n  auntie: 'aunties',\n  movie: 'movies',\n  pie: 'pies',\n  rookie: 'rookies',\n  tie: 'ties',\n  zombie: 'zombies',\n\n  // -f\n  leaf: 'leaves',\n  loaf: 'loaves',\n  thief: 'thieves',\n\n  // ee-\n  foot: 'feet',\n  goose: 'geese',\n  tooth: 'teeth',\n\n  // -eaux\n  beau: 'beaux',\n  chateau: 'chateaux',\n  tableau: 'tableaux',\n\n  // -ses\n  bus: 'buses',\n  gas: 'gases',\n  circus: 'circuses',\n  crisis: 'crises',\n  virus: 'viruses',\n  database: 'databases',\n  excuse: 'excuses',\n  abuse: 'abuses',\n\n  avocado: 'avocados',\n  barracks: 'barracks',\n  child: 'children',\n  clothes: 'clothes',\n  echo: 'echoes',\n  embargo: 'embargoes',\n  epoch: 'epochs',\n  deer: 'deer',\n  halo: 'halos',\n  man: 'men',\n  woman: 'women',\n  mosquito: 'mosquitoes',\n  mouse: 'mice',\n  person: 'people',\n  quiz: 'quizzes',\n  rodeo: 'rodeos',\n  shoe: 'shoes',\n  sombrero: 'sombreros',\n  stomach: 'stomachs',\n  tornado: 'tornados',\n  tuxedo: 'tuxedos',\n  volcano: 'volcanoes',\n\n}\n"
  },
  {
    "path": "src/2-two/preTagger/model/lexicon/_data.js",
    "content": "// generated in ./lib/lexicon\nexport default {\n  \"Comparative\": \"true¦bett1f0;arth0ew0in0;er\",\n  \"Superlative\": \"true¦earlier\",\n  \"PresentTense\": \"true¦bests,sounds\",\n  \"Condition\": \"true¦lest,unless\",\n  \"PastTense\": \"true¦began,came,d4had,kneel3l2m0sa4we1;ea0sg2;nt;eap0i0;ed;id\",\n  \"Participle\": \"true¦0:09;a06b01cZdXeat0fSgQhPoJprov0rHs7t6u4w1;ak0ithdra02o2r1;i02uY;k0v0;nd1pr04;ergoJoJ;ak0hHo3;e9h7lain,o6p5t4un3w1;o1um;rn;g,k;ol0reS;iQok0;ught,wn;ak0o1runk;ne,wn;en,wn;ewriNi1uJ;dd0s0;ut3ver1;do4se0t1;ak0h2;do2g1;roG;ne;ast0i7;iv0o1;ne,tt0;all0loBor1;bi3g2s1;ak0e0;iv0o9;dd0;ove,r1;a5eamt,iv0;hos0lu1;ng;e4i3lo2ui1;lt;wn;tt0;at0en,gun;r2w1;ak0ok0;is0;en\",\n  \"Gerund\": \"true¦accord0be0doin,go0result0stain0;ing\",\n  \"Expression\": \"true¦a0Yb0Uc0Sd0Oe0Mfarew0Lg0FhZjeez,lWmVnToOpLsJtIuFvEw7y0;a5e3i1u0;ck,p;k04p0;ee,pee;a0p,s;!h;!a,h,y;a5h2o1t0;af,f;rd up,w;atsoever,e1o0;a,ops;e,w;hoo,t;ery w06oi0L;gh,h0;! 0h,m;huh,oh;here nPsk,ut tut;h0ic;eesh,hh,it,oo;ff,h1l0ow,sst;ease,s,z;ew,ooey;h1i,mg,o0uch,w,y;h,o,ps;! 0h;hTmy go0wT;d,sh;a7evertheless,o0;!pe;eh,mm;ah,eh,m1ol0;!s;ao,fao;aCeBi9o2u0;h,mph,rra0zzC;h,y;l1o0;r6y9;la,y0;! 0;c1moCsmok0;es;ow;!p hip hoor0;ay;ck,e,llo,y;ha1i,lleluj0;ah;!ha;ah,ee4o1r0;eat scott,r;l1od0sh; grief,bye;ly;! whiz;ell;e0h,t cetera,ureka,ww,xcuse me;k,p;'oh,a0rat,uh;m0ng;mit,n0;!it;mon,o0;ngratulations,wabunga;a2oo1r0tw,ye;avo,r;!ya;h,m; 1h0ka,las,men,rgh,ye;!a,em,h,oy;la\",\n  \"Negative\": \"true¦n0;ever,o0;n,t\",\n  \"QuestionWord\": \"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",\n  \"Reflexive\": \"true¦h4it5my5o1the0your2;ir1m1;ne3ur0;sel0;f,ves;er0im0;self\",\n  \"Plural\": \"true¦dick0gre0ones,records;ens\",\n  \"Unit|Noun\": \"true¦cEfDgChBinchAk9lb,m6newt5oz,p4qt,t1y0;ardEd;able1b0ea1sp;!l,sp;spo1;a,t,x;on9;!b,g,i1l,m,p0;h,s;!les;!b,elvin,g,m;!es;g,z;al,b;eet,oot,t;m,up0;!s\",\n  \"Value\": \"true¦a few\",\n  \"Imperative\": \"true¦bewa0come he0;re\",\n  \"Plural|Verb\": \"true¦leaves\",\n  \"Demonym\": \"true¦0:15;1:12;a0Vb0Oc0Dd0Ce08f07g04h02iYjVkTlPmLnIomHpEqatari,rCs7t5u4v3welAz2;am0Gimbabwe0;enezuel0ietnam0I;gAkrai1;aiwTex0hai,rinida0Ju2;ni0Prkmen;a5cotti4e3ingapoOlovak,oma0Spaniard,udRw2y0W;ede,iss;negal0Cr09;sh;mo0uT;o5us0Jw2;and0;a2eru0Fhilippi0Nortugu07uerto r0S;kist3lesti1na2raguay0;ma1;ani;ami00i2orweP;caragu0geri2;an,en;a3ex0Lo2;ngo0Drocc0;cedo1la2;gasy,y07;a4eb9i2;b2thua1;e0Cy0;o,t01;azakh,eny0o2uwaiI;re0;a2orda1;ma0Ap2;anO;celandic,nd4r2sraeli,ta01vo05;a2iB;ni0qi;i0oneU;aiAin2ondur0unO;di;amEe2hanai0reek,uatemal0;or2rm0;gi0;ilipino,ren8;cuadoVgyp4mira3ngli2sto1thiopi0urope0;shm0;ti;ti0;aPominUut3;a9h6o4roat3ub0ze2;ch;!i0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el6o4r3ul2;gaE;azi9it;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;genti2me1;ne;ba1ge2;ri0;ni0;gh0r2;ic0;an\",\n  \"Organization\": \"true¦0:4Q;a3Tb3Bc2Od2He2Df27g1Zh1Ti1Pj1Nk1Ll1Gm12n0Po0Mp0Cqu0Br02sTtHuCv9w3xiaomi,y1;amaha,m1Bou1w1B;gov,tu3C;a4e2iki1orld trade organizati33;leaRped0O;lls fargo,st1;fie2Hinghou2R;l1rner br3U;gree3Jl street journ2Im1E;an halOeriz2Xisa,o1;dafo2Yl1;kswagMvo;b4kip,n2ps,s1;a tod3Aps;es3Mi1;lev3Fted natio3C;er,s; mobi32aco beRd bOe9gi frida3Lh3im horto3Amz,o1witt3D;shi49y1;ota,s r 05;e 1in lizzy;b3carpen3Jdaily ma3Dguess w2holli0s1w2;mashing pumpki35uprem0;ho;ea1lack eyed pe3Xyr0Q;ch bo3Dtl0;l2n3Qs1xas instrumen1U;co,la m1F;efoni0Kus;a8cientology,e5ieme2Ymirnoff,np,o3pice gir6quare0Ata1ubaru;rbuc1to34;ks;ny,undgard1;en;a2x pisto1;ls;g1Wrs;few2Minsbur31lesfor03msu2E;adiohead,b8e4o1yana3C;man empi1Xyal 1;b1dutch she4;ank;a3d 1max,vl20;bu1c2Ahot chili peppe2Ylobst2N;ll;ders dige1Ll madrid;c,s;ant3Aizn2Q;a8bs,e5fiz2Ihilip4i3r1;emier 1udenti1D;leagTo2K;nk floyd,zza hut; morrBs;psi2tro1uge0E;br33chi0Tn33;!co;lant2Un1yp16; 2ason27da2P;ld navy,pec,range juli2xf1;am;us;aAb9e6fl,h5i4o1sa,vid3wa;k2tre dame,vart1;is;ia;ke,ntendo,ss0QvZ;l,s;c,st1Otflix,w1; 1sweek;kids on the block,york0D;a,c;nd22s2t1;ional aca2Po,we0U;a,c02d0S;aDcdonalCe9i6lb,o3tv,y1;spa1;ce;b1Tnsanto,ody blu0t1;ley cr1or0T;ue;c2t1;as,subisO;helin,rosoft;dica2rcedes benz,talli1;ca;id,re;ds;cs milk,tt19z24;a3e1g,ittle caesa1P; ore09novo,x1;is,mark,us; 1bour party;pres0Dz boy;atv,fc,kk,lm,m1od1O;art;iffy lu0Roy divisi0Jpmorgan1sa;! cha09;bm,hop,k3n1tv;g,te1;l,rpol;ea;a5ewlett pack1Vi3o1sbc,yundai;me dep1n1P;ot;tac1zbollah;hi;lliburt08sbro;eneral 6hq,ithub,l5mb,o2reen d0Ou1;cci,ns n ros0;ldman sachs,o1;dye1g0H;ar;axo smith kli04encoW;electr0Nm1;oto0Z;a5bi,c barcelo4da,edex,i2leetwood m03o1rito l0G;rd,xcY;at,fa,nancial1restoZ; tim0;na;cebook,nnie mae;b0Asa,u3xxon1; m1m1;ob0J;!rosceptics;aiml0De5isney,o4u1;nkin donu2po0Zran dur1;an;ts;j,w jon0;a,f lepp12ll,peche mode,r spieg02stiny's chi1;ld;aJbc,hFiDloudflaCnn,o3r1;aigsli5eedence clearwater reviv1ossra09;al;c7inba6l4m1o0Est09;ca2p1;aq;st;dplSg1;ate;se;a c1o chanQ;ola;re;a,sco1tigroup;! systems;ev2i1;ck fil a,na daily;r1y;on;d2pital o1rls jr;ne;bury,ill1;ac;aEbc,eBf9l5mw,ni,o1p,rexiteeU;ei3mbardiIston 1;glo1pizza;be;ng;o2ue c1;roV;ckbuster video,omingda1;le; g1g1;oodriL;cht2e ge0rkshire hathaw1;ay;el;cardi,idu,nana republ3s1xt5y5;f,kin robbi1;ns;ic;bYcTdidSerosmith,iRlKmEnheuser busDol,ppleAr6s4u3v2y1;er;is,on;di,todesk;hland o1sociated E;il;b3g2m1;co;os;ys; compu1be0;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 5catel2ta1;ir;! lu1;ce1;nt;jazeera,qae1;da;g,rbnb;as;/dc,a3er,tivision1;! blizz1;ard;demy of scienc0;es;ba\",\n  \"Possessive\": \"true¦its,my,our0thy;!s\",\n  \"Noun|Verb\": \"true¦0:9W;1:AA;2:96;3:A3;4:9R;5:A2;6:9K;7:8N;8:7L;9:A8;A:93;B:8D;C:8X;a9Ob8Qc7Id6Re6Gf5Sg5Hh55i4Xj4Uk4Rl4Em40n3Vo3Sp2Squ2Rr21s0Jt02u00vVwGyFzD;ip,oD;ne,om;awn,e6Fie68;aOeMhJiHoErD;ap,e9Oink2;nd0rDuC;kDry,sh5Hth;!shop;ck,nDpe,re,sh;!d,g;e86iD;p,sD;k,p0t2;aDed,lco8W;r,th0;it,lk,rEsDt4ve,x;h,te;!ehou1ra9;aGen5FiFoD;iDmAte,w;ce,d;be,ew,sA;cuum,l4B;pDr7;da5gra6Elo6A;aReQhrPiOoMrGuEwiDy5Z;n,st;nDrn;e,n7O;aGeFiEoDu6;t,ub2;bu5ck4Jgg0m,p;at,k,nd;ck,de,in,nsDp,v7J;f0i8R;ll,ne,p,r4Yss,t94uD;ch,r;ck,de,e,le,me,p,re;e5Wow,u6;ar,e,ll,mp0st,xt;g,lDng2rg7Ps5x;k,ly;a0Sc0Ne0Kh0Fi0Dk0Cl0Am08n06o05pXquaBtKuFwD;ea88iD;ng,pe,t4;bGit,m,ppErD;fa3ge,pri1v2U;lDo6S;e6Py;!je8;aMeLiKoHrEuDy2;dy,ff,mb2;a85eEiDo5Pugg2;ke,ng;am,ss,t4;ckEop,p,rD;e,m;ing,pi2;ck,nk,t4;er,m,p;ck,ff,ge,in,ke,lEmp,nd,p2rDte,y;!e,t;k,l;aJeIiHlGoFrDur,y;ay,e56inDu3;g,k2;ns8Bt;a5Qit;ll,n,r87te;ed,ll;m,n,rk;b,uC;aDee1Tow;ke,p;a5Je4FiDo53;le,rk;eep,iDou4;ce,p,t;ateboa7Ii;de,gnDl2Vnk,p,ze;!al;aGeFiEoDuff2;ck,p,re,w;ft,p,v0;d,i3Ylt0;ck,de,pe,re,ve;aEed,nDrv1It;se,t2N;l,r4t;aGhedu2oBrD;aEeDibb2o3Z;en,w;pe,t4;le,n,r2M;cDfegua72il,mp2;k,rifi3;aZeHhy6LiGoEuD;b,in,le,n,s5X;a6ck,ll,oDpe,u5;f,t;de,ng,ot,p,s1W;aTcSdo,el,fQgPje8lOmMnLo17pJque6sFturn,vDwa6V;eDi27;al,r1;er74oFpe8tEuD;lt,me;!a55;l71rt;air,eaDly,o53;l,t;dezvo2Zt;aDedy;ke,rk;ea1i4G;a6Iist0r5N;act6Yer1Vo71uD;nd,se;a38o6F;ch,s6G;c1Dge,iEke,lly,nDp1Wt1W;ge,k,t;n,se;es6Biv0;a04e00hYiXlToNrEsy4uD;mp,n4rcha1sh;aKeIiHoDu4O;be,ceFdu3fi2grDje8mi1p,te6;amDe6W;!me;ed,ss;ce,de,nt;sDy;er6Cs;cti3i1;iHlFoEp,re,sDuCw0;e,i5Yt;l,p;iDl;ce,sh;nt,s5V;aEce,e32uD;g,mp,n7;ce,nDy;!t;ck,le,n17pe,tNvot;a1oD;ne,tograph;ak,eFnErDt;fu55mA;!c32;!l,r;ckJiInHrFsEtDu1y;ch,e9;s,te;k,tD;!y;!ic;nt,r,se;!a7;bje8ff0il,oErDutli3Qver4B;bAd0ie9;ze;a4ReFoDur1;d,tD;e,i3;ed,gle8tD;!work;aMeKiIoEuD;rd0;ck,d3Rld,nEp,uDve;nt,th;it5EkD;ey;lk,n4Brr5CsDx;s,ta2B;asuBn4UrDss;ge,it;il,nFp,rk3WsEtD;ch,t0;h,k,t0;da5n0oeuvB;aLeJiHoEuD;mp,st;aEbby,ck,g,oDve;k,t;d,n;cDe,ft,mAnIst;en1k;aDc0Pe4vK;ch,d,k,p,se;bFcEnd,p,t4uD;gh,n4;e,k;el,o2U;eEiDno4E;ck,d,ll,ss;el,y;aEo1OuD;i3mp;m,zz;mpJnEr46ssD;ue;c1Rdex,fluGha2k,se2HteDvoi3;nt,rD;e6fa3viD;ew;en3;a8le2A;aJeHiGoEuD;g,nt;l3Ano2Dok,pDr1u1;!e;ghli1Fke,nt,re,t;aDd7lp;d,t;ck,mGndFrEsh,tDu9;ch,e;bo3Xm,ne4Eve6;!le;!m0;aMear,ift,lKossJrFuD;arDe4Alp,n;antee,d;aFiEoDumb2;uCwth;ll,nd,p;de,sp;ip;aBoDue;ss,w;g,in,me,ng,s,te,ze;aZeWiRlNoJrFuD;ck,el,nDss,zz;c38d;aEoDy;st,wn;cDgme,me,nchi1;tuB;cFg,il,ld,rD;ce,e29mDwa31;!at;us;aFe0Vip,oDy;at,ck,od,wD;!er;g,ke,me,re,sh,vo1E;eGgFlEnDre,sh,t,x;an3i0Q;e,m,t0;ht,uB;ld;aEeDn3;d,l;r,tuB;ce,il,ll,rm,vo2W;cho,d7ffe8nMsKxFyeD;!baD;ll;cGerci1hFpDtra8;eriDo0W;en3me9;au6ibA;el,han7u1;caDtima5;pe;count0d,vy;a01eSiMoJrEuDye;b,el,mp,pli2X;aGeFiEoD;ne,p;ft,ll,nk,p,ve;am,ss;ft,g,in;cEd7ubt,wnloD;ad;k,u0E;ge6p,sFt4vD;e,iDor3;de;char7gui1h,liEpD;at4lay,u5;ke;al,bKcJfeIlGmaCposAsEtaD;il;e07iD;gn,re;ay,ega5iD;ght;at,ct;li04rea1;a5ut;b,ma7n3rDte;e,t;a0Eent0Dh06irc2l03oKrFuD;be,e,rDt;b,e,l,ve;aGeFoEuDy;sh;p,ss,wd;dAep;ck,ft,sh;at,de,in,lTmMnFordina5py,re,st,uDv0;gh,nDp2rt;s01t;ceHdu8fli8glomeIsFtDveN;a8rD;a6ol;e9tru8;ct;ntDrn;ra5;bHfoGmFpD;leDouCromi1;me9;aCe9it,u5;rt;at,iD;ne;lap1oD;r,ur;aEiDoud,ub;ck,p;im,w;aEeDip;at,ck,er;iGllen7nErD;ge,m,t;ge,nD;el;n,r;er,re;ke,ll,mp,noe,pGrXsFtEuDve;se,ti0I;alog,ch;h,t;!tuB;re;a03eZiXlToPrHuEyD;pa11;bb2ck2dgEff0mp,rDst,zz;den,n;et;anJeHiFoadEuD;i1sh;ca6;be,d7;ge;aDed;ch,k;ch,d;aFg,mb,nEoDrd0tt2x,ycott;k,st,t;d,e;rd,st;aFeCiDoYur;nk,tz;nd;me;as,d,ke,nd,opsy,tD;!ch,e;aFef,lt,nDt;d,efA;it;r,t;ck,il,lan3nIrFsEtt2;le;e,h;!gDk;aDe;in;!d,g,k;bu1c05dZge,iYlVnTppQrLsIttGucEwaD;rd;tiD;on;aDempt;ck;k,sD;i6ocia5;st;chFmD;!oD;ur;!iD;ve;eEroa4;ch;al;chDg0sw0;or;aEt0;er;rm;d,m,r;dreHvD;an3oD;ca5;te;ce;ss;cDe,he,t;eFoD;rd,u9;nt;nt,ss;se\",\n  \"Actor\": \"true¦0:7B;1:7G;2:6A;3:7F;4:7O;5:7K;a6Nb62c4Ud4Be41f3Sg3Bh30i2Uj2Qkin2Pl2Km26n1Zo1Sp0Vqu0Tr0JsQtJuHvEw8yo6;gi,ut6;h,ub0;aAe9i8o7r6;estl0it0;m2rk0;fe,nn0t2Bza2H;atherm2ld0;ge earn0it0nder0rri1;eter7i6oyF;ll5Qp,s3Z;an,ina2U;n6s0;c6Uder03;aoisea23e9herapi5iktok0o8r6ut1yco6S;a6endseLo43;d0mp,nscri0Bvel0;ddl0u1G;a0Qchn7en6na4st0;ag0;i3Oo0D;aiXcUeRhPiMki0mu26oJpGquaFtBu7wee6;p0theart;lt2per7r6;f0ge6Iviv1;h6inten0Ist5Ivis1;ero,um2;a8ep7r6;ang0eam0;bro2Nc2Ofa2Nmo2Nsi20;ff0tesm2;tt0;ec7ir2Do6;kesp59u0M;ia5Jt3;l7me6An,rcere6ul;r,ss;di0oi5;n7s6;sy,t0;g0n0;am2ephe1Iow6;girl,m2r2Q;cretInior cit3Fr6;gea4v6;a4it1;hol4Xi7reen6ulpt1;wr2C;e01on;l1nt;aEe9o8u6;l0nn6;er up,ingE;g40le mod3Zof0;a4Zc8fug2Ppo32searQv6;ere4Uolution6;ary;e6luYru22;ptio3T;bbi,dic5Vpp0;arter6e2Z;back;aYeWhSiRlOoKr8sycho7u6;nk,p31;logi5;aGeDiBo6;d9fess1g7ph47s6;pe2Ktitu51;en6ramm0;it1y;igy,uc0;est4Nme mini0Unce6s3E;!ss;a7si6;de4;ch0;ctiti39nk0P;dca0Oet,li6pula50rnst42;c2Itic6;al scie6i2;nti5;a6umb0;nn0y6;er,ma4Lwright;lgrim,one0;a8iloso7otogra7ra6ysi1V;se;ph0;ntom,rmaci5;r6ssi1T;form0s4O;i3El,nel3Yr8st1tr6wn;i6on;arWot;ent4Wi42tn0;ccupa4ffBp8r7ut6;ca5l0B;ac4Iganiz0ig2Fph2;er3t6;i1Jomet6;ri5;ic0spring;aBe9ie4Xo7u6;n,rser3J;b6mad,vi4V;le2Vo4D;i6mesis,phew;ce,ghb1;nny,rr3t1X;aEeDiAo7u6yst1Y;m8si16;der3gul,m7n6th0;arDk;!my;ni7s6;f02s0Jt0;on,st0;chan1Qnt1rcha4;gi9k0n8rtyr,t6y1;e,riar6;ch;ag0iac;ci2stra3I;a7e2Aieutena4o6;rd,s0v0;bor0d7ndlo6ss,urea3Fwy0ym2;rd;!y;!s28;e8o7u6;ggl0;gg0urna2U;st0;c3Hdol,llu3Ummigra4n6; l9c1Qfa4habi42nov3s7ve6;nt1stig3;pe0Nt6;a1Fig3ru0M;aw;airFeBistoAo8u6ygie1K;man6sba2H;!ita8;bo,st6usekN;age,e3P;ri2;ir,r6;m7o6;!ine;it;dress0sty2C;aLeIhostGirl26ladi3oCrand7u6;e5ru;c9daug0Jfa8m7pa6s2Y;!re4;a,o6;th0;hi1B;al7d6lf0;!de3A;ie,k6te26;eep0;!wr6;it0;isha,n6;i6tl04;us;mbl0rden0;aDella,iAo7r6;eela2Nie1P;e,re6ster pare4;be1Hm2r6st0;unn0;an2ZgZlmm17nanci0r6tt0;e6st la2H; marsh2OfigXm2;rm0th0;conoEdDlectriCm8n7x6;amin0cellency,i2A;emy,trepreneur,vironmenta1J;c8p6;er1loye6;e,r;ee;ci2;it1;mi5;aKeBi8ork,ri7u6we02;de,tche2H;ft0v0;ct3eti7plom2Hre6va;ct1;ci2ti2;aDcor3fencCi0InAput9s7tectLvel6;op0;ce1Ge6ign0;rt0;ee,y;iz6;en;em2;c1Ml0;d8nc0redev7ug6;ht0;il;!dy;a06e04fo,hXitizenWlToBr9u6;r3stomer6;! representat6;ive;e3it6;ic;lJmGnAord9rpor1Nu7w6;boy,ork0;n6ri0;ciTte1Q;in3;fidantAgressSs9t6;e0Kr6;ibut1o6;ll0;tab13ul1O;!e;edi2m6pos0rade;a0EeQissi6;on0;leag8on7um6;ni5;el;ue;e6own;an0r6;ic,k;!s;a9e7i6um;ld;erle6f;ad0;ir7nce6plFract0;ll1;m2wI;lebri6o;ty;dBptAr6shi0;e7pe6;nt0;r,t6;ak0;ain;et;aMeLiJlogg0oErBu6;dd0Fild0rgl9siness6;m2p7w6;om2;ers05;ar;i7o6;!k0th0;cklay0de,gadi0;hemi2oge8y6;!frie6;nd;ym2;an;cyc6sR;li5;atbox0ings;by,nk0r6;b0on7te6;nd0;!e07;c04dWge4nQpLrHsFtAu7yatull6;ah;nt7t6;h1oG;!ie;h8t6;e6orney;nda4;ie5le6;te;sis00tron6;aut,om0;chbis8isto7tis6;an,t;crU;hop;ost9p6;ari6rentiS;ti6;on;le;a9cest1im3nou8y6;bo6;dy;nc0;ly5rc6;hi5;mi8v6;entur0is1;er;ni7r6;al;str3;at1;or;counBquaintanArob9t6;ivi5or,re6;ss;st;at;ce;ta4;nt\",\n  \"Adj|Noun\": \"true¦0:16;a1Db17c0Ud0Re0Mf0Dg0Ah08i06ju05l02mWnUoSpNrIsBt7u4v1watershed;a1ision0Z;gabo4nilla,ria1;b0Vnt;ndergr1pstairs;adua14ou1;nd;a3e1oken,ri0;en,r1;min0rori13;boo,n;age,e5ilv0Flack,o3quat,ta2u1well;bordina0Xper5;b0Lndard;ciali0Yl1vereign;e,ve16;cret,n1ri0;ior;a4e2ou1ubbiL;nd,tiY;ar,bBl0Wnt0p1side11;resent0Vublican;ci0Qsh;a4eriodic0last0Zotenti0r1;emi2incip0o1;!fession0;er,um;rall4st,tie0U;ff1pposi0Hv0;ens0Oi0C;agg01ov1uts;el;a5e3iniatJo1;bi01der07r1;al,t0;di1tr0N;an,um;le,riG;attOi2u1;sh;ber0ght,qC;stice,veniT;de0mpressioYn1;cumbe0Edividu0no0Dsta0Eterim;alf,o1umdrum;bby,melF;en2old,ra1;ph0Bve;er0ious;a7e5i4l3u1;git03t1;ure;uid;ne;llow,m1;aFiL;ir,t,vo1;riOuriO;l3p00x1;c1ecutUpeV;ess;d1iK;er;ar2e1;mographUrivO;k,l2;hiGlassSo2rude,unn1;ing;m5n1operK;creCstitueOte2vertab1;le;mpor1nt;ary;ic,m2p1;anion,lex;er2u1;ni8;ci0;al;e5lank,o4r1;i2u1;te;ef;ttom,urgeois;st;cadem9d6l2ntarct9r1;ab,ct8;e3tern1;at1;ive;rt;oles1ult;ce1;nt;ic\",\n  \"Adj|Past\": \"true¦0:4Q;1:4C;2:4H;3:4E;a44b3Tc36d2Je29f20g1Wh1Si1Jj1Gkno1Fl1Am15n12o0Xp0Mqu0Kr08sLtEuAv9w4yellow0;a7ea6o4rinkl0;r4u3Y;n,ri0;k31th3;rp0sh0tZ;ari0e1O;n5p4s0;d1li1Rset;cov3derstood,i4;fi0t0;a8e3Rhr7i6ouTr4urn0wi4C;a4imm0ou2G;ck0in0pp0;ed,r0;eat2Qi37;m0nn0r4;get0ni2T;aOcKeIhGimFm0Hoak0pDt7u4;bsid3Ogge44s4;pe4ta2Y;ct0nd0;a8e7i2Eok0r5u4;ff0mp0nn0;ength2Hip4;ed,p0;am0reotyp0;in0t0;eci4ik0oH;al3Efi0;pRul1;a4ock0ut;d0r0;a4c1Jle2t31;l0s3Ut0;a6or5r4;at4e25;ch0;r0tt3;t4ut0;is2Mur1;aEe5o4;tt0;cAdJf2Bg9je2l8m0Knew0p7qu6s4;eTpe2t4;or0ri2;e3Dir0;e1lac0;at0e2Q;i0Rul1;eiv0o4ycl0;mme2Lrd0v3;in0lli0ti2A;a4ot0;li28;aCer30iBlAo9r5u4;mp0zzl0;e6i2Oo4;ce2Fd4lo1Anou30pos0te2v0;uc0;fe1CocCp0Iss0;i2Kli1L;ann0e2CuS;ck0erc0ss0;ck0i2Hr4st0;allLk0;bse7c6pp13rgan2Dver4;lo4whelm0;ok0;cupi0;rv0;aJe5o4;t0uri1A;ed0gle2;a6e5ix0o4ut0ys1N;di1Nt15u26;as0Clt0;n4rk0;ag0ufact0A;e6i5o4;ad0ck0st,v0;cens0m04st0;ft,v4;el0;tt0wn;a5o15u4;dg0s1B;gg0;llumSmpAn4sol1;br0cre1Ldebt0f8jZspir0t5v4;it0olv0;e4ox0Y;gr1n4re23;d0si15;e2l1o1Wuri1;li0o01r4;ov0;a6e1o4um03;ok0r4;ri0Z;mm3rm0;i6r5u4;a1Bid0;a0Ui0Rown;ft0;aAe9i8l6oc0Ir4;a4i0oz0Y;ctHg19m0;avo0Ju4;st3;ni08tt0x0;ar0;d0il0sc4;in1;dCl1mBn9quipp0s8x4;agger1c6p4te0T;a0Se4os0;ct0rie1D;it0;cap0tabliZ;cha0XgFha1As4;ur0;a0Zbarra0N;i0Buc1;aMeDi5r4;a01i0;gni08miniSre2s4;a9c6grun0Ft4;o4re0Hu17;rt0;iplWou4;nt0r4;ag0;bl0;cBdRf9l8p7ra6t5v4;elop0ot0;ail0ermQ;ng0;re07;ay0ight0;e4in0o0M;rr0;ay0enTor1;m5t0z4;ed,zl0;ag0p4;en0;aPeLhIlHo9r6u4;lt4r0stom03;iv1;a5owd0u4;sh0;ck0mp0;d0loAm7n4ok0v3;centr1f5s4troC;id3olid1;us0;b5pl4;ic1;in0;r0ur0;assi9os0utt3;ar5i4;ll0;g0m0;lebr1n6r4;ti4;fi0;tralJ;g0lcul1;aDewild3iCl9o7r5urn4;ed,t;ok4uis0;en;il0r0t4und;tl0;e5i4;nd0;ss0;as0;ffl0k0laMs0tt3;bPcNdKfIg0lFmaz0nDppBrm0ss9u5wa4;rd0;g5thor4;iz0;me4;nt0;o6u4;m0r0;li0re4;ci1;im1ticip1;at0;a5leg0t3;er0;rm0;fe2;ct0;ju5o7va4;nc0;st0;ce4knowledg0;pt0;and5so4;rb0;on0;ed\",\n  \"Singular\": \"true¦0:5J;1:5H;2:4W;3:4S;4:52;5:57;6:5L;7:56;8:5B;a52b4Lc3Nd35e2Xf2Og2Jh28in24j23k22l1Um1Ln1Ho1Bp0Rqu0Qr0FsZtMuHvCw9x r58yo yo;a9ha3Po3Q;f3i4Rt0Gy9;! arou39;arCeAideo ga2Qo9;cabu4Jl5C;gOr9t;di4Zt1Y;iety,ni4P;nBp30rAs 9;do43s5E;bani1in0;coordinat3Ader9;estima1to24we41; rex,aKeJhHiFoErBuAv9;! show;m2On2rntLto1D;agedy,ib9o4E;e,u9;n0ta46;ni1p2rq3L;c,er,m9;etF;ing9ree26;!y;am,mp3F;ct2le6x return;aNcMeKhor4QiJkHoGpin off,tDuBy9;ll9ner7st4T;ab2X;b9i1n28per bowl,rro1X;st3Ltot0;atAipe2Go1Lrate7udent9;! lo0I;i39u1;ft ser4Lmeo1I;elet5i9;ll,r3V;b38gn2Tte;ab2Jc9min3B;t,urity gua2N;e6ho2Y;bbatic0la3Jndwi0Qpi5;av5eDhetor2iAo9;de6om,w;tAv9;erb2C;e,u0;bDcBf9publ2r10spi1;er9orm3;e6r0;i9ord label;p2Ht0;a1u46;estion mark,ot2F;aPeMhoLiIlGoErAu9yram1F;ddi3HpErpo1Js3J;eBo9;bl3Zs9;pe3Jta1;dic1Rmi1Fp1Qroga8ss relea1F;p9rt0;py;a9ebisci1;q2Dte;cn2eAg9;!gy;!r;ne call,tocoK;anut,dAr9t0yo1;cen3Jsp3K;al,est0;nop4rAt9;e,hog5;adi11i2V;atme0bj3FcBpia1rde0thers,utspok5ve9wn3;n,r9;ti0Pview;cuAe9;an;pi3;arBitAot9umb3;a2Fhi2R;e,ra1;cot2ra8;aFeCiAo9ur0;nopo4p18rni2Nsq1Rti36uld;c,li11n0As9tt5;chief,si34;dAnu,t9;al,i3;al,ic;gna1mm0nd15rsupi0te9yf4;ri0;aDegCiBu9;ddi1n9;ch;me,p09; Be0M;bor14y9; 9er;up;eyno1itt5;el4ourn0;cBdices,itia8ni25sAtel0Lvert9;eb1J;e28titu1;en8i2T;aIeEighDoAu9;man right,s22;me9rmoFsp1Ftb0K;! r9;un; scho0YriY;a9i1N;d9v5; start,pho9;ne;ndful,sh brown,v5ze;aBelat0Ilaci3r9ul4yp1S;an9enadi3id;a1Cd slam,ny;df4r9;l2ni1I;aGeti1HiFlu1oCrAun9;er0;ee market,i9onti3;ga1;l4ur9;so9;me;ePref4;br2mi4;conoFffi7gg,lecto0Rmbas1EnCpidem2s1Zth2venBxAyel9;id;ampZempl0Nte6;i19t;er7terp9;ri9;se;my;eLiEoBr9ump tru0U;agonf4i9;er,ve thru;cAg7i4or,ssi3wn9;side;to0EumenE;aEgniDnn3sAvide9;nd;conte6incen8p9tri11;osi9;ti0C;ta0H;le0X;athBcAf9ni0terre6;ault 05err0;al,im0;!b9;ed;aWeThMiLlJoDr9;edit caBuc9;ib9;le;rd;efficDke,lCmmuniqLnsApi3rr0t0Xus9yo1;in;erv9uI;ato02;ic,lQ;ie6;er7i9oth;e6n2;ty,vil wM;aDeqCick5ocoBr9;istmas car9ysanthemum;ol;la1;ue;ndeli3racteri9;st2;iAllEr9;e0tifica1;liZ;hi3nFpErCt9ucus;erpi9hedr0;ll9;ar;!bohyd9ri3;ra1;it0;aAe,nib0t9;on;l,ry;aMeLiop2leJoHrDu9;nny,r9tterf4;g9i0;la9;ry;eakAi9;ck;fa9throB;st;dy,ro9wl;ugh;mi9;sh;an,l4;nkiArri3;er;ng;cSdMlInFppeti1rDsBtt2utop9;sy;ic;ce6pe9;ct;r9sen0;ay;ecAoma4tiA;ly;do1;i5l9;er7y;gy;en; hominDjAvan9;tage;ec8;ti9;ve;em;cCeAqui9;tt0;ta1;te;iAru0;al;de6;nt\",\n  \"Person|Noun\": \"true¦a0Eb07c03dWeUfQgOhLjHkiGlFmCnBolive,p7r4s3trini06v1wa0;ng,rd,tts;an,enus,iol0;a,et;ky,onPumm09;ay,e1o0uby;bin,d,se;ed,x;a2e1o0;l,tt04;aLnJ;dYge,tR;at,orm;a0eloW;t0x,ya;!s;a9eo,iH;ng,tP;a2e1o0;lGy;an,w3;de,smi4y;a0erb,iOolBuntR;ll,z0;el;ail,e0iLuy;ne;a1ern,i0lo;elds,nn;ith,n0;ny;a0dEmir,ula,ve;rl;a4e3i1j,ol0;ly;ck,x0;ie;an,ja;i0wn;sy;am,h0liff,rystal;a0in,ristian;mbers,ri0;ty;a4e3i2o,r0ud;an0ook;dy;ll;nedict,rg;k0nks;er;l0rt;fredo,ma\",\n  \"Actor|Verb\": \"true¦aCb8c5doctor,engineAfool,g3host,judge,m2nerd,p1recruit,scout,ushAvolunteAwi0;mp,tneA;arent,ilot;an,ime;eek,oof,r0uide;adu8oom;ha1o0;ach,nscript,ok;mpion,uffeur;o2u0;lly,tch0;er;ss;ddi1ffili0rchite1;ate;ct\",\n  \"MaleName\": \"true¦0:H6;1:FZ;2:DS;3:GQ;4:CZ;5:FV;6:GM;7:FP;8:GW;9:ET;A:C2;B:GD;aF8bE1cCQdBMeASfA1g8Yh88i7Uj6Sk6Bl5Mm48n3So3Ip33qu31r26s1Et0Ru0Ov0CwTxSyHzC;aCor0;cChC1karia,nAT;!hDkC;!aF6;!ar7CeF5;aJevgenBSoEuC;en,rFVsCu3FvEF;if,uf;nDs6OusC;ouf,s6N;aCg;s,tC;an,h0;hli,nCrosE1ss09;is,nC;!iBU;avi2ho5;aPeNiDoCyaEL;jcieBJlfgang,odrFutR;lFnC;f8TsC;lCt1;ow;bGey,frEhe4QlC;aE5iCy;am,e,s;ed8iC;d,ed;eAur;i,ndeD2rn2sC;!l9t1;lDyC;l1ne;lDtC;!er;aCHy;aKernDAiFladDoC;jteB0lodymyr;!iC;mFQsDB;cFha0ktBZnceDrgCOvC;a0ek;!nC;t,zo;!e4StBV;lCnC7sily;!entC;in9J;ghE2lCm70nax,ri,sm0;riCyss87;ch,k;aWeRhNiLoGrEuDyC;!l2roEDs1;n6r6E;avD0eCist0oy,um0;ntCRvBKy;bFdAWmCny;!asDmCoharu;aFFie,y;!z;iA6y;mCt4;!my,othy;adEeoDia0SomC;!as;!dor91;!de4;dFrC;enBKrC;anBJeCy;ll,nBI;!dy;dgh,ha,iCnn2req,tsu5V;cDAka;aYcotWeThPiMlobod0oKpenc2tEurDvenAEyCzym1;ed,lvest2;aj,e9V;anFeDuC;!aA;fan17phEQvCwaA;e77ie;!islaCl9;v,w;lom1rBuC;leymaDHta;dDgmu9UlCm1yabonga;as,v8B;!dhart8Yn9;aEeClo75;lCrm0;d1t1;h9Jne,qu1Jun,wn,yne;aDbastiEDk2Yl5Mpp,rgCth,ymoCU;e1Dio;m4n;!tC;!ie,y;eDPlFmEnCq67tosCMul;dCj2UtiA5;e01ro;!iATkeB6mC4u5;!ik,vato9K;aZeUheC8iRoGuDyC;an,ou;b99dDf4peAssC;!elEG;ol00y;an,bLc7MdJel,geIh0lHmGnEry,sDyC;!ce;ar7Ocoe,s;!aCnBU;ld,n;an,eo;a7Ef;l7Jr;e3Eg2n9olfo,riC;go;bBNeDH;cCl9;ar87c86h54kCo;!ey,ie,y;cFeA3gDid,ubByCza;an8Ln06;g85iC;naC6s;ep;ch8Kfa5hHin2je8HlGmFndEoHpha5sDul,wi36yC;an,mo8O;h9Im4;alDSol3O;iD0on;f,ph;ul;e9CinC;cy,t1;aOeLhilJiFrCyoG;aDeC;m,st1;ka85v2O;eDoC;tr;r8GtC;er,ro;!ipCl6H;!p6U;dCLrcy,tC;ar,e9JrC;!o7;b9Udra8So9UscAHtri62ulCv8I;!ie,o7;ctav6Ji2lImHndrBRrGsDtCum6wB;is,to;aDc6k6m0vCwaBE;al79;ma;i,vR;ar,er;aDeksandr,ivC;er,i2;f,v;aNeLguyBiFoCu3O;aDel,j4l0ma0rC;beAm0;h,m;cFels,g5i9EkDlC;es,s;!au,h96l78olaC;!i,y;hCkCol76;ol75;al,d,il,ls1vC;ilAF;hom,tC;e,hC;anCy;!a5i5;aYeViLoGuDyC;l4Nr1;hamDr84staC;fa,p6E;ed,mG;di10e,hamEis4JntDritz,sCussa;es,he;e,y;ad,ed,mC;ad,ed;cGgu5hai,kFlEnDtchC;!e8O;a9Pik;house,o7t1;ae73eC3ha8Iolaj;ah,hDkC;!ey,y;aDeC;al,l;el,l;hDlv3rC;le,ri8Ev4T;di,met;ay0c00gn4hWjd,ks2NlTmadZnSrKsXtDuric7VxC;imilBKwe8B;eHhEi69tCus,y69;!eo,hCia7;ew,i67;eDiC;as,eu,s;us,w;j,o;cHiGkFlEqu8Qsha83tCv3;iCy;!m,n;in,on;el,o7us;a6Yo7us;!elCin,o7us;!l8o;frAEi5Zny,u5;achDcoCik;lm;ai,y;amDdi,e5VmC;oud;adCm6W;ou;aulCi9P;ay;aWeOiMloyd,oJuDyC;le,nd1;cFdEiDkCth2uk;a7e;gi,s,z;ov7Cv6Hw6H;!as,iC;a6Een;g0nn52renDuCvA4we7D;!iS;!zo;am,n4oC;n5r;a9Yevi,la5KnHoFst2thaEvC;eCi;nte;bo;nCpo8V;!a82el,id;!nC;aAy;mEnd1rDsz73urenCwr6K;ce,t;ry,s;ar,beAont;aOeIhalHiFla4onr63rDu5SylC;e,s;istCzysztof;i0oph2;er0ngsl9p,rC;ilA9k,ollos;ed,id;en0iGnDrmCv4Z;it;!dDnCt1;e2Ny;ri4Z;r,th;cp2j4mEna8BrDsp6them,uC;ri;im,l;al,il;a03eXiVoFuC;an,lCst3;en,iC;an,en,o,us;aQeOhKkub4AnIrGsDzC;ef;eDhCi9Wue;!ua;!f,ph;dCge;i,on;!aCny;h,s,th6J;anDnC;!ath6Hie,n72;!nC;!es;!l,sCy;ph;o,qu3;an,mC;!i,m6V;d,ffFns,rCs4;a7JemDmai7QoCry;me,ni1H;i9Dy;!e73rC;ey,y;cKdBkImHrEsDvi2yC;dBs1;on,p2;ed,oDrCv67;e6Qod;d,s61;al,es5Wis1;a,e,oCub;b,v;ob,qu13;aTbNchiMgLke53lija,nuKonut,rIsEtCv0;ai,suC;ki;aDha0i8XmaCsac;el,il;ac,iaC;h,s;a,vinCw3;!g;k,nngu6X;nac1Xor;ka;ai,rahC;im;aReLoIuCyd6;beAgGmFsC;eyDsC;a3e3;in,n;ber5W;h,o;m2raDsse3wC;a5Pie;c49t1K;a0Qct3XiGnDrC;beAman08;dr7VrC;iCy2N;!k,q1R;n0Tt3S;bKlJmza,nIo,rEsDyC;a5KdB;an,s0;lEo67r2IuCv9;hi5Hki,tC;a,o;an,ey;k,s;!im;ib;a08e00iUlenToQrMuCyorgy;iHnFsC;!taC;f,vC;!e,o;n6tC;er,h2;do,lC;herDlC;auCerQ;me;aEegCov2;!g,orC;!io,y;dy,h7C;dfr9nza3XrDttfC;ri6C;an,d47;!n;acoGlEno,oCuseppe;rgiCvan6O;!o,s;be6Ies,lC;es;mo;oFrC;aDha4HrCt;it,y;ld,rd8;ffErgC;!e7iCy;!os;!r9;bElBrCv3;eCla1Nr4Hth,y;th;e,rC;e3YielC;!i4;aXeSiQlOorrest,rCyod2E;aHedFiC;edDtC;s,z;ri18;!d42eri11riC;ck,k;nCs2;cEkC;ie,lC;in,yn;esLisC;!co,z3M;etch2oC;ri0yd;d5lConn;ip;deriFliEng,rC;dinaCg4nan0B;nd8;pe,x;co;bCdi,hd;iEriC;ce,zC;io;an,en,o;benez2dZfrYit0lTmMnJo3rFsteb0th0ugenEvCymBzra;an,eCge4D;ns,re3K;!e;gi,iDnCrol,v3w3;est8ie,st;cCk;!h,k;o0DriCzo;co,qC;ue;aHerGiDmC;aGe3A;lCrh0;!iC;a10o,s;s1y;nu5;beAd1iEliDm2t1viCwood;n,s;ot28s;!as,j5Hot,sC;ha;a3en;!dGg6mFoDua2QwC;a2Pin;arC;do;oZuZ;ie;a04eTiOmitrNoFrag0uEwDylC;an,l0;ay3Hig4D;a3Gdl9nc0st3;minFnDri0ugCvydGy2S;!lF;!a36nCov0;e1Eie,y;go,iDykC;as;cCk;!k;i,y;armuFetDll1mitri7neCon,rk;sh;er,m6riC;ch;id;andLepak,j0lbeAmetri4nIon,rGsEvDwCxt2;ay30ey;en,in;hawn,moC;nd;ek,riC;ck;is,nC;is,y;rt;re;an,le,mKnIrEvC;e,iC;!d;en,iEne0PrCyl;eCin,yl;l45n;n,o,us;!iCny;el,lo;iCon;an,en,on;a0Fe0Ch03iar0lRoJrFuDyrC;il,us;rtC;!is;aEistC;iaCob12;no;ig;dy,lInErC;ey,neliCy;s,us;nEor,rDstaC;nt3;ad;or;by,e,in,l3t1;aHeEiCyde;fCnt,ve;fo0Xt1;menDt4;us;s,t;rFuDyC;!t1;dCs;e,io;enC;ce;aHeGrisC;!toC;phCs;!eC;!r;st2t;d,rCs;b5leC;s,y;cDdrCs6;ic;il;lHmFrC;ey,lDroCy;ll;!o7t1;er1iC;lo;!eb,v3;a09eZiVjorn,laUoSrEuCyr1;ddy,rtKst2;er;aKeFiEuDyC;an,ce,on;ce,no;an,ce;nDtC;!t;dDtC;!on;an,on;dFnC;dDisC;lav;en,on;!foOl9y;bby,gd0rCyd;is;i0Lke;bElDshC;al;al,lL;ek;nIrCshoi;at,nEtC;!raC;m,nd;aDhaCie;rd;rd8;!iDjam3nCs1;ie,y;to;kaMlazs,nHrC;n9rDtC;!holomew;eCy;tt;ey;dCeD;ar,iC;le;ar1Nb1Dd16fon15gust3hm12i0Zja0Yl0Bm07nTputsiSrGsaFugustEveDyCziz;a0kh0;ry;o,us;hi;aMchiKiJjun,mHnEon,tCy0;em,hCie,ur8;ur;aDoC;!ld;ud,v;aCin;an,nd8;!el,ki;baCe;ld;ta;aq;aMdHgel8tCw6;hoFoC;iDnC;!i8y;ne;ny;er7rCy;eDzC;ej;!as,i,j,s,w;!s;s,tolC;iCy;!y;ar,iEmaCos;nu5r;el;ne,r,t;aVbSdBeJfHiGl01onFphonsEt1vC;aPin;on;e,o;so,zo;!sR;!onZrC;ed;c,jaHksFssaHxC;!andC;er,rC;e,os,u;andCei;ar,er,r;ndC;ro;en;eDrecC;ht;rt8;dd3in,n,sC;taC;ir;ni;dDm6;ar;an,en;ad,eC;d,t;in;so;aGi,olErDvC;ik;ian8;f8ph;!o;mCn;!a;dGeFraDuC;!bakr,lfazl;hCm;am;!l;allFel,oulaye,ulC;!lDrahm0;an;ah,o;ah;av,on\",\n  \"Uncountable\": \"true¦0:2E;1:2L;2:33;a2Ub2Lc29d22e1Rf1Ng1Eh16i11j0Yk0Wl0Rm0Hn0Do0Cp03rZsLt9uran2Jv7w3you gu0E;a5his17i4oo3;d,l;ldlife,ne;rm8t1;apor,ernacul29i3;neg28ol1Otae;eDhBiAo8r4un3yranny;a,gst1B;aff2Oea1Ko4ue nor3;th;o08u3;bleshoot2Ose1Tt;night,othpas1Vwn3;foEsfoE;me off,n;er3und1;e,mod2S;a,nnis;aDcCeBhAi9ki8o7p6t4u3weepstak0;g1Unshi2Hshi;ati08e3;am,el;ace2Keci0;ap,cc1meth2C;n,ttl0;lk;eep,ingl0or1C;lf,na1Gri0;ene1Kisso1C;d0Wfe2l4nd,t3;i0Iurn;m1Ut;abi0e4ic3;e,ke15;c3i01laxa11search;ogni10rea10;a9e8hys7luto,o5re3ut2;amble,mis0s3ten20;en1Zs0L;l3rk;i28l0EyH; 16i28;a24tr0F;nt3ti0M;i0s;bstetri24vercrowd1Qxyg09;a5e4owada3utella;ys;ptu1Ows;il poliZtional securi2;aAe8o5u3;m3s1H;ps;n3o1K;ey,o3;gamy;a3cha0Elancholy,rchandi1Htallurgy;sl0t;chine3g1Aj1Hrs,thema1Q; learn1Cry;aught1e6i5ogi4u3;ck,g12;c,s1M;ce,ghtn18nguis1LteratWv1;ath1isVss;ara0EindergartPn3;icke0Aowled0Y;e3upit1;a3llyfiGwel0G;ns;ce,gnor6mp5n3;forma00ter3;net,sta07;atiSort3rov;an18;a7e6isto09o3ung1;ckey,mework,ne4o3rseradi8spitali2use arrest;ky;s2y;adquarteXre;ir,libut,ppiHs3;hi3te;sh;ene8l6o5r3um,ymnas11;a3eZ;niUss;lf,re;ut3yce0F;en; 3ti0W;edit0Hpo3;ol;aNicFlour,o4urnit3;ure;od,rgive3uri1wl;ness;arCcono0LducaBlectr9n7quip8thi0Pvery6x3;ist4per3;ti0B;en0J;body,o08th07;joy3tertain3;ment;ici2o3;ni0H;tiS;nings,th;emi02i6o4raugh3ynas2;ts;pe,wnstai3;rs;abet0ce,s3;honZrepu3;te;aDelciChAivi07l8o3urrency;al,ld w6mmenta5n3ral,ttIuscoB;fusiHt 3;ed;ry;ar;assi01oth0;es;aos,e3;eMwK;us;d,rO;a8i6lood,owlHread5u3;ntGtt1;er;!th;lliarJs3;on;g3ss;ga3;ge;cKdviJeroGirFmBn6ppeal court,r4spi3thleL;rin;ithmet3sen3;ic;i6y3;o4th3;ing;ne;se;en5n3;es2;ty;ds;craft;bi8d3nau7;yna3;mi6;ce;id,ous3;ti3;cs\",\n  \"Infinitive\": \"true¦0:9G;1:9T;2:AD;3:90;4:9Z;5:84;6:AH;7:A9;8:92;9:A0;A:AG;B:AI;C:9V;D:8R;E:8O;F:97;G:6H;H:7D;a94b8Hc7Jd68e4Zf4Mg4Gh4Ai3Qj3Nk3Kl3Bm34nou48o2Vp2Equ2Dr1Es0CtZuTvRwI;aOeNiLors5rI;eJiI;ng,te;ak,st3;d5e8TthI;draw,er;a2d,ep;i2ke,nIrn;d1t;aIie;liADniAry;nJpI;ho8Llift;cov1dJear8Hfound8DlIplug,rav82tie,ve94;eaAo3X;erIo;cut,go,staAFvalA3w2G;aSeQhNoMrIu73;aIe72;ffi3Smp3nsI;aBfo7CpI;i8oD;pp3ugh5;aJiJrIwaD;eat5i2;nk;aImA0;ch,se;ck3ilor,keImp1r8L;! paD;a0Ic0He0Fh0Bi0Al08mugg3n07o05p02qu01tUuLwI;aJeeIim;p,t5;ll7Wy;bNccMffLggeCmmKppJrI;mouFpa6Zvi2;o0re6Y;ari0on;er,i4;e7Numb;li9KmJsiIveD;de,st;er9it;aMe8MiKrI;ang3eIi2;ng27w;fIng;f5le;b,gg1rI;t3ve;a4AiA;a4UeJit,l7DoI;il,of;ak,nd;lIot7Kw;icEve;atGeak,i0O;aIi6;m,y;ft,ng,t;aKi6CoJriIun;nk,v6Q;ot,rt5;ke,rp5tt1;eIll,nd,que8Gv1w;!k,m;aven9ul8W;dd5tis1Iy;a0FeKiJoI;am,t,ut;d,p5;a0Ab08c06d05f01group,hea00iZjoi4lXmWnVpTq3MsOtMup,vI;amp,eJiIo3B;sEve;l,rI;e,t;i8rI;ie2ofE;eLiKpo8PtIurfa4;o24rI;aHiBuctu8;de,gn,st;mb3nt;el,hra0lIreseF;a4e71;d1ew,o07;aHe3Fo2;a7eFiIo6Jy;e2nq41ve;mbur0nf38;r0t;inKleBocus,rJuI;el,rbiA;aBeA;an4e;aBu4;ei2k8Bla43oIyc3;gni39nci3up,v1;oot,uI;ff;ct,d,liIp;se,ze;tt3viA;aAenGit,o7;aWerUinpoiFlumm1LoTrLuI;b47ke,niArIt;poDsuI;aFe;eMoI;cKd,fe4XhibEmo7noJpo0sp1tru6vI;e,i6o5L;un4;la3Nu8;aGclu6dJf1occupy,sup0JvI;a6BeF;etermi4TiB;aGllu7rtr5Ksse4Q;cei2fo4NiAmea7plex,sIva6;eve8iCua6;mp1rItrol,ve;a6It6E;bOccuNmEpMutLverIwe;l07sJtu6Yu0wI;helm;ee,h1F;gr5Cnu2Cpa4;era7i4Ipo0;py,r;ey,seItaH;r2ss;aMe0ViJoIultiply;leCu6Pw;micJnIspla4;ce,g3us;!k;iIke,na9;m,ntaH;aPeLiIo0u3N;ke,ng1quIv5;eIi6S;fy;aKnIss5;d,gI;th5;rn,ve;ng2Gu1N;eep,idnJnI;e4Cow;ap;oHuI;gg3xtaI;po0;gno8mVnIrk;cTdRfQgeChPitia7ju8q1CsNtKun6EvI;a6eIo11;nt,rt,st;erJimi6BoxiPrI;odu4u6;aBn,pr03ru6C;iCpi8tIu8;all,il,ruB;abEibE;eCo3Eu0;iIul9;ca7;i7lu6;b5Xmer0pI;aLer4Uin9ly,oJrI;e3Ais6Bo2;rt,se,veI;riA;le,rt;aLeKiIoiCuD;de,jaInd1;ck;ar,iT;mp1ng,pp5raIve;ng5Mss;ath1et,iMle27oLrI;aJeIow;et;b,pp3ze;!ve5A;gg3ve;aTer45i5RlSorMrJuI;lf4Cndrai0r48;eJiIolic;ght5;e0Qsh5;b3XeLfeEgJsI;a3Dee;eIi2;!t;clo0go,shIwa4Z;ad3F;att1ee,i36;lt1st5;a0OdEl0Mm0FnXquip,rWsVtGvTxI;aRcPeDhOiNpJtIu6;ing0Yol;eKi8lIo0un9;aHoI;it,re;ct,di7l;st,t;a3oDu3B;e30lI;a10u6;lt,mi28;alua7oI;ke,l2;chew,pou0tab19;a0u4U;aYcVdTfSgQhan4joy,lPqOrNsuMtKvI;e0YisI;a9i50;er,i4rI;aHenGuC;e,re;iGol0F;ui8;ar9iC;a9eIra2ulf;nd1;or4;ang1oIu8;r0w;irc3lo0ou0ErJuI;mb1;oaGy4D;b3ct;bKer9pI;hasiIow1;ze;aKody,rI;a4oiI;d1l;lm,rk;ap0eBuI;ci40de;rIt;ma0Rn;a0Re04iKo,rIwind3;aw,ed9oI;wn;agno0e,ff1g,mi2Kne,sLvI;eIul9;rIst;ge,t;aWbVcQlod9mant3pNru3TsMtI;iIoDu37;lJngI;uiA;!l;ol2ua6;eJlIo0ro2;a4ea0;n0r0;a2Xe36lKoIu0S;uIv1;ra9;aIo0;im;a3Kur0;b3rm;af5b01cVduBep5fUliTmQnOpMrLsiCtaGvI;eIol2;lop;ch;a20i2;aDiBloIoD;re,y;oIy;te,un4;eJoI;liA;an;mEv1;a4i0Ao06raud,y;ei2iMla8oKrI;ee,yI;!pt;de,mIup3;missi34po0;de,ma7ph1;aJrief,uI;g,nk;rk;mp5rk5uF;a0Dea0h0Ai09l08oKrIurta1G;a2ea7ipp3uI;mb3;ales4e04habEinci6ll03m00nIrro6;cXdUfQju8no7qu1sLtKvI;eIin4;ne,r9y;aHin2Bribu7;er2iLoli2Epi8tJuI;lt,me;itu7raH;in;d1st;eKiJoIroFu0;rm;de,gu8rm;ss;eJoI;ne;mn,n0;eIlu6ur;al,i2;buCe,men4pI;eIi3ly;l,te;eBi6u6;r4xiC;ean0iT;rcumveFte;eJirp,oI;o0p;riAw;ncIre5t1ulk;el;a02eSi6lQoPrKuI;iXrIy;st,y;aLeaKiJoad5;en;ng;stfeLtX;ke;il,l11mba0WrrMth1;eIow;ed;!coQfrie1LgPhMliLqueaKstJtrIwild1;ay;ow;th;e2tt3;a2eJoI;ld;ad;!in,ui3;me;bysEckfi8ff3tI;he;b15c0Rd0Iff0Ggree,l0Cm09n03ppZrXsQttOuMvJwaE;it;eDoI;id;rt;gIto0X;meF;aIeCraB;ch,in;pi8sJtoI;niA;aKeIi04u8;mb3rt,ss;le;il;re;g0Hi0ou0rI;an9i2;eaKly,oiFrI;ai0o2;nt;r,se;aMi0GnJtI;icipa7;eJoIul;un4y;al;ly0;aJu0;se;lga08ze;iKlI;e9oIu6;t,w;gn;ix,oI;rd;a03jNmiKoJsoI;rb;pt,rn;niIt;st1;er;ouJuC;st;rn;cLhie2knowled9quiItiva7;es4re;ce;ge;eQliOoKrJusI;e,tom;ue;mIst;moJpI;any,liA;da7;ma7;te;pt;andPduBet,i6oKsI;coKol2;ve;liArt,uI;nd;sh;de;ct;on\",\n  \"Person\": \"true¦0:1Q;a29b1Zc1Md1Ee18f15g13h0Ri0Qj0Nk0Jl0Gm09n06o05p00rPsItCusain bolt,v9w4xzibit,y1;anni,oko on2uji,v1;an,es;en,o;a3ednesday adams,i2o1;lfram,o0Q;ll ferrell,z khalifa;lt disn1Qr1;hol,r0G;a2i1oltai06;n dies0Zrginia wo17;lentino rossi,n goG;a4h3i2ripp,u1yra banks;lZpac shakur;ger woods,mba07;eresa may,or;kashi,t1ylor;um,ya1B;a5carlett johanss0h4i3lobodan milosevic,no2ocr1Lpider1uperm0Fwami; m0Em0E;op dogg,w whi1H;egfried,nbad;akespeaTerlock holm1Sia labeouf;ddam hussa16nt1;a cla11ig9;aAe6i5o3u1za;mi,n dmc,paul,sh limbau1;gh;bin hood,d stew16nald1thko;in0Mo;han0Yngo starr,valdo;ese witherspo0i1mbrandt;ll2nh1;old;ey,y;chmaninoff,ffi,iJshid,y roma1H;a4e3i2la16o1uff daddy;cahont0Ie;lar,p19;le,rZ;lm17ris hilt0;leg,prah winfr0Sra;a2e1iles cra1Bostradam0J; yo,l5tt06wmQ;pole0s;a5e4i2o1ubar03;by,lie5net,rriss0N;randa ju1tt romn0M;ly;rl0GssiaB;cklemo1rkov,s0ta hari,ya angelou;re;ady gaga,e1ibera0Pu;bron jam0Xch wale1e;sa;anye west,e3i1obe bryant;d cudi,efer suther1;la0P;ats,sha;a2effers0fk,k rowling,rr tolki1;en;ck the ripp0Mwaharlal nehru,y z;liTnez,ron m7;a7e5i3u1;lk hog5mphrey1sa01;! bog05;l1tl0H;de; m1dwig,nry 4;an;ile selassFlle ber4m3rrison1;! 1;ford;id,mo09;ry;ast0iannis,o1;odwPtye;ergus0lorence nightinga08r1;an1ederic chopN;s,z;ff5m2nya,ustaXzeki1;el;eril lagasse,i1;le zatop1nem;ek;ie;a6e4i2octor w1rake;ho;ck w1ego maradoC;olf;g1mi lovaOnzel washingt0;as;l1nHrth vadR;ai lNt0;a8h5lint0o1thulhu;n1olio;an,fuci1;us;on;aucKop2ristian baMy1;na;in;millo,ptain beefhe4r1;dinal wols2son1;! palmF;ey;art;a8e5hatt,i3oHro1;ck,n1;te;ll g1ng crosby;atB;ck,nazir bhut2rtil,yon1;ce;to;nksy,rack ob1;ama;l 6r3shton kutch2vril lavig8yn ra1;nd;er;chimed2istot1;le;es;capo2paci1;no;ne\",\n  \"Adjective\": \"true¦0:AI;1:BS;2:BI;3:BA;4:A8;5:84;6:AV;7:AN;8:AF;9:7H;A:BQ;B:AY;C:BC;D:BH;E:9Y;aA2b9Ec8Fd7We79f6Ng6Eh61i4Xj4Wk4Tl4Im41n3Po36p2Oquart7Pr2Ds1Dt14uSvOwFye29;aMeKhIiHoF;man5oFrth7G;dADzy;despreB1n w97s86;acked1UoleF;!sa6;ather1PeFll o70ste1D;!k5;nt1Ist6Ate4;aHeGiFola5T;bBUce versa,gi3Lle;ng67rsa5R;ca1gBSluAV;lt0PnLpHrGsFttermoBL;ef9Ku3;b96ge1; Hb32pGsFtiAH;ca6ide d4R;er,i85;f52to da2;a0Fbeco0Hc0Bd04e02f01gu1XheaBGiXkn4OmUnTopp06pRrNsJtHus0wF;aFiel3K;nt0rra0P;app0eXoF;ld,uS;eHi37o5ApGuF;perv06spec39;e1ok9O;en,ttl0;eFu5;cogn06gul2RlGqu84sF;erv0olv0;at0en33;aFrecede0E;id,rallel0;am0otic0;aFet;rri0tF;ch0;nFq26vers3;sur0terFv7U;eFrupt0;st0;air,inish0orese98;mploy0n7Ov97xpF;ect0lain0;eHisFocume01ue;clFput0;os0;cid0rF;!a8Scov9ha8Jlyi8nea8Gprivileg0sMwF;aFei9I;t9y;hGircumcFonvin2U;is0;aFeck0;lleng0rt0;b20ppea85ssuGttend0uthorF;iz0;mi8;i4Ara;aLeIhoHip 25oGrF;anspare1encha1i2;geth9leADp notch,rpB;rny,ugh6H;ena8DmpGrFs6U;r49tia4;eCo8P;leFst4M;nt0;a0Dc09e07h06i04ki03l01mug,nobbi4XoVpRqueami4XtKuFymb94;bHccinAi generis,pFr5;erFre7N;! dup9b,vi70;du0li7Lp6IsFurb7J;eq9Atanda9X;aKeJi16o2QrGubboFy4Q;rn;aightFin5GungS; fFfF;or7V;adfa9Pri6;lwa6Ftu82;arHeGir6NlendBot Fry;on;c3Qe1S;k5se; call0lImb9phistic16rHuFviV;ndFth1B;proof;dBry;dFub6; o2A;e60ipF;pe4shod;ll0n d7R;g2HnF;ceEg6ist9;am3Se9;co1Zem5lfFn6Are7; suf4Xi43;aGholFient3A;ar5;rlFt4A;et;cr0me,tisfac7F;aOeIheumatoBiGoF;bu8Ztt7Gy3;ghtFv3; 1Sf6X;cJdu8PlInown0pro69sGtF;ard0;is47oF;lu2na1;e1Suc45;alcit8Xe1ondi2;bBci3mpa1;aSePicayu7laOoNrGuF;bl7Tnjabi;eKiIoF;b7VfGmi49pFxi2M;er,ort81;a7uD;maFor,sti7va2;!ry;ciDexis0Ima2CpaB;in55puli8G;cBid;ac2Ynt 3IrFti2;ma40tFv7W;!i3Z;i2YrFss7R;anoBtF; 5XiF;al,s5V;bSffQkPld OnMrLth9utKverF;!aIbMdHhGni75seas,t,wF;ei74rou74;a63e7A;ue;ll;do1Ger,si6A;d3Qg2Aotu5Z; bFbFe on o7g3Uli7;oa80;fashion0school;!ay; gua7XbFha5Uli7;eat;eHligGsF;ce7er0So1C;at0;diFse;a1e1;aOeNiMoGuF;anc0de; moEnHrthFt6V;!eFwe7L;a7Krn;chaGdescri7Iprof30sF;top;la1;ght5;arby,cessa4ighbor5wlyw0xt;k0usiaFv3;ti8;aQeNiLoHuF;dIltiF;facet0p6;deHlGnFot,rbBst;ochro4Xth5;dy;rn,st;ddle ag0nF;dbloZi,or;ag9diocEga,naGrFtropolit4Q;e,ry;ci8;cIgenta,inHj0Fkeshift,mmGnFri4Oscu61ver18;da5Dy;ali4Lo4U;!stream;abEho;aOeLiIoFumberi8;ngFuti1R;stan3RtF;erm,i4H;ghtGteraF;l,ry,te;heart0wei5O;ft JgFss9th3;al,eFi0M;nda4;nguBps0te5;apGind5noF;wi8;ut;ad0itte4uniW;ce co0Hgno6Mll0Cm04nHpso 2UrF;a2releF;va1; ZaYcoWdReQfOgrNhibi4Ri05nMoLsHtFvalu5M;aAeF;nDrdepe2K;a7iGolFuboI;ub6ve1;de,gF;nifica1;rdi5N;a2er;own;eriIiLluenVrF;ar0eq5H;pt,rt;eHiGoFul1O;or;e,reA;fiFpe26termi5E;ni2;mpFnsideCrreA;le2;ccuCdeq5Ene,ppr4J;fFsitu,vitro;ro1;mJpF;arHeGl15oFrop9;li2r11;n2LrfeA;ti3;aGeFi18;d4BnD;tuE;egGiF;c0YteC;al,iF;tiF;ma2;ld;aOelNiLoFuma7;a4meInHrrGsFur5;ti6;if4E;e58o3U; ma3GsF;ick;ghfalut2HspF;an49;li00pf33;i4llow0ndGrdFtM; 05coEworki8;sy,y;aLener44iga3Blob3oKrGuF;il1Nng ho;aFea1Fizzl0;cGtF;ef2Vis;ef2U;ld3Aod;iFuc2D;nf2R;aVeSiQlOoJrF;aGeFil5ug3;q43tf2O;gFnt3S;i6ra1;lk13oHrF; keeps,eFge0Vm9tu41;g0Ei2Ds3R;liF;sh;ag4Mowe4uF;e1or45;e4nF;al,i2;d Gmini7rF;ti6ve1;up;bl0lDmIr Fst pac0ux;oGreacF;hi8;ff;ed,ili0R;aXfVlTmQnOqu3rMthere3veryday,xF;aApIquisi2traHuF;be48lF;ta1;!va2L;edRlF;icF;it;eAstF;whi6; Famor0ough,tiE;rou2sui2;erGiF;ne1;ge1;dFe2Aoq34;er5;ficF;ie1;g9sF;t,ygF;oi8;er;aWeMiHoGrFue;ea4owY;ci6mina1ne,r31ti8ubQ;dact2Jfficult,m,sGverF;ge1se;creGePjoi1paCtF;a1inA;et,te; Nadp0WceMfiLgeneCliJmuEpeIreliAsGvoF;id,ut;pFtitu2ul1L;eCoF;nde1;ca2ghF;tf13;a1ni2;as0;facto;i5ngero0I;ar0Ce09h07i06l05oOrIuF;rmudgeon5stoma4teF;sy;ly;aIeHu1EystalF; cleFli7;ar;epy;fFv17z0;ty;erUgTloSmPnGrpoCunterclVveFy;rt;cLdJgr21jIsHtrF;aFi2;dic0Yry;eq1Yta1;oi1ug3;escenFuN;di8;a1QeFiD;it0;atoDmensuCpF;ass1SulF;so4;ni3ss3;e1niza1;ci1J;ockwiD;rcumspeAvil;eFintzy;e4wy;leGrtaF;in;ba2;diac,ef00;a00ePiLliJoGrFuck nak0;and new,isk,on22;gGldface,naF; fi05fi05;us;nd,tF;he;gGpartisFzarE;an;tiF;me;autifOhiNlLnHsFyoN;iWtselF;li8;eGiFt;gn;aFfi03;th;at0oF;v0w;nd;ul;ckwards,rF;e,rT; priori,b13c0Zd0Tf0Ng0Ihe0Hl09mp6nt06pZrTsQttracti0MuLvIwF;aGkF;wa1B;ke,re;ant garGeraF;ge;de;diIsteEtF;heFoimmu7;nt07;re;to4;hGlFtu2;eep;en;bitIchiv3roHtF;ifiFsy;ci3;ga1;ra4;ry;pFt;aHetizi8rF;oprF;ia2;llFre1;ed,i8;ng;iquFsy;at0e;ed;cohKiJkaHl,oGriFterX;ght;ne,of;li7;ne;ke,ve;olF;ic;ad;ain07gressiIi6rF;eeF;ab6;le;ve;fGraB;id;ectGlF;ue1;ioF;na2; JaIeGvF;erD;pt,qF;ua2;ma1;hoc,infinitum;cuCquiGtu3u2;al;esce1;ra2;erSjeAlPoNrKsGuF;nda1;e1olu2trF;aAuD;se;te;eaGuF;pt;st;aFve;rd;aFe;ze;ct;ra1;nt\",\n  \"Pronoun\": \"true¦elle,h3i2me,she,th0us,we,you;e0ou;e,m,y;!l,t;e,im\",\n  \"Preposition\": \"true¦aPbMcLdKexcept,fIinGmid,notwithstandiWoDpXqua,sCt7u4v2w0;/o,hereSith0;! whHin,oW;ersus,i0;a,s a vis;n1p0;!on;like,til;h1ill,oward0;!s;an,ereby,r0;ough0u;!oM;ans,ince,o that,uch G;f1n0ut;!to;!f;! 0to;effect,part;or,r0;om;espite,own,u3;hez,irca;ar1e0oBy;sides,tween;ri7;bo8cross,ft7lo6m4propos,round,s1t0;!op;! 0;a whole,long 0;as;id0ong0;!st;ng;er;ut\",\n  \"SportsTeam\": \"true¦0:18;1:1E;2:1D;3:14;a1Db15c0Sd0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Am01new UoRpKqueens parkJreal salt lake,sBt6utah jazz,vancouver whitecaps,w4yW;ashington 4h10;natio1Mredski2wizar0W;ampa bay 7e6o4;ronto 4ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasD;buccanee0ra0K;a8eattle 6porting kansas0Wt4; louis 4oke0V;c1Drams;marine0s4;eah13ounH;cramento Rn 4;antonio spu0diego 4francisco gJjose earthquak1;char08paB; ran07;a9h6ittsburgh 5ortland t4;imbe0rail blaze0;pirat1steele0;il4oenix su2;adelphia 4li1;eagl1philNunE;dr1;akland 4klahoma city thunder,rlando magic;athle0Lrai4;de0;england 8orleans 7york 4;g5je3knYme3red bul0Xy4;anke1;ian3;pelica2sain3;patrio3revolut4;ion;anchEeAi4ontreal impact;ami 8lwaukee b7nnesota 4;t5vi4;kings;imberwolv1wi2;rewe0uc0J;dolphi2heat,marli2;mphis grizz4ts;li1;a6eic5os angeles 4;clippe0dodFlaB;esterV; galaxy,ke0;ansas city 4nF;chiefs,roya0D; pace0polis col3;astr05dynamo,rocke3texa2;olden state warrio0reen bay pac4;ke0;allas 8e4i04od6;nver 6troit 4;lio2pisto2ti4;ge0;broncYnugge3;cowbo5maver4;icZ;ys;arEelLhAincinnati 8leveland 6ol4;orado r4umbus crew sc;api7ocki1;brow2cavalie0guar4in4;dia2;bengaVre4;ds;arlotte horAicago 4;b5cubs,fire,wh4;iteB;ea0ulQ;diff4olina panthe0; city;altimore Alackburn rove0oston 6rooklyn 4uffalo bilN;ne3;ts;cel5red4; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 4;brav1falco2h4;awA;ns;es;on villa,r4;os;c6di4;amondbac4;ks;ardi4;na4;ls\",\n  \"Unit\": \"true¦a07b04cXdWexVfTgRhePinYjoule0BkMlJmDnan08oCp9quart0Bsq ft,t7volts,w6y2ze3°1µ0;g,s;c,f,n;dVear1o0;ttR; 0s 0;old;att,b;erNon0;!ne02;ascals,e1i0;cXnt00;rcent,tJ;hms,unceY;/s,e4i0m²,²,³;/h,cro2l0;e0liK;!²;grLsR;gCtJ;it1u0;menQx;erPreP;b5elvins,ilo1m0notO;/h,ph,²;!byGgrEmCs;ct0rtzL;aJogrC;allonJb0ig3rB;ps;a0emtEl oz,t4;hrenheit,radG;aby9;eci3m1;aratDe1m0oulombD;²,³;lsius,nti0;gr2lit1m0;et0;er8;am7;b1y0;te5;l,ps;c2tt0;os0;econd1;re0;!s\",\n  \"Noun|Gerund\": \"true¦0:3O;1:3M;2:3N;3:3D;4:32;5:2V;6:3E;7:3K;8:36;9:3J;A:3B;a3Pb37c2Jd27e23f1Vg1Sh1Mi1Ij1Gk1Dl18m13n11o0Wp0Pques0Sr0EsTtNunderMvKwFyDzB;eroi0oB;ni0o3P;aw2eB;ar2l3;aEed4hispe5i5oCrB;ap8est3i1;n0ErB;ki0r31;i1r2s9tc9;isualizi0oB;lunt1Vti0;stan4ta6;aFeDhin6iCraBy8;c6di0i2vel1M;mi0p8;aBs1;c9si0;l6n2s1;aUcReQhOiMkatKl2Wmo6nowJpeItFuCwB;ea5im37;b35f0FrB;fi0vB;e2Mi2J;aAoryt1KrCuB;d2KfS;etc9ugg3;l3n4;bCi0;ebBi0;oar4;gnBnAt1;a3i0;ip8oB;p8rte2u1;a1r27t1;hCo5reBulp1;a2Qe2;edu3oo3;i3yi0;aKeEi4oCuB;li0n2;oBwi0;fi0;aFcEhear7laxi0nDpor1sB;pon4tructB;r2Iu5;de5;or4yc3;di0so2;p8ti0;aFeacek20laEoCrBublis9;a1Teten4in1oces7;iso2siB;tio2;n2yi0;ckaAin1rB;ki0t1O;fEpeDrganiCvB;erco24ula1;si0zi0;ni0ra1;fe5;avi0QeBur7;gotia1twor6;aDeCi2oB;de3nito5;a2dita1e1ssaA;int0XnBrke1;ifUufactu5;aEeaDiBodAyi0;cen7f1mi1stB;e2i0;r2si0;n4ug9;iCnB;ea4it1;c6l3;ogAuB;dAgg3stif12;ci0llust0VmDnBro2;nova1sp0NterBven1;ac1vie02;agi2plo4;aDea1iCoBun1;l4w3;ki0ri0;nd3rB;roWvB;es1;aCene0Lli4rBui4;ee1ie0N;rde2the5;aHeGiDlCorBros1un4;e0Pmat1;ir1oo4;gh1lCnBs9;anZdi0;i0li0;e3nX;r0Zscina1;a1du01nCxB;erci7plo5;chan1di0ginB;ee5;aLeHiGoub1rCum8wB;el3;aDeCiB;bb3n6vi0;a0Qs7;wi0;rTscoDvi0;ba1coZlBvelo8;eCiB;ve5;ga1;nGti0;aVelebUhSlPoDrBur3yc3;aBos7yi0;f1w3;aLdi0lJmFnBo6pi0ve5;dDsCvinB;ci0;trBul1;uc1;muniDpB;lBo7;ai2;ca1;lBo5;ec1;c9ti0;ap8eaCimToBubT;ni0t9;ni0ri0;aBee5;n1t1;ra1;m8rCs1te5;ri0;vi0;aPeNitMlLoGrDuB;dge1il4llBr8;yi0;an4eat9oadB;cas1;di0;a1mEokB;i0kB;ee8;pi0;bi0;es7oa1;c9i0;gin2lonAt1;gi0;bysit1c6ki0tt3;li0;ki0;bando2cGdverti7gi0pproac9rgDssuCtB;trac1;mi0;ui0;hi0;si0;coun1ti0;ti0;ni0;ng\",\n  \"PhrasalVerb\": \"true¦0:92;1:96;2:8H;3:8V;4:8A;5:83;6:85;7:98;8:90;9:8G;A:8X;B:8R;C:8U;D:8S;E:70;F:97;G:8Y;H:81;I:7H;J:79;a9Fb7Uc6Rd6Le6Jf5Ig50h4Biron0j47k40l3Em31n2Yo2Wp2Cquiet Hr1Xs0KtZuXvacuu6QwNyammerBzK;ero Dip LonK;e0k0;by,ov9up;aQeMhLiKor0Mrit19;mp0n3Fpe0r5s5;ackAeel Di0S;aLiKn33;gh 3Wrd0;n Dr K;do1in,oJ;it 79k5lk Lrm 69sh Kt83v60;aw3do1o7up;aw3in,oC;rgeBsK;e 2herE;a00eYhViRoQrMuKypP;ckErn K;do1in,oJup;aLiKot0y 30;ckl7Zp F;ck HdK;e 5Y;n7Wp 3Es5K;ck MdLe Kghten 6me0p o0Rre0;aw3ba4do1in,up;e Iy 2;by,oG;ink Lrow K;aw3ba4in,up;ba4ov9up;aKe 77ll62;m 2r 5M;ckBke Llk K;ov9shit,u47;aKba4do1in,leave,o4Dup;ba4ft9pa69w3;a0Vc0Te0Mh0Ii0Fl09m08n07o06p01quar5GtQuOwK;earMiK;ngLtch K;aw3ba4o8K; by;cKi6Bm 2ss0;k 64;aReQiPoNrKud35;aigh2Det75iK;ke 7Sng K;al6Yup;p Krm2F;by,in,oG;c3Ln3Lr 2tc4O;p F;c3Jmp0nd LrKveAy 2O;e Ht 2L;ba4do1up;ar3GeNiMlLrKurB;ead0ingBuc5;a49it 6H;c5ll o3Cn 2;ak Fe1Xll0;a3Bber 2rt0und like;ap 5Vow Duggl5;ash 6Noke0;eep NiKow 6;cLp K;o6Dup;e 68;in,oK;ff,v9;de19gn 4NnKt 6Gz5;gKkE; al6Ale0;aMoKu5W;ot Kut0w 7M;aw3ba4f48oC;c2WdeEk6EveA;e Pll1Nnd Orv5tK; Ktl5J;do1foLin,o7upK;!on;ot,r5Z;aw3ba4do1in,o33up;oCto;al66out0rK;ap65ew 6J;ilAv5;aXeUiSoOuK;b 5Yle0n Kstl5;aLba4do1inKo2Ith4Nu5P;!to;c2Xr8w3;ll Mot LpeAuK;g3Ind17;a2Wf3Po7;ar8in,o7up;ng 68p oKs5;ff,p18;aKelAinEnt0;c6Hd K;o4Dup;c27t0;aZeYiWlToQrOsyc35uK;ll Mn5Kt K;aKba4do1in,oJto47up;pa4Dw3;a3Jdo1in,o21to45up;attleBess KiNop 2;ah2Fon;iLp Kr4Zu1Gwer 6N;do1in,o6Nup;nt0;aLuK;gEmp 6;ce u20y 6D;ck Kg0le 4An 6p5B;oJup;el 5NncilE;c53ir 39n0ss MtLy K;ba4oG; Hc2R;aw3ba4in,oJ;pKw4Y;e4Xt D;aLerd0oK;dAt53;il Hrrow H;aTeQiPoLuK;ddl5ll I;c1FnkeyMp 6uthAve K;aKdo1in,o4Lup;l4Nw3; wi4K;ss0x 2;asur5e3SlLss K;a21up;t 6;ke Ln 6rKs2Ax0;k 6ryA;do,fun,oCsure,up;a02eViQoLuK;ck0st I;aNc4Fg MoKse0;k Kse4D;aft9ba4do1forw37in56o0Zu46;in,oJ;d 6;e NghtMnLsKve 00;ten F;e 2k 2; 2e46;ar8do1in;aMt LvelK; oC;do1go,in,o7up;nEve K;in,oK;pKut;en;c5p 2sh LtchBughAy K;do1o59;in4Po7;eMick Lnock K;do1oCup;oCup;eLy K;in,up;l Ip K;aw3ba4do1f04in,oJto,up;aMoLuK;ic5mpE;ke3St H;c43zz 2;a01eWiToPuK;nLrrKsh 6;y 2;keLt K;ar8do1;r H;lKneErse3K;d Ke 2;ba4dKfast,o0Cup;ear,o1;de Lt K;ba4on,up;aw3o7;aKlp0;d Ml Ir Kt 2;fKof;rom;f11in,o03uW;cPm 2nLsh0ve Kz2P;at,it,to;d Lg KkerP;do1in,o2Tup;do1in,oK;ut,v9;k 2;aZeTive Rloss IoMrLunK; f0S;ab hold,in43ow 2U; Kof 2I;aMb1Mit,oLr8th1IuK;nd9;ff,n,v9;bo7ft9hQw3;aw3bKdo1in,oJrise,up,w3;a4ir2H;ar 6ek0t K;aLb1Fdo1in,oKr8up;ff,n,ut,v9;cLhKl2Fr8t,w3;ead;ross;d aKng 2;bo7;a0Ee07iYlUoQrMuK;ck Ke2N;ar8up;eLighten KownBy 2;aw3oG;eKshe27; 2z5;g 2lMol Krk I;aKwi20;bo7r8;d 6low 2;aLeKip0;sh0;g 6ke0mKrKtten H;e F;gRlPnNrLsKzzle0;h F;e Km 2;aw3ba4up;d0isK;h 2;e Kl 1T;aw3fPin,o7;ht ba4ure0;ePnLsK;s 2;cMd K;fKoG;or;e D;d04l 2;cNll Krm0t1G;aLbKdo1in,o09sho0Eth08victim;a4ehi2O;pa0C;e K;do1oGup;at Kdge0nd 12y5;in,o7up;aOi1HoNrK;aLess 6op KuN;aw3b03in,oC;gBwB; Ile0ubl1B;m 2;a0Ah05l02oOrLut K;aw3ba4do1oCup;ackBeep LoKy0;ss Dwd0;by,do1in,o0Uup;me NoLuntK; o2A;k 6l K;do1oG;aRbQforOin,oNtKu0O;hLoKrue;geth9;rough;ff,ut,v9;th,wK;ard;a4y;paKr8w3;rt;eaLose K;in,oCup;n 6r F;aNeLiK;ll0pE;ck Der Kw F;on,up;t 2;lRncel0rOsMtch LveE; in;o1Nup;h Dt K;doubt,oG;ry LvK;e 08;aw3oJ;l Km H;aLba4do1oJup;ff,n,ut;r8w3;a0Ve0MiteAl0Fo04rQuK;bblNckl05il0Dlk 6ndl05rLsKtMy FzzA;t 00;n 0HsK;t D;e I;ov9;anWeaUiLush K;oGup;ghQng K;aNba4do1forMin,oLuK;nd9p;n,ut;th;bo7lKr8w3;ong;teK;n 2;k K;do1in,o7up;ch0;arTg 6iRn5oPrNssMttlLunce Kx D;aw3ba4;e 6; ar8;e H;do1;k Dt 2;e 2;l 6;do1up;d 2;aPeed0oKurt0;cMw K;aw3ba4do1o7up;ck;k K;in,oC;ck0nk0stA; oQaNef 2lt0nd K;do1ov9up;er;up;r Lt K;do1in,oCup;do1o7;ff,nK;to;ck Pil0nMrgLsK;h D;ainBe D;g DkB; on;in,o7;aw3do1in,oCup;ff,ut;ay;ct FdQir0sk MuctionA; oG;ff;ar8o7;ouK;nd; o7;d K;do1oKup;ff,n;wn;o7up;ut\",\n  \"ProperNoun\": \"true¦aIbDc8dalhousHe7f5gosford,h4iron maiden,kirby,landsdowne,m2nis,r1s0wembF;herwood,paldiB;iel,othwe1;cgi0ercedes,issy;ll;intBudsB;airview,lorence,ra0;mpt9nco;lmo,uro;a1h0;arlt6es5risti;rl0talina;et4i0;ng;arb3e0;et1nt0rke0;ley;on;ie;bid,jax\",\n  \"Person|Place\": \"true¦a8d6h4jordan,k3orlando,s1vi0;ctor9rgin9;a0ydney;lvador,mara,ntia4;ent,obe;amil0ous0;ton;arw2ie0;go;lexandr1ust0;in;ia\",\n  \"LastName\": \"true¦0:BR;1:BF;2:B5;3:BH;4:AX;5:9Y;6:B6;7:BK;8:B0;9:AV;A:AL;B:8Q;C:8G;D:7K;E:BM;F:AH;aBDb9Zc8Wd88e81f7Kg6Wh64i60j5Lk4Vl4Dm39n2Wo2Op25quispe,r1Ls0Pt0Ev03wTxSyKzG;aIhGimmerm6A;aGou,u;ng,o;khar5ytsE;aKeun9BiHoGun;koya32shiBU;!lG;diGmaz;rim,z;maGng;da,g52mo83sGzaC;aChiBV;iao,u;aLeJiHoGright,u;jcA5lff,ng;lGmm0nkl0sniewsC;kiB1liams33s3;bGiss,lt0;b,er,st0;a6Vgn0lHtG;anabe,s3;k0sh,tG;e2Non;aLeKiHoGukD;gt,lk5roby5;dHllalGnogr3Kr1Css0val3S;ba,ob1W;al,ov4;lasHsel8W;lJn dIrgBEsHzG;qu7;ilyEqu7siljE;en b6Aijk,yk;enzueAIverde;aPeix1VhKi2j8ka43oJrIsui,uG;om5UrG;c2n0un1;an,emblA7ynisC;dorAMlst3Km4rrAth;atch0i8UoG;mHrG;are84laci79;ps3sG;en,on;hirDkah9Mnaka,te,varA;a06ch01eYhUiRmOoMtIuHvGzabo;en9Jobod3N;ar7bot4lliv2zuC;aIeHoG;i7Bj4AyanAB;ele,in2FpheBvens25;l8rm0;kol5lovy5re7Tsa,to,uG;ng,sa;iGy72;rn5tG;!h;l71mHnGrbu;at9cla9Egh;moBo7M;aIeGimizu;hu,vchG;en8Luk;la,r1G;gu9infe5YmGoh,pulveA7rra5P;jGyG;on5;evi6iltz,miHneid0roed0uGwarz;be3Elz;dHtG;!t,z;!t;ar4Th8ito,ka4OlJnGr4saCto,unde19v4;ch7dHtGz;a5Le,os;b53e16;as,ihDm4Po0Y;aVeSiPoJuHyG;a6oo,u;bio,iz,sG;so,u;bKc8Fdrigue67ge10j9YmJosevelt,sItHux,wG;e,li6;a9Ch;enb4Usi;a54e4L;erts15i93;bei4JcHes,vGzzo;as,e9;ci,hards12;ag2es,iHut0yG;es,nol5N;s,t0;dImHnGsmu97v6C;tan1;ir7os;ic,u;aUeOhMiJoHrGut8;asad,if6Zochazk27;lishc2GpGrti72u10we76;e3Aov51;cHe45nG;as,to;as70hl0;aGillips;k,m,n6I;a3Hde3Wete0Bna,rJtG;ersHrovGters54;!a,ic;!en,on;eGic,kiBss3;i9ra,tz,z;h86k,padopoulIrk0tHvG;ic,l4N;el,te39;os;bMconn2Ag2TlJnei6PrHsbor6XweBzG;dem7Rturk;ella4DtGwe6N;ega,iz;iGof7Hs8I;vGyn1R;ei9;aSri1;aPeNiJoGune50ym2;rHvGwak;ak4Qik5otn66;odahl,r4S;cholsZeHkolGls4Jx3;ic,ov84;ls1miG;!n1;ils3mG;co4Xec;gy,kaGray2sh,var38;jiGmu9shiG;ma;a07c04eZiWoMuHyeG;rs;lJnIrGssoli6S;atGp03r7C;i,ov4;oz,te58;d0l0;h2lOnNo0RrHsGza1A;er,s;aKeJiIoz5risHtG;e56on;!on;!n7K;au,i9no,t5J;!lA;r1Btgome59;i3El0;cracFhhail5kkeHlG;l0os64;ls1;hmeJiIj30lHn3Krci0ssiGyer2N;!er;n0Po;er,j0;dDti;cartHlG;aughl8e2;hy;dQe7Egnu68i0jer3TkPmNnMrItHyG;er,r;ei,ic,su21thews;iHkDquAroqu8tinG;ez,s;a5Xc,nG;!o;ci5Vn;a5UmG;ad5;ar5e6Kin1;rig77s1;aVeOiLoJuHyG;!nch;k4nGo;d,gu;mbarGpe3Fvr4we;di;!nGu,yana2B;coln,dG;b21holm,strom;bedEfeKhIitn0kaHn8rGw35;oy;!j;m11tG;in1on1;bvGvG;re;iGmmy,ng,rs2Qu,voie,ws3;ne,t1F;aZeYh2iWlUnez50oNrJuHvar2woG;k,n;cerGmar68znets5;a,o34;aHem0isGyeziu;h23t3O;m0sni4Fus3KvG;ch4O;bay57ch,rh0Usk16vaIwalGzl5;czGsC;yk;cIlG;!cGen4K;huk;!ev4ic,s;e8uiveG;rt;eff0kGl4mu9nnun1;ucF;ll0nnedy;hn,llKminsCne,pIrHstra3Qto,ur,yGzl5;a,s0;j0Rls22;l2oG;or;oe;aPenOha6im14oHuG;ng,r4;e32hInHrge32u6vG;anD;es,ss3;anHnsG;en,on,t3;nesGs1R;en,s1;kiBnings,s1;cJkob4EnGrv0E;kDsG;en,sG;en0Ion;ks3obs2A;brahimDglesi5Nke5Fl0Qno07oneIshikHto,vanoG;u,v54;awa;scu;aVeOiNjaltal8oIrist50uG;!aGb0ghAynh;m2ng;a6dz4fIjgaa3Hk,lHpUrGwe,x3X;ak1Gvat;mAt;er,fm3WmG;ann;ggiBtchcock;iJmingw4BnHrGss;nand7re9;deGriks1;rs3;kkiHnG;on1;la,n1;dz4g1lvoQmOns0ZqNrMsJuIwHyG;asFes;kiB;g1ng;anHhiG;mo14;i,ov0J;di6p0r10t;ue;alaG;in1;rs1;aVeorgUheorghe,iSjonRoLrJuGw3;errGnnar3Co,staf3Ctierr7zm2;a,eG;ro;ayli6ee2Lg4iffithGub0;!s;lIme0UnHodGrbachE;e,m2;calvAzale0S;dGubE;bGs0E;erg;aj,i;bs3l,mGordaO;en7;iev3U;gnMlJmaIndFo,rGsFuthi0;cGdn0za;ia;ge;eaHlG;agh0i,o;no;e,on;aVerQiLjeldsted,lKoIrHuG;chs,entAji41ll0;eem2iedm2;ntaGrt8urni0wl0;na;emi6orA;lipIsHtzgeraG;ld;ch0h0;ovG;!ic;hatDnanIrG;arGei9;a,i;deY;ov4;b0rre1D;dKinsJriksIsGvaB;cob3GpGtra3D;inoza,osiQ;en,s3;te8;er,is3warG;ds;aXePiNjurhuMoKrisco15uHvorakG;!oT;arte,boHmitru,nn,rGt3C;and,ic;is;g2he0Omingu7nErd1ItG;to;us;aGcki2Hmitr2Ossanayake,x3;s,z; JbnaIlHmirGrvisFvi,w2;!ov4;gado,ic;th;bo0groot,jo6lHsilGvriA;va;a cruz,e3uG;ca;hl,mcevsCnIt2WviG;dGes,s;ov,s3;ielsGku22;!en;ki;a0Be06hRiobQlarkPoIrGunningh1H;awfo0RivGuz;elli;h1lKntJoIrGs2Nx;byn,reG;a,ia;ke,p0;i,rer2K;em2liB;ns;!e;anu;aOeMiu,oIristGu6we;eGiaG;ns1;i,ng,p9uHwGy;!dH;dGng;huJ;!n,onGu6;!g;kJnIpm2ttHudhGv7;ry;erjee,o14;!d,g;ma,raboG;rty;bJl0Cng4rG;eghetHnG;a,y;ti;an,ota1C;cerAlder3mpbeLrIstGvadi0B;iGro;llo;doHl0Er,t0uGvalho;so;so,zo;ll;a0Fe01hYiXlUoNrKuIyG;rLtyG;qi;chan2rG;ke,ns;ank5iem,oGyant;oks,wG;ne;gdan5nIruya,su,uchaHyKziG;c,n5;rd;darGik;enG;ko;ov;aGond15;nco,zG;ev4;ancFshw16;a08oGuiy2;umGwmG;ik;ckRethov1gu,ktPnNrG;gJisInG;ascoGds1;ni;ha;er,mG;anG;!n;gtGit7nP;ss3;asF;hi;er,hG;am;b4ch,ez,hRiley,kk0ldw8nMrIshHtAu0;es;ir;bInHtlGua;ett;es,i0;ieYosa;dGik;a9yoG;padhyG;ay;ra;k,ng;ic;bb0Acos09d07g04kht05lZnPrLsl2tJyG;aHd8;in;la;chis3kiG;ns3;aImstro6sl2;an;ng;ujo,ya;dJgelHsaG;ri;ovG;!a;ersJov,reG;aGjEws;ss1;en;en,on,s3;on;eksejEiyEmeiIvG;ar7es;ez;da;ev;arwHuilG;ar;al;ams,l0;er;ta;as\",\n  \"Ordinal\": \"true¦eBf7nin5s3t0zeroE;enDhir1we0;lfCn7;d,t3;e0ixt8;cond,vent7;et0th;e6ie7;i2o0;r0urt3;tie4;ft1rst;ight0lev1;e0h,ie1;en0;th\",\n  \"Cardinal\": \"true¦bEeBf5mEnine7one,s4t0zero;en,h2rDw0;e0o;lve,n5;irt6ousands,ree;even2ix2;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illions\",\n  \"Multiple\": \"true¦b3hundred,m3qu2se1t0;housand,r2;pt1xt1;adr0int0;illion\",\n  \"City\": \"true¦0:74;1:61;2:6G;3:6J;4:5S;a68b53c4Id48e44f3Wg3Hh39i31j2Wk2Fl23m1Mn1Co19p0Wq0Ur0Os05tRuQvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3H;greb,nzib5G;ang2e5okoha3Sunfu;katerin3Hrev0;a5n0Q;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1L;hi5Zkl3A;l63xford;aw;a8e6i5ladivost5Molgogr6L;en3lni6S;ni22r5;o3saill4N;lenc4Wncouv3Sr3ughn;lan bat1Crumqi,trecht;aFbilisi,eEheDiBo9r7u5;l21n63r5;in,ku;i5ondh62;es51poli;kyo,m2Zron1Pulo5;n,uS;an5jua3l2Tmisoa6Bra3;j4Tshui; hag62ssaloni2H;gucigal26hr0l av1U;briz,i6llinn,mpe56ng5rtu,shk2R;i3Esh0;an,chu1n0p2Eyu0;aEeDh8kopje,owe1Gt7u5;ra5zh4X;ba0Ht;aten is55ockholm,rasbou67uttga2V;an8e6i5;jiazhua1llo1m5Xy0;f50n5;ya1zh4H;gh3Kt4Q;att45o1Vv44;cramen16int ClBn5o paulo,ppo3Rrajevo; 7aa,t5;a 5o domin3E;a3fe,m1M;antonio,die3Cfrancisco,j5ped3Nsalvad0J;o5u0;se;em,t lake ci5Fz25;lou58peters24;a9e8i6o5;me,t59;ga,o5yadh;! de janei3F;cife,ims,nn3Jykjavik;b4Sip4lei2Inc2Pwalpindi;ingdao,u5;ez2i0Q;aFeEhDiCo9r7u6yong5;ya1;eb59ya1;a5etor3M;g52to;rt5zn0; 5la4Co;au prin0Melizabe24sa03;ls3Prae5Atts26;iladelph3Gnom pe1Aoenix;ki1tah tik3E;dua,lerYnaji,r4Ot5;na,r32;ak44des0Km1Mr6s5ttawa;a3Vlo;an,d06;a7ew5ing2Fovosibir1Jyc; 5cast36;del24orlea44taip14;g8iro4Wn5pl2Wshv33v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0W;aEeCi9o6u5;mb2Ani26sc3Y;gadishu,nt6s5;c13ul;evideo,pelli1Rre2Z;ami,l6n14s5;kolc,sissauga;an,waukee;cca,d5lbour2Mmph41ndo1Cssi3;an,ell2Xi3;cau,drAkass2Sl9n8r5shh4A;aca6ib5rakesh,se2L;or;i1Sy;a4EchFdal0Zi47;mo;id;aDeAi8o6u5vSy2;anMckn0Odhia3;n5s angel26;d2g bea1N;brev2Be3Lma5nz,sb2verpo28;!ss27; ma39i5;c5pzig;est16; p6g5ho2Wn0Cusan24;os;az,la33;aHharFiClaipeBo9rak0Du7y5;iv,o5;to;ala lump4n5;mi1sh0;hi0Hlka2Xpavog4si5wlo2;ce;da;ev,n5rkuk;gst2sha5;sa;k5toum;iv;bHdu3llakuric0Qmpa3Fn6ohsiu1ra5un1Iwaguc0Q;c0Pj;d5o,p4;ah1Ty;a7e6i5ohannesV;l1Vn0;dd36rusalem;ip4k5;ar2H;bad0mph1OnArkutUs7taXz5;mir,tapala5;pa;fah0l6tanb5;ul;am2Zi2H;che2d5;ianap2Mo20;aAe7o5yder2W; chi mi5ms,nolulu;nh;f6lsin5rakli2;ki;ei;ifa,lifax,mCn5rb1Dva3;g8nov01oi;aFdanEenDhCiPlasgBo9raz,u5;a5jr23;dal6ng5yaquil;zh1J;aja2Oupe;ld coa1Bthen5;bu2S;ow;ent;e0Uoa;sk;lw7n5za;dhi5gt1E;nag0U;ay;aisal29es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Pl paso;in5mont2;bur5;gh;aBe8ha0Xisp4o7resd0Lu5;b5esseldorf,nkirk,rb0shanbe;ai,l0I;ha,nggu0rtmu13;hradSl6nv5troit;er;hi;donghIe6k09l5masc1Zr es sala1KugavpiY;i0lU;gu,je2;aJebu,hAleve0Vo5raio02uriti1Q;lo7n6penhag0Ar5;do1Ok;akKst0V;gUm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;ng5ttogr14;ch8sha,zh07;gliari,i9lga8mayenJn6pe town,r5tanO;acCdiff;ber1Ac5;un;ry;ro;aWeNhKirmingh0WoJr9u5;chareTdapeTenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil8tisla7zzav5;il5;le;va;ia;goZst2;op6ubaneshw5;ar;al;iCl9ng8r5;g6l5n;in;en;aluru,hazi;fa6grade,o horizon5;te;st;ji1rut;ghd0BkFn9ot8r7s6yan n4;ur;el,r07;celo3i,ranquil09;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a05b02cc01ddis aba00gartaZhmedXizawl,lSmPnHqa00rEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a8c5kaOtwerp;hora6o3;na;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 7buquerq6eppo,giers,ma5;ty;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg\",\n  \"Region\": \"true¦0:2O;1:2L;2:2U;3:2F;a2Sb2Fc21d1Wes1Vf1Tg1Oh1Ki1Fj1Bk16l13m0Sn09o07pYqVrSsJtEuBverAw6y4zacatec2W;akut0o0Fu4;cat1k09;a5est 4isconsin,yomi1O;bengal,virgin0;rwick3shington4;! dc;acruz,mont;dmurt0t4;ah,tar4; 2Pa12;a6e5laxca1Vripu21u4;scaEva;langa2nnessee,x2J;bas10m4smQtar29;aulip2Hil nadu;a9elang07i7o5taf16u4ylh1J;ff02rr09s1E;me1Gno1Uuth 4;cZdY;ber0c4kkim,naloa;hu1ily;n5rawak,skatchew1xo4;ny; luis potosi,ta catari2;a4hodeA;j4ngp0C;asth1shahi;ingh29u4;e4intana roo;bec,en6retaro;aAe6rince edward4unjab; i4;sl0G;i,n5r4;ak,nambu0F;a0Rnsylv4;an0;ha0Pra4;!na;axa0Zdisha,h4klaho21ntar4reg7ss0Dx0I;io;aLeEo6u4;evo le4nav0X;on;r4tt18va scot0;f9mandy,th4; 4ampton3;c6d5yo4;rk3;ako1O;aroli2;olk;bras1Nva0Dw4; 6foundland4;! and labrad4;or;brunswick,hamp3jers5mexiTyork4;! state;ey;galPyarit;aAeghala0Mi6o4;nta2r4;dov0elos;ch6dlanDn5ss4zor11;issippi,ouri;as geraPneso18;ig1oac1;dhy12harasht0Gine,lac07ni5r4ssachusetts;anhao,i el,ylG;p4toba;ur;anca3e4incoln3ouisI;e4iR;ds;a6e5h4omi;aka06ul2;dah,lant1ntucky,ra01;bardino,lmyk0ns0Qr4;achay,el0nata0X;alis6har4iangxi;kh4;and;co;daho,llino7n4owa;d5gush4;et0;ia2;is;a6ert5i4un1;dalFm0D;ford3;mp3rya2waii;ansu,eorg0lou7oa,u4;an4izhou,jarat;ajuato,gdo4;ng;cester3;lori4uji1;da;sex;ageUe7o5uran4;go;rs4;et;lawaMrby3;aFeaEh9o4rim08umbr0;ahui7l6nnectic5rsi4ventry;ca;ut;i03orado;la;e5hattisgarh,i4uvash0;apRhuahua;chn5rke4;ss0;ya;ra;lGm4;bridge3peche;a9ihar,r8u4;ck4ryat0;ingham3;shi4;re;emen,itish columb0;h0ja cal8lk7s4v7;hkorto4que;st1;an;ar0;iforn0;ia;dygHguascalientes,lBndhr9r5ss4;am;izo2kans5un4;achal 7;as;na;a 4;pradesh;a6ber5t4;ai;ta;ba5s4;ka;ma;ea\",\n  \"Place\": \"true¦0:4T;1:4V;2:44;3:4B;4:3I;a4Eb3Gc2Td2Ge26f25g1Vh1Ji1Fk1Cl14m0Vn0No0Jp08r04sTtNuLvJw7y5;a5o0Syz;kut1Bngtze;aDeChitBi9o5upatki,ycom2P;ki26o5;d5l1B;b3Ps5;i4to3Y;c0SllowbroCn5;c2Qgh2;by,chur1P;ed0ntw3Gs22;ke6r3St5;erf1f1; is0Gf3V;auxha3Mirgin is0Jost5;ok;laanbaatar,pto5xb3E;n,wn;a9eotihuac43h7ive49o6ru2Nsarskoe selo,u5;l2Dzigo47;nto,rquay,tt2J;am3e 5orn3E;bronx,hamptons;hiti,j mah0Iu1N;aEcotts bluff,eCfo,herbroQoApring9t7u5yd2F;dbu1Wn5;der03set3B;aff1ock2Nr5;atf1oud;hi37w24;ho,uth5; 1Iam1Zwo3E;a5i2O;f2Tt0;int lawrence riv3Pkhal2D;ayleigh,ed7i5oc1Z;chmo1Eo gran4ver5;be1Dfr09si4; s39cliffe,hi2Y;aCe9h8i5ompeii,utn2;c6ne5tcai2T; 2Pc0G;keri13t0;l,x;k,lh2mbr6n5r2J;n1Hzance;oke;cif38pahanaumokuak30r5;k5then0;si4w1K;ak7r6x5;f1l2X;ange county,d,f1inoco;mTw1G;e8i1Uo5;r5tt2N;th5wi0E; 0Sam19;uschwanste1Pw5; eng6a5h2market,po36;rk;la0P;a8co,e6i5uc;dt1Yll0Z;adow5ko0H;lands;chu picchu,gad2Ridsto1Ql8n7ple6r5;kh2; g1Cw11;hatt2Osf2B;ibu,t0ve1Z;a8e7gw,hr,in5owlOynd02;coln memori5dl2C;al;asi4w3;kefr7mbe1On5s,x;ca2Ig5si05;f1l27t0;ont;azan kreml14e6itchen2Gosrae,rasnoyar5ul;sk;ns0Hs1U;ax,cn,lf1n6ps5st;wiN;d5glew0Lverness;ian27ochina;aDeBi6kg,nd,ov5unti2H;d,enweep;gh6llc5;reL;bu03l5;and5;!s;r5yw0C;ef1tf1;libu24mp6r5stings;f1lem,row;stead,t0;aDodavari,r5uelph;avenAe5imsS;at 8en5; 6f1Fwi5;ch;acr3vall1H;brita0Flak3;hur5;st;ng3y villa0W;airhavHco,ra;aAgli9nf17ppi8u7ver6x5;et1Lf1;glad3t0;rope,st0;ng;nt0;rls1Ls5;t 5;e5si4;nd;aCe9fw,ig8o7ryd6u5xb;mfri3nstab00rh2tt0;en;nca18rcKv19wnt0B;by;n6r5vonpo1D;ry;!h2;nu8r5;l6t5;f1moor;ingt0;be;aLdg,eIgk,hClBo5royd0;l6m5rnwa0B;pt0;c7lingw6osse5;um;ood;he0S;earwat0St;a8el6i5uuk;chen itza,mney ro07natSricahua;m0Zt5;enh2;mor5rlottetPth2;ro;dar 5ntervilA;breaks,faZg5;rove;ld9m8r5versh2;lis6rizo pla5;in;le;bLpbellf1;weQ;aZcn,eNingl01kk,lackLolt0r5uckV;aGiAo5;ckt0ok5wns cany0;lyn,s5;i4to5;ne;de;dge6gh5;am,t0;n6t5;own;or5;th;ceb6m5;lNpt0;rid5;ge;bu5pool,wa8;rn;aconsfEdf1lBr9verly7x5;hi5;ll; hi5;lls;wi5;ck; air,l5;ingh2;am;ie5;ld;ltimore,rnsl6tters5;ea;ey;bLct0driadic,frica,ginJlGmFn9rc8s7tl6yleOzor3;es;!ant8;hcroft,ia; de triomphe,t6;adyr,ca8dov9tarct5;ic5; oce5;an;st5;er;ericas,s;be6dersh5hambra,list0;ot;rt0;cou5;rt;bot7i5;ngd0;on;sf1;ord\",\n  \"Country\": \"true¦0:38;1:2L;2:3B;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om2pZqat1KrXsKtCu7v5wal4yemTz3;a25imbabwe;es,lis and futu2Y;a3enezue32ietnam;nuatu,tican city;gTk6nited 4ruXs3zbeE; 2Ca,sr;arab emirat0Kkingdom,states3;! of am2Y;!raiV;a8haCimor les0Co7rinidad 5u3;nis0rk3valu;ey,me2Zs and caic1V;and t3t3;oba1L;go,kel10nga;iw2ji3nz2T;ki2V;aDcotl1eCi9lov8o6pa2Dri lanka,u5w3yr0;az3edAitzerl1;il1;d2riname;lomon1Xmal0uth 3;afr2KkMsud2;ak0en0;erra leoFn3;gapo1Yt maart3;en;negLrb0ychellZ;int 3moa,n marino,udi arab0;hele26luc0mart21;epublic of ir0Eom2Euss0w3;an27;a4eIhilippinUitcairn1Mo3uerto riN;l1rtugF;ki2Dl4nama,pua new0Vra3;gu7;au,esti3;ne;aBe9i7or3;folk1Ith4w3;ay; k3ern mariana1D;or0O;caragua,ger3ue;!ia;p3ther1Aw zeal1;al;mib0u3;ru;a7exi6icro0Bo3yanm06;ldova,n3roc5zambA;a4gol0t3;enegro,serrat;co;cAdagasc01l7r5urit4yot3;te;an0i16;shall0Xtin3;ique;a4div3i,ta;es;wi,ys0;ao,ed02;a6e5i3uxembourg;b3echtenste12thu1G;er0ya;ban0Isotho;os,tv0;azakh1Fe4iriba04o3uwait,yrgyz1F;rXsovo;eling0Knya;a3erG;ma16p2;c7nd6r4s3taly,vory coast;le of m2rael;a3el1;n,q;ia,oJ;el1;aiTon3ungary;dur0Ng kong;aBermany,ha0QibraltAre8u3;a6ern5inea3ya0P;! biss3;au;sey;deloupe,m,tema0Q;e3na0N;ce,nl1;ar;bUmb0;a7i6r3;ance,ench 3;guia0Epoly3;nes0;ji,nl1;lklandUroeU;ast tim7cu6gypt,l salv6ngl1quatorial4ritr5st3thiop0;on0; guin3;ea;ad3;or;enmark,jibou5ominica4r con3;go;!n C;ti;aBentral african Ah8o5roat0u4yprRzech3; 9ia;ba,racao;c4lo3morQngo brazzaville,okGsta r04te de ivoiL;mb0;osE;i3ristmasG;le,na;republic;m3naUpe verde,ymanA;bod0ero3;on;aGeDhut2o9r5u3;lgar0r3;kina faso,ma,undi;azil,itish 3unei;virgin3; is3;lands;liv0nai5snia and herzegoviHtswaHuvet3; isl1;and;re;l3n8rmuG;ar3gium,ize;us;h4ngladesh,rbad3;os;am4ra3;in;as;fghaGlDmBn6r4ustr3zerbaij2;al0ia;genti3men0uba;na;dorra,g5t3;arct7igua and barbu3;da;o3uil3;la;er3;ica;b3ger0;an0;ia;ni3;st2;an\",\n  \"FirstName\": \"true¦aTblair,cQdOfrancoZgabMhinaLilya,jHkClBm6ni4quinn,re3s0;h0umit,yd;ay,e0iloh;a,lby;g9ne;co,ko0;!s;a1el0ina,org6;!okuhF;ds,naia,r1tt0xiB;i,y;ion,lo;ashawn,eif,uca;a3e1ir0rM;an;lsFn0rry;dall,yat5;i,sD;a0essIie,ude;i1m0;ie,mG;me;ta;rie0y;le;arcy,ev0;an,on;as1h0;arl8eyenne;ey,sidy;drien,kira,l4nd1ubr0vi;ey;i,r0;a,e0;a,y;ex2f1o0;is;ie;ei,is\",\n  \"WeekDay\": \"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s\",\n  \"Month\": \"true¦dec0february,july,nov0octo1sept0;em0;ber\",\n  \"Date\": \"true¦ago,on4som4t1week0yesterd5; end,ends;mr1o0;d2morrow;!w;ed0;ay\",\n  \"Duration\": \"true¦centurAd8h7m5q4se3w1y0;ear8r8;eek0k7;!end,s;ason,c5;tr,uarter;i0onth3;llisecond2nute2;our1r1;ay0ecade0;!s;ies,y\",\n  \"FemaleName\": \"true¦0:J7;1:JB;2:IJ;3:IK;4:J1;5:IO;6:JS;7:JO;8:HB;9:JK;A:H4;B:I2;C:IT;D:JH;E:IX;F:BA;G:I4;aGTbFLcDRdD0eBMfB4gADh9Ti9Gj8Dk7Cl5Wm48n3Lo3Hp33qu32r29s15t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof3;e3Sf3la,ra;h2iKlIna,ynH;ab,ep;da,ma;da,h2iHra;nab;aKeJi0FolB7uIvH;et8onDP;i0na;le0sen3;el,gm3Hn,rGLs8W;aoHme0nyi;m5XyAD;aMendDZhiDGiH;dele9lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;ck84kIl8oleAviH;anFenJ4;ky,toriBK;da,lA8rHs0;a,nHoniH9;a,iFR;leHnesH9;nILrH;i1y;g9rHs6xHA;su5te;aYeUhRiNoLrIuHy2;i,la;acJ3iHu0J;c3na,sH;hFta;nHr0F;iFya;aJffaEOnHs6;a,gtiH;ng;!nFSra;aIeHomasi0;a,l9Oo8Ares1;l3ndolwethu;g9Fo88rIssH;!a,ie;eHi,ri7;sa,za;bOlMmKnIrHs6tia0wa0;a60yn;iHya;a,ka,s6;arFe2iHm77ra;!ka;a,iH;a,t6;at6it6;a0Ecarlett,e0AhWiSkye,neza0oQri,tNuIyH;bIGlvi1;ha,mayIJniAsIzH;an3Net8ie,y;anHi7;!a,e,nH;aCe;aIeH;fan4l5Dphan6E;cI5r5;b3fiAAm0LnHphi1;d2ia,ja,ya;er2lJmon1nIobh8QtH;a,i;dy;lETv3;aMeIirHo0risFDy5;a,lDM;ba,e0i5lJrH;iHr6Jyl;!d8Ifa;ia,lDZ;hd,iMki2nJrIu0w0yH;la,ma,na;i,le9on,ron,yn;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye82vH;da,inj;e0ife;en1i0ma;anA9bLd5Oh1SiBkKlJmInd2rHs6vannaC;aCi0;ant6i2;lDOma,ome;ee0in8Tu2;in1ri0;a05eZhXiUoHuthDM;bScRghQl8LnPsJwIxH;anB3ie,y;an,e0;aIeHie,lD;ann7ll1marDGtA;!lHnn1;iHyn;e,nH;a,dF;da,i,na;ayy8G;hel67io;bDRerAyn;a,cIkHmas,nFta,ya;ki,o;h8Xki;ea,iannGMoH;da,n1P;an0bJemFgi0iInHta,y0;a8Bee;han86na;a,eH;cHkaC;a,ca;bi0chIe,i0mo0nHquETy0;di,ia;aERelHiB;!e,le;een4ia0;aPeOhMiLoJrHute6A;iHudenCV;scil3LyamvaB;lHrt3;i0ly;a,paluk;ilome0oebe,ylH;is,lis;ggy,nelope,r5t2;ige,m0VnKo5rvaDMtIulH;a,et8in1;ricHt4T;a,e,ia;do2i07;ctav3dIfD3is6ksa0lHphD3umC5yunbileg;a,ga,iv3;eHvAF;l3t8;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aCeEma;ll1mi;aNcLhariBQkKlaJna,sHta,vi;anHha;ur;!y;a,iDZki;hoGk9YolH;a,e4P;!mh;hir,lHna,risDEsreE;!a,iDDlBV;asuMdLh3i6Dl5nKomi7rgEVtH;aHhal4;lHs6;i1ya;cy,et8;e9iF0ya;nngu2X;a0Ackenz4e02iMoJrignayani,uriDJyH;a,rH;a,iOlNna,tG;bi0i2llBJnH;a,iH;ca,ka,qD9;a,cUdo4ZkaTlOmi,nMrItzi,yH;ar;aJiIlH;anET;am;!l,nB;dy,eHh,n4;nhGrva;aKdJe0iCUlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5DgNi,lKrH;edi7AiIjem,on,yH;em,l;em,sCG;an4iHliCF;nHsCJ;a,da;!an,han;b09cASd07e,g05ha,i04ja,l02n00rLsoum5YtKuIv84xBKyHz4;bell,ra,soBB;d7rH;a,eE;h8Gild1t4;a,cUgQiKjor4l7Un4s6tJwa,yH;!aHbe6Xja9lAE;m,nBL;a,ha,in1;!aJbCGeIja,lDna,sHt63;!a,ol,sa;!l1D;!h,mInH;!a,e,n1;!awit,i;arJeIie,oHr48ueri8;!t;!ry;et46i3B;el4Xi7Cy;dHon,ue5;akranAy;ak,en,iHlo3S;a,ka,nB;a,re,s4te;daHg4;!l3E;alDd4elHge,isDJon0;ei9in1yn;el,le;a0Ne0CiXoQuLyH;d3la,nH;!a,dIe2OnHsCT;!a,e2N;a,sCR;aD4cJel0Pis1lIna,pHz;e,iA;a,u,wa;iHy;a0Se,ja,l2NnB;is,l1UrItt1LuHvel4;el5is1;aKeIi7na,rH;aADi7;lHn1tA;ei;!in1;aTbb9HdSepa,lNnKsJvIzH;!a,be5Ret8z4;!ia;a,et8;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lH;iHy;aA8e;!aH;!nF;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx93y5;iHt4;c3t3;e2PlCO;la,nHra;a,ie,o2;a,or1;a,gh,laH;!ni;!h,nH;a,d2e,n5V;cOdon9DiNkes6mi9Gna,rMtJurIvHxmi,y5;ern1in3;a,e5Aie,yn;as6iIoH;nya,ya;fa,s6;a,isA9;a,la;ey,ie,y;a04eZhXiOlASoNrJyH;lHra;a,ee,ie;istHy6I;a,en,iIyH;!na;!e,n5F;nul,ri,urtnB8;aOerNlB7mJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stE;!na,ra;aHei2ongordzol;dij1w5;el7UiKjsi,lJnIrH;a,i,ri;d2na,za;ey,i,lBLs4y;ra,s6;biAcARdiat7MeBAiSlQmPnyakuma1DrNss6NtKviAyH;!e,lH;a,eH;e,i8T;!a6HeIhHi4TlDri0y;ar8Her8Hie,leErBAy;!lyn8Ori0;a,en,iHl5Xoli0yn;!ma,nFs95;a5il1;ei8Mi,lH;e,ie;a,tl6O;a0AeZiWoOuH;anMdLlHst88;es,iH;a8NeHs8X;!n9tH;!a,te;e5Mi3My;a,iA;!anNcelDdMelGhan7VleLni,sIva0yH;a,ce;eHie;fHlDph7Y;a,in1;en,n1;i7y;!a,e,n45;lHng;!i1DlH;!i1C;anNle0nKrJsH;i8JsH;!e,i8I;i,ri;!a,elGif2CnH;a,et8iHy;!e,f2A;a,eJiInH;a,eIiH;e,n1;!t8;cMda,mi,nIque4YsminFvie2y9zH;min7;a7eIiH;ce,e,n1s;!lHs82t0F;e,le;inIk6HlDquelH;in1yn;da,ta;da,lRmPnOo0rNsIvaHwo0zaro;!a0lu,na;aJiIlaHob89;!n9R;do2;belHdo2;!a,e,l3B;a7Ben1i0ma;di2es,gr72ji;a9elBogH;en1;a,e9iHo0se;a0na;aSeOiJoHus7Kyacin2C;da,ll4rten24snH;a,i9U;lImaH;ri;aIdHlaI;a,egard;ry;ath1BiJlInrietArmi9sH;sa,t1A;en2Uga,mi;di;bi2Fil8MlNnMrJsItHwa,yl8M;i5Tt4;n60ti;iHmo51ri53;etH;!te;aCnaC;a,ey,l4;a02eWiRlPoNrKunJwH;enHyne1R;!dolD;ay,el;acieIetHiselB;a,chE;!la;ld1CogooH;sh;adys,enHor3yn2K;a,da,na;aKgi,lIna,ov8EselHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald5Si,m3Etrud7;et8i4X;a,eHna;s29vieve;ma;bIle,mHrnet,yG;al5Si5;iIrielH;a,l1;!ja;aTeQiPlorOoz3rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0P;n1s66;!ca;a,enc3;en,o0;lIn0rnH;anB;ec3ic3;jr,nArKtHy7;emIiHma,oumaA;ha,ma,n;eh;ah,iBrah,za0;cr4Rd0Re0Qi0Pk0Ol07mXn54rUsOtNuMvHwa;aKelIiH;!e,ta;inFyn;!a;!ngel4V;geni1ni47;h5Yien9ta;mLperanKtH;eIhHrel5;er;l31r7;za;a,eralB;iHma,ne4Lyn;cHka,n;a,ka;aPeNiKmH;aHe21ie,y;!li9nuH;elG;lHn1;e7iHy;a,e,ja;lHrald;da,y;!nue5;aWeUiNlMma,no2oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c3da,e,f,nMsJzaH;!betHveA;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a,i;!in1na;ate1Rta;leEs6;vi;eIiHna,wi0;e,th;l,n;aYeMh3iLjeneKoH;lor5Vminiq4Ln3FrHtt4;a,eEis,la,othHthy;ea,y;ba;an09naCon9ya;anQbPde,eOiMlJmetr3nHsir5M;a,iH;ce,se;a,iIla,orHphi9;es,is;a,l6F;dHrdH;re;!d5Ena;!b2ForaCraC;a,d2nH;!a,e;hl3i0l0GmNnLphn1rIvi1WyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,et8iH;!ca,el1Aka,z;arHia;is;a0Re0Nh04i02lUoJristIynH;di,th3;al,i0;lPnMrIurH;tn1D;aJd2OiHn2Ori9;!nH;a,e,n1;!l4;cepci5Cn4sH;tanHuelo;ce,za;eHleE;en,t8;aJeoIotH;il54;!pat2;ir7rJudH;et8iH;a,ne;a,e,iH;ce,sZ;a2er2ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Sen,iHy;an1e,n1;deJlseIrH;!i7yl;a,y;li9;nMrH;isKlImH;ai9;a,eHot8;n1t8;!sa;d2elGtH;al,elG;cIlH;es8i47;el3ilH;e,ia,y;itlYlXmilWndVrMsKtHy5;aIeIhHri0;er1IleErDy;ri0;a38sH;a37ie;a,iOlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eIie,otHy;a,ta;ne,y;na,s1X;a0Ii0I;a,e,l1;isAl4;in,yn;a0Ke02iZlXoUrH;andi7eRiJoIyH;an0nn;nwDoke;an3HdgMgiLtH;n31tH;!aInH;ey,i,y;ny;d,t8;etH;!t7;an0e,nH;da,na;bbi7glarIlo07nH;iAn4;ka;ancHythe;a,he;an1Clja0nHsm3M;iAtH;ou;aWcVlinUniArPssOtJulaCvH;!erlH;ey,y;hJsy,tH;e,iHy7;e,na;!anH;ie,y;!ie;nItHyl;ha,ie;adIiH;ce;et8i9;ay,da;ca,ky;!triH;ce,z;rbJyaH;rmH;aa;a2o2ra;a2Ub2Od25g21i1Sj5l18m0Zn0Boi,r06sWtVuPvOwa,yIzH;ra,u0;aKes6gJlIn,seH;!l;in;un;!nH;a,na;a,i2K;drLguJrIsteH;ja;el3;stH;in1;a,ey,i,y;aahua,he0;hIi2Gja,miAs2DtrH;id;aMlIraqHt21;at;eIi7yH;!n;e,iHy;gh;!nH;ti;iJleIo6piA;ta;en,n1t8;aHelG;!n1J;a01dje5eZgViTjRnKohito,toHya;inet8nH;el5ia;te;!aKeIiHmJ;e,ka;!mHtt7;ar4;!belIliHmU;sa;!l1;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tH;a,te;!bImHstasiMya;ar3;el;aLberKeliJiHy;e,l3naH;!ta;a,ja;!ly;hGiIl3nB;da;a,ra;le;aWba,ePiMlKthJyH;a,c3sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c3is6jaKksaKna,sJxH;aHia;!nd2;ia,saH;nd2;ra;ia;i0nIyH;ah,na;a,is,naCoud;la;c6da,leEmNnLsH;haClH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lDsH;on;yn;!lH;i9yn;ne;aKbIiHrL;!e,gaK;ey,i7y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya\",\n  \"Honorific\": \"true¦director1field marsh2lieutenant1rear0sergeant major,vice0; admir1; gener0;al\",\n  \"Adj|Gerund\": \"true¦0:3F;1:3H;2:31;3:2X;4:35;5:33;6:3C;7:2Z;8:36;9:29;a33b2Tc2Bd1Te1If19g12h0Zi0Rl0Nm0Gnu0Fo0Ap04rYsKtEuBvAw1Ayiel3;ar6e08;nBpA;l1Rs0B;fol3n1Zsett2;aEeDhrBi4ouc7rAwis0;e0Bif2oub2us0yi1;ea1SiA;l2vi1;l2mp0rr1J;nt1Vxi1;aMcreec7enten2NhLkyrocke0lo0Vmi2oJpHtDuBweA;e0Ul2;pp2ArA;gi1pri5roun3;aBea8iAri2Hun9;mula0r4;gge4rA;t2vi1;ark2eAraw2;e3llb2F;aAot7;ki1ri1;i9oc29;dYtisf6;aEeBive0oAus7;a4l2;assu4defi9fres7ig9juve07mai9s0vAwar3;ea2italiAol1G;si1zi1;gi1ll6mb2vi1;a6eDier23lun1VrAun2C;eBoA;mi5vo1Z;ce3s5vai2;n3rpleA;xi1;ffCpWutBverAwi1;arc7lap04p0Pri3whel8;goi1l6st1J;en3sA;et0;m2Jrtu4;aEeDiCoBuAyst0L;mb2;t1Jvi1;s5tiga0;an1Rl0n3smeri26;dAtu4;de9;aCeaBiAo0U;fesa0Tvi1;di1ni1;c1Fg19s0;llumiGmFnArri0R;cDfurHsCtBviA;go23ti1;e1Oimi21oxica0rig0V;pi4ul0;orpo20r0K;po5;na0;eaBorr02umilA;ia0;li1rtwar8;lFrA;atiDipCoBuelA;i1li1;undbrea10wi1;pi1;f6ng;a4ea8;a3etc7it0lEoCrBulfA;il2;ee1FighXust1L;rAun3;ebo3thco8;aCoA;a0wA;e4i1;mi1tte4;lectrJmHnExA;aCci0hBis0pA;an3lo3;aOila1B;c0spe1A;ab2coura0CdBergi13ga0Clive9ric7s02tA;hral2i0J;ea4u4;barras5er09pA;owe4;if6;aQeIiBrA;if0;sAzz6;aEgDhearCsen0tA;rAur11;ac0es5;te9;us0;ppoin0r8;biliGcDfi9gra3ligh0mBpres5sAvasG;erE;an3ea9orA;ali0L;a6eiBli9rA;ea5;vi1;ta0;maPri1s7un0zz2;aPhMlo5oAripp2ut0;mGnArrespon3;cer9fDspi4tA;inBrA;as0ibu0ol2;ui1;lic0u5;ni1;fDmCpA;eAromi5;l2ti1;an3;or0;aAil2;llenAnAr8;gi1;l8ptAri1;iva0;aff2eGin3lFoDrBuA;d3st2;eathtaAui5;ki1;gg2i2o8ri1unA;ci1;in3;co8wiA;lAtc7;de4;bsorVcOgonMlJmHnno6ppea2rFsA;pi4su4toA;nBun3;di1;is7;hi1;res0;li1;aFu5;si1;ar8lu4;ri1;mi1;iAzi1;zi1;cAhi1;eleDomA;moBpan6;yi1;da0;ra0;ti1;bi1;ng\",\n  \"Comparable\": \"true¦0:3C;1:3Q;2:3F;a3Tb3Cc33d2Te2Mf2Ag1Wh1Li1Fj1Ek1Bl13m0Xn0So0Rp0Iqu0Gr07sHtCug0vAw4y3za0Q;el10ouN;ary,e6hi5i3ry;ck0Cde,l3n1ry,se;d,y;ny,te;a3i3R;k,ry;a3erda2ulgar;gue,in,st;a6en2Xhi5i4ouZr3;anqu2Cen1ue;dy,g36me0ny;ck,rs28;ll,me,rt,wd3I;aRcaPeOhMiLkin0BlImGoEpDt6u4w3;eet,ift;b3dd0Wperfi21rre28;sta26t21;a8e7iff,r4u3;pUr1;a4ict,o3;ng;ig2Vn0N;a1ep,rn;le,rk,te0;e1Si2Vright0;ci1Yft,l3on,re;emn,id;a3el0;ll,rt;e4i3y;g2Mm0Z;ek,nd2T;ck24l0mp1L;a3iRrill,y;dy,l01rp;ve0Jxy;n1Jr3;ce,y;d,fe,int0l1Hv0V;a8e6i5o3ude;mantic,o19sy,u3;gh;pe,t1P;a3d,mo0A;dy,l;gg4iFndom,p3re,w;id;ed;ai2i3;ck,et;hoAi1Fl9o8r5u3;ny,r3;e,p11;egna2ic4o3;fouSud;ey,k0;liXor;ain,easa2;ny;dd,i0ld,ranL;aive,e5i4o3u14;b0Sisy,rm0Ysy;bb0ce,mb0R;a3r1w;r,t;ad,e5ild,o4u3;nda12te;ist,o1;a4ek,l3;low;s0ty;a8e7i6o3ucky;f0Jn4o15u3ve0w10y0N;d,sy;e0g;ke0l,mp,tt0Eve0;e1Qwd;me,r3te;ge;e4i3;nd;en;ol0ui19;cy,ll,n3;secu6t3;e3ima4;llege2rmedia3;te;re;aAe7i6o5u3;ge,m3ng1C;bYid;me0t;gh,l0;a3fXsita2;dy,rWv3;en0y;nd13ppy,r3;d3sh;!y;aFenEhCiBlAoofy,r3;a8e6i5o3ue0Z;o3ss;vy;m,s0;at,e3y;dy,n;nd,y;ad,ib,ooD;a2d1;a3o3;st0;tDuiS;u1y;aCeebBi9l8o6r5u3;ll,n3r0N;!ny;aCesh,iend0;a3nd,rmD;my;at,ir7;erce,nan3;ci9;le;r,ul3;ty;a6erie,sse4v3xtre0B;il;nti3;al;r4s3;tern,y;ly,th0;appZe9i5ru4u3;mb;nk;r5vi4z3;zy;ne;e,ty;a3ep,n9;d3f,r;!ly;agey,h8l7o5r4u3;dd0r0te;isp,uel;ar3ld,mmon,st0ward0zy;se;evKou1;e3il0;ap,e3;sy;aHiFlCoAr5u3;ff,r0sy;ly;a6i3oad;g4llia2;nt;ht;sh,ve;ld,un3;cy;a4o3ue;nd,o1;ck,nd;g,tt3;er;d,ld,w1;dy;bsu6ng5we3;so3;me;ry;rd\",\n  \"Adverb\": \"true¦a08b05d00eYfSheQinPjustOkinda,likewiZmMnJoEpCquite,r9s5t2u0very,well;ltima01p0; to,wards5;h1iny bit,o0wiO;o,t6;en,us;eldom,o0uch;!me1rt0; of;how,times,w0C;a1e0;alS;ndomRth05;ar excellenEer0oint blank; Lhaps;f3n0utright;ce0ly;! 0;ag05moX; courGten;ewJo0; longWt 0;onHwithstand9;aybe,eanwhiNore0;!ovT;! aboX;deed,steY;lla,n0;ce;or3u0;ck1l9rther0;!moK;ing; 0evK;exampCgood,suH;n mas0vI;se;e0irect2; 2fini0;te0;ly;juAtrop;ackward,y 0;far,no0; means,w; GbroFd nauseam,gEl7ny5part,s4t 2w0;ay,hi0;le;be7l0mo7wor7;arge,ea6; soon,i4;mo0way;re;l 3mo2ongsi1ready,so,togeth0ways;er;de;st;b1t0;hat;ut;ain;ad;lot,posteriori\",\n  \"Conjunction\": \"true¦aXbTcReNhowMiEjust00noBo9p8supposing,t5wh0yet;e1il0o3;e,st;n1re0thN; if,by,vM;evL;h0il,o;erefOo0;!uU;lus,rovided th9;r0therwiM;! not; mattEr,w0;! 0;since,th4w7;f4n0; 0asmuch;as mIcaForder t0;h0o;at;! 0;only,t0w0;hen;!ev3;ith2ven0;! 0;if,tB;er;o0uz;s,z;e0ut,y the time;cau1f0;ore;se;lt3nd,s 0;far1if,m0soon1t2;uch0; as;hou0;gh\",\n  \"Currency\": \"true¦$,aud,bQcOdJeurIfHgbp,hkd,iGjpy,kElDp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotyQł;en,uanP;af,of;h0t5;e0il5;k0q0;elK;oubleJp,upeeJ;e2ound st0;er0;lingG;n0soF;ceEnies;empi7i7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!os;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;e0ny;nt1;aht,itcoin0;!s\",\n  \"Determiner\": \"true¦aBboth,d9e6few,le5mu8neiDplenty,s4th2various,wh0;at0ich0;evC;a0e4is,ose;!t;everal,ome;!ast,s;a1l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er\",\n  \"Adj|Present\": \"true¦a07b04cVdQeNfJhollIidRlEmCnarrIoBp9qua8r7s3t2uttFw0;aKet,ro0;ng,u08;endChin;e2hort,l1mooth,our,pa9tray,u0;re,speU;i2ow;cu6da02leSpaN;eplica01i02;ck;aHerfePr0;eseUime,omV;bscu1pen,wn;atu0e3odeH;re;a2e1ive,ow0;er;an;st,y;ow;a2i1oul,r0;ee,inge;rm;iIke,ncy,st;l1mpty,x0;emHpress;abo4ic7;amp,e2i1oub0ry,ull;le;ffu9re6;fu8libe0;raE;alm,l5o0;mpleCn3ol,rr1unterfe0;it;e0u7;ct;juga8sum7;ea1o0;se;n,r;ankru1lu0;nt;pt;li2pproxi0rticula1;ma0;te;ght\",\n  \"Person|Adj\": \"true¦b3du2earnest,frank,mi2r0san1woo1;an0ich,u1;dy;sty;ella,rown\",\n  \"Modal\": \"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ight,ust;an,o0;uld\",\n  \"Verb\": \"true¦born,cannot,gonna,has,keep tabs,msg\",\n  \"Person|Verb\": \"true¦b8ch7dr6foster,gra5ja9lan4ma2ni9ollie,p1rob,s0wade;kip,pike,t5ue;at,eg,ier2;ck,r0;k,shal;ce;ce,nt;ew;ase,u1;iff,l1ob,u0;ck;aze,ossom\",\n  \"Person|Date\": \"true¦a2j0sep;an0une;!uary;p0ugust,v0;ril\"\n}"
  },
  {
    "path": "src/2-two/preTagger/model/lexicon/emoticons.js",
    "content": "//just some of the most common emoticons\n//faster than\n//http://stackoverflow.com/questions/28077049/regex-matching-emoticons\nexport default [\n  ':(',\n  ':)',\n  ':P',\n  ':p',\n  ':O',\n  ';(',\n  ';)',\n  ';P',\n  ';p',\n  ';O',\n  ':3',\n  ':|',\n  ':/',\n  ':\\\\',\n  ':$',\n  ':*',\n  ':@',\n  ':-(',\n  ':-)',\n  ':-P',\n  ':-p',\n  ':-O',\n  ':-3',\n  ':-|',\n  ':-/',\n  ':-\\\\',\n  ':-$',\n  ':-*',\n  ':-@',\n  ':^(',\n  ':^)',\n  ':^P',\n  ':^p',\n  ':^O',\n  ':^3',\n  ':^|',\n  ':^/',\n  ':^\\\\',\n  ':^$',\n  ':^*',\n  ':^@',\n  '):',\n  '(:',\n  '$:',\n  '*:',\n  ')-:',\n  '(-:',\n  '$-:',\n  '*-:',\n  ')^:',\n  '(^:',\n  '$^:',\n  '*^:',\n  '<3',\n  '</3',\n  '<\\\\3',\n  '=('\n]"
  },
  {
    "path": "src/2-two/preTagger/model/lexicon/frozenLex.js",
    "content": "export default {\n  '20th century fox': 'Organization',\n  '7 eleven': 'Organization',\n  'motel 6': 'Organization',\n  'excuse me': 'Expression',\n  'financial times': 'Organization',\n  'guns n roses': 'Organization',\n  'la z boy': 'Organization',\n  'labour party': 'Organization',\n  'new kids on the block': 'Organization',\n  'new york times': 'Organization',\n  'the guess who': 'Organization',\n  'thin lizzy': 'Organization',\n\n  'prime minister': 'Actor',\n  'free market': 'Singular',\n  'lay up': 'Singular',\n  'living room': 'Singular',\n  'living rooms': 'Plural',\n  'spin off': 'Singular',\n  'appeal court': 'Uncountable',\n  'cold war': 'Uncountable',\n  'gene pool': 'Uncountable',\n  'machine learning': 'Uncountable',\n  'nail polish': 'Uncountable',\n  'time off': 'Uncountable',\n  'take part': 'Infinitive',\n\n  'bill gates': 'Person',\n  'doctor who': 'Person',\n  'dr who': 'Person',\n  'he man': 'Person',\n  'iron man': 'Person',\n  'kid cudi': 'Person',\n  'run dmc': 'Person',\n  'rush limbaugh': 'Person',\n  'snow white': 'Person',\n  'tiger woods': 'Person',\n\n  'brand new': 'Adjective',\n  'en route': 'Adjective',\n  'left wing': 'Adjective',\n  'off guard': 'Adjective',\n  'on board': 'Adjective',\n  'part time': 'Adjective',\n  'right wing': 'Adjective',\n  'so called': 'Adjective',\n  'spot on': 'Adjective',\n  'straight forward': 'Adjective',\n  'super duper': 'Adjective',\n  'tip top': 'Adjective',\n  'top notch': 'Adjective',\n  'up to date': 'Adjective',\n  'win win': 'Adjective',\n\n  'brooklyn nets': 'SportsTeam',\n  'chicago bears': 'SportsTeam',\n  'houston astros': 'SportsTeam',\n  'houston dynamo': 'SportsTeam',\n  'houston rockets': 'SportsTeam',\n  'houston texans': 'SportsTeam',\n  'minnesota twins': 'SportsTeam',\n  'orlando magic': 'SportsTeam',\n  'san antonio spurs': 'SportsTeam',\n  'san diego chargers': 'SportsTeam',\n  'san diego padres': 'SportsTeam',\n\n  'iron maiden': 'ProperNoun',\n  'isle of man': 'Country',\n  'united states': 'Country',\n  'united states of america': 'Country',\n  'prince edward island': 'Region',\n  'cedar breaks': 'Place',\n  'cedar falls': 'Place',\n\n  'point blank': 'Adverb',\n  'tiny bit': 'Adverb',\n  'by the time': 'Conjunction',\n  'no matter': 'Conjunction',\n\n  'civil wars': 'Plural',\n  'credit cards': 'Plural',\n  'default rates': 'Plural',\n  'free markets': 'Plural',\n  'head starts': 'Plural',\n  'home runs': 'Plural',\n  'lay ups': 'Plural',\n  'phone calls': 'Plural',\n  'press releases': 'Plural',\n  'record labels': 'Plural',\n  'soft serves': 'Plural',\n  'student loans': 'Plural',\n  'tax returns': 'Plural',\n  'tv shows': 'Plural',\n  'video games': 'Plural',\n\n  'took part': 'PastTense',\n  'takes part': 'PresentTense',\n  'taking part': 'Gerund',\n  'taken part': 'Participle',\n\n  'light bulb': 'Noun',\n  'rush hour': 'Noun',\n  'fluid ounce': 'Unit',\n  'the rolling stones': 'Organization',\n}\n"
  },
  {
    "path": "src/2-two/preTagger/model/lexicon/index.js",
    "content": "import lexData from './_data.js'\nimport { unpack } from 'efrt'\nimport misc from './misc.js'\nimport frozenLex from './frozenLex.js'\nimport emoticons from './emoticons.js'\nimport toPlural from '../../methods/transform/nouns/toPlural/index.js'\nimport irregularPlurals from '../irregulars/plurals.js'\n// unpack our lexicon of words\n// (found in ./lexicon/)\n\n// more clever things are done on the data later\n//  - once the plugin is applied\nconst hasSwitch = /\\|/\nconst lexicon = misc\nconst switches = {}\n\nconst tmpModel = { two: { irregularPlurals, uncountable: {} } }\n\nObject.keys(lexData).forEach(tag => {\n  const wordsObj = unpack(lexData[tag])\n  // POS tag, or something fancier?\n  if (!hasSwitch.test(tag)) {\n    // set them as simple word key-value lookup\n    Object.keys(wordsObj).forEach(w => {\n      lexicon[w] = tag\n    })\n    return\n  }\n  // add them as seperate key-val object\n  Object.keys(wordsObj).forEach(w => {\n    switches[w] = tag\n    // pluralize Noun|Verb switches\n    if (tag === 'Noun|Verb') {\n      const plural = toPlural(w, tmpModel)\n      switches[plural] = 'Plural|Verb'\n    }\n  })\n})\n// add ':)'\nemoticons.forEach(str => (lexicon[str] = 'Emoticon'))\n\n// misc cleanup\ndelete lexicon['']\ndelete lexicon[null]\ndelete lexicon[' ']\n\nexport { lexicon, switches, frozenLex }\n"
  },
  {
    "path": "src/2-two/preTagger/model/lexicon/misc.js",
    "content": "const prp = ['Possessive', 'Pronoun']\n//words that can't be compressed, for whatever reason\nconst misc = {\n  // numbers\n  '20th century fox': 'Organization',\n  '7 eleven': 'Organization',\n  'motel 6': 'Organization',\n  g8: 'Organization',\n  vh1: 'Organization',\n  '76ers': 'SportsTeam',\n  '49ers': 'SportsTeam',\n\n  q1: 'Date',\n  q2: 'Date',\n  q3: 'Date',\n  q4: 'Date',\n\n  km2: 'Unit',\n  m2: 'Unit',\n  dm2: 'Unit',\n  cm2: 'Unit',\n  mm2: 'Unit',\n  mile2: 'Unit',\n  in2: 'Unit',\n  yd2: 'Unit',\n  ft2: 'Unit',\n  m3: 'Unit',\n  dm3: 'Unit',\n  cm3: 'Unit',\n  in3: 'Unit',\n  ft3: 'Unit',\n  yd3: 'Unit',\n\n  // ampersands\n  'at&t': 'Organization',\n  'black & decker': 'Organization',\n  'h & m': 'Organization',\n  'johnson & johnson': 'Organization',\n  'procter & gamble': 'Organization',\n  \"ben & jerry's\": 'Organization',\n  '&': 'Conjunction',\n\n  //pronouns\n  i: ['Pronoun', 'Singular'],\n  he: ['Pronoun', 'Singular'],\n  she: ['Pronoun', 'Singular'],\n  it: ['Pronoun', 'Singular'],\n  they: ['Pronoun', 'Plural'],\n  we: ['Pronoun', 'Plural'],\n  was: ['Copula', 'PastTense'],\n  is: ['Copula', 'PresentTense'],\n  are: ['Copula', 'PresentTense'],\n  am: ['Copula', 'PresentTense'],\n  were: ['Copula', 'PastTense'],\n\n  // possessive pronouns\n  her: prp,\n  his: prp,\n  hers: prp,\n  their: prp,\n  theirs: prp,\n  themselves: prp,\n  your: prp,\n  our: prp,\n  ours: prp,\n  my: prp,\n  its: prp,\n\n  // misc\n  vs: ['Conjunction', 'Abbreviation'],\n  if: ['Condition', 'Preposition'],\n  closer: 'Comparative',\n  closest: 'Superlative',\n  much: 'Adverb',\n  may: 'Modal',\n\n  // irregular conjugations with two forms\n  babysat: 'PastTense',\n  blew: 'PastTense',\n  drank: 'PastTense',\n  drove: 'PastTense',\n  forgave: 'PastTense',\n  skiied: 'PastTense',\n  spilt: 'PastTense',\n  stung: 'PastTense',\n  swam: 'PastTense',\n  swung: 'PastTense',\n  guaranteed: 'PastTense',\n  shrunk: 'PastTense',\n\n  // support 'near', 'nears', 'nearing'\n  nears: 'PresentTense',\n  nearing: 'Gerund',\n  neared: 'PastTense',\n\n  no: ['Negative', 'Expression'],\n\n  // '-': 'Preposition', //june - july\n\n  // there: 'There'\n}\nexport default misc\n"
  },
  {
    "path": "src/2-two/preTagger/model/models/_data.js",
    "content": "// generated in ./lib/pairs\nexport default {\n  \"Comparative\": {\n    \"fwd\": \"3:ser,ier¦1er:h,t,f,l,n¦1r:e¦2er:ss,or,om\",\n    \"both\": \"3er:ver,ear,alm¦3ner:hin¦3ter:lat¦2mer:im¦2er:ng,rm,mb¦2ber:ib¦2ger:ig¦1er:w,p,k,d¦ier:y\",\n    \"rev\": \"1:tter,yer¦2:uer,ver,ffer,oner,eler,ller,iler,ster,cer,uler,sher,ener,gher,aner,adder,nter,eter,rter,hter,rner,fter¦3:oser,ooler,eafer,user,airer,bler,maler,tler,eater,uger,rger,ainer,urer,ealer,icher,pler,emner,icter,nser,iser¦4:arser,viner,ucher,rosser,somer,ndomer,moter,oother,uarer,hiter¦5:nuiner,esser,emier¦ar:urther\",\n    \"ex\": \"worse:bad¦better:good¦4er:fair,gray,poor¦1urther:far¦3ter:fat,hot,wet¦3der:mad,sad¦3er:shy,fun¦4der:glad¦:¦4r:cute,dire,fake,fine,free,lame,late,pale,rare,ripe,rude,safe,sore,tame,wide¦5r:eerie,stale\"\n  },\n  \"Gerund\": {\n    \"fwd\": \"1:nning,tting,rring,pping,eing,mming,gging,dding,bbing,kking¦2:eking,oling,eling,eming¦3:velling,siting,uiting,fiting,loting,geting,ialing,celling¦4:graming\",\n    \"both\": \"1:aing,iing,fing,xing,ying,oing,hing,wing¦2:tzing,rping,izzing,bting,mning,sping,wling,rling,wding,rbing,uping,lming,wning,mping,oning,lting,mbing,lking,fting,hting,sking,gning,pting,cking,ening,nking,iling,eping,ering,rting,rming,cting,lping,ssing,nting,nding,lding,sting,rning,rding,rking¦3:belling,siping,toming,yaking,uaking,oaning,auling,ooping,aiding,naping,euring,tolling,uzzing,ganing,haning,ualing,halling,iasing,auding,ieting,ceting,ouling,voring,ralling,garing,joring,oaming,oaking,roring,nelling,ooring,uelling,eaming,ooding,eaping,eeting,ooting,ooming,xiting,keting,ooking,ulling,airing,oaring,biting,outing,oiting,earing,naling,oading,eeding,ouring,eaking,aiming,illing,oining,eaning,onging,ealing,aining,eading¦4:thoming,melling,aboring,ivoting,weating,dfilling,onoring,eriting,imiting,tialling,rgining,otoring,linging,winging,lleting,louding,spelling,mpelling,heating,feating,opelling,choring,welling,ymaking,ctoring,calling,peating,iloring,laiting,utoring,uditing,mmaking,loating,iciting,waiting,mbating,voiding,otalling,nsoring,nselling,ocusing,itoring,eloping¦5:rselling,umpeting,atrolling,treating,tselling,rpreting,pringing,ummeting,ossoming,elmaking,eselling,rediting,totyping,onmaking,rfeiting,ntrolling¦5e:chmaking,dkeeping,severing,erouting,ecreting,ephoning,uthoring,ravening,reathing,pediting,erfering,eotyping,fringing,entoring,ombining,ompeting¦4e:emaking,eething,twining,rruling,chuting,xciting,rseding,scoping,edoring,pinging,lunging,agining,craping,pleting,eleting,nciting,nfining,ncoding,tponing,ecoding,writing,esaling,nvening,gnoring,evoting,mpeding,rvening,dhering,mpiling,storing,nviting,ploring¦3e:tining,nuring,saking,miring,haling,ceding,xuding,rining,nuting,laring,caring,miling,riding,hoking,piring,lading,curing,uading,noting,taping,futing,paring,hading,loding,siring,guring,vading,voking,during,niting,laning,caping,luting,muting,ruding,ciding,juring,laming,caling,hining,uoting,liding,ciling,duling,tuting,puting,cuting,coring,uiding,tiring,turing,siding,rading,enging,haping,buting,lining,taking,anging,haring,uiring,coming,mining,moting,suring,viding,luding¦2e:tring,zling,uging,oging,gling,iging,vring,fling,lging,obing,psing,pling,ubing,cling,dling,wsing,iking,rsing,dging,kling,ysing,tling,rging,eging,nsing,uning,osing,uming,using,ibing,bling,aging,ising,asing,ating¦2ie:rlying¦1e:zing,uing,cing,ving\",\n    \"rev\": \"ying:ie¦1ing:se,ke,te,we,ne,re,de,pe,me,le,c,he¦2ing:ll,ng,dd,ee,ye,oe,rg,us¦2ning:un¦2ging:og,ag,ug,ig,eg¦2ming:um¦2bing:ub,ab,eb,ob¦3ning:lan,can,hin,pin,win¦3ring:cur,lur,tir,tar,pur,car¦3ing:ait,del,eel,fin,eat,oat,eem,lel,ool,ein,uin¦3ping:rop,rap,top,uip,wap,hip,hop,lap,rip,cap¦3ming:tem,wim,rim,kim,lim¦3ting:mat,cut,pot,lit,lot,hat,set,pit,put¦3ding:hed,bed,bid¦3king:rek¦3ling:cil,pel¦3bing:rib¦4ning:egin¦4ing:isit,ruit,ilot,nsit,dget,rkel,ival,rcel¦4ring:efer,nfer¦4ting:rmit,mmit,ysit,dmit,emit,bmit,tfit,gret¦4ling:evel,xcel,ivel¦4ding:hred¦5ing:arget,posit,rofit¦5ring:nsfer¦5ting:nsmit,orget,cquit¦5ling:ancel,istil\",\n    \"ex\": \"3:adding,eating,aiming,aiding,airing,outing,gassing,setting,getting,putting,cutting,winning,sitting,betting,mapping,tapping,letting,bidding,hitting,tanning,netting,popping,fitting,capping,lapping,barring,banning,vetting,topping,rotting,tipping,potting,wetting,pitting,dipping,budding,hemming,pinning,jetting,kidding,padding,podding,sipping,wedding,bedding,donning,warring,penning,gutting,cueing,wadding,petting,ripping,napping,matting,tinning,binning,dimming,hopping,mopping,nodding,panning,rapping,ridding,sinning¦4:selling,falling,calling,waiting,editing,telling,rolling,heating,boating,hanging,beating,coating,singing,tolling,felling,polling,discing,seating,voiding,gelling,yelling,baiting,reining,ruining,seeking,spanning,stepping,knitting,emitting,slipping,quitting,dialing,omitting,clipping,shutting,skinning,abutting,flipping,trotting,cramming,fretting,suiting¦5:bringing,treating,spelling,stalling,trolling,expelling,rivaling,wringing,deterring,singeing,befitting,refitting¦6:enrolling,distilling,scrolling,strolling,caucusing,travelling¦7:installing,redefining,stencilling,recharging,overeating,benefiting,unraveling,programing¦9:reprogramming¦is:being¦2e:using,aging,owing¦3e:making,taking,coming,noting,hiring,filing,coding,citing,doping,baking,coping,hoping,lading,caring,naming,voting,riding,mining,curing,lining,ruling,typing,boring,dining,firing,hiding,piling,taping,waning,baling,boning,faring,honing,wiping,luring,timing,wading,piping,fading,biting,zoning,daring,waking,gaming,raking,ceding,tiring,coking,wining,joking,paring,gaping,poking,pining,coring,liming,toting,roping,wiring,aching¦4e:writing,storing,eroding,framing,smoking,tasting,wasting,phoning,shaking,abiding,braking,flaking,pasting,priming,shoring,sloping,withing,hinging¦5e:defining,refining,renaming,swathing,fringing,reciting¦1ie:dying,tying,lying,vying¦7e:sunbathing\"\n  },\n  \"Participle\": {\n    \"fwd\": \"1:mt¦2:llen¦3:iven,aken¦:ne¦y:in\",\n    \"both\": \"1:wn¦2:me,aten¦3:seen,bidden,isen¦4:roven,asten¦3l:pilt¦3d:uilt¦2e:itten¦1im:wum¦1eak:poken¦1ine:hone¦1ose:osen¦1in:gun¦1ake:woken¦ear:orn¦eal:olen¦eeze:ozen¦et:otten¦ink:unk¦ing:ung\",\n    \"rev\": \"2:un¦oken:eak¦ought:eek¦oven:eave¦1ne:o¦1own:ly¦1den:de¦1in:ay¦2t:am¦2n:ee¦3en:all¦4n:rive,sake,take¦5n:rgive\",\n    \"ex\": \"2:been¦3:seen,run¦4:given,taken¦5:shaken¦2eak:broken¦1ive:dove¦2y:flown¦3e:hidden,ridden¦1eek:sought¦1ake:woken¦1eave:woven\"\n  },\n  \"PastTense\": {\n    \"fwd\": \"1:tted,wed,gged,nned,een,rred,pped,yed,bbed,oed,dded,rd,wn,mmed¦2:eed,nded,et,hted,st,oled,ut,emed,eled,lded,ken,rt,nked,apt,ant,eped,eked¦3:eared,eat,eaded,nelled,ealt,eeded,ooted,eaked,eaned,eeted,mited,bid,uit,ead,uited,ealed,geted,velled,ialed,belled¦4:ebuted,hined,comed¦y:ied¦ome:ame¦ear:ore¦ind:ound¦ing:ung,ang¦ep:pt¦ink:ank,unk¦ig:ug¦all:ell¦ee:aw¦ive:ave¦eeze:oze¦old:eld¦ave:ft¦ake:ook¦ell:old¦ite:ote¦ide:ode¦ine:one¦in:un,on¦eal:ole¦im:am¦ie:ay¦and:ood¦1ise:rose¦1eak:roke¦1ing:rought¦1ive:rove¦1el:elt¦1id:bade¦1et:got¦1y:aid¦1it:sat¦3e:lid¦3d:pent\",\n    \"both\": \"1:aed,fed,xed,hed¦2:sged,xted,wled,rped,lked,kied,lmed,lped,uped,bted,rbed,rked,wned,rled,mped,fted,mned,mbed,zzed,omed,ened,cked,gned,lted,sked,ued,zed,nted,ered,rted,rmed,ced,sted,rned,ssed,rded,pted,ved,cted¦3:cled,eined,siped,ooned,uked,ymed,jored,ouded,ioted,oaned,lged,asped,iged,mured,oided,eiled,yped,taled,moned,yled,lit,kled,oaked,gled,naled,fled,uined,oared,valled,koned,soned,aided,obed,ibed,meted,nicked,rored,micked,keted,vred,ooped,oaded,rited,aired,auled,filled,ouled,ooded,ceted,tolled,oited,bited,aped,tled,vored,dled,eamed,nsed,rsed,sited,owded,pled,sored,rged,osed,pelled,oured,psed,oated,loned,aimed,illed,eured,tred,ioned,celled,bled,wsed,ooked,oiled,itzed,iked,iased,onged,ased,ailed,uned,umed,ained,auded,nulled,ysed,eged,ised,aged,oined,ated,used,dged,doned¦4:ntied,efited,uaked,caded,fired,roped,halled,roked,himed,culed,tared,lared,tuted,uared,routed,pited,naked,miled,houted,helled,hared,cored,caled,tired,peated,futed,ciled,called,tined,moted,filed,sided,poned,iloted,honed,lleted,huted,ruled,cured,named,preted,vaded,sured,talled,haled,peded,gined,nited,uided,ramed,feited,laked,gured,ctored,unged,pired,cuted,voked,eloped,ralled,rined,coded,icited,vided,uaded,voted,mined,sired,noted,lined,nselled,luted,jured,fided,puted,piled,pared,olored,cided,hoked,enged,tured,geoned,cotted,lamed,uiled,waited,udited,anged,luded,mired,uired,raded¦5:modelled,izzled,eleted,umpeted,ailored,rseded,treated,eduled,ecited,rammed,eceded,atrolled,nitored,basted,twined,itialled,ncited,gnored,ploded,xcited,nrolled,namelled,plored,efeated,redited,ntrolled,nfined,pleted,llided,lcined,eathed,ibuted,lloted,dhered,cceded¦3ad:sled¦2aw:drew¦2ot:hot¦2ke:made¦2ow:hrew,grew¦2ose:hose¦2d:ilt¦2in:egan¦1un:ran¦1ink:hought¦1ick:tuck¦1ike:ruck¦1eak:poke,nuck¦1it:pat¦1o:did¦1ow:new¦1ake:woke¦go:went\",\n    \"rev\": \"3:rst,hed,hut,cut,set¦4:tbid¦5:dcast,eread,pread,erbid¦ought:uy,eek¦1ied:ny,ly,dy,ry,fy,py,vy,by,ty,cy¦1ung:ling,ting,wing¦1pt:eep¦1ank:rink¦1ore:bear,wear¦1ave:give¦1oze:reeze¦1ound:rind,wind¦1ook:take,hake¦1aw:see¦1old:sell¦1ote:rite¦1ole:teal¦1unk:tink¦1am:wim¦1ay:lie¦1ood:tand¦1eld:hold¦2d:he,ge,re,le,leed,ne,reed,be,ye,lee,pe,we¦2ed:dd,oy,or,ey,gg,rr,us,ew,to¦2ame:ecome,rcome¦2ped:ap¦2ged:ag,og,ug,eg¦2bed:ub,ab,ib,ob¦2lt:neel¦2id:pay¦2ang:pring¦2ove:trive¦2med:um¦2ode:rride¦2at:ysit¦3ted:mit,hat,mat,lat,pot,rot,bat¦3ed:low,end,tow,und,ond,eem,lay,cho,dow,xit,eld,ald,uld,law,lel,eat,oll,ray,ank,fin,oam,out,how,iek,tay,haw,ait,vet,say,cay,bow¦3d:ste,ede,ode,ete,ree,ude,ame,oke,ote,ime,ute,ade¦3red:lur,cur,pur,car¦3ped:hop,rop,uip,rip,lip,tep,top¦3ded:bed,rod,kid¦3ade:orbid¦3led:uel¦3ned:lan,can,kin,pan,tun¦3med:rim,lim¦4ted:quit,llot¦4ed:pear,rrow,rand,lean,mand,anel,pand,reet,link,abel,evel,imit,ceed,ruit,mind,peal,veal,hool,head,pell,well,mell,uell,band,hear,weak¦4led:nnel,qual,ebel,ivel¦4red:nfer,efer,sfer¦4n:sake,trew¦4d:ntee¦4ded:hred¦4ned:rpin¦5ed:light,nceal,right,ndear,arget,hread,eight,rtial,eboot¦5d:edite,nvite¦5ted:egret¦5led:ravel\",\n    \"ex\": \"2:been,upped¦3:added,aged,aided,aimed,aired,bid,died,dyed,egged,erred,eyed,fit,gassed,hit,lied,owed,pent,pied,tied,used,vied,oiled,outed,banned,barred,bet,canned,cut,dipped,donned,ended,feed,inked,jarred,let,manned,mowed,netted,padded,panned,pitted,popped,potted,put,set,sewn,sowed,tanned,tipped,topped,vowed,weed,bowed,jammed,binned,dimmed,hopped,mopped,nodded,pinned,rigged,sinned,towed,vetted¦4:ached,baked,baled,boned,bored,called,caned,cared,ceded,cited,coded,cored,cubed,cured,dared,dined,edited,exited,faked,fared,filed,fined,fired,fuelled,gamed,gelled,hired,hoped,joked,lined,mined,named,noted,piled,poked,polled,pored,pulled,reaped,roamed,rolled,ruled,seated,shed,sided,timed,tolled,toned,voted,waited,walled,waned,winged,wiped,wired,zoned,yelled,tamed,lubed,roped,faded,mired,caked,honed,banged,culled,heated,raked,welled,banded,beat,cast,cooled,cost,dealt,feared,folded,footed,handed,headed,heard,hurt,knitted,landed,leaked,leapt,linked,meant,minded,molded,neared,needed,peaked,plodded,plotted,pooled,quit,read,rooted,sealed,seeded,seeped,shipped,shunned,skimmed,slammed,sparred,stemmed,stirred,suited,thinned,twinned,swayed,winked,dialed,abutted,blotted,fretted,healed,heeded,peeled,reeled¦5:basted,cheated,equalled,eroded,exiled,focused,opined,pleated,primed,quoted,scouted,shored,sloped,smoked,sniped,spelled,spouted,routed,staked,stored,swelled,tasted,treated,wasted,smelled,dwelled,honored,prided,quelled,eloped,scared,coveted,sweated,breaded,cleared,debuted,deterred,freaked,modeled,pleaded,rebutted,speeded¦6:anchored,defined,endured,impaled,invited,refined,revered,strolled,cringed,recast,thrust,unfolded¦7:authored,combined,competed,conceded,convened,excreted,extruded,redefined,restored,secreted,rescinded,welcomed¦8:expedited,infringed¦9:interfered,intervened,persevered¦10:contravened¦eat:ate¦is:was¦go:went¦are:were¦3d:bent,lent,rent,sent¦3e:bit,fled,hid,lost¦3ed:bled,bred¦2ow:blew,grew¦1uy:bought¦2tch:caught¦1o:did¦1ive:dove,gave¦2aw:drew¦2ed:fed¦2y:flew,laid,paid,said¦1ight:fought¦1et:got¦2ve:had¦1ang:hung¦2ad:led¦2ght:lit¦2ke:made¦2et:met¦1un:ran¦1ise:rose¦1it:sat¦1eek:sought¦1each:taught¦1ake:woke,took¦1eave:wove¦2ise:arose¦1ear:bore,tore,wore¦1ind:bound,found,wound¦2eak:broke¦2ing:brought,wrung¦1ome:came¦2ive:drove¦1ig:dug¦1all:fell¦2el:felt¦4et:forgot¦1old:held¦2ave:left¦1ing:rang,sang¦1ide:rode¦1ink:sank¦1ee:saw¦2ine:shone¦4e:slid¦1ell:sold,told¦4d:spent¦2in:spun¦1in:won\"\n  },\n  \"PresentTense\": {\n    \"fwd\": \"1:oes¦1ve:as\",\n    \"both\": \"1:xes¦2:zzes,ches,shes,sses¦3:iases¦2y:llies,plies¦1y:cies,bies,ties,vies,nies,pies,dies,ries,fies¦:s\",\n    \"rev\": \"1ies:ly¦2es:us,go,do¦3es:cho,eto\",\n    \"ex\": \"2:does,goes¦3:gasses¦5:focuses¦is:are¦3y:relies¦2y:flies¦2ve:has\"\n  },\n  \"Superlative\": {\n    \"fwd\": \"1st:e¦1est:l,m,f,s¦1iest:cey¦2est:or,ir¦3est:ver\",\n    \"both\": \"4:east¦5:hwest¦5lest:erful¦4est:weet,lgar,tter,oung¦4most:uter¦3est:ger,der,rey,iet,ong,ear¦3test:lat¦3most:ner¦2est:pt,ft,nt,ct,rt,ht¦2test:it¦2gest:ig¦1est:b,k,n,p,h,d,w¦iest:y\",\n    \"rev\": \"1:ttest,nnest,yest¦2:sest,stest,rmest,cest,vest,lmest,olest,ilest,ulest,ssest,imest,uest¦3:rgest,eatest,oorest,plest,allest,urest,iefest,uelest,blest,ugest,amest,yalest,ealest,illest,tlest,itest¦4:cerest,eriest,somest,rmalest,ndomest,motest,uarest,tiffest¦5:leverest,rangest¦ar:urthest¦3ey:riciest\",\n    \"ex\": \"best:good¦worst:bad¦5est:great¦4est:fast,full,fair,dull¦3test:hot,wet,fat¦4nest:thin¦1urthest:far¦3est:gay,shy,ill¦4test:neat¦4st:late,wide,fine,safe,cute,fake,pale,rare,rude,sore,ripe,dire¦6st:severe\"\n  },\n  \"AdjToNoun\": {\n    \"fwd\": \"1:tistic,eable,lful,sful,ting,tty¦2:onate,rtable,geous,ced,seful,ctful¦3:ortive,ented¦arity:ear¦y:etic¦fulness:begone¦1ity:re¦1y:tiful,gic¦2ity:ile,imous,ilous,ime¦2ion:ated¦2eness:iving¦2y:trious¦2ation:iring¦2tion:vant¦3ion:ect¦3ce:mant,mantic¦3tion:irable¦3y:est,estic¦3m:mistic,listic¦3ess:ning¦4n:utious¦4on:rative,native,vative,ective¦4ce:erant\",\n    \"both\": \"1:king,wing¦2:alous,ltuous,oyful,rdous¦3:gorous,ectable,werful,amatic¦4:oised,usical,agical,raceful,ocused,lined,ightful¦5ness:stful,lding,itous,nuous,ulous,otous,nable,gious,ayful,rvous,ntous,lsive,peful,entle,ciful,osive,leful,isive,ncise,reful,mious¦5ty:ivacious¦5ties:ubtle¦5ce:ilient,adiant,atient¦5cy:icient¦5sm:gmatic¦5on:sessive,dictive¦5ity:pular,sonal,eative,entic¦5sity:uminous¦5ism:conic¦5nce:mperate¦5ility:mitable¦5ment:xcited¦5n:bitious¦4cy:brant,etent,curate¦4ility:erable,acable,icable,ptable¦4ty:nacious,aive,oyal,dacious¦4n:icious¦4ce:vient,erent,stent,ndent,dient,quent,ident¦4ness:adic,ound,hing,pant,sant,oing,oist,tute¦4icity:imple¦4ment:fined,mused¦4ism:otic¦4ry:dantic¦4ity:tund,eral¦4edness:hand¦4on:uitive¦4lity:pitable¦4sm:eroic,namic¦4sity:nerous¦3th:arm¦3ility:pable,bable,dable,iable¦3cy:hant,nant,icate¦3ness:red,hin,nse,ict,iet,ite,oud,ind,ied,rce¦3ion:lute¦3ity:ual,gal,volous,ial¦3ce:sent,fensive,lant,gant,gent,lent,dant¦3on:asive¦3m:fist,sistic,iastic¦3y:terious,xurious,ronic,tastic¦3ur:amorous¦3e:tunate¦3ation:mined¦3sy:rteous¦3ty:ain¦3ry:ave¦3ment:azed¦2ness:de,on,ue,rn,ur,ft,rp,pe,om,ge,rd,od,ay,ss,er,ll,oy,ap,ht,ld,ad,rt¦2inousness:umous¦2ity:neous,ene,id,ane¦2cy:bate,late¦2ation:ized¦2ility:oble,ible¦2y:odic¦2e:oving,aring¦2s:ost¦2itude:pt¦2dom:ee¦2ance:uring¦2tion:reet¦2ion:oted¦2sion:ending¦2liness:an¦2or:rdent¦1th:ung¦1e:uable¦1ness:w,h,k,f¦1ility:mble¦1or:vent¦1ement:ging¦1tiquity:ncient¦1ment:hed¦verty:or¦ength:ong¦eat:ot¦pth:ep¦iness:y\",\n    \"rev\": \"\",\n    \"ex\": \"5:forceful,humorous¦8:charismatic¦13:understanding¦5ity:active¦11ness:adventurous,inquisitive,resourceful¦8on:aggressive,automatic,perceptive¦7ness:amorous,fatuous,furtive,ominous,serious¦5ness:ample,sweet¦12ness:apprehensive,cantankerous,contemptuous,ostentatious¦13ness:argumentative,conscientious¦9ness:assertive,facetious,imperious,inventive,oblivious,rapacious,receptive,seditious,whimsical¦10ness:attractive,expressive,impressive,loquacious,salubrious,thoughtful¦3edom:boring¦4ness:calm,fast,keen,tame¦8ness:cheerful,gracious,specious,spurious,timorous,unctuous¦5sity:curious¦9ion:deliberate¦8ion:desperate¦6e:expensive¦7ce:fragrant¦3y:furious¦9ility:ineluctable¦6ism:mystical¦8ity:physical,proactive,sensitive,vertical¦5cy:pliant¦7ity:positive¦9ity:practical¦12ism:professional¦6ce:prudent¦3ness:red¦6cy:vagrant¦3dom:wise\"\n  }\n}"
  },
  {
    "path": "src/2-two/preTagger/model/models/index.js",
    "content": "import data from './_data.js'\nimport { reverse, uncompress } from 'suffix-thumb'\n// import { reverse, uncompress } from '/Users/spencer/mountain/suffix-thumb'\n// const uncompress = function () { }\n// const reverse = function () { }\nconst fromPast = uncompress(data.PastTense)\nconst fromPresent = uncompress(data.PresentTense)\nconst fromGerund = uncompress(data.Gerund)\nconst fromParticiple = uncompress(data.Participle)\n\nconst toPast = reverse(fromPast)\nconst toPresent = reverse(fromPresent)\nconst toGerund = reverse(fromGerund)\nconst toParticiple = reverse(fromParticiple)\n\nconst toComparative = uncompress(data.Comparative)\nconst toSuperlative = uncompress(data.Superlative)\nconst fromComparative = reverse(toComparative)\nconst fromSuperlative = reverse(toSuperlative)\n\nconst adjToNoun = uncompress(data.AdjToNoun)\n\nexport default {\n  fromPast,\n  fromPresent,\n  fromGerund,\n  fromParticiple,\n  toPast,\n  toPresent,\n  toGerund,\n  toParticiple,\n  // adjectives\n  toComparative,\n  toSuperlative,\n  fromComparative,\n  fromSuperlative,\n  adjToNoun\n}\n// console.log(convert('collide', toPast))"
  },
  {
    "path": "src/2-two/preTagger/model/orgWords.js",
    "content": "//nouns that also signal the title of an unknown organization\n//todo remove/normalize plural forms\nexport default [\n  'academy',\n  'administration',\n  'agence',\n  'agences',\n  'agencies',\n  'agency',\n  'airlines',\n  'airways',\n  'army',\n  'assoc',\n  'associates',\n  'association',\n  'assurance',\n  'authority',\n  'autorite',\n  'aviation',\n  'bank',\n  'banque',\n  'board',\n  'boys',\n  'brands',\n  'brewery',\n  'brotherhood',\n  'brothers',\n  'bureau',\n  'cafe',\n  'co',\n  'caisse',\n  'capital',\n  'care',\n  'cathedral',\n  'center',\n  'centre',\n  'chemicals',\n  'choir',\n  'chronicle',\n  'church',\n  'circus',\n  'clinic',\n  'clinique',\n  'club',\n  'co',\n  'coalition',\n  'coffee',\n  'collective',\n  'college',\n  'commission',\n  'committee',\n  'communications',\n  'community',\n  'company',\n  'comprehensive',\n  'computers',\n  'confederation',\n  'conference',\n  'conseil',\n  'consulting',\n  'containers',\n  'corporation',\n  'corps',\n  'corp',\n  'council',\n  'crew',\n  'data',\n  'departement',\n  'department',\n  'departments',\n  'design',\n  'development',\n  'directorate',\n  'division',\n  'drilling',\n  'education',\n  'eglise',\n  'electric',\n  'electricity',\n  'energy',\n  'ensemble',\n  'enterprise',\n  'enterprises',\n  'entertainment',\n  'estate',\n  'etat',\n  'faculty',\n  'faction',\n  'federation',\n  'financial',\n  'fm',\n  'foundation',\n  'fund',\n  'gas',\n  'gazette',\n  'girls',\n  'government',\n  'group',\n  'guild',\n  'herald',\n  'holdings',\n  'hospital',\n  'hotel',\n  'hotels',\n  'inc',\n  'industries',\n  'institut',\n  'institute',\n  'institutes',\n  'insurance',\n  'international',\n  'interstate',\n  'investment',\n  'investments',\n  'investors',\n  'journal',\n  'laboratory',\n  'labs',\n  'llc',\n  'ltd',\n  'limited',\n  'machines',\n  'magazine',\n  'management',\n  'marine',\n  'marketing',\n  'markets',\n  'media',\n  'memorial',\n  'ministere',\n  'ministry',\n  'military',\n  'mobile',\n  'motor',\n  'motors',\n  'musee',\n  'museum',\n  'news',\n  'observatory',\n  'office',\n  'oil',\n  'optical',\n  'orchestra',\n  'organization',\n  'partners',\n  'partnership',\n  'petrol',\n  'petroleum',\n  'pharmacare',\n  'pharmaceutical',\n  'pharmaceuticals',\n  'pizza',\n  'plc',\n  'police',\n  'politburo',\n  'polytechnic',\n  'post',\n  'power',\n  'press',\n  'productions',\n  'quartet',\n  'radio',\n  'reserve',\n  'resources',\n  'restaurant',\n  'restaurants',\n  'savings',\n  'school',\n  'securities',\n  'service',\n  'services',\n  'societe',\n  'subsidiary',\n  'society',\n  'sons',\n  // 'standard',\n  'subcommittee',\n  'syndicat',\n  'systems',\n  'telecommunications',\n  'telegraph',\n  'television',\n  'times',\n  'tribunal',\n  'tv',\n  'union',\n  'university',\n  'utilities',\n  'workers',\n].reduce((h, str) => {\n  h[str] = true\n  return h\n}, {})\n"
  },
  {
    "path": "src/2-two/preTagger/model/patterns/endsWith.js",
    "content": "//regex suffix patterns and their most common parts of speech,\n//built using wordnet, by spencer kelly.\n//this mapping shrinks-down the uglified build\nconst Adj = 'Adjective'\nconst Inf = 'Infinitive'\nconst Pres = 'PresentTense'\nconst Sing = 'Singular'\nconst Past = 'PastTense'\nconst Adverb = 'Adverb'\nconst Exp = 'Expression'\nconst Actor = 'Actor'\nconst Verb = 'Verb'\nconst Noun = 'Noun'\nconst Last = 'LastName'\n\nexport default {\n  a: [\n    [/.[aeiou]na$/, Noun, 'tuna'],\n    [/.[oau][wvl]ska$/, Last],\n    [/.[^aeiou]ica$/, Sing, 'harmonica'],\n    [/^([hyj]a+)+$/, Exp, 'haha'], //hahah\n  ],\n  c: [[/.[^aeiou]ic$/, Adj]],\n  d: [\n    //==-ed==\n    //double-consonant\n    [/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/, Past, 'popped'],\n    //double-vowel\n    [/.[aeo]{2}[bdgmnprvz]ed$/, Past, 'rammed'],\n    //-hed\n    [/.[aeiou][sg]hed$/, Past, 'gushed'],\n    //-rd\n    [/.[aeiou]red$/, Past, 'hired'],\n    [/.[aeiou]r?ried$/, Past, 'hurried'],\n    // ard\n    [/[^aeiou]ard$/, Sing, 'steward'],\n    // id\n    [/[aeiou][^aeiou]id$/, Adj, ''],\n    [/.[vrl]id$/, Adj, 'livid'],\n\n    // ===== -ed ======\n    //-led\n    [/..led$/, Past, 'hurled'],\n    //-sed\n    [/.[iao]sed$/, Past, ''],\n    [/[aeiou]n?[cs]ed$/, Past, ''],\n    //-med\n    [/[aeiou][rl]?[mnf]ed$/, Past, ''],\n    //-ked\n    [/[aeiou][ns]?c?ked$/, Past, 'bunked'],\n    //-gned\n    [/[aeiou]gned$/, Past],\n    //-ged\n    [/[aeiou][nl]?ged$/, Past],\n    //-ted\n    [/.[tdbwxyz]ed$/, Past],\n    [/[^aeiou][aeiou][tvx]ed$/, Past],\n    //-ied\n    [/.[cdflmnprstv]ied$/, Past, 'emptied'],\n  ],\n  e: [\n    [/.[lnr]ize$/, Inf, 'antagonize'],\n    [/.[^aeiou]ise$/, Inf, 'antagonise'],\n    [/.[aeiou]te$/, Inf, 'bite'],\n    [/.[^aeiou][ai]ble$/, Adj, 'fixable'],\n    [/.[^aeiou]eable$/, Adj, 'maleable'],\n    [/.[ts]ive$/, Adj, 'festive'],\n    [/[a-z]-like$/, Adj, 'woman-like'],\n  ],\n  h: [\n    [/.[^aeiouf]ish$/, Adj, 'cornish'],\n    [/.v[iy]ch$/, Last, '..ovich'],\n    [/^ug?h+$/, Exp, 'ughh'],\n    [/^uh[ -]?oh$/, Exp, 'uhoh'],\n    [/[a-z]-ish$/, Adj, 'cartoon-ish'],\n  ],\n  i: [[/.[oau][wvl]ski$/, Last, 'polish-male']],\n  k: [\n    [/^(k){2}$/, Exp, 'kkkk'], //kkkk\n  ],\n  l: [\n    [/.[gl]ial$/, Adj, 'familial'],\n    [/.[^aeiou]ful$/, Adj, 'fitful'],\n    [/.[nrtumcd]al$/, Adj, 'natal'],\n    [/.[^aeiou][ei]al$/, Adj, 'familial'],\n  ],\n  m: [\n    [/.[^aeiou]ium$/, Sing, 'magnesium'],\n    [/[^aeiou]ism$/, Sing, 'schism'],\n    [/^[hu]m+$/, Exp, 'hmm'],\n    [/^\\d+ ?[ap]m$/, 'Date', '3am'],\n  ],\n  n: [\n    [/.[lsrnpb]ian$/, Adj, 'republican'],\n    [/[^aeiou]ician$/, Actor, 'musician'],\n    [/[aeiou][ktrp]in'$/, 'Gerund', \"cookin'\"], // 'cookin', 'hootin'\n  ],\n  o: [\n    [/^no+$/, Exp, 'noooo'],\n    [/^(yo)+$/, Exp, 'yoo'],\n    [/^wo{2,}[pt]?$/, Exp, 'woop'], //woo\n  ],\n  r: [\n    [/.[bdfklmst]ler$/, 'Noun'],\n    [/[aeiou][pns]er$/, Sing],\n    [/[^i]fer$/, Inf],\n    [/.[^aeiou][ao]pher$/, Actor],\n    [/.[lk]er$/, 'Noun'],\n    [/.ier$/, 'Comparative'],\n  ],\n  t: [\n    [/.[di]est$/, 'Superlative'],\n    [/.[icldtgrv]ent$/, Adj],\n    [/[aeiou].*ist$/, Adj],\n    [/^[a-z]et$/, Verb],\n  ],\n  s: [\n    [/.[^aeiou]ises$/, Pres],\n    [/.[rln]ates$/, Pres],\n    [/.[^z]ens$/, Verb],\n    [/.[lstrn]us$/, Sing],\n    [/.[aeiou]sks$/, Pres],\n    [/.[aeiou]kes$/, Pres],\n    [/[aeiou][^aeiou]is$/, Sing],\n    [/[a-z]'s$/, Noun],\n    [/^yes+$/, Exp], //yessss\n  ],\n  v: [\n    [/.[^aeiou][ai][kln]ov$/, Last], //east-europe\n  ],\n  y: [\n    [/.[cts]hy$/, Adj],\n    [/.[st]ty$/, Adj],\n    [/.[tnl]ary$/, Adj],\n    [/.[oe]ry$/, Sing],\n    [/[rdntkbhs]ly$/, Adverb],\n    [/.(gg|bb|zz)ly$/, Adj],\n    [/...lly$/, Adverb],\n    [/.[gk]y$/, Adj],\n    [/[bszmp]{2}y$/, Adj],\n    [/.[ai]my$/, Adj],\n    [/[ea]{2}zy$/, Adj],\n    [/.[^aeiou]ity$/, Sing],\n  ],\n}\n"
  },
  {
    "path": "src/2-two/preTagger/model/patterns/neighbours.js",
    "content": "const vb = 'Verb'\nconst nn = 'Noun'\n\nexport default {\n  // looking at the previous word's tags:\n  leftTags: [\n    ['Adjective', nn],\n    ['Possessive', nn],\n    ['Determiner', nn],\n    ['Adverb', vb],\n    ['Pronoun', vb],\n    ['Value', nn],\n    ['Ordinal', nn],\n    ['Modal', vb],\n    ['Superlative', nn],\n    ['Demonym', nn],\n    ['Honorific', 'Person'], //dr. Smith\n  ],\n  // looking at the previous word:\n  leftWords: [\n    ['i', vb],\n    ['first', nn],\n    ['it', vb],\n    ['there', vb],\n    ['not', vb],\n    ['because', nn],\n    ['if', nn],\n    ['but', nn],\n    ['who', vb],\n    ['this', nn],\n    ['his', nn],\n    ['when', nn],\n    ['you', vb],\n    ['very', 'Adjective'],\n    ['old', nn],\n    ['never', vb],\n    ['before', nn],\n    ['a', nn],\n    ['the', nn],\n    ['been', vb],\n  ],\n\n  // looking at the next word's tags:\n  rightTags: [\n    ['Copula', nn],\n    ['PastTense', nn],\n    ['Conjunction', nn],\n    ['Modal', nn],\n  ],\n  // looking at the next word:\n  rightWords: [\n    ['there', vb],\n    ['me', vb],\n    ['man', 'Adjective'],\n    // ['only', vb],\n    ['him', vb],\n    ['it', vb],//relaunch it\n    ['were', nn],\n    ['took', nn],\n    ['himself', vb],\n    ['went', nn],\n    ['who', nn],\n    ['jr', 'Person'],\n  ],\n}\n"
  },
  {
    "path": "src/2-two/preTagger/model/patterns/prefixes.js",
    "content": "//prefixes give very-little away, in general.\n// more-often for scientific terms, etc.\nconst Adj = 'Adjective'\nconst Noun = 'Noun'\nconst Verb = 'Verb'\n\nexport default [\n  null,\n  null,\n  {\n    // 2-letter\n  },\n  {\n    // 3-letter\n    neo: Noun,\n    bio: Noun,\n    // pre: Noun,\n    'de-': Verb,\n    're-': Verb,\n    'un-': Verb,\n    'ex-': Noun,\n  },\n  {\n    // 4-letter\n    anti: Noun,\n    auto: Noun,\n    faux: Adj,\n    hexa: Noun,\n    kilo: Noun,\n    mono: Noun,\n    nano: Noun,\n    octa: Noun,\n    poly: Noun,\n    semi: Adj,\n    tele: Noun,\n    'pro-': Adj,\n    'mis-': Verb,\n    'dis-': Verb,\n    'pre-': Adj, //hmm\n  },\n  {\n    // 5-letter\n    anglo: Noun,\n    centi: Noun,\n    ethno: Noun,\n    ferro: Noun,\n    grand: Noun,\n    hepta: Noun,\n    hydro: Noun,\n    intro: Noun,\n    macro: Noun,\n    micro: Noun,\n    milli: Noun,\n    nitro: Noun,\n    penta: Noun,\n    quasi: Adj,\n    radio: Noun,\n    tetra: Noun,\n    'omni-': Adj,\n    'post-': Adj,\n  },\n  {\n    // 6-letter\n    pseudo: Adj,\n    'extra-': Adj,\n    'hyper-': Adj,\n    'inter-': Adj,\n    'intra-': Adj,\n    'deca-': Adj,\n    // 'trans-': Noun,\n  },\n  {\n    // 7-letter\n    electro: Noun,\n  },\n]\n"
  },
  {
    "path": "src/2-two/preTagger/model/patterns/suffixes.js",
    "content": "//just a foolish lookup of known suffixes\nconst Adj = 'Adjective'\nconst Inf = 'Infinitive'\nconst Pres = 'PresentTense'\nconst Sing = 'Singular'\nconst Past = 'PastTense'\nconst Avb = 'Adverb'\nconst Plrl = 'Plural'\nconst Actor = 'Actor'\nconst Vb = 'Verb'\nconst Noun = 'Noun'\nconst Prop = 'ProperNoun'\nconst Last = 'LastName'\nconst Modal = 'Modal'\nconst Place = 'Place'\nconst Prt = 'Participle'\n\nexport default [\n  null,\n  null,\n  {\n    //2-letter\n    ea: Sing,\n    ia: Noun,\n    ic: Adj,\n    ly: Avb,\n    \"'n\": Vb,\n    \"'t\": Vb,\n  },\n  {\n    //3-letter\n    oed: Past,\n    ued: Past,\n    xed: Past,\n    ' so': Avb,\n    \"'ll\": Modal,\n    \"'re\": 'Copula',\n    azy: Adj,\n    eer: Noun,\n    end: Vb,\n    ped: Past,\n    ffy: Adj,\n    ify: Inf,\n    ing: 'Gerund',\n    ize: Inf,\n    ibe: Inf,\n    lar: Adj,\n    mum: Adj,\n    nes: Pres,\n    nny: Adj,\n    // oid: Adj,\n    ous: Adj,\n    que: Adj,\n    ger: Noun,\n    ber: Noun,\n    rol: Sing,\n    sis: Sing,\n    ogy: Sing,\n    oid: Sing,\n    ian: Sing,\n    zes: Pres,\n    eld: Past,\n    ken: Prt, //awoken\n    ven: Prt, //woven\n    ten: Prt, //brighten\n    ect: Inf,\n    ict: Inf,\n    // ide: Inf,\n    ign: Inf,\n    oze: Inf,\n    ful: Adj,\n    bal: Adj,\n    ton: Noun,\n    pur: Place,\n  },\n  {\n    //4-letter\n    amed: Past,\n    aped: Past,\n    ched: Past,\n    lked: Past,\n    rked: Past,\n    reed: Past,\n    nded: Past,\n    mned: Adj,\n    cted: Past,\n    dged: Past,\n    ield: Sing,\n    akis: Last,\n    cede: Inf,\n    chuk: Last,\n    czyk: Last,\n    ects: Pres,\n    iend: Sing,\n    ends: Vb,\n    enko: Last,\n    ette: Sing,\n    iary: Sing,\n    wner: Sing, //owner\n    fies: Pres,\n    fore: Avb,\n    gate: Inf,\n    gone: Adj,\n    ices: Plrl,\n    ints: Plrl,\n    ruct: Inf,\n    ines: Plrl,\n    ions: Plrl,\n    ners: Plrl,\n    pers: Plrl,\n    lers: Plrl,\n    less: Adj,\n    llen: Adj,\n    made: Adj,\n    nsen: Last,\n    oses: Pres,\n    ould: Modal,\n    some: Adj,\n    sson: Last,\n    ians: Plrl,\n    // tage: Inf,\n    tion: Sing,\n    tage: Noun,\n    ique: Sing,\n    tive: Adj,\n    tors: Noun,\n    vice: Sing,\n    lier: Sing,\n    fier: Sing,\n    wned: Past,\n    gent: Sing,\n    tist: Actor,\n    pist: Actor,\n    rist: Actor,\n    mist: Actor,\n    yist: Actor,\n    vist: Actor,\n    ists: Actor,\n    lite: Sing,\n    site: Sing,\n    rite: Sing,\n    mite: Sing,\n    bite: Sing,\n    mate: Sing,\n    date: Sing,\n    ndal: Sing,\n    vent: Sing,\n    uist: Actor,\n    gist: Actor,\n    note: Sing,\n    cide: Sing, //homicide\n    ence: Sing, //absence\n    wide: Adj, //nationwide\n    // side: Adj,//alongside\n    vide: Inf, //provide\n    ract: Inf,\n    duce: Inf,\n    pose: Inf,\n    eive: Inf,\n    lyze: Inf,\n    lyse: Inf,\n    iant: Adj,\n    nary: Adj,\n    ghty: Adj,\n    uent: Adj,\n    erer: Actor, //caterer\n    bury: Place,\n    dorf: Noun,\n    esty: Noun,\n    wych: Place,\n    dale: Place,\n    folk: Place,\n    vale: Place,\n    abad: Place,\n    sham: Place,\n    wick: Place,\n    view: Place,\n  },\n  {\n    //5-letter\n    elist: Actor,\n    holic: Sing,\n    phite: Sing,\n    tized: Past,\n    urned: Past,\n    eased: Past,\n    ances: Plrl,\n    bound: Adj,\n    ettes: Plrl,\n    fully: Avb,\n    ishes: Pres,\n    ities: Plrl,\n    marek: Last,\n    nssen: Last,\n    ology: Noun,\n    osome: Sing,\n    tment: Sing,\n    ports: Plrl,\n    rough: Adj,\n    tches: Pres,\n    tieth: 'Ordinal',\n    tures: Plrl,\n    wards: Avb,\n    where: Avb,\n    archy: Noun,\n    pathy: Noun,\n    opoly: Noun,\n    embly: Noun,\n    phate: Noun,\n    ndent: Sing,\n    scent: Sing,\n    onist: Actor,\n    anist: Actor,\n    alist: Actor,\n    olist: Actor,\n    icist: Actor,\n    ounce: Inf,\n    iable: Adj,\n    borne: Adj,\n    gnant: Adj,\n    inant: Adj,\n    igent: Adj,\n    atory: Adj,\n    // ctory: Adj,\n    rient: Sing,\n    dient: Sing,\n    maker: Actor,\n    burgh: Place,\n    mouth: Place,\n    ceter: Place,\n    ville: Place,\n    hurst: Place,\n    stead: Place,\n    endon: Place,\n    brook: Place,\n    shire: Place,\n    worth: Noun,\n    field: Prop,\n    ridge: Place,\n  },\n  {\n    //6-letter\n    auskas: Last,\n    parent: Sing,\n    cedent: Sing,\n    ionary: Sing,\n    cklist: Sing,\n    brooke: Place,\n    keeper: Actor,\n    logist: Actor,\n    teenth: 'Value',\n    worker: Actor,\n    master: Actor,\n    writer: Actor,\n    brough: Place,\n    cester: Place,\n    ington: Place,\n    cliffe: Place,\n    ingham: Place,\n  },\n  {\n    //7-letter\n    chester: Place,\n    logists: Actor,\n    opoulos: Last,\n    borough: Place,\n    sdottir: Last, //swedish female\n  },\n]\n"
  },
  {
    "path": "src/2-two/preTagger/model/personWords.js",
    "content": "// extended professions, for #Actor tag\n// 'x therapist', 'y engineer'\nexport default [\n\n]"
  },
  {
    "path": "src/2-two/preTagger/model/placeWords.js",
    "content": "export default [\n  // geology\n  'atoll',\n  'basin',\n  'bay',\n  'beach',\n  'bluff',\n  'bog',\n  'camp',\n  'canyon',\n  'canyons',\n  'cape',\n  'cave',\n  'caves',\n  // 'cliff',\n  'cliffs',\n  'coast',\n  'cove',\n  'coves',\n  'crater',\n  'crossing',\n  'creek',\n  'desert',\n  'dune',\n  'dunes',\n  'downs',\n  'estates',\n  'escarpment',\n  'estuary',\n  'falls',\n  'fjord',\n  'fjords',\n  'forest',\n  'forests',\n  'glacier',\n  'gorge',\n  'gorges',\n  'grove',\n  'gulf',\n  'gully',\n  'highland',\n  'heights',\n  'hollow',\n  'hill',\n  'hills',\n  'inlet',\n  'island',\n  'islands',\n  'isthmus',\n  'junction',\n  'knoll',\n  'lagoon',\n  'lake',\n  'lakeshore',\n  'marsh',\n  'marshes',\n  'mount',\n  'mountain',\n  'mountains',\n  'narrows',\n  'peninsula',\n  'plains',\n  'plateau',\n  'pond',\n  'rapids',\n  'ravine',\n  'reef',\n  'reefs',\n  'ridge',\n  // 'river delta',\n  'river',\n  'rivers',\n  'sandhill',\n  'shoal',\n  'shore',\n  'shoreline',\n  'shores',\n  'strait',\n  'straits',\n  'springs',\n  'stream',\n  'swamp',\n  'tombolo',\n  'trail',\n  'trails',\n  'trench',\n  'valley',\n  'vallies',\n  'village',\n  'volcano',\n  'waterfall',\n  'watershed',\n  'wetland',\n  'woods',\n  'acres',\n\n  // districts\n  'burough',\n  'county',\n  'district',\n  'municipality',\n  'prefecture',\n  'province',\n  'region',\n  'reservation',\n  'state',\n  'territory',\n  'borough',\n  'metropolis',\n  'downtown',\n  'uptown',\n  'midtown',\n  'city',\n  'town',\n  'township',\n  'hamlet',\n  'country',\n  'kingdom',\n  'enclave',\n  'neighbourhood',\n  'neighborhood',\n  'kingdom',\n  'ward',\n  'zone',\n  // 'range',\n\n  //building/ complex\n  'airport',\n  'amphitheater',\n  'arch',\n  'arena',\n  'auditorium',\n  'bar',\n  'barn',\n  'basilica',\n  'battlefield',\n  'bridge',\n  'building',\n  'castle',\n  'centre',\n  'coliseum',\n  'cineplex',\n  'complex',\n  'dam',\n  'farm',\n  'field',\n  'fort',\n  'garden',\n  'gardens',\n  // 'grounds',\n  'gymnasium',\n  'hall',\n  'house',\n  'levee',\n  'library',\n  'manor',\n  'memorial',\n  'monument',\n  'museum',\n  'gallery',\n  'palace',\n  'pillar',\n  'pits',\n  // 'pit',\n  // 'place',\n  // 'point',\n  // 'room',\n  'plantation',\n  'playhouse',\n  'quarry',\n  // 'ruins',\n  'sportsfield',\n  'sportsplex',\n  'stadium',\n  // 'statue',\n  'terrace',\n  'terraces',\n  'theater',\n  'tower',\n  'park',\n  'parks',\n  'site',\n  'ranch',\n  'raceway',\n  'sportsplex',\n\n  // 'sports centre',\n  // 'sports field',\n  // 'soccer complex',\n  // 'soccer centre',\n  // 'sports complex',\n  // 'civic centre',\n\n  // roads\n  'ave',\n  'st',\n  'street',\n  'rd',\n  'road',\n  'lane',\n  'landing',\n  'crescent',\n  'cr',\n  'way',\n  'tr',\n  'terrace',\n  'avenue',\n].reduce((h, str) => {\n  h[str] = true\n  return h\n}, {})\n"
  },
  {
    "path": "src/2-two/preTagger/model/regex/regex-normal.js",
    "content": "export default [\n  //web tags\n  [/^[\\w.]+@[\\w.]+\\.[a-z]{2,3}$/, 'Email'],\n  [/^(https?:\\/\\/|www\\.)+\\w+\\.[a-z]{2,3}/, 'Url', 'http..'],\n  [/^[a-z0-9./].+\\.(com|net|gov|org|ly|edu|info|biz|dev|ru|jp|de|in|uk|br|io|ai)/, 'Url', '.com'],\n\n  // timezones\n  [/^[PMCE]ST$/, 'Timezone', 'EST'],\n\n  //names\n  [/^ma?c'[a-z]{3}/, 'LastName', \"mc'neil\"],\n  [/^o'[a-z]{3}/, 'LastName', \"o'connor\"],\n  [/^ma?cd[aeiou][a-z]{3}/, 'LastName', 'mcdonald'],\n\n  //slang things\n  [/^(lol)+[sz]$/, 'Expression', 'lol'],\n  [/^wo{2,}a*h?$/, 'Expression', 'wooah'],\n  [/^(hee?){2,}h?$/, 'Expression', 'hehe'],\n  [/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/, 'Verb', 'un-vite'],\n\n  // m/h\n  [/^(m|k|cm|km)\\/(s|h|hr)$/, 'Unit', '5 k/m'],\n  // μg/g\n  [/^(ug|ng|mg)\\/(l|m3|ft3)$/, 'Unit', 'ug/L'],\n\n  // love/hate\n  [/[^:/]\\/\\p{Letter}/u, 'SlashedTerm', 'love/hate'],\n]\n"
  },
  {
    "path": "src/2-two/preTagger/model/regex/regex-numbers.js",
    "content": "export default [\n  [/^@1?[0-9](am|pm)$/i, 'Time', '3pm'],\n  [/^@1?[0-9]:[0-9]{2}(am|pm)?$/i, 'Time', '3:30pm'],\n  [/^'[0-9]{2}$/, 'Year'],\n  // times\n  [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time', '3:12:31'],\n  [/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i, 'Time', '1:12pm'],\n  [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i, 'Time', '1:12:31pm'], //can remove?\n\n  // iso-dates\n  [/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i, 'Date', 'iso-date'],\n  [/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date', 'iso-dash'],\n  [/^[0-9]{1,4}\\/[0-9]{1,2}\\/([0-9]{4}|[0-9]{2})$/, 'Date', 'iso-slash'],\n  [/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/, 'Date', 'iso-dot'],\n  [/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i, 'Date', '12-dec-2019'],\n\n  // timezones\n  [/^utc ?[+-]?[0-9]+$/, 'Timezone', 'utc-9'],\n  [/^(gmt|utc)[+-][0-9]{1,2}$/i, 'Timezone', 'gmt-3'],\n\n  //phone numbers\n  [/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber', '421-0029'],\n  [/^(\\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber', '1-800-'],\n\n  //money\n  //like $5.30\n  [/^[-+]?\\p{Currency_Symbol}[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?([kmb]|bn)?\\+?$/u, ['Money', 'Value'], '$5.30'],\n  //like 5.30$\n  [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\p{Currency_Symbol}\\+?$/u, ['Money', 'Value'], '5.30£'],\n  //like\n  [/^[-+]?[$£]?[0-9]([0-9,.])+(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value'], '$400usd'],\n\n  //numbers\n  // 50 | -50 | 3.23  | 5,999.0  | 10+\n  [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\+?$/, ['Cardinal', 'NumericValue'], '5,999'],\n  [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?(st|nd|rd|r?th)$/, ['Ordinal', 'NumericValue'], '53rd'],\n  // .73th\n  [/^\\.[0-9]+\\+?$/, ['Cardinal', 'NumericValue'], '.73th'],\n  //percent\n  [/^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?%\\+?$/, ['Percent', 'Cardinal', 'NumericValue'], '-4%'],\n  [/^\\.[0-9]+%$/, ['Percent', 'Cardinal', 'NumericValue'], '.3%'],\n  //fraction\n  [/^[0-9]{1,4}\\/[0-9]{1,4}(st|nd|rd|th)?s?$/, ['Fraction', 'NumericValue'], '2/3rds'],\n  //range\n  [/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/, ['Value', 'NumberRange'], '3-4'],\n  //time-range\n  [/^[0-9]{1,2}(:[0-9][0-9])?(am|pm)? ?[-–—] ?[0-9]{1,2}(:[0-9][0-9])?(am|pm)$/, ['Time', 'NumberRange'], '3-4pm'],\n  //number with unit\n  [/^[0-9.]+([a-z°]{1,4})$/, 'NumericValue', '9km'],\n]\n"
  },
  {
    "path": "src/2-two/preTagger/model/regex/regex-text.js",
    "content": "export default [\n  // #coolguy\n  [/^#[\\p{Number}_]*\\p{Letter}/u, 'HashTag'], // can't be all numbers\n\n  // @spencermountain\n  [/^@\\w{2,}$/, 'AtMention'],\n\n  // period-ones acronyms - f.b.i.\n  [/^([A-Z]\\.){2}[A-Z]?/i, ['Acronym', 'Noun'], 'F.B.I'], //ascii-only\n\n  // ending-apostrophes\n  [/.{3}[lkmnp]in['‘’‛‵′`´]$/, 'Gerund', \"chillin'\"],\n  [/.{4}s['‘’‛‵′`´]$/, 'Possessive', \"flanders'\"],\n\n  //from https://www.regextester.com/106421\n  // [/^([\\u00a9\\u00ae\\u2319-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/, 'Emoji', 'emoji-range']\n  // unicode character range\n  [/^[\\p{Emoji_Presentation}\\p{Extended_Pictographic}]/u, 'Emoji', 'emoji-class'],\n]\n"
  },
  {
    "path": "src/2-two/preTagger/plugin.js",
    "content": "import model from './model/index.js'\nimport methods from './methods/index.js'\nimport compute from './compute/index.js'\nimport tags from './tagSet/index.js'\n\nexport default {\n  compute,\n  methods,\n  model,\n  tags,\n  hooks: ['preTagger'],\n}\n"
  },
  {
    "path": "src/2-two/preTagger/tagSet/dates.js",
    "content": "export default {\n  Date: {\n    not: ['Verb', 'Adverb', 'Adjective'],\n  },\n  Month: {\n    is: 'Date',\n    also: ['Noun'],\n    not: ['Year', 'WeekDay', 'Time'],\n  },\n  WeekDay: {\n    is: 'Date',\n    also: ['Noun'],\n  },\n  Year: {\n    is: 'Date',\n    not: ['RomanNumeral'],\n  },\n  FinancialQuarter: {\n    is: 'Date',\n    not: 'Fraction',\n  },\n  // 'easter'\n  Holiday: {\n    is: 'Date',\n    also: ['Noun'],\n  },\n  // 'summer'\n  Season: {\n    is: 'Date',\n  },\n  Timezone: {\n    is: 'Date',\n    also: ['Noun'],\n    not: ['ProperNoun'],\n  },\n  Time: {\n    is: 'Date',\n    not: ['AtMention'],\n  },\n  // 'months'\n  Duration: {\n    is: 'Date',\n    also: ['Noun'],\n  },\n}\n"
  },
  {
    "path": "src/2-two/preTagger/tagSet/index.js",
    "content": "import nouns from './nouns.js'\nimport verbs from './verbs.js'\nimport values from './values.js'\nimport dates from './dates.js'\nimport misc from './misc.js'\n\nconst allTags = Object.assign({}, nouns, verbs, values, dates, misc)\n// const tagSet = compute(allTags)\nexport default allTags\n"
  },
  {
    "path": "src/2-two/preTagger/tagSet/misc.js",
    "content": "const anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value', 'QuestionWord']\n\nexport default {\n  Adjective: {\n    not: ['Noun', 'Verb', 'Adverb', 'Value'],\n  },\n  Comparable: {\n    is: 'Adjective',\n  },\n  Comparative: {\n    is: 'Adjective',\n  },\n  Superlative: {\n    is: 'Adjective',\n    not: ['Comparative'],\n  },\n  NumberRange: {},\n  Adverb: {\n    not: ['Noun', 'Verb', 'Adjective', 'Value'],\n  },\n\n  Determiner: {\n    not: ['Noun', 'Verb', 'Adjective', 'Adverb', 'QuestionWord', 'Conjunction'], //allow 'a' to be a Determiner/Value\n  },\n  Conjunction: {\n    not: anything,\n  },\n  Preposition: {\n    not: ['Noun', 'Verb', 'Adjective', 'Adverb', 'QuestionWord', 'Determiner'],\n  },\n  QuestionWord: {\n    not: ['Determiner'],\n  },\n  Currency: {\n    is: 'Noun',\n  },\n  Expression: {\n    not: ['Noun', 'Adjective', 'Verb', 'Adverb'],\n  },\n  Abbreviation: {},\n  Url: {\n    not: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email', 'SlashedTerm'],\n  },\n  PhoneNumber: {\n    not: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'],\n  },\n  HashTag: {},\n  AtMention: {\n    is: 'Noun',\n    not: ['HashTag', 'Email'],\n  },\n  Emoji: {\n    not: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n  },\n  Emoticon: {\n    not: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'SlashedTerm'],\n  },\n  SlashedTerm: {\n    not: ['Emoticon', 'Url', 'Value']\n  },\n  Email: {\n    not: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n  },\n  Acronym: {\n    not: ['Plural', 'RomanNumeral', 'Pronoun', 'Date'],\n  },\n  Negative: {\n    not: ['Noun', 'Adjective', 'Value', 'Expression'],\n  },\n  Condition: {\n    not: ['Verb', 'Adjective', 'Noun', 'Value'],\n  },\n  // existential 'there'\n  There: {\n    not: ['Verb', 'Adjective', 'Noun', 'Value', 'Conjunction', 'Preposition'],\n  },\n  // 'co-wrote'\n  Prefix: {\n    not: ['Abbreviation', 'Acronym', 'ProperNoun'],\n  },\n  // hard-nosed, bone-headed\n  Hyphenated: {},\n}\n"
  },
  {
    "path": "src/2-two/preTagger/tagSet/nouns.js",
    "content": "const entity = ['Person', 'Place', 'Organization']\n\nexport default {\n  Noun: {\n    not: ['Verb', 'Adjective', 'Adverb', 'Value', 'Determiner'],\n  },\n  Singular: {\n    is: 'Noun',\n    not: ['Plural', 'Uncountable'],\n  },\n  // 'Canada'\n  ProperNoun: {\n    is: 'Noun',\n  },\n  Person: {\n    is: 'Singular',\n    also: ['ProperNoun'],\n    not: ['Place', 'Organization', 'Date'],\n  },\n  FirstName: {\n    is: 'Person',\n  },\n  MaleName: {\n    is: 'FirstName',\n    not: ['FemaleName', 'LastName'],\n  },\n  FemaleName: {\n    is: 'FirstName',\n    not: ['MaleName', 'LastName'],\n  },\n  LastName: {\n    is: 'Person',\n    not: ['FirstName'],\n  },\n  // 'dr.'\n  Honorific: {\n    is: 'Person',\n    not: ['FirstName', 'LastName', 'Value'],\n  },\n  Place: {\n    is: 'Singular',\n    not: ['Person', 'Organization'],\n  },\n  Country: {\n    is: 'Place',\n    also: ['ProperNoun'],\n    not: ['City'],\n  },\n  City: {\n    is: 'Place',\n    also: ['ProperNoun'],\n    not: ['Country'],\n  },\n  // 'california'\n  Region: {\n    is: 'Place',\n    also: ['ProperNoun'],\n  },\n  Address: {\n    // is: 'Place',\n  },\n  Organization: {\n    is: 'ProperNoun',\n    not: ['Person', 'Place'],\n  },\n  SportsTeam: {\n    is: 'Organization',\n  },\n  School: {\n    is: 'Organization',\n  },\n  Company: {\n    is: 'Organization',\n  },\n  Plural: {\n    is: 'Noun',\n    not: ['Singular', 'Uncountable'],\n  },\n  // 'gravity'\n  Uncountable: {\n    is: 'Noun',\n  },\n  // 'it'\n  Pronoun: {\n    is: 'Noun',\n    not: entity,\n  },\n  // 'swimmer'\n  Actor: {\n    is: 'Noun',\n    not: ['Place', 'Organization'],\n  },\n  // walking\n  Activity: {\n    is: 'Noun',\n    not: ['Person', 'Place'],\n  },\n  // kilometres\n  Unit: {\n    is: 'Noun',\n    not: entity,\n  },\n  // canadian\n  Demonym: {\n    is: 'Noun',\n    also: ['ProperNoun'],\n    not: entity,\n  },\n  // [spencer's] hat\n  Possessive: {\n    is: 'Noun',\n  },\n  // 'yourself'\n  Reflexive: {\n    is: 'Pronoun',\n  },\n}\n"
  },
  {
    "path": "src/2-two/preTagger/tagSet/values.js",
    "content": "export default {\n  Value: {\n    not: ['Verb', 'Adjective', 'Adverb'],\n  },\n  Ordinal: {\n    is: 'Value',\n    not: ['Cardinal'],\n  },\n  Cardinal: {\n    is: 'Value',\n    not: ['Ordinal'],\n  },\n  Fraction: {\n    is: 'Value',\n    not: ['Noun'],\n  },\n  Multiple: {\n    is: 'TextValue',\n  },\n  RomanNumeral: {\n    is: 'Cardinal',\n    not: ['TextValue'],\n  },\n  TextValue: {\n    is: 'Value',\n    not: ['NumericValue'],\n  },\n  NumericValue: {\n    is: 'Value',\n    not: ['TextValue'],\n  },\n  Money: {\n    is: 'Cardinal',\n  },\n  Percent: {\n    is: 'Value',\n  },\n}\n"
  },
  {
    "path": "src/2-two/preTagger/tagSet/verbs.js",
    "content": "export default {\n  Verb: {\n    not: ['Noun', 'Adjective', 'Adverb', 'Value', 'Expression'],\n  },\n  // 'he [walks]'\n  PresentTense: {\n    is: 'Verb',\n    not: ['PastTense', 'FutureTense'],\n  },\n  // 'will [walk]'\n  Infinitive: {\n    is: 'PresentTense',\n    not: ['Gerund'],\n  },\n  // '[walk] now!'\n  Imperative: {\n    is: 'Verb',\n    not: ['PastTense', 'Gerund', 'Copula'],\n  },\n  // walking\n  Gerund: {\n    is: 'PresentTense',\n    not: ['Copula'],\n  },\n  // walked\n  PastTense: {\n    is: 'Verb',\n    not: ['PresentTense', 'Gerund', 'FutureTense'],\n  },\n  // will walk\n  FutureTense: {\n    is: 'Verb',\n    not: ['PresentTense', 'PastTense'],\n  },\n  // is/was\n  Copula: {\n    is: 'Verb',\n  },\n  // '[could] walk'\n  Modal: {\n    is: 'Verb',\n    not: ['Infinitive'],\n  },\n  // 'awaken'\n  Participle: {\n    is: 'PastTense',\n  },\n  // '[will have had] walked'\n  Auxiliary: {\n    is: 'Verb',\n    not: ['PastTense', 'PresentTense', 'Gerund', 'Conjunction'],\n  },\n  // 'walk out'\n  PhrasalVerb: {\n    is: 'Verb',\n  },\n  // 'walk [out]'\n  Particle: {\n    is: 'PhrasalVerb',\n    not: ['PastTense', 'PresentTense', 'Copula', 'Gerund'],\n  },\n  // 'walked by'\n  Passive: {\n    is: 'Verb',\n  },\n}\n"
  },
  {
    "path": "src/2-two/swap/api/swap-verb.js",
    "content": "const matchVerb = function (m, lemma) {\n  const conjugate = m.methods.two.transform.verb.conjugate\n  const all = conjugate(lemma, m.model)\n  if (m.has('#Gerund')) {\n    return all.Gerund\n  }\n  if (m.has('#PastTense')) {\n    return all.PastTense\n  }\n  if (m.has('#PresentTense')) {\n    return all.PresentTense\n  }\n  if (m.has('#Gerund')) {\n    return all.Gerund\n  }\n  return lemma\n}\n\nconst swapVerb = function (vb, lemma) {\n  let str = lemma\n  vb.forEach(m => {\n    if (!m.has('#Infinitive')) {\n      str = matchVerb(m, lemma)\n    }\n    m.replaceWith(str)\n  })\n  return vb\n}\nexport default swapVerb"
  },
  {
    "path": "src/2-two/swap/api/swap.js",
    "content": "import swapVerb from './swap-verb.js'\n\nconst swapNoun = function (m, lemma) {\n  let str = lemma\n  if (m.has('#Plural')) {\n    const toPlural = m.methods.two.transform.noun.toPlural\n    str = toPlural(lemma, m.model)\n  }\n  m.replaceWith(str, { possessives: true })\n}\n\nconst swapAdverb = function (m, lemma) {\n  const { toAdverb } = m.methods.two.transform.adjective\n  const str = lemma\n  const adv = toAdverb(str)\n  if (adv) {\n    m.replaceWith(adv)\n  }\n}\nconst swapAdjective = function (m, lemma) {\n  const { toComparative, toSuperlative } = m.methods.two.transform.adjective\n  let str = lemma\n  if (m.has('#Comparative')) {\n    str = toComparative(str, m.model)\n  } else if (m.has('#Superlative')) {\n    str = toSuperlative(str, m.model)\n  }\n  if (str) {\n    m.replaceWith(str)\n  }\n}\n\nconst swap = function (from, to, tag) {\n  let reg = from.split(/ /g).map(str => str.toLowerCase().trim())\n  reg = reg.filter(str => str)\n  reg = reg.map(str => `{${str}}`).join(' ')\n  let m = this.match(reg)\n  // guard against some homonyms\n  if (tag) {\n    m = m.if(tag)\n  }\n  if (m.has('#Verb')) {\n    return swapVerb(m, to)\n  }\n  if (m.has('#Noun')) {\n    return swapNoun(m, to)\n  }\n  if (m.has('#Adverb')) {\n    return swapAdverb(m, to)\n  }\n  if (m.has('#Adjective')) {\n    return swapAdjective(m, to)\n  }\n  return this\n}\nexport default swap"
  },
  {
    "path": "src/2-two/swap/plugin.js",
    "content": "import swap from './api/swap.js'\n\nconst api = function (View) {\n  View.prototype.swap = swap\n}\n\nexport default {\n  api\n}"
  },
  {
    "path": "src/3-three/adjectives/plugin.js",
    "content": "\n// guard against superlative+comparative forms\nconst toRoot = function (adj) {\n  const { fromComparative, fromSuperlative } = adj.methods.two.transform.adjective\n  const str = adj.text('normal')\n  if (adj.has('#Comparative')) {\n    return fromComparative(str, adj.model)\n  }\n  if (adj.has('#Superlative')) {\n    return fromSuperlative(str, adj.model)\n  }\n  return str\n}\n\nconst api = function (View) {\n\n  class Adjectives extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Adjectives'\n    }\n    json(opts = {}) {\n      const { toAdverb, toNoun, toSuperlative, toComparative } = this.methods.two.transform.adjective\n      opts.normal = true\n      return this.map(m => {\n        const json = m.toView().json(opts)[0] || {}\n        const str = toRoot(m)\n        json.adjective = {\n          adverb: toAdverb(str, this.model),\n          noun: toNoun(str, this.model),\n          superlative: toSuperlative(str, this.model),\n          comparative: toComparative(str, this.model),\n        }\n        return json\n      }, [])\n    }\n    adverbs() {\n      return this.before('#Adverb+$').concat(this.after('^#Adverb+'))\n    }\n    conjugate(n) {\n      const { toComparative, toSuperlative, toNoun, toAdverb } = this.methods.two.transform.adjective\n      return this.getNth(n).map(adj => {\n        const root = toRoot(adj)\n        return {\n          Adjective: root,\n          Comparative: toComparative(root, this.model),\n          Superlative: toSuperlative(root, this.model),\n          Noun: toNoun(root, this.model),\n          Adverb: toAdverb(root, this.model),\n        }\n      }, [])\n    }\n    toComparative(n) {\n      const { toComparative } = this.methods.two.transform.adjective\n      return this.getNth(n).map(adj => {\n        const root = toRoot(adj)\n        const str = toComparative(root, this.model)\n        return adj.replaceWith(str)\n      })\n    }\n    toSuperlative(n) {\n      const { toSuperlative } = this.methods.two.transform.adjective\n      return this.getNth(n).map(adj => {\n        const root = toRoot(adj)\n        const str = toSuperlative(root, this.model)\n        return adj.replaceWith(str)\n      })\n    }\n    toAdverb(n) {\n      const { toAdverb } = this.methods.two.transform.adjective\n      return this.getNth(n).map(adj => {\n        const root = toRoot(adj)\n        const str = toAdverb(root, this.model)\n        return adj.replaceWith(str)\n      })\n    }\n    toNoun(n) {\n      const { toNoun } = this.methods.two.transform.adjective\n      return this.getNth(n).map(adj => {\n        const root = toRoot(adj)\n        const str = toNoun(root, this.model)\n        return adj.replaceWith(str)\n      })\n    }\n  }\n\n  View.prototype.adjectives = function (n) {\n    let m = this.match('#Adjective')\n    m = m.getNth(n)\n    return new Adjectives(m.document, m.pointer)\n  }\n  View.prototype.superlatives = function (n) {\n    let m = this.match('#Superlative')\n    m = m.getNth(n)\n    return new Adjectives(m.document, m.pointer)\n  }\n  View.prototype.comparatives = function (n) {\n    let m = this.match('#Comparative')\n    m = m.getNth(n)\n    return new Adjectives(m.document, m.pointer)\n  }\n}\nexport default { api }\n"
  },
  {
    "path": "src/3-three/adverbs/plugin.js",
    "content": "// guard against superlative+comparative forms\nconst toRoot = function (adj) {\n  const str = adj.compute('root').text('root')\n  return str\n}\n\n// return the nth elem of a doc\nconst api = function (View) {\n\n  class Adverbs extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Adverbs'\n    }\n    conjugate(n) {\n      return this.getNth(n).map(adv => {\n        const adj = toRoot(adv)\n        return {\n          Adverb: adv.text('normal'),\n          Adjective: adj,\n        }\n      }, [])\n    }\n    json(opts = {}) {\n      const fromAdverb = this.methods.two.transform.adjective.fromAdverb\n      opts.normal = true\n      return this.map(m => {\n        const json = m.toView().json(opts)[0] || {}\n        json.adverb = {\n          adjective: fromAdverb(json.normal)\n        }\n        return json\n      }, [])\n    }\n  }\n\n  View.prototype.adverbs = function (n) {\n    let m = this.match('#Adverb')\n    m = m.getNth(n)\n    return new Adverbs(m.document, m.pointer)\n  }\n}\nexport default { api }\n"
  },
  {
    "path": "src/3-three/chunker/api/api.js",
    "content": "import clauses from './clauses.js'\nimport getChunks from './chunks.js'\n\nconst api = function (View) {\n\n  class Chunks extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Chunks'\n    }\n    isVerb() {\n      return this.filter(c => c.has('<Verb>'))\n    }\n    isNoun() {\n      return this.filter(c => c.has('<Noun>'))\n    }\n    isAdjective() {\n      return this.filter(c => c.has('<Adjective>'))\n    }\n    isPivot() {\n      return this.filter(c => c.has('<Pivot>'))\n    }\n    // chunk-friendly debug\n    debug() {\n      this.toView().debug('chunks')\n      return this\n    }\n    // overloaded - keep Sentences class\n    update(pointer) {\n      const m = new Chunks(this.document, pointer)\n      m._cache = this._cache // share this full thing\n      return m\n    }\n  }\n\n  View.prototype.chunks = function (n) {\n    let m = getChunks(this)\n    m = m.getNth(n)\n    return new Chunks(this.document, m.pointer)\n  }\n  View.prototype.clauses = clauses\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/chunker/api/chunks.js",
    "content": "// split terms into Nounphrase, verbphrase, etc groups\nconst chunks = function (doc) {\n  const all = []\n  let lastOne = null\n  // first, split by comma, etc\n  const m = doc.clauses()\n  // loop through each clause\n  m.docs.forEach(terms => {\n    terms.forEach(term => {\n      // new chunk\n      if (!term.chunk || term.chunk !== lastOne) {\n        lastOne = term.chunk\n        all.push([term.index[0], term.index[1], term.index[1] + 1])\n      } else {\n        // keep the chunk going\n        all[all.length - 1][2] = term.index[1] + 1\n      }\n    })\n    lastOne = null\n  })\n  const parts = doc.update(all)\n  return parts\n}\nexport default chunks\n"
  },
  {
    "path": "src/3-three/chunker/api/clauses.js",
    "content": "const byComma = function (doc) {\n  let commas = doc.match('@hasComma')\n  // remove any non-clause uses\n  commas = commas.filter(m => {\n    // don't split the first word\n    if (m.growLeft('.').wordCount() === 1) {\n      return false\n    }\n    // don't split the last word\n    if (m.growRight('. .').wordCount() === 1) {\n      return false\n    }\n    let more = m.grow('.') // grow by 1 word in either direction\n    more = more.ifNo('@hasComma @hasComma') //fun, cool...\n    more = more.ifNo('@hasComma (and|or) .') //cool, and fun\n    more = more.ifNo('(#City && @hasComma) #Country') //'toronto, canada'\n    more = more.ifNo('(#WeekDay && @hasComma) #Date') //'tuesday, march 2nd'\n    more = more.ifNo('(#Date+ && @hasComma) #Value') //'july 6, 1992'\n    more = more.ifNo('(#Adjective && @hasComma) #Adjective') //nice, pretty\n    // more = more.ifNo('@hasComma (too|also)$') //at end of sentence\n    return more.found\n  })\n  return doc.splitAfter(commas)\n}\n\n// should we split-out a clause (in brackets)?\nconst splitParentheses = function (doc) {\n  let matches = doc.parentheses()\n  matches = matches.filter(m => {\n    return m.wordCount() >= 3 && m.has('#Verb') && m.has('#Noun')\n  })\n  return doc.splitOn(matches)\n}\n\n// split-out a long quotion, but not 'inline quotes'.\nconst splitQuotes = function (doc) {\n  let matches = doc.quotations()\n  matches = matches.filter(m => {\n    return m.wordCount() >= 3 && m.has('#Verb') && m.has('#Noun')\n  })\n  return doc.splitOn(matches)\n}\n\nconst clauses = function (n) {\n  let found = this\n\n  found = splitParentheses(found)\n  found = splitQuotes(found)\n\n  found = byComma(found)\n\n  found = found.splitAfter('(@hasEllipses|@hasSemicolon|@hasDash|@hasColon)')\n\n  // i said\n  found = found.splitAfter('^#Pronoun (said|says)')\n  // ... said John.\n  found = found.splitBefore('(said|says) #ProperNoun$')\n\n  // ... if it was\n  found = found.splitBefore('. . if .{4}')\n\n  // various conjunctions\n  found = found.splitBefore('and while')\n  found = found.splitBefore('now that')\n  found = found.splitBefore('ever since')\n  found = found.splitBefore('(supposing|although)')\n  found = found.splitBefore('even (while|if|though)')\n  found = found.splitBefore('(whereas|whose)')\n  // found = found.splitBefore('as (far|long|much|soon) as')\n  found = found.splitBefore('as (though|if)')\n  found = found.splitBefore('(til|until)')\n\n  // it is cool but it is ..\n  const m = found.match('#Verb .* [but] .* #Verb', 0)\n  if (m.found) {\n    found = found.splitBefore(m)\n  }\n  // it is cool and it is ..\n  // let conjunctions = found.if('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction')\n  // found = found.splitBefore(conjunctions)\n\n  // if it is this then that\n  const condition = found.if('if .{2,9} then .').match('then')\n  found = found.splitBefore(condition)\n\n  // // misc clause partitions\n  // found = found.splitBefore('as well as .')\n  // found = found.splitBefore('such as .')\n  // found = found.splitBefore('in addition to .')\n\n  // // semicolons, dashes\n  // found = found.splitAfter('@hasSemicolon')\n  // found = found.splitAfter('@hasDash')\n\n  // //\n  // found = found.splitBefore('which (were|are|will)')\n\n  // // he said [...]\n  // found = found.splitAfter('#Noun (said|say|says)')\n\n  // passive voice verb - '.. which was robbed is empty'\n  // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?')\n  // if (passive.found) {\n  //   found = found.splitAfter(passive)\n  // }\n  // //which the boy robbed\n  // passive = found.match('#Noun (which|that) the? #Noun+ #Adverb? #PastTense #Adverb?')\n  // if (passive.found) {\n  //   found = found.splitAfter(passive)\n  // }\n  // does there appear to have relative/subordinate clause still?\n  // let tooLong = found.filter(d => d.wordCount() > 5 && d.match('#Verb+').length >= 2)\n  // if (tooLong.found) {\n  //   // and after the ..\n  //   found = found.splitBefore('#Conjunction #Preposition')\n\n  //   // let m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+')\n  //   // found = found.splitOn(m.eq(0))\n  // }\n  if (typeof n === 'number') {\n    found = found.get(n)\n  }\n  return found\n}\n\nexport default clauses\n"
  },
  {
    "path": "src/3-three/chunker/compute/01-easy.js",
    "content": "const byWord = {\n  this: 'Noun',\n  then: 'Pivot'\n}\n\n// simply chunk Nouns as <Noun>\nconst easyMode = function (document) {\n  for (let n = 0; n < document.length; n += 1) {\n    for (let t = 0; t < document[n].length; t += 1) {\n      const term = document[n][t]\n\n      if (byWord.hasOwnProperty(term.normal) === true) {\n        term.chunk = byWord[term.normal]\n        continue\n      }\n      if (term.tags.has('Verb')) {\n        term.chunk = 'Verb'\n        continue\n      }\n      if (term.tags.has('Noun') || term.tags.has('Determiner')) {\n        term.chunk = 'Noun'\n        continue\n      }\n      // 100 cats\n      if (term.tags.has('Value')) {\n        term.chunk = 'Noun'\n        continue\n      }\n      //\n      if (term.tags.has('QuestionWord')) {\n        term.chunk = 'Pivot'\n        continue\n      }\n\n    }\n  }\n}\nexport default easyMode\n"
  },
  {
    "path": "src/3-three/chunker/compute/02-neighbours.js",
    "content": "// simply chunk Nouns as <Noun>\nconst byNeighbour = function (document) {\n  for (let n = 0; n < document.length; n += 1) {\n    for (let t = 0; t < document[n].length; t += 1) {\n      const term = document[n][t]\n      if (term.chunk) {\n        continue\n      }\n      // based on next-term\n      const onRight = document[n][t + 1]\n      // based on last-term\n      const onLeft = document[n][t - 1]\n\n      //'is cool' vs 'the cool dog'\n      if (term.tags.has('Adjective')) {\n        // 'is cool'\n        if (onLeft && onLeft.tags.has('Copula')) {\n          term.chunk = 'Adjective'\n          continue\n        }\n        // 'the cool'\n        if (onLeft && onLeft.tags.has('Determiner')) {\n          term.chunk = 'Noun'\n          continue\n        }\n        // 'cool dog'\n        if (onRight && onRight.tags.has('Noun')) {\n          term.chunk = 'Noun'\n          continue\n        }\n        continue\n      }\n      // 'really swimming' vs 'really cool'\n      if (term.tags.has('Adverb') || term.tags.has('Negative')) {\n        if (onLeft && onLeft.tags.has('Adjective')) {\n          term.chunk = 'Adjective'\n          continue\n        }\n        if (onLeft && onLeft.tags.has('Verb')) {\n          term.chunk = 'Verb'\n          continue\n        }\n\n        if (onRight && onRight.tags.has('Adjective')) {\n          term.chunk = 'Adjective'\n          continue\n        }\n        if (onRight && onRight.tags.has('Verb')) {\n          term.chunk = 'Verb'\n          continue\n        }\n      }\n    }\n  }\n}\nexport default byNeighbour\n"
  },
  {
    "path": "src/3-three/chunker/compute/03-matcher.js",
    "content": "const rules = [\n  // === Conjunction ===\n  // that the houses\n  { match: '[that] #Determiner #Noun', group: 0, chunk: 'Pivot' },\n  // estimated that\n  { match: '#PastTense [that]', group: 0, chunk: 'Pivot' },\n  // so the\n  { match: '[so] #Determiner', group: 0, chunk: 'Pivot' },\n\n  // === Adjective ===\n  // was really nice\n  { match: '#Copula #Adverb+? [#Adjective]', group: 0, chunk: 'Adjective' },\n  // was nice\n  // { match: '#Copula [#Adjective]', group: 0, chunk: 'Adjective' },\n  // nice and cool\n  { match: '#Adjective and #Adjective', chunk: 'Adjective' },\n  // really nice\n  // { match: '#Adverb+ #Adjective', chunk: 'Adjective' },\n\n  // === Verb ===\n  // quickly and suddenly run\n  { match: '#Adverb+ and #Adverb #Verb', chunk: 'Verb' },\n  // sitting near\n  { match: '#Gerund #Adjective$', chunk: 'Verb' },\n  // going to walk\n  { match: '#Gerund to #Verb', chunk: 'Verb' },\n  // come and have a drink\n  { match: '#PresentTense and #PresentTense', chunk: 'Verb' },\n  // really not\n  { match: '#Adverb #Negative', chunk: 'Verb' },\n  // want to see\n  { match: '(want|wants|wanted) to #Infinitive', chunk: 'Verb' },\n  // walk ourselves\n  { match: '#Verb #Reflexive', chunk: 'Verb' },\n  // tell him the story\n  // { match: '#PresentTense [#Pronoun] #Determiner', group: 0, chunk: 'Verb' },\n  // tries to walk\n  { match: '#Verb [to] #Adverb? #Infinitive', group: 0, chunk: 'Verb' },\n  // upon seeing\n  { match: '[#Preposition] #Gerund', group: 0, chunk: 'Verb' },\n  // ensure that\n  { match: '#Infinitive [that] <Noun>', group: 0, chunk: 'Verb' },\n\n  // === Noun ===\n  // the brown fox\n  // { match: '#Determiner #Adjective+ #Noun', chunk: 'Noun' },\n  // the fox\n  // { match: '(the|this) <Noun>', chunk: 'Noun' },\n  // brown fox\n  // { match: '#Adjective+ <Noun>', chunk: 'Noun' },\n  // --- of ---\n  // son of a gun\n  { match: '#Noun of #Determiner? #Noun', chunk: 'Noun' },\n  // 3 beautiful women\n  { match: '#Value+ #Adverb? #Adjective', chunk: 'Noun' },\n  // the last russian tsar\n  { match: 'the [#Adjective] #Noun', chunk: 'Noun' },\n  // breakfast in bed\n  { match: '#Singular in #Determiner? #Singular', chunk: 'Noun' },\n  // Some citizens in this Canadian capital\n  { match: '#Plural [in] #Determiner? #Noun', group: 0, chunk: 'Pivot' },\n  // indoor and outdoor seating\n  { match: '#Noun and #Determiner? #Noun', notIf: '(#Possessive|#Pronoun)', chunk: 'Noun' },\n  //  boys and girls\n  // { match: '#Plural and #Determiner? #Plural', chunk: 'Noun' },\n  // tomatoes and cheese\n  // { match: '#Noun and #Determiner? #Noun', notIf: '#Pronoun', chunk: 'Noun' },\n  // that is why\n  // { match: '[that] (is|was)', group: 0, chunk: 'Noun' },\n]\n\nlet net = null\nconst matcher = function (view, _, world) {\n  const { methods } = world\n  net = net || methods.one.buildNet(rules, world)\n  view.sweep(net)\n}\nexport default matcher\n"
  },
  {
    "path": "src/3-three/chunker/compute/04-fallback.js",
    "content": "const setChunk = function (term, chunk) {\n  const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env\n  if (env.DEBUG_CHUNKS) {\n    const str = (term.normal + \"'\").padEnd(8)\n    console.log(`  | '${str}  →  \\x1b[34m${chunk.padEnd(12)}\\x1b[0m \\x1b[2m -fallback- \\x1b[0m`) // eslint-disable-line\n  }\n  term.chunk = chunk\n}\n\n// ensure everything has a chunk\nconst fallback = function (document) {\n  for (let n = 0; n < document.length; n += 1) {\n    for (let t = 0; t < document[n].length; t += 1) {\n      const term = document[n][t]\n      if (term.chunk === undefined) {\n        // conjunctions stand alone\n        if (term.tags.has('Conjunction')) {\n          setChunk(term, 'Pivot')\n        } else if (term.tags.has('Preposition')) {\n          setChunk(term, 'Pivot')\n        } else if (term.tags.has('Adverb')) {\n          setChunk(term, 'Verb')\n        }\n        // just take the chunk on the right?\n        // else if (document[n][t + 1] && document[n][t + 1].chunk) {\n        //   setChunk(term, document[n][t + 1].chunk)\n        // }\n        // // or take the chunk on the left\n        // else if (document[n][t - 1] && document[n][t - 1].chunk) {\n        //   setChunk(term, document[n][t - 1].chunk)\n        else {\n          //  ¯\\_(ツ)_/¯\n          term.chunk = 'Noun'\n        }\n      }\n    }\n  }\n}\nexport default fallback\n"
  },
  {
    "path": "src/3-three/chunker/compute/05-fixUp.js",
    "content": "const fixUp = function (docs) {\n  const byChunk = []\n  let current = null\n  docs.forEach(terms => {\n    // ensure an adjective chunk is preceded by a copula\n    for (let i = 0; i < terms.length; i += 1) {\n      const term = terms[i]\n      if (current && term.chunk === current) {\n        byChunk[byChunk.length - 1].terms.push(term)\n      } else {\n        byChunk.push({ chunk: term.chunk, terms: [term] })\n        current = term.chunk\n      }\n    }\n  })\n  // ensure every verb-phrase actually has a verb\n  byChunk.forEach(c => {\n    if (c.chunk === 'Verb') {\n      const hasVerb = c.terms.find(t => t.tags.has('Verb'))\n      if (!hasVerb) {\n        c.terms.forEach(t => t.chunk = null)\n      }\n    }\n  })\n}\nexport default fixUp\n"
  },
  {
    "path": "src/3-three/chunker/compute/index.js",
    "content": "import easyMode from './01-easy.js'\nimport byNeighbour from './02-neighbours.js'\nimport matcher from './03-matcher.js'\nimport fallback from './04-fallback.js'\nimport fixUp from './05-fixUp.js'\n/* Chunks:\n    Noun\n    Verb\n    Adjective\n    Pivot\n*/\n\nconst findChunks = function (view) {\n  const { document, world } = view\n  easyMode(document)\n  byNeighbour(document)\n  matcher(view, document, world)\n  // matcher(view, document, world) //run it 2nd time\n  fallback(document, world)\n  fixUp(document, world)\n}\nexport default { chunks: findChunks }\n"
  },
  {
    "path": "src/3-three/chunker/plugin.js",
    "content": "import api from './api/api.js'\nimport compute from './compute/index.js'\n\nexport default {\n  compute: compute,\n  api: api,\n  hooks: ['chunks'],\n}\n"
  },
  {
    "path": "src/3-three/coreference/api/pronouns.js",
    "content": "const api = function (View) {\n\n  class Pronouns extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Pronouns'\n    }\n    hasReference() {\n      this.compute('coreference')\n      return this.filter(m => {\n        const term = m.docs[0][0]\n        return term.reference\n      })\n    }\n    // get the noun-phrase this pronoun refers to\n    refersTo() {\n      //calculate links\n      this.compute('coreference')\n      // return them\n      return this.map(m => {\n        if (!m.found) {\n          return m.none()\n        }\n        const term = m.docs[0][0]\n        if (term.reference) {\n          return m.update([term.reference])\n        }\n        return m.none()\n      })\n    }\n    // overloaded - keep Numbers class\n    update(pointer) {\n      const m = new Pronouns(this.document, pointer)\n      m._cache = this._cache // share this full thing\n      return m\n    }\n  }\n\n  View.prototype.pronouns = function (n) {\n    let m = this.match('#Pronoun')\n    m = m.getNth(n)\n    return new Pronouns(m.document, m.pointer)\n  }\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/coreference/compute/findIt.js",
    "content": "const findIt = function (m) {\n  return m.none()\n}\nexport default findIt"
  },
  {
    "path": "src/3-three/coreference/compute/findPerson.js",
    "content": "import { findChained } from './lib.js'\n\n// only filter if we know a gender\n// ambiguous names like 'jamie smith' will refer to either he or she\nconst byGender = function (ppl, gender) {\n  if (gender === 'm') {\n    return ppl.filter(m => !m.presumedFemale().found)\n  } else if (gender === 'f') {\n    return ppl.filter(m => !m.presumedMale().found)\n  }\n  return ppl\n}\n\n\nconst getPerson = function (s, gender) {\n  // look at current sentence\n  let people = s.people()\n  people = byGender(people, gender)\n  if (people.found) {\n    return people.last()\n  }\n  // non-named people, like 'the cowboy'\n  people = s.nouns('#Actor')\n  if (people.found) {\n    return people.last()\n  }\n  // existing pronouns\n  if (gender === 'f') {\n    return findChained('(she|her|hers)', s)\n  }\n  if (gender === 'm') {\n    return findChained('(he|him|his)', s)\n  }\n  return s.none()\n}\n\nexport default getPerson\n"
  },
  {
    "path": "src/3-three/coreference/compute/findThey.js",
    "content": "import { findChained } from './lib.js'\n\n// find best reference for 'they' & 'their'\nconst getThey = function (s) {\n  const nouns = s.nouns()\n\n  // 'the bananas'\n  let things = nouns.isPlural().notIf('#Pronoun')\n  if (things.found) {\n    return things.last()\n  }\n  // re-use existing pronoun reference\n  const chain = findChained('(they|their|theirs)', s)\n  if (chain.found) {\n    return chain\n  }\n\n  // they can also refer to a singular noun\n  // \"the restaurant sold their food\"\n  // \"a choir sang their song\"\n\n  // somebody shaved their head\n  things = nouns.match('(somebody|nobody|everybody|anybody|someone|noone|everyone|anyone)')\n  if (things.found) {\n    return things.last()\n  }\n  return s.none()\n}\n\n\nexport default getThey"
  },
  {
    "path": "src/3-three/coreference/compute/index.js",
    "content": "import getPerson from './findPerson.js'\nimport getThey from './findThey.js'\n// import getIt from './findIt.js'\nimport { prevSentence } from './lib.js'\n\nconst addReference = function (pron, m) {\n  if (m && m.found) {\n    // add reference on the pronoun\n    const term = pron.docs[0][0]//pronouns are 1 word only\n    term.reference = m.ptrs[0]\n  }\n}\n\nconst stepBack = function (m, cb) {\n  // 1st - in same sentence\n  let s = m.before()\n  let res = cb(s)\n  if (res.found) {\n    return res\n  }\n  // 2nd - previous sentence\n  s = prevSentence(m)\n  res = cb(s)\n  if (res.found) {\n    return res\n  }\n  // 3rd - two sentences back\n  s = prevSentence(s)\n  res = cb(s)\n  if (res.found) {\n    return res\n  }\n  return m.none()\n}\n\nconst coreference = function (view) {\n  const pronouns = view.pronouns().if('(he|him|his|she|her|hers|they|their|theirs|it|its)')\n  pronouns.forEach(pron => {\n    let res = null\n    // connect pronoun to its reference\n    if (pron.has('(he|him|his)')) {\n      res = stepBack(pron, (m) => getPerson(m, 'm'))\n    } else if (pron.has('(she|her|hers)')) {\n      res = stepBack(pron, (m) => getPerson(m, 'f'))\n    } else if (pron.has('(they|their|theirs)')) {\n      res = stepBack(pron, getThey)\n    }\n    if (res && res.found) {\n      addReference(pron, res)\n    }\n  })\n}\nexport default coreference"
  },
  {
    "path": "src/3-three/coreference/compute/lib.js",
    "content": "\n// borrow a reference from another pronoun\n// 'mike is tall, [he] climbs and [he] swims'\nconst findChained = function (want, s) {\n  const m = s.match(want)\n  if (m.found) {\n    const ref = m.pronouns().refersTo()\n    if (ref.found) {\n      return ref\n    }\n  }\n  return s.none()\n}\n\nconst prevSentence = function (m) {\n  if (!m.found) {\n    return m\n  }\n  const [n] = m.fullPointer[0]\n  if (n && n > 0) {\n    return m.update([[n - 1]])\n  }\n  return m.none()\n}\nexport { prevSentence, findChained }"
  },
  {
    "path": "src/3-three/coreference/plugin.js",
    "content": "import coreference from './compute/index.js'\nimport api from './api/pronouns.js'\n\nexport default {\n  compute: { coreference },\n  api\n}"
  },
  {
    "path": "src/3-three/misc/acronyms/index.js",
    "content": "// return the nth elem of a doc\nconst hasPeriod = /\\./g\n\nconst api = function (View) {\n\n  class Acronyms extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Acronyms'\n    }\n    strip() {\n      this.docs.forEach(terms => {\n        terms.forEach(term => {\n          term.text = term.text.replace(hasPeriod, '')\n          term.normal = term.normal.replace(hasPeriod, '')\n        })\n      })\n      return this\n    }\n    addPeriods() {\n      this.docs.forEach(terms => {\n        terms.forEach(term => {\n          term.text = term.text.replace(hasPeriod, '')\n          term.normal = term.normal.replace(hasPeriod, '')\n          term.text = term.text.split('').join('.') + '.'\n          term.normal = term.normal.split('').join('.') + '.'\n        })\n      })\n      return this\n    }\n  }\n\n  View.prototype.acronyms = function (n) {\n    let m = this.match('#Acronym')\n    m = m.getNth(n)\n    return new Acronyms(m.document, m.pointer)\n  }\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/misc/parentheses/fns.js",
    "content": "const hasOpen = /\\(/\nconst hasClosed = /\\)/\n\nconst findEnd = function (terms, i) {\n  for (; i < terms.length; i += 1) {\n    if (terms[i].post && hasClosed.test(terms[i].post)) {\n      let [, index] = terms[i].index\n      index = index || 0\n      return index\n    }\n  }\n  return null\n}\n\nconst find = function (doc) {\n  const ptrs = []\n  doc.docs.forEach(terms => {\n    const isOpen = false\n    for (let i = 0; i < terms.length; i += 1) {\n      const term = terms[i]\n      if (!isOpen && term.pre && hasOpen.test(term.pre)) {\n        const end = findEnd(terms, i)\n        if (end !== null) {\n          const [n, start] = terms[i].index\n          ptrs.push([n, start, end + 1, terms[i].id])\n          i = end\n        }\n      }\n    }\n  })\n  return doc.update(ptrs)\n}\n\nconst strip = function (m) {\n  m.docs.forEach(terms => {\n    terms[0].pre = terms[0].pre.replace(hasOpen, '')\n    const last = terms[terms.length - 1]\n    last.post = last.post.replace(hasClosed, '')\n  })\n  return m\n}\nexport { find, strip }\n"
  },
  {
    "path": "src/3-three/misc/parentheses/index.js",
    "content": "import { find, strip } from './fns.js'\n\nconst api = function (View) {\n  class Parentheses extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Possessives'\n    }\n    strip() {\n      return strip(this)\n    }\n  }\n\n  View.prototype.parentheses = function (n) {\n    let m = find(this)\n    m = m.getNth(n)\n    return new Parentheses(m.document, m.pointer)\n  }\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/misc/plugin.js",
    "content": "import addAcronyms from './acronyms/index.js'\nimport addParentheses from './parentheses/index.js'\nimport addPossessives from './possessives/index.js'\nimport addQuotations from './quotations/index.js'\nimport addSelections from './selections/index.js'\nimport addSlashes from './slashes/index.js'\n\nexport default {\n  api: function (View) {\n    addAcronyms(View)\n    addParentheses(View)\n    addPossessives(View)\n    addQuotations(View)\n    addSelections(View)\n    addSlashes(View)\n  }\n}\n"
  },
  {
    "path": "src/3-three/misc/possessives/index.js",
    "content": "// return the nth elem of a doc\nconst apostropheS = /'s$/\n\nconst find = function (doc) {\n  let m = doc.match('#Possessive+')\n  // expand it to include 'john smith's'\n  if (m.has('#Person')) {\n    m = m.growLeft('#Person+')\n  }\n  if (m.has('#Place')) {\n    m = m.growLeft('#Place+')\n  }\n  if (m.has('#Organization')) {\n    m = m.growLeft('#Organization+')\n  }\n  return m\n}\n\n\nconst api = function (View) {\n\n  class Possessives extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Possessives'\n    }\n    strip() {\n      this.docs.forEach(terms => {\n        terms.forEach(term => {\n          term.text = term.text.replace(apostropheS, '')\n          term.normal = term.normal.replace(apostropheS, '')\n        })\n      })\n      return this\n    }\n  }\n\n  View.prototype.possessives = function (n) {\n    let m = find(this)\n    m = m.getNth(n)\n    return new Possessives(m.document, m.pointer)\n  }\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/misc/quotations/fns.js",
    "content": "/* eslint-disable regexp/no-dupe-characters-character-class */\n\nconst pairs = {\n  '\\u0022': '\\u0022', // 'StraightDoubleQuotes'\n  '\\uFF02': '\\uFF02', // 'StraightDoubleQuotesWide'\n  '\\u0027': '\\u0027', // 'StraightSingleQuotes'\n  '\\u201C': '\\u201D', // 'CommaDoubleQuotes'\n  '\\u2018': '\\u2019', // 'CommaSingleQuotes'\n  '\\u201F': '\\u201D', // 'CurlyDoubleQuotesReversed'\n  '\\u201B': '\\u2019', // 'CurlySingleQuotesReversed'\n  '\\u201E': '\\u201D', // 'LowCurlyDoubleQuotes'\n  '\\u2E42': '\\u201D', // 'LowCurlyDoubleQuotesReversed'\n  '\\u201A': '\\u2019', // 'LowCurlySingleQuotes'\n  '\\u00AB': '\\u00BB', // 'AngleDoubleQuotes' «, »\n  '\\u2039': '\\u203A', // 'AngleSingleQuotes'\n  // Prime 'non quotation'\n  '\\u2035': '\\u2032', // 'PrimeSingleQuotes'\n  '\\u2036': '\\u2033', // 'PrimeDoubleQuotes'\n  '\\u2037': '\\u2034', // 'PrimeTripleQuotes'\n  // Prime 'quotation' variation\n  '\\u301D': '\\u301E', // 'PrimeDoubleQuotes'\n  '\\u0060': '\\u00B4', // 'PrimeSingleQuotes'\n  '\\u301F': '\\u301E', // 'LowPrimeDoubleQuotesReversed'\n}\n\nconst hasOpen = RegExp('[' + Object.keys(pairs).join('') + ']')\nconst hasClosed = RegExp('[' + Object.values(pairs).join('') + ']')\n\nconst findEnd = function (terms, i) {\n  const have = terms[i].pre.match(hasOpen)[0] || ''\n  if (!have || !pairs[have]) {\n    return null\n  }\n  const want = pairs[have]\n  for (; i < terms.length; i += 1) {\n    if (terms[i].post && terms[i].post.match(want)) {\n      return i\n    }\n  }\n  return null\n}\n\nconst find = function (doc) {\n  const ptrs = []\n  doc.docs.forEach(terms => {\n    const isOpen = false\n    for (let i = 0; i < terms.length; i += 1) {\n      const term = terms[i]\n      if (!isOpen && term.pre && hasOpen.test(term.pre)) {\n        const end = findEnd(terms, i)\n        if (end !== null) {\n          const [n, start] = terms[i].index\n          ptrs.push([n, start, end + 1, terms[i].id])\n          i = end\n        }\n      }\n    }\n  })\n  return doc.update(ptrs)\n}\n\nconst strip = function (m) {\n  m.docs.forEach(terms => {\n    terms[0].pre = terms[0].pre.replace(hasOpen, '')\n    const lastTerm = terms[terms.length - 1]\n    lastTerm.post = lastTerm.post.replace(hasClosed, '')\n  })\n}\nexport { find, strip }\n"
  },
  {
    "path": "src/3-three/misc/quotations/index.js",
    "content": "import { find, strip } from './fns.js'\n\nconst api = function (View) {\n\n  class Quotations extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Possessives'\n    }\n    strip() {\n      return strip(this)\n    }\n  }\n\n  View.prototype.quotations = function (n) {\n    let m = find(this)\n    m = m.getNth(n)\n    return new Quotations(m.document, m.pointer)\n  }\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/misc/selections/index.js",
    "content": "/** return anything tagged as a phone number */\nconst phoneNumbers = function (n) {\n  let m = this.splitAfter('@hasComma')\n  m = m.match('#PhoneNumber+')\n  m = m.getNth(n)\n  return m\n}\n\n// setup easy helper methods\nconst selections = [\n  ['hyphenated', '@hasHyphen .'],\n  ['hashTags', '#HashTag'],\n  ['emails', '#Email'],\n  ['emoji', '#Emoji'],\n  ['emoticons', '#Emoticon'],\n  ['atMentions', '#AtMention'],\n  ['urls', '#Url'],\n  // ['pronouns', '#Pronoun'],\n  ['conjunctions', '#Conjunction'],\n  ['prepositions', '#Preposition'],\n  ['abbreviations', '#Abbreviation'],\n  ['honorifics', '#Honorific'],\n]\n\n// aliases\nconst aliases = [\n  ['emojis', 'emoji'],\n  ['atmentions', 'atMentions'],\n]\n\nconst addMethods = function (View) {\n  // add a list of new helper methods\n  selections.forEach(a => {\n    View.prototype[a[0]] = function (n) {\n      const m = this.match(a[1])\n      return typeof n === 'number' ? m.get(n) : m\n    }\n  })\n  View.prototype.phoneNumbers = phoneNumbers\n  // add aliases\n  aliases.forEach(a => {\n    View.prototype[a[0]] = View.prototype[a[1]]\n  })\n}\n\nexport default addMethods\n"
  },
  {
    "path": "src/3-three/misc/slashes/index.js",
    "content": "const hasSlash = /\\//\n\nconst api = function (View) {\n\n  class Slashes extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Slashes'\n    }\n    split() {\n      return this.map((m) => {\n        const str = m.text()\n        const arr = str.split(hasSlash)\n        m = m.replaceWith(arr.join(' '))\n        return m.growRight('(' + arr.join('|') + ')+')\n      })\n    }\n  }\n\n  View.prototype.slashes = function (n) {\n    let m = this.match('#SlashedTerm')\n    m = m.getNth(n)\n    return new Slashes(m.document, m.pointer)\n  }\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/normalize/api.js",
    "content": "import methods from './methods.js'\n\n// turn presets into key-vals\nconst split = (str) => {\n  return str.split('|').reduce((h, k) => {\n    h[k] = true\n    return h\n  }, {})\n}\n\nconst light = 'unicode|punctuation|whitespace|acronyms'\nconst medium = '|case|contractions|parentheses|quotations|emoji|honorifics|debullet'\nconst heavy = '|possessives|adverbs|nouns|verbs'\nconst presets = {\n  light: split(light),\n  medium: split(light + medium),\n  heavy: split(light + medium + heavy)\n}\n\nexport default function (View) {\n  View.prototype.normalize = function (opts = 'light') {\n    if (typeof opts === 'string') {\n      opts = presets[opts]\n    }\n    // run each method\n    Object.keys(opts).forEach(fn => {\n      if (methods.hasOwnProperty(fn)) {\n        methods[fn](this, opts[fn])\n      }\n    })\n    return this\n  }\n}"
  },
  {
    "path": "src/3-three/normalize/methods.js",
    "content": "const termLoop = function (view, cb) {\n  view.docs.forEach(terms => {\n    terms.forEach(cb)\n  })\n}\n\nexport default {\n  // remove titlecasing, uppercase\n  'case': (doc) => {\n    termLoop(doc, (term) => {\n      term.text = term.text.toLowerCase()\n    })\n  },\n  // visually romanize/anglicize 'Björk' into 'Bjork'.\n  'unicode': (doc) => {\n    const world = doc.world\n    const killUnicode = world.methods.one.killUnicode\n    termLoop(doc, (term) => term.text = killUnicode(term.text, world))\n  },\n  // remove hyphens, newlines, and force one space between words\n  'whitespace': (doc) => {\n    termLoop(doc, (term) => {\n      // one space between words\n      term.post = term.post.replace(/\\s+/g, ' ')\n      term.post = term.post.replace(/\\s([.,?!:;])/g, '$1')//no whitespace before a period, etc\n      // no whitepace before a word\n      term.pre = term.pre.replace(/\\s+/g, '')\n    })\n  },\n  // remove commas, semicolons - but keep sentence-ending punctuation\n  'punctuation': (doc) => {\n    termLoop(doc, (term) => {\n      // turn dashes to spaces\n      term.post = term.post.replace(/[–—-]/g, ' ')\n      // remove comma, etc \n      term.post = term.post.replace(/[,:;]/g, '')\n      // remove elipses\n      term.post = term.post.replace(/\\.{2,}/g, '')\n      // remove repeats\n      term.post = term.post.replace(/\\?{2,}/g, '?')\n      term.post = term.post.replace(/!{2,}/g, '!')\n      // replace ?!\n      term.post = term.post.replace(/\\?!+/g, '?')\n    })\n    // trim end\n    const docs = doc.docs\n    const terms = docs[docs.length - 1]\n    if (terms && terms.length > 0) {\n      const lastTerm = terms[terms.length - 1]\n      lastTerm.post = lastTerm.post.replace(/ /g, '')\n    }\n  },\n\n  // ====== subsets ===\n\n  // turn \"isn't\" to \"is not\"\n  'contractions': (doc) => {\n    doc.contractions().expand()\n  },\n  //remove periods from acronyms, like 'F.B.I.'\n  'acronyms': (doc) => {\n    doc.acronyms().strip()\n  },\n  //remove words inside brackets (like these)\n  'parentheses': (doc) => {\n    doc.parentheses().strip()\n  },\n  // turn \"Google's tax return\" to \"Google tax return\"\n  'possessives': (doc) => {\n    doc.possessives().strip()\n  },\n  // turn \"tax return\" to tax return\n  'quotations': (doc) => {\n    doc.quotations().strip()\n  },\n\n  // remove them\n  'emoji': (doc) => {\n    doc.emojis().remove()\n  },\n  //turn 'Vice Admiral John Smith' to 'John Smith'\n  'honorifics': (doc) => {\n    doc.match('#Honorific+ #Person').honorifics().remove()\n  },\n  // remove needless adverbs\n  'adverbs': (doc) => {\n    doc.adverbs().remove()\n  },\n\n  // turn \"batmobiles\" into \"batmobile\"\n  'nouns': (doc) => {\n    doc.nouns().toSingular()\n  },\n  // turn all verbs into Infinitive form - \"I walked\" → \"I walk\"\n  'verbs': (doc) => {\n    doc.verbs().toInfinitive()\n  },\n  // turn \"fifty\" into \"50\"\n  'numbers': (doc) => {\n    doc.numbers().toNumber()\n  },\n\n  /** remove bullets from beginning of phrase */\n  'debullet': (doc) => {\n    const hasBullet = /^\\s*([-–—*•])\\s*$/\n    doc.docs.forEach(terms => {\n      //remove bullet symbols\n      if (hasBullet.test(terms[0].pre)) {\n        terms[0].pre = terms[0].pre.replace(hasBullet, '')\n      }\n    })\n    return doc\n  }\n}\n"
  },
  {
    "path": "src/3-three/normalize/plugin.js",
    "content": "import api from './api.js'\n\nexport default {\n  api\n}"
  },
  {
    "path": "src/3-three/nouns/api/api.js",
    "content": "import find from '../find.js'\nimport parseNoun from './parse.js'\nimport toJSON from './toJSON.js'\nimport toPlural from './toPlural.js'\nimport hasPlural from './hasPlural.js'\nimport toSingular from './toSingular.js'\n\nconst api = function (View) {\n  class Nouns extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Nouns'\n    }\n\n    parse(n) {\n      return this.getNth(n).map(parseNoun)\n    }\n\n    json(n) {\n      const opts = typeof n === 'object' ? n : {}\n      return this.getNth(n).map(m => {\n        const json = m.toView().json(opts)[0] || {}\n        if (opts && opts.noun !== false) {\n          json.noun = toJSON(m)\n        }\n        return json\n      }, [])\n    }\n    conjugate(n) {\n      const methods = this.world.methods.two.transform.noun\n      return this.getNth(n).map(m => {\n        const parsed = parseNoun(m)\n        const root = parsed.root.compute('root').text('root')\n        const res = {\n          Singular: root,\n        }\n        if (hasPlural(parsed.root)) {\n          res.Plural = methods.toPlural(root, this.model)\n        }\n        // only show plural if one exists\n        if (res.Singular === res.Plural) {\n          delete res.Plural\n        }\n        return res\n      }, [])\n    }\n    isPlural(n) {\n      const res = this.filter(m => parseNoun(m).isPlural)\n      return res.getNth(n)\n    }\n\n    isSingular(n) {\n      const res = this.filter(m => !parseNoun(m).isPlural)\n      return res.getNth(n)\n    }\n\n    adjectives(n) {\n      let res = this.update([])\n      this.forEach(m => {\n        const adj = parseNoun(m).adjectives\n        if (adj.found) {\n          res = res.concat(adj)\n        }\n      })\n      return res.getNth(n)\n    }\n\n    toPlural(n) {\n      return this.getNth(n).map(m => {\n        return toPlural(m, parseNoun(m))\n      })\n      // return new Nouns(all.document, all.pointer)\n    }\n\n    toSingular(n) {\n      return this.getNth(n).map(m => {\n        const res = parseNoun(m)\n        return toSingular(m, res)\n      })\n    }\n    // create a new View, from this one\n    update(pointer) {\n      const m = new Nouns(this.document, pointer)\n      m._cache = this._cache // share this full thing\n      return m\n    }\n  }\n  View.prototype.nouns = function (n) {\n    let m = find(this)\n    m = m.getNth(n)\n    return new Nouns(this.document, m.pointer)\n  }\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/nouns/api/hasPlural.js",
    "content": "\nconst hasPlural = function (root) {\n  if (root.has('^(#Uncountable|#ProperNoun|#Place|#Pronoun|#Acronym)+$')) {\n    return false\n  }\n  return true\n}\nexport default hasPlural"
  },
  {
    "path": "src/3-three/nouns/api/isPlural.js",
    "content": "const notPlural = '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'\n\nconst isPlural = function (m, root) {\n  // const { looksPlural } = m.world.methods.two\n  if (m.has('#Plural')) {\n    return true\n  }\n  // two singular nouns are plural noun phrase\n  if (m.has('#Noun and #Noun')) {\n    return true\n  }\n  if (m.has('(we|they)')) {\n    return true\n  }\n  // these can't be plural\n  if (root.has(notPlural) === true) {\n    return false\n  }\n  if (m.has('#Singular')) {\n    return false\n  }\n  // word-reg fallback\n  const str = root.text('normal')\n  // ends with a brutal s fallback\n  return str.length > 3 && str.endsWith('s') && !str.endsWith('ss')\n}\nexport default isPlural\n"
  },
  {
    "path": "src/3-three/nouns/api/isSubordinate.js",
    "content": "// https://www.trentu.ca/history/subordinate-clause-and-complex-sentence\nconst list = [\n  'after',\n  'although',\n  'as if',\n  'as long as',\n  'as',\n  'because',\n  'before',\n  'even if',\n  'even though',\n  'ever since',\n  'if',\n  'in order that',\n  'provided that',\n  'since',\n  'so that',\n  'than',\n  'that',\n  'though',\n  'unless',\n  'until',\n  'what',\n  'whatever',\n  'when',\n  'whenever',\n  'where',\n  'whereas',\n  'wherever',\n  'whether',\n  'which',\n  'whichever',\n  'who',\n  'whoever',\n  'whom',\n  'whomever',\n  'whose',\n]\n\nconst isSubordinate = function (m) {\n  // athletes from toronto, days since december\n  if (m.before('#Preposition$').found) {\n    return true\n  }\n  const leadIn = m.before()\n  if (!leadIn.found) {\n    return false\n  }\n  for (let i = 0; i < list.length; i += 1) {\n    if (m.has(list[i])) {\n      return true\n    }\n  }\n  return false\n}\nexport default isSubordinate\n"
  },
  {
    "path": "src/3-three/nouns/api/parse.js",
    "content": "import isSubordinate from './isSubordinate.js'\nimport isPlural from './isPlural.js'\n\nconst getRoot = function (m) {\n  let tmp = m.clone()\n  tmp = tmp.match('#Noun+')\n  tmp = tmp.remove('(#Adjective|#Preposition|#Determiner|#Value)')\n  tmp = tmp.not('#Possessive')\n  tmp = tmp.first()\n  if (!tmp.found) {\n    return m\n  }\n  return tmp\n}\n\nconst parseNoun = function (m) {\n  const root = getRoot(m)\n  return {\n    determiner: m.match('#Determiner').eq(0),\n    adjectives: m.match('#Adjective'),\n    number: m.values(),\n    isPlural: isPlural(m, root),\n    isSubordinate: isSubordinate(m),\n    root: root,\n  }\n}\nexport default parseNoun\n"
  },
  {
    "path": "src/3-three/nouns/api/toJSON.js",
    "content": "import parseNoun from './parse.js'\n\nconst toText = m => m.text()\nconst toArray = m => m.json({ terms: false, normal: true }).map(s => s.normal)\n\nconst getNum = function (m) {\n  const num = null\n  if (!m.found) {\n    return num\n  }\n  const val = m.values(0)\n  if (val.found) {\n    const obj = val.parse()[0] || {}\n    return obj.num\n  }\n  return num\n}\n\nconst toJSON = function (m) {\n  const res = parseNoun(m)\n  return {\n    root: toText(res.root),\n    number: getNum(res.number),\n    determiner: toText(res.determiner),\n    adjectives: toArray(res.adjectives),\n    isPlural: res.isPlural,\n    isSubordinate: res.isSubordinate,\n  }\n}\nexport default toJSON\n"
  },
  {
    "path": "src/3-three/nouns/api/toPlural.js",
    "content": "import hasPlural from './hasPlural.js'\n\nconst keep = { tags: true }\n\nconst nounToPlural = function (m, parsed) {\n  // already plural?\n  if (parsed.isPlural === true) {\n    return m\n  }\n  // handle \"steve's\"\n  if (parsed.root.has('#Possessive')) {\n    parsed.root = parsed.root.possessives().strip()\n  }\n  // is a plural appropriate?\n  if (!hasPlural(parsed.root)) {\n    return m\n  }\n  const { methods, model } = m.world\n  const { toPlural } = methods.two.transform.noun\n  // inflect the root noun\n  const str = parsed.root.text({ keepPunct: false })\n  const plural = toPlural(str, model)\n  m.match(parsed.root).replaceWith(plural, keep).tag('Plural', 'toPlural')\n  // should we change the determiner/article?\n  if (parsed.determiner.has('(a|an)')) {\n    // 'a captain' -> 'the captains'\n    // m.replace(parsed.determiner, 'the', keep)\n    m.remove(parsed.determiner)\n  }\n  // should we change the following copula?\n  const copula = parsed.root.after('not? #Adverb+? [#Copula]', 0)\n  if (copula.found) {\n    if (copula.has('is')) {\n      m.replace(copula, 'are')\n    } else if (copula.has('was')) {\n      m.replace(copula, 'were')\n    }\n  }\n  return m\n}\nexport default nounToPlural\n"
  },
  {
    "path": "src/3-three/nouns/api/toSingular.js",
    "content": "const keep = { tags: true }\n\nconst nounToSingular = function (m, parsed) {\n  // already singular?\n  if (parsed.isPlural === false) {\n    return m\n  }\n  const { methods, model } = m.world\n  const { toSingular } = methods.two.transform.noun\n  // inflect the root noun\n  const str = parsed.root.text('normal')\n  const single = toSingular(str, model)\n  m.replace(parsed.root, single, keep).tag('Singular', 'toPlural')\n  // should we change the determiner/article?\n  // m.debug()\n  return m\n}\nexport default nounToSingular\n"
  },
  {
    "path": "src/3-three/nouns/find.js",
    "content": "const findNouns = function (doc) {\n  let m = doc.clauses().match('<Noun>')\n  let commas = m.match('@hasComma')\n  // allow toronto, ontario\n  commas = commas.not('#Place')\n  if (commas.found) {\n    m = m.splitAfter(commas)\n  }\n  // yo there\n  m = m.splitOn('#Expression')\n  // these are individual nouns\n  m = m.splitOn('(he|she|we|you|they|i)')\n  // a client i saw\n  m = m.splitOn('(#Noun|#Adjective) [(he|him|she|it)]', 0)\n  // give him the best\n  m = m.splitOn('[(he|him|she|it)] (#Determiner|#Value)', 0)\n  // the noise the slide makes\n  m = m.splitBefore('#Noun [(the|a|an)] #Adjective? #Noun', 0)\n  // here spencer slept\n  m = m.splitOn('[(here|there)] #Noun', 0)\n  // put it there\n  m = m.splitOn('[#Noun] (here|there)', 0)\n  // its great purposes\n  // give [parents] [our money]\n  m = m.splitBefore('(our|my|their|your)')\n  // tell my friend that he\n  m = m.splitOn('#Noun [#Determiner]', 0)\n  // his excuses\n  // m = m.splitAfter('(his|hers|yours|ours|theirs)')\n  // m = m.not('^#Determiner')\n  //ensure there's actually a noun\n  m = m.if('#Noun')\n  return m\n}\nexport default findNouns\n"
  },
  {
    "path": "src/3-three/nouns/plugin.js",
    "content": "import api from './api/api.js'\n\nexport default {\n  api,\n}\n"
  },
  {
    "path": "src/3-three/numbers/fractions/api.js",
    "content": "import find from './find.js'\nimport parse from './parse.js'\nimport toCardinal from './convert/toCardinal.js'\nimport toOrdinal from './convert/toOrdinal.js'\n\nconst plugin = function (View) {\n  /**\n   */\n  class Fractions extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Fractions'\n    }\n    parse(n) {\n      return this.getNth(n).map(parse)\n    }\n    get(n) {\n      return this.getNth(n).map(parse)\n    }\n    json(n) {\n      return this.getNth(n).map(p => {\n        const json = p.toView().json(n)[0]\n        const parsed = parse(p)\n        json.fraction = parsed\n        return json\n      }, [])\n    }\n    // become 0.5\n    toDecimal(n) {\n      this.getNth(n).forEach(m => {\n        const { decimal } = parse(m)\n        m = m.replaceWith(String(decimal), true)\n        m.tag('NumericValue')\n        m.unTag('Fraction')\n      })\n      return this\n    }\n    toFraction(n) {\n      this.getNth(n).forEach(m => {\n        const obj = parse(m)\n        if (obj && typeof obj.numerator === 'number' && typeof obj.denominator === 'number') {\n          const str = `${obj.numerator}/${obj.denominator}`\n          this.replace(m, str)\n        }\n      })\n      return this\n    }\n    toOrdinal(n) {\n      this.getNth(n).forEach(m => {\n        const obj = parse(m)\n        let str = toOrdinal(obj)\n        if (m.after('^#Noun').found) {\n          str += ' of' // three fifths of dentists\n        }\n        m.replaceWith(str)\n      })\n      return this\n    }\n    toCardinal(n) {\n      this.getNth(n).forEach(m => {\n        const obj = parse(m)\n        const str = toCardinal(obj)\n        m.replaceWith(str)\n      })\n      return this\n    }\n    toPercentage(n) {\n      this.getNth(n).forEach(m => {\n        const { decimal } = parse(m)\n        let percent = decimal * 100\n        percent = Math.round(percent * 100) / 100 // round it\n        m.replaceWith(`${percent}%`)\n      })\n      return this\n    }\n  }\n\n  View.prototype.fractions = function (n) {\n    let m = find(this)\n    m = m.getNth(n)\n    return new Fractions(this.document, m.pointer)\n  }\n}\n\nexport default plugin\n"
  },
  {
    "path": "src/3-three/numbers/fractions/convert/toCardinal.js",
    "content": "import toText from '../../numbers/format/toText/index.js'\n\nconst toCardinal = function (obj) {\n  if (!obj.numerator || !obj.denominator) {\n    return ''\n  }\n  const a = toText({ num: obj.numerator })\n  const b = toText({ num: obj.denominator })\n  return `${a} out of ${b}`\n}\nexport default toCardinal\n"
  },
  {
    "path": "src/3-three/numbers/fractions/convert/toOrdinal.js",
    "content": "import toText from '../../numbers/format/toText/index.js'\nimport textOrdinal from '../../numbers/format/toOrdinal/textOrdinal.js'\n\nconst toOrdinal = function (obj) {\n  // don't divide by zero!\n  if (!obj.numerator || !obj.denominator) {\n    return ''\n  }\n  // create [two] [fifths]\n  const start = toText({ num: obj.numerator })\n  let end = textOrdinal({ num: obj.denominator })\n  // 'one secondth' -> 'one half'\n  if (obj.denominator === 2) {\n    end = 'half'\n  }\n  if (start && end) {\n    if (obj.numerator !== 1) {\n      end += 's'\n    }\n    return `${start} ${end}`\n  }\n  return ''\n}\nexport default toOrdinal\n"
  },
  {
    "path": "src/3-three/numbers/fractions/find.js",
    "content": "const findFractions = function (doc, n) {\n  // five eighths\n  let m = doc.match('#Fraction+')\n  // remove 'two and five eights'\n  m = m.filter(r => {\n    return !r.lookBehind('#Value and$').found\n  })\n  // thirty seconds\n  m = m.notIf('#Value seconds')\n\n  if (typeof n === 'number') {\n    m = m.eq(n)\n  }\n  return m\n}\nexport default findFractions\n"
  },
  {
    "path": "src/3-three/numbers/fractions/parse.js",
    "content": "const endS = /s$/\nimport parseText from '../numbers/parse/toNumber/index.js'\n\n// just using .toNumber() again may risk an infinite-loop\nconst parseNumber = function (m) {\n  const str = m.text('reduced')\n  return parseText(str)\n}\n\nconst mapping = {\n  half: 2,\n  halve: 2,\n  quarter: 4,\n}\n\nconst slashForm = function (m) {\n  const str = m.text('reduced')\n  const found = str.match(/^([-+]?[0-9]+)\\/([-+]?[0-9]+)(st|nd|rd|th)?s?$/)\n  if (found && found[1] && found[0]) {\n    return {\n      numerator: Number(found[1]),\n      denominator: Number(found[2]),\n    }\n  }\n  return null\n}\n\n// parse '4 out of 4'\nconst nOutOfN = function (m) {\n  const found = m.match('[<num>#Value+] out of every? [<den>#Value+]')\n  if (found.found !== true) {\n    return null\n  }\n  let { num, den } = found.groups()\n  if (!num || !den) {\n    return null\n  }\n  num = parseNumber(num)\n  den = parseNumber(den)\n  if (!num || !den) {\n    return null\n  }\n  if (typeof num === 'number' && typeof den === 'number') {\n    return {\n      numerator: num,\n      denominator: den,\n    }\n  }\n  return null\n}\n\n// parse 'five thirds'\nconst nOrinalth = function (m) {\n  const found = m.match('[<num>(#Cardinal|a)+] [<den>#Fraction+]')\n  if (found.found !== true) {\n    return null\n  }\n  let { num, den } = found.groups()\n  // -- parse numerator---\n  // quick-support for 'a third'\n  if (num.has('a')) {\n    num = 1\n  } else {\n    // abuse the number-parser for 'thirty three'\n    // let tmp = num.clone().unTag('Fraction')\n    // num = tmp.numbers().get()[0]\n    num = parseNumber(num)\n  }\n  // -- parse denominator --\n  // turn 'thirds' into third\n  let str = den.text('reduced')\n  if (endS.test(str)) {\n    str = str.replace(endS, '')\n    den = den.replaceWith(str)\n  }\n  // support 'one half' as '1/2'\n  if (mapping.hasOwnProperty(str)) {\n    den = mapping[str]\n  } else {\n    // dem = dem.numbers().get()[0]\n    den = parseNumber(den)\n  }\n  if (typeof num === 'number' && typeof den === 'number') {\n    return {\n      numerator: num,\n      denominator: den,\n    }\n  }\n  return null\n}\n\n// implied 1 in '100th of a', 'fifth of a'\nconst oneNth = function (m) {\n  const found = m.match('^#Ordinal$')\n  if (found.found !== true) {\n    return null\n  }\n  // ensure it's '100th of a '\n  if (m.lookAhead('^of .')) {\n    // let num = found.numbers().get()[0]\n    const num = parseNumber(found)\n    return {\n      numerator: 1,\n      denominator: num,\n    }\n  }\n  return null\n}\n\n// 'half'\nconst named = function (m) {\n  const str = m.text('reduced')\n  if (mapping.hasOwnProperty(str)) {\n    return { numerator: 1, denominator: mapping[str] }\n  }\n  return null\n}\n\nconst round = n => {\n  const rounded = Math.round(n * 1000) / 1000\n  // don't round 1 millionth down into 0\n  if (rounded === 0 && n !== 0) {\n    return n\n  }\n  return rounded\n}\n\nconst parseFraction = function (m) {\n  m = m.clone()\n  const res = named(m) || slashForm(m) || nOutOfN(m) || nOrinalth(m) || oneNth(m) || null\n  if (res !== null) {\n    // do the math\n    if (res.numerator && res.denominator) {\n      res.decimal = res.numerator / res.denominator\n      res.decimal = round(res.decimal)\n    }\n  }\n  return res\n}\nexport default parseFraction\n"
  },
  {
    "path": "src/3-three/numbers/numbers/_toString.js",
    "content": "/**\n * turn big numbers, like 2.3e+22, into a string with a ton of trailing 0's\n * */\nconst numToString = function (n) {\n  if (n < 1000000) {\n    return String(n)\n  }\n  let str\n  if (typeof n === 'number') {\n    str = n.toFixed(0)\n  } else {\n    str = n\n  }\n  if (str.indexOf('e+') === -1) {\n    return str\n  }\n  return str\n    .replace('.', '')\n    .split('e+')\n    .reduce(function (p, b) {\n      return p + Array(b - p.length + 2).join(0)\n    })\n}\nexport default numToString\n// console.log(numToString(2.5e+22));\n"
  },
  {
    "path": "src/3-three/numbers/numbers/api.js",
    "content": "import find from './find.js'\nimport parse from './parse/index.js'\nimport format from './format/index.js'\nimport isUnit from './isUnit.js'\n\nconst addMethod = function (View) {\n  /**   */\n  class Numbers extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Numbers'\n    }\n    parse(n) {\n      return this.getNth(n).map(parse)\n    }\n    get(n) {\n      return this.getNth(n)\n        .map(parse)\n        .map(o => o.num)\n    }\n    json(n) {\n      const opts = typeof n === 'object' ? n : {}\n      return this.getNth(n).map(p => {\n        const json = p.toView().json(opts)[0]\n        const parsed = parse(p)\n        json.number = {\n          prefix: parsed.prefix,\n          num: parsed.num,\n          suffix: parsed.suffix,\n          hasComma: parsed.hasComma,\n          unit: parsed.unit,\n        }\n        return json\n      }, [])\n    }\n    /** any known measurement unit, for the number */\n    units() {\n      return this.growRight('#Unit').match('#Unit$')\n    }\n    /** return values that match a given unit */\n    isUnit(allowed) {\n      return isUnit(this, allowed)\n    }\n    /** return only ordinal numbers */\n    isOrdinal() {\n      return this.if('#Ordinal')\n    }\n    /** return only cardinal numbers*/\n    isCardinal() {\n      return this.if('#Cardinal')\n    }\n\n    /** convert to numeric form like '8' or '8th' */\n    toNumber() {\n      const res = this.map(val => {\n        if (!this.has('#TextValue')) {\n          return val\n        }\n        const obj = parse(val)\n        if (obj.num === null) {\n          return val\n        }\n        const fmt = val.has('#Ordinal') ? 'Ordinal' : 'Cardinal'\n        const str = format(obj, fmt)\n        val.replaceWith(str, { tags: true })\n        return val.tag('NumericValue')\n      })\n      return new Numbers(res.document, res.pointer)\n    }\n    /** add commas, or nicer formatting for numbers */\n    toLocaleString() {\n      const m = this\n      m.forEach(val => {\n        const obj = parse(val)\n        if (obj.num === null) {\n          return\n        }\n        let num = obj.num.toLocaleString()\n        // support ordinal ending, too\n        if (val.has('#Ordinal')) {\n          const str = format(obj, 'Ordinal')\n          const end = str.match(/[a-z]+$/)\n          if (end) {\n            num += end[0] || ''\n          }\n        }\n        val.replaceWith(num, { tags: true })\n      })\n      return this\n    }\n    /** convert to numeric form like 'eight' or 'eighth' */\n    toText() {\n      const m = this\n      const res = m.map(val => {\n        if (val.has('#TextValue')) {\n          return val\n        }\n        const obj = parse(val)\n        if (obj.num === null) {\n          return val\n        }\n        const fmt = val.has('#Ordinal') ? 'TextOrdinal' : 'TextCardinal'\n        const str = format(obj, fmt)\n        val.replaceWith(str, { tags: true })\n        val.tag('TextValue')\n        return val\n      })\n      return new Numbers(res.document, res.pointer)\n    }\n    /** convert ordinal to cardinal form, like 'eight', or '8' */\n    toCardinal() {\n      const m = this\n      const res = m.map(val => {\n        if (!val.has('#Ordinal')) {\n          return val\n        }\n        const obj = parse(val)\n        if (obj.num === null) {\n          return val\n        }\n        const fmt = val.has('#TextValue') ? 'TextCardinal' : 'Cardinal'\n        const str = format(obj, fmt)\n        val.replaceWith(str, { tags: true })\n        val.tag('Cardinal')\n        return val\n      })\n      return new Numbers(res.document, res.pointer)\n    }\n    /** convert cardinal to ordinal form, like 'eighth', or '8th' */\n    toOrdinal() {\n      const m = this\n      const res = m.map(val => {\n        if (val.has('#Ordinal')) {\n          return val\n        }\n        const obj = parse(val)\n        if (obj.num === null) {\n          return val\n        }\n        const fmt = val.has('#TextValue') ? 'TextOrdinal' : 'Ordinal'\n        const str = format(obj, fmt)\n        val.replaceWith(str, { tags: true })\n        val.tag('Ordinal')\n        return val\n      })\n      return new Numbers(res.document, res.pointer)\n    }\n\n    /** return only numbers that are == n */\n    isEqual(n) {\n      return this.filter(val => {\n        const num = parse(val).num\n        return num === n\n      })\n    }\n    /** return only numbers that are > n*/\n    greaterThan(n) {\n      return this.filter(val => {\n        const num = parse(val).num\n        return num > n\n      })\n    }\n    /** return only numbers that are < n*/\n    lessThan(n) {\n      return this.filter(val => {\n        const num = parse(val).num\n        return num < n\n      })\n    }\n    /** return only numbers > min and < max */\n    between(min, max) {\n      return this.filter(val => {\n        const num = parse(val).num\n        return num > min && num < max\n      })\n    }\n    /** set these number to n */\n    set(n) {\n      if (n === undefined) {\n        return this // don't bother\n      }\n      if (typeof n === 'string') {\n        n = parse(n).num\n      }\n      const m = this\n      const res = m.map(val => {\n        const obj = parse(val)\n        obj.num = n\n        if (obj.num === null) {\n          return val\n        }\n        let fmt = val.has('#Ordinal') ? 'Ordinal' : 'Cardinal'\n        if (val.has('#TextValue')) {\n          fmt = val.has('#Ordinal') ? 'TextOrdinal' : 'TextCardinal'\n        }\n        let str = format(obj, fmt)\n        // add commas to number\n        if (obj.hasComma && fmt === 'Cardinal') {\n          str = Number(str).toLocaleString()\n        }\n        val = val.not('#Currency')\n        val.replaceWith(str, { tags: true })\n        // handle plural/singular unit\n        // agreeUnits(agree, val, obj)\n        return val\n      })\n      return new Numbers(res.document, res.pointer)\n    }\n    add(n) {\n      if (!n) {\n        return this // don't bother\n      }\n      if (typeof n === 'string') {\n        n = parse(n).num\n      }\n      const m = this\n      const res = m.map(val => {\n        const obj = parse(val)\n        if (obj.num === null) {\n          return val\n        }\n        obj.num += n\n        let fmt = val.has('#Ordinal') ? 'Ordinal' : 'Cardinal'\n        if (obj.isText) {\n          fmt = val.has('#Ordinal') ? 'TextOrdinal' : 'TextCardinal'\n        }\n        const str = format(obj, fmt)\n        val.replaceWith(str, { tags: true })\n        // handle plural/singular unit\n        // agreeUnits(agree, val, obj)\n        return val\n      })\n      return new Numbers(res.document, res.pointer)\n    }\n    /** decrease each number by n*/\n    subtract(n, agree) {\n      return this.add(n * -1, agree)\n    }\n    /** increase each number by 1 */\n    increment(agree) {\n      return this.add(1, agree)\n    }\n    /** decrease each number by 1 */\n    decrement(agree) {\n      return this.add(-1, agree)\n    }\n    // overloaded - keep Numbers class\n    update(pointer) {\n      const m = new Numbers(this.document, pointer)\n      m._cache = this._cache // share this full thing\n      return m\n    }\n  }\n  // aliases\n  Numbers.prototype.toNice = Numbers.prototype.toLocaleString\n  Numbers.prototype.isBetween = Numbers.prototype.between\n  Numbers.prototype.minus = Numbers.prototype.subtract\n  Numbers.prototype.plus = Numbers.prototype.add\n  Numbers.prototype.equals = Numbers.prototype.isEqual\n\n  View.prototype.numbers = function (n) {\n    let m = find(this)\n    m = m.getNth(n)\n    return new Numbers(this.document, m.pointer)\n  }\n  View.prototype.percentages = function (n) {\n    let m = find(this)\n    m = m.filter(v => v.has('#Percent') || v.after('^percent'))\n    m = m.getNth(n)\n    return new Numbers(this.document, m.pointer)\n  }\n  View.prototype.money = function (n) {\n    let m = find(this)\n    m = m.filter(v => v.has('#Money') || v.after('^#Currency'))\n    m = m.getNth(n)\n    return new Numbers(this.document, m.pointer)\n  }\n  // alias\n  View.prototype.values = View.prototype.numbers\n}\nexport default addMethod\n"
  },
  {
    "path": "src/3-three/numbers/numbers/find.js",
    "content": "const ones = 'one|two|three|four|five|six|seven|eight|nine'\nconst tens = 'twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|fourty'\nconst teens = 'eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen'\n\n// this is a bit of a mess\n// segment consecutive number-words into sensible chunks\nconst findNumbers = function (doc) {\n  let m = doc.match('#Value+')\n\n  //\"50 83\"\n  if (m.has('#NumericValue #NumericValue')) {\n    //a comma may mean two numbers\n    if (m.has('#Value @hasComma #Value')) {\n      m.splitAfter('@hasComma')\n    } else if (m.has('#NumericValue #Fraction')) {\n      m.splitAfter('#NumericValue #Fraction')\n    } else {\n      m = m.splitAfter('#NumericValue')\n    }\n  }\n\n  //three-length\n  if (m.has('#Value #Value #Value') && !m.has('#Multiple')) {\n    //twenty-five-twenty\n    if (m.has('(' + tens + ') #Cardinal #Cardinal')) {\n      m = m.splitAfter('(' + tens + ') #Cardinal')\n    }\n  }\n\n  //two-length ones\n  if (m.has('#Value #Value')) {\n    //june 21st 1992 is two seperate values\n    if (m.has('#NumericValue #NumericValue')) {\n      m = m.splitOn('#Year')\n    }\n    //sixty fifteen\n    if (m.has('(' + tens + ') (' + teens + ')')) {\n      m = m.splitAfter('(' + tens + ')')\n    }\n\n    //\"72 82\"\n    const double = m.match('#Cardinal #Cardinal')\n    if (double.found && !m.has('(point|decimal|#Fraction)')) {\n      //not 'two hundred'\n      if (!double.has('#Cardinal (#Multiple|point|decimal)')) {\n        // two fifty five\n        const noMultiple = m.has(`(${ones}) (${tens})`)\n        // twenty one\n        const tensVal = double.has('(' + tens + ') #Cardinal')\n        // hundredOne\n        const multVal = double.has('#Multiple #Value')\n        //one proper way, 'twenty one', or 'hundred one'\n        if (!noMultiple && !tensVal && !multVal) {\n          // double = double.firstTerm()\n          double.terms().forEach(d => {\n            m = m.splitOn(d)\n          })\n        }\n      }\n    }\n\n    //seventh fifth\n    if (m.match('#Ordinal #Ordinal').match('#TextValue').found && !m.has('#Multiple')) {\n      //the one proper way, 'twenty first'\n      if (!m.has('(' + tens + ') #Ordinal')) {\n        m = m.splitAfter('#Ordinal')\n      }\n    }\n    //fifth five\n    m = m.splitBefore('#Ordinal [#Cardinal]', 0)\n    //five 2017 (support '5 hundred', and 'twenty 5'\n    if (m.has('#TextValue #NumericValue') && !m.has('(' + tens + '|#Multiple)')) {\n      m = m.splitBefore('#TextValue #NumericValue')\n    }\n  }\n\n  //5-8\n  m = m.splitAfter('#NumberRange')\n  // june 5th 1999\n  m = m.splitBefore('#Year')\n  return m\n}\n\nexport default findNumbers\n"
  },
  {
    "path": "src/3-three/numbers/numbers/format/index.js",
    "content": "import numOrdinal from './toOrdinal/numOrdinal.js'\nimport textOrdinal from './toOrdinal/textOrdinal.js'\nimport textCardinal from './toText/index.js'\nimport makeSuffix from './suffix.js'\n\nconst format = function (obj, fmt) {\n  if (fmt === 'TextOrdinal') {\n    const { prefix, suffix } = makeSuffix(obj)\n    return prefix + textOrdinal(obj) + suffix\n  }\n  if (fmt === 'Ordinal') {\n    return obj.prefix + numOrdinal(obj) + obj.suffix\n  }\n  if (fmt === 'TextCardinal') {\n    const { prefix, suffix } = makeSuffix(obj)\n    return prefix + textCardinal(obj) + suffix\n  }\n  // assume Cardinal\n  let num = obj.num\n  if (obj.hasComma) {\n    num = num.toLocaleString()\n  }\n  return obj.prefix + String(num) + obj.suffix\n}\nexport default format"
  },
  {
    "path": "src/3-three/numbers/numbers/format/suffix.js",
    "content": "const prefixes = {\n  '¢': 'cents',\n  $: 'dollars',\n  '£': 'pounds',\n  '¥': 'yen',\n  '€': 'euros',\n  '₡': 'colón',\n  '฿': 'baht',\n  '₭': 'kip',\n  '₩': 'won',\n  '₹': 'rupees',\n  '₽': 'ruble',\n  '₺': 'liras',\n}\nconst suffixes = {\n  '%': 'percent',\n  // s: 'seconds',\n  // cm: 'centimetres',\n  // km: 'kilometres',\n  // ft: 'feet',\n  '°': 'degrees'\n}\n\nconst addSuffix = function (obj) {\n  const res = {\n    suffix: '',\n    prefix: obj.prefix,\n  }\n  // $5 to 'five dollars'\n  if (prefixes.hasOwnProperty(obj.prefix)) {\n    res.suffix += ' ' + prefixes[obj.prefix]\n    res.prefix = ''\n  }\n  // 5% to 'five percent'\n  if (suffixes.hasOwnProperty(obj.suffix)) {\n    res.suffix += ' ' + suffixes[obj.suffix]\n  }\n  if (res.suffix && obj.num === 1) {\n    res.suffix = res.suffix.replace(/s$/, '')\n  }\n  // misc other suffixes\n  if (!res.suffix && obj.suffix) {\n    res.suffix += ' ' + obj.suffix\n  }\n  return res\n}\n\nexport default addSuffix"
  },
  {
    "path": "src/3-three/numbers/numbers/format/toOrdinal/numOrdinal.js",
    "content": "import toString from '../../_toString.js'\n\n/**\n * turn a number like 5 into an ordinal like 5th\n */\nconst numOrdinal = function (obj) {\n  const num = obj.num\n  if (!num && num !== 0) {\n    return null\n  }\n  //the teens are all 'th'\n  const tens = num % 100\n  if (tens > 10 && tens < 20) {\n    return String(num) + 'th'\n  }\n  //the rest of 'em\n  const mapping = {\n    0: 'th',\n    1: 'st',\n    2: 'nd',\n    3: 'rd',\n  }\n  let str = toString(num)\n  const last = str.slice(str.length - 1, str.length)\n  if (mapping[last]) {\n    str += mapping[last]\n  } else {\n    str += 'th'\n  }\n  return str\n}\n\nexport default numOrdinal\n"
  },
  {
    "path": "src/3-three/numbers/numbers/format/toOrdinal/textOrdinal.js",
    "content": "import textValue from '../toText/index.js'\n\nconst irregulars = {\n  one: 'first',\n  two: 'second',\n  three: 'third',\n  five: 'fifth',\n  eight: 'eighth',\n  nine: 'ninth',\n  twelve: 'twelfth',\n  twenty: 'twentieth',\n  thirty: 'thirtieth',\n  forty: 'fortieth',\n  fourty: 'fourtieth',\n  fifty: 'fiftieth',\n  sixty: 'sixtieth',\n  seventy: 'seventieth',\n  eighty: 'eightieth',\n  ninety: 'ninetieth',\n}\n\n/**\n * convert a javascript number to 'twentieth' format\n * */\nconst textOrdinal = obj => {\n  const words = textValue(obj).split(' ')\n  //convert the last number to an ordinal\n  const last = words[words.length - 1]\n  if (irregulars.hasOwnProperty(last)) {\n    words[words.length - 1] = irregulars[last]\n  } else {\n    words[words.length - 1] = last.replace(/y$/, 'i') + 'th'\n  }\n  return words.join(' ')\n}\n\nexport default textOrdinal\n"
  },
  {
    "path": "src/3-three/numbers/numbers/format/toText/data.js",
    "content": "const tens_mapping = [\n  ['ninety', 90],\n  ['eighty', 80],\n  ['seventy', 70],\n  ['sixty', 60],\n  ['fifty', 50],\n  ['forty', 40],\n  ['thirty', 30],\n  ['twenty', 20],\n]\nconst ones_mapping = [\n  '',\n  'one',\n  'two',\n  'three',\n  'four',\n  'five',\n  'six',\n  'seven',\n  'eight',\n  'nine',\n  'ten',\n  'eleven',\n  'twelve',\n  'thirteen',\n  'fourteen',\n  'fifteen',\n  'sixteen',\n  'seventeen',\n  'eighteen',\n  'nineteen',\n]\n\nconst sequence = [\n  [1e24, 'septillion'],\n  [1e20, 'hundred sextillion'],\n  [1e21, 'sextillion'],\n  [1e20, 'hundred quintillion'],\n  [1e18, 'quintillion'],\n  [1e17, 'hundred quadrillion'],\n  [1e15, 'quadrillion'],\n  [1e14, 'hundred trillion'],\n  [1e12, 'trillion'],\n  [1e11, 'hundred billion'],\n  [1e9, 'billion'],\n  [1e8, 'hundred million'],\n  [1e6, 'million'],\n  [100000, 'hundred thousand'],\n  [1000, 'thousand'],\n  [100, 'hundred'],\n  [1, 'one'],\n]\nexport { sequence, tens_mapping, ones_mapping }\n"
  },
  {
    "path": "src/3-three/numbers/numbers/format/toText/index.js",
    "content": "import toString from '../../_toString.js'\nimport { sequence, ones_mapping, tens_mapping } from './data.js'\n/**\n * turns an integer/float into.ber, like 'fifty-five'\n */\n\n//turn number into an array of magnitudes, like [[5, million], [2, hundred]]\nconst breakdown_magnitudes = function (num) {\n  let working = num\n  const have = []\n  sequence.forEach(a => {\n    if (num >= a[0]) {\n      const howmany = Math.floor(working / a[0])\n      working -= howmany * a[0]\n      if (howmany) {\n        have.push({\n          unit: a[1],\n          count: howmany,\n        })\n      }\n    }\n  })\n  return have\n}\n\n//turn numbers from 100-0 into their text\nconst breakdown_hundred = function (num) {\n  const arr = []\n  if (num > 100) {\n    return arr //something bad happened..\n  }\n  for (let i = 0; i < tens_mapping.length; i++) {\n    if (num >= tens_mapping[i][1]) {\n      num -= tens_mapping[i][1]\n      arr.push(tens_mapping[i][0])\n    }\n  }\n  //(hopefully) we should only have 20-0 now\n  if (ones_mapping[num]) {\n    arr.push(ones_mapping[num])\n  }\n  return arr\n}\n\n/** print-out 'point eight nine'*/\nconst handle_decimal = num => {\n  const names = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']\n  const arr = []\n  //parse it out like a string, because js math is such shit\n  const str = toString(num)\n  const decimal = str.match(/\\.([0-9]+)/)\n  if (!decimal || !decimal[0]) {\n    return arr\n  }\n  arr.push('point')\n  const decimals = decimal[0].split('')\n  for (let i = 0; i < decimals.length; i++) {\n    arr.push(names[decimals[i]])\n  }\n  return arr\n}\n\n/** turns an integer into a textual number */\nconst toText = function (obj) {\n  let num = obj.num\n  // handle zero, quickly\n  if (num === 0 || num === '0') {\n    return 'zero' // no?\n  }\n  //big numbers, north of sextillion, aren't gonna work well..\n  //keep them small..\n  if (num > 1e21) {\n    num = toString(num)\n  }\n  let arr = []\n  //handle negative numbers\n  if (num < 0) {\n    arr.push('minus')\n    num = Math.abs(num)\n  }\n  //break-down into units, counts\n  const units = breakdown_magnitudes(num)\n  //build-up the string from its components\n  for (let i = 0; i < units.length; i++) {\n    let unit_name = units[i].unit\n    if (unit_name === 'one') {\n      unit_name = ''\n      //put an 'and' in here\n      if (arr.length > 1) {\n        arr.push('and')\n      }\n    }\n    arr = arr.concat(breakdown_hundred(units[i].count))\n    arr.push(unit_name)\n  }\n  //also support decimals - 'point eight'\n  arr = arr.concat(handle_decimal(num))\n  //remove empties\n  arr = arr.filter(s => s)\n  if (arr.length === 0) {\n    arr[0] = ''\n  }\n  return arr.join(' ')\n}\n\nexport default toText\n\n// console.log(to_text(-1000.8));\n"
  },
  {
    "path": "src/3-three/numbers/numbers/isUnit.js",
    "content": "import parse from './parse/index.js'\n\nconst isArray = arr => Object.prototype.toString.call(arr) === '[object Array]'\n\n// turn anything into {foo:true} format\nconst coerceToObject = function (input) {\n  if (typeof input === 'string' || typeof input === 'number') {\n    const tmp = {}\n    tmp[input] = true\n    return tmp\n  }\n  if (isArray(input)) {\n    return input.reduce((h, s) => {\n      h[s] = true\n      return h\n    }, {})\n  }\n  return input || {}\n}\n\n// only return values with the given unit\nconst isUnit = function (doc, input = {}) {\n  input = coerceToObject(input)\n  return doc.filter(p => {\n    const { unit } = parse(p)\n    if (unit && input[unit] === true) {\n      return true\n    }\n    return false\n  })\n}\nexport default isUnit\n"
  },
  {
    "path": "src/3-three/numbers/numbers/parse/index.js",
    "content": "import parseText from './toNumber/index.js'\nimport parseFraction from '../../fractions/parse.js'\n\nconst parseNumeric = function (str, m) {\n  str = str.replace(/,/g, '')\n  //parse a numeric-number\n  const arr = str.split(/([0-9.,]*)/)\n  // eslint-disable-next-line prefer-const\n  let [prefix, num] = arr\n  let suffix = arr.slice(2).join('')\n  if (num !== '' && m.length < 2) {\n    num = Number(num || str)\n    //ensure that num is an actual number\n    if (typeof num !== 'number') {\n      num = null\n    }\n    // strip an ordinal off the suffix\n    suffix = suffix || ''\n    if (suffix === 'st' || suffix === 'nd' || suffix === 'rd' || suffix === 'th') {\n      suffix = ''\n    }\n    // support M for million, k for thousand\n    // if (suffix === 'm' || suffix === 'M') {\n    //   num *= 1000000\n    //   suffix = ''\n    // }\n    // if (suffix === 'k' || suffix === 'k') {\n    //   num *= 1000\n    //   suffix = ''\n    // }\n    return {\n      prefix: prefix || '',\n      num: num,\n      suffix: suffix,\n    }\n  }\n  return null\n}\n\n// get a numeric value from this phrase\nconst parseNumber = function (m) {\n  if (typeof m === 'string') {\n    return { num: parseText(m) }\n  }\n  let str = m.text('reduced')\n  // reach for '12 litres'\n  const unit = m.growRight('#Unit').match('#Unit$').text('machine')\n  // is it in '3,123' format?\n  const hasComma = /[0-9],[0-9]/.test(m.text('text'))\n  // parse a numeric-number like '$4.00'\n  if (m.terms().length === 1 && !m.has('#Multiple')) {\n    const res = parseNumeric(str, m)\n    if (res !== null) {\n      res.hasComma = hasComma\n      res.unit = unit\n      return res\n    }\n  }\n  // -- parse text-formats --\n  // Fractions: remove 'and a half' etc. from the end\n  let frPart = m.match('#Fraction{2,}$')\n  frPart = frPart.found === false ? m.match('^#Fraction$') : frPart\n  let fraction = null\n  if (frPart.found) {\n    if (frPart.has('#Value and #Value #Fraction')) {\n      frPart = frPart.match('and #Value #Fraction')\n    }\n    fraction = parseFraction(frPart)\n    // remove it from our string\n    m = m.not(frPart)\n    m = m.not('and$')\n    str = m.text('reduced')\n  }\n  let num = 0\n  if (str) {\n    num = parseText(str) || 0\n  }\n  // apply numeric fraction\n  if (fraction && fraction.decimal) {\n    num += fraction.decimal\n  }\n\n\n  return {\n    hasComma,\n    prefix: '',\n    num,\n    suffix: '',\n    isOrdinal: m.has('#Ordinal'),\n    isText: m.has('#TextValue'),\n    isFraction: m.has('#Fraction'),\n    isMoney: m.has('#Money'),\n    unit\n  }\n}\nexport default parseNumber\n"
  },
  {
    "path": "src/3-three/numbers/numbers/parse/toNumber/data.js",
    "content": "export default {\n  ones: {\n    zeroth: 0,\n    first: 1,\n    second: 2,\n    third: 3,\n    fourth: 4,\n    fifth: 5,\n    sixth: 6,\n    seventh: 7,\n    eighth: 8,\n    ninth: 9,\n    zero: 0,\n    one: 1,\n    two: 2,\n    three: 3,\n    four: 4,\n    five: 5,\n    six: 6,\n    seven: 7,\n    eight: 8,\n    nine: 9,\n  },\n  teens: {\n    tenth: 10,\n    eleventh: 11,\n    twelfth: 12,\n    thirteenth: 13,\n    fourteenth: 14,\n    fifteenth: 15,\n    sixteenth: 16,\n    seventeenth: 17,\n    eighteenth: 18,\n    nineteenth: 19,\n    ten: 10,\n    eleven: 11,\n    twelve: 12,\n    thirteen: 13,\n    fourteen: 14,\n    fifteen: 15,\n    sixteen: 16,\n    seventeen: 17,\n    eighteen: 18,\n    nineteen: 19,\n  },\n  tens: {\n    twentieth: 20,\n    thirtieth: 30,\n    fortieth: 40,\n    fourtieth: 40,\n    fiftieth: 50,\n    sixtieth: 60,\n    seventieth: 70,\n    eightieth: 80,\n    ninetieth: 90,\n    twenty: 20,\n    thirty: 30,\n    forty: 40,\n    fourty: 40,\n    fifty: 50,\n    sixty: 60,\n    seventy: 70,\n    eighty: 80,\n    ninety: 90,\n  },\n  multiples: {\n    hundredth: 100,\n    thousandth: 1000,\n    millionth: 1e6,\n    billionth: 1e9,\n    trillionth: 1e12,\n    quadrillionth: 1e15,\n    quintillionth: 1e18,\n    sextillionth: 1e21,\n    septillionth: 1e24,\n    hundred: 100,\n    thousand: 1000,\n    million: 1e6,\n    billion: 1e9,\n    trillion: 1e12,\n    quadrillion: 1e15,\n    quintillion: 1e18,\n    sextillion: 1e21,\n    septillion: 1e24,\n    grand: 1000,\n  },\n}\n"
  },
  {
    "path": "src/3-three/numbers/numbers/parse/toNumber/findModifiers.js",
    "content": "//support global multipliers, like 'half-million' by doing 'million' then multiplying by 0.5\nconst findModifiers = str => {\n  const mults = [\n    {\n      reg: /^(minus|negative)[\\s-]/i,\n      mult: -1,\n    },\n    {\n      reg: /^(a\\s)?half[\\s-](of\\s)?/i,\n      mult: 0.5,\n    },\n    //  {\n    //   reg: /^(a\\s)?quarter[\\s\\-]/i,\n    //   mult: 0.25\n    // }\n  ]\n  for (let i = 0; i < mults.length; i++) {\n    if (mults[i].reg.test(str) === true) {\n      return {\n        amount: mults[i].mult,\n        str: str.replace(mults[i].reg, ''),\n      }\n    }\n  }\n  return {\n    amount: 1,\n    str: str,\n  }\n}\n\nexport default findModifiers\n"
  },
  {
    "path": "src/3-three/numbers/numbers/parse/toNumber/index.js",
    "content": "import findModifiers from './findModifiers.js'\nimport words from './data.js'\nimport isValid from './validate.js'\nimport parseDecimals from './parseDecimals.js'\nimport parseNumeric from './parseNumeric.js'\nconst improperFraction = /^([0-9,. ]+)\\/([0-9,. ]+)$/\n\n//some numbers we know\nconst casualForms = {\n  'a few': 3,\n  'a couple': 2,\n  'a dozen': 12,\n  'two dozen': 24,\n  zero: 0,\n}\n\n// a 'section' is something like 'fifty-nine thousand'\n// turn a section into something we can add to - like 59000\nconst section_sum = obj => {\n  return Object.keys(obj).reduce((sum, k) => {\n    sum += obj[k]\n    return sum\n  }, 0)\n}\n\n//turn a string into a number\nconst parse = function (str) {\n  //convert some known-numbers\n  if (casualForms.hasOwnProperty(str) === true) {\n    return casualForms[str]\n  }\n  //'a/an' is 1\n  if (str === 'a' || str === 'an') {\n    return 1\n  }\n  const modifier = findModifiers(str)\n  str = modifier.str\n  let last_mult = null\n  let has = {}\n  let sum = 0\n  let isNegative = false\n  const terms = str.split(/[ -]/)\n  // const isFraction = findFraction(terms)\n  for (let i = 0; i < terms.length; i++) {\n    let w = terms[i]\n    w = parseNumeric(w)\n\n    if (!w || w === 'and') {\n      continue\n    }\n    if (w === '-' || w === 'negative') {\n      isNegative = true\n      continue\n    }\n    if (w.charAt(0) === '-') {\n      isNegative = true\n      w = w.substring(1)\n    }\n\n    //decimal mode\n    if (w === 'point') {\n      sum += section_sum(has)\n      sum += parseDecimals(terms.slice(i + 1, terms.length))\n      sum *= modifier.amount\n      return sum\n    }\n\n    //improper fraction\n    const fm = w.match(improperFraction)\n    if (fm) {\n      const num = parseFloat(fm[1].replace(/[, ]/g, ''))\n      const denom = parseFloat(fm[2].replace(/[, ]/g, ''))\n      if (denom) {\n        sum += num / denom || 0\n      }\n      continue\n    }\n    // try to support 'two fifty'\n    if (words.tens.hasOwnProperty(w)) {\n      if (has.ones && Object.keys(has).length === 1) {\n        sum = has.ones * 100\n        has = {}\n      }\n    }\n\n    //prevent mismatched units, like 'seven eleven' if not a fraction\n    if (isValid(w, has) === false) {\n      return null\n    }\n\n    //buildOut section, collect 'has' values\n    if (/^[0-9.]+$/.test(w)) {\n      has.ones = parseFloat(w) //not technically right\n    } else if (words.ones.hasOwnProperty(w) === true) {\n      has.ones = words.ones[w]\n    } else if (words.teens.hasOwnProperty(w) === true) {\n      has.teens = words.teens[w]\n    } else if (words.tens.hasOwnProperty(w) === true) {\n      has.tens = words.tens[w]\n    } else if (words.multiples.hasOwnProperty(w) === true) {\n      let mult = words.multiples[w]\n\n      //something has gone wrong : 'two hundred five hundred'\n      //possibly because it's a fraction\n      if (mult === last_mult) {\n        return null\n      }\n      //support 'hundred thousand'\n      //this one is tricky..\n      if (mult === 100 && terms[i + 1] !== undefined) {\n        const w2 = terms[i + 1]\n        if (words.multiples[w2]) {\n          mult *= words.multiples[w2] //hundredThousand/hundredMillion\n          i += 1\n        }\n      }\n      //natural order of things\n      //five thousand, one hundred..\n      if (last_mult === null || mult < last_mult) {\n        sum += (section_sum(has) || 1) * mult\n        last_mult = mult\n        has = {}\n      } else {\n        //maybe hundred .. thousand\n        sum += section_sum(has)\n        last_mult = mult\n        sum = (sum || 1) * mult\n        has = {}\n      }\n    }\n  }\n  //dump the remaining has values\n  sum += section_sum(has)\n  //post-process add modifier\n  sum *= modifier.amount\n  sum *= isNegative ? -1 : 1\n  //dont return 0, if it went straight-through\n  if (sum === 0 && Object.keys(has).length === 0) {\n    return null\n  }\n  return sum\n}\n\nexport default parse\n"
  },
  {
    "path": "src/3-three/numbers/numbers/parse/toNumber/parseDecimals.js",
    "content": "import words from './data.js'\n\n//concatenate into a string with leading '0.'\nconst parseDecimals = function (arr) {\n  let str = '0.'\n  for (let i = 0; i < arr.length; i++) {\n    const w = arr[i]\n    if (words.ones.hasOwnProperty(w) === true) {\n      str += words.ones[w]\n    } else if (words.teens.hasOwnProperty(w) === true) {\n      str += words.teens[w]\n    } else if (words.tens.hasOwnProperty(w) === true) {\n      str += words.tens[w]\n    } else if (/^[0-9]$/.test(w) === true) {\n      str += w\n    } else {\n      return 0\n    }\n  }\n  return parseFloat(str)\n}\n\nexport default parseDecimals\n"
  },
  {
    "path": "src/3-three/numbers/numbers/parse/toNumber/parseNumeric.js",
    "content": "//parse a string like \"4,200.1\" into Number 4200.1\nconst parseNumeric = str => {\n  //remove ordinal - 'th/rd'\n  str = str.replace(/1st$/, '1')\n  str = str.replace(/2nd$/, '2')\n  str = str.replace(/3rd$/, '3')\n  str = str.replace(/([4567890])r?th$/, '$1')\n  //remove prefixes\n  str = str.replace(/^[$€¥£¢]/, '')\n  //remove suffixes\n  str = str.replace(/[%$€¥£¢]$/, '')\n  //remove commas\n  str = str.replace(/,/g, '')\n  //split '5kg' from '5'\n  str = str.replace(/([0-9])([a-z\\u00C0-\\u00FF]{1,2})$/, '$1')\n  return str\n}\n\nexport default parseNumeric\n"
  },
  {
    "path": "src/3-three/numbers/numbers/parse/toNumber/validate.js",
    "content": "import words from './data.js'\n\n//prevent things like 'fifteen ten', and 'five sixty'\nconst isValid = (w, has) => {\n  if (words.ones.hasOwnProperty(w)) {\n    if (has.ones || has.teens) {\n      return false\n    }\n  } else if (words.teens.hasOwnProperty(w)) {\n    if (has.ones || has.teens || has.tens) {\n      return false\n    }\n  } else if (words.tens.hasOwnProperty(w)) {\n    if (has.ones || has.teens || has.tens) {\n      return false\n    }\n  }\n  return true\n}\nexport default isValid\n"
  },
  {
    "path": "src/3-three/numbers/plugin.js",
    "content": "import fractions from './fractions/api.js'\nimport numbers from './numbers/api.js'\n\nconst api = function (View) {\n  fractions(View)\n  numbers(View)\n}\n\nexport default {\n  api,\n\n  // add @greaterThan, @lessThan\n  // mutate: world => {\n  //   let termMethods = world.methods.one.termMethods\n\n  //   termMethods.lessThan = function (term) {\n  //     return false //TODO: implement\n  //     // return /[aeiou]/.test(term.text)\n  //   }\n  // },\n}\n"
  },
  {
    "path": "src/3-three/redact/plugin.js",
    "content": "const defaults = {\n  people: true,\n  emails: true,\n  phoneNumbers: true,\n  places: true,\n}\n\nconst redact = function (opts = {}) {\n  opts = Object.assign({}, defaults, opts)\n  if (opts.people !== false) {\n    this.people().replaceWith('██████████')\n  }\n  if (opts.emails !== false) {\n    this.emails().replaceWith('██████████')\n  }\n  if (opts.places !== false) {\n    this.places().replaceWith('██████████')\n  }\n  if (opts.phoneNumbers !== false) {\n    this.phoneNumbers().replaceWith('███████')\n  }\n  return this\n}\n\nconst plugin = {\n  api: function (View) {\n    View.prototype.redact = redact\n  }\n}\nexport default plugin\n"
  },
  {
    "path": "src/3-three/sentences/api.js",
    "content": "import isQuestion from './questions.js'\nimport parse from './parse/index.js'\nimport toPast from './conjugate/toPast.js'\nimport toPresent from './conjugate/toPresent.js'\nimport toFuture from './conjugate/toFuture.js'\nimport { toNegative, toPositive } from './conjugate/toNegative.js'\nimport toInfinitive from './conjugate/toInfinitive.js'\n\nconst api = function (View) {\n  class Sentences extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Sentences'\n    }\n    json(opts = {}) {\n      return this.map(m => {\n        const json = m.toView().json(opts)[0] || {}\n        const { subj, verb, pred, grammar } = parse(m)\n        json.sentence = {\n          subject: subj.text('normal'),\n          verb: verb.text('normal'),\n          predicate: pred.text('normal'),\n          grammar\n        }\n        return json\n      }, [])\n    }\n    toPastTense(n) {\n      return this.getNth(n).map(s => {\n        const parsed = parse(s)\n        return toPast(s, parsed)\n      })\n    }\n    toPresentTense(n) {\n      return this.getNth(n).map(s => {\n        const parsed = parse(s)\n        return toPresent(s, parsed)\n      })\n    }\n    toFutureTense(n) {\n      return this.getNth(n).map(s => {\n        const parsed = parse(s)\n        s = toFuture(s, parsed)\n        return s\n      })\n    }\n    toInfinitive(n) {\n      return this.getNth(n).map(s => {\n        const parsed = parse(s)\n        return toInfinitive(s, parsed)\n      })\n    }\n    toNegative(n) {\n      return this.getNth(n).map(vb => {\n        const parsed = parse(vb)\n        return toNegative(vb, parsed)\n      })\n    }\n    toPositive(n) {\n      return this.getNth(n).map(vb => {\n        const parsed = parse(vb)\n        return toPositive(vb, parsed)\n      })\n    }\n    isQuestion(n) {\n      return this.questions(n)\n    }\n    isExclamation(n) {\n      const res = this.filter(s => s.lastTerm().has('@hasExclamation'))\n      return res.getNth(n)\n    }\n    isStatement(n) {\n      const res = this.filter(s => !s.isExclamation().found && !s.isQuestion().found)\n      return res.getNth(n)\n    }\n    // overloaded - keep Sentences class\n    update(pointer) {\n      const m = new Sentences(this.document, pointer)\n      m._cache = this._cache // share this full thing\n      return m\n    }\n  }\n  // aliases\n  Sentences.prototype.toPresent = Sentences.prototype.toPresentTense\n  Sentences.prototype.toPast = Sentences.prototype.toPastTense\n  Sentences.prototype.toFuture = Sentences.prototype.toFutureTense\n\n  const methods = {\n    sentences: function (n) {\n      let m = this.map(s => s.fullSentence())\n      m = m.getNth(n)\n      return new Sentences(this.document, m.pointer)\n    },\n    questions: function (n) {\n      const m = isQuestion(this)\n      return m.getNth(n)\n    },\n  }\n\n  Object.assign(View.prototype, methods)\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/sentences/conjugate/toFuture.js",
    "content": "const toFuture = function (s) {\n  let verbs = s.verbs()\n  // translate the first verb, no-stress\n  const first = verbs.eq(0)\n  first.toFutureTense()\n  s = s.fullSentence()\n  verbs = s.verbs()//re-do it\n  // verbs.debug()\n  // force agreement with any 2nd/3rd verbs:\n  if (verbs.length > 1) {\n    verbs = verbs.slice(1)\n    // which following-verbs should we also change?\n    const toChange = verbs.filter((vb) => {\n      // remove any sorta infinitive - 'to engage'\n      if (vb.lookBehind('to$').found) {\n        return false\n      }\n      // is watching\n      if (vb.has('#Copula #Gerund')) {\n        return true\n      }\n      // keep -ing verbs\n      if (vb.has('#Gerund')) {\n        return false\n      }\n      // he is green and he is friendly\n      if (vb.has('#Copula')) {\n        return true\n      }\n      // 'he will see when he watches'\n      if (vb.has('#PresentTense') && !vb.has('#Infinitive') && vb.lookBefore('(he|she|it|that|which)$').found) {\n        return false\n      }\n      return true\n    })\n    // otherwise, change em too\n    if (toChange.found) {\n      toChange.forEach(m => {\n        //extra rules for 'is'\n        if (m.has('#Copula')) {\n          // when he was out..\n          m.match('was').replaceWith('is')\n          // when he is out\n          m.match('is').replaceWith('will be')\n          return\n        }\n        // if (m.has('#PastTense')) {\n        //   m.toPresentTense()\n        //   return\n        // }\n        m.toInfinitive()\n      })\n    }\n  }\n  return s\n}\nexport default toFuture"
  },
  {
    "path": "src/3-three/sentences/conjugate/toInfinitive.js",
    "content": "const toInfinitive = function (s) {\n  s.verbs().toInfinitive()\n  // s.compute('chunks')\n  return s\n}\nexport default toInfinitive"
  },
  {
    "path": "src/3-three/sentences/conjugate/toNegative.js",
    "content": "const toNegative = function (s) {\n  s.verbs().first().toNegative().compute('chunks')\n  return s\n}\nconst toPositive = function (s) {\n  s.verbs().first().toPositive().compute('chunks')\n  return s\n}\nexport { toNegative, toPositive }"
  },
  {
    "path": "src/3-three/sentences/conjugate/toPast.js",
    "content": "const toPast = function (s) {\n  let verbs = s.verbs()\n  // translate the first verb, no-stress\n  const first = verbs.eq(0)\n  // already past\n  if (first.has('#PastTense')) {\n    return s\n  }\n  first.toPastTense()\n\n  // force agreement with any 2nd/3rd verbs:\n  if (verbs.length > 1) {\n    verbs = verbs.slice(1)\n    // remove any sorta infinitive - 'to engage'\n    verbs = verbs.filter((v) => !v.lookBehind('to$').found)\n\n    // keep -ing verbs\n    verbs = verbs.if('#PresentTense')\n    verbs = verbs.notIf('#Gerund')\n\n    //run-on infinitive-list - 'to walk, sit and eat'\n    const list = s.match('to #Verb+ #Conjunction #Verb').terms()\n    verbs = verbs.not(list)\n\n    // otherwise, I guess so?\n    if (verbs.found) {\n      verbs.verbs().toPastTense()\n    }\n  }\n\n  // s.compute('chunks')\n  return s\n}\nexport default toPast"
  },
  {
    "path": "src/3-three/sentences/conjugate/toPresent.js",
    "content": "const toPresent = function (s) {\n  let verbs = s.verbs()\n  // translate the first verb, no-stress\n  const first = verbs.eq(0)\n  // already present\n  // if (first.has('#PresentTense')) {\n  //   return s\n  // }\n  first.toPresentTense()\n\n  // force agreement with any 2nd/3rd verbs:\n  if (verbs.length > 1) {\n    verbs = verbs.slice(1)\n    // remove any sorta infinitive - 'to engage'\n    verbs = verbs.filter((v) => !v.lookBehind('to$').found)\n\n    // keep -ing verbs\n    // verbs = verbs.if('#PresentTense')\n    verbs = verbs.notIf('#Gerund')\n\n    //run-on infinitive-list - 'to walk, sit and eat'\n    // let list = s.match('to #Verb+ #Conjunction #Verb').terms()\n    // verbs = verbs.not(list)\n\n    // otherwise, I guess so?\n    if (verbs.found) {\n      verbs.verbs().toPresentTense()\n    }\n  }\n\n  // s.compute('chunks')\n  return s\n}\nexport default toPresent"
  },
  {
    "path": "src/3-three/sentences/parse/index.js",
    "content": "import findMain from './mainClause.js'\n\nconst grammar = function (vb) {\n  let tense = null\n  if (vb.has('#PastTense')) {\n    tense = 'PastTense'\n  } else if (vb.has('#FutureTense')) {\n    tense = 'FutureTense'\n  } else if (vb.has('#PresentTense')) {\n    tense = 'PresentTense'\n  }\n  return {\n    tense\n  }\n}\n\nconst parse = function (s) {\n  const clauses = s.clauses()\n  const main = findMain(clauses)\n  const chunks = main.chunks()\n  let subj = s.none()\n  let verb = s.none()\n  let pred = s.none()\n  chunks.forEach((ch, i) => {\n    if (i === 0 && !ch.has('<Verb>')) {\n      subj = ch\n      return\n    }\n    if (!verb.found && ch.has('<Verb>')) {\n      verb = ch\n      return\n    }\n    if (verb.found) {\n      pred = pred.concat(ch)\n    }\n  })\n  // cleanup a missed parse\n  if (verb.found && !subj.found) {\n    subj = verb.before('<Noun>+').first()\n  }\n  return {\n    subj,\n    verb,\n    pred,\n    grammar: grammar(verb)\n  }\n}\nexport default parse"
  },
  {
    "path": "src/3-three/sentences/parse/mainClause.js",
    "content": "// if a clause starts with these, it's not a main clause\nconst subordinate = `(after|although|as|because|before|if|since|than|that|though|when|whenever|where|whereas|wherever|whether|while|why|unless|until|once)`\nconst relative = `(that|which|whichever|who|whoever|whom|whose|whomever)`\n\n//try to remove secondary clauses\nconst mainClause = function (s) {\n  let m = s\n  if (m.length === 1) {\n    return m\n  }\n  // if there's no verb, it's dependent\n  m = m.if('#Verb')\n  if (m.length === 1) {\n    return m\n  }\n  // this is a signal for subordinate-clauses\n  m = m.ifNo(subordinate)\n  m = m.ifNo('^even (if|though)')\n  m = m.ifNo('^so that')\n  m = m.ifNo('^rather than')\n  m = m.ifNo('^provided that')\n  if (m.length === 1) {\n    return m\n  }\n  // relative clauses\n  m = m.ifNo(relative)\n  if (m.length === 1) {\n    return m\n  }\n\n  // check for subordinating conjunctions -- must be at the beginning of the clause\n  m = m.ifNo('(^despite|^during|^before|^through|^throughout)')\n  if (m.length === 1) {\n    return m\n  }\n\n  // check for clauses beginning with Gerund (\"Taking ..., ...\")\n  m = m.ifNo('^#Gerund')\n  if (m.length === 1) {\n    return m\n  }\n\n  // did we go too far?\n  if (m.length === 0) {\n    m = s\n  }\n  // choose the first one?\n  return m.eq(0)\n}\nexport default mainClause\n"
  },
  {
    "path": "src/3-three/sentences/plugin.js",
    "content": "import api from './api.js'\n\nexport default { api }\n"
  },
  {
    "path": "src/3-three/sentences/questions.js",
    "content": "//is this sentence asking a question?\nconst isQuestion = function (doc) {\n  const clauses = doc.clauses()\n\n  // Has ellipsis at the end means it's probably not a question\n  // e.g., Is this just fantasy...\n  if (/\\.\\.$/.test(doc.out('text'))) {\n    return false\n  }\n\n  // Starts with question word, but has a comma, so probably not a question\n  // e.g., Why are we caught in a land slide, no escape from reality\n  if (doc.has('^#QuestionWord') && doc.has('@hasComma')) {\n    return false\n  }\n\n  // do you see it or not\n  if (doc.has('or not$')) {\n    return true\n  }\n\n  // Starts with a #QuestionWord\n  // e.g., What open your eyes look up to the skies and see\n  if (doc.has('^#QuestionWord')) {\n    return true\n  }\n\n  // Second word is a #QuestionWord\n  // e.g., I'm what a poor boy\n  // case ts.has('^\\w+\\s#QuestionWord'):\n  // return true;\n\n  // is it, do you - start of sentence\n  // e.g., Do I need no sympathy\n  if (doc.has('^(do|does|did|is|was|can|could|will|would|may) #Noun')) {\n    return true\n  }\n\n  // these are a little more loose..\n  // e.g., Must I be come easy come easy go\n  if (doc.has('^(have|must) you')) {\n    return true\n  }\n\n  // Clause starts with a question word\n  // e.g., Anyway the wind blows, what doesn't really matter to me\n  // if (clauses.has('^#QuestionWord')) {\n  //   return true\n  // }\n\n  //is wayne gretskzy alive\n  if (clauses.has('(do|does|is|was) #Noun+ #Adverb? (#Adjective|#Infinitive)$')) {\n    return true\n  }\n\n  // Probably not a question\n  return false\n}\n\nconst findQuestions = function (view) {\n  const hasQ = /\\?/\n  const { document } = view\n  return view.filter(m => {\n    const terms = m.docs[0] || []\n    const lastTerm = terms[terms.length - 1]\n    // is it not a full sentence?\n    if (!lastTerm || document[lastTerm.index[0]].length !== terms.length) {\n      return false\n    }\n    // does it end with a question mark?\n    if (hasQ.test(lastTerm.post)) {\n      return true\n    }\n    // try to guess a sentence without a question-mark\n    return isQuestion(m)\n  })\n}\nexport default findQuestions\n"
  },
  {
    "path": "src/3-three/topics/orgs/api.js",
    "content": "\nconst api = function (View) {\n  View.prototype.organizations = function (n) {\n    const m = this.match('#Organization+')\n    return m.getNth(n)\n  }\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/topics/people/api.js",
    "content": "import find from './find.js'\nimport parse from './parse.js'\nimport gender from './gender.js'\n\n\nconst addMethod = function (View) {\n  /**\n   *\n   */\n  class People extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'People'\n    }\n    parse(n) {\n      return this.getNth(n).map(parse)\n    }\n    json(n) {\n      const opts = typeof n === 'object' ? n : {}\n      return this.getNth(n).map(p => {\n        const json = p.toView().json(opts)[0]\n        const parsed = parse(p)\n        json.person = {\n          firstName: parsed.firstName.text('normal'),\n          lastName: parsed.lastName.text('normal'),\n          honorific: parsed.honorific.text('normal'),\n          presumed_gender: gender(parsed, p),\n        }\n        return json\n      }, [])\n    }\n    // used for co-reference resolution only\n    presumedMale() {\n      return this.filter(m => {\n        return m.has('(#MaleName|mr|mister|sr|jr|king|pope|prince|sir)')//todo configure these in .world\n      })\n    }\n    presumedFemale() {\n      return this.filter(m => {\n        return m.has('(#FemaleName|mrs|miss|queen|princess|madam)')\n      })\n    }\n    // overloaded - keep People class\n    update(pointer) {\n      const m = new People(this.document, pointer)\n      m._cache = this._cache // share this full thing\n      return m\n    }\n  }\n\n  View.prototype.people = function (n) {\n    let m = find(this)\n    m = m.getNth(n)\n    return new People(this.document, m.pointer)\n  }\n}\nexport default addMethod\n"
  },
  {
    "path": "src/3-three/topics/people/find.js",
    "content": "const find = function (doc) {\n  let m = doc.splitAfter('@hasComma')\n  m = m.match('#Honorific+? #Person+')\n  // Spencer's King\n  const poss = m.match('#Possessive').notIf('(his|her)') //her majesty ...\n  m = m.splitAfter(poss)\n  return m\n}\nexport default find\n"
  },
  {
    "path": "src/3-three/topics/people/gender.js",
    "content": "/*\n  Important notice - \n  this method makes many assumptions about gender-identity, in-order to assign grammatical gender.\n  it should not be used for any other purposes, other than resolving pronouns in english\n*/\nconst m = 'male'\nconst f = 'female'\n\n// known gendered honorifics\nconst honorifics = {\n  mr: m,\n  mrs: f,\n  miss: f,\n  madam: f,\n\n  // british stuff\n  king: m,\n  queen: f,\n  duke: m,\n  duchess: f,\n  baron: m,\n  baroness: f,\n  count: m,\n  countess: f,\n  prince: m,\n  princess: f,\n  sire: m,\n  dame: f,\n  lady: f,\n\n  ayatullah: m, //i think?\n\n  congressman: m,\n  congresswoman: f,\n  'first lady': f,\n\n  // marked as non-binary\n  mx: null,\n}\n\nconst predictGender = function (parsed, person) {\n  const { firstName, honorific } = parsed\n  // use first-name as signal-signal\n  if (firstName.has('#FemaleName')) {\n    return f\n  }\n  if (firstName.has('#MaleName')) {\n    return m\n  }\n  // use honorics as gender-signal\n  if (honorific.found) {\n    let hon = honorific.text('normal')\n    hon = hon.replace(/\\./g, '') //clean it up a bit\n    if (honorifics.hasOwnProperty(hon)) {\n      return honorifics[hon]\n    }\n    // her excelency\n    if (/^her /.test(hon)) {\n      return f\n    }\n    if (/^his /.test(hon)) {\n      return m\n    }\n  }\n  // offer used-pronouns as a signal\n  const after = person.after()\n  if (!after.has('#Person') && after.has('#Pronoun')) {\n    const pro = after.match('#Pronoun')\n    // manual use of gender-neutral\n    if (pro.has('(they|their)')) {\n      return null\n    }\n    const hasMasc = pro.has('(he|his)')\n    const hasFem = pro.has('(she|her|hers)')\n    if (hasMasc && !hasFem) {\n      return m\n    }\n    if (hasFem && !hasMasc) {\n      return f\n    }\n  }\n  return null\n}\nexport default predictGender\n"
  },
  {
    "path": "src/3-three/topics/people/parse.js",
    "content": "const parse = function (m) {\n  const res = {}\n  res.firstName = m.match('#FirstName+')\n  res.lastName = m.match('#LastName+')\n  res.honorific = m.match('#Honorific+')\n\n  const last = res.lastName\n  const first = res.firstName\n  if (!first.found || !last.found) {\n    // let p = m.clone()\n    // assume 'Mr Springer' is a last-name\n    if (!first.found && !last.found && m.has('^#Honorific .$')) {\n      res.lastName = m.match('.$')\n      return res\n    }\n  }\n  return res\n}\nexport default parse\n"
  },
  {
    "path": "src/3-three/topics/places/api.js",
    "content": "import find from './find.js'\n\nconst addMethod = function (View) {\n  View.prototype.places = function (n) {\n    let m = find(this)\n    m = m.getNth(n)\n    return new View(this.document, m.pointer)\n  }\n}\nexport default addMethod\n"
  },
  {
    "path": "src/3-three/topics/places/find.js",
    "content": "const find = function (doc) {\n  let m = doc.match('(#Place|#Address)+')\n\n  // split all commas except for 'paris, france'\n  let splits = m.match('@hasComma')\n  splits = splits.filter(c => {\n    // split 'europe, china'\n    if (c.has('(asia|africa|europe|america)$')) {\n      return true\n    }\n    // don't split 'paris, france'\n    if (c.has('(#City|#Region|#ProperNoun)$') && c.after('^(#Country|#Region)').found) {\n      return false\n    }\n    return true\n  })\n  m = m.splitAfter(splits)\n  return m\n}\nexport default find\n"
  },
  {
    "path": "src/3-three/topics/plugin.js",
    "content": "import people from './people/api.js'\nimport places from './places/api.js'\nimport orgs from './orgs/api.js'\nimport topics from './topics.js'\n\nconst api = function (View) {\n  people(View)\n  places(View)\n  orgs(View)\n  topics(View)\n}\nexport default { api }\n"
  },
  {
    "path": "src/3-three/topics/topics.js",
    "content": "\n//combine them with .topics() method\nconst find = function (n) {\n  const r = this.clauses()\n  // Find people, places, and organizations\n  let m = r.people()\n  m = m.concat(r.places())\n  m = m.concat(r.organizations())\n  m = m.not('(someone|man|woman|mother|brother|sister|father)')\n  //return them to normal ordering\n  m = m.sort('seq')\n  // m = m.unique()\n  m = m.getNth(n)\n  return m\n}\n\nconst api = function (View) {\n  View.prototype.topics = find\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/verbs/api/api.js",
    "content": "import find from '../find.js'\nimport toJSON from './toJSON.js'\nimport parseVerb from './parse/index.js'\nimport toInf from './conjugate/toInfinitive.js'\nimport toPast from './conjugate/toPast.js'\nimport toParticiple from './conjugate/toParticiple.js'\nimport toPresent from './conjugate/toPresent.js'\nimport toFuture from './conjugate/toFuture.js'\nimport toGerund from './conjugate/toGerund.js'\nimport getSubject from './parse/getSubject.js'\nimport getGrammar from './parse/grammar/index.js'\nimport toNegative from './conjugate/toNegative.js'\nimport { getTense } from './lib.js'\n\n\nconst api = function (View) {\n  class Verbs extends View {\n    constructor(document, pointer, groups) {\n      super(document, pointer, groups)\n      this.viewType = 'Verbs'\n    }\n    parse(n) {\n      return this.getNth(n).map(parseVerb)\n    }\n    json(opts, n) {\n      const m = this.getNth(n)\n      const arr = m.map(vb => {\n        const json = vb.toView().json(opts)[0] || {}\n        json.verb = toJSON(vb)\n        return json\n      }, [])\n      return arr\n    }\n    subjects(n) {\n      return this.getNth(n).map(vb => {\n        const parsed = parseVerb(vb)\n        return getSubject(vb, parsed).subject\n      })\n    }\n    adverbs(n) {\n      return this.getNth(n).map(vb => vb.match('#Adverb'))\n    }\n    isSingular(n) {\n      return this.getNth(n).filter(vb => {\n        return getSubject(vb).plural !== true\n      })\n    }\n    isPlural(n) {\n      return this.getNth(n).filter(vb => {\n        return getSubject(vb).plural === true\n      })\n    }\n    isImperative(n) {\n      return this.getNth(n).filter(vb => vb.has('#Imperative'))\n    }\n    toInfinitive(n) {\n      return this.getNth(n).map(vb => {\n        const parsed = parseVerb(vb)\n        const info = getGrammar(vb, parsed)\n        return toInf(vb, parsed, info.form)\n      })\n    }\n    toPresentTense(n) {\n      return this.getNth(n).map(vb => {\n        const parsed = parseVerb(vb)\n        const info = getGrammar(vb, parsed)\n        if (info.isInfinitive) {\n          return vb\n        }\n        return toPresent(vb, parsed, info.form)\n      })\n    }\n    toPastTense(n) {\n      return this.getNth(n).map(vb => {\n        const parsed = parseVerb(vb)\n        const info = getGrammar(vb, parsed)\n        if (info.isInfinitive) {\n          return vb\n        }\n        return toPast(vb, parsed, info.form)\n      })\n    }\n    toFutureTense(n) {\n      return this.getNth(n).map(vb => {\n        const parsed = parseVerb(vb)\n        const info = getGrammar(vb, parsed)\n        if (info.isInfinitive) {\n          return vb\n        }\n        return toFuture(vb, parsed, info.form)\n      })\n    }\n    toGerund(n) {\n      return this.getNth(n).map(vb => {\n        const parsed = parseVerb(vb)\n        const info = getGrammar(vb, parsed)\n        if (info.isInfinitive) {\n          return vb\n        }\n        return toGerund(vb, parsed, info.form)\n      })\n    }\n    toPastParticiple(n) {\n      return this.getNth(n).map(vb => {\n        const parsed = parseVerb(vb)\n        const info = getGrammar(vb, parsed)\n        if (info.isInfinitive) {\n          return vb\n        }\n        return toParticiple(vb, parsed, info.form)\n      })\n    }\n    conjugate(n) {\n      const { conjugate, toInfinitive } = this.world.methods.two.transform.verb\n      return this.getNth(n).map(vb => {\n        const parsed = parseVerb(vb)\n        const info = getGrammar(vb, parsed)\n        // allow imperatives like 'go!' to be conjugated here (only)\n        if (info.form === 'imperative') {\n          info.form = 'simple-present'\n        }\n        let inf = parsed.root.text('normal')\n        if (!parsed.root.has('#Infinitive')) {\n          const tense = getTense(parsed.root)\n          inf = toInfinitive(inf, vb.model, tense) || inf\n        }\n        return conjugate(inf, vb.model)\n      }, [])\n    }\n\n    /** return only verbs with 'not'*/\n    isNegative() {\n      return this.if('#Negative')\n    }\n    /**  return only verbs without 'not'*/\n    isPositive() {\n      return this.ifNo('#Negative')\n    }\n    /** remove 'not' from these verbs */\n    toPositive() {\n      const m = this.match('do not #Verb')\n      if (m.found) {\n        m.remove('do not')\n      }\n      return this.remove('#Negative')\n    }\n    toNegative(n) {\n      return this.getNth(n).map(vb => {\n        const parsed = parseVerb(vb)\n        const info = getGrammar(vb, parsed)\n        return toNegative(vb, parsed, info.form)\n      })\n    }\n    // overloaded - keep Verb class\n    update(pointer) {\n      const m = new Verbs(this.document, pointer)\n      m._cache = this._cache // share this full thing\n      return m\n    }\n  }\n  Verbs.prototype.toPast = Verbs.prototype.toPastTense\n  Verbs.prototype.toPresent = Verbs.prototype.toPresentTense\n  Verbs.prototype.toFuture = Verbs.prototype.toFutureTense\n\n  View.prototype.verbs = function (n) {\n    let vb = find(this)\n    vb = vb.getNth(n)\n    return new Verbs(this.document, vb.pointer)\n  }\n}\nexport default api\n"
  },
  {
    "path": "src/3-three/verbs/api/conjugate/toFuture.js",
    "content": "import { noop, getTense } from '../lib.js'\nconst keep = { tags: true }\n\nconst simple = (vb, parsed) => {\n  const { toInfinitive } = vb.methods.two.transform.verb\n  const { root, auxiliary } = parsed\n  // 'i may'\n  if (root.has('#Modal')) {\n    return vb\n  }\n  let str = root.text('normal')\n  str = toInfinitive(str, vb.model, getTense(root))\n  if (str) {\n    vb = vb.replace(root, str, keep)\n    vb.not('#Particle').tag('Verb')\n  }\n  vb.prepend('will').match('will').tag('Auxiliary')\n  vb.remove(auxiliary)\n  return vb\n}\n\n// 'will be walking'\nconst progressive = (vb, parsed) => {\n  const { conjugate, toInfinitive } = vb.methods.two.transform.verb\n  const { root, auxiliary } = parsed\n  let str = root.text('normal')\n  str = toInfinitive(str, vb.model, getTense(root))\n  if (str) {\n    str = conjugate(str, vb.model).Gerund\n    vb.replace(root, str, keep)\n    vb.not('#Particle').tag('PresentTense')\n  }\n  vb.remove(auxiliary)\n  vb.prepend('will be').match('will be').tag('Auxiliary')\n  return vb\n}\n\nconst forms = {\n  // walk ->\n  'infinitive': simple,\n  // he walks ->\n  'simple-present': simple,\n  // he walked\n  'simple-past': simple,\n  // he will walk ->\n  'simple-future': noop,\n\n  // is walking ->\n  'present-progressive': progressive,\n  // was walking ->\n  'past-progressive': progressive,\n  // will be walking ->\n  'future-progressive': noop,\n\n  // has walked ->\n  'present-perfect': (vb) => {\n    vb.match('(have|has)').replaceWith('will have')\n    return vb\n  },\n  // had walked ->\n  'past-perfect': vb => vb.replace('(had|has)', 'will have'),\n  // will have walked ->\n  'future-perfect': noop,\n\n  // has been walking\n  'present-perfect-progressive': vb => vb.replace('has', 'will have'),\n  // had been walking\n  'past-perfect-progressive': vb => vb.replace('had', 'will have'),\n  // will have been ->\n  'future-perfect-progressive': noop,\n\n  // got walked ->\n  // was walked ->\n  // was being walked ->\n  // had been walked ->\n  'passive-past': vb => {\n    if (vb.has('got')) {\n      return vb.replace('got', 'will get')\n    }\n    if (vb.has('(was|were)')) {\n      vb.replace('(was|were)', 'will be')\n      return vb.remove('being')\n    }\n    if (vb.has('(have|has|had) been')) {\n      return vb.replace('(have|has|had) been', 'will be')\n    }\n    return vb\n  },\n  // is being walked  ->\n  'passive-present': vb => {\n    vb.replace('being', 'will be')\n    vb.remove('(is|are|am)')\n    return vb\n  },\n  // will be walked ->\n  'passive-future': noop,\n  // would be walked ->\n  'present-conditional': vb => vb.replace('would', 'will'),\n  // would have been walked ->\n  'past-conditional': vb => vb.replace('would', 'will'),\n\n  // is going to drink ->\n  'auxiliary-future': noop,\n  // used to walk -> is walking\n  // did walk -> is walking\n  'auxiliary-past': vb => {\n    if (vb.has('used') && vb.has('to')) {\n      vb.replace('used', 'will')\n      return vb.remove('to')\n    }\n    vb.replace('did', 'will')\n    return vb\n  },\n  // we do walk ->\n  // he does walk ->\n  'auxiliary-present': vb => {\n    return vb.replace('(do|does)', 'will')\n  },\n\n  // must walk ->\n  'modal-infinitive': noop,\n  // must have walked\n  'modal-past': noop,\n  // started looking\n  'gerund-phrase': (vb, parsed) => {\n    parsed.root = parsed.root.not('#Gerund$')\n    simple(vb, parsed)\n    return vb.remove('(had|have)')\n  },\n  // wanted to walk\n  'want-infinitive': vb => {\n    vb.replace('(want|wants|wanted)', 'will want')\n    return vb\n  },\n}\n\nconst toFuture = function (vb, parsed, form) {\n  // console.log(form)\n  // is it already future-tense?\n  if (vb.has('will') || vb.has('going to')) {\n    return vb\n  }\n  if (forms.hasOwnProperty(form)) {\n    vb = forms[form](vb, parsed)\n    vb.fullSentence().compute(['tagger', 'chunks'])\n    return vb\n  }\n  return vb\n}\nexport default toFuture\n"
  },
  {
    "path": "src/3-three/verbs/api/conjugate/toGerund.js",
    "content": "import { getTense, isAreAm } from '../lib.js'\nconst keep = { tags: true }\n\n// all verb forms are the same\nconst toGerund = function (vb, parsed) {\n  // console.log(form)\n  const { toInfinitive, conjugate } = vb.methods.two.transform.verb\n  const { root, auxiliary } = parsed\n  if (vb.has('#Gerund')) {\n    return vb\n  }\n\n  // conjugate '-ing' verb\n  let str = root.text('normal')\n  str = toInfinitive(str, vb.model, getTense(root))\n  const gerund = conjugate(str, vb.model).Gerund\n  // 'are walking', 'is walking'\n  if (gerund) {\n    const aux = isAreAm(vb, parsed)\n    vb.replace(root, gerund, keep)\n    vb.remove(auxiliary)\n    vb.prepend(aux)//.match(aux)\n  }\n  // remove any existing auxiliary\n  // if (auxiliary.found) {\n  // vb.match(auxiliary).debug()\n  // vb.remove(auxiliary)\n  // }\n\n  vb.replace('not is', 'is not')\n  vb.replace('not are', 'are not')\n  vb.fullSentence().compute(['tagger', 'chunks'])\n  return vb\n}\nexport default toGerund\n"
  },
  {
    "path": "src/3-three/verbs/api/conjugate/toInfinitive.js",
    "content": "import { doDoes, getTense } from '../lib.js'\nconst keep = { tags: true }\n\n// all verb forms are the same\nconst toInf = function (vb, parsed) {\n  const { toInfinitive } = vb.methods.two.transform.verb\n  const { root, auxiliary } = parsed\n  const aux = auxiliary.terms().harden()\n  let str = root.text('normal')\n  str = toInfinitive(str, vb.model, getTense(root))\n  if (str) {\n    vb.replace(root, str, keep).tag('Verb').firstTerm().tag('Infinitive')\n  }\n  // remove any auxiliary terms\n  if (aux.found) {\n    vb.remove(aux)\n  }\n  // there is no real way to do this\n  // 'i not walk'?  'i walk not'?\n  if (parsed.negative.found) {\n    if (!vb.has('not')) {\n      vb.prepend('not')\n    }\n    const does = doDoes(vb, parsed)\n    vb.prepend(does)\n  }\n  vb.fullSentence().compute(['freeze', 'lexicon', 'preTagger', 'postTagger', 'unfreeze', 'chunks'])\n  return vb\n}\nexport default toInf\n"
  },
  {
    "path": "src/3-three/verbs/api/conjugate/toNegative.js",
    "content": "import { doDoes, toInf } from '../lib.js'\nconst keep = { tags: true }\n\n// do/does not walk \nconst doesNot = function (vb, parsed) {\n  const does = doDoes(vb, parsed)\n  vb.prepend(does + ' not')\n  return vb\n}\n\nconst isWas = function (vb) {\n  // not be\n  let m = vb.match('be')\n  if (m.found) {\n    m.prepend('not')\n    return vb\n  }\n  // will not\n  m = vb.match('(is|was|am|are|will|were)')\n  if (m.found) {\n    m.append('not')\n    return vb\n  }\n  return vb\n}\n\nconst hasCopula = (vb) => vb.has('(is|was|am|are|will|were|be)')\n\n//vaguely, turn 'he is cool' into 'he is not cool'\nconst forms = {\n\n\n  // he walks' -> 'he does not walk'\n  'simple-present': (vb, parsed) => {\n    // is/was\n    if (hasCopula(vb) === true) {\n      return isWas(vb, parsed)\n    }\n    // he walk\n    vb = toInf(vb, parsed)\n    // does not \n    vb = doesNot(vb, parsed)\n    return vb\n  },\n  // 'he walked' -> 'he did not walk'\n  'simple-past': (vb, parsed) => {\n    // is/was\n    if (hasCopula(vb) === true) {\n      return isWas(vb, parsed)\n    }\n    // he walk\n    vb = toInf(vb, parsed)\n    // vb.debug()\n    // did not walk\n    vb.prepend('did not')\n    return vb\n  },\n\n  // walk! -> 'do not walk'\n  'imperative': (vb) => {\n    vb.prepend('do not')\n    return vb\n  },\n  // walk -> does not walk\n  'infinitive': (vb, parsed) => {\n    if (hasCopula(vb) === true) {\n      return isWas(vb, parsed)\n    }\n    return doesNot(vb, parsed)\n  },\n\n  'passive-past': (vb) => {\n    // got walked -> did not get walked\n    if (vb.has('got')) {\n      vb.replace('got', 'get', keep)\n      vb.prepend('did not')\n      return vb\n    }\n    // was walked, were walked\n    // was being walked\n    // had been walked, have been eaten\n    const m = vb.match('(was|were|had|have)')\n    if (m.found) {\n      m.append('not')\n    }\n    return vb\n  },\n  'auxiliary-past': (vb) => {\n    // used to walk\n    if (vb.has('used')) {\n      vb.prepend('did not')\n      return vb\n    }\n    // he did walk\n    const m = vb.match('(did|does|do)')\n    if (m.found) {\n      m.append('not')\n    }\n    return vb\n  },\n\n  // wants to walk\n  'want-infinitive': (vb, parsed) => {\n    // does not \n    vb = doesNot(vb, parsed)\n    // want\n    vb = vb.replace('wants', 'want', keep)\n    return vb\n  },\n\n}\n\nconst toNegative = function (vb, parsed, form) {\n  // console.log(form)\n  if (vb.has('#Negative')) {\n    return vb\n  }\n  if (forms.hasOwnProperty(form)) {\n    vb = forms[form](vb, parsed)\n    return vb\n  }\n\n  // 'not be'\n  let m = vb.matchOne('be')\n  if (m.found) {\n    m.prepend('not')\n    return vb\n  }\n  // is/was not\n  if (hasCopula(vb) === true) {\n    return isWas(vb, parsed)\n  }\n\n  // 'would not'\n  m = vb.matchOne('(will|had|have|has|did|does|do|#Modal)')\n  if (m.found) {\n    m.append('not')\n    return vb\n  }\n  // do nothing i guess?\n  return vb\n}\nexport default toNegative"
  },
  {
    "path": "src/3-three/verbs/api/conjugate/toParticiple.js",
    "content": "import { noop, getTense, getSubject } from '../lib.js'\n\nconst haveHas = function (vb, parsed) {\n  const subj = getSubject(vb, parsed)\n  const m = subj.subject\n  if (m.has('(i|we|you)')) {\n    return 'have'\n  }\n  // the dog has\n  if (subj.plural === false) {\n    return 'has'\n  }\n  // spencer has\n  if (m.has('he') || m.has('she') || m.has('#Person')) {\n    return 'has'\n  }\n  return 'have'\n}\n\n// walk-> has walked\nconst simple = (vb, parsed) => {\n  const { conjugate, toInfinitive } = vb.methods.two.transform.verb\n  const { root, auxiliary } = parsed\n  // 'i may'\n  if (root.has('#Modal')) {\n    return vb\n  }\n  let str = root.text({ keepPunct: false })\n  str = toInfinitive(str, vb.model, getTense(root))\n  const all = conjugate(str, vb.model)\n  // 'driven' || 'drove'\n  str = all.Participle || all.PastTense\n\n  if (str) {\n    vb = vb.replace(root, str)\n    // 'have/had/has eaten'\n    const have = haveHas(vb, parsed)\n    vb.prepend(have).match(have).tag('Auxiliary')\n    vb.remove(auxiliary)\n  }\n\n  return vb\n}\n\n\n\nconst forms = {\n  // walk -> walked\n  'infinitive': simple,\n  // he walks -> he walked\n  'simple-present': simple,\n  // he walked\n  // 'simple-past': noop,\n  // he will walk -> he walked\n  'simple-future': (vb, parsed) => vb.replace('will', haveHas(vb, parsed)),\n\n  // he is walking\n  // 'present-progressive': noop,\n  // he was walking\n  // 'past-progressive': noop,\n  // he will be walking\n  // 'future-progressive': noop,\n\n  // has walked -> had walked (?)\n  'present-perfect': noop,\n  // had walked\n  'past-perfect': noop,\n  // will have walked -> had walked\n  'future-perfect': (vb, parsed) => vb.replace('will have', haveHas(vb, parsed)),\n\n  // has been walking -> had been\n  'present-perfect-progressive': noop,\n  // had been walking\n  'past-perfect-progressive': noop,\n  // will have been -> had\n  'future-perfect-progressive': noop,\n\n  // got walked\n  // 'passive-past': noop,\n  // is being walked  -> 'was being walked'\n  // 'passive-present': noop,\n  // will be walked -> had been walked\n  // 'passive-future': noop,\n\n  // would be walked -> 'would have been walked'\n  // 'present-conditional': noop,\n  // would have been walked\n  // 'past-conditional': noop,\n\n  // is going to drink -> was going to drink\n  // 'auxiliary-future': noop,\n  // used to walk\n  // 'auxiliary-past': noop,\n  // we do walk -> we did walk\n  // 'auxiliary-present': noop,\n\n  // must walk -> 'must have walked'\n  // 'modal-infinitive': noop,\n  // must have walked\n  // 'modal-past': noop,\n  // wanted to walk\n  // 'want-infinitive': noop,\n  // started looking\n  // 'gerund-phrase': noop,\n}\n\nconst toPast = function (vb, parsed, form) {\n  // console.log(form)\n  if (forms.hasOwnProperty(form)) {\n    vb = forms[form](vb, parsed)\n    vb.fullSentence().compute(['tagger', 'chunks'])\n    return vb\n  }\n  // do the simple form\n  vb = simple(vb, parsed, form)\n  vb.fullSentence().compute(['tagger', 'chunks'])\n  // do nothing, then\n  return vb\n}\nexport default toPast\n"
  },
  {
    "path": "src/3-three/verbs/api/conjugate/toPast.js",
    "content": "import { noop, getTense, wasWere, noWill } from '../lib.js'\nconst keep = { tags: true }\n\nconst fns = {\n\n  noAux: (vb, parsed) => {\n    if (parsed.auxiliary.found) {\n      vb = vb.remove(parsed.auxiliary)\n    }\n    return vb\n  },\n\n  // walk->walked\n  simple: (vb, parsed) => {\n    const { conjugate, toInfinitive } = vb.methods.two.transform.verb\n    const root = parsed.root\n    // 'i may'\n    if (root.has('#Modal')) {\n      return vb\n    }\n    let str = root.text({ keepPunct: false })\n    str = toInfinitive(str, vb.model, getTense(root))\n    const all = conjugate(str, vb.model)\n    // 'driven' || 'drove'\n    str = all.PastTense\n    // all.Participle || all.PastTense\n    // but skip the 'is' participle..\n    str = str === 'been' ? 'was' : str\n    if (str === 'was') {\n      str = wasWere(vb, parsed)\n    }\n    if (str) {\n      vb.replace(root, str, keep)\n    }\n    return vb\n  },\n\n  both: function (vb, parsed) {\n    // 'he did not walk'\n    if (parsed.negative.found) {\n      vb.replace('will', 'did')\n      return vb\n    }\n    // 'he walked'\n    vb = fns.simple(vb, parsed)\n    vb = fns.noAux(vb, parsed)\n    return vb\n  },\n\n  hasHad: vb => {\n    vb.replace('has', 'had', keep)\n    return vb\n  },\n\n  // some verbs have this weird past-tense form\n  // drive -> driven, (!drove)\n  hasParticiple: (vb, parsed) => {\n    const { conjugate, toInfinitive } = vb.methods.two.transform.verb\n    const root = parsed.root\n    let str = root.text('normal')\n    str = toInfinitive(str, vb.model, getTense(root))\n    return conjugate(str, vb.model).Participle\n  },\n\n\n\n}\n\n\nconst forms = {\n  // walk -> walked\n  'infinitive': fns.simple,\n  // he walks -> he walked\n  'simple-present': fns.simple,\n  // he walked\n  'simple-past': noop,\n  // he will walk -> he walked\n  'simple-future': fns.both,\n\n  // he is walking\n  'present-progressive': vb => {\n    vb.replace('are', 'were', keep)\n    vb.replace('(is|are|am)', 'was', keep)\n    return vb\n  },\n  // he was walking\n  'past-progressive': noop,\n  // he will be walking\n  'future-progressive': (vb, parsed) => {\n    vb.match(parsed.root).insertBefore('was')\n    vb.remove('(will|be)')\n    return vb\n  },\n\n  // has walked -> had walked (?)\n  'present-perfect': fns.hasHad,\n  // had walked\n  'past-perfect': noop,\n  // will have walked -> had walked\n  'future-perfect': (vb, parsed) => {\n    vb.match(parsed.root).insertBefore('had')\n    if (vb.has('will')) {\n      vb = noWill(vb)\n    }\n    vb.remove('have')\n    return vb\n  },\n\n  // has been walking -> had been\n  'present-perfect-progressive': fns.hasHad,\n  // had been walking\n  'past-perfect-progressive': noop,\n  // will have been -> had\n  'future-perfect-progressive': vb => {\n    vb.remove('will')\n    vb.replace('have', 'had', keep)\n    return vb\n  },\n\n  // got walked\n  'passive-past': vb => {\n    // 'have been walked' -> 'had been walked'\n    vb.replace('have', 'had', keep)\n    return vb\n  },\n  // is being walked  -> 'was being walked'\n  'passive-present': vb => {\n    vb.replace('(is|are)', 'was', keep)\n    return vb\n  },\n  // will be walked -> had been walked\n  'passive-future': (vb, parsed) => {\n    if (parsed.auxiliary.has('will be')) {\n      vb.match(parsed.root).insertBefore('had been')\n      vb.remove('(will|be)')\n    }\n    // will have been walked -> had been walked\n    if (parsed.auxiliary.has('will have been')) {\n      vb.replace('have', 'had', keep)\n      vb.remove('will')\n    }\n    return vb\n  },\n\n  // would be walked -> 'would have been walked'\n  'present-conditional': vb => {\n    vb.replace('be', 'have been')\n    return vb\n  },\n  // would have been walked\n  'past-conditional': noop,\n\n  // is going to drink -> was going to drink\n  'auxiliary-future': vb => {\n    vb.replace('(is|are|am)', 'was', keep)\n    return vb\n  },\n  // used to walk\n  'auxiliary-past': noop,\n  // we do walk -> we did walk\n  'auxiliary-present': vb => {\n    vb.replace('(do|does)', 'did', keep)\n    return vb\n  },\n\n  // must walk -> 'must have walked'\n  'modal-infinitive': (vb, parsed) => {\n    // this modal has a clear tense\n    if (vb.has('can')) {\n      // can drive -> could drive\n      vb.replace('can', 'could', keep)\n    } else {\n      // otherwise, \n      //  walk -> have walked\n      //  drive -> have driven\n      fns.simple(vb, parsed)\n      vb.match('#Modal').insertAfter('have').tag('Auxiliary')\n    }\n    return vb\n  },\n  // must have walked\n  'modal-past': noop,\n  // wanted to walk\n  'want-infinitive': vb => {\n    vb.replace('(want|wants)', 'wanted', keep)\n    vb.remove('will')\n    return vb\n  },\n  // started looking\n  'gerund-phrase': (vb, parsed) => {\n    parsed.root = parsed.root.not('#Gerund$')\n    fns.simple(vb, parsed)\n    noWill(vb)\n    return vb\n  },\n}\n\nconst toPast = function (vb, parsed, form) {\n  // console.log(form)\n  if (forms.hasOwnProperty(form)) {\n    vb = forms[form](vb, parsed)\n    vb.fullSentence().compute(['tagger', 'chunks'])\n    return vb\n  }\n  // do nothing i guess?\n  return vb\n}\nexport default toPast\n"
  },
  {
    "path": "src/3-three/verbs/api/conjugate/toPresent.js",
    "content": "import { noop, isPlural, isAreAm, doDoes, getSubject, toInf, getTense } from '../lib.js'\nconst keep = { tags: true }\n\n// walk->walked\nconst simple = (vb, parsed) => {\n  const { conjugate, toInfinitive } = vb.methods.two.transform.verb\n  const root = parsed.root\n  let str = root.text('normal')\n  str = toInfinitive(str, vb.model, getTense(root))\n  // 'i walk' vs 'he walks'\n  if (isPlural(vb, parsed) === false) {\n    str = conjugate(str, vb.model).PresentTense\n  }\n  // handle copula\n  if (root.has('#Copula')) {\n    str = isAreAm(vb, parsed)\n  }\n  if (str) {\n    vb = vb.replace(root, str, keep)\n    vb.not('#Particle').tag('PresentTense')\n  }\n  // vb.replace('not ' + str, str + ' not')\n  return vb\n}\n\nconst toGerund = (vb, parsed) => {\n  const { conjugate, toInfinitive } = vb.methods.two.transform.verb\n  const root = parsed.root\n  let str = root.text('normal')\n  str = toInfinitive(str, vb.model, getTense(root))\n  // 'i walk' vs 'he walks'\n  if (isPlural(vb, parsed) === false) {\n    str = conjugate(str, vb.model).Gerund\n  }\n  if (str) {\n    vb = vb.replace(root, str, keep)\n    vb.not('#Particle').tag('Gerund')\n  }\n  return vb\n}\n\nconst vbToInf = (vb, parsed) => {\n  const { toInfinitive } = vb.methods.two.transform.verb\n  const root = parsed.root\n  let str = parsed.root.text('normal')\n  str = toInfinitive(str, vb.model, getTense(root))\n  if (str) {\n    vb = vb.replace(parsed.root, str, keep)\n  }\n  return vb\n}\n\n\n\nconst forms = {\n  // walk\n  'infinitive': simple,\n  // he walks -> he walked\n  'simple-present': (vb, parsed) => {\n    const { conjugate } = vb.methods.two.transform.verb\n    const { root } = parsed\n    // is it *only* a infinitive? - 'we buy' etc\n    if (root.has('#Infinitive')) {\n      const subj = getSubject(vb, parsed)\n      const m = subj.subject\n      if (isPlural(vb, parsed) || m.has('i')) {\n        // keep it infinitive\n        return vb\n      }\n      const str = root.text('normal')\n      const pres = conjugate(str, vb.model).PresentTense\n      if (str !== pres) {\n        vb.replace(root, pres, keep)\n      }\n    } else {\n      return simple(vb, parsed)\n    }\n    return vb\n  },\n  // he walked\n  'simple-past': simple,\n  // he will walk -> he walked\n  'simple-future': (vb, parsed) => {\n    const { root, auxiliary } = parsed\n    // handle 'will be'\n    if (auxiliary.has('will') && root.has('be')) {\n      const str = isAreAm(vb, parsed)\n      vb.replace(root, str)\n      vb = vb.remove('will')\n      vb.replace('not ' + str, str + ' not')\n    } else {\n      simple(vb, parsed)\n      vb = vb.remove('will')\n    }\n    return vb\n  },\n\n  // is walking ->\n  'present-progressive': noop,\n  // was walking -> is walking\n  'past-progressive': (vb, parsed) => {\n    const str = isAreAm(vb, parsed)\n    return vb.replace('(were|was)', str, keep)\n  },\n  // will be walking -> is walking\n  'future-progressive': vb => {\n    vb.match('will').insertBefore('is')\n    vb.remove('be')\n    return vb.remove('will')\n  },\n\n  // has walked ->  (?)\n  'present-perfect': (vb, parsed) => {\n    simple(vb, parsed)\n    vb = vb.remove('(have|had|has)')\n    return vb\n  },\n\n  // had walked -> has walked\n  'past-perfect': (vb, parsed) => {\n    // not 'we has walked'\n    const subj = getSubject(vb, parsed)\n    const m = subj.subject\n    if (isPlural(vb, parsed) || m.has('i')) {\n      vb = toInf(vb, parsed)// we walk\n      vb.remove('had')\n      return vb\n    }\n    vb.replace('had', 'has', keep)\n    return vb\n  },\n  // will have walked -> has walked\n  'future-perfect': vb => {\n    vb.match('will').insertBefore('has')\n    return vb.remove('have').remove('will')\n  },\n\n  // has been walking\n  'present-perfect-progressive': noop,\n  // had been walking\n  'past-perfect-progressive': vb => vb.replace('had', 'has', keep),\n  // will have been -> has been\n  'future-perfect-progressive': vb => {\n    vb.match('will').insertBefore('has')\n    return vb.remove('have').remove('will')\n  },\n\n  // got walked -> is walked\n  // was walked -> is walked\n  // had been walked -> is walked\n  'passive-past': (vb, parsed) => {\n    const str = isAreAm(vb, parsed)\n    if (vb.has('(had|have|has)') && vb.has('been')) {\n      vb.replace('(had|have|has)', str, keep)\n      vb.replace('been', 'being')\n      return vb\n    }\n    return vb.replace('(got|was|were)', str)\n  },\n  // is being walked  ->\n  'passive-present': noop,\n  // will be walked -> is being walked\n  'passive-future': vb => {\n    vb.replace('will', 'is')\n    return vb.replace('be', 'being')\n  },\n\n  // would be walked ->\n  'present-conditional': noop,\n  // would have been walked ->\n  'past-conditional': vb => {\n    vb.replace('been', 'be')\n    return vb.remove('have')\n  },\n\n  // is going to drink -> is drinking\n  'auxiliary-future': (vb, parsed) => {\n    toGerund(vb, parsed)\n    vb.remove('(going|to)')\n    return vb\n  },\n  // used to walk -> is walking\n  // did walk -> is walking\n  'auxiliary-past': (vb, parsed) => {\n    // 'did provide' -> 'does provide'\n    if (parsed.auxiliary.has('did')) {\n      const str = doDoes(vb, parsed)\n      vb.replace(parsed.auxiliary, str)\n      return vb\n    }\n    toGerund(vb, parsed)\n    vb.replace(parsed.auxiliary, 'is')\n    return vb\n  },\n  // we do walk ->\n  'auxiliary-present': noop,\n\n  // must walk -> 'must have walked'\n  'modal-infinitive': noop,\n  // must have walked\n  'modal-past': (vb, parsed) => {\n    vbToInf(vb, parsed)\n    return vb.remove('have')\n  },\n  // started looking\n  'gerund-phrase': (vb, parsed) => {\n    parsed.root = parsed.root.not('#Gerund$')\n    simple(vb, parsed)\n    return vb.remove('(will|have)')\n  },\n  // wanted to walk\n  'want-infinitive': (vb, parsed) => {\n    let str = 'wants'\n    if (isPlural(vb, parsed)) {\n      str = 'want'//we want\n    }\n    vb.replace('(want|wanted|wants)', str, keep)\n    vb.remove('will')\n    return vb\n  },\n}\n\nconst toPresent = function (vb, parsed, form) {\n  // console.log(form)\n  if (forms.hasOwnProperty(form)) {\n    vb = forms[form](vb, parsed)\n    vb.fullSentence().compute(['tagger', 'chunks'])\n    return vb\n  }\n  return vb\n}\nexport default toPresent\n"
  },
  {
    "path": "src/3-three/verbs/api/debug.js",
    "content": "/* eslint-disable no-console */\nimport parseVerb from './parse/index.js'\nconsole.log('HELLOOO')\nconst reset = '\\x1b[0m'\nconst yellow = str => `\\x1b[2m\\x1b[33m\\x1b[3m ${str} ${reset}`\nconst bgGreen = str => `\\x1b[42m\\x1b[30m •${str}• ${reset}`\nconst dim = str => `\\x1b[2m\\x1b[3m ${str} ${reset}`\nconst red = str => `\\x1b[2m\\x1b[31m\\x1b[3m ${str} ${reset}`\nconst ml = `    \\x1b[32m\\x1b[2m│${reset}`\n\nconst debug = function (vb) {\n  const parse = parseVerb(vb)\n  const root = bgGreen(parse.root.text())\n  const aux = dim(parse.auxiliary.text())\n  let not = ''\n  if (parse.negative.found) {\n    not = dim('[' + parse.negative.text() + ']')\n  }\n  const rb1 = yellow(parse.adverbs.pre.text())\n  const rb2 = yellow(parse.adverbs.post.text())\n  // line 1\n  console.log(`\\n`)\n  let line = `${ml} ${rb1.padStart(25)} ${rb2.padStart(40)}`\n  console.log(line)\n  // line 2\n  line = `${ml} ${aux.padStart(20)} ${not}  ` + root\n  console.log(line.padStart(35))\n  // line 3\n  if (parse.phrasal.particle.found) {\n    line = `${ml} [${parse.phrasal.verb.text()}] [${parse.phrasal.particle.text()}]`\n    console.log(red(line).padStart(50))\n  }\n  console.log(`\\n`)\n  // call the original debug\n  // vb.update(vb.pointer).debug()\n}\nexport default debug\n"
  },
  {
    "path": "src/3-three/verbs/api/lib.js",
    "content": "import getSubject from './parse/getSubject.js'\n\nconst noop = vb => vb\n\nconst isPlural = (vb, parsed) => {\n  const subj = getSubject(vb, parsed)\n  const m = subj.subject\n  if (m.has('i') || m.has('we')) {\n    return true\n  }\n  return subj.plural\n}\n\nconst wasWere = (vb, parsed) => {\n  const { subject, plural } = getSubject(vb, parsed)\n  if (plural || subject.has('we')) {\n    return 'were'\n  }\n  return 'was'\n}\n\n// present-tense copula\nconst isAreAm = function (vb, parsed) {\n  // 'people were' -> 'people are'\n  if (vb.has('were')) {\n    return 'are'\n  }\n  // 'i was' -> i am\n  const { subject, plural } = getSubject(vb, parsed)\n  if (subject.has('i')) {\n    return 'am'\n  }\n  if (subject.has('we') || plural) {\n    return 'are'\n  }\n  // 'he was' -> he is\n  return 'is'\n}\n\n\nconst doDoes = function (vb, parsed) {\n  const subj = getSubject(vb, parsed)\n  const m = subj.subject\n  if (m.has('i') || m.has('we')) {\n    return 'do'\n  }\n  if (subj.plural) {\n    return 'do'\n  }\n  return 'does'\n}\n\nconst getTense = function (m) {\n  if (m.has('#Infinitive')) {\n    return 'Infinitive'\n  }\n  if (m.has('#Participle')) {\n    return 'Participle'\n  }\n  if (m.has('#PastTense')) {\n    return 'PastTense'\n  }\n  if (m.has('#Gerund')) {\n    return 'Gerund'\n  }\n  if (m.has('#PresentTense')) {\n    return 'PresentTense'\n  }\n  return undefined\n}\n\nconst toInf = function (vb, parsed) {\n  const { toInfinitive } = vb.methods.two.transform.verb\n  let str = parsed.root.text({ keepPunct: false })\n  str = toInfinitive(str, vb.model, getTense(vb))\n  if (str) {\n    vb.replace(parsed.root, str)\n  }\n  return vb\n}\n\n\n\n// i will start looking -> i started looking\n// i will not start looking -> i did not start looking\nconst noWill = (vb) => {\n  if (vb.has('will not')) {\n    return vb.replace('will not', 'have not')\n  }\n  return vb.remove('will')\n}\n\nexport { noop, isPlural, isAreAm, doDoes, toInf, getSubject, getTense, wasWere, noWill }"
  },
  {
    "path": "src/3-three/verbs/api/parse/adverbs.js",
    "content": "// split adverbs as before/after the root\nconst getAdverbs = function (vb, root) {\n  const res = {\n    pre: vb.none(),\n    post: vb.none(),\n  }\n  if (!vb.has('#Adverb')) {\n    return res\n  }\n  // pivot on the main verb\n  const parts = vb.splitOn(root)\n  if (parts.length === 3) {\n    return {\n      pre: parts.eq(0).adverbs(),\n      post: parts.eq(2).adverbs(),\n    }\n  }\n  // it must be the second one\n  if (parts.eq(0).isDoc(root)) {\n    res.post = parts.eq(1).adverbs()\n    return res\n  }\n  res.pre = parts.eq(0).adverbs()\n  return res\n}\nexport default getAdverbs\n"
  },
  {
    "path": "src/3-three/verbs/api/parse/getSubject.js",
    "content": "const shouldSkip = function (last) {\n  // is it our only choice?\n  if (last.length <= 1) {\n    return false\n  }\n  const obj = last.parse()[0] || {}\n  return obj.isSubordinate\n}\n\n// try to chop-out any obvious conditional phrases\n// he wore, [if it was raining], a raincoat.\nconst noSubClause = function (before) {\n  let parts = before.clauses()\n  parts = parts.filter((m, i) => {\n    // if it was raining..\n    if (m.has('^(if|unless|while|but|for|per|at|by|that|which|who|from)')) {\n      return false\n    }\n    // bowed to her,\n    if (i > 0 && m.has('^#Verb . #Noun+$')) {\n      return false\n    }\n    // the fog, suddenly increasing in..\n    if (i > 0 && m.has('^#Adverb')) {\n      return false\n    }\n    return true\n  })\n  // don't drop the whole thing.\n  if (parts.length === 0) {\n    return before\n  }\n  return parts\n}\n\n//\nconst lastNoun = function (vb) {\n  let before = vb.before()\n  // try to drop any mid-sentence clauses\n  before = noSubClause(before)\n  // parse-out our preceding nouns\n  const nouns = before.nouns()\n  // look for any dead-ringers\n  let last = nouns.last()\n  // i/she/he/they are very strong\n  const pronoun = last.match('(i|he|she|we|you|they)')\n  if (pronoun.found) {\n    return pronoun.nouns()\n  }\n  // these are also good hints\n  let det = nouns.if('^(that|this|those)')\n  if (det.found) {\n    return det\n  }\n  if (nouns.found === false) {\n    det = before.match('^(that|this|those)')\n    if (det.found) {\n      return det\n    }\n  }\n\n  // should we skip a subbordinate clause or two?\n  last = nouns.last()\n  if (shouldSkip(last)) {\n    nouns.remove(last)\n    last = nouns.last()\n  }\n  // i suppose we can skip two?\n  if (shouldSkip(last)) {\n    nouns.remove(last)\n    last = nouns.last()\n  }\n  return last\n}\n\nconst isPlural = function (subj, vb) {\n  // 'we are' vs 'he is'\n  if (vb.has('(are|were|does)')) {\n    return true\n  }\n  if (subj.has('(those|they|we)')) {\n    return true\n  }\n  if (subj.found && subj.isPlural) {\n    return subj.isPlural().found\n  }\n  return false\n}\n\nconst getSubject = function (vb) {\n  const subj = lastNoun(vb)\n  return {\n    subject: subj,\n    plural: isPlural(subj, vb),\n  }\n}\nexport default getSubject\n"
  },
  {
    "path": "src/3-three/verbs/api/parse/grammar/forms.js",
    "content": "const present = { tense: 'PresentTense' }\nconst conditional = { conditional: true }\nconst future = { tense: 'FutureTense' }\nconst prog = { progressive: true }\nconst past = { tense: 'PastTense' }\nconst complete = { complete: true, progressive: false }\nconst passive = { passive: true }\nconst plural = { plural: true }\nconst singular = { plural: false }\n\nconst getData = function (tags) {\n  const data = {}\n  tags.forEach(o => {\n    Object.assign(data, o)\n  })\n  return data\n}\n\nconst verbForms = {\n  // === Simple ===\n  'imperative': [\n    // walk!\n    ['#Imperative', []],\n  ],\n\n  'want-infinitive': [\n    ['^(want|wants|wanted) to #Infinitive$', [present]],\n    ['^wanted to #Infinitive$', [past]],\n    ['^will want to #Infinitive$', [future]],\n  ],\n\n  'gerund-phrase': [\n    // started looking\n    ['^#PastTense #Gerund$', [past]],\n    // starts looking\n    ['^#PresentTense #Gerund$', [present]],\n    // start looking\n    ['^#Infinitive #Gerund$', [present]],\n    // will start looking\n    ['^will #Infinitive #Gerund$', [future]],\n    // have started looking\n    ['^have #PastTense #Gerund$', [past]],\n    // will have started looking\n    ['^will have #PastTense #Gerund$', [past]],\n  ],\n\n  'simple-present': [\n    // he walks',\n    ['^#PresentTense$', [present]],\n    // we walk\n    ['^#Infinitive$', [present]],\n  ],\n  'simple-past': [\n    // he walked',\n    ['^#PastTense$', [past]],\n  ],\n  'simple-future': [\n    // he will walk\n    ['^will #Adverb? #Infinitive', [future]],\n  ],\n\n  // === Progressive ===\n  'present-progressive': [\n    // he is walking\n    ['^(is|are|am) #Gerund$', [present, prog]],\n  ],\n  'past-progressive': [\n    // he was walking\n    ['^(was|were) #Gerund$', [past, prog]],\n  ],\n  'future-progressive': [\n    // he will be\n    ['^will be #Gerund$', [future, prog]],\n  ],\n\n  // === Perfect ===\n  'present-perfect': [\n    // he has walked\n    ['^(has|have) #PastTense$', [past, complete]], //past?\n  ],\n  'past-perfect': [\n    // he had walked\n    ['^had #PastTense$', [past, complete]],\n    // had been to see\n    ['^had #PastTense to #Infinitive', [past, complete]],\n  ],\n  'future-perfect': [\n    // he will have\n    ['^will have #PastTense$', [future, complete]],\n  ],\n\n  // === Progressive-perfect ===\n  'present-perfect-progressive': [\n    // he has been walking\n    ['^(has|have) been #Gerund$', [past, prog]], //present?\n  ],\n  'past-perfect-progressive': [\n    // he had been\n    ['^had been #Gerund$', [past, prog]],\n  ],\n  'future-perfect-progressive': [\n    // will have been\n    ['^will have been #Gerund$', [future, prog]],\n  ],\n\n  // ==== Passive ===\n  'passive-past': [\n    // got walked, was walked, were walked\n    ['(got|were|was) #Passive', [past, passive]],\n    // was being walked\n    ['^(was|were) being #Passive', [past, passive]],\n    // had been walked, have been eaten\n    ['^(had|have) been #Passive', [past, passive]],\n  ],\n  'passive-present': [\n    // is walked, are stolen\n    ['^(is|are|am) #Passive', [present, passive]],\n    // is being walked\n    ['^(is|are|am) being #Passive', [present, passive]],\n    // has been cleaned\n    ['^has been #Passive', [present, passive]],\n  ],\n  'passive-future': [\n    // will have been walked\n    ['will have been #Passive', [future, passive, conditional]],\n    // will be cleaned\n    ['will be being? #Passive', [future, passive, conditional]],\n  ],\n\n  // === Conditional ===\n  'present-conditional': [\n    // would be walked\n    ['would be #PastTense', [present, conditional]],\n  ],\n  'past-conditional': [\n    // would have been walked\n    ['would have been #PastTense', [past, conditional]],\n  ],\n\n  // ==== Auxiliary ===\n  'auxiliary-future': [\n    // going to drink\n    ['(is|are|am|was) going to (#Infinitive|#PresentTense)', [future]],\n  ],\n  'auxiliary-past': [\n    // he did walk\n    ['^did #Infinitive$', [past, singular]],\n    // used to walk\n    ['^used to #Infinitive$', [past, complete]],\n  ],\n  'auxiliary-present': [\n    // we do walk\n    ['^(does|do) #Infinitive$', [present, complete, plural]],\n  ],\n\n  // === modals ===\n  'modal-past': [\n    // he could have walked\n    ['^(could|must|should|shall) have #PastTense$', [past]],\n  ],\n  'modal-infinitive': [\n    // he can walk\n    ['^#Modal #Infinitive$', []],\n  ],\n\n  'infinitive': [\n    // walk\n    ['^#Infinitive$', []],\n  ],\n}\n\nconst list = []\nObject.keys(verbForms).map(k => {\n  verbForms[k].forEach(a => {\n    list.push({\n      name: k,\n      match: a[0],\n      data: getData(a[1]),\n    })\n  })\n})\n\nexport default list\n"
  },
  {
    "path": "src/3-three/verbs/api/parse/grammar/index.js",
    "content": "import forms from './forms.js'\n\nconst cleanUp = function (vb, res) {\n  vb = vb.clone()\n  // remove adverbs\n  if (res.adverbs.post && res.adverbs.post.found) {\n    vb.remove(res.adverbs.post)\n  }\n  if (res.adverbs.pre && res.adverbs.pre.found) {\n    vb.remove(res.adverbs.pre)\n  }\n  // remove negatives\n  if (vb.has('#Negative')) {\n    vb = vb.remove('#Negative')\n  }\n  // remove prefixes like 'anti'\n  if (vb.has('#Prefix')) {\n    vb = vb.remove('#Prefix')\n  }\n  // cut-off phrasal-verb\n  if (res.root.has('#PhrasalVerb #Particle')) {\n    vb.remove('#Particle$')\n  }\n  // did we miss any of these?\n  // vb = vb.remove('#Adverb')\n  vb = vb.not('#Adverb')\n  return vb\n}\n\n// 'learned [to code]'\nconst isInfinitive = function (vb) {\n  if (vb.has('#Infinitive')) {\n    const m = vb.growLeft('to')\n    if (m.has('^to #Infinitive')) {\n      return true\n    }\n  }\n  return false\n}\n\nconst getGrammar = function (vb, res) {\n  const grammar = {}\n  // make it easy to classify, first\n  vb = cleanUp(vb, res)\n  for (let i = 0; i < forms.length; i += 1) {\n    const todo = forms[i]\n    if (vb.has(todo.match) === true) {\n      grammar.form = todo.name\n      Object.assign(grammar, todo.data)\n      break //only match one\n    }\n  }\n  // did we find nothing?\n  if (!grammar.form) {\n    if (vb.has('^#Verb$')) {\n      grammar.form = 'infinitive'\n    }\n  }\n  // fallback to 'naiive' tense detection\n  if (!grammar.tense) {\n    grammar.tense = res.root.has('#PastTense') ? 'PastTense' : 'PresentTense'\n  }\n  grammar.copula = res.root.has('#Copula')\n  // 'learn to code'\n  grammar.isInfinitive = isInfinitive(vb)\n  return grammar\n}\n\nexport default getGrammar\n"
  },
  {
    "path": "src/3-three/verbs/api/parse/index.js",
    "content": "import getRoot from './root.js'\nimport getAdverbs from './adverbs.js'\n\nconst getAuxiliary = function (vb, root) {\n  const parts = vb.splitBefore(root)\n  if (parts.length <= 1) {\n    return vb.none()\n  }\n  let aux = parts.eq(0)\n  aux = aux.not('(#Adverb|#Negative|#Prefix)')\n  return aux\n}\n\nconst getNegative = function (vb) {\n  return vb.match('#Negative')\n}\n\n// pull-apart phrasal-verb into verb-particle\nconst getPhrasal = function (root) {\n  if (!root.has('(#Particle|#PhrasalVerb)')) {\n    return {\n      verb: root.none(),\n      particle: root.none()\n    }\n  }\n  const particle = root.match('#Particle$')\n  return {\n    verb: root.not(particle),\n    particle: particle,\n  }\n}\n\nconst parseVerb = function (view) {\n  const vb = view.clone()\n  vb.contractions().expand()\n  const root = getRoot(vb)\n  const res = {\n    root: root,\n    prefix: vb.match('#Prefix'),\n    adverbs: getAdverbs(vb, root),\n    auxiliary: getAuxiliary(vb, root),\n    negative: getNegative(vb),\n    phrasal: getPhrasal(root),\n  }\n  return res\n}\nexport default parseVerb\n"
  },
  {
    "path": "src/3-three/verbs/api/parse/root.js",
    "content": "// find the main verb, from a verb phrase\nconst getMain = function (vb) {\n  let root = vb\n  if (vb.wordCount() > 1) {\n    root = vb.not('(#Negative|#Auxiliary|#Modal|#Adverb|#Prefix)')\n  }\n  // fallback to just the last word, sometimes\n  if (root.length > 1 && !root.has('#Phrasal #Particle')) {\n    root = root.last()\n  }\n  // look for more modals\n  root = root.not('(want|wants|wanted) to')\n\n  // fallback\n  if (!root.found) {\n    root = vb.not('#Negative')\n    return root\n  }\n  return root\n}\nexport default getMain\n"
  },
  {
    "path": "src/3-three/verbs/api/toJSON.js",
    "content": "import parseVerb from './parse/index.js'\nimport getGrammar from './parse/grammar/index.js'\nimport { getTense } from './lib.js'\n\nconst toArray = function (m) {\n  if (!m || !m.isView) {\n    return []\n  }\n  const opts = { normal: true, terms: false, text: false }\n  return m.json(opts).map(s => s.normal)\n}\n\nconst toText = function (m) {\n  if (!m || !m.isView) {\n    return ''\n  }\n  return m.text('normal')\n}\n\nconst toInf = function (root) {\n  const { toInfinitive } = root.methods.two.transform.verb\n  const str = root.text('normal')\n  return toInfinitive(str, root.model, getTense(root))\n}\n\nconst toJSON = function (vb) {\n  const parsed = parseVerb(vb)\n  vb = vb.clone().toView()\n  const info = getGrammar(vb, parsed)\n  return {\n    root: parsed.root.text(),\n    preAdverbs: toArray(parsed.adverbs.pre),\n    postAdverbs: toArray(parsed.adverbs.post),\n    auxiliary: toText(parsed.auxiliary),\n    negative: parsed.negative.found,\n    prefix: toText(parsed.prefix),\n    infinitive: toInf(parsed.root),\n    grammar: info,\n  }\n}\nexport default toJSON\n"
  },
  {
    "path": "src/3-three/verbs/find.js",
    "content": "const findVerbs = function (doc) {\n  let m = doc.match('<Verb>')\n  // want to see\n  m = m.not('#Conjunction')\n  // by walking\n  m = m.not('#Preposition')\n\n\n  m = m.splitAfter('@hasComma')\n\n  // the reason he will is ...\n  // all i do is talk\n  m = m.splitAfter('[(do|did|am|was|is|will)] (is|was)', 0)\n  // m = m.splitAfter('[(do|did|am|was|is|will)] #PresentTense', 0)\n\n  // cool\n\n  // like being pampered\n  m = m.splitBefore('(#Verb && !#Copula) [being] #Verb', 0)\n  // like to be pampered\n  m = m.splitBefore('#Verb [to be] #Verb', 0)\n\n  // implicit conjugation - 'help fix'\n\n  m = m.splitAfter('[help] #PresentTense', 0)\n  // what i can sell is..\n  m = m.splitBefore('(#PresentTense|#PastTense) [#Copula]$', 0)\n  // what i can sell will be\n  m = m.splitBefore('(#PresentTense|#PastTense) [will be]$', 0)\n  // directing had\n  m = m.splitBefore('(#PresentTense|#PastTense) [(had|has)]', 0)\n\n  // 'allow yourself'\n  m = m.not('#Reflexive$')\n  // sitting near\n  m = m.not('#Adjective')\n\n  // pastTense-pastTense\n  // Everyone he [met] [told] him\n  m = m.splitAfter('[#PastTense] #PastTense', 0)\n  // Everyone he [met] had [told] him\n  m = m.splitAfter('[#PastTense] #Auxiliary+ #PastTense', 0)\n\n  // fans that were blowing felt amazing\n  m = m.splitAfter('#Copula [#Gerund] #PastTense', 0)\n\n  // managed to see\n  // m = m.splitOn('#PastTense [to] #Infinitive', 0)\n\n\n  //ensure there's actually a verb\n  m = m.if('#Verb')\n  // the reason he will is ...\n  // ensure it's not two verbs\n  // held annually is called\n  if (m.has('(#Verb && !#Auxiliary) #Adverb+? #Copula')) {\n    m = m.splitBefore('#Copula')\n  }\n  return m\n}\nexport default findVerbs\n"
  },
  {
    "path": "src/3-three/verbs/plugin.js",
    "content": "import api from './api/api.js'\n\nexport default {\n  api,\n}\n"
  },
  {
    "path": "src/4-four/facts/api.js",
    "content": "import getFacts from './parse/index.js'\n\n/*\nInstruction\n\nStatement\nStatement/Action - she walked home, i could have seen\nStatement/Definition - Tootsie is a movie\nStatement/Description - he is tall\n\nQuestion\nQuestion/Time\nQuestion/Amount\nQuestion/YesNo - did she sleep with him?, are crabs edible?\n\n\n*/\n\nconst green = str => '\\x1b[32m' + str + '\\x1b[0m'\nconst blue = str => '\\x1b[34m' + str + '\\x1b[0m'\nconst cyan = str => '\\x1b[36m' + str + '\\x1b[0m'\nconst dim = str => '\\x1b[2m' + str + '\\x1b[0m'\n\n\nconst api = function (View) {\n\n  class Facts {\n    constructor(facts, doc) {\n      // this.facts = facts || []\n      this.doc = doc\n      this.viewType = 'Facts'\n      Object.defineProperty(this, 'facts', {\n        value: facts,\n        writable: true,\n      })\n    }\n    json() {\n      return this.facts\n    }\n    // chunk-friendly debug\n    debug() {\n      let lastSentence = null\n      this.facts.forEach(fact => {\n        let subj = ''\n        let verb = ''\n        let obj = ''\n        const mods = []\n        const txt = this.doc.update([fact.ptr]).text()\n        if (fact.subj) {\n          subj = fact.subj.root\n        }\n        if (fact.verb) {\n          verb = fact.verb.root\n        }\n        if (fact.obj) {\n          obj = fact.obj.root\n          if (fact.obj.mod) {\n            Object.keys(fact.obj.mod).forEach(k => {\n              mods.push(`[${k}] ${fact.obj.mod[k].root}`)\n            })\n          }\n        }\n        if (txt !== lastSentence) {\n          console.log(`\\n'${dim(txt)}'`)//eslint-disable-line\n          lastSentence = txt\n        }\n        //eslint-disable-next-line\n        console.log(`${blue(subj.padEnd(10))} | ${green(verb.padEnd(10))}  | ${cyan(obj.padEnd(10))}`)\n        if (mods.length) {\n          mods.forEach(mod => {\n            console.log(''.padEnd(25) + `+${dim(mod)}`)//eslint-disable-line\n          })\n        }\n      })\n      return this\n    }\n\n  }\n  /** */\n  View.prototype.facts = function () {\n    let facts = []\n    this.sentences().forEach(s => {\n      facts = facts.concat(getFacts(s))\n    })\n    return new Facts(facts, this)\n  }\n}\nexport default api\n"
  },
  {
    "path": "src/4-four/facts/parse/adjective.js",
    "content": "\nconst parseAdjective = function (chunk) {\n  // let obj = chunk.adjectives().json()[0]\n  return {\n    chunk: 'Adjective',\n    ptr: chunk.ptrs[0],\n    root: chunk.text('normal'),\n    desc: chunk.adjectives().out('array')\n  }\n}\n\nexport default parseAdjective"
  },
  {
    "path": "src/4-four/facts/parse/index.js",
    "content": "import parseVerb from './verb.js'\nimport parseNoun from './noun.js'\nimport parseAdjective from './adjective.js'\nimport parsePivot from './pivot.js'\nimport postProcess from './postProcess.js'\n\nconst chunkType = function (chunk) {\n  if (chunk.isVerb().found) {\n    return 'Verb'\n  }\n  if (chunk.isNoun().found) {\n    return 'Noun'\n  }\n  if (chunk.isPivot().found) {\n    return 'Pivot'\n  }\n  if (chunk.isAdjective().found) {\n    return 'Adjective'\n  }\n  return null\n}\n\nconst getParts = function (s) {\n  const parts = []\n  let res = {}\n  let pivot = null\n\n  const process = {\n    // \"the big red dog\"\n    Noun: (chunk) => {\n      // we looking for a subject?\n      if (!res.verb) {\n        res.subj = parseNoun(chunk)\n      } else {\n        // do we already have an object?\n        if (res.obj) {\n          if (pivot) {\n            res.obj.mod = res.obj.mod || {}\n            res.obj.mod[pivot] = parseNoun(chunk)\n          } else {\n            // console.log('=-=-=-= missing mod -=-=-=-')\n          }\n        } else {\n          res.obj = parseNoun(chunk)\n          res.obj.pivot = pivot\n        }\n      }\n    },\n    // \"had walked\"\n    Verb: (chunk) => {\n      if (res.verb) {\n        parts.push(res)\n        res = {}\n      }\n      res.verb = parseVerb(chunk)\n    },\n    // \"is pretty\"\n    Adjective: (chunk) => {\n      res.obj = parseAdjective(chunk)\n    },\n    // \"however\"\n    Pivot: (chunk) => {\n      const p = parsePivot(chunk)\n      pivot = p.root\n      if (res.obj && p.breakPoint) {\n        parts.push(res)\n        res = {}\n      }\n    },\n  }\n\n  // handle each svp chunk\n  const chunks = s.chunks()\n  // chunks.debug()\n  chunks.forEach(chunk => {\n    const type = chunkType(chunk)\n    if (!type) {\n      // console.log(' ! ' + chunk.text())\n      return\n    }\n    process[type](chunk)\n  })\n  // add remainder\n  if (Object.keys(res).length) {\n    parts.push(res)\n  }\n  return parts\n}\n\n\n\nconst parseFacts = function (s) {\n  let parts = getParts(s)\n  // share missing subjects\n  parts = postProcess(parts)\n\n  parts.forEach(part => {\n    part.ptr = s.ptrs[0]\n  })\n  // console.log(parts)\n  // if (s.isQuestion().found) {\n  //   return parseQuestion(s)\n  // }\n  // if (s.has('#Imperative')) {\n  //   return parseInstruction(s)\n  // }\n  // return parseStatement(s)\n  return parts\n}\nexport default parseFacts"
  },
  {
    "path": "src/4-four/facts/parse/noun.js",
    "content": "\nconst parseNoun = function (chunk) {\n  const root = chunk.match('#Noun').not('#Demonym').text('root')\n  const obj = chunk.nouns().json()[0].noun\n  obj.chunk = 'Noun'\n  obj.ptr = chunk.ptrs[0]\n  obj.root = root\n  return obj\n}\n\nexport default parseNoun"
  },
  {
    "path": "src/4-four/facts/parse/pivot.js",
    "content": "\nconst breaks = '(but|however|and|so|thus|therefor)'\n\nconst parsePivot = function (chunk) {\n  const str = chunk.text('normal')\n  const breakPoint = chunk.has(breaks)\n  return {\n    breakPoint,\n    root: str\n  }\n}\nexport default parsePivot"
  },
  {
    "path": "src/4-four/facts/parse/postProcess.js",
    "content": "const postProcess = function (parts) {\n\n  for (let i = 1; i < parts.length; i += 1) {\n    // is it missing a subject?\n    // borrow the last one\n    if (!parts[i].subj && parts[i].verb) {\n      for (let o = i; o >= 0; o -= 1) {\n        if (parts[o].subj) {\n          parts[i].subj = Object.assign({ borrowed: true }, parts[o].subj)\n          break\n        }\n      }\n    }\n  }\n  return parts\n}\nexport default postProcess"
  },
  {
    "path": "src/4-four/facts/parse/statement/index.js",
    "content": "import parseVerb from '../verb.js'\nimport parseNoun from '../noun.js'\n\n/*\n\n\n*/\n\nconst factType = function (vb) {\n  if (vb.has('#Imperative')) {\n    return 'Instruction'\n  }\n  if (vb.has('#Copula')) {\n    return 'Fact'\n  }\n  return 'Action'\n}\n\n\nconst getFacts = function (s) {\n  const facts = []\n  let fact = { type: null }\n  let prop = null\n  const chunks = s.chunks()\n  chunks.forEach(chunk => {\n    if (chunk.isNoun().found) {\n      const nounObj = parseNoun(chunk)\n      // before our action, we are the subject\n      if (!fact.action) {\n        fact.subject = nounObj\n      } else if (prop) {\n        // walk [to] [the store]\n        fact.modifiers = fact.modifiers || {}\n        fact.modifiers[prop] = nounObj\n      } else {\n        // after our action, no property\n        fact.obj = nounObj\n      }\n    } else if (chunk.isVerb().found) {\n      // our second verb?\n      if (fact.action) {\n        facts.push(fact)\n        fact = { type: null }\n      }\n      fact.type = factType(chunk)\n      // if (fact.type === 'Action' || fact.type === 'Instruction') {\n      fact.action = parseVerb(chunk)\n      // }\n    } else {\n      //glue chunk\n      prop = chunk.text('machine')\n    }\n  })\n  if (fact.action) {\n    facts.push(fact)\n  }\n  return facts\n}\nexport default getFacts"
  },
  {
    "path": "src/4-four/facts/parse/verb.js",
    "content": "const parseVerb = function (chunk) {\n  const obj = chunk.verbs().json()[0].verb\n  return {\n    chunk: 'Verb',\n    ptr: obj.ptr = chunk.ptrs[0],\n    desc: obj.preAdverbs.concat(obj.postAdverbs),\n    negative: obj.negative,\n    root: obj.infinitive,\n    tense: obj.grammar.tense,\n    copula: obj.grammar.copula,\n    imperative: chunk.has('#Imperative'),\n    hypothetical: chunk.has('(would|could) #Adverb? have')\n  }\n}\nexport default parseVerb"
  },
  {
    "path": "src/4-four/facts/plugin.js",
    "content": "import api from './api.js'\n\nexport default {\n  api\n}"
  },
  {
    "path": "src/4-four/sense/api/api.js",
    "content": "const senseMethods = function (View) {\n  /** add sense to these terms*/\n  View.prototype.sense = function (s) {\n    this.docs.forEach(terms =>\n      terms.forEach(t => {\n        t.sense = s\n      })\n    )\n  }\n}\nexport default senseMethods\n"
  },
  {
    "path": "src/4-four/sense/compute/index.js",
    "content": "const range = 20 // look 20 words in either direction\n\nconst chooseSense = function (terms, i, sense) {\n  if (!sense) {\n    return null\n  }\n  const words = sense.words\n  for (let n = 1; n < range; n += 1) {\n    // look left by n\n    if (terms[i - n] && words[terms[i - n].normal]) {\n      // console.log(` <- '${words[terms[i - n].normal]}'`)\n      return words[terms[i - n].normal]\n    }\n    // look right by n\n    if (terms[i + n] && words[terms[i + n].normal]) {\n      // console.log(` -> '${words[terms[i + n].normal]}'`)\n      return words[terms[i + n].normal]\n    }\n  }\n  return sense.fallback || null\n}\n\nconst getSense = function (view) {\n  const { world, doc } = view\n  const { senses } = world.model.four\n  const terms = doc.termList()\n  for (let i = 0; i < terms.length; i += 1) {\n    const term = terms[i]\n    const str = term.normal\n    if (senses.hasOwnProperty(str) === true) {\n      // get appropriate sense for the term's tag\n      const sense = senses[str].find(obj => term.tags.has(obj.tag))\n      const name = chooseSense(terms, i, sense)\n      if (name !== null) {\n        term.sense = `${term.normal}/${name}`\n      }\n    }\n  }\n}\nexport default getSense\n"
  },
  {
    "path": "src/4-four/sense/model/_data.js",
    "content": "// generated in ./lib/senses\nexport default {\n  \"plug\": [\n    {\n      \"tag\": \"Verb\",\n      \"fallback\": \"stop\",\n      \"words\": \"sell¦album,b0;iography,ook|stop¦drain,pipe,sink\"\n    }\n  ],\n  \"strike\": [\n    {\n      \"tag\": \"Verb\",\n      \"fallback\": \"hit\",\n      \"words\": \"protest¦job,union,worker\"\n    }\n  ],\n  \"charge\": [\n    {\n      \"tag\": \"Verb\",\n      \"fallback\": null,\n      \"words\": \"money¦bank,fee,pr0serv0;ice|run¦flee,run,toward\"\n    }\n  ],\n  \"fire\": [\n    {\n      \"tag\": \"Verb\",\n      \"fallback\": null,\n      \"words\": \"job¦boss,contract,job|gun¦away,bullet,gun,weapon\"\n    }\n  ],\n  \"trip\": [\n    {\n      \"tag\": \"Verb\",\n      \"fallback\": \"fall\",\n      \"words\": \"drug¦acid,lsd|fall¦hurt,stumble\"\n    },\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": \"travel\",\n      \"words\": \"drug¦acid,lsd|travel¦drive,fly,pack,vacation\"\n    }\n  ],\n  \"tie\": [\n    {\n      \"tag\": \"Verb\",\n      \"fallback\": null,\n      \"words\": \"knot¦bow,lace,rope|game¦match,point,score\"\n    },\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": \"game\",\n      \"words\": \"game¦game,point,score|suit¦bow,style,wear\"\n    }\n  ],\n  \"chip\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": null,\n      \"words\": \"computer¦s0;emiconductor,peed|potato¦bag,ruffles,s0;alt,pice|part¦block,off\"\n    }\n  ],\n  \"pitch\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": null,\n      \"words\": \"throw¦base0fast0mound,pitcher,strike;ball|field¦football,keep1s0;occ0trik0;er\"\n    }\n  ],\n  \"stock\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": null,\n      \"words\": \"finance¦p0;rice,urchase|soup¦beef,soup,vegetable|backup¦basement,collection\"\n    }\n  ],\n  \"fall\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": \"drop\",\n      \"words\": \"drop¦break,height,stair|season¦color,leaf,octo0septem0;ber\"\n    }\n  ],\n  \"spring\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": null,\n      \"words\": \"coil¦bounce,matress|season¦april,cleaning,march,s0;eed,prout\"\n    }\n  ],\n  \"march\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": \"crowd\",\n      \"words\": \"month¦april,february,spring|crowd¦again0crowd,prote0;st\"\n    }\n  ],\n  \"model\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": null,\n      \"words\": \"person¦fashion,makeup,swimsuit|concept¦conceptu0ment0theory;al|computer¦render\"\n    }\n  ],\n  \"hook\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": \"shape\",\n      \"words\": \"music¦chorus,melody,verse|shape¦fish,hook,lure\"\n    }\n  ],\n  \"ball\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": \"object\",\n      \"words\": \"dance¦gown,musical|object¦bounce,kick\"\n    }\n  ],\n  \"course\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": \"school\",\n      \"words\": \"path¦chart,mountain,trail|school¦class,register,teach0;!er\"\n    }\n  ],\n  \"power\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": \"political\",\n      \"words\": \"political¦election,hungry,politics,seek|electrical¦appliance,consume,energy\"\n    }\n  ],\n  \"burn\": [\n    {\n      \"tag\": \"Noun\",\n      \"fallback\": \"fire\",\n      \"words\": \"insult¦sick|fire¦degree,fire,heat\"\n    }\n  ],\n  \"ill\": [\n    {\n      \"tag\": \"Adjective\",\n      \"fallback\": \"sick\",\n      \"words\": \"sick¦flu,s0;ick,ymptom|good¦sweet,trick\"\n    }\n  ],\n  \"prime\": [\n    {\n      \"tag\": \"Adjective\",\n      \"fallback\": \"good\",\n      \"words\": \"good¦location|number¦digit,factor\"\n    }\n  ],\n  \"high\": [\n    {\n      \"tag\": \"Adjective\",\n      \"fallback\": \"up\",\n      \"words\": \"up¦above,over|drugs¦addict1d0pot,upper;ope,rug;!ion\"\n    }\n  ],\n  \"sick\": [\n    {\n      \"tag\": \"Adjective\",\n      \"fallback\": \"ill\",\n      \"words\": \"ill¦doctor,flu,symptom|good¦sweet,trick\"\n    }\n  ],\n  \"cold\": [\n    {\n      \"tag\": \"Adjective\",\n      \"fallback\": \"temperature\",\n      \"words\": \"temperature¦air,freez2thermo0win1;me0stat;ter;e,ing|attitude¦a0demeanor,mean,shoulder,uncaring;loof,ttitude\"\n    }\n  ]\n}"
  },
  {
    "path": "src/4-four/sense/model/index.js",
    "content": "import data from './_data.js'\nimport { unpack } from 'efrt'\n\nObject.keys(data).forEach(ambig => {\n  data[ambig].forEach(sense => {\n    sense.words = unpack(sense.words)\n  })\n})\n\nexport default {\n  four: {\n    senses: data,\n  },\n}\n"
  },
  {
    "path": "src/4-four/sense/model/more.js",
    "content": "export default {\n\n  verb: {\n    \"make\": \"create/compell\",\n    \"have\": \"possess/experience\",\n    \"see\": \"perceive/understand\",\n    \"come\": \"arrive/occur\",\n    \"look\": \"gaze/search\",\n    \"run\": \"sprint/operate\",\n    \"believe\": \"accept/trust\",\n    \"feel\": \"perceive/experience\",\n    \"call\": \"summon/name\",\n    \"work\": \"labor/function\",\n  },\n\n  \"want\": \"desire/wish\",\n  \"give\": \"provide/offer\",\n  \"use\": \"utilize/employ\",\n  \"find\": \"discover/locate\",\n  \"tell\": \"instruct/inform\",\n  \"ask\": \"request/inquire\",\n  \"seem\": \"appear/imply\",\n  \"feel\": \"perceive/experience\",\n  \"try\": \"attempt/endeavor\",\n  \"leave\": \"depart/abandon\",\n  \"need\": \"require/necessitate\",\n  \"become\": \"transform/develop\",\n  \"mean\": \"signify/imply\",\n  \"keep\": \"retain/maintain\",\n  \"turn\": \"rotate/change\",\n  \"show\": \"display/demonstrate\",\n  \"hear\": \"perceive/listen\",\n  \"play\": \"participate/perform\",\n  \"move\": \"shift/proceed\",\n  \"like\": \"enjoy/appreciate\",\n  \"live\": \"reside/exist\",\n  \"hold\": \"grasp/maintain\",\n  \"bring\": \"deliver/introduce\",\n  \"happen\": \"occur/take place\",\n  \"write\": \"record/compose\",\n  \"provide\": \"supply/offer\",\n  \"sit\": \"perch/be seated\",\n  \"stand\": \"be upright/endure\",\n  \"lose\": \"misplace/suffer\",\n  \"pay\": \"remunerate/compensate\",\n  \"meet\": \"encounter/convene\",\n\n\n\n\n\n  // \"break\": \"separate/rest/fail\",\n  // \"cast\": \"act/throw/group\",\n  // \"check\": \"examine/stop/chess\",\n  // \"cut\": \"sever/shape/reduced\",\n  // \"drop\": \"fall/let go/decrease\",\n  // \"face\": \"front/expression\",\n  // \"fast\": \"quick/secure\",\n  // \"figure\": \"number/shape/person\",\n  // \"fine\": \"good/penalty\",\n  // \"fly\": \"insect/travel\",\n  // \"frame\": \"structure/picture/blame\",\n  // \"ground\": \"earth/reason/electrical\",\n  // \"hit\": \"strike/success\",\n  // \"hook\": \"bent/catch\",\n  // \"bank\": \"financial institution/land alongside a river\",\n  // \"blue\": \"color/feeling sad\",\n  // \"bow\": \"bend at the waist/weapon\",\n  // \"bowl\": \"dish for serving food/to participate in a game\",\n  // \"brush\": \"tool for cleaning or painting/to lightly touch\",\n  // \"button\": \"fastener on clothing/to fasten\",\n  // \"can\": \"container/ability to do something\",\n  // \"change\": \"to become different/coins used as money\",\n  // \"character\": \"person in a story/distinctive qualities\",\n  // \"charge\": \"to ask for payment/to rush forward\",\n  // \"clean\": \"free of dirt or marks/to make something clean\",\n  // \"cold\": \"low temperature/lacking in affection\",\n  // \"comb\": \"tool for grooming hair/to search thoroughly\",\n  // \"content\": \"what is contained/satisfied with what one has\",\n  // \"cover\": \"to put something over/outer part of a book\",\n  // \"crane\": \"bird with long neck/machine used for lifting heavy objects\",\n\n\n  adjective: {\n    \"great\": \"fantastic/important\",\n    \"low\": \"short/inferior\",\n    \"hard\": \"firm/difficult\",\n    \"easy\": \"simple/effortless\",\n    \"rich\": \"wealthy/abundant\",\n    \"healthy\": \"fit/wholesome\",\n    \"long\": \"extended/lengthy\",\n    \"short\": \"brief/small\",\n    \"miserable\": \"unhappy/woeful\",\n    \"cheap\": \"inexpensive/inferior\",\n    \"busy\": \"occupied/hectic\",\n    \"weak\": \"frail/inadequate\",\n    \"poor\": \"destitute/scant\",\n    \"happy\": \"content/cheerful\",\n    \"soft\": \"yielding/gentle\",\n  },\n\n\n\n\n  noun: {\n    \"bark\": \"sound/tree\",\n    \"bat\": \"animal/sports\",\n    \"man\": \"male/human\",\n    \"state\": \"condition/political\",\n    \"country\": \"nation/rural\",\n    \"case\": \"instance/legal\",\n    \"value\": \"quantity/virtue\",\n    \"school\": \"education/fish\",\n    \"point\": \"dot/idea\",\n    \"business\": \"trade/company\",\n    \"power\": \"energy/authority\",\n    \"child\": \"young/descendant\",\n    \"order\": \"arrangement/request\",\n    \"management\": \"control/job-title\",\n    \"organ\": \"anatomy/music\",\n    \"product\": \"goods/result\",\n    \"crane\": \"bird/machine\",\n    \"bore\": \"dullness/drill\",\n    \"bow\": \"weapon/knot/reverence\",\n    \"brush\": \"tool/touch\",\n    \"grade\": \"level/slope\",\n    \"head\": \"body/leader\",\n    \"issue\": \"topic/release/problem\",\n  },\n}"
  },
  {
    "path": "src/4-four/sense/model/senses/adjective.js",
    "content": "export default {\n  ill: {\n    sick: { fallback: true, words: ['sick', 'flu', 'symptom'] },\n    good: { words: ['sweet', 'trick'] },\n  },\n  prime: {\n    good: { fallback: true, words: ['location'] },\n    number: { words: ['digit', 'factor'] },\n  },\n  high: {\n    up: { fallback: true, words: ['above', 'over'] },\n    drugs: { words: ['upper', 'pot', 'dope', 'drug', 'addict', 'addiction'] },\n  },\n  sick: {\n    ill: { fallback: true, words: ['doctor', 'flu', 'symptom'] },\n    good: { words: ['sweet', 'trick'] },\n  },\n  cold: {\n    temperature: { fallback: true, words: ['winter', 'thermometer', 'thermostat', 'air', 'freeze', 'freezing'] },\n    attitude: { words: ['shoulder', 'uncaring', 'aloof', 'mean', 'attitude', 'demeanor'] },\n  },\n}\n"
  },
  {
    "path": "src/4-four/sense/model/senses/index.js",
    "content": "import verbs from './verb.js'\nimport adjectives from './adjective.js'\nimport nouns from './noun.js'\n\nconst byWord = {}\nconst setup = function (senses, tag) {\n  Object.keys(senses).forEach(ambig => {\n    const words = {}\n    let fallback = null\n    Object.keys(senses[ambig]).forEach(name => {\n      if (senses[ambig][name].words) {\n        senses[ambig][name].words.forEach(w => {\n          words[w] = name\n        })\n      }\n      if (senses[ambig][name].fallback) {\n        fallback = name\n      }\n    })\n    byWord[ambig] = byWord[ambig] || []\n    byWord[ambig].push({\n      tag: tag,\n      fallback,\n      words,\n    })\n  })\n}\n\nsetup(verbs, 'Verb')\nsetup(nouns, 'Noun')\nsetup(adjectives, 'Adjective')\n\nexport default byWord\n"
  },
  {
    "path": "src/4-four/sense/model/senses/noun.js",
    "content": "export default {\n  tie: {\n    game: { fallback: true, words: ['game', 'score', 'point'] },\n    suit: { words: ['bow', 'wear', 'style'] },\n  },\n  chip: {\n    computer: { words: ['speed', 'semiconductor'] },\n    potato: { words: ['ruffles', 'spice', 'bag', 'salt'] },\n    part: { words: ['block', 'off'] },\n  },\n  pitch: {\n    throw: { words: ['baseball', 'strike', 'mound', 'pitcher', 'fastball'] },\n    field: { words: ['football', 'striker', 'soccer', 'keeper'] },\n  },\n  stock: {\n    finance: { words: ['purchase', 'price'] },\n    soup: { words: ['vegetable', 'beef', 'soup'] },\n    backup: { words: ['collection', 'basement'] },\n  },\n  fall: {\n    drop: { fallback: true, words: ['stair', 'break', 'height', 'break'] },\n    season: { words: ['october', 'leaf', 'september', 'color'] },\n  },\n  spring: {\n    coil: { words: ['bounce', 'matress'] },\n    season: { words: ['april', 'seed', 'sprout', 'march', 'cleaning'] },\n  },\n  march: {\n    month: { words: ['spring', 'april', 'february'] },\n    crowd: { fallback: true, words: ['protest', 'crowd', 'against'] },\n  },\n  model: {\n    person: { words: ['swimsuit', 'makeup', 'fashion'] },\n    concept: { words: ['mental', 'conceptual', 'theory'] },\n    computer: { words: ['3d', 'render'] },\n  },\n  hook: {\n    music: { words: ['chorus', 'melody', 'verse'] },\n    shape: { fallback: true, words: ['fish', 'hook', 'lure'] },\n  },\n  ball: {\n    dance: { words: ['musical', 'gown'] },\n    object: { fallback: true, words: ['bounce', 'kick'] },\n  },\n  trip: {\n    drug: { words: ['lsd', 'acid'] },\n    travel: { fallback: true, words: ['vacation', 'drive', 'fly', 'pack'] },\n  },\n  course: {\n    path: { words: ['mountain', 'trail', 'chart'] },\n    school: { fallback: true, words: ['class', 'register', 'teach', 'teacher'] },\n  },\n  power: {\n    political: { fallback: true, words: ['politics', 'election', 'seek', 'hungry'] },\n    electrical: { words: ['consume', 'energy', 'appliance'] },\n  },\n  burn: {\n    insult: { words: ['sick'] },\n    fire: { fallback: true, words: ['degree', 'fire', 'heat'] },\n  },\n}\n"
  },
  {
    "path": "src/4-four/sense/model/senses/verb.js",
    "content": "export default {\n  plug: {\n    sell: { words: ['book', 'biography', 'album'] },\n    stop: { fallback: true, words: ['drain', 'sink', 'pipe'] },\n  },\n  strike: {\n    hit: { fallback: true },\n    protest: { words: ['job', 'union', 'worker'] },\n  },\n  charge: {\n    money: { words: ['fee', 'bank', 'price', 'service'] },\n    run: { words: ['toward', 'run', 'flee'] },\n  },\n  fire: {\n    job: { words: ['job', 'boss', 'contract'] },\n    gun: { words: ['gun', 'weapon', 'bullet', 'away'] },\n  },\n  trip: {\n    drug: { words: ['lsd', 'acid'] },\n    fall: { fallback: true, words: ['stumble', 'hurt'] },\n  },\n  tie: {\n    knot: { words: ['bow', 'rope', 'lace'] },\n    game: { words: ['point', 'score', 'match'] },\n  },\n}\n"
  },
  {
    "path": "src/4-four/sense/plugin.js",
    "content": "import model from './model/index.js'\nimport api from './api/api.js'\nimport sense from './compute/index.js'\n\nexport default {\n  compute: { sense },\n  api,\n  model,\n  // hooks: ['sense'],\n}\n"
  },
  {
    "path": "src/API/View.js",
    "content": "import world from './world.js'\nimport api from './methods/index.js'\n\nclass View {\n  constructor(document, pointer, groups = {}) {\n    // invisible props\n    const props = [\n      ['document', document],\n      ['world', world],\n      ['_groups', groups],\n      ['_cache', null],\n      ['viewType', 'View'],\n    ]\n    props.forEach(a => {\n      Object.defineProperty(this, a[0], {\n        value: a[1],\n        writable: true,\n      })\n    })\n    this.ptrs = pointer\n  }\n  /* getters:  */\n  get docs() {\n    let docs = this.document\n    if (this.ptrs) {\n      docs = world.methods.one.getDoc(this.ptrs, this.document)\n    }\n    return docs\n  }\n  get pointer() {\n    return this.ptrs\n  }\n  get methods() {\n    return this.world.methods\n  }\n  get model() {\n    return this.world.model\n  }\n  get hooks() {\n    return this.world.hooks\n  }\n  get isView() {\n    return true //this comes in handy sometimes\n  }\n  // is the view not-empty?\n  get found() {\n    return this.docs.length > 0\n  }\n  // how many matches we have\n  get length() {\n    return this.docs.length\n  }\n  // return a more-hackable pointer\n  get fullPointer() {\n    const { docs, ptrs, document } = this\n    // compute a proper pointer, from docs\n    const pointers = ptrs || docs.map((_d, n) => [n])\n    // do we need to repair it, first?\n    return pointers.map(a => {\n      // eslint-disable-next-line prefer-const\n      let [n, start, end, id, endId] = a\n      start = start || 0\n      end = end || (document[n] || []).length\n      //add frozen id, for good-measure\n      if (document[n] && document[n][start]) {\n        id = id || document[n][start].id\n        if (document[n][end - 1]) {\n          endId = endId || document[n][end - 1].id\n        }\n      }\n      return [n, start, end, id, endId]\n    })\n  }\n  // create a new View, from this one\n  update(pointer) {\n    const m = new View(this.document, pointer)\n    // send the cache down, too?\n    if (this._cache && pointer && pointer.length > 0) {\n      // only keep cache if it's a full-sentence\n      const cache = []\n      pointer.forEach((ptr, i) => {\n        const [n, start, end] = ptr\n        if (ptr.length === 1) {\n          cache[i] = this._cache[n]\n        } else if (start === 0 && this.document[n].length === end) {\n          cache[i] = this._cache[n]\n        }\n      })\n      if (cache.length > 0) {\n        m._cache = cache\n      }\n    }\n    m.world = this.world\n    return m\n  }\n  // create a new View, from this one\n  toView(pointer) {\n    return new View(this.document, pointer || this.pointer)\n  }\n  fromText(input) {\n    const { methods } = this\n    //assume ./01-tokenize is installed\n    const document = methods.one.tokenize.fromString(input, this.world)\n    const doc = new View(document)\n    doc.world = this.world\n    doc.compute(['normal', 'freeze', 'lexicon'])\n    if (this.world.compute.preTagger) {\n      doc.compute('preTagger')\n    }\n    doc.compute('unfreeze')\n    return doc\n  }\n  clone() {\n    // clone the whole document\n    let document = this.document.slice(0) //node 17: structuredClone(document);\n    document = document.map(terms => {\n      return terms.map(term => {\n        term = Object.assign({}, term)\n        term.tags = new Set(term.tags)\n        return term\n      })\n    })\n    // clone only sub-document ?\n    const m = this.update(this.pointer)\n    m.document = document\n    m._cache = this._cache //clone this too?\n    return m\n  }\n}\nObject.assign(View.prototype, api)\nexport default View\n"
  },
  {
    "path": "src/API/_lib.js",
    "content": "\n/** log the decision-making to console */\nconst verbose = function (set) {\n  const env = typeof process === 'undefined' || !process.env ? self.env || {} : process.env //use window, in browser\n  env.DEBUG_TAGS = set === 'tagger' || set === true ? true : ''\n  env.DEBUG_MATCH = set === 'match' || set === true ? true : ''\n  env.DEBUG_CHUNKS = set === 'chunker' || set === true ? true : ''\n  return this\n}\n\nexport { verbose }"
  },
  {
    "path": "src/API/extend.js",
    "content": "const isObject = function (item) {\n  return item && typeof item === 'object' && !Array.isArray(item)\n}\n\nconst isArray = function (arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\n// recursive merge of objects\nfunction mergeDeep(model, plugin) {\n  if (isObject(plugin)) {\n    for (const key in plugin) {\n      if (isObject(plugin[key])) {\n        if (!model[key]) Object.assign(model, { [key]: {} })\n        mergeDeep(model[key], plugin[key]) //recursion\n      } else {\n        Object.assign(model, { [key]: plugin[key] })\n      }\n    }\n  }\n  return model\n}\n// const merged = mergeDeep({ a: 1 }, { b: { c: { d: { e: 12345 } } } })\n// console.dir(merged, { depth: 5 })\n\n// vroom\nfunction mergeQuick(model, plugin) {\n  for (const key in plugin) {\n    model[key] = model[key] || {}\n    Object.assign(model[key], plugin[key])\n  }\n  return model\n}\n\nconst addIrregulars = function (model, conj) {\n  const m = model.two.models || {}\n  Object.keys(conj).forEach(k => {\n    // verb forms\n    if (conj[k].pastTense) {\n      if (m.toPast) {\n        m.toPast.ex[k] = conj[k].pastTense\n      }\n      if (m.fromPast) {\n        m.fromPast.ex[conj[k].pastTense] = k\n      }\n    }\n    if (conj[k].presentTense) {\n      if (m.toPresent) {\n        m.toPresent.ex[k] = conj[k].presentTense\n      }\n      if (m.fromPresent) {\n        m.fromPresent.ex[conj[k].presentTense] = k\n      }\n    }\n    if (conj[k].gerund) {\n      if (m.toGerund) {\n        m.toGerund.ex[k] = conj[k].gerund\n      }\n      if (m.fromGerund) {\n        m.fromGerund.ex[conj[k].gerund] = k\n      }\n    }\n    // adjective forms\n    if (conj[k].comparative) {\n      if (m.toComparative) {\n        m.toComparative.ex[k] = conj[k].comparative\n      }\n      if (m.fromComparative) {\n        m.fromComparative.ex[conj[k].comparative] = k\n      }\n    }\n    if (conj[k].superlative) {\n      if (m.toSuperlative) {\n        m.toSuperlative.ex[k] = conj[k].superlative\n      }\n      if (m.fromSuperlative) {\n        m.fromSuperlative.ex[conj[k].superlative] = k\n      }\n    }\n  })\n}\n\nconst extend = function (plugin, world, View, nlp) {\n  // support array of plugins\n  if (isArray(plugin)) {\n    plugin.forEach(p => extend(p, world, View, nlp))\n    return\n  }\n  const { methods, model, compute, hooks } = world\n  if (plugin.methods) {\n    mergeQuick(methods, plugin.methods)\n  }\n  if (plugin.model) {\n    mergeDeep(model, plugin.model)\n  }\n  if (plugin.irregulars) {\n    addIrregulars(model, plugin.irregulars)\n  }\n  // shallow-merge compute\n  if (plugin.compute) {\n    Object.assign(compute, plugin.compute)\n  }\n  // append new hooks\n  if (hooks) {\n    world.hooks = hooks.concat(plugin.hooks || [])\n  }\n  // assign new class methods\n  if (plugin.api) {\n    plugin.api(View)\n  }\n  if (plugin.lib) {\n    Object.keys(plugin.lib).forEach(k => (nlp[k] = plugin.lib[k]))\n  }\n  if (plugin.tags) {\n    nlp.addTags(plugin.tags)\n  }\n  if (plugin.words) {\n    nlp.addWords(plugin.words)\n  }\n  if (plugin.frozen) {\n    nlp.addWords(plugin.frozen, true)\n  }\n  if (plugin.mutate) {\n    plugin.mutate(world, nlp)\n  }\n}\nexport default extend\n"
  },
  {
    "path": "src/API/inputs.js",
    "content": "const isObject = val => {\n  return Object.prototype.toString.call(val) === '[object Object]'\n}\n\nconst isArray = function (arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\n// internal Term objects are slightly different\nconst fromJson = function (json) {\n  return json.map(o => {\n    return o.terms.map(term => {\n      if (isArray(term.tags)) {\n        term.tags = new Set(term.tags)\n      }\n      return term\n    })\n  })\n}\n\n// interpret an array-of-arrays\nconst preTokenized = function (arr) {\n  return arr.map((a) => {\n    return a.map(str => {\n      return {\n        text: str,\n        normal: str,//cleanup\n        pre: '',\n        post: ' ',\n        tags: new Set()\n      }\n    })\n  })\n}\n\nconst inputs = function (input, View, world) {\n  const { methods } = world\n  const doc = new View([])\n  doc.world = world\n  // support a number\n  if (typeof input === 'number') {\n    input = String(input)\n  }\n  // return empty doc\n  if (!input) {\n    return doc\n  }\n  // parse a string\n  if (typeof input === 'string') {\n    const document = methods.one.tokenize.fromString(input, world)\n    return new View(document)\n  }\n  // handle compromise View\n  if (isObject(input) && input.isView) {\n    return new View(input.document, input.ptrs)\n  }\n  // handle json input\n  if (isArray(input)) {\n    // pre-tokenized array-of-arrays \n    if (isArray(input[0])) {\n      const document = preTokenized(input)\n      return new View(document)\n    }\n    // handle json output\n    const document = fromJson(input)\n    return new View(document)\n  }\n  return doc\n}\nexport default inputs"
  },
  {
    "path": "src/API/methods/compute.js",
    "content": "const isArray = input => Object.prototype.toString.call(input) === '[object Array]'\n\nconst fns = {\n  /** add metadata to term objects */\n  compute: function (input) {\n    const { world } = this\n    const compute = world.compute\n    // do one method\n    if (typeof input === 'string' && compute.hasOwnProperty(input)) {\n      compute[input](this)\n    }\n    // allow a list of methods\n    else if (isArray(input)) {\n      input.forEach(name => {\n        if (world.compute.hasOwnProperty(name)) {\n          compute[name](this)\n        } else {\n          console.warn('no compute:', input) // eslint-disable-line\n        }\n      })\n    }\n    // allow a custom compute function\n    else if (typeof input === 'function') {\n      input(this)\n    } else {\n      console.warn('no compute:', input) // eslint-disable-line\n    }\n    return this\n  },\n}\nexport default fns\n"
  },
  {
    "path": "src/API/methods/index.js",
    "content": "import compute from './compute.js'\nimport loops from './loops.js'\nimport util from './utils.js'\n\nconst methods = Object.assign({}, util, compute, loops)\n\n// aliases\nmethods.get = methods.eq\nexport default methods\n"
  },
  {
    "path": "src/API/methods/loops.js",
    "content": "// wrappers for loops in javascript arrays\n\nconst forEach = function (cb) {\n  const ptrs = this.fullPointer\n  ptrs.forEach((ptr, i) => {\n    const view = this.update([ptr])\n    cb(view, i)\n  })\n  return this\n}\n\nconst map = function (cb, empty) {\n  const ptrs = this.fullPointer\n  const res = ptrs.map((ptr, i) => {\n    const view = this.update([ptr])\n    const out = cb(view, i)\n    // if we returned nothing, return a view\n    if (out === undefined) {\n      return this.none()\n    }\n    return out\n  })\n  if (res.length === 0) {\n    return empty || this.update([])\n  }\n  // return an array of values, or View objects?\n  // user can return either from their callback\n  if (res[0] !== undefined) {\n    // array of strings\n    if (typeof res[0] === 'string') {\n      return res\n    }\n    // array of objects\n    if (typeof res[0] === 'object' && (res[0] === null || !res[0].isView)) {\n      return res\n    }\n  }\n  // return a View object\n  let all = []\n  res.forEach(ptr => {\n    all = all.concat(ptr.fullPointer)\n  })\n  return this.toView(all)\n}\n\nconst filter = function (cb) {\n  let ptrs = this.fullPointer\n  ptrs = ptrs.filter((ptr, i) => {\n    const view = this.update([ptr])\n    return cb(view, i)\n  })\n  const res = this.update(ptrs)\n  return res\n}\n\nconst find = function (cb) {\n  const ptrs = this.fullPointer\n  const found = ptrs.find((ptr, i) => {\n    const view = this.update([ptr])\n    return cb(view, i)\n  })\n  return this.update([found])\n}\n\nconst some = function (cb) {\n  const ptrs = this.fullPointer\n  return ptrs.some((ptr, i) => {\n    const view = this.update([ptr])\n    return cb(view, i)\n  })\n}\n\nconst random = function (n = 1) {\n  let ptrs = this.fullPointer\n  let r = Math.floor(Math.random() * ptrs.length)\n  //prevent it from going over the end\n  if (r + n > this.length) {\n    r = this.length - n\n    r = r < 0 ? 0 : r\n  }\n  ptrs = ptrs.slice(r, r + n)\n  return this.update(ptrs)\n}\nexport default { forEach, map, filter, find, some, random }\n"
  },
  {
    "path": "src/API/methods/utils.js",
    "content": "const utils = {\n  /** */\n  termList: function () {\n    return this.methods.one.termList(this.docs)\n  },\n  /** return individual terms*/\n  terms: function (n) {\n    const m = this.match('.')\n    // this is a bit faster than .match('.') \n    // let ptrs = []\n    // this.docs.forEach((terms) => {\n    //   terms.forEach((term) => {\n    //     let [y, x] = term.index || []\n    //     ptrs.push([y, x, x + 1])\n    //   })\n    // })\n    // let m = this.update(ptrs)\n    return typeof n === 'number' ? m.eq(n) : m\n  },\n\n  /** */\n  groups: function (group) {\n    if (group || group === 0) {\n      return this.update(this._groups[group] || [])\n    }\n    // return an object of Views\n    const res = {}\n    Object.keys(this._groups).forEach(k => {\n      res[k] = this.update(this._groups[k])\n    })\n    // this._groups = null\n    return res\n  },\n  /** */\n  eq: function (n) {\n    let ptr = this.pointer\n    if (!ptr) {\n      ptr = this.docs.map((_doc, i) => [i])\n    }\n    if (ptr[n]) {\n      return this.update([ptr[n]])\n    }\n    return this.none()\n  },\n  /** */\n  first: function () {\n    return this.eq(0)\n  },\n  /** */\n  last: function () {\n    const n = this.fullPointer.length - 1\n    return this.eq(n)\n  },\n\n  /** grab term[0] for every match */\n  firstTerms: function () {\n    return this.match('^.')\n  },\n\n  /** grab the last term for every match  */\n  lastTerms: function () {\n    return this.match('.$')\n  },\n\n  /** */\n  slice: function (min, max) {\n    let pntrs = this.pointer || this.docs.map((_o, n) => [n])\n    pntrs = pntrs.slice(min, max)\n    return this.update(pntrs)\n  },\n\n  /** return a view of the entire document */\n  all: function () {\n    return this.update().toView()\n  },\n  /**  */\n  fullSentences: function () {\n    const ptrs = this.fullPointer.map(a => [a[0]]) //lazy!\n    return this.update(ptrs).toView()\n  },\n  /** return a view of no parts of the document */\n  none: function () {\n    return this.update([])\n  },\n\n  /** are these two views looking at the same words? */\n  isDoc: function (b) {\n    if (!b || !b.isView) {\n      return false\n    }\n    const aPtr = this.fullPointer\n    const bPtr = b.fullPointer\n    if (!aPtr.length === bPtr.length) {\n      return false\n    }\n    // ensure pointers are the same\n    return aPtr.every((ptr, i) => {\n      if (!bPtr[i]) {\n        return false\n      }\n      // ensure [n, start, end] are all the same\n      return ptr[0] === bPtr[i][0] && ptr[1] === bPtr[i][1] && ptr[2] === bPtr[i][2]\n    })\n  },\n\n  /** how many seperate terms does the document have? */\n  wordCount: function () {\n    return this.docs.reduce((count, terms) => {\n      count += terms.filter(t => t.text !== '').length\n      return count\n    }, 0)\n  },\n\n  // is the pointer the full sentence?\n  isFull: function () {\n    const ptrs = this.pointer\n    if (!ptrs) {\n      return true\n    }\n    // must start at beginning\n    if (ptrs.length === 0 || ptrs[0][0] !== 0) {\n      return false\n    }\n    let wantTerms = 0\n    let haveTerms = 0\n    this.document.forEach(terms => wantTerms += terms.length)\n    this.docs.forEach(terms => haveTerms += terms.length)\n    return wantTerms === haveTerms\n    // for (let i = 0; i < ptrs.length; i += 1) {\n    //   let [n, start, end] = ptrs[i]\n    //   // it's not the start\n    //   if (n !== i || start !== 0) {\n    //     return false\n    //   }\n    //   // it's too short\n    //   if (document[n].length > end) {\n    //     return false\n    //   }\n    // }\n    // return true\n  },\n\n  // return the nth elem of a doc\n  getNth: function (n) {\n    if (typeof n === 'number') {\n      return this.eq(n)\n    } else if (typeof n === 'string') {\n      return this.if(n)\n    }\n    return this\n  }\n\n}\nutils.group = utils.groups\nutils.fullSentence = utils.fullSentences\nutils.sentence = utils.fullSentences\nutils.lastTerm = utils.lastTerms\nutils.firstTerm = utils.firstTerms\nexport default utils\n"
  },
  {
    "path": "src/API/world.js",
    "content": "const methods = {\n  one: {},\n  two: {},\n  three: {},\n  four: {},\n}\n\nconst model = {\n  one: {},\n  two: {},\n  three: {},\n}\nconst compute = {}\nconst hooks = []\n\nexport default { methods, model, compute, hooks }\n"
  },
  {
    "path": "src/_version.js",
    "content": "export default '14.15.0'"
  },
  {
    "path": "src/four.js",
    "content": "import nlp from './three.js'\nimport sense from './4-four/sense/plugin.js'\nimport facts from './4-four/facts/plugin.js'\n\nnlp.plugin(sense)\nnlp.plugin(facts)\n\nexport default nlp\n"
  },
  {
    "path": "src/nlp.js",
    "content": "import View from './API/View.js'\nimport tmpWrld from './API/world.js'\nimport version from './_version.js'\nimport extend from './API/extend.js'\nimport { verbose } from './API/_lib.js'\nimport handleInputs from './API/inputs.js'\n\nconst world = Object.assign({}, tmpWrld)\n\nconst nlp = function (input, lex) {\n  if (lex) {\n    nlp.addWords(lex)\n  }\n  const doc = handleInputs(input, View, world)\n  if (input) {\n    doc.compute(world.hooks)\n  }\n  return doc\n}\nObject.defineProperty(nlp, '_world', {\n  value: world,\n  writable: true,\n})\n\n/** don't run the POS-tagger */\nnlp.tokenize = function (input, lex) {\n  const { compute } = this._world\n  // add user-given words to lexicon\n  if (lex) {\n    nlp.addWords(lex)\n  }\n  // run the tokenizer\n  const doc = handleInputs(input, View, world)\n  // give contractions a shot, at least\n  if (compute.contractions) {\n    doc.compute(['alias', 'normal', 'machine', 'contractions']) //run it if we've got it\n  }\n  return doc\n}\n\n/** extend compromise functionality */\nnlp.plugin = function (plugin) {\n  extend(plugin, this._world, View, this)\n  return this\n}\nnlp.extend = nlp.plugin\n\n\n/** reach-into compromise internals */\nnlp.world = function () {\n  return this._world\n}\nnlp.model = function () {\n  return this._world.model\n}\nnlp.methods = function () {\n  return this._world.methods\n}\nnlp.hooks = function () {\n  return this._world.hooks\n}\n\n/** log the decision-making to console */\nnlp.verbose = verbose\n/** current library release version */\nnlp.version = version\n\nexport default nlp\n"
  },
  {
    "path": "src/one.js",
    "content": "import nlp from './nlp.js' // 5kb\nimport cache from './1-one/cache/plugin.js'\nimport change from './1-one/change/plugin.js'\nimport contractions from './1-one/contraction-one/plugin.js'\nimport freeze from './1-one/freeze/plugin.js'\nimport lexicon from './1-one/lexicon/plugin.js'\nimport lookup from './1-one/lookup/plugin.js'\nimport match from './1-one/match/plugin.js'\nimport output from './1-one/output/plugin.js'\nimport pointers from './1-one/pointers/plugin.js'\nimport sweep from './1-one/sweep/plugin.js'\nimport tag from './1-one/tag/plugin.js'\nimport tokenize from './1-one/tokenize/plugin.js'\nimport typeahead from './1-one/typeahead/plugin.js'\n\n// order here matters\nnlp.extend(change) //0kb\nnlp.extend(output) //0kb\nnlp.extend(match) //10kb\nnlp.extend(pointers) //2kb\nnlp.extend(tag) //2kb\nnlp.plugin(contractions) //~6kb\nnlp.extend(tokenize) //7kb\nnlp.extend(freeze) //\nnlp.plugin(cache) //~1kb\nnlp.extend(lookup) //7kb\nnlp.extend(typeahead) //1kb\nnlp.extend(lexicon) //1kb\nnlp.extend(sweep) //1kb\n\nexport default nlp // 40kb\n"
  },
  {
    "path": "src/three.js",
    "content": "import nlp from './two.js'\nimport adjectives from './3-three/adjectives/plugin.js'\nimport adverbs from './3-three/adverbs/plugin.js'\nimport chunker from './3-three/chunker/plugin.js'\nimport misc from './3-three/misc/plugin.js'\nimport normalize from './3-three/normalize/plugin.js'\nimport nouns from './3-three/nouns/plugin.js'\nimport numbers from './3-three/numbers/plugin.js'\nimport redact from './3-three/redact/plugin.js'\nimport sentences from './3-three/sentences/plugin.js'\nimport topics from './3-three/topics/plugin.js'\nimport verbs from './3-three/verbs/plugin.js'\nimport coreference from './3-three/coreference/plugin.js'\n\nnlp.plugin(adjectives) //\nnlp.plugin(adverbs) //\nnlp.plugin(chunker) //\nnlp.plugin(coreference)\nnlp.plugin(misc) //\nnlp.plugin(normalize) //\nnlp.plugin(nouns) //\nnlp.plugin(numbers) //\nnlp.plugin(redact) //\nnlp.plugin(sentences) //\nnlp.plugin(topics) //\nnlp.plugin(verbs) //\n\nexport default nlp\n"
  },
  {
    "path": "src/two.js",
    "content": "import nlp from './one.js'\nimport preTag from './2-two/preTagger/plugin.js'\nimport contractionTwo from './2-two/contraction-two/plugin.js'\nimport postTag from './2-two/postTagger/plugin.js'\nimport lazy from './2-two/lazy/plugin.js'\nimport swap from './2-two/swap/plugin.js'\n\nnlp.plugin(preTag) //~103kb\nnlp.plugin(contractionTwo) //\nnlp.plugin(postTag) //~33kb\nnlp.plugin(lazy) //\nnlp.plugin(swap) //\n\nexport default nlp\n"
  },
  {
    "path": "tagger.scratch.js",
    "content": "/* eslint-disable no-console, no-unused-vars */\nimport nlp from './src/four.js'\n\n\nconst arr = [\n  //  %Plural|Verb% %Noun|Verb%\n  // `[Shares] [finish] [lower] on [sustained] selling`,\n  // `forward: appartment pricing`,\n  // `[wear] [deserted] look`,\n  // `[Place] items in the top`,\n\n  // imperatives\n  // `C'mon, Luisa, you have a chance`,\n  // `would you mind watching Ben for me?`,\n  // `i see the girl, respect the guard, and go right home`,\n  // `if Chandler had kissed her, would you hear him out?`,\n  // `Honey, would you like a snack?`,\n  // `teach him five lessons`,\n  // `Have things to occupy yourself during the trip.`,\n  // `Service wise, no complaints`,\n\n  // 'The Bill was passed',\n  // 'give parents their power',\n  // `were overrun by insurgents`,\n  // `been overrun by insurgents`,\n  // `would not give rise`,\n  // `he will stroll downtown`,\n  // `I wasn't born until he was`,\n  // `people who will explore`,\n  // 'Does he blink frequently?',\n  // 'they have more product.',\n  // `re-tool my exhaust`,\n\n\n  // `soy green tea lattes are [amazing]`,\n  // `Seeing them [drive] away`,\n  // 'some require equity in order to qualify',\n  // `[Light] [travels] [faster] than [sound]`,\n  // `[this] [is] [a] [cool] [place] hang out`,\n  // `Not, not more bureaucracy, not more red tape`,\n  // `we'll soon make him shudder.`,\n  // `just like a dream`,\n  // `[Why] did [Jon] Snow [stand] in line`,\n  // `he would [later] [confess] [that]`,\n  // `why the job [matters] to you`,\n  // `women never [like] Joey`,\n  // `I let another one [get] [away]`,\n  // `He was [shot] in the chest and arm and [received] shrapnel [wounds]`,\n  // `[Compile] information about [claims] you filed`,\n  // `The flounder and fungus are [prepared] Sichuan style`,\n  // `a win-win situation`,\n  // `[Browse] [to] the C:\\\\RealityFactory`,\n  // `Uh-huh Jim [Carrey] is [challenged]`,\n  // `Stand tall [hold] your head high`,\n  // `Renovations at Union Station [reveal] pristine facade`,\n  // `[Proofread] your writing`,\n  // `And the word [spread] of Billy the Kid`,\n  // `You can [soon] [drink] coffee`,\n  // `[Advocates] [lock] court premises`,\n  // `HC [calls] for CBI chargesheet`,\n  // `where a train [stops]`,\n  // `[estimates] [show] that by the end`,\n  // `Spice [slashes] airtime [rates] for [cashcard] users`,\n  // `And [more] Americans [finish] college`,\n  // `[where] an ocean liner is [launched]`,\n\n  // ^%Noun|Verb% %Plural|Verb%\n\n  // `it's milk`,\n  // `it's well known`,\n  // `when's he coming`,\n  // `it's well known for it's burger`,\n  // `so that [workers] can take [time] [off]`,\n  // `Statistics [show] [that] teen pregnancy`,\n  // `were as [follows]`,\n  // 'cake',\n  // 'cupcakes',\n  // 'earthquakes',\n  // 'mistakes',\n  // 'snakes',\n  // '3 takes',\n\n  // `hundred shots in my face and [hands]`,\n  // `he'd make it right`,\n  // `look more intimidating.`,\n  // `Men are like bank accounts.`,\n  // `can we account for earthquakes?`,\n  // `back to my friends house`,\n  // `a filling pita wrap.`,\n  // `when it comes to grades.`,\n  // `your education and training`,\n  // `ensure privacy, and save lives.`,\n  // `Air, air, air, air, air, air`,\n  // ` previous games were generally mirrors`,\n  // `the bird song was deafening.`,\n  // ` side to side`,\n  // 'their past mistakes',\n\n  // `very runny and soup-like.`,\n  // `bring you back`,\n  // `community of cooperation, not conflict.`, //something wrong here?\n  // `show you trigger discipline.`,\n  // `show u trigger discipline.`,\n  // `the medicines and stuff.`,\n  // `Type your desired [name] into the box`,\n  // 'the appalling chemical-weapons attack',\n  // `[The] [housing] and employment crisis`,\n\n  // 'then better bring dog too',\n  // `brighter [lights] and [colours]`,\n  // `during your Christmas [shopping] this year`,\n  // `the sharing of electron [pairs] between atoms`,\n  // `[Brainstorm] other ways of [understanding] your [appearance]`,\n  // `[all] you [vegetarians]`,\n\n  // `eating [in] the [parking] lot`,\n  // `walked [hand] [in] hand`,\n  // `Have a [back] up buddy`,\n  // `from the [gravest] health threat that they face an [epidemic] of teen smoking`,\n  // `Walk or [bike] everywhere you can`,\n  // `I had a [roasted] chicken [craving] one day`,\n  // `an [evidentiary] [hearing]`,\n  // `a monopoly on East Coast [gambling]`,\n  // 'Bite or [lick] your lower lip',\n  // `suddenly [there] came a [tapping]`,\n  // 'his break ups',\n  // 'the fill up',\n  // 'Fill up the tank',\n  // 'we stood back so carefully',\n  // `[Speed] Post [moves] at snail pace`,\n  // 'use reverse psychology',\n  // 'Hash Browns',\n  // `a giant [glimmering] silver web`,\n  // 'No walk in the park for us',\n  // 'there was no wait on a Saturday morning.',\n  // 'during my next stay in Orlando.',\n  // 'an elaborate pick-up line',\n  // 'It is an evil growing out of our institutions',\n  // 'his best-known lyrics',\n  // 'a thalidomide binding protein.',\n  // 'wearing a moth-eaten suit.',\n  // 'for the days ahead stay firm',\n  // 'a new Act compelling registration',\n  // 'The vet considered amputation',\n  // 'with your hands up',\n  // `you seem unapproachable and [closed] [off]`,\n  // 'the instant he walked',\n  // `make your girl [feel] greater`,\n  // `what your Majesty [asks] of me`,\n  // `did the sailor [ground] his son`,\n  // `But before I do that [let] me put a hand on it`,\n  // `if you [like] comics`,\n  // `helped [marshal] support`,\n  // `If a ball [hit] into play rolls foul before passing through the infield`,\n  // `does my molecule [bind]`,\n\n  // `Next, take a look`,\n  // 'hella-boring meeting',\n  // 'his best-known lyrics',\n  // 'went right in',\n\n  // missing nouns\n  // `A little [make up] can go a long way`,\n  // `Take your own personality and [values] into consideration`,\n  // `this witch who turned men into [pigs]`,\n  // `[Snow] White roommate who fits the category`,\n  // ' when he was out hunting',\n\n\n  // `like dinner [parties] or game nights`,\n  // `Let me take you to [places]`,\n  // `Guess who's doing [laundry] there too`,\n  // `You've had [smoke] blown your way`,\n  // `With more [holes] than a rug`,\n  // `It's [buzzcut] season anyway`,\n\n  // 'you are hugging parked cars',\n  // 'recognizing written language',\n  // 'For being organized',\n  // 'a nearly overpowering feeling',\n  // 'keep subsidizing skyrocketing tuition',\n  // `Grimy [work] you guys do`,\n\n  // `dump truck smashing into [overpass] on the 401`,\n  // `[Iron] Maiden land in Beijing`,\n\n\n  // missing adjectives\n  // `The [holy] [well] of St Guron`,\n  // `with many [key] commanders`,\n  // `'Cause girl you're [amazing] just the way you are`,\n  // `things turn [sour] really quick`,\n  // `their [chosen] paths`,\n  // `Are you [as] [confused] as I am`,\n  // `I wish my [only] problem in life`,\n  // `You and my sister, sittin’ in a tree.`,\n  // `prepayment has taken 45 days alone`\n\n\n  // `countries as a whole seem brighter`,\n  // `four years of uninterrupted economic growth`,\n  // `because people of varying ethnicities`,\n\n  // 'designed to help use the newly written',\n  // 'Power watchdog raps utility',\n  // 'Boost user engagement',\n  // 'To place close together',\n  // 'Hash Browns',\n  // 'Next, take a look at your dropsuit fittings',\n  // 'NMDAR signaling increases RanBP1 expression',\n  // 'in the room where you usually nurse',\n  // 'call and reserve one',\n\n  // 'to contact her in an emergency',\n  // 'firms may face difficulties in raising',\n  // 'her opera stage debut in 1957',\n  // 'place tea bags in hot water',\n  // 'Solar panels work fine in overcast conditions',\n  // 'while the therapist watches',\n  // 'All right relax',\n  // `If you notice swelling`,\n  // `and whisk to fully incorporate`,\n  // 'gourmet burgers back home in LA',\n  // `Going shopping alone`,\n  // 'SO FREAKING GOOD!',\n  // 'consider becoming a member',\n  // 'would not work right.',\n  // 'doing a holiday card together',\n  // `when the killer strikes`,\n  // `Your refusal may cause hurt and disappointment`,\n  // 'Carpenter\\'s one year of coaching',\n  // `Holly objects to Nia's character`,\n  // ' visa & travel assistance',\n  // 'Let the dishwasher run for an entire cycle',\n  // 'by encouraging carpooling',\n  // 'Ohio beaver trapping season starts in late December ',\n  // 'We Personally Guarantee Everything We Sell',\n  // 'we personally guarantee',\n  // // 'unless we win',\n  // // 'and we offer',\n  // \"method for measuring\",\n  // \"responsibility for setting\",\n  // \"Attack and resolve your issues\",\n  // 'Co-accused denied bail',\n\n  // 'they are stored unshelled in silos',\n  // 'the liver is found associated with the kidneys',\n  // 'over-joyous',\n  // 'must-see movie',\n\n\n  // 'some coarsely-ground peanut fragments included',\n  // 'food scientists working in the US',\n  // 'helping prepare',\n  // 'selecting paste',\n  // 'bringing hope',\n  // 'getting time off',\n  // 'for being born',\n  // 'fans that are blowing feel amazing',\n  // 'recognizing written language',\n  // 'a process of milling roasted peanuts',\n  // 'my racing snail',\n  // 'a nearly overpowering feeling',\n  // 'and so requires stirring',\n  // 'a nearly overpowering feeling',\n  // ' whilst being rocked to permit even roasting.',\n  // '300 gang-related',\n  // '5 must-try burgers',\n  // 'vacuum-sealed',\n  // 'raise standards of living',\n  // 'sources of saturated and monounsaturated fats',\n  // `I'm practising walking`,\n\n  // 'going to stop posting schedules',\n  // `Sports awards to be given on Tuesday`\n  'A/B tester',\n  'I watched the Twelve Days of Christmas',\n\n  `how tasty something looks and ask if they have tried it.`,\n  `besides the larger chains, Fairley's adds considerable value`,\n  // \"5. The signatories to this Declaration\",\n]\n\nnlp.verbose('tagger')\nconst str = arr[0]\nnlp(str).debug()"
  },
  {
    "path": "tests/_ignore/abbreviation.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../three/_lib.js'\nconst here = '[three/abbreviation] '\n\ntest('abbreviations', function (t) {\n  const doc = nlp(`mr. and Mrs. Kelly live on Shoreditch st. in Canada`)\n  doc.abbreviations().stripPeriods()\n  t.equal(doc.text(), 'mr and Mrs Kelly live on Shoreditch st in Canada', here + 'no-periods')\n\n  doc.abbreviations().addPeriods().addPeriods()\n  t.equal(doc.text(), 'mr. and Mrs. Kelly live on Shoreditch st. in Canada', here + 'one-period')\n\n  t.end()\n})\n\ntest('abbreviations', function (t) {\n  const doc = nlp(\"i live on Main St. and it's fine.\")\n  doc.abbreviations().stripPeriods()\n  t.equal(doc.text(), \"i live on Main St and it's fine.\", here + 'strip')\n  doc.abbreviations().addPeriods()\n  t.equal(doc.text(), \"i live on Main St. and it's fine.\", here + 'add')\n  t.end()\n})\n"
  },
  {
    "path": "tests/_ignore/before-after.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../one/_lib.js'\nconst here = '[one/before-after] '\n\ntest('before-basic', function (t) {\n  let doc = nlp('one two three four five. one three four')\n  let arr = doc.before('three four').out('array')\n  t.equal(arr.length, 2, 'two-matches')\n  t.equal(arr[0], 'one two', 'first-match')\n  t.equal(arr[1], 'one', 'second-match')\n\n  doc = nlp('one two three four five. one three four. three four')\n  arr = doc.before('three').out('array')\n  t.equal(arr.length, 2, here + 'two-matches')\n  t.equal(arr[0], 'one two', here + 'first-match')\n  t.equal(arr[1], 'one', here + 'second-match')\n  t.end()\n})\n\ntest('before-match:', function (t) {\n  let r = nlp('one two three four five').before('two')\n  t.equal(r.out('normal'), 'one', here + 'before-two')\n\n  r = nlp('one two three four five').before('three . five')\n  t.equal(r.out('normal'), 'one two', here + 'before-several')\n\n  r = nlp('one two three four five').before('one two')\n  t.equal(r.out('normal'), '', here + 'no-before-start')\n\n  // r = nlp('one two three four').before('.'); //tricky\n  // t.equal(r.out('normal'), '', 'before-any');\n\n  r = nlp('one two three four. No, not here. He said two days a week.').before('two')\n  const arr = r.out('array')\n  t.equal(arr[0], 'one', here + 'before-twice-1')\n  t.equal(arr[1], 'He said', here + 'before-twice-2')\n\n  r = nlp('it was all the way over to two. It was the number two.').before('it')\n  t.equal(r.found, false, here + 'no-empty-matches')\n\n  t.end()\n})\n\ntest('after-match:', function (t) {\n  let r = nlp('one two three four five').after('two')\n  t.equal(r.out('normal'), 'three four five', here + 'after-one')\n\n  r = nlp('one two three four five').after('one . three')\n  t.equal(r.out('normal'), 'four five', here + 'after-several')\n\n  r = nlp('one two three four five').after('four five')\n  t.equal(r.out('normal'), '', here + 'no-afters-end')\n\n  r = nlp('one two three four').after('.')\n  t.equal(r.out('normal'), 'two three four', here + 'after-any')\n\n  r = nlp('one two three four. No, not here. He said two days a week.').after('two')\n  const arr = r.out('array')\n  t.equal(arr[0], 'three four.', here + 'after-twice-1')\n  t.equal(arr[1], 'days a week.', here + 'after-twice-2')\n\n  r = nlp('all the way over to two. It was the number two.').after('two')\n  t.equal(r.found, false, here + 'no-empty-matches')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/_ignore/participle.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../three/_lib.js'\nconst here = '[three/participle] '\n\ntest('toParticiple', function (t) {\n  const arr = [\n    ['i drive', 'i have driven'],\n    ['we smoke', 'we have smoked'],\n    // ['i will go', 'i will have gone'], //still future-tense?\n    ['they all swim', 'they all have swam'],\n    ['i learn', 'i have learned'],\n    ['i really travel to india', 'i really have traveled to india'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    // doc.verbs().toParticiple()\n    doc.verbs().toPast()\n    t.equal(doc.text(), a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('participle -> past', function (t) {\n  const arr = [\n    ['i am being driven', 'i have been driven'],\n    ['i should be driven', 'i should have been driven'],\n    ['i should go', 'i should have gone'],\n    ['i should have been driven', 'i should have been driven'],\n    ['i have driven', 'i drove'],\n    // ['we have smoked', 'we smoked'],\n    ['i will have gone', 'i had gone'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.verbs().toPastTense()\n    t.equal(doc.text(), a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('participle -> future', function (t) {\n  const arr = [\n    // ['i am being driven', 'i will have been driven'],\n    // ['i should be driven', 'i should have been driven'],\n    // ['i should go', 'i should have gone'],\n    // ['i should have been driven', 'i should have been driven'],\n    ['i have driven', 'i will drive'],\n    ['we have smoked', 'we will smoke'],\n    ['i will have gone', 'i will have gone'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.verbs().toFutureTense()\n    t.equal(doc.text(), a[1], here + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/_ignore/punctuation.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../three/_lib.js'\nconst here = '[one/punct] '\n\ntest('normalize elipses', function (t) {\n  const str = `[hello] spencęr…`\n  const doc = nlp(str)\n  t.equal(doc.text(), str, 'text out-1')\n  t.equal(doc.text('normal'), 'hello spencer...', here + 'normal out-1')\n  t.end()\n})\n\ntest('normalize question mark', function (t) {\n  const str = `hello, Spencęr???`\n  const doc = nlp(str)\n  t.equal(doc.text(), str, 'text out-2')\n  t.equal(doc.text('normal'), 'hello, spencer?', here + 'normal out-2')\n  t.end()\n})\n\ntest('hyphenated', function (t) {\n  const doc = nlp('and check this out! a walk-in microwave.')\n  doc.hyphenated().deHyphenate()\n  t.equal(doc.text(), 'and check this out! a walk in microwave.', here + 'dehyphenate')\n  t.end()\n})\n\ntest('normalize unicode', function (t) {\n  // const str = `• Spencęr & JOhn™ ⟨lmt⟩.`\n  const str = ` Spencęr & JOhn™ ⟨lmt⟩.`\n  const doc = nlp(str)\n  t.equal(doc.text(), str, 'text out')\n  t.equal(doc.text('reduced'), 'spencer & john lmt', here + 'normal out')\n  t.end()\n})\n\ntest('normalize quotes ', function (t) {\n  const str = `،one’ «two» ‘three’ “four” 'five' \"six.\"`\n  const doc = nlp(str)\n  t.equal(doc.text(), str, 'text out-3')\n  t.equal(doc.text('clean'), 'one two three four five six.', here + 'normal out-3')\n  t.end()\n})\n\ntest('toParentheses', function (t) {\n  const doc = nlp(`you could still go to McGill, the Harvard of Canada!`)\n  doc.match('the harvard of #Place').toParentheses()\n  t.equal(doc.text(), 'you could still go to McGill, (the Harvard of Canada)!', here + 'toparentheses')\n  t.end()\n})\n\ntest('toQuotation', function (t) {\n  const doc = nlp(`you could still go to McGill, the Harvard of Canada!`)\n  doc.match('harvard of #Place').toQuotation()\n  t.equal(doc.text(), 'you could still go to McGill, the \"Harvard of Canada\"!', here + 'toparentheses')\n  t.end()\n})\n\ntest('hasQuotation', function (t) {\n  let m = nlp(`seems to scream 'silence'`).match('@hasQuotation')\n  t.equal(m.text(), 'silence', 'hasQuotation')\n\n  m = nlp(`seems to scream 'silence all' and \"watch this\"`).match('@hasQuotation+')\n  t.equal(m.eq(0).text(), 'silence all', here + 'two scare-quotes')\n  t.equal(m.eq(1).text(), 'watch this', here + 'watch this')\n  t.end()\n})\n"
  },
  {
    "path": "tests/_ignore/quotations.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../three/_lib.js'\nconst here = '[three/quotations] '\n\nfunction testAllQuotes(a, t) {\n  const str = nlp(a[0]).quotations().out('root')\n  t.equal(str, a[1], here + a[0])\n}\n\ntest('quotation test:', function (t) {\n  const arr = [\n    [`he is \"really good\"`, `really good`],\n    [`he is \"really good\" i guess`, `really good`],\n    [`he is \"good\" i guess`, `good`],\n    [`he is \"completely and utterly great\" i guess`, `completely and utterly great`],\n    [`“quote”`, `quote`],\n    [`“quote is here”`, `quote is here`],\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0]).quotations().text('root')\n    t.equal(str, a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('Quotations - U+0022 to U+0022', function (t) {\n  const arr = [\n    ['he is \\u0022really good\\u0022', 'really good'],\n    ['he is \\u0022really good\\u0022 i guess', 'really good'],\n    ['he is not \\u0022good\\u0022 at all :/', 'good'],\n    ['\\u0022quote\\u0022', 'quote'],\n    ['\\u0022a quote here\\u0022', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+FF02 to U+FF02', function (t) {\n  const arr = [\n    ['he is \\uFF02really good\\uFF02', 'really good'],\n    ['he is \\uFF02really good\\uFF02 i guess', 'really good'],\n    ['he is not \\uFF02good\\uFF02 at all :/', 'good'],\n    ['\\uFF02quote\\uFF02', 'quote'],\n    ['\\uFF02a quote here\\uFF02', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+0027 to U+0027', function (t) {\n  const arr = [\n    ['he is \\u0027really good\\u0027', 'really good'],\n    ['he is \\u0027really good\\u0027 i guess', 'really good'],\n    ['he is not \\u0027good\\u0027 at all :/', 'good'],\n    ['\\u0027quote\\u0027', 'quote'],\n    ['\\u0027a quote here\\u0027', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+201C to U+201D', function (t) {\n  const arr = [\n    ['he is \\u201Creally good\\u201D', 'really good'],\n    ['he is \\u201Creally good\\u201D i guess', 'really good'],\n    ['he is not \\u201Cgood\\u201D at all :/', 'good'],\n    ['\\u201Cquote\\u201D', 'quote'],\n    ['\\u201Ca quote here\\u201D', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+2018 to U+2019', function (t) {\n  const arr = [\n    ['he is \\u2018really good\\u2019', 'really good'],\n    ['he is \\u2018really good\\u2019 i guess', 'really good'],\n    ['he is not \\u2018good\\u2019 at all :/', 'good'],\n    ['\\u2018quote\\u2019', 'quote'],\n    ['\\u2018a quote here\\u2019', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+201F to U+201D', function (t) {\n  const arr = [\n    ['he is \\u201Freally good\\u201D', 'really good'],\n    ['he is \\u201Freally good\\u201D i guess', 'really good'],\n    ['he is not \\u201Fgood\\u201D at all :/', 'good'],\n    ['\\u201Fquote\\u201D', 'quote'],\n    ['\\u201Fa quote here\\u201D', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+201B to U+2019', function (t) {\n  const arr = [\n    ['he is \\u201Breally good\\u2019', 'really good'],\n    ['he is \\u201Breally good\\u2019 i guess', 'really good'],\n    ['he is not \\u201Bgood\\u2019 at all :/', 'good'],\n    ['\\u201Bquote\\u2019', 'quote'],\n    ['\\u201Ba quote here\\u2019', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+201E to U+201D', function (t) {\n  const arr = [\n    ['he is \\u201Ereally good\\u201D', 'really good'],\n    ['he is \\u201Ereally good\\u201D i guess', 'really good'],\n    ['he is not \\u201Egood\\u201D at all :/', 'good'],\n    ['\\u201Equote\\u201D', 'quote'],\n    ['\\u201Ea quote here\\u201D', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+2E42 to U+201D', function (t) {\n  const arr = [\n    ['he is \\u2E42really good\\u201D', 'really good'],\n    ['he is \\u2E42really good\\u201D i guess', 'really good'],\n    ['he is not \\u2E42good\\u201D at all :/', 'good'],\n    ['\\u2E42quote\\u201D', 'quote'],\n    ['\\u2E42a quote here\\u201D', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+201A to U+2019', function (t) {\n  const arr = [\n    ['he is \\u201Areally good\\u2019', 'really good'],\n    ['he is \\u201Areally good\\u2019 i guess', 'really good'],\n    ['he is not \\u201Agood\\u2019 at all :/', 'good'],\n    ['\\u201Aquote\\u2019', 'quote'],\n    ['\\u201Aa quote here\\u2019', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+00AB to U+00BB', function (t) {\n  const arr = [\n    ['he is \\u00ABreally good\\u00BB', 'really good'],\n    ['he is \\u00ABreally good\\u00BB i guess', 'really good'],\n    ['he is not \\u00ABgood\\u00BB at all :/', 'good'],\n    ['\\u00ABquote\\u00BB', 'quote'],\n    ['\\u00ABa quote here\\u00BB', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+2039 to U+203A', function (t) {\n  const arr = [\n    ['he is \\u2039really good\\u203A', 'really good'],\n    ['he is \\u2039really good\\u203A i guess', 'really good'],\n    ['he is not \\u2039good\\u203A at all :/', 'good'],\n    ['\\u2039quote\\u203A', 'quote'],\n    ['\\u2039a quote here\\u203A', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+2035 to U+2032', function (t) {\n  const arr = [\n    ['he is \\u2035really good\\u2032', 'really good'],\n    ['he is \\u2035really good\\u2032 i guess', 'really good'],\n    ['he is not \\u2035good\\u2032 at all :/', 'good'],\n    ['\\u2035quote\\u2032', 'quote'],\n    ['\\u2035a quote here\\u2032', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+2036 to U+2033', function (t) {\n  const arr = [\n    ['he is \\u2036really good\\u2033', 'really good'],\n    ['he is \\u2036really good\\u2033 i guess', 'really good'],\n    ['he is not \\u2036good\\u2033 at all :/', 'good'],\n    ['\\u2036quote\\u2033', 'quote'],\n    ['\\u2036a quote here\\u2033', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+2037 to U+2034', function (t) {\n  const arr = [\n    ['he is \\u2037really good\\u2034', 'really good'],\n    ['he is \\u2037really good\\u2034 i guess', 'really good'],\n    ['he is not \\u2037good\\u2034 at all :/', 'good'],\n    ['\\u2037quote\\u2034', 'quote'],\n    ['\\u2037a quote here\\u2034', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+301D to U+301E', function (t) {\n  const arr = [\n    ['he is \\u301Dreally good\\u301E', 'really good'],\n    ['he is \\u301Dreally good\\u301E i guess', 'really good'],\n    ['he is not \\u301Dgood\\u301E at all :/', 'good'],\n    ['\\u301Dquote\\u301E', 'quote'],\n    ['\\u301Da quote here\\u301E', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+0060 to U+00B4', function (t) {\n  const arr = [\n    ['he is \\u0060really good\\u00B4', 'really good'],\n    ['he is \\u0060really good\\u00B4 i guess', 'really good'],\n    ['he is not \\u0060good\\u00B4 at all :/', 'good'],\n    ['\\u0060quote\\u00B4', 'quote'],\n    ['\\u0060a quote here\\u00B4', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n\ntest('Quotations - U+301F to U+301E', function (t) {\n  const arr = [\n    ['he is \\u301Freally good\\u301E', 'really good'],\n    ['he is \\u301Freally good\\u301E i guess', 'really good'],\n    ['he is not \\u301Fgood\\u301E at all :/', 'good'],\n    ['\\u301Fquote\\u301E', 'quote'],\n    ['\\u301Fa quote here\\u301E', 'a quote here'],\n  ]\n  arr.forEach(a => testAllQuotes(a, t))\n  t.end()\n})\n"
  },
  {
    "path": "tests/_ignore/toQuestion.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../three/_lib.js'\nconst here = '[three/toQuestion] '\n\ntest('simple chanage-punct', function (t) {\n  const statement = `I can't believe it's a law firm.`\n  const question = `I can't believe it's a law firm?`\n  const excl = `I can't believe it's a law firm!`\n  const doc = nlp(statement)\n\n  doc.sentences().toExclamation()\n  t.equal(doc.text(), excl, here + 'statement -> excl')\n  doc.sentences().toStatement()\n  t.equal(doc.text(), statement, here + 'excl -> statement')\n  doc.sentences().toQuestion()\n  t.equal(doc.text(), question, here + 'statement -> question')\n  doc.sentences().toExclamation()\n  t.equal(doc.text(), excl, here + 'question -> excl')\n  doc.sentences().toQuestion()\n  t.equal(doc.text(), question, here + 'excl -> question')\n\n  t.end()\n})\n\ntest('toquestion edge-cases ', function (t) {\n  let doc = nlp('how do you do...')\n  doc = doc.sentences().toExclamation()\n  t.equal(doc.text(), 'how do you do!', here + 'elipses')\n\n  // doc = nlp('how do you do (today)')\n  // doc = doc.sentences().toQuestion()\n  // t.equal(doc.text(), 'how do you do (today)?', 'elipses')\n\n  // doc = nlp('how do you do    ')\n  // doc = doc.sentences().toQuestion()\n  // t.equal(doc.text(), 'how do you do?    ', 'after-whitespace')\n\n  // let doc = nlp('Go out on a Tuesday? Who am I, Charlie Sheen?').sentences().toStatement()\n  // t.equal(doc.text(), 'Go out on a Tuesday. Who am I, Charlie Sheen.', 'awkward tostatement')\n  t.end()\n})\n"
  },
  {
    "path": "tests/bugs.md",
    "content": "// ---Nov 24th number agreement issue--\n\n```js\nlet doc = nlp('7th hour').debug()\nlet num = doc.numbers()\nnum.toCardinal(false)\ndoc.debug()\n//7 hours\n```\n\n// ---Nov 23rd tagger--\n\n```js\nlet doc = nlp(`the latter a dire security threat`)\nlet doc = nlp(`My first thought was to push it away, he said.`)\nlet doc = nlp(`and too many of the rich made their money`)\nlet doc = nlp(`Puerto Rico only (I need historical inflation data)`)\nlet doc = nlp(`blows it up`)\nlet doc = nlp(`20 people, including many children`)\nlet doc = nlp(` with heads and arms rolling around`)\n```\n\n// --- verbphrase conjugation issues---\n\n```js\nlet doc = nlp('i am being driven')\nlet doc = nlp('i should be driven')\nlet doc = nlp('i should have been driven')\ndoc.verbs().toParticiple()\ndoc.verbs().toPastTense()\ndoc.debug()\nconsole.log(doc.verbs(0).conjugate())\ndoc.sentences().toFutureTense().debug()\n\nconsole.log(nlp('next week').dates().json())\nnlp('you are John, Lisa, Fred').match('#FirstName{1,2}').debug()\n\nlet doc = nlp('i could study').debug()\ndoc.verbs().toParticiple()\ndoc.sentences().toPastTense()\nconsole.log(doc.text())\n// i thought he really could have.\n\nlet doc = nlp('i did really walk')\ndoc.sentences().toPresentTense()\nconsole.log(doc.text())\n```\n\n---- tagger issues ---\n\n```js\nnlp('lowered according').debug()\nnlp('it bristles outwards, brushlike.').debug()\nnlp('red-shouldered').debug()\nnlp('age of it').debug()\nnlp('so well that').debug()\nnlp('is off-white').debug()\nnlp('polyunsaturated').debug()\nnlp('favoured treat').debug()\n```\n\n---- gerund uses ---\n\n```\nSnowboarding is a winter sport.   [snowboarding = subject]\nI love snowboarding.    [snowboarding = object ]\nI am excited by snowboarding.   [snowboarding = object of a preposition]\nOne popular sport is snowboarding.   [snowboarding = subject complement]\nRight now, the athlete is snowboarding.   [is snowboarding = present continuous]\nHe was snowboarding yesterday afternoon.   [was snowboarding = past continuous]\nTomorrow, my friends and I are going to be snowboarding.   [are going to be snowboarding = future\n```\n"
  },
  {
    "path": "tests/four/_lib.js",
    "content": "/* eslint-disable no-console */\n// import build from '../../builds/four/compromise-four.mjs'\nimport src from '../../src/four.js'\nconst nlp = src\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==')\n  // nlp = build\n  process.exit()\n}\nexport default nlp\n"
  },
  {
    "path": "tests/four/facts.ignore.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[four/facts]'\n\nconst arr = [\n  {\n    txt: 'the beautiful girl walked slowly toward the store',\n    facts: [{\n      subj: 'girl',\n      verb: 'walk',\n      mod: 'toward'\n    }]\n  },\n  {\n    txt: 'everybody swam carefully to the rock',\n    facts: [{\n      subj: 'everybody',\n      verb: 'swim',\n      mod: 'to'\n    }]\n  },\n  {\n    txt: 'please eat carefully in the kitchen',\n    facts: [{\n      verb: 'eat',\n      mod: 'in'\n    }]\n  },\n  {\n    txt: 'spencer made a sandwich with tomato',\n    facts: [{\n      subj: 'spencer',\n      verb: 'make',\n      obj: 'sandwhich',\n    }]\n  },\n  {\n    txt: 'the whole team waited',\n    facts: [{\n      subj: 'team',\n      verb: 'wait',\n      obj: null,\n    }]\n  },\n  {\n    txt: 'the player clapped for the manager',\n    facts: [{\n      subj: 'player',\n      verb: 'clap',\n      obj: 'manager',\n    }]\n  },\n  {\n    txt: 'he made a sandwich for dinner with tomatos and cheese and sang a tune',\n    facts: [{\n      subj: 'he',\n      verb: 'make',\n      obj: 'sandwich',\n    }, {\n      subj: 'he',\n      verb: 'sing',\n      obj: 'tune',\n    }]\n  },\n  // {\n  //   txt: '',\n  //   facts: [{\n  //     subj: '',\n  //     verb: '',\n  //     mod: ''\n  //   }]\n  // },\n]\n\ntest('facts', function (t) {\n  arr.forEach(obj => {\n    const all = nlp(obj.txt).facts().json()\n\n    t.equal(all.length, obj.facts.length, here + ` [facts] ${obj.txt}`)\n\n    obj.facts.forEach((want, i) => {\n      const mine = all[i]\n      const msg = `${here} #${i}`\n\n      // subject\n      if (want.subj) {\n        t.equal(want.subj, mine.subj.root, msg + ` [subj] ${want.subj}`)\n      }\n      // action\n      if (want.verb) {\n        t.equal(want.verb, mine.verb.root, msg + ` [verb] ${want.verb}`)\n      }\n\n      // modifiers\n      if (want.mod) {\n        // t.ok(fact.modifiers[mod], here + `[subj] ${subj}`)\n      }\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/four/match.ignore.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[one/match] '\n\nconst arr = [\n  ['cold', '{cold/temperature}'],\n  ['cold demeanor', '{cold/attitude}'],\n  ['he will plug his book', '{plug/sell}'],\n]\ntest('match:', function (t) {\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    const msg = `'${(a[0] + \"' \").padEnd(20, '.')}  - '${a[1]}'`\n    t.equal(doc.has(a[1]), true, here + msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/four/misc.ignore.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[four/misc]'\n\ntest('match-set', function (t) {\n  const doc = nlp(`located in canada in the year 2019.`)\n  doc.match('(found|located) [in] #Place', 0).sense('in/place')\n  doc.match('[in] the? #Date', 0).sense('in/time')\n\n  t.ok(doc.has('{in} the year'), true, here + 'in-basic')\n  t.ok(doc.has('{in/time} the year'), true, here + 'in/time')\n  t.ok(doc.has('located {in/place} canada'), true, here + 'in/place')\n  t.end()\n})\n"
  },
  {
    "path": "tests/hmm.js",
    "content": "// test('tokenize() accepts lexicon param', function (t) {\n//   let doc = nlp.tokenize('spencer kelly is working here', {\n//     'spencer kelly': 'Person',\n//     working: 'NotFun',\n//   })\n//   t.equal(doc.match('#Person+').text(), 'spencer kelly', here + 'used tag')\n//   t.equal(doc.match('#NotFun').text(), 'working', here + 'used 2nd tag')\n//   t.equal(doc.has('#Verb'), false, here + 'not a full tag')\n//   t.end()\n// })\n"
  },
  {
    "path": "tests/one/_lib.js",
    "content": "/* eslint-disable no-console */\nimport build from '../../builds/one/compromise-one.mjs'\nimport src from '../../src/one.js'\nlet nlp = src\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==')\n  nlp = build\n}\nexport default nlp\n"
  },
  {
    "path": "tests/one/cache/cache.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/cache] '\n\ntest('no sneaky cache', function (t) {\n  const doc = nlp('one two three four')\n  t.equal(doc._cache, null, here + 'no-cache')\n  doc.match('one two three').tag('#Person')\n  t.equal(doc.match('#Person').found, true, here + 'doc is live')\n  t.end()\n})\n\ntest('invalidate cach on tag', function (t) {\n  const doc = nlp(`chilly`)\n  doc.tag('Noun')\n  let res = doc.match('#Noun')\n  t.equal(res.found, true, here + 'match skipped cache')\n  res = doc.lookup(['farm', 'chilly'])\n  t.equal(res.found, true, here + 'lookup skipped cache')\n  t.end()\n})\n\ntest('applied cache is sneaky', function (t) {\n  const doc = nlp('one two three four').cache()\n  const m = doc.match('one two three')\n  m.tag('#Person')//oh neat\n  t.equal(m.match('#Person').found, true, here + 'm is updated')\n  t.equal(doc.match('#Person').found, false, here + 'parent is out-of-date')\n  t.end()\n})\n\ntest('cache term forms', function (t) {\n  const doc = nlp(`spencer's city/town`)\n  doc.cache()\n\n  let m = doc.matchOne('spencer')\n  t.equal(m.length, 1, here + 'posessive')\n\n  m = doc.match('city')\n  t.equal(m.length, 1, here + 'slash')\n\n  m = doc.match('city/town')\n  t.equal(m.length, 1, here + 'full-slash')\n\n  t.end()\n})\n\n\ntest('cache if method', function (t) {\n  const doc = nlp('blah blah. foo foo. blah to your town')\n  doc.cache()\n\n  let m = doc.if('to your town')\n  t.equal(m.length, 1, here + 'if')\n\n  m = doc.ifNo('to your town')\n  t.equal(m.length, 2, here + 'ifNo')\n  t.end()\n})"
  },
  {
    "path": "tests/one/cache/keep-cache.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/keep-cache] '\n\ntest('keep cache', function (t) {\n  const doc = nlp('one two three. four five six. seven eight nine.')\n  doc.cache()\n\n  // eq\n  let cache = doc.eq(1)._cache || []\n  t.ok(cache[0] && cache[0].has('six'), here + 'eq')\n\n  // first\n  cache = doc.first()._cache || []\n  t.ok(cache[0] && cache[0].has('one'), here + 'first')\n\n  // if\n  cache = doc.if('four')._cache || []\n  t.ok(cache[0] && cache[0].has('five'), here + 'if')\n\n  // ifNo\n  cache = doc.ifNo('four')._cache || []\n  t.ok(cache[0] && cache[0].has('one'), here + 'ifNo')\n\n  // titlecase\n  cache = doc.toTitleCase()._cache || []\n  t.ok(cache[0] && cache[0].has('one'), here + 'titlecase')\n\n  // hyphenate\n  cache = doc.hyphenate()._cache || []\n  t.ok(cache[0] && cache[0].has('one'), here + 'hyphenate')\n\n  // reverse\n  cache = doc.reverse()._cache || []\n  t.ok(cache[0] && cache[0].has('one'), here + 'reverse')\n\n  // sort\n  // cache = doc.sort('alpha')._cache || []\n  // t.ok(cache[0] && cache[0].has('one'), here + 'sort')\n\n  t.end()\n})\n\n\ntest('cache in match', function (t) {\n  const doc = nlp('one two three four')\n  const m = doc.match('one two three')\n  m.tag('. #Person .')\n  t.equal(doc._cache, null, here + 'invalidate parent cache')\n  t.end()\n})\n\n\ntest('remove cache', function (t) {\n  const doc = nlp('one two three. four five six. seven eight nine.')\n  doc.cache()\n\n  // tag\n  let cache = doc.tag('Foog')._cache\n  t.ok(!cache || !cache[0], here + 'tag')\n\n  doc.cache()\n  cache = doc.unTag('Foog')._cache\n  t.ok(!cache || !cache[0], here + 'untag')\n\n  doc.cache()\n  cache = doc.terms()._cache\n  t.ok(!cache || !cache[0], here + 'terms')\n\n  doc.cache()\n  cache = doc.replace('two', 'deux')._cache\n  t.ok(!cache || !cache[0], here + 'replace')\n\n  doc.cache()\n  cache = doc.remove('three')._cache\n  t.ok(!cache || !cache[0], here + 'remove')\n\n  doc.cache()\n  cache = doc.eq(1).prepend('foo')._cache\n  t.ok(!cache || !cache[0], here + 'prepend')\n\n  t.end()\n})\n\ntest('cache in loops', function (t) {\n  const doc = nlp('one two match. three match four. match five six.')\n  doc.cache()\n  doc.map((m, i) => {\n    const cache = m._cache || []\n    t.ok(cache[0] && cache[0].has('match'), `map ${i}`)\n  })\n\n  doc.cache()\n  doc.forEach((m, i) => {\n    const cache = m._cache || []\n    t.ok(cache[0] && cache[0].has('match'), `foreach ${i}`)\n  })\n\n  doc.cache()\n  doc.filter((m, i) => {\n    const cache = m._cache || []\n    t.ok(cache[0] && cache[0].has('match'), `filter ${i}`)\n  })\n\n  doc.cache()\n  doc.some((m, i) => {\n    const cache = m._cache || []\n    t.ok(cache[0] && cache[0].has('match'), `some ${i}`)\n  })\n  t.end()\n})"
  },
  {
    "path": "tests/one/cache/offset.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/offset] '\n\ntest('offset-whitespace', function (t) {\n  let doc = nlp(`one two two more `).compute('offset')\n\n  let m = doc.match('two')\n  let obj = m.json({ offset: true, terms: false })[0] || { offset: {} }\n  t.equal(obj.offset.start, 4, here + 'two-start')\n  t.equal(obj.offset.length, 3, here + 'two-length')\n\n  m = doc.match('two two')\n  obj = m.json({ offset: true, terms: false })[0] || { offset: {} }\n  t.equal(obj.offset.start, 4, here + '2 two-start')\n  t.equal(obj.offset.length, 7, here + '2 two-length')\n\n  doc = nlp(`  one two    two more `).compute('offset')\n  m = doc.match('two two')\n  obj = m.json({ offset: true, terms: false })[0] || { offset: {} }\n  t.equal(obj.offset.length, 10, here + '3 two-length')\n  t.equal(obj.offset.start, 6, here + '3 two-start')\n  t.end()\n})\n\ntest('offset-punctuation', function (t) {\n  let doc = nlp(`one (two two) more `).compute('offset')\n  let m = doc.match('two two')\n  let obj = m.json({ offset: true, terms: false })[0] || { offset: {} }\n  t.equal(obj.offset.start, 5, here + '4 two-start')\n  t.equal(obj.offset.length, 9, here + '4 two-length')\n\n  doc = nlp(`0123, 678`).compute('offset')\n  m = doc.match('678')\n  obj = m.json({ offset: true, terms: false })[0] || { offset: {} }\n  t.equal(obj.offset.start, 6, here + '5 two-start')\n  t.equal(obj.offset.length, 3, here + '5 two-length')\n\n  t.end()\n})\n\ntest('offset-terms', function (t) {\n  const doc = nlp(`hello world`).compute('offset')\n  const obj = doc.json({ offset: true, terms: true })[0] || { offset: {} }\n\n  t.equal(obj.offset.start, 0, here + '6 doc-start')\n  t.equal(obj.offset.length, 11, here + '6 doc-length')\n\n  t.equal(obj.terms[0].offset.start, 0, here + '6 term 0-start')\n  t.equal(obj.terms[0].offset.length, 5, here + '6 term 0-length')\n\n  t.equal(obj.terms[1].offset.start, 6, here + '6 term 1-start')\n  t.equal(obj.terms[1].offset.length, 5, here + '6 term 1-length')\n\n  t.end()\n})\n\ntest('offset-terms-whitespace', function (t) {\n  const doc = nlp(` hello world`).compute('offset')\n  const obj = doc.json({ offset: true, terms: true })[0] || { offset: {} }\n\n  t.equal(obj.offset.start, 1, here + '7 doc-start')\n  t.equal(obj.offset.length, 11, here + '7 doc-length')\n\n  t.equal(obj.terms[0].offset.start, 1, here + '7 term 0-start')\n  t.equal(obj.terms[0].offset.length, 5, here + '7 term 0-length')\n\n  t.equal(obj.terms[1].offset.start, 7, here + '7 term 1-start')\n  t.equal(obj.terms[1].offset.length, 5, here + '7 term 1-length')\n\n  t.end()\n})\n\ntest('offset-terms-punctuation', function (t) {\n  const doc = nlp(`\"hello world`).compute('offset')\n  const obj = doc.json({ offset: true, terms: true })[0] || { offset: {} }\n\n  t.equal(obj.offset.start, 1, here + '8 doc-start')\n  t.equal(obj.offset.length, 12, here + '8 doc-length')\n\n  t.equal(obj.terms[0].offset.start, 1, here + '8 term 0-start')\n  t.equal(obj.terms[0].offset.length, 5, here + '8 term 0-length')\n\n  t.equal(obj.terms[1].offset.start, 7, here + '8 term 1-start')\n  t.equal(obj.terms[1].offset.length, 5, here + '8 term 1-length')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/change/append.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/append] '\n\ntest('append parent', function (t) {\n  const doc = nlp(`one two three`)\n  doc.append('four five')\n  t.equal(doc.text(), 'one two three four five', here + 'appended in parent')\n  t.end()\n})\n\ntest('append one child', function (t) {\n  const doc = nlp(`one two three`)\n  const m = doc.match('three')\n  m.append('four five')\n  t.equal(doc.text(), 'one two three four five', here + 'appended in parent')\n  t.end()\n})\n\ntest('append multi', function (t) {\n  const doc = nlp('one two. three four')\n  doc.append('oooo')\n  t.equal(doc.text(), 'one two oooo. three four oooo', here + 'append multi')\n  t.end()\n})\n\ntest('append two children', function (t) {\n  const doc = nlp(`one two three`)\n  const m = doc.match('two three')\n  const m2 = m.match('three')\n  m2.append('four five')\n  // t.equal(m.text('normal'), 'two three four five', here + 'append in child 1')\n  // t.equal(m2.text('normal'), 'three four five', here + 'append in child 2')\n  t.equal(doc.all().text(), 'one two three four five', here + 'appended in parent')\n  t.end()\n})\n\ntest('append in middle', function (t) {\n  const doc = nlp(`one two three six`)\n  doc.match('three').append('four five')\n  // t.equal(m.text('normal'), 'three four five', here + 'append in child 1')\n  t.equal(doc.all().text() + '|', 'one two three four five six|', here + 'inserted in parent')\n  t.end()\n})\n\ntest('append in middle many children', function (t) {\n  const doc = nlp(`one two three six`)\n  const mx = doc.match('one two three').match('three').match('.').match('three')\n  mx.append('four five')\n  // t.equal(mx.text('normal'), 'three four five', here + 'append in child n')\n  t.equal(doc.text(), 'one two three four five six', here + 'inserted in parent')\n  t.end()\n})\n\ntest('append check false-positives', function (t) {\n  const doc = nlp(`one two three five`)\n  const one = doc.match('one')\n  const twoThree = doc.match('two three')\n  const noFour = doc.match('four')\n  // let five = doc.match('five')\n  doc.match('three').append('four')\n  t.equal(one.text('normal'), 'one', here + 'not in one')\n  t.equal(twoThree.text('normal'), 'two three', here + 'not in twoThree')\n  t.equal(noFour.text('normal'), '', here + 'still no four')\n  // t.equal(five.text('normal'), 'five', here + 'not in five')\n  t.equal(doc.text(), 'one two three four five', here + 'inserted in parent')\n  t.equal(doc.match('four').text('normal'), 'four', here + 'now has four')\n  t.equal(doc.match('four five').text('normal'), 'four five', here + 'now has four-five')\n  t.equal(doc.match('. four').text('normal'), 'three four', here + 'now has three four')\n  t.end()\n})\n\n\ntest('append is cloned', function (t) {\n  const doc = nlp('before match after. second sentence here.')\n  const m = doc.match('match')\n  doc.match('sentence').append(m)\n\n  const id = m.docs[0][0].id\n  const foundIds = doc.termList().filter(term => term.id === id)\n  t.equal(foundIds.length, 1, 'id-different')\n\n  t.equal(m.length, 1, 'match-unchanged')\n  m.tag('NewTag')\n  t.equal(m.match('#NewTag').length, 1, 'tags-are-cloned')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/change/case.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/case] '\n\ntest('sanity-check case:', function (t) {\n  let str = 'John xoo, John fredman'\n  const r = nlp(str)\n  str = r.toUpperCase().out('text')\n  t.equal(str, 'JOHN XOO, JOHN FREDMAN', here + 'uppercase')\n\n  str = r.toLowerCase().out('text')\n  t.equal(str, 'john xoo, john fredman', here + 'lowercase')\n\n  str = r.toCamelCase().out('text')\n  t.equal(str, 'johnXooJohnFredman', here + 'camelcase') //removes comma\n  t.end()\n})\n\ntest('camel case:', function (t) {\n  const doc = nlp('and check this out! a walk-in microwave.')\n  doc.match('walk in').toCamelCase()\n  t.equal(doc.text(), 'and check this out! a walkIn microwave.', here + 'hyphenated-camelcase')\n  t.end()\n})\n\ntest('tricky case:', function (t) {\n  let str = 'i am spencer kelly here with Amy Watson.'\n  let r = nlp(str)\n  r.match('(spencer|amy) .').toUpperCase()\n  str = r.out('text')\n  t.equal(str, 'i am SPENCER KELLY here with AMY WATSON.', here + 'tricky-uppercase')\n\n  str = 'the Spencer Kelly Festival of Silly Walks'\n  r = nlp(str)\n  r.match('@isTitleCase+').toCamelCase()\n  t.equal(r.out('text'), 'the SpencerKellyFestival of SillyWalks', here + 'tricky-camelcase')\n\n  t.end()\n})\n\ntest('unicode case:', function (t) {\n  let doc = nlp(`ümasdfs`)\n  doc.toTitleCase()\n  t.equal(doc.text(), 'Ümasdfs', here + 'unicode-titlecase')\n\n  doc = nlp(`Ümasdfs`)\n  doc.toUpperCase()\n  t.equal(doc.text(), 'ÜMASDFS', here + 'unicode-uppercase')\n  doc.toLowerCase()\n  t.equal(doc.text(), 'ümasdfs', here + 'unicode-lowercase')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/change/concat.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/concat] '\n\ntest('concat misc :', function (t) {\n  let found = nlp('')\n  const docs = [\n    nlp('We Sell All Brands'),\n    nlp('all we are'),\n    nlp('see, we drop our prices'),\n    nlp('All right relax'),\n    nlp(`If you notice swelling, we will accept damages`),\n    nlp(`and whisk to fully incorporate`),\n  ]\n  docs.forEach(doc => {\n    found = found.concat(doc.match(\"we .\"))\n  })\n  t.equal(found.length, 4, here + 'found all four')\n  t.equal(found.all().has('prices'), false, here + 'only merged selection')\n  t.equal(found.not('we .').found, false, here + 'only we .')\n  t.end()\n})\n\ntest('concat tag :', function (t) {\n  let doc = nlp('the start and the end. another one')\n  doc.concat('cool times. oh yeah')\n  t.equal(doc.has('cool times'), true, here + 'tagged - 1')\n\n  doc = nlp('the start and the end. another one')\n  const b = nlp('cool times. oh yeah')\n  doc.concat(b)\n  t.equal(doc.has('cool times'), true, here + 'tagged - 2')\n  t.end()\n})\n\n// test('concat tag :', function (t) {\n//   let doc = nlp('one here. two here. three here')\n//   let mid = doc.match('two here')\n//   mid.concat('cool times. oh yeah')\n//   t.end()\n// })\n\ntest('concat pointers :', function (t) {\n  let doc = nlp('one two three four')\n  let a = doc.match('two three')\n  let b = doc.match('three four')\n  let res = a.concat(b)\n  t.deepEqual(res.out('array'), ['two three', 'three four'], here + 'concat-pointer')\n\n  doc = nlp('one two three. four five six')\n  a = doc.match('two three')\n  b = doc.match('four .')\n  res = a.concat(b)\n  t.deepEqual(res.out('array'), ['two three.', 'four five'], here + 'concat-pointer-mixed')\n\n  doc = nlp('before text. middle. after text.')\n  a = doc.slice(0, 2)\n  b = doc.slice(2)\n  const both = a.concat(b)\n  t.equal(both.length, 3, here + 'pointer-both')\n  t.equal(doc.length, 3, here + 'pointer-non-mutable')\n  t.end()\n})\n\ntest('concat doc :', function (t) {\n  const doc = nlp('walk the plank')\n  const doc2 = nlp('foo bar')\n  doc.concat(doc2)\n  t.equal(doc.text(), 'walk the plank foo bar', here + 'concat doc')\n  t.equal(doc.match('plank foo').found, false, here + 'concat is two sentences')\n\n\n  const a = nlp('before text. middle.')\n  const b = nlp('after text.')\n  a.concat(b)\n  t.equal(a.length, 3, here + 'have 3 mutable')\n  t.end()\n})"
  },
  {
    "path": "tests/one/change/fork.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/fork] '\n\ntest('fork basic:', function (t) {\n  const before = nlp.fork()\n  const a = before('hello donkey kong', { donkey: 'Person' })\n  const b = nlp('donkey')\n  t.equal(a.has('#Person'), true, here + 'has person')\n  t.equal(b.has('#Person'), false, here + 'does not have person')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/change/hyphenate.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/hyphens] '\n\ntest('hyphen-tokenize', function (t) {\n  let r = nlp('super-cool work')\n  t.equal(r.terms().length, 3, here + 'super, cool')\n  t.equal(r.out('text'), 'super-cool work', here + 'preserve hyphen')\n  t.equal(r.out('normal'), 'super cool work', here + 'normalize-out hyphen')\n\n  r = nlp('http://about.com/my-summer-vacation')\n  t.equal(r.terms().length, 1, here + 'url hyphen')\n  r = nlp('http://about.com/my-summer')\n  t.equal(r.terms().length, 1, here + 'url hyphen2')\n\n  r = nlp('421-0059')\n  t.equal(r.terms().length, 1, here + 'phoneNuumber hyphen')\n\n  r = nlp('sept-2')\n  t.equal(r.terms().length, 2, here + 'date hyphen')\n\n  r = nlp('-2 degrees')\n  t.equal(r.terms().length, 2, here + 'minus hyphen')\n\n  r = nlp('re-enactment')\n  t.equal(r.out('machine'), 'reenactment', here + 're-hyphen')\n  r = nlp('un-do')\n  t.equal(r.out('machine'), 'undo', here + 'un-hyphen')\n\n  t.end()\n})\n\ntest('hyphenate', function (t) {\n  let str = 'it is cool. he is nice'\n  let m = nlp(str)\n  m.hyphenate()\n  t.equal(m.terms().length, 6, here + 'seperate terms')\n  t.equal(m.out('text'), 'it-is-cool. he-is-nice', here + 'hyphenate')\n  m.dehyphenate()\n  t.equal(m.out('text'), str, here + 'dehyphenate')\n\n  str = 'i payed seven-hundred for the sandwich'\n  m = nlp(str)\n  m.match('(seven|hundred)').dehyphenate()\n  t.equal(m.out('text'), 'i payed seven hundred for the sandwich', here + 'dehyphenate-values')\n\n  str = 'he is the king of rock. she is the queen of cool.'\n  m = nlp(str)\n  m.match('(king|queen) of (cool|rock)').hyphenate()\n  t.equal(m.text(), 'he is the king-of-rock. she is the queen-of-cool.', here + 'hyphenate-match')\n\n  t.end()\n})\n\ntest('hasHyphen', function (t) {\n  const doc = nlp(`super-cool and hunky-dory. Connected with-a-dash.`)\n  const arr = doc.match('@hasHyphen+ .').out('array')\n  t.equal(arr.length, 3, here + 'three found')\n  t.equal(arr[0], 'super-cool', here + 'first found')\n  t.equal(arr[1], 'hunky-dory.', here + 'second found')\n  // t.equal(arr[2], 'with-a-dash', 'third found') //FIXME:hyphens\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/change/insert.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/insert] '\n\ntest('insert-basic :', function (t) {\n  let m = nlp('the dog sat').insertBefore('and')\n  t.equal(m.out('text'), 'and the dog sat', here + 'parent-before')\n\n  m = nlp('the dog sat').insertAfter('patiently')\n  t.equal(m.out('text'), 'the dog sat patiently', here + 'parent-after')\n\n  m = nlp('the dog sat')\n  m.match('dog').insertBefore('nice')\n  t.equal(m.out('text'), 'the nice dog sat', here + 'match-before')\n\n  m = nlp('a dog sat')\n  m.match('sat').insertAfter('quickly')\n  t.equal(m.out('text'), 'a dog sat quickly', here + 'match-after')\n\n  m = nlp('a dog sat')\n  m.match('a dog sat').insertAfter('quickly')\n  t.equal(m.out('text'), 'a dog sat quickly', here + 'multi-match-after')\n\n  m = nlp('a dog sat')\n  m.match('asdf').insertAfter('no no no')\n  t.equal(m.out('text'), 'a dog sat', here + 'insert-multi-after')\n\n  t.end()\n})\n\ntest('insert-subset-include :', function (t) {\n  let m = nlp('the dog is nice')\n  let sub = m.match('is')\n  sub.insertAfter('really')\n  // t.equal(sub.out('normal'), 'is really', here + 'after-parent')\n  t.equal(m.out('normal'), 'the dog is really nice', here + 'after-grandparent')\n\n  m = nlp('the dog climbed the fence')\n  sub = m.match('climbed')\n  sub.insertBefore('really')\n  // t.equal(sub.out('normal'), 'really climbed', here + 'before-parent')\n  t.equal(m.out('normal'), 'the dog really climbed the fence', here + 'before-grandparent')\n\n  t.end()\n})\n\ntest('titlecase change in insertBefore :', function (t) {\n  let doc = nlp('walking is very cool')\n  doc.match('^.').insertBefore('jogging')\n  t.equal(doc.text(), 'jogging walking is very cool', here + 'non-titlecase')\n\n  doc = nlp('Walking is very cool')\n  doc.match('^.').insertBefore('jogging')\n  t.equal(doc.text(), 'Jogging walking is very cool', here + 'titlecase')\n\n  // doc = nlp('Toronto is very cool', { toronto: 'City' })\n  // doc.match('^.').insertBefore('jogging')\n  // t.equal(doc.text(), 'Jogging Toronto is very cool', here + 'two-titlecases')\n\n  doc = nlp('I am very cool')\n  doc.match('^.').insertBefore('jogging')\n  t.equal(doc.text(), 'Jogging I am very cool', here + 'pronoun-titlecase')\n  t.end()\n})\n\ntest('insert document :', function (t) {\n  const doc = nlp(`one two three`)\n  const b = nlp('four')\n  doc.append(b)\n  t.equal(doc.text(), 'one two three four', here + 'doc appent')\n  t.end()\n})\n\ntest('punctuation edge-cases :', function (t) {\n  let doc = nlp('before.').insertAfter('after')\n  t.equal(doc.text(), 'before after.', here + 'period')\n\n  doc = nlp('before...').insertAfter('after')\n  t.equal(doc.text(), 'before after...', here + 'elipses')\n\n  doc = nlp('before.?').insertAfter('after')\n  t.equal(doc.text(), 'before after.?', here + 'period question-mark')\n\n  doc = nlp('before?').insertAfter('after')\n  t.equal(doc.text(), 'before after?', here + ' question-mark')\n  t.end()\n})\n\ntest('prepend shift-self :', function (t) {\n  const doc = nlp('no self no')\n  const m = doc.match('self')\n  const res = m.prepend('before')\n  t.equal(res.text(), 'before self', here + 'res has both')\n  t.equal(m.text(), 'before self', here + 'self is before+self')\n  t.end()\n})\n\ntest('append shift-self :', function (t) {\n  const doc = nlp('self')\n  const m = doc.match('.')\n  const res = m.append('after')\n  t.equal(res.text(), 'self after', here + 'res has both')\n  t.equal(m.text(), 'self after', here + 'self is self+after')\n  t.end()\n})\n\ntest('insert-multi :', function (t) {\n  const doc = nlp('the boy and the girl. girl girl')\n  const m = doc.match('(boy|girl)')\n  m.insertAfter('cat')\n  t.equal(doc.eq(0).text(), 'the boy cat and the girl cat.', here + 'insert multi')\n  t.equal(doc.eq(1).text(), 'girl cat girl cat', here + 'insert consecutive')\n  t.end()\n})\n\ntest('insert doc :', function (t) {\n  const doc = nlp('walk the plank')\n  const doc2 = nlp('foo bar')\n  doc.insertAfter(doc2.docs)\n  t.equal(doc.text(), 'walk the plank foo bar', here + 'insert doc')\n  t.equal(doc.match('plank foo').found, true, here + 'insert found')\n  doc.prepend('oh yeah')\n  t.equal(doc.match('oh yeah walk').found, true, here + 'prepend found')\n  t.end()\n})\n\ntest('insert repair :', function (t) {\n  let doc = nlp(`foo middle foo`)\n  doc.match('foo+').insertAfter('bar')\n  t.equal(doc.text(), 'foo bar middle foo bar', 'insert-repair-1')\n\n  doc = nlp(`foo foo middle foo`)\n  doc.match('foo+').insertAfter('bar')\n  t.equal(doc.text(), 'foo foo bar middle foo bar', 'insert-repair-2')\n\n  doc = nlp(`foo foo middle foo foo`)\n  doc.match('foo+').insertAfter('bar')\n  t.equal(doc.text(), 'foo foo bar middle foo foo bar', 'insert-repair-3')\n\n  doc = nlp(`before foo middle foo foo after foo`)\n  doc.match('foo+').insertAfter('bar')\n  t.equal(doc.text(), 'before foo bar middle foo foo bar after foo bar', 'insert-repair-4')\n  t.end()\n})\n\n"
  },
  {
    "path": "tests/one/change/join.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/join] '\n\ntest('sanity-check join:', function (t) {\n  const doc = nlp(`John smith and John Franklin`)\n  const m = doc.split('.')\n\n  let res = m.joinIf('john', '.')\n  t.deepEqual(res.out('array'), ['John smith', 'and', 'John Franklin'], here + 'john+.')\n  t.equal(m.length, 5, here + 'parent unchanged')\n\n  res = m.joinIf('@isTitleCase', '(smith|franklin|dolby)')\n  t.deepEqual(res.out('array'), ['John smith', 'and', 'John Franklin'], here + 'title+name')\n\n  t.end()\n})\n\ntest('ensure same-sentence-only join:', function (t) {\n  const doc = nlp(`john jacob and john. foobar`)\n  const m = doc.split('.')\n\n  const res = m.joinIf('john', '.')\n  t.deepEqual(res.out('array'), ['john jacob', 'and', 'john.', 'foobar'], here + 'sentence')\n  t.equal(m.length, 5, here + 'og split')\n\n  t.end()\n})\n\ntest('ensure neighbours-only join:', function (t) {\n  const doc = nlp(`john and jacob but john jacob`)\n  let m = doc.split('.')\n  const res = m.joinIf('john', 'jacob')\n  t.deepEqual(res.out('array'), ['john', 'and', 'jacob', 'but', 'john jacob'], here + 'neighbour')\n\n  m = m.not('(and|but)')\n  t.equal(m.length, 4, here + 'not-split')\n  const res2 = m.joinIf('john', 'jacob')\n  t.deepEqual(res2.out('array'), ['john', 'jacob', 'john jacob'], here + 'neighbour2')\n\n  t.end()\n})\n\ntest('join-all:', function (t) {\n  const str = `john jacob and john. john cool foo`\n  const doc = nlp(str)\n  t.equal(doc.length, 2, here + 'og split')\n  const m = doc.splitAfter('john .')\n  t.deepEqual(m.out('array'), ['john jacob', 'and john.', 'john cool', 'foo'], here + 'full join')\n\n  const res = m.join()\n  t.equal(res.length, 2, here + 'two again')\n  t.equal(res.text(), str, here + 'full again')\n\n  t.end()\n})\n\ntest('join-all-miss:', function (t) {\n  const doc = nlp(`before but after. before after`)\n  let m = doc.split()\n  m = m.not('but')\n  const res = m.join()\n  t.deepEqual(res.out('array'), ['before', 'after.', 'before after'], here + 'full join')\n\n  t.end()\n})\n\ntest('join-lazy:', function (t) {\n  const doc = nlp('one foo two foo')\n  let m = doc.terms()\n  m = m.join()\n  t.deepEqual(m.out('array'), ['one foo two foo'], here + 'lazy join')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/change/loop-mutate.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/loop-mutate] '\n\ntest('foreach replace', function (t) {\n  let doc = nlp('guns and roses')\n  doc.match('guns').forEach(p => {\n    p.replaceWith('flowers')\n  })\n  t.equal(doc.text(), 'flowers and roses', here+'simple loop-replace')\n\n  doc = nlp('guns and roses. roses and guns')\n  doc.match('guns').forEach(p => {\n    p.replaceWith('flowers')\n  })\n  t.equal(doc.text(), 'flowers and roses. roses and flowers', here+'two loop-replacements')\n\n  doc = nlp('guns and roses')\n  doc.match('guns').forEach(p => {\n    p.replaceWith('flowers, kittens')\n  })\n  t.equal(doc.text(), 'flowers, kittens and roses', here+'loop-replace-grow')\n\n  doc = nlp('guns, bombs, and roses')\n  doc.match('guns bombs').forEach(p => {\n    p.replaceWith('flowers')\n  })\n  t.equal(doc.text(), 'flowers, and roses', here+'loop-replace-shrink')\n\n  doc = nlp('the end')\n  doc.match('end').forEach(p => {\n    p.replaceWith('more words')\n  })\n  t.equal(doc.text(), 'the more words', here+'loop-replace-expand-end')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/change/prepend.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/prepend] '\n\ntest('prepend parent start', function (t) {\n  const doc = nlp(`one two three`)\n  doc.prepend('zero')\n  t.equal(doc.text(), 'zero one two three', here + 'prepended in parent')\n  t.end()\n})\n\ntest('prepend middle', function (t) {\n  const doc = nlp(`one two four five`)\n  const m = doc.match('four').prepend('three')\n  t.equal(m.text().trim(), 'three four', 'prepended in child')\n  t.equal(doc.text(), 'one two three four five', here + 'prepended in parent')\n  t.end()\n})\n\ntest('prepend multi', function (t) {\n  const doc = nlp('one two. three four')\n  doc.prepend('oooo')\n  t.equal(doc.text(), 'oooo one two. oooo three four', here + 'prepend-multi')\n  t.end()\n})\n\ntest('prepend children', function (t) {\n  const doc = nlp(`one four five six.`)\n  const m1 = doc.match('one four')\n  const m2 = m1.match('four')\n  m2.prepend('two three')\n\n  // t.equal(m1.text(), 'one two three four', 'prepended in child 1')\n  t.equal(m2.text(), 'two three four', 'prepended in child 2')\n  t.equal(doc.text(), 'one two three four five six.', here + 'prepended in parent')\n  t.end()\n})\n\ntest('prepend start child', function (t) {\n  const doc = nlp(`one two three four`)\n  doc.match('one').prepend('zero')\n  t.equal(doc.text(), 'zero one two three four', here + 'prepended in parent')\n  t.end()\n})\n\ntest('prepend many children', function (t) {\n  const doc = nlp(`one two three four`)\n  doc.match('one two three').match('one two').match('.').match('one').prepend('zero')\n  t.equal(doc.text(), 'zero one two three four', here + 'prepended in parent')\n  t.end()\n})\n\ntest('prepend a doc', function (t) {\n  const doc = nlp('one two. three four')\n  const one = doc.match('one')\n  const four = doc.match('four')\n  four.prepend(one)\n  t.equal(four.text(), 'one four', here + 'prepend-doc')\n  t.end()\n})\n\ntest('append a doc', function (t) {\n  const doc = nlp('one two. three four')\n  const one = doc.match('one')\n  const four = doc.match('four')\n  one.append(four)\n  t.equal(one.text(), 'one four', here + 'append-doc')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/change/reindex.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/reindex] '\n\nconst txt = `\nYou'll be making radical changes in your work habits, but you'll be a lot happier for it, and in the end you'll know it was worth it.\nPursuing a successful career, along with the usual social and financial advantages, will be easier this year than it has in a long time for you, Leo!\nThe most difficult thing might be deciding which path means the most to you, and where to put your focus.\nYou'll be able to create opportunities for advancement almost out of thin air.\nsentence match four.\nRomance in 2005 will make it a year to remember - and you'll be the envy of all your friends.\nYour working life might not go so smoothly this year, Virgo.\n`\ntest('sanity-check index:', function (t) {\n  const doc = nlp(txt)\n  const json = doc.json()\n  // t.equal(json[4].text, 'sentence number four.', 'got sentence')\n  t.deepEqual(json[4].terms[0].index, [4, 0], here + 'got term 1')\n  t.deepEqual(json[4].terms[2].index, [4, 2], here + 'got term 2')\n  t.end()\n})\n\ntest('reindex on remove:', function (t) {\n  const doc = nlp(txt)\n  doc.remove('match')\n  let json = doc.eq(4).json()[0]\n  t.equal(json.terms[1].normal, 'four', here + 'removed word')\n  t.deepEqual(json.terms[1].index, [4, 1], here + 'reindex after remove word')\n\n  doc.eq(1).remove() //pursuing....\n  json = doc.eq(3).json()[0]\n  t.equal(json.terms[1].normal, 'four', here + 'removed sentence')\n  t.deepEqual(json.terms[1].index, [3, 1], here + 'reindex after remove sentence')\n  t.end()\n})\n\ntest('reindex on insert:', function (t) {\n  const doc = nlp(txt)\n  doc.match('match').insertAfter('insert')\n  const json = doc.eq(4).json()[0]\n  t.equal(json.terms[2].normal, 'insert', here + 'inserted word')\n  t.deepEqual(json.terms[3].index, [4, 3], here + 'reindex after insert word')\n  // test .concat too\n  t.end()\n})\n\ntest('reindex on replace:', function (t) {\n  const doc = nlp(txt)\n  doc.replace('match', 'replace two')\n  const json = doc.eq(4).json()[0]\n  t.equal(json.terms[1].normal, 'replace', here + 'replaced word')\n  t.deepEqual(json.terms[3].index, [4, 3], here + 'reindex after replaced word')\n  t.end()\n})\n\ntest('reindex on concat:', function (t) {\n  const doc = nlp(txt)\n  doc.eq(1).concat('this is another sentence')\n  const json = doc.eq(5).json()[0]\n  t.equal(json.terms[1].normal, 'match', here + 'correct word')\n  t.deepEqual(json.terms[1].index, [5, 1], here + 'reindex after concat')\n  t.end()\n})\n\n// test('reindex on unique:', function (t) {\n//   let doc = nlp('one two one two three').terms()\n//   doc = doc.unique()\n//   t.equal(doc.text(), 'one two three', here+'unique smoketest')\n//   let json = doc.json()\n//   t.deepEqual(json[2].terms[0].index, [2, 0], here+'reindex after unique')\n//   t.end()\n// })"
  },
  {
    "path": "tests/one/change/remove.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/remove] '\n\ntest('remove-basic :', function (t) {\n  let m = nlp('the brown cat played').match('brown').remove().all()\n  t.equal(m.out('text'), 'the cat played', here + 'brown-cat')\n\n  m = nlp('the nice brown cat played').match('nice brown').remove().all()\n  t.equal(m.out('text'), 'the cat played', 'nice-brown')\n\n  m = nlp('the nice brown cat played').match('(nice|brown|cute)').remove().all()\n  t.equal(m.out('text'), 'the cat played', 'adj-each')\n\n  m = nlp('the nice brown cat played').match('(nice|brown)+').remove().all()\n  t.equal(m.out('text'), 'the cat played', 'adj-consecutive')\n\n  t.end()\n})\n\ntest('remove-greedy :', function (t) {\n  let m = nlp('the brown cat played').remove('brown')\n  t.equal(m.out('text'), 'the cat played', 'brown-cat')\n\n  m = nlp('the brown cat played. The brown dog sat down.').remove('brown')\n  t.equal(m.out('text'), 'the cat played. The dog sat down.', 'brown-cat')\n\n  m = nlp('the nice brown cat played. The nice dog waited.').remove('nice brown')\n  t.equal(m.out('text'), 'the cat played. The nice dog waited.', 'nice-brown')\n\n  m = nlp('the nice brown cat played. The cute dogs ate.').remove('(nice|brown|cute)')\n  t.equal(m.out('text'), 'the cat played. The dogs ate.', 'adj-each')\n\n  m = nlp('the nice brown cat played. The cute dogs ate.').remove('(nice|brown|cute)+')\n  t.equal(m.out('text'), 'the cat played. The dogs ate.', 'adj-consecutive')\n\n  t.end()\n})\n\ntest('remove-logic :', function (t) {\n  let m = nlp('spencer kelly is here').match('spencer kelly').remove('spencer')\n  t.equal(m.out('normal'), 'kelly', 'remove(reg) returns this')\n\n  m = nlp('spencer kelly is here').match('spencer kelly').remove().all()\n  t.equal(m.out('normal'), 'is here', 'remove() returns parent')\n\n  m = nlp('spencer kelly is here').match('spencer kelly').remove('notfound')\n  t.equal(m.out('normal'), 'spencer kelly', 'remove(notfound) returns this')\n  t.end()\n})\n\ntest('remove-dangling :', function (t) {\n  const doc = nlp(`one two three. four five six`)\n  doc.eq(0).remove()\n  t.equal(doc.length, 1, 'one-sentence')\n  t.equal(doc.text(), 'four five six', 'full-sentence')\n  // remove the final remaining one\n  doc.eq(0).remove()\n  t.equal(doc.length, 0, 'no-sentence')\n  t.equal(doc.text(), '', 'no-text')\n  t.end()\n})\n\ntest('remove-self :', function (t) {\n  const doc = nlp('foo one two. one foo two. one two foo. foo.')\n  const res = doc.match('foo').remove()\n  const want = 'one two. one two. one two.'\n  t.equal(doc.text(), want, here + 'this mutate self')\n  t.equal(res.text(), '', here + 'this return mutated')\n  t.equal(res.length, 0, here + 'match sentence length')\n  t.equal(doc.length, 3, here + 'match original length')\n  t.end()\n})\n\ntest('remove-match:', function (t) {\n  const doc = nlp('foo one two. one foo two. one two foo. foo.')\n  const res = doc.remove('foo')\n  const want = 'one two. one two. one two.'\n  t.equal(doc.text(), want, here + 'match mutates self')\n  t.equal(res.text(), want, here + 'match returns mutated')\n  t.equal(res.length, 3, here + 'match sentence length')\n  t.equal(doc.length, 3, here + 'match original length')\n  t.end()\n})\n\ntest('remove-until-empty:', function (t) {\n  let doc = nlp(`extra. match.`)\n  const m = doc.match('match')\n  doc.remove('extra')\n  doc.remove(m)\n  t.equal(doc.text(), '', here + 'remove empty')\n\n  doc = nlp(`extra. one two.`)\n  doc.remove('extra')\n  t.equal(doc.text(), 'one two.', here + 'remove empty again')\n  t.end()\n})\n\ntest('remove-is-not-split :', function (t) {\n  const doc = nlp('he is really walking. he surely walked quickly, silently.')\n  doc.remove('(really|surely|quickly|silently)')\n  t.equal(doc.length, 2, here + 'no-split length')\n  t.equal(doc.has('is walking'), true, here + 'match over split')\n  t.equal(doc.has('he walked'), true, here + 'match over split2')\n  t.equal(doc.text(), 'he is walking. he walked.', here + 'remove text')\n  t.end()\n})\n\ntest('clone-safe:', function (t) {\n  const txt = 'foo one two. one foo two. one two foo. foo.'\n  const doc = nlp(txt)\n  const res = doc.clone().remove('foo')\n  const want = 'one two. one two. one two.'\n  t.equal(doc.text(), txt, here + 'og untouched')\n  t.equal(res.text(), want, here + 'match returns mutated')\n  t.end()\n})\n\ntest('clone-partial :', function (t) {\n  const doc = nlp(`one two three. four two five`)\n  const m = doc.eq(1).clone()\n  m.remove('two')\n  t.equal(m.match('four five').found, true, here + 'match-over del')\n  t.equal(doc.match('four five').found, false, here + 'og no match-over del')\n  t.end()\n})\n\n\ntest('remove full-sentence', function (t) {\n  const doc = nlp(`extra. one two.`)\n  doc.remove('extra')\n  t.equal(doc.length, 1, here + '1 left')\n  t.equal(doc.text(), 'one two.', here + 'kept 2nd sentence')\n  t.end()\n})\n\ntest('remove doc by index :', function (t) {\n  const doc = nlp(`one extra two match three`)\n  const m = doc.match('match')\n  doc.remove('extra')\n  doc.remove(m)\n  t.equal(doc.text(), 'one two three', here + 'pointer index')\n  t.end()\n})\n\n\n\ntest('remove-everything-basic', function (t) {\n  const doc = nlp(`2pm`)\n  doc.remove('.')\n  t.equal(doc.text(), '', here + 'empty-text')\n  t.equal(doc.length, 0, here + '0-length')\n  t.equal(doc.found, false, here + 'not-found')\n\n  doc.remove('.')\n  t.equal(doc.found, false, here + 'still-not-found')\n  t.end()\n})\n\ntest('remove-reset-some-pointers', function (t) {\n  const doc = nlp('one match two three')\n  const m = doc.match('match two')\n  const dangle = m.match('. .')\n  const b = m.remove('two')\n  t.equal(m.text(), 'match', 'self updated')\n  t.equal(b.text(), 'match', 'returned view updated')\n  t.equal(doc.text(), 'one match three', 'document view okay')\n  // this pointer is not reset\n  t.equal(dangle.text(), 'match three', 'this is off now')\n  t.end()\n})\n\ntest('remove-everything-nested', function (t) {\n  const doc = nlp(`see term. term. term after.`)\n  t.equal(doc.length, 3, here + 'start-3')\n\n  doc.remove('term')\n  t.equal(doc.length, 2, here + 'only-2 now')\n\n  doc.remove('after')\n  t.equal(doc.length, 1, here + 'only-1 now')\n\n  doc.remove('.')\n  t.equal(doc.length, 0, here + '0 now')\n  t.equal(doc.found, false, here + 'not-found')\n\n  doc.remove('.')\n  t.equal(doc.found, false, here + 'still-not-found')\n\n  t.end()\n})\n\ntest('remove-quality-check', function (t) {\n  let doc = nlp('match one two. one match two. one two match.')\n  doc.remove('match')\n  t.equal(doc.text(), 'one two. one two. one two.', here + 'remove all sides')\n\n  const str = 'match. match match. match match match.'\n  doc = nlp(str)\n  doc.remove('foobar')\n  t.equal(doc.text(), str, here + 'remove nothing')\n  doc.remove('match')\n  t.equal(doc.text(), '', here + 'remove everything')\n\n  doc = nlp('before match after. before match match after. before match match match after.')\n  const before = doc.match('before')\n  // let after = doc.clone().match('after')\n  doc.remove('match+')\n  t.equal(doc.text(), 'before after. before after. before after.', here + 'remove multi-length')\n  t.equal(before.text(), 'before before before', here + 'match before multi-length')\n  // t.equal(after.text(), 'after after after', 'match after multi-length')\n\n  t.end()\n})\n\ntest('remove-bug-1', function (t) {\n  let m = nlp('one two three. foo.')\n  m = m.splitOn('two')\n  t.equal(m.docs.length, 4, here + 'four-parts')\n  t.equal(m.ptrs.length, 4, here + 'four-ptrs')\n  m.remove('three')\n  t.equal(m.docs.length, 3, here + 'now-three-parts')\n  t.equal(m.ptrs.length, 3, here + 'now-three-ptrs')\n  t.end()\n})\n\n\n// weird remove issue\ntest('remove-bug-2', function (t) {\n  let doc = nlp('two three')\n  let arr = doc.splitAfter('two')\n  arr.remove('three') // works\n  t.deepEqual(arr.out('array'), ['two'], here + 'remove match')\n  t.deepEqual(doc.out('array'), ['two'], here + 'doc remove match')\n\n  doc = nlp('two three')\n  arr = doc.splitAfter('two')\n  const m = doc.match('three')\n  m.remove()\n  t.deepEqual(m.json(), [], here + 'self is gone')\n  t.deepEqual(arr.out('array'), ['two'], here + 'remove self')\n  t.deepEqual(doc.out('array'), ['two'], here + 'doc remove self')\n\n  t.end()\n})\n\n\ntest('remove-bug-3', function (t) {\n  const txt = `\nHeader: \nsingle\n\nHeader:\nfirst\nsecond\n`\n  const doc = nlp(txt)\n  const m = doc.match('Header')\n  doc.remove(m)\n  t.deepEqual(doc.out('array'), ['single', 'first', 'second'], here + 'multi-remove issue')\n  t.end()\n})\n\ntest('remove-with-contractions', function (t) {\n  let doc = nlp(`before Remove 500mg of paracetamol`)\n  doc.remove('Remove')\n  t.equal(doc.text(), 'before 500mg of paracetamol', here + 'remove before contraction')\n\n  doc = nlp(`before 500mg Remove of paracetamol`)\n  doc.remove('Remove')\n  t.equal(doc.text(), 'before 500mg of paracetamol', here + 'remove after contraction')\n\n  doc = nlp(`before 500mg Remove of paracetamol`)\n  doc.remove('500mg remove')\n  t.equal(doc.text(), 'before of paracetamol', here + 'remove with contraction')\n\n  doc = nlp(`before i've had paracetamol`)\n  doc.remove(`i've`)\n  t.equal(doc.text(), 'before had paracetamol', here + 'remove only contraction')\n  t.end()\n})\n\n// test('remove-self-keep-splits', function (t) {\n//   let m = nlp('one two three. four.')\n//   m = m.terms()\n//   // [one, two, three, four]\n//   m = m.match('three').remove()\n//   // [one, two, four]\n//   t.deepEqual(m.out('array'), ['one', 'two.', 'four'])\n//   t.end()\n// })\n\ntest('remove-keep-splits', function (t) {\n  let m = nlp('one two three. four.')\n  m = m.terms()\n  // [one, two, three, four]\n  m = m.remove('three')\n  // [one, two, four]\n  t.deepEqual(m.out('array'), ['one', 'two.', 'four.'], here + 'keep-splits')\n  t.end()\n})\n\n\ntest('double-self becomes empty', function (t) {\n  const txt = `zero foo. one match foo. two foo.`\n  const doc = nlp(txt)\n  doc.harden()\n  const m = doc.eq(1)\n  m.remove()\n  t.equal(m.found, false, here + 'remove self is empty')\n\n  t.end()\n})\n\ntest('double-remove', function (t) {\n  const txt = `zero foo. one match foo. two foo.`\n  let doc = nlp(txt)\n  doc.remove('match') // first removal\n  doc.remove('zero foo') //second removal\n  t.equal(doc.text(), 'one foo. two foo.', here + 'double remove #1')\n\n  doc = nlp(txt)\n  doc.remove('match') // first removal\n  doc.eq(0).remove() //second removal\n  t.equal(doc.text(), 'one foo. two foo.', here + 'double remove #2')\n\n  t.end()\n})\n\ntest('full-to-full', function (t) {\n  const text = `Remove me 1:\n- A some text\n- B some text\n- C some text`\n  const doc = nlp(text)\n  doc.remove('Remove me 1')\n  doc.match('text').prepend('prefix')\n\n  const want = `- A some prefix text\n- B some prefix text\n- C some prefix text`\n  t.equal(doc.text(), want, here + 'full-to-full')\n  t.end()\n})"
  },
  {
    "path": "tests/one/change/replace-sub.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/replace-sub] '\n\ntest('replace-sub-num :', function (t) {\n  let doc = nlp('walk the plank')\n  doc.replace('walk the [.]', 'eat the $0')\n  t.equal(doc.text(), 'eat the plank', here + '$0')\n\n  doc = nlp('walk the plank quickly')\n  doc.replace('walk the [(line|plank)]', 'eat the $0')\n  t.equal(doc.text(), 'eat the plank quickly', here + '$0-2')\n\n  doc = nlp('my name is spencer and i eat chocolate')\n  doc.replace('my name is [.] and i eat [.]', '$1 for $0 please')\n  t.equal(doc.text(), 'chocolate for spencer please', here + '$1')\n  t.end()\n})\n\ntest('replace-named-sub :', function (t) {\n  let doc = nlp('walk the plank')\n  doc.replace('walk the [<thing>.]', 'eat the $thing')\n  t.equal(doc.text(), 'eat the plank', here + '$thing')\n\n  doc = nlp('i\\'m george and i live in Canada.')\n  doc.replace('i am [<name>.] and i live in [<place>(paris|canada)]', 'i\\'m $name from $place')\n  t.equal(doc.text(), 'i\\'m george from Canada.', here + '$name $place')\n\n\n  doc = nlp('i am jean pierre and i live in Paris.')\n  doc.replace('[<name>jean pierre] and i live in [(paris|london)]', '$name from $0')\n  t.equal(doc.text(), 'i am jean pierre from Paris.', here + '$name $0')\n  t.end()\n})"
  },
  {
    "path": "tests/one/change/split.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/split] '\n\ntest('splitAfter', function (t) {\n  const arr = [\n    ['doug and nancy', 'and', ['doug and', 'nancy']],\n    ['doug and also nancy', 'and also', ['doug and also', 'nancy']],\n    ['doug and definetly nancy', 'and definetly', ['doug and definetly', 'nancy']],\n    ['maybe doug but possibly nancy', 'but', ['maybe doug but', 'possibly nancy']],\n\n    ['a x b x c', 'x', ['a x', 'b x', 'c']],\n    ['a b x c x', 'x', ['a b x', 'c x']],\n    ['x a b x c', 'x', ['x', 'a b x', 'c']],\n    ['x x a b c', 'x', ['x', 'x', 'a b c']],\n    ['a x b x', 'x', ['a x', 'b x']],\n    ['a x b c x', 'x', ['a x', 'b c x']],\n    ['x x a b c', 'x', ['x', 'x', 'a b c']],\n\n    ['john paul george ringo', '.', ['john', 'paul', 'george', 'ringo']],\n    ['doug is really nice', 'is', ['doug is', 'really nice']],\n  ]\n  arr.forEach(function (a) {\n    const want = a[2]\n    const got = nlp(a[0]).splitAfter(a[1]).out('array')\n    t.deepEqual(got, want, here + 'splitAfter ' + a[0])\n  })\n  t.end()\n})\n\ntest('splitOn', function (t) {\n  const arr = [\n    ['doug and nancy', 'and', ['doug', 'and', 'nancy']],\n    ['doug and also nancy', 'and also', ['doug', 'and also', 'nancy']],\n    ['doug and definetly nancy', 'and definetly', ['doug', 'and definetly', 'nancy']],\n    ['maybe doug but possibly nancy', 'but', ['maybe doug', 'but', 'possibly nancy']],\n    ['doug is really nice', 'is', ['doug', 'is', 'really nice']],\n\n    ['a x b x c', 'x', ['a', 'x', 'b', 'x', 'c']],\n    ['a b x x c', 'x', ['a b', 'x', 'x', 'c']],\n    ['x a b x c', 'x', ['x', 'a b', 'x', 'c']],\n    ['x x a b c', 'x', ['x', 'x', 'a b c']],\n    ['a x b x', 'x', ['a', 'x', 'b', 'x']],\n  ]\n  arr.forEach(function (a) {\n    const want = a[2]\n    const got = nlp(a[0]).splitOn(a[1]).out('array')\n    t.deepEqual(got, want, here + 'splitOn ' + a[0])\n  })\n  t.end()\n})\n\ntest('splitBefore', function (t) {\n  const arr = [\n    ['doug and nancy', 'and', ['doug', 'and nancy']],\n    ['doug and also nancy', 'and also', ['doug', 'and also nancy']],\n    ['doug and definetly nancy', 'and definetly', ['doug', 'and definetly nancy']],\n    ['maybe doug but possibly nancy', 'but', ['maybe doug', 'but possibly nancy']],\n    ['doug is really nice', 'is', ['doug', 'is really nice']],\n    ['any rate I suspect that I must', 'i', ['any rate', 'I suspect that', 'I must']],\n    ['a x b x c', 'x', ['a', 'x b', 'x c']], //fix me!\n    ['a b x x c', 'x', ['a b', 'x', 'x c']],\n    ['x a b x c', 'x', ['x a b', 'x c']],\n    ['x x a b c', 'x', ['x', 'x a b c']],\n    ['a x b x', 'x', ['a', 'x b', 'x']],\n    ['a a x b b', 'x', ['a a', 'x b b']],\n    ['a a x b b x', 'x', ['a a', 'x b b', 'x']],\n    ['a a x b b x c c', 'x', ['a a', 'x b b', 'x c c']],\n  ]\n  arr.forEach(function (a) {\n    const want = a[2]\n    const got = nlp(a[0]).splitBefore(a[1]).out('array')\n    t.deepEqual(got, want, here + 'splitBefore ' + a[0])\n  })\n  t.end()\n})\n\ntest('multi splitBefore, multi sentence', function (t) {\n  const doc = nlp('before before match1, match2 after after. then a match3 over here. none found')\n  const m = doc.splitBefore('/^match/')\n  t.equal(m.length, 6, here + 'found 6')\n  t.equal(m.eq(0).out('normal'), 'before before', here + 'found before')\n  t.equal(m.eq(1).out('normal'), 'match1', here + 'found match1')\n  t.equal(m.eq(2).out('normal'), 'match2 after after', here + 'found match2')\n  t.equal(m.eq(3).out('normal'), 'then a', here + 'next sentence')\n  t.equal(m.eq(4).out('normal'), 'match3 over here', here + 'next sentence match')\n  t.equal(m.eq(5).out('normal'), 'none found', here + 'unfound')\n  t.end()\n})\n\ntest('multi splitAfter, multi sentence', function (t) {\n  const doc = nlp('before before match1 match2 after after. then a match3 over here. none found')\n  const m = doc.splitAfter('/^match/')\n  t.equal(m.length, 6, 'found 6')\n  t.equal(m.eq(0).out('normal'), 'before before match1', here + 'found match1')\n  t.equal(m.eq(1).out('normal'), 'match2', here + 'found match2')\n  t.equal(m.eq(2).out('normal'), 'after after', here + 'after')\n  t.equal(m.eq(3).out('normal'), 'then a match3', here + 'next sentence match')\n  t.equal(m.eq(4).out('normal'), 'over here', here + 'next sentence after')\n  t.equal(m.eq(5).out('normal'), 'none found', here + 'unfound')\n  t.end()\n})\n\ntest('split group', function (t) {\n  const doc = nlp('one two match three four')\n  let m = doc.splitBefore('two match three')\n  t.deepEqual(m.out('array'), ['one', 'two match three four'], here + 'match without group')\n\n  m = doc.splitBefore('two [match] three', 0)\n  t.deepEqual(m.out('array'), ['one two', 'match three four'], here + 'match on group')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/change/splitOn.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/splitOn] '\n\ntest('one split, one sentence', function (t) {\n  const doc = nlp('before before match, after after.')\n  const m = doc.splitOn('@hasComma')\n  t.equal(m.length, 3, here + 'found 3')\n  t.equal(m.eq(0).out('normal'), 'before before', here + 'found before')\n  t.equal(m.eq(1).out('normal'), 'match', here + 'found match')\n  t.equal(m.eq(2).out('normal'), 'after after', here + 'found after')\n  t.end()\n})\n\ntest('multi split, one sentence', function (t) {\n  const doc = nlp('before before match, then a match, after after.')\n  const m = doc.splitOn('@hasComma')\n  t.equal(m.length, 5, here + 'found 5')\n  t.equal(m.eq(0).out('normal'), 'before before', here + 'found before')\n  t.equal(m.eq(1).out('normal'), 'match', here + 'found match')\n  t.equal(m.eq(2).out('normal'), 'then a', here + 'found between')\n  t.equal(m.eq(3).out('normal'), 'match', here + 'found match2')\n  t.equal(m.eq(4).out('normal'), 'after after', here + 'found after')\n  t.end()\n})\n\ntest('one split, multi sentence', function (t) {\n  const doc = nlp('before before match, after after. then over here')\n  const m = doc.splitOn('match')\n  t.equal(m.length, 4, here + 'found 4')\n  t.equal(m.eq(0).out('normal'), 'before before', here + 'found before')\n  t.equal(m.eq(1).out('normal'), 'match', here + 'found match')\n  t.equal(m.eq(2).out('normal'), 'after after', here + 'found after')\n  t.equal(m.eq(3).out('normal'), 'then over here', here + 'next sentence')\n  t.end()\n})\n\ntest('multi split, multi sentence', function (t) {\n  const doc = nlp('before before match1, match2 after after. then a match3 over here')\n  const m = doc.splitOn('/^match/')\n  t.equal(m.length, 7, here + 'found 7')\n  t.equal(m.eq(0).out('normal'), 'before before', here + 'found before')\n  t.equal(m.eq(1).out('normal'), 'match1', here + 'found match1')\n  t.equal(m.eq(2).out('normal'), 'match2', here + 'found match2')\n  t.equal(m.eq(3).out('normal'), 'after after', here + 'found after')\n  t.equal(m.eq(4).out('normal'), 'then a', here + 'next sentence')\n  t.equal(m.eq(5).out('normal'), 'match3', here + 'next sentence match')\n  t.equal(m.eq(6).out('normal'), 'over here', here + 'next sentence after')\n  t.end()\n})\n\ntest('greedy split', function (t) {\n  const doc = nlp('match match middle middle match. then over here')\n  const m = doc.splitOn('match+')\n  t.equal(m.length, 4, here + 'found 4')\n  t.equal(m.eq(0).out('normal'), 'match match', here + 'found two')\n  t.equal(m.eq(1).out('normal'), 'middle middle', here + 'found middles')\n  t.equal(m.eq(2).out('normal'), 'match', here + 'found one')\n  t.equal(m.eq(3).out('normal'), 'then over here', here + 'next sentence')\n  t.end()\n})\n\ntest('split skip sentence', function (t) {\n  const doc = nlp('before match. nothing found here. two match after')\n  const m = doc.splitOn('match')\n  t.equal(m.length, 6, here + 'found 6')\n  t.equal(m.eq(0).out('normal'), 'before', here + 'found before')\n  t.equal(m.eq(1).out('normal'), 'match', here + 'found match')\n  t.equal(m.eq(2).out('normal'), 'nothing found here.', here + 'no-match sentence')\n  t.equal(m.eq(3).out('normal'), 'two', here + 'found before2')\n  t.equal(m.eq(4).out('normal'), 'match', here + 'found match2')\n  t.equal(m.eq(5).out('normal'), 'after', here + 'found after')\n  t.end()\n})\n\ntest('no match split', function (t) {\n  const doc = nlp('nothing found here. none here either')\n  const m = doc.splitOn('match')\n  t.equal(m.length, 2, here + 'found 2')\n  t.equal(m.eq(0).text(), 'nothing found here.', here + 'not found 1')\n  t.equal(m.eq(1).text(), 'none here either', here + 'not found 2')\n  t.end()\n})\n\ntest('splitOn multi', function (t) {\n  let doc = nlp('one yeah')\n  let m = doc.match('(one|two) yeah')\n  let res = m.splitAfter(doc.match('(one|two)'))\n  t.deepEqual(res.out('array'), ['one', 'yeah'], here + 'split-single')\n\n  doc = nlp('one yeah two yeah')\n  m = doc.match('(one|two) yeah')\n  res = m.splitAfter(doc.match('(one|two)'))\n  t.deepEqual(res.out('array'), ['one', 'yeah', 'two', 'yeah'], here + 'split-multi')\n  t.end()\n})\n\ntest('tricky-splitafter', function (t) {\n  const str = `one two three`\n  let m = nlp(str).match('.')\n\n  m = m.splitAfter('foo')\n  t.equal(m.text(), str, here + 'no-split')\n\n  m = m.splitAfter('one')\n  t.equal(m.text(), str, here + 'top-split')\n\n  m = m.splitAfter('two')\n  t.equal(m.text(), str, here + 'mid-split')\n\n  m = m.splitAfter('three')\n  t.equal(m.text(), str, here + 'post-split')\n\n  t.end()\n})\n\n// test('split-parent', function (t) {\n//   let doc = nlp('if so, he is the best, that i see. he is the greatest in the world')\n//   t.equal(doc.length, 2, 'init parent is 2 sentence')\n\n//   let m = doc.match('he is').splitOn()\n//   t.equal(m.length, 5, 'splitOn parent into 5')\n\n//   m = doc.match('he is').splitAfter()\n//   t.equal(m.length, 4, 'splitAfter parent into 4')\n\n//   m = doc.match('he is').splitBefore()\n//   t.equal(m.length, 3, 'splitBefore parent into 3')\n\n//   t.equal(doc.length, 2, 'parent is still 2 sentence')\n\n//   t.end()\n// })\n"
  },
  {
    "path": "tests/one/lexicon/lexicon.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/lexicon] '\n\ntest('addWords side-load:', function (t) {\n  let lex = {\n    bigg: 'Size',\n    'bigg apple': 'Town',\n  }\n  const _nlp = nlp //.fork()\n  let doc = _nlp('it was bigg')\n  t.equal(doc.has('(#Size|#Town)'), false, here + 'none-on-init')\n\n  doc = _nlp('it was bigg', lex)\n  t.equal(doc.has('#Size'), true, here + 'single-word')\n  doc = _nlp('the bigg apple', lex)\n  t.equal(doc.has('#Town'), true, here + 'found-multi-word')\n  t.equal(doc.has('#Size'), false, here + 'no-single-word')\n\n  doc = _nlp('it was bigg')\n  t.equal(doc.has('#Size'), true, here + 'lex-persists')\n\n  lex = {\n    bigg: undefined,\n    'bigg apple': undefined,\n  }\n  doc = _nlp('it was bigg', lex)\n  t.equal(doc.has('#Size'), false, here + 'lex-removed')\n  doc = _nlp('the bigg apple', lex)\n  t.equal(doc.has('#Town'), false, here + 'multi-lex-removed')\n\n  t.end()\n})\n\ntest('lexicon compute:', function (t) {\n  const words = {\n    'captain obvious': 'Captain',\n  }\n  const doc = nlp('it was captain obvious', words)\n  const m = doc.match('#Captain+')\n  t.equal(m.text(), 'captain obvious', here + 'multi-word')\n  t.end()\n})\n\ntest('tricky lexicon:', function (t) {\n  const lexicon = {\n    'bed bath and beyond': 'Organization',\n  }\n  const _nlp = nlp //.fork()\n  let r = _nlp('shopping at Bed Bath and Beyond, the store', lexicon)\n  let str = r.match('#Organization+').out('normal')\n  t.equal(str, 'bed bath and beyond', here + 'four-word')\n\n  r = _nlp('shopping at Bed Bath and-beyond the store', lexicon)\n  str = r.match('#Organization+').out('normal')\n  t.equal(str, 'bed bath and beyond', here + 'partially-hyphenated-word')\n\n  r = _nlp('shopping at Bed-bath and-beyond the store', lexicon)\n  str = r.match('#Organization+').out('normal')\n  t.equal(str, 'bed bath and beyond', here + 'many-hyphenated-word')\n  t.end()\n})\n\ntest('apostrophe lexicon:', function (t) {\n  const lex = {\n    \"queen anne's lace\": 'Flower',\n    \"applebee's\": 'Restaurant',\n  }\n  let doc = nlp(`i went to applebee's for dinner`, lex)\n  t.equal(doc.has(`#Restaurant`), true, here + 'lexicon w/ apostrophe')\n\n  doc = nlp(`Queen Anne's lace`, lex)\n  t.equal(doc.has(`#Flower`), true, here + 'multi lexicon w/ apostrophe')\n  t.end()\n})\n\ntest('long lexicon:', function (t) {\n  nlp.addWords({ 'new york yankees are cool and not bad': 'Long' })\n  let doc = nlp('the new york yankees are cool and smart')\n  t.equal(doc.has('#Long'), false, here + 'missed-long')\n\n  doc = nlp('the new york yankees are cool and not bad')\n  t.equal(doc.has('#Long'), true, here + 'found-long')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/lookup/lookup-long.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/lookup-long] '\n\nconst text = `The Toronto Marlborough Athletic Club, commonly known as the Toronto Marlboros, was founded in 1903. It operated junior ice hockey and senior ice hockey teams in the Ontario Hockey Association and later the Ontario Hockey League. The Marlboros were a farm team to the Toronto Maple Leafs and one of the dominant junior teams in history, winning seven Memorial Cup championships. The senior team competed for the Stanley Cup in 1904, and won the Allan Cup in 1950.\nTheir heritage has been perpetuated by the Toronto Marlboros Hockey Club, which operates several minor ice hockey teams in the Greater Toronto Hockey League; and the Toronto Marlies of the American Hockey League.\nThe Toronto Marlborough Athletic Club was founded in Toronto, Ontario in 1903 by a group of Toronto sportsmen. It was named after the Duke of Marlborough. A hockey program was started in 1904. The team was commonly known as the Marlboros or Marlies and was also nicknamed the Dukes.\nThe senior ice hockey team played in the Ontario Hockey Association and won the J. Ross Robertson Cup in 1904, 1905, 1941, 1949 and 1950.\nThe senior team competed for, but lost, the Stanley Cup in 1904 against the Ottawa Silver Seven. The club was thrust onto the national scene in 1927 when Conn Smythe bought the Toronto Marlboros to be the farm team for his other recently acquired National Hockey League team, the Toronto Maple Leafs. From 1927 to 1989 the Marlboros and Maple Leafs shared common ownership, first under the Smythe family and later under Harold Ballard. Upon the death of Conn Smythe, his son Stafford Smythe inherited the teams, and later sold a portion of both clubs to Harold Ballard. Ballard became sole owner of both teams upon the passing of Stafford Smythe.\nThe Marlboros served as a farm team for the Maple Leafs for 40 years until direct NHL sponsorship of junior teams ended in 1967 when the NHL made the Entry Draft universal; however, the two clubs continued to remain affiliated under a common ownership until 1989. During this time the Marlboros sent over 180 players to the NHL, including six future Hockey Hall of Fame inductees. The two teams often played double headers on Saturdays, with the junior games in the afternoon and the NHL games in the evening.\nThe original Hot Stove Club was formed at Maple Leaf Gardens on May 28, 1937, for the purpose of raising funds to support the Marlborough Hockey Club. The Hot Stove Club was given a permanent bar & lounge at Maple Leaf Gardens in 1963. From 1929 to 1975 the Marlboros won the national junior championship seven times.\nMarlboro players from the Memorial Cups in the 1950s and 1960s jumped directly to the Maple Leafs, helping them win the Stanley Cup four times in the 1960s. Former NHL stars stayed in the organization to help coach in the junior ranks. Turk Broda and George Armstrong both coached the Marlboros to Memorial Cup victories.\nStafford Smythe organized the Metro Junior A League in 1961 as a rival league to the OHA, with the Marlboros as its charter member. After the league folded in 1963, the Toronto Neil McNeil Maroons were amalgamated into the Marlboros along with prospect players signed to the Toronto Maple Leafs, along with their coach Jim Gregory.\nThe Marlboros returned to prominence again in 1973, coached by former Toronto Maple Leafs captain George Armstrong. Armstrong's team in 1973 lost only seven games all season, and two years later he coached the Marlboros to their seventh national title in 1975.\nThe team began to decline in the standings in the late 1970s which continued through the 1980s. Many people felt that Harold Ballard's penny-pinching ways helped contribute to the demise of Canada's most successful junior team. In October 1988, with the team losing hundreds of thousands of dollars a year, Maple Leaf Gardens Limited reached an agreement to sell the Toronto Marlboros for a reported $500,000, severing their ties with the Maple Leafs. The Leafs retained the rights to the Marlies name. The OHL team moved to Hamilton for the 1989-90 season, becoming the Dukes of Hamilton. They were not financially successful in Hamilton, though, and after only two seasons the Dukes became the Guelph Storm.\nThe Toronto Marlboros won the Memorial Cup seven times, more than any other team in the Cup's history. The Marlies also won 10 OHA championships in 17 final appearances.\n`\n\nconst arr = [\n  `Toronto Aeros`,\n  `Toronto Arenas`,\n  `Toronto Aura Lee`,\n  `Toronto 228th Battalion (NHA)`,\n  `Toronto Blueshirts`,\n  `Toronto Jr. Canadiens`,\n  `Dixie Beehives (2005–11)`,\n  `East York Lyndhursts`,\n  `Toronto Granites`,\n  `Toronto Knob Hill Farms`,\n  `Toronto Lions`,\n  `Toronto Maple Leafs`,\n  `Toronto Marlboros`,\n  `Toronto Marlies`,\n  `Mimico Monarchs`,\n  `Toronto Native Sons`,\n  `Niagara-on-the-Lake Predators`,\n  `North York Rangers`,\n  `North York Rangers (1967–1984)`,\n  `Toronto Ontarios`,\n  `Toronto Professional Hockey Club`,\n  `Toronto Ravinas`,\n  `Toronto Roadrunners`,\n  `Royal York Royals`,\n  `Toronto St. Patricks`,\n  `Toronto Shamrocks`,\n  `St. Michael's Buzzers`,\n  `Toronto Tecumsehs`,\n  `Toronto Toros`,\n  `Toronto Attack`,\n  `Toronto Furies`,\n  `Toronto Jr. Aeros`,\n  `Toronto Neil McNeil Maroons`,\n  `Toronto Patriots`,\n  `Toronto Six`,\n  `Toronto St. Michael's Majors`,\n  `Toronto Varsity Blues men's ice hockey`,\n  `Torontos`,\n  `Toronto Wellingtons`,\n  `West Toronto Nationals`,\n  `Toronto Young Rangers`,\n]\n\ntest('lookup-long', function (t) {\n  const trie = nlp.buildTrie(arr)\n  const doc = nlp(text)\n  const res = doc.lookup(trie)\n  t.equal(res.length, 11, here + 'found all')\n\n  let m = res.if('maple leafs')\n  t.equal(m.length, 4, here + 'found 4 leafs')\n\n  m = res.if('maroons')\n  t.equal(m.length, 1, here + 'found 1 maroon')\n\n  t.end()\n})"
  },
  {
    "path": "tests/one/lookup/lookup.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/lookup] '\n\ntest('lookup-basic', function (t) {\n  const doc = nlp('one two three four five. no here results.')\n  let trie = nlp.buildTrie(['one', 'onety'])\n  let res = doc.lookup(trie).json()\n  t.equal(res.length, 1, 'one results')\n  t.equal(res[0].text, 'one', here + 'one result')\n\n  trie = nlp.buildTrie(['two three', 'onety foo'])\n  res = doc.lookup(trie).json()\n  t.equal(res.length, 1, 'one results')\n  t.equal(res[0].text, 'two three', here + 'two three result')\n\n  trie = nlp.buildTrie(['two three', 'four five', 'five six'])\n  res = doc.lookup(trie).json()\n  t.equal(res.length, 2, here + 'two results')\n\n  trie = nlp.buildTrie(['two three four', 'four five six', 'five five', 'five'])\n  res = doc.lookup(trie).json()\n  t.equal(res.length, 2, here + 'two three-results')\n\n  trie = nlp.buildTrie(['two three', 'two', 'seven', 'one', 'onety', 'eleventy eight'])\n  res = doc.lookup(trie)\n  t.equal(res.length, 2, here + 'no-dupe results')\n\n  trie = nlp.buildTrie(['twoe three', 'twsasdf so', 'sefven', 'onde', 'onety', 'eleventy eight'])\n  res = doc.lookup(trie)\n  t.equal(res.length, 0, here + 'no results')\n\n  t.end()\n})\n\n\ntest('lookup-tricky', function (t) {\n  const doc = nlp('one two three four five. no here results.')\n  let res = doc.lookup(['zero one two'])\n  t.equal(res.found, false, here + 'left-miss')\n\n  res = doc.lookup(['four five six'])\n  t.equal(res.found, false, here + 'right-miss')\n\n  res = doc.lookup(['one three'])\n  t.equal(res.found, false, here + 'skip-miss')\n\n  res = doc.lookup(['five four'])\n  t.equal(res.found, false, here + 'backwards-miss')\n\n  res = doc.lookup(['five no'])\n  t.equal(res.found, false, here + 'sentence-miss')\n\n  t.end()\n})\n\ntest('lookup-dupes', function (t) {\n  const trie = nlp.buildTrie([`Toronto`, `Toronto Rangers`])\n  const res = nlp('toronto rangers').lookup(trie)\n  t.equal(res.length, 1, here + 'no-sub-matches')\n  t.end()\n})\n\ntest('lookup-repeat', function (t) {\n  const trie = nlp.buildTrie([\n    `Toronto`,\n    `Toronto Toronto`,\n    `Toronto Rangers`,\n  ])\n  let res = nlp('one two tornado rangers').lookup(trie)\n  t.equal(res.length, 0, here + 'repeat-miss')\n\n  res = nlp('toronto toronto').lookup(trie)\n  t.equal(res.length, 1, here + 'repeat-on')\n  res = nlp('toronto rangers').lookup(trie)\n  t.equal(res.length, 1, here + 'repeat-off')\n  res = nlp('toronto').lookup(trie)\n  t.equal(res.length, 1, here + 'repeat-single')\n  t.end()\n})\n\n\ntest('lookup-fallback', function (t) {\n  let trie = nlp.buildTrie(['a b c d e f', 'a b'])\n  let doc = nlp('one two a b three')\n  let res = doc.lookup(trie)\n  t.equal(res.text(), 'a b', here + 'fallback-pass')\n\n  trie = nlp.buildTrie(['a a a', 'a a b'])\n  doc = nlp('one two three. a a b')\n  res = doc.lookup(trie)\n  t.equal(res.text(), 'a a b', here + 'fallback-double-pass')\n\n  trie = nlp.buildTrie(['a a a', 'a a b'])\n  doc = nlp('one two three. a a c')\n  res = doc.lookup(trie)\n  t.equal(res.text(), '', here + 'fallback-double-fail')\n\n  trie = nlp.buildTrie(['a b c d e f', 'a b c'])\n  doc = nlp('one two three. a b')\n  res = doc.lookup(trie)\n  t.equal(res.text(), '', here + 'fallback-fail')\n\n  t.end()\n})\n\n\ntest('lookup-input', function (t) {\n  const doc = nlp('captain of the football team.')\n  let res = doc.lookup('')\n  t.equal(res.text(), '', here + 'none-input')\n\n  res = doc.lookup('football team')\n  t.equal(res.text(), 'football team', here + 'string-input')\n\n  res = doc.lookup(['team', 'team'])\n  t.equal(res.text(), 'team', here + 'dupe-input')\n\n  res = doc.lookup([' team ', '  '])\n  t.equal(res.text(), 'team', here + 'whitespace-input')\n  t.end()\n})\n\ntest('lookup-reserved', function (t) {\n  const arr = [\n    \"Brian Vollmer\",\n    \"Brian Wansink\",\n    \"Brice Marden\",\n    \"Brideless Groom\",\n    \"Bridge Constructor Portal\",\n    \"Bridge Protocol Data Unit\",\n    \"Bridget Kearney\",\n    \"Bridget Malcolm\",\n    \"Bridgewater State University\",\n    \"Bridie\",\n  ]\n  const trie = nlp.buildTrie(arr)\n  const res = nlp('before Bridge Constructor Portal after').lookup(trie)\n  t.equal(res.found, true, 'found-reserved-word')\n  t.end()\n})\n\n\ntest('lookup no-contractions', function (t) {\n  const arr = [\n    'foobar',\n    'marines',\n    'afghanistan',\n    'foo',\n  ]\n  const trie = nlp.buildTrie(arr)\n  const res = nlp(`so we're adding 3201 Marines to our forces in Afghanistan.`).lookup(trie)\n  t.equal(res.has('marines'), true, 'no-contraction got first one')\n  t.equal(res.has('afghanistan'), true, 'no-contraction got first one')\n  t.end()\n})\n\n\ntest('lookup array', function (t) {\n  let doc = nlp(\"he isn't AT Spencer's house of pain. The haunted house of not pain. Third sentence spencer.\")\n  let m = doc.lookup(['house of pain', 'house of'])\n  t.equal(m.length, 2, 'no redundant match')\n\n  m = doc.lookup([\"spencer's\"])\n  t.equal(m.length, 1, 'found possessive lookup')\n\n  m = doc.lookup('spencer')\n  t.equal(m.length, 1, 'end of line lookup')\n\n  doc = nlp('one two three four')\n  const res = doc.lookup(['two three four', 'one', 'blah', 'three four five'])\n  t.equal(res.length, 2, 'found arr single, multi')\n\n  t.end()\n})\n\n\ntest('lookup backtrack', function (t) {\n  let doc = nlp('first one one one two.')\n  let res = doc.lookup(['two three', 'one', 'blah'])\n  t.equal(res.length, 3, 'found multi single match')\n\n  doc = nlp('two three two three')\n  res = doc.lookup(['two three', 'one', 'blah'])\n  t.equal(res.length, 2, 'found multiple long match')\n\n  doc = nlp('one one one one two')\n  res = doc.lookup(['one one two', 'blah'])\n  t.equal(res.length, 1, 'found 1 tricky match')\n\n  t.end()\n})\n\n\n// test('obj-scan', function(t) {\n//   let doc = nlp('one one two three four five.  here one result.')\n//   let trie = nlp.buildTrie({ two: 'Fun', here: 'Fun' })\n//   let res = doc.lookup(trie)\n//   t.equal(res['Fun'].length, 2, 'two single results')\n\n//   doc = nlp('one one two three four five.  here one result.')\n//   trie = nlp.buildTrie({ one: 'One', 'not here': 'Missing' })\n//   res = doc.lookup(trie)\n//   t.equal(res['One'].length, 3, 'three one results')\n//   t.equal(res['Missing'], undefined, 'no missing results')\n\n//   trie = nlp.buildTrie({})\n//   res = doc.lookup(trie)\n//   t.equal(Object.keys(res).length, 0, 'no results')\n\n//   t.end()\n// })\n\n// test('lookup object', function (t) {\n//   let doc = nlp('spencer kelly is working here')\n//   let res = doc.lookup({\n//     'spencer kelly': 'Cool',\n//     working: 'Uncool',\n//     miss: 'None',\n//   })\n//   t.equal(Object.keys(res).length, 2, 'found two keys')\n//   t.equal(res.Cool.text(), 'spencer kelly', 'obj text-one')\n//   t.equal(res.Uncool.text(), 'working', 'obj text-two')\n\n//   doc = nlp('one two three four')\n//   res = doc.lookup({ 'two three four': 'yes', one: 'single', blah: 'no', 'three four five': 'nope' })\n//   let keys = Object.keys(res)\n//   t.equal(keys.length, 2, 'found obj single, multi')\n//   t.equal(res['single'].text(), 'one', 'found single')\n//   t.equal(res['yes'].text(), 'two three four', 'found multi')\n\n//   t.end()\n// })"
  },
  {
    "path": "tests/one/match/doc-match.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = ' [one/doc-match]'\n\ntest('doc-as-input', function (t) {\n  const doc = nlp('if so, he is the best, that i see. he is the greatest')\n  const m = doc.match('he is the .')\n  const found = doc.match(m)\n  t.equal(found.length, 2, here + 'found both phrases')\n  t.equal(found.eq(0).text('reduced'), 'he is the best', here + 'found first match')\n  t.equal(found.eq(1).text('reduced'), 'he is the greatest', here + 'found second match')\n  t.end()\n})\n\ntest('doc-sibling-as-input', function (t) {\n  const doc = nlp('he is the best, that i see. he is the greatest')\n  let childA = doc.if('greatest')\n  let childB = doc.match('he is')\n  // union/intersection/difference\n  let found = childA.match(childB)\n  t.equal(found.length, 1, here + 'found self in sibling')\n\n  found = childA.if(childB)\n  t.equal(found.length, 1, here + 'if self in sibling')\n\n  //try false-positive example\n  childA = doc.if('foobar')\n  childB = doc.match('he is')\n  found = childA.match(childB)\n  t.equal(found.length, 0, here + 'false-positive not found')\n  t.end()\n})\n\ntest('split-doc-input', function (t) {\n  const doc = nlp('he is the best, that i see. he is the greatest')\n  const childA = doc.if('greatest')\n  const childB = doc.match('he is')\n  const found = childA.splitAfter(childB)\n  t.equal(found.length, 2, 'split from sibling')\n  t.equal(found.eq(0).text('reduced'), 'he is', here + 'found first match')\n  t.equal(found.eq(1).text('reduced'), 'the greatest', here + 'found second match')\n  t.end()\n})\n\ntest('two-or-matches overlap', function (t) {\n  const doc = nlp('one two three four five')\n  const m = doc.match('(two|four) (three|five)')\n  t.deepEqual(m.out('array'), ['two three', 'four five'], here + 'or-overlap')\n  t.end()\n})\n\ntest('has==match', function (t) {\n  const doc = nlp('i saw John Lennon, and tom cruise.')\n  const m = doc.match('john lennon')\n  const start = doc.match('i saw john .')\n  const end = doc.match('and tom cruise')\n\n  t.equal(start.has(m), true, here + 'has-start')\n  t.equal(start.match(m).found, true, here + 'match-start')\n  t.equal(end.has(m), false, here + 'not-end')\n  t.equal(end.match(m).found, false, here + 'match:not-end')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/match/encoding.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/encoding] '\n\n// test('encoding-match:', function (t) {\n//   let r = nlp('it is * nice')\n//   let str = r.match('is \\\\*').out().trim()\n//   t.equal(str, 'is *', 'encode asterix')\n\n//   r = nlp('it is + nice');\n//   str = r.match('is \\\\+ nice').trim().out();\n//   t.equal(str, 'is + nice', 'encode plus');\n\n//   t.end()\n// })\n\ntest('reserved-word-in-src:', function (t) {\n  const r = nlp('buy eggs constructor yeah prototype')\n  t.equal(r.has(`backburner`), false, here + 'single')\n  t.equal(r.has(`#Foo`), false, here + 'tag')\n  t.equal(r.has(`(upcoming|backburner)`), false, here + 'anyOf')\n  t.equal(r.has(`lala+`), false, here + 'manyOf')\n  t.equal(r.has(`nword{2,4}`), false, here + 'someOf')\n  t.end()\n})\n\ntest('reserved-word-in-match:', function (t) {\n  const r = nlp('fo foo fulala repeat')\n  t.equal(r.has(`constructor`), false, here + 'single')\n  t.equal(r.has(`#constructor`), false, here + 'tag')\n  t.equal(r.has(`(upcoming|constructor)`), false, here + 'anyOf')\n  t.equal(r.has(`constructor+`), false, here + 'manyOf')\n  t.equal(r.has(`constructor{2,4}`), false, here + 'someOf')\n  t.end()\n})\n\ntest('test-infinite-loop', function (t) {\n  const weirdDoc = nlp('^ ? * . + $')\n  weirdDoc.match('is?')\n  weirdDoc.match('.?')\n  weirdDoc.match('*')\n  weirdDoc.match('.+')\n  weirdDoc.match('+')\n  weirdDoc.match('?')\n  weirdDoc.match('.')\n  weirdDoc.match('? * . +')\n  weirdDoc.not('?')\n  weirdDoc.not('*')\n  weirdDoc.not('^')\n  weirdDoc.not('$')\n  weirdDoc.not('+')\n  weirdDoc.not('? * . +')\n  t.ok(true, here + 'didnt regress')\n\n  let str = 'And you are?. Marshal'\n  let have = nlp(str).all().out()\n  t.equal(have, str, here + 'regression #1')\n\n  str = `- where is she.Oh.  you guys don't know?`\n  have = nlp(str).all().out()\n  t.equal(have, str, here + 'regression #2')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/match/fuzzy.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/fuzzy] '\n\ntest('fuzzy matches', function (t) {\n  const doc = nlp('i went on a talk')\n  let m = doc.match('. ~walk~', null, { fuzzy: 0.7 })\n  t.equal(m.text(), 'a talk', here + 'fuzzy-simple')\n\n  m = doc.match('. ~walk~', null, { fuzzy: 0.9 })\n  t.equal(m.text(), '', here + 'fuzzy-harsh')\n\n  m = doc.match('a ~(football|walk|climb)~', null, { fuzzy: 0.74 })\n  t.equal(m.text(), 'a talk', here + 'fuzzy-options')\n\n  m = doc.match('a (football|~walk~|climb)', null, { fuzzy: 0.74 })\n  t.equal(m.text(), 'a talk', here + 'fuzzy-inside-options')\n\n  m = doc.match('i ~dent~ on a ~walk~', null, { fuzzy: 0.74 })\n  t.equal(m.text(), 'i went on a talk', here + 'fuzzy-double')\n\n  m = doc.match('i ~ent~ on a ~alk~', null, { fuzzy: 0.74 })\n  t.equal(m.text(), 'i went on a talk', here + 'fuzzy-deletion')\n\n  m = doc.match('i ~swent~ on a ~stalk~', null, { fuzzy: 0.74 })\n  t.equal(m.text(), 'i went on a talk', here + 'fuzzy-insertion')\n\n  m = doc.match('i ~ewnt~ on a ~atlk~', null, { fuzzy: 0.74 })\n  t.equal(m.text(), 'i went on a talk', here + 'fuzzy-swap')\n\n  m = doc.match('', null, { fuzzy: 0.9 })\n  t.equal(m.text(), '', here + 'fuzzy-empty')\n\n  m = doc.match('i ~ewnt~ on a [~atlk~]', 0, { fuzzy: 0.73 })\n  t.equal(m.text(), 'talk', here + 'fuzzy-group')\n\n  const reg = nlp.parseMatch('a (~football~|~walk~|climb)', { fuzzy: 0.7 })\n  m = nlp('a foobtall').match(reg)\n  t.equal(m.text(), 'a foobtall', here + 'fuzzy-parsematch')\n\n  t.end()\n})\n\ntest('fuzzy groupmatches', function (t) {\n  const doc = nlp('i went on a talk')\n\n  let m = doc.match('i ~ewnt~ on a [~atlk~]', 0, { fuzzy: 0.74 })\n  t.equal(m.text(), 'talk', here + 'fuzzy-group-1')\n\n  m = doc.match('i ~ewnt~ on a [<word>~atlk~]', 'word', { fuzzy: 0.74 })\n  t.equal(m.text(), 'talk', here + 'fuzzy-group-2')\n\n  const reg = nlp.parseMatch('a [~(football|walk|climb)~]', { fuzzy: 0.7 })\n  m = nlp('a foobtall').match(reg, 0)\n  t.equal(m.text(), 'foobtall', here + 'fuzzy-named-group')\n  t.end()\n})\n\ntest('edit-distance by string length', function (t) {\n  let doc = nlp('foo bar aa')\n  let m = doc.match('~ab~', null, { fuzzy: 0.4 })\n  t.equal(m.text(), '', here + '2-letters ignored')\n\n  doc = nlp('foo bar aaa')\n  m = doc.match('~aba~', null, { fuzzy: 0.4 })\n  t.equal(m.text(), 'aaa', here + '3-letters okay')\n\n  doc = nlp('foo boo aaaa')\n  m = doc.match('~abaa~', null, { fuzzy: 0.7 })\n  t.equal(m.text(), 'aaaa', here + '4-letters in')\n  m = doc.match('~abaa~', null, { fuzzy: 0.76 })\n  t.equal(m.text(), '', here + '4-letters out')\n\n  doc = nlp('foo boo aaaaa')\n  m = doc.match('~abaaa~', null, { fuzzy: 0.75 })\n  t.equal(m.text(), 'aaaaa', here + '5-letters in')\n  m = doc.match('~abaaa~', null, { fuzzy: 0.85 })\n  t.equal(m.text(), '', here + '5-letters out')\n\n  doc = nlp('foo boo aaaaaa')\n  m = doc.match('~abaaaa~', null, { fuzzy: 0.8 })\n  t.equal(m.text(), 'aaaaaa', here + '6-letters in')\n  m = doc.match('~abaaaa~', null, { fuzzy: 0.85 })\n  t.equal(m.text(), '', here + '6-letters out')\n\n  doc = nlp('foo boo aaaaaaa')\n  m = doc.match('~abaaaaa~', null, { fuzzy: 0.85 })\n  t.equal(m.text(), 'aaaaaaa', here + '7-letters in')\n  m = doc.match('~abaaaaa~', null, { fuzzy: 0.9 })\n  t.equal(m.text(), '', here + '7-letters out')\n\n  doc = nlp('foo boo aaaaaaaa')\n  m = doc.match('~abaaaaaa~', null, { fuzzy: 0.87 })\n  t.equal(m.text(), 'aaaaaaaa', here + '8-letters in')\n  m = doc.match('~abaaaaaa~', null, { fuzzy: 0.9 })\n  t.equal(m.text(), '', here + '8-letters out')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/match/if.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/if] '\n\ntest('if-basic:', function (t) {\n  let r = nlp('spencer is here')\n  let m = r.if('asdf')\n  t.equal(m.out('text'), '', here + 'if-negative')\n\n  m = r.if('spencer')\n  t.equal(m.out('text'), 'spencer is here', here + 'if-positive')\n\n  r = nlp('spencer is here. john was here.')\n  m = r.if('is')\n  t.equal(m.out('normal'), 'spencer is here.', here + 'if-partial')\n\n  t.end()\n})\n\ntest('ifNo:', function (t) {\n  let r = nlp('spencer is here')\n  let m = r.ifNo('spencer')\n  t.equal(m.out('text'), '', here + 'ifNo-positive')\n\n  m = r.ifNo('asdf')\n  t.equal(m.out('text'), 'spencer is here', here + 'ifNo-negative')\n\n  r = nlp('spencer is here. john was here.')\n  m = r.ifNo('is')\n  t.equal(m.out('normal'), 'john was here.', here + 'if-no-partial')\n\n\n  let doc = nlp(`a desire to engage and build`)\n  m = doc.match('build')\n  m = m.notIf('lkajsdf')\n  t.equal(m.out('text'), 'build', here + 'ifNo-miss')\n\n  m = m.notIf('build')\n  t.equal(m.out('text'), '', here + 'ifNo-hit')\n\n  doc = nlp('spencer is here. one two')\n  m = doc.ifNo('.')\n  t.equal(m.out('text'), '', here + 'ifNo-dot')\n\n  doc = nlp('here one mid two end').terms()\n  m = doc.ifNo('(one|two)')\n  t.equal(m.out('text'), 'here mid end', here + 'ifNo-two')\n\n  t.end()\n})\n\ntest('if view:', function (t) {\n  let doc = nlp('one match two. Two match three match. four nope.')\n  const found = doc.match('match+')\n  doc = doc.if(found)\n  t.equal(doc.text(), 'one match two. Two match three match.', 'if-multi')\n  t.end()\n})\n\ntest('ifNo view:', function (t) {\n  let doc = nlp('here one mid two end').terms()\n  let m = doc.match('(one|two)')\n  let res = doc.ifNo(m)\n  t.equal(res.out('text'), 'here mid end', here + 'ifNo-view')\n\n\n  doc = nlp(`he was john c reilly. oh yeah`)\n  m = doc.match('john . reilly')\n  res = doc.ifNo(m)\n  t.equal(res.text(), 'oh yeah', here + 'ifNo-full')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/match/lookaround.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/lookaround] '\n\ntest('before-basic:', function (t) {\n  const doc = nlp('one two match three match four')\n  const m = doc.match('match')\n\n  let res = m.before()\n  t.equal(res.text(), 'one two', here + 'empty')\n\n  res = m.before('*')\n  t.equal(res.text(), 'one two', here + 'astrix')\n\n  res = m.before('.')\n  t.deepEqual(res.out('array'), ['one', 'two'], here + 'dot')\n\n  res = m.before('one [two]', 0)\n  t.equal(res.text(), 'two', here + 'group')\n\n  t.end()\n})\n\ntest('after-basic:', function (t) {\n  const doc = nlp('one two match three match four five')\n  let m = doc.match('match')\n\n  let res = m.after()\n  t.deepEqual(res.out('array'), ['four five'], here + 'empty')\n\n  res = m.after('.+')\n  t.deepEqual(res.out('array'), ['four five'], here + 'greed')\n\n  m = doc.match('match')\n  res = m.after('[<hmm>four] five', 'hmm')\n  t.deepEqual(res.text(), 'four', here + 'group')\n\n  t.end()\n})\n\ntest('after-concat:', function (t) {\n  const doc = nlp('one two three match four five')\n  const m = doc.match('match')\n  const res = m.concat(m.after())\n  t.equal(res.text(), 'match four five', here + 'concat')\n  t.end()\n})\n\ntest('grow-right:', function (t) {\n  let doc = nlp('one two three match four five')\n  let m = doc.match('match')\n  let more = m.growRight('(three|four|five)+')\n  t.equal(more.text(), 'match four five', here + 'grow-right')\n\n  doc = nlp('one match. one match two. one match two two.')\n  m = doc.match('match')\n  more = m.growRight('two+')\n  const arr = ['match.', 'match two.', 'match two two.']\n  t.deepEqual(more.out('array'), arr, here + 'grow-right-multi')\n  t.end()\n})\n\ntest('grow-left:', function (t) {\n  let doc = nlp('one two three match four five')\n  let m = doc.match('match')\n  let more = m.growLeft('(three|four|one|five)+')\n  t.equal(more.text(), 'three match', here + 'grow-left')\n\n  doc = nlp('match. one match two. one one match one.')\n  m = doc.match('match')\n  more = m.growLeft('one+')\n  const arr = ['match.', 'one match', 'one one match']\n  t.deepEqual(more.out('array'), arr, here + 'grow-left-multi')\n  t.end()\n})\n\ntest('grow', function (t) {\n  const doc = nlp('one two three match four five')\n  let m = doc.match('match')\n  let more = m.grow('(three|two)')\n  t.equal(more.text(), 'three match', here + 'grow-both')\n\n  m = doc.match('match')\n  more = m.grow('(three|one|five)+')\n  t.equal(more.text(), 'three match', here + 'grow-left-only')\n\n  t.equal(m.text(), 'match', 'grow doesnt mutate')\n\n  more = m.grow('*')\n  t.equal(more.text(), m.sentence().text(), 'grow-all')\n\n  t.end()\n})\n\ntest('grow-around', function (t) {\n  const doc = nlp(`i have gone`)\n  const h = doc.match('have')\n  const right = h.growRight('.')\n  t.equal(right.text(), 'have gone', here + 'grow-right-dot')\n  const left = h.growLeft('.')\n  t.equal(left.text(), 'i have', here + 'grow-left-dot')\n  const both = h.grow('.')\n  t.equal(both.text(), 'i have gone', here + 'grow-both-dot')\n  t.end()\n})\n\ntest('grow-contraction', function (t) {\n  const doc = nlp(`i've gone`)\n  const h = doc.match('have')\n  const right = h.growRight('.')\n  t.equal(right.text(), 'gone', here + 'grow-right-contraction')\n  const left = h.growLeft('.')\n  t.equal(left.text(), 'i\\'ve', here + 'grow-left-contraction')\n  const both = h.grow('.')\n  t.equal(both.text(), 'i\\'ve gone', here + 'grow-both-contraction')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/match/match-method.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/match-method] '\n\ntest('match @functions', function (t) {\n  let doc = nlp(`jamie's much, much better.`)\n\n  let m = doc.match('@hasComma')\n  t.equal(m.text(), 'much', here + 'hasComma')\n\n  m = doc.match('(@hasPeriod|cool)')\n  t.equal(m.text(), 'better', here + 'hasPeriod')\n\n  m = doc.match('(@hasSemicolon|better)')\n  t.equal(m.text(), 'better', here + 'false-positive')\n\n  doc = nlp(`i am much, much better and faster`)\n  m = doc.match('!@hasComma')\n  t.equal(m.text(), 'i am much better and faster', here + 'negative function')\n\n  doc = nlp(`i am much, much better and faster`)\n  m = doc.match('(foo|!@hasComma)')\n  t.equal(m.text(), 'i am much better and faster', here + 'negative in optional function')\n\n\n  m = nlp('set the SCE to AUX.').match('@isUpperCase')\n  t.equal(m.length, 2, here + 'two uppercase')\n\n  doc = nlp('Titlecase UPPERCASE notUPPER ÈPPERCASE')\n  m = doc.match('@isUpperCase')\n  t.equal(m.length, 2, here + 'unicode uppercase')\n\n  doc = nlp('Titlecase UPPERCASE notUPPER Èppercasë')\n  m = doc.match('@isTitleCase')\n  t.equal(m.length, 2, here + 'unicode titlecase')\n\n\n  t.end()\n})\n\ntest('pre-parse match', function (t) {\n  const doc = nlp('the weight of the world. foo')\n  let reg = 'weight of the? world'\n  reg = nlp.parseMatch(reg)\n  t.equal(doc.match(reg).found, true, here + 'match')\n  t.equal(doc.matchOne(reg).found, true, here + 'matchOne')\n  t.equal(doc.if(reg).found, true, here + 'if')\n  t.equal(doc.ifNo(reg).found, true, here + 'ifNo')\n  t.equal(doc.has(reg), true, here + 'has')\n  t.equal(doc.not(reg).text(), 'the foo', here + 'not')\n  t.end()\n})\n\ntest('pre-parse lookaround', function (t) {\n  const doc = nlp(`before match after`)\n  const m = doc.match('match')\n\n  let reg = nlp.parseMatch('before')\n  t.equal(m.before(reg).text(), 'before', here + 'before')\n\n  reg = nlp.parseMatch('after')\n  t.equal(m.after(reg).text(), 'after', here + 'after')\n\n  reg = nlp.parseMatch('before')\n  t.equal(m.growLeft(reg).text(), 'before match', here + 'growLeft')\n\n  reg = nlp.parseMatch('after')\n  t.equal(m.growRight(reg).text(), 'match after', here + 'growRight')\n\n  reg = nlp.parseMatch('after')\n  t.equal(m.grow(reg).text(), 'match after', here + 'grow')\n  t.end()\n})\n\ntest('pre-parse split', function (t) {\n  const doc = nlp(`before match after`)\n  const reg = nlp.parseMatch('match')\n  let m = doc.splitOn(reg)\n  t.deepEqual(m.out('array'), ['before', 'match', 'after'], here + 'splitOn')\n\n  m = doc.splitBefore(reg)\n  t.deepEqual(m.out('array'), ['before', 'match after'], here + 'splitBefore')\n\n  m = doc.splitAfter(reg)\n  t.deepEqual(m.out('array'), ['before match', 'after'], here + 'splitAfter')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/match/named-silent.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/named-silent] '\n\ntest('capture groups silent by default', function (t) {\n  const m = nlp('one two three four five six seven').match('one [two] [three four five] six [seven]')\n\n  t.equal(m.group(0).text(), 'two', here + 'group of 1')\n  t.equal(m.group(1).text(), 'three four five', here + 'connected group of 3')\n  t.equal(m.group(2).text(), 'seven', here + 'lonely group of 1')\n\n  t.end()\n})\n\n// same behaviour as regex capture-groups:\n// 'one two three four'.match(/one (?<two>two) three/)\ntest('capture groups silent by default', function (t) {\n  const doc = nlp.tokenize('one two three four')\n  let m = doc.match('one [two] three')\n  t.equal(m.text(), 'one two three', here + 'full-response-1')\n\n  m = doc.match('one [two] three [four]')\n  t.equal(m.text(), 'one two three four', here + 'full-response-2')\n  t.end()\n})\n\ntest('named groups silent by default', function (t) {\n  const doc = nlp.tokenize('one two three four')\n  let m = doc.match('one [<two>two] three')\n  t.equal(m.text(), 'one two three', here + 'full-response-named-1')\n\n  m = doc.match('one [two] three [<four>four]')\n  t.equal(m.text(), 'one two three four', here + 'full-response-named-2')\n  t.end()\n})\n\ntest('unnamed capture groups found', function (t) {\n  const doc = nlp.tokenize('one two three four')\n  let m = doc.match('one [two] three')\n  t.equal(m.groups(0).text(), 'two', here + 'unnamed-found-single-0')\n\n  m = doc.match('one [two] three [four]')\n  t.equal(m.groups(0).text(), 'two', here + 'unnamed-found-0')\n  t.equal(m.groups(1).text(), 'four', here + 'unnamed-found-1')\n\n  const groups = m.groups()\n  t.equal(groups[0].text(), 'two', here + 'groups-0')\n  t.equal(groups[1].text(), 'four', here + 'groups-1')\n  t.equal(groups[2], undefined, here + 'no-group-2')\n\n  t.end()\n})\n\ntest('capture groups match-shorthand', function (t) {\n  const doc = nlp.tokenize('one two three four')\n  let m = doc.match('one [two] three', 0)\n  t.equal(m.text(), 'two', here + 'match-0')\n\n  m = doc.match('one [two] three [four]')\n  t.equal(m.groups(0).text(), 'two', here + 'match-0-two')\n  m = doc.match('one [two] three [four]')\n\n  t.equal(m.group(1).text(), 'four', here + 'match-1-two')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/match/negative.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/negative] '\n\ntest('! negative match syntax :', function (t) {\n  let doc = nlp.tokenize('one two three')\n  let m = doc.match('one !two three')\n  t.equal(m.text(), '', here + 'ban-not')\n\n  doc = nlp.tokenize('one two three')\n  m = doc.match('one !foo three')\n  t.equal(m.text(), 'one two three', here + 'swap-not')\n\n  doc = nlp.tokenize('one two three')\n  m = doc.match('one !foo? two three')\n  t.equal(m.text(), 'one two three', here + 'optional-not-missing')\n\n\n  doc = nlp(\"before bar\")\n  m = doc.match(\"before !foo?\")\n  t.equal(m.text(), 'before bar', here + 'optional-not-end')\n\n  doc = nlp(\"before\")\n  m = doc.match(\"before !foo?\")\n  t.equal(m.text(), 'before', here + 'optional-not-end-missing')\n\n  m = \"i will !foo .{0,9}? send\"\n  doc = nlp(\"i will then send him\")\n  t.equal(doc.has(m), true, here + 'neg1')\n\n  doc = nlp(\"before bar after\")\n  m = doc.match(\"before !foo? after\")\n  t.equal(m.text(), 'before bar after', here + 'optional-not-found')\n\n  m = \"i will !foo? send\"\n  doc = nlp(\"I will then send him\")\n  t.equal(doc.has(m), true, here + 'neg4')\n\n  m = \"i will !foo{0,9}? send\"\n  doc = nlp(\"I will then send him\")\n  t.equal(doc.has(m), true, here + 'neg5')\n\n  m = \"i will !.\"\n  doc = nlp(\"I will then send him\") //never negative anything\n  t.equal(doc.has(m), false, here + 'neg-anything')\n\n  // m = \"i will !not? .{0,9}? send\"\n  // doc = nlp(\"i will send him\")\n  // t.equal(doc.has(m), true, here + 'neg-optional')\n\n  // m = \"i will !foo? !foo? !foo? !foo? !foo?  send\"\n  // doc = nlp(\"I will send her.\")\n  // t.equal(doc.has(m), true, here + 'multi-optional')\n\n  t.end()\n})\n\ntest('negative optional logic', function (t) {\n  let doc = nlp.tokenize(`one after`)\n  let m = doc.match(`one !foo? moo? after`)\n  t.equal(m.text(), 'one after', here + 'optional-after')\n\n  m = doc.match(`one !foo? after`)\n  t.equal(m.text(), 'one after', here + 'not-optional-after')\n\n  doc = nlp(`I have not booked`)\n\n  // -make sure we do not find 'not'\n  m = doc.match(`have !not? booked`)\n  t.equal(m.found, false, here + 'neg-missing')\n\n  // make sure we do not find 'not'\n  // but with tricky next-term greedy\n  m = doc.match(`have !not? * booked`)\n  t.equal(m.found, false, here + 'neg-then-astrix')\n\n  t.end()\n})\n\ntest('negative greedy-max', function (t) {\n  const check = (doc) => doc.has('before !(not|no|maybe|perhaps){0,3} after')\n\n  let doc = nlp('before after')\n  t.equal(check(doc), true, 'no middle')\n\n  doc = nlp('before one after')\n  t.equal(check(doc), true, 'one middle')\n\n  doc = nlp('before one two after')\n  t.equal(check(doc), true, 'two middle')\n\n  doc = nlp('before one two three after')\n  t.equal(check(doc), true, 'three middle')\n\n  doc = nlp('before one two three four after')\n  t.equal(check(doc), false, 'four middle')\n\n  doc = nlp('before one two three maybe')\n  let m = doc.match('before !maybe{1}')\n  t.equal(m.text(), 'before one', 'greedy-max-one')\n\n  doc = nlp('before one two three maybe')\n  m = doc.match('before !maybe{1,2}')\n  t.equal(m.text(), 'before one two', 'greedy-max-two')\n\n  doc = nlp('before one two three maybe')\n  m = doc.match('before !maybe{4,5}')\n  t.equal(m.text(), '', 'greedy-unmet-min')\n\n  t.end()\n})\n\ntest('negative greedy-end', function (t) {\n  // simpler version\n  let doc = nlp('before one after')\n  t.equal(doc.has('before !maybe+ after'), true, 'greedy-not-one')\n\n  doc = nlp('before one two after')\n  t.equal(doc.has('before !maybe+ after'), true, 'greedy-not-two')\n\n  // greedyEnd\n  doc = nlp('before one two')\n  let m = doc.match('before !maybe+')\n  t.equal(m.text(), 'before one two', 'greedy-end')\n\n  doc = nlp('before maybe')\n  m = doc.match('before !maybe+')\n  t.equal(m.text(), '', 'greedy-zero-fail')\n\n  doc = nlp('before one maybe')\n  m = doc.match('before !maybe+')\n  t.equal(m.text(), 'before one', 'greedy-one-stop')\n\n  doc = nlp('before one two maybe')\n  m = doc.match('before !maybe+')\n  t.equal(m.text(), 'before one two', 'greedy-two-stop')\n  t.end()\n})\n\n\ntest('negative greedy-to', function (t) {\n  let doc = nlp('before one after end')\n  let m = doc.match('before !maybe+ after')\n  t.equal(m.text(), 'before one after', 'greedy-to-pos')\n\n  doc = nlp('before one after end')\n  m = doc.match('before !maybe+ none')\n  t.equal(m.text(), '', 'greedy-no-after')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/match/punctuation-match.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/punctuation-match] '\n\ntest('punctuation-match :', function (t) {\n  let regs = [{ word: 'may' }, { pre: '(' }]\n  let m = nlp('may, (2019) foo').match(regs)\n  t.equal(m.text(), 'may, (2019)', here + '(pre')\n\n  regs = [{ word: 'may' }, { post: ')' }]\n  m = nlp('may, (2019) foo').match(regs)\n  t.equal(m.text(), 'may, (2019)', here + 'post)')\n\n  regs = [{ post: ',' }]\n  m = nlp('may, (2019) foo').match(regs)\n  t.equal(m.text(), 'may,', here + 'post,')\n  t.end()\n})"
  },
  {
    "path": "tests/one/match/regex.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/regex] '\n\ntest('prefix/infix/suffix basic', function (t) {\n  const r = nlp('it is funny and weird')\n  let m = r.match('/nny$/')\n  t.equal(m.out('normal'), 'funny', here + 'suffix-match')\n  m = r.match('/^fu/')\n  t.equal(m.out('normal'), 'funny', here + 'prefix_match')\n  m = r.match('/nn/')\n  t.equal(m.out('normal'), 'funny', here + 'infix-match')\n\n  m = r.match('/ff$/')\n  t.equal(m.out('normal'), '', here + 'no-false-suffix')\n  m = r.match('/^ff/')\n  t.equal(m.out('normal'), '', here + 'no-false-prefix')\n  m = r.match('/ff/')\n  t.equal(m.out('normal'), '', here + 'no-false-infix')\n\n  m = r.match('_')\n  t.equal(m.out('normal'), '', here + 'no-throw1')\n  m = r.match(' _ ')\n  t.equal(m.out('normal'), '', here + 'no-throw2')\n  m = r.match(' __ ')\n  t.equal(m.out('normal'), '', here + 'no-throw3')\n  m = r.match(' _ _ ')\n  t.equal(m.out('normal'), '', here + 'no-throw4')\n\n  m = r.match('/^w/')\n  t.equal(m.out('normal'), 'weird', here + 'one-char-one-word')\n  m = r.match('/r/')\n  t.equal(m.out('normal'), 'weird', here + 'one-char-one-word2')\n  m = r.match('/y$/')\n  t.equal(m.out('normal'), 'funny', here + 'one-char-one-word3')\n\n  t.end()\n})\n\ntest('regex-match:', function (t) {\n  const doc = nlp('it is waaaay cool')\n  let m = doc.match('/aaa/')\n  t.equal(m.out('normal'), 'waaaay', here + 'basic-match')\n\n  m = doc.match('/[ao]{2}/')\n  t.equal(m.out('array').length, 2, here + 'trickier-match')\n\n  m = doc.match('is /aaam?/ .')\n  t.equal(m.out('normal'), 'is waaaay cool', here + 'trickier-match')\n\n  m = doc.match('(is|was) /a+/ /ool$/')\n  t.equal(m.out('normal'), 'is waaaay cool', here + 'even-trickier-match')\n\n  t.end()\n})\n\n\ntest('multi-not:', function (t) {\n  let doc = nlp('match one two three four five six')\n  let m = doc.match('match !(foo|bar){0,3}')\n  t.equal(m.text(), 'match one two three', here + 'no-match')\n\n  doc = nlp('match one two bar three four five six')\n  m = doc.match('match !(foo|bar){0,3}')\n  t.equal(m.text(), 'match one two', here + 'found-match')\n\n  doc = nlp('match foo one two three four')\n  m = doc.match('match !(foo|bar){0,3}')\n  t.equal(m.text(), '', here + 'no-match')\n  t.end()\n})"
  },
  {
    "path": "tests/one/match/sweep-not.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/sweep] '\n\ntest('sweep-not:', function (t) {\n  let doc = nlp('The service is fast really')\n  let net = nlp.buildNet([{ match: 'is fast .', notIf: 'psych' }])\n  let m = doc.match(net)\n  t.equal(m.text(), 'is fast really', here + 'no-psych')\n\n  doc = nlp('The service is fast psych')\n  net = nlp.buildNet([{ match: 'is fast .', notIf: 'psych' }])\n  m = doc.match(net)\n  t.equal(m.text(), '', here + 'psych-found')\n\n  doc = nlp('i swim in the lake and walk in the road')\n  net = nlp.buildNet([{ match: 'i (swim|walk) in the .', notIf: 'in the (park|lake)' }])\n  m = doc.match(net)\n  t.equal(m.text(), '', here + 'notIf optional')\n\n  t.end()\n})\n\n"
  },
  {
    "path": "tests/one/match/sweep.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/sweep] '\n\ntest('sweep-basic:', function (t) {\n  const matches = [\n    { match: '2nd quarter of? 2022', tag: 'TimePeriod' },\n    { match: '(from|by|before) now', tag: 'FooBar' },\n  ]\n  const net = nlp.buildNet(matches)\n\n  const doc = nlp(`so good by now. woo hoo before now. in the 2nd quarter 2022`)\n  const { view, found } = doc.sweep(net)\n\n  t.equal(view.length, 3, here + 'view has three')\n  t.equal(found.length, 3, here + 'found three')\n\n  const m = view.match('#TimePeriod')\n  t.equal(m.text(), '2nd quarter 2022', here + 'tag sweep')\n\n  t.equal(found[0].view.text(), 'by now', here + 'found view')\n\n  t.end()\n})\n\n\ntest('match-net-basic:', function (t) {\n  const matches = [\n    { match: 'john c .', tag: 'Actor' },\n    { match: 'john foo', tag: 'FooBar' },\n    { match: 'john . reilly', tag: 'SecondTag' },\n  ]\n  const net = nlp.buildNet(matches)\n\n  let doc = nlp(`he was john c reilly. oh yeah`)\n\n  // return after the first match\n  const { view, found } = doc.sweep(net, { tagger: false, matchOne: true })\n  t.equal(view.length, 1, here + 'matchOne')\n  found[0] = found[0] || {}\n  t.equal(found[0].match, 'john c .', here + 'matchOne-first')\n\n  // .match\n  let m = doc.match(net)\n  t.equal(m.text(), 'john c reilly', here + 'basic match')\n  t.equal(doc.has('(#Actor|#FooBar|#SecondTag)'), false, here + 'match doesnt tag')\n  t.equal(m.length, 1, here + 'only one')\n\n  // .has\n  t.equal(doc.has(net), true, here + 'has-basic')\n\n  // .if\n  m = doc.if(net)\n  t.equal(m.text(), 'he was john c reilly.', here + 'if-basic')\n  m = doc.ifNo(net)\n  t.equal(m.text(), 'oh yeah', here + 'ifNo-basic')\n\n\n  doc = nlp(`he was john c reilly. oh yeah john b reilly too`)\n  m = doc.match(net)\n  t.equal(m.length, 2, here + 'only both')\n  m = doc.matchOne(net)\n  t.equal(m.text(), 'john c reilly', here + 'matchOne')\n\n  t.end()\n})\n\ntest('un-cacheable-match:', function (t) {\n  let matches = [\n    { match: '/[0-9]{1,2}(st|nd|rd|th)/', tag: 'RegExp' },\n  ]\n  let net = nlp.buildNet(matches)\n  let m = nlp('foo 2nd bar').sweep(net).view\n  t.equal(m.has('#RegExp'), true, here + 'found regex-only')\n\n  matches = [{ match: '/foo/' }]\n  net = nlp.buildNet(matches)\n  m = nlp('first. foo bar').sweep(net).view\n  t.equal(m.text(), 'foo', here + 'found reg')\n  t.end()\n})\n\ntest('cache-checks:', function (t) {\n  const net = nlp.buildNet([\n    { match: '(will && @isTitleCase) smith', tag: 'Celebrity' }\n  ])\n  let m = nlp('Will Smith').sweep(net).view\n  t.equal(m.has('#Celebrity'), true, here + 'and result found')\n\n  m = nlp('will Smith').sweep(net).view\n  t.equal(m.has('#Celebrity'), false, here + 'and true-negative')\n\n  t.end()\n})\n\n\ntest('multi-fast-OR:', function (t) {\n  const net = nlp.buildNet([\n    { match: '(one|two|three) (a|b|c)', tag: 'Found' }\n  ])\n  const allForms = [\n    'one a',\n    'one b',\n    'one c',\n    'three a',\n    'three b',\n    'three c',\n  ]\n  allForms.forEach(reg => {\n    const m = nlp(reg).sweep(net).view\n    t.equal(m.has('#Found'), true, here + reg)\n  })\n  t.end()\n})\n\ntest('slow-OR-checks:', function (t) {\n  const net = nlp.buildNet([\n    { match: '(foo|one two)', tag: 'Found' }\n  ])\n  let m = nlp('foo').sweep(net).view\n  t.equal(m.has('#Found'), true, here + 'single-choice')\n\n  m = nlp('one two').sweep(net).view\n  t.equal(m.has('#Found'), true, here + 'multi-choice')\n\n  m = nlp('open bar').sweep(net).view\n  t.equal(m.has('#Found'), false, here + 'not-one-multi')\n\n  t.end()\n})\n\ntest('sweep partial document:', function (t) {\n  const matches = [\n    { match: 'remove .' },\n    { match: 'daffy duck' },\n  ]\n  const net = nlp.buildNet(matches)\n  let doc = nlp(`before here. remove this. after here`)\n  doc = doc.not('remove this')\n  let m = doc.match(net)\n  t.equal(m.found, false, here + 'shouldnt find excluded sentence')\n\n  doc = nlp(`before here. remove this. daffy duck after. not this`)\n  doc = doc.notIf('remove this')\n  m = doc.match(net)\n  t.equal(m.text(), 'daffy duck', here + 'match after remove')\n\n  t.end()\n})\n\ntest('sweep absolute indexes:', function (t) {\n  const matches = [\n    { match: 'third' },\n  ]\n  const net = nlp.buildNet(matches)\n  let doc = nlp(`first. second. third`)\n  doc = doc.reverse()\n\n  const res = doc.sweep(net)\n  res.view.soften()\n  t.equal(res.view.text(), 'third', here + 'abs index in res')\n\n  res.found[0] = res.found[0] || {}\n  res.found[0].view = res.found[0].view || doc.none()\n  res.found[0].view.soften()\n  t.equal(res.found[0].view.text(), 'third', here + 'abs index in found')\n  t.end()\n})\n\ntest('no negative OR false-matches:', function (t) {\n  const txt = 'and us not making appointments'\n  const reg = '!(was|us|me) not making appointments'\n  const doc = nlp(txt)\n  const net = nlp.buildNet([\n    { match: reg }\n  ])\n  t.equal(doc.match(net).found, false, here + 'no negative OR')\n  t.end()\n})\n\ntest('buildNet reserved word safe:', function (t) {\n  const matches = [\n    { match: 'first' },\n    { match: 'constructor' },\n  ]\n  const net = nlp.buildNet(matches)\n  const doc = nlp(`constructor. second`)\n\n  const res = doc.sweep(net)\n  t.equal(res.view.text(), 'constructor.', here + 'buildNet reserved word safe')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/match/syntax.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/syntax] '\n\ntest('negative parentheses', function (t) {\n  let doc = nlp.tokenize('if he does. does he?')\n  let m = doc.if('!^(if|cool)')\n  t.equals(m.text(), 'does he?', here + 'negative-start')\n\n  m = doc.if('^!(if|cool)')\n  t.equals(m.text(), 'does he?', here + 'start-negative')\n\n  doc = nlp.tokenize('spencer other')\n  t.equals(doc.match('(cool|spencer)').text(), 'spencer', here + 'optional-true')\n  t.equals(doc.match('!(cool|spencer)').text(), 'other', here + 'outside-negative')\n  t.equals(doc.match('!(foobar)').text(), 'spencer other', here + 'has-everthing')\n  t.equals(doc.match('(!spencer)').text(), 'other', here + 'has-other')\n  t.equals(doc.match('!(spencer)').text(), 'other', here + 'has-other-outside')\n  t.equals(doc.match('(!other|!spencer)').text(), 'spencer other', here + 'tricky-negative-swap')\n  // t.equals(doc.match('!(!other|!spencer)').text(), '', 'double-tricky')\n  t.end()\n})\n\ntest('start-end parentheses', function (t) {\n  let doc = nlp(\"matt does but matthew doesn't\")\n  let m = doc.match('^(/matt/|frank) .')\n  t.equals(m.text('normal'), 'matt does', here + 'choice-start')\n\n  m = doc.match('(^matt|matt$)')\n  t.equals(m.text('normal'), 'matt', here + 'matt-start')\n\n  doc = nlp(\"now matt doesn't but yes for matthew\")\n  m = doc.match('(^matt|matthew$)')\n  t.equals(m.text('normal'), 'matthew', here + 'matthew-end')\n\n  doc = nlp(\"now matt doesn't but yes for matthew\")\n  m = doc.match('(woo|matthew)$')\n  t.equals(m.text('normal'), 'matthew', here + 'matthew-end-outside')\n  t.end()\n})\n\n\ntest('case-sensitivity', function (t) {\n  const doc = nlp('i NEED it')\n  let m = doc.match('NEED')\n  t.equal(m.found, true, here + 'who-cares-case')\n\n  m = doc.match('Need')\n  t.equal(m.found, true, here + 'who-cares-titlecase')\n\n  m = doc.match('NEED', { caseSensitive: true })\n  t.equal(m.found, false, here + 'missed-case')\n\n  m = doc.match('Need', { caseSensitive: true })\n  t.equal(m.found, false, here + 'missed-title-case')\n\n  m = doc.match('NEED', null, { caseSensitive: true })\n  t.equal(m.found, true, here + 'right-case')\n  t.end()\n})\n\ntest('regex-case-sensitivity', function (t) {\n  let doc = nlp('i NEED it')\n  let m = doc.match('/need/')\n  t.equal(m.found, true, here + 'who-cares-case')\n\n  doc = nlp('i NEED it')\n  m = doc.match('/Need/', null, { caseSensitive: true })\n  t.equal(m.found, false, here + 'case-sensitive-miss')\n\n  doc = nlp('i NEED it')\n  m = doc.match('/NEED/', null, { caseSensitive: true })\n  t.equal(m.found, true, here + 'case-sensitive-hit')\n\n  t.end()\n})\n\ntest('regex tokenization', function (t) {\n  const arr = [\n    ['this/isoneword', 1],\n    ['this/isone/word', 1],\n    ['thisis(one)word', 1],\n    ['(thisisoneword)', 1],\n    ['(this/is/oneword)', 1],\n    ['one /two/ three', 3],\n    ['one /t(foob)3(2)*kwo/ three', 3],\n    ['one /^t*.(.)+kwo$/ three', 3],\n    ['/flubber trouble/', 1],\n    ['one /reg with spaces/ three', 3],\n    ['one (block with spaces) three', 3],\n    ['one (/block/ with /spaces/) three', 3],\n    ['one (/block/|with|/^spa(ce)?s/) three', 3],\n    ['one (a|/block/  |./) three f', 4],\n    ['before /foo bar/ and  (yes sir)', 4],\n    ['before /foo  (bar)/ and (yes |/foo bar/|sir)', 4],\n    // prefix/suffix\n    ['one /optional reg/? three', 3],\n    ['one (optional /block/)? three', 3],\n    ['one !(optional two|!#Block)* three', 3],\n    ['one [(inside two)] three', 3],\n    // named-groups\n    ['i saw [<match>(the person|#Pronoun|tina turner)]', 3],\n    ['before [<w>(one two)] after', 3],\n    ['before [< word >/one two/] after', 3],\n    ['[#Copula (#Adverb|not)+?] (#Gerund|#PastTense)', 3],\n    ['[<num>#Value] [<currency>(mark|rand|won|rub|ore)] foo', 3],\n    ['(snooze|wait|delay|punt|later|sleep) (up to) [<snooze_to>#Date+]', 3],\n    ['(snooze sleep) (up to) [<snooze_to>#Date+]?', 3],\n    ['(snooze sleep) (up|to) [<snooze_to>#Date+]? (fourth)?', 4],\n    // ['/snooze sleep/ /up to/ [<snooze_to>#Date+]?', 3], //known issue\n  ]\n  arr.forEach(a => {\n    const regs = nlp.parseMatch(a[0])\n    // let regs = parse(a[0])\n    t.equals(regs.length, a[1], here + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/match.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[one/match] '\n\nconst arr = [\n  ['toronto', 'toronto'],\n  ['mexico', '.'],\n  ['mexico', '.?'],\n  ['mexico city', '.'],\n  ['mexico city', '.+'],\n  ['mexico city', '.{0,2}'],\n  ['mexico city', '.{1,2}'],\n  ['mexico city', '.{2,2}'],\n  ['mexico city', '.{2}'],\n  ['mexico city hall', '.{2,3}'],\n  ['mexico city hall', '/mex/? .+'],\n  ['mexico', '/mex/'],\n  ['mexico', '.{0,3}'],\n  ['Please -Match me', 'please match me'],\n  ['the -5 runner', 'the -5 runner'],\n  ['the -5th runner', 'the -5th runner'],\n]\ntest('match:', function (t) {\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    const msg = `'${(a[0] + \"' \").padEnd(20, '.')}  - '${a[1]}'`\n    const m = doc.match(a[1])\n    t.equal(m.text(), doc.text(), here + msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/freeze.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/freeze] '\n\ntest('freeze-match :', function (t) {\n  const doc = nlp(`yeah. one extra two match here three`)\n  const m = doc.match('match here')\n  // m.freeze()\n  doc.remove('extra')\n  t.equal(m.text(), 'match here', here + 'match')\n  t.end()\n})\n\ntest('freeze-remove-before :', function (t) {\n  const doc = nlp(`yeah. one extra two match here three`)\n  const m = doc.match('match here')\n  // m.freeze()\n  doc.remove('extra')\n  doc.remove(m)\n  t.equal(doc.eq(1).text(), 'one two three', here + 'remove')\n  t.end()\n})\n\ntest('freeze-remove-after :', function (t) {\n  const doc = nlp(`yeah. one two match here extra three`)\n  const m = doc.match('match here')\n  // m.freeze()\n  doc.remove('extra')\n  doc.remove(m)\n  t.equal(doc.eq(1).text(), 'one two three', here + 'remove-after')\n  t.end()\n})\n\ntest('freeze-destroy-match :', function (t) {\n  const doc = nlp(`yeah. one two match extra here three`)\n  const m = doc.match('match extra here')\n  // m.freeze()\n  doc.remove('extra')\n  t.equal(m.text(), 'match here', here + 'broken-match')\n  // ensure it now removes nothing\n  doc.remove(m)\n  t.equal(doc.has('match'), false, here + 'removed some')\n  t.equal(doc.has('here'), true, here + 'kept some')\n  t.end()\n})\n\ntest('freeze-change-multi :', function (t) {\n  const doc = nlp(`extra extra match extra. extra one match two extra. match one`)\n  const m = doc.match('match')\n  // m.freeze()\n  doc.remove('extra')\n  t.equal(doc.text(), 'match. one match two. match one', here + 'before remove')\n  doc.remove(m)\n  t.equal(doc.text(), 'one two. one', here + 'after remove')\n  t.end()\n})\n\ntest('freeze-split :', function (t) {\n  const doc = nlp(`e before and m and after`)\n  const m = doc.match('m')\n  // m.freeze()\n  doc.remove('e')\n  const res = doc.splitOn(m)\n  t.deepEqual(res.out('array'), ['before and', 'm', 'and after'], here + 'freeze split')\n  t.end()\n})\n\ntest('freeze-sentence-remove :', function (t) {\n  const doc = nlp(`extra. match`)\n  const m = doc.match('match')\n  doc.remove('extra')\n  t.equal(doc.match(m).text(), 'match', here + 'remove-sentence')\n  t.end()\n})\n\ntest('repair-grandchild :', function (t) {\n  const doc = nlp('before. one match yes match no. match nope')\n  const m1 = doc.match('match yes match')\n  const m2 = m1.match('match yes')\n  const m3 = m2.match('yes')\n  doc.replace('one', 'so many more words')\n  t.equal(m3.text(), 'yes', 'grandchild repaired')\n  t.end()\n})\n\ntest('freeze-misc :', function (t) {\n  let doc = nlp('before. one match yes match no. match nope')\n  const m = doc.match('match yes')\n  doc.prepend('match yes')\n  doc.replace('one', 'oh yeah')\n  doc.replace('oh yeah', 'foo')\n  doc = doc.notIf('before')\n  doc.remove('one')\n  t.equal(m.text(), 'match yes', 'still repaired')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/inputs.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/inputs] '\n\ntest('doc-as-input :', function (t) {\n  const txt = `yeah. one two. match three.`\n  let a = nlp(txt)\n  let b = nlp(a)\n  t.equal(b.text(), txt, here + 'doc as input')\n\n  a = nlp(txt).match('match')\n  b = nlp(a)\n  t.equal(b.text(), 'match', here + 'passed pointer')\n  t.equal(b.all().text(), txt, here + 'got whole document')\n  t.end()\n})\n\ntest('empty-inputs :', function (t) {\n  t.equal(nlp(null).text(), '', here + 'null input')\n  t.equal(nlp(undefined).text(), '', here + 'undefined input')\n  t.equal(nlp([]).text(), '', here + 'empty array input')\n  t.equal(nlp({}).text(), '', here + 'empty obj input')\n  t.equal(nlp('').text(), '', here + 'empty string input')\n  // nullish / problematic\n  t.equal(nlp('0').text(), '0', here + '0 string input')\n  t.equal(nlp(0).text(), '0', here + '0 num input')\n  t.equal(nlp('null').text(), 'null', here + 'null string input')\n  t.equal(nlp('undefined').text(), 'undefined', here + 'undefined string input')\n  t.equal(nlp('[]').text(), '[]', here + 'empty array string input')\n  t.equal(nlp('{}').text(), '{}', here + 'empty obj string input')\n  t.equal(nlp('constructor').text(), 'constructor', here + 'constructor string input')\n  t.equal(nlp('prototype').text(), 'prototype', here + 'prototype string input')\n  t.end()\n})\n\ntest('json-input :', function (t) {\n  let json = nlp('').json()\n  t.equal(nlp(json).text(), '', here + 'empty json input')\n\n  json = nlp('one two three').json()\n  t.equal(nlp(json).text(), 'one two three', here + 'one sentence json input')\n\n  json = nlp('one two. three four, five').json()\n  t.equal(nlp(json).text(), 'one two. three four, five', here + 'two sentence json input')\n\n  // ensure tags passthrough\n  const doc = nlp('one two match three')\n  doc.match('match').tag('Foo')\n  json = doc.json()\n  const b = nlp(json)\n  t.equal(b.has('#Foo'), true, here + 'tag-from-json')\n\n  t.end()\n})\n\ntest('pre-tokenized-input :', function (t) {\n  const input = [['one', 'two', 'three'], ['four']]\n  const doc = nlp(input)\n  t.equal(doc.eq(0).text(), 'one two three', here + 'first-sentence')\n  t.equal(doc.eq(1).text(), 'four', here + '2nd-sentence')\n  t.end()\n})"
  },
  {
    "path": "tests/one/misc/isFull.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/isFull] '\n\ntest('isFull :', function (t) {\n  const doc = nlp('one two three. four five. six seven eight. nine')\n  t.equal(doc.isFull(), true, here + 'full')\n\n  let m = doc.match('four five')\n  t.equal(m.isFull(), false, here + 'part')\n\n  m = doc.terms()\n  t.equal(m.isFull(), true, here + 'terms')\n\n  m = doc.harden()\n  t.equal(m.isFull(), true, here + 'harden')\n\n  m = m.eq(2)\n  t.equal(m.isFull(), false, here + 'eq')\n\n  doc.remove('four')\n  t.equal(doc.isFull(), true, here + 'remove')\n  doc.remove('five')\n  t.equal(doc.isFull(), true, here + 'remove2')\n\n  m = doc.terms().all()\n  t.equal(m.isFull(), true, here + 'all')\n  t.end()\n})\n\ntest('isFull-split', function (t) {\n  const doc = nlp('one two foo three. four foo five')\n  const a = doc.splitOn('foo')\n  t.equal(a.isFull(), true, 'spliton')\n\n  const b = doc.splitBefore('foo')\n  t.equal(b.isFull(), true, 'splitbefore')\n\n  const c = doc.splitAfter('foo')\n  t.equal(c.isFull(), true, 'splitafter')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/loops.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/loops] '\n\ntest('map-stuff', function (t) {\n  // let doc = nlp('and').map(d => {\n  //   return d.replaceWith('or')\n  // })\n  // t.equal(doc.text(), 'or', 'replace-with')\n\n  const doc = nlp('one two three. three four five.').map(d => {\n    return d.match('three')\n  })\n  t.equal(doc.eq(0).text(), 'three', here + 'match-one')\n  t.equal(doc.eq(1).text(), 'three', here + 'match-two')\n\n  t.end()\n})\n\ntest('foreach-stuff', function (t) {\n  const doc = nlp('one two three. three four five.').forEach(p => {\n    p.toUpperCase()\n  })\n  t.equal(doc.out('text'), 'ONE TWO THREE. THREE FOUR FIVE.', here + 'foreach-uppercase')\n  t.end()\n})\n\ntest('filter-stuff', function (t) {\n  let doc = nlp('one two three. three four five.').filter(p => {\n    return p.has('four')\n  })\n  t.equal(doc.out('normal'), 'three four five.', here + 'filter-has')\n\n  doc = nlp('one two three. three four five.')\n    .terms()\n    .filter(p => {\n      return p.has('four')\n    })\n  t.equal(doc.out('normal'), 'four', here + 'filter-four')\n\n  doc = nlp('one two three. three four five.')\n    .terms()\n    .filter(p => {\n      return p.has('asdf')\n    })\n  t.equal(doc.out('normal'), '', here + 'empty-filter')\n  t.end()\n})\n\ntest('find-stuff', function (t) {\n  let doc = nlp('one two three. three four five.').find(m => m.has('four'))\n  t.equal(doc && doc.out('normal') === 'three four five.', true, here + 'found four')\n\n  doc = nlp('one two three. three four five.').find(m => m.has('asdf'))\n  t.equal(doc.found, false, here + 'undefined find result') //change?!\n  t.end()\n})\n\ntest('some-stuff', function (t) {\n  let bool = nlp('one two three. three four five.').some(m => m.has('three'))\n  t.equal(bool, true, here + 'found-three')\n\n  bool = nlp('one two three. three four five.').some(m => m.has('asdf'))\n  t.equal(bool, false, here + 'not-found')\n  t.end()\n})\n\ntest('map array return', function (t) {\n  const doc = nlp('Larry, Curly, and Moe')\n  let people = doc.match('!and') // (any one noun)\n  people = people.sort('alpha')\n  const arr = people.map(d => d.text('normal'))\n  t.deepEqual(arr, ['curly', 'larry', 'moe'], here + 'got array in response')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/misc.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/misc] '\n\ntest('lazy-pointer-issue', function (t) {\n  const doc = nlp.tokenize(`four two five`)\n  const m = doc.eq(0).match('two')\n  t.equal(m.text(), 'two', here + 'convert to full-pointer')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/pointer.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/pointer] '\n\ntest('basic pointer getters', function (t) {\n  const txt = `one two three. four five six.`\n  const arr = [\n    // empty pointers mean full doc\n    // [null, txt],\n    // [undefined, txt],\n    // ['', txt],\n    // no doc\n    [[], ``],\n    // first sentence\n    [[0], `one two three.`],\n    [[0, 0], `one two three.`],\n    [[0, 0, 1], `one`],\n    [[0, 0, 2], `one two`],\n    [[0, 0, 3], `one two three.`],\n    [[0, 0, 13], `one two three.`], //term-overflow\n    [[0, 0], `one two three.`],\n    // nth sentence\n    [[1], `four five six.`],\n    [[120], ``],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(txt).update([a[0]])\n    t.equal(doc.text() + '|', a[1] + '|', here + JSON.stringify(a[0]))\n\n    t.equal(doc.found, Boolean(doc.text()), here + a[0])\n  })\n  t.end()\n})\n\n\n// repair an end index using endId\ntest('use pointer endId', function (t) {\n  // insert a term\n  let doc = nlp(`john is nice`)\n  let m = doc.match('.*')\n  doc.match('is').insertAfter('really')\n  t.equal(m.text(), 'john is really nice', here + 'end-id grow')\n  t.equal(m.text(), 'john is really nice', here + 'end-id grow 2nd-time')\n\n  doc = nlp(`john is nice`)\n  m = doc.match('.*')\n  doc.match('is').insertBefore('really')\n  t.equal(m.text(), 'john really is nice', here + 'end-id appendgrow')\n  t.equal(m.text(), 'john really is nice', here + 'end-id append grow 2nd-time')\n\n  // remove a middle-term\n  doc = nlp(`john is nice`)\n  m = doc.match('.*')\n  doc.match('is').remove()\n  t.equal(m.text() + '|', 'john nice|', here + 'end-id shrink')\n  t.equal(m.text() + '|', 'john nice|', here + 'end-id shrink 2nd time')\n\n\n  // remove an ending-term\n  // doc = nlp(`john is nice`)\n  // m = doc.match('.*')\n  // doc.match('nice').remove()\n  // // first time\n  // t.equal(m.text(), 'john is', here + 'end-id remove first time')\n  // // second time\n  // t.equal(m.text(), 'john is', here + 'end-id remove second time')\n\n  t.end()\n})\n\n\n// repair an end index using endId\ntest('replace w/ pointer endId', function (t) {\n  // replace a middle term\n  let doc = nlp(`john is nice`)\n  let m = doc.match('.*')\n  doc.match('is').replaceWith('was really')\n  t.equal(m.text(), 'john was really nice', here + 'end-id grow')\n  t.equal(m.text(), 'john was really nice', here + 'end-id grow 2nd time')\n  // replace a middle term\n  doc = nlp(`john is nice`)\n  m = doc.match('.*')\n  doc.match('nice').replaceWith('really swell')\n  t.equal(m.text(), 'john is really swell', here + 'end-id grow')\n  t.equal(m.text(), 'john is really swell', here + 'end-id grow 2nd time')\n  t.end()\n})\n\n\ntest('remove w/ pointer endId', function (t) {\n  const doc = nlp('one two three match four five six')\n  const m = doc.match('match .')\n  doc.remove('four')\n  t.equal(m.text(), 'match five six', here + 'full-match fallback')\n  t.equal(m.text(), 'match five six', here + 'full-match fallback 2nd')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/random.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/random] '\n\ntest('random', function (t) {\n  const r = nlp('one two three four five six')\n  let arr = r.terms().random().out('array')\n  t.equal(arr.length, 1, here + 'default is size 1')\n\n  arr = r.terms().random(2).out('array')\n  t.equal(arr.length, 2, here + 'size 2')\n\n  arr = r.terms().random(3).out('array')\n  t.equal(arr.length, 3, here + 'size 3')\n\n  arr = r.terms().random(4).out('array')\n  t.equal(arr.length, 4, here + 'size 4')\n\n  arr = r.terms().random(5).out('array')\n  t.equal(arr.length, 5, here + 'size 5')\n\n  arr = r.terms().random(6).out('array')\n  t.equal(arr.length, 6, here + 'size 6')\n\n  arr = r.terms().random(7).out('array')\n  t.equal(arr.length, 6, here + '7 is too big')\n\n  arr = r.terms().random(17).out('array')\n  t.equal(arr.length, 6, here + '17 is too big')\n\n  t.end()\n})\n\ntest('random-null', function (t) {\n  const r = nlp('toronto')\n  let arr = r.match('#Person').random(5).out('array')\n  t.equal(arr.length, 0, here + 'random can be empty')\n\n  arr = r.match('toronto+').random(5).out('array')\n  t.equal(arr.length, 1, here + 'random can be full-match')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/reservedwords.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/reservedwords] '\n\ntest('reserved words:', function (t) {\n  const reserved = [\n    'abstract',\n    'boolean',\n    'break',\n    'byte',\n    'case',\n    'catch',\n    'char',\n    'class',\n    'const',\n    'constructor',\n    'continue',\n    'debugger',\n    'default',\n    'delete',\n    'do',\n    'double',\n    'else',\n    'enum',\n    'export',\n    'extends',\n    'false',\n    'final',\n    'finally',\n    'float',\n    'for',\n    'function',\n    'goto',\n    'if',\n    'implements',\n    'import',\n    'in',\n    'instanceof',\n    'int',\n    'interface',\n    'let',\n    'long',\n    'native',\n    'new',\n    'null',\n    'package',\n    'private',\n    'protected',\n    'prototype',\n    'public',\n    'return',\n    'short',\n    'static',\n    'super',\n    'switch',\n    'synchronized',\n    'this',\n    'throw',\n    'throws',\n    'transient',\n    'true',\n    'try',\n    'typeof',\n    'var',\n    'void',\n    'volatile',\n    'while',\n    'with',\n    'yeild',\n    '__prototype__',\n    '&&',\n    '||',\n    '|',\n    // \"'\",\n    '&',\n    'Math.PI',\n    12e34,\n    '#§$%',\n    'π',\n    'привет',\n    // 'hasOwnProperty',\n    'café',\n    '$$$',\n    1e2,\n    '{}',\n    '[]',\n    'constructor',\n    'prototype',\n    ')&@)^',\n    ' -@%@',\n    '-constructor',\n    '#!^@#$',\n    '..(',\n  ]\n  const str = reserved.join(' ')\n  const r = nlp(str)\n  t.equal(r.out('text'), str, here + 'reserved-words-are-printed')\n  t.equal(r.terms().length, reserved.length, here + 'reserved-length')\n  // t.ok(r.contractions().data(), 'runs contractions subset')\n  // t.ok(r.parentheses().data(), 'runs parentheses subset')\n  // t.ok(r.lists().data(), 'runs lists subset')\n  t.ok(r.terms().data(), here + 'runs terms subset')\n  // t.ok(r.pronouns().data(), 'runs pronouns subset')\n  t.end()\n})\n\ntest('co-erce reserved words', function (t) {\n  const r = nlp('constructor prototype')\n  r.tag('Verb')\n  t.ok(r.match('#Verb').data(), here + 'runs tag/match')\n  r.tag('Adjective')\n  t.ok(r.match('#Noun').data(), here + 'runs untag')\n  t.equal(r.terms().slice(0, 2).length, 2, here + 'runs slice')\n  // t.ok(r.append('constructor').text(), 'runs append')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/safe-contractions.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/safe-contractions] '\n\n\ntest('safe-apostrophe-s', function (t) {\n  const arr = [\n    // yes\n    // [`She's got me`, 4],\n    [`Let’s not`, 3],\n    [`that's it!`, 3],\n    [`what’s going on?`, 4],\n    [`There's a row`, 4],\n    // [`It's unbelievable`, 3],\n\n    // no\n    [`Luke's Diner`, 2],\n    [`Murphy's law`, 2],\n    [`Gandhi's philosophy `, 2],\n\n    // tricky-yes\n    // [`Gandhi's cool `, 3],\n    // [`Gandhi's so early `, 4],\n\n\n    // toronto's massive party\n    // toronto's massive\n    // toronto's trying\n    // ['',]\n  ]\n  arr.forEach(a => {\n    const terms = nlp(a[0]).terms()\n    t.equal(terms.length, a[1], here + a[0])\n  })\n  t.end()\n})\n\n\ntest('safe-apostrophe-d', function (t) {\n  const arr = [\n    // [`she'd say`, 'she would say'],\n    [`she'd go`, 'she would go'],\n    [`we'd go`, 'we would go'],\n    [`we'd gone`, 'we had gone'],\n    // [`i'd phoned`, `i had phoned`],\n  ]\n  arr.forEach(a => {\n    const str = nlp(a[0]).text('machine')\n    t.equal(str, a[1], here + a[0])\n  })\n  t.end()\n})\n\n\ntest('theres', function (t) {\n  const arr = [\n    [`there's a`, 'there is'],\n    [`there's no going back`, 'there is'],\n    [`there's no honor`, 'there is'],\n    [`where there's a job`, 'there is'],\n    [`and there's a little old man`, 'there is'],\n    [`there's always`, 'there is'],\n    [`there's one`, 'there is'],\n    [`there’s gonna be strippers`, 'there is'],\n    [`There's something strange`, 'there is'],\n    [`guess there's not much to do `, 'there is'],\n    [`There's never been a more important moment`, 'there has'],\n    [`there's been`, 'there has'],\n    [`there's never been`, 'there has'],\n    [`There's hardly been any progress`, 'there has'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    t.ok(doc.has(a[1]), a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/slash.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/slash] '\n\ntest('slash whitespace', function (t) {\n  let str = 'left his / her backpack '\n  let doc = nlp(str)\n  t.equal(doc.out(), str, here + 'slash with normal spaces')\n\n  str = 'left   his/her  backpack '\n  doc = nlp(str)\n  t.equal(doc.out(), str, here + 'slash with no spaces')\n\n  str = 'left  his  /  her  backpack'\n  doc = nlp(str)\n  t.equal(doc.out(), str, here + 'slash with lots of spaces')\n  t.end()\n})\n\ntest('slash match', function (t) {\n  let str = 'left his / her backpack '\n  let doc = nlp(str)\n  t.equal(doc.has('his'), true, here + 'slash with normal spaces - his')\n  t.equal(doc.has('her'), true, here + 'slash with normal spaces - her')\n  // t.equal(doc.has('his / her'), true, 'slash with normal spaces - his / her')\n\n  str = 'left   his/her  backpack '\n  doc = nlp(str)\n  t.equal(doc.has('his'), true, here + 'slash with no spaces - his')\n  t.equal(doc.has('her'), true, here + 'slash with no spaces - her')\n  t.equal(doc.has('his/her'), true, here + 'slash with no spaces - his/her')\n\n  str = 'left  his  /  her  backpack'\n  doc = nlp(str)\n  t.equal(doc.has('his'), true, here + 'slash with lots of spaces')\n  t.equal(doc.has('her'), true, here + 'slash with lots of spaces')\n\n  str = 'left   his/her/their  backpack '\n  doc = nlp(str)\n  t.equal(doc.has('his'), true, here + 'three-slash - his')\n  t.equal(doc.has('her'), true, here + 'three-slash - her')\n  t.equal(doc.has('their'), true, here + 'three-slash - their')\n  t.equal(doc.has('his/her/their'), true, here + 'three-slash - his/her/their ')\n  // t.equal(doc.has('#SlashedTerm'), true, here + 'SlashedTerm tag')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/sort.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/sort] '\n\ntest('sortAlpha:', function (t) {\n  const str = 'John xoo, John fredman, John davis, John fredman,'\n  let r = nlp(str)\n  r = r.split('@hasComma')\n  r = r.sort('alpha')\n  const want = ['John davis,', 'John fredman,', 'John fredman,', 'John xoo,']\n  t.deepEqual(r.out('array'), want, here + 'sort-alpha')\n  t.end()\n})\n\ntest('sortSequential:', function (t) {\n  const str = 'John xoo, John fredman, John davis'\n  let r = nlp(str)\n  r = r.split('@hasComma')\n  r = r.sort('alphabetical')\n  r = r.sort('seq')\n  const want = ['John xoo,', 'John fredman,', 'John davis']\n  t.deepEqual(r.out('array'), want, here + 'sort-chron')\n  t.end()\n})\n\ntest('reverse:', function (t) {\n  const str = 'John xoo, John fredman, John davis'\n  let r = nlp(str)\n  r = r.split('@hasComma')\n  r = r.sort('alphabetical')\n  r = r.reverse()\n  const want = ['John xoo,', 'John fredman,', 'John davis']\n  t.deepEqual(r.out('array'), want, here + 'alpha-reverse')\n  t.end()\n})\n\ntest('freq:', function (t) {\n  const str = 'John xoo, John fredman, John davis'\n  let r = nlp(str)\n  r = r.terms()\n  r = r.sort('freq')\n  const want = ['John', 'John', 'John', 'xoo,', 'fredman,', 'davis']\n  t.deepEqual(r.out('array'), want, here + 'freq-reverse')\n  t.end()\n})\n\ntest('length:', function (t) {\n  const str = 'Amy, John Fredman, Dr. Bill, Alexis Smithsonian'\n  let r = nlp(str)\n  r = r.split('@hasComma')\n  r = r.sort('length')\n  r = r.reverse()\n  const want = ['Amy,', 'Dr. Bill,', 'John Fredman,', 'Alexis Smithsonian']\n  t.deepEqual(r.out('array'), want, here + 'sort length')\n  t.end()\n})\n\ntest('wordCount:', function (t) {\n  const str = 'John Fredman, Amy, Dr. Bill G. Gates'\n  let r = nlp(str)\n  r = r.split('@hasComma')\n  r = r.sort('wordCount')\n  r.reverse()\n  const want = ['Dr. Bill G. Gates', 'John Fredman,', 'Amy,']\n  t.deepEqual(r.out('array'), want, here + 'sort-wordcount')\n  t.end()\n})\n\ntest('unique:', function (t) {\n  const str = 'John xoo, John fredman, john xoo, John davis'\n  let r = nlp(str)\n  r = r.split('@hasComma')\n  r = r.unique()\n  const want = ['John xoo,', 'John fredman,', 'John davis']\n  t.deepEqual(r.out('array'), want, here + 'sort-unique')\n  t.end()\n})\n\ntest('custom-sort:', function (t) {\n  const doc = nlp('Eeny, meeny, miny, moe')\n  const terms = doc.terms()\n  terms.sort((a, b) => {\n    a = a.text('normal')\n    b = b.text('normal')\n    if (a.length > b.length) {\n      return -1\n    }\n    if (a.length < b.length) {\n      return 1\n    }\n    return 0\n  })\n  const arr = terms.map(d => d.text('normal'))\n  t.deepEqual(arr, ['meeny', 'eeny', 'miny', 'moe'], here + 'custom sort output')\n  t.end()\n})\n\ntest('frequency:', function (t) {\n  const str = 'John xoo, John fredman, john xoo, John davis'\n  let r = nlp(str)\n  r = r.split('@hasComma')\n  const a = r.out('frequency')\n  t.equal(a[0].normal, 'john xoo', here + 'topk is sorted')\n  t.equal(a[0].count, 2, here + 'topk finds two')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/typeahead.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/typeahead] '\n\ntest('typeahead test', function (t) {\n  const lexicon = {\n    bedfordshire: 'Town',\n    aberdeenshire: 'Town',\n    buckinghamshire: 'Town',\n    argyllshire: 'Town',\n    bambridgeshire: 'Town',\n    cheshire: 'Town',\n    ayrshire: 'Town',\n  }\n  // add the words we should predict from\n  nlp.typeahead(lexicon, { min: 4 })\n  // create a document\n  let doc = nlp('i went to bambrid', lexicon)\n  let m = doc.match('bambridgeshire')\n  t.equal(m.text(), 'bambrid', here + 'found partial')\n  t.equal(m.text('implicit'), 'bambridgeshire', here + 'found full')\n\n  // match by tag, too\n  m = doc.match('#Town')\n  t.equal(m.text(), 'bambrid', here + 'found partial')\n  t.equal(m.text('implicit'), 'bambridgeshire', here + 'found full')\n\n  doc = nlp('bamb')\n  t.equal(doc.has('bambridgeshire'), true, here + 'found 4-letters')\n  doc = nlp('bam')\n  t.equal(doc.has('bambridgeshire'), false, here + 'not-found 3-letters')\n  t.end()\n})\n\ntest('collision test', function (t) {\n  nlp.typeahead(['milan', 'milwaukee'], { min: 1, safe: false })\n  t.equal(nlp('mil').has('(milan|milwaukee)'), false, here + 'collision')\n  // t.equal(nlp('mila').has('milan'), true, 'no-collision-1')\n  t.equal(nlp('milw').has('milwaukee'), true, here + 'no-collision-2')\n  t.end()\n})\n\ntest('min test', function (t) {\n  nlp.typeahead(['toronto'], { min: 4 })\n  t.equal(nlp('tor').has('toronto'), false, here + 'min-block')\n  t.equal(nlp('toro').has('toronto'), true, here + 'min-continue')\n\n  nlp.typeahead(['lettuce', 'fettucini', 'falafel'], { min: 1 })\n  t.equal(nlp('l').has('lettuce'), true, here + 'one-word-match')\n  t.equal(nlp('t').has('lettuce'), false, here + 'one-word-nope')\n  t.equal(nlp('f').has('lettuce'), false, here + 'one-word-collision')\n  t.equal(nlp('fe').has('fettucini'), true, here + 'min-continue')\n  t.end()\n})\n\ntest('lexicon-guard test', function (t) {\n  // nlp.addWords({ swim: 'Infinitive' })\n  // 'swim' is it's own word.\n  nlp.typeahead(['swimsuit'])\n  // t.equal(nlp('swim').has('swimsuit'), false, here + 'lexicon-block')\n  t.equal(nlp('swimsu').has('swimsuit'), true, here + 'lexicon-continue')\n  nlp.world().model.one.typeahead = {} //whoosh!\n  // who cares - do it anyways\n  nlp.typeahead(['swimsuit'], { safe: false })\n  t.equal(nlp('swim').has('swimsuit'), true, here + 'safemode-off')\n  t.equal(nlp('swimsu').has('swimsuit'), true, here + 'lexicon-continue-2')\n  nlp.world().model.one.typeahead = {} //whoosh!\n  t.end()\n})\n\ntest('prefix layer test', function (t) {\n  // layer-one, quite-greedy\n  nlp.typeahead(['grey', 'gold', 'red'], { min: 2 })\n  // layer-two, a little safer\n  nlp.typeahead(['greyhound', 'goldendoodle', 'poodle'], { min: 3 })\n\n  t.equal(nlp('re').has('red'), true, here + '2-match')\n  t.equal(nlp('po').has('poodle'), false, here + '2-match not found')\n\n  t.equal(nlp('gr').has('grey'), true, '2-match-sneaky')\n  t.equal(nlp('gre').has('grey') || nlp('gre').has('greyhound'), false, here + 'collision') // (collision of terms)\n  t.equal(nlp('golde').has('goldendoodle'), true, here + 'long-match')\n  t.end()\n})\n\ntest('prefix layer test', function (t) {\n  const words = {\n    august: 'Month',\n    september: 'Month',\n  }\n  nlp.typeahead(words, { min: 2, safe: false })\n  const doc = nlp('on the 4th of septem')\n  doc.autoFill()\n  t.equal(doc.text(), 'on the 4th of september', here + 'autofill')\n  t.end()\n})\n\ntest('prefix false-positive test', function (t) {\n  const words = {\n    august: 'Month',\n    september: 'Month',\n  }\n  nlp.typeahead(words, { min: 2, safe: false })\n  const str = `i've got a feelin' that we're gonna get through`\n  const doc = nlp(str)\n  doc.autoFill()\n  t.equal(doc.text(), str, here + 'contraction-safe')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/unicode.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/unicode] '\n\ntest('many-unicode', function (t) {\n  const str = `✐✠✰❀❐❞❰➀➐➠➰✁✑✡✱❁❑❡❱➁➑➡➱✂✒✢✲❂❒❢❲➂➒➢➲✃✓✣✳❃❓❣❳➃➓➣➳✄✔✤✴❄❔❤❴➄➔➤➴✅✕✥✵❅❕❥❵➅➕➥➵✆✖✦✶❆❖❦❶➆➖➦➶✇✗✧✷❇❗❧❷➇➗➧➷✈✘✨✸❈❘❨❸➈➘➨➸✉✙✩✹❉❙❩❹➉➙➩➹✊✚✪✺❊❚❪❺➊➚➪➺✋✛✫✻❋❛❫❻➋➛➫➻✌✜✬✼❌❜❬❼➌➜➬➼✍✝✭✽❍❝❭❽➍➝➭➽✎✞✮✾❎❞❮❾➎➞➮➾✏✟✯✿❏❜❯❿➏➟➯➿😀😐😠😰🙀😁😑😡😱🙁😂😒😢😲🙂😃😓😣😳🙃😄😔😤😴🙄😅😕😥😵🙅😆😖😦😶🙆😇😗😧😷🙇😈😘😨😸🙈😉😙😩😹🙉😊😚😪😺🙊😋😛😫😻🙋😌😜😬😼🙌😍😝😭😽🙍😎😞😮😾🙎😏😟😯😿🙏,&、*.+-;<:>?=!—\\($)%{@}〔〕₠₰₡₱₢₲₣₳₤₴₥₵₦₶₧₷₸₩₹₪₺₫₻€₼₭₽₮₾₯₿` // eslint-dis\n  const doc = nlp(str)\n  t.equal(doc.text(), str, here + 'identical-text')\n  t.equal(doc.length, 1, here + 'one-sentence')\n  t.equal(doc.terms().length, 1, here + 'one-term')\n  t.end()\n})\n\ntest('em-dashes', function (t) {\n  const str = 'text—text'\n  const doc = nlp(str)\n  t.equal(doc.text() === str, true, here + 'emdash')\n  t.end()\n})\n\n// this section is very cursed\ntest('zero-width-chars', function (t) {\n  //this has a zero-width character\n  const str = `before​ after`\n  const doc = nlp(str)\n  t.equal(doc.text(), str, here + 'zero-width passes-through')\n  const json = doc.json({ terms: { normal: true } })\n  const before = json[0].terms[0]\n  t.equal(before.normal, 'before', here + 'normalized-out in json')\n  t.equal(before.post, ' ', here + 'normal whitespace in json')\n  t.ok(doc.text() !== 'before after', here + 'default text has 0-width-char')\n  t.equal(doc.text('normal'), 'before after', here + 'normal text removes 0-width-char')\n  t.equal(doc.text('clean'), 'before after', here + 'clean text removes 0-width-char')\n  t.equal(doc.text('reduced'), 'before after', here + 'reduced text removes 0-width-char')\n  t.equal(doc.text('root'), 'before after', here + 'root text removes 0-width-char')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/misc/whitespace.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/whitespace] '\n\ntest('whitespace-out', function (t) {\n  const str = 'one, two three. One, two, four?'\n  const doc = nlp(str)\n\n  t.equal(doc.out(), str, here + 'original-okay')\n\n  // some phrases, but full-phrases\n  t.equal(doc.eq(0).text(), 'one, two three.', here + '.eq(0) okay')\n  t.equal(doc.eq(1).text(), 'One, two, four?', here + '.eq(1) okay')\n\n  t.equal(doc.match('four').text(), 'four', here + 'one match')\n\n  t.equal(doc.match('two').text(), 'two two', here + 'two single matches')\n  t.equal(doc.match('one').text(), 'one, One,', here + 'two more single matches')\n\n  t.equal(doc.match('one two').text(), 'one, two One, two,', here + 'two multi-matches')\n\n  // t.equal(doc.not('two').out(), 'one, three. One, four?', '.not() okay') // ❌\n\n  // t.equal(doc.match('.').out(), str, 'every word') // ❌\n  t.end()\n})\n\ntest('pre/post concat', function (t) {\n  const doc = nlp(`Getting ready for whacking day? What's whacking day?`)\n  doc.post(' ', true)\n  t.equal(doc.text(), `Getting ready for whacking day?  What's whacking day? `, here + 'concat')\n  doc.trim()\n  t.equal(doc.text(), `Getting ready for whacking day?  What's whacking day?`)\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/miss.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[one/miss] '\n\nconst arr = [\n  // no tags\n  // [`toronto`, '#City'],\n  // [`i went to Toronto`, '#Noun'],\n  // // no chunks\n  // [`toronto`, '<Noun>'],\n  // [`i went to Toronto`, '<Noun>'],\n  // min-length\n  ['mexico', '.{2}'],\n  ['mexico', '.{2,3}'],\n  //word-word\n  ['mexico city', 'foo city'],\n  ['mexico city', 'city foo'],\n  ['mexico city', 'city .'],\n  ['mexico city', 'mexico city .'],\n  ['mexico city', '. mexico city'],\n]\n\ntest('no-match:', function (t) {\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    const msg = `'${(a[0] + \"' \").padEnd(20, '.')}  - '${a[1]}'`\n    t.equal(doc.has(a[1]), false, here + msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/output/hash.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/hash] '\n\ntest('json-hash', function (t) {\n  const doc = nlp('fruit salad. food-safety')\n  const json = doc.json({ hash: true })\n  t.equal(json[0].hash, '3fd5b169e2574a4591ba0127db79a4ca', here + 'fruit salad')\n  t.equal(json[1].hash, '68e1fcbeb2b9f8003a97fd2476ef6f2b', here + 'food-safety')\n\n  const same = nlp('food-safety').json({ hash: true })\n  t.equal(same[0].hash, json[1].hash, here + 'match')\n\n  const notSame = nlp('food safety').json({ hash: true })\n  t.ok(notSame[0].hash !== json[1].hash, here + 'no-match')\n\n  t.end()\n})\n\n\ntest('json-out', function (t) {\n  const a = nlp('food safety').out('hash')\n  const b = nlp('fOOd Safety').out('hash')\n  t.equal(a, '88303ab448fe4112e6a2e0aff6eb3ac7', here + 'first one')\n  t.equal(b, '8d70d1b26433a7fdc007df91e114d4c9', here + 'capitals one')\n  t.ok(a != b, here + 'capitals-change')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/output/html.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/html] '\n\ntest('html-match', function (t) {\n  let doc = nlp(`match one two. one match two. one two match.`)\n  let html = doc.html({ i: 'match' })\n  t.equal(html, `<i>match</i> one two. one <i>match</i> two. one two <i>match</i>.`, here + 'html tag')\n\n  doc = nlp(`match one two. one match two.`)\n  html = doc.html({ '.foo': 'match' })\n  t.equal(html, `<span class=\"foo\">match</span> one two. one <span class=\"foo\">match</span> two.`, here + 'html class')\n\n  doc = nlp(`one match match two.`)\n  html = doc.html({ '#foo': 'match+' })\n  t.equal(html, `one <span id=\"foo\">match match</span> two.`, here + 'html id')\n\n  doc = nlp(`one match two.`)\n  html = doc.html({ '.red': 'match+', '.blue': doc.match('two') })\n  t.equal(html, `one <span class=\"red\">match</span> <span class=\"blue\">two</span>.`, here + 'html two classes')\n\n  doc = nlp(`if i can recall, my grey dog loves pizza crusts (they are really good).`)\n  html = doc.html({ '.red': 'my grey dog', '.blue': doc.match('loves') })\n  t.equal(\n    html,\n    `if i can recall, <span class=\"red\">my grey dog</span> <span class=\"blue\">loves</span> pizza crusts (they are really good).`,\n    here + 'html pre test'\n  )\n\n  t.end()\n})\n\ntest('html-nest', function (t) {\n  const doc = nlp(`one match two.`)\n  let html = doc.html({\n    i: 'match',\n    b: 'one match two',\n  })\n  t.equal(html, `<b>one <i>match</i> two</b>.`, here + 'easy nest')\n\n  html = doc.html({\n    b: 'match two',\n    i: 'match',\n  })\n  t.equal(html, `one <b><i>match</i> two</b>.`, here + 'hard nest')\n\n  // html = doc.html({\n  //   i: 'match',\n  //   b: 'match two',\n  // })\n  // t.equal(html, `one <b><i>match</i> two</b>.`, here + 'harder nest')\n\n  t.end()\n})\n\ntest('html-implicit', function (t) {\n  const doc = nlp(`he's cool`)\n  const out = doc.html({ '.foo': '#Verb' })\n  t.equal(out, `he's cool`, here + 'implict')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/pointers/complement.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/pointer-complement] '\n\ntest('pointer-complement-basic :', function (t) {\n  const doc = nlp('ooh. one two three four five six seven')\n\n  // start + end overlap\n  const m = doc.update([[1, 0, 4]])\n  const res = m.complement()\n  t.equal(res.text(), 'ooh. five six seven', here + 'complement-one')\n\n  t.end()\n})\n\ntest('complement-match :', function (t) {\n  const str = 'one match two three. four five match six'\n  const doc = nlp(str)\n\n  let res = doc.match('match .').complement()\n  t.deepEqual(res.out('array'), ['one', 'three.', 'four five'], here + 'compliment-multi')\n\n  res = doc.match('one match').complement()\n  t.deepEqual(res.text('machine'), 'two three. four five match six', here + 'compliment-start')\n\n  res = doc.eq(0).complement()\n  t.deepEqual(res.text(), 'four five match six', here + 'compliment-no-n')\n\n  res = doc.match('foo foo').complement()\n  t.deepEqual(res.text(), str, here + 'compliment-of-null')\n\n  res = doc.complement()\n  t.deepEqual(res.text(), '', here + 'compliment-of-all')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/pointers/difference.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/pointer-difference] '\n\ntest('pointer-difference-basic :', function (t) {\n  const doc = nlp('ooh. one two three four five six seven eight nine ten')\n\n  // not-at-start\n  let parent = doc.update([[1, 0, 8]])\n  let m = doc.update([[1, 0, 2]])\n  let res = parent.difference(m)\n  t.equal(res.text(), 'three four five six seven eight', here + 'not-at-start')\n\n  // not-in-middle\n  parent = doc.update([[1, 0, 8]])\n  m = doc.update([[1, 2, 4]])\n  res = parent.difference(m)\n  t.equal(res.text(), 'one two five six seven eight', here + 'not-in-middle')\n\n  // not-at-end\n  parent = doc.update([[1, 0, 8]])\n  m = doc.update([[1, 6, 8]])\n  res = parent.difference(m)\n  t.equal(res.text(), 'one two three four five six', here + 'not-at-start')\n\n  t.end()\n})\n\ntest('pointer-difference-match :', function (t) {\n  const doc = nlp('one match two three. four five match six')\n\n  const res = doc.match('match .').difference('. two')\n  t.deepEqual(res.out('array'), ['match six'], here + 'diff-full')\n\n  t.end()\n})\n\ntest('difference-multi :', function (t) {\n  const doc = nlp('i think spencer can walk')\n  const m = doc.match('(i|spencer)') //#Noun\n  const res = doc.difference(m)\n  t.deepEqual(res.out('array'), ['think', 'can walk'], here + 'difference multi')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/pointers/intersection.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/pointer-intersection] '\n\ntest('pointer-intersection-basic :', function (t) {\n  const doc = nlp('ooh. one two three four five six seven eight nine ten')\n  // [a,a,a,a,-,-,]\n  // [-,-,b,b,b,-,]\n  let start = doc.update([[1, 0, 4]])\n  let end = doc.update([[1, 2, 7]])\n  let res = start.intersection(end)\n  t.equal(res.text(), 'three four', here + 'intersection-simple')\n\n  // no-intersection\n  start = doc.update([[1, 0, 4]])\n  end = doc.update([[1, 5, 7]])\n  res = start.intersection(end)\n  t.equal(res.text(), '', here + 'intersection-none')\n\n  // no-sentence-intersection\n  start = doc.update([[0, 0, 1]])\n  end = doc.update([[1, 0, 7]])\n  res = start.intersection(end)\n  t.equal(res.text(), '', here + 'intersection-no-sentence')\n\n  // full-intersection\n  start = doc.update([[1, 1, 3]])\n  end = doc.update([[1, 1, 3]])\n  res = start.intersection(end)\n  t.equal(res.text(), 'two three', here + 'intersection-full')\n  t.end()\n})\n\ntest('pointer-intersection-match :', function (t) {\n  const doc = nlp('one match two three. four five match six')\n\n  let res = doc.intersection('match')\n  t.deepEqual(res.out('array'), ['match', 'match'], here + 'intersection-match')\n\n  res = doc.intersection('match .')\n  t.deepEqual(res.out('array'), ['match two', 'match six'], here + 'intersection-match-dot')\n\n  res = doc.intersection('match two')\n  t.deepEqual(res.out('array'), ['match two'], here + 'intersection-match-two')\n  t.end()\n})\n\ntest('intersection-match :', function (t) {\n  const doc = nlp('the boy and the girl')\n  const res = doc.intersection('(boy|girl)').out('array')\n  t.deepEqual(res, ['boy', 'girl'], 'only-intersection')\n  t.end()\n})\n\ntest('intersection-doc :', function (t) {\n  const doc = nlp('the boy and the girl')\n  const m = doc.match('(boy|girl)')\n  const res = doc.intersection(m).out('array')\n  t.deepEqual(res, ['boy', 'girl'], 'only-intersection-doc')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/pointers/union.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/pointer-union] '\n\ntest('pointer-union-basic :', function (t) {\n  const doc = nlp('ooh. one two three four five six seven eight nine ten')\n\n  // start + end overlap\n  let start = doc.update([[1, 0, 2]])\n  let end = doc.update([[1, 5, 7]])\n  let res = start.union(end)\n  t.equal(res.text(), 'one two six seven', here + 'union-simple')\n\n  start = doc.update([[0, 0, 1]])\n  end = doc.update([[1, 1, 4]])\n  res = start.union(end)\n  t.equal(res.text(), 'ooh. two three four', here + 'union-disjoint-n')\n\n  start = doc.update([[1, 0, 2]])\n  end = doc.update([[1, 6, 8]])\n  res = start.union(end)\n  t.equal(res.text(), 'one two seven eight', here + 'union-disjoint-same')\n\n  start = doc.update([[1, 1, 3]])\n  end = doc.update([[1, 2, 5]])\n  res = start.union(end)\n  t.equal(res.text(), 'two three four five', here + 'union-plus')\n\n  start = doc.update([[1, 1, 5]])\n  end = doc.update([[1, 2, 3]])\n  res = start.union(end)\n  t.equal(res.text(), 'two three four five', here + 'union-not-plus')\n\n  start = doc.update([[1, 0, 2]])\n  end = doc.update([[1, 2, 4]])\n  res = start.union(end)\n  t.equal(res.text(), 'one two three four', here + 'union-neighbour')\n\n  t.end()\n})\n\ntest('pointer-union-match :', function (t) {\n  const doc = nlp('one match two three. four five match six')\n\n  let m = doc.match('. two')\n  let res = doc.match('match .').union(m)\n  t.deepEqual(res.out('array'), ['match two', 'match six'], here + 'union-dupe')\n\n  m = doc.match('. six')\n  res = doc.match('match two').union(m)\n  t.deepEqual(res.out('array'), ['match two', 'match six'], here + 'union-match-disjoint')\n\n  m = doc.match('two three')\n  res = doc.match('match .').union(m)\n  t.deepEqual(res.out('array'), ['match two three.', 'match six'], here + 'union-match-overlap')\n\n  t.end()\n})\n\ntest('settle :', function (t) {\n  const doc = nlp('one two three four')\n  const a = doc.match('two three')\n  const b = doc.match('three four')\n  let res = a.concat(b)\n  t.equal(res.length, 2, here + 'has both')\n  res = res.settle()\n  t.equal(res.length, 1, here + 'settle has one')\n  t.equal(res.text(), 'two three four', here + 'settle')\n  t.end()\n})\n\ntest('settle-fancy :', function (t) {\n  const doc = nlp('one match two three. match five. six match. ')\n  const a = doc.match('match .')\n  const b = doc.match('five')\n  // let c = doc.match('six')\n  let res = a.concat(b) //.concat(c)\n  res = res.settle()\n  // t.equal(res.length, 1, here + 'settle has one')\n  t.equal(res.text(), 'match two match five', here + 'settle')\n  t.end()\n})\n\ntest('settle-neighbour :', function (t) {\n  const doc = nlp('one two three four five')\n  let res = doc.match('(two|four) (three|five)')\n  res = res.settle()\n  t.deepEqual(res.out('array'), ['two three', 'four five'], here + 'neighbour')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/tokenize/hyphen-matrix.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/hyphen-matrix] '\n\ntest('hyphen-input', (t) => {\n  const doc = nlp(`before follow-up after`)\n  t.equal(doc.has('follow-up'), true, here + 'hyphen -> follow-up')\n  t.equal(doc.has('follow up'), true, here + 'hyphen -> follow up')\n  t.equal(doc.has('followup'), false, here + 'hyphen -> followup')//would be nice\n  t.end()\n})\n\ntest('no-hyphen-input', (t) => {\n  const doc = nlp(`before follow up after`)\n  t.equal(doc.has('follow-up'), true, here + 'no-hyphen -> follow-up')\n  t.equal(doc.has('follow up'), true, here + 'no-hyphen ->follow up')\n  t.equal(doc.has('followup'), false, here + 'no-hyphen ->followup')\n  t.end()\n})\n\ntest('compound-hyphen-input', (t) => {\n  const doc = nlp(`before followup after`)\n  t.equal(doc.has('follow-up'), false, here + 'compound -> follow-up')//maybe?\n  t.equal(doc.has('follow up'), false, here + 'compound -> follow up')\n  t.equal(doc.has('followup'), true, here + 'compound -> followup')\n  t.end()\n})\n\n\n// ==================\n\ntest('hyphen-skipping', (t) => {\n  const doc = nlp(`before super-cool after`)\n  t.equal(doc.has('before super'), true, here + '[hyphen] before')\n  t.equal(doc.has('before super cool'), true, here + '[hyphen] before-mid')\n  t.equal(doc.has('cool after'), true, here + '[hyphen] after')\n  t.equal(doc.has('super cool after'), true, here + '[hyphen] after-mid')\n  // \n  t.equal(doc.has('before after'), false, here + '[hyphen] no-jump')\n  t.equal(doc.has('before super after'), false, here + '[hyphen] no-mid-jump')\n  t.equal(doc.has('before cool after'), false, here + '[hyphen] no-mid-2-jump')\n  t.end()\n})\n\n\ntest('match-dash', function (t) {\n  const arr = [\n    're-purpose',\n    'co-opting',\n    'mis-information',\n    'proto-plasmic',\n    'counter-argument',\n    'soft-sell',\n    'big-news',\n    'do-over',\n    'over-the-top',\n    'larger-than-life',\n    're-zoning-laws',\n    'inter-sectional',\n    'counter-argument',\n    're-purpose itself',\n    'full-enough tank',\n    'the size-difference',\n    'counter-balance',\n    'score was 10-2',\n    'Nobel Prize–winning',\n    'take-down ',\n    'the non-player-character',\n    'load-bearing walls',\n    'this clearly-impossible story',\n    'beautiful-looking flowers ',\n    'community-based education',\n    'Mother-in-law',\n    'Master-at-arms',\n    'Editor-in-chief',\n    'Ten-year-old',\n    'Factory-made',\n    'Twelve-pack',\n    'fifty-six bottles',\n    'a 10-minute speech',\n    'self-serve',\n    'non-sequitur'\n  ]\n  arr.forEach(str => {\n    t.equal(nlp(str).has(str), true, here + '[dash] ' + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/tokenize/hyphens.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/hyphens] '\n\ntest('nums-punctuation', function (t) {\n  const doc = nlp('10-ounce (12-ounce)')\n  t.equal(doc.terms().length, 4, here + 'w/ brackets')\n\n  // doc = nlp('2-for-1')\n  // t.equal(doc.terms().length, 3, here + 'w/ numbers')\n\n  t.end()\n})\n\ntest('independence', function (t) {\n  let doc\n  doc = nlp(`The 2015–2016 fiscal year`)\n  t.equal(doc.has('2015'), true, here + '2015')\n  t.equal(doc.has('2016'), true, here + '2016')\n  t.equal(doc.has('20152016'), false, here + 'combined-year')\n\n  doc = nlp(`the cable installation is 1:00–3:00pm.`)\n  t.equal(doc.has('1:00'), true, here + '1:00')\n  t.equal(doc.has('3:00pm'), true, here + '3:00pm')\n\n  doc = nlp(`pages 101–181 for tonight’s reading`)\n  t.equal(doc.has('101'), true, here + '101')\n  t.equal(doc.has('181'), true, here + '181')\n  t.equal(doc.has('181181'), false, here + 'combined-number')\n\n  doc = nlp(`The pro-choice movement`)\n  // t.equal(doc.has('pro'), true, here + 'pro')\n  // t.equal(doc.has('choice'), true, here + 'choice')\n  t.equal(doc.has('pro-choice'), true, here + 'pro-choice')\n  t.equal(doc.has('prochoice'), true, here + 'prochoice')\n  t.equal(doc.has('the pro movement'), false, here + 'pro movement')\n\n  doc = nlp('any load-bearing walls ')\n  t.equal(doc.has('load'), true, here + 'load')\n  t.equal(doc.has('bearing'), true, here + 'bearing')\n  t.equal(doc.has('load-bearing walls'), true, here + 'load-bearing')\n  // t.equal(doc.has('loadbearing'), true, here + 'loadbearing')\n  // t.equal(doc.has('loadbearing walls'), true, here + 'loadbearing walls')\n  t.equal(doc.has('load walls'), false, here + 'load walls')\n\n  doc = nlp('a half-baked idea')\n  t.equal(doc.has('half'), true, here + 'half')\n  t.equal(doc.has('baked'), true, here + 'baked')\n  t.equal(doc.has('half-baked idea'), true, here + 'half-baked')\n  t.equal(doc.has('half baked idea'), true, here + 'half baked')\n\n  doc = nlp('re-do and reuse')\n  t.equal(doc.has('redo'), true, here + 're- one word')\n  t.equal(doc.has('re-do'), true, here + 're- dashed word')\n  // t.equal(doc.has('re do'), true, here + 'two words')\n  t.equal(doc.has('re and'), false, here + 're and')\n\n  doc = nlp('inter-species communication')\n  t.equal(doc.has('interspecies'), true, here + 'inter one word')\n  t.equal(doc.has('inter-species'), true, here + 'inter dashed word')\n  // t.equal(doc.has('inter species'), true, here + 'inter two words')\n  t.equal(doc.has('interspecies communication'), true, here + 'interspecies communication')\n  t.equal(doc.has('inter communication'), false, here + 'inter communication')\n\n  // unsupported prefix\n  doc = nlp('the counter-argument')\n  // t.equal(doc.has('counterargument'), true, here + 'counter one word')\n  t.equal(doc.has('counter-argument'), true, here + 'counter dashed word')\n  t.equal(doc.has('counter argument'), true, here + 'counter two words')\n\n  doc = nlp(`additional non-urgent appointment.`)\n  const m = doc.match(`additional non? urgent? appointment`)\n  t.equal(m.found, true, here + 'non-urgent')\n  t.equal(doc.has('additional non'), true, here + 'additional non')\n  // t.equal(doc.has('additional nonurgent'), true, here + 'additional nonurgent')\n  t.equal(doc.has('additional non-urgent'), true, here + 'additional non-urgent')\n  t.equal(doc.has('additional urgent'), false, here + 'additional urgent')\n  t.equal(doc.has('additional appointment'), false, here + 'additional appointment')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/tokenize/punctuation.test.js",
    "content": "import test from 'tape'\nimport nlp from '../../two/_lib.js'\nconst here = '[one/term-punctuation] '\n\n\ntest('term punctuation', function (t) {\n  const arr = [\n    [`yeah??`, 'yeah'],\n    [`#canada`, 'canada'],\n    [`@canada`, 'canada'],\n    [`the  \"gouvernement\" party`, 'gouvernement'],\n    [`i guess... but`, 'guess'],\n    [`he did. (but barely)`, 'but barely'],\n    [`~word~`, 'word'],\n    [`'word'`, 'word'],\n    [`(word)`, 'word'],\n    [`([word])`, 'word'],\n    [`{word}`, 'word'],\n    [`-word-`, 'word'],\n    [`«‛“word〉`, 'word'],\n    [`'word'`, 'word'],\n    [`flanders'`, `flanders'`],\n    // [`_word_`, 'word'],\n  ]\n  arr.forEach(a => {\n    const [txt, match] = a\n    t.equal(nlp(txt).has(match), true, here + `\"${txt}\"`)\n  })\n  t.end()\n})\n\ntest('modify existing punctuation', function (t) {\n  const world = nlp.world()\n\n  let term = nlp('=cool=').docs[0][0]\n  t.equal(term.normal, 'cool', here + 'before')\n\n  // change it\n  world.model.one.prePunctuation['='] = true\n  term = nlp('=cool=').docs[0][0]\n  t.equal(term.normal, '=cool', here + 'allow before')\n\n  world.model.one.postPunctuation['='] = true\n  term = nlp('=cool=').docs[0][0]\n  t.equal(term.normal, '=cool=', here + 'both')\n\n  world.model.one.prePunctuation['='] = false\n  world.model.one.postPunctuation['='] = false\n  term = nlp('=cool=').docs[0][0]\n  t.equal(term.normal, 'cool', here + 'fixed')\n\n\n  t.end()\n})"
  },
  {
    "path": "tests/one/tokenize/sentence-split.test.js",
    "content": "import test from 'tape'\nimport nlp from '../../two/_lib.js'\nconst here = '[one/sentence-split] '\n\ntest('sentence tokenizer', function (t) {\n  const arr = [\n    [``, 0],\n    [`1`, 1],\n    [`&`, 1],\n    [`oh yeah??`, 1],\n    [`Sam Davis, Sr. (senior - the father)`, 1],\n    [`C.S. Lewis in N.Y.C?!`, 1],\n    [`1. Cherry tomatoes et al.`, 1],\n    [`see J. R. R. Tolkien in Jan. at booking.com arena! wear warm socks.`, 2],\n    [`Dr. Phil bid $5.00 on Jeopardy?`, 1],\n    [`so... did you finish your phd.. or  B.A.?`, 1],\n    [`Editing Inc. Alberta`, 1],\n    [`W. Kensington`, 1],\n    [`between 6 a.m. and 7 a.m.`, 1],\n    [`Our Father which art in Heaven...\\nsays the bible`, 2],\n    [`Our Father which art in Heaven\\nsays the bible`, 2],\n    // parentheses\n    // [`it fell out of the bag. (I wasn't fast enough.) Now it's on the floor.`, 3],\n    [`the scent of basil (my favorite).`, 1],\n    [`Your whole life (right? right?) might go smoothly this year.`, 1],\n    [`before. (inside word) and (inside). after`, 3],\n    [`before. (inside word?) and (inside!). after`, 3],\n    [`before. (the whole thing is inside). after`, 3],\n    // quotation wrapper\n    [`the doc said \"no sir\" and walked away. the end`, 2],\n    [`Kendal asked, “What time is it?”`, 1],\n    [`he famously asks, “Are you talkin’ to me?” and responds`, 1],\n    [`he famously asks, \"you talkin’ to me? you talkin to me?\" and responds`, 1],\n    [`\"You will be recruited to the Marines.\" said Prof. Turtle`, 1],\n    [`the doc said \"no sir. i will not beg\" and walked away. the end`, 2],\n    [`the novel is called \"Guards! Guards!\".`, 1],\n    [`start \"the. one two. three\" end`, 1],\n    [`start 'the. one two. three' end`, 3], //dont support single-quotes\n    // mis-matched examples\n    ['i thought \"no way! and he said \"yes way\".', 2], //\n    ['i thought (no way! and he said (yes)', 2], //\n    ['i thought (no way! and he said yes', 2],\n    ['(no way! and he said yes', 2],\n    ['\"no way! and he\\'s cool', 2],\n    // japanese\n    ['少年は店に向かった。 彼はパンを買った', 2],\n    // abbr with punctuation\n    [`12 mg. tumeric`, 1],\n    [`12 mg? tumeric`, 2],\n    [`12 mg! tumeric`, 2],\n  ]\n  arr.forEach(a => {\n    const [str, len] = a\n    t.equal(nlp(str).length, len, here + `\"${str}\"`)\n  })\n  t.end()\n})\n\ntest('em-dash, en-dash', function (t) {\n  // '-':  //dash\n  // '–':  //en-dash\n  // '—':  //em-dash\n  let doc = nlp('fun-time')\n  t.equal(doc.terms().length, 2, here + 'dash')\n  doc = nlp('fun–time')\n  t.equal(doc.terms().length, 2, here + 'en-dash')\n  doc = nlp('fun—time')\n  t.equal(doc.terms().length, 2, here + 'em-dash')\n\n  //not a full word, either\n  doc = nlp('fun - time')\n  t.equal(doc.terms().length, 2, here + 'dash-word')\n  doc = nlp('fun – time')\n  t.equal(doc.terms().length, 2, here + 'en-dash-word')\n  doc = nlp('fun — time')\n  t.equal(doc.terms().length, 2, here + 'em-dash-word')\n\n  //numeric forms are split, but contractions too\n  doc = nlp('20-20')\n  t.equal(doc.terms().length, 3, here + 'dash-num')\n  doc = nlp('20–20')\n  t.equal(doc.terms().length, 3, here + 'en-dash-num')\n  doc = nlp('20—20')\n  t.equal(doc.terms().length, 3, here + 'em-dash-num')\n\n  doc = nlp('79-years-old')\n  t.equal(doc.terms().length, 3, here + 'x-years-old')\n\n  t.end()\n})\n\ntest('emoji-only sentence', function (t) {\n  const doc = nlp('good night! 💋')\n  t.equal(doc.length, 2, here + 'boemojith sentence')\n  t.end()\n})\n\n\ntest('newline-seperated sentence', function (t) {\n  let one = `1\n\ntwo\n\nThree:`\n  let doc = nlp(one)\n  t.equal(doc.length, 3, here + 'first newline ')\n  let two = `10/10/2025\n\ntwo\n\nThree:`\n  doc = nlp(two)\n  t.equal(doc.length, 3, here + 'second newline sentence')\n\n  let three = `One\n\ntwo\n\nThree:`\n\n  doc = nlp(three)\n  t.equal(doc.length, 3, here + 'third newline sentence')\n  let four = `\nTo the window, to the wall below.\n_________________________________________________`\n  doc = nlp(four)\n  t.equal(doc.length, 1, here + 'underscore sentence')\n  t.end()\n})\n\ntest('nested quotes', function (t) {\n  let doc = nlp(`The hero was stunned by the scary monster. The glowing girl said \"Hey! Leave him alone!\".`)\n  t.equal(doc.length, 2, here + 'nested quote sentence')\n\n  doc = nlp(`foo bar. Before \"quote here\" and \"quote here\".`)\n  t.equal(doc.length, 2, here + '2 quote sentence')\n\n  doc = nlp(`foo bar. Before \"quote here?\" and \"quote here?\".`)\n  t.equal(doc.length, 2, here + '2 quotes with sentence')\n\n  doc = nlp(`Foo bar. Before \"quote here? and quote here?\". After`)\n  t.equal(doc.length, 3, here + '1 quotes with 2 sentences')\n\n  doc = nlp(`Foo bar. Before \"quote here? and quote here? also here!\". After`)\n  t.equal(doc.length, 3, here + '1 quotes with 3 sentences')\n  t.end()\n})\n"
  },
  {
    "path": "tests/one/tokenize/term-split.test.js",
    "content": "import test from 'tape'\nimport nlp from '../../two/_lib.js'\nconst here = '[one/term-split] '\n\n\ntest('term tokenizer', function (t) {\n  const arr = [\n    [``, 0],\n    [`1`, 1],\n    [`&`, 1],\n    [`*`, 1],\n    [`oh yeah??`, 2],\n    [`#canada #goose @gooseman`, 3],\n    [`the  \"gouvernement\" party`, 3],\n    [`the  «gouvernement»`, 2],\n    [`the  « gouvernement »`, 2],\n    [`i guess... but`, 3],\n    [`i guess ... but`, 3],\n    [`he did. (but barely)`, 4],\n    [`he did. ( but barely )`, 4],\n  ]\n  arr.forEach(a => {\n    const [str, len] = a\n    t.equal(nlp(str).terms().length, len, here + `\"${str}\"`)\n  })\n  t.end()\n})"
  },
  {
    "path": "tests/three/_lib.js",
    "content": "/* eslint-disable no-console */\nimport build from '../../builds/three/compromise-three.mjs'\nimport src from '../../src/three.js'\nlet nlp = src\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==')\n  nlp = build\n}\nexport default nlp\n"
  },
  {
    "path": "tests/three/acronym.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/acronym] '\n\ntest('acronyms', function (t) {\n  const doc = nlp(`mr. and Mrs. Smith are in the FBI and the c.i.a.`)\n  doc.acronyms().strip()\n  t.equal(doc.text(), 'mr. and Mrs. Smith are in the FBI and the cia', here + 'no-periods')\n\n  doc.acronyms().addPeriods().addPeriods().addPeriods().addPeriods()\n  t.equal(doc.text(), 'mr. and Mrs. Smith are in the F.B.I. and the c.i.a.', here + 'one-period')\n\n  t.end()\n})\n\ntest('acronyms-more', function (t) {\n  const doc = nlp('i work for the F.B.I. in Kansas.')\n  doc.acronyms().strip()\n  t.equal(doc.text(), 'i work for the FBI in Kansas.', here + 'strip-period')\n\n  doc.acronyms().addPeriods()\n  t.equal(doc.text(), 'i work for the F.B.I. in Kansas.', here + 'add-period')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/adjectives/adj-adv.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-toPresent] '\n\nconst arr = [\n  ['accidentally', 'accidental'],\n  ['accordingly', null],\n  ['admirably', 'admirable'],\n  ['admittedly', 'admitted'],\n  ['affectionately', 'affectionate'],\n  ['agilely', 'agile'],\n  ['agitatedly', 'agitated'],\n  ['amazingly', 'amazing'],\n  ['amiably', 'amiable'],\n  ['amusedly', 'amused'],\n  ['appreciably', 'appreciable'],\n  ['aptly', 'apt'],\n  ['arbitrarily', 'arbitrary'],\n  ['astonishingly', 'astonishing'],\n  ['astoundingly', 'astounding'],\n  ['automatically', 'automatic'],\n  ['awesomely', 'awesome'],\n  ['badly', 'bad'],\n  ['bashfully', 'bashful'],\n  ['beautifully', 'beautiful'],\n  ['boomingly', 'booming'],\n  ['bravely', 'brave'],\n  ['brightly', 'bright'],\n  ['brilliantly', 'brilliant'],\n  ['calmly', 'calm'],\n  ['carelessly', 'careless'],\n  ['celestially', 'celestial'],\n  ['cheaply', 'cheap'],\n  ['cheerfully', 'cheerful'],\n  ['classically', 'classical'],\n  ['confusedly', 'confused'],\n  ['conscientiously', 'conscientious'],\n  ['consummately', 'consummate'],\n  ['conversely', null],\n  ['courageously', 'courageous'],\n  ['cozily', 'cozy'],\n  ['creatively', 'creative'],\n  ['credibly', 'credible'],\n  ['critically', 'critical'],\n  ['cruelly', 'cruel'],\n  ['cynically', 'cynical'],\n  ['daily', null],\n  ['dazzlingly', 'dazzling'],\n  ['dearly', 'dear'],\n  ['deeply', 'deep'],\n  ['delightfully', 'delightful'],\n  ['desirably', 'desirable'],\n  ['desperately', 'desperate'],\n  ['deviously', 'devious'],\n  ['distinguishedly', 'distinguished'],\n  ['divinely', 'divine'],\n  ['dramatically', 'dramatic'],\n  ['dynamically', 'dynamic'],\n  ['eagerly', 'eager'],\n  ['early', null],\n  ['earnestly', 'earnest'],\n  ['ecologically', 'ecological'],\n  ['electronically', 'electronic'],\n  ['elegantly', 'elegant'],\n  ['eminently', 'eminent'],\n  ['emphatically', 'emphatic'],\n  ['environmentally', 'environmental'],\n  ['especially', null],\n  ['exaltedly', 'exalted'],\n  ['exceptionally', 'exceptional'],\n  ['expectantly', 'expectant'],\n  ['exponentially', 'exponential'],\n  ['exquisitely', 'exquisite'],\n  ['extravagantly', 'extravagant'],\n  ['exuberantly', 'exuberant'],\n  ['fabulously', 'fabulous'],\n  ['fadedly', 'faded'],\n  ['famously', 'famous'],\n  ['fancily', 'fancy'],\n  ['fantastically', 'fantastic'],\n  ['fascinatingly', 'fascinating'],\n  ['fastidiously', 'fastidious'],\n  ['fiercely', 'fierce'],\n  ['flashily', 'flashy'],\n  ['flawlessly', 'flawless'],\n  ['fleetingly', 'fleeting'],\n  ['foolishly', 'foolish'],\n  ['forsakenly', 'forsaken'],\n  ['fragrantly', 'fragrant'],\n  ['frivolously', 'frivolous'],\n  ['fully', 'full'],\n  ['funnily', 'funny'],\n  ['furiously', 'furious'],\n  ['fuzzily', 'fuzzy'],\n  ['generously', 'generous'],\n  ['genetically', 'genetic'],\n  ['gently', 'gentle'],\n  ['glitteringly', 'glittering'],\n  ['globally', 'global'],\n  ['gloriously', 'glorious'],\n  ['gorgeously', 'gorgeous'],\n  ['grandiosely', 'grandiose'],\n  ['grandly', 'grand'],\n  ['grievingly', 'grieving'],\n  ['grimily', 'grimy'],\n  ['grumpily', 'grumpy'],\n  ['hallowedly', 'hallowed'],\n  ['harshly', 'harsh'],\n  ['humbly', 'humble'],\n  ['humorously', 'humorous'],\n  ['icily', 'icy'],\n  ['idly', 'idle'],\n  ['illustriously', 'illustrious'],\n  ['imperfectly', 'imperfect'],\n  ['impressively', 'impressive'],\n  ['incomparably', 'incomparable'],\n  ['incredibly', 'incredible'],\n  ['inextricably', 'inextricable'],\n  ['infamously', 'infamous'],\n  ['innocently', 'innocent'],\n  ['insultingly', 'insulting'],\n  ['invariably', 'invariable'],\n  ['ironically', 'ironic'],\n  ['irritably', 'irritable'],\n  ['jealously', 'jealous'],\n  ['keenly', 'keen'],\n  ['lavishly', 'lavish'],\n  ['lazily', 'lazy'],\n  ['legally', 'legal'],\n  ['leggily', 'leggy'],\n  ['limpidly', 'limpid'],\n  ['locally', 'local'],\n  ['loftily', 'lofty'],\n  ['loudly', 'loud'],\n  ['luxuriously', 'luxurious'],\n  ['magnanimously', 'magnanimous'],\n  ['magnificently', 'magnificent'],\n  ['majestically', 'majestic'],\n  ['mammothly', 'mammoth'],\n  ['marvelously', 'marvelous'],\n  ['mathematically', 'mathematical'],\n  ['maturely', 'mature'],\n  ['mechanically', 'mechanical'],\n  ['methodically', 'methodical'],\n  ['miraculously', 'miraculous'],\n  ['miserably', 'miserable'],\n  ['mistakenly', 'mistaken'],\n  ['monumentally', 'monumental'],\n  ['moodily', 'moody'],\n  ['morally', 'moral'],\n  ['mostly', null],\n  ['mysteriously', 'mysterious'],\n  ['namely', null],\n  ['nervously', 'nervous'],\n  ['nomadically', 'nomadic'],\n  ['notably', 'notable'],\n  ['obediently', 'obedient'],\n  ['omnipotently', 'omnipotent'],\n  ['only', null],\n  ['oreintally', 'oreintal'],\n  ['originally', 'original'],\n  ['outstandingly', 'outstanding'],\n  ['painfully', 'painful'],\n  ['palatially', 'palatial'],\n  ['partly', 'part'],\n  ['patiently', 'patient'],\n  ['peerlessly', 'peerless'],\n  ['perceptibly', 'perceptible'],\n  ['perfectly', 'perfect'],\n  ['phenomenally', 'phenomenal'],\n  ['physically', 'physical'],\n  ['pluckily', 'plucky'],\n  ['plushly', 'plush'],\n  ['politically', 'political'],\n  ['portentously', 'portentous'],\n  ['potently', 'potent'],\n  ['practically', 'practical'],\n  ['praiseworthily', 'praiseworthy'],\n  ['principally', 'principal'],\n  ['prodigiously', 'prodigious'],\n  ['profoundly', 'profound'],\n  ['provocatively', 'provocative'],\n  ['publicly', 'public'],\n  ['quickly', 'quick'],\n  ['quintessentially', 'quintessential'],\n  ['rarely', 'rare'],\n  ['remarkably', 'remarkable'],\n  ['remotely', 'remote'],\n  ['repulsively', 'repulsive'],\n  ['resplendently', 'resplendent'],\n  ['responsibly', 'responsible'],\n  ['richly', 'rich'],\n  ['ritzily', 'ritzy'],\n  ['romantically', 'romantic'],\n  ['roomily', 'roomy'],\n  ['rosily', 'rosy'],\n  ['roundly', 'round'],\n  ['rudely', 'rude'],\n  ['safely', 'safe'],\n  ['saintly', null],\n  ['saltily', 'salty'],\n  ['savvily', 'savvy'],\n  ['scarcely', 'scarce'],\n  ['scaredly', 'scared'],\n  ['scarily', 'scary'],\n  ['seemingly', 'seeming'],\n  ['sensationally', 'sensational'],\n  ['severely', 'severe'],\n  ['sharply', 'sharp'],\n  ['shily', 'shy'],\n  ['shrewdly', 'shrewd'],\n  ['simply', 'simple'],\n  ['singly', 'single'],\n  ['singularly', 'singular'],\n  ['sleekly', 'sleek'],\n  ['sloppily', 'sloppy'],\n  ['snazzily', 'snazzy'],\n  ['sneakily', 'sneaky'],\n  ['soaringly', 'soaring'],\n  ['sorrowfully', 'sorrowful'],\n  ['splendidly', 'splendid'],\n  ['splendiferously', 'splendiferous'],\n  ['statistically', 'statistical'],\n  ['strikingly', 'striking'],\n  ['strongly', 'strong'],\n  ['stupendously', 'stupendous'],\n  ['stupidly', 'stupid'],\n  ['sublimely', 'sublime'],\n  ['succinctly', 'succinct'],\n  ['succulently', 'succulent'],\n  ['superbly', 'superb'],\n  ['superiorly', 'superior'],\n  ['superlatively', 'superlative'],\n  ['superly', 'super'],\n  ['systematically', 'systematic'],\n  ['systemically', 'systemic'],\n  ['talentedly', 'talented'],\n  ['tallly', 'tall'],\n  ['tastefully', 'tasteful'],\n  ['technically', 'technical'],\n  ['technologically', 'technological'],\n  ['tenderly', 'tender'],\n  ['tenuously', 'tenuous'],\n  ['terrifically', 'terrific'],\n  ['theoretically', 'theoretical'],\n  ['thinly', 'thin'],\n  ['tidily', 'tidy'],\n  ['toughly', 'tough'],\n  ['trustworthily', 'trustworthy'],\n  ['typically', 'typical'],\n  ['unduly', null],\n  ['unprecedentedly', 'unprecedented'],\n  ['unquestionably', 'unquestionable'],\n  ['unrivaledly', 'unrivaled'],\n  ['vaguely', 'vague'],\n  ['vapidly', 'vapid'],\n  ['vertically', 'vertical'],\n  ['vivaciously', 'vivacious'],\n  ['voguishly', 'voguish'],\n  ['warmly', 'warm'],\n  ['wholly', 'whole'],\n  ['wondrously', 'wondrous'],\n  ['worthlessly', 'worthless'],\n  ['zealously', 'zealous'],\n  // ['prettyly', 'pretty'],\n  // ['especially', 'special'],\n  // ['lonlely', 'lonely'],\n  // ['manly', 'male'],\n  // ['uglily', 'ugly'],\n  // ['well', 'good'],\n  // ['', ''],\n]\n\ntest('toAdjective:', function (t) {\n  arr.forEach(a => {\n    const doc = nlp(a[0]).compute('root')\n    const json = doc.adverbs().json()[0] || { terms: [{}] }\n    t.equal(json.terms[0].root || null, a[1], here + '[ToAdjective] ' + a[0])\n  })\n  t.end()\n})\n\ntest('toAdverb:', function (t) {\n  const toAdverb = nlp().methods.two.transform.adjective.toAdverb\n  arr.forEach(a => {\n    if (a[1]) {\n      t.equal(toAdverb(a[1]), a[0], here + ` [ToAdverb] ${a[1]}`)\n    }\n    // let doc = nlp(a[1]).compute('root')\n    // let json = doc.adjectives().json()[0] || { terms: [{}] }\n    // t.equal(json.terms[0].root || null, a[1], here + ' ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/adjectives/adj-noun.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/adj-noun] '\n\nconst arr = [\n  ['abject', 'abjection'],\n  ['abstemious', 'abstemiousness'],\n  ['abundant', 'abundance'],\n  ['accomplished', 'accomplishment'],\n  ['accurate', 'accuracy'],\n  ['active', 'activity'],\n  ['adamant', 'adamance'],\n  ['adaptable', 'adaptability'],\n  ['addictive', 'addiction'],\n  ['admirable', 'admiration'],\n  ['adventurous', 'adventurousness'],\n  ['affectionate', 'affection'],\n  ['aggressive', 'aggression'],\n  ['agile', 'agility'],\n  ['agitated', 'agitation'],\n  ['alert', 'alertness'],\n  ['aloof', 'aloofness'],\n  ['amazed', 'amazement'],\n  ['ambitious', 'ambition'],\n  ['amiable', 'amiability'],\n  ['amicable', 'amicability'],\n  ['amorous', 'amorousness'],\n  ['ample', 'ampleness'],\n  ['amused', 'amusement'],\n  ['ancient', 'antiquity'],\n  ['apprehensive', 'apprehensiveness'],\n  ['ardent', 'ardor'],\n  ['argumentative', 'argumentativeness'],\n  ['articulate', 'articulacy'],\n  ['artistic', 'art'],\n  ['assertive', 'assertiveness'],\n  ['astute', 'astuteness'],\n  ['attractive', 'attractiveness'],\n  ['audacious', 'audacity'],\n  ['austere', 'austerity'],\n  ['authentic', 'authenticity'],\n  ['automatic', 'automation'],\n  ['bad', 'badness'],\n  ['beautiful', 'beauty'],\n  ['benevolent', 'benevolence'],\n  ['bold', 'boldness'],\n  ['boring', 'boredom'],\n  ['brave', 'bravery'],\n  ['bright', 'brightness'],\n  ['busy', 'business'],\n  ['calm', 'calmness'],\n  ['cantankerous', 'cantankerousness'],\n  ['careful', 'carefulness'],\n  ['caring', 'care'],\n  ['cautious', 'caution'],\n  ['certain', 'certainty'],\n  ['charismatic', 'charisma'],\n  ['cheap', 'cheapness'],\n  ['cheerful', 'cheerfulness'],\n  ['circumspect', 'circumspection'],\n  ['clean', 'cleanliness'],\n  ['clear', 'clarity'],\n\n  ['clever', 'cleverness'],\n  ['cold', 'coldness'],\n  ['comfortable', 'comfort'],\n  ['compassionate', 'compassion'],\n  ['compatible', 'compatibility'],\n  ['competent', 'competency'],\n  ['concise', 'conciseness'],\n  ['condescending', 'condescension'],\n  ['confident', 'confidence'],\n  ['congenial', 'congeniality'],\n  ['conscientious', 'conscientiousness'],\n  ['contemptuous', 'contemptuousness'],\n  ['cooperative', 'cooperation'],\n  ['courageous', 'courage'],\n  ['courteous', 'courtesy'],\n  ['coy', 'coyness'],\n  ['creative', 'creativity'],\n  ['credible', 'credibility'],\n  ['curious', 'curiosity'],\n  ['dark', 'darkness'],\n  ['decisive', 'decisiveness'],\n  ['dedicated', 'dedication'],\n  ['deep', 'depth'],\n  ['deliberate', 'deliberation'],\n  ['delicate', 'delicacy'],\n  ['delightful', 'delight'],\n  ['dependable', 'dependability'],\n  ['desperate', 'desperation'],\n  ['determined', 'determination'],\n  ['devoted', 'devotion'],\n  ['diffident', 'diffidence'],\n  ['diligent', 'diligence'],\n  ['dirty', 'dirtiness'],\n  ['disciplined', 'discipline'],\n  ['discreet', 'discretion'],\n  ['doleful', 'dolefulness'],\n  ['dramatic', 'drama'],\n  ['dull', 'dullness'],\n  ['dynamic', 'dynamism'],\n  ['eager', 'eagerness'],\n  ['educated', 'education'],\n  ['efficient', 'efficiency'],\n  ['elegant', 'elegance'],\n  ['eloquent', 'eloquence'],\n  ['empathetic', 'empathy'],\n  ['empty', 'emptiness'],\n  ['enduring', 'endurance'],\n  ['energetic', 'energy'],\n  ['engaging', 'engagement'],\n  ['enough', 'enoughness'],\n  ['enthusiastic', 'enthusiasm'],\n  ['excellent', 'excellence'],\n  ['exemplary', 'exemplariness'],\n  ['expedient', 'expedience'],\n  ['expensive', 'expense'],\n  ['experienced', 'experience'],\n  ['explosive', 'explosiveness'],\n  ['expressive', 'expressiveness'],\n  ['facetious', 'facetiousness'],\n  ['fanciful', 'fancifulness'],\n  ['fantastic', 'fantasy'],\n  ['fast', 'fastness'],\n  ['fatuous', 'fatuousness'],\n  ['fearless', 'fearlessness'],\n  ['fertile', 'fertility'],\n  ['fervent', 'fervor'],\n  ['fierce', 'fierceness'],\n  ['flawless', 'flawlessness'],\n  ['flexible', 'flexibility'],\n  ['flowing', 'flow'],\n  ['focused', 'focus'],\n  ['forceful', 'force'],\n  ['forgiving', 'forgiveness'],\n  ['fortunate', 'fortune'],\n  ['fragrant', 'fragrance'],\n  ['frank', 'frankness'],\n  ['free', 'freedom'],\n  ['friendly', 'friendliness'],\n  ['frivolous', 'frivolity'],\n  ['frugal', 'frugality'],\n  ['full', 'fullness'],\n  ['funny', 'funniness'],\n  ['furious', 'fury'],\n  ['furry', 'furriness'],\n  ['furtive', 'furtiveness'],\n  ['gaudy', 'gaudiness'],\n  ['gay', 'gayness'],\n  ['generous', 'generosity'],\n  ['gentle', 'gentleness'],\n  ['ghastly', 'ghastliness'],\n  ['glamorous', 'glamour'],\n  ['glaring', 'glare'],\n  ['glowing', 'glow'],\n  ['good', 'goodness'],\n  ['graceful', 'grace'],\n  ['gracious', 'graciousness'],\n  ['guileless', 'guilelessness'],\n  ['gullible', 'gullibility'],\n  ['hard', 'hardness'],\n  ['hardworking', 'hardwork'],\n  ['harried', 'harriedness'],\n  ['harsh', 'harshness'],\n  ['hazardous', 'hazard'],\n  ['heavy', 'heaviness'],\n  ['heroic', 'heroism'],\n  ['hoary', 'hoariness'],\n  ['honest', 'honesty'],\n  ['hopeful', 'hopefulness'],\n  ['hospitable', 'hospitality'],\n  ['hot', 'heat'],\n  ['huge', 'hugeness'],\n  ['humble', 'humility'],\n  ['humorous', 'humor'],\n  ['iffy', 'iffiness'],\n  ['imaginative', 'imagination'],\n  ['impartial', 'impartiality'],\n  ['imperfect', 'imperfection'],\n  ['imperious', 'imperiousness'],\n  ['imperturbable', 'imperturbability'],\n  ['implacable', 'implacability'],\n  ['impossible', 'impossibility'],\n  ['impressive', 'impressiveness'],\n  ['impulsive', 'impulsiveness'],\n  ['inane', 'inanity'],\n  ['independent', 'independence'],\n  ['indolent', 'indolence'],\n  ['industrious', 'industry'],\n  ['ineluctable', 'ineluctability'],\n  ['inept', 'ineptitude'],\n  ['inimitable', 'inimitability'],\n  ['innovative', 'innovation'],\n  ['inquisitive', 'inquisitiveness'],\n  ['insightful', 'insight'],\n  ['inspiring', 'inspiration'],\n  ['intelligent', 'intelligence'],\n  ['intemperate', 'intemperance'],\n  ['intrepid', 'intrepidity'],\n  ['intuitive', 'intuition'],\n  ['inventive', 'inventiveness'],\n  ['ironic', 'irony'],\n  ['jittery', 'jitteriness'],\n  ['jovial', 'joviality'],\n  // ['joyful', 'joy'],\n  // ['joyous', 'joy'],\n  ['keen', 'keenness'],\n  ['kind', 'kindness'],\n  ['knowledgeable', 'knowledge'],\n  ['laconic', 'laconicism'],\n  ['lavish', 'lavishness'],\n  ['lazy', 'laziness'],\n  ['legal', 'legality'],\n  ['liberal', 'liberality'],\n  ['light', 'lightness'],\n  ['lively', 'liveliness'],\n  ['lofty', 'loftiness'],\n  ['long', 'length'],\n  ['loquacious', 'loquaciousness'],\n  ['lost', 'loss'],\n  ['loud', 'loudness'],\n  ['loving', 'love'],\n  ['loyal', 'loyalty'],\n  ['lucid', 'lucidity'],\n  ['luminous', 'luminosity'],\n  ['lush', 'lushness'],\n  ['luxurious', 'luxury'],\n  ['magical', 'magic'],\n  ['magnanimous', 'magnanimity'],\n  ['majestic', 'majesty'],\n  ['mature', 'maturity'],\n  ['maverick', 'maverickness'],\n  ['mawkish', 'mawkishness'],\n  ['melodic', 'melody'],\n  ['meticulous', 'meticulousness'],\n  ['mighty', 'mightiness'],\n  ['modest', 'modesty'],\n  ['moist', 'moistness'],\n  ['momentous', 'momentousness'],\n  ['motivated', 'motivation'],\n  ['mundane', 'mundanity'],\n  ['musical', 'music'],\n  ['mysterious', 'mystery'],\n  ['mystical', 'mysticism'],\n  ['naive', 'naivety'],\n  ['narcissistic', 'narcissism'],\n  ['narrow', 'narrowness'],\n  ['naughty', 'naughtiness'],\n  ['nervous', 'nervousness'],\n  ['noble', 'nobility'],\n  ['nonchalant', 'nonchalance'],\n  ['nurturing', 'nurturance'],\n  ['obedient', 'obedience'],\n  ['oblivious', 'obliviousness'],\n  ['observant', 'observation'],\n  ['offensive', 'offence'],\n  ['offhand', 'offhandedness'],\n  ['ominous', 'ominousness'],\n  // ['open-minded', 'open-mindedness'],\n  ['optimistic', 'optimism'],\n  ['organized', 'organization'],\n  ['orotund', 'orotundity'],\n  ['ostentatious', 'ostentatiousness'],\n  ['outgoing', 'outgoingness'],\n  ['pacifist', 'pacifism'],\n  ['passionate', 'passion'],\n  ['patient', 'patience'],\n  ['pedantic', 'pedantry'],\n  ['peerless', 'peerlessness'],\n  ['perceptive', 'perception'],\n  ['perfect', 'perfection'],\n  ['persistent', 'persistence'],\n  ['personal', 'personality'],\n  ['persuasive', 'persuasion'],\n  ['physical', 'physicality'],\n  ['placid', 'placidity'],\n  ['playful', 'playfulness'],\n  ['pleasant', 'pleasantness'],\n  ['pliant', 'pliancy'],\n  ['poignant', 'poignancy'],\n  ['poised', 'poise'],\n  ['polite', 'politeness'],\n  ['poor', 'poverty'],\n  ['popular', 'popularity'],\n  ['positive', 'positivity'],\n  ['possessive', 'possession'],\n  ['powerful', 'power'],\n  ['practical', 'practicality'],\n  ['pragmatic', 'pragmatism'],\n  ['present', 'presence'],\n  ['proactive', 'proactivity'],\n  ['prodigious', 'prodigiousness'],\n  ['professional', 'professionalism'],\n  ['proficient', 'proficiency'],\n  ['proportionate', 'proportion'],\n  ['protective', 'protection'],\n  ['prudent', 'prudence'],\n  ['punctual', 'punctuality'],\n  ['purposeful', 'purpose'],\n  ['querulous', 'querulousness'],\n  // ['quick-witted', 'quick-wittedness'],\n  ['quick', 'quickness'],\n  // ['quiet', 'quiet'],\n  ['quixotic', 'quixoticism'],\n  ['radiant', 'radiance'],\n  ['rampant', 'rampantness'],\n  ['random', 'randomness'],\n  ['rapacious', 'rapaciousness'],\n  ['ravishing', 'ravishingness'],\n  ['ready', 'readiness'],\n  ['realistic', 'realism'],\n  ['reasonable', 'reasonableness'],\n  ['receptive', 'receptiveness'],\n  ['recondite', 'reconditeness'],\n  ['red', 'redness'],\n  ['refined', 'refinement'],\n  ['relentless', 'relentlessness'],\n  ['reliable', 'reliability'],\n  ['reprobate', 'reprobacy'],\n  ['resilient', 'resilience'],\n  // ['resolute', 'resolution'],\n  ['resourceful', 'resourcefulness'],\n  ['respectable', 'respect'],\n  ['respectful', 'respect'],\n  ['responsible', 'responsibility'],\n  ['reverent', 'reverence'],\n  ['rich', 'richness'],\n  ['riotous', 'riotousness'],\n  ['ripe', 'ripeness'],\n  ['risible', 'risibility'],\n  ['romantic', 'romance'],\n  ['rough', 'roughness'],\n  ['round', 'roundness'],\n  ['sad', 'sadness'],\n  ['salubrious', 'salubriousness'],\n  ['scrupulous', 'scrupulousness'],\n  ['scurrilous', 'scurrility'],\n  ['seditious', 'seditiousness'],\n  // ['self-assured', 'self-assurance'],\n  // ['self-disciplined', 'self-discipline'],\n  ['selfless', 'selflessness'],\n  ['sensible', 'sensibility'],\n  ['sensitive', 'sensitivity'],\n  ['serene', 'serenity'],\n  ['serious', 'seriousness'],\n  ['sharp', 'sharpness'],\n  ['shining', 'shininess'],\n  ['short', 'shortness'],\n  ['silent', 'silence'],\n  ['simple', 'simplicity'],\n  ['sincere', 'sincerity'],\n  ['sinister', 'sinisterness'],\n  ['skillful', 'skill'],\n  ['slippery', 'slipperiness'],\n  ['slow', 'slowness'],\n  ['smooth', 'smoothness'],\n  ['soft', 'softness'],\n  ['solid', 'solidity'],\n  ['soothing', 'soothingness'],\n  ['sour', 'sourness'],\n  ['specious', 'speciousness'],\n  ['spiritual', 'spirituality'],\n  ['spontaneous', 'spontaneity'],\n  ['sporadic', 'sporadicness'],\n  ['spurious', 'spuriousness'],\n  ['stalwart', 'stalwartness'],\n  ['stern', 'sternness'],\n  ['straight', 'straightness'],\n  ['strategic', 'strategy'],\n  ['strict', 'strictness'],\n  ['strong', 'strength'],\n  ['stubborn', 'stubbornness'],\n  ['sturdy', 'sturdiness'],\n  ['sublime', 'sublimity'],\n  ['subservient', 'subservience'],\n  ['subtle', 'subtleties'],\n  ['successful', 'success'],\n  ['superficial', 'superficiality'],\n  ['supportive', 'support'],\n  ['suspicious', 'suspicion'],\n  ['sweet', 'sweetness'],\n  ['swift', 'swiftness'],\n  ['sympathetic', 'sympathy'],\n  ['tactful', 'tact'],\n  ['talented', 'talent'],\n  ['tall', 'tallness'],\n  ['tame', 'tameness'],\n  ['tart', 'tartness'],\n  ['tawdry', 'tawdriness'],\n  ['tenacious', 'tenacity'],\n  ['tender', 'tenderness'],\n  ['tense', 'tenseness'],\n  ['tenuous', 'tenuousness'],\n  ['thin', 'thinness'],\n  ['thirsty', 'thirstiness'],\n  ['thorny', 'thorniness'],\n  ['thorough', 'thoroughness'],\n  ['thoughtful', 'thoughtfulness'],\n  ['tidy', 'tidiness'],\n  ['timely', 'timeliness'],\n  ['timid', 'timidity'],\n  ['timorous', 'timorousness'],\n  ['tiny', 'tininess'],\n  ['tired', 'tiredness'],\n  ['tireless', 'tirelessness'],\n  ['tolerant', 'tolerance'],\n  ['tough', 'toughness'],\n  ['trenchant', 'trenchancy'],\n  ['trusting', 'trust'],\n  ['trustworthy', 'trustworthiness'],\n  ['tumultuous', 'tumult'],\n  ['ubiquitous', 'ubiquitousness'],\n  ['unctuous', 'unctuousness'],\n  ['understanding', 'understanding'],\n  ['unflappable', 'unflappability'],\n  ['unique', 'uniqueness'],\n  ['unyielding', 'unyieldingness'],\n  ['vagrant', 'vagrancy'],\n  ['valuable', 'value'],\n  ['vapid', 'vapidity'],\n  ['venerable', 'venerability'],\n  ['versatile', 'versatility'],\n  ['vertical', 'verticality'],\n  ['vibrant', 'vibrancy'],\n  ['vigilant', 'vigilance'],\n  ['vigorous', 'vigor'],\n  ['vivacious', 'vivacity'],\n  ['vixenish', 'vixenishness'],\n  ['volatile', 'volatility'],\n  ['volumous', 'voluminousness'],\n  ['vulnerable', 'vulnerability'],\n  ['wanton', 'wantonness'],\n  ['warm', 'warmth'],\n  ['weak', 'weakness'],\n  ['whimsical', 'whimsicalness'],\n  ['wide', 'wideness'],\n  ['wily', 'wiliness'],\n  ['wise', 'wisdom'],\n  ['wistful', 'wistfulness'],\n  ['witty', 'wit'],\n  ['woebegone', 'woefulness'],\n  ['yielding', 'yieldingness'],\n  ['young', 'youth'],\n  ['zany', 'zaniness'],\n  ['zealous', 'zeal'],\n]\n\ntest('toNoun:', function (t) {\n  // let { toNoun } = nlp().methods.two.transform.adjective\n  arr.forEach(a => {\n    const [adj, noun] = a\n    // t.ok(nlp(noun).has('#Noun'), here + noun)\n    // t.ok(nlp(adj).has('#Adjective'), here + adj)\n    const res = nlp(adj).tag('Adjective').adjectives().conjugate()[0] || {}\n    // let res = toNoun(adj)\n    t.equal(res.Noun, noun, here + ` [${adj}, ${noun}]`)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/adjectives/adjectives.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/adjectives] '\n\ntest('adjectives misc', function (t) {\n\n  const doc = nlp('he is so clear')\n  const json = doc.adjectives().json()\n  t.equal(json.length, 1, here + 'adj')\n  t.equal(json[0].adjective.adverb, 'clearly', here + 'adv')\n  t.equal(json[0].adjective.noun, 'clarity', here + 'noun')\n  t.equal(json[0].adjective.superlative, 'clearest', here + 'super')\n  t.equal(json[0].adjective.comparative, 'clearer', here + 'comp')\n\n  t.end()\n})\n\n\ntest('pessimistic conjugation', function (t) {\n\n  const res = nlp('hairy').adjectives().conjugate()[0] || {}\n  t.equal(res.Comparative, 'hairier', here + 'comp')\n  t.equal(res.Superlative, 'hairiest', here + 'sup')\n  // t.ok(!res.Adverb, here + 'no advb')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/adjectives/comparative.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/adj-comparative] '\n\ntest('toComparative misc', function (t) {\n  let doc = nlp('he is really cool')\n  doc.adjectives().toComparative()\n  t.equal(doc.text(), 'he is really cooler', here + 'really cool')\n\n  doc = nlp('he is simply cooler')\n  doc.adjectives().toComparative()\n  t.equal(doc.text(), 'he is simply cooler', here + 'simply cooler')\n\n  doc = nlp('he is simply the coolest')\n  doc.adjectives().toComparative()\n  t.equal(doc.text(), 'he is simply the cooler', here + 'simply coolest')\n\n  t.end()\n})\n\n\ntest('.toComparative():', function (t) {\n  const arr = [\n    [\"high\", \"higher\"],\n    [\"great\", \"greater\"],\n    [\"further\", \"further\"],\n    [\"good\", \"better\"],\n    [\"low\", \"lower\"],\n    [\"large\", \"larger\"],\n    [\"small\", \"smaller\"],\n    [\"old\", \"older\"],\n    [\"broad\", \"broader\"],\n    [\"strong\", \"stronger\"],\n    // [\"few\", \"fewer\"],\n    [\"long\", \"longer\"],\n    [\"easy\", \"easier\"],\n    [\"early\", \"earlier\"],\n    [\"lesser\", \"lesser\"],\n    [\"wide\", \"wider\"],\n    [\"young\", \"younger\"],\n    [\"late\", \"later\"],\n    // [\"close\", \"closer\"],\n    [\"short\", \"shorter\"],\n    [\"fast\", \"faster\"],\n    [\"slow\", \"slower\"],\n    [\"clear\", \"clearer\"],\n    [\"weak\", \"weaker\"],\n    [\"safe\", \"safer\"],\n    [\"new\", \"newer\"],\n    [\"healthy\", \"healthier\"],\n    [\"big\", \"bigger\"],\n    [\"bad\", \"worse\"],\n    [\"lame\", \"lamer\"],\n    [\"large\", \"larger\"],\n    [\"late\", \"later\"],\n    [\"lewd\", \"lewder\"],\n    [\"likely\", \"likelier\"],\n    [\"little\", \"littler\"],\n    [\"lively\", \"livelier\"],\n    [\"lofty\", \"loftier\"],\n    [\"soft\", \"softer\"],\n    [\"steep\", \"steeper\"],\n    [\"stiff\", \"stiffer\"],\n    ['angry', 'angrier'],\n    ['bad', 'worse'],\n    ['bald', 'balder'],\n    ['bawdy', 'bawdier'],\n    ['big', 'bigger'],\n    ['black', 'blacker'],\n    ['bland', 'blander'],\n    ['blond', 'blonder'],\n    ['bloody', 'bloodier'],\n    ['blue', 'bluer'],\n    ['bold', 'bolder'],\n    ['bored', 'boreder'],\n    ['boring', 'boringer'],\n    ['bouncy', 'bouncier'],\n    ['brash', 'brasher'],\n    ['brave', 'braver'],\n    ['brief', 'briefer'],\n    ['bright', 'brighter'],\n    ['broad', 'broader'],\n    ['buff', 'buffer'],\n    ['burly', 'burlier'],\n    ['busy', 'busier'],\n    ['calm', 'calmer'],\n    ['camp', 'camper'],\n    ['catchy', 'catchier'],\n    ['cheap', 'cheaper'],\n    ['cheesy', 'cheesier'],\n    ['chilly', 'chillier'],\n    ['clean', 'cleaner'],\n    ['clear', 'clearer'],\n    ['clever', 'cleverer'],\n    ['close', 'closer'],\n    ['cloudy', 'cloudier'],\n    ['clumsy', 'clumsier'],\n    ['coarse', 'coarser'],\n    ['cold', 'colder'],\n    ['cool', 'cooler'],\n    ['costly', 'costlier'],\n    ['cozy', 'cozier'],\n    ['crazy', 'crazier'],\n    ['crisp', 'crisper'],\n    ['cruel', 'crueler'],\n    ['cuddly', 'cuddlier'],\n    ['curly', 'curlier'],\n    ['cute', 'cuter'],\n    ['damp', 'damper'],\n    ['dark', 'darker'],\n    ['deadly', 'deadlier'],\n    ['dear', 'dearer'],\n    ['deep', 'deeper'],\n    ['dense', 'denser'],\n    ['diffuse', 'diffuser'],\n    ['dim', 'dimmer'],\n    ['dire', 'direr'],\n    ['dirty', 'dirtier'],\n    ['divine', 'diviner'],\n    ['drunk', 'drunker'],\n    ['dry', 'drier'],\n    ['dull', 'duller'],\n    ['dumb', 'dumber'],\n    ['early', 'earlier'],\n    ['easy', 'easier'],\n    ['edgy', 'edgier'],\n    ['eerie', 'eerier'],\n    ['empty', 'emptier'],\n    ['faint', 'fainter'],\n    ['fair', 'fairer'],\n    ['fake', 'faker'],\n    ['fancy', 'fancier'],\n    ['far', 'further'],\n    ['fast', 'faster'],\n    ['fat', 'fatter'],\n    ['faulty', 'faultier'],\n    ['feeble', 'feebler'],\n    ['few', 'fewer'],\n    ['fierce', 'fiercer'],\n    ['filthy', 'filthier'],\n    ['fine', 'finer'],\n    ['firm', 'firmer'],\n    ['flat', 'flatter'],\n    ['foamy', 'foamier'],\n    ['foggy', 'foggier'],\n    ['fond', 'fonder'],\n    ['foul', 'fouler'],\n    ['frail', 'frailer'],\n    ['frank', 'franker'],\n    ['free', 'freer'],\n    ['fresh', 'fresher'],\n    ['friendly', 'friendlier'],\n    ['full', 'fuller'],\n    ['fun', 'funer'],\n    ['funny', 'funnier'],\n    ['furry', 'furrier'],\n    ['gauche', 'gaucher'],\n    ['gaudy', 'gaudier'],\n    ['gay', 'gaier'],\n    ['gentle', 'gentler'],\n    ['ghastly', 'ghastlier'],\n    ['ghostly', 'ghostlier'],\n    ['giddy', 'giddier'],\n    ['glad', 'gladder'],\n    ['glib', 'glibber'],\n    ['gloomy', 'gloomier'],\n    ['gold', 'golder'],\n    ['good', 'better'],\n    ['goofy', 'goofier'],\n    ['grand', 'grander'],\n    ['grave', 'graver'],\n    ['gray', 'grayer'],\n    ['great', 'greater'],\n    ['greedy', 'greedier'],\n    ['green', 'greener'],\n    ['grisly', 'grislier'],\n    ['groovy', 'groovier'],\n    ['gross', 'grosser'],\n    ['gruesome', 'gruesomer'],\n    ['handsome', 'handsomer'],\n    ['handy', 'handier'],\n    ['happy', 'happier'],\n    ['hard', 'harder'],\n    ['hardy', 'hardier'],\n    ['harsh', 'harsher'],\n    ['heady', 'headier'],\n    ['healthy', 'healthier'],\n    ['hearty', 'heartier'],\n    ['heavy', 'heavier'],\n    ['hefty', 'heftier'],\n    ['high', 'higher'],\n    ['hilly', 'hillier'],\n    ['holy', 'holier'],\n    ['homely', 'homelier'],\n    ['hot', 'hotter'],\n    ['huge', 'huger'],\n    ['humble', 'humbler'],\n    ['humid', 'humider'],\n    ['hungry', 'hungrier'],\n    ['icy', 'icier'],\n    ['jolly', 'jollier'],\n    ['juicy', 'juicier'],\n    ['keen', 'keener'],\n    ['kind', 'kinder'],\n    ['lame', 'lamer'],\n    ['large', 'larger'],\n    ['late', 'later'],\n    ['lazy', 'lazier'],\n    ['lean', 'leaner'],\n    ['leery', 'leerier'],\n    ['lengthy', 'lengthier'],\n    ['lewd', 'lewder'],\n    ['light', 'lighter'],\n    ['likely', 'likelier'],\n    ['limp', 'limper'],\n    ['little', 'littler'],\n    ['lively', 'livelier'],\n    ['lofty', 'loftier'],\n    ['lonely', 'lonelier'],\n    ['long', 'longer'],\n    ['loose', 'looser'],\n    ['loud', 'louder'],\n    ['lousy', 'lousier'],\n    ['lovely', 'lovelier'],\n    ['low', 'lower'],\n    ['lucky', 'luckier'],\n    ['mad', 'madder'],\n    ['mean', 'meaner'],\n    ['measly', 'measlier'],\n    ['meaty', 'meatier'],\n    ['meek', 'meeker'],\n    ['mellow', 'mellower'],\n    ['messy', 'messier'],\n    ['mild', 'milder'],\n    ['moist', 'moister'],\n    ['moody', 'moodier'],\n    ['nappy', 'nappier'],\n    ['narrow', 'narrower'],\n    ['nasty', 'nastier'],\n    ['near', 'nearer'],\n    ['neat', 'neater'],\n    ['new', 'newer'],\n    ['nice', 'nicer'],\n    ['nimble', 'nimbler'],\n    ['noble', 'nobler'],\n    ['noisy', 'noisier'],\n    ['nosy', 'nosier'],\n    ['numb', 'number'],\n    ['odd', 'odder'],\n    ['oily', 'oilier'],\n    ['old', 'older'],\n    ['pale', 'paler'],\n    ['petty', 'pettier'],\n    ['phony', 'phonier'],\n    ['pink', 'pinker'],\n    ['poor', 'poorer'],\n    ['pretty', 'prettier'],\n    ['prickly', 'pricklier'],\n    ['proud', 'prouder'],\n    ['puny', 'punier'],\n    ['pure', 'purer'],\n    ['quick', 'quicker'],\n    ['quiet', 'quieter'],\n    ['rainy', 'rainier'],\n    ['rare', 'rarer'],\n    ['raw', 'rawer'],\n    ['ready', 'readier'],\n    ['rich', 'richer'],\n    ['right', 'righter'],\n    ['ripe', 'riper'],\n    ['risky', 'riskier'],\n    ['ritzy', 'ritzier'],\n    ['roomy', 'roomier'],\n    ['rosy', 'rosier'],\n    ['rough', 'rougher'],\n    ['round', 'rounder'],\n    ['rude', 'ruder'],\n    ['sad', 'sadder'],\n    ['safe', 'safer'],\n    ['saintly', 'saintlier'],\n    ['salty', 'saltier'],\n    ['savvy', 'savvier'],\n    ['scanty', 'scantier'],\n    ['scarce', 'scarcer'],\n    // ['scared', 'scarier'],\n    ['scary', 'scarier'],\n    ['sexy', 'sexier'],\n    ['shady', 'shadier'],\n    ['shallow', 'shallower'],\n    ['sharp', 'sharper'],\n    ['shiny', 'shinier'],\n    ['short', 'shorter'],\n    ['shrill', 'shriller'],\n    ['shy', 'shyer'],\n    ['sick', 'sicker'],\n    ['sickly', 'sicklier'],\n    ['silky', 'silkier'],\n    ['silly', 'sillier'],\n    ['simple', 'simpler'],\n    ['skinny', 'skinnier'],\n    ['slack', 'slacker'],\n    ['sleek', 'sleeker'],\n    ['sleepy', 'sleepier'],\n    ['slight', 'slighter'],\n    ['slim', 'slimmer'],\n    ['slimy', 'slimier'],\n    ['sloppy', 'sloppier'],\n    ['slow', 'slower'],\n    ['sly', 'slier'],\n    ['small', 'smaller'],\n    ['smart', 'smarter'],\n    ['smelly', 'smellier'],\n    ['smooth', 'smoother'],\n    ['soft', 'softer'],\n    ['solemn', 'solemner'],\n    ['soon', 'sooner'],\n    ['sore', 'sorer'],\n    ['sorry', 'sorrier'],\n    ['sound', 'sounder'],\n    ['sparse', 'sparser'],\n    ['speedy', 'speedier'],\n    ['spicy', 'spicier'],\n    ['sprightly', 'sprightlier'],\n    ['square', 'squarer'],\n    ['stale', 'staler'],\n    ['stark', 'starker'],\n    ['steady', 'steadier'],\n    ['steep', 'steeper'],\n    ['stern', 'sterner'],\n    ['stiff', 'stiffer'],\n    ['stingy', 'stingier'],\n    ['stout', 'stouter'],\n    ['straight', 'straighter'],\n    ['strict', 'stricter'],\n    ['strong', 'stronger'],\n    ['stupid', 'stupider'],\n    ['sturdy', 'sturdier'],\n    ['subtle', 'subtler'],\n    ['sweet', 'sweeter'],\n    ['swift', 'swifter'],\n    ['tall', 'taller'],\n    ['tame', 'tamer'],\n    ['tawdry', 'tawdrier'],\n    ['tense', 'tenser'],\n    ['thick', 'thicker'],\n    ['thin', 'thinner'],\n    ['thirsty', 'thirstier'],\n    ['tidy', 'tidier'],\n    ['tight', 'tighter'],\n    ['timely', 'timelier'],\n    ['tiny', 'tinier'],\n    ['tough', 'tougher'],\n    ['trendy', 'trendier'],\n    ['tricky', 'trickier'],\n    ['trim', 'trimmer'],\n    ['true', 'truer'],\n    ['ugly', 'uglier'],\n    ['unfriendly', 'unfriendlier'],\n    ['unlikely', 'unlikelier'],\n    ['unlucky', 'unluckier'],\n    ['untidy', 'untidier'],\n    ['vague', 'vaguer'],\n    ['vain', 'vainer'],\n    ['vast', 'vaster'],\n    ['warm', 'warmer'],\n    ['wary', 'warier'],\n    ['weak', 'weaker'],\n    ['wealthy', 'wealthier'],\n    ['weary', 'wearier'],\n    ['weird', 'weirder'],\n    ['wet', 'wetter'],\n    ['white', 'whiter'],\n    ['wicked', 'wickeder'],\n    ['wide', 'wider'],\n    ['wild', 'wilder'],\n    ['wily', 'wilier'],\n    ['wise', 'wiser'],\n    ['witty', 'wittier'],\n    ['wrong', 'wronger'],\n    ['young', 'younger'],\n    ['zany', 'zanier'],\n\n\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0]).tag('Adjective')\n    doc.adjectives().toComparative()\n    t.equal(doc.text(), a[1], here + a[0])\n  })\n  t.end()\n})\n\n\n\n\n\n// test('.unchanged:', function (t) {\n//   let arr = [\n//     'energetic',\n//     'compassionate',\n//     'generous',\n//     'ambitious',\n//     'considerate',\n//     'thorough',\n//     'dependable',\n//     'patient',\n//     'successful',\n//     'industrious',\n//     'talented',\n//     'diligent',\n//     'skillful',\n//     'supportive',\n//     'adaptable',\n//     'dynamic',\n//     'imaginative',\n//     'conscientious',\n//     'organized',\n//     'polished',\n//     'polished',\n//     'energetic',\n//     'affectionate',\n//     'determined',\n//     'motivated',\n//     'persistent',\n//     'ingenious',\n//     'thoughtful',\n//     'popular',\n//     'capable',\n//     'loyal',\n//     'flexible',\n//     'dignified',\n//     'skillful',\n//     'amusing',\n//     'meticulous',\n//     'sensitive',\n//     'balanced',\n//     'sensible',\n//     'honorable',\n//     'enthusiastic',\n//     'reliable',\n//     'obedient',\n//     'devoted',\n//     'affable',\n//     'adventurous',\n//     'talented',\n//     'creative',\n//     'confident',\n//     'thrifty',\n//     'intuitive',\n//     'resourceful',\n//     'helpful',\n//     'courageous',\n//     'gentlemanly',\n//     'considerate',\n//     'energized',\n//     'dominant',\n//     'eloquent',\n//     'resilient',\n//     'insightful',\n//     'practical',\n//     'consistent',\n//     'realistic',\n//     'independent',\n//     'discreet',\n//     'diligent',\n//     'mature',\n//     'responsive',\n//     'grateful',\n//     'youthful',\n//     'upbeat',\n//     'gifted',\n//     'united',\n//     'optimistic',\n//     'selfless',\n//     'amiable',\n//     'detail-oriented',\n//     'positive',\n//   ]\n//   t.end()\n// })\n\n"
  },
  {
    "path": "tests/three/adjectives/superlative.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/adj-superlative] '\n\ntest('toSuperlative misc', function (t) {\n  let doc = nlp('he is really cool')\n  doc.adjectives().toSuperlative()\n  t.equal(doc.text(), 'he is really coolest', here + 'really cool')\n\n  doc = nlp('he is simply cooler')\n  doc.adjectives().toSuperlative()\n  t.equal(doc.text(), 'he is simply coolest', here + 'simply cooler')\n\n  doc = nlp('he is simply the coolest')\n  doc.adjectives().toSuperlative()\n  t.equal(doc.text(), 'he is simply the coolest', here + 'simply coolest')\n\n  t.end()\n})\n\n\ntest('.toSuperlative():', function (t) {\n  const arr = [\n    [\"great\", \"greatest\"],\n    [\"low\", \"lowest\"],\n    [\"near\", \"nearest\"],\n    [\"big\", \"biggest\"],\n    [\"strong\", \"strongest\"],\n    [\"early\", \"earliest\"],\n    [\"old\", \"oldest\"],\n    [\"small\", \"smallest\"],\n    [\"fast\", \"fastest\"],\n    [\"bright\", \"brightest\"],\n    [\"new\", \"newest\"],\n    [\"bad\", \"worst\"],\n    ['inner', 'innermost'],\n    ['outer', 'outermost'],\n    ['far', 'furthest'],\n    ['worse', 'worst'],\n    ['bad', 'worst'],\n    [\"black\", \"blackest\"],\n    [\"bland\", \"blandest\"],\n    [\"blond\", \"blondest\"],\n    [\"bloody\", \"bloodiest\"],\n    [\"blue\", \"bluest\"],\n    [\"stiff\", \"stiffest\"],\n    [\"straight\", \"straightest\"],\n    [\"sweet\", \"sweetest\"],\n    [\"thick\", \"thickest\"],\n    [\"tight\", \"tightest\"],\n    ['happy', 'happiest'],\n    ['polite', 'politest'],\n    ['tidy', 'tidiest'],\n    ['prompt', 'promptest'],\n    ['bright', 'brightest'],\n    ['gentle', 'gentlest'],\n    ['quick', 'quickest'],\n    ['cheerful', 'cheerfullest'],\n    ['kind', 'kindest'],\n    ['sincere', 'sincerest'],\n    ['brave', 'bravest'],\n    ['pleasant', 'pleasantest'],\n    // ['modest', 'modestest'],\n    // ['fearless', 'fearlessest'],\n    // ['content', 'contentedst'],\n    ['friendly', 'friendliest'],\n    ['sincere', 'sincerest'],\n    ['calm', 'calmest'],\n    ['eager', 'eagerest'],\n    ['witty', 'wittiest'],\n    ['lively', 'liveliest'],\n    // ['secure', 'securest'],\n    ['strong', 'strongest'],\n    ['quick', 'quickest'],\n\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.adjectives().toSuperlative()\n    t.equal(doc.text(), a[1], here + a[0])\n  })\n  t.end()\n})"
  },
  {
    "path": "tests/three/api.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/api] '\n\ntest('api:', function (t) {\n  const arr = [`He's really good. we were walking. Tony Hawk's swimming pool will dry-up.`, '', '...........?']\n  arr.forEach(str => {\n    let doc = nlp(str)\n    // lib\n    doc.forEach(s => s)\n    doc = doc.map(s => s)\n    doc = doc.filter(s => s)\n    doc.find(s => s)\n    doc.some(s => s)\n    doc.random()\n    doc.all()\n    doc.eq(0)\n    doc.first()\n    doc.firstTerms()\n    doc.fullSentences()\n    doc.groups()\n    // doc.is()\n    doc.last()\n    doc.lastTerms()\n    doc.none()\n    doc.slice()\n    doc.termList()\n    doc.terms()\n    doc.wordCount()\n    doc.update()\n    doc.toView()\n    doc.fromText()\n    doc.clone()\n    doc.fullPointer\n    doc.docs\n    doc.pointer\n    doc.methods\n    doc.model\n    doc.hooks\n    doc.isView\n    doc.found\n    doc.length\n\n    // One\n    doc.compute('id')\n    // change\n    doc.toLowerCase()\n    doc.toUpperCase()\n    doc.toTitleCase()\n    doc.toCamelCase()\n    doc.insertAfter('asdf')\n    doc.insertBefore('boo')\n    doc.append('foo')\n    doc.prepend('foo')\n    doc.insert('bar')\n    doc.match('flood').replaceWith('asf')\n    doc.replace('m', 'woo')\n    doc.remove('foo')\n    doc.delete('bar')\n    doc.pre(' ')\n    doc.post(' ')\n    doc.trim()\n    doc.hyphenate()\n    doc.dehyphenate()\n    doc.toQuotations()\n    doc.toParentheses()\n    doc.deHyphenate()\n    doc.toQuotation()\n    doc.unique()\n    doc.reverse()\n    doc.sort()\n    doc.concat()\n    // doc.fork()\n\n    doc.compute('contractions')\n    doc.compute('lexicon')\n    doc.lookup(['blue jays', 'farmer'])\n\n    // match\n    doc.matchOne('#Foo')\n    doc.match('#Foo')\n    doc.has('#Foo')\n    doc.if('#Foo')\n    doc.ifNo('#Foo')\n    doc.before('#Foo')\n    doc.after('#Foo')\n    doc.growLeft('#Foo')\n    doc.growRight('#Foo')\n    doc.grow('#Foo')\n    doc.splitOn('#Foo')\n    doc.splitBefore('#Foo')\n    doc.splitAfter('#Foo')\n    doc.split('#Foo')\n    doc.joinIf('#Noun', '#Verb')\n    doc.join()\n\n    // output\n    doc.out()\n    doc.text()\n    doc.text('normal')\n    doc.text('machine')\n    doc.text('root')\n    doc.text('implicit')\n    doc.json()\n\n    // sets\n    doc.union('blah')\n    doc.and('blah')\n    doc.intersection('blah')\n    doc.difference('blah')\n    doc.not('blah')\n    doc.complement('blah')\n    doc.settle('blah')\n\n    doc.tag('Foo')\n    doc.tagSafe('Foo')\n    doc.unTag('Foo')\n    doc.canBe('Foo')\n\n    doc.compute('alias')\n    doc.compute('normal')\n    doc.compute('machine')\n    doc.compute('freq')\n    doc.compute('offset')\n    doc.compute('index')\n    doc.compute('wordCount')\n\n    doc.compute('typeahead')\n    doc.autoFill()\n\n    // Two\n    doc.compute('contractionTwo')\n    doc.contractions()\n    doc.contractions().expand()\n\n    doc.confidence()\n\n    doc.compute('preTagger')\n    doc.compute('tagRank')\n    doc.compute('root')\n    doc.compute('penn')\n\n    doc.swap('rock', 'stone', '#Noun')\n\n    // Three\n    doc.compute('chunks')\n    doc.chunks()\n    doc.clauses()\n\n    // nouns\n    doc.nouns().parse()\n    doc.nouns().json()\n    doc.nouns().conjugate()\n    doc.nouns().isPlural()\n    doc.nouns().adjectives()\n    doc.nouns().toPlural()\n    doc.nouns().toSingular()\n    // numbers\n    doc.numbers().parse()\n    doc.numbers().get()\n    doc.numbers().json()\n    doc.numbers().isOrdinal()\n    doc.numbers().isCardinal()\n    doc.numbers().isUnit()\n    doc.numbers().toNumber()\n    doc.numbers().toLocaleString()\n    doc.numbers().toText()\n    doc.numbers().toCardinal()\n    doc.numbers().toOrdinal()\n    doc.numbers().isEqual()\n    doc.numbers().greaterThan()\n    doc.numbers().lessThan()\n    doc.numbers().between()\n    doc.numbers().set()\n    doc.numbers().add()\n    doc.numbers().subtract()\n    doc.numbers().increment()\n    doc.numbers().decrement()\n    doc.percentages().json()\n    doc.money().json()\n    doc.fractions().json()\n\n    // sentences\n    doc.sentences().toPastTense()\n    doc.sentences().toPresentTense()\n    doc.sentences().toFutureTense()\n    doc.sentences().toInfinitive()\n    doc.sentences().toNegative()\n    doc.questions()\n\n    // verbs\n    doc.verbs().parse()\n    doc.verbs().json()\n    doc.verbs().subjects()\n    doc.verbs().isSingular()\n    doc.verbs().isPlural()\n    doc.verbs().isImperative()\n    doc.verbs().toInfinitive()\n    doc.verbs().toPresentTense()\n    doc.verbs().toPastTense()\n    doc.verbs().toFutureTense()\n    doc.verbs().toGerund()\n    doc.verbs().toPastParticiple()\n    doc.verbs().conjugate()\n    doc.verbs().isNegative()\n    doc.verbs().isPositive()\n    doc.verbs().toPositive()\n    doc.verbs().toNegative()\n\n    doc.adjectives().json()\n    doc.adjectives().conjugate()\n\n    doc.adverbs().json()\n    doc.adverbs().conjugate()\n\n    // misc\n    doc.redact()\n    doc.topics()\n    doc.organizations()\n    doc.people().parse()\n    doc.people().json()\n    doc.places()\n\n    doc.quotations()\n    doc.quotations().strip()\n    doc.parentheses()\n    doc.parentheses().strip()\n    doc.possessives()\n    doc.possessives().strip()\n\n    t.ok(doc.json(), here + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/chunker/chunks.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\n// const here = '[three/chunks] '\n\ntest('chunker', function (t) {\n  const arr = [\n\n    [\"Record your successes and keep going.\"],\n    [\"With a million jobs at stake, I refused to let that happen.\"],\n    [\"Letters Written in Sweden, Norway, and Denmark was Wollstonecraft's most popular book in the 1790s.\"],\n    [\"Highly recommended, ask for Josh!\"],\n    [\"It seemed to fly rather than gallop, but so smoothly that Beauty was not frightened; indeed, she would have enjoyed the journey if she had not feared what might happen to her at the end of it.\"],\n    [\"Are you sure you wanna do this?\"],\n    [\"Shares finish lower on sustained selling\"],\n    [\"This English shire is named for an Old Saxon landowner; the name means \\\"Snot's home\\\"\"],\n    [\"What do you call a man with no arms and no legs, but can play the piano really well?\"],\n    [\"My friend was repeatedly trying to get me to call another friend to act as 'ground control,' for he explained to me that he would periodically lose all concept of who he was or the situation he was in.\"],\n    [\"Don't want to be your monkey wrench\"],\n    [\"Im sure you will learn to do the same.\"],\n    [\"But when we really need them, someone else have already liked that boring care.\"],\n    [\"The accidental gun rate — the accidental gun death rate of children under 15 in the United States is nine times higher than in the other 25 industrialized countries combined.\"],\n    [\"Think of the positive aspects of each situation.\"],\n    [\"The term \\\"Great Britain\\\", by contrast, refers conventionally to the island of Great Britain, or politically to England, Scotland and Wales in combination.\"],\n    [\"I had ingrown hairs and follicle problems for over a year and Crystal\"],\n    [\"C'mon, Pheebs, we're gonna catch that movie, we gotta get going.\", ''],\n    [\"The top 10 music festivals in Toronto for spring 2015\", ''],\n    [\"Duck, duck, l'oie; (l'oie of course referring to this other feathered friend)\", ''],\n    [\"I hate when I'm standing there trying to be handsome when some other guy comes and stands next to me and challenges my handsomeness.\", ''],\n    [\"round the old sun-dial, and perhaps he will give you what you want.”\", ''],\n    [\"John, sorry for the late response, but I think you can implement immediately.\", ''],\n    [\"Nah man you may get lucky they may just mess with you like they did with me\", ''],\n    [\"I see how lah, den i tell u whether meeting for dinner not.\", ''],\n    [\"I am asking you to do just that.\", ''],\n    [\"If you didn't become Final Form, just hit the pause button and press \\\"Retry\\\".\", ''],\n    [\"Among the most widely used are subjecting DNA to UV radiation or chemical mutagens, error-prone PCR, degenerate codons, or recombination.\", ''],\n    [\"This bar is a top pick for my friends and I when we want to go somewhere we know we can enjoy and unwind on the weekend.\", ''],\n    [\"madam, cried the clerk of the kitchen.\", ''],\n    [\"I can’t believe they-they didn’t even tell us!\", ''],\n    [\"You can now eat chimney sundaes in Toronto\", ''],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.chunks().forEach(() => {\n\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/chunker/clauses.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/clauses] '\n\ntest('clauses-count', function (t) {\n  const arr = [\n    ['In fact, you are the most beautiful', 2],\n    ['And this July, we will begin to bring our troops home.', 2],\n    ['And keep ya cup, we drink whole bottles', 2],\n    [`I think I'm gonna stay here.. I desperately need to pack`, 2],\n    ['and if time and budget permits, make cute little thank-you bags for your friends.', 2],\n    [`Located at the mouth of the Demerara River, it's the capital & largest city`, 2],\n    [`For the most part, I really like this Starbucks.`, 2],\n    [`I'm telling you, she gives the worst massages ever!!`, 2],\n    [`Emily won't let Ross see Rachel, we're not gonna stop seeing Rachel, hence Ross stops seeing us!`, 3],\n    [`More than anyone else in our society, they know the true difficulty`, 2],\n    [`Dear ladies and gentlemen, im organising a trip to ily `, 2],\n    [`According to some sources, his heart remained at Missolonghi.`, 2],\n    [`After the 1979 electoral defeat of the Labour Party, she took over for Prime Minister James Callaghan`, 2],\n    [`Robinsonade is not a refreshing drink, it's a novel similar in theme`, 2],\n    [`this might be a convenient stop, I highly encourage you to take it`, 2],\n    [`Thanks again to Lisa, she is the best!`, 2],\n    [`Off he flew; and there he was`, 2],\n    [`to cut spending, we're going to have to do more`, 2],\n    [`Just look at them I mean, is it okay if they come visit?`, 2],\n    // single\n    [`Make sure you look clean, neat, and groomed at all times.`, 1],\n    ['but, no thank you', 1],\n    [`Use quinoa in any place you’d use lentils, corn, millet, rice, or pasta.`, 1],\n    [`These are the steps I used.`, 1],\n    [`actually, that's the shirt`, 1],\n    [`we can help the world if Congress gives us the means `, 2],\n    // [``, 2],\n    // [``, 2],\n    // [``, 2],\n\n    // \"Stances include regular, goofy foot & this one \",\n    // \"He got in touch with me last night and wants me to meet him today at 2 pm\",\n  ]\n  arr.forEach(function (a) {\n    const clauses = nlp(a[0]).clauses()\n    t.equal(clauses.length, a[1], here + '[number of clauses] ' + a[0])\n  })\n  t.end()\n})\n\ntest('clauses', function (t) {\n  const arr = [\n    // ['string', ['expected clauses', 'in an array']]\n    ['fun, cool, etc...', ['fun, cool, etc...']],\n    ['cool, and fun', ['cool, and fun']],\n    ['one, two, and three', ['one, two, and three']],\n    ['just one clause here!', ['just one clause here!']],\n    ['if you must, go to the basement', ['if you must,', 'go to the basement']],\n    ['an apple, washed and dried', ['an apple,', 'washed and dried']],\n    ['one thing, at a time. and then another, right afterwards', ['one thing,', 'at a time.', 'and then another,', 'right afterwards']],\n    ['oh and something else, too', ['oh and something else, too']],\n    ['tuesday, march 2nd', ['tuesday, march 2nd']],\n    ['toronto, canada', ['toronto, canada']],\n    ['june 6, 1992', ['june 6, 1992']],\n    // ['In fact, you are the most beautiful', ['in fact', 'you are the most beautiful']]\n  ]\n  arr.forEach(function (a) {\n    const clauses = nlp(a[0]).clauses().out('array')\n    t.equal(clauses.length, a[1].length, here + '[number of clauses] ' + a[0])\n    t.deepEqual(clauses, a[1], here + '[clause content] ' + a[0])\n  })\n  t.end()\n})"
  },
  {
    "path": "tests/three/clause.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/clause] '\n\ntest('clauses-parentheses:', function (t) {\n  const m = nlp(\"i said, 'did you have to do that' and then left, like nothing happened (which it didn't).\").clauses()\n  t.equal(m.length, 5, 'found 5 clauses')\n  t.equal(m.eq(0).text(), 'i said,', here + 'clause 1')\n  t.equal(m.eq(1).text(), `did you have to do that`, here + 'clause 2')\n  t.equal(m.eq(2).text(), `and then left`, here + 'clause 3')\n  t.equal(m.eq(3).text(), `like nothing happened`, here + 'clause 4')\n  t.equal(m.eq(4).text(), `which it didn't`, here + 'clause 5')\n  t.end()\n})\n\ntest('clauses-commas:', function (t) {\n  let doc = nlp(`in Toronto, Canada`).clauses()\n  t.equal(doc.length, 1, here + 'place-comma')\n\n  doc = nlp(`July 4, 1776`).clauses()\n  t.equal(doc.length, 1, 'date-comma')\n\n  doc = nlp(`“You have a spider on your nose!” my friend yelled.`).clauses()\n  t.equal(doc.length, 2, here + 'found 2 clauses-1')\n  t.end()\n})\n\ntest('clauses-condition:', function (t) {\n  const m = nlp('if you must, go to the basement').clauses()\n  t.equal(m.length, 2, here + 'found 2 clauses2')\n  t.equal(m.eq(0).text(), 'if you must,', here + 'clause 1')\n  t.equal(m.eq(1).text(), `go to the basement`, here + 'clause 2')\n  t.end()\n})\n\ntest('clauses-conjunction:', function (t) {\n  const m = nlp(`it is cool but it is not`).clauses()\n  t.equal(m.length, 2, here + 'found 2 clauses3')\n  t.equal(m.eq(0).text(), 'it is cool', here + 'clause 1')\n  t.equal(m.eq(1).text(), `but it is not`, here + 'clause 2')\n  t.end()\n})\n\ntest('clauses-list:', function (t) {\n  const m = nlp('he is nice, cool and fun.').clauses()\n  t.equal(m.length, 1, here + 'found 1 clause')\n  t.equal(m.eq(0).text(), 'he is nice, cool and fun.', here + 'clause 1')\n  t.end()\n})\n\ntest('clauses-find:', function (t) {\n  const doc = nlp(`...and my butt smells, and i like to kiss my own butt`)\n  const m = doc.clauses().eq(0)\n  const str = m.text('reduced')\n  t.equal(str, '...and my butt smells', here + 'first clause')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/coreference/base-coref.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/coreference] '\n\n// https://github.com/google-research-datasets/gap-coreference\ntest('basic-coreference:', function (t) {\n  const arr = [\n    // one-sentence\n    [\n      `spencer is not working because he is unemployed`,\n      { he: `spencer` }\n    ],\n    // back-sentence\n    [\n      `spencer is quiet. he is not loud`,\n      { he: `spencer` }\n    ],\n    // back-two-sentences\n    [\n      `spencer is quiet. I mean, not always, but usually. he is not loud`,\n      { he: `spencer` }\n    ],\n    [\n      \"Spencer kelly forgot to update github. Maybe he should remember to\",\n      { he: `spencer kelly` }\n    ],\n    [\n      \"Lester B. Pearson founded Canada but despite being 6ft tall, he forgot to update github.\",\n      { he: `lester b. pearson` }\n    ],\n    [\n      \"i don't know why jack layton won his election, but he did.\",\n      { he: `jack layton`, his: 'jack layton' }\n    ],\n    [\n      \"you said kirk douglass won, and he'll fall asleep afterwards\",\n      { he: `kirk douglass` }\n    ],\n    // two pronouns\n    [\n      `i saw spencer kelly. he forgot his name`,\n      { he: `spencer kelly`, his: 'spencer kelly' }\n    ],\n    // basic she\n    [\n      `Judy Dench is an American film director. She wrote, directed and starred in three films`,\n      { she: `judy dench` }\n    ],\n    // ambiguous person names\n    [\n      `jamie smith said no and she left`,\n      { she: `jamie smith` }\n    ],\n    // ambiguous person names\n    [\n      `jamie smith said no and he bailed out`,\n      { he: `jamie smith` }\n    ],\n    [\n      `nobody tell Josh's mom that she burned her toast.`,\n      { she: `josh's mom`, her: `josh's mom` }\n    ],\n    // basic they\n    [\n      `Goaltenders often trick their opponents`,\n      { their: `goaltenders` },\n    ],\n    [\n      `they said i was losing my marbles`,\n      {},\n    ],\n    [\n      `the American people are using their money far better`,\n      { their: 'the american people' },\n    ],\n    [\n      `a medicine given to cows to increase their milk`,\n      { their: 'cows' },\n    ],\n    [\n      `every time someone gave me their dog`,\n      { their: 'someone' },\n    ],\n    [\n      `But we shouldn't put them and their children out on the street`,\n      {},\n    ],\n    [\n      `People go out of their way`,\n      { their: 'people' },\n    ],\n    [\n      `17 taxpayers would see their taxes rise`,\n      { their: '17 taxpayers' },\n    ],\n    [\n      `ensure that all African Americans could exercise their right`,\n      { their: 'all african americans' },\n    ],\n    [\n      `all states and school districts must turn around their worst performing schools`,\n      { their: 'all states and school districts' },\n    ],\n    [\n      `It will raise critical questions about the way we finance our campaigns and how lobbyists yield their influence.`,\n      { their: 'lobbyists' },\n    ],\n\n    [\n      `9 out of 10 people who have insurance get it through their employers`,\n      { their: '9 out of 10 people' },\n    ],\n    [\n      `the boys and girls studied their numbers`,\n      { their: 'the boys and girls' },\n    ],\n    [\n      `plumbers are funny. they never stop talking`,\n      { they: `plumbers` }\n    ],\n    [\n      `the viola player said no and she dropped her bow`,\n      { she: `the viola player`, her: `the viola player` }\n    ],\n\n    // basic 'her'\n    [\n      `Sally arrived, but nobody saw her`,\n      { her: `sally` }\n    ],\n    // person-like\n    [\n      `the cowboy shot his gun and he walked away`,\n      { his: `the cowboy`, he: `the cowboy` }\n    ],\n    [\n      `spencer's aunt is fun. she is smart`,\n      { she: `spencer's aunt` },\n    ],\n    [\n      `the cheerleader did a flip but she landed awkwardly`,\n      { she: `the cheerleader` }\n    ],\n    [\n      `the boys play video games in their free time`,\n      { their: 'the boys' }\n    ],\n    [\n      `i walked to my school`,\n      {}\n    ],\n    [\n      `her opinion was that he missed`,\n      {}\n    ],\n    [\n      `her son brushed his teeth`,\n      { his: 'her son' }\n    ],\n    [\n      `somebody shaved their legs`,\n      { their: 'somebody' }\n    ],\n    [\n      `thom is the singer of his band`,\n      { his: 'thom' }\n    ],\n    [\n      `spencer likes john but not his brother`,\n      { his: 'john' }\n    ],\n    [\n      `i saw sara. spencer likes the captain but not her brother`,\n      { her: 'the captain' }\n    ],\n    // single-sentence misc\n    [\n      \"I was looking at black crows go by and right after they went by, a good 100+ more crows flew by\",\n      { \"they\": \"black crows\" }\n    ],\n\n    [\n      \"As its Valentines Day, the missus has said she'll go on top tonight for a change.\",\n      { \"she'll\": \"the missus\" }\n    ],\n    [\n      \"You must really like... Joey... to go to all that trouble for him.\",\n      { \"him\": \"joey\" }\n    ],\n    [\n      \"When the children saw they were left alone.\",\n      { \"they\": \"the children\" }\n    ],\n    [\n      \"One mother of two, a woman named Kathy Proctor, had worked in the furniture industry since she was 18 years old.\",\n      { \"she\": \"kathy proctor\" }\n    ],\n    [\n      \"We've got to do something to empower people to improve their skills.\",\n      { \"their\": \"people\" }\n    ],\n    [\n      \"Hey Mon, that was really nice of you to loan Rachel your car so she could  go and get the cake.\",\n      { \"she\": \"rachel\" }\n    ],\n    [\n      \"Sweet justice: after the doc pulled the gigantic beetle out of my ear, my mom asked if she could have it.\",\n      { \"she\": \"my mom\" }\n    ],\n    [\n      \"Elaine Kinslow and all those like her are the real heroes of the welfare revolution.\",\n      { \"her\": \"elaine kinslow\" }\n    ],\n    [\n      \"Contrary to public opinion, most people want to work to get their income.\",\n      { \"their\": \"most people\" }\n    ],\n    [\n      \"The giants were terrified at the apparition, and, fearful lest he should slay them, they all took to their heels\",\n      { \"they\": \"the giants\", \"their\": \"the giants\" }\n    ],\n    [\n      \"Mrs and 3 of her pals squeezed into my car after weight watchers.\",\n      { \"her\": \"mrs\" }\n    ],\n    [\n      \"One time I heard this woman to the right of me complaining how spicy her curry was.\",\n      { \"her\": \"this woman\" }\n    ],\n    [\n      \"When people put their party's fortunes, whatever the party, whatever side of this aisle, before the public good, they court defeat not only for their country but for themselves.\",\n      { \"their\": \"people\", \"they\": \"people\" }\n    ],\n    [\n      \"Social Security now offers workers a return of less than 2 percent on the money they pay into the system.\",\n      { \"they\": \"workers\" }\n    ],\n    [\n      \"There's a scene where Drake sneaks into Olivia's bedroom, and she doesn't know he's there - which never happened with us!\",\n      { \"she\": \"olivia's\" }\n    ],\n    [\n      \"If you are going to send someone to save the world, make sure they like it the way it is.\",\n      { \"they\": \"someone\" }\n    ],\n    [\n      \"The Queen was so confused that at first she did not notice another little door in the orange tree, but presently it opened and she found herself in a field of thistles and nettles.\",\n      { \"she\": \"the queen\" }\n    ],\n    [\n      \"Gandhi moved his headquarters to Nadiad, organising scores of supporters and fresh volunteers\",\n      { \"his\": \"gandhi\" }\n    ],\n    [\n      \"In a moment Prince Ricardo's foot was on the blade of the diamond sword, which he passed thrice through the body of the Yellow Dwarf.\",\n      { \"he\": \"prince ricardo's\" }\n    ],\n    [\n      \"The Princess was very sorry, but as Grabugeon was really dead, she allowed the Captain of the Guard to take her tongue; but, alas!\",\n      { \"she\": \"the princess\", \"her\": \"the princess\" }\n    ],\n    [\n      \"River town is burnin', the clouds they roll on by\",\n      { \"they\": \"the clouds\" }\n    ],\n    [\n      \"While Gandhi expressed mostly positive views of Islam, he did occasionally criticize Muslims.\",\n      { \"he\": \"gandhi\" }\n    ],\n    [\n      \"The portions are TOO small, rolls were cold (as they were taken from the fridge), very small and not tasty at all.\",\n      { \"they\": \"rolls\" }\n    ],\n    [\n      \"In that book, Prince Prigio fancied he would find something he half remembered, and that would be of use to him.\",\n      { \"he\": \"prince prigio\", \"him\": \"prince prigio\" }\n    ],\n    [\n      \"Early in the morning, before the children were awake, she rose up, and when she saw them both sleeping so peacefully, with their round rosy cheeks, she muttered to herself: That'll be a dainty bite.\",\n      { \"their\": \"the children\" }\n    ],\n    [\n      \"If prisoners get arrested, where do they go?\",\n      { \"they\": \"prisoners\" }\n    ],\n    [\n      \"I’m not willing to tell James Howard, a brain cancer patient from Texas, that his treatment might not be covered.\",\n      { \"his\": \"james howard\" }\n    ],\n    [\n      \"Herbert Spencer, adopting the idea of evolution, laid thereon the elaborate superstructure of his philosophy.\",\n      { \"his\": \"herbert spencer\" }\n    ],\n    [\n      \"That said, the Christians I've met have not been pushy about it, and haven't treated me differently for being a 3rd generation agnostic, and though I know a couple still hope that I'll be saved, that's just because they like me.\",\n      { \"they\": \"the christians\" }\n    ],\n    [\n      \"I left my girlfriend because she wouldn't stop counting.\",\n      { \"she\": \"my girlfriend\" }\n    ],\n    [\n      \"I work at a doctors office and when they need to go out of town they either find back up or do not schedule travel when appointments have been made.\",\n      { \"they\": \"a doctors office\" }\n    ],\n    [\n      \"I am spinning, my pretty child, said the old woman, who did not know who she was.\",\n      { \"she\": \"the old woman\" }\n    ],\n    [\n      \"And when the sentence had been carried out the young King was married to his real bride\",\n      { \"his\": \"young king\" }\n    ],\n    [\n      \"When a women says 'What?' it's not because she didn't hear you.\",\n      { \"she\": \"a women\" }\n    ],\n    [\n      \"Why were the Aggies pushing their house down the street?\",\n      { \"their\": \"the aggies\" }\n    ],\n    [\n      \"So in the evening, when the giant came home with the goats, the Prince went into the chamber and hummed and sang again as he had done on the other two evenings.\",\n      { \"he\": \"the prince\" }\n    ],\n    [\n      \"Hydras paralyze their prey with poison from stingers on these body parts\",\n      { \"their\": \"hydras\" }\n    ],\n    [\n      \"Gilbert says he will be busy with sports camp.\",\n      { \"he\": \"gilbert\" }\n    ],\n    [\n      \"written by Lord Chesterfield to his son\",\n      { \"his\": \"lord chesterfield\" }\n    ],\n    [\n      \"But a lot of people laid down their seats in Congress so that police officers and kids wouldn't have to lay down their lives under a hail of assault weapon attack.\",\n      { \"their\": \"officers and kids\" }\n    ],\n    [\n      \"I know you got a man but girl he's slippin'\",\n      { \"he's\": \"a man\" }\n    ],\n    [\n      \"If you're trying to seduce a man, make sure you dress in a flattering fashion to get his attention.\",\n      { \"his\": \"a man\" }\n    ],\n    [\n      \"1 of these carried a Kansas woman 60 ft., dropping her next to a record titled \\\"Stormy Weather\\\"\",\n      { \"her\": \"a kansas woman\" }\n    ],\n    [\n      \"(Every time I try to say it, words, they only complicate it,)\",\n      { \"they\": \"words\" }\n    ],\n    [\n      \"In 1952 William Rehnquist graduated first in his class at Stanford Law & she graduated third\",\n      { \"his\": \"william rehnquist\" }\n    ],\n    [\n      \"so the ladies put your on their speed dial:\",\n      { \"their\": \"the ladies\" }\n    ],\n    [\n      \"The doctor's assistant goes through extreme mood swings from passivity to hysteria in seconds and then seems to forget where she was in the next scene.\",\n      { \"she\": \"the doctor's assistant\" }\n    ],\n    [\n      \"As a result, the mandarins survived WWII and the postwar American occupation relatively undamaged, and they will strive to survive the DPJ government as well.\",\n      { \"they\": \"the mandarins\" }\n    ],\n    [\n      \"Carrie looked ugly, Mr. Big had his eyebrows colored with crayons and Samantha didn't say f***.\",\n      { \"his\": \"mr big\" }\n    ],\n    [\n      \"Bored, I went through the whole thing and clearly the director and cinematographer tried, but just don't know enough about what they are doing.\",\n      { \"they\": \"the director and cinematographer\" }\n    ],\n    [\n      \"In reality, in far too many countries, ordinary citizens do not benefit from any of this money; in fact, they must bear the brunt of the environmental and social costs\",\n      { \"they\": \"ordinary citizens\" }\n    ],\n    [\n      \"The American Academy of Pediatrics recently warned that TV viewing by young children is dangerous for their brain development\",\n      { \"their\": \"young children\" }\n    ],\n    [\n      \"Presumably, McCain’s League of Democracies is designed to bring Immanuel Kant’s dream of perpetual peace  closer to realization by putting  pressure on non-democracies to change their ways\",\n      { \"their\": \"non democracies\" }\n    ],\n    [\n      \"Like the murder of Archbishop Thomas Beckett in his Canterbury Cathedral many centuries ago.\",\n      { \"his\": \"archbishop thomas beckett\" }\n    ],\n\n    [\n      \"Fourth, governments and the IFIs cannot solve this crisis alone, and they cannot and should not crowd out the private sector.\",\n      { \"they\": \"governments and the ifis\" }\n    ],\n\n    [\n      \"Fred gazes at Rita with a brotherly smile, but she's so mannequin-like.\",\n      { \"she's\": \"rita\", \"her\": \"rita\" }\n    ],\n    [\n      \"Marc Singer is back and it is sad to seem him in this state.\",\n      { \"him\": \"singer\" }\n    ],\n    [\n      \"He did one at Christmas, and now the terrific Justin Lee Collins wanted to reunite the cast members and maybe some crew of one of his favourite TV shows as a kid\",\n      { \"his\": \"justin lee collins\" }\n    ],\n    [\n      \"The letter said, in so many words, what the leaders of Europe now appear to have understood: they cannot go on “kicking the can down the road.”\",\n      { \"they\": \"the leaders of europe\" }\n    ],\n    [\n      \"Where are the shocks and surprises as mother and daughter have what may be the last conversation of their lives?\",\n      { \"their\": \"mother and daughter\" }\n    ],\n    [\n      \"The world has grown used to US drone strikes, but recent news reports suggest that China and Japan are also investing in unmanned aircraft – in part to enhance their leverage in disputes over islands in the East China Sea.\",\n      { \"their\": \"china and japan\" }\n    ],\n    [\n      \"Louis VI was known as this; as a child he must have shopped in le husky department\",\n      { he: 'Louis VI' }\n    ],\n    [\n      `Oh my god he sounded just like it`,\n      {}\n    ],\n    [\n      ``,\n      {}\n    ],\n  ]\n  arr.forEach(a => {\n    const [text, refs] = a\n    const doc = nlp(text)\n    const pronouns = doc.pronouns().hasReference()\n    t.equal(Object.keys(refs).length, pronouns.length, here + `[count] '${text}'`)\n    Object.keys(refs).forEach(k => {\n      const m = pronouns.if(k).refersTo()\n      t.equal(m.text('normal'), refs[k], here + ` [${k}] - ${refs[k]}`)\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/coreference/more.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/more-coreference] '\n\nconst arr = [\n  `(Sarah) walked into the room. [She] immediately noticed the mess on the floor.`,\n  `(Michael and Emily) went to the movies. [They] bought tickets for the latest blockbuster.`,\n  `(Lisa) finished her presentation. [She] received a round of applause from the audience.`,\n  `(David and Rebecca) decided to go for a hike. [They] packed sandwiches and water bottles.`,\n  `(Mark) loves playing the guitar. [He] practices every day to improve his skills.`,\n  `(Emma) forgot her umbrella at home. [She] got soaked in the rain on her way to work.`,\n  `(The students) worked hard on their project. [They] were proud of the final result.`,\n  `(Alexander) scored the winning goal. [He] celebrated with his teammates on the field.`,\n  `(Mary and Tom) are going on vacation. [They] are excited to explore a new destination.`,\n  `(Rachel) lost her phone. [She] retraced her steps to find it.`,\n  `(Robert) woke up late. [He] rushed to get ready for work.`,\n  `(The cat) jumped onto the counter. [It] knocked over a glass.`,\n  `(Jennifer and Andrew) are getting married. [They] are planning a beautiful wedding.`,\n  `(The dog) wagged its tail. [It] was happy to see its owner.`,\n  `(Amy) baked cookies. [She] shared them with her friends.`,\n  `(The children) played in the park. [They] laughed and ran around.`,\n  `(Mr.Johnson) is a teacher. [He] enjoys helping his students learn.`,\n  `(The book) fell off the shelf. [It] landed with a loud thud.`,\n  `(Karen) is a talented artist. [She] painted a stunning landscape.`,\n  `(The car) broke down on the highway. [It] had to be towed.`,\n  `(James and Lily) won the game. [They] celebrated their victory.`,\n  `(The baby) cried all night. [It] needed to be comforted.`,\n  `(Sarah) is going on a trip. [She] packed her suitcase.`,\n  `(The flowers) bloomed in the garden. [They] added a splash of color.`,\n  `(John) finished his homework. [He] rewarded himself with a movie.`,\n  `(The computer) crashed. [It] lost all the unsaved data.`,\n  `(Samantha and David) adopted a puppy. [They] named it Max.`,\n  `(The sun) set behind the mountains. [It] painted the sky with hues of orange.`,\n  `(Peter) won the race. [He] crossed the finish line first.`,\n  `(The phone) rang. [It] startled everyone in the room.`,\n  `(The cookies) smelled delicious. [They] were freshly baked.`,\n  `(Maria) loves to dance. [She] dreams of becoming a professional dancer.`,\n  `(The movie) was entertaining. [It] kept the audience engaged.`,\n  `(Jack and Emily) built a sandcastle. [They] used buckets and shovels.`,\n  `(The rain) stopped. [It] left behind glistening droplets on the leaves.`,\n  `(Jessica) wrote a poem. [She] shared it with her friends.`,\n  `(The restaurant) was crowded. [It] had a long waiting list.`,\n  `(Mike) won the lottery. [He] couldn't believe his luck.`,\n  `(The alarm) went off. [It] woke everyone up.`,\n  `(Emma and Ethan) went on a picnic. [They] enjoyed the sunny weather.`,\n  `(The clock) struck midnight. [It] signaled the start of a new day.`,\n  `(Alex) fixed the broken chair. [He] used a hammer and nails.`,\n  `(The storm) raged outside. [It] made loud thundering sounds.`,\n  `(Olivia) received a promotion. [She] celebrated with her colleagues.`,\n  `(The guitar) was out of tune. [It] needed to be adjusted.`,\n  `(Daniel and Michelle) cooked dinner. [They] prepared a delicious meal.`,\n  `(The plane) took off. [It] soared into the sky.`,\n  `(Lucas) lost his keys. [He] searched everywhere to find them.`,\n  `(The puzzle) was challenging. [It] took hours to complete.`,\n  `(Sophie) found a seashell. [She] kept it as a souvenir.`,\n  `(The fire) crackled in the fireplace. [It] provided warmth on a cold night.`,\n  `(Andrew) fixed his bike. [He] tightened the loose screws.`,\n  `(The news) shocked everyone. [It] was unexpected.`,\n  `(Emily and Daniel) danced at the party. [They] had a great time.`,\n  `(The baby) smiled at its mother. [It] recognized her face.`,\n  `(Alexa) wrote a letter. [She] addressed it to her pen pal.`,\n  `(The movie) received rave reviews. [It] became a box office hit.`,\n  `(The snow) covered the ground. [It] created a winter wonderland.`,\n  `(Jacob) scored a goal. [He] was cheered on by the crowd.`,\n  `(The painting) hung on the wall. [It] caught everyone's attention.`,\n  `  (Lisa) studied all night. [She] wanted to ace the exam.`,\n  `(The dog) barked loudly. [It] alerted the family of an intruder.`,\n  `(Mike and Sarah) went shopping. [They] bought new clothes for the summer.`,\n  `(The phone) vibrated. [It] signaled a new message.`,\n  `(David) finished reading the book. [He] was captivated by the story.`,\n  `(The flowers) wilted in the heat. [They] needed water to revive.`,\n  `(Anna) traveled to Paris. [She] admired the Eiffel Tower.`,\n  `(The cake) smelled delicious. [It] was freshly baked.`,\n  `(Jason) fixed the leaky faucet. [He] used a wrench to tighten it.`,\n  `(The train) arrived at the station. [It] was right on time.`,\n  `(The baby) giggled. [It] found something funny.`,\n  `(Oliver and Mia) built a sandcastle. [They] decorated it with seashells.`,\n  `(The movie) made everyone laugh. [It] was a hilarious comedy.`,\n  `(Sophia) wrote a song. [She] performed it at a local café.`,\n  `(The rain) poured down. [It] drenched everyone in seconds.`,\n  `(Lucas) lost his way in the forest. [He] relied on a compass to find his way back.`,\n  `(The tree) provided shade. [It] sheltered the picnic - goers from the sun.`,\n  `(Emily) painted a beautiful landscape. [She] used vibrant colors.`,\n  `(The soccer team) won the championship. [They] celebrated with a trophy.`,\n  `(The traffic) was heavy. [It] caused delays on the road.`,\n  `(Jacob) played the piano. [He] composed a melodious tune.`,\n  `(The cookie jar) was empty. [It] needed to be refilled.`,\n  `(Emma and Ethan) watched a movie. [They] snuggled under a blanket.`,\n  `(The firework) exploded in the sky. [It] lit up the night.`,\n  `(Sophie) lost her wallet. [She] retraced her steps to find it.`,\n  `(The book) captivated the readers. [It] had an intriguing plot.`,\n  `(Alex) cooked dinner. [He] prepared a delicious meal from scratch.`,\n  `(The waves) crashed against the shore. [They] created a soothing sound.`,\n  `(Megan) rode her bicycle. [She] enjoyed the breeze in her hair.`,\n  `(The clock) struck twelve. [It] marked the start of a new day.`,\n  `(Emily) received a gift. [She] unwrapped it with excitement.`,\n  `(The concert) started. [It] showcased talented musicians.`,\n  `(David and Lily) planted flowers in the garden. [They] used gardening tools.`,\n  `(The storm) passed. [It] left a rainbow in its wake.`,\n  `(Sophia) won a singing competition. [She] was awarded a trophy.`,\n  `(The butterfly) fluttered its wings. [It] landed on a flower.`,\n  `(Adam) fixed the broken window. [He] used a hammer and nails.`,\n  `(The snow) fell softly. [It] covered the ground in a white blanket.`,\n  `(Emma) found a treasure map. [She] embarked on an adventure.`,\n  `(The candle) flickered. [It] created a warm and cozy ambiance.`,\n  `(Jason and Olivia) danced at the party. [They] showed off their moves.`,\n  `(The coffee) brewed. [It] filled the room with a rich aroma.`,\n  `(Sophie) won a scholarship. [She] was thrilled with the opportunity.`,\n  `(The cat) purred. [It] enjoyed being petted.`,\n  `(Daniel) built a birdhouse. [He] used wood and nails.`,\n  `(The play) received rave reviews. [It] attracted a large audience.`,\n  `(Amy) lost her voice. [She] couldn't speak for a week.`,\n  `  (The mountain) stood tall. [It] offered a breathtaking view.`,\n  `(Luke) scored a touchdown. [He] was cheered on by his teammates.`,\n  `(The painting) hung in the gallery. [It] was admired by art enthusiasts.`,\n  `(Sophia) woke up early. [She] wanted to catch the sunrise.`,\n  `(The dog) wagged its tail. [It] greeted its owner with excitement.`,\n  `(John and Emily) planned a surprise party. [They] invited all their friends.`,\n  `(The phone) rang incessantly. [It] interrupted the quiet atmosphere.`,\n  `(Oliver) finished his workout. [He] felt energized and accomplished.`,\n  `(The flowers) bloomed in vibrant colors. [They] attracted bees and butterflies.`,\n  `(Emma) traveled to Japan. [She] explored ancient temples and tasted sushi.`,\n  `(The cake) tasted delicious. [It] melted in their mouths.`,\n  `(Daniel) fixed the flat tire. [He] used a jack to lift the car.`,\n  `(The train) departed from the station. [It] left a trail of smoke behind.`,\n  `(The baby) took its first steps. [It] stumbled but kept trying.`,\n  `(Alicia and Liam) built a sandcastle. [They] decorated it with seashells and flags.`,\n  `(The movie) kept everyone on the edge of their seats. [It] was a thrilling suspense.`,\n  `(Sarah) wrote a heartfelt letter. [She] sealed it with a kiss.`,\n  `(The rain) drizzled lightly. [It] created a soothing atmosphere.`,\n  `(Lucas) lost his wallet. [He] retraced his steps to find it.`,\n  `(The tree) swayed in the wind. [It] provided shade and shelter.`,\n  `(Emily) painted a stunning portrait. [She] captured the subject's essence.`,\n  `  (The soccer team) scored a goal. [They] celebrated with cheers and high - fives.`,\n  `(The traffic) cleared up. [It] allowed for a smooth commute.`,\n  `(Jacob) played the guitar. [He] strummed the chords with passion.`,\n  `(The cookie jar) was full. [It] tempted everyone with its sweet treats.`,\n  `(Emma and Ethan) watched a sunset. [They] marveled at the colors in the sky.`,\n  `(The firework) lit up the night sky. [It] dazzled everyone with its brilliance.`,\n  `(Sophie) lost her sunglasses. [She] searched her bag frantically to find them.`,\n  `(The book) transported the readers to a different world. [It] ignited their imagination.`,\n  `(Alex) cooked a gourmet meal. [He] used fresh ingredients and intricate techniques.`,\n  `(The waves) crashed against the rocks. [They] created a mesmerizing spectacle.`,\n  `(Megan) rode her horse. [She] galloped across the open fields.`,\n  `(The clock) chimed midnight. [It] marked the start of a new day.`,\n  `(Emily) received a bouquet of roses. [She] blushed with delight.`,\n  `(The concert) ended with a standing ovation. [It] left the audience wanting more.`,\n  `(David and Lily) planted a vegetable garden. [They] used compost and watered diligently.`,\n  `(The storm) passed, revealing a rainbow. [It] brought a sense of awe and wonder.`,\n  `(Sophia) won a prestigious award. [She] felt honored and proud.`,\n  `(The butterfly) fluttered gracefully. [It] added beauty to the garden.`,\n  `(Adam) fixed the leaky roof. [He] used a ladder and roofing materials.`,\n  `(The snow) blanketed the landscape. [It] transformed it into a winter wonderland.`,\n  `(Emma) found a hidden treasure. [She] rejoiced with excitement.`,\n  `(The candle) flickered softly. [It] created a warm and cozy ambiance.`,\n  `(Jason and Olivia) danced under the stars. [They] twirled and laughed.`,\n  `(The coffee) brewed slowly. [It] filled the room with its rich aroma.`,\n  `(Sophie) won a scholarship. [She] was overjoyed with the opportunity.`,\n  `(The cat) curled up on the window sill. [It] basked in the sunlight.`,\n  `(Daniel) built a bird feeder. [He] used wood and nails to assemble it.`,\n  `(The play) received critical acclaim. [It] showcased outstanding performances.`,\n  `(Amy) lost her voice. [She] communicated through written notes.`,\n  `(The mountain) loomed majestically. [It] challenged climbers with its height.`,\n  `(Luke) scored a home run. [He] was cheered on by the crowd.`,\n  `(The painting) hung in an art gallery. [It] captivated viewers with its beauty.`,\n  `(Sarah) woke up refreshed. [She] had a restful night's sleep.`,\n  `(The dog) chased its tail. [It] seemed endlessly amused.`,\n  `(Michael and Emily) planned a picnic. [They] packed sandwiches and fruits.`,\n  `(The phone) buzzed with notifications. [It] demanded attention.`,\n  `(Oliver) completed a crossword puzzle. [He] felt accomplished.`,\n  `(The flowers) swayed in the breeze. [They] perfumed the air with their fragrance.`,\n  `(Emma) explored a hidden cave. [She] discovered ancient paintings on the walls.`,\n  `(The cake) melted in their mouths. [It] was incredibly moist and flavorful.`,\n  `(Daniel) fixed a leaky faucet. [He] replaced the worn-out washer.`,\n  `(The train) sped through the countryside. [It] offered breathtaking views.`,\n  `(The baby) gurgled with joy. [It] brought smiles to everyone's faces.`,\n  `(Sophia and Ethan) built a sandcastle. [They] sculpted intricate details.`,\n  `(The movie) tugged at their heartstrings. [It] evoked a rollercoaster of emotions.`,\n  `(Sarah) composed a heartfelt poem. [She] poured her emotions into every line.`,\n  `(The rain) pitter-pattered on the roof. [It] created a soothing rhythm.`,\n  `(Lucas) lost his keys. [He] retraced his steps to find them.`,\n  `(The tree) provided a shady spot. [It] invited people to rest under its branches.`,\n  `(Emily) painted a breathtaking sunset. [She] captured the vivid colors of the sky.`,\n  `(The soccer team) celebrated a victory. [They] lifted the trophy with pride.`,\n  `(The traffic) flowed smoothly. [It] allowed for a quick and hassle-free commute.`,\n  `(Jacob) played the violin. [He] produced enchanting melodies.`,\n  `(The cookie jar) was filled to the brim. [It] enticed everyone with its sweet treats.`,\n  `(Emma and Ethan) hiked up a mountain. [They] enjoyed panoramic views from the top.`,\n  `(The firework) illuminated the night sky. [It] dazzled with vibrant colors.`,\n  `(Sophie) found her lost earrings. [She] felt relieved and happy.`,\n  `(The book) transported them to a fantasy realm. [It] captivated their imaginations.`,\n  `(Alex) prepared a gourmet feast. [He] crafted culinary masterpieces.`,\n  `(The waves) gently lapped the shore. [They] created a serene atmosphere.`,\n  `(Megan) rode a roller coaster. [She] screamed with exhilaration.`,\n  `(The clock) struck noon. [It] marked the midpoint of the day.`,\n  `(Emily) received a handwritten letter. [She] cherished the personal touch.`,\n  `(The concert) resonated with the audience. [It] left lasting memories.`,\n  `(David and Lily) nurtured a vegetable garden. [They] harvested fresh produce.`,\n  `(The storm) subsided, revealing a clear sky. [It] brought a sense of calm.`,\n  `(Sophia) won a prestigious art competition. [She] felt honored and proud.`,\n  `(The butterfly) fluttered gracefully from flower to flower. [It] added beauty to the garden.`,\n  `(Adam) fixed a broken chair. [He] used glue and screws.`,\n  `(The snow) glistened under the sunlight. [It] created a winter wonderland.`,\n  `(Emma) embarked on a thrilling treasure hunt. [She] followed cryptic clues.`,\n  `(The candle) emitted a soft glow. [It] created a cozy ambiance.`,\n  `(Jason and Olivia) waltzed across the dance floor. [They] twirled with elegance.`,\n  `(The coffee) brewed to perfection. [It] released a rich aroma.`,\n  `(Sophie) received a scholarship offer. [She] felt grateful and excited.`,\n  `(The cat) purred contentedly. [It] curled up in a cozy spot.`,\n  `(Daniel) built a treehouse. [He] used sturdy planks and a ladder.`,\n  `(The play) enthralled the audience. [It] showcased outstanding performances.`,\n  `(Amy) lost her voice. [She] communicated through gestures and expressions.`,\n  `(The mountain) loomed majestically over the landscape. [It] challenged adventurous climbers.`,\n  `(Luke) scored a winning point. [He] was hailed as the hero of the game.`,\n  `(The painting) adorned the gallery walls. [It] captivated visitors with its beauty.`,\n]\n\ntest('more-coreference:', function (t) {\n  arr.forEach(str => {\n    const subj = str.match(/\\(.*?\\)/)[0].replace(/[()]/g, '').toLowerCase()\n    const pronoun = str.match(/\\[.*?\\]/)[0].replace(/[[\\]]/g, '').toLowerCase()\n    const msg = here + subj + ' → ' + pronoun\n    const doc = nlp(str)\n    const p = doc.pronouns().notIf('#Possessive').hasReference()\n    t.equal(p.text('normal'), pronoun, msg)\n\n  })\n})\n"
  },
  {
    "path": "tests/three/coreference/tricky-coref.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/coreference] '\n\n// https://github.com/google-research-datasets/gap-coreference\ntest('coreference:', function (t) {\n  const arr = [\n\n    // double they\n    [` Gas prices are a top issue heading into the midterms. Polls show they’re high on voters’ minds`,\n      { they: 'Gas prices' },\n    ],\n    // anaphor-before\n    [` In their free time, the boys play video games`,\n      { their: 'the boys' },\n    ],\n\n    // tricky:\n    [\n      \"The queen, who did not believe in Firedrakes, alone took his side.\",\n      { \"his\": \"the queen\" }\n    ],\n    [\n      \"In his 1811 will, Byron requested that he be buried with him.\",\n      {\n        \"he\": \"byron\", \"him\": \"byron\"\n      }\n    ],\n    [\n      \"In 2010 she got engaged to a choreographer she met on the set of \\\"Black Swan\\\"\",\n      { \"she\": \"a choreographer\" }\n    ],\n    [\n      \"And let's close the loopholes that lead to inequality by allowing the top one percent to avoid paying taxes on their accumulated wealth.\",\n      { \"their\": \"the top one percent\" }\n    ],\n\n    [\n      \"The Sultan asked her kindly what she had in the napkin, whereupon she unfolded the jewels and presented them.\",\n      {}\n    ],\n\n    [\n      \"Then the magician went back and told to the Sultan his story.\",\n      { \"his\": \"the magician\" }\n    ],\n\n    [\n      \"This now takes 15 days, but they give you a piece of paper to use as ID in the interim.\",\n      {\n\n      }\n    ],\n    [\n      \"When his twentieth birthday was passed the Queen thought it was time that he should be married, so she commanded that the portraits of several princesses should be brought for him to see\",\n      { \"she\": \"the queen\" }\n    ],\n\n    [\n      \"His mother wrote, \\\"He has no indisposition that I know of but love, desperate love, the worst of all maladies in my opinion.\",\n      {}\n    ],\n    [\n      \"To ensure these plants set seed, biologists rappel down 3000 foot cliffs to brush pollen onto their stigmas.\",\n      { \"their\": \"these plants\" }\n    ],\n    [\n      \"Byron was a bitter opponent of Lord Elgin's removal of the Parthenon marbles from Greece and \\\"reacted with fury\\\" when Elgin's agent gave him a tour of the Parthenon, during which he saw the spaces left by the missing friezes and metopes.\",\n      { \"him\": \"Byron\", \"he\": \"Byron\" }\n    ],\n    [\n      \"The Grand Vizier and the lords of council had just gone in as she entered the hall and placed herself in front of the Sultan.\",\n      {}\n    ],\n\n\n    [\n      \"It takes every parent to teach the children the difference between right and wrong and to encourage them to learn and grow and to say no to the wrong things but also to believe that they can be whatever they want to be.\",\n      { \"they\": \"the wrong things\" }\n    ],\n\n    [\n      \"The shock came when a friend ordered a highball ....we flagged down a server, she returned from the bar.\",\n      { \"she\": \"a server\" }\n    ],\n    [\n      \"These grave dancing fairies were very unlike the Grey Women, and they were glad to see the boy, and treated him kindly.\",\n      { \"they\": \"the grey women\", \"him\": \"the boy\" }\n    ],\n    [\n      \"Little Red Riding-Hood undressed herself and went into bed, where, being greatly amazed to see how her grandmother looked in her night-clothes, she said to her: Grandmamma, what great arms you have got!\",\n      { \"her\": \"her grandmother\", \"she\": \"her grandmother\" }\n    ],\n    [\n      \"It was hard mostly because my aunt owns a restaurant and my mother used to work for her, so every meal is king's size and quality.\",\n      { \"her\": \"my aunt\" }\n    ],\n    // awkward\n    // \"Tl:dr: It won't work unless you are prepared to get your hands dirty and deal with cases that feel a bit like they came out of 2010.\",\n    [\n      \"One more point... In a city as concerned about recycling and not using non-degradable materials, I found it kind of off-putting that they use styrofoam plates, plastic eating utensils and cups.  At the prices they charge for chicken, they could afford washable plates, bowls, and flatware.\",\n      { \"they\": \"a city\" }// hmmm \n    ],\n    [\n      \"Putlibai gave Gandhi her permission and blessing.\",\n      { \"her\": \"putlibai\" }\n    ],\n\n    [\n      \"Amino acids are poor modular building-blocks because they do not act independently and there is a fundamental lack of understanding about the relationship between linear amino acid sequences and the folding and functionality of proteins.\",\n      { \"they\": \"amino acids\" }\n    ],\n\n    [\n      \"He later slept with women in the same bed but clothed, and finally he slept naked with women.\",\n      {}\n    ],\n    [\n      \"give our people the tools they need\",\n      {}\n    ],\n    [\n      \"They were like three very beautiful young women, dressed one in green, one in white, and one in red, and they were dancing and singing round an apple tree with apples of gold, and this was their song:\",\n      { \"they\": \"three very beautiful young women\", \"their\": \"three very beautiful young women\" }\n    ],\n\n\n    [\n      \"What I would say to those who argue that the worst is over is this: over the course of the last 2 years, the government of Sudan and its surrogates killed as many as 400,000 people and drove one third of the population of Darfur off their land.\",\n      { \"their\": \"one third of the population\" }\n    ],\n\n    [\n      \"Therefore, our menus stayed on the tables because they were too sticky to be removed.\",\n      { \"they\": \"our menus\" }\n    ],\n    [\n      \"I have also heard rumors that drivers save on gas when they ride with their windows down and the A/C off.\",\n      { \"they\": \"drivers\", \"their\": \"drivers\" }\n    ],\n    [\n      \"Besides, said this kind young lady, I hear he is extremely handsome, and very brave; and he has a good heart, for he was kind, I have heard, to a poor boy, and did all his examination papers for him, so that the boy passed first in everything.\",\n      {}\n    ],\n    [\n      `give a precise scientific theory of the syntax rules of grammar and their function`,\n      { their: 'the syntax rules' },\n    ],\n    [\n      `the copy-holders had writings with their holdings.`,\n      { their: 'the copy-holders' },\n    ],\n    [`Tornadoes are swirling clouds. They arrive during the summer`,\n      { they: `Tornadoes` },\n    ],\n    [\n      \"Tornadoes come in many shapes and sizes, and they are often visible in the form of a condensation funnel originating from the base of a cumulonimbus cloud, with a cloud of rotating debris and dust beneath it.\",\n      { \"they\": \"tornadoes\" }\n    ],\n    [\n      \"An enemy watched all of these scenes, adjusted their tactics, and in 2006 they struck back.\",\n      { \"their\": \"an enemy\", \"they\": \"an enemy\" }\n    ],\n    [\n      \"I also asked this Congress to support our efforts to enlist colleges and universities to reach out to disadvantaged children, starting in the sixth grade, so that they can get the guidance and hope they need so they can know that they, too, will be able to go on to college.\",\n      { \"they\": \"disadvantaged children\" }\n    ],\n    [\n      \"The Sultan was very well pleased with the magician's conduct, and said to her: Do you as you think fit; I'll wait patiently the event of your promises, and to encourage her made her a present of a diamond of great value.\",\n      { \"her\": \"the magician\" }\n    ],\n    [\n      \"Although the price I pay for my prescriptions is competitive or lower than the larger chains, Fairley's adds considerable value by being who they are: kind, helpful, service-oriented, and accurate.\",\n      { \"they\": \"fairley's adds considerable value\" }\n    ],\n    [\n      \"Men are of different heights, yet they range about a mode.\",\n      { \"they\": \"men\" }\n    ],\n    [\n      \"\\\"Many and prolonged were the battles they fought\\\" on this topic, but Huxley maintained his agnostic position.\",\n      {}\n    ],\n    [\n      \"Her first hubby was Billy Smith; she was a topless dancer when she met No. 2, oilman J. Howard Marshall, 60+ years her senior\",\n      {}\n    ],\n    [\n      \"And I'll hold her like a lady, thank God she's all mine\",\n      {}\n    ],\n\n    [\n      \"You don't need to be best friends with his friends, but it helps if you can tolerate them well enough to spend time around them when necessary.\",\n      { \"them\": \"his friends\" }\n    ],\n    [\n      \"Some citizens in this Canadian capital get their news from the Citizen newspaper\",\n      { \"their\": \"some citizens\" }\n    ],\n    [\n      \"In May 1961 he vowed to land a man on the moon & return him safely to Earth by the end of the decade\",\n      { \"him\": \"a man\" }\n    ],\n    [\n      \"These teeth usually erupt between the ages of 17 & 25, hence their popular name\",\n      { \"their\": \"these teeth\" }\n    ],\n    [\n      \"She emphasized the important activities undertaken by non-governmental organizations active in women's rights and suggested investigating ways to utilize their contributions more actively.\",\n      { \"their\": \"non-governmental organizations\" }\n    ],\n    [\n      \"Peasant farmers in Africa, Haiti, and other impoverished regions currently plant their crops without the benefit of high-yield seed varieties and fertilizers.\",\n      { \"their\": \"peasant farmers\" }\n    ],\n\n    [\n      \"We may even consider it a rewarding testament to an artist’s ability to overcome his past mistakes and still produce priceless work.\",\n      { \"his\": \"an artist\" }\n    ],\n    [\n      \"The poor in developing countries are again being made to endure the worst consequences of a crisis that they played no part in creating.\",\n      { \"they\": \"the poor\" }\n    ],\n    [\n      \"Northern taxpayers will be forced to inject massive amounts of capital into banks, even if the authorities impose significant losses on banks’ large and wholesale creditors, as well they should.\",\n      { \"they\": \"the authorities\" }\n    ],\n    [\n      \"Their relationship turns physical quickly and they both believe that they are soul-mates, until one day, the provincial girl comes home to find a man in their bed.\",\n      {}\n    ],\n\n    [\n      \"A number of studies will be presented on environmental policies and standards adopted by the major countries of the Organisation for Economic Cooperation and Development (OECD) and their impact on market access and competitiveness for Latin American exports.\",\n      { \"their\": \"environmental policies and standards\" }\n    ],\n    [\n      \"the leverage of Brussels over new member states increases rather than diminishes after they join.\",\n      { \"they\": \"brussels\" }\n    ],\n    // singular word as group\n    [\n      `the committee gathered their delegates`,\n      { their: 'the committee' },\n    ],\n  ]\n  arr.forEach(a => {\n    const [text, refs] = a\n    const doc = nlp(text)\n    const pronouns = doc.pronouns().hasReference()\n    t.equal(Object.keys(refs).length, pronouns.length, here + `[count] '${text}'`)\n    Object.keys(refs).forEach(k => {\n      const m = pronouns.if(k).refersTo()\n      t.equal(m.text('normal'), refs[k], here + ` [${k}] - ${refs[k]}`)\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/full-api.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/full-api] '\n\n//run every method once, and check against runtime errors\ntest('constructor api', function (t) {\n  const fns = {\n    tokenize: () => { nlp.tokenize(\"you're sure you haven't just made thousands of mistakes?\") },\n    plugin: () => { nlp.plugin({ words: { bloobah: 'Yeah' } }) },\n    verbose: () => { nlp.verbose(false); nlp('I am the very model of a modern Major-General') },\n    version: () => { nlp.version },\n    all: () => { nlp('this is yelling').match('#Verb').toTitleCase().all().text() },\n    found: () => { nlp('oh say can you see?').match('see').found },\n    wordCount: () => { nlp('this is yelling').wordCount() },\n    length: () => { nlp('jackie kennedy and aristotle onassis').match('#Person+').length },\n    clone: () => { nlp('would somebody please think of the children').clone().toUpperCase().all().text() },\n    cache: () => { const doc = nlp(\"I'm looking for Amanda Hugginkiss\").cache({ root: true }); doc.match('~look~') },\n    uncache: () => { const doc = nlp(\"urine-soaked hell-hole\").uncache(); doc.tag(\"Insult\") },\n    first: () => { nlp('foo').first() },\n    last: () => { nlp('foo').last() },\n    slice: () => { nlp('Homer, have you been eating that sandwich again?').terms().slice(0, 3).text() },\n    eq: () => { nlp('foo').eq(1) },\n    firstTerm: () => { nlp('foo').firstTerm() },\n    lastTerm: () => { nlp('foo').lastTerm() },\n    termList: () => { nlp('foo').termList() },\n    match: () => { nlp('we understand, we are from the land of chocolate.').match('land of #Noun').text() },\n    not: () => { nlp('wait, there’s a new mexico?').match('#Place').not('new').text() },\n    matchOne: () => { nlp('foo').matchOne() },\n    if: () => { nlp('We’re here, we’re clear, we don’t want anymore bears.').clauses().if('anymore').text() },\n    ifNo: () => { nlp('We’re here, we’re clear, we don’t want anymore bears.').clauses().ifNo('anymore').text() },\n    has: () => { nlp('I am the very model of a modern Major-General').has('#Pronoun') },\n    lookBehind: () => { nlp('foo').lookBehind() },\n    lookAhead: () => { nlp('foo').lookAhead() },\n    before: () => { nlp('one two three four five').before('three').text() },\n    after: () => { nlp('one two three four five').after('three').text() },\n    lookup: () => { nlp('chocolate microscopes? double guitars?').lookup(['double guitars']).length },\n    toUpperCase: () => { nlp('Dental plan. Lisa needs braces.').match('dental .').toUpperCase().text() },\n    toLowerCase: () => { nlp('Careful! They’re RUFFLED!!').toLowerCase().text() },\n    toTitleCase: () => { nlp('jupiter, pluto and mars').match('#Noun').toTitleCase().all().text() },\n    toCamelCase: () => { nlp('natural language processing').toCamelCase().text() },\n    pre: () => { nlp(\"we're here. we're clear. we don't want anymore bears.\").pre(\"  \") },\n    post: () => { nlp(\"we're here. we're clear. we don't want anymore bears.\").post('!') },\n    trim: () => { nlp(' Lenny and Carl ').match('#Person').trim().text() },\n    hyphenate: () => { nlp('natural language processing').hyphenate().text() },\n    dehyphenate: () => { nlp('natural-language processing').dehyphenate().text() },\n    tag: () => { nlp('Michael Apple ate a delicious apple.').match('#FirstName apple').tag('Person').all().match('#Person+').text() },\n    tagSafe: () => { nlp('foo').tagSafe() },\n    unTag: () => { nlp('they made a catch & scored a run').match('(run|catch)').unTag('#Verb').all().match('#Verb').out('array') },\n    canBe: () => { nlp('it’s fusilli jerry!').canBe('Person').text() },\n    map: () => { nlp('yahoo serious festival').terms().map((m) => m.toUpperCase()).text() },\n    forEach: () => { nlp('Oh, no! Bette Midler!').match('#Person+').forEach((m) => m.text()) },\n    filter: () => { nlp('Hey, anymore arboretum’s around here?').terms().filter(m => m.has('#Plural')).length },\n    find: () => { nlp('Always do the opposite of what bart says').terms().find(m => m.out('normal').match(/b[ao]rt/)).text() },\n    some: () => { nlp('Don’t make me run, I’m full of chocolate!').terms().some(m => m.out('normal') === 'run') },\n    random: () => { nlp('one two three four').terms().random(2).out('array') },\n    replaceWith: () => { nlp('it was the worst of times').match('worst').replaceWith('blurst', true).all().text() },\n    replace: () => { nlp('trust me folks, big league.').replace('big league', 'bigly').all().text() },\n    delete: () => { nlp('you don’t win friends with salad').delete('do not').text() },\n    append: () => { nlp('i know so many words').insertAfter('bigly').all().text() },\n    prepend: () => { nlp('stupid flanders').match('flanders').insertBefore('sexy').all().text() },\n    concat: () => { nlp('My name is Otto').concat('and i love to get blotto').all().length },\n    sort: () => { nlp('Larry, Curly, Moe').terms().sort('alphabetical').out('array') },\n    reverse: () => { nlp('foo').reverse() },\n    normalize: () => { nlp(' so... you like   DONUTS? have all the donuts in the WORLD!!!').normalize().all().get(0).text() },\n    unique: () => { nlp('foo').unique() },\n    split: () => { nlp('Monorail...Once again! Monorail... Monorail!').splitOn('monorail').eq(0).text() },\n    splitAfter: () => { nlp('Monorail...Once again! Monorail... Monorail!').splitAfter('monorail').eq(0).text() },\n    splitBefore: () => { nlp('Monorail...Once again! Monorail... Monorail!').splitBefore('monorail').eq(0).text() },\n    text: () => { nlp('you might say there’s a little Uter in all of us').match('#Adjective uter').out('array') },\n    out: () => { nlp('foo').out() },\n    json: () => { nlp('The stage was set for the Alan Parsons Project! Which I believe was some sort of hovercraft.').data() },\n    terms: () => { nlp('we should all be more like little Ruttiger').terms().json() },\n    clauses: () => { nlp('All right, Colossus, you’re free to go, but stay away from Death Mountain').clauses().data() },\n    hyphenated: () => { nlp('foo').hyphenated() },\n    phoneNumbers: () => { nlp('Moe Sizlak. That’s right. I’m a surgeon. (800) 555-0000.').phoneNumbers().json() },\n    hashTags: () => { nlp('oh, but where is the #anykey').hashTags().json() },\n    emails: () => { nlp('foo').emails() },\n    emoticons: () => { nlp('foo').emoticons() },\n    emoji: () => { nlp('foo').emoji() },\n    atMentions: () => { nlp('foo').atMentions() },\n    urls: () => { nlp('thank you http://simpsons.wikia.com').urls().json() },\n    adverbs: () => { nlp('foo').adverbs() },\n    pronouns: () => { nlp('foo').pronouns() },\n    conjunctions: () => { nlp('foo').conjunctions() },\n    prepositions: () => { nlp('foo').prepositions() },\n    abbreviations: () => { nlp('foo').abbreviations() },\n    contractions: () => { nlp('foo').contractions() },\n    parentheses: () => { nlp('Use a pointed stick (a pencil) or a similar tool').parentheses().data() },\n    possessives: () => { nlp('moe’s tavern').possessives().text() },\n    quotations: () => { nlp('the he said \"crazy like a fox!\".').quotations().data().length },\n    acronyms: () => { nlp('foo').acronyms() },\n    nouns: () => { nlp('foo').nouns() },\n    verbs: () => { nlp('Moe Sizlak. That’s right. I’m a surgeon.').verbs() },\n    // debug: () => { nlp('foo').debug() },\n  }\n  Object.keys(fns).forEach(k => {\n    t.doesNotThrow(() => {\n      try {\n        fns[k]()\n      } catch (e) {\n        t.fail(here + k + e)\n      }\n    }, k)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/fuzz.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/fuzz] '\n\n\nconst subsets = [\n  'abbreviations',\n  'acronyms',\n  'clauses',\n  'contractions',\n  // 'lists',\n  'nouns',\n  'parentheses',\n  'possessives',\n  'quotations',\n  'verbs',\n  'people',\n  'terms',\n  'hyphenated',\n  'adjectives',\n  'hashTags',\n  'emails',\n  'emoji',\n  'emoticons',\n  'atMentions',\n  'urls',\n  'adverbs',\n  'pronouns',\n  'conjunctions',\n  'prepositions',\n  'sentences',\n  'phoneNumbers',\n  'places',\n  'organizations',\n  'topics',\n  'numbers',\n  'fractions',\n  // 'money',\n]\n\nconst isArray = function (arr) {\n  return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\n\nconst goodIds = function (doc) {\n  const all = {}\n  doc.docs.forEach(terms => {\n    terms.forEach(term => {\n      if (!term.id || all[term.id] === true) {\n        return\n      }\n      all[term.id] = true\n    })\n  })\n  return true\n}\n\n\ntest('try all json methods', function (t) {\n  const str = `\n  \n  .\n  ...\n  ëii🙏11+ +==\\`.\n  one one one one one one. two.\n  null constructor class ()*.\n  ## @ 00~/.\n  aaaaaaaaaasaaaaaaaaaaaaaaaaaaaaasaaaaaaaaaaaaaaaaaaaaasaaaaaaaaaaaaaaaaaaaaasaaaaaaaaaáaaaaaaaaaaaasaaaaaaaaaaa. ..\nbuffalo buffalo seem seem seem really.\n\nURGENT: ➔➔*.\n................................................................................................................\n................................................................................................................+\n-0.0#  .`\n  const doc = nlp(str)\n  subsets.forEach(sub => {\n    t.ok(doc[sub], here + sub)\n    let m = doc[sub]()\n    const arr = m.json()\n    m.tag('H*a--ar.d')\n    m.tag('prototype')\n    m.tag('null')\n    m.unTag('null')\n    m = m.match('*')\n    m.replace('. [@hasPeriod]', 'blug.')\n    m.contractions().expand()\n    m.append('.3')\n    m = m.trim()\n    t.equal(isArray(arr), true, sub + '.json()')\n    t.equal(typeof m.text(), 'string', sub + '.text()')\n    t.equal(typeof m.wordCount(), 'number', sub + '.wordcount()')\n    t.equal(typeof m.replaceWith('!').text(), 'string', 'replaceWith')\n    m = m.map(d => d.if('.'))\n    m = m.terms()\n    m.cache()\n    t.equal(typeof m.text(), 'string', sub + 'after-map')\n    t.equal(isArray(arr), true, sub + '.json() again')\n    t.equal(goodIds(m), true, here + sub + 'good-ds')\n  })\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/hashTags.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/hashtags] '\n\ntest('case insensitive:', function (t) {\n  const doc = nlp('the #leafs and the #JetsGo')\n  const m = doc.hashTags()\n  t.equal(m.length, 2, here + 'two hashtags')\n  t.end()\n})\n\ntest('case insensitive:', function (t) {\n  const doc = nlp('the #leafs and the #JetsGo')\n  const m = doc.match('the leafs and')\n  t.equal(m.text(), 'the #leafs and', here + 'hashtag normal match')\n  t.end()\n})\n\ntest('hashtag lexicon:', function (t) {\n  const str = 'the #leafs and the #JetsGo'\n  const doc = nlp(str, { leafs: 'Team' })\n  const m = doc.match('the #Team . the #HashTag')\n  t.equal(m.text(), 'the #leafs and the #JetsGo', here + 'hashtag lexicon')\n  t.end()\n})\n\ntest('atMention case:', function (t) {\n  const str = '@DonaldTrump and @lasVegas'\n  const doc = nlp(str, { lasVegas: 'City' })\n  let m = doc.atMentions()\n  t.equal(m.length, 2, here + 'two atMentions')\n\n  m = doc.match('donaldTrump and lasVegas')\n  t.equal(m.text(), str, here + 'atMention tag')\n  t.end()\n})"
  },
  {
    "path": "tests/three/json-three.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/json] '\n\n\ntest('view-json', function (t) {\n  const doc = nlp('i walk and swim gracefully')\n  const json = doc.json({ normal: true })\n  t.ok((json[0] || {}).normal, here + 'view-opts')\n  // json = doc.json(0)\n  // t.ok(json.length, 1, here + 'view-num')\n  t.end()\n})\n\ntest('verbs-json', function (t) {\n  const doc = nlp('i walk and swim gracefully')\n  let json = doc.verbs().json({ normal: true })\n  t.ok((json[0] || {}).normal, here + 'verbs-opts')\n  json = doc.verbs().json(0)\n  t.ok(json.length, 1, here + 'verbs-num')\n  t.end()\n})\n\ntest('nouns-json', function (t) {\n  const doc = nlp('i eat carrots and cabbage')\n  let json = doc.nouns().json({ normal: true })\n  t.ok((json[0] || {}).normal, here + 'nouns-opts')\n  json = doc.nouns().json(0)\n  t.ok(json.length, 1, here + 'nouns-num')\n  t.end()\n})\n\ntest('sentences-json', function (t) {\n  const doc = nlp('i eat. i swim')\n  let json = doc.sentences().json({ normal: true })\n  t.ok((json[0] || {}).normal, here + 'sentences-opts')\n  json = doc.sentences().json(0)\n  t.ok(json.length, 1, here + 'sentences-num')\n  t.end()\n})\n\ntest('numbers-json', function (t) {\n  const doc = nlp('4 books, 12 authors')\n  let json = doc.numbers().json({ normal: true })\n  t.ok((json[0] || {}).normal, here + 'numbers-opts')\n  json = doc.numbers().json(0)\n  t.ok(json.length, 1, here + 'numbers-num')\n  t.end()\n})\n\ntest('people-json', function (t) {\n  const doc = nlp('john and jim eat candy')\n  let json = doc.people().json({ normal: true })\n  t.ok((json[0] || {}).normal, here + 'person-opts')\n\n  json = doc.people().json(0)\n  t.equal(json.length, 1, here + 'person-num')\n  t.end()\n})\n\ntest('places-json', function (t) {\n  const doc = nlp('i saw paris and london')\n  const json = doc.places().json({ normal: true })\n  t.ok((json[0] || {}).normal, here + 'places-opts')\n\n  // json = doc.places().json(0)\n  // t.equal(json.length, 1, here + 'places-num')\n  t.end()\n})\n\n"
  },
  {
    "path": "tests/three/match.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/match] '\n\nconst arr = [\n  // one still works\n  ['toronto', '.'],\n  // two still works\n  ['mexico', '#Country'],\n  // three-basic\n  // ['i walked to the store', '<Noun> {Verb} {Conjunction} <Noun>'],\n  // adj must have copula\n  // ['Australia is the most diverse country', '<Noun> is {Adjective}'],\n  // ['the most diverse country is the best', '<Noun> is <Noun>'],\n\n  // [`Look at that old woman`,''],\n  // [`She lived in New York at that time.`,''],\n  // [`Where is that friend of yours?`,''],\n  // [ `He said that he was hungry.`,''],\n  // [ `I bought the materials that are required`,''],\n]\ntest('match:', function (t) {\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    const msg = `'${(a[0] + \"' \").padEnd(20, '.')}  - '${a[1]}'`\n    const m = doc.match(a[1])\n    t.equal(m.text(), doc.text(), here + msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/misc.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/misc] '\n\ntest('full-sentence-issue', function (t) {\n  let doc = nlp(`Images of death have lost shock value`)\n  doc.ptrs = [[0], [0]]\n  t.equal(doc.questions().found, false, here + 'no questions')\n  t.equal(doc.length, 2, here + '2 matches')\n  t.equal(doc.sentences().length, 2, here + '2 sentences')\n  doc.unique()\n  t.equal(doc.sentences().length, 2, here + 'still 2')\n  doc = doc.unique()\n  t.equal(doc.sentences().length, 1, here + '1 unique sentence')\n  t.end()\n})\n\ntest('test overloading', function (t) {\n  const doc = nlp(`the 7 days since december were gross`)\n\n  let m = doc.verbs()\n  t.ok(m.json(), 'overload-verb')\n  t.equal(m.eq(0).viewType, 'Verbs', 'still-is-verb')\n\n  m = doc.nouns()\n  t.ok(m.json(), 'overload-nouns')\n  t.equal(m.eq(0).viewType, 'Nouns', 'still-is-nouns')\n\n  m = doc.numbers()\n  t.ok(m.json(), 'overload-numbers')\n  t.equal(m.eq(0).viewType, 'Numbers', 'still-is-numbers')\n\n  m = doc.sentences()\n  t.ok(m.json(), 'overload-sentences')\n  t.equal(m.eq(0).viewType, 'Sentences', 'still-is-sentences')\n\n  m = doc.people()\n  t.ok(m.json(), 'overload-people')\n  t.equal(m.eq(0).viewType, 'People', 'still-is-people')\n\n  m = doc.places()\n  t.ok(m.json(), 'overload-places')\n  t.equal(m.eq(0).viewType, 'View', 'places has no class')\n\n  t.end()\n})\n\ntest('drop back to View', function (t) {\n  const doc = nlp(`John Smith and Jack were walking`)\n  const vb = doc.verbs()\n  // ====== drop class ----\n  let m = vb.match('.')\n  t.equal(m.viewType, 'View', here + 'match-to-view')\n\n  m = vb.before('.$')\n  t.equal(m.viewType, 'View', here + 'before-to-view')\n\n  m = vb.map(v => v)\n  t.equal(m.viewType, 'View', here + 'map-to-view')\n\n  m = vb.insertAfter('drugs')\n  t.equal(m.viewType, 'View', here + 'insert-to-view')\n\n  m = vb.remove('jack')\n  t.equal(m.viewType, 'View', here + 'remove-to-view')\n\n  m = vb.replaceWith('jack', 'blue')\n  t.equal(m.viewType, 'View', here + 'replace-to-view')\n\n  m = vb.intersection(doc.match('.'))\n  t.equal(m.viewType, 'View', here + 'intersection-to-view')\n\n  m = vb.adverbs()\n  t.equal(m.viewType, 'View', here + 'adverbs-to-view')\n\n  t.end()\n})\n\ntest('retain class', function (t) {\n  const doc = nlp(`John Smith and Jack were walking`)\n  const vb = doc.verbs()\n  // ====== keep class ---\n  let m = vb.update([])\n  t.equal(m.viewType, 'Verbs', here + 'update-keeps-class')\n\n  m = vb.find(v => v.toUpperCase())\n  t.equal(m.viewType, 'Verbs', here + 'find-kees-class')\n\n  m = vb.tag('Foo')\n  t.equal(m.viewType, 'Verbs', here + 'tag-keeps-class')\n\n  m = vb.ifNo('.')\n  t.equal(m.viewType, 'Verbs', here + 'if-keeps-class')\n\n  m = vb.toUpperCase()\n  t.equal(m.viewType, 'Verbs', here + 'case-keeps-class')\n\n  m = vb.clone()\n  t.equal(m.viewType, 'Verbs', here + 'clone-keeps-class')\n\n  m = vb.sort('alpha')\n  t.equal(m.viewType, 'Verbs', here + 'sort-keeps-class')\n\n  m = vb.unique()\n  t.equal(m.viewType, 'Verbs', here + 'unique-keeps-class')\n  t.end()\n})\n\n\ntest('barely a term', function (t) {\n  let str = '.('\n  let doc = nlp(str)\n  t.equal(doc.out(), str, 'barely-term-no-space')\n  str = '.( '\n  doc = nlp(str)\n  t.equal(doc.out(), str, 'barely-term-with-space')\n  t.end()\n})\n\n//#744\ntest('replacement with a contraction', function (t) {\n  let doc = nlp('a b c d')\n  t.equal(doc.text(), 'a b c d', 'before replace')\n  doc.replace('b', \"added i'm\")\n  t.equal(doc.text(), \"a added i'm c d\", 'after replace')\n\n  doc = nlp(\"The only reason he doesn't continue is because of how tired he feels.\", { reason: 'Noun' })\n  doc.verbs().toPastTense()\n  t.equal(doc.text(), 'The only reason he did not continue was because of how tired he felt.', 'conjugate-contraction')\n\n  t.end()\n})\n\ntest('json extended options:', function (t) {\n  const doc = nlp(`Hey everybody, I'm lookin' for Amanda Hugginkiss`)\n  const json = doc.people().json({ offset: true })\n  t.ok(json[0].offset, here + 'exteded json methods')\n  t.end()\n})\n\n\ntest('tag-multiples:', function (t) {\n  const r = nlp('twas brillig in the doofgafoof.')\n  r.match('brillig').tag(['Foo', 'Barr'])\n  t.ok(r.match('#Foo').found, 'tagged-foo')\n  t.ok(r.match('#Barr').found, 'tagged-barr')\n  t.end()\n})\n\n// -----\ntest('root-text vs match-text', function (t) {\n  const str = `  paper, scissors, rock. I run with scissors.`\n  const doc = nlp(str).match('*').all()\n  t.equal(doc.text(), str, 'perfect-root-text')\n\n  const m = doc.match('scissors')\n  t.equal(m.text(), 'scissors, scissors', 'match-text')\n  t.end()\n})\n\n"
  },
  {
    "path": "tests/three/miss.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/miss] '\n\nconst arr = [\n  ['Canada', '<Verb>'],\n  ['Canada Legislative Center', '<Verb>'],\n  ['Canada Legislative Center', '<Conjunction>'],\n  ['Canada Legislative Center', '<foobar>'],\n  // three missing basic\n  ['i walked to the store', '<Verb> <Noun> <Verb>'],\n  ['i walked to the store', '<Noun> <Adjective>'],\n  // adverb, no verb\n  // ['about 20 minutes relatively quietly', '<Verb>'],\n  // ['quite suddenly', '<Verb>'],\n  // adjective moves around\n  // ['Australia is the most diverse country', '{Adjective} is <Noun>'],\n  // ['Australia is the most diverse country', '<Noun> is <Noun>'],\n  // ['Australia is the most diverse country', '<Noun> is <Verb>'],\n  // ['Australia is the most diverse country', '<Noun> {Adjective}'], //missing verb-phrase\n]\n\ntest('no-match:', function (t) {\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    const msg = `'${(a[0] + \"' \").padEnd(20, '.')}  - '${a[1]}'`\n    t.equal(doc.has(a[1]), false, here + msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/normalize/normalize-custom.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/normalize-one] '\n\ntest('normalize defaults', function (t) {\n  const doc = nlp.tokenize(` it's   coöl, (i think) .    He is   cool;  i said .`)\n  doc.normalize()\n  t.equal(doc.text(), `it's cool (i think). He is cool i said.`, here + 'normalize-defaults')\n  t.end()\n})\n\ntest('normalize unicode', function (t) {\n  const doc = nlp.tokenize(` it's   coöl, (i think) .    He is   cool;  i said .`)\n  doc.normalize({ unicode: true })\n  t.equal(doc.text(), ` it's   cool, (i think) .    He is   cool;  i said .`, here + 'normalize-unicode')\n  t.end()\n})\n\ntest('normalize punctuation', function (t) {\n  const doc = nlp.tokenize(` it's   coöl, (i think) .    He is   cool;  i said .`)\n  doc.normalize({ punctuation: true })\n  t.equal(doc.text(), ` it's   coöl (i think) .    He is   cool  i said.`, here + 'normalize-punct')\n  t.end()\n})\n\ntest('normalize whitespace', function (t) {\n  const doc = nlp.tokenize(` it's   coöl, (i think) .    He is   cool;  i said .`)\n  doc.normalize({ whitespace: true })\n  t.equal(doc.text(), `it's coöl, (i think). He is cool; i said.`, here + 'normalize-whitespace')\n  t.end()\n})\n\ntest('normalize parentheses', function (t) {\n  const doc = nlp(` it's   coöl, (i think) .    He is   cool;  i said .`)\n  doc.normalize({ parentheses: true })\n  t.equal(doc.text(), ` it's   coöl, i think .    He is   cool;  i said .`, here + 'normalize-parentheses')\n  t.end()\n})\n\ntest('normalize contractions', function (t) {\n  const doc = nlp(` it's   coöl, (i think) .    He is   cool;  i said .`)\n  doc.normalize({ contractions: true })\n  t.equal(doc.text(), ` it is   coöl, (i think) .    He is   cool;  i said .`, here + 'normalize-contractions')\n  t.end()\n})\n\ntest('normalize numbers', function (t) {\n  const txt = nlp('the so-called group of seven').normalize({ numbers: true }).text()\n  t.equal(txt, 'the so-called group of 7', here + 'norm numbers')\n  t.end()\n})\n\ntest('normalize empty', function (t) {\n  const doc = nlp('').none()\n  doc.normalize()\n  t.equal(doc.text(), ``, here + 'normalize-nothing')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/normalize/normalize-methods.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/normalize-more] '\n\ntest('possessives', function (t) {\n  let doc = nlp(`Corey Hart's pudding and Google's advertising`)\n  doc = doc.normalize({ possessives: true, case: false })\n  t.equal(doc.out(), 'corey hart pudding and google advertising', here + 'normalize possessives')\n  t.end()\n})\n\ntest('optional params', function (t) {\n  const doc = nlp(`John Smith bought automobiles (for us)`).normalize({\n    case: true,\n    possessives: true,\n    parentheses: true,\n    verbs: true,\n  })\n  t.equal(doc.out(), 'john smith buy automobiles for us', here + 'many-on')\n  t.end()\n})\n\ntest('optional param - verbs and plurals together', function (t) {\n  const plurals = [['batmobiles', 'batmobile']]\n  const verbs = [['I was walking', 'I walk']]\n\n  // good\n  plurals.forEach(a => {\n    const doc = nlp(a[0])\n    const pluralsOn = doc.normalize({\n      nouns: true,\n    })\n    t.equal(pluralsOn.out(), a[1], here + a[0])\n  })\n\n  // good\n  verbs.forEach(a => {\n    const doc = nlp(a[0])\n    const verbsOn = doc.normalize({\n      verbs: true,\n    })\n    t.equal(verbsOn.out(), a[1], here + a[0])\n  })\n\n  // bad\n  plurals.concat(verbs).forEach(a => {\n    const doc = nlp(a[0])\n    const bothOn = doc.normalize({\n      nouns: true,\n      verbs: true,\n    })\n    t.equal(bothOn.out(), a[1], here + a[0])\n  })\n\n  t.end()\n})\n\ntest('honorifics', function (t) {\n  const tests = [\n    ['rear admiral Smith', 'smith'],\n    ['Lieutenant John Smith', 'john smith'],\n    // ['Admiral Davis Jr', 'davis jr'],\n    // ['Field marshal Herring', 'herring'],\n    ['General Lou Gobbells of the US air force', 'lou gobbells of the us air force'],\n    ['Rear admiral John', 'john'],\n    ['Lieutenant general James Baker', 'james baker'],\n    ['Lieutenant colonel Bing Crosby', 'bing crosby'],\n    ['Major Tom', 'tom'],\n    // ['major effort by President Xi', 'major effort by xi'],\n    ['Corporal John Herring', 'john herring'],\n    ['sergeant major Harold', 'harold'],\n    ['Second lieutenant Semore Hirthman', 'semore hirthman'],\n    ['first lady Michelle obama', 'michelle obama'],\n    // ['prime minister Stephen Hawking', 'stephen hawking'],\n    //no names\n    // ['first lieutenant', '1st lieutenant'],\n    // ['Sergeant', 'sergeant'],\n  ]\n  tests.forEach(a => {\n    let doc = nlp(a[0])\n    doc = doc.normalize({\n      honorifics: true,\n      case: true,\n    })\n    t.equal(doc.out('normal'), a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('hyphen-whitespace:', function (t) {\n  const doc = nlp(`the so-called “fascist  dictator”`)\n  doc.normalize({ whitespace: true, punctuation: false })\n  t.equal(doc.text(), `the so called “fascist dictator”`, here + 'keep hyphen')\n  t.end()\n})\n\n// test('dash-whitespace:', function (t) {\n//   let str = `a dash seperates words - like that`\n//   let doc = nlp(str)\n//   doc.normalize({ whitespace: true, punctuation: false })\n//   t.equal(doc.text(), `a dash seperates words like that`, here + 'dont keep the dash')\n//   t.end()\n// })\n\ntest('elipses-whitespace:', function (t) {\n  let doc = nlp('about this ...').normalize()\n  t.equal(doc.out('text'), 'about this', here + 'normalize seperate elipses')\n\n  doc = nlp('about this ...').toLowerCase()\n  t.equal(doc.out('text'), 'about this ...', here + 'lowercase elipses')\n\n  doc = nlp('about this...').normalize()\n  t.equal(doc.out('text'), 'about this', here + 'normalize attatched elipses')\n  t.end()\n})\n\ntest('more-normalize:', function (t) {\n  let doc = nlp(`i saw first lady michelle obama`)\n  doc.normalize({ honorifics: true })\n  t.equal(doc.out('text'), 'i saw michelle obama', here + 'normalize honorifics')\n\n  doc = nlp(`google's tax return`)\n  doc.normalize({ possessives: true })\n  t.equal(doc.out('text'), 'google tax return', here + 'normalize possessives')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/normalize/normalize-preset.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/normalize-preset] '\n\ntest('normalize - light', function (t) {\n  const arr = [\n    [' so... you like donuts? have all the donuts in the world!!!', 'so you like donuts? have all the donuts in the world!'],\n    ['This is a test. ', 'This is a test.'],\n    ['This is a test?!', 'This is a test?'],\n    ['Björk, the singer-songwriter...', 'Bjork the singer songwriter'],\n    // ['the so-called “fascist  dictator”', 'the so called \"fascist dictator\"'],\n    // ['the so-called ❛singer-songwriter❜', 'the so called \\'singer songwriter\\''],\n    // ['the so-called ❛group of seven❜', 'the so called \\'group of 7\\''],\n    ['Director of the F.B.I.', 'Director of the FBI'],\n    [`he - said.`, `he said.`]\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0]).normalize().out('text')\n    t.equal(str, a[1], here + '[light] ' + a[0])\n  })\n  t.end()\n})\n\ntest('normalize - medium', function (t) {\n  const arr = [\n    [' so... you like DONUTS? have all the donuts in the WORLD!!!', 'so you like donuts? have all the donuts in the world!'],\n    ['This is a test?!', 'this is a test?'],\n    ['Björk, the singer-songwriter...', 'bjork the singer songwriter'],\n    ['Director of the F.B.I.', 'director of the fbi'],\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0]).normalize('medium').out('text')\n    t.equal(str, a[1], here + '[medium] ' + a[0])\n  })\n  t.end()\n})\n\ntest('normalize - heavy', function (t) {\n  const arr = [\n    [' so... you like DONUTS? have all the donuts in the WORLD!!!', 'so you like donut? have all the donut in the world!'],\n    ['This is a test?!', 'this be a test?'],\n    ['Björk, the singer-songwriter...', 'bjork the singer songwriter'],\n    ['Director of the F.B.I.', 'director of the fbi'],\n    ['cross', 'cross'],\n    ['the police', 'the police'],\n    ['the kiss', 'the kiss'],\n    ['he kisses', 'he kiss'],\n    ['we kiss', 'we kiss'],\n    ['series', 'series'],\n    ['the clothes', 'the clothes'],\n    ['the services', 'the service'],\n    ['he services', 'he service'],\n    ['the species', 'the species'],\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0]).normalize('heavy').out('text')\n    t.equal(str, a[1], here + '[heavy] ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/nouns/adjectives.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/noun-adjectives] '\n\ntest('.adjectives():', function (t) {\n  let doc = nlp('the really cute cat')\n  let m = doc.nouns().adjectives()\n  t.equal(m.text(), 'cute', here + 'cute .')\n\n  doc = nlp('the really cute orange cat')\n  m = doc.nouns().adjectives()\n  t.equal(m.text(), 'cute orange', here + 'two adjectives')\n\n  // doc = nlp('the cat who was really mean')\n  // m = doc.nouns().adjectives()\n  // t.equal(m.text(), 'mean', here + 'who was really .')\n\n  doc = nlp('the cat that was mean attacked the cute dog')\n  // m = doc.nouns(0).adjectives()\n  // t.equal(m.text(), 'mean', here + 'first-noun')\n  m = doc.nouns(1).adjectives()\n  t.equal(m.text(), 'cute', here + 'second-noun')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/nouns/isPlural.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/noun-isPlural] '\n\ntest('isPlural:', function (t) {\n  const arr = [\n    ['octopus', false],\n    ['tree', false],\n    ['trees', true],\n    ['i', false],\n    ['mayor of chicago', false],\n    ['mayors of chicago', true],\n    ['octopus', false],\n    ['octopi', true],\n    ['eyebrow', false],\n    ['eyebrows', true],\n    ['child', false],\n    ['children', true],\n    [\"spencer's\", false],\n    [\"toronto's\", false],\n    ['circus', false],\n    ['circuses', true],\n    ['circuses', true],\n    [\"simpsons'\", false],\n    [\"she's\", false],\n  ]\n  arr.forEach(function (a) {\n    const r = nlp(a[0]).nouns()\n    const msg = a[0]\n    t.equal(r.isPlural().found, a[1], here + msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/nouns/noun-find.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/noun-find] '\n\n//(from https://brenocon.com/JustesonKatz1995.pdf)\n// AN: linear function; lexical ambiguity; mobile phase\n// NN: regression coefficients; word sense; surface area\n// AAN: Gaussian random variable; lexical conceptual paradigm; aqueous mobile\n// phase\n// ANN: cumulative distribution function; lexical ambiguity resolution; accessible\n// surface area\n// NAN: mean squared error; domain independent set; silica based packing\n// NNN: class probability function; text analysis system; gradient elution chromatography\n// NPN: degrees of freedom; [no example]; energy of adsorption\n\ntest('noun-phrases', function (t) {\n  const arr = [\n    ['he was the mayor of chicago', ['he', 'the mayor of chicago']],\n    ['he was the captain of the football team', ['he', 'the captain of the football team']],\n    ['he was the Knight of the Round Table', ['he', 'the Knight of the Round Table']],\n    ['i was in the pit of despair', ['i', 'the pit of despair']],\n    ['she is a piece of work', ['she', 'a piece of work']],\n    // ['business and desire', ['business']],\n    // ['day and night', ['day']],\n    ['i saw the central processing unit', ['i', 'the central processing unit']],\n    ['most people built a binary tree', ['most people', 'a binary tree']],\n    ['it had good air-flow', ['it', 'good air-flow']],\n    ['it was good', ['it']],\n    ['the 5-person chairlift', ['the 5-person chairlift']],\n    ['he had the right of way', ['he', 'the right of way']],\n    ['my retail bank sucks', ['my retail bank']],\n    [\"my activation code isn't working\", ['my activation code']],\n    ['my speech recognition system served us well', ['my speech recognition system', 'us']],\n    ['a typical machine learning documentary film', ['a typical machine learning documentary film']],\n    ['every cold war re-enactment is boring', ['every cold war re-enactment']],\n    ['two slices of cranberry', ['two slices of cranberry']],\n    // [`Japan 'Twitter killer' pleads guilty to murders`, ['Japan', `'Twitter killer''`, 'murders']],\n    [`At Corky's carnival, this attraction uses the \"human\"`, [\"Corky's carnival,\", 'this attraction', 'the \"human\"']],\n    [`a Gaussian random variable for determining true north`, ['a Gaussian random variable', 'true north']],\n    [\n      `the witty mathematics professor set the accessible surface area`,\n      ['the witty mathematics professor', 'the accessible surface area'],\n    ],\n    [`the team of chearleaders drew closer`, ['the team of chearleaders']],\n    [`nobody suspected that the mobile phone was working`, ['nobody', 'the mobile phone']],\n    [\n      `a slew of gadgets was sitting on the delicate table near the door`,\n      ['a slew of gadgets', 'the delicate table near the door'],\n    ],\n\n    [`spencer's friend is upset`, [`spencer's friend`]],\n\n    // #Noun - #Pronoun\n    [`he says sorry there is no gravy`, ['he', 'gravy']],\n    [`The next time I met him`, ['The next time', 'I', 'him']],\n    [`Next morning they went`, ['Next morning', 'they']],\n    [`Huh, I would’ve thought it was the other way around.`, ['I', 'it', 'the other way around.']],\n    [`I remember this semi truck coming towards me`, ['I', 'this semi truck', 'me']],\n    [`As he recalled the misfortune he wept bitterly`, ['he', 'the misfortune', 'he']],\n    [`The data we are receiving`, ['The data', 'we']],\n    [`The next two folks I have seen`, ['The next two folks', 'I']],\n    [`Every second word he swore`, ['Every second word', 'he']],\n    [`your forgiveness I implore`, ['your forgiveness', 'I']],\n    [`we commended him for his bravery`, ['we', 'him', 'his bravery']],\n    ['because you are a client i can not ask', ['you', 'a client', 'i']],\n    ['with the black suit i wore', ['the black suit', 'i']],\n    // ['give them the best meal', ['them', 'the best meal']],\n    // ['teach him five lessons', ['him', 'five lessons']],\n    // #Noun in #Noun\n    [`I told my wife I wanted breakfast in bed`, ['I', 'my wife', 'I', 'breakfast in bed']],\n    // ['everybody in the tavern', ['everybody in the tavern']],\n    // ['he was a person of interest in the case', ['he', 'a person of interest', 'the case']],\n    ['Some citizens in this Canadian capital', ['Some citizens', 'this Canadian capital']],\n    ['Gandhi in his final year of life was an ascetic', ['Gandhi', 'his final year of life', 'an ascetic']],\n    ['the service techs are friendly', ['the service techs']],\n    [`piece of that Butterfinger I ate in january '07`, ['piece of that Butterfinger', 'I', \"january '07\"]],\n    ['the noise the slide makes', ['the noise', 'the slide']],\n    ['Had to lick his shoe', ['his shoe']],\n    ['precisely to relieve the burden', ['the burden']],\n    // [`are we going to the premium one at two `, ['we','the premium one','two']],\n    // [`you will read a page and want to shoot yourself`, ['you', 'a page', 'yourself']],\n    // [`check some benchmarks for c and java `, ['some benchmarks','c and java']],\n    // [`As a result of this decision, the Nation reinstated the class`, []],\n    [`heavy rains wash away stagnant pools `, ['heavy rains', 'stagnant pools']],\n    // [`'My first play through of it'`,[]]\n    [`They walked on through the night`, ['They', 'the night']],\n    [`you have only the practice of friendship`, ['you', 'the practice of friendship']],\n    [`we commended him for his bravery`, ['we', 'him', 'his bravery']],\n    [`should give parents their power`, ['parents', 'their power']],\n    [`Sweet is the scent`, ['the scent']],\n    [`the surly captain of the basketball team`, ['the surly captain of the basketball team']],\n    [`the nine captains of the new orleans basketball team`, ['the nine captains of the new orleans basketball team']],\n    // [`the captain of the winning basketball team`, ['the captain of the winning basketball team']],\n    // [`the unlikely captain of the largest international basketball team`, ['the unlikely captain of the largest international basketball team'],],\n    [`are you here spencer?`, ['you', 'here', 'spencer?']],\n    [`put it right there`, ['it', 'there']],\n    [\"They were like three very beautiful young women\", ['They', 'three very beautiful young women']],\n    ['the last Russian Tzar (Nicholas II), and his failure', ['the last Russian Tzar (Nicholas II),', 'his failure']],\n    [`Former U.S. Representative Joe Schwarz said in April 2009`, ['Former U.S. Representative Joe Schwarz', 'April 2009']],\n    [`the proximate causes of an economic crisis: people are not spending`, ['the proximate causes', 'an economic crisis:', 'people']]\n  ]\n  arr.forEach(function (a) {\n    const nouns = nlp(a[0]).nouns().out('array')\n    t.deepEqual(nouns, a[1], here + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/nouns/parse.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/noun-parse] '\n\ntest('noun-parts:', function (t) {\n  const arr = [\n    {\n      str: `the team's captain`,\n      adjectives: [],\n      isPlural: false,\n      root: 'captain',\n      determiner: 'the',\n      number: '',\n    },\n    {\n      str: `the surly captain of the basketball team`,\n      adjectives: ['surly'],\n      isPlural: false,\n      root: 'captain',\n      determiner: 'the',\n      number: '',\n    },\n  ]\n  arr.forEach(obj => {\n    let { str, adjectives, root, determiner, number } = obj\n    const n = nlp(str).nouns()\n    str = \"'\" + str.split(/ /).slice(0, 5).join(' ') + \"'\"\n    const o = nlp('')\n    const parse = n.parse()[0] || { number: o, adjectives: o, determiner: o, root: o }\n\n    t.equal(parse.number.text(), number, here + `${str} [number]`)\n    // adjectives\n    t.deepEqual(parse.adjectives.out('array'), adjectives, here + `${str} [adjectives]`)\n    // determiner\n    t.equal(parse.determiner.text(), determiner, here + `${str} [determiner]`)\n    // root\n    t.equal(parse.root.text(), root, here + `${str} [root]`)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/nouns/toPlural.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/noun-toPlural] '\n\ntest('toPlural:', function (t) {\n  const arr = [\n    ['activity', 'activities'],\n    ['aircraft', 'aircraft'],\n    ['airplane', 'airplanes'],\n    ['alternative', 'alternatives'],\n    ['analysis', 'analyses'],\n    ['ant', 'ants'],\n    ['appendix', 'appendices'],\n    ['apple', 'apples'],\n    ['armadillo', 'armadillos'],\n    ['auto', 'autos'],\n    ['avocado', 'avocados'],\n    ['baby', 'babies'],\n    ['ball', 'balls'],\n    ['balloon', 'balloons'],\n    ['banana', 'bananas'],\n    ['banjo', 'banjos'],\n    ['basket', 'baskets'],\n    ['bean', 'beans'],\n    ['bed', 'beds'],\n    ['beggar', 'beggars'],\n    ['berry', 'berries'],\n    ['bible', 'bibles'],\n    ['bicycle', 'bicycles'],\n    ['bird', 'birds'],\n    ['boat', 'boats'],\n    ['book', 'books'],\n    ['bottle', 'bottles'],\n    ['bowl', 'bowls'],\n    ['box', 'boxes'],\n    ['bravo', 'bravos'],\n    ['bread', 'bread'],\n    ['bridge', 'bridges'],\n    ['bronco', 'broncos'],\n    ['broom', 'brooms'],\n    ['brush', 'brushes'],\n    ['bus', 'buses'],\n    ['butterfly', 'butterflies'],\n    ['cafe', 'cafes'],\n    ['cake', 'cakes'],\n    ['camera', 'cameras'],\n    ['candle', 'candles'],\n    ['candy', 'candies'],\n    ['car', 'cars'],\n    ['cargo', 'cargos'],\n    ['carrot', 'carrots'],\n    ['casino', 'casinos'],\n    ['castle', 'castles'],\n    ['cat', 'cats'],\n    ['cause', 'causes'],\n    ['chair', 'chairs'],\n    ['characteristic', 'characteristics'],\n    // ['cheese', 'cheeses'],\n    ['chicken', 'chickens'],\n    ['chief', 'chiefs'],\n    ['child', 'children'],\n    ['chipmunk', 'chipmunks'],\n    ['church', 'churches'],\n    ['clock', 'clocks'],\n    ['cloud', 'clouds'],\n    ['coat', 'coats'],\n    ['coin', 'coins'],\n    ['combo', 'combos'],\n    ['computer', 'computers'],\n    ['cookie', 'cookies'],\n    ['couch', 'couches'],\n    ['cow', 'cows'],\n    ['cowboy', 'cowboys'],\n    ['cowgirl', 'cowgirls'],\n    ['crisis', 'crises'],\n    ['criterion', 'criteria'],\n    ['cup', 'cups'],\n    ['cupcake', 'cupcakes'],\n    ['daisy', 'daisies'],\n    ['deer', 'deer'],\n    ['desert', 'deserts'],\n    ['desk', 'desks'],\n    ['diamond', 'diamonds'],\n    ['dice', 'dice'],\n    ['dish', 'dishes'],\n    ['dog', 'dogs'],\n    ['doll', 'dolls'],\n    ['door', 'doors'],\n    ['dose', 'doses'],\n    ['dragon', 'dragons'],\n    ['dress', 'dresses'],\n    ['drum', 'drums'],\n    ['dust', 'dusts'],\n    ['elephant', 'elephants'],\n    ['embryo', 'embryos'],\n    ['envelope', 'envelopes'],\n    ['epoch', 'epochs'],\n    ['eye', 'eyes'],\n    ['fabric', 'fabrics'],\n    ['face', 'faces'],\n    ['falcon', 'falcons'],\n    ['fan', 'fans'],\n    // ['fish', 'fish'],\n    ['fishbowl', 'fishbowls'],\n    ['flag', 'flags'],\n    ['flamingo', 'flamingos'],\n    ['flower', 'flowers'],\n    ['flowerpot', 'flowerpots'],\n    ['foot', 'feet'],\n    ['fork', 'forks'],\n    ['fountain', 'fountains'],\n    ['fox', 'foxes'],\n    ['fresco', 'frescos'],\n    ['frog', 'frogs'],\n    ['game', 'games'],\n    ['garden', 'gardens'],\n    ['gas', 'gases'],\n    ['gazebo', 'gazebos'],\n    ['ghetto', 'ghettos'],\n    ['giraffe', 'giraffes'],\n    ['glass', 'glasses'],\n    ['globe', 'globes'],\n    ['goat', 'goats'],\n    ['goose', 'geese'],\n    ['greeting', 'greetings'],\n    ['guitar', 'guitars'],\n    ['gulf', 'gulfs'],\n    ['gun', 'guns'],\n    // ['hair', 'hairs'],\n    ['half', 'halves'],\n    ['halibut', 'halibut'],\n    ['halo', 'halos'],\n    ['hammer', 'hammers'],\n    ['hand', 'hands'],\n    ['hat', 'hats'],\n    ['helmet', 'helmets'],\n    ['hero', 'heroes'],\n    ['horse', 'horses'],\n    ['hour', 'hours'],\n    ['house', 'houses'],\n    ['index', 'indices'],\n    ['insect', 'insects'],\n    ['jar', 'jars'],\n    ['jellyfish', 'jellyfish'],\n    ['juice', 'juices'],\n    ['key', 'keys'],\n    ['kiss', 'kisses'],\n    ['kite', 'kites'],\n    ['kitten', 'kittens'],\n    ['knife', 'knives'],\n    ['lady', 'ladies'],\n    ['lake', 'lakes'],\n    ['lamp', 'lamps'],\n    ['language', 'languages'],\n    ['laugh', 'laughs'],\n    ['leaf', 'leaves'],\n    ['light', 'lights'],\n    ['lion', 'lions'],\n    ['lip', 'lips'],\n    ['lipstick', 'lipsticks'],\n    ['lock', 'locks'],\n    ['magazine', 'magazines'],\n    ['man', 'men'],\n    ['mango', 'mangos'],\n    ['map', 'maps'],\n    ['memento', 'mementos'],\n    ['menu', 'menus'],\n    ['milk', 'milks'],\n    ['mirror', 'mirrors'],\n    ['monitor', 'monitors'],\n    ['monkey', 'monkeys'],\n    ['moon', 'moons'],\n    ['moose', 'moose'],\n    ['motto', 'mottos'],\n    ['mountain', 'mountains'],\n    ['mouse', 'mice'],\n    ['mug', 'mugs'],\n    ['necklace', 'necklaces'],\n    ['net', 'nets'],\n    ['neurosis', 'neuroses'],\n    ['night', 'nights'],\n    ['noise', 'noises'],\n    ['oak', 'oaks'],\n    ['ocean', 'oceans'],\n    ['orange', 'oranges'],\n    ['ostrich', 'ostriches'],\n    ['paintbrush', 'paintbrushes'],\n    ['panther', 'panthers'],\n    ['paper', 'papers'],\n    ['pear', 'pears'],\n    ['pen', 'pens'],\n    ['pencil', 'pencils'],\n    ['person', 'people'],\n    ['phone', 'phones'],\n    ['picture', 'pictures'],\n    ['pillow', 'pillows'],\n    ['pizza', 'pizzas'],\n    ['plan', 'plans'],\n    ['planet', 'planets'],\n    ['plant', 'plants'],\n    ['plate', 'plates'],\n    ['potato', 'potatoes'],\n    ['prayer', 'prayers'],\n    ['puppy', 'puppies'],\n    ['purpose', 'purposes'],\n    ['purse', 'purses'],\n    ['queen', 'queens'],\n    ['quilt', 'quilts'],\n    ['rabbit', 'rabbits'],\n    ['radio', 'radios'],\n    ['rain', 'rains'],\n    ['ring', 'rings'],\n    ['river', 'rivers'],\n    ['robot', 'robots'],\n    ['rock', 'rocks'],\n    ['room', 'rooms'],\n    ['rug', 'rugs'],\n    ['ruler', 'rulers'],\n    ['salad', 'salads'],\n    ['salmon', 'salmon'],\n    ['sandwich', 'sandwiches'],\n    ['scarf', 'scarves'],\n    ['seal', 'seals'],\n    ['shark', 'sharks'],\n    ['sheep', 'sheep'],\n    ['sheepdog', 'sheepdogs'],\n    ['shirt', 'shirts'],\n    ['shoe', 'shoes'],\n    ['skeptic', 'skeptics'],\n    ['ski', 'skis'],\n    ['sky', 'skies'],\n    ['smile', 'smiles'],\n    ['snack', 'snacks'],\n    ['snail', 'snails'],\n    ['snake', 'snakes'],\n    ['sock', 'socks'],\n    ['sofa', 'sofas'],\n    ['solo', 'solos'],\n    ['soup', 'soups'],\n    ['spacecraft', 'spacecraft'],\n    ['spider', 'spiders'],\n    ['spoof', 'spoofs'],\n    ['spoon', 'spoons'],\n    ['star', 'stars'],\n    ['stomach', 'stomachs'],\n    ['stone', 'stones'],\n    ['stopwatch', 'stopwatches'],\n    ['story', 'stories'],\n    ['student', 'students'],\n    ['studio', 'studios'],\n    ['suitcase', 'suitcases'],\n    ['sun', 'suns'],\n    ['table', 'tables'],\n    ['tactic', 'tactics'],\n    ['telephone', 'telephones'],\n    ['telescope', 'telescopes'],\n    ['television', 'televisions'],\n    ['the bruise', 'the bruises'],\n    ['the exercise', 'the exercises'],\n    ['the prize', 'the prizes'],\n    ['the promise', 'the promises'],\n    ['the raise', 'the raises'],\n    ['the size', 'the sizes'],\n    ['tie', 'ties'],\n    ['tiger', 'tigers'],\n    ['toothbrush', 'toothbrushes'],\n    ['tornado', 'tornados'],\n    ['towel', 'towels'],\n    ['train', 'trains'],\n    ['tree', 'trees'],\n    ['trout', 'trout'],\n    ['truck', 'trucks'],\n    ['tuna', 'tuna'],\n    ['tuxedo', 'tuxedos'],\n    ['umbrella', 'umbrellas'],\n    ['valley', 'valleys'],\n    ['vase', 'vases'],\n    ['vehicle', 'vehicles'],\n    ['violin', 'violins'],\n    ['voice', 'voices'],\n    ['volcano', 'volcanoes'],\n    ['wagon', 'wagons'],\n    ['wallet', 'wallets'],\n    ['watch', 'watches'],\n    ['wave', 'waves'],\n    ['whale', 'whales'],\n    ['whisper', 'whispers'],\n    ['window', 'windows'],\n    ['witch', 'witches'],\n    ['wolf', 'wolves'],\n    ['woman', 'women'],\n    ['x-ray', 'x-rays'],\n    ['xylophone', 'xylophones'],\n    ['yacht', 'yachts'],\n    // ['yo-yo', 'yo-yos'],\n    ['zebra', 'zebras'],\n    ['zoo', 'zoos'],\n    // ['mayor of chicago', 'mayors of chicago'],\n    // ['zero', 'zeros'],\n    // [\"Barrymore\", \"Barrymores\"],\n    //test that plural.pluralize()==plural..\n    // ['swim', 'swims'],\n  ]\n  arr.forEach(function (a) {\n    let doc = nlp(a[0])\n    doc.tag('Noun').compute('chunks')\n    let str = doc.nouns().toPlural().text()\n    t.equal(str, a[1], here + '[toPlural] ' + a[0])\n\n    doc = nlp(a[1])\n    doc.tag('Noun').compute('chunks')\n    str = doc.nouns().toSingular().text()\n    t.equal(str, a[0], here + '[toSingular] ' + a[0])\n\n    doc = nlp(a[0])\n    doc.tag('Noun').compute('chunks')\n    str = doc.nouns().toSingular().text()\n    t.equal(str, a[0], here + '[stay-singular] ' + a[0])\n\n  })\n  t.end()\n})\n\ntest('toPlural - longer:', function (t) {\n  const arr = [\n    [`we commended him for his hamburger`, `we commended him for his hamburgers`],\n    [`everything i say, he liked`, `everything i say, he liked`],\n    [`the tornado in Barrie swept through downtown`, `the tornados in Barrie swept through downtown`],\n    [`no cookie until after dinner`, `no cookies until after dinners`],\n    [`my finger looked green afterwards`, `my fingers looked green afterwards`],\n\n    // [\"keep a cool head\", \"keep cool heads\"],\n    [\"petsmart application?\", \"petsmart applications?\"],\n    [\"attacked by a bear?\", \"attacked by bears?\"],\n    // [\"Gal's DIARY: He ws quiet 2dy.\", \"Gal's DIARY: He ws quiet 2dy.\"],\n    // [\"All right relax.\", \"All right relax.\"],\n    [\"HP to be self-sufficient by 2010\", \"HP to be self-sufficient by 2010\"],\n    [\"the woman\", \"the women\"],\n    [\"the woman isn't dead.\", \"the women are not dead.\"],\n    [`my finger was green afterwards`, `my fingers were green afterwards`],\n  ]\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    doc.compute('chunks')\n    doc.nouns().toPlural()\n    t.equal(doc.text(), a[1], here + '[toPlural] ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/nouns/toSingular.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/noun-toSingular] '\n\ntest('toSingular:', function (t) {\n  const arr = [\n    // [\"Joneses\", \"Jones\"],\n\n    ['agents', 'agent'],\n    ['aircraft', 'aircraft'],\n    ['airports', 'airport'],\n    ['analyses', 'analysis'],\n    ['anchors', 'anchor'],\n    ['anchovies', 'anchovy'],\n    ['apples', 'apple'],\n    ['apricots', 'apricot'],\n    ['bags', 'bag'],\n    ['balls', 'ball'],\n    ['bananas', 'banana'],\n    ['barracks', 'barracks'],\n    ['bases', 'base'],\n    ['bass', 'bass'],\n    ['bats', 'bat'],\n    ['bears', 'bear'],\n    ['beds', 'bed'],\n    ['bells', 'bell'],\n    ['bicycles', 'bicycle'],\n    ['bison', 'bison'],\n    ['blankets', 'blanket'],\n    ['blocks', 'block'],\n    ['boats', 'boat'],\n    ['bonuses', 'bonus'],\n    ['books', 'book'],\n    ['bottles', 'bottle'],\n    ['bricks', 'brick'],\n    ['brooms', 'broom'],\n    ['bubbles', 'bubble'],\n    ['bunnies', 'bunny'],\n    ['buses', 'bus'],\n    ['butterflies', 'butterfly'],\n    ['buttons', 'button'],\n    ['cacti', 'cactus'],\n    ['cakes', 'cake'],\n    ['calves', 'calf'],\n    ['campuses', 'campus'],\n    ['candles', 'candle'],\n    ['capes', 'cape'],\n    ['carrots', 'carrot'],\n    ['cars', 'car'],\n    ['cases', 'case'],\n    ['cats', 'cat'],\n    ['causes', 'cause'],\n    ['chairs', 'chair'],\n    ['cheese', 'cheese'],\n    ['cheetahs', 'cheetah'],\n    ['chickens', 'chicken'],\n    ['children', 'child'],\n    ['clauses', 'clause'],\n    ['clocks', 'clock'],\n    ['clouds', 'cloud'],\n    ['cookies', 'cookie'],\n    ['cords', 'cord'],\n    ['cowboys', 'cowboy'],\n    ['cows', 'cow'],\n    ['crabs', 'crab'],\n    ['crayons', 'crayon'],\n    ['crises', 'crisis'],\n    ['cupcakes', 'cupcake'],\n    ['decreases', 'decrease'],\n    ['deer', 'deer'],\n    ['desks', 'desk'],\n    ['dinosaurs', 'dinosaur'],\n    ['diseases', 'disease'],\n    ['dogs', 'dog'],\n    ['donuts', 'donut'],\n    ['doorways', 'doorway'],\n    ['ducks', 'duck'],\n    ['eagles', 'eagle'],\n    ['embryos', 'embryo'],\n    ['eyebrows', 'eyebrow'],\n    ['fans', 'fan'],\n    ['fences', 'fence'],\n    ['fishes', 'fish'],\n    ['fountains', 'fountain'],\n    ['fowl', 'fowl'],\n    ['foxes', 'fox'],\n    ['frames', 'frame'],\n    ['frescos', 'fresco'],\n    ['fungi', 'fungus'],\n    ['geese', 'goose'],\n    ['ghettos', 'ghetto'],\n    ['glasses', 'glass'],\n    ['gloves', 'glove'],\n    ['grapes', 'grape'],\n    ['groceries', 'grocery'],\n    ['guns', 'gun'],\n    ['halos', 'halo'],\n    ['hammers', 'hammer'],\n    ['hens', 'hen'],\n    ['hippos', 'hippo'],\n    ['his excuses', 'his excuse'],\n    ['hooves', 'hoof'],\n    ['houses', 'house'],\n    ['increases', 'increase'],\n    ['jackets', 'jacket'],\n    ['kangaroos', 'kangaroo'],\n    ['keys', 'key'],\n    ['kilos', 'kilo'],\n    ['kimonos', 'kimono'],\n    ['kites', 'kite'],\n    ['kittens', 'kitten'],\n    ['knives', 'knife'],\n    ['laptops', 'laptop'],\n    ['lizards', 'lizard'],\n    ['loaves', 'loaf'],\n    ['locks', 'lock'],\n    ['logos', 'logo'],\n    ['lollipops', 'lollipop'],\n    ['mangos', 'mango'],\n    ['mannequins', 'mannequin'],\n    ['masks', 'mask'],\n    ['mementos', 'memento'],\n    ['memos', 'memo'],\n    ['men', 'man'],\n    ['mice', 'mouse'],\n    ['mirrors', 'mirror'],\n    ['monitors', 'monitor'],\n    ['monkeys', 'monkey'],\n    ['mottos', 'motto'],\n    ['mountains', 'mountain'],\n    ['mugs', 'mug'],\n    ['music', 'music'],\n    ['needles', 'needle'],\n    ['nerds', 'nerd'],\n    ['nuclei', 'nucleus'],\n    ['oafs', 'oaf'],\n    ['oceans', 'ocean'],\n    ['olives', 'olive'],\n    ['oranges', 'orange'],\n    ['owls', 'owl'],\n    ['paintings', 'painting'],\n    ['parentheses', 'parenthesis'],\n    ['pearls', 'pearl'],\n    ['penguins', 'penguin'],\n    ['pens', 'pen'],\n    ['people', 'person'],\n    ['phenomena', 'phenomenon'],\n    ['photos', 'photo'],\n    ['phrases', 'phrase'],\n    ['pianos', 'piano'],\n    ['pies', 'pie'],\n    ['pigs', 'pig'],\n    ['pillars', 'pillar'],\n    ['pillows', 'pillow'],\n    ['pimentos', 'pimento'],\n    ['plants', 'plant'],\n    ['plates', 'plate'],\n    ['pleases', 'please'],\n    ['ponchos', 'poncho'],\n    ['posters', 'poster'],\n    ['prognoses', 'prognosis'],\n    ['pros', 'pro'],\n    ['puzzles', 'puzzle'],\n    ['quintuplets', 'quintuplet'],\n    ['rabbits', 'rabbit'],\n    ['reeds', 'reed'],\n    ['releases', 'release'],\n    ['rivers', 'river'],\n    ['robots', 'robot'],\n    ['rocks', 'rock'],\n    ['roofs', 'roof'],\n    ['roses', 'rose'],\n    ['scarves', 'scarf'],\n    ['seeds', 'seed'],\n    ['sharks', 'shark'],\n    ['sheep', 'sheep'],\n    ['shoes', 'shoe'],\n    ['snails', 'snail'],\n    ['sofas', 'sofa'],\n    ['sombreros', 'sombrero'],\n    ['spiders', 'spider'],\n    ['spoons', 'spoon'],\n    ['spouses', 'spouse'],\n    ['stairs', 'stair'],\n    ['sticks', 'stick'],\n    ['surpluses', 'surplus'],\n    ['swords', 'sword'],\n    ['syllabi', 'syllabus'],\n    ['synopses', 'synopsis'],\n    ['tables', 'table'],\n    ['tacos', 'taco'],\n    ['teapots', 'teapot'],\n    ['teeth', 'tooth'],\n    ['tents', 'tent'],\n    ['the focuses', 'the focus'],\n    ['the geniouses', 'the genious'],\n    ['theses', 'thesis'],\n    ['tigers', 'tiger'],\n    ['tomatoes', 'tomato'],\n    ['tornados', 'tornado'],\n    ['torsos', 'torso'],\n    ['tosses', 'toss'],\n    ['toys', 'toy'],\n    ['trees', 'tree'],\n    ['tuxedos', 'tuxedo'],\n    ['uses', 'use'],\n    ['viruses', 'virus'],\n    ['walruses', 'walrus'],\n    ['whales', 'whale'],\n    ['wishes', 'wish'],\n    ['wives', 'wife'],\n    ['wolves', 'wolf'],\n    ['women', 'woman'],\n    ['worrywarts', 'worrywart'],\n    ['xylophones', 'xylophone'],\n    ['zebras', 'zebra'],\n    [`ireland potatoes`, 'ireland potato'],\n    [`irish potatoes`, 'irish potato'],\n    [`john's potatoes`, `john's potato`],\n    // ['Isley Brothers members', 'Isley Brothers member'],\n    // ['mayors of chicago', 'mayor of chicago'],\n    //test that sungular.singularize()==singular..\n  ]\n  arr.forEach(function (a) {\n    let doc = nlp(a[0])\n    doc.tag('Noun').compute('chunks')\n    let str = doc.nouns().toSingular().text()\n    t.equal(str, a[1], here + '[toSingular] ' + a[0])\n\n    doc = nlp(a[1])\n    doc.tag('Noun').compute('chunks')\n    str = doc.nouns().toPlural().text()\n    t.equal(str, a[0], here + '[toPlural] ' + a[0])\n\n    // doc = nlp(a[0])\n    // doc.tag('Noun').compute('chunks')\n    // str = doc.nouns().toPlural().text()\n    // t.equal(str, a[0], here + '[stay-plural] ' + a[0])\n\n  })\n  t.end()\n})\n\ntest('toSingular - longer:', function (t) {\n  const arr = [\n    [`my fingers looked green afterwards`, `my finger looked green afterwards`],\n    [`other person`, 'other person'],\n    [`other people`, 'other person'],\n    // [`other people's kids`, 'other person\\'s kid'],\n    // [`the women's room`, 'the women\\'s room'],\n  ]\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    doc.compute('chunks')\n    doc.nouns().toSingular()\n    t.equal(doc.text(), a[1], here + '[longer] ' + a[0])\n  })\n  t.end()\n})"
  },
  {
    "path": "tests/three/numbers/backlog/agreement.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../../_lib.js'\nconst here = '[three/number-agreement] '\n\ntest('misc agreement', function (t) {\n  let doc = nlp('i ate 7 kilos of fruit')\n    .numbers()\n    .units()\n  t.equal(doc.text('trim'), 'kilos', here + 'found unit')\n\n  doc = nlp('i ate 7 of them, kilos are kilograms')\n    .numbers()\n    .units()\n  t.equal(doc.text('trim'), '', here + 'found no unit')\n\n  t.end()\n})\n\ntest('ordinal agreement', function (t) {\n  const doc = nlp('seventeen beers')\n  doc.values().toOrdinal()\n  t.equal(doc.text(), 'seventeenth beer', here + 'ord-agreement')\n\n  doc.values().toCardinal()\n  t.equal(doc.text(), 'seventeen beers', here + 'card-agreement')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/numbers/backlog/conversion.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../../_lib.js'\nconst here = '[three/number] '\n\ntest('fraction/percent conversion', function (t) {\n  const arr = [\n    [`it was 80% of my paycheque.`, 'it was 80/100 of my paycheque.'],\n    [`42%`, '42/100'],\n    [`110%`, '110/100'],\n    [`2000%`, '2000/100'],\n    // [`4.5%`, '4.5/100'],\n    // [`0.2%`, '0.2/100'],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    doc.percentages().toFraction()\n    t.equal(doc.text(), a[1], here+'toFraction')\n    doc.fractions().toPercentage()\n    t.equal(doc.text(), a[0], here+'toPercentage')\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/numbers/backlog/money.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../../_lib.js'\nconst here = '[three/number] '\n\n// test('get currency ', function (t) {\n//   let arr = [\n//     ['50 canadian dollars', 'CAD'],\n//     ['10.5 kronor', 'SEK'],\n//     ['100 öre', 'SEK'],\n//     ['$50 CAD', 'CAD'],\n//     ['50 WON', 'KRW'],\n//     ['£30.50', 'GBP'],\n//     ['₩50', 'KRW'],\n//     ['$50', 'USD'],\n//     ['$50CAD', 'CAD'],\n//   ]\n//   arr.forEach((a) => {\n//     let doc = nlp(a[0])\n//     let json = doc.money().json()[0]\n//     t.equal(a[1], json.iso, here + a[0])\n//   })\n//   t.end()\n// })\n\n// test('money formats', function (t) {\n//   let doc = nlp('£30.50')\n//   let str = doc.money().toText()\n//   t.equal(str, 'thirty point five pounds', here)\n\n//   doc = nlp('9 WON')\n//   str = doc.money().toText()\n//   t.equal(str, 'nine won', '9 won', here)\n//   t.end()\n// })\n\ntest('money text', function (t) {\n  let doc = nlp('i paid 5 USD for the thing, and got $2.50 back.')\n  let m = doc.money()\n  t.equal(m.length, 2, here + 'both money forms')\n  t.equal(m.eq(0).text(), '5 USD', here + 'val-currency')\n  t.equal(m.eq(1).text(), '$2.50', here + 'sybol-val')\n\n  doc = nlp('i got 1 peso and £30.')\n  m = doc.money()\n  t.equal(m.length, 2, here + 'both intl money forms')\n  t.equal(m.eq(0).text(), '1 peso', here + 'val-currency-2')\n  t.equal(m.eq(1).text(), '£30', here + 'sybol-val-2')\n\n  doc = nlp('it is $70.23')\n  m = doc.money()\n  t.equal(m.out('normal'), '$70.23', here + 'match-$70.23')\n\n  doc = nlp('it is $703')\n  m = doc.money()\n  t.equal(m.out('normal'), '$703', here + 'match-$703')\n\n  doc = nlp('it is five euros')\n  m = doc.money()\n  t.equal(m.out('normal'), 'five euros', here + 'match-five-euros')\n\n  doc = nlp('i said five times, you should pay 12 dollars')\n  m = doc.money()\n  t.equal(m.out('normal'), '12 dollars', here + 'match-12 dollars')\n\n  doc = nlp('you should pay sixty five dollars and four cents USD')\n  m = doc.money()\n  t.equal(m.out('normal'), 'sixty five dollars and four cents usd', here + 'match-long-usd')\n\n  t.end()\n})\n\ntest('money-transform:', function (t) {\n  let doc = nlp('i paid $5.32 for a pizza slice')\n  doc.money().add(1)\n  t.equal(doc.text(), 'i paid $6.32 for a pizza slice', here + 'money-add-one')\n\n  doc = nlp('i paid fifty eight dollars')\n  doc.money().add(1)\n  t.equal(doc.text(), 'i paid fifty nine dollars', here + 'text-add-one')\n  t.end()\n})\n\ntest('money-has:', function (t) {\n  const tests = [\n    ['$7', true],\n    ['$7.0', true],\n    ['$7.00', true],\n    ['$7.003', false],\n\n    ['$7082.03', true],\n    ['$2,082.03', true],\n    ['€7.00', true],\n    ['¥70', true],\n    ['£0.20', true],\n    ['@0.20', false],\n\n    ['8 cents', true],\n    ['60 pence', true],\n    ['sixty pence', true],\n    ['sixty USD', true],\n  ]\n  tests.forEach(function (a) {\n    const r = nlp(a[0])\n    const m = r.match('#Money')\n    t.equal(m.found, a[1], here + \"money-has: '\" + a[0] + \"'\")\n  })\n  t.end()\n})\n\ntest('money-parse:', function (t) {\n  const arr = [\n    ['i paid $5.32 for a pizza slice', 5.32],\n    ['i paid $12 for a pizza slice', 12],\n    ['it was $12.00', 12],\n    ['it was $12.00.', 12],\n    ['it was $12.00?', 12],\n    ['it was $0', 0],\n    ['it was 0 dollars', 0],\n    ['five dollars and thirty-five cents', 5.35],\n    ['eight dollars and five cents', 8.05],\n    ['eight hundred dollars and five cents', 800.05],\n    ['eight hundred and twenty dollars and fifteen cents', 820.15],\n    ['eight hundred and twenty five dollars and thirty cents', 825.3],\n    ['eight hundred and twenty five dollars and thirty five cents', 825.35],\n    ['it was zero dollars', 0],\n    ['i paid fifty eight euros for it', 58],\n    ['was offered 12 thousand pounds as a reward', 12000],\n    ['£0.20', 0.2],\n    // pennies/cents\n    // ['50 cents', 0.5],\n    // ['99 cents', 0.99],\n    // ['two pennies', 0.02],\n    // ['six grosz', 0.06],\n    // ['six grosz', 0.06],\n    // ['120 öre', 1.2],\n    // ['200 dirham', 2],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    const amount = doc.money().get()\n    t.equal(amount.length, 1, here + `'${a[0]}' has 1 money result`)\n    t.equal(amount[0], a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('money false-positive:', function (t) {\n  const arr = [\n    'i paid nothing for a pizza slice',\n    'i paid no money for a pizza slice',\n    'im a millionaire',\n    '$12.0082',\n    '008f2 dollars',\n    'canadian money',\n    'USD is on the rise',\n    'bitcoin is on the rise',\n    'money penny',\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    const m = doc.money()\n    t.equal(m.found, false, here + `not money - '${a}'`)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/numbers/backlog/overlap.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../../_lib.js'\nconst here = '[three/number-overlap] '\n\ntest('number-fraction overlap', function (t) {\n  const arr = [\n    ['fifty five and two eighths', 55.25],\n    ['two fifty five and a third', 255.333],\n    ['two fifty five and five thirds', 256.667],\n  ]\n\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    const values = doc.numbers().get()[0]\n    const fractions = doc.fractions().get()[0]\n    t.equal(values, a[1], here + 'Value: ' + a[0])\n    t.equal(fractions, null, here + 'Fraction: no-fraction')\n  })\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/numbers/bigNumber.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/number-big] '\n\nconst cardinal = function (str) {\n  return nlp(str).values().json()[0].number.num\n}\n\ntest('a very large cardinal', function (t) {\n  t.equal(cardinal('nine trillion two hundred'), 9000000000200, here + 'trillion')\n  t.equal(cardinal('nine quadrillion two thousand and six'), 9000000000002006, here + 'quadrillion')\n  t.equal(cardinal('ninety trillion two thousand and six'), 90000000002006, here + 'quintilion')\n  t.equal(cardinal('ninety nine trillion two thousand and six'), 99000000002006, here + 'quintilion 2')\n  t.equal(cardinal('nine sextillion'), 9000000000000000000000, here + 'sextillion')\n  // t.equal(cardinal('nine septillion'), 9000000000000000000000000);\n  // t.equal(cardinal('ninety nine septillion two thousand and six'), 99000000000000000002006);\n  // t.equal(cardinal('one hundred and twenty-three septillion, four hundred and fifty-six sextillion, seven hundred and eighty-nine quintillion, one hundred and twenty-three quadrillion, four hundred and fifty-six trillion, seven hundred and eighty-nine billion, one hundred and twenty-three million, four hundred and fifty-six thousand and seven hundred and eighty-nine'), 123456789123456789123456789);\n  // t.equal(cardinal('seven hundred and eighty-nine quintillion, one hundred and twenty-three quadrillion, four hundred and fifty-six trillion, seven hundred and eighty-nine billion, one hundred and twenty-three million, four hundred and fifty-six thousand and seven hundred and eighty-nine'), 789123456789123456789);\n  t.end()\n})\n\ntest('number ordinal', function (t) {\n  t.equal(nlp('two hundred trillion').values().toOrdinal().toNice().text(), '200,000,000,000,000th', here + '1')\n  t.equal(nlp('thirty seven quadrillion and two hundred').values().toOrdinal().toNice().text(), '37,000,000,000,000,200th', here + '2')\n  t.equal(nlp('thirty seven quadrillion, two thousand').values().toOrdinal().toNice().text(), '37,000,000,000,002,000th', here + '3')\n  t.equal(nlp('ninety nine quadrillion, two hundred thousand').values().toOrdinal().toNice().text(), '99,000,000,000,200,000th', here + '4')\n  //javascript math can't do this.\n  // t.equal(nlp('thirty sextillion and two').values().data()[0].niceOrdinal, '30,000,000,000,000,000,000,002nd');\n  // t.equal(nlp('ninety nine quadrillion, two hundred and fifty thousand').values().data()[0].niceOrdinal, '99,000,000,000,250,000th');\n  t.end()\n})\n\ntest('text ordinal', function (t) {\n  t.equal(nlp('thirty quadrillion and two hundred').values().toText().toOrdinal().text(), 'thirty quadrillion two hundredth', here + '1')\n  t.equal(nlp('nine trillion seven hundred fifty').values().toText().toOrdinal().text(), 'nine trillion seven hundred and fiftieth', here + '2')\n  t.equal(nlp('a quintillion').values().toText().toOrdinal().text(), 'one quintillionth', here + '3')\n  t.equal(nlp('seventy-two quintillion').values().toText().toOrdinal().text(), 'seventy two quintillionth', here + '4')\n  t.end()\n})\n\ntest('from number', function (t) {\n  t.equal(nlp('9000000000200').values().toText().out(), 'nine trillion two hundred', here + '1')\n  t.equal(nlp('70000000000200').values().toText().out(), 'seventy trillion two hundred', here + '2')\n  t.equal(nlp('9000000000002006').values().toText().out(), 'nine quadrillion two thousand and six', here + '3')\n  t.equal(nlp('900,000,000').values().toText().out(), 'nine hundred million', here + '4')\n  t.equal(nlp('9,000,000,030').values().toText().out(), 'nine billion and thirty', here + '5')\n  t.equal(nlp('10,000,000,000').values().toText().out(), 'ten billion', here + '6')\n  // t.equal(nlp('900,000,000,037').values().toText().out(), 'nine hundred billion and thirty seven');\n  //javascript can't do this\n  // t.equal(nlp('90000000000000002006').values().toText().out(), 'ninety quintillion two thousand and six');\n  // t.equal(nlp('99000000000000002006').values().toText().out(), 'ninety nine quintillion two thousand and six');\n  // t.equal(nlp('9000000000000000000000').values().toText().out(), 'nine sextillion');\n  t.end()\n})\n\n// test('cardinal numbers', function(t) {\n//   t.equal(cardinal('sixty-one trillion, six hundred and eighty-nine billion, four hundred and seventy-three million, four hundred and fifty-three thousand and five hundred and ninety'), 61689473453590);\n//   t.end();\n// });\n\n// test('cardinal numbers in american form (with ands)', function(t) {\n//   t.equal(cardinal('six hundred eighty-nine billion, four hundred seventy-three million, four hundred fifty-three thousand, five hundred ninety'), 689473453590);\n//   t.end();\n// });\n\n// test('ordinal numbers', function(t) {\n//   t.equal(cardinal('six hundred and eighty-nine billion, four hundred and seventy-three million, four hundred and fifty-three thousand and five hundred and ninetieth'), 689473453590);\n//   t.end();\n// });\n\n// test('cardinal numbers in american form (with ands)', function(t) {\n//   t.equal(cardinal('six hundred eighty-nine billion, four hundred seventy-three million, four hundred fifty-three thousand, five hundred ninetieth'), 689473453590);\n//   t.end();\n// });\n"
  },
  {
    "path": "tests/three/numbers/fractions.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/fractions] '\n\ntest('numerator-denominator parsing', function (t) {\n  const arr = [\n    ['1/2', 1, 2],\n    ['seven out of ten apples', 7, 10],\n    ['i gave him one third of a slice', 1, 3],\n    ['i gave him a third of a slice', 1, 3],\n    ['i gave him two fourths of a slice', 2, 4],\n    ['i gave him a half of a gummy', 1, 2],\n    ['i gave him three halfs of a gummy', 3, 2],\n    ['3/8', 3, 8],\n    ['3/8th', 3, 8],\n    ['3/8ths', 3, 8],\n    ['3/8s', 3, 8],\n  ]\n  arr.forEach(a => {\n    const res = nlp(a[0]).fractions().json()[0] || {}\n    t.equal((res.fraction || {}).numerator, a[1], here + 'numerator - ' + a[0])\n    t.equal((res.fraction || {}).denominator, a[2], here + 'denominator - ' + a[0])\n  })\n  t.end()\n})\n\ntest('fraction-normalize:', function (t) {\n  const arr = [\n    ['in 3/8ths of a minute', 'in 3/8 of a minute'],\n    ['apparently, 3 out of four cats do think so', 'apparently, 3/4 cats do think so'],\n    ['two thirds of a cake', '2/3 of a cake'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.fractions().toFraction()\n    t.equal(doc.text(), a[1], here + a[1])\n  })\n  t.end()\n})\n\ntest('parse fractions:', function (t) {\n  const arr = [\n    ['1000th of a parsec', '0.001 of a parsec', 0.001],\n    // complex denominators\n    // ['one fifty fourths', '0.018', 0.018],\n    // ['one thirty third', '0.03', 0.03],\n    // ['one thirty second of an inch', '0.031 of an inch', 0.031],\n    // ['six thirty seconds of an inch', '0.187 of an inch', 0.187],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    const m = doc.fractions()\n    const found = m.get()[0] || {}\n    t.equal(found.decimal, a[2], here + 'parse- ' + a[0])\n  })\n  t.end()\n})\n\ntest('numbers with fractions:', function (t) {\n  const arr = [\n    ['one and a half', '1.5', 1.5],\n    ['two halves', '1', 1],\n    ['one thousandth of a parsec', '0.001 of a parsec', 0.001],\n    ['five thousandths of a foot', '0.005 of a foot', 0.005],\n    // ['two hundred and twelve and one twentieth', '212.05', 212.05],\n    ['a millionth of a degree', '0.000001', 0.000001],\n    ['a sixteenth', '0.063', 0.063],\n    ['three quarters', '0.75', 0.75],\n    ['1 and a half', '1.5', 1.5],\n    ['five hundredths', '0.05', 0.05],\n    // ['half the team', '0.5', 0.5],\n    // ['two hundred and twelve and five hundred thousandths', '212.5', 212.5],\n    // ['two hundred and twelve and five hundred and one thousandths', '212.501', 212.501],\n  ]\n\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    const m = doc.numbers()\n    const found = m.get()[0] || null\n    t.equal(found, a[2], here + a[0])\n    // t.equal(doc.fractions().toDecimal().text(), a[1], 'toDecimal(): ' + a[1])\n  })\n  t.end()\n})\n\ntest('fully-ambiguous fractions', function (t) {\n  // shouldn't mangle the 'second'\n  const arr = [\n    ['three fifths of an inch', 3, 5],\n    ['thirty fifths of an inch', 30, 5],\n    ['thirty five fifths of an inch', 35, 5],\n    ['three hundred tenths of an inch', 300, 10],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    const found = doc.fractions().get()[0] || {}\n    t.equal(found.numerator, a[1], here + 'numerator: ' + a[0])\n    t.equal(found.denominator, a[2], here + 'denominator: ' + a[0])\n  })\n  t.end()\n})\n\ntest('seconds-edge-case', function (t) {\n  // shouldn't mangle the 'second'\n  const arr = [\n    ['one fifth of a book', '1/5 of a book'],\n    ['thirty seconds', 'thirty seconds'],\n    // ['one thirty second of an inch', '1/32 of an inch'],\n    // ['three thirty secondths of an inch', '3/32 of an inch'],\n  ]\n\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.fractions().toFraction()\n    t.equal(doc.text(), a[1], here + a[1])\n  })\n  t.end()\n})\n\ntest('do-math:', function (t) {\n  const arr = nlp('1/2').fractions().get()\n  t.equal((arr[0] || {}).decimal, 0.5, here + 'do-math')\n\n  // arr = nlp('1 1/2').fractions().json()\n  // t.equal(arr[0].decimal, 1.5)\n  // t.equal(arr.length, 1)\n\n  // arr = nlp('1/2 1').fractions().json()\n  // t.equal(arr[0].decimal, 0.5)\n  // t.equal(arr.length, 2)\n\n  t.end()\n})\n\ntest('fraction ordinal/cardinal:', function (t) {\n  let doc = nlp('three fifths of an inch')\n  doc.fractions().toCardinal()\n  t.equal(doc.text(), 'three out of five of an inch', here + 'toCardinal')\n\n  doc = nlp('three out of five senators')\n  doc.fractions().toOrdinal()\n  t.equal(doc.text(), 'three fifths of senators', here + 'toOrdinal')\n\n  doc = nlp('three fifths of an inch')\n  doc.fractions().toOrdinal()\n  t.equal(doc.text(), 'three fifths of an inch', here + 'unchanged toOrdinal')\n\n  doc = nlp('three out of five senators')\n  doc.fractions().toCardinal()\n  t.equal(doc.text(), 'three out of five senators', here + 'unchanged toCardinal')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/numbers/misc.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/number-misc] '\n\ntest('misc values', function (t) {\n  let doc = nlp(`quickly, suddenly`)\n  t.equal(doc.values().length, 0, here + 'found no values')\n\n  doc = nlp(`seven is slightly before eleven, but after two.`)\n  t.equal(doc.values().length, 3, here + 'found three values')\n\n  doc = nlp('742 Evergreen Terrace')\n  doc.numbers().set('eleven')\n  t.equal(doc.text('trim'), '11 Evergreen Terrace', here + 'address can be value')\n  t.end()\n})\n\n// test('normalize-test:', function (t) {\n//   let str = 'it is 33%'\n//   let doc = nlp(str)\n//   doc.numbers().normalize()\n//   t.equal(doc.text(), str, str)\n\n//   str = 'it is 33°'\n//   doc = nlp(str)\n//   doc.numbers().normalize()\n//   t.equal(doc.text(), str, str)\n\n//   str = '₩50 or so'\n//   doc = nlp(str)\n//   doc.numbers().normalize()\n//   t.equal(doc.text(), str, str)\n\n//   str = '$50.00 even'\n//   doc = nlp(str)\n//   doc.numbers().normalize()\n//   t.equal(doc.text(), str, str)\n\n//   str = 'it is 33km from here'\n//   doc = nlp(str)\n//   doc.numbers().normalize()\n//   t.equal(doc.text(), 'it is 33 km from here', str)\n\n//   t.end()\n// })\n\ntest('freeze:', function (t) {\n  let doc = nlp('five hundred fifty nine is more than fifty three')\n  doc.values().toNumber()\n  t.equal(doc.text(), '559 is more than 53', here + 'freeze-toNumb')\n\n  doc = nlp('five hundred fifty nine is more than fifty three')\n  doc.values().set(4)\n  t.equal(doc.text(), 'four is more than four', here + 'freeze-set')\n\n  doc = nlp('five hundred fifty eight is more than eighteen')\n  doc.values().add(4)\n  t.equal(doc.text(), 'five hundred and sixty two is more than twenty two', here + 'freeze-add')\n\n  t.end()\n})\ntest('runtime error:', function (t) {\n  const txt = ` for three out of every four and the first four . `\n  const doc = nlp(txt)\n  doc.numbers().toNumber()\n  t.ok(true, here + 'doesnt throw')\n  t.end()\n})\n\ntest('misc:', function (t) {\n  let str = '2 million five hundred thousand and fifty nine is bigger than 2882'\n  let m = nlp(str)\n  m.values().toNumber()\n  t.equal(m.out('normal'), '2500059 is bigger than 2882', here + str)\n  str = '2 million five hundred thousand and fifty nine is bigger than 2882'\n  m = nlp(str)\n  m.values().toNice()\n  t.equal(m.out('text'), '2,500,059 is bigger than 2,882', here + str)\n\n  str = 'doug is 5 years old'\n  m = nlp(str)\n  m.values().toText()\n  t.equal(m.out('normal'), 'doug is five years old', here + str)\n\n  t.end()\n})\n\ntest('number-text mixes:', function (t) {\n  let doc = nlp('2 million')\n  doc.values().toNumber()\n  t.equal(doc.text(), '2000000', here + '2 mil')\n\n  doc = nlp('2 million')\n  doc.values().add(3)\n  t.equal(doc.text(), 'two million and three', here + '2 mil and 3')\n  t.end()\n})\n\ntest('prefix/suffix:', function (t) {\n  let doc = nlp('$7,938')\n  doc.numbers().add(1)\n  t.equal(doc.text(), '$7,939', here + 'add money')\n\n  doc = nlp('7,938kg')\n  doc.numbers().minus(1)\n  t.equal(doc.text(), '7,937 kg', here + 'minus w/ unit')\n\n  doc = nlp('938.4cm')\n  doc.numbers().minus(1)\n  t.equal(doc.text(), '937.4 cm', here + 'minus w/ decimal')\n\n  doc = nlp('33rd')\n  doc.numbers().add(1)\n  t.equal(doc.text(), '34th', here + 'add ordinal')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/numbers/number-parse.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/number-parse] '\n\ntest('parse numbers', function (t) {\n  const arr = [\n    ['seven hundred', 700],\n    ['a hundred and seventy', 170],\n    ['9 hundred', 900],\n    ['9 hundred and 2', 902],\n    ['9 hundred and twenty', 920],\n    ['hundred and seventy', 170],\n    ['hundred and seventy two', 172],\n    ['hundred and seventy two thousand', 172000],\n    ['seven hundred and twenty', 720],\n    ['three twenty', 320],\n    ['hundred and three', 103],\n\n    //dropped-hundred\n    ['seven twenty', 720],\n    ['two twenty', 220],\n    ['eight fifty', 850],\n    ['two fifty', 250],\n    ['two fifty five', 255],\n\n    ['two and a half', 2.5],\n    ['fifty and a half', 50.5],\n    // ['two fifty and three quarters', 250.75],\n    ['twenty two percent', 22],\n    ['two hundred and twenty percent', 220],\n    ['220 percent', 220],\n    ['$220', 220],\n\n    // false-positives\n    ['seven and twenty', 7],\n    ['three three', 3],\n    ['four two zero', 4],\n    // ['three twentieth', null],\n    // ['third twenty', null],\n    // ['seventy hundred', null],\n  ]\n  arr.forEach(function (a) {\n    const num = nlp(a[0]).values().get()[0]\n    t.equal(num, a[1], here + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/numbers/percent.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/number-percent] '\n\ntest('percent-basic:', function (t) {\n  const m = nlp('it is 33%').percentages()\n  t.equal(m.out('normal'), '33%', 'match-33%')\n\n  //parse number\n  let arr = nlp('it is 50% of our budget').percentages().json()\n  t.equal(arr[0].number.num, 50, here + 'match-50')\n\n  arr = nlp('it is 9,000% of our budget').percentages().json()\n  t.equal(arr[0].number.num, 9000, here + 'match-9000')\n\n  //percent-decimal\n  arr = nlp('it is 0.5% of our budget').percentages().json()\n  t.equal(arr[0].number.num, 0.5, here + 'match-0.5')\n\n  t.end()\n})\n\ntest('percent-conversion:', function (t) {\n  let str = '3% of the budget'\n  let r = nlp(str).values().toNumber().all()\n  t.equal(r.out(), str, here + '3% to number')\n\n  str = \"it's 39% of the budget\"\n  r = nlp(str).values().toNumber().all()\n  t.equal(r.out(), str, here + '39% to number')\n\n  str = '39% of the budget'\n  r = nlp(str).values().toText().all()\n  t.equal(r.out(), 'thirty nine percent of the budget', here + 'to text')\n\n  str = 'around 100% of the budget'\n  r = nlp(str).values().toText().all()\n  t.equal(r.out(), 'around one hundred percent of the budget', here + 'to text')\n\n  str = 'around 100 percent of the budget'\n  r = nlp(str).values().toText().all()\n  t.equal(r.out(), 'around one hundred percent of the budget', here + 'to text')\n\n  t.end()\n})\n\ntest('percent-tag:', function (t) {\n  const tests = [\n    ['7%', true],\n    ['7.0%', true],\n    ['2.22%', true],\n    ['.2%', true],\n    ['0.2%', true],\n    ['fifteen percent', true],\n    ['one hundred and ten percent', true],\n    ['2,999%', true],\n    ['2asdf99%', false],\n    ['99%3', false],\n  ]\n  tests.forEach(function (a) {\n    const r = nlp(a[0])\n    t.equal(r.percentages().found, a[1], here + \"Percent-has: '\" + a[0] + \"'\")\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/numbers/prefix.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/number-prefix] '\n\ntest('prefix:', function (t) {\n  const doc = nlp('it was almost $400')\n  doc.values().toText()\n  t.equals(doc.text(), 'it was almost four hundred dollars', here + '$400')\n\n  t.end()\n})\n\ntest('suffix:', function (t) {\n  const doc = nlp('it was 400USD')\n  doc.values().toText()\n  t.equals(doc.text(), 'it was four hundred usd', here + '400usd')\n\n  // doc = nlp('it was 4.5m')\n  // doc.values().toText()\n  // t.equals(doc.text(), 'it was four million five hundred thousand', here + '4.5m')\n\n  // doc = nlp('it was $47.5m')\n  // doc.values().toText()\n  // t.equals(doc.text(), 'it was forty seven million five hundred thousand dollars', here + '$47.5m')\n\n  // doc = nlp('i ran 25km uphill')\n  // doc.values().toText()\n  // t.equals(doc.text(), 'i ran twenty five km uphill', here + '25km')\n\n  // doc = nlp('it was 400s!')\n  // doc.values().toText()\n  // t.equals(doc.text(), 'it was four hundred s!', here + '400s!')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/numbers/toCardinal.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/number-Cardinal] '\n\n//tests 'borrowed' from Travis Savo's lib 💝 https://github.com/TSavo/english2number-js\nconst cardinal = function (str) {\n  const json = nlp(str).values().json()[0] || { number: {} }\n  return json.number.num\n}\n\ntest('parse numbers', function (t) {\n  t.equal(cardinal('0'), 0, here + '0')\n  t.equal(cardinal('1'), 1, here + '1')\n  t.equal(cardinal('2'), 2, here + '2')\n  t.equal(cardinal('3'), 3, here + '3')\n  t.equal(cardinal('4'), 4, here + '4')\n  t.equal(cardinal('5'), 5, here + '5')\n  t.equal(cardinal('6'), 6, here + '6')\n  t.equal(cardinal('7'), 7, here + '7')\n  t.equal(cardinal('8'), 8, here + '8')\n  t.equal(cardinal('9'), 9, here + '9')\n  t.equal(cardinal('10'), 10, here + '10')\n  t.equal(cardinal('20'), 20, here + '20')\n  t.equal(cardinal('30'), 30, here + '30')\n  t.equal(cardinal('50'), 50, here + '50')\n  t.equal(cardinal('90'), 90, here + '90')\n  t.equal(cardinal('100'), 100, here + '100')\n  t.end()\n})\ntest('parse numbered ordinals', function (t) {\n  t.equal(cardinal('0th'), 0, here + '0th')\n  t.equal(cardinal('1st'), 1, here + '1st')\n  t.equal(cardinal('2nd'), 2, here + '2nd')\n  t.equal(cardinal('3rd'), 3, here + '3rd')\n  t.equal(cardinal('4th'), 4, here + '4th')\n  t.equal(cardinal('5th'), 5, here + '5th')\n  t.equal(cardinal('6th'), 6, here + '6th')\n  t.equal(cardinal('7th'), 7, here + '7th')\n  t.equal(cardinal('8th'), 8, here + '8th')\n  t.equal(cardinal('9th'), 9, here + '9th')\n  t.equal(cardinal('10th'), 10, here + '10th')\n  t.equal(cardinal('20th'), 20, here + '20th')\n  t.equal(cardinal('30th'), 30, here + '30th')\n  t.equal(cardinal('50th'), 50, here + '50th')\n  t.equal(cardinal('77th'), 77, here + '77th')\n  t.equal(cardinal('90th'), 90, here + '90th')\n  t.equal(cardinal('100th'), 100, here + '100th')\n  t.end()\n})\ntest('parse english names of numbers', function (t) {\n  t.equal(cardinal('zero'), 0, here + 'zero')\n  t.equal(cardinal('one'), 1, here + 'one')\n  t.equal(cardinal('two'), 2, here + 'two')\n  t.equal(cardinal('three'), 3, here + 'three')\n  t.equal(cardinal('four'), 4, here + 'four')\n  t.equal(cardinal('five'), 5, here + 'five')\n  t.equal(cardinal('six'), 6, here + 'six')\n  t.equal(cardinal('seven'), 7, here + 'seven')\n  t.equal(cardinal('eight'), 8, here + 'eight')\n  t.equal(cardinal('nine'), 9, here + 'nine')\n  t.equal(cardinal('ten'), 10, here + 'ten')\n  t.equal(cardinal('eleven'), 11, here + 'eleven')\n  t.equal(cardinal('twelve'), 12, here + 'twelve')\n  t.equal(cardinal('thirteen'), 13, here + 'thirteen')\n  t.equal(cardinal('fourteen'), 14, here + 'fourteen')\n  t.equal(cardinal('fifteen'), 15, here + 'fifteen')\n  t.equal(cardinal('sixteen'), 16, here + 'sixteen')\n  t.equal(cardinal('seventeen'), 17, here + 'seventeen')\n  t.equal(cardinal('eighteen'), 18, here + 'eighteen')\n  t.equal(cardinal('nineteen'), 19, here + 'nineteen')\n  t.equal(cardinal('twenty'), 20, here + 'twenty')\n  t.equal(cardinal('twenty-five'), 25, here + 'twenty')\n  t.equal(cardinal('twenty five'), 25, here + 'twenty')\n  t.equal(cardinal('forty-four'), 44, here + 'forty')\n  t.equal(cardinal('forty four'), 44, here + 'forty')\n  t.equal(cardinal('fourty four'), 44, here + 'fourty') //typo\n  t.equal(cardinal('seventy'), 70, here + 'seventy')\n  t.equal(cardinal('seventy-seven'), 77, here + 'seventy')\n  t.equal(cardinal('eighty eight'), 88, here + 'eighty')\n  t.equal(cardinal('ninety nine'), 99, here + 'ninety')\n  t.equal(cardinal('one-hundred'), 100, here + 'one-hundred')\n  t.equal(cardinal('one hundred'), 100, here + 'one hundred')\n  t.end()\n})\ntest('parse english names of ordinal positions', function (t) {\n  t.equal(cardinal('zeroth'), 0, here + 'zeroth')\n  t.equal(cardinal('first'), 1, here + 'first')\n  t.equal(cardinal('second'), 2, here + 'second')\n  t.equal(cardinal('third'), 3, here + 'third')\n  t.equal(cardinal('fourth'), 4, here + 'fourth')\n  t.equal(cardinal('fifth'), 5, here + 'fifth')\n  t.equal(cardinal('sixth'), 6, here + 'sixth')\n  t.equal(cardinal('seventh'), 7, here + 'seventh')\n  t.equal(cardinal('eighth'), 8, here + 'eighth')\n  t.equal(cardinal('ninth'), 9, here + 'ninth')\n  t.equal(cardinal('tenth'), 10, here + 'tenth')\n  t.equal(cardinal('eleventh'), 11, here + 'eleventh')\n  t.equal(cardinal('twelfth'), 12, here + 'twelfth')\n  t.equal(cardinal('thirteenth'), 13, here + 'thirteenth')\n  t.equal(cardinal('fourteenth'), 14, here + 'fourteenth')\n  t.equal(cardinal('fifteenth'), 15, here + 'fifteenth')\n  t.equal(cardinal('sixteenth'), 16, here + 'sixteenth')\n  t.equal(cardinal('seventeenth'), 17, here + 'seventeenth')\n  t.equal(cardinal('eighteenth'), 18, here + 'eighteenth')\n  t.equal(cardinal('nineteenth'), 19, here + 'nineteenth')\n  t.equal(cardinal('twentieth'), 20, here + 'twentieth')\n  t.equal(cardinal('twenty first'), 21, here + 'twenty first')\n  // t.equal(cardinal('twenty second'), 22, here + 'twenty second')\n  t.equal(cardinal('twenty third'), 23, here + 'twenty third')\n  t.equal(cardinal('twenty fourth'), 24, here + 'twenty fourth')\n  t.equal(cardinal('twenty-fifth'), 25, here + 'twenty fifth')\n  t.equal(cardinal('forty-fourth'), 44, here + 'forty-fourth')\n  t.equal(cardinal('seventieth'), 70, here + 'seventieth')\n  t.equal(cardinal('seventy-seventh'), 77, here + 'seventy')\n  t.equal(cardinal('ninetieth'), 90, here + 'ninetieth')\n  t.equal(cardinal('ninety ninth'), 99, here + 'ninety')\n  // t.equal(cardinal('one-hundredth'), 100, 'one-hundredth')\n  t.end()\n})\n\ntest('parse negative numbers', function (t) {\n  t.equal(cardinal('negative thirty eight thousand two hundred sixty three'), -38263, here + '-38263')\n  t.equal(cardinal('negative thirty eight thousand two hundred sixty three'), -38263, here + '-38263')\n  t.equal(cardinal('negative zero'), 0, here + '-0')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/numbers/toText.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/number-toText] '\n\ntest('to_text:', function (t) {\n  const arr = [\n    // [-5, 'negative five'],\n    [5, 'five'],\n    [15, 'fifteen'],\n    [10, 'ten'],\n    [20, 'twenty'],\n    [75, 'seventy five'],\n    [97, 'ninety seven'],\n    [111, 'one hundred and eleven'],\n    [175, 'one hundred and seventy five'],\n    [900, 'nine hundred'],\n    [1175, 'one thousand one hundred and seventy five'],\n    [2000, 'two thousand'],\n    [2100, 'two thousand one hundred'],\n    [2102, 'two thousand one hundred and two'],\n    [70000, 'seventy thousand'],\n    [72000, 'seventy two thousand'],\n    [900000, 'nine hundred thousand'],\n    [900001, 'nine hundred thousand and one'],\n    [900200, 'nine hundred thousand two hundred'],\n    [900205, 'nine hundred thousand two hundred and five'],\n    [7900205, 'seven million nine hundred thousand two hundred and five'],\n    [90000000, 'ninety million'],\n    [900000000, 'nine hundred million'],\n    [900000080, 'nine hundred million and eighty'],\n    [250, 'two hundred and fifty'],\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0]).values().toText().out('text')\n    t.equal(str, a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('all-to-text:', function (t) {\n  let arr = [\n    'one',\n    '1',\n    '1.0', //not sure..\n    '1st',\n    'first',\n  ]\n  arr.forEach((txt) => {\n    const str = nlp(txt).values().toText().toCardinal().text()\n    t.equal(str, 'one', here + txt + ' -> one')\n  })\n  arr = ['500', '500.0', '500th', 'five hundred', 'five hundredth']\n  arr.forEach((txt) => {\n    const str = nlp(txt).values().toText().toCardinal().text()\n    t.equal(str, 'five hundred', here + txt + ' -> five hundred')\n  })\n\n  arr = ['2012', '2012.0', '2,012', '2012th', 'two thousand and twelve', 'two thousand and twelfth']\n  arr.forEach((txt) => {\n    const str = nlp(txt).values().toText().toCardinal().text()\n    t.equal(str, 'two thousand and twelve', here + txt)\n  })\n  t.end()\n})\n\ntest('big number:', function (t) {\n  const str = nlp('twenty-three quadrillion').values().toText().out()\n  t.equal(str, 'twenty-three quadrillion', here + 'quadrillion')\n\n  // str = nlp('nine quintillion two hundred').values().toText().out();\n  // t.equal(str, 'nine quintillion two hundred', 'quantillion');\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/numbers/units.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/number-units] '\n\ntest('units-parse:', function (t) {\n  const arr = [\n    ['33km', 33, 'km'],\n    ['33 km', 33, 'km'],\n    ['40,000 ft', 40000, 'ft'],\n    ['40,000ft', 40000, 'ft'],\n    ['40,000 feet', 40000, 'feet'],\n    ['seven hundred litres', 700, 'litres'],\n    ['one litre', 1, 'litre'],\n    ['0.4 meter', 0.4, 'meter'],\n    ['3 km2', 3, 'km2'],\n    ['3 km²', 3, 'km²'],\n    ['3km²', 3, 'km²'],\n    ['44°c', 44, '°c'],\n    // ['44°', 44, '°'], //treat like ordinal, for italian\n    ['44 °c', 44, '°c'],\n    ['12µs', 12, 'µs'],\n    ['12km/h', 12, 'km/h'],\n    // unrecognized units\n    ['3rem', 3, 'rem'],\n    ['500ccs', 500, 'ccs'],\n    ['300max', 300, ''],\n    ['3rd', 3, ''],\n    ['500+', 500, ''],\n    ['500 ccs', 500, ''],\n  ]\n  arr.forEach(a => {\n    const [str, num, unit] = a\n    const doc = nlp(str)\n    const m = doc.numbers()\n    t.equal(m.get()[0], num, here + ' [num] ' + str)\n    t.equal(m.units().text('root'), unit, here + ' [unit] ' + str)\n    // t.equal(doc.has(String(num)), true, here + '[has-num] ' + str)\n    if (unit) {\n      t.equal(doc.has(unit), true, here + '[has-unit] ' + str)\n    } else {\n      t.equal(doc.has('#Unit'), false, here + '[no-unit] ' + str)\n    }\n  })\n  t.end()\n})\n\ntest('units-convert:', function (t) {\n  let doc = nlp('we covered 3 km² in total')\n  doc.numbers().toText()\n  t.equal(doc.text(), 'we covered three km² in total', here + 'space unit')\n\n  doc = nlp('we covered 3km² in total')\n  doc.numbers().toText()\n  t.equal(doc.text(), 'we covered three km² in total', here + 'no space unit')\n\n  t.equal(nlp('44,000 ft').has(44000), true, here + '44,000 ft')\n  t.equal(nlp('44,000ft').has('44,000'), true, here + '44,000')\n  // t.equal(nlp('44,000ft').has(44000), true, here + '44000')\n\n  doc = nlp('10°').numbers().add(1)\n  t.equal(doc.text(), '11°', here + 'add degrees')\n  t.end()\n})\n\ntest('isUnits:', function (t) {\n  let doc = nlp('i stored 300gb of text in 8mins')\n  let m = doc.numbers().isUnit('mins')\n  t.equal(m.text(), '8mins', 'str-min')\n\n  m = doc.numbers().isUnit(['mins', 'db', 'gb'])\n  t.deepEqual(m.out('array'), ['300gb', '8mins'], 'arr-input')\n\n  m = doc.numbers().isUnit({ gb: true, gbs: true })\n  t.deepEqual(m.out('array'), ['300gb'], 'obj-input')\n\n  m = doc.numbers().isUnit()\n  t.deepEqual(m.out('array'), [], 'empty-input')\n\n  doc = nlp('i stored 300gb on a 600 GB harddrive')\n  m = doc.numbers().isUnit('gb')\n  t.deepEqual(m.out('array'), ['300gb', '600'], 'unit-normalized')\n  t.end()\n})\n// test('implicit units', function (t) {\n//   let arr = [\n//     // ['99%', '99%'],\n//     // ['99%', '99 percent'],\n//     // ['99%', '%'],\n//     ['9ft', 'feet'],\n//   ]\n//   arr.forEach(a => {\n//     let doc = nlp(a[0])\n//     t.ok(doc.has(a[1]), here + a[1])\n//   })\n//   t.end()\n// })\n"
  },
  {
    "path": "tests/three/numbers/value.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/number-value] '\n\ntest('value-lumper-splitter:', function (t) {\n  let r = nlp('202 199')\n  t.equal(r.values().length, 2, here + 'two-numbers')\n\n  r = nlp('two hundred and fifty times six')\n  t.equal(r.values().length, 2, here + 'two-numbers2')\n\n  r = nlp('one two')\n  t.equal(r.values().length, 2, here + 'two-numbers3')\n\n  r = nlp('fifth ninth')\n  t.equal(r.values().length, 2, here + 'two-numbers4')\n  t.end()\n})\n\ntest('value-basic:', function (t) {\n  const r = nlp('third month of 2019')\n  r.values().toNumber()\n  t.equal(r.out(), '3rd month of 2019', here + 'toNumber')\n\n  r.values().toText()\n  t.equal(r.out(), 'third month of two thousand and nineteen', here + 'toText')\n\n  // r = nlp('third month of two thousand and nineteen')\n  // r.values().toCardinal()\n  // t.equal(r.out(), 'three months of two thousand and nineteen', here + 'toCardinal')\n\n  // r = nlp('three months of two thousand nineteen')\n  // r.values().toOrdinal()\n  // t.equal(r.out(), 'third month of two thousand and nineteenth', here + 'toOrdinal')\n\n  // r.values()\n  //   .toNumber()\n  //   .all()\n  // t.equal(r.out(), '3rd month of 2019th', here + 'toNumber2')\n\n  t.end()\n})\n\ntest('value-to_ordinal:', function (t) {\n  const arr = [\n    [11, '11th'],\n    [5, '5th'],\n    [22, '22nd'],\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0])\n      .values()\n      .toOrdinal()\n      .out('normal')\n    t.equal(str, a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('value-number:', function (t) {\n  const arr = [\n    ['five hundred feet', 500],\n    ['fifty square feet', 50],\n    ['90 hertz', 90],\n    // ['5 six-ounce containers', 5],\n    ['twelve 2-gram containers', 12],\n    ['thirty-seven forever-21 stores', 37],\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0])\n      .values()\n      .toNumber()\n      .terms(0)\n      .first()\n      .out('normal')\n    a[1] = String(a[1])\n    t.equal(str, a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('add/subtract:', function (t) {\n  let r = nlp('beginning of 2019')\n    .values()\n    .add(2)\n    .all()\n  t.equal(r.out(), 'beginning of 2021', here + 'add-2-cardinal')\n\n  r = nlp('beginning of the 2019th')\n    .values()\n    .add(2)\n    .all()\n  t.equal(r.out(), 'beginning of the 2021st', here + 'add-2-ordinal')\n\n  r = nlp('beginning of the 2019th')\n    .values()\n    .add(-2)\n    .all()\n  t.equal(r.out(), 'beginning of the 2017th', here + 'add-minus-2-ordinal')\n\n  r = nlp('beginning of 2019')\n    .values()\n    .subtract(2)\n    .all()\n  t.equal(r.out(), 'beginning of 2017', here + 'subtract-2-cardinal')\n\n  r = nlp('beginning of the 2019th')\n    .values()\n    .subtract(2)\n    .all()\n  t.equal(r.out(), 'beginning of the 2017th', here + 'subtract-2-ordinal')\n\n  r = nlp('seventeen years old')\n    .values()\n    .add(2)\n    .all()\n  t.equal(r.out(), 'nineteen years old', here + 'text-add-2-ordinal')\n  r = nlp('seventeenth birthday')\n    .values()\n    .add(2)\n    .all()\n  t.equal(r.out(), 'nineteenth birthday', here + 'text-add-2-ordinal')\n\n  r = nlp('seventeen years old')\n    .values()\n    .subtract(2)\n    .all()\n  t.equal(r.out(), 'fifteen years old', here + 'text-subtract-2-cardinal')\n\n  r = nlp('seventeenth birthday')\n    .values()\n    .subtract(2)\n    .all()\n  t.equal(r.out(), 'fifteenth birthday', here + 'text-subtract-2-cardinal')\n\n  r = nlp('seven apples and 1,231 peaches')\n    .values()\n    .add(50)\n    .all()\n  t.equal(r.out(), 'fifty seven apples and 1,281 peaches', here + 'two-add-50s')\n  t.end()\n})\n\ntest('increment:', function (t) {\n  let r = nlp('seven apples and 231 peaches')\n  r.values().increment()\n  t.equal(r.out(), 'eight apples and 232 peaches', here + 'increment-cardinal')\n  r.values().decrement()\n  t.equal(r.out(), 'seven apples and 231 peaches', here + 'decrement-cardinal')\n\n  r = nlp('seventh place and 12th place')\n  r.values()\n    .increment()\n    .increment()\n  t.equal(r.out(), 'ninth place and 14th place', here + 'increment-ordinal')\n  r.values()\n    .decrement()\n    .decrement()\n  t.equal(r.out(), 'seventh place and 12th place', here + 'decrement-ordinal')\n  t.end()\n})\n\ntest('number splits', function (t) {\n  const arr = ['12, 34, 56', '12 34 56', '12, 34, 56', '1 2 4']\n  arr.forEach(str => {\n    const tokens = nlp(str)\n      .values()\n      .out('array')\n    t.equal(tokens.length, 3, here + str)\n  })\n  t.end()\n})\n\n// test('nounit:', function(t) {\n//   let r = nlp('seven apples and 231 peaches')\n//   let arr = r.values().out('array')\n//   t.deepEqual(arr, ['seven apples', '231 peaches'])\n\n//   arr = r\n//     .values()\n//     .noUnits()\n//     .out('array')\n//   t.deepEqual(arr, ['seven', '231'])\n//   t.end()\n// })\n\n// test('value-unit:', function(t) {\n//   let arr = [\n//     ['five hundred feet', 'feet'],\n//     ['fifty hertz', 'hertz'],\n//     ['100 dollars', 'dollars'],\n//     // ['$100', 'dollar'],\n//     // ['¥2.5', 'yen'],\n//     // ['€3,000,100', 'euro'],\n//     // ['EUR 9.99', 'eur'],\n//     // ['5 g', 'g'],\n//     // ['2 in', 'in'],\n//     // ['5 g sugar', 'g'],\n//     ['3 grams', 'grams'],\n//     ['2 inches', 'inches'],\n//     ['10 grams of sugar', 'grams'],\n//     ['fifty inches of snow', 'inches'],\n//     ['7 years', 'years'],\n//     ['7.5 days', 'days'],\n\n//     ['7th year', 'year'],\n//     ['7th years', ''],\n//     ['1 day', 'day'],\n//     ['one book', 'book'],\n//     ['first book', 'book'],\n//     ['7 day', ''],\n//   ]\n//   arr.forEach(function(a) {\n//     const r = nlp(a[0])\n//       .values()\n//       .units()\n//     t.equal(r.out('normal'), a[1], a[0])\n//   })\n//   t.end()\n// })\n// test('value-measurement:', function(t) {\n//   [\n//     ['five hundred feet', 'Distance'],\n//     ['100 kilometers', 'Distance'],\n//     ['fifty hertz', 'Frequency'],\n//     ['59 thousand $', 'Money'],\n//     ['100 mb', 'Data'],\n//     ['50 руб', 'Money'],\n//     ['EUR 9.99', 'Money'],\n//     ['100 dollars', 'Money'],\n//     ['256 bitcoins', 'Money'],\n//   ].forEach(function (a) {\n//     const str = nlp.value(a[0]).measurement;\n//     str_test(str, a[0], a[1], t);\n//   });\n//   t.end();\n// });\n//\n// test('value-of_what:', function(t) {\n//   [\n//     ['nine kg', 'kg'],\n//     ['5 kg of copper', 'copper'],\n//     ['many of these stories', 'many of these stories'],\n//     ['room full of beautiful creatures', 'full of beautiful creatures'],\n//     ['boxes of bags of food', 'boxes of bags of food'],\n//     ['5 boxes of water', 'boxes of water'],\n//     ['6 of kids', 'kids'],\n//     ['10 kids', 'kids'],\n//     ['just nothing', 'just nothing'],\n//     ['EUR 77', 'eur'],\n//     ['kg', 'kg']\n//   ].forEach(function (a) {\n//     const str = nlp.value(a[0]).of_what;\n//     str_test(str, a[0], a[1], t);\n//   });\n//   t.end();\n// });\n"
  },
  {
    "path": "tests/three/parentheses.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/parentheses] '\n\ntest('parentheses test', function (t) {\n  const arr = [\n    [`i heard (the news) today`, 'the news'],\n    [`i heard (news) today`, 'news'],\n    [`yo. i heard (the very sad news) today`, 'the very sad news'],\n    [`i heard (news today`, ''],\n  ]\n  arr.forEach(function (a) {\n    const r = nlp(a[0])\n    const str = r.parentheses().out('normal')\n    const msg = a[0] + '  -  ' + str\n    t.equal(str, a[1], here + msg)\n  })\n  t.end()\n})\n\ntest('dirty-parentheses', function (t) {\n  const doc = nlp('this is (kinda) messy')\n  let m = doc.not('this')\n  let str = m.parentheses().text()\n  t.equal(str, 'kinda', here + '+not-before')\n\n  m = doc.not('kinda')\n  str = m.parentheses().text()\n  t.equal(str, '', here + '+not-self')\n\n  m = doc.not('messy')\n  str = m.parentheses().text()\n  t.equal(str, 'kinda', here + '+not-after')\n  t.end()\n})\n\ntest('partial-parentheses', function (t) {\n  const doc = nlp('before (one two three) after')\n  let m = doc.not('two')\n  let str = m.parentheses().text()\n  t.equal(str, '', here + '+not-inside')\n\n  m = doc.not('one')\n  str = m.parentheses().text()\n  t.equal(str, '', here + '+not-start')\n\n  m = doc.not('three')\n  str = m.parentheses().text()\n  t.equal(str, '', here + '+not-after')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/people/gender.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/gender] '\n\ntest('people-gender:', function (t) {\n  const m = 'male'\n  const f = 'female'\n  const arr = [\n    // by firstname\n    ['john turner', m],\n    ['dr James Smith', m],\n    ['dr Debrah Smith', f],\n    // by honorific\n    ['Mr Springer', m],\n    ['his excellency kerry adams', m],\n    // ambig\n    ['kerry adams', null],\n    ['dr adams', null],\n    // from pronoun\n    ['kris fogel', null],\n    ['kris fogel said he liked it', m],\n    ['kris fogel said her shoes fit', f],\n    ['kris and amy washed her car', null], //ambig\n  ]\n  arr.forEach(a => {\n    const [str, want] = a\n    const res = nlp(str).people().json()[0] || {}\n    t.equal((res.person || {}).presumed_gender, want, here + 'gender - ' + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/people/people-parse.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/people-parse] '\n\ntest('people-parse:', function (t) {\n  const arr = [\n    ['john turner', 'john', 'turner', ''],\n    ['dr James Smith', 'james', 'smith', 'dr'],\n    ['Corey', 'corey', '', ''],\n    ['sgt Williams', '', 'williams', 'sgt'],\n    ['Mr Springer', '', 'springer', 'mr'],\n    ['Mr. Goobly', '', 'goobly', 'mr'],\n    ['dr dirk sinkel', 'dirk', 'sinkel', 'dr'],\n    ['Dirk M Sinkel', 'dirk', 'sinkel', ''],\n    ['john D Springer sr', 'john', 'springer', 'sr'],\n    ['captain john D Springer', 'john', 'springer', 'captain'],\n    ['his majesty kevin adams', 'kevin', 'adams', 'his majesty'],\n    ['queen elizabeth', 'elizabeth', '', 'queen'],\n    // [','',''],\n  ]\n  arr.forEach(a => {\n    const [str, first, last, hon] = a\n    const res = nlp(str).people().parse()[0] || {}\n    t.equal(res.firstName && res.firstName.text('normal'), first, here + 'first - ' + str)\n    t.equal(res.lastName && res.lastName.text('normal'), last, here + 'last - ' + str)\n    t.equal(res.honorific && res.honorific.text('normal'), hon, here + 'honorific - ' + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/people/people.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/people] '\n\ntest('people:', function (t) {\n  let doc = nlp('Mary is in the boat. Nancy is in the boat. Fred is in the boat. Jack is too.')\n  let arr = doc.people().toLowerCase().out('array')\n  t.deepEqual(arr, ['mary', 'nancy', 'fred', 'jack'], here + 'people-easy')\n\n  doc = nlp('jean jacket. Don Slkje')\n  arr = doc.people().toLowerCase().out('array')\n  t.deepEqual(arr, ['don slkje'], here + 'people-context')\n\n  doc = nlp('The Bill was passed by James MacCarthur')\n  arr = doc.people().toLowerCase().out('array')\n  t.deepEqual(arr, ['james maccarthur'], here + 'the-bill')\n\n  doc = nlp('Rod MacDonald bought a Rod')\n  arr = doc.people().toLowerCase().out('array')\n  t.deepEqual(arr, ['rod macdonald'], here + 'the-rod-1')\n\n  doc = nlp('Rod L. MacDonald bought a lightening rod')\n  arr = doc.people().toLowerCase().out('text')\n  t.deepEqual(arr, 'rod l. macdonald', here + 'the-rod-2')\n\n  doc = nlp('Francine du Plessix')\n  arr = doc.people().text()\n  t.deepEqual(arr, 'Francine du Plessix', here + 'name-du-person')\n\n  doc = nlp(\"Matt 'the doctor' Smith lasted three seasons.\")\n  arr = doc.people().toLowerCase().out()\n  t.deepEqual(arr, \"matt 'the doctor' smith\", here + 'nickname-1')\n\n  doc = nlp(\"Randal Kieth Orton and Dwayne 'the rock' Johnson had a really funny fight.\")\n  t.equal(doc.people(0).out('normal'), 'randal kieth orton', here + 'nickname-2a')\n  t.equal(doc.people(1).out('normal'), 'dwayne the rock johnson', here + 'nickname-2b')\n\n  doc = nlp('i work with Tina Fey and Jake Gyllenhal.')\n  const m = doc.people()\n  t.equal(m.eq(0).text(), 'Tina Fey', here + 'tina')\n  t.equal(m.eq(1).text(), 'Jake Gyllenhal', here + 'jake')\n\n  t.end()\n})\n\ntest('people positives:', function (t) {\n  const arr = [\n    'avril lavigne',\n    'ayn rand',\n    'benazir bhutto',\n    'bing crosby',\n    'captain beefheart',\n    'chopin',\n    'christian bale',\n    'conan',\n    'cthulhu',\n    'dalai lama',\n    'darth vader',\n    'demi lovato',\n    'diego maradona',\n    'dmitry medvedev',\n    'ebenezer scrooge',\n    'emile zatopek',\n    'florence nightingale',\n    'frédéric chopin',\n    'haile selassie',\n    'harrison ford',\n    'henry ford',\n    'humphrey bogart',\n    'jrr tolkien',\n    'jfk',\n    'jack the ripper',\n    'jawaharlal nehru',\n    'jay z',\n    'jimi hendrix',\n    'lech walesa',\n    'macaulay culkin',\n    'mata hari',\n    'maya angelou',\n    'merlin',\n    // 'micky ward',\n    'napoleon',\n    'pocahontas',\n    'rachmaninoff',\n    'raisa gorbachev',\n    'ringo starr',\n    'robin hood',\n    'santa claus',\n    'sergei rachmaninoff',\n    'sherlock holmes',\n    'shia labeouf',\n    'sigmund freud',\n    'silvio berlusconi',\n    'snoop dogg',\n    'spiderman',\n    'superman',\n    'thor',\n    'tupac shakur',\n    'usain bolt',\n    'vin diesel',\n    'virginia woolf',\n    'walt disney',\n    'will ferrell',\n    'wiz khalifa',\n    'yoko onen',\n    'yoko ono',\n    'Ken Baxter',\n    'Artur Schmitt',\n    'Judith Dupont',\n    'Sergei Scherbakov',\n    'Sergei Smolin',\n    'François Lehideux',\n    'Matthias Lorenz',\n    'Abie Malan',\n    'Christoph Zürcher',\n    'dmitry medvedev',\n    'diego maradona',\n    'dmitry medvedev',\n    'ebenezer scrooge',\n\n    // 'he man',\n    // 'bill gates',\n    // 'kid cudi',\n    // 'snow white',\n    // 'spider-man',\n    // 'doctor who',\n  ]\n  arr.forEach(str => {\n    const doc = nlp(str)\n    const people = doc.people().text()\n    t.equal(people, str, here + str)\n  })\n  t.end()\n})\n\ntest('people false-positives:', function (t) {\n  const arr = [\n    `op assessment`,\n    `may`,\n    `liberty`,\n    `Service.`,\n    `CATS Clinic`,\n    `CATS Team.`,\n    `Mount  Vernon`,\n    `CCP`,\n    `GI Team`,\n    `Breast`,\n    `lady's shoulder.`,\n    `secretary's contact`,\n    `Limb CATS Clinic`,\n    `b.d. In`,\n    `Spinal `, //hmm\n    `booked her for TURBT  +/-Mitomycin C.`, //hmm\n    `lady's`,\n    `MRI Brain`,\n    `P.S. Dear`,\n    `(AP`,\n    // `Barrett's disease`,\n    // `TIA`,\n    // `Sam myself`,\n    `she may need to be`,\n    `she  may have to wait`,\n    `we  may  need  to  cancel`,\n    `We  may  need  to  revisit  the  diagnosis`,\n    `which  I  think  may  be  arising`,\n    // `Mr Sean Malay, Spinal Surgeon`,\n    `onto the Spinal CATS Service`,\n    `Vitamin D.`,\n    `may`,\n    `ACE`,\n    'Brown Canyon',\n    // `gene`,\n    // `Jennifer  antibiotics`,\n    `rheumatoid factor, ENA, CCP antibody, ESR, CRP, etc.`,\n    `in our X-ray Uro-radiology`,\n  ]\n  arr.forEach(str => {\n    const doc = nlp(str)\n    const people = doc.people().out('array')\n    t.deepEqual(people, [], here + str)\n  })\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/places.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/places] '\n\ntest('known-regions:', function (t) {\n  const arr = [\n    ['i want to go to Ohio to see George Harrison', 'ohio'],\n    ['we are visiting Gloucestershire, before we leave', 'gloucestershire'],\n    ['manitoba is nice this time of year', 'manitoba'],\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0]).match('#Region').text('normal')\n    t.equal(str, a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('places-find:', function (t) {\n  const arr = [\n    ['live in the Rekcjd Province', 'rekcjd province'],\n    ['live in the Lekfjs District', 'lekfjs district'],\n    ['visiting Tojbs Kjeh Region', 'tojbs kjeh region'],\n    ['visiting the State of Lkjfhe', 'state of lkjfhe'],\n    ['see you in West Nunavut', 'west nunavut'],\n    ['see you in western Hunan', 'western hunan'],\n    ['see you in Northern Hunan province', 'northern hunan province'],\n    ['see you in Toronto, Canada', 'toronto canada'],\n    ['see you in Toronto, Ontario', 'toronto ontario'],\n    ['I flew to Austin, Texas', 'austin texas'],\n    ['I flew to San antonio, Texas', 'san antonio texas'],\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0]).places(0).text('normal')\n    t.equal(str, a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('mixed continents-places:', function (t) {\n  const doc = nlp('in north africa, eastern asia, guatemala, europe, north america, and japan')\n  t.equal(doc.places().length, 6, here + '6-places')\n  t.end()\n})\n\ntest('national-monuments:', function (t) {\n  const list = [\n    \"St. Peter's Basilica\",\n    'Palace of Versailles',\n    'Lincoln Memorial',\n    'Colosseum',\n    'Parthenon',\n    'Eiffel Tower',\n    'Taj Mahal',\n    'Cologne Cathedral',\n    'Peterhof Palace',\n    'Łazienki Palace',\n    // 'Independence National Historical Park',\n    // 'Statue of Liberty National Monument',\n    'Teotihuacán',\n    'Mysore Palace',\n    'Tsarskoe Selo State Museum',\n    'Pompeii',\n    'Wilanów Palace',\n    'Schönbrunn Palace',\n    'Kazan Kremlin',\n    'Tower of London',\n    'Alhambra',\n    'Chichén Itzá',\n    'Topkapı Palace',\n    'Chapultepec Castle',\n    'Tulum',\n    'Edinburgh Castle',\n    'Wawel Castle',\n    'Arc de Triomphe',\n    'Royal Palace of Madrid',\n    'Neuschwanstein',\n    'Machu Picchu',\n    'San Juan National Historic Site',\n    'Admiralty Island',\n    'Berryessa Snow Mountain',\n    'Buck Island Reef',\n    'Capulin Volcano',\n    'Carrizo Plain',\n    'Casa Grande Ruins',\n    'Castle Mountains',\n    // 'Castner Range',\n    'Cedar Breaks',\n    'Chiricahua',\n    'Colorado',\n    'Fort Frederica',\n    'Fort Matanzas',\n    'Fort McHenry',\n    'Fort Monroe',\n    'Fort Ord',\n    'Fort Pulaski',\n    'Fort Stanwix',\n    'Fort Union',\n    'Mill Springs Battlefield',\n    'Misty Fjords',\n    'Mojave Trails',\n    'Montezuma Castle',\n    'Muir Woods',\n    'Rainbow Bridge',\n    'Río Grande del Norte',\n    'Rose Atoll',\n    'Russell Cave',\n    'San Gabriel Mountains',\n    'San Juan Islands',\n    'Scotts Bluff',\n    'Sonoran Desert',\n    'Sunset Crater Volcano',\n    'Timpanogos Cave',\n    'Tonto',\n    'Tule Lake',\n    // 'Tule Springs Fossil Beds',\n    'Tuzigoot',\n    'Upper Missouri River Breaks',\n    'Vermilion Cliffs',\n    'Virgin Islands Coral Reef',\n    'Walnut Canyon',\n    'Wupatki',\n    'Yucca House',\n  ]\n\n  list.forEach(str => {\n    const doc = nlp(str)\n    t.ok(doc.places().found, str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/plugin.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/plugin] '\n\ntest('change verb conjugation', function (t) {\n  nlp.plugin({\n    irregulars: {\n      get: {\n        pastTense: 'gotten',\n        presentTense: 'getts',\n        gerund: 'gettin'\n      }\n    }\n  })\n  let doc = nlp('gotten')\n  let res = doc.verbs().conjugate()[0]\n  t.equal(res.PastTense, 'gotten', here + 'past')\n  t.equal(res.PresentTense, 'getts', here + 'present')\n  t.equal(doc.verbs().toGerund().fullSentence().text(), 'is gettin', here + 'toGerund')\n  // backwards\n  doc = nlp('getts').tag('PresentTense')\n  res = doc.verbs().conjugate()[0]\n  t.equal(res.Infinitive, 'get', here + 'inf-2')\n  t.equal(res.PresentTense, 'getts', here + 'pres')\n  t.equal(res.PastTense, 'gotten', here + 'past')\n\n  doc = nlp('gettin').tag('Gerund')\n  res = doc.verbs().conjugate()[0]\n  t.equal(res.Infinitive, 'get', here + 'inf-3')\n\n  // reset it\n  nlp.plugin({\n    irregulars: {\n      get: {\n        pastTense: 'got',\n        presentTense: 'gets',\n        gerund: 'getting'\n      }\n    }\n  })\n  t.end()\n})\n\ntest('change adj inflection', function (t) {\n  nlp.plugin({\n    irregulars: {\n      sly: {\n        comparative: 'slyer',\n        superlative: 'slyest',\n      },\n      spedorious: {\n        comparative: 'speedorier',\n        superlative: 'speedoriest',\n      }\n    }\n  })\n  let doc = nlp('very sly')\n  let res = doc.adjectives().conjugate()[0] || {}\n  t.equal(res.Comparative, 'slyer', here + 'Comparative')\n  t.equal(res.Superlative, 'slyest', here + 'Superlative')\n\n  doc = nlp('spedorious')\n  res = doc.adjectives().conjugate()[0] || {}\n  t.equal(res.Superlative, 'speedoriest', here + 'Superlative')\n  t.equal(res.Comparative, 'speedorier', here + 'comparative')\n  // backwards\n  doc = nlp('speedoriest')\n  res = doc.adjectives().conjugate()[0] || {}\n  t.equal(res.Adjective, 'spedorious', here + 'past')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/possessives.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/possessives] '\n\ntest('possessives misc', function (t) {\n  const doc = nlp(`in Sunday's final`)\n  t.equal(doc.has('#Possessive'), true, here + 'misc')\n  t.end()\n})\n\ntest('possessives tagger', function (t) {\n  const arr = [`Spencer's`, `Spencer Kelly's`, `Spencer C. Kelly's`, `Union Corp's`, `Los Angeles's`]\n  arr.forEach(a => {\n    const doc = nlp(a)\n    const m = doc.possessives()\n    t.equal(m.length, 1, here + 'one possessive -' + a)\n    t.equal(m.out(), a, here + 'possessive match -' + a)\n  })\n  t.end()\n})\n\ntest('possessives-strip', function (t) {\n  const arr = [\n    [`Spencer's`, 'Spencer'],\n    [`Corey Hart's`, 'Corey Hart'],\n    [`Corey M. Hart's`, 'Corey M. Hart'],\n    [`Spencer C. Kelly's`, 'Spencer C. Kelly'],\n    [`Agility Inc's`, 'Agility Inc'],\n    [`University of Wisconsin's`, 'University of Wisconsin'],\n    [`Los Angeles's`, 'Los Angeles'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.possessives().strip()\n    t.equal(doc.out('text'), a[1], here + a[0])\n  })\n  t.end()\n})\n\n\ntest('strip-all', function (t) {\n  let doc = nlp(`frank's (open) 'bar'.`)\n  doc.possessives().strip()\n  doc.parentheses().strip()\n  doc.quotations().strip()\n  t.equal(doc.text(), 'frank open bar.', here + 'strip-1')\n\n  doc = nlp(`(frank's open \"bar\".)`)\n  doc.possessives().strip()\n  doc.parentheses().strip()\n  doc.quotations().strip()\n  t.equal(doc.text(), 'frank open bar.', here + 'strip-2')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/quotations.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/quotations] '\n\ntest('quotation test', function (t) {\n  const arr = [\n    ['so I said \"nah forget it\"', 'nah forget it'],\n    ['so I said \"nah, forget it\" go home to bel-air!', 'nah forget it'],\n    [\"so I said 'nah, forget it' go home to bel-air!\", 'nah forget it'],\n    ['so I said \"nah\" go home to bel-air!', 'nah'],\n    [\"so 'as if' i said\", 'as if'],\n    [\"the 'truthiness' i said\", 'truthiness'],\n    ['yeah, “fun” and stuff', 'fun'],\n    ['“Fun” and stuff', 'fun'],\n    ['démontre que «le gouvernement» exploite', 'le gouvernement'],\n    //dangling start/end\n    [\"'twas good cookin\", ''],\n    [\"twas good cookin'\", ''],\n    // [\"twas 'good cookin'\", 'good cookin'],\n    // [\"'twas 'good cookin'\", 'twas good cookin'],\n    [`and \"Dig Your own grave and Save\".`, 'dig your own grave and save'],\n\n    [`i heard \"the news\" today`, 'the news'],\n    [`i heard 'news' today`, 'news'],\n    [`yo. i heard \"the very sad news\" today`, 'the very sad news'],\n    [`i heard \"the news today`, ''],\n  ]\n  arr.forEach(function (a) {\n    const r = nlp(a[0])\n    const str = r.quotations().out('normal')\n    const msg = a[0] + '  -  ' + str\n    t.equal(str, a[1], here + msg)\n  })\n  t.end()\n})\n\n// test('multiple quotation test', function(t) {\n//   const arr = [\n//     [`My \"String\" \"with many\" adjacent \"nested\" 'quotes'`, ['string', 'with many', 'nested', 'quotes']],\n//     [`My \"String 'with manys' adjacent\" \"nested\" 'quotes'`, ['string with manys adjacent', 'nested', 'quotes']],\n//     [\n//       `\"May's\" 'third day' 'will be a \"really cold\" day' \"in a\" 'really cold \"month\"'`,\n//       [\"may's\", 'third day', 'will be a really cold day', 'in a', 'really cold month'],\n//     ],\n//   ]\n//   arr.forEach(function(a) {\n//     const r = nlp(a[0])\n//     const str = r.quotations().out('array')\n//     const msg = a[0] + '  -  ' + str\n//     t.deepEqual(str, a[1], msg)\n//   })\n//   t.end()\n// })\n"
  },
  {
    "path": "tests/three/redact.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/redact] '\n\ntest('redact:', function (t) {\n  const arr = [\n    [`spencer from 234 Main st at 423-3242 and spencer@gmail.com.`, '██████████ from ██████████ at ███████ and ██████████.'],\n    [`in Toronto, Canada!`, `in ██████████!`],\n    [`with Dr. Miller and his pal Joe`, `with ██████████ and his pal ██████████`],\n  ]\n  arr.forEach(a => {\n    const [str, want] = a\n    const have = nlp(str).redact().text()\n    t.equal(have + '|', want + '|', here + ' - ' + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/sentences/debullet.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/bullets] '\n\n// should not strip bullets\ntest('dont-debullet', function (t) {\n  t.plan(2)\n  let str = 'it is-cool. He is- nice-'\n  let m = nlp(str)\n  m.normalize({ debullet: true })\n  t.equal(m.out('text'), str, here + `don't debullet hyphens`)\n\n  str = `i was -\nfeeling weird -\nwere you too?`\n\n  m = nlp(str)\n  m.normalize({ debullet: true })\n  t.equal(m.out('text'), str, here + `don't debullet hyphens with multi-line`)\n  t.end()\n})\n\n// should strip bullets\ntest('do-debullet', function (t) {\n  t.plan(6)\n  let str = '- it is-cool - he is nice'\n  let expected = 'it is-cool - he is nice'\n  let m = nlp(str)\n  m.normalize({ debullet: true })\n  t.equal(m.out('text'), expected, here + `do debullet line beginning hyphen`)\n\n  // all `str` below should match `expected` after debullet()\n  expected = `it is-cool \nHe is nice\noooh yeah, baby!`\n\n  str = `- it is-cool \n- He is nice\n- oooh yeah, baby!`\n\n  m = nlp(str)\n\n  m.normalize({ debullet: true })\n  t.equal(m.out('text'), expected, here + `do debullet multiline beginning hyphen`)\n\n  str = `-it is-cool \n-He is nice\n-oooh yeah, baby!`\n\n  m = nlp(str)\n\n  m.normalize({ debullet: true })\n  t.equal(m.out('text'), expected, here + `do debullet multiline beginning hyphen no-space`)\n\n  str = `* it is-cool \n* He is nice\n* oooh yeah, baby!`\n\n  m = nlp(str)\n\n  m.normalize({ debullet: true })\n  t.equal(m.out('text'), expected, here + `do debullet multiline beginning asterisk`)\n\n  str = `• it is-cool \n• He is nice\n• oooh yeah, baby!`\n\n  m = nlp(str)\n\n  m.normalize({ debullet: true })\n  t.equal(m.out('text'), expected, here + `do debullet multiline beginning bullet char`)\n\n  str = `•it is-cool \n•He is nice\n•oooh yeah, baby!`\n\n  m = nlp(str)\n\n  m.normalize({ debullet: true })\n  t.equal(m.out('text'), expected, here + `do debullet multiline beginning bullet char nospace`)\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/sentences/isQuestion.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/isQuestion] '\n\ntest('false-positives', function (t) {\n  const txt = `He is cool. Do you agree? I do.`\n  let s = nlp(txt).sentences()\n  t.equal(s.length, 3, here + 'sentences has questions')\n  s = s.isQuestion()\n  t.equal(s.text(), 'Do you agree?', here + 'one question')\n  t.end()\n})\n\ntest('false-positives', function (t) {\n  const txt = `Probably the renovation right away from the amount of work, which has been done to the property.\n  I have one two, three, four five six properties, which came on the market in the month.\n  I think that the number one quite comfortable looking at the two properties, which I'm working on now.`\n  const questions = nlp(txt).sentences().isQuestion()\n  t.equal(questions.length, 0, here + 'no questions here')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/sentences/misc-conjugate.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/misc-conjugate] '\n\ntest('copula-form', function (t) {\n  const m = nlp('john is nice').sentences()\n\n  m.toPastTense()\n  t.equal(m.out(), 'john was nice', here + 'toPast-1')\n\n  m.toPresentTense()\n  t.equal(m.out(), 'john is nice', here + 'toPres-1')\n\n  m.toFutureTense()\n  t.equal(m.out(), 'john will be nice', here + 'toFuture-1')\n\n  m.toNegative()\n  t.equal(m.out(), 'john will not be nice', here + 'toNeg-future')\n\n  //negative forms\n  m.toPastTense()\n  // t.equal(m.out(), 'john was not nice', here + 'toPast-neg')\n\n  m.toPresentTense()\n  // t.equal(m.out(), 'john is not nice', here + 'toPres-neg')\n\n  m.toFutureTense()\n  t.equal(m.out(), 'john will not be nice', here + 'toFuture-neg')\n\n  t.end()\n})\n\n//\ntest('conjugate-form', function (t) {\n  const m = nlp('john walks quickly').sentences()\n\n  m.toPastTense()\n  t.equal(m.out(), 'john walked quickly', here + 'toPast-1')\n\n  m.toPresentTense()\n  t.equal(m.out(), 'john walks quickly', here + 'toPres-1')\n\n  m.toFutureTense()\n  t.equal(m.out(), 'john will walk quickly', here + 'toFuture-1')\n\n  m.toNegative()\n  t.equal(m.out(), 'john will not walk quickly', here + 'toNeg')\n\n  //negative forms\n  m.toPastTense()\n  t.equal(m.out(), 'john did not walk quickly', here + 'toPast-neg')\n\n  m.toPresentTense()\n  t.equal(m.out(), 'john does not walk quickly', here + 'toPres-neg')\n\n  m.toFutureTense()\n  t.equal(m.out(), 'john will not walk quickly', here + 'toFuture-neg')\n\n  t.end()\n})\n\ntest('particle-form', function (t) {\n  const m = nlp('the stool falls over').sentences()\n\n  m.toPastTense()\n  t.equal(m.out(), 'the stool fell over', here + 'toPast-1')\n\n  m.toPresentTense()\n  t.equal(m.out(), 'the stool falls over', here + 'toPres-1')\n\n  m.toFutureTense()\n  t.equal(m.out(), 'the stool will fall over', here + 'toFuture-1')\n\n  m.toNegative()\n  t.equal(m.out(), 'the stool will not fall over', here + 'toNeg')\n\n  //negative forms\n  m.toPastTense()\n  t.equal(m.out(), 'the stool did not fall over', here + 'toPast-neg')\n\n  m.toPresentTense()\n  t.equal(m.out(), 'the stool does not fall over', here + 'toPres-neg')\n\n  m.toFutureTense()\n  t.equal(m.out(), 'the stool will not fall over', here + 'toFuture-neg')\n\n  t.end()\n})\n\ntest('contraction past-tense', function (t) {\n  const arr = [\n    [`I'm going to the shops`, `I was going to the shops`],\n    [`I'll go to the shops`, `I went to the shops`],\n    [`We're looking`, `We were looking`],\n    [`We are looking`, `We were looking`],\n    // [`We are looking`, `We looked`],\n    // [`We're looking`, `We looked`],\n    [`We'll look`, `We looked`],\n  ]\n  arr.forEach((a) => {\n    const str = nlp(a[0]).sentences().toPastTense().out()\n    t.equal(str, a[1], here + 'past-tense ' + a.join(' - '))\n  })\n  t.end()\n})\n\ntest('contraction future-tense', function (t) {\n  const arr = [\n    [`I'm going to the shops`, `I will be going to the shops`],\n    [`I'll go to the shops`, `I'll go to the shops`],\n    // [`I'm going to the shops`, `I will be going to the shops`],\n    // [`I'll go to the shops`, `I will be going to the shops`],\n  ]\n  arr.forEach((a) => {\n    const str = nlp(a[0]).sentences().toFutureTense().out()\n    t.equal(str, a[1], here + 'future-tense ' + a.join(' - '))\n  })\n  t.end()\n})\n\ntest('contraction present-tense', function (t) {\n  const arr = [\n    [`I'm going to the shops`, `I'm going to the shops`],\n    [`I'm looking for a bug`, `I'm looking for a bug`],\n    [`I'll go to the shops`, `I go to the shops`],\n    [`I'll look for a bug`, `I look for a bug`],\n  ]\n  arr.forEach((a) => {\n    const str = nlp(a[0]).sentences().toPresentTense().out()\n    t.equal(str, a[1], here + 'present-tense ' + a.join(' - '))\n  })\n  t.end()\n})\n\ntest('pronoun-specific', function (t) {\n  //from present\n  let m = nlp('i am cool').sentences().toPresentTense()\n  t.equal(m.out(), 'i am cool', here + 'toPresent-I')\n  m = nlp('i am cool').sentences().toPastTense()\n  t.equal(m.out(), 'i was cool', here + 'toPastTense-I')\n  m = nlp('i am cool').sentences().toFutureTense()\n  t.equal(m.out(), 'i will be cool', here + 'toFutureTense-I')\n\n  //from future\n  m = nlp('i will be cool').sentences().toFutureTense()\n  t.equal(m.out(), 'i will be cool', here + 'toFutureTense-I-2')\n  m = nlp('i will be cool').sentences().toPastTense()\n  t.equal(m.out(), 'i was cool', here + 'toPastTense-I-2')\n  m = nlp('i will be cool').sentences().toPresentTense()\n  t.equal(m.out(), 'i am cool', here + 'toPresentTense-I-2')\n\n  //from past\n  m = nlp('i was cool').sentences().toPresentTense()\n  t.equal(m.out(), 'i am cool', here + 'toPresentTense-I-3')\n  m = nlp('i was cool').sentences().toPastTense()\n  t.equal(m.out(), 'i was cool', here + 'toPastTense-I-3')\n  m = nlp('i was cool').sentences().toFutureTense()\n  t.equal(m.out(), 'i will be cool', here + 'toFutureTense-I-3')\n\n  //with negative\n  m = nlp('i was not cool').sentences().toPresentTense()\n  t.equal(m.out(), 'i am not cool', here + 'neg-1')\n  m = nlp(\"i wasn't cool\").sentences().toPastTense()\n  t.equal(m.out(), \"i wasn't cool\", here + 'neg-2')\n  m = nlp('i was not cool').sentences().toFutureTense()\n  t.equal(m.out(), 'i will be not cool', here + 'neg-3')\n\n  //with adverbs\n  m = nlp('i was really cool').sentences().toPresentTense()\n  t.equal(m.out(), 'i am really cool', here + 'toPresentTense-I-3')\n  m = nlp('i was really cool').sentences().toPastTense()\n  t.equal(m.out(), 'i was really cool', here + 'toPastTense-I-3')\n  m = nlp('i was really cool').sentences().toFutureTense()\n  t.equal(m.out(), 'i will be really cool', here + 'toFutureTense-I-3')\n  t.end()\n})\n\ntest('tense-multiple', function (t) {\n  let doc = nlp(`he walks down the street and smells the flowers.`)\n  doc.sentences().toPastTense()\n  t.equal(doc.text(), 'he walked down the street and smelled the flowers.', here + 'to-past')\n\n  doc = nlp(`he walked down the street and smelled the flowers.`)\n  doc.sentences().toPresentTense()\n  t.equal(doc.text(), 'he walks down the street and smells the flowers.', here + 'to-pres')\n\n  // past\n  doc = nlp(`he walked down the street and smelled the flowers.`)\n  doc.sentences().toFutureTense()\n  t.equal(doc.text(), 'he will walk down the street and smell the flowers.', here + 'past-1')\n  // past-two\n  doc = nlp(`he walks down the street and smells the flowers.`)\n  doc.sentences().toFutureTense()\n  t.equal(doc.text(), 'he will walk down the street and smell the flowers.', here + 'past-2')\n  t.end()\n})"
  },
  {
    "path": "tests/three/sentences/misc.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/sentence-misc] '\n\ntest('misc sentences', function (t) {\n  let doc = nlp(`quickly, suddenly`)\n  t.equal(doc.sentences().length, 1, here + 'found one sentence')\n\n  doc = nlp(`john, bill, and joe. Here we go. Must be three now.`)\n  t.equal(doc.sentences().length, 3, here + 'found three sentences')\n\n  const d = nlp(`i am good`)\n  const s = d.sentences()\n  s.replace('am', 'was')\n  t.equal(d.text(), 'i was good', here + 'tricky map replace bug')\n\n  t.end()\n})\n\ntest('full sentence', function (t) {\n  const doc = nlp(`john, bill, and joe. Here we go. Must be three now.`)\n  const m = doc.match('we')\n  t.equal(m.sentences().text(), 'Here we go.', here + 'found full sentence')\n  t.end()\n})\n\ntest('sentence prepend', function (t) {\n  let doc = nlp('He is cool.')\n  doc.sentences().prepend('so i think')\n  t.equal(doc.text(), 'So i think he is cool.', here + 'reset titlecase')\n\n  doc = nlp('Spencer is cool.')\n  doc.sentences().prepend('yeah')\n  t.equal(doc.text(), 'Yeah Spencer is cool.', here + 'leave propernoun titlecase')\n  t.end()\n})\n\ntest('sentence filters', function (t) {\n  const doc = nlp('He is cool? I think not. Yipeee!').sentences()\n\n  t.equal(doc.isExclamation().length, 1, here + 'has-exclamation')\n  t.equal(doc.isQuestion().length, 1, here + 'has-question')\n  t.equal(doc.isStatement().length, 1, here + 'has-statement')\n\n  t.end()\n})\n\ntest('sentence append', function (t) {\n  let doc = nlp('Spencer is cool.')\n  doc.sentences().append('i think')\n  t.equal(doc.text(), 'Spencer is cool i think.', here + 'move period')\n\n  doc = nlp('Spencer is cool?')\n  doc.sentences().append('i think')\n  t.equal(doc.text(), 'Spencer is cool i think?', here + 'move question-mark')\n\n  doc = nlp('Spencer is cool!')\n  doc.sentences().append('i think')\n  t.equal(doc.text(), 'Spencer is cool i think!', here + 'move exclamation-mark')\n  t.end()\n})\n\n// test('sentence append - change', function (t) {\n//   let doc = nlp('i am cool. it is raining!')\n//   doc.sentences().append('right?')\n//   t.equal(doc.text(), 'i am cool right? it is raining right?', 'change ending')\n\n//   doc = nlp('it is cool? it is raining?')\n//   doc.sentences(0).append('for sure.  ')\n//   t.equal(doc.all().text(), 'it is cool for sure.   it is raining?', 'change ending 2')\n//   t.end()\n// })\n"
  },
  {
    "path": "tests/three/sentences/negative.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/sentence-negative] '\n\ntest('sentences.toPositive', function (t) {\n  const doc = nlp(`do not use reverse psychology.`)\n  doc.sentences().toPositive()\n  t.equal(doc.text(), 'use reverse psychology.', here + 'neg')\n\n  doc.sentences().toNegative()\n  t.equal(doc.text(), 'do not use reverse psychology.', here + 'back to neg')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/sentences/sentence-participle.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/sentence-participle] '\n\ntest('toPast finds participle form', function (t) {\n  let doc = nlp('i drive')\n  doc.sentences().toPastTense()\n  t.equal(doc.text(), 'i drove', here + 'no modal')\n\n  doc = nlp('i really drive')\n  doc.sentences().toPastTense()\n  t.equal(doc.text(), 'i really drove', here + 'adverb no modal')\n\n  doc = nlp('i should drive')\n  doc.sentences().toPastTense()\n  t.equal(doc.text(), 'i should have driven', here + 'with should')\n\n  doc = nlp('i really may drive')\n  doc.sentences().toPastTense()\n  t.equal(doc.text(), 'i really may have driven', here + 'with really may')\n\n  doc = nlp('i could actually drive')\n  doc.sentences().toPastTense()\n  t.equal(doc.text(), 'i could have actually driven', here + 'with could actually')\n\n  doc = nlp(\"i seriously couldn't drive\")\n  doc.sentences().toPastTense()\n  t.equal(doc.text(), \"i seriously couldn't have driven\", here + 'with adverb + neg')\n\n  // doc = nlp(\"i seriously couldn't even drive\")\n  // doc.sentences().toPastTense()\n  // t.equal(doc.text(), \"i seriously couldn't even have driven\", 'with many modals')\n\n  t.end()\n})\n\ntest('toParticiple', function (t) {\n  const arr = [\n    ['i drive', 'i have driven'],\n    ['we smoke', 'we have smoked'],\n    // ['i will go', 'i will have gone'], //hmm\n    ['they all swim', 'they all have swam'],\n    ['i learn', 'i have learned'],\n    ['i really travel to india', 'i really have traveled to india'],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    // doc.sentences().toParticiple()\n    doc.sentences().toPastTense()\n    t.equal(doc.text(), a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('modal-present-to-past', function (t) {\n  const arr = [\n    ['he may drive', 'he may have driven'],\n    ['he should smoke', 'he should have smoked'],\n    ['i could go', 'i could have gone'],\n    ['nobody can swim', 'nobody could have swam'],\n    ['i must learn', 'i must have learned'],\n    ['i really may travel', 'i really may have traveled'],\n  ]\n  arr.forEach((a) => {\n    const doc = nlp(a[0])\n    doc.sentences().toPastTense()\n    t.equal(doc.text(), a[1], here + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/sentences/sentence.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/sentence] '\n\ntest('get full sentence:', function (t) {\n  const doc = nlp('one two foo four five. i saw foo house. I ate a sandwhich. Foo was nice')\n\n  const m = doc.match('foo')\n\n  let str = m.eq(0).sentences().text()\n  t.equal(str, doc.sentences(0).text(), here + 'first-full-sentence')\n\n  str = m.eq(1).sentences().text()\n  t.equal(str, doc.sentences(1).text(), here + 'second-full-sentence')\n\n  str = m.eq(2).sentences().text()\n  t.equal(str, doc.sentences(3).text(), here + 'third-full-sentence')\n\n  t.end()\n})\n\ntest('get multiple-copies of one sentence:', function (t) {\n  const doc = nlp('John Smith was cool. I am missing. Cindy Lauper and Carl Sagan here. I am also missing.')\n  const m = doc.match('#Person+')\n  const matches = m.sentences()\n  const arr = matches.out('array')\n  t.equal(arr.length, 3, here + 'two sentences into three results')\n  t.equal(arr[0], 'John Smith was cool.', here + 'one person sentence #1')\n  t.equal(arr[1], 'Cindy Lauper and Carl Sagan here.', here + 'two person sentence #1')\n  t.equal(arr[2], 'Cindy Lauper and Carl Sagan here.', here + 'two person sentence #2')\n  t.end()\n})\n\ntest('sentence append:', function (t) {\n  const doc = nlp('\"Good bye,\" he said.')\n  doc.sentences().forEach((match) => {\n    match.append('and left')\n  })\n  t.equal(doc.text(), `\"Good bye,\" he said and left.`, here + 'sentence-append')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/sentences/svo.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/svo] '\n\ntest('svo parser', function (t) {\n  const arr = [\n    ['My dog loves pizza crusts.', 'my dog', 'loves'],\n    ['My grey dog loves pizza crusts.', 'my grey dog', 'loves'],\n    ['if i can recall, my grey dog loves pizza crusts.', 'my grey dog', 'loves'],\n    ['I remember what you said yesterday.', 'i', 'remember'],\n    ['i had suddenly and quickly arrived in Kyiev', 'i', 'had suddenly and quickly arrived'],\n    ['I eat bananas in the kitchen.', 'i', 'eat'],\n    ['I thought what she wore was so chic.', 'i', 'thought'],\n    ['In the kitchen, I eat', 'i', 'eat'],\n    ['smoked poutine is delicious', 'smoked poutine', 'is'],\n    [`by chance, the tape was discovered in the room`, `the tape`, `was discovered`],\n    [`every year, we gather in Baltimore`, `we`, `gather`],\n    [`if only i was awake, we could have eaten the breakfast`, `we`, `could have eaten`],\n    ['Every night before I go to bed, I eat bananas.', 'i', 'eat'],\n    [\n      'Diane decided to plant tomatoes in the back of the yard, where the sun blazed the longest during the day.',\n      'diane',\n      'decided to plant',\n    ],\n    ['Once Adam smashed the spider, he ran into the bathroom', 'he', 'ran into'],\n    [`We are introducing ourselves to the class.`, 'we', 'are introducing ourselves'],\n    [\n      'Throughout the day, as the sun gradually set, the temperature dropped significantly, creating a chilly evening.',\n      'the temperature',\n      'dropped significantly',\n    ],\n    [\n      'He collaborated with the university to develop comprehensive academic proposals throughout the entire campus, encompassing academic priorities in every department at the university and course structure typologies for each academic program.',\n      'he',\n      'collaborated',\n    ],\n    ['Despite Susan walking the dog, she was not wearing a coat.', 'she', 'was not wearing'],\n    [\n      'Taking diligent notes throughout the entire class, the students remained focused during the lecture.',\n      'the students',\n      'remained',\n    ],\n\n    // ['every day the kitten tries to eat the mouse', 'the kitten', 'tries to eat'],\n    // ['The boy who you saw at the store committed a robbery.', 'the boy', 'committed'],\n    // ['After dripping mustard all over his chest, the man who was wearing a red shirt wished that he had instead chosen ketchup for his hotdog.', 'the man', 'wished'],\n    // [\"please tell me you'll address the issue\", 'you', 'will address'],\n    // ['The store that the boy robbed is on the corner.', 'the store', 'is'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    const obj = doc.sentences().json()[0]\n    t.equal(obj.sentence.subject, a[1], here + 'subject: ' + a[1])\n    t.equal(obj.sentence.verb, a[2], here + 'verb: ' + a[2])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/sentences/tense.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/sentence-conjugate] '\n\ntest('sentence-change-tense:', function (t) {\n  const arr = [\n    ['john walks quickly', 'john walked quickly', 'john will walk quickly'],\n    ['he is quick', 'he was quick', 'he will be quick'],\n    ['the stool falls over', 'the stool fell over', 'the stool will fall over'],\n    ['i usually take the stairs', 'i usually took the stairs', 'i usually will take the stairs'],\n    ['i usually use the stairs', 'i usually used the stairs', 'i usually will use the stairs'],\n    ['he finishes first', 'he finished first', 'he will finish first'],\n    ['our house looks great', 'our house looked great', 'our house will look great'],\n    [\n      'temptation is a desire to engage',\n      'temptation was a desire to engage',\n      'temptation will be a desire to engage',\n    ],\n    // [`the vision appears and starts to walk and sing`, `the vision appeared and started to walk and sing`, `the vision will appear and start to walk and sing`],\n    // [\n    //   'Capital punishment, also known as the death penalty, is the state-sanctioned killing of a person as punishment for a crime.',\n    //   'Capital punishment, also known as the death penalty, was the state-sanctioned killing of a person as punishment for a crime.',\n    //   'Capital punishment, also known as the death penalty, will be the state-sanctioned killing of a person as punishment for a crime.',\n    // ],\n    // [\n    //   `A greeting is an act of communication in which human beings intentionally make their presence known`,\n    //   `A greeting was an act of communication in which human beings intentionally made their presence known`,\n    //   `A greeting will be an act of communication in which human beings intentionally make their presence known`,\n    // ],\n    // [\n    //   'Pigeonholing is a process that attempts to classify disparate entities',\n    //   'Pigeonholing was a process that attempted to classify disparate entities',\n    //   'Pigeonholing will be a process that attempts to classify disparate entities',\n    // ],\n    // [\n    //   `Breathing is the process of moving air into and out of the lungs to facilitate gas exchange with the internal environment`,\n    //   `Breathing was the process of moving air into and out of the lungs to facilitate gas exchange with the internal environment`,\n    //   `Breathing will be the process of moving air into and out of the lungs to facilitate gas exchange with the internal environment`,\n    // ],\n    // [\n    //   `A shoehorn or shoe horn is a tool with a short handle that flares into a longer spoon-like head`,\n    //   `A shoehorn or shoe horn was a tool with a short handle that flared into a longer spoon-like head`,\n    //   `A shoehorn or shoe horn will be a tool with a short handle that flares into a longer spoon-like head`,\n    // ],\n    // [\n    //   `A hinge is a mechanical bearing that connects two solid objects, typically allowing only a limited angle of rotation between them.`,\n    //   `A hinge was a mechanical bearing that connected two solid objects, typically allowing only a limited angle of rotation between them.`,\n    //   `A hinge will be a mechanical bearing that connects two solid objects, typically allowing only a limited angle of rotation between them.`,\n    // ],\n    [\n      `Sugaring is a food preservation method similar to pickling.`,\n      `Sugaring was a food preservation method similar to pickling.`,\n      `Sugaring will be a food preservation method similar to pickling.`,\n    ],\n    // [\n    //   `Sugaring is the process of desiccating a food by first dehydrating it, then packing it with pure sugar.`,\n    //   `Sugaring was the process of desiccating a food by first dehydrating it, then packing it with pure sugar.`,\n    //   `Sugaring will be the process of desiccating a food by first dehydrating it, then packing it with pure sugar.`,\n    // ],\n    // [\n    //   `A Bank is a financial institution that accepts deposits from the public and creates a demand deposit while simultaneously making loans.`,\n    //   `A Bank was a financial institution that accepted deposits from the public and created a demand deposit while simultaneously making loans.`,\n    //   `A Bank will be a financial institution that accepts deposits from the public and creates a demand deposit while simultaneously making loans.`,\n    // ],\n    // [\n    //   `Checkmate is a game position in chess in which a player's king is in check and there is no way to avoid the threat.`,\n    //   `Checkmate was a game position in chess in which a player's king was in check and there was no way to avoid the threat.`,\n    //   `Checkmate will be a game position in chess in which a player's king will be in check and there will be no way to avoid the threat.`,\n    // ],\n    //infinitives\n    // [\n    //   'he does what he can to stop',\n    //   'he did what he could to stop',\n    //   'he will do what he can to stop',\n    // ],\n    ['goes to sleep', 'went to sleep', 'will go to sleep'],\n\n    //passive\n    // ['cardboard is made of tree fibre', 'cardboard was made of tree fibre', 'cardboard will be made of tree fibre'],\n\n    //grammatical-number\n    // ['we do what we can to stop', 'we did what we could to stop', 'we will do what we can to stop'],\n\n    //multi-sentence\n    [\n      'this is one sentence. This makes two now.',\n      'this was one sentence. This made two now.',\n      'this will be one sentence. This will make two now.',\n    ],\n\n    //support negative\n    // ['this isn\\'t one sentence. This doesn\\'t make two now.', 'this was not one sentence. This didn\\'t make two now.', 'this won\\'t be one sentence. This won\\'t make two now.']\n  ]\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n\n    doc.sentences().toPastTense()\n    let str = doc.out('text')\n    t.equal(str, a[1], here + '[pres->pastTense] ' + str)\n\n    doc.sentences().toFutureTense()\n    str = doc.out('text')\n    t.equal(str, a[2], here + '[past->future] ' + str)\n\n    doc.sentences().toPresentTense()\n    str = doc.out('text')\n    t.equal(str, a[0], here + '[future->present] ' + str)\n  })\n  t.end()\n})\n\n"
  },
  {
    "path": "tests/three/sentences/toFuture.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/sentence-toFuture] '\n\ntest('sentence-toFuture', function (t) {\n  const arr = [\n    ['she is cool', 'she will be cool'],\n    ['she was cool', 'she will be cool'],\n    ['she will be cool', 'she will be cool'],\n    ['they are cool', 'they will be cool'],\n    ['they will be cool', 'they will be cool'],\n\n    [`He sees something different each time he watches.`, `He will see something different each time he watches.`],\n    // [`It only happens when he watched them alone.`, `It only will happen when he watches them alone.`],\n    [`She devotes her life to her twirling and amateur film.`, `She will devote her life to her twirling and amateur film.`],\n    [`Orin has trouble not burning the Jiffy Pop popcorn.`, `Orin will have trouble not burning the Jiffy Pop popcorn.`],\n    [`He likes to dim the track-lights when Joelle was out.`, `He will like to dim the track-lights when Joelle will be out.`],\n    [`Joelle's equipment isn't quite pro-caliber but her technique is very good.`, `Joelle's equipment will be not quite pro-caliber but her technique will be very good.`],\n    [`He weighs fifty kilos and his skin is the color of squash.`, `He will weigh fifty kilos and his skin will be the color of squash.`],\n    [`He has terrible shivering-attacks and also perspires.`, `He will have terrible shivering-attacks and also perspire.`],\n    [`He has a sty that scrapes one eyeball`, `He will have a sty that scrapes one eyeball`],\n\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0]).sentences()\n    doc.toFutureTense()\n    t.equal(doc.out(), a[1], here + '[toFuture] ' + a[0])\n    // doc.toPresentTense()\n    // t.equal(doc.out(), a[0], here + '[toPresent] ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/sentences/toGerund.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/sentence-toGerund] '\n\ntest('sentence-toGerund', function (t) {\n  const arr = [\n    ['she is cool', 'she is being cool'],\n    ['she was cool', 'she was being cool'],\n    ['she is being cool', 'she is being cool'],\n    ['they are cool', 'they are being cool'],\n    ['they are being cool', 'they are being cool'],\n\n    [`He sees something different each time he watches.`, `He is seeing something different each time he watches.`],\n    [`It only happens when he watched them alone.`, `It only is happening when he watches them alone.`],\n    [`She devotes her life to her twirling and amateur film.`, `She is devoting her life to her twirling and amateur film.`],\n    [`Orin has trouble not burning the Jiffy Pop popcorn.`, `Orin is having trouble not burning the Jiffy Pop popcorn.`],\n    // [`He likes to dim the track-lights when Joelle was out.`, `He is liking to dim the track-lights when Joelle was out.`],\n    [`Joelle's equipment isn't quite pro-caliber but her technique is very good.`, `Joelle's equipment is not going to be quite pro-caliber but her technique is very good.`],\n    // [`He weighs fifty kilos and his skin is the color of squash.`, `He is weighing fifty kilos and his skin is the color of squash.`],\n    [`He has terrible shivering-attacks and also perspires.`, `He is having terrible shivering-attacks and also perspiring.`],\n    [`He has a sty that scrapes one eyeball`, `He is having a sty that scrapes one eyeball`],\n\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0]).sentences()\n    doc.toGerund()\n    t.equal(doc.out(), a[1], here + '[toGerund] ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/sentences/toPast.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/sentence-toPast] '\n\ntest('sentence-toPast', function (t) {\n  const arr = [\n    ['she is cool', 'she was cool'],\n    ['she was cool', 'she was cool'],\n    ['she will be cool', 'she was cool'],\n    ['they are cool', 'they were cool'],\n    ['they will be cool', 'they were cool'],\n\n    [`By Orin's sophomore year she no longer twirls or incites Pep in any way.`, `By Orin's sophomore year she no longer twirled or incited Pep in any way.`],\n    [`He sees something different each time he watches.`, `He saw something different each time he watched.`],\n    [`It only happens when he watched them alone.`, `It only happened when he watched them alone.`],\n    [`She devotes her life to her twirling and amateur film.`, `She devoted her life to her twirling and amateur film.`],\n    [`Orin has trouble not burning the Jiffy Pop popcorn.`, `Orin had trouble not burning the Jiffy Pop popcorn.`],\n    [`He likes to dim the track-lights when Joelle was out.`, `He liked to dim the track-lights when Joelle was out.`],\n    [`Joelle's equipment isn't quite pro-caliber but her technique is very good.`, `Joelle's equipment was not quite pro-caliber but her technique was very good.`],\n    [`He weighs fifty kilos and his skin is the color of squash.`, `He weighed fifty kilos and his skin was the color of squash.`],\n    [`He has terrible shivering-attacks and also perspires.`, `He had terrible shivering-attacks and also perspired.`],\n    [`He has a sty that scrapes one eyeball`, `He had a sty that scraped one eyeball`],\n\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0]).sentences()\n    doc.toPastTense()\n    t.equal(doc.out(), a[1], here + '[toPast] ' + a[0])\n    // doc.toPresentTense()\n    // t.equal(doc.out(), a[0], here + '[toPresent] ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/sentences/toPresent.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/sentence-toPresent] '\n\ntest('sentence-toPresent', function (t) {\n  const arr = [\n\n    [`And Venus Williams owned a ranch outside Green Valley;`, `And Venus Williams owns a ranch outside Green Valley;`],\n    // [`I will be out in plenty of time for tomorrow's semi; I trust Uncle Charles.`, `I am out in plenty of time for tomorrow's semi; I trust Uncle Charles.`],\n    [`I will play either Stice or Polep in Sunday's final.`, `I play either Stice or Polep in Sunday's final.`],\n    // [`She said she would come.`, `She says she would come.`],\n    // [`He sat and thought.`, `He sits and thinks.`],\n    [`There was an insect on one of the shelves.`, `There is an insect on one of the shelves.`],\n    [`The insect was dark and had a shiny case.`, `The insect is dark and has a shiny case.`],\n    // [`It protruded, but it did not move.`, `It protrudes, but it does not move.`],\n    // [`He tried to decide whether the woman was pretty.`, `He tries to decide whether the woman is pretty.`],\n    [`This line of thinking almost caused him to become angry.`, `This line of thinking almost causes him to become angry.`],\n    [`No part of the insect he'd seen was now visible.`, `No part of the insect he has seen is now visible.`],\n    [`He didn't even know why he liked it anymore.`, `He does not even know why he likes it anymore.`],\n    // [`But he would force himself to do it anyway.`, `But he forces himself to do it anyway.`],\n    [`It was on the shelf that held his digital equalizer.`, `It is on the shelf that holds his digital equalizer.`],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0]).sentences()\n    doc.toPresentTense()\n    t.equal(doc.out(), a[1], here + '[toPresent] ' + a[0])\n  })\n  t.end()\n})"
  },
  {
    "path": "tests/three/setTag.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/setTag] '\n\ntest('custom-tags-persist', function (t) {\n  let r = nlp('i am two years older now')\n  let two = r.match('#Value').tag('#FunTag')\n  two.replaceWith('never')\n  t.equal(two.has('#FunTag'), false, here + 'custom tag is forgotten')\n\n  r = nlp('i am two years older now')\n  two = r.match('#Value').tag('#FunTag')\n  two.toUpperCase().trim()\n  t.equal(two.text(), 'TWO', here + 'term transformed')\n  t.equal(two.has('#Value'), true, here + 'original tag stays over transformations')\n  t.equal(two.has('#FunTag'), true, here + 'custom tag stays over transformations')\n\n  r = nlp('i am two years older now')\n  two = r.match('#Value').tag('#FunTag')\n  two.toUpperCase()\n  two.values().toNumber()\n  t.equal(two.has('#FunTag'), true, here + 'custom tag stays over transformations')\n\n  r = nlp('june 1999')\n  r.values().toNumber()\n  const year = r.match('#Year')\n  t.equal(year.out('normal'), '1999', here + 'year-stays-a-year')\n\n  // not sure if these should pass..\n  // r = nlp('i am two years older now')\n  // r.match('am').tag('#FunTag')\n  // r = r.sentences().toFutureTense().toPresentTense().toPastTense()\n  // let verb = r.match('#FunTag')\n  // t.equal(verb.out('normal'), 'was', 'tag stays over sentence-change')\n\n  // r = nlp('walked').tag('#FunTag');\n  // r = r.verbs().toFutureTense().toPresentTense().toPastTense();\n  // verb = r.match('#FunTag');\n  // t.equal(verb.out('normal'), 'walked', 'tag stays over verb-change');\n\n  t.end()\n})\n\ntest('untag-soft', function (t) {\n  const doc = nlp('$5.32')\n  t.equal(doc.has('#Money'), true, here + 'had-money')\n  doc.unTag('#Money')\n  t.equal(doc.has('#Money'), false, here + 'has-no-money')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/slashes.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/slashes] '\n\ntest('slashes.split', function (t) {\n  const doc = nlp(`i saw him/her yesterday at 2pm.`)\n  t.equal(doc.has('#SlashedTerm'), true, here + 'has slash-tag')\n  let m = doc.slashes()\n  t.equal(m.length, 1, here + '1 slash')\n  t.equal(m.text(), 'him/her', here + 'slash-text')\n  m = m.split()\n  t.equal(m.text(), 'him her', here + 'slash-text-after')\n  t.equal(m.terms().length, 2, here + 'slash-terms-after')\n  t.equal(doc.text(), 'i saw him her yesterday at 2pm.', here + 'doc-text-after')\n  t.equal(doc.has('#SlashedTerm'), false, here + 'has no slash-tag')\n  t.end()\n})\n\ntest('three-slashes.split', function (t) {\n  const doc = nlp(`before. one two/three/four five. after`)\n  t.equal(doc.has('#SlashedTerm'), true, here + 'has slash-tag')\n  let m = doc.slashes()\n  t.equal(m.length, 1, here + '1 slash')\n  t.equal(m.text(), 'two/three/four', here + 'slash-text')\n  m = m.split()\n  t.equal(m.text(), 'two three four', here + 'slash-text-after')\n  t.equal(m.terms().length, 3, here + 'slash-terms-after')\n  t.equal(doc.text(), 'before. one two three four five. after', here + 'doc-text-after')\n  t.equal(doc.has('#SlashedTerm'), false, here + 'has no slash-tag')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/subsets.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/subset] '\n\ntest('match shorthand:', function (t) {\n  let doc = nlp('the cute and shortest')\n  t.equal(doc.adjectives('#Superlative').text(), 'shortest', here + '.adj()')\n\n  doc = nlp('spencer can. jamie cannot.')\n  t.equal(doc.nouns('jamie').text(), 'jamie', here + '.nouns()')\n\n  doc = nlp('spencer and jamie')\n  t.equal(doc.people('!jamie').text(), 'spencer', here + '.people()')\n\n  doc = nlp('i must walk but i am scared')\n  t.equal(doc.verbs('must').text(), 'must walk', here + '.verbs()')\n\n  doc = nlp('i toronto but not hamilton Jamaica')\n  t.equal(doc.places('#Country').text(), 'hamilton Jamaica', here + '.places()')\n\n\n  t.end()\n})"
  },
  {
    "path": "tests/three/sweep-tag.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/sweep-tag] '\n\ntest('cache-one:', function (t) {\n  const matches = [{ match: '(he|she|they|#Noun) (has|have) (a|an)' }]\n  const net = nlp.buildNet(matches)\n  const doc = nlp(`you have a appointment`)\n  t.equal(doc.has(net), true, here + 'Noun cache')\n  t.end()\n})\n\ntest('sweep-root:', function (t) {\n  const matches = [{ match: '{appointment}' }]\n  const net = nlp.buildNet(matches)\n  const doc = nlp(`you have some appointments`)\n  doc.compute('root')\n  t.equal(doc.has(net), true, here + 'root cache')\n  t.end()\n})\n\ntest('sweep-freeze:', function (t) {\n  const matches = [\n    { match: 'juicy fruit', tag: 'Singular', freeze: true },\n    { match: 'front steps', tag: 'Plural', freeze: true },\n    { match: 'juicy', tag: 'Adjective' },\n    { match: 'front', tag: 'Adjective' },\n  ]\n  const doc = nlp(`i ate juicy fruit on the front steps`)\n  const net = nlp.buildNet(matches)\n  doc.sweep(net)\n  let m = doc.match('juicy fruit')\n  t.equal(m.has('#Singular #Singular'), true, here + 'juicy fruit')\n  t.equal(m.has('#Adjective'), false, here + 'juicy fruit frozen')\n\n  m = doc.match('front steps')\n  t.equal(m.has('#Plural #Plural'), true, here + 'front steps')\n  t.equal(m.has('#Adjective'), false, here + 'front steps frozen')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/text-three.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/text] '\nimport penn from '../two/tagger/_pennSample.js'\nconst txt = penn.map(o => o.text).join(' ')\n\ntest('text-in-text-out', function (t) {\n  const doc = nlp(txt)\n  const methods = [\n    'terms',\n    'all',\n    'clauses',\n    'chunks',\n  ]\n  methods.forEach(fn => {\n    t.equal(doc[fn]().text(), txt, here + fn)\n  })\n\n  t.equal(doc.match('*').text(), txt, here + 'match *')\n  t.equal(doc.growRight('*').text(), txt, here + 'growRight *')\n\n  t.equal(doc.splitOn('is').text(), txt, here + 'splitOn')\n  t.equal(doc.splitBefore('no').text(), txt, here + 'splitBefore')\n  t.equal(doc.splitAfter('how').text(), txt, here + 'splitAfter')\n  t.end()\n})\n\n\ntest('wordcount-split', function (t) {\n  const doc = nlp(txt)\n  let m = doc.splitBefore('#Noun+')\n  t.equal(m.wordCount(), doc.wordCount(), 'splitBefore-wordcount')\n  m = doc.splitOn('#Noun+')\n  t.equal(m.wordCount(), doc.wordCount(), 'splitOn-wordcount')\n  m = doc.splitAfter('#Noun+')\n  t.equal(m.terms().length, doc.terms().length, 'splitAfter-wordcount')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/topics.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[three/topics] '\n\ntest('topics:', function (t) {\n  const list = [\n    ['Tony Hawk lives in Toronto. Tony Hawk is cool.', 'tony hawk'],\n    ['I live Toronto. I think Toronto is cool.', 'toronto'],\n    ['The EACD united in 1972. EACD must follow regulations.', 'eacd'],\n    // ['The Elkjsdflkjsdf sells hamburgers. I think the Elkjsdflkjsdf eats turky.', 'elkjsdflkjsdf'],\n    // [\"Toronto's citizens love toronto!\", 'toronto'],\n    [\"Toronto's citizens love toronto\", 'toronto'],\n  ]\n  list.forEach(function (a) {\n    const arr = nlp(a[0]).topics().out('freq')\n    t.equal(arr[0].normal, a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('topics-false-positives:', function (t) {\n  const arr = [\n    'somone ate her lunch',\n    'everybody is dancing all night',\n    \"a man and a woman ate her son's breakfast\",\n    'my brother walks to school',\n    `She's coming by`,\n    `if she doesn't like something about    us she can keep us off`,\n    ` She's it! She could be a soap opera.`,\n    `she's a little dare-devil!`,\n  ]\n  arr.forEach(function (str, i) {\n    const doc = nlp(str).topics()\n    t.equal(doc.length, 0, here + ' #' + i + ' -> ' + doc.out())\n  })\n  t.end()\n})\n\ntest('topics-basic', function (t) {\n  const doc = nlp('i went to Gloop University in Paris, France, with John H. Smith')\n  const arr = doc.topics().out('array')\n  // t.deepEqual(arr, ['Gloop University', 'Paris, France,', 'John H. Smith'], here + 'found all three')\n  t.equal(arr.length, 3, here + 'found all three')\n  t.end()\n})\n\ntest('misc entities', function (t) {\n  const doc = nlp('The Children are right to laugh at you, Ralph')\n  let m = doc.people()\n  t.equal(m.length, 1, here + 'one person')\n\n  m = doc.places()\n  t.equal(m.length, 0, here + 'no places')\n\n  m = doc.organizations()\n  t.equal(m.length, 0, here + 'no organizations')\n\n  m = doc.topics()\n  t.equal(m.length, 1, here + 'one entity')\n  t.end()\n})\n\ntest('topics concat:', function (t) {\n  const things = nlp('spencer and danny are in Paris France and germany for Google Inc and IBM')\n    .topics()\n    .json({ normal: true, trim: true })\n    .map(o => o.normal)\n  const want = ['spencer', 'danny', 'paris france', 'germany', 'google inc', 'ibm']\n  // t.equal(things.join(', '), want.join(', '), here + 'found right things')\n  t.equal(things.length, want.length, here + 'found right things')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/auxiliary.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/auxilary] '\n\ntest('participle/auxiliary toPast', function (t) {\n  // let doc = nlp('i am being driven')\n  // doc.verbs().toPastTense()\n  // t.equal(doc.text(), 'i was driven', here + 'to-past1')\n\n  let doc = nlp('he has been stalking his prey')\n  doc.verbs().toPastTense()\n  t.equal(doc.text(), 'he had been stalking his prey', here + 'to-past2')\n\n  doc = nlp('she bit her tongue instead of criticizing her prom date')\n  doc.sentences().toPastTense()\n  t.equal(doc.text(), 'she bit her tongue instead of criticizing her prom date', here + 'to-past3')\n\n  doc = nlp('he should have been eating')\n  doc.verbs().toPastTense()\n  t.equal(doc.text(), 'he should have been eating', here + 'to-past4')\n\n  t.end()\n})\n\n//ignore some modals during conjugation, i guess\ntest('modal-verb conjugation', t => {\n  let doc = nlp('he would walk')\n  doc.verbs().toPastTense()\n  t.equal(doc.text(), 'he would have walked', here + 'would-past')\n\n  doc = nlp('he would walk')\n  doc.verbs().toFutureTense()\n  t.equal(doc.out(), 'he would walk', here + 'would-future')\n\n  // doc = nlp('he would walk')\n  // doc.verbs().toPresentTense()\n  // t.equal(doc.out(), 'he walks', here + 'would-present')\n\n  // let str = nlp('he would walk').verbs().toGerund().all().out()\n  // t.equal(str, 'he is walking', 'would-toGerund')\n\n  t.end()\n})"
  },
  {
    "path": "tests/three/verbs/conjugate.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-conjugate] '\n\nconst arr = [\n  {\n    Infinitive: 'allow',\n    PresentTense: 'allows',\n    Gerund: 'allowing',\n    PastTense: 'allowed',\n  },\n  {\n    Infinitive: 'vow',\n    PresentTense: 'vows',\n    Gerund: 'vowing',\n    PastTense: 'vowed',\n  },\n  {\n    Infinitive: 'grow',\n    PresentTense: 'grows',\n    Gerund: 'growing',\n    PastTense: 'grew',\n  },\n  {\n    Infinitive: 'overthrow',\n    PresentTense: 'overthrows',\n    Gerund: 'overthrowing',\n    PastTense: 'overthrew',\n  },\n  {\n    Infinitive: 'guide',\n    PresentTense: 'guides',\n    Gerund: 'guiding',\n    PastTense: 'guided',\n  },\n  {\n    Infinitive: 'swallow',\n    PresentTense: 'swallows',\n    Gerund: 'swallowing',\n    PastTense: 'swallowed',\n  },\n  {\n    Infinitive: 'convolute',\n    PresentTense: 'convolutes',\n    Gerund: 'convoluting',\n    PastTense: 'convoluted',\n  },\n  {\n    PresentTense: 'presents',\n    Gerund: 'presenting',\n    PastTense: 'presented',\n    Infinitive: 'present',\n  },\n  {\n    PresentTense: 'angulates',\n    Gerund: 'angulating',\n    PastTense: 'angulated',\n    Infinitive: 'angulate',\n  },\n  {\n    PresentTense: 'conjures',\n    Gerund: 'conjuring',\n    PastTense: 'conjured',\n    Infinitive: 'conjure',\n  },\n  {\n    PresentTense: 'denounces',\n    Gerund: 'denouncing',\n    PastTense: 'denounced',\n    Infinitive: 'denounce',\n  },\n  {\n    PresentTense: 'watches',\n    Gerund: 'watching',\n    PastTense: 'watched',\n    Infinitive: 'watch',\n  },\n  {\n    PresentTense: 'tingles',\n    Gerund: 'tingling',\n    PastTense: 'tingled',\n    Infinitive: 'tingle',\n  },\n  {\n    PresentTense: 'mortises',\n    Gerund: 'mortising',\n    PastTense: 'mortised',\n    Infinitive: 'mortise',\n  },\n  {\n    PresentTense: 'disguises',\n    Gerund: 'disguising',\n    PastTense: 'disguised',\n    Infinitive: 'disguise',\n  },\n  {\n    Infinitive: 'effect',\n    Gerund: 'effecting',\n    PastTense: 'effected',\n    PresentTense: 'effects',\n  },\n  {\n    Infinitive: 'want',\n    Gerund: 'wanting',\n    PastTense: 'wanted',\n    PresentTense: 'wants',\n  },\n  {\n    Infinitive: 'power',\n    Gerund: 'powering',\n    PastTense: 'powered',\n    PresentTense: 'powers',\n  },\n  {\n    Infinitive: 'overcompensate',\n    PresentTense: 'overcompensates',\n    PastTense: 'overcompensated',\n    Gerund: 'overcompensating',\n  },\n  {\n    Infinitive: 'ice',\n    PresentTense: 'ices',\n    PastTense: 'iced',\n    Gerund: 'icing',\n  },\n  {\n    Infinitive: 'buy',\n    PresentTense: 'buys',\n    PastTense: 'bought',\n    Gerund: 'buying',\n  },\n  {\n    Infinitive: 'flower',\n    PresentTense: 'flowers',\n    PastTense: 'flowered',\n    Gerund: 'flowering',\n  },\n  {\n    Infinitive: 'rage',\n    PresentTense: 'rages',\n    PastTense: 'raged',\n    Gerund: 'raging',\n  },\n  {\n    Infinitive: 'drive',\n    PresentTense: 'drives',\n    PastTense: 'drove',\n    Gerund: 'driving',\n  },\n  {\n    Infinitive: 'foul',\n    PresentTense: 'fouls',\n    PastTense: 'fouled',\n    Gerund: 'fouling',\n  },\n  {\n    Infinitive: 'overthrow',\n    PresentTense: 'overthrows',\n    Gerund: 'overthrowing',\n    PastTense: 'overthrew',\n  },\n  {\n    Infinitive: 'aim',\n    PresentTense: 'aims',\n    PastTense: 'aimed',\n    Gerund: 'aiming',\n  },\n  {\n    PresentTense: 'unifies',\n    Gerund: 'unifying',\n    PastTense: 'unified',\n    Infinitive: 'unify',\n  },\n  // {\n  //   PresentTense: 'addresses',\n  //   Gerund: 'addressing',\n  //   PastTense: 'addressed',\n  //   Infinitive: 'address',\n  // },\n  {\n    Infinitive: 'bumble',\n    PresentTense: 'bumbles',\n    PastTense: 'bumbled',\n    Gerund: 'bumbling',\n  },\n  {\n    Infinitive: 'snipe',\n    PresentTense: 'snipes',\n    PastTense: 'sniped',\n    Gerund: 'sniping',\n  },\n  {\n    PresentTense: 'relishes',\n    Gerund: 'relishing',\n    PastTense: 'relished',\n    Infinitive: 'relish',\n  },\n  {\n    Infinitive: 'lengthen',\n    Gerund: 'lengthening',\n    PastTense: 'lengthened',\n    PresentTense: 'lengthens',\n  },\n  {\n    Infinitive: 'farm',\n    PresentTense: 'farms',\n    PastTense: 'farmed',\n    Gerund: 'farming',\n  },\n  {\n    Infinitive: 'develop',\n    PresentTense: 'develops',\n    PastTense: 'developed',\n    Gerund: 'developing',\n  },\n  {\n    Infinitive: 'study',\n    PresentTense: 'studies',\n    PastTense: 'studied',\n    Gerund: 'studying',\n  },\n  {\n    Infinitive: 'criticise',\n    PresentTense: 'criticises',\n    PastTense: 'criticised',\n    Gerund: 'criticising',\n  },\n  {\n    Infinitive: 'speak',\n    PresentTense: 'speaks',\n    PastTense: 'spoke',\n    Gerund: 'speaking',\n  },\n  {\n    Infinitive: 'fuzz',\n    PresentTense: 'fuzzes',\n    PastTense: 'fuzzed',\n    Gerund: 'fuzzing',\n  },\n  {\n    Infinitive: 'invest',\n    PresentTense: 'invests',\n    PastTense: 'invested',\n    Gerund: 'investing',\n  },\n  {\n    Infinitive: 'shed',\n    PresentTense: 'sheds',\n    PastTense: 'shed',\n    Gerund: 'shedding',\n  },\n  {\n    Infinitive: 'ace',\n    PresentTense: 'aces',\n    PastTense: 'aced',\n    Gerund: 'acing',\n  },\n  {\n    Infinitive: 'egg',\n    PresentTense: 'eggs',\n    PastTense: 'egged',\n    Gerund: 'egging',\n  },\n  {\n    Infinitive: 'sit in',\n    PresentTense: 'sits in',\n    PastTense: 'sat in',\n    Gerund: 'sitting in',\n  },\n  // {\n  //   Infinitive: 'take part',\n  //   PresentTense: 'takes part',\n  //   PastTense: 'took part',\n  //   Gerund: 'taking part',\n  // },\n]\ntest('conjugation:', function (t) {\n  const test_conjugation = function (inf, o, form, original) {\n    const msg = 'from ' + original + ' to ' + form + ':  [' + o[original] + '] -> [' + inf[form] + ']'\n    t.equal(inf[form], o[form], here + msg)\n  }\n\n  arr.forEach(function (o) {\n    const forms = ['Infinitive', 'PastTense', 'PresentTense']//'Gerund'\n    for (let i = 0; i < forms.length; i++) {\n      const from = forms[i]\n      const inf = nlp(o[from]).tag('Verb').verbs().conjugate()[0] || {}\n      test_conjugation(inf, o, 'Infinitive', from)\n      test_conjugation(inf, o, 'PastTense', from)\n      test_conjugation(inf, o, 'PresentTense', from)\n      // test_conjugation(inf, o, 'Gerund', from)\n    }\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/imperative.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/imperative] '\n\ntest('isImperative:', function (t) {\n  const arr = [\n    ['do speak', true],\n    ['do not walk', true],\n    ['please do not speak', true],\n    ['go!', true],\n    ['go fast.', true],\n    [\"don't go\", true],\n    ['shut the door', true],\n    ['eat your vegetables', true],\n    // ['you should eat your vegetables', true],\n    ['you eat?', false],\n    ['do you eat?', false],\n    ['i often use the stairs', false],\n    ['i ate at the bar', false],\n    ['walk the plank', true],\n    ['turn down the music', true],\n    ['is it over', false],\n    // ['go to hell', false],\n    ['save some for me please', true],\n    ['stay real', true],\n    ['stay the course', true],\n    ['do help yourself', true],\n    ['everybody sit down', true],\n    ['stop', true],\n    [`don't quit now`, true],\n    [`let's leave`, true],\n    [`come here right now`, true],\n    ['stop please', true],\n    ['stay out of my garden', true],\n    ['return my hat', true],\n    ['swim carefully', true],\n    ['go backwards', true],\n    ['walking is allowed', false],\n    ['stay away from death mountain', true],\n    ['never lie', true],\n    ['keep it quiet', true],\n    [`Eliminate unnecessary noises.`, true],\n    [`Limit the amount of sugary foods that you eat.`, true],\n    [`Restructure your thoughts about swimming.`, true],\n    [`If you fall for the third time, tie your shoelaces already.`, true],\n    [`Please don't forget this word, from the Greek for \"oblivion\"`, true],\n    [`Taste the Italian roots of Todd English, who also owns Olives.`, true],\n    [`Respect the rules and the spirit of the game `, true],\n    [`Let's make it easier for these kids to have parents who love them.`, true],\n    [`Add a cold local beer and it's a done deal.`, true],\n    [`Be friendly, nice and interesting.  `, true],\n    [`Get your foot off my contestant!`, true],\n    [`Let me ask you some questions about, is it, uh, Marcel?`, true],\n    [`take a look at your dropsuit fittings.`, true],\n    [`I'll sing the same old song, hear me call your name`, true],\n    [`Use the ESRB rating system.`, true],\n    [`Don’t help in avoiding situations.`, true],\n    [`Open the Port Forwarding section.`, true],\n    [`allow yourself to heal`, true],\n    [`and then allow yourself a time`, true],\n    // [`simply stop the music`, true],\n\n    [\"UPDATE: /u/Averyhonestguy has raised a very sobering point\", false],\n    [\"Bike Share rolls out Pride themed bikes in New York\", false],\n    [\"Like I don't need nobody else\", false],\n    [\"Right after we broke up, my ex-girlfriend asked me how to change.\", false],\n    // [\"C'mon, Luisa, you have a chance to be the bigger person here!\", false],\n    // [\"Listen, calling people names says a lot more about you than it does about them, idiot.\", true],\n    [\"Hook, line, and sinker\", false],\n    [\"Brand new bags.\", false],\n\n    [\"Know your flaws intimately.\", true],\n    [\"Look for alternate avenues.\", true],\n    [\"Speak to your child’s teacher and doctor.\", true],\n    [\"Stick it in the microwave until it's Bill Withers\", true],\n    [\"Continue playing until you are familiar with it.\", true],\n    [\"Learn to recognize stress.\", true],\n    [\"Treat your baby as you would any other child.\", true],\n    [\"Find the root of each negative thought.\", true],\n    // [\"Do quick and easy exercises at home.\", true],\n    // [\"Determine whether you have the necessary qualities for the profession.\", true],\n    // [\"Be sure to say goodbye to the interviewers before you leave.\", true],\n    // [\"Make room for flexibility in your schedule.\", true],\n    // [\"Reduce medications during less stressful periods.\", true],\n    // [\"Focus on her qualities and accomplishments\", true],\n    [\"Go into the cocoa hut in the mountains.\", true],\n    [\"Find a leatherworker villager to trade with.\", true],\n    [\"Develop a personal tagline.\", true],\n    [\"Relax and take a deep breath before heading into the management job interview.\", true],\n    [\"Apply to a doctoral program in industrial-organizational psychology.\", true],\n    [\"Find a suitable location for your castle.\", true],\n    [\"Find the positive side of life’s challenges.\", true],\n    [\"Smell the gasoline and smoke\", true],\n    [\"Go to a trip to the mall, and relax.\", true],\n    [\"Tell her what the young boy gon do\", true],\n  ]\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    const m = doc.verbs().isImperative()\n    t.equal(m.found, a[1], `${here} ${a[0]}`)\n  })\n  t.end()\n})\n\ntest('imperative keeps tense:', function (t) {\n  const arr = [\n    'do speak',\n    'do not walk',\n    'please do not speak',\n    'go!',\n    \"don't go\",\n    'shut the door',\n    'eat your vegetables',\n    // 'you should eat your vegetables',\n  ]\n  arr.forEach(function (str) {\n    const doc = nlp(str)\n    doc.verbs().toPastTense()\n    t.equal(doc.text(), str, here + str + ' [toPast]')\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/isplural.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-isPlural] '\n\ntest('plural-verbs:', function (t) {\n  let r = nlp('i look. Spencer looks.')\n  let len = r.verbs().isPlural().length\n  t.equal(len, 0, here + '0 singular')\n\n  r = nlp('we look at it. They report on it')\n  len = r.verbs().isPlural().length\n  t.equal(len, 2, here + 'they plural')\n\n  r = nlp('lkjsdf are cool')\n  let str = r.verbs().isPlural().out('normal')\n  t.equal(str, 'are', here + 'are plural')\n\n  r = nlp('lkjsdf does eat bugs')\n  str = r.verbs().isPlural().out('normal')\n  t.equal(str, 'does eat', here + 'does plural')\n\n  r = nlp('lkjsdf is cool')\n  str = r.verbs().isPlural().out('normal')\n  t.equal(str, '', here + 'is singular')\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/misc.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-misc] '\n\ntest('verbs.json', function (t) {\n  const json = nlp('She has called twice, not the tv').verbs().json()\n  t.equal(json.length, 1, here + 'one verb')\n  t.equal(json[0].verb.negative, false, here + 'not negative')\n  t.equal(json[0].verb.root, 'called', here + 'got main verb')\n  t.equal(json[0].verb.auxiliary, 'has', here + 'got aux verb')\n  t.end()\n})\n\ntest('verbs.adverbs', function (t) {\n  let doc = nlp('spencer is really great! Spencer really really was superb.')\n  doc.verbs().adverbs().delete()\n  t.equal(doc.out(), 'spencer is great! Spencer was superb.', here + 'no-adverbs')\n\n  doc = nlp('spencer truly would really run quickly').verbs().adverbs()\n  t.equal(doc.length, 3, 'found all three adverbs')\n  t.equal(doc.text('reduced'), 'truly really quickly', here + 'found adverbs in order')\n\n  t.end()\n})\n\ntest('dont conjugate modals', function (t) {\n  let doc = nlp('i may')\n  // doc.verbs().toPastTense()\n  // t.equal(doc.out(), 'i may have', here + 'may')\n\n  doc = nlp('i would')\n  doc.verbs().toFutureTense()\n  t.equal(doc.out(), 'i would', here + 'would')\n\n  // doc = nlp('i think he really could.')\n  // doc.verbs().toPastTense()\n  // t.equal(doc.out(), 'i thought he really could have.', here + 'really could')\n\n  // doc = nlp('everybody ought to.')\n  // doc.verbs().toPastTense()\n  // t.equal(doc.out(), 'everybody ought to have.', here + 'ought to')\n\n  t.end()\n})\n\ntest('support punctuation', function (t) {\n  let doc = nlp('i go!')\n  doc.verbs().toPastTense()\n  t.equal(doc.text(), 'i went!', here + 'excl-mark')\n\n  doc = nlp('i go?!')\n  doc.verbs().toPastTense()\n  t.equal(doc.text(), 'i went?!', here + 'ques-excl-mark')\n\n  doc = nlp('i go; he went.')\n  doc.verbs().toPastTense()\n  t.equal(doc.text(), 'i went; he went.', here + 'semi-colon')\n  t.end()\n})\n\ntest('adverbs method', function (t) {\n  const doc = nlp('i may really go! It is cool.')\n  const advb = doc.verbs().adverbs()\n  t.equal(advb.text(), 'really', 'found adverb')\n  t.end()\n})\n\ntest('conjugate stable', function (t) {\n  const doc = nlp('we fished')\n  const res = doc.verbs().conjugate()[0]\n  t.equal(res.Infinitive, 'fish', here + 'Infinitive conj')\n  t.equal(res.PastTense, 'fished', here + 'PastTense conj')\n  t.equal(res.PresentTense, 'fishes', here + 'PresentTense conj')\n  t.equal(res.FutureTense, 'will fish', here + 'FutureTense conj')\n  t.end()\n})\n\n// test('was shocked looking at', function (t) {\n//   let doc = nlp('i was shocked looking at the race')\n//   let verbs = doc.verbs()\n//   t.equal(verbs.length, 2, 'split into two')\n//   t.equal(verbs.eq(0).text(), 'was shocked', 'first verb')\n//   t.equal(verbs.eq(1).text(), 'looking', 'first verb')\n//   t.end()\n// })\n// test('detect participle in past-tense', function (t) {\n//   let doc = nlp('everybody ought to swim.')\n//   doc.verbs().toPastTense()\n//   t.equal(doc.out(), 'everybody ought to have swam.', 'ought to swim')\n\n//   doc = nlp('i think he really could have.')\n//   doc.verbs().toPastTense()\n//   t.equal(doc.out(), 'i thought he really could have.', 'really could')\n\n//   t.end()\n// })\n"
  },
  {
    "path": "tests/three/verbs/parse.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-parse] '\n\ntest('verb-parts:', function (t) {\n  const arr = [\n    {\n      str: `john had barely ever helped out very quickly`,\n      preAdverb: 'barely ever',\n      aux: 'had',\n      root: 'helped out',\n      postAdverb: 'very quickly',\n      particle: 'out',\n    },\n    {\n      str: `noone has ever given up anything`,\n      preAdverb: 'ever',\n      aux: 'has',\n      root: 'given up',\n      particle: 'up',\n    },\n    {\n      str: `we stood back so carefully`,\n      postAdverb: 'so carefully',\n      root: 'stood back',\n      particle: 'back',\n    },\n    {\n      str: `quietly hit the road`,\n      preAdverb: 'quietly',\n      root: 'hit',\n    },\n    {\n      str: `allow yourself a treat`,\n      root: 'allow',\n    },\n    {\n      str: `do allow yourself a treat`,\n      aux: 'do',\n      root: 'allow',\n    },\n    {\n      str: `do not beg for a treat`,\n      aux: 'do',\n      negative: 'not',\n      root: 'beg',\n    },\n    {\n      str: `don't hurt anybody`,\n      aux: 'do',\n      negative: 'not',\n      root: 'hurt',\n    },\n    {\n      str: `he will not work out`,\n      aux: 'will',\n      negative: 'not',\n      root: 'work out',\n      particle: 'out',\n    },\n    {\n      str: `it had clearly been acknowledged safely`,\n      aux: 'had been',\n      preAdverb: 'clearly',\n      postAdverb: 'safely',\n      root: 'acknowledged',\n    },\n    {\n      str: `she is really fancy`,\n      root: 'is',\n      postAdverb: 'really',\n    },\n    {\n      str: `it was not educational really`,\n      root: 'was',\n      negative: 'not',\n    },\n    {\n      str: `don't hit the gym!`,\n      aux: 'do',\n      root: 'hit',\n      negative: 'not',\n    },\n    {\n      str: `he would fall on the couch`,\n      aux: 'would',\n      root: 'fall',\n    },\n    {\n      str: `i'll tell you what`,\n      aux: 'will',\n      root: 'tell',\n    },\n\n    {\n      str: `someone must eventually not win the last game`,\n      aux: 'must',\n      preAdverb: 'eventually',\n      negative: 'not',\n      root: 'win',\n    },\n    {\n      str: `we are putting the pressure`,\n      aux: 'are',\n      root: 'putting',\n    },\n  ]\n  arr.forEach(obj => {\n    let { str, preAdverb, aux, root, postAdverb, particle } = obj\n    const vb = nlp(str).verbs()\n    str = \"'\" + str.split(/ /).slice(0, 5).join(' ') + \"'\"\n    t.equal(vb.length, 1, here + `1 verb - '${str}'`)\n    const parse = vb.parse()[0]\n    if (!parse) {\n      t.ok(false, here + ' [no-verb] ' + str)\n      return\n    }\n    // test pre-adverb\n    if (preAdverb && parse.adverbs.pre.text) {\n      t.equal(preAdverb, parse.adverbs.pre.text(), here + `${str} [preAdverb]`)\n    } else {\n      t.equal(parse.adverbs.pre.found, false, here + `${str} [preAdverb]`)\n    }\n    // test auxiliary\n    if (aux) {\n      t.equal(aux, parse.auxiliary.text(), here + `${str} [aux]`)\n    } else {\n      t.equal(parse.auxiliary.found, false, here + `${str} [aux]`)\n    }\n    // test root verb\n    if (root) {\n      t.equal(root, parse.root.text(), here + `${str} [root]`)\n    } else {\n      t.equal(parse.root.found, false, here + `${str} [root]`)\n    }\n    // test post-adverb\n    if (postAdverb) {\n      t.equal(postAdverb, parse.adverbs.post.text(), here + `${str} [postAdverb]`)\n    } else {\n      t.equal(parse.adverbs.post.found, false, here + `${str} [postAdverb]`)\n    }\n    // test phrasal particle\n    if (particle) {\n      t.equal(particle, parse.phrasal.particle.text(), here + `${str} [particle]`)\n    } else {\n      t.equal(parse.phrasal.particle.found, false, here + `${str} [particle]`)\n    }\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/parts.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-parts]'\n\ntest('verb-parts:', function (t) {\n  const tests = [\n    ['john is walking', '', 'is', ''],\n    ['john was walking', '', 'was', ''],\n    ['john will be walking', '', 'will be', ''],\n    ['john has been walking', '', 'has been', ''],\n    ['john had been walking', '', 'had been', ''],\n    ['john would have had been walking', '', 'would have had been', ''],\n    //negatives\n    ['john is not walking', 'not', 'is', ''],\n    ['john was not walking', 'not', 'was', ''],\n    ['john will not be walking', 'not', 'will be', ''],\n    ['john will be not walking', 'not', 'will be', ''],\n    ['john has not been walking', 'not', 'has been', ''],\n    ['john has been not walking', 'not', 'has been', ''],\n    ['john had not been walking', 'not', 'had been', ''],\n    ['john had been not walking', 'not', 'had been', ''],\n    ['john would be walking', '', 'would be', ''],\n    ['john would not be walking', 'not', 'would be', ''],\n    ['john would be not walking', 'not', 'would be', ''],\n    ['john would not have had been walking', 'not', 'would have had been', ''],\n    ['john would have not had been walking', 'not', 'would have had been', ''],\n    ['john would have had not been walking', 'not', 'would have had been', ''],\n    ['john would have had been not walking', 'not', 'would have had been', ''],\n    //adverbs + negatives combinations\n    ['john is really walking', '', 'is', 'really'],\n    ['john really is walking', '', 'is', 'really'],\n    ['john is walking really', '', 'is', 'really'],\n    ['john is not really walking', 'not', 'is', 'really'],\n    ['john is really not walking', 'not', 'is', 'really'],\n    ['john really is not walking', 'not', 'is', 'really'],\n    ['john is not walking really', 'not', 'is', 'really'],\n    ['john has really been not walking', 'not', 'has been', 'really'],\n    ['john has been really not walking', 'not', 'has been', 'really'],\n    ['john has been not really walking', 'not', 'has been', 'really'],\n    ['john has been not walking really', 'not', 'has been', 'really'],\n    ['john really would not have had been walking', 'not', 'would have had been', 'really'],\n    ['john would really not have had been walking', 'not', 'would have had been', 'really'],\n    ['john would not really have had been walking', 'not', 'would have had been', 'really'],\n    ['john would not have really had been walking', 'not', 'would have had been', 'really'],\n    ['john would not have had really been walking', 'not', 'would have had been', 'really'],\n    ['john would not have had been really walking', 'not', 'would have had been', 'really'],\n    ['john would not have had been walking really', 'not', 'would have had been', 'really'],\n  ]\n  tests.forEach(function (a) {\n    const arr = nlp(a[0]).verbs().json()\n    const json = (arr[0] || {}).verb || {}\n    const adverbs = json.preAdverbs.concat(json.postAdverbs).join(' ')\n    t.equal(arr.length, 1, '#verbs - ' + arr.length + '  ' + a[0])\n    // t.equal(json.negative || '', a[1], \"neg-test - '\" + a[0] + \"'\")\n    t.equal(json.auxiliary, a[2], here + \"aux- - '\" + a[0] + \"'\")\n    t.equal(json.root, 'walking', here + \"root  - '\" + a[0] + \"'\")\n    t.equal(adverbs, a[3], \"adverb-test  - '\" + a[0] + \"'\")\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/phrasal.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/phrasal]'\n\ntest('phrasal-verbs:', function (t) {\n  const arr = [\n    [`he is really good`, ['he', 'is', 'really', 'good']],\n    [`he is upset about it`, ['he', 'is', 'upset', 'about', 'it']],\n    [`he will mess about with it`, ['he', 'will', 'mess about', 'with', 'it']],\n\n    [`come forward`, ['come forward']],\n    [`come together`, ['come together']],\n    [`come apart`, ['come apart']],\n\n    [`frighten back`, ['frighten', 'back']],\n    [`frighten away`, ['frighten away']],\n  ]\n  arr.forEach(function (a) {\n    const terms = nlp(a[0]).out('array')\n    const msg = terms.join(' ') + '  -- ' + a[1].join(' ')\n    t.equal(terms.join(' '), a[1].join(' '), here + msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/phrasals.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/phrasals]'\n\ntest('get phrasal infinitive', function (t) {\n  const arr = [\n    [` running out`, 'run out'],\n    [`we walked in`, 'walk in'],\n    [`then they quickly walked out`, 'walk out'],\n    [`they studied up for the test`, 'study up'],\n    [`they studied-up for the test`, 'study up'],\n    [`they sat down for the test`, 'sit down'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    const res = doc.verbs().json()[0].verb\n    t.equal(res.infinitive, a[1], here + ` '${a[0]}'`)\n  })\n  t.end()\n})"
  },
  {
    "path": "tests/three/verbs/subject.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-subjects]'\n\ntest('get verb subject', function (t) {\n  const arr = [\n    ['i am walking', 'i', 'am walking'],\n    ['we are walking', 'we', 'are walking'],\n    ['he let his dog walk', 'he', 'let'],\n    ['the milkshakes tasted great', 'the milkshakes', 'tasted'],\n    [`the ball game started`, 'the ball game', 'started'],\n    ['Mr. Gretzky walks to the park', 'Mr. Gretzky', 'walks'],\n    [`the ball games started`, 'the ball games', 'started'],\n    ['A friend, answered the other.', 'A friend,', 'answered'],\n    [`At Corky's carnival, this attraction uses the \"human\"`, 'this attraction', 'uses'],\n    ['Former Congressman Tim Penny has raised the possibility', 'Former Congressman Tim Penny', 'has raised'],\n    // [\"The TTC's Bloor-Danforth Line will turn 50 years old\", 'Bloor-Danforth Line', 'will turn'],\n    [\"so we vigorously searched through my friend's selection\", 'we', 'vigorously searched'],\n    ['the Man professes love for ESPN reporter at Raptors Night', 'the Man', 'professes'],\n    ['The Dirty Bird is opening a second location', 'The Dirty Bird', 'is opening'],\n    // ['With the endorphins released and the decreased inflammation I felt great.', 'the endorphins', 'released'],\n    // [\"At last the wind wizard's son said to the King.\", \"the wind wizard's son\", 'said'],\n    ['We are increasing border controls by 50 percent.', 'We', 'are increasing'],\n    [\"She says, 'Hey baby I just might take the chance'.\", 'She', 'says'],\n    ['We danced every slow one the band could play', 'We', 'danced'],\n    ['You can stick your golden handshake', 'You', 'can stick'],\n    [\"Governor of New Jersey, she appointed the state's first female Attorney General\", 'she', 'appointed'],\n    ['the robber Captain carried a dagger under his garment.', 'the robber Captain', 'carried'],\n    ['The newspaper supported the Whigs, (later Liberals).', 'The newspaper', 'supported'],\n    ['Baby you can drive my car', 'you', 'can drive'],\n    ['Aiyah, we go eat first then decide later lah.', 'we', 'go eat'],\n    ['Experts warn against consuming adulterated oil', 'Experts', 'warn'],\n    ['He slapped my face and he shook me like a rag doll', 'He', 'slapped'],\n    [\"she mistook the old woman's caution, and lingered for hours.\", 'she', 'mistook'],\n    ['this semi-truck is coming towards me.', 'this semi-truck', 'is coming'],\n    ['the tornado, i guess, was fast', 'i', 'guess'],\n    ['the new couple were dancing', 'the new couple', 'were dancing'],\n    ['the new couple was dancing', 'the new couple', 'was dancing'],\n    ['the people of toronto drove quickly', 'the people of toronto', 'drove quickly'],\n    ['The magician, at her arrival, saved the Sultan', 'The magician,', 'saved'],\n    // ['The auto mechanics that work for Auto Towing are very friendly', 'The auto mechanics', 'are very'],\n    // ['I went up to Mr. T and said', 'I', 'said'],\n    // ['Purchase of power from IPPs will ruin GEB', 'Purchase of power', 'will ruin'],\n    // ['Govt to blame for plastic mess; say manufacturers', 'manufacturers', 'say'],\n    // [`Even the IP and ICDC have abandoned the neighbourhood`, `the IP and ICDC`, `have abandoned`],\n    [`They have sent over their top reporter Ahmed Mansour`, `They`, `have sent over`],\n    [`He did once make an unforgivable error`, `He`, `did once make`],\n    [`Al-Iraqiyah tv said that ICDC were controlling Ramadi.`, `Al-Iraqiyah tv`, `said`],\n    // [`how it may affect the future`, `it`, `may affect`],\n    [`Many people still believe that to be true`, `Many people`, `still believe`],\n    [`As a parent, I can imagine how painful it must be`, `I`, `can imagine`],\n    [`Read some of the following links`, ``, `Read`],\n    [`You wonder if he was manipulating the market`, `he`, `was manipulating`],\n    [`Your reply is good and deserves something`, `Your reply`, `is`],\n    [`Your reply is good and deserves something`, `Your reply`, `deserves`],\n    // [`dozens of school buses were submerged`, `dozens of school buses`, `were submerged`],\n    // [`All Aries natives may have to tighten their belts and curb their desire`, `All Aries natives`, `may have to`],\n    // [`All Aries natives may have to tighten their belts and curb their desire`, `All Aries natives`, `curb`],\n    [`As a result, your finances improve`, `your finances`, `improve`],\n    // [`These leaps and bounds forward include love and creativity`, `These leaps and bounds forward`, `include`],\n    // [`Your working life might not go so smoothly this year`, `Your working life`, `might not go so smoothly`],\n    [`Flex your muscles, friend Libra, and prepare for an easy ride`, `friend Libra`, `prepare`],\n    [`Your life might take on a new direction`, 'Your life', 'might take on'],\n\n    // subordinate phrases\n    // [`all the days since december were awful`, 'the days', 'were'],\n    // [`Pursuing a successful career, along with the usual social and financial advantages, will be easier this year`, 'a successful career', 'will be'],\n\n\n    ['i walked', 'i', 'walked'],\n    ['john was cool', 'john', 'was'],\n    ['john really was cool', 'john', 'really was'],\n    ['john was really cool', 'john', 'was really'],\n    ['john did not really drive', 'john', 'did not really drive'],\n    ['john would not have really driven', 'john', 'would not have really driven'],\n    ['speak!', '', ''],\n    ['please go to the mall', '', ''],\n    ['shut the door', '', ''],\n    ['i shall go there', 'i', 'shall go'],\n    ['he walks carefully and eats a grape', 'he', 'walks carefully'],\n    ['if so, john should pay for it', 'john', 'should pay'],\n    ['you really think so?', 'you', 'really think so'],\n    ['the moon is made of cheese', 'the moon', 'is made'],\n    [`listen to the wind blow, watch the sun rise.`, '', ''],\n    [`run in the shadows, damn your love, damn your lies. `, '', ''],\n    [`listen to the wind blow down comes the night. `, '', ''],\n    [`running in the shadows damn your love, damn your lies. `, '', ''],\n    [`break the silence, damn the dark, damn the light.`, '', ''],\n    [`some should decrease.`, '', ''],\n    [`join the community of conscience.`, '', ''],\n    [`why is everything different?`, '', ''],\n    [`bye!`, '', ''],\n    [`oh dear god!`, '', ''],\n    [`is there something wrong?`, '', ''],\n    [`why is ross naked?`, '', ''],\n    [`yeah the big homey`, '', ''],\n    [`the type of female wit fly gucci gear`, '', ''],\n    [`compared to the heart of a man`, '', ''],\n    [`give me a red rose, she cried`, '', ''],\n    [`drinking orange juice out of a champagne glass.`, '', ''],\n    //\n    [`it moves power and decision making closer to the people.`, 'it', 'moves'],\n    [`that is completely untrue.`, 'that', 'is completely'],\n    [`i better hit the shower.`, 'i', 'better hit'],\n    [`morning is here!`, 'morning', 'is'],\n\n  ]\n  arr.forEach(a => {\n    const [str, subject, verb] = a\n    const vb = nlp(str).verbs().if(verb).first()\n    t.equal(vb.text(), verb, here + `[vb] '${a[0]}'`)\n    t.equal(vb.subjects().text(), subject, here + `[subj] '${a[0]}'`)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/toFuture.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-toFuture] '\n\ntest('toFuture:', function (t) {\n  const arr = [\n    // known forms:\n    ['he walked', 'he will walk'],\n    ['i walked', 'i will walk'],\n    ['we walked', 'we will walk'],\n    ['they walked', 'they will walk'],\n    ['the friends walked', 'the friends will walk'],\n    ['the friend walked', 'the friend will walk'],\n    ['our users walked', 'our users will walk'],\n    ['our user walked', 'our user will walk'],\n    ['the eye closed', 'the eye will close'],\n    ['the eyes closed', 'the eyes will close'],\n\n    // copula forms\n    ['i am not cool', 'i will be not cool'],\n    ['i was not cool', 'i will be not cool'],\n    ['i will not be cool', 'i will not be cool'],\n    ['he is not cool', 'he will be not cool'],\n    ['he was not cool', 'he will be not cool'],\n    ['he will not be cool', 'he will not be cool'],\n    ['they are not cool', 'they will be not cool'],\n    ['they were not cool', 'they will be not cool'],\n    ['they will not be cool', 'they will not be cool'],\n\n    ['their colloseum will open', 'their colloseum will open'],\n    ['their children will open', 'their children will open'],\n\n    ['he walks', 'he will walk'],\n    ['he walked', 'he will walk'],\n    ['he will walk', 'he will walk'],\n    ['he is walking', 'he will be walking'],\n    ['he was walking', 'he will be walking'],\n    ['i was walking', 'i will be walking'],\n    ['we were walking', 'we will be walking'],\n    ['i am walking', 'i will be walking'],\n    ['he will be walking', 'he will be walking'],\n\n    ['he has walked', 'he will have walked'],\n    ['he had walked', 'he will have walked'],\n    ['he will have walked', 'he will have walked'],\n    ['he really will have walked', 'he really will have walked'],\n    ['he will really have walked', 'he will really have walked'],\n    ['he will have really walked', 'he will have really walked'],\n\n    ['he has been walking', 'he will have been walking'],\n    ['he had been walking', 'he will have been walking'],\n    ['he will have been walking', 'he will have been walking'],\n\n    ['he got walked', 'he will get walked'],\n    ['we got walked', 'we will get walked'],\n    ['i got walked', 'i will get walked'],\n    ['he was walked', 'he will be walked'],\n    ['i was walked', 'i will be walked'],\n    ['soldiers were walked', 'soldiers will be walked'],\n\n    ['i am being walked', 'i will be walked'],\n    ['we are being walked', 'we will be walked'],\n    ['he was being walked', 'he will be walked'],\n    // ['had been walked', 'will be walked'], //?\n    // ['has been walked', 'will be walked'], //?\n    ['have been walked', 'will be walked'],\n    ['were walked', 'will be walked'],\n    ['was being walked', 'will be walked'],\n    // // // ['has been walked', 'had been walked'],\n    ['had been walked', 'will be walked'],\n    // // ['will have been walked', 'has been walked'],\n    ['will be walked', 'will be walked'],\n\n    ['would be walked', 'will be walked'],\n    ['would have been walked', 'will have been walked'],\n    ['is going to walk', 'is going to walk'],\n    ['did walk', 'will walk'],\n    ['used to walk', 'will walk'],\n    // // ['do walk', 'did walk'],\n    ['does walk', 'will walk'],\n    // ['he used to walk', 'he will be walking'],\n    ['he did walk', 'he will walk'],\n    // ['he must walk', 'he must walk'],\n    // ['he must have walked', 'he must walk'],\n\n    // modal/conditions are weird\n    // ['he can walk', 'he can walk'],\n    // ['he could walk', 'he can walk'],\n    // ['he should walk', 'he should walk'],\n\n    // want-infinitive\n    ['he wants to walk', 'he will want to walk'],\n    ['he wanted to walk', 'he will want to walk'],\n    ['he will want to walk', 'he will want to walk'],\n\n    // more past-tense forms\n    [`used to claw`, `will claw`],\n    [`had clawed`, `will have clawed`],\n    [`have clawed`, `will have clawed`],\n    [`clawed`, `will claw`],\n    [`did claw`, `will claw`],\n\n    // conjugation -ed issues\n    [`sing`, `will sing`],\n    [`sung`, `will sing`],\n    [`clawed`, `will claw`],\n    [`trumped`, `will trump`],\n    [`out-lived`, `will out-live`],\n    // [`out-live`, `will out-live`],\n    [`slugged`, `will slug`],\n    [`splashed`, `will splash`],\n    [`he uploaded`, `he will upload`],\n    [`he echoed`, `he will echo`],\n    [`she absorbed`, `she will absorb`],\n    [`she bounced`, `she will bounce`],\n\n    [`faced`, `will face`],\n    [`trounced`, `will trounce`],\n\n    [`appeared`, `will appear`],\n    [`sparred`, `will spar`],\n    [`speared`, `will spear`],\n    [`they colored`, `they will color`],\n    [`it cured`, `it will cure`],\n    [`roared`, `will roar`],\n    [`withered`, `will wither`],\n\n    [`trumpeted`, `will trumpet`],\n    [`he bloated`, `he will bloat`],\n    [`he drifted`, `he will drift`],\n    [`he doubted`, `he will doubt`],\n    [`he rooted`, `he will root`],\n    [`he benefited`, `he will benefit`],\n    [`he suited`, `he will suit`],\n    [`he attributed`, `he will attribute`],\n    [`he completed`, `he will complete`],\n    [`he shouted`, `he will shout`],\n    [`he limited`, `he will limit`],\n    [`he prohibited`, `he will prohibit`],\n\n    [`he annoyed`, `he will annoy`],\n    [`he enjoyed`, `he will enjoy`],\n    [`he prayed`, `he will pray`],\n    [`he preyed`, `he will prey`],\n    [`he sprayed`, `he will spray`],\n    [`strayed`, `will stray`],\n\n    [`he lied`, `he will lie`],\n    [`he qualified`, `he will qualify`],\n\n    [`he fluffed`, `he will fluff`],\n    [`he engulfed`, `he will engulf`],\n\n    [`he ruled`, `he will rule`],\n    [`he sailed`, `he will sail`],\n    [`he piled`, `he will pile`],\n    // [`he piled-on`, `he will pile-on`],\n    [`he styled`, `he will style`],\n    [`he totaled`, `he will total`],\n    [`he scheduled`, `he will schedule`],\n    [`he pulled`, `he will pull`],\n    [`she whirled`, `she will whirl`],\n    [`snarled`, `will snarl`],\n\n    [`she vexed`, `she will vex`],\n    [`she relaxed`, `she will relax`],\n\n    [`she aligned`, `she will align`],\n    [`she ruined`, `she will ruin`],\n    [`she turned`, `she will turn`],\n    [`it rained`, `it will rain`],\n    [`she worsened`, `she will worsen`],\n\n    [`she filmed`, `she will film`],\n    [`we nicknamed`, `we will nickname`],\n    [`we doomed`, `we will doom`],\n    [`we summed`, `we will sum`],\n\n    ['i write', 'i will write'],\n    ['spencer writes', 'spencer will write'],\n    // ['i barely write', 'i will barely write'],\n    // ['we barely write', 'we will barely write'],\n    // ['we will barely write', 'we will barely write'],\n    // [`i'll start looking`, \"i'll start looking\"],\n    [`i won't start looking`, 'i won\\'t start looking'],\n    // negatives\n    ['we do not write', 'we will not write'],\n    ['we will not write', 'we will not write'],\n    ['angelina does not write', 'angelina will not write'],\n    ['angelina will not write', 'angelina will not write'],\n    ['there is no hope', 'there will be no hope'],\n    // ['toronto barely starts', 'toronto will barely start'],\n    ['say it again', 'say it again'],\n    // ['council votes to deny it', 'council will vote to deny it'],\n    ['nobody will say for certain', 'nobody will say for certain'],\n    ['he will say for certain', 'he will say for certain'],\n    ['she will not say for certain', 'she will not say for certain'],\n    ['waiters are furious', 'waiters will be furious'],\n    ['the waiters will walk out', 'the waiters will walk out'],\n    ['this union will disrupt', 'this union will disrupt'],\n    ['this union has disrupted', 'this union will have disrupted'],\n    ['it will have real feelings', 'it will have real feelings'],\n    // ['it had no real feelings', 'it had no real feelings'],\n    // ['it will not have studied enough', 'it had not studied enough'],\n    // ['spencer will have learned enough', 'spencer will have learned enough'],\n    // ['spencer will not have learned enough', 'spencer had not learned enough'],\n\n    // gerund-phrase\n    [`he starts seeing`, `he will start seeing`],\n    [`he started seeing`, `he will start seeing`],\n    [`he will start seeing`, `he will start seeing`],\n    [`we start seeing`, `we will start seeing`],\n    [`we started seeing`, `we will start seeing`],\n    [`we will start seeing`, `we will start seeing`],\n    [`we have started seeing`, `we will start seeing`],\n    [`we will have started seeing`, `we will have started seeing`],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.verbs().toFutureTense()\n    t.equal(doc.text(), a[1], here + ' ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/toGerund.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/gerund]'\n\ntest('verb-to-gerund:', function (t) {\n  const arr = [\n    ['we walk', 'we are walking'],\n    ['we sing', 'we are singing'],\n    ['we win', 'we are winning'],\n    ['we will convert', 'we are converting'],\n    ['we see', 'we are seeing'],\n    ['he is', 'he is being'],\n    ['he was', 'he is being'],\n    ['i am', 'i am being'],\n    ['he walked', 'he is walking'],\n    ['he dedicates', 'he is dedicating'],\n    // ['he did not walk', 'he was not walking'],\n    // ['there is no hope', 'there is no hoping'],\n\n\n    // copula forms\n    ['i am not cool', 'i am being not cool'],\n    ['i was not cool', 'i am being not cool'],\n    // ['i will not be cool', 'i will not be being cool'],\n    ['he is not cool', 'he is being not cool'],\n    // ['he was not cool', 'he was being not cool'],\n    // ['he will not be cool', 'he will not be being cool'],\n    ['they are not cool', 'they are being not cool'],\n    // ['they were not cool', 'they were being not cool'],\n    // ['they will not be cool', 'they will not be being cool'],\n\n  ]\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    doc.verbs().toGerund()\n    const str = doc.out('normal')\n    t.equal(str, a[1], here + a[0] + ' -> ' + str)\n  })\n  t.end()\n})\n\n\ntest('verb-to-gerund:', function (t) {\n  const arr = [\n    ['be', 'being'],\n    ['try', 'trying'],\n    ['make', 'making'],\n    ['come', 'coming'],\n    ['do', 'doing'],\n    ['watch', 'watching'],\n    ['give', 'giving'],\n    ['think', 'thinking'],\n    ['go', 'going'],\n    ['have', 'having'],\n    ['find', 'finding'],\n    ['get', 'getting'],\n    ['run', 'running'],\n    ['say', 'saying'],\n    ['take', 'taking'],\n    ['know', 'knowing'],\n    ['tell', 'telling'],\n    ['call', 'calling'],\n    ['ask', 'asking'],\n    ['work', 'working'],\n    ['look', 'looking'],\n    ['use', 'using'],\n    ['feel', 'feeling'],\n    ['live', 'living'],\n    ['place', 'placing'],\n    ['write', 'writing'],\n    ['show', 'showing'],\n    ['seem', 'seeming'],\n    ['try', 'trying'],\n    ['help', 'helping'],\n    ['start', 'starting'],\n    ['play', 'playing'],\n    ['stand', 'standing'],\n    ['speak', 'speaking'],\n    ['listen', 'listening'],\n    ['leave', 'leaving'],\n    ['open', 'opening'],\n    ['move', 'moving'],\n    ['continue', 'continuing'],\n    ['learn', 'learning'],\n    ['hold', 'holding'],\n    ['bring', 'bringing'],\n    ['mean', 'meaning'],\n    ['develop', 'developing'],\n    ['produce', 'producing'],\n    ['draw', 'drawing'],\n    ['arrive', 'arriving'],\n    ['stay', 'staying'],\n    ['pay', 'paying'],\n    ['drive', 'driving'],\n    ['happen', 'happening'],\n    ['grow', 'growing'],\n    ['read', 'reading'],\n    ['sing', 'singing'],\n    ['sit', 'sitting'],\n    ['rise', 'rising'],\n    ['form', 'forming'],\n    ['remember', 'remembering'],\n    ['reach', 'reaching'],\n    ['include', 'including'],\n    ['consider', 'considering'],\n    ['enjoy', 'enjoying'],\n    ['lead', 'leading'],\n    ['understand', 'understanding'],\n    ['set', 'setting'],\n    ['support', 'supporting'],\n    ['seek', 'seeking'],\n    ['create', 'creating'],\n    ['discuss', 'discussing'],\n    ['present', 'presenting'],\n    ['prepare', 'preparing'],\n    ['allow', 'allowing'],\n    ['appear', 'appearing'],\n    ['spend', 'spending'],\n    ['continue', 'continuing'],\n    ['exist', 'existing'],\n    ['cut', 'cutting'],\n    ['add', 'adding'],\n    ['apply', 'applying'],\n    ['decide', 'deciding'],\n    ['fix', 'fixing'],\n    ['control', 'controlling'],\n    ['break', 'breaking'],\n    ['purchase', 'purchasing'],\n    ['increase', 'increasing'],\n    ['build', 'building'],\n    ['sell', 'selling'],\n    ['raise', 'raising'],\n    ['share', 'sharing'],\n    ['deliver', 'delivering'],\n    ['search', 'searching'],\n    ['practice', 'practicing'],\n    ['visit', 'visiting'],\n    ['protect', 'protecting'],\n    ['serve', 'serving'],\n    ['test', 'testing'],\n    ['maintain', 'maintaining'],\n    ['cause', 'causing'],\n    ['represent', 'representing'],\n    ['publish', 'publishing'],\n    ['operate', 'operating'],\n    ['respond', 'responding'],\n    ['agree', 'agreeing'],\n    ['arrive', 'arriving'],\n    ['drive', 'driving'],\n    ['fly', 'flying'],\n    ['remain', 'remaining'],\n    ['teach', 'teaching'],\n    ['study', 'studying'],\n    ['lead', 'leading'],\n    ['represent', 'representing'],\n    ['speak', 'speaking'],\n    ['explain', 'explaining'],\n    ['claim', 'claiming'],\n    ['reduce', 'reducing'],\n    ['select', 'selecting'],\n    ['establish', 'establishing'],\n    ['collect', 'collecting'],\n    ['recognize', 'recognizing'],\n    ['bury', 'burying'],\n    ['dance', 'dancing'],\n    ['win', 'winning'],\n    ['roll', 'rolling'],\n    ['kiss', 'kissing'],\n    ['suffer', 'suffering'],\n    ['kiss', 'kissing'],\n    ['recognize', 'recognizing'],\n    ['combine', 'combining'],\n    ['launch', 'launching'],\n    ['invest', 'investing'],\n    ['shoot', 'shooting'],\n    ['skate', 'skating'],\n    ['pause', 'pausing'],\n    ['review', 'reviewing'],\n    ['operate', 'operating'],\n    ['declare', 'declaring'],\n    ['direct', 'directing'],\n    ['donate', 'donating'],\n    ['enhance', 'enhancing'],\n    ['originate', 'originating'],\n    ['detect', 'detecting'],\n    ['perform', 'performing'],\n    ['attend', 'attending'],\n    ['inspect', 'inspecting'],\n    ['replace', 'replacing'],\n    ['negotiate', 'negotiating'],\n    ['discriminate', 'discriminating'],\n    ['register', 'registering'],\n    ['export', 'exporting'],\n    ['transport', 'transporting'],\n  ]\n  arr.forEach(function (a) {\n    const doc = nlp(a[0]).tag('#Infinitive')\n    const res = doc.verbs().conjugate()[0] || {}\n    t.equal(res.Gerund, a[1], here + a[0] + ' -> ' + res.Gerund)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/toInfinitive.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-toInfinitive] '\n\ntest('toInfinitive-phrase:', function (t) {\n  const arr = [\n    ['he walked', 'he walk'],\n    ['i walked', 'i walk'],\n    ['we walked', 'we walk'],\n    ['they walked', 'they walk'],\n    ['the friends walked', 'the friends walk'],\n    ['the friend walked', 'the friend walk'],\n    ['our users walked', 'our users walk'],\n    ['our user walked', 'our user walk'],\n    ['the eye closed', 'the eye close'],\n    ['the eyes closed', 'the eyes close'],\n    ['their colloseum will open', 'their colloseum open'],\n    ['their children will open', 'their children open'],\n    ['he walks', 'he walk'],\n    ['he walked', 'he walk'],\n    ['he will walk', 'he walk'],\n    ['he is walking', 'he walk'],\n    ['he was walking', 'he walk'],\n    ['i am walking', 'i walk'],\n    ['he will be walking', 'he walk'],\n    ['he has walked', 'he walk'],\n    ['he had walked', 'he walk'],\n    ['he will have walked', 'he walk'],\n    ['he has been walking', 'he walk'],\n    ['he had been walking', 'he walk'],\n    ['he will have been walking', 'he walk'],\n    ['got walked', 'walk'],\n    ['was walked', 'walk'],\n    ['were walked', 'walk'],\n    ['i was being walked', 'i walk'],\n    ['had been walked', 'walk'],\n    ['have been walked', 'walk'],\n    ['is walked', 'walk'],\n    ['are walked', 'walk'],\n    ['is being walked', 'walk'],\n    ['she has been walked', 'she walk'],\n    ['had been walked', 'walk'],\n    ['will have been walked', 'walk'],\n    ['will be walked', 'walk'],\n    ['would be walked', 'walk'],\n    ['would have been walked', 'walk'],\n    ['is going to walk', 'walk'],\n    ['did walk', 'walk'],\n    ['used to walk', 'walk'],\n    ['do walk', 'walk'],\n    ['does walk', 'walk'],\n\n    // negatives\n    ['i did not walk', 'i do not walk'],\n    ['we did not walk', 'we do not walk'],\n    ['he did not walk', 'he does not walk'],\n    ['i was not being walked', 'i do not walk'],\n    ['i had not walked', 'i do not walk'],\n    ['I will do that', 'I do that'],\n    ['I will not do that', 'I do not do that'],\n    [\"I won't do that\", 'I do not do that'],\n    // ['I will never do that', 'I do not do that'],\n\n    // want-infinitive\n    // ['he wants to walk', 'he want to walk'],\n    // ['he wanted to walk', 'he want to walk'],\n    // ['he will want to walk', 'he want to walk'],\n    // adverbs\n    // ['i was really not being walked', 'i do really not walk'],\n    // ['i was not really being walked', 'i do not really walk'],\n    ['i was being really not walked', 'i do really not walk'],\n    ['i was being not really walked', 'i do not really walk'],\n    ['he was not going to walk', 'he does not walk'],\n    ['we are putting', 'we put'],\n    // from particple\n    ['overthrown', 'overthrow'],\n    ['thrown', 'throw'],\n    // [\"overgrown\", \"overgrow\"],\n    ['flown', 'fly'],\n    ['shown', 'show'],\n    ['sown', 'sow'],\n    ['sworn', 'swear'],\n    // [\"worn\", \"wear\"],\n    ['forgotten', 'forget'],\n    ['bitten', 'bite'],\n    ['stolen', 'steal'],\n    // [\"shrunk\", \"shrink\"],\n\n    ['upheld', 'uphold'],\n    ['withheld', 'withhold'],\n    ['dyed', 'dye'],\n    ['gutted', 'gut'],\n    ['slotted', 'slot'],\n    ['allotted', 'allot'],\n    ['dotted', 'dot'],\n    ['acquitted', 'acquit'],\n    ['knitted', 'knit'],\n    ['transmitted', 'transmit'],\n    ['permitted', 'permit'],\n    ['omitted', 'omit'],\n    ['committed', 'commit'],\n    ['remitted', 'remit'],\n    ['emitted', 'emit'],\n    ['admitted', 'admit'],\n    ['submitted', 'submit'],\n    ['outfitted', 'outfit'],\n    ['benefitted', 'benefit'],\n    ['he fitted', 'he fit'],\n    ['vetted', 'vet'],\n    ['persuaded', 'persuade'],\n    ['netted', 'net'],\n    ['formatted', 'format'],\n    ['tasted', 'taste'],\n    ['he quoted', 'he quote'],\n    ['consulted', 'consult'],\n    ['resulted', 'result'],\n    ['catapulted', 'catapult'],\n    ['defaulted', 'default'],\n    ['wilted', 'wilt'],\n    ['tilted', 'tilt'],\n    ['salted', 'salt'],\n    ['malted', 'malt'],\n    ['exited', 'exit'],\n    ['he excited', 'he excite'],\n    ['deposited', 'deposit'],\n    ['transited', 'transit'],\n    ['revisited', 'revisit'],\n    ['visited', 'visit'],\n    ['inherited', 'inherit'],\n    ['solicited', 'solicit'],\n    ['expedited', 'expedite'],\n    ['marketed', 'market'],\n    ['skyrocketed', 'skyrocket'],\n    ['acted', 'act'],\n    ['accentuated', 'accentuate'],\n    ['situated', 'situate'],\n    ['perpetuated', 'perpetuate'],\n    ['fluctuated', 'fluctuate'],\n    ['evaluated', 'evaluate'],\n    ['graduated', 'graduate'],\n    ['abbreviated', 'abbreviate'],\n    ['alleviated', 'alleviate'],\n    ['deviated', 'deviate'],\n    ['renegotiated', 'renegotiate'],\n    ['negotiated', 'negotiate'],\n    ['differentiated', 'differentiate'],\n    ['substantiated', 'substantiate'],\n    ['self-initiated', 'self-initiate'],\n    ['initiated', 'initiate'],\n    ['satiated', 'satiate'],\n    ['expropriated', 'expropriate'],\n    ['appropriated', 'appropriate'],\n    ['affiliated', 'affiliate'],\n    ['conciliated', 'conciliate'],\n    ['repudiated', 'repudiate'],\n    ['mediated', 'mediate'],\n    ['enunciated', 'enunciate'],\n    ['created', 'create'],\n    ['warehoused', 'warehouse'],\n    ['kissed', 'kiss'],\n    ['missed', 'miss'],\n    ['spurred', 'spur'],\n    ['blurred', 'blur'],\n    ['incurred', 'incur'],\n    ['occurred', 'occur'],\n    ['deterred', 'deter'],\n    ['transferred', 'transfer'],\n    ['conferred', 'confer'],\n    ['inferred', 'infer'],\n    ['referred', 'refer'],\n    ['marred', 'mar'],\n    ['jarred', 'jar'],\n    ['scarred', 'scar'],\n    ['barred', 'bar'],\n    ['quickly scored', 'quickly score'],\n    ['quickly favored', 'quickly favor'],\n    ['quickly monitored', 'quickly monitor'],\n    ['quickly factored', 'quickly factor'],\n    ['quickly co-sponsored', 'quickly co-sponsor'],\n    ['quickly sponsored', 'quickly sponsor'],\n    ['quickly mirrored', 'quickly mirror'],\n    ['quickly anchored', 'quickly anchor'],\n    ['quickly stopped', 'quickly stop'],\n    ['quickly topped', 'quickly top'],\n    ['quickly popped', 'quickly pop'],\n    ['quickly chopped', 'quickly chop'],\n    ['quickly sipped', 'quickly sip'],\n    ['outstripped quickly', 'outstrip quickly'],\n    ['stripped quickly', 'strip quickly'],\n    ['whipped', 'whip'],\n    ['transshipped', 'transship'],\n    ['worshipped', 'worship'],\n    ['shipped', 'ship'],\n    ['dipped', 'dip'],\n    ['stepped', 'step'],\n    ['tapped', 'tap'],\n    ['unwrapped', 'unwrap'],\n    ['shrinkwrapped', 'shrinkwrap'],\n    ['wrapped', 'wrap'],\n    ['strapped', 'strap'],\n    ['scrapped', 'scrap'],\n    ['snapped', 'snap'],\n    ['mapped', 'map'],\n    ['revamped', 'revamp'],\n    ['stamped', 'stamp'],\n    ['clamped', 'clamp'],\n    ['helped', 'help'],\n    ['seeped', 'seep'],\n    ['reaped', 'reap'],\n    ['banned', 'ban'],\n    ['frowned', 'frown'],\n    ['drowned', 'drown'],\n    ['crowned', 'crown'],\n    ['browned', 'brown'],\n    ['downed', 'down'],\n    ['wholly-owned', 'wholly-own'],\n    ['co-owned', 'co-own'],\n    ['owned', 'own'],\n    ['pawned', 'pawn'],\n    ['attuned', 'attune'],\n    ['tuned', 'tune'],\n    ['boned', 'bone'],\n    ['twinned', 'twin'],\n    ['underpinned', 'underpin'],\n    ['skinned', 'skin'],\n    ['thinned', 'thin'],\n    ['spanned', 'span'],\n    ['panned', 'pan'],\n    ['scanned', 'scan'],\n    ['canned', 'can'],\n    ['intertwined', 'intertwine'],\n    ['entwined', 'entwine'],\n    ['destined', 'destine'],\n    ['quarantined', 'quarantine'],\n    ['enshrined', 'enshrine'],\n    ['predetermined', 'predetermine'],\n    ['undermined', 'undermine'],\n    ['examined', 'examine'],\n    ['mined', 'mine'],\n    ['outlined', 'outline'],\n    ['underlined', 'underline'],\n    ['streamlined', 'streamline'],\n    ['sidelined', 'sideline'],\n    ['inclined', 'incline'],\n    ['declined', 'decline'],\n    ['lined', 'line'],\n    ['machined', 'machine'],\n    ['imagined', 'imagine'],\n    ['confined', 'confine'],\n    ['quickly defined', 'quickly define'],\n    ['fined', 'fine'],\n    ['dined', 'dine'],\n    ['convened', 'convene'],\n    ['caned', 'cane'],\n    ['annulled', 'annul'],\n    ['extolled', 'extol'],\n    ['quickly leveled', 'quickly level'],\n    ['travelled', 'travel'],\n    ['expelled', 'expel'],\n    ['dispelled', 'dispel'],\n    ['compelled', 'compel'],\n    ['funnelled', 'funnel'],\n    ['channelled', 'channel'],\n    ['cancelled', 'cancel'],\n    ['rivalled', 'rival'],\n    ['profiled', 'profile'],\n    ['scaled', 'scale'],\n    ['baled', 'bale'],\n    ['invoked', 'invoke'],\n    ['revoked', 'revoke'],\n    ['choked', 'choke'],\n    ['he spiked', 'he spike'],\n    ['mimicked', 'mimic'],\n    ['flaked', 'flake'],\n    // [\"baked\", \"bake\"],\n    ['guaranteed', 'guarantee'],\n    ['agreed', 'agree'],\n    ['freed', 'free'],\n    ['fed', 'feed'],\n    ['reworded', 'reword'],\n    ['worded', 'word'],\n    ['afforded', 'afford'],\n    ['forwarded', 'forward'],\n    ['rewarded', 'reward'],\n    ['safely guarded', 'safely guard'],\n    ['regarded', 'regard'],\n    ['discarded', 'discard'],\n    ['carded', 'card'],\n    ['bombarded', 'bombard'],\n    ['ended', 'end'],\n    ['aided', 'aid'],\n    ['plodded', 'plod'],\n    ['skidded', 'skid'],\n    ['embedded', 'embed'],\n    ['dissuaded', 'dissuade'],\n    ['persuaded', 'persuade'],\n    ['dubbed', 'dub'],\n    ['bobbed', 'bob'],\n    ['ribbed', 'rib'],\n    ['swabbed', 'swab'],\n    ['stabbed', 'stab'],\n    ['nabbed', 'nab'],\n    ['opened', 'open'],\n    // [\"resold\", \"resell\"],\n    ['blitzed', 'blitz'],\n    ['overpaid', 'overpay'],\n    ['marketed', 'market'],\n    ['skyrocketed', 'skyrocket'],\n    ['ticketed', 'ticket'],\n    ['aroused', 'arouse'],\n    ['espoused', 'espouse'],\n    ['warehoused', 'warehouse'],\n    ['created', 'create'],\n    ['acquired', 'acquire'],\n    ['aired', 'air'],\n    ['persevered', 'persevere'],\n    ['imprisoned', 'imprison'],\n    ['poisoned', 'poison'],\n    ['he seasoned', 'he season'],\n    ['combed', 'comb'],\n    ['climbed', 'climb'],\n    ['succumbed', 'succumb'],\n    ['decreed', 'decree'],\n    ['hacked', 'hack'],\n    ['clocked', 'clock'],\n    ['blocked', 'block'],\n    ['linked', 'link'],\n    ['tasked', 'task'],\n    ['reckoned', 'reckon'],\n    ['shouted', 'shout'],\n    ['poured', 'pour'],\n    ['aroused', 'arouse'],\n    ['decreed', 'decree'],\n    ['freed', 'free'],\n\n    // [\"interpreted\", \"interpret\"],\n    // [\"longed\", \"long\"],\n    // [\"intervened\", \"intervene\"],\n    // [\"stoned\", \"stone\"],\n    // [\"phoned\", \"phone\"],\n    // [\"overtaken\", \"overtake\"],\n    // [\"undertaken\", \"undertake\"],\n    // [\"taken\", \"take\"],\n    // [\"overseen\", \"oversee\"],\n    // [\"foreseen\", \"foresee\"],\n    // [\"overridden\", \"override\"],\n    // [\"forbidden\", \"forbid\"],\n    // [\"withstood\", \"withstand\"],\n    // [\"ground\", \"grind\"],\n    // [\"acquired\", \"acquire\"],\n    // [\"aired\", \"air\"],\n    // [\"adhered\", \"adhere\"],\n    // [\"ill-equipped\", \"ill-equip\"],\n    // [\"equipped\", \"equip\"],\n    // [\"underdeveloped\", \"underdevelop\"],\n    // [\"well-developed\", \"well-develop\"],\n    // [\"foreign-owned\", \"foreign-own\"],\n\n    ['he forecasted', 'he forecast'],\n    ['he misunderstood', 'he misunderstand'],\n    ['he blasted', 'he blast'],\n    ['he ignited', 'he ignite'],\n    ['he permeated', 'he permeate'],\n    ['he recreated', 'he recreate'],\n    ['he praised', 'he praise'],\n    ['he explored', 'he explore'],\n    ['he layered', 'he layer'],\n    ['he answered', 'he answer'],\n    ['he lowered', 'he lower'],\n    ['he severed', 'he sever'],\n    ['he leaked', 'he leak'],\n    ['he buttered', 'he butter'],\n    ['he uttered', 'he utter'],\n    ['he cleaned', 'he clean'],\n    ['he rained', 'he rain'],\n    ['he joined', 'he join'],\n    ['he ruined', 'he ruin'],\n    ['he postponed', 'he postpone'],\n    ['he pondered', 'he ponder'],\n    ['he triggered', 'he trigger'],\n    ['he checkered', 'he checker'],\n    ['he slaughtered', 'he slaughter'],\n    ['he chartered', 'he charter'],\n    ['he sequestered', 'he sequester'],\n    ['he bolstered', 'he bolster'],\n    ['he mustered', 'he muster'],\n    ['he benefited', 'he benefit'],\n    ['he credited', 'he credit'],\n    ['he deposited', 'he deposit'],\n    ['he edited', 'he edit'],\n    ['he exhibited', 'he exhibit'],\n    ['he exploited', 'he exploit'],\n    ['he inherited', 'he inherit'],\n    ['he prohibited', 'he prohibit'],\n    ['he recruited', 'he recruit'],\n    ['he submited', 'he submit'],\n    ['he suited', 'he suit'],\n    ['he visited', 'he visit'],\n    ['he vomited', 'he vomit'],\n    ['he waited', 'he wait'],\n    ['he cited', 'he cite'],\n    ['he excited', 'he excite'],\n    ['he invited', 'he invite'],\n    ['he recited', 'he recite'],\n\n    // gerund -> infinitive\n    ['coming', 'come'],\n    ['joking', 'joke'],\n    ['poking', 'poke'],\n    ['naming', 'name'],\n    ['tuning', 'tune'],\n    ['hazing', 'haze'],\n    //phrasal\n    ['hazing over', 'haze over'],\n    // ['hazing-over', 'haze-over'],\n\n    // pastTense -> infinitive\n    ['came', 'come'],\n    ['named', 'name'],\n    ['moved', 'move'],\n    ['joked', 'joke'],\n    ['poked', 'poke'],\n    ['hooping', 'hoop'],\n    ['ached', 'ache'],\n    ['tuned', 'tune'],\n    //phrasal\n    ['hazed over', 'haze over'],\n    // ['hazed-over', 'haze-over'],\n\n    // [\"have been working non-stop on the project\", `To have been working non-stop on the project`],\n    // [\"will be leaving early tomorrow\", `To be leaving early tomorrow`],\n    // [\"had just finished washing the dishes\", `To have just finished washing the dishes`],\n    // [\"should have checked the details more carefully\", `To have checked the details more carefully`],\n    // [\"can easily solve the puzzle\", `To be able to solve the puzzle easily`],\n    // [\"might have been waiting at the wrong place\", `To have been waiting at the wrong place`],\n    // [\"would have gone to the event if invited\", `To have gone to the event if invited`],\n    // [\"should be preparing for the presentation\", `To be preparing for the presentation`],\n    // [\"is trying to learn Spanish\", `To be trying to learn Spanish`],\n    // [\"has been thinking about changing careers\", `To have been thinking about changing careers`],\n    // [\"have been considering a new strategy\", `To have been considering a new strategy`],\n    // [\"will be going to the concert tonight\", `To be going to the concert tonight`],\n    // [\"was just making a cup of coffee\", `To have just made a cup of coffee`],\n    // [\"must have forgotten the appointment\", `To have forgotten the appointment`],\n    // [\"can jump higher than anyone else\", `To be able to jump higher than anyone else`],\n    // [\"could have been mistaken about the time\", `To have been mistaken about the time`],\n    // [\"would be flying to Paris next month\", `To be flying to Paris next month`],\n    // [\"should have started the project earlier\", `To have started the project earlier`],\n    // [\"is planning to visit the museum\", `To be planning to visit the museum`],\n    // [\"has been dreaming about a vacation\", `To have been dreaming about a vacation`],\n    // [\"might be moving to a different city\", `To be moving to a different city`],\n    // [\"was reading a fascinating book\", `To have read a fascinating book`],\n    // [\"could play the guitar beautifully\", `To be able to play the guitar beautifully`],\n    // [\"will have finished the report by tomorrow\", `To have finished the report by tomorrow`],\n    // [\"has been working out regularly\", `To have been working out regularly`],\n    // [\"was going to call you later\", `To have been going to call you later`],\n    // [\"might have left the keys in the car\", `To have left the keys in the car`],\n    // [\"is starting to understand the concept\", `To be starting to understand the concept`],\n    // [\"should be doing the homework now\", `To be doing the homework now`],\n    // [\"would have been upset if you didn't show up\", `To have been upset if you didn't show up`],\n    // [\"has been trying to quit smoking\", `To have been trying to quit smoking`],\n    // [\"can't wait to see the new movie\", `To not be able to wait to see the new movie`],\n    // [\"were hoping for a positive outcome\", `To have hoped for a positive outcome`],\n    // [\"could have told me the truth\", `To have told me the truth`],\n    // [\"wouldn't dare to break the rules\", `To not dare to break the rules`],\n    // [\"is looking forward to the trip\", `To be looking forward to the trip`],\n    // [\"should be resting after the surgery\", `To be resting after the surgery`],\n    // [\"might be studying for the exam\", `To be studying for the exam`],\n    // [\"have been meaning to call you\", `To have been meaning to call you`],\n    // [\"was wondering about the results\", `To have wondered about the results`],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.verbs().toInfinitive()\n    t.equal(doc.text(), a[1], here + ' ' + a[0])\n  })\n  t.end()\n})\n\ntest('toInfinitive-coerced:', function (t) {\n  const arr = [\n    ['smoked', 'smoke'],\n    ['detailed', 'detail'],\n    ['tailored', 'tailor'],\n    ['controlled', 'control'],\n    ['recorded', 'record'],\n    ['trapped', 'trap'],\n    ['associated', 'associate'],\n    ['stunned', 'stun'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0]).tag('PastTense')\n    doc.verbs().toInfinitive()\n    t.equal(doc.text(), a[1], here + ' ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/toNegative.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-toNegative] '\n\ntest('inline verb negate:', function (t) {\n  const arr = [\n\n    [`he is nice`, 'he is not nice'],\n    [`she was nice`, 'she was not nice'],\n\n    [`she has walked`, 'she has not walked'],\n    [`she had walked`, 'she had not walked'],\n    [`we have had problems`, 'we have not had problems'],\n    [`we would walk`, 'we would not walk'],\n    [`we would have walked`, 'we would not have walked'],\n\n    //conjugations\n    [`she walked`, 'she did not walk'],\n    [`it all came apart`, 'it did not all come apart'],\n\n    //phrasals\n    [`he would come forward`, 'he would not come forward'],\n    // [`we come together`, 'do not come together'],\n    [`i didn't want to`, \"i didn't want to\"],\n\n    //===singular\n    // pastTense -\n    ['john played', 'john did not play'],\n    // presentTense -\n    ['john plays', 'john does not play'],\n    // futureTense -\n    ['john will play', 'john will not play'],\n\n    ///===plural\n    // pastTense -\n    ['we played', 'we did not play'],\n    // presentTense -\n    ['we play', 'we do not play'],\n    // futureTense -\n    ['we will play', 'we will not play'],\n\n    ['is', 'is not'],\n    ['will', 'will not'],\n    ['will be', 'will not be'],\n    ['was', 'was not'],\n\n    ['walks', 'does not walk'],\n    ['walked', 'did not walk'],\n    // ['walking', 'not walking'],\n    // ['walk', 'do not walk'],\n    ['will walk', 'will not walk'],\n    ['will have walked', 'will not have walked'],\n    //auxiliary/adjective\n    ['he was lifted', 'he was not lifted'],\n    ['he was lifting', 'he was not lifting'],\n    ['he was tall', 'he was not tall'],\n    ['he was armed', 'he was not armed'],\n    [`he was frightened`, 'he was not frightened'],\n    [`he was frightened of`, 'he was not frightened of'],\n    // [`he was frightened-of`, 'he was not frightened-of'],\n\n    //already negative\n    ['he did not die', 'he did not die'],\n    ['that is not it', 'that is not it'],\n    ['we will not have this', 'we will not have this'],\n    ['we would not particularly go', 'we would not particularly go'],\n\n    // ['corrupted', 'did not corrupt'],\n    ['jumped', 'did not jump'],\n    ['stunk up', 'did not stink up'],\n\n    [`would study`, `would not study`],\n    [`could study`, `could not study`],\n    [`should study`, `should not study`],\n\n    [`please walk`, `please do not walk`],\n    [`he walks`, `he does not walk`],\n    [`we walk`, `we do not walk`],\n    [`i walk`, `i do not walk`],\n    [`spencer walks`, `spencer does not walk`],\n    [`he walked`, `he did not walk`],\n    [`he will walk`, `he will not walk`],\n    [`he is walking`, `he is not walking`],\n    [`he was walking`, `he was not walking`],\n    [`he will be walking`, `he will not be walking`],\n    [`he has walked`, `he has not walked`],\n    [`he had walked`, `he had not walked`],\n    [`he will have walked`, `he will not have walked`],\n    [`he has been walking`, `he has not been walking`],\n    [`he had been walking`, `he had not been walking`],\n    [`he will have been walking`, `he will not have been walking`],\n    [`he got walked`, `he did not get walked`],//**\n    [`we were walked`, `we were not walked`],\n    [`he had been walked`, `he had not been walked`],\n    [`i have been walked`, `i have not been walked`],\n    [`he was being walked`, `he was not being walked`],\n    [`he is walked`, `he is not walked`],\n    [`he has been walked`, `he has not been walked`],\n    [`we are walked`, `we are not walked`],\n    [`he will have been walked`, `he will not have been walked`],\n    [`we will be walked`, `we will not be walked`],\n    [`he would be walked`, `he would not be walked`],\n    [`he would have been walked`, `he would not have been walked`],\n    [`he is going to walk`, `he is not going to walk`],\n    [`he did walk`, `he did not walk`],\n    [`he used to walk`, `he did not used to walk`],\n    [`we do walk`, `we do not walk`],\n    [`he does walk`, `he does not walk`],\n    [`he could have walked`, `he could not have walked`],\n    // [`he wants to walk`, `he does not want to walk`],\n    [`he can walk`, `he can not walk`],\n\n    // already-negative\n    [`he can not walk`, `he can not walk`],\n    [`he could not have really walked`, `he could not have really walked`],\n    ['there is not hope', 'there is not hope'],\n    ['there is no hope', 'there is no hope'],\n  ]\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    doc.verbs().toNegative()\n    const str = doc.text('normal')\n    t.equal(str, a[1], here + a[1] + ' --- ' + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/toPast.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-toPast] '\n\ntest('toPast:', function (t) {\n  const arr = [\n    // copula-based\n    ['he is nice', 'he was nice'],\n    ['he is really it', 'he was really it'],\n    ['he was nice', 'he was nice'],\n    ['he was walking', 'he was walking'],\n\n    ['he walks', 'he walked'],\n    ['he walked', 'he walked'],\n    ['he will walk', 'he walked'],\n\n\n    // copula forms\n    ['i am not cool', 'i was not cool'],\n    ['i was not cool', 'i was not cool'],\n    // ['i will not be cool', 'i was not cool'],\n    ['he is not cool', 'he was not cool'],\n    ['he was not cool', 'he was not cool'],\n    // ['he will not be cool', 'he was not cool'],\n    ['they are not cool', 'they were not cool'],\n    ['they were not cool', 'they were not cool'],\n    // ['they will not be cool', 'they were not cool'],\n\n    ['he is walking', 'he was walking'],\n    ['he was walking', 'he was walking'],\n    ['we are walking', 'we were walking'],\n    ['we were walking', 'we were walking'],\n    ['i am walking', 'i was walking'],\n    ['he will be walking', 'he was walking'],\n    ['he is not walking', 'he was not walking'],\n    ['he was not walking', 'he was not walking'],\n    ['we are not walking', 'we were not walking'],\n    ['we were not walking', 'we were not walking'],\n    ['i am not walking', 'i was not walking'],\n\n    ['he has walked', 'he had walked'],\n    ['he had walked', 'he had walked'],\n    ['he will have walked', 'he had walked'],\n    ['he has not walked', 'he had not walked'],\n    ['he had not walked', 'he had not walked'],\n    // ['he will not have walked', 'he had not walked'],\n\n    ['he has been walking', 'he had been walking'],\n    ['he had been walking', 'he had been walking'],\n    ['he will have been walking', 'he had been walking'],\n\n    ['got walked', 'got walked'],\n    ['was walked', 'was walked'],\n    ['were walked', 'were walked'],\n    // ['was being walked', 'had been walked'],\n    ['had been walked', 'had been walked'],\n    ['have been walked', 'had been walked'],\n    ['is walked', 'was walked'],\n    ['are walked', 'was walked'],\n    ['is being walked', 'was being walked'],\n    // ['has been walked', 'had been walked'],\n    ['had been walked', 'had been walked'],\n    ['will have been walked', 'had been walked'],\n    ['will be walked', 'had been walked'],\n\n    ['would be walked', 'would have been walked'],\n    ['would have been walked', 'would have been walked'],\n    ['is going to walk', 'was going to walk'],\n    ['did walk', 'did walk'],\n    ['used to walk', 'used to walk'],\n    ['we do walk', 'we did walk'],\n    ['does walk', 'did walk'],\n    ['he wants to walk', 'he wanted to walk'],\n    ['he will want to walk', 'he wanted to walk'],\n\n    // participle\n    ['he can walk', 'he could walk'],\n    ['he could walk', 'he could have walked'], //not sure\n    ['he would walk', 'he would have walked'],//not sure\n    ['he should walk', 'he should have walked'],\n\n    // ['he can drive', 'he could drive'],\n    // ['he could drive', 'he could have driven'],\n    // ['he would drive', 'he would have driven'],\n    // ['he should drive', 'he should have driven'],\n\n    ['i write', 'i wrote'],\n    ['spencer writes', 'spencer wrote'],\n    ['i barely write', 'i barely wrote'],\n    ['we barely write', 'we barely wrote'],\n    ['we will barely write', 'we barely wrote'],\n    // compound verb\n    [`i'll start looking`, 'i started looking'],\n    [`i will not start looking`, 'i have not started looking'],\n    [`i won't start looking`, 'i have not started looking'],\n    // negatives\n    ['we do not write', 'we did not write'],\n    ['we will not write', 'we did not write'],\n    ['angelina does not write', 'angelina did not write'],\n    ['angelina will not write', 'angelina did not write'],\n    ['toronto barely starts', 'toronto barely started'],\n    ['say it again', 'say it again'],\n    ['there is no hope', 'there was no hope'],\n    // ['council votes to deny it', 'council voted to deny it'],\n    ['nobody will say for certain', 'nobody said for certain'],\n    ['he will say for certain', 'he said for certain'],\n    ['she will not say for certain', 'she did not say for certain'],\n    ['waiters are furious', 'waiters were furious'],\n    ['the waiters will walk out', 'the waiters walked out'],\n    ['this union will disrupt', 'this union disrupted'],\n    ['this union has disrupted', 'this union had disrupted'],\n    ['it will have real feelings', 'it had real feelings'],\n    // ['it had no real feelings', 'it had no real feelings'],\n    // ['it will not have studied enough', 'it had not studied enough'],\n    ['spencer will have learned enough', 'spencer had learned enough'],\n    // ['spencer will not have learned enough', 'spencer had not learned enough'],\n\n\n    //oke\n    ['awakes', 'awoke'],\n    //ade\n    ['makes', 'made'],\n    ['remakes', 'remade'],\n    //ook\n    ['shakes', 'shook'],\n\n    ['takes', 'took'],\n    ['overtakes', 'overtook'],\n    ['undertakes', 'undertook'],\n    ['mistakes', 'mistook'],\n    ['retakes', 'retook'],\n    //aked\n    ['bakes', 'baked'],\n    ['fakes', 'faked'],\n    ['snakes', 'snaked'],\n\n    // sneaky past participles\n    // present\n    // ['i am being awaken', 'i have been awaken'],\n    // ['i should be awaken', 'i should have been awaken'],\n    // past->past\n    ['i had been awaken', 'i had been awaken'],\n    ['i should have been awaken', 'i should have been awaken'],\n    // gerund\n    ['when it is raining', 'when it was raining'],\n    // ['i think it will be raining', 'i thought it will be raining'],\n    ['when it was raining', 'when it was raining'],\n\n    // gerund-phrase\n    [`he starts seeing`, `he started seeing`],\n    [`he started seeing`, `he started seeing`],\n    [`he will start seeing`, `he started seeing`],\n    [`we start seeing`, `we started seeing`],\n    [`we started seeing`, `we started seeing`],\n    [`we will start seeing`, `we started seeing`],\n    [`we have started seeing`, `we have started seeing`],\n    [`we will have started seeing`, `we have started seeing`],\n\n    // negative copula\n    ['john is not nice', 'john was not nice'],\n    // ['john will not be nice', 'john was not nice'],\n    // ['john will be not nice', 'john was not nice'],\n    // ['john had not been nice', 'john had not been nice'],\n\n    ['impale', 'impaled'],\n    ['beguile', 'beguiled'],\n    ['convolute', 'convoluted'],\n    ['root', 'rooted'],\n\n\n\n    [\"he looks forward to the vacation\", \"he looked forward to the vacation\"],\n    [\"he studies hard for the exam\", \"he studied hard for the exam\"],\n    [\"he makes a delicious dinner\", \"he made a delicious dinner\"],\n    [\"he can easily solve the puzzle\", \"he could easily solve the puzzle\"],\n    [\"he works diligently on the project\", \"he worked diligently on the project\"],\n    [\"he plays the piano beautifully\", \"he played the piano beautifully\"],\n    [\"he drives carefully in the rain\", \"he drove carefully in the rain\"],\n    [\"he reads quietly in the library\", \"he read quietly in the library\"],\n    [\"he swims fast in the race\", \"he swam fast in the race\"],\n    [\"he dances gracefully at the party\", \"he danced gracefully at the party\"],\n    [\"he tries to improve her English\", \"he tried to improve her English\"],\n    [\"he can finish the work in one hour\", \"he could finish the work in one hour\"],\n    [\"he practices the guitar daily\", \"he practiced the guitar daily\"],\n    [\"he prepares for the upcoming interview\", \"he prepared for the upcoming interview\"],\n    [\"he waits patiently for his turn\", \"he waited patiently for his turn\"],\n    [\"he writes a new book\", \"he wrote a new book\"],\n    [\"he listens attentively in class\", \"he listened attentively in class\"],\n    [\"he enjoys the summer vacation\", \"he enjoyed the summer vacation\"],\n    [\"he learns to play tennis\", \"he learned to play tennis\"],\n    [\"he hopes for a promotion\", \"he hoped for a promotion\"],\n    [\"he takes care of the plants\", \"he took care of the plants\"],\n    [\"he bakes a cake for his birthday\", \"he baked a cake for his birthday\"],\n    [\"he plans a surprise party\", \"he planned a surprise party\"],\n    [\"he jogs in the park every morning\", \"he jogged in the park every morning\"],\n    [\"he teaches math at a high school\", \"he taught math at a high school\"],\n    [\"he remembers the good old days\", \"he remembered the good old days\"],\n    [\"he travels around the world\", \"he travelled around the world\"],\n    [\"he paints a beautiful landscape\", \"he painted a beautiful landscape\"],\n    [\"he trains for the marathon\", \"he trained for the marathon\"],\n    [\"he watches a comedy show\", \"he watched a comedy show\"],\n    [\"he cleans the house\", \"he cleaned the house\"],\n    [\"he chats with friends online\", \"he chatted with friends online\"],\n    [\"he climbs the mountain\", \"he climbed the mountain\"],\n    [\"he plays games\", \"he played games\"],\n    [\"he drinks coffee in the morning\", \"he drank coffee in the morning\"],\n    [\"he walks the dog\", \"he walked the dog\"],\n    [\"he builds a treehouse\", \"he built a treehouse\"],\n    [\"he feeds the birds\", \"he fed the birds\"],\n    [\"he gardens on weekends\", \"he gardened on weekends\"],\n    [\"he rides a bicycle\", \"he rode a bicycle\"],\n    [\"he studies Japanese\", \"he studied Japanese\"],\n    [\"he visits his grandparents\", \"he visited his grandparents\"],\n    [\"he cooks a gourmet meal\", \"he cooked a gourmet meal\"],\n    [\"he plays chess\", \"he played chess\"],\n    [\"he sings in the choir\", \"he sang in the choir\"],\n    [\"he repairs the car\", \"he repaired the car\"],\n    [\"he learns to code\", \"he learned to code\"],\n    [\"he invests in stocks\", \"he invested in stocks\"],\n    [\"he takes a nap\", \"he took a nap\"],\n    [\"he shops for groceries\", \"he shopped for groceries\"]\n\n    // [\"is looking forward to the vacation\", \"looked forward to the vacation\"],\n    // [\"has been studying hard for the exam\", \"had been studying hard for the exam\"],\n    // [\"is making a delicious dinner\", \"made a delicious dinner\"],\n    // [\"can easily solve the puzzle\", \"could easily solve the puzzle\"],\n    // [\"is working diligently on the project\", \"worked diligently on the project\"],\n    // [\"is playing the piano beautifully\", \"played the piano beautifully\"],\n    // [\"is driving carefully in the rain\", \"drove carefully in the rain\"],\n    // [\"is reading quietly in the library\", \"read quietly in the library\"],\n    // [\"is swimming fast in the race\", \"swam fast in the race\"],\n    // [\"is dancing gracefully at the party\", \"danced gracefully at the party\"],\n    // [\"is trying to improve her English\", \"tried to improve her English\"],\n    // [\"has been thinking about changing jobs\", \"had been thinking about changing jobs\"],\n    // [\"can finish the work in one hour\", \"could finish the work in one hour\"],\n    // [\"is practicing the guitar daily\", \"practiced the guitar daily\"],\n    // [\"is preparing for the upcoming interview\", \"prepared for the upcoming interview\"],\n    // [\"is waiting patiently for his turn\", \"waited patiently for his turn\"],\n    // [\"is writing a new book\", \"wrote a new book\"],\n    // [\"is listening attentively in class\", \"listened attentively in class\"],\n    // [\"is enjoying the summer vacation\", \"enjoyed the summer vacation\"],\n    // [\"is learning to play tennis\", \"learned to play tennis\"],\n    // [\"is hoping for a promotion\", \"hoped for a promotion\"],\n    // [\"is taking care of the plants\", \"took care of the plants\"],\n    // [\"is baking a cake for his birthday\", \"baked a cake for his birthday\"],\n    // [\"is planning a surprise party\", \"planned a surprise party\"],\n    // [\"is jogging in the park every morning\", \"jogged in the park every morning\"],\n    // [\"is teaching math at a high school\", \"taught math at a high school\"],\n    // [\"is remembering the good old days\", \"remembered the good old days\"],\n    // [\"is traveling around the world\", \"traveled around the world\"],\n    // [\"is painting a beautiful landscape\", \"painted a beautiful landscape\"],\n    // [\"is training for the marathon\", \"trained for the marathon\"],\n    // [\"is watching a comedy show\", \"watched a comedy show\"],\n    // [\"is cleaning the house\", \"cleaned the house\"],\n    // [\"is chatting with friends online\", \"chatted with friends online\"],\n    // [\"is climbing the mountain\", \"climbed the mountain\"],\n    // [\"is playing video games\", \"played video games\"],\n    // [\"is drinking coffee in the morning\", \"drank coffee in the morning\"],\n    // [\"is walking the dog\", \"walked the dog\"],\n    // [\"is building a treehouse\", \"built a treehouse\"],\n    // [\"is feeding the birds\", \"fed the birds\"],\n    // [\"is gardening on weekends\", \"gardened on weekends\"],\n    // [\"is riding a bicycle\", \"rode a bicycle\"],\n    // [\"is studying Japanese\", \"studied Japanese\"],\n    // [\"is visiting his grandparents\", \"visited his grandparents\"],\n    // [\"is cooking a gourmet meal\", \"cooked a gourmet meal\"],\n    // [\"is playing chess\", \"played chess\"],\n    // [\"is singing in the choir\", \"sang in the choir\"],\n    // [\"is repairing the car\", \"repaired the car\"],\n    // [\"is learning to code\", \"learned to code\"],\n    // [\"is investing in stocks\", \"invested in stocks\"],\n    // [\"is taking a nap\", \"took a nap\"],\n    // [\"is shopping for groceries\", \"shopped for groceries\"]\n\n\n\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.verbs().toPastTense()\n    t.equal(doc.text(), a[1], here + ' ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/toPastParticiple.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-toPastParticiple] '\n\ntest('toPastParticiple:', function (t) {\n  const arr = [\n    [`I eat breakfast every morning.`, `I have eaten breakfast every morning.`],\n    [`She reads a book before bed.`, `She has read a book before bed.`],\n    [`He teaches math to high school students.`, `He has taught math to high school students.`],\n    [`They walk their dog in the park.`, `They have walked their dog in the park.`],\n    [`We watch a movie on Friday nights.`, `We have watched a movie on Friday nights.`],\n    [`I eat pizza.`, `I have eaten pizza.`],\n    [`He reads books.`, `He has read books.`],\n    [`She sings songs.`, `She has sung songs.`],\n    [`We write letters.`, `We have written letters.`],\n    [`You speak Spanish.`, `You have spoken Spanish.`],\n    // [`He swims laps.`, `He has swum laps.`],\n    [`They climb mountains.`, `They have climbed mountains.`],\n    [`She dances ballet.`, `She has danced ballet.`],\n    [`We paint pictures.`, `We have painted pictures.`],\n    [`I play soccer.`, `I have played soccer.`],\n    [`They study history.`, `They have studied history.`],\n    [`He cooks dinner.`, `He has cooked dinner.`],\n    [`She designs websites.`, `She has designed websites.`],\n    [`We watch movies.`, `We have watched movies.`],\n    [`You listen to music.`, `You have listened to music.`],\n    [`They build houses.`, `They have built houses.`],\n    [`I plant flowers.`, `I have planted flowers.`],\n    [`He fixes cars.`, `He has fixed cars.`],\n    [`She teaches math.`, `She has taught math.`],\n    [`We clean the house.`, `We have cleaned the house.`],\n    [`You drive a car.`, `You have driven a car.`],\n    [`They ride bikes.`, `They have ridden bikes.`],\n    [`I take photos.`, `I have taken photos.`],\n    [`Spencer does yoga.`, `Spencer has done yoga.`],\n    [`We sing in the choir.`, `We have sung in the choir.`],\n    [`You draw pictures.`, `You have drawn pictures.`],\n    [`They make cookies.`, `They have made cookies.`],\n    [`He surfs the internet.`, `He has surfed the internet.`],\n    [`She plays the guitar.`, `She has played the guitar.`],\n    [`We travel the world.`, `We have travelled the world.`],\n    [`You speak to friends.`, `You have spoken to friends.`],\n    [`They fish in the river.`, `They have fished in the river.`],\n    [`I write stories.`, `I have written stories.`],\n    [`He takes a shower.`, `He has taken a shower.`],\n    [`She sews clothes.`, `She has sewn clothes.`],\n    [`We play board games.`, `We have played board games.`],\n    [`You exercise at the gym.`, `You have exercised at the gym.`],\n    [`They fly airplanes.`, `They have flown airplanes.`],\n    [`He studies science.`, `He has studied science.`],\n    [\"I sing in the shower.\", \"I have sung in the shower.\"],\n    [\"The sun shines brightly.\", \"The sun has shone brightly.\"],\n    [\"He eats a lot of vegetables.\", \"He has eaten a lot of vegetables.\"],\n    [\"We write a letter to our grandparents.\", \"We have written a letter to our grandparents.\"],\n    [\"The dog barks loudly.\", \"The dog has barked loudly.\"],\n    [\"They play soccer every weekend.\", \"They have played soccer every weekend.\"],\n    [\"She speaks Spanish fluently.\", \"She has spoken Spanish fluently.\"],\n    [\"He teaches math at the local college.\", \"He has taught math at the local college.\"],\n    [\"The tree grows tall.\", \"The tree has grown tall.\"],\n    [\"The bird chirps early in the morning.\", \"The bird has chirped early in the morning.\"],\n    [\"The flower smells sweet.\", \"The flower has smelled sweet.\"],\n    [\"I play the guitar.\", \"I have played the guitar.\"],\n    [\"The wind blows gently.\", \"The wind has blown gently.\"],\n    // [\"the tree will grow\", \"the tree has grown\"],\n    [\"the tree grows quickly\", \"the tree has grown quickly\"],\n    [\"She will have eaten\", \"She has eaten\"],\n    [\"They will have finished\", \"They have finished\"],\n    [\"He will have written\", \"He has written\"],\n    [\"We will have seen\", \"We have seen\"],\n    [\"You will have spoken\", \"You have spoken\"],\n\n    [\"She reads a book every night.\", \"She has read a book every night.\"],\n    // [\"I always forget my keys.\", \"I have always forgotten my keys\"],\n    [\"She paints beautiful pictures.\", \"She has painted beautiful pictures.\"],\n    [\"He drives a fast car.\", \"He has driven a fast car.\"],\n    [\"I clean the house every weekend.\", \"I have cleaned the house every weekend.\"],\n    [\"She dances gracefully.\", \"She has danced gracefully.\"],\n    [\"He flies to New York for business.\", \"He has flown to New York for business.\"],\n    [\"We swim in the pool on hot days.\", \"We have swum in the pool on hot days.\"],\n    // [\"They run a marathon every year.\", \"They have run a marathon every year.\"],\n    [\"She sews her own clothes\", \"She has sewn her own clothes\"],\n    [\"He builds houses for a living.\", \"He has built houses for a living.\"],\n    [\"We drink coffee every morning.\", \"We have drunk coffee every morning.\"],\n    [\"They watch movies on Friday nights.\", \"They have watched movies on Friday nights.\"],\n    [\"She designs jewelry for a living.\", \"She has designed jewelry for a living.\"],\n    [\"He studies biology in college.\", \"He has studied biology in college.\"],\n    // [\"We take walks in the park.\", \"We have taken walks in the park.\"],\n    // [\"They listen to music on their way to work.\", \"They have listened to music on their way to work.\"],\n    [\"She cooks dinner for her family\", \"She has cooked dinner for her family\"],\n\n\n    ['i take', 'i have taken'],\n    ['i write', 'i have written'],\n    ['i make', 'i have made'],\n    ['i agree', 'i have agreed'],\n    ['i catch', 'i have caught'],\n    ['i do', 'i have done'],\n    ['i break', 'i have broken'],\n    ['i forget', 'i have forgotten'],\n    ['i move', 'i have moved'],\n    ['i understand', 'i have understood'],\n    ['i open', 'i have opened'],\n    ['i fill', 'i have filled'],\n    ['i speak', 'i have spoken'],\n    ['i put', 'i have put'],\n    ['i walk', 'i have walked'],\n    ['i meet', 'i have met'],\n    ['i fly', 'i have flown'],\n    ['i keep', 'i have kept'],\n    ['i show', 'i have shown'],\n    ['i hear', 'i have heard'],\n    ['i trust', 'i have trusted'],\n    ['i turn', 'i have turned'],\n    ['i fall', 'i have fallen'],\n    ['i find', 'i have found'],\n    ['i give', 'i have given'],\n    ['i cause', 'i have caused'],\n    ['i stand', 'i have stood'],\n    ['i sit', 'i have sat'],\n    ['i leave', 'i have left'],\n    ['i stop', 'i have stopped'],\n    ['i plan', 'i have planned'],\n    ['i live', 'i have lived'],\n    ['i build', 'i have built'],\n    ['i suggest', 'i have suggested'],\n    ['i hold', 'i have held'],\n    ['i look', 'i have looked'],\n    ['i lie', 'i have lied'],\n    ['i hope', 'i have hoped'],\n    ['i bring', 'i have brought'],\n    ['i ask', 'i have asked'],\n    ['i seem', 'i have seemed'],\n    ['i include', 'i have included'],\n    ['i understand', 'i have understood'],\n    ['i consider', 'i have considered'],\n    ['i realize', 'i have realized'],\n    ['i follow', 'i have followed'],\n    ['i bring', 'i have brought'],\n    ['i think', 'i have thought'],\n    ['i explain', 'i have explained'],\n    ['i explain', 'i have explained'],\n    ['i point', 'i have pointed'],\n    ['i choose', 'i have chosen'],\n    ['i play', 'i have played'],\n    ['i try', 'i have tried'],\n    ['i study', 'i have studied'],\n    // ['i wear', 'i have worn'],\n    ['i act', 'i have acted'],\n    ['i help', 'i have helped'],\n    ['i remember', 'i have remembered'],\n    ['i call', 'i have called'],\n    ['i remove', 'i have removed'],\n    ['i accept', 'i have accepted'],\n    ['i prepare', 'i have prepared'],\n    ['i prepare', 'i have prepared'],\n    ['i support', 'i have supported'],\n    ['i increase', 'i have increased'],\n    ['i mean', 'i have meant'],\n    ['i meet', 'i have met'],\n    ['i add', 'i have added'],\n    ['i lose', 'i have lost'],\n    ['i appear', 'i have appeared'],\n    ['i develop', 'i have developed'],\n    ['i reach', 'i have reached'],\n    ['i use', 'i have used'],\n    ['i like', 'i have liked'],\n    ['i choose', 'i have chosen'],\n    ['i continue', 'i have continued'],\n    ['i create', 'i have created'],\n    ['i deal', 'i have dealt'],\n    ['i cause', 'i have caused'],\n    ['i set', 'i have set'],\n    ['i allow', 'i have allowed'],\n    ['i notice', 'i have noticed'],\n    ['i take', 'i have taken'],\n    ['i save', 'i have saved'],\n    ['i spend', 'i have spent'],\n    ['i suffer', 'i have suffered'],\n    ['i provide', 'i have provided'],\n    ['i reach', 'i have reached'],\n    ['i contain', 'i have contained'],\n    ['i include', 'i have included'],\n    ['i finish', 'i have finished'],\n    ['i face', 'i have faced'],\n    ['i explain', 'i have explained'],\n    ['i mention', 'i have mentioned'],\n    ['i form', 'i have formed'],\n    ['i examine', 'i have examined'],\n    ['i consider', 'i have considered'],\n    ['i cost', 'i have cost'],\n    ['i determine', 'i have determined'],\n    ['i require', 'i have required'],\n    ['i exist', 'i have existed'],\n    ['i remain', 'i have remained'],\n    ['i involve', 'i have involved'],\n    ['i reduce', 'i have reduced'],\n    ['i establish', 'i have established'],\n    ['i protect', 'i have protected'],\n    ['i cause', 'i have caused'],\n    ['i represent', 'i have represented'],\n    ['i indicate', 'i have indicated'],\n    ['i determine', 'i have determined'],\n    ['i apply', 'i have applied'],\n    ['i increase', 'i have increased'],\n    ['i base', 'i have based'],\n    ['i answer', 'i have answered'],\n    ['i cover', 'i have covered'],\n    ['i show', 'i have shown'],\n    ['i involve', 'i have involved'],\n    ['i notice', 'i have noticed'],\n    ['i understand', 'i have understood'],\n    ['i pass', 'i have passed'],\n    ['i permit', 'i have permitted'],\n    ['i prefer', 'i have preferred'],\n    ['i contain', 'i have contained'],\n    ['i represent', 'i have represented'],\n    ['i change', 'i have changed'],\n    ['i recognize', 'i have recognized'],\n    ['i refer', 'i have referred'],\n    ['i decide', 'i have decided'],\n    ['i estimate', 'i have estimated'],\n    ['i discuss', 'i have discussed'],\n    ['i observe', 'i have observed'],\n    ['i receive', 'i have received'],\n    ['i include', 'i have included'],\n    ['i consider', 'i have considered'],\n    ['i affect', 'i have affected'],\n    ['i agree', 'i have agreed'],\n    ['i understand', 'i have understood'],\n    ['i happen', 'i have happened'],\n    ['i produce', 'i have produced'],\n    ['i perform', 'i have performed'],\n    ['i connect', 'i have connected'],\n    ['i resist', 'i have resisted'],\n    ['i consider', 'i have considered'],\n    ['i regard', 'i have regarded'],\n    ['i occur', 'i have occurred'],\n    ['i relate', 'i have related'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.verbs().toPastParticiple()\n    t.equal(doc.text(), a[1], here + ' ' + a[0])\n  })\n  t.end()\n})\n\n\ntest('past vs past-participle:', function (t) {\n  const arr = [\n    ['arise', 'arose', 'arisen'],\n    ['awake', 'awoke', 'awoken'],\n    // ['bear', 'bore', 'born'],\n    ['beat', 'beat', 'beaten'],\n    // ['become', 'became', 'become'],\n    ['bet', 'bet', 'bet'],\n    ['bid', 'bid', 'bid'],\n    ['bind', 'bound', 'bound'],\n    ['bleed', 'bled', 'bled'],\n    ['blow', 'blew', 'blown'],\n    ['break', 'broke', 'broken'],\n    ['breed', 'bred', 'bred'],\n    ['bring', 'brought', 'brought'],\n    ['build', 'built', 'built'],\n    ['burst', 'burst', 'burst'],\n    ['catch', 'caught', 'caught'],\n    ['choose', 'chose', 'chosen'],\n    ['cling', 'clung', 'clung'],\n    // ['come', 'came', 'come'],\n    ['cost', 'cost', 'cost'],\n    ['creep', 'crept', 'crept'],\n    ['deal', 'dealt', 'dealt'],\n    ['dig', 'dug', 'dug'],\n    ['do', 'did', 'done'],\n    ['draw', 'drew', 'drawn'],\n    ['drink', 'drank', 'drunk'],\n    ['drive', 'drove', 'driven'],\n    ['eat', 'ate', 'eaten'],\n    ['fall', 'fell', 'fallen'],\n    ['feed', 'fed', 'fed'],\n    ['fight', 'fought', 'fought'],\n    ['find', 'found', 'found'],\n    ['flee', 'fled', 'fled'],\n    ['fling', 'flung', 'flung'],\n    ['fly', 'flew', 'flown'],\n    ['forget', 'forgot', 'forgotten'],\n    ['forgive', 'forgave', 'forgiven'],\n    ['forsake', 'forsaken', 'forsaken'],\n    // ['freeze', 'froze', 'frozen'],\n    ['give', 'gave', 'given'],\n    ['go', 'went', 'gone'],\n    ['grow', 'grew', 'grown'],\n    ['hang', 'hung', 'hung'],\n    ['have', 'had', 'had'],\n    ['hide', 'hid', 'hidden'],\n    ['hold', 'held', 'held'],\n    ['keep', 'kept', 'kept'],\n    ['know', 'knew', 'known'],\n    ['leave', 'left', 'left'],\n    ['lend', 'lent', 'lent'],\n    ['light', 'lit', 'lit'],\n    ['make', 'made', 'made'],\n    ['meet', 'met', 'met'],\n    ['prove', 'proved', 'proven'],\n    ['read', 'read', 'read'],\n    ['ride', 'rode', 'ridden'],\n    ['ring', 'rang', 'rung'],\n    ['rise', 'rose', 'risen'],\n    // ['run', 'ran', 'run'],\n    ['say', 'said', 'said'],\n    ['see', 'saw', 'seen'],\n    ['seek', 'sought', 'sought'],\n    ['set', 'set', 'set'],\n    ['shake', 'shook', 'shaken'],\n    ['shine', 'shone', 'shone'],\n    ['shoot', 'shot', 'shot'],\n    ['show', 'showed', 'shown'],\n    ['sing', 'sang', 'sung'],\n    ['sink', 'sank', 'sunk'],\n    ['sit', 'sat', 'sat'],\n    ['sleep', 'slept', 'slept'],\n    ['speak', 'spoke', 'spoken'],\n    ['spend', 'spent', 'spent'],\n    ['spread', 'spread', 'spread'],\n    ['stand', 'stood', 'stood'],\n    ['steal', 'stole', 'stolen'],\n    ['stick', 'stuck', 'stuck'],\n    ['strike', 'struck', 'struck'],\n    ['swear', 'swore', 'sworn'],\n    ['swim', 'swam', 'swum'],\n    ['take', 'took', 'taken'],\n    ['teach', 'taught', 'taught'],\n    ['tear', 'tore', 'torn'],\n    ['tell', 'told', 'told'],\n    ['think', 'thought', 'thought'],\n    ['throw', 'threw', 'thrown'],\n    ['understand', 'understood', 'understood'],\n    ['wake', 'woke', 'woken'],\n    // ['wear', 'wore', 'worn'],\n    ['win', 'won', 'won'],\n    ['write', 'wrote', 'written'],\n  ]\n  arr.forEach(a => {\n    const [present, past, participle] = a\n    const doc = nlp(present).tag('#Infinitive')\n    const obj = doc.verbs().conjugate()[0] || {}\n    t.equal(obj.PastTense, past, here + ' ' + a[0])\n\n    let prt = obj.Participle || obj.PastTense || ''\n    prt = prt.replace(/^had /, '')\n    t.equal(prt, participle, here + ' ' + a[0])\n  })\n  t.end()\n})\n\n\n\n"
  },
  {
    "path": "tests/three/verbs/toPresent.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-toPresent] '\n\ntest('toPresent:', function (t) {\n  const arr = [\n    // known forms:\n    ['he walked', 'he walks'],\n    ['i walked', 'i walk'],\n    ['we walked', 'we walk'],\n    ['they walked', 'they walk'],\n    ['the friends walked', 'the friends walk'],\n    ['the friend walked', 'the friend walks'],\n    ['our users walked', 'our users walk'],\n    ['our user walked', 'our user walks'],\n    ['the eye closed', 'the eye closes'],\n    ['the eyes closed', 'the eyes close'],\n\n    // copula forms\n    ['i am not cool', 'i am not cool'],\n    ['i was not cool', 'i am not cool'],\n    ['i will not be cool', 'i am not cool'],\n    ['he is not cool', 'he is not cool'],\n    ['he was not cool', 'he is not cool'],\n    ['he will not be cool', 'he is not cool'],\n    ['they are not cool', 'they are not cool'],\n    ['they were not cool', 'they are not cool'],\n    ['they will not be cool', 'they are not cool'],\n\n    ['their colloseum will open', 'their colloseum opens'],\n    ['their children will open', 'their children open'],\n\n    ['he walks', 'he walks'],\n    ['he walked', 'he walks'],\n    ['he will walk', 'he walks'],\n    ['he is walking', 'he is walking'],\n    ['he was walking', 'he is walking'],\n    ['i was walking', 'i am walking'],\n    ['we were walking', 'we are walking'],\n    ['i am walking', 'i am walking'],\n    ['he will be walking', 'he is walking'],\n    ['he really will be walking', 'he really is walking'],\n    ['he will really be walking', 'he is really walking'],\n    ['he will be really walking', 'he is really walking'],\n    //\n    // ['he has walked', 'he has walked'],\n    ['he had walked', 'he has walked'],\n    ['he will have walked', 'he has walked'],\n    ['he really will have walked', 'he really has walked'],\n    ['he will really have walked', 'he has really walked'],\n    ['he will have really walked', 'he has really walked'],\n\n    ['he has been walking', 'he has been walking'],\n    ['he had been walking', 'he has been walking'],\n    ['he will have been walking', 'he has been walking'],\n    ['he really will have been walking', 'he really has been walking'],\n    ['he will really have been walking', 'he has really been walking'],\n    ['he will have really been walking', 'he has really been walking'],\n    ['he will have been really walking', 'he has been really walking'],\n\n    ['he got walked', 'he is walked'],\n    ['we got walked', 'we are walked'],\n    ['i got walked', 'i am walked'],\n    ['he was walked', 'he is walked'],\n    ['i was walked', 'i am walked'],\n    ['soldiers were walked', 'soldiers are walked'],\n\n    ['i am being walked', 'i am being walked'],\n    ['we are being walked', 'we are being walked'],\n    ['was being walked', 'is being walked'],\n    ['had been walked', 'is being walked'],\n    // ['has been walked', 'is being walked'], //?\n    ['have been walked', 'is being walked'],\n    ['usually really walked often', 'usually really walks often'],\n    ['were walked', 'are walked'],\n    ['was being walked', 'is being walked'],\n    // // ['has been walked', 'had been walked'],\n    ['had been walked', 'is being walked'],\n    // ['will have been walked', 'has been walked'],\n    ['will be walked', 'is being walked'],\n    ['he used to walk', 'he is walking'],\n    ['he did walk', 'he does walk'],\n    ['he must walk', 'he must walk'],\n    ['he must have walked', 'he must walk'],\n    ['he could have walked', 'he could walk'],\n\n    ['would be walked', 'would be walked'],\n    ['would have been walked', 'would be walked'],\n    ['is going to walk', 'is walking'],\n    ['did walk', 'does walk'],\n    ['used to walk', 'is walking'],\n    // ['do walk', 'did walk'],\n    ['does walk', 'does walk'],\n\n    // want-infinitive\n    ['he wants to walk', 'he wants to walk'],\n    ['he wanted to walk', 'he wants to walk'],\n    ['he will want to walk', 'he wants to walk'],\n\n    //past->pres\n    ['i wrote', 'i write'],\n    ['she wrote', 'she writes'],\n    ['we wrote', 'we write'],\n    ['they wrote', 'they write'],\n    ['it wrote', 'it writes'],\n    //future->pres\n    ['i will go', 'i go'],\n    ['she will go', 'she goes'],\n    ['we will go', 'we go'],\n    ['they will go', 'they go'],\n    ['it will go', 'it goes'],\n    //past+adv->pres\n    ['i nearly slipped', 'i nearly slip'],\n    ['she nearly slipped', 'she nearly slips'],\n    ['we nearly slipped', 'we nearly slip'],\n    ['they nearly slipped', 'they nearly slip'],\n    ['it nearly slipped', 'it nearly slips'],\n    //adv+past->pres\n    ['i really learned from it', 'i really learn from it'],\n    ['he really learned from it', 'he really learns from it'],\n    ['everybody really learned from it', 'everybody really learns from it'],\n    ['someone really learned from it', 'someone really learns from it'],\n    ['eventually, i will learn from it', 'eventually, i learn from it'],\n    // neg->pres\n    // ['i did not really yell', 'i do not really yell'],\n    // ['i do not really yell', 'i do not really yell'],\n    // ['i never yell', 'i never yell'],\n    // ['i never yelled', 'i never yelled'],\n    ['i spoke quickly', 'i speak quickly'],\n    ['i do not speak quickly', 'i do not speak quickly'],\n    // ['he will never yell', 'he never yells'],\n    // ['he never yelled', 'he never yelled'],\n    ['he spoke quickly', 'he speaks quickly'],\n    ['he did not speak quickly', 'he does not speak quickly'],\n    ['we did not speak quickly', 'we do not speak quickly'],\n    ['we spoke quickly', 'we speak quickly'],\n    ['it spoke quickly', 'it speaks quickly'],\n    // copula\n    [`i am there`, 'i am there'],\n    [`i was there`, 'i am there'],\n    [`i will be there`, 'i am there'],\n    [`spencer is there`, 'spencer is there'],\n    [`spencer was there`, 'spencer is there'],\n    [`spencer will be there`, 'spencer is there'],\n    [`we are there`, 'we are there'],\n    [`we were there`, 'we are there'],\n    [`we will be there`, 'we are there'],\n    // * -> pres\n    [`i do not see it`, `i do not see it`],\n    [`i see it clearly`, `i see it clearly`],\n    [`i saw it clearly`, `i see it clearly`],\n    [`he saw it`, `he sees it`],\n    [`he saw it clearly`, `he sees it clearly`],\n    [`he sees it clearly`, `he sees it clearly`],\n    [`they see it clearly`, `they see it clearly`],\n    [`they really saw it`, `they really see it`],\n    [`he will really see it`, `he really sees it`],\n    ['toronto barely started', 'toronto barely starts'],\n    ['toronto hardly even started', 'toronto hardly even starts'],\n    // ['toronto did not even start', 'toronto does not even start'],\n    ['people will seldom start looking', 'people seldom start looking'],\n    ['people seldom started looking', 'people seldom start looking'],\n    ['he clearly did not suggest', 'he clearly does not suggest'],\n    ['they clearly did not suggest', 'they clearly do not suggest'],\n    ['the library did not provide', 'the library does not provide'],\n    // ['the library clearly will not provide', 'the library clearly does not provide'],\n    // ['this union had disrupted', 'this union has disrupted'],\n    ['john wrote everyday', 'john writes everyday'],\n    // ['spencer and john wrote everyday', 'spencer and john write everyday'],\n\n    ['there was no hope', 'there is no hope'],\n    ['there will be no hope', 'there is no hope'],\n    ['there is no hope', 'there is no hope'],\n\n    // present-perfect -> present hmm\n    // [`the yankees had gone`, `the yankees go`],\n    [`the yankees have gone`, `the yankees go`],\n    // gerund-phrase\n    [`he starts seeing`, `he starts seeing`],\n    [`he started seeing`, `he starts seeing`],\n    [`he will start seeing`, `he starts seeing`],\n    [`we start seeing`, `we start seeing`],\n    [`we started seeing`, `we start seeing`],\n    [`we will start seeing`, `we start seeing`],\n    [`we have started seeing`, `we start seeing`],\n    [`we will have started seeing`, `we start seeing`],\n\n\n    // contractions\n    // [`i'm good`, `i'm good`],\n    [`i'd go`, `i'd go`],\n    [`i've gone`, `i go`],\n    [`we've gone`, `we go`],\n    [`we've walked`, `we walk`],\n    [`he'll go`, `he goes`],\n    [`he'll walk`, `he walks`],\n    [`they've seen`, `they see`],\n    [`they were good`, 'they are good'],\n\n    // [\"has been considering a new strategy\", `Considers a new strategy`],\n    // [\"will be going to the concert tonight\", `Goes to the concert`],\n    // [\"was just making a cup of coffee\", `Makes a cup of coffee`],\n    // [\"must have forgotten the appointment\", `Forgets the appointment`],\n    // [\"can jump higher than anyone else\", `Jumps higher than anyone else`],\n    // [\"could have been mistaken about the time\", `Mistakes the time`],\n    // [\"would be flying to Paris next month\", `Flies to Paris`],\n    // [\"should have started the project earlier\", `Starts the project`],\n    // [\"is planning to visit the museum\", `Plans to visit the museum`],\n    // [\"has been dreaming about a vacation\", `Dreams about a vacation`],\n    // [\"might be moving to a different city\", `Moves to a different city`],\n    // [\"was reading a fascinating book\", `Reads a fascinating book`],\n    // [\"could play the guitar beautifully\", `Plays the guitar beautifully`],\n    // [\"will have finished the report by tomorrow\", `Finishes the report`],\n    // [\"has been working out regularly\", `Works out regularly`],\n    // [\"was going to call you later\", `Calls you later`],\n    // [\"might have left the keys in the car\", `Leaves the keys in the car`],\n    // [\"is starting to understand the concept\", `Starts to understand the concept`],\n    // [\"should be doing the homework now\", `Does the homework`],\n    // [\"would have been upset if you didn't show up\", `Gets upset if you don't show up`],\n    // [\"has been trying to quit smoking\", `Tries to quit smoking`],\n    // [\"can't wait to see the new movie\", `Can't wait to see the new movie`],\n    // [\"were hoping for a positive outcome\", `Hopes for a positive outcome`],\n    // [\"could have told me the truth\", `Tells me the truth`],\n    // [\"wouldn't dare to break the rules\", `Doesn't dare to break the rules`],\n    // [\"is looking forward to the trip\", `Looks forward to the trip`],\n    // [\"should be resting after the surgery\", `Rests after the surgery`],\n    // [\"might be studying for the exam\", `Studies for the exam`],\n    // [\"have been meaning to call you\", `Means to call you`],\n    // [\"was wondering about the results\", `Wonders about the results`],\n    // [\"will be arriving in an hour\", `Arrives in an hour`],\n    // [\"was just thinking about you\", `Thinks about you`],\n    // [\"might have been practicing all day\", `Practices all day`],\n    // [\"was just about to leave\", `Is about to leave`],\n    // [\"should have been more careful\", `Is more careful`],\n    // [\"would be going to the gym regularly\", `Goes to the gym regularly`],\n    // [\"has been waiting for a long time\", `Waits for a long time`],\n    // [\"could have been wrong about him\", `Is wrong about him`],\n    // [\"would have enjoyed the party\", `Enjoys the party`],\n    // [\"will have completed the task soon\", `Completes the task soon`],\n    // [\"might have been feeling lonely\", `Feels lonely`],\n    // [\"could have been living a lie\", `Lives a lie`],\n    // [\"was just starting to get the hang of it\", `Starts to get the hang of it`],\n    // [\"would be celebrating her birthday tomorrow\", `Celebrates her birthday`],\n    // [\"has been missing you a lot\", `Misses you a lot`],\n    // [\"will be working late tonight\", `Works late tonight`],\n    // [\"should have taken the opportunity\", `Takes the opportunity`],\n    // [\"could have been sleeping\", `Sleeps`],\n    // [\"is trying to lose weight\", `Tries to lose weight`],\n    // [\"has been feeling unwell\", `Feels unwell`],\n    // [`they're good`, 'they were good'],\n    //TODO: missing auxillary\n    // [`we've said`, 'we said'], //or 'we have said'\n    // [`they'd said`, 'they said'], //or 'they have said'\n    // (ambiguous)\n    // [`he's good`, 'he was good'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    doc.verbs().toPresentTense()\n    t.equal(doc.text(), a[1], here + ' ' + a[0])\n  })\n  t.end()\n})\n\ntest('conjugate:', function (t) {\n  const arr = [\n\n    ['abolish', 'abolishes'],\n    ['absorb', 'absorbs'],\n    ['accede', 'accedes'],\n    ['acclimate', 'acclimates'],\n    ['accomplish', 'accomplishes'],\n    ['accost', 'accosts'],\n    ['accrue', 'accrues'],\n    ['accumulate', 'accumulates'],\n    ['accustom', 'accustoms'],\n    ['activate', 'activates'],\n    ['adapt', 'adapts'],\n    ['agree', 'agrees'],\n    ['aim', 'aims'],\n    ['allow', 'allows'],\n    ['alter', 'alters'],\n    ['altercate', 'altercates'],\n    ['amaze', 'amazes'],\n    ['amend', 'amends'],\n    ['amuse', 'amuses'],\n    ['analyze', 'analyzes'],\n    ['animate', 'animates'],\n    ['annotate', 'annotates'],\n    ['announce', 'announces'],\n    ['appreciate', 'appreciates'],\n    ['apprehend', 'apprehends'],\n    ['ask', 'asks'],\n    ['assimilate', 'assimilates'],\n    ['attack', 'attacks'],\n    ['bake', 'bakes'],\n    ['bang', 'bangs'],\n    ['bank', 'banks'],\n    ['bargain', 'bargains'],\n    ['bat', 'bats'],\n    ['begin', 'begins'],\n    ['belittle', 'belittles'],\n    ['belong', 'belongs'],\n    ['bend', 'bends'],\n    ['betray', 'betrays'],\n    ['bleed', 'bleeds'],\n    ['blink', 'blinks'],\n    ['boil', 'boils'],\n    ['bounce', 'bounces'],\n    ['break', 'breaks'],\n    ['breathe', 'breathes'],\n    ['bury', 'buries'],\n    ['capture', 'captures'],\n    ['carry', 'carries'],\n    ['castigate', 'castigates'],\n    ['catalog', 'catalogs'],\n    ['catch', 'catches'],\n    ['celebrate', 'celebrates'],\n    ['chase', 'chases'],\n    ['cheat', 'cheats'],\n    ['chew', 'chews'],\n    ['circumvent', 'circumvents'],\n    ['clap', 'claps'],\n    ['clarify', 'clarifies'],\n    ['collect', 'collects'],\n    ['commute', 'commutes'],\n    ['conclude', 'concludes'],\n    ['conform', 'conforms'],\n    ['conquer', 'conquers'],\n    ['consider', 'considers'],\n    ['construct', 'constructs'],\n    ['contain', 'contains'],\n    ['contemplate', 'contemplates'],\n    ['cooperate', 'cooperates'],\n    ['create', 'creates'],\n    ['cry', 'cries'],\n    ['culpabilize', 'culpabilizes'],\n    ['cultivate', 'cultivates'],\n    ['cut', 'cuts'],\n    ['defend', 'defends'],\n    ['defy', 'defies'],\n    ['deplore', 'deplores'],\n    ['depose', 'deposes'],\n    ['descend', 'descends'],\n    ['design', 'designs'],\n    ['detect', 'detects'],\n    ['diminish', 'diminishes'],\n    ['discern', 'discerns'],\n    ['discuss', 'discusses'],\n    ['dissolve', 'dissolves'],\n    ['divide', 'divides'],\n    ['drag', 'drags'],\n    ['drain', 'drains'],\n    ['draw', 'draws'],\n    ['drum', 'drums'],\n    ['embark', 'embarks'],\n    ['embrace', 'embraces'],\n    ['encircle', 'encircles'],\n    ['endure', 'endures'],\n    ['enforce', 'enforces'],\n    ['enhance', 'enhances'],\n    ['enjoy', 'enjoys'],\n    ['enrich', 'enriches'],\n    ['enter', 'enters'],\n    ['establish', 'establishes'],\n    ['exalt', 'exalts'],\n    ['exchange', 'exchanges'],\n    ['exclude', 'excludes'],\n    ['exert', 'exerts'],\n    ['exhort', 'exhorts'],\n    ['expect', 'expects'],\n    ['expel', 'expels'],\n    ['explain', 'explains'],\n    ['explode', 'explodes'],\n    ['extol', 'extols'],\n    ['extrapolate', 'extrapolates'],\n    ['exude', 'exudes'],\n    ['fabricate', 'fabricates'],\n    ['file', 'files'],\n    ['fix', 'fixes'],\n    ['float', 'floats'],\n    ['flood', 'floods'],\n    ['flow', 'flows'],\n    ['follow', 'follows'],\n    ['forsake', 'forsakes'],\n    ['frighten', 'frightens'],\n    ['fry', 'fries'],\n    ['function', 'functions'],\n    ['fund', 'funds'],\n    ['generate', 'generates'],\n    ['glimmer', 'glimmers'],\n    ['glorify', 'glorifies'],\n    ['glow', 'glows'],\n    ['greet', 'greets'],\n    ['grip', 'grips'],\n    ['guarantee', 'guarantees'],\n    ['guide', 'guides'],\n    ['harangue', 'harangues'],\n    ['harvest', 'harvests'],\n    ['hatch', 'hatches'],\n    ['hibernate', 'hibernates'],\n    ['hide', 'hides'],\n    ['hint', 'hints'],\n    ['howl', 'howls'],\n    ['hurry', 'hurries'],\n    ['illuminate', 'illuminates'],\n    ['immigrate', 'immigrates'],\n    ['impinge', 'impinges'],\n    ['impress', 'impresses'],\n    ['inculcate', 'inculcates'],\n    ['indemnify', 'indemnifies'],\n    ['inhale', 'inhales'],\n    ['inhibit', 'inhibits'],\n    ['insinuate', 'insinuates'],\n    ['inspire', 'inspires'],\n    ['insulate', 'insulates'],\n    ['integrate', 'integrates'],\n    ['interrupt', 'interrupts'],\n    ['invade', 'invades'],\n    ['invert', 'inverts'],\n    ['invest', 'invests'],\n    ['invite', 'invites'],\n    ['joke', 'jokes'],\n    ['jump', 'jumps'],\n    ['justify', 'justifies'],\n    ['knit', 'knits'],\n    ['learn', 'learns'],\n    ['leave', 'leaves'],\n    ['liberalize', 'liberalizes'],\n    ['lie', 'lies'],\n    ['load', 'loads'],\n    ['loosen', 'loosens'],\n    ['love', 'loves'],\n    ['magnify', 'magnifies'],\n    ['march', 'marches'],\n    ['mark', 'marks'],\n    ['melt', 'melts'],\n    ['migrate', 'migrates'],\n    ['mobilize', 'mobilizes'],\n    ['modify', 'modifies'],\n    ['mourn', 'mourns'],\n    ['negotiate', 'negotiates'],\n    ['neutralize', 'neutralizes'],\n    ['omit', 'omits'],\n    ['operate', 'operates'],\n    ['organize', 'organizes'],\n    ['ostracize', 'ostracizes'],\n    ['overcome', 'overcomes'],\n    ['participate', 'participates'],\n    ['paste', 'pastes'],\n    ['peg', 'pegs'],\n    ['pictorialize', 'pictorializes'],\n    ['play', 'plays'],\n    ['plug', 'plugs'],\n    ['praise', 'praises'],\n    ['pray', 'prays'],\n    ['preserve', 'preserves'],\n    ['proclaim', 'proclaims'],\n    ['produce', 'produces'],\n    ['prolong', 'prolongs'],\n    ['propagate', 'propagates'],\n    ['propitiate', 'propitiates'],\n    ['provide', 'provides'],\n    ['pull', 'pulls'],\n    ['puncture', 'punctures'],\n    ['purify', 'purifies'],\n    ['quench', 'quenches'],\n    ['quest', 'quests'],\n    ['quiver', 'quivers'],\n    ['rain', 'rains'],\n    ['ratify', 'ratifies'],\n    ['recall', 'recalls'],\n    ['receive', 'receives'],\n    ['recite', 'recites'],\n    ['refine', 'refines'],\n    ['refresh', 'refreshes'],\n    ['refuse', 'refuses'],\n    ['regret', 'regrets'],\n    ['regulate', 'regulates'],\n    ['reject', 'rejects'],\n    ['repair', 'repairs'],\n    ['reply', 'replies'],\n    ['reside', 'resides'],\n    ['resist', 'resists'],\n    ['revere', 'reveres'],\n    ['revive', 'revives'],\n    ['revolutionize', 'revolutionizes'],\n    ['roam', 'roams'],\n    ['roar', 'roars'],\n    ['roll', 'rolls'],\n    ['ruin', 'ruins'],\n    ['sacrifice', 'sacrifices'],\n    ['sacrifices', 'sacrifices'],\n    ['saturate', 'saturates'],\n    ['scale', 'scales'],\n    ['schedule', 'schedules'],\n    ['scribble', 'scribbles'],\n    ['scrutinize', 'scrutinizes'],\n    ['sense', 'senses'],\n    ['serve', 'serves'],\n    ['sew', 'sews'],\n    ['shine', 'shines'],\n    ['signal', 'signals'],\n    ['sing', 'sings'],\n    ['slip', 'slips'],\n    ['smash', 'smashes'],\n    ['smell', 'smells'],\n    ['snatch', 'snatches'],\n    ['soar', 'soars'],\n    ['sparkle', 'sparkles'],\n    ['stalk', 'stalks'],\n    ['start', 'starts'],\n    ['stay', 'stays'],\n    ['stifle', 'stifles'],\n    ['stir', 'stirs'],\n    ['strain', 'strains'],\n    ['strive', 'strives'],\n    ['submerge', 'submerges'],\n    ['succeed', 'succeeds'],\n    ['summarize', 'summarizes'],\n    ['swear', 'swears'],\n    ['swim', 'swims'],\n    ['take', 'takes'],\n    ['teach', 'teaches'],\n    ['tear', 'tears'],\n    ['throw', 'throws'],\n    ['thrust', 'thrusts'],\n    ['trace', 'traces'],\n    ['trade', 'trades'],\n    ['treat', 'treats'],\n    ['tumble', 'tumbles'],\n    ['unite', 'unites'],\n    ['unravel', 'unravels'],\n    ['update', 'updates'],\n    ['uplift', 'uplifts'],\n    ['urge', 'urges'],\n    ['utilize', 'utilizes'],\n    ['waste', 'wastes'],\n    ['weave', 'weaves'],\n    ['whirl', 'whirls'],\n    ['whisper', 'whispers'],\n    ['whistle', 'whistles'],\n    ['wish', 'wishes'],\n    ['work', 'works'],\n    ['worship', 'worships'],\n    ['yield', 'yields'],\n    ['exempt', 'exempts'],\n    ['replicate', 'replicates'],\n    // ['express', 'expresses'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0]).tag('Verb')\n    const res = doc.verbs().conjugate()[0] || {}\n    t.equal(res.PresentTense, a[1], here + ' ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/verb-find.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-find] '\n\ntest('verb-splitter:', function (t) {\n  const arr = [\n    [`poodles like being pampered`, ['like', 'being pampered']],\n    [`i can help fix the tire`, ['can help', 'fix']],\n    [`i will help out the team`, ['will help out']],\n    [`we breifly studied up on the theory`, ['breifly studied up']],\n    [`we studied breifly up in the lobby`, ['studied breifly']],\n    [`it waxed and waned`, ['waxed', 'waned']],\n    [`he ran, swam, and biked`, ['ran,', 'swam,', 'biked']],\n    // [`he ran to get it`, ['ran to get']],\n    [`he should have earned or valued it by now`, ['should have earned', 'valued']],\n    [`he should not have shown such skill`, ['should not have shown']],\n    [`walk faster`, ['walk']],\n    [`he professes love`, ['professes']],\n    [`we go eat`, ['go eat']],\n    [`we will go eat`, ['will go eat']],\n    [`we will walk and eat`, ['will walk', 'eat']],\n    [`when the rain pours, come have a drink`, ['pours,', 'come have']],\n    // [ `poodles like to be pampered`,  verbs: ['like', 'be pampered'] ] \n    // pastTense-pastTense\n    [`i have been told`, ['have been told']],\n    [`Everyone he met told him`, ['met', 'told']],\n    [`Everyone he met had told him`, ['met', 'had told']],\n    [`Particularly sought was information`, ['Particularly sought', 'was']],\n    [`The one he invented was expensive`, ['invented', 'was']],\n    // [`fans that are blowing feel amazing`, ['are blowing', 'feel amazing']],\n    [`fans that were blowing felt amazing`, ['were blowing', 'felt']],\n    // [`recognizing written language`, ['recognizing']],\n    [`I'm getting written up`, ['getting written up']],\n\n    // -- verb [to] verb --\n    // [`while being rocked to sleep`, ['being rocked to sleep']],\n    // [`whilst being rocked to permit even roasting`, ['being rocked', 'permit', 'even roasting']],\n    // [`I got to feeling like Superman`, ['got to feeling']],\n    // [` I look forward to coming to your city`, ['look forward to coming']],\n    [`he would not stop asking questions`, ['would not stop asking']],\n    [`he was pissed off for having to wait`, ['was', 'having to wait']],\n    [`so I'm not going to walk a mile`, ['not going to walk']],\n    // [`Some refused to leave`, ['refused to leave']],\n    // [`you mean to do it`, ['mean to do']],\n    [`They used to wander around here`, ['used to wander around']],\n    // [`it continues to function as a phone`, ['continues to function']],\n    // [`i am fully expecting to find the piece of rubber`, ['am fully expecting to find']],\n    // [`the kids are not to be allowed to swim`, ['']],\n    // [`We have got to do better`, ['have got to do']],\n    // [`trying to get loose`, ['']],\n    // [` I did not seem to mind`, ['did not seem to mind']],\n    // [``, ['']],\n  ]\n  arr.forEach(a => {\n    const [str, vbs] = a\n    const verbs = nlp(str).verbs().out('array')\n    t.deepEqual(verbs, vbs, here + str)\n  })\n  t.end()\n})\n\n//dont take it too-far\ntest('verb-greedy:', function (t) {\n  let arr = nlp('he would be, had he survived').verbs().json()\n  t.equal(arr.length, 2, here + 'split-on-clause')\n\n  arr = nlp('we walked, talked, and sang').verbs().json()\n  t.equal(arr.length, 3, here + 'split-on-list')\n\n  arr = nlp('we walked, talked, and quickly sang').verbs().json()\n  t.equal(arr.length, 3, here + 'split-on-list2')\n\n  arr = nlp('we suddenly walked, talked, and abruptly sang').verbs().json()\n  t.equal(arr.length, 3, here + 'split-on-list3')\n\n  arr = nlp('we really').verbs().json()\n  t.equal(arr.length, 0, here + 'adverb-isnt-a-verb')\n\n  arr = nlp('we really really').verbs().json()\n  t.equal(arr.length, 0, here + 'two-adverbs-isnt-a-verb')\n\n  arr = nlp('not good').verbs().json()\n  t.equal(arr.length, 0, here + 'not-isnt-a-verb')\n\n  let str = nlp('we must not').verbs().out('normal')\n  t.equal(str, 'must not', here + 'verb-not')\n\n  str = nlp('we must really').verbs().out('normal')\n  t.equal(str, 'must really', here + 'verb-adverb')\n\n  str = nlp('we must really not').verbs().out('normal')\n  t.equal(str, 'must really not', here + 'verb-adverb-not')\n\n  str = nlp('the skill you can sell is your knowledge').verbs().eq(0).out('normal')\n  t.equal(str, 'can sell', here + 'can sell is')\n\n  str = nlp('what you can sell will be').verbs().eq(0).out('normal')\n  t.equal(str, 'can sell', here + 'can sell will be')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/verb-forms.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-forms] '\n\ntest('verb form names', function (t) {\n  const forms = {\n    // simple\n    'simple-present': [\n      'we walk home.',\n      'she walks home', //Simple present tense\n      'they really walk home.',\n      'they walk quickly home.',\n      'they really walk quickly home.',\n    ],\n    'simple-past': [\n      'Peter lived in China in 1961.',\n      'we skated on the ice', //Simple past tense\n    ],\n    'simple-future': [\n      'They will go to Denmark next week.',\n      'we will sing', //Simple future tense\n    ],\n\n    // progressive\n    'present-progressive': [\n      'They are walking home.',\n      'i am walking quickly',\n      'and then we are walking', //Present continuous tense\n    ],\n    'past-progressive': [\n      'I was reading when she arrived.',\n      'we were walking', //Past continuous tense\n    ],\n    'future-progressive': [\n      'I will be travelling by coach.',\n      'we will be walking', //Future continuous tense\n    ],\n\n    // perfect\n    'present-perfect': [\n      'I have lived here since 1982.',\n      'we have learned a lot', //Present perfect tense\n    ],\n    'past-perfect': [\n      'We had been to see her several times.',\n      'he had walked', //Past perfect\n    ],\n    'future-perfect': [\n      'We will have arrived in the States by then.',\n      'i will have walked', //Future perfect\n    ],\n\n    // combo\n    'present-perfect-progressive': [\n      'I have been living here for years.',\n      'we have been walking', //Present perfect continuous\n    ],\n    'past-perfect-progressive': [\n      'He had been watching her for some time.',\n      'we had been walking', //Past perfect continuous\n    ],\n    'future-perfect-progressive': [\n      'By the end of the year, you will have been studying for ten years.',\n      'we will have been walking', //Future perfect continuous\n    ],\n\n    // passive\n    'passive-present': [\n      'thousands of people are killed on our roads.',\n      'Our planet is wrapped in a mass of gases.',\n      'Waste materials are disposed of',\n      'The house is cleaned every day.', // simple present\n      'The house has been cleaned since you left.', // Present perfect\n      'My car has been stolen!',\n      'The house is being cleaned at the moment.', // Present continuous\n    ],\n    'passive-past': [\n      'a window had been left open.',\n      'a plate had been broken.',\n      'a plate had been smashed.',\n      'My car had been stolen!',\n      'All the cookies have been eaten.',\n      'The movie ET was directed by Spielberg.',\n      'The house was cleaned yesterday.', // Simple past\n      'The house was being cleaned last week.', // Past continuous\n      'The house had been cleaned before they arrived.', // Past perfect\n    ],\n    'passive-future': [\n      'The house will be being cleaned tomorrow.', // Future continuous\n      'The house will be cleaned next week.', // Future\n      'he will be watched',\n      'The house will have been cleaned by then.', // Future conditional\n    ],\n\n    // conditional\n    'present-conditional': [\n      'The house would be cleaned by then.', // Present conditional\n      'we would be looked at',\n    ],\n    'past-conditional': [\n      'The house would have been cleaned.', // Past conditional\n      'the dog would have been walked',\n      'we would have been seen',\n    ],\n    'auxiliary-future': [\n      // 'he is going to walk', //\n      // 'we are going to walk',\n    ],\n    'auxiliary-past': [\n      'he did walk', //\n      'we used to walk',\n    ],\n    'auxiliary-present': [\n      'we do walk', //\n      'he does walk',\n    ],\n\n    // missing\n    //  'has been elected',\n    //  'would have been elected',\n    //  'was elected',\n    //  'are elected',\n    //  'is elected',\n    //  'did elect',\n  }\n  Object.keys(forms).forEach(form => {\n    forms[form].forEach(str => {\n      const doc = nlp(str)\n      const json = doc.verbs().json()[0] || { verb: {} }\n      const grammar = json.verb.grammar || {}\n      t.equal(grammar.form, form, here + `''${str}`)\n    })\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/three/verbs/verb-root.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[three/verb-root] '\n\ntest('verb-root', function (t) {\n  const arr = [\n    ['beg', 'He begged his parents for a new toy.'],\n    ['beg', 'She begged her boss for a raise.'],\n    ['bow', 'She bowed to the queen with respect.'],\n    ['bow', 'He bowed his head in prayer.'],\n    ['bow', 'They bowed to the audience after their performance.'],\n    ['bow', 'The gymnast bowed gracefully at the end of her routine.'],\n    ['chew', 'He chewed the gum with a loud smacking sound.'],\n    ['chew', 'She chewed on her pencil while thinking.'],\n    ['clap', 'The audience clapped loudly after the performance.'],\n    ['clap', 'She clapped her hands in excitement.'],\n    ['clap', 'The children clapped along to the song.'],\n    ['clap', 'He clapped his friend on the back as a sign of congratulations.'],\n    ['court', 'He courted her with flowers and chocolates.'],\n    ['court', 'She courted controversy with her outspoken comments.'],\n    ['court', 'He courted disaster by not following safety guidelines.'],\n    ['flap', 'The bird flapped its wings and flew away.'],\n    ['flap', 'She flapped the rug to remove the dust.'],\n    ['flap', 'He flapped the newspaper to catch the attention.'],\n    ['flap', 'The flag flapped in the wind.'],\n    ['jam', 'We jammed together and improvised some great melodies.'],\n    ['jam', 'They jammed in the basement until late into the night.'],\n    ['model', 'The architect is modeling the new building in a computer software.'],\n    ['murmur', 'She murmured a soft \\'thank you\\' to him.'],\n    ['murmur', 'The wind murmured through the trees.'],\n    ['murmur', 'He murmured an apology and left the room.'],\n    ['murmur', 'The crowd murmured in anticipation of the show.'],\n    ['oil', 'She oiled the pan before cooking to prevent sticking.'],\n    ['oil', 'The mechanic oiled the car engine to ensure its proper functioning.'],\n    ['scar', 'The accident scarred her face for life.'],\n    ['scar', 'His childhood trauma scarred him emotionally.'],\n    ['scar', 'The war has scarred the country\\'s landscape.'],\n    ['slap', 'He slapped his friend on the back.'],\n    ['slap', 'She slapped the mosquito on her arm.'],\n    ['slap', 'The teacher slapped the ruler on the desk.'],\n    ['slap', 'The man slapped his own face in frustration.'],\n    ['snap', 'She snapped the pencil in half.'],\n    ['snap', 'He snapped his fingers to get attention.'],\n    ['snap', 'The dog snapped at the mailman.'],\n    ['snap', 'She snapped a photo of the sunset.'],\n    ['sway', 'The boat swayed from side to side in the rough sea.'],\n    ['trot', 'She trotted down the street with her dog.'],\n    ['trot', 'He trotted over to the table to grab a snack.'],\n    ['trot', 'The children trotted hand in hand through the park.'],\n    ['wink', 'She winked at me from across the room.'],\n    ['wink', 'He winked and gave me a sly smile.'],\n    ['yell', 'He yelled for help when he saw the fire.'],\n    ['yell', 'She angrily yelled at him for the mistake.'],\n  ]\n\n  arr.forEach(a => {\n    const [word, str] = a\n    const doc = nlp(str)\n    t.equal(doc.has(`{${word}/verb}`), true, here + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/_backlog.js",
    "content": "export default [\n  [\n    'Doug has been providing us with the necessary specific market information.',\n    'NNP, VBZ, VBN, VBG, PRP, IN, DT, JJ, JJ, NN, NN',\n  ],\n  [\"Are you saying I'm bad in bed?\", 'VBP, PRP, VBG, PRP, VBP, JJ, IN, NN'],\n  [\n    'They are keeping a close watch on the yield on the S&P 500.',\n    'PRP, VBP, VBG, DT, JJ, NN, IN, DT, NN, IN, DT, NNP, CD',\n  ],\n  ['The plants provide shade and root strength for bank stability.', 'DT, NNS, VBP, NN, CC, NN, NN, IN, NN, NN'],\n  ['This place is a Rip-Off', 'DT, NN, VBZ, DT, NN, NN'],\n  [\n    'Does it make sense for us to set up a meeting with you participating from Buenos Aires?',\n    'VBZ, PRP, VB, NN, IN, PRP, TO, VB, RP, DT, NN, IN, PRP, VBG, IN, NNP, NNP',\n  ],\n  [\n    'Two other Dulaim leaders have been killed in the past week and a half.',\n    'CD, JJ, NNP, NNS, VBP, VBN, VBN, IN, DT, JJ, NN, CC, DT, NN',\n  ],\n  ['This call will smoke!', 'DT, NN, MD, VB'],\n  ['it is fucked up', 'is #Adjective #Adjective'],\n]\n"
  },
  {
    "path": "tests/two/_lib.js",
    "content": "/* eslint-disable no-console */\nimport build from '../../builds/two/compromise-two.mjs'\nimport src from '../../src/two.js'\nlet nlp = src\nif (process.env.TESTENV === 'prod') {\n  console.warn('== production build test 🚀 ==')\n  nlp = build\n}\nexport default nlp\n"
  },
  {
    "path": "tests/two/contractions/contract.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/contract] '\n\ntest('contract basic', function (t) {\n  let r = nlp(`he is cool.`)\n  r.contract()\n  t.equal(r.out('text'), `he's cool.`, here + 'expanded-contract')\n\n  r = nlp(`he's cool.`)\n  r.contract()\n  t.equal(r.out('text'), `he's cool.`, here + 'contracted-contract')\n\n  r = nlp(`please do not eat the marshmellow`)\n  r.contract()\n  t.equal(r.out('text'), `please don't eat the marshmellow`, here + 'expanded-contract')\n\n  r = nlp(`please don't eat the marshmellow`)\n  r.contract()\n  t.equal(r.out('text'), `please don't eat the marshmellow`, here + 'contracted-contract')\n\n  r = nlp(`i have stood`)\n  r.contract()\n  t.equal(r.out('text'), `i've stood`, here + 'expanded-contract')\n\n  r = nlp(`i've stood`)\n  r.contract()\n  t.equal(r.out('text'), `i've stood`, here + 'contracted-contract')\n\n  r = nlp('i am good')\n  r.contract()\n  t.equal(r.out('text'), `i'm good`, here + 'contract-1')\n  r.contractions().expand()\n  t.equal(r.out('text'), `i am good`, here + 'expand-2')\n  r.contract()\n  t.equal(r.out('text'), `i'm good`, here + 'contract-2')\n\n  r.contractions().contract().contract().contract()\n  t.equal(r.out('text'), `i'm good`, here + 'contract-n')\n\n  t.end()\n})\n\ntest('avoid contraction messes', function (t) {\n  let doc = nlp('Tony, is').contract()\n  t.equal(doc.has('is'), true, here + 'avoid-contraction 1')\n\n  doc = nlp('(Tony) is').contract()\n  t.equal(doc.has('is'), true, here + 'avoid-contraction 2')\n\n  doc = nlp(`'Tony' is`).contract()\n  t.equal(doc.has('is'), true, here + 'avoid-contraction 3')\n\n  doc = nlp('Tony-is').contract()\n  t.equal(doc.has('is'), true, here + 'avoid-contraction 4')\n  const str = `Tony\nis`\n  doc = nlp(str).contract()\n  t.equal(doc.has('is'), true, here + 'avoid-contraction 5')\n\n  t.end()\n})\n\ntest('multiple contraction in sentence', function (t) {\n  let doc = nlp(`he's foo she's`)\n  t.equal(doc.terms().length, 5, here + 'multi-contraction-count')\n  t.equal(doc.has('he is foo she is'), true, here + 'multi-contraction-order')\n\n  doc = nlp(`he's she's`)\n  t.equal(doc.terms().length, 4, here + 'multi-contraction-count-2')\n  t.equal(doc.has('he is she is'), true, here + 'multi-contraction-order-2')\n\n  doc = nlp(`he's dead, he's dead`)\n  t.equal(doc.match('he is dead').length, 2, here + 'multi-contraction-count')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/contractions/contraction-match.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst h = '[two/contraction-match] '\n\ntest('half-contraction', function (t) {\n  const doc = nlp(`before gonna after`)\n\n  let found = doc.has('gonna')\n  t.equal(found, true, h + 'full-text')\n\n  found = doc.has('going to')\n  t.equal(found, true, h + 'both words')\n\n  found = doc.has('before going')\n  t.equal(found, true, h + 'first half')\n\n  found = doc.has('to after')\n  t.equal(found, true, h + 'second half')\n\n  t.end()\n})\n\n\ntest('partial-contraction', function (t) {\n  const doc = nlp(`we've walked`)\n  let m = doc.match('we')\n  t.equal(m.text('implicit'), 'we', h + 'one-half')\n\n  m = doc.match('we\\'ve')\n  t.equal(m.text('implicit'), 'we have', h + 'both-halves')\n\n  m = doc.match('we have')\n  t.equal(m.text('implicit'), 'we have', h + 'two-halves')\n\n  m = doc.match('have')\n  t.equal(m.text('implicit'), 'have', h + 'second-half')\n\n  m = doc.match('have walked')\n  t.equal(m.text('implicit'), 'have walked', h + 'second-half+')\n\n  m = doc.match('we\\'ve walked')\n  t.equal(m.text('implicit'), 'we have walked', h + 'both-halves+')\n\n  m = doc.match('we walked')\n  t.equal(m.text('implicit'), '', h + 'no-halves+')\n\n  m = doc.match('we{2} have')\n  t.equal(m.text('implicit'), '', h + 'invalid-first')\n\n  m = doc.match('we* walked')\n  t.equal(m.text('implicit'), '', h + 'invalid-greedy')\n\n  m = doc.match('we+? walked')\n  t.equal(m.text('implicit'), 'walked', h + 'half-but-optional')\n\n  t.end()\n})\n\n\ntest('contraction-skip', function (t) {\n  const str = `We've matched`\n  const doc = nlp(str)\n\n  let m = doc.match(`we have matched`)\n  t.equal(m.text(), str, h + 'both-words')\n\n  m = doc.match(`we've matched`)\n  t.equal(m.text(), str, h + 'contraction match')\n\n  m = doc.match(`(we|i) have matched`)\n  t.equal(m.text(), str, h + 'optional start')\n\n  m = doc.match(`we (have|foo) matched`)\n  t.equal(m.text(), str, h + 'optional end')\n\n  m = doc.match(`. have matched`)\n  t.equal(m.text(), str, h + 'dot start')\n\n  m = doc.match(`we . matched`)\n  t.equal(m.text(), str, h + 'dot end')\n\n  m = doc.match(`@hasContraction matched`)\n  t.equal(m.text(), str, h + '@hasContraction')\n\n  t.end()\n})\n\n\ntest('contraction-no-skip', function (t) {\n  const doc = nlp(`We won't match`)\n  let m = doc.match(`we will match`)\n  t.equal(m.found, false, h + 'half-contraction')\n\n  m = doc.match(`we (will|shall) match`)\n  t.equal(m.found, false, h + 'half-contraction fast-or')\n\n  m = doc.match(`we (will|foo bar) match`)\n  t.equal(m.found, false, h + 'half-contraction slow-or')\n\n  m = doc.match(`we will? match`)\n  t.equal(m.found, false, h + 'half-contraction optional')\n\n  m = doc.match(`we will+ match`)\n  t.equal(m.found, false, h + 'half-contraction greedy')\n  t.end()\n})\n\ntest('multiple-contractions', function (t) {\n  let doc = nlp(`everybody's creating, and they're going`)\n  t.ok(doc.has('everybody is') && doc.has('they are'), `everybody's + they're`)\n\n  doc = nlp(`spencer's walking to the store and she's mad`)\n  t.ok(doc.has('spencer is') && doc.has('she is'), `spencer's + she's`)\n\n  doc = nlp(`Somebody's going to see`)\n  t.equal(doc.has('somebody is'), true, `Somebody's going`)\n\n  doc = nlp(`Somebody's hat`)\n  t.equal(doc.has('somebody is'), false, `Somebody's hat`)\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/contractions/contraction.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/contraction] '\n\ntest('tricky contractions', function (t) {\n  let doc = nlp(`I’m `)\n  doc.contractions().expand()\n  t.equal(doc.text(), 'I am ', here + \"i'm\")\n\n  doc = nlp(` i can’t `)\n  doc.contractions().expand()\n  t.equal(doc.text(), ' i can not ', here + \"i can't\")\n\n  doc = nlp(`spencer’s clean`)\n  doc.contractions().expand()\n  t.equal(doc.text(), 'spencer is clean', here + \"spencer's\")\n\n  doc = nlp(`wouldn’t be good`)\n  doc.contractions().expand()\n  t.equal(doc.text(), 'would not be good', here + 'wouldnt')\n\n  doc = nlp(`what’d you see`)\n  doc.contractions().expand()\n  t.equal(doc.text(), 'what did you see', here + 'whatd')\n\n  doc = nlp(`spencer’d go see`)\n  doc.contractions().expand()\n  t.equal(doc.text(), 'spencer would go see', here + 'spencerd')\n\n  doc = nlp(`I ain't gettin' picked last`)\n  doc.contractions().expand()\n  t.equal(doc.text(), 'I am not gettin\\' picked last', here + 'aint')\n\n  t.end()\n})\n\ntest('contractions v possessive', function (t) {\n  let doc = nlp(\"spencer's not cool\")\n  doc.contractions().expand()\n  t.equal(doc.text(), 'spencer is not cool', 'adj contraction')\n\n  doc = nlp(\"spencer's walk\")\n  doc.contractions().expand()\n  t.equal(doc.text(), \"spencer's walk\", 'noun not contraction')\n\n  doc = nlp(\"spencer's runs\")\n  doc.contractions().expand()\n  t.equal(doc.text(), \"spencer's runs\", 'present-tense not contraction')\n  t.end()\n})\n\ntest('match contractions/possessives', function (t) {\n  const doc = nlp(`i think it's spencer's`)\n  t.equal(doc.has('it'), true, here + 'has it')\n  t.equal(doc.has('spencer'), true, here + 'has spencer')\n  t.equal(doc.has(`spencer's`), true, here + \"has spencer's\")\n  t.equal(doc.has(`i'm`), false, here + 'not false-positive')\n  t.equal(doc.has(`it'll`), false, here + 'not false-positive-2')\n  t.end()\n})\n\ntest('contraction whitespace', function (t) {\n  let doc = nlp(`i didn't know.`)\n  t.equal(doc.text(), `i didn't know.`, here + 'init-whitespace')\n\n  doc.contractions().expand()\n  t.equal(doc.text(), `i did not know.`, here + 'expanded-whitespace')\n\n  doc = nlp(`i didn't.`)\n  t.equal(doc.text(), `i didn't.`, here + 'init-period')\n\n  doc.contractions().expand()\n  t.equal(doc.text(), `i did not.`, here + 'expanded-period')\n\n  t.end()\n})\n\ntest('number-range', function (t) {\n  let doc = nlp(`between 5-7.`)\n  t.equal(doc.has('5 to 7'), true, here + 'range-preposition-match')\n  t.equal(doc.has('#NumberRange'), true, here + 'has NumberRange tag')\n  t.equal(doc.has('#Value'), true, here + 'has Value tag')\n\n  let arr = nlp('1-2').contractions().expand().match('#Value').out('array')\n  t.equal(arr.length, 2, here + 'found numbers')\n\n  doc = nlp('20th-21st')\n  t.equal(doc.has('#NumberRange'), true, 'ordinal has NumberRange tag')\n  t.equal(doc.has('#Ordinal'), true, 'has Ordinal tag')\n  arr = doc.contractions().expand().terms().out('array')\n  t.deepEqual(arr, ['20th', 'to', '21st'], here + 'num-range expand')\n\n  doc = nlp('4-5pm')\n  t.equal(doc.has('#NumberRange'), true, 'time has NumberRange tag')\n  t.equal(doc.has('#Ordinal'), false, 'time is not an Ordinal tag')\n  arr = doc.contractions().expand().terms().out('array')\n  t.deepEqual(arr, ['4', 'to', '5pm'], here + 'time-range expand')\n\n  doc = nlp('3:45-11pm')\n  t.equal(doc.has('#NumberRange'), true, 'time has NumberRange tag')\n  t.equal(doc.has('#Time'), true, 'time tag')\n  arr = doc.contractions().expand().terms().out('array')\n  t.deepEqual(arr, ['3:45', 'to', '11pm'], here + 'time-range expand2')\n  t.end()\n})\n\ntest('number-range with spaces', function (t) {\n  let doc = nlp('12 - 14')\n  t.equal(doc.has('#Value to #NumberRange'), true, here + 'has NumberRange tags')\n  t.equal(doc.text(), '12 - 14', here + 'text is normal')\n  t.equal(doc.contractions().expand().text(), '12 to 14', here + 'contraction expands')\n\n  doc = nlp('4 - 5pm')\n  t.equal(doc.has('#Value to #NumberRange'), true, here + 'has NumberRange tags #2')\n  t.equal(doc.text(), '4 - 5pm', here + 'text is proper #2')\n  t.equal(doc.contractions().expand().text(), '4 to 5pm', here + 'contraction expands #2')\n\n  t.end()\n})\n\ntest('french-contraction', function (t) {\n  const doc = nlp(`oh j'aime ca`)\n  t.equal(doc.has('aime'), true, here + 'has verb')\n  t.equal(doc.has('je'), true, here + 'has je')\n  t.end()\n})\n\ntest('replace-contraction', function (t) {\n  const doc = nlp(`i'd walked`)\n  doc.replace('had', 'foo')\n  t.equal(doc.text(), `i foo walked`, here + 'replace-contraction')\n  t.end()\n})\n\ntest('remove-contraction', function (t) {\n  const doc = nlp(`i'd walked`)\n  doc.remove('had')\n  t.equal(doc.text(), `i walked`, here + 'remove-contraction')\n  t.end()\n})\n\ntest('insert-contraction', function (t) {\n  let doc = nlp(`i'd walked`)\n  let m = doc.match('had')\n  m.insertBefore('really')\n  t.equal(doc.text(), `i really had walked`, here + 'insertBefore-contraction')\n\n  doc = nlp(`i'd walked`)\n  m = doc.match('i')\n  m.insertAfter('really')\n  t.equal(doc.text(), `i really had walked`, here + 'insertAfter-contraction')\n  t.end()\n})\n\ntest('insert does not trigger contractions', function (t) {\n  const doc = nlp(`we've walked`)\n  doc.insertAfter('cool')\n  t.equal(doc.text(), `we've walked cool`, here + 'insert-no-contraction')\n  t.end()\n})\n\ntest('split-contraction', function (t) {\n  // let doc = nlp(`i'd walked`)\n  // let m = doc.splitOn('had')\n  // t.deepEqual(m.out('array'), ['i', 'had', 'walked'], here + 'splitOn-contraction')\n\n  // doc = nlp(`i'd walked`)\n  // m = doc.splitAfter('i')\n  // t.deepEqual(m.out('array'), ['i', 'had walked'], here + 'splitAfter-contraction')\n\n  // doc = nlp(`i'd walked`)\n  // m = doc.splitBefore('had')\n  // t.deepEqual(m.out('array'), ['i', 'had walked'], here + 'splitBefore-contraction')\n\n  const doc = nlp(`i've walked`)\n  const m = doc.splitAfter('walked')\n  t.deepEqual(m.out('array'), [`i've walked`], here + 'split-contraction-miss-1')\n\n  // doc = nlp(`i'd walked`)\n  // m = doc.splitAfter('had')\n  // t.deepEqual(m.out('array'), [`i've`, 'walked'], here + 'split-contraction-miss')\n\n  t.end()\n})\n\n"
  },
  {
    "path": "tests/two/contractions/expand.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/expand] '\n\ntest('basic is contractions', function (t) {\n  let r = nlp(`he is cool.`)\n  r.contractions().expand()\n  t.equal(r.out('text'), `he is cool.`, here + 'expanded-expand')\n\n  r = nlp(`he's cool.`)\n  r.contractions().expand()\n  t.equal(r.out('text'), `he is cool.`, here + 'contracted-expand')\n\n  r = nlp(`he ain't going`)\n  r.contractions().expand()\n  t.equal(r.out('text'), `he is not going`, here + 'aint')\n\n  r = nlp(`that's really great.`)\n  r.contractions().expand()\n  t.equal(r.out('text'), `that is really great.`, here + 'contracted-expand')\n\n  r = nlp(`she'll, eat icecream`)\n  r.contractions().expand()\n  t.equal(r.out('text'), `she will, eat icecream`, here + 'with-punctuation')\n\n  r = nlp(\"we're not gonna take it, no we're not gonna take it\")\n  r.contractions().expand()\n  t.equal(r.out('text'), `we are not going to take it, no we are not going to take it`, here + 'expand gonna twice')\n\n  r = nlp(\"we're we're gonna gonna\")\n  r.contractions().expand()\n  t.equal(r.out('text'), `we are we are going to going to`, here + 'expand consecutive')\n  t.end()\n})\n\ntest('do-not contractions', function (t) {\n  let r = nlp(`please do not eat the marshmellow`)\n  r.contractions().expand()\n  t.equal(r.out('text'), `please do not eat the marshmellow`, here + 'expanded-expand')\n\n  r = nlp(`please don't eat the marshmellow`)\n  r.contractions().expand()\n  t.equal(r.out('text'), `please do not eat the marshmellow`, here + 'contracted-expand')\n\n  t.end()\n})\n\ntest('have contractions', function (t) {\n  let r = nlp(`i have stood`)\n  r.contractions().expand()\n  t.equal(r.out('text'), `i have stood`, here + 'expanded-expand')\n\n  r = nlp(`i've stood`)\n  r.contractions().expand()\n  t.equal(r.out('text'), `i have stood`, here + 'contracted-expand')\n\n  t.end()\n})\n\ntest('repeated contract-expand', function (t) {\n  const r = nlp(`i'm good`)\n  r.contractions().expand()\n\n  r.contractions().expand().expand().expand()\n  t.equal(r.out('text'), `i am good`, here + 'expand-n')\n  t.end()\n})\n\ntest('contracted', function (t) {\n  const r = nlp(`I'll go to Toronto. I will see.`)\n  const m = r.contractions()\n  const str = m.out('text')\n  t.equal(str, `I'll`, here + 'contracted')\n\n  t.equal(m.length, 1, here + 'no-expanded')\n  t.end()\n})\n\ntest('would-or-did', function (t) {\n  let r = nlp(`i'd contemplate`)\n  let str = r.contractions().expand().all().out('text')\n  t.equal(str, `i would contemplate`, here + 'i-would')\n\n  r = nlp(`i'd contemplated`)\n  str = r.contractions().expand().all().out('text')\n  t.equal(str, `i had contemplated`, here + 'i-had')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/contractions/had-would.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/had-would] '\n\ntest('had-would', function (t) {\n  const arr = [\n    [\"He'd love to join us for dinner\", 'would'],\n    [\"She'd already finished her work when I arrived\", 'had'],\n    [\"I'd like a cup of coffee, please\", 'would'],\n    [\"They'd never been to that restaurant before\", 'had'],\n    [\"We'd appreciate your help with the project\", 'would'],\n    [\"He'd visited the museum last summer\", 'had'],\n    [\"I'd seen that movie before\", 'had'],\n    [\"She'd be happy to help you with your request\", 'would'],\n    [\"He'd always wanted to learn how to play the piano\", 'had'],\n    [\"I'd never met someone so talented\", 'had'],\n    [\"She'd forgotten to bring her umbrella\", 'had'],\n    [\"They'd finished the task before the deadline\", 'had'],\n    [\"We'd already made plans for the weekend\", 'had'],\n    [\"He'd promised to call me later\", 'had'],\n    [\"I'd never have guessed that he was so skilled\", 'would'],\n    [\"She'd do anything to make her dream come true\", 'would'],\n    [\"I'd visited that city once before\", 'had'],\n    [\"He'd achieved a lot in his career\", 'had'],\n    [\"She'd always known that it was a risky venture\", 'had'],\n    [\"I'd seen this movie a long time ago\", 'had'],\n    [\"They'd never imagined it would turn out like this\", 'had'],\n    [\"We'd already started working on the project\", 'had'],\n    [\"He'd promised to help us with the move\", 'had'],\n    [\"I'd be happy to assist you with your request\", 'would'],\n    [\"She'd done everything she could to succeed\", 'had'],\n    [\"He'd said he would come to the party\", 'had'],\n    [\"I'd never thought of it that way before\", 'had'],\n    [\"They'd always wanted to travel the world\", 'had'],\n    [\"She'd been waiting for this moment her whole life\", 'had'],\n    [\"I'd love to hear your thoughts on this matter\", 'would'],\n    [\"He'd already finished his meal when I arrived\", 'had'],\n    [\"I'd seen that painting in a gallery before\", 'had'],\n    [\"She'd made a mistake in her calculations\", 'had'],\n    [\"He'd do anything to make her happy\", 'would'],\n    [\"I'd never experienced anything like that before\", 'had'],\n    [\"She'd completed the assignment ahead of schedule\", 'had'],\n    [\"They'd always dreamed of owning a beach house\", 'had'],\n    [\"I'd be surprised if he didn't show up\", 'would'],\n    [\"She'd said she would be here by 5 PM\", 'had'],\n    [\"He'd always known that this day would come\", 'had'],\n    [\"I'd already made other plans for the weekend\", 'had'],\n    [\"She'd studied for hours before the exam\", 'had'],\n    [\"I'd never seen such a beautiful sunset\", 'had'],\n    // [\"He'd never let us down before\", 'had'],\n    [\"She'd do anything for her family\", 'would'],\n    [\"I'd been there once before\", 'had'],\n    [\"They'd finished the race in record time\", 'had'],\n    [\"He'd already seen the movie\", 'had'],\n    [\"She'd always wanted to learn how to dance\", 'had'],\n    [\"I'd be surprised if they didn't win\", 'would'],\n    [\"They'd never tried sushi before\", 'had'],\n    [\"We'd love to have you at the party\", 'would'],\n    [\"He'd promised to help with the move\", 'had'],\n    [\"She'd finished her work by noon\", 'had'],\n    [\"I'd never thought of it that way\", 'had'],\n    [\"We'd be happy to assist you\", 'would'],\n    [\"He'd already decided on a career path\", 'had'],\n    [\"She'd always known it was a risky investment\", 'had'],\n    [\"They'd never been to that part of the city before\", 'had'],\n    [\"I'd seen that play performed live\", 'had'],\n    [\"He'd said he'd come to the event\", 'had'],\n    [\"She'd always wanted to travel to Asia\", 'had'],\n    [\"I'd be surprised if he didn't show up\", 'would'],\n    [\"They'd completed the project ahead of schedule\", 'had'],\n    [\"We'd appreciate your feedback\", 'would'],\n    [\"He'd always dreamed of owning a sports car\", 'had'],\n    [\"She'd already made dinner when I arrived\", 'had'],\n    [\"I'd love to visit that museum\", 'would'],\n    [\"He'd achieved a lot in his career\", 'had'],\n    [\"I'd never met someone so knowledgeable\", 'had'],\n    [\"She'd always known she wanted to be a doctor\", 'had'],\n    [\"They'd never seen anything like it before\", 'had'],\n    [\"We'd never imagined it would be so challenging\", 'had'],\n    [\"He'd promised he'd call as soon as he arrived\", 'had'],\n    [\"I'd always wanted to learn how to play the guitar\", 'had'],\n    [\"She'd already finished her meal when I got there\", 'had'],\n    [\"I'd seen that movie a long time ago\", 'had'],\n    [\"He'd always wanted to start his own business\", 'had'],\n    [\"She'd be happy to assist you with your request\", 'would'],\n    [\"They'd completed the task in record time\", 'had'],\n    [\"We'd love to hear your thoughts on this matter\", 'would'],\n    [\"He'd do anything to make her happy\", 'would'],\n    [\"I'd seen that painting in a gallery before\", 'had'],\n    [\"She'd already made plans for the weekend\", 'had'],\n    [\"I'd never been to that part of the country before\", 'had'],\n    [\"They'd always dreamed of living by the ocean\", 'had'],\n    [\"We'd already started working on the project\", 'had'],\n    [\"He'd promised to help us with the move\", 'had'],\n    [\"I'd love to hear more about your experiences\", 'would'],\n    [\"She'd already decided on a new career path\", 'had'],\n    [\"They'd never encountered such a challenge before\", 'had'],\n    [\"We'd appreciate any assistance you can provide\", 'would'],\n    [\"He'd always known that this day would come\", 'had'],\n    [\"I'd seen that movie several times before\", 'had'],\n    [\"She'd always wanted to learn how to cook\", 'had'],\n    [\"They'd already made plans for the weekend\", 'had'],\n  ]\n\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    t.equal(doc.has(a[1]), true, here + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/contractions/is-has-possessive.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/is-has] '\n\ntest('is-has', function (t) {\n  const arr = [\n    [\"Artist's creative process is unique to each individual\", '#Possessive'],\n    [\"Athlete's dedication often leads to success\", '#Possessive'],\n    [\"Baby's first steps are always memorable\", '#Possessive'],\n    [\"He's a professional photographer\", 'is'],\n    [\"He's a talented musician\", 'is'],\n    [\"He's always been a good friend\", 'has'],\n    [\"He's always on time\", 'is'],\n    [\"He's an excellent cook\", 'is'],\n    [\"He's become a successful entrepreneur\", 'has'],\n    [\"He's feeling much better\", 'is'],\n    [\"He's got a new job\", 'has'],\n    [\"He's lived here for years\", 'has'],\n    // [\"He's never let us down before\", 'has'],\n    [\"He's never met her before\", 'has'],\n    [\"He's never seen such a beautiful sunset\", 'has'],\n    [\"He's studying for the exam\", 'is'],\n    [\"He's the captain of the team\", 'is'],\n    [\"He's the one in charge\", 'is'],\n    [\"He's the one who called\", 'is'],\n    [\"He's very talented\", 'is'],\n    [\"It's a beautiful morning\", 'is'],\n    [\"It's important to stay focused\", 'is'],\n    [\"It's not as easy as it looks\", 'is'],\n    [\"It's not what it seems\", 'is'],\n    [\"It's not what it used to be\", 'is'],\n    [\"It's raining outside\", 'is'],\n    [\"It's your turn to speak\", 'is'],\n    [\"Jamaica's growing rapidly\", 'is'],\n    [\"John's car is parked outside\", '#Possessive'],\n    [\"john's closed tasks\", 'has'],\n    [\"John's finished his homework\", 'has'],\n    [\"John's guitar is in the corner\", '#Possessive'],\n    [\"John's house is very warm\", '#Possessive'],\n    [\"John's nuts about Georgia\", 'is'],\n    [\"John's nuts were roasting\", '#Possessive'],\n    [\"John's nuts had been salted\", '#Possessive'],\n    [\"John's quickly running\", 'is'],\n    [\"Mary's visited Paris before\", 'has'],\n    [\"My sister's birthday is next week\", '#Possessive'],\n    [\"My sister's wedding is next month\", '#Possessive'],\n    [\"Professor's office hours are posted on the door\", '#Possessive'],\n    [\"Restaurant's signature dish is a customer favorite\", '#Possessive'],\n    [\"She's a talented artist\", 'is'],\n    [\"She's already finished her homework\", 'has'],\n    [\"She's always been a fast learner\", 'has'],\n    [\"She's always been a good listener\", 'has'],\n    [\"She's always been a hard worker\", 'has'],\n    [\"She's been a great friend\", 'has'],\n    [\"She's been to Europe several times\", 'has'],\n    [\"She's been working all day\", 'has'],\n    [\"She's excited about the trip\", 'is'],\n    [\"She's finished her degree\", 'has'],\n    [\"She's finished her work\", 'has'],\n    [\"She's got a lot of experience\", 'has'],\n    [\"She's got a lot of friends\", 'has'],\n    [\"She's got a new car\", 'has'],\n    [\"She's got a talent for singing\", 'has'],\n    [\"She's lost her keys again\", 'has'],\n    [\"She's never been to Asia\", 'has'],\n    [\"She's never seen such a beautiful sunset\", 'has'],\n    [\"She's never tasted sushi before\", 'has'],\n    [\"She's reached her goal\", 'has'],\n    [\"She's the one who called\", 'is'],\n    [\"She's the one who organized the event\", 'is'],\n    [\"Student's question sparked an interesting discussion\", '#Possessive'],\n    [\"The architect's plans were carefully drawn\", '#Possessive'],\n    [\"The architect's vision is reflected in the design\", '#Possessive'],\n    [\"The artist's gallery displayed stunning works\", '#Possessive'],\n    [\"The artist's painting is on display\", '#Possessive'],\n    [\"The artist's technique is unique\", '#Possessive'],\n    [\"The assignment's due tomorrow\", 'is'],\n    [\"The athlete's dedication is inspiring\", '#Possessive'],\n    [\"The author's storytelling is captivating\", '#Possessive'],\n    [\"The baby's crying in the crib\", 'is'],\n    [\"The baby's first steps are exciting\", '#Possessive'],\n    [\"The baby's learned to crawl\", 'has'],\n    [\"The baby's room needs redecorating\", '#Possessive'],\n    [\"The book's been on the bestseller list\", 'has'],\n    [\"The book's missing a few chapters\", 'is'],\n    [\"The book's missing a few pages\", 'is'],\n    [\"The building's foundation is strong\", '#Possessive'],\n    [\"The cake's already been eaten\", 'has'],\n    [\"The cake's been eaten\", 'has'],\n    [\"The captain's chair was empty\", '#Possessive'],\n    [\"The captain's leadership is crucial\", '#Possessive'],\n    [\"The captain's orders were clear\", '#Possessive'],\n    [\"The car's engine is making a strange noise\", 'is'],\n    [\"The car's engine needs maintenance\", '#Possessive'],\n    [\"The car's engine roared to life\", '#Possessive'],\n    [\"The car's out of gas\", 'is'],\n    [\"The car's parked in the garage\", 'is'],\n    [\"The car's sleek design caught everyone's attention\", '#Possessive'],\n    [\"The cat's asleep on the windowsill\", 'is'],\n    [\"The cat's eyes gleamed in the darkness\", '#Possessive'],\n    [\"The cat's eyes sparkled in the moonlight\", '#Possessive'],\n    [\"The cat's fur is soft\", '#Possessive'],\n    [\"The cat's hiding under the table\", 'is'],\n    [\"The cat's playful antics amused everyone\", '#Possessive'],\n    [\"The cat's sleeping on the roof\", 'is'],\n    [\"The CEO's decision impacted the entire company\", '#Possessive'],\n    [\"The chef's recipe is a closely guarded secret\", '#Possessive'],\n    [\"The child's imagination is vivid\", '#Possessive'],\n    [\"The child's innocence is heartwarming\", '#Possessive'],\n    [\"The child's laughter is infectious\", '#Possessive'],\n    [\"The city's population is growing\", '#Possessive'],\n    [\"The city's skyline is breathtaking\", '#Possessive'],\n    [\"The coffee's aroma filled the room\", '#Possessive'],\n    [\"The coffee's too hot to drink\", 'is'],\n    [\"The coffee's too hot\", 'is'],\n    [\"The company's CEO is giving a speech\", '#Possessive'],\n    [\"The company's expanding globally\", 'is'],\n    [\"The company's expanding rapidly\", 'is'],\n    [\"The company's headquarters are in the city\", '#Possessive'],\n    [\"The company's success is remarkable\", '#Possessive'],\n    [\"The computer's crashed again\", 'has'],\n    [\"The concert's sold out\", 'is'],\n    [\"The concert's starting soon\", 'is'],\n    [\"The detective's intuition was sharp\", '#Possessive'],\n    [\"The doctor's advice was helpful\", '#Possessive'],\n    [\"The doctor's diagnosis was accurate\", '#Possessive'],\n    [\"The dog's barking in the backyard\", 'is'],\n    [\"The dog's behavior is unpredictable\", '#Possessive'],\n    [\"The dog's chasing its tail\", 'is'],\n    [\"The dog's collar is missing\", '#Possessive'],\n    [\"The engineer's design was innovative\", '#Possessive'],\n    [\"The explorer's journey was filled with challenges\", '#Possessive'],\n    [\"The explorer's map guided the journey\", '#Possessive'],\n    [\"The farmer's crops were ready for harvest\", '#Possessive'],\n    [\"The food's ready to be served\", 'is'],\n    [\"The garden's beauty is captivating\", '#Possessive'],\n    [\"The garden's flowers are in full bloom\", '#Possessive'],\n    [\"The journalist's story was front-page news\", '#Possessive'],\n    [\"The lawyer's argument was persuasive\", '#Possessive'],\n    [\"The lawyer's argument won the case\", '#Possessive'],\n    [\"The librarian's knowledge of books was vast\", '#Possessive'],\n    [\"The manager's decision was unexpected\", '#Possessive'],\n    [\"The meeting's been rescheduled\", 'has'],\n    [\"The meeting's scheduled for 3 PM\", 'is'],\n    [\"The mountain's peak is covered in snow\", '#Possessive'],\n    [\"The movie's already started\", 'has'],\n    [\"The musician's talent is evident\", '#Possessive'],\n    [\"The novel's plot is intriguing\", '#Possessive'],\n    [\"The nurse's care was comforting\", '#Possessive'],\n    [\"The package's arrived on time\", 'has'],\n    [\"The package's arrived\", 'has'],\n    [\"The plane's just landed\", 'has'],\n    [\"The professor's lecture was enlightening\", '#Possessive'],\n    [\"The professor's lecture was informative\", '#Possessive'],\n    [\"The project's almost complete\", 'is'],\n    [\"The project's already started\", 'has'],\n    [\"The project's behind schedule\", 'is'],\n    [\"The project's completed on time\", 'has'],\n    [\"The project's completion is imminent\", '#Possessive'],\n    [\"The scientist's discovery is groundbreaking\", '#Possessive'],\n    [\"The scientist's experiment yielded interesting results\", '#Possessive'],\n    [\"The scientist's research is groundbreaking\", '#Possessive'],\n    [\"The software's being updated\", 'is'],\n    [\"The store's closed on Sundays\", 'is'],\n    [\"The student's backpack is in the hallway\", '#Possessive'],\n    [\"The student's question was thought-provoking\", '#Possessive'],\n    [\"The student's understanding is impressive\", '#Possessive'],\n    [\"The sun's setting\", 'is'],\n    [\"The sun's shining brightly\", 'is'],\n    [\"The teacher's guidance is invaluable\", '#Possessive'],\n    [\"The team's strategy is well-thought-out\", '#Possessive'],\n    [\"The team's unity is commendable\", '#Possessive'],\n    [\"The team's won every game this season\", 'has'],\n    [\"The team's won the championship\", 'has'],\n    [\"The train's already left the station\", 'has'],\n    [\"The weather's getting colder\", 'is'],\n    [\"They're convinced he's innocent\", 'is'],\n\n    [\"the cell's natural\", 'is'],\n    [\"the cell's natural mechanisms\", '#Possessive'],\n    [\"the field's leading proponents\", '#Possessive'],\n    [\"the rocket's red glare\", '#Possessive'],\n    [\"the rocket's glare\", '#Possessive'],\n    [\"the rocket's red\", 'is'],\n    [\"Everybody's waiting up to hear \", 'is'],\n    [\"this truck's close proximity\", '#Possessive'],\n    [\"causing a patient's secondary rhinitis\", '#Possessive'],\n    [\"Prince Ahmed's natural disposition\", '#Possessive'],\n    [\"that genre's stylistic achievements\", '#Possessive'],\n    [\"picking up on Jeramie's quick explanations\", '#Possessive'],\n    [`This company's \"Natural Soda\"`, '#Possessive'],\n    [`Toronto's loudest singing group `, '#Possessive'],\n    [`Drake's rich album cover`, '#Possessive'],\n    [`a role in Los Angeles's cultural identity`, '#Possessive'],\n    [`this artist's painting of his \"Anatomy Lesson\" `, '#Possessive'],\n    [`the Art Institute of Chicago's Building `, '#Possessive'],\n    [`it features Cody's chanting. `, '#Possessive'],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    t.equal(doc.has(a[1]), true, here + ' (' + a[1] + ')  ' + a[0])\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/contractions/match-contraction.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/match-contraction] '\n\ntest('match-contractions', function (t) {\n  const doc = nlp(`i haven't done it`)\n  let m = doc.match(`have not done`)\n  t.equal(m.text(), `haven't done`, here + 'full-text')\n\n  m = doc.match(`have not`)\n  t.equal(m.text(), `haven't`, here + 'first-half-found')\n\n  m = doc.match(`not done`)\n  t.equal(m.text(), `done`, here + 'second-half-found')\n\n  m = doc.match(`haven't`)\n  t.equal(m.text(), `haven't`, here + 'match-contraction')\n\n  m = doc.match(`haven't done`)\n  t.equal(m.text(), `haven't done`, here + 'match-contraction-full')\n\n  m = doc.match(`have done`)\n  t.equal(m.text(), ``, here + 'only-outsides')\n\n  t.end()\n})\n\ntest('false-positive-contractions', function (t) {\n  const doc = nlp(`i have done it`)\n  let m = doc.match(`have not done`)\n  t.equal(m.text(), ``, here + 'have not done')\n\n  m = doc.match(`have not`)\n  t.equal(m.text(), ``, here + 'have not')\n\n  m = doc.match(`not`)\n  t.equal(m.text(), ``, here + 'not')\n\n  m = doc.match(`not done`)\n  t.equal(m.text(), ``, here + 'not done')\n\n  m = doc.match(`haven't`)\n  t.equal(m.text(), ``, here + `haven't`)\n\n  m = doc.match(`haven't done`)\n  t.equal(m.text(), ``, here + `haven't done`)\n\n  m = doc.match(`have not done`)\n  t.equal(m.text(), ``, here + `have not done`)\n\n  m = doc.match(`have done`)\n  t.equal(m.text(), `have done`, here + `have done`)\n  t.end()\n})\n\ntest('i am contraction', function (t) {\n  const doc = nlp(`so i'm glad`)\n  let m = doc.match(`i am`)\n  t.equal(m.text(), `i'm`, here + 'i am')\n\n  m = doc.match(`i`)\n  t.equal(m.text(), `i'm`, here + `i`)\n\n  m = doc.match(`am`)\n  t.equal(m.text(), ``, here + `am`)\n\n  m = doc.match(`i am glad`)\n  t.equal(m.text(), `i'm glad`, here + `i'm glad`)\n\n  m = doc.match(`i glad`)\n  t.equal(m.text(), ``, here + 'i glad')\n  t.end()\n})\n\ntest('contraction-optional', function (t) {\n  const doc = nlp(`so i'm glad`)\n  let m = doc.match(`i am?`)\n  t.equal(m.text(), `i'm`, here + 'i am?')\n\n  m = doc.match(`i am?`)\n  t.equal(m.text(), `i'm`, here + `i am?`)\n\n  m = doc.match(`am glad?`)\n  t.equal(m.text(), `glad`, here + `am glad?`)\n\n  m = doc.match(`i am? glad`)\n  t.equal(m.text(), `i'm glad`, here + `i am? glad`)\n\n  m = doc.match(`i glad?`)\n  t.equal(m.text(), `i'm`, here + 'i glad?')\n  t.end()\n})\n\n\n\ntest('lookup contraction', function (t) {\n  const arr = [\n    'foobar',\n    'marines',\n    'afghanistan',\n    'foo',\n  ]\n  const trie = nlp.buildTrie(arr)\n  const res = nlp(`so we're adding 3201 Marines to our forces in Afghanistan.`).lookup(trie)\n  t.equal(res.has('marines'), true, 'post-contraction found first one')\n  t.equal(res.has('afghanistan'), true, 'post-contraction found second one')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/freeze/freeze.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/freeze]'\n\ntest('isFrozen() method', function (t) {\n  const doc = nlp('the dr who is a a shoe in the closet')\n  const m = doc.match('dr who').tag('Noun')\n  m.freeze() // ☃️\n  t.equal(doc.isFrozen().text(), 'dr who', here)\n  doc.match('who').unfreeze()\n  t.equal(doc.isFrozen().text(), 'dr', here)\n  doc.unfreeze()\n  t.equal(doc.isFrozen().text(), '', here)\n  t.end()\n})\n\ntest('cant tag frozen term', function (t) {\n  const doc = nlp('one two three four.')\n  const m = doc.match('two three')\n  m.freeze()\n  doc.tag('Person')\n  t.equal(doc.match('one').has('#Person'), true, 'not-frozen has tag', here)\n  t.equal(doc.match('two three').has('#Person'), false, 'frozen has no tag', here)\n  t.equal(doc.match('four').has('#Person'), true, 'after has tag', here)\n  t.end()\n})\n\ntest('cant tag frozen term', function (t) {\n  const doc = nlp('a shoe in the closet')\n  const m = doc.match('shoe').tag('Noun')\n  m.freeze() // ☃️\n  m.tag('Verb') // ❌ (does nothing)\n  t.equal(m.has('#Verb'), false, here)\n  m.tag('Singular') // ✅ works\n  t.equal(m.has('#Singular'), true, here)\n\n  m.unfreeze() // 🏖️\n  m.tag('Verb') // ✅ works\n  t.equal(m.has('#Verb'), true, here)\n  t.end()\n})\n\ntest('catch sneeky tags', function (t) {\n  const doc = nlp.tokenize('John Ginger is nice')\n  doc.match('ginger').tag('Verb').freeze()\n  doc.compute('tagger')\n  t.equal(doc.has('#Person #Verb is nice'), true, here)\n  t.end()\n})\n\ntest('in plugin', function (t) {\n  nlp.plugin({\n    frozen: {\n      'slug life': 'Verb',\n    },\n  })\n  const doc = nlp(`The cool slug life is nice`)\n  t.equal(doc.match('#Verb+').has('slug life'), true, here + 'in plugin')\n  t.end()\n})\n\ntest('block-tag :', function (t) {\n  const doc = nlp(`republic of leeland`)\n  doc.match('republic of .').tag('Place').freeze()\n  doc.match('. of leeland').tag('Organization')\n  t.equal(doc.has('#Place{3}'), true, here + 'two-tag')\n  t.end()\n})\n\ntest('freeze-in-sweep :', function (t) {\n  const doc = nlp(`republic of leeland`)\n  const net = nlp.buildNet([{ match: '. of leeland', tag: 'Organization', freeze: true }])\n  doc.sweep(net)\n  doc.match('republic of .').tag('Place') //should do nothing\n  t.equal(doc.has('#Place'), false, here + 'no-place')\n  t.equal(doc.has('#Organization{3}'), true, here + 'has-org')\n  t.end()\n})\n\ntest('freeze-in-prepend :', function (t) {\n  nlp.plugin({\n    frozen: {\n      flq: 'Frozen',\n    },\n  })\n  const doc = nlp('FLQ')\n  t.ok(doc.match('flq').has('#Frozen'), 'before-prepend')\n  doc.compute('frozen')\n  doc.prepend('For the upcoming visit, the patient will need an ')\n  t.ok(doc.match('flq').has('#Frozen'), 'after-prepend')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/freeze/internal.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/freeze-lex] '\n\ntest('internal freezeLex', function (t) {\n  const arr = [\n    ['tiger woods', 'Person'],\n    ['houston astros', 'SportsTeam'],\n    ['top notch', 'Adjective'],\n    ['cold war', 'Noun'],\n    ['excuse me', 'Expression'],\n    ['chick fil-a', 'Organization'],\n    ['financial times', 'Organization'],\n    ['guns n roses', 'Organization'],\n    ['la z boy', 'Organization'],\n    ['labour party', 'Organization'],\n    // ['new kids on the block', 'Organization'],\n    ['new york times', 'Organization'],\n    ['the guess who', 'Organization'],\n    ['thin lizzy', 'Organization'],\n    ['prime minister', 'Actor'],\n    ['free market', 'Singular'],\n    ['lay up', 'Singular'],\n    ['living room', 'Singular'],\n    ['spin off', 'Singular'],\n    ['appeal court', 'Uncountable'],\n    ['cold war', 'Uncountable'],\n    ['gene pool', 'Uncountable'],\n    ['machine learning', 'Uncountable'],\n    ['nail polish', 'Uncountable'],\n    ['time off', 'Uncountable'],\n    ['take part', 'Infinitive'],\n    ['bill gates', 'Person'],\n    ['doctor who', 'Person'],\n    ['he man', 'Person'],\n    ['iron man', 'Person'],\n    ['kid cudi', 'Person'],\n    ['run dmc', 'Person'],\n    ['rush limbaugh', 'Person'],\n    ['snow white', 'Person'],\n    ['brand new', 'Adjective'],\n    ['en route', 'Adjective'],\n    ['off guard', 'Adjective'],\n    ['on board', 'Adjective'],\n    ['so called', 'Adjective'],\n    ['spot on', 'Adjective'],\n    ['straight forward', 'Adjective'],\n    ['super duper', 'Adjective'],\n    ['tip top', 'Adjective'],\n    ['top notch', 'Adjective'],\n    ['up to date', 'Adjective'],\n    ['win win', 'Adjective'],\n    ['atlanta united', 'SportsTeam'],\n\n    // ['try in', 'PhrasalVerb'],\n    // ['try off', 'PhrasalVerb'],\n    // ['try on', 'PhrasalVerb'],\n    // ['try out', 'PhrasalVerb'],\n    ['iron maiden', 'ProperNoun'],\n    ['new york state', 'Region'],\n    ['prince edward island', 'Region'],\n    [\"cote d'ivoire\", 'Country'],\n    ['isle of man', 'Country'],\n    ['united states', 'Country'],\n    ['u.s. virgin islands', 'Country'],\n    ['united states of america', 'Country'],\n    ['cedar breaks', 'Place'],\n    ['cedar falls', 'Place'],\n    ['point blank', 'Adverb'],\n    ['tiny bit', 'Adverb'],\n    ['as soon as', 'Conjunction'],\n    ['by the time', 'Conjunction'],\n    ['no matter', 'Conjunction'],\n    ['will like', 'Verb'],\n    ['will refine', 'Verb'],\n    ['took part', 'PastTense'],\n    ['takes part', 'PresentTense'],\n    ['taking part', 'Gerund'],\n    ['will take part', 'Verb'],\n    ['taken part', 'Participle'],\n  ]\n  arr.forEach(a => {\n    const [str, tag] = a\n    const doc = nlp(str)\n    t.equal(doc.has('^#' + tag + '+$'), true, here + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/freeze/lex.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/freeze-lex] '\n\ntest('nonfrozen behaviour', function (t) {\n  nlp.addWords({ 'shoe in': 'Noun', 'mr who': 'Person' })\n  const doc = nlp('the mr who threw a shoe in the car.')\n  t.ok(doc.has('mr #Preposition threw a #Noun'), here + 'default')\n  t.end()\n})\n\ntest('frozen behaviour', function (t) {\n  nlp.addWords({ 'shoe in': 'Noun', 'mr who': 'Person' }, true)\n  const doc = nlp('the mr who threw a shoe in the car.')\n  t.ok(doc.has('#Person #Person threw a #Noun #Noun the car'), here + 'frozen')\n  t.end()\n})\n\ntest('addWords() frozen', function (t) {\n  nlp.addWords({ 'dr which': 'Place', moose: 'Adverb' }, true)\n  const doc = nlp('i saw dr. which on ice in Moose, Canada')\n  t.equal(doc.has('saw #Place #Place on'), true, here)\n  t.equal(doc.has('in #Adverb #Place$'), true, here)\n  t.end()\n})\n\ntest('freeze + tags', function (t) {\n  nlp.addTags({ Diagnostic: { isA: 'Noun' } })\n  nlp.addWords({ echo: 'Diagnostic', scan: 'Diagnostic' }, true)\n  let doc = nlp(`she should have a further scan in a year.`)\n  t.ok(doc.has('(scan && #Diagnostic)'), here + 'scan #1')\n  doc = nlp('She went for a scan.')\n  t.ok(doc.has('(scan && #Diagnostic)'), here + 'scan #2')\n\n  doc = nlp('The plan is for a further echo in October.')\n  t.ok(doc.has('(echo && #Diagnostic)'), here + 'echo #1')\n  doc = nlp('He had an echo today.')\n  t.ok(doc.has('(echo && #Diagnostic)'), here + 'echo #2')\n  t.end()\n})\n\ntest('more-lex', function (t) {\n  nlp.addWords({ 'fast times at freddy': 'Cardinal' }, true)\n  const doc = nlp('i saw fast times at freddy, on the weekend')\n\n  t.equal(doc.has('i saw #Cardinal+ on'), true, here + 'is cardinal')\n  t.equal(doc.has('(#Adjective|#Person)'), false, here + 'no person')\n\n  const m = doc.match('fast times').freeze()\n  doc.tag('Noun')\n  doc.tag('ImdbTag')\n\n  t.equal(m.has('#Noun'), false, here + 'no noun')\n  t.equal(m.has('#ImdbTag'), true, here + 'has random tag')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/groups/named-match.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/named-match] '\n\ntest('named-match-overlap', function (t) {\n  const doc = nlp('june the 5th, july the 7th, and sept the 12th.')\n\n  const m = doc.match('[<month>#Month]')\n\n  t.equal(m.length, 3, here + 'Should have 3 results')\n\n  t.equal(m.groups('month').length, 3, here + 'Should have 3 capture group results')\n\n  t.end()\n})\n\ntest('named-match-or:', function (t) {\n  const arr = [\n    ['the dog played again', 'the [<target>(#Noun|#Verb)] played [<0>(#Adverb)]', 'dog'],\n    ['the dog played again', 'the [<target>(#Noun|#Verb)] played [<another>(#Adverb)]', 'dog'],\n    ['the dog played', 'the [<target>(#Noun|#Verb)] played', 'dog'],\n    ['the dog played', 'the [<target>(#Noun)] played', 'dog'],\n  ]\n\n  arr.forEach(function (a) {\n    const doc = nlp(a[0]).match(a[1]).groups('target')\n\n    const msg = a[0] + ' matches ' + JSON.stringify(a[1]) + ' ' + a[2]\n    t.equal(doc.text(), a[2], here + msg)\n  })\n\n  t.end()\n})\n\ntest('named-match-auto:', function (t) {\n  const arr = [\n    ['the dog played', 'the [#Noun] played', 'dog'],\n    ['the dog played', 'the [dog] played', 'dog'],\n    ['the big dog played', 'the [big dog] played', 'big dog'],\n\n    ['the dog played', 'the #Noun [played]', 'played'],\n    ['the dog played', 'the dog [played]', 'played'],\n    ['the big dog played', 'the big dog [played]', 'played'],\n  ]\n\n  arr.forEach(function (a) {\n    const doc = nlp(a[0]).match(a[1])\n\n    const res = doc.groups(0)\n\n    const msg = a[0] + ' matches ' + JSON.stringify(a[1]) + ' ' + a[2]\n    t.equal(res.text(), a[2], here + msg)\n  })\n\n  t.end()\n})\n\ntest('named-match-auto-multi:', function (t) {\n  const arr = [\n    ['the dog played', 'the [#Noun] [played]', 'dog'],\n    // ['the dog played lots', 'the [dog] played [<0>lots]', 'dog lots'],\n    ['the big dog played', 'the [big dog] [played]', 'big dog'],\n  ]\n\n  arr.forEach(function (a) {\n    const doc = nlp(a[0]).match(a[1])\n\n    const res = doc.groups(0)\n\n    const msg = a[0] + ' matches ' + JSON.stringify(a[1]) + ' ' + a[2]\n    t.equal(res.text(), a[2], here + msg)\n  })\n\n  t.end()\n})\n\ntest('named-match-group', function (t) {\n  const res = nlp('the dog played').match('the [<type>#Noun] played').groups()\n\n  t.equal(res['type'] && res['type'].text(), 'dog', here + 'res1')\n\n  const doc2 = nlp('the big big big dog played').match('the [<size>#Adjective+] [<type>#Noun] played')\n  const res2 = doc2.groups()\n\n  t.equal(res2['type'] && res2['type'].text(), 'dog', here + 'res2 dog')\n  t.equal(res2['size'] && res2['size'].text(), 'big big big', here + 'big big big')\n\n  t.end()\n})\n\ntest('named-match-to-json:', function (t) {\n  const arr = [\n    ['the dog played', 'the [<target>#Noun] played', 'dog', ['dog']],\n    ['the dog played', 'the [<target>dog] played', 'dog', ['dog']],\n    ['the big dog played', 'the [<target>big dog] played', 'big dog', ['big dog']],\n    // ['the big dog played', 'the [<target>big] dog [<target>played]', 'big played', ['big', 'played']],\n  ]\n\n  arr.forEach(function (a) {\n    const doc = nlp(a[0]).match(a[1])\n\n    const res = doc.groups()\n    t.ok(res['target'], \"Should contain 'target' group\")\n\n    const json = res.target.out('array')\n    const text = res.target.text()\n\n    t.equal(text, a[2], here + a[0])\n    t.deepEqual(json, a[3], here + a[0])\n  })\n\n  t.end()\n})\n\ntest('named-match-overlap', function (t) {\n  const arr = [\n    {\n      input: 'the big dog played',\n      match: 'the [<target>#Adjective] [<type>#Noun] [<vb>played]',\n      run: res => {\n        t.equal(res.type && res.type.text(), 'dog', here + 'got type')\n        t.equal(res.target && res.target.text(), 'big', here + 'got target')\n        t.equal(res.vb && res.vb.text(), 'played', here + 'got verb')\n      },\n    },\n  ]\n\n  arr.forEach(a => a.run(nlp(a.input).match(a.match).groups()))\n\n  t.end()\n})\n\ntest('named-object-match-quick:', function (t) {\n  const arr = [\n    ['the dog played', [{ word: 'the' }, { tag: 'Noun', group: 'target' }, { word: 'played' }], 'dog'],\n    ['the dog played', [{ word: 'dog', group: 'target' }], 'dog'],\n    ['the dog played', [{ tag: 'Verb', group: 'target' }], 'played'],\n  ]\n\n  arr.forEach(function (a) {\n    const doc = nlp(a[0]).match(a[1], 'target')\n\n    const msg = a[0] + ' matches ' + JSON.stringify(a[1]) + ' ' + a[2]\n    t.equal(doc.text(), a[2], here + msg)\n  })\n\n  t.end()\n})\n\ntest('named-object-match:', function (t) {\n  const arr = [\n    ['the dog played', [{ word: 'the' }, { tag: 'Noun', group: 'target' }, { word: 'played' }], 'dog'],\n    ['the dog played', [{ word: 'dog', group: 'target' }], 'dog'],\n    ['the dog played', [{ tag: 'Verb', group: 'target' }], 'played'],\n  ]\n\n  arr.forEach(function (a) {\n    const doc = nlp(a[0]).match(a[1]).groups('target')\n\n    const msg = a[0] + ' matches ' + JSON.stringify(a[1]) + ' ' + a[2]\n    t.equal(doc.text(), a[2], here + msg)\n  })\n\n  t.end()\n})\n\ntest('named-object-match-target:', function (t) {\n  const arr = [\n    ['the dog played', [{ word: 'the' }, { tag: 'Noun', group: 'target' }, { word: 'played' }], 'dog'],\n    ['the dog played', [{ word: 'dog', group: 'target' }], 'dog'],\n    ['the dog played', [{ tag: 'Verb', group: 'target' }], 'played'],\n\n    ['the dog played', [{ word: 'the' }, { tag: 'Noun', group: 'not-target' }, { word: 'played' }], ''],\n    ['the dog played', [{ word: 'dog', group: 'not-target' }], ''],\n    ['the dog played', [{ tag: 'Verb', group: 'not-target' }], ''],\n  ]\n\n  arr.forEach(function (a) {\n    const doc = nlp(a[0]).match(a[1]).groups('target')\n\n    const msg = a[0] + ' matches ' + JSON.stringify(a[1]) + ' ' + a[2]\n    t.equal(doc.text(), a[2], here + msg)\n  })\n\n  t.end()\n})\n\ntest('named-match:', function (t) {\n  const arr = [\n    ['the dog played', 'the [<target>#Noun] played', 'dog'],\n    ['the dog played', 'the [<target>dog] played', 'dog'],\n    ['the big dog played', 'the [<target>big dog] played', 'big dog'],\n    ['the big dog played', 'the [<target>big dog] played', 'big dog'],\n    ['the dog played', 'the dog [<target>#Verb]', 'played'],\n  ]\n\n  arr.forEach(function (a) {\n    const doc = nlp(a[0]).match(a[1]).groups('target')\n\n    const msg = a[0] + ' matches ' + JSON.stringify(a[1]) + ' ' + a[2]\n    t.equal(doc.text(), a[2], here + msg)\n  })\n\n  t.end()\n})\n\ntest('named-match-target:', function (t) {\n  const arr = [\n    ['the dog played', 'the [<target>#Noun] played', 'dog'],\n    ['the dog played', 'the [<target>dog] played', 'dog'],\n    ['the big dog played', 'the [<target>big dog] played', 'big dog'],\n\n    ['the dog played', 'the [<not-target>#Noun] played', ''],\n    ['the dog played', 'the [<not-target>dog] played', ''],\n    ['the big dog played', 'the [<not-target>big dog] played', ''],\n  ]\n\n  arr.forEach(function (a) {\n    const doc = nlp(a[0]).match(a[1]).groups('target')\n\n    const msg = a[0] + ' matches ' + JSON.stringify(a[1]) + ' ' + a[2]\n    t.equal(doc.text(), a[2], here + msg)\n  })\n\n  t.end()\n})\n\ntest('named-match-number:', function (t) {\n  const arr = [\n    ['the dog played', 'the [<0>#Noun] played', 'dog'],\n    ['the dog played', 'the [<0>dog] played', 'dog'],\n    ['the big dog played', 'the [<0>big dog] played', 'big dog'],\n\n    ['the dog played', 'the [<1>#Noun] played', ''],\n    ['the dog played', 'the [<1>dog] played', ''],\n    ['the big dog played', 'the [<1>big dog] played', ''],\n  ]\n\n  arr.forEach(function (a) {\n    const doc = nlp(a[0]).match(a[1]).groups(0)\n\n    const msg = a[0] + ' matches ' + JSON.stringify(a[1]) + ' ' + a[2]\n    t.equal(doc.text(), a[2], here + msg)\n  })\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/groups/named-multi.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/named-multi] '\n\ntest('two named matches', function (t) {\n  let m = nlp('the big dog played').match('the [<size>#Adjective] [<animal>#Noun] played')\n  t.equal(m.groups('size').text(), 'big', here + 'one-size')\n  t.equal(m.groups('animal').text(), 'dog', here + 'one-animal')\n  t.equal(m.groups('asdf').text(), '', here + 'one-blank')\n  let res = m.groups()\n  t.equal(res.size && res.size.text(), 'big', here + 'obj-size')\n  t.equal(res.animal && res.animal.text(), 'dog', here + 'obj-animal')\n\n  const doc = nlp.tokenize('june the 5th')\n  m = doc.match('[<month>june] the [<date>5th]')\n  t.equal(m.groups('month').text(), 'june', here + 'one-month')\n  t.equal(m.groups('date').text(), '5th', here + 'one-date')\n  res = m.groups()\n  t.equal(res.date && res.date.text(), '5th', here + 'obj-date')\n  t.equal(res.month && res.month.text(), 'june', here + 'obj-month')\n  t.end()\n})\n\ntest('two named - two results', function (t) {\n  const doc = nlp('june the 5th and july the 7th')\n  const m = doc.match('[<month>#Month] the [<date>#Value]')\n  //by object\n  const res = m.groups()\n  t.equal(res.date.length, 2, here + '2-obj-results-date')\n  t.equal(res.month.length, 2, here + '2-obj-results-month')\n  t.equal(res.date.eq(0).text(), '5th', here + 'obj-date')\n  t.equal(res.month.eq(0).text(), 'june', here + 'obj-month')\n\n  const months = m.groups('month')\n  t.equal(months.length, 2, here + 'found two months')\n  const dates = m.groups('date')\n  t.equal(dates.length, 2, here + 'found two dates')\n\n  t.equal(months.eq(0).text(), 'june', here + 'one-month')\n  t.equal(dates.eq(0).text(), '5th', here + 'one-date')\n\n  t.equal(months.eq(1).text(), 'july', here + 'two-month')\n  t.equal(dates.eq(1).text(), '7th', here + 'two-date')\n\n  t.end()\n})\n\ntest('one named - three results', function (t) {\n  const doc = nlp('june the 5th, july the 7th, and sept the 12th.')\n  const m = doc.match('[<month>#Month]')\n  //by object\n  t.equal(m.groups('month').length, 3, here + '3 months, one sentence')\n  t.end()\n})\n\ntest('absolute pointers', function (t) {\n  const doc = nlp('i gave him two fourths of a slice')\n  let m = doc.match('#Value+')\n  m = m.match('#Value+')\n  m = m.match('[<num>two] [<dem>fourths]')\n  const { num, dem } = m.groups()\n  t.equal(num.text(), 'two', here + 'num')\n  t.equal(dem.text(), 'fourths', here + 'den')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/and.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/and] '\n\ntest('and-match', function (t) {\n  const doc = nlp('june and july cool')\n  let m = doc.match('(#Date && july)')\n  t.equal(m.out(), 'july', here + 'found july')\n\n  m = doc.match('(#Date && !july)')\n  t.equal(m.out(), 'june', here + 'found not july')\n\n  m = doc.match('(and && !foo && #Conjunction && .)')\n  t.equal(m.out(), 'and', here + 'three-match')\n\n  t.end()\n})\n\ntest('and-match-more', function (t) {\n  const doc = nlp('toronto and montreal. Sydney and Paris.')\n  let m = doc.match('(#ProperNoun && .)')\n  t.equal(m.length, 4, here + 'found all four')\n\n  m = doc.match('(#ProperNoun && /e/)')\n  t.equal(m.out(), 'montreal. Sydney', here + 'found e words')\n\n  m = doc.match('(#ProperNoun && !#Verb)')\n  t.equal(m.length, 4, here + 'and not')\n\n  m = doc.match('(#ProperNoun && #Verb)')\n  t.equal(m.length, 0, here + 'no and')\n\n  m = doc.match('(#ProperNoun && #Noun && * && .{1,3})')\n  t.equal(m.length, 4, here + 'four towns')\n\n  t.end()\n})\n\ntest('and-match-multi', function (t) {\n  const doc = nlp('toronto and montreal. Sydney and Paris.')\n  let m = doc.match('(#ProperNoun and && toronto .)')\n  t.equal(m.out(), 'toronto and', here + 'found one multi')\n\n  m = doc.match('(#ProperNoun and && toronto)')\n  t.equal(m.out(), 'toronto and', here + 'use longest match')\n\n  m = doc.match('(#ProperNoun and montreal && toronto)')\n  t.equal(m.out(), 'toronto and montreal.', here + 'use longest match 2')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/blocks.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/blocks] '\n\ntest('optional OR block', function (t) {\n  let m = nlp('start two end').match('start (one|two) end')\n  t.equal(m.text(), 'start two end', here + 'normal OR')\n\n  m = nlp('start two end').match('start (one|two)? end')\n  t.equal(m.text(), 'start two end', here + 'optional OR found')\n\n  m = nlp('start end').match('start (one|two)? end')\n  t.equal(m.text(), 'start end', here + 'optional OR not-found')\n\n  m = nlp('start seven end').match('start (one|two)? end')\n  t.equal(m.text(), '', here + 'optional OR missing')\n\n  m = nlp('start three four end').match('start (one|two eight seven|three four)? end')\n  t.equal(m.text(), 'start three four end', here + 'optional multi-OR found')\n\n  m = nlp('start three four end').match('start (one|two|three seven)? end')\n  t.equal(m.text(), '', here + 'optional multi-OR not-found')\n\n  m = nlp('start three four end').match('start (foo|bar|#Value .)? end')\n  t.equal(m.text(), 'start three four end', here + 'optional complex-block found')\n\n  m = nlp('start three four end').match('start (foo|bar|wrong #Value)? end')\n  t.equal(m.text(), '', here + 'optional complex-block not-found')\n\n  t.end()\n})\n\ntest('single OR block', function (t) {\n  let m = nlp('start three four end').match('start (#Value four) end')\n  t.equal(m.text(), 'start three four end', here + 'single complex-block found')\n\n  m = nlp('start three four end').match('start (#Value four)? end')\n  t.equal(m.text(), 'start three four end', here + 'single optional complex-block found')\n  t.end()\n})\n\ntest('not block', function (t) {\n  const doc = nlp('before two words after')\n  let m = doc.match(`before (#Value words) after`)\n  t.equal(m.text(), 'before two words after', here + 'normally matches')\n\n  m = doc.match(`before !(#Value words) after`)\n  t.equal(m.text(), '', here + 'negative doesnt match')\n\n  m = doc.match(`before (two && #Value) words after`)\n  t.equal(m.text(), 'before two words after', here + 'AND matches')\n\n  m = doc.match(`before !(two && #Value) words after`)\n  t.equal(m.text(), '', here + 'negative AND doesnt match')\n\n  m = doc.match(`before (foo|two|#Person) words after`)\n  t.equal(m.text(), 'before two words after', here + 'OR matches')\n\n  m = doc.match(`before !(foo|two|#Person) words after`)\n  t.equal(m.text(), '', here + 'negative OR doesnt match')\n\n  t.end()\n})\n\ntest('greedy inside a block', function (t) {\n  let doc = nlp('and foo foo')\n  let m = doc.match('(and foo+)')\n  t.equal(m.text(), 'and foo foo', here + 'greedy found two')\n\n  doc = nlp('and foo foo foo bar foo ')\n  m = doc.match('(and foo+)')\n  t.equal(m.text(), 'and foo foo foo', here + 'greedy found three')\n\n  doc = nlp('and foo otherwise foo')\n  m = doc.match('(and foo+)')\n  t.equal(m.text(), 'and foo', here + 'greedy found once')\n\n  doc = nlp('and otherwise foo foo')\n  m = doc.match('(and foo+)')\n  t.equal(m.text(), '', here + 'greedy unfound')\n\n  doc = nlp('and otherwise foo foo bar')\n  m = doc.match('(and foo+)+')\n  t.equal(m.text(), '', here + 'greedy outside and inside')\n\n  doc = nlp('and otherwise foo foo bar')\n  m = doc.match('(and foo)+')\n  t.equal(m.text(), '', here + 'greedy outside')\n\n  doc = nlp('and foo foo')\n  m = doc.match('(and foo*?)')\n  t.equal(m.text(), 'and foo foo', here + 'astrix optional')\n\n  doc = nlp('and foo1 foo2 foo3 foo4 bar foo ')\n  m = doc.match('(and /foo/+)')\n  t.equal(m.text(), 'and foo1 foo2 foo3 foo4', here + 'greedy found four')\n\n  t.end()\n})\n\ntest('greedy OR block', function (t) {\n  let doc = nlp('is walking')\n  let m = doc.match('is (#Adverb|not)+? walking')\n  t.equal(m.text(), 'is walking', here + 'greedy 0')\n  m = doc.match('is (#Adverb|not)?+ walking')\n  t.equal(m.text(), 'is walking', here + 'greedy 0 again')\n\n  doc = nlp('is really walking')\n  m = doc.match('is (#Adverb|not)+ walking')\n  t.equal(m.text(), 'is really walking', here + 'greedy 1')\n\n  doc = nlp('is really not walking')\n  m = doc.match('is (#Adverb|not)+? walking')\n  t.equal(m.text(), 'is really not walking', here + 'greedy 2')\n\n  doc = nlp('is really not quickly walking')\n  m = doc.match('is (#Adverb|not)+ walking')\n  t.equal(m.text(), 'is really not quickly walking', here + 'greedy 3')\n\n  doc = nlp('1 house, 2 boats, 3 farms')\n  t.equal(doc.match(`(#Value .)`).length, 3, here + '3 non-greedy')\n  t.equal(doc.match(`(#Value .)+`).length, 1, here + '1 greedy')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/capture.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/capture] '\n\ntest('match-capture-group', function (t) {\n  let m = nlp('John eats glue').match('[john]', 0)\n  t.equal(m.out('text'), 'John', here + 'capture-group-simple')\n\n  m = nlp('John Smith eats glue').match('[#Person+]', 0)\n  t.equal(m.out('text'), 'John Smith', here + 'capture-two')\n\n  m = nlp('ralf eats the glue').match('ralf [#Verb] the', 0)\n  t.equal(m.out('normal'), 'eats', here + 'simple subset')\n\n  m = nlp('ralf eats the glue').match('[ralf] [#Verb] the', 0)\n  t.equal(m.out('normal'), 'ralf', here + 'two-word capture')\n\n  m = nlp('i saw ralf eat the glue Mrs. Hoover').match('ralf [#Verb the glue] mrs', 0)\n  t.equal(m.out('normal'), 'eat the glue', here + 'three-word capture')\n\n  m = nlp('ralf eats the glue').match('* [#Verb]', 0)\n  t.equal(m.out('normal'), 'eats', here + 'capture after wildcard')\n\n  m = nlp('saw the Toronto International Documentary Film Festival yesterday').match('saw the? [#Noun+] yesterday', 0)\n  t.equal(m.out('text'), 'Toronto International Documentary Film Festival', here + 'greedy capture')\n\n  t.end()\n})\n\ntest('optional capture', function (t) {\n  const yup = nlp('hello world').match('hello [<found>world?]')\n  t.equal(yup.found, true, here + 'found yes')\n  t.equal(yup.groups('found').found, true, here + 'group found yes')\n  const yup2 = nlp('hello world').match('hello [<found>world]?')\n  t.equal(yup2.found, true, here + 'found yes2')\n  t.equal(yup.groups('found').found, true, here + 'group found yes')\n\n  const outside = nlp('hello nope').match('hello [<found>world]?')\n  t.equal(outside.found, true, here + 'still found optional')\n  t.equal(outside.groups('found').found, false, here + 'group found no')\n\n  const inside = nlp('hello nope').match('hello [<found>world?]')\n  t.equal(inside.found, true, here + 'still found optional')\n  t.equal(inside.groups('found').found, false, here + 'group found no2')\n\n  t.end()\n})\n\ntest('tricky capture', function (t) {\n  let doc = nlp.tokenize('during august')\n  let m = doc.match('^(on|during|in) [.]', 0)\n  t.equal(m.text('normal'), 'august', here + 'found capture')\n\n  // test for this weird non-match\n  doc = nlp(`to foo`)\n  m = doc.match('[.+] to')\n  t.equal(m.text(), '', here + 'optional-group not found')\n  // this is a creepy bug\n  m = doc.match('[.+] to', 0)\n  m.clone().text()\n  t.ok(true, here + 'creepy-group bug')\n\n  t.end()\n})\n\n\ntest('optional capture', function (t) {\n  const doc = nlp('sept 4 1998')\n  let m = doc.match('[<month>#Month] [<date>#Value] [<year>#Year]?')\n  t.equal(m.groups('year').found, true, here + '[]?')\n  m = doc.match('[<month>#Month] [<date>#Value] [<year>#Year?]')\n  t.equal(m.groups('year').found, true, here + '[?]')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/fancy-match.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/fancy-match] '\n\ntest('matchOne', function (t) {\n  const doc = nlp('one two three four five. one three four')\n  const arr = doc.matchOne('three four').out('array')\n  t.equal(arr.length, 1, 'one-match')\n  t.equal(arr[0], 'three four', 'found-match')\n  t.end()\n})\n\n// test('match-from-array :', function (t) {\n//   let m = nlp('spencer is really cool').match(['spencer'])\n//   t.equal(m.out('normal'), 'spencer', 'just-spencer')\n//   t.equal(m.length, 1, 'one-result')\n\n//   m = nlp('spencer is really cool').match([])\n//   t.equal(m.out('normal'), '', 'empty match')\n//   t.equal(m.length, 0, 'zero-results')\n\n//   m = nlp('spencer is really cool')\n//   let r = m.match(['spencer', 'really']).toUpperCase()\n//   t.equal(r.out('text'), 'SPENCER REALLY', 'match-spencer-really')\n//   t.equal(r.length, 2, 'two-results')\n\n//   t.equal(m.out('text'), 'SPENCER is REALLY cool', 'match-spencer-really')\n//   t.equal(m.length, 1, 'still-one-result')\n//   t.end()\n// })\n\ntest('greedy-capture', function (t) {\n  let m = nlp('so ralf and really eats the glue').match('* [eats] the', 0)\n  t.equal(m.out('normal'), 'eats', here + 'one-captures')\n\n  m = nlp('so ralf really, really eats the glue').match('[#Adverb+] eats the', 0)\n  t.equal(m.out('normal'), 'really really', here + 'greedy-capture')\n\n  m = nlp('so ralf and really eats the glue').match('* [eats the]', 0)\n  t.equal(m.out('normal'), 'eats the', here + 'two-captures')\n\n  m = nlp('so ralf really eats the glue').match('really [eats the] *', 0)\n  t.equal(m.out('normal'), 'eats the', here + 'astrix after')\n\n  m = nlp('so ralf really eats the glue').match('really * [eats the]', 0)\n  t.equal(m.out('normal'), 'eats the', here + 'astrix is not necessary')\n  t.end()\n})\n\ntest('match-posessive', function (t) {\n  const doc = nlp(`spencer's house`)\n  let m = doc.match('spencer')\n  t.equal(m.found, true, here + 'possessive normal')\n\n  m = doc.match('(spencer|foo)')\n  t.equal(m.found, true, here + 'possessive in fast-OR')\n\n  m = doc.match('(spencer|foo bar)')\n  t.equal(m.found, true, here + 'possessive in slow-OR')\n  t.end()\n})\n\ntest('match-doc', function (t) {\n  const doc = nlp('the boy and the girl.')\n  const m = doc.match('(boy|girl)')\n  const arr = doc.match(m).out('array')\n  t.deepEqual(arr, ['boy', 'girl.'], here + 'match-doc')\n  t.end()\n})\n\ntest('match-doc-freeze', function (t) {\n  const doc = nlp('the boy and the girl.')\n  const m = doc.match('(boy|girl)')\n  doc.prepend('ooh baby')\n  const arr = doc.match(m).out('array')\n  t.deepEqual(arr, ['boy', 'girl.'], here + 'match-doc-2')\n  t.end()\n})\n\ntest('match-term-id', function (t) {\n  const doc = nlp('one two three')\n  const two = doc.match('two')\n  const id = two.json()[0].terms[0].id\n  const m = doc.match([{ id: id }])\n  t.ok(m.has('^two$'), here + 'match-id')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/greedy-capture.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/greedy-capture] '\n\n/*\n * Capture group doesn't work for .+ or *\n * https://github.com/spencermountain/compromise/issues/654\n */\n\ntest('issue-654: named greedy capture', function (t) {\n  let m\n\n  m = nlp('ralf eats the glue').match('ralf eats [<target>*]').groups('target')\n  t.equal(m.out('normal'), 'the glue', here + 'wildcard capture at the end')\n\n  m = nlp('ralf eats the glue').match('ralf eats [<target>*] glue').groups('target')\n  t.equal(m.out('normal'), 'the', here + 'wildcard capture in the middle')\n\n  m = nlp('ralf eats the glue').match('ralf eats [<target>.+]').groups('target')\n  t.equal(m.out('normal'), 'the glue', here + 'wildcard capture at the end')\n\n  m = nlp('ralf eats the glue').match('ralf eats [<target>.+] glue').groups('target')\n  t.equal(m.out('normal'), 'the', here + 'wildcard capture in the middle')\n\n  t.end()\n})\n\ntest('issue-654: greedy capture', function (t) {\n  let m\n\n  m = nlp('ralf eats the glue').match('ralf eats [*]', 0)\n  t.equal(m.out('normal'), 'the glue', here + 'wildcard capture at the end')\n\n  m = nlp('ralf eats the glue').match('ralf eats [*] glue', 0)\n  t.equal(m.out('normal'), 'the', here + 'wildcard capture in the middle')\n\n  m = nlp('ralf eats the glue').match('ralf eats [.+]', 0)\n  t.equal(m.out('normal'), 'the glue', here + 'wildcard capture at the end')\n\n  m = nlp('ralf eats the glue').match('ralf eats [.+] glue', 0)\n  t.equal(m.out('normal'), 'the', here + 'wildcard capture in the middle')\n\n  t.end()\n})\n\ntest('test greedy min/max', function (t) {\n  let doc = nlp('hello John, Lisa, Fred').match('#FirstName{3,6}')\n  t.equal(doc.text(), 'John, Lisa, Fred', 'min met')\n\n  doc = nlp('hello John, Lisa, Fred').match('#FirstName{4,6}')\n  t.equal(doc.found, false, 'min not met')\n\n  doc = nlp('hello John, Lisa, Fred').match('#FirstName{1,2}')\n  t.equal(doc.eq(0).text(), 'John, Lisa', 'max-match')\n  t.equal(doc.eq(1).text(), 'Fred', 'max-over-run')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/lookahead.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/lookahead] '\n\n\ntest('look-ahead', function (t) {\n  const doc = nlp(`i walked to a store today. the store was very nice`)\n  const m = doc.match('store').lookAhead('#Adjective')\n  t.deepEqual(m.out('array'), ['nice'], here+'found all upcoming adjectives')\n\n  const m2 = doc.match('store').lookAhead('.')\n  t.deepEqual(m2.out('array'), ['today.', 'was', 'very', 'nice'], here+'found all upcoming words')\n\n  const m3 = doc.match('store').lookAhead('farmer')\n  t.equal(m3.found, false, here+'lookahead empty')\n\n  const m4 = doc.match('nice').lookAhead('.')\n  t.equal(m4.found, false, here+'lookahead on edge empty')\n\n  const m5 = nlp('it is raining').match('raining').lookAhead()\n  t.equal(m5.found, false, here+'lookahead at end empty')\n\n  const m6 = nlp('it is raining today and tomorrow').match('raining').lookAhead()\n  t.equal(m6.text(), 'today and tomorrow', here+'lookahead blank finds all')\n\n  t.end()\n})\n\ntest('lookahead from parent is blank', function (t) {\n  let doc = nlp('it is raining')\n  t.equal(doc.lookAhead('.').found, false, 'no after 1')\n\n  doc = nlp('oh wow, it is raining. it is snowing? it is very cold.')\n  t.equal(doc.lookAhead('.').found, false, 'no after 1')\n  t.end()\n})\n\ntest('look-behind', function (t) {\n  const doc = nlp(`i walked to a store. the store was very nice`)\n  const m = doc.match('store').lookBehind('#Determiner')\n  t.deepEqual(m.out('array'), ['a', 'the'], 'found previous determiners')\n\n  const m2 = doc.match('store').lookBehind('.')\n  t.deepEqual(m2.out('array'), ['i', 'walked', 'to', 'a', 'the'], 'found all previous words')\n\n  const m3 = doc.match('store').lookBehind('farmer')\n  t.equal(m3.found, false, 'lookbehind not found')\n\n  const m4 = doc.match('i').lookBehind('.')\n  t.equal(m4.found, false, 'lookbehind on edge empty')\n\n  const m6 = nlp('it is raining today and tomorrow').match('raining').lookBehind()\n  t.equal(m6.text(), 'it is', 'lookbehind blank finds all')\n\n  t.end()\n})\n\ntest('look-behind-last', function (t) {\n  const doc = nlp(`a priest walked into a bar`)\n  const m = doc.match('bar').lookBehind('a').last()\n  m.replace('the')\n  t.equal(doc.text(), `a priest walked into the bar`, 'lookbehind most-recent')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/match-tricky.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/match-tricky] '\n\ntest('fancy match', function (t) {\n  const arr = [\n    //misc\n    ['doug is good', '', 0],\n    ['doug is good', '.', 3],\n    ['doug is good', '.?', 3],\n    ['doug is good', '.+', 3],\n\n    //contractions\n    [\"he's nice\", 'he is', 2],\n    [\"he's nice\", 'is nice', 2],\n    [\"he's nice\", \"he's\", 2],\n    [\"he's nice\", \"he's nice\", 3],\n    [\"he's nice\", 'nice', 1],\n\n    //over/under\n    ['he is nice', 'is nice and good', 0],\n    ['is nice', 'he is nice', 0],\n\n    //dot\n    ['doug is good', 'doug is good', 3],\n    ['doug is good', 'doug . good', 3],\n    ['doug is good', 'doug is .', 3],\n    ['doug is good', '. is .', 3],\n    ['doug is good', '. . .', 3],\n    ['doug is good', '. . . .', 0],\n\n    //optional miss\n    ['doug is good', 'doug is really? good', 3],\n    ['doug is good', 'doug is good? good', 3],\n    ['doug is good', 'doug is .? good', 3], //tricky 'anything optional' bug\n    ['doug is good', 'doug is #Adverb? good', 3],\n    //optional has\n    ['doug is really good', 'doug is really? good', 4],\n    ['doug is really good', 'doug is .? good', 4],\n    ['doug is really good', 'doug is #Adverb? good', 4],\n    //asterix empty\n    ['doug is good', 'doug *', 3],\n    ['doug is good', 'doug is *', 3],\n    ['doug is good', '*', 3],\n    //asterix positive\n    ['doug is good', 'doug * good', 3],\n    ['doug is really good', 'doug * good', 4],\n    ['doug is really so very good', 'doug * good', 6],\n    ['doug is really so very good at stuff', 'doug * good', 6],\n    ['we think doug is really so very good at stuff', 'doug * good', 6],\n    //asterix negative\n    ['doug is good', 'doug * bad', 0],\n    ['doug is good', 'spencer * bad', 0],\n    ['doug is good', 'spencer *', 0],\n    ['doug is good', 'doug * is', 2], //another tricky 'greedy optional' bug\n    ['cool, fun, great, nice', '#Adjective+ great', 3],\n\n    //\n    ['Dr. Spencer Smith says hi', 'dr', 1],\n    ['Dr. Spencer Smith says hi', 'dr spencer', 2],\n    ['Dr. Spencer Smith says hi', 'dr spencer smith', 3],\n    ['Dr. Spencer Smith says hi', 'dr spencer smith says', 4],\n    ['Lately, Dr. Spencer Smith says hi', 'lately dr spencer smith', 4],\n    //start ^\n    ['in toronto', '^toronto', 0],\n    ['toronto', '^toronto', 1],\n    ['in toronto', '^in toronto', 2],\n    ['in toronto', 'in ^toronto', 0],\n    //end $\n    ['it snows', 'it snows', 2],\n    ['it snows', 'snows$', 1],\n    ['it snows', 'it snows$', 2],\n    ['it snows', 'it$ snows', 0],\n    ['it snows', 'foo$', 0],\n    //negative !\n    ['it really snows', 'it #Adverb snows', 3],\n    ['it really snows', 'it !#Adverb snows', 0],\n    ['it really snows. it quickly goes.', 'it !#Adverb', 0],\n    ['it is nice.', '!#Adverb', 3],\n    //max/min {}\n    ['if it goes really well', 'if .{1,2} well', 0],\n    ['if it goes really well', 'if .{1,6} well', 5],\n    ['so i said that spencer is nice', '^.{1,3} spencer', 0],\n    ['so i said that spencer is nice', '^.{1,6} spencer', 5],\n    ['one two three four five', 'one two{1,2}', 2],\n    ['one two three four five', 'one two{1,3}', 2],\n    ['one two three four five', 'one two{0,3}', 2],\n    ['one two three four five', 'one .{0,3} two', 2],\n    ['one two three four five', 'one .{0,3} three', 3],\n    ['one two three four five', 'one .{1,3} two', 0],\n    ['one two three four five six seven', 'one .{0,4} six seven', 7],\n    // unmet min\n    [`bar walked`, `foo{2} walked`, 0],\n    [`foo walked`, `foo{2} walked`, 0],\n    [`we've walked`, `foo{2} walked`, 0],\n    // no min (optional)\n    [`foo walked`, `bar{0,2} walked`, 1],\n    [`foo walked`, `bar{,2} walked`, 1],\n    //optional/consecutive\n    ['is really walking', 'is #Adverb+? walking', 3],\n    ['is walking', 'is #Adverb+? walking', 2],\n    ['is really really walking', 'is #Adverb+? walking', 4],\n    ['is really not walking', 'is (#Adverb|not)+? walking', 4],\n    ['is really not quickly walking', 'is (#Adverb|not)+? walking', 5],\n    ['is walking', 'is (#Adverb|not)+? walking', 2],\n    ['Phoenix AZ', '#City #Region', 2],\n    //this isn't working\n    ['the canadian senate', 'the (united states|canadian) senate', 3],\n    ['the canadian senate', '(canadian|united states|british)', 1],\n  ]\n  arr.forEach(function (a) {\n    const r = nlp(a[0]).match(a[1]).terms() || []\n    const msg = \"'\" + a[0] + \"' - - - '\" + a[1] + \"' - - got:\" + r.length + '  want:' + a[2]\n    t.equal(r.length, a[2], here + msg)\n  })\n  t.end()\n})\n\ntest('consecutive greedy cases', function (t) {\n  const doc = nlp('one two')\n  let m = doc.match('#Value #Value')\n  t.equal(m.length, 1, here + 'consecutive-found one')\n  t.equal(m.eq(0).text(), 'one two', here + 'consecutive-found both')\n\n  m = doc.match('#Value+ #Value')\n  t.equal(m.length, 1, here + 'plus-found one')\n  t.equal(m.eq(0).text(), 'one two', here + 'plus-found both')\n\n  m = doc.match('#Value* #Value')\n  t.equal(m.length, 1, here + 'astrix-found one')\n  t.equal(m.eq(0).text(), 'one two', here + 'astrix-found both')\n\n  m = doc.match('#Value? #Value')\n  t.equal(m.length, 1, here + 'optional-found one')\n  t.equal(m.eq(0).text(), 'one two', here + 'optional-found both')\n\n  m = nlp.tokenize('one one').match('one? one')\n  t.equal(m.length, 1, here + 'optional-double')\n  m = nlp.tokenize('one one two').match('one? one two')\n  t.equal(m.text(), 'one one two', here + 'found all three terms')\n\n  t.end()\n})\n\ntest('tricky-case', function (t) {\n  t.equal(nlp('Number II').has('Number II'), true, here + 'uppercase-match')\n  t.equal(nlp('Number I').has('Number I'), true, here + 'uppercase-match')\n  t.end()\n})\n\n// end-OR match bug\ntest('multi-word end OR', function (t) {\n  let doc = nlp(`foo at the end.`)\n  let m = doc.match('foo (bar|at the end)$')\n  t.equal(m.text(), 'foo at the end.', here + 'end-or')\n\n  doc = nlp(`not at the end word.`)\n  m = doc.match('foo (bar|at the end)$')\n  t.equal(m.text(), '', here + 'not-end-or')\n\n  t.end()\n})\n\ntest('post-process', function (t) {\n  let doc = nlp(`jack is guarded end`)\n  let m = doc.match('is guarded foo?$')\n  t.equal(m.found, false, here + 'no end')\n\n  doc = nlp(`start jack is guarded end`)\n  m = doc.match('^start? jack')\n  t.equal(m.text(), 'start jack', here + 'optional-start')\n  t.end()\n})\n\n// test('doc-as-input', function (t) {\n//   const doc = nlp('he is from Phoenix AZ')\n//   const m = doc.match('#City')\n//   const matchWith = doc.match(m).out('normal')\n//   const without = doc.not(m).out('text')\n//   t.equal(matchWith, 'phoenix', 'text-as-match')\n//   t.equal(without, 'he is from AZ', 'text-as-not')\n//   t.end()\n// })\n\n// test('multi-doc-as-input', function (t) {\n//   const doc = nlp('before three farms after. foo bar farms baz')\n//   let a = doc.match('.')\n//   let b = doc.match(a)\n//   t.equal(a.length, b.length, 'match single terms')\n\n//   a = doc.match('. .')\n//   b = doc.match(a)\n//   t.equal(a.length, b.length, 'match double terms')\n\n//   a = doc.match('. . .')\n//   b = doc.match(a)\n//   t.equal(a.length, b.length, 'match triple terms')\n\n//   a = doc.match('farms')\n//   b = doc.match(a)\n//   t.equal(a.length, b.length, 'match terms two-places')\n\n//   a = doc.terms().not('farms')\n//   b = doc.match(a)\n//   t.equal(a.length, b.length, 'match skip terms')\n//   t.end()\n// })\n\ntest('anchor-with-greedy', function (t) {\n  const doc = nlp.tokenize('a a b b')\n  let m = doc.match('^a a b b$')\n  t.equal(m.found, true, here + 'simple anchors not found')\n\n  m = doc.match('^a+ b b$')\n  t.equal(m.found, true, here + 'start-anchor greedy not found')\n\n  m = doc.match('^a a b+$')\n  t.equal(m.found, true, here + 'end-anchor greedy not found')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/match.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/match] '\n\ntest('term-match :', function (t) {\n  const arr = [\n    ['quick', 'quick', true],\n    ['Quick', 'Quick', true],\n    ['quick', 's', false],\n    ['quick', '#Adjective', true],\n    ['quick', '#Noun', false],\n    ['quick', '(fun|nice|quick|cool)', true],\n    ['quick', '(fun|nice|good)', false],\n  ]\n  arr.forEach(function (a) {\n    const m = nlp(a[0]).match(a[1])\n    const msg = a[0] + ' matches ' + a[1] + ' ' + a[2]\n    t.equal(m.found, a[2], here + msg)\n  })\n  t.end()\n})\n\ntest('sentence-match:', function (t) {\n  const arr = [\n    ['the dog played', 'the dog', 'the dog'],\n    ['the dog played', 'the dog played', 'the dog played'],\n    ['the dog played', 'the #Noun', 'the dog'],\n    ['the dog played', 'the #Noun played', 'the dog played'],\n    ['the dog played', 'the cat played', ''],\n    ['the dog played', 'the #Adjective played', ''],\n    ['the dog played', 'the (cat|dog|piano) played', 'the dog played'],\n    ['the dog played', 'the (cat|piano) played', ''],\n    ['the dog played', 'the . played', 'the dog played'],\n    //optional\n    ['the dog played', 'the dog quickly? played', 'the dog played'],\n    ['the dog played', 'the dog #Adverb? played', 'the dog played'],\n    ['the dog quickly played', 'the dog #Adverb? played', 'the dog quickly played'],\n    ['the dog quickly played', 'the dog #Adverb played', 'the dog quickly played'],\n    ['the dog quickly played', 'the dog . played', 'the dog quickly played'],\n    ['the dog quickly played', 'the dog .? played', 'the dog quickly played'],\n    // ['the dog played', 'the dog .? played', 'the dog played'],\n\n    //leading/trailing logic\n    ['the dog played', 'the dog played$', 'the dog played'],\n    ['the dog played', 'the dog', 'the dog'],\n    ['the dog played', 'the dog$', ''],\n    ['the dog played', 'the dog$ played', ''],\n    ['the dog played', '^the dog', 'the dog'],\n    ['the dog played', 'dog played', 'dog played'],\n    ['the dog played', '^dog played', ''],\n    ['the dog played', '^played', ''],\n    ['the dog played', '^the', 'the'],\n\n    ['john eats glue', 'john eats glue', 'john eats glue'],\n    ['john eats glue', 'john eats', 'john eats'],\n    ['john eats glue', 'eats glue', 'eats glue'],\n    ['john eats glue', 'eats glue all day', ''],\n\n    //test contractions\n    // [`if you don't mind`, `you don't mind`, `you don't mind`],\n    [`if you don't mind`, `you don't care`, ``],\n    // [`if you don't mind`, `you don't`, `you don't`],\n    // [`if you don't mind`, `don't mind`, `don't mind`],\n\n    // [`if you didn't care`, `didn't`, `didn't`], //TODO:support me\n\n    // [`if you wouldn't care, i'll eat here`, `i'll eat`, `i'll eat`], //omg hard one\n\n    // [`don't go`, `do not`, `don't`],\n    [`do not go`, `do not`, `do not`],\n    // [`i dunno`, `do not`, `dunno`],\n    //bugs\n    // [`really remind me to buy`, '#Adverb? #Infinitive (me|us) (to|for)', `really remind me to`],\n  ]\n  arr.forEach(function (a) {\n    const m = nlp(a[0]).match(a[1])\n    if (!m.found) {\n      t.equal(a[2], '', here + 'no-match: ' + a[0] + ' - -' + a[1])\n    } else {\n      const msg = \"'\" + a[0] + \"'  - \" + a[1] + \" - - have : '\" + m.out('normal') + \"'\"\n      t.equal(m.out('normal'), a[2], here + msg)\n    }\n  })\n  t.end()\n})\n\ntest('tag-match-tag :', function (t) {\n  const m = nlp('apple is cool')\n  m.match('apple').tag('Person')\n  const p = m.match('#Person')\n  t.equal(p.out('normal'), 'apple', here + 'apple-tagged')\n  t.equal(m.length, 1, here + 'one-result')\n  t.end()\n})\n\ntest('reduced matches', function (t) {\n  let doc = nlp(`the donkey's hotel`)\n  t.equals(doc.has('donkey'), true, 'apostrophe-s')\n\n  doc = nlp(`the donkeys' hotel`)\n  t.equals(doc.has('donkeys'), true, 's-apostrophe')\n\n  t.end()\n})\n\ntest('slashes-basic', function (t) {\n  const doc = nlp(`spencer is/was trying.`)\n  t.equal(doc.terms().length, 3, 'three terms')\n  t.equal(doc.match('#Person #Verb trying').found, true, 'verb trying')\n  // t.equal(doc.match('#Person is trying').found, true, 'is trying')\n  t.end()\n})\n\n// test('slashes-complex', function (t) {\n// doc = nlp(`spencer is/was trying`)\n// 1. doc.has('#PresentTense') == true (choose first)\n// 2. doc.has('#Verb') (only common tags)\n// 3. doc.has('#PastTense') && doc.has('#PresentTense') :/\n\n// doc = nlp(`spencer is/was trying`)\n// 1b. doc.has('is') == true (choose first)\n// 2b. doc.has('was') == true  (find both)\n// 3b. doc.has('is') == false  (find none)\n//   t.end()\n// })\n"
  },
  {
    "path": "tests/two/match/min-max.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/min-max] '\n\ntest('match min-max', function (t) {\n  let doc = nlp('hello1 one hello2').match('#Value{7,9}')\n  t.equal(doc.out(), '', here + 'match was too short')\n\n  doc = nlp('hello1 one two three four five hello2').match('#Value{3}')\n  t.equal(doc.out(), 'one two three', here + 'exactly three')\n\n  doc = nlp('hello1 one two three four five hello2').match('#Value{3,3}')\n  t.equal(doc.out(), 'one two three', here + 'still exactly three')\n\n  doc = nlp('hello1 one two three four five hello2').match('#Value{3,}')\n  t.equal(doc.out(), 'one two three four five', here + 'minimum three')\n\n  doc = nlp('hello1 one two three four five hello2').match('hello1 .{3}')\n  t.equal(doc.out(), 'hello1 one two three', here + 'unspecific greedy exact length')\n\n  doc = nlp('hello1 one two').match('hello1 .{3}')\n  t.equal(doc.out(), '', here + 'unspecific greedy not long enough')\n\n  t.end()\n})\n\ntest('min-max with 0', function (t) {\n  const arr = [\n    ['he got a car for christmas', 'a car'],\n    ['a car', 'a car'],\n    ['a really cool car', 'a really cool car'],\n    ['he got a cool car for christmas', 'a cool car'],\n    ['he got a really cool car for christmas', 'a really cool car'],\n    ['he got a really cool fast car for christmas', 'a really cool fast car'],\n    ['he got a really super cool fast car for christmas', ''],\n    // test false-negatives\n    ['he got a hat for christmas', ''],\n    ['he got a clever hat for christmas', ''],\n    ['he got a clever nice cool warm hat for christmas', ''],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0])\n    const m = doc.match('a .{0,3} car')\n    t.equal(m.text(), a[1], here + a[0])\n  })\n\n  const doc = nlp('got a car')\n  let m = doc.match('a .{0,3}? car')\n  t.equal(m.text(), 'a car', here + 'with-question-mark')\n\n  m = doc.match('a .{0,3} car')\n  t.equal(m.text(), 'a car', here + 'without-question-mark')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/multiword.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/multiword] '\n\ntest('multiword OR', function (t) {\n  let m = nlp('i saw the canadian senate floor').match('the (united states|canadian) senate')\n  t.equal(m.text(), 'the canadian senate', here + 'one-word multi')\n\n  m = nlp('i saw the united states senate floor').match('the (united states|canadian) senate')\n  t.equal(m.text(), 'the united states senate', here + 'two-word multi')\n\n  m = nlp('i saw the united states of america senate floor').match(\n    'the (brazillian|united states of america|canadian) senate'\n  )\n  t.equal(m.text(), 'the united states of america senate', here + 'four-word multi')\n\n  m = nlp('i saw him').match('i saw (the person|#Pronoun)')\n  t.equal(m.text(), 'i saw him', here + 'single-tag multi')\n\n  m = nlp('i saw everything').match('i saw (the person|#Pronoun)?')\n  t.equal(m.text(), 'i saw', here + 'multi-word optional')\n\n  m = nlp('i saw the person go').match('i saw [(the hat|#Pronoun)]')\n  t.equal(m.text(), '', here + 'multi-word negative')\n\n  m = nlp('i saw the person go').match('i saw [(the person|#Pronoun)]', 0)\n  t.equal(m.text(), 'the person', here + 'multi-word group')\n\n  m = nlp('i saw tina turner go').match('i saw [<match>(the person|#Pronoun|tina turner)]', 'match')\n  t.equal(m.text(), 'tina turner', here + 'multi-word named-group')\n\n  m = nlp('i saw tina harris go').match('i saw [<match>(the person|#Pronoun|tina turner)]', 'match')\n  t.equal(m.text(), '', here + 'multi-word named-group negative')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/not.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/not] '\n\ntest('not-basic :', function (t) {\n  let m = nlp('spencer is really cool').not('brown')\n  t.equal(m.out('text'), 'spencer is really cool', here + 'missing-not')\n  t.equal(m.length, 1, here + 'one-result')\n\n  m = nlp('spencer is really cool').not('#Adverb')\n  t.equal(m.out('text'), 'spencer is cool', here + 'one-not')\n  t.equal(m.length, 2, here + 'two-results')\n\n  m = nlp('spencer is really cool').not('#Adverb+')\n  t.equal(m.out('text'), 'spencer is cool', here + 'still-one-not')\n  t.equal(m.length, 2, here + 'two-results-2')\n\n  m = nlp('spencer is really cool').not('#Adverb+')\n  t.equal(m.out('text'), 'spencer is cool', here + 'two-not')\n  t.equal(m.length, 2, here + 'two-results-3')\n\n  m = nlp('spencer is really cool').not('is #Adverb+')\n  t.equal(m.out('text'), 'spencer cool', here + 'three-not')\n  t.equal(m.length, 2, here + 'two-results-4')\n\n  m = nlp('spencer is really cool. John is really nice').not('#Adverb')\n  t.equal(m.out('text'), 'spencer is cool. John is nice', here + 'two-terms-matches')\n  t.equal(m.length, 4, here + 'four-results')\n\n  m = nlp('spencer is really cool. John is really nice.').not('pardon me, #Adverb')\n  t.equal(m.out('text'), 'spencer is really cool. John is really nice.', here + 'tricky-no-match')\n  t.equal(m.length, 2, here + 'two-original-results')\n\n  t.end()\n})\n\ntest('not-from-array :', function (t) {\n  let m = nlp('spencer is really cool').not('spencer')\n  t.equal(m.out('normal'), 'is really cool', here + 'not-spencer')\n  t.equal(m.length, 1, here + 'one-results')\n\n  m = nlp('spencer is really cool').not('lkjasdf')\n  t.equal(m.out('normal'), 'spencer is really cool', here + 'not-spencer')\n  t.equal(m.length, 1, here + 'one-results-2')\n\n  // m = nlp('spencer is really cool').not(['spencer', 'really'])\n  // t.equal(m.out('normal'), 'is cool', 'not-spencer-really')\n  // t.equal(m.length, 2, 'two-results-arr')\n  t.end()\n})\n\ntest('not-from-match :', function (t) {\n  const doc = nlp(`nooooo one two for sure`)\n  const m = doc.match('one two')\n  let res = m.not('one')\n  t.equal(res.text(), 'two', 'not first, so second')\n  res = m.not('two')\n  t.equal(res.text(), 'one', 'not second, so first')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/or.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/or] '\n\ntest('or-match-basic', function (t) {\n  const doc = nlp('toronto and montreal. London and Paris')\n  let m = doc.match('(#Place  | and )')\n  t.equal(m.out(), 'toronto and montreal. London and Paris', here + 'whitespace-or')\n\n  m = doc.match('(#Place  | nonono no no| and )')\n  t.equal(m.out(), 'toronto and montreal. London and Paris', here + 'whitespace-or-multi1')\n\n  m = doc.match('( nonono no no|| . )')\n  t.equal(m.out(), 'toronto and montreal. London and Paris', here + 'whitespace-or-dot')\n  t.end()\n})\n\n// test('or-match-multi', function(t) {\n//   let doc = nlp('toronto and montreal. Sydney and Paris')\n//   let m = doc.match('(#Place  and montreal )')\n//   t.equal(m.out(), 'toronto and montreal', 'whitespace-or')\n//   t.end()\n// })\n"
  },
  {
    "path": "tests/two/match/root-match.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/root-match] '\n\ntest('root-verb', function (t) {\n  const arr = [\n    ['She dances gracefully.', '{dance}'],\n    ['They have been studying for hours.', '{study}'],\n    ['The cat slept on the sofa.', '{sleep}'],\n    ['I will visit my grandparents next week.', '{visit}'],\n    [\"You shouldn't drive so fast.\", '{drive}'],\n    ['Birds were chirping in the morning.', '{chirp}'],\n    ['The children often play in the park.', '{play}'],\n    ['We might go to the cinema tonight.', '{go}'],\n    [\"He doesn't understand the question.\", '{understand}'],\n    ['They ran quickly to catch the bus.', '{run}'],\n    ['She has painted her room blue.', '{paint}'],\n    ['You are listening to the radio.', '{listen}'],\n    [\"They'll bake a cake for the party.\", '{bake}'],\n    [\"I haven't seen this movie yet.\", '{see}'],\n    ['The dog barks loudly at strangers.', '{bark}'],\n    ['We were swimming in the ocean.', '{swim}'],\n    ['She will write a book one day.', '{write}'],\n    // ['They have traveled around the world.', '{travel}'],\n    ['The teacher is explaining the lesson.', '{explain}'],\n    ['He tried to open the door.', '{try}'],\n    ['He climbs the mountain every year.', '{climb}'],\n    ['They had forgotten their passports at home.', '{forget}'],\n    ['I will be cooking dinner when you arrive.', '{cook}'],\n    ['You sing beautifully.', '{sing}'],\n    ['She had been reading for two hours.', '{read}'],\n    ['We enjoy watching movies on weekends.', '{enjoy}'],\n    ['The sun rises in the east.', '{rise}'],\n    ['They will have completed the project by then.', '{complete}'],\n    ['He is wearing a new shirt.', '{wear}'],\n    ['I dream of traveling to Paris.', '{dream}'],\n    [\"The baby cries when she's hungry.\", '{cry}'],\n    ['They used to live in New York.', '{live}'],\n    ['The gardener is planting new flowers.', '{plant}'],\n    ['She will have been working there for five years.', '{work}'],\n    ['The boys threw the ball in the yard.', '{throw}'],\n    [\"I was wondering if you'd like to join us.\", '{wonder}'],\n    ['Birds fly south for the winter.', '{fly}'],\n    ['They have bought a new car.', '{buy}'],\n    ['She is considering studying abroad.', '{consider}'],\n    ['You have grown since I last saw you.', '{grow}'],\n    ['The chef prepares delicious meals.', '{prepare}'],\n    ['She had hoped to see him again.', '{hope}'],\n    [\"I've been waiting for this moment.\", '{wait}'],\n    ['The tree sheds its leaves in autumn.', '{shed}'],\n    ['He will give a speech at the conference.', '{give}'],\n    ['She knits in her free time.', '{knit}'],\n    ['They laughed at the joke.', '{laugh}'],\n    ['You should eat healthy foods.', '{eat}'],\n    [\"I've always loved the rain.\", '{love}'],\n    ['The artist is drawing a portrait.', '{draw}'],\n    ['They had sung in the choir.', '{sing}'],\n    [\"The door won't open.\", '{open}'],\n    ['The cat hunts at night.', '{hunt}'],\n    ['She has been wanting to see that movie.', '{want}'],\n    ['We had driven all night.', '{drive}'],\n    [\"I'll bring snacks to the party.\", '{bring}'],\n    ['The students are learning about history.', '{learn}'],\n    [\"You shouldn't lie to your friends.\", '{lie}'],\n    ['He builds models as a hobby.', '{build}'],\n    ['They were watching the sunset.', '{watch}'],\n    ['The horse gallops across the field.', '{gallop}'],\n    ['I usually drink tea in the morning.', '{drink}'],\n    ['The river flows through the city.', '{flow}'],\n    ['She has always admired her sister.', '{admire}'],\n    ['I was running when I tripped.', '{run}'],\n    ['You are going to love this show.', '{love}'],\n    ['She hides her diary under the bed.', '{hide}'],\n    [\"They've always believed in kindness.\", '{believe}'],\n    [\"I'll be taking the train tomorrow.\", '{take}'],\n    [\"You've changed a lot over the years.\", '{change}'],\n\n    ['The wind blows strongly at night.', '{blow}'],\n    ['She always smiles when she sees him.', '{smile}'],\n    [\"I'll be joining the club next week.\", '{join}'],\n    [\"They've been practicing for the competition.\", '{practice}'],\n    ['The fish swims swiftly in the stream.', '{swim}'],\n    ['I have decided to take the job.', '{decide}'],\n    ['You were listening to music all night.', '{listen}'],\n    ['He often dreams about flying.', '{dream}'],\n    ['She will be performing on stage.', '{perform}'],\n    ['The children usually skip rope during recess.', '{skip}'],\n    [\"I've missed the bus again.\", '{miss}'],\n    ['The sun sets beautifully over the horizon.', '{set}'],\n    ['She was crying over the sad movie.', '{cry}'],\n    ['The students often discuss their projects.', '{discuss}'],\n    // [\"I'll be traveling to Spain next month.\", '{travel}'],\n    ['The bird often perches on that branch.', '{perch}'],\n    [\"You've been working really hard lately.\", '{work}'],\n    ['The phone rings incessantly.', '{ring}'],\n    ['She was always teasing her younger brother.', '{tease}'],\n    [\"I've baked cookies for the party.\", '{bake}'],\n    ['He is going to propose tonight.', '{propose}'],\n    [\"They've been thinking about moving out.\", '{think}'],\n    ['I was playing video games last night.', '{play}'],\n    ['The dog always chases the postman.', '{chase}'],\n    ['The flowers bloom in spring.', '{bloom}'],\n    ['He will have written three books by next year.', '{write}'],\n    ['She has never tasted such delicious ice cream.', '{taste}'],\n    [\"I'm often hiking in the mountains.\", '{hike}'],\n    ['The baby was crawling towards the toy.', '{crawl}'],\n    ['They always celebrate their anniversary.', '{celebrate}'],\n    ['The mechanic fixes cars.', '{fix}'],\n    ['I will have finished my work by then.', '{finish}'],\n    ['She sings in the shower every morning.', '{sing}'],\n    ['The tree has grown so tall over the years.', '{grow}'],\n    ['You were always encouraging me.', '{encourage}'],\n    [\"I'm planning a trip to the beach.\", '{plan}'],\n    ['They have never understood the concept.', '{understand}'],\n    ['She collects stamps from different countries.', '{collect}'],\n    ['You were laughing so hard at that joke.', '{laugh}'],\n    ['The kids love playing in the snow.', '{play}'],\n    [\"She'll be attending the workshop next week.\", '{attend}'],\n    [\"I've often wondered about the universe.\", '{wonder}'],\n    ['They dive into the pool every summer.', '{dive}'],\n    ['The cat always scratches the furniture.', '{scratch}'],\n    [\"He'll be dancing at the event.\", '{dance}'],\n    [\"You've inspired many people.\", '{inspire}'],\n    [\"She's always cherished those memories.\", '{cherish}'],\n    ['The rain pours heavily in the monsoon.', '{pour}'],\n    [\"They've always admired her courage.\", '{admire}'],\n    [\"I've been waiting here for hours.\", '{wait}'],\n    ['He often jogs in the park.', '{jog}'],\n    // ['The horse galloped across the meadow.', '{gallop}'],\n    [\"She's been knitting a scarf.\", '{knit}'],\n    ['You always brighten my day.', '{brighten}'],\n    ['They will have invested a lot by then.', '{invest}'],\n    ['The snake slithered across the ground.', '{slither}'],\n    ['She adores her pet cat.', '{adore}'],\n    ['I was cleaning my room when you called.', '{clean}'],\n    ['Birds chirp every morning.', '{chirp}'],\n    ['I will be flying to London next week.', '{fly}'],\n    [\"You've amazed everyone with your talent.\", '{amaze}'],\n    ['They were shopping all day.', '{shop}'],\n    [\"He's been researching this topic for months.\", '{research}'],\n    ['I always cherish our time together.', '{cherish}'],\n    ['The teacher enlightens students with knowledge.', '{enlighten}'],\n    ['She will be cooking for the party.', '{cook}'],\n    ['The river meanders through the valley.', '{meander}'],\n    [\"I've been humming that song all day.\", '{hum}'],\n    ['You often inspire those around you.', '{inspire}'],\n    ['The deer grazed in the meadow.', '{graze}'],\n    [\"I've booked a table for tonight.\", '{book}'],\n    ['They will be celebrating their victory.', '{celebrate}'],\n    ['The clock ticks every second.', '{tick}'],\n    ['She was watching her favorite show.', '{watch}'],\n    ['I often swim in the lake.', '{swim}'],\n    ['The stars shimmer in the night sky.', '{shimmer}'],\n    ['You have been teaching for a decade.', '{teach}'],\n    ['The wind whispered through the trees.', '{whisper}'],\n    [\"He'll be painting the wall tomorrow.\", '{paint}'],\n    ['They always applaud after the performance.', '{applaud}'],\n    [\"I've danced since I was five.\", '{dance}'],\n    ['The bird soared high in the sky.', '{soar}'],\n    [\"She's been collecting coins for years.\", '{collect}'],\n    ['I always rely on my instincts.', '{rely}'],\n    ['The sun blazes in the summer.', '{blaze}'],\n    ['He always whistles while working.', '{whistle}'],\n    [\"They've been hiking up the mountain.\", '{hike}'],\n    ['I was sketching the landscape.', '{sketch}'],\n    ['The dog wags its tail when happy.', '{wag}'],\n    ['You should always respect your elders.', '{respect}'],\n    ['The leaves rustle in the wind.', '{rustle}'],\n    [\"I've been daydreaming a lot lately.\", '{daydream}'],\n    ['They will be camping this weekend.', '{camp}'],\n    ['The baby giggles when tickled.', '{giggle}'],\n    [\"He's been composing music since college.\", '{compose}'],\n    ['The bee buzzes around the flowers.', '{buzz}'],\n    ['She will be translating the document.', '{translate}'],\n    ['They were clapping for the winner.', '{clap}'],\n    [\"I often marvel at nature's beauty.\", '{marvel}'],\n  ]\n\n  arr.forEach(a => {\n    const [str, m] = a\n    const doc = nlp(str)\n    t.equal(doc.has(m), true, here + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match/soft-match.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/soft-match] '\n\ntest('soft-match', function (t) {\n  const doc = nlp(`a priest walked into the bars`)\n  doc.compute('root')\n  t.equal(doc.match('bars').found, true, here + 'found bars')\n  t.equal(doc.match('bar').found, false, here + 'missed bar without ~')\n  t.equal(doc.match('~bars~').found, true, here + 'found ~ bars')\n  t.equal(doc.match('~bar~').found, true, here + 'found ~ bar')\n  t.equal(doc.match('~walk~ into').found, true, here + 'found infinitive')\n  t.equal(doc.match('~bar~').found, true, here + 'found singular')\n  t.equal(doc.text('root'), 'a priest walk into the bar', here + 'root-output')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/match.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[two/match] '\n\nconst arr = [\n  ['toronto', '#City'],\n  ['mexico', '#Country'],\n  ['Jamaica', '#Country'],\n  ['august', '#Month'],\n  ['saturday', '#WeekDay'],\n  ['really', '#Adverb'],\n  ['each', '#Determiner'],\n  ['voila', '#Expression'],\n  ['new england', '#Place'],\n  ['hers', '#Possessive'],\n  ['onto', '#Preposition'],\n  ['blvd', '#Place'],\n  ['belgian', '#Demonym'],\n  ['cactus', '#Singular'],\n  ['cacti', '#Plural'],\n  ['economy', '#Noun'],\n  ['brotherhood', '#Noun'],\n  ['claire', '#FemaleName'],\n  ['arthur', '#MaleName'],\n  ['wrote', '#PastTense'],\n  ['write', '#Verb'],\n  ['survive', '#Verb'],\n  ['our attempt', 'our #Noun'],\n  ['can attempt', 'can #Verb'],\n  [\"mc'adams\", '#LastName'],\n  ['Müller', '#LastName'],\n  ['muller', '#LastName'],\n  ['invest', '#Verb'],\n  ['investing', '#Verb'],\n  [`wallys'`, '#Possessive'],\n  ['zero in', '#Verb #Particle'],\n  ['glacier', '#Singular'],\n  ['glaciers', '#Plural'],\n  ['withers', '#PresentTense'],\n  ['wither', '#Infinitive'],\n  ['german', '#Demonym'],\n  ['germans', '#Demonym'],\n  ['germans', '#Plural'],\n  ['cres', '#Abbreviation'],\n  ['nucleus', '#Singular'],\n  ['nuclei', '#Plural'],\n  ['sting', '#Infinitive'],\n  ['stung', '#PastTense'],\n  ['ocean', '#Noun'],\n  ['shiver all night', '#Verb all #Noun'],\n  [`flanders'`, '#Possessive'],\n  ['MMMCMXXIII', '#RomanNumeral'],\n  // ['MIMMCMXXIII', '#Acronym'], //invalid roman numeral\n  ['c.e.o', '#Acronym'],\n  ['MDMA', '#Acronym'],\n  ['unless', '#Condition'],\n  ['funniest', '#Superlative'],\n  ['sillier', '#Comparative'],\n  ['the', '#Determiner'],\n  ['iraqi', '#Demonym'],\n  ['december', '#Date'],\n  ['suddenly', '#Adverb'],\n  ['shanghai', '#City'],\n\n  ['He is in Canada', '#Pronoun #Copula #Preposition #Place'],\n  ['walk the walk', '#Verb #Determiner #Noun'],\n  ['Peter the man', '#Person #Determiner #Noun'],\n  ['butterfly', '#Singular'],\n  ['he blamed the girl', '#Pronoun #PastTense #Determiner #Singular'],\n  ['his fine', '#Possessive #Noun'],\n  ['city/town', '#Noun'],\n  ['city/town', 'city'],\n  ['city/town', 'town'],\n  ['his fines', '#Possessive #Noun'],\n  ['asdfefs', '#Noun'],\n  ['octopus', '#Noun'],\n  ['tree', '#Noun'],\n  ['i', '#Noun'],\n\n  //slang, contractions\n  ['u r nice', '#Pronoun #Copula #Adjective'],\n  ['canadian bacon', '#Demonym #Noun'],\n  ['canadian dollar', '#Currency #Currency'],\n\n  //possessive rules\n  [\"john lkjsdf's\", '#Person #Possessive'],\n  [\"john lkjsdf's house\", '#Person #Possessive #Noun'],\n  [\"john Lkjsdf's house\", '#Person #Possessive #Noun'],\n  [\"john Lkjsdf's House\", '#Person #Possessive #Noun'],\n  [\"mark's question mark\", '#Possessive #Noun #Noun'],\n\n  //question-words\n  ['who is good?', '#QuestionWord #Copula #Adjective'],\n  ['which is good?', '#QuestionWord #Copula #Adjective'],\n  // ['bacon which is good', '#Noun #Pronoun #Copula #Adjective'],\n  // ['bacon which really is good', '#Noun #Pronoun #Adverb #Copula #Adjective'],\n  // ['Douglas who really is good', '#Person #Pronoun #Adverb #Copula #Adjective'],\n\n  ['at some point', '#Preposition #Determiner #Noun'],\n  ['to a point', '#Conjunction #Determiner #Noun'],\n  ['well, no.', '#Expression #Expression'],\n\n  // infinitive-noun\n  [`a tv show`, '#Determiner #Noun #Noun'],\n  [`send me a currency report.`, '#Infinitive #Pronoun #Determiner #Noun #Noun'],\n  // [`a close watch on`, '#Determiner #Adjective #Noun #Preposition'],\n  [`a surgery date of`, '#Determiner #Noun #Noun #Preposition'],\n  [`A girl hit a boy.`, '#Determiner #Noun #Infinitive #Determiner #Noun'],\n  [`a auto repair shop.`, '#Determiner #Noun #Noun #Noun'],\n\n  // timezones\n  ['Morocco Standard Time', '#Timezone #Timezone #Timezone'],\n  ['GMT+9', '#Timezone'],\n  ['3pm EST', '#Time #Timezone'],\n  ['3pm eastern time', '#Time #Timezone #Timezone'],\n  ['pacific standard time', '#Timezone #Timezone #Timezone'],\n  ['korea daylight time', '#Timezone #Timezone #Timezone'],\n  ['tuesday', '#Date'],\n  ['february', '#Date'],\n  ['february fifth', '#Date+'],\n  ['tuesday march 5th', '#Date+'],\n  // ['tuesday march 5th, 2015', '#Date+'],\n\n  // hyphens\n  ['cartoon-ish', '#Adjective'],\n  ['over-joyous', '#Adjective'],\n  ['walk-able', '#Adjective'],\n  ['trans-national', '#Adjective'],\n  ['re-create', '#Verb'],\n  ['micro-computer', '#Noun'],\n\n  // contractions\n  // 't\n  [\"we ain't\", 'we are not'],\n  [\"she ain't\", 'she is not'],\n  [\"she really ain't\", 'she really is not'],\n  [\"we really ain't\", 'we really are not'],\n  [\"the hotels really ain't\", 'the hotels really are not'],\n  [\"the boxer really ain't\", 'the boxer really is not'],\n  // 's\n  [`spencer's buritto`, `spencer's buritto`],\n  [`spencer's walked`, `spencer has walked`],\n  [`spencer's nice`, `spencer is nice`],\n  // 'd\n  [`i'd really walked`, `i had really walked`],\n  [`i'd really see`, `i would really see`],\n  [`how'd she do`, `how did she do`],\n\n  // punctuation\n  ['truth, bravery', '@hasComma bravery'],\n  ['spencer did.', 'spencer @hasPeriod'],\n  ['spencer did!', 'spencer @hasExclamation'],\n  ['spencer did?', 'spencer @hasQuestionMark'],\n  ['spencer did...', 'spencer @hasEllipses'],\n  ['no fair; i said', 'no @hasSemicolon i said'],\n  ['tornado/hurricane', 'hurricane'],\n  ['tornado/hurricane', 'tornado'],\n  ['tornado/hurricane', '@hasSlash'],\n  ['like a tornado/hurricane', 'like a @hasSlash'],\n  [\"he isn't going\", 'he @hasContraction #Gerund'],\n  ['FIFA', '@isAcronym'],\n  ['spencer', '@isKnown'],\n\n  // misc\n  ['swore', '#PastTense'],\n  ['tore', '#PastTense'],\n  ['gore', '#Noun'],\n  [`spencer's city/town & cabin`, 'spencer city and .'],\n  ['city/town', 'town'],\n  // [\"There's holes everywhere\", 'there are #Plural .'],\n  [\"There's an issue\", 'there is #Determiner #Noun'],\n  ['Let’s not forget', 'let us not #Verb'],\n  ['the thing about love', '#Determiner #Noun about #Noun'],\n  [`I don't get much [sleep]`, 'i do not #Infinitive much #Noun'],\n  ['the cardio dance party', '#Determiner #Noun #Noun #Noun'],\n  ['the mexican train hijacker', '#Determiner #Noun #Noun #Noun'],\n  // ['the dining experience', '#Determiner #Noun #Noun #Noun'],\n  ['the student loan default rate', '#Determiner #Noun #Noun #Noun #Noun'],\n  ['the examples include Jonathan Swift', '#Determiner #Noun #Verb #Noun #Noun'],\n  ['the feet kick him', '#Determiner #Noun #Verb #Noun'],\n  ['the fast train', 'the #Adjective #Noun'],\n  ['the faster train', 'the #Adjective #Noun'],\n  ['the fastest train', 'the #Adjective #Noun'],\n  ['buy the dress', '#Verb the #Noun'],\n  ['security forces take', '#Noun #Noun #Verb'],\n  ['they sing tribute', '#Pronoun #Verb #Noun'],\n  ['they sing praises', '#Pronoun #Verb #Plural'],\n  // ['they cast doubt', '#Pronoun #Verb #Noun'],\n  // ['being close', '#Verb #Adjective'],\n  ['take control', '#Verb #Noun'],\n  ['seek progress', '#Verb #Noun'],\n  ['are building dreams', '#Copula #Gerund #Plural'],\n  ['my aching head', 'my #Adjective #Noun'],\n  // ['Ignoring commute costs', '#Verb #Noun #Noun'],\n  ['the World Trade Center', 'the #Noun #Noun #Noun'],\n  // ['minimizing side reactions', '#Gerund #Noun #Noun'],\n  ['would not give rise', '#Modal not #PhrasalVerb #Particle'],\n  // ['it sounds like her ', 'it #Verb #Adverb her'],\n  // ['side of fries ', '#Noun of #Plural'],\n  ['bright side of life', '#Adjective #Noun of #Noun'],\n  ['the way of love', 'the #Noun of #Noun'],\n  ['daily side hustle', '#Adjective #Noun #Noun'],\n  ['mask the pain', '#Verb the #Noun'],\n  ['tony the tiger', '#Noun the #Noun'],\n\n  // ['some brand of cleaner', '#Noun #Noun of #Noun'],\n  // ['some sort of dog', '#Noun #Noun of #Noun'],\n  ['a dog of some sort', 'a #Noun of #Adjective #Noun'],\n  ['the dutch feel', '#Determiner #Noun #Noun'],\n  ['the captains feel too', '#Determiner #Noun #Verb #Adverb'],\n  ['the baby dump', '#Determiner #Noun #Noun'],\n  ['the nurse march', '#Determiner #Noun #Noun'],\n  ['date of birth', '#Noun of #Noun'],\n  ['kiss of death', '#Noun of #Noun'],\n  // [`drinks and food fuel shopping at new Saks`, '#Noun and #Noun #Noun #Noun at new #Noun'],\n  // [`litigation costs`, '#Noun #Noun'],\n  // [`the dog, whose skip was Frank`, 'the #Noun whose #Noun was #Person'],\n  // [`on Microsoft operating systems,`, 'on #Noun #Noun #Noun'],\n  // // [`a national security issue `, 'a #Noun #Noun #Noun'],\n  // [`formal thought patterns `, '#Adjective #Noun #Plural'],\n  // [`every parenting system`, 'every #Noun #Noun'],\n  // [`with Scotland winning 49 matches `, 'with #Place #Gerund #Value #Plural'],\n  // [`for some reason`, 'for some #Noun'],\n  // [`dirty tricks`, '#Adjective #Plural'],\n  // [`a press release`, '#Determiner #Noun #Noun'],\n  // [`the same type of shouts`, '#Determiner same #Noun of #Plural'],\n  // [`the same kind of shouts`, '#Determiner same #Noun of #Plural'],\n  // [`they are essential to expand`, '#Noun #Verb #Adjective to expand'],\n  // [`had a rocky release`, 'had #Determiner #Adjective #Noun'],\n  // [`might get better aim`, '#Auxiliary #Verb #Comparative #Noun'],\n  // [`i think tipping blows`, 'i #PresentTense #Gerund #Adjective'],\n  ['dept of state', '#Noun of #Noun'],\n  // [ `must-see show`,''],\n  [`would look like`, '#Modal #Infinitive .'],\n  [`zero in`, '#PhrasalVerb #PhrasalVerb'],\n  [`it was time`, '#Noun #Copula #Noun'],\n  [`I've said`, '#Pronoun have #PastTense'],\n  [`I've read`, '#Pronoun have #PastTense'],\n  [`provide record levels`, '#Infinitive . #Plural'],\n  [`I will attach`, '#Pronoun #Verb #Verb'],\n  [`Leo in 2005`, '#Noun in #Value'],\n  [`June 14 Reception`, '#Date #Date #Noun'],\n  [`They will mature`, '#Pronoun will #PresentTense'],\n  [`putting his hand`, '#Verb #Possessive #Noun'],\n  [`understand my answer`, '#Verb #Possessive #Noun'],\n  [`child’s play`, '#Possessive #Noun'],\n  [`he describes his brush with death`, 'he #Verb #Possessive #Noun with #Noun'],\n  [`decide their fate`, '#Verb #Possessive #Noun'],\n  [`take your time`, '#Verb #Possessive #Noun'],\n  [`strengthen our trade relations`, '#Verb #Possessive #Noun #Plural'],\n  [`i need your help`, 'i #Verb #Possessive #Noun'],\n  [`have our unyielding support`, '#Verb #Possessive #Adjective #Noun'],\n  // [`my dear`, '#Possessive #Noun'],\n  [`My old position`, '#Possessive #Adjective #Noun'],\n  [`john's whole world`, '#Possessive #Adjective #Noun'],\n  [`your online profiles`, '#Possessive #Adjective #Noun'],\n  // [`their past mistakes`, '#Possessive #Adjective #Noun'],\n  // [`Toronto's epic Instagram feed`, '#Possessive #Adjective #Noun #Noun'],\n  [`in your foul shoes`, 'in #Possessive #Adjective #Noun'],\n  [`MY DEAR WIFE`, '#Possessive #Adjective #Noun'],\n  // [`your majesty shall`, '#Possessive #Noun #Verb'],\n  [`my youthful mind`, '#Possessive #Adjective #Noun'],\n  [`our full support`, '#Possessive #Adjective #Noun'],\n  // [`the feminine`, `the #Noun`],\n  [`the feminine form`, `the #Adjective #Noun`],\n  [`health insurance reform is tricky`, `#Noun #Noun #Noun is #Adjective`],\n  [`Toronto will be home to large party`, `#Noun #Verb be #Verb to #Adjective #Noun`],\n\n  [`by number of seats.`, 'by #Noun of #Plural'],\n  [`he taught debate`, 'he #Verb #Noun'],\n  [`singers on stage`, '#Noun on #Noun'],\n  [`in times of change, a symbol`, 'in times of #Noun a #Noun'],\n  [`powerful known tornadoes.`, '#Adjective #Adjective #Plural'],\n  [`beauty sleep`, '#Noun #Noun'],\n  // [`the pillow floor seats`, 'the #Noun #Noun #Noun'],\n  [`the mrt bus stop.`, 'the #Noun #Noun #Noun'],\n  [`buck naked`, '#Adjective #Adjective'],\n  [`without any recharge.`, 'without any #Noun'],\n  [`(mis-fired).`, '#Verb'],\n  // [`president-elect`, '#Noun'],\n  // [`flower-like.`, '#Adjective'],\n  [`The old Fairy's turn`, 'the #Adjective #Possessive #Noun'],\n  [`more with spite than age`, 'more with #Noun than #Noun'],\n  // [`another fool to roast`, 'another #Noun to #Verb'],\n  [`even the humblest`, '#Adverb the #Superlative'],\n  ['Steve talked to Johnson LLC', '#Person talked to #Organization #Organization'],\n  ['GIC airlines', '#Organization #Organization'],\n  [`charcoal chicken`, '#Noun #Noun'],\n\n  // not roman numerals\n  ['LI', '!#RomanNumeral'],\n  ['DC', '!#RomanNumeral'],\n  ['MD', '!#RomanNumeral'],\n  ['DM', '!#RomanNumeral'],\n  ['ML', '!#RomanNumeral'],\n\n  // ambiguous 'her'\n  [`I hit him hard`, '#Pronoun #Verb #Pronoun (#Adjective|#Adverb)'],\n  [`I hit her hard.`, '#Pronoun #Verb #Pronoun (#Adjective|#Adverb)'],\n\n  ['reagent', '#Noun'],\n  ['ingredient', '#Noun'],\n  ['convent', '#Noun'],\n  ['incident', '#Noun'],\n  ['rodent', '#Noun'],\n  ['correspondent', '#Noun'],\n  ['descendent', '#Noun'],\n  ['incident', '#Noun'],\n  ['macronutrient', '#Noun'],\n  ['urgent', '#Adjective'],\n  ['asian', '#Demonym'],\n  ['belgian', '#Demonym'],\n  ['albanian', '#Demonym'],\n  ['rotarian', '#Noun'],\n  [`m`, '#Noun'],\n  [`mineralogy`, '#Noun'],\n  [`microsome`, '#Noun'],\n  [`postage`, '#Noun'],\n  [`agent`, '#Noun'],\n  [`alkaloid`, '#Noun'],\n  [`hierarchy`, '#Noun'],\n  [`anarchy`, '#Noun'],\n  [`psychopathy`, '#Noun'],\n  [`apathy`, '#Noun'],\n  [`horseradish`, '#Noun'],\n\n  ['expertise', '#Noun'],\n  ['premise', '#Noun'],\n  ['merchandise', '#Noun'],\n  ['demise', '#Noun'],\n  ['sunrise', '#Noun'],\n  ['anise', '#Noun'],\n  ['treatise', '#Noun'],\n  ['oligopoly', '#Noun'],\n  ['disassembly', '#Noun'],\n  ['petal', '#Noun'],\n  ['golfer', '#Noun'],\n  ['wafer', '#Noun'],\n  ['offer', '#Verb'],\n  ['infer', '#Verb'],\n  ['suffer', '#Verb'],\n  ['jennifer', '#FemaleName'],\n\n  ['hilary', '#FemaleName'],\n  [`vocabulary`, '#Noun'],\n  [`documentary`, '#Noun'],\n  [`monetary`, '#Adjective'],\n  [`solitary`, '#Adjective'],\n  [`elementary`, '#Adjective'],\n  [`hereditary`, '#Adjective'],\n  [`military`, '#Noun'],\n  [`salary`, '#Noun'],\n  [`purifier`, '#Noun'],\n  [`humidifier`, '#Noun'],\n  [`photocopier`, '#Noun'],\n  [`generalist`, '#Noun'],\n  [`racist`, '#Adjective'],\n  [`moist`, '#Adjective'],\n  [`twist`, '#Verb'],\n  [`persist`, '#Verb'],\n  [`stylist`, '#Noun'],\n  [`waist`, '#Noun'],\n  [`gist`, '#Noun'],\n  [`hobbyist`, '#Noun'],\n  [`medalist`, '#Noun'],\n  [`metabolite`, '#Noun'],\n  [`website`, '#Noun'],\n  [`polite`, '#Adjective'],\n  [`exquisite`, '#Adjective'],\n  [`opposite`, '#Adjective'],\n  [`his spite`, 'his #Noun'],\n  [`parasite`, '#Noun'],\n  [`favorite`, '#Adjective'],\n  [`write`, '#Verb'],\n  [`chlorite`, '#Noun'],\n  [`meteorite`, '#Noun'],\n  [`topic`, '#Noun'],\n  [`fabric`, '#Noun'],\n  [`picnic`, '#Noun'],\n  [`tunic`, '#Noun'],\n  [`cryptic`, '#Adjective'],\n  [`acoustic`, '#Adjective'],\n  [`erotic`, '#Adjective'],\n\n  ['accommodate', '#Verb'],\n  ['birthdate', '#Noun'],\n  ['candidate', '#Noun'],\n  ['validate', '#Verb'],\n  ['update', '#Verb'],\n  ['devastate', '#Verb'],\n  ['rotate', '#Verb'],\n  ['superintendent', '#Noun'],\n  ['rodent', '#Noun'],\n  ['incident', '#Noun'],\n  ['crescent', '#Noun'],\n  ['fluorescent', '#Adjective'],\n  ['satisfy', '#Verb'],\n  ['bestow', '#Verb'],\n  ['disinfect', '#Verb'],\n  ['reflect', '#Verb'],\n  ['respect', '#Verb'],\n  ['detect', '#Verb'],\n  ['correct', '#Adjective'],\n  ['aspect', '#Noun'],\n  ['minor defect', '#Adjective #Noun'],\n  ['restrict', '#Verb'],\n  ['depict', '#Verb'],\n  ['misinterpret', '#Verb'],\n  ['relaunch it', '#Verb it'],\n  ['relaunched', '#PastTense'],\n  ['denounce', '#Verb'],\n  ['denounces', '#Verb'],\n  ['denounced', '#Verb'],\n  ['refocus', '#Verb'],\n  ['reorder it', '#Verb it'],\n  ['misinform', '#Verb'],\n  ['reclaim', '#Verb'],\n  ['restrike', '#Verb'],\n  ['disembark', '#Verb'],\n  ['debunking', '#Gerund'],\n  ['debunks', '#PresentTense'],\n  ['verdict', '#Noun'],\n  ['product', '#Singular'],\n  ['products', '#Plural'],\n  ['district', '#Singular'],\n  ['maze', '#Singular'],\n  ['blaze it', '#Verb it'],\n  ['districts', '#Plural'],\n  ['quiet addict', '#Adjective #Singular'],\n  ['addict them', '#Verb them'],\n  ['rearrange', '#Verb'],\n  ['prearrange', '#Verb'],\n  ['decommission', '#Verb'],\n  ['depreciable', '#Adjective'],\n  ['soluble', '#Adjective'],\n  ['viable', '#Adjective'],\n  ['valuable', '#Adjective'],\n  ['disproportionate', '#Adjective'],\n  ['plentiful', '#Adjective'],\n  ['unfamiliar', '#Adjective'],\n  ['victory', '#Noun'],\n  ['grandnephew', '#Noun'],\n  ['autobiography', '#Noun'],\n  ['microarray', '#Noun'],\n  ['pro-business', '#Adjective'],\n  // [\"post-gun\", \"#Adjective\"],\n\n  // [\"food and programs\", \"#Noun and #Noun\"],\n  ['writes and programs', '#PresentTense and #PresentTense'],\n  [`revisit the unsteamed towels`, '#Infinitive the #Adjective #Plural'],\n\n  ['macronutrient', '#Noun'],\n  ['undue', '#Adjective'],\n  ['he was semiskilled', 'he was #Adjective'],\n  ['antiwork', '#Noun'],\n  ['antiaircraft', '#Noun'],\n  ['kilos', '#Noun'],\n  ['autolytic', '#Adjective'],\n  ['introvert', '#Noun'],\n  ['de-orients', '#Verb'],\n  ['deduct', '#Verb'],\n  ['conduct', '#Verb'],\n\n  ['contradictory', '#Adjective'],\n  ['factory', '#Noun'],\n  ['satisfactory', '#Adjective'],\n  ['trajectory', '#Noun'],\n  ['victory', '#Noun'],\n\n  ['merged', '#PastTense'],\n  ['mentioned', '#PastTense'],\n  ['aired', '#PastTense'],\n  ['screeched', '#PastTense'],\n  ['screeches', '#PresentTense'],\n  ['intoxicates', '#PresentTense'],\n  ['it intoxicated him', 'it #PastTense him'],\n  //\n  ['trying not', '#Gerund not'],\n  ['not trying', 'not #Adjective'],\n  // [\"wait and see\", \"#Infinitive and #Infinitive\"],\n  ['bride and groom', '#Noun and #Noun'],\n\n  ['conditioner', '#Singular'],\n  ['loner', '#Singular'],\n  ['prisoner', '#Singular'],\n  ['sooner', '#Comparative'],\n  ['toner', '#Singular'],\n  ['owner', '#Singular'],\n\n  ['diner', '#Singular'],\n  ['dinner', '#Singular'],\n  ['finer', '#Comparative'],\n  ['foreigner', '#Singular'],\n  ['partner', '#Singular'],\n  ['toner', '#Singular'],\n  ['werner', '#Singular'],\n  ['winner', '#Singular'],\n  ['aunt brenda', '#Person+'],\n  ['uncle sam', '#Person+'],\n  ['it is eager to forget', 'it is #Adjective to #Verb'],\n  ['it is direct to ciaro', 'it is #Adjective to #Noun'],\n\n  ['corporate', '!#Verb'],\n  ['lane', '#Noun'],\n  ['coke', '#Noun'],\n  ['hormone', '#Noun'],\n  ['hardwork', '#Noun'],\n  ['likewise', '!#Verb'],\n  ['forth', '!#Verb'],\n  ['misfortune', '#Noun'],\n  ['outstanding', '#Adjective'],\n  ['renowned', '#Adjective'],\n  ['interstate', '#Noun'],\n  ['whoever', '!#Verb'],\n  ['whenever', '!#Verb'],\n\n  ['suicide', '#Noun'],\n  ['beside', '#Adjective'],\n  ['peptide', '#Noun'],\n  ['worldwide', '#Adjective'],\n  ['dioxide', '#Noun'],\n  ['decide', '#Verb'],\n  ['bide', '#Verb'],\n  ['slide', '#Verb'],\n  ['safely guided', '#Adverb #Verb'],\n  ['reside', '#Verb'],\n  ['his backside', 'his #Noun'],\n\n  ['attic', '#Noun'],\n  ['arithmetic', '#Noun'],\n  ['static', '#Noun'],\n  ['tic', '#Noun'],\n\n  ['squish', '#Infinitive'],\n\n  ['portal', '#Noun'],\n  ['parish', '#Noun'],\n  ['adjective', '#Noun'],\n  ['attic', '#Noun'],\n  ['borough', '#Noun'],\n  ['cathedral', '#Noun'],\n  ['constable', '#Noun'],\n  ['fetish', '#Noun'],\n  ['conservatory', '#Noun'],\n  ['mineral', '#Noun'],\n  ['caterpillar', '#Noun'],\n  ['fanny', '#Noun'],\n  ['arithmetic', '#Noun'],\n\n  // person-titlecase\n  ['Ollie Faroo', '#Person #Person'],\n  ['Cliff Clavin', '#Person #Person'],\n  ['Wade Slowagon', '#Person #Person'],\n  ['Jan Thierson', '#Person #Person'],\n  ['Gail Emerson', '#Person #Person'],\n  ['Wade G. Slapgoop', '#Person #Acronym #Person'],\n  ['june F Fobo', '#Person #Acronym #Person'],\n  ['buck M. Fobo', '#Person #Acronym #Person'],\n  ['crystal D. Fobo', '#Person #Acronym #Person'],\n  ['West Sydney', '!#Person+'],\n  ['Sydney Harbour', '!#Person+'],\n  // ['June Holiday Sweeps', '!#Person+'],\n  ['Cliff Climber Group', '!#Person+'],\n  // ['Faith Reunion', '!#Person+'],\n\n  [`here's`, 'here is'],\n  [`there's`, 'there is'],\n  [`she's`, 'she is'],\n  // [`it's`, 'it is'],\n  // [`it's milk`, '#Possessive milk'],\n  [`he's`, 'he is'],\n  [`that's`, 'that is'],\n  [`here's`, 'here is'],\n  [`there's`, 'there is'],\n  [`your's`, '#Possessive'],\n  [`who's`, 'who is'],\n  [`what's`, 'what is'],\n  [`where's`, 'where is'],\n  [`why's the doc`, 'why is the doc'],\n  [`when's he coming`, 'when is he .'],\n  [`how's that`, 'how is that'],\n  [`let's`, 'let us'],\n  [`somebody else's`, '. #Possessive'],\n  [`my name's john`, 'my name is .'],\n\n  ['logic', '#Noun'],\n  ['liver', '#Noun'],\n  ['incentive', '#Noun'],\n  ['vanish', '#Infinitive'],\n  ['vanish', '#Infinitive'],\n\n  ['a worn dress', '#Determiner #Adjective #Singular'],\n  // [\"Anna's eating lunch\", '#Possessive #Gerund #Singular'],\n  [\"Anna's eating was impressive\", '#Possessive #Noun #Copula #Adjective'],\n  ['Québec is in canada', 'québec #Verb in #Country'],\n  ['Québec is in canada', 'quebec #Copula in canada'],\n\n  [`the remaining claims fail`, '#Determiner #Adjective #Plural #PresentTense'],\n  [`6 hurt in family dispute`, '#Value #Infinitive in #Singular #Singular'],\n\n  ['not be until 1982 that', 'not #Verb until #Year that'],\n  ['in his case 1500 cakes', 'in #Possessive #Singular !#Year #Plural'],\n  ['July 13, 1996 - video', '#Date+ #Singular'],\n  ['3 men from 1938 through the end of WWII', '#Cardinal #Plural from #Year through . #Singular of #Acronym'],\n  ['back in 1996', 'back in #Year'],\n  // ['the 1989 epic', 'the #Year #Singular'],\n  ['the 1975 hit', 'the #Year #Singular'],\n  ['back to 2000', 'back to #Year'],\n  ['the 1923 Tokyo disaster', 'the #Year #ProperNoun+ #Singular'],\n  // ['Dave Fleischer\\'s 1939 version', '#Person+ #Year #Singular'],\n  ['the films made in 1931 are this creaky', 'the #Plural #Verb in #Year #Copula this #Adjective'],\n  ['at the 1999 Melbourne International Film Festival', 'at the #Year #ProperNoun+'],\n  ['its 1993 TV remake', 'its #Year #Noun+'],\n  // ['in 1999 - 2001 Ted had a crisis', 'in #Year+ #Person had a #Singular'],\n  ['circa 1971', '. #Year'],\n  ['Set in 1976 for no apparent reason', '#Verb in #Year for no #Adjective #Singular'],\n  ['the post - 1985 Perry Mason movies', 'the post #Year #Person+ #Plural'],\n  // ['the 1988 blockbuster movie', 'the #Year #Noun+'],\n  ['with its 1950 beds', 'with #Possessive !#Year #Plural'],\n  ['His death in 1994 went barely noticed', '#Possessive #Noun in #Year #Verb #Adverb noticed'],\n  ['the films in 1972 and 1974 respectively', 'the #Plural in #Year and #Year .'],\n  ['seen over 2000 studio-era sound films', '#Verb over !#Year #Noun+'],\n  ['This 1925 film narrates the story', '#Determiner #Year #Noun #PresentTense the #Singular'],\n  // ['my 1950 convertable', '#Possessive #Year #Singular'],\n\n  ['always throwing stones at me', '#Adverb #Gerund #Plural at #Pronoun'],\n\n  ['any need for a trial', 'any #Noun for a #Noun'],\n  ['go kayaking in a tributary?.', '#Verb #Gerund in a #Noun'],\n  ['any need for a trial.', 'any #Noun for a #Noun'],\n  // [\"as a whole\", 'as a #Noun'],\n  ['he had fallen into a cold', '#Pronoun #Auxiliary #Verb into a #Noun'],\n  ['taken from us in an instant', 'taken from #Pronoun in an #Noun'],\n  ['the instant he walked', 'the #Noun #Pronoun #PastTense'],\n\n  ['5 gb', '#Value #Unit'],\n  ['5 kb', '#Value #Unit'],\n  ['5 k', '#Value #Unit'],\n  ['550 m', '#Value #Unit'],\n  ['50m', '#Value #Unit'],\n  ['50 miles', '#Value #Unit'],\n  ['50 square miles', '#Value #Unit+'],\n  ['50 miles per hour', '#Value #Unit+'],\n  ['5gb', '#Value #Unit'],\n  ['team gb', '#Noun !#Unit'],\n  ['dr oz', '#Noun !#Unit'],\n  ['wizard of oz', '#Noun of !#Unit'],\n  ['downtown pa', '#Noun !#Unit'],\n  ['1 ft wide', '#Cardinal #Unit wide'],\n  ['1 ft. wide', '#Cardinal #Unit wide'],\n  ['1-ft wide', '#Cardinal #Unit wide'],\n\n  ['felt confused', '#PastTense #Adjective'],\n  ['felt a bit confused', '#PastTense a #Noun #Adjective'],\n  [`she'll come around`, '#Pronoun will #PhrasalVerb #Particle'],\n  [\"that's not swell\", 'that is not #Adjective'],\n  ['I was an expert', 'i was an #Noun'],\n  ['definitely worth a rental.', '#Adverb #Verb a #Noun'],\n  ['keeping the matter a secret', '#Gerund the #Noun a #Noun'],\n  ['30/01/194', '!#Date'],\n  // [\"peace, flowers and doves\", '#Noun #Noun and #Noun'],\n  ['the lady', 'the !#Honorific'],\n  [\"the ship's captain\", 'the #Possessive !#Honorific'],\n  ['count backwards', '#Imperative #Adverb'],\n  // [\"lady jones\", '#Honorific #Person'],\n  ['count jones', '#Honorific #Person'],\n  ['my worst miss', 'my #Adjective #Singular'],\n  ['a near miss', 'a #Adjective #Singular'],\n  ['that miss was horrid', 'that #Singular #Copula #Adjective'],\n\n  // #Possessive #Noun\n  // [`with your hands up`, `with #Possessive #Plural up`],\n  [`your keys`, `#Possessive #Plural`],\n  [`life’s challenges`, `#Possessive #Plural`],\n  [`My mate`, `#Possessive #Noun`],\n  // anna's eating, anna's eating lunch\n  // [`your craving`, `#Possessive #Noun`],\n  [`I can't afford your prices`, `I can not #Verb #Possessive #Plural`],\n  [`the water's edge`, `the #Possessive #Noun`],\n  [`my bitches`, `#Possessive #Plural`],\n  // [`demanding his rights`, `#Gerund #Possessive #Plural`],\n  [`captain mistook Byron's boat`, `#Noun #PastTense #Possessive #Noun`],\n  [`Our respects to Mr. Shuttleworthy`, `#Possessive #Plural to #Person+`],\n  [`bread in my jar`, `#Noun in #Possessive #Singular`],\n  [`Ptolemy's experiments`, `#Possessive #Plural`],\n  [`She shoved her hand`, `#Pronoun #PastTense #Possessive #Singular`],\n  // [`Monroe made her network TV debut`, `#Noun #Verb #Possessive #Noun+`],\n  [`nurse deleted my name`, `#Noun #PastTense #Possessive #Singular`],\n  [`supporting our refusing to speak`, `#Gerund #Possessive #Gerund to #Verb`],\n  // not posessive\n  // [`I saw her go`, `I #PastTense !#Possessive #PresentTense`],\n  // [`I watched her throw`, `I #PastTense !#Possessive #PresentTense`],\n\n  ['well?', '#Expression'],\n  ['alright!', '#Expression'],\n  ['it was alright', 'it was #Adjective'],\n  ['shoot', '#Expression'],\n  ['shoo!', '#Expression'],\n  ['hell', '#Expression'],\n  ['live in hell', '#Verb in #Noun'],\n  [`we gave tax reductions`, `#Pronoun #PastTense #Noun #Plural`],\n  // [`brand new`, `#Adverb #Adjective`],\n  [`brand spanking new`, `#Adverb #Adverb #Adjective`],\n\n  ['Right after.', '#Adverb .'],\n  // [\"went right in\", '#Adverb #Preposition'],\n  ['Right angle.', '#Adjective #Noun'],\n  [`The Island airport tunnel nears completion`, `the #Noun+ #PresentTense #Noun`],\n  [`come have a drink`, `#Imperative #Imperative a #Singular`],\n  [`come and have a drink`, `#Imperative and #Imperative a #Singular`],\n  [`there are issues`, `#There #Copula #Plural`],\n  [`nobody in there`, `#Noun in #Noun`],\n  [`go near there`, `#Verb near #Noun`],\n  [`he is always there`, `#Pronoun #Copula #Adverb #Adjective`],\n  [`there it is`, `#There it is`],\n  ['I ate me sandwich', '#Pronoun #Verb #Possessive #Singular'],\n  [`will get discouraged`, `#Verb #Verb #Adjective`],\n  [`do not get discouraged`, `#Verb #Negative #Verb #Adjective`],\n  [`do not be embarrassed`, `#Verb #Negative #Verb #Adjective`],\n\n  [`like to drink`, `#Verb to #Verb`],\n  [`try to hold`, `#Verb to #Verb`],\n  [`need to ask`, `#Verb to #Verb`],\n  [`want to stand`, `#Verb to #Verb`],\n  [`have to face`, `#Verb to #Verb`],\n  [`agreeing to purchase`, `#Verb to #Verb`],\n  [`continue to reform`, `#Verb to #Verb`],\n  [`refused to harbour`, `#Verb to #Verb`],\n  [`begin to fear`, `#Verb to #Verb`],\n  // [`came to light`, `#Verb to #Noun`],\n  [`i bike to work`, `i #Verb to #Noun`],\n  [`bring to market`, `#Verb to #Noun`],\n  [`went to sleep`, `#Verb to #Noun`],\n\n  ['l-theanine', '#Noun'],\n  ['x-ray', '#Noun'],\n  ['my ex-husband', 'my #Noun'],\n  ['The F-102 saw service', 'the #Noun #Verb #Noun'],\n  // titlecase\n  ['We Sell All Brands', '#Pronoun #Verb all #Plural'],\n  ['WE SELL ALL BRANDS', '#Pronoun #Verb all #Plural'],\n\n  // imperative\n  [`[commit] to a fun activity`, '#Imperative to a #Adjective #Noun'],\n  [`[Talk] to her`, '#Imperative to #Pronoun'],\n  [`[Explain] to him`, '#Imperative to #Pronoun'],\n  [`[Temper] your expectations`, '#Imperative your #Plural'],\n  [`[Ditch] the schedule`, '#Imperative the #Noun'],\n  [`Stick to doing \"Bookie payouts\"`, '#Imperative to #Gerund #Noun #Plural'],\n  [`[Resolve] yourself`, `#Imperative #Reflexive`],\n\n  [`[Maintain] eye contact`, `#Imperative #Singular #Singular`],\n  // [`[Wear] muted or neutral colors`, `#Imperative #Adjective or #Adjective #Plural`],\n  [`don't forget to clean`, `#Verb not #Imperative to #Imperative`],\n  [`My very existence [is] oppressive`, `my very #Noun #Copula #Adjective`],\n  [`it does [occur] sometimes`, `it #Verb #Infinitive #Adverb`],\n  [`you’ll also soon [find]`, `you will #Adverb soon #Infinitive`],\n  // [`you're [set]`, `#Pronoun #PresentTense #Adjective`],\n  [`make her [see] that`, `#Imperative her #Infinitive that`],\n  [`Bite or [lick] your lower lip`, `#Infinitive or #Infinitive #Possessive #Adjective #Singular`],\n  [`[burnt] the cake`, `#Verb the #Singular`],\n  [`Instagram star [captures] the silent beauty`, `#Noun+ #PresentTense the #Adjective #Singular`],\n  [`go as i please`, `#Infinitive as #Pronoun #Infinitive`],\n  [`the Oak tree [understood] and felt sad`, `the #Noun+ #PastTense and #PastTense #Adjective`],\n  [`by asking [questions] about her`, `by #Gerund #Plural . her`],\n  [`no worries`, `no #Plural`],\n  [`for the first time`, `for the #Ordinal #Singular`],\n\n  // prefixes\n  [`we pre established it`, `we #Verb #PastTense it`],\n  [`quickly co writing it`, `#Adverb #Verb #Gerund it`],\n  [`it was really mis firing`, `it #Copula #Adverb #Verb+`],\n  // [`it was pre written`, `#Pronoun #PastTense (#Verb && #Prefix) #Participle`],\n  [`we will out run the monster`, `we #Verb #Prefix #Infinitive the #Singular`],\n  [`it can re spawn`, `it #Modal #Prefix #Infinitive`],\n  [`it was un cool`, `it #PastTense (#Prefix && #Adjective) #Adjective`],\n  [`it was pre windy`, `it #PastTense (#Prefix && #Adjective) #Adjective`],\n\n  [`could ya`, `#Modal #Pronoun`],\n  [`burst out laughing`, `#Verb+`],\n  [`you guys are nice`, `#Uncountable+ are #Adjective`],\n  [`On [Dutch] [maps]`, `on #Demonym #Plural`],\n  [`Our balanced budget will increase [funding]`, `#Possessive #Adjective #Singular will #Infinitive #Singular`],\n  [`What's small brown, hairy and [wears] sunglasses`, `what is #Adjective+ and #PresentTense #Plural`],\n  // [`the town sang no more`, `the #Singular is #Adjective+`],\n  [`the more he yearned`, `the #Noun he #PastTense`],\n  [`Give more [details]`, `#Imperative #Adjective #Plural`],\n  [`this place is a [must]`, `this #Noun is a #Singular`],\n  [\n    `Only [parents] can make sure the TV is turned off`,\n    `only #Plural #Verb #PhrasalVerb+ the #Singular #Copula #PhrasalVerb+`,\n  ],\n  ['repairing crumbling roads', '#Gerund #Adjective #Plural'],\n  ['Helping hardworking families', '#Gerund #Adjective #Plural'],\n  // [`I'm practising walking`, `i am #Gerund #Noun`],\n  [`The pot seen here`, `#Determiner #Singular #Participle #Uncountable`],\n  [`his [ashen] gray face became [scarlet] with [rage]`, `his #Adjective+ #Noun #PastTense #Adjective with #Singular`],\n  [`dance music`, `#Noun+`],\n  [`bowling league`, `#Noun+`],\n  [`annual dancing festival`, `#Adjective #Noun+`],\n  [`[Bitches] be frustrated`, `#Plural #Verb #PastTense`],\n  [`we all swam`, `#Noun #Noun #PastTense`],\n  [`he ate us all`, `#Pronoun #Verb #Noun #Noun`],\n  [`I might be [alone] forever`, `#Pronoun #Auxiliary #Verb #Adjective #Adverb`],\n  [`It was her [favorite] book`, `it #Verb #Possessive #Adjective #Noun`],\n  [`It starts off [fine]`, `it #PresentTense #PhrasalVerb #Adjective`],\n  [`It works out [fine]`, `it #PresentTense #PhrasalVerb #Adjective`],\n  [`the [most] [stately] [manner]`, `the #Adverb #Adjective #Singular`],\n  [`The bennies were [outstanding]`, `the #Plural #Copula #Adjective`],\n  [`pale as a marble statue`, '#Adjective as a . #Singular'],\n  // [`as [confused] as I am`, 'as #Adjective as #Pronoun am']\n  [`numerous case studies`, `#Adjective #Noun+`],\n  [`quickly brought under control`, `#Adverb #PhrasalVerb+ #Noun`],\n  [`This claim was settled between`, `this #Noun was #PastTense between`],\n  [`expect a period of sub-standard investment`, `#Imperative a #Noun of #Adjective #Singular`],\n  [`in times of war and peace`, `in #Plural of #Singular and #Uncountable`],\n  // actor/person\n  [`the finance minister`, `the #Actor+`],\n  [`the product manager`, `the #Actor+`],\n  [`the city clerk`, `the #Actor+`],\n  [`the staff lawyers`, `the #Actor+`],\n  [`the viola player`, `the #Actor+`],\n  [`the nursary workers`, `the #Actor+`],\n  [`the Safety Specialists`, `the #Actor+`],\n  [`a spa manager`, `a #Actor+`],\n  [`Wildlife biologists found`, `#Actor+ #Verb`],\n  [`the radiologist`, `the #Actor+`],\n  [`3 biochemists`, `3 #Actor+`],\n  // [`nurse Kelly`, `#Person+`],\n\n  [`breaking: dogs nice`, `#Expression #Plural #Adjective`],\n  // [`forward: appartment price`, `#Expression #Noun+`],\n  [`email: spencer@cool.com`, `#Noun #Email`],\n  [`was [left] [dancing] alone`, `#Verb+ #Adjective`],\n  [`where users [submit] drawings`, `#QuestionWord #Plural #Infinitive #Plural`],\n  [`could be transcribed and [extended]`, `could be #PastTense and #PastTense`],\n  [`self esteem has gotten [better]`, `#Noun+ #Verb #Verb #Comparative`],\n  [\n    `the many charms [which] [ravish] my soul`,\n    `#Determiner #Adjective #Plural #Preposition #Infinitive #Possessive #Singular`,\n  ],\n  [`OA is [dedicated] [to] helping`, `#Acronym #Copula #PastTense #Conjunction #Gerund`],\n\n  // imperatives\n  // [`C'mon, Luisa`, `#Expression+ #Person`],\n  [`Make fun of the monsters`, `#PhrasalVerb+ of the #Plural`],\n  [`Waste materials are disposed`, `#Singular #Plural are #PastTense`],\n  [`[Treat] UFO landings seriously`, `#Imperative #Acronym #Plural #Adverb`],\n  [`Honey, would you like a snack?`, `#Noun #Modal #Pronoun #Infinitive a #Singular`],\n  [`go there quickly`, `#Imperative there #Adverb`],\n  [`Fill up the tank`, `#Imperative #Particle #Determiner #Singular`],\n\n  [`I find myself singing the blues`, `#Pronoun #Infinitive #Reflexive #Gerund the #Plural`],\n  [`make myself agreeable`, `#Infinitive #Reflexive #Adjective`],\n  [`can i sleep`, `#Modal #Noun #Infinitive`],\n  [`would you look`, `#Modal #Noun #Infinitive`],\n  [`may car camp`, `#Modal #Noun #Infinitive`],\n  [`you can bunny bump`, `#Pronoun #Modal #Noun #Infinitive`],\n  [`The pedicurist did not massage`, `the #Actor #Verb not #Infinitive`],\n  [`child care is [now] [provided] by relatives`, `#Singular+ #Copula now #PastTense #Preposition #Plural`],\n  [`nick the skin`, `#Infinitive the #Noun`],\n  [`I saw nick`, `i #PastTense #FirstName`],\n  [`you can [grace] the cover`, `#Pronoun #Verb+ the #Noun`],\n  [`[Cute] neighborhood`, `#Adjective #Singular`],\n  [`do [you] eat it`, `#QuestionWord #Pronoun #Infinitive it`],\n  [`does he agree`, `#QuestionWord #Pronoun #Infinitive`],\n  [`he does homework`, `#Pronoun !#QuestionWord #Noun`],\n  [`do they even know`, `#QuestionWord #Pronoun #Adverb #Infinitive`],\n  // [`been overrun by insurgents`, `#Auxiliary #PresentTense by #Plural`],\n  [`Due to weather`, `#Adjective #Conjunction #Noun`],\n  [`weather the storm`, `#Verb the #Noun`],\n  [`while the weather is clear`, `#Conjunction #Determiner #Noun #Copula #Adjective`],\n  [`I've been told`, `i #Auxiliary !#PastTense #PastTense`],\n  [`a number of breakfast dishes and desserts`, `a #Noun of #Noun+ and #Noun`],\n  // hasDash\n  //noun-past\n  [`a bone-headed decision`, `a #Adjective #Adjective #Noun`],\n  [`Peer-reviewed reports`, `#Adjective #Adjective #Noun`],\n  [`faith-based groups`, `#Adjective #Adjective #Noun`],\n  [`self-absorbed bimbo`, `#Adjective #Adjective #Noun`],\n  [`The self-released EP`, `the #Adjective #Adjective #Acronym`],\n  [`much-appreciated movie`, `#Adverb #Adjective #Noun`],\n  [`2-fold strategy`, `#Adjective+ #Noun`],\n  // [`must-see show`, `#Adjective+ #Noun`],\n  // [`pop-up shop`, `#Adjective+ #Noun`],\n  [`hard-nosed veteran`, `#Adjective+ #Noun`],\n  [`good-tempered and polite`, `#Adjective+ and #Adjective`],\n  // [`10 just-announced films`, `#Value #Adjective #Adjective #Noun`],\n  [`fed-up users`, `#Adjective+ #Plural`],\n  // [`rapidly-changing economy`, `#Adverb #Adjective #Noun`],\n  // [`the dammed-up gutters`, `the #Adjective+ #Plural`],\n  // [`hard-fought victories`, `#Adjective+ #Noun`],\n  [`hella-boring meeting`, `#Adverb #Adjective #Singular`],\n  [`a quick-cut`, `a #Adjective #Singular`],\n  // auxiliary verbs\n  [`you're getting worked up`, `#Pronoun #Copula #Auxiliary #PhrasalVerb+`],\n  [`before getting dressed`, `before (!#Gerund && #Auxiliary) #PastTense`],\n  // [`was being applied`, `#Auxiliary (!#Gerund && #Auxiliary) #PastTense`],\n  // gerunds\n  ['banning', '#Gerund'],\n  ['my cunning', 'my #Noun'],\n  ['fanning', '#Gerund'],\n  ['the planning department', 'the #Noun #Noun'],\n  ['running', '#Gerund'],\n  ['spanning', '#Gerund'],\n  ['spinning', '#Gerund'],\n  ['the stunning girl', 'the #Adjective #Noun'],\n  ['bringing hope', '#Gerund #Noun'],\n  ['no soviet would go', 'no #Noun #Modal #Infinitive'],\n  [`per inning pitched`, `#Preposition #Singular #PastTense`],\n  [`ripping open its packaging`, `#PhrasalVerb+ #Possessive #Noun`],\n  [`using roof shingles`, `#Gerund #Singular #Noun`],\n\n  ['practicing walking', '#Gerund #Gerund'],\n  ['looking annoying', '#Gerund #Adjective'],\n  ['an overpowering feeling', 'an #Adjective #Noun'],\n  // ['a nearly overpowering feeling', 'a #Adverb #Adjective #Noun'],\n  ['Adjective meaning alluring', '#Noun #Gerund #Adjective'],\n  [`I'm shaking, falling onto my knees`, 'i am #Gerund #Gerund onto my #Plural'],\n  ['keep subsidizing skyrocketing tuition', '#Verb #Gerund #Adjective #Noun'],\n\n  [`people of varying ethnicities`, `#Noun of #Adjective #Plural`],\n  [`The 5 stages of buying gasoline`, `the 5 #Noun of #Verb #Noun`],\n  [`are you considering dining`, `are you #Gerund #Gerund`],\n  [`You'll find dancing noodles`, `#Pronoun will #Infinitive #Gerund #Plural`],\n  [`Practice breathing techniques.`, '#Infinitive #Gerund #Plural'],\n  // ['help working families', '#Infinitive #Gerund #Plural'],\n  ['stop posting schedules', '#Infinitive #Gerund #Plural'],\n  [`hang the cloak on the hook with rope`, `#Imperative the #Noun on the #Noun with #Noun`],\n  [`is just spam`, `#Copula just #Noun`],\n  [`is just right`, `#Copula just #Adjective`],\n  [`but [much] [finer]`, `#Conjunction #Adverb #Comparative`],\n  [`my [proposed] budget recognizes this`, `my #Adjective #Noun #PresentTense this`],\n  [`MCD [sets] up grievance cell`, `#Acronym #PhrasalVerb+ #Noun+`],\n  // -ess\n  ['fitness', '#Noun'],\n  ['chess', '#Noun'],\n  ['chest', '#Noun'],\n  ['fortress', '#Noun'],\n  ['goddess', '#Noun'],\n  ['jess', '#FirstName'],\n  ['madness', '#Noun'],\n  ['matress', '#Noun'],\n  ['pettiness', '#Noun'],\n  ['waitress', '#Noun'],\n  ['actress', '#Noun'],\n  ['eyewitness', '#Noun'],\n  ['excess waste', '#Adjective #Noun'],\n  ['golden harness', '#Adjective #Noun'],\n  ['big mess', '#Adjective #Noun'],\n  ['impress', '#Verb'],\n  ['possess', '#Verb'],\n  ['assess', '#Verb'],\n  ['access', '#Verb'],\n  ['bless', '#Verb'],\n  ['confess', '#Verb'],\n  ['careless', '#Adjective'],\n\n  [`I ask Congress to enact new safeguards`, `#Pronoun #Infinitive #Noun to #Infinitive #Adjective #Plural`],\n  [`enforcement will help [combat] illegal drugs`, `#Noun #Verb+ #Adjective #Noun`],\n  [`something funny [happened] to you`, `#Noun #Adjective #PastTense to #Noun`],\n  [`Long live Prince Prigio`, `#Adjective #Verb #Person+`],\n  [`look what we almost left`, `#Imperative what #Pronoun #Adverb #Verb`],\n  [`programs [which] [boost] achievement`, `#Plural which #Verb #Noun`],\n  [`shirts [last] a long time`, `#Plural #Infinitive #Determiner #Adjective #Noun`],\n  [`I am really a sweets person`, `#Pronoun #Copula #Adverb a #Plural #Noun`],\n  [`Fireplace tool that [consists] of matching`, `#Noun+ that #PresentTense of .`],\n  [`[Left] after an hour`, `#Verb after an #Noun`],\n  [`I hear the bowling [is] good`, `#Pronoun #Verb the #Noun #Copula #Adjective`],\n  [`[Ace] your oral examinations`, `#Imperative #Possessive #Adjective #Plural`],\n  [`work was [done] well`, `#Noun was #Verb #Adverb`],\n  [`the attempt [initiated] in 1705`, `the #Noun #Verb in #Year`],\n  [`PAC [constable] [confesses] involvement`, `#Acronym #Noun #PresentTense #Noun`],\n  [`[Submit] a medical certificate`, `#Imperative a #Adjective #Noun`],\n  [`it may [exceed] 18% alcohol`, `#Noun #Modal #Infinitive #Percent #Noun`],\n  [`cut 3 squares`, `#Infinitive #Value #Plural`],\n  [`Thou shalt have my corn`, `#Pronoun #Verb+ #Possessive #Noun`],\n  [`repeat steps`, '#Imperative #Plural'],\n  [`request copies`, '#Imperative #Plural'],\n  [`Ask questions`, '#Imperative #Plural'],\n  // [`it's well known for it's burger`, `#Pronoun #Copula #Adverb #Adjective for #Possessive #Singular`],\n  [`very friendly and [passionate] about coffee`, `#Adverb #Adjective and #Adjective #Preposition #Noun`],\n  [\n    `[Excuse] yourself by saying you need a bit of fresh air`,\n    `#Imperative #Reflexive by #Gerund #Pronoun #Infinitive a #Noun of #Adjective #Noun`,\n  ],\n  [`We remain on the [offensive] in Afghanistan`, `#Pronoun #Infinitive on the #Noun in #Place`],\n  [`my dog makes [fun] of me`, `#Possessive #Noun #PhrasalVerb #Particle of #Pronoun`],\n  [`This tour is [SUCH] a great idea`, `#Determiner #Singular #Copula #Adverb a #Adjective #Noun`],\n  [`Hunsur [canal] breach`, `#Noun+`],\n  [`The [past] and the future`, `the #Noun and the #Noun`],\n  [`MMVAs with hordes of teens`, `#Plural with #Plural of #Plural`],\n  [`my advisors audit`, `#Possessive #Possessive #Singular`],\n  [`the school's fire alarm`, `the #Possessive #Noun #Singular`],\n  [`for being too handsy`, `#Preposition #Gerund #Adverb #Adjective`],\n  [`from start to finish`, `#Preposition #Noun to #Singular`],\n  [`for comparison or contrast`, `#Preposition #Noun #Conjunction #Noun`],\n  [`with comparison not contrast`, `#Preposition #Noun not #Noun`],\n  [`crushing the uprising`, `#Gerund the #Noun`],\n  [`the remaining 42.1%`, `the #Adjective #Percent`],\n  [`we better go`, `#Pronoun #Modal #Infinitive`],\n  [`better walking`, `#Comparative #Noun`],\n  [`is even better`, `#Copula #Adverb #Comparative`],\n  [`you'd better go`, `#Pronoun had #Modal #Infinitive`],\n  [`he would later say`, `he #Modal #Adverb #Infinitive`],\n  [`even worse`, `#Adverb #Comparative`],\n  [`these many stars and [reviews]`, `#Determiner #Adjective #Plural and #Plural`],\n  [`this may help`, `#Determiner #Modal #Infinitive`],\n  [`this may was cold`, `#Determiner #Month #Copula #Adjective`],\n  [`The 1968 [film] about a school`, `the #Year #Noun #Preposition a #Noun`],\n  [`i have cash`, `#Pronoun #Infinitive #Noun`],\n  [`i have read`, `#Pronoun #Modal #PastTense`],\n  [`i will read`, `#Pronoun #Modal #PresentTense`],\n  [`i have a good read`, `#Pronoun #Infinitive a #Adjective #Noun`],\n  [`is a tough read`, `#Copula a #Adjective #Noun`],\n  [`a smarter [kind] of leadership`, `a #Comparative #Noun of #Noun`],\n  [`a new [kind]`, `a #Adjective #Noun`],\n  [`some [kind] of lesson`, `#Determiner #Noun of #Noun`],\n  [`I'm [still] in love`, `i am #Adverb #Preposition #Noun`],\n  [`I'm [still] walking`, `i am #Adverb #Gerund`],\n  [`I'm [still]`, `i am #Adjective`],\n  [`I feel quite [drowsy]`, `i #PresentTense #Adverb #Adjective`],\n  [`he [drew] [plans] for [building] a dam`, `#Pronoun #Verb #Plural for . a #Noun`],\n  [`both [dishes] came with steak [fries]`, `both #Plural #Verb with #Noun+`],\n  [`putting on frilly [knickers]`, `#PhrasalVerb #Particle #Adjective #Uncountable`],\n  [`pub serves up [indulgent] mac and cheese`, `#Noun #PhrasalVerb #Particle #Adjective #Noun and #Noun`],\n  [`three of my [favorite] [coats]`, `#Value of my #Adjective #Plural`],\n  [`security can vanish in an [instant]`, `#Noun #Modal #Verb in #Determiner #Noun`],\n  [`his break up`, `#Possessive #Noun #Noun`],\n  [`the tear down`, `#Determiner #Noun #Noun`],\n  [`every suck up`, `#Determiner #Noun #Noun`],\n  [`our catch up`, `#Possessive #Noun #Noun`],\n  [`the major give-away`, `#Determiner #Adjective #Noun #Noun`],\n  [`you shoulda seen her [face] [when] I took it`, `#Pronoun #Modal have #Verb her #Noun when #Pronoun #Verb it`],\n  [`there is no quit in them`, `#There #Copula no #Noun in #Pronoun`],\n  [`looking [beyond] the [present]`, `#Gerund #Adjective the #Noun`],\n  [`Be friendly to the guards`, `#Imperative #Adjective to the #Plural`],\n  [`they call it [self] confidence`, `#Pronoun #Infinitive #Pronoun #Noun+`],\n  [`I couldn't make up my mind`, `#Pronoun #Modal not #PhrasalVerb+ #Possessive #Noun`],\n  [`She is a bit taken back`, `#Pronoun #Copula a #Noun #Adjective #Adjective`],\n  [`She said \"Come over\"`, `#Pronoun #PastTense #Infinitive #Particle`],\n  [`cannot be shut out in the finals`, `#Verb not be #PhrasalVerb #Particle #Preposition #Determiner #Plural`],\n  [`Get off the corner`, `#PhrasalVerb #Particle the #Singular`],\n  [`meet with him and set up an appointment`, `#Imperative with #Pronoun and #PhrasalVerb+ #Determiner #Noun`],\n  [`cry for the heartbreak`, `#Imperative #Preposition the #Noun`],\n  [`sing to the baby`, `#Imperative to the #Noun`],\n  [`the individual settings for the tool`, `#Determiner #Adjective #Plural for the #Noun`],\n  [`the latter suggestions`, `#Determiner #Adjective #Plural`],\n  [`the secret police`, `#Determiner #Adjective #Noun`],\n  [`a terminal illness`, `#Determiner #Adjective #Noun`],\n  [`the teen pregnancy rate`, `#Determiner #Adjective #Noun #Noun`],\n  [`look up some best practices`, `#Imperative #Particle #Determiner #Adjective #Plural`],\n  [`Focus on the best parts.`, `#Imperative on #Determiner #Adjective #Plural`],\n  [`Gibson made a routine catch`, `#Person #Verb #Determiner #Adjective #Singular`],\n  [`Don’t make any rash decisions`, `do not #Imperative #Determiner #Adjective #Plural`],\n  // hyphentated adjectives\n  // [`carries oxygen-rich blood`, `#PresentTense #Adjective #Adjective #Noun`],\n  [`his best-known lyrics`, `his #Adjective #Adjective #Plural`],\n  [`A health-conscious president`, `a #Adjective #Adjective #Noun`],\n  [`company-wide death marches`, `#Adjective #Adjective #Noun #Plural`],\n  [`a supportive, body-positive community`, `a #Adjective #Adjective #Adjective #Noun`],\n  [`a post-apocalyptic Venice`, `#Determiner #Adjective #Adjective #Place`],\n  [`these include alcoholic hepatitis`, `these #Infinitive #Adjective #Noun`],\n  [`a silver gray tint`, `#Determiner #Adjective #Adjective #Noun`],\n  [`oh well [awkwardness] is bad`, `#Expression+ #Noun is #Adjective`],\n  [`I enjoyed the [variety] of sauces`, `#Pronoun #PastTense #Determiner #Noun of #Plural`],\n  [`Two vultures [board] an airplane`, `#Value #Plural #Infinitive an #Noun`],\n  [`Become a crime [laboratory] analyst`, `#Imperative a #Noun+`],\n  [`your taxes should go up`, `#Possessive #Plural #Modal #PhrasalVerb #Particle`],\n  [`[Guess] who's doing laundry`, `#Verb #QuestionWord is #Gerund #Noun`],\n  [`display of fear or heightened emotion`, `#Noun of #Noun or #Adjective #Noun`],\n  [`so ugly or deformed`, `#Adverb #Adjective #Conjunction #Adjective`],\n  [`the Co-Chairmen of the International Conference`, `the #Noun+ of the #Noun+`],\n  [`to give thanks`, `to #Infinitive #Plural`],\n  // [`wish to go home`, `#Infinitive to #PresentTense #Noun`],\n  [`Work to improve lives`, `#Imperative to #Infinitive #Plural`],\n  [`for January 2022`, `#Preposition #Month #Year`],\n  [`A swaging machine works by using two`, `a #Adjective #Noun #PresentTense #Preposition #Gerund #Value`],\n  [`Notes on eastern American poetry`, `#Plural on #Adjective #Demonym #Noun`],\n  // [`call and reserve one`, `#Imperative and #Infinitive one`],\n  [`We Sell All Brands`, `#Pronoun #Infinitive #Adjective #Plural`],\n  [`China aims to rebrand downtown`, `#Country #PresentTense #Conjunction #Infinitive #Noun`],\n  [`Cass Gilbert designed`, `#Person+ #Verb`],\n  [`Sherwood Anderson told him`, `#Person+ #Verb him`],\n  ['how very rich Prince Ahmed was', `how #Adverb #Adjective #Person+ was`],\n  [`for the poor, this is the largest tax`, `for the #Noun #Determiner is #Determiner #Adjective #Noun`],\n  [`a red-headed man`, `#Determiner #Adjective+ #Noun`],\n  ['Marc Singer is back', `#Person+ is back`],\n  [`bought a warhol`, `#Verb a !#Person`],\n  ['I am planning a three month scan', 'i #Verb+ #Determiner #Value #Noun #Noun'],\n  ['he arranged a 12 month journey', 'he #PastTense #Determiner #Value #Noun #Noun'],\n  ['I will book a 24-hour ECG', 'i #Verb+ #Determiner #Value #Noun #Noun'],\n  // [`the lieutenant general`, `#Determiner #Actor+`],\n  ['bowling alley', '#Noun+'],\n  ['bowling ball', '#Noun+'],\n  // rivers\n  ['the nile', '#Determiner #Place'],\n  ['the ganges', '#Determiner #Place'],\n  ['mekong river', '#Place+'],\n  ['river thames', '#Place+'],\n  ['the danube', '#Determiner #Place'],\n  ['the yangtze', '#Determiner #Place'],\n  ['orinoco river', '#Place+'],\n  ['the seine', '#Determiner #Place'],\n  ['rio grande', '#Place+'],\n  ['Godavari River', '#Place+'],\n  ['the Saint Lawrence River', 'the #Place+'],\n  ['by Foo Estuary', 'by #Place+'],\n  ['he became involved', '#Pronoun #PastTense #Adjective'],\n  ['they become creepy', '#Pronoun #PresentTense #Adjective'],\n\n  // ['becoming entangled with', '#Gerund #Adjective .'],\n  // ['becoming involved', '#Gerund #Adjective'],\n\n  ['he studies hard', '#Pronoun #PresentTense #Adverb'],\n  ['she flies direct', '#Pronoun #PresentTense #Adverb'],\n  ['she guesses early', '#Pronoun #PresentTense #Adverb'],\n  ['he shops early', '#Pronoun #PresentTense #Adverb'],\n\n  [`The dictator used torture to silence dissent.`, `#Determiner #Singular #PastTense #Noun to #Infinitive #Noun`],\n  ['the world’s leading manufacturer', '#Determiner #Possessive #Adjective #Singular'],\n  ['its sprawling metropolis.', '#Possessive #Adjective #Singular'],\n  [`I saw my ex-girlfriend`, `#Pronoun #PastTense #Possessive #Singular`],\n  [`she left her boots by the door`, `#Pronoun #PastTense #Possessive #Plural by the #Singular`],\n  [`She had doubts`, `#Pronoun #PastTense #Plural`],\n  [\n    `Don't let hate consume your heart and cloud your judgement`,\n    `do not #Verb #Noun #Infinitive your #Singular and #Infinitive your #Noun`,\n  ],\n  [`She lost her hold on reality`, `she #PastTense her #Noun on #Noun`],\n  [`The ruler is twelve inches long.`, `the #Noun is #Value #Plural long`],\n  [`The company offers competitive pay for employees`, `the #Noun #PresentTense #Adjective #Noun for #Plural`],\n  ['for instant access to training', 'for #Adjective #Noun to .'],\n  [`fair pay.`, '#Adjective #Noun'],\n  [\n    'ballistic missile attacks aimed at innocent civilians',\n    `#Adjective #Singular #Plural #PastTense at #Adjective #Plural`,\n  ],\n  [`fix the kitchen sink.`, `#Infinitive #Determiner #Singular+`],\n  [`Her stay in the city`, `her #Infinitive #Preposition #Determiner #Noun`],\n  [`near death experiences`, `#Adjective #Noun #Plural`],\n  [`ambitious sales targets`, `#Adjective #Noun #Plural`],\n  [\"she's really hot\", 'she is #Adverb #Adjective'],\n  [\"she's really engaged\", 'she is #Adverb .'],\n  ['Hope this helps.', '#Imperative #Determiner #PresentTense'],\n  ['a chicken that plays tic-tac-toe.', 'a #Noun that #PresentTense #Noun+'],\n  ['the ocean looked absolutely amazing', 'the #Noun #PastTense #Adverb #Adjective'],\n  ['get close', '#Imperative #Adjective'],\n\n  // place-words\n  ['River Thames', '#Place+'],\n  ['Thames River', '#Place+'],\n  ['Foo River', '#Place+'],\n  ['Foo National River', '#Place+'],\n  ['Foo National flog River', '!#Place+'],\n  ['River Foo', '#Place+'],\n  ['River of Foo', '#Place+'],\n\n  // unicode\n  ['milošević', '#Person'],\n  ['bjørn', '#Person'],\n  ['björn', '#Person'],\n  ['nguyễn', '#Person'],\n  // ['i̇zmir', '#ProperNoun'],\n  ['µs', '#Unit'],\n\n  ['single-particle tracking using biotin', '#Adjective #Noun #Noun #Gerund #Noun'],\n\n  ['a semiprofessional bodyworker', '#Determiner #Adjective #Noun'],\n  ['on stable foundations', 'on #Adjective #Noun'],\n  ['shocking lie', '#Adjective #Noun'],\n  ['shocking lies', '#Adjective #Plural'],\n  ['face shocking revelations', '#PresentTense #Adjective #Plural'],\n  ['The subway is always crowded during rush hour', 'the #Noun is always #Adjective during #Noun+'],\n  [`I wake up early every morning.`, 'i #PhrasalVerb+ #Adjective #Determiner #Noun'],\n  ['opens early in the morning', '#PresentTense #Adjective in the #Noun'],\n  ['ruins are enduring symbols of history', '#Plural are #Adjective #Plural of #Noun'],\n  ['She has fair hair and blue eyes.', '#Pronoun #Verb #Adjective #Noun and #Adjective #Plural'],\n\n  ['a love/hate affair', '#Determiner #SlashedTerm #Noun'],\n  ['4/3', '!#SlashedTerm'],\n  ['http://cool.com', '!#SlashedTerm'],\n  ['love / hate', '!#SlashedTerm'],\n  ['his/her backpack', '(#Pronoun && #SlashedTerm) #Noun'],\n  // ['', ''],\n]\ntest('match:', function (t) {\n  const res = []\n  arr.forEach(function (a) {\n    const [str, match] = a\n    const doc = nlp(str).compute('tagRank')\n    // doc.tagger().tagger()\n    const tags = doc.json()[0].terms.map(term => term.tagRank[0])\n    const msg = `'${(str + \"' \").padEnd(20, ' ')}  - '${tags.join(', ')}'`\n    const m = doc.match(match)\n\n    if (m.text() !== doc.text()) {\n      res.push(a[0])\n    }\n    t.equal(m.text(), doc.text(), here + msg)\n  })\n  // console.log(JSON.stringify(res, null, 2))\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/misc/canBe.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/canBe] '\n\ntest('canBe', function (t) {\n  const doc = nlp(`spencer was going crazy. He walks quickly.`)\n\n  const canBeNoun = doc.canBe('Noun')\n  t.equal(canBeNoun.length, 2, here + 'two results')\n  t.equal(canBeNoun.terms(0).text('normal'), 'spencer', here + 'first result')\n  t.equal(canBeNoun.terms(1).text(), 'He', here + 'first result')\n\n  const canBeVerb = nlp('spencer kelly').canBe('Verb')\n  t.equal(canBeVerb.length, 0, here + 'no results')\n\n  const canBeMisc = nlp('spencer kelly').canBe('asdf')\n  t.equal(canBeMisc.length, 1, here + 'all results are one')\n\n\n  const found = nlp(\"Moe Sizlak.\").terms().canBe('#Verb').found\n  t.equal(found, false, here + 'no verb')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/misc/confidence.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/confidence] '\n\ntest('confidence', function (t) {\n  const arr = [\n    ['', 1],\n    ['asdfasdf', 0.1],\n    ['google', 1],\n    ['jlcekehj is', 0.6],\n    ['yelpily good', 0.85],\n\n    // [ 'Striking revenue workers threaten gherao',null]\n    // [ 'Madhuri goes dhak-dhak again',null]\n    // [ `ACF's development committee meets`,null]\n    // [ 'State govt gives HR panel office space',null]\n  ]\n  arr.forEach(a => {\n    const [str, score] = a\n    t.equal(nlp(str).confidence(), score, here + str)\n  })\n\n  const json = nlp('errerum esto lominae').json({ confidence: true })[0]\n  t.equal(json.confidence, 0.1, 'confidence in json')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/misc/constructor.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/constructor] '\n\ntest('extra exports:', function (t) {\n  t.ok(nlp.version, 'version number exported')\n\n  t.doesNotThrow(function () {\n    nlp.verbose(true)\n    nlp.verbose(false)\n  }, here + 'can set verbosity')\n\n  t.end()\n})\n\ntest('tokenize() runs without pos-tagging', function (t) {\n  const str = 'Miss Hoover, I glued my head to my shoulder.'\n  const r = nlp.tokenize(str)\n  t.equal(r.out('text'), str, here + 'tokenize output is same')\n\n  t.equal(r.length, 1, 'sentence-parser-working')\n  const found = r.match('#Noun').found\n  t.equal(found, false, here + 'no sneaky-tagging')\n\n  t.end()\n})\n\ntest('tokenize() does not crash on long string with many sentences', function (t) {\n  let text = 'The quick brown fox jumped over the lazy dog.\\n'\n  text += 'Hi!\\n'.repeat(100000)\n  const _doc = nlp.tokenize(text) // eslint-disable-line\n  t.ok(true, here + 'repeated hi')\n  t.end()\n})\n\ntest('tokenize() does not crash on long string with few sentences', function (t) {\n  let text = 'The quick brown fox jumped over the lazy dog.\\n'\n  text += '--\\n'.repeat(100000)\n  const _doc = nlp.tokenize(text) // eslint-disable-line\n  t.ok(true, here + 'repeated dashes')\n  t.end()\n})\n\ntest('parseMatch() results are symmetric', function (t) {\n  const doc = nlp(`Why doesnt ross, the largest friend, simply eat the other 5?`)\n  const matches = [\n    '#MaleName the #Adjective friend',\n    '^why',\n    '#Value$',\n    null,\n    'why',\n    '.',\n    '. simply?',\n    'simply eat',\n    'tornado alley #Hoover',\n  ]\n  matches.forEach(str => {\n    const regs = nlp.parseMatch(str)\n    let a = doc.match(regs).json()\n    let b = doc.match(str).json()\n    a = JSON.stringify(a)\n    b = JSON.stringify(b)\n    t.equal(a, b, here + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/misc/emoji.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/emoji] '\n\n// test('keyword emojis', function (t) {\n//   [\n//     ['he is so nice :heart:', ':heart:'],\n//     [':cool: :wine_glass: yeah party', ':cool: :wine_glass:'],\n//     ['to be or not to be: this is a question :cookie:', ':cookie:'],\n//   ].forEach(function (a) {\n//     const have = nlp(a[0]).match('#Emoji').text().trim()\n//     const msg = \"have: '\" + have + \"'  want: '\" + a[1] + \"'\"\n//     t.equal(have, a[1], msg)\n//   })\n//   t.end()\n// })\n\ntest('unicode emojis', function (t) {\n  [\n    ['nice job 💯 ❤️', '💯 ❤️'],\n    ['💚 good job 🎇', '💚 🎇'],\n    ['visit Brunei', ''],\n    ['visit Brunei 🇧🇳', '🇧🇳'],\n    ['visit Brunei 🇧🇳🇧🇳🇧🇳', '🇧🇳🇧🇳🇧🇳'],\n  ].forEach(function (a) {\n    const have = nlp(a[0]).match('#Emoji').out('normal')\n    const msg = \"have: '\" + have + \"'  want: '\" + a[1] + \"'\"\n    t.equal(have, a[1], here + msg)\n  })\n  t.end()\n})\n\ntest('emoticon emojis', function (t) {\n  [\n    ['nice job :)', ':)'],\n    [';) good work', ';)'],\n    [';( oh no :(', ';( :('],\n    ['to be: that is th3 question', ''],\n    ['</3 </3 </3 sad', '</3 </3 </3'],\n    // ['</3</3', '</3</3'],\n  ].forEach(function (a) {\n    const have = nlp(a[0]).match('#Emoticon').out('normal')\n    t.equal(have, a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('result methods', function (t) {\n  const text = 'this :cookie: <3 💯 so good. It is really nice. Yes it is <3'\n\n  //has method\n  const m = nlp(text)\n  t.equal(m.match('#Emoji').found, true, here + 'nlp.has positive')\n  t.equal(m.match('#SportsTeam').found, false, here + 'nlp.has neg')\n\n  //filter string\n  let small = m.if('(#Emoji|#Emoticon)')\n  t.equal(small.out('text'), 'this :cookie: <3 💯 so good. Yes it is <3', here + 'nlp.filter string')\n\n  //filter method\n  small = m.ifNo('(#Emoji|#Emoticon)')\n  t.equal(small.out('normal'), 'it is really nice.', here + 'nlp.filter method')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/misc/lazy.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/lazy] '\nimport penn from '../tagger/_pennSample.js'\nconst txt = penn.map(a => a.text).join('\\n')\n\ntest('lazy matches are equal', function (t) {\n  const arr = [\n    'captain .',\n    '. of the #Noun',\n    '#Adverb #Adverb+',\n    '#Url #Noun .?',\n    'certain !#Plural'\n  ]\n  arr.forEach(str => {\n    const reg = nlp(txt).match(str)\n    const lazy = nlp.lazy(txt, str)\n    t.equal(reg.length, lazy.length, here + ' ' + str)\n    t.deepEqual(reg.out('array'), lazy.out('array'), here + ' ' + str)\n  })\n  t.end()\n})"
  },
  {
    "path": "tests/two/misc/misc.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/misc] '\n\ntest('non-coercive-lex', function (t) {\n  let doc = nlp('the Spencer Kelly', { kelly: 'Verb' })\n  t.equal(doc.has('#Verb'), false, here + 'still a person')\n\n  doc = nlp('i kelly', { kelly: 'Verb' })\n  t.equal(doc.has('#Verb'), true, here + 'now coerced')\n\n  doc = nlp('the  Kelly', { kelly: 'Verb' })\n  t.equal(doc.has('#ProperNoun'), true, here + 'titlecase')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/misc/multiTag.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/multitag] '\n\ntest('tag-sequence:', function (t) {\n  const doc = nlp('it was cold')\n  doc.tag('#One #Two #Three')\n  t.equal(doc.match('#One').text(), 'it', here + 'one')\n  t.equal(doc.match('#Two').text(), 'was', here + 'two')\n  t.equal(doc.match('#Three').text(), 'cold', here + 'three')\n  t.end()\n})\n\ntest('multiple-tags:', function (t) {\n  const doc = nlp('it was cold')\n  doc.tag(['#One', '#Two', '#Three'])\n  t.equal(doc.match('#One').text(), 'it was cold', here + '- all have #One')\n  t.equal(doc.match('#Two').text(), 'it was cold', here + '- all have #Two')\n  t.equal(doc.match('#Three').text(), 'it was cold', here + '- all have #Three')\n  t.end()\n})\n\ntest('tag-sequence-skip:', function (t) {\n  const doc = nlp('it was cold')\n  doc.tag('#One . #Three')\n  t.equal(doc.match('#One').text(), 'it', here + 'one')\n  t.equal(doc.match('#Two').text(), '', here + 'no-two')\n  t.equal(doc.match('#.').text(), '', here + 'no-dot')\n  t.equal(doc.match('#Three').text(), 'cold', here + 'three')\n  t.end()\n})\n\ntest('multiple-tags-skip:', function (t) {\n  const doc = nlp('it was cold')\n  doc.tag(['.', '#Two', '.'])\n  t.equal(doc.match('#One').found, false, here + 'skip - none have #One')\n  t.equal(doc.match('#Two').text(), 'it was cold', here + 'skip - all have #Two')\n  t.equal(doc.match('#Three').found, false, here + 'skip - none have #Three')\n  t.equal(doc.match('#.').found, false, here + 'skip - none have #dot')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/misc/remove-more.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/remove-more] '\n\ntest('remove-bug-1:', function (t) {\n  const txt = `before SW1A 2AA Remove me after`\n  const doc = nlp(txt)\n  const matches = doc.match('Remove me')\n  doc.remove(matches)\n  t.equal(doc.text(), 'before SW1A 2AA after', here + 'clean-remove')\n  t.end()\n})\n\ntest('remove-bug-1-loop:', function (t) {\n  const txt = `before SW1A 2AA Remove me after`\n  const doc = nlp(txt)\n  const matches = doc.match('Remove me')\n  matches.forEach((m) => doc.remove(m))\n  t.equal(doc.text(), 'before SW1A 2AA after', here + 'clean-remove')\n  t.end()\n})\n\ntest('remove-bug-2-loop :', function (t) {\n  const after = 'after 1. after 2. after 3. after 4. after 5.'\n  const text = `Remove 1. Remove 2. Remove 3. Remove 4. Remove 5. Remove 6. Remove 7. Remove 8. ` + after\n  const doc = nlp(text)\n  const matches = doc.match('Remove #NumericValue')\n  t.equal(matches.length, 8, here + '8 matches')\n  matches.forEach((m) => doc.remove(m))\n  t.equal(doc.text(), after, here + 'only after text')\n  t.end()\n})\n\ntest('remove-bug-2-no-loop :', function (t) {\n  const after = 'after 1. after 2. after 3. after 4. after 5.'\n  const text = `Remove 1. Remove 2. Remove 3. Remove 4. Remove 5. Remove 6. Remove 7. Remove 8. ` + after\n  const doc = nlp(text)\n  const matches = doc.match('Remove #NumericValue')\n  t.equal(matches.length, 8, here + '8 matches')\n  doc.remove(matches)\n  t.equal(doc.text(), after, here + 'only after text')\n  t.end()\n})\n\ntest('remove-bug-3 :', function (t) {\n  let doc = nlp(`Remove me 1. A some text. B some text. C some text`)\n  doc.match('* some text$').forEach((m) => m.prepend('prefix'))\n  let out = `Remove me 1. Prefix A some text. Prefix B some text. Prefix C some text`\n  t.equal(doc.out(), out, here + 'prepend only')\n\n  out = `Prefix A some text. Prefix B some text. Prefix C some text`\n\n  doc = nlp(`Remove me 1. A some text. B some text. C some text`)\n  doc.match('Remove me #NumericValue').forEach((m) => doc.remove(m))\n  const res = doc.match('* some text$').map((m) => m.prepend('prefix'))\n  t.equal(res.out(), out, here + 'remove then prepend - output')\n\n  // doc = nlp(`Remove me 1. A some text. B some text. C some text`)\n  // doc.match('Remove me #NumericValue').forEach((m) => doc.remove(m))\n  // doc.match('* some text$').forEach((m) => m.prepend('prefix'))\n  // t.equal(doc.out(), out, here + 'remove then prepend - self')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/misc/root.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/root] '\n\ntest('root misc', function (t) {\n  let txt = `i've exercised four to five days per week.`\n  let doc = nlp(txt).compute('root')\n  let want = `i have exercise four to five day per week.`\n  t.equal(doc.text('root'), want, here + 'found root form')\n\n  txt = `he seems quicker. She's the quickest.`\n  doc = nlp(txt).compute('root')\n  want = `he seem quick. she is the quick.` //:/\n  t.equal(doc.text('root'), want, here + 'found root comparative')\n  t.end()\n})\n\ntest('root text', function (t) {\n  const arr = [\n    // [`I've seen worse`,`i see worse`],\n    [`try and pass`, `try and pass`],\n    [`so I guess`, `so i guess`],\n    [`Kiss you `, `kiss you`],\n    [` I miss you`, `i miss you`],\n    [`Focus on`, `focus on`],\n    [`c'mere, gimme`, `come here give me`],\n    [`more broken promises`, `more broken promise`],\n    [`Address potential causes`, `address potential cause`],\n    [`to express the subject.`, `to express the subject.`],\n    [`C'mon`, `come on`],\n    [`dismiss this`, `dismiss this`],\n    // [`needed to access`, `need to access`],\n    // [`to see what had happened, threw herself head foremost.`,``],\n    // [`the remarkable was better`,`the remarkable was better`],\n    // [`blew Curdken's hat`,``],\n    // [`its great purposes.`,``],\n    // [`Anyways, New Years`,``],\n    // [`It's only me -- Jaqueline.`,``],\n    // [`and Saturdays 11 a.m. - 3 p.m. when.`,``],\n    // [`He ws quiet`, `he ws quiet`],\n    [`different sizes`, `different size`],\n    [`he swam to`, `he swim to`],\n    [`bowls`, `bowl`],\n    [`tis`, `it is`],\n    [`characteristics`, `characteristic`],\n    [`menus`, `menu`],\n    [`tactics`, `tactic`],\n    // [`others`, `other`],\n    // [`yours`,``],\n  ]\n  arr.forEach(a => {\n    const doc = nlp(a[0]).compute('root')\n    t.equal(doc.text('root'), a[1], here + a[0])\n  })\n\n  t.end()\n})\n\n\ntest('lookup root', function (t) {\n  const txt = `i've exercised four to five days per week.`\n  const doc = nlp(txt).compute('root')\n  const res = doc.lookup(['john lennon', 'exercise', 'four to five'], { form: 'root' })\n  t.deepEqual(res.out('array'), ['exercised', 'four to five'], here + 'found root form')\n  t.end()\n})\n\n\ntest('root match', function (t) {\n  let doc = nlp('five works of art')\n  t.equal(doc.has('{work}'), true, here + '{work}')\n  t.equal(doc.has('{work/noun}'), true, here + '{work/noun}')\n  t.equal(doc.has('{work/verb}'), false, here + '{work/verb}')\n  t.equal(doc.has('{work/adjective}'), false, here + '{work/adjective}')\n\n  doc = nlp('i work at 8')\n  t.equal(doc.has('{work}'), true, here + '{work} vb')\n  t.equal(doc.has('{work/noun}'), false, here + '{work/noun} vb')\n  t.equal(doc.has('{work/verb}'), true, here + '{work/verb} vb')\n  t.equal(doc.has('{work/adjective}'), false, here + '{work/adjective} vb')\n  doc = nlp('i worked at 8')\n  t.equal(doc.has('{work}'), true, here + '{work} vbd')\n  t.equal(doc.has('{work/noun}'), false, here + '{work/noun} vbd')\n  t.equal(doc.has('{work/verb}'), true, here + '{work/verb} vbd')\n  t.equal(doc.has('{work/adjective}'), false, here + '{work/adjective} vbd')\n  doc = nlp('i am working at 8')\n  t.equal(doc.has('{work}'), true, here + '{work} vbg')\n  t.equal(doc.has('{work/noun}'), false, here + '{work/noun} vbg')\n  t.equal(doc.has('{work/verb}'), true, here + '{work/verb} vbg')\n  t.equal(doc.has('{work/adjective}'), false, here + '{work/adjective} vbg')\n\n  doc = nlp('he was sweet')\n  t.equal(doc.has('{sweet}'), true, here + '{sweet} jj')\n  t.equal(doc.has('{sweet/noun}'), false, here + '{sweet/noun} jj')\n  t.equal(doc.has('{sweet/verb}'), false, here + '{sweet/verb} jj')\n  t.equal(doc.has('{sweet/adjective}'), true, here + '{sweet/adjective} jj')\n  doc = nlp('he was sweeter')\n  t.equal(doc.has('{sweet}'), true, here + '{sweet} jjr')\n  t.equal(doc.has('{sweet/noun}'), false, here + '{sweet/noun} jjr')\n  t.equal(doc.has('{sweet/verb}'), false, here + '{sweet/verb} jjr')\n  t.equal(doc.has('{sweet/adjective}'), true, here + '{sweet/adjective} jjr')\n  doc = nlp('he sweetly sang')\n  t.equal(doc.has('{sweet}'), true, here + '{sweet} rb')\n  t.equal(doc.has('{sweet/noun}'), false, here + '{sweet/noun} rb')\n  t.equal(doc.has('{sweet/verb}'), false, here + '{sweet/verb} rb')\n  t.equal(doc.has('{sweet/adjective}'), false, here + '{sweet/adjective} rb')\n\n  t.end()\n})\n\ntest('sense match', function (t) {\n  const doc = nlp('the stool was brown')\n  doc.docs[0][1].sense = 'chair'\n  t.equal(doc.has('{stool}'), true, here + '{stool}')\n  t.equal(doc.has('{stool/Noun}'), true, here + '{stool/Noun}')\n  t.equal(doc.has('{stool/Noun/poop}'), false, here + '{stool/Noun/poop}')\n  t.equal(doc.has('{stool/Noun/chair}'), true, here + '{stool/Noun/chair}')\n  t.end()\n})"
  },
  {
    "path": "tests/two/misc/smoke.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/smoke] '\n\n//make sure it can handle garbage inputs\ntest('garbage-inputs', function (t) {\n  const garbage = ['', '  ', null, '\\n\\n', []] //{}\n  garbage.forEach(function (g, i) {\n    const num = nlp(g).length\n    const msg = typeof g + ' text input #' + i + '  ' + g\n    t.equal(num, 0, here + msg)\n  })\n  let str = nlp(2).out()\n  t.equal(str, '2', here + 'integer-casted')\n  str = nlp(2.2).out()\n  t.equal(str, '2.2', here + 'float-casted')\n\n  //garbage in lexicon too\n  str = nlp('hello', null).out()\n  t.equal(str, 'hello', here + 'null-lexicon')\n\n  str = nlp('hello', 2).out()\n  t.equal(str, 'hello', here + 'int-lexicon')\n  t.end()\n})\n\ntest('test-regex-safety', function (t) {\n  let doc = nlp(\n    '-5,999,666,454,234,523,233,234,234,234,234,234,234,234,999,929,838,234,234,234,234,234,234,234.00282828282838383838383838383838383838380'\n  )\n  t.equal(doc.has('#NumericValue'), true, here + 'found-long-number')\n\n  doc = nlp(\n    '-5,999,666,454,234,523,233,234,234,234,234,234,234,234,999,929,838,234,234,234,234,234,234,234.00282828282838383838383838383838383838380%'\n  )\n  t.equal(doc.has('#Percent'), true, here + 'found-long-percent')\n\n  doc = nlp('-$22,999,666,454,234,523,233,234,234,234,234,234,234,234,999,929,838,234,234,234,234,234,234,234.00')\n  t.equal(doc.has('#Money'), true, here + 'found-long-money')\n  t.end()\n})\n\ntest('only-punctuation', function (t) {\n  const garbage = ['.', ' - ', '...', '?', '&', '?,', '\\n. \\n', '🎵', '\\n🇵🇷\\n', '🇵🇷.', `🇷 %`]\n  garbage.forEach(function (str) {\n    const doc = nlp(str)\n    t.equal(doc.text(), str, here + \"text-'\" + str + \"'\")\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/misc/tagRank.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/bestTag] '\n\ntest('bestTag', function (t) {\n  let str = 'john smith was really working'\n  let m = nlp(str).compute('tagRank')\n  let have = m.json()[0].terms.map(term => term.tagRank[0])\n  let want = ['MaleName', 'LastName', 'Copula', 'Adverb', 'Gerund']\n  let msg = str + ' - [' + have.join(', ') + ']'\n  t.deepEqual(have, want, here + msg)\n\n  str = 'he sang in June'\n  m = nlp(str).compute('tagRank')\n  have = m.json()[0].terms.map(term => term.tagRank[0])\n  want = ['Pronoun', 'PastTense', 'Preposition', 'Month']\n  msg = str + ' - [' + have.join(', ') + ']'\n  t.deepEqual(have, want, here + msg)\n\n  str = 'fastest shooter in Canada'\n  m = nlp(str).compute('tagRank')\n  have = m.json()[0].terms.map(term => term.tagRank[0])\n  want = ['Superlative', 'Singular', 'Preposition', 'Country']\n  msg = str + ' - [' + have.join(', ') + ']'\n  t.deepEqual(have, want, here + msg)\n\n  t.end()\n})\n\ntest('bestTag-unknown', function (t) {\n  const str = 'john smith'\n  const m = nlp(str)\n  m.tag('Foo Bar')\n  m.compute('tagRank')\n  const have = m.json()[0].terms.map(term => term.tagRank[0])\n  const want = ['Foo', 'Bar']\n  const msg = str + ' - [' + have.join(', ') + ']'\n  t.deepEqual(have, want, here + msg)\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/misc/term-ids.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/term-ids] '\n\nlet txt = `The hours have passed like stones being pushed up a mountain. For all of the luxury that surrounds us, I can't shake this feeling of unease that's slowly creeping in through the back of my mind. I can tell that Johna and Temmy have noticed it as well—it's just something about the air here that makes me uneasy. Joanna feigns disinterest but behind her shades she's studying the surroundings like the seasoned detective she is.`\n\ntest('term-id validation', function (t) {\n  txt = txt.repeat(4)\n  const doc = nlp(txt)\n  const badTerm = []\n  const already = {}\n  let words = 0\n  // ensure they all have ids\n  doc.docs.forEach(terms => {\n    terms.forEach(term => {\n      words += 1\n      if (!term.id) {\n        badTerm.push(term)\n      }\n      // collisions should be very unlikely\n      if (already[term.id]) {\n        badTerm.push(term)\n      }\n      already[term.id] = true\n    })\n  })\n  // if (badTerm.length) {\n  //   console.log('dupe terms:', badTerm)\n  // }\n  t.equal(badTerm.length, 0, here + 'terms have unique-ids')\n  const terms = doc.terms()\n  t.equal(terms.length, words, here + 'right term count')\n\n  t.equal(terms.ptrs.length, words, here + 'right pointer count')\n  t.end()\n})\n\ntest('term-id validation', function (t) {\n  const text = (txt + '\\n').repeat(50)\n  const doc = nlp(text)\n  let m = doc.terms()\n  const max = m.length\n  m = m.not('#Pronoun')\n  m = m.not('#Preposition')\n  m = m.not('#Conjunction')\n  m = m.not('#Determiner')\n  t.equal(m.length < max, true, here + ' no .not() memleak')\n  t.end()\n})"
  },
  {
    "path": "tests/two/misc/unique.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/unique] '\n\ntest('term-unique', function (t) {\n  const doc = nlp(`him and her and him`)\n  const m = doc.terms().unique()\n  t.equal(m.text(), 'him and her', here + 'terms-unique')\n  t.equal(doc.text(), `him and her and him`, here + 'original-has-duplicates')\n  t.end()\n})\n\ntest('sentence-unique', function (t) {\n  const str = `him and her. in toronto. him and her. him.`\n  const doc = nlp(str)\n  const uniq = doc.unique()\n  t.equal(uniq.text(), 'him and her. in toronto. him.', here + 'remove dup sentences')\n  t.equal(doc.text(), str, here + 'keep dup sentences')\n  t.end()\n})\n\ntest('unique-normalize', function (t) {\n  let doc = nlp(`SPENCER's house (spencer)`)\n  doc = doc.terms().unique()\n  t.equal(doc.text(), \"SPENCER's house\", here + 'normalize-possessive')\n\n  doc = nlp(`is not isn't`)\n  doc = doc.terms().unique()\n  t.equal(doc.text(), 'is not', here + 'normalize-contraction')\n  t.equal(doc.length, 2, here + 'implicit words are uniqued')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/misc/wordcount.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/wordcount] '\n\ntest('==WordCount==', function (t) {\n  const arr = [\n    ['he is good', 3],\n    ['jack and jill went up the hill.', 7],\n    ['Mr. Clinton did so.', 4],\n    ['Bill Clinton ate cheese.', 4],\n    ['5kb of data.', 3],\n    ['it was five hundred and seventy two.', 7],\n    ['jack and jill went up the hill. They got water.', 10],\n    ['Bill Clinton went walking', 4],\n    ['Bill Clinton will go walking', 5],\n    [`is not isn't. it sure is.`, 6],\n  ]\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    t.equal(doc.wordCount(), a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('match-wordcount', function (t) {\n  const doc = nlp(\"he is cool. she is nice. it isn't here.\")\n  t.equal(doc.eq(1).wordCount(), 3, here + 'middle-sentence')\n  t.equal(doc.match('(he|she)').wordCount(), 2, here + 'he/she match')\n  t.equal(doc.match('is').wordCount(), 3, here + 'is-contraction match')\n  //i guess!?\n  t.equal(doc.match('not').wordCount(), 0, here + 'not-contraction match')\n  t.equal(doc.match('not').length, 1, here + 'length-vs-wordCount')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/miss.test.js",
    "content": "import test from 'tape'\nimport nlp from './_lib.js'\nconst here = '[two/miss] '\n\nconst arr = [\n  [`coolcom`, '#Url'],\n  [`egg./com`, '#Url'],\n  [`foo,org`, '#Url'],\n  [`.com`, '#Url'],\n  [`.com/path`, '#Url'],\n\n  [`sasdf@sasdf.t`, '#Email'],\n  [`sasdf@sasdft`, '#Email'],\n  [`sasdfsasdft.com`, '#Email'],\n  [`@sasdft.com`, '#Email'],\n  [`_@_._`, '#Email'],\n  [`sas df@sasdf.com`, '^#Email'],\n  [`sasdf@sa sdf.com`, '#Email'],\n\n  [`# l`, '#HashTag'],\n  [`l#l`, '#HashTag'],\n  [`walk in on`, '#Verb #Preposition #Preposition'],\n  [`standing out in`, '#Verb #Preposition #Preposition'],\n  // [``, ''],\n]\n\ntest('no-match:', function (t) {\n  arr.forEach(function (a) {\n    const doc = nlp(a[0])\n    const msg = `'${(a[0] + \"' \").padEnd(20, '.')}  - '${a[1]}'`\n    t.equal(doc.has(a[1]), false, here + msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/output/json.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/json] '\n\nconst hasTag = function (term, want) {\n  if (!term || !term.tags) {\n    return false\n  }\n  return term.tags.some(tag => tag === want)\n}\n\ntest('json out default', function (t) {\n  const doc = nlp('who are you? what is this?')\n  const json = doc.json({ terms: true })\n  t.equal(json.length, 2, here + 'json-len')\n  t.equal(json[1].text, 'what is this?', here + 'json-text')\n  t.equal(json[1].terms.length, 3, here + 'json-three-terms')\n  t.equal(hasTag(json[1].terms[1], 'Copula'), true, here + 'json-has-tag')\n  t.end()\n})\n\ntest('json out trim', function (t) {\n  const doc = nlp('who are you? what is this?')\n  const json = doc.json({ trim: false, terms: false })\n  t.equal(json.length, 2, here + 'json-len')\n  t.equal(json[0].text, 'who are you?', here + 'json-text')\n  t.equal(json[1].text, 'what is this?', here + 'json-text')\n  t.equal(json[1].terms, undefined, here + 'json-no-terms')\n  t.end()\n})\n\ntest('json out implicit', function (t) {\n  const str = `he isn't`\n  const doc = nlp(str)\n  const json = doc.json()\n  t.equal(json.length, 1, here + 'json-len')\n  t.equal(json[0].text, str, here + 'json-text')\n  t.equal(json[0].terms.length, 3, here + 'json-three-terms')\n  const t0 = json[0].terms[0] || {}\n  t.equal(t0.implicit, undefined, here + 'has-no-implicit')\n  const t1 = json[0].terms[1] || {}\n  t.equal(hasTag(t1, 'Copula'), true, here + 'json-has-tag')\n  t.equal(t1.machine, 'is', here + 'has-implicit1')\n  t.equal(hasTag(json[0].terms[2], 'Negative'), true, here + 'json-has-tag2')\n  const t2 = json[0].terms[2] || {}\n  t.equal(t2.machine, 'not', here + 'has-implicit2')\n  t.end()\n})\n\ntest('json terms out', function (t) {\n  const doc = nlp(`she was not`)\n  const json = doc.json({ text: false, terms: { clean: true, id: true, whitespace: true } })\n  t.equal(json.length, 1, 'json-len')\n  t.equal(json[0].text, undefined, here + 'json-text')\n  t.equal(json[0].terms.length, 3, here + 'json-terms-length')\n  // let t0 = json[0].terms[0] || {}\n  // t.equal(t0.bestTag, 'Pronoun', 'json-terms-bestTag')\n  const t1 = json[0].terms[1] || {}\n  // t.equal(t1.bestTag, 'Copula', 'json-terms-bestTag1')\n  // let t2 = json[0].terms[2] || {}\n  // t.equal(t2.bestTag, 'Negative', 'json-terms-bestTag2')\n\n  t.equal(t1.pre, '', here + 'json-terms-whitespace-pre')\n  t.equal(t1.post, ' ', here + 'json-terms-whitespace-post')\n  t.end()\n})\n\n// test('json-index:', function (t) {\n//   let doc = nlp(`john is not really walking`)\n//   let obj = doc.match('really').json({ index: true })[0]\n//   t.equal(obj.terms[0].index[1], 3, 'index:3')\n//   t.equal(obj.index, 3, 'phrase-index:3')\n//   t.end()\n// })\n\n// test('json-unique:', function (t) {\n//   let doc = nlp(`a b c b a`)\n//   let arr = doc.terms().json({ unique: true, terms: false, count: true })\n//   t.equal(arr.length, 3, 'no duplicates')\n//   t.end()\n// })\n\n\n\ntest('out-custom:', function (t) {\n  const doc = nlp('The competent drum work of Don Brewer?')\n  const arr = doc.json({\n    terms: {\n      text: true,\n      normal: false,\n      tags: true,\n      sdf: true,\n      root: true,\n    },\n  })[0].terms\n  t.equal(arr[0].text, 'The', here + 'has text')\n  // t.equal(arr[5].root, 'don', 'has root')\n  t.equal(arr[5].sdf, undefined, 'has no sdf')\n  t.equal(\n    arr[0].tags.some(tag => tag === 'Determiner'),\n    true,\n    here + 'has tags'\n  )\n  t.end()\n})\n\ntest('out:', function (t) {\n\n  const doc = nlp(`john is not really walking`)\n  let json = doc.out('json')\n  t.equal(json.length, 1, here + 'one-json')\n  json = doc.out('offset')\n  t.equal(json.length, 1, here + 'offset-out')\n\n  // let terms = doc.out('terms')\n  // t.equal(terms[0], 'john', here + 'terms-out')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/output/out.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/out] '\n\ntest('out-tags', function (t) {\n  const out = nlp(`he's cool.`).out('tags')\n  t.equal(out.length, 1, 'one sentence')\n  t.equal(out[0].he.indexOf('Pronoun') !== -1, true, here + 'has he:Pronoun')\n  t.equal(out[0].is.indexOf('Copula') !== -1, true, here + 'has is:Copula')\n  t.equal(out[0].cool.indexOf('Adjective') !== -1, true, here + 'has cool:Adjective')\n  t.end()\n})\n\ntest('out-topk', function (t) {\n  const doc = nlp(`What'd I say? Monorail. and it called? Monorail.`)\n  const out = doc.out('freq')\n  // t.equal(out.length, 3, here + 'three results')\n  t.equal(out[0].normal, 'monorail.', here + 'top-result is most-frequent')\n  t.equal(out[0].count, 2, here + 'got count')\n  t.end()\n})\n\ntest('out-array', function (t) {\n  const arr = nlp('1-2').terms().out('array')\n  t.equal(arr.length, 1, here + 'one result')\n  t.equal(arr[0], '1-2', here + 'got contraction text')\n  t.end()\n})\n\ntest('out-wrap', function (t) {\n  let doc = nlp(\"soft and yielding like a nerf ball\")\n  let out = doc.out({\n    '#Adjective': (m) => `[${m.text()}]`\n  })\n  t.equal(out, `[soft] and [yielding] like a nerf ball`, here + 'two matches')\n\n  // pre-post\n  doc = nlp(\"before (match) after\")\n  out = doc.wrap({\n    'match': () => `few more words`,\n  })\n  t.equal(out, `before (few more words) after`, here + 'pre+post')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/output/text.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[one/text] '\n\ntest('text-formats', function (t) {\n  const doc = nlp(`Toronto's citizens LOVE toronto! they come here for food.`)\n  t.equal(doc.text('normal'), `toronto's citizens love toronto! they come here for food.`, here + 'normal')\n  t.end()\n})\n\ntest('text(normal):', function (t) {\n  const arr = [\n    ['he is good', 'he is good'],\n    ['Jack and Jill went up the hill.', 'jack and jill went up the hill.'],\n    // ['Mr. Clinton did so.', 'mr clinton did so.'],\n    ['he is good', 'he is good'],\n    ['Jack and Jill   went up the hill. She got  water.', 'jack and jill went up the hill. she got water.'],\n    ['Joe', 'joe'],\n    ['just-right', 'just right'],\n    ['camel', 'camel'],\n    ['4', '4'],\n    ['four', 'four'],\n    ['john smith', 'john smith'],\n    // ['Dr. John Smith-McDonald', 'dr john smith mcdonald'],\n    ['Contains no fruit juice. \\n\\n All rights reserved', 'contains no fruit juice. all rights reserved'],\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0]).text('normal')\n    t.equal(str, a[1], here + a[0])\n  })\n  t.end()\n})\n\ntest('text-text', function (t) {\n  const str = `My dog LOVES pizza, and grapes!!`\n  const doc = nlp(str)\n  t.equal(doc.json({ text: true })[0].text, str, here + 'json(text)')\n  t.equal(doc.text('text'), str, here + 'text(text): ')\n  t.end()\n})\n\ntest('text-normal', function (t) {\n  const doc = nlp(`My dog LOVES pizza, and grapes!!`)\n  const want = 'my dog loves pizza and grapes!'\n  t.equal(doc.json({ normal: true })[0].normal, want, 'json(normal)')\n  t.equal(doc.text('normal'), want, 'text(normal): ')\n  // doc.normalize()\n  // t.equal(doc.text('text'), str, 'normalize():  ')\n  t.end()\n})\n\ntest('text-reduced', function (t) {\n  let doc = nlp(`My dog LOVES pizza, and grapes!!`)\n  const want = 'my dog loves pizza and grapes'\n  t.equal(doc.json({ reduced: true })[0].reduced, want, 'json(reduced)')\n  // t.equal(doc.text('reduced'), want, 'text(reduced): ')\n  // doc.normalize('reduced')\n  // t.equal(doc.text('reduced'), str, 'normalize(reduced):  ')\n  doc = nlp('Rälf.  ')\n  t.equal(doc.text('reduced'), 'ralf.', 'reduced trim whitespace ')\n  t.end()\n})\n\ntest('text-implicit', function (t) {\n  const doc = nlp(`My dog isn't good, he's the best!`)\n  const want = 'My dog is not good, he is the best!'\n  t.equal(doc.json({ implicit: true })[0].implicit, want, 'json(implicit)')\n  t.equal(doc.text('implicit'), want, 'text(implicit): ')\n  t.end()\n})\n\ntest('text-punct', function (t) {\n  const doc = nlp('Stare down my double-barrel shotgun.').not('stare down my')\n  t.equal(doc.text(), 'double-barrel shotgun', 'text-punct')\n  t.end()\n})\n\ntest('text-machine', function (t) {\n  const doc = nlp(\"he's just a tiny baby\")\n  t.equal(doc.text('machine'), 'he is just a tiny baby', here + 'machine contraction')\n  t.end()\n})\n\ntest('text-root', function (t) {\n  const doc = nlp(`My dog LOVES pizza, and grapes...`)\n  doc.compute('root')\n  const want = 'my dog love pizza and grape'\n  t.equal(doc.json({ root: true })[0].root, want, here + 'json(root)')\n  t.equal(doc.text('root'), want, 'text(root): ')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/plugin/addTags.ignore.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/addTags] '\n\nconst _nlp = nlp.fork()\ntest('tagset-change-isA-basic', function (t) {\n  _nlp.addTags({\n    Doctor: {\n      is: 'Person',\n    },\n  })\n  _nlp.addWords({\n    surgeon: 'Doctor',\n    'surgeon general': 'Doctor',\n  })\n  let doc = _nlp('the surgeon operated')\n\n  //basic isA\n  t.equal(doc.match('#Doctor').out('normal'), 'surgeon', here + 'surgeon is a doctor')\n  t.equal(doc.match('#Person+').length, 1, here + 'doctor is a person')\n\n  doc = _nlp('lkjsdf').tag('#Person')\n  t.equal(doc.match('#Doctor').length, 0, here + 'person isnt a doctor, necessarily')\n\n  doc = _nlp('lkjsdf').tag('#Doctor')\n  t.equal(doc.match('#Person').length, 1, here + 'post-hoc tags work, too')\n\n  //multi-word\n  doc = _nlp('the surgeon general operated')\n  t.equal(doc.match('#Doctor').out('normal'), 'surgeon general', here + 'multi-word')\n  t.equal(doc.match('#Person').out('normal'), 'surgeon general', here + 'multi-word-isA')\n  t.end()\n})\n\ntest('tagset-change-isA', function (t) {\n  _nlp.addTags({\n    Doctor: {\n      is: 'Person',\n      not: 'Foo',\n    },\n  })\n  _nlp.addWords({\n    lkjj: 'Foo',\n  })\n  const doc = _nlp('he is lkjj')\n  t.equal(doc.match('#Foo').out('normal'), 'lkjj', here + 'init-there')\n  doc.match('lkjj').tag('#Doctor')\n\n  t.equal(doc.match('#Doctor').out('normal'), 'lkjj', here + 'doctor-tag-there')\n  t.equal(doc.match('#Foo').out('normal'), '', here + 'foo-is-gone')\n\n  t.end()\n})\n\ntest('tagset-remove-downward', function (t) {\n  _nlp.addTags({\n    Doctor: {\n      is: 'Person',\n    },\n    Surgeon: {\n      is: 'Doctor',\n    },\n  })\n  const doc = _nlp('george is a person.')\n  doc.match('george').tag('Surgeon')\n\n  t.ok(doc.has('#Surgeon'), here + 'Surgeon-tag-there')\n  t.ok(doc.has('#Doctor'), here + 'doctor-tag-there')\n  t.ok(doc.has('#Person'), here + 'person-tag-there')\n\n  //remove one in the middle..\n  doc.match('george').unTag('Person')\n  t.ok(doc.has('#Person') === false, here + 'person-tag-gone')\n  t.ok(doc.has('#Doctor') === false, here + 'doctor-tag-gone1')\n  t.ok(doc.has('#Surgeon') === false, here + 'Surgeon-tag-gone')\n  t.end()\n})\n\ntest('tagset-remove-half-downward', function (t) {\n  _nlp.addTags({\n    Doctor: {\n      is: 'Person',\n    },\n    Surgeon: {\n      is: 'Doctor',\n    },\n  })\n  const doc = _nlp('george is a person.')\n  doc.match('george').tag('Surgeon')\n\n  //remove one just under the top..\n  doc.match('george').unTag('Doctor')\n  t.ok(doc.has('#Person') === true, here + 'person-tag-there')\n  t.ok(doc.has('#Doctor') === false, here + 'doctor-tag-gone2')\n  t.ok(doc.has('#Surgeon') === false, here + 'Surgeon-tag-gone')\n  t.end()\n})\n\ntest('tagset-tree', function (t) {\n  _nlp.addTags({\n    One: {},\n    Two: {},\n    Three: { is: 'Two' },\n  })\n  const doc = _nlp(`have fun in toronto`, { toronto: 'Three' })\n  const m = doc.match('toronto')\n  t.ok(m.has('#Three'), 'three')\n  t.ok(m.has('#Two'), 'two')\n  t.equal(m.has('#One'), false, 'no one')\n  t.equal(m.has('#Adjective'), false, here + 'no Adjective')\n  t.end()\n})\n\n// test('tagset-tree-array', function (t) {\n//   _nlp.addTags({\n//     One: {},\n//     Two: {},\n//     Three: { is: ['Two', 'One', 'FirstName'] },\n//   })\n//   let doc = _nlp(`have fun in toronto`, { toronto: 'Three' })\n//   let m = doc.match('toronto')\n//   t.ok(m.has('#Three'), here + 'three')\n//   t.ok(m.has('#Two'), here + 'two')\n//   t.ok(m.has('#One'), here + 'one')\n//   t.ok(m.has('#FirstName'), here + 'FirstName')\n//   t.ok(m.has('#Person'), here + 'Person')\n//   t.ok(m.has('#Noun'), here + 'Noun')\n//   t.end()\n// })\n"
  },
  {
    "path": "tests/two/plugin/addWords.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/addWords] '\n\ntest('persistent-lexicon-change', function (t) {\n  let doc = nlp('he is marko')\n  t.equal(doc.match('#Place+').length, 0, here + 'default-no-place')\n  t.equal(doc.match('#Person+').length, 1, here + 'default-one-person')\n\n  nlp.addWords({\n    marko: 'Place',\n  })\n  doc = nlp('he is marko')\n  t.equal(doc.match('#Place+').length, 1, here + 'now-one-place')\n  t.equal(doc.match('#Person+').length, 0, here + 'now-no-person')\n\n  nlp.addWords({\n    foo: 'Place',\n  })\n  doc = nlp('he is marko')\n  t.equal(doc.match('#Place+').length, 1, here + 'still-one-place')\n  t.equal(doc.match('#Person+').length, 0, here + 'still-no-person')\n\n  t.end()\n})\n\ntest('apostrophe lexicon:', function (t) {\n  const lex = {\n    'queen anne\\'s lace': 'Flower',\n    'applebee\\'s': 'Restaurant'\n  }\n  let doc = nlp(`i went to applebee's for dinner`, lex)\n  t.equal(doc.has(`#Restaurant`), true, here + 'lexicon w/ apostrophe')\n\n  doc = nlp(`Queen Anne's lace`, lex)\n  t.equal(doc.has(`#Flower`), true, here + 'multi lexicon w/ apostrophe')\n  t.end()\n})"
  },
  {
    "path": "tests/two/tagger/_pennSample.js",
    "content": "// tag tests that should always pass\n//  combination of two datasets:\n// the free subset of the Penn-treebank\n// and part of the Universal Dependencies English Web Treebank v2.6 -- 2020-05-15\nexport default [\n  {\n    text: 'Dr. Talcott led a team of researchers from the National Cancer Institute and the medical schools of Harvard University and Boston University.',\n    tags: 'NNP, NNP, VBD, DT, NN, IN, NNS, IN, DT, NNP, NNP, NNP, CC, DT, JJ, NNS, IN, NNP, NNP, CC, NNP, NNP',\n  },\n  {\n    text: 'The monthly sales have been setting records every month since March.',\n    tags: 'DT, JJ, NNS, VBP, VBN, VBG, NNS, DT, NN, IN, NNP',\n  },\n  {\n    text: ' Cray Computer will be a concept stock, he said.',\n    tags: 'NNP, NNP, MD, VB, DT, NN, NN, PRP, VBD',\n  },\n  {\n    text: 'Esso said the Whiting field started production Tuesday.',\n    tags: 'NNP, VBD, DT, NNP, NN, VBD, NN, NNP',\n  },\n  {\n    text: 'Pick a country, any country.',\n    tags: 'VB, DT, NN, DT, NN',\n  },\n  {\n    text: 'They fell into oblivion after the 1929 crash.',\n    tags: 'PRP, VBD, IN, NN, IN, DT, CD, NN',\n  },\n  {\n    text: 'Political and currency gyrations can whipsaw the funds.',\n    tags: 'JJ, CC, NN, NNS, MD, VB, DT, NNS',\n  },\n  {\n    text: 'They cite a lack of imbalances that provide early warning signals of a downturn.',\n    tags: 'PRP, VBP, DT, NN, IN, NNS, CC, VBP, JJ, NN, NNS, IN, DT, NN',\n  },\n  // {\n  //   text: 'Characters drink Salty Dogs, whistle Johnny B. Goode and watch Bugs Bunny reruns.',\n  //   tags: 'NNS, VBP, NNP, NNP, VBP, NNP, NNP, NNP, CC, VBP, NNP, NNP, NNS',\n  // },\n  {\n    text: 'They read Mickey Spillane and talk about Groucho and Harpo.',\n    tags: 'PRP, VBP, NNP, NNP, CC, VBP, IN, NNP, CC, NNP',\n  },\n  {\n    text: ' Consider Jim Courter.',\n    tags: 'VB, NNP, NNP',\n  },\n  {\n    text: 'But it resists yielding political ground.',\n    tags: 'CC, PRP, VBZ, VBG, JJ, NN',\n  },\n  {\n    text: ' In Asia, as in Europe, a new order is taking shape, Mr. Baker said.',\n    tags: 'IN, NNP, IN, IN, NNP, DT, JJ, NN, VBZ, VBG, NN, NNP, NNP, VBD',\n  },\n  {\n    text: 'And South Carolina says it is getting results.',\n    tags: 'CC, NNP, NNP, VBZ, PRP, VBZ, VBG, NNS',\n  },\n  // {\n  //   text: \" It was full of violence and gangs and kids cutting class, says Linda Ward, the school's principal.\",\n  //   tags: 'PRP, VBD, JJ, IN, NN, CC, NNS, CC, NNS, VBG, NN, VBZ, NNP, NNP, DT, NN, NN',\n  // },\n  {\n    text: 'I believe in the system.',\n    tags: 'PRP, VBP, IN, DT, NN',\n  },\n  {\n    text: 'Mrs. Yeargin declined.',\n    tags: 'NNP, NNP, VBD',\n  },\n  {\n    text: 'Yeargin won widespread local support.',\n    tags: 'NNP, VBD, JJ, JJ, NN',\n  },\n  {\n    text: 'But Learning Materials matched on 66.5 of 69 subskills.',\n    tags: 'CC, NNP, NNPS, VBD, IN, CD, IN, CD, NNS',\n  },\n  {\n    text: 'The two banks merged in 1985.',\n    tags: 'DT, CD, NNS, VBD, IN, CD',\n  },\n  {\n    text: \"He said the company's core business remains strong.\",\n    tags: 'PRP, VBD, DT, NN, NN, NN, VBZ, JJ',\n  },\n  {\n    text: 'Estimated volume was a moderate 3.5 million ounces.',\n    tags: 'VBN, NN, VBD, DT, JJ, CD, CD, NNS',\n  },\n  {\n    text: 'Mr. Gillespie at Viacom says the ratings are rising.',\n    tags: 'NNP, NNP, IN, NNP, VBZ, DT, NNS, VBP, VBG',\n  },\n  {\n    text: 'Ad Notes....',\n    tags: 'NNP, NNPS',\n  },\n  {\n    text: 'The business had been handled by VanSant Dugdale, Baltimore.',\n    tags: 'DT, NN, VBD, VBN, VBN, IN, NNP, NNP, NNP',\n  },\n  {\n    text: ' The economy is clearly slowing, says Robert Black, president of the Richmond Federal Reserve Bank.',\n    tags: 'DT, NN, VBZ, RB, VBG, VBZ, NNP, NNP, NN, IN, DT, NNP, NNP, NNP, NNP',\n  },\n  {\n    text: 'They will mature Dec. 21.',\n    tags: 'PRP, MD, VB, NNP, CD',\n  },\n  {\n    text: 'Lancaster Colony Corp. said it acquired Reames Foods Inc. in a cash transaction.',\n    tags: 'NNP, NNP, NNP, VBD, PRP, VBD, NNP, NNP, NNP, IN, DT, NN, NN',\n  },\n  {\n    text: 'NL is officially making the offer.',\n    tags: 'NNP, VBZ, RB, VBG, DT, NN',\n  },\n  {\n    text: \"The Japanese fret openly about the U.S. public's rancor.\",\n    tags: 'DT, NNP, NN, RB, IN, DT, NNP, NN, NN',\n  },\n  {\n    text: 'But many banks are turning away from strict price competition.',\n    tags: 'CC, JJ, NNS, VBP, VBG, RB, IN, JJ, NN, NN',\n  },\n  {\n    text: 'One big reason: thin margins.',\n    tags: 'CD, JJ, NN, JJ, NNS',\n  },\n  {\n    text: 'Buy a new Chevrolet.',\n    tags: 'VB, DT, JJ, NNP',\n  },\n  {\n    text: 'Buy a diamond necklace.',\n    tags: 'VB, DT, NN, NN',\n  },\n  {\n    text: 'In fact, the market has always tanked.',\n    tags: 'IN, NN, DT, NN, VBZ, RB, VBN',\n  },\n  {\n    text: 'Always.',\n    tags: 'RB',\n  },\n  {\n    text: 'China pulled out of the program in July.',\n    tags: 'NNP, VBD, VB, IN, DT, NN, IN, NNP',\n  },\n  {\n    text: 'But regulators are wary.',\n    tags: 'CC, NNS, VBP, JJ',\n  },\n  {\n    text: 'He also is a consensus manager, insiders say.',\n    tags: 'PRP, RB, VBZ, DT, NN, NN, NNS, VBP',\n  },\n  {\n    text: 'Compromises are possible.',\n    tags: 'NNS, VBP, JJ',\n  },\n  {\n    text: 'The company acknowledges some problems.',\n    tags: 'DT, NN, VBZ, DT, NNS',\n  },\n  {\n    text: 'A number of cities including Minneapolis, Philadelphia and Houston have vacant grain elevators, Eggers says.',\n    tags: 'DT, NN, IN, NNS, VBG, NNP, NNP, CC, NNP, VBP, JJ, NN, NNS, NNP, VBZ',\n  },\n  {\n    text: 'They suffered from malnutrition, chest diseases, cardiovascular disorders, skin problems, infectious diseases and the aftereffects of assaults and rape.',\n    tags: 'PRP, VBD, IN, NN, NN, NNS, JJ, NNS, NN, NNS, JJ, NNS, CC, DT, NNS, IN, NNS, CC, NN',\n  },\n  {\n    text: 'That was the law.',\n    tags: 'DT, VBD, DT, NN',\n  },\n  {\n    text: 'It was censorship.',\n    tags: 'PRP, VBD, NN',\n  },\n  {\n    text: 'It was outrageous.',\n    tags: 'PRP, VBD, JJ',\n  },\n  {\n    text: 'But the court disagreed.',\n    tags: 'CC, DT, NN, VBD',\n  },\n  {\n    text: 'The man was Charles Z. Wick.',\n    tags: 'DT, NN, VBD, NNP, NNP, NNP',\n  },\n  {\n    text: ' Bob has handled the extraordinary growth of the company quite brilliantly, said Mr. Newhouse.',\n    tags: 'NNP, VBZ, VBN, DT, JJ, NN, IN, DT, NN, RB, RB, VBD, NNP, NNP',\n  },\n  {\n    text: 'President Reagan learned that lesson.',\n    tags: 'NNP, NNP, VBD, DT, NN',\n  },\n  {\n    text: 'Mr. Sidak served as an attorney in the Reagan administration.',\n    tags: 'NNP, NNP, VBD, IN, DT, NN, IN, DT, NNP, NN',\n  },\n  {\n    text: 'The death of the Herald, a newsstand paper in a freeway town, was perhaps inevitable.',\n    tags: 'DT, NN, IN, DT, NNP, DT, NN, NN, IN, DT, NN, NN, VBD, RB, JJ',\n  },\n  {\n    text: ' The Herald was a survivor from a bygone age, said J. Kendrick Noble, a media analyst with PaineWebber Inc.',\n    tags: 'DT, NNP, VBD, DT, NN, IN, DT, JJ, NN, VBD, NNP, NNP, NNP, DT, NNS, NN, IN, NNP, NNP',\n  },\n  {\n    text: 'The reaction in the newsroom was emotional.',\n    tags: 'DT, NN, IN, DT, NN, VBD, JJ',\n  },\n  {\n    text: 'The program traders, on the other hand, portray old-fashioned stock pickers as the Neanderthals of the industry.',\n    tags: 'DT, NN, NNS, IN, DT, JJ, NN, VBP, JJ, JJ, NN, NNS, IN, DT, NNS, IN, DT, NN',\n  },\n  {\n    text: 'Reducing volatility.',\n    tags: 'VBG, NN',\n  },\n  {\n    text: 'Ballot watchers say attention already is focused on the 1990 elections.',\n    tags: 'NN, NNS, VBP, NN, RB, VBZ, VBN, IN, DT, CD, NNS',\n  },\n  {\n    text: 'Colleges, she says, are eyeing registration through 900 service.',\n    tags: 'NNS, PRP, VBZ, VBP, VBG, NN, IN, CD, NN',\n  },\n  {\n    text: 'FAMILY PETS are improving recovery rates of patients at Columbia Hospital, Milwaukee.',\n    tags: 'NN, NNS, VBP, VBG, NN, NNS, IN, NNS, IN, NNP, NNP, NNP',\n  },\n  {\n    text: 'The appointment takes effect Nov. 13.',\n    tags: 'DT, NN, VBZ, NN, NNP, CD',\n  },\n  {\n    text: 'Heiwado Co.',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Guaranteed by Svenska Handelsbanken.',\n    tags: 'VBN, IN, NNP, NNP',\n  },\n  {\n    text: 'Mitsubishi Pencil Co.',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Koizumi Sangyo Corp.',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'A stadium craze is sweeping the country.',\n    tags: 'DT, NN, NN, VBZ, VBG, DT, NN',\n  },\n  // {\n  //   text: 'Stock prices closed higher in Stockholm, Amsterdam and Frankfurt and lower in Zurich.',\n  //   tags: 'NN, NNS, VBD, JJR, IN, NNP, NNP, CC, NNP, CC, JJR, IN, NNP',\n  // },\n  {\n    text: 'A faster version, the SuperDot, was launched in 1984.',\n    tags: 'DT, JJR, NN, DT, NNP, VBD, VBN, IN, CD',\n  },\n\n  {\n    text: 'Columbia has only about 10 million common shares in public hands.',\n    tags: 'NNP, VBZ, RB, IN, CD, CD, JJ, NNS, IN, JJ, NNS',\n  },\n  {\n    text: 'But the concept is workable.',\n    tags: 'CC, DT, NN, VBZ, JJ',\n  },\n  {\n    text: \"Mr. Spiegel's next career move is a subject of speculation on Wall Street.\",\n    tags: 'NNP, NNP, JJ, NN, NN, VBZ, DT, NN, IN, NN, IN, NNP, NNP',\n  },\n  {\n    text: 'Wedtech management used the merit system.',\n    tags: 'NNP, NN, VBD, DT, NN, NN',\n  },\n  {\n    text: 'Numerous other scandals, among them the ones at HUD, have the same characteristics as Wedtech.',\n    tags: 'JJ, JJ, NNS, IN, PRP, DT, NNS, IN, NNP, VBP, DT, JJ, NNS, IN, NNP',\n  },\n  {\n    text: 'Railroad companies and some ports are reaping a sudden windfall of business.',\n    tags: 'NN, NNS, CC, DT, NNS, VBP, VBG, DT, JJ, NN, IN, NN',\n  },\n  {\n    text: ' The recent rally in precious metals was a result of uncertainty and volatility in equities, he said.',\n    tags: 'DT, JJ, NN, IN, JJ, NNS, VBD, DT, NN, IN, NN, CC, NN, IN, NNS, PRP, VBD',\n  },\n  {\n    text: 'The cells were operating in the Ghazaliyah and al-Jihad districts of the capital.',\n    tags: 'DT, NNS, VBD, VBG, IN, DT, NNP, CC, NNP, NNP, NNS, IN, DT, NN',\n  },\n  {\n    text: 'Al-Zaman: Guerrillas killed a member of the Kurdistan Democratic Party after kidnapping him in Mosul.',\n    tags: 'NNP, NNP, NNS, VBD, DT, NN, IN, DT, NNP, NNP, NNP, IN, VBG, PRP, IN, NNP',\n  },\n  {\n    text: 'Guerrillas killed an engineer, Asi Ali, from Tikrit.',\n    tags: 'NNS, VBD, DT, NN, NNP, NNP, IN, NNP',\n  },\n  {\n    text: \"They also killed Shaikh Hamid 'Akkab, a clan elder of a branch of the Dulaim tribe in Tikrit.\",\n    tags: 'PRP, RB, VBD, NNP, NNP, NNP, DT, NN, NN, IN, DT, NN, IN, DT, NNP, NN, IN, NNP',\n  },\n\n  {\n    text: 'One of them was from the Jubur tribe and was deputy commander of the Hawijah garrison.',\n    tags: 'CD, IN, PRP, VBD, IN, DT, NNP, NN, CC, VBD, NN, NN, IN, DT, NNP, NN',\n  },\n  {\n    text: 'There are a wealth of references on Chernobyl.',\n    tags: 'EX, VBP, DT, NN, IN, NNS, IN, NNP',\n  },\n  {\n    text: 'IAEA Report Lessons learned',\n    tags: 'NNP, NN, NNPS, VBN',\n  },\n  {\n    text: 'That too was stopped.',\n    tags: 'DT, RB, VBD, VBN',\n  },\n  {\n    text: 'It should continue to be defanged.',\n    tags: 'PRP, MD, VB, TO, VB, VBN',\n  },\n  {\n    text: 'George W. Bush alleged Thursday that John Edwards lacks the experience necessary to be president.',\n    tags: 'NNP, NNP, NNP, VBD, NNP, IN, NNP, NNP, VBZ, DT, NN, JJ, TO, VB, NNP',\n  },\n  {\n    text: 'November 5, 1999',\n    tags: 'NNP, CD, CD',\n  },\n  {\n    text: 'WASHINGTON (CNN) --',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Hiller asked Bush to name the leaders of Chechnya, Taiwan, India and Pakistan.',\n    tags: 'NNP, VBD, NNP, TO, VB, DT, NNS, IN, NNP, NNP, NNP, CC, NNP',\n  },\n  {\n    text: 'By Juan Cole',\n    tags: 'IN, NNP, NNP',\n  },\n  {\n    text: 'Friday, June 04, 2004',\n    tags: 'NNP, NNP, CD, CD',\n  },\n  {\n    text: 'By Ranjit Devraj',\n    tags: 'IN, NNP, NNP',\n  },\n  {\n    text: 'NEW DELHI -',\n    tags: 'NNP, NNP',\n  },\n  // {\n  //   text: 'But they, too, failed.',\n  //   tags: 'CC, PRP, RB, VBD',\n  // },\n  {\n    text: 'Colombo, too, seems to be in an intractable position.',\n    tags: 'NNP, RB, VBZ, TO, VB, IN, DT, JJ, NN',\n  },\n  {\n    text: 'Musharraf calls the bluff',\n    tags: 'NNP, VBZ, DT, NN',\n  },\n  {\n    text: 'M.D. Nalapat',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'The F-102 saw service in the Vietnam theater between March 1962 and December 1969.',\n    tags: 'DT, NNP, VBD, NN, IN, DT, NNP, NN, IN, NNP, CD, CC, NNP, CD',\n  },\n  {\n    text: 'During this time, F-102 squadrons were based out of Tan Son Nhut, Da Nang and Bien Hoa in Vietnam, and Udorn and Don Muang in Thailand.',\n    tags: 'IN, DT, NN, NNP, NNS, VBD, VBN, IN, IN, NNP, NNP, NNP, NNP, NNP, CC, NNP, NNP, IN, NNP, CC, NNP, CC, NNP, NNP, IN, NNP',\n  },\n  {\n    text: 'Six weeks of basic training.',\n    tags: 'CD, NNS, IN, JJ, NN',\n  },\n  {\n    text: 'Two years.',\n    tags: 'CD, NNS',\n  },\n  {\n    text: 'Did you know that?',\n    tags: 'VBD, PRP, VB, DT',\n  },\n  {\n    text: 'That’s fine.',\n    tags: 'DT, VBZ, JJ',\n  },\n  {\n    text: 'Many voting centres have already been successfully attacked or destroyed in many areas.',\n    tags: 'JJ, NN, NNS, VBP, RB, VBN, RB, VBN, CC, VBN, IN, JJ, NNS',\n  },\n  {\n    text: 'Fistfights, please.',\n    tags: 'NNS, UH',\n  },\n  {\n    text: \"Al-Gu'ud had favoured elections and was in good terms with the government.\",\n    tags: 'NNP, NNP, VBD, VBN, NNS, CC, VBD, IN, JJ, NNS, IN, DT, NN',\n  },\n  {\n    text: 'The revolt took two weeks to be suppressed by the Republican Guard.',\n    tags: 'DT, NN, VBD, CD, NNS, TO, VB, VBN, IN, DT, NNP, NNP',\n  },\n  {\n    text: 'Remember Luis Posada Carriles?',\n    tags: 'VB, NNP, NNP, NNP',\n  },\n  {\n    text: '(Ask Terry Nichols about the Philippines.)',\n    tags: 'VB, NNP, NNP, IN, DT, NNPS',\n  },\n  {\n    text: 'But will Posada be given up?',\n    tags: 'CC, MD, NNP, VB, VBN, RP',\n  },\n  {\n    text: 'You really got me thinking, I enjoy reading this blog.',\n    tags: 'PRP, RB, VBD, PRP, VBG, PRP, VBP, VBG, DT, NN',\n  },\n  {\n    text: 'This is a excellent blog.',\n    tags: 'DT, VBZ, DT, JJ, NN',\n  },\n  {\n    text: 'Keep it going.',\n    tags: 'VB, PRP, VBG',\n  },\n  {\n    text: 'I agree totally!',\n    tags: 'PRP, VBP, RB',\n  },\n  {\n    text: 'Ramtanu Maitra',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Deteriorating security',\n    tags: 'VBG, NN',\n  },\n  {\n    text: 'The presence of the Sea Tigers in the area with guns, cash and drugs makes the situation extremely dangerous.',\n    tags: 'DT, NN, IN, DT, NNP, NNPS, IN, DT, NN, IN, NNS, NN, CC, NNS, VBZ, DT, NN, RB, JJ',\n  },\n  {\n    text: 'Intelligence lapses',\n    tags: 'NN, NNS',\n  },\n  {\n    text: 'Steady buildup',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Karzai, Musharraf new regional equations',\n    tags: 'NNP, NNP, JJ, JJ, NNS',\n  },\n  {\n    text: 'That too may change.',\n    tags: 'DT, RB, MD, VB',\n  },\n  {\n    text: 'Many Taliban living in Afghanistan voted for President Karzai.',\n    tags: 'JJ, NNPS, VBG, IN, NNP, VBD, IN, NNP, NNP',\n  },\n  {\n    text: 'For decades.',\n    tags: 'IN, NNS',\n  },\n  {\n    text: 'Bush has a sadistic streak.',\n    tags: 'NNP, VBZ, DT, JJ, NN',\n  },\n  {\n    text: 'He clearly enjoyed, as governor, watching executions.',\n    tags: 'PRP, RB, VBD, IN, NN, VBG, NNS',\n  },\n  {\n    text: 'He would wear khaki trousers and some old jacket.',\n    tags: 'PRP, MD, VB, NN, NNS, CC, DT, JJ, NN',\n  },\n  {\n    text: 'But he just melded with everybody.',\n    tags: 'CC, PRP, RB, VBD, IN, NN',\n  },\n  {\n    text: 'He dated a beautiful young woman working on the campaign.',\n    tags: 'PRP, VBD, DT, JJ, JJ, NN, VBG, IN, DT, NN',\n  },\n  {\n    text: 'Mr. ARCHIBALD: People have different ways of starting the days in any office.',\n    tags: 'NNP, NNP, NNS, VBP, JJ, NNS, IN, VBG, DT, NNS, IN, DT, NN',\n  },\n  {\n    text: 'I thought it unusual and, frankly, inappropriate.',\n    tags: 'PRP, VBD, PRP, JJ, CC, RB, JJ',\n  },\n  {\n    text: 'And he would always laugh about that.\"',\n    tags: 'CC, PRP, MD, RB, VB, IN, DT',\n  },\n  {\n    text: 'But the four planeloads of arms have vanished.',\n    tags: 'CC, DT, CD, NNS, IN, NNS, VBP, VBN',\n  },\n  {\n    text: '...',\n    tags: 'NFP',\n  },\n  {\n    text: 'Police and prosecutors have the tools.',\n    tags: 'NNS, CC, NNS, VBP, DT, NNS',\n  },\n  {\n    text: 'Some do, individually.',\n    tags: 'DT, VBP, RB',\n  },\n  {\n    text: 'But institutionally?',\n    tags: 'CC, RB',\n  },\n  {\n    text: 'CRACKDOWN ON POLYGAMY GROUP',\n    tags: 'NN, IN, NN, NN',\n  },\n  {\n    text: '...',\n    tags: 'NFP',\n  },\n  {\n    text: '...',\n    tags: 'NFP',\n  },\n  {\n    text: '...',\n    tags: 'NFP',\n  },\n  {\n    text: 'The Raw Story',\n    tags: 'DT, NNP, NNP',\n  },\n  {\n    text: 'Also look up the kingston family.',\n    tags: 'RB, VB, RP, DT, NNP, NN',\n  },\n  {\n    text: \"It's a good thing too.\",\n    tags: 'PRP, VBZ, DT, JJ, NN, RB',\n  },\n  {\n    text: 'As the leaders like to boast, the Mujahedeen is a family affair.',\n    tags: 'IN, DT, NNS, VBP, TO, VB, DT, NNP, VBZ, DT, NN, NN',\n  },\n  {\n    text: 'Umm...',\n    tags: 'UH',\n  },\n  {\n    text: 'Bush successfully makes Satan look good in comparison.',\n    tags: 'NNP, RB, VBZ, NNP, VB, JJ, IN, NN',\n  },\n  {\n    text: \"Okay, it's partly about strippers and dope.\",\n    tags: 'UH, PRP, VBZ, RB, IN, NNS, CC, NN',\n  },\n  {\n    text: 'Hmmmmmm ....................',\n    tags: 'UH',\n  },\n  {\n    text: 'The wikipedia entry for Aerocom is just a stub .. waiting for someone to put some information into it ....',\n    tags: 'DT, NNP, NN, IN, NNP, VBZ, RB, DT, NN, VBG, IN, NN, TO, VB, DT, NN, IN, PRP',\n  },\n  {\n    text: \"That's it.\",\n    tags: 'DT, VBZ, PRP',\n  },\n  {\n    text: '- Simone Weil',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Michele Tollis',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'They\\'re inseparable,\" he says.',\n    tags: 'PRP, VBP, JJ, PRP, VBZ',\n  },\n  {\n    text: 'They are doing it deliberately.',\n    tags: 'PRP, VBP, VBG, PRP, RB',\n  },\n  {\n    text: 'Is the distinction accurate and valid?',\n    tags: 'VBZ, DT, NN, JJ, CC, JJ',\n  },\n  {\n    text: 'Does the distinction actually exist?',\n    tags: 'VBZ, DT, NN, RB, VB',\n  },\n  {\n    text: 'John Balance from Coil.',\n    tags: 'NNP, NNP, IN, NNP',\n  },\n  {\n    text: '5 kg per gun, 200,000 guns means 1000 tonnes, impossible for 4 containers.',\n    tags: 'CD, NNS, IN, NN, CD, NNS, VBZ, CD, NNS, JJ, IN, CD, NNS',\n  },\n  {\n    text: 'I was amazed at the spiel they delivered.',\n    tags: 'PRP, VBD, VBN, IN, DT, NN, PRP, VBD',\n  },\n  {\n    text: 'It would have been too painful to watch.',\n    tags: 'PRP, MD, VB, VBN, RB, JJ, TO, VB',\n  },\n  {\n    text: 'very creepy, very scary',\n    tags: 'RB, JJ, RB, JJ',\n  },\n  {\n    text: 'by exmearden',\n    tags: 'IN, NNP',\n  },\n  {\n    text: 'Or was it supposed to initially be a process of alchemical appropriation?',\n    tags: 'CC, VBD, PRP, VBN, TO, RB, VB, DT, NN, IN, JJ, NN',\n  },\n  {\n    text: 'True believers are dangerous animals.',\n    tags: 'JJ, NNS, VBP, JJ, NNS',\n  },\n  {\n    text: 'Peace.',\n    tags: 'NN',\n  },\n  // {\n  //   text: \"It's a long but very worthwhile read.\",\n  //   tags: 'PRP, VBZ, DT, JJ, CC, RB, JJ, NN',\n  // },\n  {\n    text: '\"A View from the Eye of the Storm\"',\n    tags: 'DT, NNP, IN, DT, NNP, IN, DT, NNP',\n  },\n  {\n    text: 'The frequent reports from Algeria about the murders of hundreds of civilians in one village or another by other Algerians have nothing to do with Israel.',\n    tags: 'DT, JJ, NNS, IN, NNP, IN, DT, NNS, IN, NNS, IN, NNS, IN, CD, NN, CC, DT, IN, JJ, NNPS, VBP, NN, TO, VB, IN, NNP',\n  },\n  {\n    text: 'It is a very potent psychological weapon.',\n    tags: 'PRP, VBZ, DT, RB, JJ, JJ, NN',\n  },\n  {\n    text: 'It creates headlines.',\n    tags: 'PRP, VBZ, NNS',\n  },\n  {\n    text: 'It is spectacular.',\n    tags: 'PRP, VBZ, JJ',\n  },\n  {\n    text: 'And it is a war!',\n    tags: 'CC, PRP, VBZ, DT, NN',\n  },\n  {\n    text: 'It has nothing to do with true fanatic religious beliefs.',\n    tags: 'PRP, VBZ, NN, TO, VB, IN, JJ, JJ, JJ, NNS',\n  },\n  {\n    text: 'There are numerous desperate people in the world, in different cultures, countries and continents.',\n    tags: 'EX, VBP, JJ, JJ, NNS, IN, DT, NN, IN, JJ, NNS, NNS, CC, NNS',\n  },\n  {\n    text: 'Russia is beginning to understand it.',\n    tags: 'NNP, VBZ, VBG, TO, VB, PRP',\n  },\n  {\n    text: 'Words can be lethal.',\n    tags: 'NNS, MD, VB, JJ',\n  },\n  {\n    text: 'They kill people.',\n    tags: 'PRP, VBP, NNS',\n  },\n  {\n    text: 'They provide an emotional infrastructure for atrocities.',\n    tags: 'PRP, VBP, DT, JJ, NN, IN, NNS',\n  },\n  {\n    text: 'Some parts of this same outer circle actually operate as a result of fear from, or blackmail by, the inner circles.',\n    tags: 'DT, NNS, IN, DT, JJ, JJ, NN, RB, VBP, IN, DT, NN, IN, NN, IN, CC, NN, IN, DT, JJ, NNS',\n  },\n  {\n    text: 'Should there be death penalty, for deliberate multiple murders?',\n    tags: 'MD, EX, VB, NN, NN, IN, JJ, JJ, NNS',\n  },\n  {\n    text: 'These are the old-fashioned dilemmas.',\n    tags: 'DT, VBP, DT, JJ, JJ, NNS',\n  },\n  {\n    text: 'It is trying to play ice hockey by sending a ballerina ice-skater into the ring or to knock out a heavyweight boxer by a chess player.',\n    tags: 'PRP, VBZ, VBG, TO, VB, NN, NN, IN, VBG, DT, NN, NN, NN, IN, DT, NN, CC, TO, VB, RP, DT, NN, NN, IN, DT, NN, NN',\n  },\n  {\n    text: 'In the short run, only fight and win.',\n    tags: 'IN, DT, JJ, NN, RB, VB, CC, VB',\n  },\n  {\n    text: 'Syria is surrounded by Turkey, Iraq, Jordan and Israel.',\n    tags: 'NNP, VBZ, VBN, IN, NNP, NNP, NNP, CC, NNP',\n  },\n  {\n    text: 'Zawahiri was associated with a faction of the Egyptian Islamic Jihad known as the Vanguards of Conquest.',\n    tags: 'NNP, VBD, VBN, IN, DT, NN, IN, DT, NNP, NNP, NNP, VBN, IN, DT, NNPS, IN, NNP',\n  },\n  {\n    text: 'Al Qaeda, Anthrax and Ayman: Means, Motive, Modus Operandi and Opportunity',\n    tags: 'NNP, NNP, NNP, CC, NNP, NNS, NN, NN, NN, CC, NN',\n  },\n  {\n    text: 'Homeland Security',\n    tags: 'NN, NN',\n  },\n  {\n    text: 'He had been captured the previous month in Rawalpindi, Pakistan.',\n    tags: 'PRP, VBD, VBN, VBN, DT, JJ, NN, IN, NNP, NNP',\n  },\n  // {\n  //   text: 'Photographs from a computer disc included the controls and the locks on the door between the passengers and pilot.',\n  //   tags: 'NNS, IN, DT, NN, NN, VBD, DT, NNS, CC, DT, NNS, IN, DT, NN, IN, DT, NNS, CC, NN',\n  // },\n  {\n    text: 'This is old news.',\n    tags: 'DT, VBZ, JJ, NN',\n  },\n  {\n    text: 'In the case of the anthrax used in the mailings, there was an electrostatic charge.',\n    tags: 'IN, DT, NN, IN, DT, NN, VBN, IN, DT, NNS, EX, VBD, DT, JJ, NN',\n  },\n  {\n    text: 'Understandably, Amerithrax is a confidential investigation.',\n    tags: 'RB, NNP, VBZ, DT, JJ, NN',\n  },\n  {\n    text: 'They would know.',\n    tags: 'PRP, MD, VB',\n  },\n  {\n    text: 'He reportedly treated them like sons.',\n    tags: 'PRP, RB, VBD, PRP, IN, NNS',\n  },\n  {\n    text: 'Philippines',\n    tags: 'NNPS',\n  },\n  {\n    text: 'Brazil we have current data already',\n    tags: 'NNP, PRP, VBP, JJ, NN, RB',\n  },\n  {\n    text: 'China we have current data already',\n    tags: 'NNP, PRP, VBP, JJ, NN, RB',\n  },\n  {\n    text: 'Vince Kaminski',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Dear Vince',\n    tags: 'JJ, NNP',\n  },\n  {\n    text: 'Kind regards.',\n    tags: 'JJ, NNS',\n  },\n  {\n    text: 'Will you drive on that day?',\n    tags: 'MD, PRP, VB, IN, DT, NN',\n  },\n  {\n    text: 'Anne, Mike will call you regarding Sarah.',\n    tags: 'NNP, NNP, MD, VB, PRP, VBG, NNP',\n  },\n  {\n    text: 'Please advise.',\n    tags: 'UH, VB',\n  },\n  {\n    text: 'Good news.',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'This was (another) nice deal for Enron.',\n    tags: 'DT, VBD, DT, JJ, NN, IN, NNP',\n  },\n  {\n    text: \"I'm happy about this.\",\n    tags: 'PRP, VBP, JJ, IN, DT',\n  },\n  {\n    text: 'Appreciate the idea.',\n    tags: 'VBP, DT, NN',\n  },\n  {\n    text: 'oh god is there an agenda.',\n    tags: 'UH, NNP, VBZ, EX, DT, NN',\n  },\n  {\n    text: 'Would dinner Thursday work instead.',\n    tags: 'MD, NN, NNP, VB, RB',\n  },\n  {\n    text: 'oh god is there an agenda.',\n    tags: 'UH, NNP, VBZ, EX, DT, NN',\n  },\n  {\n    text: 'i completely agree.',\n    tags: 'PRP, RB, VBP',\n  },\n  {\n    text: 'i completely agree.',\n    tags: 'PRP, RB, VBP',\n  },\n  {\n    text: 'This is pretty easy math for me.',\n    tags: 'DT, VBZ, RB, JJ, NN, IN, PRP',\n  },\n  {\n    text: 'I am reviewing the request for an employment agreement renewal on Mark Dean Laurent.',\n    tags: 'PRP, VBP, VBG, DT, NN, IN, DT, NN, NN, NN, IN, NNP, NNP, NNP',\n  },\n  {\n    text: 'Job Group: Specialist',\n    tags: 'NN, NN, NN',\n  },\n  {\n    text: '1 Year Agreement',\n    tags: 'CD, NN, NN',\n  },\n  {\n    text: '1 Year agreement',\n    tags: 'CD, NN, NN',\n  },\n  {\n    text: 'Are we going to attend?',\n    tags: 'VBP, PRP, VBG, TO, VB',\n  },\n  {\n    text: 'Sonya City',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Please let me know Monday morning.',\n    tags: 'UH, VB, PRP, VB, NNP, NN',\n  },\n  {\n    text: '18T-EI Indonesia Operations LLC',\n    tags: 'NNP, NNP, NNPS, NNP',\n  },\n  {\n    text: 'Despite the name, this entity appears to be a MTM company.',\n    tags: 'IN, DT, NN, DT, NN, VBZ, TO, VB, DT, NNP, NN',\n  },\n  {\n    text: '80Y-Enron Broadband Acquisition, Inc.',\n    tags: 'NNP, NNP, NNP, NNP',\n  },\n  {\n    text: 'It should be 4 - easy.',\n    tags: 'PRP, MD, VB, CD, JJ',\n  },\n  {\n    text: 'Set up last month to centralize merchant asset activities.',\n    tags: 'VBN, RP, JJ, NN, TO, VB, NN, NN, NNS',\n  },\n  {\n    text: 'Broke out the activities of 1179.',\n    tags: 'VBD, RP, DT, NNS, IN, CD',\n  },\n  {\n    text: 'Set up last month to centralize merchant asset activities.',\n    tags: 'VBN, RP, JJ, NN, TO, VB, NN, NN, NNS',\n  },\n  {\n    text: 'Broke out the activities of 1307.',\n    tags: 'VBD, RP, DT, NNS, IN, CD',\n  },\n  {\n    text: 'Same as 1307.',\n    tags: 'JJ, IN, CD',\n  },\n  {\n    text: 'Please let me know Monday morning.',\n    tags: 'UH, VB, PRP, VB, NNP, NN',\n  },\n  {\n    text: 'Hello.',\n    tags: 'UH',\n  },\n  {\n    text: 'I found them and purchased both from a gallery in London, William Weston.',\n    tags: 'PRP, VBD, PRP, CC, VBD, DT, IN, DT, NN, IN, NNP, NNP, NNP',\n  },\n  {\n    text: 'They should be delivered this week.',\n    tags: 'PRP, MD, VB, VBN, DT, NN',\n  },\n  {\n    text: 'I have also purchased an Appel in the last month.',\n    tags: 'PRP, VBP, RB, VBN, DT, NNP, IN, DT, JJ, NN',\n  },\n  {\n    text: 'Is there 1 available?',\n    tags: 'VBZ, EX, CD, JJ',\n  },\n  {\n    text: 'Mark, I thought you would enjoy the comment about you.',\n    tags: 'NNP, PRP, VBD, PRP, MD, VB, DT, NN, IN, PRP',\n  },\n  {\n    text: 'We stayed at the Menger and had a great time.',\n    tags: 'PRP, VBD, IN, DT, NNP, CC, VBD, DT, JJ, NN',\n  },\n  {\n    text: \"I'm watching for some good vacation days, also ...\",\n    tags: 'PRP, VBP, VBG, IN, DT, JJ, NN, NNS, RB',\n  },\n  {\n    text: 'I see we expect to have separate contracts for each project.',\n    tags: 'PRP, VBP, PRP, VBP, TO, VB, JJ, NNS, IN, DT, NN',\n  },\n  {\n    text: 'I would actually send them the draft Development Agreement a couple days after the LOI.',\n    tags: 'PRP, MD, RB, VB, PRP, DT, NN, NN, NN, DT, NN, NNS, IN, DT, NN',\n  },\n  {\n    text: 'Remarkably clear explanation.',\n    tags: 'RB, JJ, NN',\n  },\n\n  {\n    text: 'That is some good stuff.',\n    tags: 'DT, VBZ, DT, JJ, NN',\n  },\n  {\n    text: 'Just a reminder to send me a currency report.',\n    tags: 'RB, DT, NN, TO, VB, PRP, DT, NN, NN',\n  },\n  {\n    text: 'He will be in Calgary in a couple of weeks and will interview you then.',\n    tags: 'PRP, MD, VB, IN, NNP, IN, DT, NN, IN, NNS, CC, MD, VB, PRP, RB',\n  },\n\n  {\n    text: 'Give him a call tommorow.',\n    tags: 'VB, PRP, DT, NN, NN',\n  },\n\n  {\n    text: 'The deed is done.',\n    tags: 'DT, NN, VBZ, JJ',\n  },\n\n  {\n    text: 'Sushi tonight?',\n    tags: 'NN, NN',\n  },\n\n  {\n    text: 'I will be able to attend.',\n    tags: 'PRP, MD, VB, JJ, TO, VB',\n  },\n\n  {\n    text: 'Mike Jordan',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Late Jan sounds great.',\n    tags: 'JJ, NNP, VBZ, JJ',\n  },\n  {\n    text: 'Does that work for you?',\n    tags: 'VBZ, DT, VB, IN, PRP',\n  },\n  {\n    text: 'And do you want to do it on a Saturday or Sunday?',\n    tags: 'CC, VBP, PRP, VB, TO, VB, PRP, IN, DT, NNP, CC, NNP',\n  },\n  {\n    text: 'Hi ...',\n    tags: 'UH',\n  },\n  {\n    text: 'She said a shower would be grand.',\n    tags: 'PRP, VBD, DT, NN, MD, VB, JJ',\n  },\n  {\n    text: 'Am I turning into Mother?',\n    tags: 'VBP, PRP, VBG, IN, NN',\n  },\n  {\n    text: 'Jeff Dasovich',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Sent by: Jeff Dasovich',\n    tags: 'VBN, IN, NNP, NNP',\n  },\n  {\n    text: 'Jeff Dasovich',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Sent by: Jeff Dasovich',\n    tags: 'VBN, IN, NNP, NNP',\n  },\n  {\n    text: 'Steven J Kean',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Courtney Votaw',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Mark and Steve -',\n    tags: 'NNP, CC, NNP',\n  },\n  {\n    text: 'As you can see from the Design Document, they are pretty significant.',\n    tags: 'IN, PRP, MD, VB, IN, DT, NN, NN, PRP, VBP, RB, JJ',\n  },\n  {\n    text: 'calendar',\n    tags: 'NN',\n  },\n  {\n    text: 'Pin #: 411507',\n    tags: 'NN, NN, CD',\n  },\n  {\n    text: 'Pin # for Paul Kaufman ONLY: 362416',\n    tags: 'NN, NN, IN, NNP, NNP, RB, CD',\n  },\n  {\n    text: 'Thank you.',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: 'Sorry about the flooding.',\n    tags: 'JJ, IN, DT, NN',\n  },\n  {\n    text: 'Have a great day.',\n    tags: 'VB, DT, JJ, NN',\n  },\n  {\n    text: 'Sorry about the flooding.',\n    tags: 'JJ, IN, DT, NN',\n  },\n  {\n    text: 'Have a great day.',\n    tags: 'VB, DT, JJ, NN',\n  },\n  {\n    text: 'Nancy, can you please reconfirm with Mark the price for the gas at Bondad?',\n    tags: 'NNP, MD, PRP, UH, VB, IN, NNP, DT, NN, IN, DT, NN, IN, NN',\n  },\n  {\n    text: 'Sorry about the flooding.',\n    tags: 'JJ, IN, DT, NN',\n  },\n  {\n    text: 'Have a great day.',\n    tags: 'VB, DT, JJ, NN',\n  },\n  {\n    text: 'See attached spreadsheet.',\n    tags: 'VB, VBN, NN',\n  },\n  {\n    text: 'cool by me!',\n    tags: 'JJ, IN, PRP',\n  },\n  {\n    text: 'Did she make it?',\n    tags: 'VBD, PRP, VB, PRP',\n  },\n  {\n    text: \"And I bet she's on the phone with Shemin too !!!\",\n    tags: 'CC, PRP, VBP, PRP, VBZ, IN, DT, NN, IN, NNP, RB',\n  },\n  {\n    text: 'Steve, everything looks good with one exception.',\n    tags: 'NNP, NN, VBZ, JJ, IN, CD, NN',\n  },\n  {\n    text: 'A heartwarming story of the advances of women in achieving equality throughout the world.',\n    tags: 'DT, JJ, NN, IN, DT, NNS, IN, NNS, IN, VBG, NN, IN, DT, NN',\n  },\n  {\n    text: 'Maybe we can go drinking too.',\n    tags: 'RB, PRP, MD, VB, VBG, RB',\n  },\n  {\n    text: 'That would be fun.',\n    tags: 'DT, MD, VB, JJ',\n  },\n  {\n    text: 'I CAN HANDLE THE TRACTOR.',\n    tags: 'PRP, MD, VB, DT, NN',\n  },\n  {\n    text: 'Funny.',\n    tags: 'JJ',\n  },\n  {\n    text: 'Vince Kaminski',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'The eThink Team',\n    tags: 'DT, NNP, NN',\n  },\n  {\n    text: 'The response was tremendous and, in some cases, very creative.',\n    tags: 'DT, NN, VBD, JJ, CC, IN, DT, NNS, RB, JJ',\n  },\n  {\n    text: 'Confirmed.',\n    tags: 'VBN',\n  },\n  {\n    text: 'That would be particularly convenient for me.',\n    tags: 'DT, MD, VB, RB, JJ, IN, PRP',\n  },\n  {\n    text: 'Dale Nesbitt',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Vince sold!',\n    tags: 'NNP, VBD',\n  },\n  {\n    text: \"I'll initiate the call.\",\n    tags: 'PRP, MD, VB, DT, NN',\n  },\n  {\n    text: 'Thursday works for me.',\n    tags: 'NNP, VBZ, IN, PRP',\n  },\n  {\n    text: 'A correction.',\n    tags: 'DT, NN',\n  },\n  {\n    text: 'Can we do on another day',\n    tags: 'MD, PRP, VB, IN, DT, NN',\n  },\n  {\n    text: 'Talk about a shotgun marriage!',\n    tags: 'VB, IN, DT, NN, NN',\n  },\n  {\n    text: 'I shall be available on both days.',\n    tags: 'PRP, MD, VB, JJ, IN, DT, NNS',\n  },\n  {\n    text: 'It will be nice to see you again.',\n    tags: 'PRP, MD, VB, JJ, TO, VB, PRP, RB',\n  },\n  {\n    text: 'Sara Shackleton',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Susan Bailey',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Susan S. Bailey',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Sara Shackleton',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Please advise.',\n    tags: 'UH, VB',\n  },\n  {\n    text: 'Sara Shackleton',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Sara Shackleton',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Sara Shackleton',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Sara Shackleton',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Sara Shackleton',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'They showed some kids on TV, and they were quite taken with it.',\n    tags: 'PRP, VBD, DT, NNS, IN, NN, CC, PRP, VBD, RB, VBN, IN, PRP',\n  },\n  {\n    text: 'Thank You',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: 'Kay Mann',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Is that ok with you?',\n    tags: 'VBZ, DT, JJ, IN, PRP',\n  },\n  {\n    text: 'the passcode: 6871082#',\n    tags: 'DT, NN, CD',\n  },\n  {\n    text: 'the subject: Turbine 1 and Turbine 2 Purchase Agreement',\n    tags: 'DT, NN, NN, CD, CC, NN, CD, NN, NN',\n  },\n  {\n    text: 'Lorie Leigh',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Kay Mann',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Kay Mann',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: '- redvepco.doc',\n    tags: 'NN',\n  },\n  {\n    text: '- SAMPLE.DOC',\n    tags: 'NN',\n  },\n  {\n    text: 'the passcode: 6871082#',\n    tags: 'DT, NN, CD',\n  },\n  {\n    text: 'the subject: Turbine 1 and Turbine 2 Purchase Agreement',\n    tags: 'DT, NN, NN, CD, CC, NN, CD, NN, NN',\n  },\n  {\n    text: 'Lorie Leigh 46093',\n    tags: 'NNP, NNP, CD',\n  },\n  {\n    text: 'Kay Mann',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'These are always difficult times.',\n    tags: 'DT, VBP, RB, JJ, NNS',\n  },\n  {\n    text: 'He is joining an excellent company.',\n    tags: 'PRP, VBZ, VBG, DT, JJ, NN',\n  },\n  {\n    text: 'I hope you have a great summer.',\n    tags: 'PRP, VBP, PRP, VBP, DT, JJ, NN',\n  },\n  {\n    text: 'Hi -',\n    tags: 'UH',\n  },\n  {\n    text: 'Jeff Garten',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Good morning, Kitty -',\n    tags: 'JJ, NN, NNP',\n  },\n  {\n    text: 'Rosalee Fleming',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'June 14 Reception',\n    tags: 'NNP, CD, NN',\n  },\n  {\n    text: 'Kent Grusendorf',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Thank you.',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: 'Hi Mr. Katsof -',\n    tags: 'UH, NNP, NNP',\n  },\n  {\n    text: 'Sorry.',\n    tags: 'JJ',\n  },\n  {\n    text: 'It is very clean and is Sandalwood, Driftwood or something of that nature in color.',\n    tags: 'PRP, VBZ, RB, JJ, CC, VBZ, NN, NN, CC, NN, IN, DT, NN, IN, NN',\n  },\n  {\n    text: 'Just jealous.',\n    tags: 'RB, JJ',\n  },\n  {\n    text: 'I think she just wants to be able to touch football players legs.',\n    tags: 'PRP, VBP, PRP, RB, VBZ, TO, VB, JJ, TO, VB, NN, NNS, NNS',\n  },\n  {\n    text: 'Bro',\n    tags: 'NN',\n  },\n  {\n    text: 'W. Don Germany, Jr. 2301 N Brazosport Blvd B 3611, Investment Recovery Freeport, Texas 77541 Pager 1 800 451 0491 (0448) Office 979 238 2102 Home 979 548 7034',\n    tags: 'NNP, NNP, NNP, NNP, CD, NNP, NNP, NNP, NNP, CD, NN, NN, NNP, NNP, CD, NN, CD, CD, CD, CD, CD, NN, CD, CD, CD, NN, CD, CD, CD',\n  },\n  {\n    text: 'I need 2 things from you.',\n    tags: 'PRP, VBP, CD, NNS, IN, PRP',\n  },\n  {\n    text: 'Hey Ernie.',\n    tags: 'UH, NNP',\n  },\n  {\n    text: 'Can you help out?',\n    tags: 'MD, PRP, VB, RP',\n  },\n  {\n    text: 'Ernie Simien',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Sent by: Ernie Simien',\n    tags: 'VBN, IN, NNP, NNP',\n  },\n  {\n    text: 'I need prices for May, June, and July.',\n    tags: 'PRP, VBP, NNS, IN, NNP, NNP, CC, NNP',\n  },\n  {\n    text: 'Jan 9.95 Feb 6.25 Mar 4.98 April 5.37',\n    tags: 'NNP, CD, NNP, CD, NNP, CD, NNP, CD',\n  },\n  {\n    text: 'Please do me a favour and give me the subject price for Jan, Feb, Mar and Apr 2001.',\n    tags: 'UH, VB, PRP, DT, NN, CC, VB, PRP, DT, NN, NN, IN, NNP, NNP, NNP, CC, NNP, CD',\n  },\n  {\n    text: 'Gregg Penman',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Kay Mann',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Hello -',\n    tags: 'UH',\n  },\n  {\n    text: 'Gregg Penman',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Kay Mann',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Kay Mann',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Hello -',\n    tags: 'UH',\n  },\n  {\n    text: 'Gregg Penman',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Does that work?',\n    tags: 'VBZ, DT, VB',\n  },\n  {\n    text: 'Are you coming for Xmas?',\n    tags: 'VBP, PRP, VBG, IN, NNP',\n  },\n  {\n    text: 'Adnan Patel',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Richard Sage',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: \"Denis O'Connell\",\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Things in Houston are good and definitely warm.',\n    tags: 'NNS, IN, NNP, VBP, JJ, CC, RB, JJ',\n  },\n  {\n    text: 'Are you really?',\n    tags: 'VBP, PRP, RB',\n  },\n\n  {\n    text: \"She's a very fun girl.\",\n    tags: 'PRP, VBZ, DT, RB, JJ, NN',\n  },\n  {\n    text: 'Ted Noble',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Smart girl.',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Ted Noble',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: '- Mary Little',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Bob Bowen',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Bobby is one of those with major injuries .?',\n    tags: 'NNP, VBZ, CD, IN, DT, IN, JJ, NNS',\n  },\n  {\n    text: 'He is currently in the emergency room at Ben Taub Hospital .?',\n    tags: 'PRP, VBZ, RB, IN, DT, NN, NN, IN, NNP, NNP, NNP',\n  },\n\n  {\n    text: 'Thank you',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: 'Leonardo Pacheco',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Mark E Haedicke',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: '9 work days',\n    tags: 'CD, NN, NNS',\n  },\n  {\n    text: 'Enclosed is a worksheet for Ineos Acrylics.',\n    tags: 'VBN, VBZ, DT, NN, IN, NNP, NNPS',\n  },\n  {\n    text: 'Please find attached the Enron Master Agreement.',\n    tags: 'UH, VB, VBN, DT, NNP, NN, NN',\n  },\n  {\n    text: 'I have inserted the company details of Uecomm as requested.',\n    tags: 'PRP, VBP, VBN, DT, NN, NNS, IN, NNP, IN, VBN',\n  },\n  {\n    text: 'Marie x33907',\n    tags: 'NNP, NN',\n  },\n  {\n    text: 'Benjamin James-at 12.45 pm-3 lbs 4 ozs',\n    tags: 'NNP, NNP, IN, CD, NN, CD, NNS, CD, NNS',\n  },\n  {\n    text: 'Toby William-12.46 pm-4 lbs',\n    tags: 'NNP, NNP, CD, NN, CD, NNS',\n  },\n  {\n    text: 'Hannah May-12.48 pm-3 lbs 15 ozs.',\n    tags: 'NNP, NNP, CD, NN, CD, NNS, CD, NNS',\n  },\n  {\n    text: 'OOPS!',\n    tags: 'UH',\n  },\n  {\n    text: 'I have attempted to revise them to make them clearer.',\n    tags: 'PRP, VBP, VBN, TO, VB, PRP, TO, VB, PRP, JJR',\n  },\n  {\n    text: 'Marie x33907',\n    tags: 'NNP, NN',\n  },\n  {\n    text: 'Patty Snyder',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Hi Marie',\n    tags: 'UH, NNP',\n  },\n  {\n    text: 'Marie x33907',\n    tags: 'NNP, NN',\n  },\n  {\n    text: 'The post id I am looking at for Calgary is 11608.',\n    tags: 'DT, NN, NN, PRP, VBP, VBG, IN, IN, NNP, VBZ, CD',\n  },\n  {\n    text: 'The post id I am looking at for Calgary is 11608.',\n    tags: 'DT, NN, NN, PRP, VBP, VBG, IN, IN, NNP, VBZ, CD',\n  },\n  {\n    text: \"I've booked Videoconference Room # 1.\",\n    tags: 'PRP, VBP, VBN, NN, NN, NN, CD',\n  },\n  {\n    text: 'should be ok',\n    tags: 'MD, VB, JJ',\n  },\n  {\n    text: 'NO',\n    tags: 'UH',\n  },\n  {\n    text: 'IEP will be hosting a dinner for California Governor Gray Davis on Thursday, December 7, 2000 at the historic Julia Morgan House in Sacramento.',\n    tags: 'NNP, MD, VB, VBG, DT, NN, IN, NNP, NNP, NNP, NNP, IN, NNP, NNP, CD, CD, IN, DT, JJ, NNP, NNP, NNP, IN, NNP',\n  },\n  {\n    text: 'We have already received firm commitments from 3 companies.',\n    tags: 'PRP, VBP, RB, VBN, JJ, NNS, IN, CD, NNS',\n  },\n  {\n    text: \"I'll be in Portland but can call you.\",\n    tags: 'PRP, MD, VB, IN, NNP, CC, MD, VB, PRP',\n  },\n  {\n    text: 'We await approval on the final tariff language and can then file at the CPUC.',\n    tags: 'PRP, VBP, NN, IN, DT, JJ, NN, NN, CC, MD, RB, VB, IN, DT, NNP',\n  },\n  {\n    text: 'Angie Buis',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'The duration of the call is 3.5 hours.',\n    tags: 'DT, NN, IN, DT, NN, VBZ, CD, NNS',\n  },\n  // {\n  //   text: 'You have all devoted considerable time, resources and spirit in the preparation of this document-and it shows .?',\n  //   tags: 'PRP, VBP, RB, VBN, JJ, NN, NNS, CC, NN, IN, DT, NN, IN, DT, NN, CC, PRP, VBZ',\n  // },\n  {\n    text: '- ld2d-#69366-1.DOC',\n    tags: 'NN',\n  },\n  {\n    text: '- ld2d-#69345-1.DOC',\n    tags: 'NN',\n  },\n  {\n    text: '- ld2d-#69397-1.DOC',\n    tags: 'NN',\n  },\n  {\n    text: '- ld2d-#69396-1.DOC',\n    tags: 'NN',\n  },\n  {\n    text: '- ld2d-#69377-1.XLS',\n    tags: 'NN',\n  },\n  {\n    text: '- ld2d-#69381-1.DOC',\n    tags: 'NN',\n  },\n  {\n    text: '- ld2d-#69366-1.DOC',\n    tags: 'NN',\n  },\n  {\n    text: '- ld2d-#69336-1.XLS',\n    tags: 'NN',\n  },\n  {\n    text: '- ld2d-#69334-1.DOC',\n    tags: 'NN',\n  },\n  {\n    text: '- ld2d-#69345-1.DOC',\n    tags: 'NN',\n  },\n  {\n    text: 'David Forster',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Dear Justin',\n    tags: 'JJ, NNP',\n  },\n  {\n    text: 'Jonathan Day',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Paul Goddard',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Can one of you give me a quick call to discuss.',\n    tags: 'MD, CD, IN, PRP, VB, PRP, DT, JJ, NN, TO, VB',\n  },\n  {\n    text: \"I'm @ X37047.\",\n    tags: 'PRP, VBP, IN, NN',\n  },\n  {\n    text: 'David Forster',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'This message is confidential.',\n    tags: 'DT, NN, VBZ, JJ',\n  },\n  {\n    text: 'Sent by: Nella Cappelletto',\n    tags: 'VBN, IN, NNP, NNP',\n  },\n  {\n    text: 'Molly Harris',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Perhaps you can give them a personal invitation ...',\n    tags: 'RB, PRP, MD, VB, PRP, DT, JJ, NN',\n  },\n  {\n    text: 'Wow!',\n    tags: 'UH',\n  },\n  {\n    text: 'Carol, will you handle this or Mark?',\n    tags: 'NNP, MD, PRP, VB, DT, CC, NNP',\n  },\n  {\n    text: 'Tori Kuykendall',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'hi mark -',\n    tags: 'UH, NNP',\n  },\n  {\n    text: '- ETA_revision0307.doc',\n    tags: 'NN',\n  },\n  {\n    text: 'Molly Harris',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Molly Harris',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Yeah!',\n    tags: 'UH',\n  },\n  {\n    text: 'Probably ...',\n    tags: 'RB',\n  },\n  {\n    text: 'Molly Harris',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Mike Jordan',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Mike Jordan',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Mike Jordan',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'I intend to provide weekly updates on the status of the above actions during April',\n    tags: 'PRP, VBP, TO, VB, JJ, NNS, IN, DT, NN, IN, DT, JJ, NNS, IN, NNP',\n  },\n  {\n    text: 'Ben Rogers',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Ben Rogers',\n    tags: 'NNP, NNP',\n  },\n  // {\n  //   text: 'It has been a pleasure to meet with you and I hope we can continue to talk about energy and finance in the future.',\n  //   tags: 'PRP, VBZ, VBN, DT, NN, TO, VB, IN, PRP, CC, PRP, VBP, PRP, MD, VB, TO, VB, IN, NN, CC, NN, IN, DT, NN',\n  // },\n  {\n    text: 'Ben Rogers',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Randy, this is the issue I left you the voice mail on.',\n    tags: 'NNP, DT, VBZ, DT, NN, PRP, VBD, PRP, DT, NN, NN, IN',\n  },\n  {\n    text: 'James Centilli',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Susan Scott',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Thank you!',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: 'DENISE LAGESSE',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Drew Fossum',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'DENISE LAGESSE',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Norma, any thoughts?',\n    tags: 'NNP, DT, NNS',\n  },\n  {\n    text: 'DENISE LAGESSE',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Please approve the purchase of two.',\n    tags: 'UH, VB, DT, NN, IN, CD',\n  },\n  {\n    text: 'Drew Fossum',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Norma, any thoughts?',\n    tags: 'NNP, DT, NNS',\n  },\n  {\n    text: 'DENISE LAGESSE',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Please approve the purchase of two.',\n    tags: 'UH, VB, DT, NN, IN, CD',\n  },\n  {\n    text: 'Am I scheduled to attend?',\n    tags: 'VBP, PRP, VBN, TO, VB',\n  },\n  {\n    text: 'Board members are also invited to join in the substantive session of the DISCO Forum on Thursday, September 13.',\n    tags: 'NN, NNS, VBP, RB, VBN, TO, VB, IN, DT, JJ, NN, IN, DT, NNP, NNP, IN, NNP, NNP, CD',\n  },\n  {\n    text: 'correct.',\n    tags: 'JJ',\n  },\n  {\n    text: 'We are receiving invoices from Ace Federal Reporters for transcripts of the recent FERC settlement conferences.',\n    tags: 'PRP, VBP, VBG, NNS, IN, NNP, NNP, NNPS, IN, NNS, IN, DT, JJ, NNP, NN, NNS',\n  },\n  {\n    text: 'Let me know.',\n    tags: 'VB, PRP, VB',\n  },\n  {\n    text: 'Many thanks.',\n    tags: 'JJ, NNS',\n  },\n\n  {\n    text: 'Grand-standing is ignored.',\n    tags: 'JJ, NN, VBZ, VBN',\n  },\n  {\n    text: 'Doug and I met with the Chairman of PUCT and have had subsequent conversations.',\n    tags: 'NNP, CC, PRP, VBD, IN, DT, NN, IN, NNP, CC, VBP, VBN, JJ, NNS',\n  },\n  {\n    text: 'Thane and I also visited with him.',\n    tags: 'NNP, CC, PRP, RB, VBD, IN, PRP',\n  },\n  {\n    text: 'We have been working with the State Affairs legislative committee and keeping them apprised.',\n    tags: 'PRP, VBP, VBN, VBG, IN, DT, NN, NNS, JJ, NN, CC, VBG, PRP, VBN',\n  },\n  {\n    text: 'Thane is in Austin on Friday, but is available by phone.',\n    tags: 'NNP, VBZ, IN, NNP, IN, NNP, CC, VBZ, JJ, IN, NN',\n  },\n  {\n    text: 'Can we find another time',\n    tags: 'MD, PRP, VB, DT, NN',\n  },\n  {\n    text: 'You may want to discuss with Becky.',\n    tags: 'PRP, MD, VB, TO, VB, IN, NNP',\n  },\n  {\n    text: 'Many details remain to be worked out, but we will keep you advised.',\n    tags: 'JJ, NNS, VBP, TO, VB, VBN, RP, CC, PRP, MD, VB, PRP, VBN',\n  },\n  {\n    text: 'Peter is looking currently for a job.',\n    tags: 'NNP, VBZ, VBG, RB, IN, DT, NN',\n  },\n  {\n    text: 'I met him last week at the meeting of the Science and Industry Advance with Mathematics society at the University of Houston.',\n    tags: 'PRP, VBD, PRP, JJ, NN, IN, DT, NN, IN, DT, NNP, CC, NNP, NNP, IN, NNPS, NN, IN, DT, NNP, IN, NNP',\n  },\n  {\n    text: 'I shall be glad to make arrangements for an interview.',\n    tags: 'PRP, MD, VB, JJ, TO, VB, NNS, IN, DT, NN',\n  },\n  {\n    text: 'Vince Kaminski',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: \"It's ok with me.\",\n    tags: 'PRP, VBZ, JJ, IN, PRP',\n  },\n  {\n    text: 'Nasim Khan',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Please see the message from Danny Jones.',\n    tags: 'UH, VB, DT, NN, IN, NNP, NNP',\n  },\n  {\n    text: 'This is ok by me.',\n    tags: 'DT, VBZ, JJ, IN, PRP',\n  },\n  {\n    text: 'Good news.',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Hello, Bill!',\n    tags: 'UH, NNP',\n  },\n  {\n    text: 'Stan will attend in person.',\n    tags: 'NNP, MD, VB, IN, NN',\n  },\n  {\n    text: 'By video conference from Jupiter',\n    tags: 'IN, NN, NN, IN, NFP',\n  },\n  {\n    text: 'Bill Dorsey.',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Thank you for the invitation.',\n    tags: 'VBP, PRP, IN, DT, NN',\n  },\n  {\n    text: 'Samuel Schott',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Any GCP adjustments will be highlighted in red.',\n    tags: 'DT, NN, NNS, MD, VB, VBN, IN, JJ',\n  },\n  {\n    text: \"There's a new EOL Counterparty listed in the UK.\",\n    tags: 'EX, VBZ, DT, JJ, NNP, NN, VBN, IN, DT, NNP',\n  },\n  {\n    text: 'Samuel x3-9890 ENW_GCP',\n    tags: 'NNP, NN, NNP',\n  },\n  {\n    text: 'Please see attached.',\n    tags: 'UH, VB, VBN',\n  },\n  {\n    text: 'are you the right lawyer to look at this?',\n    tags: 'VBP, PRP, DT, JJ, NN, TO, VB, IN, DT',\n  },\n  {\n    text: 'Robert B Cass',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'The Transaction is for hot rolled steel with a thickness of 1\" and a width of 72 inches.',\n    tags: 'DT, NN, VBZ, IN, JJ, VBN, NN, IN, DT, NN, IN, CD, CC, DT, NN, IN, CD, NNS',\n  },\n  {\n    text: 'Each calendar month during the term of the Transaction will be a Dispatch Period.',\n    tags: 'DT, NN, NN, IN, DT, NN, IN, DT, NN, MD, VB, DT, NN, NN',\n  },\n  // {\n  //   text: 'select PROGRAMS',\n  //   tags: 'VB, NNS',\n  // },\n  {\n    text: 'Bill D Hare',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Tana Jones',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Samuel Schott',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Samuel Schott',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Any GCP adjustments will be highlighted in red.',\n    tags: 'DT, NN, NNS, MD, VB, VBN, IN, JJ',\n  },\n  {\n    text: \"There's a new EOL Counterparty listed in the UK.\",\n    tags: 'EX, VBZ, DT, JJ, NNP, NN, VBN, IN, DT, NNP',\n  },\n  {\n    text: 'Samuel x3-9890 ENW_GCP',\n    tags: 'NNP, NN, NNP',\n  },\n  {\n    text: 'Please see attached.',\n    tags: 'UH, VB, VBN',\n  },\n  {\n    text: \"I'll be in town through Sunday morning.\",\n    tags: 'PRP, MD, VB, IN, NN, IN, NNP, NN',\n  },\n  {\n    text: 'I am in mediation.',\n    tags: 'PRP, VBP, IN, NN',\n  },\n  {\n    text: 'I got this.',\n    tags: 'PRP, VBD, DT',\n  },\n  {\n    text: '*~*~*~*~*~*~*~*~*~*',\n    tags: 'NFP',\n  },\n  {\n    text: 'Passcode: 4153030',\n    tags: 'NN, CD',\n  },\n  {\n    text: 'Tobias Munk',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Sunjay Arya',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Gary Buck',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Ryan Seleznov',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Mecole Brown',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: \"Tim O'Rourke\",\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Tana Cashion',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Sheila Walton',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Wendy Fincher',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Sheila Knudsen',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Karen Phillips',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Neil Davies',\n    tags: 'NNP, NNPS',\n  },\n  {\n    text: 'Noel Ryan',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Cindy Skinner',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Simone Scott Walker',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Shanna Funkhouser',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Shanna, I spoke with Per tonight about this.',\n    tags: 'NNP, PRP, VBD, IN, NNP, NN, IN, DT',\n  },\n  {\n    text: 'Thank you',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: 'Try this.',\n    tags: 'VB, DT',\n  },\n  {\n    text: 'bob k',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Two in one day.',\n    tags: 'CD, IN, CD, NN',\n  },\n  {\n    text: 'Could',\n    tags: 'MD',\n  },\n  {\n    text: 'please try to verify.',\n    tags: 'UH, VB, TO, VB',\n  },\n  {\n    text: 'Sara Shackleton',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Please advise.',\n    tags: 'UH, VB',\n  },\n  {\n    text: 'Thank you.',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: 'The call was cancelled.',\n    tags: 'DT, NN, VBD, VBN',\n  },\n  {\n    text: 'I am waiting to hear about a possible call Friday morning.',\n    tags: 'PRP, VBP, VBG, TO, VB, IN, DT, JJ, NN, NNP, NN',\n  },\n  {\n    text: 'The draft you received has been approved by Dan.',\n    tags: 'DT, NN, PRP, VBD, VBZ, VBN, VBN, IN, NNP',\n  },\n  {\n    text: 'Looks good.',\n    tags: 'VBZ, JJ',\n  },\n  {\n    text: 'Please advise.',\n    tags: 'UH, VB',\n  },\n  {\n    text: 'I will initiate the call.',\n    tags: 'PRP, MD, VB, DT, NN',\n  },\n  {\n    text: 'I am checking on London.',\n    tags: 'PRP, VBP, VBG, IN, NNP',\n  },\n  {\n    text: 'Janice Moore',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Becky will bring you the hard copy version.',\n    tags: 'NNP, MD, VB, PRP, DT, JJ, NN, NN',\n  },\n  {\n    text: \"I'll call you shortly.\",\n    tags: 'PRP, MD, VB, PRP, RB',\n  },\n  {\n    text: 'St. Petersburg?',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Amelia Island Plantation?',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: \"I've simply lost track!\",\n    tags: 'PRP, VBP, RB, VBN, NN',\n  },\n  {\n    text: 'Are you selling burgers up and down the east coast?',\n    tags: 'VBP, PRP, VBG, NNS, IN, CC, IN, DT, JJ, NN',\n  },\n  {\n    text: 'In a new franchise business?',\n    tags: 'IN, DT, JJ, NN, NN',\n  },\n  {\n    text: 'Robert Quick',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'tks',\n    tags: 'NN',\n  },\n  {\n    text: 'Sara Shackleton',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'I will be in Sao Paulo on Monday, September 20, 1999.',\n    tags: 'PRP, MD, VB, IN, NNP, NNP, IN, NNP, NNP, CD, CD',\n  },\n  {\n    text: 'Thank you.',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: 'Jeffrey Dasovich Director, Enron Corp',\n    tags: 'NNP, NNP, NN, NNP, NNP',\n  },\n  {\n    text: 'Code is 80435.',\n    tags: 'NN, VBZ, CD',\n  },\n  {\n    text: 'Jeff Dasovich',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Sent by: Jeff Dasovich',\n    tags: 'VBN, IN, NNP, NNP',\n  },\n  {\n    text: 'Code is 80435.',\n    tags: 'NN, VBZ, CD',\n  },\n  {\n    text: 'Nice job.',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Going to be a wild ride.',\n    tags: 'VBG, TO, VB, DT, JJ, NN',\n  },\n  {\n    text: \"That's a very good point.\",\n    tags: 'DT, VBZ, DT, RB, JJ, NN',\n  },\n  {\n    text: \"I'll make the change.\",\n    tags: 'PRP, MD, VB, DT, NN',\n  },\n  {\n    text: 'Harry Kingerski',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: \"You're right, Sue.\",\n    tags: 'PRP, VBP, JJ, NNP',\n  },\n  {\n    text: 'Shawna Johnson Recruiting Coordinator',\n    tags: 'NNP, NNP, NN, NN',\n  },\n  {\n    text: 'have you gotten a price?',\n    tags: 'VBP, PRP, VBN, DT, NN',\n  },\n  {\n    text: 'Doug Leach',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'please print',\n    tags: 'UH, VB',\n  },\n  {\n    text: 'David Hoog',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'please print',\n    tags: 'UH, VB',\n  },\n  {\n    text: 'I highlight the relevant skills in the summary.',\n    tags: 'PRP, VBD, DT, JJ, NNS, IN, DT, NN',\n  },\n  {\n    text: '- ENRONR~1.DOC',\n    tags: 'NN',\n  },\n  {\n    text: 'I stayed for the remainder of the lecture.',\n    tags: 'PRP, VBD, IN, DT, NN, IN, DT, NN',\n  },\n  {\n    text: 'Jana Giovannini',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Actually, Jen has volunteered for the afternoon session.',\n    tags: 'RB, NNP, VBZ, VBN, IN, DT, NN, NN',\n  },\n  {\n    text: 'Please let me know.',\n    tags: 'UH, VB, PRP, VB',\n  },\n  {\n    text: 'Jana Giovannini',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Great job, guys.',\n    tags: 'JJ, NN, NNS',\n  },\n  {\n    text: 'Eric Gonzales',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Great job gentlemen!',\n    tags: 'JJ, NN, NNS',\n  },\n  {\n    text: 'Finally completed tonight',\n    tags: 'RB, VBN, NN',\n  },\n  {\n    text: 'I would add setoff language.',\n    tags: 'PRP, MD, VB, NN, NN',\n  },\n  {\n    text: 'Carol St Clair',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Are you okay with that?',\n    tags: 'VBP, PRP, JJ, IN, DT',\n  },\n  {\n    text: 'Rhonda L Denton',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Rhonda L Denton',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Just let me know and I can send you a new attachment.',\n    tags: 'RB, VB, PRP, VB, CC, PRP, MD, VB, PRP, DT, JJ, NN',\n  },\n  {\n    text: 'Phyllis Lemell',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Rhonda L Denton',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Will fax.',\n    tags: 'MD, VB',\n  },\n  {\n    text: 'Rhonda L Denton',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Will fax.',\n    tags: 'MD, VB',\n  },\n  {\n    text: 'Rhonda L Denton',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Will fax.',\n    tags: 'MD, VB',\n  },\n  {\n    text: 'Are we ready to execute?',\n    tags: 'VBP, PRP, JJ, TO, VB',\n  },\n  {\n    text: 'Please call me.',\n    tags: 'UH, VB, PRP',\n  },\n  {\n    text: 'Were there any?',\n    tags: 'VBD, EX, DT',\n  },\n  {\n    text: 'Robert Guthrie with the tax department has worked with us to develop this language.',\n    tags: 'NNP, NNP, IN, DT, NN, NN, VBZ, VBN, IN, PRP, TO, VB, DT, NN',\n  },\n  {\n    text: 'We hope to execute this Agreement this week.',\n    tags: 'PRP, VBP, TO, VB, DT, NN, DT, NN',\n  },\n  {\n    text: 'It is a fairly standard, fully reimbursable connection with Questar.',\n    tags: 'PRP, VBZ, DT, RB, JJ, RB, JJ, NN, IN, NNP',\n  },\n  {\n    text: 'Robert Guthrie with the tax department has worked with us to develop this language.',\n    tags: 'NNP, NNP, IN, DT, NN, NN, VBZ, VBN, IN, PRP, TO, VB, DT, NN',\n  },\n  {\n    text: 'We hope to execute this Agreement this week.',\n    tags: 'PRP, VBP, TO, VB, DT, NN, DT, NN',\n  },\n  {\n    text: 'Can you and Tom join us?',\n    tags: 'MD, PRP, CC, NNP, VB, PRP',\n  },\n  {\n    text: 'John, sorry for the late response, but I think you can implement immediately.',\n    tags: 'NNP, JJ, IN, DT, JJ, NN, CC, PRP, VBP, PRP, MD, VB, RB',\n  },\n  {\n    text: 'I was aware.',\n    tags: 'PRP, VBD, JJ',\n  },\n  {\n    text: 'John Buchanan',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'John, sorry for the late response, but I think you can implement immediately.',\n    tags: 'NNP, JJ, IN, DT, JJ, NN, CC, PRP, VBP, PRP, MD, VB, RB',\n  },\n  {\n    text: 'Are you comfortable with the difference?',\n    tags: 'VBP, PRP, JJ, IN, DT, NN',\n  },\n  {\n    text: 'Any thoughts?',\n    tags: 'DT, NNS',\n  },\n  {\n    text: 'See you Sunday.',\n    tags: 'VBP, PRP, NNP',\n  },\n  {\n    text: 'These are the vendors of instrumentation required for the interconnect.',\n    tags: 'DT, VBP, DT, NNS, IN, NN, VBN, IN, DT, NN',\n  },\n  {\n    text: 'Great.',\n    tags: 'JJ',\n  },\n  {\n    text: \"I'll get you the announcement.\",\n    tags: 'PRP, MD, VB, PRP, DT, NN',\n  },\n  {\n    text: 'September 26, 2001',\n    tags: 'NNP, CD, CD',\n  },\n  {\n    text: 'By KIMBERLY KINDY',\n    tags: 'IN, NNP, NNP',\n  },\n  {\n    text: 'The Orange County Register',\n    tags: 'DT, NNP, NNP, NNP',\n  },\n  {\n    text: 'Smutney-Jones also said he was unaware of anyone in the power-generating community',\n    tags: 'NNP, NNP, RB, VBD, PRP, VBD, JJ, IN, NN, IN, DT, NN, NN, NN',\n  },\n  {\n    text: 'James J. Hoecker, the former Federal Energy Regulatory Commission chairman, defended making the December decision and also defended Winter.',\n    tags: 'NNP, NNP, NNP, DT, JJ, NNP, NNP, NNP, NNP, NN, VBD, VBG, DT, NNP, NN, CC, RB, VBD, NNP',\n  },\n  {\n    text: 'Sue and Jeff --',\n    tags: 'NNP, CC, NNP',\n  },\n  {\n    text: 'Sounds good.',\n    tags: 'VBZ, JJ',\n  },\n  {\n    text: 'Are you playing golf?',\n    tags: 'VBP, PRP, VBG, NN',\n  },\n  {\n    text: 'Have they expressed any interest in negotiating?',\n    tags: 'VBP, PRP, VBN, DT, NN, IN, VBG',\n  },\n  {\n    text: 'Particularly in the absence of any entreaty from them.',\n    tags: 'RB, IN, DT, NN, IN, DT, NN, IN, PRP',\n  },\n  {\n    text: 'none',\n    tags: 'NN',\n  },\n  {\n    text: 'HR-Veronica Parra, Nedre Strambler, Fran Mayes, Felicia Solis',\n    tags: 'NN, NNP, NNP, NNP, NNP, NNP, NNP, NNP, NNP',\n  },\n  {\n    text: 'Legal-Bob Carter, Travis McCullough, Lisa Mellencamp, Shelia Tweed, Richard Sanders, Michelle Cash',\n    tags: 'JJ, NNP, NNP, NNP, NNP, NNP, NNP, NNP, NNP, NNP, NNP, NNP, NNP',\n  },\n  {\n    text: 'IT-Jason Chumley',\n    tags: 'NN, NNP, NNP',\n  },\n  {\n    text: 'Insurance-David Marshall',\n    tags: 'NN, NNP, NNP',\n  },\n  {\n    text: 'Looks good',\n    tags: 'VBZ, JJ',\n  },\n  {\n    text: 'Steve Van Hooser',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: \"I've read the materials you sent and agree we need to address these allegations appropriately.\",\n    tags: 'PRP, VBP, VBN, DT, NNS, PRP, VBD, CC, VBP, PRP, VBP, TO, VB, DT, NNS, RB',\n  },\n  {\n    text: 'This message is confidential.',\n    tags: 'DT, NN, VBZ, JJ',\n  },\n  {\n    text: '- C.DTF',\n    tags: 'NN',\n  },\n  {\n    text: 'Call me to discuss.',\n    tags: 'VB, PRP, TO, VB',\n  },\n  {\n    text: 'Cheryl Marshall',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Richard B Sanders',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'Call me to discuss.',\n    tags: 'VB, PRP, TO, VB',\n  },\n  {\n    text: 'Cheryl Marshall',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Has Liz finished with gathering the documents?',\n    tags: 'VBZ, NNP, VBN, IN, VBG, DT, NNS',\n  },\n  {\n    text: 'Hi --',\n    tags: 'UH',\n  },\n  {\n    text: 'Thank you.',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: 'Dear Mr. Sanders -',\n    tags: 'JJ, NNP, NNP',\n  },\n  {\n    text: '-> Gerry',\n    tags: 'NFP, NNP',\n  },\n  {\n    text: 'the industry of Marriage and Kids, you heard me.',\n    tags: 'DT, NN, IN, NN, CC, NNS, PRP, VBD, PRP',\n  },\n  {\n    text: 'And you might think by reading this I blame the kids .....',\n    tags: 'CC, PRP, MD, VB, IN, VBG, DT, PRP, VBP, DT, NNS',\n  },\n  {\n    text: 'Probably it is.',\n    tags: 'RB, PRP, VBZ',\n  },\n  {\n    text: 'It must be stamped out.',\n    tags: 'PRP, MD, VB, VBN, RP',\n  },\n  {\n    text: 'I hope so.',\n    tags: 'PRP, VBP, RB',\n  },\n  {\n    text: 'NASA has some PR hurdles to overcome in the future.',\n    tags: 'NNP, VBZ, DT, NN, NNS, TO, VB, IN, DT, NN',\n  },\n  {\n    text: 'I see the merit in flowing with duality.',\n    tags: 'PRP, VBP, DT, NN, IN, VBG, IN, NN',\n  },\n  {\n    text: 'In the near future collective choices will need to be made.',\n    tags: 'IN, DT, JJ, NN, JJ, NNS, MD, VB, TO, VB, VBN',\n  },\n  {\n    text: 'November 2005',\n    tags: 'NNP, CD',\n  },\n  {\n    text: 'Sunshine Coast, British Columbia, Canada',\n    tags: 'NNP, NNP, NNP, NNP, NNP',\n  },\n  {\n    text: 'Independent wealth?',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'The company has developed an entirely new category of products.',\n    tags: 'DT, NN, VBZ, VBN, DT, RB, JJ, NN, IN, NNS',\n  },\n  {\n    text: 'Innovative Products',\n    tags: 'JJ, NNS',\n  },\n  {\n    text: 'Agel introduces an entirely new category of products called Gelceuticals.',\n    tags: 'NNP, VBZ, DT, RB, JJ, NN, IN, NNS, VBN, NNS',\n  },\n  {\n    text: 'The company has developed a unique and innovative delivery mechanism for nutritional products.',\n    tags: 'DT, NN, VBZ, VBN, DT, JJ, CC, JJ, NN, NN, IN, JJ, NNS',\n  },\n  {\n    text: 'This proprietary Gel Suspension technology makes possible single serving packets of Gelceuticals.',\n    tags: 'DT, JJ, NN, NN, NN, VBZ, JJ, JJ, NN, NNS, IN, NNS',\n  },\n  // {\n  //   text: 'Perfect for those with difficulty swallowing tablets or capsules',\n  //   tags: 'JJ, IN, DT, IN, NN, VBG, NNS, CC, NNS',\n  // },\n  {\n    text: 'Agel has created a new compensation structure.',\n    tags: 'NNP, VBZ, VBN, DT, JJ, NN, NN',\n  },\n\n  {\n    text: 'The Passcode to participate is: 5107',\n    tags: 'DT, NN, TO, VB, VBZ, CD',\n  },\n  {\n    text: 'I encourage you to do this dance, as it has tremendous positive effects.',\n    tags: 'PRP, VBP, PRP, TO, VB, DT, NN, IN, PRP, VBZ, JJ, JJ, NNS',\n  },\n  {\n    text: 'Kaoshikii is especially good for women.',\n    tags: 'NN, VBZ, RB, JJ, IN, NNS',\n  },\n  {\n    text: 'The Benefits',\n    tags: 'DT, NNS',\n  },\n  {\n    text: 'Increases longevity.',\n    tags: 'VBZ, NN',\n  },\n  {\n    text: 'Makes for easy delivery at childbirth.',\n    tags: 'VBZ, IN, JJ, NN, IN, NN',\n  },\n  {\n    text: 'The spine will become flexible.',\n    tags: 'DT, NN, MD, VB, JJ',\n  },\n  {\n    text: 'The mind becomes strong and sharp.',\n    tags: 'DT, NN, VBZ, JJ, CC, JJ',\n  },\n  {\n    text: 'Irregularities in menstruation will be cured.',\n    tags: 'NNS, IN, NN, MD, VB, VBN',\n  },\n  {\n    text: 'Troubles in the bladder and urethra will be cured.',\n    tags: 'NNS, IN, DT, NN, CC, NN, MD, VB, VBN',\n  },\n  {\n    text: 'Removes wrinkles.',\n    tags: 'VBZ, NNS',\n  },\n  {\n    text: 'Hopelessness will be lost.',\n    tags: 'NN, MD, VB, VBN',\n  },\n  {\n    text: 'The Dance',\n    tags: 'DT, NN',\n  },\n  {\n    text: 'The Ideation',\n    tags: 'DT, NN',\n  },\n  {\n    text: 'Important information of big companies',\n    tags: 'JJ, NN, IN, JJ, NNS',\n  },\n  {\n    text: 'Apple Computers',\n    tags: 'NNP, NNPS',\n  },\n  // {\n  //   text: 'It was the favorite fruit of founder Steve Jobs.',\n  //   tags: 'PRP, VBD, DT, JJ, NN, IN, NN, NNP, NNP',\n  // },\n  {\n    text: 'It is short for San Francisco.',\n    tags: 'PRP, VBZ, JJ, IN, NNP, NNP',\n  },\n  {\n    text: 'This name was formed by using COMp, for computer, and PAQ to denote a small integral object.',\n    tags: 'DT, NN, VBD, VBN, IN, VBG, NN, IN, NN, CC, NN, TO, VB, DT, JJ, JJ, NN',\n  },\n  {\n    text: 'It stands for COwpland REsearch Laboratory.',\n    tags: 'PRP, VBZ, IN, NNP, NNP, NNP',\n  },\n  {\n    text: 'The name started as a joke boasting about the amount of information the search-engine would be able to search.',\n    tags: 'DT, NN, VBD, IN, DT, NN, VBG, IN, DT, NN, IN, NN, DT, NN, NN, MD, VB, JJ, TO, VB',\n  },\n  {\n    text: 'Hewlett Packard',\n    tags: 'NNP, NNP',\n  },\n\n  {\n    text: 'The popular radio company at the time was called Victrola.',\n    tags: 'DT, JJ, NN, NN, IN, DT, NN, VBD, VBN, NNP',\n  },\n  {\n    text: 'The project was designed to help use the newly written SQL code by IBM.',\n    tags: 'DT, NN, VBD, VBN, TO, VB, VB, DT, RB, VBN, NN, NN, IN, NNP',\n  },\n  {\n    text: 'They kept the name Oracle and created the RDBMS engine.',\n    tags: 'PRP, VBD, DT, NN, NNP, CC, VBD, DT, NNP, NN',\n  },\n  {\n    text: 'Founded by 4 Stanford University buddies, SUN is the acronym for Stanford University Network.',\n    tags: 'VBN, IN, CD, NNP, NNP, NNS, NNP, VBZ, DT, NN, IN, NNP, NNP, NNP',\n  },\n  {\n    text: 'I am on Yahoo!',\n    tags: 'PRP, VBP, IN, NNP',\n  },\n  {\n    text: 'Good Day Mate!',\n    tags: 'JJ, NN, NN',\n  },\n  {\n    text: 'Feb 2005',\n    tags: 'NNP, CD',\n  },\n  {\n    text: 'rumor has feb 05 on the calender.',\n    tags: 'NN, VBZ, NNP, CD, IN, DT, NN',\n  },\n  {\n    text: 'The game is already 100 % functional.',\n    tags: 'DT, NN, VBZ, RB, CD, NN, JJ',\n  },\n  {\n    text: 'I am Lady Kingel and I hail from the United Legit Gaming Guilds of Guild Wars.',\n    tags: 'PRP, VBP, NNP, NNP, CC, PRP, VBP, IN, DT, NNP, NNP, NNP, NNPS, IN, NNP, NNPS',\n  },\n  {\n    text: 'You will be greeted by many members of this wonderful family.',\n    tags: 'PRP, MD, VB, VBN, IN, JJ, NNS, IN, DT, JJ, NN',\n  },\n  {\n    text: 'Come and say hello... you will be warmly welcomed!',\n    tags: 'VB, CC, VB, UH, PRP, MD, VB, RB, VBN',\n  },\n  {\n    text: 'We are the children of poverty, financial and spiritual.',\n    tags: 'PRP, VBP, DT, NNS, IN, NN, JJ, CC, JJ',\n  },\n  {\n    text: 'Please tell me there is a deeper reason.',\n    tags: 'UH, VB, PRP, EX, VBZ, DT, JJR, NN',\n  },\n  {\n    text: 'Are you ready?',\n    tags: 'VBP, PRP, JJ',\n  },\n  // {\n  //   text: 'Ideas are welcome.',\n  //   tags: 'NNS, VBP, JJ',\n  // },\n  {\n    text: 'I am GEORGE WALKER BUSH, son of the former president of the United States of America George Herbert Walker Bush, and currently serving as President of the United States of America.',\n    tags: 'PRP, VBP, NNP, NNP, NNP, NN, IN, DT, JJ, NNP, IN, DT, NNP, NNP, NN, NNP, NNP, NNP, NNP, NNP, CC, RB, VBG, IN, NNP, IN, DT, NNP, NNP, NN, NNP',\n  },\n  {\n    text: 'Watch the airlift',\n    tags: 'VB, DT, NN',\n  },\n  {\n    text: 'The Superdome stadium is without power, and toilets are overflowing.',\n    tags: 'DT, NNP, NN, VBZ, IN, NN, CC, NNS, VBP, VBG',\n  },\n  {\n    text: 'Map of central New Orleans',\n    tags: 'NN, IN, JJ, NNP, NNP',\n  },\n  {\n    text: 'Natalie McVeigh Oakley, England',\n    tags: 'NNP, NNP, NNP, NNP',\n  },\n  {\n    text: 'Blogging Katrina',\n    tags: 'VBG, NNP',\n  },\n  {\n    text: 'Q: NASA IS A WASTE!',\n    tags: 'NN, NNP, VBZ, DT, NN',\n  },\n  {\n    text: 'U.S. Senate Committee on Appropriations',\n    tags: 'NNP, NNP, NNP, IN, NNPS',\n  },\n  {\n    text: 'September 21, 2004',\n    tags: 'NNP, CD, CD',\n  },\n  {\n    text: 'I hope you have found this information helpful.',\n    tags: 'PRP, VBP, PRP, VBP, VBN, DT, NN, JJ',\n  },\n  {\n    text: 'nasa funding',\n    tags: 'NNP, NN',\n  },\n  {\n    text: 'Excellent answer googlenut.',\n    tags: 'JJ, NN, NNP',\n  },\n  {\n    text: 'Let me add some additional info.',\n    tags: 'VB, PRP, VB, DT, JJ, NN',\n  },\n  {\n    text: 'Also NASA has a large outreach program for education, some people believe this is important.',\n    tags: 'RB, NNP, VBZ, DT, JJ, NN, NN, IN, NN, DT, NNS, VBP, DT, VBZ, JJ',\n  },\n  {\n    text: 'i find that extremely hard to believe.',\n    tags: 'PRP, VBP, DT, RB, JJ, TO, VB',\n  },\n  {\n    text: 'Please take a moment to read this.',\n    tags: 'UH, VB, DT, NN, TO, VB, DT',\n  },\n  {\n    text: 'I will attach the letter explaining the benefit we are sponsoring.',\n    tags: 'PRP, MD, VB, DT, NN, VBG, DT, NN, PRP, VBP, VBG',\n  },\n  {\n    text: 'It is certainly for a good cause.',\n    tags: 'PRP, VBZ, RB, IN, DT, JJ, NN',\n  },\n  {\n    text: 'I hope you have a huge network.',\n    tags: 'PRP, VBP, PRP, VBP, DT, JJ, NN',\n  },\n  {\n    text: 'Donations can also be made through Charter One Bank.',\n    tags: 'NNS, MD, RB, VB, VBN, IN, NNP, NNP, NNP',\n  },\n  {\n    text: 'By Richard Spencer',\n    tags: 'IN, NNP, NNP',\n  },\n  {\n    text: 'Imagine the tension melting away as you continue breathing rhythmically and naturally.',\n    tags: 'VB, DT, NN, VBG, RB, IN, PRP, VBP, VBG, RB, CC, RB',\n  },\n  {\n    text: 'It surrounds you.',\n    tags: 'PRP, VBZ, PRP',\n  },\n  {\n    text: 'Everything around you is so vast.',\n    tags: 'NN, IN, PRP, VBZ, RB, JJ',\n  },\n  {\n    text: 'Yet, there is warmth and a familiarity with the vastness.',\n    tags: 'CC, EX, VBZ, NN, CC, DT, NN, IN, DT, NN',\n  },\n  {\n    text: 'Imagine yourself sitting on the beach serenely and restfully.',\n    tags: 'VB, PRP, VBG, IN, DT, NN, RB, CC, RB',\n  },\n  {\n    text: 'You are in a state of peace and relaxation.',\n    tags: 'PRP, VBP, IN, DT, NN, IN, NN, CC, NN',\n  },\n  {\n    text: 'Another thing you can try.',\n    tags: 'DT, NN, PRP, MD, VB',\n  },\n  {\n    text: 'This is called ideation.',\n    tags: 'DT, VBZ, VBN, NN',\n  },\n  {\n    text: 'The main thing is to keep practicing.',\n    tags: 'DT, JJ, NN, VBZ, TO, VB, VBG',\n  },\n  {\n    text: 'NORTH CAROLINA RELIGIOUS COALITION FOR MARRIAGE EQUALITY',\n    tags: 'NNP, NNP, JJ, NNP, IN, NNP, NNP',\n  },\n  {\n    text: 'Furthermore, the Vestry voted unanimously to invite the support of members of the CHS congregation for the Declaration.',\n    tags: 'RB, DT, NNP, VBD, RB, TO, VB, DT, NN, IN, NNS, IN, DT, NNP, NN, IN, DT, NN',\n  },\n  {\n    text: 'He has a very high intellect.',\n    tags: 'PRP, VBZ, DT, RB, JJ, NN',\n  },\n  {\n    text: 'He has encyclopedic knowledge of hundreds of different Supreme Court cases, and he can recite details from memory.',\n    tags: 'PRP, VBZ, JJ, NN, IN, NNS, IN, JJ, NNP, NNP, NNS, CC, PRP, MD, VB, NNS, IN, NN',\n  },\n  {\n    text: 'President Bush loves him.',\n    tags: 'NNP, NNP, VBZ, PRP',\n  },\n  {\n    text: '###',\n    tags: 'NFP',\n  },\n  {\n    text: 'Reply',\n    tags: 'VB',\n  },\n  {\n    text: 'By MARK CARREAU',\n    tags: 'IN, NNP, NNP',\n  },\n  {\n    text: 'Copyright 2005 Houston Chronicle',\n    tags: 'NN, CD, NNP, NNP',\n  },\n  {\n    text: 'I am serious about doing something.',\n    tags: 'PRP, VBP, JJ, IN, VBG, NN',\n  },\n  {\n    text: 'I will.',\n    tags: 'PRP, MD',\n  },\n  {\n    text: 'These animals have the misfortune to produce a substance that is useful in the manufacture of perfume.',\n    tags: 'DT, NNS, VBP, DT, NN, TO, VB, DT, NN, CC, VBZ, JJ, IN, DT, NN, IN, NN',\n  },\n  {\n    text: 'Travis Job',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'icq uin: 5249025',\n    tags: 'NN, NN, CD',\n  },\n  {\n    text: 'Within seven days, I started getting money in the mail !!',\n    tags: 'IN, CD, NNS, PRP, VBD, VBG, NN, IN, DT, NN',\n  },\n  {\n    text: \"It's easy.\",\n    tags: 'PRP, VBZ, JJ',\n  },\n  {\n    text: \"It's legal.\",\n    tags: 'PRP, VBZ, JJ',\n  },\n  {\n    text: 'You are requesting a legitimate service and you are paying for it !!',\n    tags: 'PRP, VBP, VBG, DT, JJ, NN, CC, PRP, VBP, VBG, IN, PRP',\n  },\n  {\n    text: 'This is perfectly legal !!',\n    tags: 'DT, VBZ, RB, JJ',\n  },\n  // {\n  //   text: 'Visit message boards and post this article as a new message by highlighting the text of this letter and selecting paste from the edit menu.',\n  //   tags: 'VB, NN, NNS, CC, VB, DT, NN, IN, DT, JJ, NN, IN, VBG, DT, NN, IN, DT, NN, CC, VBG, NN, IN, DT, NN, NN',\n  // },\n  {\n    text: \"You're done.\",\n    tags: 'PRP, VBP, JJ',\n  },\n  {\n    text: \"THAT's IT !!\",\n    tags: 'DT, VBZ, PRP',\n  },\n  {\n    text: 'By Dan Whipple',\n    tags: 'IN, NNP, NNP',\n  },\n  {\n    text: 'Boulder, CO, Feb. 23 (UPI) --',\n    tags: 'NNP, NNP, NNP, CD, NNP',\n  },\n  {\n    text: 'The last wolf was killed in Yellowstone National Park in 1943.',\n    tags: 'DT, JJ, NN, VBD, VBN, IN, NNP, NNP, NNP, IN, CD',\n  },\n  {\n    text: 'This simple change has triggered a veritable ecological cascade in Yellowstone.',\n    tags: 'DT, JJ, NN, VBZ, VBN, DT, JJ, JJ, NN, IN, NNP',\n  },\n  {\n    text: 'Yellowstone has a vast elk herd, one of the largest in the world.',\n    tags: 'NNP, VBZ, DT, JJ, NN, NN, CD, IN, DT, JJS, IN, DT, NN',\n  },\n  {\n    text: 'On Jan. 31, Oregon Federal District Court Judge Robert E. Jones appeared to agree with them.',\n    tags: 'IN, NNP, CD, NNP, NNP, NNP, NNP, NNP, NNP, NNP, NNP, VBD, TO, VB, IN, PRP',\n  },\n  {\n    text: 'Wolves can migrate considerable distances.',\n    tags: 'NNS, MD, VB, JJ, NNS',\n  },\n  {\n    text: 'By Dan Whipple',\n    tags: 'IN, NNP, NNP',\n  },\n  {\n    text: 'Boulder, CO, Nov. 15 (UPI) --',\n    tags: 'NNP, NNP, NNP, CD, NNP',\n  },\n  {\n    text: 'Important species that probably would decline include shrimp, capelin, Greenland halibut and some varieties of flatfish.',\n    tags: 'JJ, NNS, WDT, RB, MD, VB, VBP, NNS, NN, NNP, NN, CC, DT, NNS, IN, NNS',\n  },\n  {\n    text: 'The Pew researchers tried to transcend the economic argument.',\n    tags: 'DT, NNP, NNS, VBD, TO, VB, DT, JJ, NN',\n  },\n  {\n    text: 'You have seen the pictures.',\n    tags: 'PRP, VBP, VBN, DT, NNS',\n  },\n  {\n    text: 'It is the welfare society that was New Orleans.\"',\n    tags: 'PRP, VBZ, DT, NN, NN, CC, VBD, NNP, NNP',\n  },\n  {\n    text: '-- Paul, Atlanta, USA',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: '-- Mac, Nottingham',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: '-- David, Kent',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: '-- John B, Windermere, Florida',\n    tags: 'NNP, NNP, NNP, NNP',\n  },\n  {\n    text: 'Certainly, representation of the US in other countries will have a certain depiction.',\n    tags: 'RB, NN, IN, DT, NNP, IN, JJ, NNS, MD, VB, DT, JJ, NN',\n  },\n  {\n    text: 'Some refused to leave, but so many were unable to.',\n    tags: 'DT, VBD, TO, VB, CC, RB, JJ, VBD, JJ, TO',\n  },\n  {\n    text: \"These are some of the things I've been wondering ...\",\n    tags: 'DT, VBP, DT, IN, DT, NNS, PRP, VBP, VBN, VBG',\n  },\n  {\n    text: 'Recently, Bush addressed the nation.',\n    tags: 'RB, NNP, VBD, DT, NN',\n  },\n  {\n    text: 'Aries in 2005 - Flexibility',\n    tags: 'NNP, IN, CD, NN',\n  },\n  {\n    text: 'Taurus in 2005 - Tenacity',\n    tags: 'NNP, IN, CD, NN',\n  },\n  {\n    text: 'Gemini in 2005 - Success',\n    tags: 'NNP, IN, CD, NN',\n  },\n  {\n    text: 'Cancer in 2005 - Balance',\n    tags: 'NNP, IN, CD, NN',\n  },\n  {\n    text: 'The active ones will be hectic!',\n    tags: 'DT, JJ, NNS, MD, VB, JJ',\n  },\n  {\n    text: 'Leo in 2005 - Abundance',\n    tags: 'NNP, IN, CD, NN',\n  },\n  {\n    text: 'Pursuing a successful career, along with the usual social and financial advantages, will be easier this year than it has in a long time for you, Leo!',\n    tags: 'VBG, DT, JJ, NN, IN, IN, DT, JJ, JJ, CC, JJ, NNS, MD, VB, JJR, DT, NN, IN, PRP, VBZ, IN, DT, JJ, NN, IN, PRP, NNP',\n  },\n  {\n    text: \"you'll be able to create opportunities for advancement almost out of thin air.\",\n    tags: 'PRP, MD, VB, JJ, TO, VB, NNS, IN, NN, RB, IN, IN, JJ, NN',\n  },\n  {\n    text: 'Money may suddenly become tight at a very inconvenient time.',\n    tags: 'NN, MD, RB, VB, JJ, IN, DT, RB, JJ, NN',\n  },\n  {\n    text: 'Virgo in 2005 - Perseverance',\n    tags: 'NNP, IN, CD, NN',\n  },\n  {\n    text: 'Libra in 2005 - Expansion',\n    tags: 'NNP, IN, CD, NN',\n  },\n  {\n    text: 'Scorpio in 2005 - Transmutation',\n    tags: 'NNP, IN, CD, NN',\n  },\n  {\n    text: 'Sagittarius in 2005 - Empowerment',\n    tags: 'NNP, IN, CD, NN',\n  },\n  {\n    text: 'Capricorn in 2005 - Resolution',\n    tags: 'NNP, IN, CD, NN',\n  },\n  {\n    text: 'Aquarius in 2005 - Magic',\n    tags: 'NNP, IN, CD, NN',\n  },\n  {\n    text: 'Pisces in 2005 - Self-confidence',\n    tags: 'NNP, IN, CD, NN, NN',\n  },\n  {\n    text: \"It's a big year for you, friend Pisces.\",\n    tags: 'PRP, VBZ, DT, JJ, NN, IN, PRP, NN, NNP',\n  },\n  {\n    text: 'ARCHILOCHUS solar eclipse: April 6, 648 BC Friday',\n    tags: 'NNP, JJ, NN, NNP, CD, CD, NN, NNP',\n  },\n  {\n    text: 'Petrarch meets LAURA: April 6, 1327 Monday',\n    tags: 'NNP, VBZ, NNP, NNP, CD, CD, NNP',\n  },\n  {\n    text: 'DURER dies: April 6, 1528 Monday',\n    tags: 'NNP, VBZ, NNP, CD, CD, NNP',\n  },\n  {\n    text: 'Sir Francis Walsingham dies: April 6, 1590 Monday',\n    tags: 'NNP, NNP, NNP, VBZ, NNP, CD, CD, NNP',\n  },\n  {\n    text: 'LAURA dies of plague: April 6, 1348 Sunday',\n    tags: 'NNP, VBZ, IN, NN, NNP, CD, CD, NNP',\n  },\n  {\n    text: 'RAPHAEL born: April 6, 1483 Sunday',\n    tags: 'NNP, VBN, NNP, CD, CD, NNP',\n  },\n  {\n    text: 'RAPHAEL dies: April 6, 1520 Good Friday',\n    tags: 'NNP, VBZ, NNP, CD, CD, NNP, NNP',\n  },\n  {\n    text: 'Kent EARTHQUAKE: April 6, 1580 Wednesday',\n    tags: 'NNP, NNP, NNP, CD, CD, NNP',\n  },\n  {\n    text: 'Upon the same day he conquered Darius, won a great victory at sea, & died the same day.',\n    tags: 'IN, DT, JJ, NN, PRP, VBD, NNP, VBD, DT, JJ, NN, IN, NN, CC, VBD, DT, JJ, NN',\n  },\n  {\n    text: '1533 Atahualpa, inca emperor of peru, imprisoned & learns chess.',\n    tags: 'CD, NNP, NNP, NN, IN, NNP, VBN, CC, VBZ, NN',\n  },\n  {\n    text: 'Introduces the word gambit.',\n    tags: 'VBZ, DT, NN, NN',\n  },\n  {\n    text: '1570 Gianutto della Mantia, Horatio born in Italy.',\n    tags: 'CD, NNP, NN, NNP, NNP, VBN, IN, NNP',\n  },\n  {\n    text: '1575 Leonardo beats Ruy Lopez in Madrid.',\n    tags: 'CD, NNP, VBZ, NNP, NNP, IN, NNP',\n  },\n  {\n    text: '1580 Catherine de Medici of France is a keen chess player.',\n    tags: 'CD, NNP, NNP, NNP, IN, NNP, VBZ, DT, JJ, NN, NN',\n  },\n  {\n    text: '1580 Ruy lopez died.',\n    tags: 'CD, NNP, NN, VBD',\n  },\n  {\n    text: 'Nostromo A Tale of the Seaboard',\n    tags: 'NNP, DT, NNP, IN, DT, NNP',\n  },\n  {\n    text: 'He turned away.',\n    tags: 'PRP, VBD, RB',\n  },\n  {\n    text: 'Wisteria Lodge',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: '\"But everything went wrong with us.',\n    tags: 'CC, NN, VBD, JJ, IN, PRP',\n  },\n  {\n    text: 'Art Neuendorffer',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'John Lennon entered stardom being a murderer.',\n    tags: 'NNP, NNP, VBD, NN, VBG, DT, NN',\n  },\n  {\n    text: 'One week after that declaration, ONLY ONE WEEK LATER, Brian Epstein, forger of the Beatle farce, died from an overdose.',\n    tags: 'CD, NN, IN, DT, NN, RB, CD, NN, RBR, NNP, NNP, NN, IN, DT, NNP, NN, VBD, IN, DT, NN',\n  },\n  {\n    text: 'You have been warned ...',\n    tags: 'PRP, VBP, VBN, VBN',\n  },\n  {\n    text: 'THE HIGH COURT.',\n    tags: 'DT, JJ, NN',\n  },\n  {\n    text: 'By William Rivers Pitt',\n    tags: 'IN, NNP, NNP, NNP',\n  },\n  {\n    text: 'Monday 09 January 2006',\n    tags: 'NNP, CD, NNP, CD',\n  },\n  {\n    text: '\"Iran has significant capabilities for asymmetric warfare, and poses the additional threat of proliferation.',\n    tags: 'NNP, VBZ, JJ, NNS, IN, JJ, NN, CC, VBZ, DT, JJ, NN, IN, NN',\n  },\n  {\n    text: 'In essence, Iran holds the high ground in the Gulf.',\n    tags: 'IN, NN, NNP, VBZ, DT, JJ, NN, IN, DT, NN',\n  },\n  {\n    text: 'The Sunburn can reach Mach 3 at high altitude.',\n    tags: 'DT, NNP, MD, VB, NNP, CD, IN, JJ, NN',\n  },\n  {\n    text: 'Iran also stands accused of aiding terrorism across the globe.',\n    tags: 'NNP, RB, VBZ, VBN, IN, VBG, NN, IN, DT, NN',\n  },\n  {\n    text: 'Is any of this a probability?',\n    tags: 'VBZ, DT, IN, DT, DT, NN',\n  },\n  {\n    text: 'They did it once already in Iraq.',\n    tags: 'PRP, VBD, PRP, RB, RB, IN, NNP',\n  },\n  {\n    text: '300 - Number of Clean Water Act violations by the mountaintop-mining industry in 2003.',\n    tags: 'CD, NN, IN, NNP, NNP, NNP, NNS, IN, DT, NN, NN, NN, IN, CD',\n  },\n  {\n    text: '100 - Percentage of those decisions that Bush then decided to allow the government to ignore indefinitely.',\n    tags: 'CD, NN, IN, DT, NNS, WDT, NNP, RB, VBD, TO, VB, DT, NN, TO, VB, RB',\n  },\n  {\n    text: '140 - Number of Saudis, including members of the Bin Laden family, evacuated from United States almost immediately after 11 September.',\n    tags: 'CD, NN, IN, NNPS, VBG, NNS, IN, DT, NNP, NNP, NN, VBN, IN, NNP, NNP, RB, RB, IN, CD, NNP',\n  },\n  {\n    text: 'Ambitious warrior',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Saviour of Iraq',\n    tags: 'NN, IN, NNP',\n  },\n  {\n    text: 'Making the country safer',\n    tags: 'VBG, DT, NN, JJR',\n  },\n  {\n    text: '95 - Percentage of foreign goods that arrive in the United States by sea.',\n    tags: 'CD, NN, IN, JJ, NNS, WDT, VBP, IN, DT, NNP, NNP, IN, NN',\n  },\n  {\n    text: '15,000 - Number of major chemical facilities in the United States.',\n    tags: 'CD, NN, IN, JJ, JJ, NNS, IN, DT, NNP, NNP',\n  },\n  {\n    text: 'George Bush: Money manager',\n    tags: 'NNP, NNP, NN, NN',\n  },\n  {\n    text: 'George Bush: Tax cutter',\n    tags: 'NNP, NNP, NN, NN',\n  },\n  {\n    text: 'Employment tsar',\n    tags: 'NN, NN',\n  },\n  {\n    text: 'George Bush: Lawman',\n    tags: 'NNP, NNP, NN',\n  },\n  {\n    text: '42 - Number of nationalities of those detainees at Guantanamo.',\n    tags: 'CD, NN, IN, NNS, IN, DT, NNS, IN, NNP',\n  },\n  {\n    text: 'Image booster for the US',\n    tags: 'NN, NN, IN, DT, NNP',\n  },\n  {\n    text: '13 - Number of vacation days the average American receives each Year.',\n    tags: 'CD, NN, IN, NN, NNS, DT, JJ, NNP, VBZ, DT, NN',\n  },\n  {\n    text: 'I think just living in a house with so many girls is making him go crazy?',\n    tags: 'PRP, VBP, RB, VBG, IN, DT, NN, IN, RB, JJ, NNS, VBZ, VBG, PRP, VB, JJ',\n  },\n  {\n    text: 'I am sorry for him, he is a good dad',\n    tags: 'PRP, VBP, JJ, IN, PRP, PRP, VBZ, DT, JJ, NN',\n  },\n  {\n    text: 'Moreton Morrell in Coventry, Warwickshire',\n    tags: 'NNP, NNP, IN, NNP, NNP',\n  },\n  {\n    text: 'Cheap hookers',\n    tags: 'JJ, NNS',\n  },\n  {\n    text: 'Would you recommend living in Limerick as a student?',\n    tags: 'MD, PRP, VB, VBG, IN, NNP, IN, DT, NN',\n  },\n  {\n    text: 'and would you recommend it as a student?',\n    tags: 'CC, MD, PRP, VB, PRP, IN, DT, NN',\n  },\n  {\n    text: 'Orla got it in one.',\n    tags: 'NNP, VBD, PRP, IN, CD',\n  },\n  {\n    text: 'Can that be fixed?',\n    tags: 'MD, DT, VB, VBN',\n  },\n  {\n    text: 'cynangon mod should work.',\n    tags: 'NNP, NNP, MD, VB',\n  },\n  {\n    text: 'Have you tried using clockwork recovery?',\n    tags: 'VBP, PRP, VBN, VBG, NN, NN',\n  },\n  {\n    text: 'Get the older version of Cynagon mod.',\n    tags: 'VB, DT, JJR, NN, IN, NNP, NNP',\n  },\n  {\n    text: 'Those roms focus on speed and stability.',\n    tags: 'DT, NNS, VBP, IN, NN, CC, NN',\n  },\n  {\n    text: 'Or you could just use a home screen launcher replacement.',\n    tags: 'CC, PRP, MD, RB, VB, DT, NN, NN, NN, NN',\n  },\n  {\n    text: 'Hope you read through this.',\n    tags: 'VBP, PRP, VBD, IN, DT',\n  },\n  {\n    text: 'are the moors and penines in Yorkshire a lonely eerie place?',\n    tags: 'VBP, DT, NNS, CC, NNS, IN, NNP, DT, JJ, JJ, NN',\n  },\n  {\n    text: 'I am VERY satisfied.',\n    tags: 'PRP, VBP, RB, JJ',\n  },\n  {\n    text: 'lens?',\n    tags: 'NN',\n  },\n  {\n    text: 'or it is normal?',\n    tags: 'CC, PRP, VBZ, JJ',\n  },\n  {\n    text: 'Is there any cure for mouse poison?',\n    tags: 'VBZ, EX, DT, NN, IN, NN, NN',\n  },\n  {\n    text: 'Crayola Air-Dry Clay?',\n    tags: 'NNP, NN, NN, NN',\n  },\n  {\n    text: 'She loves giraffes and homemade things!',\n    tags: 'PRP, VBZ, NNS, CC, JJ, NNS',\n  },\n  {\n    text: 'good idea?',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'she is also good in a carrier.',\n    tags: 'PRP, VBZ, RB, JJ, IN, DT, NN',\n  },\n  {\n    text: 'He loved it.',\n    tags: 'PRP, VBD, PRP',\n  },\n  {\n    text: 'NO!',\n    tags: 'UH',\n  },\n  {\n    text: 'I have had parakeets for a VERY long time, and I use pledge.',\n    tags: 'PRP, VBP, VBN, NNS, IN, DT, RB, JJ, NN, CC, PRP, VBP, NNP',\n  },\n  {\n    text: 'LOL Callum',\n    tags: 'UH, NNP',\n  },\n  {\n    text: 'no no no no no no',\n    tags: 'UH, UH, UH, UH, UH, UH',\n  },\n  {\n    text: 'no',\n    tags: 'UH',\n  },\n  {\n    text: 'Please HELP !!!!!!!!!!!!!!!!!!!!!',\n    tags: 'UH, VB',\n  },\n  {\n    text: 'TEN POINTS !!!!!!!!!!?',\n    tags: 'CD, NNS',\n  },\n  {\n    text: 'PLEASE !!!!!!',\n    tags: 'UH',\n  },\n  {\n    text: 'PLEASE HELP !!!!!!!!!!!',\n    tags: 'UH, VB',\n  },\n  {\n    text: '- 20 piece Chicken McNuggets',\n    tags: 'CD, NN, NNP, NNPS',\n  },\n\n  {\n    text: '- 10 piece Chicken McNuggets',\n    tags: 'CD, NN, NNP, NNPS',\n  },\n  {\n    text: '- Medium Fountain Drink',\n    tags: 'JJ, NN, NN',\n  },\n  {\n    text: '- McCAFE Drink',\n    tags: 'NNP, NN',\n  },\n  {\n    text: '- Hash browns',\n    tags: 'NN, NNS',\n  },\n  {\n    text: '- Egg McMuffin, Sausage',\n    tags: 'NNP, NNP, NN',\n  },\n  {\n    text: 'becca is right.',\n    tags: 'NNP, VBZ, JJ',\n  },\n  {\n    text: 'Beardies are actually quite delicate.',\n    tags: 'NNS, VBP, RB, RB, JJ',\n  },\n  {\n    text: 'For horses that are strong pullers.',\n    tags: 'IN, NNS, CC, VBP, JJ, NNS',\n  },\n  {\n    text: 'It just gives you a little leverage and curb pressure.',\n    tags: 'PRP, RB, VBZ, PRP, DT, JJ, NN, CC, NN, NN',\n  },\n  {\n    text: \"I know that's vague, but it depends on the horse.\",\n    tags: 'PRP, VBP, DT, VBZ, JJ, CC, PRP, VBZ, IN, DT, NN',\n  },\n  {\n    text: 'christmas ~ 100',\n    tags: 'NNP, SYM, CD',\n  },\n  {\n    text: 'hey kido u made me smile',\n    tags: 'UH, NN, PRP, VBD, PRP, VB',\n  },\n  {\n    text: 'Plaster of Paris does two things',\n    tags: 'NN, IN, NNP, VBZ, CD, NNS',\n  },\n  {\n    text: 'That might work',\n    tags: 'DT, MD, VB',\n  },\n  {\n    text: 'wheels are relatively noiseless -',\n    tags: 'NNS, VBP, RB, JJ',\n  },\n  {\n    text: 'petsmart application?',\n    tags: 'NNP, NN',\n  },\n  {\n    text: 'It makes a huge difference.',\n    tags: 'PRP, VBZ, DT, JJ, NN',\n  },\n  {\n    text: 'Nope',\n    tags: 'UH',\n  },\n  {\n    text: 'I applied to get a student visa to study in Canada, I received one that is valid until October of 2015.',\n    tags: 'PRP, VBD, TO, VB, DT, NN, NN, TO, VB, IN, NNP, PRP, VBD, CD, WDT, VBZ, JJ, IN, NNP, IN, CD',\n  },\n  {\n    text: 'Hi',\n    tags: 'UH',\n  },\n  {\n    text: 'I dislike this urban society and want to leave this whole enviroment.',\n    tags: 'PRP, VBP, DT, JJ, NN, CC, VBP, TO, VB, DT, JJ, NN',\n  },\n  {\n    text: 'I live in London.',\n    tags: 'PRP, VBP, IN, NNP',\n  },\n  {\n    text: 'Hotels for travelling will be expensive.',\n    tags: 'NNS, IN, NN, MD, VB, JJ',\n  },\n  {\n    text: 'Hit the road.',\n    tags: 'VB, DT, NN',\n  },\n  {\n    text: 'Should the statue of David be censored?',\n    tags: 'MD, DT, NN, IN, NNP, VB, VBN',\n  },\n  {\n    text: \"no, it's only a body of a young man\",\n    tags: 'UH, PRP, VBZ, RB, DT, NN, IN, DT, JJ, NN',\n  },\n  {\n    text: 'No, it was guys.',\n    tags: 'UH, PRP, VBD, NNS',\n  },\n  {\n    text: 'Better Steakhouse in Philadelphia?',\n    tags: 'JJ, NN, IN, NNP',\n  },\n  {\n    text: 'Many thanks.',\n    tags: 'JJ, NNS',\n  },\n  {\n    text: 'or would the steam from the shower be a problem?',\n    tags: 'CC, MD, DT, NN, IN, DT, NN, VB, DT, NN',\n  },\n  {\n    text: 'Is normal bird food good?', //fine\n    tags: 'VBZ, JJ, NN, NN, JJ',\n  },\n  {\n    text: 'or buy small bait worms.',\n    tags: 'CC, VB, JJ, NN, NNS',\n  },\n  {\n    text: 'that should work',\n    tags: 'DT, MD, VB',\n  },\n  {\n    text: 'i have two options',\n    tags: 'PRP, VBP, CD, NNS',\n  },\n  {\n    text: 'using the metro or the air france bus',\n    tags: 'VBG, DT, NNP, CC, DT, NNP, NNP, NN',\n  },\n  {\n    text: 'Buy a ticket for Paris.',\n    tags: 'VB, DT, NN, IN, NNP',\n  },\n  {\n    text: 'Buy a ticket from the driver.',\n    tags: 'VB, DT, NN, IN, DT, NN',\n  },\n  {\n    text: 'You could also try this in gimp.',\n    tags: 'PRP, MD, RB, VB, DT, IN, NNP',\n  },\n  {\n    text: 'Hope this helps.',\n    tags: 'VB, DT, VBZ',\n  },\n  {\n    text: 'Only a fool would base a decision using the cheapest surgeon to perform an operation.',\n    tags: 'RB, DT, NN, MD, VB, DT, NN, VBG, DT, JJS, NN, TO, VB, DT, NN',\n  },\n  {\n    text: \"I've had cats for 35 years and I only feed them dry food.\",\n    tags: 'PRP, VBP, VBN, NNS, IN, CD, NNS, CC, PRP, RB, VBP, PRP, JJ, NN',\n  },\n  {\n    text: 'Read the labels for contents.',\n    tags: 'VB, DT, NNS, IN, NNS',\n  },\n  {\n    text: 'They would be too scared and spooky.',\n    tags: 'PRP, MD, VB, RB, JJ, CC, JJ',\n  },\n  {\n    text: '10 gallon nano reef ideas?',\n    tags: 'CD, NN, NN, NN, NNS',\n  },\n  {\n    text: 'I am aware of the maintenance involved in keeping a tank this size.',\n    tags: 'PRP, VBP, JJ, IN, DT, NN, VBN, IN, VBG, DT, NN, DT, NN',\n  },\n  {\n    text: 'I am currently maintaining a gravity level of 1.024.',\n    tags: 'PRP, VBP, RB, VBG, DT, NN, NN, IN, CD',\n  },\n  {\n    text: 'Do I need a protein skimmer or any other equipment?',\n    tags: 'VBP, PRP, VB, DT, NN, NN, CC, DT, JJ, NN',\n  },\n  {\n    text: 'NOOK Color or NOOK Tablet?',\n    tags: 'NNP, NNP, CC, NNP, NNP',\n  },\n  {\n    text: 'Or just purchase the Color?',\n    tags: 'CC, RB, VB, DT, NNP',\n  },\n  {\n    text: 'Pubs in Philadelphia?',\n    tags: 'NNP, IN, NNP',\n  },\n  {\n    text: 'You add the water and put water conditioner into the water.',\n    tags: 'PRP, VBP, DT, NN, CC, VBP, NN, NN, IN, DT, NN',\n  },\n  {\n    text: 'And do you get charged for it?',\n    tags: 'CC, VBP, PRP, VB, VBN, IN, PRP',\n  },\n  {\n    text: 'Hope I helped!',\n    tags: 'VB, PRP, VBD',\n  },\n  {\n    text: \"He's probably still scared and unsure.\",\n    tags: 'PRP, VBZ, RB, RB, JJ, CC, JJ',\n  },\n  {\n    text: 'Things to do in Fujairah ..',\n    tags: 'NNS, TO, VB, IN, NNP',\n  },\n  {\n    text: 'Are there any new Gaming console?',\n    tags: 'VBP, EX, DT, JJ, NN, NN',\n  },\n  {\n    text: 'Anything after 12 is a bonus.',\n    tags: 'NN, IN, CD, VBZ, DT, NN',\n  },\n  {\n    text: 'But then again he could be!',\n    tags: 'CC, RB, RB, PRP, MD, VB',\n  },\n  {\n    text: 'Pictures would help!',\n    tags: 'NNS, MD, VB',\n  },\n  {\n    text: 'You always want to go higher rather than wider for rats.',\n    tags: 'PRP, RB, VBP, TO, VB, RBR, RB, IN, RBR, IN, NNS',\n  },\n  {\n    text: 'Both are equal length so go for the taller one.',\n    tags: 'DT, VBP, JJ, NN, RB, VB, IN, DT, JJR, CD',\n  },\n  {\n    text: 'good luck!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'put the heater on the snake he will love it and the the next day you will have dinner',\n    tags: 'VB, DT, NN, IN, DT, NN, PRP, MD, VB, PRP, CC, DT, DT, JJ, NN, PRP, MD, VB, NN',\n  },\n  {\n    text: 'You can definately plan on a great meal with reasonable prices.',\n    tags: 'PRP, MD, RB, VB, IN, DT, JJ, NN, IN, JJ, NNS',\n  },\n  {\n    text: 'Just relax and enjoy.',\n    tags: 'RB, VB, CC, VB',\n  },\n  {\n    text: \"We're at the corner of Hubbard and Noble.\",\n    tags: 'PRP, VBP, IN, DT, NN, IN, NNP, CC, NNP',\n  },\n  {\n    text: '1381 W. Hubbard',\n    tags: 'CD, NNP, NNP',\n  },\n  {\n    text: 'Chicago, IL 60622',\n    tags: 'NNP, NNP, CD',\n  },\n  {\n    text: 'Monday thru Friday',\n    tags: 'NNP, IN, NNP',\n  },\n  {\n    text: 'Happy Hour',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Monday thru Friday',\n    tags: 'NNP, IN, NNP',\n  },\n  {\n    text: 'Or you can visit temples or shrines in Okinawa.',\n    tags: 'CC, PRP, MD, VB, NNS, CC, NNS, IN, NNP',\n  },\n  {\n    text: 'Eat at a conveyor-belt sushi restaurant.',\n    tags: 'VB, IN, DT, NN, NN, NN, NN',\n  },\n  {\n    text: 'As a result there was a problem with the weapon jamming.',\n    tags: 'IN, DT, NN, EX, VBD, DT, NN, IN, DT, NN, VBG',\n  },\n  {\n    text: 'Rotorua is fine.',\n    tags: 'NNP, VBZ, JJ',\n  },\n  {\n    text: 'Nothing wrong with rotorua',\n    tags: 'NN, JJ, IN, NNP',\n  },\n  {\n    text: 'But I would go for the base number of 15 hh.',\n    tags: 'CC, PRP, MD, VB, IN, DT, NN, NN, IN, CD, NNS',\n  },\n  {\n    text: 'Iguazu Falls',\n    tags: 'NNP, NNPS',\n  },\n  {\n    text: 'definitely London -',\n    tags: 'RB, NNP',\n  },\n  {\n    text: \"you'll need to have intermediate French to have a good time in Paris.\",\n    tags: 'PRP, MD, VB, TO, VB, JJ, NNP, TO, VB, DT, JJ, NN, IN, NNP',\n  },\n  {\n    text: \"It's beautiful and the people are extremely friendly.\",\n    tags: 'PRP, VBZ, JJ, CC, DT, NNS, VBP, RB, JJ',\n  },\n  {\n    text: 'Everything about the place is magical and the people are mostly friendly.',\n    tags: 'NN, IN, DT, NN, VBZ, JJ, CC, DT, NNS, VBP, RB, JJ',\n  },\n  {\n    text: 'That is a term invented by online romance scammers',\n    tags: 'DT, VBZ, DT, NN, VBN, IN, JJ, NN, NNS',\n  },\n  {\n    text: 'This is an invention of the scammers.\"',\n    tags: 'DT, VBZ, DT, NN, IN, DT, NNS',\n  },\n  {\n    text: 'BTA only exists in the mind of SCAMMERS.',\n    tags: 'NNP, RB, VBZ, IN, DT, NN, IN, NNS',\n  },\n  {\n    text: '100 % SCAM.',\n    tags: 'CD, NN, NN',\n  },\n  {\n    text: 'Then the environment.',\n    tags: 'RB, DT, NN',\n  },\n  {\n    text: 'Then add the other mate.',\n    tags: 'RB, VB, DT, JJ, NN',\n  },\n  {\n    text: 'I want to apply for canada skilled immigeration program.',\n    tags: 'PRP, VBP, TO, VB, IN, NNP, JJ, NN, NN',\n  },\n  {\n    text: 'Can i apply with 63 points?',\n    tags: 'MD, PRP, VB, IN, CD, NNS',\n  },\n  {\n    text: 'The pass mark could change.',\n    tags: 'DT, NN, NN, MD, VB',\n  },\n  {\n    text: 'Read the full answer at that web page for conditions.',\n    tags: 'VB, DT, JJ, NN, IN, DT, NN, NN, IN, NNS',\n  },\n  {\n    text: 'Jim B',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Please help !?',\n    tags: 'UH, VB',\n  },\n  {\n    text: 'Can someone please make me feel better about this trip !!!!',\n    tags: 'MD, NN, UH, VB, PRP, VB, JJR, IN, DT, NN',\n  },\n  {\n    text: 'Hope it helps!',\n    tags: 'VBP, PRP, VBZ',\n  },\n  {\n    text: 'It is free.',\n    tags: 'PRP, VBZ, JJ',\n  },\n  {\n    text: 'Feather Type.',\n    tags: 'NN, NN',\n  },\n  {\n    text: 'Sussexs have soft feathers.',\n    tags: 'NNS, VBP, JJ, NNS',\n  },\n  {\n    text: 'Five Toes: Silkies have five toes.',\n    tags: 'CD, NNS, NNS, VBP, CD, NNS',\n  },\n  {\n    text: 'Sussex have four toes.',\n    tags: 'NN, VBP, CD, NNS',\n  },\n  {\n    text: 'But only really in the countryside.',\n    tags: 'CC, RB, RB, IN, DT, NN',\n  },\n  {\n    text: 'Barn brack and the ring.',\n    tags: 'NN, NN, CC, DT, NN',\n  },\n  {\n    text: 'christmas cake for christmas day.',\n    tags: 'NNP, NN, IN, NNP, NN',\n  },\n  {\n    text: 'Do animals see images on a TV screen like humans do?',\n    tags: 'VBP, NNS, VB, NNS, IN, DT, NN, NN, IN, NNS, VBP',\n  },\n  {\n    text: 'Do animals see images on a TV screen like humans do?',\n    tags: 'VBP, NNS, VB, NNS, IN, DT, NN, NN, IN, NNS, VBP',\n  },\n  {\n    text: 'Do dogs enjoy watching T.V.?',\n    tags: 'VBP, NNS, VB, VBG, NN',\n  },\n  {\n    text: 'I want to take a cruise around the world.',\n    tags: 'PRP, VBP, TO, VB, DT, NN, IN, DT, NN',\n  },\n  {\n    text: 'Good luck!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'The whole Western Addition and a large portion of the Haight was black.',\n    tags: 'DT, JJ, NNP, NNP, CC, DT, JJ, NN, IN, DT, NNP, VBD, JJ',\n  },\n  {\n    text: 'It was an evolution.',\n    tags: 'PRP, VBD, DT, NN',\n  },\n  {\n    text: 'Good luck!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'rabbits are delicate and can get diseases so watch out for that.',\n    tags: 'NNS, VBP, JJ, CC, MD, VB, NNS, RB, VB, RP, IN, DT',\n  },\n  {\n    text: 'Switzerland is one, and the Netherlands are passing the same law.',\n    tags: 'NNP, VBZ, CD, CC, DT, NNPS, VBP, VBG, DT, JJ, NN',\n  },\n  {\n    text: 'It will become EU law in a couple of years.',\n    tags: 'PRP, MD, VB, NNP, NN, IN, DT, NN, IN, NNS',\n  },\n  {\n    text: 'Lay some knowledge on them dude.',\n    tags: 'VB, DT, NN, IN, PRP, NN',\n  },\n  {\n    text: 'Good luck!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Good luck!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Any suggestions?',\n    tags: 'DT, NNS',\n  },\n  {\n    text: 'Being gay and living in Toronto is just fine.',\n    tags: 'VBG, JJ, CC, VBG, IN, NNP, VBZ, RB, JJ',\n  },\n  {\n    text: 'But, can you immigrate?',\n    tags: 'CC, MD, PRP, VB',\n  },\n  {\n    text: 'Do it properly, and legally, and you will be OK.',\n    tags: 'VB, PRP, RB, CC, RB, CC, PRP, MD, VB, JJ',\n  },\n  {\n    text: 'Jim B',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: \"Recently I'm having trouble training him.\",\n    tags: 'RB, PRP, VBP, VBG, NN, VBG, PRP',\n  },\n  {\n    text: 'Hi, I am a dog trainer for 25 yrs.',\n    tags: 'UH, PRP, VBP, DT, NN, NN, IN, CD, NNS',\n  },\n  {\n    text: 'Do this repeatedly and frequently and he will learn to walk on a leash.',\n    tags: 'VB, DT, RB, CC, RB, CC, PRP, MD, VB, TO, VB, IN, DT, NN',\n  },\n  {\n    text: 'Hey guys.',\n    tags: 'UH, NNS',\n  },\n  {\n    text: \"In Delhi I'd recommend Ajay Guesthouse.\",\n    tags: 'IN, NNP, PRP, MD, VB, NNP, NNP',\n  },\n  {\n    text: 'Those ones are quite small.',\n    tags: 'DT, NNS, VBP, RB, JJ',\n  },\n  {\n    text: 'But in general, Delhi is the hardest place to find a nice clean hotel for that price.',\n    tags: 'CC, IN, JJ, NNP, VBZ, DT, JJS, NN, TO, VB, DT, JJ, JJ, NN, IN, DT, NN',\n  },\n  {\n    text: 'It was quite easy to find something.',\n    tags: 'PRP, VBD, RB, JJ, TO, VB, NN',\n  },\n  {\n    text: 'it is in karol bagh.',\n    tags: 'PRP, VBZ, IN, NNP, NNP',\n  },\n  {\n    text: 'a degu, a rat, a mouse, a hamster or a guinea pig?',\n    tags: 'DT, NN, DT, NN, DT, NN, DT, NN, CC, DT, NN, NN',\n  },\n  {\n    text: 'Get a guinea pig.',\n    tags: 'VB, DT, NN, NN',\n  },\n  {\n    text: \"They're incredibly social, highly trainable, and very clean.\",\n    tags: 'PRP, VBP, RB, JJ, RB, JJ, CC, RB, JJ',\n  },\n  {\n    text: 'Get a guinea pig.',\n    tags: 'VB, DT, NN, NN',\n  },\n  {\n    text: 'We have two.',\n    tags: 'PRP, VBP, CD',\n  },\n  {\n    text: 'They are social and like to be handled.',\n    tags: 'PRP, VBP, JJ, CC, VBP, TO, VB, VBN',\n  },\n  {\n    text: 'They love leaf or romaine lettuce and tomatos, celery, cucumbers, carrots.',\n    tags: 'PRP, VBP, NN, CC, NN, NN, CC, NNS, NN, NNS, NNS',\n  },\n  {\n    text: 'Need Advice !?',\n    tags: 'VBP, NN',\n  },\n  {\n    text: 'I find the adults are much easier.',\n    tags: 'PRP, VBP, DT, NNS, VBP, RB, JJR',\n  },\n  {\n    text: 'Good luck',\n    tags: 'JJ, NN',\n  },\n  {\n    text: '- better food',\n    tags: 'JJR, NN',\n  },\n  {\n    text: 'Are there any major differences between them?',\n    tags: 'VBP, EX, DT, JJ, NNS, IN, PRP',\n  },\n  {\n    text: 'Spa We tried the spa on the Liberty and loved it.',\n    tags: 'NN, PRP, VBD, DT, NN, IN, DT, NNP, CC, VBD, PRP',\n  },\n  {\n    text: 'Leave High School?',\n    tags: 'VB, NNP, NNP',\n  },\n  {\n    text: 'In the United States?',\n    tags: 'IN, DT, NNP, NNP',\n  },\n  {\n    text: 'Lots of places.',\n    tags: 'NNS, IN, NNS',\n  },\n  {\n    text: 'Big Cities like New York, Boston, Philadelphia on the East Coast.',\n    tags: 'JJ, NNS, IN, NNP, NNP, NNP, NNP, IN, DT, NNP, NNP',\n  },\n  {\n    text: 'The federal sites of Washington, DC.',\n    tags: 'DT, JJ, NNS, IN, NNP, NNP',\n  },\n  {\n    text: 'Southern charm of Nashville, Birmingham, New Orleans or Charlotte.',\n    tags: 'JJ, NN, IN, NNP, NNP, NNP, NNP, CC, NNP',\n  },\n  {\n    text: 'Amount of time could be dependent on so many things.',\n    tags: 'NN, IN, NN, MD, VB, JJ, IN, RB, JJ, NNS',\n  },\n  {\n    text: 'Good luck.',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Nigeria, a lovely country.',\n    tags: 'NNP, DT, JJ, NN',\n  },\n  {\n    text: 'Obudu cattle ranch.',\n    tags: 'NNP, NN, NN',\n  },\n  {\n    text: 'he will feel much safer in that one room, than in a huge unknown house.',\n    tags: 'PRP, MD, VB, RB, JJR, IN, DT, CD, NN, IN, IN, DT, JJ, JJ, NN',\n  },\n  {\n    text: 'It s very frustrating.',\n    tags: 'PRP, VBZ, RB, JJ',\n  },\n  {\n    text: 'I would start with a leash.',\n    tags: 'PRP, MD, VB, IN, DT, NN',\n  },\n  {\n    text: 'He will learn to really like this.',\n    tags: 'PRP, MD, VB, TO, RB, VB, DT',\n  },\n  {\n    text: 'Try obedience classes.',\n    tags: 'VB, NN, NNS',\n  },\n  {\n    text: 'Thank you!',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: 'I have taken this tour and it was great.',\n    tags: 'PRP, VBP, VBN, DT, NN, CC, PRP, VBD, JJ',\n  },\n  {\n    text: 'tele # 84838389593',\n    tags: 'NN, NN, CD',\n  },\n  {\n    text: 'You take a boat across the river, then spend a day biking, eating at a local restaurant, buying souvenirs and doing other things geared towards tourists.',\n    tags: 'PRP, VBP, DT, NN, IN, DT, NN, RB, VB, DT, NN, VBG, VBG, IN, DT, JJ, NN, VBG, NNS, CC, VBG, JJ, NNS, VBN, IN, NNS',\n  },\n  {\n    text: \"It's called Kiwi Heaven and it's across the river from Cho Ben Tre.\",\n    tags: 'PRP, VBZ, VBN, NNP, NNP, CC, PRP, VBZ, IN, DT, NN, IN, NNP, NNP, NNP',\n  },\n  // {\n  //   text: 'But there are just so many poses and programs!',\n  //   tags: 'CC, EX, VBP, RB, RB, JJ, NNS, CC, NNS',\n  // },\n  {\n    text: 'Then the same thing with the other leg.',\n    tags: 'RB, DT, JJ, NN, IN, DT, JJ, NN',\n  },\n  {\n    text: 'and will these antibiotics help?',\n    tags: 'CC, MD, DT, NNS, VB',\n  },\n  {\n    text: 'Thank you for the help.',\n    tags: 'VBP, PRP, IN, DT, NN',\n  },\n  {\n    text: 'He could also have Parvovirus, a GI foreign body, or any number of things.',\n    tags: 'PRP, MD, RB, VB, NNP, DT, NN, JJ, NN, CC, DT, NN, IN, NNS',\n  },\n  {\n    text: 'Bland food.',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Did they do any x-rays?',\n    tags: 'VBD, PRP, VB, DT, NNS',\n  },\n  {\n    text: 'They are also very secretive about being in a relationship.',\n    tags: 'PRP, VBP, RB, RB, JJ, IN, VBG, IN, DT, NN',\n  },\n  {\n    text: 'Is it true?',\n    tags: 'VBZ, PRP, JJ',\n  },\n  {\n    text: 'Christiane gave you a good answer.',\n    tags: 'NNP, VBD, PRP, DT, JJ, NN',\n  },\n  {\n    text: \"it's very logical.\",\n    tags: 'PRP, VBZ, RB, JJ',\n  },\n  {\n    text: \"I also wish I'd applied for a scholarship.\",\n    tags: 'PRP, RB, VBP, PRP, VBD, VBN, IN, DT, NN',\n  },\n  {\n    text: 'Lol.',\n    tags: 'UH',\n  },\n\n  {\n    text: 'Joking.',\n    tags: 'VBG',\n  },\n  {\n    text: 'Get an education!',\n    tags: 'VB, DT, NN',\n  },\n  {\n    text: 'i have tried EVERYTHING i can to get him to eat but he refuses.',\n    tags: 'PRP, VBP, VBN, NN, PRP, MD, TO, VB, PRP, TO, VB, CC, PRP, VBZ',\n  },\n  {\n    text: \"I've only tried to feed him one at a time.\",\n    tags: 'PRP, VBP, RB, VBN, TO, VB, PRP, CD, IN, DT, NN',\n  },\n  {\n    text: \"he's just a tiny baby, about the width of a pencil.\",\n    tags: 'PRP, VBZ, RB, DT, JJ, NN, IN, DT, NN, IN, DT, NN',\n  },\n  {\n    text: 'They have a natural instinct to hibernate.',\n    tags: 'PRP, VBP, DT, JJ, NN, TO, VB',\n  },\n  {\n    text: 'hope this helped.',\n    tags: 'VBP, DT, VBD',\n  },\n  {\n    text: 'help !?',\n    tags: 'VB',\n  },\n  {\n    text: 'or were they actually fighting?',\n    tags: 'CC, VBD, PRP, RB, VBG',\n  },\n  {\n    text: 'she will be able to sleep without being afraid.',\n    tags: 'PRP, MD, VB, JJ, TO, VB, IN, VBG, JJ',\n  },\n  {\n    text: 'good luck!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'That means they are fighting.',\n    tags: 'DT, VBZ, PRP, VBP, VBG',\n  },\n  {\n    text: 'Thing is, it worked.',\n    tags: 'NN, VBZ, PRP, VBD',\n  },\n  {\n    text: 'The Communists agreed.',\n    tags: 'DT, NNPS, VBD',\n  },\n  {\n    text: 'THAT WAS THE PLAN.',\n    tags: 'DT, VBD, DT, NN',\n  },\n  {\n    text: 'The Americans detected the attempt to infiltrate the urban areas and were already redeploying troops from the rural areas.',\n    tags: 'DT, NNPS, VBD, DT, NN, TO, VB, DT, JJ, NNS, CC, VBD, RB, VBG, NNS, IN, DT, JJ, NNS',\n  },\n  {\n    text: 'There is a very good book on the subject that was written by General Vo Nguyen Giap.',\n    tags: 'EX, VBZ, DT, RB, JJ, NN, IN, DT, NN, CC, VBD, VBN, IN, NNP, NNP, NNP, NNP',\n  },\n  {\n    text: 'Any advice would be greatly appreciated.',\n    tags: 'DT, NN, MD, VB, RB, VBN',\n  },\n  {\n    text: 'UVB on the other hand can only be reproduced by a fluorescent source.',\n    tags: 'NN, IN, DT, JJ, NN, MD, RB, VB, VBN, IN, DT, JJ, NN',\n  },\n  {\n    text: 'As for the heat, just be sure to use a thermometer.',\n    tags: 'IN, IN, DT, NN, RB, VB, JJ, TO, VB, DT, NN',\n  },\n  {\n    text: 'Also try green leafy veggies, like kale and spinach.',\n    tags: 'RB, VB, JJ, NN, NNS, IN, NN, CC, NN',\n  },\n  {\n    text: 'Is a finch or a parakeet better?',\n    tags: 'VBZ, DT, NN, CC, DT, NN, JJR',\n  },\n  {\n    text: 'Please help me!',\n    tags: 'UH, VB, PRP',\n  },\n  {\n    text: 'Please choose the parakeet ...',\n    tags: 'UH, VB, DT, NN',\n  },\n  {\n    text: 'After a couple of weeks I got tired of them.',\n    tags: 'IN, DT, NN, IN, NNS, PRP, VBD, JJ, IN, PRP',\n  },\n  {\n    text: 'They are adorable they have beautiful colors and personality.',\n    tags: 'PRP, VBP, JJ, PRP, VBP, JJ, NNS, CC, NN',\n  },\n  {\n    text: 'I love them.',\n    tags: 'PRP, VBP, PRP',\n  },\n  {\n    text: 'I tamed them in 4 days.',\n    tags: 'PRP, VBD, PRP, IN, CD, NNS',\n  },\n  {\n    text: 'The whole family loves them.',\n    tags: 'DT, JJ, NN, VBZ, PRP',\n  },\n  {\n    text: 'I have one yellow girl and a green and yellow boy.',\n    tags: 'PRP, VBP, CD, JJ, NN, CC, DT, JJ, CC, JJ, NN',\n  },\n  {\n    text: 'These are the steps I used.',\n    tags: 'DT, VBP, DT, NNS, PRP, VBD',\n  },\n  {\n    text: 'Hopefully they will work for you.',\n    tags: 'RB, PRP, MD, VB, IN, PRP',\n  },\n  {\n    text: 'You have patience.',\n    tags: 'PRP, VBP, NN',\n  },\n  {\n    text: 'Good luck!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'They worked for me and I hope they worked for you!',\n    tags: 'PRP, VBD, IN, PRP, CC, PRP, VBP, PRP, VBD, IN, PRP',\n  },\n  {\n    text: 'They are awesome !!!!!!!!!!!!!!!',\n    tags: 'PRP, VBP, JJ',\n  },\n  {\n    text: 'a parakeet is friendlier',\n    tags: 'DT, NN, VBZ, JJR',\n  },\n  {\n    text: 'Parakeet.',\n    tags: 'NN',\n  },\n  {\n    text: 'They are also friendly.',\n    tags: 'PRP, VBP, RB, JJ',\n  },\n  {\n    text: 'And then there’s the rain.',\n    tags: 'CC, RB, EX, VBZ, DT, NN',\n  },\n  {\n    text: 'You do realise it is quite expensive to visit Ireland?',\n    tags: 'PRP, VBP, VB, PRP, VBZ, RB, JJ, TO, VB, NNP',\n  },\n  {\n    text: 'I have 4 Golden Wonder Killifish.',\n    tags: 'PRP, VBP, CD, NN, NN, NNS',\n  },\n  {\n    text: 'Wow!',\n    tags: 'UH',\n  },\n  {\n    text: 'You also may need to treat the incubation water.',\n    tags: 'PRP, RB, MD, VB, TO, VB, DT, NN, NN',\n  },\n  {\n    text: 'Should I get a balcony?',\n    tags: 'MD, PRP, VB, DT, NN',\n  },\n  {\n    text: 'Any tips or advice to make this a great experience ??',\n    tags: 'DT, NNS, CC, NN, TO, VB, DT, DT, JJ, NN',\n  },\n  {\n    text: 'It is vacation time.',\n    tags: 'PRP, VBZ, NN, NN',\n  },\n  {\n    text: 'It has got very spacious rooms, furnished completely and neatly.',\n    tags: 'PRP, VBZ, VBN, RB, JJ, NNS, VBN, RB, CC, RB',\n  },\n  {\n    text: 'These are decorated uniquely and marvelously.',\n    tags: 'DT, VBP, VBN, RB, CC, RB',\n  },\n  {\n    text: 'The ship offers variety of eatables, deliciously made.',\n    tags: 'DT, NN, VBZ, NN, IN, NNS, RB, VBN',\n  },\n  {\n    text: 'There are special regions uniquely and imposingly designed for the children.',\n    tags: 'EX, VBP, JJ, NNS, RB, CC, RB, VBN, IN, DT, NNS',\n  },\n  {\n    text: 'It is really an entertainment for the kids.',\n    tags: 'PRP, VBZ, RB, DT, NN, IN, DT, NNS',\n  },\n  {\n    text: 'The amusing world of cartoons and stories will be a memorable experience for the children.',\n    tags: 'DT, JJ, NN, IN, NNS, CC, NNS, MD, VB, DT, JJ, NN, IN, DT, NNS',\n  },\n  {\n    text: 'There are other amnesties also.',\n    tags: 'EX, VBP, JJ, NNS, RB',\n  },\n  {\n    text: 'There are many online sites offering the booking facility with affordable rates.',\n    tags: 'EX, VBP, JJ, JJ, NNS, VBG, DT, NN, NN, IN, JJ, NNS',\n  },\n  {\n    text: 'You may also want to avoid Thanksgiving week and the Christmas holidays.',\n    tags: 'PRP, MD, RB, VB, TO, VB, NNP, NN, CC, DT, NNP, NNS',\n  },\n  {\n    text: 'Any time would be great.',\n    tags: 'DT, NN, MD, VB, JJ',\n  },\n  {\n    text: 'We had a ball.',\n    tags: 'PRP, VBD, DT, NN',\n  },\n  {\n    text: 'The range of activities can be illustrated by describing the water activities.',\n    tags: 'DT, NN, IN, NNS, MD, VB, VBN, IN, VBG, DT, NN, NNS',\n  },\n  {\n    text: 'but food is always available and it is consistently good.',\n    tags: 'CC, NN, VBZ, RB, JJ, CC, PRP, VBZ, RB, JJ',\n  },\n  {\n    text: \"It's a father and son business.\",\n    tags: 'PRP, VBZ, DT, NN, CC, NN, NN',\n  },\n  {\n    text: 'Or are you undecided?',\n    tags: 'CC, VBP, PRP, JJ',\n  },\n  {\n    text: 'He had this Habit of telling you Everything ..',\n    tags: 'PRP, VBD, DT, NN, IN, VBG, PRP, NN',\n  },\n  {\n    text: 'Might be something different?',\n    tags: 'MD, VB, NN, JJ',\n  },\n  {\n    text: 'Think I should do it?',\n    tags: 'VB, PRP, MD, VB, PRP',\n  },\n  {\n    text: \"He's dropping we\",\n    tags: 'PRP, VBZ, VBG, NN',\n  },\n  {\n    text: \"It's actually one of the alternative therapies for EPM\",\n    tags: 'PRP, VBZ, RB, CD, IN, DT, JJ, NNS, IN, NN',\n  },\n  {\n    text: 'Is that something you are up for?',\n    tags: 'VBZ, DT, NN, PRP, VBP, IN, IN',\n  },\n  {\n    text: 'Or a difficult birth?',\n    tags: 'CC, DT, JJ, NN',\n  },\n  {\n    text: 'Extremely bad customer service',\n    tags: 'RB, JJ, NN, NN',\n  },\n  {\n    text: 'Rude, insensitive, discourteous people !!!!!',\n    tags: 'JJ, JJ, JJ, NNS',\n  },\n  {\n    text: 'Great Doc',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Excellent Tattoo Shop',\n    tags: 'JJ, NN, NN',\n  },\n  {\n    text: 'The shop was great, the service was excellent and the employees were fun guys.',\n    tags: 'DT, NN, VBD, JJ, DT, NN, VBD, JJ, CC, DT, NNS, VBD, JJ, NNS',\n  },\n  {\n    text: 'But I found the location wonderful and the neighbors very kind.',\n    tags: 'CC, PRP, VBD, DT, NN, JJ, CC, DT, NNS, RB, JJ',\n  },\n  {\n    text: 'Loved the pool and BBQ.',\n    tags: 'VBD, DT, NN, CC, NN',\n  },\n  {\n    text: 'Lynda is professional and has great compassion for animals.',\n    tags: 'NNP, VBZ, JJ, CC, VBZ, JJ, NN, IN, NNS',\n  },\n  {\n    text: 'these guys were fantastic!',\n    tags: 'DT, NNS, VBD, JJ',\n  },\n  {\n    text: 'GREAT JOB GUYS!',\n    tags: 'JJ, NN, NNS',\n  },\n  {\n    text: 'This office is awesome!',\n    tags: 'DT, NN, VBZ, JJ',\n  },\n  {\n    text: 'Criminal Attorney Dallas',\n    tags: 'JJ, NN, NNP',\n  },\n  {\n    text: 'Food was cold',\n    tags: 'NN, VBD, JJ',\n  },\n  {\n    text: 'We love Little Farmer',\n    tags: 'PRP, VBP, NNP, NNP',\n  },\n  {\n    text: 'Fantastic, quick and efficient service.',\n    tags: 'JJ, JJ, CC, JJ, NN',\n  },\n  {\n    text: 'They were beautiful and lasted forever!',\n    tags: 'PRP, VBD, JJ, CC, VBD, RB',\n  },\n  {\n    text: 'Excellent bagels and excellent service!',\n    tags: 'JJ, NNS, CC, JJ, NN',\n  },\n  {\n    text: 'They are friendly and fast.',\n    tags: 'PRP, VBP, JJ, CC, JJ',\n  },\n  {\n    text: 'They are great!',\n    tags: 'PRP, VBP, JJ',\n  },\n  {\n    text: 'Great Doctor!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Dr. Faris is a great doctor!',\n    tags: 'NNP, NNP, VBZ, DT, JJ, NN',\n  },\n  {\n    text: 'happy customer',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Affordable pricing.',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Friendly responses.',\n    tags: 'JJ, NNS',\n  },\n  {\n    text: 'You will find the same to be true for you.',\n    tags: 'PRP, MD, VB, DT, JJ, TO, VB, JJ, IN, PRP',\n  },\n  {\n    text: \"This is car number 3 we 've purchased through them.\",\n    tags: 'DT, VBZ, NN, NN, CD, PRP, VBP, VBN, IN, PRP',\n  },\n  {\n    text: 'Thank you again for great customer service!',\n    tags: 'VBP, PRP, RB, IN, JJ, NN, NN',\n  },\n  {\n    text: 'Highly recommended !!',\n    tags: 'RB, VBN',\n  },\n  {\n    text: 'Great pub',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'awful awful awful',\n    tags: 'JJ, JJ, JJ',\n  },\n  {\n    text: 'They have unbeatable price in town and deliver on time.',\n    tags: 'PRP, VBP, JJ, NN, IN, NN, CC, VBP, IN, NN',\n  },\n  {\n    text: 'Great Surgeon',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Dr. Wallen and staff was excellent.',\n    tags: 'NNP, NNP, CC, NN, VBD, JJ',\n  },\n  {\n    text: 'Staff explained insurance procedures and was very helpful.',\n    tags: 'NN, VBD, NN, NNS, CC, VBD, RB, JJ',\n  },\n  {\n    text: 'Everyone was very nice.',\n    tags: 'NN, VBD, RB, JJ',\n  },\n  {\n    text: 'The artwork is excellent and the prices are very reasonable.',\n    tags: 'DT, NN, VBZ, JJ, CC, DT, NNS, VBP, RB, JJ',\n  },\n  {\n    text: 'Good job, Lake Forest Tots!',\n    tags: 'JJ, NN, NNP, NNP, NNPS',\n  },\n  {\n    text: 'This place is so great!',\n    tags: 'DT, NN, VBZ, RB, JJ',\n  },\n  {\n    text: 'Excellent customer service and honest feedback.',\n    tags: 'JJ, NN, NN, CC, JJ, NN',\n  },\n  {\n    text: \"I've only had good experiences at Adorn, I was greeted and offered a refreshment.\",\n    tags: 'PRP, VBP, RB, VBN, JJ, NNS, IN, NNP, PRP, VBD, VBN, CC, VBN, DT, NN',\n  },\n  {\n    text: 'Pure Pilates !!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Thoroughly recommended',\n    tags: 'RB, VBN',\n  },\n  {\n    text: 'Definitely recommend!',\n    tags: 'RB, VBP',\n  },\n  {\n    text: 'and it works!',\n    tags: 'CC, PRP, VBZ',\n  },\n  {\n    text: 'Thank you Comfort Zone',\n    tags: 'VBP, PRP, NNP, NNP',\n  },\n  {\n    text: 'Absolutely great!',\n    tags: 'RB, JJ',\n  },\n  {\n    text: 'CHANGE THE PROCESS, PPL!',\n    tags: 'VB, DT, NN, NNS',\n  },\n  {\n    text: 'I love the people, the product and the service!',\n    tags: 'PRP, VBP, DT, NNS, DT, NN, CC, DT, NN',\n  },\n  {\n    text: 'Awesome !!!!',\n    tags: 'JJ',\n  },\n  // {\n  //   text: 'they save me from having to deal with Tmobile ...',\n  //   tags: 'PRP, VBD, PRP, IN, VBG, TO, VB, IN, NNP',\n  // },\n  {\n    text: 'Great service.',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'But service is very poor.',\n    tags: 'CC, NN, VBZ, RB, JJ',\n  },\n  {\n    text: 'Attitude of staff very bad.',\n    tags: 'NN, IN, NNS, RB, JJ',\n  },\n  {\n    text: 'And then wait again.',\n    tags: 'CC, RB, VB, RB',\n  },\n  {\n    text: 'Everything is delicous and cooked perfectly.',\n    tags: 'NN, VBZ, JJ, CC, VBN, RB',\n  },\n  {\n    text: 'I love it for discounted beauty items and household appliances.',\n    tags: 'PRP, VBP, PRP, IN, JJ, NN, NNS, CC, NN, NNS',\n  },\n  {\n    text: 'The service at Instep was great !!',\n    tags: 'DT, NN, IN, NNP, VBD, JJ',\n  },\n  {\n    text: 'Tried Crust on Broad on 3 occasions.',\n    tags: 'VBD, NNP, IN, NNP, IN, CD, NNS',\n  },\n  {\n    text: 'Great help!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'I have nothing bad to say.',\n    tags: 'PRP, VBP, NN, JJ, TO, VB',\n  },\n  {\n    text: 'I got a coupon from Pennysaver for this station.',\n    tags: 'PRP, VBD, DT, NN, IN, NNP, IN, DT, NN',\n  },\n  {\n    text: 'Are you kidding me?',\n    tags: 'VBP, PRP, VBG, PRP',\n  },\n  {\n    text: 'Good location',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Rcommended by bees, too!',\n    tags: 'VBN, IN, NNS, RB',\n  },\n  {\n    text: 'Highly recommended.',\n    tags: 'RB, VBN',\n  },\n  {\n    text: 'Very professional.',\n    tags: 'RB, JJ',\n  },\n  {\n    text: 'Reasonable rate.',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Suzanne, Vancouver',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'GREAT SERVICE AND PEOPLE !!',\n    tags: 'JJ, NN, CC, NNS',\n  },\n  {\n    text: 'Deb Watson is the contact person and she and the rest of the staff were great !!!',\n    tags: 'NNP, NNP, VBZ, DT, NN, NN, CC, PRP, CC, DT, NN, IN, DT, NN, VBD, JJ',\n  },\n  {\n    text: 'I love it.',\n    tags: 'PRP, VBP, PRP',\n  },\n  {\n    text: 'Pedicures are also great.',\n    tags: 'NNS, VBP, RB, JJ',\n  },\n  {\n    text: 'Rendy is totally amazing.',\n    tags: 'NNP, VBZ, RB, JJ',\n  },\n  {\n    text: 'She is amazing.',\n    tags: 'PRP, VBZ, JJ',\n  },\n  {\n    text: 'Excellent!',\n    tags: 'JJ',\n  },\n  {\n    text: 'Too bad they were out of the Chocolate Lava Cake.',\n    tags: 'RB, JJ, PRP, VBD, IN, IN, DT, NN, NN, NN',\n  },\n  {\n    text: 'Service was excellent!',\n    tags: 'NN, VBD, JJ',\n  },\n  {\n    text: 'Excellent Physiotherapists!',\n    tags: 'JJ, NNS',\n  },\n  {\n    text: 'This was a flavorful, enjoyable meal for both of us.',\n    tags: 'DT, VBD, DT, JJ, JJ, NN, IN, DT, IN, PRP',\n  },\n  {\n    text: 'she needs to develop a personality!',\n    tags: 'PRP, VBZ, TO, VB, DT, NN',\n  },\n  {\n    text: 'The nurses are sweet as pie and the doctor is wonderful.',\n    tags: 'DT, NNS, VBP, JJ, IN, NN, CC, DT, NN, VBZ, JJ',\n  },\n  {\n    text: 'THANK YOU !!',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: \"I choose Console Pros and I'm happy I did.\",\n    tags: 'PRP, VBP, NNP, NNPS, CC, PRP, VBP, JJ, PRP, VBD',\n  },\n  {\n    text: 'This place is bad.',\n    tags: 'DT, NN, VBZ, JJ',\n  },\n  {\n    text: 'Oh no !!',\n    tags: 'UH, UH',\n  },\n  {\n    text: 'Great',\n    tags: 'JJ',\n  },\n  {\n    text: 'Real pros',\n    tags: 'JJ, NNS',\n  },\n  {\n    text: 'Antique Lighting, Fixtures, Chicago',\n    tags: 'JJ, NN, NNS, NNP',\n  },\n  {\n    text: 'I think they have the largest collection for Chandeliers Chicago.',\n    tags: 'PRP, VBP, PRP, VBP, DT, JJS, NN, IN, NNS, NNP',\n  },\n  {\n    text: 'I wanted to try someplace new again.',\n    tags: 'PRP, VBD, TO, VB, NN, JJ, RB',\n  },\n  {\n    text: 'This place rocked.',\n    tags: 'DT, NN, VBD',\n  },\n  {\n    text: 'We also had the BBQ Spare Ribs .. good also.',\n    tags: 'PRP, RB, VBD, DT, NN, NN, NNS, JJ, RB',\n  },\n  {\n    text: 'I ordered the MOO SHU pork and it was great ..',\n    tags: 'PRP, VBD, DT, NN, NN, NN, CC, PRP, VBD, JJ',\n  },\n  {\n    text: 'Tiger Heating is awesome.',\n    tags: 'NNP, NNP, VBZ, JJ',\n  },\n  {\n    text: 'These guys were absolutely professional.',\n    tags: 'DT, NNS, VBD, RB, JJ',\n  },\n  {\n    text: 'Absolutely a wonderful company.',\n    tags: 'RB, DT, JJ, NN',\n  },\n  {\n    text: 'Cute place also',\n    tags: 'JJ, NN, RB',\n  },\n  {\n    text: 'They fixed the queso!',\n    tags: 'PRP, VBD, DT, NN',\n  },\n  {\n    text: 'Thank you thank you',\n    tags: 'VBP, PRP, VBP, PRP',\n  },\n  {\n    text: 'I had the morelias enchiladas.',\n    tags: 'PRP, VBD, DT, NN, NNS',\n  },\n  {\n    text: 'James Bateman came the day I called and fixed the problem quickly and efficiently.',\n    tags: 'NNP, NNP, VBD, DT, NN, PRP, VBD, CC, VBD, DT, NN, RB, CC, RB',\n  },\n  {\n    text: 'tricky short guy',\n    tags: 'JJ, JJ, NN',\n  },\n  {\n    text: 'The service is poor ...',\n    tags: 'DT, NN, VBZ, JJ',\n  },\n  {\n    text: 'Learn from a Cesar Gracie black belt and former ufc fighter!',\n    tags: 'VB, IN, DT, NNP, NNP, JJ, NN, CC, JJ, NNP, NN',\n  },\n  {\n    text: 'Good Pizza at a good price',\n    tags: 'JJ, NN, IN, DT, JJ, NN',\n  },\n  {\n    text: 'this is a good place',\n    tags: 'DT, VBZ, DT, JJ, NN',\n  },\n  {\n    text: 'The salesperson refused!',\n    tags: 'DT, NN, VBD',\n  },\n  {\n    text: 'Good place to be on a Sunday Night.',\n    tags: 'JJ, NN, TO, VB, IN, DT, NNP, NN',\n  },\n  {\n    text: 'Perfect Location plus',\n    tags: 'JJ, NN, CC',\n  },\n\n  {\n    text: 'Another great business bites the dust!',\n    tags: 'DT, JJ, NN, VBZ, DT, NN',\n  },\n  {\n    text: 'Enjoyed this cozy little spot with a group of 8 folks.',\n    tags: 'VBD, DT, JJ, JJ, NN, IN, DT, NN, IN, CD, NNS',\n  },\n  {\n    text: 'Service was excellent.',\n    tags: 'NN, VBD, JJ',\n  },\n  {\n    text: 'Food was excellent.',\n    tags: 'NN, VBD, JJ',\n  },\n  {\n    text: 'Wine was excellent.',\n    tags: 'NN, VBD, JJ',\n  },\n  {\n    text: 'A perfect place for a romantic dinner.',\n    tags: 'DT, JJ, NN, IN, DT, JJ, NN',\n  },\n  {\n    text: 'Great staff.',\n    tags: 'JJ, NNS',\n  },\n  {\n    text: 'Very helpful !!!!',\n    tags: 'RB, JJ',\n  },\n  {\n    text: \"I'm really thankful for the folks at HR Office.\",\n    tags: 'PRP, VBP, RB, JJ, IN, DT, NNS, IN, NNP, NNP',\n  },\n  // {\n  //   text: 'Food good, service poor',\n  //   tags: 'NN, JJ, NN, JJ',\n  // },\n  {\n    text: 'Con Garage',\n    tags: 'NN, NN',\n  },\n  {\n    text: 'Rude service',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Fantastic food served without pretense, very reasonably priced wine selections.',\n    tags: 'JJ, NN, VBN, IN, NN, RB, RB, VBN, NN, NNS',\n  },\n  {\n    text: 'Will definitely return.',\n    tags: 'MD, RB, VB',\n  },\n  {\n    text: 'Consistantly poor',\n    tags: 'RB, JJ',\n  },\n  // {\n  //   text: 'Drinks were awesome, prices reasonable, and staff friendly.',\n  //   tags: 'NNS, VBD, JJ, NNS, JJ, CC, NN, JJ',\n  // },\n  {\n    text: 'Amazing!',\n    tags: 'JJ',\n  },\n  {\n    text: 'Excellent food, fantastic wait staff',\n    tags: 'JJ, NN, JJ, NN, NN',\n  },\n  {\n    text: 'I was saddened to see the reviews that claimed World Hats Mart has poor service.',\n    tags: 'PRP, VBD, VBN, TO, VB, DT, NNS, WDT, VBD, NNP, NNPS, NNP, VBZ, JJ, NN',\n  },\n  {\n    text: 'I recommend them highly!',\n    tags: 'PRP, VBP, PRP, RB',\n  },\n  {\n    text: 'And they THRIVE to get a customer.',\n    tags: 'CC, PRP, VBP, TO, VB, DT, NN',\n  },\n  {\n    text: 'Horrible',\n    tags: 'JJ',\n  },\n  {\n    text: 'The worst Burger King restaurant !!!',\n    tags: 'DT, JJS, NNP, NNP, NN',\n  },\n  {\n    text: 'It actually had a hole in one of the slices.',\n    tags: 'PRP, RB, VBD, DT, NN, IN, CD, IN, DT, NNS',\n  },\n  {\n    text: 'There was minimal cheese and sauce and it completely lacked flavor.',\n    tags: 'EX, VBD, JJ, NN, CC, NN, CC, PRP, RB, VBD, NN',\n  },\n  {\n    text: 'This was nothing like New York style pizza !!!.',\n    tags: 'DT, VBD, NN, IN, NNP, NNP, NN, NN',\n  },\n  {\n    text: 'I love pizza and this was a complete and utter disappointment !!',\n    tags: 'PRP, VBP, NN, CC, DT, VBD, DT, JJ, CC, JJ, NN',\n  },\n  {\n    text: 'Easiest Time I ever had purchasing a car!',\n    tags: 'JJS, NN, PRP, RB, VBD, VBG, DT, NN',\n  },\n  {\n    text: 'Extremely helpful and professional',\n    tags: 'RB, JJ, CC, JJ',\n  },\n  {\n    text: 'Great Barber',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'UGH !!!',\n    tags: 'UH',\n  },\n  {\n    text: 'Took a bite, it tasted odd.',\n    tags: 'VBD, DT, NN, PRP, VBD, JJ',\n  },\n  {\n    text: 'Ugh !!',\n    tags: 'UH',\n  },\n  {\n    text: 'She also refused to get a manager.',\n    tags: 'PRP, RB, VBD, TO, VB, DT, NN',\n  },\n  {\n    text: 'Same clerk had considerable difficulty taking down a number.',\n    tags: 'JJ, NN, VBD, JJ, NN, VBG, RP, DT, NN',\n  },\n  {\n    text: 'Amazing Experience!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Jana made me feel very comfortable.',\n    tags: 'NNP, VBD, PRP, VB, RB, JJ',\n  },\n  // {\n  //   text: 'Provided me with warm blanket and has soft music playing.',\n  //   tags: 'VBD, PRP, IN, JJ, NN, CC, VBZ, JJ, NN, VBG',\n  // },\n  {\n    text: 'I really enjoyed the staff at Wessex, also the manager Sherri was always very nice and helpful.',\n    tags: 'PRP, RB, VBD, DT, NN, IN, NNP, RB, DT, NN, NNP, VBD, RB, RB, JJ, CC, JJ',\n  },\n  {\n    text: 'The fitness center was GREAT!',\n    tags: 'DT, NN, NN, VBD, JJ',\n  },\n  {\n    text: 'Everyone was pleasant and very helpful.',\n    tags: 'NN, VBD, JJ, CC, RB, JJ',\n  },\n  {\n    text: 'HEAVEN ON EARTHHHHHHH !!!!',\n    tags: 'NN, IN, NNP',\n  },\n  {\n    text: 'MUST TRY !!!',\n    tags: 'MD, VB',\n  },\n  {\n    text: 'The food continues to be very good -- deli sandwiches, homemade soups, fresh salads.',\n    tags: 'DT, NN, VBZ, TO, VB, RB, JJ, NN, NNS, JJ, NNS, JJ, NNS',\n  },\n  {\n    text: 'Love the soups.',\n    tags: 'VBP, DT, NNS',\n  },\n  {\n    text: 'A very satisfied new customer!',\n    tags: 'DT, RB, JJ, JJ, NN',\n  },\n  {\n    text: 'As a very satisfied new customer, I wholeheartedly recommend United Air Duct Cleaning.',\n    tags: 'IN, DT, RB, JJ, JJ, NN, PRP, RB, VBP, NNP, NNP, NNP, NNP',\n  },\n  {\n    text: 'Great Dude Cut!',\n    tags: 'JJ, NN, NN',\n  },\n  {\n    text: 'Great service, cool vibe, impeccable style.',\n    tags: 'JJ, NN, JJ, NN, JJ, NN',\n  },\n  {\n    text: 'I rated it 5 stars.',\n    tags: 'PRP, VBD, PRP, CD, NNS',\n  },\n  {\n    text: 'We prefer the layout of rooms and it is always clean.',\n    tags: 'PRP, VBP, DT, NN, IN, NNS, CC, PRP, VBZ, RB, JJ',\n  },\n  {\n    text: 'Luv always ..',\n    tags: 'NN, RB',\n  },\n  {\n    text: 'I purchased a nissan from this dealship.',\n    tags: 'PRP, VBD, DT, NNP, IN, DT, NN',\n  },\n  {\n    text: 'The sales men were very knowledgeable about every aspect of every car we looked at.',\n    tags: 'DT, NNS, NNS, VBD, RB, JJ, IN, DT, NN, IN, DT, NN, PRP, VBD, IN',\n  },\n  {\n    text: 'The paperwork was a very easy and smooth.',\n    tags: 'DT, NN, VBD, DT, RB, JJ, CC, JJ',\n  },\n  {\n    text: 'They have a huge inventory.',\n    tags: 'PRP, VBP, DT, JJ, NN',\n  },\n  {\n    text: 'As a nurse I know about drug seekers.',\n    tags: 'IN, DT, NN, PRP, VBP, IN, NN, NNS',\n  },\n  {\n    text: 'Wonderful Experience',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'He was incredibly informative about the options I had, giving me opinions on different treatments to choose from.',\n    tags: 'PRP, VBD, RB, JJ, IN, DT, NNS, PRP, VBD, VBG, PRP, NNS, IN, JJ, NNS, TO, VB, IN',\n  },\n  // {\n  //   text: \"There's holes everywhere in the ceiling, sewage constantly leaks through the ceiling, and the whole condition of the school is horrible.\",\n  //   tags: 'EX, VBZ, NNS, RB, IN, DT, NN, NN, RB, VBZ, IN, DT, NN, CC, DT, JJ, NN, IN, DT, NN, VBZ, JJ',\n  // },\n  {\n    text: 'We both kept trying to find something we liked.',\n    tags: 'PRP, DT, VBD, VBG, TO, VB, NN, PRP, VBD',\n  },\n  {\n    text: 'Hino Dealer of the Year',\n    tags: 'NNP, NNP, IN, DT, NNP',\n  },\n  {\n    text: 'simple but perfect',\n    tags: 'JJ, CC, JJ',\n  },\n  {\n    text: 'David is amazing',\n    tags: 'NNP, VBZ, JJ',\n  },\n  {\n    text: 'But just this week a peddle broke.',\n    tags: 'CC, RB, DT, NN, DT, NN, VBD',\n  },\n  {\n    text: \"It's pretty ridiculous!\",\n    tags: 'PRP, VBZ, RB, JJ',\n  },\n  {\n    text: 'Terrible service !!!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'EVER !!!',\n    tags: 'RB',\n  },\n  {\n    text: 'Internet Department is rude and insulting',\n    tags: 'NN, NN, VBZ, JJ, CC, JJ',\n  },\n  {\n    text: 'I am a mental health counselor and I work with variety of mental health problems.',\n    tags: 'PRP, VBP, DT, JJ, NN, NN, CC, PRP, VBP, IN, NN, IN, JJ, NN, NNS',\n  },\n  {\n    text: 'Fantastic for kids',\n    tags: 'JJ, IN, NNS',\n  },\n  {\n    text: 'WOW !!!',\n    tags: 'UH',\n  },\n  {\n    text: 'The staff is incredibly friendly and helpful and the owner, Mimmy, is an absolute angel.',\n    tags: 'DT, NN, VBZ, RB, JJ, CC, JJ, CC, DT, NN, NNP, VBZ, DT, JJ, NN',\n  },\n  {\n    text: 'From the moment you enter the restaurant, you know you are some place special.',\n    tags: 'IN, DT, NN, PRP, VBP, DT, NN, PRP, VBP, PRP, VBP, DT, NN, JJ',\n  },\n  {\n    text: 'I have lived in Buckingham Condominiums townhouse for 2 years.',\n    tags: 'PRP, VBP, VBN, IN, NNP, NNPS, NN, IN, CD, NNS',\n  },\n  {\n    text: 'I love the location and the apartment !!',\n    tags: 'PRP, VBP, DT, NN, CC, DT, NN',\n  },\n  {\n    text: 'The maintenance people are AWESOME !!!!',\n    tags: 'DT, NN, NNS, VBP, JJ',\n  },\n  {\n    text: 'And the exterminator is very nice, also.',\n    tags: 'CC, DT, NN, VBZ, RB, JJ, RB',\n  },\n  {\n    text: 'She is a pure b**** !!!',\n    tags: 'PRP, VBZ, DT, JJ, NN',\n  },\n  {\n    text: 'I would give the Wildernest inn ten stars of five!',\n    tags: 'PRP, MD, VB, DT, NNP, NNP, CD, NNS, IN, CD',\n  },\n  {\n    text: 'There were occasional bears on the deck in the morning.',\n    tags: 'EX, VBD, JJ, NNS, IN, DT, NN, IN, DT, NN',\n  },\n  {\n    text: 'Kathy and Stewart, the proprietors were the epitome of perfection.',\n    tags: 'NNP, CC, NNP, DT, NNS, VBD, DT, NN, IN, NN',\n  },\n  {\n    text: 'Delightful, hospitable, superb, cozy and comfortable.',\n    tags: 'JJ, JJ, JJ, JJ, CC, JJ',\n  },\n  {\n    text: 'junkie lube ?!',\n    tags: 'NN, NN',\n  },\n  {\n    text: 'WOW!',\n    tags: 'UH',\n  },\n  {\n    text: 'a great vacation!',\n    tags: 'DT, JJ, NN',\n  },\n  {\n    text: 'Excellent chefs are in the kitchen preparing memorable breakfasts.',\n    tags: 'JJ, NNS, VBP, IN, DT, NN, VBG, JJ, NNS',\n  },\n  {\n    text: 'The food was finger licking the bowel fantastic ..',\n    tags: 'DT, NN, VBD, NN, VBG, DT, NN, JJ',\n  },\n  {\n    text: 'I got highlights, haircut, and a blowdry.',\n    tags: 'PRP, VBD, NNS, NN, CC, DT, NN',\n  },\n  {\n    text: 'She did a great job!',\n    tags: 'PRP, VBD, DT, JJ, NN',\n  },\n  {\n    text: 'I would call it the Taj Mahal of the east coast!',\n    tags: 'PRP, MD, VB, PRP, DT, NNP, NNP, IN, DT, JJ, NN',\n  },\n  {\n    text: 'hope this helps !!',\n    tags: 'VBP, DT, VBZ',\n  },\n  {\n    text: 'That said, I hated this restaurant.',\n    tags: 'DT, VBN, PRP, VBD, DT, NN',\n  },\n  {\n    text: 'Bramen Honda was a bit of a hassle.',\n    tags: 'NNP, NNP, VBD, DT, NN, IN, DT, NN',\n  },\n  {\n    text: 'Mr. Guerra gave me a better deal without any hassles nor any type of problems.',\n    tags: 'NNP, NNP, VBD, PRP, DT, JJR, NN, IN, DT, NNS, CC, DT, NN, IN, NNS',\n  },\n  {\n    text: 'Excellent customer service !!!',\n    tags: 'JJ, NN, NN',\n  },\n  {\n    text: 'I have finally found a mechanic I trust !!',\n    tags: 'PRP, VBP, RB, VBN, DT, NN, PRP, VBP',\n  },\n  {\n    text: 'Dr. Shady',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Kelly hit the nail on the head.',\n    tags: 'NNP, VBD, DT, NN, IN, DT, NN',\n  },\n  {\n    text: 'Poor Experience',\n    tags: 'JJ, NN',\n  },\n  {\n    text: \"It's pretty combative actually.\",\n    tags: 'PRP, VBZ, RB, JJ, RB',\n  },\n  {\n    text: \"you'll love it\",\n    tags: 'PRP, MD, VB, PRP',\n  },\n  {\n    text: 'Quaint, lovely, small salon with BIG personality.',\n    tags: 'JJ, JJ, JJ, NN, IN, JJ, NN',\n  },\n  {\n    text: 'The service is fast.',\n    tags: 'DT, NN, VBZ, JJ',\n  },\n  {\n    text: 'Horrible Service!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Superb Arrangements',\n    tags: 'JJ, NNS',\n  },\n  {\n    text: 'Oh!',\n    tags: 'UH',\n  },\n  {\n    text: 'I think 90 percent of the tenants are smokers!',\n    tags: 'PRP, VBP, CD, NN, IN, DT, NNS, VBP, NNS',\n  },\n  {\n    text: 'Chicken salad salad is great too.',\n    tags: 'NNP, NN, NN, VBZ, JJ, RB',\n  },\n  {\n    text: 'Rate a church?',\n    tags: 'VB, DT, NN',\n  },\n  {\n    text: \"It's a bloody church, for chrisssake!\",\n    tags: 'PRP, VBZ, DT, JJ, NN, IN, NN',\n  },\n  {\n    text: 'The pastor at this church is cool, I met him after some holiday service.',\n    tags: 'DT, NN, IN, DT, NN, VBZ, JJ, PRP, VBD, PRP, IN, DT, NN, NN',\n  },\n  {\n    text: 'The repair went quickly and the price was extremely fair.',\n    tags: 'DT, NN, VBD, RB, CC, DT, NN, VBD, RB, JJ',\n  },\n  {\n    text: 'Roger M., Woodinville',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'I had a conversation with the woman running this place in April 2010.',\n    tags: 'PRP, VBD, DT, NN, IN, DT, NN, VBG, DT, NN, IN, NNP, CD',\n  },\n  {\n    text: 'Wow, really?',\n    tags: 'UH, RB',\n  },\n  {\n    text: 'Excellent service',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Tiffany is fabulous!',\n    tags: 'NNP, VBZ, JJ',\n  },\n  {\n    text: 'The atmosphere was nice and very clean.',\n    tags: 'DT, NN, VBD, JJ, CC, RB, JJ',\n  },\n  {\n    text: 'To start we tried the guacamole and salsa verde, it was completly flavorless.',\n    tags: 'TO, VB, PRP, VBD, DT, NN, CC, NN, NN, PRP, VBD, RB, JJ',\n  },\n  {\n    text: 'I recommend La Hacienda',\n    tags: 'PRP, VBP, NNP, NNP',\n  },\n  {\n    text: 'Might try again',\n    tags: 'MD, VB, RB',\n  },\n  {\n    text: 'the people at Fidelity Leasing were very friendly and helpful.',\n    tags: 'DT, NNS, IN, NNP, NNP, VBD, RB, JJ, CC, JJ',\n  },\n  {\n    text: 'Fantastic Service!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'It also came with free balance and rotation for the life of the tires!',\n    tags: 'PRP, RB, VBD, IN, JJ, NN, CC, NN, IN, DT, NN, IN, DT, NNS',\n  },\n  {\n    text: 'Pam Gillies',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'They actually itemized it as a DISPOSAL fee.',\n    tags: 'PRP, RB, VBD, PRP, IN, DT, NN, NN',\n  },\n  {\n    text: 'One of the worst places',\n    tags: 'CD, IN, DT, JJS, NNS',\n  },\n\n  {\n    text: 'Wife and I attempted to adopt a dog and was nothing but frustrating.',\n    tags: 'NN, CC, PRP, VBD, TO, VB, DT, NN, CC, VBD, NN, CC, JJ',\n  },\n  {\n    text: 'They refused.',\n    tags: 'PRP, VBD',\n  },\n  {\n    text: 'College is a Joke and the Salon is a JOKE!',\n    tags: 'NN, VBZ, DT, NN, CC, DT, NN, VBZ, DT, NN',\n  },\n  {\n    text: 'You can fool people',\n    tags: 'PRP, MD, VB, NNS',\n  },\n  {\n    text: 'Very nice work and friendly guys too.',\n    tags: 'RB, JJ, NN, CC, JJ, NNS, RB',\n  },\n  {\n    text: 'New training Centre is excellent',\n    tags: 'JJ, NN, NN, VBZ, JJ',\n  },\n  {\n    text: 'Perfect Practice',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Wonderful service for large group',\n    tags: 'JJ, NN, IN, JJ, NN',\n  },\n  {\n    text: 'We were also served salad and soda.',\n    tags: 'PRP, VBD, RB, VBN, NN, CC, NN',\n  },\n  {\n    text: 'wonderful',\n    tags: 'JJ',\n  },\n  // {\n  //   text: 'I decided it was time to grow up and made an appointment.',\n  //   tags: 'PRP, VBD, PRP, VBD, NN, TO, VB, RP, CC, VBD, DT, NN',\n  // },\n  {\n    text: 'One night was too much.',\n    tags: 'CD, NN, VBD, RB, JJ',\n  },\n  {\n    text: 'We were having a major problem in maintaining cash.',\n    tags: 'PRP, VBD, VBG, DT, JJ, NN, IN, VBG, NN',\n  },\n  {\n    text: 'Being a grocery shop, maintaining 5000 different products was a challenging job.',\n    tags: 'VBG, DT, NN, NN, VBG, CD, JJ, NNS, VBD, DT, JJ, NN',\n  },\n  {\n    text: 'Managing POS counter without barcoding was really a tough time.',\n    tags: 'VBG, NN, NN, IN, NN, VBD, RB, DT, JJ, NN',\n  },\n  {\n    text: 'The other ladies had a similar experience, both had nail polish on a couple of toes.',\n    tags: 'DT, JJ, NNS, VBD, DT, JJ, NN, DT, VBD, NN, NN, IN, DT, NN, IN, NNS',\n  },\n  {\n    text: 'I worked with Andrew for 2 months and did acupuncture and herbs.',\n    tags: 'PRP, VBD, IN, NNP, IN, CD, NNS, CC, VBD, NN, CC, NNS',\n  },\n  {\n    text: 'Friendly, clean and excellent location',\n    tags: 'JJ, JJ, CC, JJ, NN',\n  },\n  {\n    text: 'The staff was very helpful, and gave us good advice on day and night time activities.',\n    tags: 'DT, NN, VBD, RB, JJ, CC, VBD, PRP, JJ, NN, IN, NN, CC, NN, NN, NNS',\n  },\n  {\n    text: 'The location is really stellar!',\n    tags: 'DT, NN, VBZ, RB, JJ',\n  },\n  {\n    text: 'I left with a case of BRAWLER !!!!!',\n    tags: 'PRP, VBD, IN, DT, NN, IN, NNP',\n  },\n  {\n    text: 'Liars, negative stars!',\n    tags: 'NNS, JJ, NNS',\n  },\n  {\n    text: 'Great Job',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'The Peterson Family',\n    tags: 'DT, NNP, NN',\n  },\n  {\n    text: 'Poor service',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Really ??',\n    tags: 'RB',\n  },\n  {\n    text: 'I beg to differ.',\n    tags: 'PRP, VBP, TO, VB',\n  },\n  {\n    text: 'Again, a great outing for the kids, a frustration for an out of town climber.',\n    tags: 'RB, DT, JJ, NN, IN, DT, NNS, DT, NN, IN, DT, IN, IN, NN, NN',\n  },\n  {\n    text: 'Wow!',\n    tags: 'UH',\n  },\n  {\n    text: 'Thank you Doctor Gonzales, Doctor Stout, Eva Marie and the entire staff!',\n    tags: 'VBP, PRP, NNP, NNP, NNP, NNP, NNP, NNP, CC, DT, JJ, NN',\n  },\n  {\n    text: 'Texas Roadhouse is WAY better !!',\n    tags: 'NNP, NNP, VBZ, RB, JJR',\n  },\n  {\n    text: 'Spay and neuter service.',\n    tags: 'NN, CC, NN, NN',\n  },\n  {\n    text: 'They recently surprised me a larger order.',\n    tags: 'PRP, RB, VBD, PRP, DT, JJR, NN',\n  },\n  {\n    text: 'They have a customer for life in us!',\n    tags: 'PRP, VBP, DT, NN, IN, NN, IN, PRP',\n  },\n  {\n    text: 'sheisters',\n    tags: 'NNS',\n  },\n  {\n    text: 'I paid 2 k cash for a truck with a bad motor.',\n    tags: 'PRP, VBD, CD, NN, NN, IN, DT, NN, IN, DT, JJ, NN',\n  },\n  {\n    text: \"It's an adorable little store filled with lots of stationery goodness.\",\n    tags: 'PRP, VBZ, DT, JJ, JJ, NN, VBN, IN, NNS, IN, NN, NN',\n  },\n  {\n    text: 'Believe me.',\n    tags: 'VB, PRP',\n  },\n  {\n    text: 'This is THE premier university in Virginia.',\n    tags: 'DT, VBZ, DT, JJ, NN, IN, NNP',\n  },\n  {\n    text: 'It is also the largest.',\n    tags: 'PRP, VBZ, RB, DT, JJS',\n  },\n  {\n    text: 'VCU has the # 1 art school in America, and EXCELS in healthcare and medical schooling.',\n    tags: 'NNP, VBZ, DT, NN, CD, NN, NN, IN, NNP, CC, VBZ, IN, NN, CC, JJ, NN',\n  },\n  {\n    text: 'A slice of heaven in winter park',\n    tags: 'DT, NN, IN, NN, IN, NNP, NNP',\n  },\n  {\n    text: 'Nice selection, very clean, friendly staff!',\n    tags: 'JJ, NN, RB, JJ, JJ, NN',\n  },\n  {\n    text: 'The staff are very friendly and conscientious.',\n    tags: 'DT, NNS, VBP, RB, JJ, CC, JJ',\n  },\n  {\n    text: 'The selection of meats, veggies and sauces is awesome too!',\n    tags: 'DT, NN, IN, NNS, NNS, CC, NNS, VBZ, JJ, RB',\n  },\n  {\n    text: 'Meats are kept VERY cold, seafood smells fresh and the serving bar is VERY clean.',\n    tags: 'NNS, VBP, VBN, RB, JJ, NN, VBZ, JJ, CC, DT, NN, NN, VBZ, RB, JJ',\n  },\n  {\n    text: 'Great Cookies, Cakes, and Customer Service',\n    tags: 'JJ, NNS, NNS, CC, NN, NN',\n  },\n  {\n    text: 'I am a college student.',\n    tags: 'PRP, VBP, DT, NN, NN',\n  },\n  {\n    text: 'I can tell she really cares and wants to help.',\n    tags: 'PRP, MD, VB, PRP, RB, VBZ, CC, VBZ, TO, VB',\n  },\n  {\n    text: 'I am SO GLAD to have found Dr. Liau.',\n    tags: 'PRP, VBP, RB, JJ, TO, VB, VBN, NNP, NNP',\n  },\n  {\n    text: 'Bowtie has filled that role nicely.',\n    tags: 'NNP, VBZ, VBN, DT, NN, RB',\n  },\n  {\n    text: 'A great cinema in a great location.',\n    tags: 'DT, JJ, NN, IN, DT, JJ, NN',\n  },\n  {\n    text: 'Thank you, Bowtie!',\n    tags: 'VBP, PRP, NNP',\n  },\n  {\n    text: 'Great name for a great store!',\n    tags: 'JJ, NN, IN, DT, JJ, NN',\n  },\n  {\n    text: 'Definitely go see them!',\n    tags: 'RB, VB, VB, PRP',\n  },\n  {\n    text: 'Will look beautiful.',\n    tags: 'MD, VB, JJ',\n  },\n  {\n    text: 'Are they serious?',\n    tags: 'VBP, PRP, JJ',\n  },\n  {\n    text: 'Thank you!',\n    tags: 'VBP, PRP',\n  },\n  {\n    text: 'The food is excellent, the serivce is horrible.',\n    tags: 'DT, NN, VBZ, JJ, DT, NN, VBZ, JJ',\n  },\n  {\n    text: 'I was booked for 2 nights at this hotel in Oct 2007.',\n    tags: 'PRP, VBD, VBN, IN, CD, NNS, IN, DT, NN, IN, NNP, CD',\n  },\n  {\n    text: 'Worst Apartments EVER',\n    tags: 'JJS, NNS, RB',\n  },\n  {\n    text: 'I have worked with Ted Jurek at Decor and You, and it started out as a decent experience.',\n    tags: 'PRP, VBP, VBN, IN, NNP, NNP, IN, NNP, CC, NNP, CC, PRP, VBD, RP, IN, DT, JJ, NN',\n  },\n  {\n    text: 'I figure I would give this company a chance.',\n    tags: 'PRP, VBP, PRP, MD, VB, DT, NN, DT, NN',\n  },\n  {\n    text: 'This company is way too expensive with nothing to show for it.',\n    tags: 'DT, NN, VBZ, RB, RB, JJ, IN, NN, TO, VB, IN, PRP',\n  },\n  {\n    text: 'Horrible.',\n    tags: 'JJ',\n  },\n  {\n    text: 'Horrible.',\n    tags: 'JJ',\n  },\n  {\n    text: 'Imagine a hotel having problems with people.',\n    tags: 'VB, DT, NN, VBG, NNS, IN, NNS',\n  },\n  {\n    text: \"He said he's had a long and bad day.\",\n    tags: 'PRP, VBD, PRP, VBZ, VBN, DT, JJ, CC, JJ, NN',\n  },\n  {\n    text: 'I came to find out the person was the hotel OWNER also.',\n    tags: 'PRP, VBD, TO, VB, RP, DT, NN, VBD, DT, NN, NN, RB',\n  },\n  {\n    text: 'I thought the UK was completely devoid of good NYC style pizza.',\n    tags: 'PRP, VBD, DT, NNP, VBD, RB, JJ, IN, JJ, NNP, NN, NN',\n  },\n  {\n    text: 'Good food, good wait staff, poor management',\n    tags: 'JJ, NN, JJ, NN, NN, JJ, NN',\n  },\n  {\n    text: 'Sorry for interrupting I guess.',\n    tags: 'JJ, IN, VBG, PRP, VBP',\n  },\n  {\n    text: 'IT HAS VERY GOOD PRICES.',\n    tags: 'PRP, VBZ, RB, JJ, NNS',\n  },\n  {\n    text: 'Identity Theft',\n    tags: 'NN, NN',\n  },\n  {\n    text: 'A girl would show up, then a guy in a nice car would show up.',\n    tags: 'DT, NN, MD, VB, RP, RB, DT, NN, IN, DT, JJ, NN, MD, VB, RP',\n  },\n  {\n    text: 'Short time later the guy would leave, then the girl.',\n    tags: 'JJ, NN, RBR, DT, NN, MD, VB, RB, DT, NN',\n  },\n  {\n    text: 'It sucked having an SUV.',\n    tags: 'PRP, VBD, VBG, DT, NN',\n  },\n  {\n    text: 'Bugs were a small problem, nothing too bad.',\n    tags: 'NNS, VBD, DT, JJ, NN, NN, RB, JJ',\n  },\n  {\n    text: 'I hope I can return the favor in the future!',\n    tags: 'PRP, VBP, PRP, MD, VB, DT, NN, IN, DT, NN',\n  },\n  {\n    text: 'Alan Grissom',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Room ok.',\n    tags: 'NN, JJ',\n  },\n  {\n    text: 'THIS STORY IS 100 % TRUE.',\n    tags: 'DT, NN, VBZ, CD, NN, JJ',\n  },\n  {\n    text: 'Unlike Saratoga.',\n    tags: 'IN, NNP',\n  },\n  {\n    text: '- R. Morris.',\n    tags: 'NNP, NNP',\n  },\n  {\n    text: 'Favorite place in Tampa.',\n    tags: 'JJ, NN, IN, NNP',\n  },\n  {\n    text: 'AMAZING!',\n    tags: 'JJ',\n  },\n  {\n    text: 'I frequent this resturant on a weekly basis but usally only for lunch.',\n    tags: 'PRP, VBP, DT, NN, IN, DT, JJ, NN, CC, RB, RB, IN, NN',\n  },\n  {\n    text: 'We were greeted again and sat promptly.',\n    tags: 'PRP, VBD, VBN, RB, CC, VBD, RB',\n  },\n  {\n    text: 'AMAZING!',\n    tags: 'JJ',\n  },\n  {\n    text: 'I have to say the value of this place always amazes me.',\n    tags: 'PRP, VBP, VB, VB, DT, NN, IN, DT, NN, RB, VBZ, PRP',\n  },\n  {\n    text: 'Great work and honest establishment!',\n    tags: 'JJ, NN, CC, JJ, NN',\n  },\n  {\n    text: 'The service was excellent and personable.',\n    tags: 'DT, NN, VBD, JJ, CC, JJ',\n  },\n  {\n    text: 'We made the decision for a couple of reasons.',\n    tags: 'PRP, VBD, DT, NN, IN, DT, NN, IN, NNS',\n  },\n  {\n    text: 'Excellent service and quality',\n    tags: 'JJ, NN, CC, NN',\n  },\n  {\n    text: 'Friendly staff, but definitely some problems',\n    tags: 'JJ, NN, CC, RB, DT, NNS',\n  },\n  {\n    text: 'May, 2009.',\n    tags: 'NNP, CD',\n  },\n  {\n    text: 'Next day got moved into another room, on the same floor with other wedding guests.',\n    tags: 'JJ, NN, VBD, VBN, IN, DT, NN, IN, DT, JJ, NN, IN, JJ, NN, NNS',\n  },\n  {\n    text: 'The service stunk.',\n    tags: 'DT, NN, VBD',\n  },\n  {\n    text: 'We were standing in the store for 20 minutes to simply pick up an order.',\n    tags: 'PRP, VBD, VBG, IN, DT, NN, IN, CD, NNS, TO, RB, VB, RP, DT, NN',\n  },\n  {\n    text: 'Terrible Service',\n    tags: 'JJ, NN',\n  },\n  {\n    text: \"One of the worst experiences I've ever had with a auto repair shop.\",\n    tags: 'CD, IN, DT, JJS, NNS, PRP, VBP, RB, VBN, IN, DT, NN, NN, NN',\n  },\n  {\n    text: 'Bad for business.',\n    tags: 'JJ, IN, NN',\n  },\n  {\n    text: 'The Salon Experience from Hell',\n    tags: 'DT, NN, NN, IN, NNP',\n  },\n  {\n    text: 'Absolute Nightmare!',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Very unhappy ...',\n    tags: 'RB, JJ',\n  },\n  {\n    text: 'Sketchy, right?',\n    tags: 'JJ, JJ',\n  },\n  {\n    text: 'I waited.',\n    tags: 'PRP, VBD',\n  },\n  {\n    text: 'And waited.',\n    tags: 'CC, VBD',\n  },\n  {\n    text: 'Poor Service',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Excellent Driving School',\n    tags: 'JJ, NN, NN',\n  },\n  {\n    text: '....... the rest was history!',\n    tags: 'DT, NN, VBD, NN',\n  },\n  {\n    text: 'And every entree we have ordered is perfect.',\n    tags: 'CC, DT, NN, PRP, VBP, VBN, VBZ, JJ',\n  },\n  {\n    text: 'The staff is also just so pleasant to deal with.',\n    tags: 'DT, NN, VBZ, RB, RB, RB, JJ, TO, VB, IN',\n  },\n  {\n    text: 'Karla Ferguson-Granger',\n    tags: 'NNP, NNP, NNP',\n  },\n  {\n    text: 'I had a surgery date of July 17, 2008.',\n    tags: 'PRP, VBD, DT, NN, NN, IN, NNP, CD, CD',\n  },\n  {\n    text: 'He said it sarcastically.',\n    tags: 'PRP, VBD, PRP, RB',\n  },\n  {\n    text: \"Dumbest F'ers ever\",\n    tags: 'JJS, NNS, RB',\n  },\n  {\n    text: \"And he says: You're at Warwick in Pennsylvania?\",\n    tags: 'CC, PRP, VBZ, PRP, VBP, IN, NNP, IN, NNP',\n  },\n  {\n    text: 'I say, NO, I am at the RADISON WARWICK HOTEL in Rittenhouse Square.',\n    tags: 'PRP, VBP, UH, PRP, VBP, IN, DT, NNP, NNP, NNP, IN, NNP, NNP',\n  },\n  {\n    text: 'He says, I have to have an exact ADDRESS.',\n    tags: 'PRP, VBZ, PRP, VBP, VB, VB, DT, JJ, NN',\n  },\n  {\n    text: 'We heard nothing.',\n    tags: 'PRP, VBD, NN',\n  },\n  {\n    text: 'I WAS calling about one board !!',\n    tags: 'PRP, VBD, VBG, IN, CD, NN',\n  },\n  {\n    text: 'I put the coffee thing in hot water and settled for a cup of weak coffee.',\n    tags: 'PRP, VBD, DT, NN, NN, IN, JJ, NN, CC, VBD, IN, DT, NN, IN, JJ, NN',\n  },\n  {\n    text: 'Free parking.',\n    tags: 'JJ, NN',\n  },\n  {\n    text: 'Quit with the overstatements!',\n    tags: 'VB, IN, DT, NNS',\n  },\n  {\n    text: 'Do other brides fall for this ???',\n    tags: 'VBP, JJ, NNS, VB, IN, DT',\n  },\n]\n"
  },
  {
    "path": "tests/two/tagger/actors.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/actors] '\n\nconst arr = [\n  'accountant',\n  'air traffic controller',\n  'architect',\n  'artist',\n  'attorney',\n  'banker',\n  'bartender',\n  'barber',\n  'bookkeeper',\n  'builder',\n  'businessman',\n  'businesswoman',\n  'businessperson',\n  'butcher',\n  'carpenter',\n  'cashier',\n  'chef',\n  // 'coach',\n  'dental hygienist',\n  'dentist',\n  'designer',\n  'developer',\n  'dietician',\n  'doctor',\n  'economist',\n  'editor',\n  'electrician',\n  'chairman',\n  'chairwoman',\n  'Anesthesiologist',\n  'Anesthesiology Fellow',\n  'Certified Registered Nurse Anesthetist',\n  'Registered Respiratory Therapist',\n  'Anesthesiologist Assistant',\n  'Cardiologist',\n  'Cardiology Physician Assistant',\n  'Cardiac Scientist',\n  'Cardiovascular Technologist',\n  'Intensivist',\n  'Neonatologist',\n  // 'Critical Care Medicine Physician Assistant',\n  // 'Critical Care Nurse Practitioner',\n  // 'Critical Care Registered Nurse',\n  // 'Critical Care Respiratory Therapist',\n  'Dentist',\n  'Dental Hygienist',\n  'Dental Assistant',\n  'Dental Technician',\n  'Dermatologist',\n  'Dermatology Physician Assistant',\n  'Dietitian',\n  'Emergency physician',\n  'Emergency Physician Assistant',\n  'Emergency Nurse Practitioner',\n  'Chief brand officer',\n  'Chief design officer',\n  \"Archaeologist\",\n  \"Astronaut\",\n  \"Astronomer\",\n  \"Biochemist\",\n  \"Biologist\",\n  \"Chemist\",\n  \"Ecologist\",\n  \"Forester\",\n  \"Geographer\",\n  \"Naturalist\",\n  \"Oceanographer\",\n  \"Paleontologist\",\n  \"Pathologist\",\n  \"Anthropologist\",\n  \"Economist\",\n  \"Historian\",\n  \"Linguist\",\n  \"Political scientist\",\n  \"Sociologist\",\n  \"Urban planner\",\n  \"Biologist\",\n  \"Botanist\",\n  \"Clinical pharmaceutical scientist\",\n  \"Herpetologist\",\n  \"Medical laboratory scientist\",\n  \"Microbiologist\",\n  \"Neuroscientist\",\n  \"Physician\",\n  \"Veterinarian\",\n  \"Zoologist\",\n  \"Computer operator\",\n  \"Computer repair technician\",\n  \"Computer scientist\",\n  \"Computer analyst\",\n  \"Application analyst\",\n  \"Scrum master\",\n  \"Security engineer\",\n  \"Software analyst\",\n  \"Software architect\",\n  \"Software engineer\",\n  \"Software project manager\",\n  \"Software quality analyst\",\n  \"Software test engineer\",\n  \"Solution architect\",\n  \"Support technician\",\n  \"System administrator\",\n  \"Systems analyst\",\n  // \"Systems architect\",\n  \"User experience designer\",\n  \"User interaction designer\",\n  \"User researcher\",\n  \"Video Game Developer\",\n  \"Visual designer\",\n  \"Virtual Assistant\",\n  \"Web developer\",\n  \"Website administrator\",\n  \"Arborist\",\n  \"Auto mechanic\",\n  \"Construction worker\",\n  \"Factory worker\",\n  \"station attendant\",\n  \"Foreman\",\n  \"Mechanic\",\n  \"Moldmaker\",\n  \"Patternmaker\",\n  \"Plant operator\",\n  \"Plumber\",\n  \"Shop foreman\",\n  \"Stationary engineer\",\n  \"Welder\",\n  \"Woodworker\",\n  \"Dressmaker\",\n  \"Embroiderer\",\n  \"Author\",\n  \"Blogger\",\n  \"Book coach\",\n  \"Commissioning editor\",\n  \"Copy editor\",\n  \"Creative consultant\",\n  \"Dog writer\",\n  \"Freelancer\",\n  \"Ghostwriter\",\n  \"Script coordinator\",\n  \"Script doctor\",\n  \"Songwriter\",\n  \"Speechwriter\",\n  \"Staff writer\",\n  \"Technical writer\",\n  \"Writer\",\n  \"poet\",\n  \"Screenwriter\",\n  // \"Investigative Journalist\",\n  \"Journalist\",\n  // \"Literary editor\",\n  \"Producer\",\n  \"Director\",\n  \"Playwright\",\n  \"Scenographer\",\n  \"Lighting designer\",\n  \"Costume designer\",\n  \"Set designer\",\n  \"Sound designer\",\n  \"Composer\",\n  \"Music director\",\n  \"Choreographer\",\n  \"Fight director\",\n  \"Intimacy coordinator\",\n  \"Production manager\",\n  \"Showrunner\",\n  \"Costume designer\",\n  \"voice actor\",\n  \"weatherman\",\n  \"Actor\",\n  \"Athlete\",\n  \"Beatboxer\",\n  \"Circus performer\",\n  \"Clown\",\n  // \"Club Hostess\",\n  \"Comedian\",\n  \"Dancer\",\n  \"Drag queen\",\n  \"Drag king\",\n  \"Emcee\",\n  \"Filmmaker\",\n  \"Flair bartender\",\n  \"Geisha\",\n  \"Illusionist\",\n  \"Internet celebrity\",\n  \"Itinerant poet\",\n  \"Japanese idol\",\n  \"Magician\",\n  // \"Master of ceremonies\",\n  \"Mime\",\n  \"Monologist\",\n  \"Musician\",\n  \"Painter\",\n  \"Party princess\",\n  \"Performer\",\n  \"Photographer\",\n  \"Podcaster\",\n  \"Poet\",\n  \"Radio personality\",\n  \"Rapper\",\n  \"Ring girl\",\n  \"Ringmaster\",\n  \"Shamakhi dancers\",\n  \"Showgirl\",\n  \"Showman\",\n  \"Showrunner\",\n  \"Singer\",\n  \"Streamer\",\n  \"Street performer\",\n  \"Stunt performer\",\n  \"Theatre practitioner\",\n  \"TikToker\",\n  \"TV celebrity\",\n  \"Writer\",\n  \"YouTuber\",\n  \"Choreographer\",\n  \"Dance critic\",\n  \"Dance historian\",\n  \"Dance scholar\",\n  \"Dance therapist\",\n  \"Ballet historian\",\n  \"Ballet master\",\n  \"ballet dancer\",\n  \"Exotic dancer\",\n  \"showgirl\",\n  \"Accessory designer\",\n  \"Advertising designer\",\n  \"Animator\",\n  \"Architect\",\n  \"Art administrator\",\n  \"Art therapist\",\n  \"Artisan\",\n  \"Ceramics artist\",\n  \"Chief creative officer\",\n  \"Colorist\",\n  \"Comedian\",\n  \"Concept Artist\",\n  \"Curator\",\n  \"Dancer\",\n  \"Design director\",\n  \"Design strategist\",\n  \"Essayist\",\n  \"Event planner\",\n  \"Fashion designer\",\n  \"Fine artist\",\n  \"Game designer\",\n  \"Graphic designer\",\n  \"Hairstylist\",\n  \"Illustrator\",\n  \"Interior designer\",\n  \"Jewellery designer\",\n  \"Lyricist\",\n  // \"Make-up artist\",\n  \"Marine designer\",\n  \"Media designer\",\n  \"Musician\",\n  \"Party planner\",\n  \"Photographer\",\n  \"Photojournalist\",\n  \"Production designer\",\n  \"Sculptor\",\n  \"Set decorator\",\n  \"Singer\",\n  \"Tattoo artist\",\n  \"Web designer\",\n  \"Wedding planner\",\n  \"Writer\",\n  'Taxicab driver',\n  'Test driver',\n  'Train driver',\n  'Truck driver',\n  'Bus driver',\n  'Chauffeur',\n  'pilot',\n  'Customer representative',\n  'Cadet',\n  'Captain',\n  'Police captain',\n  'Chief constable',\n  'Chief deputy',\n  'Chief inspector',\n  'Chief of police',\n  'Chief sergeant',\n  'Chief superintendent',\n  'Circle officer',\n  'Colonel',\n  'Commander',\n  'Deputy chief constable',\n  'Deputy commissioner',\n  'Detective',\n  'Inspector',\n  // 'Director general',\n  'Senior inspector',\n  'Senior sergeant',\n  'Senior staff sergeant',\n  'Senior station inspector',\n  'Senior trooper',\n  'Sergeant',\n  'Special agent',\n  'Special constable',\n  'Staff sergeant',\n  'Station inspector',\n  'Station sergeant',\n  'Assistant superintendent',\n  'Fire marshal',\n]\n//after we change pos, untag propernoun\ntest('tag-actors', function (t) {\n  arr.forEach(str => {\n    const m = nlp(str).match('#Actor+')\n    t.equal(m.text(), str, here + str)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/tagger/inline.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/inline] '\n\ntest('inline tagging linear:', function (t) {\n  const r = nlp('one two three four')\n\n  r.match('one two three').tag('. #Person .')\n  let found = r.match('#Person').out('normal')\n  t.equal(found, 'two', here + 'skip-tag-skip')\n\n  r.match('one two three').tag('#FooBar .')\n  found = r.match('#FooBar').out('normal')\n  t.equal(found, 'one', here + 'tag-skip-null')\n\n  r.match('two three').tag('#TwoTag #ThreeTag #FourTag')\n  t.equal(r.match('#TwoTag').out('normal'), 'two', here + 'two-is-two')\n  t.equal(r.match('#ThreeTag').out('normal'), 'three', here + 'three-is-three')\n  t.equal(r.match('#FourTag').out('normal'), '', here + 'four is ignored')\n\n  t.end()\n})\n\ntest('compound tags from lexicon:', function (t) {\n  const doc = nlp('it was cold')\n  const arr = doc.match('#Verb+')\n  t.equal(arr.length, 1, here + 'one verb')\n  t.equal(arr.has('#PastTense'), true, here + 'past-tense')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/tagger/lexicon.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/lexicon] '\n\ntest('adjusted lexicon:', function (t) {\n  //place new words\n  let lexicon = {\n    geneva: 'Person',\n    lkjj: 'Adjective',\n    'donkey kong': 'City',\n  }\n\n  const arr = [\n    ['geneva is nice', '#Person #Copula #Adjective'],\n    ['he is lkjj', '#Pronoun #Copula #Adjective'],\n    ['donkey kong wins the award', '#City #City #Verb #Determiner #Noun'],\n  ]\n  arr.forEach(function (a) {\n    const doc = nlp(a[0], lexicon)\n    t.equal(doc.has(a[1]), true, here + a[0])\n  })\n  //\n  //set gender from lexicon\n  const doc = nlp('Abbi', lexicon)\n  t.equal(doc.has('#FemaleName'), true, here + 'abbi-female')\n  //set as male:\n  lexicon = {\n    kelly: 'MaleName',\n  }\n  const doc2 = nlp('Kelly', lexicon)\n  t.equal(doc2.has('#MaleName'), true, here + 'kelly-male')\n\n  //gender follows lumping\n  const doc3 = nlp('Kelly Gruber', lexicon)\n  t.equal(doc3.has('#MaleName #LastName'), true, here + 'kelly-gruber')\n\n  t.end()\n})\n\ntest('allow orthagonal tags:', function (t) {\n  const doc = nlp('i was farming', { farming: 'Foo' })\n  const m = doc.match('farming')\n  t.equal(m.has('#Foo'), true, here + 'has new tag')\n  t.equal(m.has('#Gerund'), true, here + 'has normal tag')\n  t.end()\n})\n\ntest('look for invalid lexicon items:', function (t) {\n  const lex = nlp.world().model.one.lexicon\n  Object.keys(lex).forEach(k => {\n    if (k.trim() !== k) {\n      t.fail(here + `'${k}' has whitespace`)\n    }\n    if (k.match(/[.,-]/) && lex[k] !== 'Emoticon') {\n      t.fail(here + `'${k}' has punctuation`)\n    }\n  })\n  t.end()\n})\n\ntest('all multi-word items get tagged:', function (t) {\n  const lex = nlp.world().model.one.lexicon\n  Object.keys(lex).forEach(k => {\n    const tag = lex[k]\n    if (!k.match(' ') || typeof tag !== 'string' || tag === 'FutureTense') {\n      return\n    }\n    const doc = nlp(k)\n    if (!doc.has('^#' + tag + '+$')) {\n      t.fail(here + `lex changed : '${k}'`)\n    }\n    if (doc.isFrozen().found) {\n      t.fail(here + ` '${k}' still frozen`)\n    }\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/tagger/multi.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/multi] '\n\nconst lexicon = {\n  'Jardas al Abid': 'City',\n  'Umm Ar Rizam': 'Place',\n  Tobruk: 'Place',\n}\n\ntest('user-lex-with-hyphenation:', function (t) {\n  const sentence =\n    'A suicide attack hit the centre of Jardas-al-Abid killing one person (and the attacker) and injuring more than twenty.'\n  const found = nlp(sentence, lexicon).match('#Place+')\n  t.equal('jardas al abid', found.eq(0).text('normal'), here + 'found-hyphen')\n  t.equal(lexicon, lexicon, here + 'lexicon-unchanged')\n  t.end()\n})\n\ntest('user-lex-with-possessive form:', function (t) {\n  const sentence =\n    \"A suicide attack hit Jardas al Abid's area killing one person (and the attacker) and injuring more than twenty.\"\n  const found = nlp(sentence, lexicon).match('#Place+')\n  t.equal(\"jardas al abid's\", found.eq(0).text('normal'), here + 'found-apostrophe')\n  t.equal(lexicon, lexicon, here + 'lexicon-unchanged')\n  t.end()\n})\n\ntest('user-lex-with-proper name in front:', function (t) {\n  const sentence =\n    \"A suicide attack hit Lybia's Jardas al Abid city killing one person (and the attacker) and injuring more than twenty.\"\n  const found = nlp(sentence, lexicon).match('#City+')\n  t.equal('jardas al abid', found.eq(0).text('normal'), here + 'found-proper-name')\n  t.equal(lexicon, lexicon, here + 'lexicon-unchanged')\n  t.end()\n})\n\ntest('user-lex-with-punctuation:', function (t) {\n  const sentence =\n    'A suicide attack hit Jardas al Abid, which killed one person (and the attacker) and injured more than twenty.'\n  const found = nlp(sentence, lexicon).match('#Place+')\n  t.equal('jardas al abid', found.eq(0).text('normal'), here + 'found-comma')\n  t.equal(lexicon, lexicon, here + 'lexicon-unchanged')\n  t.end()\n})\n\n// test('no tagging of multi-lexion:', function (t) {\n//   let arr = ['he man', 'bill gates', 'kid cudi', 'snow white', 'spider-man', 'doctor who','    'iron man']\n//   arr.forEach(str => {\n//     t.equal(nlp(str).has('#Place #Place'), true, here + str)\n//   })\n//   t.end()\n// })\n"
  },
  {
    "path": "tests/two/tagger/number-match.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/number-match] '\n\nconst arr = [\n  ['¥', '#Currency'],\n  ['pence', '#Currency'],\n  ['seven', '#Value'],\n  ['seventeen', '#Value'],\n  ['twenty', '#Value'],\n  ['thousand', '#Value'],\n  ['eighteenth', '#Value'],\n  ['2tbsp', '#Value #Unit'],\n  ['425-1231', '#PhoneNumber'],\n  ['823-425-1231', '#PhoneNumber'],\n  ['823 425-1231', '#PhoneNumber'],\n  ['(823) 425-1231', '#PhoneNumber'],\n  ['+1-123-444-5655', '#PhoneNumber'],\n  ['fifth', '#Value'],\n  ['3 trainers', '#Value #Noun'],\n  ['5 buses', '#Value #Noun'],\n  ['101010101010101010101010101010101010101010', '#NumericValue'],\n  ['one dream', '#Value #Singular'],\n  ['two dreams', '#Value #Plural'],\n  ['100+ rumours', '#Value #Plural'],\n\n  ['16.125', '#Cardinal'],\n  ['+160.125', '#Cardinal'],\n  ['-0.1', '#Cardinal'],\n  ['.13', '#Cardinal'],\n  ['(127.54)', '#Cardinal'],\n  // ['(127.54)', '#Money'],\n\n  ['16.125th', '#Ordinal'],\n  ['161,253th', '#Ordinal'],\n  ['+160.125th', '#Ordinal'],\n  ['-0.2nd', '#Ordinal'],\n  ['(127.54th)', '#Ordinal'],\n\n  ['-0.1%', '#Percent'],\n  ['.1%', '#Percent'],\n  ['+2,340.91%', '#Percent'],\n  ['-2340%', '#Percent'],\n\n  ['$-2340.01', '#Money'],\n  ['-$2340', '#Money'],\n  ['+$2340.01', '#Money'],\n  ['$2340.01', '#Money'],\n  ['£1,000,000', '#Money'],\n  ['$19', '#Money'],\n  ['($127.54)', '#Money'],\n  ['2,000₽', '#Money'],\n  ['2000₱', '#Money'],\n  ['2000௹', '#Money'],\n  ['₼2000', '#Money'],\n  ['2.23₽', '#Money'],\n  ['₺50', '#Money'],\n  ['$47.5m', '#Money'],\n  ['$47.5bn', '#Money'],\n  // ['1,000,000p', '#Cardinal'],\n\n  // ['10 + 9', '#Value #Symbol #Value'],\n  // ['2 * 90 = 180', '#Value #Symbol #Value #Symbol #Value'],\n  // ['one - seventy-six', '#Value #Symbol #Value'],\n  ['five hundred feet', '#Value+ #Unit'],\n  ['50 square feet', '#Value+ #Unit+'],\n  ['90 hertz', '#Value #Unit'],\n  ['two books', '#Value #Noun'],\n  ['two hundred', '#Value #Value'],\n  ['4 hundred and ten', '#Value+'],\n  ['4 and a half million', '#Value+'],\n  ['499 thousand', '#Value+'],\n  ['499', '#Value'],\n  ['4,899', '#Value'],\n  // ['10.-200 ug/L', '#Value to #Value #Unit'],\n  // ['10-200 ug/L', '#Value to #Value #Unit'],\n  // ['0.5-0.2 mg/L', '#Value to #Value #Unit'],\n  [`june 1992`, '#Month #Year'],\n  [`before 1992`, 'before #Year'],\n  [`1992 in astronomy`, '#Year in #Noun'],\n  [`1992 dalmations`, '!#Year #Plural'],\n  // numberrange\n  ['it was 1-2 kg woooh', '#Noun #PastTense #NumberRange #NumberRange #NumberRange #Unit #Expression'],\n  ['1-1', '#NumberRange #NumberRange #NumberRange'],\n  ['12-12', '#NumberRange #NumberRange #NumberRange'],\n  ['123-123', '#NumberRange #NumberRange #NumberRange'],\n  ['1234-1234', '#NumberRange+'],\n\n]\ntest('match:', function (t) {\n  arr.forEach(function (a) {\n    const [str, match] = a\n    const doc = nlp(str).compute('tagRank')\n    const tags = doc.json()[0].terms.map(term => term.tagRank[0])\n    const m = doc.match(match)\n    const msg = `'${(str + \"' \").padEnd(20, ' ')}  - '${tags.join(', ')}'`\n    t.equal(m.text(), doc.text(), here + msg)\n  })\n  t.end()\n})"
  },
  {
    "path": "tests/two/tagger/penn.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nimport penn from './_pennSample.js'\nconst here = '[two/penn] '\n\nconst softMapping = {\n  CC: 'Conjunction',\n  CD: 'Cardinal',\n  DT: 'Determiner',\n  EX: 'There', //existential 'there'\n  FW: 'Expression',\n  IN: 'Preposition',\n  JJ: 'Adjective',\n  JJR: 'Comparative',\n  JJS: 'Superlative',\n  MD: 'Modal',\n  NN: 'Noun',\n  NNS: 'Noun', //'Plural',\n  NNP: 'Noun',\n  NNPS: 'Noun',\n  POS: 'Possessive',\n  PRP: 'Pronoun',\n  PRP$: 'Possessive',\n  RB: 'Adverb',\n  RP: 'Verb', //phrasal particle\n  RBR: 'Comparative',\n  RBS: 'Superlative',\n  TO: 'Conjunction',\n  UH: 'Expression',\n  VB: 'Verb',\n  VBD: 'Verb',\n  VBG: 'Gerund',\n  VBN: 'Verb', // past participle\n  VBP: 'Verb', // non-3rd person singular present\n  VBZ: 'Verb', // 3rd person singular present\n  WDT: 'Determiner',\n  WP: 'Pronoun',\n  WP$: 'Possessive',\n  WRB: 'Adverb',\n  PDT: 'Noun', //predeterminer\n  SYM: 'Noun', //symbol\n  NFP: 'Noun', //\n}\n\ntest('pennTreebank-test:', function (t) {\n  const all = []\n  penn.forEach((sentence, index) => {\n    sentence.tags = sentence.tags.split(', ')\n\n    const doc = nlp(sentence.text)\n    let perfect = true\n    let msg = `'` + sentence.text.substring(0, 55) + `..   -  `\n\n    const terms = doc.json()[0].terms\n    if (doc.length !== 1) {\n      perfect = false\n      msg = 'one sentence #' + index\n    }\n    if (terms.length !== sentence.tags.length) {\n      perfect = false\n      msg = 'tokenize: '\n      msg += sentence.text.substring(0, 100)\n    }\n    // t.equal(doc.length, 1, 'one sentence #' + index)\n    // t.equal(terms.length, sentence.tags.length, 'tokenize#' + index)\n\n    for (let i = 0; i < sentence.tags.length; i++) {\n      const want = softMapping[sentence.tags[i]]\n      terms[i] = terms[i] || { tags: [] }\n      const found = terms[i].tags.some(tag => tag === want)\n      if (!found) {\n        perfect = false\n        msg += `'${terms[i].text}' no #${want}`\n        break\n      }\n    }\n    if (!perfect) {\n      all.push(sentence.text)\n    }\n    t.ok(perfect, here + msg)\n  })\n  t.end()\n  // console.log(all)\n})\n"
  },
  {
    "path": "tests/two/tagger/swears.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/swears] '\n\n//nsfw!\ntest('swears:', function (t) {\n  let m = nlp('shit, i am tired').match('^#Expression')\n  t.ok(m.found, here + 'swear-1')\n\n  m = nlp('the shit keeps piling up').match('the #Noun')\n  t.ok(m.found, here + 'swear-2')\n\n  m = nlp('damn them all').match('^#Verb')\n  t.ok(m.found, here + 'swear-3')\n\n  m = nlp('fuck the government').match('^#Verb')\n  t.ok(m.found, here + 'swear-4')\n\n  // m = nlp('when hell freezes over').match('^when #Noun');\n  // t.ok(m.found,  here +'swear-5');\n\n  // m = nlp('he fucked up').match('he #Verb #Particle');\n  // t.ok(m.found,  here +'swear-6');\n\n  // m = nlp('it is fucked up').match('is #Adjective #Adjective')\n  // t.ok(m.found, here + 'swear-7')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/tagger/topics.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/topics] '\n\ntest('proper-nouns', function (t) {\n  const arr = [\n    ['I met John Smith in Toronto', ['John Smith', 'Toronto']],\n    ['Toronto and Vancouver Canada', ['Toronto', 'Vancouver Canada']],\n    // ['we ate shellfish at 23 Main st.', []],\n    ['google is suing motorola inc', ['google', 'motorola inc']],\n    ['the doctor and his brother see the mayor of france', ['france']],\n  ]\n  arr.forEach(a => {\n    const out = nlp(a[0]).match('#ProperNoun+').out('array')\n    t.deepEqual(out, a[1], here + a[0])\n  })\n  t.end()\n})\n\n//after we change pos, untag propernoun\ntest('remove-proper-nouns', function (t) {\n  const doc = nlp('do what Theresa May')\n  t.equal(doc.match('may').has('#ProperNoun'), true, here + 'propernoun-init')\n  doc.match('may').tag('Verb')\n  t.equal(doc.match('may').has('#ProperNoun'), false, here + 'propernoun-missing')\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/tagger/untag.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/untag] '\n\ntest('tag inference:', function (t) {\n  const m = nlp('aasdf2').unTag('Noun').unTag('NounPhrase')\n  const term = m.docs[0][0]\n  t.equal(term.tags.size, 0, here + 'aasdf2 has no tags')\n  //give it a specific tag-\n  m.tag('SportsTeam')\n  // term = m.eq(0).terms(0)\n  t.equal(term.tags.has('Noun'), true, here + 'aasdf2 now has Noun')\n  t.equal(term.tags.has('Organization'), true, here + 'aasdf2 now has Organization(inferred)')\n  //give it a redundant tag-\n  m.tag('Organization')\n  // term = m.eq(0).terms(0)\n  t.equal(term.tags.has('Noun'), true, here + 'aasdf2 still has Noun')\n  t.equal(term.tags.has('Organization'), true, here + 'aasdf2 still has Organization')\n  t.end()\n})\n\ntest('untag inference:', function (t) {\n  const m = nlp('aasdf')\n  m.tag('FemaleName')\n  const term = m.docs[0][0]\n  t.equal(term.tags.has('FemaleName'), true, here + 'aasdf first has FemaleName')\n  t.equal(term.tags.has('Person'), true, here + 'aasdf first has person')\n  t.equal(term.tags.has('Noun'), true, here + 'aasdf first has noun')\n  //remove the assumption..\n  m.unTag('Noun')\n  t.equal(term.tags.has('Noun'), false, here + 'aasdf now has no noun')\n  t.equal(term.tags.has('Person'), false, here + 'aasdf now has no person(inferred)')\n  t.equal(term.tags.has('FemaleName'), false, here + 'aasdf now has no FemaleName(inferred)')\n  t.end()\n})\n\ntest('tag idempodence:', function (t) {\n  const m = nlp('walk').tag('Verb')\n  const term = m.docs[0][0]\n  t.equal(term.tags.has('Verb'), true, here + 'walk has Verb')\n  t.equal(term.tags.has('Value'), false, here + 'walk has no Value')\n  //untag irrelevant stuff\n  m.unTag('Value')\n  m.unTag('Determiner')\n  m.unTag('Country')\n  m.unTag('Place')\n  t.equal(term.tags.has('Verb'), true, here + 'walk has Verb after')\n  t.equal(term.tags.has('Value'), false, here + 'walk has no Value after')\n  t.end()\n})\n\ntest('tags are self-removing', function (t) {\n  const terms = ['Person', 'Place', 'PastTense', 'FemaleName', 'Infinitive', 'HashTag', 'Month']\n  terms.forEach(function (tag) {\n    const m = nlp('aasdf').tag(tag).unTag(tag)\n    const t0 = m.docs[0][0]\n    t.equal(t0.tags.has(tag), false, here + 'tag removes self ' + tag)\n  })\n  t.end()\n})\n\ntest('untag wildcard', function (t) {\n  const r = nlp('we live in Toronto Canada and it is cold')\n  r.match('#Place+').unTag('*')\n  t.equal(r.match('#Place').found, false, here + 'place-tag-is-gone')\n  const term = r.docs[0][3] || {}\n  t.equal(term.tags.size, 0, here + 'toronto-has-no-tags-now')\n  t.end()\n})\n\ntest('tagset conflict:', function (t) {\n  const doc = nlp('april 5th')\n  doc.match('april').tag('Person')\n  t.equal(doc.has('#Month'), false, here + 'no-month')\n  t.equal(doc.firstTerm().has('#Date'), false, here + 'no-date')\n  doc.match('april').tag('Imperative')\n  t.equal(doc.has('#Person'), false, here + 'no-person')\n  t.equal(doc.has('#Noun'), false, here + 'no-noun')\n  t.end()\n})\n\n"
  },
  {
    "path": "tests/two/transform/clone.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/clone] '\n\ntest('clone root', function (t) {\n  const arr = [\n    'he eats the alligator',\n    'Jumanji is the best move. He eats cheese.',\n    'Uperman is wayyyy better than batman!',\n  ]\n  arr.forEach(function (str) {\n    const doc = nlp(str)\n    t.equal(doc.out(), str, here + 'equals input - ' + doc.out())\n\n    const up = doc.clone().toUpperCase()\n    t.notEqual(str, up.out(), here + 'neg not equal - ' + str)\n\n    const adv = doc.clone().match('#Verb').append('really')\n    t.notEqual(str, adv.out(), here + 'adv not equal - ' + str)\n\n    const rm = doc.clone().match('#Verb').delete('#Verb')\n    t.notEqual(str, rm.out(), 'rm not equal - ' + str)\n\n    const tag = doc.clone().tag('#Verb')\n    t.notEqual(doc.match('#Verb').text(), tag.match('#Verb').text(), here + 'rm not equal - ' + str)\n  })\n  t.end()\n})\n\ntest('clone tag-basic', function (t) {\n  const doc = nlp(`one two three. four five six`).tag('Value')\n\n  // clone/tag first sentence\n  const a = doc.eq(0).clone().tag('Person')\n  t.equal(a.if('#Person').length, 1, here + 'A has person')\n  t.equal(doc.if('#Person').length, 0, here + 'doc has no person')\n\n  t.end()\n})\n\ntest('clone does not leak', function (t) {\n  const txt = 'one foo two three. four. foo five six. foo.'\n  const doc = nlp(txt)\n  let m = doc.clone()\n  // do all sorts of terrible things to the document\n  for (let i = 0; i < 5; i += 1) {\n    m = m.splitOn('two')\n    m = m.remove('foo')\n    m.match('three').remove()\n    m = m.match('five').insertAfter('after')\n    m.prepend('oh yeah')\n    m.unTag('Value')\n    m = m.map(p => p.toUpperCase())\n    m.eq(1).remove()\n    m = m.not('foo')\n    m = m.if('.')\n    m = m.eq(0).tag('Yeah')\n    m.compute(['normal', 'preTagger', 'postTagger', 'contractions'])\n    m = m.all()\n  }\n  // is it still unchanged?\n  t.notDeepEqual(doc.out('array'), m.out('array'), here + 'main-changed')\n  t.deepEqual(doc.out('array'), nlp(txt).out('array'), here + 'no-leak-json')\n  t.equal(doc.text(), txt, here + 'no-leak-text')\n  t.equal(doc.has('#Yeah'), false, here + 'no-leak-tags')\n  t.end()\n})\n\n\ntest('clone share pointer', function (t) {\n  const doc = nlp('one two three')\n  const tmp = doc.clone()\n  const m = tmp.match('(one|three)')\n\n  t.deepEqual(doc.match(m).out('array'), ['one', 'three'], here + 'use cloned pointer')\n\n  // m.append('four')\n  // t.deepEqual(doc.match(m).out('array'), ['one', 'three'], here + 'only found in doc')\n\n  // mutate original\n  doc.remove('three')\n  t.deepEqual(doc.match(m).out('array'), ['one'], here + 'cloned pointer partial')\n\n  t.end()\n})\n\n\n\n// test('partial clone ', function (t) {\n//   let doc = nlp(`one two three. four five six`).tag('Value')\n\n//   // clone first sentence\n//   let a = doc.eq(0).clone()\n//   // tag the whole thing\n//   a = a.all().tag('Person')\n//   t.equal(a.if('#Person').length, 2, here + 'A has 2 sentences')\n//   t.equal(doc.if('#Person').length, 1, here + 'doc has 1 sentence')\n\n//   t.end()\n// })\n"
  },
  {
    "path": "tests/two/transform/replace.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/replace] '\n\ntest('replace-basic :', function (t) {\n  let m = nlp('the dog played').match('dog').replace('cat').all()\n  t.equal(m.out('text'), 'the cat played', here + 'dog-cat')\n\n  m = nlp('the dog played').match('the dog').replace('a cat').all()\n  t.equal(m.out('text'), 'a cat played', here + 'a-cat')\n\n  m = nlp('the dog played').match('#Noun').replace('snake').all()\n  t.equal(m.out('text'), 'the snake played', here + 'snake')\n\n  m = nlp('the pit bull played').match('#Noun+').replace('snake').all()\n  t.equal(m.out('text'), 'the snake played', here + 'pit bull')\n\n  m = nlp('the pit bull dog played').match('#Noun+').replace('grey snake').all()\n  t.equal(m.out('text'), 'the grey snake played', here + 'pit bull dog')\n\n  t.end()\n})\n\ntest('match-replace :', function (t) {\n  const arr = [\n    ['the dog played', 'the dog', 'the cat', 'the cat played'],\n    ['the dog played', 'the #Noun', 'the cat', 'the cat played'],\n    ['the dog played', 'the (dog|hamster|pet-snake)', 'the cat', 'the cat played'],\n    ['the boy and the girl', 'the #Noun', 'the house', 'the house and the house'],\n    ['the boy and the girl', 'the cat', 'the house', 'the boy and the girl'],\n    ['the boy and the girl', '(boy|girl)', 'cat', 'the cat and the cat'],\n  ]\n  arr.forEach(function (a) {\n    const str = nlp(a[0]).replace(a[1], a[2]).all().out('text')\n    const msg = str + ' -- ' + a[3]\n    t.equal(str, a[3], here + msg)\n  })\n  t.end()\n})\n\ntest('replace-with-punctuation', function (t) {\n  const doc = nlp('Simon, how is Pamela and Jason?')\n  const str = doc.match('#Person').replace('PERSON').all().out()\n  t.equal(str, 'PERSON, how is PERSON and PERSON?', here + 'replace-with-punctuation')\n  t.end()\n})\n\ntest('structured-object-replace :', function (t) {\n  let r = nlp('fun times in cool town')\n  const term = r.match('times')\n  r.replace(term, 'day')\n  t.equal(r.out(), 'fun day in cool town', here + 'structured-replace')\n\n  r = nlp('fun times in cool town')\n  const terms = r.match('cool town')\n  r.replace(terms, 'shitsville')\n  t.equal(r.out(), 'fun times in shitsville', here + 'structured-replace-multi')\n  t.end()\n})\n\ntest('replace-keep some punctuation', function (t) {\n  let doc = nlp('two weeks').tag('Cool')\n  doc.replace('two', '2', { tags: true })\n  t.equal(doc.match('#Cool+').text(), '2 weeks', here + 'replace-keep-tags')\n\n  doc = nlp('first sentence. I am trying it out.')\n  const m = doc.match('trying').tag('HashTag')\n  m.replaceWith('working', { tags: true })\n  t.equal(doc.match('#HashTag+').text(), 'working', here + 'replacewith-keep-tags')\n  t.end()\n})\n\ntest('replace over implict', function (t) {\n  const doc = nlp(\"i'm good\")\n  doc.match('am').replaceWith('was')\n  t.equal(doc.text(), 'i was good', here + 'replace over implicit')\n  t.end()\n})\n\ntest('replace-with-Doc', function (t) {\n  const b = nlp('sneaks').tag('Cool')\n  const doc = nlp(`john walks quickly`)\n  doc.match('walks').replaceWith(b, { tags: true })\n  t.equal(doc.text(), 'john sneaks quickly', here + 'doc-replace')\n  t.equal(doc.has('#Cool'), true, here + 'doc-replace tags')\n  t.end()\n})\n\ntest('replace-with-function', function (t) {\n  const fn = p => {\n    if (p.has('john')) {\n      return 'johnny'\n    }\n    return 'nancy'\n  }\n  let doc = nlp('spencer and John')\n  doc.replace('#Person', fn)\n  t.equal(doc.text(), 'nancy and johnny', here + 'replace function')\n\n  doc = nlp('spencer and John')\n  doc.match('#Person').replaceWith(fn, { case: true })\n  t.equal(doc.text(), 'nancy and Johnny')\n\n  doc = nlp('Thurs, Feb 2nd, 2016')\n  doc.match('feb').replaceWith(m => {\n    return m.text({ trim: true }) + '!'\n  })\n  t.equal(doc.text(), 'Thurs, Feb! 2nd, 2016', here + 'replaceWith function')\n\n  doc = nlp('Spencer is very cool.')\n  doc.match('spencer').replaceWith((m) => m.text() + 's')\n  doc.match('is').replaceWith(() => 'are')\n  t.equal(doc.text(), 'Spencers are very cool.', here + 'replaceWith twice')\n  t.end()\n})\n\ntest('replace-with-possessives', function (t) {\n  const fn = p => {\n    if (p.has('john')) {\n      return 'johnny'\n    }\n    return 'nancy'\n  }\n  const doc = nlp('spencer\\'s house is cooler than John\\'s house.')\n  doc.replace('#Person', fn, { case: true, possessives: true })\n  t.equal(doc.text(), 'nancy\\'s house is cooler than Johnny\\'s house.')\n  t.end()\n})\n\ntest('replace-tags-param', function (t) {\n  let doc = nlp('Spencer is very cool.')\n  doc.match('spencer').replaceWith('jogging')\n  const m = doc.match('jogging')\n  t.equal(m.has('#Person'), false, here + 'tags not-kept - default')\n\n  doc = nlp('Spencer is very cool.')\n  doc.match('spencer').replaceWith('jogging', { tags: true })\n  t.equal(doc.has('(jogging && #Person)'), true, here + 'tags kept - boolean')\n  t.equal(doc.has('(jogging && #Gerund)'), false, here + 'tags kept - boolean')\n\n  doc = nlp('Spencer is very cool.')\n  doc.match('spencer').replaceWith('jogging', { tags: true })\n  t.equal(doc.has('(jogging && #Person)'), true, here + 'tags kept - boolean')\n  t.equal(doc.has('(jogging && #Gerund)'), false, 'here+tags kept - boolean')\n\n  t.end()\n})\n\ntest('replace-case-param', function (t) {\n  let doc = nlp('Spencer is very cool.')\n  doc.match('spencer').replaceWith('jogging', { case: true })\n  t.equal(doc.text(), 'Jogging is very cool.', here + here + 'case kept ')\n\n  doc = nlp('spencer is very cool.')\n  doc.match('spencer').replaceWith('jogging', { case: false }) // Jogging?\n  t.equal(doc.text(), 'jogging is very cool.', here + here + 'lowsercase kept - default')\n\n  doc = nlp('Spencer is very cool.')\n  doc.match('spencer').replaceWith('jogging', { case: false })\n  t.equal(doc.text(), 'jogging is very cool.', 'dont-keep')\n  t.end()\n})\n\ntest('replace-repair', function (t) {\n  let doc = nlp('the cat and the dog')\n  doc.replace('#Noun', 'house')\n  t.equal(doc.text(), 'the house and the house', here + 'repair-one-one')\n\n\n  doc = nlp('the cat and the dog')\n  doc.replace('the #Noun', 'the house')\n  t.equal(doc.text(), 'the house and the house', here + 'repair-two-two')\n\n  doc = nlp('the cat and the dog')\n  doc.replace('#Noun', 'cool house')\n  t.equal(doc.text(), 'the cool house and the cool house', here + 'repair-one-two')\n\n  doc = nlp('the cat and the dog')\n  doc.replace('the #Noun', 'house')\n  t.equal(doc.text(), 'house and house', here + 'repair-two-one')\n  t.end()\n})\n\ntest('replace is cloned', function (t) {\n  const doc = nlp('before match after. second sentence here.')\n  const m = doc.match('match')\n  doc.match('sentence').replace(m)\n  t.equal(doc.text(), 'before match after. second match here.', here + 'replaced-text')\n\n  const id = m.docs[0][0].id\n  const foundIds = doc.termList().filter(term => term.id === id)\n  t.equal(foundIds.length, 1, 'id-different')\n\n  t.equal(m.length, 1, 'match-unchanged')\n  m.tag('NewTag')\n  t.equal(m.match('#NewTag').length, 1, 'tags-are-cloned')\n\n  t.end()\n})\n\ntest('replace-with-no-match', function (t) {\n  const doc = nlp('original')\n  doc.match('missing').replaceWith('unreached')\n  t.equal(doc.text(), 'original')\n\n  doc.match('missing').replaceWith('unreached', { tags: true, possessives: true, case: true })\n  t.equal(doc.text(), 'original')\n  t.end()\n})\n\ntest('replace-with-phone-number', function (t) {\n  const doc = nlp('Phone: +1 (123) 456-7890')\n  doc.match('#PhoneNumber').replaceWith((p) => p.text().replace(/\\d{3}/, '555'))\n  t.equal(doc.text(), 'Phone: +1 (555) 555-7890')\n\n  t.end()\n})\n\ntest('replace-with-pre-post', function (t) {\n  let doc = nlp('`Target`')\n  doc.match('Target').replaceWith('Replacement')\n  t.equal(doc.text(), '`Replacement`')\n\n  doc = nlp('`John\\'s`')\n  doc.match('John').replaceWith('Spencer', { possessives: true })\n  t.equal(doc.text(), '`Spencer\\'s`')\n\n  doc = nlp('the `pit bull` played').match('#Noun+').replace('snake').all()\n  t.equal(doc.text(), 'the `snake` played')\n\n  doc = nlp('the `snake` played').match('#Noun+').replace('pit bull').all()\n  t.equal(doc.text(), 'the `pit bull` played')\n\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/transform/swap.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/swap] '\n\ntest('swap-verb', function (t) {\n  let doc = nlp('i strolled downtown').compute('root')\n  doc.swap('stroll', 'walk')\n  t.equal(doc.text(), 'i walked downtown', here + 'vb-past')\n\n  doc = nlp('he strolls downtown').compute('root')\n  doc.swap('stroll', 'walk')\n  t.equal(doc.text(), 'he walks downtown', here + 'vb-present')\n\n  doc = nlp('he will stroll downtown').compute('root')\n  doc.swap('stroll', 'walk')\n  t.equal(doc.text(), 'he will walk downtown', here + 'vb-future')\n\n  doc = nlp('stroll downtown please').compute('root')\n  doc.swap('stroll', 'walk')\n  t.equal(doc.text(), 'walk downtown please', here + 'vb-imp')\n\n\n  doc = nlp('i dug up the solution, while digging up treasure.')\n  doc.compute('root')\n  doc.swap('dig up', 'find')\n  t.equal(doc.text(), 'i found the solution, while finding treasure.', here + 'vb-multi')\n\n  t.end()\n})\n\n\ntest('swap-noun', function (t) {\n  let doc = nlp('a cute koala').compute('root')\n  doc.swap('koala', 'giraffe')\n  t.equal(doc.text(), 'a cute giraffe', here + 'nn-sing')\n\n  doc = nlp('two cute koalas').compute('root')\n  doc.swap('koala', 'giraffe')\n  t.equal(doc.text(), 'two cute giraffes', here + 'nn-plur')\n\n\n  doc = nlp('I am Cliff Clavin').compute('root')\n  doc.swap('cliff', 'giraffe', '!#Person')\n  t.equal(doc.text(), 'I am Cliff Clavin', here + 'nn-guard')\n\n  doc = nlp('two hot dogs please').compute('root')\n  doc.swap('hot dog', 'hamburger') //use singular-forms\n  t.equal(doc.text(), 'two hamburgers please', here + 'multi-word')\n\n  doc = nlp(\"Jeff's bikes\")\n  doc.swap('Jeff', 'John')\n  t.equal(doc.text(), `John's bikes`, here + 'keep-possessive')\n\n  doc = nlp(\"Spencer Kelly's superstore\")\n  doc.swap('Spencer Kelly', 'Sam Altman')\n  t.equal(doc.text(), `Sam Altman's superstore`, here + 'keep-possessive 2-term')\n\n  doc = nlp(\"it was Montreal's.\")\n  doc.swap('Montreal', 'Quebec City')\n  t.equal(doc.text(), `it was Quebec City's.`, here + 'keep-possessive mismatch')\n\n  t.end()\n})\n\ntest('swap-adverb', function (t) {\n  const doc = nlp('suddenly and heatedly').compute('root')\n  doc.swap('heated', 'warm')\n  doc.swap('sudden', 'immediate')\n  t.equal(doc.text(), 'immediately and warmly', here + 'swap-adverb')\n  t.end()\n})\n\ntest('swap-adjective', function (t) {\n  let doc = nlp('he was fast')\n  doc.compute('root')\n  doc.swap('fast', 'quick')\n  t.equal(doc.text(), 'he was quick', here + 'swap-adj')\n\n  doc = nlp('he ran faster than her')\n  doc.compute('root')\n  doc.swap('fast', 'quick')\n  t.equal(doc.text(), 'he ran quicker than her', here + 'swap-comparative')\n\n  doc = nlp('he was the fastest')\n  doc.compute('root')\n  doc.swap('fast', 'quick')\n  t.equal(doc.text(), 'he was the quickest', here + 'swap-superlative')\n  t.end()\n})"
  },
  {
    "path": "tests/two/variables/gerund.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/gerund] '\n\nconst arr = [\n  // === gerunds ===\n  [`chillin'`, '#Gerund'],\n  ['singing', '#Gerund'],\n  [`shocking quickly`, '#Gerund .'],\n  [`shocking me`, '#Gerund .'],\n  [`shocking his`, '#Gerund .'],\n  [`he imagines shocking`, '#Pronoun #PresentTense #Gerund'],\n  [`quickly shocking`, '. #Gerund'],\n  [`quietly shocking`, '. #Gerund'],\n  [`shocking him`, '#Gerund .'],\n  [`trusting the`, '#Gerund .'],\n  [`charming every`, '#Gerund .'],\n  [`revealing a clue`, '#Gerund . .'],\n  // [`selling like hot cakes`, '#Gerund like #Noun #Plural'],\n  [`doing better for fights`, '#Gerund #Adjective for #Plural'],\n  [`adding a sleeping aid.`, `#Gerund #Determiner #Noun #Singular`],\n  [`babysitting her`, `#Gerund .`],\n  [`baking a cooking`, `#Gerund #Determiner #Noun`],\n  [`casting a shadow`, `#Gerund #Determiner #Noun`],\n  [`riding that bike`, `#Gerund #Determiner #Noun`],\n  [`timing the race`, `#Gerund the #Noun`],\n  [`barely manufacturing`, `#Adverb #Gerund`],\n  [`started thinking`, `#PastTense #Gerund`],\n  [`finish listening`, `#Infinitive #Gerund`],\n  [`laughing and crying`, `#Gerund and #Gerund`],\n  [`without laughing`, `. #Gerund`],\n  [`uplifting thinking`, `#Adjective #Noun`],\n  [`he loves thinking`, `. #PresentTense #Gerund`],\n  [`he stopped thinking`, `. #PastTense #Gerund`],\n  [`starts thinking`, `#Verb #Gerund`],\n  [`that is all you are getting`, 'that #Copula #Noun you are #Gerund'],\n  // [`the rising cost of health`, 'the #Gerund #Singular of .'],\n  [`shocking spencer's`, '#Gerund .'],\n  [`commanding the field`, '#Gerund #Determiner #Noun'],\n  ['he is walking', '#Pronoun #Copula #Gerund'],\n  [`revealing his guts`, '#Gerund #Possessive #Plural'],\n  [`distressing us`, '#Gerund #Noun'],\n  [`loving you`, '#Gerund #Noun'],\n  [`promising to leave`, '#Gerund #Conjunction #Verb'],\n\n  // === adjectives ===\n  [`as disgusting as`, '#Preposition #Adjective #Preposition'],\n  [`more disgusting than`, '#Adverb #Adjective #Preposition'],\n  [`was so nausiating`, '#Copula #Adverb #Adjective'],\n  [`extremely moving`, '#Adverb #Adjective'],\n  // [`this reckoning`, '#Determiner #Noun'],\n  // [`he is redefining his art`, '#Pronoun #Copula #Gerund his #Noun'],\n  // [`he is redefining art`, '#Pronoun #Copula #Gerund #Noun'],\n  [`it was redefining`, '#Pronoun #Copula #Adjective'],\n  [`it was a redefining moment`, '#Pronoun #Copula #Determiner #Adjective #Noun'],\n  [`i found it isolating`, '#Noun #PastTense #Noun #Adjective'],\n  [`it was disgusting`, '#Pronoun #Copula #Adjective'],\n  [`dark green`, '#Adverb #Adjective'],\n  [`kinda sparkly`, '#Adverb #Adjective'],\n  [`quite stunning`, '#Adverb #Adjective'],\n  [`slowly stunning`, '#Adverb #Verb'],\n  [`quite awfully dashing`, '#Adverb #Adverb #Adjective'],\n  ['he is well', '#Pronoun #Copula #Adjective'],\n  ['is well made', '#Copula #Adverb #Adjective'],\n  // ['tacos were way over cooked', '#Plural #Verb #Adverb #Adjective #Adjective'],\n  ['they were under appreciated', '#Pronoun #Verb #Adjective #Adjective'],\n  ['they felt appreciated', '#Pronoun #PastTense #Adjective'],\n  [`a revealing clue`, 'a #Adjective .'],\n  [`shocking ignorance`, '#Adjective .'],\n  [`extremely charming`, '. #Adjective'],\n  [`is shocking`, '. #Adjective'],\n  [`really shocking`, '. #Adjective'],\n  [`too insulting`, '. #Adjective'],\n  [`bruising defence`, '#Adjective .'],\n  [`enduring legacy`, '#Adjective .'],\n  [`amazing appeal`, '#Adjective #Singular'],\n  [`amazing appeals`, '#Adjective #Plural'],\n  [`david is amazing`, '#Noun is #Adjective'],\n  [`The difference is astounding.`, 'the #Noun is #Adjective'],\n  [`their accelerating returns`, `#Noun #Adjective #Noun`],\n  [`accelerating his returns`, `#Gerund his #Plural`],\n  [`the exploding returns`, `. #Adjective #Plural`],\n  [`their exploding returns`, `. #Adjective #Plural`],\n  [`their plunging neckline`, `. #Adjective #Singular`],\n\n  // gerund noun\n  // ['clothing', '#Noun'],\n  // [`he teaches breadmaking`, 'he #Verb #Noun'],\n  // [`babysitting sucks`, `#Noun #Verb`],\n  // [`casting was really awful`, `#Noun #Copula #Adverb #Adjective`],\n  // [`baking was fun`, `#Noun #Copula #Adjective`],\n  // [`manufacturing returned`, `#Noun #PastTense`],\n  // [`laughing may help`, `#Noun #Modal #Infinitive`],\n  // [`laughing is pretty handy`, `#Noun #Copula #Adverb #Adjective`],\n  // [`my riding`, `#Possessive #Noun`],\n  // [`minus laughing`, `. #Noun`],\n  // [`thinking aid`, `#Noun #Noun`],\n  // [`talking therapy`, `#Noun #Noun`],\n  // [`talking therapies`, `#Noun #Plural`],\n  // [`toronto riding`, `#Noun #Noun`],\n  // [`the timing`, `the #Noun`],\n  // [`watching the working class`, `#Gerund the #Noun #Noun`],\n  // [`talking the talk`, `#Gerund the #Noun`],\n  // [`early warning`, `#Adjective #Noun`],\n  // [`planning processes`, `#Noun #Plural`],\n  // [`planning committees`, `#Noun #Plural`],\n  // [`walking should be fun`, `#Noun #Modal be #Adjective`],\n  // [`i think tipping sucks`, `#Pronoun #Infinitive #Noun #PresentTense`],\n  // [`defeating his longstanding rivals`, '#Gerund #Possessive #Adjective #Plural'],\n]\ntest('match:', function (t) {\n  arr.forEach(function (a) {\n    const [str, match] = a\n    const doc = nlp(str).compute('tagRank')\n    const tags = doc.json()[0].terms.map(term => term.tagRank[0])\n    const m = doc.match(match)\n    const msg = `'${(str + \"' \").padEnd(20, ' ')}  - '${tags.join(', ')}'`\n    t.equal(m.text(), doc.text(), here + msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/variables/org-match.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/org-match] '\n\nconst arr = [\n\n  ['google', '#Organization'],\n  ['google inc', '#Organization+'],\n  ['Capital One', '#Organization+'],\n  ['HSBC', '#Organization'],\n  ['NASA', '#Organization'],\n  ['al qaeda', '#Organization+'],\n  ['FBI', '#Organization'],\n  ['monsanto', '#Organization'],\n  ['Johnson & Johnson', '#Organization+'],\n  ['Johnson & Johnson LLC', '#Organization+'],\n\n  ['duran duran', '#Organization+'],\n  ['american express', '#Organization+'],\n  ['oakland athletics', '#SportsTeam'],\n  [`JDI University'`, '#Organization+'],\n  ['google', '#Organization'],\n\n  [`http://cool.com/fun`, '#Url'],\n  [`https://cool.com`, '#Url'],\n  [`https://cool.com/`, '#Url'],\n  [`https://www.cool.com/`, '#Url'],\n  [`http://subdomain.cool.com/`, '#Url'],\n  [`www.fun.com/`, '#Url'],\n  [`www.fun.com`, '#Url'],\n  [`www.fun.com/foobar/fun`, '#Url'],\n  [`www.subdomain.cool.com/`, '#Url'],\n  [`wwwsubdomain.cool.com/`, '#Url'],\n  [`woo.br`, '#Url'],\n  [`woohoo.biz`, '#Url'],\n  [`woop.org/news`, '#Url'],\n  [`http://woop.org/news?foo=bar`, '#Url'],\n  [`http:subdomain.cool.com/`, '#Url'],\n  [`http://subdomain.cool.com/`, '#Url'],\n  [`https://en.m.wikipedia.org`, '#Url'],\n  [`https://en.m.wikipedia.org/wiki`, '#Url'],\n  [`en.m.wikipedia.org/wiki?`, '#Url'],\n  ['http://fun.com/cool?fun=yes', '#Url'],\n\n  [`s@s.com`, '#Email'],\n  [`sasdf@sasdf.com`, '#Email'],\n  [`sasdf@sasdf.ti`, '#Email'],\n  [`_@_.com`, '#Email'],\n  ['lkj@fun.com', '#Email'],\n  ['j@f.ti', '#Email'],\n  ['j@ti', '#Noun'],\n\n  [`#lkjsdf`, '#HashTag'],\n  [`#ll`, '#HashTag'],\n  [`#22ll`, '#HashTag'],\n  [`#_22ll`, '#HashTag'],\n  ['#funtimes', '#HashTag'],\n  // urls\n  ['https://www.f3schools.com', '#Url'],\n  ['https://f3scho0ls.com', '#Url'],\n  ['https://www.fu4bar.f3scho0ls.com', '#Url'],\n  ['http://compromise.cool', '#Url'],\n  ['http://a.jp', '#Url'],\n\n  ['@ti', '#AtMention'],\n  ['#cool fun.com @cooman', '#HashTag #Url #AtMention'],\n\n  ['FBI', '#Organization'],\n  ['F.B.I.', '#Organization'],\n  ['Fundo ltd.', '#Organization+'],\n  ['at Fun co', 'at #Organization+'],\n  ['Smith & Rogers', '#Organization+'],\n  ['Google', '#Organization'],\n\n\n  //abbreviations\n  ['John & John,', '#Noun #Noun #Noun'],\n  ['N.V.,', '#Noun'],\n  ['col. Patrick said march and feb. etc.', '#Abbreviation #Person #PastTense #Month #Conjunction #Abbreviation #Abbreviation'],\n  [`ANAB, ENA, CCP etc.`, '#Acronym #Acronym #Acronym #Abbreviation'],\n  // ['contracted AIDS', '#PastTense #Acronym'],\n  ['contacted nbc', '#PastTense #Acronym'],\n  ['UNESCO', '#Acronym'],\n  ['NAFTA', '#Acronym'],\n\n]\ntest('match:', function (t) {\n  arr.forEach(function (a) {\n    const [str, match] = a\n    const doc = nlp(str).compute('tagRank')\n    const tags = doc.json()[0].terms.map(term => term.tagRank[0])\n    const m = doc.match(match)\n    const msg = `'${(str + \"' \").padEnd(20, ' ')}  - '${tags.join(', ')}'`\n    t.equal(m.text(), doc.text(), here + msg)\n  })\n  t.end()\n})"
  },
  {
    "path": "tests/two/variables/past-adj.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/past-adj] '\n\nconst arr = [\n  // == adjectives ==\n  [`'cool'`, '#Adjective'],\n  ['great', '#Adjective'],\n  ['legendary', '#Adjective'],\n  ['above', '#Adjective'],\n  ['moderate', '#Adjective'],\n  ['extreme', '#Adjective'],\n  ['John is pretty', '#Person #Copula #Adjective'],\n  ['John was lofty', '#Person #Copula #Adjective'],\n  ['John Smith was lofty', '#FirstName #LastName #Copula #Adjective'],\n  ['asdfes was lofty', '#Noun #Copula #Adjective'],\n  ['asdfes lksejfj was lofty', '#Noun #Noun #Copula #Adjective'],\n  ['5 red roses', '#Value #Adjective #Noun'],\n  ['walking is fun', '#Activity #Copula #Adjective'],\n  [\"walking's great\", '#Activity #Copula #Adjective'],\n  ['jack is guarded', '#Person #Copula #Adjective'],\n  ['jack seems guarded', '#Person #Verb #Adjective'],\n  ['germans are nice', '#Demonym #Verb #Adjective'],\n  ['Iraqis are nice', '#Plural #Copula #Adjective'],\n  ['canadians are nice', '#ProperNoun #Verb #Adjective'],\n  ['thom is smart', '#ProperNoun #Verb #Adjective'],\n  [`very detailed plan`, '. #Adjective #Noun'],\n  [`our detailed plan`, '. #Adjective #Noun'],\n  [`the detailed plan`, '. #Adjective #Noun'],\n  [`well equipped`, '. #Adjective'],\n  [`deeply closed`, `. #Adjective`],\n  [`a detailed plan`, 'a #Adjective .'],\n  [`seemed closed`, `. #Adjective`],\n  [`my failed class`, 'my #Adjective .'],\n  [`intoxicated little`, '#Adjective .'],\n  [`quickly closed`, `. #PastTense`],\n  [`badly damaged`, `. #Adjective`],\n  [`each promising image`, '#Determiner #Adjective #Singular'],\n  [`the ruling party`, '#Determiner #Noun #Singular'],\n  [`deli serves up smoked meat`, '#Noun #PhrasalVerb #Particle #Adjective #Noun'],\n  [`The pie was bland and overcooked.`, 'the #Noun was #Adjective and #Adjective'],\n  [`our beloved sons`, '#Possessive #Adjective #Noun'],\n  [`spaghetti and steamed rice`, '#Noun and #Adjective #Noun'],\n  [`for suspected terrorists`, 'for #Adjective #Plural'],\n  [`for discounted beauty items`, 'for #Adjective #Noun #Plural'],\n  // [`number of registered party members`, '#Noun of #Adjective #Noun #Plural'],\n  [`rely on bottled water`, '#Verb on #Adjective #Noun'],\n\n  // === PastTense ===\n  [`quickly detailed`, '. #PastTense'],\n  [`closed it`, `#PastTense .`],\n  [`cramped his style`, `#PastTense #Pronoun #Noun`],\n  [`he detailed`, '. #PastTense'],\n  ['jack cheered', '#Person #PastTense'],\n  ['jack guarded', '#Person #PastTense'],\n  // ['baked', '#PastTense'],\n  ['faked', '#PastTense'],\n  ['maked', '#PastTense'],\n  ['mistaked', '#PastTense'],\n  ['overtook', '#PastTense'],\n  ['remaked', '#PastTense'],\n  ['retaked', '#PastTense'],\n  ['forsaked', '#PastTense'],\n  ['shaked', '#PastTense'],\n  ['snaked', '#PastTense'],\n  ['took', '#PastTense'],\n  ['undertook', '#PastTense'],\n  //-ced\n  ['they lanced', '. #PastTense'],\n  ['he balanced', '. #PastTense'],\n  ['we seduced', '. #PastTense'],\n  //-shed\n  ['impoverished', '#PastTense'],\n  ['stashed', '#PastTense'],\n  ['crashed', '#PastTense'],\n  //-sed\n  ['amused', '#PastTense'],\n  ['he bruised', 'he #PastTense'],\n  ['crossed', '#PastTense'],\n  ['dressed', '#PastTense'],\n  ['he exposed', 'he #PastTense'],\n  ['tossed', '#PastTense'],\n  ['tensed', '#PastTense'],\n  ['hosed', '#PastTense'],\n  //-led\n  ['consoled', '#PastTense'],\n  ['fuelled', '#PastTense'],\n  ['nailed', '#PastTense'],\n  ['nestled', '#PastTense'],\n  ['riddled', '#PastTense'],\n  ['sailed', '#PastTense'],\n  ['totaled', '#PastTense'],\n  ['whirled', '#PastTense'],\n  //-ked\n  ['linked', '#PastTense'],\n  ['freaked', '#PastTense'],\n  ['tucked', '#PastTense'],\n  ['cocked', '#PastTense'],\n  ['pounced', '#PastTense'],\n  ['punched', '#PastTense'],\n  ['rumbled', '#PastTense'],\n  ['wetted', '#PastTense'],\n  ['dubbed', '#PastTense'],\n  ['trascribed', '#PastTense'],\n  ['barred', '#PastTense'],\n  ['vetoed', '#PastTense'],\n  ['drenched', '#PastTense'],\n  ['fetched', '#PastTense'],\n  ['sighed', '#PastTense'],\n  ['encouraged', '#PastTense'],\n  ['messaged', '#PastTense'],\n  ['tugged', '#PastTense'],\n  ['wedged', '#PastTense'],\n  ['beeped', '#PastTense'],\n  ['topped', '#PastTense'],\n  ['wiped', '#PastTense'],\n  ['logged', '#PastTense'],\n  ['displayed', '#PastTense'],\n  ['skyped', '#PastTense'],\n  ['swallowed', '#PastTense'],\n  ['viewed', '#PastTense'],\n  ['mooned', '#PastTense'],\n  ['boozed', '#PastTense'],\n  ['stowed', '#PastTense'],\n  ['issued', '#PastTense'],\n  ['accrued', '#PastTense'],\n  ['defended', '#PastTense'],\n  ['engulfed', '#PastTense'],\n  ['fed', '#PastTense'],\n  ['strafed', '#PastTense'],\n  ['stifled', '#PastTense'],\n  ['winged', '#PastTense'],\n  ['he amazed', 'he #PastTense'],\n  ['boxed', '#PastTense'],\n  ['shoved', '#PastTense'],\n  ['attained', '#PastTense'],\n  ['warmed', '#PastTense'],\n  ['they dried', 'they #PastTense'],\n  ['we rallied', 'we #PastTense'],\n  // context\n  // ['poodles like being pampered', '#Plural #Infinitive #Gerund #PastTense'],\n  ['poodles like to be pampered', '#Plural #Infinitive to #Verb #PastTense'],\n  [`we charged back`, 'we #PastTense #Adverb'],\n  [`it sliced backward`, 'it #PastTense #Adverb'],\n  [`smelled like smoke`, '#PastTense . #Noun'],\n  [`faded by fakes`, `#PastTense #Preposition #Plural`],\n  [`stranded on base`, `#PastTense #Preposition #Noun`],\n  [`ended in ruins`, `#PastTense #Preposition #Plural`],\n  [`found in vertebrates`, `#PastTense #Preposition #Plural`],\n  [`served by branches`, `#PastTense #Preposition #Plural`],\n  [`ended in ruin`, `#PastTense #Preposition #Noun`],\n  [`Fullerton created this show`, '#Noun #PastTense #Determiner #Noun'],\n  [`should have her hand pierced`, 'should have her #Noun #PastTense'],\n  [`will have waited until release`, '#Auxiliary #Auxiliary #PastTense until #Noun'],\n  // ['it was fixed', '#Noun #Copula #PastTense'],\n  ['it will be boxed', '#Noun #Verb #Verb #PastTense'],\n  // ['i am gutted', '#Noun #PastTense #Adjective'],\n  // [\n  //   'She felt abandoned about the sudden change in plans',\n  //   '#Pronoun #PastTense #Adjective #Preposition #Determiner #Adjective #Noun #Preoposition #Noun',\n  // ],\n  [\n    'The puzzled detective was bewildered about the abandoned clues.',\n    '#Determiner #Adjective #Noun #Copula #Adjective #Preposition #Determiner #Adjective #Noun',\n  ],\n  [\n    \"He was amazed about the abandoned building's mysterious past.\",\n    '#Pronoun #Copula #Adjective #Preposition #Determiner #Adjective #Possessive #Adjective #Noun',\n  ],\n  ['He also developed software.', '#Pronoun #Adverb #Verb #Noun'],\n  ['Cheese is also aged', '#Noun #Copula #Adverb #Adjective'],\n]\ntest('match:', function (t) {\n  arr.forEach(function (a) {\n    const [str, match] = a\n    const doc = nlp(str).compute('tagRank')\n    const tags = doc.json()[0].terms.map(term => term.tagRank[0])\n    const m = doc.match(match)\n    const msg = `'${(str + \"' \").padEnd(20, ' ')}  - '${tags.join(', ')}'`\n    t.equal(m.text(), doc.text(), here + msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/variables/person-match.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/person-match] '\n\nconst arr = [\n  // === people ==\n  ['jamie', '#Person'],\n  ['Spencer Kelly is in Canada', '#Person #Person #Copula #Preposition #Place'],\n  ['John bathe', '#Person #Verb'],\n  ['John, John', '#Person #Person'],\n  ['John, you', '#FirstName #Pronoun'],\n  ['John you', '#MaleName #Pronoun'],\n  ['you John you', '#Pronoun #Person #Pronoun'],\n  ['boyfriend to Jane', '#Noun #Conjunction #Person'],\n  ['boyfriend of Jane', '#Noun . #Person'],\n\n  // famous people names\n  ['john stewart', '#MaleName #LastName'],\n  ['martha stewart', '#FemaleName #LastName'],\n  ['George Bush', '#MaleName #LastName'],\n  ['Hillary Clinton', '#FemaleName #LastName'],\n  ['Hillary Rodham Clinton', '#FemaleName #Person #Person'],\n  ['Margaret Thatcher', '#FemaleName #LastName'],\n  ['Messiaen', '#Person'],\n  ['Mozart', '#LastName'],\n  ['Nixon', '#LastName'],\n  ['Pope John Paul II', '#Person+'],\n  ['Richard Nixon', '#MaleName #LastName'],\n  ['Ronald Reagan', '#MaleName #LastName'],\n  ['Saddam Hussain', '#Person+'],\n  ['Shostakovich', '#LastName'],\n  ['Vivaldi', '#LastName'],\n  ['van Gogh', '#Person+'],\n  ['Carl Marx', '#MaleName #LastName'],\n  ['Lenin', '#LastName'],\n  ['Stalin', '#LastName'],\n  ['George W. Bush', '#MaleName #Person #LastName'],\n  ['Mitt Romney', '#Person+'],\n  ['Barack Obama', '#Person+'],\n  ['Obama', '#LastName'],\n  ['Lady Gaga', '#Person+'],\n  ['Kanye West', '#Person+'],\n  ['Abu Hamza', '#MaleName #Person'],\n  ['Abu Hamza Al - Masri', '#MaleName #Person+'],\n  ['Osama bin Laden', '#Person+'],\n  ['Mubarek', '#Person'],\n  ['Muhammad Ali', '#MaleName #LastName'],\n  ['Jennifer Aniston', '#FemaleName #LastName'],\n  ['Tyra Banks', '#Person+'],\n  ['Mario Batali', '#MaleName #LastName'],\n  ['David Beckham', '#MaleName #LastName'],\n  ['Halle Berry', '#Person+'],\n  ['Tom Brady', '#MaleName #LastName'],\n  ['Matthew Broderick', '#MaleName #LastName'],\n  ['Mel Brooks', '#Person+'],\n  ['Dan Brown', '#MaleName #LastName'],\n  ['Jerry Bruckheimer', '#MaleName #LastName'],\n  ['Kobe Bryant', '#Person+'],\n  ['Gisele Bundchen', '#FemaleName #LastName'],\n  ['Jim Carrey', '#MaleName #LastName'],\n  ['Dave Chappelle', '#MaleName #LastName'],\n  ['Sean Combs', '#MaleName #LastName'],\n  ['Katie Couric', '#FemaleName #LastName'],\n  ['Simon Cowell', '#MaleName #LastName'],\n  ['Tom Cruise', '#MaleName #LastName'],\n  ['Johnny Depp', '#MaleName #LastName'],\n  ['Cameron Diaz', '#FirstName #LastName'],\n  ['Leonardo DiCaprio', '#MaleName #LastName'],\n  ['Celine Dion', '#FemaleName #LastName'],\n  ['Jodie Foster', '#FemaleName #LastName'],\n  ['John Grisham', '#MaleName #LastName'],\n  ['Tom Hanks', '#MaleName #LastName'],\n  ['Paris Hilton', '#Person+'],\n  ['Eric Idle', '#MaleName #LastName'],\n  ['Mike Nichols', '#MaleName #LastName'],\n  ['John Smith', '#Person+'],\n  ['dr. John Smith', '#Honorific #Person+'],\n  ['John Smith jr.', '#Person+'],\n  ['John Jacob Smith', '#FirstName #Person+'],\n  ['Jani K. Smith', '#FirstName #Acronym #LastName'],\n  [`charity chapman`, `#Person #Person`],\n  [`darwin said`, `#Person #Verb`],\n  [`victoria learned`, `#Person #Verb`],\n  [`charity said`, '#Person #Verb'],\n  [`jordan said`, '#Person #Verb'],\n  [`april learned`, '#Person #Verb'],\n  [`john k. johnson`, '#Person #Person #Person'],\n  [`i met April O'neil`, '#Pronoun #PastTense #Person #Person'],\n  // Verbs\n  [`bob in the water`, '#Verb in the #Noun'],\n  // [`may is`, '#Person is'],\n]\ntest('match:', function (t) {\n  arr.forEach(function (a) {\n    const [str, match] = a\n    const doc = nlp(str).compute('tagRank')\n    const tags = doc.json()[0].terms.map(term => term.tagRank[0])\n    const m = doc.match(match)\n    const msg = `'${(str + \"' \").padEnd(20, ' ')}  - '${tags.join(', ')}'`\n    t.equal(m.text(), doc.text(), here + msg)\n  })\n  t.end()\n})\n"
  },
  {
    "path": "tests/two/variables/present-noun.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/present-noun] '\n\nconst arr = [\n  // present-plural\n  ['bakes', '#PresentTense'],\n  ['fakes', '#PresentTense'],\n  ['makes', '#PresentTense'],\n  ['mistakes', '#PresentTense'],\n  ['overtakes', '#PresentTense'],\n  ['retakes', '#PresentTense'],\n  ['forsakes', '#PresentTense'],\n  ['shakes', '#PresentTense'],\n  ['snakes', '#PresentTense'],\n  ['takes', '#PresentTense'],\n  ['undertakes', '#PresentTense'],\n\n  [`i wish that`, 'i #Infinitive .'],\n  [`that wish`, '. #Singular'],\n  [`he changes`, `#Noun #PresentTense`],\n  [`his changes`, `#Noun #Plural`],\n\n  // noun-verb\n  [`date the boy`, '#PresentTense #Determiner #Noun'],\n  [`date of birth`, '#Noun #Preposition #Noun'],\n  [`any flood`, '#Determiner #Noun'],\n  [`will flood`, '. #PresentTense'],\n  [`suddenly flood`, '. #PresentTense'],\n  [`not flood`, '. #PresentTense'],\n  [`we date`, '. #PresentTense'],\n  [`you flood`, '. #PresentTense'],\n\n  // infinitive-singular\n  [`date spencer`, '#Verb .'],\n  [`flash the`, '#Verb .'],\n  [`flash his`, '#Verb .'],\n  [`flash around`, '#Verb .'],\n  [`flood you`, '#Verb .'],\n  [`my flood`, '. #Noun'],\n  [`one flood`, '. #Noun'],\n  [`flash could`, '#Noun .'],\n  [`flash is`, '#Noun .'],\n\n  // the #Noun #Infinitive  ->Noun\n  [`the planning [process]`, `the #Noun #Noun`],\n  [`the printing press`, `the #Noun #Noun`],\n  [`the tip line`, `the #Noun #Noun`],\n  [`the defence budget`, `the #Noun #Noun`],\n  [`the cross cook`, `the #Noun #Noun`],\n  [`the security guard`, `the #Noun #Noun`],\n  [`the intersection sign`, `the #Noun #Noun`],\n\n  // the #Noun #Infinitive  ->Verb\n  [`did the banana say`, `. the #Noun #Infinitive`],\n  // [`did the skeleten show`, `. the #Noun #Infinitive`],\n  [`does the king want`, `. the #Noun #Infinitive`],\n  [`does the writer say`, `. the #Noun #Infinitive`],\n  [`let the messiah go`, `. the #Noun #Infinitive`],\n  [`the critics keep writing`, `the #Noun #Verb #Verb`],\n  [`the critics be`, `the #Noun #Infinitive`],\n  [`the captain put himself`, `the #Noun #Infinitive himself`],\n  [`the parties dispute which`, `the #Noun #Infinitive which`],\n  [`the Princess thought`, `the #Noun #PastTense`],\n  [`the feet kick him`, `the #Noun #Infinitive him`],\n  [`the midnight knock`, `the #Noun #Noun`],\n  [`the universal process`, `the #Adjective #Singular`],\n  [`the collective budget`, `the #Adjective #Singular`],\n  [`the work stress`, `the #Noun #Singular`],\n  [`the american touch`, `the #Demonym #Singular`],\n  [`the road upgrade`, `the #Noun #Singular`],\n  [`the city strain`, `the #Noun #Singular`],\n  [`the software patch`, `the #Noun #Singular`],\n  [`the toronto fire`, `the #Noun #Singular`],\n  // [`The paving-stone`, `the #Noun #Singular`],\n  // -> plurals\n  [`the universal processes`, `the #Adjective #Plural`],\n  [`the collective budgets`, `the #Adjective #Plural`],\n  // [`the work stresses`, `the #Noun #Plural`],\n  [`the american touches`, `the #Noun #Plural`],\n  [`the road upgrades`, `the #Noun #Plural`],\n  [`the city strains`, `the #Noun #Plural`],\n  // [`the software patches`, `the #Noun #Plural`],\n  // [`the toronto fires`, `the #Noun #Plural`],\n  [`The paving-stones`, `the #Adjective #Plural`],\n  // [`cost of living`, `#PastTense #Preposition #Noun`],\n  [`The similar TORRO scale ranges from`, 'the #Adjective #Noun #Noun #PresentTense from'],\n  // [`New project crowdsources help for Toronto's homeless`, '#Adjective #Noun #PresentTense #Noun for #Possessive #Noun'],\n  [`Bharti initiates talks`, '#Noun #PresentTense #Plural'],\n  [`Grandma opens a present with a pair`, '#Noun #PresentTense a #Noun with a #Noun'],\n\n  // [`a nice present`, 'a #Adjective #Noun'],//noun\n  [`present the trophy`, '#Verb the #Noun'],//verb\n  [`tony is present`, '#Person is #Adjective'],//adjective\n\n  [`in every bite`, 'in #Determiner #Noun'],\n  [`There was a prison break and I saw it`, 'there #Copula a #Noun #Noun and I #Verb it'],\n  [`we gotta do, damage control.`, 'we have got to do #Noun #Noun'],\n  [`Go to the chicken farm and take the hatchet.`, '#Verb to the #Noun #Noun and #Verb the #Noun'],\n  // [`He split 2 1980 fights with Roberto Duran`, '#Pronoun #Verb #Value #Value #Plural with #Person #Person'],\n  // [`what are those, fish hooks?`, 'what are . #Noun #Plural'],\n  [`the sweet potato fries.`, '#Determiner sweet #Noun #Plural'],\n  [`my friend's house.`, 'my #Noun #Noun'],\n  [`major record labels.`, '#Adjective #Noun #Plural'],\n  [`our mission of progress.`, '#Possessive #Noun of #Noun'],\n  [`the .dat file`, 'the #Noun #Noun'],\n  [`the 9pm show`, '#Determiner #Time #Noun'],\n  [`no tones`, 'no #Plural'],\n  [`& other types`, 'and other #Plural'],\n  [`40 gallons of water a day`, '#Value #Plural of #Noun a #Noun'],\n\n  ['3 trains were', '#Value #Noun #Verb'],\n  // ['help unmask the great slice', '#Verb #Verb the #Adjective #Noun'],\n  ['help Dubai heal', '#Verb #Noun #Verb'],\n  ['the euro sense', 'the #Noun #Noun'],\n  ['the lights come on', 'the #Plural #Verb #Particle'],\n  ['the letters concern', 'the #Plural #Verb'],\n  ['the thriving village', '#Determiner #Adjective #Noun'],\n  ['the roof got wet', 'the #Noun #Verb #Adjective'],\n  ['the aging process', 'the #Noun #Noun'],\n  ['the new start', 'the #Adjective #Noun'],\n  ['this cabinet post', '#Determiner #Noun #Noun'],\n  ['our drink', '#Possessive #Noun'],\n  ['our drinks', '#Possessive #Noun'],\n  ['mandatory spending', '#Adjective #Noun'],\n  // ['falling into diet traps', '#Gerund into #Noun #Plural'],\n  ['a flexible tape measure', 'a #Adjective #Noun #Noun'],\n  ['home-field advantage', '#Noun #Noun #Noun'],\n  ['while in this state', 'while in this #Noun'],\n  ['I’M camping', '#Pronoun #Copula #Gerund'],\n  ['dutch brewing giant', '#Noun #Noun #Noun'],\n  [`was running around stores.`, 'was #Gerund around #Plural'],\n  // ['mental age and calendar age', '#Noun #Noun and #Noun #Noun'],\n  ['side with traitors', '#Verb with #Plural'],\n\n  //determiner-corrections\n  ['this rocks dude', '#Determiner #Verb #Noun'],\n  // ['that rocks dude', '#Determiner #Verb #Noun'],\n  ['the rocks dude', '#Determiner #Plural #Noun'],\n  ['these rocks dude', '#Determiner #Plural #Noun'],\n  ['those rocks dude', '#Determiner #Plural #Noun'],\n  ['the test string', '#Determiner #Noun #Noun'],\n\n  ['The stream really runs', '#Determiner #Noun #Adverb #Verb'],\n  ['The nice stream really runs', '#Determiner #Adjective #Noun #Adverb #Verb'],\n  ['there are reasons', '#There #Copula #Plural'],\n  ['there were many walks', '#There #Copula #Adjective #Plural'],\n  ['there were the phase', '#There #Copula #Determiner #Noun'],\n  ['book the flight', '#Verb #Determiner #Noun'],\n  ['the euro challenge to', '#Determiner #Noun #Singular to'],\n  ['the euro challenge', '#Determiner #Noun #Noun'],\n  [`appeal court`, `#Noun #Noun`],\n  // [`uncovered wounds heal faster`, '#Adjective #Noun #Verb #Comparative'],\n  // [`become overly weakened`, '#Verb #Adverb #PastTense'],\n  // [`a completely beaten man`, 'a #Adverb #Verb #Noun'],\n  // [`the said card`, 'the #Adjective #Noun'],\n  // [`one super strong character`, '. #Adverb #Adjective #Noun'],\n  // [`have given up on reason`, '#Auxiliary #PhrasalVerb #Particle on #Noun'],\n  // [`you have some valid points`, '#Noun #Verb some #Adjective #Plural'],\n\n  [`he changes`, '. #PresentTense'],\n  [`our changes`, '. #Noun'],\n  [`then changes`, '. #PresentTense'],\n  [`quickly changes`, '. #PresentTense'],\n  [`seven changes`, '. #Noun'],\n  [`with changes`, '. #Noun'],\n  [`without changes`, '. #Noun'],\n  [`abrupt changes`, '. #Noun'],\n  [`and changes gears`, 'and #PresentTense .'],\n  [`changes the gears`, '#PresentTense . .'],\n  [`changes my gears`, '#PresentTense . .'],\n  [`changes are coming`, '#Noun . .'],\n  [`changes quickly`, '#PresentTense #Adverb'],\n  [`changes seven things`, '#PresentTense #Value #Plural'],\n  [`changes into batman`, '#PresentTense . .'],\n\n  // two consecutive variables\n  // [`cut costs`, '#Verb #Plural'],\n  // ['The stream runs', '#Determiner #Noun #Verb'],\n\n]\ntest('match:', function (t) {\n  arr.forEach(function (a) {\n    const [str, match] = a\n    const doc = nlp(str).compute('tagRank')\n    const tags = doc.json()[0].terms.map(term => term.tagRank[0])\n    const m = doc.match(match)\n    const msg = `'${(str + \"' \").padEnd(20, ' ')}  - '${tags.join(', ')}'`\n    t.equal(m.text(), doc.text(), here + msg)\n  })\n  t.end()\n})"
  },
  {
    "path": "tests/two/variables/verb-phrase.test.js",
    "content": "import test from 'tape'\nimport nlp from '../_lib.js'\nconst here = '[two/verb-phrase] '\n\nconst arr = [\n\n  // verb suffixes\n  ['lied', '#PastTense'],\n  ['lies', '#PresentTense'],\n  ['owed', '#PastTense'],\n  ['owes', '#PresentTense'],\n  ['aced', '#PastTense'],\n  ['vied', '#PastTense'],\n  ['vies', '#PresentTense'],\n  ['husked', '#PastTense'],\n  ['husks', '#PresentTense'],\n  ['masked', '#PastTense'],\n  ['we planned', 'we #PastTense'],\n  ['hummed', '#PastTense'],\n  ['wash', '#Infinitive'],\n  ['walked', '#PastTense'],\n  ['rewash', '#Infinitive'],\n  ['quickly re-wash', '#Adverb #Infinitive'],\n  ['quickly re-washed', '#Adverb #PastTense'],\n  ['quickly rewashed', '#Adverb #PastTense'],\n  ['rewashes', '#PresentTense'],\n  ['rewashing', '#Gerund'],\n  ['purchase the milk', '#Infinitive the milk'],\n  ['repurchase the milk', '#Infinitive the milk'],\n  ['re-purchase', '#Infinitive'],\n  ['unpurchase', '#Verb'],\n  ['purchased', '#PastTense'],\n  ['unpurchasing', '#Gerund'],\n  ['unpurchases', '#Verb'],\n  ['will resolve to fight', 'will #Infinitive to #Verb'],\n  ['the resolve to fight', 'the #Singular to #Verb'],\n  ['restructure', '#Infinitive'],\n  ['reconcile', '#Infinitive'],\n  ['repeat our ad', '#Infinitive #Possessive #Noun'],\n\n  ['write off', '#Infinitive #PhrasalVerb'],\n  ['writes off', '#PhrasalVerb #Particle'],\n  ['wrote off', '#PastTense #Particle'],\n  // ['tided over', '#PastTense #Particle'],\n\n\n  //phrasal verb tense\n  ['head-over', '#PresentTense #Particle'],\n  ['head-under', '#PresentTense #Particle'],\n  ['haze-over', '#PresentTense #Particle'],\n  ['hazed-over', '#PastTense #Particle'],\n  ['headed-over', '#PastTense #Particle'],\n  ['heading-under', '#Gerund #Particle'],\n  ['healing-over', '#Gerund #Particle'],\n\n  //ambiguous adverbs\n  ['it was pretty', '#Noun #Copula #Adjective'],\n  ['it was pretty cool', '#Noun #Copula #Adverb #Adjective'],\n  [`super-cool`, '#Adverb #Adjective'],\n  ['it was really pretty cool', '#Noun #Copula #Adverb #Adverb #Adjective'],\n  ['it was just', '#Noun #Copula #Adjective'],\n  ['it was just gorgeous', '#Noun #Copula #Adverb #Adjective'],\n\n  // modal verbs\n  ['can buy', '#Modal #Verb'],\n  ['he can', '#Pronoun #Verb'],\n  ['the can', '#Determiner #Noun'],\n\n  ['will earn', '#Modal #Verb'],\n  ['they will', '#Pronoun #Verb'],\n  ['the will', '#Determiner #Noun'],\n\n  ['may leave', '#Verb #Infinitive'],\n  ['they may', '#Pronoun #Verb'],\n  ['this may was', '#Determiner #Noun #Copula'],\n\n  [`walk in on`, '#PhrasalVerb #Particle #Preposition'],\n  [`standing out in`, '#PhrasalVerb #Particle #Preposition'],\n  [`stood up in`, '#PastTense #Particle #Preposition'],\n  [`stood out on`, '#PastTense #Particle #Preposition'],\n  [`walked out in`, '#PastTense #Particle #Preposition'],\n  [`looked back on`, '#PastTense #Particle #Preposition'],\n  // [`is back on`, '#Copula #Adjective #Preposition'],\n\n\n  [`quite awfully swimming`, '#Adverb #Adverb #Verb'],\n  ['is doing well', '#Copula #Gerund #Adverb'],\n  [`I'm fuckin' around with two geese`, `#Pronoun #Copula #Gerund . #Preposition #Value #Plural`],\n\n  // complex phrases\n  ['we help stop tragedies', '#Pronoun #Verb #Verb #Plural'],\n  ['he used to live', '#Noun #Verb #Verb #Infinitive'],\n\n]\ntest('match:', function (t) {\n  arr.forEach(function (a) {\n    const [str, match] = a\n    const doc = nlp(str).compute('tagRank')\n    const tags = doc.json()[0].terms.map(term => term.tagRank[0])\n    const m = doc.match(match)\n    const msg = `'${(str + \"' \").padEnd(20, ' ')}  - '${tags.join(', ')}'`\n    t.equal(m.text(), doc.text(), here + msg)\n  })\n  t.end()\n})"
  },
  {
    "path": "three/package.json",
    "content": "{\n\t\"name\": \"compromise-three\",\n\t\"version\": \"14.14.4\",\n\t\"description\": \"\",\n\t\"type\": \"module\",\n\t\"module\": \"./../src/three.js\",\n\t\"main\": \"./../src/three.js\",\n\t\"types\": \"./../types/three.d.ts\",\n\t\"exports\": {\n\t\t\"./package.json\": \"./package.json\",\n\t\t\".\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./../types/three/three.d.ts\",\n\t\t\t\t\"default\": \"./../src/three.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./../types/three.d.cts\",\n\t\t\t\t\"default\": \"./../builds/three/compromise-three.cjs\"\n\t\t\t}\n\t\t}\n\t},\n\t\"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n\t\"license\": \"MIT\",\n\t\"sideEffects\": true\n}"
  },
  {
    "path": "tokenize/package.json",
    "content": "{\n\t\"name\": \"compromise-tokenize\",\n\t\"version\": \"14.14.3\",\n\t\"description\": \"\",\n\t\"type\": \"module\",\n\t\"module\": \"./../src/one.js\",\n\t\"main\": \"./../src/one.js\",\n\t\"types\": \"./../types/one.d.ts\",\n\t\"exports\": {\n\t\t\"./package.json\": \"./package.json\",\n\t\t\".\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./../types/one/one.d.ts\",\n\t\t\t\t\"default\": \"./../src/one.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./../types/one.d.cts\",\n\t\t\t\t\"default\": \"./../builds/one/compromise-one.cjs\"\n\t\t\t}\n\t\t}\n\t},\n\t\"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n\t\"license\": \"MIT\",\n\t\"sideEffects\": true\n}\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2015\" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */,\n    \"module\": \"commonjs\" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,\n    \"strict\": false /* Enable all strict type-checking options. */,\n    \"esModuleInterop\": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,\n    \"forceConsistentCasingInFileNames\": true /* Disallow inconsistently-cased references to the same file. */\n  },\n  \"files\": [\"types/three.d.ts\"],\n  \"include\": [\"types/index.d.ts\"]\n}\n"
  },
  {
    "path": "two/package.json",
    "content": "{\n\t\"name\": \"compromise-two\",\n\t\"version\": \"14.14.4\",\n\t\"description\": \"\",\n\t\"type\": \"module\",\n\t\"module\": \"./../src/two.js\",\n\t\"main\": \"./../src/two.js\",\n\t\"types\": \"./../types/two.d.ts\",\n\t\"exports\": {\n\t\t\"./package.json\": \"./package.json\",\n\t\t\".\": {\n\t\t\t\"import\": {\n\t\t\t\t\"types\": \"./../types/two/two.d.ts\",\n\t\t\t\t\"default\": \"./../src/two.js\"\n\t\t\t},\n\t\t\t\"require\": {\n\t\t\t\t\"types\": \"./../types/two.d.cts\",\n\t\t\t\t\"default\": \"./../builds/two/compromise-two.cjs\"\n\t\t\t}\n\t\t}\n\t},\n\t\"author\": \"Spencer Kelly <spencermountain@gmail.com> (http://spencermounta.in)\",\n\t\"license\": \"MIT\",\n\t\"sideEffects\": true\n}"
  },
  {
    "path": "types/misc.d.ts",
    "content": "export type Document = Term[][]\n\nexport type Pointer = [n?: number, start?: number, end?: number, startId?: string, endId?: string]\n\nexport type outMethods = 'text' | 'normal' | 'offset' | 'terms' | 'topk' | 'json' | 'tags' | 'array' | 'debug'\n\nexport type Groups = object\n\nexport interface Term {\n  text: string,\n  pre: string,\n  post: string,\n  normal: string,\n\n  // in /two\n  tags?: Set<string>,\n  index?: [n?: number, start?: number],\n  id?: string,\n  chunk?: string,\n  dirty?: boolean\n\n  // other things you may find...\n  syllables?: string[],\n}\n\n// possible values to .json()\nexport interface JsonProps {\n  /**  a perfect copy of the input text */\n  text?: boolean\n  /** normalized whitespace, case, unicode, punctuation */\n  normal?: boolean\n  /** lowercase, trimmed, contractions expanded. */\n  reduced?: boolean\n  /** cleanup whitespace */\n  trim?: boolean\n  /** character-position where this begins */\n  offset?: boolean\n  /** frequency of this match in the document */\n  count?: boolean\n  /**  remove duplicate results*/\n  unique?: boolean\n  /** starting term # in document */\n  index?: boolean\n  /** options for each term */\n  terms?: {\n    text?: boolean\n    normal?: boolean\n    clean?: boolean\n    implicit?: boolean\n    tags?: boolean\n    whitespace?: boolean\n    id?: boolean\n    offset?: boolean\n    bestTag?: boolean\n  }\n}\n\n// a key-value object of words, terms\nexport interface Lexicon {\n  [key: string]: string\n}\n\nexport interface Plugin {\n  methods?: object,\n  model?: object,\n  compute?: object,\n  hooks?: string[],\n  tags?: object,\n  words?: object,\n  frozen?: {[key: string]: string},\n  lib?: () => object,\n  api?: (fn: (view: any) => {}) => void,  //should be View\n  mutate?: (fn: (world: object) => {}) => void,\n}\n\nexport interface matchOptions {\n  fuzzy?: number,\n  caseSensitive?: boolean,\n}\n\nexport interface Match {\n  match: string,\n  tag?: string | string[],\n  unTag?: string | string[],\n  group?: string | number,\n  reason?: string,\n  freeze?: boolean\n}\n\nexport interface Net {\n  hooks: object,\n  always?: any,\n  isNet: boolean\n}\n\nexport type ParsedMatch = object[]\n"
  },
  {
    "path": "types/one.d.cts",
    "content": "import nlp from \"./one.d\";\n\nexport = nlp\n\n"
  },
  {
    "path": "types/one.d.ts",
    "content": "import type { Lexicon, Plugin, matchOptions, Match, Net, ParsedMatch } from './misc.d.ts'\nimport type View from './view/one.d.ts'\n\n/** parse a given text */\ndeclare function nlp(text: string, lexicon?: Lexicon): View\n\n// Constructor\ndeclare namespace nlp {\n  /** interpret text without tagging */\n  export function tokenize(text: string, lexicon?: Lexicon): View\n  /** scan through text with minimal analysis */\n  export function lazy(text: string, match?: string): View\n  /** mix-in a compromise plugin */\n  export function plugin(plugin: Plugin): any\n  /** mix-in a compromise plugin */\n  export function extend(plugin: Plugin): any\n  /** turn a match-string into json */\n  export function parseMatch(match: string, opts?: matchOptions): ParsedMatch\n  /** grab library internals */\n  export function world(): object\n  /** grab library metadata */\n  export function model(): object\n  /** grab exposed library methods */\n  export function methods(): object\n  /** which compute functions run automatically */\n  export function hooks(): string[]\n  /**  log our decision-making for debugging */\n  export function verbose(toLog?: boolean | string): any\n  /**  current semver version of the library */\n  export const version: string\n  /** connect new tags to tagset graph */\n  export function addTags(tags: object): any\n  /** add new words to internal lexicon */\n  export function addWords(words: Lexicon, isFrozen?:boolean): any\n  /** turn a list of words into a searchable graph */\n  export function buildTrie(words: string[]): object\n  /** compile a set of match objects to a more optimized form */\n  export function buildNet(matches: Match[]): Net\n  /** add words to the autoFill dictionary */\n  export function typeahead(words: Lexicon): any\n  /** export internal methods for plugins */\n  export interface TypedPlugin<Methods extends object> extends Plugin { methods: Methods }\n}\n\nexport default nlp\n\n"
  },
  {
    "path": "types/three.d.cts",
    "content": "import nlp from \"./three.d\";\n\nexport = nlp\n\n"
  },
  {
    "path": "types/three.d.ts",
    "content": "import type { Lexicon, Plugin, matchOptions, Match, Net } from './misc.d.ts'\nimport type View from './view/three.d.ts'\n\n/** parse a given text */\ndeclare function nlp<PluginTypes = {}>(text: string, lexicon?: Lexicon): View & PluginTypes\n\n// Constructor\ndeclare namespace nlp {\n  /** interpret text without tagging */\n  export function tokenize(text: string, lexicon?: Lexicon): View\n  /** scan through text with minimal analysis */\n  export function lazy(text: string, match?: string): View\n  /** mix in a compromise-plugin */\n  export function plugin(plugin: Plugin): any\n  /** mix-in a compromise plugin */\n  export function extend(plugin: Plugin): any\n  /** turn a match-string into json */\n  export function parseMatch(match: string, opts?: matchOptions): object[]\n  /** grab library internals */\n  export function world(): object\n  /** grab library metadata */\n  export function model(): object\n  /** grab exposed library methods */\n  export function methods(): object\n  /** which compute functions run automatically */\n  export function hooks(): string[]\n  /**  log our decision-making for debugging */\n  export function verbose(toLog?: boolean | string): any\n  /**  current semver version of the library */\n  export const version: string\n  /** connect new tags to tagset graph */\n  export function addTags(tags: object): any\n  /** add new words to internal lexicon */\n  export function addWords(words: Lexicon, isFrozen?:boolean): any\n  /** turn a list of words into a searchable graph */\n  export function buildTrie(words: string[]): object\n  /** compile a set of match objects to a more optimized form */\n  export function buildNet(matches: Match[]): Net\n  /** add words to the autoFill dictionary */\n  export function typeahead(words: Lexicon): any\n  /** export library for extending with plugins */\n  export interface TypedPlugin<Methods extends object> extends Plugin { methods: Methods }\n}\n\nexport default nlp\n\n"
  },
  {
    "path": "types/two.d.cts",
    "content": "import nlp from \"./two.d\";\n\nexport = nlp\n\n"
  },
  {
    "path": "types/two.d.ts",
    "content": "import type { Lexicon, Plugin, matchOptions, Match, Net } from './misc.d.ts'\nimport type View from './view/two.d.ts'\n\n/** parse a given text */\ndeclare function nlp(text: string, lexicon?: Lexicon): View\n\n// Constructor\ndeclare namespace nlp {\n  /** interpret text without tagging */\n  export function tokenize(text: string, lexicon?: Lexicon): View\n  /** scan through text with minimal analysis */\n  export function lazy(text: string, match?: string): View\n  /** mix in a compromise-plugin */\n  export function plugin(plugin: Plugin): any\n  /** mix-in a compromise plugin */\n  export function extend(plugin: Plugin): any\n  /** turn a match-string into json */\n  export function parseMatch(match: string, opts?: matchOptions): object[]\n  /** grab library internals */\n  export function world(): object\n  /** grab library metadata */\n  export function model(): object\n  /** grab exposed library methods */\n  export function methods(): object\n  /** which compute functions run automatically */\n  export function hooks(): string[]\n  /**  log our decision-making for debugging */\n  export function verbose(toLog?: boolean | string): any\n  /**  current semver version of the library */\n  export const version: string\n  /** connect new tags to tagset graph */\n  export function addTags(tags: object): any\n  /** add new words to internal lexicon */\n  export function addWords(words: Lexicon, isFrozen?:boolean): any\n  /** turn a list of words into a searchable graph */\n  export function buildTrie(words: string[]): object\n  /** compile a set of match objects to a more optimized form */\n  export function buildNet(matches: Match[]): Net\n  /** add words to the autoFill dictionary */\n  export function typeahead(words: Lexicon): any\n  /** export internal methods for plugins */\n  export interface TypedPlugin<Methods extends object> extends Plugin { methods: Methods }\n}\n\nexport default nlp\n\n"
  },
  {
    "path": "types/view/one.d.cts",
    "content": "import View from \"./one.d\";\n\nexport = View\n\n"
  },
  {
    "path": "types/view/one.d.ts",
    "content": "import type { Document, Pointer, Groups, JsonProps, outMethods, matchOptions, Term, Net, ParsedMatch } from '../misc.d.ts'\n\nexport type Matchable = string | View | Net | ParsedMatch\n\nexport interface ReplaceWithProps  {\n  /** preserve the case of the original, ignoring the case of the replacement */\n  case?: boolean\n  /** preserve whether the original was a possessive */\n  possessives?: boolean\n  /** preserve all of the tags of the original, regardless of the tags of the replacement */\n  tags?: boolean\n}\n\ndeclare class View {\n  // Utils\n  /** is this document empty? */\n  found: boolean\n  /** get a list of term objects for this view */\n  docs: Document\n  /** get the full parsed text */\n  document: Document\n  /** the indexes for the current view */\n  pointer: Pointer[] | null\n  /** explicit indexes for the current view */\n  fullPointer: Pointer[]\n  /** access internal library methods */\n  methods: object\n  /** access internal library data */\n  model: object\n  /** which compute methods run by default */\n  hooks: string[]\n  /** helper for detecting a compromise object */\n  isView: boolean\n  /** count the # of characters of each match */\n  length: number\n\n  /** create a new view, from this document */\n  update: (pointer: Pointer | null) => View\n  /** turn a Verb or Noun view into a normal one */\n  toView: (pointer: Pointer | null) => View\n  /** create a new document */\n  fromText: (text: string) => View\n  /** .docs [alias] */\n  termList: () => Term[]\n\n  /** run a named operation on the document */\n  compute: (method: string | string[]) => View\n  /** deep-copy the document, so that no references remain */\n  clone: (shallow?: boolean) => View\n\n  // Loops\n  /** run a function on each phrase, as an individual document */\n  forEach: (fn: (m: View) => void) => View\n  /** run each phrase through a function, and create a new document */\n  map: (fn: (m: View) => any, emptyResult?: any) => View | []\n  /** return only the phrases that return true */\n  filter: (fn: (m: View) => boolean) => View\n  /** return a document with only the first phrase that matches */\n  find: (fn: (m: View) => boolean) => View | undefined\n  /** return true or false if there is one matching phrase */\n  some: (fn: (m: View) => boolean) => View\n  /** sample a subset of the results */\n  random: (n?: number) => View\n\n  // Accessors\n  /** split-up results by each individual term */\n  terms: (n?: number) => View\n  /** grab a specific named capture group */\n  groups: (name?: string) => View | Groups\n  /** use only the nth result */\n  eq: (n: number) => View\n  /** use only the first result(s) */\n  first: (n?: number) => View\n  /** use only the last result(s) */\n  last: (n?: number) => View\n  /** get the first word in each match */\n  firstTerms: () => View\n  /** get the end word in each match */\n  lastTerms: () => View\n  /** grab a subset of the results */\n  slice: (start: number, end?: number) => View\n  /** return the whole original document ('zoom out') */\n  all: () => View\n  /** return the full original sentence for each match */\n  fullSentences: () => View\n  /** return an empty view */\n  none: () => View\n  /** are these two views of the same document? */\n  isDoc: (view?: View) => boolean\n  /** count the # of terms in each match */\n  wordCount: () => number\n\n  // Match\n  /** return matching patterns in this doc */\n  match: (match: Matchable, group?: string | number, options?: matchOptions) => View\n  /** return only the first match */\n  matchOne: (match: Matchable, group?: string | number, options?: matchOptions) => View\n  /** Return a boolean if this match exists */\n  has: (match: Matchable, group?: string | number, options?: matchOptions) => boolean\n  /** return each current phrase, only if it contains this match */\n  if: (match: Matchable, group?: string | number, options?: matchOptions) => View\n  /** Filter-out any current phrases that have this match */\n  ifNo: (match: Matchable, group?: string | number, options?: matchOptions) => View\n\n  /** return the terms before each match */\n  before: (match: Matchable, group?: string | number, options?: matchOptions) => View\n  /** return the terms after each match */\n  after: (match: Matchable, group?: string | number, options?: matchOptions) => View\n  /** alias of .before() */\n  lookBehind: (match: Matchable, group?: string | number, options?: matchOptions) => View\n  /** alias of .before() */\n  lookBefore: (match: Matchable, group?: string | number, options?: matchOptions) => View\n  /** alias of .after() */\n  lookAhead: (match: Matchable, group?: string | number, options?: matchOptions) => View\n  /** alias of .after() */\n  lookAfter: (match: Matchable, group?: string | number, options?: matchOptions) => View\n\n  /** add any immediately-preceding matches to the view*/\n  growLeft: (match: Matchable, group?: string | number, options?: matchOptions) => View\n  /** add any immediately-following matches to the view*/\n  growRight: (match: Matchable, group?: string | number, options?: matchOptions) => View\n  /** expand the view with any left-or-right matches*/\n  grow: (match: Matchable, group?: string | number, options?: matchOptions) => View\n  /** apply a sequence of match objects to the document */\n  sweep: (match: Net, opts?: object) => { view: View, found: object[] }\n\n  /** .split() [alias] */\n  splitOn: (match?: Matchable, group?: string | number) => View\n  /** separate everything after the match as a new phrase */\n  splitBefore: (match?: Matchable, group?: string | number) => View\n  /** separate everything before the word, as a new phrase */\n  splitAfter: (match?: Matchable, group?: string | number) => View\n  /** splitAfter() alias */\n  split: (match?: Matchable, group?: string | number) => View\n  // merge any neighbouring terms in the match\n  join: () => View\n  // merge any neighbouring terms that match conditions\n  joinIf: (leftMatch?: Matchable, rightMatch?: Matchable) => View\n\n  // Case\n  /** turn every letter of every term to lower-cse */\n  toLowerCase: () => View\n  /** turn every letter of every term to upper case */\n  toUpperCase: () => View\n  /** upper-case the first letter of each term */\n  toTitleCase: () => View\n  /** remove whitespace and title-case each term */\n  toCamelCase: () => View\n\n  // Insert\n  /** add these new things to the end */\n  concat: (input: string | View) => View\n  /** add these words before each match */\n  insertBefore: (input: string | View) => View\n  /** insertBefore() alias */\n  prepend: (input: string | View) => View\n  /** add these words after each match */\n  insertAfter: (text: string | View) => View\n  /** insertAfter() alias */\n  append: (text: string | View) => View\n  /** insertAfter() alias */\n  insert: (text: string | View) => View\n  /** fully remove these terms from the document */\n  remove: (match: Matchable) => View\n  /** alias for .remove() */\n  delete: (match: Matchable) => View\n  /** search and replace match with new content */\n  replace: (from: string | View, to?: string | Function, keep?: object) => View\n  /** substitute-in new content */\n  replaceWith: (to: string | Function, keep?: ReplaceWithProps) => View\n\n  /** remove any duplicate matches */\n  unique: () => View\n  /**reverse the order of the matches, but not the words */\n  reverse: () => View\n  /**re-arrange the order of the matches (in place) */\n  sort: (method?: string | Function) => View\n  /**cleanup various aspects of the words*/\n  normalize: (options?:object) => View\n\n  // Whitespace\n  /** add this punctuation or whitespace before each match */\n  pre: (str?: string, concat?: boolean) => View\n  /** add this punctuation or whitespace after each match */\n  post: (str?: string, concat?: boolean) => View\n  /** remove start and end whitespace */\n  trim: () => View\n  /** connect words with hyphen, and remove whitespace */\n  hyphenate: () => View\n  /** remove hyphens between words, and set whitespace */\n  dehyphenate: () => View\n  /** alias for .dehyphenate() */\n  deHyphenate: () => View\n  /** add quotation marks around selections */\n  toQuotations: (start?: string, end?: string) => View\n  /** alias for toQuotations() */\n  toQuotation: (start?: string, end?: string) => View\n  /** add parentheses around selections */\n  toParentheses: (start?: string, end?: string) => View\n\n\n  // Output\n  /** return the document as text */\n  text: (options?: string | object) => string\n  /** pull out desired metadata from the document */\n  json: (options?: JsonProps | string) => any\n  /** pretty-print the current document and its tags */\n  debug: () => View\n  /** some named output formats */\n  out: (format?: outMethods) => any\n  /** produce an html string */\n  html: (toHighlight: object) => string\n  /** produce an html string */\n  wrap: (matches: object) => string\n\n\n  // ### Pointers\n  /** return all matches without duplicates */\n  union: (match: Matchable) => View\n  /** .union() alias */\n  and: (match: Matchable) => View\n  /** return only duplicate matches */\n  intersection: (match: Matchable) => View\n  /** return all results except for this */\n  not: (match: Matchable, options?: any) => View\n  /** .not() alias */\n  difference: (match: Matchable, options?: any) => View\n  /** get everything that is not a match */\n  complement: (match: Matchable) => View\n  /** remove overlaps in matches */\n  settle: (match: Matchable) => View\n\n\n  // Tag\n  /** Give all terms the given tag */\n  tag: (tag: string, reason?: string) => View\n  /** Only apply tag to terms if it is consistent with current tags */\n  tagSafe: (tag: string, reason?: string) => View\n  /** Remove this term from the given terms */\n  unTag: (tag: string, reason?: string) => View\n  /** return only the terms that can be this tag */\n  canBe: (tag: string) => View\n\n  // Cache\n  /** freeze the current state of the document, for speed-purposes */\n  cache: (options?: object) => View\n  /** un-freezes the current state of the document, so it may be transformed */\n  uncache: (options?: object) => View\n  \n  /** prevent current tags from being removed */\n  freeze: () => View\n  /** allow current tags to be changed [default] */\n  unfreeze: () => View\n\n  /** quick find for an array of string matches */\n  lookup: (trie: object | string[], opts?: object) => View\n  /** assume any type-ahead prefixes */\n  autoFill: () => View\n\n}\n\nexport default View\n"
  },
  {
    "path": "types/view/three.d.cts",
    "content": "import Three from \"./three.d\";\n\nexport = Three\n\n"
  },
  {
    "path": "types/view/three.d.ts",
    "content": "import type View from './two.d.ts'\n\ninterface Three extends View {\n  // Selections\n  /** split-up results into multi-term phrases */\n  clauses: (n?: number) => View\n  /** split-up noun-phrase and verb-phrases */\n  chunks: () => View\n\n  /** clean-up the document, in various ways */\n  normalize: (options?: string | object) => View\n\n  /** remove any people, places, and organizations */\n  redact: (opts?: object) => View\n\n  /** return all terms connected with a hyphen or dash like `'wash-out'`*/\n  hyphenated: (n?: number) => View\n  /** return terms like `'#nlp'` */\n  hashTags: (n?: number) => View\n  /** return terms like `'hi@compromise.cool'` */\n  emails: (n?: number) => View\n  /** return terms like `💋` */\n  emoji: (n?: number) => View\n  /** return  terms like `:)` */\n  emoticons: (n?: number) => View\n  /** return terms like `'@nlp_compromise'`*/\n  atMentions: (n?: number) => View\n  /** return terms like `'compromise.cool'` */\n  urls: (n?: number) => View\n  /** return terms like `'he'` */\n  pronouns: (n?: number) => View\n  /** return terms like `'but'`*/\n  conjunctions: (n?: number) => View\n  /** return terms like `'of'`*/\n  prepositions: (n?: number) => View\n  /** return terms like `'Dr.'`*/\n  honorifics: (n?: number) => View\n  /** return terms like `'st.'`*/\n  abbreviations: (n?: number) => View\n  /** return terms like `'(939) 555-0113'` */\n  phoneNumbers: (n?: number) => View\n\n  // Subsets\n  /** return terms like `'FBI'` */\n  acronyms: (n?: number) => Acronyms\n  /** return anything inside (parentheses) */\n  parentheses: (n?: number) => Parentheses\n  /** return terms like \"Spencer's\" */\n  possessives: (n?: number) => Possessives\n  /** return any terms inside 'quotation marks' */\n  quotations: (n?: number) => Quotations\n  /** return any slashed terms like 'love/hate' */\n  slashes: (n?: number) => Slashes\n  /** return words like \"clean\" */\n  adjectives: (n?: number) => Adjectives\n  /** return words like \"quickly\" */\n  adverbs: (n?: number) => Adverbs\n\n  /** return noun phrases in the view */\n  nouns: (n?: number, opts?: object) => Nouns\n  /** return any numbers in the view */\n  numbers: (n?: number, opts?: object) => Numbers\n  /** return any percentages in the view */\n  percentages: (n?: number, opts?: object) => Numbers\n  /** return any money in the view */\n  money: (n?: number, opts?: object) => Numbers\n  /** return any fractions in the view */\n  fractions: (n?: number, opts?: object) => Fractions\n\n\n  /** return full sentences in the view */\n  sentences: (n?: number, opts?: object) => Sentences\n  /** find full sentences of any questions in the view */\n  questions: (n?: number, opts?: object) => View\n  /** return any subsequent terms tagged as a Verb */\n  verbs: (n?: number) => Verbs\n  /** return person names like `'John A. Smith'`*/\n  people: (n?: number) => People\n  /** return location names like `'Paris, France'`*/\n  places: (n?: number) => View\n  /** return companies and org names like `'Google Inc.'`*/\n  organizations: (n?: number) => View\n  /** return people, places, and organizations */\n  topics: (n?: number) => View\n}\n\n// Nouns class\nexport interface Nouns extends View {\n  /** grab the parsed noun-phrase */\n  parse: (n?: number) => object[]\n  /** return only plural nouns */\n  isPlural: () => View\n  /** get any adjectives describing this noun*/\n  adjectives: () => View\n  /** 'football captain' → 'football captains' */\n  toPlural: (setArticle?: boolean) => View\n  /** 'turnovers' → 'turnover' */\n  toSingular: (setArticle?: boolean) => View\n}\n\nexport interface Numbers extends View {\n  /** grab the parsed number */\n  parse: (n?: number) => object[]\n  /** grab the parsed number */\n  get: (n?: number) => number | number[]\n  /** grab 'kilos' from `25 kilos' */\n  // units: () => View\n  /** return only ordinal numbers */\n  isOrdinal: () => View\n  /** return only cardinal numbers */\n  isCardinal: () => View\n  /** return only numbers with the given unit(s), like 'km' */\n  isUnit: (units: string | string[] | object) => View\n  /** convert number to `5` or `5th` */\n  toNumber: () => View\n  /** add commas, or nicer formatting for numbers */\n  toLocaleString: () => View\n  /** convert number to `five` or `fifth` */\n  toText: () => View\n  /** convert number to `five` or `5` */\n  toCardinal: () => View\n  /** convert number to `fifth` or `5th` */\n  toOrdinal: () => View\n  /** return numbers with this value */\n  isEqual: () => View\n  /** return numbers bigger than n */\n  greaterThan: (min: number) => View\n  /** return numbers smaller than n */\n  lessThan: (max: number) => View\n  /** return numbers between min and max */\n  between: (min: number, max: number) => View\n  /** set number to n */\n  set: (n: number) => View\n  /** increase number by n */\n  add: (n: number) => View\n  /** decrease number by n*/\n  subtract: (n: number) => View\n  /** increase number by 1 */\n  increment: () => View\n  /** decrease number by 1*/\n  decrement: () => View\n}\n\nexport interface Fractions extends View {\n  /** grab the parsed number */\n  parse: (n?: number) => object[]\n  /** grab the parsed number */\n  get: (n?: number) => number | number[]\n  /** convert '1/4' to `0.25` */\n  toDecimal: () => View\n  /** convert 'one fourth' to `1/4` */\n  toFraction: () => View\n  /** convert '1/4' to '1/4th' */\n  toOrdinal: () => View\n  /** convert '1/4th' to '1/4' */\n  toCardinal: () => View\n  /** convert '1/4' to `25%` */\n  toPercentage: () => View\n}\n\n// Sentences class\nexport interface Sentences extends View {\n  /** grab the parsed sentence */\n  parse: (n?: number) => object[]\n  /** 'will go' → 'went' */\n  toPastTense: () => View\n  /** 'walked' → 'walks' */\n  toPresentTense: () => View\n  /** 'walked' → 'will walk' */\n  toFutureTense: () => View\n  /** 'walks' → 'walk' */\n  toInfinitive: () => View\n  /** 'walks' → 'walking' */\n  // toGerund: () => View\n  /** 'he is cool' → 'he is not cool' */\n  toNegative: () => View\n  /** 'he isn't cool' -> 'he is cool' */\n  toPositive: () => View\n  /** keep only questions */\n  isQuestion: () => View\n  /** keep only sentences with an exclamation-mark*/\n  isExclamation: () => View\n  /** remove questions, and exclamations */\n  isStatement: () => View\n}\n\nexport interface People extends View {\n  /** get first/last/middle names */\n  parse: () => object[]\n}\n\n// Verbs class\nexport interface Verbs extends View {\n  /** grab the parsed verb-phrase */\n  parse: (n?: number) => object[]\n  /** grab what [doing] the verb */\n  subjects: () => View\n  /** return the adverbs describing this verb */\n  adverbs: () => View\n  /** return only singular nouns */\n  isSingular: () => View\n  /** return only plural nouns */\n  isPlural: () => View\n  /** only verbs that are instructions*/\n  isImperative: () => View\n\n  /** 'walks' → 'walk' */\n  toInfinitive: () => View\n  /** 'walked' → 'walks' */\n  toPresentTense: () => View\n  /** 'will go' → 'went' */\n  toPastTense: () => View\n  /** 'walked' → 'will walk' */\n  toFutureTense: () => View\n  /** 'walks' → 'walking' */\n  toGerund: () => View\n  /** 'walks' → 'has walked' */\n  toPastParticiple: () => View\n\n  /** return all forms of these verbs */\n  conjugate: () => object[]\n  /** return verbs with 'not' */\n  isNegative: () => View\n  /** only verbs without 'not'*/\n  isPositive: () => View\n  /** \"didn't study\" → 'studied' */\n  toPositive: () => View\n  /** 'went' → 'did not go'*/\n  toNegative: () => View\n}\n\nexport interface Acronyms extends View {\n  /** 'F.B.I.' -> 'FBI' */\n  strip: () => View\n  /** 'FBI' -> 'F.B.I.' */\n  addPeriods: () => View\n}\nexport interface Parentheses extends View {\n  /** remove ( and ) punctuation */\n  strip: () => View\n}\nexport interface Possessives extends View {\n  /** \"spencer's\" -> \"spencer\" */\n  strip: () => View\n}\nexport interface Quotations extends View {\n  /** remove leading and trailing quotation marks */\n  strip: () => View\n}\nexport interface Slashes extends View {\n  /** turn 'love/hate' into 'love hate' */\n  split: () => View\n}\n\nexport interface Adjectives extends View {\n  /** get the words describing this adjective */\n  adverbs: () => View\n  /**  return all forms of these */\n  conjugate: () => object[]\n  /** 'quick' -> 'quicker' */\n  toComparative: (n?: number) => View\n  /** 'quick' -> 'quickest' */\n  toSuperlative: (n?: number) => View\n  /** 'quick' -> 'quickly' */\n  toAdverb: (n?: number) => View\n  /** 'quick' -> 'quickness' */\n  toNoun: (n?: number) => View\n}\n\n// only overloads .json()\nexport interface Adverbs extends View { }\n\nexport default Three\n"
  },
  {
    "path": "types/view/two.d.cts",
    "content": "import Two from \"./two.d\";\n\nexport = Two\n\n"
  },
  {
    "path": "types/view/two.d.ts",
    "content": "import type View from './one.d.ts'\n\ninterface Two extends View {\n  /** return any multi-word terms, like \"didn't\"  */\n  contractions: (n?: number) => Contractions\n  /** contract words that can combine, like \"did not\" */\n  contract: () => View\n  /** Average measure of tag confidence */\n  confidence: () => number\n  /** smart-replace root forms */\n  swap: (fromLemma: string, toLemma: string, guardTag?: string) => View\n}\n\n\ninterface Contractions extends View {\n  /** turn \"i've\" into \"i have\" */\n  expand: () => View\n}\n\nexport default Two\n"
  }
]