diff --git a/CHANGELOG.md b/CHANGELOG.md index cf045a1..0a9830f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). -[Unreleased] +[1.5.0] - 2017-04-25 -------------------- ##### Added - Ends-with() support. diff --git a/dist/enketo-xpathjs.js b/dist/enketo-xpathjs.js index cfb3fa3..73ba2e9 100644 --- a/dist/enketo-xpathjs.js +++ b/dist/enketo-xpathjs.js @@ -4537,9 +4537,7 @@ var XPathJS = (function(){ { // Using ParseInt, creates a problem for very small or large numbers that are displayed in scientific // notation. E.g. parseInt(1/47999799999, 10) is 2 instead of 0 (2.08e-11) - // Therefore this function is essentially an alias for floor(). It's argument is a string though, - // but I don't think it behaves different from floor in any way. - return new NumberType( Math.floor( str.toNumber() ) ); + return new NumberType( ( str.toNumber() >= 0 ) ? Math.floor( str.toNumber() ) : -Math.floor( Math.abs( str.toNumber() ) ) ); }, args: [ {t: 'string'} @@ -5345,11 +5343,55 @@ var XPathJS = (function(){ ], ret: 'number' - } + }, + + 'ends-with': { + /** + * The ends-with function returns true if the first argument string + * ends with the second argument string, and otherwise returns false. + * + * An alternative (faster?) would be to reverse the first argument and use starts-with (in Enketo Core)? + * + * @see https://www.w3.org/TR/xpath-functions-30/#func-ends-with + * @param {StringType} haystack + * @param {StringType} needle + * @return {StringType} + */ + fn: function(haystack, needle) + { + return new BooleanType(haystack.toString().substr(haystack.toString().length - needle.toString().length) === needle.toString()); + }, + + args: [ + {t: 'string'}, + {t: 'string'} + ], + + ret: 'string' + }, + + abs: { + /** + * Returns the absolute value of the argument. + * + * @see https://www.w3.org/TR/xpath-functions-30/#func-abs + * @param {NumberType} + * @return {NumberType} + */ + fn: function(number) + { + return new NumberType(Math.abs(number)); + }, + + args: [ + {t: 'number'} + ], + + ret: 'number' + }, /** - * The indexed-repeat function... should be used as little as possible - * THIS FUNCTION DOESN'T WORK NICELY WITH POSITION-INJECTION INSIDE REPEATS + * MOVED TO ENKETO-CORE WHERE IT TRANSFORMED INTO REGULAR XPATH * * @param { NodeSetType} nodeset Collection of nodes of which to select one * @param { NodeSetType} r1,r2,r3,r4,r5 The repeat nodes diff --git a/dist/enketo-xpathjs.min.js b/dist/enketo-xpathjs.min.js index ae7c2fa..b648cc9 100644 --- a/dist/enketo-xpathjs.min.js +++ b/dist/enketo-xpathjs.min.js @@ -1,3 +1,3 @@ -var XPathJS=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=[],s="http://www.w3.org/XML/1998/namespace",t=function(a){return a.ownerDocument},u=function(a){var b=[],c=function(a,b){var c,d,e=[];for(d=0;d1&&c[0].compareDocumentPosition&&c.sort(function(a,b){var c=a.compareDocumentPosition(b);return 2==(2&c)?1:4==(4&c)?-1:0}),c},G=function(a){var b,c=F(a),d=[];for(b=0;b=0;d--)f=a.ownerDocument.namespaces.item(d),I.call(this,g,f.name,f.urn,a);for(c=F(a),d=c.length-1;d>=0;d--)!1!==(e=J(c[d]))&&(1!==e.length?I.call(this,g,e[1],c[d].nodeValue,a):I.call(this,g,"",c[d].nodeValue,a));if(H.call(this,a.parentNode,g),void 0===b&&(I.call(this,g,"xml",s,a),g[0]&&""===g[0].prefix&&""===g[0].namespaceURI&&g.shift()),void 0===b)for(d=0;d=0&&d.sourceIndex>=0?(c.sourceIndexd.sourceIndex&&2):1)+0}if(a===c&&b===d)return e;if(a===c)return h(a,c,b,d,e,16,8,4,2);if(b===d)return h(b,d,a,c,e,8,16,2,4);if(16==(16&e))return 4;if(8==(8&e))return 2;if(0===e){for(f=0;f0},p.prototype.toString=function(){return this.value.length<1?"":(this.sortDocumentOrder(),N(this.value[0]))},p.prototype.toNumber=function(){return new n(this.toString()).toNumber()},p.prototype.toNodeSet=function(){return this.value},p.prototype.toDate=function(){return new n(this.toString()).toDate()},p.prototype.sortDocumentOrder=function(){switch(this.docOrder){case"document-order":break;case"reverse-document-order":this.value.reverse();break;default:this.value.sort(function(a,b){var c=S(a,b);if(4==(4&c))return-1;if(2==(2&c))return 1;throw new Error("NodeSetType.sortDocumentOrder - unexpected compare result: "+c)})}this.docOrder="document-order"},p.prototype.sortReverseDocumentOrder=function(){switch(this.docOrder){case"document-order":this.value.reverse();break;case"reverse-document-order":break;default:this.sortDocumentOrder(),this.value.reverse()}this.docOrder="reverse-document-order"},p.prototype.append=function(a){var b,c=0,d=0;if(!a instanceof p)throw new Error("NodeSetType can be passed into NodeSetType.append method");for(this.sortDocumentOrder(),a.sortDocumentOrder();c0},n.prototype.toString=function(){return this.value},n.prototype.toNumber=function(){var a;return this.isDateString(this.value)?new DateType(this.value).toNumber():null!==(a=this.value.match(/^[ \t\r\n]*(-?[0-9]+(?:[.][0-9]*)?)[ \t\r\n]*$/))?parseFloat(a[1]):(a=this.value.match(/^[ \t\r\n]*(-?[.][0-9]+)[ \t\r\n]*$/),null!==a?parseFloat(a[1]):Number.NaN)},n.prototype.toDate=function(){return new Date(this.value)},n.prototype.isDateString=function(){return!!isNaN(this.value)&&(!isNaN(Date.parse(this.value))&&!!/('|")?[0-9]{4}(-|\/)[0-9]{2}(-|\/)[0-9]{2}('|")?/.test(this.value))},o=function(a){l.call(this,a,"number",["boolean","string","number","date"])},o.prototype=new l,o.constructor=o,o.prototype.toBoolean=function(){return 0!==this.value&&!isNaN(this.value)},o.prototype.toString=function(){return this.value.toString()},o.prototype.toNumber=function(){return this.value},o.prototype.toDate=function(){return new Date(864e5*this.value)},DateType=function(a){l.call(this,a,"date",["date","string","number","boolean"])},DateType.prototype=new l,DateType.constructor=DateType,DateType.prototype.toDate=function(){return new Date(this.value)},DateType.prototype.toString=function(){return new Date(this.value).toUTCString()},DateType.prototype.toNumber=function(){return new Date(this.value).getTime()/864e5},DateType.prototype.toBoolean=function(){return!isNaN(new Date(this.value).getTime())},a=function(b,c){var d;switch(this.code=b,this.code){case a.INVALID_EXPRESSION_ERR:this.name="INVALID_EXPRESSION_ERR";break;case a.TYPE_ERR:this.name="TYPE_ERR";break;default:throw d=new Error("Unsupported XPathException code: "+this.code),d.name="XPathExceptionInternalError",d}this.message=c||""},a.prototype.toString=function(){return'XPathException: "'+this.message+'", code: "'+this.code+'", name: "'+this.name+'"'},a.INVALID_EXPRESSION_ERR=51,a.TYPE_ERR=52,b=function(a){var b,c,d;for(b in a){d=!1;for(c in this.opts)if(b===c){this.opts[b]=a[b],d=!0;break}if(!d)throw new Error("Unsupported option: "+b)}this.opts["unique-ids"][s]="id",this.opts["unique-ids"]["http://www.w3.org/1999/xhtml"]="id"},b.prototype={opts:{"unique-ids":{},"case-sensitive":!1},createExpression:function(b,d){var e,f,g,h,i={};try{e=XPathJS._parser.parse(b)}catch(b){throw f="The expression is not a legal expression.",f+=b instanceof XPathJS._parser.SyntaxError?" (line: "+b.line+", character: "+b.column+")":" ("+b.message+")",new a(a.INVALID_EXPRESSION_ERR,f)}if(e.nsPrefixes.length>0){if("object"!=typeof d||void 0===d.lookupNamespaceURI)throw new a(a.INVALID_EXPRESSION_ERR,"No namespace resolver provided or lookupNamespaceURI function not supported.");for(g=0;g=0;d--)switch(b.args[0]){case"text":3!=c.value[d].nodeType&&4!=c.value[d].nodeType&&c.value.splice(d,1);break;case"comment":8!=c.value[d].nodeType&&c.value.splice(d,1);break;case"processing-instruction":(7!=c.value[d].nodeType||b.args[1].length>0&&h(this,b.args[1][0])!=c.value[d].nodeName)&&c.value.splice(d,1)}break;case"name":switch(g=h(this,b),a){case"attribute":i=2;break;case"namespace":i=13;break;default:i=1}for(d=c.value.length-1;d>=0;d--)c.value[d].nodeType==i?null===g.ns&&null===g.name||(j=M.call(this,c.value[d]),j!==!1&&j.ns===g.ns?null!==g.name&&j.name.toLowerCase()!=g.name.toLowerCase()&&c.value.splice(d,1):c.value.splice(d,1)):c.value.splice(d,1);break;default:throw new Error("NodeTest type not supported in step: "+b.type)}return c},predicate:function(a,b,c){var d,e,f,g,i,j;if(!(d=h(this,b))instanceof p)throw new Error('Expected "node-set", got: '+d.type);switch(a){case"ancestor":case"ancestor-or-self":case"preceding":case"preceding-sibling":d.sortReverseDocumentOrder();break;default:d.sortDocumentOrder()}for(g=0;g=":function(a,b){return Q.call(this,h(this,a),h(this,b),">=",function(a,b){return a>=b})},">":function(a,b){return Q.call(this,h(this,a),h(this,b),">",function(a,b){return a>b})},"+":function(a,b){return new o(h(this,a).toNumber()+h(this,b).toNumber())},"-":function(a,b){return new o(h(this,a).toNumber()-h(this,b).toNumber())},div:function(a,b){return new o(h(this,a).toNumber()/h(this,b).toNumber())},mod:function(a,b){return new o(h(this,a).toNumber()%h(this,b).toNumber())},"*":function(a,b){return new o(h(this,a).toNumber()*h(this,b).toNumber())},string:function(a){return new n(a)},number:function(a){return new o(a)},$:function(a){throw new Error("TODO: Not implemented.16")},name:function(a,b){var c=null;if(null!==a&&!(c=this.nsMap[a]))throw new Error('Namespace prefix "'+a+'" is not mapped to a namespace.');return{ns:c,name:b}}},j={"":{last:{fn:function(){return new o(this.size)},ret:"number"},count:{fn:function(a){return new o(a.toNodeSet().length)},args:[{t:"node-set"}],ret:"number"},id:{fn:function(a){var b,c,d,e=this,f=[],g=[],h=function(a){var b,c=a.split(/[\u0020\u0009\u000D\u000A]+/);for(b=c.length-1;b>=0;b--)0==c[b].length&&c.splice(b,1);return c};if(a instanceof p)for(b=0;b=0;b--)for(c=b-1;c>=0;c--)if(f[b]==f[c]&&b!=c){f.splice(b,1);break}for(b=0;b0&&(a.sortDocumentOrder(),(b=M.call(this,a.value[0]))!==!1&&(c=b.name)),new n(c)},args:[{t:"node-set",r:!1}],ret:"string"},"namespace-uri":{fn:function(a){var b,c="";return 0==arguments.length&&(a=new p([this.node])),a.toNodeSet().length>0&&(a.sortDocumentOrder(),(b=M.call(this,a.value[0]))!==!1&&null!==b.ns&&(c=b.ns)),new n(c)},args:[{t:"node-set",r:!1}],ret:"string"},name:{fn:function(a){var b,c="";return 0==arguments.length&&(a=new p([this.node])),a.toNodeSet().length>0&&(a.sortDocumentOrder(),(b=M.call(this,a.value[0]))!==!1&&(c=b.prefix&&b.prefix.length>0?b.prefix+":"+b.name:b.name)),new n(c)},args:[{t:"node-set",r:!1}],ret:"string"},string:{fn:function(a){return 0==arguments.length&&(a=new p([this.node],"document-order")),new n(a.toString())},args:[{t:"object",r:!1}],ret:"string"},"starts-with":{fn:function(a,b){return new m(a.toString().substr(0,(b=b.toString()).length)==b)},args:[{t:"string"},{t:"string"}],ret:"string"},contains:{fn:function(a,b){return new m(a.toString().indexOf(b=b.toString())!=-1)},args:[{t:"string"},{t:"string"}],ret:"string"},"substring-before":{fn:function(a,b){return a=a.toString(),b=a.indexOf(b.toString()),new n(b==-1?"":a.substr(0,b))},args:[{t:"string"},{t:"string"}],ret:"string"},"substring-after":{fn:function(a,b){var c;return a=a.toString(),b=b.toString(),c=a.indexOf(b),new n(c==-1?"":a.substr(c+b.length))},args:[{t:"string"},{t:"string"}],ret:"string"},substring:{fn:function(a,b,c){return a=a.toString(),b=Math.round(b.toNumber())-1,new n(isNaN(b)?"":2==arguments.length?a.substring(b<0?0:b):a.substring(b<0?0:b,b+Math.round(c.toNumber())))},args:[{t:"string"},{t:"number"},{t:"number",r:!1}],ret:"string"},"string-length":{fn:function(a){return a=0==arguments.length?N(this.node):a.toString(),new o(a.length)},args:[{t:"string",r:!1}],ret:"number"},"normalize-space":{fn:function(a){return a=0==arguments.length?N(this.node):a.toString(),new n(a.replace(/^[\u0020\u0009\u000D\u000A]+/,"").replace(/[\u0020\u0009\u000D\u000A]+$/,"").replace(/[\u0020\u0009\u000D\u000A]+/g," "))},args:[{t:"string",r:!1}],ret:"string"},translate:{fn:function(a,b,c){var d,e,f,g="";for(a=a.toString(),b=b.toString(),c=c.toString(),d=0;d=0&&b0?(b=N(a[0]).trim().split(" "),new o(1==b.length&&""===b[0]?0:b.length)):new o(0)},args:[{t:"node-set"}],ret:"number"},checklist:{fn:function(a,b,c){var d,e,f=0;for(a=a.toNumber(),b=b.toNumber(),d=2;d=a)&&(b<0||f<=b))},args:[{t:"number"},{t:"number"},{t:"object"},{t:"object",r:!1,rep:!0}],ret:"boolean"},"weighted-checklist":{fn:function(a,b,c,d){var e,f=[],g=[],h=0;for(a=a.toNumber(),b=b.toNumber(),e=2;e=a)&&(b<0||h<=b))},args:[{t:"number"},{t:"number"},{t:"object"},{t:"object"},{t:"object",r:!1,rep:!0}],ret:"boolean"},"boolean-from-string":{fn:function(a){return new m("true"===a.toString().toLowerCase()||"1"===String(a))},args:[{t:"string"}],ret:"boolean"},if:{fn:function(a,b,c){return a.toBoolean()?b:c},args:[{t:"object"},{t:"object"},{t:"object"}],ret:"object"},date:{fn:function(a){return new DateType(a.toDate())},args:[{t:"object"}],ret:"string"},"date-time":{fn:function(a){return new DateType(a.toDate())},args:[{t:"object"}],ret:"string"},"decimal-date-time":{fn:function(a){return new DateType(a.toDate())},args:[{t:"object"}],ret:"string"},today:{fn:function(){var a=new Date;return new DateType(new Date(a.getFullYear(),a.getMonth(),a.getDate()))},ret:"string"},now:{fn:function(){return new DateType(new Date)},ret:"string"},regex:{fn:function(a,b){var c,d;return c=a.toString(),d=new RegExp(b),new m(d.test(c))},args:[{t:"object"},{t:"string"}],ret:"boolean"},uuid:{fn:function(){return new n("xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0;return("x"==a?b:3&b|8).toString(16)}))},ret:"string"},int:{fn:function(a){return new o(Math.floor(a.toNumber()))},args:[{t:"string"}],ret:"number"},substr:{fn:function(a,b,c){return a=a.toString(),length=a.length,b=Math.round(b.toNumber()),c=c?Math.round(c.toNumber()):length,new n(isNaN(b)?"":a.substring(b<0?length+b:b,c<0?length+c:c))},args:[{t:"string"},{t:"number"},{t:"number",r:!1}],ret:"string"},random:{fn:function(){return new o(Math.random().toFixed(15))},ret:"number"},min:{fn:function(a,b){var c,d,e,f,g;for(c=0;c0?a:b},args:[{t:"object"},{t:"object"}],ret:"string"},"format-date":{fn:function(a,b){var c,a=new DateType(a),d=a.toDate(),e=b.toString(),f=function(a,b){var d=a.toString(),e=b-d.length;for(c=0;c1?a.value.forEach(function(a){c.push(N(a))}):a instanceof p?c=N(a.value[0]).split(";"):a instanceof n&&(c=a.value.split(";")),d=c.map(function(a){return a.trim().split(" ")}),d.every(function(a){return""!==a[0]&&a[0]>=-90&&a[0]<=90&&""!==a[1]&&a[1]>=-180&&a[1]<=180&&(void 0===a[2]||!isNaN(a[2]))&&(void 0===a[3]||!isNaN(a[3])&&a[3]>=0)})){var e,f,g=d.length,h=Math.PI/180;if(b=0,g>2){for(var i=0;ikd&&(kd=hd,ld=[]),ld.push(a))}function f(b,c,d,e){return null!==c&&function(a){var b=1;for(a.sort(function(a,b){return a.descriptionb.description?1:0});b1?f.slice(0,-1).join(", ")+" or "+f[a.length-1]:f[0],d=b?'"'+function(a){function b(a){return a.charCodeAt(0).toString(16).toUpperCase()}return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(a){return"\\x0"+b(a)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(a){return"\\x"+b(a)}).replace(/[\u0100-\u0FFF]/g,function(a){return"\\u0"+b(a)}).replace(/[\u1000-\uFFFF]/g,function(a){return"\\u"+b(a)})}(b)+'"':"end of input","Expected "+c+" but "+d+" found."}(c,d),c,d,e)}function g(){var a,b,c,d;return a=hd,b=O(),b!==Y?(c=s(),c!==Y?(d=O(),d!==Y?(id=a,b=_(c),a=b):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a}function h(){var a;return a=j(),a===Y&&(a=i()),a}function i(){var a,c,d,f,g;return a=p(),a===Y&&(a=hd,47===b.charCodeAt(hd)?(c=aa,hd++):(c=Y,0===md&&e(ba)),c!==Y?(d=hd,f=O(),f!==Y?(g=j(),g!==Y?(f=[f,g],d=f):(hd=d,d=Y)):(hd=d,d=Y),d===Y&&(d=null),d!==Y?(id=a,c=ca(d),a=c):(hd=a,a=Y)):(hd=a,a=Y)),a}function j(){var a,c,d,f,g,h,i,j;if(a=hd,(c=k())!==Y){for(d=[],f=hd,g=O(),g!==Y?(b.substr(hd,2)===da?(h=da,hd+=2):(h=Y,0===md&&e(ea)),h===Y&&(47===b.charCodeAt(hd)?(h=aa,hd++):(h=Y,0===md&&e(ba))),h!==Y?(i=O(),i!==Y?(j=k(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(b.substr(hd,2)===da?(h=da,hd+=2):(h=Y,0===md&&e(ea)),h===Y&&(47===b.charCodeAt(hd)?(h=aa,hd++):(h=Y,0===md&&e(ba))),h!==Y?(i=O(),i!==Y?(j=k(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=fa(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function k(){var a,b,c,d,e,f,g;if(a=hd,(b=l())!==Y)if(O()!==Y)if((c=n())!==Y){for(d=[],e=hd,f=O(),f!==Y?(g=o(),g!==Y?(f=[f,g],e=f):(hd=e,e=Y)):(hd=e,e=Y);e!==Y;)d.push(e),e=hd,f=O(),f!==Y?(g=o(),g!==Y?(f=[f,g],e=f):(hd=e,e=Y)):(hd=e,e=Y);d!==Y?(id=a,b=ga(b,c,d),a=b):(hd=a,a=Y)}else hd=a,a=Y;else hd=a,a=Y;else hd=a,a=Y;return a===Y&&(a=q()),a}function l(){var a,c,d,f;return a=hd,c=m(),c!==Y?(d=O(),d!==Y?(b.substr(hd,2)===ha?(f=ha,hd+=2):(f=Y,0===md&&e(ia)),f!==Y?(id=a,c=ja(c),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,c=r(),c!==Y&&(id=a,c=ka(c)),a=c),a}function m(){var a;return b.substr(hd,16)===la?(a=la,hd+=16):(a=Y,0===md&&e(ma)),a===Y&&(b.substr(hd,8)===na?(a=na,hd+=8):(a=Y,0===md&&e(oa)),a===Y&&(b.substr(hd,9)===pa?(a=pa,hd+=9):(a=Y,0===md&&e(qa)),a===Y&&(b.substr(hd,5)===ra?(a=ra,hd+=5):(a=Y,0===md&&e(sa)),a===Y&&(b.substr(hd,18)===ta?(a=ta,hd+=18):(a=Y,0===md&&e(ua)),a===Y&&(b.substr(hd,10)===va?(a=va,hd+=10):(a=Y,0===md&&e(wa)),a===Y&&(b.substr(hd,17)===xa?(a=xa,hd+=17):(a=Y,0===md&&e(ya)),a===Y&&(b.substr(hd,9)===za?(a=za,hd+=9):(a=Y,0===md&&e(Aa)),a===Y&&(b.substr(hd,9)===Ba?(a=Ba,hd+=9):(a=Y,0===md&&e(Ca)),a===Y&&(b.substr(hd,6)===Da?(a=Da,hd+=6):(a=Y,0===md&&e(Ea)),a===Y&&(b.substr(hd,17)===Fa?(a=Fa,hd+=17):(a=Y,0===md&&e(Ga)),a===Y&&(b.substr(hd,9)===Ha?(a=Ha,hd+=9):(a=Y,0===md&&e(Ia)),a===Y&&(b.substr(hd,4)===Ja?(a=Ja,hd+=4):(a=Y,0===md&&e(Ka)))))))))))))),a}function n(){var a,c,d,f,g,h,i,j;return a=hd,c=M(),c!==Y?(d=O(),d!==Y?(40===b.charCodeAt(hd)?(f=La,hd++):(f=Y,0===md&&e(Ma)),f!==Y?(g=O(),g!==Y?(41===b.charCodeAt(hd)?(h=Na,hd++):(h=Y,0===md&&e(Oa)),h!==Y?(id=a,c=Pa(c),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,b.substr(hd,22)===Qa?(c=Qa,hd+=22):(c=Y,0===md&&e(Ra)),c!==Y?(d=O(),d!==Y?(40===b.charCodeAt(hd)?(f=La,hd++):(f=Y,0===md&&e(Ma)),f!==Y?(g=O(),g!==Y?(h=F(),h!==Y?(i=O(),i!==Y?(41===b.charCodeAt(hd)?(j=Na,hd++):(j=Y,0===md&&e(Oa)),j!==Y?(id=a,c=Sa(c,h),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,c=L(),c!==Y&&(id=a,c=Ta(c)),a=c)),a}function o(){var a,c,d,f,g,h;return a=hd,91===b.charCodeAt(hd)?(c=Ua,hd++):(c=Y,0===md&&e(Va)),c!==Y?(d=O(),d!==Y?(f=s(),f!==Y?(g=O(),g!==Y?(93===b.charCodeAt(hd)?(h=Wa,hd++):(h=Y,0===md&&e(Xa)),h!==Y?(id=a,c=Ya(f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a}function p(){var a,c,d,f;return a=hd,b.substr(hd,2)===da?(c=da,hd+=2):(c=Y,0===md&&e(ea)),c!==Y?(d=O(),d!==Y?(f=j(),f!==Y?(id=a,c=Za(f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a}function q(){var a,c;return a=hd,b.substr(hd,2)===$a?(c=$a,hd+=2):(c=Y,0===md&&e(_a)),c===Y&&(46===b.charCodeAt(hd)?(c=ab,hd++):(c=Y,0===md&&e(bb))),c!==Y&&(id=a,c=cb(c)),a=c}function r(){var a,c;return a=hd,64===b.charCodeAt(hd)?(c=db,hd++):(c=Y,0===md&&e(eb)),c===Y&&(c=null),c!==Y&&(id=a,c=fb(c)),a=c}function s(){var a,b;return a=hd,b=y(),b!==Y&&(id=a,b=Ya(b)),a=b}function t(){var a,c,d,f,g,h;return a=hd,c=K(),c!==Y&&(id=a,c=gb(c)),a=c,a===Y&&(a=hd,40===b.charCodeAt(hd)?(c=La,hd++):(c=Y,0===md&&e(Ma)),c!==Y?(d=O(),d!==Y?(f=s(),f!==Y?(g=O(),g!==Y?(41===b.charCodeAt(hd)?(h=Na,hd++):(h=Y,0===md&&e(Oa)),h!==Y?(id=a,c=Ya(f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,c=F(),c!==Y&&(id=a,c=hb(c)),(a=c)===Y&&(a=hd,c=G(),c!==Y&&(id=a,c=ib(c)),(a=c)===Y&&(a=u())))),a}function u(){var a,c,d,f,g,h,i,j,k,l,m,n;if(a=hd,(c=J())!==Y)if(O()!==Y)if(40===b.charCodeAt(hd)?(d=La,hd++):(d=Y,0===md&&e(Ma)),d!==Y){if(f=hd,(g=O())!==Y)if((h=s())!==Y){for(i=[],j=hd,k=O(),k!==Y?(44===b.charCodeAt(hd)?(l=jb,hd++):(l=Y,0===md&&e(kb)),l!==Y?(m=O(),m!==Y?(n=s(),n!==Y?(k=[k,l,m,n],j=k):(hd=j,j=Y)):(hd=j,j=Y)):(hd=j,j=Y)):(hd=j,j=Y);j!==Y;)i.push(j),j=hd,k=O(),k!==Y?(44===b.charCodeAt(hd)?(l=jb,hd++):(l=Y,0===md&&e(kb)),l!==Y?(m=O(),m!==Y?(n=s(),n!==Y?(k=[k,l,m,n],j=k):(hd=j,j=Y)):(hd=j,j=Y)):(hd=j,j=Y)):(hd=j,j=Y);i!==Y?(g=[g,h,i],f=g):(hd=f,f=Y)}else hd=f,f=Y;else hd=f,f=Y;f===Y&&(f=null),f!==Y?(g=O(),g!==Y?(41===b.charCodeAt(hd)?(h=Na,hd++):(h=Y,0===md&&e(Oa)),h!==Y?(id=a,c=lb(c,f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)}else hd=a,a=Y;else hd=a,a=Y;else hd=a,a=Y;return a}function v(){var a,c,d,f,g,h,i,j;if(a=hd,(c=w())!==Y){for(d=[],f=hd,g=O(),g!==Y?(124===b.charCodeAt(hd)?(h=mb,hd++):(h=Y,0===md&&e(nb)),h!==Y?(i=O(),i!==Y?(j=w(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(124===b.charCodeAt(hd)?(h=mb,hd++):(h=Y,0===md&&e(nb)),h!==Y?(i=O(),i!==Y?(j=w(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function w(){var a,c,d,f,g,i,k;return a=hd,c=x(),c!==Y?(d=hd,f=O(),f!==Y?(b.substr(hd,2)===da?(g=da,hd+=2):(g=Y,0===md&&e(ea)),g===Y&&(47===b.charCodeAt(hd)?(g=aa,hd++):(g=Y,0===md&&e(ba))),g!==Y?(i=O(),i!==Y?(k=j(),k!==Y?(f=[f,g,i,k],d=f):(hd=d,d=Y)):(hd=d,d=Y)):(hd=d,d=Y)):(hd=d,d=Y),d===Y&&(d=null),d!==Y?(id=a,c=pb(c,d),a=c):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,c=h(),c!==Y&&(id=a,c=qb(c)),a=c),a}function x(){var a,b,c,d,e,f;if(a=hd,(b=t())!==Y){for(c=[],d=hd,e=O(),e!==Y?(f=o(),f!==Y?(e=[e,f],d=e):(hd=d,d=Y)):(hd=d,d=Y);d!==Y;)c.push(d),d=hd,e=O(),e!==Y?(f=o(),f!==Y?(e=[e,f],d=e):(hd=d,d=Y)):(hd=d,d=Y);c!==Y?(id=a,b=rb(b,c),a=b):(hd=a,a=Y)}else hd=a,a=Y;return a}function y(){var a,c,d,f,g,h,i,j;if(a=hd,(c=z())!==Y){for(d=[],f=hd,g=O(),g!==Y?(b.substr(hd,2)===sb?(h=sb,hd+=2):(h=Y,0===md&&e(tb)),h!==Y?(i=O(),i!==Y?(j=z(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(b.substr(hd,2)===sb?(h=sb,hd+=2):(h=Y,0===md&&e(tb)),h!==Y?(i=O(),i!==Y?(j=z(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function z(){var a,c,d,f,g,h,i,j;if(a=hd,(c=A())!==Y){for(d=[],f=hd,g=O(),g!==Y?(b.substr(hd,3)===ub?(h=ub,hd+=3):(h=Y,0===md&&e(vb)),h!==Y?(i=O(),i!==Y?(j=A(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(b.substr(hd,3)===ub?(h=ub,hd+=3):(h=Y,0===md&&e(vb)),h!==Y?(i=O(),i!==Y?(j=A(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function A(){var a,c,d,f,g,h,i,j;if(a=hd,(c=B())!==Y){for(d=[],f=hd,g=O(),g!==Y?(61===b.charCodeAt(hd)?(h=wb,hd++):(h=Y,0===md&&e(xb)),h===Y&&(b.substr(hd,2)===yb?(h=yb,hd+=2):(h=Y,0===md&&e(zb))),h!==Y?(i=O(),i!==Y?(j=B(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(61===b.charCodeAt(hd)?(h=wb,hd++):(h=Y,0===md&&e(xb)),h===Y&&(b.substr(hd,2)===yb?(h=yb,hd+=2):(h=Y,0===md&&e(zb))),h!==Y?(i=O(),i!==Y?(j=B(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function B(){var a,c,d,f,g,h,i,j;if(a=hd,(c=C())!==Y){for(d=[],f=hd,g=O(),g!==Y?(b.substr(hd,2)===Ab?(h=Ab,hd+=2):(h=Y,0===md&&e(Bb)),h===Y&&(60===b.charCodeAt(hd)?(h=Cb,hd++):(h=Y,0===md&&e(Db)),h===Y&&(b.substr(hd,2)===Eb?(h=Eb,hd+=2):(h=Y,0===md&&e(Fb)),h===Y&&(62===b.charCodeAt(hd)?(h=Gb,hd++):(h=Y,0===md&&e(Hb))))),h!==Y?(i=O(),i!==Y?(j=C(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(b.substr(hd,2)===Ab?(h=Ab,hd+=2):(h=Y,0===md&&e(Bb)),h===Y&&(60===b.charCodeAt(hd)?(h=Cb,hd++):(h=Y,0===md&&e(Db)),h===Y&&(b.substr(hd,2)===Eb?(h=Eb,hd+=2):(h=Y,0===md&&e(Fb)),h===Y&&(62===b.charCodeAt(hd)?(h=Gb,hd++):(h=Y,0===md&&e(Hb))))),h!==Y?(i=O(),i!==Y?(j=C(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function C(){var a,c,d,f,g,h,i,j;if(a=hd,(c=D())!==Y){for(d=[],f=hd,g=O(),g!==Y?(43===b.charCodeAt(hd)?(h=Ib,hd++):(h=Y,0===md&&e(Jb)),h===Y&&(45===b.charCodeAt(hd)?(h=Kb,hd++):(h=Y,0===md&&e(Lb))),h!==Y?(i=O(),i!==Y?(j=D(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(43===b.charCodeAt(hd)?(h=Ib,hd++):(h=Y,0===md&&e(Jb)),h===Y&&(45===b.charCodeAt(hd)?(h=Kb,hd++):(h=Y,0===md&&e(Lb))),h!==Y?(i=O(),i!==Y?(j=D(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function D(){var a,c,d,f,g,h,i,j;if(a=hd,(c=E())!==Y){for(d=[],f=hd,g=O(),g!==Y?(h=I(),h===Y&&(b.substr(hd,3)===Mb?(h=Mb,hd+=3):(h=Y,0===md&&e(Nb)),h===Y&&(b.substr(hd,3)===Ob?(h=Ob,hd+=3):(h=Y,0===md&&e(Pb)))),h!==Y?(i=O(),i!==Y?(j=E(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(h=I(),h===Y&&(b.substr(hd,3)===Mb?(h=Mb,hd+=3):(h=Y,0===md&&e(Nb)),h===Y&&(b.substr(hd,3)===Ob?(h=Ob,hd+=3):(h=Y,0===md&&e(Pb)))),h!==Y?(i=O(),i!==Y?(j=E(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function E(){var a,c,d,f;return a=hd,c=v(),c!==Y&&(id=a,c=Ya(c)),a=c,a===Y&&(a=hd,45===b.charCodeAt(hd)?(c=Kb,hd++):(c=Y,0===md&&e(Lb)),c!==Y?(d=O(),d!==Y?(f=E(),f!==Y?(id=a,c=Qb(f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)),a}function F(){var a,c,d,f;if(a=hd,34===b.charCodeAt(hd)?(c=Rb,hd++):(c=Y,0===md&&e(Sb)),c!==Y){for(d=[],Tb.test(b.charAt(hd))?(f=b.charAt(hd),hd++):(f=Y,0===md&&e(Ub));f!==Y;)d.push(f),Tb.test(b.charAt(hd))?(f=b.charAt(hd),hd++):(f=Y,0===md&&e(Ub));d!==Y?(34===b.charCodeAt(hd)?(f=Rb,hd++):(f=Y,0===md&&e(Sb)),f!==Y?(id=a,c=Vb(d),a=c):(hd=a,a=Y)):(hd=a,a=Y)}else hd=a,a=Y;if(a===Y)if(a=hd,39===b.charCodeAt(hd)?(c=Wb,hd++):(c=Y,0===md&&e(Xb)),c!==Y){for(d=[],Yb.test(b.charAt(hd))?(f=b.charAt(hd),hd++):(f=Y,0===md&&e(Zb));f!==Y;)d.push(f),Yb.test(b.charAt(hd))?(f=b.charAt(hd),hd++):(f=Y,0===md&&e(Zb));d!==Y?(39===b.charCodeAt(hd)?(f=Wb,hd++):(f=Y,0===md&&e(Xb)),f!==Y?(id=a,c=Vb(d),a=c):(hd=a,a=Y)):(hd=a,a=Y)}else hd=a,a=Y;return a}function G(){var a,c,d,f,g;return a=hd,c=H(),c!==Y?(d=hd,46===b.charCodeAt(hd)?(f=ab,hd++):(f=Y,0===md&&e(bb)),f!==Y?(g=H(),g===Y&&(g=null),g!==Y?(f=[f,g],d=f):(hd=d,d=Y)):(hd=d,d=Y),d===Y&&(d=null),d!==Y?(id=a,c=$b(c,d),a=c):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,46===b.charCodeAt(hd)?(c=ab,hd++):(c=Y,0===md&&e(bb)),c!==Y?(d=H(),d!==Y?(id=a,c=_b(d),a=c):(hd=a,a=Y)):(hd=a,a=Y)),a}function H(){var a,c,d;if(a=hd,c=[],ac.test(b.charAt(hd))?(d=b.charAt(hd),hd++):(d=Y,0===md&&e(bc)),d!==Y)for(;d!==Y;)c.push(d),ac.test(b.charAt(hd))?(d=b.charAt(hd),hd++):(d=Y,0===md&&e(bc));else c=Y;return c!==Y&&(id=a,c=cc(c)),a=c}function I(){var a;return 42===b.charCodeAt(hd)?(a=dc,hd++):(a=Y,0===md&&e(ec)),a}function J(){var a,b,c;return a=hd,b=P(),b!==Y?(id=hd,c=fc(b),c=c?void 0:Y,c!==Y?(id=a,b=gc(b),a=b):(hd=a,a=Y)):(hd=a,a=Y),a}function K(){var a,c,d;return a=hd,36===b.charCodeAt(hd)?(c=hc,hd++):(c=Y,0===md&&e(ic)),c!==Y?(d=P(),d!==Y?(id=a,c=jc(d),a=c):(hd=a,a=Y)):(hd=a,a=Y),a}function L(){var a,c,d,f;return a=hd,42===b.charCodeAt(hd)?(c=dc,hd++):(c=Y,0===md&&e(ec)),c!==Y&&(id=a,c=kc()),a=c,a===Y&&(a=hd,c=S(),c!==Y?(58===b.charCodeAt(hd)?(d=lc,hd++):(d=Y,0===md&&e(mc)),d!==Y?(42===b.charCodeAt(hd)?(f=dc,hd++):(f=Y,0===md&&e(ec)),f!==Y?(id=a,c=nc(c),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,c=P(),c!==Y&&(id=a,c=oc(c)),a=c)),a}function M(){var a;return b.substr(hd,7)===pc?(a=pc,hd+=7):(a=Y,0===md&&e(qc)),a===Y&&(b.substr(hd,4)===rc?(a=rc,hd+=4):(a=Y,0===md&&e(sc)),a===Y&&(b.substr(hd,22)===Qa?(a=Qa,hd+=22):(a=Y,0===md&&e(Ra)),a===Y&&(b.substr(hd,4)===tc?(a=tc,hd+=4):(a=Y,0===md&&e(uc))))),a}function N(){var a,c;if(a=[],vc.test(b.charAt(hd))?(c=b.charAt(hd),hd++):(c=Y,0===md&&e(wc)),c!==Y)for(;c!==Y;)a.push(c),vc.test(b.charAt(hd))?(c=b.charAt(hd),hd++):(c=Y,0===md&&e(wc));else a=Y;return a}function O(){var a;return a=N(),a===Y&&(a=null),a}function P(){var a,b;return a=hd,b=Q(),b===Y&&(b=R()),b!==Y&&(id=a,b=xc(b)),a=b}function Q(){var a,c,d,f;return a=hd,c=S(),c!==Y?(58===b.charCodeAt(hd)?(d=lc,hd++):(d=Y,0===md&&e(mc)),d!==Y?(f=S(),f!==Y?(id=a,c=yc(c,f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a}function R(){var a,b;return a=hd,b=S(),b!==Y&&(id=a,b=zc(b)),a=b}function S(){return V()}function T(){var a;return Ac.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Bc)),a===Y&&(95===b.charCodeAt(hd)?(a=Cc,hd++):(a=Y,0===md&&e(Dc)),a===Y&&(Ec.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Fc)),a===Y&&(Gc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Hc)),a===Y&&(Ic.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Jc)),a===Y&&(Kc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Lc)),a===Y&&(Mc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Nc)),a===Y&&(Oc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Pc)),a===Y&&(Qc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Rc)),a===Y&&(Sc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Tc)),a===Y&&(Uc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Vc)),a===Y&&(Wc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Xc)),a===Y&&(Yc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Zc)),a===Y&&($c.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(_c))))))))))))))),a}function U(){var a;return a=T(),a===Y&&(45===b.charCodeAt(hd)?(a=Kb,hd++):(a=Y,0===md&&e(Lb)),a===Y&&(46===b.charCodeAt(hd)?(a=ab,hd++):(a=Y,0===md&&e(bb)),a===Y&&(ac.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(bc)),a===Y&&(ad.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(bd)),a===Y&&(cd.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(dd)),a===Y&&(ed.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(fd)))))))),a}function V(){var a,b,c,d;if(a=hd,(b=T())!==Y){for(c=[],d=U();d!==Y;)c.push(d),d=U();c!==Y?(id=a,b=gd(b,c),a=b):(hd=a,a=Y)}else hd=a,a=Y;return a}var W,X=arguments.length>1?arguments[1]:{},Y={},Z={XPath:g},$=g,_=function(a){return{tree:a,nsPrefixes:qd}},aa="/",ba={type:"literal",value:"/",description:'"/"'},ca=function(a){return{type:"/",args:[null,a?a[1]:null]}},da="//",ea={type:"literal",value:"//",description:'"//"'},fa=function(a,b){var c;for(c=0;c=",Fb={type:"literal",value:">=",description:'">="'},Gb=">",Hb={type:"literal",value:">",description:'">"'},Ib="+",Jb={type:"literal",value:"+",description:'"+"'},Kb="-",Lb={type:"literal",value:"-",description:'"-"'},Mb="div",Nb={type:"literal",value:"div",description:'"div"'},Ob="mod",Pb={type:"literal",value:"mod",description:'"mod"'},Qb=function(a){return{type:"*",args:[{type:"number",args:[-1]},a]}},Rb='"',Sb={type:"literal",value:'"',description:'"\\""'},Tb=/^[^"]/,Ub={type:"class",value:'[^"]',description:'[^"]'},Vb=function(a){return{type:"string",args:[a.join("")]}},Wb="'",Xb={type:"literal",value:"'",description:'"\'"'},Yb=/^[^']/,Zb={type:"class",value:"[^']",description:"[^']"},$b=function(a,b){return{type:"number",args:[b?parseFloat(a+"."+b[1]):parseInt(a)]}},_b=function(a){return{type:"number",args:[parseFloat("."+a)]}},ac=/^[0-9]/,bc={type:"class",value:"[0-9]",description:"[0-9]"},cc=function(a){return a.join("")},dc="*",ec={type:"literal",value:"*",description:'"*"'},fc=function(a){var b;if(null===nd.args[0])for(b=0;b1&&c[0].compareDocumentPosition&&c.sort(function(a,b){var c=a.compareDocumentPosition(b);return 2==(2&c)?1:4==(4&c)?-1:0}),c},G=function(a){var b,c=F(a),d=[];for(b=0;b=0;d--)f=a.ownerDocument.namespaces.item(d),I.call(this,g,f.name,f.urn,a);for(c=F(a),d=c.length-1;d>=0;d--)!1!==(e=J(c[d]))&&(1!==e.length?I.call(this,g,e[1],c[d].nodeValue,a):I.call(this,g,"",c[d].nodeValue,a));if(H.call(this,a.parentNode,g),void 0===b&&(I.call(this,g,"xml",s,a),g[0]&&""===g[0].prefix&&""===g[0].namespaceURI&&g.shift()),void 0===b)for(d=0;d=0&&d.sourceIndex>=0?(c.sourceIndexd.sourceIndex&&2):1)+0}if(a===c&&b===d)return e;if(a===c)return h(a,c,b,d,e,16,8,4,2);if(b===d)return h(b,d,a,c,e,8,16,2,4);if(16==(16&e))return 4;if(8==(8&e))return 2;if(0===e){for(f=0;f0},p.prototype.toString=function(){return this.value.length<1?"":(this.sortDocumentOrder(),N(this.value[0]))},p.prototype.toNumber=function(){return new n(this.toString()).toNumber()},p.prototype.toNodeSet=function(){return this.value},p.prototype.toDate=function(){return new n(this.toString()).toDate()},p.prototype.sortDocumentOrder=function(){switch(this.docOrder){case"document-order":break;case"reverse-document-order":this.value.reverse();break;default:this.value.sort(function(a,b){var c=S(a,b);if(4==(4&c))return-1;if(2==(2&c))return 1;throw new Error("NodeSetType.sortDocumentOrder - unexpected compare result: "+c)})}this.docOrder="document-order"},p.prototype.sortReverseDocumentOrder=function(){switch(this.docOrder){case"document-order":this.value.reverse();break;case"reverse-document-order":break;default:this.sortDocumentOrder(),this.value.reverse()}this.docOrder="reverse-document-order"},p.prototype.append=function(a){var b,c=0,d=0;if(!a instanceof p)throw new Error("NodeSetType can be passed into NodeSetType.append method");for(this.sortDocumentOrder(),a.sortDocumentOrder();c0},n.prototype.toString=function(){return this.value},n.prototype.toNumber=function(){var a;return this.isDateString(this.value)?new DateType(this.value).toNumber():null!==(a=this.value.match(/^[ \t\r\n]*(-?[0-9]+(?:[.][0-9]*)?)[ \t\r\n]*$/))?parseFloat(a[1]):(a=this.value.match(/^[ \t\r\n]*(-?[.][0-9]+)[ \t\r\n]*$/),null!==a?parseFloat(a[1]):Number.NaN)},n.prototype.toDate=function(){return new Date(this.value)},n.prototype.isDateString=function(){return!!isNaN(this.value)&&(!isNaN(Date.parse(this.value))&&!!/('|")?[0-9]{4}(-|\/)[0-9]{2}(-|\/)[0-9]{2}('|")?/.test(this.value))},o=function(a){l.call(this,a,"number",["boolean","string","number","date"])},o.prototype=new l,o.constructor=o,o.prototype.toBoolean=function(){return 0!==this.value&&!isNaN(this.value)},o.prototype.toString=function(){return this.value.toString()},o.prototype.toNumber=function(){return this.value},o.prototype.toDate=function(){return new Date(864e5*this.value)},DateType=function(a){l.call(this,a,"date",["date","string","number","boolean"])},DateType.prototype=new l,DateType.constructor=DateType,DateType.prototype.toDate=function(){return new Date(this.value)},DateType.prototype.toString=function(){return new Date(this.value).toUTCString()},DateType.prototype.toNumber=function(){return new Date(this.value).getTime()/864e5},DateType.prototype.toBoolean=function(){return!isNaN(new Date(this.value).getTime())},a=function(b,c){var d;switch(this.code=b,this.code){case a.INVALID_EXPRESSION_ERR:this.name="INVALID_EXPRESSION_ERR";break;case a.TYPE_ERR:this.name="TYPE_ERR";break;default:throw d=new Error("Unsupported XPathException code: "+this.code),d.name="XPathExceptionInternalError",d}this.message=c||""},a.prototype.toString=function(){return'XPathException: "'+this.message+'", code: "'+this.code+'", name: "'+this.name+'"'},a.INVALID_EXPRESSION_ERR=51,a.TYPE_ERR=52,b=function(a){var b,c,d;for(b in a){d=!1;for(c in this.opts)if(b===c){this.opts[b]=a[b],d=!0;break}if(!d)throw new Error("Unsupported option: "+b)}this.opts["unique-ids"][s]="id",this.opts["unique-ids"]["http://www.w3.org/1999/xhtml"]="id"},b.prototype={opts:{"unique-ids":{},"case-sensitive":!1},createExpression:function(b,d){var e,f,g,h,i={};try{e=XPathJS._parser.parse(b)}catch(b){throw f="The expression is not a legal expression.",f+=b instanceof XPathJS._parser.SyntaxError?" (line: "+b.line+", character: "+b.column+")":" ("+b.message+")",new a(a.INVALID_EXPRESSION_ERR,f)}if(e.nsPrefixes.length>0){if("object"!=typeof d||void 0===d.lookupNamespaceURI)throw new a(a.INVALID_EXPRESSION_ERR,"No namespace resolver provided or lookupNamespaceURI function not supported.");for(g=0;g=0;d--)switch(b.args[0]){case"text":3!=c.value[d].nodeType&&4!=c.value[d].nodeType&&c.value.splice(d,1);break;case"comment":8!=c.value[d].nodeType&&c.value.splice(d,1);break;case"processing-instruction":(7!=c.value[d].nodeType||b.args[1].length>0&&h(this,b.args[1][0])!=c.value[d].nodeName)&&c.value.splice(d,1)}break;case"name":switch(g=h(this,b),a){case"attribute":i=2;break;case"namespace":i=13;break;default:i=1}for(d=c.value.length-1;d>=0;d--)c.value[d].nodeType==i?null===g.ns&&null===g.name||(j=M.call(this,c.value[d]),j!==!1&&j.ns===g.ns?null!==g.name&&j.name.toLowerCase()!=g.name.toLowerCase()&&c.value.splice(d,1):c.value.splice(d,1)):c.value.splice(d,1);break;default:throw new Error("NodeTest type not supported in step: "+b.type)}return c},predicate:function(a,b,c){var d,e,f,g,i,j;if(!(d=h(this,b))instanceof p)throw new Error('Expected "node-set", got: '+d.type);switch(a){case"ancestor":case"ancestor-or-self":case"preceding":case"preceding-sibling":d.sortReverseDocumentOrder();break;default:d.sortDocumentOrder()}for(g=0;g=":function(a,b){return Q.call(this,h(this,a),h(this,b),">=",function(a,b){return a>=b})},">":function(a,b){return Q.call(this,h(this,a),h(this,b),">",function(a,b){return a>b})},"+":function(a,b){return new o(h(this,a).toNumber()+h(this,b).toNumber())},"-":function(a,b){return new o(h(this,a).toNumber()-h(this,b).toNumber())},div:function(a,b){return new o(h(this,a).toNumber()/h(this,b).toNumber())},mod:function(a,b){return new o(h(this,a).toNumber()%h(this,b).toNumber())},"*":function(a,b){return new o(h(this,a).toNumber()*h(this,b).toNumber())},string:function(a){return new n(a)},number:function(a){return new o(a)},$:function(a){throw new Error("TODO: Not implemented.16")},name:function(a,b){var c=null;if(null!==a&&!(c=this.nsMap[a]))throw new Error('Namespace prefix "'+a+'" is not mapped to a namespace.');return{ns:c,name:b}}},j={"":{last:{fn:function(){return new o(this.size)},ret:"number"},count:{fn:function(a){return new o(a.toNodeSet().length)},args:[{t:"node-set"}],ret:"number"},id:{fn:function(a){var b,c,d,e=this,f=[],g=[],h=function(a){var b,c=a.split(/[\u0020\u0009\u000D\u000A]+/);for(b=c.length-1;b>=0;b--)0==c[b].length&&c.splice(b,1);return c};if(a instanceof p)for(b=0;b=0;b--)for(c=b-1;c>=0;c--)if(f[b]==f[c]&&b!=c){f.splice(b,1);break}for(b=0;b0&&(a.sortDocumentOrder(),(b=M.call(this,a.value[0]))!==!1&&(c=b.name)),new n(c)},args:[{t:"node-set",r:!1}],ret:"string"},"namespace-uri":{fn:function(a){var b,c="";return 0==arguments.length&&(a=new p([this.node])),a.toNodeSet().length>0&&(a.sortDocumentOrder(),(b=M.call(this,a.value[0]))!==!1&&null!==b.ns&&(c=b.ns)),new n(c)},args:[{t:"node-set",r:!1}],ret:"string"},name:{fn:function(a){var b,c="";return 0==arguments.length&&(a=new p([this.node])),a.toNodeSet().length>0&&(a.sortDocumentOrder(),(b=M.call(this,a.value[0]))!==!1&&(c=b.prefix&&b.prefix.length>0?b.prefix+":"+b.name:b.name)),new n(c)},args:[{t:"node-set",r:!1}],ret:"string"},string:{fn:function(a){return 0==arguments.length&&(a=new p([this.node],"document-order")),new n(a.toString())},args:[{t:"object",r:!1}],ret:"string"},"starts-with":{fn:function(a,b){return new m(a.toString().substr(0,(b=b.toString()).length)==b)},args:[{t:"string"},{t:"string"}],ret:"string"},contains:{fn:function(a,b){return new m(a.toString().indexOf(b=b.toString())!=-1)},args:[{t:"string"},{t:"string"}],ret:"string"},"substring-before":{fn:function(a,b){return a=a.toString(),b=a.indexOf(b.toString()),new n(b==-1?"":a.substr(0,b))},args:[{t:"string"},{t:"string"}],ret:"string"},"substring-after":{fn:function(a,b){var c;return a=a.toString(),b=b.toString(),c=a.indexOf(b),new n(c==-1?"":a.substr(c+b.length))},args:[{t:"string"},{t:"string"}],ret:"string"},substring:{fn:function(a,b,c){return a=a.toString(),b=Math.round(b.toNumber())-1,new n(isNaN(b)?"":2==arguments.length?a.substring(b<0?0:b):a.substring(b<0?0:b,b+Math.round(c.toNumber())))},args:[{t:"string"},{t:"number"},{t:"number",r:!1}],ret:"string"},"string-length":{fn:function(a){return a=0==arguments.length?N(this.node):a.toString(),new o(a.length)},args:[{t:"string",r:!1}],ret:"number"},"normalize-space":{fn:function(a){return a=0==arguments.length?N(this.node):a.toString(),new n(a.replace(/^[\u0020\u0009\u000D\u000A]+/,"").replace(/[\u0020\u0009\u000D\u000A]+$/,"").replace(/[\u0020\u0009\u000D\u000A]+/g," "))},args:[{t:"string",r:!1}],ret:"string"},translate:{fn:function(a,b,c){var d,e,f,g="";for(a=a.toString(),b=b.toString(),c=c.toString(),d=0;d=0&&b0?(b=N(a[0]).trim().split(" "),new o(1==b.length&&""===b[0]?0:b.length)):new o(0)},args:[{t:"node-set"}],ret:"number"},checklist:{fn:function(a,b,c){var d,e,f=0;for(a=a.toNumber(),b=b.toNumber(),d=2;d=a)&&(b<0||f<=b))},args:[{t:"number"},{t:"number"},{t:"object"},{t:"object",r:!1,rep:!0}],ret:"boolean"},"weighted-checklist":{fn:function(a,b,c,d){var e,f=[],g=[],h=0;for(a=a.toNumber(),b=b.toNumber(),e=2;e=a)&&(b<0||h<=b))},args:[{t:"number"},{t:"number"},{t:"object"},{t:"object"},{t:"object",r:!1,rep:!0}],ret:"boolean"},"boolean-from-string":{fn:function(a){return new m("true"===a.toString().toLowerCase()||"1"===String(a))},args:[{t:"string"}],ret:"boolean"},if:{fn:function(a,b,c){return a.toBoolean()?b:c},args:[{t:"object"},{t:"object"},{t:"object"}],ret:"object"},date:{fn:function(a){return new DateType(a.toDate())},args:[{t:"object"}],ret:"string"},"date-time":{fn:function(a){return new DateType(a.toDate())},args:[{t:"object"}],ret:"string"},"decimal-date-time":{fn:function(a){return new DateType(a.toDate())},args:[{t:"object"}],ret:"string"},today:{fn:function(){var a=new Date;return new DateType(new Date(a.getFullYear(),a.getMonth(),a.getDate()))},ret:"string"},now:{fn:function(){return new DateType(new Date)},ret:"string"},regex:{fn:function(a,b){var c,d;return c=a.toString(),d=new RegExp(b),new m(d.test(c))},args:[{t:"object"},{t:"string"}],ret:"boolean"},uuid:{fn:function(){return new n("xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0;return("x"==a?b:3&b|8).toString(16)}))},ret:"string"},int:{fn:function(a){return new o(a.toNumber()>=0?Math.floor(a.toNumber()):-Math.floor(Math.abs(a.toNumber())))},args:[{t:"string"}],ret:"number"},substr:{fn:function(a,b,c){return a=a.toString(),length=a.length,b=Math.round(b.toNumber()),c=c?Math.round(c.toNumber()):length,new n(isNaN(b)?"":a.substring(b<0?length+b:b,c<0?length+c:c))},args:[{t:"string"},{t:"number"},{t:"number",r:!1}],ret:"string"},random:{fn:function(){return new o(Math.random().toFixed(15))},ret:"number"},min:{fn:function(a,b){var c,d,e,f,g;for(c=0;c0?a:b},args:[{t:"object"},{t:"object"}],ret:"string"},"format-date":{fn:function(a,b){var c,a=new DateType(a),d=a.toDate(),e=b.toString(),f=function(a,b){var d=a.toString(),e=b-d.length;for(c=0;c1?a.value.forEach(function(a){c.push(N(a))}):a instanceof p?c=N(a.value[0]).split(";"):a instanceof n&&(c=a.value.split(";")),d=c.map(function(a){return a.trim().split(" ")}),d.every(function(a){return""!==a[0]&&a[0]>=-90&&a[0]<=90&&""!==a[1]&&a[1]>=-180&&a[1]<=180&&(void 0===a[2]||!isNaN(a[2]))&&(void 0===a[3]||!isNaN(a[3])&&a[3]>=0)})){var e,f,g=d.length,h=Math.PI/180;if(b=0,g>2){for(var i=0;ikd&&(kd=hd,ld=[]),ld.push(a))}function f(b,c,d,e){return null!==c&&function(a){var b=1;for(a.sort(function(a,b){return a.descriptionb.description?1:0});b1?f.slice(0,-1).join(", ")+" or "+f[a.length-1]:f[0],d=b?'"'+function(a){function b(a){return a.charCodeAt(0).toString(16).toUpperCase()}return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(a){return"\\x0"+b(a)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(a){return"\\x"+b(a)}).replace(/[\u0100-\u0FFF]/g,function(a){return"\\u0"+b(a)}).replace(/[\u1000-\uFFFF]/g,function(a){return"\\u"+b(a)})}(b)+'"':"end of input","Expected "+c+" but "+d+" found."}(c,d),c,d,e)}function g(){var a,b,c,d;return a=hd,b=O(),b!==Y?(c=s(),c!==Y?(d=O(),d!==Y?(id=a,b=_(c),a=b):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a}function h(){var a;return a=j(),a===Y&&(a=i()),a}function i(){var a,c,d,f,g;return a=p(),a===Y&&(a=hd,47===b.charCodeAt(hd)?(c=aa,hd++):(c=Y,0===md&&e(ba)),c!==Y?(d=hd,f=O(),f!==Y?(g=j(),g!==Y?(f=[f,g],d=f):(hd=d,d=Y)):(hd=d,d=Y),d===Y&&(d=null),d!==Y?(id=a,c=ca(d),a=c):(hd=a,a=Y)):(hd=a,a=Y)),a}function j(){var a,c,d,f,g,h,i,j;if(a=hd,(c=k())!==Y){for(d=[],f=hd,g=O(),g!==Y?(b.substr(hd,2)===da?(h=da,hd+=2):(h=Y,0===md&&e(ea)),h===Y&&(47===b.charCodeAt(hd)?(h=aa,hd++):(h=Y,0===md&&e(ba))),h!==Y?(i=O(),i!==Y?(j=k(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(b.substr(hd,2)===da?(h=da,hd+=2):(h=Y,0===md&&e(ea)),h===Y&&(47===b.charCodeAt(hd)?(h=aa,hd++):(h=Y,0===md&&e(ba))),h!==Y?(i=O(),i!==Y?(j=k(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=fa(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function k(){var a,b,c,d,e,f,g;if(a=hd,(b=l())!==Y)if(O()!==Y)if((c=n())!==Y){for(d=[],e=hd,f=O(),f!==Y?(g=o(),g!==Y?(f=[f,g],e=f):(hd=e,e=Y)):(hd=e,e=Y);e!==Y;)d.push(e),e=hd,f=O(),f!==Y?(g=o(),g!==Y?(f=[f,g],e=f):(hd=e,e=Y)):(hd=e,e=Y);d!==Y?(id=a,b=ga(b,c,d),a=b):(hd=a,a=Y)}else hd=a,a=Y;else hd=a,a=Y;else hd=a,a=Y;return a===Y&&(a=q()),a}function l(){var a,c,d,f;return a=hd,c=m(),c!==Y?(d=O(),d!==Y?(b.substr(hd,2)===ha?(f=ha,hd+=2):(f=Y,0===md&&e(ia)),f!==Y?(id=a,c=ja(c),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,c=r(),c!==Y&&(id=a,c=ka(c)),a=c),a}function m(){var a;return b.substr(hd,16)===la?(a=la,hd+=16):(a=Y,0===md&&e(ma)),a===Y&&(b.substr(hd,8)===na?(a=na,hd+=8):(a=Y,0===md&&e(oa)),a===Y&&(b.substr(hd,9)===pa?(a=pa,hd+=9):(a=Y,0===md&&e(qa)),a===Y&&(b.substr(hd,5)===ra?(a=ra,hd+=5):(a=Y,0===md&&e(sa)),a===Y&&(b.substr(hd,18)===ta?(a=ta,hd+=18):(a=Y,0===md&&e(ua)),a===Y&&(b.substr(hd,10)===va?(a=va,hd+=10):(a=Y,0===md&&e(wa)),a===Y&&(b.substr(hd,17)===xa?(a=xa,hd+=17):(a=Y,0===md&&e(ya)),a===Y&&(b.substr(hd,9)===za?(a=za,hd+=9):(a=Y,0===md&&e(Aa)),a===Y&&(b.substr(hd,9)===Ba?(a=Ba,hd+=9):(a=Y,0===md&&e(Ca)),a===Y&&(b.substr(hd,6)===Da?(a=Da,hd+=6):(a=Y,0===md&&e(Ea)),a===Y&&(b.substr(hd,17)===Fa?(a=Fa,hd+=17):(a=Y,0===md&&e(Ga)),a===Y&&(b.substr(hd,9)===Ha?(a=Ha,hd+=9):(a=Y,0===md&&e(Ia)),a===Y&&(b.substr(hd,4)===Ja?(a=Ja,hd+=4):(a=Y,0===md&&e(Ka)))))))))))))),a}function n(){var a,c,d,f,g,h,i,j;return a=hd,c=M(),c!==Y?(d=O(),d!==Y?(40===b.charCodeAt(hd)?(f=La,hd++):(f=Y,0===md&&e(Ma)),f!==Y?(g=O(),g!==Y?(41===b.charCodeAt(hd)?(h=Na,hd++):(h=Y,0===md&&e(Oa)),h!==Y?(id=a,c=Pa(c),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,b.substr(hd,22)===Qa?(c=Qa,hd+=22):(c=Y,0===md&&e(Ra)),c!==Y?(d=O(),d!==Y?(40===b.charCodeAt(hd)?(f=La,hd++):(f=Y,0===md&&e(Ma)),f!==Y?(g=O(),g!==Y?(h=F(),h!==Y?(i=O(),i!==Y?(41===b.charCodeAt(hd)?(j=Na,hd++):(j=Y,0===md&&e(Oa)),j!==Y?(id=a,c=Sa(c,h),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,c=L(),c!==Y&&(id=a,c=Ta(c)),a=c)),a}function o(){var a,c,d,f,g,h;return a=hd,91===b.charCodeAt(hd)?(c=Ua,hd++):(c=Y,0===md&&e(Va)),c!==Y?(d=O(),d!==Y?(f=s(),f!==Y?(g=O(),g!==Y?(93===b.charCodeAt(hd)?(h=Wa,hd++):(h=Y,0===md&&e(Xa)),h!==Y?(id=a,c=Ya(f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a}function p(){var a,c,d,f;return a=hd,b.substr(hd,2)===da?(c=da,hd+=2):(c=Y,0===md&&e(ea)),c!==Y?(d=O(),d!==Y?(f=j(),f!==Y?(id=a,c=Za(f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a}function q(){var a,c;return a=hd,b.substr(hd,2)===$a?(c=$a,hd+=2):(c=Y,0===md&&e(_a)),c===Y&&(46===b.charCodeAt(hd)?(c=ab,hd++):(c=Y,0===md&&e(bb))),c!==Y&&(id=a,c=cb(c)),a=c}function r(){var a,c;return a=hd,64===b.charCodeAt(hd)?(c=db,hd++):(c=Y,0===md&&e(eb)),c===Y&&(c=null),c!==Y&&(id=a,c=fb(c)),a=c}function s(){var a,b;return a=hd,b=y(),b!==Y&&(id=a,b=Ya(b)),a=b}function t(){var a,c,d,f,g,h;return a=hd,c=K(),c!==Y&&(id=a,c=gb(c)),a=c,a===Y&&(a=hd,40===b.charCodeAt(hd)?(c=La,hd++):(c=Y,0===md&&e(Ma)),c!==Y?(d=O(),d!==Y?(f=s(),f!==Y?(g=O(),g!==Y?(41===b.charCodeAt(hd)?(h=Na,hd++):(h=Y,0===md&&e(Oa)),h!==Y?(id=a,c=Ya(f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,c=F(),c!==Y&&(id=a,c=hb(c)),(a=c)===Y&&(a=hd,c=G(),c!==Y&&(id=a,c=ib(c)),(a=c)===Y&&(a=u())))),a}function u(){var a,c,d,f,g,h,i,j,k,l,m,n;if(a=hd,(c=J())!==Y)if(O()!==Y)if(40===b.charCodeAt(hd)?(d=La,hd++):(d=Y,0===md&&e(Ma)),d!==Y){if(f=hd,(g=O())!==Y)if((h=s())!==Y){for(i=[],j=hd,k=O(),k!==Y?(44===b.charCodeAt(hd)?(l=jb,hd++):(l=Y,0===md&&e(kb)),l!==Y?(m=O(),m!==Y?(n=s(),n!==Y?(k=[k,l,m,n],j=k):(hd=j,j=Y)):(hd=j,j=Y)):(hd=j,j=Y)):(hd=j,j=Y);j!==Y;)i.push(j),j=hd,k=O(),k!==Y?(44===b.charCodeAt(hd)?(l=jb,hd++):(l=Y,0===md&&e(kb)),l!==Y?(m=O(),m!==Y?(n=s(),n!==Y?(k=[k,l,m,n],j=k):(hd=j,j=Y)):(hd=j,j=Y)):(hd=j,j=Y)):(hd=j,j=Y);i!==Y?(g=[g,h,i],f=g):(hd=f,f=Y)}else hd=f,f=Y;else hd=f,f=Y;f===Y&&(f=null),f!==Y?(g=O(),g!==Y?(41===b.charCodeAt(hd)?(h=Na,hd++):(h=Y,0===md&&e(Oa)),h!==Y?(id=a,c=lb(c,f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)}else hd=a,a=Y;else hd=a,a=Y;else hd=a,a=Y;return a}function v(){var a,c,d,f,g,h,i,j;if(a=hd,(c=w())!==Y){for(d=[],f=hd,g=O(),g!==Y?(124===b.charCodeAt(hd)?(h=mb,hd++):(h=Y,0===md&&e(nb)),h!==Y?(i=O(),i!==Y?(j=w(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(124===b.charCodeAt(hd)?(h=mb,hd++):(h=Y,0===md&&e(nb)),h!==Y?(i=O(),i!==Y?(j=w(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function w(){var a,c,d,f,g,i,k;return a=hd,c=x(),c!==Y?(d=hd,f=O(),f!==Y?(b.substr(hd,2)===da?(g=da,hd+=2):(g=Y,0===md&&e(ea)),g===Y&&(47===b.charCodeAt(hd)?(g=aa,hd++):(g=Y,0===md&&e(ba))),g!==Y?(i=O(),i!==Y?(k=j(),k!==Y?(f=[f,g,i,k],d=f):(hd=d,d=Y)):(hd=d,d=Y)):(hd=d,d=Y)):(hd=d,d=Y),d===Y&&(d=null),d!==Y?(id=a,c=pb(c,d),a=c):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,c=h(),c!==Y&&(id=a,c=qb(c)),a=c),a}function x(){var a,b,c,d,e,f;if(a=hd,(b=t())!==Y){for(c=[],d=hd,e=O(),e!==Y?(f=o(),f!==Y?(e=[e,f],d=e):(hd=d,d=Y)):(hd=d,d=Y);d!==Y;)c.push(d),d=hd,e=O(),e!==Y?(f=o(),f!==Y?(e=[e,f],d=e):(hd=d,d=Y)):(hd=d,d=Y);c!==Y?(id=a,b=rb(b,c),a=b):(hd=a,a=Y)}else hd=a,a=Y;return a}function y(){var a,c,d,f,g,h,i,j;if(a=hd,(c=z())!==Y){for(d=[],f=hd,g=O(),g!==Y?(b.substr(hd,2)===sb?(h=sb,hd+=2):(h=Y,0===md&&e(tb)),h!==Y?(i=O(),i!==Y?(j=z(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(b.substr(hd,2)===sb?(h=sb,hd+=2):(h=Y,0===md&&e(tb)),h!==Y?(i=O(),i!==Y?(j=z(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function z(){var a,c,d,f,g,h,i,j;if(a=hd,(c=A())!==Y){for(d=[],f=hd,g=O(),g!==Y?(b.substr(hd,3)===ub?(h=ub,hd+=3):(h=Y,0===md&&e(vb)),h!==Y?(i=O(),i!==Y?(j=A(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(b.substr(hd,3)===ub?(h=ub,hd+=3):(h=Y,0===md&&e(vb)),h!==Y?(i=O(),i!==Y?(j=A(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function A(){var a,c,d,f,g,h,i,j;if(a=hd,(c=B())!==Y){for(d=[],f=hd,g=O(),g!==Y?(61===b.charCodeAt(hd)?(h=wb,hd++):(h=Y,0===md&&e(xb)),h===Y&&(b.substr(hd,2)===yb?(h=yb,hd+=2):(h=Y,0===md&&e(zb))),h!==Y?(i=O(),i!==Y?(j=B(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(61===b.charCodeAt(hd)?(h=wb,hd++):(h=Y,0===md&&e(xb)),h===Y&&(b.substr(hd,2)===yb?(h=yb,hd+=2):(h=Y,0===md&&e(zb))),h!==Y?(i=O(),i!==Y?(j=B(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function B(){var a,c,d,f,g,h,i,j;if(a=hd,(c=C())!==Y){for(d=[],f=hd,g=O(),g!==Y?(b.substr(hd,2)===Ab?(h=Ab,hd+=2):(h=Y,0===md&&e(Bb)),h===Y&&(60===b.charCodeAt(hd)?(h=Cb,hd++):(h=Y,0===md&&e(Db)),h===Y&&(b.substr(hd,2)===Eb?(h=Eb,hd+=2):(h=Y,0===md&&e(Fb)),h===Y&&(62===b.charCodeAt(hd)?(h=Gb,hd++):(h=Y,0===md&&e(Hb))))),h!==Y?(i=O(),i!==Y?(j=C(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(b.substr(hd,2)===Ab?(h=Ab,hd+=2):(h=Y,0===md&&e(Bb)),h===Y&&(60===b.charCodeAt(hd)?(h=Cb,hd++):(h=Y,0===md&&e(Db)),h===Y&&(b.substr(hd,2)===Eb?(h=Eb,hd+=2):(h=Y,0===md&&e(Fb)),h===Y&&(62===b.charCodeAt(hd)?(h=Gb,hd++):(h=Y,0===md&&e(Hb))))),h!==Y?(i=O(),i!==Y?(j=C(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function C(){var a,c,d,f,g,h,i,j;if(a=hd,(c=D())!==Y){for(d=[],f=hd,g=O(),g!==Y?(43===b.charCodeAt(hd)?(h=Ib,hd++):(h=Y,0===md&&e(Jb)),h===Y&&(45===b.charCodeAt(hd)?(h=Kb,hd++):(h=Y,0===md&&e(Lb))),h!==Y?(i=O(),i!==Y?(j=D(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(43===b.charCodeAt(hd)?(h=Ib,hd++):(h=Y,0===md&&e(Jb)),h===Y&&(45===b.charCodeAt(hd)?(h=Kb,hd++):(h=Y,0===md&&e(Lb))),h!==Y?(i=O(),i!==Y?(j=D(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function D(){var a,c,d,f,g,h,i,j;if(a=hd,(c=E())!==Y){for(d=[],f=hd,g=O(),g!==Y?(h=I(),h===Y&&(b.substr(hd,3)===Mb?(h=Mb,hd+=3):(h=Y,0===md&&e(Nb)),h===Y&&(b.substr(hd,3)===Ob?(h=Ob,hd+=3):(h=Y,0===md&&e(Pb)))),h!==Y?(i=O(),i!==Y?(j=E(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);f!==Y;)d.push(f),f=hd,g=O(),g!==Y?(h=I(),h===Y&&(b.substr(hd,3)===Mb?(h=Mb,hd+=3):(h=Y,0===md&&e(Nb)),h===Y&&(b.substr(hd,3)===Ob?(h=Ob,hd+=3):(h=Y,0===md&&e(Pb)))),h!==Y?(i=O(),i!==Y?(j=E(),j!==Y?(g=[g,h,i,j],f=g):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y)):(hd=f,f=Y);d!==Y?(id=a,c=ob(c,d),a=c):(hd=a,a=Y)}else hd=a,a=Y;return a}function E(){var a,c,d,f;return a=hd,c=v(),c!==Y&&(id=a,c=Ya(c)),a=c,a===Y&&(a=hd,45===b.charCodeAt(hd)?(c=Kb,hd++):(c=Y,0===md&&e(Lb)),c!==Y?(d=O(),d!==Y?(f=E(),f!==Y?(id=a,c=Qb(f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y)),a}function F(){var a,c,d,f;if(a=hd,34===b.charCodeAt(hd)?(c=Rb,hd++):(c=Y,0===md&&e(Sb)),c!==Y){for(d=[],Tb.test(b.charAt(hd))?(f=b.charAt(hd),hd++):(f=Y,0===md&&e(Ub));f!==Y;)d.push(f),Tb.test(b.charAt(hd))?(f=b.charAt(hd),hd++):(f=Y,0===md&&e(Ub));d!==Y?(34===b.charCodeAt(hd)?(f=Rb,hd++):(f=Y,0===md&&e(Sb)),f!==Y?(id=a,c=Vb(d),a=c):(hd=a,a=Y)):(hd=a,a=Y)}else hd=a,a=Y;if(a===Y)if(a=hd,39===b.charCodeAt(hd)?(c=Wb,hd++):(c=Y,0===md&&e(Xb)),c!==Y){for(d=[],Yb.test(b.charAt(hd))?(f=b.charAt(hd),hd++):(f=Y,0===md&&e(Zb));f!==Y;)d.push(f),Yb.test(b.charAt(hd))?(f=b.charAt(hd),hd++):(f=Y,0===md&&e(Zb));d!==Y?(39===b.charCodeAt(hd)?(f=Wb,hd++):(f=Y,0===md&&e(Xb)),f!==Y?(id=a,c=Vb(d),a=c):(hd=a,a=Y)):(hd=a,a=Y)}else hd=a,a=Y;return a}function G(){var a,c,d,f,g;return a=hd,c=H(),c!==Y?(d=hd,46===b.charCodeAt(hd)?(f=ab,hd++):(f=Y,0===md&&e(bb)),f!==Y?(g=H(),g===Y&&(g=null),g!==Y?(f=[f,g],d=f):(hd=d,d=Y)):(hd=d,d=Y),d===Y&&(d=null),d!==Y?(id=a,c=$b(c,d),a=c):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,46===b.charCodeAt(hd)?(c=ab,hd++):(c=Y,0===md&&e(bb)),c!==Y?(d=H(),d!==Y?(id=a,c=_b(d),a=c):(hd=a,a=Y)):(hd=a,a=Y)),a}function H(){var a,c,d;if(a=hd,c=[],ac.test(b.charAt(hd))?(d=b.charAt(hd),hd++):(d=Y,0===md&&e(bc)),d!==Y)for(;d!==Y;)c.push(d),ac.test(b.charAt(hd))?(d=b.charAt(hd),hd++):(d=Y,0===md&&e(bc));else c=Y;return c!==Y&&(id=a,c=cc(c)),a=c}function I(){var a;return 42===b.charCodeAt(hd)?(a=dc,hd++):(a=Y,0===md&&e(ec)),a}function J(){var a,b,c;return a=hd,b=P(),b!==Y?(id=hd,c=fc(b),c=c?void 0:Y,c!==Y?(id=a,b=gc(b),a=b):(hd=a,a=Y)):(hd=a,a=Y),a}function K(){var a,c,d;return a=hd,36===b.charCodeAt(hd)?(c=hc,hd++):(c=Y,0===md&&e(ic)),c!==Y?(d=P(),d!==Y?(id=a,c=jc(d),a=c):(hd=a,a=Y)):(hd=a,a=Y),a}function L(){var a,c,d,f;return a=hd,42===b.charCodeAt(hd)?(c=dc,hd++):(c=Y,0===md&&e(ec)),c!==Y&&(id=a,c=kc()),a=c,a===Y&&(a=hd,c=S(),c!==Y?(58===b.charCodeAt(hd)?(d=lc,hd++):(d=Y,0===md&&e(mc)),d!==Y?(42===b.charCodeAt(hd)?(f=dc,hd++):(f=Y,0===md&&e(ec)),f!==Y?(id=a,c=nc(c),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a===Y&&(a=hd,c=P(),c!==Y&&(id=a,c=oc(c)),a=c)),a}function M(){var a;return b.substr(hd,7)===pc?(a=pc,hd+=7):(a=Y,0===md&&e(qc)),a===Y&&(b.substr(hd,4)===rc?(a=rc,hd+=4):(a=Y,0===md&&e(sc)),a===Y&&(b.substr(hd,22)===Qa?(a=Qa,hd+=22):(a=Y,0===md&&e(Ra)),a===Y&&(b.substr(hd,4)===tc?(a=tc,hd+=4):(a=Y,0===md&&e(uc))))),a}function N(){var a,c;if(a=[],vc.test(b.charAt(hd))?(c=b.charAt(hd),hd++):(c=Y,0===md&&e(wc)),c!==Y)for(;c!==Y;)a.push(c),vc.test(b.charAt(hd))?(c=b.charAt(hd),hd++):(c=Y,0===md&&e(wc));else a=Y;return a}function O(){var a;return a=N(),a===Y&&(a=null),a}function P(){var a,b;return a=hd,b=Q(),b===Y&&(b=R()),b!==Y&&(id=a,b=xc(b)),a=b}function Q(){var a,c,d,f;return a=hd,c=S(),c!==Y?(58===b.charCodeAt(hd)?(d=lc,hd++):(d=Y,0===md&&e(mc)),d!==Y?(f=S(),f!==Y?(id=a,c=yc(c,f),a=c):(hd=a,a=Y)):(hd=a,a=Y)):(hd=a,a=Y),a}function R(){var a,b;return a=hd,b=S(),b!==Y&&(id=a,b=zc(b)),a=b}function S(){return V()}function T(){var a;return Ac.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Bc)),a===Y&&(95===b.charCodeAt(hd)?(a=Cc,hd++):(a=Y,0===md&&e(Dc)),a===Y&&(Ec.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Fc)),a===Y&&(Gc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Hc)),a===Y&&(Ic.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Jc)),a===Y&&(Kc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Lc)),a===Y&&(Mc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Nc)),a===Y&&(Oc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Pc)),a===Y&&(Qc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Rc)),a===Y&&(Sc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Tc)),a===Y&&(Uc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Vc)),a===Y&&(Wc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Xc)),a===Y&&(Yc.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(Zc)),a===Y&&($c.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(_c))))))))))))))),a}function U(){var a;return a=T(),a===Y&&(45===b.charCodeAt(hd)?(a=Kb,hd++):(a=Y,0===md&&e(Lb)),a===Y&&(46===b.charCodeAt(hd)?(a=ab,hd++):(a=Y,0===md&&e(bb)),a===Y&&(ac.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(bc)),a===Y&&(ad.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(bd)),a===Y&&(cd.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(dd)),a===Y&&(ed.test(b.charAt(hd))?(a=b.charAt(hd),hd++):(a=Y,0===md&&e(fd)))))))),a}function V(){var a,b,c,d;if(a=hd,(b=T())!==Y){for(c=[],d=U();d!==Y;)c.push(d),d=U();c!==Y?(id=a,b=gd(b,c),a=b):(hd=a,a=Y)}else hd=a,a=Y;return a}var W,X=arguments.length>1?arguments[1]:{},Y={},Z={XPath:g},$=g,_=function(a){return{tree:a,nsPrefixes:qd}},aa="/",ba={type:"literal",value:"/",description:'"/"'},ca=function(a){return{type:"/",args:[null,a?a[1]:null]}},da="//",ea={type:"literal",value:"//",description:'"//"'},fa=function(a,b){var c;for(c=0;c=",Fb={type:"literal",value:">=",description:'">="'},Gb=">",Hb={type:"literal",value:">",description:'">"'},Ib="+",Jb={type:"literal",value:"+",description:'"+"'},Kb="-",Lb={type:"literal",value:"-",description:'"-"'},Mb="div",Nb={type:"literal",value:"div",description:'"div"'},Ob="mod",Pb={type:"literal",value:"mod",description:'"mod"'},Qb=function(a){return{type:"*",args:[{type:"number",args:[-1]},a]}},Rb='"',Sb={type:"literal",value:'"',description:'"\\""'},Tb=/^[^"]/,Ub={type:"class",value:'[^"]',description:'[^"]'},Vb=function(a){return{type:"string",args:[a.join("")]}},Wb="'",Xb={type:"literal",value:"'",description:'"\'"'},Yb=/^[^']/,Zb={type:"class",value:"[^']",description:"[^']"},$b=function(a,b){return{type:"number",args:[b?parseFloat(a+"."+b[1]):parseInt(a)]}},_b=function(a){return{type:"number",args:[parseFloat("."+a)]}},ac=/^[0-9]/,bc={type:"class",value:"[0-9]",description:"[0-9]"},cc=function(a){return a.join("")},dc="*",ec={type:"literal",value:"*",description:'"*"'},fc=function(a){var b;if(null===nd.args[0])for(b=0;b