{"version":3,"file":"index-BmITyqn4.mjs","sources":["../../../node_modules/@shockpkg/archive-files/esm/types.mjs","../../../node_modules/@shockpkg/archive-files/esm/util.mjs","../../../node_modules/@shockpkg/archive-files/esm/archive.mjs","../../../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/@shockpkg/plist-dom/esm/util.mjs","../../../node_modules/@shockpkg/plist-dom/esm/options.mjs","../../../node_modules/@shockpkg/plist-dom/esm/value.mjs","../../../node_modules/@shockpkg/plist-dom/esm/value/boolean.mjs","../../../node_modules/@shockpkg/plist-dom/esm/value/data.mjs","../../../node_modules/@shockpkg/plist-dom/esm/value/integer.mjs","../../../node_modules/@shockpkg/plist-dom/esm/value/real.mjs","../../../node_modules/@shockpkg/plist-dom/esm/value/string.mjs","../../../node_modules/@shockpkg/plist-dom/esm/value/dict.mjs","../../../node_modules/@shockpkg/plist-dom/esm/value/array.mjs","../../../node_modules/@shockpkg/plist-dom/esm/plist.mjs","../../../node_modules/@shockpkg/hdi-mac/esm/mounter.mjs","../../../node_modules/@shockpkg/archive-files/esm/archive/hdi.mjs"],"sourcesContent":["export let PathType = /*#__PURE__*/function (PathType) {\n  PathType[\"DIRECTORY\"] = \"directory\";\n  PathType[\"FILE\"] = \"file\";\n  PathType[\"SYMLINK\"] = \"symlink\";\n  PathType[\"RESOURCE_FORK\"] = \"resource-fork\";\n  return PathType;\n}({});\n//# sourceMappingURL=types.mjs.map","import { constants as fsConstants } from 'node:fs';\nimport { chmod, lstat, open, readdir, readlink, symlink, utimes } from 'node:fs/promises';\nimport { join as pathJoin } from 'node:path';\nimport { Writable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport { PathType } from \"./types.mjs\";\nconst {\n  O_WRONLY,\n  O_SYMLINK\n} = fsConstants;\nexport const fsLchmodSupported = !!O_SYMLINK;\nexport const fsLutimesSupported = !!O_SYMLINK;\n\n/**\n * Normalize an entry path.\n *\n * @param path Path string.\n * @returns Normalized path.\n */\nexport function pathNormalize(path) {\n  return path.replace(/\\\\/g, '/').replace(/([^/])\\/+$/, '$1');\n}\n\n/**\n * Get path to the resource fork pseudo-file.\n *\n * @param path Path string.\n * @returns Resource fork pseudo-file path.\n */\nexport function pathResourceFork(path) {\n  return pathJoin(path, '..namedfork', 'rsrc');\n}\n\n/**\n * Get path type from stat object, or null if unsupported.\n *\n * @param stat Stats object.\n * @returns Path type.\n */\nexport function statToPathType(stat) {\n  if (stat.isSymbolicLink()) {\n    return PathType.SYMLINK;\n  }\n  if (stat.isDirectory()) {\n    return PathType.DIRECTORY;\n  }\n  if (stat.isFile()) {\n    return PathType.FILE;\n  }\n  return null;\n}\n\n/**\n * Get path type from stat mode, or null if unsupported.\n *\n * @param mode Stat mode.\n * @returns Path type.\n */\nexport function modeToPathType(mode) {\n  if (bitwiseAndEqual(mode, 0o0120000)) {\n    return PathType.SYMLINK;\n  }\n  if (bitwiseAndEqual(mode, 0o0040000)) {\n    return PathType.DIRECTORY;\n  }\n  if (bitwiseAndEqual(mode, 0o0100000)) {\n    return PathType.FILE;\n  }\n  return null;\n}\n\n/**\n * Get permission bits from mode value.\n *\n * @param mode Stat mode.\n * @returns Permission bits.\n */\nexport function modePermissionBits(mode) {\n  // eslint-disable-next-line no-bitwise\n  return mode & 0b111111111;\n}\n\n/**\n * Check if all the bits set.\n *\n * @param value Bits value.\n * @param mask Mask value.\n * @returns True of all the bits set.\n */\nexport function bitwiseAndEqual(value, mask) {\n  // eslint-disable-next-line no-bitwise\n  return (value & mask) === mask;\n}\n\n/**\n * Read a stream into a buffer.\n * Reading a stream into a buffer should be avoided where possible.\n * This is however useful for some small streams.\n *\n * @param stream Readable stream.\n * @returns Full buffer.\n */\nexport async function streamToBuffer(stream) {\n  const datas = [];\n  let size = 0;\n  await pipeline(stream, new Writable({\n    // eslint-disable-next-line jsdoc/require-jsdoc\n    write: (data, _encoding, cb) => {\n      datas.push(data);\n      size += data.length;\n      cb();\n    }\n  }));\n  return Buffer.concat(datas, size);\n}\n\n/**\n * Wrapper for lchmod, does nothing on unsupported platforms.\n *\n * @param path File path.\n * @param mode File mode.\n */\nexport async function fsLchmod(path, mode) {\n  // Skip if not supported.\n  if (!fsLchmodSupported) {\n    return;\n  }\n\n  // eslint-disable-next-line no-bitwise\n  const fd = await open(path, O_WRONLY | O_SYMLINK);\n  try {\n    await fd.chmod(mode);\n  } finally {\n    await fd.close();\n  }\n}\n\n/**\n * Wrapper for utimes.\n *\n * @param path File path.\n * @param atime Access time.\n * @param mtime Modification time.\n */\nexport async function fsUtimes(path, atime, mtime) {\n  await utimes(path, atime, mtime);\n}\n\n/**\n * Implementation of lutimes, does nothing on unsupported platforms.\n *\n * @param path File path.\n * @param atime Access time.\n * @param mtime Modification time.\n */\nexport async function fsLutimes(path, atime, mtime) {\n  // Skip if not supported.\n  if (!fsLutimesSupported) {\n    return;\n  }\n\n  // eslint-disable-next-line no-bitwise\n  const fd = await open(path, O_WRONLY | O_SYMLINK);\n  try {\n    await fd.utimes(atime, mtime);\n  } finally {\n    await fd.close();\n  }\n}\n\n/**\n * A readlink wrapper that returns raw link buffer.\n *\n * @param path Link path.\n * @returns Raw link.\n */\nexport async function fsReadlinkRaw(path) {\n  return readlink(path, 'buffer');\n}\n\n/**\n * Wrapper for symlink.\n *\n * @param path Path of symbolic link.\n * @param target Target of symbolic link.\n */\nexport async function fsSymlink(path, target) {\n  await symlink(target, path);\n}\n\n/**\n * Wrapper for chmod.\n *\n * @param path File path.\n * @param mode File mode.\n */\nexport async function fsChmod(path, mode) {\n  await chmod(path, mode);\n}\n\n/**\n * A readdir wrapper with consistent output.\n *\n * @param path Directory path.\n * @returns Directory listing.\n */\nexport async function fsReaddir(path) {\n  return (await readdir(path)).sort();\n}\n\n/**\n * An lstat wrapper.\n *\n * @param path Path string.\n * @returns Stat object.\n */\nexport async function fsLstat(path) {\n  return lstat(path);\n}\n\n/**\n * An lstat wrapper returning null if not exist.\n *\n * @param path Path string.\n * @returns Stat object.\n */\nexport async function fsLstatExists(path) {\n  try {\n    return await fsLstat(path);\n  } catch (err) {\n    const {\n      code\n    } = err;\n    if (code === 'ENOENT' || code === 'ENOTDIR') {\n      return null;\n    }\n    throw err;\n  }\n}\n\n/**\n * Walk file system path.\n * If callback returns false skips recursing a directory.\n * If callback returns null aborts walking.\n *\n * @param base Directory path.\n * @param itter Callback for each entry.\n * @param options Walk options.\n */\nexport async function fsWalk(base, itter, options = {}) {\n  const {\n    ignoreUnreadableDirectories\n  } = options;\n  const stack = (await fsReaddir(base)).reverse();\n  while (stack.length) {\n    const entry = stack.pop();\n    const fullPath = pathJoin(base, entry);\n    // eslint-disable-next-line no-await-in-loop\n    const stat = await fsLstat(fullPath);\n\n    // Callback, possibly stop recursion on directory.\n    // eslint-disable-next-line no-await-in-loop\n    const recurse = await itter(entry, stat);\n    if (recurse === null) {\n      break;\n    }\n    if (recurse === false || !stat.isDirectory()) {\n      continue;\n    }\n\n    // Recurse down.\n    let subs = [];\n    try {\n      // eslint-disable-next-line no-await-in-loop\n      subs = await fsReaddir(fullPath);\n    } catch (err) {\n      if (!(err && ignoreUnreadableDirectories && err.code === 'EACCES')) {\n        throw err;\n      }\n    }\n    for (let i = subs.length; i--;) {\n      stack.push(pathJoin(entry, subs[i]));\n    }\n  }\n}\n//# sourceMappingURL=util.mjs.map","/* eslint-disable max-classes-per-file */\n\nimport { createWriteStream } from 'node:fs';\nimport { mkdir, rm, writeFile } from 'node:fs/promises';\nimport { dirname, resolve } from 'node:path';\nimport { Readable, pipeline } from 'node:stream';\nimport { promisify } from 'node:util';\nconst pipe = promisify(pipeline);\nimport { PathType } from \"./types.mjs\";\nimport { fsChmod, fsLchmod, fsLstatExists, fsLutimes, fsSymlink, fsUtimes, modePermissionBits, pathNormalize, pathResourceFork, streamToBuffer } from \"./util.mjs\";\n/**\n * Entry object.\n */\nexport class Entry {\n  /**\n   * Entry archive.\n   */\n\n  /**\n   * Entry type.\n   */\n\n  /**\n   * Entry path.\n   */\n\n  /**\n   * Entry path, raw.\n   */\n\n  /**\n   * Entry size.\n   */\n\n  /**\n   * Entry size, compressed.\n   */\n\n  /**\n   * Entry mode.\n   */\n\n  /**\n   * Entry uid.\n   */\n\n  /**\n   * Entry gid.\n   */\n\n  /**\n   * Entry uname.\n   */\n\n  /**\n   * Entry gname.\n   */\n\n  /**\n   * Entry atime.\n   */\n\n  /**\n   * Entry mtime.\n   */\n\n  /**\n   * Read data.\n   */\n\n  /**\n   * Read rsrc.\n   */\n\n  /**\n   * Read symlink.\n   */\n\n  /**\n   * Entry triggering.\n   */\n  _triggering = false;\n\n  /**\n   * Entry triggered.\n   */\n  _triggered = false;\n\n  /**\n   * Entry extracted.\n   */\n  _extracted = false;\n\n  /**\n   * Entry constructor.\n   *\n   * @param info Info object.\n   */\n  constructor(info) {\n    this.archive = info.archive;\n    this.type = info.type;\n    this.pathRaw = info.pathRaw;\n    this.path = pathNormalize(info.pathRaw);\n    this.size = info.size ?? null;\n    this.sizeComp = info.sizeComp ?? null;\n    this.mode = info.mode ?? null;\n    this.uid = info.uid ?? null;\n    this.gid = info.gid ?? null;\n    this.uname = info.uname ?? null;\n    this.gname = info.gname ?? null;\n    this.atime = info.atime ?? null;\n    this.mtime = info.mtime ?? null;\n    this._readData = info.readData ?? null;\n    this._readRsrc = info.readRsrc ?? null;\n    this._readSymlink = info.readSymlink ?? null;\n  }\n\n  /**\n   * This entry path includes named volume.\n   *\n   * @returns Entry has volume name in path.\n   */\n  get hasNamedVolume() {\n    return this.archive.hasNamedVolumes;\n  }\n\n  /**\n   * This entry volume name, or null.\n   *\n   * @returns Entry path volume name.\n   */\n  get volumeName() {\n    if (this.hasNamedVolume) {\n      const {\n        path\n      } = this;\n      return path.slice(0, path.indexOf('/'));\n    }\n    return null;\n  }\n\n  /**\n   * This entry path without any possible volume name.\n   *\n   * @returns Entry path without the volume name.\n   */\n  get volumePath() {\n    const {\n      path\n    } = this;\n    if (this.hasNamedVolume) {\n      return path.slice(path.indexOf('/') + 1);\n    }\n    return path;\n  }\n\n  /**\n   * Read entry as stream, or null if nothing to read.\n   * Consuming function will need to wait for stream to close.\n   *\n   * @returns Readable stream or null if nothing to read.\n   */\n  async stream() {\n    this._beginExtract();\n    return this._stream();\n  }\n\n  /**\n   * Read entire entry into a Buffer.\n   *\n   * @returns Buffer or null if nothing to be read.\n   */\n  async read() {\n    this._beginExtract();\n    const stream = await this._stream();\n    return stream ? streamToBuffer(stream) : null;\n  }\n\n  /**\n   * Extract entry.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async extract(path, options = {}) {\n    this._beginExtract();\n    await this._extract(path, options);\n  }\n\n  /**\n   * Trigger on itterator function.\n   *\n   * @param itter Itterator function.\n   * @returns Return value.\n   */\n  async trigger(itter) {\n    let r;\n    if (this._triggered) {\n      throw new Error('Archive entry already triggered');\n    }\n    this._triggered = this._triggering = true;\n    try {\n      r = await itter(this);\n    } finally {\n      this._triggering = false;\n    }\n    return r;\n  }\n\n  /**\n   * Run again after reading.\n   *\n   * @param path Extract path, relative.\n   * @param pathFull An optional full path to be used.\n   * @param options Extract options.\n   */\n  async setAttributes(path, pathFull = null, options = {}) {\n    const pathSet = pathFull === null ? path : pathFull;\n    const {\n      ignorePermissions,\n      ignoreTimes\n    } = options;\n    const {\n      type,\n      mode,\n      atime,\n      mtime\n    } = this;\n    let link = false;\n    switch (type) {\n      case PathType.FILE:\n        {\n          break;\n        }\n      case PathType.RESOURCE_FORK:\n        {\n          break;\n        }\n      case PathType.DIRECTORY:\n        {\n          break;\n        }\n      case PathType.SYMLINK:\n        {\n          link = true;\n          break;\n        }\n      default:\n        {\n          throw new Error(`Unsupported path type: ${type}`);\n        }\n    }\n    const atimeSet = atime || mtime || null;\n    const mtimeSet = mtime || atime || null;\n    if (!ignorePermissions && mode !== null) {\n      const chmod = link ? fsLchmod : fsChmod;\n      const modeSet = modePermissionBits(mode);\n      await chmod(pathSet, modeSet);\n    }\n    if (!ignoreTimes && atimeSet && mtimeSet) {\n      const utimes = link ? fsLutimes : fsUtimes;\n      await utimes(pathSet, atimeSet, mtimeSet);\n    }\n  }\n\n  /**\n   * Method to call before begining extraction.\n   * Throws error if extraction already started or entry not active.\n   */\n  _beginExtract() {\n    if (!this._triggering) {\n      throw new Error('Archive entry is not active');\n    }\n    if (this._extracted) {\n      throw new Error('Archive entry can only be extracted once');\n    }\n    this._extracted = true;\n  }\n\n  /**\n   * Create an extract error for path that exists.\n   *\n   * @param path Extract path.\n   * @returns Error object.\n   */\n  _errorExtractPathExists(path) {\n    return new Error(`Extract path already exists: ${path}`);\n  }\n\n  /**\n   * Create an extract error for a resource fork not going to a file.\n   *\n   * @param path Extract path.\n   * @returns Error object.\n   */\n  _errorNoResourceFork(path) {\n    return new Error(`Extract path for resource fork not a file: ${path}`);\n  }\n\n  /**\n   * Extract entry.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async _extract(path, options) {\n    this.archive.afterReadSetAttributesRemove(path);\n    const {\n      type\n    } = this;\n    switch (type) {\n      case PathType.FILE:\n        {\n          await this._extractFile(path, options);\n          break;\n        }\n      case PathType.RESOURCE_FORK:\n        {\n          await this._extractResourceFork(path, options);\n          break;\n        }\n      case PathType.DIRECTORY:\n        {\n          await this._extractDirectory(path, options);\n          break;\n        }\n      case PathType.SYMLINK:\n        {\n          await this._extractSymlink(path, options);\n          break;\n        }\n      default:\n        {\n          throw new Error(`Unsupported path type: ${type}`);\n        }\n    }\n  }\n\n  /**\n   * Base function for extracting stream to a file.\n   *\n   * @param path Extract path.\n   * @param reader Reader function.\n   * @param options Extract options.\n   */\n  async _extractStreamToFile(path, reader, options) {\n    const {\n      replace\n    } = options;\n\n    // Check if something exists at path, optionally removing.\n    const stat = await fsLstatExists(path);\n    if (stat) {\n      // If replacing, then remove, else throw.\n      if (replace) {\n        await rm(path, {\n          recursive: true,\n          force: true\n        });\n      } else {\n        throw this._errorExtractPathExists(path);\n      }\n    } else {\n      await mkdir(dirname(path), {\n        recursive: true\n      });\n    }\n\n    // Write file.\n    await writeFile(path, Buffer.alloc(0));\n    const stream = await reader();\n    if (stream) {\n      await pipe(stream, createWriteStream(path));\n    }\n\n    // Set attributes.\n    await this.setAttributes(path, null, options);\n  }\n\n  /**\n   * Extract as a file.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async _extractFile(path, options) {\n    const readData = this._readData;\n    if (!readData) {\n      throw new Error('Internal error');\n    }\n    await this._extractStreamToFile(path, readData, options);\n  }\n\n  /**\n   * Extract as resource fork to an existing file.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async _extractResourceFork(path, options) {\n    const readRsrc = this._readRsrc;\n    if (!readRsrc) {\n      throw new Error('Internal error');\n    }\n\n    // Optionally extract as a data file.\n    if (options.resourceForkAsFile) {\n      await this._extractStreamToFile(path, readRsrc, options);\n      return;\n    }\n\n    // Check if file exists at path, else throw.\n    const stat = await fsLstatExists(path);\n    if (!stat || !stat.isFile()) {\n      throw this._errorNoResourceFork(path);\n    }\n\n    // Create resource fork path.\n    const pathRsrc = pathResourceFork(path);\n\n    // Write the resource fork.\n    const stream = await readRsrc();\n\n    // eslint-disable-next-line unicorn/prefer-ternary\n    if (stream) {\n      await pipe(stream, createWriteStream(pathRsrc));\n    } else {\n      await writeFile(pathRsrc, Buffer.alloc(0));\n    }\n\n    // Set attributes.\n    await this.setAttributes(path, null, options);\n  }\n\n  /**\n   * Extract as a directory.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async _extractDirectory(path, options) {\n    const {\n      replace\n    } = options;\n\n    // Check if something exists at path, else create.\n    const stat = await fsLstatExists(path);\n    if (stat) {\n      // If not directory, then remove and replace it, else throw.\n      if (!stat.isDirectory()) {\n        if (replace) {\n          await rm(path, {\n            recursive: true,\n            force: true\n          });\n          await mkdir(path, {\n            recursive: true\n          });\n        } else {\n          throw this._errorExtractPathExists(path);\n        }\n      }\n    } else {\n      await mkdir(path, {\n        recursive: true\n      });\n    }\n\n    // Set directory attributes after any children are added.\n    this.archive.afterReadSetAttributes(path, this, {\n      ...options\n    });\n  }\n\n  /**\n   * Extract as a symlink.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async _extractSymlink(path, options) {\n    const readSymlink = this._readSymlink;\n    if (!readSymlink) {\n      throw new Error('Internal error');\n    }\n    const {\n      replace,\n      symlinkAsFile\n    } = options;\n\n    // Check if something exists at path, optionally removing.\n    const stat = await fsLstatExists(path);\n    if (stat) {\n      // If replacing, then remove, else throw.\n      if (replace) {\n        await rm(path, {\n          recursive: true,\n          force: true\n        });\n      } else {\n        throw this._errorExtractPathExists(path);\n      }\n    } else {\n      // Ensure base directory exists.\n      await mkdir(dirname(path), {\n        recursive: true\n      });\n    }\n\n    // Read target.\n    const target = await readSymlink();\n\n    // Create link, optionally as a file.\n    // eslint-disable-next-line unicorn/prefer-ternary\n    if (symlinkAsFile) {\n      await writeFile(path, target);\n    } else {\n      await fsSymlink(path, target);\n    }\n\n    // Set attributes.\n    await this.setAttributes(path, null, options);\n  }\n\n  /**\n   * Read as stream.\n   *\n   * @returns Readable stream.\n   */\n  async _stream() {\n    const {\n      type\n    } = this;\n    switch (type) {\n      case PathType.FILE:\n        {\n          return this._streamFile();\n        }\n      case PathType.RESOURCE_FORK:\n        {\n          return this._streamResourceFork();\n        }\n      case PathType.DIRECTORY:\n        {\n          return this._streamDirectory();\n        }\n      case PathType.SYMLINK:\n        {\n          return this._streamSymlink();\n        }\n      default:\n        {\n          throw new Error(`Unsupported path type: ${type}`);\n        }\n    }\n  }\n\n  /**\n   * Read file as stream.\n   *\n   * @returns Readable stream.\n   */\n  async _streamFile() {\n    const readData = this._readData;\n    if (!readData) {\n      throw new Error('Internal error');\n    }\n    return readData();\n  }\n\n  /**\n   * Read resource fork as stream.\n   *\n   * @returns Readable stream.\n   */\n  async _streamResourceFork() {\n    const readRsrc = this._readRsrc;\n    if (!readRsrc) {\n      throw new Error('Internal error');\n    }\n    return readRsrc();\n  }\n\n  /**\n   * Read directory null stream.\n   *\n   * @returns Null stream.\n   */\n  async _streamDirectory() {\n    return null;\n  }\n\n  /**\n   * Read symlink as stream.\n   *\n   * @returns Readable stream.\n   */\n  async _streamSymlink() {\n    const readSymlink = this._readSymlink;\n    if (!readSymlink) {\n      throw new Error('Internal error');\n    }\n    const r = new Readable({\n      // eslint-disable-next-line jsdoc/require-jsdoc\n      read: () => {\n        readSymlink().then(d => {\n          r.push(d);\n          // eslint-disable-next-line unicorn/no-array-push-push\n          r.push(null);\n        }, err => {\n          r.emit('error', err);\n        });\n      }\n    });\n    return r;\n  }\n}\n\n/**\n * Archive object.\n */\nexport class Archive {\n  /**\n   * List of file extensions, or null.\n   */\n  static FILE_EXTENSIONS = null;\n\n  /**\n   * Archive has named volumes that each entry will be under.\n   */\n  static HAS_NAMED_VOLUMES = false;\n\n  /**\n   * Entry constructor.\n   */\n  Entry = Entry;\n\n  /**\n   * File path.\n   */\n\n  /**\n   * Flag for currently reading.\n   */\n  _reading = false;\n\n  /**\n   * Map of entries to set attributes on after reading.\n   */\n  _afterReadSetAttributes = null;\n\n  /**\n   * Archive constructor.\n   *\n   * @param path File path.\n   */\n  constructor(path) {\n    this.path = path;\n  }\n\n  /**\n   * List of file extensions used by this format.\n   *\n   * @returns List of file extensions.\n   */\n  get fileExtensions() {\n    return this.constructor.FILE_EXTENSIONS || null;\n  }\n\n  /**\n   * Archive has named volumes that each entry will be under.\n   *\n   * @returns Archive has named volumns.\n   */\n  get hasNamedVolumes() {\n    return this.constructor.HAS_NAMED_VOLUMES;\n  }\n\n  /**\n   * Add an instance to set attributes after the read finishes.\n   *\n   * @param path Path string.\n   * @param entry Entry instance.\n   * @param options Extract options.\n   */\n  afterReadSetAttributes(path, entry, options = {}) {\n    const afters = this._afterReadSetAttributes;\n    if (!afters) {\n      throw new Error('Archive after read callbacks can only be added while reading');\n    }\n    afters.set(resolve(path), {\n      path,\n      entry,\n      options\n    });\n  }\n\n  /**\n   * Remove an instance to set attributes after the read finishes.\n   *\n   * @param path Path string.\n   */\n  afterReadSetAttributesRemove(path) {\n    const afters = this._afterReadSetAttributes;\n    if (!afters) {\n      throw new Error('Archive after read callbacks can only be removed while reading');\n    }\n    afters.delete(resolve(path));\n  }\n\n  /**\n   * Read archive.\n   * If the itter callback returns false, reading ends.\n   * If the itter callback returns null, skip descent where available.\n   *\n   * @param itter Async callback for each archive entry.\n   */\n  async read(itter) {\n    if (this._reading) {\n      throw new Error('Archive already being read');\n    }\n    this._reading = true;\n\n    // Reset the after entries.\n    this._afterReadSetAttributes = new Map();\n\n    // Read and handle all the afters, reset after.\n    try {\n      await this._read(itter);\n      await this._afterReadSetAttributesTrigger();\n    } finally {\n      this._afterReadSetAttributes = null;\n      this._reading = false;\n    }\n  }\n\n  /**\n   * Run all after read set attributes.\n   */\n  async _afterReadSetAttributesTrigger() {\n    const afters = this._afterReadSetAttributes;\n    if (!afters) {\n      return;\n    }\n\n    // Prioritize by path length.\n    const resolves = [];\n    for (const [resolved] of afters) {\n      resolves.push(resolved);\n    }\n    resolves.sort((a, b) => b.length - a.length);\n    for (const resolved of resolves) {\n      const ent = afters.get(resolved);\n      if (!ent) {\n        throw new Error('Internal error');\n      }\n      const {\n        entry,\n        path,\n        options\n      } = ent;\n      // eslint-disable-next-line no-await-in-loop\n      await entry.setAttributes(path, resolved, options);\n    }\n  }\n\n  /**\n   * Read archive, class implementation.\n   * If the itter callback returns false, reading ends.\n   * If the itter callback returns null, skip descent where available.\n   *\n   * @param itter Async callback for each archive entry.\n   */\n}\n//# sourceMappingURL=archive.mjs.map","'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","import { DOMParser } from '@xmldom/xmldom';\nconst B6 = 0x3f;\nconst B8 = 0xff;\nconst C64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst C64M = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, 64, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51];\n/**\n * Decode an XML string.\n *\n * @param xml XML string.\n * @returns Decoded declaration, doctype, and document element.\n */\nexport function xmlDecode(xml) {\n  let declaration = null;\n  let doctype = null;\n  const errors = [];\n  const parser = new DOMParser({\n    locator: {},\n    errorHandler: {\n      /**\n       * Warning callback.\n       *\n       * @param e Error string.\n       */\n      warning: e => {\n        // Ignore warnings.\n      },\n      /**\n       * Error callback.\n       *\n       * @param e Error string.\n       */\n      error: e => {\n        errors.push(e);\n      },\n      /**\n       * Fatal error callback.\n       *\n       * @param e Error string.\n       */\n      fatalError: e => {\n        errors.push(e);\n      }\n    }\n  });\n  const doc = parser.parseFromString(xml, 'text/xml');\n  if (errors.length) {\n    throw new Error(`XML decode error: ${errors[0]}`);\n  }\n  const {\n    childNodes\n  } = doc;\n  const documentElement = doc.documentElement || null;\n  for (let i = 0, l = childNodes.length; i < l; i++) {\n    const childNode = childNodes[i];\n    if (childNode === documentElement) {\n      break;\n    }\n    const str = childNode.toString();\n    if (/^<\\?xml[^>]*\\?>$/.test(str)) {\n      declaration = str;\n    }\n    if (/^<!DOCTYPE[^>]*>$/.test(str)) {\n      doctype = str;\n    }\n  }\n  if (!documentElement) {\n    throw new Error('XML decode error: No document element');\n  }\n  return {\n    declaration,\n    doctype,\n    documentElement\n  };\n}\n\n/**\n * List XML element child elements.\n * Throws if non-whitespace nodes are found.\n *\n * @param element XML element.\n * @returns XML element list.\n */\nexport function xmlElementChildElements(element) {\n  const {\n    childNodes\n  } = element;\n  const r = [];\n  for (let i = 0, l = childNodes.length; i < l; i++) {\n    const childNode = childNodes[i];\n    if ('tagName' in childNode) {\n      r.push(childNode);\n      continue;\n    }\n    const {\n      nodeValue\n    } = childNode;\n    if (nodeValue && !/^\\s*$/.test(nodeValue)) {\n      throw new Error(`Found text children of: ${element.tagName}`);\n    }\n  }\n  return r;\n}\n\n/**\n * Get the XML element text node.\n * Returns null if none, throws if multiple elements.\n *\n * @param element XML element.\n * @returns XML text node list.\n */\nexport function xmlElementText(element) {\n  const {\n    childNodes\n  } = element;\n  let r = null;\n  for (let i = 0, l = childNodes.length; i < l; i++) {\n    if (i) {\n      throw new Error(`Multiple child elements in: ${element.tagName}`);\n    }\n    const childNode = childNodes[i];\n    if (!('tagName' in childNode) && 'data' in childNode && 'nodeValue' in childNode) {\n      r = childNode;\n    } else {\n      throw new Error(`Unexpected child element in: ${element.tagName}`);\n    }\n  }\n  return r;\n}\n\n/**\n * Assert XML element has no children.\n *\n * @param element XML element.\n * @param tagName XML element tag name.\n */\nexport function assertXmlTagName(element, tagName) {\n  const tn = element.tagName;\n  if (tn !== tagName) {\n    throw new Error(`Unexpected tagName: ${tagName}`);\n  }\n}\n\n/**\n * Assert XML element has no children.\n *\n * @param element XML element.\n */\nexport function assertNoXmlElementChildNodes(element) {\n  const {\n    childNodes\n  } = element;\n  if (childNodes.length) {\n    throw new Error(`Unexpected child nodes: ${element.tagName}`);\n  }\n}\n\n/**\n * Base64 encode function mirroring decode function.\n *\n * @param data Byte array.\n * @returns Base64 string.\n */\nexport function base64Encode(data) {\n  const l = data.length;\n  let r = '';\n  for (let i = 0; i < l;) {\n    const a = data[i++];\n    const b = i < l ? data[i++] : null;\n    const c = i < l ? data[i++] : null;\n    // eslint-disable-next-line no-bitwise\n    const o = a << 16 | (b || 0) << 8 | (c || 0);\n    r +=\n    // eslint-disable-next-line no-bitwise\n    C64[o >> 18] +\n    // eslint-disable-next-line no-bitwise\n    C64[o >> 12 & B6] +\n    // eslint-disable-next-line no-bitwise\n    C64[b === null ? 64 : o >> 6 & B6] +\n    // eslint-disable-next-line no-bitwise\n    C64[c === null ? 64 : o & B6];\n  }\n  return r;\n}\n\n/**\n * Base64 decode function that matches plist parsing behavior.\n *\n * @param base64 Base64 string.\n * @returns Byte array.\n */\nexport function base64Decode(base64) {\n  const l = base64.length;\n  const r = [];\n  OUTER: for (let a, b, c, d, m, z, i = 0; i < l;) {\n    for (;;) {\n      // eslint-disable-next-line unicorn/prefer-code-point\n      if ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n        a = m;\n        break;\n      }\n      if (i >= l) {\n        break OUTER;\n      }\n    }\n    for (;;) {\n      // eslint-disable-next-line unicorn/prefer-code-point\n      if ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n        b = m;\n        break;\n      }\n      if (i >= l) {\n        break OUTER;\n      }\n    }\n    for (;;) {\n      // eslint-disable-next-line unicorn/prefer-code-point\n      if ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n        c = m;\n        break;\n      }\n      if (i >= l) {\n        break OUTER;\n      }\n    }\n    for (;;) {\n      // eslint-disable-next-line unicorn/prefer-code-point\n      if ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n        d = m;\n        break;\n      }\n      if (i >= l) {\n        break OUTER;\n      }\n    }\n    // eslint-disable-next-line no-bitwise\n    z = (a & B6) << 18 | (b & B6) << 12 | (c & B6) << 6 | d & B6;\n    // eslint-disable-next-line default-case, no-nested-ternary\n    switch (c > B6 ? d > B6 ? 2 : 0 : d > B6 ? 1 : 0) {\n      case 0:\n        {\n          // eslint-disable-next-line no-bitwise\n          r.push(z >> 16 & B8, z >> 8 & B8, z & B8);\n          break;\n        }\n      case 1:\n        {\n          // eslint-disable-next-line no-bitwise\n          r.push(z >> 16 & B8, z >> 8 & B8);\n          break;\n        }\n      case 2:\n        {\n          // eslint-disable-next-line no-bitwise\n          r.push(z >> 16 & B8);\n          break;\n        }\n    }\n  }\n  return new Uint8Array(r);\n}\n//# sourceMappingURL=util.mjs.map","export const INDENT_STRING = '\\t';\nexport const NEWLINE_STRING = '\\n';\nexport const DATA_COLUMNS = 68;\nexport const INDENT_ROOT = false;\n//# sourceMappingURL=options.mjs.map","import { xmlDecode } from \"./util.mjs\";\n\n/**\n * Value object.\n */\nexport class Value {\n  /**\n   * Value type.\n   */\n\n  /**\n   * Tag names.\n   */\n\n  /**\n   * Value constructor.\n   */\n  constructor() {}\n\n  /**\n   * Value type.\n   *\n   * @returns Type string.\n   */\n  get type() {\n    return this.constructor.TYPE;\n  }\n\n  /**\n   * Cast to specific type or null.\n   *\n   * @param Type Type constructor.\n   * @returns This object or null.\n   */\n  castTo(Type) {\n    return this.type === Type.TYPE ? this : null;\n  }\n\n  /**\n   * Cast to specific type or throw.\n   *\n   * @param Type Type constructor.\n   * @returns This object.\n   */\n  castAs(Type) {\n    const casted = this.castTo(Type);\n    if (!casted) {\n      throw new Error(`Cannot cast type '${this.type}' to '${Type.TYPE}'`);\n    }\n    return casted;\n  }\n\n  /**\n   * Decode document from string.\n   *\n   * @param xml XML string.\n   */\n  fromXml(xml) {\n    const {\n      documentElement\n    } = xmlDecode(xml);\n    this.fromXmlElement(documentElement);\n  }\n\n  /**\n   * Decode value from element.\n   *\n   * @param element XML element.\n   */\n\n  /**\n   * Encode Value to string.\n   *\n   * @param options Options object.\n   * @param depth Indent depth.\n   * @returns Xml string.\n   */\n}\n//# sourceMappingURL=value.mjs.map","import { INDENT_STRING } from \"../options.mjs\";\nimport { assertNoXmlElementChildNodes, assertXmlTagName } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\n\n/**\n * ValueBoolean object.\n */\nexport class ValueBoolean extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'boolean';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['true', 'false'];\n\n  /**\n   * Value value.\n   */\n  value = false;\n\n  /**\n   * ValueBoolean constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = false) {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertNoXmlElementChildNodes(element);\n    switch (element.tagName) {\n      case 'true':\n        {\n          this.value = true;\n          return;\n        }\n      case 'false':\n        {\n          this.value = false;\n          return;\n        }\n      default:\n        {\n          throw assertXmlTagName(element, '');\n        }\n    }\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    return this.value ? `${p}<true/>` : `${p}<false/>`;\n  }\n}\n//# sourceMappingURL=boolean.mjs.map","import { DATA_COLUMNS, INDENT_STRING, NEWLINE_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, base64Decode, base64Encode, xmlElementText } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\n\n/**\n * ValueData object.\n */\nexport class ValueData extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'data';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['data'];\n\n  /**\n   * Value value.\n   */\n\n  /**\n   * ValueData constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = new Uint8Array(0)) {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'data');\n    const text = xmlElementText(element)?.nodeValue || '';\n    this.value = base64Decode(text);\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const n = options?.newlineString ?? NEWLINE_STRING;\n    const c = options?.dataColumns ?? DATA_COLUMNS;\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    let r = `${p}<data>`;\n    if (c > 0) {\n      for (let s = base64Encode(this.value); s; s = s.slice(c)) {\n        r += `${n}${p}${s.slice(0, c)}`;\n      }\n    } else {\n      r += `${n}${p}${base64Encode(this.value)}`;\n    }\n    r += `${n}${p}</data>`;\n    return r;\n  }\n}\n//# sourceMappingURL=data.mjs.map","import { INDENT_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, xmlElementText } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\nconst MAX_NUM = 0x1fffffffffffff;\n\n/**\n * Assert number is integer.\n *\n * @param value Number value.\n */\nfunction assertInteger(value) {\n  if (typeof value === 'number' && !Number.isInteger(value)) {\n    // eslint-disable-next-line unicorn/prefer-type-error\n    throw new Error(`Value not an integer: ${value}`);\n  }\n}\n\n/**\n * ValueInteger object.\n */\nexport class ValueInteger extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'integer';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['integer'];\n\n  /**\n   * Value value.\n   */\n  value = 0;\n\n  /**\n   * ValueInteger constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = 0) {\n    super();\n    assertInteger(value);\n    this.value = value;\n  }\n\n  /**\n   * Get value as BigInt.\n   *\n   * @returns Value as a BigInt.\n   */\n  asBigInt() {\n    return BigInt(this.value);\n  }\n\n  /**\n   * Get value as Number, possibly losing some precision.\n   *\n   * @returns Value as a Number.\n   */\n  asNumber() {\n    return Number(this.value);\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'integer');\n    const text = xmlElementText(element)?.nodeValue || '';\n    if (!/^[+-]?\\d+$/.test(text)) {\n      throw new Error(`Invalid integer data: ${text}`);\n    }\n    const num = +text;\n    this.value = num > MAX_NUM || num < -MAX_NUM ? BigInt(text) : num;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    const v = this.value;\n    assertInteger(v);\n    return `${p}<integer>${v}</integer>`;\n  }\n}\n//# sourceMappingURL=integer.mjs.map","import { INDENT_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, xmlElementText } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\n\n/**\n * ValueReal object.\n */\nexport class ValueReal extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'real';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['real'];\n\n  /**\n   * Value value.\n   */\n  value = 0;\n\n  /**\n   * ValueReal constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = 0) {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'real');\n    const text = xmlElementText(element)?.nodeValue || '';\n    if (!/^[+-]?(\\d+|\\d*\\.\\d+)$/.test(text)) {\n      throw new Error(`Invalid real data: ${text}`);\n    }\n    this.value = +text;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    const v = this.value;\n    return `${p}<real>${v}</real>`;\n  }\n}\n//# sourceMappingURL=real.mjs.map","import { INDENT_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, xmlElementText } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\n\n/**\n * ValueString object.\n */\nexport class ValueString extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'string';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['string'];\n\n  /**\n   * Value value.\n   */\n  value = '';\n\n  /**\n   * ValueString constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = '') {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'string');\n    this.value = xmlElementText(element)?.nodeValue || '';\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    const e = this.value.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;');\n    return `${p}<string>${e}</string>`;\n  }\n}\n//# sourceMappingURL=string.mjs.map","import { INDENT_STRING, NEWLINE_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, xmlElementChildElements, xmlElementText } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\nimport { ValueArray } from \"./array.mjs\";\nimport { ValueBoolean } from \"./boolean.mjs\";\nimport { ValueData } from \"./data.mjs\";\nimport { ValueInteger } from \"./integer.mjs\";\nimport { ValueReal } from \"./real.mjs\";\nimport { ValueString } from \"./string.mjs\";\nlet childTagNames;\n\n/**\n * ValueDict object.\n */\nexport class ValueDict extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'dict';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['dict'];\n\n  /**\n   * Child tag names.\n   *\n   * @returns Child tag names map.\n   */\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  static get CHILD_TAG_NAMES() {\n    if (!childTagNames) {\n      childTagNames = new Map();\n      for (const ValueType of [ValueArray, ValueBoolean, ValueData, ValueDict, ValueInteger, ValueReal, ValueString]) {\n        for (const t of ValueType.TAG_NAMES) {\n          childTagNames.set(t, ValueType);\n        }\n      }\n    }\n    return childTagNames;\n  }\n\n  /**\n   * Value value.\n   */\n  value = new Map();\n\n  /**\n   * ValueDict constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = new Map()) {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * Dictionary size.\n   *\n   * @returns The size.\n   */\n  get size() {\n    return this.value.size;\n  }\n\n  /**\n   * Check if key exists.\n   *\n   * @param key Dictionary key.\n   * @returns The value or null.\n   */\n  has(key) {\n    return this.value.has(key);\n  }\n\n  /**\n   * Get value for key or null if does not exist.\n   *\n   * @param key Dictionary key.\n   * @returns The value or null.\n   */\n  get(key) {\n    return this.value.get(key) || null;\n  }\n\n  /**\n   * Get value for key or throw.\n   *\n   * @param key Dictionary key.\n   * @returns The value.\n   */\n  getValue(key) {\n    const r = this.get(key);\n    if (!r) {\n      throw new Error(`Key is null: ${key}`);\n    }\n    return r;\n  }\n\n  /**\n   * Set value for key.\n   *\n   * @param key Dictionary key.\n   * @param value Value object.\n   */\n  set(key, value) {\n    this.value.set(key, value);\n  }\n\n  /**\n   * Delete value for key.\n   *\n   * @param key Dictionary key.\n   */\n  delete(key) {\n    this.value.delete(key);\n  }\n\n  /**\n   * Clear dictionary.\n   */\n  clear() {\n    this.value.clear();\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'dict');\n    const children = xmlElementChildElements(element);\n    const l = children.length;\n    if (l % 2) {\n      throw new Error(`Uneven number of child elements: ${l}`);\n    }\n    const v = new Map();\n    for (let i = 0; i < l; i += 2) {\n      const eK = children[i];\n      const eV = children[i + 1];\n      assertXmlTagName(eK, 'key');\n      const key = xmlElementText(eK)?.nodeValue || '';\n      const value = this.childFromXmlElement(eV);\n      v.set(key, value);\n    }\n    this.value = v;\n  }\n\n  /**\n   * Decode child element from XML element.\n   *\n   * @param element XML element.\n   * @returns Value element.\n   */\n  childFromXmlElement(element) {\n    const {\n      tagName\n    } = element;\n    const {\n      CHILD_TAG_NAMES\n    } = this.constructor;\n    const Value = CHILD_TAG_NAMES.get(tagName) || null;\n    if (!Value) {\n      throw new Error(`Unknown element type: ${tagName}`);\n    }\n    const r = new Value();\n    r.fromXmlElement(element);\n    return r;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const i = options?.indentString ?? INDENT_STRING;\n    const n = options?.newlineString ?? NEWLINE_STRING;\n    const p = i.repeat(depth);\n    const v = this.value;\n    if (!v.size) {\n      return `${p}<dict/>`;\n    }\n    const p2 = i.repeat(depth + 1);\n    let r = `${p}<dict>`;\n    for (const [key, val] of v) {\n      const e = key.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;');\n      r += `${n}${p2}<key>${e}</key>${n}${val.toXml(options, depth + 1)}`;\n    }\n    r += `${n}${p}</dict>`;\n    return r;\n  }\n}\n//# sourceMappingURL=dict.mjs.map","import { INDENT_STRING, NEWLINE_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, xmlElementChildElements } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\nimport { ValueBoolean } from \"./boolean.mjs\";\nimport { ValueData } from \"./data.mjs\";\nimport { ValueDict } from \"./dict.mjs\";\nimport { ValueInteger } from \"./integer.mjs\";\nimport { ValueReal } from \"./real.mjs\";\nimport { ValueString } from \"./string.mjs\";\nlet childTagNames;\n\n/**\n * ValueArray object.\n */\nexport class ValueArray extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'array';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['array'];\n\n  /**\n   * Child tag names.\n   *\n   * @returns Child tag names map.\n   */\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  static get CHILD_TAG_NAMES() {\n    if (!childTagNames) {\n      childTagNames = new Map();\n      for (const ValueType of [ValueArray, ValueBoolean, ValueData, ValueDict, ValueInteger, ValueReal, ValueString]) {\n        for (const t of ValueType.TAG_NAMES) {\n          childTagNames.set(t, ValueType);\n        }\n      }\n    }\n    return childTagNames;\n  }\n\n  /**\n   * Value value.\n   */\n  value = [];\n\n  /**\n   * ValueArray constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = []) {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * Array length.\n   *\n   * @returns The length.\n   */\n  get length() {\n    return this.value.length;\n  }\n\n  /**\n   * Get value at index or null if out of bounds.\n   *\n   * @param index Array index.\n   * @returns The value or null.\n   */\n  get(index) {\n    const {\n      value\n    } = this;\n    return index < this.length ? value[index] : null;\n  }\n\n  /**\n   * Get value at index or throw.\n   *\n   * @param index Array index.\n   * @returns The value.\n   */\n  getValue(index) {\n    const r = this.get(index);\n    if (!r) {\n      throw new Error(`Index out of bounds: ${index}`);\n    }\n    return r;\n  }\n\n  /**\n   * Set value at index.\n   *\n   * @param index Array index.\n   * @param value Value object.\n   */\n  set(index, value) {\n    this.value[index] = value;\n  }\n\n  /**\n   * Push values onto array.\n   *\n   * @param values Value objects.\n   */\n  push(...values) {\n    this.value.push(...values);\n  }\n\n  /**\n   * Pop value off array or null.\n   *\n   * @returns Value object or null.\n   */\n  pop() {\n    return this.value.pop() || null;\n  }\n\n  /**\n   * Pop value off array or throw.\n   *\n   * @returns Value object or null.\n   */\n  popValue() {\n    const r = this.pop();\n    if (!r) {\n      throw new Error('Cannot pop empty array');\n    }\n    return r;\n  }\n\n  /**\n   * Shift value off array or null.\n   *\n   * @returns Value object or null.\n   */\n  shift() {\n    return this.value.shift() || null;\n  }\n\n  /**\n   * Pop value off array or throw.\n   *\n   * @returns Value object or null.\n   */\n  shiftValue() {\n    const r = this.shift();\n    if (!r) {\n      throw new Error('Cannot shift empty array');\n    }\n    return r;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'array');\n    const children = xmlElementChildElements(element);\n    this.value = children.map(el => this.childFromXmlElement(el));\n  }\n\n  /**\n   * Decode child element from XML element.\n   *\n   * @param element XML element.\n   * @returns Value element.\n   */\n  childFromXmlElement(element) {\n    const {\n      tagName\n    } = element;\n    const {\n      CHILD_TAG_NAMES\n    } = this.constructor;\n    const Value = CHILD_TAG_NAMES.get(tagName) || null;\n    if (!Value) {\n      throw new Error(`Unknown element type: ${tagName}`);\n    }\n    const r = new Value();\n    r.fromXmlElement(element);\n    return r;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const n = options?.newlineString ?? NEWLINE_STRING;\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    const v = this.value;\n    if (!v.length) {\n      return `${p}<array/>`;\n    }\n    let r = `${p}<array>`;\n    for (const el of v) {\n      r += `${n}${el.toXml(options, depth + 1)}`;\n    }\n    r += `${n}${p}</array>`;\n    return r;\n  }\n}\n//# sourceMappingURL=array.mjs.map","import { INDENT_ROOT, NEWLINE_STRING } from \"./options.mjs\";\nimport { xmlDecode, xmlElementChildElements } from \"./util.mjs\";\nimport { ValueDict } from \"./value/dict.mjs\";\nconst xmlDeclaration = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>';\nconst xmlDoctype = '<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">';\n\n/**\n * Plist object.\n */\nexport class Plist {\n  /**\n   * Default XML declaration.\n   */\n  static XML_DECLARATION = xmlDeclaration;\n\n  /**\n   * Default XML doctype.\n   */\n  static XML_DOCTYPE = xmlDoctype;\n\n  /**\n   * XML declaration.\n   */\n  xmlDeclaration = xmlDeclaration;\n\n  /**\n   * XML doctype.\n   */\n  xmlDoctype = xmlDoctype;\n\n  /**\n   * Value element.\n   */\n  value = null;\n\n  /**\n   * Plist constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = null) {\n    this.value = value;\n  }\n\n  /**\n   * Get value or throw if null.\n   *\n   * @returns The value.\n   */\n  getValue() {\n    const {\n      value\n    } = this;\n    if (!value) {\n      throw new Error('Value is null');\n    }\n    return value;\n  }\n\n  /**\n   * Cast to specific type or null.\n   *\n   * @param Type Type constructor.\n   * @returns The object or null.\n   */\n  valueCastTo(Type) {\n    const {\n      value\n    } = this;\n    return value ? value.castTo(Type) : null;\n  }\n\n  /**\n   * Cast to specific type or throw.\n   *\n   * @param Type Type constructor.\n   * @returns The object.\n   */\n  valueCastAs(Type) {\n    const casted = this.valueCastTo(Type);\n    if (!casted) {\n      throw new Error(`Cannot cast value to type '${Type.TYPE}'`);\n    }\n    return casted;\n  }\n\n  /**\n   * Decode document from string.\n   *\n   * @param xml XML string.\n   */\n  fromXml(xml) {\n    const {\n      declaration,\n      doctype,\n      documentElement\n    } = xmlDecode(xml);\n    this.fromXmlElement(documentElement, declaration, doctype);\n  }\n\n  /**\n   * Decode document from element.\n   *\n   * @param element XML element.\n   * @param declaration XML declaration.\n   * @param doctype XML doctype.\n   */\n  fromXmlElement(element, declaration = null, doctype = null) {\n    const {\n      tagName\n    } = element;\n    if (tagName !== 'plist') {\n      throw new Error(`Unexpected root plist tag name: ${tagName}`);\n    }\n    const childElements = xmlElementChildElements(element);\n    const childElementsL = childElements.length;\n    if (childElementsL > 1) {\n      throw new Error(`Multiple root plist child tag: ${childElementsL}`);\n    }\n    this.value = childElementsL ? this.childFromXmlElement(childElements[0]) : null;\n    this.xmlDeclaration = declaration || '';\n    this.xmlDoctype = doctype || '';\n  }\n\n  /**\n   * Decode child element from XML element.\n   *\n   * @param element XML element.\n   * @returns Value element.\n   */\n  childFromXmlElement(element) {\n    const a = new ValueDict();\n    return a.childFromXmlElement(element);\n  }\n\n  /**\n   * Encode documents to string.\n   *\n   * @param options Options object.\n   * @returns XML string.\n   */\n  toXml(options = null) {\n    const ir = options?.indentRoot ?? INDENT_ROOT;\n    const n = options?.newlineString ?? NEWLINE_STRING;\n    const v = this.value;\n    return [...[this.xmlDeclaration, this.xmlDoctype].filter(Boolean), '<plist version=\"1.0\">', ...(v ? [v.toXml(options, ir ? 1 : 0)] : []), '</plist>', ''].join(n);\n  }\n}\n//# sourceMappingURL=plist.mjs.map","import { spawn, spawnSync } from 'node:child_process';\nimport { Plist, ValueDict, ValueArray, ValueString, ValueBoolean } from '@shockpkg/plist-dom';\n/**\n * Mounter object.\n */\nexport class Mounter {\n  /**\n   * The path to hdiutil.\n   */\n\n  /**\n   * Mounter constructor.\n   *\n   * @param options Options object.\n   */\n  constructor(options = null) {\n    this.hdiutil = (options ? options.hdiutil : null) || 'hdiutil';\n  }\n\n  /**\n   * Attach a disk image.\n   *\n   * @param file Path to disk image.\n   * @param options Options object.\n   * @param ejectOnExit Eject on exit options, or null.\n   * @returns Info object.\n   */\n  async attach(file, options = null, ejectOnExit = null) {\n    const devices = await this._runAttach(this._argsAttach(file, options));\n    const {\n      eject,\n      ejectSync\n    } = this._createEjects(devices);\n    return {\n      devices,\n      eject,\n      ejectSync\n    };\n  }\n\n  /**\n   * Attach a disk image.\n   *\n   * @param file Path to disk image.\n   * @param options Options object.\n   * @param ejectOnExit Eject on exit options, or null.\n   * @returns Info object.\n   */\n  attachSync(file, options = null, ejectOnExit = null) {\n    // eslint-disable-next-line no-sync\n    const devices = this._runAttachSync(this._argsAttach(file, options));\n    const {\n      eject,\n      ejectSync\n    } = this._createEjects(devices);\n    return {\n      devices,\n      eject,\n      ejectSync\n    };\n  }\n\n  /**\n   * Eject a disk image.\n   *\n   * @param file Path to device file or volume mount point.\n   * @param options Options object.\n   */\n  async eject(file, options = null) {\n    await this._runEject(this._argsEject(file, options));\n  }\n\n  /**\n   * Eject a disk image.\n   *\n   * @param file Path to device file or volume mount point.\n   * @param options Options object.\n   */\n  ejectSync(file, options = null) {\n    // eslint-disable-next-line no-sync\n    this._runEjectSync(this._argsEject(file, options));\n  }\n\n  /**\n   * Create args for attach.\n   *\n   * @param file Path to disk image.\n   * @param options Options object.\n   * @returns Argument list.\n   */\n  _argsAttach(file, options = null) {\n    const args = ['attach', '-plist'];\n    if (options) {\n      if (options.readonly) {\n        args.push('-readonly');\n      }\n      if (options.nobrowse) {\n        args.push('-nobrowse');\n      }\n    }\n    args.push(this._fileArg(file));\n    return args;\n  }\n\n  /**\n   * Create args for eject.\n   *\n   * @param file Path to device file or volume mount point.\n   * @param options Options object.\n   * @returns Argument list.\n   */\n  _argsEject(file, options = null) {\n    const args = ['eject'];\n    if (options && options.force) {\n      args.push('-force');\n    }\n    args.push(this._fileArg(file));\n    return args;\n  }\n\n  /**\n   * Run hdiutil attach command, returning the devices list on success.\n   *\n   * @param args CLI args.\n   * @returns Devices list.\n   */\n  async _runAttach(args) {\n    const stdouts = [];\n    const proc = spawn(this.hdiutil, args);\n    proc.stdout.on('data', data => {\n      stdouts.push(data);\n    });\n    const code = await new Promise((resolve, reject) => {\n      proc.once('exit', resolve);\n      proc.once('error', reject);\n    });\n    if (code) {\n      throw new Error(`Attach failed: hdiutil exit code: ${code}`);\n    }\n    return this._parseDevices(Buffer.concat(stdouts).toString());\n  }\n\n  /**\n   * Run hdiutil attach command, returning the devices list on success.\n   *\n   * @param args CLI args.\n   * @returns Devices list.\n   */\n  _runAttachSync(args) {\n    const {\n      status,\n      error,\n      stdout\n    } = spawnSync(this.hdiutil, args);\n    if (error) {\n      throw error;\n    }\n    if (status) {\n      throw new Error(`Attach failed: hdiutil exit code: ${status}`);\n    }\n    return this._parseDevices(stdout.toString());\n  }\n\n  /**\n   * Run hdiutil eject command.\n   *\n   * @param args CLI args.\n   */\n  async _runEject(args) {\n    const proc = spawn(this.hdiutil, args);\n    const status = await new Promise((resolve, reject) => {\n      proc.once('exit', resolve);\n      proc.once('error', reject);\n    });\n    if (status) {\n      throw new Error(`Eject failed: hdiutil exit code: ${status}`);\n    }\n  }\n\n  /**\n   * Run hdiutil eject command.\n   *\n   * @param args CLI args.\n   */\n  _runEjectSync(args) {\n    const {\n      status,\n      error\n    } = spawnSync(this.hdiutil, args);\n    if (error) {\n      throw error;\n    }\n    if (status) {\n      throw new Error(`Eject failed: hdiutil exit code: ${status}`);\n    }\n  }\n\n  /**\n   * Create file argument from file path.\n   *\n   * @param file File path.\n   * @returns A path for use as argument.\n   */\n  _fileArg(file) {\n    // Make sure it will not be recognized as option argument.\n    return file.startsWith('-') ? `./${file}` : file;\n  }\n\n  /**\n   * Parse devices plist into devices list.\n   *\n   * @param xml XML plist.\n   * @returns Devices list.\n   */\n  _parseDevices(xml) {\n    const plist = new Plist();\n    plist.fromXml(xml);\n    const systemEntities = plist.valueCastAs(ValueDict).getValue('system-entities').castAs(ValueArray);\n    const r = [];\n    for (const value of systemEntities.value) {\n      const dict = value.castAs(ValueDict);\n      const devEntry = dict.getValue('dev-entry').castAs(ValueString).value;\n      const potentiallyMountable = dict.getValue('potentially-mountable').castAs(ValueBoolean).value;\n      const contentHint = dict.get('content-hint');\n      const unmappedContentHint = dict.get('unmapped-content-hint');\n      const volumeKind = dict.get('volume-kind');\n      const mountPoint = dict.get('mount-point');\n      const device = {\n        devEntry,\n        potentiallyMountable\n      };\n      if (contentHint) {\n        device.contentHint = contentHint.castAs(ValueString).value;\n      }\n      if (unmappedContentHint) {\n        device.unmappedContentHint = unmappedContentHint.castAs(ValueString).value;\n      }\n      if (volumeKind) {\n        device.volumeKind = volumeKind.castAs(ValueString).value;\n      }\n      if (mountPoint) {\n        device.mountPoint = mountPoint.castAs(ValueString).value;\n      }\n      r.push(device);\n    }\n    return r;\n  }\n\n  /**\n   * Find the root device, null on empty list.\n   *\n   * @param devices Device list.\n   * @returns Root device or null if an empty list.\n   */\n  _findRootDevice(devices) {\n    let r = null;\n    for (const device of devices) {\n      if (r === null || r.devEntry.length > device.devEntry.length) {\n        r = device;\n      }\n    }\n    return r;\n  }\n\n  /**\n   * Create ejects callback from a list of devices.\n   *\n   * @param devices Device list.\n   * @param ejectOnExit Eject on exit options, or null.\n   * @returns Callback function.\n   */\n  _createEjects(devices, ejectOnExit = null) {\n    // Find the root device, to use to eject (none possible in theory).\n    let devEntry = this._findRootDevice(devices)?.devEntry;\n    let shutdown = null;\n    const info = {\n      /**\n       * The eject callback function.\n       *\n       * @param options Eject options.\n       */\n      eject: async (options = null) => {\n        if (devEntry) {\n          await this.eject(devEntry, options);\n          devEntry = '';\n          if (shutdown) {\n            process.off('exit', shutdown);\n          }\n        }\n      },\n      /**\n       * The eject callback function.\n       *\n       * @param options Eject options.\n       */\n      ejectSync: (options = null) => {\n        if (devEntry) {\n          // eslint-disable-next-line no-sync\n          this.ejectSync(devEntry, options);\n          devEntry = '';\n          if (shutdown) {\n            process.off('exit', shutdown);\n          }\n        }\n      }\n    };\n    if (ejectOnExit) {\n      /**\n       * Attempt to auto-eject on normal shutdown.\n       * Does not catch signals (no clean way in a library).\n       * Users can explicitly call process.exit() on signals to use this.\n       */\n      shutdown = () => {\n        // eslint-disable-next-line no-sync\n        info.ejectSync(ejectOnExit);\n      };\n      process.once('exit', shutdown);\n    }\n    return info;\n  }\n}\n//# sourceMappingURL=mounter.mjs.map","/* eslint-disable max-classes-per-file */\n\nimport { createReadStream } from 'node:fs';\nimport { basename, join as pathJoin } from 'node:path';\nimport { Mounter } from '@shockpkg/hdi-mac';\nimport { Archive, Entry } from \"../archive.mjs\";\nimport { PathType } from \"../types.mjs\";\nimport { fsLstatExists, fsReadlinkRaw, fsWalk, pathNormalize, pathResourceFork, statToPathType } from \"../util.mjs\";\nconst walkOpts = {\n  ignoreUnreadableDirectories: true\n};\nconst ejectOptions = {\n  force: true\n};\n/**\n * EntryHdi object.\n */\nexport class EntryHdi extends Entry {\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n  sizeComp = null;\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n  uname = null;\n\n  /**\n   * @inheritdoc\n   */\n  gname = null;\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * EntryHdi constructor.\n   *\n   * @param info Info object.\n   */\n  constructor(info) {\n    super(info);\n    this.archive = info.archive;\n    this.size = info.size;\n    this.mode = info.mode;\n    this.uid = info.uid;\n    this.gid = info.gid;\n    this.atime = info.atime;\n    this.mtime = info.mtime;\n  }\n\n  /**\n   * Get the path of resource psuedo-file, raw.\n   *\n   * @returns Path string.\n   */\n  get rsrcPathRaw() {\n    return pathResourceFork(this.pathRaw);\n  }\n\n  /**\n   * Get the path of resource psuedo-file, normalized.\n   *\n   * @returns Path string.\n   */\n  get rsrcPath() {\n    return pathNormalize(pathResourceFork(this.path));\n  }\n}\n\n/**\n * ArchiveHdi object.\n */\nexport class ArchiveHdi extends Archive {\n  /**\n   * @inheritdoc\n   */\n  static FILE_EXTENSIONS = ['.dmg', '.iso', '.cdr'];\n\n  /**\n   * @inheritdoc\n   */\n  static HAS_NAMED_VOLUMES = true;\n\n  /**\n   * @inheritdoc\n   */\n  Entry = EntryHdi;\n\n  /**\n   * Mounter, Mac.\n   */\n  mounterMac = new Mounter();\n\n  /**\n   * Hide mounted disk image from the file explorers.\n   */\n  nobrowse = false;\n\n  /**\n   * ArchiveHdi constructor.\n   *\n   * @param path File path.\n   */\n  constructor(path) {\n    super(path);\n  }\n\n  /**\n   * @inheritdoc\n   */\n  async read(itter) {\n    await super.read(itter);\n  }\n\n  /**\n   * @inheritdoc\n   */\n  async _read(itter) {\n    const {\n      mounterMac,\n      nobrowse\n    } = this;\n\n    /**\n     * Each itterator.\n     *\n     * @param pathFull Full path.\n     * @param pathRaw Raw path.\n     * @param stat Stat object.\n     * @returns Recursion hint.\n     */\n    const each = async (pathFull, pathRaw, stat) => {\n      const type = statToPathType(stat);\n      if (type === null) {\n        return true;\n      }\n      const {\n        size,\n        mode,\n        uid,\n        gid,\n        atime,\n        mtime\n      } = stat;\n      const readData = type === PathType.FILE ? async () => createReadStream(pathFull) : null;\n      const readSymlink = type === PathType.SYMLINK ? async () => fsReadlinkRaw(pathFull) : null;\n      const entry = new this.Entry({\n        archive: this,\n        type,\n        pathRaw,\n        size,\n        mode,\n        uid,\n        gid,\n        atime,\n        mtime,\n        readData,\n        readSymlink\n      });\n      const ret = await entry.trigger(itter);\n      if (ret === false) {\n        return null;\n      }\n      if (ret === null) {\n        return false;\n      }\n      if (type === PathType.FILE) {\n        const rsrcPathFull = pathResourceFork(pathFull);\n        const rsrcStat = await fsLstatExists(rsrcPathFull);\n        if (rsrcStat) {\n          const sizeRsrc = rsrcStat.size;\n\n          /**\n           * Read RSRC.\n           *\n           * @returns Read stream.\n           */\n          const readRsrc = async () => createReadStream(rsrcPathFull);\n          const entryRsrc = new this.Entry({\n            archive: this,\n            type: PathType.RESOURCE_FORK,\n            pathRaw,\n            size: sizeRsrc,\n            mode,\n            uid,\n            gid,\n            atime,\n            mtime,\n            readRsrc\n          });\n          const ret = await entryRsrc.trigger(itter);\n          if (ret === false) {\n            return null;\n          }\n          if (ret === null) {\n            return false;\n          }\n        }\n      }\n      return true;\n    };\n\n    // Using auto-eject on normal exit option.\n    const info = await mounterMac.attach(this.path, {\n      nobrowse,\n      readonly: true\n    }, ejectOptions);\n\n    // Eject device when done.\n    try {\n      for (const device of info.devices) {\n        const {\n          mountPoint\n        } = device;\n        if (!mountPoint) {\n          continue;\n        }\n        const volumeName = basename(mountPoint);\n        // eslint-disable-next-line no-await-in-loop\n        await fsWalk(mountPoint, async (pathRel, stat) => {\n          const pathFull = pathJoin(mountPoint, pathRel);\n          const pathRaw = pathJoin(volumeName, pathRel);\n          return each(pathFull, pathRaw, stat);\n        }, walkOpts);\n      }\n    } finally {\n      await info.eject(ejectOptions);\n    }\n  }\n}\n//# sourceMappingURL=hdi.mjs.map"],"names":["PathType","O_WRONLY","O_SYMLINK","fsConstants","fsLchmodSupported","fsLutimesSupported","pathNormalize","path","pathResourceFork","pathJoin","statToPathType","stat","modePermissionBits","mode","streamToBuffer","stream","datas","size","pipeline","Writable","data","_encoding","cb","fsLchmod","fd","open","fsUtimes","atime","mtime","utimes","fsLutimes","fsReadlinkRaw","readlink","fsSymlink","target","symlink","fsChmod","chmod","fsReaddir","readdir","fsLstat","lstat","fsLstatExists","err","code","fsWalk","base","itter","options","ignoreUnreadableDirectories","stack","entry","fullPath","recurse","subs","i","pipe","promisify","Entry","info","r","pathFull","pathSet","ignorePermissions","ignoreTimes","type","link","atimeSet","mtimeSet","modeSet","reader","replace","rm","mkdir","dirname","writeFile","createWriteStream","readData","readRsrc","pathRsrc","readSymlink","symlinkAsFile","Readable","d","Archive","afters","resolve","resolves","resolved","b","ent","find","list","predicate","ac","item","freeze","object","oc","assign","source","key","MIME_TYPE","value","NAMESPACE","uri","conventions","require$$0","notEmptyString","input","splitOnASCIIWhitespace","orderedSetReducer","current","element","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","message","error","NodeList","index","isHTML","nodeFilter","buf","serializeToString","LiveNodeList","node","refresh","_updateLiveList","inc","ls","__set__","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","prefix","_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","id","rtv","classNames","classNamesSet","nodeClassNames","matches","nodeClassNamesSet","tagName","Element","attrs","DocumentFragment","Text","Comment","CDATASection","ProcessingInstruction","name","Attr","EntityReference","pl","old","CharacterData","offset","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","mimeType","DOMHandler","buildErrorHandler","normalize","errorImpl","isCallback","build","fn","msg","_locator","ins","ch","length","chars","_toString","charNode","comm","impl","dt","l","hander","domParser","lib","B6","B8","C64","C64M","xmlDecode","xml","declaration","errors","childNodes","documentElement","childNode","str","xmlElementChildElements","nodeValue","xmlElementText","assertXmlTagName","assertNoXmlElementChildNodes","base64Encode","o","base64Decode","base64","OUTER","z","INDENT_STRING","NEWLINE_STRING","DATA_COLUMNS","INDENT_ROOT","Value","Type","casted","ValueBoolean","depth","ValueData","MAX_NUM","assertInteger","ValueInteger","num","ValueReal","ValueString","childTagNames","ValueDict","ValueType","ValueArray","children","eK","eV","CHILD_TAG_NAMES","p2","val","values","xmlDeclaration","xmlDoctype","Plist","childElements","childElementsL","ir","Mounter","file","ejectOnExit","devices","eject","ejectSync","args","stdouts","proc","spawn","reject","status","stdout","spawnSync","plist","systemEntities","dict","devEntry","potentiallyMountable","contentHint","unmappedContentHint","volumeKind","mountPoint","device","shutdown","walkOpts","ejectOptions","EntryHdi","ArchiveHdi","mounterMac","nobrowse","each","pathRaw","uid","gid","createReadStream","ret","rsrcPathFull","rsrcStat","sizeRsrc","volumeName","basename","pathRel"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]}