{"version":3,"file":"phpdocx.cjs","sources":["../../src/element/element.ts","../../src/element/altchunk.ts","../../src/element/bookmark.ts","../../src/element/break.ts","../../src/util/imagedimensions.ts","../../src/util/xml.ts","../../node_modules/@xmldom/xmldom/lib/conventions.js","../../node_modules/@xmldom/xmldom/lib/dom.js","../../node_modules/@xmldom/xmldom/lib/entities.js","../../node_modules/@xmldom/xmldom/lib/sax.js","../../node_modules/@xmldom/xmldom/lib/dom-parser.js","../../node_modules/@xmldom/xmldom/lib/index.js","../../node_modules/xpath/xpath.js","../../src/structure/ooxml.ts","../../src/structure/docx.ts","../../src/structure/docx-default.ts","../../node_modules/jszip/dist/jszip.min.js","../../src/util/zip.ts","../../src/element/rpr.ts","../../src/element/dateTime.ts","../../src/element/image.ts","../../src/element/text.ts","../../src/element/link.ts","../../src/element/paragraph.ts","../../src/element/list.ts","../../src/element/numpr.ts","../../src/element/pagenumber.ts","../../src/element/reference.ts","../../src/element/section.ts","../../src/element/settings.ts","../../src/element/table.ts","../../src/element/tableofcontents.ts","../../src/element/template.ts","../../src/create/create.ts","../../src/create/wordfragment.ts"],"sourcesContent":["import { WordFragment } from \"../create\";\nimport { OptionsParagraph } from \"./paragraph\";\nimport { Relationship } from \"./relationship\";\nimport { OptionsRpr } from \"./rpr\";\n\n/**\n * Create element\n */\nabstract class CreateElement {\n    /**\n     * External defaults\n     */\n    protected externalDefaults: Map<string, string>;\n\n    /**\n     * External relationships\n     */\n    protected externalRelationships: Relationship[];\n\n    /**\n     * File contents\n     */\n    protected fileContents: Map<string, ArrayBuffer>;\n\n    /**\n     * XML content\n     */\n    protected xml: string;\n\n    /**\n     * Constructor\n     */\n    constructor() {\n        this.externalDefaults = new Map<string, string>();\n        this.externalRelationships = [];\n        this.fileContents = new Map<string, ArrayBuffer>();\n        this.xml = \"\";\n    }\n\n    /**\n     * Create element content\n     */\n    abstract create(): string;\n\n    /**\n     * Getter external defaults\n     *\n     * @returns external relationships\n     */\n    public getExternalDefaults(): Map<string, string> {\n        return this.externalDefaults;\n    }\n\n    /**\n     * Getter external relationships\n     *\n     * @returns external relationships\n     */\n    public getExternalRelationships(): Relationship[] {\n        return this.externalRelationships;\n    }\n\n    /**\n     * Getter file contents\n     *\n     * @returns File contents\n     */\n    public getFileContents(): Map<string, ArrayBuffer> {\n        return this.fileContents;\n    }\n\n    /**\n     * Getter xml\n     *\n     * @returns XML\n     */\n    public getXml(): string {\n        return this.xml;\n    }\n\n    /**\n     * Merge rPr styles in paragraph options\n     *\n     * @param options - Style options\n     * @param optionsParagraph - Paragraph options\n     * @returns options\n     */\n    public mergeParagraphRprStyles<T extends OptionsRpr>(\n        options: T,\n        optionsParagraph: OptionsParagraph\n    ): T {\n        // merge rPr styles.\n        // If the paragraph contains a rPr style it must be applied as text style if the element doesn't alreay contains it\n        if (optionsParagraph != null) {\n            options.bold ??= optionsParagraph.bold ?? undefined;\n            options.color ??= optionsParagraph.color ?? undefined;\n            options.font ??= optionsParagraph.font ?? undefined;\n            options.fontSize ??= optionsParagraph.fontSize ?? undefined;\n            options.highlight ??= optionsParagraph.highlight ?? undefined;\n            options.italic ??= optionsParagraph.italic ?? undefined;\n            options.lang ??= optionsParagraph.lang ?? undefined;\n            options.strikethrough ??=\n                optionsParagraph.strikethrough ?? undefined;\n            options.underline ??= optionsParagraph.underline ?? undefined;\n        }\n\n        return options;\n    }\n\n    /**\n     * Keeps external dependencies from the WordFragment\n     *\n     * @param element - WordFragment\n     */\n    protected mergeExternalDependencies(element: WordFragment) {\n        // keep external relationships from the element\n        this.externalRelationships = [\n            ...this.externalRelationships,\n            ...element.getExternalRelationships(),\n        ];\n        // keep defaults from the element\n        this.externalDefaults = new Map([\n            ...this.externalDefaults,\n            ...element.getExternalDefaults(),\n        ]);\n        // keep files from the element\n        this.fileContents = new Map([\n            ...this.fileContents,\n            ...element.getDocxContent().getFileContents(),\n        ]);\n    }\n}\n\nexport { CreateElement };\n","import { CreateElement } from \"./element\";\nimport { Relationship } from \"./relationship\";\n\ninterface OptionsAltchunk {\n    /** File content */\n    file: ArrayBuffer;\n    /** File type */\n    type: \"docx\" | \"html\" | \"mht\" | \"rtf\";\n}\n\n/**\n * Create bookmark\n */\nclass CreateAltchunk extends CreateElement {\n    /**\n     * Id\n     */\n    protected id: string;\n\n    /**\n     * Element options\n     */\n    protected options: OptionsAltchunk;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options altchunk\n     * @param id - Id\n     */\n    constructor(options: OptionsAltchunk, id: string) {\n        super();\n\n        this.options = options;\n        this.id = id;\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        let contents =\n            '<w:altChunk r:id=\"rId' +\n            this.id +\n            '\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\">';\n\n        if (this.options.type == \"docx\") {\n            contents += \"<w:altChunkPr><w:matchSrc/></w:altChunkPr>\";\n        }\n\n        contents += \"</w:altChunk>\";\n\n        // keep altChunk external relationships\n        const newExternalRelationship: Relationship = {\n            id: \"rId\" + this.id,\n            target: this.id + \".\" + this.getRelationshipFileExtension(),\n            targetMode: \"Internal\",\n            type: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\",\n        };\n        this.externalRelationships.push(newExternalRelationship);\n\n        // keep default from the element\n        this.externalDefaults.set(\n            this.getRelationshipFileExtension(),\n            this.getMime()\n        );\n\n        // keep file from the element\n        this.fileContents.set(\n            \"word/\" + this.id + \".\" + this.getRelationshipFileExtension(),\n            this.options.file\n        );\n\n        return contents;\n    }\n\n    /**\n     * Gets mime to be added\n     *\n     * @returns Mime type\n     */\n    public getMime(): string {\n        let mimeType = \"\";\n        switch (this.options.type) {\n            case \"docx\":\n                mimeType =\n                    \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\";\n                break;\n            case \"html\":\n                mimeType = \"application/xhtml+xml\";\n                break;\n            case \"mht\":\n                mimeType = \"message/rfc822\";\n                break;\n            case \"rtf\":\n                mimeType = \"application/rtf\";\n                break;\n        }\n\n        return mimeType;\n    }\n\n    /**\n     * Gets file extension to be added as relationship\n     *\n     * @returns File extension\n     */\n    public getRelationshipFileExtension(): string {\n        let fileExtension = \"\";\n        switch (this.options.type) {\n            case \"docx\":\n                fileExtension = \"zip\";\n                break;\n            case \"html\":\n                fileExtension = \"htm\";\n                break;\n            case \"mht\":\n                fileExtension = \"mht\";\n                break;\n            case \"rtf\":\n                fileExtension = \"rtf\";\n                break;\n        }\n\n        return fileExtension;\n    }\n}\n\nexport { CreateAltchunk, OptionsAltchunk };\n","import { CreateElement } from \"./element\";\n\ninterface OptionsBookmark {}\n\n/**\n * Create bookmark\n */\nclass CreateBookmark extends CreateElement {\n    /**\n     * Id\n     */\n    protected id: number;\n\n    /**\n     * Name\n     */\n    protected name: string;\n\n    /**\n     * Element options\n     */\n    protected options: OptionsBookmark;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options bookmark\n     * @param id - Id\n     * @param name - Name\n     */\n    constructor(options: OptionsBookmark, id: number, name: string) {\n        super();\n\n        this.options = options;\n        this.id = id;\n        this.name = name;\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        const contents =\n            '<w:bookmarkStart w:id=\"' +\n            this.id.toString() +\n            '\" w:name=\"' +\n            this.name +\n            '\"/><w:bookmarkEnd w:id=\"' +\n            this.id +\n            '\"/>';\n\n        return contents;\n    }\n}\n\nexport { CreateBookmark, OptionsBookmark };\n","import { CreateElement } from \"./element\";\n\ntype BreakType = \"line\" | \"page\" | \"column\";\n\ninterface OptionsBreak {}\n\n/**\n * Create break\n */\nclass CreateBreak extends CreateElement {\n    /**\n     * Element options\n     */\n    protected options: OptionsBreak;\n\n    /**\n     * Type\n     */\n    protected type: string;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options break\n     */\n    constructor(options: OptionsBreak, type: BreakType = \"line\") {\n        super();\n\n        this.options = options;\n        this.type = type;\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        const contents = '<w:br w:type=\"' + this.type + '\" />';\n\n        return contents;\n    }\n}\n\nexport { BreakType, CreateBreak, OptionsBreak };\n","/**\n * MIT License\n *\n * Copyright (c) Sindre Sorhus sindresorhus[at]gmail.com (https://sindresorhus.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n// GIF\nconst isGif = (bytes: Uint8Array) =>\n    bytes[0] === 0x47 &&\n    bytes[1] === 0x49 &&\n    bytes[2] === 0x46 &&\n    bytes[3] === 0x38 &&\n    (bytes[4] === 0x37 || bytes[4] === 0x39) &&\n    bytes[5] === 0x61;\n\nfunction gif(bytes: Uint8Array) {\n    if (!isGif(bytes)) {\n        return undefined;\n    }\n\n    const dataView = new DataView(bytes.buffer);\n\n    const width = getUint16(dataView, 6, true);\n    const height = getUint16(dataView, 8, true);\n\n    if (width === undefined || height === undefined) {\n        return undefined;\n    }\n\n    return {\n        width,\n        height,\n    };\n}\n\nconst SOF0 = 0xff_c0;\nconst SOF3 = 0xff_c3;\n\n// JPG/JPEG\nconst isJpeg = (bytes: Uint8Array) =>\n    bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff;\n\nfunction jpeg(bytes: Uint8Array) {\n    if (!isJpeg(bytes)) {\n        return undefined;\n    }\n\n    const dataView = new DataView(bytes.buffer);\n\n    let offset = 2; // Start after the SOI marker.\n\n    while (isValidOffsetToRead(dataView, offset, 2)) {\n        const marker = dataView.getUint16(offset);\n        offset += 2; // Move past the marker.\n\n        if (marker >= SOF0 && marker <= SOF3) {\n            const height = getUint16(dataView, offset + 3, false);\n            const width = getUint16(dataView, offset + 5, false);\n\n            if (height === undefined || width === undefined) {\n                return undefined;\n            }\n\n            return {\n                height,\n                width,\n            };\n        }\n\n        const segmentLength = getUint16(dataView, offset);\n\n        if (segmentLength === undefined) {\n            return undefined; // Unexpected EOF when reading segment length.\n        }\n\n        offset += segmentLength; // Skip over the segment.\n\n        if (offset > dataView.byteLength) {\n            return undefined; // Segment length exceeds byte range.\n        }\n    }\n\n    return undefined;\n}\n\n// PNG\nconst isPng = (bytes: Uint8Array) =>\n    bytes[0] === 0x89 &&\n    bytes[1] === 0x50 &&\n    bytes[2] === 0x4e &&\n    bytes[3] === 0x47 &&\n    bytes[4] === 0x0d &&\n    bytes[5] === 0x0a &&\n    bytes[6] === 0x1a &&\n    bytes[7] === 0x0a;\n\nconst isAppleMinifiedPng = (bytes: Uint8Array) =>\n    bytes[12] === 0x43 &&\n    bytes[13] === 0x67 &&\n    bytes[14] === 0x42 &&\n    bytes[15] === 0x49;\n\nexport default function png(bytes: Uint8Array) {\n    if (!isPng(bytes)) {\n        return undefined;\n    }\n\n    const dataView = new DataView(bytes.buffer);\n    const isAppleMinified = isAppleMinifiedPng(bytes);\n\n    const width = getUint32(dataView, isAppleMinified ? 32 : 16, false);\n    const height = getUint32(dataView, isAppleMinified ? 36 : 20, false);\n\n    if (width === undefined || height === undefined) {\n        return undefined;\n    }\n\n    return {\n        width,\n        height,\n    };\n}\n\n// WEBP\nconst isWebp = (bytes: Uint8Array) =>\n    // RIFF\n    bytes[0] === 0x52 &&\n    bytes[1] === 0x49 &&\n    bytes[2] === 0x46 &&\n    bytes[3] === 0x46 &&\n    // WEBP\n    bytes[8] === 0x57 &&\n    bytes[9] === 0x45 &&\n    bytes[10] === 0x42 &&\n    bytes[11] === 0x50;\n\nconst isVP8Lossy = (bytes: Uint8Array) =>\n    // `VP8 ` (note the space)\n    bytes[12] === 0x56 &&\n    bytes[13] === 0x50 &&\n    bytes[14] === 0x38 &&\n    bytes[15] === 0x20;\n\nconst isVP8Lossless = (bytes: Uint8Array) =>\n    // `VP8L`\n    bytes[12] === 0x56 &&\n    bytes[13] === 0x50 &&\n    bytes[14] === 0x38 &&\n    bytes[15] === 0x4c;\n\nconst isVP8Extended = (bytes: Uint8Array) =>\n    // `VP8X`\n    bytes[12] === 0x56 &&\n    bytes[13] === 0x50 &&\n    bytes[14] === 0x38 &&\n    bytes[15] === 0x58;\n\nfunction readUInt24LE(dataView: DataView, offset: number) {\n    const byte1 = dataView.getUint8(offset);\n    const byte2 = dataView.getUint8(offset + 1);\n    const byte3 = dataView.getUint8(offset + 2);\n\n    // Combine the three bytes into a 24-bit integer.\n    // eslint-disable-next-line no-bitwise\n    return (byte3 << 16) | (byte2 << 8) | byte1;\n}\n\nfunction webp(bytes: Uint8Array) {\n    if (!isWebp(bytes)) {\n        return undefined;\n    }\n\n    const dataView = new DataView(bytes.buffer);\n    const maxSize = 0x3f_ff;\n\n    if (isVP8Lossy(bytes)) {\n        if (!isValidOffsetToRead(dataView, 28, 2)) {\n            return undefined;\n        }\n\n        return {\n            // eslint-disable-next-line no-bitwise\n            width: dataView.getUint16(26, true) & maxSize,\n            // eslint-disable-next-line no-bitwise\n            height: dataView.getUint16(28, true) & maxSize,\n        };\n    }\n\n    if (isVP8Lossless(bytes)) {\n        const bits = getUint32(dataView, 21, true);\n\n        if (bits === undefined) {\n            return undefined;\n        }\n\n        return {\n            // eslint-disable-next-line no-bitwise\n            width: (bits & maxSize) + 1,\n            // eslint-disable-next-line no-bitwise\n            height: ((bits >> 14) & maxSize) + 1,\n        };\n    }\n\n    if (isVP8Extended(bytes)) {\n        if (!isValidOffsetToRead(dataView, 27, 3)) {\n            return undefined;\n        }\n\n        return {\n            width: readUInt24LE(dataView, 24) + 1,\n            height: readUInt24LE(dataView, 27) + 1,\n        };\n    }\n\n    return undefined;\n}\n\nfunction isValidOffsetToRead(\n    dataView: DataView,\n    offset: number,\n    bytesToRead: number\n) {\n    return dataView.byteLength >= offset + bytesToRead;\n}\n\nfunction getUint32(\n    dataView: DataView,\n    offset: number,\n    littleEndian: boolean = false\n) {\n    if (isValidOffsetToRead(dataView, offset, 4)) {\n        return dataView.getUint32(offset, littleEndian);\n    }\n\n    return undefined;\n}\n\nfunction getUint16(\n    dataView: DataView,\n    offset: number,\n    littleEndian: boolean = false\n) {\n    if (isValidOffsetToRead(dataView, offset, 2)) {\n        return dataView.getUint16(offset, littleEndian);\n    }\n\n    return undefined;\n}\n\nfunction getImageDimensions(bytes: ArrayBuffer) {\n    const bytesContent = new Uint8Array(bytes);\n\n    return (\n        png(bytesContent) ??\n        gif(bytesContent) ??\n        jpeg(bytesContent) ??\n        webp(bytesContent)\n    );\n}\n\nfunction getImageMime(bytes: ArrayBuffer) {\n    const bytesContent = new Uint8Array(bytes);\n\n    return isPng(bytesContent)\n        ? \"image/png\"\n        : isGif(bytesContent)\n          ? \"image/gif\"\n          : isJpeg(bytesContent)\n            ? \"image/jpg\"\n            : isWebp(bytesContent)\n              ? \"image/webp\"\n              : null;\n}\n\nexport { getImageDimensions, getImageMime };\n","/** Measuring units */\ntype MeasuringUnit =\n    | \"eighth-point\"\n    | \"emu\"\n    | \"half-point\"\n    | \"pt\"\n    | \"px\"\n    | \"twip\";\n\n/**\n * Applies HTML special chars\n *\n * @param content - Text content\n * @returns HTML after applying special chars\n */\nconst applyHtmlSpecialChars = (content: string): string => {\n    return content\n        .replace(/&/g, \"&amp;\")\n        .replace(/</g, \"&lt;\")\n        .replace(/>/g, \"&gt;\")\n        .replace(/\"/g, \"&quot;\")\n        .replace(/'/g, \"&#039;\");\n};\n\n/**\n * Converts measuring units\n *\n * @param value - Value to be converted\n * @param from - Unit from\n * @param to - Unit to\n * @param round - Round conversion. Default as true\n * @returns Transformed value\n */\nconst convertMeasuringUnit = (\n    value: number,\n    from: MeasuringUnit,\n    to: MeasuringUnit,\n    round: boolean = true\n): number | null => {\n    // transform to pt all units\n    switch (from) {\n        case \"eighth-point\":\n            value /= 8;\n            break;\n        case \"emu\":\n            value /= 12700;\n            break;\n        case \"half-point\":\n            value /= 2;\n            break;\n        case \"px\":\n            value *= 0.75;\n            break;\n        case \"twip\":\n            value /= 20;\n            break;\n        default:\n            // pt and other not supported units\n            break;\n    }\n\n    // transform pt to the new unit\n    let newValue = null;\n    switch (to) {\n        case \"eighth-point\":\n            newValue = value * 8;\n            break;\n        case \"emu\":\n            newValue = value * 12700;\n            break;\n        case \"half-point\":\n            newValue = value * 2;\n            break;\n        case \"px\":\n            newValue = value / 0.75;\n            break;\n        case \"twip\":\n            newValue = value * 20;\n            break;\n        default:\n            // pt and other not supported units\n            newValue = value;\n            break;\n    }\n\n    return round ? Math.round(newValue) : newValue;\n};\n\n/**\n * Escapes a regular expression\n *\n * @param regex - Regular expression\n * @returns Escaped regular expression\n */\nconst escapeRegExp = (regex: string): string => {\n    return regex.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& is the whole matched string\n};\n\n/**\n * Generates a global regular expression to do string replacements\n *\n * @param regex - Regular expression\n * @returns Generated regular expression\n */\nconst generateRegExpForReplacement = (regex: string): RegExp => {\n    return new RegExp(escapeRegExp(regex), \"g\");\n};\n\n/**\n * Gets the namespace value from a namespace\n *\n * @param namespaces - Namespaces\n * @param type - Namespace type\n * @returns Namespace value\n */\nconst getNamespace = (\n    namespaces: Map<string, string>,\n    type: string = \"w\"\n): string => {\n    let namespacesValue =\n        \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\";\n\n    if (namespaces.has(type)) {\n        const newNamespace = namespaces.get(type);\n        if (newNamespace != null) {\n            namespacesValue = newNamespace;\n        }\n    }\n\n    return namespacesValue;\n};\n\n/**\n * Normalizes a color\n *\n * @param content - Color\n * @returns Normalized color\n */\nconst normalizeColor = (content: string): string => {\n    return content.replace(/#/g, \"\");\n};\n\n/**\n * Generates a random number\n *\n * @param min - Minimum number\n * @param max - Maximum number\n * @param exclude - Exclude numbers\n */\nconst generateRandomNumber = (\n    min: number,\n    max: number,\n    exclude: number[]\n): number => {\n    let isNewNumber = false;\n    const generateNewRandomNumber = (min: number, max: number) =>\n        Math.floor(Math.random() * (max - min + 1)) + min;\n    let newRandomNumber = generateNewRandomNumber(min, max);\n\n    // if the random number must be excluded, get a new random number that is not excluded\n    if (exclude.includes(newRandomNumber)) {\n        while (!isNewNumber) {\n            newRandomNumber = generateNewRandomNumber(min, max);\n            if (!exclude.includes(newRandomNumber)) {\n                isNewNumber = true;\n            }\n        }\n    }\n\n    return newRandomNumber;\n};\n\n/**\n * Generates a unique Id\n *\n * @param prefix - Unique Id prefix\n * @returns Unique Id\n */\nconst generateUniqid = (prefix: string): string => {\n    const token1 =\n        Date.now() * 1000 + generateRandomNumber(999999, 99999999, []);\n\n    return prefix + token1.toString(16).replace(/\\./g, \"\").padEnd(14, \"0\");\n};\n\nexport {\n    applyHtmlSpecialChars,\n    convertMeasuringUnit,\n    escapeRegExp,\n    generateRegExpForReplacement,\n    getNamespace,\n    generateRandomNumber,\n    generateUniqid,\n    normalizeColor,\n    MeasuringUnit,\n};\n","'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array<T> | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array<T> | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial<Pick<ArrayConstructor['prototype'], 'find'>>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick<ObjectConstructor, 'freeze'> = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly<T>}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","var conventions = require(\"./conventions\");\n\nvar find = conventions.find;\nvar NAMESPACE = conventions.NAMESPACE;\n\n/**\n * A prerequisite for `[].filter`, to drop elements that are empty\n * @param {string} input\n * @returns {boolean}\n */\nfunction notEmptyString (input) {\n\treturn input !== ''\n}\n/**\n * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * @param {string} input\n * @returns {string[]} (can be empty)\n */\nfunction splitOnASCIIWhitespace(input) {\n\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\n\treturn input ? input.split(/[\\t\\n\\f\\r ]+/).filter(notEmptyString) : []\n}\n\n/**\n * Adds element as a key to current if it is not already present.\n *\n * @param {Record<string, boolean | undefined>} current\n * @param {string} element\n * @returns {Record<string, boolean | undefined>}\n */\nfunction orderedSetReducer (current, element) {\n\tif (!current.hasOwnProperty(element)) {\n\t\tcurrent[element] = true;\n\t}\n\treturn current;\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ordered-set\n * @param {string} input\n * @returns {string[]}\n */\nfunction toOrderedSet(input) {\n\tif (!input) return [];\n\tvar list = splitOnASCIIWhitespace(input);\n\treturn Object.keys(list.reduce(orderedSetReducer, {}))\n}\n\n/**\n * Uses `list.indexOf` to implement something like `Array.prototype.includes`,\n * which we can not rely on being available.\n *\n * @param {any[]} list\n * @returns {function(any): boolean}\n */\nfunction arrayIncludes (list) {\n\treturn function(element) {\n\t\treturn list && list.indexOf(element) !== -1;\n\t}\n}\n\nfunction copy(src,dest){\n\tfor(var p in src){\n\t\tif (Object.prototype.hasOwnProperty.call(src, p)) {\n\t\t\tdest[p] = src[p];\n\t\t}\n\t}\n}\n\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknown Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\n\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE                = NodeType.ELEMENT_NODE                = 1;\nvar ATTRIBUTE_NODE              = NodeType.ATTRIBUTE_NODE              = 2;\nvar TEXT_NODE                   = NodeType.TEXT_NODE                   = 3;\nvar CDATA_SECTION_NODE          = NodeType.CDATA_SECTION_NODE          = 4;\nvar ENTITY_REFERENCE_NODE       = NodeType.ENTITY_REFERENCE_NODE       = 5;\nvar ENTITY_NODE                 = NodeType.ENTITY_NODE                 = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE                = NodeType.COMMENT_NODE                = 8;\nvar DOCUMENT_NODE               = NodeType.DOCUMENT_NODE               = 9;\nvar DOCUMENT_TYPE_NODE          = NodeType.DOCUMENT_TYPE_NODE          = 10;\nvar DOCUMENT_FRAGMENT_NODE      = NodeType.DOCUMENT_FRAGMENT_NODE      = 11;\nvar NOTATION_NODE               = NodeType.NOTATION_NODE               = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR              = ExceptionCode.INDEX_SIZE_ERR              = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR          = ExceptionCode.DOMSTRING_SIZE_ERR          = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR       = ExceptionCode.HIERARCHY_REQUEST_ERR       = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR          = ExceptionCode.WRONG_DOCUMENT_ERR          = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR       = ExceptionCode.INVALID_CHARACTER_ERR       = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR         = ExceptionCode.NO_DATA_ALLOWED_ERR         = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR               = ExceptionCode.NOT_FOUND_ERR               = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR           = ExceptionCode.NOT_SUPPORTED_ERR           = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR         = ExceptionCode.INUSE_ATTRIBUTE_ERR         = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR        \t= ExceptionCode.INVALID_STATE_ERR        \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR               \t= ExceptionCode.SYNTAX_ERR               \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR            \t= ExceptionCode.NAMESPACE_ERR           \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR       \t= ExceptionCode.INVALID_ACCESS_ERR      \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n/**\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0,\n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index  unsigned long\n\t *   Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index.\n\t */\n\titem: function(index) {\n\t\treturn index >= 0 && index < this.length ? this[index] : null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i<this.length;i++){\n\t\t\tserializeToString(this[i],buf,isHTML,nodeFilter);\n\t\t}\n\t\treturn buf.join('');\n\t},\n\t/**\n\t * @private\n\t * @param {function (Node):boolean} predicate\n\t * @returns {Node[]}\n\t */\n\tfilter: function (predicate) {\n\t\treturn Array.prototype.filter.call(this, predicate);\n\t},\n\t/**\n\t * @private\n\t * @param {Node} item\n\t * @returns {number}\n\t */\n\tindexOf: function (item) {\n\t\treturn Array.prototype.indexOf.call(this, item);\n\t},\n};\n\nfunction LiveNodeList(node,refresh){\n\tthis._node = node;\n\tthis._refresh = refresh\n\t_updateLiveList(this);\n}\nfunction _updateLiveList(list){\n\tvar inc = list._node._inc || list._node.ownerDocument._inc;\n\tif (list._inc !== inc) {\n\t\tvar ls = list._refresh(list._node);\n\t\t__set__(list,'length',ls.length);\n\t\tif (!list.$$length || ls.length < list.$$length) {\n\t\t\tfor (var i = ls.length; i in list; i++) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\t\t\tdelete list[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcopy(ls,list);\n\t\tlist._inc = inc;\n\t}\n}\nLiveNodeList.prototype.item = function(i){\n\t_updateLiveList(this);\n\treturn this[i] || null;\n}\n\n_extends(LiveNodeList,NodeList);\n\n/**\n * Objects implementing the NamedNodeMap interface are used\n * to represent collections of nodes that can be accessed by name.\n * Note that NamedNodeMap does not inherit from NodeList;\n * NamedNodeMaps are not maintained in any particular order.\n * Objects contained in an object implementing NamedNodeMap may also be accessed by an ordinal index,\n * but this is simply to allow convenient enumeration of the contents of a NamedNodeMap,\n * and does not imply that the DOM specifies an order to these Nodes.\n * NamedNodeMap objects in the DOM are live.\n * used for attributes or DocumentType entities\n */\nfunction NamedNodeMap() {\n};\n\nfunction _findNodeIndex(list,node){\n\tvar i = list.length;\n\twhile(i--){\n\t\tif(list[i] === node){return i}\n\t}\n}\n\nfunction _addNamedNode(el,list,newAttr,oldAttr){\n\tif(oldAttr){\n\t\tlist[_findNodeIndex(list,oldAttr)] = newAttr;\n\t}else{\n\t\tlist[list.length++] = newAttr;\n\t}\n\tif(el){\n\t\tnewAttr.ownerElement = el;\n\t\tvar doc = el.ownerDocument;\n\t\tif(doc){\n\t\t\toldAttr && _onRemoveAttribute(doc,el,oldAttr);\n\t\t\t_onAddAttribute(doc,el,newAttr);\n\t\t}\n\t}\n}\nfunction _removeNamedNode(el,list,attr){\n\t//console.log('remove attr:'+attr)\n\tvar i = _findNodeIndex(list,attr);\n\tif(i>=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i<lastIndex){\n\t\t\tlist[i] = list[++i]\n\t\t}\n\t\tlist.length = lastIndex;\n\t\tif(el){\n\t\t\tvar doc = el.ownerDocument;\n\t\t\tif(doc){\n\t\t\t\t_onRemoveAttribute(doc,el,attr);\n\t\t\t\tattr.ownerElement = null;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tthrow new DOMException(NOT_FOUND_ERR,new Error(el.tagName+'@'+attr))\n\t}\n}\nNamedNodeMap.prototype = {\n\tlength:0,\n\titem:NodeList.prototype.item,\n\tgetNamedItem: function(key) {\n//\t\tif(key.indexOf(':')>0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\n\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n\n/**\n * The DOMImplementation interface represents an object providing methods\n * which are not dependent on any particular document.\n * Such an object is returned by the `Document.implementation` property.\n *\n * __The individual methods describe the differences compared to the specs.__\n *\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial)\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\n */\nfunction DOMImplementation() {\n}\n\nDOMImplementation.prototype = {\n\t/**\n\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.\n\t * The different implementations fairly diverged in what kind of features were reported.\n\t * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.\n\t *\n\t * @deprecated It is deprecated and modern browsers return true in all cases.\n\t *\n\t * @param {string} feature\n\t * @param {string} [version]\n\t * @returns {boolean} always true\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\n\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\n\t */\n\thasFeature: function(feature, version) {\n\t\t\treturn true;\n\t},\n\t/**\n\t * Creates an XML Document object of the specified type with its document element.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - There is no interface/class `XMLDocument`, it returns a `Document` instance.\n\t * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t * - this implementation is not validating names or qualified names\n\t *   (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string|null} namespaceURI\n\t * @param {string} qualifiedName\n\t * @param {DocumentType=null} doctype\n\t * @returns {Document}\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument  DOM Level 2 Core\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocument: function(namespaceURI,  qualifiedName, doctype){\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype || null;\n\t\tif (doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif (qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t/**\n\t * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.\n\t *\n\t * __This behavior is slightly different from the in the specs__:\n\t * - this implementation is not validating names or qualified names\n\t *   (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string} qualifiedName\n\t * @param {string} [publicId]\n\t * @param {string} [systemId]\n\t * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation\n\t * \t\t\t\t  or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocumentType: function(qualifiedName, publicId, systemId){\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId || '';\n\t\tnode.systemId = systemId || '';\n\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises\n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises\n\t\t_insertBefore(this, newChild,oldChild, assertPreReplacementValidityInDocument);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n  \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n    // Introduced in DOM Level 2:\n    hasAttributes:function(){\n    \treturn this.attributes.length>0;\n    },\n\t/**\n\t * Look up the prefix associated to the given namespace URI, starting from this node.\n\t * **The default namespace declarations are ignored by this method.**\n\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\n\t *\n\t * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._\n\t *\n\t * @param {string | null} namespaceURI\n\t * @returns {string | null}\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\n\t * @see https://github.com/xmldom/xmldom/issues/322\n\t */\n    lookupPrefix:function(namespaceURI){\n    \tvar el = this;\n    \twhile(el){\n    \t\tvar map = el._nsMap;\n    \t\t//console.dir(map)\n    \t\tif(map){\n    \t\t\tfor(var n in map){\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(map, n) && map[n] === namespaceURI) {\n\t\t\t\t\t\t\treturn n;\n\t\t\t\t\t\t}\n    \t\t\t}\n    \t\t}\n    \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n    \t}\n    \treturn null;\n    },\n    // Introduced in DOM Level 3:\n    lookupNamespaceURI:function(prefix){\n    \tvar el = this;\n    \twhile(el){\n    \t\tvar map = el._nsMap;\n    \t\t//console.dir(map)\n    \t\tif(map){\n    \t\t\tif(Object.prototype.hasOwnProperty.call(map, prefix)){\n    \t\t\t\treturn map[prefix] ;\n    \t\t\t}\n    \t\t}\n    \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n    \t}\n    \treturn null;\n    },\n    // Introduced in DOM Level 3:\n    isDefaultNamespace:function(namespaceURI){\n    \tvar prefix = this.lookupPrefix(namespaceURI);\n    \treturn prefix == null;\n    }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '&lt;' ||\n         c == '>' && '&gt;' ||\n         c == '&' && '&amp;' ||\n         c == '\"' && '&quot;' ||\n         '&#'+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n        }while(node=node.nextSibling)\n    }\n}\n\n\n\nfunction Document(){\n\tthis.ownerDocument = this;\n}\n\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\n\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\n\n/**\n * Updates `el.childNodes`, updating the indexed items and it's `length`.\n * Passing `newChild` means it will be appended.\n * Otherwise it's assumed that an item has been removed,\n * and `el.firstNode` and it's `.nextSibling` are used\n * to walk the current list of child nodes.\n *\n * @param {Document} doc\n * @param {Node} el\n * @param {Node} [newChild]\n * @private\n */\nfunction _onUpdateChild (doc, el, newChild) {\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif (newChild) {\n\t\t\tcs[cs.length++] = newChild;\n\t\t} else {\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile (child) {\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild = child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t\tdelete cs[cs.length];\n\t\t}\n\t}\n}\n\n/**\n * Removes the connections between `parentNode` and `child`\n * and any existing `child.previousSibling` or `child.nextSibling`.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n *\n * @param {Node} parentNode\n * @param {Node} child\n * @returns {Node} the child that was removed.\n * @private\n */\nfunction _removeChild (parentNode, child) {\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif (previous) {\n\t\tprevious.nextSibling = next;\n\t} else {\n\t\tparentNode.firstChild = next;\n\t}\n\tif (next) {\n\t\tnext.previousSibling = previous;\n\t} else {\n\t\tparentNode.lastChild = previous;\n\t}\n\tchild.parentNode = null;\n\tchild.previousSibling = null;\n\tchild.nextSibling = null;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode);\n\treturn child;\n}\n\n/**\n * Returns `true` if `node` can be a parent for insertion.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasValidParentNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || node.nodeType === Node.ELEMENT_NODE)\n\t);\n}\n\n/**\n * Returns `true` if `node` can be inserted according to it's `nodeType`.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasInsertableNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(isElementNode(node) ||\n\t\t\tisTextNode(node) ||\n\t\t\tisDocTypeNode(node) ||\n\t\t\tnode.nodeType === Node.DOCUMENT_FRAGMENT_NODE ||\n\t\t\tnode.nodeType === Node.COMMENT_NODE ||\n\t\t\tnode.nodeType === Node.PROCESSING_INSTRUCTION_NODE)\n\t);\n}\n\n/**\n * Returns true if `node` is a DOCTYPE node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isDocTypeNode(node) {\n\treturn node && node.nodeType === Node.DOCUMENT_TYPE_NODE;\n}\n\n/**\n * Returns true if the node is an element\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isElementNode(node) {\n\treturn node && node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Returns true if `node` is a text node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isTextNode(node) {\n\treturn node && node.nodeType === Node.TEXT_NODE;\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Document} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementInsertionPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\tif (find(parentChildNodes, isElementNode) || isDocTypeNode(child)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Node} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementReplacementPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\n\tfunction hasElementChildThatIsNotChild(node) {\n\t\treturn isElementNode(node) && node !== child;\n\t}\n\n\tif (find(parentChildNodes, hasElementChildThatIsNotChild)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * @private\n * Steps 1-5 of the checks before inserting and before replacing a child are the same.\n *\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidity1to5(parent, node, child) {\n\t// 1. If `parent` is not a Document, DocumentFragment, or Element node, then throw a \"HierarchyRequestError\" DOMException.\n\tif (!hasValidParentNodeType(parent)) {\n\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Unexpected parent node type ' + parent.nodeType);\n\t}\n\t// 2. If `node` is a host-including inclusive ancestor of `parent`, then throw a \"HierarchyRequestError\" DOMException.\n\t// not implemented!\n\t// 3. If `child` is non-null and its parent is not `parent`, then throw a \"NotFoundError\" DOMException.\n\tif (child && child.parentNode !== parent) {\n\t\tthrow new DOMException(NOT_FOUND_ERR, 'child not in parent');\n\t}\n\tif (\n\t\t// 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a \"HierarchyRequestError\" DOMException.\n\t\t!hasInsertableNodeType(node) ||\n\t\t// 5. If either `node` is a Text node and `parent` is a document,\n\t\t// the sax parser currently adds top level text nodes, this will be fixed in 0.9.0\n\t\t// || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE)\n\t\t// or `node` is a doctype and `parent` is not a document, then throw a \"HierarchyRequestError\" DOMException.\n\t\t(isDocTypeNode(node) && parent.nodeType !== Node.DOCUMENT_NODE)\n\t) {\n\t\tthrow new DOMException(\n\t\t\tHIERARCHY_REQUEST_ERR,\n\t\t\t'Unexpected node type ' + node.nodeType + ' for parent node type ' + parent.nodeType\n\t\t);\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If node has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child,\n\t\t// `child` is a doctype, or `child` is non-null and a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child, `child` is a doctype,\n\t\t// or `child` is non-null and a doctype is following `child`.\n\t\tif (!isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\t// `parent` has a doctype child,\n\t\tif (find(parentChildNodes, isDocTypeNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// `child` is non-null and an element is preceding `child`,\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t\t// or `child` is null and `parent` has an element child.\n\t\tif (!child && parentElementChild) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can not be appended since element is present');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreReplacementValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If `node` has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (!isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\tfunction hasDoctypeChildThatIsNotChild(node) {\n\t\t\treturn isDocTypeNode(node) && node !== child;\n\t\t}\n\n\t\t// `parent` has a doctype child that is not `child`,\n\t\tif (find(parentChildNodes, hasDoctypeChildThatIsNotChild)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// or an element is preceding `child`.\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction _insertBefore(parent, node, child, _inDocumentAssertion) {\n\t// To ensure pre-insertion validity of a node into a parent before a child, run these steps:\n\tassertPreInsertionValidity1to5(parent, node, child);\n\n\t// If parent is a document, and any of the statements below, switched on the interface node implements,\n\t// are true, then throw a \"HierarchyRequestError\" DOMException.\n\tif (parent.nodeType === Node.DOCUMENT_NODE) {\n\t\t(_inDocumentAssertion || assertPreInsertionValidityInDocument)(parent, node, child);\n\t}\n\n\tvar cp = node.parentNode;\n\tif(cp){\n\t\tcp.removeChild(node);//remove and update\n\t}\n\tif(node.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = node.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn node;\n\t\t}\n\t\tvar newLast = node.lastChild;\n\t}else{\n\t\tnewFirst = newLast = node;\n\t}\n\tvar pre = child ? child.previousSibling : parent.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = child;\n\n\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparent.firstChild = newFirst;\n\t}\n\tif(child == null){\n\t\tparent.lastChild = newLast;\n\t}else{\n\t\tchild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parent;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parent.ownerDocument||parent, parent);\n\t//console.log(parent.lastChild.nextSibling == null)\n\tif (node.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnode.firstChild = node.lastChild = null;\n\t}\n\treturn node;\n}\n\n/**\n * Appends `newChild` to `parentNode`.\n * If `newChild` is already connected to a `parentNode` it is first removed from it.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n * @param {Node} parentNode\n * @param {Node} newChild\n * @returns {Node}\n * @private\n */\nfunction _appendSingleChild (parentNode, newChild) {\n\tif (newChild.parentNode) {\n\t\tnewChild.parentNode.removeChild(newChild);\n\t}\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = parentNode.lastChild;\n\tnewChild.nextSibling = null;\n\tif (newChild.previousSibling) {\n\t\tnewChild.previousSibling.nextSibling = newChild;\n\t} else {\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode, newChild);\n\treturn newChild;\n}\n\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName :  '#document',\n\tnodeType :  DOCUMENT_NODE,\n\t/**\n\t * The DocumentType node of the document.\n\t *\n\t * @readonly\n\t * @type DocumentType\n\t */\n\tdoctype :  null,\n\tdocumentElement :  null,\n\t_inc : 1,\n\n\tinsertBefore :  function(newChild, refChild){//raises\n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\t_insertBefore(this, newChild, refChild);\n\t\tnewChild.ownerDocument = this;\n\t\tif (this.documentElement === null && newChild.nodeType === ELEMENT_NODE) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\n\t\treturn newChild;\n\t},\n\tremoveChild :  function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\treplaceChild: function (newChild, oldChild) {\n\t\t//raises\n\t\t_insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument);\n\t\tnewChild.ownerDocument = this;\n\t\tif (oldChild) {\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t\tif (isElementNode(newChild)) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\n\t/**\n\t * The `getElementsByClassName` method of `Document` interface returns an array-like object\n\t * of all child elements which have **all** of the given class name(s).\n\t *\n\t * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.\n\t *\n\t *\n\t * Warning: This is a live LiveNodeList.\n\t * Changes in the DOM will reflect in the array as the changes occur.\n\t * If an element selected by this array no longer qualifies for the selector,\n\t * it will automatically be removed. Be aware of this for iteration purposes.\n\t *\n\t * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\n\t */\n\tgetElementsByClassName: function(classNames) {\n\t\tvar classNamesSet = toOrderedSet(classNames)\n\t\treturn new LiveNodeList(this, function(base) {\n\t\t\tvar ls = [];\n\t\t\tif (classNamesSet.length > 0) {\n\t\t\t\t_visitNode(base.documentElement, function(node) {\n\t\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tvar nodeClassNames = node.getAttribute('class')\n\t\t\t\t\t\t// can be null if the attribute does not exist\n\t\t\t\t\t\tif (nodeClassNames) {\n\t\t\t\t\t\t\t// before splitting and iterating just compare them for the most common case\n\t\t\t\t\t\t\tvar matches = classNames === nodeClassNames;\n\t\t\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\t\t\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames)\n\t\t\t\t\t\t\t\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(matches) {\n\t\t\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ls;\n\t\t});\n\t},\n\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.localName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.nodeName = node.target = target;\n\t\tnode.nodeValue = node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9 && this.documentElement || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\n\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix || '';\n\tvar uri = node.namespaceURI;\n\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\n\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\n\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\n\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\n\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\n\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\n\t// so serializing empty namespace value like xmlns:ds=\"\" would produce an invalid XML document.\n\tif (!uri) {\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) {\n\t\treturn false;\n\t}\n\n\tvar i = visibleNamespaces.length\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\tif (ns.prefix === prefix) {\n\t\t\treturn ns.namespace !== uri;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n * Well-formed constraint: No < in Attribute Values\n * > The replacement text of any entity referred to directly or indirectly\n * > in an attribute value must not contain a <.\n * @see https://www.w3.org/TR/xml11/#CleanAttrVals\n * @see https://www.w3.org/TR/xml11/#NT-AttValue\n *\n * Literal whitespace other than space that appear in attribute values\n * are serialized as their entity references, so they will be preserved.\n * (In contrast to whitespace literals in the input which are normalized to spaces)\n * @see https://www.w3.org/TR/xml11/#AVNormalize\n * @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes\n */\nfunction addSerializedAttribute(buf, qualifiedName, value) {\n\tbuf.push(' ', qualifiedName, '=\"', value.replace(/[<>&\"\\t\\n\\r]/g, _xmlEncoder), '\"')\n}\n\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif (!visibleNamespaces) {\n\t\tvisibleNamespaces = [];\n\t}\n\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\n\t\tisHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML\n\n\t\tvar prefixedNodeName = nodeName\n\t\tif (!isHTML && !node.prefix && node.namespaceURI) {\n\t\t\tvar defaultNS\n\t\t\t// lookup current default ns from `xmlns` attribute\n\t\t\tfor (var ai = 0; ai < attrs.length; ai++) {\n\t\t\t\tif (attrs.item(ai).name === 'xmlns') {\n\t\t\t\t\tdefaultNS = attrs.item(ai).value\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!defaultNS) {\n\t\t\t\t// lookup current default ns in visibleNamespaces\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.prefix === '' && namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tdefaultNS = namespace.namespace\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (defaultNS !== node.namespaceURI) {\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tif (namespace.prefix) {\n\t\t\t\t\t\t\tprefixedNodeName = namespace.prefix + ':' + nodeName\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbuf.push('<', prefixedNodeName);\n\n\t\tfor(var i=0;i<len;i++){\n\t\t\t// add namespaces for attributes\n\t\t\tvar attr = attrs.item(i);\n\t\t\tif (attr.prefix == 'xmlns') {\n\t\t\t\tvisibleNamespaces.push({ prefix: attr.localName, namespace: attr.value });\n\t\t\t}else if(attr.nodeName == 'xmlns'){\n\t\t\t\tvisibleNamespaces.push({ prefix: '', namespace: attr.value });\n\t\t\t}\n\t\t}\n\n\t\tfor(var i=0;i<len;i++){\n\t\t\tvar attr = attrs.item(i);\n\t\t\tif (needNamespaceDefine(attr,isHTML, visibleNamespaces)) {\n\t\t\t\tvar prefix = attr.prefix||'';\n\t\t\t\tvar uri = attr.namespaceURI;\n\t\t\t\taddSerializedAttribute(buf, prefix ? 'xmlns:' + prefix : \"xmlns\", uri);\n\t\t\t\tvisibleNamespaces.push({ prefix: prefix, namespace:uri });\n\t\t\t}\n\t\t\tserializeToString(attr,buf,isHTML,nodeFilter,visibleNamespaces);\n\t\t}\n\n\t\t// add namespace for current node\n\t\tif (nodeName === prefixedNodeName && needNamespaceDefine(node, isHTML, visibleNamespaces)) {\n\t\t\tvar prefix = node.prefix||'';\n\t\t\tvar uri = node.namespaceURI;\n\t\t\taddSerializedAttribute(buf, prefix ? 'xmlns:' + prefix : \"xmlns\", uri);\n\t\t\tvisibleNamespaces.push({ prefix: prefix, namespace:uri });\n\t\t}\n\n\t\tif(child || isHTML && !/^(?:meta|link|img|br|hr|input)$/i.test(nodeName)){\n\t\t\tbuf.push('>');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('</',prefixedNodeName,'>');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn addSerializedAttribute(buf, node.name, node.value);\n\tcase TEXT_NODE:\n\t\t/**\n\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\n\t\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\n\t\t * `&amp;` and `&lt;` respectively.\n\t\t * The right angle bracket (>) may be represented using the string \" &gt; \", and must, for compatibility,\n\t\t * be escaped using either `&gt;` or a character reference when it appears in the string `]]>` in content,\n\t\t * when that string is not marking the end of a CDATA section.\n\t\t *\n\t\t * In the content of elements, character data is any string of characters\n\t\t * which does not contain the start-delimiter of any markup\n\t\t * and does not include the CDATA-section-close delimiter, `]]>`.\n\t\t *\n\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t * @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node\n\t\t */\n\t\treturn buf.push(node.data\n\t\t\t.replace(/[<&>]/g,_xmlEncoder)\n\t\t);\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '<![CDATA[',node.data,']]>');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"<!--\",node.data,\"-->\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('<!DOCTYPE ',node.name);\n\t\tif(pubid){\n\t\t\tbuf.push(' PUBLIC ', pubid);\n\t\t\tif (sysid && sysid!='.') {\n\t\t\t\tbuf.push(' ', sysid);\n\t\t\t}\n\t\t\tbuf.push('>');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"<?\",node.target,\" \",node.data,\"?>\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i<len;i++){\n\t\t\t//node2.setAttributeNodeNS(importNode(doc,attrs.item(i),deep));\n\t\t//}\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tbreak;\n\tcase ATTRIBUTE_NODE:\n\t\tdeep = true;\n\t\tbreak;\n\t//case ENTITY_REFERENCE_NODE:\n\t//case PROCESSING_INSTRUCTION_NODE:\n\t////case TEXT_NODE:\n\t//case CDATA_SECTION_NODE:\n\t//case COMMENT_NODE:\n\t//\tdeep = false;\n\t//\tbreak;\n\t//case DOCUMENT_NODE:\n\t//case DOCUMENT_TYPE_NODE:\n\t//cannot be imported.\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE：\n\t//can not hit in level3\n\t//default:throw e;\n\t}\n\tif(!node2){\n\t\tnode2 = node.cloneNode(false);//false\n\t}\n\tnode2.ownerDocument = doc;\n\tnode2.parentNode = null;\n\tif(deep){\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tnode2.appendChild(importNode(doc,child,deep));\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t}\n\treturn node2;\n}\n//\n//var _relationMap = {firstChild:1,lastChild:1,previousSibling:1,nextSibling:1,\n//\t\t\t\t\tattributes:1,childNodes:1,parentNode:1,documentElement:1,doctype,};\nfunction cloneNode(doc,node,deep){\n\tvar node2 = new node.constructor();\n\tfor (var n in node) {\n\t\tif (Object.prototype.hasOwnProperty.call(node, n)) {\n\t\t\tvar v = node[n];\n\t\t\tif (typeof v != \"object\") {\n\t\t\t\tif (v != node2[n]) {\n\t\t\t\t\tnode2[n] = v;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif(node.childNodes){\n\t\tnode2.childNodes = new NodeList();\n\t}\n\tnode2.ownerDocument = doc;\n\tswitch (node2.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tvar attrs\t= node.attributes;\n\t\tvar attrs2\t= node2.attributes = new NamedNodeMap();\n\t\tvar len = attrs.length\n\t\tattrs2._ownerElement = node2;\n\t\tfor(var i=0;i<len;i++){\n\t\t\tnode2.setAttributeNode(cloneNode(doc,attrs.item(i),true));\n\t\t}\n\t\tbreak;;\n\tcase ATTRIBUTE_NODE:\n\t\tdeep = true;\n\t}\n\tif(deep){\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tnode2.appendChild(cloneNode(doc,child,deep));\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t}\n\treturn node2;\n}\n\nfunction __set__(object,key,value){\n\tobject[key] = value\n}\n//do dynamic\ntry{\n\tif(Object.defineProperty){\n\t\tObject.defineProperty(LiveNodeList.prototype,'length',{\n\t\t\tget:function(){\n\t\t\t\t_updateLiveList(this);\n\t\t\t\treturn this.$$length;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(Node.prototype,'textContent',{\n\t\t\tget:function(){\n\t\t\t\treturn getTextContent(this);\n\t\t\t},\n\n\t\t\tset:function(data){\n\t\t\t\tswitch(this.nodeType){\n\t\t\t\tcase ELEMENT_NODE:\n\t\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\t\t\twhile(this.firstChild){\n\t\t\t\t\t\tthis.removeChild(this.firstChild);\n\t\t\t\t\t}\n\t\t\t\t\tif(data || String(data)){\n\t\t\t\t\t\tthis.appendChild(this.ownerDocument.createTextNode(data));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.data = data;\n\t\t\t\t\tthis.value = data;\n\t\t\t\t\tthis.nodeValue = data;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tfunction getTextContent(node){\n\t\t\tswitch(node.nodeType){\n\t\t\tcase ELEMENT_NODE:\n\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\t\tvar buf = [];\n\t\t\t\tnode = node.firstChild;\n\t\t\t\twhile(node){\n\t\t\t\t\tif(node.nodeType!==7 && node.nodeType !==8){\n\t\t\t\t\t\tbuf.push(getTextContent(node));\n\t\t\t\t\t}\n\t\t\t\t\tnode = node.nextSibling;\n\t\t\t\t}\n\t\t\t\treturn buf.join('');\n\t\t\tdefault:\n\t\t\t\treturn node.nodeValue;\n\t\t\t}\n\t\t}\n\n\t\t__set__ = function(object,key,value){\n\t\t\t//console.log(value)\n\t\t\tobject['$$'+key] = value\n\t\t}\n\t}\n}catch(e){//ie8\n}\n\n//if(typeof require == 'function'){\n\texports.DocumentType = DocumentType;\n\texports.DOMException = DOMException;\n\texports.DOMImplementation = DOMImplementation;\n\texports.Element = Element;\n\texports.Node = Node;\n\texports.NodeList = NodeList;\n\texports.XMLSerializer = XMLSerializer;\n//}\n","'use strict';\n\nvar freeze = require('./conventions').freeze;\n\n/**\n * The entities that are predefined in every XML document.\n *\n * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1\n * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML Wikipedia\n */\nexports.XML_ENTITIES = freeze({\n\tamp: '&',\n\tapos: \"'\",\n\tgt: '>',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4]   \tNameStartChar\t   ::=   \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a]   \tNameChar\t   ::=   \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5]   \tName\t   ::=   \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el<el />\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t    \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t    \t\t\tdoc.appendChild(text);\n\t    \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t        \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t        \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t        \t\tend = tagStart+1+tagName.length;\n\t        \t}else if(tagName.match(/\\s</)){\n\t        \t\ttagName = tagName.replace(/[\\s<].*/,'');\n\t        \t\terrorHandler.error(\"end tag name: \"+tagName+' maybe not complete');\n\t        \t\tend = tagStart+1+tagName.length;\n\t\t\t\t}\n\t\t\t\tvar localNSMap = config.localNSMap;\n\t\t\t\tvar endMatch = config.tagName == tagName;\n\t\t\t\tvar endIgnoreCaseMach = endMatch || config.tagName&&config.tagName.toLowerCase() == tagName.toLowerCase()\n\t\t        if(endIgnoreCaseMach){\n\t\t        \tdomBuilder.endElement(config.uri,config.localName,tagName);\n\t\t\t\t\tif(localNSMap){\n\t\t\t\t\t\tfor (var prefix in localNSMap) {\n\t\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!endMatch){\n\t\t            \terrorHandler.fatalError(\"end tag name: \"+tagName+' is not match the current start tagName:'+config.tagName ); // No known test case\n\t\t\t\t\t}\n\t\t        }else{\n\t\t        \tparseStack.push(config)\n\t\t        }\n\n\t\t\t\tend++;\n\t\t\t\tbreak;\n\t\t\t\t// end elment\n\t\t\tcase '?':// <?...?>\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// <!doctype,<![CDATA,<!--\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseDCC(source,tagStart,domBuilder,errorHandler);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tvar el = new ElementAttributes();\n\t\t\t\tvar currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\t\t\t\t//elStartEnd\n\t\t\t\tvar end = parseElementStartPart(source,tagStart,el,currentNSMap,entityReplacer,errorHandler);\n\t\t\t\tvar len = el.length;\n\n\n\t\t\t\tif(!el.closed && fixSelfClosed(source,end,el.tagName,closeMap)){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tif(!entityMap.nbsp){\n\t\t\t\t\t\terrorHandler.warning('unclosed xml attribute');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(locator && len){\n\t\t\t\t\tvar locator2 = copyLocator(locator,{});\n\t\t\t\t\t//try{//attribute position fixed\n\t\t\t\t\tfor(var i = 0;i<len;i++){\n\t\t\t\t\t\tvar a = el[i];\n\t\t\t\t\t\tposition(a.offset);\n\t\t\t\t\t\ta.locator = copyLocator(locator,{});\n\t\t\t\t\t}\n\t\t\t\t\tdomBuilder.locator = locator2\n\t\t\t\t\tif(appendElement(el,domBuilder,currentNSMap)){\n\t\t\t\t\t\tparseStack.push(el)\n\t\t\t\t\t}\n\t\t\t\t\tdomBuilder.locator = locator;\n\t\t\t\t}else{\n\t\t\t\t\tif(appendElement(el,domBuilder,currentNSMap)){\n\t\t\t\t\t\tparseStack.push(el)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (NAMESPACE.isHTML(el.uri) && !el.closed) {\n\t\t\t\t\tend = parseHtmlSpecialContent(source,end,el.tagName,entityReplacer,domBuilder)\n\t\t\t\t} else {\n\t\t\t\t\tend++;\n\t\t\t\t}\n\t\t\t}\n\t\t}catch(e){\n\t\t\tif (e instanceof ParseError) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t\terrorHandler.error('element parse error: '+e)\n\t\t\tend = -1;\n\t\t}\n\t\tif(end>start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退，有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed  = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName =  el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart =  source.indexOf('</'+tagName+'>',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos =  source.lastIndexOf('</'+tagName+'>')\n\t\tif(pos<elStartEnd){//忘记闭合\n\t\t\tpos = source.lastIndexOf('</'+tagName)\n\t\t}\n\t\tcloseMap[tagName] =pos\n\t}\n\treturn pos<elStartEnd;\n\t//}\n}\n\nfunction _copy (source, target) {\n\tfor (var n in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, n)) {\n\t\t\ttarget[n] = source[n];\n\t\t}\n\t}\n}\n\nfunction parseDCC(source,start,domBuilder,errorHandler){//sure start with '<!'\n\tvar next= source.charAt(start+2)\n\tswitch(next){\n\tcase '-':\n\t\tif(source.charAt(start + 3) === '-'){\n\t\t\tvar end = source.indexOf('-->',start+4);\n\t\t\t//append comment source.substring(4,end)//<!--\n\t\t\tif(end>start){\n\t\t\t\tdomBuilder.comment(source,start+4,end-start-4);\n\t\t\t\treturn end+3;\n\t\t\t}else{\n\t\t\t\terrorHandler.error(\"Unclosed comment\");\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}else{\n\t\t\t//error\n\t\t\treturn -1;\n\t\t}\n\tdefault:\n\t\tif(source.substr(start+3,6) == 'CDATA['){\n\t\t\tvar end = source.indexOf(']]>',start+9);\n\t\t\tdomBuilder.startCDATA();\n\t\t\tdomBuilder.characters(source,start+9,end-start-9);\n\t\t\tdomBuilder.endCDATA()\n\t\t\treturn end+3;\n\t\t}\n\t\t//<!DOCTYPE\n\t\t//startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)\n\t\tvar matchs = split(source,start);\n\t\tvar len = matchs.length;\n\t\tif(len>1 && /!doctype/i.test(matchs[0][0])){\n\t\t\tvar name = matchs[1][0];\n\t\t\tvar pubid = false;\n\t\t\tvar sysid = false;\n\t\t\tif(len>3){\n\t\t\t\tif(/^public$/i.test(matchs[2][0])){\n\t\t\t\t\tpubid = matchs[3][0];\n\t\t\t\t\tsysid = len>4 && matchs[4][0];\n\t\t\t\t}else if(/^system$/i.test(matchs[2][0])){\n\t\t\t\t\tsysid = matchs[3][0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar lastMatch = matchs[len-1]\n\t\t\tdomBuilder.startDTD(name, pubid, sysid);\n\t\t\tdomBuilder.endDTD();\n\n\t\t\treturn lastMatch.index+lastMatch[0].length\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n\nfunction parseInstruction(source,start,domBuilder){\n\tvar end = source.indexOf('?>',start);\n\tif(end){\n\t\tvar match = source.substring(start,end).match(/^<\\?(\\S*)\\s*([\\s\\S]*?)\\s*$/);\n\t\tif(match){\n\t\t\tvar len = match[0].length;\n\t\t\tdomBuilder.processingInstruction(match[1], match[2]) ;\n\t\t\treturn end+2;\n\t\t}else{//error\n\t\t\treturn -1;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction ElementAttributes(){\n\tthis.attributeNames = {}\n}\nElementAttributes.prototype = {\n\tsetTagName:function(tagName){\n\t\tif(!tagNamePattern.test(tagName)){\n\t\t\tthrow new Error('invalid tagName:'+tagName)\n\t\t}\n\t\tthis.tagName = tagName\n\t},\n\taddValue:function(qName, value, offset) {\n\t\tif(!tagNamePattern.test(qName)){\n\t\t\tthrow new Error('invalid attribute:'+qName)\n\t\t}\n\t\tthis.attributeNames[qName] = this.length;\n\t\tthis[this.length++] = {qName:qName,value:value,offset:offset}\n\t},\n\tlength:0,\n\tgetLocalName:function(i){return this[i].localName},\n\tgetLocator:function(i){return this[i].locator},\n\tgetQName:function(i){return this[i].qName},\n\tgetURI:function(i){return this[i].uri},\n\tgetValue:function(i){return this[i].value}\n//\t,getIndex:function(uri, localName)){\n//\t\tif(localName){\n//\n//\t\t}else{\n//\t\t\tvar qName = uri\n//\t\t}\n//\t},\n//\tgetValue:function(){return this.getValue(this.getIndex.apply(this,arguments))},\n//\tgetType:function(uri,localName){}\n//\tgetType:function(i){},\n}\n\n\n\nfunction split(source,start){\n\tvar match;\n\tvar buf = [];\n\tvar reg = /'[^']+'|\"[^\"]+\"|[^\\s<>\\/=]+=?|(\\/?\\s*>|<)/g;\n\treg.lastIndex = start;\n\treg.exec(source);//skip <\n\twhile(match = reg.exec(source)){\n\t\tbuf.push(match);\n\t\tif(match[1])return buf;\n\t}\n}\n\nexports.XMLReader = XMLReader;\nexports.ParseError = ParseError;\n","var conventions = require(\"./conventions\");\nvar dom = require('./dom')\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar NAMESPACE = conventions.NAMESPACE;\n\nvar ParseError = sax.ParseError;\nvar XMLReader = sax.XMLReader;\n\n/**\n * Normalizes line ending according to https://www.w3.org/TR/xml11/#sec-line-ends:\n *\n * > XML parsed entities are often stored in computer files which,\n * > for editing convenience, are organized into lines.\n * > These lines are typically separated by some combination\n * > of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).\n * >\n * > To simplify the tasks of applications, the XML processor must behave\n * > as if it normalized all line breaks in external parsed entities (including the document entity)\n * > on input, before parsing, by translating all of the following to a single #xA character:\n * >\n * > 1. the two-character sequence #xD #xA\n * > 2. the two-character sequence #xD #x85\n * > 3. the single character #x85\n * > 4. the single character #x2028\n * > 5. any #xD character that is not immediately followed by #xA or #x85.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizeLineEndings(input) {\n\treturn input\n\t\t.replace(/\\r[\\n\\u0085]/g, '\\n')\n\t\t.replace(/[\\r\\u0085\\u2028]/g, '\\n')\n}\n\n/**\n * @typedef Locator\n * @property {number} [columnNumber]\n * @property {number} [lineNumber]\n */\n\n/**\n * @typedef DOMParserOptions\n * @property {DOMHandler} [domBuilder]\n * @property {Function} [errorHandler]\n * @property {(string) => string} [normalizeLineEndings] used to replace line endings before parsing\n * \t\t\t\t\t\tdefaults to `normalizeLineEndings`\n * @property {Locator} [locator]\n * @property {Record<string, string>} [xmlns]\n *\n * @see normalizeLineEndings\n */\n\n/**\n * The DOMParser interface provides the ability to parse XML or HTML source code\n * from a string into a DOM `Document`.\n *\n * _xmldom is different from the spec in that it allows an `options` parameter,\n * to override the default behavior._\n *\n * @param {DOMParserOptions} [options]\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization\n */\nfunction DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax =  new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n  \tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap[''] = NAMESPACE.HTML;\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\tvar normalize = options.normalizeLineEndings || normalizeLineEndings;\n\tif (source && typeof source === 'string') {\n\t\tsax.parse(\n\t\t\tnormalize(source),\n\t\t\tdefaultNSMap,\n\t\t\tentityMap\n\t\t)\n\t} else {\n\t\tsax.errorHandler.error('invalid doc source')\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n    this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n    \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n    \tif (this.locator) {\n        \tthis.doc.documentURI = this.locator.systemId;\n    \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t    var el = doc.createElementNS(namespaceURI, qName||localName);\n\t    var len = attrs.length;\n\t    appendElement(this, el);\n\t    this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t    for (var i = 0 ; i < len; i++) {\n\t        var namespaceURI = attrs.getURI(i);\n\t        var value = attrs.getValue(i);\n\t        var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t    }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t    var ins = this.doc.createProcessingInstruction(target, data);\n\t    this.locator && position(this.locator,ins)\n\t    appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t    if(this.locator = locator){// && !('lineNumber' in locator)){\n\t    \tlocator.lineNumber = 0;\n\t    }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t    var comm = this.doc.createComment(chars);\n\t    this.locator && position(this.locator,comm)\n\t    appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t    //used in characters() methods\n\t    this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t    this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t    if (impl && impl.createDocumentType) {\n\t        var dt = impl.createDocumentType(name, publicId, systemId);\n\t        this.locator && position(this.locator,dt)\n\t        appendElement(this, dt);\n\t\t\t\t\tthis.doc.doctype = dt;\n\t    }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n *  #comment(chars, start, length)\n *  #startCDATA()\n *  #endCDATA()\n *  #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n *  #endDTD()\n *  #startEntity(name)\n *  #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n *  #elementDecl(name, model)\n *  #externalEntityDecl(name, publicId, systemId)\n *  #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n *  #resolveEntity(String name,String publicId,String baseURI,String systemId)\n *  #resolveEntity(publicId, systemId)\n *  #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n *  #notationDecl(name, publicId, systemId) {};\n *  #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n    if (!hander.currentElement) {\n        hander.doc.appendChild(node);\n    } else {\n        hander.currentElement.appendChild(node);\n    }\n}//appendChild and setAttributeNS are preformance key\n\nexports.__DOMHandler = DOMHandler;\nexports.normalizeLineEndings = normalizeLineEndings;\nexports.DOMParser = DOMParser;\n","var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\n","/*\r\n * xpath.js\r\n *\r\n * An XPath 1.0 library for JavaScript.\r\n *\r\n * Cameron McCormack <cam (at) mcc.id.au>\r\n *\r\n * This work is licensed under the MIT License.\r\n *\r\n * Revision 20: April 26, 2011\r\n *   Fixed a typo resulting in FIRST_ORDERED_NODE_TYPE results being wrong,\r\n *   thanks to <shi_a009 (at) hotmail.com>.\r\n *\r\n * Revision 19: November 29, 2005\r\n *   Nodesets now store their nodes in a height balanced tree, increasing\r\n *   performance for the common case of selecting nodes in document order,\r\n *   thanks to Sébastien Cramatte <contact (at) zeninteractif.com>.\r\n *   AVL tree code adapted from Raimund Neumann <rnova (at) gmx.net>.\r\n *\r\n * Revision 18: October 27, 2005\r\n *   DOM 3 XPath support.  Caveats:\r\n *     - namespace prefixes aren't resolved in XPathEvaluator.createExpression,\r\n *       but in XPathExpression.evaluate.\r\n *     - XPathResult.invalidIteratorState is not implemented.\r\n *\r\n * Revision 17: October 25, 2005\r\n *   Some core XPath function fixes and a patch to avoid crashing certain\r\n *   versions of MSXML in PathExpr.prototype.getOwnerElement, thanks to\r\n *   Sébastien Cramatte <contact (at) zeninteractif.com>.\r\n *\r\n * Revision 16: September 22, 2005\r\n *   Workarounds for some IE 5.5 deficiencies.\r\n *   Fixed problem with prefix node tests on attribute nodes.\r\n *\r\n * Revision 15: May 21, 2005\r\n *   Fixed problem with QName node tests on elements with an xmlns=\"...\".\r\n *\r\n * Revision 14: May 19, 2005\r\n *   Fixed QName node tests on attribute node regression.\r\n *\r\n * Revision 13: May 3, 2005\r\n *   Node tests are case insensitive now if working in an HTML DOM.\r\n *\r\n * Revision 12: April 26, 2005\r\n *   Updated licence.  Slight code changes to enable use of Dean\r\n *   Edwards' script compression, http://dean.edwards.name/packer/ .\r\n *\r\n * Revision 11: April 23, 2005\r\n *   Fixed bug with 'and' and 'or' operators, fix thanks to\r\n *   Sandy McArthur <sandy (at) mcarthur.org>.\r\n *\r\n * Revision 10: April 15, 2005\r\n *   Added support for a virtual root node, supposedly helpful for\r\n *   implementing XForms.  Fixed problem with QName node tests and\r\n *   the parent axis.\r\n *\r\n * Revision 9: March 17, 2005\r\n *   Namespace resolver tweaked so using the document node as the context\r\n *   for namespace lookups is equivalent to using the document element.\r\n *\r\n * Revision 8: February 13, 2005\r\n *   Handle implicit declaration of 'xmlns' namespace prefix.\r\n *   Fixed bug when comparing nodesets.\r\n *   Instance data can now be associated with a FunctionResolver, and\r\n *     workaround for MSXML not supporting 'localName' and 'getElementById',\r\n *     thanks to Grant Gongaware.\r\n *   Fix a few problems when the context node is the root node.\r\n *\r\n * Revision 7: February 11, 2005\r\n *   Default namespace resolver fix from Grant Gongaware\r\n *   <grant (at) gongaware.com>.\r\n *\r\n * Revision 6: February 10, 2005\r\n *   Fixed bug in 'number' function.\r\n *\r\n * Revision 5: February 9, 2005\r\n *   Fixed bug where text nodes not getting converted to string values.\r\n *\r\n * Revision 4: January 21, 2005\r\n *   Bug in 'name' function, fix thanks to Bill Edney.\r\n *   Fixed incorrect processing of namespace nodes.\r\n *   Fixed NamespaceResolver to resolve 'xml' namespace.\r\n *   Implemented union '|' operator.\r\n *\r\n * Revision 3: January 14, 2005\r\n *   Fixed bug with nodeset comparisons, bug lexing < and >.\r\n *\r\n * Revision 2: October 26, 2004\r\n *   QName node test namespace handling fixed.  Few other bug fixes.\r\n *\r\n * Revision 1: August 13, 2004\r\n *   Bug fixes from William J. Edney <bedney (at) technicalpursuit.com>.\r\n *   Added minimal licence.\r\n *\r\n * Initial version: June 14, 2004\r\n */\r\n\r\n// non-node wrapper\r\nvar xpath = (typeof exports === 'undefined') ? {} : exports;\r\n\r\n(function (exports) {\r\n    \"use strict\";\r\n\r\n    // namespace nodes are not part of the DOM spec, so we use a custom nodetype for them.\r\n    // should NOT be used externally\r\n    var NAMESPACE_NODE_NODETYPE = '__namespace';\r\n\r\n    var isNil = function (x) {\r\n        return x === null || x === undefined;\r\n    };\r\n\r\n    var isValidNodeType = function (nodeType) {\r\n        return nodeType === NAMESPACE_NODE_NODETYPE ||\r\n            (Number.isInteger(nodeType)\r\n                && nodeType >= 1\r\n                && nodeType <= 11\r\n            );\r\n    };\r\n\r\n    var isNodeLike = function (value) {\r\n        return value\r\n            && isValidNodeType(value.nodeType)\r\n            && typeof value.nodeName === \"string\";\r\n    };\r\n\r\n    // functional helpers\r\n    function curry(func) {\r\n        var slice = Array.prototype.slice,\r\n            totalargs = func.length,\r\n            partial = function (args, fn) {\r\n                return function () {\r\n                    return fn.apply(this, args.concat(slice.call(arguments)));\r\n                }\r\n            },\r\n            fn = function () {\r\n                var args = slice.call(arguments);\r\n                return (args.length < totalargs) ?\r\n                    partial(args, fn) :\r\n                    func.apply(this, slice.apply(arguments, [0, totalargs]));\r\n            };\r\n        return fn;\r\n    }\r\n\r\n    var forEach = function (f, xs) {\r\n        for (var i = 0; i < xs.length; i += 1) {\r\n            f(xs[i], i, xs);\r\n        }\r\n    };\r\n\r\n    var reduce = function (f, seed, xs) {\r\n        var acc = seed;\r\n\r\n        forEach(function (x, i) { acc = f(acc, x, i); }, xs);\r\n\r\n        return acc;\r\n    };\r\n\r\n    var map = function (f, xs) {\r\n        var mapped = new Array(xs.length);\r\n\r\n        forEach(function (x, i) { mapped[i] = f(x); }, xs);\r\n\r\n        return mapped;\r\n    };\r\n\r\n    var filter = function (f, xs) {\r\n        var filtered = [];\r\n\r\n        forEach(function (x, i) { if (f(x, i)) { filtered.push(x); } }, xs);\r\n\r\n        return filtered;\r\n    };\r\n\r\n    var includes = function (values, value) {\r\n        for (var i = 0; i < values.length; i += 1) {\r\n            if (values[i] === value) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    };\r\n\r\n    function always(value) { return function () { return value; } }\r\n\r\n    function toString(x) { return x.toString(); }\r\n    var join = function (s, xs) { return xs.join(s); };\r\n    var wrap = function (pref, suf, str) { return pref + str + suf; };\r\n\r\n    var prototypeConcat = Array.prototype.concat;\r\n\r\n    var sortNodes = function (nodes, reverse) {\r\n        var ns = new XNodeSet();\r\n\r\n        ns.addArray(nodes);\r\n\r\n        var sorted = ns.toArray();\r\n\r\n        return reverse ? sorted.reverse() : sorted;\r\n    }\r\n\r\n    // .apply() fails above a certain number of arguments - https://github.com/goto100/xpath/pull/98\r\n    var MAX_ARGUMENT_LENGTH = 32767;\r\n\r\n    function flatten(arr) {\r\n        var result = [];\r\n\r\n        for (var start = 0; start < arr.length; start += MAX_ARGUMENT_LENGTH) {\r\n            var chunk = arr.slice(start, start + MAX_ARGUMENT_LENGTH);\r\n\r\n            result = prototypeConcat.apply(result, chunk);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    function assign(target, varArgs) { // .length of function is 2\r\n        var to = Object(target);\r\n\r\n        for (var index = 1; index < arguments.length; index++) {\r\n            var nextSource = arguments[index];\r\n\r\n            if (nextSource != null) { // Skip over if undefined or null\r\n                for (var nextKey in nextSource) {\r\n                    // Avoid bugs when hasOwnProperty is shadowed\r\n                    if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n                        to[nextKey] = nextSource[nextKey];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return to;\r\n    }\r\n\r\n    var NodeTypes = {\r\n        ELEMENT_NODE: 1,\r\n        ATTRIBUTE_NODE: 2,\r\n        TEXT_NODE: 3,\r\n        CDATA_SECTION_NODE: 4,\r\n        PROCESSING_INSTRUCTION_NODE: 7,\r\n        COMMENT_NODE: 8,\r\n        DOCUMENT_NODE: 9,\r\n        DOCUMENT_TYPE_NODE: 10,\r\n        DOCUMENT_FRAGMENT_NODE: 11,\r\n        NAMESPACE_NODE: NAMESPACE_NODE_NODETYPE,\r\n    };\r\n\r\n    // XPathParser ///////////////////////////////////////////////////////////////\r\n\r\n    XPathParser.prototype = new Object();\r\n    XPathParser.prototype.constructor = XPathParser;\r\n    XPathParser.superclass = Object.prototype;\r\n\r\n    function XPathParser() {\r\n        this.init();\r\n    }\r\n\r\n    XPathParser.prototype.init = function () {\r\n        this.reduceActions = [];\r\n\r\n        this.reduceActions[3] = function (rhs) {\r\n            return new OrOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[5] = function (rhs) {\r\n            return new AndOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[7] = function (rhs) {\r\n            return new EqualsOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[8] = function (rhs) {\r\n            return new NotEqualOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[10] = function (rhs) {\r\n            return new LessThanOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[11] = function (rhs) {\r\n            return new GreaterThanOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[12] = function (rhs) {\r\n            return new LessThanOrEqualOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[13] = function (rhs) {\r\n            return new GreaterThanOrEqualOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[15] = function (rhs) {\r\n            return new PlusOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[16] = function (rhs) {\r\n            return new MinusOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[18] = function (rhs) {\r\n            return new MultiplyOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[19] = function (rhs) {\r\n            return new DivOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[20] = function (rhs) {\r\n            return new ModOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[22] = function (rhs) {\r\n            return new UnaryMinusOperation(rhs[1]);\r\n        };\r\n        this.reduceActions[24] = function (rhs) {\r\n            return new BarOperation(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[25] = function (rhs) {\r\n            return new PathExpr(undefined, undefined, rhs[0]);\r\n        };\r\n        this.reduceActions[27] = function (rhs) {\r\n            rhs[0].locationPath = rhs[2];\r\n            return rhs[0];\r\n        };\r\n        this.reduceActions[28] = function (rhs) {\r\n            rhs[0].locationPath = rhs[2];\r\n            rhs[0].locationPath.steps.unshift(new Step(Step.DESCENDANTORSELF, NodeTest.nodeTest, []));\r\n            return rhs[0];\r\n        };\r\n        this.reduceActions[29] = function (rhs) {\r\n            return new PathExpr(rhs[0], [], undefined);\r\n        };\r\n        this.reduceActions[30] = function (rhs) {\r\n            if (Utilities.instance_of(rhs[0], PathExpr)) {\r\n                if (rhs[0].filterPredicates == undefined) {\r\n                    rhs[0].filterPredicates = [];\r\n                }\r\n                rhs[0].filterPredicates.push(rhs[1]);\r\n                return rhs[0];\r\n            } else {\r\n                return new PathExpr(rhs[0], [rhs[1]], undefined);\r\n            }\r\n        };\r\n        this.reduceActions[32] = function (rhs) {\r\n            return rhs[1];\r\n        };\r\n        this.reduceActions[33] = function (rhs) {\r\n            return new XString(rhs[0]);\r\n        };\r\n        this.reduceActions[34] = function (rhs) {\r\n            return new XNumber(rhs[0]);\r\n        };\r\n        this.reduceActions[36] = function (rhs) {\r\n            return new FunctionCall(rhs[0], []);\r\n        };\r\n        this.reduceActions[37] = function (rhs) {\r\n            return new FunctionCall(rhs[0], rhs[2]);\r\n        };\r\n        this.reduceActions[38] = function (rhs) {\r\n            return [rhs[0]];\r\n        };\r\n        this.reduceActions[39] = function (rhs) {\r\n            rhs[2].unshift(rhs[0]);\r\n            return rhs[2];\r\n        };\r\n        this.reduceActions[43] = function (rhs) {\r\n            return new LocationPath(true, []);\r\n        };\r\n        this.reduceActions[44] = function (rhs) {\r\n            rhs[1].absolute = true;\r\n            return rhs[1];\r\n        };\r\n        this.reduceActions[46] = function (rhs) {\r\n            return new LocationPath(false, [rhs[0]]);\r\n        };\r\n        this.reduceActions[47] = function (rhs) {\r\n            rhs[0].steps.push(rhs[2]);\r\n            return rhs[0];\r\n        };\r\n        this.reduceActions[49] = function (rhs) {\r\n            return new Step(rhs[0], rhs[1], []);\r\n        };\r\n        this.reduceActions[50] = function (rhs) {\r\n            return new Step(Step.CHILD, rhs[0], []);\r\n        };\r\n        this.reduceActions[51] = function (rhs) {\r\n            return new Step(rhs[0], rhs[1], rhs[2]);\r\n        };\r\n        this.reduceActions[52] = function (rhs) {\r\n            return new Step(Step.CHILD, rhs[0], rhs[1]);\r\n        };\r\n        this.reduceActions[54] = function (rhs) {\r\n            return [rhs[0]];\r\n        };\r\n        this.reduceActions[55] = function (rhs) {\r\n            rhs[1].unshift(rhs[0]);\r\n            return rhs[1];\r\n        };\r\n        this.reduceActions[56] = function (rhs) {\r\n            if (rhs[0] == \"ancestor\") {\r\n                return Step.ANCESTOR;\r\n            } else if (rhs[0] == \"ancestor-or-self\") {\r\n                return Step.ANCESTORORSELF;\r\n            } else if (rhs[0] == \"attribute\") {\r\n                return Step.ATTRIBUTE;\r\n            } else if (rhs[0] == \"child\") {\r\n                return Step.CHILD;\r\n            } else if (rhs[0] == \"descendant\") {\r\n                return Step.DESCENDANT;\r\n            } else if (rhs[0] == \"descendant-or-self\") {\r\n                return Step.DESCENDANTORSELF;\r\n            } else if (rhs[0] == \"following\") {\r\n                return Step.FOLLOWING;\r\n            } else if (rhs[0] == \"following-sibling\") {\r\n                return Step.FOLLOWINGSIBLING;\r\n            } else if (rhs[0] == \"namespace\") {\r\n                return Step.NAMESPACE;\r\n            } else if (rhs[0] == \"parent\") {\r\n                return Step.PARENT;\r\n            } else if (rhs[0] == \"preceding\") {\r\n                return Step.PRECEDING;\r\n            } else if (rhs[0] == \"preceding-sibling\") {\r\n                return Step.PRECEDINGSIBLING;\r\n            } else if (rhs[0] == \"self\") {\r\n                return Step.SELF;\r\n            }\r\n            return -1;\r\n        };\r\n        this.reduceActions[57] = function (rhs) {\r\n            return Step.ATTRIBUTE;\r\n        };\r\n        this.reduceActions[59] = function (rhs) {\r\n            if (rhs[0] == \"comment\") {\r\n                return NodeTest.commentTest;\r\n            } else if (rhs[0] == \"text\") {\r\n                return NodeTest.textTest;\r\n            } else if (rhs[0] == \"processing-instruction\") {\r\n                return NodeTest.anyPiTest;\r\n            } else if (rhs[0] == \"node\") {\r\n                return NodeTest.nodeTest;\r\n            }\r\n            return new NodeTest(-1, undefined);\r\n        };\r\n        this.reduceActions[60] = function (rhs) {\r\n            return new NodeTest.PITest(rhs[2]);\r\n        };\r\n        this.reduceActions[61] = function (rhs) {\r\n            return rhs[1];\r\n        };\r\n        this.reduceActions[63] = function (rhs) {\r\n            rhs[1].absolute = true;\r\n            rhs[1].steps.unshift(new Step(Step.DESCENDANTORSELF, NodeTest.nodeTest, []));\r\n            return rhs[1];\r\n        };\r\n        this.reduceActions[64] = function (rhs) {\r\n            rhs[0].steps.push(new Step(Step.DESCENDANTORSELF, NodeTest.nodeTest, []));\r\n            rhs[0].steps.push(rhs[2]);\r\n            return rhs[0];\r\n        };\r\n        this.reduceActions[65] = function (rhs) {\r\n            return new Step(Step.SELF, NodeTest.nodeTest, []);\r\n        };\r\n        this.reduceActions[66] = function (rhs) {\r\n            return new Step(Step.PARENT, NodeTest.nodeTest, []);\r\n        };\r\n        this.reduceActions[67] = function (rhs) {\r\n            return new VariableReference(rhs[1]);\r\n        };\r\n        this.reduceActions[68] = function (rhs) {\r\n            return NodeTest.nameTestAny;\r\n        };\r\n        this.reduceActions[69] = function (rhs) {\r\n            return new NodeTest.NameTestPrefixAny(rhs[0].split(':')[0]);\r\n        };\r\n        this.reduceActions[70] = function (rhs) {\r\n            return new NodeTest.NameTestQName(rhs[0]);\r\n        };\r\n    };\r\n\r\n    XPathParser.actionTable = [\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \"                 s                  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n        \"                rrrrr               \",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \"rs  rrrrrrrr s  sssssrrrrrr  rrs rs \",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \"                            s       \",\r\n        \"                            s       \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"  s                                 \",\r\n        \"                            s       \",\r\n        \" s           s  sssss          s  s \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n        \"a                                   \",\r\n        \"r       s                    rr  r  \",\r\n        \"r      sr                    rr  r  \",\r\n        \"r   s  rr            s       rr  r  \",\r\n        \"r   rssrr            rss     rr  r  \",\r\n        \"r   rrrrr            rrrss   rr  r  \",\r\n        \"r   rrrrrsss         rrrrr   rr  r  \",\r\n        \"r   rrrrrrrr         rrrrr   rr  r  \",\r\n        \"r   rrrrrrrr         rrrrrs  rr  r  \",\r\n        \"r   rrrrrrrr         rrrrrr  rr  r  \",\r\n        \"r   rrrrrrrr         rrrrrr  rr  r  \",\r\n        \"r  srrrrrrrr         rrrrrrs rr sr  \",\r\n        \"r  srrrrrrrr         rrrrrrs rr  r  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"r   rrrrrrrr         rrrrrr  rr  r  \",\r\n        \"r   rrrrrrrr         rrrrrr  rr  r  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n        \"                sssss               \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr sr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"                             s      \",\r\n        \"r  srrrrrrrr         rrrrrrs rr  r  \",\r\n        \"r   rrrrrrrr         rrrrr   rr  r  \",\r\n        \"              s                     \",\r\n        \"                             s      \",\r\n        \"                rrrrr               \",\r\n        \" s s        sssssssss    s sss s  ss\",\r\n        \"r  srrrrrrrr         rrrrrrs rr  r  \",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s s        sssssssss      ss  s  ss\",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \" s           s  sssss          s  s \",\r\n        \" s           s  sssss          s  s \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \" s           s  sssss          s  s \",\r\n        \" s           s  sssss          s  s \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr sr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr sr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"                             s      \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"                             rr     \",\r\n        \"                             s      \",\r\n        \"                             rs     \",\r\n        \"r      sr                    rr  r  \",\r\n        \"r   s  rr            s       rr  r  \",\r\n        \"r   rssrr            rss     rr  r  \",\r\n        \"r   rssrr            rss     rr  r  \",\r\n        \"r   rrrrr            rrrss   rr  r  \",\r\n        \"r   rrrrr            rrrss   rr  r  \",\r\n        \"r   rrrrr            rrrss   rr  r  \",\r\n        \"r   rrrrr            rrrss   rr  r  \",\r\n        \"r   rrrrrsss         rrrrr   rr  r  \",\r\n        \"r   rrrrrsss         rrrrr   rr  r  \",\r\n        \"r   rrrrrrrr         rrrrr   rr  r  \",\r\n        \"r   rrrrrrrr         rrrrr   rr  r  \",\r\n        \"r   rrrrrrrr         rrrrr   rr  r  \",\r\n        \"r   rrrrrrrr         rrrrrr  rr  r  \",\r\n        \"                                 r  \",\r\n        \"                                 s  \",\r\n        \"r  srrrrrrrr         rrrrrrs rr  r  \",\r\n        \"r  srrrrrrrr         rrrrrrs rr  r  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr  r  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \" s s        sssssssss    s ss  s  ss\",\r\n        \"r  rrrrrrrrr         rrrrrrr rr rr  \",\r\n        \"                             r      \"\r\n    ];\r\n\r\n    XPathParser.actionTableNumber = [\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \"                 J                  \",\r\n        \"a  aaaaaaaaa         aaaaaaa aa  a  \",\r\n        \"                YYYYY               \",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \"K1  KKKKKKKK .  +*)('KKKKKK  KK# K\\\" \",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \"                            N       \",\r\n        \"                            O       \",\r\n        \"e  eeeeeeeee         eeeeeee ee ee  \",\r\n        \"f  fffffffff         fffffff ff ff  \",\r\n        \"d  ddddddddd         ddddddd dd dd  \",\r\n        \"B  BBBBBBBBB         BBBBBBB BB BB  \",\r\n        \"A  AAAAAAAAA         AAAAAAA AA AA  \",\r\n        \"  P                                 \",\r\n        \"                            Q       \",\r\n        \" 1           .  +*)('          #  \\\" \",\r\n        \"b  bbbbbbbbb         bbbbbbb bb  b  \",\r\n        \"                                    \",\r\n        \"!       S                    !!  !  \",\r\n        \"\\\"      T\\\"                    \\\"\\\"  \\\"  \",\r\n        \"$   V  $$            U       $$  $  \",\r\n        \"&   &ZY&&            &XW     &&  &  \",\r\n        \")   )))))            )))\\\\[   ))  )  \",\r\n        \".   ....._^]         .....   ..  .  \",\r\n        \"1   11111111         11111   11  1  \",\r\n        \"5   55555555         55555`  55  5  \",\r\n        \"7   77777777         777777  77  7  \",\r\n        \"9   99999999         999999  99  9  \",\r\n        \":  c::::::::         ::::::b :: a:  \",\r\n        \"I  fIIIIIIII         IIIIIIe II  I  \",\r\n        \"=  =========         ======= == ==  \",\r\n        \"?  ?????????         ??????? ?? ??  \",\r\n        \"C  CCCCCCCCC         CCCCCCC CC CC  \",\r\n        \"J   JJJJJJJJ         JJJJJJ  JJ  J  \",\r\n        \"M   MMMMMMMM         MMMMMM  MM  M  \",\r\n        \"N  NNNNNNNNN         NNNNNNN NN  N  \",\r\n        \"P  PPPPPPPPP         PPPPPPP PP  P  \",\r\n        \"                +*)('               \",\r\n        \"R  RRRRRRRRR         RRRRRRR RR aR  \",\r\n        \"U  UUUUUUUUU         UUUUUUU UU  U  \",\r\n        \"Z  ZZZZZZZZZ         ZZZZZZZ ZZ ZZ  \",\r\n        \"c  ccccccccc         ccccccc cc cc  \",\r\n        \"                             j      \",\r\n        \"L  fLLLLLLLL         LLLLLLe LL  L  \",\r\n        \"6   66666666         66666   66  6  \",\r\n        \"              k                     \",\r\n        \"                             l      \",\r\n        \"                XXXXX               \",\r\n        \" 1 0        /.-,+*)('    & %$m #  \\\"!\",\r\n        \"_  f________         ______e __  _  \",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('      %$  #  \\\"!\",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \" 1           .  +*)('          #  \\\" \",\r\n        \" 1           .  +*)('          #  \\\" \",\r\n        \">  >>>>>>>>>         >>>>>>> >> >>  \",\r\n        \" 1           .  +*)('          #  \\\" \",\r\n        \" 1           .  +*)('          #  \\\" \",\r\n        \"Q  QQQQQQQQQ         QQQQQQQ QQ aQ  \",\r\n        \"V  VVVVVVVVV         VVVVVVV VV aV  \",\r\n        \"T  TTTTTTTTT         TTTTTTT TT  T  \",\r\n        \"@  @@@@@@@@@         @@@@@@@ @@ @@  \",\r\n        \"                             \\x87      \",\r\n        \"[  [[[[[[[[[         [[[[[[[ [[ [[  \",\r\n        \"D  DDDDDDDDD         DDDDDDD DD DD  \",\r\n        \"                             HH     \",\r\n        \"                             \\x88      \",\r\n        \"                             F\\x89     \",\r\n        \"#      T#                    ##  #  \",\r\n        \"%   V  %%            U       %%  %  \",\r\n        \"'   'ZY''            'XW     ''  '  \",\r\n        \"(   (ZY((            (XW     ((  (  \",\r\n        \"+   +++++            +++\\\\[   ++  +  \",\r\n        \"*   *****            ***\\\\[   **  *  \",\r\n        \"-   -----            ---\\\\[   --  -  \",\r\n        \",   ,,,,,            ,,,\\\\[   ,,  ,  \",\r\n        \"0   00000_^]         00000   00  0  \",\r\n        \"/   /////_^]         /////   //  /  \",\r\n        \"2   22222222         22222   22  2  \",\r\n        \"3   33333333         33333   33  3  \",\r\n        \"4   44444444         44444   44  4  \",\r\n        \"8   88888888         888888  88  8  \",\r\n        \"                                 ^  \",\r\n        \"                                 \\x8a  \",\r\n        \";  f;;;;;;;;         ;;;;;;e ;;  ;  \",\r\n        \"<  f<<<<<<<<         <<<<<<e <<  <  \",\r\n        \"O  OOOOOOOOO         OOOOOOO OO  O  \",\r\n        \"`  `````````         ``````` ``  `  \",\r\n        \"S  SSSSSSSSS         SSSSSSS SS  S  \",\r\n        \"W  WWWWWWWWW         WWWWWWW WW  W  \",\r\n        \"\\\\  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\         \\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\ \\\\\\\\  \",\r\n        \"E  EEEEEEEEE         EEEEEEE EE EE  \",\r\n        \" 1 0        /.-,+*)('    & %$  #  \\\"!\",\r\n        \"]  ]]]]]]]]]         ]]]]]]] ]] ]]  \",\r\n        \"                             G      \"\r\n    ];\r\n\r\n    XPathParser.gotoTable = [\r\n        \"3456789:;<=>?@ AB  CDEFGH IJ \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"L456789:;<=>?@ AB  CDEFGH IJ \",\r\n        \"            M        EFGH IJ \",\r\n        \"       N;<=>?@ AB  CDEFGH IJ \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"            S        EFGH IJ \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"              e              \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                        h  J \",\r\n        \"              i          j   \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"o456789:;<=>?@ ABpqCDEFGH IJ \",\r\n        \"                             \",\r\n        \"  r6789:;<=>?@ AB  CDEFGH IJ \",\r\n        \"   s789:;<=>?@ AB  CDEFGH IJ \",\r\n        \"    t89:;<=>?@ AB  CDEFGH IJ \",\r\n        \"    u89:;<=>?@ AB  CDEFGH IJ \",\r\n        \"     v9:;<=>?@ AB  CDEFGH IJ \",\r\n        \"     w9:;<=>?@ AB  CDEFGH IJ \",\r\n        \"     x9:;<=>?@ AB  CDEFGH IJ \",\r\n        \"     y9:;<=>?@ AB  CDEFGH IJ \",\r\n        \"      z:;<=>?@ AB  CDEFGH IJ \",\r\n        \"      {:;<=>?@ AB  CDEFGH IJ \",\r\n        \"       |;<=>?@ AB  CDEFGH IJ \",\r\n        \"       };<=>?@ AB  CDEFGH IJ \",\r\n        \"       ~;<=>?@ AB  CDEFGH IJ \",\r\n        \"         \\x7f=>?@ AB  CDEFGH IJ \",\r\n        \"\\x80456789:;<=>?@ AB  CDEFGH IJ\\x81\",\r\n        \"            \\x82        EFGH IJ \",\r\n        \"            \\x83        EFGH IJ \",\r\n        \"                             \",\r\n        \"                     \\x84 GH IJ \",\r\n        \"                     \\x85 GH IJ \",\r\n        \"              i          \\x86   \",\r\n        \"              i          \\x87   \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"                             \",\r\n        \"o456789:;<=>?@ AB\\x8cqCDEFGH IJ \",\r\n        \"                             \",\r\n        \"                             \"\r\n    ];\r\n\r\n    XPathParser.productions = [\r\n        [1, 1, 2],\r\n        [2, 1, 3],\r\n        [3, 1, 4],\r\n        [3, 3, 3, -9, 4],\r\n        [4, 1, 5],\r\n        [4, 3, 4, -8, 5],\r\n        [5, 1, 6],\r\n        [5, 3, 5, -22, 6],\r\n        [5, 3, 5, -5, 6],\r\n        [6, 1, 7],\r\n        [6, 3, 6, -23, 7],\r\n        [6, 3, 6, -24, 7],\r\n        [6, 3, 6, -6, 7],\r\n        [6, 3, 6, -7, 7],\r\n        [7, 1, 8],\r\n        [7, 3, 7, -25, 8],\r\n        [7, 3, 7, -26, 8],\r\n        [8, 1, 9],\r\n        [8, 3, 8, -12, 9],\r\n        [8, 3, 8, -11, 9],\r\n        [8, 3, 8, -10, 9],\r\n        [9, 1, 10],\r\n        [9, 2, -26, 9],\r\n        [10, 1, 11],\r\n        [10, 3, 10, -27, 11],\r\n        [11, 1, 12],\r\n        [11, 1, 13],\r\n        [11, 3, 13, -28, 14],\r\n        [11, 3, 13, -4, 14],\r\n        [13, 1, 15],\r\n        [13, 2, 13, 16],\r\n        [15, 1, 17],\r\n        [15, 3, -29, 2, -30],\r\n        [15, 1, -15],\r\n        [15, 1, -16],\r\n        [15, 1, 18],\r\n        [18, 3, -13, -29, -30],\r\n        [18, 4, -13, -29, 19, -30],\r\n        [19, 1, 20],\r\n        [19, 3, 20, -31, 19],\r\n        [20, 1, 2],\r\n        [12, 1, 14],\r\n        [12, 1, 21],\r\n        [21, 1, -28],\r\n        [21, 2, -28, 14],\r\n        [21, 1, 22],\r\n        [14, 1, 23],\r\n        [14, 3, 14, -28, 23],\r\n        [14, 1, 24],\r\n        [23, 2, 25, 26],\r\n        [23, 1, 26],\r\n        [23, 3, 25, 26, 27],\r\n        [23, 2, 26, 27],\r\n        [23, 1, 28],\r\n        [27, 1, 16],\r\n        [27, 2, 16, 27],\r\n        [25, 2, -14, -3],\r\n        [25, 1, -32],\r\n        [26, 1, 29],\r\n        [26, 3, -20, -29, -30],\r\n        [26, 4, -21, -29, -15, -30],\r\n        [16, 3, -33, 30, -34],\r\n        [30, 1, 2],\r\n        [22, 2, -4, 14],\r\n        [24, 3, 14, -4, 23],\r\n        [28, 1, -35],\r\n        [28, 1, -2],\r\n        [17, 2, -36, -18],\r\n        [29, 1, -17],\r\n        [29, 1, -19],\r\n        [29, 1, -18]\r\n    ];\r\n\r\n    XPathParser.DOUBLEDOT = 2;\r\n    XPathParser.DOUBLECOLON = 3;\r\n    XPathParser.DOUBLESLASH = 4;\r\n    XPathParser.NOTEQUAL = 5;\r\n    XPathParser.LESSTHANOREQUAL = 6;\r\n    XPathParser.GREATERTHANOREQUAL = 7;\r\n    XPathParser.AND = 8;\r\n    XPathParser.OR = 9;\r\n    XPathParser.MOD = 10;\r\n    XPathParser.DIV = 11;\r\n    XPathParser.MULTIPLYOPERATOR = 12;\r\n    XPathParser.FUNCTIONNAME = 13;\r\n    XPathParser.AXISNAME = 14;\r\n    XPathParser.LITERAL = 15;\r\n    XPathParser.NUMBER = 16;\r\n    XPathParser.ASTERISKNAMETEST = 17;\r\n    XPathParser.QNAME = 18;\r\n    XPathParser.NCNAMECOLONASTERISK = 19;\r\n    XPathParser.NODETYPE = 20;\r\n    XPathParser.PROCESSINGINSTRUCTIONWITHLITERAL = 21;\r\n    XPathParser.EQUALS = 22;\r\n    XPathParser.LESSTHAN = 23;\r\n    XPathParser.GREATERTHAN = 24;\r\n    XPathParser.PLUS = 25;\r\n    XPathParser.MINUS = 26;\r\n    XPathParser.BAR = 27;\r\n    XPathParser.SLASH = 28;\r\n    XPathParser.LEFTPARENTHESIS = 29;\r\n    XPathParser.RIGHTPARENTHESIS = 30;\r\n    XPathParser.COMMA = 31;\r\n    XPathParser.AT = 32;\r\n    XPathParser.LEFTBRACKET = 33;\r\n    XPathParser.RIGHTBRACKET = 34;\r\n    XPathParser.DOT = 35;\r\n    XPathParser.DOLLAR = 36;\r\n\r\n    XPathParser.prototype.tokenize = function (s1) {\r\n        var types = [];\r\n        var values = [];\r\n        var s = s1 + '\\0';\r\n\r\n        var pos = 0;\r\n        var c = s.charAt(pos++);\r\n        while (1) {\r\n            while (c == ' ' || c == '\\t' || c == '\\r' || c == '\\n') {\r\n                c = s.charAt(pos++);\r\n            }\r\n            if (c == '\\0' || pos >= s.length) {\r\n                break;\r\n            }\r\n\r\n            if (c == '(') {\r\n                types.push(XPathParser.LEFTPARENTHESIS);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n            if (c == ')') {\r\n                types.push(XPathParser.RIGHTPARENTHESIS);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n            if (c == '[') {\r\n                types.push(XPathParser.LEFTBRACKET);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n            if (c == ']') {\r\n                types.push(XPathParser.RIGHTBRACKET);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n            if (c == '@') {\r\n                types.push(XPathParser.AT);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n            if (c == ',') {\r\n                types.push(XPathParser.COMMA);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n            if (c == '|') {\r\n                types.push(XPathParser.BAR);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n            if (c == '+') {\r\n                types.push(XPathParser.PLUS);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n            if (c == '-') {\r\n                types.push(XPathParser.MINUS);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n            if (c == '=') {\r\n                types.push(XPathParser.EQUALS);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n            if (c == '$') {\r\n                types.push(XPathParser.DOLLAR);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n\r\n            if (c == '.') {\r\n                c = s.charAt(pos++);\r\n                if (c == '.') {\r\n                    types.push(XPathParser.DOUBLEDOT);\r\n                    values.push(\"..\");\r\n                    c = s.charAt(pos++);\r\n                    continue;\r\n                }\r\n                if (c >= '0' && c <= '9') {\r\n                    var number = \".\" + c;\r\n                    c = s.charAt(pos++);\r\n                    while (c >= '0' && c <= '9') {\r\n                        number += c;\r\n                        c = s.charAt(pos++);\r\n                    }\r\n                    types.push(XPathParser.NUMBER);\r\n                    values.push(number);\r\n                    continue;\r\n                }\r\n                types.push(XPathParser.DOT);\r\n                values.push('.');\r\n                continue;\r\n            }\r\n\r\n            if (c == '\\'' || c == '\"') {\r\n                var delimiter = c;\r\n                var literal = \"\";\r\n                while (pos < s.length && (c = s.charAt(pos)) !== delimiter) {\r\n                    literal += c;\r\n                    pos += 1;\r\n                }\r\n                if (c !== delimiter) {\r\n                    throw XPathException.fromMessage(\"Unterminated string literal: \" + delimiter + literal);\r\n                }\r\n                pos += 1;\r\n                types.push(XPathParser.LITERAL);\r\n                values.push(literal);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n\r\n            if (c >= '0' && c <= '9') {\r\n                var number = c;\r\n                c = s.charAt(pos++);\r\n                while (c >= '0' && c <= '9') {\r\n                    number += c;\r\n                    c = s.charAt(pos++);\r\n                }\r\n                if (c == '.') {\r\n                    if (s.charAt(pos) >= '0' && s.charAt(pos) <= '9') {\r\n                        number += c;\r\n                        number += s.charAt(pos++);\r\n                        c = s.charAt(pos++);\r\n                        while (c >= '0' && c <= '9') {\r\n                            number += c;\r\n                            c = s.charAt(pos++);\r\n                        }\r\n                    }\r\n                }\r\n                types.push(XPathParser.NUMBER);\r\n                values.push(number);\r\n                continue;\r\n            }\r\n\r\n            if (c == '*') {\r\n                if (types.length > 0) {\r\n                    var last = types[types.length - 1];\r\n                    if (last != XPathParser.AT\r\n                        && last != XPathParser.DOUBLECOLON\r\n                        && last != XPathParser.LEFTPARENTHESIS\r\n                        && last != XPathParser.LEFTBRACKET\r\n                        && last != XPathParser.AND\r\n                        && last != XPathParser.OR\r\n                        && last != XPathParser.MOD\r\n                        && last != XPathParser.DIV\r\n                        && last != XPathParser.MULTIPLYOPERATOR\r\n                        && last != XPathParser.SLASH\r\n                        && last != XPathParser.DOUBLESLASH\r\n                        && last != XPathParser.BAR\r\n                        && last != XPathParser.PLUS\r\n                        && last != XPathParser.MINUS\r\n                        && last != XPathParser.EQUALS\r\n                        && last != XPathParser.NOTEQUAL\r\n                        && last != XPathParser.LESSTHAN\r\n                        && last != XPathParser.LESSTHANOREQUAL\r\n                        && last != XPathParser.GREATERTHAN\r\n                        && last != XPathParser.GREATERTHANOREQUAL) {\r\n                        types.push(XPathParser.MULTIPLYOPERATOR);\r\n                        values.push(c);\r\n                        c = s.charAt(pos++);\r\n                        continue;\r\n                    }\r\n                }\r\n                types.push(XPathParser.ASTERISKNAMETEST);\r\n                values.push(c);\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n\r\n            if (c == ':') {\r\n                if (s.charAt(pos) == ':') {\r\n                    types.push(XPathParser.DOUBLECOLON);\r\n                    values.push(\"::\");\r\n                    pos++;\r\n                    c = s.charAt(pos++);\r\n                    continue;\r\n                }\r\n            }\r\n\r\n            if (c == '/') {\r\n                c = s.charAt(pos++);\r\n                if (c == '/') {\r\n                    types.push(XPathParser.DOUBLESLASH);\r\n                    values.push(\"//\");\r\n                    c = s.charAt(pos++);\r\n                    continue;\r\n                }\r\n                types.push(XPathParser.SLASH);\r\n                values.push('/');\r\n                continue;\r\n            }\r\n\r\n            if (c == '!') {\r\n                if (s.charAt(pos) == '=') {\r\n                    types.push(XPathParser.NOTEQUAL);\r\n                    values.push(\"!=\");\r\n                    pos++;\r\n                    c = s.charAt(pos++);\r\n                    continue;\r\n                }\r\n            }\r\n\r\n            if (c == '<') {\r\n                if (s.charAt(pos) == '=') {\r\n                    types.push(XPathParser.LESSTHANOREQUAL);\r\n                    values.push(\"<=\");\r\n                    pos++;\r\n                    c = s.charAt(pos++);\r\n                    continue;\r\n                }\r\n                types.push(XPathParser.LESSTHAN);\r\n                values.push('<');\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n\r\n            if (c == '>') {\r\n                if (s.charAt(pos) == '=') {\r\n                    types.push(XPathParser.GREATERTHANOREQUAL);\r\n                    values.push(\">=\");\r\n                    pos++;\r\n                    c = s.charAt(pos++);\r\n                    continue;\r\n                }\r\n                types.push(XPathParser.GREATERTHAN);\r\n                values.push('>');\r\n                c = s.charAt(pos++);\r\n                continue;\r\n            }\r\n\r\n            if (c == '_' || Utilities.isLetter(c.charCodeAt(0))) {\r\n                var name = c;\r\n                c = s.charAt(pos++);\r\n                while (Utilities.isNCNameChar(c.charCodeAt(0))) {\r\n                    name += c;\r\n                    c = s.charAt(pos++);\r\n                }\r\n                if (types.length > 0) {\r\n                    var last = types[types.length - 1];\r\n                    if (last != XPathParser.AT\r\n                        && last != XPathParser.DOUBLECOLON\r\n                        && last != XPathParser.LEFTPARENTHESIS\r\n                        && last != XPathParser.LEFTBRACKET\r\n                        && last != XPathParser.AND\r\n                        && last != XPathParser.OR\r\n                        && last != XPathParser.MOD\r\n                        && last != XPathParser.DIV\r\n                        && last != XPathParser.MULTIPLYOPERATOR\r\n                        && last != XPathParser.SLASH\r\n                        && last != XPathParser.DOUBLESLASH\r\n                        && last != XPathParser.BAR\r\n                        && last != XPathParser.PLUS\r\n                        && last != XPathParser.MINUS\r\n                        && last != XPathParser.EQUALS\r\n                        && last != XPathParser.NOTEQUAL\r\n                        && last != XPathParser.LESSTHAN\r\n                        && last != XPathParser.LESSTHANOREQUAL\r\n                        && last != XPathParser.GREATERTHAN\r\n                        && last != XPathParser.GREATERTHANOREQUAL) {\r\n                        if (name == \"and\") {\r\n                            types.push(XPathParser.AND);\r\n                            values.push(name);\r\n                            continue;\r\n                        }\r\n                        if (name == \"or\") {\r\n                            types.push(XPathParser.OR);\r\n                            values.push(name);\r\n                            continue;\r\n                        }\r\n                        if (name == \"mod\") {\r\n                            types.push(XPathParser.MOD);\r\n                            values.push(name);\r\n                            continue;\r\n                        }\r\n                        if (name == \"div\") {\r\n                            types.push(XPathParser.DIV);\r\n                            values.push(name);\r\n                            continue;\r\n                        }\r\n                    }\r\n                }\r\n                if (c == ':') {\r\n                    if (s.charAt(pos) == '*') {\r\n                        types.push(XPathParser.NCNAMECOLONASTERISK);\r\n                        values.push(name + \":*\");\r\n                        pos++;\r\n                        c = s.charAt(pos++);\r\n                        continue;\r\n                    }\r\n                    if (s.charAt(pos) == '_' || Utilities.isLetter(s.charCodeAt(pos))) {\r\n                        name += ':';\r\n                        c = s.charAt(pos++);\r\n                        while (Utilities.isNCNameChar(c.charCodeAt(0))) {\r\n                            name += c;\r\n                            c = s.charAt(pos++);\r\n                        }\r\n                        if (c == '(') {\r\n                            types.push(XPathParser.FUNCTIONNAME);\r\n                            values.push(name);\r\n                            continue;\r\n                        }\r\n                        types.push(XPathParser.QNAME);\r\n                        values.push(name);\r\n                        continue;\r\n                    }\r\n                    if (s.charAt(pos) == ':') {\r\n                        types.push(XPathParser.AXISNAME);\r\n                        values.push(name);\r\n                        continue;\r\n                    }\r\n                }\r\n                if (c == '(') {\r\n                    if (name == \"comment\" || name == \"text\" || name == \"node\") {\r\n                        types.push(XPathParser.NODETYPE);\r\n                        values.push(name);\r\n                        continue;\r\n                    }\r\n                    if (name == \"processing-instruction\") {\r\n                        if (s.charAt(pos) == ')') {\r\n                            types.push(XPathParser.NODETYPE);\r\n                        } else {\r\n                            types.push(XPathParser.PROCESSINGINSTRUCTIONWITHLITERAL);\r\n                        }\r\n                        values.push(name);\r\n                        continue;\r\n                    }\r\n                    types.push(XPathParser.FUNCTIONNAME);\r\n                    values.push(name);\r\n                    continue;\r\n                }\r\n                types.push(XPathParser.QNAME);\r\n                values.push(name);\r\n                continue;\r\n            }\r\n\r\n            throw new Error(\"Unexpected character \" + c);\r\n        }\r\n        types.push(1);\r\n        values.push(\"[EOF]\");\r\n        return [types, values];\r\n    };\r\n\r\n    XPathParser.SHIFT = 's';\r\n    XPathParser.REDUCE = 'r';\r\n    XPathParser.ACCEPT = 'a';\r\n\r\n    XPathParser.prototype.parse = function (s) {\r\n        if (!s) {\r\n            throw new Error('XPath expression unspecified.');\r\n        }\r\n        if (typeof s !== 'string'){\r\n            throw new Error('XPath expression must be a string.');\r\n        }\r\n\r\n        var types;\r\n        var values;\r\n        var res = this.tokenize(s);\r\n        if (res == undefined) {\r\n            return undefined;\r\n        }\r\n        types = res[0];\r\n        values = res[1];\r\n        var tokenPos = 0;\r\n        var state = [];\r\n        var tokenType = [];\r\n        var tokenValue = [];\r\n        var s;\r\n        var a;\r\n        var t;\r\n\r\n        state.push(0);\r\n        tokenType.push(1);\r\n        tokenValue.push(\"_S\");\r\n\r\n        a = types[tokenPos];\r\n        t = values[tokenPos++];\r\n        while (1) {\r\n            s = state[state.length - 1];\r\n            switch (XPathParser.actionTable[s].charAt(a - 1)) {\r\n                case XPathParser.SHIFT:\r\n                    tokenType.push(-a);\r\n                    tokenValue.push(t);\r\n                    state.push(XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32);\r\n                    a = types[tokenPos];\r\n                    t = values[tokenPos++];\r\n                    break;\r\n                case XPathParser.REDUCE:\r\n                    var num = XPathParser.productions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32][1];\r\n                    var rhs = [];\r\n                    for (var i = 0; i < num; i++) {\r\n                        tokenType.pop();\r\n                        rhs.unshift(tokenValue.pop());\r\n                        state.pop();\r\n                    }\r\n                    var s_ = state[state.length - 1];\r\n                    tokenType.push(XPathParser.productions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32][0]);\r\n                    if (this.reduceActions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32] == undefined) {\r\n                        tokenValue.push(rhs[0]);\r\n                    } else {\r\n                        tokenValue.push(this.reduceActions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32](rhs));\r\n                    }\r\n                    state.push(XPathParser.gotoTable[s_].charCodeAt(XPathParser.productions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32][0] - 2) - 33);\r\n                    break;\r\n                case XPathParser.ACCEPT:\r\n                    return new XPath(tokenValue.pop());\r\n                default:\r\n                    throw new Error(\"XPath parse error\");\r\n            }\r\n        }\r\n    };\r\n\r\n    // XPath /////////////////////////////////////////////////////////////////////\r\n\r\n    XPath.prototype = new Object();\r\n    XPath.prototype.constructor = XPath;\r\n    XPath.superclass = Object.prototype;\r\n\r\n    function XPath(e) {\r\n        this.expression = e;\r\n    }\r\n\r\n    XPath.prototype.toString = function () {\r\n        return this.expression.toString();\r\n    };\r\n\r\n    function setIfUnset(obj, prop, value) {\r\n        if (!(prop in obj)) {\r\n            obj[prop] = value;\r\n        }\r\n    }\r\n\r\n    XPath.prototype.evaluate = function (c) {\r\n        var node = c.expressionContextNode;\r\n\r\n        if (!(isNil(node) || isNodeLike(node))) {\r\n            throw new Error(\"Context node does not appear to be a valid DOM node.\");\r\n        }\r\n\r\n        c.contextNode = c.expressionContextNode;\r\n        c.contextSize = 1;\r\n        c.contextPosition = 1;\r\n\r\n        // [2017-11-25] Removed usage of .implementation.hasFeature() since it does\r\n        //              not reliably detect HTML DOMs (always returns false in xmldom and true in browsers)\r\n        if (c.isHtml) {\r\n            setIfUnset(c, 'caseInsensitive', true);\r\n            setIfUnset(c, 'allowAnyNamespaceForNoPrefix', true);\r\n        }\r\n\r\n        setIfUnset(c, 'caseInsensitive', false);\r\n\r\n        return this.expression.evaluate(c);\r\n    };\r\n\r\n    XPath.XML_NAMESPACE_URI = \"http://www.w3.org/XML/1998/namespace\";\r\n    XPath.XMLNS_NAMESPACE_URI = \"http://www.w3.org/2000/xmlns/\";\r\n\r\n    // Expression ////////////////////////////////////////////////////////////////\r\n\r\n    Expression.prototype = new Object();\r\n    Expression.prototype.constructor = Expression;\r\n    Expression.superclass = Object.prototype;\r\n\r\n    function Expression() {\r\n    }\r\n\r\n    Expression.prototype.init = function () {\r\n    };\r\n\r\n    Expression.prototype.toString = function () {\r\n        return \"<Expression>\";\r\n    };\r\n\r\n    Expression.prototype.evaluate = function (c) {\r\n        throw new Error(\"Could not evaluate expression.\");\r\n    };\r\n\r\n    // UnaryOperation ////////////////////////////////////////////////////////////\r\n\r\n    UnaryOperation.prototype = new Expression();\r\n    UnaryOperation.prototype.constructor = UnaryOperation;\r\n    UnaryOperation.superclass = Expression.prototype;\r\n\r\n    function UnaryOperation(rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(rhs);\r\n        }\r\n    }\r\n\r\n    UnaryOperation.prototype.init = function (rhs) {\r\n        this.rhs = rhs;\r\n    };\r\n\r\n    // UnaryMinusOperation ///////////////////////////////////////////////////////\r\n\r\n    UnaryMinusOperation.prototype = new UnaryOperation();\r\n    UnaryMinusOperation.prototype.constructor = UnaryMinusOperation;\r\n    UnaryMinusOperation.superclass = UnaryOperation.prototype;\r\n\r\n    function UnaryMinusOperation(rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(rhs);\r\n        }\r\n    }\r\n\r\n    UnaryMinusOperation.prototype.init = function (rhs) {\r\n        UnaryMinusOperation.superclass.init.call(this, rhs);\r\n    };\r\n\r\n    UnaryMinusOperation.prototype.evaluate = function (c) {\r\n        return this.rhs.evaluate(c).number().negate();\r\n    };\r\n\r\n    UnaryMinusOperation.prototype.toString = function () {\r\n        return \"-\" + this.rhs.toString();\r\n    };\r\n\r\n    // BinaryOperation ///////////////////////////////////////////////////////////\r\n\r\n    BinaryOperation.prototype = new Expression();\r\n    BinaryOperation.prototype.constructor = BinaryOperation;\r\n    BinaryOperation.superclass = Expression.prototype;\r\n\r\n    function BinaryOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    BinaryOperation.prototype.init = function (lhs, rhs) {\r\n        this.lhs = lhs;\r\n        this.rhs = rhs;\r\n    };\r\n\r\n    // OrOperation ///////////////////////////////////////////////////////////////\r\n\r\n    OrOperation.prototype = new BinaryOperation();\r\n    OrOperation.prototype.constructor = OrOperation;\r\n    OrOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function OrOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    OrOperation.prototype.init = function (lhs, rhs) {\r\n        OrOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    OrOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" or \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    OrOperation.prototype.evaluate = function (c) {\r\n        var b = this.lhs.evaluate(c).bool();\r\n        if (b.booleanValue()) {\r\n            return b;\r\n        }\r\n        return this.rhs.evaluate(c).bool();\r\n    };\r\n\r\n    // AndOperation //////////////////////////////////////////////////////////////\r\n\r\n    AndOperation.prototype = new BinaryOperation();\r\n    AndOperation.prototype.constructor = AndOperation;\r\n    AndOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function AndOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    AndOperation.prototype.init = function (lhs, rhs) {\r\n        AndOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    AndOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" and \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    AndOperation.prototype.evaluate = function (c) {\r\n        var b = this.lhs.evaluate(c).bool();\r\n        if (!b.booleanValue()) {\r\n            return b;\r\n        }\r\n        return this.rhs.evaluate(c).bool();\r\n    };\r\n\r\n    // EqualsOperation ///////////////////////////////////////////////////////////\r\n\r\n    EqualsOperation.prototype = new BinaryOperation();\r\n    EqualsOperation.prototype.constructor = EqualsOperation;\r\n    EqualsOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function EqualsOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    EqualsOperation.prototype.init = function (lhs, rhs) {\r\n        EqualsOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    EqualsOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" = \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    EqualsOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).equals(this.rhs.evaluate(c));\r\n    };\r\n\r\n    // NotEqualOperation /////////////////////////////////////////////////////////\r\n\r\n    NotEqualOperation.prototype = new BinaryOperation();\r\n    NotEqualOperation.prototype.constructor = NotEqualOperation;\r\n    NotEqualOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function NotEqualOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    NotEqualOperation.prototype.init = function (lhs, rhs) {\r\n        NotEqualOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    NotEqualOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" != \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    NotEqualOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).notequal(this.rhs.evaluate(c));\r\n    };\r\n\r\n    // LessThanOperation /////////////////////////////////////////////////////////\r\n\r\n    LessThanOperation.prototype = new BinaryOperation();\r\n    LessThanOperation.prototype.constructor = LessThanOperation;\r\n    LessThanOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function LessThanOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    LessThanOperation.prototype.init = function (lhs, rhs) {\r\n        LessThanOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    LessThanOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).lessthan(this.rhs.evaluate(c));\r\n    };\r\n\r\n    LessThanOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" < \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    // GreaterThanOperation //////////////////////////////////////////////////////\r\n\r\n    GreaterThanOperation.prototype = new BinaryOperation();\r\n    GreaterThanOperation.prototype.constructor = GreaterThanOperation;\r\n    GreaterThanOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function GreaterThanOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    GreaterThanOperation.prototype.init = function (lhs, rhs) {\r\n        GreaterThanOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    GreaterThanOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).greaterthan(this.rhs.evaluate(c));\r\n    };\r\n\r\n    GreaterThanOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" > \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    // LessThanOrEqualOperation //////////////////////////////////////////////////\r\n\r\n    LessThanOrEqualOperation.prototype = new BinaryOperation();\r\n    LessThanOrEqualOperation.prototype.constructor = LessThanOrEqualOperation;\r\n    LessThanOrEqualOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function LessThanOrEqualOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    LessThanOrEqualOperation.prototype.init = function (lhs, rhs) {\r\n        LessThanOrEqualOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    LessThanOrEqualOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).lessthanorequal(this.rhs.evaluate(c));\r\n    };\r\n\r\n    LessThanOrEqualOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" <= \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    // GreaterThanOrEqualOperation ///////////////////////////////////////////////\r\n\r\n    GreaterThanOrEqualOperation.prototype = new BinaryOperation();\r\n    GreaterThanOrEqualOperation.prototype.constructor = GreaterThanOrEqualOperation;\r\n    GreaterThanOrEqualOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function GreaterThanOrEqualOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    GreaterThanOrEqualOperation.prototype.init = function (lhs, rhs) {\r\n        GreaterThanOrEqualOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    GreaterThanOrEqualOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).greaterthanorequal(this.rhs.evaluate(c));\r\n    };\r\n\r\n    GreaterThanOrEqualOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" >= \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    // PlusOperation /////////////////////////////////////////////////////////////\r\n\r\n    PlusOperation.prototype = new BinaryOperation();\r\n    PlusOperation.prototype.constructor = PlusOperation;\r\n    PlusOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function PlusOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    PlusOperation.prototype.init = function (lhs, rhs) {\r\n        PlusOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    PlusOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).number().plus(this.rhs.evaluate(c).number());\r\n    };\r\n\r\n    PlusOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" + \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    // MinusOperation ////////////////////////////////////////////////////////////\r\n\r\n    MinusOperation.prototype = new BinaryOperation();\r\n    MinusOperation.prototype.constructor = MinusOperation;\r\n    MinusOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function MinusOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    MinusOperation.prototype.init = function (lhs, rhs) {\r\n        MinusOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    MinusOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).number().minus(this.rhs.evaluate(c).number());\r\n    };\r\n\r\n    MinusOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" - \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    // MultiplyOperation /////////////////////////////////////////////////////////\r\n\r\n    MultiplyOperation.prototype = new BinaryOperation();\r\n    MultiplyOperation.prototype.constructor = MultiplyOperation;\r\n    MultiplyOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function MultiplyOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    MultiplyOperation.prototype.init = function (lhs, rhs) {\r\n        MultiplyOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    MultiplyOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).number().multiply(this.rhs.evaluate(c).number());\r\n    };\r\n\r\n    MultiplyOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" * \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    // DivOperation //////////////////////////////////////////////////////////////\r\n\r\n    DivOperation.prototype = new BinaryOperation();\r\n    DivOperation.prototype.constructor = DivOperation;\r\n    DivOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function DivOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    DivOperation.prototype.init = function (lhs, rhs) {\r\n        DivOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    DivOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).number().div(this.rhs.evaluate(c).number());\r\n    };\r\n\r\n    DivOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" div \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    // ModOperation //////////////////////////////////////////////////////////////\r\n\r\n    ModOperation.prototype = new BinaryOperation();\r\n    ModOperation.prototype.constructor = ModOperation;\r\n    ModOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function ModOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    ModOperation.prototype.init = function (lhs, rhs) {\r\n        ModOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    ModOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).number().mod(this.rhs.evaluate(c).number());\r\n    };\r\n\r\n    ModOperation.prototype.toString = function () {\r\n        return \"(\" + this.lhs.toString() + \" mod \" + this.rhs.toString() + \")\";\r\n    };\r\n\r\n    // BarOperation //////////////////////////////////////////////////////////////\r\n\r\n    BarOperation.prototype = new BinaryOperation();\r\n    BarOperation.prototype.constructor = BarOperation;\r\n    BarOperation.superclass = BinaryOperation.prototype;\r\n\r\n    function BarOperation(lhs, rhs) {\r\n        if (arguments.length > 0) {\r\n            this.init(lhs, rhs);\r\n        }\r\n    }\r\n\r\n    BarOperation.prototype.init = function (lhs, rhs) {\r\n        BarOperation.superclass.init.call(this, lhs, rhs);\r\n    };\r\n\r\n    BarOperation.prototype.evaluate = function (c) {\r\n        return this.lhs.evaluate(c).nodeset().union(this.rhs.evaluate(c).nodeset());\r\n    };\r\n\r\n    BarOperation.prototype.toString = function () {\r\n        return map(toString, [this.lhs, this.rhs]).join(' | ');\r\n    };\r\n\r\n    // PathExpr //////////////////////////////////////////////////////////////////\r\n\r\n    PathExpr.prototype = new Expression();\r\n    PathExpr.prototype.constructor = PathExpr;\r\n    PathExpr.superclass = Expression.prototype;\r\n\r\n    function PathExpr(filter, filterPreds, locpath) {\r\n        if (arguments.length > 0) {\r\n            this.init(filter, filterPreds, locpath);\r\n        }\r\n    }\r\n\r\n    PathExpr.prototype.init = function (filter, filterPreds, locpath) {\r\n        PathExpr.superclass.init.call(this);\r\n        this.filter = filter;\r\n        this.filterPredicates = filterPreds;\r\n        this.locationPath = locpath;\r\n    };\r\n\r\n    /**\r\n     * Returns the topmost node of the tree containing node\r\n     */\r\n    function findRoot(node) {\r\n        while (node && node.parentNode) {\r\n            node = node.parentNode;\r\n        }\r\n\r\n        return node;\r\n    }\r\n\r\n    var applyPredicates = function (predicates, c, nodes, reverse) {\r\n        if (predicates.length === 0) {\r\n            return nodes;\r\n        }\r\n\r\n        var ctx = c.extend({});\r\n\r\n        return reduce(\r\n            function (inNodes, pred) {\r\n                ctx.contextSize = inNodes.length;\r\n\r\n                return filter(\r\n                    function (node, i) {\r\n                        ctx.contextNode = node;\r\n                        ctx.contextPosition = i + 1;\r\n\r\n                        return PathExpr.predicateMatches(pred, ctx);\r\n                    },\r\n                    inNodes\r\n                );\r\n            },\r\n            sortNodes(nodes, reverse),\r\n            predicates\r\n        );\r\n    };\r\n\r\n    PathExpr.getRoot = function (xpc, nodes) {\r\n        var firstNode = nodes[0];\r\n\r\n        // xpc.virtualRoot could possibly provide a root even if firstNode is null,\r\n        // so using a guard here instead of throwing.\r\n        if (firstNode && firstNode.nodeType === NodeTypes.DOCUMENT_NODE) {\r\n            return firstNode;\r\n        }\r\n\r\n        if (xpc.virtualRoot) {\r\n            return xpc.virtualRoot;\r\n        }\r\n\r\n        if (!firstNode) {\r\n            throw new Error('Context node not found when determining document root.');\r\n        }\r\n\r\n        var ownerDoc = firstNode.ownerDocument;\r\n\r\n        if (ownerDoc) {\r\n            return ownerDoc;\r\n        }\r\n\r\n        // IE 5.5 doesn't have ownerDocument?\r\n        var n = firstNode;\r\n        while (n.parentNode != null) {\r\n            n = n.parentNode;\r\n        }\r\n        return n;\r\n    }\r\n\r\n    var getPrefixForNamespaceNode = function (attrNode) {\r\n        var nm = String(attrNode.name);\r\n\r\n        if (nm === \"xmlns\") {\r\n            return \"\";\r\n        }\r\n\r\n        if (nm.substring(0, 6) === \"xmlns:\") {\r\n            return nm.substring(6, nm.length);\r\n        }\r\n\r\n        return null;\r\n    };\r\n\r\n    PathExpr.applyStep = function (step, xpc, node) {\r\n        if (!node) {\r\n            throw new Error('Context node not found when evaluating XPath step: ' + step);\r\n        }\r\n\r\n        var newNodes = [];\r\n        xpc.contextNode = node;\r\n\r\n        switch (step.axis) {\r\n            case Step.ANCESTOR:\r\n                // look at all the ancestor nodes\r\n                if (xpc.contextNode === xpc.virtualRoot) {\r\n                    break;\r\n                }\r\n                var m;\r\n                if (xpc.contextNode.nodeType == NodeTypes.ATTRIBUTE_NODE) {\r\n                    m = PathExpr.getOwnerElement(xpc.contextNode);\r\n                } else {\r\n                    m = xpc.contextNode.parentNode;\r\n                }\r\n                while (m != null) {\r\n                    if (step.nodeTest.matches(m, xpc)) {\r\n                        newNodes.push(m);\r\n                    }\r\n                    if (m === xpc.virtualRoot) {\r\n                        break;\r\n                    }\r\n                    m = m.parentNode;\r\n                }\r\n                break;\r\n\r\n            case Step.ANCESTORORSELF:\r\n                // look at all the ancestor nodes and the current node\r\n                for (var m = xpc.contextNode; m != null; m = m.nodeType == NodeTypes.ATTRIBUTE_NODE ? PathExpr.getOwnerElement(m) : m.parentNode) {\r\n                    if (step.nodeTest.matches(m, xpc)) {\r\n                        newNodes.push(m);\r\n                    }\r\n                    if (m === xpc.virtualRoot) {\r\n                        break;\r\n                    }\r\n                }\r\n                break;\r\n\r\n            case Step.ATTRIBUTE:\r\n                // look at the attributes\r\n                var nnm = xpc.contextNode.attributes;\r\n                if (nnm != null) {\r\n                    for (var k = 0; k < nnm.length; k++) {\r\n                        var m = nnm.item(k);\r\n                        if (step.nodeTest.matches(m, xpc)) {\r\n                            newNodes.push(m);\r\n                        }\r\n                    }\r\n                }\r\n                break;\r\n\r\n            case Step.CHILD:\r\n                // look at all child elements\r\n                for (var m = xpc.contextNode.firstChild; m != null; m = m.nextSibling) {\r\n                    if (step.nodeTest.matches(m, xpc)) {\r\n                        newNodes.push(m);\r\n                    }\r\n                }\r\n                break;\r\n\r\n            case Step.DESCENDANT:\r\n                // look at all descendant nodes\r\n                var st = [xpc.contextNode.firstChild];\r\n                while (st.length > 0) {\r\n                    for (var m = st.pop(); m != null;) {\r\n                        if (step.nodeTest.matches(m, xpc)) {\r\n                            newNodes.push(m);\r\n                        }\r\n                        if (m.firstChild != null) {\r\n                            st.push(m.nextSibling);\r\n                            m = m.firstChild;\r\n                        } else {\r\n                            m = m.nextSibling;\r\n                        }\r\n                    }\r\n                }\r\n                break;\r\n\r\n            case Step.DESCENDANTORSELF:\r\n                // look at self\r\n                if (step.nodeTest.matches(xpc.contextNode, xpc)) {\r\n                    newNodes.push(xpc.contextNode);\r\n                }\r\n                // look at all descendant nodes\r\n                var st = [xpc.contextNode.firstChild];\r\n                while (st.length > 0) {\r\n                    for (var m = st.pop(); m != null;) {\r\n                        if (step.nodeTest.matches(m, xpc)) {\r\n                            newNodes.push(m);\r\n                        }\r\n                        if (m.firstChild != null) {\r\n                            st.push(m.nextSibling);\r\n                            m = m.firstChild;\r\n                        } else {\r\n                            m = m.nextSibling;\r\n                        }\r\n                    }\r\n                }\r\n                break;\r\n\r\n            case Step.FOLLOWING:\r\n                if (xpc.contextNode === xpc.virtualRoot) {\r\n                    break;\r\n                }\r\n                var st = [];\r\n                if (xpc.contextNode.firstChild != null) {\r\n                    st.unshift(xpc.contextNode.firstChild);\r\n                } else {\r\n                    st.unshift(xpc.contextNode.nextSibling);\r\n                }\r\n                for (var m = xpc.contextNode.parentNode; m != null && m.nodeType != NodeTypes.DOCUMENT_NODE && m !== xpc.virtualRoot; m = m.parentNode) {\r\n                    st.unshift(m.nextSibling);\r\n                }\r\n                do {\r\n                    for (var m = st.pop(); m != null;) {\r\n                        if (step.nodeTest.matches(m, xpc)) {\r\n                            newNodes.push(m);\r\n                        }\r\n                        if (m.firstChild != null) {\r\n                            st.push(m.nextSibling);\r\n                            m = m.firstChild;\r\n                        } else {\r\n                            m = m.nextSibling;\r\n                        }\r\n                    }\r\n                } while (st.length > 0);\r\n                break;\r\n\r\n            case Step.FOLLOWINGSIBLING:\r\n                if (xpc.contextNode === xpc.virtualRoot) {\r\n                    break;\r\n                }\r\n                for (var m = xpc.contextNode.nextSibling; m != null; m = m.nextSibling) {\r\n                    if (step.nodeTest.matches(m, xpc)) {\r\n                        newNodes.push(m);\r\n                    }\r\n                }\r\n                break;\r\n\r\n            case Step.NAMESPACE:\r\n                var nodes = {};\r\n\r\n                if (xpc.contextNode.nodeType == NodeTypes.ELEMENT_NODE) {\r\n                    // BUG: This only collects the namespaces on the current node, but seemingly\r\n                    //      it should collect all those in scope\r\n                    nodes[\"xml\"] = new XPathNamespace(\"xml\", null, XPath.XML_NAMESPACE_URI, xpc.contextNode);\r\n\r\n                    for (var m = xpc.contextNode; m != null && m.nodeType == NodeTypes.ELEMENT_NODE; m = m.parentNode) {\r\n                        for (var k = 0; k < m.attributes.length; k++) {\r\n                            var attr = m.attributes.item(k);\r\n\r\n                            var pre = getPrefixForNamespaceNode(attr);\r\n\r\n                            if (pre != null && nodes[pre] == undefined) {\r\n                                nodes[pre] = new XPathNamespace(pre, attr, attr.value, xpc.contextNode);\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    for (var pre in nodes) {\r\n                        var node = nodes[pre];\r\n\r\n                        if (step.nodeTest.matches(node, xpc)) {\r\n                            newNodes.push(node);\r\n                        }\r\n                    }\r\n                }\r\n                break;\r\n\r\n            case Step.PARENT:\r\n                m = null;\r\n                if (xpc.contextNode !== xpc.virtualRoot) {\r\n                    if (xpc.contextNode.nodeType == NodeTypes.ATTRIBUTE_NODE) {\r\n                        m = PathExpr.getOwnerElement(xpc.contextNode);\r\n                    } else {\r\n                        m = xpc.contextNode.parentNode;\r\n                    }\r\n                }\r\n                if (m != null && step.nodeTest.matches(m, xpc)) {\r\n                    newNodes.push(m);\r\n                }\r\n                break;\r\n\r\n            case Step.PRECEDING:\r\n                var st;\r\n                if (xpc.virtualRoot != null) {\r\n                    st = [xpc.virtualRoot];\r\n                } else {\r\n                    // cannot rely on .ownerDocument because the node may be in a document fragment\r\n                    st = [findRoot(xpc.contextNode)];\r\n                }\r\n                outer: while (st.length > 0) {\r\n                    for (var m = st.pop(); m != null;) {\r\n                        if (m == xpc.contextNode) {\r\n                            break outer;\r\n                        }\r\n                        if (step.nodeTest.matches(m, xpc)) {\r\n                            newNodes.unshift(m);\r\n                        }\r\n                        if (m.firstChild != null) {\r\n                            st.push(m.nextSibling);\r\n                            m = m.firstChild;\r\n                        } else {\r\n                            m = m.nextSibling;\r\n                        }\r\n                    }\r\n                }\r\n                break;\r\n\r\n            case Step.PRECEDINGSIBLING:\r\n                if (xpc.contextNode === xpc.virtualRoot) {\r\n                    break;\r\n                }\r\n                for (var m = xpc.contextNode.previousSibling; m != null; m = m.previousSibling) {\r\n                    if (step.nodeTest.matches(m, xpc)) {\r\n                        newNodes.push(m);\r\n                    }\r\n                }\r\n                break;\r\n\r\n            case Step.SELF:\r\n                if (step.nodeTest.matches(xpc.contextNode, xpc)) {\r\n                    newNodes.push(xpc.contextNode);\r\n                }\r\n                break;\r\n\r\n            default:\r\n        }\r\n\r\n        return newNodes;\r\n    };\r\n\r\n    function applyStepWithPredicates(step, xpc, node) {\r\n        return applyPredicates(\r\n            step.predicates,\r\n            xpc,\r\n            PathExpr.applyStep(step, xpc, node),\r\n            includes(REVERSE_AXES, step.axis)\r\n        );\r\n    }\r\n\r\n    function applyStepToNodes(context, nodes, step) {\r\n        return flatten(\r\n            map(\r\n                applyStepWithPredicates.bind(null, step, context),\r\n                nodes\r\n            )\r\n        );\r\n    }\r\n\r\n    PathExpr.applySteps = function (steps, xpc, nodes) {\r\n        return reduce(\r\n            applyStepToNodes.bind(null, xpc),\r\n            nodes,\r\n            steps\r\n        );\r\n    }\r\n\r\n    PathExpr.prototype.applyFilter = function (c, xpc) {\r\n        if (!this.filter) {\r\n            return { nodes: [c.contextNode] };\r\n        }\r\n\r\n        var ns = this.filter.evaluate(c);\r\n\r\n        if (!Utilities.instance_of(ns, XNodeSet)) {\r\n            if (this.filterPredicates != null && this.filterPredicates.length > 0 || this.locationPath != null) {\r\n                throw new Error(\"Path expression filter must evaluate to a nodeset if predicates or location path are used\");\r\n            }\r\n\r\n            return { nonNodes: ns };\r\n        }\r\n\r\n        return {\r\n            nodes: applyPredicates(\r\n                this.filterPredicates || [],\r\n                xpc,\r\n                ns.toUnsortedArray(),\r\n                false // reverse\r\n            )\r\n        };\r\n    };\r\n\r\n    PathExpr.applyLocationPath = function (locationPath, xpc, nodes) {\r\n        if (!locationPath) {\r\n            return nodes;\r\n        }\r\n\r\n        var startNodes = locationPath.absolute ? [PathExpr.getRoot(xpc, nodes)] : nodes;\r\n\r\n        return PathExpr.applySteps(locationPath.steps, xpc, startNodes);\r\n    };\r\n\r\n    PathExpr.prototype.evaluate = function (c) {\r\n        var xpc = assign(new XPathContext(), c);\r\n\r\n        var filterResult = this.applyFilter(c, xpc);\r\n\r\n        if ('nonNodes' in filterResult) {\r\n            return filterResult.nonNodes;\r\n        }\r\n\r\n        var ns = new XNodeSet();\r\n        ns.addArray(PathExpr.applyLocationPath(this.locationPath, xpc, filterResult.nodes));\r\n        return ns;\r\n    };\r\n\r\n    PathExpr.predicateMatches = function (pred, c) {\r\n        var res = pred.evaluate(c);\r\n\r\n        return Utilities.instance_of(res, XNumber)\r\n            ? c.contextPosition === res.numberValue()\r\n            : res.booleanValue();\r\n    };\r\n\r\n    PathExpr.predicateString = function (predicate) {\r\n        return wrap('[', ']', predicate.toString());\r\n    }\r\n\r\n    PathExpr.predicatesString = function (predicates) {\r\n        return join(\r\n            '',\r\n            map(PathExpr.predicateString, predicates)\r\n        );\r\n    }\r\n\r\n    PathExpr.prototype.toString = function () {\r\n        if (this.filter != undefined) {\r\n            var filterStr = toString(this.filter);\r\n\r\n            if (Utilities.instance_of(this.filter, XString)) {\r\n                return wrap(\"'\", \"'\", filterStr);\r\n            }\r\n            if (this.filterPredicates != undefined && this.filterPredicates.length) {\r\n                return wrap('(', ')', filterStr) +\r\n                    PathExpr.predicatesString(this.filterPredicates);\r\n            }\r\n            if (this.locationPath != undefined) {\r\n                return filterStr +\r\n                    (this.locationPath.absolute ? '' : '/') +\r\n                    toString(this.locationPath);\r\n            }\r\n\r\n            return filterStr;\r\n        }\r\n\r\n        return toString(this.locationPath);\r\n    };\r\n\r\n    PathExpr.getOwnerElement = function (n) {\r\n        // DOM 2 has ownerElement\r\n        if (n.ownerElement) {\r\n            return n.ownerElement;\r\n        }\r\n        // DOM 1 Internet Explorer can use selectSingleNode (ironically)\r\n        try {\r\n            if (n.selectSingleNode) {\r\n                return n.selectSingleNode(\"..\");\r\n            }\r\n        } catch (e) {\r\n        }\r\n        // Other DOM 1 implementations must use this egregious search\r\n        var doc = n.nodeType == NodeTypes.DOCUMENT_NODE\r\n            ? n\r\n            : n.ownerDocument;\r\n        var elts = doc.getElementsByTagName(\"*\");\r\n        for (var i = 0; i < elts.length; i++) {\r\n            var elt = elts.item(i);\r\n            var nnm = elt.attributes;\r\n            for (var j = 0; j < nnm.length; j++) {\r\n                var an = nnm.item(j);\r\n                if (an === n) {\r\n                    return elt;\r\n                }\r\n            }\r\n        }\r\n        return null;\r\n    };\r\n\r\n    // LocationPath //////////////////////////////////////////////////////////////\r\n\r\n    LocationPath.prototype = new Object();\r\n    LocationPath.prototype.constructor = LocationPath;\r\n    LocationPath.superclass = Object.prototype;\r\n\r\n    function LocationPath(abs, steps) {\r\n        if (arguments.length > 0) {\r\n            this.init(abs, steps);\r\n        }\r\n    }\r\n\r\n    LocationPath.prototype.init = function (abs, steps) {\r\n        this.absolute = abs;\r\n        this.steps = steps;\r\n    };\r\n\r\n    LocationPath.prototype.toString = function () {\r\n        return (\r\n            (this.absolute ? '/' : '') +\r\n            map(toString, this.steps).join('/')\r\n        );\r\n    };\r\n\r\n    // Step //////////////////////////////////////////////////////////////////////\r\n\r\n    Step.prototype = new Object();\r\n    Step.prototype.constructor = Step;\r\n    Step.superclass = Object.prototype;\r\n\r\n    function Step(axis, nodetest, preds) {\r\n        if (arguments.length > 0) {\r\n            this.init(axis, nodetest, preds);\r\n        }\r\n    }\r\n\r\n    Step.prototype.init = function (axis, nodetest, preds) {\r\n        this.axis = axis;\r\n        this.nodeTest = nodetest;\r\n        this.predicates = preds;\r\n    };\r\n\r\n    Step.prototype.toString = function () {\r\n        return Step.STEPNAMES[this.axis] +\r\n            \"::\" +\r\n            this.nodeTest.toString() +\r\n            PathExpr.predicatesString(this.predicates);\r\n    };\r\n\r\n\r\n    Step.ANCESTOR = 0;\r\n    Step.ANCESTORORSELF = 1;\r\n    Step.ATTRIBUTE = 2;\r\n    Step.CHILD = 3;\r\n    Step.DESCENDANT = 4;\r\n    Step.DESCENDANTORSELF = 5;\r\n    Step.FOLLOWING = 6;\r\n    Step.FOLLOWINGSIBLING = 7;\r\n    Step.NAMESPACE = 8;\r\n    Step.PARENT = 9;\r\n    Step.PRECEDING = 10;\r\n    Step.PRECEDINGSIBLING = 11;\r\n    Step.SELF = 12;\r\n\r\n    Step.STEPNAMES = reduce(function (acc, x) { return acc[x[0]] = x[1], acc; }, {}, [\r\n        [Step.ANCESTOR, 'ancestor'],\r\n        [Step.ANCESTORORSELF, 'ancestor-or-self'],\r\n        [Step.ATTRIBUTE, 'attribute'],\r\n        [Step.CHILD, 'child'],\r\n        [Step.DESCENDANT, 'descendant'],\r\n        [Step.DESCENDANTORSELF, 'descendant-or-self'],\r\n        [Step.FOLLOWING, 'following'],\r\n        [Step.FOLLOWINGSIBLING, 'following-sibling'],\r\n        [Step.NAMESPACE, 'namespace'],\r\n        [Step.PARENT, 'parent'],\r\n        [Step.PRECEDING, 'preceding'],\r\n        [Step.PRECEDINGSIBLING, 'preceding-sibling'],\r\n        [Step.SELF, 'self']\r\n    ]);\r\n\r\n    var REVERSE_AXES = [\r\n        Step.ANCESTOR,\r\n        Step.ANCESTORORSELF,\r\n        Step.PARENT,\r\n        Step.PRECEDING,\r\n        Step.PRECEDINGSIBLING\r\n    ];\r\n\r\n    // NodeTest //////////////////////////////////////////////////////////////////\r\n\r\n    NodeTest.prototype = new Object();\r\n    NodeTest.prototype.constructor = NodeTest;\r\n    NodeTest.superclass = Object.prototype;\r\n\r\n    function NodeTest(type, value) {\r\n        if (arguments.length > 0) {\r\n            this.init(type, value);\r\n        }\r\n    }\r\n\r\n    NodeTest.prototype.init = function (type, value) {\r\n        this.type = type;\r\n        this.value = value;\r\n    };\r\n\r\n    NodeTest.prototype.toString = function () {\r\n        return \"<unknown nodetest type>\";\r\n    };\r\n\r\n    NodeTest.prototype.matches = function (n, xpc) {\r\n        console.warn('unknown node test type');\r\n    };\r\n\r\n    NodeTest.NAMETESTANY = 0;\r\n    NodeTest.NAMETESTPREFIXANY = 1;\r\n    NodeTest.NAMETESTQNAME = 2;\r\n    NodeTest.COMMENT = 3;\r\n    NodeTest.TEXT = 4;\r\n    NodeTest.PI = 5;\r\n    NodeTest.NODE = 6;\r\n\r\n    NodeTest.isNodeType = function (types) {\r\n        return function (node) {\r\n            return includes(types, node.nodeType);\r\n        };\r\n    };\r\n\r\n    NodeTest.makeNodeTestType = function (type, members, ctor) {\r\n        var newType = ctor || function () { };\r\n\r\n        newType.prototype = new NodeTest(type);\r\n        newType.prototype.constructor = newType;\r\n\r\n        assign(newType.prototype, members);\r\n\r\n        return newType;\r\n    };\r\n    // create invariant node test for certain node types\r\n    NodeTest.makeNodeTypeTest = function (type, nodeTypes, stringVal) {\r\n        return new (NodeTest.makeNodeTestType(type, {\r\n            matches: NodeTest.isNodeType(nodeTypes),\r\n            toString: always(stringVal)\r\n        }))();\r\n    };\r\n\r\n    NodeTest.hasPrefix = function (node) {\r\n        return node.prefix || (node.nodeName || node.tagName).indexOf(':') !== -1;\r\n    };\r\n\r\n    NodeTest.isElementOrAttribute = NodeTest.isNodeType([1, 2]);\r\n    NodeTest.nameSpaceMatches = function (prefix, xpc, n) {\r\n        var nNamespace = (n.namespaceURI || '');\r\n\r\n        if (!prefix) {\r\n            return !nNamespace || (xpc.allowAnyNamespaceForNoPrefix && !NodeTest.hasPrefix(n));\r\n        }\r\n\r\n        var ns = xpc.namespaceResolver.getNamespace(prefix, xpc.expressionContextNode);\r\n\r\n        if (ns == null) {\r\n            throw new Error(\"Cannot resolve QName \" + prefix);\r\n        }\r\n\r\n        return ns === nNamespace;\r\n    };\r\n    NodeTest.localNameMatches = function (localName, xpc, n) {\r\n        var nLocalName = (n.localName || n.nodeName);\r\n\r\n        return xpc.caseInsensitive\r\n            ? localName.toLowerCase() === nLocalName.toLowerCase()\r\n            : localName === nLocalName;\r\n    };\r\n\r\n    NodeTest.NameTestPrefixAny = NodeTest.makeNodeTestType(\r\n        NodeTest.NAMETESTPREFIXANY,\r\n        {\r\n            matches: function (n, xpc) {\r\n                return NodeTest.isElementOrAttribute(n) &&\r\n                    NodeTest.nameSpaceMatches(this.prefix, xpc, n);\r\n            },\r\n            toString: function () {\r\n                return this.prefix + \":*\";\r\n            }\r\n        },\r\n        function NameTestPrefixAny(prefix) { this.prefix = prefix; }\r\n    );\r\n\r\n    NodeTest.NameTestQName = NodeTest.makeNodeTestType(\r\n        NodeTest.NAMETESTQNAME,\r\n        {\r\n            matches: function (n, xpc) {\r\n                return NodeTest.isNodeType(\r\n                    [\r\n                        NodeTypes.ELEMENT_NODE,\r\n                        NodeTypes.ATTRIBUTE_NODE,\r\n                        NodeTypes.NAMESPACE_NODE,\r\n                    ]\r\n                )(n) &&\r\n                    NodeTest.nameSpaceMatches(this.prefix, xpc, n) &&\r\n                    NodeTest.localNameMatches(this.localName, xpc, n);\r\n            },\r\n            toString: function () {\r\n                return this.name;\r\n            }\r\n        },\r\n        function NameTestQName(name) {\r\n            var nameParts = name.split(':');\r\n\r\n            this.name = name;\r\n            this.prefix = nameParts.length > 1 ? nameParts[0] : null;\r\n            this.localName = nameParts[nameParts.length > 1 ? 1 : 0];\r\n        }\r\n    );\r\n\r\n    NodeTest.PITest = NodeTest.makeNodeTestType(NodeTest.PI, {\r\n        matches: function (n, xpc) {\r\n            return NodeTest.isNodeType(\r\n                [NodeTypes.PROCESSING_INSTRUCTION_NODE]\r\n            )(n) &&\r\n                (n.target || n.nodeName) === this.name;\r\n        },\r\n        toString: function () {\r\n            return wrap('processing-instruction(\"', '\")', this.name);\r\n        }\r\n    }, function (name) { this.name = name; })\r\n\r\n    // singletons\r\n\r\n    // elements, attributes, namespaces\r\n    NodeTest.nameTestAny = NodeTest.makeNodeTypeTest(\r\n        NodeTest.NAMETESTANY,\r\n        [\r\n            NodeTypes.ELEMENT_NODE,\r\n            NodeTypes.ATTRIBUTE_NODE,\r\n            NodeTypes.NAMESPACE_NODE,\r\n        ],\r\n        '*'\r\n    );\r\n    // text, cdata\r\n    NodeTest.textTest = NodeTest.makeNodeTypeTest(\r\n        NodeTest.TEXT,\r\n        [\r\n            NodeTypes.TEXT_NODE,\r\n            NodeTypes.CDATA_SECTION_NODE,\r\n        ],\r\n        'text()'\r\n    );\r\n    NodeTest.commentTest = NodeTest.makeNodeTypeTest(\r\n        NodeTest.COMMENT,\r\n        [NodeTypes.COMMENT_NODE],\r\n        'comment()'\r\n    );\r\n    // elements, attributes, text, cdata, PIs, comments, document nodes\r\n    NodeTest.nodeTest = NodeTest.makeNodeTypeTest(\r\n        NodeTest.NODE,\r\n        [\r\n            NodeTypes.ELEMENT_NODE,\r\n            NodeTypes.ATTRIBUTE_NODE,\r\n            NodeTypes.TEXT_NODE,\r\n            NodeTypes.CDATA_SECTION_NODE,\r\n            NodeTypes.PROCESSING_INSTRUCTION_NODE,\r\n            NodeTypes.COMMENT_NODE,\r\n            NodeTypes.DOCUMENT_NODE,\r\n        ],\r\n        'node()'\r\n    );\r\n    NodeTest.anyPiTest = NodeTest.makeNodeTypeTest(\r\n        NodeTest.PI,\r\n        [NodeTypes.PROCESSING_INSTRUCTION_NODE],\r\n        'processing-instruction()'\r\n    );\r\n\r\n    // VariableReference /////////////////////////////////////////////////////////\r\n\r\n    VariableReference.prototype = new Expression();\r\n    VariableReference.prototype.constructor = VariableReference;\r\n    VariableReference.superclass = Expression.prototype;\r\n\r\n    function VariableReference(v) {\r\n        if (arguments.length > 0) {\r\n            this.init(v);\r\n        }\r\n    }\r\n\r\n    VariableReference.prototype.init = function (v) {\r\n        this.variable = v;\r\n    };\r\n\r\n    VariableReference.prototype.toString = function () {\r\n        return \"$\" + this.variable;\r\n    };\r\n\r\n    VariableReference.prototype.evaluate = function (c) {\r\n        var parts = Utilities.resolveQName(this.variable, c.namespaceResolver, c.contextNode, false);\r\n\r\n        if (parts[0] == null) {\r\n            throw new Error(\"Cannot resolve QName \" + fn);\r\n        }\r\n        var result = c.variableResolver.getVariable(parts[1], parts[0]);\r\n        if (!result) {\r\n            throw XPathException.fromMessage(\"Undeclared variable: \" + this.toString());\r\n        }\r\n        return result;\r\n    };\r\n\r\n    // FunctionCall //////////////////////////////////////////////////////////////\r\n\r\n    FunctionCall.prototype = new Expression();\r\n    FunctionCall.prototype.constructor = FunctionCall;\r\n    FunctionCall.superclass = Expression.prototype;\r\n\r\n    function FunctionCall(fn, args) {\r\n        if (arguments.length > 0) {\r\n            this.init(fn, args);\r\n        }\r\n    }\r\n\r\n    FunctionCall.prototype.init = function (fn, args) {\r\n        this.functionName = fn;\r\n        this.arguments = args;\r\n    };\r\n\r\n    FunctionCall.prototype.toString = function () {\r\n        var s = this.functionName + \"(\";\r\n        for (var i = 0; i < this.arguments.length; i++) {\r\n            if (i > 0) {\r\n                s += \", \";\r\n            }\r\n            s += this.arguments[i].toString();\r\n        }\r\n        return s + \")\";\r\n    };\r\n\r\n    FunctionCall.prototype.evaluate = function (c) {\r\n        var f = FunctionResolver.getFunctionFromContext(this.functionName, c);\r\n\r\n        if (!f) {\r\n            throw new Error(\"Unknown function \" + this.functionName);\r\n        }\r\n\r\n        var a = [c].concat(this.arguments);\r\n        return f.apply(c.functionResolver.thisArg, a);\r\n    };\r\n\r\n    // Operators /////////////////////////////////////////////////////////////////\r\n\r\n    var Operators = new Object();\r\n\r\n    Operators.equals = function (l, r) {\r\n        return l.equals(r);\r\n    };\r\n\r\n    Operators.notequal = function (l, r) {\r\n        return l.notequal(r);\r\n    };\r\n\r\n    Operators.lessthan = function (l, r) {\r\n        return l.lessthan(r);\r\n    };\r\n\r\n    Operators.greaterthan = function (l, r) {\r\n        return l.greaterthan(r);\r\n    };\r\n\r\n    Operators.lessthanorequal = function (l, r) {\r\n        return l.lessthanorequal(r);\r\n    };\r\n\r\n    Operators.greaterthanorequal = function (l, r) {\r\n        return l.greaterthanorequal(r);\r\n    };\r\n\r\n    // XString ///////////////////////////////////////////////////////////////////\r\n\r\n    XString.prototype = new Expression();\r\n    XString.prototype.constructor = XString;\r\n    XString.superclass = Expression.prototype;\r\n\r\n    function XString(s) {\r\n        if (arguments.length > 0) {\r\n            this.init(s);\r\n        }\r\n    }\r\n\r\n    XString.prototype.init = function (s) {\r\n        this.str = String(s);\r\n    };\r\n\r\n    XString.prototype.toString = function () {\r\n        return this.str;\r\n    };\r\n\r\n    XString.prototype.evaluate = function (c) {\r\n        return this;\r\n    };\r\n\r\n    XString.prototype.string = function () {\r\n        return this;\r\n    };\r\n\r\n    XString.prototype.number = function () {\r\n        return new XNumber(this.str);\r\n    };\r\n\r\n    XString.prototype.bool = function () {\r\n        return new XBoolean(this.str);\r\n    };\r\n\r\n    XString.prototype.nodeset = function () {\r\n        throw new Error(\"Cannot convert string to nodeset\");\r\n    };\r\n\r\n    XString.prototype.stringValue = function () {\r\n        return this.str;\r\n    };\r\n\r\n    XString.prototype.numberValue = function () {\r\n        return this.number().numberValue();\r\n    };\r\n\r\n    XString.prototype.booleanValue = function () {\r\n        return this.bool().booleanValue();\r\n    };\r\n\r\n    XString.prototype.equals = function (r) {\r\n        if (Utilities.instance_of(r, XBoolean)) {\r\n            return this.bool().equals(r);\r\n        }\r\n        if (Utilities.instance_of(r, XNumber)) {\r\n            return this.number().equals(r);\r\n        }\r\n        if (Utilities.instance_of(r, XNodeSet)) {\r\n            return r.compareWithString(this, Operators.equals);\r\n        }\r\n        return new XBoolean(this.str == r.str);\r\n    };\r\n\r\n    XString.prototype.notequal = function (r) {\r\n        if (Utilities.instance_of(r, XBoolean)) {\r\n            return this.bool().notequal(r);\r\n        }\r\n        if (Utilities.instance_of(r, XNumber)) {\r\n            return this.number().notequal(r);\r\n        }\r\n        if (Utilities.instance_of(r, XNodeSet)) {\r\n            return r.compareWithString(this, Operators.notequal);\r\n        }\r\n        return new XBoolean(this.str != r.str);\r\n    };\r\n\r\n    XString.prototype.lessthan = function (r) {\r\n        return this.number().lessthan(r);\r\n    };\r\n\r\n    XString.prototype.greaterthan = function (r) {\r\n        return this.number().greaterthan(r);\r\n    };\r\n\r\n    XString.prototype.lessthanorequal = function (r) {\r\n        return this.number().lessthanorequal(r);\r\n    };\r\n\r\n    XString.prototype.greaterthanorequal = function (r) {\r\n        return this.number().greaterthanorequal(r);\r\n    };\r\n\r\n    // XNumber ///////////////////////////////////////////////////////////////////\r\n\r\n    XNumber.prototype = new Expression();\r\n    XNumber.prototype.constructor = XNumber;\r\n    XNumber.superclass = Expression.prototype;\r\n\r\n    function XNumber(n) {\r\n        if (arguments.length > 0) {\r\n            this.init(n);\r\n        }\r\n    }\r\n\r\n    XNumber.prototype.init = function (n) {\r\n        this.num = typeof n === \"string\" ? this.parse(n) : Number(n);\r\n    };\r\n\r\n    XNumber.prototype.numberFormat = /^\\s*-?[0-9]*\\.?[0-9]+\\s*$/;\r\n\r\n    XNumber.prototype.parse = function (s) {\r\n        // XPath representation of numbers is more restrictive than what Number() or parseFloat() allow\r\n        return this.numberFormat.test(s) ? parseFloat(s) : Number.NaN;\r\n    };\r\n\r\n    function padSmallNumber(numberStr) {\r\n        var parts = numberStr.split('e-');\r\n        var base = parts[0].replace('.', '');\r\n        var exponent = Number(parts[1]);\r\n\r\n        for (var i = 0; i < exponent - 1; i += 1) {\r\n            base = '0' + base;\r\n        }\r\n\r\n        return '0.' + base;\r\n    }\r\n\r\n    function padLargeNumber(numberStr) {\r\n        var parts = numberStr.split('e');\r\n        var base = parts[0].replace('.', '');\r\n        var exponent = Number(parts[1]);\r\n        var zerosToAppend = exponent + 1 - base.length;\r\n\r\n        for (var i = 0; i < zerosToAppend; i += 1) {\r\n            base += '0';\r\n        }\r\n\r\n        return base;\r\n    }\r\n\r\n    XNumber.prototype.toString = function () {\r\n        var strValue = this.num.toString();\r\n\r\n        if (strValue.indexOf('e-') !== -1) {\r\n            return padSmallNumber(strValue);\r\n        }\r\n\r\n        if (strValue.indexOf('e') !== -1) {\r\n            return padLargeNumber(strValue);\r\n        }\r\n\r\n        return strValue;\r\n    };\r\n\r\n    XNumber.prototype.evaluate = function (c) {\r\n        return this;\r\n    };\r\n\r\n    XNumber.prototype.string = function () {\r\n\r\n\r\n        return new XString(this.toString());\r\n    };\r\n\r\n    XNumber.prototype.number = function () {\r\n        return this;\r\n    };\r\n\r\n    XNumber.prototype.bool = function () {\r\n        return new XBoolean(this.num);\r\n    };\r\n\r\n    XNumber.prototype.nodeset = function () {\r\n        throw new Error(\"Cannot convert number to nodeset\");\r\n    };\r\n\r\n    XNumber.prototype.stringValue = function () {\r\n        return this.string().stringValue();\r\n    };\r\n\r\n    XNumber.prototype.numberValue = function () {\r\n        return this.num;\r\n    };\r\n\r\n    XNumber.prototype.booleanValue = function () {\r\n        return this.bool().booleanValue();\r\n    };\r\n\r\n    XNumber.prototype.negate = function () {\r\n        return new XNumber(-this.num);\r\n    };\r\n\r\n    XNumber.prototype.equals = function (r) {\r\n        if (Utilities.instance_of(r, XBoolean)) {\r\n            return this.bool().equals(r);\r\n        }\r\n        if (Utilities.instance_of(r, XString)) {\r\n            return this.equals(r.number());\r\n        }\r\n        if (Utilities.instance_of(r, XNodeSet)) {\r\n            return r.compareWithNumber(this, Operators.equals);\r\n        }\r\n        return new XBoolean(this.num == r.num);\r\n    };\r\n\r\n    XNumber.prototype.notequal = function (r) {\r\n        if (Utilities.instance_of(r, XBoolean)) {\r\n            return this.bool().notequal(r);\r\n        }\r\n        if (Utilities.instance_of(r, XString)) {\r\n            return this.notequal(r.number());\r\n        }\r\n        if (Utilities.instance_of(r, XNodeSet)) {\r\n            return r.compareWithNumber(this, Operators.notequal);\r\n        }\r\n        return new XBoolean(this.num != r.num);\r\n    };\r\n\r\n    XNumber.prototype.lessthan = function (r) {\r\n        if (Utilities.instance_of(r, XNodeSet)) {\r\n            return r.compareWithNumber(this, Operators.greaterthan);\r\n        }\r\n        if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n            return this.lessthan(r.number());\r\n        }\r\n        return new XBoolean(this.num < r.num);\r\n    };\r\n\r\n    XNumber.prototype.greaterthan = function (r) {\r\n        if (Utilities.instance_of(r, XNodeSet)) {\r\n            return r.compareWithNumber(this, Operators.lessthan);\r\n        }\r\n        if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n            return this.greaterthan(r.number());\r\n        }\r\n        return new XBoolean(this.num > r.num);\r\n    };\r\n\r\n    XNumber.prototype.lessthanorequal = function (r) {\r\n        if (Utilities.instance_of(r, XNodeSet)) {\r\n            return r.compareWithNumber(this, Operators.greaterthanorequal);\r\n        }\r\n        if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n            return this.lessthanorequal(r.number());\r\n        }\r\n        return new XBoolean(this.num <= r.num);\r\n    };\r\n\r\n    XNumber.prototype.greaterthanorequal = function (r) {\r\n        if (Utilities.instance_of(r, XNodeSet)) {\r\n            return r.compareWithNumber(this, Operators.lessthanorequal);\r\n        }\r\n        if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n            return this.greaterthanorequal(r.number());\r\n        }\r\n        return new XBoolean(this.num >= r.num);\r\n    };\r\n\r\n    XNumber.prototype.plus = function (r) {\r\n        return new XNumber(this.num + r.num);\r\n    };\r\n\r\n    XNumber.prototype.minus = function (r) {\r\n        return new XNumber(this.num - r.num);\r\n    };\r\n\r\n    XNumber.prototype.multiply = function (r) {\r\n        return new XNumber(this.num * r.num);\r\n    };\r\n\r\n    XNumber.prototype.div = function (r) {\r\n        return new XNumber(this.num / r.num);\r\n    };\r\n\r\n    XNumber.prototype.mod = function (r) {\r\n        return new XNumber(this.num % r.num);\r\n    };\r\n\r\n    // XBoolean //////////////////////////////////////////////////////////////////\r\n\r\n    XBoolean.prototype = new Expression();\r\n    XBoolean.prototype.constructor = XBoolean;\r\n    XBoolean.superclass = Expression.prototype;\r\n\r\n    function XBoolean(b) {\r\n        if (arguments.length > 0) {\r\n            this.init(b);\r\n        }\r\n    }\r\n\r\n    XBoolean.prototype.init = function (b) {\r\n        this.b = Boolean(b);\r\n    };\r\n\r\n    XBoolean.prototype.toString = function () {\r\n        return this.b.toString();\r\n    };\r\n\r\n    XBoolean.prototype.evaluate = function (c) {\r\n        return this;\r\n    };\r\n\r\n    XBoolean.prototype.string = function () {\r\n        return new XString(this.b);\r\n    };\r\n\r\n    XBoolean.prototype.number = function () {\r\n        return new XNumber(this.b);\r\n    };\r\n\r\n    XBoolean.prototype.bool = function () {\r\n        return this;\r\n    };\r\n\r\n    XBoolean.prototype.nodeset = function () {\r\n        throw new Error(\"Cannot convert boolean to nodeset\");\r\n    };\r\n\r\n    XBoolean.prototype.stringValue = function () {\r\n        return this.string().stringValue();\r\n    };\r\n\r\n    XBoolean.prototype.numberValue = function () {\r\n        return this.number().numberValue();\r\n    };\r\n\r\n    XBoolean.prototype.booleanValue = function () {\r\n        return this.b;\r\n    };\r\n\r\n    XBoolean.prototype.not = function () {\r\n        return new XBoolean(!this.b);\r\n    };\r\n\r\n    XBoolean.prototype.equals = function (r) {\r\n        if (Utilities.instance_of(r, XString) || Utilities.instance_of(r, XNumber)) {\r\n            return this.equals(r.bool());\r\n        }\r\n        if (Utilities.instance_of(r, XNodeSet)) {\r\n            return r.compareWithBoolean(this, Operators.equals);\r\n        }\r\n        return new XBoolean(this.b == r.b);\r\n    };\r\n\r\n    XBoolean.prototype.notequal = function (r) {\r\n        if (Utilities.instance_of(r, XString) || Utilities.instance_of(r, XNumber)) {\r\n            return this.notequal(r.bool());\r\n        }\r\n        if (Utilities.instance_of(r, XNodeSet)) {\r\n            return r.compareWithBoolean(this, Operators.notequal);\r\n        }\r\n        return new XBoolean(this.b != r.b);\r\n    };\r\n\r\n    XBoolean.prototype.lessthan = function (r) {\r\n        return this.number().lessthan(r);\r\n    };\r\n\r\n    XBoolean.prototype.greaterthan = function (r) {\r\n        return this.number().greaterthan(r);\r\n    };\r\n\r\n    XBoolean.prototype.lessthanorequal = function (r) {\r\n        return this.number().lessthanorequal(r);\r\n    };\r\n\r\n    XBoolean.prototype.greaterthanorequal = function (r) {\r\n        return this.number().greaterthanorequal(r);\r\n    };\r\n\r\n    XBoolean.true_ = new XBoolean(true);\r\n    XBoolean.false_ = new XBoolean(false);\r\n\r\n    // AVLTree ///////////////////////////////////////////////////////////////////\r\n\r\n    AVLTree.prototype = new Object();\r\n    AVLTree.prototype.constructor = AVLTree;\r\n    AVLTree.superclass = Object.prototype;\r\n\r\n    function AVLTree(n) {\r\n        this.init(n);\r\n    }\r\n\r\n    AVLTree.prototype.init = function (n) {\r\n        this.left = null;\r\n        this.right = null;\r\n        this.node = n;\r\n        this.depth = 1;\r\n    };\r\n\r\n    AVLTree.prototype.balance = function () {\r\n        var ldepth = this.left == null ? 0 : this.left.depth;\r\n        var rdepth = this.right == null ? 0 : this.right.depth;\r\n\r\n        if (ldepth > rdepth + 1) {\r\n            // LR or LL rotation\r\n            var lldepth = this.left.left == null ? 0 : this.left.left.depth;\r\n            var lrdepth = this.left.right == null ? 0 : this.left.right.depth;\r\n\r\n            if (lldepth < lrdepth) {\r\n                // LR rotation consists of a RR rotation of the left child\r\n                this.left.rotateRR();\r\n                // plus a LL rotation of this node, which happens anyway\r\n            }\r\n            this.rotateLL();\r\n        } else if (ldepth + 1 < rdepth) {\r\n            // RR or RL rorarion\r\n            var rrdepth = this.right.right == null ? 0 : this.right.right.depth;\r\n            var rldepth = this.right.left == null ? 0 : this.right.left.depth;\r\n\r\n            if (rldepth > rrdepth) {\r\n                // RR rotation consists of a LL rotation of the right child\r\n                this.right.rotateLL();\r\n                // plus a RR rotation of this node, which happens anyway\r\n            }\r\n            this.rotateRR();\r\n        }\r\n    };\r\n\r\n    AVLTree.prototype.rotateLL = function () {\r\n        // the left side is too long => rotate from the left (_not_ leftwards)\r\n        var nodeBefore = this.node;\r\n        var rightBefore = this.right;\r\n        this.node = this.left.node;\r\n        this.right = this.left;\r\n        this.left = this.left.left;\r\n        this.right.left = this.right.right;\r\n        this.right.right = rightBefore;\r\n        this.right.node = nodeBefore;\r\n        this.right.updateInNewLocation();\r\n        this.updateInNewLocation();\r\n    };\r\n\r\n    AVLTree.prototype.rotateRR = function () {\r\n        // the right side is too long => rotate from the right (_not_ rightwards)\r\n        var nodeBefore = this.node;\r\n        var leftBefore = this.left;\r\n        this.node = this.right.node;\r\n        this.left = this.right;\r\n        this.right = this.right.right;\r\n        this.left.right = this.left.left;\r\n        this.left.left = leftBefore;\r\n        this.left.node = nodeBefore;\r\n        this.left.updateInNewLocation();\r\n        this.updateInNewLocation();\r\n    };\r\n\r\n    AVLTree.prototype.updateInNewLocation = function () {\r\n        this.getDepthFromChildren();\r\n    };\r\n\r\n    AVLTree.prototype.getDepthFromChildren = function () {\r\n        this.depth = this.node == null ? 0 : 1;\r\n        if (this.left != null) {\r\n            this.depth = this.left.depth + 1;\r\n        }\r\n        if (this.right != null && this.depth <= this.right.depth) {\r\n            this.depth = this.right.depth + 1;\r\n        }\r\n    };\r\n\r\n    function nodeOrder(n1, n2) {\r\n        if (n1 === n2) {\r\n            return 0;\r\n        }\r\n\r\n        if (n1.compareDocumentPosition) {\r\n            var cpos = n1.compareDocumentPosition(n2);\r\n\r\n            if (cpos & 0x01) {\r\n                // not in the same document; return an arbitrary result (is there a better way to do this)\r\n                return 1;\r\n            }\r\n            if (cpos & 0x0A) {\r\n                // n2 precedes or contains n1\r\n                return 1;\r\n            }\r\n            if (cpos & 0x14) {\r\n                // n2 follows or is contained by n1\r\n                return -1;\r\n            }\r\n\r\n            return 0;\r\n        }\r\n\r\n        var d1 = 0,\r\n            d2 = 0;\r\n        for (var m1 = n1; m1 != null; m1 = m1.parentNode || m1.ownerElement) {\r\n            d1++;\r\n        }\r\n        for (var m2 = n2; m2 != null; m2 = m2.parentNode || m2.ownerElement) {\r\n            d2++;\r\n        }\r\n\r\n        // step up to same depth\r\n        if (d1 > d2) {\r\n            while (d1 > d2) {\r\n                n1 = n1.parentNode || n1.ownerElement;\r\n                d1--;\r\n            }\r\n            if (n1 === n2) {\r\n                return 1;\r\n            }\r\n        } else if (d2 > d1) {\r\n            while (d2 > d1) {\r\n                n2 = n2.parentNode || n2.ownerElement;\r\n                d2--;\r\n            }\r\n            if (n1 === n2) {\r\n                return -1;\r\n            }\r\n        }\r\n\r\n        var n1Par = n1.parentNode || n1.ownerElement,\r\n            n2Par = n2.parentNode || n2.ownerElement;\r\n\r\n        // find common parent\r\n        while (n1Par !== n2Par) {\r\n            n1 = n1Par;\r\n            n2 = n2Par;\r\n            n1Par = n1.parentNode || n1.ownerElement;\r\n            n2Par = n2.parentNode || n2.ownerElement;\r\n        }\r\n\r\n        var n1isAttr = isAttributeLike(n1);\r\n        var n2isAttr = isAttributeLike(n2);\r\n\r\n        if (n1isAttr && !n2isAttr) {\r\n            return -1;\r\n        }\r\n        if (!n1isAttr && n2isAttr) {\r\n            return 1;\r\n        }\r\n\r\n        // xml namespace node comes before others. namespace nodes before non-namespace nodes\r\n        if (n1.isXPathNamespace) {\r\n            if (n1.nodeValue === XPath.XML_NAMESPACE_URI) {\r\n                return -1;\r\n            }\r\n\r\n            if (!n2.isXPathNamespace) {\r\n                return -1;\r\n            }\r\n\r\n            if (n2.nodeValue === XPath.XML_NAMESPACE_URI) {\r\n                return 1;\r\n            }\r\n        } else if (n2.isXPathNamespace) {\r\n            return 1;\r\n        }\r\n\r\n        if (n1Par) {\r\n            var cn = n1isAttr ? n1Par.attributes : n1Par.childNodes;\r\n            var len = cn.length;\r\n            var n1Compare = n1.baseNode || n1;\r\n            var n2Compare = n2.baseNode || n2;\r\n\r\n            for (var i = 0; i < len; i += 1) {\r\n                var n = cn[i];\r\n                if (n === n1Compare) {\r\n                    return -1;\r\n                }\r\n                if (n === n2Compare) {\r\n                    return 1;\r\n                }\r\n            }\r\n        }\r\n\r\n        throw new Error('Unexpected: could not determine node order');\r\n    }\r\n\r\n    AVLTree.prototype.add = function (n) {\r\n        if (n === this.node) {\r\n            return false;\r\n        }\r\n\r\n        var o = nodeOrder(n, this.node);\r\n\r\n        var ret = false;\r\n        if (o == -1) {\r\n            if (this.left == null) {\r\n                this.left = new AVLTree(n);\r\n                ret = true;\r\n            } else {\r\n                ret = this.left.add(n);\r\n                if (ret) {\r\n                    this.balance();\r\n                }\r\n            }\r\n        } else if (o == 1) {\r\n            if (this.right == null) {\r\n                this.right = new AVLTree(n);\r\n                ret = true;\r\n            } else {\r\n                ret = this.right.add(n);\r\n                if (ret) {\r\n                    this.balance();\r\n                }\r\n            }\r\n        }\r\n\r\n        if (ret) {\r\n            this.getDepthFromChildren();\r\n        }\r\n        return ret;\r\n    };\r\n\r\n    // XNodeSet //////////////////////////////////////////////////////////////////\r\n\r\n    XNodeSet.prototype = new Expression();\r\n    XNodeSet.prototype.constructor = XNodeSet;\r\n    XNodeSet.superclass = Expression.prototype;\r\n\r\n    function XNodeSet() {\r\n        this.init();\r\n    }\r\n\r\n    XNodeSet.prototype.init = function () {\r\n        this.tree = null;\r\n        this.nodes = [];\r\n        this.size = 0;\r\n    };\r\n\r\n    XNodeSet.prototype.toString = function () {\r\n        var p = this.first();\r\n        if (p == null) {\r\n            return \"\";\r\n        }\r\n        return this.stringForNode(p);\r\n    };\r\n\r\n    XNodeSet.prototype.evaluate = function (c) {\r\n        return this;\r\n    };\r\n\r\n    XNodeSet.prototype.string = function () {\r\n        return new XString(this.toString());\r\n    };\r\n\r\n    XNodeSet.prototype.stringValue = function () {\r\n        return this.toString();\r\n    };\r\n\r\n    XNodeSet.prototype.number = function () {\r\n        return new XNumber(this.string());\r\n    };\r\n\r\n    XNodeSet.prototype.numberValue = function () {\r\n        return Number(this.string());\r\n    };\r\n\r\n    XNodeSet.prototype.bool = function () {\r\n        return new XBoolean(this.booleanValue());\r\n    };\r\n\r\n    XNodeSet.prototype.booleanValue = function () {\r\n        return !!this.size;\r\n    };\r\n\r\n    XNodeSet.prototype.nodeset = function () {\r\n        return this;\r\n    };\r\n\r\n    XNodeSet.prototype.stringForNode = function (n) {\r\n        if (n.nodeType == NodeTypes.DOCUMENT_NODE ||\r\n            n.nodeType == NodeTypes.ELEMENT_NODE ||\r\n            n.nodeType === NodeTypes.DOCUMENT_FRAGMENT_NODE) {\r\n            return this.stringForContainerNode(n);\r\n        }\r\n        if (n.nodeType === NodeTypes.ATTRIBUTE_NODE) {\r\n            return n.value || n.nodeValue;\r\n        }\r\n        if (n.isNamespaceNode) {\r\n            return n.namespace;\r\n        }\r\n        return n.nodeValue;\r\n    };\r\n\r\n    XNodeSet.prototype.stringForContainerNode = function (n) {\r\n        var s = \"\";\r\n        for (var n2 = n.firstChild; n2 != null; n2 = n2.nextSibling) {\r\n            var nt = n2.nodeType;\r\n            //  Element,    Text,       CDATA,      Document,   Document Fragment\r\n            if (nt === 1 || nt === 3 || nt === 4 || nt === 9 || nt === 11) {\r\n                s += this.stringForNode(n2);\r\n            }\r\n        }\r\n        return s;\r\n    };\r\n\r\n    XNodeSet.prototype.buildTree = function () {\r\n        if (!this.tree && this.nodes.length) {\r\n            this.tree = new AVLTree(this.nodes[0]);\r\n            for (var i = 1; i < this.nodes.length; i += 1) {\r\n                this.tree.add(this.nodes[i]);\r\n            }\r\n        }\r\n\r\n        return this.tree;\r\n    };\r\n\r\n    XNodeSet.prototype.first = function () {\r\n        var p = this.buildTree();\r\n        if (p == null) {\r\n            return null;\r\n        }\r\n        while (p.left != null) {\r\n            p = p.left;\r\n        }\r\n        return p.node;\r\n    };\r\n\r\n    XNodeSet.prototype.add = function (n) {\r\n        for (var i = 0; i < this.nodes.length; i += 1) {\r\n            if (n === this.nodes[i]) {\r\n                return;\r\n            }\r\n        }\r\n\r\n        this.tree = null;\r\n        this.nodes.push(n);\r\n        this.size += 1;\r\n    };\r\n\r\n    XNodeSet.prototype.addArray = function (ns) {\r\n        var self = this;\r\n\r\n        forEach(function (x) { self.add(x); }, ns);\r\n    };\r\n\r\n    /**\r\n     * Returns an array of the node set's contents in document order\r\n     */\r\n    XNodeSet.prototype.toArray = function () {\r\n        var a = [];\r\n        this.toArrayRec(this.buildTree(), a);\r\n        return a;\r\n    };\r\n\r\n    XNodeSet.prototype.toArrayRec = function (t, a) {\r\n        if (t != null) {\r\n            this.toArrayRec(t.left, a);\r\n            a.push(t.node);\r\n            this.toArrayRec(t.right, a);\r\n        }\r\n    };\r\n\r\n    /**\r\n     * Returns an array of the node set's contents in arbitrary order\r\n     */\r\n    XNodeSet.prototype.toUnsortedArray = function () {\r\n        return this.nodes.slice();\r\n    };\r\n\r\n    XNodeSet.prototype.compareWithString = function (r, o) {\r\n        var a = this.toUnsortedArray();\r\n        for (var i = 0; i < a.length; i++) {\r\n            var n = a[i];\r\n            var l = new XString(this.stringForNode(n));\r\n            var res = o(l, r);\r\n            if (res.booleanValue()) {\r\n                return res;\r\n            }\r\n        }\r\n        return new XBoolean(false);\r\n    };\r\n\r\n    XNodeSet.prototype.compareWithNumber = function (r, o) {\r\n        var a = this.toUnsortedArray();\r\n        for (var i = 0; i < a.length; i++) {\r\n            var n = a[i];\r\n            var l = new XNumber(this.stringForNode(n));\r\n            var res = o(l, r);\r\n            if (res.booleanValue()) {\r\n                return res;\r\n            }\r\n        }\r\n        return new XBoolean(false);\r\n    };\r\n\r\n    XNodeSet.prototype.compareWithBoolean = function (r, o) {\r\n        return o(this.bool(), r);\r\n    };\r\n\r\n    XNodeSet.prototype.compareWithNodeSet = function (r, o) {\r\n        var arr = this.toUnsortedArray();\r\n        var oInvert = function (lop, rop) { return o(rop, lop); };\r\n\r\n        for (var i = 0; i < arr.length; i++) {\r\n            var l = new XString(this.stringForNode(arr[i]));\r\n\r\n            var res = r.compareWithString(l, oInvert);\r\n            if (res.booleanValue()) {\r\n                return res;\r\n            }\r\n        }\r\n\r\n        return new XBoolean(false);\r\n    };\r\n\r\n    XNodeSet.compareWith = curry(function (o, r) {\r\n        if (Utilities.instance_of(r, XString)) {\r\n            return this.compareWithString(r, o);\r\n        }\r\n        if (Utilities.instance_of(r, XNumber)) {\r\n            return this.compareWithNumber(r, o);\r\n        }\r\n        if (Utilities.instance_of(r, XBoolean)) {\r\n            return this.compareWithBoolean(r, o);\r\n        }\r\n        return this.compareWithNodeSet(r, o);\r\n    });\r\n\r\n    XNodeSet.prototype.equals = XNodeSet.compareWith(Operators.equals);\r\n    XNodeSet.prototype.notequal = XNodeSet.compareWith(Operators.notequal);\r\n    XNodeSet.prototype.lessthan = XNodeSet.compareWith(Operators.lessthan);\r\n    XNodeSet.prototype.greaterthan = XNodeSet.compareWith(Operators.greaterthan);\r\n    XNodeSet.prototype.lessthanorequal = XNodeSet.compareWith(Operators.lessthanorequal);\r\n    XNodeSet.prototype.greaterthanorequal = XNodeSet.compareWith(Operators.greaterthanorequal);\r\n\r\n    XNodeSet.prototype.union = function (r) {\r\n        var ns = new XNodeSet();\r\n        ns.addArray(this.toUnsortedArray());\r\n        ns.addArray(r.toUnsortedArray());\r\n        return ns;\r\n    };\r\n\r\n    // XPathNamespace ////////////////////////////////////////////////////////////\r\n\r\n    XPathNamespace.prototype = new Object();\r\n    XPathNamespace.prototype.constructor = XPathNamespace;\r\n    XPathNamespace.superclass = Object.prototype;\r\n\r\n    function XPathNamespace(pre, node, uri, p) {\r\n        this.isXPathNamespace = true;\r\n        this.baseNode = node;\r\n        this.ownerDocument = p.ownerDocument;\r\n        this.nodeName = pre;\r\n        this.prefix = pre;\r\n        this.localName = pre;\r\n        this.namespaceURI = null;\r\n        this.nodeValue = uri;\r\n        this.ownerElement = p;\r\n        this.nodeType = NodeTypes.NAMESPACE_NODE;\r\n    }\r\n\r\n    XPathNamespace.prototype.toString = function () {\r\n        return \"{ \\\"\" + this.prefix + \"\\\", \\\"\" + this.namespaceURI + \"\\\" }\";\r\n    };\r\n\r\n    // XPathContext //////////////////////////////////////////////////////////////\r\n\r\n    XPathContext.prototype = new Object();\r\n    XPathContext.prototype.constructor = XPathContext;\r\n    XPathContext.superclass = Object.prototype;\r\n\r\n    function XPathContext(vr, nr, fr) {\r\n        this.variableResolver = vr != null ? vr : new VariableResolver();\r\n        this.namespaceResolver = nr != null ? nr : new NamespaceResolver();\r\n        this.functionResolver = fr != null ? fr : new FunctionResolver();\r\n    }\r\n\r\n    XPathContext.prototype.extend = function (newProps) {\r\n        return assign(new XPathContext(), this, newProps);\r\n    };\r\n\r\n    // VariableResolver //////////////////////////////////////////////////////////\r\n\r\n    VariableResolver.prototype = new Object();\r\n    VariableResolver.prototype.constructor = VariableResolver;\r\n    VariableResolver.superclass = Object.prototype;\r\n\r\n    function VariableResolver() {\r\n    }\r\n\r\n    VariableResolver.prototype.getVariable = function (ln, ns) {\r\n        return null;\r\n    };\r\n\r\n    // FunctionResolver //////////////////////////////////////////////////////////\r\n\r\n    FunctionResolver.prototype = new Object();\r\n    FunctionResolver.prototype.constructor = FunctionResolver;\r\n    FunctionResolver.superclass = Object.prototype;\r\n\r\n    function FunctionResolver(thisArg) {\r\n        this.thisArg = thisArg != null ? thisArg : Functions;\r\n        this.functions = new Object();\r\n        this.addStandardFunctions();\r\n    }\r\n\r\n    FunctionResolver.prototype.addStandardFunctions = function () {\r\n        this.functions[\"{}last\"] = Functions.last;\r\n        this.functions[\"{}position\"] = Functions.position;\r\n        this.functions[\"{}count\"] = Functions.count;\r\n        this.functions[\"{}id\"] = Functions.id;\r\n        this.functions[\"{}local-name\"] = Functions.localName;\r\n        this.functions[\"{}namespace-uri\"] = Functions.namespaceURI;\r\n        this.functions[\"{}name\"] = Functions.name;\r\n        this.functions[\"{}string\"] = Functions.string;\r\n        this.functions[\"{}concat\"] = Functions.concat;\r\n        this.functions[\"{}starts-with\"] = Functions.startsWith;\r\n        this.functions[\"{}contains\"] = Functions.contains;\r\n        this.functions[\"{}substring-before\"] = Functions.substringBefore;\r\n        this.functions[\"{}substring-after\"] = Functions.substringAfter;\r\n        this.functions[\"{}substring\"] = Functions.substring;\r\n        this.functions[\"{}string-length\"] = Functions.stringLength;\r\n        this.functions[\"{}normalize-space\"] = Functions.normalizeSpace;\r\n        this.functions[\"{}translate\"] = Functions.translate;\r\n        this.functions[\"{}boolean\"] = Functions.boolean_;\r\n        this.functions[\"{}not\"] = Functions.not;\r\n        this.functions[\"{}true\"] = Functions.true_;\r\n        this.functions[\"{}false\"] = Functions.false_;\r\n        this.functions[\"{}lang\"] = Functions.lang;\r\n        this.functions[\"{}number\"] = Functions.number;\r\n        this.functions[\"{}sum\"] = Functions.sum;\r\n        this.functions[\"{}floor\"] = Functions.floor;\r\n        this.functions[\"{}ceiling\"] = Functions.ceiling;\r\n        this.functions[\"{}round\"] = Functions.round;\r\n    };\r\n\r\n    FunctionResolver.prototype.addFunction = function (ns, ln, f) {\r\n        this.functions[\"{\" + ns + \"}\" + ln] = f;\r\n    };\r\n\r\n    FunctionResolver.getFunctionFromContext = function (qName, context) {\r\n        var parts = Utilities.resolveQName(qName, context.namespaceResolver, context.contextNode, false);\r\n\r\n        if (parts[0] === null) {\r\n            throw new Error(\"Cannot resolve QName \" + name);\r\n        }\r\n\r\n        return context.functionResolver.getFunction(parts[1], parts[0]);\r\n    };\r\n\r\n    FunctionResolver.prototype.getFunction = function (localName, namespace) {\r\n        return this.functions[\"{\" + namespace + \"}\" + localName];\r\n    };\r\n\r\n    // NamespaceResolver /////////////////////////////////////////////////////////\r\n\r\n    NamespaceResolver.prototype = new Object();\r\n    NamespaceResolver.prototype.constructor = NamespaceResolver;\r\n    NamespaceResolver.superclass = Object.prototype;\r\n\r\n    function NamespaceResolver() {\r\n    }\r\n\r\n    NamespaceResolver.prototype.getNamespace = function (prefix, n) {\r\n        if (prefix == \"xml\") {\r\n            return XPath.XML_NAMESPACE_URI;\r\n        } else if (prefix == \"xmlns\") {\r\n            return XPath.XMLNS_NAMESPACE_URI;\r\n        }\r\n        if (n.nodeType == NodeTypes.DOCUMENT_NODE) {\r\n            n = n.documentElement;\r\n        } else if (n.nodeType == NodeTypes.ATTRIBUTE_NODE) {\r\n            n = PathExpr.getOwnerElement(n);\r\n        } else if (n.nodeType != NodeTypes.ELEMENT_NODE) {\r\n            n = n.parentNode;\r\n        }\r\n        while (n != null && n.nodeType == NodeTypes.ELEMENT_NODE) {\r\n            var nnm = n.attributes;\r\n            for (var i = 0; i < nnm.length; i++) {\r\n                var a = nnm.item(i);\r\n                var aname = a.name || a.nodeName;\r\n                if ((aname === \"xmlns\" && prefix === \"\")\r\n                    || aname === \"xmlns:\" + prefix) {\r\n                    return String(a.value || a.nodeValue);\r\n                }\r\n            }\r\n            n = n.parentNode;\r\n        }\r\n        return null;\r\n    };\r\n\r\n    // Functions /////////////////////////////////////////////////////////////////\r\n\r\n    var Functions = new Object();\r\n\r\n    Functions.last = function (c) {\r\n        if (arguments.length != 1) {\r\n            throw new Error(\"Function last expects ()\");\r\n        }\r\n\r\n        return new XNumber(c.contextSize);\r\n    };\r\n\r\n    Functions.position = function (c) {\r\n        if (arguments.length != 1) {\r\n            throw new Error(\"Function position expects ()\");\r\n        }\r\n\r\n        return new XNumber(c.contextPosition);\r\n    };\r\n\r\n    Functions.count = function () {\r\n        var c = arguments[0];\r\n        var ns;\r\n        if (arguments.length != 2 || !Utilities.instance_of(ns = arguments[1].evaluate(c), XNodeSet)) {\r\n            throw new Error(\"Function count expects (node-set)\");\r\n        }\r\n        return new XNumber(ns.size);\r\n    };\r\n\r\n    Functions.id = function () {\r\n        var c = arguments[0];\r\n        var id;\r\n        if (arguments.length != 2) {\r\n            throw new Error(\"Function id expects (object)\");\r\n        }\r\n        id = arguments[1].evaluate(c);\r\n        if (Utilities.instance_of(id, XNodeSet)) {\r\n            id = id.toArray().join(\" \");\r\n        } else {\r\n            id = id.stringValue();\r\n        }\r\n        var ids = id.split(/[\\x0d\\x0a\\x09\\x20]+/);\r\n        var count = 0;\r\n        var ns = new XNodeSet();\r\n        var doc = c.contextNode.nodeType == NodeTypes.DOCUMENT_NODE\r\n            ? c.contextNode\r\n            : c.contextNode.ownerDocument;\r\n        for (var i = 0; i < ids.length; i++) {\r\n            var n;\r\n            if (doc.getElementById) {\r\n                n = doc.getElementById(ids[i]);\r\n            } else {\r\n                n = Utilities.getElementById(doc, ids[i]);\r\n            }\r\n            if (n != null) {\r\n                ns.add(n);\r\n                count++;\r\n            }\r\n        }\r\n        return ns;\r\n    };\r\n\r\n    Functions.localName = function (c, eNode) {\r\n        var n;\r\n\r\n        if (arguments.length == 1) {\r\n            n = c.contextNode;\r\n        } else if (arguments.length == 2) {\r\n            n = eNode.evaluate(c).first();\r\n        } else {\r\n            throw new Error(\"Function local-name expects (node-set?)\");\r\n        }\r\n\r\n        if (n == null) {\r\n            return new XString(\"\");\r\n        }\r\n\r\n        return new XString(\r\n            n.localName ||     //  standard elements and attributes\r\n            n.baseName ||     //  IE\r\n            n.target ||     //  processing instructions\r\n            n.nodeName ||     //  DOM1 elements\r\n            \"\"                 //  fallback\r\n        );\r\n    };\r\n\r\n    Functions.namespaceURI = function () {\r\n        var c = arguments[0];\r\n        var n;\r\n\r\n        if (arguments.length == 1) {\r\n            n = c.contextNode;\r\n        } else if (arguments.length == 2) {\r\n            n = arguments[1].evaluate(c).first();\r\n        } else {\r\n            throw new Error(\"Function namespace-uri expects (node-set?)\");\r\n        }\r\n\r\n        if (n == null) {\r\n            return new XString(\"\");\r\n        }\r\n        return new XString(n.namespaceURI || '');\r\n    };\r\n\r\n    Functions.name = function () {\r\n        var c = arguments[0];\r\n        var n;\r\n        if (arguments.length == 1) {\r\n            n = c.contextNode;\r\n        } else if (arguments.length == 2) {\r\n            n = arguments[1].evaluate(c).first();\r\n        } else {\r\n            throw new Error(\"Function name expects (node-set?)\");\r\n        }\r\n        if (n == null) {\r\n            return new XString(\"\");\r\n        }\r\n        if (n.nodeType == NodeTypes.ELEMENT_NODE) {\r\n            return new XString(n.nodeName);\r\n        } else if (n.nodeType == NodeTypes.ATTRIBUTE_NODE) {\r\n            return new XString(n.name || n.nodeName);\r\n        } else if (n.nodeType === NodeTypes.PROCESSING_INSTRUCTION_NODE) {\r\n            return new XString(n.target || n.nodeName);\r\n        } else if (n.localName == null) {\r\n            return new XString(\"\");\r\n        } else {\r\n            return new XString(n.localName);\r\n        }\r\n    };\r\n\r\n    Functions.string = function () {\r\n        var c = arguments[0];\r\n        if (arguments.length == 1) {\r\n            return new XString(XNodeSet.prototype.stringForNode(c.contextNode));\r\n        } else if (arguments.length == 2) {\r\n            return arguments[1].evaluate(c).string();\r\n        }\r\n        throw new Error(\"Function string expects (object?)\");\r\n    };\r\n\r\n    Functions.concat = function (c) {\r\n        if (arguments.length < 3) {\r\n            throw new Error(\"Function concat expects (string, string[, string]*)\");\r\n        }\r\n        var s = \"\";\r\n        for (var i = 1; i < arguments.length; i++) {\r\n            s += arguments[i].evaluate(c).stringValue();\r\n        }\r\n        return new XString(s);\r\n    };\r\n\r\n    Functions.startsWith = function () {\r\n        var c = arguments[0];\r\n        if (arguments.length != 3) {\r\n            throw new Error(\"Function startsWith expects (string, string)\");\r\n        }\r\n        var s1 = arguments[1].evaluate(c).stringValue();\r\n        var s2 = arguments[2].evaluate(c).stringValue();\r\n        return new XBoolean(s1.substring(0, s2.length) == s2);\r\n    };\r\n\r\n    Functions.contains = function () {\r\n        var c = arguments[0];\r\n        if (arguments.length != 3) {\r\n            throw new Error(\"Function contains expects (string, string)\");\r\n        }\r\n        var s1 = arguments[1].evaluate(c).stringValue();\r\n        var s2 = arguments[2].evaluate(c).stringValue();\r\n        return new XBoolean(s1.indexOf(s2) !== -1);\r\n    };\r\n\r\n    Functions.substringBefore = function () {\r\n        var c = arguments[0];\r\n        if (arguments.length != 3) {\r\n            throw new Error(\"Function substring-before expects (string, string)\");\r\n        }\r\n        var s1 = arguments[1].evaluate(c).stringValue();\r\n        var s2 = arguments[2].evaluate(c).stringValue();\r\n        return new XString(s1.substring(0, s1.indexOf(s2)));\r\n    };\r\n\r\n    Functions.substringAfter = function () {\r\n        var c = arguments[0];\r\n        if (arguments.length != 3) {\r\n            throw new Error(\"Function substring-after expects (string, string)\");\r\n        }\r\n        var s1 = arguments[1].evaluate(c).stringValue();\r\n        var s2 = arguments[2].evaluate(c).stringValue();\r\n        if (s2.length == 0) {\r\n            return new XString(s1);\r\n        }\r\n        var i = s1.indexOf(s2);\r\n        if (i == -1) {\r\n            return new XString(\"\");\r\n        }\r\n        return new XString(s1.substring(i + s2.length));\r\n    };\r\n\r\n    Functions.substring = function () {\r\n        var c = arguments[0];\r\n        if (!(arguments.length == 3 || arguments.length == 4)) {\r\n            throw new Error(\"Function substring expects (string, number, number?)\");\r\n        }\r\n        var s = arguments[1].evaluate(c).stringValue();\r\n        var n1 = Math.round(arguments[2].evaluate(c).numberValue()) - 1;\r\n        var n2 = arguments.length == 4 ? n1 + Math.round(arguments[3].evaluate(c).numberValue()) : undefined;\r\n        return new XString(s.substring(n1, n2));\r\n    };\r\n\r\n    Functions.stringLength = function () {\r\n        var c = arguments[0];\r\n        var s;\r\n        if (arguments.length == 1) {\r\n            s = XNodeSet.prototype.stringForNode(c.contextNode);\r\n        } else if (arguments.length == 2) {\r\n            s = arguments[1].evaluate(c).stringValue();\r\n        } else {\r\n            throw new Error(\"Function string-length expects (string?)\");\r\n        }\r\n        return new XNumber(s.length);\r\n    };\r\n\r\n    Functions.normalizeSpace = function () {\r\n        var c = arguments[0];\r\n        var s;\r\n        if (arguments.length == 1) {\r\n            s = XNodeSet.prototype.stringForNode(c.contextNode);\r\n        } else if (arguments.length == 2) {\r\n            s = arguments[1].evaluate(c).stringValue();\r\n        } else {\r\n            throw new Error(\"Function normalize-space expects (string?)\");\r\n        }\r\n        var i = 0;\r\n        var j = s.length - 1;\r\n        while (Utilities.isSpace(s.charCodeAt(j))) {\r\n            j--;\r\n        }\r\n        var t = \"\";\r\n        while (i <= j && Utilities.isSpace(s.charCodeAt(i))) {\r\n            i++;\r\n        }\r\n        while (i <= j) {\r\n            if (Utilities.isSpace(s.charCodeAt(i))) {\r\n                t += \" \";\r\n                while (i <= j && Utilities.isSpace(s.charCodeAt(i))) {\r\n                    i++;\r\n                }\r\n            } else {\r\n                t += s.charAt(i);\r\n                i++;\r\n            }\r\n        }\r\n        return new XString(t);\r\n    };\r\n\r\n    Functions.translate = function (c, eValue, eFrom, eTo) {\r\n        if (arguments.length != 4) {\r\n            throw new Error(\"Function translate expects (string, string, string)\");\r\n        }\r\n\r\n        var value = eValue.evaluate(c).stringValue();\r\n        var from = eFrom.evaluate(c).stringValue();\r\n        var to = eTo.evaluate(c).stringValue();\r\n\r\n        var cMap = reduce(function (acc, ch, i) {\r\n            if (!(ch in acc)) {\r\n                acc[ch] = i > to.length ? '' : to[i];\r\n            }\r\n            return acc;\r\n        }, {}, from);\r\n\r\n        var t = join(\r\n            '',\r\n            map(function (ch) {\r\n                return ch in cMap ? cMap[ch] : ch;\r\n            }, value)\r\n        );\r\n\r\n        return new XString(t);\r\n    };\r\n\r\n    Functions.boolean_ = function () {\r\n        var c = arguments[0];\r\n        if (arguments.length != 2) {\r\n            throw new Error(\"Function boolean expects (object)\");\r\n        }\r\n        return arguments[1].evaluate(c).bool();\r\n    };\r\n\r\n    Functions.not = function (c, eValue) {\r\n        if (arguments.length != 2) {\r\n            throw new Error(\"Function not expects (object)\");\r\n        }\r\n        return eValue.evaluate(c).bool().not();\r\n    };\r\n\r\n    Functions.true_ = function () {\r\n        if (arguments.length != 1) {\r\n            throw new Error(\"Function true expects ()\");\r\n        }\r\n        return XBoolean.true_;\r\n    };\r\n\r\n    Functions.false_ = function () {\r\n        if (arguments.length != 1) {\r\n            throw new Error(\"Function false expects ()\");\r\n        }\r\n        return XBoolean.false_;\r\n    };\r\n\r\n    Functions.lang = function () {\r\n        var c = arguments[0];\r\n        if (arguments.length != 2) {\r\n            throw new Error(\"Function lang expects (string)\");\r\n        }\r\n        var lang;\r\n        for (var n = c.contextNode; n != null && n.nodeType != NodeTypes.DOCUMENT_NODE; n = n.parentNode) {\r\n            var a = n.getAttributeNS(XPath.XML_NAMESPACE_URI, \"lang\");\r\n            if (a != null) {\r\n                lang = String(a);\r\n                break;\r\n            }\r\n        }\r\n        if (lang == null) {\r\n            return XBoolean.false_;\r\n        }\r\n        var s = arguments[1].evaluate(c).stringValue();\r\n        return new XBoolean(lang.substring(0, s.length) == s\r\n            && (lang.length == s.length || lang.charAt(s.length) == '-'));\r\n    };\r\n\r\n    Functions.number = function () {\r\n        var c = arguments[0];\r\n        if (!(arguments.length == 1 || arguments.length == 2)) {\r\n            throw new Error(\"Function number expects (object?)\");\r\n        }\r\n        if (arguments.length == 1) {\r\n            return new XNumber(XNodeSet.prototype.stringForNode(c.contextNode));\r\n        }\r\n        return arguments[1].evaluate(c).number();\r\n    };\r\n\r\n    Functions.sum = function () {\r\n        var c = arguments[0];\r\n        var ns;\r\n        if (arguments.length != 2 || !Utilities.instance_of((ns = arguments[1].evaluate(c)), XNodeSet)) {\r\n            throw new Error(\"Function sum expects (node-set)\");\r\n        }\r\n        ns = ns.toUnsortedArray();\r\n        var n = 0;\r\n        for (var i = 0; i < ns.length; i++) {\r\n            n += new XNumber(XNodeSet.prototype.stringForNode(ns[i])).numberValue();\r\n        }\r\n        return new XNumber(n);\r\n    };\r\n\r\n    Functions.floor = function () {\r\n        var c = arguments[0];\r\n        if (arguments.length != 2) {\r\n            throw new Error(\"Function floor expects (number)\");\r\n        }\r\n        return new XNumber(Math.floor(arguments[1].evaluate(c).numberValue()));\r\n    };\r\n\r\n    Functions.ceiling = function () {\r\n        var c = arguments[0];\r\n        if (arguments.length != 2) {\r\n            throw new Error(\"Function ceiling expects (number)\");\r\n        }\r\n        return new XNumber(Math.ceil(arguments[1].evaluate(c).numberValue()));\r\n    };\r\n\r\n    Functions.round = function () {\r\n        var c = arguments[0];\r\n        if (arguments.length != 2) {\r\n            throw new Error(\"Function round expects (number)\");\r\n        }\r\n        return new XNumber(Math.round(arguments[1].evaluate(c).numberValue()));\r\n    };\r\n\r\n    // Utilities /////////////////////////////////////////////////////////////////\r\n\r\n    var Utilities = new Object();\r\n\r\n    // Returns true if the node is an attribute node or namespace node\r\n    var isAttributeLike = function (val) {\r\n        return val && (\r\n            val.nodeType === NodeTypes.ATTRIBUTE_NODE ||\r\n            val.ownerElement ||\r\n            val.isXPathNamespace\r\n        );\r\n    }\r\n\r\n    Utilities.splitQName = function (qn) {\r\n        var i = qn.indexOf(\":\");\r\n        if (i == -1) {\r\n            return [null, qn];\r\n        }\r\n        return [qn.substring(0, i), qn.substring(i + 1)];\r\n    };\r\n\r\n    Utilities.resolveQName = function (qn, nr, n, useDefault) {\r\n        var parts = Utilities.splitQName(qn);\r\n        if (parts[0] != null) {\r\n            parts[0] = nr.getNamespace(parts[0], n);\r\n        } else {\r\n            if (useDefault) {\r\n                parts[0] = nr.getNamespace(\"\", n);\r\n                if (parts[0] == null) {\r\n                    parts[0] = \"\";\r\n                }\r\n            } else {\r\n                parts[0] = \"\";\r\n            }\r\n        }\r\n        return parts;\r\n    };\r\n\r\n    Utilities.isSpace = function (c) {\r\n        return c == 0x9 || c == 0xd || c == 0xa || c == 0x20;\r\n    };\r\n\r\n    Utilities.isLetter = function (c) {\r\n        return c >= 0x0041 && c <= 0x005A ||\r\n            c >= 0x0061 && c <= 0x007A ||\r\n            c >= 0x00C0 && c <= 0x00D6 ||\r\n            c >= 0x00D8 && c <= 0x00F6 ||\r\n            c >= 0x00F8 && c <= 0x00FF ||\r\n            c >= 0x0100 && c <= 0x0131 ||\r\n            c >= 0x0134 && c <= 0x013E ||\r\n            c >= 0x0141 && c <= 0x0148 ||\r\n            c >= 0x014A && c <= 0x017E ||\r\n            c >= 0x0180 && c <= 0x01C3 ||\r\n            c >= 0x01CD && c <= 0x01F0 ||\r\n            c >= 0x01F4 && c <= 0x01F5 ||\r\n            c >= 0x01FA && c <= 0x0217 ||\r\n            c >= 0x0250 && c <= 0x02A8 ||\r\n            c >= 0x02BB && c <= 0x02C1 ||\r\n            c == 0x0386 ||\r\n            c >= 0x0388 && c <= 0x038A ||\r\n            c == 0x038C ||\r\n            c >= 0x038E && c <= 0x03A1 ||\r\n            c >= 0x03A3 && c <= 0x03CE ||\r\n            c >= 0x03D0 && c <= 0x03D6 ||\r\n            c == 0x03DA ||\r\n            c == 0x03DC ||\r\n            c == 0x03DE ||\r\n            c == 0x03E0 ||\r\n            c >= 0x03E2 && c <= 0x03F3 ||\r\n            c >= 0x0401 && c <= 0x040C ||\r\n            c >= 0x040E && c <= 0x044F ||\r\n            c >= 0x0451 && c <= 0x045C ||\r\n            c >= 0x045E && c <= 0x0481 ||\r\n            c >= 0x0490 && c <= 0x04C4 ||\r\n            c >= 0x04C7 && c <= 0x04C8 ||\r\n            c >= 0x04CB && c <= 0x04CC ||\r\n            c >= 0x04D0 && c <= 0x04EB ||\r\n            c >= 0x04EE && c <= 0x04F5 ||\r\n            c >= 0x04F8 && c <= 0x04F9 ||\r\n            c >= 0x0531 && c <= 0x0556 ||\r\n            c == 0x0559 ||\r\n            c >= 0x0561 && c <= 0x0586 ||\r\n            c >= 0x05D0 && c <= 0x05EA ||\r\n            c >= 0x05F0 && c <= 0x05F2 ||\r\n            c >= 0x0621 && c <= 0x063A ||\r\n            c >= 0x0641 && c <= 0x064A ||\r\n            c >= 0x0671 && c <= 0x06B7 ||\r\n            c >= 0x06BA && c <= 0x06BE ||\r\n            c >= 0x06C0 && c <= 0x06CE ||\r\n            c >= 0x06D0 && c <= 0x06D3 ||\r\n            c == 0x06D5 ||\r\n            c >= 0x06E5 && c <= 0x06E6 ||\r\n            c >= 0x0905 && c <= 0x0939 ||\r\n            c == 0x093D ||\r\n            c >= 0x0958 && c <= 0x0961 ||\r\n            c >= 0x0985 && c <= 0x098C ||\r\n            c >= 0x098F && c <= 0x0990 ||\r\n            c >= 0x0993 && c <= 0x09A8 ||\r\n            c >= 0x09AA && c <= 0x09B0 ||\r\n            c == 0x09B2 ||\r\n            c >= 0x09B6 && c <= 0x09B9 ||\r\n            c >= 0x09DC && c <= 0x09DD ||\r\n            c >= 0x09DF && c <= 0x09E1 ||\r\n            c >= 0x09F0 && c <= 0x09F1 ||\r\n            c >= 0x0A05 && c <= 0x0A0A ||\r\n            c >= 0x0A0F && c <= 0x0A10 ||\r\n            c >= 0x0A13 && c <= 0x0A28 ||\r\n            c >= 0x0A2A && c <= 0x0A30 ||\r\n            c >= 0x0A32 && c <= 0x0A33 ||\r\n            c >= 0x0A35 && c <= 0x0A36 ||\r\n            c >= 0x0A38 && c <= 0x0A39 ||\r\n            c >= 0x0A59 && c <= 0x0A5C ||\r\n            c == 0x0A5E ||\r\n            c >= 0x0A72 && c <= 0x0A74 ||\r\n            c >= 0x0A85 && c <= 0x0A8B ||\r\n            c == 0x0A8D ||\r\n            c >= 0x0A8F && c <= 0x0A91 ||\r\n            c >= 0x0A93 && c <= 0x0AA8 ||\r\n            c >= 0x0AAA && c <= 0x0AB0 ||\r\n            c >= 0x0AB2 && c <= 0x0AB3 ||\r\n            c >= 0x0AB5 && c <= 0x0AB9 ||\r\n            c == 0x0ABD ||\r\n            c == 0x0AE0 ||\r\n            c >= 0x0B05 && c <= 0x0B0C ||\r\n            c >= 0x0B0F && c <= 0x0B10 ||\r\n            c >= 0x0B13 && c <= 0x0B28 ||\r\n            c >= 0x0B2A && c <= 0x0B30 ||\r\n            c >= 0x0B32 && c <= 0x0B33 ||\r\n            c >= 0x0B36 && c <= 0x0B39 ||\r\n            c == 0x0B3D ||\r\n            c >= 0x0B5C && c <= 0x0B5D ||\r\n            c >= 0x0B5F && c <= 0x0B61 ||\r\n            c >= 0x0B85 && c <= 0x0B8A ||\r\n            c >= 0x0B8E && c <= 0x0B90 ||\r\n            c >= 0x0B92 && c <= 0x0B95 ||\r\n            c >= 0x0B99 && c <= 0x0B9A ||\r\n            c == 0x0B9C ||\r\n            c >= 0x0B9E && c <= 0x0B9F ||\r\n            c >= 0x0BA3 && c <= 0x0BA4 ||\r\n            c >= 0x0BA8 && c <= 0x0BAA ||\r\n            c >= 0x0BAE && c <= 0x0BB5 ||\r\n            c >= 0x0BB7 && c <= 0x0BB9 ||\r\n            c >= 0x0C05 && c <= 0x0C0C ||\r\n            c >= 0x0C0E && c <= 0x0C10 ||\r\n            c >= 0x0C12 && c <= 0x0C28 ||\r\n            c >= 0x0C2A && c <= 0x0C33 ||\r\n            c >= 0x0C35 && c <= 0x0C39 ||\r\n            c >= 0x0C60 && c <= 0x0C61 ||\r\n            c >= 0x0C85 && c <= 0x0C8C ||\r\n            c >= 0x0C8E && c <= 0x0C90 ||\r\n            c >= 0x0C92 && c <= 0x0CA8 ||\r\n            c >= 0x0CAA && c <= 0x0CB3 ||\r\n            c >= 0x0CB5 && c <= 0x0CB9 ||\r\n            c == 0x0CDE ||\r\n            c >= 0x0CE0 && c <= 0x0CE1 ||\r\n            c >= 0x0D05 && c <= 0x0D0C ||\r\n            c >= 0x0D0E && c <= 0x0D10 ||\r\n            c >= 0x0D12 && c <= 0x0D28 ||\r\n            c >= 0x0D2A && c <= 0x0D39 ||\r\n            c >= 0x0D60 && c <= 0x0D61 ||\r\n            c >= 0x0E01 && c <= 0x0E2E ||\r\n            c == 0x0E30 ||\r\n            c >= 0x0E32 && c <= 0x0E33 ||\r\n            c >= 0x0E40 && c <= 0x0E45 ||\r\n            c >= 0x0E81 && c <= 0x0E82 ||\r\n            c == 0x0E84 ||\r\n            c >= 0x0E87 && c <= 0x0E88 ||\r\n            c == 0x0E8A ||\r\n            c == 0x0E8D ||\r\n            c >= 0x0E94 && c <= 0x0E97 ||\r\n            c >= 0x0E99 && c <= 0x0E9F ||\r\n            c >= 0x0EA1 && c <= 0x0EA3 ||\r\n            c == 0x0EA5 ||\r\n            c == 0x0EA7 ||\r\n            c >= 0x0EAA && c <= 0x0EAB ||\r\n            c >= 0x0EAD && c <= 0x0EAE ||\r\n            c == 0x0EB0 ||\r\n            c >= 0x0EB2 && c <= 0x0EB3 ||\r\n            c == 0x0EBD ||\r\n            c >= 0x0EC0 && c <= 0x0EC4 ||\r\n            c >= 0x0F40 && c <= 0x0F47 ||\r\n            c >= 0x0F49 && c <= 0x0F69 ||\r\n            c >= 0x10A0 && c <= 0x10C5 ||\r\n            c >= 0x10D0 && c <= 0x10F6 ||\r\n            c == 0x1100 ||\r\n            c >= 0x1102 && c <= 0x1103 ||\r\n            c >= 0x1105 && c <= 0x1107 ||\r\n            c == 0x1109 ||\r\n            c >= 0x110B && c <= 0x110C ||\r\n            c >= 0x110E && c <= 0x1112 ||\r\n            c == 0x113C ||\r\n            c == 0x113E ||\r\n            c == 0x1140 ||\r\n            c == 0x114C ||\r\n            c == 0x114E ||\r\n            c == 0x1150 ||\r\n            c >= 0x1154 && c <= 0x1155 ||\r\n            c == 0x1159 ||\r\n            c >= 0x115F && c <= 0x1161 ||\r\n            c == 0x1163 ||\r\n            c == 0x1165 ||\r\n            c == 0x1167 ||\r\n            c == 0x1169 ||\r\n            c >= 0x116D && c <= 0x116E ||\r\n            c >= 0x1172 && c <= 0x1173 ||\r\n            c == 0x1175 ||\r\n            c == 0x119E ||\r\n            c == 0x11A8 ||\r\n            c == 0x11AB ||\r\n            c >= 0x11AE && c <= 0x11AF ||\r\n            c >= 0x11B7 && c <= 0x11B8 ||\r\n            c == 0x11BA ||\r\n            c >= 0x11BC && c <= 0x11C2 ||\r\n            c == 0x11EB ||\r\n            c == 0x11F0 ||\r\n            c == 0x11F9 ||\r\n            c >= 0x1E00 && c <= 0x1E9B ||\r\n            c >= 0x1EA0 && c <= 0x1EF9 ||\r\n            c >= 0x1F00 && c <= 0x1F15 ||\r\n            c >= 0x1F18 && c <= 0x1F1D ||\r\n            c >= 0x1F20 && c <= 0x1F45 ||\r\n            c >= 0x1F48 && c <= 0x1F4D ||\r\n            c >= 0x1F50 && c <= 0x1F57 ||\r\n            c == 0x1F59 ||\r\n            c == 0x1F5B ||\r\n            c == 0x1F5D ||\r\n            c >= 0x1F5F && c <= 0x1F7D ||\r\n            c >= 0x1F80 && c <= 0x1FB4 ||\r\n            c >= 0x1FB6 && c <= 0x1FBC ||\r\n            c == 0x1FBE ||\r\n            c >= 0x1FC2 && c <= 0x1FC4 ||\r\n            c >= 0x1FC6 && c <= 0x1FCC ||\r\n            c >= 0x1FD0 && c <= 0x1FD3 ||\r\n            c >= 0x1FD6 && c <= 0x1FDB ||\r\n            c >= 0x1FE0 && c <= 0x1FEC ||\r\n            c >= 0x1FF2 && c <= 0x1FF4 ||\r\n            c >= 0x1FF6 && c <= 0x1FFC ||\r\n            c == 0x2126 ||\r\n            c >= 0x212A && c <= 0x212B ||\r\n            c == 0x212E ||\r\n            c >= 0x2180 && c <= 0x2182 ||\r\n            c >= 0x3041 && c <= 0x3094 ||\r\n            c >= 0x30A1 && c <= 0x30FA ||\r\n            c >= 0x3105 && c <= 0x312C ||\r\n            c >= 0xAC00 && c <= 0xD7A3 ||\r\n            c >= 0x4E00 && c <= 0x9FA5 ||\r\n            c == 0x3007 ||\r\n            c >= 0x3021 && c <= 0x3029;\r\n    };\r\n\r\n    Utilities.isNCNameChar = function (c) {\r\n        return c >= 0x0030 && c <= 0x0039\r\n            || c >= 0x0660 && c <= 0x0669\r\n            || c >= 0x06F0 && c <= 0x06F9\r\n            || c >= 0x0966 && c <= 0x096F\r\n            || c >= 0x09E6 && c <= 0x09EF\r\n            || c >= 0x0A66 && c <= 0x0A6F\r\n            || c >= 0x0AE6 && c <= 0x0AEF\r\n            || c >= 0x0B66 && c <= 0x0B6F\r\n            || c >= 0x0BE7 && c <= 0x0BEF\r\n            || c >= 0x0C66 && c <= 0x0C6F\r\n            || c >= 0x0CE6 && c <= 0x0CEF\r\n            || c >= 0x0D66 && c <= 0x0D6F\r\n            || c >= 0x0E50 && c <= 0x0E59\r\n            || c >= 0x0ED0 && c <= 0x0ED9\r\n            || c >= 0x0F20 && c <= 0x0F29\r\n            || c == 0x002E\r\n            || c == 0x002D\r\n            || c == 0x005F\r\n            || Utilities.isLetter(c)\r\n            || c >= 0x0300 && c <= 0x0345\r\n            || c >= 0x0360 && c <= 0x0361\r\n            || c >= 0x0483 && c <= 0x0486\r\n            || c >= 0x0591 && c <= 0x05A1\r\n            || c >= 0x05A3 && c <= 0x05B9\r\n            || c >= 0x05BB && c <= 0x05BD\r\n            || c == 0x05BF\r\n            || c >= 0x05C1 && c <= 0x05C2\r\n            || c == 0x05C4\r\n            || c >= 0x064B && c <= 0x0652\r\n            || c == 0x0670\r\n            || c >= 0x06D6 && c <= 0x06DC\r\n            || c >= 0x06DD && c <= 0x06DF\r\n            || c >= 0x06E0 && c <= 0x06E4\r\n            || c >= 0x06E7 && c <= 0x06E8\r\n            || c >= 0x06EA && c <= 0x06ED\r\n            || c >= 0x0901 && c <= 0x0903\r\n            || c == 0x093C\r\n            || c >= 0x093E && c <= 0x094C\r\n            || c == 0x094D\r\n            || c >= 0x0951 && c <= 0x0954\r\n            || c >= 0x0962 && c <= 0x0963\r\n            || c >= 0x0981 && c <= 0x0983\r\n            || c == 0x09BC\r\n            || c == 0x09BE\r\n            || c == 0x09BF\r\n            || c >= 0x09C0 && c <= 0x09C4\r\n            || c >= 0x09C7 && c <= 0x09C8\r\n            || c >= 0x09CB && c <= 0x09CD\r\n            || c == 0x09D7\r\n            || c >= 0x09E2 && c <= 0x09E3\r\n            || c == 0x0A02\r\n            || c == 0x0A3C\r\n            || c == 0x0A3E\r\n            || c == 0x0A3F\r\n            || c >= 0x0A40 && c <= 0x0A42\r\n            || c >= 0x0A47 && c <= 0x0A48\r\n            || c >= 0x0A4B && c <= 0x0A4D\r\n            || c >= 0x0A70 && c <= 0x0A71\r\n            || c >= 0x0A81 && c <= 0x0A83\r\n            || c == 0x0ABC\r\n            || c >= 0x0ABE && c <= 0x0AC5\r\n            || c >= 0x0AC7 && c <= 0x0AC9\r\n            || c >= 0x0ACB && c <= 0x0ACD\r\n            || c >= 0x0B01 && c <= 0x0B03\r\n            || c == 0x0B3C\r\n            || c >= 0x0B3E && c <= 0x0B43\r\n            || c >= 0x0B47 && c <= 0x0B48\r\n            || c >= 0x0B4B && c <= 0x0B4D\r\n            || c >= 0x0B56 && c <= 0x0B57\r\n            || c >= 0x0B82 && c <= 0x0B83\r\n            || c >= 0x0BBE && c <= 0x0BC2\r\n            || c >= 0x0BC6 && c <= 0x0BC8\r\n            || c >= 0x0BCA && c <= 0x0BCD\r\n            || c == 0x0BD7\r\n            || c >= 0x0C01 && c <= 0x0C03\r\n            || c >= 0x0C3E && c <= 0x0C44\r\n            || c >= 0x0C46 && c <= 0x0C48\r\n            || c >= 0x0C4A && c <= 0x0C4D\r\n            || c >= 0x0C55 && c <= 0x0C56\r\n            || c >= 0x0C82 && c <= 0x0C83\r\n            || c >= 0x0CBE && c <= 0x0CC4\r\n            || c >= 0x0CC6 && c <= 0x0CC8\r\n            || c >= 0x0CCA && c <= 0x0CCD\r\n            || c >= 0x0CD5 && c <= 0x0CD6\r\n            || c >= 0x0D02 && c <= 0x0D03\r\n            || c >= 0x0D3E && c <= 0x0D43\r\n            || c >= 0x0D46 && c <= 0x0D48\r\n            || c >= 0x0D4A && c <= 0x0D4D\r\n            || c == 0x0D57\r\n            || c == 0x0E31\r\n            || c >= 0x0E34 && c <= 0x0E3A\r\n            || c >= 0x0E47 && c <= 0x0E4E\r\n            || c == 0x0EB1\r\n            || c >= 0x0EB4 && c <= 0x0EB9\r\n            || c >= 0x0EBB && c <= 0x0EBC\r\n            || c >= 0x0EC8 && c <= 0x0ECD\r\n            || c >= 0x0F18 && c <= 0x0F19\r\n            || c == 0x0F35\r\n            || c == 0x0F37\r\n            || c == 0x0F39\r\n            || c == 0x0F3E\r\n            || c == 0x0F3F\r\n            || c >= 0x0F71 && c <= 0x0F84\r\n            || c >= 0x0F86 && c <= 0x0F8B\r\n            || c >= 0x0F90 && c <= 0x0F95\r\n            || c == 0x0F97\r\n            || c >= 0x0F99 && c <= 0x0FAD\r\n            || c >= 0x0FB1 && c <= 0x0FB7\r\n            || c == 0x0FB9\r\n            || c >= 0x20D0 && c <= 0x20DC\r\n            || c == 0x20E1\r\n            || c >= 0x302A && c <= 0x302F\r\n            || c == 0x3099\r\n            || c == 0x309A\r\n            || c == 0x00B7\r\n            || c == 0x02D0\r\n            || c == 0x02D1\r\n            || c == 0x0387\r\n            || c == 0x0640\r\n            || c == 0x0E46\r\n            || c == 0x0EC6\r\n            || c == 0x3005\r\n            || c >= 0x3031 && c <= 0x3035\r\n            || c >= 0x309D && c <= 0x309E\r\n            || c >= 0x30FC && c <= 0x30FE;\r\n    };\r\n\r\n    Utilities.coalesceText = function (n) {\r\n        for (var m = n.firstChild; m != null; m = m.nextSibling) {\r\n            if (m.nodeType == NodeTypes.TEXT_NODE || m.nodeType == NodeTypes.CDATA_SECTION_NODE) {\r\n                var s = m.nodeValue;\r\n                var first = m;\r\n                m = m.nextSibling;\r\n                while (m != null && (m.nodeType == NodeTypes.TEXT_NODE || m.nodeType == NodeTypes.CDATA_SECTION_NODE)) {\r\n                    s += m.nodeValue;\r\n                    var del = m;\r\n                    m = m.nextSibling;\r\n                    del.parentNode.removeChild(del);\r\n                }\r\n                if (first.nodeType == NodeTypes.CDATA_SECTION_NODE) {\r\n                    var p = first.parentNode;\r\n                    if (first.nextSibling == null) {\r\n                        p.removeChild(first);\r\n                        p.appendChild(p.ownerDocument.createTextNode(s));\r\n                    } else {\r\n                        var next = first.nextSibling;\r\n                        p.removeChild(first);\r\n                        p.insertBefore(p.ownerDocument.createTextNode(s), next);\r\n                    }\r\n                } else {\r\n                    first.nodeValue = s;\r\n                }\r\n                if (m == null) {\r\n                    break;\r\n                }\r\n            } else if (m.nodeType == NodeTypes.ELEMENT_NODE) {\r\n                Utilities.coalesceText(m);\r\n            }\r\n        }\r\n    };\r\n\r\n    Utilities.instance_of = function (o, c) {\r\n        while (o != null) {\r\n            if (o.constructor === c) {\r\n                return true;\r\n            }\r\n            if (o === Object) {\r\n                return false;\r\n            }\r\n            o = o.constructor.superclass;\r\n        }\r\n        return false;\r\n    };\r\n\r\n    Utilities.getElementById = function (n, id) {\r\n        // Note that this does not check the DTD to check for actual\r\n        // attributes of type ID, so this may be a bit wrong.\r\n        if (n.nodeType == NodeTypes.ELEMENT_NODE) {\r\n            if (n.getAttribute(\"id\") == id\r\n                || n.getAttributeNS(null, \"id\") == id) {\r\n                return n;\r\n            }\r\n        }\r\n        for (var m = n.firstChild; m != null; m = m.nextSibling) {\r\n            var res = Utilities.getElementById(m, id);\r\n            if (res != null) {\r\n                return res;\r\n            }\r\n        }\r\n        return null;\r\n    };\r\n\r\n    // XPathException ////////////////////////////////////////////////////////////\r\n\r\n    var XPathException = (function () {\r\n        function getMessage(code, exception) {\r\n            var msg = exception ? \": \" + exception.toString() : \"\";\r\n            switch (code) {\r\n                case XPathException.INVALID_EXPRESSION_ERR:\r\n                    return \"Invalid expression\" + msg;\r\n                case XPathException.TYPE_ERR:\r\n                    return \"Type error\" + msg;\r\n            }\r\n            return null;\r\n        }\r\n\r\n        function XPathException(code, error, message) {\r\n            var err = Error.call(this, getMessage(code, error) || message);\r\n\r\n            err.code = code;\r\n            err.exception = error;\r\n\r\n            return err;\r\n        }\r\n\r\n        XPathException.prototype = Object.create(Error.prototype);\r\n        XPathException.prototype.constructor = XPathException;\r\n        XPathException.superclass = Error;\r\n\r\n        XPathException.prototype.toString = function () {\r\n            return this.message;\r\n        };\r\n\r\n        XPathException.fromMessage = function (message, error) {\r\n            return new XPathException(null, error, message);\r\n        };\r\n\r\n        XPathException.INVALID_EXPRESSION_ERR = 51;\r\n        XPathException.TYPE_ERR = 52;\r\n\r\n        return XPathException;\r\n    })();\r\n\r\n    // XPathExpression ///////////////////////////////////////////////////////////\r\n\r\n    XPathExpression.prototype = {};\r\n    XPathExpression.prototype.constructor = XPathExpression;\r\n    XPathExpression.superclass = Object.prototype;\r\n\r\n    function XPathExpression(e, r, p) {\r\n        this.xpath = p.parse(e);\r\n        this.context = new XPathContext();\r\n        this.context.namespaceResolver = new XPathNSResolverWrapper(r);\r\n    }\r\n\r\n    XPathExpression.getOwnerDocument = function (n) {\r\n        return n.nodeType === NodeTypes.DOCUMENT_NODE ? n : n.ownerDocument;\r\n    }\r\n\r\n    XPathExpression.detectHtmlDom = function (n) {\r\n        if (!n) { return false; }\r\n\r\n        var doc = XPathExpression.getOwnerDocument(n);\r\n\r\n        try {\r\n            return doc.implementation.hasFeature(\"HTML\", \"2.0\");\r\n        } catch (e) {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    XPathExpression.prototype.evaluate = function (n, t, res) {\r\n        this.context.expressionContextNode = n;\r\n        // backward compatibility - no reliable way to detect whether the DOM is HTML, but\r\n        // this library has been using this method up until now, so we will continue to use it\r\n        // ONLY when using an XPathExpression\r\n        this.context.caseInsensitive = XPathExpression.detectHtmlDom(n);\r\n\r\n        var result = this.xpath.evaluate(this.context);\r\n\r\n        return new XPathResult(result, t);\r\n    }\r\n\r\n    // XPathNSResolverWrapper ////////////////////////////////////////////////////\r\n\r\n    XPathNSResolverWrapper.prototype = {};\r\n    XPathNSResolverWrapper.prototype.constructor = XPathNSResolverWrapper;\r\n    XPathNSResolverWrapper.superclass = Object.prototype;\r\n\r\n    function XPathNSResolverWrapper(r) {\r\n        this.xpathNSResolver = r;\r\n    }\r\n\r\n    XPathNSResolverWrapper.prototype.getNamespace = function (prefix, n) {\r\n        if (this.xpathNSResolver == null) {\r\n            return null;\r\n        }\r\n        return this.xpathNSResolver.lookupNamespaceURI(prefix);\r\n    };\r\n\r\n    // NodeXPathNSResolver ///////////////////////////////////////////////////////\r\n\r\n    NodeXPathNSResolver.prototype = {};\r\n    NodeXPathNSResolver.prototype.constructor = NodeXPathNSResolver;\r\n    NodeXPathNSResolver.superclass = Object.prototype;\r\n\r\n    function NodeXPathNSResolver(n) {\r\n        this.node = n;\r\n        this.namespaceResolver = new NamespaceResolver();\r\n    }\r\n\r\n    NodeXPathNSResolver.prototype.lookupNamespaceURI = function (prefix) {\r\n        return this.namespaceResolver.getNamespace(prefix, this.node);\r\n    };\r\n\r\n    // XPathResult ///////////////////////////////////////////////////////////////\r\n\r\n    XPathResult.prototype = {};\r\n    XPathResult.prototype.constructor = XPathResult;\r\n    XPathResult.superclass = Object.prototype;\r\n\r\n    function XPathResult(v, t) {\r\n        if (t == XPathResult.ANY_TYPE) {\r\n            if (v.constructor === XString) {\r\n                t = XPathResult.STRING_TYPE;\r\n            } else if (v.constructor === XNumber) {\r\n                t = XPathResult.NUMBER_TYPE;\r\n            } else if (v.constructor === XBoolean) {\r\n                t = XPathResult.BOOLEAN_TYPE;\r\n            } else if (v.constructor === XNodeSet) {\r\n                t = XPathResult.UNORDERED_NODE_ITERATOR_TYPE;\r\n            }\r\n        }\r\n        this.resultType = t;\r\n        switch (t) {\r\n            case XPathResult.NUMBER_TYPE:\r\n                this.numberValue = v.numberValue();\r\n                return;\r\n            case XPathResult.STRING_TYPE:\r\n                this.stringValue = v.stringValue();\r\n                return;\r\n            case XPathResult.BOOLEAN_TYPE:\r\n                this.booleanValue = v.booleanValue();\r\n                return;\r\n            case XPathResult.ANY_UNORDERED_NODE_TYPE:\r\n            case XPathResult.FIRST_ORDERED_NODE_TYPE:\r\n                if (v.constructor === XNodeSet) {\r\n                    this.singleNodeValue = v.first();\r\n                    return;\r\n                }\r\n                break;\r\n            case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:\r\n            case XPathResult.ORDERED_NODE_ITERATOR_TYPE:\r\n                if (v.constructor === XNodeSet) {\r\n                    this.invalidIteratorState = false;\r\n                    this.nodes = v.toArray();\r\n                    this.iteratorIndex = 0;\r\n                    return;\r\n                }\r\n                break;\r\n            case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:\r\n            case XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:\r\n                if (v.constructor === XNodeSet) {\r\n                    this.nodes = v.toArray();\r\n                    this.snapshotLength = this.nodes.length;\r\n                    return;\r\n                }\r\n                break;\r\n        }\r\n        throw new XPathException(XPathException.TYPE_ERR);\r\n    };\r\n\r\n    XPathResult.prototype.iterateNext = function () {\r\n        if (this.resultType != XPathResult.UNORDERED_NODE_ITERATOR_TYPE\r\n            && this.resultType != XPathResult.ORDERED_NODE_ITERATOR_TYPE) {\r\n            throw new XPathException(XPathException.TYPE_ERR);\r\n        }\r\n        return this.nodes[this.iteratorIndex++];\r\n    };\r\n\r\n    XPathResult.prototype.snapshotItem = function (i) {\r\n        if (this.resultType != XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE\r\n            && this.resultType != XPathResult.ORDERED_NODE_SNAPSHOT_TYPE) {\r\n            throw new XPathException(XPathException.TYPE_ERR);\r\n        }\r\n        return this.nodes[i];\r\n    };\r\n\r\n    XPathResult.ANY_TYPE = 0;\r\n    XPathResult.NUMBER_TYPE = 1;\r\n    XPathResult.STRING_TYPE = 2;\r\n    XPathResult.BOOLEAN_TYPE = 3;\r\n    XPathResult.UNORDERED_NODE_ITERATOR_TYPE = 4;\r\n    XPathResult.ORDERED_NODE_ITERATOR_TYPE = 5;\r\n    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE = 6;\r\n    XPathResult.ORDERED_NODE_SNAPSHOT_TYPE = 7;\r\n    XPathResult.ANY_UNORDERED_NODE_TYPE = 8;\r\n    XPathResult.FIRST_ORDERED_NODE_TYPE = 9;\r\n\r\n    // DOM 3 XPath support ///////////////////////////////////////////////////////\r\n\r\n    function installDOM3XPathSupport(doc, p) {\r\n        doc.createExpression = function (e, r) {\r\n            try {\r\n                return new XPathExpression(e, r, p);\r\n            } catch (e) {\r\n                throw new XPathException(XPathException.INVALID_EXPRESSION_ERR, e);\r\n            }\r\n        };\r\n        doc.createNSResolver = function (n) {\r\n            return new NodeXPathNSResolver(n);\r\n        };\r\n        doc.evaluate = function (e, cn, r, t, res) {\r\n            if (t < 0 || t > 9) {\r\n                throw { code: 0, toString: function () { return \"Request type not supported\"; } };\r\n            }\r\n            return doc.createExpression(e, r, p).evaluate(cn, t, res);\r\n        };\r\n    };\r\n\r\n    // ---------------------------------------------------------------------------\r\n\r\n    // Install DOM 3 XPath support for the current document.\r\n    try {\r\n        var shouldInstall = true;\r\n        try {\r\n            if (document.implementation\r\n                && document.implementation.hasFeature\r\n                && document.implementation.hasFeature(\"XPath\", null)) {\r\n                shouldInstall = false;\r\n            }\r\n        } catch (e) {\r\n        }\r\n        if (shouldInstall) {\r\n            installDOM3XPathSupport(document, new XPathParser());\r\n        }\r\n    } catch (e) {\r\n    }\r\n\r\n    // ---------------------------------------------------------------------------\r\n    // exports for node.js\r\n\r\n    installDOM3XPathSupport(exports, new XPathParser());\r\n\r\n    (function () {\r\n        var parser = new XPathParser();\r\n\r\n        var defaultNSResolver = new NamespaceResolver();\r\n        var defaultFunctionResolver = new FunctionResolver();\r\n        var defaultVariableResolver = new VariableResolver();\r\n\r\n        function makeNSResolverFromFunction(func) {\r\n            return {\r\n                getNamespace: function (prefix, node) {\r\n                    var ns = func(prefix, node);\r\n\r\n                    return ns || defaultNSResolver.getNamespace(prefix, node);\r\n                }\r\n            };\r\n        }\r\n\r\n        function makeNSResolverFromObject(obj) {\r\n            return makeNSResolverFromFunction(obj.getNamespace.bind(obj));\r\n        }\r\n\r\n        function makeNSResolverFromMap(map) {\r\n            return makeNSResolverFromFunction(function (prefix) {\r\n                return map[prefix];\r\n            });\r\n        }\r\n\r\n        function makeNSResolver(resolver) {\r\n            if (resolver && typeof resolver.getNamespace === \"function\") {\r\n                return makeNSResolverFromObject(resolver);\r\n            }\r\n\r\n            if (typeof resolver === \"function\") {\r\n                return makeNSResolverFromFunction(resolver);\r\n            }\r\n\r\n            // assume prefix -> uri mapping\r\n            if (typeof resolver === \"object\") {\r\n                return makeNSResolverFromMap(resolver);\r\n            }\r\n\r\n            return defaultNSResolver;\r\n        }\r\n\r\n        /** Converts native JavaScript types to their XPath library equivalent */\r\n        function convertValue(value) {\r\n            if (value === null ||\r\n                typeof value === \"undefined\" ||\r\n                value instanceof XString ||\r\n                value instanceof XBoolean ||\r\n                value instanceof XNumber ||\r\n                value instanceof XNodeSet) {\r\n                return value;\r\n            }\r\n\r\n            switch (typeof value) {\r\n                case \"string\": return new XString(value);\r\n                case \"boolean\": return new XBoolean(value);\r\n                case \"number\": return new XNumber(value);\r\n            }\r\n\r\n            // assume node(s)\r\n            var ns = new XNodeSet();\r\n            ns.addArray([].concat(value));\r\n            return ns;\r\n        }\r\n\r\n        function makeEvaluator(func) {\r\n            return function (context) {\r\n                var args = Array.prototype.slice.call(arguments, 1).map(function (arg) {\r\n                    return arg.evaluate(context);\r\n                });\r\n                var result = func.apply(this, [].concat(context, args));\r\n                return convertValue(result);\r\n            };\r\n        }\r\n\r\n        function makeFunctionResolverFromFunction(func) {\r\n            return {\r\n                getFunction: function (name, namespace) {\r\n                    var found = func(name, namespace);\r\n                    if (found) {\r\n                        return makeEvaluator(found);\r\n                    }\r\n                    return defaultFunctionResolver.getFunction(name, namespace);\r\n                }\r\n            };\r\n        }\r\n\r\n        function makeFunctionResolverFromObject(obj) {\r\n            return makeFunctionResolverFromFunction(obj.getFunction.bind(obj));\r\n        }\r\n\r\n        function makeFunctionResolverFromMap(map) {\r\n            return makeFunctionResolverFromFunction(function (name) {\r\n                return map[name];\r\n            });\r\n        }\r\n\r\n        function makeFunctionResolver(resolver) {\r\n            if (resolver && typeof resolver.getFunction === \"function\") {\r\n                return makeFunctionResolverFromObject(resolver);\r\n            }\r\n\r\n            if (typeof resolver === \"function\") {\r\n                return makeFunctionResolverFromFunction(resolver);\r\n            }\r\n\r\n            // assume map\r\n            if (typeof resolver === \"object\") {\r\n                return makeFunctionResolverFromMap(resolver);\r\n            }\r\n\r\n            return defaultFunctionResolver;\r\n        }\r\n\r\n        function makeVariableResolverFromFunction(func) {\r\n            return {\r\n                getVariable: function (name, namespace) {\r\n                    var value = func(name, namespace);\r\n                    return convertValue(value);\r\n                }\r\n            };\r\n        }\r\n\r\n        function makeVariableResolver(resolver) {\r\n            if (resolver) {\r\n                if (typeof resolver.getVariable === \"function\") {\r\n                    return makeVariableResolverFromFunction(resolver.getVariable.bind(resolver));\r\n                }\r\n\r\n                if (typeof resolver === \"function\") {\r\n                    return makeVariableResolverFromFunction(resolver);\r\n                }\r\n\r\n                // assume map\r\n                if (typeof resolver === \"object\") {\r\n                    return makeVariableResolverFromFunction(function (name) {\r\n                        return resolver[name];\r\n                    });\r\n                }\r\n            }\r\n\r\n            return defaultVariableResolver;\r\n        }\r\n\r\n        function copyIfPresent(prop, dest, source) {\r\n            if (prop in source) { dest[prop] = source[prop]; }\r\n        }\r\n\r\n        function makeContext(options) {\r\n            var context = new XPathContext();\r\n\r\n            if (options) {\r\n                context.namespaceResolver = makeNSResolver(options.namespaces);\r\n                context.functionResolver = makeFunctionResolver(options.functions);\r\n                context.variableResolver = makeVariableResolver(options.variables);\r\n                context.expressionContextNode = options.node;\r\n                copyIfPresent('allowAnyNamespaceForNoPrefix', context, options);\r\n                copyIfPresent('isHtml', context, options);\r\n            } else {\r\n                context.namespaceResolver = defaultNSResolver;\r\n            }\r\n\r\n            return context;\r\n        }\r\n\r\n        function evaluate(parsedExpression, options) {\r\n            var context = makeContext(options);\r\n\r\n            return parsedExpression.evaluate(context);\r\n        }\r\n\r\n        var evaluatorPrototype = {\r\n            evaluate: function (options) {\r\n                return evaluate(this.expression, options);\r\n            }\r\n\r\n            , evaluateNumber: function (options) {\r\n                return this.evaluate(options).numberValue();\r\n            }\r\n\r\n            , evaluateString: function (options) {\r\n                return this.evaluate(options).stringValue();\r\n            }\r\n\r\n            , evaluateBoolean: function (options) {\r\n                return this.evaluate(options).booleanValue();\r\n            }\r\n\r\n            , evaluateNodeSet: function (options) {\r\n                return this.evaluate(options).nodeset();\r\n            }\r\n\r\n            , select: function (options) {\r\n                return this.evaluateNodeSet(options).toArray()\r\n            }\r\n\r\n            , select1: function (options) {\r\n                return this.select(options)[0];\r\n            }\r\n        };\r\n\r\n        function parse(xpath) {\r\n            var parsed = parser.parse(xpath);\r\n\r\n            return Object.create(evaluatorPrototype, {\r\n                expression: {\r\n                    value: parsed\r\n                }\r\n            });\r\n        }\r\n\r\n        exports.parse = parse;\r\n    })();\r\n\r\n    assign(\r\n        exports,\r\n        {\r\n            XPath: XPath,\r\n            XPathParser: XPathParser,\r\n            XPathResult: XPathResult,\r\n\r\n            Step: Step,\r\n            PathExpr: PathExpr,\r\n            NodeTest: NodeTest,\r\n            LocationPath: LocationPath,\r\n\r\n            OrOperation: OrOperation,\r\n            AndOperation: AndOperation,\r\n\r\n            BarOperation: BarOperation,\r\n\r\n            EqualsOperation: EqualsOperation,\r\n            NotEqualOperation: NotEqualOperation,\r\n            LessThanOperation: LessThanOperation,\r\n            GreaterThanOperation: GreaterThanOperation,\r\n            LessThanOrEqualOperation: LessThanOrEqualOperation,\r\n            GreaterThanOrEqualOperation: GreaterThanOrEqualOperation,\r\n\r\n            PlusOperation: PlusOperation,\r\n            MinusOperation: MinusOperation,\r\n            MultiplyOperation: MultiplyOperation,\r\n            DivOperation: DivOperation,\r\n            ModOperation: ModOperation,\r\n            UnaryMinusOperation: UnaryMinusOperation,\r\n\r\n            FunctionCall: FunctionCall,\r\n            VariableReference: VariableReference,\r\n\r\n            XPathContext: XPathContext,\r\n\r\n            XNodeSet: XNodeSet,\r\n            XBoolean: XBoolean,\r\n            XString: XString,\r\n            XNumber: XNumber,\r\n\r\n            NamespaceResolver: NamespaceResolver,\r\n            FunctionResolver: FunctionResolver,\r\n            VariableResolver: VariableResolver,\r\n\r\n            Utilities: Utilities,\r\n        }\r\n    );\r\n\r\n    // helper\r\n    exports.select = function (e, doc, single) {\r\n        return exports.selectWithResolver(e, doc, null, single);\r\n    };\r\n\r\n    exports.useNamespaces = function (mappings) {\r\n        var resolver = {\r\n            mappings: mappings || {},\r\n            lookupNamespaceURI: function (prefix) {\r\n                return this.mappings[prefix];\r\n            }\r\n        };\r\n\r\n        return function (e, doc, single) {\r\n            return exports.selectWithResolver(e, doc, resolver, single);\r\n        };\r\n    };\r\n\r\n    exports.selectWithResolver = function (e, doc, resolver, single) {\r\n        var expression = new XPathExpression(e, resolver, new XPathParser());\r\n        var type = XPathResult.ANY_TYPE;\r\n\r\n        var result = expression.evaluate(doc, type, null);\r\n\r\n        if (result.resultType == XPathResult.STRING_TYPE) {\r\n            result = result.stringValue;\r\n        }\r\n        else if (result.resultType == XPathResult.NUMBER_TYPE) {\r\n            result = result.numberValue;\r\n        }\r\n        else if (result.resultType == XPathResult.BOOLEAN_TYPE) {\r\n            result = result.booleanValue;\r\n        }\r\n        else {\r\n            result = result.nodes;\r\n            if (single) {\r\n                result = result[0];\r\n            }\r\n        }\r\n\r\n        return result;\r\n    };\r\n\r\n    exports.select1 = function (e, doc) {\r\n        return exports.select(e, doc, true);\r\n    };\r\n\r\n    var isArrayOfNodes = function (value) {\r\n        return Array.isArray(value) && value.every(isNodeLike);\r\n    };\r\n\r\n    var isNodeOfType = function (type) {\r\n        return function (value) {\r\n            return isNodeLike(value) && value.nodeType === type;\r\n        };\r\n    };\r\n\r\n    assign(\r\n        exports,\r\n        {\r\n            isNodeLike: isNodeLike,\r\n            isArrayOfNodes: isArrayOfNodes,\r\n            isElement: isNodeOfType(NodeTypes.ELEMENT_NODE),\r\n            isAttribute: isNodeOfType(NodeTypes.ATTRIBUTE_NODE),\r\n            isTextNode: isNodeOfType(NodeTypes.TEXT_NODE),\r\n            isCDATASection: isNodeOfType(NodeTypes.CDATA_SECTION_NODE),\r\n            isProcessingInstruction: isNodeOfType(NodeTypes.PROCESSING_INSTRUCTION_NODE),\r\n            isComment: isNodeOfType(NodeTypes.COMMENT_NODE),\r\n            isDocumentNode: isNodeOfType(NodeTypes.DOCUMENT_NODE),\r\n            isDocumentTypeNode: isNodeOfType(NodeTypes.DOCUMENT_TYPE_NODE),\r\n            isDocumentFragment: isNodeOfType(NodeTypes.DOCUMENT_FRAGMENT_NODE),\r\n        }\r\n    );\r\n    // end non-node wrapper\r\n})(xpath);\r\n","const footerXml =\n    '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><w:ftr mc:Ignorable=\"w14 w15 w16se w16cid w16 w16cex w16sdtdh w16du wp14\" xmlns:aink=\"http://schemas.microsoft.com/office/drawing/2016/ink\" xmlns:am3d=\"http://schemas.microsoft.com/office/drawing/2017/model3d\" xmlns:cx=\"http://schemas.microsoft.com/office/drawing/2014/chartex\" xmlns:cx1=\"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\" xmlns:cx2=\"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\" xmlns:cx3=\"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\" xmlns:cx4=\"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\" xmlns:cx5=\"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\" xmlns:cx6=\"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\" xmlns:cx7=\"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\" xmlns:cx8=\"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:oel=\"http://schemas.microsoft.com/office/2019/extlst\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" xmlns:w15=\"http://schemas.microsoft.com/office/word/2012/wordml\" xmlns:w16=\"http://schemas.microsoft.com/office/word/2018/wordml\" xmlns:w16cex=\"http://schemas.microsoft.com/office/word/2018/wordml/cex\" xmlns:w16cid=\"http://schemas.microsoft.com/office/word/2016/wordml/cid\" xmlns:w16du=\"http://schemas.microsoft.com/office/word/2023/wordml/word16du\" xmlns:w16sdtdh=\"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\" xmlns:w16se=\"http://schemas.microsoft.com/office/word/2015/wordml/symex\" xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\" xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" xmlns:wp14=\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\" xmlns:wpc=\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\" xmlns:wpg=\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\" xmlns:wpi=\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\" xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\"></w:ftr>';\nconst headerXml =\n    '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><w:hdr mc:Ignorable=\"w14 w15 w16se w16cid w16 w16cex w16sdtdh w16du wp14\" xmlns:aink=\"http://schemas.microsoft.com/office/drawing/2016/ink\" xmlns:am3d=\"http://schemas.microsoft.com/office/drawing/2017/model3d\" xmlns:cx=\"http://schemas.microsoft.com/office/drawing/2014/chartex\" xmlns:cx1=\"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\" xmlns:cx2=\"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\" xmlns:cx3=\"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\" xmlns:cx4=\"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\" xmlns:cx5=\"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\" xmlns:cx6=\"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\" xmlns:cx7=\"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\" xmlns:cx8=\"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:oel=\"http://schemas.microsoft.com/office/2019/extlst\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" xmlns:w15=\"http://schemas.microsoft.com/office/word/2012/wordml\" xmlns:w16=\"http://schemas.microsoft.com/office/word/2018/wordml\" xmlns:w16cex=\"http://schemas.microsoft.com/office/word/2018/wordml/cex\" xmlns:w16cid=\"http://schemas.microsoft.com/office/word/2016/wordml/cid\" xmlns:w16du=\"http://schemas.microsoft.com/office/word/2023/wordml/word16du\" xmlns:w16sdtdh=\"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\" xmlns:w16se=\"http://schemas.microsoft.com/office/word/2015/wordml/symex\" xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\" xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" xmlns:wp14=\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\" xmlns:wpc=\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\" xmlns:wpg=\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\" xmlns:wpi=\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\" xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\"></w:hdr>';\nconst listBullets =\n    '<w:abstractNum w:abstractNumId=\"\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"><w:multiLevelType w:val=\"hybridMultilevel\"/><w:lvl w:ilvl=\"0\" w:tplc=\"\"><w:start w:val=\"1\"/><w:numFmt w:val=\"bullet\"/><w:lvlText w:val=\"\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"720\" w:hanging=\"360\"/></w:pPr><w:rPr><w:rFonts w:ascii=\"Symbol\" w:hAnsi=\"Symbol\" w:hint=\"default\"/></w:rPr></w:lvl><w:lvl w:ilvl=\"1\" w:tplc=\"0C0A0003\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"bullet\"/><w:lvlText w:val=\"o\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"1440\" w:hanging=\"360\"/></w:pPr><w:rPr><w:rFonts w:ascii=\"Courier New\" w:hAnsi=\"Courier New\" w:cs=\"Courier New\" w:hint=\"default\"/></w:rPr></w:lvl><w:lvl w:ilvl=\"2\" w:tplc=\"0C0A0005\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"bullet\"/><w:lvlText w:val=\"\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"2160\" w:hanging=\"360\"/></w:pPr><w:rPr><w:rFonts w:ascii=\"Wingdings\" w:hAnsi=\"Wingdings\" w:hint=\"default\"/></w:rPr></w:lvl><w:lvl w:ilvl=\"3\" w:tplc=\"0C0A0001\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"bullet\"/><w:lvlText w:val=\"\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"2880\" w:hanging=\"360\"/></w:pPr><w:rPr><w:rFonts w:ascii=\"Symbol\" w:hAnsi=\"Symbol\" w:hint=\"default\"/></w:rPr></w:lvl><w:lvl w:ilvl=\"4\" w:tplc=\"0C0A0003\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"bullet\"/><w:lvlText w:val=\"o\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"3600\" w:hanging=\"360\"/></w:pPr><w:rPr><w:rFonts w:ascii=\"Courier New\" w:hAnsi=\"Courier New\" w:cs=\"Courier New\" w:hint=\"default\"/></w:rPr></w:lvl><w:lvl w:ilvl=\"5\" w:tplc=\"0C0A0005\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"bullet\"/><w:lvlText w:val=\"\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"4320\" w:hanging=\"360\"/></w:pPr><w:rPr><w:rFonts w:ascii=\"Wingdings\" w:hAnsi=\"Wingdings\" w:hint=\"default\"/></w:rPr></w:lvl><w:lvl w:ilvl=\"6\" w:tplc=\"0C0A0001\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"bullet\"/><w:lvlText w:val=\"\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"5040\" w:hanging=\"360\"/></w:pPr><w:rPr><w:rFonts w:ascii=\"Symbol\" w:hAnsi=\"Symbol\" w:hint=\"default\"/></w:rPr></w:lvl><w:lvl w:ilvl=\"7\" w:tplc=\"0C0A0003\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"bullet\"/><w:lvlText w:val=\"o\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"5760\" w:hanging=\"360\"/></w:pPr><w:rPr><w:rFonts w:ascii=\"Courier New\" w:hAnsi=\"Courier New\" w:cs=\"Courier New\" w:hint=\"default\"/></w:rPr></w:lvl><w:lvl w:ilvl=\"8\" w:tplc=\"0C0A0005\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"bullet\"/><w:lvlText w:val=\"\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"6480\" w:hanging=\"360\"/></w:pPr><w:rPr><w:rFonts w:ascii=\"Wingdings\" w:hAnsi=\"Wingdings\" w:hint=\"default\"/></w:rPr></w:lvl></w:abstractNum>';\nconst listNumbering =\n    '<w:abstractNum w:abstractNumId=\"\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"><w:multiLevelType w:val=\"hybridMultilevel\"/><w:lvl w:ilvl=\"0\" w:tplc=\"\"><w:start w:val=\"1\"/><w:numFmt w:val=\"decimal\"/><w:lvlText w:val=\"%1.\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"720\" w:hanging=\"360\"/></w:pPr></w:lvl><w:lvl w:ilvl=\"1\" w:tplc=\"\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"lowerLetter\"/><w:lvlText w:val=\"%2.\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"1440\" w:hanging=\"360\"/></w:pPr></w:lvl><w:lvl w:ilvl=\"2\" w:tplc=\"\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"lowerRoman\"/><w:lvlText w:val=\"%3.\"/><w:lvlJc w:val=\"right\"/><w:pPr><w:ind w:left=\"2160\" w:hanging=\"180\"/></w:pPr></w:lvl><w:lvl w:ilvl=\"3\" w:tplc=\"\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"decimal\"/><w:lvlText w:val=\"%4.\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"2880\" w:hanging=\"360\"/></w:pPr></w:lvl><w:lvl w:ilvl=\"4\" w:tplc=\"\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"lowerLetter\"/><w:lvlText w:val=\"%5.\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"3600\" w:hanging=\"360\"/></w:pPr></w:lvl><w:lvl w:ilvl=\"5\" w:tplc=\"\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"lowerRoman\"/><w:lvlText w:val=\"%6.\"/><w:lvlJc w:val=\"right\"/><w:pPr><w:ind w:left=\"4320\" w:hanging=\"180\"/></w:pPr></w:lvl><w:lvl w:ilvl=\"6\" w:tplc=\"\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"decimal\"/><w:lvlText w:val=\"%7.\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"5040\" w:hanging=\"360\"/></w:pPr></w:lvl><w:lvl w:ilvl=\"7\" w:tplc=\"\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"lowerLetter\"/><w:lvlText w:val=\"%8.\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"5760\" w:hanging=\"360\"/></w:pPr></w:lvl><w:lvl w:ilvl=\"8\" w:tplc=\"\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"lowerRoman\"/><w:lvlText w:val=\"%9.\"/><w:lvlJc w:val=\"right\"/><w:pPr><w:ind w:left=\"6480\" w:hanging=\"180\"/></w:pPr></w:lvl></w:abstractNum>';\nconst numNumberingXml = '<w:num w:numId=\"\"><w:abstractNumId w:val=\"\"/></w:num>';\nconst numberingXml =\n    '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><w:numbering mc:Ignorable=\"w14 w15 w16se w16cid w16 w16cex w16sdtdh w16du wp14\" xmlns:aink=\"http://schemas.microsoft.com/office/drawing/2016/ink\" xmlns:am3d=\"http://schemas.microsoft.com/office/drawing/2017/model3d\" xmlns:cx=\"http://schemas.microsoft.com/office/drawing/2014/chartex\" xmlns:cx1=\"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\" xmlns:cx2=\"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\" xmlns:cx3=\"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\" xmlns:cx4=\"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\" xmlns:cx5=\"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\" xmlns:cx6=\"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\" xmlns:cx7=\"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\" xmlns:cx8=\"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:oel=\"http://schemas.microsoft.com/office/2019/extlst\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" xmlns:w15=\"http://schemas.microsoft.com/office/word/2012/wordml\" xmlns:w16=\"http://schemas.microsoft.com/office/word/2018/wordml\" xmlns:w16cex=\"http://schemas.microsoft.com/office/word/2018/wordml/cex\" xmlns:w16cid=\"http://schemas.microsoft.com/office/word/2016/wordml/cid\" xmlns:w16du=\"http://schemas.microsoft.com/office/word/2023/wordml/word16du\" xmlns:w16sdtdh=\"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\" xmlns:w16se=\"http://schemas.microsoft.com/office/word/2015/wordml/symex\" xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\" xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" xmlns:wp14=\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\" xmlns:wpc=\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\" xmlns:wpg=\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\" xmlns:wpi=\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\" xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\"></w:numbering>';\nconst relationshipXml =\n    '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\"></Relationships>';\nconst settingsTagsOrder = [\n    \"w:writeProtection\",\n    \"w:view\",\n    \"w:zoom\",\n    \"w:removePersonalInformation\",\n    \"w:removeDateAndTime\",\n    \"w:doNotDisplayPageBoundaries\",\n    \"w:displayBackgroundShape\",\n    \"w:printPostScriptOverText\",\n    \"w:printFractionalCharacterWidth\",\n    \"w:printFormsData\",\n    \"w:embedTrueTypeFonts\",\n    \"w:embedSystemFonts\",\n    \"w:saveSubsetFonts\",\n    \"w:saveFormsData\",\n    \"w:mirrorMargins\",\n    \"w:alignBordersAndEdges\",\n    \"w:bordersDoNotSurroundHeader\",\n    \"w:bordersDoNotSurroundFooter\",\n    \"w:gutterAtTop\",\n    \"w:hideSpellingErrors\",\n    \"w:hideGrammaticalErrors\",\n    \"w:activeWritingStyle\",\n    \"w:proofState\",\n    \"w:formsDesign\",\n    \"w:attachedTemplate\",\n    \"w:linkStyles\",\n    \"w:stylePaneFormatFilter\",\n    \"w:stylePaneSortMethod\",\n    \"w:documentType\",\n    \"w:mailMerge\",\n    \"w:revisionView\",\n    \"w:trackRevisions\",\n    \"w:doNotTrackMoves\",\n    \"w:doNotTrackFormatting\",\n    \"w:documentProtection\",\n    \"w:autoFormatOverride\",\n    \"w:styleLockTheme\",\n    \"w:styleLockQFSet\",\n    \"w:defaultTabStop\",\n    \"w:autoHyphenation\",\n    \"w:consecutiveHyphenLimit\",\n    \"w:hyphenationZone\",\n    \"w:doNotHyphenateCaps\",\n    \"w:showEnvelope\",\n    \"w:summaryLength\",\n    \"w:clickAndTypeStyle\",\n    \"w:defaultTableStyle\",\n    \"w:evenAndOddHeaders\",\n    \"w:bookFoldRevPrinting\",\n    \"w:bookFoldPrinting\",\n    \"w:bookFoldPrintingSheets\",\n    \"w:drawingGridHorizontalSpacing\",\n    \"w:drawingGridVerticalSpacing\",\n    \"w:displayHorizontalDrawingGridEvery\",\n    \"w:displayVerticalDrawingGridEvery\",\n    \"w:doNotUseMarginsForDrawingGridOrigin\",\n    \"w:drawingGridHorizontalOrigin\",\n    \"w:drawingGridVerticalOrigin\",\n    \"w:doNotShadeFormData\",\n    \"w:noPunctuationKerning\",\n    \"w:characterSpacingControl\",\n    \"w:printTwoOnOne\",\n    \"w:strictFirstAndLastChars\",\n    \"w:noLineBreaksAfter\",\n    \"w:noLineBreaksBefore\",\n    \"w:savePreviewPicture\",\n    \"w:doNotValidateAgainstSchema\",\n    \"w:saveInvalidXml\",\n    \"w:ignoreMixedContent\",\n    \"w:alwaysShowPlaceholderText\",\n    \"w:doNotDemarcateInvalidXml\",\n    \"w:saveXmlDataOnly\",\n    \"w:useXSLTWhenSaving\",\n    \"w:saveThroughXslt\",\n    \"w:showXMLTags\",\n    \"w:alwaysMergeEmptyNamespace\",\n    \"w:updateFields\",\n    \"w:hdrShapeDefaults\",\n    \"w:footnotePr\",\n    \"w:endnotePr\",\n    \"w:compat\",\n    \"w:docVars\",\n    \"w:rsids\",\n    \"m:mathPr\",\n    \"w:uiCompat97To2003\",\n    \"w:attachedSchema\",\n    \"w:themeFontLang\",\n    \"w:clrSchemeMapping\",\n    \"w:doNotIncludeSubdocsInStats\",\n    \"w:doNotAutoCompressPictures\",\n    \"w:forceUpgrade\",\n    \"w:captions\",\n    \"w:readModeInkLockDown\",\n    \"w:smartTagType\",\n    \"sl:schemaLibrary\",\n    \"w:shapeDefaults\",\n    \"w:doNotEmbedSmartTags\",\n    \"w:decimalSymbol\",\n    \"w:listSeparator\",\n];\n\nexport {\n    footerXml,\n    headerXml,\n    listBullets,\n    listNumbering,\n    numNumberingXml,\n    numberingXml,\n    relationshipXml,\n    settingsTagsOrder,\n};\n","import { DOMParser, XMLSerializer } from \"@xmldom/xmldom\";\nimport * as xpath from \"xpath\";\nimport { WordFragment } from \"../create\";\nimport {\n    CreateImage,\n    CreateReference,\n    CreateSection,\n    Relationship,\n    ListNested,\n    OptionsProperties,\n    OptionsReplaceVariableImage,\n    OptionsReplaceVariableList,\n    OptionsReplaceVariableTable,\n    OptionsReplaceVariableWordFragment,\n    OptionsSectionLayout,\n    Target,\n} from \"../element\";\nimport { numberingXml, relationshipXml, settingsTagsOrder } from \"./ooxml\";\nimport {\n    applyHtmlSpecialChars,\n    escapeRegExp,\n    generateRandomNumber,\n    generateRegExpForReplacement,\n    generateUniqid,\n    getNamespace,\n} from \"../util\";\n\ntype ContentType =\n    | Target\n    | \"app\"\n    | \"core\"\n    | \"numbering\"\n    | \"settings\"\n    | \"styles\";\n\n/**\n * Docx structure\n */\nclass Docx {\n    /**\n     * Conformance\n     */\n    protected conformance: \"transitional\" | \"strict\";\n\n    /**\n     * File contents\n     */\n    protected fileContents: Map<string, ArrayBuffer>;\n\n    /**\n     * DOCX namespaces\n     */\n    protected namespaces: Map<string, string>;\n\n    /**\n     * Text contents\n     */\n    protected textContents: Map<string, string>;\n\n    /**\n     * Constructor\n     */\n    constructor() {\n        this.conformance = \"transitional\";\n        this.fileContents = new Map<string, ArrayBuffer>();\n        this.namespaces = new Map<string, string>();\n        this.textContents = new Map<string, string>();\n    }\n\n    /**\n     * Getter file contents\n     *\n     * @returns File contents\n     */\n    public getFileContents(): Map<string, ArrayBuffer> {\n        return this.fileContents;\n    }\n\n    /**\n     * Getter namespaces\n     *\n     * @returns Namespaces\n     */\n    public getNamespaces(): Map<string, string> {\n        return this.namespaces;\n    }\n\n    /**\n     * Getter text contents\n     *\n     * @returns Text contents\n     */\n    public getTextContents(): Map<string, string> {\n        return this.textContents;\n    }\n\n    /**\n     * Adds a file content\n     *\n     * @param path - File path\n     * @param content - File content\n     */\n    public addFileContent(path: string, content: ArrayBuffer) {\n        this.fileContents.set(path, content);\n    }\n\n    /**\n     * Adds a text content\n     *\n     * @param path - File path\n     * @param content - File content\n     */\n    public addTextContent(path: string, content: string) {\n        this.textContents.set(path, content);\n    }\n\n    /**\n     * Adds XML content in document\n     *\n     * @param xml - XML content\n     */\n    public addXmlContent(xml: string) {\n        const targetContentsPath = this.getContentPathsByType(\"document\");\n        let nodeXpathQuery = \"//w:document\";\n        const insertMode = \"insertBefore\";\n\n        if (targetContentsPath != null && targetContentsPath.length > 0) {\n            targetContentsPath.forEach(targetContentPath => {\n                const targetKey = targetContentPath;\n                const targetContent = this.getTextContent(targetKey);\n                if (targetContent != null) {\n                    nodeXpathQuery = \"(//w:sectPr)[last()]\";\n\n                    const contentDom = new DOMParser().parseFromString(\n                        targetContent,\n                        \"text/xml\"\n                    );\n\n                    const selectXpath = xpath.useNamespaces({\n                        w: getNamespace(this.namespaces, \"w\"),\n                    });\n                    const nodesXpath = selectXpath(\n                        nodeXpathQuery,\n                        contentDom\n                    ) as Element[];\n\n                    if (nodesXpath.length > 0) {\n                        // wrap the XML contents in a w:root tag to add all child nodes\n                        const xmlDom = new DOMParser().parseFromString(\n                            \"<w:root>\" + xml + \"</w:root>\",\n                            \"text/xml\"\n                        );\n                        const childNodes = xmlDom.documentElement.childNodes;\n                        Array.from(childNodes).forEach(childNode => {\n                            // clone the node to be inserted to avoid removing it from childNodes\n                            const newChildNode = childNode.cloneNode(true);\n                            if (insertMode == \"insertBefore\") {\n                                // insert before insertion\n                                const nodeXpathParent =\n                                    nodesXpath[0].parentNode;\n                                if (nodeXpathParent != null) {\n                                    nodeXpathParent.insertBefore(\n                                        newChildNode,\n                                        nodesXpath[0]\n                                    );\n                                }\n                            } else if (insertMode == \"appendChild\") {\n                                // append child insertion\n                                nodesXpath[0].appendChild(newChildNode);\n                            }\n                        });\n\n                        this.addTextContent(\n                            targetKey,\n                            new XMLSerializer().serializeToString(contentDom)\n                        );\n                    }\n                }\n            });\n        }\n    }\n\n    /**\n     * Adds XML reference (header, footer)\n     *\n     * @param reference - Reference element\n     */\n    public addXmlContentReference(reference: CreateReference) {\n        const targetContentsPath = this.getContentPathsByType(\"document\");\n\n        // get target section of the new reference\n        let nodeXpathQuerySections = \"(//w:sectPr)[last()]\";\n        if (reference.getOptions().section != null) {\n            if (\n                typeof reference.getOptions().section === \"number\" &&\n                reference.getOptions().section != -1\n            ) {\n                nodeXpathQuerySections =\n                    \"(//w:sectPr)[\" + reference.getOptions().section + \"]\";\n            } else if (\n                typeof reference.getOptions().section === \"string\" &&\n                reference.getOptions().section == \"all\"\n            ) {\n                nodeXpathQuerySections = \"//w:sectPr\";\n            }\n        }\n\n        if (targetContentsPath != null && targetContentsPath.length > 0) {\n            targetContentsPath.forEach(targetContentPath => {\n                const targetKey = targetContentPath;\n                const targetContent = this.getTextContent(targetKey);\n                if (targetContent != null) {\n                    const contentDom = new DOMParser().parseFromString(\n                        targetContent,\n                        \"text/xml\"\n                    );\n\n                    const selectXpath = xpath.useNamespaces({\n                        w: getNamespace(this.namespaces, \"w\"),\n                    });\n                    const nodesXpathSections = selectXpath(\n                        nodeXpathQuerySections,\n                        contentDom\n                    ) as Element[];\n                    nodesXpathSections.forEach(nodesXpathSection => {\n                        const typeReferences =\n                            nodesXpathSection.getElementsByTagNameNS(\n                                getNamespace(this.namespaces, \"w\"),\n                                reference.getTarget() + \"Reference\"\n                            );\n                        // check if the reference type exists\n                        let referenceContent;\n                        let referenceTarget;\n                        Array.from(typeReferences).forEach(typeReference => {\n                            if (\n                                typeReference.getAttribute(\"w:type\") ==\n                                reference.getOptions().type\n                            ) {\n                                const rIdReference =\n                                    typeReference.getAttribute(\"r:id\");\n                                if (rIdReference != null) {\n                                    const targetContentsPathRels =\n                                        this.getContentPathsByType(\n                                            \"document\",\n                                            true\n                                        );\n                                    if (\n                                        targetContentsPathRels != null &&\n                                        targetContentsPathRels.length > 0\n                                    ) {\n                                        const targetKeyRels =\n                                            targetContentsPathRels[0]; // get only the first target. Relationships only use one internal file\n                                        const targetContentRels =\n                                            this.getTextContent(targetKeyRels);\n                                        if (targetContentRels != null) {\n                                            const xmlDomRels =\n                                                new DOMParser().parseFromString(\n                                                    targetContentRels,\n                                                    \"text/xml\"\n                                                );\n                                            const selectXpath =\n                                                xpath.useNamespaces({\n                                                    rels: getNamespace(\n                                                        this.namespaces,\n                                                        \"rels\"\n                                                    ),\n                                                });\n\n                                            const nodesXpathRels = selectXpath(\n                                                '//rels:Relationship[@Id=\"' +\n                                                    rIdReference +\n                                                    '\"]',\n                                                xmlDomRels\n                                            ) as Element[];\n                                            if (nodesXpathRels.length > 0) {\n                                                referenceTarget =\n                                                    \"word/\" +\n                                                    nodesXpathRels[0].getAttribute(\n                                                        \"Target\"\n                                                    );\n                                                referenceContent =\n                                                    this.getTextContent(\n                                                        referenceTarget\n                                                    );\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        });\n                        if (referenceContent == null) {\n                            // a reference content doesn't exist, generate it\n\n                            const referenceId = generateUniqid(\"\");\n                            referenceTarget =\n                                reference.getTarget() + referenceId + \".xml\";\n\n                            // add relationship\n                            const newRelationship: Relationship = {\n                                id: \"rId\" + referenceId,\n                                target: referenceTarget,\n                                type:\n                                    \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/\" +\n                                    reference.getTarget(),\n                            };\n                            this.addXmlRelationship(\n                                newRelationship,\n                                \"document\"\n                            );\n\n                            // set the internal path to add the new contents\n                            referenceTarget = \"word/\" + referenceTarget;\n\n                            // add the new reference into the section\n                            const contentDomNewReference =\n                                new DOMParser().parseFromString(\n                                    \"<w:\" +\n                                        reference.getTarget() +\n                                        'Reference r:id=\"' +\n                                        \"rId\" +\n                                        referenceId +\n                                        '\" w:type=\"' +\n                                        reference.getOptions().type +\n                                        '\"/>',\n                                    \"text/xml\"\n                                );\n                            const newReferenceNode =\n                                contentDomNewReference.documentElement;\n                            if (newReferenceNode != null) {\n                                nodesXpathSection.insertBefore(\n                                    newReferenceNode,\n                                    nodesXpathSection.firstChild\n                                );\n                            }\n\n                            // add the new Override\n                            this.addXmlOverride(\n                                \"/\" + referenceTarget,\n                                \"application/vnd.openxmlformats-officedocument.wordprocessingml.\" +\n                                    reference.getTarget() +\n                                    \"+xml\"\n                            );\n\n                            // create reference contents\n                            referenceContent = reference.create();\n                        } else {\n                            // the reference exists, check if it must be replaced\n                            if (\n                                reference.getOptions().replaceOthers != null &&\n                                !reference.getOptions().replaceOthers\n                            ) {\n                                referenceContent = null;\n                            } else {\n                                // create reference contents\n                                referenceContent = reference.create();\n                            }\n                        }\n\n                        if (\n                            referenceContent != null &&\n                            referenceTarget != null\n                        ) {\n                            if (\n                                reference.getOptions().type != null &&\n                                reference.getOptions().type == \"first\"\n                            ) {\n                                const nodesTitlePg =\n                                    nodesXpathSection.getElementsByTagNameNS(\n                                        getNamespace(this.namespaces, \"w\"),\n                                        \"titlePg\"\n                                    );\n                                if (nodesTitlePg.length == 0) {\n                                    const contentDomTitlePg =\n                                        new DOMParser().parseFromString(\n                                            \"<w:titlePg/>\",\n                                            \"text/xml\"\n                                        );\n                                    const newTitlePgNode =\n                                        contentDomTitlePg.documentElement;\n                                    if (newTitlePgNode != null) {\n                                        nodesXpathSection.appendChild(\n                                            newTitlePgNode\n                                        );\n                                    }\n                                } else {\n                                    nodesTitlePg\n                                        .item(0)\n                                        ?.setAttribute(\"w:val\", \"true\");\n                                }\n                            }\n\n                            this.addTextContent(\n                                referenceTarget,\n                                referenceContent\n                            );\n                        }\n                    });\n\n                    this.addTextContent(\n                        targetKey,\n                        new XMLSerializer().serializeToString(contentDom)\n                    );\n                }\n            });\n        }\n    }\n\n    /**\n     * Adds DOCX default\n     *\n     * @param extension - File extension\n     * @param contentType - Content type\n     */\n    public addXmlDefault(extension: string, contentType: string) {\n        const contentTypesContent = this.getTextContent(\"[Content_Types].xml\");\n\n        if (contentTypesContent != null) {\n            const contentTypesDom = new DOMParser().parseFromString(\n                contentTypesContent,\n                \"text/xml\"\n            );\n            const selectXpath = xpath.useNamespaces({\n                xmlns: \"http://schemas.openxmlformats.org/package/2006/content-types\",\n            });\n            // check lower and upper cases. Extensions can't be repeated\n            const nodesXpathLowerCase = selectXpath(\n                \"//xmlns:Default[@Extension='\" + extension.toLowerCase() + \"']\",\n                contentTypesDom\n            ) as Element[];\n            const nodesXpathUpperCase = selectXpath(\n                \"//xmlns:Default[@Extension='\" + extension.toUpperCase() + \"']\",\n                contentTypesDom\n            ) as Element[];\n            // add the new default only if the extension doesn't exist\n            if (\n                nodesXpathLowerCase.length == 0 &&\n                nodesXpathUpperCase.length == 0\n            ) {\n                const contentDom = new DOMParser().parseFromString(\n                    '<Default ContentType=\"' +\n                        contentType +\n                        '\" Extension=\"' +\n                        extension +\n                        '\"/>',\n                    \"text/xml\"\n                );\n                const newDefaultNode = contentDom.documentElement;\n                if (newDefaultNode != null) {\n                    contentTypesDom.documentElement.appendChild(newDefaultNode);\n                }\n\n                this.addTextContent(\n                    \"[Content_Types].xml\",\n                    new XMLSerializer().serializeToString(contentTypesDom)\n                );\n            }\n        }\n    }\n\n    /**\n     * Adds XML numbering\n     *\n     * @param abstractNum - Abstract num\n     * @param num - Num content\n     */\n    public addXmlNumbering(abstractNum: string, num: string) {\n        // check if there's a numbering.xml style.\n        // If this numbering file doesn't exist add it from a skeleton\n        let contentsNumbering = this.getContentPathsByType(\"numbering\");\n        if (contentsNumbering == null) {\n            this.addXmlSkeletonFile(\"numbering\");\n            // get the numbering content after the skeleton has been added\n            contentsNumbering = this.getContentPathsByType(\"numbering\");\n\n            // add relationship\n            const newRelationship: Relationship = {\n                id: generateUniqid(\"rId\"),\n                target: \"numbering.xml\",\n                type: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering\",\n            };\n            this.addXmlRelationship(newRelationship, \"document\");\n        }\n\n        if (contentsNumbering != null) {\n            const targetKey = contentsNumbering[0]; // get only the first target. Settings only has one internal file\n            const targetContent = this.getTextContent(targetKey);\n\n            if (targetContent != null) {\n                const contentNumberingDom = new DOMParser().parseFromString(\n                    targetContent,\n                    \"text/xml\"\n                );\n\n                // add the new numbering that includes two elements: abstractNum and num\n\n                // add abstractNum\n                const contentDom = new DOMParser().parseFromString(\n                    abstractNum,\n                    \"text/xml\"\n                );\n                const newDefaultNode = contentDom.documentElement;\n                if (newDefaultNode != null) {\n                    if (\n                        contentNumberingDom.documentElement.firstChild == null\n                    ) {\n                        contentNumberingDom.documentElement.appendChild(\n                            newDefaultNode\n                        );\n                    } else {\n                        contentNumberingDom.documentElement.firstChild.parentNode?.insertBefore(\n                            newDefaultNode,\n                            contentNumberingDom.documentElement.firstChild\n                        );\n                    }\n                }\n                let numberingContents = new XMLSerializer().serializeToString(\n                    contentNumberingDom\n                );\n\n                // add num\n                numberingContents = numberingContents.replace(\n                    \"</w:numbering>\",\n                    num + \"</w:numbering>\"\n                );\n\n                this.addTextContent(targetKey, numberingContents);\n            }\n        }\n    }\n\n    /**\n     * Adds DOCX override\n     *\n     * @param partName - Part name\n     * @param contentType - Content type\n     */\n    public addXmlOverride(partName: string, contentType: string) {\n        const contentTypesContent = this.getTextContent(\"[Content_Types].xml\");\n\n        if (contentTypesContent != null) {\n            const contentTypesDom = new DOMParser().parseFromString(\n                contentTypesContent,\n                \"text/xml\"\n            );\n            const selectXpath = xpath.useNamespaces({\n                xmlns: \"http://schemas.openxmlformats.org/package/2006/content-types\",\n            });\n            // partName can't be repeated\n            const nodesXpathPartName = selectXpath(\n                \"//xmlns:Override[@PartName='\" + partName + \"']\",\n                contentTypesDom\n            ) as Element[];\n            // add the new default only if the partName doesn't exist\n            if (nodesXpathPartName.length == 0) {\n                const contentDom = new DOMParser().parseFromString(\n                    '<Override ContentType=\"' +\n                        contentType +\n                        '\" PartName=\"' +\n                        partName +\n                        '\"/>',\n                    \"text/xml\"\n                );\n                const newDefaultNode = contentDom.documentElement;\n                if (newDefaultNode != null) {\n                    contentTypesDom.documentElement.appendChild(newDefaultNode);\n                }\n\n                this.addTextContent(\n                    \"[Content_Types].xml\",\n                    new XMLSerializer().serializeToString(contentTypesDom)\n                );\n            }\n        }\n    }\n\n    /**\n     * Adds DOCX properties\n     *\n     * @param settings - Properties options\n     */\n    public addXmlProperties(options: OptionsProperties) {\n        const targetContentsPathApp = this.getContentPathsByType(\"app\");\n        const targetContentsPathCore = this.getContentPathsByType(\"core\");\n        const addProperty = (\n            dom: Document,\n            tag: string,\n            value: string,\n            attributes?: Map<string, string>\n        ) => {\n            const nodesProperty = dom.getElementsByTagName(tag);\n            const nodeProperty = nodesProperty.item(0);\n            if (nodeProperty != null) {\n                nodeProperty.textContent = value;\n            } else {\n                const newNode = dom.createElement(tag);\n                if (attributes != null) {\n                    for (const [\n                        attributeName,\n                        attributeValue,\n                    ] of attributes.entries()) {\n                        newNode.setAttribute(attributeName, attributeValue);\n                    }\n                }\n                newNode.textContent = value;\n\n                dom.documentElement.appendChild(newNode);\n            }\n        };\n\n        if (targetContentsPathApp != null && targetContentsPathApp.length > 0) {\n            const targetKey = targetContentsPathApp[0]; // get only the first target. app only has one internal file\n            const targetContent = this.getTextContent(targetKey);\n            if (targetContent != null) {\n                const xmlDom = new DOMParser().parseFromString(\n                    targetContent,\n                    \"text/xml\"\n                );\n\n                if (options.manager != null) {\n                    addProperty(xmlDom, \"Manager\", options.manager);\n                }\n\n                if (options.company != null) {\n                    addProperty(xmlDom, \"Company\", options.company);\n                }\n\n                this.addTextContent(\n                    targetKey,\n                    new XMLSerializer().serializeToString(xmlDom)\n                );\n            }\n        }\n\n        if (\n            targetContentsPathCore != null &&\n            targetContentsPathCore.length > 0\n        ) {\n            const targetKey = targetContentsPathCore[0]; // get only the first target. app only has one internal file\n            const targetContent = this.getTextContent(targetKey);\n            if (targetContent != null) {\n                const xmlDom = new DOMParser().parseFromString(\n                    targetContent,\n                    \"text/xml\"\n                );\n\n                if (options.category != null) {\n                    const attributes = new Map<string, string>();\n                    attributes.set(\n                        \"xmlns:cp\",\n                        \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\"\n                    );\n                    addProperty(\n                        xmlDom,\n                        \"cp:category\",\n                        options.category,\n                        attributes\n                    );\n                }\n\n                if (options.created != null) {\n                    const attributes = new Map<string, string>();\n                    attributes.set(\n                        \"xmlns:dcterms\",\n                        \"http://purl.org/dc/terms/\"\n                    );\n                    attributes.set(\"xsi:type\", \"dcterms:W3CDTF\");\n                    addProperty(\n                        xmlDom,\n                        \"dcterms:created\",\n                        options.created,\n                        attributes\n                    );\n                }\n\n                if (options.creator != null) {\n                    const attributes = new Map<string, string>();\n                    attributes.set(\n                        \"xmlns:dc\",\n                        \"http://purl.org/dc/elements/1.1/\"\n                    );\n                    addProperty(xmlDom, \"dc:creator\", options.creator);\n                }\n\n                if (options.description != null) {\n                    const attributes = new Map<string, string>();\n                    attributes.set(\n                        \"xmlns:dc\",\n                        \"http://purl.org/dc/elements/1.1/\"\n                    );\n                    addProperty(\n                        xmlDom,\n                        \"dc:description\",\n                        options.description,\n                        attributes\n                    );\n                }\n\n                if (options.keywords != null) {\n                    const attributes = new Map<string, string>();\n                    attributes.set(\n                        \"xmlns:cp\",\n                        \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\"\n                    );\n                    addProperty(\n                        xmlDom,\n                        \"cp:keywords\",\n                        options.keywords,\n                        attributes\n                    );\n                }\n\n                if (options.lastModifiedBy != null) {\n                    const attributes = new Map<string, string>();\n                    attributes.set(\n                        \"xmlns:cp\",\n                        \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\"\n                    );\n                    addProperty(\n                        xmlDom,\n                        \"cp:lastModifiedBy\",\n                        options.lastModifiedBy,\n                        attributes\n                    );\n                }\n\n                if (options.modified != null) {\n                    const attributes = new Map<string, string>();\n                    attributes.set(\n                        \"xmlns:dcterms\",\n                        \"http://purl.org/dc/terms/\"\n                    );\n                    attributes.set(\"xsi:type\", \"dcterms:W3CDTF\");\n                    addProperty(\n                        xmlDom,\n                        \"dcterms:modified\",\n                        options.modified,\n                        attributes\n                    );\n                }\n\n                if (options.revision != null) {\n                    const attributes = new Map<string, string>();\n                    attributes.set(\n                        \"xmlns:cp\",\n                        \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\"\n                    );\n                    addProperty(\n                        xmlDom,\n                        \"cp:revision\",\n                        options.revision,\n                        attributes\n                    );\n                }\n\n                if (options.subject != null) {\n                    const attributes = new Map<string, string>();\n                    attributes.set(\n                        \"xmlns:dc\",\n                        \"http://purl.org/dc/elements/1.1/\"\n                    );\n                    addProperty(\n                        xmlDom,\n                        \"dc:subject\",\n                        options.subject,\n                        attributes\n                    );\n                }\n\n                if (options.title != null) {\n                    const attributes = new Map<string, string>();\n                    attributes.set(\n                        \"xmlns:dc\",\n                        \"http://purl.org/dc/elements/1.1/\"\n                    );\n                    addProperty(xmlDom, \"dc:title\", options.title, attributes);\n                }\n\n                this.addTextContent(\n                    targetKey,\n                    new XMLSerializer().serializeToString(xmlDom)\n                );\n            }\n        }\n    }\n\n    /**\n     * Adds XML relationship\n     *\n     * @param xml - XML content\n     * @param target - Target file\n     */\n    public addXmlRelationship(\n        relationship: Relationship,\n        target: Target = \"document\"\n    ) {\n        // generate new relationship\n        let newRelationship =\n            '<Relationship Id=\"' +\n            relationship.id +\n            '\" Target=\"' +\n            relationship.target +\n            '\" ';\n        if (relationship.targetMode != null) {\n            newRelationship += ' TargetMode=\"' + relationship.targetMode + '\" ';\n        }\n        newRelationship += ' Type=\"' + relationship.type + '\"/>';\n\n        const targetContentsPath = this.getContentPathsByType(target, true);\n\n        if (targetContentsPath != null && targetContentsPath.length > 0) {\n            targetContentsPath.forEach(targetContentPath => {\n                const targetContent = this.getTextContent(targetContentPath);\n                if (targetContent != null) {\n                    const xmlDom = new DOMParser().parseFromString(\n                        targetContent,\n                        \"text/xml\"\n                    );\n                    const selectXpath = xpath.useNamespaces({\n                        rels: getNamespace(this.namespaces, \"rels\"),\n                    });\n\n                    // check if the id exists.\n                    // Do not add it in this case to avoid duplicated relationships\n                    const nodesXpath = selectXpath(\n                        '//rels:Relationship[@Id=\"' + relationship.id + '\"]',\n                        xmlDom\n                    ) as Element[];\n\n                    if (nodesXpath.length == 0) {\n                        const contentDom = new DOMParser().parseFromString(\n                            newRelationship,\n                            \"text/xml\"\n                        );\n\n                        const newRelationshipNode = contentDom.documentElement;\n                        xmlDom.documentElement.appendChild(newRelationshipNode);\n\n                        this.addTextContent(\n                            targetContentPath,\n                            new XMLSerializer().serializeToString(xmlDom)\n                        );\n                    }\n                }\n            });\n        }\n    }\n\n    /**\n     * Adds DOCX settings\n     *\n     * @param settings - Settings options\n     */\n    public addXmlSettings(settings: Map<string, string>) {\n        const targetContentsPath = this.getContentPathsByType(\"settings\");\n\n        if (targetContentsPath != null && targetContentsPath.length > 0) {\n            const targetKey = targetContentsPath[0]; // get only the first target. Settings only has one internal file\n            const targetContent = this.getTextContent(targetKey);\n            if (targetContent != null) {\n                const xmlDom = new DOMParser().parseFromString(\n                    targetContent,\n                    \"text/xml\"\n                );\n\n                // insert new settings\n                for (const [settingName, settingValue] of settings.entries()) {\n                    const nodeXpathQuery = \"//\" + settingName;\n                    const selectXpath = xpath.useNamespaces({\n                        w: getNamespace(this.namespaces, \"w\"),\n                    });\n                    const nodesXpath = selectXpath(\n                        nodeXpathQuery,\n                        xmlDom\n                    ) as Element[];\n\n                    const contentDom = new DOMParser().parseFromString(\n                        settingValue,\n                        \"text/xml\"\n                    );\n\n                    if (nodesXpath.length > 0) {\n                        // the setting exists, add the new setting and remove the previous one\n                        const nodeParent = nodesXpath[0].parentNode;\n                        if (nodeParent != null) {\n                            const newSettingNode = contentDom.documentElement;\n                            if (newSettingNode != null) {\n                                nodeParent.insertBefore(\n                                    newSettingNode,\n                                    nodesXpath[0]\n                                );\n                                nodeParent.removeChild(nodesXpath[0]);\n                            }\n                        }\n                    } else {\n                        // the setting doesn't exist, add it in the correct order\n                        const childNodesSettings =\n                            xmlDom.documentElement.childNodes;\n                        const indexNewSetting =\n                            settingsTagsOrder.indexOf(settingName);\n                        let settingAdded = false;\n                        Array.from(childNodesSettings).forEach(\n                            childNodeSettings => {\n                                const indexExistingSetting =\n                                    settingsTagsOrder.indexOf(\n                                        childNodeSettings.nodeName\n                                    );\n                                if (indexExistingSetting > indexNewSetting) {\n                                    const nodeParent =\n                                        childNodeSettings.parentNode;\n                                    if (nodeParent != null) {\n                                        const newSettingNode =\n                                            contentDom.documentElement;\n                                        if (newSettingNode != null) {\n                                            nodeParent.insertBefore(\n                                                newSettingNode,\n                                                childNodeSettings\n                                            );\n                                            settingAdded = true;\n                                        }\n                                    }\n                                }\n                            }\n                        );\n                        // in case no node was found (pretty unlikely) append the node\n                        const newSettingNode = contentDom.documentElement;\n                        if (!settingAdded && newSettingNode != null) {\n                            xmlDom.documentElement.appendChild(newSettingNode);\n                        }\n                    }\n                }\n\n                this.addTextContent(\n                    targetKey,\n                    new XMLSerializer().serializeToString(xmlDom)\n                );\n            }\n        }\n    }\n\n    /**\n     * Add XML skeleton\n     *\n     * @param contentType - Content type\n     */\n    public addXmlSkeletonFile(contentType: ContentType) {\n        if (contentType == \"numbering\") {\n            this.addTextContent(\"word/numbering.xml\", numberingXml);\n            this.addXmlOverride(\n                \"/word/numbering.xml\",\n                \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\"\n            );\n        }\n    }\n\n    /**\n     * Adds DOCX custom style\n     *\n     * @param style - Custom style contents\n     * @param type - Style type\n     * @param name - Style name\n     */\n    public addXmlStyleCustom(\n        style: string,\n        type: \"character\" | \"paragraph\",\n        name: string\n    ) {\n        // create the XML style\n        let newStyleXml;\n\n        if (type == \"character\") {\n            newStyleXml =\n                '<w:style w:customStyle=\"1\" w:styleId=\"' +\n                name +\n                '\" w:type=\"character\"><w:name w:val=\"' +\n                name +\n                '\"/><w:link w:val=\"' +\n                name +\n                '\"/><w:uiPriority w:val=\"99\"/><w:semiHidden/><w:unhideWhenUsed/><w:rsid w:val=\"006E0FDA\"/>' +\n                style +\n                \"</w:style>\";\n        } else if (type == \"paragraph\") {\n            // get pPr and rPr styles as separated contents to be added in the new style\n            const pPrStyle =\n                style.substring(\n                    style.indexOf(\"<w:pPr>\"),\n                    style.indexOf(\"<w:rPr>\")\n                ) + \"</w:pPr>\";\n            const rPrStyle =\n                style.substring(\n                    style.indexOf(\"<w:rPr>\"),\n                    style.indexOf(\"</w:rPr>\")\n                ) + \"</w:rPr>\";\n            newStyleXml =\n                '<w:style w:customStyle=\"1\" w:styleId=\"' +\n                name +\n                '\" w:type=\"paragraph\"><w:name w:val=\"' +\n                name +\n                '\"/><w:link w:val=\"' +\n                name +\n                'Car\"/><w:uiPriority w:val=\"99\"/><w:semiHidden/><w:unhideWhenUsed/><w:rsid w:val=\"006E0FDA\"/>' +\n                pPrStyle +\n                rPrStyle +\n                '</w:style><w:style w:customStyle=\"1\" w:styleId=\"' +\n                name +\n                'Car\" w:type=\"character\"><w:name w:val=\"' +\n                name +\n                '\"/><w:link w:val=\"' +\n                name +\n                '\"/><w:uiPriority w:val=\"99\"/><w:semiHidden/><w:unhideWhenUsed/><w:rsid w:val=\"006E0FDA\"/>' +\n                rPrStyle +\n                \"</w:style>\";\n        }\n\n        if (newStyleXml != null) {\n            this.addXmlStyle(newStyleXml);\n        }\n    }\n\n    /**\n     * Adds XML style\n     *\n     * @param xml - Styles\n     */\n    public addXmlStyle(xml: string) {\n        const targetContentsPath = this.getContentPathsByType(\"styles\");\n\n        if (targetContentsPath != null && targetContentsPath.length > 0) {\n            const targetKey = targetContentsPath[0]; // get only the first target. Styles only has one internal file\n            const targetContent = this.getTextContent(targetKey);\n            if (targetContent != null) {\n                const styleContents = targetContent.replace(\n                    \"</w:styles>\",\n                    xml + \"</w:styles>\"\n                );\n\n                this.addTextContent(targetKey, styleContents);\n            }\n        }\n    }\n\n    /**\n     * Extracts XML variables\n     *\n     * @param content - XML content\n     * @param templateSymbolStart - Template symbol start\n     * @param templateSymbolEnd - Template symbol end\n     * @param regExprVariableSymbols - Regular expression variable symbols\n     * @returns Variables\n     */\n    public extractXmlVariables(\n        content: string,\n        templateSymbolStart: string,\n        templateSymbolEnd: string,\n        regExprVariableSymbols: string\n    ): string[] {\n        const variables: string[] = [];\n        const contentDom = new DOMParser().parseFromString(content, \"text/xml\");\n        const selectXpath = xpath.useNamespaces({\n            w: getNamespace(this.namespaces, \"w\"),\n            wp: getNamespace(this.namespaces, \"wp\"),\n        });\n        // extract variables\n        const matchPlaceholderExtract = (\n            content: string,\n            variables: string[]\n        ) => {\n            const matchesPlaceholders = content.match(\n                new RegExp(\n                    escapeRegExp(templateSymbolStart) +\n                        regExprVariableSymbols +\n                        escapeRegExp(templateSymbolEnd),\n                    \"g\"\n                )\n            );\n\n            if (matchesPlaceholders != null) {\n                matchesPlaceholders.forEach(matchPlaceholders => {\n                    // keep the placeholder removing template symbols\n                    variables.push(\n                        matchPlaceholders\n                            .replace(templateSymbolStart, \"\")\n                            .replace(templateSymbolEnd, \"\")\n                    );\n                });\n            }\n        };\n\n        // text nodes\n        const nodesXpathT = selectXpath(\"//w:t\", contentDom) as Element[];\n        nodesXpathT.forEach(nodeXpathT => {\n            matchPlaceholderExtract(nodeXpathT.toString(), variables);\n        });\n\n        // image nodes\n        const nodesXpathDocPr = selectXpath(\n            \"//wp:docPr\",\n            contentDom\n        ) as Element[];\n        nodesXpathDocPr.forEach(nodeXpathDocPr => {\n            const titleAttribute = nodeXpathDocPr.getAttribute(\"title\");\n            if (titleAttribute != null) {\n                matchPlaceholderExtract(titleAttribute, variables);\n            }\n\n            const descrAttribute = nodeXpathDocPr.getAttribute(\"descr\");\n            if (descrAttribute != null) {\n                matchPlaceholderExtract(descrAttribute, variables);\n            }\n        });\n\n        return variables;\n    }\n\n    /**\n     *  Generates inline contents\n     *\n     * @param xml - XML content\n     * @returns Inline XML contents\n     */\n    public getInlineXmlContents(xml: string): string {\n        let inlineXmlContents = \"\";\n\n        // get only inline contents\n        const wordFragmentDom = new DOMParser().parseFromString(\n            '<w:root xmlns:ve=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\">' +\n                xml +\n                \"</w:root>\",\n            \"text/xml\"\n        );\n\n        const selectXpath = xpath.useNamespaces({\n            m: getNamespace(this.namespaces, \"m\"),\n            w: getNamespace(this.namespaces, \"w\"),\n        });\n        const nodesXpath = selectXpath(\n            \"//w:r[not(ancestor::w:hyperlink or ancestor::w:fldSimple or ancestor::w:ins or ancestor::w:sdt)] | //w:hyperlink | //w:bookmarkStart | //w:bookmarkEnd | //w:commentRangeStart | //w:commentRangeEnd | //m:oMath | //w:fldSimple | //w:ins | //w:sdt[not(.//w:sdt)]\",\n            wordFragmentDom\n        ) as Element[];\n        nodesXpath.forEach(nodeXpath => {\n            inlineXmlContents += nodeXpath.toString();\n        });\n\n        return inlineXmlContents;\n    }\n\n    /**\n     * Gets XML contents\n     *\n     * @param xml - XML content\n     * @param xpathQuery - XPath query\n     * @returns XML contents\n     */\n    public getXmlContents(xml: string, xpathQuery: string): string {\n        let xmlContents = \"\";\n\n        const xmlDom = new DOMParser().parseFromString(xml, \"text/xml\");\n\n        const selectXpath = xpath.useNamespaces({\n            m: getNamespace(this.namespaces, \"m\"),\n            w: getNamespace(this.namespaces, \"w\"),\n        });\n        const nodesXpath = selectXpath(xpathQuery, xmlDom) as Element[];\n        nodesXpath.forEach(nodeXpath => {\n            xmlContents += nodeXpath.toString();\n        });\n\n        return xmlContents;\n    }\n\n    /**\n     * Gets text content by type\n     *\n     * @param contentType - Content type\n     * @param rels - Get rels file\n     * @returns Contents\n     */\n    public getContentPathsByType(\n        contentType: ContentType,\n        rels: boolean = false\n    ): string[] | null {\n        const contentTypePaths: string[] = [];\n        const contentTypesContent = this.getTextContent(\"[Content_Types].xml\");\n\n        if (contentTypesContent == null) {\n            return null;\n        }\n\n        const contentTypesDom = new DOMParser().parseFromString(\n            contentTypesContent,\n            \"text/xml\"\n        );\n\n        if (rels) {\n            contentType += \".rels\";\n        }\n\n        if (contentTypesDom != null) {\n            // get Override type\n            let overrideContentType = \"\";\n            if (contentType.startsWith(\"app\")) {\n                overrideContentType =\n                    \"application/vnd.openxmlformats-officedocument.extended-properties+xml\";\n            } else if (contentType.startsWith(\"comment\")) {\n                overrideContentType =\n                    \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\";\n            } else if (contentType.startsWith(\"core\")) {\n                overrideContentType =\n                    \"application/vnd.openxmlformats-package.core-properties+xml\";\n            } else if (contentType.startsWith(\"document\")) {\n                overrideContentType =\n                    \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\";\n            } else if (contentType.startsWith(\"endnote\")) {\n                overrideContentType =\n                    \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\";\n            } else if (contentType.startsWith(\"footer\")) {\n                overrideContentType =\n                    \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\";\n            } else if (contentType.startsWith(\"footnote\")) {\n                overrideContentType =\n                    \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\";\n            } else if (contentType.startsWith(\"header\")) {\n                overrideContentType =\n                    \"application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml\";\n            } else if (contentType.startsWith(\"numbering\")) {\n                overrideContentType =\n                    \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\";\n            } else if (contentType.startsWith(\"settings\")) {\n                overrideContentType =\n                    \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\";\n            } else if (contentType.startsWith(\"styles\")) {\n                overrideContentType =\n                    \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\";\n            }\n\n            const selectXpath = xpath.useNamespaces({\n                xmlns: \"http://schemas.openxmlformats.org/package/2006/content-types\",\n            });\n            const nodesXpath = selectXpath(\n                \"//xmlns:Override[@ContentType='\" + overrideContentType + \"']\",\n                contentTypesDom\n            ) as Element[];\n\n            if (nodesXpath.length > 0) {\n                // iterate nodes to get all contents with the chosen content type\n                nodesXpath.forEach(nodeXpath => {\n                    const filePath = nodeXpath.getAttribute(\"PartName\");\n                    if (filePath != null) {\n                        // remove first character (/) from the attribute value to get the correct path\n                        let internalFilePath = filePath.slice(1);\n                        if (rels) {\n                            // get rels file\n                            internalFilePath += \".rels\";\n                            internalFilePath = internalFilePath.replace(\n                                \"word/\",\n                                \"word/_rels/\"\n                            );\n\n                            const contentTypeContents =\n                                this.getTextContent(internalFilePath);\n                            if (rels && contentTypeContents == null) {\n                                // rels file doesn't exist, generate and add a new one\n                                this.addTextContent(\n                                    internalFilePath,\n                                    relationshipXml\n                                );\n                            }\n                        }\n                        contentTypePaths.push(internalFilePath);\n                    }\n                });\n            }\n        }\n\n        return contentTypePaths.length > 0 ? contentTypePaths : null;\n    }\n\n    /**\n     * Gets a file content\n     *\n     * @param path - File path\n     * @returns File contents\n     */\n    public getFileContent(path: string): ArrayBuffer | null {\n        const fileContents = this.fileContents.get(path);\n\n        return fileContents ?? null;\n    }\n\n    /**\n     * Gets a text content\n     *\n     * @param path - File path\n     * @returns File contents\n     */\n    public getTextContent(path: string): string | null {\n        const textContents = this.textContents.get(path);\n\n        return textContents ?? null;\n    }\n\n    /**\n     * Imports MS Word default styles\n     *\n     * @param docxDefaultStructure - DOCX structure with the styles to be imported\n     */\n    public importMSWordDefaultStyles(docxDefaultStructure: Docx) {\n        // use DOCX default structre to get MS Word default styles\n        const targetDefaultContent =\n            docxDefaultStructure.getTextContent(\"word/styles.xml\");\n\n        // get styles from the current DOCX structure to check if styles exist\n        let targetContent;\n        const targetContentsPath = this.getContentPathsByType(\"styles\");\n        if (targetContentsPath != null && targetContentsPath.length > 0) {\n            const targetKey = targetContentsPath[0]; // get only the first target. Styles only has one internal file\n            targetContent = this.getTextContent(targetKey);\n        }\n\n        if (targetDefaultContent != null && targetContent != null) {\n            const contentDefaultDom = new DOMParser().parseFromString(\n                targetDefaultContent,\n                \"text/xml\"\n            );\n            const contentDom = new DOMParser().parseFromString(\n                targetContent,\n                \"text/xml\"\n            );\n\n            const selectXpath = xpath.useNamespaces({\n                w: getNamespace(this.namespaces, \"w\"),\n            });\n            const nodeXpathQuery = \"//w:style\";\n            const nodesXpath = selectXpath(\n                nodeXpathQuery,\n                contentDefaultDom\n            ) as Element[];\n            nodesXpath.forEach(nodeXpath => {\n                // check if the MS Word style name already exists. Do not add styles with the same ID\n                const newStyleId = nodeXpath.getAttribute(\"w:styleId\");\n                const nodesXpathStylesByName = selectXpath(\n                    '//w:style[@w:styleId=\"' + newStyleId + '\"]',\n                    contentDom\n                ) as Element[];\n                if (nodesXpathStylesByName.length == 0) {\n                    this.addXmlStyle(\n                        new XMLSerializer().serializeToString(nodeXpath)\n                    );\n                }\n            });\n        }\n    }\n\n    /**\n     * Inits DOCX structure to adjust contents if needed and extra settings\n     *\n     * @throws Error reading DOCX file\n     */\n    public initDocxStructure() {\n        // get DOCX namespaces from content\n        // default namespaces as transitional variant\n        this.namespaces.set(\n            \"a\",\n            \"http://schemas.openxmlformats.org/drawingml/2006/main\"\n        );\n        this.namespaces.set(\n            \"m\",\n            \"http://schemas.openxmlformats.org/officeDocument/2006/math\"\n        );\n        this.namespaces.set(\n            \"r\",\n            \"http://schemas.openxmlformats.org/package/2006/relationships\"\n        );\n        this.namespaces.set(\n            \"rels\",\n            \"http://schemas.openxmlformats.org/package/2006/relationships\"\n        );\n        this.namespaces.set(\n            \"w\",\n            \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"\n        );\n        this.namespaces.set(\n            \"wp\",\n            \"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\"\n        );\n\n        const targetContentsPathDocument =\n            this.getContentPathsByType(\"document\");\n\n        if (\n            targetContentsPathDocument != null &&\n            targetContentsPathDocument.length > 0\n        ) {\n            const targetDocumentKey = targetContentsPathDocument[0];\n            let targetDocumentContent = this.getTextContent(targetDocumentKey);\n\n            if (targetDocumentContent != null) {\n                let contentDom = new DOMParser().parseFromString(\n                    targetDocumentContent,\n                    \"text/xml\"\n                );\n                const selectXpath = xpath.useNamespaces({\n                    w: getNamespace(this.namespaces, \"w\"),\n                });\n\n                // check if there's a section. Otherwise add it before </w:body>\n                const nodeXpathQuerySection = \"//w:body/w:sectPr\";\n                const nodesXpathSection = selectXpath(\n                    nodeXpathQuerySection,\n                    contentDom\n                ) as Element[];\n                if (nodesXpathSection.length == 0) {\n                    targetDocumentContent = targetDocumentContent.replace(\n                        \"</w:body>\",\n                        '<w:sectPr><w:pgSz w:w=\"11906\" w:h=\"16838\"/><w:pgMar w:top=\"1417\" w:right=\"1701\" w:bottom=\"1417\" w:left=\"1701\" w:header=\"708\" w:footer=\"708\" w:gutter=\"0\"/><w:cols w:space=\"708\"/><w:docGrid w:linePitch=\"360\"/></w:sectPr></w:body>'\n                    );\n                    this.addTextContent(\n                        targetDocumentKey,\n                        targetDocumentContent\n                    );\n\n                    // refresh DOM contents to be used when checking the strict variant\n                    contentDom = new DOMParser().parseFromString(\n                        targetDocumentContent,\n                        \"text/xml\"\n                    );\n                }\n\n                // check if strict variant is used\n                const selectXpathStrict = xpath.useNamespaces({\n                    w: \"http://purl.oclc.org/ooxml/wordprocessingml/main\",\n                });\n                const nodeXpathQueryDocument = \"//w:document\";\n                const nodesXpathDocument = selectXpathStrict(\n                    nodeXpathQueryDocument,\n                    contentDom\n                ) as Element[];\n                if (nodesXpathDocument.length > 0) {\n                    const conformanceAttribute =\n                        nodesXpathDocument[0].getAttribute(\"w:conformance\");\n                    if (\n                        conformanceAttribute != null &&\n                        conformanceAttribute == \"strict\"\n                    ) {\n                        // move strict variant namespaces to transitional\n                        for (const [\n                            filePath,\n                            fileContent,\n                        ] of this.textContents.entries()) {\n                            const fileContentReplaced = fileContent\n                                .replace(\n                                    generateRegExpForReplacement(\n                                        \"http://purl.oclc.org/ooxml/officeDocument\"\n                                    ),\n                                    \"http://schemas.openxmlformats.org/officeDocument/2006\"\n                                )\n                                .replace(\n                                    generateRegExpForReplacement(\n                                        \"http://purl.oclc.org/ooxml/wordprocessingml\"\n                                    ),\n                                    \"http://schemas.openxmlformats.org/wordprocessingml/2006\"\n                                )\n                                .replace(\n                                    generateRegExpForReplacement(\n                                        \"http://purl.oclc.org/ooxml/drawingml\"\n                                    ),\n                                    \"http://schemas.openxmlformats.org/drawingml/2006\"\n                                );\n\n                            this.addTextContent(filePath, fileContentReplaced);\n                        }\n\n                        this.conformance = \"strict\";\n                    }\n                }\n            }\n        } else {\n            throw new Error(\"Error reading DOCX contents: invalid contents.\");\n        }\n    }\n\n    /**\n     * Modifies sections\n     *\n     * @param options - Options section layout\n     * @returns XML\n     */\n    public modifySections(options: OptionsSectionLayout) {\n        const targetContentsPathDocument =\n            this.getContentPathsByType(\"document\");\n\n        if (\n            targetContentsPathDocument != null &&\n            targetContentsPathDocument.length > 0\n        ) {\n            const targetDocumentKey = targetContentsPathDocument[0];\n            const targetDocumentContent =\n                this.getTextContent(targetDocumentKey);\n\n            if (targetDocumentContent != null) {\n                const contentDom = new DOMParser().parseFromString(\n                    targetDocumentContent,\n                    \"text/xml\"\n                );\n                const selectXpath = xpath.useNamespaces({\n                    w: getNamespace(this.namespaces, \"w\"),\n                });\n\n                let nodeXpathQuerySection = \"//w:sectPr\";\n                if (\n                    options.onlyLastSection != null &&\n                    options.onlyLastSection\n                ) {\n                    nodeXpathQuerySection = \"(//w:sectPr)[last()]\";\n                }\n                const nodesXpathSection = selectXpath(\n                    nodeXpathQuerySection,\n                    contentDom\n                ) as Element[];\n\n                if (nodesXpathSection.length > 0) {\n                    if (options.size != null) {\n                        // update options with preset sizes\n                        const sectionElement = new CreateSection(options);\n                        options = sectionElement.getOptions();\n                    }\n\n                    nodesXpathSection.forEach(nodeXpathSection => {\n                        const nodePgSz =\n                            nodeXpathSection.getElementsByTagNameNS(\n                                getNamespace(this.namespaces, \"w\"),\n                                \"pgSz\"\n                            );\n                        if (nodePgSz.length > 0) {\n                            if (options.code != null) {\n                                nodePgSz\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:code\",\n                                        options.code.toString()\n                                    );\n                            }\n                            if (options.height != null) {\n                                nodePgSz\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:h\",\n                                        options.height.toString()\n                                    );\n                            }\n                            if (options.orient != null) {\n                                nodePgSz\n                                    .item(0)\n                                    ?.setAttribute(\"w:orient\", options.orient);\n                            }\n                            if (options.width != null) {\n                                nodePgSz\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:w\",\n                                        options.width.toString()\n                                    );\n                            }\n                        }\n                        const nodePgMar =\n                            nodeXpathSection.getElementsByTagNameNS(\n                                getNamespace(this.namespaces, \"w\"),\n                                \"pgMar\"\n                            );\n                        if (nodePgMar.length > 0) {\n                            if (options.margin?.bottom != null) {\n                                nodePgMar\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:bottom\",\n                                        options.margin?.bottom.toString()\n                                    );\n                            }\n                            if (options.margin?.footer != null) {\n                                nodePgMar\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:footer\",\n                                        options.margin?.footer.toString()\n                                    );\n                            }\n                            if (options.margin?.header != null) {\n                                nodePgMar\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:header\",\n                                        options.margin?.header.toString()\n                                    );\n                            }\n                            if (options.margin?.left != null) {\n                                nodePgMar\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:left\",\n                                        options.margin?.left.toString()\n                                    );\n                            }\n                            if (options.margin?.right != null) {\n                                nodePgMar\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:right\",\n                                        options.margin?.right.toString()\n                                    );\n                            }\n                            if (options.margin?.top != null) {\n                                nodePgMar\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:top\",\n                                        options.margin?.top.toString()\n                                    );\n                            }\n                        }\n                        if (options.bidi != null) {\n                            const nodeBidi =\n                                nodeXpathSection.getElementsByTagNameNS(\n                                    getNamespace(this.namespaces, \"w\"),\n                                    \"bidi\"\n                                );\n                            if (nodeBidi.length > 0) {\n                                nodeBidi\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:val\",\n                                        options.bidi.toString()\n                                    );\n                            } else {\n                                const newNodeBidi =\n                                    contentDom.createElement(\"w:bidi\");\n                                newNodeBidi.setAttribute(\n                                    \"w:val\",\n                                    options.bidi.toString()\n                                );\n                                nodeXpathSection.appendChild(newNodeBidi);\n                            }\n                        }\n                        if (options.numberColumns != null) {\n                            const nodeCols =\n                                nodeXpathSection.getElementsByTagNameNS(\n                                    getNamespace(this.namespaces, \"w\"),\n                                    \"cols\"\n                                );\n                            if (nodeCols.length > 0) {\n                                nodeCols\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:num\",\n                                        options.numberColumns.toString()\n                                    );\n                            } else {\n                                const newNodeCols =\n                                    contentDom.createElement(\"w:cols\");\n                                newNodeCols.setAttribute(\n                                    \"w:num\",\n                                    options.numberColumns.toString()\n                                );\n                                nodeXpathSection.appendChild(newNodeCols);\n                            }\n                        }\n                        if (options.rtlGutter != null) {\n                            const nodeRtlGutter =\n                                nodeXpathSection.getElementsByTagNameNS(\n                                    getNamespace(this.namespaces, \"w\"),\n                                    \"rtlGutter\"\n                                );\n                            if (nodeRtlGutter.length > 0) {\n                                nodeRtlGutter\n                                    .item(0)\n                                    ?.setAttribute(\n                                        \"w:val\",\n                                        options.rtlGutter.toString()\n                                    );\n                            } else {\n                                const newNodeRtlGutter =\n                                    contentDom.createElement(\"w:rtlGutter\");\n                                newNodeRtlGutter.setAttribute(\n                                    \"w:val\",\n                                    options.rtlGutter.toString()\n                                );\n                                nodeXpathSection.appendChild(newNodeRtlGutter);\n                            }\n                        }\n                        if (options.type != null) {\n                            const nodeType =\n                                nodeXpathSection.getElementsByTagNameNS(\n                                    getNamespace(this.namespaces, \"w\"),\n                                    \"type\"\n                                );\n\n                            let addType = true;\n                            if (nodeType.length > 0) {\n                                if (\n                                    nodeType.item(0)?.hasAttribute(\"w:val\") &&\n                                    nodeType.item(0)?.getAttribute(\"w:val\") ==\n                                        options.type\n                                ) {\n                                    addType = false;\n                                }\n                            }\n\n                            if (addType) {\n                                const newNodeType =\n                                    contentDom.createElement(\"w:type\");\n                                newNodeType.setAttribute(\"w:val\", options.type);\n                                const nodePgSzParent =\n                                    nodePgSz.item(0)?.parentNode;\n                                if (nodePgSzParent != null) {\n                                    nodePgSzParent.insertBefore(\n                                        newNodeType,\n                                        nodePgSz.item(0)\n                                    );\n                                }\n                            }\n                        }\n\n                        if (\n                            options.excludeHeadersFooters != null &&\n                            options.excludeHeadersFooters\n                        ) {\n                            // remove headers and footers from the cloned section\n                            const nodesHeaderReference =\n                                nodeXpathSection.getElementsByTagNameNS(\n                                    getNamespace(this.namespaces, \"w\"),\n                                    \"headerReference\"\n                                );\n                            Array.from(nodesHeaderReference).forEach(\n                                nodeHeaderReference => {\n                                    nodeHeaderReference.parentNode?.removeChild(\n                                        nodeHeaderReference\n                                    );\n                                }\n                            );\n                            const nodesFooterReference =\n                                nodeXpathSection.getElementsByTagNameNS(\n                                    getNamespace(this.namespaces, \"w\"),\n                                    \"footerReference\"\n                                );\n                            Array.from(nodesFooterReference).forEach(\n                                nodeFooterReference => {\n                                    nodeFooterReference.parentNode?.removeChild(\n                                        nodeFooterReference\n                                    );\n                                }\n                            );\n                        }\n                    });\n\n                    this.addTextContent(\n                        targetDocumentKey,\n                        new XMLSerializer().serializeToString(contentDom)\n                    );\n                }\n            }\n        }\n    }\n\n    /**\n     * Removes an XML element using an XPath query\n     *\n     * @param xml - XML content\n     * @param query - XPath query\n     * @returns XML\n     */\n    public removeXmlElement(xml: string, query: string): string {\n        const xmlDom = new DOMParser().parseFromString(xml, \"text/xml\");\n        const selectXpath = xpath.useNamespaces({\n            w: getNamespace(this.namespaces, \"w\"),\n            wp: getNamespace(this.namespaces, \"wp\"),\n        });\n        const nodesXpath = selectXpath(query, xmlDom) as Element[];\n\n        // iterate nodes to remove them\n        nodesXpath.forEach(nodeXpath => {\n            const nodeParent = nodeXpath.parentNode as Element;\n            if (nodeParent != null) {\n                // if a paragraph is removed inside a table cell check it's not empty\n                if (nodeParent.nodeName == \"w:tc\") {\n                    const nodesPInTc = nodeParent.getElementsByTagNameNS(\n                        getNamespace(this.namespaces, \"w\"),\n                        \"p\"\n                    );\n                    if (nodesPInTc.length == 1) {\n                        const newNodeP = xmlDom.createElement(\"w:p\");\n                        nodeParent.appendChild(newNodeP);\n                    }\n                    nodeParent.removeChild(nodeXpath);\n                } else {\n                    nodeParent.removeChild(nodeXpath);\n                }\n            }\n        });\n\n        return new XMLSerializer().serializeToString(xmlDom);\n    }\n\n    /**\n     * Repairs XML contents wrapped by template symbols removing extra tags\n     *\n     * @param content - XML content\n     * @param templateSymbolStart - Template symbol start\n     * @param templateSymbolEnd - Template symbol end\n     * @returns XML repaired\n     */\n    public repairXmlVariables(\n        content: string,\n        templateSymbolStart: string,\n        templateSymbolEnd: string\n    ): string {\n        let templateSymbol = [...(templateSymbolStart + templateSymbolEnd)];\n\n        // get XPath to query paragraphs that contain placeholder symbols\n        let templateSymbolXPathQuery =\n            '//w:p[contains(., \"' + templateSymbol[0] + '\")';\n        templateSymbol.slice(1).forEach(function (symbolValue) {\n            templateSymbolXPathQuery +=\n                ' and contains(., \"' + symbolValue + '\")';\n        });\n        templateSymbolXPathQuery += \"]\";\n\n        const contentDom = new DOMParser().parseFromString(content, \"text/xml\");\n        const selectXpath = xpath.useNamespaces({\n            w: getNamespace(this.namespaces, \"w\"),\n        });\n        const nodesXpath = selectXpath(\n            templateSymbolXPathQuery,\n            contentDom\n        ) as Element[];\n\n        // iterate nodes to repair them\n        nodesXpath.forEach(nodeXpath => {\n            templateSymbol = [...(templateSymbolStart + templateSymbolEnd)];\n            const templateSymbolQuoted = templateSymbol.map(symbol =>\n                escapeRegExp(symbol)\n            );\n            const templateSymbolXpathRegExpr =\n                templateSymbolQuoted.join(\"(.*?)\");\n            const matchesPlaceholders = nodeXpath\n                .toString()\n                .match(new RegExp(templateSymbolXpathRegExpr, \"g\"));\n            if (matchesPlaceholders != null) {\n                matchesPlaceholders.forEach(matchPlaceholders => {\n                    const mathPlaceholderNoTag = matchPlaceholders.replace(\n                        /<[^>]+>/g,\n                        \"\"\n                    );\n\n                    content = content.replace(\n                        generateRegExpForReplacement(matchPlaceholders),\n                        mathPlaceholderNoTag\n                    );\n                });\n            }\n        });\n\n        return content;\n    }\n\n    /**\n     * Replaces XML image\n     *\n     * @param xml - XML content\n     * @param query - XPath query\n     * @param image - Image\n     * @param imageId - Image Id\n     * @param options - Replace variable image options\n     * @returns XML\n     */\n    public replaceXmlImage(\n        xml: string,\n        query: string,\n        elementImage: CreateImage,\n        imageId: string,\n        options: OptionsReplaceVariableImage\n    ): [string, number] {\n        const xmlDom = new DOMParser().parseFromString(xml, \"text/xml\");\n        const selectXpath = xpath.useNamespaces({\n            w: getNamespace(this.namespaces, \"w\"),\n            wp: getNamespace(this.namespaces, \"wp\"),\n        });\n        const nodesXpath = selectXpath(query, xmlDom) as Element[];\n\n        // iterate nodes to replace them\n        nodesXpath.forEach(nodeXpath => {\n            const nodeParent = nodeXpath.parentNode as Element;\n            if (nodeParent != null) {\n                const nodeBlip = nodeParent.getElementsByTagNameNS(\n                    getNamespace(this.namespaces, \"a\"),\n                    \"blip\"\n                );\n                if (nodeBlip.length > 0) {\n                    nodeBlip.item(0)?.setAttribute(\"r:embed\", \"rId\" + imageId);\n                }\n                let width: number | undefined;\n                let height: number | undefined;\n                if (options.width != null) {\n                    width = options.width;\n                } else {\n                    width = elementImage.getOptions().width;\n                }\n                if (options.height != null) {\n                    height = options.height;\n                } else {\n                    height = elementImage.getOptions().height;\n                }\n                if (width != null && width != -1) {\n                    const nodeExtent = nodeParent.getElementsByTagNameNS(\n                        getNamespace(this.namespaces, \"wp\"),\n                        \"extent\"\n                    );\n                    nodeExtent.item(0)?.setAttribute(\"cx\", width.toString());\n                    const nodeXfrm = nodeParent.getElementsByTagNameNS(\n                        getNamespace(this.namespaces, \"a\"),\n                        \"xfrm\"\n                    );\n                    if (nodeXfrm.length > 0) {\n                        const nodeExt = nodeXfrm\n                            .item(0)\n                            ?.getElementsByTagNameNS(\n                                getNamespace(this.namespaces, \"a\"),\n                                \"ext\"\n                            );\n                        nodeExt?.item(0)?.setAttribute(\"cx\", width.toString());\n                    }\n                }\n                if (height != null && height != -1) {\n                    const nodeExtent = nodeParent.getElementsByTagNameNS(\n                        getNamespace(this.namespaces, \"wp\"),\n                        \"extent\"\n                    );\n                    nodeExtent.item(0)?.setAttribute(\"cy\", height.toString());\n                    const nodeXfrm = nodeParent.getElementsByTagNameNS(\n                        getNamespace(this.namespaces, \"a\"),\n                        \"xfrm\"\n                    );\n                    if (nodeXfrm.length > 0) {\n                        const nodeExt = nodeXfrm\n                            .item(0)\n                            ?.getElementsByTagNameNS(\n                                getNamespace(this.namespaces, \"a\"),\n                                \"ext\"\n                            );\n                        nodeExt?.item(0)?.setAttribute(\"cy\", height.toString());\n                    }\n                }\n\n                if (options.firstMatch) {\n                    nodeXpath.setAttribute(\"descr\", \"\");\n                    nodeXpath.setAttribute(\"title\", \"\");\n                }\n\n                const docPrId = generateRandomNumber(99999999, 999999999, []);\n                nodeXpath.setAttribute(\"id\", docPrId.toString());\n            }\n        });\n\n        return [\n            new XMLSerializer().serializeToString(xmlDom),\n            nodesXpath.length,\n        ];\n    }\n\n    /**\n     * Replaces XML list\n     *\n     * @param xml - XML content\n     * @param variable - Variable name\n     * @param query - XPath query\n     * @param items - List items\n     * @param options - Options replace list\n     * @param templateSymbolStart - Template symbol start\n     * @param templateSymbolEnd - Template symbol end\n     * @returns XML and WordFragments\n     */\n    public replaceXmlList(\n        xml: string,\n        variable: string,\n        query: string,\n        items: ListNested[],\n        options: OptionsReplaceVariableList,\n        templateSymbolStart: string,\n        templateSymbolEnd: string\n    ): [string, Map<string, WordFragment>] {\n        const xmlDom = new DOMParser().parseFromString(xml, \"text/xml\");\n        const selectXpath = xpath.useNamespaces({\n            w: getNamespace(this.namespaces, \"w\"),\n        });\n        const nodesXpath = selectXpath(query, xmlDom) as Element[];\n        let wordFragmentValues = new Map<string, WordFragment>();\n\n        // iterate nodes to replace them and fill the list\n        nodesXpath.forEach(nodeXpath => {\n            const nodeIlvl = nodeXpath.getElementsByTagNameNS(\n                getNamespace(this.namespaces, \"w\"),\n                \"ilvl\"\n            );\n            const levelInitList =\n                Number(nodeIlvl.item(0)?.getAttribute(\"w:val\")) ?? 0;\n            const wordFragments = this.replaceListValues(\n                variable,\n                items,\n                nodeXpath,\n                options,\n                levelInitList,\n                templateSymbolStart,\n                templateSymbolEnd\n            );\n            wordFragmentValues = new Map([\n                ...wordFragmentValues,\n                ...wordFragments,\n            ]);\n\n            nodeXpath.parentNode?.removeChild(nodeXpath);\n        });\n\n        let xmlContents = new XMLSerializer().serializeToString(xmlDom);\n\n        // replace line breaks\n        if (options.parseLineBreaks) {\n            xmlContents = xmlContents.replace(\n                generateRegExpForReplacement(\"TKNPDXLINEBREAKINT\"),\n                '</w:t><w:br/><w:t xml:space=\"preserve\">'\n            );\n        }\n\n        return [xmlContents, wordFragmentValues];\n    }\n\n    /**\n     * Replaces XML table\n     *\n     * @param xml - XML content\n     * @param variables - Variables\n     * @param query - XPath query\n     * @param options - Options replace table\n     * @param templateSymbolStart - Template symbol start\n     * @param templateSymbolEnd - Template symbol end\n     * @returns XML and WordFragments\n     */\n    public replaceXmlTable(\n        xml: string,\n        variables: Map<string, string | WordFragment>[],\n        query: string,\n        options: OptionsReplaceVariableTable,\n        templateSymbolStart: string,\n        templateSymbolEnd: string\n    ): [string, Map<string, WordFragment>] {\n        const xmlDom = new DOMParser().parseFromString(xml, \"text/xml\");\n        const selectXpath = xpath.useNamespaces({\n            w: getNamespace(this.namespaces, \"w\"),\n        });\n        const nodesXpath = selectXpath(query, xmlDom) as Element[];\n        const wordFragmentValues = new Map<string, WordFragment>();\n        // iterate nodes to replace them and fill the list\n        nodesXpath.forEach(nodeXpath => {\n            variables.forEach(variablesRow => {\n                const newNode = nodeXpath.cloneNode(true) as Element;\n                for (let [\n                    attributeName,\n                    attributeValue,\n                ] of variablesRow.entries()) {\n                    attributeName = applyHtmlSpecialChars(attributeName);\n                    const newNodeTNodes = newNode.getElementsByTagNameNS(\n                        getNamespace(this.namespaces, \"w\"),\n                        \"t\"\n                    );\n                    Array.from(newNodeTNodes).forEach(newNodeT => {\n                        if (typeof attributeValue === \"string\") {\n                            if (options.parseLineBreaks) {\n                                attributeValue = attributeValue.replace(\n                                    /\\n\\r|\\n|\\r\\n|\\r/g,\n                                    \"TKNPDXLINEBREAKINT\"\n                                );\n                            }\n\n                            newNodeT.textContent = newNodeT.textContent\n                                ? newNodeT.textContent.replace(\n                                      generateRegExpForReplacement(\n                                          templateSymbolStart +\n                                              applyHtmlSpecialChars(\n                                                  attributeName\n                                              ) +\n                                              templateSymbolStart\n                                      ),\n                                      attributeValue\n                                  )\n                                : applyHtmlSpecialChars(attributeValue);\n                        } else if (attributeValue instanceof WordFragment) {\n                            // do not replace WordFragments directly. Keep them to use replaceVariableWordFragment to replace them\n                            const keyWordFragment = generateUniqid(\n                                \"TKNPDXWORDFRAGMENTINT\"\n                            );\n                            newNodeT.textContent = newNodeT.textContent\n                                ? newNodeT.textContent.replace(\n                                      generateRegExpForReplacement(\n                                          templateSymbolStart +\n                                              applyHtmlSpecialChars(\n                                                  attributeName\n                                              ) +\n                                              templateSymbolStart\n                                      ),\n                                      templateSymbolStart +\n                                          keyWordFragment +\n                                          templateSymbolEnd\n                                  )\n                                : keyWordFragment;\n\n                            wordFragmentValues.set(\n                                keyWordFragment,\n                                attributeValue\n                            );\n                        }\n                    });\n\n                    nodeXpath.parentNode?.insertBefore(newNode, nodeXpath);\n                }\n            });\n            nodeXpath.parentNode?.removeChild(nodeXpath);\n        });\n\n        let xmlContents = new XMLSerializer().serializeToString(xmlDom);\n\n        // replace line breaks\n        if (options.parseLineBreaks) {\n            xmlContents = xmlContents.replace(\n                generateRegExpForReplacement(\"TKNPDXLINEBREAKINT\"),\n                '</w:t><w:br/><w:t xml:space=\"preserve\">'\n            );\n        }\n\n        return [xmlContents, wordFragmentValues];\n    }\n\n    /**\n     * Replaces an XML element with WordFragment using an XPath query\n     *\n     * @param xml - XML content\n     * @param query - XPath query\n     * @param variable - Variable name\n     * @param variableValue - Variable value\n     * @param options - Options replace text with WordFragment\n     * @returns XML\n     */\n    public replaceXmlWordFragment(\n        xml: string,\n        query: string,\n        variable: string,\n        variableValue: WordFragment,\n        options: OptionsReplaceVariableWordFragment\n    ): string {\n        const xmlDom = new DOMParser().parseFromString(xml, \"text/xml\");\n        const selectXpath = xpath.useNamespaces({\n            w: getNamespace(this.namespaces, \"w\"),\n        });\n        const nodesXpath = selectXpath(query, xmlDom) as Element[];\n\n        // iterate nodes to replace them\n        nodesXpath.forEach(nodeXpath => {\n            const nodeParent = nodeXpath.parentNode as Element;\n            if (options.type == \"inline\") {\n                // block inline replacement\n\n                // get the w:r tag that contains the variable\n                const nodesR = selectXpath(\n                    '//w:r/w:t[text()[contains(.,\"' + variable + '\")]]',\n                    nodeXpath\n                ) as Element[];\n                if (nodesR != null && nodesR.length > 0) {\n                    // get existing w:rPr styles to be applied to the content after the new element and keep styles\n                    let newRContent = \"<w:r>\";\n                    const nodesRpR = nodesR[0].getElementsByTagNameNS(\n                        getNamespace(this.namespaces, \"w\"),\n                        \"rPr\"\n                    );\n                    if (nodesRpR.length > 0) {\n                        const nodeRpr = nodesRpR.item(0);\n                        newRContent += nodeRpr\n                            ? new XMLSerializer().serializeToString(nodeRpr)\n                            : \"\";\n                    }\n\n                    // generate a new paragraph with the variable replaced\n                    const nodeRContent =\n                        \"</w:t></w:r>\" +\n                        variableValue\n                            .getDocxContent()\n                            .getInlineXmlContents(variableValue.toString()) +\n                        newRContent +\n                        '<w:t xml:space=\"preserve\">';\n                    let newPContent = new XMLSerializer().serializeToString(\n                        nodeXpath\n                    );\n                    newPContent = newPContent.replace(\n                        generateRegExpForReplacement(\n                            applyHtmlSpecialChars(variable)\n                        ),\n                        nodeRContent\n                    );\n                    // apply space preserve to all w:t tags to keep blank spaces\n                    newPContent = newPContent.replace(\n                        generateRegExpForReplacement(\"<w:t>\"),\n                        '<w:t xml:space=\"preserve\">'\n                    );\n\n                    // add the new paragraph\n                    const xmlDomContentP = new DOMParser().parseFromString(\n                        newPContent,\n                        \"text/xml\"\n                    );\n                    nodeParent.insertBefore(\n                        xmlDomContentP.documentElement,\n                        nodeXpath\n                    );\n\n                    // remove the paragraph that contains the variable\n                    nodeParent.removeChild(nodeXpath);\n                }\n            } else if (options.type == \"block\") {\n                // block type replacement\n\n                // wrap the XML contents in a w:root tag to add all child nodes\n                const xmlDom = new DOMParser().parseFromString(\n                    \"<w:root>\" + variableValue + \"</w:root>\",\n                    \"text/xml\"\n                );\n                const childNodes = xmlDom.documentElement.childNodes;\n                Array.from(childNodes).forEach(childNode => {\n                    // clone the node to be inserted to avoid removing it from childNodes\n                    const newChildNode = childNode.cloneNode(true);\n                    nodeParent.insertBefore(newChildNode, nodeXpath);\n                });\n                // remove the paragraph that contains the variable\n                nodeParent.removeChild(nodeXpath);\n            }\n        });\n\n        return new XMLSerializer().serializeToString(xmlDom);\n    }\n\n    /**\n     * Replaces list node by a new list\n     *\n     * @param variable - Variable name\n     * @param items - List items\n     * @param domNode - Node that contains the list\n     * @param options - Options replace list\n     * @param level - Depth level\n     * @param templateSymbolStart - Template symbol start\n     * @param templateSymbolEnd - Template symbol end\n     * @returns WordFragments\n     */\n    protected replaceListValues(\n        variable: string,\n        items: ListNested[],\n        domNode: Element,\n        options: OptionsReplaceVariableList,\n        level: number,\n        templateSymbolStart: string,\n        templateSymbolEnd: string\n    ): Map<string, WordFragment> {\n        let wordFragmentValues = new Map<string, WordFragment>();\n\n        items.forEach(item => {\n            if (typeof item === \"string\" || item instanceof WordFragment) {\n                const newNode = domNode.cloneNode(true) as Element;\n                const nodeIlvl = newNode.getElementsByTagNameNS(\n                    getNamespace(this.namespaces, \"w\"),\n                    \"ilvl\"\n                );\n                nodeIlvl.item(0)?.setAttribute(\"w:val\", level.toString());\n                const newNodeTNodes = newNode.getElementsByTagNameNS(\n                    getNamespace(this.namespaces, \"w\"),\n                    \"t\"\n                );\n                Array.from(newNodeTNodes).forEach(newNodeT => {\n                    if (options.parseLineBreaks && typeof item === \"string\") {\n                        item = item.replace(\n                            /\\n\\r|\\n|\\r\\n|\\r/g,\n                            \"TKNPDXLINEBREAKINT\"\n                        );\n                    }\n\n                    if (typeof item === \"string\") {\n                        newNodeT.textContent = newNodeT.textContent\n                            ? newNodeT.textContent.replace(\n                                  generateRegExpForReplacement(\n                                      applyHtmlSpecialChars(variable)\n                                  ),\n                                  item\n                              )\n                            : item;\n                    } else if (item instanceof WordFragment) {\n                        // do not replace WordFragments directly. Keep them to use replaceVariableWordFragment to replace them\n                        const keyWordFragment = generateUniqid(\n                            \"TKNPDXWORDFRAGMENTINT\"\n                        );\n                        newNodeT.textContent = newNodeT.textContent\n                            ? newNodeT.textContent.replace(\n                                  generateRegExpForReplacement(\n                                      applyHtmlSpecialChars(variable)\n                                  ),\n                                  templateSymbolStart +\n                                      keyWordFragment +\n                                      templateSymbolEnd\n                              )\n                            : keyWordFragment;\n\n                        wordFragmentValues.set(keyWordFragment, item);\n                    }\n                });\n                const nodeParent = domNode.parentNode as Element;\n                nodeParent?.insertBefore(newNode, domNode);\n            } else if (Array.isArray(item)) {\n                // a subarray, iterate it to add the contents\n                const listWordFragments = this.replaceListValues(\n                    variable,\n                    item,\n                    domNode,\n                    options,\n                    level + 1,\n                    templateSymbolStart,\n                    templateSymbolEnd\n                );\n                wordFragmentValues = new Map([\n                    ...wordFragmentValues,\n                    ...listWordFragments,\n                ]);\n            }\n        });\n\n        return wordFragmentValues;\n    }\n}\n\nexport { ContentType, Docx };\n","import { Docx as DocxStructure } from \"../structure\";\n\nconst generateDefaultDocxStructure = (): DocxStructure => {\n    const docxDefaultStructure = new DocxStructure();\n\n    docxDefaultStructure.addTextContent(\n        \"[Content_Types].xml\",\n        '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\"><Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/><Default Extension=\"xml\" ContentType=\"application/xml\"/><Override PartName=\"/word/document.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\"/><Override PartName=\"/word/styles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\"/><Override PartName=\"/word/settings.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\"/><Override PartName=\"/word/webSettings.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml\"/><Override PartName=\"/word/fontTable.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml\"/><Override PartName=\"/word/theme/theme1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.theme+xml\"/><Override PartName=\"/docProps/core.xml\" ContentType=\"application/vnd.openxmlformats-package.core-properties+xml\"/><Override PartName=\"/docProps/app.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.extended-properties+xml\"/></Types>'\n    );\n    docxDefaultStructure.addTextContent(\n        \"_rels/.rels\",\n        '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\"><Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\" Target=\"docProps/app.xml\"/><Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\" Target=\"docProps/core.xml\"/><Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"word/document.xml\"/></Relationships>'\n    );\n    docxDefaultStructure.addTextContent(\n        \"word/_rels/document.xml.rels\",\n        '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\"><Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings\" Target=\"webSettings.xml\"/><Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings\" Target=\"settings.xml\"/><Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\" Target=\"styles.xml\"/><Relationship Id=\"rId5\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\" Target=\"theme/theme1.xml\"/><Relationship Id=\"rId4\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable\" Target=\"fontTable.xml\"/></Relationships>'\n    );\n    docxDefaultStructure.addTextContent(\n        \"word/document.xml\",\n        '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><w:document xmlns:wpc=\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\" xmlns:cx=\"http://schemas.microsoft.com/office/drawing/2014/chartex\" xmlns:cx1=\"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex\" xmlns:cx2=\"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex\" xmlns:cx3=\"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex\" xmlns:cx4=\"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex\" xmlns:cx5=\"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex\" xmlns:cx6=\"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex\" xmlns:cx7=\"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex\" xmlns:cx8=\"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:aink=\"http://schemas.microsoft.com/office/drawing/2016/ink\" xmlns:am3d=\"http://schemas.microsoft.com/office/drawing/2017/model3d\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:wp14=\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\" xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" xmlns:w15=\"http://schemas.microsoft.com/office/word/2012/wordml\" xmlns:w16cex=\"http://schemas.microsoft.com/office/word/2018/wordml/cex\" xmlns:w16cid=\"http://schemas.microsoft.com/office/word/2016/wordml/cid\" xmlns:w16=\"http://schemas.microsoft.com/office/word/2018/wordml\" xmlns:w16sdtdh=\"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\" xmlns:w16se=\"http://schemas.microsoft.com/office/word/2015/wordml/symex\" xmlns:wpg=\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\" xmlns:wpi=\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\" xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\" xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\" mc:Ignorable=\"w14 w15 w16se w16cid w16 w16cex w16sdtdh wp14\"><w:body><w:sectPr w:rsidR=\"00B65810\"><w:pgSz w:w=\"11906\" w:h=\"16838\"/><w:pgMar w:top=\"1417\" w:right=\"1701\" w:bottom=\"1417\" w:left=\"1701\" w:header=\"708\" w:footer=\"708\" w:gutter=\"0\"/><w:cols w:space=\"708\"/><w:docGrid w:linePitch=\"360\"/></w:sectPr></w:body></w:document>'\n    );\n    docxDefaultStructure.addTextContent(\n        \"docProps/app.xml\",\n        '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Properties xmlns=\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\" xmlns:vt=\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\"><Template>Normal.dotm</Template><TotalTime>0</TotalTime><Pages>1</Pages><Words>0</Words><Characters>0</Characters><Application>Microsoft Office Word</Application><DocSecurity>0</DocSecurity><Lines>0</Lines><Paragraphs>0</Paragraphs><ScaleCrop>false</ScaleCrop><Company></Company><LinksUpToDate>false</LinksUpToDate><CharactersWithSpaces>0</CharactersWithSpaces><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>16.0000</AppVersion></Properties>'\n    );\n    docxDefaultStructure.addTextContent(\n        \"docProps/core.xml\",\n        '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><cp:coreProperties xmlns:cp=\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:dcmitype=\"http://purl.org/dc/dcmitype/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><dc:title></dc:title><dc:subject></dc:subject><dc:creator>phpdocx</dc:creator><cp:keywords></cp:keywords><dc:description></dc:description><cp:lastModifiedBy>phpdocx</cp:lastModifiedBy><cp:revision>1</cp:revision><dcterms:created xsi:type=\"dcterms:W3CDTF\">2021-05-17T11:28:00Z</dcterms:created><dcterms:modified xsi:type=\"dcterms:W3CDTF\">2021-05-17T11:28:00Z</dcterms:modified></cp:coreProperties>'\n    );\n    docxDefaultStructure.addTextContent(\n        \"word/theme/theme1.xml\",\n        '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\"><a:themeElements><a:clrScheme name=\"Office\"><a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1><a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1><a:dk2><a:srgbClr val=\"44546A\"/></a:dk2><a:lt2><a:srgbClr val=\"E7E6E6\"/></a:lt2><a:accent1><a:srgbClr val=\"4472C4\"/></a:accent1><a:accent2><a:srgbClr val=\"ED7D31\"/></a:accent2><a:accent3><a:srgbClr val=\"A5A5A5\"/></a:accent3><a:accent4><a:srgbClr val=\"FFC000\"/></a:accent4><a:accent5><a:srgbClr val=\"5B9BD5\"/></a:accent5><a:accent6><a:srgbClr val=\"70AD47\"/></a:accent6><a:hlink><a:srgbClr val=\"0563C1\"/></a:hlink><a:folHlink><a:srgbClr val=\"954F72\"/></a:folHlink></a:clrScheme><a:fontScheme name=\"Office\"><a:majorFont><a:latin typeface=\"Calibri Light\" panose=\"020F0302020204030204\"/><a:ea typeface=\"\"/><a:cs typeface=\"\"/><a:font script=\"Jpan\" typeface=\"游ゴシック Light\"/><a:font script=\"Hang\" typeface=\"맑은 고딕\"/><a:font script=\"Hans\" typeface=\"等线 Light\"/><a:font script=\"Hant\" typeface=\"新細明體\"/><a:font script=\"Arab\" typeface=\"Times New Roman\"/><a:font script=\"Hebr\" typeface=\"Times New Roman\"/><a:font script=\"Thai\" typeface=\"Angsana New\"/><a:font script=\"Ethi\" typeface=\"Nyala\"/><a:font script=\"Beng\" typeface=\"Vrinda\"/><a:font script=\"Gujr\" typeface=\"Shruti\"/><a:font script=\"Khmr\" typeface=\"MoolBoran\"/><a:font script=\"Knda\" typeface=\"Tunga\"/><a:font script=\"Guru\" typeface=\"Raavi\"/><a:font script=\"Cans\" typeface=\"Euphemia\"/><a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/><a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/><a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/><a:font script=\"Thaa\" typeface=\"MV Boli\"/><a:font script=\"Deva\" typeface=\"Mangal\"/><a:font script=\"Telu\" typeface=\"Gautami\"/><a:font script=\"Taml\" typeface=\"Latha\"/><a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Orya\" typeface=\"Kalinga\"/><a:font script=\"Mlym\" typeface=\"Kartika\"/><a:font script=\"Laoo\" typeface=\"DokChampa\"/><a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/><a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/><a:font script=\"Viet\" typeface=\"Times New Roman\"/><a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/><a:font script=\"Geor\" typeface=\"Sylfaen\"/></a:majorFont><a:minorFont><a:latin typeface=\"Calibri\" panose=\"020F0502020204030204\"/><a:ea typeface=\"\"/><a:cs typeface=\"\"/><a:font script=\"Jpan\" typeface=\"游明朝\"/><a:font script=\"Hang\" typeface=\"맑은 고딕\"/><a:font script=\"Hans\" typeface=\"等线\"/><a:font script=\"Hant\" typeface=\"新細明體\"/><a:font script=\"Arab\" typeface=\"Arial\"/><a:font script=\"Hebr\" typeface=\"Arial\"/><a:font script=\"Thai\" typeface=\"Cordia New\"/><a:font script=\"Ethi\" typeface=\"Nyala\"/><a:font script=\"Beng\" typeface=\"Vrinda\"/><a:font script=\"Gujr\" typeface=\"Shruti\"/><a:font script=\"Khmr\" typeface=\"DaunPenh\"/><a:font script=\"Knda\" typeface=\"Tunga\"/><a:font script=\"Guru\" typeface=\"Raavi\"/><a:font script=\"Cans\" typeface=\"Euphemia\"/><a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/><a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/><a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/><a:font script=\"Thaa\" typeface=\"MV Boli\"/><a:font script=\"Deva\" typeface=\"Mangal\"/><a:font script=\"Telu\" typeface=\"Gautami\"/><a:font script=\"Taml\" typeface=\"Latha\"/><a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Orya\" typeface=\"Kalinga\"/><a:font script=\"Mlym\" typeface=\"Kartika\"/><a:font script=\"Laoo\" typeface=\"DokChampa\"/><a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/><a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/><a:font script=\"Viet\" typeface=\"Arial\"/><a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/><a:font script=\"Geor\" typeface=\"Sylfaen\"/></a:minorFont></a:fontScheme><a:fmtScheme name=\"Office\"><a:fillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"110000\"/><a:satMod val=\"105000\"/><a:tint val=\"67000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"103000\"/><a:tint val=\"73000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"109000\"/><a:tint val=\"81000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:satMod val=\"103000\"/><a:lumMod val=\"102000\"/><a:tint val=\"94000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:satMod val=\"110000\"/><a:lumMod val=\"100000\"/><a:shade val=\"100000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"99000\"/><a:satMod val=\"120000\"/><a:shade val=\"78000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w=\"6350\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"12700\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"19050\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad=\"57150\" dist=\"19050\" dir=\"5400000\" algn=\"ctr\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"63000\"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:solidFill><a:schemeClr val=\"phClr\"><a:tint val=\"95000\"/><a:satMod val=\"170000\"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"93000\"/><a:satMod val=\"150000\"/><a:shade val=\"98000\"/><a:lumMod val=\"102000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:tint val=\"98000\"/><a:satMod val=\"130000\"/><a:shade val=\"90000\"/><a:lumMod val=\"103000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"63000\"/><a:satMod val=\"120000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/><a:extLst><a:ext uri=\"{05A4C25C-085E-4340-85A3-A5531E510DB2}\"><thm15:themeFamily xmlns:thm15=\"http://schemas.microsoft.com/office/thememl/2012/main\" name=\"Office Theme\" id=\"{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}\" vid=\"{4A3C46E8-61CC-4603-A589-7422A47A8E4A}\"/></a:ext></a:extLst></a:theme>'\n    );\n    docxDefaultStructure.addTextContent(\n        \"word/fontTable.xml\",\n        '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><w:fonts xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" xmlns:w15=\"http://schemas.microsoft.com/office/word/2012/wordml\" xmlns:w16cex=\"http://schemas.microsoft.com/office/word/2018/wordml/cex\" xmlns:w16cid=\"http://schemas.microsoft.com/office/word/2016/wordml/cid\" xmlns:w16=\"http://schemas.microsoft.com/office/word/2018/wordml\" xmlns:w16sdtdh=\"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\" xmlns:w16se=\"http://schemas.microsoft.com/office/word/2015/wordml/symex\" mc:Ignorable=\"w14 w15 w16se w16cid w16 w16cex w16sdtdh\"><w:font w:name=\"Calibri\"><w:panose1 w:val=\"020F0502020204030204\"/><w:charset w:val=\"00\"/><w:family w:val=\"swiss\"/><w:pitch w:val=\"variable\"/><w:sig w:usb0=\"E4002EFF\" w:usb1=\"C000247B\" w:usb2=\"00000009\" w:usb3=\"00000000\" w:csb0=\"000001FF\" w:csb1=\"00000000\"/></w:font><w:font w:name=\"Times New Roman\"><w:panose1 w:val=\"02020603050405020304\"/><w:charset w:val=\"00\"/><w:family w:val=\"roman\"/><w:pitch w:val=\"variable\"/><w:sig w:usb0=\"E0002EFF\" w:usb1=\"C000785B\" w:usb2=\"00000009\" w:usb3=\"00000000\" w:csb0=\"000001FF\" w:csb1=\"00000000\"/></w:font><w:font w:name=\"Calibri Light\"><w:panose1 w:val=\"020F0302020204030204\"/><w:charset w:val=\"00\"/><w:family w:val=\"swiss\"/><w:pitch w:val=\"variable\"/><w:sig w:usb0=\"E4002EFF\" w:usb1=\"C000247B\" w:usb2=\"00000009\" w:usb3=\"00000000\" w:csb0=\"000001FF\" w:csb1=\"00000000\"/></w:font></w:fonts>'\n    );\n    docxDefaultStructure.addTextContent(\n        \"word/settings.xml\",\n        '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><w:settings xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" xmlns:w15=\"http://schemas.microsoft.com/office/word/2012/wordml\" xmlns:w16cex=\"http://schemas.microsoft.com/office/word/2018/wordml/cex\" xmlns:w16cid=\"http://schemas.microsoft.com/office/word/2016/wordml/cid\" xmlns:w16=\"http://schemas.microsoft.com/office/word/2018/wordml\" xmlns:w16sdtdh=\"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\" xmlns:w16se=\"http://schemas.microsoft.com/office/word/2015/wordml/symex\" xmlns:sl=\"http://schemas.openxmlformats.org/schemaLibrary/2006/main\" mc:Ignorable=\"w14 w15 w16se w16cid w16 w16cex w16sdtdh\"><w:zoom w:percent=\"100\"/><w:defaultTabStop w:val=\"708\"/><w:hyphenationZone w:val=\"425\"/><w:characterSpacingControl w:val=\"doNotCompress\"/><w:compat><w:compatSetting w:name=\"compatibilityMode\" w:uri=\"http://schemas.microsoft.com/office/word\" w:val=\"15\"/><w:compatSetting w:name=\"overrideTableStyleFontSizeAndJustification\" w:uri=\"http://schemas.microsoft.com/office/word\" w:val=\"1\"/><w:compatSetting w:name=\"enableOpenTypeFeatures\" w:uri=\"http://schemas.microsoft.com/office/word\" w:val=\"1\"/><w:compatSetting w:name=\"doNotFlipMirrorIndents\" w:uri=\"http://schemas.microsoft.com/office/word\" w:val=\"1\"/><w:compatSetting w:name=\"differentiateMultirowTableHeaders\" w:uri=\"http://schemas.microsoft.com/office/word\" w:val=\"1\"/><w:compatSetting w:name=\"useWord2013TrackBottomHyphenation\" w:uri=\"http://schemas.microsoft.com/office/word\" w:val=\"0\"/></w:compat><w:rsids><w:rsidRoot w:val=\"00393695\"/><w:rsid w:val=\"00393695\"/><w:rsid w:val=\"00B65810\"/></w:rsids><m:mathPr><m:mathFont m:val=\"Cambria Math\"/><m:brkBin m:val=\"before\"/><m:brkBinSub m:val=\"--\"/><m:smallFrac m:val=\"0\"/><m:dispDef/><m:lMargin m:val=\"0\"/><m:rMargin m:val=\"0\"/><m:defJc m:val=\"centerGroup\"/><m:wrapIndent m:val=\"1440\"/><m:intLim m:val=\"subSup\"/><m:naryLim m:val=\"undOvr\"/></m:mathPr><w:themeFontLang w:val=\"es-ES\"/><w:clrSchemeMapping w:bg1=\"light1\" w:t1=\"dark1\" w:bg2=\"light2\" w:t2=\"dark2\" w:accent1=\"accent1\" w:accent2=\"accent2\" w:accent3=\"accent3\" w:accent4=\"accent4\" w:accent5=\"accent5\" w:accent6=\"accent6\" w:hyperlink=\"hyperlink\" w:followedHyperlink=\"followedHyperlink\"/><w:shapeDefaults><o:shapedefaults v:ext=\"edit\" spidmax=\"1026\"/><o:shapelayout v:ext=\"edit\"><o:idmap v:ext=\"edit\" data=\"1\"/></o:shapelayout></w:shapeDefaults><w:decimalSymbol w:val=\",\"/><w:listSeparator w:val=\";\"/><w14:docId w14:val=\"4BA8DBDC\"/><w15:chartTrackingRefBased/><w15:docId w15:val=\"{A3D28596-25BB-4438-82BE-7325B1D4056E}\"/></w:settings>'\n    );\n    docxDefaultStructure.addTextContent(\n        \"word/styles.xml\",\n        '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><w:styles xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" xmlns:w15=\"http://schemas.microsoft.com/office/word/2012/wordml\" xmlns:w16cex=\"http://schemas.microsoft.com/office/word/2018/wordml/cex\" xmlns:w16cid=\"http://schemas.microsoft.com/office/word/2016/wordml/cid\" xmlns:w16=\"http://schemas.microsoft.com/office/word/2018/wordml\" xmlns:w16sdtdh=\"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\" xmlns:w16se=\"http://schemas.microsoft.com/office/word/2015/wordml/symex\" mc:Ignorable=\"w14 w15 w16se w16cid w16 w16cex w16sdtdh\"><w:docDefaults><w:rPrDefault><w:rPr><w:rFonts w:asciiTheme=\"minorHAnsi\" w:eastAsiaTheme=\"minorHAnsi\" w:hAnsiTheme=\"minorHAnsi\" w:cstheme=\"minorBidi\"/><w:sz w:val=\"22\"/><w:szCs w:val=\"22\"/><w:lang w:val=\"es-ES\" w:eastAsia=\"en-US\" w:bidi=\"ar-SA\"/></w:rPr></w:rPrDefault><w:pPrDefault><w:pPr><w:spacing w:after=\"160\" w:line=\"259\" w:lineRule=\"auto\"/></w:pPr></w:pPrDefault></w:docDefaults><w:latentStyles w:defLockedState=\"0\" w:defUIPriority=\"99\" w:defSemiHidden=\"0\" w:defUnhideWhenUsed=\"0\" w:defQFormat=\"0\" w:count=\"376\"><w:lsdException w:name=\"Normal\" w:uiPriority=\"0\" w:qFormat=\"1\"/><w:lsdException w:name=\"heading 1\" w:uiPriority=\"9\" w:qFormat=\"1\"/><w:lsdException w:name=\"heading 2\" w:semiHidden=\"1\" w:uiPriority=\"9\" w:unhideWhenUsed=\"1\" w:qFormat=\"1\"/><w:lsdException w:name=\"heading 3\" w:semiHidden=\"1\" w:uiPriority=\"9\" w:unhideWhenUsed=\"1\" w:qFormat=\"1\"/><w:lsdException w:name=\"heading 4\" w:semiHidden=\"1\" w:uiPriority=\"9\" w:unhideWhenUsed=\"1\" w:qFormat=\"1\"/><w:lsdException w:name=\"heading 5\" w:semiHidden=\"1\" w:uiPriority=\"9\" w:unhideWhenUsed=\"1\" w:qFormat=\"1\"/><w:lsdException w:name=\"heading 6\" w:semiHidden=\"1\" w:uiPriority=\"9\" w:unhideWhenUsed=\"1\" w:qFormat=\"1\"/><w:lsdException w:name=\"heading 7\" w:semiHidden=\"1\" w:uiPriority=\"9\" w:unhideWhenUsed=\"1\" w:qFormat=\"1\"/><w:lsdException w:name=\"heading 8\" w:semiHidden=\"1\" w:uiPriority=\"9\" w:unhideWhenUsed=\"1\" w:qFormat=\"1\"/><w:lsdException w:name=\"heading 9\" w:semiHidden=\"1\" w:uiPriority=\"9\" w:unhideWhenUsed=\"1\" w:qFormat=\"1\"/><w:lsdException w:name=\"index 1\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"index 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"index 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"index 4\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"index 5\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"index 6\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"index 7\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"index 8\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"index 9\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"toc 1\" w:semiHidden=\"1\" w:uiPriority=\"39\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"toc 2\" w:semiHidden=\"1\" w:uiPriority=\"39\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"toc 3\" w:semiHidden=\"1\" w:uiPriority=\"39\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"toc 4\" w:semiHidden=\"1\" w:uiPriority=\"39\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"toc 5\" w:semiHidden=\"1\" w:uiPriority=\"39\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"toc 6\" w:semiHidden=\"1\" w:uiPriority=\"39\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"toc 7\" w:semiHidden=\"1\" w:uiPriority=\"39\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"toc 8\" w:semiHidden=\"1\" w:uiPriority=\"39\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"toc 9\" w:semiHidden=\"1\" w:uiPriority=\"39\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Normal Indent\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"footnote text\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"annotation text\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"header\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"footer\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"index heading\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"caption\" w:semiHidden=\"1\" w:uiPriority=\"35\" w:unhideWhenUsed=\"1\" w:qFormat=\"1\"/><w:lsdException w:name=\"table of figures\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"envelope address\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"envelope return\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"footnote reference\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"annotation reference\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"line number\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"page number\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"endnote reference\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"endnote text\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"table of authorities\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"macro\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"toa heading\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Bullet\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Number\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List 4\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List 5\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Bullet 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Bullet 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Bullet 4\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Bullet 5\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Number 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Number 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Number 4\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Number 5\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Title\" w:uiPriority=\"10\" w:qFormat=\"1\"/><w:lsdException w:name=\"Closing\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Signature\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Default Paragraph Font\" w:semiHidden=\"1\" w:uiPriority=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Body Text\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Body Text Indent\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Continue\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Continue 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Continue 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Continue 4\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"List Continue 5\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Message Header\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Subtitle\" w:uiPriority=\"11\" w:qFormat=\"1\"/><w:lsdException w:name=\"Salutation\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Date\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Body Text First Indent\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Body Text First Indent 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Note Heading\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Body Text 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Body Text 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Body Text Indent 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Body Text Indent 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Block Text\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Hyperlink\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"FollowedHyperlink\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Strong\" w:uiPriority=\"22\" w:qFormat=\"1\"/><w:lsdException w:name=\"Emphasis\" w:uiPriority=\"20\" w:qFormat=\"1\"/><w:lsdException w:name=\"Document Map\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Plain Text\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"E-mail Signature\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Top of Form\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Bottom of Form\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Normal (Web)\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Acronym\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Address\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Cite\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Code\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Definition\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Keyboard\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Preformatted\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Sample\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Typewriter\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"HTML Variable\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Normal Table\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"annotation subject\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"No List\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Outline List 1\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Outline List 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Outline List 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Simple 1\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Simple 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Simple 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Classic 1\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Classic 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Classic 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Classic 4\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Colorful 1\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Colorful 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Colorful 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Columns 1\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Columns 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Columns 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Columns 4\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Columns 5\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Grid 1\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Grid 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Grid 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Grid 4\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Grid 5\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Grid 6\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Grid 7\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Grid 8\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table List 1\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table List 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table List 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table List 4\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table List 5\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table List 6\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table List 7\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table List 8\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table 3D effects 1\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table 3D effects 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table 3D effects 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Contemporary\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Elegant\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Professional\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Subtle 1\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Subtle 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Web 1\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Web 2\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Web 3\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Balloon Text\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Table Grid\" w:uiPriority=\"39\"/><w:lsdException w:name=\"Table Theme\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Placeholder Text\" w:semiHidden=\"1\"/><w:lsdException w:name=\"No Spacing\" w:uiPriority=\"1\" w:qFormat=\"1\"/><w:lsdException w:name=\"Light Shading\" w:uiPriority=\"60\"/><w:lsdException w:name=\"Light List\" w:uiPriority=\"61\"/><w:lsdException w:name=\"Light Grid\" w:uiPriority=\"62\"/><w:lsdException w:name=\"Medium Shading 1\" w:uiPriority=\"63\"/><w:lsdException w:name=\"Medium Shading 2\" w:uiPriority=\"64\"/><w:lsdException w:name=\"Medium List 1\" w:uiPriority=\"65\"/><w:lsdException w:name=\"Medium List 2\" w:uiPriority=\"66\"/><w:lsdException w:name=\"Medium Grid 1\" w:uiPriority=\"67\"/><w:lsdException w:name=\"Medium Grid 2\" w:uiPriority=\"68\"/><w:lsdException w:name=\"Medium Grid 3\" w:uiPriority=\"69\"/><w:lsdException w:name=\"Dark List\" w:uiPriority=\"70\"/><w:lsdException w:name=\"Colorful Shading\" w:uiPriority=\"71\"/><w:lsdException w:name=\"Colorful List\" w:uiPriority=\"72\"/><w:lsdException w:name=\"Colorful Grid\" w:uiPriority=\"73\"/><w:lsdException w:name=\"Light Shading Accent 1\" w:uiPriority=\"60\"/><w:lsdException w:name=\"Light List Accent 1\" w:uiPriority=\"61\"/><w:lsdException w:name=\"Light Grid Accent 1\" w:uiPriority=\"62\"/><w:lsdException w:name=\"Medium Shading 1 Accent 1\" w:uiPriority=\"63\"/><w:lsdException w:name=\"Medium Shading 2 Accent 1\" w:uiPriority=\"64\"/><w:lsdException w:name=\"Medium List 1 Accent 1\" w:uiPriority=\"65\"/><w:lsdException w:name=\"Revision\" w:semiHidden=\"1\"/><w:lsdException w:name=\"List Paragraph\" w:uiPriority=\"34\" w:qFormat=\"1\"/><w:lsdException w:name=\"Quote\" w:uiPriority=\"29\" w:qFormat=\"1\"/><w:lsdException w:name=\"Intense Quote\" w:uiPriority=\"30\" w:qFormat=\"1\"/><w:lsdException w:name=\"Medium List 2 Accent 1\" w:uiPriority=\"66\"/><w:lsdException w:name=\"Medium Grid 1 Accent 1\" w:uiPriority=\"67\"/><w:lsdException w:name=\"Medium Grid 2 Accent 1\" w:uiPriority=\"68\"/><w:lsdException w:name=\"Medium Grid 3 Accent 1\" w:uiPriority=\"69\"/><w:lsdException w:name=\"Dark List Accent 1\" w:uiPriority=\"70\"/><w:lsdException w:name=\"Colorful Shading Accent 1\" w:uiPriority=\"71\"/><w:lsdException w:name=\"Colorful List Accent 1\" w:uiPriority=\"72\"/><w:lsdException w:name=\"Colorful Grid Accent 1\" w:uiPriority=\"73\"/><w:lsdException w:name=\"Light Shading Accent 2\" w:uiPriority=\"60\"/><w:lsdException w:name=\"Light List Accent 2\" w:uiPriority=\"61\"/><w:lsdException w:name=\"Light Grid Accent 2\" w:uiPriority=\"62\"/><w:lsdException w:name=\"Medium Shading 1 Accent 2\" w:uiPriority=\"63\"/><w:lsdException w:name=\"Medium Shading 2 Accent 2\" w:uiPriority=\"64\"/><w:lsdException w:name=\"Medium List 1 Accent 2\" w:uiPriority=\"65\"/><w:lsdException w:name=\"Medium List 2 Accent 2\" w:uiPriority=\"66\"/><w:lsdException w:name=\"Medium Grid 1 Accent 2\" w:uiPriority=\"67\"/><w:lsdException w:name=\"Medium Grid 2 Accent 2\" w:uiPriority=\"68\"/><w:lsdException w:name=\"Medium Grid 3 Accent 2\" w:uiPriority=\"69\"/><w:lsdException w:name=\"Dark List Accent 2\" w:uiPriority=\"70\"/><w:lsdException w:name=\"Colorful Shading Accent 2\" w:uiPriority=\"71\"/><w:lsdException w:name=\"Colorful List Accent 2\" w:uiPriority=\"72\"/><w:lsdException w:name=\"Colorful Grid Accent 2\" w:uiPriority=\"73\"/><w:lsdException w:name=\"Light Shading Accent 3\" w:uiPriority=\"60\"/><w:lsdException w:name=\"Light List Accent 3\" w:uiPriority=\"61\"/><w:lsdException w:name=\"Light Grid Accent 3\" w:uiPriority=\"62\"/><w:lsdException w:name=\"Medium Shading 1 Accent 3\" w:uiPriority=\"63\"/><w:lsdException w:name=\"Medium Shading 2 Accent 3\" w:uiPriority=\"64\"/><w:lsdException w:name=\"Medium List 1 Accent 3\" w:uiPriority=\"65\"/><w:lsdException w:name=\"Medium List 2 Accent 3\" w:uiPriority=\"66\"/><w:lsdException w:name=\"Medium Grid 1 Accent 3\" w:uiPriority=\"67\"/><w:lsdException w:name=\"Medium Grid 2 Accent 3\" w:uiPriority=\"68\"/><w:lsdException w:name=\"Medium Grid 3 Accent 3\" w:uiPriority=\"69\"/><w:lsdException w:name=\"Dark List Accent 3\" w:uiPriority=\"70\"/><w:lsdException w:name=\"Colorful Shading Accent 3\" w:uiPriority=\"71\"/><w:lsdException w:name=\"Colorful List Accent 3\" w:uiPriority=\"72\"/><w:lsdException w:name=\"Colorful Grid Accent 3\" w:uiPriority=\"73\"/><w:lsdException w:name=\"Light Shading Accent 4\" w:uiPriority=\"60\"/><w:lsdException w:name=\"Light List Accent 4\" w:uiPriority=\"61\"/><w:lsdException w:name=\"Light Grid Accent 4\" w:uiPriority=\"62\"/><w:lsdException w:name=\"Medium Shading 1 Accent 4\" w:uiPriority=\"63\"/><w:lsdException w:name=\"Medium Shading 2 Accent 4\" w:uiPriority=\"64\"/><w:lsdException w:name=\"Medium List 1 Accent 4\" w:uiPriority=\"65\"/><w:lsdException w:name=\"Medium List 2 Accent 4\" w:uiPriority=\"66\"/><w:lsdException w:name=\"Medium Grid 1 Accent 4\" w:uiPriority=\"67\"/><w:lsdException w:name=\"Medium Grid 2 Accent 4\" w:uiPriority=\"68\"/><w:lsdException w:name=\"Medium Grid 3 Accent 4\" w:uiPriority=\"69\"/><w:lsdException w:name=\"Dark List Accent 4\" w:uiPriority=\"70\"/><w:lsdException w:name=\"Colorful Shading Accent 4\" w:uiPriority=\"71\"/><w:lsdException w:name=\"Colorful List Accent 4\" w:uiPriority=\"72\"/><w:lsdException w:name=\"Colorful Grid Accent 4\" w:uiPriority=\"73\"/><w:lsdException w:name=\"Light Shading Accent 5\" w:uiPriority=\"60\"/><w:lsdException w:name=\"Light List Accent 5\" w:uiPriority=\"61\"/><w:lsdException w:name=\"Light Grid Accent 5\" w:uiPriority=\"62\"/><w:lsdException w:name=\"Medium Shading 1 Accent 5\" w:uiPriority=\"63\"/><w:lsdException w:name=\"Medium Shading 2 Accent 5\" w:uiPriority=\"64\"/><w:lsdException w:name=\"Medium List 1 Accent 5\" w:uiPriority=\"65\"/><w:lsdException w:name=\"Medium List 2 Accent 5\" w:uiPriority=\"66\"/><w:lsdException w:name=\"Medium Grid 1 Accent 5\" w:uiPriority=\"67\"/><w:lsdException w:name=\"Medium Grid 2 Accent 5\" w:uiPriority=\"68\"/><w:lsdException w:name=\"Medium Grid 3 Accent 5\" w:uiPriority=\"69\"/><w:lsdException w:name=\"Dark List Accent 5\" w:uiPriority=\"70\"/><w:lsdException w:name=\"Colorful Shading Accent 5\" w:uiPriority=\"71\"/><w:lsdException w:name=\"Colorful List Accent 5\" w:uiPriority=\"72\"/><w:lsdException w:name=\"Colorful Grid Accent 5\" w:uiPriority=\"73\"/><w:lsdException w:name=\"Light Shading Accent 6\" w:uiPriority=\"60\"/><w:lsdException w:name=\"Light List Accent 6\" w:uiPriority=\"61\"/><w:lsdException w:name=\"Light Grid Accent 6\" w:uiPriority=\"62\"/><w:lsdException w:name=\"Medium Shading 1 Accent 6\" w:uiPriority=\"63\"/><w:lsdException w:name=\"Medium Shading 2 Accent 6\" w:uiPriority=\"64\"/><w:lsdException w:name=\"Medium List 1 Accent 6\" w:uiPriority=\"65\"/><w:lsdException w:name=\"Medium List 2 Accent 6\" w:uiPriority=\"66\"/><w:lsdException w:name=\"Medium Grid 1 Accent 6\" w:uiPriority=\"67\"/><w:lsdException w:name=\"Medium Grid 2 Accent 6\" w:uiPriority=\"68\"/><w:lsdException w:name=\"Medium Grid 3 Accent 6\" w:uiPriority=\"69\"/><w:lsdException w:name=\"Dark List Accent 6\" w:uiPriority=\"70\"/><w:lsdException w:name=\"Colorful Shading Accent 6\" w:uiPriority=\"71\"/><w:lsdException w:name=\"Colorful List Accent 6\" w:uiPriority=\"72\"/><w:lsdException w:name=\"Colorful Grid Accent 6\" w:uiPriority=\"73\"/><w:lsdException w:name=\"Subtle Emphasis\" w:uiPriority=\"19\" w:qFormat=\"1\"/><w:lsdException w:name=\"Intense Emphasis\" w:uiPriority=\"21\" w:qFormat=\"1\"/><w:lsdException w:name=\"Subtle Reference\" w:uiPriority=\"31\" w:qFormat=\"1\"/><w:lsdException w:name=\"Intense Reference\" w:uiPriority=\"32\" w:qFormat=\"1\"/><w:lsdException w:name=\"Book Title\" w:uiPriority=\"33\" w:qFormat=\"1\"/><w:lsdException w:name=\"Bibliography\" w:semiHidden=\"1\" w:uiPriority=\"37\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"TOC Heading\" w:semiHidden=\"1\" w:uiPriority=\"39\" w:unhideWhenUsed=\"1\" w:qFormat=\"1\"/><w:lsdException w:name=\"Plain Table 1\" w:uiPriority=\"41\"/><w:lsdException w:name=\"Plain Table 2\" w:uiPriority=\"42\"/><w:lsdException w:name=\"Plain Table 3\" w:uiPriority=\"43\"/><w:lsdException w:name=\"Plain Table 4\" w:uiPriority=\"44\"/><w:lsdException w:name=\"Plain Table 5\" w:uiPriority=\"45\"/><w:lsdException w:name=\"Grid Table Light\" w:uiPriority=\"40\"/><w:lsdException w:name=\"Grid Table 1 Light\" w:uiPriority=\"46\"/><w:lsdException w:name=\"Grid Table 2\" w:uiPriority=\"47\"/><w:lsdException w:name=\"Grid Table 3\" w:uiPriority=\"48\"/><w:lsdException w:name=\"Grid Table 4\" w:uiPriority=\"49\"/><w:lsdException w:name=\"Grid Table 5 Dark\" w:uiPriority=\"50\"/><w:lsdException w:name=\"Grid Table 6 Colorful\" w:uiPriority=\"51\"/><w:lsdException w:name=\"Grid Table 7 Colorful\" w:uiPriority=\"52\"/><w:lsdException w:name=\"Grid Table 1 Light Accent 1\" w:uiPriority=\"46\"/><w:lsdException w:name=\"Grid Table 2 Accent 1\" w:uiPriority=\"47\"/><w:lsdException w:name=\"Grid Table 3 Accent 1\" w:uiPriority=\"48\"/><w:lsdException w:name=\"Grid Table 4 Accent 1\" w:uiPriority=\"49\"/><w:lsdException w:name=\"Grid Table 5 Dark Accent 1\" w:uiPriority=\"50\"/><w:lsdException w:name=\"Grid Table 6 Colorful Accent 1\" w:uiPriority=\"51\"/><w:lsdException w:name=\"Grid Table 7 Colorful Accent 1\" w:uiPriority=\"52\"/><w:lsdException w:name=\"Grid Table 1 Light Accent 2\" w:uiPriority=\"46\"/><w:lsdException w:name=\"Grid Table 2 Accent 2\" w:uiPriority=\"47\"/><w:lsdException w:name=\"Grid Table 3 Accent 2\" w:uiPriority=\"48\"/><w:lsdException w:name=\"Grid Table 4 Accent 2\" w:uiPriority=\"49\"/><w:lsdException w:name=\"Grid Table 5 Dark Accent 2\" w:uiPriority=\"50\"/><w:lsdException w:name=\"Grid Table 6 Colorful Accent 2\" w:uiPriority=\"51\"/><w:lsdException w:name=\"Grid Table 7 Colorful Accent 2\" w:uiPriority=\"52\"/><w:lsdException w:name=\"Grid Table 1 Light Accent 3\" w:uiPriority=\"46\"/><w:lsdException w:name=\"Grid Table 2 Accent 3\" w:uiPriority=\"47\"/><w:lsdException w:name=\"Grid Table 3 Accent 3\" w:uiPriority=\"48\"/><w:lsdException w:name=\"Grid Table 4 Accent 3\" w:uiPriority=\"49\"/><w:lsdException w:name=\"Grid Table 5 Dark Accent 3\" w:uiPriority=\"50\"/><w:lsdException w:name=\"Grid Table 6 Colorful Accent 3\" w:uiPriority=\"51\"/><w:lsdException w:name=\"Grid Table 7 Colorful Accent 3\" w:uiPriority=\"52\"/><w:lsdException w:name=\"Grid Table 1 Light Accent 4\" w:uiPriority=\"46\"/><w:lsdException w:name=\"Grid Table 2 Accent 4\" w:uiPriority=\"47\"/><w:lsdException w:name=\"Grid Table 3 Accent 4\" w:uiPriority=\"48\"/><w:lsdException w:name=\"Grid Table 4 Accent 4\" w:uiPriority=\"49\"/><w:lsdException w:name=\"Grid Table 5 Dark Accent 4\" w:uiPriority=\"50\"/><w:lsdException w:name=\"Grid Table 6 Colorful Accent 4\" w:uiPriority=\"51\"/><w:lsdException w:name=\"Grid Table 7 Colorful Accent 4\" w:uiPriority=\"52\"/><w:lsdException w:name=\"Grid Table 1 Light Accent 5\" w:uiPriority=\"46\"/><w:lsdException w:name=\"Grid Table 2 Accent 5\" w:uiPriority=\"47\"/><w:lsdException w:name=\"Grid Table 3 Accent 5\" w:uiPriority=\"48\"/><w:lsdException w:name=\"Grid Table 4 Accent 5\" w:uiPriority=\"49\"/><w:lsdException w:name=\"Grid Table 5 Dark Accent 5\" w:uiPriority=\"50\"/><w:lsdException w:name=\"Grid Table 6 Colorful Accent 5\" w:uiPriority=\"51\"/><w:lsdException w:name=\"Grid Table 7 Colorful Accent 5\" w:uiPriority=\"52\"/><w:lsdException w:name=\"Grid Table 1 Light Accent 6\" w:uiPriority=\"46\"/><w:lsdException w:name=\"Grid Table 2 Accent 6\" w:uiPriority=\"47\"/><w:lsdException w:name=\"Grid Table 3 Accent 6\" w:uiPriority=\"48\"/><w:lsdException w:name=\"Grid Table 4 Accent 6\" w:uiPriority=\"49\"/><w:lsdException w:name=\"Grid Table 5 Dark Accent 6\" w:uiPriority=\"50\"/><w:lsdException w:name=\"Grid Table 6 Colorful Accent 6\" w:uiPriority=\"51\"/><w:lsdException w:name=\"Grid Table 7 Colorful Accent 6\" w:uiPriority=\"52\"/><w:lsdException w:name=\"List Table 1 Light\" w:uiPriority=\"46\"/><w:lsdException w:name=\"List Table 2\" w:uiPriority=\"47\"/><w:lsdException w:name=\"List Table 3\" w:uiPriority=\"48\"/><w:lsdException w:name=\"List Table 4\" w:uiPriority=\"49\"/><w:lsdException w:name=\"List Table 5 Dark\" w:uiPriority=\"50\"/><w:lsdException w:name=\"List Table 6 Colorful\" w:uiPriority=\"51\"/><w:lsdException w:name=\"List Table 7 Colorful\" w:uiPriority=\"52\"/><w:lsdException w:name=\"List Table 1 Light Accent 1\" w:uiPriority=\"46\"/><w:lsdException w:name=\"List Table 2 Accent 1\" w:uiPriority=\"47\"/><w:lsdException w:name=\"List Table 3 Accent 1\" w:uiPriority=\"48\"/><w:lsdException w:name=\"List Table 4 Accent 1\" w:uiPriority=\"49\"/><w:lsdException w:name=\"List Table 5 Dark Accent 1\" w:uiPriority=\"50\"/><w:lsdException w:name=\"List Table 6 Colorful Accent 1\" w:uiPriority=\"51\"/><w:lsdException w:name=\"List Table 7 Colorful Accent 1\" w:uiPriority=\"52\"/><w:lsdException w:name=\"List Table 1 Light Accent 2\" w:uiPriority=\"46\"/><w:lsdException w:name=\"List Table 2 Accent 2\" w:uiPriority=\"47\"/><w:lsdException w:name=\"List Table 3 Accent 2\" w:uiPriority=\"48\"/><w:lsdException w:name=\"List Table 4 Accent 2\" w:uiPriority=\"49\"/><w:lsdException w:name=\"List Table 5 Dark Accent 2\" w:uiPriority=\"50\"/><w:lsdException w:name=\"List Table 6 Colorful Accent 2\" w:uiPriority=\"51\"/><w:lsdException w:name=\"List Table 7 Colorful Accent 2\" w:uiPriority=\"52\"/><w:lsdException w:name=\"List Table 1 Light Accent 3\" w:uiPriority=\"46\"/><w:lsdException w:name=\"List Table 2 Accent 3\" w:uiPriority=\"47\"/><w:lsdException w:name=\"List Table 3 Accent 3\" w:uiPriority=\"48\"/><w:lsdException w:name=\"List Table 4 Accent 3\" w:uiPriority=\"49\"/><w:lsdException w:name=\"List Table 5 Dark Accent 3\" w:uiPriority=\"50\"/><w:lsdException w:name=\"List Table 6 Colorful Accent 3\" w:uiPriority=\"51\"/><w:lsdException w:name=\"List Table 7 Colorful Accent 3\" w:uiPriority=\"52\"/><w:lsdException w:name=\"List Table 1 Light Accent 4\" w:uiPriority=\"46\"/><w:lsdException w:name=\"List Table 2 Accent 4\" w:uiPriority=\"47\"/><w:lsdException w:name=\"List Table 3 Accent 4\" w:uiPriority=\"48\"/><w:lsdException w:name=\"List Table 4 Accent 4\" w:uiPriority=\"49\"/><w:lsdException w:name=\"List Table 5 Dark Accent 4\" w:uiPriority=\"50\"/><w:lsdException w:name=\"List Table 6 Colorful Accent 4\" w:uiPriority=\"51\"/><w:lsdException w:name=\"List Table 7 Colorful Accent 4\" w:uiPriority=\"52\"/><w:lsdException w:name=\"List Table 1 Light Accent 5\" w:uiPriority=\"46\"/><w:lsdException w:name=\"List Table 2 Accent 5\" w:uiPriority=\"47\"/><w:lsdException w:name=\"List Table 3 Accent 5\" w:uiPriority=\"48\"/><w:lsdException w:name=\"List Table 4 Accent 5\" w:uiPriority=\"49\"/><w:lsdException w:name=\"List Table 5 Dark Accent 5\" w:uiPriority=\"50\"/><w:lsdException w:name=\"List Table 6 Colorful Accent 5\" w:uiPriority=\"51\"/><w:lsdException w:name=\"List Table 7 Colorful Accent 5\" w:uiPriority=\"52\"/><w:lsdException w:name=\"List Table 1 Light Accent 6\" w:uiPriority=\"46\"/><w:lsdException w:name=\"List Table 2 Accent 6\" w:uiPriority=\"47\"/><w:lsdException w:name=\"List Table 3 Accent 6\" w:uiPriority=\"48\"/><w:lsdException w:name=\"List Table 4 Accent 6\" w:uiPriority=\"49\"/><w:lsdException w:name=\"List Table 5 Dark Accent 6\" w:uiPriority=\"50\"/><w:lsdException w:name=\"List Table 6 Colorful Accent 6\" w:uiPriority=\"51\"/><w:lsdException w:name=\"List Table 7 Colorful Accent 6\" w:uiPriority=\"52\"/><w:lsdException w:name=\"Mention\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Smart Hyperlink\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Hashtag\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Unresolved Mention\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/><w:lsdException w:name=\"Smart Link\" w:semiHidden=\"1\" w:unhideWhenUsed=\"1\"/></w:latentStyles><w:style w:type=\"paragraph\" w:default=\"1\" w:styleId=\"Normal\"><w:name w:val=\"Normal\"/><w:qFormat/></w:style><w:style w:type=\"paragraph\" w:styleId=\"Heading1\"><w:name w:val=\"heading 1\"/><w:basedOn w:val=\"Normal\"/><w:next w:val=\"Normal\"/><w:link w:val=\"Heading1Char\"/><w:uiPriority w:val=\"9\"/><w:qFormat/><w:rsid w:val=\"00293695\"/><w:pPr><w:keepNext/><w:keepLines/><w:spacing w:before=\"240\" w:after=\"0\"/><w:outlineLvl w:val=\"0\"/></w:pPr><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:color w:val=\"2F5496\" w:themeColor=\"accent1\" w:themeShade=\"BF\"/><w:sz w:val=\"32\"/><w:szCs w:val=\"32\"/></w:rPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"Heading2\"><w:name w:val=\"heading 2\"/><w:basedOn w:val=\"Normal\"/><w:next w:val=\"Normal\"/><w:link w:val=\"Heading2Char\"/><w:uiPriority w:val=\"9\"/><w:unhideWhenUsed/><w:qFormat/><w:rsid w:val=\"00293695\"/><w:pPr><w:keepNext/><w:keepLines/><w:spacing w:before=\"40\" w:after=\"0\"/><w:outlineLvl w:val=\"1\"/></w:pPr><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:color w:val=\"2F5496\" w:themeColor=\"accent1\" w:themeShade=\"BF\"/><w:sz w:val=\"26\"/><w:szCs w:val=\"26\"/></w:rPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"Heading3\"><w:name w:val=\"heading 3\"/><w:basedOn w:val=\"Normal\"/><w:next w:val=\"Normal\"/><w:link w:val=\"Heading3Char\"/><w:uiPriority w:val=\"9\"/><w:unhideWhenUsed/><w:qFormat/><w:rsid w:val=\"00293695\"/><w:pPr><w:keepNext/><w:keepLines/><w:spacing w:before=\"40\" w:after=\"0\"/><w:outlineLvl w:val=\"2\"/></w:pPr><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:color w:val=\"1F3763\" w:themeColor=\"accent1\" w:themeShade=\"7F\"/><w:sz w:val=\"24\"/><w:szCs w:val=\"24\"/></w:rPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"Heading4\"><w:name w:val=\"heading 4\"/><w:basedOn w:val=\"Normal\"/><w:next w:val=\"Normal\"/><w:link w:val=\"Heading4Char\"/><w:uiPriority w:val=\"9\"/><w:unhideWhenUsed/><w:qFormat/><w:rsid w:val=\"00293695\"/><w:pPr><w:keepNext/><w:keepLines/><w:spacing w:before=\"40\" w:after=\"0\"/><w:outlineLvl w:val=\"3\"/></w:pPr><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:i/><w:iCs/><w:color w:val=\"2F5496\" w:themeColor=\"accent1\" w:themeShade=\"BF\"/></w:rPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"Heading5\"><w:name w:val=\"heading 5\"/><w:basedOn w:val=\"Normal\"/><w:next w:val=\"Normal\"/><w:link w:val=\"Heading5Char\"/><w:uiPriority w:val=\"9\"/><w:unhideWhenUsed/><w:qFormat/><w:rsid w:val=\"00293695\"/><w:pPr><w:keepNext/><w:keepLines/><w:spacing w:before=\"40\" w:after=\"0\"/><w:outlineLvl w:val=\"4\"/></w:pPr><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:color w:val=\"2F5496\" w:themeColor=\"accent1\" w:themeShade=\"BF\"/></w:rPr></w:style><w:style w:type=\"paragraph\" w:styleId=\"Heading6\"><w:name w:val=\"heading 6\"/><w:basedOn w:val=\"Normal\"/><w:next w:val=\"Normal\"/><w:link w:val=\"Heading6Char\"/><w:uiPriority w:val=\"9\"/><w:unhideWhenUsed/><w:qFormat/><w:rsid w:val=\"00293695\"/><w:pPr><w:keepNext/><w:keepLines/><w:spacing w:before=\"40\" w:after=\"0\"/><w:outlineLvl w:val=\"5\"/></w:pPr><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:color w:val=\"1F3763\" w:themeColor=\"accent1\" w:themeShade=\"7F\"/></w:rPr></w:style><w:style w:type=\"character\" w:default=\"1\" w:styleId=\"DefaultParagraphFont\"><w:name w:val=\"Default Paragraph Font\"/><w:uiPriority w:val=\"1\"/><w:semiHidden/><w:unhideWhenUsed/></w:style><w:style w:type=\"table\" w:default=\"1\" w:styleId=\"TableNormal\"><w:name w:val=\"Normal Table\"/><w:uiPriority w:val=\"99\"/><w:semiHidden/><w:unhideWhenUsed/><w:tblPr><w:tblInd w:w=\"0\" w:type=\"dxa\"/><w:tblCellMar><w:top w:w=\"0\" w:type=\"dxa\"/><w:left w:w=\"108\" w:type=\"dxa\"/><w:bottom w:w=\"0\" w:type=\"dxa\"/><w:right w:w=\"108\" w:type=\"dxa\"/></w:tblCellMar></w:tblPr></w:style><w:style w:styleId=\"TableGrid\" w:type=\"table\"><w:name w:val=\"Table Grid\"/><w:basedOn w:val=\"TableNormal\"/><w:uiPriority w:val=\"39\"/><w:rsid w:val=\"00F77891\"/><w:pPr><w:spacing w:after=\"0\" w:line=\"240\" w:lineRule=\"auto\"/></w:pPr><w:tblPr><w:tblBorders><w:top w:color=\"auto\" w:space=\"0\" w:sz=\"4\" w:val=\"single\"/><w:left w:color=\"auto\" w:space=\"0\" w:sz=\"4\" w:val=\"single\"/><w:bottom w:color=\"auto\" w:space=\"0\" w:sz=\"4\" w:val=\"single\"/><w:right w:color=\"auto\" w:space=\"0\" w:sz=\"4\" w:val=\"single\"/><w:insideH w:color=\"auto\" w:space=\"0\" w:sz=\"4\" w:val=\"single\"/><w:insideV w:color=\"auto\" w:space=\"0\" w:sz=\"4\" w:val=\"single\"/></w:tblBorders></w:tblPr></w:style><w:style w:type=\"numbering\" w:default=\"1\" w:styleId=\"NoList\"><w:name w:val=\"No List\"/><w:uiPriority w:val=\"99\"/><w:semiHidden/><w:unhideWhenUsed/></w:style><w:style w:type=\"character\" w:customStyle=\"1\" w:styleId=\"Heading1Char\"><w:name w:val=\"Heading 1 Char\"/><w:basedOn w:val=\"DefaultParagraphFont\"/><w:link w:val=\"Heading1\"/><w:uiPriority w:val=\"9\"/><w:rsid w:val=\"00293695\"/><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:color w:val=\"2F5496\" w:themeColor=\"accent1\" w:themeShade=\"BF\"/><w:sz w:val=\"32\"/><w:szCs w:val=\"32\"/></w:rPr></w:style><w:style w:type=\"character\" w:customStyle=\"1\" w:styleId=\"Heading2Char\"><w:name w:val=\"Heading 2 Char\"/><w:basedOn w:val=\"DefaultParagraphFont\"/><w:link w:val=\"Heading2\"/><w:uiPriority w:val=\"9\"/><w:rsid w:val=\"00293695\"/><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:color w:val=\"2F5496\" w:themeColor=\"accent1\" w:themeShade=\"BF\"/><w:sz w:val=\"26\"/><w:szCs w:val=\"26\"/></w:rPr></w:style><w:style w:type=\"character\" w:customStyle=\"1\" w:styleId=\"Heading3Char\"><w:name w:val=\"Heading 3 Char\"/><w:basedOn w:val=\"DefaultParagraphFont\"/><w:link w:val=\"Heading3\"/><w:uiPriority w:val=\"9\"/><w:rsid w:val=\"00293695\"/><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:color w:val=\"1F3763\" w:themeColor=\"accent1\" w:themeShade=\"7F\"/><w:sz w:val=\"24\"/><w:szCs w:val=\"24\"/></w:rPr></w:style><w:style w:type=\"character\" w:customStyle=\"1\" w:styleId=\"Heading4Char\"><w:name w:val=\"Heading 4 Char\"/><w:basedOn w:val=\"DefaultParagraphFont\"/><w:link w:val=\"Heading4\"/><w:uiPriority w:val=\"9\"/><w:rsid w:val=\"00293695\"/><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:i/><w:iCs/><w:color w:val=\"2F5496\" w:themeColor=\"accent1\" w:themeShade=\"BF\"/></w:rPr></w:style><w:style w:type=\"character\" w:customStyle=\"1\" w:styleId=\"Heading5Char\"><w:name w:val=\"Heading 5 Char\"/><w:basedOn w:val=\"DefaultParagraphFont\"/><w:link w:val=\"Heading5\"/><w:uiPriority w:val=\"9\"/><w:rsid w:val=\"00293695\"/><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:color w:val=\"2F5496\" w:themeColor=\"accent1\" w:themeShade=\"BF\"/></w:rPr></w:style><w:style w:type=\"character\" w:customStyle=\"1\" w:styleId=\"Heading6Char\"><w:name w:val=\"Heading 6 Char\"/><w:basedOn w:val=\"DefaultParagraphFont\"/><w:link w:val=\"Heading6\"/><w:uiPriority w:val=\"9\"/><w:rsid w:val=\"00293695\"/><w:rPr><w:rFonts w:asciiTheme=\"majorHAnsi\" w:eastAsiaTheme=\"majorEastAsia\" w:hAnsiTheme=\"majorHAnsi\" w:cstheme=\"majorBidi\"/><w:color w:val=\"1F3763\" w:themeColor=\"accent1\" w:themeShade=\"7F\"/></w:rPr></w:style><w:style w:styleId=\"Hyperlink\" w:type=\"character\"><w:name w:val=\"Hyperlink\"/><w:basedOn w:val=\"DefaultParagraphFont\"/><w:uiPriority w:val=\"99\"/><w:unhideWhenUsed/><w:rsid w:val=\"007176A0\"/><w:rPr><w:color w:themeColor=\"hyperlink\" w:val=\"0563C1\"/><w:u w:val=\"single\"/></w:rPr></w:style><w:style w:styleId=\"ListParagraph\" w:type=\"paragraph\"><w:name w:val=\"List Paragraph\"/><w:basedOn w:val=\"Normal\"/><w:uiPriority w:val=\"34\"/><w:qFormat/><w:rsid w:val=\"00474EBD\"/><w:pPr><w:ind w:left=\"720\"/><w:contextualSpacing/></w:pPr></w:style></w:styles>'\n    );\n    docxDefaultStructure.addTextContent(\n        \"word/webSettings.xml\",\n        '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><w:webSettings xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" xmlns:w15=\"http://schemas.microsoft.com/office/word/2012/wordml\" xmlns:w16cex=\"http://schemas.microsoft.com/office/word/2018/wordml/cex\" xmlns:w16cid=\"http://schemas.microsoft.com/office/word/2016/wordml/cid\" xmlns:w16=\"http://schemas.microsoft.com/office/word/2018/wordml\" xmlns:w16sdtdh=\"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash\" xmlns:w16se=\"http://schemas.microsoft.com/office/word/2015/wordml/symex\" mc:Ignorable=\"w14 w15 w16se w16cid w16 w16cex w16sdtdh\"><w:optimizeForBrowser/><w:allowPNG/></w:webSettings>'\n    );\n\n    return docxDefaultStructure;\n};\n\nexport { generateDefaultDocxStructure };\n","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){\"use strict\";t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&e instanceof Uint8Array?\"uint8array\":o.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=e(\"./support\");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});","import { Docx as DocxStructure } from \"../structure\";\nimport JSZip from \"jszip\";\n\n/**\n * ZIP\n */\nclass Zip {\n    /**\n     * Opens a DOCX\n     *\n     * @param source - Source DOCX\n     * @returns Promise DocxStructure\n     * @throws Error reading DOCX file\n     */\n    public async open(source: ArrayBuffer): Promise<DocxStructure> {\n        const jszip = new JSZip();\n        const docxTemplateStructure = new DocxStructure();\n\n        try {\n            const documentZip = await jszip.loadAsync(source);\n\n            for (const keyZip in documentZip.files) {\n                if (keyZip.endsWith(\".xml\") || keyZip.endsWith(\".rels\")) {\n                    // text contents\n                    const fileValue = await documentZip\n                        .file(keyZip)\n                        ?.async(\"string\")\n                        .then(fileData => fileData);\n                    if (fileValue != null) {\n                        docxTemplateStructure.addTextContent(keyZip, fileValue);\n                    }\n                } else {\n                    // other contents\n                    const fileValue = await documentZip\n                        .file(keyZip)\n                        ?.async(\"uint8array\")\n                        .then(fileData => fileData);\n                    if (fileValue != null) {\n                        docxTemplateStructure.addFileContent(keyZip, fileValue);\n                    }\n                }\n            }\n        } catch (err) {\n            throw new Error(\"Error reading DOCX contents: \" + err);\n        }\n\n        return docxTemplateStructure;\n    }\n\n    /**\n     * Saves a DOCX\n     *\n     * @param docxStructure - DOCX Structure\n     * @returns Promise ArrayBuffer\n     */\n    public async generateArrayBuffer(\n        docxStructure: DocxStructure\n    ): Promise<ArrayBuffer> {\n        const jszip = new JSZip();\n\n        // add text contents\n        for (const [filePath, fileContent] of docxStructure\n            .getTextContents()\n            .entries()) {\n            jszip.file(filePath, fileContent);\n        }\n        // add file contents\n        for (const [filePath, fileContent] of docxStructure\n            .getFileContents()\n            .entries()) {\n            jszip.file(filePath, fileContent);\n        }\n\n        const newZip = await jszip.generateAsync({\n            type: \"arraybuffer\",\n            mimeType:\n                \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n            compression: \"DEFLATE\",\n        });\n\n        return newZip;\n    }\n}\n\nexport { Zip };\n","import { normalizeColor } from \"../util/\";\n\ninterface OptionsRpr {\n    /** Bold */\n    bold?: boolean;\n    /** Color: HEX value */\n    color?: string;\n    /** Font family */\n    font?: string;\n    /** Font size: point values */\n    fontSize?: number;\n    /** Highligh color */\n    highlight?:\n        | \"black\"\n        | \"blue\"\n        | \"cyan\"\n        | \"green\"\n        | \"magenta\"\n        | \"red\"\n        | \"yellow\"\n        | \"white\"\n        | \"darkBlue\"\n        | \"darkCyan\"\n        | \"darkGreen\"\n        | \"darkMagenta\"\n        | \"darkRed\"\n        | \"darkYellow\"\n        | \"darkGray\"\n        | \"lightGray\"\n        | \"none\";\n    /** Italic */\n    italic?: boolean;\n    /** Language */\n    lang?: string;\n    /** Character style */\n    rStyle?: string;\n    /** Strikethrough */\n    strikethrough?: boolean;\n    /** Underline */\n    underline?:\n        | \"single\"\n        | \"words\"\n        | \"double\"\n        | \"thic\"\n        | \"dotted\"\n        | \"dottedHeavy\"\n        | \"dash\"\n        | \"dashedHeavy\"\n        | \"dashLong\"\n        | \"dashLongHeavy\"\n        | \"dotDash\"\n        | \"dashDotHeavy\"\n        | \"dotDotDash\"\n        | \"dashDotDotHeavy\"\n        | \"wave\"\n        | \"wavyHeavy\"\n        | \"wavyDouble\"\n        | \"none\";\n}\n\n/**\n * Create rPr this.options\n */\nclass CreateRpr {\n    /**\n     * Element options\n     */\n    protected options: OptionsRpr;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options rPr\n     */\n    constructor(options: OptionsRpr) {\n        this.options = options;\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        const contents = this.createRpr();\n\n        return contents;\n    }\n\n    /**\n     * Create rPr Styles\n     *\n     * @returns string\n     */\n    protected createRpr(): string {\n        let contents = \"<w:rPr>\";\n\n        if (this.options.bold != null) {\n            contents += '<w:b w:val=\"' + this.options.bold + '\" />';\n            contents += '<w:bCs w:val=\"' + this.options.bold + '\" />';\n        }\n\n        if (this.options.color != null) {\n            contents +=\n                '<w:color w:val=\"' +\n                normalizeColor(this.options.color) +\n                '\" />';\n        }\n\n        if (this.options.font != null) {\n            contents +=\n                '<w:rFonts w:ascii=\"' +\n                this.options.font +\n                '\" w:cs=\"' +\n                this.options.font +\n                '\" w:hAnsi=\"' +\n                this.options.font +\n                '\"/>';\n        }\n\n        if (this.options.fontSize != null) {\n            contents += '<w:sz w:val=\"' + this.options.fontSize * 2 + '\" />';\n            contents += '<w:szCs w:val=\"' + this.options.fontSize * 2 + '\" />';\n        }\n\n        if (this.options.highlight != null) {\n            contents +=\n                '<w:highlight w:val=\"' + this.options.highlight + '\" />';\n        }\n\n        if (this.options.italic != null) {\n            contents += '<w:i w:val=\"' + this.options.italic + '\" />';\n        }\n\n        if (this.options.lang != null) {\n            contents += '<w:lang w:val=\"' + this.options.lang + '\" />';\n        }\n\n        if (this.options.rStyle != null) {\n            contents += '<w:rStyle w:val=\"' + this.options.rStyle + '\" />';\n        }\n\n        if (this.options.strikethrough != null) {\n            contents +=\n                '<w:strike w:val=\"' + this.options.strikethrough + '\"/>';\n        }\n\n        if (this.options.underline != null) {\n            contents += '<w:u w:val=\"' + this.options.underline + '\"/>';\n        }\n\n        contents += \"</w:rPr>\";\n\n        return contents;\n    }\n}\n\nexport { CreateRpr, OptionsRpr };\n","import { applyHtmlSpecialChars } from \"../util/\";\nimport { CreateElement } from \"./element\";\nimport { OptionsParagraph } from \"./paragraph\";\nimport { CreateRpr, OptionsRpr } from \"./rpr\";\n\ninterface OptionsDateTime extends OptionsRpr {\n    /** Date and time format. Default as \"dd/MM/yyyy H:mm:ss\" */\n    format?: string;\n}\n\n/**\n * Create date and time\n */\nclass CreateDateTime extends CreateElement {\n    /**\n     * Element options\n     */\n    protected options: OptionsDateTime;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options link\n     * @param optionsParagraph - Options paragraph\n     */\n    constructor(\n        options: OptionsDateTime,\n        optionsParagraph: OptionsParagraph = {}\n    ) {\n        super();\n\n        // default options\n        options.format ??= \"dd/MM/yyyy H:mm:ss\";\n\n        // apply paragraph rPr styles\n        this.options = this.mergeParagraphRprStyles(options, optionsParagraph);\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        // rPr styles\n        const rPrElement = new CreateRpr(this.options);\n        const rPrStyles = rPrElement.create();\n\n        let contents = \"<w:r>\";\n        contents += rPrStyles;\n\n        const optionFormat = this.options.format;\n        if (optionFormat != null) {\n            contents +=\n                '<w:fldChar w:fldCharType=\"begin\"/></w:r><w:r>' +\n                rPrStyles +\n                '<w:instrText xml:space=\"preserve\">TIME \\\\@ &quot;' +\n                applyHtmlSpecialChars(optionFormat) +\n                \"&quot; </w:instrText></w:r><w:r>\" +\n                rPrStyles +\n                '<w:fldChar w:fldCharType=\"separate\"/></w:r><w:r>' +\n                rPrStyles;\n        }\n\n        contents +=\n            '<w:t xml:space=\"preserve\">date</w:t></w:r><w:r><w:fldChar w:fldCharType=\"end\"/></w:r>';\n\n        return contents;\n    }\n}\n\nexport { CreateDateTime, OptionsDateTime };\n","import {\n    applyHtmlSpecialChars,\n    getImageDimensions,\n    getImageMime,\n} from \"../util/\";\nimport { CreateElement } from \"./element\";\nimport { Relationship } from \"./relationship\";\n\ntype MimeImage = \"image/gif\" | \"image/jpg\" | \"image/png\" | \"image/webp\";\n\ninterface OptionsImage {\n    /** Alt text value */\n    descr?: string;\n    /** Height: EMUs value. Get from image as default */\n    height?: number;\n    /** Image content: png, jpg/jpeg, gif, webp formats */\n    image: ArrayBuffer;\n    /** Float image. Only if textWrap is not inline */\n    float?: \"left\" | \"center\" | \"right\";\n    /** Link: URL */\n    link?: string;\n    /** Mime type. Auto detect if not set */\n    mime?: MimeImage | null;\n    /** Spacing: EMUs value. Default as 0 */\n    spacing?: {\n        top?: number;\n        right?: number;\n        bottom?: number;\n        left?: number;\n    };\n    /** Text wrapping. Default as inline */\n    textWrapping?: \"inline\" | \"square\" | \"front\" | \"back\" | \"topBottom\";\n    /** Width: EMUs value. Get from image as default */\n    width?: number;\n}\n\n/**\n * Create image\n */\nclass CreateImage extends CreateElement {\n    /**\n     * Id docPr\n     */\n    protected idDocPr: number;\n\n    /**\n     * Id\n     */\n    protected id: string;\n\n    /**\n     * Id link\n     */\n    protected idLink?: string;\n\n    /**\n     * Element options\n     */\n    protected options: OptionsImage;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options image\n     * @param id - Id\n     * @param idDocPr - Id docPr\n     * @param idLink - Id link\n     */\n    constructor(\n        options: OptionsImage,\n        id: string,\n        idDocPr: number,\n        idLink?: string\n    ) {\n        super();\n        // init options\n        const imageDimensions = getImageDimensions(options.image);\n\n        // get mime type\n        options.mime ??= getImageMime(options.image) ?? \"image/png\";\n\n        // sizes\n        if (imageDimensions != null) {\n            if (options.width == null) {\n                // transform size: px => pt => EMUs\n                options.width = Math.round(\n                    imageDimensions.width * 0.75 * 12700\n                );\n            }\n            if (options.height == null) {\n                // transform size: px => pt => EMUs\n                options.height = Math.round(\n                    imageDimensions.height * 0.75 * 12700\n                );\n            }\n        }\n\n        // default options\n        options.height ??= 1000000;\n        options.spacing ??= { top: 0, right: 0, bottom: 0, left: 0 };\n        options.spacing.top ??= 0;\n        options.spacing.right ??= 0;\n        options.spacing.bottom ??= 0;\n        options.spacing.left ??= 0;\n        options.textWrapping ??= \"inline\";\n        options.width ??= 1000000;\n\n        this.options = options;\n        this.id = id;\n        this.idDocPr = idDocPr;\n        this.idLink = idLink;\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        // spacing\n        const extendTop = this.options.spacing?.top ?? 0;\n        const extendRight = this.options.spacing?.right ?? 0;\n        const extendBottom = this.options.spacing?.bottom ?? 0;\n        const extendLeft = this.options.spacing?.left ?? 0;\n\n        let contents = \"<w:r><w:drawing>\";\n        let drawingContents = '<wp:simplePos x=\"0\" y=\"0\"/>';\n        if (this.options.textWrapping != \"inline\") {\n            if (this.options.float != null) {\n                drawingContents +=\n                    '<wp:positionH relativeFrom=\"margin\"><wp:align>' +\n                    this.options.float +\n                    '</wp:align></wp:positionH><wp:positionV relativeFrom=\"line\"><wp:posOffset>0</wp:posOffset></wp:positionV>';\n            } else {\n                drawingContents +=\n                    '<wp:positionH relativeFrom=\"margin\"><wp:posOffset>0</wp:posOffset></wp:positionH><wp:positionV relativeFrom=\"line\"><wp:posOffset>0</wp:posOffset></wp:positionV>';\n            }\n        }\n        drawingContents +=\n            '<wp:extent cx=\"' +\n            this.options.width +\n            '\" cy=\"' +\n            this.options.height +\n            '\"/>';\n        drawingContents +=\n            '<wp:effectExtent b=\"' +\n            extendBottom +\n            '\" l=\"' +\n            extendLeft +\n            '\" r=\"' +\n            extendRight +\n            '\" t=\"' +\n            extendTop +\n            '\"/>';\n        if (\n            this.options.textWrapping == \"back\" ||\n            this.options.textWrapping == \"front\"\n        ) {\n            drawingContents += \"<wp:wrapNone/>\";\n        } else if (this.options.textWrapping == \"square\") {\n            drawingContents += '<wp:wrapSquare wrapText=\"bothSides\"/>';\n        } else if (this.options.textWrapping == \"topBottom\") {\n            drawingContents += \"<wp:wrapTopAndBottom/>\";\n        }\n        drawingContents +=\n            '<wp:docPr id=\"' +\n            this.idDocPr +\n            '\" name=\"Picture ' +\n            this.idDocPr +\n            '\" ';\n        if (this.options.descr != null) {\n            drawingContents +=\n                ' descr=\"' + applyHtmlSpecialChars(this.options.descr) + '\" ';\n        }\n        drawingContents += \">\";\n        if (this.options.link != null && this.idLink != null) {\n            drawingContents +=\n                '<a:hlinkClick r:id=\"rId' +\n                this.idLink +\n                '\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"/>';\n        }\n        drawingContents += \"</wp:docPr>\";\n        drawingContents +=\n            '<wp:cNvGraphicFramePr><a:graphicFrameLocks noChangeAspect=\"1\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"/></wp:cNvGraphicFramePr>';\n        drawingContents +=\n            '<a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\"><pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">';\n        drawingContents +=\n            '<pic:nvPicPr><pic:cNvPr id=\"0\" name=\"Picture ' +\n            this.idDocPr +\n            '\"/><pic:cNvPicPr/></pic:nvPicPr>';\n        drawingContents +=\n            '<pic:blipFill><a:blip cstate=\"print\" r:embed=\"rId' +\n            this.id +\n            '\"/><a:stretch><a:fillRect/></a:stretch></pic:blipFill>';\n        drawingContents +=\n            '<pic:spPr><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"' +\n            this.options.width +\n            '\" cy=\"' +\n            this.options.height +\n            '\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></pic:spPr>';\n        drawingContents += \"</pic:pic></a:graphicData></a:graphic>\";\n\n        switch (this.options.textWrapping) {\n            case \"back\":\n                contents +=\n                    '<wp:anchor allowOverlap=\"1\" behindDoc=\"1\" distB=\"0\" distL=\"0\" distR=\"0\" distT=\"0\" layoutInCell=\"1\" locked=\"0\" relativeHeight=\"0\" simplePos=\"0\">' +\n                    drawingContents +\n                    \"</wp:anchor>\";\n                break;\n            case \"front\":\n                contents +=\n                    '<wp:anchor allowOverlap=\"1\" behindDoc=\"0\" distB=\"0\" distL=\"0\" distR=\"0\" distT=\"0\" layoutInCell=\"1\" locked=\"0\" relativeHeight=\"0\" simplePos=\"0\">' +\n                    drawingContents +\n                    \"</wp:anchor>\";\n                break;\n            case \"square\":\n                contents +=\n                    '<wp:anchor allowOverlap=\"1\" behindDoc=\"0\" distB=\"0\" distL=\"0\" distR=\"0\" distT=\"0\" layoutInCell=\"1\" locked=\"0\" relativeHeight=\"0\" simplePos=\"0\">' +\n                    drawingContents +\n                    \"</wp:anchor>\";\n                break;\n            case \"topBottom\":\n                contents +=\n                    '<wp:anchor allowOverlap=\"1\" behindDoc=\"0\" distB=\"0\" distL=\"0\" distR=\"0\" distT=\"0\" layoutInCell=\"1\" locked=\"0\" relativeHeight=\"0\" simplePos=\"0\">' +\n                    drawingContents +\n                    \"</wp:anchor>\";\n                break;\n            case \"inline\":\n            default:\n                contents +=\n                    '<wp:inline distB=\"0\" distL=\"0\" distR=\"0\" distT=\"0\">' +\n                    drawingContents +\n                    \"</wp:inline>\";\n                break;\n        }\n\n        contents += \"</w:drawing></w:r>\";\n\n        // keep image external relationship\n        const newExternalRelationship: Relationship = {\n            id: \"rId\" + this.id,\n            target:\n                \"media/\" + this.id + \".\" + this.getRelationshipFileExtension(),\n            type: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n        };\n        this.externalRelationships.push(newExternalRelationship);\n\n        // keep default from the element\n        this.externalDefaults.set(\n            this.getRelationshipFileExtension(),\n            this.getMime()\n        );\n\n        // keep file from the element\n        this.fileContents.set(\n            \"word/media/\" + this.id + \".\" + this.getRelationshipFileExtension(),\n            this.options.image\n        );\n\n        // keep image link external relationship\n        if (this.options.link != null && this.idLink != null) {\n            const newExternalRelationshipLink: Relationship = {\n                id: \"rId\" + this.idLink,\n                target: applyHtmlSpecialChars(this.options.link),\n                targetMode: \"External\",\n                type: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n            };\n            this.externalRelationships.push(newExternalRelationshipLink);\n        }\n\n        return contents;\n    }\n\n    /**\n     * Getter mime\n     *\n     * @returns Image options\n     */\n    public getMime(): MimeImage {\n        return this.options.mime ?? \"image/png\";\n    }\n\n    /**\n     * Getter options\n     *\n     * @returns Image options\n     */\n    public getOptions(): OptionsImage {\n        return this.options;\n    }\n\n    /**\n     * Gets file extension to be added as relationship\n     *\n     * @returns File extension. Default as png\n     */\n    public getRelationshipFileExtension(): string {\n        return this.options.mime?.replace(\"image/\", \"\") ?? \"png\";\n    }\n}\n\nexport { CreateImage, MimeImage, OptionsImage };\n","import { WordFragment } from \"../create\";\nimport { applyHtmlSpecialChars } from \"../util/\";\nimport { CreateElement } from \"./element\";\nimport { OptionsParagraph } from \"./paragraph\";\nimport { CreateRpr, OptionsRpr } from \"./rpr\";\n\ninterface OptionsText extends OptionsRpr {\n    /** Text content */\n    text: string;\n}\n\n/**\n * Create text\n */\nclass CreateText extends CreateElement {\n    /**\n     * Element options\n     */\n    protected options: OptionsText | WordFragment;\n\n    /**\n     * Constructor\n     *\n     * @param options - Text contents and options\n     * @param optionsParagraph - Options paragraph\n     */\n    constructor(\n        options: OptionsText | WordFragment,\n        optionsParagraph: OptionsParagraph = {}\n    ) {\n        super();\n\n        if (options instanceof WordFragment) {\n            // WordFragment content\n            this.options = options;\n        } else {\n            // OptionsText content\n            this.options = options;\n\n            // apply paragraph rPr styles\n            this.options = this.mergeParagraphRprStyles(\n                this.options,\n                optionsParagraph\n            );\n        }\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        let contents = \"\";\n\n        if (this.options instanceof WordFragment) {\n            // WordFragment content\n            contents = this.options\n                .getDocxContent()\n                .getInlineXmlContents(this.options.toString());\n\n            // keep external contents from the WordFragment to be added into the document when the WordFragment is added\n            this.mergeExternalDependencies(this.options);\n        } else {\n            // text content\n            contents = \"<w:r>\";\n\n            // rPr styles\n            const rPrElement = new CreateRpr(this.options);\n            contents += rPrElement.create();\n\n            // text content\n            contents +=\n                '<w:t xml:space=\"preserve\">' +\n                applyHtmlSpecialChars(this.options.text) +\n                \"</w:t>\";\n\n            contents += \"</w:r>\";\n        }\n\n        return contents;\n    }\n}\n\nexport { CreateText, OptionsText };\n","import { applyHtmlSpecialChars } from \"../util/\";\nimport { OptionsParagraph } from \"./paragraph\";\nimport { Relationship } from \"./relationship\";\nimport { CreateText, OptionsText } from \"./text\";\n\ninterface OptionsLink extends OptionsText {\n    /** Color: HEX value. Default as 0563C1 */\n    color?: string;\n    /** Link: URL or #bookmark_name */\n    link: string;\n    /** Character style. Default as Hyperlink */\n    rStyle?: string;\n    /** Underline. Default as single */\n    underline?:\n        | \"single\"\n        | \"words\"\n        | \"double\"\n        | \"thic\"\n        | \"dotted\"\n        | \"dottedHeavy\"\n        | \"dash\"\n        | \"dashedHeavy\"\n        | \"dashLong\"\n        | \"dashLongHeavy\"\n        | \"dotDash\"\n        | \"dashDotHeavy\"\n        | \"dotDotDash\"\n        | \"dashDotDotHeavy\"\n        | \"wave\"\n        | \"wavyHeavy\"\n        | \"wavyDouble\"\n        | \"none\";\n}\n\n/**\n * Create hyperlink\n */\nclass CreateLink extends CreateText {\n    /**\n     * Id\n     */\n    protected id: string;\n\n    /**\n     * Element options\n     */\n    protected options: OptionsLink;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options link\n     * @param optionsParagraph - Options paragraph\n     * @param id - Id\n     */\n    constructor(\n        options: OptionsLink,\n        optionsParagraph: OptionsParagraph = {},\n        id: string\n    ) {\n        super(options, optionsParagraph);\n\n        // default options\n        options.color ??= \"0563C1\";\n        options.rStyle ??= \"Hyperlink\";\n        options.underline ??= \"single\";\n\n        this.options = options;\n        this.id = id;\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        let contents = super.create();\n\n        if (this.options.link.startsWith(\"#\")) {\n            // bookmark, remove # before adding it\n            contents =\n                '<w:hyperlink w:anchor=\"' +\n                applyHtmlSpecialChars(this.options.link.slice(1)) +\n                '\" w:history=\"1\">' +\n                contents +\n                \"</w:hyperlink>\";\n        } else {\n            // hyperlink\n            contents =\n                '<w:hyperlink r:id=\"' +\n                this.id +\n                '\" w:history=\"1\">' +\n                contents +\n                \"</w:hyperlink>\";\n\n            // add external relationship\n            const newExternalRelationship: Relationship = {\n                id: this.id,\n                target: applyHtmlSpecialChars(this.options.link),\n                targetMode: \"External\",\n                type: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n            };\n            this.externalRelationships.push(newExternalRelationship);\n        }\n\n        return contents;\n    }\n}\n\nexport { CreateLink, OptionsLink };\n","import { normalizeColor } from \"../util/\";\nimport { CreateElement } from \"./element\";\nimport { CreateRpr, OptionsRpr } from \"./rpr\";\n\ninterface OptionsParagraph extends OptionsRpr {\n    /** Alignment */\n    align?: string;\n    /** Background color: HEX value */\n    backgroundColor?: string;\n    /** Bidi */\n    bidi?: boolean;\n    /** Contextual spacing. Don't added space between paragraphs of the same style */\n    contextualSpacing?: boolean;\n    /** Indentations: twips value */\n    indentation?: {\n        firstLine?: number;\n        hanging?: number;\n        left?: number;\n        right?: number;\n    };\n    /** Keep lines together */\n    keepLines?: boolean;\n    /** Keep with next */\n    keepNext?: boolean;\n    /** Spacing: twips value */\n    spacing?: {\n        line?: number;\n        after?: number;\n        before?: number;\n    };\n    /** Outline level (heading level): 1, 2, 3... */\n    outlineLvl?: number;\n    /** Paragraph style */\n    pStyle?: string;\n    /** Parse line breaks. Default as true */\n    parseLineBreaks?: boolean;\n    /** Parse tabs. Default as true */\n    parseTabs?: boolean;\n    /** Parse break before */\n    pageBreakBefore?: boolean;\n    /** RTL */\n    rtl?: boolean;\n    /** Shading color: HEX value */\n    shading?: string;\n}\n\n/**\n * Create paragraph\n */\nclass CreateParagraph extends CreateElement {\n    /**\n     * Element options\n     */\n    protected options: OptionsParagraph;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options paragraph\n     */\n    constructor(options: OptionsParagraph) {\n        super();\n\n        // default options\n        options.parseLineBreaks ??= true;\n        options.parseTabs ??= true;\n\n        this.options = options;\n    }\n\n    /**\n     * Creates content\n     *\n     * @param contentsParagraph - Paragraph contents\n     * @returns Paragraph\n     */\n    public create(contentsParagraph: string = \"\"): string {\n        let contents = \"<w:p>\";\n\n        // pPr styles\n        contents += this.createPpr();\n\n        contents += contentsParagraph;\n\n        contents += \"</w:p>\";\n\n        // replace line breaks\n        if (\n            this.options.parseLineBreaks != null &&\n            this.options.parseLineBreaks\n        ) {\n            contents = contents.replace(\n                /\\n\\r|\\n|\\r\\n|\\r/g,\n                '</w:t><w:br/><w:t xml:space=\"preserve\">'\n            );\n        }\n\n        // replace tabs\n        if (this.options.parseTabs != null && this.options.parseTabs) {\n            contents = contents.replace(\n                /\\t/g,\n                '</w:t><w:tab/><w:t xml:space=\"preserve\">'\n            );\n        }\n\n        return contents;\n    }\n\n    /**\n     * Create pPr Styles\n     *\n     * @returns Styles\n     */\n    public createPpr(): string {\n        let contents = \"<w:pPr>\";\n\n        if (this.options.pStyle != null) {\n            contents += '<w:pStyle w:val=\"' + this.options.pStyle + '\"/>';\n        }\n\n        if (this.options.align != null) {\n            if (this.options.align == \"justify\") {\n                // normalize values\n                this.options.align = \"both\";\n            }\n            contents += '<w:jc w:val=\"' + this.options.align + '\" />';\n        }\n\n        if (this.options.bidi != null) {\n            contents += '<w:bidi w:val=\"' + this.options.bidi + '\"/>';\n        }\n\n        if (this.options.contextualSpacing != null) {\n            contents +=\n                '<w:contextualSpacing w:val=\"' +\n                this.options.contextualSpacing +\n                '\"/>';\n        }\n\n        if (this.options.backgroundColor != null) {\n            contents +=\n                '<w:shd w:fill=\"' +\n                this.options.backgroundColor +\n                '\" w:val=\"clear\"/>';\n        }\n\n        if (this.options.indentation != null) {\n            const indentations = this.options.indentation;\n\n            contents += \"<w:ind \";\n            if (indentations.firstLine != null) {\n                contents += ' w:firstLine=\"' + indentations.firstLine + '\" ';\n            }\n            if (indentations.hanging != null) {\n                contents += ' w:hanging=\"' + indentations.hanging + '\" ';\n            }\n            if (indentations.left != null) {\n                contents += ' w:left=\"' + indentations.left + '\" ';\n            }\n            if (indentations.right != null) {\n                contents += ' w:right=\"' + indentations.right + '\" ';\n            }\n            contents += \"/>\";\n        }\n\n        if (this.options.keepLines != null) {\n            contents += '<w:keepLines w:val=\"' + this.options.keepLines + '\"/>';\n        }\n\n        if (this.options.keepNext != null) {\n            contents += '<w:keepNext w:val=\"' + this.options.keepNext + '\"/>';\n        }\n\n        if (this.options.spacing != null) {\n            const spacings = this.options.spacing;\n\n            contents += \"<w:spacing \";\n            if (spacings.line != null) {\n                contents += ' w:line=\"' + spacings.line + '\" ';\n            }\n            if (spacings.after != null) {\n                contents += ' w:after=\"' + spacings.after + '\" ';\n            }\n            if (spacings.before != null) {\n                contents += ' w:before=\"' + spacings.before + '\" ';\n            }\n            contents += ' w:lineRule=\"auto\" />';\n        }\n\n        if (this.options.outlineLvl != null) {\n            contents +=\n                '<w:outlineLvl w:val=\"' + this.options.outlineLvl + '\"/>';\n        }\n\n        if (this.options.pageBreakBefore != null) {\n            contents +=\n                '<w:pageBreakBefore w:val=\"' +\n                this.options.pageBreakBefore +\n                '\"/>';\n        }\n\n        if (this.options.rtl != null) {\n            contents += '<w:rtl w:val=\"' + this.options.rtl + '\"/>';\n        }\n\n        if (this.options.shading != null) {\n            contents +=\n                '<w:shd w:color=\"auto\" w:fill=\"' +\n                normalizeColor(this.options.shading) +\n                '\" w:val=\"clear\"/>';\n        }\n\n        // rPr styles\n        const rPrElement = new CreateRpr(this.options);\n        contents += rPrElement.create();\n\n        contents += \"</w:pPr>\";\n\n        return contents;\n    }\n}\n\nexport { CreateParagraph, OptionsParagraph };\n","import { WordFragment } from \"../create\";\nimport { CreateElement } from \"./element\";\nimport { CreateParagraph, OptionsParagraph } from \"./paragraph\";\nimport { CreateText, OptionsText } from \"./text\";\n\ntype ListNested = string | WordFragment | ListNested[];\n\ninterface OptionsList extends OptionsParagraph {\n    /** Custom numId */\n    numId?: number;\n    /** Paragraph style. Default as ListParagraph */\n    pStyle?: string;\n    /** List type: bullets (default), numbering, clear or custom list style */\n    type?: \"bullets\" | \"numbering\" | string;\n}\n\n/**\n * Create list\n */\nclass CreateList extends CreateElement {\n    /**\n     * Items\n     */\n    protected items: ListNested[];\n\n    /**\n     * Element options\n     */\n    protected options: OptionsList;\n\n    /**\n     * Contents\n     */\n    protected contents: string;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options list\n     * @param items - List items\n     */\n    constructor(options: OptionsList, items: ListNested[]) {\n        super();\n\n        // default options\n        options.pStyle ??= \"ListParagraph\";\n        options.type ??= \"bullets\";\n\n        this.options = options;\n        this.items = items;\n\n        this.contents = \"\";\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        this.createListContents(this.items, 0);\n\n        return this.contents;\n    }\n\n    /**\n     * Getter options\n     *\n     * @returns List options\n     */\n    public getOptions(): OptionsList {\n        return this.options;\n    }\n\n    /**\n     * Create list contents\n     *\n     * @param items - List items\n     * @param level - Depth level\n     */\n    protected createListContents(items: ListNested[], level: number) {\n        // iterate and add items\n        items.forEach(item => {\n            if (typeof item === \"string\" || item instanceof WordFragment) {\n                // a content\n                let textContent;\n\n                if (typeof item === \"string\") {\n                    // generate text content\n                    const optionsText: OptionsText = {\n                        text: item,\n                    };\n                    const textElement = new CreateText(\n                        optionsText,\n                        this.options\n                    );\n                    textContent = textElement.create();\n                } else if (item instanceof WordFragment) {\n                    textContent = item\n                        .getDocxContent()\n                        .getInlineXmlContents(item.toString());\n\n                    // keep external relationships from the element\n                    item.getExternalRelationships().forEach(\n                        externalRelationship => {\n                            this.externalRelationships.push(\n                                externalRelationship\n                            );\n                        }\n                    );\n                    // keep external contents from the WordFragment to be added into the document when the WordFragment is added\n                    this.mergeExternalDependencies(item);\n                }\n\n                // wrap the content in a paragraph\n                const paragraphElement = new CreateParagraph(this.options);\n                let paragraphContent = paragraphElement.create(textContent);\n\n                // add numPr tags to set the list\n                paragraphContent = paragraphContent.replace(\n                    \"</w:pPr>\",\n                    '<w:numPr><w:ilvl w:val=\"' +\n                        level +\n                        '\"/><w:numId w:val=\"' +\n                        this.options.numId +\n                        '\"/></w:numPr></w:pPr>'\n                );\n                this.contents += paragraphContent;\n            } else if (Array.isArray(item)) {\n                // a subarray, iterate it to add the contents\n                this.createListContents(item, level + 1);\n            }\n        });\n    }\n}\n\nexport { CreateList, ListNested, OptionsList };\n","import { CreateParagraph, OptionsParagraph } from \"./paragraph\";\nimport { CreateRpr } from \"./rpr\";\n\ninterface OptionsNumPr extends OptionsParagraph {\n    /** Format. Default as %1. for the first level, %2. for second level... */\n    format?: string;\n    /** Indentations: twips value */\n    indentation?: {\n        /** Default as 360 */\n        hanging?: number;\n        /** Default as 720 times the list level */\n        left?: number;\n    };\n    /** Justification. Default as left */\n    justification?: string;\n    /** Paragraph style. Default as ListParagraph */\n    pStyle?: string;\n    /** Start value. Default as 1 */\n    start?: number;\n    /** Suffix */\n    suff?: \"space\" | \"tab\";\n    /** Type: decimal, bullet, upperRoman, lowerRoman, upperLetter, lowerLetter, ordinal, cardinalText, ordinalText, none... */\n    type: string;\n}\n\n/**\n * Create paragraph\n */\nclass CreateNumpr {\n    /**\n     * Element options\n     */\n    protected options: OptionsNumPr[];\n\n    /**\n     * Constructor\n     *\n     * @param options - Options list\n     */\n    constructor(options: OptionsNumPr[]) {\n        const defaultBullets = [\"\", \"o\", \"\", \"\", \"o\", \"\", \"\", \"o\", \"\"];\n        const defaultBulletsFonts = [\n            \"Symbol\",\n            \"Courier New\",\n            \"Wingdings\",\n            \"Symbol\",\n            \"Courier New\",\n            \"Wingdings\",\n            \"Symbol\",\n            \"Courier New\",\n            \"Wingdings\",\n        ];\n\n        // set default values\n        options.forEach((option, index) => {\n            if (option.format == null) {\n                if (option.type == \"bullet\") {\n                    option.format = defaultBullets[index];\n                    option.font = defaultBulletsFonts[index];\n                } else {\n                    option.format = \"%\" + (index + 1) + \".\";\n                }\n            }\n\n            if (option.indentation == null) {\n                option.indentation = { hanging: 360, left: 720 * (index + 1) };\n            } else {\n                if (option.indentation.hanging == null) {\n                    option.indentation.hanging = 360;\n                }\n                if (option.indentation.left == null) {\n                    option.indentation.left = 720 * (index + 1);\n                }\n            }\n\n            if (option.justification == null) {\n                option.justification = \"left\";\n            }\n\n            if (option.start == null) {\n                option.start = 1;\n            }\n\n            options[index] = option;\n        });\n\n        this.options = options;\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns List style\n     */\n    public create(): string {\n        let contents =\n            '<w:abstractNum w:abstractNumId=\"\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"><w:multiLevelType w:val=\"hybridMultilevel\"/>';\n\n        this.options.forEach((option, index) => {\n            contents += '<w:lvl w:ilvl=\"' + index + '\">';\n            contents += '<w:start w:val=\"' + option.start + '\"/>';\n            contents += '<w:numFmt w:val=\"' + option.type + '\"/>';\n            if (option.suff != null) {\n                contents += '<w:suff w:val=\"' + option.suff + '\"/>';\n            }\n            contents += '<w:lvlText w:val=\"' + option.format + '\"/>';\n            contents += '<w:lvlJc w:val=\"' + option.justification + '\"/>';\n\n            const pPrElement = new CreateParagraph(option);\n            contents += pPrElement.createPpr();\n            const rPrElement = new CreateRpr(option);\n            contents += rPrElement.create();\n\n            contents += \"</w:lvl>\";\n        });\n\n        contents += \"</w:abstractNum>\";\n\n        return contents;\n    }\n}\n\nexport { CreateNumpr, OptionsNumPr };\n","import { applyHtmlSpecialChars, generateRandomNumber } from \"../util/\";\nimport { CreateElement } from \"./element\";\nimport { CreateParagraph, OptionsParagraph } from \"./paragraph\";\nimport { CreateRpr, OptionsRpr } from \"./rpr\";\n\ninterface OptionsPageNumber extends OptionsRpr {\n    /** Default value. Default as 1 for numerical and a for alphabetical */\n    defaultValue?: string;\n    /** Page of strings */\n    stringsPageOf?: {\n        // Default as \"Page\"\n        page?: string;\n        // Default as \"of\"\n        of?: string;\n    };\n    /** Page number type. Default as numerical */\n    type?: \"numerical\" | \"alphabetical\" | \"page-of\";\n}\n\n/**\n * Create page number\n */\nclass CreatePageNumber extends CreateElement {\n    /**\n     * Element options\n     */\n    protected options: OptionsPageNumber;\n\n    /**\n     * Element options paragraph\n     */\n    protected optionsParagraph: OptionsParagraph;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options page number\n     * @param optionsParagraph - Options paragraph\n     */\n    constructor(\n        options: OptionsPageNumber,\n        optionsParagraph: OptionsParagraph = {}\n    ) {\n        super();\n\n        // default options\n        options.stringsPageOf ??= { page: \"Page\", of: \"of\" };\n        options.type ??= \"numerical\";\n        options.defaultValue ??= options.type == \"numerical\" ? \"1\" : \"a\";\n\n        this.options = options;\n        this.optionsParagraph = optionsParagraph;\n\n        // apply paragraph rPr styles\n        this.options = this.mergeParagraphRprStyles(options, optionsParagraph);\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        // rPr styles\n        const rPrElement = new CreateRpr(this.options);\n        const rPrStyles = rPrElement.create();\n\n        let contents = \"\";\n\n        if (\n            this.options.type == \"numerical\" ||\n            this.options.type == \"alphabetical\"\n        ) {\n            const sdtPrId = generateRandomNumber(100000000, 999999999, []);\n            contents =\n                '<w:sdt><w:sdtPr><w:id w:val=\"' +\n                sdtPrId +\n                '\"/><w:docPartObj><w:docPartGallery w:val=\"Page Numbers\"/><w:docPartUnique/></w:docPartObj></w:sdtPr><w:sdtContent>';\n            contents += \"\";\n            let pageMergeFormat = \"PAGE \\\\* MERGEFORMAT \";\n            if (this.options.type == \"alphabetical\") {\n                pageMergeFormat = \"PAGE \\\\* alphabetic \\\\* MERGEFORMAT \";\n            }\n            const sdtContent =\n                \"<w:r>\" +\n                rPrStyles +\n                '<w:fldChar w:fldCharType=\"begin\"/></w:r><w:r>' +\n                rPrStyles +\n                '<w:instrText xml:space=\"preserve\">' +\n                pageMergeFormat +\n                \"</w:instrText></w:r><w:r>\" +\n                rPrStyles +\n                '<w:fldChar w:fldCharType=\"separate\"/></w:r><w:r>' +\n                rPrStyles +\n                \"<w:t>\" +\n                this.options.defaultValue +\n                \"</w:t></w:r><w:r>\" +\n                rPrStyles +\n                '<w:fldChar w:fldCharType=\"end\"/></w:r>';\n\n            // wrap in a paragraph\n            const paragraphElement = new CreateParagraph(this.optionsParagraph);\n            contents += paragraphElement.create(sdtContent);\n\n            contents += \"</w:sdtContent></w:sdt>\";\n        } else if (this.options.type == \"page-of\") {\n            const sdtPrIdParent = generateRandomNumber(\n                100000000,\n                999999999,\n                []\n            );\n            const sdtPrIdChild = generateRandomNumber(100000000, 999999999, [\n                sdtPrIdParent,\n            ]);\n            contents =\n                '<w:sdt><w:sdtPr><w:id w:val=\"' +\n                sdtPrIdParent +\n                '\" /><w:docPartObj><w:docPartGallery w:val=\"Page Numbers\" /><w:docPartUnique /></w:docPartObj></w:sdtPr><w:sdtContent><w:sdt><w:sdtPr><w:id w:val=\"' +\n                sdtPrIdChild +\n                '\" /><w:docPartObj><w:docPartGallery w:val=\"Page Numbers\" /><w:docPartUnique /></w:docPartObj></w:sdtPr><w:sdtContent>';\n            const pageString = this.options.stringsPageOf?.page\n                ? applyHtmlSpecialChars(this.options.stringsPageOf?.page)\n                : \"Page\";\n            const ofString = this.options.stringsPageOf?.of\n                ? applyHtmlSpecialChars(this.options.stringsPageOf?.of)\n                : \"of\";\n            const sdtContent =\n                \"<w:r>\" +\n                rPrStyles +\n                '<w:t xml:space=\"preserve\">' +\n                pageString +\n                \" </w:t></w:r><w:r>\" +\n                rPrStyles +\n                '<w:fldChar w:fldCharType=\"begin\" /></w:r><w:r>' +\n                rPrStyles +\n                '<w:instrText xml:space=\"preserve\">PAGE </w:instrText></w:r><w:r>' +\n                rPrStyles +\n                '<w:fldChar w:fldCharType=\"separate\" /></w:r><w:r>' +\n                rPrStyles +\n                \"<w:t>\" +\n                this.options.defaultValue +\n                \"</w:t></w:r><w:r>\" +\n                rPrStyles +\n                '<w:fldChar w:fldCharType=\"end\" /></w:r><w:r>' +\n                rPrStyles +\n                '<w:t xml:space=\"preserve\"> ' +\n                ofString +\n                \" </w:t></w:r><w:r>\" +\n                rPrStyles +\n                '<w:fldChar w:fldCharType=\"begin\" /></w:r><w:r>' +\n                rPrStyles +\n                '<w:instrText xml:space=\"preserve\">NUMPAGES </w:instrText></w:r><w:r>' +\n                rPrStyles +\n                '<w:fldChar w:fldCharType=\"separate\" /></w:r><w:r>' +\n                rPrStyles +\n                \"<w:t>\" +\n                this.options.defaultValue +\n                \"</w:t></w:r><w:r>\" +\n                rPrStyles +\n                '<w:fldChar w:fldCharType=\"end\" /></w:r>';\n\n            // wrap in a paragraph\n            const paragraphElement = new CreateParagraph(this.optionsParagraph);\n            contents += paragraphElement.create(sdtContent);\n\n            contents += \"</w:sdtContent></w:sdt></w:sdtContent></w:sdt>\";\n        }\n\n        return contents;\n    }\n}\n\nexport { CreatePageNumber, OptionsPageNumber };\n","import { WordFragment } from \"../create\";\nimport { footerXml, headerXml } from \"../structure\";\nimport { CreateElement } from \"./element\";\n\ninterface OptionsReference {\n    /** Replace existing reference in the section. Default as true */\n    replaceOthers?: boolean;\n    /** Section to add the content. Default as -1 (last section) */\n    section?: number | \"all\";\n    /** Content */\n    text: WordFragment;\n    /** Type. Default as default */\n    type?: \"default\" | \"even\" | \"first\";\n}\n\ntype Reference = \"footer\" | \"header\";\n\n/**\n * Create reference\n */\nclass CreateReference extends CreateElement {\n    /**\n     * Element options\n     */\n    protected options: OptionsReference;\n\n    /**\n     * Target\n     */\n    protected target: \"footer\" | \"header\";\n\n    /**\n     * Constructor\n     *\n     * @param options - Options reference\n     * @param target - Reference target\n     */\n    constructor(options: OptionsReference, target: Reference) {\n        super();\n\n        // default options\n        options.replaceOthers ??= true;\n        options.section ??= -1;\n        options.type ??= \"default\";\n\n        this.options = options;\n        this.target = target;\n    }\n\n    /**\n     * Getter options\n     *\n     * @returns Reference options\n     */\n    public getOptions(): OptionsReference {\n        return this.options;\n    }\n\n    /**\n     * Getter target\n     *\n     * @returns Target\n     */\n    public getTarget(): Reference {\n        return this.target;\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        let contents = \"\";\n\n        if (this.target == \"footer\") {\n            contents = footerXml.replace(\n                \"</w:ftr>\",\n                this.options.text.toString() + \"</w:ftr>\"\n            );\n        } else if (this.target == \"header\") {\n            contents = headerXml.replace(\n                \"</w:hdr>\",\n                this.options.text.toString() + \"</w:hdr>\"\n            );\n        }\n\n        return contents;\n    }\n}\n\nexport { CreateReference, OptionsReference, Reference };\n","import { CreateElement } from \"./element\";\n\ntype LayoutPreset =\n    | \"A4\"\n    | \"A3\"\n    | \"letter\"\n    | \"legal\"\n    | \"A4-landscape\"\n    | \"A3-landscape\"\n    | \"letter-landscape\"\n    | \"legal-landscape\"\n    | \"custom\";\n\ninterface OptionsSection {\n    /** Bidi */\n    bidi?: boolean;\n    /** Internal code number */\n    code?: number;\n    /** Exclude headers and footers reference tags. Default as false */\n    excludeHeadersFooters?: boolean;\n    /** Height: twips value */\n    height?: number;\n    /** Margins: twips value */\n    margin?: {\n        top?: number;\n        right?: number;\n        bottom?: number;\n        left?: number;\n        header?: number;\n        footer?: number;\n    };\n    /** Number of columns */\n    numberColumns?: number;\n    /** Orientation */\n    orient?: \"portrait\" | \"landscape\";\n    /** RTL gutter */\n    rtlGutter?: boolean;\n    /** Sizes. If undefined use the previous section from the document */\n    size?: LayoutPreset;\n    /** Type. Default as nextPage */\n    type?: \"nextPage\" | \"nextColumn\" | \"continuous\" | \"evenPage\" | \"oddPage\";\n    /** Width: twips value */\n    width?: number;\n}\n\ninterface OptionsSectionLayout extends OptionsSection {\n    /** If true only modifies the last section. Default as false */\n    onlyLastSection?: boolean;\n}\n\n/**\n * Create section\n */\nclass CreateSection extends CreateElement {\n    /**\n     * Element options\n     */\n    protected options: OptionsSection;\n\n    /**\n     * Section init contents\n     */\n    protected sectionInit: string;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options section\n     */\n    constructor(options: OptionsSection) {\n        super();\n\n        // default options\n        options.excludeHeadersFooters ??= false;\n        options.type ??= \"nextPage\";\n\n        this.options = options;\n\n        // merge preset sizes and options if a preset size is set\n        if (this.options.size != null) {\n            this.options = {\n                ...this.getSizePreset(this.options.size),\n                ...this.options,\n            };\n        }\n\n        this.sectionInit = \"\";\n    }\n\n    /**\n     * Setter sectionInit\n     *\n     * @param content - Section init contents\n     */\n    public setSectionInit(content: string) {\n        this.sectionInit = content;\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        const contents = \"<w:p><w:pPr>\" + this.sectionInit + \"</w:pPr></w:p>\";\n\n        return contents;\n    }\n\n    /**\n     * Getter options\n     *\n     * @returns Section options\n     */\n    public getOptions(): OptionsSection {\n        return this.options;\n    }\n\n    /**\n     * Gets size preset\n     *\n     * @param preset - Preset\n     * @returns Size preset\n     */\n    protected getSizePreset(preset: LayoutPreset): OptionsSection | null {\n        const marginLandscape = {\n            top: 1701,\n            right: 1417,\n            bottom: 1701,\n            left: 1417,\n            header: 708,\n            footer: 708,\n        };\n        const marginPortrait = {\n            top: 1417,\n            right: 1701,\n            bottom: 1417,\n            left: 1701,\n            header: 708,\n            footer: 708,\n        };\n        const A4 = {\n            width: 11906,\n            height: 16838,\n            numberColumns: 1,\n            orient: \"portrait\" as const,\n            code: 9,\n            margin: marginPortrait,\n            gutter: 0,\n        };\n        const A4landscape = {\n            width: 16838,\n            height: 11906,\n            numberColumns: 1,\n            orient: \"landscape\" as const,\n            code: 9,\n            margin: marginLandscape,\n            gutter: 0,\n        };\n        const A3 = {\n            width: 16839,\n            height: 23814,\n            numberColumns: 1,\n            orient: \"portrait\" as const,\n            code: 8,\n            margin: marginPortrait,\n            gutter: 0,\n        };\n        const A3landscape = {\n            width: 23814,\n            height: 16839,\n            numberCols: 1,\n            orient: \"landscape\" as const,\n            code: 8,\n            margin: marginLandscape,\n            gutter: 0,\n        };\n        const letter = {\n            width: 12240,\n            height: 15840,\n            numberCols: 1,\n            orient: \"portrait\" as const,\n            code: 1,\n            margin: marginPortrait,\n            gutter: 0,\n        };\n        const letterLandscape = {\n            width: 15840,\n            height: 12240,\n            numberCols: 1,\n            orient: \"landscape\" as const,\n            code: 1,\n            margin: marginLandscape,\n            gutter: 0,\n        };\n        const legal = {\n            width: 12240,\n            height: 20160,\n            numberCols: 1,\n            orient: \"portrait\" as const,\n            code: 5,\n            margin: marginPortrait,\n            gutter: 0,\n        };\n        const legalLandscape = {\n            width: 20160,\n            height: 12240,\n            numberCols: 1,\n            orient: \"landscape\" as const,\n            code: 1,\n            margin: marginLandscape,\n            gutter: 0,\n        };\n\n        switch (preset) {\n            case \"A4\":\n                return A4;\n            case \"A4-landscape\":\n                return A4landscape;\n            case \"A3\":\n                return A3;\n            case \"A3-landscape\":\n                return A3landscape;\n            case \"letter\":\n                return letter;\n            case \"letter-landscape\":\n                return letterLandscape;\n            case \"legal\":\n                return legal;\n            case \"legal-landscape\":\n                return legalLandscape;\n        }\n\n        return null;\n    }\n}\n\nexport { CreateSection, LayoutPreset, OptionsSection, OptionsSectionLayout };\n","interface OptionsSettings {\n    /** Do not show visual indicator for form fields */\n    doNotShadeFormData?: boolean;\n    /** Different even/odd page headers and footers */\n    evenAndOddHeaders?: boolean;\n    /** Do not display visual indication of grammatical errors */\n    hideGrammaticalErrors?: boolean;\n    /** Do not display visual indication of spelling errors */\n    hideSpellingErrors?: boolean;\n    /** Automatically recalculate fields on open */\n    updateFields?: boolean;\n    /** Document view setting */\n    view?: \"none\" | \"print\" | \"outline\" | \"masterPages\" | \"normal\" | \"web\";\n    /** Magnification setting */\n    zoom?: number | (\"none\" | \"fullPage\" | \"bestFit\" | \"textFit\");\n}\n\n/**\n * Create bookmark\n */\nclass CreateSettings {\n    /**\n     * Element options\n     */\n    protected options: OptionsSettings;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options settings\n     */\n    constructor(options: OptionsSettings) {\n        this.options = options;\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): Map<string, string> {\n        const contents = new Map<string, string>();\n\n        if (this.options.doNotShadeFormData != null) {\n            contents.set(\n                \"w:doNotShadeFormData\",\n                '<w:doNotShadeFormData w:val=\"' +\n                    this.options.doNotShadeFormData +\n                    '\"/>'\n            );\n        }\n        if (this.options.evenAndOddHeaders != null) {\n            contents.set(\n                \"w:evenAndOddHeaders\",\n                '<w:evenAndOddHeaders w:val=\"' +\n                    this.options.evenAndOddHeaders +\n                    '\"/>'\n            );\n        }\n        if (this.options.hideGrammaticalErrors != null) {\n            contents.set(\n                \"w:hideGrammaticalErrors\",\n                '<w:hideGrammaticalErrors w:val=\"' +\n                    this.options.hideGrammaticalErrors +\n                    '\"/>'\n            );\n        }\n        if (this.options.hideSpellingErrors != null) {\n            contents.set(\n                \"w:hideSpellingErrors\",\n                '<w:hideSpellingErrors w:val=\"' +\n                    this.options.hideSpellingErrors +\n                    '\"/>'\n            );\n        }\n        if (this.options.updateFields != null) {\n            contents.set(\n                \"w:updateFields\",\n                '<w:updateFields w:val=\"' + this.options.updateFields + '\"/>'\n            );\n        }\n        if (this.options.view != null) {\n            contents.set(\n                \"w:view\",\n                '<w:view w:val=\"' + this.options.view + '\"/>'\n            );\n        }\n        if (this.options.zoom != null) {\n            if (typeof this.options.zoom === \"number\") {\n                contents.set(\n                    \"w:zoom\",\n                    '<w:zoom w:percent=\"' + this.options.zoom + '\"/>'\n                );\n            } else {\n                contents.set(\n                    \"w:zoom\",\n                    '<w:zoom w:val=\"' + this.options.zoom + '\"/>'\n                );\n            }\n        }\n\n        return contents;\n    }\n}\n\nexport { CreateSettings, OptionsSettings };\n","import { WordFragment } from \"../create\";\nimport { CreateElement } from \"./element\";\nimport { CreateParagraph, OptionsParagraph } from \"./paragraph\";\nimport { CreateText, OptionsText } from \"./text\";\n\ninterface BorderCell {\n    /** Color: HEX value. Default as auto */\n    color?: string;\n    /** Space: pt value. Default as 0 */\n    space?: number;\n    /** Border style: single, dotDash, none, thick... Default as single */\n    style?: string;\n    /** Width: eights of a point value. Default as 4. Minimum 2 and maximum 96 */\n    width?: number;\n}\n\ninterface OptionsCellTable {\n    /** Background color: HEX value */\n    backgroundColor?: string;\n    /** Border */\n    border?: {\n        bottom?: BorderCell;\n        left?: BorderCell;\n        right?: BorderCell;\n        top?: BorderCell;\n    };\n    /** Grid span */\n    gridSpan?: number;\n    /** Fit text */\n    fitText?: boolean;\n    /** Margin: twips value */\n    margin?: {\n        top?: number;\n        right?: number;\n        bottom?: number;\n        left?: number;\n    };\n    /** Content */\n    text: string | WordFragment;\n    /** Text direction */\n    textDirection?: \"btLr\" | \"tbLrV\" | \"tbRl\" | \"tbRlV\" | \"lrTb\" | \"lrTbV\";\n    /** Vertical alignment */\n    verticalAlign?: \"both\" | \"bottom\" | \"center\" | \"top\";\n    /** Width: twips value */\n    width?: number;\n    /** Vertical merge */\n    vMerge?: \"restart\" | \"continue\";\n    /** Wrap text */\n    wrapText?: boolean;\n}\n\ninterface OptionsRowTable {\n    /** Allow row to break accross pages */\n    cantSplit?: boolean;\n    /** Repeat as header row at the top of each page */\n    header?: boolean;\n    /** Height */\n    height?: {\n        /** Height size rule */\n        rule?: \"auto\" | \"atLeast\" | \"exact\";\n        /** Value: twips value */\n        value?: number;\n    };\n}\n\ninterface OptionsTable {\n    /** Alignment */\n    align?: string;\n    /** Border */\n    border?: {\n        bottom?: BorderCell;\n        insideH?: BorderCell;\n        insideV?: BorderCell;\n        left?: BorderCell;\n        right?: BorderCell;\n        top?: BorderCell;\n    };\n    /** Cell margins: twips value */\n    cellMargin?: {\n        top?: number;\n        right?: number;\n        bottom?: number;\n        left?: number;\n    };\n    /** Cell spacing: twips value */\n    cellSpacing?: number;\n    /** Column widths */\n    columnWidths?: number | number[];\n    /** Contional formatting  */\n    conditionalFormatting?: {\n        /** First column. Default as true */\n        firstColumn?: boolean;\n        /** First row.  Default as true */\n        firstRow?: boolean;\n        /** Last column.  Default as false */\n        lastColumn?: boolean;\n        /** Last row.  Default as false */\n        lastRow?: boolean;\n        /** Horizontal banding. Default as false */\n        noHBand?: boolean;\n        /** Vertical banding.  Default as true */\n        noVBand?: boolean;\n    };\n    /** Indentation: twips value */\n    indentation?: number;\n    /** Layout */\n    layout?: \"autofit\" | \"fixed\";\n    /** Paragraph options added after the table */\n    paragraphAfterOptions?: OptionsParagraph;\n    /** Table style. Default as TableGrid */\n    tblStyle?: string;\n    /** Text wrapping */\n    textWrapping?: \"around\" | \"none\";\n    /** Table width */\n    width?: {\n        /** Type: auto, dxa (twips value), pct (percent). Default as pct */\n        type?: \"auto\" | \"dxa\" | \"pct\";\n        /** Value: dxa (twips value), pct (percent value). Default as 100 if type is pct  */\n        value?: number;\n    };\n}\n\n/**\n * Create table\n */\nclass CreateTable extends CreateElement {\n    /**\n     * Items\n     */\n    protected items: (string | WordFragment | OptionsCellTable)[][];\n\n    /**\n     * Element options row\n     */\n    protected optionsRowTable: OptionsRowTable[];\n\n    /**\n     * Element options table\n     */\n    protected optionsTable: OptionsTable;\n\n    /**\n     * Contents\n     */\n    protected contents: string;\n\n    /**\n     * Constructor\n     *\n     * @param optionsTable - Options table\n     */\n    constructor(\n        items: (string | WordFragment | OptionsCellTable)[][],\n        optionsRowTable: OptionsRowTable[],\n        optionsTable: OptionsTable\n    ) {\n        super();\n\n        // default options\n        optionsTable.tblStyle ??= \"TableGrid\";\n        optionsTable.width ??= { type: \"pct\", value: 100 };\n        optionsTable.paragraphAfterOptions ??= {};\n\n        this.items = items;\n        this.optionsRowTable = optionsRowTable;\n        this.optionsTable = optionsTable;\n\n        this.contents = \"\";\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        let contents = \"\";\n\n        //  table styles\n        contents += \"<w:tbl><w:tblPr>\";\n        contents += '<w:tblStyle w:val=\"' + this.optionsTable.tblStyle + '\"/>';\n        if (\n            this.optionsTable.textWrapping != null &&\n            this.optionsTable.textWrapping == \"around\"\n        ) {\n            contents +=\n                '<w:tblpPr w:leftFromText=\"141\" w:rightFromText=\"141\" w:tblpXSpec=\"center\" w:tblpY=\"1\" w:vertAnchor=\"text\"/>';\n        }\n        contents += '<w:tblOverlap w:val=\"never\"/>';\n        if (this.optionsTable.width != null) {\n            if (this.optionsTable.width.type == \"auto\") {\n                this.optionsTable.width.value ??= 0;\n            }\n            if (this.optionsTable.width.type == \"pct\") {\n                this.optionsTable.width.value ??= 100;\n                // pct values are calculated with the following calculation: %value * 50\n                this.optionsTable.width.value =\n                    this.optionsTable.width.value * 50;\n            }\n            contents +=\n                '<w:tblW w:type=\"' +\n                this.optionsTable.width.type +\n                '\" w:w=\"' +\n                this.optionsTable.width.value +\n                '\"/>';\n        }\n        if (this.optionsTable.align != null) {\n            contents += '<w:jc w:val=\"' + this.optionsTable.align + '\"/>';\n        }\n        if (this.optionsTable.cellSpacing != null) {\n            contents +=\n                '<w:tblCellSpacing w:type=\"dxa\" w:w=\"' +\n                this.optionsTable.cellSpacing +\n                '\"/>';\n        }\n        if (this.optionsTable.indentation != null) {\n            contents +=\n                '<w:tblInd w:type=\"dxa\" w:w=\"' +\n                this.optionsTable.indentation +\n                '\"/>';\n        }\n        if (this.optionsTable.border != null) {\n            contents += \"<w:tblBorders>\";\n            contents += this.createBorder(\n                \"top\",\n                this.optionsTable.border.top ?? {}\n            );\n            contents += this.createBorder(\n                \"left\",\n                this.optionsTable.border.left ?? {}\n            );\n            contents += this.createBorder(\n                \"bottom\",\n                this.optionsTable.border.bottom ?? {}\n            );\n            contents += this.createBorder(\n                \"right\",\n                this.optionsTable.border.right ?? {}\n            );\n            contents += this.createBorder(\n                \"insideH\",\n                this.optionsTable.border.insideH ?? {}\n            );\n            contents += this.createBorder(\n                \"insideV\",\n                this.optionsTable.border.insideV ?? {}\n            );\n            contents += \"</w:tblBorders>\";\n        }\n        if (this.optionsTable.layout != null) {\n            contents +=\n                '<w:tblLayout w:type=\"' + this.optionsTable.layout + '\"/>';\n        }\n        if (this.optionsTable.cellMargin != null) {\n            contents += \"<w:tblCellMar>\";\n            if (this.optionsTable.cellMargin.top != null) {\n                contents +=\n                    '<w:top w:type=\"dxa\" w:w=\"' +\n                    this.optionsTable.cellMargin.top +\n                    '\"/>';\n            }\n            if (this.optionsTable.cellMargin.left != null) {\n                contents +=\n                    '<w:left w:type=\"dxa\" w:w=\"' +\n                    this.optionsTable.cellMargin.left +\n                    '\"/>';\n            }\n            if (this.optionsTable.cellMargin.bottom != null) {\n                contents +=\n                    '<w:bottom w:type=\"dxa\" w:w=\"' +\n                    this.optionsTable.cellMargin.bottom +\n                    '\"/>';\n            }\n            if (this.optionsTable.cellMargin.right != null) {\n                contents +=\n                    '<w:right w:type=\"dxa\" w:w=\"' +\n                    this.optionsTable.cellMargin.right +\n                    '\"/>';\n            }\n            contents += \"</w:tblCellMar>\";\n        }\n        if (this.optionsTable.conditionalFormatting != null) {\n            this.optionsTable.conditionalFormatting = {\n                ...{\n                    firstColumn: true,\n                    firstRow: true,\n                    lastColumn: false,\n                    lastRow: false,\n                    noHBand: false,\n                    noVBand: true,\n                },\n                ...this.optionsTable.conditionalFormatting,\n            };\n            // calculate val, needed by some DOCX readers\n            let resultLookVal = 0;\n            if (this.optionsTable.conditionalFormatting.firstRow) {\n                resultLookVal |= 0x0020;\n            }\n            if (this.optionsTable.conditionalFormatting.lastRow) {\n                resultLookVal |= 0x0040;\n            }\n            if (this.optionsTable.conditionalFormatting.firstColumn) {\n                resultLookVal |= 0x0080;\n            }\n            if (this.optionsTable.conditionalFormatting.lastColumn) {\n                resultLookVal |= 0x0100;\n            }\n            if (this.optionsTable.conditionalFormatting.noHBand) {\n                resultLookVal |= 0x0200;\n            }\n            if (this.optionsTable.conditionalFormatting.noVBand) {\n                resultLookVal |= 0x0400;\n            }\n            const tblLookValHex = resultLookVal.toString(16);\n            let tblLookVal = tblLookValHex.toString();\n            if (tblLookValHex.length == 1) {\n                tblLookVal = \"000\" + tblLookValHex;\n            } else if (tblLookValHex.length == 2) {\n                tblLookVal = \"00\" + tblLookValHex;\n            } else if (tblLookValHex.length == 3) {\n                tblLookVal = \"0\" + tblLookValHex;\n            }\n\n            contents +=\n                '<w:tblLook w:firstColumn=\"' +\n                (this.optionsTable.conditionalFormatting.firstColumn\n                    ? true\n                    : false) +\n                '\" w:firstRow=\"' +\n                (this.optionsTable.conditionalFormatting.firstRow\n                    ? true\n                    : false) +\n                '\" w:lastColumn=\"' +\n                (this.optionsTable.conditionalFormatting.lastColumn\n                    ? true\n                    : false) +\n                '\" w:lastRow=\"' +\n                (this.optionsTable.conditionalFormatting.lastRow\n                    ? true\n                    : false) +\n                '\" w:noHBand=\"' +\n                (this.optionsTable.conditionalFormatting.noHBand\n                    ? true\n                    : false) +\n                '\" w:noVBand=\"' +\n                (this.optionsTable.conditionalFormatting.noVBand\n                    ? true\n                    : false) +\n                '\" w:val=\"' +\n                tblLookVal.toUpperCase() +\n                '\"/>';\n        }\n\n        contents += \"</w:tblPr>\";\n        // grid columns\n        contents += \"<w:tblGrid>\";\n        // get grid columns length\n        const gridColumnsNumber = this.items.reduce(\n            (maxLength, row) =>\n                row.length > maxLength ? row.length : maxLength,\n            1\n        );\n        for (let iGridCol = 0; iGridCol < gridColumnsNumber; iGridCol++) {\n            let widthGridCol = 1;\n            // check if the grid column has a explict size to be applied\n            if (this.optionsTable.columnWidths) {\n                if (typeof this.optionsTable.columnWidths === \"number\") {\n                    widthGridCol = this.optionsTable.columnWidths;\n                } else if (Array.isArray(this.optionsTable.columnWidths)) {\n                    widthGridCol =\n                        this.optionsTable.columnWidths[iGridCol] ?? \"1\";\n                }\n            }\n            contents += '<w:gridCol w:w=\"' + widthGridCol + '\"/>';\n        }\n        contents += \"</w:tblGrid>\";\n\n        // iterate and add items\n        this.items.forEach((itemRow, itemRowIndex) => {\n            // row styles\n            contents += \"<w:tr><w:trPr>\";\n\n            if (this.optionsRowTable[itemRowIndex]?.cantSplit) {\n                contents += \"<w:cantSplit/>\";\n            }\n\n            if (this.optionsRowTable[itemRowIndex]?.height) {\n                const heightRow = this.optionsRowTable[itemRowIndex]?.height;\n                if (\n                    heightRow != null &&\n                    heightRow.rule != null &&\n                    heightRow.value != null\n                ) {\n                    contents +=\n                        '<w:trHeight w:val=\"' +\n                        heightRow.value +\n                        '\" w:hRule=\"' +\n                        heightRow.rule +\n                        '\"/>';\n                }\n            }\n\n            if (this.optionsRowTable[itemRowIndex]?.header) {\n                contents += \"<w:tblHeader/>\";\n            }\n\n            // applied from table styles\n            if (this.optionsTable.cellSpacing != null) {\n                contents +=\n                    '<w:tblCellSpacing w:type=\"dxa\" w:w=\"' +\n                    this.optionsTable.cellSpacing +\n                    '\"/>';\n            }\n\n            contents += \"</w:trPr>\";\n            itemRow.forEach((element, elementIndex) => {\n                // cell styles and contents\n                contents += \"<w:tc><w:tcPr>\";\n\n                // cell styles\n\n                // applied from table styles\n                let cellWidth;\n                if (this.optionsTable.columnWidths) {\n                    if (typeof this.optionsTable.columnWidths === \"number\") {\n                        cellWidth = this.optionsTable.columnWidths;\n                    } else if (\n                        Array.isArray(this.optionsTable.columnWidths) &&\n                        this.optionsTable.columnWidths[elementIndex] != null\n                    ) {\n                        cellWidth =\n                            this.optionsTable.columnWidths[elementIndex];\n                    }\n                }\n                let cellBorder;\n                let cellColor;\n                let cellFitText;\n                let cellGridSpan;\n                let cellMargin;\n                let cellTextDirection;\n                let cellVerticalAlign;\n                let cellVMerge;\n                let cellWrap;\n\n                if (\n                    typeof element === \"object\" &&\n                    !(element instanceof WordFragment) &&\n                    element.text != null\n                ) {\n                    // OptionsCellTable type\n                    if (element.backgroundColor != null) {\n                        cellColor = element.backgroundColor;\n                    }\n                    if (element.border != null) {\n                        cellBorder = \"<w:tcBorders>\";\n                        if (element.border[\"top\"] != null) {\n                            cellBorder += this.createBorder(\n                                \"top\",\n                                element.border[\"top\"]\n                            );\n                        }\n                        if (element.border[\"left\"] != null) {\n                            cellBorder += this.createBorder(\n                                \"left\",\n                                element.border[\"left\"]\n                            );\n                        }\n                        if (element.border[\"bottom\"] != null) {\n                            cellBorder += this.createBorder(\n                                \"bottom\",\n                                element.border[\"bottom\"]\n                            );\n                        }\n                        if (element.border[\"right\"] != null) {\n                            cellBorder += this.createBorder(\n                                \"right\",\n                                element.border[\"right\"]\n                            );\n                        }\n                        cellBorder += \"</w:tcBorders>\";\n                    }\n                    if (element.gridSpan != null) {\n                        cellGridSpan = element.gridSpan;\n                    }\n                    if (element.fitText != null && element.fitText) {\n                        cellFitText = \"<w:tcFitText/>\";\n                    }\n                    if (element.margin != null) {\n                        cellMargin = \"<w:tcMar>\";\n                        if (element.margin.top != null) {\n                            cellMargin +=\n                                '<w:top w:type=\"dxa\" w:w=\"' +\n                                element.margin.top +\n                                '\"/>';\n                        }\n                        if (element.margin.left != null) {\n                            cellMargin +=\n                                '<w:left w:type=\"dxa\" w:w=\"' +\n                                element.margin.left +\n                                '\"/>';\n                        }\n                        if (element.margin.bottom != null) {\n                            cellMargin +=\n                                '<w:bottom w:type=\"dxa\" w:w=\"' +\n                                element.margin.bottom +\n                                '\"/>';\n                        }\n                        if (element.margin.right != null) {\n                            cellMargin +=\n                                '<w:right w:type=\"dxa\" w:w=\"' +\n                                element.margin.right +\n                                '\"/>';\n                        }\n                        cellMargin += \"</w:tcMar>\";\n                    }\n                    if (element.textDirection != null) {\n                        cellTextDirection =\n                            '<w:textDirection w:val=\"' +\n                            element.textDirection +\n                            '\"/>';\n                    }\n                    if (element.verticalAlign != null) {\n                        cellVerticalAlign =\n                            '<w:vAlign w:val=\"' + element.verticalAlign + '\"/>';\n                    }\n                    if (element.vMerge != null) {\n                        cellVMerge = element.vMerge;\n                    }\n                    if (element.wrapText != null && !element.wrapText) {\n                        cellWrap = \"<w:noWrap/>\";\n                    }\n                    if (element.width != null) {\n                        cellWidth = element.width;\n                    }\n                }\n\n                if (cellWidth != null) {\n                    contents +=\n                        '<w:tcW w:type=\"' +\n                        (cellWidth > 0 ? \"dxa\" : \"auto\") +\n                        '\" w:w=\"' +\n                        cellWidth +\n                        '\"/>';\n                }\n                if (cellGridSpan != null) {\n                    contents += '<w:gridSpan w:val=\"' + cellGridSpan + '\"/>';\n                }\n                if (cellVMerge != null) {\n                    contents +=\n                        cellVMerge == \"restart\"\n                            ? '<w:vMerge w:val=\"restart\"/>'\n                            : \"<w:vMerge/>\";\n                }\n                if (cellBorder != null) {\n                    contents += cellBorder;\n                }\n                if (cellColor != null) {\n                    contents +=\n                        '<w:shd w:fill=\"' + cellColor + '\" w:val=\"clear\"/>';\n                }\n                if (cellWrap != null) {\n                    contents += cellWrap;\n                }\n                if (cellMargin != null) {\n                    contents += cellMargin;\n                }\n                if (cellTextDirection != null) {\n                    contents += cellTextDirection;\n                }\n                if (cellFitText != null) {\n                    contents += cellFitText;\n                }\n                if (cellVerticalAlign != null) {\n                    contents += cellVerticalAlign;\n                }\n\n                contents += \"</w:tcPr>\";\n\n                // cell contents\n                // a content\n                let textContent;\n\n                if (\n                    typeof element === \"string\" ||\n                    (typeof element === \"object\" &&\n                        !(element instanceof WordFragment) &&\n                        typeof element.text === \"string\")\n                ) {\n                    const elementContents =\n                        typeof element === \"string\"\n                            ? element\n                            : (element.text as string);\n\n                    // generate text content\n                    const optionsText: OptionsText = {\n                        text: elementContents,\n                    };\n                    const textElement = new CreateText(optionsText);\n                    textContent = textElement.create();\n\n                    // wrap the content in a paragraph\n                    const paragraphElement = new CreateParagraph({});\n                    contents += paragraphElement.create(textContent);\n                } else if (\n                    element instanceof WordFragment ||\n                    (typeof element === \"object\" &&\n                        element.text instanceof WordFragment)\n                ) {\n                    const elementWordFragment =\n                        element instanceof WordFragment\n                            ? element\n                            : (element.text as WordFragment);\n                    contents += elementWordFragment.toString();\n\n                    // keep external contents from the WordFragment to be added into the document when the WordFragment is added\n                    this.mergeExternalDependencies(elementWordFragment);\n                }\n\n                contents += \"</w:tc>\";\n            });\n            contents += \"</w:tr>\";\n        });\n\n        contents += \"</w:tbl>\";\n\n        // add an empty paragraph after the table. OOXML requires this to do not generate a corrupted document\n        const paragraphElement = new CreateParagraph(\n            this.optionsTable.paragraphAfterOptions ?? {}\n        );\n        contents += paragraphElement.create();\n\n        return contents;\n    }\n\n    /**\n     * Creates border XML\n     *\n     * @param target - Border target\n     * @param options - Options border\n     * @returns Border\n     */\n    protected createBorder(target: string, options: BorderCell): string {\n        const borderDefaults: BorderCell = {\n            color: \"auto\",\n            space: 0,\n            width: 4,\n            style: \"single\",\n        };\n        options = { ...borderDefaults, ...options };\n\n        // width must be >=2 && <= 96\n        options.width =\n            options.width && options.width > 2 && options.width <= 96\n                ? options.width\n                : 2;\n\n        return (\n            \"<w:\" +\n            target +\n            ' w:color=\"' +\n            options.color +\n            '\" w:space=\"' +\n            options.space +\n            '\" w:sz=\"' +\n            options.width +\n            '\" w:val=\"' +\n            options.style +\n            '\"/>'\n        );\n    }\n}\n\nexport {\n    BorderCell,\n    CreateTable,\n    OptionsCellTable,\n    OptionsRowTable,\n    OptionsTable,\n};\n","import { generateRandomNumber } from \"../util/\";\nimport { CreateElement } from \"./element\";\nimport { CreateText, OptionsText } from \"./text\";\n\ninterface OptionsTableOfContents {\n    /** Try to update the TOC when first opened */\n    autoUpdate?: boolean;\n    /** Outline levels to be displayed. Default as \"1-4\" */\n    showLevels?: string;\n    /** Legend. Default as \"Click here to update the Table of Contents\" */\n    legend?: OptionsText;\n}\n\n/**\n * Create table of contents\n */\nclass CreateTableOfContents extends CreateElement {\n    /**\n     * Element options\n     */\n    protected options: OptionsTableOfContents;\n\n    /**\n     * Constructor\n     *\n     * @param options - Options table of contents\n     */\n    constructor(options: OptionsTableOfContents) {\n        super();\n\n        // default options\n        options.legend ??= {\n            text: \"Click here to update the Table of Contents\",\n        };\n        options.showLevels ??= \"1-4\";\n\n        this.options = options;\n    }\n\n    /**\n     * Creates content\n     *\n     * @returns Contents\n     */\n    public create(): string {\n        let contents = \"\";\n        const tocId = generateRandomNumber(111111111, 999999999, []);\n        const legendOption = this.options.legend;\n        let legendContent = \"\";\n        if (legendOption != null) {\n            const legendElement = new CreateText(legendOption);\n            legendContent = legendElement.create();\n        }\n\n        contents =\n            '<w:sdt><w:sdtPr><w:id w:val=\"' +\n            tocId +\n            '\"/><w:docPartObj><w:docPartGallery w:val=\"Table of Contents\"/><w:docPartUnique/></w:docPartObj></w:sdtPr><w:sdtContent><w:p><w:pPr></w:pPr><w:fldSimple w:instr=\"TOC o &quot;' +\n            this.options.showLevels +\n            '&quot; \\\\h \\\\z \\\\u\">' +\n            legendContent +\n            \"</w:fldSimple></w:p></w:sdtContent></w:sdt>\";\n\n        return contents;\n    }\n}\n\nexport { CreateTableOfContents, OptionsTableOfContents };\n","import { MimeImage } from \"./image\";\n\ntype Target =\n    | \"document\"\n    | \"header\"\n    | \"footer\"\n    | \"comment\"\n    | \"endnote\"\n    | \"footnote\";\n\n/**\n * Targets in a document\n */\nconst targetsInDocument: Target[] = [\n    \"document\",\n    \"header\",\n    \"footer\",\n    \"comment\",\n    \"endnote\",\n    \"footnote\",\n];\n\ninterface OptionsFirstMatch {\n    /** Replace only the first match. Default as false */\n    firstMatch?: boolean;\n}\n\ninterface OptionsParseLineBreaks {\n    /** Parse line breaks. Default as true */\n    parseLineBreaks?: boolean;\n}\n\ninterface OptionsReplacementType {\n    /** Remove type: inline, block  */\n    type?: \"inline\" | \"block\";\n}\n\ninterface OptionsRemoveVariableImage\n    extends OptionsFirstMatch,\n        OptionsReplacementType {}\n\ninterface OptionsRemoveVariableText\n    extends OptionsFirstMatch,\n        OptionsReplacementType {}\n\ninterface OptionsReplaceVariableExternalFile extends OptionsFirstMatch {}\n\ninterface OptionsReplaceVariableImage extends OptionsFirstMatch {\n    /** Height: EMUs value. If -1 do not change the placeholder image height. If not set, use new image height */\n    height?: number;\n    /** Mime type */\n    mime?: MimeImage;\n    /** Width: EMUs value. If -1 do not change the placeholder image width. If not set, use new image width */\n    width?: number;\n}\n\ninterface OptionsReplaceVariableList\n    extends OptionsFirstMatch,\n        OptionsParseLineBreaks {}\n\ninterface OptionsReplaceVariableTable\n    extends OptionsFirstMatch,\n        OptionsParseLineBreaks {}\n\ninterface OptionsReplaceVariableText\n    extends OptionsFirstMatch,\n        OptionsParseLineBreaks {}\n\ninterface OptionsReplaceVariableWordFragment\n    extends OptionsFirstMatch,\n        OptionsReplacementType {}\n\ninterface OptionsReplaceVariableWordMl extends OptionsFirstMatch {}\n\ninterface OptionsTemplate {\n    /** Import default MS Word styles. Default as true */\n    importMSWordDefaultStyles?: boolean;\n}\n\nconst defaultOptionsReplaceVariableExternalFile: OptionsReplaceVariableExternalFile =\n    {\n        firstMatch: false,\n    };\n\nconst defaultOptionsTemplate: OptionsTemplate = {\n    importMSWordDefaultStyles: true,\n};\n\nconst defaultOptionsRemoveVariableImage: OptionsRemoveVariableImage = {\n    firstMatch: false,\n    type: \"inline\",\n};\n\nconst defaultOptionsRemoveVariableText: OptionsRemoveVariableText = {\n    firstMatch: false,\n    type: \"inline\",\n};\n\nconst defaultOptionsReplaceVariableImage: OptionsReplaceVariableImage = {\n    firstMatch: false,\n    mime: \"image/png\",\n};\n\nconst defaultOptionsReplaceVariableList: OptionsReplaceVariableList = {\n    firstMatch: false,\n    parseLineBreaks: true,\n};\n\nconst defaultOptionsReplaceVariableTable: OptionsReplaceVariableTable = {\n    firstMatch: false,\n    parseLineBreaks: true,\n};\n\nconst defaultOptionsReplaceVariableText: OptionsReplaceVariableText = {\n    firstMatch: false,\n    parseLineBreaks: true,\n};\n\nconst defaultOptionsReplaceVariableWordFragment: OptionsReplaceVariableWordFragment =\n    {\n        firstMatch: false,\n        type: \"block\",\n    };\n\nconst defaultOptionsReplaceVariableWordMl: OptionsReplaceVariableWordMl = {\n    firstMatch: false,\n};\n\nexport {\n    defaultOptionsRemoveVariableImage,\n    defaultOptionsReplaceVariableExternalFile,\n    defaultOptionsRemoveVariableText,\n    defaultOptionsReplaceVariableImage,\n    defaultOptionsReplaceVariableList,\n    defaultOptionsReplaceVariableTable,\n    defaultOptionsReplaceVariableText,\n    defaultOptionsReplaceVariableWordFragment,\n    defaultOptionsReplaceVariableWordMl,\n    defaultOptionsTemplate,\n    OptionsRemoveVariableImage,\n    OptionsRemoveVariableText,\n    OptionsReplaceVariableExternalFile,\n    OptionsReplaceVariableImage,\n    OptionsReplaceVariableList,\n    OptionsReplaceVariableTable,\n    OptionsReplaceVariableText,\n    OptionsReplaceVariableWordFragment,\n    OptionsReplaceVariableWordMl,\n    OptionsTemplate,\n    Target,\n    targetsInDocument,\n};\n","import * as Element from \"../element\";\nimport {\n    Docx as DocxStructure,\n    generateDefaultDocxStructure,\n    listBullets,\n    listNumbering,\n    numNumberingXml,\n} from \"../structure\";\nimport {\n    Zip,\n    applyHtmlSpecialChars,\n    generateRandomNumber,\n    generateRegExpForReplacement,\n    generateUniqid,\n} from \"../util/\";\nimport { WordFragment } from \"./wordfragment\";\n\n/**\n * Create DOCX\n */\nclass CreateDocx {\n    /**\n     * phpdocx version\n     */\n    static readonly PHPDOCX_VERSION = \"15.0\";\n\n    /**\n     * Bidi\n     */\n    protected bidi: boolean;\n\n    /**\n     * Custom list styles. Keep relationship between list style names and internal number ids\n     */\n    protected customListStyles: Map<string, number>;\n\n    /**\n     * DOCX contents\n     */\n    protected docxContent: DocxStructure;\n\n    /**\n     * External defaults\n     */\n    protected externalDefaults: Map<string, string>;\n\n    /**\n     * External relationships\n     */\n    protected externalRelationships: Element.Relationship[];\n\n    /**\n     * Bookmark Ids\n     */\n    protected idsBookmarks: number[];\n\n    /**\n     * DocPr Ids\n     */\n    protected idsDocPr: number[];\n\n    /**\n     * Numbering Ids\n     */\n    protected idsNumbering: number[];\n\n    /**\n     * Is WordFragment\n     */\n    protected isWordFragment: boolean;\n\n    /**\n     * Preprocessed template\n     */\n    protected preprocessed: boolean;\n\n    /**\n     * Regular expression to get variables\n     */\n    protected regExprVariableSymbols: string;\n\n    /**\n     * RTL\n     */\n    protected rtl: boolean;\n\n    /**\n     * Template symbol start\n     */\n    protected templateSymbolStart: string;\n\n    /**\n     * Template symbol end\n     */\n    protected templateSymbolEnd: string;\n\n    /**\n     * XML content\n     */\n    protected xml: string;\n\n    /**\n     * Constructor\n     *\n     * @param docxStructure - Default DOCX structure\n     */\n    constructor(docxStructure?: DocxStructure) {\n        this.bidi = false;\n        this.customListStyles = new Map<string, number>();\n        if (docxStructure != null) {\n            this.docxContent = docxStructure;\n        } else {\n            this.docxContent = generateDefaultDocxStructure(); // default base template\n            this.docxContent.initDocxStructure();\n        }\n        this.externalDefaults = new Map<string, string>();\n        this.externalRelationships = [];\n        this.idsBookmarks = [];\n        this.idsNumbering = [];\n        this.idsDocPr = [];\n        this.isWordFragment = false;\n        this.preprocessed = false;\n        this.regExprVariableSymbols = \"(.*?)\";\n        this.rtl = false;\n        this.templateSymbolStart = \"$\";\n        this.templateSymbolEnd = \"$\";\n        this.xml = \"\";\n    }\n\n    /**\n     * Getter docx structure\n     *\n     * @returns DOCX structure\n     */\n    public getDocxContent(): DocxStructure {\n        return this.docxContent;\n    }\n\n    /**\n     * Getter regExprVariableSymbols\n     *\n     * @returns Regular expression variable symbols\n     */\n    public getRegExprVariableSymbols(): string {\n        return this.regExprVariableSymbols;\n    }\n\n    /**\n     * Getter external defaults\n     *\n     * @returns external relationships\n     */\n    public getExternalDefaults(): Map<string, string> {\n        return this.externalDefaults;\n    }\n\n    /**\n     * Getter external relationships\n     *\n     * @returns external relationships\n     */\n    public getExternalRelationships(): Element.Relationship[] {\n        return this.externalRelationships;\n    }\n\n    /**\n     * Getter preprocessed\n     *\n     * @returns Preprocessed\n     */\n    public getPreprocessed(): boolean {\n        return this.preprocessed;\n    }\n\n    /**\n     * Setter preprocessed\n     *\n     * @param preprocessed - Preprocessed\n     * @returns this\n     */\n    public setPreprocessed(preprocessed: boolean): this {\n        this.preprocessed = preprocessed;\n\n        return this;\n    }\n\n    /**\n     * Setter regExprVariableSymbols\n     *\n     * @param regExprVariableSymbols - Regular expression variable symbols\n     * @returns this\n     */\n    public setRegExprVariableSymbols(regExprVariableSymbols: string): this {\n        this.regExprVariableSymbols = regExprVariableSymbols;\n\n        return this;\n    }\n\n    /**\n     * Adds bookmark\n     *\n     * @param name - Bookmark name\n     * @param options - Bookmark options\n     * @returns this\n     */\n    public addBookmark(\n        name: string,\n        options: Element.OptionsBookmark = {}\n    ): this {\n        // new bookmark Id\n        const bookmarkId = generateRandomNumber(\n            99999999,\n            999999999,\n            this.idsBookmarks\n        );\n        this.idsBookmarks.push(bookmarkId);\n\n        const bookmarkElement = new Element.CreateBookmark(\n            options,\n            bookmarkId,\n            name\n        );\n        const bookmarkContent = bookmarkElement.create();\n\n        if (this.isWordFragment) {\n            this.xml += bookmarkContent;\n        } else {\n            this.docxContent.addXmlContent(bookmarkContent);\n        }\n\n        return this;\n    }\n\n    /**\n     * Adds break\n     *\n     * @param type - Break type\n     * @param options - Break options\n     * @returns this\n     */\n    public addBreak(\n        type: Element.BreakType = \"line\",\n        options: Element.OptionsBreak = {}\n    ): this {\n        const breakElement = new Element.CreateBreak(options, type);\n        let breakContent = breakElement.create();\n\n        // wrap in a paragraph\n        breakContent = this.generateParagraph(breakContent);\n\n        if (this.isWordFragment) {\n            this.xml += breakContent;\n        } else {\n            this.docxContent.addXmlContent(breakContent);\n        }\n\n        return this;\n    }\n\n    /**\n     * Adds date and time\n     *\n     * @param options - Date and time options\n     * @param optionsParagraph - Paragraph options\n     * @returns this\n     */\n    public addDateTime(\n        options: Element.OptionsDateTime = {},\n        optionsParagraph: Element.OptionsParagraph = {}\n    ): this {\n        // handle RTL class settings\n        optionsParagraph = this.setRtlValues(optionsParagraph);\n\n        const dateTimeElement = new Element.CreateDateTime(\n            options,\n            optionsParagraph\n        );\n        let dateTimeContent = dateTimeElement.create();\n\n        // wrap in a paragraph\n        dateTimeContent = this.generateParagraph(\n            dateTimeContent,\n            optionsParagraph\n        );\n\n        if (this.isWordFragment) {\n            this.xml += dateTimeContent;\n        } else {\n            this.docxContent.addXmlContent(dateTimeContent);\n        }\n\n        return this;\n    }\n\n    /**\n     * Adds external file\n     *\n     * @param options - Altchunk options\n     * @returns this\n     */\n    public addExternalFile(options: Element.OptionsAltchunk): this {\n        // new altchunk id\n        const altchunkId = generateUniqid(options.type);\n\n        const altchunkElement = new Element.CreateAltchunk(options, altchunkId);\n        const altchunkContent = altchunkElement.create();\n\n        if (this.isWordFragment) {\n            this.xml += altchunkContent + \"<w:p/>\";\n        } else {\n            this.docxContent.addXmlContent(altchunkContent);\n        }\n\n        // keep external dependencies\n        this.insertExternalDependencies(altchunkElement);\n\n        return this;\n    }\n\n    /**\n     * Adds footer\n     *\n     * @param footers - Footers\n     * @returns this\n     */\n    public addFooter(footers: Element.OptionsFooter[]) {\n        footers.forEach(footer => {\n            const footerElement = new Element.CreateReference(footer, \"footer\");\n            this.docxContent.addXmlContentReference(footerElement);\n\n            if (footer.type == \"even\") {\n                this.docxSettings({ evenAndOddHeaders: true });\n            }\n\n            // keep external dependencies\n            this.insertExternalDependencies(footer.text, \"footer\");\n        });\n\n        return this;\n    }\n\n    /**\n     * Adds header\n     *\n     * @param headers - Headers\n     * @returns this\n     */\n    public addHeader(headers: Element.OptionsHeader[]) {\n        headers.forEach(header => {\n            const headerElement = new Element.CreateReference(header, \"header\");\n            this.docxContent.addXmlContentReference(headerElement);\n\n            if (header.type == \"even\") {\n                this.docxSettings({ evenAndOddHeaders: true });\n            }\n\n            // keep external dependencies\n            this.insertExternalDependencies(header.text, \"header\");\n        });\n\n        return this;\n    }\n\n    /**\n     * Adds image\n     *\n     * @param options - Image options\n     * @param optionsParagraph - Paragraph options\n     * @returns this\n     */\n    public addImage(\n        options: Element.OptionsImage,\n        optionsParagraph: Element.OptionsParagraph = {}\n    ): this {\n        // handle RTL class settings\n        optionsParagraph = this.setRtlValues(optionsParagraph);\n\n        // new image id\n        const imageId = generateUniqid(\"image\");\n        let imageLinkId = undefined;\n        if (options.link != undefined) {\n            imageLinkId = generateUniqid(\"image\");\n        }\n\n        // new docPr Id\n        const docPrId = generateRandomNumber(\n            99999999,\n            999999999,\n            this.idsDocPr\n        );\n        this.idsDocPr.push(docPrId);\n\n        const imageElement = new Element.CreateImage(\n            options,\n            imageId,\n            docPrId,\n            imageLinkId\n        );\n        let imageContent = imageElement.create();\n\n        // wrap in a paragraph\n        imageContent = this.generateParagraph(imageContent, optionsParagraph);\n\n        if (this.isWordFragment) {\n            this.xml += imageContent;\n        } else {\n            this.docxContent.addXmlContent(imageContent);\n        }\n\n        // keep external dependencies\n        this.insertExternalDependencies(imageElement);\n\n        return this;\n    }\n\n    /**\n     * Adds link\n     *\n     * @param options - Link options\n     * @param optionsParagraph - Paragraph options\n     * @returns this\n     */\n    public addLink(\n        options: Element.OptionsLink,\n        optionsParagraph: Element.OptionsParagraph = {}\n    ): this {\n        // new link id\n        const hyperlinkId = generateUniqid(\"rId\");\n\n        // handle RTL class settings\n        optionsParagraph = this.setRtlValues(optionsParagraph);\n\n        const linkElement = new Element.CreateLink(\n            options,\n            optionsParagraph,\n            hyperlinkId\n        );\n        let linkContent = linkElement.create();\n\n        // wrap in a paragraph\n        linkContent = this.generateParagraph(linkContent, optionsParagraph);\n\n        if (this.isWordFragment) {\n            this.xml += linkContent;\n        } else {\n            this.docxContent.addXmlContent(linkContent);\n        }\n\n        // keep external dependencies\n        this.insertExternalDependencies(linkElement);\n\n        return this;\n    }\n\n    /**\n     * Adds list\n     *\n     * @param items - List items\n     * @param options - List options\n     * @returns this\n     */\n    public addList(\n        items: Element.ListNested[],\n        options: Element.OptionsList = {}\n    ): this {\n        let numId;\n        if (options.type != null && this.customListStyles.has(options.type)) {\n            // custom list style\n            numId = this.customListStyles.get(options.type);\n            options.numId = numId;\n        } else {\n            // new list Id\n            numId = generateRandomNumber(999, 32000, this.idsNumbering);\n            options.numId = numId;\n            this.idsNumbering.push(numId);\n\n            // if a custom list style is set but the list style doesn't exist, set the default value\n            if (\n                options.type != null &&\n                options.type != \"numbering\" &&\n                !this.customListStyles.has(options.type)\n            ) {\n                options.type = \"bullets\";\n            }\n        }\n        const listElement = new Element.CreateList(options, items);\n        const listContent = listElement.create();\n        const listOptions = listElement.getOptions();\n\n        // add a preset numbering if the type if bullets or numbering\n        if (listOptions.type == \"bullets\") {\n            this.docxContent.addXmlNumbering(\n                listBullets.replace(\n                    'w:abstractNumId=\"\"',\n                    'w:abstractNumId=\"' + numId + '\"'\n                ),\n                numNumberingXml\n                    .replace('w:numId=\"\"', 'w:numId=\"' + numId + '\"')\n                    .replace('w:val=\"\"', 'w:val=\"' + numId + '\"')\n            );\n        } else if (listOptions.type == \"numbering\") {\n            this.docxContent.addXmlNumbering(\n                listNumbering.replace(\n                    'w:abstractNumId=\"\"',\n                    'w:abstractNumId=\"' + numId + '\"'\n                ),\n                numNumberingXml\n                    .replace('w:numId=\"\"', 'w:numId=\"' + numId + '\"')\n                    .replace('w:val=\"\"', 'w:val=\"' + numId + '\"')\n            );\n        }\n\n        if (this.isWordFragment) {\n            this.xml += listContent;\n        } else {\n            this.docxContent.addXmlContent(listContent);\n        }\n\n        // keep external dependencies\n        this.insertExternalDependencies(listElement);\n\n        return this;\n    }\n\n    /**\n     * Adds page number\n     *\n     * @param options - Page number options\n     * @param optionsParagraph - Paragraph options\n     * @returns this\n     */\n    public addPageNumber(\n        options: Element.OptionsPageNumber = {},\n        optionsParagraph: Element.OptionsParagraph = {}\n    ): this {\n        // handle RTL class settings\n        options = this.setRtlValues(options);\n\n        const pageNumberElement = new Element.CreatePageNumber(\n            options,\n            optionsParagraph\n        );\n        const pageNumberContent = pageNumberElement.create();\n\n        if (this.isWordFragment) {\n            this.xml += pageNumberContent;\n        } else {\n            this.docxContent.addXmlContent(pageNumberContent);\n        }\n\n        return this;\n    }\n\n    /**\n     * Adds properties\n     *\n     * @param options - Property options\n     * @returns this\n     */\n    public addProperties(options: Element.OptionsProperties): this {\n        this.docxContent.addXmlProperties(options);\n\n        return this;\n    }\n\n    /**\n     * Adds section\n     *\n     * @param options - Section options\n     * @returns this\n     */\n    public addSection(options: Element.OptionsSection = {}): this {\n        const contents = this.docxContent.getContentPathsByType(\"document\");\n\n        if (contents != null) {\n            const targetDocumentContent = this.docxContent.getTextContent(\n                contents[0]\n            );\n            if (targetDocumentContent != null) {\n                const sectionContents = this.docxContent.getXmlContents(\n                    targetDocumentContent,\n                    \"(//w:sectPr)[last()]\"\n                );\n\n                // add the new section from the existing section\n                const sectionElement = new Element.CreateSection(options);\n                sectionElement.setSectionInit(sectionContents);\n                const sectionContent = sectionElement.create();\n                this.docxContent.addXmlContent(sectionContent);\n\n                // modify the last section applying the new options\n                options = sectionElement.getOptions();\n                const optionsSection = options as Element.OptionsSectionLayout;\n                optionsSection.onlyLastSection = true;\n                this.docxContent.modifySections(optionsSection);\n            }\n        }\n\n        return this;\n    }\n\n    /**\n     * Adds table\n     *\n     * @param items - Table items\n     * @param optionsRow - Table row options\n     * @param optionsTable - Table options\n     * @returns this\n     */\n    public addTable(\n        items: (string | WordFragment | Element.OptionsCellTable)[][],\n        optionsRow: Element.OptionsRowTable[] = [],\n        optionsTable: Element.OptionsTable = {}\n    ): this {\n        const tableElement = new Element.CreateTable(\n            items,\n            optionsRow,\n            optionsTable\n        );\n        const tableContent = tableElement.create();\n\n        if (this.isWordFragment) {\n            this.xml += tableContent;\n        } else {\n            this.docxContent.addXmlContent(tableContent);\n        }\n\n        // keep external dependencies\n        this.insertExternalDependencies(tableElement);\n\n        return this;\n    }\n\n    /**\n     * Adds table of contents\n     *\n     * @param options - Table of contents options\n     * @returns this\n     */\n    public addTableOfContents(\n        options: Element.OptionsTableOfContents = {}\n    ): this {\n        const tocElement = new Element.CreateTableOfContents(options);\n        const tocContent = tocElement.create();\n\n        // auto update fields\n        if (options.autoUpdate != null && options.autoUpdate) {\n            this.docxSettings({ updateFields: true });\n        }\n\n        if (this.isWordFragment) {\n            this.xml += tocContent;\n        } else {\n            this.docxContent.addXmlContent(tocContent);\n        }\n\n        return this;\n    }\n\n    /**\n     * Adds text\n     *\n     * @param options - Text contents and options\n     * @param optionsParagraph - Paragraph options\n     * @returns this\n     */\n    public addText(\n        options: string | (Element.OptionsText | WordFragment)[],\n        optionsParagraph: Element.OptionsParagraph = {}\n    ): this {\n        // handle RTL class settings\n        optionsParagraph = this.setRtlValues(optionsParagraph);\n\n        let textContent = \"\";\n        if (typeof options == \"string\") {\n            const optionsText: Element.OptionsText = {\n                text: options,\n            };\n            options = [optionsText];\n        }\n        options.forEach(optionsText => {\n            const textElement = new Element.CreateText(\n                optionsText,\n                optionsParagraph\n            );\n            textContent += textElement.create();\n\n            // keep external dependencies\n            this.insertExternalDependencies(textElement);\n        });\n\n        // wrap in a paragraph\n        textContent = this.generateParagraph(textContent, optionsParagraph);\n\n        if (this.isWordFragment) {\n            this.xml += textContent;\n        } else {\n            this.docxContent.addXmlContent(textContent);\n        }\n\n        return this;\n    }\n\n    /**\n     * Adds WordFragment\n     *\n     * @param wordFragment - WordFragment\n     * @returns this\n     */\n    public addWordFragment(wordFragment: WordFragment): this {\n        if (this.isWordFragment) {\n            this.xml += wordFragment.toString();\n        } else {\n            this.docxContent.addXmlContent(wordFragment.toString());\n        }\n\n        // keep external dependencies\n        this.insertExternalDependencies(wordFragment);\n\n        return this;\n    }\n\n    /**\n     * Adds raw WordML contents\n     *\n     * @param wordMl - WordML\n     * @returns this\n     */\n    public addWordMl(wordMl: string): this {\n        if (this.isWordFragment) {\n            this.xml += wordMl;\n        } else {\n            this.docxContent.addXmlContent(wordMl);\n        }\n\n        return this;\n    }\n\n    /**\n     * Creates a character style\n     *\n     * @param name - Style name\n     * @param styles - Character styles\n     * @returns\n     */\n    public createCharacterStyle(\n        name: string,\n        styles: Element.OptionsRpr\n    ): this {\n        const rPrElement = new Element.CreateRpr(styles);\n        const rPrStyles = rPrElement.create();\n\n        this.docxContent.addXmlStyleCustom(rPrStyles, \"character\", name);\n\n        return this;\n    }\n\n    /**\n     * Creates a list style\n     *\n     * @param name - Style name\n     * @param styles - Character styles\n     * @returns\n     */\n    public createListStyle(name: string, styles: Element.OptionsNumPr[]): this {\n        // new list Id\n        const numId = generateRandomNumber(999, 32000, this.idsNumbering);\n        this.idsNumbering.push(numId);\n        this.customListStyles.set(name, numId);\n\n        const numPrElement = new Element.CreateNumpr(styles);\n        const numPrContent = numPrElement.create();\n\n        // add the new numbering\n        this.docxContent.addXmlNumbering(\n            numPrContent.replace(\n                'w:abstractNumId=\"\"',\n                'w:abstractNumId=\"' + numId + '\"'\n            ),\n            numNumberingXml\n                .replace('w:numId=\"\"', 'w:numId=\"' + numId + '\"')\n                .replace('w:val=\"\"', 'w:val=\"' + numId + '\"')\n        );\n\n        return this;\n    }\n\n    /**\n     * Creates a paragraph style\n     *\n     * @param name - Style name\n     * @param styles - Paragarph styles\n     * @returns\n     */\n    public createParagraphStyle(\n        name: string,\n        styles: Element.OptionsParagraph\n    ): this {\n        const pPrElement = new Element.CreateParagraph(styles);\n        const pPrStyles = pPrElement.createPpr();\n\n        this.docxContent.addXmlStyleCustom(pPrStyles, \"paragraph\", name);\n\n        return this;\n    }\n\n    /**\n     * Sets DOCX settings\n     *\n     * @param settings - DOCX settings\n     * @returns this\n     */\n    public docxSettings(settings: Element.OptionsSettings): this {\n        const settingsElements = new Element.CreateSettings(settings);\n        const settingsContent = settingsElements.create();\n        this.docxContent.addXmlSettings(settingsContent);\n\n        return this;\n    }\n\n    /**\n     * Gets template symbols\n     *\n     * @returns Template symbols\n     */\n    public getTemplateSymbols(): [string, string] {\n        return [this.templateSymbolStart, this.templateSymbolEnd];\n    }\n\n    /**\n     * Gets template variables\n     *\n     * @returns Variables\n     */\n    public getTemplateVariables(): Map<string, string[]> {\n        if (!this.preprocessed) {\n            this.repairVariables();\n        }\n\n        const variables = new Map<string, string[]>();\n        Element.targetsInDocument.forEach(target => {\n            const contents = this.docxContent.getContentPathsByType(target);\n            const variablesTarget: string[] = [];\n\n            if (contents != null) {\n                contents.forEach(contentPath => {\n                    const textContent =\n                        this.docxContent.getTextContent(contentPath);\n                    if (textContent != null) {\n                        const variablesTargetContent =\n                            this.docxContent.extractXmlVariables(\n                                textContent,\n                                this.templateSymbolStart,\n                                this.templateSymbolEnd,\n                                this.regExprVariableSymbols\n                            );\n                        variablesTarget.push(...variablesTargetContent);\n                    }\n                });\n            }\n            variables.set(target, variablesTarget);\n        });\n\n        return variables;\n    }\n\n    /**\n     * Modifies section layout\n     *\n     * @param options - Section options\n     * @returns this\n     */\n    public modifySectionLayout(options: Element.OptionsSectionLayout): this {\n        this.docxContent.modifySections(options);\n\n        return this;\n    }\n\n    /**\n     * Opens a DOCX template\n     *\n     * @param template - DOCX template\n     * @param options - Template options\n     * @returns Promise CreateDocx\n     * @throws Error reading DOCX contents\n     */\n    public async openTemplate(\n        template: ArrayBuffer,\n        options: Element.OptionsTemplate = {}\n    ): Promise<this> {\n        const zip = new Zip();\n        try {\n            await zip.open(template).then(docxTemplateStructure => {\n                this.docxContent = docxTemplateStructure;\n            });\n            this.docxContent.initDocxStructure();\n        } catch (err) {\n            throw new Error((err as Error).message);\n        }\n\n        // apply default options\n        options = { ...Element.defaultOptionsTemplate, ...options };\n\n        if (options.importMSWordDefaultStyles) {\n            this.docxContent.importMSWordDefaultStyles(\n                generateDefaultDocxStructure()\n            );\n        }\n\n        return this;\n    }\n\n    /**\n     * Processes the template to repair all variables\n     *\n     * @returns this\n     */\n    public processTemplate(): this {\n        if (!this.preprocessed) {\n            this.repairVariables();\n        }\n\n        return this;\n    }\n\n    /**\n     * Removes image variables\n     *\n     * @param variables - Variables\n     * @param target - Target: document (default), header, footer, footnote, endnote, comment\n     * @param options - Remove variable image options\n     * @returns this\n     */\n    public removeVariableImage(\n        variables: string[],\n        target: Element.Target = \"document\",\n        options: Element.OptionsRemoveVariableImage = {}\n    ): this {\n        // apply default options\n        options = { ...Element.defaultOptionsRemoveVariableImage, ...options };\n\n        const contents = this.docxContent.getContentPathsByType(target);\n\n        if (contents != null) {\n            contents.forEach(contentPath => {\n                let textContent = this.docxContent.getTextContent(contentPath);\n                if (textContent != null) {\n                    variables.forEach(variable => {\n                        let xpathQuery;\n                        if (options.type == \"block\") {\n                            xpathQuery =\n                                '//w:p[.//w:drawing[descendant::wp:docPr[@descr=\"' +\n                                this.templateSymbolStart +\n                                applyHtmlSpecialChars(variable) +\n                                this.templateSymbolEnd +\n                                '\" or @title=\"' +\n                                this.templateSymbolStart +\n                                applyHtmlSpecialChars(variable) +\n                                this.templateSymbolEnd +\n                                '\"]]]';\n                        } else {\n                            xpathQuery =\n                                '//w:r[.//w:drawing[descendant::wp:docPr[@descr=\"' +\n                                this.templateSymbolStart +\n                                applyHtmlSpecialChars(variable) +\n                                this.templateSymbolEnd +\n                                '\" or @title=\"' +\n                                this.templateSymbolStart +\n                                applyHtmlSpecialChars(variable) +\n                                this.templateSymbolEnd +\n                                '\"]]]';\n                        }\n                        if (options.firstMatch) {\n                            xpathQuery = \"(\" + xpathQuery + \")[1]\";\n                        }\n                        if (textContent != null) {\n                            textContent = this.docxContent.removeXmlElement(\n                                textContent,\n                                xpathQuery\n                            );\n                        }\n                    });\n\n                    this.docxContent.addTextContent(contentPath, textContent);\n                }\n            });\n        }\n\n        return this;\n    }\n\n    /**\n     * Removes text variables\n     *\n     * @param variables - Variables\n     * @param target - Target: document (default), header, footer, footnote, endnote, comment\n     * @param options - Remove variable text options\n     * @returns this\n     */\n    public removeVariableText(\n        variables: string[],\n        target: Element.Target = \"document\",\n        options: Element.OptionsRemoveVariableText = {}\n    ): this {\n        if (!this.preprocessed) {\n            this.repairVariables();\n        }\n\n        // apply default options\n        options = { ...Element.defaultOptionsRemoveVariableText, ...options };\n\n        if (options.type == \"inline\") {\n            // inline removal\n\n            // transform array to Map\n            const variablesMap = new Map(\n                variables.map(variable => [variable, \"\"])\n            );\n\n            // replace variables with empty values\n            this.replaceVariableText(variablesMap, target, options);\n        } else {\n            // block removal\n            const contents = this.docxContent.getContentPathsByType(target);\n            if (contents != null) {\n                contents.forEach(contentPath => {\n                    let textContent =\n                        this.docxContent.getTextContent(contentPath);\n                    if (textContent != null) {\n                        variables.forEach(variable => {\n                            let xpathQuery =\n                                '//w:p[w:r/w:t[text()[contains(.,\"' +\n                                this.templateSymbolStart +\n                                applyHtmlSpecialChars(variable) +\n                                this.templateSymbolEnd +\n                                '\")]]]';\n                            if (options.firstMatch) {\n                                xpathQuery = \"(\" + xpathQuery + \")[1]\";\n                            }\n                            if (textContent != null) {\n                                textContent = this.docxContent.removeXmlElement(\n                                    textContent,\n                                    xpathQuery\n                                );\n                            }\n                        });\n\n                        this.docxContent.addTextContent(\n                            contentPath,\n                            textContent\n                        );\n                    }\n                });\n            }\n        }\n\n        return this;\n    }\n\n    /**\n     * Replaces text variables with external files\n     *\n     * @param variables - Variables\n     * @param options - Replace variable external file options\n     * @returns this\n     */\n    public replaceVariableExternalFile(\n        variables: Map<string, WordFragment>,\n        options: Element.OptionsReplaceVariableExternalFile = {}\n    ): this {\n        if (!this.preprocessed) {\n            this.repairVariables();\n        }\n\n        // apply default options\n        options = {\n            ...Element.defaultOptionsReplaceVariableExternalFile,\n            ...options,\n        };\n\n        const optionsReplaceWordFragment: Element.OptionsReplaceVariableWordFragment =\n            {\n                firstMatch: options.firstMatch,\n                type: \"block\",\n            };\n\n        this.replaceVariableWordFragment(\n            variables,\n            \"document\",\n            optionsReplaceWordFragment\n        );\n\n        return this;\n    }\n\n    /**\n     * Replaces image variables\n     *\n     * @param variables - Variables\n     * @param target - Target: document (default), header, footer, footnote, endnote, comment\n     * @param options - Replace variable image options\n     * @returns this\n     */\n    public replaceVariableImage(\n        variables: Map<string, ArrayBuffer>,\n        target: Element.Target = \"document\",\n        options: Element.OptionsReplaceVariableImage = {}\n    ): this {\n        // apply default options\n        options = { ...Element.defaultOptionsReplaceVariableImage, ...options };\n\n        const contents = this.docxContent.getContentPathsByType(target);\n\n        if (contents != null) {\n            contents.forEach(contentPath => {\n                let textContent = this.docxContent.getTextContent(contentPath);\n                if (textContent != null) {\n                    for (const [\n                        variableName,\n                        variableValue,\n                    ] of variables.entries()) {\n                        let xpathQuery =\n                            '//wp:docPr[@descr=\"' +\n                            this.templateSymbolStart +\n                            applyHtmlSpecialChars(variableName) +\n                            this.templateSymbolEnd +\n                            '\" or @title=\"' +\n                            this.templateSymbolStart +\n                            applyHtmlSpecialChars(variableName) +\n                            this.templateSymbolEnd +\n                            '\"]';\n\n                        if (options.firstMatch) {\n                            xpathQuery = \"(\" + xpathQuery + \")[1]\";\n                        }\n\n                        // generate an image element to get image options\n                        const optionsImage = options as Element.OptionsImage;\n                        optionsImage.image = variableValue;\n\n                        // new imageId\n                        const imageId = generateUniqid(\"image\");\n                        const imageElement = new Element.CreateImage(\n                            optionsImage,\n                            imageId,\n                            0 // idDocPr is not used but required by the method\n                        );\n                        imageElement.create();\n\n                        if (textContent != null) {\n                            const replaceImage =\n                                this.docxContent.replaceXmlImage(\n                                    textContent,\n                                    xpathQuery,\n                                    imageElement,\n                                    imageId,\n                                    options\n                                );\n                            textContent = replaceImage[0];\n\n                            // add image file only if the replacement has found some result\n                            if (replaceImage[1] > 0) {\n                                this.docxContent.addFileContent(\n                                    \"word/media/\" +\n                                        imageId +\n                                        \".\" +\n                                        imageElement.getRelationshipFileExtension(),\n                                    variableValue\n                                );\n                                // add default type\n                                this.insertDefault(\n                                    imageElement.getRelationshipFileExtension(),\n                                    imageElement.getMime()\n                                );\n                                // insert external relationships\n                                this.insertExternalRelationships(\n                                    imageElement.getExternalRelationships(),\n                                    target\n                                );\n                            }\n                        }\n                    }\n\n                    this.docxContent.addTextContent(contentPath, textContent);\n                }\n            });\n        }\n\n        return this;\n    }\n\n    /**\n     * Replaces list variables\n     *\n     * @param variables - Variables and values\n     * @param target - Target: document (default), header, footer, footnote, endnote, comment\n     * @param options - Replace variable list options\n     * @returns this\n     */\n    public replaceVariableList(\n        variables: Map<string, Element.ListNested[]>,\n        target: Element.Target = \"document\",\n        options: Element.OptionsReplaceVariableList = {}\n    ): this {\n        if (!this.preprocessed) {\n            this.repairVariables();\n        }\n\n        // apply default options\n        options = { ...Element.defaultOptionsReplaceVariableList, ...options };\n\n        const contents = this.docxContent.getContentPathsByType(target);\n        // WordFragments in the list\n        let wordFragmentValues = new Map<string, WordFragment>();\n\n        if (contents != null) {\n            contents.forEach(contentPath => {\n                let textContent = this.docxContent.getTextContent(contentPath);\n                if (textContent != null) {\n                    for (const [\n                        variableName,\n                        variableValue,\n                    ] of variables.entries()) {\n                        let xpathQuery =\n                            '//w:p[w:r/w:t[text()[contains(.,\"' +\n                            this.templateSymbolStart +\n                            applyHtmlSpecialChars(variableName) +\n                            this.templateSymbolEnd +\n                            '\")]]]';\n                        if (options.firstMatch) {\n                            xpathQuery = \"(\" + xpathQuery + \")[1]\";\n                        }\n                        if (textContent != null) {\n                            const listContent = this.docxContent.replaceXmlList(\n                                textContent,\n                                this.templateSymbolStart +\n                                    applyHtmlSpecialChars(variableName) +\n                                    this.templateSymbolEnd,\n                                xpathQuery,\n                                variableValue,\n                                options,\n                                this.templateSymbolStart,\n                                this.templateSymbolEnd\n                            );\n                            textContent = listContent[0];\n                            wordFragmentValues = new Map([\n                                ...wordFragmentValues,\n                                ...listContent[1],\n                            ]);\n                        }\n                    }\n\n                    this.docxContent.addTextContent(contentPath, textContent);\n                }\n            });\n        }\n\n        // replace pending WordFragments\n        if (wordFragmentValues.size > 0) {\n            const optionsReplaceVariableWordFragment: Element.OptionsReplaceVariableWordFragment =\n                {\n                    type: \"inline\",\n                };\n            this.replaceVariableWordFragment(\n                wordFragmentValues,\n                target,\n                optionsReplaceVariableWordFragment\n            );\n        }\n\n        return this;\n    }\n\n    /**\n     * Replaces table variables\n     *\n     * @param variables - Variables and values\n     * @param target - Target: document (default), header, footer, footnote, endnote, comment\n     * @param options - Replace variable table options\n     * @returns this\n     */\n    public replaceVariableTable(\n        variables: Map<string, string | WordFragment>[][],\n        target: Element.Target = \"document\",\n        options: Element.OptionsReplaceVariableTable = {}\n    ): this {\n        if (!this.preprocessed) {\n            this.repairVariables();\n        }\n\n        // apply default options\n        options = { ...Element.defaultOptionsReplaceVariableTable, ...options };\n\n        const contents = this.docxContent.getContentPathsByType(target);\n        // WordFragments in the table\n        let wordFragmentValues = new Map<string, WordFragment>();\n\n        if (contents != null) {\n            contents.forEach(contentPath => {\n                let textContent = this.docxContent.getTextContent(contentPath);\n                if (textContent != null) {\n                    variables.forEach(variablesTable => {\n                        // get placeholders from the first entry\n                        const firstRow = variablesTable[0];\n                        if (firstRow != null) {\n                            let xpathQuery = \"//w:tbl/w:tr[\";\n                            Array.from(firstRow.keys()).forEach(\n                                (rowVariable, indexRowVariable) => {\n                                    if (indexRowVariable == 0) {\n                                        xpathQuery +=\n                                            'contains(.,\"' +\n                                            this.templateSymbolStart +\n                                            rowVariable +\n                                            this.templateSymbolEnd +\n                                            '\")';\n                                    } else {\n                                        xpathQuery +=\n                                            ' and contains(.,\"' +\n                                            this.templateSymbolStart +\n                                            rowVariable +\n                                            this.templateSymbolEnd +\n                                            '\")';\n                                    }\n                                }\n                            );\n                            xpathQuery += \"]\";\n                            if (options.firstMatch) {\n                                xpathQuery = \"(\" + xpathQuery + \")[1]\";\n                            }\n\n                            if (textContent != null) {\n                                const tableContent =\n                                    this.docxContent.replaceXmlTable(\n                                        textContent,\n                                        variablesTable,\n                                        xpathQuery,\n                                        options,\n                                        this.templateSymbolStart,\n                                        this.templateSymbolEnd\n                                    );\n                                textContent = tableContent[0];\n\n                                wordFragmentValues = new Map([\n                                    ...wordFragmentValues,\n                                    ...tableContent[1],\n                                ]);\n                            }\n                        }\n                    });\n\n                    this.docxContent.addTextContent(contentPath, textContent);\n                }\n            });\n        }\n\n        // replace pending WordFragments\n        if (wordFragmentValues.size > 0) {\n            const optionsReplaceVariableWordFragment: Element.OptionsReplaceVariableWordFragment =\n                {\n                    type: \"block\",\n                };\n            this.replaceVariableWordFragment(\n                wordFragmentValues,\n                target,\n                optionsReplaceVariableWordFragment\n            );\n        }\n\n        return this;\n    }\n\n    /**\n     * Replaces text variables with text contents\n     *\n     * @param variables - Variables and values\n     * @param target - Target: document (default), header, footer, footnote, endnote, comment\n     * @param options - Replace variable text options\n     * @returns this\n     */\n    public replaceVariableText(\n        variables: Map<string, string>,\n        target: Element.Target = \"document\",\n        options: Element.OptionsReplaceVariableText = {}\n    ): this {\n        if (!this.preprocessed) {\n            this.repairVariables();\n        }\n\n        // apply default options\n        options = { ...Element.defaultOptionsReplaceVariableText, ...options };\n\n        const contents = this.docxContent.getContentPathsByType(target);\n\n        if (contents != null) {\n            contents.forEach(contentPath => {\n                let textContent = this.docxContent.getTextContent(contentPath);\n                if (textContent != null) {\n                    for (let [\n                        variableName,\n                        variableValue,\n                    ] of variables.entries()) {\n                        variableName = applyHtmlSpecialChars(variableName);\n                        variableValue = applyHtmlSpecialChars(variableValue);\n\n                        // replace line breaks\n                        if (options.parseLineBreaks) {\n                            variableValue = variableValue.replace(\n                                /\\n\\r|\\n|\\r\\n|\\r/g,\n                                '</w:t><w:br/><w:t xml:space=\"preserve\">'\n                            );\n                        }\n\n                        if (options.firstMatch != null && options.firstMatch) {\n                            // replace only the first match\n                            textContent = textContent.replace(\n                                this.templateSymbolStart +\n                                    variableName +\n                                    this.templateSymbolEnd,\n                                variableValue\n                            );\n                        } else {\n                            textContent = textContent.replace(\n                                generateRegExpForReplacement(\n                                    this.templateSymbolStart +\n                                        variableName +\n                                        this.templateSymbolEnd\n                                ),\n                                variableValue\n                            );\n                        }\n                    }\n\n                    this.docxContent.addTextContent(contentPath, textContent);\n                }\n            });\n        }\n\n        return this;\n    }\n\n    /**\n     * Replaces text variables with WordFragments\n     *\n     * @param variables - Variables and values\n     * @param target - Target: document (default), header, footer, footnote, endnote, comment\n     * @param options - Replace variable WordFragment options\n     * @returns this\n     */\n    public replaceVariableWordFragment(\n        variables: Map<string, WordFragment>,\n        target: Element.Target = \"document\",\n        options: Element.OptionsReplaceVariableWordFragment = {}\n    ): this {\n        if (!this.preprocessed) {\n            this.repairVariables();\n        }\n\n        // apply default options\n        options = {\n            ...Element.defaultOptionsReplaceVariableWordFragment,\n            ...options,\n        };\n\n        const contents = this.docxContent.getContentPathsByType(target);\n\n        if (contents != null) {\n            contents.forEach(contentPath => {\n                let textContent = this.docxContent.getTextContent(contentPath);\n                if (textContent != null) {\n                    for (const [\n                        variableName,\n                        variableValue,\n                    ] of variables.entries()) {\n                        let xpathQuery =\n                            '//w:p[w:r/w:t[text()[contains(.,\"' +\n                            this.templateSymbolStart +\n                            applyHtmlSpecialChars(variableName) +\n                            this.templateSymbolEnd +\n                            '\")]]]';\n                        if (options.firstMatch) {\n                            xpathQuery = \"(\" + xpathQuery + \")[1]\";\n                        }\n                        if (textContent != null) {\n                            textContent =\n                                this.docxContent.replaceXmlWordFragment(\n                                    textContent,\n                                    xpathQuery,\n                                    this.templateSymbolStart +\n                                        applyHtmlSpecialChars(variableName) +\n                                        this.templateSymbolEnd,\n                                    variableValue,\n                                    options\n                                );\n\n                            this.insertExternalDependencies(\n                                variableValue,\n                                target\n                            );\n                        }\n                    }\n\n                    this.docxContent.addTextContent(contentPath, textContent);\n                }\n            });\n        }\n\n        return this;\n    }\n\n    /**\n     * Replaces text variables with WordML\n     *\n     * @param variables - Variables\n     * @param target - Target: document (default), header, footer, footnote, endnote, comment\n     * @param options - Replace variable WordMl\n     * @returns this\n     */\n    public replaceVariableWordMl(\n        variables: Map<string, WordFragment>,\n        target: Element.Target = \"document\",\n        options: Element.OptionsReplaceVariableWordMl = {}\n    ): this {\n        if (!this.preprocessed) {\n            this.repairVariables();\n        }\n\n        // apply default options\n        options = {\n            ...Element.defaultOptionsReplaceVariableWordMl,\n            ...options,\n        };\n\n        const optionsReplaceWordFragment: Element.OptionsReplaceVariableWordFragment =\n            {\n                firstMatch: options.firstMatch,\n                type: \"block\",\n            };\n\n        this.replaceVariableWordFragment(\n            variables,\n            target,\n            optionsReplaceWordFragment\n        );\n\n        return this;\n    }\n\n    /**\n     * Saves the DOCX\n     *\n     * @returns Promise ArrayBuffer\n     */\n    public async save(): Promise<ArrayBuffer> {\n        const zip = new Zip();\n\n        return zip.generateArrayBuffer(this.docxContent);\n    }\n\n    /**\n     * Sets RTL and bidi\n     *\n     * @param rtl - RTL\n     * @param bidi - Bidi\n     * @returns this\n     */\n    public setRtl(rtl: boolean = true, bidi: boolean = true): this {\n        this.rtl = rtl;\n        this.bidi = bidi;\n\n        return this;\n    }\n\n    /**\n     * Sets template symbols\n     *\n     * @param templateSymbolStart - Template symbol start\n     * @param templateSymbolEnd - Template symbol end\n     * @returns this\n     */\n    public setTemplateSymbols(\n        templateSymbolStart: string,\n        templateSymbolEnd?: string\n    ): this {\n        this.templateSymbolStart = templateSymbolStart;\n        // use the same symbol as templateSymbolStart if templateSymbolEnd is null\n        this.templateSymbolEnd = templateSymbolEnd ?? templateSymbolStart;\n\n        // remove spaces from template symbols\n        this.templateSymbolStart = this.templateSymbolStart.replace(/\\s+/g, \"\");\n        this.templateSymbolEnd = this.templateSymbolEnd.replace(/\\s+/g, \"\");\n\n        // preprocessed is false because the template symbols have changed\n        this.preprocessed = false;\n\n        return this;\n    }\n\n    /**\n     * Generates a paragraph\n     *\n     * @param content - Paragraph contents\n     * @param options - Paragraph options\n     * @returns Paragraph contents\n     */\n    protected generateParagraph(\n        content: string,\n        options: Element.OptionsParagraph = {}\n    ): string {\n        const paragraphElement = new Element.CreateParagraph(options);\n        content = paragraphElement.create(content);\n\n        return content;\n    }\n\n    /**\n     * Inserts default\n     *\n     * @param extension - File extension\n     * @param contentType - Content type\n     */\n    protected insertDefault(extension: string, contentType: string) {\n        this.docxContent.addXmlDefault(extension, contentType);\n\n        // keep external defaults to be added from WordFragments\n        this.externalDefaults.set(extension, contentType);\n    }\n\n    /**\n     * Inserts external dependencies\n     *\n     * @param element - Element content\n     * @param target - Target: document (default), header, footer, footnote, endnote, comment\n     */\n    protected insertExternalDependencies(\n        element: Element.CreateElement | WordFragment,\n        target: Element.Target = \"document\"\n    ) {\n        // insert external relationships\n        this.insertExternalRelationships(\n            element.getExternalRelationships(),\n            target\n        );\n\n        // insert defaults\n        for (const [extension, contentType] of element\n            .getExternalDefaults()\n            .entries()) {\n            this.insertDefault(extension, contentType);\n        }\n\n        // insert files\n        const files =\n            element instanceof Element.CreateElement\n                ? element.getFileContents()\n                : element.docxContent.getFileContents();\n        for (const [path, file] of files.entries()) {\n            this.docxContent.addFileContent(path, file);\n        }\n    }\n\n    /**\n     * Inserts external relationships\n     *\n     * @param externalRelationships - External relationships\n     * @param target - Target: document (default), header, footer, footnote, endnote, comment\n     */\n    protected insertExternalRelationships(\n        externalRelationships: Element.Relationship[],\n        target: Element.Target = \"document\"\n    ) {\n        externalRelationships.forEach(externalRelationship => {\n            this.docxContent.addXmlRelationship(externalRelationship, target);\n\n            // keep external relationships to be added from WordFragments\n            this.externalRelationships.push(externalRelationship);\n        });\n    }\n\n    /**\n     * Repairs variables in the template\n     */\n    protected repairVariables() {\n        // iterate all supported targets to repair the variables\n\n        Element.targetsInDocument.forEach(target => {\n            const contents = this.docxContent.getContentPathsByType(target);\n\n            if (contents != null) {\n                contents.forEach(contentPath => {\n                    let textContent =\n                        this.docxContent.getTextContent(contentPath);\n                    if (textContent != null) {\n                        textContent = this.docxContent.repairXmlVariables(\n                            textContent,\n                            this.templateSymbolStart,\n                            this.templateSymbolEnd\n                        );\n\n                        this.docxContent.addTextContent(\n                            contentPath,\n                            textContent\n                        );\n                    }\n                });\n            }\n        });\n\n        this.preprocessed = true;\n    }\n\n    /**\n     * Sets RTL values\n     *\n     * @param options - Paragraph options\n     * @returns Paragraph options\n     */\n    protected setRtlValues(\n        options: Element.OptionsParagraph\n    ): Element.OptionsParagraph {\n        if (options.bidi == null && this.bidi) {\n            options.bidi = this.bidi;\n        }\n        if (options.rtl == null && this.rtl) {\n            options.rtl = this.rtl;\n        }\n\n        return options;\n    }\n}\n\nexport { CreateDocx };\n","import { CreateDocx } from \"./create\";\nimport { Docx as DocxStructure } from \"../structure\";\n\n/**\n * WordFragment\n */\nclass WordFragment extends CreateDocx {\n    /**\n     * Constructor\n     */\n    constructor() {\n        // use a default DOCX structure to avoid preprocessing the default one\n        const wordFragmentDocxStructure = new DocxStructure();\n        super(wordFragmentDocxStructure);\n        this.isWordFragment = true;\n    }\n\n    /**\n     * To string implementation\n     *\n     * @returns XML\n     */\n    public toString(): string {\n        return this.xml;\n    }\n}\n\nexport { WordFragment };\n"],"names":["CreateElement","__publicField","options","optionsParagraph","element","CreateAltchunk","id","contents","newExternalRelationship","mimeType","fileExtension","CreateBookmark","name","CreateBreak","type","isGif","bytes","gif","dataView","width","getUint16","height","SOF0","SOF3","isJpeg","jpeg","offset","isValidOffsetToRead","marker","segmentLength","isPng","isAppleMinifiedPng","png","isAppleMinified","getUint32","isWebp","isVP8Lossy","isVP8Lossless","isVP8Extended","readUInt24LE","byte1","byte2","webp","maxSize","bits","bytesToRead","littleEndian","getImageDimensions","bytesContent","getImageMime","applyHtmlSpecialChars","content","convertMeasuringUnit","value","from","to","round","newValue","escapeRegExp","regex","generateRegExpForReplacement","getNamespace","namespaces","namespacesValue","newNamespace","normalizeColor","generateRandomNumber","min","max","exclude","isNewNumber","generateNewRandomNumber","newRandomNumber","generateUniqid","prefix","token1","find","list","predicate","ac","item","freeze","object","oc","assign","target","source","key","MIME_TYPE","NAMESPACE","uri","conventions","require$$0","notEmptyString","input","splitOnASCIIWhitespace","orderedSetReducer","current","toOrderedSet","arrayIncludes","copy","src","dest","p","_extends","Class","Super","pt","t","NodeType","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","NOT_FOUND_ERR","INUSE_ATTRIBUTE_ERR","DOMException","code","message","error","NodeList","index","isHTML","nodeFilter","buf","serializeToString","LiveNodeList","node","refresh","_updateLiveList","inc","ls","__set__","i","NamedNodeMap","_findNodeIndex","_addNamedNode","el","newAttr","oldAttr","doc","_onRemoveAttribute","_onAddAttribute","_removeNamedNode","attr","lastIndex","namespaceURI","localName","DOMImplementation","feature","version","qualifiedName","doctype","Document","root","publicId","systemId","DocumentType","Node","newChild","refChild","_insertBefore","oldChild","assertPreReplacementValidityInDocument","_removeChild","deep","cloneNode","child","next","map","n","_xmlEncoder","c","_visitNode","callback","ns","remove","_onUpdateChild","cs","parentNode","previous","hasValidParentNodeType","hasInsertableNodeType","isElementNode","isTextNode","isDocTypeNode","isElementInsertionPossible","parentChildNodes","docTypeNode","isElementReplacementPossible","hasElementChildThatIsNotChild","assertPreInsertionValidity1to5","parent","assertPreInsertionValidityInDocument","nodeChildNodes","nodeChildElements","parentElementChild","_inDocumentAssertion","cp","newFirst","newLast","pre","_appendSingleChild","importedNode","importNode","rtv","classNames","classNamesSet","base","nodeClassNames","matches","nodeClassNamesSet","tagName","Element","attrs","DocumentFragment","data","Text","Comment","CDATASection","ProcessingInstruction","Attr","EntityReference","pl","old","CharacterData","count","text","start","end","newText","newNode","Notation","Entity","XMLSerializer","isHtml","nodeSerializeToString","refNode","visibleNamespaces","needNamespaceDefine","addSerializedAttribute","len","nodeName","prefixedNodeName","defaultNS","ai","nsi","namespace","pubid","sysid","sub","node2","v","attrs2","getTextContent","dom","exports","nameStartChar","nameChar","tagNamePattern","S_TAG","S_ATTR","S_ATTR_SPACE","S_EQ","S_ATTR_NOQUOT_VALUE","S_ATTR_END","S_TAG_SPACE","S_TAG_CLOSE","ParseError","locator","XMLReader","defaultNSMap","entityMap","domBuilder","_copy","parse","defaultNSMapCopy","errorHandler","fixedFromCharCode","surrogate1","surrogate2","entityReplacer","a","k","appendText","xt","position","m","lineEnd","linePattern","lineStart","parseStack","closeMap","tagStart","config","localNSMap","endMatch","endIgnoreCaseMach","parseInstruction","parseDCC","ElementAttributes","currentNSMap","parseElementStartPart","fixSelfClosed","locator2","copyLocator","appendElement","parseHtmlSpecialContent","e","f","addAttribute","qname","startIndex","attrName","s","qName","nsp","nsPrefix","elStartEnd","elEndStart","pos","matchs","split","lastMatch","match","reg","sax","require$$1","entities","require$$2","require$$3","normalizeLineEndings","DOMParser","DOMHandler","buildErrorHandler","normalize","errorImpl","isCallback","build","fn","msg","_locator","ins","ch","length","chars","_toString","charNode","comm","impl","dt","l","hander","domParser","xpath","NAMESPACE_NODE_NODETYPE","isNil","x","isValidNodeType","nodeType","isNodeLike","curry","func","slice","totalargs","partial","args","forEach","xs","reduce","seed","acc","mapped","filter","filtered","includes","values","always","toString","join","wrap","pref","suf","str","prototypeConcat","sortNodes","nodes","reverse","XNodeSet","sorted","MAX_ARGUMENT_LENGTH","flatten","arr","result","chunk","varArgs","nextSource","nextKey","NodeTypes","XPathParser","rhs","OrOperation","AndOperation","EqualsOperation","NotEqualOperation","LessThanOperation","GreaterThanOperation","LessThanOrEqualOperation","GreaterThanOrEqualOperation","PlusOperation","MinusOperation","MultiplyOperation","DivOperation","ModOperation","UnaryMinusOperation","BarOperation","PathExpr","Step","NodeTest","Utilities","XString","XNumber","FunctionCall","LocationPath","VariableReference","s1","types","number","delimiter","literal","XPathException","last","res","tokenPos","state","tokenType","tokenValue","num","s_","XPath","setIfUnset","obj","prop","Expression","UnaryOperation","BinaryOperation","lhs","b","filterPreds","locpath","findRoot","applyPredicates","predicates","ctx","inNodes","pred","xpc","firstNode","ownerDoc","getPrefixForNamespaceNode","attrNode","nm","step","newNodes","nnm","st","XPathNamespace","outer","applyStepWithPredicates","REVERSE_AXES","applyStepToNodes","context","steps","locationPath","startNodes","XPathContext","filterResult","filterStr","elts","elt","j","an","abs","axis","nodetest","preds","members","ctor","newType","nodeTypes","stringVal","nNamespace","nLocalName","nameParts","parts","FunctionResolver","Operators","r","XBoolean","padSmallNumber","numberStr","exponent","padLargeNumber","zerosToAppend","strValue","AVLTree","ldepth","rdepth","lldepth","lrdepth","rrdepth","rldepth","nodeBefore","rightBefore","leftBefore","nodeOrder","n1","n2","cpos","d1","d2","m1","m2","n1Par","n2Par","n1isAttr","isAttributeLike","n2isAttr","cn","n1Compare","n2Compare","ret","nt","self","oInvert","lop","rop","o","vr","nr","fr","VariableResolver","NamespaceResolver","newProps","ln","thisArg","Functions","aname","ids","eNode","s2","eValue","eFrom","eTo","cMap","lang","val","qn","useDefault","first","del","getMessage","exception","err","XPathExpression","XPathNSResolverWrapper","XPathResult","NodeXPathNSResolver","installDOM3XPathSupport","shouldInstall","parser","defaultNSResolver","defaultFunctionResolver","defaultVariableResolver","makeNSResolverFromFunction","makeNSResolverFromObject","makeNSResolverFromMap","makeNSResolver","resolver","convertValue","makeEvaluator","arg","makeFunctionResolverFromFunction","found","makeFunctionResolverFromObject","makeFunctionResolverFromMap","makeFunctionResolver","makeVariableResolverFromFunction","makeVariableResolver","copyIfPresent","makeContext","evaluate","parsedExpression","evaluatorPrototype","parsed","single","mappings","expression","isArrayOfNodes","isNodeOfType","footerXml","headerXml","listBullets","listNumbering","numNumberingXml","numberingXml","relationshipXml","settingsTagsOrder","Docx","path","xml","targetContentsPath","nodeXpathQuery","targetContentPath","targetKey","targetContent","contentDom","nodesXpath","xpath.useNamespaces","childNodes","childNode","newChildNode","nodeXpathParent","reference","nodeXpathQuerySections","nodesXpathSection","typeReferences","referenceContent","referenceTarget","typeReference","rIdReference","targetContentsPathRels","targetKeyRels","targetContentRels","xmlDomRels","nodesXpathRels","referenceId","newRelationship","newReferenceNode","nodesTitlePg","newTitlePgNode","_a","extension","contentType","contentTypesContent","contentTypesDom","selectXpath","nodesXpathLowerCase","nodesXpathUpperCase","newDefaultNode","abstractNum","contentsNumbering","contentNumberingDom","numberingContents","partName","targetContentsPathApp","targetContentsPathCore","addProperty","tag","attributes","nodeProperty","attributeName","attributeValue","xmlDom","relationship","newRelationshipNode","settings","settingName","settingValue","nodeParent","newSettingNode","childNodesSettings","indexNewSetting","settingAdded","childNodeSettings","style","newStyleXml","pPrStyle","rPrStyle","styleContents","templateSymbolStart","templateSymbolEnd","regExprVariableSymbols","variables","matchPlaceholderExtract","matchesPlaceholders","matchPlaceholders","nodeXpathT","nodeXpathDocPr","titleAttribute","descrAttribute","inlineXmlContents","wordFragmentDom","nodeXpath","xpathQuery","xmlContents","rels","contentTypePaths","overrideContentType","filePath","internalFilePath","contentTypeContents","docxDefaultStructure","targetDefaultContent","contentDefaultDom","newStyleId","targetContentsPathDocument","targetDocumentKey","targetDocumentContent","nodesXpathDocument","conformanceAttribute","fileContent","fileContentReplaced","nodeXpathQuerySection","CreateSection","nodeXpathSection","nodePgSz","_b","_c","_d","nodePgMar","_e","_g","_f","_h","_j","_i","_k","_m","_l","_n","_p","_o","_q","_s","_r","_t","_v","_u","nodeBidi","_w","newNodeBidi","nodeCols","_x","newNodeCols","nodeRtlGutter","_y","newNodeRtlGutter","addType","_z","_A","newNodeType","nodePgSzParent","_B","nodesHeaderReference","nodeHeaderReference","nodesFooterReference","nodeFooterReference","query","newNodeP","templateSymbol","templateSymbolXPathQuery","symbolValue","templateSymbolXpathRegExpr","symbol","mathPlaceholderNoTag","elementImage","imageId","nodeBlip","nodeXfrm","nodeExt","docPrId","variable","items","wordFragmentValues","nodeIlvl","levelInitList","wordFragments","variablesRow","newNodeTNodes","newNodeT","WordFragment","keyWordFragment","variableValue","nodesR","newRContent","nodesRpR","nodeRpr","nodeRContent","newPContent","xmlDomContentP","domNode","level","listWordFragments","generateDefaultDocxStructure","DocxStructure","module","h","u","require","d","A","O","I","_","g","y","w","S","z","C","B","E","R","global","T","D","F","N","U","P","L","Z","W","M","H","G","K","Y","X","V","q","J","Zip","jszip","JSZip","docxTemplateStructure","documentZip","keyZip","fileValue","fileData","docxStructure","CreateRpr","CreateDateTime","rPrStyles","optionFormat","CreateImage","idDocPr","idLink","imageDimensions","extendTop","extendRight","extendBottom","extendLeft","drawingContents","newExternalRelationshipLink","CreateText","rPrElement","CreateLink","CreateParagraph","contentsParagraph","indentations","spacings","CreateList","textContent","optionsText","externalRelationship","paragraphContent","CreateNumpr","defaultBullets","defaultBulletsFonts","option","pPrElement","CreatePageNumber","pageMergeFormat","sdtContent","paragraphElement","sdtPrIdParent","sdtPrIdChild","pageString","ofString","CreateReference","preset","marginLandscape","marginPortrait","A4","A4landscape","A3","A3landscape","letter","letterLandscape","legal","legalLandscape","CreateSettings","CreateTable","optionsRowTable","optionsTable","resultLookVal","tblLookValHex","tblLookVal","gridColumnsNumber","maxLength","row","iGridCol","widthGridCol","itemRow","itemRowIndex","heightRow","elementIndex","cellWidth","cellBorder","cellColor","cellFitText","cellGridSpan","cellMargin","cellTextDirection","cellVerticalAlign","cellVMerge","cellWrap","elementWordFragment","CreateTableOfContents","tocId","legendOption","legendContent","targetsInDocument","defaultOptionsReplaceVariableExternalFile","defaultOptionsTemplate","defaultOptionsRemoveVariableImage","defaultOptionsRemoveVariableText","defaultOptionsReplaceVariableImage","defaultOptionsReplaceVariableList","defaultOptionsReplaceVariableTable","defaultOptionsReplaceVariableText","defaultOptionsReplaceVariableWordFragment","defaultOptionsReplaceVariableWordMl","CreateDocx","preprocessed","bookmarkId","bookmarkContent","Element.CreateBookmark","breakContent","Element.CreateBreak","dateTimeContent","Element.CreateDateTime","altchunkId","altchunkElement","Element.CreateAltchunk","altchunkContent","footers","footer","footerElement","Element.CreateReference","headers","header","headerElement","imageLinkId","imageElement","Element.CreateImage","imageContent","hyperlinkId","linkElement","Element.CreateLink","linkContent","numId","listElement","Element.CreateList","listContent","listOptions","pageNumberContent","Element.CreatePageNumber","sectionContents","sectionElement","Element.CreateSection","sectionContent","optionsSection","optionsRow","tableElement","Element.CreateTable","tableContent","tocContent","Element.CreateTableOfContents","textElement","Element.CreateText","wordFragment","wordMl","styles","Element.CreateRpr","numPrContent","Element.CreateNumpr","pPrStyles","Element.CreateParagraph","settingsContent","Element.CreateSettings","Element.targetsInDocument","variablesTarget","contentPath","variablesTargetContent","template","zip","Element.defaultOptionsTemplate","Element.defaultOptionsRemoveVariableImage","Element.defaultOptionsRemoveVariableText","variablesMap","Element.defaultOptionsReplaceVariableExternalFile","optionsReplaceWordFragment","Element.defaultOptionsReplaceVariableImage","variableName","optionsImage","replaceImage","Element.defaultOptionsReplaceVariableList","optionsReplaceVariableWordFragment","Element.defaultOptionsReplaceVariableTable","variablesTable","firstRow","rowVariable","indexRowVariable","Element.defaultOptionsReplaceVariableText","Element.defaultOptionsReplaceVariableWordFragment","Element.defaultOptionsReplaceVariableWordMl","rtl","bidi","files","Element.CreateElement","file","externalRelationships","wordFragmentDocxStructure"],"mappings":"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,cAAc,EAAE,EAAI,SAAUlB,EAAK,CACpC,OAAO,IAAIiB,EAAKA,EAAK,OAAQC,EAAS,SAAU,CAAA,CAAE,CAC9D,EACQ,KAAK,cAAc,EAAE,EAAI,SAAUlB,EAAK,CACpC,OAAO,IAAIwB,EAAkBxB,EAAI,CAAC,CAAC,CAC/C,EACQ,KAAK,cAAc,EAAE,EAAI,SAAUA,EAAK,CACpC,OAAOkB,EAAS,WAC5B,EACQ,KAAK,cAAc,EAAE,EAAI,SAAUlB,EAAK,CACpC,OAAO,IAAIkB,EAAS,kBAAkBlB,EAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CACtE,EACQ,KAAK,cAAc,EAAE,EAAI,SAAUA,EAAK,CACpC,OAAO,IAAIkB,EAAS,cAAclB,EAAI,CAAC,CAAC,CACpD,CACA,EAEID,EAAY,YAAc,CACtB,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,sCACR,EAEIA,EAAY,kBAAoB,CAC5B,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,wCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,wCACA,wCACA,wCACA,wCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,4DACA,uCACA,uCACA,uCACA,sCACR,EAEIA,EAAY,UAAY,CACpB,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gC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AAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OACLA,GAAK,OAAUA,GAAK,KAChC,EAEIuP,GAAU,aAAe,SAAUvP,EAAG,CAClC,OAAOA,GAAK,IAAUA,GAAK,IACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,IACLA,GAAK,IACLA,GAAK,IACLuP,GAAU,SAASvP,CAAC,GACpBA,GAAK,KAAUA,GAAK,KACpBA,GAAK,KAAUA,GAAK,KACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,M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,i/EACEC,GACF,8JACEC,GAAoB,CACtB,oBACA,SACA,SACA,8BACA,sBACA,+BACA,2BACA,4BACA,kCACA,mBACA,uBACA,qBACA,oBACA,kBACA,kBACA,yBACA,+BACA,+BACA,gBACA,uBACA,0BACA,uBACA,eACA,gBACA,qBACA,eACA,0BACA,wBACA,iBACA,cACA,iBACA,mBACA,oBACA,yBACA,uBACA,uBACA,mBACA,mBACA,mBACA,oBACA,2BACA,oBACA,uBACA,iBACA,kBACA,sBACA,sBACA,sBACA,wBACA,qBACA,2BACA,iCACA,+BACA,sCACA,oCACA,wCACA,gCACA,8BACA,uBACA,yBACA,4BACA,kBACA,4BACA,sBACA,uBACA,uBACA,+BACA,mBACA,uBACA,8BACA,6BACA,oBACA,sBACA,oBACA,gBACA,8BACA,iBACA,qBACA,eACA,cACA,WACA,YACA,UACA,WACA,qBACA,mBACA,kBACA,qBACA,+BACA,8BACA,iBACA,aACA,wBACA,iBACA,mBACA,kBACA,wBACA,kBACA,iBACJ,EC3EA,MAAMC,EAAK,CAwBP,aAAc,CApBJ1mB,GAAA,oBAKAA,GAAA,qBAKAA,GAAA,mBAKAA,GAAA,qBAMN,KAAK,YAAc,eACd,KAAA,iBAAmB,IACnB,KAAA,eAAiB,IACjB,KAAA,iBAAmB,GAC5B,CAOO,iBAA4C,CAC/C,OAAO,KAAK,YAChB,CAOO,eAAqC,CACxC,OAAO,KAAK,UAChB,CAOO,iBAAuC,CAC1C,OAAO,KAAK,YAChB,CAQO,eAAe2mB,EAAczjB,EAAsB,CACjD,KAAA,aAAa,IAAIyjB,EAAMzjB,CAAO,CACvC,CAQO,eAAeyjB,EAAczjB,EAAiB,CAC5C,KAAA,aAAa,IAAIyjB,EAAMzjB,CAAO,CACvC,CAOO,cAAc0jB,EAAa,CACxB,MAAAC,EAAqB,KAAK,sBAAsB,UAAU,EAChE,IAAIC,EAAiB,eAGjBD,GAAsB,MAAQA,EAAmB,OAAS,GAC1DA,EAAmB,QAA6BE,GAAA,CAC5C,MAAMC,EAAYD,EACZE,EAAgB,KAAK,eAAeD,CAAS,EACnD,GAAIC,GAAiB,KA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","x_google_ignoreList":[6,7,8,9,10,11,12,16]}