compromise
Version:
modest natural language processing
1 lines • 87.2 kB
JavaScript
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=>"[34m"+t+"[0m",jt=t=>"[3m[2m"+t+"[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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),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?