fast-xml-validator 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/fxv.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.fxp=e():t.fxp=e()}(this,()=>(()=>{"use strict";var t={d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{BusinessRulesValidator:()=>xe,SyntaxValidator:()=>be});const n=":A-Za-z_À-ÖØ-öø-˿Ͱ-ͽͿ-҆҈-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�",r=":A-Za-z_À-˿Ͱ-ͽͿ-҆҈-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",i=r+"\\-\\.\\d·̀-ͯ҇‿-⁀",s=(t,e,n="")=>{const r=`[${t.replace(":","")}][${e.replace(":","")}]*`;return{name:new RegExp(`^[${t}][${e}]*$`,n),ncName:new RegExp(`^${r}$`,n),qName:new RegExp(`^${r}(?::${r})?$`,n),nmToken:new RegExp(`^[${e}]+$`,n),nmTokens:new RegExp(`^[${e}]+(?:\\s+[${e}]+)*$`,n)}},a=s(n,n+"\\-\\.\\d·̀-ͯ‿-⁀"),o=s(r,i,"u"),l=(t="1.0")=>"1.1"===t?o:a,h=(t,{xmlVersion:e="1.0"}={})=>l(e).name.test(t);var u={maxEntityCount:1/0,maxEntitySize:1/0},c=function(){function t(t,e){void 0===e&&(e="1.0"),this.options=Object.assign({},u,t),this.suppressValidationErr=!t,this.xmlVersion=e}var e=t.prototype;return e.validateDocType=function(t,e){if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");e+=9;for(var n=1,r=!1,i=!1,s=0;e<t.length;e++)if("<"!==t[e]||i)if(">"===t[e]){if(i?"-"===t[e-1]&&"-"===t[e-2]&&(i=!1,n--):n--,0===n)break}else"["===t[e]&&(r=!0);else{if(r&&p(t,"!ENTITY",e)){e+=7;var a=this._validateEntityExp(t,e+1,s);s=a[0],e=a[1]}else if(r&&p(t,"!ELEMENT",e))e+=8,e=this._validateElementExp(t,e+1);else{if(r&&p(t,"!ATTLIST",e)){e+=8,e=this._validateAttlistExp(t,e+1);continue}if(r&&p(t,"!NOTATION",e))e+=9,e=this._validateNotationExp(t,e+1);else{if(!p(t,"!--",e))throw new Error("Invalid DOCTYPE");i=!0}}n++}if(0!==n)throw new Error("Unclosed DOCTYPE");return e},e._validateEntityExp=function(t,e,n){for(var r=e=d(t,e);e<t.length&&!/\s/.test(t[e])&&'"'!==t[e]&&"'"!==t[e];)e++;var i,s=t.substring(r,e);if(f(s,this.xmlVersion),e=d(t,e),!this.suppressValidationErr){if("SYSTEM"===t.substring(e,e+6).toUpperCase())throw new Error("External entities are not supported");if("%"===t[e])throw new Error("Parameter entities are not supported")}var a=g(t,e,"entity");e=a[0],i=a[1];var o=this.options,l=o.maxEntitySize,h=o.maxEntityCount;if(i.length>l)throw new Error('Entity "'+s+'" size ('+i.length+") exceeds maximum allowed size ("+l+")");if(-1===i.indexOf("&")&&++n>h)throw new Error("Entity count ("+n+") exceeds maximum allowed ("+h+")");return[n,e-1]},e._validateNotationExp=function(t,e){for(var n=e=d(t,e);e<t.length&&!/\s/.test(t[e]);)e++;var r=t.substring(n,e);!this.suppressValidationErr&&f(r,this.xmlVersion),e=d(t,e);var i=t.substring(e,e+6).toUpperCase();if(!this.suppressValidationErr&&"SYSTEM"!==i&&"PUBLIC"!==i)throw new Error('Expected SYSTEM or PUBLIC, found "'+i+'"');return e=d(t,e+=i.length),"PUBLIC"===i?'"'!==t[e=d(t,e=g(t,e,"publicIdentifier")[0])]&&"'"!==t[e]||(e=g(t,e,"systemIdentifier")[0]):"SYSTEM"===i&&(e=g(t,e,"systemIdentifier")[0]),--e},e._validateElementExp=function(t,e){for(var n=e=d(t,e);e<t.length&&!/\s/.test(t[e]);)e++;var r=t.substring(n,e);if(!this.suppressValidationErr&&!h(r,{xmlVersion:this.xmlVersion}))throw new Error('Invalid element name: "'+r+'"');if("E"===t[e=d(t,e)]&&p(t,"MPTY",e))e+=4;else if("A"===t[e]&&p(t,"NY",e))e+=2;else if("("===t[e]){for(e++;e<t.length&&")"!==t[e];)e++;if(")"!==t[e])throw new Error("Unterminated content model")}else if(!this.suppressValidationErr)throw new Error('Invalid Element Expression, found "'+t[e]+'"');return e},e._validateAttlistExp=function(t,e){for(var n=e=d(t,e);e<t.length&&!/\s/.test(t[e]);)e++;f(t.substring(n,e),this.xmlVersion);for(var r=e=d(t,e);e<t.length&&!/\s/.test(t[e]);)e++;if(f(t.substring(r,e),this.xmlVersion),e=d(t,e),"NOTATION"===t.substring(e,e+8).toUpperCase()){if("("!==t[e=d(t,e+=8)])throw new Error("Expected '(', found \""+t[e]+'"');for(e++;e<t.length&&")"!==t[e];){for(var i=e;e<t.length&&"|"!==t[e]&&")"!==t[e];)e++;f(t.substring(i,e).trim(),this.xmlVersion),"|"===t[e]&&(e=d(t,++e))}if(")"!==t[e])throw new Error("Unterminated list of notations");e++}else{for(var s=e;e<t.length&&!/\s/.test(t[e]);)e++;var a=t.substring(s,e);if(!this.suppressValidationErr&&!["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"].includes(a.toUpperCase()))throw new Error('Invalid attribute type: "'+a+'"')}return e=d(t,e),"#REQUIRED"===t.substring(e,e+9).toUpperCase()?e+=9:"#IMPLIED"===t.substring(e,e+8).toUpperCase()?e+=8:e=g(t,e,"ATTLIST default value")[0],e},t}();function d(t,e){for(;e<t.length&&/\s/.test(t[e]);)e++;return e}function p(t,e,n){for(var r=0;r<e.length;r++)if(e[r]!==t[n+r+1])return!1;return!0}function f(t,e){if(void 0===e&&(e="1.0"),!h(t,{xmlVersion:e}))throw new Error('Invalid entity name "'+t+'"')}function g(t,e,n){var r=t[e];if('"'!==r&&"'"!==r)throw new Error("Expected quoted string for "+n+', found "'+r+'"');for(var i=++e;e<t.length&&t[e]!==r;)e++;if(t[e]!==r)throw new Error("Unterminated "+n+" value");var s=t.substring(i,e);return[++e,s]}function m(t){var e="function"==typeof Map?new Map:void 0;return m=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(v())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var i=new(t.bind.apply(t,r));return n&&x(i,n.prototype),i}(t,arguments,b(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),x(n,t)},m(t)}function v(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(v=function(){return!!t})()}function x(t,e){return x=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},x(t,e)}function b(t){return b=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},b(t)}var E=function(t){function e(e,n,r,i){var s;return(s=t.call(this,e)||this).name=s.constructor.name,s.code=n,s.line=r,s.col=i,null==Error.captureStackTrace||Error.captureStackTrace(s,s.constructor),s}var n,r;return r=t,(n=e).prototype=Object.create(r.prototype),n.prototype.constructor=n,x(n,r),e}(m(Error)),y={allowBooleanAttributes:!1,unpairedTags:[],docType:{maxEntityCount:1/0,maxEntitySize:1/0}};function w(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function N(t,e,n){void 0===n&&(n="1.0");for(var r=e,i=e,s=!1;e<t.length;e++){var a=t[e];if(!s&&(" "===a||"?"===a)){var o=t.substr(i,e-i);s=!0,"xml"===o.toLowerCase()?P("InvalidXml","XML declaration allowed only at the start of the document.",M(t,r-2)):h(o,{xmlVersion:n})||P("InvalidXml",'Processing instruction target "'+o+'" is not a valid XML Name.',M(t,r-2))}if("?"===a&&">"===t[e+1])return++e}P("InvalidXml",'Processing instruction is not closed with "?>".',M(t,r-2))}function _(t,e,n){if(t.length>e+2&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e<t.length;e++)if("-"===t[e]&&"-"===t[e+1]&&">"===t[e+2]){e+=2;break}if(">"!==t[e])throw new Error('Comment is not closed with "--\x3e".')}else if(t.length>e+7&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7])e=n.validateDocType(t,e-1);else{if(!(t.length>e+8&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7]))throw new Error("Invalid construct starting with '<!'.");for(e+=8;e<t.length;e++)if("]"===t[e]&&"]"===t[e+1]&&">"===t[e+2]){e+=2;break}if(">"!==t[e])throw new Error('CDATA section is not closed with "]]>".')}return e}var S='"',T="'";function I(t,e){for(var n="",r="",i=!1;e<t.length;e++){if(t[e]===S||t[e]===T)""===r?r=t[e]:r!==t[e]||(r="");else if(">"===t[e]&&""===r){i=!0;break}n+=t[e]}return""===r&&{value:n,index:e,tagClosed:i}}var C=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function A(t,e,n){for(var r=function(t,e){for(var n=[],r=e.exec(t);r;){var i=[];i.startIndex=e.lastIndex-r[0].length;for(var s=r.length,a=0;a<s;a++)i.push(r[a]);n.push(i),r=e.exec(t)}return n}(t,C),i={},s=0;s<r.length;s++){if(0===r[s][1].length)return{err:{code:"InvalidAttr",msg:"Attribute '"+r[s][2]+"' has no space in starting.",line:k(r[s])}};if(void 0!==r[s][3]&&void 0===r[s][4])return{err:{code:"InvalidAttr",msg:"Attribute '"+r[s][2]+"' is without value.",line:k(r[s])}};if(void 0===r[s][3]&&!e.allowBooleanAttributes)return{err:{code:"InvalidAttr",msg:"boolean attribute '"+r[s][2]+"' is not allowed.",line:k(r[s])}};var a=r[s][2];if(!D(a,n))return{err:{code:"InvalidAttr",msg:"Attribute '"+a+"' is an invalid name.",line:k(r[s])}};if("xmlns"===a&&""===r[s][6])return{err:{code:"InvalidAttr",msg:'Undeclaring the default namespace with xmlns="" is only permitted in XML 1.1 documents.',line:k(r[s])}};if(Object.prototype.hasOwnProperty.call(i,a))return{err:{code:"InvalidAttr",msg:"Attribute '"+a+"' is repeated.",line:k(r[s])}};i[a]=1}return!0}function O(t,e){if(";"===t[++e])return-1;if("#"===t[e])return function(t,e){var n=/\d/;for("x"===t[e]&&(e++,n=/[\da-fA-F]/);e<t.length;e++){if(";"===t[e])return e;if(!t[e].match(n))break}return-1}(t,++e);for(var n=0;e<t.length;e++,n++)if(!(t[e].match(/\w/)&&n<20)){if(";"===t[e])break;return-1}return e}function P(t,e,n){throw new E(e,t,n.line||n,n.col)}function D(t,e){return void 0===e&&(e="1.0"),((t,{xmlVersion:e="1.0"}={})=>l(e).qName.test(t))(t,{xmlVersion:e})}function M(t,e){var n=t.substring(0,e).split(/\r?\n/);return{line:n.length,col:n[n.length-1].length+1}}function k(t){return t.startIndex+t[1].length}const V=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",$=new RegExp("^["+V+"]["+V+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function j(t,e){const n=[];let r=e.exec(t);for(;r;){const i=[];i.startIndex=e.lastIndex-r[0].length;const s=r.length;for(let t=0;t<s;t++)i.push(r[t]);n.push(i),r=e.exec(t)}return n}const L=function(t){return!(null==$.exec(t))},U=["hasOwnProperty","toString","valueOf","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__"],F=["__proto__","constructor","prototype"],R=t=>U.includes(t)?"__"+t:t,X={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,entityDecoder:null,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:R};function q(t,e){if("string"!=typeof t)return;const n=t.toLowerCase();if(U.some(t=>n===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);if(F.some(t=>n===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`)}function B(t,e){return"boolean"==typeof t?{enabled:t,maxEntitySize:1e4,maxExpansionDepth:1e4,maxTotalExpansions:1/0,maxExpandedLength:1e5,maxEntityCount:1e3,allowedTags:null,tagFilter:null,appliesTo:"all"}:"object"==typeof t&&null!==t?{enabled:!1!==t.enabled,maxEntitySize:Math.max(1,t.maxEntitySize??1e4),maxExpansionDepth:Math.max(1,t.maxExpansionDepth??1e4),maxTotalExpansions:Math.max(1,t.maxTotalExpansions??1/0),maxExpandedLength:Math.max(1,t.maxExpandedLength??1e5),maxEntityCount:Math.max(1,t.maxEntityCount??1e3),allowedTags:t.allowedTags??null,tagFilter:t.tagFilter??null,appliesTo:t.appliesTo??"all"}:B(!0)}const Y=function(t){const e=Object.assign({},X,t),n=[{value:e.attributeNamePrefix,name:"attributeNamePrefix"},{value:e.attributesGroupName,name:"attributesGroupName"},{value:e.textNodeName,name:"textNodeName"},{value:e.cdataPropName,name:"cdataPropName"},{value:e.commentPropName,name:"commentPropName"}];for(const{value:t,name:e}of n)t&&q(t,e);return null===e.onDangerousProperty&&(e.onDangerousProperty=R),e.processEntities=B(e.processEntities,e.htmlEntities),e.unpairedTagsSet=new Set(e.unpairedTags),e.stopNodes&&Array.isArray(e.stopNodes)&&(e.stopNodes=e.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),e};let z;z="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class W{constructor(t){this.tagname=t,this.child=[],this[":@"]=Object.create(null)}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][z]={startIndex:e})}static getMetaDataSymbol(){return z}}class G{constructor(t){this.suppressValidationErr=!t,this.options=t}readDocType(t,e){const n=Object.create(null);let r=0;if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let i=1,s=!1,a=!1,o="";for(;e<t.length;e++)if("<"!==t[e]||a)if(">"===t[e]){if(a?"-"===t[e-1]&&"-"===t[e-2]&&(a=!1,i--):i--,0===i)break}else"["===t[e]?s=!0:o+=t[e];else{if(s&&J(t,"!ENTITY",e)){let i,s;if(e+=7,[i,s,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===s.indexOf("&")){if(!1!==this.options.enabled&&null!=this.options.maxEntityCount&&r>=this.options.maxEntityCount)throw new Error(`Entity count (${r+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);n[i]=s,r++}}else if(s&&J(t,"!ELEMENT",e)){e+=8;const{index:n}=this.readElementExp(t,e+1);e=n}else if(s&&J(t,"!ATTLIST",e))e+=8;else if(s&&J(t,"!NOTATION",e)){e+=9;const{index:n}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=n}else{if(!J(t,"!--",e))throw new Error("Invalid DOCTYPE");a=!0}i++,o=""}if(0!==i)throw new Error("Unclosed DOCTYPE")}return{entities:n,i:e}}readEntityExp(t,e){const n=e=Z(t,e);for(;e<t.length&&!/\s/.test(t[e])&&'"'!==t[e]&&"'"!==t[e];)e++;let r=t.substring(n,e);if(K(r),e=Z(t,e),!this.suppressValidationErr){if("SYSTEM"===t.substring(e,e+6).toUpperCase())throw new Error("External entities are not supported");if("%"===t[e])throw new Error("Parameter entities are not supported")}let i="";if([e,i]=this.readIdentifierVal(t,e,"entity"),!1!==this.options.enabled&&null!=this.options.maxEntitySize&&i.length>this.options.maxEntitySize)throw new Error(`Entity "${r}" size (${i.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return[r,i,--e]}readNotationExp(t,e){const n=e=Z(t,e);for(;e<t.length&&!/\s/.test(t[e]);)e++;let r=t.substring(n,e);!this.suppressValidationErr&&K(r),e=Z(t,e);const i=t.substring(e,e+6).toUpperCase();if(!this.suppressValidationErr&&"SYSTEM"!==i&&"PUBLIC"!==i)throw new Error(`Expected SYSTEM or PUBLIC, found "${i}"`);e+=i.length,e=Z(t,e);let s=null,a=null;if("PUBLIC"===i)[e,s]=this.readIdentifierVal(t,e,"publicIdentifier"),'"'!==t[e=Z(t,e)]&&"'"!==t[e]||([e,a]=this.readIdentifierVal(t,e,"systemIdentifier"));else if("SYSTEM"===i&&([e,a]=this.readIdentifierVal(t,e,"systemIdentifier"),!this.suppressValidationErr&&!a))throw new Error("Missing mandatory system identifier for SYSTEM notation");return{notationName:r,publicIdentifier:s,systemIdentifier:a,index:--e}}readIdentifierVal(t,e,n){let r="";const i=t[e];if('"'!==i&&"'"!==i)throw new Error(`Expected quoted string, found "${i}"`);const s=++e;for(;e<t.length&&t[e]!==i;)e++;if(r=t.substring(s,e),t[e]!==i)throw new Error(`Unterminated ${n} value`);return[++e,r]}readElementExp(t,e){const n=e=Z(t,e);for(;e<t.length&&!/\s/.test(t[e]);)e++;let r=t.substring(n,e);if(!this.suppressValidationErr&&!L(r))throw new Error(`Invalid element name: "${r}"`);let i="";if("E"===t[e=Z(t,e)]&&J(t,"MPTY",e))e+=4;else if("A"===t[e]&&J(t,"NY",e))e+=2;else if("("===t[e]){const n=++e;for(;e<t.length&&")"!==t[e];)e++;if(i=t.substring(n,e),")"!==t[e])throw new Error("Unterminated content model")}else if(!this.suppressValidationErr)throw new Error(`Invalid Element Expression, found "${t[e]}"`);return{elementName:r,contentModel:i.trim(),index:e}}readAttlistExp(t,e){let n=e=Z(t,e);for(;e<t.length&&!/\s/.test(t[e]);)e++;let r=t.substring(n,e);for(K(r),n=e=Z(t,e);e<t.length&&!/\s/.test(t[e]);)e++;let i=t.substring(n,e);if(!K(i))throw new Error(`Invalid attribute name: "${i}"`);e=Z(t,e);let s="";if("NOTATION"===t.substring(e,e+8).toUpperCase()){if(s="NOTATION","("!==t[e=Z(t,e+=8)])throw new Error(`Expected '(', found "${t[e]}"`);e++;let n=[];for(;e<t.length&&")"!==t[e];){const r=e;for(;e<t.length&&"|"!==t[e]&&")"!==t[e];)e++;let i=t.substring(r,e);if(i=i.trim(),!K(i))throw new Error(`Invalid notation name: "${i}"`);n.push(i),"|"===t[e]&&(e++,e=Z(t,e))}if(")"!==t[e])throw new Error("Unterminated list of notations");e++,s+=" ("+n.join("|")+")"}else{const n=e;for(;e<t.length&&!/\s/.test(t[e]);)e++;s+=t.substring(n,e);const r=["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"];if(!this.suppressValidationErr&&!r.includes(s.toUpperCase()))throw new Error(`Invalid attribute type: "${s}"`)}e=Z(t,e);let a="";return"#REQUIRED"===t.substring(e,e+8).toUpperCase()?(a="#REQUIRED",e+=8):"#IMPLIED"===t.substring(e,e+7).toUpperCase()?(a="#IMPLIED",e+=7):[e,a]=this.readIdentifierVal(t,e,"ATTLIST"),{elementName:r,attributeName:i,attributeType:s,defaultValue:a,index:e}}}const Z=(t,e)=>{for(;e<t.length&&/\s/.test(t[e]);)e++;return e};function J(t,e,n){for(let r=0;r<e.length;r++)if(e[r]!==t[n+r+1])return!1;return!0}function K(t){if(L(t))return t;throw new Error(`Invalid entity name ${t}`)}const Q=/^[-+]?0x[a-fA-F0-9]+$/,H=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,tt={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0,infinity:"original"};const et=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;class nt{constructor(t){this._matcher=t}get separator(){return this._matcher.separator}getCurrentTag(){const t=this._matcher.path;return t.length>0?t[t.length-1].tag:void 0}getCurrentNamespace(){const t=this._matcher.path;return t.length>0?t[t.length-1].namespace:void 0}getAttrValue(t){const e=this._matcher.path;if(0!==e.length)return e[e.length-1].values?.[t]}hasAttr(t){const e=this._matcher.path;if(0===e.length)return!1;const n=e[e.length-1];return void 0!==n.values&&t in n.values}getPosition(){const t=this._matcher.path;return 0===t.length?-1:t[t.length-1].position??0}getCounter(){const t=this._matcher.path;return 0===t.length?-1:t[t.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this._matcher.path.length}toString(t,e=!0){return this._matcher.toString(t,e)}toArray(){return this._matcher.path.map(t=>t.tag)}matches(t){return this._matcher.matches(t)}matchesAny(t){return t.matchesAny(this._matcher)}}class rt{constructor(t={}){this.separator=t.separator||".",this.path=[],this.siblingStacks=[],this._pathStringCache=null,this._view=new nt(this)}push(t,e=null,n=null){this._pathStringCache=null,this.path.length>0&&(this.path[this.path.length-1].values=void 0);const r=this.path.length;this.siblingStacks[r]||(this.siblingStacks[r]=new Map);const i=this.siblingStacks[r],s=n?`${n}:${t}`:t,a=i.get(s)||0;let o=0;for(const t of i.values())o+=t;i.set(s,a+1);const l={tag:t,position:o,counter:a};null!=n&&(l.namespace=n),null!=e&&(l.values=e),this.path.push(l)}pop(){if(0===this.path.length)return;this._pathStringCache=null;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0!==this.path.length)return this.path[this.path.length-1].values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const n=t||this.separator;if(n===this.separator&&!0===e){if(null!==this._pathStringCache)return this._pathStringCache;const t=this.path.map(t=>t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(n);return this._pathStringCache=t,t}return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(n)}toArray(){return this.path.map(t=>t.tag)}reset(){this._pathStringCache=null,this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e<t.length;e++)if(!this._matchSegment(t[e],this.path[e],e===this.path.length-1))return!1;return!0}_matchWithDeepWildcard(t){let e=this.path.length-1,n=t.length-1;for(;n>=0&&e>=0;){const r=t[n];if("deep-wildcard"===r.type){if(n--,n<0)return!0;const r=t[n];let i=!1;for(let t=e;t>=0;t--)if(this._matchSegment(r,this.path[t],t===this.path.length-1)){e=t-1,n--,i=!0;break}if(!i)return!1}else{if(!this._matchSegment(r,this.path[e],e===this.path.length-1))return!1;e--,n--}}return n<0}_matchSegment(t,e,n){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!n)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue&&String(e.values[t.attrName])!==String(t.attrValue))return!1}if(void 0!==t.position){if(!n)return!1;const r=e.counter??0;if("first"===t.position&&0!==r)return!1;if("odd"===t.position&&r%2!=1)return!1;if("even"===t.position&&r%2!=0)return!1;if("nth"===t.position&&r!==t.positionValue)return!1}return!0}matchesAny(t){return t.matchesAny(this)}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this._pathStringCache=null,this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}readOnly(){return this._view}}class it{constructor(t,e={},n){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this.data=n,this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let n=0,r="";for(;n<t.length;)t[n]===this.separator?n+1<t.length&&t[n+1]===this.separator?(r.trim()&&(e.push(this._parseSegment(r.trim())),r=""),e.push({type:"deep-wildcard"}),n+=2):(r.trim()&&e.push(this._parseSegment(r.trim())),r="",n++):(r+=t[n],n++);return r.trim()&&e.push(this._parseSegment(r.trim())),e}_parseSegment(t){const e={type:"tag"};let n=null,r=t;const i=t.match(/^([^\[]+)(\[[^\]]*\])(.*)$/);if(i&&(r=i[1]+i[3],i[2])){const t=i[2].slice(1,-1);t&&(n=t)}let s,a,o=r;if(r.includes("::")){const e=r.indexOf("::");if(s=r.substring(0,e).trim(),o=r.substring(e+2).trim(),!s)throw new Error(`Invalid namespace in pattern: ${t}`)}let l=null;if(o.includes(":")){const t=o.lastIndexOf(":"),e=o.substring(0,t).trim(),n=o.substring(t+1).trim();["first","last","odd","even"].includes(n)||/^nth\(\d+\)$/.test(n)?(a=e,l=n):a=o}else a=o;if(!a)throw new Error(`Invalid segment pattern: ${t}`);if(e.tag=a,s&&(e.namespace=s),n)if(n.includes("=")){const t=n.indexOf("=");e.attrName=n.substring(0,t).trim(),e.attrValue=n.substring(t+1).trim()}else e.attrName=n.trim();if(l){const t=l.match(/^nth\((\d+)\)$/);t?(e.position="nth",e.positionValue=parseInt(t[1],10)):e.position=l}return e}get length(){return this.segments.length}hasDeepWildcard(){return this._hasDeepWildcard}hasAttributeCondition(){return this._hasAttributeCondition}hasPositionSelector(){return this._hasPositionSelector}toString(){return this.pattern}}class st{constructor(){this._byDepthAndTag=new Map,this._wildcardByDepth=new Map,this._deepWildcards=[],this._patterns=new Set,this._sealed=!1}add(t){if(this._sealed)throw new TypeError("ExpressionSet is sealed. Create a new ExpressionSet to add more expressions.");if(this._patterns.has(t.pattern))return this;if(this._patterns.add(t.pattern),t.hasDeepWildcard())return this._deepWildcards.push(t),this;const e=t.length,n=t.segments[t.segments.length-1],r=n?.tag;if(r&&"*"!==r){const n=`${e}:${r}`;this._byDepthAndTag.has(n)||this._byDepthAndTag.set(n,[]),this._byDepthAndTag.get(n).push(t)}else this._wildcardByDepth.has(e)||this._wildcardByDepth.set(e,[]),this._wildcardByDepth.get(e).push(t);return this}addAll(t){for(const e of t)this.add(e);return this}has(t){return this._patterns.has(t.pattern)}get size(){return this._patterns.size}seal(){return this._sealed=!0,this}get isSealed(){return this._sealed}matchesAny(t){return null!==this.findMatch(t)}findMatch(t){const e=t.getDepth(),n=`${e}:${t.getCurrentTag()}`,r=this._byDepthAndTag.get(n);if(r)for(let e=0;e<r.length;e++)if(t.matches(r[e]))return r[e];const i=this._wildcardByDepth.get(e);if(i)for(let e=0;e<i.length;e++)if(t.matches(i[e]))return i[e];for(let e=0;e<this._deepWildcards.length;e++)if(t.matches(this._deepWildcards[e]))return this._deepWildcards[e];return null}}const at={cent:"¢",pound:"£",curren:"¤",yen:"¥",euro:"€",dollar:"$",euro:"€",fnof:"ƒ",inr:"₹",af:"؋",birr:"ብር",peso:"₱",rub:"₽",won:"₩",yuan:"¥",cedil:"¸"},ot={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'},lt={nbsp:" ",copy:"©",reg:"®",trade:"™",mdash:"—",ndash:"–",hellip:"…",laquo:"«",raquo:"»",lsquo:"‘",rsquo:"’",ldquo:"“",rdquo:"”",bull:"•",para:"¶",sect:"§",deg:"°",frac12:"½",frac14:"¼",frac34:"¾"},ht=new Set("!?\\\\/[]$%{}^&*()<>|+");function ut(t){if("#"===t[0])throw new Error(`[EntityReplacer] Invalid character '#' in entity name: "${t}"`);for(const e of t)if(ht.has(e))throw new Error(`[EntityReplacer] Invalid character '${e}' in entity name: "${t}"`);return t}function ct(...t){const e=Object.create(null);for(const n of t)if(n)for(const t of Object.keys(n)){const r=n[t];if("string"==typeof r)e[t]=r;else if(r&&"object"==typeof r&&void 0!==r.val){const n=r.val;"string"==typeof n&&(e[t]=n)}}return e}const dt="external",pt="base",ft="all",gt=Object.freeze({allow:0,leave:1,remove:2,throw:3}),mt=new Set([9,10,13]);class vt{constructor(t={}){var e;this._limit=t.limit||{},this._maxTotalExpansions=this._limit.maxTotalExpansions||0,this._maxExpandedLength=this._limit.maxExpandedLength||0,this._postCheck="function"==typeof t.postCheck?t.postCheck:t=>t,this._limitTiers=(e=this._limit.applyLimitsTo??dt)&&e!==dt?e===ft?new Set([ft]):e===pt?new Set([pt]):Array.isArray(e)?new Set(e):new Set([dt]):new Set([dt]),this._numericAllowed=t.numericAllowed??!0,this._baseMap=ct(ot,t.namedEntities||null),this._externalMap=Object.create(null),this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this._removeSet=new Set(t.remove&&Array.isArray(t.remove)?t.remove:[]),this._leaveSet=new Set(t.leave&&Array.isArray(t.leave)?t.leave:[]);const n=function(t){if(!t)return{xmlVersion:1,onLevel:gt.allow,nullLevel:gt.remove};const e=1.1===t.xmlVersion?1.1:1,n=gt[t.onNCR]??gt.allow,r=gt[t.nullNCR]??gt.remove;return{xmlVersion:e,onLevel:n,nullLevel:Math.max(r,gt.remove)}}(t.ncr);this._ncrXmlVersion=n.xmlVersion,this._ncrOnLevel=n.onLevel,this._ncrNullLevel=n.nullLevel}setExternalEntities(t){if(t)for(const e of Object.keys(t))ut(e);this._externalMap=ct(t)}addExternalEntity(t,e){ut(t),"string"==typeof e&&-1===e.indexOf("&")&&(this._externalMap[t]=e)}addInputEntities(t){this._totalExpansions=0,this._expandedLength=0,this._inputMap=ct(t)}reset(){return this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this}setXmlVersion(t){this._ncrXmlVersion=1.1===t?1.1:1}decode(t){if("string"!=typeof t||0===t.length)return t;const e=t,n=[],r=t.length;let i=0,s=0;const a=this._maxTotalExpansions>0,o=this._maxExpandedLength>0,l=a||o;for(;s<r;){if(38!==t.charCodeAt(s)){s++;continue}let e=s+1;for(;e<r&&59!==t.charCodeAt(e)&&e-s<=32;)e++;if(e>=r||59!==t.charCodeAt(e)){s++;continue}const h=t.slice(s+1,e);if(0===h.length){s++;continue}let u,c;if(this._removeSet.has(h))u="",void 0===c&&(c=dt);else{if(this._leaveSet.has(h)){s++;continue}if(35===h.charCodeAt(0)){const t=this._resolveNCR(h);if(void 0===t){s++;continue}u=t,c=pt}else{const t=this._resolveName(h);u=t?.value,c=t?.tier}}if(void 0!==u){if(s>i&&n.push(t.slice(i,s)),n.push(u),i=e+1,s=i,l&&this._tierCounts(c)){if(a&&(this._totalExpansions++,this._totalExpansions>this._maxTotalExpansions))throw new Error(`[EntityReplacer] Entity expansion count limit exceeded: ${this._totalExpansions} > ${this._maxTotalExpansions}`);if(o){const t=u.length-(h.length+2);if(t>0&&(this._expandedLength+=t,this._expandedLength>this._maxExpandedLength))throw new Error(`[EntityReplacer] Expanded content length limit exceeded: ${this._expandedLength} > ${this._maxExpandedLength}`)}}}else s++}i<r&&n.push(t.slice(i));const h=0===n.length?t:n.join("");return this._postCheck(h,e)}_tierCounts(t){return!!this._limitTiers.has(ft)||this._limitTiers.has(t)}_resolveName(t){return t in this._inputMap?{value:this._inputMap[t],tier:dt}:t in this._externalMap?{value:this._externalMap[t],tier:dt}:t in this._baseMap?{value:this._baseMap[t],tier:pt}:void 0}_classifyNCR(t){return 0===t?this._ncrNullLevel:t>=55296&&t<=57343||1===this._ncrXmlVersion&&t>=1&&t<=31&&!mt.has(t)?gt.remove:-1}_applyNCRAction(t,e,n){switch(t){case gt.allow:return String.fromCodePoint(n);case gt.remove:return"";case gt.leave:return;case gt.throw:throw new Error(`[EntityDecoder] Prohibited numeric character reference &${e}; (U+${n.toString(16).toUpperCase().padStart(4,"0")})`);default:return String.fromCodePoint(n)}}_resolveNCR(t){const e=t.charCodeAt(1);let n;if(n=120===e||88===e?parseInt(t.slice(2),16):parseInt(t.slice(1),10),Number.isNaN(n)||n<0||n>1114111)return;const r=this._classifyNCR(n);if(!this._numericAllowed&&r<gt.remove)return;const i=-1===r?this._ncrOnLevel:Math.max(this._ncrOnLevel,r);return this._applyNCRAction(i,t,n)}}function xt(t,e){if(!t)return{};const n=e.attributesGroupName?t[e.attributesGroupName]:t;if(!n)return{};const r={};for(const t in n)t.startsWith(e.attributeNamePrefix)?r[t.substring(e.attributeNamePrefix.length)]=n[t]:r[t]=n[t];return r}function bt(t){if(!t||"string"!=typeof t)return;const e=t.indexOf(":");if(-1!==e&&e>0){const n=t.substring(0,e);if("xmlns"!==n)return n}}class Et{constructor(t){var e;this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.parseXml=St,this.parseTextData=yt,this.resolveNameSpace=wt,this.buildAttributesMap=_t,this.isItStopNode=At,this.replaceEntitiesValue=It,this.readStopNodeData=Mt,this.saveTextToParentTag=Ct,this.addChild=Tt,this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const n of e){if("string"==typeof n&&t===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}}:()=>!1,this.entityExpansionCount=0,this.currentExpandedLength=0;let n={...ot};this.options.entityDecoder?this.entityDecoder=this.options.entityDecoder:("object"==typeof this.options.htmlEntities?n=this.options.htmlEntities:!0===this.options.htmlEntities&&(n={...lt,...at}),this.entityDecoder=new vt({namedEntities:n,numericAllowed:this.options.htmlEntities,limit:{maxTotalExpansions:this.options.processEntities.maxTotalExpansions,maxExpandedLength:this.options.processEntities.maxExpandedLength,applyLimitsTo:this.options.processEntities.appliesTo}})),this.matcher=new rt,this.readonlyMatcher=this.matcher.readOnly(),this.isCurrentNodeStopNode=!1,this.stopNodeExpressionsSet=new st;const r=this.options.stopNodes;if(r&&r.length>0){for(let t=0;t<r.length;t++){const e=r[t];"string"==typeof e?this.stopNodeExpressionsSet.add(new it(e)):e instanceof it&&this.stopNodeExpressionsSet.add(e)}this.stopNodeExpressionsSet.seal()}}}function yt(t,e,n,r,i,s,a){const o=this.options;if(void 0!==t&&(o.trimValues&&!r&&(t=t.trim()),t.length>0)){a||(t=this.replaceEntitiesValue(t,e,n));const r=o.jPath?n.toString():n,l=o.tagValueProcessor(e,t,r,i,s);return null==l?t:typeof l!=typeof t||l!==t?l:o.trimValues||t.trim()===t?kt(t,o.parseTagValue,o.numberParseOptions):t}}function wt(t){if(this.options.removeNSPrefix){const e=t.split(":"),n="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=n+e[1])}return t}const Nt=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function _t(t,e,n,r=!1){const i=this.options;if(!0===r||!0!==i.ignoreAttributes&&"string"==typeof t){const r=j(t,Nt),s=r.length,a={},o=new Array(s);let l=!1;const h={};for(let t=0;t<s;t++){const e=this.resolveNameSpace(r[t][1]),s=r[t][4];if(e.length&&void 0!==s){let r=s;i.trimValues&&(r=r.trim()),r=this.replaceEntitiesValue(r,n,this.readonlyMatcher),o[t]=r,h[e]=r,l=!0}}l&&"object"==typeof e&&e.updateCurrent&&e.updateCurrent(h);const u=i.jPath?e.toString():this.readonlyMatcher;let c=!1;for(let t=0;t<s;t++){const e=this.resolveNameSpace(r[t][1]);if(this.ignoreAttributesFn(e,u))continue;let n=i.attributeNamePrefix+e;if(e.length)if(i.transformAttributeName&&(n=i.transformAttributeName(n)),n=$t(n,i),void 0!==r[t][4]){const r=o[t],s=i.attributeValueProcessor(e,r,u);a[n]=null==s?r:typeof s!=typeof r||s!==r?s:kt(r,i.parseAttributeValue,i.numberParseOptions),c=!0}else i.allowBooleanAttributes&&(a[n]=!0,c=!0)}if(!c)return;if(i.attributesGroupName){const t={};return t[i.attributesGroupName]=a,t}return a}}const St=function(t){t=t.replace(/\r\n?/g,"\n");const e=new W("!xml");let n=e,r="";this.matcher.reset(),this.entityDecoder.reset(),this.entityExpansionCount=0,this.currentExpandedLength=0;const i=this.options,s=new G(i.processEntities),a=t.length;for(let o=0;o<a;o++)if("<"===t[o]){const l=t.charCodeAt(o+1);if(47===l){const e=Ot(t,">",o,"Closing Tag is not closed.");let s=t.substring(o+2,e).trim();if(i.removeNSPrefix){const t=s.indexOf(":");-1!==t&&(s=s.substr(t+1))}s=Vt(i.transformTagName,s,"",i).tagName,n&&(r=this.saveTextToParentTag(r,n,this.readonlyMatcher));const a=this.matcher.getCurrentTag();if(s&&i.unpairedTagsSet.has(s))throw new Error(`Unpaired tag can not be used as closing tag: </${s}>`);a&&i.unpairedTagsSet.has(a)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,n=this.tagsNodeStack.pop(),r="",o=e}else if(63===l){let e=Dt(t,o,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");r=this.saveTextToParentTag(r,n,this.readonlyMatcher);const s=this.buildAttributesMap(e.tagExp,this.matcher,e.tagName,!0);if(s){const t=s[this.options.attributeNamePrefix+"version"];this.entityDecoder.setXmlVersion(Number(t)||1)}if(i.ignoreDeclaration&&"?xml"===e.tagName||i.ignorePiTags);else{const t=new W(e.tagName);t.add(i.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&!0!==i.ignoreAttributes&&(t[":@"]=s),this.addChild(n,t,this.readonlyMatcher,o)}o=e.closeIndex+1}else if(33===l&&45===t.charCodeAt(o+2)&&45===t.charCodeAt(o+3)){const e=Ot(t,"--\x3e",o+4,"Comment is not closed.");if(i.commentPropName){const s=t.substring(o+4,e-2);r=this.saveTextToParentTag(r,n,this.readonlyMatcher),n.add(i.commentPropName,[{[i.textNodeName]:s}])}o=e}else if(33===l&&68===t.charCodeAt(o+2)){const e=s.readDocType(t,o);this.entityDecoder.addInputEntities(e.entities),o=e.i}else if(33===l&&91===t.charCodeAt(o+2)){const e=Ot(t,"]]>",o,"CDATA is not closed.")-2,s=t.substring(o+9,e);r=this.saveTextToParentTag(r,n,this.readonlyMatcher);let a=this.parseTextData(s,n.tagname,this.readonlyMatcher,!0,!1,!0,!0);null==a&&(a=""),i.cdataPropName?n.add(i.cdataPropName,[{[i.textNodeName]:s}]):n.add(i.textNodeName,a),o=e+2}else{let s=Dt(t,o,i.removeNSPrefix);if(!s){const e=t.substring(Math.max(0,o-50),Math.min(a,o+50));throw new Error(`readTagExp returned undefined at position ${o}. Context: "${e}"`)}let l=s.tagName;const h=s.rawTagName;let u=s.tagExp,c=s.attrExpPresent,d=s.closeIndex;if(({tagName:l,tagExp:u}=Vt(i.transformTagName,l,u,i)),i.strictReservedNames&&(l===i.commentPropName||l===i.cdataPropName||l===i.textNodeName||l===i.attributesGroupName))throw new Error(`Invalid tag name: ${l}`);n&&r&&"!xml"!==n.tagname&&(r=this.saveTextToParentTag(r,n,this.readonlyMatcher,!1));const p=n;p&&i.unpairedTagsSet.has(p.tagname)&&(n=this.tagsNodeStack.pop(),this.matcher.pop());let f=!1;u.length>0&&u.lastIndexOf("/")===u.length-1&&(f=!0,"/"===l[l.length-1]?(l=l.substr(0,l.length-1),u=l):u=u.substr(0,u.length-1),c=l!==u);let g,m=null,v={};g=bt(h),l!==e.tagname&&this.matcher.push(l,{},g),l!==u&&c&&(m=this.buildAttributesMap(u,this.matcher,l),m&&(v=xt(m,i))),l!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode());const x=o;if(this.isCurrentNodeStopNode){let e="";if(f)o=s.closeIndex;else if(i.unpairedTagsSet.has(l))o=s.closeIndex;else{const n=this.readStopNodeData(t,h,d+1);if(!n)throw new Error(`Unexpected end of ${h}`);o=n.i,e=n.tagContent}const r=new W(l);m&&(r[":@"]=m),r.add(i.textNodeName,e),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(n,r,this.readonlyMatcher,x)}else{if(f){({tagName:l,tagExp:u}=Vt(i.transformTagName,l,u,i));const t=new W(l);m&&(t[":@"]=m),this.addChild(n,t,this.readonlyMatcher,x),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else{if(i.unpairedTagsSet.has(l)){const t=new W(l);m&&(t[":@"]=m),this.addChild(n,t,this.readonlyMatcher,x),this.matcher.pop(),this.isCurrentNodeStopNode=!1,o=s.closeIndex;continue}{const t=new W(l);if(this.tagsNodeStack.length>i.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(n),m&&(t[":@"]=m),this.addChild(n,t,this.readonlyMatcher,x),n=t}}r="",o=d}}}else r+=t[o];return e.child};function Tt(t,e,n,r){this.options.captureMetaData||(r=void 0);const i=this.options.jPath?n.toString():n,s=this.options.updateTag(e.tagname,i,e[":@"]);!1===s||("string"==typeof s?(e.tagname=s,t.addChild(e,r)):t.addChild(e,r))}function It(t,e,n){const r=this.options.processEntities;if(!r||!r.enabled)return t;if(r.allowedTags){const i=this.options.jPath?n.toString():n;if(!(Array.isArray(r.allowedTags)?r.allowedTags.includes(e):r.allowedTags(e,i)))return t}if(r.tagFilter){const i=this.options.jPath?n.toString():n;if(!r.tagFilter(e,i))return t}return this.entityDecoder.decode(t)}function Ct(t,e,n,r){return t&&(void 0===r&&(r=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,n,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,r))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function At(){return 0!==this.stopNodeExpressionsSet.size&&this.matcher.matchesAny(this.stopNodeExpressionsSet)}function Ot(t,e,n,r){const i=t.indexOf(e,n);if(-1===i)throw new Error(r);return i+e.length-1}function Pt(t,e,n,r){const i=t.indexOf(e,n);if(-1===i)throw new Error(r);return i}function Dt(t,e,n,r=">"){const i=function(t,e,n=">"){let r=0;const i=[],s=t.length,a=n.charCodeAt(0),o=n.length>1?n.charCodeAt(1):-1;for(let n=e;n<s;n++){const e=t.charCodeAt(n);if(r)e===r&&(r=0);else if(34===e||39===e)r=e;else if(e===a){if(-1===o)return{data:String.fromCharCode(...i),index:n};if(t.charCodeAt(n+1)===o)return{data:String.fromCharCode(...i),index:n}}else if(9===e){i.push(32);continue}i.push(e)}}(t,e+1,r);if(!i)return;let s=i.data;const a=i.index,o=s.search(/\s/);let l=s,h=!0;-1!==o&&(l=s.substring(0,o),s=s.substring(o+1).trimStart());const u=l;if(n){const t=l.indexOf(":");-1!==t&&(l=l.substr(t+1),h=l!==i.data.substr(t+1))}return{tagName:l,tagExp:s,closeIndex:a,attrExpPresent:h,rawTagName:u}}function Mt(t,e,n){const r=n;let i=1;const s=t.length;for(;n<s;n++)if("<"===t[n]){const s=t.charCodeAt(n+1);if(47===s){const s=Pt(t,">",n,`${e} is not closed`);if(t.substring(n+2,s).trim()===e&&(i--,0===i))return{tagContent:t.substring(r,n),i:s};n=s}else if(63===s)n=Ot(t,"?>",n+1,"StopNode is not closed.");else if(33===s&&45===t.charCodeAt(n+2)&&45===t.charCodeAt(n+3))n=Ot(t,"--\x3e",n+3,"StopNode is not closed.");else if(33===s&&91===t.charCodeAt(n+2))n=Ot(t,"]]>",n,"StopNode is not closed.")-2;else{const r=Dt(t,n,">");r&&((r&&r.tagName)===e&&"/"!==r.tagExp[r.tagExp.length-1]&&i++,n=r.closeIndex)}}}function kt(t,e,n){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&function(t,e={}){if(e=Object.assign({},tt,e),!t||"string"!=typeof t)return t;let n=t.trim();if(0===n.length)return t;if(void 0!==e.skipLike&&e.skipLike.test(n))return t;if("0"===n)return 0;if(e.hex&&Q.test(n))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(n);if(isFinite(n)){if(n.includes("e")||n.includes("E"))return function(t,e,n){if(!n.eNotation)return t;const r=e.match(et);if(r){let i=r[1]||"";const s=-1===r[3].indexOf("e")?"E":"e",a=r[2],o=i?t[a.length+1]===s:t[a.length]===s;return a.length>1&&o?t:(1!==a.length||!r[3].startsWith(`.${s}`)&&r[3][0]!==s)&&a.length>0?n.leadingZeros&&!o?(e=(r[1]||"")+r[3],Number(e)):t:Number(e)}return t}(t,n,e);{const i=H.exec(n);if(i){const s=i[1]||"",a=i[2];let o=(r=i[3])&&-1!==r.indexOf(".")?("."===(r=r.replace(/0+$/,""))?r="0":"."===r[0]?r="0"+r:"."===r[r.length-1]&&(r=r.substring(0,r.length-1)),r):r;const l=s?"."===t[a.length+1]:"."===t[a.length];if(!e.leadingZeros&&(a.length>1||1===a.length&&!l))return t;{const r=Number(n),i=String(r);if(0===r)return r;if(-1!==i.search(/[eE]/))return e.eNotation?r:t;if(-1!==n.indexOf("."))return"0"===i||i===o||i===`${s}${o}`?r:t;let l=a?o:n;return a?l===i||s+l===i?r:t:l===i||l===s+i?r:t}}return t}}var r;return function(t,e,n){const r=e===1/0;switch(n.infinity.toLowerCase()){case"null":return null;case"infinity":return e;case"string":return r?"Infinity":"-Infinity";default:return t}}(t,Number(n),e)}(t,n)}return void 0!==t?t:""}function Vt(t,e,n,r){if(t){const r=t(e);n===e&&(n=r),e=r}return{tagName:e=$t(e,r),tagExp:n}}function $t(t,e){if(F.includes(t))throw new Error(`[SECURITY] Invalid name: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);return U.includes(t)?e.onDangerousProperty(t):t}const jt=W.getMetaDataSymbol();function Lt(t,e){if(!t||"object"!=typeof t)return{};if(!e)return t;const n={};for(const r in t)r.startsWith(e)?n[r.substring(e.length)]=t[r]:n[r]=t[r];return n}function Ut(t,e,n,r){return Ft(t,e,n,r)}function Ft(t,e,n,r){let i;const s={};for(let a=0;a<t.length;a++){const o=t[a],l=Rt(o);if(void 0!==l&&l!==e.textNodeName){const t=Lt(o[":@"]||{},e.attributeNamePrefix);n.push(l,t)}if(l===e.textNodeName)void 0===i?i=o[l]:i+=""+o[l];else{if(void 0===l)continue;if(o[l]){let t=Ft(o[l],e,n,r);const i=qt(t,e);if(o[":@"]?Xt(t,o[":@"],r,e):1!==Object.keys(t).length||void 0===t[e.textNodeName]||e.alwaysCreateTextNode?0===Object.keys(t).length&&(e.alwaysCreateTextNode?t[e.textNodeName]="":t=""):t=t[e.textNodeName],void 0!==o[jt]&&"object"==typeof t&&null!==t&&(t[jt]=o[jt]),void 0!==s[l]&&Object.prototype.hasOwnProperty.call(s,l))Array.isArray(s[l])||(s[l]=[s[l]]),s[l].push(t);else{const n=e.jPath?r.toString():r;e.isArray(l,n,i)?s[l]=[t]:s[l]=t}void 0!==l&&l!==e.textNodeName&&n.pop()}}}return"string"==typeof i?i.length>0&&(s[e.textNodeName]=i):void 0!==i&&(s[e.textNodeName]=i),s}function Rt(t){const e=Object.keys(t);for(let t=0;t<e.length;t++){const n=e[t];if(":@"!==n)return n}}function Xt(t,e,n,r){if(e){const i=Object.keys(e),s=i.length;for(let a=0;a<s;a++){const s=i[a],o=s.startsWith(r.attributeNamePrefix)?s.substring(r.attributeNamePrefix.length):s,l=r.jPath?n.toString()+"."+o:n;r.isArray(s,l,!0,!0)?t[s]=[e[s]]:t[s]=e[s]}}}function qt(t,e){const{textNodeName:n}=e,r=Object.keys(t).length;return 0===r||!(1!==r||!t[n]&&"boolean"!=typeof t[n]&&0!==t[n])}const Bt={allowBooleanAttributes:!1,unpairedTags:[]};function Yt(t,e){e=Object.assign({},Bt,e);const n=[];let r=!1,i=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(let s=0;s<t.length;s++)if("<"===t[s]&&"?"===t[s+1]){if(s+=2,s=Wt(t,s),s.err)return s}else{if("<"!==t[s]){if(zt(t[s]))continue;return ee("InvalidChar","char '"+t[s]+"' is not expected.",ie(t,s))}{let a=s;if(s++,"!"===t[s]){s=Gt(t,s);continue}{let o=!1;"/"===t[s]&&(o=!0,s++);let l="";for(;s<t.length&&">"!==t[s]&&" "!==t[s]&&"\t"!==t[s]&&"\n"!==t[s]&&"\r"!==t[s];s++)l+=t[s];if(l=l.trim(),"/"===l[l.length-1]&&(l=l.substring(0,l.length-1),s--),!re(l)){let e;return e=0===l.trim().length?"Invalid space after '<'.":"Tag '"+l+"' is an invalid name.",ee("InvalidTag",e,ie(t,s))}const h=Kt(t,s);if(!1===h)return ee("InvalidAttr","Attributes for '"+l+"' have open quote.",ie(t,s));let u=h.value;if(s=h.index,"/"===u[u.length-1]){const n=s-u.length;u=u.substring(0,u.length-1);const i=Ht(u,e);if(!0!==i)return ee(i.err.code,i.err.msg,ie(t,n+i.err.line));r=!0}else if(o){if(!h.tagClosed)return ee("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",ie(t,s));if(u.trim().length>0)return ee("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",ie(t,a));if(0===n.length)return ee("InvalidTag","Closing tag '"+l+"' has not been opened.",ie(t,a));{const e=n.pop();if(l!==e.tagName){let n=ie(t,e.tagStartPos);return ee("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+n.line+", col "+n.col+") instead of closing tag '"+l+"'.",ie(t,a))}0==n.length&&(i=!0)}}else{const o=Ht(u,e);if(!0!==o)return ee(o.err.code,o.err.msg,ie(t,s-u.length+o.err.line));if(!0===i)return ee("InvalidXml","Multiple possible root nodes found.",ie(t,s));-1!==e.unpairedTags.indexOf(l)||n.push({tagName:l,tagStartPos:a}),r=!0}for(s++;s<t.length;s++)if("<"===t[s]){if("!"===t[s+1]){s++,s=Gt(t,s);continue}if("?"!==t[s+1])break;if(s=Wt(t,++s),s.err)return s}else if("&"===t[s]){const e=te(t,s);if(-1==e)return ee("InvalidChar","char '&' is not expected.",ie(t,s));s=e}else if(!0===i&&!zt(t[s]))return ee("InvalidXml","Extra text at the end",ie(t,s));"<"===t[s]&&s--}}}return r?1==n.length?ee("InvalidTag","Unclosed tag '"+n[0].tagName+"'.",ie(t,n[0].tagStartPos)):!(n.length>0)||ee("InvalidXml","Invalid '"+JSON.stringify(n.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):ee("InvalidXml","Start tag expected.",1)}function zt(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function Wt(t,e){const n=e;for(;e<t.length;e++)if("?"==t[e]||" "==t[e]){const r=t.substr(n,e-n);if(e>5&&"xml"===r)return ee("InvalidXml","XML declaration allowed only at the start of the document.",ie(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function Gt(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e<t.length;e++)if("-"===t[e]&&"-"===t[e+1]&&">"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let n=1;for(e+=8;e<t.length;e++)if("<"===t[e])n++;else if(">"===t[e]&&(n--,0===n))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e<t.length;e++)if("]"===t[e]&&"]"===t[e+1]&&">"===t[e+2]){e+=2;break}return e}const Zt='"',Jt="'";function Kt(t,e){let n="",r="",i=!1;for(;e<t.length;e++){if(t[e]===Zt||t[e]===Jt)""===r?r=t[e]:r!==t[e]||(r="");else if(">"===t[e]&&""===r){i=!0;break}n+=t[e]}return""===r&&{value:n,index:e,tagClosed:i}}const Qt=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function Ht(t,e){const n=j(t,Qt),r={};for(let t=0;t<n.length;t++){if(0===n[t][1].length)return ee("InvalidAttr","Attribute '"+n[t][2]+"' has no space in starting.",se(n[t]));if(void 0!==n[t][3]&&void 0===n[t][4])return ee("InvalidAttr","Attribute '"+n[t][2]+"' is without value.",se(n[t]));if(void 0===n[t][3]&&!e.allowBooleanAttributes)return ee("InvalidAttr","boolean attribute '"+n[t][2]+"' is not allowed.",se(n[t]));const i=n[t][2];if(!ne(i))return ee("InvalidAttr","Attribute '"+i+"' is an invalid name.",se(n[t]));if(Object.prototype.hasOwnProperty.call(r,i))return ee("InvalidAttr","Attribute '"+i+"' is repeated.",se(n[t]));r[i]=1}return!0}function te(t,e){if(";"===t[++e])return-1;if("#"===t[e])return function(t,e){let n=/\d/;for("x"===t[e]&&(e++,n=/[\da-fA-F]/);e<t.length;e++){if(";"===t[e])return e;if(!t[e].match(n))break}return-1}(t,++e);let n=0;for(;e<t.length;e++,n++)if(!(t[e].match(/\w/)&&n<20)){if(";"===t[e])break;return-1}return e}function ee(t,e,n){return{err:{code:t,msg:e,line:n.line||n,col:n.col}}}function ne(t){return L(t)}function re(t){return L(t)}function ie(t,e){const n=t.substring(0,e).split(/\r?\n/);return{line:n.length,col:n[n.length-1].length+1}}function se(t){return t.startIndex+t[1].length}class ae{constructor(t){this.externalEntities={},this.options=Y(t)}parse(t,e){if("string"!=typeof t&&t.toString)t=t.toString();else if("string"!=typeof t)throw new Error("XML data is accepted in String or Bytes[] form.");if(e){!0===e&&(e={});const n=Yt(t,e);if(!0!==n)throw Error(`${n.err.msg}:${n.err.line}:${n.err.col}`)}const n=new Et(this.options);n.entityDecoder.setExternalEntities(this.externalEntities);const r=n.parseXml(t);return this.options.preserveOrder||void 0===r?r:Ut(r,this.options,n.matcher,n.readonlyMatcher)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return W.getMetaDataSymbol()}}const oe={validate:Yt},le={minLength:(t,e)=>e.length>=t,maxLength:(t,e)=>e.length<=t,length:(t,e)=>e.length===t,pattern:(t,e,n="")=>new RegExp(t,n).test(e),fixed:(t,e)=>t===e,in:(t,e)=>t.split(",").indexOf(e)>-1},he={min:(t,e)=>Number(e)>=t,max:(t,e)=>Number(e)<=t},ue={minOccurs:(t,e)=>e>=t,maxOccurs:(t,e)=>e<=t},ce=(t,e)=>Date.parse(e)>=Date.parse(t),de=(t,e)=>Date.parse(e)<=Date.parse(t),pe=["positiveInteger","integer","positiveDecimal","decimal","number"];class fe{constructor(t,e,n){this.options=t,this.failures=[],this.validators=e,this._globalUnique=new Map,this._siblingOrder=n||new Map}traverse(t,e,n,r){if(Array.isArray(t)){if(void 0!==n&&void 0!==n["@rules"]&&void 0!==n["@rules"].repeatable)return this.checkOccurences(n["@rules"],t.length,r),void t.forEach((i,s)=>{const a=r+"["+s+"]";Object.keys(n).length>1?this.callForCommonProperties(t[s],n,a):this.traverse(t[s],e,n,a)});this.failures.push({code:"unexpected sequence",path:r.substr(1)})}else"object"==typeof t?this.callForCommonProperties(t,n,r):("object"==typeof n&&n["@rules"]?this.checkDataAndType(t,e,n,r):this.isMapType(n)&&this.validateMandatoryFields(n,r),this.applyCustomValidators(t,n,r))}applyCustomValidators(t,e,n){if(e["@rules"]&&e["@rules"].checkBy&&"function"==typeof this.validators[e["@rules"].checkBy]){let r=this.validators[e["@rules"].checkBy](t,n.substr(1));"object"==typeof r&&this.failures.push(r)}}callForCommonProperties(t,e,n){const r=function(t,e){const n={data:[],rules:[],common:[]};for(let r=0;r<t.length;r++)-1===e.indexOf(t[r])?n.data.push(t[r]):n.common.push(t[r]);for(let r=0;r<e.length;r++)-1===t.indexOf(e[r])&&"@"!==e[r]&&n.rules.push(e[r]);return n}(Object.keys(t),Object.keys(e));this.checkUnknownSiblings(r,n),this.checkMissingSiblings(r,e,n),this.applyCustomValidators(t,e,n);const i=this._buildSiblingValues(t,e,r.common);r.common.forEach(r=>{const i=n+"."+r;this.traverse(t[r],r,e[r],i)}),this._checkOrderingConstraints(t,e,r.common,n),this._checkUniquenessConstraints(t,e,r.common,n,i),this._checkRelationalConstraints(t,e,r.common,n)}_checkOrderingConstraints(t,e,n,r){const i=r.substr(1),s=this._siblingOrder.get(i);s&&n.forEach(n=>{const i=e[n];if(!i||!i["@rules"])return;const a=i["@rules"],o=s.indexOf(n);if(-1!==o){if(a.after){const e=a.after;if(void 0===t[e])return;const i=s.indexOf(e);if(-1===i)return;o<=i&&this.failures.push({code:"after",path:(r+"."+n).substr(1),actual:n,expected:e})}if(a.before){const e=a.before;if(void 0===t[e])return;const i=s.indexOf(e);if(-1===i)return;o>=i&&this.failures.push({code:"before",path:(r+"."+n).substr(1),actual:n,expected:e})}}})}_checkRelationalConstraints(t,e,n,r){const i=["sameAs","notSameAs","lessThan","moreThan"];n.forEach(n=>{const s=e[n];if(!s||!s["@rules"])return;const a=s["@rules"];if(!i.some(t=>void 0!==a[t]))return;const o=t[n];if(null==o)return;if("object"==typeof o)return;const l=a.type||"string";i.forEach(e=>{if(void 0===a[e])return;const i=a[e],s=t[i];if(null==s)return;if("object"==typeof s)return;const h=this._relationalCompare(String(o),String(s),l);if(null===h)return;let u=!1;"sameAs"===e&&0!==h&&(u=!0),"notSameAs"===e&&0===h&&(u=!0),"lessThan"===e&&h>=0&&(u=!0),"moreThan"===e&&h<=0&&(u=!0),u&&this.failures.push({code:e,path:(r+"."+n).substr(1),actual:String(o),expected:i})})})}_relationalCompare(t,e,n){if("date"===n){const n=Date.parse(t),r=Date.parse(e);return isNaN(n)||isNaN(r)?null:n-r}if(-1!==pe.indexOf(n)){const n=Number(t),r=Number(e);return isNaN(n)||isNaN(r)?null:n-r}return t<e?-1:t>e?1:0}_buildSiblingValues(t,e,n){const r=new Map;return n.forEach(e=>{const n=t[e];Array.isArray(n)?r.set(e,n.map(String)):null!=n&&"object"!=typeof n&&r.set(e,[String(n)])}),r}_checkUniquenessConstraints(t,e,n,r,i){n.forEach(n=>{const s=e[n];if(!s||!s["@rules"])return;const a=s["@rules"].unique;if(!a)return;const o=i.get(n)||[];"global"===a&&o.forEach((e,i)=>{const s=Array.isArray(t[n])?(r+"."+n+"["+i+"]").substr(1):(r+"."+n).substr(1);this._assertGlobalUnique(n,e,s)})})}_checkUniqueInCollection(t,e,n){const r=new Map;t.forEach((t,i)=>{const s=t[e];if(null==s||"object"==typeof s)return;const a=String(s);r.has(a)?this.failures.push({code:"unique",path:(n+"["+i+"]."+e).substr(1),value:a}):r.set(a,i)})}_assertGlobalUnique(t,e,n){this._globalUnique.has(t)||this._globalUnique.set(t,new Set);const r=this._globalUnique.get(t);r.has(e)?this.failures.push({code:"unique",path:n,value:e}):r.add(e)}checkDataAndType(t,e,n,r){!0===n["@rules"].repeatable&&this.checkOccurences(n["@rules"],1,r);const i=n["@rules"].type,s=this._expandRange(n);if("map"===i||!i&&this.isMapType(n))"string"==typeof t&&t.length>0&&this.failures.push({code:"unexpected value in a map",path:r.substr(1),value:t}),this.validateMandatoryFields(n,r);else if("date"===i)this.validateDate(t,i,r),this._checkDateBounds(n,t,r);else if("boolean"===i)this.validateBoolean(t,i,r);else if(-1!==pe.indexOf(i))this.isValidNum(i,t)?this.assertValue(s["@rules"],"num",Number(t),r):this.setInvalidDataType(i,r,t);else{if("string"!==i&&i)throw new Error("Unsupported data type in Rules:"+i);this.assertValue(s["@rules"],"string",t,r)}}_expandRange(t){if(!t["@rules"]||!t["@rules"].range)return t;const e=function(t){if("string"!=typeof t)return null;const e=t.split("..");if(2!==e.length)return null;const n=Number(e[0]),r=Number(e[1]);return isNaN(n)||isNaN(r)?null:{min:n,max:r}}(t["@rules"].range);return e?{...t,"@rules":{...t["@rules"],min:void 0!==t["@rules"].min?t["@rules"].min:String(e.min),max:void 0!==t["@rules"].max?t["@rules"].max:String(e.max)}}:t}_checkDateBounds(t,e,n){if(isNaN(Date.parse(e)))return;const r=t["@rules"];let i=r.min,s=r.max;if(r.range&&(!i||!s)){const t=function(t){if("string"!=typeof t)return null;const e=t.split("..");if(2!==e.length)return null;const[n,r]=e;return isNaN(Date.parse(n))||isNaN(Date.parse(r))?null:{min:n,max:r}}(r.range);t&&(i||(i=t.min),s||(s=t.max))}void 0===i||ce(i,e)||this.setInvalidValueError("min",n,e,i),void 0===s||de(s,e)||this.setInvalidValueError("max",n,e,s)}validateMandatoryFields(t,e){const n=Object.keys(t);for(let r=0;r<n.length;r++){if("@rules"===n[r])continue;const i=t[n[r]]["@rules"];i&&(i.minOccurs&&i.minOccurs>0||void 0!==i.nillable&&"false"===i.nillable)&&this.failures.push({code:"missing",path:(e+"."+n[r]).substr(1)})}}isMapType(t){if("string"==typeof t)return!1;const e=Object.keys(t);return t["@rules"]?1!==e.length&&void 0:0!==e.length}setInvalidValueError(t,e,n,r){this.failures.push({code:t,path:e.substr(1),actual:n,expected:r})}checkOccurences(t,e,n){["minOccurs","maxOccurs"].forEach(r=>{if(void 0!==t[r]){const i=Number(t[r]);ue[r](i,e)||this.setInvalidValueError(r,n,e,i)}})}checkNumeric(t,e,n){["min","max"].forEach(r=>{if(void 0!==t[r]){const i=Number(t[r]);he[r](i,e)||this.setInvalidValueError(r,n,e,i)}})}checkString(t,e,n){["minLength","maxLength","length"].forEach(r=>{if(void 0!==t[r]){const i=Number(t[r]);le[r](i,e)||this.setInvalidValueError(r,n,e,i)}}),["fixed","in"].forEach(r=>{if(void 0!==t[r]){const i=t[r];le[r](i,e)||this.setInvalidValueError(r,n,e,i)}}),["pattern","pattern_i","pattern_im","pattern_mi"].forEach(r=>{if(void 0!==t[r]){let i="";r.length>8&&(i=r.substring(8));const s=t[r];le.pattern(s,e,i)||this.setInvalidValueError("pattern",n,e,s)}})}assertValue(t,e,n,r){"string"===e?this.checkString(t,n,r):"num"===e&&this.checkNumeric(t,n,r)}validateBoolean(t,e,n){-1===this.options.boolean.indexOf(t)&&this.setInvalidDataType(e,n,t)}isValidNum(t,e){if(isNaN(e))return!1;{const n=Number(e);if("positiveInteger"===t&&n<0||"positiveDecimal"===t&&n<0||"integer"===t&&!function(t){const e=parseFloat(t);return(0|e)===e}(e))return!1}return!0}validateDate(t,e,n){const r=Date.parse(t);isNaN(r)&&this.setInvalidDataType(e,n,t)}setInvalidDataType(t,e,n){this.failures.push({code:"not a "+t,path:e.substr(1),value:n})}checkMissingSiblings(t,e,n){t.rules&&t.rules.forEach(t=>{const r=e[t]["@rules"];r&&("false"===r.nillable||r.minOccurs>0)&&this.failures.push({code:"missing",path:(n+"."+t).substr(1)})})}checkUnknownSiblings(t,e){t.data&&!this.options.unknownAllow&&t.data.forEach(t=>{this.failures.push({code:"unknown",path:(e+"."+t).substr(1)})})}}const ge=fe.prototype.traverse;fe.prototype.traverse=function(t,e,n,r){if(Array.isArray(t)&&void 0!==n&&void 0!==n["@rules"]&&void 0!==n["@rules"].repeatable)return this.checkOccurences(n["@rules"],t.length,r),t.forEach((i,s)=>{const a=r+"["+s+"]";if(Object.keys(n).length>1)this.callForCommonProperties(t[s],n,a);else{const r=n;ge.call(this,t[s],e,r,a)}}),void(t.length>0&&"object"==typeof t[0]&&this._runSiblingUniqueness(t,n,r));ge.call(this,t,e,n,r)},fe.prototype._runSiblingUniqueness=function(t,e,n){Object.keys(e).filter(t=>"@rules"!==t).forEach(r=>{const i=e[r];i&&i["@rules"]&&"true"===i["@rules"].unique&&this._checkUniqueInCollection(t,r,n)})};const me={unknownAllow:!0,boolean:["true","false"]};function ve(t){if(!t)throw new Error("Empty data");if("string"!=typeof t)throw new Error("Not a valid string");const e=oe.validate(t,{allowBooleanAttributes:!0});if(!0!==e)throw new Error(e.err.msg+":"+e.err.line)}const xe=class{constructor(t,e){ve(t);const n=new ae({ignoreAttributes:!1,attributesGroupName:"@rules",attributeNamePrefix:"",allowBooleanAttributes:!0});this.rules=n.parse(t),this.options=Object.assign({},me,e),this.validators={},this.data=null}register(t,e){this.validators[t]=e}validate(t){ve(t);const e=new Map,n=new ae({ignoreAttributes:!1,attributesGroupName:":a",attributeNamePrefix:"",parseTagValue:!1,tagValueProcessor:(t,n,r)=>{const i=r.lastIndexOf("."),s=-1===i?"":r.substring(0,i);e.has(s)||e.set(s,[]);const a=e.get(s);return a[a.length-1]!==t&&a.push(t),n}}).parse(t);this.data=n;const r=new fe(this.options,this.validators,e);return r.traverse(n,"",this.rules,""),r.failures}};var be=function(){function t(){}return t.validate=function(t,e){return function(t,e){e=Object.assign({},y,e);var n=[],r=!1,i=!1;"\ufeff"===t[0]&&(t=t.substr(1));var s="1.0";if(t.startsWith("<?xml")){var a=function(t){var e=t.indexOf("?>");-1===e&&P("InvalidXml",'XML declaration is not closed with "?>".',{line:1,col:1});for(var n,r=t.substring(5,e),i=e+2,s=["version","encoding","standalone"],a=/\s+([\w]+)\s*=\s*(?:"([^"]*)"|'([^']*)')/g,o="1.0",l=-1;null!==(n=a.exec(r));){var h=n[1],u=void 0!==n[2]?n[2]:n[3],c=n.index,d=s.indexOf(h);-1===d&&P("InvalidXml",'XML declaration contains unknown attribute "'+h+'". Allowed: version, encoding, standalone.',{line:1,col:6+c}),d<=l&&P("InvalidXml",'XML declaration attribute "'+h+'" is out of order. Required order: version, encoding, standalone.',{line:1,col:6+c}),l=d,"version"===h?("1.0"!==u&&"1.1"!==u&&P("InvalidXml",'XML declaration version "'+u+'" is not supported. Must be "1.0" or "1.1".',{line:1,col:6+c}),o=u):"standalone"===h&&"yes"!==u&&"no"!==u&&P("InvalidXml",'XML declaration standalone "'+u+'" is invalid. Must be "yes" or "no".',{line:1,col:6+c})}var p=r.replace(/\s+[\w]+\s*=\s*(?:"[^"]*"|'[^']*')/g,"").trim();return p.length>0&&P("InvalidXml",'XML declaration contains invalid content: "'+p+'".',{line:1,col:1}),{version:o,end:i}}(t);if(a.err)return a;s=a.version,t=t.substring(a.end)}for(var o=new c(e.docType,s),l=0;l<t.length;l++)if("<"===t[l]&&"?"===t[l+1]){if((l=N(t,l+=2,s)).err)return l}else if("<"===t[l]){var h=l;if("!"===t[++l]){try{l=_(t,l,o)}catch(e){P("InvalidTag",e.message,M(t,l-1))}continue}var u=!1;"/"===t[l]&&(u=!0,l++);for(var d="";l<t.length&&">"!==t[l]&&" "!==t[l]&&"\t"!==t[l]&&"\n"!==t[l]&&"\r"!==t[l];l++)d+=t[l];"/"===(d=d.trim())[d.length-1]&&(d=d.substring(0,d.length-1),l--),D(d)||P("InvalidTag",0===d.trim().length?"Invalid space after '<'.":"Tag '"+d+"' is an invalid name.",M(t,h));var p=I(t,l);!1===p&&P("InvalidAttr","Attributes for '"+d+"' have open quote.",M(t,l));var f=p.value;if(l=p.index,"/"===f[f.length-1]){var g=l-f.length,m=A(f=f.substring(0,f.length-1),e,s);!0===m?(!0===i&&P("InvalidXml","Multiple possible root nodes found.",M(t,h)),r=!0,0===n.length&&(i=!0)):P(m.err.code,m.err.msg,M(t,g+m.err.line))}else if(u)if(p.tagClosed)if(f.trim().length>0)P("InvalidTag","Closing tag '"+d+"' can't have attributes or invalid starting.",M(t,h));else if(0===n.length)P("InvalidTag","Closing tag '"+d+"' has not been opened.",M(t,h));else{var v=n.pop();if(d!==v.tagName){var x=M(t,v.tagStartPos);P("InvalidTag","Expected closing tag '"+v.tagName+"' (opened in line "+x.line+", col "+x.col+") instead of closing tag '"+d+"'.",M(t,h))}0===n.length&&(i=!0)}else P("InvalidTag","Closing tag '"+d+"' doesn't have proper closing.",M(t,l));else{var b=A(f,e,s);!0!==b&&P(b.err.code,b.err.msg,M(t,l-f.length+b.err.line)),!0===i?P("InvalidXml","Multiple possible root nodes found.",M(t,l)):-1!==e.unpairedTags.indexOf(d)||n.push({tagName:d,tagStartPos:h}),r=!0}for(l++;l<t.length;l++)if("<"===t[l]){if("!"===t[l+1]){l++;try{l=_(t,l,o)}catch(e){P("InvalidDocType",e.message,M(t,l-1))}continue}if("?"!==t[l+1])break;if((l=N(t,l+=2,s)).err)return l}else if("&"===t[l]){var E=O(t,l);-1===E&&P("InvalidChar","char '&' is not expected.",M(t,l)),l=E}else!0!==i||w(t[l])||P("InvalidXml","Extra text at the end",M(t,l));"<"===t[l]&&l--}else{if(w(t[l]))continue;i&&P("InvalidXml","Extra text at the end: '"+t[l]+"' is not expected.",M(t,l)),P("InvalidChar","char '"+t[l]+"' is not expected.",M(t,l))}return r?1===n.length?P("InvalidTag","Unclosed tag '"+n[0].tagName+"'.",M(t,n[0].tagStartPos)):n.length>0&&P("InvalidXml","Invalid '"+JSON.stringify(n.map(function(t){return t.tagName})).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):P("InvalidXml","Start tag expected.",{line:1,col:1}),!0}(t,e)},t}();return e})());
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.fxp=e():t.fxp=e()}(this,()=>(()=>{"use strict";var t={d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{BusinessRulesValidator:()=>ye,SyntaxValidator:()=>we});const n=":A-Za-z_À-ÖØ-öø-˿Ͱ-ͽͿ-҆҈-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�",r=":A-Za-z_À-˿Ͱ-ͽͿ-҆҈-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",i=r+"\\-\\.\\d·̀-ͯ҇‿-⁀",s=(t,e,n="")=>{const r=`[${t.replace(":","")}][${e.replace(":","")}]*`;return{name:new RegExp(`^[${t}][${e}]*$`,n),ncName:new RegExp(`^${r}$`,n),qName:new RegExp(`^${r}(?::${r})?$`,n),nmToken:new RegExp(`^[${e}]+$`,n),nmTokens:new RegExp(`^[${e}]+(?:\\s+[${e}]+)*$`,n)}},a=s(n,n+"\\-\\.\\d·̀-ͯ‿-⁀"),o=s(r,i,"u"),l=":A-Za-z_",h=s(l,l+"\\-\\.\\d"),u=(t="1.0",e=!1)=>e?h:"1.1"===t?o:a,c=(t,{xmlVersion:e="1.0",asciiOnly:n=!1}={})=>u(e,n).name.test(t),d=["name","ncName","qName","nmToken","nmTokens"],p=(t,{xmlVersion:e="1.0",asciiOnly:n=!1,maxCacheSize:r=2048}={})=>{if(!d.includes(t))throw new TypeError(`Unknown production "${t}". Must be one of: ${d.join(", ")}`);const i=u(e,n)[t];let s=new Map;const a=t=>{const e=s.get(t);if(void 0!==e)return e;const n=i.test(t);return s.size<r&&s.set(t,n),n};return a.reset=()=>{s=new Map},a};var f={maxEntityCount:1/0,maxEntitySize:1/0},g=function(){function t(t,e){void 0===e&&(e="1.0"),this.options=Object.assign({},f,t),this.suppressValidationErr=!t,this.xmlVersion=e}var e=t.prototype;return e.validateDocType=function(t,e){if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");e+=9;for(var n=1,r=!1,i=!1,s=0;e<t.length;e++)if("<"!==t[e]||i)if(">"===t[e]){if(i?"-"===t[e-1]&&"-"===t[e-2]&&(i=!1,n--):n--,0===n)break}else"["===t[e]&&(r=!0);else{if(r&&v(t,"!ENTITY",e)){e+=7;var a=this._validateEntityExp(t,e+1,s);s=a[0],e=a[1]}else if(r&&v(t,"!ELEMENT",e))e+=8,e=this._validateElementExp(t,e+1);else{if(r&&v(t,"!ATTLIST",e)){e+=8,e=this._validateAttlistExp(t,e+1);continue}if(r&&v(t,"!NOTATION",e))e+=9,e=this._validateNotationExp(t,e+1);else{if(!v(t,"!--",e))throw new Error("Invalid DOCTYPE");i=!0}}n++}if(0!==n)throw new Error("Unclosed DOCTYPE");return e},e._validateEntityExp=function(t,e,n){for(var r=e=m(t,e);e<t.length&&!/\s/.test(t[e])&&'"'!==t[e]&&"'"!==t[e];)e++;var i,s=t.substring(r,e);if(x(s,this.xmlVersion),e=m(t,e),!this.suppressValidationErr){if("SYSTEM"===t.substring(e,e+6).toUpperCase())throw new Error("External entities are not supported");if("%"===t[e])throw new Error("Parameter entities are not supported")}var a=b(t,e,"entity");e=a[0],i=a[1];var o=this.options,l=o.maxEntitySize,h=o.maxEntityCount;if(i.length>l)throw new Error('Entity "'+s+'" size ('+i.length+") exceeds maximum allowed size ("+l+")");if(-1===i.indexOf("&")&&++n>h)throw new Error("Entity count ("+n+") exceeds maximum allowed ("+h+")");return[n,e-1]},e._validateNotationExp=function(t,e){for(var n=e=m(t,e);e<t.length&&!/\s/.test(t[e]);)e++;var r=t.substring(n,e);!this.suppressValidationErr&&x(r,this.xmlVersion),e=m(t,e);var i=t.substring(e,e+6).toUpperCase();if(!this.suppressValidationErr&&"SYSTEM"!==i&&"PUBLIC"!==i)throw new Error('Expected SYSTEM or PUBLIC, found "'+i+'"');return e=m(t,e+=i.length),"PUBLIC"===i?'"'!==t[e=m(t,e=b(t,e,"publicIdentifier")[0])]&&"'"!==t[e]||(e=b(t,e,"systemIdentifier")[0]):"SYSTEM"===i&&(e=b(t,e,"systemIdentifier")[0]),--e},e._validateElementExp=function(t,e){for(var n=e=m(t,e);e<t.length&&!/\s/.test(t[e]);)e++;var r=t.substring(n,e);if(!this.suppressValidationErr&&!c(r,{xmlVersion:this.xmlVersion}))throw new Error('Invalid element name: "'+r+'"');if("E"===t[e=m(t,e)]&&v(t,"MPTY",e))e+=4;else if("A"===t[e]&&v(t,"NY",e))e+=2;else if("("===t[e]){for(e++;e<t.length&&")"!==t[e];)e++;if(")"!==t[e])throw new Error("Unterminated content model")}else if(!this.suppressValidationErr)throw new Error('Invalid Element Expression, found "'+t[e]+'"');return e},e._validateAttlistExp=function(t,e){for(var n=e=m(t,e);e<t.length&&!/\s/.test(t[e]);)e++;x(t.substring(n,e),this.xmlVersion);for(var r=e=m(t,e);e<t.length&&!/\s/.test(t[e]);)e++;if(x(t.substring(r,e),this.xmlVersion),e=m(t,e),"NOTATION"===t.substring(e,e+8).toUpperCase()){if("("!==t[e=m(t,e+=8)])throw new Error("Expected '(', found \""+t[e]+'"');for(e++;e<t.length&&")"!==t[e];){for(var i=e;e<t.length&&"|"!==t[e]&&")"!==t[e];)e++;x(t.substring(i,e).trim(),this.xmlVersion),"|"===t[e]&&(e=m(t,++e))}if(")"!==t[e])throw new Error("Unterminated list of notations");e++}else{for(var s=e;e<t.length&&!/\s/.test(t[e]);)e++;var a=t.substring(s,e);if(!this.suppressValidationErr&&!["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"].includes(a.toUpperCase()))throw new Error('Invalid attribute type: "'+a+'"')}return e=m(t,e),"#REQUIRED"===t.substring(e,e+9).toUpperCase()?e+=9:"#IMPLIED"===t.substring(e,e+8).toUpperCase()?e+=8:e=b(t,e,"ATTLIST default value")[0],e},t}();function m(t,e){for(;e<t.length&&/\s/.test(t[e]);)e++;return e}function v(t,e,n){for(var r=0;r<e.length;r++)if(e[r]!==t[n+r+1])return!1;return!0}function x(t,e){if(void 0===e&&(e="1.0"),!c(t,{xmlVersion:e}))throw new Error('Invalid entity name "'+t+'"')}function b(t,e,n){var r=t[e];if('"'!==r&&"'"!==r)throw new Error("Expected quoted string for "+n+', found "'+r+'"');for(var i=++e;e<t.length&&t[e]!==r;)e++;if(t[e]!==r)throw new Error("Unterminated "+n+" value");var s=t.substring(i,e);return[++e,s]}function E(t){var e="function"==typeof Map?new Map:void 0;return E=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(y())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var i=new(t.bind.apply(t,r));return n&&w(i,n.prototype),i}(t,arguments,N(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),w(n,t)},E(t)}function y(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(y=function(){return!!t})()}function w(t,e){return w=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},w(t,e)}function N(t){return N=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},N(t)}var _=function(t){function e(e,n,r,i){var s;return(s=t.call(this,e)||this).name=s.constructor.name,s.code=n,s.line=r,s.col=i,null==Error.captureStackTrace||Error.captureStackTrace(s,s.constructor),s}var n,r;return r=t,(n=e).prototype=Object.create(r.prototype),n.prototype.constructor=n,w(n,r),e}(E(Error)),S={allowBooleanAttributes:!1,unpairedTags:[],docType:{maxEntityCount:1/0,maxEntitySize:1/0}};function T(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function I(t,e,n){for(var r=e,i=e,s=!1;e<t.length;e++){var a=t[e];if(!s&&(" "===a||"?"===a)){var o=t.substr(i,e-i);s=!0,"xml"===o.toLowerCase()?V("InvalidXml","XML declaration allowed only at the start of the document.",$(t,r-2)):n(o)||V("InvalidXml",'Processing instruction target "'+o+'" is not a valid XML Name.',$(t,r-2))}if("?"===a&&">"===t[e+1])return++e}V("InvalidXml",'Processing instruction is not closed with "?>".',$(t,r-2))}function C(t,e,n){if(t.length>e+2&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e<t.length;e++)if("-"===t[e]&&"-"===t[e+1]&&">"===t[e+2]){e+=2;break}if(">"!==t[e])throw new Error('Comment is not closed with "--\x3e".')}else if(t.length>e+7&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7])e=n.validateDocType(t,e-1);else{if(!(t.length>e+8&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7]))throw new Error("Invalid construct starting with '<!'.");for(e+=8;e<t.length;e++)if("]"===t[e]&&"]"===t[e+1]&&">"===t[e+2]){e+=2;break}if(">"!==t[e])throw new Error('CDATA section is not closed with "]]>".')}return e}var A='"',O="'";function P(t,e){for(var n="",r="",i=!1;e<t.length;e++){if(t[e]===A||t[e]===O)""===r?r=t[e]:r!==t[e]||(r="");else if(">"===t[e]&&""===r){i=!0;break}n+=t[e]}return""===r&&{value:n,index:e,tagClosed:i}}var M=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function D(t,e,n,r){for(var i=function(t,e){for(var n=[],r=e.exec(t);r;){var i=[];i.startIndex=e.lastIndex-r[0].length;for(var s=r.length,a=0;a<s;a++)i.push(r[a]);n.push(i),r=e.exec(t)}return n}(t,M),s={},a=0;a<i.length;a++){if(0===i[a][1].length)return{err:{code:"InvalidAttr",msg:"Attribute '"+i[a][2]+"' has no space in starting.",line:j(i[a])}};if(void 0!==i[a][3]&&void 0===i[a][4])return{err:{code:"InvalidAttr",msg:"Attribute '"+i[a][2]+"' is without value.",line:j(i[a])}};if(void 0===i[a][3]&&!e.allowBooleanAttributes)return{err:{code:"InvalidAttr",msg:"boolean attribute '"+i[a][2]+"' is not allowed.",line:j(i[a])}};var o=i[a][2];if(!n(o))return{err:{code:"InvalidAttr",msg:"Attribute '"+o+"' is an invalid name.",line:j(i[a])}};if(o.startsWith("xmlns:")&&""===i[a][6]&&"1.0"===r)return{err:{code:"InvalidAttr",msg:"Undeclaring the prefixed namespace "+o+'="" is only permitted in XML 1.1 documents.',line:j(i[a])}};if(Object.prototype.hasOwnProperty.call(s,o))return{err:{code:"InvalidAttr",msg:"Attribute '"+o+"' is repeated.",line:j(i[a])}};s[o]=1}return!0}function k(t,e){if(";"===t[++e])return-1;if("#"===t[e])return function(t,e){var n=/\d/;for("x"===t[e]&&(e++,n=/[\da-fA-F]/);e<t.length;e++){if(";"===t[e])return e;if(!t[e].match(n))break}return-1}(t,++e);for(var n=0;e<t.length;e++,n++)if(!(t[e].match(/\w/)&&n<20)){if(";"===t[e])break;return-1}return e}function V(t,e,n){throw new _(e,t,n.line||n,n.col)}function $(t,e){var n=t.substring(0,e).split(/\r?\n/);return{line:n.length,col:n[n.length-1].length+1}}function j(t){return t.startIndex+t[1].length}const L=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",U=new RegExp("^["+L+"]["+L+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function F(t,e){const n=[];let r=e.exec(t);for(;r;){const i=[];i.startIndex=e.lastIndex-r[0].length;const s=r.length;for(let t=0;t<s;t++)i.push(r[t]);n.push(i),r=e.exec(t)}return n}const R=function(t){return!(null==U.exec(t))},X=["hasOwnProperty","toString","valueOf","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__"],q=["__proto__","constructor","prototype"],B=t=>X.includes(t)?"__"+t:t,Y={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,entityDecoder:null,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:B};function z(t,e){if("string"!=typeof t)return;const n=t.toLowerCase();if(X.some(t=>n===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);if(q.some(t=>n===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`)}function W(t,e){return"boolean"==typeof t?{enabled:t,maxEntitySize:1e4,maxExpansionDepth:1e4,maxTotalExpansions:1/0,maxExpandedLength:1e5,maxEntityCount:1e3,allowedTags:null,tagFilter:null,appliesTo:"all"}:"object"==typeof t&&null!==t?{enabled:!1!==t.enabled,maxEntitySize:Math.max(1,t.maxEntitySize??1e4),maxExpansionDepth:Math.max(1,t.maxExpansionDepth??1e4),maxTotalExpansions:Math.max(1,t.maxTotalExpansions??1/0),maxExpandedLength:Math.max(1,t.maxExpandedLength??1e5),maxEntityCount:Math.max(1,t.maxEntityCount??1e3),allowedTags:t.allowedTags??null,tagFilter:t.tagFilter??null,appliesTo:t.appliesTo??"all"}:W(!0)}const G=function(t){const e=Object.assign({},Y,t),n=[{value:e.attributeNamePrefix,name:"attributeNamePrefix"},{value:e.attributesGroupName,name:"attributesGroupName"},{value:e.textNodeName,name:"textNodeName"},{value:e.cdataPropName,name:"cdataPropName"},{value:e.commentPropName,name:"commentPropName"}];for(const{value:t,name:e}of n)t&&z(t,e);return null===e.onDangerousProperty&&(e.onDangerousProperty=B),e.processEntities=W(e.processEntities,e.htmlEntities),e.unpairedTagsSet=new Set(e.unpairedTags),e.stopNodes&&Array.isArray(e.stopNodes)&&(e.stopNodes=e.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),e};let Z;Z="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class J{constructor(t){this.tagname=t,this.child=[],this[":@"]=Object.create(null)}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][Z]={startIndex:e})}static getMetaDataSymbol(){return Z}}class K{constructor(t){this.suppressValidationErr=!t,this.options=t}readDocType(t,e){const n=Object.create(null);let r=0;if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let i=1,s=!1,a=!1,o="";for(;e<t.length;e++)if("<"!==t[e]||a)if(">"===t[e]){if(a?"-"===t[e-1]&&"-"===t[e-2]&&(a=!1,i--):i--,0===i)break}else"["===t[e]?s=!0:o+=t[e];else{if(s&&H(t,"!ENTITY",e)){let i,s;if(e+=7,[i,s,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===s.indexOf("&")){if(!1!==this.options.enabled&&null!=this.options.maxEntityCount&&r>=this.options.maxEntityCount)throw new Error(`Entity count (${r+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);n[i]=s,r++}}else if(s&&H(t,"!ELEMENT",e)){e+=8;const{index:n}=this.readElementExp(t,e+1);e=n}else if(s&&H(t,"!ATTLIST",e))e+=8;else if(s&&H(t,"!NOTATION",e)){e+=9;const{index:n}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=n}else{if(!H(t,"!--",e))throw new Error("Invalid DOCTYPE");a=!0}i++,o=""}if(0!==i)throw new Error("Unclosed DOCTYPE")}return{entities:n,i:e}}readEntityExp(t,e){const n=e=Q(t,e);for(;e<t.length&&!/\s/.test(t[e])&&'"'!==t[e]&&"'"!==t[e];)e++;let r=t.substring(n,e);if(tt(r),e=Q(t,e),!this.suppressValidationErr){if("SYSTEM"===t.substring(e,e+6).toUpperCase())throw new Error("External entities are not supported");if("%"===t[e])throw new Error("Parameter entities are not supported")}let i="";if([e,i]=this.readIdentifierVal(t,e,"entity"),!1!==this.options.enabled&&null!=this.options.maxEntitySize&&i.length>this.options.maxEntitySize)throw new Error(`Entity "${r}" size (${i.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return[r,i,--e]}readNotationExp(t,e){const n=e=Q(t,e);for(;e<t.length&&!/\s/.test(t[e]);)e++;let r=t.substring(n,e);!this.suppressValidationErr&&tt(r),e=Q(t,e);const i=t.substring(e,e+6).toUpperCase();if(!this.suppressValidationErr&&"SYSTEM"!==i&&"PUBLIC"!==i)throw new Error(`Expected SYSTEM or PUBLIC, found "${i}"`);e+=i.length,e=Q(t,e);let s=null,a=null;if("PUBLIC"===i)[e,s]=this.readIdentifierVal(t,e,"publicIdentifier"),'"'!==t[e=Q(t,e)]&&"'"!==t[e]||([e,a]=this.readIdentifierVal(t,e,"systemIdentifier"));else if("SYSTEM"===i&&([e,a]=this.readIdentifierVal(t,e,"systemIdentifier"),!this.suppressValidationErr&&!a))throw new Error("Missing mandatory system identifier for SYSTEM notation");return{notationName:r,publicIdentifier:s,systemIdentifier:a,index:--e}}readIdentifierVal(t,e,n){let r="";const i=t[e];if('"'!==i&&"'"!==i)throw new Error(`Expected quoted string, found "${i}"`);const s=++e;for(;e<t.length&&t[e]!==i;)e++;if(r=t.substring(s,e),t[e]!==i)throw new Error(`Unterminated ${n} value`);return[++e,r]}readElementExp(t,e){const n=e=Q(t,e);for(;e<t.length&&!/\s/.test(t[e]);)e++;let r=t.substring(n,e);if(!this.suppressValidationErr&&!R(r))throw new Error(`Invalid element name: "${r}"`);let i="";if("E"===t[e=Q(t,e)]&&H(t,"MPTY",e))e+=4;else if("A"===t[e]&&H(t,"NY",e))e+=2;else if("("===t[e]){const n=++e;for(;e<t.length&&")"!==t[e];)e++;if(i=t.substring(n,e),")"!==t[e])throw new Error("Unterminated content model")}else if(!this.suppressValidationErr)throw new Error(`Invalid Element Expression, found "${t[e]}"`);return{elementName:r,contentModel:i.trim(),index:e}}readAttlistExp(t,e){let n=e=Q(t,e);for(;e<t.length&&!/\s/.test(t[e]);)e++;let r=t.substring(n,e);for(tt(r),n=e=Q(t,e);e<t.length&&!/\s/.test(t[e]);)e++;let i=t.substring(n,e);if(!tt(i))throw new Error(`Invalid attribute name: "${i}"`);e=Q(t,e);let s="";if("NOTATION"===t.substring(e,e+8).toUpperCase()){if(s="NOTATION","("!==t[e=Q(t,e+=8)])throw new Error(`Expected '(', found "${t[e]}"`);e++;let n=[];for(;e<t.length&&")"!==t[e];){const r=e;for(;e<t.length&&"|"!==t[e]&&")"!==t[e];)e++;let i=t.substring(r,e);if(i=i.trim(),!tt(i))throw new Error(`Invalid notation name: "${i}"`);n.push(i),"|"===t[e]&&(e++,e=Q(t,e))}if(")"!==t[e])throw new Error("Unterminated list of notations");e++,s+=" ("+n.join("|")+")"}else{const n=e;for(;e<t.length&&!/\s/.test(t[e]);)e++;s+=t.substring(n,e);const r=["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"];if(!this.suppressValidationErr&&!r.includes(s.toUpperCase()))throw new Error(`Invalid attribute type: "${s}"`)}e=Q(t,e);let a="";return"#REQUIRED"===t.substring(e,e+8).toUpperCase()?(a="#REQUIRED",e+=8):"#IMPLIED"===t.substring(e,e+7).toUpperCase()?(a="#IMPLIED",e+=7):[e,a]=this.readIdentifierVal(t,e,"ATTLIST"),{elementName:r,attributeName:i,attributeType:s,defaultValue:a,index:e}}}const Q=(t,e)=>{for(;e<t.length&&/\s/.test(t[e]);)e++;return e};function H(t,e,n){for(let r=0;r<e.length;r++)if(e[r]!==t[n+r+1])return!1;return!0}function tt(t){if(R(t))return t;throw new Error(`Invalid entity name ${t}`)}const et=/^[-+]?0x[a-fA-F0-9]+$/,nt=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,rt={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0,infinity:"original"};const it=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;class st{constructor(t){this._matcher=t}get separator(){return this._matcher.separator}getCurrentTag(){const t=this._matcher.path;return t.length>0?t[t.length-1].tag:void 0}getCurrentNamespace(){const t=this._matcher.path;return t.length>0?t[t.length-1].namespace:void 0}getAttrValue(t){const e=this._matcher.path;if(0!==e.length)return e[e.length-1].values?.[t]}hasAttr(t){const e=this._matcher.path;if(0===e.length)return!1;const n=e[e.length-1];return void 0!==n.values&&t in n.values}getPosition(){const t=this._matcher.path;return 0===t.length?-1:t[t.length-1].position??0}getCounter(){const t=this._matcher.path;return 0===t.length?-1:t[t.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this._matcher.path.length}toString(t,e=!0){return this._matcher.toString(t,e)}toArray(){return this._matcher.path.map(t=>t.tag)}matches(t){return this._matcher.matches(t)}matchesAny(t){return t.matchesAny(this._matcher)}}class at{constructor(t={}){this.separator=t.separator||".",this.path=[],this.siblingStacks=[],this._pathStringCache=null,this._view=new st(this)}push(t,e=null,n=null){this._pathStringCache=null,this.path.length>0&&(this.path[this.path.length-1].values=void 0);const r=this.path.length;this.siblingStacks[r]||(this.siblingStacks[r]=new Map);const i=this.siblingStacks[r],s=n?`${n}:${t}`:t,a=i.get(s)||0;let o=0;for(const t of i.values())o+=t;i.set(s,a+1);const l={tag:t,position:o,counter:a};null!=n&&(l.namespace=n),null!=e&&(l.values=e),this.path.push(l)}pop(){if(0===this.path.length)return;this._pathStringCache=null;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0!==this.path.length)return this.path[this.path.length-1].values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const n=t||this.separator;if(n===this.separator&&!0===e){if(null!==this._pathStringCache)return this._pathStringCache;const t=this.path.map(t=>t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(n);return this._pathStringCache=t,t}return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(n)}toArray(){return this.path.map(t=>t.tag)}reset(){this._pathStringCache=null,this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e<t.length;e++)if(!this._matchSegment(t[e],this.path[e],e===this.path.length-1))return!1;return!0}_matchWithDeepWildcard(t){let e=this.path.length-1,n=t.length-1;for(;n>=0&&e>=0;){const r=t[n];if("deep-wildcard"===r.type){if(n--,n<0)return!0;const r=t[n];let i=!1;for(let t=e;t>=0;t--)if(this._matchSegment(r,this.path[t],t===this.path.length-1)){e=t-1,n--,i=!0;break}if(!i)return!1}else{if(!this._matchSegment(r,this.path[e],e===this.path.length-1))return!1;e--,n--}}return n<0}_matchSegment(t,e,n){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!n)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue&&String(e.values[t.attrName])!==String(t.attrValue))return!1}if(void 0!==t.position){if(!n)return!1;const r=e.counter??0;if("first"===t.position&&0!==r)return!1;if("odd"===t.position&&r%2!=1)return!1;if("even"===t.position&&r%2!=0)return!1;if("nth"===t.position&&r!==t.positionValue)return!1}return!0}matchesAny(t){return t.matchesAny(this)}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this._pathStringCache=null,this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}readOnly(){return this._view}}class ot{constructor(t,e={},n){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this.data=n,this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let n=0,r="";for(;n<t.length;)t[n]===this.separator?n+1<t.length&&t[n+1]===this.separator?(r.trim()&&(e.push(this._parseSegment(r.trim())),r=""),e.push({type:"deep-wildcard"}),n+=2):(r.trim()&&e.push(this._parseSegment(r.trim())),r="",n++):(r+=t[n],n++);return r.trim()&&e.push(this._parseSegment(r.trim())),e}_parseSegment(t){const e={type:"tag"};let n=null,r=t;const i=t.match(/^([^\[]+)(\[[^\]]*\])(.*)$/);if(i&&(r=i[1]+i[3],i[2])){const t=i[2].slice(1,-1);t&&(n=t)}let s,a,o=r;if(r.includes("::")){const e=r.indexOf("::");if(s=r.substring(0,e).trim(),o=r.substring(e+2).trim(),!s)throw new Error(`Invalid namespace in pattern: ${t}`)}let l=null;if(o.includes(":")){const t=o.lastIndexOf(":"),e=o.substring(0,t).trim(),n=o.substring(t+1).trim();["first","last","odd","even"].includes(n)||/^nth\(\d+\)$/.test(n)?(a=e,l=n):a=o}else a=o;if(!a)throw new Error(`Invalid segment pattern: ${t}`);if(e.tag=a,s&&(e.namespace=s),n)if(n.includes("=")){const t=n.indexOf("=");e.attrName=n.substring(0,t).trim(),e.attrValue=n.substring(t+1).trim()}else e.attrName=n.trim();if(l){const t=l.match(/^nth\((\d+)\)$/);t?(e.position="nth",e.positionValue=parseInt(t[1],10)):e.position=l}return e}get length(){return this.segments.length}hasDeepWildcard(){return this._hasDeepWildcard}hasAttributeCondition(){return this._hasAttributeCondition}hasPositionSelector(){return this._hasPositionSelector}toString(){return this.pattern}}class lt{constructor(){this._byDepthAndTag=new Map,this._wildcardByDepth=new Map,this._deepWildcards=[],this._patterns=new Set,this._sealed=!1}add(t){if(this._sealed)throw new TypeError("ExpressionSet is sealed. Create a new ExpressionSet to add more expressions.");if(this._patterns.has(t.pattern))return this;if(this._patterns.add(t.pattern),t.hasDeepWildcard())return this._deepWildcards.push(t),this;const e=t.length,n=t.segments[t.segments.length-1],r=n?.tag;if(r&&"*"!==r){const n=`${e}:${r}`;this._byDepthAndTag.has(n)||this._byDepthAndTag.set(n,[]),this._byDepthAndTag.get(n).push(t)}else this._wildcardByDepth.has(e)||this._wildcardByDepth.set(e,[]),this._wildcardByDepth.get(e).push(t);return this}addAll(t){for(const e of t)this.add(e);return this}has(t){return this._patterns.has(t.pattern)}get size(){return this._patterns.size}seal(){return this._sealed=!0,this}get isSealed(){return this._sealed}matchesAny(t){return null!==this.findMatch(t)}findMatch(t){const e=t.getDepth(),n=`${e}:${t.getCurrentTag()}`,r=this._byDepthAndTag.get(n);if(r)for(let e=0;e<r.length;e++)if(t.matches(r[e]))return r[e];const i=this._wildcardByDepth.get(e);if(i)for(let e=0;e<i.length;e++)if(t.matches(i[e]))return i[e];for(let e=0;e<this._deepWildcards.length;e++)if(t.matches(this._deepWildcards[e]))return this._deepWildcards[e];return null}}const ht={cent:"¢",pound:"£",curren:"¤",yen:"¥",euro:"€",dollar:"$",euro:"€",fnof:"ƒ",inr:"₹",af:"؋",birr:"ብር",peso:"₱",rub:"₽",won:"₩",yuan:"¥",cedil:"¸"},ut={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'},ct={nbsp:" ",copy:"©",reg:"®",trade:"™",mdash:"—",ndash:"–",hellip:"…",laquo:"«",raquo:"»",lsquo:"‘",rsquo:"’",ldquo:"“",rdquo:"”",bull:"•",para:"¶",sect:"§",deg:"°",frac12:"½",frac14:"¼",frac34:"¾"},dt=new Set("!?\\\\/[]$%{}^&*()<>|+");function pt(t){if("#"===t[0])throw new Error(`[EntityReplacer] Invalid character '#' in entity name: "${t}"`);for(const e of t)if(dt.has(e))throw new Error(`[EntityReplacer] Invalid character '${e}' in entity name: "${t}"`);return t}function ft(...t){const e=Object.create(null);for(const n of t)if(n)for(const t of Object.keys(n)){const r=n[t];if("string"==typeof r)e[t]=r;else if(r&&"object"==typeof r&&void 0!==r.val){const n=r.val;"string"==typeof n&&(e[t]=n)}}return e}const gt="external",mt="base",vt="all",xt=Object.freeze({allow:0,leave:1,remove:2,throw:3}),bt=new Set([9,10,13]);class Et{constructor(t={}){var e;this._limit=t.limit||{},this._maxTotalExpansions=this._limit.maxTotalExpansions||0,this._maxExpandedLength=this._limit.maxExpandedLength||0,this._postCheck="function"==typeof t.postCheck?t.postCheck:t=>t,this._limitTiers=(e=this._limit.applyLimitsTo??gt)&&e!==gt?e===vt?new Set([vt]):e===mt?new Set([mt]):Array.isArray(e)?new Set(e):new Set([gt]):new Set([gt]),this._numericAllowed=t.numericAllowed??!0,this._baseMap=ft(ut,t.namedEntities||null),this._externalMap=Object.create(null),this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this._removeSet=new Set(t.remove&&Array.isArray(t.remove)?t.remove:[]),this._leaveSet=new Set(t.leave&&Array.isArray(t.leave)?t.leave:[]);const n=function(t){if(!t)return{xmlVersion:1,onLevel:xt.allow,nullLevel:xt.remove};const e=1.1===t.xmlVersion?1.1:1,n=xt[t.onNCR]??xt.allow,r=xt[t.nullNCR]??xt.remove;return{xmlVersion:e,onLevel:n,nullLevel:Math.max(r,xt.remove)}}(t.ncr);this._ncrXmlVersion=n.xmlVersion,this._ncrOnLevel=n.onLevel,this._ncrNullLevel=n.nullLevel}setExternalEntities(t){if(t)for(const e of Object.keys(t))pt(e);this._externalMap=ft(t)}addExternalEntity(t,e){pt(t),"string"==typeof e&&-1===e.indexOf("&")&&(this._externalMap[t]=e)}addInputEntities(t){this._totalExpansions=0,this._expandedLength=0,this._inputMap=ft(t)}reset(){return this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this}setXmlVersion(t){this._ncrXmlVersion=1.1===t?1.1:1}decode(t){if("string"!=typeof t||0===t.length)return t;const e=t,n=[],r=t.length;let i=0,s=0;const a=this._maxTotalExpansions>0,o=this._maxExpandedLength>0,l=a||o;for(;s<r;){if(38!==t.charCodeAt(s)){s++;continue}let e=s+1;for(;e<r&&59!==t.charCodeAt(e)&&e-s<=32;)e++;if(e>=r||59!==t.charCodeAt(e)){s++;continue}const h=t.slice(s+1,e);if(0===h.length){s++;continue}let u,c;if(this._removeSet.has(h))u="",void 0===c&&(c=gt);else{if(this._leaveSet.has(h)){s++;continue}if(35===h.charCodeAt(0)){const t=this._resolveNCR(h);if(void 0===t){s++;continue}u=t,c=mt}else{const t=this._resolveName(h);u=t?.value,c=t?.tier}}if(void 0!==u){if(s>i&&n.push(t.slice(i,s)),n.push(u),i=e+1,s=i,l&&this._tierCounts(c)){if(a&&(this._totalExpansions++,this._totalExpansions>this._maxTotalExpansions))throw new Error(`[EntityReplacer] Entity expansion count limit exceeded: ${this._totalExpansions} > ${this._maxTotalExpansions}`);if(o){const t=u.length-(h.length+2);if(t>0&&(this._expandedLength+=t,this._expandedLength>this._maxExpandedLength))throw new Error(`[EntityReplacer] Expanded content length limit exceeded: ${this._expandedLength} > ${this._maxExpandedLength}`)}}}else s++}i<r&&n.push(t.slice(i));const h=0===n.length?t:n.join("");return this._postCheck(h,e)}_tierCounts(t){return!!this._limitTiers.has(vt)||this._limitTiers.has(t)}_resolveName(t){return t in this._inputMap?{value:this._inputMap[t],tier:gt}:t in this._externalMap?{value:this._externalMap[t],tier:gt}:t in this._baseMap?{value:this._baseMap[t],tier:mt}:void 0}_classifyNCR(t){return 0===t?this._ncrNullLevel:t>=55296&&t<=57343||1===this._ncrXmlVersion&&t>=1&&t<=31&&!bt.has(t)?xt.remove:-1}_applyNCRAction(t,e,n){switch(t){case xt.allow:return String.fromCodePoint(n);case xt.remove:return"";case xt.leave:return;case xt.throw:throw new Error(`[EntityDecoder] Prohibited numeric character reference &${e}; (U+${n.toString(16).toUpperCase().padStart(4,"0")})`);default:return String.fromCodePoint(n)}}_resolveNCR(t){const e=t.charCodeAt(1);let n;if(n=120===e||88===e?parseInt(t.slice(2),16):parseInt(t.slice(1),10),Number.isNaN(n)||n<0||n>1114111)return;const r=this._classifyNCR(n);if(!this._numericAllowed&&r<xt.remove)return;const i=-1===r?this._ncrOnLevel:Math.max(this._ncrOnLevel,r);return this._applyNCRAction(i,t,n)}}function yt(t,e){if(!t)return{};const n=e.attributesGroupName?t[e.attributesGroupName]:t;if(!n)return{};const r={};for(const t in n)t.startsWith(e.attributeNamePrefix)?r[t.substring(e.attributeNamePrefix.length)]=n[t]:r[t]=n[t];return r}function wt(t){if(!t||"string"!=typeof t)return;const e=t.indexOf(":");if(-1!==e&&e>0){const n=t.substring(0,e);if("xmlns"!==n)return n}}class Nt{constructor(t){var e;this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.parseXml=Ct,this.parseTextData=_t,this.resolveNameSpace=St,this.buildAttributesMap=It,this.isItStopNode=Mt,this.replaceEntitiesValue=Ot,this.readStopNodeData=$t,this.saveTextToParentTag=Pt,this.addChild=At,this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const n of e){if("string"==typeof n&&t===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}}:()=>!1,this.entityExpansionCount=0,this.currentExpandedLength=0;let n={...ut};this.options.entityDecoder?this.entityDecoder=this.options.entityDecoder:("object"==typeof this.options.htmlEntities?n=this.options.htmlEntities:!0===this.options.htmlEntities&&(n={...ct,...ht}),this.entityDecoder=new Et({namedEntities:n,numericAllowed:this.options.htmlEntities,limit:{maxTotalExpansions:this.options.processEntities.maxTotalExpansions,maxExpandedLength:this.options.processEntities.maxExpandedLength,applyLimitsTo:this.options.processEntities.appliesTo}})),this.matcher=new at,this.readonlyMatcher=this.matcher.readOnly(),this.isCurrentNodeStopNode=!1,this.stopNodeExpressionsSet=new lt;const r=this.options.stopNodes;if(r&&r.length>0){for(let t=0;t<r.length;t++){const e=r[t];"string"==typeof e?this.stopNodeExpressionsSet.add(new ot(e)):e instanceof ot&&this.stopNodeExpressionsSet.add(e)}this.stopNodeExpressionsSet.seal()}}}function _t(t,e,n,r,i,s,a){const o=this.options;if(void 0!==t&&(o.trimValues&&!r&&(t=t.trim()),t.length>0)){a||(t=this.replaceEntitiesValue(t,e,n));const r=o.jPath?n.toString():n,l=o.tagValueProcessor(e,t,r,i,s);return null==l?t:typeof l!=typeof t||l!==t?l:o.trimValues||t.trim()===t?jt(t,o.parseTagValue,o.numberParseOptions):t}}function St(t){if(this.options.removeNSPrefix){const e=t.split(":"),n="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=n+e[1])}return t}const Tt=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function It(t,e,n,r=!1){const i=this.options;if(!0===r||!0!==i.ignoreAttributes&&"string"==typeof t){const r=F(t,Tt),s=r.length,a={},o=new Array(s);let l=!1;const h={};for(let t=0;t<s;t++){const e=this.resolveNameSpace(r[t][1]),s=r[t][4];if(e.length&&void 0!==s){let r=s;i.trimValues&&(r=r.trim()),r=this.replaceEntitiesValue(r,n,this.readonlyMatcher),o[t]=r,h[e]=r,l=!0}}l&&"object"==typeof e&&e.updateCurrent&&e.updateCurrent(h);const u=i.jPath?e.toString():this.readonlyMatcher;let c=!1;for(let t=0;t<s;t++){const e=this.resolveNameSpace(r[t][1]);if(this.ignoreAttributesFn(e,u))continue;let n=i.attributeNamePrefix+e;if(e.length)if(i.transformAttributeName&&(n=i.transformAttributeName(n)),n=Ut(n,i),void 0!==r[t][4]){const r=o[t],s=i.attributeValueProcessor(e,r,u);a[n]=null==s?r:typeof s!=typeof r||s!==r?s:jt(r,i.parseAttributeValue,i.numberParseOptions),c=!0}else i.allowBooleanAttributes&&(a[n]=!0,c=!0)}if(!c)return;if(i.attributesGroupName){const t={};return t[i.attributesGroupName]=a,t}return a}}const Ct=function(t){t=t.replace(/\r\n?/g,"\n");const e=new J("!xml");let n=e,r="";this.matcher.reset(),this.entityDecoder.reset(),this.entityExpansionCount=0,this.currentExpandedLength=0;const i=this.options,s=new K(i.processEntities),a=t.length;for(let o=0;o<a;o++)if("<"===t[o]){const l=t.charCodeAt(o+1);if(47===l){const e=Dt(t,">",o,"Closing Tag is not closed.");let s=t.substring(o+2,e).trim();if(i.removeNSPrefix){const t=s.indexOf(":");-1!==t&&(s=s.substr(t+1))}s=Lt(i.transformTagName,s,"",i).tagName,n&&(r=this.saveTextToParentTag(r,n,this.readonlyMatcher));const a=this.matcher.getCurrentTag();if(s&&i.unpairedTagsSet.has(s))throw new Error(`Unpaired tag can not be used as closing tag: </${s}>`);a&&i.unpairedTagsSet.has(a)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,n=this.tagsNodeStack.pop(),r="",o=e}else if(63===l){let e=Vt(t,o,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");r=this.saveTextToParentTag(r,n,this.readonlyMatcher);const s=this.buildAttributesMap(e.tagExp,this.matcher,e.tagName,!0);if(s){const t=s[this.options.attributeNamePrefix+"version"];this.entityDecoder.setXmlVersion(Number(t)||1)}if(i.ignoreDeclaration&&"?xml"===e.tagName||i.ignorePiTags);else{const t=new J(e.tagName);t.add(i.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&!0!==i.ignoreAttributes&&(t[":@"]=s),this.addChild(n,t,this.readonlyMatcher,o)}o=e.closeIndex+1}else if(33===l&&45===t.charCodeAt(o+2)&&45===t.charCodeAt(o+3)){const e=Dt(t,"--\x3e",o+4,"Comment is not closed.");if(i.commentPropName){const s=t.substring(o+4,e-2);r=this.saveTextToParentTag(r,n,this.readonlyMatcher),n.add(i.commentPropName,[{[i.textNodeName]:s}])}o=e}else if(33===l&&68===t.charCodeAt(o+2)){const e=s.readDocType(t,o);this.entityDecoder.addInputEntities(e.entities),o=e.i}else if(33===l&&91===t.charCodeAt(o+2)){const e=Dt(t,"]]>",o,"CDATA is not closed.")-2,s=t.substring(o+9,e);r=this.saveTextToParentTag(r,n,this.readonlyMatcher);let a=this.parseTextData(s,n.tagname,this.readonlyMatcher,!0,!1,!0,!0);null==a&&(a=""),i.cdataPropName?n.add(i.cdataPropName,[{[i.textNodeName]:s}]):n.add(i.textNodeName,a),o=e+2}else{let s=Vt(t,o,i.removeNSPrefix);if(!s){const e=t.substring(Math.max(0,o-50),Math.min(a,o+50));throw new Error(`readTagExp returned undefined at position ${o}. Context: "${e}"`)}let l=s.tagName;const h=s.rawTagName;let u=s.tagExp,c=s.attrExpPresent,d=s.closeIndex;if(({tagName:l,tagExp:u}=Lt(i.transformTagName,l,u,i)),i.strictReservedNames&&(l===i.commentPropName||l===i.cdataPropName||l===i.textNodeName||l===i.attributesGroupName))throw new Error(`Invalid tag name: ${l}`);n&&r&&"!xml"!==n.tagname&&(r=this.saveTextToParentTag(r,n,this.readonlyMatcher,!1));const p=n;p&&i.unpairedTagsSet.has(p.tagname)&&(n=this.tagsNodeStack.pop(),this.matcher.pop());let f=!1;u.length>0&&u.lastIndexOf("/")===u.length-1&&(f=!0,"/"===l[l.length-1]?(l=l.substr(0,l.length-1),u=l):u=u.substr(0,u.length-1),c=l!==u);let g,m=null,v={};g=wt(h),l!==e.tagname&&this.matcher.push(l,{},g),l!==u&&c&&(m=this.buildAttributesMap(u,this.matcher,l),m&&(v=yt(m,i))),l!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode());const x=o;if(this.isCurrentNodeStopNode){let e="";if(f)o=s.closeIndex;else if(i.unpairedTagsSet.has(l))o=s.closeIndex;else{const n=this.readStopNodeData(t,h,d+1);if(!n)throw new Error(`Unexpected end of ${h}`);o=n.i,e=n.tagContent}const r=new J(l);m&&(r[":@"]=m),r.add(i.textNodeName,e),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(n,r,this.readonlyMatcher,x)}else{if(f){({tagName:l,tagExp:u}=Lt(i.transformTagName,l,u,i));const t=new J(l);m&&(t[":@"]=m),this.addChild(n,t,this.readonlyMatcher,x),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else{if(i.unpairedTagsSet.has(l)){const t=new J(l);m&&(t[":@"]=m),this.addChild(n,t,this.readonlyMatcher,x),this.matcher.pop(),this.isCurrentNodeStopNode=!1,o=s.closeIndex;continue}{const t=new J(l);if(this.tagsNodeStack.length>i.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(n),m&&(t[":@"]=m),this.addChild(n,t,this.readonlyMatcher,x),n=t}}r="",o=d}}}else r+=t[o];return e.child};function At(t,e,n,r){this.options.captureMetaData||(r=void 0);const i=this.options.jPath?n.toString():n,s=this.options.updateTag(e.tagname,i,e[":@"]);!1===s||("string"==typeof s?(e.tagname=s,t.addChild(e,r)):t.addChild(e,r))}function Ot(t,e,n){const r=this.options.processEntities;if(!r||!r.enabled)return t;if(r.allowedTags){const i=this.options.jPath?n.toString():n;if(!(Array.isArray(r.allowedTags)?r.allowedTags.includes(e):r.allowedTags(e,i)))return t}if(r.tagFilter){const i=this.options.jPath?n.toString():n;if(!r.tagFilter(e,i))return t}return this.entityDecoder.decode(t)}function Pt(t,e,n,r){return t&&(void 0===r&&(r=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,n,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,r))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function Mt(){return 0!==this.stopNodeExpressionsSet.size&&this.matcher.matchesAny(this.stopNodeExpressionsSet)}function Dt(t,e,n,r){const i=t.indexOf(e,n);if(-1===i)throw new Error(r);return i+e.length-1}function kt(t,e,n,r){const i=t.indexOf(e,n);if(-1===i)throw new Error(r);return i}function Vt(t,e,n,r=">"){const i=function(t,e,n=">"){let r=0;const i=[],s=t.length,a=n.charCodeAt(0),o=n.length>1?n.charCodeAt(1):-1;for(let n=e;n<s;n++){const e=t.charCodeAt(n);if(r)e===r&&(r=0);else if(34===e||39===e)r=e;else if(e===a){if(-1===o)return{data:String.fromCharCode(...i),index:n};if(t.charCodeAt(n+1)===o)return{data:String.fromCharCode(...i),index:n}}else if(9===e){i.push(32);continue}i.push(e)}}(t,e+1,r);if(!i)return;let s=i.data;const a=i.index,o=s.search(/\s/);let l=s,h=!0;-1!==o&&(l=s.substring(0,o),s=s.substring(o+1).trimStart());const u=l;if(n){const t=l.indexOf(":");-1!==t&&(l=l.substr(t+1),h=l!==i.data.substr(t+1))}return{tagName:l,tagExp:s,closeIndex:a,attrExpPresent:h,rawTagName:u}}function $t(t,e,n){const r=n;let i=1;const s=t.length;for(;n<s;n++)if("<"===t[n]){const s=t.charCodeAt(n+1);if(47===s){const s=kt(t,">",n,`${e} is not closed`);if(t.substring(n+2,s).trim()===e&&(i--,0===i))return{tagContent:t.substring(r,n),i:s};n=s}else if(63===s)n=Dt(t,"?>",n+1,"StopNode is not closed.");else if(33===s&&45===t.charCodeAt(n+2)&&45===t.charCodeAt(n+3))n=Dt(t,"--\x3e",n+3,"StopNode is not closed.");else if(33===s&&91===t.charCodeAt(n+2))n=Dt(t,"]]>",n,"StopNode is not closed.")-2;else{const r=Vt(t,n,">");r&&((r&&r.tagName)===e&&"/"!==r.tagExp[r.tagExp.length-1]&&i++,n=r.closeIndex)}}}function jt(t,e,n){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&function(t,e={}){if(e=Object.assign({},rt,e),!t||"string"!=typeof t)return t;let n=t.trim();if(0===n.length)return t;if(void 0!==e.skipLike&&e.skipLike.test(n))return t;if("0"===n)return 0;if(e.hex&&et.test(n))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(n);if(isFinite(n)){if(n.includes("e")||n.includes("E"))return function(t,e,n){if(!n.eNotation)return t;const r=e.match(it);if(r){let i=r[1]||"";const s=-1===r[3].indexOf("e")?"E":"e",a=r[2],o=i?t[a.length+1]===s:t[a.length]===s;return a.length>1&&o?t:(1!==a.length||!r[3].startsWith(`.${s}`)&&r[3][0]!==s)&&a.length>0?n.leadingZeros&&!o?(e=(r[1]||"")+r[3],Number(e)):t:Number(e)}return t}(t,n,e);{const i=nt.exec(n);if(i){const s=i[1]||"",a=i[2];let o=(r=i[3])&&-1!==r.indexOf(".")?("."===(r=r.replace(/0+$/,""))?r="0":"."===r[0]?r="0"+r:"."===r[r.length-1]&&(r=r.substring(0,r.length-1)),r):r;const l=s?"."===t[a.length+1]:"."===t[a.length];if(!e.leadingZeros&&(a.length>1||1===a.length&&!l))return t;{const r=Number(n),i=String(r);if(0===r)return r;if(-1!==i.search(/[eE]/))return e.eNotation?r:t;if(-1!==n.indexOf("."))return"0"===i||i===o||i===`${s}${o}`?r:t;let l=a?o:n;return a?l===i||s+l===i?r:t:l===i||l===s+i?r:t}}return t}}var r;return function(t,e,n){const r=e===1/0;switch(n.infinity.toLowerCase()){case"null":return null;case"infinity":return e;case"string":return r?"Infinity":"-Infinity";default:return t}}(t,Number(n),e)}(t,n)}return void 0!==t?t:""}function Lt(t,e,n,r){if(t){const r=t(e);n===e&&(n=r),e=r}return{tagName:e=Ut(e,r),tagExp:n}}function Ut(t,e){if(q.includes(t))throw new Error(`[SECURITY] Invalid name: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);return X.includes(t)?e.onDangerousProperty(t):t}const Ft=J.getMetaDataSymbol();function Rt(t,e){if(!t||"object"!=typeof t)return{};if(!e)return t;const n={};for(const r in t)r.startsWith(e)?n[r.substring(e.length)]=t[r]:n[r]=t[r];return n}function Xt(t,e,n,r){return qt(t,e,n,r)}function qt(t,e,n,r){let i;const s={};for(let a=0;a<t.length;a++){const o=t[a],l=Bt(o);if(void 0!==l&&l!==e.textNodeName){const t=Rt(o[":@"]||{},e.attributeNamePrefix);n.push(l,t)}if(l===e.textNodeName)void 0===i?i=o[l]:i+=""+o[l];else{if(void 0===l)continue;if(o[l]){let t=qt(o[l],e,n,r);const i=zt(t,e);if(o[":@"]?Yt(t,o[":@"],r,e):1!==Object.keys(t).length||void 0===t[e.textNodeName]||e.alwaysCreateTextNode?0===Object.keys(t).length&&(e.alwaysCreateTextNode?t[e.textNodeName]="":t=""):t=t[e.textNodeName],void 0!==o[Ft]&&"object"==typeof t&&null!==t&&(t[Ft]=o[Ft]),void 0!==s[l]&&Object.prototype.hasOwnProperty.call(s,l))Array.isArray(s[l])||(s[l]=[s[l]]),s[l].push(t);else{const n=e.jPath?r.toString():r;e.isArray(l,n,i)?s[l]=[t]:s[l]=t}void 0!==l&&l!==e.textNodeName&&n.pop()}}}return"string"==typeof i?i.length>0&&(s[e.textNodeName]=i):void 0!==i&&(s[e.textNodeName]=i),s}function Bt(t){const e=Object.keys(t);for(let t=0;t<e.length;t++){const n=e[t];if(":@"!==n)return n}}function Yt(t,e,n,r){if(e){const i=Object.keys(e),s=i.length;for(let a=0;a<s;a++){const s=i[a],o=s.startsWith(r.attributeNamePrefix)?s.substring(r.attributeNamePrefix.length):s,l=r.jPath?n.toString()+"."+o:n;r.isArray(s,l,!0,!0)?t[s]=[e[s]]:t[s]=e[s]}}}function zt(t,e){const{textNodeName:n}=e,r=Object.keys(t).length;return 0===r||!(1!==r||!t[n]&&"boolean"!=typeof t[n]&&0!==t[n])}const Wt={allowBooleanAttributes:!1,unpairedTags:[]};function Gt(t,e){e=Object.assign({},Wt,e);const n=[];let r=!1,i=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(let s=0;s<t.length;s++)if("<"===t[s]&&"?"===t[s+1]){if(s+=2,s=Jt(t,s),s.err)return s}else{if("<"!==t[s]){if(Zt(t[s]))continue;return ie("InvalidChar","char '"+t[s]+"' is not expected.",oe(t,s))}{let a=s;if(s++,"!"===t[s]){s=Kt(t,s);continue}{let o=!1;"/"===t[s]&&(o=!0,s++);let l="";for(;s<t.length&&">"!==t[s]&&" "!==t[s]&&"\t"!==t[s]&&"\n"!==t[s]&&"\r"!==t[s];s++)l+=t[s];if(l=l.trim(),"/"===l[l.length-1]&&(l=l.substring(0,l.length-1),s--),!ae(l)){let e;return e=0===l.trim().length?"Invalid space after '<'.":"Tag '"+l+"' is an invalid name.",ie("InvalidTag",e,oe(t,s))}const h=te(t,s);if(!1===h)return ie("InvalidAttr","Attributes for '"+l+"' have open quote.",oe(t,s));let u=h.value;if(s=h.index,"/"===u[u.length-1]){const n=s-u.length;u=u.substring(0,u.length-1);const i=ne(u,e);if(!0!==i)return ie(i.err.code,i.err.msg,oe(t,n+i.err.line));r=!0}else if(o){if(!h.tagClosed)return ie("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",oe(t,s));if(u.trim().length>0)return ie("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",oe(t,a));if(0===n.length)return ie("InvalidTag","Closing tag '"+l+"' has not been opened.",oe(t,a));{const e=n.pop();if(l!==e.tagName){let n=oe(t,e.tagStartPos);return ie("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+n.line+", col "+n.col+") instead of closing tag '"+l+"'.",oe(t,a))}0==n.length&&(i=!0)}}else{const o=ne(u,e);if(!0!==o)return ie(o.err.code,o.err.msg,oe(t,s-u.length+o.err.line));if(!0===i)return ie("InvalidXml","Multiple possible root nodes found.",oe(t,s));-1!==e.unpairedTags.indexOf(l)||n.push({tagName:l,tagStartPos:a}),r=!0}for(s++;s<t.length;s++)if("<"===t[s]){if("!"===t[s+1]){s++,s=Kt(t,s);continue}if("?"!==t[s+1])break;if(s=Jt(t,++s),s.err)return s}else if("&"===t[s]){const e=re(t,s);if(-1==e)return ie("InvalidChar","char '&' is not expected.",oe(t,s));s=e}else if(!0===i&&!Zt(t[s]))return ie("InvalidXml","Extra text at the end",oe(t,s));"<"===t[s]&&s--}}}return r?1==n.length?ie("InvalidTag","Unclosed tag '"+n[0].tagName+"'.",oe(t,n[0].tagStartPos)):!(n.length>0)||ie("InvalidXml","Invalid '"+JSON.stringify(n.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):ie("InvalidXml","Start tag expected.",1)}function Zt(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function Jt(t,e){const n=e;for(;e<t.length;e++)if("?"==t[e]||" "==t[e]){const r=t.substr(n,e-n);if(e>5&&"xml"===r)return ie("InvalidXml","XML declaration allowed only at the start of the document.",oe(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function Kt(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e<t.length;e++)if("-"===t[e]&&"-"===t[e+1]&&">"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let n=1;for(e+=8;e<t.length;e++)if("<"===t[e])n++;else if(">"===t[e]&&(n--,0===n))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e<t.length;e++)if("]"===t[e]&&"]"===t[e+1]&&">"===t[e+2]){e+=2;break}return e}const Qt='"',Ht="'";function te(t,e){let n="",r="",i=!1;for(;e<t.length;e++){if(t[e]===Qt||t[e]===Ht)""===r?r=t[e]:r!==t[e]||(r="");else if(">"===t[e]&&""===r){i=!0;break}n+=t[e]}return""===r&&{value:n,index:e,tagClosed:i}}const ee=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function ne(t,e){const n=F(t,ee),r={};for(let t=0;t<n.length;t++){if(0===n[t][1].length)return ie("InvalidAttr","Attribute '"+n[t][2]+"' has no space in starting.",le(n[t]));if(void 0!==n[t][3]&&void 0===n[t][4])return ie("InvalidAttr","Attribute '"+n[t][2]+"' is without value.",le(n[t]));if(void 0===n[t][3]&&!e.allowBooleanAttributes)return ie("InvalidAttr","boolean attribute '"+n[t][2]+"' is not allowed.",le(n[t]));const i=n[t][2];if(!se(i))return ie("InvalidAttr","Attribute '"+i+"' is an invalid name.",le(n[t]));if(Object.prototype.hasOwnProperty.call(r,i))return ie("InvalidAttr","Attribute '"+i+"' is repeated.",le(n[t]));r[i]=1}return!0}function re(t,e){if(";"===t[++e])return-1;if("#"===t[e])return function(t,e){let n=/\d/;for("x"===t[e]&&(e++,n=/[\da-fA-F]/);e<t.length;e++){if(";"===t[e])return e;if(!t[e].match(n))break}return-1}(t,++e);let n=0;for(;e<t.length;e++,n++)if(!(t[e].match(/\w/)&&n<20)){if(";"===t[e])break;return-1}return e}function ie(t,e,n){return{err:{code:t,msg:e,line:n.line||n,col:n.col}}}function se(t){return R(t)}function ae(t){return R(t)}function oe(t,e){const n=t.substring(0,e).split(/\r?\n/);return{line:n.length,col:n[n.length-1].length+1}}function le(t){return t.startIndex+t[1].length}class he{constructor(t){this.externalEntities={},this.options=G(t)}parse(t,e){if("string"!=typeof t&&t.toString)t=t.toString();else if("string"!=typeof t)throw new Error("XML data is accepted in String or Bytes[] form.");if(e){!0===e&&(e={});const n=Gt(t,e);if(!0!==n)throw Error(`${n.err.msg}:${n.err.line}:${n.err.col}`)}const n=new Nt(this.options);n.entityDecoder.setExternalEntities(this.externalEntities);const r=n.parseXml(t);return this.options.preserveOrder||void 0===r?r:Xt(r,this.options,n.matcher,n.readonlyMatcher)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return J.getMetaDataSymbol()}}const ue={validate:Gt},ce={minLength:(t,e)=>e.length>=t,maxLength:(t,e)=>e.length<=t,length:(t,e)=>e.length===t,pattern:(t,e,n="")=>new RegExp(t,n).test(e),fixed:(t,e)=>t===e,in:(t,e)=>t.split(",").indexOf(e)>-1},de={min:(t,e)=>Number(e)>=t,max:(t,e)=>Number(e)<=t},pe={minOccurs:(t,e)=>e>=t,maxOccurs:(t,e)=>e<=t},fe=(t,e)=>Date.parse(e)>=Date.parse(t),ge=(t,e)=>Date.parse(e)<=Date.parse(t),me=["positiveInteger","integer","positiveDecimal","decimal","number"];class ve{constructor(t,e,n){this.options=t,this.failures=[],this.validators=e,this._globalUnique=new Map,this._siblingOrder=n||new Map}traverse(t,e,n,r){if(Array.isArray(t)){if(void 0!==n&&void 0!==n["@rules"]&&void 0!==n["@rules"].repeatable)return this.checkOccurences(n["@rules"],t.length,r),void t.forEach((i,s)=>{const a=r+"["+s+"]";Object.keys(n).length>1?this.callForCommonProperties(t[s],n,a):this.traverse(t[s],e,n,a)});this.failures.push({code:"unexpected sequence",path:r.substr(1)})}else"object"==typeof t?this.callForCommonProperties(t,n,r):("object"==typeof n&&n["@rules"]?this.checkDataAndType(t,e,n,r):this.isMapType(n)&&this.validateMandatoryFields(n,r),this.applyCustomValidators(t,n,r))}applyCustomValidators(t,e,n){if(e["@rules"]&&e["@rules"].checkBy&&"function"==typeof this.validators[e["@rules"].checkBy]){let r=this.validators[e["@rules"].checkBy](t,n.substr(1));"object"==typeof r&&this.failures.push(r)}}callForCommonProperties(t,e,n){const r=function(t,e){const n={data:[],rules:[],common:[]};for(let r=0;r<t.length;r++)-1===e.indexOf(t[r])?n.data.push(t[r]):n.common.push(t[r]);for(let r=0;r<e.length;r++)-1===t.indexOf(e[r])&&"@"!==e[r]&&n.rules.push(e[r]);return n}(Object.keys(t),Object.keys(e));this.checkUnknownSiblings(r,n),this.checkMissingSiblings(r,e,n),this.applyCustomValidators(t,e,n);const i=this._buildSiblingValues(t,e,r.common);r.common.forEach(r=>{const i=n+"."+r;this.traverse(t[r],r,e[r],i)}),this._checkOrderingConstraints(t,e,r.common,n),this._checkUniquenessConstraints(t,e,r.common,n,i),this._checkRelationalConstraints(t,e,r.common,n)}_checkOrderingConstraints(t,e,n,r){const i=r.substr(1),s=this._siblingOrder.get(i);s&&n.forEach(n=>{const i=e[n];if(!i||!i["@rules"])return;const a=i["@rules"],o=s.indexOf(n);if(-1!==o){if(a.after){const e=a.after;if(void 0===t[e])return;const i=s.indexOf(e);if(-1===i)return;o<=i&&this.failures.push({code:"after",path:(r+"."+n).substr(1),actual:n,expected:e})}if(a.before){const e=a.before;if(void 0===t[e])return;const i=s.indexOf(e);if(-1===i)return;o>=i&&this.failures.push({code:"before",path:(r+"."+n).substr(1),actual:n,expected:e})}}})}_checkRelationalConstraints(t,e,n,r){const i=["sameAs","notSameAs","lessThan","moreThan"];n.forEach(n=>{const s=e[n];if(!s||!s["@rules"])return;const a=s["@rules"];if(!i.some(t=>void 0!==a[t]))return;const o=t[n];if(null==o)return;if("object"==typeof o)return;const l=a.type||"string";i.forEach(e=>{if(void 0===a[e])return;const i=a[e],s=t[i];if(null==s)return;if("object"==typeof s)return;const h=this._relationalCompare(String(o),String(s),l);if(null===h)return;let u=!1;"sameAs"===e&&0!==h&&(u=!0),"notSameAs"===e&&0===h&&(u=!0),"lessThan"===e&&h>=0&&(u=!0),"moreThan"===e&&h<=0&&(u=!0),u&&this.failures.push({code:e,path:(r+"."+n).substr(1),actual:String(o),expected:i})})})}_relationalCompare(t,e,n){if("date"===n){const n=Date.parse(t),r=Date.parse(e);return isNaN(n)||isNaN(r)?null:n-r}if(-1!==me.indexOf(n)){const n=Number(t),r=Number(e);return isNaN(n)||isNaN(r)?null:n-r}return t<e?-1:t>e?1:0}_buildSiblingValues(t,e,n){const r=new Map;return n.forEach(e=>{const n=t[e];Array.isArray(n)?r.set(e,n.map(String)):null!=n&&"object"!=typeof n&&r.set(e,[String(n)])}),r}_checkUniquenessConstraints(t,e,n,r,i){n.forEach(n=>{const s=e[n];if(!s||!s["@rules"])return;const a=s["@rules"].unique;if(!a)return;const o=i.get(n)||[];"global"===a&&o.forEach((e,i)=>{const s=Array.isArray(t[n])?(r+"."+n+"["+i+"]").substr(1):(r+"."+n).substr(1);this._assertGlobalUnique(n,e,s)})})}_checkUniqueInCollection(t,e,n){const r=new Map;t.forEach((t,i)=>{const s=t[e];if(null==s||"object"==typeof s)return;const a=String(s);r.has(a)?this.failures.push({code:"unique",path:(n+"["+i+"]."+e).substr(1),value:a}):r.set(a,i)})}_assertGlobalUnique(t,e,n){this._globalUnique.has(t)||this._globalUnique.set(t,new Set);const r=this._globalUnique.get(t);r.has(e)?this.failures.push({code:"unique",path:n,value:e}):r.add(e)}checkDataAndType(t,e,n,r){!0===n["@rules"].repeatable&&this.checkOccurences(n["@rules"],1,r);const i=n["@rules"].type,s=this._expandRange(n);if("map"===i||!i&&this.isMapType(n))"string"==typeof t&&t.length>0&&this.failures.push({code:"unexpected value in a map",path:r.substr(1),value:t}),this.validateMandatoryFields(n,r);else if("date"===i)this.validateDate(t,i,r),this._checkDateBounds(n,t,r);else if("boolean"===i)this.validateBoolean(t,i,r);else if(-1!==me.indexOf(i))this.isValidNum(i,t)?this.assertValue(s["@rules"],"num",Number(t),r):this.setInvalidDataType(i,r,t);else{if("string"!==i&&i)throw new Error("Unsupported data type in Rules:"+i);this.assertValue(s["@rules"],"string",t,r)}}_expandRange(t){if(!t["@rules"]||!t["@rules"].range)return t;const e=function(t){if("string"!=typeof t)return null;const e=t.split("..");if(2!==e.length)return null;const n=Number(e[0]),r=Number(e[1]);return isNaN(n)||isNaN(r)?null:{min:n,max:r}}(t["@rules"].range);return e?{...t,"@rules":{...t["@rules"],min:void 0!==t["@rules"].min?t["@rules"].min:String(e.min),max:void 0!==t["@rules"].max?t["@rules"].max:String(e.max)}}:t}_checkDateBounds(t,e,n){if(isNaN(Date.parse(e)))return;const r=t["@rules"];let i=r.min,s=r.max;if(r.range&&(!i||!s)){const t=function(t){if("string"!=typeof t)return null;const e=t.split("..");if(2!==e.length)return null;const[n,r]=e;return isNaN(Date.parse(n))||isNaN(Date.parse(r))?null:{min:n,max:r}}(r.range);t&&(i||(i=t.min),s||(s=t.max))}void 0===i||fe(i,e)||this.setInvalidValueError("min",n,e,i),void 0===s||ge(s,e)||this.setInvalidValueError("max",n,e,s)}validateMandatoryFields(t,e){const n=Object.keys(t);for(let r=0;r<n.length;r++){if("@rules"===n[r])continue;const i=t[n[r]]["@rules"];i&&(i.minOccurs&&i.minOccurs>0||void 0!==i.nillable&&"false"===i.nillable)&&this.failures.push({code:"missing",path:(e+"."+n[r]).substr(1)})}}isMapType(t){if("string"==typeof t)return!1;const e=Object.keys(t);return t["@rules"]?1!==e.length&&void 0:0!==e.length}setInvalidValueError(t,e,n,r){this.failures.push({code:t,path:e.substr(1),actual:n,expected:r})}checkOccurences(t,e,n){["minOccurs","maxOccurs"].forEach(r=>{if(void 0!==t[r]){const i=Number(t[r]);pe[r](i,e)||this.setInvalidValueError(r,n,e,i)}})}checkNumeric(t,e,n){["min","max"].forEach(r=>{if(void 0!==t[r]){const i=Number(t[r]);de[r](i,e)||this.setInvalidValueError(r,n,e,i)}})}checkString(t,e,n){["minLength","maxLength","length"].forEach(r=>{if(void 0!==t[r]){const i=Number(t[r]);ce[r](i,e)||this.setInvalidValueError(r,n,e,i)}}),["fixed","in"].forEach(r=>{if(void 0!==t[r]){const i=t[r];ce[r](i,e)||this.setInvalidValueError(r,n,e,i)}}),["pattern","pattern_i","pattern_im","pattern_mi"].forEach(r=>{if(void 0!==t[r]){let i="";r.length>8&&(i=r.substring(8));const s=t[r];ce.pattern(s,e,i)||this.setInvalidValueError("pattern",n,e,s)}})}assertValue(t,e,n,r){"string"===e?this.checkString(t,n,r):"num"===e&&this.checkNumeric(t,n,r)}validateBoolean(t,e,n){-1===this.options.boolean.indexOf(t)&&this.setInvalidDataType(e,n,t)}isValidNum(t,e){if(isNaN(e))return!1;{const n=Number(e);if("positiveInteger"===t&&n<0||"positiveDecimal"===t&&n<0||"integer"===t&&!function(t){const e=parseFloat(t);return(0|e)===e}(e))return!1}return!0}validateDate(t,e,n){const r=Date.parse(t);isNaN(r)&&this.setInvalidDataType(e,n,t)}setInvalidDataType(t,e,n){this.failures.push({code:"not a "+t,path:e.substr(1),value:n})}checkMissingSiblings(t,e,n){t.rules&&t.rules.forEach(t=>{const r=e[t]["@rules"];r&&("false"===r.nillable||r.minOccurs>0)&&this.failures.push({code:"missing",path:(n+"."+t).substr(1)})})}checkUnknownSiblings(t,e){t.data&&!this.options.unknownAllow&&t.data.forEach(t=>{this.failures.push({code:"unknown",path:(e+"."+t).substr(1)})})}}const xe=ve.prototype.traverse;ve.prototype.traverse=function(t,e,n,r){if(Array.isArray(t)&&void 0!==n&&void 0!==n["@rules"]&&void 0!==n["@rules"].repeatable)return this.checkOccurences(n["@rules"],t.length,r),t.forEach((i,s)=>{const a=r+"["+s+"]";if(Object.keys(n).length>1)this.callForCommonProperties(t[s],n,a);else{const r=n;xe.call(this,t[s],e,r,a)}}),void(t.length>0&&"object"==typeof t[0]&&this._runSiblingUniqueness(t,n,r));xe.call(this,t,e,n,r)},ve.prototype._runSiblingUniqueness=function(t,e,n){Object.keys(e).filter(t=>"@rules"!==t).forEach(r=>{const i=e[r];i&&i["@rules"]&&"true"===i["@rules"].unique&&this._checkUniqueInCollection(t,r,n)})};const be={unknownAllow:!0,boolean:["true","false"]};function Ee(t){if(!t)throw new Error("Empty data");if("string"!=typeof t)throw new Error("Not a valid string");const e=ue.validate(t,{allowBooleanAttributes:!0});if(!0!==e)throw new Error(e.err.msg+":"+e.err.line)}const ye=class{constructor(t,e){Ee(t);const n=new he({ignoreAttributes:!1,attributesGroupName:"@rules",attributeNamePrefix:"",allowBooleanAttributes:!0});this.rules=n.parse(t),this.options=Object.assign({},be,e),this.validators={},this.data=null}register(t,e){this.validators[t]=e}validate(t){Ee(t);const e=new Map,n=new he({ignoreAttributes:!1,attributesGroupName:":a",attributeNamePrefix:"",parseTagValue:!1,tagValueProcessor:(t,n,r)=>{const i=r.lastIndexOf("."),s=-1===i?"":r.substring(0,i);e.has(s)||e.set(s,[]);const a=e.get(s);return a[a.length-1]!==t&&a.push(t),n}}).parse(t);this.data=n;const r=new ve(this.options,this.validators,e);return r.traverse(n,"",this.rules,""),r.failures}};var we=function(){function t(){}return t.validate=function(t,e){return function(t,e){e=Object.assign({},S,e);var n=[],r=!1,i=!1;"\ufeff"===t[0]&&(t=t.substr(1));var s="1.0";if(t.startsWith("<?xml")){var a=function(t){var e=t.indexOf("?>");-1===e&&V("InvalidXml",'XML declaration is not closed with "?>".',{line:1,col:1});for(var n,r=t.substring(5,e),i=e+2,s=["version","encoding","standalone"],a=/\s+([\w]+)\s*=\s*(?:"([^"]*)"|'([^']*)')/g,o="1.0",l=-1;null!==(n=a.exec(r));){var h=n[1],u=void 0!==n[2]?n[2]:n[3],c=n.index,d=s.indexOf(h);-1===d&&V("InvalidXml",'XML declaration contains unknown attribute "'+h+'". Allowed: version, encoding, standalone.',{line:1,col:6+c}),d<=l&&V("InvalidXml",'XML declaration attribute "'+h+'" is out of order. Required order: version, encoding, standalone.',{line:1,col:6+c}),l=d,"version"===h?("1.0"!==u&&"1.1"!==u&&V("InvalidXml",'XML declaration version "'+u+'" is not supported. Must be "1.0" or "1.1".',{line:1,col:6+c}),o=u):"standalone"===h&&"yes"!==u&&"no"!==u&&V("InvalidXml",'XML declaration standalone "'+u+'" is invalid. Must be "yes" or "no".',{line:1,col:6+c})}var p=r.replace(/\s+[\w]+\s*=\s*(?:"[^"]*"|'[^']*')/g,"").trim();return p.length>0&&V("InvalidXml",'XML declaration contains invalid content: "'+p+'".',{line:1,col:1}),{version:o,end:i}}(t);if(a.err)return a;s=a.version,t=t.substring(a.end)}for(var o=new g(e.docType,s),l=p("qName",{xmlVersion:s}),h=p("name",{xmlVersion:s}),u=0;u<t.length;u++)if("<"===t[u]&&"?"===t[u+1]){if((u=I(t,u+=2,h)).err)return u}else if("<"===t[u]){var c=u;if("!"===t[++u]){try{u=C(t,u,o)}catch(e){V("InvalidTag",e.message,$(t,u-1))}continue}var d=!1;"/"===t[u]&&(d=!0,u++);for(var f="";u<t.length&&">"!==t[u]&&" "!==t[u]&&"\t"!==t[u]&&"\n"!==t[u]&&"\r"!==t[u];u++)f+=t[u];"/"===(f=f.trim())[f.length-1]&&(f=f.substring(0,f.length-1),u--),l(f)||V("InvalidTag",0===f.trim().length?"Invalid space after '<'.":"Tag '"+f+"' is an invalid name.",$(t,c));var m=P(t,u);!1===m&&V("InvalidAttr","Attributes for '"+f+"' have open quote.",$(t,u));var v=m.value;if(u=m.index,"/"===v[v.length-1]){var x=u-v.length,b=D(v=v.substring(0,v.length-1),e,l,s);!0===b?(!0===i&&V("InvalidXml","Multiple possible root nodes found.",$(t,c)),r=!0,0===n.length&&(i=!0)):V(b.err.code,b.err.msg,$(t,x+b.err.line))}else if(d)if(m.tagClosed)if(v.trim().length>0)V("InvalidTag","Closing tag '"+f+"' can't have attributes or invalid starting.",$(t,c));else if(0===n.length)V("InvalidTag","Closing tag '"+f+"' has not been opened.",$(t,c));else{var E=n.pop();if(f!==E.tagName){var y=$(t,E.tagStartPos);V("InvalidTag","Expected closing tag '"+E.tagName+"' (opened in line "+y.line+", col "+y.col+") instead of closing tag '"+f+"'.",$(t,c))}0===n.length&&(i=!0)}else V("InvalidTag","Closing tag '"+f+"' doesn't have proper closing.",$(t,u));else{var w=D(v,e,l,s);!0!==w&&V(w.err.code,w.err.msg,$(t,u-v.length+w.err.line)),!0===i?V("InvalidXml","Multiple possible root nodes found.",$(t,u)):-1!==e.unpairedTags.indexOf(f)||n.push({tagName:f,tagStartPos:c}),r=!0}for(u++;u<t.length;u++)if("<"===t[u]){if("!"===t[u+1]){u++;try{u=C(t,u,o)}catch(e){V("InvalidDocType",e.message,$(t,u-1))}continue}if("?"!==t[u+1])break;if((u=I(t,u+=2,h)).err)return u}else if("&"===t[u]){var N=k(t,u);-1===N&&V("InvalidChar","char '&' is not expected.",$(t,u)),u=N}else!0!==i||T(t[u])||V("InvalidXml","Extra text at the end",$(t,u));"<"===t[u]&&u--}else{if(T(t[u]))continue;i&&V("InvalidXml","Extra text at the end: '"+t[u]+"' is not expected.",$(t,u)),V("InvalidChar","char '"+t[u]+"' is not expected.",$(t,u))}return r?1===n.length?V("InvalidTag","Unclosed tag '"+n[0].tagName+"'.",$(t,n[0].tagStartPos)):n.length>0&&V("InvalidXml","Invalid '"+JSON.stringify(n.map(function(t){return t.tagName})).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):V("InvalidXml","Start tag expected.",{line:1,col:1}),!0}(t,e)},t}();return e})());
2
2
  //# sourceMappingURL=fxv.min.js.map