UNPKG

capsule-lint

Version:
7 lines 61.1 kB
(function(q,R){typeof exports=="object"&&typeof module<"u"?R(exports):typeof define=="function"&&define.amd?define(["exports"],R):(q=typeof globalThis<"u"?globalThis:q||self,R(q.CapsuleLint={}))})(this,function(q){"use strict";var os=Object.defineProperty;var cs=(q,R,B)=>R in q?os(q,R,{enumerable:!0,configurable:!0,writable:!0,value:B}):q[R]=B;var E=(q,R,B)=>(cs(q,typeof R!="symbol"?R+"":R,B),B);var R={},B={};Object.defineProperty(B,"__esModule",{value:!0});class na{constructor(){this._listeners={},this._mapCdataTags=this.makeMap("script,style"),this._arrBlocks=[],this.lastEvent=null}makeMap(l){const s={},i=l.split(",");for(let t=0;t<i.length;t++)s[i[t]]=!0;return s}parse(l){const s=this._mapCdataTags,i=/<(?:\/([^\s>]+)\s*|!--([\s\S]*?)--|!([^>]*?)|([\w\-:]+)((?:\s+[^\s"'>\/=\x00-\x0F\x7F\x80-\x9F]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s"'>]*))?)*?)\s*(\/?))>/g,t=/\s*([^\s"'>\/=\x00-\x0F\x7F\x80-\x9F]+)(?:\s*=\s*(?:(")([^"]*)"|(')([^']*)'|([^\s"'>]*)))?/g,o=/\r?\n/g;let e,u,d=0,p,v,A=null,x,_=[],C=0,L,P=0,M=1;const Z=this._arrBlocks;this.fire("start",{pos:0,line:1,col:1});const I=()=>{const k=v.find(N=>N.name==="type")||{value:""};return s[p]&&k.value.indexOf("text/ng-template")===-1},S=(k,N,F,D)=>{const z=F-P+1;for(D===void 0&&(D={}),D.raw=N,D.pos=F,D.line=M,D.col=z,Z.push(D),this.fire(k,D);o.exec(N);)M++,P=F+o.lastIndex};for(;e=i.exec(l);){if(u=e.index,u>d&&(L=l.substring(d,u),A?_.push(L):S("text",L,d)),d=i.lastIndex,(p=e[1])&&(A&&p===A&&(L=_.join(""),S("cdata",L,C,{tagName:A,attrs:x}),A=null,x=void 0,_=[]),!A)){S("tagend",e[0],u,{tagName:p});continue}if(A)_.push(e[0]);else if(p=e[4]){v=[];const k=e[5];let N,F=0;for(;N=t.exec(k);){const D=N[1],z=N[2]?N[2]:N[4]?N[4]:"",Q=N[3]?N[3]:N[5]?N[5]:N[6]?N[6]:"";v.push({name:D,value:Q,quote:z,index:N.index,raw:N[0]}),F+=N[0].length}F===k.length?(S("tagstart",e[0],u,{tagName:p,attrs:v,close:e[6]}),I()&&(A=p,x=v.concat(),_=[],C=d)):S("text",e[0],u)}else(e[2]||e[3])&&S("comment",e[0],u,{content:e[2]||e[3],long:!!e[2]})}l.length>d&&(L=l.substring(d,l.length),S("text",L,d)),this.fire("end",{pos:d,line:M,col:l.length-P+1})}addListener(l,s){const i=this._listeners,t=l.split(/[,\s]/);let o;for(let e=0,u=t.length;e<u;e++)o=t[e],i[o]===void 0&&(i[o]=[]),i[o].push(s)}fire(l,s){s===void 0&&(s={}),s.type=l;let i=[];const t=this._listeners[l],o=this._listeners.all;t!==void 0&&(i=i.concat(t)),o!==void 0&&(i=i.concat(o));const e=this.lastEvent;e!==null&&(delete e.lastEvent,s.lastEvent=e),this.lastEvent=s;for(let u=0,d=i.length;u<d;u++)i[u].call(this,s)}removeListener(l,s){const i=this._listeners[l];if(i!==void 0){for(let t=0,o=i.length;t<o;t++)if(i[t]===s){i.splice(t,1);break}}}fixPos(l,s){const t=l.raw.substr(0,s).split(/\r?\n/),o=t.length-1;let e=l.line,u;return o>0?(e+=o,u=t[o].length+1):u=l.col+s,{line:e,col:u}}getMapAttrs(l){const s={};let i;for(let t=0,o=l.length;t<o;t++)i=l[t],s[i.name]=i.value;return s}}B.default=na;var ve={};Object.defineProperty(ve,"__esModule",{value:!0});class la{constructor(l,s){this.html=l,this.lines=l.split(/\r?\n/);const i=/\r?\n/.exec(l);this.brLen=i!==null?i[0].length:0,this.ruleset=s,this.messages=[]}info(l,s,i,t,o){this.report("info",l,s,i,t,o)}warn(l,s,i,t,o){this.report("warning",l,s,i,t,o)}error(l,s,i,t,o){this.report("error",l,s,i,t,o)}report(l,s,i,t,o,e){const u=this.lines,d=this.brLen;let p="",v=0;for(let A=i-1,x=u.length;A<x&&(p=u[A],v=p.length,t>v&&i<x);A++)i++,t-=v,t!==1&&(t-=d);this.messages.push({type:l,message:s,raw:e,evidence:p,line:i,col:t,rule:{id:o.id,description:o.description,link:`https://htmlhint.com/docs/user-guide/rules/${o.id}`}})}}ve.default=la;var ht={},we={};Object.defineProperty(we,"__esModule",{value:!0}),we.default={id:"alt-require",description:"The alt attribute of an <img> element must be present and alt attribute of area[href] and input[type=image] must have a value.",init(f,l){f.addListener("tagstart",s=>{const i=s.tagName.toLowerCase(),t=f.getMapAttrs(s.attrs),o=s.col+i.length+1;let e;i==="img"&&!("alt"in t)?l.warn("An alt attribute must be present on <img> elements.",s.line,o,this,s.raw):(i==="area"&&"href"in t||i==="input"&&t.type==="image")&&(!("alt"in t)||t.alt==="")&&(e=i==="area"?"area[href]":"input[type=image]",l.warn(`The alt attribute of ${e} must have a value.`,s.line,o,this,s.raw))})}};var _e={};Object.defineProperty(_e,"__esModule",{value:!0});const oa=["allowReorder","attributeName","attributeType","autoReverse","baseFrequency","baseProfile","calcMode","clipPath","clipPathUnits","contentScriptType","contentStyleType","diffuseConstant","edgeMode","externalResourcesRequired","filterRes","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","onBlur","onChange","onClick","onFocus","onKeyUp","onLoad","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"];function ca(f,l){if(l instanceof RegExp)return l.test(f)?{match:f,pattern:l}:!1;const s=l[0],i=l[l.length-1],t=l[l.length-2],o=s==="/"&&(i==="/"||t==="/"&&i==="i"),e=o&&i==="i";return o?e?new RegExp(l.slice(1,-2),"i").test(f):new RegExp(l.slice(1,-1)).test(f):f===l}_e.default={id:"attr-lowercase",description:"All attribute names must be in lowercase.",init(f,l,s){const i=(Array.isArray(s)?s:[]).concat(oa);f.addListener("tagstart",t=>{const o=t.attrs;let e;const u=t.col+t.tagName.length+1;for(let d=0,p=o.length;d<p;d++){e=o[d];const v=e.name;!i.find(A=>ca(v,A))&&v!==v.toLowerCase()&&l.error(`The attribute name of [ ${v} ] must be in lowercase.`,t.line,u+e.index,this,e.raw)}})}};var Ae={};Object.defineProperty(Ae,"__esModule",{value:!0}),Ae.default={id:"attr-sorted",description:"Attribute tags must be in proper order.",init(f,l){const s={},i=["class","id","name","src","for","type","href","value","title","alt","role"];for(let t=0;t<i.length;t++)s[i[t]]=t;f.addListener("tagstart",t=>{const o=t.attrs,e=[];for(let d=0;d<o.length;d++)e.push(o[d].name);const u=JSON.stringify(e);e.sort((d,p)=>s[d]==null&&s[p]==null?0:s[d]==null?1:s[p]==null?-1:s[d]-s[p]||d.localeCompare(p)),u!==JSON.stringify(e)&&l.error(`Inaccurate order ${u} should be in hierarchy ${JSON.stringify(e)} `,t.line,t.col,this,t.raw)})}};var Te={};Object.defineProperty(Te,"__esModule",{value:!0}),Te.default={id:"attr-no-duplication",description:"Elements cannot have duplicate attributes.",init(f,l){f.addListener("tagstart",s=>{const i=s.attrs;let t,o;const e=s.col+s.tagName.length+1,u={};for(let d=0,p=i.length;d<p;d++)t=i[d],o=t.name,u[o]===!0&&l.error(`Duplicate of attribute name [ ${t.name} ] was found.`,s.line,e+t.index,this,t.raw),u[o]=!0})}};var Ce={};Object.defineProperty(Ce,"__esModule",{value:!0}),Ce.default={id:"attr-unsafe-chars",description:"Attribute values cannot contain unsafe chars.",init(f,l){f.addListener("tagstart",s=>{const i=s.attrs;let t;const o=s.col+s.tagName.length+1,e=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/;let u;for(let d=0,p=i.length;d<p;d++)if(t=i[d],u=e.exec(t.value),u!==null){const v=escape(u[0]).replace(/%u/,"\\u").replace(/%/,"\\x");l.warn(`The value of attribute [ ${t.name} ] cannot contain an unsafe char [ ${v} ].`,s.line,o+t.index,this,t.raw)}})}};var Le={};Object.defineProperty(Le,"__esModule",{value:!0}),Le.default={id:"attr-value-double-quotes",description:"Attribute values must be in double quotes.",init(f,l){f.addListener("tagstart",s=>{const i=s.attrs;let t;const o=s.col+s.tagName.length+1;for(let e=0,u=i.length;e<u;e++)t=i[e],(t.value!==""&&t.quote!=='"'||t.value===""&&t.quote==="'")&&l.error(`The value of attribute [ ${t.name} ] must be in double quotes.`,s.line,o+t.index,this,t.raw)})}};var xe={};Object.defineProperty(xe,"__esModule",{value:!0}),xe.default={id:"attr-value-not-empty",description:"All attributes must have values.",init(f,l){f.addListener("tagstart",s=>{const i=s.attrs;let t;const o=s.col+s.tagName.length+1;for(let e=0,u=i.length;e<u;e++)t=i[e],t.quote===""&&t.value===""&&l.warn(`The attribute [ ${t.name} ] must have a value.`,s.line,o+t.index,this,t.raw)})}};var Ne={};Object.defineProperty(Ne,"__esModule",{value:!0}),Ne.default={id:"attr-value-single-quotes",description:"Attribute values must be in single quotes.",init(f,l){f.addListener("tagstart",s=>{const i=s.attrs;let t;const o=s.col+s.tagName.length+1;for(let e=0,u=i.length;e<u;e++)t=i[e],(t.value!==""&&t.quote!=="'"||t.value===""&&t.quote==='"')&&l.error(`The value of attribute [ ${t.name} ] must be in single quotes.`,s.line,o+t.index,this,t.raw)})}};var Oe={};Object.defineProperty(Oe,"__esModule",{value:!0}),Oe.default={id:"attr-whitespace",description:"All attributes should be separated by only one space and not have leading/trailing whitespace.",init(f,l,s){const i=Array.isArray(s)?s:[];f.addListener("tagstart",t=>{const o=t.attrs;let e;const u=t.col+t.tagName.length+1;o.forEach(d=>{e=d;const p=d.name;i.indexOf(p)===-1&&(d.value.trim()!==d.value&&l.error(`The attributes of [ ${p} ] must not have leading or trailing whitespace.`,t.line,u+e.index,this,e.raw),d.value.replace(/ +(?= )/g,"")!==d.value&&l.error(`The attributes of [ ${p} ] must be separated by only one space.`,t.line,u+e.index,this,e.raw))})})}};var je={};Object.defineProperty(je,"__esModule",{value:!0}),je.default={id:"doctype-first",description:"Doctype must be declared first.",init(f,l){const s=i=>{i.type==="start"||i.type==="text"&&/^\s*$/.test(i.raw)||((i.type!=="comment"&&i.long===!1||/^DOCTYPE\s+/i.test(i.content)===!1)&&l.error("Doctype must be declared first.",i.line,i.col,this,i.raw),f.removeListener("all",s))};f.addListener("all",s)}};var Pe={};Object.defineProperty(Pe,"__esModule",{value:!0}),Pe.default={id:"doctype-html5",description:'Invalid doctype. Use: "<!DOCTYPE html>"',init(f,l){const s=t=>{t.long===!1&&t.content.toLowerCase()!=="doctype html"&&l.warn('Invalid doctype. Use: "<!DOCTYPE html>"',t.line,t.col,this,t.raw)},i=()=>{f.removeListener("comment",s),f.removeListener("tagstart",i)};f.addListener("all",s),f.addListener("tagstart",i)}};var Ee={};Object.defineProperty(Ee,"__esModule",{value:!0}),Ee.default={id:"head-script-disabled",description:"The <script> tag cannot be used in a <head> tag.",init(f,l){const s=/^(text\/javascript|application\/javascript)$/i;let i=!1;const t=e=>{const d=f.getMapAttrs(e.attrs).type,p=e.tagName.toLowerCase();p==="head"&&(i=!0),i===!0&&p==="script"&&(!d||s.test(d)===!0)&&l.warn("The <script> tag cannot be used in a <head> tag.",e.line,e.col,this,e.raw)},o=e=>{e.tagName.toLowerCase()==="head"&&(f.removeListener("tagstart",t),f.removeListener("tagend",o))};f.addListener("tagstart",t),f.addListener("tagend",o)}};var Me={};Object.defineProperty(Me,"__esModule",{value:!0}),Me.default={id:"href-abs-or-rel",description:"An href attribute must be either absolute or relative.",init(f,l,s){const i=s==="abs"?"absolute":"relative";f.addListener("tagstart",t=>{const o=t.attrs;let e;const u=t.col+t.tagName.length+1;for(let d=0,p=o.length;d<p;d++)if(e=o[d],e.name==="href"){(i==="absolute"&&/^\w+?:/.test(e.value)===!1||i==="relative"&&/^https?:\/\//.test(e.value)===!0)&&l.warn(`The value of the href attribute [ ${e.value} ] must be ${i}.`,t.line,u+e.index,this,e.raw);break}})}};var ke={};Object.defineProperty(ke,"__esModule",{value:!0});const fa="(?<grandfathered>(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang))",ua="(?<privateUse>x(-[A-Za-z0-9]{1,8})+)",da="(?<privateUse2>x(-[A-Za-z0-9]{1,8})+)",ga=`((?<language>([A-Za-z]{2,3}(-(?<extlang>[A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-(?<script>[A-Za-z]{4}))?(-(?<region>[A-Za-z]{2}|[0-9]{3}))?(-(?<variant>[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-(?<extension>[0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-${ua})?)`,ha=`(${fa}|${ga}|${da})`;ke.default={id:"html-lang-require",description:"The lang attribute of an <html> element must be present and should be valid.",init(f,l){f.addListener("tagstart",s=>{const i=s.tagName.toLowerCase(),t=f.getMapAttrs(s.attrs),o=s.col+i.length+1,e=new RegExp(ha,"g");i==="html"&&("lang"in t?t.lang?e.test(t.lang)||l.warn("The lang attribute value of <html> element must be a valid BCP47.",s.line,o,this,s.raw):l.warn("The lang attribute of <html> element must have a value.",s.line,o,this,s.raw):l.warn("An lang attribute must be present on <html> elements.",s.line,o,this,s.raw))})}};var Se={};Object.defineProperty(Se,"__esModule",{value:!0}),Se.default={id:"id-class-ad-disabled",description:"The id and class attributes cannot use the ad keyword, it will be blocked by adblock software.",init(f,l){f.addListener("tagstart",s=>{const i=s.attrs;let t,o;const e=s.col+s.tagName.length+1;for(let u=0,d=i.length;u<d;u++)t=i[u],o=t.name,/^(id|class)$/i.test(o)&&/(^|[-_])ad([-_]|$)/i.test(t.value)&&l.warn(`The value of attribute ${o} cannot use the ad keyword.`,s.line,e+t.index,this,t.raw)})}};var qe={};Object.defineProperty(qe,"__esModule",{value:!0}),qe.default={id:"id-class-value",description:"The id and class attribute values must meet the specified rules.",init(f,l,s){const i={underline:{regId:/^[a-z\d]+(_[a-z\d]+)*$/,message:"The id and class attribute values must be in lowercase and split by an underscore."},dash:{regId:/^[a-z\d]+(-[a-z\d]+)*$/,message:"The id and class attribute values must be in lowercase and split by a dash."},hump:{regId:/^[a-z][a-zA-Z\d]*([A-Z][a-zA-Z\d]*)*$/,message:"The id and class attribute values must meet the camelCase style."}};let t;if(typeof s=="string"?t=i[s]:t=s,typeof t=="object"&&t.regId){let o=t.regId;const e=t.message;o instanceof RegExp||(o=new RegExp(o)),f.addListener("tagstart",u=>{const d=u.attrs;let p;const v=u.col+u.tagName.length+1;for(let A=0,x=d.length;A<x;A++)if(p=d[A],p.name.toLowerCase()==="id"&&o.test(p.value)===!1&&l.warn(e,u.line,v+p.index,this,p.raw),p.name.toLowerCase()==="class"){const _=p.value.split(/\s+/g);let C;for(let L=0,P=_.length;L<P;L++)C=_[L],C&&o.test(C)===!1&&l.warn(e,u.line,v+p.index,this,C)}})}}};var Re={};Object.defineProperty(Re,"__esModule",{value:!0}),Re.default={id:"id-unique",description:"The value of id attributes must be unique.",init(f,l){const s={};f.addListener("tagstart",i=>{const t=i.attrs;let o,e;const u=i.col+i.tagName.length+1;for(let d=0,p=t.length;d<p;d++)if(o=t[d],o.name.toLowerCase()==="id"){e=o.value,e&&(s[e]===void 0?s[e]=1:s[e]++,s[e]>1&&l.error(`The id value [ ${e} ] must be unique.`,i.line,u+o.index,this,o.raw));break}})}};var De={};Object.defineProperty(De,"__esModule",{value:!0}),De.default={id:"inline-script-disabled",description:"Inline script cannot be used.",init(f,l){f.addListener("tagstart",s=>{const i=s.attrs;let t;const o=s.col+s.tagName.length+1;let e;const u=/^on(unload|message|submit|select|scroll|resize|mouseover|mouseout|mousemove|mouseleave|mouseenter|mousedown|load|keyup|keypress|keydown|focus|dblclick|click|change|blur|error)$/i;for(let d=0,p=i.length;d<p;d++)t=i[d],e=t.name.toLowerCase(),u.test(e)===!0?l.warn(`Inline script [ ${t.raw} ] cannot be used.`,s.line,o+t.index,this,t.raw):(e==="src"||e==="href")&&/^\s*javascript:/i.test(t.value)&&l.warn(`Inline script [ ${t.raw} ] cannot be used.`,s.line,o+t.index,this,t.raw)})}};var Ie={};Object.defineProperty(Ie,"__esModule",{value:!0}),Ie.default={id:"inline-style-disabled",description:"Inline style cannot be used.",init(f,l){f.addListener("tagstart",s=>{const i=s.attrs;let t;const o=s.col+s.tagName.length+1;for(let e=0,u=i.length;e<u;e++)t=i[e],t.name.toLowerCase()==="style"&&l.warn(`Inline style [ ${t.raw} ] cannot be used.`,s.line,o+t.index,this,t.raw)})}};var Fe={};Object.defineProperty(Fe,"__esModule",{value:!0}),Fe.default={id:"input-requires-label",description:"All [ input ] tags must have a corresponding [ label ] tag. ",init(f,l){const s=[],i=[];f.addListener("tagstart",o=>{const e=o.tagName.toLowerCase(),u=f.getMapAttrs(o.attrs),d=o.col+e.length+1;e==="input"&&u.type!=="hidden"&&i.push({event:o,col:d,id:u.id}),e==="label"&&"for"in u&&u.for!==""&&s.push({event:o,col:d,forValue:u.for})}),f.addListener("end",()=>{i.forEach(o=>{t(o)||l.warn("No matching [ label ] tag found.",o.event.line,o.col,this,o.event.raw)})});function t(o){let e=!1;return s.forEach(u=>{o.id&&o.id===u.forValue&&(e=!0)}),e}}};var ze={};Object.defineProperty(ze,"__esModule",{value:!0}),ze.default={id:"script-disabled",description:"The <script> tag cannot be used.",init(f,l){f.addListener("tagstart",s=>{s.tagName.toLowerCase()==="script"&&l.error("The <script> tag cannot be used.",s.line,s.col,this,s.raw)})}};var Ue={};Object.defineProperty(Ue,"__esModule",{value:!0}),Ue.default={id:"space-tab-mixed-disabled",description:"Do not mix tabs and spaces for indentation.",init(f,l,s){let i="nomix",t=null;if(typeof s=="string"){const o=/^([a-z]+)(\d+)?/.exec(s);o&&(i=o[1],t=o[2]&&parseInt(o[2],10))}f.addListener("text",o=>{const e=o.raw,u=/(^|\r?\n)([ \t]+)/g;let d;for(;d=u.exec(e);){const p=f.fixPos(o,d.index+d[1].length);if(p.col!==1)continue;const v=d[2];i==="space"?t?(/^ +$/.test(v)===!1||v.length%t!==0)&&l.warn(`Please use space for indentation and keep ${t} length.`,p.line,1,this,o.raw):/^ +$/.test(v)===!1&&l.warn("Please use space for indentation.",p.line,1,this,o.raw):i==="tab"&&/^\t+$/.test(v)===!1?l.warn("Please use tab for indentation.",p.line,1,this,o.raw):/ +\t|\t+ /.test(v)===!0&&l.warn("Do not mix tabs and spaces for indentation.",p.line,1,this,o.raw)}})}};var He={};Object.defineProperty(He,"__esModule",{value:!0}),He.default={id:"spec-char-escape",description:"Special characters must be escaped.",init(f,l){f.addListener("text",s=>{const i=s.raw,t=/([<>])|( \& )/g;let o;for(;o=t.exec(i);){const e=f.fixPos(s,o.index);l.error(`Special characters must be escaped : [ ${o[0]} ].`,e.line,e.col,this,s.raw)}})}};var Be={};Object.defineProperty(Be,"__esModule",{value:!0}),Be.default={id:"src-not-empty",description:"The src attribute of an img(script,link) must have a value.",init(f,l){f.addListener("tagstart",s=>{const i=s.tagName,t=s.attrs;let o;const e=s.col+i.length+1;for(let u=0,d=t.length;u<d;u++)o=t[u],(/^(img|script|embed|bgsound|iframe)$/.test(i)===!0&&o.name==="src"||i==="link"&&o.name==="href"||i==="object"&&o.name==="data")&&o.value===""&&l.error(`The attribute [ ${o.name} ] of the tag [ ${i} ] must have a value.`,s.line,e+o.index,this,o.raw)})}};var Ze={};Object.defineProperty(Ze,"__esModule",{value:!0}),Ze.default={id:"style-disabled",description:"<style> tags cannot be used.",init(f,l){f.addListener("tagstart",s=>{s.tagName.toLowerCase()==="style"&&l.warn("The <style> tag cannot be used.",s.line,s.col,this,s.raw)})}};var Ve={};Object.defineProperty(Ve,"__esModule",{value:!0}),Ve.default={id:"tag-pair",description:"Tag must be paired.",init(f,l){const s=[],i=f.makeMap("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,track,command,source,keygen,wbr");f.addListener("tagstart",t=>{const o=t.tagName.toLowerCase();i[o]===void 0&&!t.close&&s.push({tagName:o,line:t.line,raw:t.raw})}),f.addListener("tagend",t=>{const o=t.tagName.toLowerCase();let e;for(e=s.length-1;e>=0&&s[e].tagName!==o;e--);if(e>=0){const u=[];for(let d=s.length-1;d>e;d--)u.push(`</${s[d].tagName}>`);if(u.length>0){const d=s[s.length-1];l.error(`Tag must be paired, missing: [ ${u.join("")} ], start tag match failed [ ${d.raw} ] on line ${d.line}.`,t.line,t.col,this,t.raw)}s.length=e}else l.error(`Tag must be paired, no start tag: [ ${t.raw} ]`,t.line,t.col,this,t.raw)}),f.addListener("end",t=>{const o=[];for(let e=s.length-1;e>=0;e--)o.push(`</${s[e].tagName}>`);if(o.length>0){const e=s[s.length-1];l.error(`Tag must be paired, missing: [ ${o.join("")} ], open tag match failed [ ${e.raw} ] on line ${e.line}.`,t.line,t.col,this,"")}})}};var We={};Object.defineProperty(We,"__esModule",{value:!0}),We.default={id:"tag-self-close",description:"Empty tags must be self closed.",init(f,l){const s=f.makeMap("area,base,basefont,bgsound,br,col,frame,hr,img,input,isindex,link,meta,param,embed,track,command,source,keygen,wbr");f.addListener("tagstart",i=>{const t=i.tagName.toLowerCase();s[t]!==void 0&&(i.close||l.warn(`The empty tag : [ ${t} ] must be self closed.`,i.line,i.col,this,i.raw))})}};var Ye={};Object.defineProperty(Ye,"__esModule",{value:!0}),Ye.default={id:"empty-tag-not-self-closed",description:"Empty tags must not use self closed syntax.",init(f,l){const s=f.makeMap("area,base,basefont,bgsound,br,col,frame,hr,img,input,isindex,link,meta,param,embed,track,command,source,keygen,wbr");f.addListener("tagstart",i=>{const t=i.tagName.toLowerCase();s[t]!==void 0&&i.close&&l.error(`The empty tag : [ ${t} ] must not use self closed syntax.`,i.line,i.col,this,i.raw)})}};var Qe={};Object.defineProperty(Qe,"__esModule",{value:!0}),Qe.default={id:"tagname-lowercase",description:"All html element names must be in lowercase.",init(f,l,s){const i=Array.isArray(s)?s:[];f.addListener("tagstart,tagend",t=>{const o=t.tagName;i.indexOf(o)===-1&&o!==o.toLowerCase()&&l.error(`The html element name of [ ${o} ] must be in lowercase.`,t.line,t.col,this,t.raw)})}};var Ge={};Object.defineProperty(Ge,"__esModule",{value:!0}),Ge.default={id:"tagname-specialchars",description:"All special characters must be escaped.",init(f,l){const s=/[^a-zA-Z0-9\-:_]/;f.addListener("tagstart,tagend",i=>{const t=i.tagName;s.test(t)&&l.error(`The html element name of [ ${t} ] contains special character.`,i.line,i.col,this,i.raw)})}};var Je={};Object.defineProperty(Je,"__esModule",{value:!0}),Je.default={id:"title-require",description:"<title> must be present in <head> tag.",init(f,l){let s=!1,i=!1;const t=e=>{const u=e.tagName.toLowerCase();u==="head"?s=!0:u==="title"&&s&&(i=!0)},o=e=>{const u=e.tagName.toLowerCase();if(i&&u==="title"){const d=e.lastEvent;(d.type!=="text"||d.type==="text"&&/^\s*$/.test(d.raw)===!0)&&l.error("<title></title> must not be empty.",e.line,e.col,this,e.raw)}else u==="head"&&(i===!1&&l.error("<title> must be present in <head> tag.",e.line,e.col,this,e.raw),f.removeListener("tagstart",t),f.removeListener("tagend",o))};f.addListener("tagstart",t),f.addListener("tagend",o)}};var Xe={};Object.defineProperty(Xe,"__esModule",{value:!0});let fe={a:{selfclosing:!1,attrsRequired:["href","title"],redundantAttrs:["alt"]},div:{selfclosing:!1},main:{selfclosing:!1,redundantAttrs:["role"]},nav:{selfclosing:!1,redundantAttrs:["role"]},script:{attrsOptional:[["async","async"],["defer","defer"]]},img:{selfclosing:!0,attrsRequired:["src","alt","title"]}};Xe.default={id:"tags-check",description:"Checks html tags.",init(f,l,s){fe=Object.assign(Object.assign({},fe),s),f.addListener("tagstart",i=>{const t=i.attrs,o=i.col+i.tagName.length+1,e=i.tagName.toLowerCase();if(fe[e]){const u=fe[e];u.selfclosing===!0&&!i.close?l.warn(`The <${e}> tag must be selfclosing.`,i.line,i.col,this,i.raw):u.selfclosing===!1&&i.close&&l.warn(`The <${e}> tag must not be selfclosing.`,i.line,i.col,this,i.raw),Array.isArray(u.attrsRequired)&&u.attrsRequired.forEach(p=>{if(Array.isArray(p)){const v=p.map(_=>_),A=v.shift(),x=v;t.some(_=>_.name===A)?t.forEach(_=>{_.name===A&&x.indexOf(_.value)===-1&&l.error(`The <${e}> tag must have attr '${A}' with one value of '${x.join("' or '")}'.`,i.line,o,this,i.raw)}):l.error(`The <${e}> tag must have attr '${A}'.`,i.line,o,this,i.raw)}else t.some(v=>p.split("|").indexOf(v.name)!==-1)||l.error(`The <${e}> tag must have attr '${p}'.`,i.line,o,this,i.raw)}),Array.isArray(u.attrsOptional)&&u.attrsOptional.forEach(p=>{if(Array.isArray(p)){const v=p.map(_=>_),A=v.shift(),x=v;t.some(_=>_.name===A)&&t.forEach(_=>{_.name===A&&x.indexOf(_.value)===-1&&l.error(`The <${e}> tag must have optional attr '${A}' with one value of '${x.join("' or '")}'.`,i.line,o,this,i.raw)})}}),Array.isArray(u.redundantAttrs)&&u.redundantAttrs.forEach(p=>{t.some(v=>v.name===p)&&l.error(`The attr '${p}' is redundant for <${e}> and should be omitted.`,i.line,o,this,i.raw)})}})}};var Ke={};Object.defineProperty(Ke,"__esModule",{value:!0}),Ke.default={id:"attr-no-unnecessary-whitespace",description:"No spaces between attribute names and values.",init(f,l,s){const i=Array.isArray(s)?s:[];f.addListener("tagstart",t=>{const o=t.attrs,e=t.col+t.tagName.length+1;for(let u=0;u<o.length;u++)if(i.indexOf(o[u].name)===-1){const d=/(\s*)=(\s*)/.exec(o[u].raw.trim());d&&(d[1].length!==0||d[2].length!==0)&&l.error(`The attribute '${o[u].name}' must not have spaces between the name and value.`,t.line,e+o[u].index,this,o[u].raw)}})}},function(f){Object.defineProperty(f,"__esModule",{value:!0}),f.attrNoUnnecessaryWhitespace=f.tagsCheck=f.titleRequire=f.tagnameSpecialChars=f.tagnameLowercase=f.emptyTagNotSelfClosed=f.tagSelfClose=f.tagPair=f.styleDisabled=f.srcNotEmpty=f.specCharEscape=f.spaceTabMixedDisabled=f.scriptDisabled=f.inputRequiresLabel=f.inlineStyleDisabled=f.inlineScriptDisabled=f.idUnique=f.idClassValue=f.idClsasAdDisabled=f.htmlLangRequire=f.hrefAbsOrRel=f.headScriptDisabled=f.doctypeHTML5=f.doctypeFirst=f.attrWhitespace=f.attrValueSingleQuotes=f.attrValueNotEmpty=f.attrValueDoubleQuotes=f.attrUnsafeChars=f.attrNoDuplication=f.attrSort=f.attrLowercase=f.altRequire=void 0;var l=we;Object.defineProperty(f,"altRequire",{enumerable:!0,get:function(){return l.default}});var s=_e;Object.defineProperty(f,"attrLowercase",{enumerable:!0,get:function(){return s.default}});var i=Ae;Object.defineProperty(f,"attrSort",{enumerable:!0,get:function(){return i.default}});var t=Te;Object.defineProperty(f,"attrNoDuplication",{enumerable:!0,get:function(){return t.default}});var o=Ce;Object.defineProperty(f,"attrUnsafeChars",{enumerable:!0,get:function(){return o.default}});var e=Le;Object.defineProperty(f,"attrValueDoubleQuotes",{enumerable:!0,get:function(){return e.default}});var u=xe;Object.defineProperty(f,"attrValueNotEmpty",{enumerable:!0,get:function(){return u.default}});var d=Ne;Object.defineProperty(f,"attrValueSingleQuotes",{enumerable:!0,get:function(){return d.default}});var p=Oe;Object.defineProperty(f,"attrWhitespace",{enumerable:!0,get:function(){return p.default}});var v=je;Object.defineProperty(f,"doctypeFirst",{enumerable:!0,get:function(){return v.default}});var A=Pe;Object.defineProperty(f,"doctypeHTML5",{enumerable:!0,get:function(){return A.default}});var x=Ee;Object.defineProperty(f,"headScriptDisabled",{enumerable:!0,get:function(){return x.default}});var _=Me;Object.defineProperty(f,"hrefAbsOrRel",{enumerable:!0,get:function(){return _.default}});var C=ke;Object.defineProperty(f,"htmlLangRequire",{enumerable:!0,get:function(){return C.default}});var L=Se;Object.defineProperty(f,"idClsasAdDisabled",{enumerable:!0,get:function(){return L.default}});var P=qe;Object.defineProperty(f,"idClassValue",{enumerable:!0,get:function(){return P.default}});var M=Re;Object.defineProperty(f,"idUnique",{enumerable:!0,get:function(){return M.default}});var Z=De;Object.defineProperty(f,"inlineScriptDisabled",{enumerable:!0,get:function(){return Z.default}});var I=Ie;Object.defineProperty(f,"inlineStyleDisabled",{enumerable:!0,get:function(){return I.default}});var S=Fe;Object.defineProperty(f,"inputRequiresLabel",{enumerable:!0,get:function(){return S.default}});var k=ze;Object.defineProperty(f,"scriptDisabled",{enumerable:!0,get:function(){return k.default}});var N=Ue;Object.defineProperty(f,"spaceTabMixedDisabled",{enumerable:!0,get:function(){return N.default}});var F=He;Object.defineProperty(f,"specCharEscape",{enumerable:!0,get:function(){return F.default}});var D=Be;Object.defineProperty(f,"srcNotEmpty",{enumerable:!0,get:function(){return D.default}});var z=Ze;Object.defineProperty(f,"styleDisabled",{enumerable:!0,get:function(){return z.default}});var Q=Ve;Object.defineProperty(f,"tagPair",{enumerable:!0,get:function(){return Q.default}});var G=We;Object.defineProperty(f,"tagSelfClose",{enumerable:!0,get:function(){return G.default}});var ee=Ye;Object.defineProperty(f,"emptyTagNotSelfClosed",{enumerable:!0,get:function(){return ee.default}});var te=Qe;Object.defineProperty(f,"tagnameLowercase",{enumerable:!0,get:function(){return te.default}});var J=Ge;Object.defineProperty(f,"tagnameSpecialChars",{enumerable:!0,get:function(){return J.default}});var rt=Je;Object.defineProperty(f,"titleRequire",{enumerable:!0,get:function(){return rt.default}});var st=Xe;Object.defineProperty(f,"tagsCheck",{enumerable:!0,get:function(){return st.default}});var it=Ke;Object.defineProperty(f,"attrNoUnnecessaryWhitespace",{enumerable:!0,get:function(){return it.default}})}(ht),function(f){Object.defineProperty(f,"__esModule",{value:!0}),f.HTMLParser=f.Reporter=f.HTMLRules=f.HTMLHint=void 0;const l=B;f.HTMLParser=l.default;const s=ve;f.Reporter=s.default;const i=ht;f.HTMLRules=i;class t{constructor(){this.rules={},this.defaultRuleset={"tagname-lowercase":!0,"attr-lowercase":!0,"attr-value-double-quotes":!0,"doctype-first":!0,"tag-pair":!0,"spec-char-escape":!0,"id-unique":!0,"src-not-empty":!0,"attr-no-duplication":!0,"title-require":!0}}addRule(u){this.rules[u.id]=u}verify(u,d=this.defaultRuleset){Object.keys(d).length===0&&(d=this.defaultRuleset),u=u.replace(/^\s*<!--\s*htmlhint\s+([^\r\n]+?)\s*-->/i,(_,C)=>(C.replace(/(?:^|,)\s*([^:,]+)\s*(?:\:\s*([^,\s]+))?/g,(L,P,M)=>(d[P]=M!==void 0&&M.length>0?JSON.parse(M):!0,"")),""));const p=new l.default,v=new s.default(u,d),A=this.rules;let x;for(const _ in d)x=A[_],x!==void 0&&d[_]!==!1&&x.init(p,v,d[_]);return p.parse(u),v.messages}format(u,d={}){const p=[],v={white:"",grey:"",red:"",reset:""};d.colors&&(v.white="\x1B[37m",v.grey="\x1B[90m",v.red="\x1B[31m",v.reset="\x1B[39m");const A=d.indent||0;return u.forEach(x=>{let L=x.evidence;const P=x.line,M=x.col,Z=L.length;let I=M>40+1?M-40:1,S=L.length>M+60?M+60:Z;M<40+1&&(S+=40-M+1),L=L.replace(/\t/g," ").substring(I-1,S),I>1&&(L=`...${L}`,I-=3),S<Z&&(L+="..."),p.push(`${v.white+o(A)}L${P} |${v.grey}${L}${v.reset}`);let k=M-I;const N=L.substring(0,k).match(/[^\u0000-\u00ff]/g);N!==null&&(k+=N.length),p.push(`${v.white+o(A)+o(String(P).length+3+k)}^ ${v.red}${x.message} (${x.rule.id})${v.reset}`)}),p}}function o(e,u){return new Array(e+1).join(u||" ")}f.HTMLHint=new t,Object.keys(i).forEach(e=>{f.HTMLHint.addRule(i[e])})}(R);const pt={"attr-whitespace":!1,"attr-no-duplication":!0,"body-no-duplicates":!0,"freemarker-tags":!0,"head-body-descendents-html":!0,"head-no-duplicates":!0,"head-valid-children":!0,"html-no-duplicates":!0,"html-root-node":!0,"html-valid-children":!0,"html-valid-children-order":!0,"img-src-required":!0,"invalid-attribute-char":!0,"nested-paragraphs":!0,"no-enties-in-attributes":["style","class","id"],"spec-char-escape":!0,"src-not-empty":!0,"tag-pair":!0,"valid-path-format":[{attr:"href",formats:["absolute",{pattern:"\\${(\\s+)?Gears\\.unsubscribe\\(\\)(\\s+)?}",name:"MessageGears unsubscribe"},{pattern:"mailto:.+",name:"Mailto link"}]},{tag:"img",attr:"src",formats:["absolute"]}],"valid-style-attrs":!0},pa=["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param","embed","track","command","source","keygen","wbr"];class mt{constructor(l,s){E(this,"children");E(this,"closed");E(this,"root");E(this,"tagName");E(this,"attrs");E(this,"from");E(this,"to");E(this,"col");E(this,"line");E(this,"raw");this.event=l,this.parent=s;const i=(l==null?void 0:l.tagName)&&l.tagName.toLowerCase();this.children=[],s?(this.closed=!!l.close||pa.indexOf(i)>-1,this.parent=s,this.tagName=i,this.attrs=l.attrs,this.from=l.pos,this.to=void 0,this.col=l.col,this.line=l.line,this.raw=l.raw):this.root=this}get depth(){let l=0,s=this.parent;for(;s.parent;)l++,s=s.parent;return l}close(l,s){this.to=l.pos+l.raw.length,this.raw=s.html.slice(this.from,this.to)}push(l){return this.children.push(l)}before(l){return this.children.slice(0,l)}after(l){return this.children.slice(l+1)}find(...l){const s=i=>i.reduce((t,o)=>(o.match(...l)&&t.push(o),o.children.length&&(t=t.concat(s(o.children))),t),[]);return s(this.children)}findFirst(l){return this.find(l)[0]}index(){return this.parent?this.parent.children.indexOf(this):0}isChildOf(l){return this.parent===l}isBefore(l){return this.index()<l.index()}isAfter(l){return this.index()>l.index()}isFirst(){return!this.parent||this.index()===0}isLast(){return!this.parent||this.index()===this.parent.children.length-1}first(){return this.children[0]}match(...l){return l.indexOf(this.tagName&&this.tagName.toLowerCase())>-1}}class W{constructor(l,s,i){this.parser=l,this.reporter=s;const t=[],o=new mt;let e=o;l.addListener("tagstart",u=>{const d=new mt(u,e);e.push(d),d.closed||t.push(e=d)}),l.addListener("tagend",u=>{const d=u.tagName.toLowerCase();let p;for(p=t.length-1;p>=0&&t[p].tagName!==d;p--);t[p]&&(t[p].close(u,this.reporter),e=t[p].parent,t.splice(p,1))}),l.addListener("end",()=>{o.closed=!0,i&&i(o)})}}const ma={id:"body-no-duplicates",description:"The body tag must not be a duplicate.",init(f,l){new W(f,l,s=>{let i;for(let t of s.find("body")){if(!i){i=t;continue}l.error(`The [ body ] tag already exists on line ${i.line}.`,t.line,t.col,this,t.raw)}})}},et=function(){function f(t,o){function e(){this.constructor=t}e.prototype=o.prototype,t.prototype=new e}function l(t,o,e,u){var d=Error.call(this,t);return Object.setPrototypeOf&&Object.setPrototypeOf(d,l.prototype),d.expected=o,d.found=e,d.location=u,d.name="SyntaxError",d}f(l,Error);function s(t,o,e){return e=e||" ",t.length>o?t:(o-=t.length,e+=e.repeat(o),t+e.slice(0,o))}l.prototype.format=function(t){var o="Error: "+this.message;if(this.location){var e=null,u;for(u=0;u<t.length;u++)if(t[u].source===this.location.source){e=t[u].text.split(/\r\n|\n|\r/g);break}var d=this.location.start,p=this.location.source&&typeof this.location.source.offset=="function"?this.location.source.offset(d):d,v=this.location.source+":"+p.line+":"+p.column;if(e){var A=this.location.end,x=s("",p.line.toString().length," "),_=e[d.line-1],C=d.line===A.line?A.column:_.length+1,L=C-d.column||1;o+=` --> `+v+` `+x+` | `+p.line+" | "+_+` `+x+" | "+s("",d.column-1," ")+s("",L,"^")}else o+=` at `+v}return o},l.buildMessage=function(t,o){var e={literal:function(_){return'"'+d(_.text)+'"'},class:function(_){var C=_.parts.map(function(L){return Array.isArray(L)?p(L[0])+"-"+p(L[1]):p(L)});return"["+(_.inverted?"^":"")+C.join("")+"]"},any:function(){return"any character"},end:function(){return"end of input"},other:function(_){return _.description}};function u(_){return _.charCodeAt(0).toString(16).toUpperCase()}function d(_){return _.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+u(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+u(C)})}function p(_){return _.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+u(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+u(C)})}function v(_){return e[_.type](_)}function A(_){var C=_.map(v),L,P;if(C.sort(),C.length>0){for(L=1,P=1;L<C.length;L++)C[L-1]!==C[L]&&(C[P]=C[L],P++);C.length=P}switch(C.length){case 1:return C[0];case 2:return C[0]+" or "+C[1];default:return C.slice(0,-1).join(", ")+", or "+C[C.length-1]}}function x(_){return _?'"'+d(_)+'"':"end of input"}return"Expected "+A(t)+" but "+x(o)+" found."};function i(t,o){o=o!==void 0?o:{};var e={},u=o.grammarSource,d={start:Vt},p=Vt,v="<#",A="</#",x="${",_="}",C="<#if",L=">",P="<#elseif",M="<#else",Z="<#else>",I="</#if",S="</#if>",k="<#list",N="as",F="</#list",D="</#list>",z="<#assign",Q="=",G="!",ee="(",te=")",J=".",rt="[",st="]",it="?",Fa="<",vt="gt",wt="&gt;",_t="gte",At="&gte;",Tt="lt",Ct="&lt;",Lt="lte",xt="&lte;",Nt="==",Ot="<=",jt="!=",za="+",Ua="-",Ha="/",Ba="*",Pt="&&",Et="||",Mt=">=",ae='"',re="'",Za="&",Va=";",Wa=",",ue=/^[a-zA-Z0-9_]/,de=/^[ \t\n\r]/,Ya=Y("text"),Qa=Y("string"),kt=T("<#",!1),Ga=T("</#",!1),nt=T("${",!1),se=Gr(),Ja=T("}",!1),St=T("<#if",!1),ie=T(">",!1),qt=T("<#elseif",!1),Xa=T("<#else",!1),Ka=T("<#else>",!1),er=T("</#if",!1),tr=T("</#if>",!1),Rt=T("<#list",!1),ar=T("as",!1),rr=T("</#list",!1),sr=T("</#list>",!1),Dt=T("<#assign",!1),It=T("=",!1),lt=Y("expression"),ge=T("!",!1),ot=T("(",!1),ct=T(")",!1),Ft=Y("equation"),he=T(".",!1),ir=T("[",!1),nr=T("]",!1),lr=T("?",!1),or=Y("modifier"),zt=Y("operator"),cr=T("<",!1),fr=T("gt",!1),ur=T("&gt;",!1),dr=T("gte",!1),gr=T("&gte;",!1),hr=T("lt",!1),pr=T("&lt;",!1),mr=T("lte",!1),br=T("&lte;",!1),$r=T("==",!1),yr=T("<=",!1),vr=T("!=",!1),wr=T("+",!1),_r=T("-",!1),Ar=T("/",!1),Tr=T("*",!1),Cr=T("&&",!1),Lr=T("||",!1),xr=T(">=",!1),ne=T('"',!1),le=T("'",!1),pe=Ht([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Nr=T("&",!1),Or=T(";",!1),jr=Y(","),Pr=T(",",!1),Ut=Y("whitespace"),me=Ht([" "," ",` `,"\r"],!1,!1),Er=function(r){return r.join("")},Mr=function(r){return r},kr=function(r){return r.flat(1/0).join("")},Sr=function(r){return r.flat(1/0).filter(Boolean).join("")},qr=function(r){return r.flat(1/0).filter(Boolean).join("")},Rr=function(r){return r},Dr=function(r){return r},Ir=function(r){return r.flat(1/0).filter(Boolean).join("")},Fr=function(r){return r},zr=function(r){return r.flat(1/0).filter(Boolean).join("")},Ur=function(r){return r.flat(1/0).join("")},Hr=function(r){return r.flat(1/0).join("")},Br=function(r){return Array.isArray(r)?r.flat(1/0).join(""):r},Zr=function(r){return r.flat(2).join("")},Vr=function(r){return r.join("")},Wr=function(r,c,n){return[r,...c,n].join("")},Yr=function(r){return r.join("")},Qr=function(r){return r.join("")},a=0,be=[{line:1,column:1}],U=0,ft=[],g=0,$e;if("startRule"in o){if(!(o.startRule in d))throw new Error(`Can't start parsing from rule "`+o.startRule+'".');p=d[o.startRule]}function T(r,c){return{type:"literal",text:r,ignoreCase:c}}function Ht(r,c,n){return{type:"class",parts:r,inverted:c,ignoreCase:n}}function Gr(){return{type:"any"}}function Jr(){return{type:"end"}}function Y(r){return{type:"other",description:r}}function Bt(r){var c=be[r],n;if(c)return c;for(n=r-1;!be[n];)n--;for(c=be[n],c={line:c.line,column:c.column};n<r;)t.charCodeAt(n)===10?(c.line++,c.column=1):c.column++,n++;return be[r]=c,c}function Zt(r,c,n){var h=Bt(r),$=Bt(c),b={source:u,start:{offset:r,line:h.line,column:h.column},end:{offset:c,line:$.line,column:$.column}};return n&&u&&typeof u.offset=="function"&&(b.start=u.offset(b.start),b.end=u.offset(b.end)),b}function m(r){a<U||(a>U&&(U=a,ft=[]),ft.push(r))}function Xr(r,c,n){return new l(l.buildMessage(r,c),r,c,n)}function Vt(){var r,c;for(r=[],c=Gt(),c===e&&(c=Jt(),c===e&&(c=Xt(),c===e&&(c=Qt(),c===e&&(c=Wt()))));c!==e;)r.push(c),c=Gt(),c===e&&(c=Jt(),c===e&&(c=Xt(),c===e&&(c=Qt(),c===e&&(c=Wt()))));return r}function Wt(){var r,c,n;if(g++,r=a,c=[],n=Yt(),n!==e)for(;n!==e;)c.push(n),n=Yt();else c=e;return c!==e&&(c=Er(c)),r=c,g--,r===e&&(c=e,g===0&&m(Ya)),r}function Yt(){var r,c,n;return g++,r=a,c=a,g++,t.substr(a,2)===v?(n=v,a+=2):(n=e,g===0&&m(kt)),n===e&&(t.substr(a,2)===v?(n=v,a+=2):(n=e,g===0&&m(kt)),n===e&&(t.substr(a,3)===A?(n=A,a+=3):(n=e,g===0&&m(Ga)),n===e&&(t.substr(a,2)===x?(n=x,a+=2):(n=e,g===0&&m(nt))))),g--,n===e?c=void 0:(a=c,c=e),c!==e?(t.length>a?(n=t.charAt(a),a++):(n=e,g===0&&m(se)),n!==e?r=Mr(n):(a=r,r=e)):(a=r,r=e),g--,r===e&&(c=e,g===0&&m(Qa)),r}function Qt(){var r,c,n,h,$,b,y,w;return r=a,c=a,g++,t.substr(a,2)===x?(n=x,a+=2):(n=e,g===0&&m(nt)),g--,n!==e?(a=c,c=void 0):c=e,c!==e?(n=a,t.substr(a,2)===x?(h=x,a+=2):(h=e,g===0&&m(nt)),h!==e?($=j(),b=is(),b!==e?(y=j(),t.charCodeAt(a)===125?(w=_,a++):(w=e,g===0&&m(Ja)),w!==e?(h=[h,$,b,y,w],n=h):(a=n,n=e)):(a=n,n=e)):(a=n,n=e),n!==e?r=kr(n):(a=r,r=e)):(a=r,r=e),r}function Gt(){var r;return r=Kr(),r===e&&(r=es(),r===e&&(r=ts(),r===e&&(r=as()))),r}function Kr(){var r,c,n,h,$,b,y;return r=a,c=a,g++,t.substr(a,4)===C?(n=C,a+=4):(n=e,g===0&&m(St)),g--,n!==e?(a=c,c=void 0):c=e,c!==e?(n=a,t.substr(a,4)===C?(h=C,a+=4):(h=e,g===0&&m(St)),h!==e?($=X(),$!==e?(b=H(),b!==e?(t.charCodeAt(a)===62?(y=L,a++):(y=e,g===0&&m(ie)),y!==e?(h=[h,$,b,y],n=h):(a=n,n=e)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e),n!==e?r=Sr(n):(a=r,r=e)):(a=r,r=e),r}function es(){var r,c,n,h,$,b,y;return r=a,c=a,g++,t.substr(a,8)===P?(n=P,a+=8):(n=e,g===0&&m(qt)),g--,n!==e?(a=c,c=void 0):c=e,c!==e?(n=a,t.substr(a,8)===P?(h=P,a+=8):(h=e,g===0&&m(qt)),h!==e?($=X(),$!==e?(b=H(),b!==e?(t.charCodeAt(a)===62?(y=L,a++):(y=e,g===0&&m(ie)),y!==e?(h=[h,$,b,y],n=h):(a=n,n=e)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e),n!==e?r=qr(n):(a=r,r=e)):(a=r,r=e),r}function ts(){var r,c,n;return r=a,c=a,g++,t.substr(a,6)===M?(n=M,a+=6):(n=e,g===0&&m(Xa)),g--,n!==e?(a=c,c=void 0):c=e,c!==e?(t.substr(a,7)===Z?(n=Z,a+=7):(n=e,g===0&&m(Ka)),n!==e?r=Rr(n):(a=r,r=e)):(a=r,r=e),r}function as(){var r,c,n;return r=a,c=a,g++,t.substr(a,5)===I?(n=I,a+=5):(n=e,g===0&&m(er)),g--,n!==e?(a=c,c=void 0):c=e,c!==e?(t.substr(a,6)===S?(n=S,a+=6):(n=e,g===0&&m(tr)),n!==e?r=Dr(n):(a=r,r=e)):(a=r,r=e),r}function Jt(){var r;return r=rs(),r===e&&(r=ss()),r}function rs(){var r,c,n,h,$,b,y,w,O,K,V;return r=a,c=a,g++,t.substr(a,6)===k?(n=k,a+=6):(n=e,g===0&&m(Rt)),g--,n!==e?(a=c,c=void 0):c=e,c!==e?(n=a,t.substr(a,6)===k?(h=k,a+=6):(h=e,g===0&&m(Rt)),h!==e?($=X(),$!==e?(b=oe(),y=X(),y!==e?(t.substr(a,2)===N?(w=N,a+=2):(w=e,g===0&&m(ar)),w!==e?(O=X(),O!==e?(K=oe(),t.charCodeAt(a)===62?(V=L,a++):(V=e,g===0&&m(ie)),V!==e?(h=[h,$,b,y,w,O,K,V],n=h):(a=n,n=e)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e),n!==e?r=Ir(n):(a=r,r=e)):(a=r,r=e),r}function ss(){var r,c,n;return r=a,c=a,g++,t.substr(a,7)===F?(n=F,a+=7):(n=e,g===0&&m(rr)),g--,n!==e?(a=c,c=void 0):c=e,c!==e?(t.substr(a,8)===D?(n=D,a+=8):(n=e,g===0&&m(sr)),n!==e?r=Fr(n):(a=r,r=e)):(a=r,r=e),r}function Xt(){var r,c,n,h,$,b,y,w,O,K,V;return r=a,c=a,g++,t.substr(a,8)===z?(n=z,a+=8):(n=e,g===0&&m(Dt)),g--,n!==e?(a=c,c=void 0):c=e,c!==e?(n=a,t.substr(a,8)===z?(h=z,a+=8):(h=e,g===0&&m(Dt)),h!==e?($=X(),$!==e?(b=oe(),y=j(),t.charCodeAt(a)===61?(w=Q,a++):(w=e,g===0&&m(It)),w!==e?(O=j(),K=H(),K!==e?(t.charCodeAt(a)===62?(V=L,a++):(V=e,g===0&&m(ie)),V!==e?(h=[h,$,b,y,w,O,K,V],n=h):(a=n,n=e)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e)):(a=n,n=e),n!==e?r=zr(n):(a=r,r=e)):(a=r,r=e),r}function is(){var r,c,n,h,$,b,y,w;return g++,r=a,c=a,t.charCodeAt(a)===33?(n=G,a++):(n=e,g===0&&m(ge)),n===e&&(n=null),t.charCodeAt(a)===40?(h=ee,a++):(h=e,g===0&&m(ot)),h!==e?($=j(),b=ut(),y=j(),t.charCodeAt(a)===41?(w=te,a++):(w=e,g===0&&m(ct)),w!==e?(n=[n,h,$,b,y,w],c=n):(a=c,c=e)):(a=c,c=e),c===e&&(c=ut()),c!==e?(n=j(),r=Ur(c)):(a=r,r=e),g--,r===e&&(c=e,g===0&&m(lt)),r}function H(){var r,c,n,h,$,b,y,w,O;return g++,r=a,c=a,n=a,t.charCodeAt(a)===33?(h=G,a++):(h=e,g===0&&m(ge)),h===e&&(h=null),t.charCodeAt(a)===40?($=ee,a++):($=e,g===0&&m(ot)),$!==e?(b=j(),y=ut(),w=j(),t.charCodeAt(a)===41?(O=te,a++):(O=e,g===0&&m(ct)),O!==e?(h=[h,$,b,y,w,O],n=h):(a=n,n=e)):(a=n,n=e),n===e&&(n=ns()),n!==e?(h=j(),$=a,b=ye(),b!==e?(y=j(),w=H(),w!==e?(b=[b,y,w],$=b):(a=$,$=e)):(a=$,$=e),$===e&&($=null),n=[n,h,$],c=n):(a=c,c=e),c!==e?(n=j(),r=Hr(c)):(a=r,r=e),g--,r===e&&(c=e,g===0&&m(lt)),r}function ut(){var r,c,n,h,$,b,y,w,O;for(g++,r=a,t.charCodeAt(a)===33?(c=G,a++):(c=e,g===0&&m(ge)),c===e&&(c=null),n=oe(),h=[],$=a,b=j(),y=aa(),y!==e?(w=j(),O=H(),O!==e?(b=[b,y,w,O],$=b):(a=$,$=e)):(a=$,$=e);$!==e;)h.push($),$=a,b=j(),y=aa(),y!==e?(w=j(),O=H(),O!==e?(b=[b,y,w,O],$=b):(a=$,$=e)):(a=$,$=e);return c=[c,n,h],r=c,g--,c=e,g===0&&m(Ft),r}function ns(){var r,c,n,h,$,b,y,w,O;for(g++,r=a,t.charCodeAt(a)===33?(c=G,a++):(c=e,g===0&&m(ge)),c===e&&(c=null),n=oe(),h=[],$=a,b=j(),y=ye(),y!==e?(w=j(),O=H(),O!==e?(b=[b,y,w,O],$=b):(a=$,$=e)):(a=$,$=e);$!==e;)h.push($),$=a,b=j(),y=ye(),y!==e?(w=j(),O=H(),O!==e?(b=[b,y,w,O],$=b):(a=$,$=e)):(a=$,$=e);return c=[c,n,h],r=c,g--,c=e,g===0&&m(Ft),r}function oe(){var r,c,n,h,$;for(r=a,c=[],n=a,t.charCodeAt(a)===46?(h=J,a++):(h=e,g===0&&m(he)),h===e&&(h=ra(),h===e&&(h=ce(),h===e&&(h=sa()))),h!==e?($=Kt(),h=[h,$],n=h):(a=n,n=e);n!==e;)c.push(n),n=a,t.charCodeAt(a)===46?(h=J,a++):(h=e,g===0&&m(he)),h===e&&(h=ra(),h===e&&(h=ce(),h===e&&(h=sa()))),h!==e?($=Kt(),h=[h,$],n=h):(a=n,n=e);return c=Br(c),r=c,r}function Kt(){var r,c,n,h;for(r=[],c=a,t.charCodeAt(a)===46?(n=J,a++):(n=e,g===0&&m(he)),n!==e?(h=ce(),h!==e?(n=[n,h],c=n):(a=c,c=e)):(a=c,c=e),c===e&&(c=ea(),c===e&&(c=ta(),c===e&&(c=dt())));c!==e;)r.push(c),c=a,t.charCodeAt(a)===46?(n=J,a++):(n=e,g===0&&m(he)),n!==e?(h=ce(),h!==e?(n=[n,h],c=n):(a=c,c=e)):(a=c,c=e),c===e&&(c=ea(),c===e&&(c=ta(),c===e&&(c=dt())));return r}function ea(){var r,c,n,h;return r=a,t.charCodeAt(a)===91?(c=rt,a++):(c=e,g===0&&m(ir)),c!==e?(n=H(),n!==e?(t.charCodeAt(a)===93?(h=st,a++):(h=e,g===0&&m(nr)),h!==e?(c=[c,n,h],r=c):(a=r,r=e)):(a=r,r=e)):(a=r,r=e),r}function ta(){var r,c,n,h;return r=a,t.charCodeAt(a)===63?(c=it,a++):(c=e,g===0&&m(lr)),c!==e?(n=ls(),n!==e?(h=dt(),h===e&&(h=null),c=[c,n,h],r=c):(a=r,r=e)):(a=r,r=e),r}function ls(){var r;return g++,r=ce(),g--,r===e&&g===0&&m(or),r}function dt(){var r,c,n,h,$,b,y;if(r=a,t.charCodeAt(a)===40?(c=ee,a++):(c=e,g===0&&m(ot)),c!==e){for(n=gt(),n===e&&(n=null),h=[],$=a,b=ia(),b!==e?(y=gt(),y!==e?(b=[b,y],$=b):(a=$,$=e)):(a=$,$=e);$!==e;)h.push($),$=a,b=ia(),b!==e?(y=gt(),y!==e?(b=[b,y],$=b):(a=$,$=e)):(a=$,$=e);t.charCodeAt(a)===41?($=te,a++):($=e,g===0&&m(ct)),$!==e?(c=[c,n,h,$],r=c):(a=r,r=e)}else a=r,r=e;return r}function gt(){var r,c,n,h;return g++,r=a,c=j(),n=H(),n!==e?(h=j(),c=[c,n,h],r=c):(a=r,r=e),g--,r===e&&(c=e,g===0&&m(lt)),r}function ye(){var r;return g++,t.charCodeAt(a)===60?(r=Fa,a++):(r=e,g===0&&m(cr)),r===e&&(t.substr(a,2)===vt?(r=vt,a+=2):(r=e,g===0&&m(fr)),r===e&&(t.substr(a,4)===wt?(r=wt,a+=4):(r=e,g===0&&m(ur)),r===e&&(t.substr(a,3)===_t?(r=_t,a+=3):(r=e,g===0&&m(dr)),r===e&&(t.substr(a,5)===At?(r=At,a+=5):(r=e,g===0&&m(gr)),r===e&&(t.substr(a,2)===Tt?(r=Tt,a+=2):(r=e,g===0&&m(hr)),r===e&&(t.substr(a,4)===Ct?(r=Ct,a+=4):(r=e,g===0&&m(pr)),r===e&&(t.substr(a,3)===Lt?(r=Lt,a+=3):(r=e,g===0&&m(mr)),r===e&&(t.substr(a,5)===xt?(r=xt,a+=5):(r=e,g===0&&m(br)),r===e&&(t.charCodeAt(a)===61?(r=Q,a++):(r=e,g===0&&m(It)),r===e&&(t.substr(a,2)===Nt?(r=Nt,a+=2):(r=e,g===0&&m($r)),r===e&&(t.substr(a,2)===Ot?(r=Ot,a+=2):(r=e,g===0&&m(yr)),r===e&&(t.substr(a,2)===jt?(r=jt,a+=2):(r=e,g===0&&m(vr)),r===e&&(t.charCodeAt(a)===43?(r=za,a++):(r=e,g===0&&m(wr)),r===e&&(t.charCodeAt(a)===45?(r=Ua,a++):(r=e,g===0&&m(_r)),r===e&&(t.charCodeAt(a)===47?(r=Ha,a++):(r=e,g===0&&m(Ar)),r===e&&(t.charCodeAt(a)===42?(r=Ba,a++):(r=e,g===0&&m(Tr)),r===e&&(t.substr(a,2)===Pt?(r=Pt,a+=2):(r=e,g===0&&m(Cr)),r===e&&(t.substr(a,2)===Et?(r=Et,a+=2):(r=e,g===0&&m(Lr)))))))))))))))))))),g--,r===e&&g===0&&m(zt),r}function aa(){var r;return g++,r=ye(),r===e&&(t.charCodeAt(a)===62?(r=L,a++):(r=e,g===0&&m(ie)),r===e&&(t.substr(a,2)===Mt?(r=Mt,a+=2):(r=e,g===0&&m(xr)))),g--,r===e&&g===0&&m(zt),r}function ra(){var r,c,n,h,$,b,y,w;if(r=a,c=a,g++,t.charCodeAt(a)===34?(n=ae,a++):(n=e,g===0&&m(ne)),n===e&&(t.charCodeAt(a)===39?(n=re,a++):(n=e,g===0&&m(le))),g--,n!==e?(a=c,c=void 0):c=e,c!==e){if(n=a,t.charCodeAt(a)===34?(h=ae,a++):(h=e,g===0&&m(ne)),h!==e){for($=[],b=a,y=a,g++,t.charCodeAt(a)===34?(w=ae,a++):(w=e,g===0&&m(ne)),g--,w===e?y=void 0:(a=y,y=e),y!==e?(t.length>a?(w=t.charAt(a),a++):(w=e,g===0&&m(se)),w!==e?(y=[y,w],b=y):(a=b,b=e)):(a=b,b=e);b!==e;)$.push(b),b=a,y=a,g++,t.charCodeAt(a)===34?(w=ae,a++):(w=e,g===0&&m(ne)),g--,w===e?y=void 0:(a=y,y=e),y!==e?(t.length>a?(w=t.charAt(a),a++):(w=e,g===0&&m(se)),w!==e?(y=[y,w],b=y):(a=b,b=e)):(a=b,b=e);t.charCodeAt(a)===34?(b=ae,a++):(b=e,g===0&&m(ne)),b!==e?(h=[h,$,b],n=h):(a=n,n=e)}else a=n,n=e;if(n===e)if(n=a,t.charCodeAt(a)===39?(h=re,a++):(h=e,g===0&&m(le)),h!==e){for($=[],b=a,y=a,g++,t.charCodeAt(a)===39?(w=re,a++):(w=e,g===0&&m(le)),g--,w===e?y=void 0:(a=y,y=e),y!==e?(t.length>a?(w=t.charAt(a),a++):(w=e,g===0&&m(se)),w!==e?(y=[y,w],b=y):(a=b,b=e)):(a=b,b=e);b!==e;)$.push(b),b=a,y=a,g++,t.charCodeAt(a)===39?(w=re,a++):(w=e,g===0&&m(le)),g--,w===e?y=void 0:(a=y,y=e),y!==e?(t.length>a?(w=t.charAt(a),a++):(w=e,g===0&&m(se)),w!==e?(y=[y,w],b=y):(a=b,b=e)):(a=b,b=e);t.charCodeAt(a)===39?(b=re,a++):(b=e,g===0&&m(le)),b!==e?(h=[h,$,b],n=h):(a=n,n=e)}else a=n,n=e;n!==e?r=Zr(n):(a=r,r=e)}else a=r,r=e;return r}function ce(){var r,c,n;if(r=a,c=[],ue.test(t.charAt(a))?(n=t.charAt(a),a++):(n=e,g===0&&m(pe)),n!==e)for(;n!==e;)c.push(n),ue.test(t.charAt(a))?(n=t.charAt(a),a++):(n=e,g===0&&m(pe));else c=e;return c!==e&&(c=Vr(c)),r=c,r}function sa(){var r,c,n,h;if(r=a,t.charCodeAt(a)===38?(c=Za,a++):(c=e,g===0&&m(Nr)),c!==e){if(n=[],ue.test(t.charAt(a))?(h=t.charAt(a),a++):(h=e,g===0&&m(pe)),h!==e)for(;h!==e;)n.push(h),ue.test(t.charAt(a))?(h=t.charAt(a),a++):(h=e,g===0&&m(pe));else n=e;n!==e?(t.charCodeAt(a)===59?(h=Va,a++):(h=e,g===0&&m(Or)),h!==e?r=Wr(c,n,h):(a=r,r=e)):(a=r,r=e)}else a=r,r=e;return r}function ia(){var r,c,n,h;return g++,r=a,c=j(),t.charCodeAt(a)===44?(n=Wa,a++):(n=e,g===0&&m(Pr)),n!==e?(h=j(),c=[c,n,h],r=c):(a=r,r=e),g--,r===e&&(c=e,g===0&&m(jr)),r}function X(){var r,c,n;if(g++,r=a,c=[],de.test(t.charAt(a))?(n=t.charAt(a),a++):(n=e,g===0&&m(me)),n!==e)for(;n!==e;)c.push(n),de.test(t.charAt(a))?(n=t.charAt(a),a++):(n=e,g===0&&m(me));else c=e;return c!==e&&(c=Yr(c)),r=c,g--,r===e&&(c=e,g===0&&m(Ut)),r}function j(){var r,c,n;for(g++,r=a,c=[],de.test(t.charAt(a))?(n=t.charAt(a),a++):(n=e,g===0&&m(me));n!==e;)c.push(n),de.test(t.charAt(a))?(n=t.charAt(a),a++):(n=e,g===0&&m(me));return c=Qr(c),r=c,g--,c=e,g===0&&m(Ut),r}if($e=p()