diff --git a/dde4/dde/build/bundle.mjs b/dde4/dde/build/bundle.mjs index de227b4..e67d3c1 100644 --- a/dde4/dde/build/bundle.mjs +++ b/dde4/dde/build/bundle.mjs @@ -11561,7 +11561,7 @@ function isAbsolute(path) { } // posix version -function join$1() { +function join$2() { var paths = Array.prototype.slice.call(arguments, 0); return normalize$3(filter$2(paths, function(p, index) { if (typeof p !== 'string') { @@ -11656,7 +11656,7 @@ var require$$0$3 = { sep: sep, delimiter: delimiter, relative: relative$1, - join: join$1, + join: join$2, isAbsolute: isAbsolute, normalize: normalize$3, resolve: resolve @@ -14167,7 +14167,7 @@ function formatValue(ctx, value, recurseTimes) { var base = '', array = false, braces = ['{', '}']; // Make Array say that they are Array - if (isArray$d(value)) { + if (isArray$e(value)) { array = true; braces = ['[', ']']; } @@ -14346,7 +14346,7 @@ function reduceToSingleString(output, base, braces) { // NOTE: These type checking functions intentionally don't use `instanceof` // because it is fragile and can be easily faked with `Object.create()`. -function isArray$d(ar) { +function isArray$e(ar) { return Array.isArray(ar); } @@ -14473,7 +14473,7 @@ var require$$1$2 = { isNullOrUndefined: isNullOrUndefined, isNull: isNull$1, isBoolean: isBoolean$1, - isArray: isArray$d, + isArray: isArray$e, inspect: inspect$1, deprecate: deprecate, format: format$1$1, @@ -52428,7 +52428,7 @@ function requireApplyDisableDirectives () { return applyDisableDirectives; } -function e$2(t){return (e$2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t$2(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a,i,s=[],u=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1;}else for(;!(u=(n=a.call(r)).done)&&(s.push(n.value),s.length!==t);u=!0);}catch(e){l=!0,o=e;}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return s}}(e,t)||n$2(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r$1(e){return function(e){if(Array.isArray(e))return o$1(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||n$2(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n$2(e,t){if(e){if("string"==typeof e)return o$1(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return "Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o$1(e,t):void 0}}function o$1(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0;--r)if(e[r].node===t)return !0;return !1}function d(e,t){return (new f).traverse(e,t)}function m(e,t){var r;return r=function(e,t){var r,n,o,a;for(n=e.length,o=0;n;)t(e[a=o+(r=n>>>1)])?n=r:(o=a+1,n-=r+1);return o}(t,(function(t){return t.range[0]>e.range[0]})),e.extendedRange=[e.range[0],e.range[1]],r!==t.length&&(e.extendedRange[1]=t[r].range[0]),(r-=1)>=0&&(e.extendedRange[0]=t[r].range[1]),e}return r={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ChainExpression:"ChainExpression",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportExpression:"ImportExpression",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",PrivateIdentifier:"PrivateIdentifier",Program:"Program",Property:"Property",PropertyDefinition:"PropertyDefinition",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},o={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ChainExpression:["expression"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportExpression:["source"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],PrivateIdentifier:[],Program:["body"],Property:["key","value"],PropertyDefinition:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},n={Break:a={},Skip:i={},Remove:s={}},l.prototype.replace=function(e){this.parent[this.key]=e;},l.prototype.remove=function(){return Array.isArray(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)},f.prototype.path=function(){var e,t,r,n,o;function a(e,t){if(Array.isArray(t))for(r=0,n=t.length;r=0;)if(v=s[f=x[d]])if(Array.isArray(v)){for(m=v.length;(m-=1)>=0;)if(v[m]&&!y(n,v[m])){if(h(u,x[d]))o=new c(v[m],[f,m],"Property",null);else {if(!p(v[m]))continue;o=new c(v[m],[f,m],null,null);}r.push(o);}}else if(p(v)){if(y(n,v))continue;r.push(new c(v,f,null,null));}}}else if(o=n.pop(),l=this.__execute(t.leave,o),this.__state===a||l===a)return},f.prototype.replace=function(e,t){var r,n,o,u,f,y,d,m,x,v,g,A,b;function E(e){var t,n,o,a;if(e.ref.remove())for(n=e.ref.key,a=e.ref.parent,t=r.length;t--;)if((o=r[t]).ref&&o.ref.parent===a){if(o.ref.key=0;)if(v=o[b=x[d]])if(Array.isArray(v)){for(m=v.length;(m-=1)>=0;)if(v[m]){if(h(u,x[d]))y=new c(v[m],[b,m],"Property",new l(v,m));else {if(!p(v[m]))continue;y=new c(v[m],[b,m],null,new l(v,m));}r.push(y);}}else p(v)&&r.push(new c(v,b,null,new l(o,b)));}}else if(y=n.pop(),void 0!==(f=this.__execute(t.leave,y))&&f!==a&&f!==i&&f!==s&&y.ref.replace(f),this.__state!==s&&f!==s||E(y),this.__state===a||f===a)return A.root;return A.root},t.Syntax=r,t.traverse=d,t.replace=function(e,t){return (new f).replace(e,t)},t.attachComments=function(e,t,r){var o,a,i,s,l=[];if(!e.range)throw new Error("attachComments needs range information");if(!r.length){if(t.length){for(i=0,a=t.length;ie.range[0]);)t.extendedRange[1]===e.range[0]?(e.leadingComments||(e.leadingComments=[]),e.leadingComments.push(t),l.splice(s,1)):s+=1;return s===l.length?n.Break:l[s].extendedRange[0]>e.range[1]?n.Skip:void 0}}),s=0,d(e,{leave:function(e){for(var t;se.range[1]?n.Skip:void 0}}),e},t.VisitorKeys=o,t.VisitorOption=n,t.Controller=f,t.cloneEnvironment=function(){return e({})},t}(t);})),s$2=a$2((function(e){e.exports&&(e.exports=function(){function e(t,r,n,o){this.message=t,this.expected=r,this.found=n,this.location=o,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,e);}return function(e,t){function r(){this.constructor=e;}r.prototype=t.prototype,e.prototype=new r;}(e,Error),e.buildMessage=function(e,t){var r={literal:function(e){return '"'+o(e.text)+'"'},class:function(e){var t,r="";for(t=0;t0){for(t=1,n=1;t<~+.]/,p=me([" ","[","]",",","(",")",":","#","!","=",">","<","~","+","."],!0,!1),h=de(">",!1),y=de("~",!1),d=de("+",!1),m=de(",",!1),x=de("!",!1),v=de("*",!1),g=de("#",!1),A=de("[",!1),b=de("]",!1),E=/^[>","<","!"],!1,!1),_=de("=",!1),C=function(e){return (e||"")+"="},w=/^[><]/,P=me([">","<"],!1,!1),k=de(".",!1),D=function(e,t,r){return {type:"attribute",name:e,operator:t,value:r}},I=de('"',!1),j=/^[^\\"]/,F=me(["\\",'"'],!0,!1),T=de("\\",!1),L={type:"any"},R=function(e,t){return e+t},O=function(e){return {type:"literal",value:(t=e.join(""),t.replace(/\\(.)/g,(function(e,t){switch(t){case"b":return "\b";case"f":return "\f";case"n":return "\n";case"r":return "\r";case"t":return "\t";case"v":return "\v";default:return t}})))};var t;},M=de("'",!1),B=/^[^\\']/,U=me(["\\","'"],!0,!1),W=/^[0-9]/,V=me([["0","9"]],!1,!1),q=de("type(",!1),N=/^[^ )]/,K=me([" ",")"],!0,!1),G=de(")",!1),z=/^[imsu]/,H=me(["i","m","s","u"],!1,!1),Y=de("/",!1),$=/^[^\/]/,J=me(["/"],!0,!1),Q=de(":not(",!1),X=de(":matches(",!1),Z=de(":has(",!1),ee=de(":first-child",!1),te=de(":last-child",!1),re=de(":nth-child(",!1),ne=de(":nth-last-child(",!1),oe=de(":",!1),ae=de("statement",!0),ie=de("expression",!0),se=de("declaration",!0),ue=de("function",!0),le=de("pattern",!0),ce=0,fe=[{line:1,column:1}],pe=0,he=[],ye={};if("startRule"in r){if(!(r.startRule in u))throw new Error("Can't start parsing from rule \""+r.startRule+'".');l=u[r.startRule];}function de(e,t){return {type:"literal",text:e,ignoreCase:t}}function me(e,t,r){return {type:"class",parts:e,inverted:t,ignoreCase:r}}function xe(e){var r,n=fe[e];if(n)return n;for(r=e-1;!fe[r];)r--;for(n={line:(n=fe[r]).line,column:n.column};rpe&&(pe=ce,he=[]),he.push(e));}function Ae(){var e,t,r,n,o=30*ce+0,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,(t=be())!==s&&(r=_e())!==s&&be()!==s?e=t=1===(n=r).length?n[0]:{type:"matches",selectors:n}:(ce=e,e=s),e===s&&(e=ce,(t=be())!==s&&(t=void 0),e=t),ye[o]={nextPos:ce,result:e},e)}function be(){var e,r,n=30*ce+1,o=ye[n];if(o)return ce=o.nextPos,o.result;for(e=[],32===t.charCodeAt(ce)?(r=" ",ce++):(r=s,ge(c));r!==s;)e.push(r),32===t.charCodeAt(ce)?(r=" ",ce++):(r=s,ge(c));return ye[n]={nextPos:ce,result:e},e}function Ee(){var e,r,n,o=30*ce+2,a=ye[o];if(a)return ce=a.nextPos,a.result;if(r=[],f.test(t.charAt(ce))?(n=t.charAt(ce),ce++):(n=s,ge(p)),n!==s)for(;n!==s;)r.push(n),f.test(t.charAt(ce))?(n=t.charAt(ce),ce++):(n=s,ge(p));else r=s;return r!==s&&(r=r.join("")),e=r,ye[o]={nextPos:ce,result:e},e}function Se(){var e,r,n,o=30*ce+3,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,(r=be())!==s?(62===t.charCodeAt(ce)?(n=">",ce++):(n=s,ge(h)),n!==s&&be()!==s?e=r="child":(ce=e,e=s)):(ce=e,e=s),e===s&&(e=ce,(r=be())!==s?(126===t.charCodeAt(ce)?(n="~",ce++):(n=s,ge(y)),n!==s&&be()!==s?e=r="sibling":(ce=e,e=s)):(ce=e,e=s),e===s&&(e=ce,(r=be())!==s?(43===t.charCodeAt(ce)?(n="+",ce++):(n=s,ge(d)),n!==s&&be()!==s?e=r="adjacent":(ce=e,e=s)):(ce=e,e=s),e===s&&(e=ce,32===t.charCodeAt(ce)?(r=" ",ce++):(r=s,ge(c)),r!==s&&(n=be())!==s?e=r="descendant":(ce=e,e=s)))),ye[o]={nextPos:ce,result:e},e)}function _e(){var e,r,n,o,a,i,u,l,c=30*ce+4,f=ye[c];if(f)return ce=f.nextPos,f.result;if(e=ce,(r=Ce())!==s){for(n=[],o=ce,(a=be())!==s?(44===t.charCodeAt(ce)?(i=",",ce++):(i=s,ge(m)),i!==s&&(u=be())!==s&&(l=Ce())!==s?o=a=[a,i,u,l]:(ce=o,o=s)):(ce=o,o=s);o!==s;)n.push(o),o=ce,(a=be())!==s?(44===t.charCodeAt(ce)?(i=",",ce++):(i=s,ge(m)),i!==s&&(u=be())!==s&&(l=Ce())!==s?o=a=[a,i,u,l]:(ce=o,o=s)):(ce=o,o=s);n!==s?e=r=[r].concat(n.map((function(e){return e[3]}))):(ce=e,e=s);}else ce=e,e=s;return ye[c]={nextPos:ce,result:e},e}function Ce(){var e,t,r,n,o,a,i,u=30*ce+5,l=ye[u];if(l)return ce=l.nextPos,l.result;if(e=ce,(t=we())!==s){for(r=[],n=ce,(o=Se())!==s&&(a=we())!==s?n=o=[o,a]:(ce=n,n=s);n!==s;)r.push(n),n=ce,(o=Se())!==s&&(a=we())!==s?n=o=[o,a]:(ce=n,n=s);r!==s?(i=t,e=t=r.reduce((function(e,t){return {type:t[0],left:e,right:t[1]}}),i)):(ce=e,e=s);}else ce=e,e=s;return ye[u]={nextPos:ce,result:e},e}function we(){var e,r,n,o,a,i,u,l=30*ce+6,c=ye[l];if(c)return ce=c.nextPos,c.result;if(e=ce,33===t.charCodeAt(ce)?(r="!",ce++):(r=s,ge(x)),r===s&&(r=null),r!==s){if(n=[],(o=Pe())!==s)for(;o!==s;)n.push(o),o=Pe();else n=s;n!==s?(a=r,u=1===(i=n).length?i[0]:{type:"compound",selectors:i},a&&(u.subject=!0),e=r=u):(ce=e,e=s);}else ce=e,e=s;return ye[l]={nextPos:ce,result:e},e}function Pe(){var e,r=30*ce+7,n=ye[r];return n?(ce=n.nextPos,n.result):((e=function(){var e,r,n=30*ce+8,o=ye[n];return o?(ce=o.nextPos,o.result):(42===t.charCodeAt(ce)?(r="*",ce++):(r=s,ge(v)),r!==s&&(r={type:"wildcard",value:r}),e=r,ye[n]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o=30*ce+9,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,35===t.charCodeAt(ce)?(r="#",ce++):(r=s,ge(g)),r===s&&(r=null),r!==s&&(n=Ee())!==s?e=r={type:"identifier",value:n}:(ce=e,e=s),ye[o]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o,a=30*ce+10,i=ye[a];return i?(ce=i.nextPos,i.result):(e=ce,91===t.charCodeAt(ce)?(r="[",ce++):(r=s,ge(A)),r!==s&&be()!==s&&(n=function(){var e,r,n,o,a=30*ce+14,i=ye[a];return i?(ce=i.nextPos,i.result):(e=ce,(r=ke())!==s&&be()!==s&&(n=function(){var e,r,n,o=30*ce+12,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,33===t.charCodeAt(ce)?(r="!",ce++):(r=s,ge(x)),r===s&&(r=null),r!==s?(61===t.charCodeAt(ce)?(n="=",ce++):(n=s,ge(_)),n!==s?(r=C(r),e=r):(ce=e,e=s)):(ce=e,e=s),ye[o]={nextPos:ce,result:e},e)}())!==s&&be()!==s?((o=function(){var e,r,n,o,a,i=30*ce+18,u=ye[i];if(u)return ce=u.nextPos,u.result;if(e=ce,"type("===t.substr(ce,5)?(r="type(",ce+=5):(r=s,ge(q)),r!==s)if(be()!==s){if(n=[],N.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(K)),o!==s)for(;o!==s;)n.push(o),N.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(K));else n=s;n!==s&&(o=be())!==s?(41===t.charCodeAt(ce)?(a=")",ce++):(a=s,ge(G)),a!==s?(r={type:"type",value:n.join("")},e=r):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;else ce=e,e=s;return ye[i]={nextPos:ce,result:e},e}())===s&&(o=function(){var e,r,n,o,a,i,u=30*ce+20,l=ye[u];if(l)return ce=l.nextPos,l.result;if(e=ce,47===t.charCodeAt(ce)?(r="/",ce++):(r=s,ge(Y)),r!==s){if(n=[],$.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(J)),o!==s)for(;o!==s;)n.push(o),$.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(J));else n=s;n!==s?(47===t.charCodeAt(ce)?(o="/",ce++):(o=s,ge(Y)),o!==s?((a=function(){var e,r,n=30*ce+19,o=ye[n];if(o)return ce=o.nextPos,o.result;if(e=[],z.test(t.charAt(ce))?(r=t.charAt(ce),ce++):(r=s,ge(H)),r!==s)for(;r!==s;)e.push(r),z.test(t.charAt(ce))?(r=t.charAt(ce),ce++):(r=s,ge(H));else e=s;return ye[n]={nextPos:ce,result:e},e}())===s&&(a=null),a!==s?(i=a,r={type:"regexp",value:new RegExp(n.join(""),i?i.join(""):"")},e=r):(ce=e,e=s)):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;return ye[u]={nextPos:ce,result:e},e}()),o!==s?(r=D(r,n,o),e=r):(ce=e,e=s)):(ce=e,e=s),e===s&&(e=ce,(r=ke())!==s&&be()!==s&&(n=function(){var e,r,n,o=30*ce+11,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,E.test(t.charAt(ce))?(r=t.charAt(ce),ce++):(r=s,ge(S)),r===s&&(r=null),r!==s?(61===t.charCodeAt(ce)?(n="=",ce++):(n=s,ge(_)),n!==s?(r=C(r),e=r):(ce=e,e=s)):(ce=e,e=s),e===s&&(w.test(t.charAt(ce))?(e=t.charAt(ce),ce++):(e=s,ge(P))),ye[o]={nextPos:ce,result:e},e)}())!==s&&be()!==s?((o=function(){var e,r,n,o,a,i,u=30*ce+15,l=ye[u];if(l)return ce=l.nextPos,l.result;if(e=ce,34===t.charCodeAt(ce)?(r='"',ce++):(r=s,ge(I)),r!==s){for(n=[],j.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(F)),o===s&&(o=ce,92===t.charCodeAt(ce)?(a="\\",ce++):(a=s,ge(T)),a!==s?(t.length>ce?(i=t.charAt(ce),ce++):(i=s,ge(L)),i!==s?(a=R(a,i),o=a):(ce=o,o=s)):(ce=o,o=s));o!==s;)n.push(o),j.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(F)),o===s&&(o=ce,92===t.charCodeAt(ce)?(a="\\",ce++):(a=s,ge(T)),a!==s?(t.length>ce?(i=t.charAt(ce),ce++):(i=s,ge(L)),i!==s?(a=R(a,i),o=a):(ce=o,o=s)):(ce=o,o=s));n!==s?(34===t.charCodeAt(ce)?(o='"',ce++):(o=s,ge(I)),o!==s?(r=O(n),e=r):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;if(e===s)if(e=ce,39===t.charCodeAt(ce)?(r="'",ce++):(r=s,ge(M)),r!==s){for(n=[],B.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(U)),o===s&&(o=ce,92===t.charCodeAt(ce)?(a="\\",ce++):(a=s,ge(T)),a!==s?(t.length>ce?(i=t.charAt(ce),ce++):(i=s,ge(L)),i!==s?(a=R(a,i),o=a):(ce=o,o=s)):(ce=o,o=s));o!==s;)n.push(o),B.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(U)),o===s&&(o=ce,92===t.charCodeAt(ce)?(a="\\",ce++):(a=s,ge(T)),a!==s?(t.length>ce?(i=t.charAt(ce),ce++):(i=s,ge(L)),i!==s?(a=R(a,i),o=a):(ce=o,o=s)):(ce=o,o=s));n!==s?(39===t.charCodeAt(ce)?(o="'",ce++):(o=s,ge(M)),o!==s?(r=O(n),e=r):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;return ye[u]={nextPos:ce,result:e},e}())===s&&(o=function(){var e,r,n,o,a,i,u,l=30*ce+16,c=ye[l];if(c)return ce=c.nextPos,c.result;for(e=ce,r=ce,n=[],W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V));o!==s;)n.push(o),W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V));if(n!==s?(46===t.charCodeAt(ce)?(o=".",ce++):(o=s,ge(k)),o!==s?r=n=[n,o]:(ce=r,r=s)):(ce=r,r=s),r===s&&(r=null),r!==s){if(n=[],W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V)),o!==s)for(;o!==s;)n.push(o),W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V));else n=s;n!==s?(i=n,u=(a=r)?[].concat.apply([],a).join(""):"",r={type:"literal",value:parseFloat(u+i.join(""))},e=r):(ce=e,e=s);}else ce=e,e=s;return ye[l]={nextPos:ce,result:e},e}())===s&&(o=function(){var e,t,r=30*ce+17,n=ye[r];return n?(ce=n.nextPos,n.result):((t=Ee())!==s&&(t={type:"literal",value:t}),e=t,ye[r]={nextPos:ce,result:e},e)}()),o!==s?(r=D(r,n,o),e=r):(ce=e,e=s)):(ce=e,e=s),e===s&&(e=ce,(r=ke())!==s&&(r={type:"attribute",name:r}),e=r)),ye[a]={nextPos:ce,result:e},e)}())!==s&&be()!==s?(93===t.charCodeAt(ce)?(o="]",ce++):(o=s,ge(b)),o!==s?e=r=n:(ce=e,e=s)):(ce=e,e=s),ye[a]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o,a,i,u,l,c=30*ce+21,f=ye[c];if(f)return ce=f.nextPos,f.result;if(e=ce,46===t.charCodeAt(ce)?(r=".",ce++):(r=s,ge(k)),r!==s)if((n=Ee())!==s){for(o=[],a=ce,46===t.charCodeAt(ce)?(i=".",ce++):(i=s,ge(k)),i!==s&&(u=Ee())!==s?a=i=[i,u]:(ce=a,a=s);a!==s;)o.push(a),a=ce,46===t.charCodeAt(ce)?(i=".",ce++):(i=s,ge(k)),i!==s&&(u=Ee())!==s?a=i=[i,u]:(ce=a,a=s);o!==s?(l=n,r={type:"field",name:o.reduce((function(e,t){return e+t[0]+t[1]}),l)},e=r):(ce=e,e=s);}else ce=e,e=s;else ce=e,e=s;return ye[c]={nextPos:ce,result:e},e}())===s&&(e=function(){var e,r,n,o,a=30*ce+22,i=ye[a];return i?(ce=i.nextPos,i.result):(e=ce,":not("===t.substr(ce,5)?(r=":not(",ce+=5):(r=s,ge(Q)),r!==s&&be()!==s&&(n=_e())!==s&&be()!==s?(41===t.charCodeAt(ce)?(o=")",ce++):(o=s,ge(G)),o!==s?e=r={type:"not",selectors:n}:(ce=e,e=s)):(ce=e,e=s),ye[a]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o,a=30*ce+23,i=ye[a];return i?(ce=i.nextPos,i.result):(e=ce,":matches("===t.substr(ce,9)?(r=":matches(",ce+=9):(r=s,ge(X)),r!==s&&be()!==s&&(n=_e())!==s&&be()!==s?(41===t.charCodeAt(ce)?(o=")",ce++):(o=s,ge(G)),o!==s?e=r={type:"matches",selectors:n}:(ce=e,e=s)):(ce=e,e=s),ye[a]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o,a=30*ce+24,i=ye[a];return i?(ce=i.nextPos,i.result):(e=ce,":has("===t.substr(ce,5)?(r=":has(",ce+=5):(r=s,ge(Z)),r!==s&&be()!==s&&(n=_e())!==s&&be()!==s?(41===t.charCodeAt(ce)?(o=")",ce++):(o=s,ge(G)),o!==s?e=r={type:"has",selectors:n}:(ce=e,e=s)):(ce=e,e=s),ye[a]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n=30*ce+25,o=ye[n];return o?(ce=o.nextPos,o.result):(":first-child"===t.substr(ce,12)?(r=":first-child",ce+=12):(r=s,ge(ee)),r!==s&&(r=De(1)),e=r,ye[n]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n=30*ce+26,o=ye[n];return o?(ce=o.nextPos,o.result):(":last-child"===t.substr(ce,11)?(r=":last-child",ce+=11):(r=s,ge(te)),r!==s&&(r=Ie(1)),e=r,ye[n]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o,a,i=30*ce+27,u=ye[i];if(u)return ce=u.nextPos,u.result;if(e=ce,":nth-child("===t.substr(ce,11)?(r=":nth-child(",ce+=11):(r=s,ge(re)),r!==s)if(be()!==s){if(n=[],W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V)),o!==s)for(;o!==s;)n.push(o),W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V));else n=s;n!==s&&(o=be())!==s?(41===t.charCodeAt(ce)?(a=")",ce++):(a=s,ge(G)),a!==s?(r=De(parseInt(n.join(""),10)),e=r):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;else ce=e,e=s;return ye[i]={nextPos:ce,result:e},e}())===s&&(e=function(){var e,r,n,o,a,i=30*ce+28,u=ye[i];if(u)return ce=u.nextPos,u.result;if(e=ce,":nth-last-child("===t.substr(ce,16)?(r=":nth-last-child(",ce+=16):(r=s,ge(ne)),r!==s)if(be()!==s){if(n=[],W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V)),o!==s)for(;o!==s;)n.push(o),W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V));else n=s;n!==s&&(o=be())!==s?(41===t.charCodeAt(ce)?(a=")",ce++):(a=s,ge(G)),a!==s?(r=Ie(parseInt(n.join(""),10)),e=r):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;else ce=e,e=s;return ye[i]={nextPos:ce,result:e},e}())===s&&(e=function(){var e,r,n,o=30*ce+29,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,58===t.charCodeAt(ce)?(r=":",ce++):(r=s,ge(oe)),r!==s?("statement"===t.substr(ce,9).toLowerCase()?(n=t.substr(ce,9),ce+=9):(n=s,ge(ae)),n===s&&("expression"===t.substr(ce,10).toLowerCase()?(n=t.substr(ce,10),ce+=10):(n=s,ge(ie)),n===s&&("declaration"===t.substr(ce,11).toLowerCase()?(n=t.substr(ce,11),ce+=11):(n=s,ge(se)),n===s&&("function"===t.substr(ce,8).toLowerCase()?(n=t.substr(ce,8),ce+=8):(n=s,ge(ue)),n===s&&("pattern"===t.substr(ce,7).toLowerCase()?(n=t.substr(ce,7),ce+=7):(n=s,ge(le)))))),n!==s?e=r={type:"class",name:n}:(ce=e,e=s)):(ce=e,e=s),ye[o]={nextPos:ce,result:e},e)}()),ye[r]={nextPos:ce,result:e},e)}function ke(){var e,r,n,o,a,i,u,l,c=30*ce+13,f=ye[c];if(f)return ce=f.nextPos,f.result;if(e=ce,(r=Ee())!==s){for(n=[],o=ce,46===t.charCodeAt(ce)?(a=".",ce++):(a=s,ge(k)),a!==s&&(i=Ee())!==s?o=a=[a,i]:(ce=o,o=s);o!==s;)n.push(o),o=ce,46===t.charCodeAt(ce)?(a=".",ce++):(a=s,ge(k)),a!==s&&(i=Ee())!==s?o=a=[a,i]:(ce=o,o=s);n!==s?(u=r,l=n,e=r=[].concat.apply([u],l).join("")):(ce=e,e=s);}else ce=e,e=s;return ye[c]={nextPos:ce,result:e},e}function De(e){return {type:"nth-child",index:{type:"literal",value:e}}}function Ie(e){return {type:"nth-last-child",index:{type:"literal",value:e}}}if((n=l())!==s&&ce===t.length)return n;throw n!==s&&ce0&&p(e,t,r))&&f(t[0],t.slice(1),r)};case"descendant":var h=c$2(t.left),x=c$2(t.right);return function(e,t,r){if(x(e,t,r))for(var n=0,o=t.length;n":return function(e){return u$1(e,v)>t.value.value};case">=":return function(e){return u$1(e,v)>=t.value.value}}throw new Error("Unknown operator: ".concat(t.operator));case"sibling":var b=c$2(t.left),E=c$2(t.right);return function(e,r,n){return E(e,r,n)&&y(e,b,r,"LEFT_SIDE",n)||t.left.subject&&b(e,r,n)&&y(e,E,r,"RIGHT_SIDE",n)};case"adjacent":var S=c$2(t.left),_=c$2(t.right);return function(e,r,n){return _(e,r,n)&&d$1(e,S,r,"LEFT_SIDE",n)||t.right.subject&&S(e,r,n)&&d$1(e,_,r,"RIGHT_SIDE",n)};case"nth-child":var C=t.index.value,w=c$2(t.right);return function(e,t,r){return w(e,t,r)&&m$2(e,t,C,r)};case"nth-last-child":var P=-t.index.value,k=c$2(t.right);return function(e,t,r){return k(e,t,r)&&m$2(e,t,P,r)};case"class":var D=t.name.toLowerCase();return function(e,r){switch(D){case"statement":if("Statement"===e.type.slice(-9))return !0;case"declaration":return "Declaration"===e.type.slice(-11);case"pattern":if("Pattern"===e.type.slice(-7))return !0;case"expression":return "Expression"===e.type.slice(-10)||"Literal"===e.type.slice(-7)||"Identifier"===e.type&&(0===r.length||"MetaProperty"!==r[0].type)||"MetaProperty"===e.type;case"function":return "FunctionDeclaration"===e.type||"FunctionExpression"===e.type||"ArrowFunctionExpression"===e.type}throw new Error("Unknown class name: ".concat(t.name))}}throw new Error("Unknown selector type: ".concat(t.type))}function p$5(e,t){var r=e.type;return t&&t.visitorKeys&&t.visitorKeys[r]?t.visitorKeys[r]:i$6.VisitorKeys[r]?i$6.VisitorKeys[r]:t&&"function"==typeof t.fallback?t.fallback(e):Object.keys(e).filter((function(e){return "type"!==e}))}function h$1(t){return null!==t&&"object"===e$2(t)&&"string"==typeof t.type}function y(e,r,n,o,a){var i=t$2(n,1)[0];if(!i)return !1;for(var s=p$5(i,a),u=0;u0&&h$1(l[c-1])&&r(l[c-1],n,a))return !0;if("RIGHT_SIDE"===o&&c=0&&le.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0;--r)if(e[r].node===t)return !0;return !1}function d(e,t){return (new f).traverse(e,t)}function m(e,t){var r;return r=function(e,t){var r,n,o,a;for(n=e.length,o=0;n;)t(e[a=o+(r=n>>>1)])?n=r:(o=a+1,n-=r+1);return o}(t,(function(t){return t.range[0]>e.range[0]})),e.extendedRange=[e.range[0],e.range[1]],r!==t.length&&(e.extendedRange[1]=t[r].range[0]),(r-=1)>=0&&(e.extendedRange[0]=t[r].range[1]),e}return r={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ChainExpression:"ChainExpression",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportExpression:"ImportExpression",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",PrivateIdentifier:"PrivateIdentifier",Program:"Program",Property:"Property",PropertyDefinition:"PropertyDefinition",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},o={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ChainExpression:["expression"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportExpression:["source"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],PrivateIdentifier:[],Program:["body"],Property:["key","value"],PropertyDefinition:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},n={Break:a={},Skip:i={},Remove:s={}},l.prototype.replace=function(e){this.parent[this.key]=e;},l.prototype.remove=function(){return Array.isArray(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)},f.prototype.path=function(){var e,t,r,n,o;function a(e,t){if(Array.isArray(t))for(r=0,n=t.length;r=0;)if(v=s[f=x[d]])if(Array.isArray(v)){for(m=v.length;(m-=1)>=0;)if(v[m]&&!y(n,v[m])){if(h(u,x[d]))o=new c(v[m],[f,m],"Property",null);else {if(!p(v[m]))continue;o=new c(v[m],[f,m],null,null);}r.push(o);}}else if(p(v)){if(y(n,v))continue;r.push(new c(v,f,null,null));}}}else if(o=n.pop(),l=this.__execute(t.leave,o),this.__state===a||l===a)return},f.prototype.replace=function(e,t){var r,n,o,u,f,y,d,m,x,v,g,A,b;function E(e){var t,n,o,a;if(e.ref.remove())for(n=e.ref.key,a=e.ref.parent,t=r.length;t--;)if((o=r[t]).ref&&o.ref.parent===a){if(o.ref.key=0;)if(v=o[b=x[d]])if(Array.isArray(v)){for(m=v.length;(m-=1)>=0;)if(v[m]){if(h(u,x[d]))y=new c(v[m],[b,m],"Property",new l(v,m));else {if(!p(v[m]))continue;y=new c(v[m],[b,m],null,new l(v,m));}r.push(y);}}else p(v)&&r.push(new c(v,b,null,new l(o,b)));}}else if(y=n.pop(),void 0!==(f=this.__execute(t.leave,y))&&f!==a&&f!==i&&f!==s&&y.ref.replace(f),this.__state!==s&&f!==s||E(y),this.__state===a||f===a)return A.root;return A.root},t.Syntax=r,t.traverse=d,t.replace=function(e,t){return (new f).replace(e,t)},t.attachComments=function(e,t,r){var o,a,i,s,l=[];if(!e.range)throw new Error("attachComments needs range information");if(!r.length){if(t.length){for(i=0,a=t.length;ie.range[0]);)t.extendedRange[1]===e.range[0]?(e.leadingComments||(e.leadingComments=[]),e.leadingComments.push(t),l.splice(s,1)):s+=1;return s===l.length?n.Break:l[s].extendedRange[0]>e.range[1]?n.Skip:void 0}}),s=0,d(e,{leave:function(e){for(var t;se.range[1]?n.Skip:void 0}}),e},t.VisitorKeys=o,t.VisitorOption=n,t.Controller=f,t.cloneEnvironment=function(){return e({})},t}(t);})),s$2=a$2((function(e){e.exports&&(e.exports=function(){function e(t,r,n,o){this.message=t,this.expected=r,this.found=n,this.location=o,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,e);}return function(e,t){function r(){this.constructor=e;}r.prototype=t.prototype,e.prototype=new r;}(e,Error),e.buildMessage=function(e,t){var r={literal:function(e){return '"'+o(e.text)+'"'},class:function(e){var t,r="";for(t=0;t0){for(t=1,n=1;t<~+.]/,p=me([" ","[","]",",","(",")",":","#","!","=",">","<","~","+","."],!0,!1),h=de(">",!1),y=de("~",!1),d=de("+",!1),m=de(",",!1),x=de("!",!1),v=de("*",!1),g=de("#",!1),A=de("[",!1),b=de("]",!1),E=/^[>","<","!"],!1,!1),_=de("=",!1),C=function(e){return (e||"")+"="},w=/^[><]/,P=me([">","<"],!1,!1),k=de(".",!1),D=function(e,t,r){return {type:"attribute",name:e,operator:t,value:r}},I=de('"',!1),j=/^[^\\"]/,F=me(["\\",'"'],!0,!1),T=de("\\",!1),L={type:"any"},R=function(e,t){return e+t},O=function(e){return {type:"literal",value:(t=e.join(""),t.replace(/\\(.)/g,(function(e,t){switch(t){case"b":return "\b";case"f":return "\f";case"n":return "\n";case"r":return "\r";case"t":return "\t";case"v":return "\v";default:return t}})))};var t;},M=de("'",!1),B=/^[^\\']/,U=me(["\\","'"],!0,!1),W=/^[0-9]/,V=me([["0","9"]],!1,!1),q=de("type(",!1),N=/^[^ )]/,K=me([" ",")"],!0,!1),G=de(")",!1),z=/^[imsu]/,H=me(["i","m","s","u"],!1,!1),Y=de("/",!1),$=/^[^\/]/,J=me(["/"],!0,!1),Q=de(":not(",!1),X=de(":matches(",!1),Z=de(":has(",!1),ee=de(":first-child",!1),te=de(":last-child",!1),re=de(":nth-child(",!1),ne=de(":nth-last-child(",!1),oe=de(":",!1),ae=de("statement",!0),ie=de("expression",!0),se=de("declaration",!0),ue=de("function",!0),le=de("pattern",!0),ce=0,fe=[{line:1,column:1}],pe=0,he=[],ye={};if("startRule"in r){if(!(r.startRule in u))throw new Error("Can't start parsing from rule \""+r.startRule+'".');l=u[r.startRule];}function de(e,t){return {type:"literal",text:e,ignoreCase:t}}function me(e,t,r){return {type:"class",parts:e,inverted:t,ignoreCase:r}}function xe(e){var r,n=fe[e];if(n)return n;for(r=e-1;!fe[r];)r--;for(n={line:(n=fe[r]).line,column:n.column};rpe&&(pe=ce,he=[]),he.push(e));}function Ae(){var e,t,r,n,o=30*ce+0,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,(t=be())!==s&&(r=_e())!==s&&be()!==s?e=t=1===(n=r).length?n[0]:{type:"matches",selectors:n}:(ce=e,e=s),e===s&&(e=ce,(t=be())!==s&&(t=void 0),e=t),ye[o]={nextPos:ce,result:e},e)}function be(){var e,r,n=30*ce+1,o=ye[n];if(o)return ce=o.nextPos,o.result;for(e=[],32===t.charCodeAt(ce)?(r=" ",ce++):(r=s,ge(c));r!==s;)e.push(r),32===t.charCodeAt(ce)?(r=" ",ce++):(r=s,ge(c));return ye[n]={nextPos:ce,result:e},e}function Ee(){var e,r,n,o=30*ce+2,a=ye[o];if(a)return ce=a.nextPos,a.result;if(r=[],f.test(t.charAt(ce))?(n=t.charAt(ce),ce++):(n=s,ge(p)),n!==s)for(;n!==s;)r.push(n),f.test(t.charAt(ce))?(n=t.charAt(ce),ce++):(n=s,ge(p));else r=s;return r!==s&&(r=r.join("")),e=r,ye[o]={nextPos:ce,result:e},e}function Se(){var e,r,n,o=30*ce+3,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,(r=be())!==s?(62===t.charCodeAt(ce)?(n=">",ce++):(n=s,ge(h)),n!==s&&be()!==s?e=r="child":(ce=e,e=s)):(ce=e,e=s),e===s&&(e=ce,(r=be())!==s?(126===t.charCodeAt(ce)?(n="~",ce++):(n=s,ge(y)),n!==s&&be()!==s?e=r="sibling":(ce=e,e=s)):(ce=e,e=s),e===s&&(e=ce,(r=be())!==s?(43===t.charCodeAt(ce)?(n="+",ce++):(n=s,ge(d)),n!==s&&be()!==s?e=r="adjacent":(ce=e,e=s)):(ce=e,e=s),e===s&&(e=ce,32===t.charCodeAt(ce)?(r=" ",ce++):(r=s,ge(c)),r!==s&&(n=be())!==s?e=r="descendant":(ce=e,e=s)))),ye[o]={nextPos:ce,result:e},e)}function _e(){var e,r,n,o,a,i,u,l,c=30*ce+4,f=ye[c];if(f)return ce=f.nextPos,f.result;if(e=ce,(r=Ce())!==s){for(n=[],o=ce,(a=be())!==s?(44===t.charCodeAt(ce)?(i=",",ce++):(i=s,ge(m)),i!==s&&(u=be())!==s&&(l=Ce())!==s?o=a=[a,i,u,l]:(ce=o,o=s)):(ce=o,o=s);o!==s;)n.push(o),o=ce,(a=be())!==s?(44===t.charCodeAt(ce)?(i=",",ce++):(i=s,ge(m)),i!==s&&(u=be())!==s&&(l=Ce())!==s?o=a=[a,i,u,l]:(ce=o,o=s)):(ce=o,o=s);n!==s?e=r=[r].concat(n.map((function(e){return e[3]}))):(ce=e,e=s);}else ce=e,e=s;return ye[c]={nextPos:ce,result:e},e}function Ce(){var e,t,r,n,o,a,i,u=30*ce+5,l=ye[u];if(l)return ce=l.nextPos,l.result;if(e=ce,(t=we())!==s){for(r=[],n=ce,(o=Se())!==s&&(a=we())!==s?n=o=[o,a]:(ce=n,n=s);n!==s;)r.push(n),n=ce,(o=Se())!==s&&(a=we())!==s?n=o=[o,a]:(ce=n,n=s);r!==s?(i=t,e=t=r.reduce((function(e,t){return {type:t[0],left:e,right:t[1]}}),i)):(ce=e,e=s);}else ce=e,e=s;return ye[u]={nextPos:ce,result:e},e}function we(){var e,r,n,o,a,i,u,l=30*ce+6,c=ye[l];if(c)return ce=c.nextPos,c.result;if(e=ce,33===t.charCodeAt(ce)?(r="!",ce++):(r=s,ge(x)),r===s&&(r=null),r!==s){if(n=[],(o=Pe())!==s)for(;o!==s;)n.push(o),o=Pe();else n=s;n!==s?(a=r,u=1===(i=n).length?i[0]:{type:"compound",selectors:i},a&&(u.subject=!0),e=r=u):(ce=e,e=s);}else ce=e,e=s;return ye[l]={nextPos:ce,result:e},e}function Pe(){var e,r=30*ce+7,n=ye[r];return n?(ce=n.nextPos,n.result):((e=function(){var e,r,n=30*ce+8,o=ye[n];return o?(ce=o.nextPos,o.result):(42===t.charCodeAt(ce)?(r="*",ce++):(r=s,ge(v)),r!==s&&(r={type:"wildcard",value:r}),e=r,ye[n]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o=30*ce+9,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,35===t.charCodeAt(ce)?(r="#",ce++):(r=s,ge(g)),r===s&&(r=null),r!==s&&(n=Ee())!==s?e=r={type:"identifier",value:n}:(ce=e,e=s),ye[o]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o,a=30*ce+10,i=ye[a];return i?(ce=i.nextPos,i.result):(e=ce,91===t.charCodeAt(ce)?(r="[",ce++):(r=s,ge(A)),r!==s&&be()!==s&&(n=function(){var e,r,n,o,a=30*ce+14,i=ye[a];return i?(ce=i.nextPos,i.result):(e=ce,(r=ke())!==s&&be()!==s&&(n=function(){var e,r,n,o=30*ce+12,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,33===t.charCodeAt(ce)?(r="!",ce++):(r=s,ge(x)),r===s&&(r=null),r!==s?(61===t.charCodeAt(ce)?(n="=",ce++):(n=s,ge(_)),n!==s?(r=C(r),e=r):(ce=e,e=s)):(ce=e,e=s),ye[o]={nextPos:ce,result:e},e)}())!==s&&be()!==s?((o=function(){var e,r,n,o,a,i=30*ce+18,u=ye[i];if(u)return ce=u.nextPos,u.result;if(e=ce,"type("===t.substr(ce,5)?(r="type(",ce+=5):(r=s,ge(q)),r!==s)if(be()!==s){if(n=[],N.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(K)),o!==s)for(;o!==s;)n.push(o),N.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(K));else n=s;n!==s&&(o=be())!==s?(41===t.charCodeAt(ce)?(a=")",ce++):(a=s,ge(G)),a!==s?(r={type:"type",value:n.join("")},e=r):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;else ce=e,e=s;return ye[i]={nextPos:ce,result:e},e}())===s&&(o=function(){var e,r,n,o,a,i,u=30*ce+20,l=ye[u];if(l)return ce=l.nextPos,l.result;if(e=ce,47===t.charCodeAt(ce)?(r="/",ce++):(r=s,ge(Y)),r!==s){if(n=[],$.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(J)),o!==s)for(;o!==s;)n.push(o),$.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(J));else n=s;n!==s?(47===t.charCodeAt(ce)?(o="/",ce++):(o=s,ge(Y)),o!==s?((a=function(){var e,r,n=30*ce+19,o=ye[n];if(o)return ce=o.nextPos,o.result;if(e=[],z.test(t.charAt(ce))?(r=t.charAt(ce),ce++):(r=s,ge(H)),r!==s)for(;r!==s;)e.push(r),z.test(t.charAt(ce))?(r=t.charAt(ce),ce++):(r=s,ge(H));else e=s;return ye[n]={nextPos:ce,result:e},e}())===s&&(a=null),a!==s?(i=a,r={type:"regexp",value:new RegExp(n.join(""),i?i.join(""):"")},e=r):(ce=e,e=s)):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;return ye[u]={nextPos:ce,result:e},e}()),o!==s?(r=D(r,n,o),e=r):(ce=e,e=s)):(ce=e,e=s),e===s&&(e=ce,(r=ke())!==s&&be()!==s&&(n=function(){var e,r,n,o=30*ce+11,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,E.test(t.charAt(ce))?(r=t.charAt(ce),ce++):(r=s,ge(S)),r===s&&(r=null),r!==s?(61===t.charCodeAt(ce)?(n="=",ce++):(n=s,ge(_)),n!==s?(r=C(r),e=r):(ce=e,e=s)):(ce=e,e=s),e===s&&(w.test(t.charAt(ce))?(e=t.charAt(ce),ce++):(e=s,ge(P))),ye[o]={nextPos:ce,result:e},e)}())!==s&&be()!==s?((o=function(){var e,r,n,o,a,i,u=30*ce+15,l=ye[u];if(l)return ce=l.nextPos,l.result;if(e=ce,34===t.charCodeAt(ce)?(r='"',ce++):(r=s,ge(I)),r!==s){for(n=[],j.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(F)),o===s&&(o=ce,92===t.charCodeAt(ce)?(a="\\",ce++):(a=s,ge(T)),a!==s?(t.length>ce?(i=t.charAt(ce),ce++):(i=s,ge(L)),i!==s?(a=R(a,i),o=a):(ce=o,o=s)):(ce=o,o=s));o!==s;)n.push(o),j.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(F)),o===s&&(o=ce,92===t.charCodeAt(ce)?(a="\\",ce++):(a=s,ge(T)),a!==s?(t.length>ce?(i=t.charAt(ce),ce++):(i=s,ge(L)),i!==s?(a=R(a,i),o=a):(ce=o,o=s)):(ce=o,o=s));n!==s?(34===t.charCodeAt(ce)?(o='"',ce++):(o=s,ge(I)),o!==s?(r=O(n),e=r):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;if(e===s)if(e=ce,39===t.charCodeAt(ce)?(r="'",ce++):(r=s,ge(M)),r!==s){for(n=[],B.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(U)),o===s&&(o=ce,92===t.charCodeAt(ce)?(a="\\",ce++):(a=s,ge(T)),a!==s?(t.length>ce?(i=t.charAt(ce),ce++):(i=s,ge(L)),i!==s?(a=R(a,i),o=a):(ce=o,o=s)):(ce=o,o=s));o!==s;)n.push(o),B.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(U)),o===s&&(o=ce,92===t.charCodeAt(ce)?(a="\\",ce++):(a=s,ge(T)),a!==s?(t.length>ce?(i=t.charAt(ce),ce++):(i=s,ge(L)),i!==s?(a=R(a,i),o=a):(ce=o,o=s)):(ce=o,o=s));n!==s?(39===t.charCodeAt(ce)?(o="'",ce++):(o=s,ge(M)),o!==s?(r=O(n),e=r):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;return ye[u]={nextPos:ce,result:e},e}())===s&&(o=function(){var e,r,n,o,a,i,u,l=30*ce+16,c=ye[l];if(c)return ce=c.nextPos,c.result;for(e=ce,r=ce,n=[],W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V));o!==s;)n.push(o),W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V));if(n!==s?(46===t.charCodeAt(ce)?(o=".",ce++):(o=s,ge(k)),o!==s?r=n=[n,o]:(ce=r,r=s)):(ce=r,r=s),r===s&&(r=null),r!==s){if(n=[],W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V)),o!==s)for(;o!==s;)n.push(o),W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V));else n=s;n!==s?(i=n,u=(a=r)?[].concat.apply([],a).join(""):"",r={type:"literal",value:parseFloat(u+i.join(""))},e=r):(ce=e,e=s);}else ce=e,e=s;return ye[l]={nextPos:ce,result:e},e}())===s&&(o=function(){var e,t,r=30*ce+17,n=ye[r];return n?(ce=n.nextPos,n.result):((t=Ee())!==s&&(t={type:"literal",value:t}),e=t,ye[r]={nextPos:ce,result:e},e)}()),o!==s?(r=D(r,n,o),e=r):(ce=e,e=s)):(ce=e,e=s),e===s&&(e=ce,(r=ke())!==s&&(r={type:"attribute",name:r}),e=r)),ye[a]={nextPos:ce,result:e},e)}())!==s&&be()!==s?(93===t.charCodeAt(ce)?(o="]",ce++):(o=s,ge(b)),o!==s?e=r=n:(ce=e,e=s)):(ce=e,e=s),ye[a]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o,a,i,u,l,c=30*ce+21,f=ye[c];if(f)return ce=f.nextPos,f.result;if(e=ce,46===t.charCodeAt(ce)?(r=".",ce++):(r=s,ge(k)),r!==s)if((n=Ee())!==s){for(o=[],a=ce,46===t.charCodeAt(ce)?(i=".",ce++):(i=s,ge(k)),i!==s&&(u=Ee())!==s?a=i=[i,u]:(ce=a,a=s);a!==s;)o.push(a),a=ce,46===t.charCodeAt(ce)?(i=".",ce++):(i=s,ge(k)),i!==s&&(u=Ee())!==s?a=i=[i,u]:(ce=a,a=s);o!==s?(l=n,r={type:"field",name:o.reduce((function(e,t){return e+t[0]+t[1]}),l)},e=r):(ce=e,e=s);}else ce=e,e=s;else ce=e,e=s;return ye[c]={nextPos:ce,result:e},e}())===s&&(e=function(){var e,r,n,o,a=30*ce+22,i=ye[a];return i?(ce=i.nextPos,i.result):(e=ce,":not("===t.substr(ce,5)?(r=":not(",ce+=5):(r=s,ge(Q)),r!==s&&be()!==s&&(n=_e())!==s&&be()!==s?(41===t.charCodeAt(ce)?(o=")",ce++):(o=s,ge(G)),o!==s?e=r={type:"not",selectors:n}:(ce=e,e=s)):(ce=e,e=s),ye[a]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o,a=30*ce+23,i=ye[a];return i?(ce=i.nextPos,i.result):(e=ce,":matches("===t.substr(ce,9)?(r=":matches(",ce+=9):(r=s,ge(X)),r!==s&&be()!==s&&(n=_e())!==s&&be()!==s?(41===t.charCodeAt(ce)?(o=")",ce++):(o=s,ge(G)),o!==s?e=r={type:"matches",selectors:n}:(ce=e,e=s)):(ce=e,e=s),ye[a]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o,a=30*ce+24,i=ye[a];return i?(ce=i.nextPos,i.result):(e=ce,":has("===t.substr(ce,5)?(r=":has(",ce+=5):(r=s,ge(Z)),r!==s&&be()!==s&&(n=_e())!==s&&be()!==s?(41===t.charCodeAt(ce)?(o=")",ce++):(o=s,ge(G)),o!==s?e=r={type:"has",selectors:n}:(ce=e,e=s)):(ce=e,e=s),ye[a]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n=30*ce+25,o=ye[n];return o?(ce=o.nextPos,o.result):(":first-child"===t.substr(ce,12)?(r=":first-child",ce+=12):(r=s,ge(ee)),r!==s&&(r=De(1)),e=r,ye[n]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n=30*ce+26,o=ye[n];return o?(ce=o.nextPos,o.result):(":last-child"===t.substr(ce,11)?(r=":last-child",ce+=11):(r=s,ge(te)),r!==s&&(r=Ie(1)),e=r,ye[n]={nextPos:ce,result:e},e)}())===s&&(e=function(){var e,r,n,o,a,i=30*ce+27,u=ye[i];if(u)return ce=u.nextPos,u.result;if(e=ce,":nth-child("===t.substr(ce,11)?(r=":nth-child(",ce+=11):(r=s,ge(re)),r!==s)if(be()!==s){if(n=[],W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V)),o!==s)for(;o!==s;)n.push(o),W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V));else n=s;n!==s&&(o=be())!==s?(41===t.charCodeAt(ce)?(a=")",ce++):(a=s,ge(G)),a!==s?(r=De(parseInt(n.join(""),10)),e=r):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;else ce=e,e=s;return ye[i]={nextPos:ce,result:e},e}())===s&&(e=function(){var e,r,n,o,a,i=30*ce+28,u=ye[i];if(u)return ce=u.nextPos,u.result;if(e=ce,":nth-last-child("===t.substr(ce,16)?(r=":nth-last-child(",ce+=16):(r=s,ge(ne)),r!==s)if(be()!==s){if(n=[],W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V)),o!==s)for(;o!==s;)n.push(o),W.test(t.charAt(ce))?(o=t.charAt(ce),ce++):(o=s,ge(V));else n=s;n!==s&&(o=be())!==s?(41===t.charCodeAt(ce)?(a=")",ce++):(a=s,ge(G)),a!==s?(r=Ie(parseInt(n.join(""),10)),e=r):(ce=e,e=s)):(ce=e,e=s);}else ce=e,e=s;else ce=e,e=s;return ye[i]={nextPos:ce,result:e},e}())===s&&(e=function(){var e,r,n,o=30*ce+29,a=ye[o];return a?(ce=a.nextPos,a.result):(e=ce,58===t.charCodeAt(ce)?(r=":",ce++):(r=s,ge(oe)),r!==s?("statement"===t.substr(ce,9).toLowerCase()?(n=t.substr(ce,9),ce+=9):(n=s,ge(ae)),n===s&&("expression"===t.substr(ce,10).toLowerCase()?(n=t.substr(ce,10),ce+=10):(n=s,ge(ie)),n===s&&("declaration"===t.substr(ce,11).toLowerCase()?(n=t.substr(ce,11),ce+=11):(n=s,ge(se)),n===s&&("function"===t.substr(ce,8).toLowerCase()?(n=t.substr(ce,8),ce+=8):(n=s,ge(ue)),n===s&&("pattern"===t.substr(ce,7).toLowerCase()?(n=t.substr(ce,7),ce+=7):(n=s,ge(le)))))),n!==s?e=r={type:"class",name:n}:(ce=e,e=s)):(ce=e,e=s),ye[o]={nextPos:ce,result:e},e)}()),ye[r]={nextPos:ce,result:e},e)}function ke(){var e,r,n,o,a,i,u,l,c=30*ce+13,f=ye[c];if(f)return ce=f.nextPos,f.result;if(e=ce,(r=Ee())!==s){for(n=[],o=ce,46===t.charCodeAt(ce)?(a=".",ce++):(a=s,ge(k)),a!==s&&(i=Ee())!==s?o=a=[a,i]:(ce=o,o=s);o!==s;)n.push(o),o=ce,46===t.charCodeAt(ce)?(a=".",ce++):(a=s,ge(k)),a!==s&&(i=Ee())!==s?o=a=[a,i]:(ce=o,o=s);n!==s?(u=r,l=n,e=r=[].concat.apply([u],l).join("")):(ce=e,e=s);}else ce=e,e=s;return ye[c]={nextPos:ce,result:e},e}function De(e){return {type:"nth-child",index:{type:"literal",value:e}}}function Ie(e){return {type:"nth-last-child",index:{type:"literal",value:e}}}if((n=l())!==s&&ce===t.length)return n;throw n!==s&&ce0&&p(e,t,r))&&f(t[0],t.slice(1),r)};case"descendant":var h=c$2(t.left),x=c$2(t.right);return function(e,t,r){if(x(e,t,r))for(var n=0,o=t.length;n":return function(e){return u$1(e,v)>t.value.value};case">=":return function(e){return u$1(e,v)>=t.value.value}}throw new Error("Unknown operator: ".concat(t.operator));case"sibling":var b=c$2(t.left),E=c$2(t.right);return function(e,r,n){return E(e,r,n)&&y(e,b,r,"LEFT_SIDE",n)||t.left.subject&&b(e,r,n)&&y(e,E,r,"RIGHT_SIDE",n)};case"adjacent":var S=c$2(t.left),_=c$2(t.right);return function(e,r,n){return _(e,r,n)&&d$1(e,S,r,"LEFT_SIDE",n)||t.right.subject&&S(e,r,n)&&d$1(e,_,r,"RIGHT_SIDE",n)};case"nth-child":var C=t.index.value,w=c$2(t.right);return function(e,t,r){return w(e,t,r)&&m$2(e,t,C,r)};case"nth-last-child":var P=-t.index.value,k=c$2(t.right);return function(e,t,r){return k(e,t,r)&&m$2(e,t,P,r)};case"class":var D=t.name.toLowerCase();return function(e,r){switch(D){case"statement":if("Statement"===e.type.slice(-9))return !0;case"declaration":return "Declaration"===e.type.slice(-11);case"pattern":if("Pattern"===e.type.slice(-7))return !0;case"expression":return "Expression"===e.type.slice(-10)||"Literal"===e.type.slice(-7)||"Identifier"===e.type&&(0===r.length||"MetaProperty"!==r[0].type)||"MetaProperty"===e.type;case"function":return "FunctionDeclaration"===e.type||"FunctionExpression"===e.type||"ArrowFunctionExpression"===e.type}throw new Error("Unknown class name: ".concat(t.name))}}throw new Error("Unknown selector type: ".concat(t.type))}function p$5(e,t){var r=e.type;return t&&t.visitorKeys&&t.visitorKeys[r]?t.visitorKeys[r]:i$6.VisitorKeys[r]?i$6.VisitorKeys[r]:t&&"function"==typeof t.fallback?t.fallback(e):Object.keys(e).filter((function(e){return "type"!==e}))}function h$1(t){return null!==t&&"object"===e$2(t)&&"string"==typeof t.type}function y(e,r,n,o,a){var i=t$2(n,1)[0];if(!i)return !1;for(var s=p$5(i,a),u=0;u0&&h$1(l[c-1])&&r(l[c-1],n,a))return !0;if("RIGHT_SIDE"===o&&c=0&&l.shepherd-arrow{bottom:-8px}.shepherd-element[data-popper-placement^=bottom]>.shepherd-arrow{top:-8px}.shepherd-element[data-popper-placement^=left]>.shepherd-arrow{right:-8px}.shepherd-element[data-popper-placement^=right]>.shepherd-arrow{left:-8px}.shepherd-element.shepherd-centered>.shepherd-arrow{opacity:0}.shepherd-element.shepherd-has-title[data-popper-placement^=bottom]>.shepherd-arrow:before{background-color:#e6e6e6}.shepherd-target-click-disabled.shepherd-enabled.shepherd-target,.shepherd-target-click-disabled.shepherd-enabled.shepherd-target *{pointer-events:none}\n.shepherd-modal-overlay-container{height:0;left:0;opacity:0;overflow:hidden;pointer-events:none;position:fixed;top:0;transition:all .3s ease-out,height 0ms .3s,opacity .3s 0ms;width:100vw;z-index:9997}.shepherd-modal-overlay-container.shepherd-modal-is-visible{height:100vh;opacity:.5;transition:all .3s ease-out,height 0s 0s,opacity .3s 0s}.shepherd-modal-overlay-container.shepherd-modal-is-visible path{pointer-events:all}"; n$3(css$5,{}); -let methods$o = { +let methods$p = { one: {}, two: {}, three: {}, @@ -144516,9 +144516,9 @@ let model$7 = { let compute$d = {}; let hooks = []; -var tmpWrld = { methods: methods$o, model: model$7, compute: compute$d, hooks }; +var tmpWrld = { methods: methods$p, model: model$7, compute: compute$d, hooks }; -const isArray$c = input => Object.prototype.toString.call(input) === '[object Array]'; +const isArray$d = input => Object.prototype.toString.call(input) === '[object Array]'; const fns$5 = { /** add metadata to term objects */ @@ -144530,7 +144530,7 @@ const fns$5 = { compute[input](this); } // allow a list of methods - else if (isArray$c(input)) { + else if (isArray$d(input)) { input.forEach(name => { if (world.compute.hasOwnProperty(name)) { compute[name](this); @@ -144795,11 +144795,11 @@ utils$1.lastTerm = utils$1.lastTerms; utils$1.firstTerm = utils$1.firstTerms; var util = utils$1; -const methods$n = Object.assign({}, util, compute$c, loops); +const methods$o = Object.assign({}, util, compute$c, loops); // aliases -methods$n.get = methods$n.eq; -var api$B = methods$n; +methods$o.get = methods$o.eq; +var api$B = methods$o; class View { constructor(document, pointer, groups = {}) { @@ -144927,7 +144927,7 @@ class View { Object.assign(View.prototype, api$B); var View$1 = View; -var version$6 = '14.11.0'; +var version$6 = '14.12.0'; const isObject$8 = function (item) { return item && typeof item === 'object' && !Array.isArray(item) @@ -144940,9 +144940,6 @@ function mergeDeep(model, plugin) { if (isObject$8(plugin[key])) { if (!model[key]) Object.assign(model, { [key]: {} }); mergeDeep(model[key], plugin[key]); //recursion - // } else if (isArray(plugin[key])) { - // console.log(key) - // console.log(model) } else { Object.assign(model, { [key]: plugin[key] }); } @@ -145034,7 +145031,7 @@ const extend$2 = function (plugin, world, View, nlp) { plugin.api(View); } if (plugin.lib) { - Object.keys(plugin.lib).forEach(k => nlp[k] = plugin.lib[k]); + Object.keys(plugin.lib).forEach(k => (nlp[k] = plugin.lib[k])); } if (plugin.tags) { nlp.addTags(plugin.tags); @@ -145042,6 +145039,9 @@ const extend$2 = function (plugin, world, View, nlp) { if (plugin.words) { nlp.addWords(plugin.words); } + if (plugin.frozen) { + nlp.addWords(plugin.frozen, true); + } if (plugin.mutate) { plugin.mutate(world); } @@ -145061,7 +145061,7 @@ const isObject$7 = val => { return Object.prototype.toString.call(val) === '[object Object]' }; -const isArray$b = function (arr) { +const isArray$c = function (arr) { return Object.prototype.toString.call(arr) === '[object Array]' }; @@ -145069,7 +145069,7 @@ const isArray$b = function (arr) { const fromJson = function (json) { return json.map(o => { return o.terms.map(term => { - if (isArray$b(term.tags)) { + if (isArray$c(term.tags)) { term.tags = new Set(term.tags); } return term @@ -145114,9 +145114,9 @@ const inputs = function (input, View, world) { return new View(input.document, input.ptrs) } // handle json input - if (isArray$b(input)) { + if (isArray$c(input)) { // pre-tokenized array-of-arrays - if (isArray$b(input[0])) { + if (isArray$c(input[0])) { let document = preTokenized(input); return new View(document) } @@ -145227,13 +145227,13 @@ const createCache = function (document) { }; var cacheDoc = createCache; -var methods$m = { +var methods$n = { one: { cacheDoc, }, }; -const methods$l = { +const methods$m = { /** */ cache: function () { this._cache = this.methods.one.cacheDoc(this.document); @@ -145246,7 +145246,7 @@ const methods$l = { }, }; const addAPI$3 = function (View) { - Object.assign(View.prototype, methods$l); + Object.assign(View.prototype, methods$m); }; var api$A = addAPI$3; @@ -145259,7 +145259,7 @@ var compute$b = { var cache$1 = { api: api$A, compute: compute$b, - methods: methods$m, + methods: methods$n, }; var caseFns = { @@ -145484,7 +145484,7 @@ const expand$3 = function (m) { } }; -const isArray$a = (arr) => Object.prototype.toString.call(arr) === '[object Array]'; +const isArray$b = (arr) => Object.prototype.toString.call(arr) === '[object Array]'; // set new ids for each terms const addIds$2 = function (terms) { @@ -145506,8 +145506,8 @@ const getTerms = function (input, world) { return input.clone().docs[0] || [] //assume one sentence } //allow an array of terms, too - if (isArray$a(input)) { - return isArray$a(input[0]) ? input[0] : input + if (isArray$b(input)) { + return isArray$b(input[0]) ? input[0] : input } return [] }; @@ -145779,7 +145779,7 @@ const fixPointers$1 = function (ptrs, gonePtrs) { return ptrs }; -const methods$k = { +const methods$l = { /** */ remove: function (reg) { const { indexN } = this.methods.one.pointer; @@ -145825,10 +145825,10 @@ const methods$k = { }; // aliases -methods$k.delete = methods$k.remove; -var remove = methods$k; +methods$l.delete = methods$l.remove; +var remove = methods$l; -const methods$j = { +const methods$k = { /** add this punctuation or whitespace before each match: */ pre: function (str, concat) { if (str === undefined && this.found) { @@ -145932,10 +145932,10 @@ const methods$j = { }; // aliases -methods$j.deHyphenate = methods$j.dehyphenate; -methods$j.toQuotation = methods$j.toQuotations; +methods$k.deHyphenate = methods$k.dehyphenate; +methods$k.toQuotation = methods$k.toQuotations; -var whitespace = methods$j; +var whitespace = methods$k; /** alphabetical order */ const alpha = (a, b) => { @@ -146005,7 +146005,7 @@ const byFreq = function (arr) { return arr }; -var methods$i = { alpha, length: length$1, wordCount: wordCount$2, sequential, byFreq }; +var methods$j = { alpha, length: length$1, wordCount: wordCount$2, sequential, byFreq }; // aliases const seqNames = new Set(['index', 'sequence', 'seq', 'sequential', 'chron', 'chronological']); @@ -146051,12 +146051,12 @@ const sort = function (input) { } // sort by frequency if (freqNames.has(input)) { - arr = methods$i.byFreq(arr); + arr = methods$j.byFreq(arr); return this.update(arr.map(o => o.pointer)) } // apply sort method on each phrase - if (typeof methods$i[input] === 'function') { - arr = arr.sort(methods$i[input]); + if (typeof methods$j[input] === 'function') { + arr = arr.sort(methods$j[input]); return this.update(arr.map(o => o.pointer)) } return this @@ -146090,7 +146090,7 @@ const unique$1 = function () { var sort$1 = { unique: unique$1, reverse: reverse$2, sort }; -const isArray$9 = (arr) => Object.prototype.toString.call(arr) === '[object Array]'; +const isArray$a = (arr) => Object.prototype.toString.call(arr) === '[object Array]'; // append a new document, somehow const combineDocs = function (homeDocs, inputDocs) { @@ -146144,7 +146144,7 @@ var concat$1 = { return combineViews(this, input) } // assume it's an array of terms - if (isArray$9(input)) { + if (isArray$a(input)) { let docs = combineDocs(this.document, input); this.document = docs; return this.all() @@ -146170,10 +146170,10 @@ const soften = function () { }; var harden$1 = { harden, soften }; -const methods$h = Object.assign({}, caseFns, insert$2, replace, remove, whitespace, sort$1, concat$1, harden$1); +const methods$i = Object.assign({}, caseFns, insert$2, replace, remove, whitespace, sort$1, concat$1, harden$1); const addAPI$2 = function (View) { - Object.assign(View.prototype, methods$h); + Object.assign(View.prototype, methods$i); }; var api$z = addAPI$2; @@ -146806,7 +146806,7 @@ const expand$2 = function (words) { }; var expandLexicon$3 = expand$2; -var methods$g = { +var methods$h = { one: { expandLexicon: expandLexicon$3, } @@ -146857,7 +146857,7 @@ const model$5 = { var lexicon$2 = { model: model$5, - methods: methods$g, + methods: methods$h, compute: compute$7, lib: lib$5, hooks: ['lexicon'], @@ -147091,15 +147091,7 @@ const fixPointers = function (res, parent) { return { ptrs, byGroup } }; -const isObject$5 = val => { - return Object.prototype.toString.call(val) === '[object Object]' -}; - -// did they pass-in a compromise object? -const isView = val => val && isObject$5(val) && val.isView === true; - -const isNet = val => val && isObject$5(val) && val.isNet === true; - +// turn any matchable input intp a list of matches const parseRegs = function (regs, opts, world) { const one = world.methods.one; if (typeof regs === 'number') { @@ -147113,6 +147105,15 @@ const parseRegs = function (regs, opts, world) { return regs }; +const isObject$5 = val => { + return Object.prototype.toString.call(val) === '[object Object]' +}; + +// did they pass-in a compromise object? +const isView = val => val && isObject$5(val) && val.isView === true; + +const isNet = val => val && isObject$5(val) && val.isNet === true; + const match$2 = function (regs, group, opts) { const one = this.methods.one; // support param as view object @@ -147155,7 +147156,7 @@ const has = function (regs, group, opts) { const one = this.methods.one; // support view as input if (isView(regs)) { - let ptrs = regs.fullPointer; // support a view object as input + let ptrs = this.intersection(regs).fullPointer; return ptrs.length > 0 } // support a compiled set of matches @@ -147178,7 +147179,7 @@ const ifFn = function (regs, group, opts) { // support a compiled set of matches if (isNet(regs)) { let m = this.sweep(regs, { tagger: false }).view.settle(); - return this.if(m)//recurse with result + return this.if(m) //recurse with result } regs = parseRegs(regs, opts, this.world); let todo = { regs, group, justOne: true }; @@ -147268,7 +147269,7 @@ const growLeft = function (regs, group, opts) { if (typeof regs === 'string') { regs = this.world.methods.one.parseMatch(regs, opts, this.world); } - regs[regs.length - 1].end = true;// ensure matches are beside us ← + regs[regs.length - 1].end = true; // ensure matches are beside us ← let ptrs = this.fullPointer; this.forEach((m, n) => { let more = m.before(regs, group); @@ -147285,7 +147286,7 @@ const growRight = function (regs, group, opts) { if (typeof regs === 'string') { regs = this.world.methods.one.parseMatch(regs, opts, this.world); } - regs[0].start = true;// ensure matches are beside us → + regs[0].start = true; // ensure matches are beside us → let ptrs = this.fullPointer; this.forEach((m, n) => { let more = m.after(regs, group); @@ -147308,12 +147309,12 @@ const combine = function (left, right) { return [left[0], left[1], right[2]] }; -const isArray$8 = function (arr) { +const isArray$9 = function (arr) { return Object.prototype.toString.call(arr) === '[object Array]' }; const getDoc$3 = (reg, view, group) => { - if (typeof reg === 'string' || isArray$8(reg)) { + if (typeof reg === 'string' || isArray$9(reg)) { return view.match(reg, group) } if (!reg) { @@ -147333,9 +147334,9 @@ const addIds$1 = function (ptr, view) { return ptr }; -const methods$f = {}; +const methods$g = {}; // [before], [match], [after] -methods$f.splitOn = function (m, group) { +methods$g.splitOn = function (m, group) { const { splitAll } = this.methods.one.pointer; let splits = getDoc$3(m, this, group).fullPointer; let all = splitAll(this.fullPointer, splits); @@ -147352,7 +147353,7 @@ methods$f.splitOn = function (m, group) { }; // [before], [match after] -methods$f.splitBefore = function (m, group) { +methods$g.splitBefore = function (m, group) { const { splitAll } = this.methods.one.pointer; let splits = getDoc$3(m, this, group).fullPointer; let all = splitAll(this.fullPointer, splits); @@ -147387,7 +147388,7 @@ methods$f.splitBefore = function (m, group) { }; // [before match], [after] -methods$f.splitAfter = function (m, group) { +methods$g.splitAfter = function (m, group) { const { splitAll } = this.methods.one.pointer; let splits = getDoc$3(m, this, group).fullPointer; let all = splitAll(this.fullPointer, splits); @@ -147406,11 +147407,68 @@ methods$f.splitAfter = function (m, group) { res = res.map(p => addIds$1(p, this)); return this.update(res) }; -methods$f.split = methods$f.splitAfter; +methods$g.split = methods$g.splitAfter; + +var split$2 = methods$g; + +// check if two pointers are perfectly consecutive +const isNeighbour = function (ptrL, ptrR) { + // validate + if (!ptrL || !ptrR) { + return false + } + // same sentence + if (ptrL[0] !== ptrR[0]) { + return false + } + // ensure R starts where L ends + return ptrL[2] === ptrR[1] +}; -var split$2 = methods$f; +// join two neighbouring words, if they both match +const mergeIf = function (doc, lMatch, rMatch) { + const world = doc.world; + const parseMatch = world.methods.one.parseMatch; + lMatch = lMatch || '.$'; //defaults + rMatch = rMatch || '^.'; + let leftMatch = parseMatch(lMatch, {}, world); + let rightMatch = parseMatch(rMatch, {}, world); + // ensure end-requirement to left-match, start-requiremnts to right match + leftMatch[leftMatch.length - 1].end = true; + rightMatch[0].start = true; + // let's get going. + let ptrs = doc.fullPointer; + let res = [ptrs[0]]; + for (let i = 1; i < ptrs.length; i += 1) { + let ptrL = res[res.length - 1]; + let ptrR = ptrs[i]; + let left = doc.update([ptrL]); + let right = doc.update([ptrR]); + // should we marge left+right? + if (isNeighbour(ptrL, ptrR) && left.has(leftMatch) && right.has(rightMatch)) { + // merge right ptr into existing result + res[res.length - 1] = [ptrL[0], ptrL[1], ptrR[2], ptrL[3], ptrR[4]]; + } else { + res.push(ptrR); + } + } + // return new pointers + return doc.update(res) +}; -const methods$e = Object.assign({}, match$3, lookaround, split$2); +const methods$f = { + // merge only if conditions are met + joinIf: function (lMatch, rMatch) { + return mergeIf(this, lMatch, rMatch) + }, + // merge all neighbouring matches + join: function () { + return mergeIf(this) + }, +}; +var join$1 = methods$f; + +const methods$e = Object.assign({}, match$3, lookaround, split$2, join$1); // aliases methods$e.lookBehind = methods$e.before; methods$e.lookBefore = methods$e.before; @@ -148036,7 +148094,7 @@ const hasDash$1 = / [-–—]{1,3} /; /** search the term's 'post' punctuation */ const hasPost = (term, punct) => term.post.indexOf(punct) !== -1; /** search the term's 'pre' punctuation */ -const hasPre = (term, punct) => term.pre.indexOf(punct) !== -1; +// const hasPre = (term, punct) => term.pre.indexOf(punct) !== -1 const methods$d = { /** does it have a quotation symbol? */ @@ -148050,7 +148108,7 @@ const methods$d = { /** does it end with a question mark? */ hasQuestionMark: term => hasPost(term, '?') || hasPost(term, '¿'), /** is there a ... at the end? */ - hasEllipses: term => hasPost(term, '..') || hasPost(term, '…') || hasPre(term, '..') || hasPre(term, '…'), + hasEllipses: term => hasPost(term, '..') || hasPost(term, '…'), /** is there a semicolon after term word? */ hasSemicolon: term => hasPost(term, ';'), /** is there a colon after term word? */ @@ -148303,7 +148361,7 @@ const doAstrix = function (state) { }; var doAstrix$1 = doAstrix; -const isArray$7 = function (arr) { +const isArray$8 = function (arr) { return Object.prototype.toString.call(arr) === '[object Array]' }; @@ -148314,7 +148372,7 @@ const doOrBlock$1 = function (state, skipN = 0) { for (let c = 0; c < block.choices.length; c += 1) { // try to match this list of tokens let regs = block.choices[c]; - if (!isArray$7(regs)) { + if (!isArray$8(regs)) { return false } wasFound = regs.every((cr, w_index) => { @@ -148944,7 +149002,7 @@ var match = { const isClass = /^\../; const isId = /^#./; -const escapeXml = (str) => { +const escapeXml = str => { str = str.replace(/&/g, '&'); str = str.replace(//g, '>'); @@ -149007,7 +149065,8 @@ const html$2 = function (obj) { if (starts.hasOwnProperty(t.id)) { out += starts[t.id].join(''); } - out += t.pre || '' + t.text || ''; + out += t.pre || ''; + out += t.text || ''; if (ends.hasOwnProperty(t.id)) { out += ends[t.id].join(''); } @@ -149028,7 +149087,7 @@ const hasSpace = / /; const textFromTerms = function (terms, opts, keepSpace = true) { let txt = ''; - terms.forEach((t) => { + terms.forEach(t => { let pre = t.pre || ''; let post = t.post || ''; if (opts.punctuation === 'some') { @@ -149108,6 +149167,10 @@ const textFromDoc = function (docs, opts) { if (!last[last.length - 1].tags.has('Emoticon')) { text = text.replace(trimEnd, ''); } + // kill end quotations + if (text.endsWith(`'`) && !text.endsWith(`s'`)) { + text = text.replace(/'/, ''); + } } if (opts.cleanWhitespace === true) { text = text.trim(); @@ -149155,14 +149218,17 @@ var fmts$1 = fmts; /* eslint-disable no-multi-assign */ // https://github.com/jbt/tiny-hashes/ -let k = [], i$5 = 0; -for (; i$5 < 64;) { - k[i$5] = 0 | Math.sin(++i$5 % Math.PI) * 4294967296; +let k = [], + i$5 = 0; +for (; i$5 < 64; ) { + k[i$5] = 0 | (Math.sin(++i$5 % Math.PI) * 4294967296); } -function md5(s) { - let b, c, d, - h = [b = 0x67452301, c = 0xEFCDAB89, ~b, ~c], +const md5 = function (s) { + let b, + c, + d, + h = [(b = 0x67452301), (c = 0xefcdab89), ~b, ~c], words = [], j = decodeURI(encodeURI(s)) + '\x80', a = j.length; @@ -149171,57 +149237,43 @@ function md5(s) { words[--s] = a * 8; - for (; ~a;) { - words[a >> 2] |= j.charCodeAt(a) << 8 * a--; + for (; ~a; ) { + words[a >> 2] |= j.charCodeAt(a) << (8 * a--); } for (i$5 = j = 0; i$5 < s; i$5 += 16) { a = h; - for (; j < 64; + for ( + ; + j < 64; a = [ - d = a[3], - ( - b + - ((d = + (d = a[3]), + b + + (((d = a[0] + - [ - b & c | ~b & d, - d & b | ~d & c, - b ^ c ^ d, - c ^ (b | ~d) - ][a = j >> 4] + + [(b & c) | (~b & d), (d & b) | (~d & c), b ^ c ^ d, c ^ (b | ~d)][(a = j >> 4)] + k[j] + - ~~words[i$5 | [ - j, - 5 * j + 1, - 3 * j + 5, - 7 * j - ][a] & 15] - ) << (a = [ - 7, 12, 17, 22, - 5, 9, 14, 20, - 4, 11, 16, 23, - 6, 10, 15, 21 - ][4 * a + j++ % 4]) | d >>> -a) - ), + ~~words[i$5 | ([j, 5 * j + 1, 3 * j + 5, 7 * j][a] & 15)]) << + (a = [7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21][4 * a + (j++ % 4)])) | + (d >>> -a)), b, - c + c, ] ) { b = a[1] | 0; c = a[2]; } - for (j = 4; j;) h[--j] += a[j]; + for (j = 4; j; ) h[--j] += a[j]; } - for (s = ''; j < 32;) { + for (s = ''; j < 32; ) { s += ((h[j >> 3] >> ((1 ^ j++) * 4)) & 15).toString(16); } - return s; -} - + return s +}; +var hash$2 = md5; // console.log(md5('food-safety')) const defaults$3 = { @@ -149236,16 +149288,16 @@ const merge$1 = function (a, b) { }; const fns$2 = { - text: (terms) => textFromTerms(terms, { keepPunct: true }, false), - normal: (terms) => textFromTerms(terms, merge$1(fmts$1.normal, { keepPunct: true }), false), - implicit: (terms) => textFromTerms(terms, merge$1(fmts$1.implicit, { keepPunct: true }), false), + text: terms => textFromTerms(terms, { keepPunct: true }, false), + normal: terms => textFromTerms(terms, merge$1(fmts$1.normal, { keepPunct: true }), false), + implicit: terms => textFromTerms(terms, merge$1(fmts$1.implicit, { keepPunct: true }), false), - machine: (terms) => textFromTerms(terms, opts, false), - root: (terms) => textFromTerms(terms, merge$1(opts, { form: 'root' }), false), + machine: terms => textFromTerms(terms, opts, false), + root: terms => textFromTerms(terms, merge$1(opts, { form: 'root' }), false), - hash: (terms) => md5(textFromTerms(terms, { keepPunct: true }, false)), + hash: terms => hash$2(textFromTerms(terms, { keepPunct: true }, false)), - offset: (terms) => { + offset: terms => { let len = fns$2.text(terms).length; return { index: terms[0].offset.index, @@ -149253,7 +149305,7 @@ const fns$2 = { length: len, } }, - terms: (terms) => { + terms: terms => { return terms.map(t => { let term = Object.assign({}, t); term.tags = Array.from(t.tags); @@ -149263,7 +149315,7 @@ const fns$2 = { confidence: (_terms, view, i) => view.eq(i).confidence(), syllables: (_terms, view, i) => view.eq(i).syllables(), sentence: (_terms, view, i) => view.eq(i).fullSentence().text(), - dirty: (terms) => terms.some(t => t.dirty === true) + dirty: terms => terms.some(t => t.dirty === true), }; fns$2.sentences = fns$2.sentence; fns$2.clean = fns$2.normal; @@ -149290,7 +149342,6 @@ const toJSON$6 = function (view, option) { }) }; - const methods$a = { /** return data */ json: function (n) { @@ -149305,183 +149356,26 @@ methods$a.data = methods$a.json; var json = methods$a; /* eslint-disable no-console */ -const logClientSide = function (view) { - console.log('%c -=-=- ', 'background-color:#6699cc;'); - view.forEach(m => { - console.groupCollapsed(m.text()); - let terms = m.docs[0]; - let out = terms.map(t => { - let text = t.text || '-'; - if (t.implicit) { - text = '[' + t.implicit + ']'; - } - let tags = '[' + Array.from(t.tags).join(', ') + ']'; - return { text, tags } - }); - console.table(out, ['text', 'tags']); - console.groupEnd(); - }); -}; -var logClientSide$1 = logClientSide; +const isClientSide = () => typeof window !== 'undefined' && window.document; -// https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color -const reset = '\x1b[0m'; - -//cheaper than requiring chalk -const cli = { - green: str => '\x1b[32m' + str + reset, - red: str => '\x1b[31m' + str + reset, - blue: str => '\x1b[34m' + str + reset, - magenta: str => '\x1b[35m' + str + reset, - cyan: str => '\x1b[36m' + str + reset, - yellow: str => '\x1b[33m' + str + reset, - black: str => '\x1b[30m' + str + reset, - dim: str => '\x1b[2m' + str + reset, - i: str => '\x1b[3m' + str + reset, -}; -var cli$1 = cli; - -/* eslint-disable no-console */ - -const tagString = function (tags, model) { - if (model.one.tagSet) { - tags = tags.map(tag => { - if (!model.one.tagSet.hasOwnProperty(tag)) { - return tag - } - const c = model.one.tagSet[tag].color || 'blue'; - return cli$1[c](tag) - }); - } - return tags.join(', ') -}; - -const showTags = function (view) { - let { docs, model } = view; - if (docs.length === 0) { - console.log(cli$1.blue('\n ──────')); - } - docs.forEach(terms => { - console.log(cli$1.blue('\n ┌─────────')); - terms.forEach(t => { - let tags = [...(t.tags || [])]; - let text = t.text || '-'; - if (t.sense) { - text = `{${t.normal}/${t.sense}}`; - } - if (t.implicit) { - text = '[' + t.implicit + ']'; - } - text = cli$1.yellow(text); - let word = "'" + text + "'"; - if (t.reference) { - let str = view.update([t.reference]).text('normal'); - word += ` - ${cli$1.dim(cli$1.i('[' + str + ']'))}`; - } - word = word.padEnd(18); - let str = cli$1.blue(' │ ') + cli$1.i(word) + ' - ' + tagString(tags, model); - console.log(str); - }); - }); -}; -var showTags$1 = showTags; - -/* eslint-disable no-console */ - -const showChunks = function (view) { - let { docs } = view; - console.log(''); - docs.forEach(terms => { - let out = []; - terms.forEach(term => { - if (term.chunk === 'Noun') { - out.push(cli$1.blue(term.implicit || term.normal)); - } else if (term.chunk === 'Verb') { - out.push(cli$1.green(term.implicit || term.normal)); - } else if (term.chunk === 'Adjective') { - out.push(cli$1.yellow(term.implicit || term.normal)); - } else if (term.chunk === 'Pivot') { - out.push(cli$1.red(term.implicit || term.normal)); - } else { - out.push(term.implicit || term.normal); - } - }); - console.log(out.join(' '), '\n'); - }); -}; -var showChunks$1 = showChunks; - -const split$1 = (txt, offset, index) => { - let buff = index * 9; //there are 9 new chars addded to each highlight - let start = offset.start + buff; - let end = start + offset.length; - let pre = txt.substring(0, start); - let mid = txt.substring(start, end); - let post = txt.substring(end, txt.length); - return [pre, mid, post] -}; - -const spliceIn = function (txt, offset, index) { - let parts = split$1(txt, offset, index); - return `${parts[0]}${cli$1.blue(parts[1])}${parts[2]}` -}; - -const showHighlight = function (doc) { - if (!doc.found) { - return - } - let bySentence = {}; - doc.fullPointer.forEach(ptr => { - bySentence[ptr[0]] = bySentence[ptr[0]] || []; - bySentence[ptr[0]].push(ptr); - }); - Object.keys(bySentence).forEach(k => { - let full = doc.update([[Number(k)]]); - let txt = full.text(); - let matches = doc.update(bySentence[k]); - let json = matches.json({ offset: true }); - json.forEach((obj, i) => { - txt = spliceIn(txt, obj.offset, i); - }); - console.log(txt); // eslint-disable-line - }); -}; -var showHighlight$1 = showHighlight; - -/* eslint-disable no-console */ - -function isClientSide() { - return typeof window !== 'undefined' && window.document -} //output some helpful stuff to the console -const debug = function (opts = {}) { - let view = this; - if (typeof opts === 'string') { - let tmp = {}; - tmp[opts] = true; //allow string input - opts = tmp; +const debug$2 = function (fmt) { + let debugMethods = this.methods.one.debug || {}; + // see if method name exists + if (fmt && debugMethods.hasOwnProperty(fmt)) { + debugMethods[fmt](this); + return this } + // log default client-side view if (isClientSide()) { - logClientSide$1(view); - return view - } - if (opts.tags !== false) { - showTags$1(view); - console.log('\n'); - } - // output chunk-view, too - if (opts.chunks === true) { - showChunks$1(view); - console.log('\n'); - } - // highlight match in sentence - if (opts.highlight === true) { - showHighlight$1(view); - console.log('\n'); + debugMethods.clientSide(this); + return this } - return view + // else, show regular server-side tags view + debugMethods.tags(this); + return this }; -var debug$1 = debug; +var debug$3 = debug$2; const toText$3 = function (term) { let pre = term.pre || ''; @@ -149561,7 +149455,7 @@ const out$2 = function (method) { return this.text('machine') } if (method === 'hash' || method === 'md5') { - return md5(this.text()) + return hash$2(this.text()) } // json data formats @@ -149613,7 +149507,7 @@ const out$2 = function (method) { const methods$9 = { /** */ - debug: debug$1, + debug: debug$3, /** */ out: out$2, /** */ @@ -149635,10 +149529,11 @@ var text$1 = { if (fmt && typeof fmt === 'string' && fmts$1.hasOwnProperty(fmt)) { opts = Object.assign({}, fmts$1[fmt]); } else if (fmt && isObject$3(fmt)) { - opts = Object.assign({}, fmt);//todo: fixme + opts = Object.assign({}, fmt); //todo: fixme } // is it a full document? - if (opts.keepSpace === undefined && !this.isFull()) { // + if (opts.keepSpace === undefined && !this.isFull()) { + // opts.keepSpace = false; } if (opts.keepEndPunct === undefined && this.pointer) { @@ -149667,13 +149562,171 @@ const addAPI$1 = function (View) { }; var api$w = addAPI$1; +/* eslint-disable no-console */ +const logClientSide = function (view) { + console.log('%c -=-=- ', 'background-color:#6699cc;'); + view.forEach(m => { + console.groupCollapsed(m.text()); + let terms = m.docs[0]; + let out = terms.map(t => { + let text = t.text || '-'; + if (t.implicit) { + text = '[' + t.implicit + ']'; + } + let tags = '[' + Array.from(t.tags).join(', ') + ']'; + return { text, tags } + }); + console.table(out, ['text', 'tags']); + console.groupEnd(); + }); +}; +var clientSide = logClientSide; + +// https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color +const reset = '\x1b[0m'; + +//cheaper than requiring chalk +const cli = { + green: str => '\x1b[32m' + str + reset, + red: str => '\x1b[31m' + str + reset, + blue: str => '\x1b[34m' + str + reset, + magenta: str => '\x1b[35m' + str + reset, + cyan: str => '\x1b[36m' + str + reset, + yellow: str => '\x1b[33m' + str + reset, + black: str => '\x1b[30m' + str + reset, + dim: str => '\x1b[2m' + str + reset, + i: str => '\x1b[3m' + str + reset, +}; +var cli$1 = cli; + +/* eslint-disable no-console */ + +const tagString = function (tags, model) { + if (model.one.tagSet) { + tags = tags.map(tag => { + if (!model.one.tagSet.hasOwnProperty(tag)) { + return tag + } + const c = model.one.tagSet[tag].color || 'blue'; + return cli$1[c](tag) + }); + } + return tags.join(', ') +}; + +const showTags = function (view) { + let { docs, model } = view; + if (docs.length === 0) { + console.log(cli$1.blue('\n ──────')); + } + docs.forEach(terms => { + console.log(cli$1.blue('\n ┌─────────')); + terms.forEach(t => { + let tags = [...(t.tags || [])]; + let text = t.text || '-'; + if (t.sense) { + text = `{${t.normal}/${t.sense}}`; + } + if (t.implicit) { + text = '[' + t.implicit + ']'; + } + text = cli$1.yellow(text); + let word = "'" + text + "'"; + if (t.reference) { + let str = view.update([t.reference]).text('normal'); + word += ` - ${cli$1.dim(cli$1.i('[' + str + ']'))}`; + } + word = word.padEnd(18); + let str = cli$1.blue(' │ ') + cli$1.i(word) + ' - ' + tagString(tags, model); + console.log(str); + }); + }); + console.log('\n'); +}; +var tags$1 = showTags; + +/* eslint-disable no-console */ + +const showChunks = function (view) { + let { docs } = view; + console.log(''); + docs.forEach(terms => { + let out = []; + terms.forEach(term => { + if (term.chunk === 'Noun') { + out.push(cli$1.blue(term.implicit || term.normal)); + } else if (term.chunk === 'Verb') { + out.push(cli$1.green(term.implicit || term.normal)); + } else if (term.chunk === 'Adjective') { + out.push(cli$1.yellow(term.implicit || term.normal)); + } else if (term.chunk === 'Pivot') { + out.push(cli$1.red(term.implicit || term.normal)); + } else { + out.push(term.implicit || term.normal); + } + }); + console.log(out.join(' '), '\n'); + }); + console.log('\n'); +}; +var chunks$1 = showChunks; + +/* eslint-disable no-console */ + +const split$1 = (txt, offset, index) => { + let buff = index * 9; //there are 9 new chars addded to each highlight + let start = offset.start + buff; + let end = start + offset.length; + let pre = txt.substring(0, start); + let mid = txt.substring(start, end); + let post = txt.substring(end, txt.length); + return [pre, mid, post] +}; + +const spliceIn = function (txt, offset, index) { + let parts = split$1(txt, offset, index); + return `${parts[0]}${cli$1.blue(parts[1])}${parts[2]}` +}; + +const showHighlight = function (doc) { + if (!doc.found) { + return + } + let bySentence = {}; + doc.fullPointer.forEach(ptr => { + bySentence[ptr[0]] = bySentence[ptr[0]] || []; + bySentence[ptr[0]].push(ptr); + }); + Object.keys(bySentence).forEach(k => { + let full = doc.update([[Number(k)]]); + let txt = full.text(); + let matches = doc.update(bySentence[k]); + let json = matches.json({ offset: true }); + json.forEach((obj, i) => { + txt = spliceIn(txt, obj.offset, i); + }); + console.log(txt); + }); + console.log('\n'); +}; +var highlight = showHighlight; + +const debug = { + tags: tags$1, + clientSide, + chunks: chunks$1, + highlight, +}; +var debug$1 = debug; + var output$1 = { api: api$w, methods: { one: { - hash: md5 - } - } + hash: hash$2, + debug: debug$1, + }, + }, }; // do the pointers intersect? @@ -150003,12 +150056,12 @@ var getIntersection$1 = getIntersection; // console.log(getIntersection([[0, 1, 3]], [[0, 2, 4]])) -const isArray$6 = function (arr) { +const isArray$7 = function (arr) { return Object.prototype.toString.call(arr) === '[object Array]' }; const getDoc = (m, view) => { - if (typeof m === 'string' || isArray$6(m)) { + if (typeof m === 'string' || isArray$7(m)) { return view.match(m) } if (!m) { @@ -150057,7 +150110,7 @@ methods$6.not = function (m) { }; methods$6.difference = methods$6.not; -// get opposite of a +// get opposite of a match methods$6.complement = function () { let doc = this.all(); let ptrs = getDifference(doc.fullPointer, this.fullPointer); @@ -150075,7 +150128,6 @@ methods$6.settle = function () { return this.update(ptrs) }; - const addAPI = function (View) { // add set/intersection/union Object.assign(View.prototype, methods$6); @@ -150454,7 +150506,7 @@ const tagger$1 = function (list, document, world) { } if (todo.tag !== undefined) { setTag(terms, todo.tag, world, todo.safe, `[post] '${reason}'`); - // quick and dirty plural tagger + // quick and dirty plural tagger 😕 if (todo.tag === 'Noun' && looksPlural) { let term = terms[terms.length - 1]; if (looksPlural(term.text)) { @@ -150463,13 +150515,17 @@ const tagger$1 = function (list, document, world) { setTag([term], 'Singular', world, todo.safe, 'quick-singular'); } } + // allow freezing this match, too + if (todo.freeze === true) { + terms.forEach(term => (term.frozen = true)); + } } if (todo.unTag !== undefined) { unTag(terms, todo.unTag, world, todo.safe, reason); } // allow setting chunks, too if (todo.chunk) { - terms.forEach(t => t.chunk = todo.chunk); + terms.forEach(t => (t.chunk = todo.chunk)); } }) }; @@ -150555,7 +150611,7 @@ const multiTag = function (terms, tagString, tagSet, isSafe) { }); }; -const isArray$5 = function (arr) { +const isArray$6 = function (arr) { return Object.prototype.toString.call(arr) === '[object Array]' }; @@ -150586,7 +150642,7 @@ const setTag = function (terms, tag, world = {}, isSafe, reason) { if (env && env.DEBUG_TAGS) { log$2(terms, tag, reason); } - if (isArray$5(tag) === true) { + if (isArray$6(tag) === true) { tag.forEach(tg => setTag(terms, tg, world, isSafe)); return } @@ -150650,7 +150706,7 @@ const canBe = function (term, tag, tagSet) { }; var canBe$1 = canBe; -const e$1=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},t=/^ *(#|\/\/)/,n$1=function(t){let n=t.trim().split(/->/),r=[];n.forEach((t=>{r=r.concat(function(t){if(!(t=t.trim()))return null;if(/^\[/.test(t)&&/\]$/.test(t)){let n=(t=(t=t.replace(/^\[/,"")).replace(/\]$/,"")).split(/,/);return n=n.map((e=>e.trim())).filter((e=>e)),n=n.map((t=>e$1({id:t}))),n}return [e$1({id:t})]}(t));})),r=r.filter((e=>e));let i=r[0];for(let e=1;e{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},i$4=e=>"[object Array]"===Object.prototype.toString.call(e),c$1=e=>(e=e||"").trim(),s$1=function(c=[]){return "string"==typeof c?function(r){let i=r.split(/\r?\n/),c=[];i.forEach((e=>{if(!e.trim()||t.test(e))return;let r=(e=>{const t=/^( {2}|\t)/;let n=0;for(;t.test(e);)e=e.replace(t,""),n+=1;return n})(e);c.push({indent:r,node:n$1(e)});}));let s=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[e.id]=e;}));let r=e$1({});return t.forEach((t=>{if((t=e$1(t)).parent)if(n.hasOwnProperty(t.parent)){let e=n[t.parent];delete t.parent,e.children.push(t);}else console.warn(`[Grad] - missing node '${t.parent}'`);else r.children.push(t);})),r}(c):(r(s=c).forEach(e$1),s);var s;},h=e=>""+e+"",o=e=>""+e+"",l=function(e,t){let n="-> ";t&&(n=o("→ "));let i="";return r(e).forEach(((e,r)=>{let c=e.id||"";if(t&&(c=h(c)),0===r&&!e.id)return;let s=e._cache.parents.length;i+=" ".repeat(s)+n+c+"\n";})),i},a$1=function(e){let t=r(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},p$4={text:l,txt:l,array:a$1,flat:a$1},d=function(e,t){return "nested"===t||"json"===t?e:"debug"===t?(console.log(l(e,!0)),null):p$4.hasOwnProperty(t)?p$4[t](e):e},u=e=>{r(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],t._cache.parents=e._cache.parents.concat([e.id]));}));},f$1=(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 i$4(t[n])?e[n]=t[n].concat(e[n]||[]):void 0===e[n]&&(e[n]=t[n]);}})),e),j=/\//;class g$1{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(t){if(t=c$1(t),!j.test(t)){let e=this.json.children.find((e=>e.id===t));return new g$1(e)}let n=((e,t)=>{let n=(e=>"string"!=typeof e?e:(e=e.replace(/^\//,"")).split(/\//))(t=t||"");for(let t=0;te.id===n[t]));if(!r)return null;e=r;}return e})(this.json,t)||e$1({});return new g$1(n)}add(t,n={}){if(i$4(t))return t.forEach((e=>this.add(c$1(e),n))),this;t=c$1(t);let r=e$1({id:t,props:n});return this.json.children.push(r),new g$1(r)}remove(e){return e=c$1(e),this.json.children=this.json.children.filter((t=>t.id!==e)),this}nodes(){return r(this.json).map((e=>(delete(e=Object.assign({},e)).children,e)))}cache(){return (e=>{let t=r(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 r(this.json)}fillDown(){var e;return e=this.json,r(e,((e,t)=>{t.props=f$1(t.props,e.props);})),this}depth(){u(this.json);let e=r(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 u(this.json),d(this.json,e)}debug(){return u(this.json),d(this.json,"debug"),this}}const _=function(e){let t=s$1(e);return new g$1(t)};_.prototype.plugin=function(e){e(this);}; +const e$1=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},t=/^ *(#|\/\/)/,n$1=function(t){let n=t.trim().split(/->/),r=[];n.forEach((t=>{r=r.concat(function(t){if(!(t=t.trim()))return null;if(/^\[/.test(t)&&/\]$/.test(t)){let n=(t=(t=t.replace(/^\[/,"")).replace(/\]$/,"")).split(/,/);return n=n.map((e=>e.trim())).filter((e=>e)),n=n.map((t=>e$1({id:t}))),n}return [e$1({id:t})]}(t));})),r=r.filter((e=>e));let i=r[0];for(let e=1;e{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},i$4=e=>"[object Array]"===Object.prototype.toString.call(e),c$1=e=>(e=e||"").trim(),s$1=function(c=[]){return "string"==typeof c?function(r){let i=r.split(/\r?\n/),c=[];i.forEach((e=>{if(!e.trim()||t.test(e))return;let r=(e=>{const t=/^( {2}|\t)/;let n=0;for(;t.test(e);)e=e.replace(t,""),n+=1;return n})(e);c.push({indent:r,node:n$1(e)});}));let s=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[e.id]=e;}));let r=e$1({});return t.forEach((t=>{if((t=e$1(t)).parent)if(n.hasOwnProperty(t.parent)){let e=n[t.parent];delete t.parent,e.children.push(t);}else console.warn(`[Grad] - missing node '${t.parent}'`);else r.children.push(t);})),r}(c):(r(s=c).forEach(e$1),s);var s;},h=e=>""+e+"",o=e=>""+e+"",l=function(e,t){let n="-> ";t&&(n=o("→ "));let i="";return r(e).forEach(((e,r)=>{let c=e.id||"";if(t&&(c=h(c)),0===r&&!e.id)return;let s=e._cache.parents.length;i+=" ".repeat(s)+n+c+"\n";})),i},a$1=function(e){let t=r(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},p$4={text:l,txt:l,array:a$1,flat:a$1},d=function(e,t){return "nested"===t||"json"===t?e:"debug"===t?(console.log(l(e,!0)),null):p$4.hasOwnProperty(t)?p$4[t](e):e},u=e=>{r(e,((e,t)=>{e.id&&(e._cache.parents=e._cache.parents||[],t._cache.parents=e._cache.parents.concat([e.id]));}));},f$1=(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 i$4(t[n])?e[n]=t[n].concat(e[n]||[]):void 0===e[n]&&(e[n]=t[n]);}})),e),j=/\//;class g$2{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(t){if(t=c$1(t),!j.test(t)){let e=this.json.children.find((e=>e.id===t));return new g$2(e)}let n=((e,t)=>{let n=(e=>"string"!=typeof e?e:(e=e.replace(/^\//,"")).split(/\//))(t=t||"");for(let t=0;te.id===n[t]));if(!r)return null;e=r;}return e})(this.json,t)||e$1({});return new g$2(n)}add(t,n={}){if(i$4(t))return t.forEach((e=>this.add(c$1(e),n))),this;t=c$1(t);let r=e$1({id:t,props:n});return this.json.children.push(r),new g$2(r)}remove(e){return e=c$1(e),this.json.children=this.json.children.filter((t=>t.id!==e)),this}nodes(){return r(this.json).map((e=>(delete(e=Object.assign({},e)).children,e)))}cache(){return (e=>{let t=r(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 r(this.json)}fillDown(){var e;return e=this.json,r(e,((e,t)=>{t.props=f$1(t.props,e.props);})),this}depth(){u(this.json);let e=r(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 u(this.json),d(this.json,e)}debug(){return u(this.json),d(this.json,"debug"),this}}const _=function(e){let t=s$1(e);return new g$2(t)};_.prototype.plugin=function(e){e(this);}; // i just made these up const colors = { @@ -150820,7 +150876,7 @@ var methods$4 = { }; /* eslint no-console: 0 */ -const isArray$4 = function (arr) { +const isArray$5 = function (arr) { return Object.prototype.toString.call(arr) === '[object Array]' }; const fns$1 = { @@ -150838,7 +150894,7 @@ const fns$1 = { if (verbose === true) { console.log(' + ', input, reason || ''); } - if (isArray$4(input)) { + if (isArray$5(input)) { input.forEach(tag => methods.one.setTag(terms, tag, world, isSafe, reason)); } else { methods.one.setTag(terms, input, world, isSafe, reason); @@ -150868,7 +150924,7 @@ const fns$1 = { console.log(' - ', input, reason || ''); } let tagSet = model.one.tagSet; - if (isArray$4(input)) { + if (isArray$5(input)) { input.forEach(tag => methods.one.unTag(terms, tag, tagSet)); } else { methods.one.unTag(terms, input, tagSet); @@ -151215,7 +151271,7 @@ const hasHyphen = function (str, model) { return true } //number-letter '20-aug' - let reg2 = /^([0-9]{1,4})[-–—]([a-z\u00C0-\u00FF`"'/-]+$)/i; + let reg2 = /^[('"]?([0-9]{1,4})[-–—]([a-z\u00C0-\u00FF`"'/-]+[)'"]?$)/i; if (reg2.test(str) === true) { return true } @@ -151303,7 +151359,7 @@ notWord = notWord.reduce((h, c) => { return h }, {}); -const isArray$3 = function (arr) { +const isArray$4 = function (arr) { return Object.prototype.toString.call(arr) === '[object Array]' }; @@ -151316,7 +151372,7 @@ const splitWords = function (str, model) { if (typeof str === 'number') { str = String(str); } - if (isArray$3(str)) { + if (isArray$4(str)) { return str } const words = str.split(naiiveSplit); @@ -152496,7 +152552,7 @@ var lexData = { "PresentTense": "true¦bests,sounds", "Condition": "true¦lest,unless", "PastTense": "true¦began,came,d4had,kneel3l2m0sa4we1;ea0sg2;nt;eap0i0;ed;id", - "Participle": "true¦0:0A;a07b02c00dXeat0fSgQhPoJprov0rHs7t6u4w1;ak0ithdra03o2r1;i03uZ;k0v0;nd1pr05;ergoJoJ;ak0hHo3;e9h7lain,o6p5t4un3w1;o1um;rn;g,k;ol0reT;iRok0;ught,wn;ak0o1ruL;ne,wn;en,wn;ewriOi1uK;dd0s0;ut3ver1;do4se0t1;ak0h2;do2g1;roH;ne;ast0i7;iv0o1;ne,tt0;all0loCor1;bi3g2s1;ak0e0;iv0oA;dd0;ove,r1;a6eamt,iv0u1;nk;hos0lu1;ng;e4i3lo2ui1;lt;wn;tt0;at0en,gun;r2w1;ak0ok0;is0;en", + "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", @@ -152508,27 +152564,27 @@ var lexData = { "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:4R;a3Ub3Cc2Pd2He2Df27g1Zh1Ti1Pj1Nk1Ll1Gm12n0Po0Mp0Cqu0Br02sTtHuCv9w3xiaomi,y1;amaha,m1Bou1w1B;gov,tu3D;a4e2iki1orld trade organizati34;leaRped0O;lls fargo,st1;fie2Iinghou2S;l1rner br3V;gree3Kl street journ2Jm1E;an halOeriz2Yisa,o1;dafo2Zl1;kswagMvo;b4kip,n2ps,s1;a tod3Bps;es3Ni1;lev3Gted natio3D;er,s; mobi33aco beRd bOe9gi frida3Mh3im horto3Bmz,o1witt3E;shi4Ay1;ota,s r 05;e 1in lizzy;b3carpen3Kdaily ma3Eguess w2holli0rolling st21s1w2;mashing pumpki36uprem0;ho;ea1lack eyed pe3Yyr0Q;ch bo3Etl0;l2n3Rs1xas instrumen1U;co,la m1F;efoni0Kus;a8cientology,e5ieme2Zmirnoff,np,o3pice gir6quare0Ata1ubaru;rbuc1to35;ks;ny,undgard1;en;a2x pisto1;ls;g1Xrs;few2Ninsbur32lesfor03msu2F;adiohead,b8e4o1yana3D;man empi1Yyal 1;b1dutch she4;ank;a3d 1max,vl21;bu1c2Bhot chili peppe2Zlobst2O;ll;ders dige1Ml madrid;c,s;ant3Bizn2R;a8bs,e5fiz2Jhilip4i3r1;emier 1udenti1E;leagTo2L;nk floyd,zza hut; morrBs;psi2tro1uge0E;br34chi0Tn34;!co;lant2Vn1yp17; 2ason28da2Q;ld navy,pec,range juli2xf1;am;us;aAb9e6fl,h5i4o1sa,vid3wa;k2tre dame,vart1;is;ia;ke,ntendo,ss0QvZ;l,s;c,st1Ptflix,w1; 1sweek;kids on the block,york0D;a,c;nd23s2t1;ional aca2Qo,we0V;a,c02d0T;aDcdonalCe9i6lb,o3tv,y1;spa1;ce;b1Unsanto,ody blu0t1;ley cr1or0U;ue;c2t1;as,subisO;helin,rosoft;dica2rcedes benz,talli1;ca;id,re;ds;cs milk,tt1Az25;a3e1g,ittle caesa1Q; ore0Anovo,x1;is,mark,us; 1bour party;pres0Ez boy;atv,fc,kk,lm,m1od1P;art;iffy lu0Soy divisi0Kpmorgan1sa;! cha0A;bm,hop,k3n1tv;g,te1;l,rpol;ea;a5ewlett pack1Wi3o1sbc,yundai;me dep1n1Q;ot;tac1zbollah;hi;lliburt09sbro;eneral 6hq,ithub,l5mb,o2reen d0Pu1;cci,ns n ros0;ldman sachs,o1;dye1g0I;ar;axo smith kli05encoX;electr0Om1;oto10;a5bi,c barcelo4da,edex,i2leetwood m04o1rito l0H;rd,xcZ;at,fa,nancial1resto00; tim0;na;cebook,nnie mae;b0Bsa,u3xxon1; m1m1;ob0K;!rosceptics;aiml0Ee6isney,o4u1;nkin donu2po10ran dur1;an;ts;j,w j1;on0;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", + "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:9T;1:A7;2:93;3:A0;4:9O;5:9Z;6:9H;7:8K;8:7I;9:A5;A:90;B:8U;C:8A;a9Lb8Nc7Fd6Oe6Df5Pg5Fh53i4Vj4Sk4Pl4Dm3Zn3Uo3Rp2Rqu2Qr20s0Jt02u00vVwGyFzD;ip,oD;ne,om;awn,e6Cie65;aOeMhJiHoErD;ap,e9Link2;nd0rDuB;kDry,sh5Eth;!shop;ck,nDpe,re,sh;!d,g;e83iD;p,sD;k,p0t2;aDed,lco8T;r,th0;it,lk,rEsDt4ve,x;h,te;!ehou1ra9;aGen5CiFoD;iDmAte,w;ce,d;be,ew,sA;cuum,l49;pDr7;da5gra6Blo67;aReQhrPiOoMrGuEwiDy5W;n,st;nDrn;e,n7L;aGeFiEoDu6y;t,ub2;bu5ck4Hgg0m,p;at,k,nd;ck,de,in,nsDp,v7G;f0i8O;ll,ne,p,r4Vss,t91uD;ch,r;ck,de,e,le,me,p,re;e5Tow,u6;ar,e,ll,mp0st,xt;g,lDng2rg7Ms5x;k,ly;a0Rc0Me0Jh0Ei0Ck0Bl09m08n06o05pXquaCtKuFwD;ea85iD;ng,pe,t4;bGit,m,ppErD;fa3ge,pri1v2T;lDo6P;e6My;!je8;aMeLiKoHrEuDy2;dy,ff,mb2;a82eEiDo5Mugg2;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,e53inDu3;g,k2;ns88t;a5Nit;ll,n,r84te;ed,ll;m,n,rk;b,uB;aDee1Sow;ke,p;a5Ge4Ci2o50;eep,iDou4;ce,p,t;ateboa7Gi;de,gnDl2Unk,p,ze;!al;aGeFiEoDuff2;ck,p,re,w;ft,p,v0;d,i3Wlt0;ck,de,pe,re,ve;aEed,nDrv1It;se,t2M;l,r4t;aGhedu2oCrD;aEeDibb2o3X;en,w;pe,t4;le,n,r2L;cDfegua70il,mp2;k,rifi3;aZeHhy6JiGoEuD;b,in,le,n,s5V;a6ck,ll,oDpe,u5;f,t;de,ng,ot,p,s1V;aTcSdo,el,fQgPje8lOmMnLo17pJque6sFturn,vDwa6T;eDi26;al,r1;er72oFpe8tEuD;lt,me;!a53;l6Zrt;air,eaDly,o51;l,t;dezvo2Xt;aDedy;ke,rk;ea1i4E;a6Gist0r5L;act6Wer1Uo6ZuD;nd,se;a36o6D;ch,s6E;c1Cge,iEke,lly,nDp1Vt1V;ge,k,t;n,se;es69iv0;a04e00hYiXlToNrEsy4uD;mp,n4rcha1sh;aKeIiHoDu4M;be,ceFdu3fi2grDje8mi1p,te6;amDe6U;!me;ed,ss;ce,de,nt;sDy;er6As;cti3i1;iHlFoEp,re,sDuBw0;e,i5Wt;l,p;iDl;ce,sh;nt,s5T;aEce,e30uD;g,mp,n7;ce,nDy;!t;ck,le,n16pe,tNvot;a1oD;ne,tograph;ak,eFnErDt;fu53mA;!c30;!l,r;ckJiInHrFsEtDu1y;ch,e9;s,te;k,tD;!y;!ic;nt,r,se;!a7;bje8ff0il,oErDutli3Over49;bAd0ie9;ze;a4PeFoDur1;d,tD;e,i3;ed,gle8tD;!work;aMeKiIoEuD;rd0;ck,d3Pld,nEp,uDve;nt,th;it5CkD;ey;lk,n49rr5AsDx;s,ta29;asuCn4SrDss;ge,it;il,nFp,rk3UsEtD;ch,t0;h,k,t0;da5n0oeuvC;aLeJiHoEuD;mp,st;aEbby,ck,g,oDve;k,t;d,n;cDft,mAnHst;en1k;aDc0Ne4vJ;ch,d,k,p,se;bEcDnd,p,t4un4;e,k;el,o2T;eEiDno4D;ck,d,ll,ss;el,y;aEo1NuD;i3mp;m,zz;mpJnEr45ssD;ue;c1Qdex,fluGha2k,se2GteDvoi3;nt,rD;e6fa3viD;ew;en3;a8le29;aJeHiGoEuD;g,nt;l39no2Cok,pDr1u1;!e;ghli1Eke,nt,re,t;aDd7lp;d,t;ck,mGndFrEsh,tDu9;ch,e;bo3Wm,ne4Dve6;!le;!m0;aLear,ift,lJossIrFuD;arDe49lp,n;antee,d;aEiDouBumb2;ll,nd,p;de,sp;ip;oDue;ss,w;g,in,me,ng,s,te,ze;aZeWiRlNoJrFuD;ck,el,nDss,zz;c38d;aEoDy;st,wn;cDgme,me,nchi1;tuC;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,uC;ld;aEeDn3;d,l;r,tuC;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,bKcJfeIlGmaBposAsEtaD;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;leDouBromi1;me9;aBe9it,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;!tuC;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;aFeBiDoYur;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", + "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:1F;1:1M;a1Db17c0Vd0Se0Nf0Eg0Bh09i07ju06l03mXnVoTpOrJsCt8u5v2watershed;a2ision10;gabo5nilla,ria2;b0Wnt;ndergr2pstairs;adua14ou2;nd;a4e2oken,ri0;en,r2;min0rori13;boo,n;age,e6ilv0Glack,o4quat,ta3u2well;bordina0Xper6;b0Mndard;ciali0Yl2vereign;e,ve1;cret,n2ri0;ior;a5e3ou2ubbiM;nd,tiZ;ar,bCl0Ynt0p2side1;resent0Xublican;ci0Qsh;a5eriodic0last11otenti0r2;emi3incip0o2;!fession0;er,um;rall5st,tie1;ff2pposi0Hv0;ens0Qi0D;agg02ov2;el;a6e4iniatKo2;bi02der08r2;al,t0;di2tr0P;an,um;le,riH;attPi3u2;sh;ber0ght,qD;stice,veniU;de0mpressioZn2;cumbe1dividu0no0Fsta1terim;alf,o2umdrum;bby,melG;en3old,ra2;ph0Dve;er0ious;a8e6i5l4u2;git05t2;ure;uid;ne;llow,m2;aGiM;ir,t,vo2;riOuriO;l4p02x2;c2ecutWpeX;ess;d2iK;er;ar3e2;mographWrivQ;k,l3;hiGlassUo3rude,unn2;ing;m6n2operM;creCstitue1te3vertab2;le;mpor2nt;ary;ic,m3p2;anion,lex;er3u2;ni8;ci0;e6lank,o5r2;i3u2;te;ef;ttom,urgeois;st;cademCd9l5n3r2;ab,ctB;im0tarctA;al;e4tern2;at2;ive;rt;oles2ult;ce1;nt;ic", - "Adj|Past": "true¦0:4C;1:40;2:45;3:42;4:3B;a3Tb3Ic2Vd2Ae22f1Wg1Th1Qi1Hj1Ekno1Dl18m13n10o0Vp0Lqu0Jr07sKtEuBvAw5yellow0;a8ea7o5rinkl0;r5u3N;n,ri0;k2Qth3;rp0sh0tY;ari0e1M;n5pd1s0;cov3derstood,i5;fi0t0;a8hreat2Ki7ouTr5urn0wi42;a5imm0ou28;ck0in0pp0;ed,r0;m0nn0r5;get0ni2K;aPcLeJhHimGm0Hoak0pEt8u5;bsid3Fgge3Vs5;pe5ta2P;ct0nd0;a9e8i26ok0r6u5;ff0nn0;ength28ip5;ed,p0;am0reotyp0;in0t0;eci5ik0oI;al35fi0;pSul1;a5ock0ut;d0r0;a5c1Dle2t2S;l0s3Jt0;a7or6r5;at5e1W;ch0;r0tt3;t5ut0;is4ur1;aFe6o5;tt0;cBdJf22gAje2l9m0Knew0p8qu7s5;eTpe2t5;or0ri2;e34ir0;e1lac0;at0e2H;ist3ul1;eiv0o5ycl0;mme2Crd0v3;in0lli0ti4;a5ot0;li4;aCer2RiBlAo9r5ump0;e7i2Go5;ce27d5lo14nou2Spos0te2v0;uc0;fe15ocDp0Fss0;i2Cli1D;ann0e24uT;ck0erc0ss0;ck0i29r5st0;allMk0;bse8c7rgan25ver5;lo5whelm0;ok0;cupi0;rv0;e6o5;t0uri12;ed0gle2;a7e6ix0o5ut0;di4t0Xu1Y;as07lt0;n5rk0;ag0ufact05;e7i6o5;ad0ck0st;cens0mit0st0;ft,v5;el0;tt0wn;a6o0Xu5;dg0s13;gg0;llumin1mpBn5sol1;br0cre1Ddebt0f9jUt6v5;it0olv0;e5ox0Q;gr1n5re1V;d0si4;e2l1o1O;li0oVr5;ov0;amm3e1o5;ok0r5;ri4;ift0r6u5;a14id0;i0Kown;a9e8i7lavo0Goc0Cr5;a5i0oz0S;ctEg13m0;ni04tt0x0;ar0;d0il0;duc1l1mBn9quipp0s8x5;agger1p5te0Q;a0Pe5os0;ct0rie1A;cap0tabliX;gFha18s5;ur0;a0Xbarra0L;aMeEi6r5;a00i0;gni4miniRre2s5;aAc7grun0Et5;o5re0Gurb0;rt0;iplVou5;nt0r5;ag0;bl0;cBdQf9l8pre0Ara7t6v5;elop0ot0;ail0ermP;ng0;ay0ight0;e5in0o0M;rr0;ay0enTor1;m5t0z0;ag0p5;en0;aQeMhJlIoAr7u5;lt5r0stom04;iv1;a6owd0u5;sh0;ck0mp0;d0loBm8n5ok0v3;centr1f6s5troD;id3olid1;us0;b6pl5;ic1;in0;r0ur0;assi4os0utt3;ar6i5;ll0;g0m0;lebr1n7r5;ti4;fi0;tralK;g0lcul1;aEiDlAo8r6urn5;ed,t;ok5uis0;en;il0r0t5und;tl0;e6i5;nd0;ss0;as0;k0laNs0tt3;bandQcOdLfJg0lGmaz0nEppCrm0ssAu6wa5;rd0;g6thor5;iz0;me5;nt0;o7u5;m0r0;li0re5;ci1;im1ticip1;at0;a6leg0t3;er0;rm0;fe2;ct0;ju6o8va5;nc0;st0;ce5knowledg0;pt0;on0;ed", - "Singular": "true¦0:5H;1:5F;2:4U;3:4Q;4:50;5:55;6:5J;a4Yb4Hc3Kd32e2Uf2Lg2Gh25in21j20k1Zl1Sm1Jn1Fo19p0Pqu0Or0DsXtKuFvAw7x r54yo yo;a7ha3Mo3N;f3i4Nt0Ey7;! arou36;arAe8ideo ga2No7;cabu4Fl58;gMr7t;di4Vt1V;iety,ni4L;n9p2Xr8s 7;do40s5A;bani1in0;coordinat37der7;estima1to21we3Y; rex,aIeHhFiDoCr9u8v7;! show;m2Ln2rntJto1B;agedy,ib7o4A;e,u7;n0ta42;ni1p2rq3I;c,er,m7;etD;ing7ree23;!y;am,mp3C;ct2le6x return;aLcKeIhor4MiHkFoEpin off,tBu9y7;ll7ner4Ist4P;ab2U;b7i1n25per bowl,rro1U;st3Itot0;at8ipe2Do1Irate4Eudent7;! lo0G;i36u1;ft ser4Hmeo1F;elet5i7;ll,r3R;b35gn2Qte;ab2Gc7min38;t,urity gua2K;e6ho2V;bbatic0la3Fndwi0Opi5;av5eBhetor2i8o7;de6om,w;t8v7;erb29;e,u0;bBc9f7publ2r0Xspi1;er7orm3;e6r0;i7ord label;p2Et0;a1u42;estion mark,ot2C;aNeKhoJiGlEoCr8u7yram1C;ddi3DpCrpo1Gs3F;e9o7;bl3Vs7;pe3Fta1;dic1Omi1Cp1Nroga3Rss relea1C;p7rt0;py;a7ebisci1;q2Ate;cn2e8g7;!gy;!r;ne call,tocoI;anut,d8r7t0yo1;cen3Fsp3G;al,est0;nop4r8t7;e,hog5;adi0Yi2R;atme0bj3Bc9pia1rde0thers,utspok5ve7wn3;n,r7;ti0Mview;cu8e7;an;pi3;ar9it8ot7umb3;a2Bhi2N;e,ra1;cot2ra33;aDeAi8o7ur0;nopo4p15rni2Jsq1Oti32uld;c,li0Yn07s7tt5;chief,si30;d8nu,t7;al,i3;al,ic;gna1mm0nd12rsupi0te7yf4;ri0;aBegAi9u7;ddi1n7;ch;ght bulb,me,p06ving room; 8e0J;bor11y 7;up;eyno1itt5;el4ourn0;c9dices,itia2Kni22s8tel0Jvert7;eb1H;e25titu1;en2Hi2Q;aGeCighBo8u7;man right,s1Z;me7rmoDsp1Dtb0I;! r7;un; scho0WriW;a7i1K;d7v5; start,pho7;ne;ndful,sh brown,v5ze;a9elat0Glaci3r7ul4yp1P;an7enadi3id;a19d slam,ny;df4r7;l2ni1F;aEeti1EiDlu1oAr8un7;er0;ee market,i7onti3;ga1;l4ur7;so7;me;eNref4;br2mi4;conoDffi1Mgg,lecto0Pmbas1BnApidem2s1Wth2ven9x8yel7;id;ampXempl0Lte6;i16t;er1Iterp7;ri7;se;my;eJiCo9r7ump tru0R;agonf4i7;er,ve thru;c8g1Bi4or,ssi3wn7;side;to0CumenC;aCgniBnn3s8vide7;nd;conte6incen1Bp7tri0Y;osi7;tion;ta0E;le0U;ath9c8f7ni0terre6;ault 03err0;al,im0;!b7;ed;aUeRhKiJlHoBr7;edit ca9uc7;ib7;le;rd;efficBke,lAmmuniqJns8pi3rr0t0Uus7yo1;in;erv7uG;atoZ;ic,lO;ie6;er0Li7oth;e6n2;ty,vil wK;aBeqAick5oco9r7;istmas car7ysanthemum;ol;la1;ue;ndeli3racteri7;st2;i8llCr7;e0tifica1;liW;hi3nDpCrAt7ucus;erpi7hedr0;ll7;ar;!bohyd7ri3;ra1;it0;a7e,nib0;l,ry;aKeJiop2leHoFrBu7;nny,r7tterf4;g7i0;la7;ry;eak8i7;ck;fa7thro9;st;dy,ro7wl;ugh;mi7;sh;an,l4;nki8rri3;er;ng;cQdKlGnDppeti1rBs9tt2utop7;sy;ic;ce6pe7;ct;r7sen0;ay;ec8oma4ti8;ly;do1;i5l7;er7y;gy;en; hominBj8van7;tage;ec7;ti7;ve;em;cAe8qui7;tt0;ta1;te;i8ru0;al;de6;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:5I;1:5G;2:4V;3:4R;4:51;5:56;6:5K;a4Zb4Ic3Ld33e2Vf2Mg2Hh26in22j21k20l1Sm1Jn1Fo19p0Pqu0Or0DsXtKuFvAw7x r55yo yo;a7ha3No3O;f3i4Ot0Ey7;! arou37;arAe8ideo ga2Oo7;cabu4Gl59;gMr7t;di4Wt1W;iety,ni4M;n9p2Yr8s 7;do41s5B;bani1in0;coordinat38der7;estima1to22we3Z; rex,aIeHhFiDoCr9u8v7;! show;m2Mn2rntJto1B;agedy,ib7o4B;e,u7;n0ta43;ni1p2rq3J;c,er,m7;etD;ing7ree24;!y;am,mp3D;ct2le6x return;aLcKeIhor4NiHkFoEpin off,tBu9y7;ll7ner4Jst4Q;ab2V;b7i1n26per bowl,rro1V;st3Jtot0;at8ipe2Eo1Jrate4Fudent7;! lo0G;i37u1;ft ser4Imeo1G;elet5i7;ll,r3S;b36gn2Rte;ab2Hc7min39;t,urity gua2L;e6ho2W;bbatic0la3Gndwi0Opi5;av5eBhetor2i8o7;de6om,w;t8v7;erb2A;e,u0;bBc9f7publ2r0Yspi1;er7orm3;e6r0;i7ord label;p2Ft0;a1u43;estion mark,ot2D;aNeKhoJiGlEoCr8u7yram1D;ddi3EpCrpo1Hs3G;e9o7;bl3Ws7;pe3Gta1;dic1Pmi1Dp1Oroga3Sss relea1D;p7rt0;py;a7ebisci1;q2Bte;cn2e8g7;!gy;!r;ne call,tocoI;anut,d8r7t0yo1;cen3Gsp3H;al,est0;nop4r8t7;e,hog5;adi0Zi2S;atme0bj3Cc9pia1rde0thers,utspok5ve7wn3;n,r7;ti0Nview;cu8e7;an;pi3;ar9it8ot7umb3;a2Chi2O;e,ra1;cot2ra34;aDeAi8o7ur0;nopo4p16rni2Ksq1Pti33uld;c,li0Zn08s7tt5;chief,si31;d8nu,t7;al,i3;al,ic;gna1mm0nd13rsupi0te7yf4;ri0;aBegAi9u7;ddi1n7;ch;me,p07; 9e0K;bor12y7; 7er;up;eyno1itt5;el4ourn0;c9dices,itia2Kni22s8tel0Jvert7;eb1H;e25titu1;en2Hi2Q;aGeCighBo8u7;man right,s1Z;me7rmoDsp1Dtb0I;! r7;un; scho0WriW;a7i1K;d7v5; start,pho7;ne;ndful,sh brown,v5ze;a9elat0Glaci3r7ul4yp1P;an7enadi3id;a19d slam,ny;df4r7;l2ni1F;aEeti1EiDlu1oAr8un7;er0;ee market,i7onti3;ga1;l4ur7;so7;me;eNref4;br2mi4;conoDffi1Mgg,lecto0Pmbas1BnApidem2s1Wth2ven9x8yel7;id;ampXempl0Lte6;i16t;er1Iterp7;ri7;se;my;eJiCo9r7ump tru0R;agonf4i7;er,ve thru;c8g1Bi4or,ssi3wn7;side;to0CumenC;aCgniBnn3s8vide7;nd;conte6incen1Bp7tri0Y;osi7;tion;ta0E;le0U;ath9c8f7ni0terre6;ault 03err0;al,im0;!b7;ed;aUeRhKiJlHoBr7;edit ca9uc7;ib7;le;rd;efficBke,lAmmuniqJns8pi3rr0t0Uus7yo1;in;erv7uG;atoZ;ic,lO;ie6;er0Li7oth;e6n2;ty,vil wK;aBeqAick5oco9r7;istmas car7ysanthemum;ol;la1;ue;ndeli3racteri7;st2;i8llCr7;e0tifica1;liW;hi3nDpCrAt7ucus;erpi7hedr0;ll7;ar;!bohyd7ri3;ra1;it0;a7e,nib0;l,ry;aKeJiop2leHoFrBu7;nny,r7tterf4;g7i0;la7;ry;eak8i7;ck;fa7thro9;st;dy,ro7wl;ugh;mi7;sh;an,l4;nki8rri3;er;ng;cQdKlGnDppeti1rBs9tt2utop7;sy;ic;ce6pe7;ct;r7sen0;ay;ec8oma4ti8;ly;do1;i5l7;er7y;gy;en; hominBj8van7;tage;ec7;ti7;ve;em;cAe8qui7;tt0;ta1;te;i8ru0;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;aDha4HrC;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:2Z;1:2F;2:2M;3:34;4:3D;a2Xb2Oc2Cd25e1Uf1Qg1Hh19i14j11k0Zl0Um0Kn0Go0Fp06r02sNtBuran2Mv9w5you gu0H;a7his1Ai6oo5;d,l;ldlife,ne;rmAt2;apor,ernacul2Ci5;neg2Bol1Rtae;eFhDiCoAr6un5yranny;a,gst1E;aff2Rea1No6ue nor5;th;o0Bu5;bleshoot0se1Wt;night,othpas1Ywn5;foGsfoG;me off,n;er5und2;e,mod2V;a,nnis;aGcFeEhCiBkiAo9p8t6u5weepstak1;g1Xnshi2Kshi;ati0Be5;am,el;ace2Neci1;ap,cc2meth0;n,ttl1;lk;eep,ingl1o5;pp0r1E;lf,na1Iri1;ene1Misso1E;d0Yfe3l6nd,t5;i0Kurn;m1Wt;abi1e6ic5;e,ke17;c5i03laxa13search;ogni12rea12;aBeAhys9luto,o7re5ut3;amble,mis1s5ten22;en21s0N;l5rk;i2Al0GyJ; 18i4;a26tr0H;nt5rk0ti0O;i1s;bstetri4vercrowd0xyg0B;a7e6owada5utella;ys;ptu1Qws;il poli01tional securi3;aCeAo7u5;m5s1J;ps;n5o1M;ey,o5;gamy;a5cha0Glancholy,rchandi1Jtallurgy;sl1t;chine5g1Cj1Jrs,thema1S; learn0ry;aught2e8i7ogi6u5;ck,g14;c,s1O;ce,ghtn0nguis1NteratYv2;ath2isXss;ara0GindergartRn5;icke0Cowled10;e5upit2;a5llyfiIwel0I;ns;ce,gnor8mp7n5;forma02ter5;net,sta09;atiUort5rov;an1A;a9e8isto0Bo5ung2;ckey,mework,ne6o5rseradiAspitali3use arrest;ky;s3y;adquarteZre;ir,libut,ppiJs5;hi5te;sh;eneAl8o7r5um,ymnas13;a5e01;niWss;lf,re;ut5yce0H;en; 5ti4;edit0po5;ol;aPeel0icHlour,o6urnit5;ure;od,rgive5uri2wl;ness;arEcono0NducaDlectrBn9quipAthi4very8x5;ist6per5;ti0D;en0L;body,o0Ath0;joy5tertain5;ment;ici3o5;ni4;tiU;nings,th;emi04i8o6raugh5ynas3;ts;pe,wnstai5;rs;abet1ce,s5;hon01repu5;te;aFelciEhCivi4lAo5urrency;al,ld w8mmenta7n5ral,ttKuscoD;fusiJt 5;ed;ry;ar;assi4oth1;es;aos,e5;eOw0;us;d,rQ;aAi8lood,owl0read7u5;nt0tt2;er;!th;lliarLs5;on;g5ss;ga5;ge;cMdviLeroIirHmDn8ppeal court,r6spi5thleN;rin;ithmet5sen5;ic;i8y5;o6th0;ing;ne;se;en7n5;es3;ty;ds;craft;bi4d5nau9;yna5;mi4;ce;id,ous5;ti4;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;e,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", + "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;aA2b9Ec8Fd7We79f6Ng6Dh60i4Wj4Vk4Sl4Hm40n3Oo35p2Nquart7Pr2Cs1Dt14uSvOwFye28;aMeKhIiHoF;man5oFrth7G;dADzy;despreB1n w97s86;acked1HoleF;!sa6;ather1QeFll o70ste1D;!k5;nt1Jst6Ate4;aHeGiFola5S;bBUce versa,gi3Kle;ng67rsa5Q;ca1gBSluAV;lt0PnLpHrGsFttermoBL;ef9Ku3;b96ge1; Hb31pGsFtiAH;ca6et,ide d4Q;er,i85;f51to da2;a0Fbeco0Hc0Bd04e02f01gu1WheaBGiXkn4NmUnTopp06pRrNsJtHus0wF;aFiel3J;nt0rra0P;app0eXoF;ld,uS;eHi36o59pGuF;perv06spec38;e1ok9O;en,ttl0;eFu5;cogn06gul2QlGqu84sF;erv0olv0;at0en32;aFrecede0E;id,rallel0;am0otic0;aFet;rri0tF;ch0;nFq25vers3;sur0terFv7U;eFrupt0;st0;air,inish0orese98;mploy0n7Ov97xpF;ect0lain0;eHisFocume01ue;clFput0;os0;cid0rF;!a8Scov9ha8Jlyi8nea8Gprivileg0sMwF;aFei9I;t9y;hGircumcFonvin2T;is0;aFeck0;lleng0rt0;b1Zppea85ssuGttend0uthorF;iz0;mi8;i49ra;aLeIhoHip 24oGrF;anspare1encha1i2;geth9leADp notch,rpB;rny,ugh6H;ena8DmpGrFs6U;r48tia4;eCo8P;leFst4M;nt0;a0Cc08e06h05i03ki02l00mug,nobbi4XoWpSqueami4XtKuFymb94;bHccinAi generis,pFr5;erFre7N;! dup9b,vi70;du0li7Lp6IsFurb7J;eq9Atanda9X;aLeKi15o2PrGubboFy4Q;rn;aightGin5GungF; o2M; fFfF;or7U;adfa9Ori6;lwa6Etu81;arHeGir6MlendBot Fry;on;c3Oe1Q;k5se; call0lub6mb9phistic14rHuFviT;ndFth19;proof;dBry;e61ipF;pe4shod;ll0n d7S;g2HnF;ceEg6ist9;am3Te9;co1Zem5lfFn6Bre7; suf4Yi44;aGholFient3A;ar5;rlFt4B;et;cr0me,tisfac7G;aOeIheumatoBiGoF;bu90tt7Hy3;ghtFv3; 1Sf6Y;cJdu8QlInown0pro6AsGtF;ard0;is48oF;lu2na1;e1Suc46;alcit8Ye1ondi2;bBci3mpa1;aSePicayu7laOoNrGuF;bl7Unjabi,z36;eKiIoF;b7WfGmi4ApFxi2M;er,ort82;a7uD;maFor,sti7va2;!ry;ciDexis0Ima2CpaB;in56puli8H;cBid;ac2Znt 3JrFti2;ma41tFv7X;!i40;i2ZrFss7S;anoBtF; 5YiF;al,s5W;bSffQkPld OnMrLth9utKverF;!aIbMdHhGni76seas,t,wF;ei75rou75;a64e7B;ue;ll;do1Ger,si6B;d3Rg2Aotu60; bFbFe on o7g3Vli7;oa81;fashion0school;!ay; gua7YbFha5Vli7;eat;eHligGsF;ce7er0So1C;at0;diFse;a1e1;aOeNiMoGuF;anc0de; moEnHrthFt6W;!eFwe7M;a7Lrn;chaGdescri7Jprof31sF;top;la1;ght5;arby,cessa4ighbor5wlyw0xt;k0usiaFv3;ti8;aQeNiLoHuF;dIltiF;facet0p6;deHlGnFot,rbBst;ochro4Yth5;dy;rn,st;ddle ag0nF;dbloZi,or;ag9diocEga,naGrFtropolit4R;e,ry;ci8;cIgenta,inHj0Fkeshift,mmGnFri4Pscu62ver18;da5Ey;ali4Mo4V;!stream;abEho;aOeLiIoFumberi8;ngFuti1S;stan3StF;erm,i4I;ghtGteraF;l,ry,te;heart0wei5P;ft JgFss9th3;al,eFi0M;nda4;nguBps0te5;apGind5noF;wi8;ut;ad0itte4uniW;ce co0Hgno6Nll0Cm04nHpso 2VrF;a2releF;va1; ZaYcoWdReQfOgrNhibi4Si05nMoLsHtFvalu5N;aAeF;nDrdepe2L;a7iGolFuboI;ub6ve1;de,gF;nifica1;rdi5O;a2er;own;eriIiLluenVrF;ar0eq5I;pt,rt;eHiGoFul1P;or;e,reA;fiFpe27termi5F;ni2;mpFnsideCrreA;le2;ccuCdeq5Fne,ppr4K;fFsitu,vitro;ro1;mJpF;arHeGl16oFrop9;li2r12;n2MrfeA;ti3;aGeFi19;d4CnD;tuE;egGiF;c0ZteC;al,iF;tiF;ma2;ld;aOelNiLoFuma7;a4meInHrrGsFur5;ti6;if4F;e59o3V; ma3HsF;ick;ghfalut2IspF;an4A;li01pf34;i4llow0ndGrdFtN; 06coEworki8;sy,y;aMener45iga3Clob3oLrGuF;il1Ong ho;aGea1GizF;zl0;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", + "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¦a09b06cZdYexXfTgRhePin00joule0DkMlJmDnan0AoCp9quart0Dsq ft,t7volts,w6y2ze3°1µ0;g,s;c,f,n;dXear1o0;ttT; 0s 0;old;att,b;erPon0;!ne04;ascals,e1i0;cZnt02;rcent,tL;hms,uI;/s,e4i0m²,²,³;/h,cro2l0;e0liM;!²;grNsT;gEtL;it1u0;menSx;erRreR;b5elvins,ilo1m0notQ;/h,ph,²;!byIgrGmEs;ct0rtzN;aLogrE;allonLb0ig5rD;ps;a2emtGl0t6; oz,uid ou0;nceH;hrenheit,radG;aby9;eci3m1;aratDe1m0oulombD;²,³;lsius,nti0;gr2lit1m0;et0;er8;am7;b1y0;te5;l,ps;c2tt0;os0;econd1;re0;!s", + "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", - "Noun|Gerund": "true¦0:27;1:26;2:1X;3:1J;4:1Z;a25b1Oc1Cd16en14f0Yg0Wh0Ti0Rjog20k0Pl0Lm0In0Go0Cp05ques08rWsFtBu9volunt15w5y17zo2;a7ed1Si3or6r5;ap1Oest1Ci1;ki0r1O;i1r2s1Utc1U;nder5pri23;st1Mta4;al4e7hin4i6ra5y1J;c4di0i2v0Z;mi0p1H;a1Ys1;aKcHeGhEin1PkatClZmo4nowBpeAt8u6w5;ea3im1U;f02r5;fi0vi0J;a1Lretc1Ju5;d1BfJ;l0Xn1C;b6i0;eb5i0;oar19;ip15o5;rte2u1;a1r0At1;h6o3re5;a1He2;edu0Ooo0O;i0Nyi0;aCe8i11o6u5;li0n2;o5wi0;fi0;a7c6hear1Cnde3por1struct5;r1Au3;or0Vyc0G;di0so2;p0Qti0;aAeacek9la8o6r5ublis0X;a0Peten0Rin1oces16;iso2si5;tio2;n2yi0;ee0K;cka0Tin1rt0K;f7pe6rgani5vula1;si0zi0;ni0ra1;fe3;e5ur0W;gotia1twor4;a6e5i2onito3;e1ssa0L;nufactu3rke1;a7ea6i5od0Jyi0;cen0Qf1s1;r2si0;n09ug0E;i5n0J;c4lS;ci0magi2n5ro2;nova1terac1;andPea1i6o5un1;l03wO;ki0ri0;athe3rie5ui01;vi0;ar0CenHi7l6or5ros1unZ;ecas1mat1;ir1ooX;l6n5;anDdi0;i0li0;di0gin5;ee3;a8eba1irec1oub1r6umOw5;elB;awi0es04i5;n4vi0;n5ti0;ci0;aEelebra1hClAo7r5ur6;aw5osZ;li0;a6di0lo3mplai2n5o4pi0ve3;duc1sul1;cLti0;apCea3imHo5ubH;ni0tJ;a5ee3;n1t1;m8s1te3;ri0;aIeFitDlCoAr8u5;il8ll6r5;pi0;yi0;an5;di0;a1m5o4;bi0;esGoa1;c5i0;hi0;gin2lon5t1;gi0;ni0;bys6c4ki0;ki0;it1;c8dverti7gi0rg6ssu5;mi0;ui0;si0;coun1ti0;ti0;ng", - "ProperNoun": "true¦abid,barbie,c3e2f1iron maiden,kirby,m0nis,riel;ercedes,issy;lorence,ranco;lmo,uro;atalina,hristi", + "ProperNoun": "true¦abid,barbie,c3e2f1iron maiden,kirby,m0nis,riel;cgill,ercedes,issy;lorence,ranco;lmo,uro;atalina,hristi", "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", @@ -152545,13 +152601,13 @@ var lexData = { "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,lBV;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:3H;1:3J;2:33;3:2Z;4:37;5:35;6:3E;7:31;8:38;9:2J;a35b2Vc2Dd1Te1If17g11h0Yi0Rjud9l0Nm0Gnu0Fo0Ap04rYsKtEuBvAw18yiel3;ar6e08;nBpA;l1Rs0B;fol3n21sett2;aEeDhrBi4ouc7rAwis0;e0Bif2oub2us0yi1;ea1SiA;l2vi1;l2mp0rr1J;nt1Xxi1;aMcreec7enten2PhLkyrocke0lo1Tmi2oJpHtDuBweA;e1Sl2;pp2CrA;gi1pri5roun3;aBea8iAri2Jun25;mula0r4;gge4rA;t2vi1;ark2eAraw2;e3llb2H;aAot7;ki1ri1;i1Xoc2B;dYtisf6;aEeBive0oAus7;a4l2;assu4defi1Tfres7ig1Tjuve0QlaImai1Ts0vAwar3;ea2italiAol1I;si1zi1;gi1ll6mb2vi1;a6eDier25lun9rAun2E;eBoA;mi5vo21;ce3s5vai2;n3rpleA;xi1;ffCpWutBverAwi1;arc7lap12p0Pri3whel8;goi1l6st1L;en3sA;et0;m2Lrtu4;aEeDiCoBuAyst0L;mb2;t1Lvi1;s5tiga0;an1Tl0n3smeri28;dAtu4;de17;aCeaBiAo0W;fesa0Vmi0vi1;di1ni1;c1Hg9s0;llumiZmFnArri0T;cDfurGsCtBviA;go25ti1;e1Qimi23oxica0rig0X;pi4ul0;orpo22r0M;po5;arrowi1eaBorr03umilA;ia0;li1rtwar8;lErA;atiCip0BoBuelA;i1li1;undbrea13wi1;f6ng;a4ea8;aIetc7it0lEoCrBulfA;il2;ee1JighZust1P;rAun3;ebo3thco8;aCoA;a0wA;e4i1;mi1tte4;di1sciA;na0;lectrJmHnExA;aCci0hBis0pA;an3lo3;aOila1D;c0spe1C;ab2cBdu4ergi15ga9live06ric7s04tA;hral2i0L;han0oura9;barras5er9pA;owe4;if6;aSeIiBrA;if0;sAzz6;aEgDhearCsen0tA;rAur13;ac0es5;teU;us0;ppoin0r8;biliIcFfiRgra3ligh0mDpres5sCvA;asHeloA;pi1;erE;an3eaNorA;ali0L;a6eiBliLrA;ea5;vi1;ta0;ma9ri1s7un0zz2;aPhMlo5oAripp2ut0;mGnArrespon3;cerEfDspi4tAvinU;inBrA;as0ibu0ol2;ui1;lic0u5;ni1;fDmCpA;eAromi5;l2ti1;an3;or0;aAil2;llen9n9r8;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", + "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", - "Comparable": "true¦0:3B;1:3P;2:3E;3:2H;a3Tb3Cc33d2Ue2Nf2Bg1Xh1Mi1Gj1Fk1Cl14m0Yn0To0Sp0Jqu0Hr08sItDug0vBw5y4za0R;el11ouO;ary,e7hi6i4ry;ck0Dde,l4n1ry,se;d,y;ny,te;a4i3R;k,ry;a4erda2ulgar;gue,in,st;a7en2Xhi6i5ou00r4;anqu2Den1ue;dy,g36me0ny;ck,rs29;ll,me,rt,wd3I;aScaQePhNiMkin0ClJmHoFpEt7u5w4;eet,ift;b4dd0Xperfi22rre29;sta27t3;a9e8iff,r5u4;pVr1;a5ict,o4;ng;ig2Vn0O;a1ep,rn;le,rk,te0;e1Ti2Vright0;ci1Zft,l4on,re;emn,id;a4el0;ll,rt;e5i4y;g2Mm10;ek,nd2T;ck24l0mp3;a4iSrill,y;dy,l02rp;ve0Kxy;n1Kr4;ce,y;d,fe,int0l1Iv0W;a9e7i6o4ude;mantic,o1Asy,u4;gh;pe,t1P;a4d,mo0B;dy,l;gg5iGndom,p4re,w;id;ed;ai2i4;ck,et;hoBink,lAo9r6u4;ny,r4;e,p3;egna2ic5o4;fouTud;ey,k0;liYor;ain,easa2;ny;dd,i0ld,ranM;aive,e6i5o4u15;b3isy,rm0Zsy;bb0ce,mb3;a4r1w;r,t;ad,e6ild,o5u4;nda12te;ist,o1;a5ek,l4;low;s0ty;a9e8i7o4ucky;f0Kn5o15u4ve0w10y0O;d,sy;e0g;ke0l,mp,tt3ve0;e1Qwd;me,r4te;ge;e5i4;nd;en;ol0ui19;cy,ll,n4;secu7t4;e4ima5;llege2rmedia4;te;re;aBe8i7o6u4;ge,m4ng1C;b3id;me0t;gh,l0;a4fYsita2;dy,rXv4;en0y;nd13ppy,r4;d4sh;!y;aGenFhDiClBoofy,r4;a9e7i6o4ue0Z;o4ss;vy;m,s0;at,e4y;dy,n;nd,y;ad,ib,ooE;a2d1;a4o4;st0;t3uiS;u1y;aDeeb3iAl9o7r6u4;ll,n4r0N;!ny;aDesh,iend0;a4nd,rmE;my;at,ir8;erce,nan4;ciA;le;r,ul4;ty;a7erie,sse5v4xtre0B;il;nti4;al;r5s4;tern,y;ly,th0;appZe9i5u4;mb;r6vi5z4;zy;ne;e,ty;a4ep,nA;d4f,r;!ly;agey,h9l8o6r5u4;dd0r0te;isp,uel;ar4ld,mmon,st0ward0zy;se;evLou1;e4il0;ap,e4;sy;aIiGlDoBr6u4;ff,r0sy;ly;a7i4oad;g5llia2;nt;ht;sh,ve;ld,un4;cy;a5o4ue;nd,o1;ck,nd;g,tt4;er;d,ld,w1;dy;bsu7ng6we4;so4;me;ry;rd", "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", @@ -152834,6 +152890,7 @@ var frozenLex = { 'free market': 'Singular', 'lay up': 'Singular', 'living room': 'Singular', + 'living rooms': 'Plural', 'spin off': 'Singular', 'appeal court': 'Uncountable', 'cold war': 'Uncountable', @@ -152914,6 +152971,11 @@ var frozenLex = { 'takes part': 'PresentTense', 'taking part': 'Gerund', 'taken part': 'Participle', + + 'light bulb': 'Noun', + 'rush hour': 'Noun', + 'fluid ounce': 'Unit', + 'the rolling stones': 'Organization', }; //just some of the most common emoticons @@ -153102,7 +153164,7 @@ var noun$1 = { beforeTags: { Determiner: n, //the date Possessive: n, //his date - Acronym: n,//u.s. state + Acronym: n, //u.s. state // ProperNoun:n, Noun: n, //nasa funding Adjective: n, //whole bottles @@ -153111,9 +153173,9 @@ var noun$1 = { Gerund: n, //uplifting victims PastTense: n, //saved storm victims Infinitive: n, //profess love - Date: n,//9pm show - Ordinal: n,//first date - Demonym: n,//dutch map + Date: n, //9pm show + Ordinal: n, //first date + Demonym: n, //dutch map }, afterTags: { Value: n, //date nine -? @@ -153122,14 +153184,14 @@ var noun$1 = { PresentTense: n, //babysitting sucks PastTense: n, //babysitting sucked // Noun:n, //talking therapy, planning process - Demonym: n,//american touch - Actor: n//dance therapist + Demonym: n, //american touch + Actor: n, //dance therapist }, // ownTags: { ProperNoun: n }, beforeWords: { - the: n,//the brands - with: n,//with cakes - without: n,// + the: n, //the brands + with: n, //with cakes + without: n, // // was:n, //was time -- was working // is:n, // of: n, //of power @@ -153138,51 +153200,76 @@ var noun$1 = { all: n, //all tips on: n, //on time // thing-ish verbs - cut: n,//cut spending - cuts: n,//cut spending - increase: n,// increase funding - decrease: n,// - raise: n,// - drop: n,// + cut: n, //cut spending + cuts: n, //cut spending + increase: n, // increase funding + decrease: n, // + raise: n, // + drop: n, // // give: n,//give parents - save: n,// - saved: n,// - saves: n,// - make: n,// - makes: n,// - made: n,// - minus: n,//minus laughing - plus: n,// - than: n,//more than age - another: n,// - versus: n,// - neither: n,// - about: n,//about claims + save: n, // + saved: n, // + saves: n, // + make: n, // + makes: n, // + made: n, // + minus: n, //minus laughing + plus: n, // + than: n, //more than age + another: n, // + versus: n, // + neither: n, // + about: n, //about claims // strong adjectives - favorite: n,// - best: n,// - daily: n,// - weekly: n,// - linear: n,// - binary: n,// - mobile: n,// - lexical: n,// - technical: n,// - computer: n,// - scientific: n,// - security: n,// - government: n,// - popular: n,// + favorite: n, // + best: n, // + daily: n, // + weekly: n, // + linear: n, // + binary: n, // + mobile: n, // + lexical: n, // + technical: n, // + computer: n, // + scientific: n, // + security: n, // + government: n, // + popular: n, // formal: n, - no: n,//no worries - more: n,//more details - one: n,//one flood - let: n,//let fear - her: n,//her boots - his: n,// - their: n,// - our: n,// - us: n,//served us drinks + no: n, //no worries + more: n, //more details + one: n, //one flood + let: n, //let fear + her: n, //her boots + his: n, // + their: n, // + our: n, // + us: n, //served us drinks + sheer: n, + + monthly: n, + yearly: n, + current: n, + previous: n, + upcoming: n, + last: n, + next: n, + main: n, + initial: n, + final: n, + beginning: n, + end: n, + top: n, + bottom: n, + future: n, + past: n, + major: n, + minor: n, + side: n, + central: n, + peripheral: n, + public: n, + private: n, }, afterWords: { of: n, //date of birth (preposition) @@ -153203,8 +153290,8 @@ var noun$1 = { is: n, did: n, do: n, - can: n,//parents can - wise: n,//service-wise + can: n, //parents can + wise: n, //service-wise // they: n,//snakes they }, }; @@ -153223,13 +153310,13 @@ var verb = { Determiner: v, //flash the Adverb: v, //date quickly Possessive: v, //date his - Reflexive: v,//resolve yourself + Reflexive: v, //resolve yourself // Noun:true, //date spencer Preposition: v, //date around, dump onto, grumble about // Conjunction: v, // dip to, dip through - Cardinal: v,//cut 3 squares - Comparative: v,//feel greater - Superlative: v,//feel greatest + Cardinal: v, //cut 3 squares + Comparative: v, //feel greater + Superlative: v, //feel greatest }, beforeWords: { i: v, //i date @@ -153284,7 +153371,7 @@ var verb = { me: v, //date me you: v, //date you him: v, //loves him - us: v,//cost us + us: v, //cost us her: v, // his: v, // them: v, // @@ -153302,8 +153389,8 @@ var verb = { a: v, //covers a an: v, //covers an // from: v, //ranges from - up: v,//serves up - down: v,//serves up + up: v, //serves up + down: v, //serves up by: v, // in: v, //bob in out: v, @@ -153313,23 +153400,23 @@ var verb = { what: v, //look what // when: v,//starts when // for:true, //settled for - all: v,//shiver all night + all: v, //shiver all night // conjunctions - to: v,//dip to - because: v,// - although: v,// - after: v, - before: v,// - how: v,// - otherwise: v,// - together: v,//fit together - though: v,// - into: v,// - yet: v,// - more: v,//kill more - here: v,// look here - there: v,// - away: v,//float away + to: v, //dip to + because: v, // + although: v, // + // after: v, + // before: v,// + how: v, // + otherwise: v, // + together: v, //fit together + though: v, // + into: v, // + yet: v, // + more: v, //kill more + here: v, // look here + there: v, // + away: v, //float away }, }; @@ -153344,74 +153431,115 @@ const clue$7 = { var actorVerb = clue$7; -const jj = 'Adjective'; +const jj$2 = 'Adjective'; var adj$1 = { beforeTags: { - Determiner: jj, //the detailed + Determiner: jj$2, //the detailed // Copula: jj, //is detailed - Possessive: jj, //spencer's detailed - Hyphenated: jj, //rapidly-changing + Possessive: jj$2, //spencer's detailed + Hyphenated: jj$2, //rapidly-changing }, afterTags: { // Noun: jj, //detailed plan, overwhelming evidence - Adjective: jj, //intoxicated little + Adjective: jj$2, //intoxicated little }, beforeWords: { - seem: jj, //seem prepared - seemed: jj, - seems: jj, - feel: jj, //feel prepared - feels: jj, - felt: jj, - stay: jj, - appear: jj, - appears: jj, - appeared: jj, - also: jj, - over: jj, //over cooked - under: jj, - too: jj, //too insulting - it: jj, //find it insulting - but: jj, //nothing but frustrating - still: jj, //still scared + seem: jj$2, //seem prepared + seemed: jj$2, + seems: jj$2, + feel: jj$2, //feel prepared + feels: jj$2, + felt: jj$2, + stay: jj$2, + appear: jj$2, + appears: jj$2, + appeared: jj$2, + also: jj$2, + over: jj$2, //over cooked + under: jj$2, + too: jj$2, //too insulting + it: jj$2, //find it insulting + but: jj$2, //nothing but frustrating + still: jj$2, //still scared // adverbs that are adjective-ish - really: jj, //really damaged - quite: jj, - well: jj, - very: jj, - how: jj,//how slow - deeply: jj, - hella: jj, + really: jj$2, //really damaged + quite: jj$2, + well: jj$2, + very: jj$2, + truly: jj$2, + how: jj$2, //how slow + deeply: jj$2, + hella: jj$2, // always: jj, // never: jj, - profoundly: jj, - extremely: jj, - so: jj, - badly: jj, - mostly: jj, - totally: jj, - awfully: jj, - rather: jj, - nothing: jj, //nothing secret, - something: jj,//something wrong - anything: jj, - not: jj,//not swell - me: jj,//called me swell - is: jj, + profoundly: jj$2, + extremely: jj$2, + so: jj$2, + badly: jj$2, + mostly: jj$2, + totally: jj$2, + awfully: jj$2, + rather: jj$2, + nothing: jj$2, //nothing secret, + something: jj$2, //something wrong + anything: jj$2, + not: jj$2, //not swell + me: jj$2, //called me swell + is: jj$2, + + face: jj$2, //faces shocking revelations + faces: jj$2, + faced: jj$2, + + look: jj$2, + looks: jj$2, + looked: jj$2, + + reveal: jj$2, + reveals: jj$2, + revealed: jj$2, + + sound: jj$2, + sounded: jj$2, + sounds: jj$2, + remains: jj$2, + remained: jj$2, + prove: jj$2, //would prove shocking + proves: jj$2, + proved: jj$2, + + becomes: jj$2, + stays: jj$2, + tastes: jj$2, + taste: jj$2, + smells: jj$2, + smell: jj$2, + gets: jj$2, //gets shocking snowfall + grows: jj$2, + as: jj$2, + rings: jj$2, + radiates: jj$2, + conveys: jj$2, + convey: jj$2, + conveyed: jj$2, + of: jj$2, + // 'smacks of': jj, + // 'reeks of': jj, }, afterWords: { - too: jj, //insulting too - also: jj, //insulting too - or: jj, //insulting or - enough: jj, //cool enough - about: jj, //cool about + too: jj$2, //insulting too + also: jj$2, //insulting too + or: jj$2, //insulting or + enough: jj$2, //cool enough + as: jj$2, //as shocking as + //about: jj, //cool about }, }; -const g = 'Gerund'; +const g$1 = 'Gerund'; // Adj|Gerund // Noun|Gerund @@ -153419,96 +153547,134 @@ const g = 'Gerund'; var gerund = { beforeTags: { // Verb: g, // loves shocking - Adverb: g, //quickly shocking - Preposition: g, //by insulting - Conjunction: g, //to insulting + Adverb: g$1, //quickly shocking + Preposition: g$1, //by insulting + Conjunction: g$1, //to insulting }, afterTags: { - Adverb: g, //shocking quickly - Possessive: g, //shocking spencer's - Person: g, //telling spencer - Pronoun: g, //shocking him - Determiner: g, //shocking the - Copula: g, //shocking is - Preposition: g, //dashing by, swimming in - Conjunction: g, //insulting to - Comparative: g, //growing shorter + Adverb: g$1, //shocking quickly + Possessive: g$1, //shocking spencer's + Person: g$1, //telling spencer + Pronoun: g$1, //shocking him + Determiner: g$1, //shocking the + Copula: g$1, //shocking is + Preposition: g$1, //dashing by, swimming in + Conjunction: g$1, //insulting to + Comparative: g$1, //growing shorter }, beforeWords: { - been: g, - keep: g,//keep going - continue: g,// - stop: g,// - am: g,//am watching - be: g,//be timing - me: g,//got me thinking + been: g$1, + keep: g$1,//keep going + continue: g$1,// + stop: g$1,// + am: g$1,//am watching + be: g$1,//be timing + me: g$1,//got me thinking // action-words - began: g, - start: g, - starts: g, - started: g, - stops: g, - stopped: g, - help: g, - helps: g, - avoid: g, - avoids: g, - love: g,//love painting - loves: g, - loved: g, - hate: g, - hates: g, - hated: g, + began: g$1, + start: g$1, + starts: g$1, + started: g$1, + stops: g$1, + stopped: g$1, + help: g$1, + helps: g$1, + avoid: g$1, + avoids: g$1, + love: g$1,//love painting + loves: g$1, + loved: g$1, + hate: g$1, + hates: g$1, + hated: g$1, // was:g,//was working // is:g, // be:g, }, afterWords: { - you: g, //telling you - me: g, // - her: g, // - him: g, // - his: g, // - them: g, // - their: g, // fighting their - it: g, //dumping it - this: g, //running this - there: g, // swimming there - on: g, // landing on - about: g, // talking about - for: g, // paying for - up: g, //speeding up - down: g, // + you: g$1, //telling you + me: g$1, // + her: g$1, // + him: g$1, // + his: g$1, // + them: g$1, // + their: g$1, // fighting their + it: g$1, //dumping it + this: g$1, //running this + there: g$1, // swimming there + on: g$1, // landing on + about: g$1, // talking about + for: g$1, // paying for + up: g$1, //speeding up + down: g$1, // }, }; +const g = 'Gerund'; +const jj$1 = 'Adjective'; + // rallying the troops // her rallying cry const clue$6 = { beforeTags: Object.assign({}, adj$1.beforeTags, gerund.beforeTags, { - // Copula: 'Adjective', - Imperative: 'Gerund',//recommend living in - Infinitive: 'Adjective',//say charming things - PresentTense: 'Gerund', - Plural: 'Gerund'//kids cutting + // Copula: jj, + Imperative: g, //recommend living in + Infinitive: jj$1, //say charming things + // PresentTense: g, + Plural: g, //kids cutting }), afterTags: Object.assign({}, adj$1.afterTags, gerund.afterTags, { - Singular: 'Adjective'//shocking ignorance + Noun: jj$1, //shocking ignorance + // Plural: jj, //shocking lies }), beforeWords: Object.assign({}, adj$1.beforeWords, gerund.beforeWords, { - is: 'Adjective', - was: 'Adjective', - of: 'Adjective', //of varying - suggest: 'Gerund', - recommend: 'Gerund', + is: jj$1, + are: g, //is overflowing: JJ, are overflowing : VB ?? + was: jj$1, + of: jj$1, //of varying + suggest: g, + suggests: g, + suggested: g, + + recommend: g, + recommends: g, + recommended: g, + + imagine: g, + imagines: g, + imagined: g, + + consider: g, + considered: g, + considering: g, + + resist: g, + resists: g, + resisted: g, + + avoid: g, + avoided: g, + avoiding: g, + + except: jj$1, + accept: jj$1, + assess: g, + explore: g, + fear: g, + fears: g, + appreciate: g, + question: g, + help: g, + embrace: g, + with: jj$1, //filled with daring }), afterWords: Object.assign({}, adj$1.afterWords, gerund.afterWords, { - to: 'Gerund', - not: 'Gerund',//trying not to car - the: 'Gerund' //sweeping the country + to: g, + not: g, //trying not to car + the: g, //sweeping the country }), }; // console.log(clue) @@ -153544,6 +153710,7 @@ var adjNoun = clue$5; // the boiled egg // boiled the water let past$1 = 'PastTense'; +let jj = 'Adjective'; const adjPast = { beforeTags: { @@ -153558,22 +153725,23 @@ const adjPast = { Pronoun: past$1, //hooked me Determiner: past$1, //hooked the Adverb: past$1, //cooked perfectly - Comparative: past$1,//closed higher - Date: past$1,// alleged thursday - Gerund: past$1,//left dancing + Comparative: past$1, //closed higher + Date: past$1, // alleged thursday + Gerund: past$1, //left dancing }, beforeWords: { - be: past$1,//be hooked vs be embarrassed - who: past$1,//who lost - get: 'Adjective',//get charged + be: past$1, //be hooked vs be embarrassed + who: past$1, //who lost + get: jj, //get charged had: past$1, has: past$1, have: past$1, been: past$1, - it: past$1,//it intoxicated him - as: past$1,//as requested - for: 'Adjective',//for discounted items - more: 'Adjective',//more broken promises + it: past$1, //it intoxicated him + as: past$1, //as requested + for: jj, //for discounted items + more: jj, //more broken promises + always: jj, }, afterWords: { by: past$1, //damaged by @@ -153590,16 +153758,17 @@ const adjPast = { as: past$1, //known as on: past$1, //focused on at: past$1, //recorded at - between: past$1,//settled between - to: past$1,//dedicated to - into: past$1,//pumped into - us: past$1,//charged us - them: past$1,//charged us - his: past$1,//shared his - her: past$1,// - their: past$1,// - our: past$1,// - me: past$1,// + between: past$1, //settled between + to: past$1, //dedicated to + into: past$1, //pumped into + us: past$1, //charged us + them: past$1, //charged us + his: past$1, //shared his + her: past$1, // + their: past$1, // + our: past$1, // + me: past$1, // + about: jj, }, }; @@ -153643,21 +153812,39 @@ var adjPresent = clue$4; // 'operating the crane', or 'operating room' const misc$3 = { beforeTags: { - Copula: 'Gerund', PastTense: 'Gerund', PresentTense: 'Gerund', Infinitive: 'Gerund' + Copula: 'Gerund', + PastTense: 'Gerund', + PresentTense: 'Gerund', + Infinitive: 'Gerund', + }, + afterTags: { + Value: 'Gerund', //maintaining 500 }, - afterTags: {}, beforeWords: { - are: 'Gerund', were: 'Gerund', be: 'Gerund', no: 'Gerund', without: 'Gerund', + are: 'Gerund', + were: 'Gerund', + be: 'Gerund', + no: 'Gerund', + without: 'Gerund', //are you playing - you: 'Gerund', we: 'Gerund', they: 'Gerund', he: 'Gerund', she: 'Gerund', + you: 'Gerund', + we: 'Gerund', + they: 'Gerund', + he: 'Gerund', + she: 'Gerund', //stop us playing - us: 'Gerund', them: 'Gerund' + us: 'Gerund', + them: 'Gerund', }, afterWords: { // offering the - the: 'Gerund', this: 'Gerund', that: 'Gerund', + the: 'Gerund', + this: 'Gerund', + that: 'Gerund', //got me thinking - me: 'Gerund', us: 'Gerund', them: 'Gerund', + me: 'Gerund', + us: 'Gerund', + them: 'Gerund', }, }; const clue$3 = { @@ -154491,7 +154678,7 @@ var data$2 = { "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¦3er:lay,shy,fun¦3der:mad,sad¦4der:glad¦:¦4r:cute,dire,fake,fine,free,lame,late,pale,rare,ripe,rude,safe,sore,tame,wide¦5r:eerie,stale" + "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" }, "Gerund": { "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", @@ -157087,7 +157274,7 @@ const checkWord = (term, obj) => { found = obj[str]; } if (found && env.DEBUG_TAGS) { - console.log(`\n \x1b[2m\x1b[3m ↓ - '${str}' \x1b[0m`);//eslint-disable-line + console.log(`\n \x1b[2m\x1b[3m ↓ - '${str}' \x1b[0m`); //eslint-disable-line } return found }; @@ -157104,7 +157291,7 @@ const checkTag = (term, obj = {}, tagSet) => { }); let found = tags.find(tag => obj[tag]); if (found && env.DEBUG_TAGS) { - console.log(` \x1b[2m\x1b[3m ↓ - '${term.normal || term.implicit}' (#${found}) \x1b[0m`);//eslint-disable-line + console.log(` \x1b[2m\x1b[3m ↓ - '${term.normal || term.implicit}' (#${found}) \x1b[0m`); //eslint-disable-line } found = obj[found]; return found @@ -157114,13 +157301,14 @@ const pickTag = function (terms, i, clues, model) { if (!clues) { return null } + const beforeIndex = terms[i - 1]?.text !== 'also' ? i - 1 : Math.max(0, i - 2); const tagSet = model.one.tagSet; // look -> right word, first let tag = checkWord(terms[i + 1], clues.afterWords); // look <- left word, second - tag = tag || checkWord(terms[i - 1], clues.beforeWords); - // look <- left tag - tag = tag || checkTag(terms[i - 1], clues.beforeTags, tagSet); + tag = tag || checkWord(terms[beforeIndex], clues.beforeWords); + // look <- left tag + tag = tag || checkTag(terms[beforeIndex], clues.beforeTags, tagSet); // look -> right tag tag = tag || checkTag(terms[i + 1], clues.afterTags, tagSet); // console.log(clues) @@ -157156,7 +157344,7 @@ const doSwitches = function (terms, i, world) { // add plural/singular etc. fillTags$1(terms, i, model); } else if (env.DEBUG_TAGS) { - console.log(`\n -> X - '${str}' : (${form}) `);//eslint-disable-line + console.log(`\n -> X - '${str}' : (${form}) `); //eslint-disable-line } } }; @@ -157375,49 +157563,49 @@ const mapping$1 = { // adverbs // 'Comparative': 'RBR', // 'Superlative': 'RBS', - 'Adverb': 'RB', + Adverb: 'RB', // adjectives - 'Comparative': 'JJR', - 'Superlative': 'JJS', - 'Adjective': 'JJ', - 'TO': 'Conjunction', + Comparative: 'JJR', + Superlative: 'JJS', + Adjective: 'JJ', + TO: 'Conjunction', // verbs - 'Modal': 'MD', - 'Auxiliary': 'MD', - 'Gerund': 'VBG', //throwing - 'PastTense': 'VBD', //threw - 'Participle': 'VBN', //thrown - 'PresentTense': 'VBZ', //throws - 'Infinitive': 'VB', //throw - 'Particle': 'RP', //phrasal particle - 'Verb': 'VB', // throw + Modal: 'MD', + Auxiliary: 'MD', + Gerund: 'VBG', //throwing + PastTense: 'VBD', //threw + Participle: 'VBN', //thrown + PresentTense: 'VBZ', //throws + Infinitive: 'VB', //throw + Particle: 'RP', //phrasal particle + Verb: 'VB', // throw // pronouns - 'Pronoun': 'PRP', + Pronoun: 'PRP', // misc - 'Cardinal': 'CD', - 'Conjunction': 'CC', - 'Determiner': 'DT', - 'Preposition': 'IN', + Cardinal: 'CD', + Conjunction: 'CC', + Determiner: 'DT', + Preposition: 'IN', // 'Determiner': 'WDT', // 'Expression': 'FW', - 'QuestionWord': 'WP', - 'Expression': 'UH', + QuestionWord: 'WP', + Expression: 'UH', //nouns - 'Possessive': 'POS', - 'ProperNoun': 'NNP', - 'Person': 'NNP', - 'Place': 'NNP', - 'Organization': 'NNP', - 'Singular': 'NNP', - 'Plural': 'NNS', - 'Noun': 'NN', - - 'There': 'EX', //'there' + Possessive: 'POS', + ProperNoun: 'NNP', + Person: 'NNP', + Place: 'NNP', + Organization: 'NNP', + Singular: 'NN', + Plural: 'NNS', + Noun: 'NN', + + There: 'EX', //'there' // 'Adverb':'WRB', // 'Noun':'PDT', //predeterminer // 'Noun':'SYM', //symbol @@ -157426,7 +157614,7 @@ const mapping$1 = { // WDT Wh-determiner // WP Wh-pronoun // WP$ Possessive wh-pronoun - // WRB Wh-adverb + // WRB Wh-adverb }; const toPenn = function (term) { @@ -157971,45 +158159,138 @@ var splice = insertContraction; const hasContraction$1 = /'/; -const isHas = (terms, i) => { - //look for a past-tense verb - let after = terms.slice(i + 1, i + 3); - return after.some(t => t.tags.has('PastTense')) +const hasWords = new Set([ + 'been', //the meeting's been .. + 'become', //my son's become +]); +const isWords = new Set([ + 'what', //it's what + 'how', //it's how + 'when', + 'if', //it's if + 'too', +]); +let adjLike$1 = new Set(['too', 'also', 'enough']); + +// the big clue is the tense of the following verb +const isOrHas = (terms, i) => { + // scan ahead for the next verb or adjective + for (let o = i + 1; o < terms.length; o += 1) { + let t = terms[o]; + if (hasWords.has(t.normal)) { + return 'has' + } + if (isWords.has(t.normal)) { + return 'is' + } + // the cat's sleeping + if (t.tags.has('Gerund')) { + return 'is' + } + // she's the one + if (t.tags.has('Determiner')) { + return 'is' + } + // the food's ready + if (t.tags.has('Adjective')) { + return 'is' + } + // the car's parked + if (t.switch === 'Adj|Past') { + if (terms[o + 1]) { + // car's parked too .. + if (adjLike$1.has(terms[o + 1].normal)) { + return 'is' + } + // car's parked on .. + if (terms[o + 1].tags.has('Preposition')) { + return 'is' + } + } + // return 'is' + } + // The meeting's scheduled vs The plane's landed + if (t.tags.has('PastTense')) { + // meeting's scheduled for + if (terms[o + 1] && terms[o + 1].normal === 'for') { + return 'is' + } + return 'has' + } + } + return 'is' }; -// 's -> [possessive, 'has', or 'is'] +// 's -> [possessive, 'has', 'is', 'are', 'us'] const apostropheS$1 = function (terms, i) { // possessive, is/has let before = terms[i].normal.split(hasContraction$1)[0]; - // spencer's got -> 'has' - if (isHas(terms, i)) { - return [before, 'has'] - } - // let's + // let's - >[let, us] if (before === 'let') { return [before, 'us'] } - // allow slang "there's" -> there are + // allow slang "there's cookies" -> there are if (before === 'there') { - let nextTerm = terms[i + 1]; - if (nextTerm && nextTerm.tags.has('Plural')) { + let t = terms[i + 1]; + if (t && t.tags.has('Plural')) { return [before, 'are'] } } + // spencer's got -> spencer has got + if (isOrHas(terms, i) === 'has') { + return [before, 'has'] + } return [before, 'is'] }; var apostropheS$2 = apostropheS$1; const hasContraction = /'/; +const hadWords = new Set([ + 'better', //had better + 'done', //had done + 'before', // he'd _ before + 'it', // he'd _ it + 'had', //she'd had -> she would have.. +]); + +const wouldWords = new Set([ + 'have', // 'i'd have' -> i would have.. + 'be', //' she'd be' +]); + //look for a past-tense verb -const pickHad = (terms, i) => { - // you'd better go -> 'you had better go' - if (terms[i + 1] && terms[i + 1].normal == 'better') { - return true +// You'd mentioned -> you had mentioned +// You'd mention -> you would mention +const hadOrWould = (terms, i) => { + // scan ahead + for (let o = i + 1; o < terms.length; o += 1) { + let t = terms[o]; + // you'd better go + if (hadWords.has(t.normal)) { + return 'had' + } + // we'd have + if (wouldWords.has(t.normal)) { + return 'would' + } + // You'd mentioned -> you had mentioned + if (t.tags.has('PastTense') || t.switch === 'Adj|Past') { + return 'had' + } + // You'd mention -> you would mention + if (t.tags.has('PresentTense') || t.tags.has('Infinitive')) { + return 'would' + } + // i'd an issue + if (t.tags.has('#Determiner')) { + return 'had' + } + if (t.tags.has('Adjective')) { + return 'would' + } } - let after = terms.slice(i + 1, i + 3); - return after.some(t => t.tags.has('PastTense')) + return false }; // he'd walked -> had @@ -158021,7 +158302,7 @@ const _apostropheD = function (terms, i) { if (before === 'how' || before === 'what') { return [before, 'did'] } - if (pickHad(terms, i) === true) { + if (hadOrWould(terms, i) === 'had') { return [before, 'had'] } // had/would/did @@ -158082,10 +158363,12 @@ const banList = { }; const beforePossessive = { - in: true,//in sunday's - by: true,//by sunday's - for: true,//for sunday's + in: true, //in sunday's + by: true, //by sunday's + for: true, //for sunday's }; +let adjLike = new Set(['too', 'also', 'enough', 'about']); +let nounLike = new Set(['is', 'are', 'did', 'were', 'could', 'should', 'must', 'had', 'have']); const isPossessive = (terms, i) => { let term = terms[i]; @@ -158117,18 +158400,60 @@ const isPossessive = (terms, i) => { } return false } + // the sun's setting vs the artist's painting + // gerund = is, noun = possessive + // (we are doing some dupe-work of the switch classifier here) + if (nextTerm.switch == 'Noun|Gerund') { + let next2 = terms[i + 2]; + // the artist's painting. + if (!next2) { + if (term.tags.has('Actor') || term.tags.has('ProperNoun')) { + return true + } + return false + } + // the artist's painting is.. + if (next2.tags.has('Copula')) { + return true + } + // the cat's sleeping on .. + if (next2.normal === 'on' || next2.normal === 'in') { + return false + } + return false + } //a gerund suggests 'is walking' if (nextTerm.tags.has('Verb')) { //fix 'jamie's bite' if (nextTerm.tags.has('Infinitive')) { return true } + //'jamaica's growing' + if (nextTerm.tags.has('Gerund')) { + return false + } //fix 'spencer's runs' if (nextTerm.tags.has('PresentTense')) { return true } return false } + + // john's nuts + if (nextTerm.switch === 'Adj|Noun') { + let twoTerm = terms[i + 2]; + if (!twoTerm) { + return false //adj + } + // john's nuts were.. + if (nounLike.has(twoTerm.normal)) { + return true + } + // john's nuts about.. + if (adjLike.has(twoTerm.normal)) { + return false //adj + } + } //spencer's house if (nextTerm.tags.has('Noun')) { let nextStr = nextTerm.machine || nextTerm.normal; @@ -158140,25 +158465,46 @@ const isPossessive = (terms, i) => { if (nextTerm.tags.has('Possessive')) { return false } - // the captain's John + // the captain's John if (nextTerm.tags.has('ProperNoun') && !term.tags.has('ProperNoun')) { return false } return true } + // by sunday's final if (terms[i - 1] && beforePossessive[terms[i - 1].normal] === true) { return true } - //rocket's red glare - let twoTerm = terms[i + 2]; - if (twoTerm && twoTerm.tags.has('Noun') && !twoTerm.tags.has('Pronoun')) { - return true - } - //othwerwise, an adjective suggests 'is good' - if (nextTerm.tags.has('Adjective') || nextTerm.tags.has('Adverb') || nextTerm.tags.has('Verb')) { + + // spencer's tired + if (nextTerm.tags.has('Adjective')) { + let twoTerm = terms[i + 2]; + //the rocket's red + if (!twoTerm) { + return false + } + // rocket's red nozzle + if (twoTerm.tags.has('Noun') && !twoTerm.tags.has('Pronoun')) { + //project's behind schedule + let str = nextTerm.normal; + if (str === 'above' || str === 'below' || str === 'behind') { + return false + } + return true + } + // rocket's red glare + if (twoTerm.switch === 'Noun|Verb') { + return true + } + //othwerwise, an adjective suggests 'is good' return false } + // baby's first steps + if (nextTerm.tags.has('Value')) { + return true + } + // otherwise not possessive return false }; var isPossessive$1 = isPossessive; @@ -158230,7 +158576,6 @@ const contractionTwo$1 = view => { } let words = null; // any known-ones, like 'dunno'? - // ['foo', 's'] if (byEnd.hasOwnProperty(after)) { words = byEnd[after](terms, i, world); } @@ -158306,12 +158651,18 @@ var advAdj = [ { match: `[${adverbAdj}] #Adjective`, group: 0, tag: 'Adverb', reason: 'dark-green' }, // far too { match: `#Copula [far too] #Adjective`, group: 0, tag: 'Adverb', reason: 'far-too' }, - // was still in + // was still in { match: `#Copula [still] (in|#Gerund|#Adjective)`, group: 0, tag: 'Adverb', reason: 'was-still-walking' }, // studies hard { match: `#Plural ${noLy}`, tag: '#PresentTense #Adverb', reason: 'studies-hard' }, // shops direct - { match: `#Verb [${noLy}] !#Noun?`, group: 0, notIf: '(#Copula|get|got|getting|become|became|becoming|feel|feels|feeling)', tag: 'Adverb', reason: 'shops-direct' }, + { + match: `#Verb [${noLy}] !#Noun?`, + group: 0, + notIf: '(#Copula|get|got|getting|become|became|becoming|feel|feels|feeling|#Determiner|#Preposition)', + tag: 'Adverb', + reason: 'shops-direct', + }, // studies a lot { match: `[#Plural] a lot`, tag: 'PresentTense', reason: 'studies-a-lot' }, ]; @@ -158331,15 +158682,38 @@ var gerundAdj = [ // a bit amusing { match: 'a (little|bit|wee) bit? [#Gerund]', group: 0, tag: 'Adjective', reason: 'a-bit-gerund' }, // looking annoying - { match: '#Gerund [#Gerund]', group: 0, tag: 'Adjective', notIf: '(impersonating|practicing|considering|assuming)', reason: 'looking-annoying' }, + { + match: '#Gerund [#Gerund]', + group: 0, + tag: 'Adjective', + notIf: '(impersonating|practicing|considering|assuming)', + reason: 'looking-annoying', + }, // looked amazing - { match: '(looked|look|looks) #Adverb? [%Adj|Gerund%]', group: 0, tag: 'Adjective', notIf: '(impersonating|practicing|considering|assuming)', reason: 'looked-amazing' }, + { + match: '(looked|look|looks) #Adverb? [%Adj|Gerund%]', + group: 0, + tag: 'Adjective', + notIf: '(impersonating|practicing|considering|assuming)', + reason: 'looked-amazing', + }, // were really amazing // { match: '(looked|look|looks) #Adverb [%Adj|Gerund%]', group: 0, tag: 'Adjective', notIf: '(impersonating|practicing|considering|assuming)', reason: 'looked-amazing' }, // developing a { match: '[%Adj|Gerund%] #Determiner', group: 0, tag: 'Gerund', reason: 'developing-a' }, // world's leading manufacturer { match: '#Possessive [%Adj|Gerund%] #Noun', group: 0, tag: 'Adjective', reason: 'leading-manufacturer' }, + // meaning alluring + { match: '%Noun|Gerund% %Adj|Gerund%', tag: 'Gerund #Adjective', reason: 'meaning-alluring' }, + + // face shocking revelations + { + match: '(face|embrace|reveal|stop|start|resume) %Adj|Gerund%', + tag: '#PresentTense #Adjective', + reason: 'face-shocking', + }, + // are enduring symbols + { match: '(are|were) [%Adj|Gerund%] #Plural', group: 0, tag: 'Adjective', reason: 'are-enduring-symbols' }, ]; var nounAdj = [ @@ -158368,11 +158742,35 @@ var nounAdj = [ // must-win { match: `must && #Hyphenated .`, tag: 'Adjective', reason: 'must-win' }, // the present - { match: `#Determiner [#Adjective]$`, tag: 'Noun', notIf: '(this|that|#Comparative|#Superlative)', reason: 'the-south' }, //are that crazy. + { + match: `#Determiner [#Adjective]$`, + tag: 'Noun', + notIf: '(this|that|#Comparative|#Superlative)', + reason: 'the-south', + }, //are that crazy. // company-wide - { match: `(#Noun && #Hyphenated) (#Adjective && #Hyphenated)`, tag: 'Adjective', notIf: '(this|that|#Comparative|#Superlative)', reason: 'company-wide' }, + { + match: `(#Noun && #Hyphenated) (#Adjective && #Hyphenated)`, + tag: 'Adjective', + notIf: '(this|that|#Comparative|#Superlative)', + reason: 'company-wide', + }, // the poor were - { match: `#Determiner [#Adjective] (#Copula|#Determiner)`, notIf: '(#Comparative|#Superlative)', group: 0, tag: 'Noun', reason: 'the-poor' }, + { + match: `#Determiner [#Adjective] (#Copula|#Determiner)`, + notIf: '(#Comparative|#Superlative)', + group: 0, + tag: 'Noun', + reason: 'the-poor', + }, + // professional bodybuilder + { + match: `[%Adj|Noun%] #Noun`, + notIf: '(#Pronoun|#ProperNoun)', + group: 0, + tag: 'Adjective', + reason: 'stable-foundations', + }, ]; var adjVerb = [ @@ -158405,7 +158803,13 @@ var adjVerb = [ // got tired of { match: 'got #Adverb? [#PastTense] of', group: 0, tag: 'Adjective', reason: 'got-tired-of' }, //felt loved - { 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|seems|seemed|appear|appeared|appears|feel|feels|felt|sound|sounds|sounded) (#Adverb|#Adjective)? [#PastTense]', + group: 0, + tag: 'Adjective', + reason: 'felt-loved', + }, // seem confused { match: '(seem|feel|seemed|felt) [#PastTense #Particle?]', group: 0, tag: 'Adjective', reason: 'seem-confused' }, // a bit confused @@ -158419,13 +158823,29 @@ var adjVerb = [ //failed and oppressive { match: '[%Adj|Past%] and #Adjective', group: 0, tag: 'Adjective', reason: 'faled-and-oppressive' }, // or heightened emotion - { match: 'or [#PastTense] #Noun', group: 0, tag: 'Adjective', notIf: '(#Copula|#Pronoun)', reason: 'or-heightened-emotion' }, + { + match: 'or [#PastTense] #Noun', + group: 0, + tag: 'Adjective', + notIf: '(#Copula|#Pronoun)', + reason: 'or-heightened-emotion', + }, // became involved { match: '(become|became|becoming|becomes) [#Verb]', group: 0, tag: 'Adjective', reason: 'become-verb' }, // their declared intentions { match: '#Possessive [#PastTense] #Noun', group: 0, tag: 'Adjective', reason: 'declared-intentions' }, // is he cool { match: '#Copula #Pronoun [%Adj|Present%]', group: 0, tag: 'Adjective', reason: 'is-he-cool' }, + // is crowded with + { + 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', + }, + // is empty$ + { match: '#Copula #Adverb? [%Adj|Present%]$', group: 0, tag: 'Adjective', reason: 'was-empty$' }, ]; // const adverbAdj = '(dark|bright|flat|light|soft|pale|dead|dim|faux|little|wee|sheer|most|near|good|extra|all)' @@ -158594,7 +159014,13 @@ var noun = [ // my first thought { match: '#Possessive #Ordinal [#PastTense]', group: 0, tag: 'Noun', reason: 'first-thought' }, //the nice swim - { match: '(the|this|those|these) #Adjective [%Verb|Noun%]', group: 0, tag: 'Noun', notIf: '#Copula', reason: 'the-adj-verb' }, + { + match: '(the|this|those|these) #Adjective [%Verb|Noun%]', + group: 0, + tag: 'Noun', + notIf: '#Copula', + reason: 'the-adj-verb', + }, // the truly nice swim { match: '(the|this|those|these) #Adverb #Adjective [#Verb]', group: 0, tag: 'Noun', reason: 'determiner4' }, //the wait to vote @@ -158604,12 +159030,23 @@ var noun = [ //the threat of force { match: '#Determiner #Noun of [#Verb]', group: 0, tag: 'Noun', notIf: '#Gerund', reason: 'noun-of-noun' }, // ended in ruins - { match: '#PastTense #Preposition [#PresentTense]', group: 0, notIf: '#Gerund', tag: 'Noun', reason: 'ended-in-ruins' }, + { + match: '#PastTense #Preposition [#PresentTense]', + group: 0, + notIf: '#Gerund', + tag: 'Noun', + reason: 'ended-in-ruins', + }, //'u' as pronoun { match: '#Conjunction [u]', group: 0, tag: 'Pronoun', reason: 'u-pronoun-2' }, { match: '[u] #Verb', group: 0, tag: 'Pronoun', reason: 'u-pronoun-1' }, //the western line - { match: '#Determiner [(western|eastern|northern|southern|central)] #Noun', group: 0, tag: 'Noun', reason: 'western-line' }, + { + match: '#Determiner [(western|eastern|northern|southern|central)] #Noun', + group: 0, + tag: 'Noun', + reason: 'western-line', + }, //air-flow { match: '(#Singular && @hasHyphen) #PresentTense', tag: 'Noun', reason: 'hyphen-verb' }, //is no walk @@ -158625,7 +159062,13 @@ var noun = [ // a comdominium, or simply condo { match: `a #Noun+ or #Adverb+? [#Verb]`, group: 0, tag: 'Noun', reason: 'noun-or-noun' }, // walk the walk - { match: '(the|those|these|a|an) #Adjective? [#PresentTense #Particle?]', group: 0, tag: 'Noun', notIf: '(seem|appear|include|#Gerund|#Copula)', reason: 'det-inf' }, + { + match: '(the|those|these|a|an) #Adjective? [#PresentTense #Particle?]', + group: 0, + tag: 'Noun', + notIf: '(seem|appear|include|#Gerund|#Copula)', + reason: 'det-inf', + }, // { match: '(the|those|these|a|an) #Adjective? [#PresentTense #Particle?]', group: 0, tag: 'Noun', notIf: '(#Gerund|#Copula)', reason: 'det-pres' }, // ==== Actor ==== @@ -158638,11 +159081,25 @@ var noun = [ // co-founder { match: `co #Singular`, tag: 'Actor', reason: 'co-noun' }, // co-founder - { match: `[#Noun+] #Actor`, group: 0, tag: 'Actor', notIf: '(#Honorific|#Pronoun|#Possessive)', reason: 'air-traffic-controller' }, + { + match: `[#Noun+] #Actor`, + group: 0, + tag: 'Actor', + notIf: '(#Honorific|#Pronoun|#Possessive)', + reason: 'air-traffic-controller', + }, // fine-artist - { 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: `(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', + }, // dance coach - { match: `#Noun+ (coach|chef|king|engineer|fellow|personality|boy|girl|man|woman|master)`, tag: 'Actor', reason: 'dance-coach' }, + { + match: `#Noun+ (coach|chef|king|engineer|fellow|personality|boy|girl|man|woman|master)`, + tag: 'Actor', + reason: 'dance-coach', + }, // chief design officer { match: `chief . officer`, tag: 'Actor', reason: 'chief-x-officer' }, // chief of police @@ -158681,7 +159138,12 @@ var noun = [ //the repairer said { match: '#Determiner [#Singular] said', group: 0, tag: 'Actor', reason: 'the-actor-said' }, //the euro sense - { match: `#Determiner #Noun [${infNouns}] !(#Preposition|to|#Adverb)?`, group: 0, tag: 'Noun', reason: 'the-noun-sense' }, + { + match: `#Determiner #Noun [${infNouns}] !(#Preposition|to|#Adverb)?`, + group: 0, + tag: 'Noun', + reason: 'the-noun-sense', + }, // photographs of a computer are { match: '[#PresentTense] (of|by|for) (a|an|the) #Noun #Copula', group: 0, tag: 'Plural', reason: 'photographs-of' }, // fight and win @@ -158696,7 +159158,12 @@ var noun = [ // scottish - i ate me sandwich { match: 'i #Verb [me] #Noun', group: 0, tag: 'Possessive', reason: 'scottish-me' }, // dance music - { match: '[#PresentTense] (music|class|lesson|night|party|festival|league|ceremony)', group: 0, tag: 'Noun', reason: 'dance-music' }, + { + match: '[#PresentTense] (music|class|lesson|night|party|festival|league|ceremony)', + group: 0, + tag: 'Noun', + reason: 'dance-music', + }, // wit it { match: '[wit] (me|it)', group: 0, tag: 'Presposition', reason: 'wit-me' }, //left-her-boots, shoved her hand @@ -158707,13 +159174,18 @@ var noun = [ { match: 'had [#PresentTense]', group: 0, tag: 'Noun', notIf: '(#Gerund|come|become)', reason: 'had-time' }, //instant access { match: '%Adj|Noun% %Noun|Verb%', tag: '#Adjective #Noun', notIf: '#ProperNoun #Noun', reason: 'instant-access' }, - // a representative to + // a representative to { match: '#Determiner [%Adj|Noun%] #Conjunction', group: 0, tag: 'Noun', reason: 'a-rep-to' }, // near death experiences, ambitious sales targets - { match: '#Adjective #Noun [%Plural|Verb%]$', group: 0, tag: 'Plural', notIf: '#Pronoun', reason: 'near-death-experiences' }, + { + match: '#Adjective #Noun [%Plural|Verb%]$', + group: 0, + tag: 'Plural', + notIf: '#Pronoun', + reason: 'near-death-experiences', + }, // your guild colors { match: '#Possessive #Noun [%Plural|Verb%]$', group: 0, tag: 'Plural', reason: 'your-guild-colors' }, - ]; var gerundNouns = [ @@ -159481,14 +159953,13 @@ var imperative = [ var adjGerund = [ // that were growing { match: '(that|which) were [%Adj|Gerund%]', group: 0, tag: 'Gerund', reason: 'that-were-growing' }, - + // was dissapointing + // { match: '#Copula [%Adj|Gerund%]$', group: 0, tag: 'Adjective', reason: 'was-disappointing$' }, // repairing crubling roads { match: '#Gerund [#Gerund] #Plural', group: 0, tag: 'Adjective', reason: 'hard-working-fam' }, - // { match: '(that|which) were [%Adj|Gerund%]', group: 0, tag: 'Gerund', reason: 'that-were-growing' }, - ]; // ==== Passive voice === @@ -160153,7 +160624,7 @@ const byComma = function (doc) { if (m.growRight('. .').wordCount() === 1) { return false } - let more = m.grow("."); // grow by 1 word in either direction + let more = m.grow('.'); // grow by 1 word in either direction more = more.ifNo('@hasComma @hasComma'); //fun, cool... more = more.ifNo('@hasComma (and|or) .'); //cool, and fun more = more.ifNo('(#City && @hasComma) #Country'); //'toronto, canada' @@ -160213,13 +160684,18 @@ const clauses = function (n) { found = found.splitBefore('as (though|if)'); found = found.splitBefore('(til|until)'); + // it is cool but it is .. + let m = found.match('#Verb .* [but] .* #Verb', 0); + if (m.found) { + found = found.splitBefore(m); + } // it is cool and it is .. // let conjunctions = found.if('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction') // found = found.splitBefore(conjunctions) - // // if it is this then that - // let condition = found.if('if .{2,9} then .').match('then') - // found = found.splitBefore(condition) + // if it is this then that + let condition = found.if('if .{2,9} then .').match('then'); + found = found.splitBefore(condition); // // misc clause partitions // found = found.splitBefore('as well as .') @@ -160230,14 +160706,12 @@ const clauses = function (n) { // found = found.splitAfter('@hasSemicolon') // found = found.splitAfter('@hasDash') - // // + // // // found = found.splitBefore('which (were|are|will)') // // he said [...] // found = found.splitAfter('#Noun (said|say|says)') - - // passive voice verb - '.. which was robbed is empty' // let passive = found.match('#Noun (which|that) (was|is) #Adverb? #PastTense #Adverb?') // if (passive.found) { @@ -160643,7 +161117,9 @@ const hasClosed$1 = /\)/; const findEnd$1 = function (terms, i) { for (; i < terms.length; i += 1) { if (terms[i].post && hasClosed$1.test(terms[i].post)) { - return i + let [, index] = terms[i].index; + index = index || 0; + return index } } return null @@ -160677,7 +161153,6 @@ const strip$1 = function (m) { }; const api$g = function (View) { - class Parentheses extends View { constructor(document, pointer, groups) { super(document, pointer, groups); @@ -161293,7 +161768,7 @@ const api$b = function (View) { let opts = typeof n === 'object' ? n : {}; return this.getNth(n).map(m => { let json = m.toView().json(opts)[0] || {}; - if (opts && opts.noun !== true) { + if (opts && opts.noun !== false) { json.noun = toJSON$5(m); } return json @@ -162463,6 +162938,37 @@ const format$3 = function (obj, fmt) { }; var format$4 = format$3; +const isArray$3 = arr => Object.prototype.toString.call(arr) === '[object Array]'; + +// turn anything into {foo:true} format +const coerceToObject = function (input) { + if (typeof input === 'string' || typeof input === 'number') { + let tmp = {}; + tmp[input] = true; + return tmp + } + if (isArray$3(input)) { + return input.reduce((h, s) => { + h[s] = true; + return h + }, {}) + } + return input || {} +}; + +// only return values with the given unit +const isUnit$1 = function (doc, input = {}) { + input = coerceToObject(input); + return doc.filter(p => { + let { unit } = parse$5(p); + if (unit && input[unit] === true) { + return true + } + return false + }) +}; +var isUnit$2 = isUnit$1; + const addMethod$2 = function (View) { /** */ class Numbers extends View { @@ -162474,7 +162980,9 @@ const addMethod$2 = function (View) { return this.getNth(n).map(parse$5) } get(n) { - return this.getNth(n).map(parse$5).map(o => o.num) + return this.getNth(n) + .map(parse$5) + .map(o => o.num) } json(n) { let opts = typeof n === 'object' ? n : {}; @@ -162486,7 +162994,7 @@ const addMethod$2 = function (View) { num: parsed.num, suffix: parsed.suffix, hasComma: parsed.hasComma, - unit: parsed.unit + unit: parsed.unit, }; return json }, []) @@ -162495,6 +163003,10 @@ const addMethod$2 = function (View) { units() { return this.growRight('#Unit').match('#Unit$') } + /** return values that match a given unit */ + isUnit(allowed) { + return isUnit$2(this, allowed) + } /** return only ordinal numbers */ isOrdinal() { return this.if('#Ordinal') @@ -162522,7 +163034,7 @@ const addMethod$2 = function (View) { /** add commas, or nicer formatting for numbers */ toLocaleString() { let m = this; - m.forEach((val) => { + m.forEach(val => { let obj = parse$5(val); if (obj.num === null) { return @@ -162600,28 +163112,28 @@ const addMethod$2 = function (View) { /** return only numbers that are == n */ isEqual(n) { - return this.filter((val) => { + return this.filter(val => { let num = parse$5(val).num; return num === n }) } /** return only numbers that are > n*/ greaterThan(n) { - return this.filter((val) => { + return this.filter(val => { let num = parse$5(val).num; return num > n }) } /** return only numbers that are < n*/ lessThan(n) { - return this.filter((val) => { + return this.filter(val => { let num = parse$5(val).num; return num < n }) } /** return only numbers > min and < max */ between(min, max) { - return this.filter((val) => { + return this.filter(val => { let num = parse$5(val).num; return num > min && num < max }) @@ -162635,7 +163147,7 @@ const addMethod$2 = function (View) { n = parse$5(n).num; } let m = this; - let res = m.map((val) => { + let res = m.map(val => { let obj = parse$5(val); obj.num = n; if (obj.num === null) { @@ -162666,7 +163178,7 @@ const addMethod$2 = function (View) { n = parse$5(n).num; } let m = this; - let res = m.map((val) => { + let res = m.map(val => { let obj = parse$5(val); if (obj.num === null) { return val @@ -162739,6 +163251,16 @@ const api$a = function (View) { var numbers = { api: api$a, + + // add @greaterThan, @lessThan + mutate: world => { + let termMethods = world.methods.one.termMethods; + + termMethods.lessThan = function (term) { + console.log(term); + // return /[aeiou]/.test(term.text) + }; + }, }; const defaults$1 = { @@ -162881,10 +163403,18 @@ const mainClause = function (s) { return m } - m = m.ifNo('(despite|during|before|through|throughout)'); + // check for subordinating conjunctions -- must be at the beginning of the clause + m = m.ifNo('(^despite|^during|^before|^through|^throughout)'); + if (m.length === 1) { + return m + } + + // check for clauses beginning with Gerund ("Taking ..., ...") + m = m.ifNo('^#Gerund'); if (m.length === 1) { return m } + // did we go too far? if (m.length === 0) { m = s; @@ -165734,8 +166264,8 @@ w3.displayObject = function (id, data) { }; var name$4U = "dde4"; -var version$5 = "4.1.8"; -var release_date = "Jan 4, 2024"; +var version$5 = "4.1.9"; +var release_date = "Feb 19, 2024"; var description$1 = "test rollup"; var author$1 = "Fry"; var license$1 = "GPL-3.0"; @@ -165802,6 +166332,7 @@ var dependencies$4S = { "plotly.js-dist": "^2.5.1", process: "^0.11.10", pump: "^3.0.0", + pyodide: "^0.25.0", querystring: "^0.2.1", "read-chunk": "^4.0.2", readline: "^1.3.0", @@ -180409,10 +180940,10 @@ function Options$9(options, merge_child_field) { this.indent_empty_lines = this._get_boolean('indent_empty_lines'); - // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty'] - // For now, 'auto' = all off for javascript, all on for html (and inline javascript). + // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty', 'angular'] + // For now, 'auto' = all off for javascript, all except angular on for html (and inline javascript/css). // other values ignored - this.templating = this._get_selection_list('templating', ['auto', 'none', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']); + this.templating = this._get_selection_list('templating', ['auto', 'none', 'angular', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']); } Options$9.prototype._get_array = function(name, default_value) { @@ -181154,7 +181685,8 @@ var template_names = { erb: false, handlebars: false, php: false, - smarty: false + smarty: false, + angular: false }; // This lets templates appear anywhere we would do a readUntil @@ -184013,6 +184545,8 @@ var Pattern = pattern.Pattern; var TOKEN$1 = { TAG_OPEN: 'TK_TAG_OPEN', TAG_CLOSE: 'TK_TAG_CLOSE', + CONTROL_FLOW_OPEN: 'TK_CONTROL_FLOW_OPEN', + CONTROL_FLOW_CLOSE: 'TK_CONTROL_FLOW_CLOSE', ATTRIBUTE: 'TK_ATTRIBUTE', EQUALS: 'TK_EQUALS', VALUE: 'TK_VALUE', @@ -184037,11 +184571,13 @@ var Tokenizer$1 = function(input_string, options) { this.__patterns = { word: templatable_reader.until(/[\n\r\t <]/), + word_control_flow_close_excluded: templatable_reader.until(/[\n\r\t <}]/), single_quote: templatable_reader.until_after(/'/), double_quote: templatable_reader.until_after(/"/), attribute: templatable_reader.until(/[\n\r\t =>]|\/>/), element_name: templatable_reader.until(/[\n\r\t >\/]/), + angular_control_flow_start: pattern_reader.matching(/\@[a-zA-Z]+[^({]*[({]/), handlebars_comment: pattern_reader.starting_with(/{{!--/).until_after(/--}}/), handlebars: pattern_reader.starting_with(/{{/).until_after(/}}/), handlebars_open: pattern_reader.until(/[\n\r\t }]/), @@ -184055,6 +184591,7 @@ var Tokenizer$1 = function(input_string, options) { if (this._options.indent_handlebars) { this.__patterns.word = this.__patterns.word.exclude('handlebars'); + this.__patterns.word_control_flow_close_excluded = this.__patterns.word_control_flow_close_excluded.exclude('handlebars'); } this._unformatted_content_delimiter = null; @@ -184073,14 +184610,16 @@ Tokenizer$1.prototype._is_comment = function(current_token) { // jshint unused:f }; Tokenizer$1.prototype._is_opening = function(current_token) { - return current_token.type === TOKEN$1.TAG_OPEN; + return current_token.type === TOKEN$1.TAG_OPEN || current_token.type === TOKEN$1.CONTROL_FLOW_OPEN; }; Tokenizer$1.prototype._is_closing = function(current_token, open_token) { - return current_token.type === TOKEN$1.TAG_CLOSE && + return (current_token.type === TOKEN$1.TAG_CLOSE && (open_token && ( ((current_token.text === '>' || current_token.text === '/>') && open_token.text[0] === '<') || - (current_token.text === '}}' && open_token.text[0] === '{' && open_token.text[1] === '{'))); + (current_token.text === '}}' && open_token.text[0] === '{' && open_token.text[1] === '{'))) + ) || (current_token.type === TOKEN$1.CONTROL_FLOW_CLOSE && + (current_token.text === '}' && open_token.text.endsWith('{'))); }; Tokenizer$1.prototype._reset = function() { @@ -184099,8 +184638,9 @@ Tokenizer$1.prototype._get_next_token = function(previous_token, open_token) { / token = token || this._read_open_handlebars(c, open_token); token = token || this._read_attribute(c, previous_token, open_token); token = token || this._read_close(c, open_token); + token = token || this._read_control_flows(c, open_token); token = token || this._read_raw_content(c, previous_token, open_token); - token = token || this._read_content_word(c); + token = token || this._read_content_word(c, open_token); token = token || this._read_comment_or_cdata(c); token = token || this._read_processing(c); token = token || this._read_open(c, open_token); @@ -184165,7 +184705,7 @@ Tokenizer$1.prototype._read_processing = function(c) { // jshint unused:false Tokenizer$1.prototype._read_open = function(c, open_token) { var resulting_string = null; var token = null; - if (!open_token) { + if (!open_token || open_token.type === TOKEN$1.CONTROL_FLOW_OPEN) { if (c === '<') { resulting_string = this._input.next(); @@ -184182,7 +184722,7 @@ Tokenizer$1.prototype._read_open = function(c, open_token) { Tokenizer$1.prototype._read_open_handlebars = function(c, open_token) { var resulting_string = null; var token = null; - if (!open_token) { + if (!open_token || open_token.type === TOKEN$1.CONTROL_FLOW_OPEN) { if (this._options.indent_handlebars && c === '{' && this._input.peek(1) === '{') { if (this._input.peek(2) === '!') { resulting_string = this.__patterns.handlebars_comment.read(); @@ -184197,11 +184737,48 @@ Tokenizer$1.prototype._read_open_handlebars = function(c, open_token) { return token; }; +Tokenizer$1.prototype._read_control_flows = function(c, open_token) { + var resulting_string = ''; + var token = null; + // Only check for control flows if angular templating is set AND indenting is set + if (!this._options.templating.includes('angular') || !this._options.indent_handlebars) { + return token; + } + + if (c === '@') { + resulting_string = this.__patterns.angular_control_flow_start.read(); + if (resulting_string === '') { + return token; + } + + var opening_parentheses_count = resulting_string.endsWith('(') ? 1 : 0; + var closing_parentheses_count = 0; + // The opening brace of the control flow is where the number of opening and closing parentheses equal + // e.g. @if({value: true} !== null) { + while (!(resulting_string.endsWith('{') && opening_parentheses_count === closing_parentheses_count)) { + var next_char = this._input.next(); + if (next_char === null) { + break; + } else if (next_char === '(') { + opening_parentheses_count++; + } else if (next_char === ')') { + closing_parentheses_count++; + } + resulting_string += next_char; + } + token = this._create_token(TOKEN$1.CONTROL_FLOW_OPEN, resulting_string); + } else if (c === '}' && open_token && open_token.type === TOKEN$1.CONTROL_FLOW_OPEN) { + resulting_string = this._input.next(); + token = this._create_token(TOKEN$1.CONTROL_FLOW_CLOSE, resulting_string); + } + return token; +}; + Tokenizer$1.prototype._read_close = function(c, open_token) { var resulting_string = null; var token = null; - if (open_token) { + if (open_token && open_token.type === TOKEN$1.TAG_OPEN) { if (open_token.text[0] === '<' && (c === '>' || (c === '/' && this._input.peek(1) === '>'))) { resulting_string = this._input.next(); if (c === '/') { // for close tag "/>" @@ -184288,7 +184865,7 @@ Tokenizer$1.prototype._read_raw_content = function(c, previous_token, open_token return null; }; -Tokenizer$1.prototype._read_content_word = function(c) { +Tokenizer$1.prototype._read_content_word = function(c, open_token) { var resulting_string = ''; if (this._options.unformatted_content_delimiter) { if (c === this._options.unformatted_content_delimiter[0]) { @@ -184297,7 +184874,7 @@ Tokenizer$1.prototype._read_content_word = function(c) { } if (!resulting_string) { - resulting_string = this.__patterns.word.read(); + resulting_string = (open_token && open_token.type === TOKEN$1.CONTROL_FLOW_OPEN) ? this.__patterns.word_control_flow_close_excluded.read() : this.__patterns.word.read(); } if (resulting_string) { return this._create_token(TOKEN$1.TEXT, resulting_string); @@ -184397,6 +184974,13 @@ Printer.prototype.indent = function() { this.indent_level++; }; +Printer.prototype.deindent = function() { + if (this.indent_level > 0) { + this.indent_level--; + this._output.set_indent(this.indent_level, this.alignment_size); + } +}; + Printer.prototype.get_full_indent = function(level) { level = this.indent_level + (level || 0); if (level < 1) { @@ -184591,6 +185175,10 @@ Beautifier$1.prototype.beautify = function() { parser_token = this._handle_tag_close(printer, raw_token, last_tag_token); } else if (raw_token.type === TOKEN.TEXT) { parser_token = this._handle_text(printer, raw_token, last_tag_token); + } else if (raw_token.type === TOKEN.CONTROL_FLOW_OPEN) { + parser_token = this._handle_control_flow_open(printer, raw_token); + } else if (raw_token.type === TOKEN.CONTROL_FLOW_CLOSE) { + parser_token = this._handle_control_flow_close(printer, raw_token); } else { // This should never happen, but if it does. Print the raw token printer.add_raw_token(raw_token); @@ -184605,6 +185193,38 @@ Beautifier$1.prototype.beautify = function() { return sweet_code; }; +Beautifier$1.prototype._handle_control_flow_open = function(printer, raw_token) { + var parser_token = { + text: raw_token.text, + type: raw_token.type + }; + printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true); + if (raw_token.newlines) { + printer.print_preserved_newlines(raw_token); + } else { + printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true); + } + printer.print_token(raw_token); + printer.indent(); + return parser_token; +}; + +Beautifier$1.prototype._handle_control_flow_close = function(printer, raw_token) { + var parser_token = { + text: raw_token.text, + type: raw_token.type + }; + + printer.deindent(); + if (raw_token.newlines) { + printer.print_preserved_newlines(raw_token); + } else { + printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true); + } + printer.print_token(raw_token); + return parser_token; +}; + Beautifier$1.prototype._handle_tag_close = function(printer, raw_token, last_tag_token) { var parser_token = { text: raw_token.text, @@ -250643,6 +251263,19 @@ static reverse_string(s) { return o; } +static cut_off_quotes_maybe(str){ + if (str.length > 1){ + let last_index = str.length - 1; + if(((str[0] === '"') && (str[last_index] === '"')) || + ((str[0] === "'") && (str[last_index] === "'")) || + ((str[0] === "`") && (str[last_index] === "`"))) { + return str.substring(1, last_index) + } + else { return str } + } + else { return str } +} + static insert_string(base_string, insert_string, position=0){ if(position > base_string.length) { position = base_string.length; @@ -253860,10 +254493,27 @@ function cosd(theta){ } +function tand(theta){ + if((theta+90)%180 == 0){ + return theta*Infinity + } + return Math.tan(theta*Math.PI/180) +} + +function asind(ratio){ + return Math.asin(ratio)*180/Math.PI +} + + function acosd(ratio){ return Math.acos(ratio)*180/Math.PI } + +function atand$1(ratio){ + return Math.atan(ratio)*180/Math.PI +} + function atan2d(num1, num2){ return Math.atan2(num1, num2)*180/Math.PI } @@ -266908,7 +267558,7 @@ class Job$1{ program_counter=0, ending_program_counter="end", initial_instruction=null, - data_array_transformer= undefined, // was "P", butthat's too dangerous. Only make transforming available to a job if it explicitly indicates a transformer. + data_array_transformer= undefined, // was "P", but that's too dangerous. Only make transforming available to a job if it explicitly indicates a transformer. get_dexter_defaults = true, //if true, always get defaults from Defaults.makeins file or error //if false, always get idealized values from Dexter.defaults class. start_if_robot_busy=false, @@ -271390,8 +272040,20 @@ function make_ins$1(instruction_type, ...args){ }*/ let result = new Array(Instruction$1.INSTRUCTION_TYPE); result.push(instruction_type); - if (args.length === 0) { return result } //avoids generating the garbage that concat with an arg of an empty list would for this common case, ie for "g" ahd "h" instructions - else { return result.concat(args) } + //if (args.length === 0) { return result } //avoids generating the garbage that concat with an arg of an empty list would for this common case, ie for "g" and "h" instructions + //else { + //return result.concat(args) + for (let arg of args){ + if(typeof(arg) === "number") { result.push(arg); } + else if (arg === "") ; + else if (typeof(arg) === "string"){ //if we have an arg of "foo, 2", result will have an arg of "foo" and an arg of "2", ie the string of the diget 2, and that will NOT be converted from DDE to Dexter units, because its a string, not a number + let sub_args = arg.split(/[ ,]+/);//separator can be space, comma, or any combination of them + result.push(...sub_args); + } + else { result.push(arg); } //might be an instance of Dexter on the very end + } + return result + //} } globalThis.make_ins = make_ins$1; @@ -275399,7 +276061,7 @@ class Robot$1 { } else { return false } } - else { return true } + else { return !Utils.is_digit(oplet) } //ie its not a letter or puncutation, so probably a digit was when we have variable-length instructions, If so, return false } else { return false } } @@ -281599,7 +282261,7 @@ class Socket$1{ }; net_soc_inst.onmessage = function(event) { let msg = event.data; - console.log("Socket.js onmessage got msg: " + msg); + //console.log("Socket.js onmessage got msg: " + msg) Socket$1.on_receive(msg, undefined, rob); }; net_soc_inst.onclose = function(close_event){ @@ -281791,7 +282453,7 @@ class Socket$1{ return net_soc_inst.readyState === "open" } else { - console.log("in Socket.js readyState_is_open, readyState is: " + net_soc_inst.readyState); + //console.log("in Socket.js readyState_is_open, readyState is: " + net_soc_inst.readyState) return net_soc_inst.readyState === WebSocket.OPEN //WebSocket.OPEN is 1 } } @@ -281802,7 +282464,7 @@ class Socket$1{ net_soc_inst.write(arr_buff); //dde3 } else { //net_soc_inst should be a WebSocket - console.log("send_low_level to WebSocket sending str of: " + str); + //console.log("send_low_level to WebSocket sending str of: " + str) net_soc_inst.send(str); //was: str // WebSocket send cab take a JS string as its arg. } } @@ -282217,7 +282879,7 @@ class Socket$1{ let net_soc_inst = Socket$1.robot_name_to_soc_instance_map[robot_name]; if(net_soc_inst && this.readyState_is_open(net_soc_inst)) { try { - console.log("Socket.send about to send str: " + str, undefined, true); + //console.log("Socket.send about to send str: " + str, undefined, true) //net_soc_inst.write(arr_buff) //dde3 //net_soc_inst.send(str) //dde4 this.send_low_level(net_soc_inst, str); @@ -282231,7 +282893,7 @@ class Socket$1{ return } catch(err) { - console.log("Socket.send just after write in catch clause with err: " + err.message); + //console.log("Socket.send just after write in catch clause with err: " + err.message) if (rob.resend_count && (rob.resend_count >= 4)) { //give up retrying and error rob.resend_count = 0; job_instance.stop_for_reason("errored_from_dexter", "can't connect to Dexter"); @@ -282306,13 +282968,11 @@ class Socket$1{ let oplet = String.fromCharCode(opcode); this.on_receive_aux(data, robot_status, oplet, payload_string_maybe, dexter_instance); } - else if(typeof(data) === "string"){ - console.log("Socket.on_receive got data of a string: " + data); - } + else if(typeof(data) === "string"); else if (data instanceof Blob) {//dde4 what comes back from websocket //from https://javascript.info/blob // get arrayBuffer from blob - console.log("on_receive got blob of size: " + data.size); + //console.log("on_receive got blob of size: " + data.size) if(data.size === 0) { return } //just ignore this. maybe artifact of WebSockets let fileReader = new FileReader(); fileReader.onload = function(event) { @@ -282330,7 +282990,7 @@ class Socket$1{ } let oplet = robot_status[Dexter.INSTRUCTION_TYPE]; oplet = String.fromCharCode(oplet); - console.log("on_receive onload cb made rs: " + robot_status + " and got oplet; " + oplet); + //console.log("on_receive onload cb made rs: " + robot_status + " and got oplet; " + oplet) Socket$1.on_receive_aux(data, robot_status, oplet, payload_string_maybe, dexter_instance); } }; @@ -282783,7 +283443,15 @@ class DexterSim$1{ } static str_to_oplet_array(str) { - let split_str = str.split(" "); + if(str.endsWith(";")) { + str = str.substring(0, str.length - 1); //cut off the semicolon on the end + } + let split_str = str.split(/[ ,]+/);//separator can be space, comma, or any combination of them. use to be just: " ", but that's not what dexrun does + //if its a var length instruction, then an integer is in place of the oplet and the oplet is one later + let orig_oplet_maybe = split_str[Instruction.INSTRUCTION_TYPE]; + if(!Robot.is_oplet(orig_oplet_maybe)) { //assume its an integer for a variable-length instruction + split_str.splice(Instruction.INSTRUCTION_TYPE, 1); //removes integer from var length array. makign it 1 shorter + } let oplet_array = []; let oplet; for(let i = 0; i < split_str.length; i++) { @@ -283015,7 +283683,7 @@ class DexterSim$1{ break; default: let temp_str = "non_normal_oplet_" + oplet; //prevent this from being printed more than once between out pane clearnings - warning("In DexterSim.send, got instruction not normally processed: " + oplet, temp_str); + warning("In DexterSim.send, got instruction not normally processed: " + temp_str + " in instruction_array: " + instruction_array); ds_instance.ack_reply(instruction_array); break; } @@ -285317,8 +285985,19 @@ class DDEFile$1 { //used only in read_path_part where the initial path of the url is the file being looked at, //when you want to get just part of a file. So i guess the initial path must be absolute. - - static make_url(path, query=""){ + //needs to handle 3 cases: + //DDEFile.read_file_async(path) + // 0 getting files from user's hard drive file://documents/dde_apps/init.js + // BUT this would only work from read_file_aysnc and friends IF user had already OKED via dialg box the call + // so better not to use read_file_async for getting local files. + // 1 getting files from Dexter's server Dexter.dexter0://dde/examples/blur.js => http://192/edit?edit=dde/examples/blur.js + // From James N: When NO path is specified, /srv/samba/share should be assumed. If a path is specified, it should be considered "absolute" e.g. starting from root or /. + // 2 getting files from cfry.github.io (where DDE is served from host://dde/examples/blur.js, dde/examples/blur.js + // 3 getting files from localhost (when dde is served from the host://dde/examples/blur.js + // 4 any url github should handle this. if dde serverd from Dexter, will fail http://ibm.com/foo.html + // laptop running dde in browser) + + static make_url(path, query=""){ //example query: "/edit?info=" //if (adjust_to_os) { path = adjust_path_to_os(path) } let url; let colon_pos = path.indexOf(":"); @@ -285330,6 +286009,9 @@ class DDEFile$1 { } else { let [full_dex_name, extracted_path] = path.split(":"); + if(extracted_path.startsWith("//")){ + extracted_path = extracted_path.substring(2); + } let dex = Utils.value_of_path(full_dex_name); if(!dex) { dde_error("The path of: " + path + " is invalid because
" + @@ -285337,16 +286019,34 @@ class DDEFile$1 { "You need to define a Dexter instance with that name and
" + "an ip_address to use that path."); } - let ip_address = dex.ip_address; - extracted_path = this.add_default_file_prefix_maybe(extracted_path); + //dex should now be the dexter instance, typically the value of Dexter.dexter0 + let ip_address = dex.ip_address; //something like "192.168.1.142" + //extracted_path = this.add_default_file_prefix_maybe(extracted_path) + if(query === "") { + query = "/"; + } url = DDEFile$1.http_and_maybe_s + "://" + ip_address + query + extracted_path; } } else if(path.startsWith("host:")){ let [full_dex_name, extracted_path] = path.split(":"); - let ip_address = this.host(); //might return "localhost" + if(extracted_path.startsWith("//")) { + extracted_path = extracted_path.substring(2); //trim off the //. It will get added back later + } + this.host(); //might return "localhost" extracted_path = this.add_default_file_prefix_maybe(extracted_path); - url = DDEFile$1.http_and_maybe_s + "://" + ip_address + query + extracted_path; + let protocol_and_domain = window.origin; //either "http://localhost" or "https://cfry.github.io" + if(protocol_and_domain.endsWith("localhost")) { + //url = DDEFile.http_and_maybe_s + "://" + ip_address + query + extracted_path + url = protocol_and_domain + query + extracted_path; + } + else { // "https://cfry.github.io" + url = protocol_and_domain + "/dde4/" + extracted_path; //todo probably needs work + + } + } + else if (Utils.starts_with_one_of(path, ["http:", "https:"])){ + url = path; } else if (path.includes(":")) { if(query !== "") { @@ -285502,7 +286202,7 @@ class DDEFile$1 { let response = await fetch(full_url); //will error due to CORS if the host serving full_url doesn't pave a response header allowing CORS if (response.ok) { let content = await response.text(); - return this.callback_or_return(callback, content, path) + return this.callback_or_return(callback, content, url) } else { let err_mess = "get_page_async for: " + url + " failed.
" + err.message; return this.callback_or_error(callback, err_mess, path) @@ -288187,6 +288887,9 @@ MonitorServer.init() */ //see https://pyodide.org/en/stable/usage/api-reference.html +//import * as pyodide_load_obj from "pyodide"; +//globalThis.pyodide_load_obj = pyodide_load_obj + globalThis.Py = class Py { static status = "not_loaded" @@ -288199,24 +288902,63 @@ globalThis.Py = class Py { warning("Python is already initialized.
To re-initialize the Python environment, you must relaunch DDE."); } else if (Py.status == "not_loaded"){ - //await import("https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.js") - await import('https://cdn.jsdelivr.net/pyodide/v0.23.2/full/pyodide.js'); Py.status = "loading"; + //await import("https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.js") + //await import("https://cdn.jsdelivr.net/pyodide/v0.23.2/full/pyodide.js") + await import('https://cdn.jsdelivr.net/pyodide/v0.25.0/full/pyodide.js'); + //let pyodide_load_obj = await import("pyodide") //this dynamic fails due to not finding files in teh build folder, now using statuic import at top of file + globalThis.pyodide = await loadPyodide(); + //globalThis.pyodide = await pyodide_load_obj.loadPyodide() //error: GET http://localhost/dde/build/pyodide-lock.json 404 (Not Found) + //await pyodide.loadPackage("numpy"); doesn't error but doesn't bind "numpy" either + //await pyodide.loadPackage(["js"]) //errors as does loading "sys" Py.status = "loaded"; - out("Python initialized."); + //this.eval("import sys") + pyodide.runPython("import sys"); + pyodide.runPython("import js"); + await pyodide.loadPackage("numpy"); //needs to be loaded before its imported according to error messages. + + out("Python initialized to: " + pyodide._api.sys.version + "
" + + "with Pyodide version: " + pyodide.version); + //out("Python initialized with Pyodide version: " + pyodide_load_obj.version) + } else { shouldnt("Py.init() has invalid status: " + Py.status);} } + //this fn is a workaround for piodide discontinuing pyodide.isPyProxy in piodide 0.25.0 + //without even documenting this incompatiable chnage from piodide 0.23 + static is_py_proxy(obj){ + //return ((typeof(obj) === "object") && + // obj.toJs && + // obj.destroy) + return obj instanceof pyodide.ffi.PyProxy //officially sanctioned way to do it. + } + static eval(python_source_code) { if (this.status === "loaded") { let proxy_maybe = pyodide.runPython(python_source_code); - if (pyodide.isPyProxy(proxy_maybe)) { + if(proxy_maybe === undefined) { + return undefined + } + else if (this.is_py_proxy(proxy_maybe)) { //(pyodide.isPyProxy(proxy_maybe)) { let value = proxy_maybe.toJs(); - proxy_maybe.destroy(); //get rid of the memory + //proxy_maybe.destroy() //get rid of the memory return value - } else { + } + else if ((typeof(proxy_maybe) === "string") && proxy_maybe.startsWith("eval_in_js")){ + let js_src = proxy_maybe.substring(10); + try { + let value = eval(js_src); + return value + } + catch(err){ + dde_error("Attempt to eval:
" + proxy_maybe + + "
from python errored with:
" + + err.message); + } + } + else { return proxy_maybe } } @@ -289248,6 +289990,13 @@ globalThis.Espree = Espree$1; globalThis.js_beautify = js; const config = { }; globalThis.mathjs = create(all, config); +globalThis.sind = sind; +globalThis.cosd = cosd; +globalThis.tand = tand; +globalThis.asind = asind; +globalThis.acosd = acosd; +globalThis.atand = atand$1; //called in picture1.js +globalThis.atan2d = atan2d; //import "../job_engine/core/messaging.js"//defined global: Messaging todo dde4, this needs to be moved to the server. @@ -290733,10 +291482,53 @@ class Dex$1 { } static run(do_list_item){ + Dex$1.init(); Job.insert_instruction(do_list_item, {job: "DexJob", offset: "end"}); } + + //like Dex.run, but evals its arg and calls Dex.run on the result of the eval. + static source(do_list_item_source){ + Dex$1.init(); + let instr; + try { + instr = eval(do_list_item_source); + } + catch(err){ + dde_error("Dex.source passed " + do_list_item_source + "
" + + "which errored during eval with: " + err.message); + return + } + if(Instruction.is_do_list_item(instr)){ + Dex$1.run(instr); + } + else { + dde_error("Dex.source passed " + do_list_item_source + "
" + + "which did not eval to a valid do_list_item: " + instr); + return + } + } + + static cut_off_quotes_maybe(str){ + if (str.length > 1){ + let last_index = str.length - 1; + if(((str[0] === '"') && (str[last_index] === '"')) || + ((str[0] === "'") && (str[last_index] === "'")) || + ((str[0] === "`") && (str[last_index] === "`"))) { + return str.substring(1, last_index) + } + } + else { return str } + } + + //hmm, works ok but probably better to have users use the more general: + // Dex.source("Control.stop_job") + static stop_job(){ + if(Job.DexJob){ + Job.DexJob.stop_for_reason("interrupted", "Dex.stop_job called"); + } + } } globalThis.Dex = Dex$1; /* Example: @@ -293240,9 +294032,13 @@ function grab_text_for_eval_button(){ if(DocCode.previous_active_element && DocCode.previous_active_element.parentNode && DocCode.previous_active_element.parentNode.parentNode && - DocCode.previous_active_element.parentNode.parentNode.CodeMirror){ + //DocCode.previous_active_element.parentNode.parentNode.CodeMirror) + DocCode.previous_active_element.parentNode.parentNode.classList && + DocCode.previous_active_element.parentNode.parentNode.classList.contains("CodeMirror")){ src = Editor.get_javascript("auto"); //if sel in editor, get it, else get whole editor src_comes_from_editor = true; + Editor.myCodeMirror.focus(); //so that if I click on the Eval button AGAIN, + //without clicking on the Editor pane, it will still get the editor pane's src } else if (DocCode.selected_text_when_eval_button_clicked.length > 0) { src = DocCode.selected_text_when_eval_button_clicked; @@ -293838,7 +294634,6 @@ globalThis.BrowserFile = class BrowserFile{ alert('Please select the "' + dir_path + '" folder.'); } dir_handle = await window.showDirectoryPicker({mode: "readwrite", startIn: "documents"}); - out("the handle: " + dir_handle); if (!dir_handle) { return } //user canceled @@ -293894,7 +294689,6 @@ globalThis.BrowserFile = class BrowserFile{ alert('Please select the "' + dir_path + '" folder.'); } dir_handle = await window.showDirectoryPicker({mode: "readwrite", startIn: "documents"}); - out("the handle: " + dir_handle); if (!dir_handle) { return } //user canceled @@ -294122,7 +294916,6 @@ globalThis.BrowserFile = class BrowserFile{ return } let dir_handle = await window.showDirectoryPicker({mode: "readwrite", startIn: "documents"}); - out("the handle: " + dir_handle); if (!dir_handle) { ////user canceled, do nothing return } @@ -295561,7 +296354,10 @@ Clear its content? Editor$1.after_successful_open(path); file_name_id.title = path; if(path.endsWith(".py")) { - set_css_properties('.CodeMirror { background:#FAFFFA;}'); + set_css_properties('.CodeMirror { background:#F8FFF8;}'); + if(Py.status === "not_loaded"){ + Py.init(); + } } else { set_css_properties('.CodeMirror { background:#FFFFFF;}'); @@ -356913,21 +357709,38 @@ class DDEVideo$1 { DocCode.open_doc(make_instruction_pane_doc_id); content_is_good = true; } - else if (content === "Haddington Website"){ //Will work for https:// ... - content = "