{"version":3,"file":"bundled-domino.mjs","sources":["../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/Event.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/UIEvent.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/MouseEvent.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/config.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/utils.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/EventTarget.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/LinkedList.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/NodeUtils.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/Node.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/NodeList.es6.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/NodeList.es5.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/NodeList.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/ContainerNode.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/xmlnames.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/attributes.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/FilteredElementList.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/DOMTokenList.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/select.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/ChildNode.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/NonDocumentTypeChildNode.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/NamedNodeMap.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/Element.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/Leaf.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/CharacterData.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/Text.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/Comment.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/DocumentFragment.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/ProcessingInstruction.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/NodeFilter.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/NodeTraversal.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/TreeWalker.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/NodeIterator.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/URL.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/CustomEvent.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/events.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/style_parser.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/CSSStyleDeclaration.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/URLUtils.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/defineElement.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/htmlelts.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/svg.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/MutationConstants.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/Document.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/DocumentType.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/HTMLParser.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/DOMImplementation.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/Location.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/NavigatorID.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/WindowTimers.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/impl.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/Window.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/index.js","../../../../../../../../../../../../execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/index.js?commonjs-entry"],"sourcesContent":["\"use strict\";\nmodule.exports = Event;\n\nEvent.CAPTURING_PHASE = 1;\nEvent.AT_TARGET = 2;\nEvent.BUBBLING_PHASE = 3;\n\nfunction Event(type, dictionary) {\n  // Initialize basic event properties\n  this.type = '';\n  this.target = null;\n  this.currentTarget = null;\n  this.eventPhase = Event.AT_TARGET;\n  this.bubbles = false;\n  this.cancelable = false;\n  this.isTrusted = false;\n  this.defaultPrevented = false;\n  this.timeStamp = Date.now();\n\n  // Initialize internal flags\n  // XXX: Would it be better to inherit these defaults from the prototype?\n  this._propagationStopped = false;\n  this._immediatePropagationStopped = false;\n  this._initialized = true;\n  this._dispatching = false;\n\n  // Now initialize based on the constructor arguments (if any)\n  if (type) this.type = type;\n  if (dictionary) {\n    for(var p in dictionary) {\n      this[p] = dictionary[p];\n    }\n  }\n}\n\nEvent.prototype = Object.create(Object.prototype, {\n  constructor: { value: Event },\n  stopPropagation: { value: function stopPropagation() {\n    this._propagationStopped = true;\n  }},\n\n  stopImmediatePropagation: { value: function stopImmediatePropagation() {\n    this._propagationStopped = true;\n    this._immediatePropagationStopped = true;\n  }},\n\n  preventDefault: { value: function preventDefault() {\n    if (this.cancelable) this.defaultPrevented = true;\n  }},\n\n  initEvent: { value: function initEvent(type, bubbles, cancelable) {\n    this._initialized = true;\n    if (this._dispatching) return;\n\n    this._propagationStopped = false;\n    this._immediatePropagationStopped = false;\n    this.defaultPrevented = false;\n    this.isTrusted = false;\n\n    this.target = null;\n    this.type = type;\n    this.bubbles = bubbles;\n    this.cancelable = cancelable;\n  }},\n\n});\n","\"use strict\";\nvar Event = require('./Event');\n\nmodule.exports = UIEvent;\n\nfunction UIEvent() {\n  // Just use the superclass constructor to initialize\n  Event.call(this);\n  this.view = null; // FF uses the current window\n  this.detail = 0;\n}\nUIEvent.prototype = Object.create(Event.prototype, {\n  constructor: { value: UIEvent },\n  initUIEvent: { value: function(type, bubbles, cancelable, view, detail) {\n    this.initEvent(type, bubbles, cancelable);\n    this.view = view;\n    this.detail = detail;\n  }}\n});\n","\"use strict\";\nvar UIEvent = require('./UIEvent');\n\nmodule.exports = MouseEvent;\n\nfunction MouseEvent() {\n  // Just use the superclass constructor to initialize\n  UIEvent.call(this);\n\n  this.screenX = this.screenY = this.clientX = this.clientY = 0;\n  this.ctrlKey = this.altKey = this.shiftKey = this.metaKey = false;\n  this.button = 0;\n  this.buttons = 1;\n  this.relatedTarget = null;\n}\nMouseEvent.prototype = Object.create(UIEvent.prototype, {\n  constructor: { value: MouseEvent },\n  initMouseEvent: { value: function(type, bubbles, cancelable,\n    view, detail,\n    screenX, screenY, clientX, clientY,\n    ctrlKey, altKey, shiftKey, metaKey,\n    button, relatedTarget) {\n\n    this.initEvent(type, bubbles, cancelable, view, detail);\n    this.screenX = screenX;\n    this.screenY = screenY;\n    this.clientX = clientX;\n    this.clientY = clientY;\n    this.ctrlKey = ctrlKey;\n    this.altKey = altKey;\n    this.shiftKey = shiftKey;\n    this.metaKey = metaKey;\n    this.button = button;\n    switch(button) {\n    case 0: this.buttons = 1; break;\n    case 1: this.buttons = 4; break;\n    case 2: this.buttons = 2; break;\n    default: this.buttons = 0; break;\n    }\n    this.relatedTarget = relatedTarget;\n  }},\n\n  getModifierState: { value: function(key) {\n    switch(key) {\n    case \"Alt\": return this.altKey;\n    case \"Control\": return this.ctrlKey;\n    case \"Shift\": return this.shiftKey;\n    case \"Meta\": return this.metaKey;\n    default: return false;\n    }\n  }}\n});\n","/*\n * This file defines Domino behaviour that can be externally configured.\n * To change these settings, set the relevant global property *before*\n * you call `require(\"domino\")`.\n */\n\nexports.isApiWritable = !globalThis.__domino_frozen__;\n","'use strict';\nvar isApiWritable = require('./config').isApiWritable;\n\nexports.NAMESPACE = {\n  HTML: 'http://www.w3.org/1999/xhtml',\n  XML: 'http://www.w3.org/XML/1998/namespace',\n  XMLNS: 'http://www.w3.org/2000/xmlns/',\n  MATHML: 'http://www.w3.org/1998/Math/MathML',\n  SVG: 'http://www.w3.org/2000/svg',\n  XLINK: 'http://www.w3.org/1999/xlink',\n};\n\n//\n// Shortcut functions for throwing errors of various types.\n//\nexports.IndexSizeError = () => {\n  throw new DOMException('The index is not in the allowed range', 'IndexSizeError');\n};\n\nexports.HierarchyRequestError = () => {\n  throw new DOMException('The node tree hierarchy is not correct', 'HierarchyRequestError');\n};\n\nexports.WrongDocumentError = () => {\n  throw new DOMException('The object is in the wrong Document', 'WrongDocumentError');\n};\n\nexports.InvalidCharacterError = () => {\n  throw new DOMException('The string contains invalid characters', 'InvalidCharacterError');\n};\n\nexports.NoModificationAllowedError = () => {\n  throw new DOMException('The object cannot be modified', 'NoModificationAllowedError');\n};\n\nexports.NotFoundError = () => {\n  throw new DOMException('The object can not be found here', 'NotFoundError');\n};\n\nexports.NotSupportedError = () => {\n  throw new DOMException('The operation is not supported', 'NotSupportedError');\n};\n\nexports.InvalidStateError = () => {\n  throw new DOMException('The object is in an invalid state', 'InvalidStateError');\n};\n\nexports.SyntaxError = () => {\n  throw new DOMException('The string did not match the expected pattern', 'SyntaxError');\n};\n\nexports.InvalidModificationError = () => {\n  throw new DOMException('The object can not be modified in this way', 'InvalidModificationError');\n};\n\nexports.NamespaceError = () => {\n  throw new DOMException('The operation is not allowed by Namespaces in XML', 'NamespaceError');\n};\n\nexports.InvalidAccessError = () => {\n  throw new DOMException(\n    'The object does not support the operation or argument',\n    'InvalidAccessError'\n  );\n};\n\nexports.TypeMismatchError = () => {\n  throw new DOMException(\n    'The type of the object does not match the expected type',\n    'TypeMismatchError'\n  );\n};\n\nexports.SecurityError = () => {\n  throw new DOMException('The operation is insecure', 'SecurityError');\n};\n\nexports.NetworkError = () => {\n  throw new DOMException('A network error occurred', 'NetworkError');\n};\n\nexports.AbortError = () => {\n  throw new DOMException('The operation was aborted', 'AbortError');\n};\n\nexports.UrlMismatchError = () => {\n  throw new DOMException('The given URL does not match another URL', 'URLMismatchError');\n};\n\nexports.QuotaExceededError = () => {\n  throw new DOMException('The quota has been exceeded', 'QuotaExceededError');\n};\n\nexports.TimeoutError = () => {\n  throw new DOMException('The operation timed out', 'TimeoutError');\n};\n\nexports.InvalidNodeTypeError = () => {\n  throw new DOMException('The node is of an invalid type', 'InvalidNodeTypeError');\n};\n\nexports.DataCloneError = () => {\n  throw new DOMException('The object can not be cloned', 'DataCloneError');\n};\n\nexports.InUseAttributeError = () => {\n  throw new DOMException('The attribute is already in use', 'InUseAttributeError');\n};\n\nexports.nyi = function () {\n  throw new Error('NotYetImplemented');\n};\n\nexports.shouldOverride = function () {\n  throw new Error('Abstract function; should be overriding in subclass.');\n};\n\nexports.assert = function (expr, msg) {\n  if (!expr) {\n    throw new Error('Assertion failed: ' + (msg || '') + '\\n' + new Error().stack);\n  }\n};\n\nexports.expose = function (src, c) {\n  for (var n in src) {\n    Object.defineProperty(c.prototype, n, {\n      value: src[n],\n      writable: isApiWritable,\n    });\n  }\n};\n\nexports.merge = function (a, b) {\n  for (var n in b) {\n    a[n] = b[n];\n  }\n};\n\n// Compare two nodes based on their document order. This function is intended\n// to be passed to sort(). Assumes that the array being sorted does not\n// contain duplicates.  And that all nodes are connected and comparable.\n// Clever code by ppk via jeresig.\nexports.documentOrder = function (n, m) {\n  /* jshint bitwise: false */\n  return 3 - (n.compareDocumentPosition(m) & 6);\n};\n\nexports.toASCIILowerCase = function (s) {\n  return s.replace(/[A-Z]+/g, function (c) {\n    return c.toLowerCase();\n  });\n};\n\nexports.toASCIIUpperCase = function (s) {\n  return s.replace(/[a-z]+/g, function (c) {\n    return c.toUpperCase();\n  });\n};\n","\"use strict\";\nvar Event = require('./Event');\nvar MouseEvent = require('./MouseEvent');\nvar utils = require('./utils');\n\nmodule.exports = EventTarget;\n\nfunction EventTarget() {}\n\nEventTarget.prototype = {\n  // XXX\n  // See WebIDL §4.8 for details on object event handlers\n  // and how they should behave.  We actually have to accept\n  // any object to addEventListener... Can't type check it.\n  // on registration.\n\n  // XXX:\n  // Capturing event listeners are sort of rare.  I think I can optimize\n  // them so that dispatchEvent can skip the capturing phase (or much of\n  // it).  Each time a capturing listener is added, increment a flag on\n  // the target node and each of its ancestors.  Decrement when removed.\n  // And update the counter when nodes are added and removed from the\n  // tree as well.  Then, in dispatch event, the capturing phase can\n  // abort if it sees any node with a zero count.\n  addEventListener: function addEventListener(type, listener, capture) {\n    if (!listener) return;\n    if (capture === undefined) capture = false;\n    if (!this._listeners) this._listeners = Object.create(null);\n    if (!this._listeners[type]) this._listeners[type] = [];\n    var list = this._listeners[type];\n\n    // If this listener has already been registered, just return\n    for(var i = 0, n = list.length; i < n; i++) {\n      var l = list[i];\n      if (l.listener === listener && l.capture === capture)\n        return;\n    }\n\n    // Add an object to the list of listeners\n    var obj = { listener: listener, capture: capture };\n    if (typeof listener === 'function') obj.f = listener;\n    list.push(obj);\n  },\n\n  removeEventListener: function removeEventListener(type,\n                            listener,\n                            capture) {\n    if (capture === undefined) capture = false;\n    if (this._listeners) {\n      var list = this._listeners[type];\n      if (list) {\n        // Find the listener in the list and remove it\n        for(var i = 0, n = list.length; i < n; i++) {\n          var l = list[i];\n          if (l.listener === listener && l.capture === capture) {\n            if (list.length === 1) {\n              this._listeners[type] = undefined;\n            }\n            else {\n              list.splice(i, 1);\n            }\n            return;\n          }\n        }\n      }\n    }\n  },\n\n  // This is the public API for dispatching untrusted public events.\n  // See _dispatchEvent for the implementation\n  dispatchEvent: function dispatchEvent(event) {\n    // Dispatch an untrusted event\n    return this._dispatchEvent(event, false);\n  },\n\n  //\n  // See DOMCore §4.4\n  // XXX: I'll probably need another version of this method for\n  // internal use, one that does not set isTrusted to false.\n  // XXX: see Document._dispatchEvent: perhaps that and this could\n  // call a common internal function with different settings of\n  // a trusted boolean argument\n  //\n  // XXX:\n  // The spec has changed in how to deal with handlers registered\n  // on idl or content attributes rather than with addEventListener.\n  // Used to say that they always ran first.  That's how webkit does it\n  // Spec now says that they run in a position determined by\n  // when they were first set.  FF does it that way.  See:\n  // http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#event-handlers\n  //\n  _dispatchEvent: function _dispatchEvent(event, trusted) {\n    if (typeof trusted !== 'boolean') trusted = false;\n    function invoke(target, event) {\n      var type = event.type, phase = event.eventPhase;\n      event.currentTarget = target;\n\n      // If there was an individual handler defined, invoke it first\n      // XXX: see comment above: this shouldn't always be first.\n      if (phase !== Event.CAPTURING_PHASE &&\n        target._handlers && target._handlers[type])\n      {\n        var handler = target._handlers[type];\n        var rv;\n        if (typeof handler === 'function') {\n          rv=handler.call(event.currentTarget, event);\n        }\n        else {\n          var f = handler.handleEvent;\n          if (typeof f !== 'function')\n            throw new TypeError('handleEvent property of ' +\n                                'event handler object is' +\n                                'not a function.');\n          rv=f.call(handler, event);\n        }\n\n        switch(event.type) {\n        case 'mouseover':\n          if (rv === true)  // Historical baggage\n            event.preventDefault();\n          break;\n        case 'beforeunload':\n          // XXX: eventually we need a special case here\n          /* falls through */\n        default:\n          if (rv === false)\n            event.preventDefault();\n          break;\n        }\n      }\n\n      // Now invoke list list of listeners for this target and type\n      var list = target._listeners && target._listeners[type];\n      if (!list) return;\n      list = list.slice();\n      for(var i = 0, n = list.length; i < n; i++) {\n        if (event._immediatePropagationStopped) return;\n        var l = list[i];\n        if ((phase === Event.CAPTURING_PHASE && !l.capture) ||\n          (phase === Event.BUBBLING_PHASE && l.capture))\n          continue;\n        if (l.f) {\n          l.f.call(event.currentTarget, event);\n        }\n        else {\n          var fn = l.listener.handleEvent;\n          if (typeof fn !== 'function')\n            throw new TypeError('handleEvent property of event listener object is not a function.');\n          fn.call(l.listener, event);\n        }\n      }\n    }\n\n    if (!event._initialized || event._dispatching) utils.InvalidStateError();\n    event.isTrusted = trusted;\n\n    // Begin dispatching the event now\n    event._dispatching = true;\n    event.target = this;\n\n    // Build the list of targets for the capturing and bubbling phases\n    // XXX: we'll eventually have to add Window to this list.\n    var ancestors = [];\n    for(var n = this.parentNode; n; n = n.parentNode)\n      ancestors.push(n);\n\n    // Capturing phase\n    event.eventPhase = Event.CAPTURING_PHASE;\n    for(var i = ancestors.length-1; i >= 0; i--) {\n      invoke(ancestors[i], event);\n      if (event._propagationStopped) break;\n    }\n\n    // At target phase\n    if (!event._propagationStopped) {\n      event.eventPhase = Event.AT_TARGET;\n      invoke(this, event);\n    }\n\n    // Bubbling phase\n    if (event.bubbles && !event._propagationStopped) {\n      event.eventPhase = Event.BUBBLING_PHASE;\n      for(var ii = 0, nn = ancestors.length; ii < nn; ii++) {\n        invoke(ancestors[ii], event);\n        if (event._propagationStopped) break;\n      }\n    }\n\n    event._dispatching = false;\n    event.eventPhase = Event.AT_TARGET;\n    event.currentTarget = null;\n\n    // Deal with mouse events and figure out when\n    // a click has happened\n    if (trusted && !event.defaultPrevented && event instanceof MouseEvent) {\n      switch(event.type) {\n      case 'mousedown':\n        this._armed = {\n          x: event.clientX,\n          y: event.clientY,\n          t: event.timeStamp\n        };\n        break;\n      case 'mouseout':\n      case 'mouseover':\n        this._armed = null;\n        break;\n      case 'mouseup':\n        if (this._isClick(event)) this._doClick(event);\n        this._armed = null;\n        break;\n      }\n    }\n\n\n\n    return !event.defaultPrevented;\n  },\n\n  // Determine whether a click occurred\n  // XXX We don't support double clicks for now\n  _isClick: function(event) {\n    return (this._armed !== null &&\n        event.type === 'mouseup' &&\n        event.isTrusted &&\n        event.button === 0 &&\n        event.timeStamp - this._armed.t < 1000 &&\n        Math.abs(event.clientX - this._armed.x) < 10 &&\n        Math.abs(event.clientY - this._armed.Y) < 10);\n  },\n\n  // Clicks are handled like this:\n  // http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#interactive-content-0\n  //\n  // Note that this method is similar to the HTMLElement.click() method\n  // The event argument must be the trusted mouseup event\n  _doClick: function(event) {\n    if (this._click_in_progress) return;\n    this._click_in_progress = true;\n\n    // Find the nearest enclosing element that is activatable\n    // An element is activatable if it has a\n    // _post_click_activation_steps hook\n    var activated = this;\n    while(activated && !activated._post_click_activation_steps)\n      activated = activated.parentNode;\n\n    if (activated && activated._pre_click_activation_steps) {\n      activated._pre_click_activation_steps();\n    }\n\n    var click = this.ownerDocument.createEvent('MouseEvent');\n    click.initMouseEvent('click', true, true,\n      this.ownerDocument.defaultView, 1,\n      event.screenX, event.screenY,\n      event.clientX, event.clientY,\n      event.ctrlKey, event.altKey,\n      event.shiftKey, event.metaKey,\n      event.button, null);\n\n    var result = this._dispatchEvent(click, true);\n\n    if (activated) {\n      if (result) {\n        // This is where hyperlinks get followed, for example.\n        if (activated._post_click_activation_steps)\n          activated._post_click_activation_steps(click);\n      }\n      else {\n        if (activated._cancelled_activation_steps)\n          activated._cancelled_activation_steps();\n      }\n    }\n  },\n\n  //\n  // An event handler is like an event listener, but it registered\n  // by setting an IDL or content attribute like onload or onclick.\n  // There can only be one of these at a time for any event type.\n  // This is an internal method for the attribute accessors and\n  // content attribute handlers that need to register events handlers.\n  // The type argument is the same as in addEventListener().\n  // The handler argument is the same as listeners in addEventListener:\n  // it can be a function or an object. Pass null to remove any existing\n  // handler.  Handlers are always invoked before any listeners of\n  // the same type.  They are not invoked during the capturing phase\n  // of event dispatch.\n  //\n  _setEventHandler: function _setEventHandler(type, handler) {\n    if (!this._handlers) this._handlers = Object.create(null);\n    this._handlers[type] = handler;\n  },\n\n  _getEventHandler: function _getEventHandler(type) {\n    return (this._handlers && this._handlers[type]) || null;\n  }\n\n};\n","\"use strict\";\nvar utils = require('./utils');\n\nvar LinkedList = module.exports = {\n    // basic validity tests on a circular linked list a\n    valid: function(a) {\n        utils.assert(a, \"list falsy\");\n        utils.assert(a._previousSibling, \"previous falsy\");\n        utils.assert(a._nextSibling, \"next falsy\");\n        // xxx check that list is actually circular\n        return true;\n    },\n    // insert a before b\n    insertBefore: function(a, b) {\n        utils.assert(LinkedList.valid(a) && LinkedList.valid(b));\n        var a_first = a, a_last = a._previousSibling;\n        var b_first = b, b_last = b._previousSibling;\n        a_first._previousSibling = b_last;\n        a_last._nextSibling = b_first;\n        b_last._nextSibling = a_first;\n        b_first._previousSibling = a_last;\n        utils.assert(LinkedList.valid(a) && LinkedList.valid(b));\n    },\n    // replace a single node a with a list b (which could be null)\n    replace: function(a, b) {\n        utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b)));\n        if (b!==null) {\n            LinkedList.insertBefore(b, a);\n        }\n        LinkedList.remove(a);\n        utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b)));\n    },\n    // remove single node a from its list\n    remove: function(a) {\n        utils.assert(LinkedList.valid(a));\n        var prev = a._previousSibling;\n        if (prev === a) { return; }\n        var next = a._nextSibling;\n        prev._nextSibling = next;\n        next._previousSibling = prev;\n        a._previousSibling = a._nextSibling = a;\n        utils.assert(LinkedList.valid(a));\n    }\n};\n","\"use strict\";\nmodule.exports = {\n  // NOTE: The `serializeOne()` function used to live on the `Node.prototype`\n  // as a private method `Node#_serializeOne(child)`, however that requires\n  // a megamorphic property access `this._serializeOne` just to get to the\n  // method, and this is being done on lots of different `Node` subclasses,\n  // which puts a lot of pressure on V8's megamorphic stub cache. So by\n  // moving the helper off of the `Node.prototype` and into a separate\n  // function in this helper module, we get a monomorphic property access\n  // `NodeUtils.serializeOne` to get to the function and reduce pressure\n  // on the megamorphic stub cache.\n  // See https://github.com/fgnass/domino/pull/142 for more information.\n  serializeOne: serializeOne,\n\n  // Export util functions so that we can run extra test for them.\n  // Note: we prefix function names with `ɵ`, similar to what we do\n  // with internal functions in Angular packages.\n  ɵescapeMatchingClosingTag: escapeMatchingClosingTag,\n  ɵescapeClosingCommentTag: escapeClosingCommentTag,\n  ɵescapeProcessingInstructionContent: escapeProcessingInstructionContent\n};\n\nvar utils = require('./utils');\nvar NAMESPACE = utils.NAMESPACE;\n\nvar hasRawContent = {\n  STYLE: true,\n  SCRIPT: true,\n  XMP: true,\n  IFRAME: true,\n  NOEMBED: true,\n  NOFRAMES: true,\n  PLAINTEXT: true\n};\n\nvar emptyElements = {\n  area: true,\n  base: true,\n  basefont: true,\n  bgsound: true,\n  br: true,\n  col: true,\n  embed: true,\n  frame: true,\n  hr: true,\n  img: true,\n  input: true,\n  keygen: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true\n};\n\nvar extraNewLine = {\n  /* Removed in https://github.com/whatwg/html/issues/944\n  pre: true,\n  textarea: true,\n  listing: true\n  */\n};\n\nconst ESCAPE_REGEXP = /[&<>\\u00A0]/g;\nconst ESCAPE_ATTR_REGEXP = /[&\"<>\\u00A0]/g;\n\nfunction escape(s) {\n  if (!ESCAPE_REGEXP.test(s)) {\n    // nothing to do, fast path\n    return s;\n  }\n\n  return s.replace(ESCAPE_REGEXP, (c) => {\n    switch (c) {\n      case \"&\":\n        return \"&amp;\";\n      case \"<\":\n        return \"&lt;\";\n      case \">\":\n        return \"&gt;\";\n      case \"\\u00A0\":\n        return \"&nbsp;\";\n    }\n  });\n}\n\nfunction escapeAttr(s) {\n  if (!ESCAPE_ATTR_REGEXP.test(s)) {\n    // nothing to do, fast path\n    return s;\n  }\n\n  return s.replace(ESCAPE_ATTR_REGEXP, (c) => {\n    switch (c) {\n      case \"<\":\n        return \"&lt;\";\n      case \">\":\n        return \"&gt;\";\n      case \"&\":\n        return \"&amp;\";\n      case '\"':\n        return \"&quot;\";\n      case \"\\u00A0\":\n        return \"&nbsp;\";\n    }\n  });\n}\n\nfunction attrname(a) {\n  var ns = a.namespaceURI;\n  if (!ns)\n    return a.localName;\n  if (ns === NAMESPACE.XML)\n    return 'xml:' + a.localName;\n  if (ns === NAMESPACE.XLINK)\n    return 'xlink:' + a.localName;\n\n  if (ns === NAMESPACE.XMLNS) {\n    if (a.localName === 'xmlns') return 'xmlns';\n    else return 'xmlns:' + a.localName;\n  }\n  return a.name;\n}\n\n/**\n * Escapes matching closing tag in a raw text.\n *\n * For example, given `<style>#text(</style><script></script>)</style>`,\n * the parent tag would by \"style\" and the raw text is\n * \"</style><script></script>\". If we come across a matching closing tag\n * (in out case `</style>`) - replace `<` with `&lt;` to avoid unexpected\n * and unsafe behavior after de-serialization.\n */\nfunction escapeMatchingClosingTag(rawText, parentTag) {\n  const parentClosingTag = '</' + parentTag;\n  if (!rawText.toLowerCase().includes(parentClosingTag)) {\n    return rawText; // fast path\n  }\n  const result = [...rawText];\n  const matches = rawText.matchAll(new RegExp(parentClosingTag, 'ig'));\n  for (const match of matches) {\n    result[match.index] = '&lt;';\n  }\n  return result.join('');\n}\n\nconst CLOSING_COMMENT_REGEXP = /--!?>/;\n\n/**\n * Escapes closing comment tag in a comment content.\n *\n * For example, given `#comment('-->')`, the content of a comment would be\n * updated to `--&gt;` to avoid unexpected and unsafe behavior after\n * de-serialization.\n */\nfunction escapeClosingCommentTag(rawContent) {\n  if (!CLOSING_COMMENT_REGEXP.test(rawContent)) {\n    return rawContent; // fast path\n  }\n  return rawContent.replace(/(--\\!?)>/g, '$1&gt;');\n}\n\n/**\n * Escapes processing instruction content by replacing `>` with `&gt`.\n */\nfunction escapeProcessingInstructionContent(rawContent) {\n  return rawContent.includes('>')\n    ? rawContent.replaceAll('>', '&gt;')\n    : rawContent;\n}\n\nfunction serializeOne(kid, parent) {\n  var s = '';\n  switch(kid.nodeType) {\n    case 1: //ELEMENT_NODE\n      var ns = kid.namespaceURI;\n      var html = ns === NAMESPACE.HTML;\n      var tagname = (html || ns === NAMESPACE.SVG || ns === NAMESPACE.MATHML) ? kid.localName : kid.tagName;\n\n      s += '<' + tagname;\n\n      for(var j = 0, k = kid._numattrs; j < k; j++) {\n        var a = kid._attr(j);\n        s += ' ' + attrname(a);\n        if (a.value !== undefined) s += '=\"' + escapeAttr(a.value) + '\"';\n      }\n      s += '>';\n\n      if (!(html && emptyElements[tagname])) {\n        var ss = kid.serialize();\n        // If an element can have raw content, this content may\n        // potentially require escaping to avoid XSS.\n        if (hasRawContent[tagname.toUpperCase()]) {\n          ss = escapeMatchingClosingTag(ss, tagname);\n        }\n        if (html && extraNewLine[tagname] && ss.charAt(0)==='\\n') s += '\\n';\n        // Serialize children and add end tag for all others\n        s += ss;\n        s += '</' + tagname + '>';\n      }\n      break;\n    case 3: //TEXT_NODE\n    case 4: //CDATA_SECTION_NODE\n      var parenttag;\n      if (parent.nodeType === 1 /*ELEMENT_NODE*/ &&\n        parent.namespaceURI === NAMESPACE.HTML)\n        parenttag = parent.tagName;\n      else\n        parenttag = '';\n\n      if (hasRawContent[parenttag] ||\n          (parenttag==='NOSCRIPT' && parent.ownerDocument._scripting_enabled)) {\n        s += kid.data;\n      } else {\n        s += escape(kid.data);\n      }\n      break;\n    case 8: //COMMENT_NODE\n      s += '<!--' + escapeClosingCommentTag(kid.data) + '-->';\n      break;\n    case 7: //PROCESSING_INSTRUCTION_NODE\n      const content = escapeProcessingInstructionContent(kid.data);\n      s += '<?' + kid.target + ' ' + content + '?>';\n      break;\n    case 10: //DOCUMENT_TYPE_NODE\n      s += '<!DOCTYPE ' + kid.name;\n\n      if (false) {\n        // Latest HTML serialization spec omits the public/system ID\n        if (kid.publicID) {\n          s += ' PUBLIC \"' + kid.publicId + '\"';\n        }\n\n        if (kid.systemId) {\n          s += ' \"' + kid.systemId + '\"';\n        }\n      }\n\n      s += '>';\n      break;\n    default:\n      utils.InvalidStateError();\n  }\n  return s;\n}\n","\"use strict\";\nmodule.exports = Node;\n\nvar EventTarget = require('./EventTarget');\nvar LinkedList = require('./LinkedList');\nvar NodeUtils = require('./NodeUtils');\nvar utils = require('./utils');\n\n// All nodes have a nodeType and an ownerDocument.\n// Once inserted, they also have a parentNode.\n// This is an abstract class; all nodes in a document are instances\n// of a subtype, so all the properties are defined by more specific\n// constructors.\nfunction Node() {\n  EventTarget.call(this);\n  this.parentNode = null;\n  this._nextSibling = this._previousSibling = this;\n  this._index = undefined;\n}\n\nvar ELEMENT_NODE                = Node.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE              = Node.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE                   = Node.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE          = Node.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE       = Node.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE                 = Node.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = Node.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE                = Node.COMMENT_NODE = 8;\nvar DOCUMENT_NODE               = Node.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE          = Node.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE      = Node.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE               = Node.NOTATION_NODE = 12;\n\nvar DOCUMENT_POSITION_DISCONNECTED            = Node.DOCUMENT_POSITION_DISCONNECTED = 0x01;\nvar DOCUMENT_POSITION_PRECEDING               = Node.DOCUMENT_POSITION_PRECEDING = 0x02;\nvar DOCUMENT_POSITION_FOLLOWING               = Node.DOCUMENT_POSITION_FOLLOWING = 0x04;\nvar DOCUMENT_POSITION_CONTAINS                = Node.DOCUMENT_POSITION_CONTAINS = 0x08;\nvar DOCUMENT_POSITION_CONTAINED_BY            = Node.DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nvar DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\nNode.prototype = Object.create(EventTarget.prototype, {\n\n  // Node that are not inserted into the tree inherit a null parent\n\n  // XXX: the baseURI attribute is defined by dom core, but\n  // a correct implementation of it requires HTML features, so\n  // we'll come back to this later.\n  baseURI: { get: utils.nyi },\n\n  parentElement: { get: function() {\n    return (this.parentNode && this.parentNode.nodeType===ELEMENT_NODE) ? this.parentNode : null;\n  }},\n\n  hasChildNodes: { value: utils.shouldOverride },\n\n  firstChild: { get: utils.shouldOverride },\n\n  lastChild: { get: utils.shouldOverride },\n\n  isConnected: {\n    get: function () {\n      let node = this;\n      while (node != null) {\n        if (node.nodeType === Node.DOCUMENT_NODE) {\n          return true;\n        }\n\n        node = node.parentNode;\n        if (node != null && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n          node = node.host;\n        }\n      }\n      return false;\n    },\n  },\n\n  previousSibling: { get: function() {\n    var parent = this.parentNode;\n    if (!parent) return null;\n    if (this === parent.firstChild) return null;\n    return this._previousSibling;\n  }},\n\n  nextSibling: { get: function() {\n    var parent = this.parentNode, next = this._nextSibling;\n    if (!parent) return null;\n    if (next === parent.firstChild) return null;\n    return next;\n  }},\n\n  textContent: {\n    // Should override for DocumentFragment/Element/Attr/Text/PI/Comment\n    get: function() { return null; },\n    set: function(v) { /* do nothing */ },\n  },\n\n  innerText: {\n    // Should override for DocumentFragment/Element/Attr/Text/PI/Comment\n    get: function() { return null; },\n    set: function(v) { /* do nothing */ },\n  },\n\n  _countChildrenOfType: { value: function(type) {\n    var sum = 0;\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n      if (kid.nodeType === type) sum++;\n    }\n    return sum;\n  }},\n\n  _ensureInsertValid: { value: function _ensureInsertValid(node, child, isPreinsert) {\n    var parent = this, i, kid;\n    if (!node.nodeType) throw new TypeError('not a node');\n    // 1. If parent is not a Document, DocumentFragment, or Element\n    // node, throw a HierarchyRequestError.\n    switch (parent.nodeType) {\n    case DOCUMENT_NODE:\n    case DOCUMENT_FRAGMENT_NODE:\n    case ELEMENT_NODE:\n      break;\n    default: utils.HierarchyRequestError();\n    }\n    // 2. If node is a host-including inclusive ancestor of parent,\n    // throw a HierarchyRequestError.\n    if (node.isAncestor(parent)) utils.HierarchyRequestError();\n    // 3. If child is not null and its parent is not parent, then\n    // throw a NotFoundError. (replaceChild omits the 'child is not null'\n    // and throws a TypeError here if child is null.)\n    if (child !== null || !isPreinsert) {\n      if (child.parentNode !== parent) utils.NotFoundError();\n    }\n    // 4. If node is not a DocumentFragment, DocumentType, Element,\n    // Text, ProcessingInstruction, or Comment node, throw a\n    // HierarchyRequestError.\n    switch (node.nodeType) {\n    case DOCUMENT_FRAGMENT_NODE:\n    case DOCUMENT_TYPE_NODE:\n    case ELEMENT_NODE:\n    case TEXT_NODE:\n    case PROCESSING_INSTRUCTION_NODE:\n    case COMMENT_NODE:\n      break;\n    default: utils.HierarchyRequestError();\n    }\n    // 5. If either node is a Text node and parent is a document, or\n    // node is a doctype and parent is not a document, throw a\n    // HierarchyRequestError.\n    // 6. If parent is a document, and any of the statements below, switched\n    // on node, are true, throw a HierarchyRequestError.\n    if (parent.nodeType === DOCUMENT_NODE) {\n      switch (node.nodeType) {\n      case TEXT_NODE:\n        utils.HierarchyRequestError();\n        break;\n      case DOCUMENT_FRAGMENT_NODE:\n        // 6a1. If node has more than one element child or has a Text\n        // node child.\n        if (node._countChildrenOfType(TEXT_NODE) > 0)\n          utils.HierarchyRequestError();\n        switch (node._countChildrenOfType(ELEMENT_NODE)) {\n        case 0:\n          break;\n        case 1:\n          // 6a2. Otherwise, if node has one element child and either\n          // parent has an element child, child is a doctype, or child\n          // is not null and a doctype is following child. [preinsert]\n          // 6a2. Otherwise, if node has one element child and either\n          // parent has an element child that is not child or a\n          // doctype is following child. [replaceWith]\n          if (child !== null /* always true here for replaceWith */) {\n            if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE)\n              utils.HierarchyRequestError();\n            for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) {\n              if (kid.nodeType === DOCUMENT_TYPE_NODE)\n                utils.HierarchyRequestError();\n            }\n          }\n          i = parent._countChildrenOfType(ELEMENT_NODE);\n          if (isPreinsert) {\n            // \"parent has an element child\"\n            if (i > 0)\n              utils.HierarchyRequestError();\n          } else {\n            // \"parent has an element child that is not child\"\n            if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE))\n              utils.HierarchyRequestError();\n          }\n          break;\n        default: // 6a1, continued. (more than one Element child)\n          utils.HierarchyRequestError();\n        }\n        break;\n      case ELEMENT_NODE:\n        // 6b. parent has an element child, child is a doctype, or\n        // child is not null and a doctype is following child. [preinsert]\n        // 6b. parent has an element child that is not child or a\n        // doctype is following child. [replaceWith]\n        if (child !== null /* always true here for replaceWith */) {\n          if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE)\n            utils.HierarchyRequestError();\n          for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) {\n            if (kid.nodeType === DOCUMENT_TYPE_NODE)\n              utils.HierarchyRequestError();\n          }\n        }\n        i = parent._countChildrenOfType(ELEMENT_NODE);\n        if (isPreinsert) {\n          // \"parent has an element child\"\n          if (i > 0)\n            utils.HierarchyRequestError();\n        } else {\n          // \"parent has an element child that is not child\"\n          if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE))\n            utils.HierarchyRequestError();\n        }\n        break;\n      case DOCUMENT_TYPE_NODE:\n        // 6c. parent has a doctype child, child is non-null and an\n        // element is preceding child, or child is null and parent has\n        // an element child. [preinsert]\n        // 6c. parent has a doctype child that is not child, or an\n        // element is preceding child. [replaceWith]\n        if (child === null) {\n          if (parent._countChildrenOfType(ELEMENT_NODE))\n            utils.HierarchyRequestError();\n        } else {\n          // child is always non-null for [replaceWith] case\n          for (kid = parent.firstChild; kid !== null; kid = kid.nextSibling) {\n            if (kid === child) break;\n            if (kid.nodeType === ELEMENT_NODE)\n              utils.HierarchyRequestError();\n          }\n        }\n        i = parent._countChildrenOfType(DOCUMENT_TYPE_NODE);\n        if (isPreinsert) {\n          // \"parent has an doctype child\"\n          if (i > 0)\n            utils.HierarchyRequestError();\n        } else {\n          // \"parent has an doctype child that is not child\"\n          if (i > 1 || (i === 1 && child.nodeType !== DOCUMENT_TYPE_NODE))\n            utils.HierarchyRequestError();\n        }\n        break;\n      }\n    } else {\n      // 5, continued: (parent is not a document)\n      if (node.nodeType === DOCUMENT_TYPE_NODE) utils.HierarchyRequestError();\n    }\n  }},\n\n  insertBefore: { value: function insertBefore(node, child) {\n    var parent = this;\n    // 1. Ensure pre-insertion validity\n    parent._ensureInsertValid(node, child, true);\n    // 2. Let reference child be child.\n    var refChild = child;\n    // 3. If reference child is node, set it to node's next sibling\n    if (refChild === node) { refChild = node.nextSibling; }\n    // 4. Adopt node into parent's node document.\n    parent.doc.adoptNode(node);\n    // 5. Insert node into parent before reference child.\n    node._insertOrReplace(parent, refChild, false);\n    // 6. Return node\n    return node;\n  }},\n\n\n  appendChild: { value: function(child) {\n    // This invokes _appendChild after doing validity checks.\n    return this.insertBefore(child, null);\n  }},\n\n  _appendChild: { value: function(child) {\n    child._insertOrReplace(this, null, false);\n  }},\n\n  removeChild: { value: function removeChild(child) {\n    var parent = this;\n    if (!child.nodeType) throw new TypeError('not a node');\n    if (child.parentNode !== parent) utils.NotFoundError();\n    child.remove();\n    return child;\n  }},\n\n  // To replace a `child` with `node` within a `parent` (this)\n  replaceChild: { value: function replaceChild(node, child) {\n    var parent = this;\n    // Ensure validity (slight differences from pre-insertion check)\n    parent._ensureInsertValid(node, child, false);\n    // Adopt node into parent's node document.\n    if (node.doc !== parent.doc) {\n      // XXX adoptNode has side-effect of removing node from its parent\n      // and generating a mutation event, thus causing the _insertOrReplace\n      // to generate two deletes and an insert instead of a 'move'\n      // event.  It looks like the new MutationObserver stuff avoids\n      // this problem, but for now let's only adopt (ie, remove `node`\n      // from its parent) here if we need to.\n      parent.doc.adoptNode(node);\n    }\n    // Do the replace.\n    node._insertOrReplace(parent, child, true);\n    return child;\n  }},\n\n  // See: http://ejohn.org/blog/comparing-document-position/\n  contains: { value: function contains(node) {\n    if (node === null) { return false; }\n    if (this === node) { return true; /* inclusive descendant */ }\n    /* jshint bitwise: false */\n    return (this.compareDocumentPosition(node) &\n            DOCUMENT_POSITION_CONTAINED_BY) !== 0;\n  }},\n\n  compareDocumentPosition: { value: function compareDocumentPosition(that){\n    // Basic algorithm for finding the relative position of two nodes.\n    // Make a list the ancestors of each node, starting with the\n    // document element and proceeding down to the nodes themselves.\n    // Then, loop through the lists, looking for the first element\n    // that differs.  The order of those two elements give the\n    // order of their descendant nodes.  Or, if one list is a prefix\n    // of the other one, then that node contains the other.\n\n    if (this === that) return 0;\n\n    // If they're not owned by the same document or if one is rooted\n    // and one is not, then they're disconnected.\n    if (this.doc !== that.doc ||\n      this.rooted !== that.rooted)\n      return (DOCUMENT_POSITION_DISCONNECTED +\n          DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\n\n    // Get arrays of ancestors for this and that\n    var these = [], those = [];\n    for(var n = this; n !== null; n = n.parentNode) these.push(n);\n    for(n = that; n !== null; n = n.parentNode) those.push(n);\n    these.reverse();  // So we start with the outermost\n    those.reverse();\n\n    if (these[0] !== those[0]) // No common ancestor\n      return (DOCUMENT_POSITION_DISCONNECTED +\n          DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\n\n    n = Math.min(these.length, those.length);\n    for(var i = 1; i < n; i++) {\n      if (these[i] !== those[i]) {\n        // We found two different ancestors, so compare\n        // their positions\n        if (these[i].index < those[i].index)\n          return DOCUMENT_POSITION_FOLLOWING;\n        else\n          return DOCUMENT_POSITION_PRECEDING;\n      }\n    }\n\n    // If we get to here, then one of the nodes (the one with the\n    // shorter list of ancestors) contains the other one.\n    if (these.length < those.length)\n      return (DOCUMENT_POSITION_FOLLOWING +\n          DOCUMENT_POSITION_CONTAINED_BY);\n    else\n      return (DOCUMENT_POSITION_PRECEDING +\n          DOCUMENT_POSITION_CONTAINS);\n  }},\n\n  isSameNode: {value : function isSameNode(node) {\n    return this === node;\n  }},\n\n\n  // This method implements the generic parts of node equality testing\n  // and defers to the (non-recursive) type-specific isEqual() method\n  // defined by subclasses\n  isEqualNode: { value: function isEqualNode(node) {\n    if (!node) return false;\n    if (node.nodeType !== this.nodeType) return false;\n\n    // Check type-specific properties for equality\n    if (!this.isEqual(node)) return false;\n\n    // Now check children for number and equality\n    for (var c1 = this.firstChild, c2 = node.firstChild;\n         c1 && c2;\n         c1 = c1.nextSibling, c2 = c2.nextSibling) {\n      if (!c1.isEqualNode(c2)) return false;\n    }\n    return c1 === null && c2 === null;\n  }},\n\n  // This method delegates shallow cloning to a clone() method\n  // that each concrete subclass must implement\n  cloneNode: { value: function(deep) {\n    // Clone this node\n    var clone = this.clone();\n\n    // Handle the recursive case if necessary\n    if (deep) {\n      for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n        clone._appendChild(kid.cloneNode(true));\n      }\n    }\n\n    return clone;\n  }},\n\n  lookupPrefix: { value: function lookupPrefix(ns) {\n    var e;\n    if (ns === '' || ns === null || ns === undefined) return null;\n    switch(this.nodeType) {\n    case ELEMENT_NODE:\n      return this._lookupNamespacePrefix(ns, this);\n    case DOCUMENT_NODE:\n      e = this.documentElement;\n      return e ? e.lookupPrefix(ns) : null;\n    case ENTITY_NODE:\n    case NOTATION_NODE:\n    case DOCUMENT_FRAGMENT_NODE:\n    case DOCUMENT_TYPE_NODE:\n      return null;\n    case ATTRIBUTE_NODE:\n      e = this.ownerElement;\n      return e ? e.lookupPrefix(ns) : null;\n    default:\n      e = this.parentElement;\n      return e ? e.lookupPrefix(ns) : null;\n    }\n  }},\n\n\n  lookupNamespaceURI: {value: function lookupNamespaceURI(prefix) {\n    if (prefix === '' || prefix === undefined) { prefix = null; }\n    var e;\n    switch(this.nodeType) {\n    case ELEMENT_NODE:\n      return utils.shouldOverride();\n    case DOCUMENT_NODE:\n      e = this.documentElement;\n      return e ? e.lookupNamespaceURI(prefix) : null;\n    case ENTITY_NODE:\n    case NOTATION_NODE:\n    case DOCUMENT_TYPE_NODE:\n    case DOCUMENT_FRAGMENT_NODE:\n      return null;\n    case ATTRIBUTE_NODE:\n      e = this.ownerElement;\n      return e ? e.lookupNamespaceURI(prefix) : null;\n    default:\n      e = this.parentElement;\n      return e ? e.lookupNamespaceURI(prefix) : null;\n    }\n  }},\n\n  isDefaultNamespace: { value: function isDefaultNamespace(ns) {\n    if (ns === '' || ns === undefined) { ns = null; }\n    var defaultNamespace = this.lookupNamespaceURI(null);\n    return (defaultNamespace === ns);\n  }},\n\n  // Utility methods for nodes.  Not part of the DOM\n\n  // Return the index of this node in its parent.\n  // Throw if no parent, or if this node is not a child of its parent\n  index: { get: function() {\n    var parent = this.parentNode;\n    if (this === parent.firstChild) return 0; // fast case\n    var kids = parent.childNodes;\n    if (this._index === undefined || kids[this._index] !== this) {\n      // Ensure that we don't have an O(N^2) blowup if none of the\n      // kids have defined indices yet and we're traversing via\n      // nextSibling or previousSibling\n      for (var i=0; i<kids.length; i++) {\n        kids[i]._index = i;\n      }\n      utils.assert(kids[this._index] === this);\n    }\n    return this._index;\n  }},\n\n  // Return true if this node is equal to or is an ancestor of that node\n  // Note that nodes are considered to be ancestors of themselves\n  isAncestor: { value: function(that) {\n    // If they belong to different documents, then they're unrelated.\n    if (this.doc !== that.doc) return false;\n    // If one is rooted and one isn't then they're not related\n    if (this.rooted !== that.rooted) return false;\n\n    // Otherwise check by traversing the parentNode chain\n    for(var e = that; e; e = e.parentNode) {\n      if (e === this) return true;\n    }\n    return false;\n  }},\n\n  // DOMINO Changed the behavior to conform with the specs. See:\n  // https://groups.google.com/d/topic/mozilla.dev.platform/77sIYcpdDmc/discussion\n  ensureSameDoc: { value: function(that) {\n    if (that.ownerDocument === null) {\n      that.ownerDocument = this.doc;\n    }\n    else if(that.ownerDocument !== this.doc) {\n      utils.WrongDocumentError();\n    }\n  }},\n\n  removeChildren: { value: utils.shouldOverride },\n\n  // Insert this node as a child of parent before the specified child,\n  // or insert as the last child of parent if specified child is null,\n  // or replace the specified child with this node, firing mutation events as\n  // necessary\n  _insertOrReplace: { value: function _insertOrReplace(parent, before, isReplace) {\n    var child = this, before_index, i;\n\n    if (child.nodeType === DOCUMENT_FRAGMENT_NODE && child.rooted) {\n      utils.HierarchyRequestError();\n    }\n\n    /* Ensure index of `before` is cached before we (possibly) remove it. */\n    if (parent._childNodes) {\n      before_index = (before === null) ? parent._childNodes.length :\n        before.index; /* ensure _index is cached */\n\n      // If we are already a child of the specified parent, then\n      // the index may have to be adjusted.\n      if (child.parentNode === parent) {\n        var child_index = child.index;\n        // If the child is before the spot it is to be inserted at,\n        // then when it is removed, the index of that spot will be\n        // reduced.\n        if (child_index < before_index) {\n          before_index--;\n        }\n      }\n    }\n\n    // Delete the old child\n    if (isReplace) {\n      if (before.rooted) before.doc.mutateRemove(before);\n      before.parentNode = null;\n    }\n\n    var n = before;\n    if (n === null) { n = parent.firstChild; }\n\n    // If both the child and the parent are rooted, then we want to\n    // transplant the child without uprooting and rerooting it.\n    var bothRooted = child.rooted && parent.rooted;\n    if (child.nodeType === DOCUMENT_FRAGMENT_NODE) {\n      var spliceArgs = [0, isReplace ? 1 : 0], next;\n      for (var kid = child.firstChild; kid !== null; kid = next) {\n        next = kid.nextSibling;\n        spliceArgs.push(kid);\n        kid.parentNode = parent;\n      }\n      var len = spliceArgs.length;\n      // Add all nodes to the new parent, overwriting the old child\n      if (isReplace) {\n        LinkedList.replace(n, len > 2 ? spliceArgs[2] : null);\n      } else if (len > 2 && n !== null) {\n        LinkedList.insertBefore(spliceArgs[2], n);\n      }\n      if (parent._childNodes) {\n        spliceArgs[0] = (before === null) ?\n          parent._childNodes.length : before._index;\n        parent._childNodes.splice.apply(parent._childNodes, spliceArgs);\n        for (i=2; i<len; i++) {\n          spliceArgs[i]._index = spliceArgs[0] + (i - 2);\n        }\n      } else if (parent._firstChild === before) {\n        if (len > 2) {\n          parent._firstChild = spliceArgs[2];\n        } else if (isReplace) {\n          parent._firstChild = null;\n        }\n      }\n      // Remove all nodes from the document fragment\n      if (child._childNodes) {\n        child._childNodes.length = 0;\n      } else {\n        child._firstChild = null;\n      }\n      // Call the mutation handlers\n      // Use spliceArgs since the original array has been destroyed. The\n      // liveness guarantee requires us to clone the array so that\n      // references to the childNodes of the DocumentFragment will be empty\n      // when the insertion handlers are called.\n      if (parent.rooted) {\n        parent.modify();\n        for (i = 2; i < len; i++) {\n          parent.doc.mutateInsert(spliceArgs[i]);\n        }\n      }\n    } else {\n      if (before === child) { return; }\n      if (bothRooted) {\n        // Remove the child from its current position in the tree\n        // without calling remove(), since we don't want to uproot it.\n        child._remove();\n      } else if (child.parentNode) {\n        child.remove();\n      }\n\n      // Insert it as a child of its new parent\n      child.parentNode = parent;\n      if (isReplace) {\n        LinkedList.replace(n, child);\n        if (parent._childNodes) {\n          child._index = before_index;\n          parent._childNodes[before_index] = child;\n        } else if (parent._firstChild === before) {\n          parent._firstChild = child;\n        }\n      } else {\n        if (n !== null) {\n          LinkedList.insertBefore(child, n);\n        }\n        if (parent._childNodes) {\n          child._index = before_index;\n          parent._childNodes.splice(before_index, 0, child);\n        } else if (parent._firstChild === before) {\n          parent._firstChild = child;\n        }\n      }\n      if (bothRooted) {\n        parent.modify();\n        // Generate a move mutation event\n        parent.doc.mutateMove(child);\n      } else if (parent.rooted) {\n        parent.modify();\n        parent.doc.mutateInsert(child);\n      }\n    }\n  }},\n\n\n  // Return the lastModTime value for this node. (For use as a\n  // cache invalidation mechanism. If the node does not already\n  // have one, initialize it from the owner document's modclock\n  // property. (Note that modclock does not return the actual\n  // time; it is simply a counter incremented on each document\n  // modification)\n  lastModTime: { get: function() {\n    if (!this._lastModTime) {\n      this._lastModTime = this.doc.modclock;\n    }\n    return this._lastModTime;\n  }},\n\n  // Increment the owner document's modclock and use the new\n  // value to update the lastModTime value for this node and\n  // all of its ancestors. Nodes that have never had their\n  // lastModTime value queried do not need to have a\n  // lastModTime property set on them since there is no\n  // previously queried value to ever compare the new value\n  // against, so only update nodes that already have a\n  // _lastModTime property.\n  modify: { value: function() {\n    if (this.doc.modclock) { // Skip while doc.modclock == 0\n      var time = ++this.doc.modclock;\n      for(var n = this; n; n = n.parentElement) {\n        if (n._lastModTime) {\n          n._lastModTime = time;\n        }\n      }\n    }\n  }},\n\n  // This attribute is not part of the DOM but is quite helpful.\n  // It returns the document with which a node is associated.  Usually\n  // this is the ownerDocument. But ownerDocument is null for the\n  // document object itself, so this is a handy way to get the document\n  // regardless of the node type\n  doc: { get: function() {\n    return this.ownerDocument || this;\n  }},\n\n\n  // If the node has a nid (node id), then it is rooted in a document\n  rooted: { get: function() {\n    return !!this._nid;\n  }},\n\n  normalize: { value: function() {\n    var next;\n    for (var child=this.firstChild; child !== null; child=next) {\n      next = child.nextSibling;\n\n      if (child.normalize) {\n        child.normalize();\n      }\n\n      if (child.nodeType !== Node.TEXT_NODE) {\n        continue;\n      }\n\n      if (child.nodeValue === \"\") {\n        this.removeChild(child);\n        continue;\n      }\n\n      var prevChild = child.previousSibling;\n      if (prevChild === null) {\n        continue;\n      } else if (prevChild.nodeType === Node.TEXT_NODE) {\n        // merge this with previous and remove the child\n        prevChild.appendData(child.nodeValue);\n        this.removeChild(child);\n      }\n    }\n  }},\n\n  // Convert the children of a node to an HTML string.\n  // This is used by the innerHTML getter\n  // The serialization spec is at:\n  // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#serializing-html-fragments\n  //\n  // The serialization logic is intentionally implemented in a separate\n  // `NodeUtils` helper instead of the more obvious choice of a private\n  // `_serializeOne()` method on the `Node.prototype` in order to avoid\n  // the megamorphic `this._serializeOne` property access, which reduces\n  // performance unnecessarily. If you need specialized behavior for a\n  // certain subclass, you'll need to implement that in `NodeUtils`.\n  // See https://github.com/fgnass/domino/pull/142 for more information.\n  serialize: { value: function() {\n    if (this._innerHTML) {\n      return this._innerHTML;\n    }\n    var s = '';\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n      s += NodeUtils.serializeOne(kid, this);\n    }\n    return s;\n  }},\n\n  // Non-standard, but often useful for debugging.\n  outerHTML: {\n    get: function() {\n      return NodeUtils.serializeOne(this, { nodeType: 0 });\n    },\n    set: utils.nyi,\n  },\n\n  // mirror node type properties in the prototype, so they are present\n  // in instances of Node (and subclasses)\n  ELEMENT_NODE:                { value: ELEMENT_NODE },\n  ATTRIBUTE_NODE:              { value: ATTRIBUTE_NODE },\n  TEXT_NODE:                   { value: TEXT_NODE },\n  CDATA_SECTION_NODE:          { value: CDATA_SECTION_NODE },\n  ENTITY_REFERENCE_NODE:       { value: ENTITY_REFERENCE_NODE },\n  ENTITY_NODE:                 { value: ENTITY_NODE },\n  PROCESSING_INSTRUCTION_NODE: { value: PROCESSING_INSTRUCTION_NODE },\n  COMMENT_NODE:                { value: COMMENT_NODE },\n  DOCUMENT_NODE:               { value: DOCUMENT_NODE },\n  DOCUMENT_TYPE_NODE:          { value: DOCUMENT_TYPE_NODE },\n  DOCUMENT_FRAGMENT_NODE:      { value: DOCUMENT_FRAGMENT_NODE },\n  NOTATION_NODE:               { value: NOTATION_NODE },\n\n  DOCUMENT_POSITION_DISCONNECTED: { value: DOCUMENT_POSITION_DISCONNECTED },\n  DOCUMENT_POSITION_PRECEDING:    { value: DOCUMENT_POSITION_PRECEDING },\n  DOCUMENT_POSITION_FOLLOWING:    { value: DOCUMENT_POSITION_FOLLOWING },\n  DOCUMENT_POSITION_CONTAINS:     { value: DOCUMENT_POSITION_CONTAINS },\n  DOCUMENT_POSITION_CONTAINED_BY: { value: DOCUMENT_POSITION_CONTAINED_BY },\n  DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { value: DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC },\n});\n","/* jshint esversion: 6 */\n\"use strict\";\n\nmodule.exports = class NodeList extends Array {\n    constructor(a) {\n        super((a && a.length) || 0);\n        if (a) {\n            for (var idx in a) { this[idx] = a[idx]; }\n        }\n    }\n    item(i) { return this[i] || null; }\n};\n","\"use strict\";\n\n// No support for subclassing array, return an actual Array object.\nfunction item(i) {\n    /* jshint validthis: true */\n    return this[i] || null;\n}\n\nfunction NodeList(a) {\n    if (!a) a = [];\n    a.item = item;\n    return a;\n}\n\nmodule.exports = NodeList;\n","\"use strict\";\n\nvar NodeList;\n\ntry {\n    // Attempt to use ES6-style Array subclass if possible.\n    NodeList = require('./NodeList.es6.js');\n} catch (e) {\n    // No support for subclassing array, return an actual Array object.\n    NodeList = require('./NodeList.es5.js');\n}\n\nmodule.exports = NodeList;\n","\"use strict\";\nmodule.exports = ContainerNode;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\n\n// This class defines common functionality for node subtypes that\n// can have children\n\nfunction ContainerNode() {\n  Node.call(this);\n  this._firstChild = this._childNodes = null;\n}\n\n// Primary representation is a circular linked list of siblings\nContainerNode.prototype = Object.create(Node.prototype, {\n\n  hasChildNodes: { value: function() {\n    if (this._childNodes) {\n      return this._childNodes.length > 0;\n    }\n    return this._firstChild !== null;\n  }},\n\n  childNodes: { get: function() {\n    this._ensureChildNodes();\n    return this._childNodes;\n  }},\n\n  firstChild: { get: function() {\n    if (this._childNodes) {\n      return this._childNodes.length === 0 ? null : this._childNodes[0];\n    }\n    return this._firstChild;\n  }},\n\n  lastChild: { get: function() {\n    var kids = this._childNodes, first;\n    if (kids) {\n      return kids.length === 0 ? null: kids[kids.length-1];\n    }\n    first = this._firstChild;\n    if (first === null) { return null; }\n    return first._previousSibling; // circular linked list\n  }},\n\n  _ensureChildNodes: { value: function() {\n    if (this._childNodes) { return; }\n    var first = this._firstChild,\n        kid = first,\n        childNodes = this._childNodes = new NodeList();\n    if (first) do {\n      childNodes.push(kid);\n      kid = kid._nextSibling;\n    } while (kid !== first); // circular linked list\n    this._firstChild = null; // free memory\n  }},\n\n  // Remove all of this node's children.  This is a minor\n  // optimization that only calls modify() once.\n  removeChildren: { value: function removeChildren() {\n    var root = this.rooted ? this.ownerDocument : null,\n        next = this.firstChild,\n        kid;\n    while (next !== null) {\n      kid = next;\n      next = kid.nextSibling;\n\n      if (root) root.mutateRemove(kid);\n      kid.parentNode = null;\n    }\n    if (this._childNodes) {\n      this._childNodes.length = 0;\n    } else {\n      this._firstChild = null;\n    }\n    this.modify(); // Update last modified type once only\n  }},\n\n});\n","\"use strict\";\n// This grammar is from the XML and XML Namespace specs. It specifies whether\n// a string (such as an element or attribute name) is a valid Name or QName.\n//\n// Name           ::= NameStartChar (NameChar)*\n// NameStartChar  ::= \":\" | [A-Z] | \"_\" | [a-z] |\n//                    [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] |\n//                    [#x370-#x37D] | [#x37F-#x1FFF] |\n//                    [#x200C-#x200D] | [#x2070-#x218F] |\n//                    [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\n//                    [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |\n//                    [#x10000-#xEFFFF]\n//\n// NameChar       ::= NameStartChar | \"-\" | \".\" | [0-9] |\n//                    #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//\n// QName          ::= PrefixedName| UnprefixedName\n// PrefixedName   ::= Prefix ':' LocalPart\n// UnprefixedName ::= LocalPart\n// Prefix         ::= NCName\n// LocalPart      ::= NCName\n// NCName         ::= Name - (Char* ':' Char*)\n//                    # An XML Name, minus the \":\"\n//\n\nexports.isValidName = isValidName;\nexports.isValidQName = isValidQName;\n\n// Most names will be ASCII only. Try matching against simple regexps first\nvar simplename = /^[_:A-Za-z][-.:\\w]+$/;\nvar simpleqname = /^([_A-Za-z][-.\\w]+|[_A-Za-z][-.\\w]+:[_A-Za-z][-.\\w]+)$/;\n\n// If the regular expressions above fail, try more complex ones that work\n// for any identifiers using codepoints from the Unicode BMP\nvar ncnamestartchars = \"_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02ff\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\";\nvar ncnamechars = \"-._A-Za-z0-9\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02ff\\u0300-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203f\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\";\n\nvar ncname = \"[\" + ncnamestartchars + \"][\" + ncnamechars + \"]*\";\nvar namestartchars = ncnamestartchars + \":\";\nvar namechars = ncnamechars + \":\";\nvar name = new RegExp(\"^[\" + namestartchars + \"]\" + \"[\" + namechars + \"]*$\");\nvar qname = new RegExp(\"^(\" + ncname + \"|\" + ncname + \":\" + ncname + \")$\");\n\n// XML says that these characters are also legal:\n// [#x10000-#xEFFFF].  So if the patterns above fail, and the\n// target string includes surrogates, then try the following\n// patterns that allow surrogates and then run an extra validation\n// step to make sure that the surrogates are in valid pairs and in\n// the right range.  Note that since the characters \\uf0000 to \\u1f0000\n// are not allowed, it means that the high surrogate can only go up to\n// \\uDB7f instead of \\uDBFF.\nvar hassurrogates = /[\\uD800-\\uDB7F\\uDC00-\\uDFFF]/;\nvar surrogatechars = /[\\uD800-\\uDB7F\\uDC00-\\uDFFF]/g;\nvar surrogatepairs = /[\\uD800-\\uDB7F][\\uDC00-\\uDFFF]/g;\n\n// Modify the variables above to allow surrogates\nncnamestartchars += \"\\uD800-\\uDB7F\\uDC00-\\uDFFF\";\nncnamechars += \"\\uD800-\\uDB7F\\uDC00-\\uDFFF\";\nncname = \"[\" + ncnamestartchars + \"][\" + ncnamechars + \"]*\";\nnamestartchars = ncnamestartchars + \":\";\nnamechars = ncnamechars + \":\";\n\n// Build another set of regexps that include surrogates\nvar surrogatename = new RegExp(\"^[\" + namestartchars + \"]\" + \"[\" + namechars + \"]*$\");\nvar surrogateqname = new RegExp(\"^(\" + ncname + \"|\" + ncname + \":\" + ncname + \")$\");\n\nfunction isValidName(s) {\n  if (simplename.test(s)) return true; // Plain ASCII\n  if (name.test(s)) return true; // Unicode BMP\n\n  // Maybe the tests above failed because s includes surrogate pairs\n  // Most likely, though, they failed for some more basic syntax problem\n  if (!hassurrogates.test(s)) return false;\n\n  // Is the string a valid name if we allow surrogates?\n  if (!surrogatename.test(s)) return false;\n\n  // Finally, are the surrogates all correctly paired up?\n  var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs);\n  return pairs !== null && 2*pairs.length === chars.length;\n}\n\nfunction isValidQName(s) {\n  if (simpleqname.test(s)) return true; // Plain ASCII\n  if (qname.test(s)) return true; // Unicode BMP\n\n  if (!hassurrogates.test(s)) return false;\n  if (!surrogateqname.test(s)) return false;\n  var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs);\n  return pairs !== null && 2*pairs.length === chars.length;\n}\n","\"use strict\";\nvar utils = require('./utils');\n\nexports.property = function(attr) {\n  if (Array.isArray(attr.type)) {\n    var valid = Object.create(null);\n    attr.type.forEach(function(val) {\n      valid[val.value || val] = val.alias || val;\n    });\n    var missingValueDefault = attr.missing;\n    if (missingValueDefault===undefined) { missingValueDefault = null; }\n    var invalidValueDefault = attr.invalid;\n    if (invalidValueDefault===undefined) { invalidValueDefault = missingValueDefault; }\n    return {\n      get: function() {\n        var v = this._getattr(attr.name);\n        if (v === null) return missingValueDefault;\n\n        v = valid[v.toLowerCase()];\n        if (v !== undefined) return v;\n        if (invalidValueDefault !== null) return invalidValueDefault;\n        return v;\n      },\n      set: function(v) {\n        this._setattr(attr.name, v);\n      }\n    };\n  }\n  else if (attr.type === Boolean) {\n    return {\n      get: function() {\n        return this.hasAttribute(attr.name);\n      },\n      set: function(v) {\n        if (v) {\n          this._setattr(attr.name, '');\n        }\n        else {\n          this.removeAttribute(attr.name);\n        }\n      }\n    };\n  }\n  else if (attr.type === Number ||\n           attr.type === \"long\" ||\n           attr.type === \"unsigned long\" ||\n           attr.type === \"limited unsigned long with fallback\") {\n    return numberPropDesc(attr);\n  }\n  else if (!attr.type || attr.type === String) {\n    return {\n      get: function() { return this._getattr(attr.name) || ''; },\n      set: function(v) {\n        if (attr.treatNullAsEmptyString && v === null) { v = ''; }\n        this._setattr(attr.name, v);\n      }\n    };\n  }\n  else if (typeof attr.type === 'function') {\n    return attr.type(attr.name, attr);\n  }\n  throw new Error('Invalid attribute definition');\n};\n\n// See http://www.whatwg.org/specs/web-apps/current-work/#reflect\n//\n// defval is the default value. If it is a function, then that function\n// will be invoked as a method of the element to obtain the default.\n// If no default is specified for a given attribute, then the default\n// depends on the type of the attribute, but since this function handles\n// 4 integer cases, you must specify the default value in each call\n//\n// min and max define a valid range for getting the attribute.\n//\n// setmin defines a minimum value when setting.  If the value is less\n// than that, then throw INDEX_SIZE_ERR.\n//\n// Conveniently, JavaScript's parseInt function appears to be\n// compatible with HTML's 'rules for parsing integers'\nfunction numberPropDesc(a) {\n  var def;\n  if(typeof a.default === 'function') {\n    def = a.default;\n  }\n  else if(typeof a.default === 'number') {\n    def = function() { return a.default; };\n  }\n  else {\n    def = function() { utils.assert(false, typeof a.default); };\n  }\n  var unsigned_long = (a.type === 'unsigned long');\n  var signed_long = (a.type === 'long');\n  var unsigned_fallback = (a.type === 'limited unsigned long with fallback');\n  var min = a.min, max = a.max, setmin = a.setmin;\n  if (min === undefined) {\n    if (unsigned_long) min = 0;\n    if (signed_long) min = -0x80000000;\n    if (unsigned_fallback) min = 1;\n  }\n  if (max === undefined) {\n    if (unsigned_long || signed_long || unsigned_fallback) max = 0x7FFFFFFF;\n  }\n\n  return {\n    get: function() {\n      var v = this._getattr(a.name);\n      var n = a.float ? parseFloat(v) : parseInt(v, 10);\n      if (v === null || !isFinite(n) || (min !== undefined && n < min) || (max !== undefined && n > max)) {\n        return def.call(this);\n      }\n      if (unsigned_long || signed_long || unsigned_fallback) {\n        if (!/^[ \\t\\n\\f\\r]*[-+]?[0-9]/.test(v)) { return def.call(this); }\n        n = n|0; // jshint ignore:line\n      }\n      return n;\n    },\n    set: function(v) {\n      if (!a.float) { v = Math.floor(v); }\n      if (setmin !== undefined && v < setmin) {\n        utils.IndexSizeError(a.name + ' set to ' + v);\n      }\n      if (unsigned_long) {\n        v = (v < 0 || v > 0x7FFFFFFF) ? def.call(this) :\n          (v|0);  // jshint ignore:line\n      } else if (unsigned_fallback) {\n        v = (v < 1 || v > 0x7FFFFFFF) ? def.call(this) :\n          (v|0); // jshint ignore:line\n      } else if (signed_long) {\n        v = (v < -0x80000000 || v > 0x7FFFFFFF) ? def.call(this) :\n          (v|0); // jshint ignore:line\n      }\n      this._setattr(a.name, String(v));\n    }\n  };\n}\n\n// This is a utility function for setting up change handler functions\n// for attributes like 'id' that require special handling when they change.\nexports.registerChangeHandler = function(c, name, handler) {\n  var p = c.prototype;\n\n  // If p does not already have its own _attributeChangeHandlers\n  // then create one for it, inheriting from the inherited\n  // _attributeChangeHandlers. At the top (for the Element class) the\n  // _attributeChangeHandlers object will be created with a null prototype.\n  if (!Object.prototype.hasOwnProperty.call(p, '_attributeChangeHandlers')) {\n    p._attributeChangeHandlers =\n      Object.create(p._attributeChangeHandlers || null);\n  }\n\n  p._attributeChangeHandlers[name] = handler;\n};\n","\"use strict\";\nmodule.exports = FilteredElementList;\n\nvar Node = require('./Node');\n\n//\n// This file defines node list implementation that lazily traverses\n// the document tree (or a subtree rooted at any element) and includes\n// only those elements for which a specified filter function returns true.\n// It is used to implement the\n// {Document,Element}.getElementsBy{TagName,ClassName}{,NS} methods.\n//\n// XXX this should inherit from NodeList\n\nfunction FilteredElementList(root, filter) {\n  this.root = root;\n  this.filter = filter;\n  this.lastModTime = root.lastModTime;\n  this.done = false;\n  this.cache = [];\n  this.traverse();\n}\n\nFilteredElementList.prototype = Object.create(Object.prototype, {\n  length: { get: function() {\n    this.checkcache();\n    if (!this.done) this.traverse();\n    return this.cache.length;\n  } },\n\n  item: { value: function(n) {\n    this.checkcache();\n    if (!this.done && n >= this.cache.length) {\n      // This can lead to O(N^2) behavior if we stop when we get to n\n      // and the caller is iterating through the items in order; so\n      // be sure to do the full traverse here.\n      this.traverse(/*n*/);\n    }\n    return this.cache[n];\n  } },\n\n  checkcache: { value: function() {\n    if (this.lastModTime !== this.root.lastModTime) {\n      // subtree has changed, so invalidate cache\n      for (var i = this.cache.length-1; i>=0; i--) {\n        this[i] = undefined;\n      }\n      this.cache.length = 0;\n      this.done = false;\n      this.lastModTime = this.root.lastModTime;\n    }\n  } },\n\n  // If n is specified, then traverse the tree until we've found the nth\n  // item (or until we've found all items).  If n is not specified,\n  // traverse until we've found all items.\n  traverse: { value: function(n) {\n    // increment n so we can compare to length, and so it is never falsy\n    if (n !== undefined) n++;\n\n    var elt;\n    while ((elt = this.next()) !== null) {\n      this[this.cache.length] = elt; //XXX Use proxy instead\n      this.cache.push(elt);\n      if (n && this.cache.length === n) return;\n    }\n\n    // no next element, so we've found everything\n    this.done = true;\n  } },\n\n  // Return the next element under root that matches filter\n  next: { value: function() {\n    var start = (this.cache.length === 0) ? this.root // Start at the root or at\n      : this.cache[this.cache.length-1]; // the last element we found\n\n    var elt;\n    if (start.nodeType === Node.DOCUMENT_NODE)\n      elt = start.documentElement;\n    else\n      elt = start.nextElement(this.root);\n\n    while(elt) {\n      if (this.filter(elt)) {\n        return elt;\n      }\n\n      elt = elt.nextElement(this.root);\n    }\n    return null;\n  } },\n});\n","\"use strict\";\n// DOMTokenList implementation based on https://github.com/Raynos/DOM-shim\nvar utils = require('./utils');\n\nmodule.exports = DOMTokenList;\n\nfunction DOMTokenList(getter, setter) {\n  this._getString = getter;\n  this._setString = setter;\n  this._length = 0;\n  this._lastStringValue = '';\n  this._update();\n}\n\nObject.defineProperties(DOMTokenList.prototype, {\n  length: { get: function() { return this._length; } },\n  item: { value: function(index) {\n    var list = getList(this);\n    if (index < 0 || index >= list.length) {\n      return null;\n    }\n    return list[index];\n  }},\n\n  contains: { value: function(token) {\n    token = String(token); // no error checking for contains()\n    var list = getList(this);\n    return list.indexOf(token) > -1;\n  }},\n\n  add: { value: function() {\n    var list = getList(this);\n    for (var i = 0, len = arguments.length; i < len; i++) {\n      var token = handleErrors(arguments[i]);\n      if (list.indexOf(token) < 0) {\n        list.push(token);\n      }\n    }\n    // Note: as per spec, if handleErrors() throws any errors, we never\n    // make it here and none of the changes take effect.\n    // Also per spec: we run the \"update steps\" even if no change was\n    // made (ie, if the token already existed)\n    this._update(list);\n  }},\n\n  remove: { value: function() {\n    var list = getList(this);\n    for (var i = 0, len = arguments.length; i < len; i++) {\n      var token = handleErrors(arguments[i]);\n      var index = list.indexOf(token);\n      if (index > -1) {\n        list.splice(index, 1);\n      }\n    }\n    // Note: as per spec, if handleErrors() throws any errors, we never\n    // make it here and none of the changes take effect.\n    // Also per spec: we run the \"update steps\" even if no change was\n    // made (ie, if the token wasn't previously present)\n    this._update(list);\n  }},\n\n  toggle: { value: function toggle(token, force) {\n    token = handleErrors(token);\n    if (this.contains(token)) {\n      if (force === undefined || force === false) {\n        this.remove(token);\n        return false;\n      }\n      return true;\n    } else {\n      if (force === undefined || force === true) {\n        this.add(token);\n        return true;\n      }\n      return false;\n    }\n  }},\n\n  replace: { value: function replace(token, newToken) {\n    // weird corner case of spec: if `token` contains whitespace, but\n    // `newToken` is the empty string, we must throw SyntaxError not\n    // InvalidCharacterError (sigh)\n    if (String(newToken)==='') { utils.SyntaxError(); }\n    token = handleErrors(token);\n    newToken = handleErrors(newToken);\n    var list = getList(this);\n    var idx = list.indexOf(token);\n    if (idx < 0) {\n      // Note that, per spec, we do not run the update steps on this path.\n      return false;\n    }\n    var idx2 = list.indexOf(newToken);\n    if (idx2 < 0) {\n      list[idx] = newToken;\n    } else {\n      // \"replace the first instance of either `token` or `newToken` with\n      // `newToken` and remove all other instances\"\n      if (idx < idx2) {\n        list[idx] = newToken;\n        list.splice(idx2, 1);\n      } else {\n        // idx2 is already `newToken`\n        list.splice(idx, 1);\n      }\n    }\n    this._update(list);\n    return true;\n  }},\n\n  toString: { value: function() {\n    return this._getString();\n  }},\n\n  value: {\n    get: function() {\n      return this._getString();\n    },\n    set: function(v) {\n      this._setString(v);\n      this._update();\n    }\n  },\n\n  // Called when the setter is called from outside this interface.\n  _update: { value: function(list) {\n    if (list) {\n      fixIndex(this, list);\n      this._setString(list.join(\" \").trim());\n    } else {\n      fixIndex(this, getList(this));\n    }\n    this._lastStringValue = this._getString();\n  } },\n});\n\nfunction fixIndex(clist, list) {\n  var oldLength = clist._length;\n  var i;\n  clist._length = list.length;\n  for (i = 0; i < list.length; i++) {\n    clist[i] = list[i];\n  }\n  // Clear/free old entries.\n  for (; i < oldLength; i++) {\n    clist[i] = undefined;\n  }\n}\n\nfunction handleErrors(token) {\n  token = String(token);\n  if (token === \"\") {\n    utils.SyntaxError();\n  }\n  if (/[ \\t\\r\\n\\f]/.test(token)) {\n    utils.InvalidCharacterError();\n  }\n  return token;\n}\n\nfunction toArray(clist) {\n  var length = clist._length;\n  var arr = Array(length);\n  for (var i = 0; i < length; i++) {\n    arr[i] = clist[i];\n  }\n  return arr;\n}\n\nfunction getList(clist) {\n  var strProp = clist._getString();\n  if (strProp === clist._lastStringValue) {\n    return toArray(clist);\n  }\n  var str = strProp.replace(/(^[ \\t\\r\\n\\f]+)|([ \\t\\r\\n\\f]+$)/g, '');\n  if (str === \"\") {\n    return [];\n  } else {\n    var seen = Object.create(null);\n    return str.split(/[ \\t\\r\\n\\f]+/g).filter(function(n) {\n      var key = '$' + n;\n      if (seen[key]) { return false; }\n      seen[key] = true;\n      return true;\n    });\n  }\n}\n","\"use strict\";\n/* jshint eqnull: true */\n/**\n * Zest (https://github.com/chjj/zest)\n * A css selector engine.\n * Copyright (c) 2011-2012, Christopher Jeffrey. (MIT Licensed)\n * Domino version based on Zest v0.1.3 with bugfixes applied.\n */\n\n/**\n * Helpers\n */\n\nvar window = Object.create(null, {\n  location: { get: function() {\n    throw new Error('window.location is not supported.');\n  } }\n});\n\nvar compareDocumentPosition = function(a, b) {\n      return a.compareDocumentPosition(b);\n};\n\nvar order = function(a, b) {\n  /* jshint bitwise: false */\n  return compareDocumentPosition(a, b) & 2 ? 1 : -1;\n};\n\nvar next = function(el) {\n  while ((el = el.nextSibling)\n         && el.nodeType !== 1);\n  return el;\n};\n\nvar prev = function(el) {\n  while ((el = el.previousSibling)\n         && el.nodeType !== 1);\n  return el;\n};\n\nvar child = function(el) {\n  /*jshint -W084 */\n  if (el = el.firstChild) {\n    while (el.nodeType !== 1\n           && (el = el.nextSibling));\n  }\n  return el;\n};\n\nvar lastChild = function(el) {\n  /*jshint -W084 */\n  if (el = el.lastChild) {\n    while (el.nodeType !== 1\n           && (el = el.previousSibling));\n  }\n  return el;\n};\n\nvar parentIsElement = function(n) {\n  if (!n.parentNode) { return false; }\n  var nodeType = n.parentNode.nodeType;\n  // The root `html` element can be a first- or last-child, too.\n  return nodeType === 1 || nodeType === 9;\n};\n\nvar unquote = function(str) {\n  if (!str) return str;\n  var ch = str[0];\n  if (ch === '\"' || ch === '\\'') {\n    if (str[str.length-1] === ch) {\n      str = str.slice(1, -1);\n    } else {\n      // bad string.\n      str = str.slice(1);\n    }\n    return str.replace(rules.str_escape, function(s) {\n      var m = /^\\\\(?:([0-9A-Fa-f]+)|([\\r\\n\\f]+))/.exec(s);\n      if (!m) { return s.slice(1); }\n      if (m[2]) { return ''; /* escaped newlines are ignored in strings. */ }\n      var cp = parseInt(m[1], 16);\n      return String.fromCodePoint ? String.fromCodePoint(cp) :\n        // Not all JavaScript implementations have String.fromCodePoint yet.\n        String.fromCharCode(cp);\n    });\n  } else if (rules.ident.test(str)) {\n    return decodeid(str);\n  } else {\n    // NUMBER, PERCENTAGE, DIMENSION, etc\n    return str;\n  }\n};\n\nvar decodeid = function(str) {\n  return str.replace(rules.escape, function(s) {\n    var m = /^\\\\([0-9A-Fa-f]+)/.exec(s);\n    if (!m) { return s[1]; }\n    var cp = parseInt(m[1], 16);\n    return String.fromCodePoint ? String.fromCodePoint(cp) :\n      // Not all JavaScript implementations have String.fromCodePoint yet.\n      String.fromCharCode(cp);\n  });\n};\n\nvar indexOf = (function() {\n  if (Array.prototype.indexOf) {\n    return Array.prototype.indexOf;\n  }\n  return function(obj, item) {\n    var i = this.length;\n    while (i--) {\n      if (this[i] === item) return i;\n    }\n    return -1;\n  };\n})();\n\nvar makeInside = function(start, end) {\n  var regex = rules.inside.source\n    .replace(/</g, start)\n    .replace(/>/g, end);\n\n  return new RegExp(regex);\n};\n\nvar replace = function(regex, name, val) {\n  regex = regex.source;\n  regex = regex.replace(name, val.source || val);\n  return new RegExp(regex);\n};\n\nvar truncateUrl = function(url, num) {\n  return url\n    .replace(/^(?:\\w+:\\/\\/|\\/+)/, '')\n    .replace(/(?:\\/+|\\/*#.*?)$/, '')\n    .split('/', num)\n    .join('/');\n};\n\n/**\n * Handle `nth` Selectors\n */\n\nvar parseNth = function(param_, test) {\n  var param = param_.replace(/\\s+/g, '')\n    , cap;\n\n  if (param === 'even') {\n    param = '2n+0';\n  } else if (param === 'odd') {\n    param = '2n+1';\n  } else if (param.indexOf('n') === -1) {\n    param = '0n' + param;\n  }\n\n  cap = /^([+-])?(\\d+)?n([+-])?(\\d+)?$/.exec(param);\n\n  return {\n    group: cap[1] === '-'\n      ? -(cap[2] || 1)\n      : +(cap[2] || 1),\n    offset: cap[4]\n      ? (cap[3] === '-' ? -cap[4] : +cap[4])\n      : 0\n  };\n};\n\nvar nth = function(param_, test, last) {\n  var param = parseNth(param_)\n    , group = param.group\n    , offset = param.offset\n    , find = !last ? child : lastChild\n    , advance = !last ? next : prev;\n\n  return function(el) {\n    if (!parentIsElement(el)) return;\n\n    var rel = find(el.parentNode)\n      , pos = 0;\n\n    while (rel) {\n      if (test(rel, el)) pos++;\n      if (rel === el) {\n        pos -= offset;\n        return group && pos\n          ? (pos % group) === 0 && (pos < 0 === group < 0)\n          : !pos;\n      }\n      rel = advance(rel);\n    }\n  };\n};\n\n/**\n * Simple Selectors\n */\n\nvar selectors = {\n  '*': (function() {\n    if (false/*function() {\n      var el = document.createElement('div');\n      el.appendChild(document.createComment(''));\n      return !!el.getElementsByTagName('*')[0];\n    }()*/) {\n      return function(el) {\n        if (el.nodeType === 1) return true;\n      };\n    }\n    return function() {\n      return true;\n    };\n  })(),\n  'type': function(type) {\n    type = type.toLowerCase();\n    return function(el) {\n      return el.nodeName.toLowerCase() === type;\n    };\n  },\n  'attr': function(key, op, val, i) {\n    op = operators[op];\n    return function(el) {\n      var attr;\n      switch (key) {\n        case 'for':\n          attr = el.htmlFor;\n          break;\n        case 'class':\n          // className is '' when non-existent\n          // getAttribute('class') is null\n          attr = el.className;\n          if (attr === '' && el.getAttribute('class') == null) {\n            attr = null;\n          }\n          break;\n        case 'href':\n        case 'src':\n          attr = el.getAttribute(key, 2);\n          break;\n        case 'title':\n          // getAttribute('title') can be '' when non-existent sometimes?\n          attr = el.getAttribute('title') || null;\n          break;\n        // careful with attributes with special getter functions\n        case 'id':\n        case 'lang':\n        case 'dir':\n        case 'accessKey':\n        case 'hidden':\n        case 'tabIndex':\n        case 'style':\n          if (el.getAttribute) {\n            attr = el.getAttribute(key);\n            break;\n          }\n        /* falls through */\n        default:\n          if (el.hasAttribute && !el.hasAttribute(key)) {\n            break;\n          }\n          attr = el[key] != null\n            ? el[key]\n            : el.getAttribute && el.getAttribute(key);\n          break;\n      }\n      if (attr == null) return;\n      attr = attr + '';\n      if (i) {\n        attr = attr.toLowerCase();\n        val = val.toLowerCase();\n      }\n      return op(attr, val);\n    };\n  },\n  ':first-child': function(el) {\n    return !prev(el) && parentIsElement(el);\n  },\n  ':last-child': function(el) {\n    return !next(el) && parentIsElement(el);\n  },\n  ':only-child': function(el) {\n    return !prev(el) && !next(el) && parentIsElement(el);\n  },\n  ':nth-child': function(param, last) {\n    return nth(param, function() {\n      return true;\n    }, last);\n  },\n  ':nth-last-child': function(param) {\n    return selectors[':nth-child'](param, true);\n  },\n  ':root': function(el) {\n    return el.ownerDocument.documentElement === el;\n  },\n  ':empty': function(el) {\n    return !el.firstChild;\n  },\n  ':not': function(sel) {\n    var test = compileGroup(sel);\n    return function(el) {\n      return !test(el);\n    };\n  },\n  ':first-of-type': function(el) {\n    if (!parentIsElement(el)) return;\n    var type = el.nodeName;\n    /*jshint -W084 */\n    while (el = prev(el)) {\n      if (el.nodeName === type) return;\n    }\n    return true;\n  },\n  ':last-of-type': function(el) {\n    if (!parentIsElement(el)) return;\n    var type = el.nodeName;\n    /*jshint -W084 */\n    while (el = next(el)) {\n      if (el.nodeName === type) return;\n    }\n    return true;\n  },\n  ':only-of-type': function(el) {\n    return selectors[':first-of-type'](el)\n        && selectors[':last-of-type'](el);\n  },\n  ':nth-of-type': function(param, last) {\n    return nth(param, function(rel, el) {\n      return rel.nodeName === el.nodeName;\n    }, last);\n  },\n  ':nth-last-of-type': function(param) {\n    return selectors[':nth-of-type'](param, true);\n  },\n  ':checked': function(el) {\n    return !!(el.checked || el.selected);\n  },\n  ':indeterminate': function(el) {\n    return !selectors[':checked'](el);\n  },\n  ':enabled': function(el) {\n    return !el.disabled && el.type !== 'hidden';\n  },\n  ':disabled': function(el) {\n    return !!el.disabled;\n  },\n  ':target': function(el) {\n    return el.id === window.location.hash.substring(1);\n  },\n  ':focus': function(el) {\n    return el === el.ownerDocument.activeElement;\n  },\n  ':is': function(sel) {\n    return compileGroup(sel);\n  },\n  // :matches is an older name for :is; see\n  // https://github.com/w3c/csswg-drafts/issues/3258\n  ':matches': function(sel) {\n    return selectors[':is'](sel);\n  },\n  ':nth-match': function(param, last) {\n    var args = param.split(/\\s*,\\s*/)\n      , arg = args.shift()\n      , test = compileGroup(args.join(','));\n\n    return nth(arg, test, last);\n  },\n  ':nth-last-match': function(param) {\n    return selectors[':nth-match'](param, true);\n  },\n  ':links-here': function(el) {\n    return el + '' === window.location + '';\n  },\n  ':lang': function(param) {\n    return function(el) {\n      while (el) {\n        if (el.lang) return el.lang.indexOf(param) === 0;\n        el = el.parentNode;\n      }\n    };\n  },\n  ':dir': function(param) {\n    return function(el) {\n      while (el) {\n        if (el.dir) return el.dir === param;\n        el = el.parentNode;\n      }\n    };\n  },\n  ':scope': function(el, con) {\n    var context = con || el.ownerDocument;\n    if (context.nodeType === 9) {\n      return el === context.documentElement;\n    }\n    return el === context;\n  },\n  ':any-link': function(el) {\n    return typeof el.href === 'string';\n  },\n  ':local-link': function(el) {\n    if (el.nodeName) {\n      return el.href && el.host === window.location.host;\n    }\n    var param = +el + 1;\n    return function(el) {\n      if (!el.href) return;\n\n      var url = window.location + ''\n        , href = el + '';\n\n      return truncateUrl(url, param) === truncateUrl(href, param);\n    };\n  },\n  ':default': function(el) {\n    return !!el.defaultSelected;\n  },\n  ':valid': function(el) {\n    return el.willValidate || (el.validity && el.validity.valid);\n  },\n  ':invalid': function(el) {\n    return !selectors[':valid'](el);\n  },\n  ':in-range': function(el) {\n    return el.value > el.min && el.value <= el.max;\n  },\n  ':out-of-range': function(el) {\n    return !selectors[':in-range'](el);\n  },\n  ':required': function(el) {\n    return !!el.required;\n  },\n  ':optional': function(el) {\n    return !el.required;\n  },\n  ':read-only': function(el) {\n    if (el.readOnly) return true;\n\n    var attr = el.getAttribute('contenteditable')\n      , prop = el.contentEditable\n      , name = el.nodeName.toLowerCase();\n\n    name = name !== 'input' && name !== 'textarea';\n\n    return (name || el.disabled) && attr == null && prop !== 'true';\n  },\n  ':read-write': function(el) {\n    return !selectors[':read-only'](el);\n  },\n  ':hover': function() {\n    throw new Error(':hover is not supported.');\n  },\n  ':active': function() {\n    throw new Error(':active is not supported.');\n  },\n  ':link': function() {\n    throw new Error(':link is not supported.');\n  },\n  ':visited': function() {\n    throw new Error(':visited is not supported.');\n  },\n  ':column': function() {\n    throw new Error(':column is not supported.');\n  },\n  ':nth-column': function() {\n    throw new Error(':nth-column is not supported.');\n  },\n  ':nth-last-column': function() {\n    throw new Error(':nth-last-column is not supported.');\n  },\n  ':current': function() {\n    throw new Error(':current is not supported.');\n  },\n  ':past': function() {\n    throw new Error(':past is not supported.');\n  },\n  ':future': function() {\n    throw new Error(':future is not supported.');\n  },\n  // Non-standard, for compatibility purposes.\n  ':contains': function(param) {\n    return function(el) {\n      var text = el.innerText || el.textContent || el.value || '';\n      return text.indexOf(param) !== -1;\n    };\n  },\n  ':has': function(param) {\n    return function(el) {\n      return find(param, el).length > 0;\n    };\n  }\n  // Potentially add more pseudo selectors for\n  // compatibility with sizzle and most other\n  // selector engines (?).\n};\n\n/**\n * Attribute Operators\n */\n\nvar operators = {\n  '-': function() {\n    return true;\n  },\n  '=': function(attr, val) {\n    return attr === val;\n  },\n  '*=': function(attr, val) {\n    return attr.indexOf(val) !== -1;\n  },\n  '~=': function(attr, val) {\n    var i\n      , s\n      , f\n      , l;\n\n    for (s = 0; true; s = i + 1) {\n      i = attr.indexOf(val, s);\n      if (i === -1) return false;\n      f = attr[i - 1];\n      l = attr[i + val.length];\n      if ((!f || f === ' ') && (!l || l === ' ')) return true;\n    }\n  },\n  '|=': function(attr, val) {\n    var i = attr.indexOf(val)\n      , l;\n\n    if (i !== 0) return;\n    l = attr[i + val.length];\n\n    return l === '-' || !l;\n  },\n  '^=': function(attr, val) {\n    return attr.indexOf(val) === 0;\n  },\n  '$=': function(attr, val) {\n    var i = attr.lastIndexOf(val);\n    return i !== -1 && i + val.length === attr.length;\n  },\n  // non-standard\n  '!=': function(attr, val) {\n    return attr !== val;\n  }\n};\n\n/**\n * Combinator Logic\n */\n\nvar combinators = {\n  ' ': function(test) {\n    return function(el) {\n      /*jshint -W084 */\n      while (el = el.parentNode) {\n        if (test(el)) return el;\n      }\n    };\n  },\n  '>': function(test) {\n    return function(el) {\n      /*jshint -W084 */\n      if (el = el.parentNode) {\n        return test(el) && el;\n      }\n    };\n  },\n  '+': function(test) {\n    return function(el) {\n      /*jshint -W084 */\n      if (el = prev(el)) {\n        return test(el) && el;\n      }\n    };\n  },\n  '~': function(test) {\n    return function(el) {\n      /*jshint -W084 */\n      while (el = prev(el)) {\n        if (test(el)) return el;\n      }\n    };\n  },\n  'noop': function(test) {\n    return function(el) {\n      return test(el) && el;\n    };\n  },\n  'ref': function(test, name) {\n    var node;\n\n    function ref(el) {\n      var doc = el.ownerDocument\n        , nodes = doc.getElementsByTagName('*')\n        , i = nodes.length;\n\n      while (i--) {\n        node = nodes[i];\n        if (ref.test(el)) {\n          node = null;\n          return true;\n        }\n      }\n\n      node = null;\n    }\n\n    ref.combinator = function(el) {\n      if (!node || !node.getAttribute) return;\n\n      var attr = node.getAttribute(name) || '';\n      if (attr[0] === '#') attr = attr.substring(1);\n\n      if (attr === el.id && test(node)) {\n        return node;\n      }\n    };\n\n    return ref;\n  }\n};\n\n/**\n * Grammar\n */\n\nvar rules = {\n  escape: /\\\\(?:[^0-9A-Fa-f\\r\\n]|[0-9A-Fa-f]{1,6}[\\r\\n\\t ]?)/g,\n  str_escape: /(escape)|\\\\(\\n|\\r\\n?|\\f)/g,\n  nonascii: /[\\u00A0-\\uFFFF]/,\n  cssid: /(?:(?!-?[0-9])(?:escape|nonascii|[-_a-zA-Z0-9])+)/,\n  qname: /^ *(cssid|\\*)/,\n  simple: /^(?:([.#]cssid)|pseudo|attr)/,\n  ref: /^ *\\/(cssid)\\/ */,\n  combinator: /^(?: +([^ \\w*.#\\\\]) +|( )+|([^ \\w*.#\\\\]))(?! *$)/,\n  attr: /^\\[(cssid)(?:([^\\w]?=)(inside))?\\]/,\n  pseudo: /^(:cssid)(?:\\((inside)\\))?/,\n  inside: /(?:\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|<[^\"'>]*>|\\\\[\"'>]|[^\"'>])*/,\n  ident: /^(cssid)$/\n};\n\nrules.cssid = replace(rules.cssid, 'nonascii', rules.nonascii);\nrules.cssid = replace(rules.cssid, 'escape', rules.escape);\nrules.qname = replace(rules.qname, 'cssid', rules.cssid);\nrules.simple = replace(rules.simple, 'cssid', rules.cssid);\nrules.ref = replace(rules.ref, 'cssid', rules.cssid);\nrules.attr = replace(rules.attr, 'cssid', rules.cssid);\nrules.pseudo = replace(rules.pseudo, 'cssid', rules.cssid);\nrules.inside = replace(rules.inside, '[^\"\\'>]*', rules.inside);\nrules.attr = replace(rules.attr, 'inside', makeInside('\\\\[', '\\\\]'));\nrules.pseudo = replace(rules.pseudo, 'inside', makeInside('\\\\(', '\\\\)'));\nrules.simple = replace(rules.simple, 'pseudo', rules.pseudo);\nrules.simple = replace(rules.simple, 'attr', rules.attr);\nrules.ident = replace(rules.ident, 'cssid', rules.cssid);\nrules.str_escape = replace(rules.str_escape, 'escape', rules.escape);\n\n/**\n * Compiling\n */\n\nvar compile = function(sel_) {\n  var sel = sel_.replace(/^\\s+|\\s+$/g, '')\n    , test\n    , filter = []\n    , buff = []\n    , subject\n    , qname\n    , cap\n    , op\n    , ref;\n\n  /*jshint -W084 */\n  while (sel) {\n    if (cap = rules.qname.exec(sel)) {\n      sel = sel.substring(cap[0].length);\n      qname = decodeid(cap[1]);\n      buff.push(tok(qname, true));\n    } else if (cap = rules.simple.exec(sel)) {\n      sel = sel.substring(cap[0].length);\n      qname = '*';\n      buff.push(tok(qname, true));\n      buff.push(tok(cap));\n    } else {\n      throw new SyntaxError('Invalid selector.');\n    }\n\n    while (cap = rules.simple.exec(sel)) {\n      sel = sel.substring(cap[0].length);\n      buff.push(tok(cap));\n    }\n\n    if (sel[0] === '!') {\n      sel = sel.substring(1);\n      subject = makeSubject();\n      subject.qname = qname;\n      buff.push(subject.simple);\n    }\n\n    if (cap = rules.ref.exec(sel)) {\n      sel = sel.substring(cap[0].length);\n      ref = combinators.ref(makeSimple(buff), decodeid(cap[1]));\n      filter.push(ref.combinator);\n      buff = [];\n      continue;\n    }\n\n    if (cap = rules.combinator.exec(sel)) {\n      sel = sel.substring(cap[0].length);\n      op = cap[1] || cap[2] || cap[3];\n      if (op === ',') {\n        filter.push(combinators.noop(makeSimple(buff)));\n        break;\n      }\n    } else {\n      op = 'noop';\n    }\n\n    if (!combinators[op]) { throw new SyntaxError('Bad combinator.'); }\n    filter.push(combinators[op](makeSimple(buff)));\n    buff = [];\n  }\n\n  test = makeTest(filter);\n  test.qname = qname;\n  test.sel = sel;\n\n  if (subject) {\n    subject.lname = test.qname;\n\n    subject.test = test;\n    subject.qname = subject.qname;\n    subject.sel = test.sel;\n    test = subject;\n  }\n\n  if (ref) {\n    ref.test = test;\n    ref.qname = test.qname;\n    ref.sel = test.sel;\n    test = ref;\n  }\n\n  return test;\n};\n\nvar tok = function(cap, qname) {\n  // qname\n  if (qname) {\n    return cap === '*'\n      ? selectors['*']\n      : selectors.type(cap);\n  }\n\n  // class/id\n  if (cap[1]) {\n    return cap[1][0] === '.'\n\t  // XXX unescape here?  or in attr?\n      ? selectors.attr('class', '~=', decodeid(cap[1].substring(1)), false)\n      : selectors.attr('id', '=', decodeid(cap[1].substring(1)), false);\n  }\n\n  // pseudo-name\n  // inside-pseudo\n  if (cap[2]) {\n    return cap[3]\n      ? selectors[decodeid(cap[2])](unquote(cap[3]))\n      : selectors[decodeid(cap[2])];\n  }\n\n  // attr name\n  // attr op\n  // attr value\n  if (cap[4]) {\n    var value = cap[6];\n    var i = /[\"'\\s]\\s*I$/i.test(value);\n    if (i) {\n      value = value.replace(/\\s*I$/i, '');\n    }\n    return selectors.attr(decodeid(cap[4]), cap[5] || '-', unquote(value), i);\n  }\n\n  throw new SyntaxError('Unknown Selector.');\n};\n\nvar makeSimple = function(func) {\n  var l = func.length\n    , i;\n\n  // Potentially make sure\n  // `el` is truthy.\n  if (l < 2) return func[0];\n\n  return function(el) {\n    if (!el) return;\n    for (i = 0; i < l; i++) {\n      if (!func[i](el)) return;\n    }\n    return true;\n  };\n};\n\nvar makeTest = function(func) {\n  if (func.length < 2) {\n    return function(el) {\n      return !!func[0](el);\n    };\n  }\n  return function(el) {\n    var i = func.length;\n    while (i--) {\n      if (!(el = func[i](el))) return;\n    }\n    return true;\n  };\n};\n\nvar makeSubject = function() {\n  var target;\n\n  function subject(el) {\n    var node = el.ownerDocument\n      , scope = node.getElementsByTagName(subject.lname)\n      , i = scope.length;\n\n    while (i--) {\n      if (subject.test(scope[i]) && target === el) {\n        target = null;\n        return true;\n      }\n    }\n\n    target = null;\n  }\n\n  subject.simple = function(el) {\n    target = el;\n    return true;\n  };\n\n  return subject;\n};\n\nvar compileGroup = function(sel) {\n  var test = compile(sel)\n    , tests = [ test ];\n\n  while (test.sel) {\n    test = compile(test.sel);\n    tests.push(test);\n  }\n\n  if (tests.length < 2) return test;\n\n  return function(el) {\n    var l = tests.length\n      , i = 0;\n\n    for (; i < l; i++) {\n      if (tests[i](el)) return true;\n    }\n  };\n};\n\n/**\n * Selection\n */\n\nvar find = function(sel, node) {\n  var results = []\n    , test = compile(sel)\n    , scope = node.getElementsByTagName(test.qname)\n    , i = 0\n    , el;\n\n  /*jshint -W084 */\n  while (el = scope[i++]) {\n    if (test(el)) results.push(el);\n  }\n\n  if (test.sel) {\n    while (test.sel) {\n      test = compile(test.sel);\n      scope = node.getElementsByTagName(test.qname);\n      i = 0;\n      /*jshint -W084 */\n      while (el = scope[i++]) {\n        if (test(el) && indexOf.call(results, el) === -1) {\n          results.push(el);\n        }\n      }\n    }\n    results.sort(order);\n  }\n\n  return results;\n};\n\n/**\n * Expose\n */\n\nmodule.exports = exports = function(sel, context) {\n  /* when context isn't a DocumentFragment and the selector is simple: */\n  var id, r;\n  if (context.nodeType !== 11 && sel.indexOf(' ') === -1) {\n    if (sel[0] === '#' && context.rooted && /^#[A-Z_][-A-Z0-9_]*$/i.test(sel)) {\n      if (context.doc._hasMultipleElementsWithId) {\n        id = sel.substring(1);\n        if (!context.doc._hasMultipleElementsWithId(id)) {\n          r = context.doc.getElementById(id);\n          return r ? [r] : [];\n        }\n      }\n    }\n    if (sel[0] === '.' && /^\\.\\w+$/.test(sel)) {\n      return context.getElementsByClassName(sel.substring(1));\n    }\n    if (/^\\w+$/.test(sel)) {\n      return context.getElementsByTagName(sel);\n    }\n  }\n  /* do things the hard/slow way */\n  return find(sel, context);\n};\n\nexports.selectors = selectors;\nexports.operators = operators;\nexports.combinators = combinators;\n\nexports.matches = function(el, sel) {\n  var test = { sel: sel };\n  do {\n    test = compile(test.sel);\n    if (test(el)) { return true; }\n  } while (test.sel);\n  return false;\n};\n","\"use strict\";\n\nvar Node = require('./Node');\nvar LinkedList = require('./LinkedList');\n\nvar createDocumentFragmentFromArguments = function(document, args) {\n  var docFrag = document.createDocumentFragment();\n\n  for (var i=0; i<args.length; i++) {\n    var argItem = args[i];\n    var isNode = argItem instanceof Node;\n    docFrag.appendChild(isNode ? argItem :\n                        document.createTextNode(String(argItem)));\n  }\n\n  return docFrag;\n};\n\n// The ChildNode interface contains methods that are particular to `Node`\n// objects that can have a parent.  It is implemented by `Element`,\n// `DocumentType`, and `CharacterData` objects.\nvar ChildNode = {\n\n  // Inserts a set of Node or String objects in the children list of this\n  // ChildNode's parent, just after this ChildNode.  String objects are\n  // inserted as the equivalent Text nodes.\n  after: { value: function after() {\n    var argArr = Array.prototype.slice.call(arguments);\n    var parentNode = this.parentNode, nextSibling = this.nextSibling;\n    if (parentNode === null) { return; }\n    // Find \"viable next sibling\"; that is, next one not in argArr\n    while (nextSibling && argArr.some(function(v) { return v===nextSibling; }))\n      nextSibling = nextSibling.nextSibling;\n    // ok, parent and sibling are saved away since this node could itself\n    // appear in argArr and we're about to move argArr to a document fragment.\n    var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\n\n    parentNode.insertBefore(docFrag, nextSibling);\n  }},\n\n  // Inserts a set of Node or String objects in the children list of this\n  // ChildNode's parent, just before this ChildNode.  String objects are\n  // inserted as the equivalent Text nodes.\n  before: { value: function before() {\n    var argArr = Array.prototype.slice.call(arguments);\n    var parentNode = this.parentNode, prevSibling = this.previousSibling;\n    if (parentNode === null) { return; }\n    // Find \"viable prev sibling\"; that is, prev one not in argArr\n    while (prevSibling && argArr.some(function(v) { return v===prevSibling; }))\n      prevSibling = prevSibling.previousSibling;\n    // ok, parent and sibling are saved away since this node could itself\n    // appear in argArr and we're about to move argArr to a document fragment.\n    var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\n\n    var nextSibling =\n        prevSibling ? prevSibling.nextSibling : parentNode.firstChild;\n    parentNode.insertBefore(docFrag, nextSibling);\n  }},\n\n  // Remove this node from its parent\n  remove: { value: function remove() {\n    if (this.parentNode === null) return;\n\n    // Send mutation events if necessary\n    if (this.doc) {\n      this.doc._preremoveNodeIterators(this);\n      if (this.rooted) {\n        this.doc.mutateRemove(this);\n      }\n    }\n\n    // Remove this node from its parents array of children\n    // and update the structure id for all ancestors\n    this._remove();\n\n    // Forget this node's parent\n    this.parentNode = null;\n  }},\n\n  // Remove this node w/o uprooting or sending mutation events\n  // (But do update the structure id for all ancestors)\n  _remove: { value: function _remove() {\n    var parent = this.parentNode;\n    if (parent === null) return;\n    if (parent._childNodes) {\n      parent._childNodes.splice(this.index, 1);\n    } else if (parent._firstChild === this) {\n      if (this._nextSibling === this) {\n        parent._firstChild = null;\n      } else {\n        parent._firstChild = this._nextSibling;\n      }\n    }\n    LinkedList.remove(this);\n    parent.modify();\n  }},\n\n  // Replace this node with the nodes or strings provided as arguments.\n  replaceWith: { value: function replaceWith() {\n    var argArr = Array.prototype.slice.call(arguments);\n    var parentNode = this.parentNode, nextSibling = this.nextSibling;\n    if (parentNode === null) { return; }\n    // Find \"viable next sibling\"; that is, next one not in argArr\n    while (nextSibling && argArr.some(function(v) { return v===nextSibling; }))\n      nextSibling = nextSibling.nextSibling;\n    // ok, parent and sibling are saved away since this node could itself\n    // appear in argArr and we're about to move argArr to a document fragment.\n    var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\n    if (this.parentNode === parentNode) {\n      parentNode.replaceChild(docFrag, this);\n    } else {\n      // `this` was inserted into docFrag\n      parentNode.insertBefore(docFrag, nextSibling);\n    }\n  }},\n\n};\n\nmodule.exports = ChildNode;\n","\"use strict\";\nvar Node = require('./Node');\n\nvar NonDocumentTypeChildNode = {\n\n  nextElementSibling: { get: function() {\n    if (this.parentNode) {\n      for (var kid = this.nextSibling; kid !== null; kid = kid.nextSibling) {\n        if (kid.nodeType === Node.ELEMENT_NODE) return kid;\n      }\n    }\n    return null;\n  }},\n\n  previousElementSibling: { get: function() {\n    if (this.parentNode) {\n      for (var kid = this.previousSibling; kid !== null; kid = kid.previousSibling) {\n        if (kid.nodeType === Node.ELEMENT_NODE) return kid;\n      }\n    }\n    return null;\n  }}\n\n};\n\nmodule.exports = NonDocumentTypeChildNode;\n","\"use strict\";\nmodule.exports = NamedNodeMap;\n\nvar utils = require('./utils');\n\n/* This is a hacky implementation of NamedNodeMap, intended primarily to\n * satisfy clients (like dompurify and the web-platform-tests) which check\n * to ensure that Node#attributes instanceof NamedNodeMap. */\n\nfunction NamedNodeMap(element) {\n  this.element = element;\n}\nObject.defineProperties(NamedNodeMap.prototype, {\n  length: { get: utils.shouldOverride },\n  item: { value: utils.shouldOverride },\n\n  getNamedItem: { value: function getNamedItem(qualifiedName) {\n    return this.element.getAttributeNode(qualifiedName);\n  } },\n  getNamedItemNS: { value: function getNamedItemNS(namespace, localName) {\n    return this.element.getAttributeNodeNS(namespace, localName);\n  } },\n  setNamedItem: { value: utils.nyi },\n  setNamedItemNS: { value: utils.nyi },\n  removeNamedItem: { value: function removeNamedItem(qualifiedName) {\n    var attr = this.element.getAttributeNode(qualifiedName);\n    if (attr) {\n      this.element.removeAttribute(qualifiedName);\n      return attr;\n    }\n    utils.NotFoundError();\n  } },\n  removeNamedItemNS: { value: function removeNamedItemNS(ns, lname) {\n    var attr = this.element.getAttributeNodeNS(ns, lname);\n    if (attr) {\n      this.element.removeAttributeNS(ns, lname);\n      return attr;\n    }\n    utils.NotFoundError();\n  } },\n});\n","\"use strict\";\nmodule.exports = Element;\n\nvar xml = require('./xmlnames');\nvar utils = require('./utils');\nvar NAMESPACE = utils.NAMESPACE;\nvar attributes = require('./attributes');\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\nvar NodeUtils = require('./NodeUtils');\nvar FilteredElementList = require('./FilteredElementList');\nvar DOMTokenList = require('./DOMTokenList');\nvar select = require('./select');\nvar ContainerNode = require('./ContainerNode');\nvar ChildNode = require('./ChildNode');\nvar NonDocumentTypeChildNode = require('./NonDocumentTypeChildNode');\nvar NamedNodeMap = require('./NamedNodeMap');\n\nvar uppercaseCache = Object.create(null);\n\nfunction Element(doc, localName, namespaceURI, prefix) {\n  ContainerNode.call(this);\n  this.nodeType = Node.ELEMENT_NODE;\n  this.ownerDocument = doc;\n  this._localName = localName;\n  this.namespaceURI = namespaceURI;\n  this._prefix = prefix;\n  this._tagName = undefined;\n\n  // These properties maintain the set of attributes\n  this._attrsByQName = Object.create(null); // The qname->Attr map\n  this._attrsByLName = Object.create(null); // The ns|lname->Attr map\n  this._attrKeys = [];     // attr index -> ns|lname\n}\n\nfunction recursiveGetText(node, a) {\n  if (node.nodeType === Node.TEXT_NODE) {\n    a.push(node._data);\n  }\n  else {\n    for(var i = 0, n = node.childNodes.length;  i < n; i++)\n      recursiveGetText(node.childNodes[i], a);\n  }\n}\n\nElement.prototype = Object.create(ContainerNode.prototype, {\n  localName: {\n    get: function () { return this._localName; },\n    set: function () { /* no-op per spec */ }\n  },\n  prefix: {\n    get: function () { return this._prefix; },\n    set: function () { /* no-op per spec */ }\n  },\n  isHTML: { get: function isHTML() {\n    return this.namespaceURI === NAMESPACE.HTML && this.ownerDocument.isHTML;\n  }},\n  tagName: { get: function tagName() {\n    if (this._tagName === undefined) {\n      var tn;\n      if (this.prefix === null) {\n        tn = this.localName;\n      } else {\n        tn = this.prefix + ':' + this.localName;\n      }\n      if (this.isHTML) {\n        var up = uppercaseCache[tn];\n        if (!up) {\n          // Converting to uppercase can be slow, so cache the conversion.\n          uppercaseCache[tn] = up = utils.toASCIIUpperCase(tn);\n        }\n        tn = up;\n      }\n      this._tagName = tn;\n    }\n    return this._tagName;\n    },\n    set: function () { /* no-op per spec */ }\n  },\n  nodeName: { get: function() { return this.tagName; }},\n  nodeValue: {\n    get: function() {\n      return null;\n    },\n    set: function() {}\n  },\n  textContent: {\n    get: function() {\n      var strings = [];\n      recursiveGetText(this, strings);\n      return strings.join('');\n    },\n    set: function(newtext) {\n      this.removeChildren();\n      if (newtext !== null && newtext !== undefined && newtext !== '') {\n        this._appendChild(this.ownerDocument.createTextNode(newtext));\n      }\n    }\n  },\n  innerText: {\n    get: function() {\n      var strings = [];\n      recursiveGetText(this, strings);\n      // Strip and collapse whitespace\n      // This doesn't 100% match the browser behavior,\n      // but should cover most of the cases. This is also similar to\n      // how Angular's renderer used to work: the `textContent` and `innerText`\n      // were almost equivalent from the renderer perspective.\n      // See: https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#differences_from_innertext\n      return strings.join('').replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\n    },\n    set: function(newtext) {\n      this.removeChildren();\n      if (newtext !== null && newtext !== undefined && newtext !== '') {\n        this._appendChild(this.ownerDocument.createTextNode(newtext));\n      }\n    }\n  },\n  innerHTML: {\n    get: function() {\n      return this.serialize();\n    },\n    set: utils.nyi\n  },\n  outerHTML: {\n    get: function() {\n      // \"the attribute must return the result of running the HTML fragment\n      // serialization algorithm on a fictional node whose only child is\n      // the context object\"\n      //\n      // The serialization logic is intentionally implemented in a separate\n      // `NodeUtils` helper instead of the more obvious choice of a private\n      // `_serializeOne()` method on the `Node.prototype` in order to avoid\n      // the megamorphic `this._serializeOne` property access, which reduces\n      // performance unnecessarily. If you need specialized behavior for a\n      // certain subclass, you'll need to implement that in `NodeUtils`.\n      // See https://github.com/fgnass/domino/pull/142 for more information.\n      return NodeUtils.serializeOne(this, { nodeType: 0 });\n    },\n    set: function(v) {\n      var document = this.ownerDocument;\n      var parent = this.parentNode;\n      if (parent === null) { return; }\n      if (parent.nodeType === Node.DOCUMENT_NODE) {\n        utils.NoModificationAllowedError();\n      }\n      if (parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n        parent = parent.ownerDocument.createElement(\"body\");\n      }\n      var parser = document.implementation.mozHTMLParser(\n        document._address,\n        parent\n      );\n      parser.parse(v===null?'':String(v), true);\n      this.replaceWith(parser._asDocumentFragment());\n    },\n  },\n\n  _insertAdjacent: { value: function _insertAdjacent(position, node) {\n    var first = false;\n    switch(position) {\n    case 'beforebegin':\n      first = true;\n      /* falls through */\n    case 'afterend':\n      var parent = this.parentNode;\n      if (parent === null) { return null; }\n      return parent.insertBefore(node, first ? this : this.nextSibling);\n    case 'afterbegin':\n      first = true;\n      /* falls through */\n    case 'beforeend':\n      return this.insertBefore(node, first ? this.firstChild : null);\n    default:\n      return utils.SyntaxError();\n    }\n  }},\n\n  insertAdjacentElement: { value: function insertAdjacentElement(position, element) {\n    if (element.nodeType !== Node.ELEMENT_NODE) {\n      throw new TypeError('not an element');\n    }\n    position = utils.toASCIILowerCase(String(position));\n    return this._insertAdjacent(position, element);\n  }},\n\n  insertAdjacentText: { value: function insertAdjacentText(position, data) {\n    var textNode = this.ownerDocument.createTextNode(data);\n    position = utils.toASCIILowerCase(String(position));\n    this._insertAdjacent(position, textNode);\n    // \"This method returns nothing because it existed before we had a chance\n    // to design it.\"\n  }},\n\n  insertAdjacentHTML: { value: function insertAdjacentHTML(position, text) {\n    position = utils.toASCIILowerCase(String(position));\n    text = String(text);\n    var context;\n    switch(position) {\n    case 'beforebegin':\n    case 'afterend':\n      context = this.parentNode;\n      if (context === null || context.nodeType === Node.DOCUMENT_NODE) {\n        utils.NoModificationAllowedError();\n      }\n      break;\n    case 'afterbegin':\n    case 'beforeend':\n      context = this;\n      break;\n    default:\n      utils.SyntaxError();\n    }\n    if ( (!(context instanceof Element)) || (\n      context.ownerDocument.isHTML &&\n      context.localName === 'html' &&\n      context.namespaceURI === NAMESPACE.HTML\n    ) ) {\n      context = context.ownerDocument.createElementNS(NAMESPACE.HTML, 'body');\n    }\n    var parser = this.ownerDocument.implementation.mozHTMLParser(\n      this.ownerDocument._address, context\n    );\n    parser.parse(text, true);\n    this._insertAdjacent(position, parser._asDocumentFragment());\n  }},\n\n  children: { get: function() {\n    if (!this._children) {\n      this._children = new ChildrenCollection(this);\n    }\n    return this._children;\n  }},\n\n  attributes: { get: function() {\n    if (!this._attributes) {\n      this._attributes = new AttributesArray(this);\n    }\n    return this._attributes;\n  }},\n\n\n  firstElementChild: { get: function() {\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n      if (kid.nodeType === Node.ELEMENT_NODE) return kid;\n    }\n    return null;\n  }},\n\n  lastElementChild: { get: function() {\n    for (var kid = this.lastChild; kid !== null; kid = kid.previousSibling) {\n      if (kid.nodeType === Node.ELEMENT_NODE) return kid;\n    }\n    return null;\n  }},\n\n  childElementCount: { get: function() {\n    return this.children.length;\n  }},\n\n\n  // Return the next element, in source order, after this one or\n  // null if there are no more.  If root element is specified,\n  // then don't traverse beyond its subtree.\n  //\n  // This is not a DOM method, but is convenient for\n  // lazy traversals of the tree.\n  nextElement: { value: function(root) {\n    if (!root) root = this.ownerDocument.documentElement;\n    var next = this.firstElementChild;\n    if (!next) {\n      // don't use sibling if we're at root\n      if (this===root) return null;\n      next = this.nextElementSibling;\n    }\n    if (next) return next;\n\n    // If we can't go down or across, then we have to go up\n    // and across to the parent sibling or another ancestor's\n    // sibling.  Be careful, though: if we reach the root\n    // element, or if we reach the documentElement, then\n    // the traversal ends.\n    for(var parent = this.parentElement;\n      parent && parent !== root;\n      parent = parent.parentElement) {\n\n      next = parent.nextElementSibling;\n      if (next) return next;\n    }\n\n    return null;\n  }},\n\n  // XXX:\n  // Tests are currently failing for this function.\n  // Awaiting resolution of:\n  // http://lists.w3.org/Archives/Public/www-dom/2011JulSep/0016.html\n  getElementsByTagName: { value: function getElementsByTagName(lname) {\n    var filter;\n    if (!lname) return new NodeList();\n    if (lname === '*')\n      filter = function() { return true; };\n    else if (this.isHTML)\n      filter = htmlLocalNameElementFilter(lname);\n    else\n      filter = localNameElementFilter(lname);\n\n    return new FilteredElementList(this, filter);\n  }},\n\n  getElementsByTagNameNS: { value: function getElementsByTagNameNS(ns, lname){\n    var filter;\n    if (ns === '*' && lname === '*')\n      filter = function() { return true; };\n    else if (ns === '*')\n      filter = localNameElementFilter(lname);\n    else if (lname === '*')\n      filter = namespaceElementFilter(ns);\n    else\n      filter = namespaceLocalNameElementFilter(ns, lname);\n\n    return new FilteredElementList(this, filter);\n  }},\n\n  getElementsByClassName: { value: function getElementsByClassName(names){\n    names = String(names).trim();\n    if (names === '') {\n      var result = new NodeList(); // Empty node list\n      return result;\n    }\n    names = names.split(/[ \\t\\r\\n\\f]+/);  // Split on ASCII whitespace\n    return new FilteredElementList(this, classNamesElementFilter(names));\n  }},\n\n  getElementsByName: { value: function getElementsByName(name) {\n    return new FilteredElementList(this, elementNameFilter(String(name)));\n  }},\n\n  // Utility methods used by the public API methods above\n  clone: { value: function clone() {\n    var e;\n\n    // XXX:\n    // Modify this to use the constructor directly or\n    // avoid error checking in some other way. In case we try\n    // to clone an invalid node that the parser inserted.\n    //\n    if (this.namespaceURI !== NAMESPACE.HTML || this.prefix || !this.ownerDocument.isHTML) {\n      e = this.ownerDocument.createElementNS(\n        this.namespaceURI, (this.prefix !== null) ?\n          (this.prefix + ':' + this.localName) : this.localName\n      );\n    } else {\n      e = this.ownerDocument.createElement(this.localName);\n    }\n\n    for(var i = 0, n = this._attrKeys.length; i < n; i++) {\n      var lname = this._attrKeys[i];\n      var a = this._attrsByLName[lname];\n      var b = a.cloneNode();\n      b._setOwnerElement(e);\n      e._attrsByLName[lname] = b;\n      e._addQName(b);\n    }\n    e._attrKeys = this._attrKeys.concat();\n\n    return e;\n  }},\n\n  isEqual: { value: function isEqual(that) {\n    if (this.localName !== that.localName ||\n      this.namespaceURI !== that.namespaceURI ||\n      this.prefix !== that.prefix ||\n      this._numattrs !== that._numattrs)\n      return false;\n\n    // Compare the sets of attributes, ignoring order\n    // and ignoring attribute prefixes.\n    for(var i = 0, n = this._numattrs; i < n; i++) {\n      var a = this._attr(i);\n      if (!that.hasAttributeNS(a.namespaceURI, a.localName))\n        return false;\n      if (that.getAttributeNS(a.namespaceURI,a.localName) !== a.value)\n        return false;\n    }\n\n    return true;\n  }},\n\n  // This is the 'locate a namespace prefix' algorithm from the\n  // DOM specification.  It is used by Node.lookupPrefix()\n  // (Be sure to compare DOM3 and DOM4 versions of spec.)\n  _lookupNamespacePrefix: { value: function _lookupNamespacePrefix(ns, originalElement) {\n    if (\n      this.namespaceURI &&\n      this.namespaceURI === ns &&\n      this.prefix !== null &&\n      originalElement.lookupNamespaceURI(this.prefix) === ns\n    ) {\n      return this.prefix;\n    }\n\n    for(var i = 0, n = this._numattrs; i < n; i++) {\n      var a = this._attr(i);\n      if (\n        a.prefix === 'xmlns' &&\n        a.value === ns &&\n        originalElement.lookupNamespaceURI(a.localName) === ns\n      ) {\n        return a.localName;\n      }\n    }\n\n    var parent = this.parentElement;\n    return parent ? parent._lookupNamespacePrefix(ns, originalElement) : null;\n  }},\n\n  // This is the 'locate a namespace' algorithm for Element nodes\n  // from the DOM Core spec.  It is used by Node#lookupNamespaceURI()\n  lookupNamespaceURI: { value: function lookupNamespaceURI(prefix) {\n    if (prefix === '' || prefix === undefined) { prefix = null; }\n    if (this.namespaceURI !== null && this.prefix === prefix)\n      return this.namespaceURI;\n\n    for(var i = 0, n = this._numattrs; i < n; i++) {\n      var a = this._attr(i);\n      if (a.namespaceURI === NAMESPACE.XMLNS) {\n        if (\n          (a.prefix === 'xmlns' && a.localName === prefix) ||\n          (prefix === null && a.prefix === null && a.localName === 'xmlns')\n        ) {\n          return a.value || null;\n        }\n      }\n    }\n\n    var parent = this.parentElement;\n    return parent ? parent.lookupNamespaceURI(prefix) : null;\n  }},\n\n  //\n  // Attribute handling methods and utilities\n  //\n\n  /*\n   * Attributes in the DOM are tricky:\n   *\n   * - there are the 8 basic get/set/has/removeAttribute{NS} methods\n   *\n   * - but many HTML attributes are also 'reflected' through IDL\n   *   attributes which means that they can be queried and set through\n   *   regular properties of the element.  There is just one attribute\n   *   value, but two ways to get and set it.\n   *\n   * - Different HTML element types have different sets of reflected\n     attributes.\n   *\n   * - attributes can also be queried and set through the .attributes\n   *   property of an element.  This property behaves like an array of\n   *   Attr objects.  The value property of each Attr is writeable, so\n   *   this is a third way to read and write attributes.\n   *\n   * - for efficiency, we really want to store attributes in some kind\n   *   of name->attr map.  But the attributes[] array is an array, not a\n   *   map, which is kind of unnatural.\n   *\n   * - When using namespaces and prefixes, and mixing the NS methods\n   *   with the non-NS methods, it is apparently actually possible for\n   *   an attributes[] array to have more than one attribute with the\n   *   same qualified name.  And certain methods must operate on only\n   *   the first attribute with such a name.  So for these methods, an\n   *   inefficient array-like data structure would be easier to\n   *   implement.\n   *\n   * - The attributes[] array is live, not a snapshot, so changes to the\n   *   attributes must be immediately visible through existing arrays.\n   *\n   * - When attributes are queried and set through IDL properties\n   *   (instead of the get/setAttributes() method or the attributes[]\n   *   array) they may be subject to type conversions, URL\n   *   normalization, etc., so some extra processing is required in that\n   *   case.\n   *\n   * - But access through IDL properties is probably the most common\n   *   case, so we'd like that to be as fast as possible.\n   *\n   * - We can't just store attribute values in their parsed idl form,\n   *   because setAttribute() has to return whatever string is passed to\n   *   getAttribute even if it is not a legal, parseable value. So\n   *   attribute values must be stored in unparsed string form.\n   *\n   * - We need to be able to send change notifications or mutation\n   *   events of some sort to the renderer whenever an attribute value\n   *   changes, regardless of the way in which it changes.\n   *\n   * - Some attributes, such as id and class affect other parts of the\n   *   DOM API, like getElementById and getElementsByClassName and so\n   *   for efficiency, we need to specially track changes to these\n   *   special attributes.\n   *\n   * - Some attributes like class have different names (className) when\n   *   reflected.\n   *\n   * - Attributes whose names begin with the string 'data-' are treated\n     specially.\n   *\n   * - Reflected attributes that have a boolean type in IDL have special\n   *   behavior: setting them to false (in IDL) is the same as removing\n   *   them with removeAttribute()\n   *\n   * - numeric attributes (like HTMLElement.tabIndex) can have default\n   *   values that must be returned by the idl getter even if the\n   *   content attribute does not exist. (The default tabIndex value\n   *   actually varies based on the type of the element, so that is a\n   *   tricky one).\n   *\n   * See\n   * http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#reflect\n   * for rules on how attributes are reflected.\n   *\n   */\n\n  getAttribute: { value: function getAttribute(qname) {\n    var attr = this.getAttributeNode(qname);\n    return attr ? attr.value : null;\n  }},\n\n  getAttributeNS: { value: function getAttributeNS(ns, lname) {\n    var attr = this.getAttributeNodeNS(ns, lname);\n    return attr ? attr.value : null;\n  }},\n\n  getAttributeNode: { value: function getAttributeNode(qname) {\n    qname = String(qname);\n    if (/[A-Z]/.test(qname) && this.isHTML)\n      qname = utils.toASCIILowerCase(qname);\n    var attr = this._attrsByQName[qname];\n    if (!attr) return null;\n\n    if (Array.isArray(attr))  // If there is more than one\n      attr = attr[0];         // use the first\n\n    return attr;\n  }},\n\n  getAttributeNodeNS: { value: function getAttributeNodeNS(ns, lname) {\n    ns = (ns === undefined || ns === null) ? '' : String(ns);\n    lname = String(lname);\n    var attr = this._attrsByLName[ns + '|' + lname];\n    return attr ? attr : null;\n  }},\n\n  hasAttribute: { value: function hasAttribute(qname) {\n    qname = String(qname);\n    if (/[A-Z]/.test(qname) && this.isHTML)\n      qname = utils.toASCIILowerCase(qname);\n    return this._attrsByQName[qname] !== undefined;\n  }},\n\n  hasAttributeNS: { value: function hasAttributeNS(ns, lname) {\n    ns = (ns === undefined || ns === null) ? '' : String(ns);\n    lname = String(lname);\n    var key = ns + '|' + lname;\n    return this._attrsByLName[key] !== undefined;\n  }},\n\n  hasAttributes: { value: function hasAttributes() {\n    return this._numattrs > 0;\n  }},\n\n  toggleAttribute: { value: function toggleAttribute(qname, force) {\n    qname = String(qname);\n    if (!xml.isValidName(qname)) utils.InvalidCharacterError();\n    if (/[A-Z]/.test(qname) && this.isHTML)\n      qname = utils.toASCIILowerCase(qname);\n    var a = this._attrsByQName[qname];\n    if (a === undefined) {\n      if (force === undefined || force === true) {\n        this._setAttribute(qname, '');\n        return true;\n      }\n      return false;\n    } else {\n      if (force === undefined || force === false) {\n        this.removeAttribute(qname);\n        return false;\n      }\n      return true;\n    }\n  }},\n\n  // Set the attribute without error checking. The parser uses this.\n  _setAttribute: { value: function _setAttribute(qname, value) {\n    // XXX: the spec says that this next search should be done\n    // on the local name, but I think that is an error.\n    // email pending on www-dom about it.\n    var attr = this._attrsByQName[qname];\n    var isnew;\n    if (!attr) {\n      attr = this._newattr(qname);\n      isnew = true;\n    }\n    else {\n      if (Array.isArray(attr)) attr = attr[0];\n    }\n\n    // Now set the attribute value on the new or existing Attr object.\n    // The Attr.value setter method handles mutation events, etc.\n    attr.value = value;\n    if (this._attributes) this._attributes[qname] = attr;\n    if (isnew && this._newattrhook) this._newattrhook(qname, value);\n  }},\n\n  // Check for errors, and then set the attribute\n  setAttribute: { value: function setAttribute(qname, value) {\n    qname = String(qname);\n    if (!xml.isValidName(qname)) utils.InvalidCharacterError();\n    if (/[A-Z]/.test(qname) && this.isHTML)\n      qname = utils.toASCIILowerCase(qname);\n    this._setAttribute(qname, String(value));\n  }},\n\n\n  // The version with no error checking used by the parser\n  _setAttributeNS: { value: function _setAttributeNS(ns, qname, value) {\n    var pos = qname.indexOf(':'), prefix, lname;\n    if (pos < 0) {\n      prefix = null;\n      lname = qname;\n    }\n    else {\n      prefix = qname.substring(0, pos);\n      lname = qname.substring(pos+1);\n    }\n\n    if (ns === '' || ns === undefined) ns = null;\n    var key = (ns === null ? '' : ns) + '|' + lname;\n\n    var attr = this._attrsByLName[key];\n    var isnew;\n    if (!attr) {\n      attr = new Attr(this, lname, prefix, ns);\n      isnew = true;\n      this._attrsByLName[key] = attr;\n      if (this._attributes) {\n        this._attributes[this._attrKeys.length] = attr;\n      }\n      this._attrKeys.push(key);\n\n      // We also have to make the attr searchable by qname.\n      // But we have to be careful because there may already\n      // be an attr with this qname.\n      this._addQName(attr);\n    }\n    else if (false /* changed in DOM 4 */) {\n      // Calling setAttributeNS() can change the prefix of an\n      // existing attribute in DOM 2/3.\n      if (attr.prefix !== prefix) {\n        // Unbind the old qname\n        this._removeQName(attr);\n        // Update the prefix\n        attr.prefix = prefix;\n        // Bind the new qname\n        this._addQName(attr);\n      }\n\n    }\n    attr.value = value; // Automatically sends mutation event\n    if (isnew && this._newattrhook) this._newattrhook(qname, value);\n  }},\n\n  // Do error checking then call _setAttributeNS\n  setAttributeNS: { value: function setAttributeNS(ns, qname, value) {\n    // Convert parameter types according to WebIDL\n    ns = (ns === null || ns === undefined || ns === '') ? null : String(ns);\n    qname = String(qname);\n    if (!xml.isValidQName(qname)) utils.InvalidCharacterError();\n\n    var pos = qname.indexOf(':');\n    var prefix = (pos < 0) ? null : qname.substring(0, pos);\n\n    if ((prefix !== null && ns === null) ||\n      (prefix === 'xml' && ns !== NAMESPACE.XML) ||\n      ((qname === 'xmlns' || prefix === 'xmlns') &&\n       (ns !== NAMESPACE.XMLNS)) ||\n      (ns === NAMESPACE.XMLNS &&\n       !(qname === 'xmlns' || prefix === 'xmlns')))\n      utils.NamespaceError();\n\n    this._setAttributeNS(ns, qname, String(value));\n  }},\n\n  setAttributeNode: { value: function setAttributeNode(attr) {\n    if (attr.ownerElement !== null && attr.ownerElement !== this) {\n      utils.InUseAttributeError();\n    }\n    var result = null;\n    var oldAttrs = this._attrsByQName[attr.name];\n    if (oldAttrs) {\n      if (!Array.isArray(oldAttrs)) { oldAttrs = [ oldAttrs ]; }\n      if (oldAttrs.some(function(a) { return a===attr; })) {\n        return attr;\n      } else if (attr.ownerElement !== null) {\n        utils.InUseAttributeError();\n      }\n      oldAttrs.forEach(function(a) { this.removeAttributeNode(a); }, this);\n      result = oldAttrs[0];\n    }\n    this.setAttributeNodeNS(attr);\n    return result;\n  }},\n\n  setAttributeNodeNS: { value: function setAttributeNodeNS(attr) {\n    if (attr.ownerElement !== null) {\n      utils.InUseAttributeError();\n    }\n    var ns = attr.namespaceURI;\n    var key = (ns === null ? '' : ns) + '|' + attr.localName;\n    var oldAttr = this._attrsByLName[key];\n    if (oldAttr) { this.removeAttributeNode(oldAttr); }\n    attr._setOwnerElement(this);\n    this._attrsByLName[key] = attr;\n    if (this._attributes) {\n      this._attributes[this._attrKeys.length] = attr;\n    }\n    this._attrKeys.push(key);\n    this._addQName(attr);\n    if (this._newattrhook) this._newattrhook(attr.name, attr.value);\n    return oldAttr || null;\n  }},\n\n  removeAttribute: { value: function removeAttribute(qname) {\n    qname = String(qname);\n    if (/[A-Z]/.test(qname) && this.isHTML)\n      qname = utils.toASCIILowerCase(qname);\n\n    var attr = this._attrsByQName[qname];\n    if (!attr) return;\n\n    // If there is more than one match for this qname\n    // so don't delete the qname mapping, just remove the first\n    // element from it.\n    if (Array.isArray(attr)) {\n      if (attr.length > 2) {\n        attr = attr.shift();  // remove it from the array\n      }\n      else {\n        this._attrsByQName[qname] = attr[1];\n        attr = attr[0];\n      }\n    }\n    else {\n      // only a single match, so remove the qname mapping\n      this._attrsByQName[qname] = undefined;\n    }\n\n    var ns = attr.namespaceURI;\n    // Now attr is the removed attribute.  Figure out its\n    // ns+lname key and remove it from the other mapping as well.\n    var key = (ns === null ? '' : ns) + '|' + attr.localName;\n    this._attrsByLName[key] = undefined;\n\n    var i = this._attrKeys.indexOf(key);\n    if (this._attributes) {\n      Array.prototype.splice.call(this._attributes, i, 1);\n      this._attributes[qname] = undefined;\n    }\n    this._attrKeys.splice(i, 1);\n\n    // Onchange handler for the attribute\n    var onchange = attr.onchange;\n    attr._setOwnerElement(null);\n    if (onchange) {\n      onchange.call(attr, this, attr.localName, attr.value, null);\n    }\n    // Mutation event\n    if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr);\n  }},\n\n  removeAttributeNS: { value: function removeAttributeNS(ns, lname) {\n    ns = (ns === undefined || ns === null) ? '' : String(ns);\n    lname = String(lname);\n    var key = ns + '|' + lname;\n    var attr = this._attrsByLName[key];\n    if (!attr) return;\n\n    this._attrsByLName[key] = undefined;\n\n    var i = this._attrKeys.indexOf(key);\n    if (this._attributes) {\n      Array.prototype.splice.call(this._attributes, i, 1);\n    }\n    this._attrKeys.splice(i, 1);\n\n    // Now find the same Attr object in the qname mapping and remove it\n    // But be careful because there may be more than one match.\n    this._removeQName(attr);\n\n    // Onchange handler for the attribute\n    var onchange = attr.onchange;\n    attr._setOwnerElement(null);\n    if (onchange) {\n      onchange.call(attr, this, attr.localName, attr.value, null);\n    }\n    // Mutation event\n    if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr);\n  }},\n\n  removeAttributeNode: { value: function removeAttributeNode(attr) {\n    var ns = attr.namespaceURI;\n    var key = (ns === null ? '' : ns) + '|' + attr.localName;\n    if (this._attrsByLName[key] !== attr) {\n      utils.NotFoundError();\n    }\n    this.removeAttributeNS(ns, attr.localName);\n    return attr;\n  }},\n\n  getAttributeNames: { value: function getAttributeNames() {\n    var elt = this;\n    return this._attrKeys.map(function(key) {\n      return elt._attrsByLName[key].name;\n    });\n  }},\n\n  // This 'raw' version of getAttribute is used by the getter functions\n  // of reflected attributes. It skips some error checking and\n  // namespace steps\n  _getattr: { value: function _getattr(qname) {\n    // Assume that qname is already lowercased, so don't do it here.\n    // Also don't check whether attr is an array: a qname with no\n    // prefix will never have two matching Attr objects (because\n    // setAttributeNS doesn't allow a non-null namespace with a\n    // null prefix.\n    var attr = this._attrsByQName[qname];\n    return attr ? attr.value : null;\n  }},\n\n  // The raw version of setAttribute for reflected idl attributes.\n  _setattr: { value: function _setattr(qname, value) {\n    var attr = this._attrsByQName[qname];\n    var isnew;\n    if (!attr) {\n      attr = this._newattr(qname);\n      isnew = true;\n    }\n    attr.value = String(value);\n    if (this._attributes) this._attributes[qname] = attr;\n    if (isnew && this._newattrhook) this._newattrhook(qname, value);\n  }},\n\n  // Create a new Attr object, insert it, and return it.\n  // Used by setAttribute() and by set()\n  _newattr: { value: function _newattr(qname) {\n    var attr = new Attr(this, qname, null, null);\n    var key = '|' + qname;\n    this._attrsByQName[qname] = attr;\n    this._attrsByLName[key] = attr;\n    if (this._attributes) {\n      this._attributes[this._attrKeys.length] = attr;\n    }\n    this._attrKeys.push(key);\n    return attr;\n  }},\n\n  // Add a qname->Attr mapping to the _attrsByQName object, taking into\n  // account that there may be more than one attr object with the\n  // same qname\n  _addQName: { value: function(attr) {\n    var qname = attr.name;\n    var existing = this._attrsByQName[qname];\n    if (!existing) {\n      this._attrsByQName[qname] = attr;\n    }\n    else if (Array.isArray(existing)) {\n      existing.push(attr);\n    }\n    else {\n      this._attrsByQName[qname] = [existing, attr];\n    }\n    if (this._attributes) this._attributes[qname] = attr;\n  }},\n\n  // Remove a qname->Attr mapping to the _attrsByQName object, taking into\n  // account that there may be more than one attr object with the\n  // same qname\n  _removeQName: { value: function(attr) {\n    var qname = attr.name;\n    var target = this._attrsByQName[qname];\n\n    if (Array.isArray(target)) {\n      var idx = target.indexOf(attr);\n      utils.assert(idx !== -1); // It must be here somewhere\n      if (target.length === 2) {\n        this._attrsByQName[qname] = target[1-idx];\n        if (this._attributes) {\n          this._attributes[qname] = this._attrsByQName[qname];\n        }\n      } else {\n        target.splice(idx, 1);\n        if (this._attributes && this._attributes[qname] === attr) {\n          this._attributes[qname] = target[0];\n        }\n      }\n    }\n    else {\n      utils.assert(target === attr);  // If only one, it must match\n      this._attrsByQName[qname] = undefined;\n      if (this._attributes) {\n        this._attributes[qname] = undefined;\n      }\n    }\n  }},\n\n  // Return the number of attributes\n  _numattrs: { get: function() { return this._attrKeys.length; }},\n  // Return the nth Attr object\n  _attr: { value: function(n) {\n    return this._attrsByLName[this._attrKeys[n]];\n  }},\n\n  // Define getters and setters for an 'id' property that reflects\n  // the content attribute 'id'.\n  id: attributes.property({name: 'id'}),\n\n  // Define getters and setters for a 'className' property that reflects\n  // the content attribute 'class'.\n  className: attributes.property({name: 'class'}),\n\n  classList: { get: function() {\n    var self = this;\n    if (this._classList) {\n      return this._classList;\n    }\n    var dtlist = new DOMTokenList(\n      function() {\n        return self.className || \"\";\n      },\n      function(v) {\n        self.className = v;\n      }\n    );\n    this._classList = dtlist;\n    return dtlist;\n  }, set: function(v) { this.className = v; }},\n\n  matches: { value: function(selector) {\n    return select.matches(this, selector);\n  }},\n\n  closest: { value: function(selector) {\n    var el = this;\n\tdo {\n\t  if (el.matches && el.matches(selector)) { return el; }\n\t  el = el.parentElement || el.parentNode;\n\t} while (el !== null && el.nodeType === Node.ELEMENT_NODE);\n\treturn null;\n  }},\n\n  querySelector: { value: function(selector) {\n    return select(selector, this)[0];\n  }},\n\n  querySelectorAll: { value: function(selector) {\n    var nodes = select(selector, this);\n    return nodes.item ? nodes : new NodeList(nodes);\n  }}\n\n});\n\nObject.defineProperties(Element.prototype, ChildNode);\nObject.defineProperties(Element.prototype, NonDocumentTypeChildNode);\n\n// Register special handling for the id attribute\nattributes.registerChangeHandler(Element, 'id',\n function(element, lname, oldval, newval) {\n   if (element.rooted) {\n     if (oldval) {\n       element.ownerDocument.delId(oldval, element);\n     }\n     if (newval) {\n       element.ownerDocument.addId(newval, element);\n     }\n   }\n }\n);\nattributes.registerChangeHandler(Element, 'class',\n function(element, lname, oldval, newval) {\n   if (element._classList) { element._classList._update(); }\n }\n);\n\n// The Attr class represents a single attribute.  The values in\n// _attrsByQName and _attrsByLName are instances of this class.\nfunction Attr(elt, lname, prefix, namespace, value) {\n  // localName and namespace are constant for any attr object.\n  // But value may change.  And so can prefix, and so, therefore can name.\n  this._localName = lname;\n  this._prefix = (prefix===null || prefix==='') ? null : ('' + prefix);\n  this.namespaceURI = (namespace===null || namespace==='') ? null : ('' + namespace);\n  this.data = value;\n  // Set ownerElement last to ensure it is hooked up to onchange handler\n  this._setOwnerElement(elt);\n}\n\n// In DOM 3 Attr was supposed to extend Node; in DOM 4 that was abandoned.\nAttr.prototype = Object.create(Object.prototype, {\n  localName: {\n    get: function () { return this._localName; },\n    set: function () { /* no-op per spec */ }\n  },\n  prefix: {\n    get: function () { return this._prefix; },\n    set: function () { /* no-op per spec */ }\n  },\n  ownerElement: {\n    get: function() { return this._ownerElement; },\n  },\n  _setOwnerElement: { value: function _setOwnerElement(elt) {\n    this._ownerElement = elt;\n    if (this.prefix === null && this.namespaceURI === null && elt) {\n      this.onchange = elt._attributeChangeHandlers[this.localName];\n    } else {\n      this.onchange = null;\n    }\n  }},\n\n  name: { get: function() {\n    return this.prefix ? this.prefix + ':' + this.localName : this.localName;\n  }},\n\n  specified: { get: function() {\n    // Deprecated\n    return true;\n  }},\n\n  value: {\n    get: function() {\n      return this.data;\n    },\n    set: function(value) {\n      var oldval = this.data;\n      value = (value === undefined) ? '' : value + '';\n      if (value === oldval) return;\n\n      this.data = value;\n\n      // Run the onchange hook for the attribute\n      // if there is one.\n      if (this.ownerElement) {\n        if (this.onchange)\n          this.onchange(this.ownerElement,this.localName, oldval, value);\n\n        // Generate a mutation event if the element is rooted\n        if (this.ownerElement.rooted)\n          this.ownerElement.ownerDocument.mutateAttr(this, oldval);\n      }\n    },\n  },\n\n  cloneNode: { value: function cloneNode(deep) {\n    // Both this method and Document#createAttribute*() create unowned Attrs\n    return new Attr(\n      null, this.localName, this.prefix, this.namespaceURI, this.data\n    );\n  }},\n\n  // Legacy aliases (see gh#70 and https://dom.spec.whatwg.org/#interface-attr)\n  nodeType: { get: function() { return Node.ATTRIBUTE_NODE; } },\n  nodeName: { get: function() { return this.name; } },\n  nodeValue: {\n    get: function() { return this.value; },\n    set: function(v) { this.value = v; },\n  },\n  textContent: {\n    get: function() { return this.value; },\n    set: function(v) {\n      if (v === null || v === undefined) { v = ''; }\n      this.value = v;\n    },\n  },\n  innerText: {\n    get: function() { return this.value; },\n    set: function(v) {\n      if (v === null || v === undefined) { v = ''; }\n      this.value = v;\n    },\n  },\n});\n// Sneakily export this class for use by Document.createAttribute()\nElement._Attr = Attr;\n\n// The attributes property of an Element will be an instance of this class.\n// This class is really just a dummy, though. It only defines a length\n// property and an item() method. The AttrArrayProxy that\n// defines the public API just uses the Element object itself.\nfunction AttributesArray(elt) {\n  NamedNodeMap.call(this, elt);\n  for (var name in elt._attrsByQName) {\n    this[name] = elt._attrsByQName[name];\n  }\n  for (var i = 0; i < elt._attrKeys.length; i++) {\n    this[i] = elt._attrsByLName[elt._attrKeys[i]];\n  }\n}\nAttributesArray.prototype = Object.create(NamedNodeMap.prototype, {\n  length: { get: function() {\n    return this.element._attrKeys.length;\n  }, set: function() { /* ignore */ } },\n  item: { value: function(n) {\n    /* jshint bitwise: false */\n    n = n >>> 0;\n    if (n >= this.length) { return null; }\n    return this.element._attrsByLName[this.element._attrKeys[n]];\n    /* jshint bitwise: true */\n  } },\n});\n\n// We can't make direct array access work (without Proxies, node >=6)\n// but we can make `Array.from(node.attributes)` and for-of loops work.\nif (globalThis.Symbol?.iterator) {\n    AttributesArray.prototype[globalThis.Symbol.iterator] = function() {\n        var i=0, n=this.length, self=this;\n        return {\n            next: function() {\n                if (i<n) return { value: self.item(i++) };\n                return { done: true };\n            }\n        };\n    };\n}\n\n\n// The children property of an Element will be an instance of this class.\n// It defines length, item() and namedItem() and will be wrapped by an\n// HTMLCollection when exposed through the DOM.\nfunction ChildrenCollection(e) {\n  this.element = e;\n  this.updateCache();\n}\n\nChildrenCollection.prototype = Object.create(Object.prototype, {\n  length: { get: function() {\n    this.updateCache();\n    return this.childrenByNumber.length;\n  } },\n  item: { value: function item(n) {\n    this.updateCache();\n    return this.childrenByNumber[n] || null;\n  } },\n\n  namedItem: { value: function namedItem(name) {\n    this.updateCache();\n    return this.childrenByName[name] || null;\n  } },\n\n  // This attribute returns the entire name->element map.\n  // It is not part of the HTMLCollection API, but we need it in\n  // src/HTMLCollectionProxy\n  namedItems: { get: function() {\n    this.updateCache();\n    return this.childrenByName;\n  } },\n\n  updateCache: { value: function updateCache() {\n    var namedElts = /^(a|applet|area|embed|form|frame|frameset|iframe|img|object)$/;\n    if (this.lastModTime !== this.element.lastModTime) {\n      this.lastModTime = this.element.lastModTime;\n\n      var n = this.childrenByNumber && this.childrenByNumber.length || 0;\n      for(var i = 0; i < n; i++) {\n        this[i] = undefined;\n      }\n\n      this.childrenByNumber = [];\n      this.childrenByName = Object.create(null);\n\n      for (var c = this.element.firstChild; c !== null; c = c.nextSibling) {\n        if (c.nodeType === Node.ELEMENT_NODE) {\n\n          this[this.childrenByNumber.length] = c;\n          this.childrenByNumber.push(c);\n\n          // XXX Are there any requirements about the namespace\n          // of the id property?\n          var id = c.getAttribute('id');\n\n          // If there is an id that is not already in use...\n          if (id && !this.childrenByName[id])\n            this.childrenByName[id] = c;\n\n          // For certain HTML elements we check the name attribute\n          var name = c.getAttribute('name');\n          if (name &&\n            this.element.namespaceURI === NAMESPACE.HTML &&\n            namedElts.test(this.element.localName) &&\n            !this.childrenByName[name])\n            this.childrenByName[id] = c;\n        }\n      }\n    }\n  } },\n});\n\n// These functions return predicates for filtering elements.\n// They're used by the Document and Element classes for methods like\n// getElementsByTagName and getElementsByClassName\n\nfunction localNameElementFilter(lname) {\n  return function(e) { return e.localName === lname; };\n}\n\nfunction htmlLocalNameElementFilter(lname) {\n  var lclname = utils.toASCIILowerCase(lname);\n  if (lclname === lname)\n    return localNameElementFilter(lname);\n\n  return function(e) {\n    return e.isHTML ? e.localName === lclname : e.localName === lname;\n  };\n}\n\nfunction namespaceElementFilter(ns) {\n  return function(e) { return e.namespaceURI === ns; };\n}\n\nfunction namespaceLocalNameElementFilter(ns, lname) {\n  return function(e) {\n    return e.namespaceURI === ns && e.localName === lname;\n  };\n}\n\nfunction classNamesElementFilter(names) {\n  return function(e) {\n    return names.every(function(n) { return e.classList.contains(n); });\n  };\n}\n\nfunction elementNameFilter(name) {\n  return function(e) {\n    // All the *HTML elements* in the document with the given name attribute\n    if (e.namespaceURI !== NAMESPACE.HTML) { return false; }\n    return e.getAttribute('name') === name;\n  };\n}\n","\"use strict\";\nmodule.exports = Leaf;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\nvar utils = require('./utils');\nvar HierarchyRequestError = utils.HierarchyRequestError;\nvar NotFoundError = utils.NotFoundError;\n\n// This class defines common functionality for node subtypes that\n// can never have children\nfunction Leaf() {\n  Node.call(this);\n}\n\nLeaf.prototype = Object.create(Node.prototype, {\n  hasChildNodes: { value: function() { return false; }},\n  firstChild: { value: null },\n  lastChild: { value: null },\n  insertBefore: { value: function(node, child) {\n    if (!node.nodeType) throw new TypeError('not a node');\n    HierarchyRequestError();\n  }},\n  replaceChild: { value: function(node, child) {\n    if (!node.nodeType) throw new TypeError('not a node');\n    HierarchyRequestError();\n  }},\n  removeChild: { value: function(node) {\n    if (!node.nodeType) throw new TypeError('not a node');\n    NotFoundError();\n  }},\n  removeChildren: { value: function() { /* no op */ }},\n  childNodes: { get: function() {\n    if (!this._childNodes) this._childNodes = new NodeList();\n    return this._childNodes;\n  }}\n});\n","/* jshint bitwise: false */\n\"use strict\";\nmodule.exports = CharacterData;\n\nvar Leaf = require('./Leaf');\nvar utils = require('./utils');\nvar ChildNode = require('./ChildNode');\nvar NonDocumentTypeChildNode = require('./NonDocumentTypeChildNode');\n\nfunction CharacterData() {\n  Leaf.call(this);\n}\n\nCharacterData.prototype = Object.create(Leaf.prototype, {\n  // DOMString substringData(unsigned long offset,\n  //               unsigned long count);\n  // The substringData(offset, count) method must run these steps:\n  //\n  //     If offset is greater than the context object's\n  //     length, throw an INDEX_SIZE_ERR exception and\n  //     terminate these steps.\n  //\n  //     If offset+count is greater than the context\n  //     object's length, return a DOMString whose value is\n  //     the UTF-16 code units from the offsetth UTF-16 code\n  //     unit to the end of data.\n  //\n  //     Return a DOMString whose value is the UTF-16 code\n  //     units from the offsetth UTF-16 code unit to the\n  //     offset+countth UTF-16 code unit in data.\n  substringData: { value: function substringData(offset, count) {\n    if (arguments.length < 2) { throw new TypeError(\"Not enough arguments\"); }\n    // Convert arguments to WebIDL \"unsigned long\"\n    offset = offset >>> 0;\n    count = count >>> 0;\n    if (offset > this.data.length || offset < 0 || count < 0) {\n      utils.IndexSizeError();\n    }\n    return this.data.substring(offset, offset+count);\n  }},\n\n  // void appendData(DOMString data);\n  // The appendData(data) method must append data to the context\n  // object's data.\n  appendData: { value: function appendData(data) {\n    if (arguments.length < 1) { throw new TypeError(\"Not enough arguments\"); }\n    this.data += String(data);\n  }},\n\n  // void insertData(unsigned long offset, DOMString data);\n  // The insertData(offset, data) method must run these steps:\n  //\n  //     If offset is greater than the context object's\n  //     length, throw an INDEX_SIZE_ERR exception and\n  //     terminate these steps.\n  //\n  //     Insert data into the context object's data after\n  //     offset UTF-16 code units.\n  //\n  insertData: { value: function insertData(offset, data) {\n    return this.replaceData(offset, 0, data);\n  }},\n\n\n  // void deleteData(unsigned long offset, unsigned long count);\n  // The deleteData(offset, count) method must run these steps:\n  //\n  //     If offset is greater than the context object's\n  //     length, throw an INDEX_SIZE_ERR exception and\n  //     terminate these steps.\n  //\n  //     If offset+count is greater than the context\n  //     object's length var count be length-offset.\n  //\n  //     Starting from offset UTF-16 code units remove count\n  //     UTF-16 code units from the context object's data.\n  deleteData: { value: function deleteData(offset, count) {\n    return this.replaceData(offset, count, '');\n  }},\n\n\n  // void replaceData(unsigned long offset, unsigned long count,\n  //          DOMString data);\n  //\n  // The replaceData(offset, count, data) method must act as\n  // if the deleteData() method is invoked with offset and\n  // count as arguments followed by the insertData() method\n  // with offset and data as arguments and re-throw any\n  // exceptions these methods might have thrown.\n  replaceData: { value: function replaceData(offset, count, data) {\n    var curtext = this.data, len = curtext.length;\n    // Convert arguments to correct WebIDL type\n    offset = offset >>> 0;\n    count = count >>> 0;\n    data = String(data);\n\n    if (offset > len || offset < 0) utils.IndexSizeError();\n\n    if (offset+count > len)\n      count = len - offset;\n\n    var prefix = curtext.substring(0, offset),\n    suffix = curtext.substring(offset+count);\n\n    this.data = prefix + data + suffix;\n  }},\n\n  // Utility method that Node.isEqualNode() calls to test Text and\n  // Comment nodes for equality.  It is okay to put it here, since\n  // Node will have already verified that nodeType is equal\n  isEqual: { value: function isEqual(n) {\n    return this._data === n._data;\n  }},\n\n  length: { get: function() { return this.data.length; }}\n\n});\n\nObject.defineProperties(CharacterData.prototype, ChildNode);\nObject.defineProperties(CharacterData.prototype, NonDocumentTypeChildNode);\n","\"use strict\";\nmodule.exports = Text;\n\nvar utils = require('./utils');\nvar Node = require('./Node');\nvar CharacterData = require('./CharacterData');\n\nfunction Text(doc, data) {\n  CharacterData.call(this);\n  this.nodeType = Node.TEXT_NODE;\n  this.ownerDocument = doc;\n  this._data = data;\n  this._index = undefined;\n}\n\nvar nodeValue = {\n  get: function() { return this._data; },\n  set: function(v) {\n    if (v === null || v === undefined) { v = ''; } else { v = String(v); }\n    if (v === this._data) return;\n    this._data = v;\n    if (this.rooted)\n      this.ownerDocument.mutateValue(this);\n    if (this.parentNode &&\n      this.parentNode._textchangehook)\n      this.parentNode._textchangehook(this);\n  }\n};\n\nText.prototype = Object.create(CharacterData.prototype, {\n  nodeName: { value: \"#text\" },\n  // These three attributes are all the same.\n  // The data attribute has a [TreatNullAs=EmptyString] but we'll\n  // implement that at the interface level\n  nodeValue: nodeValue,\n  textContent: nodeValue,\n  innerText: nodeValue,\n  data: {\n    get: nodeValue.get,\n    set: function(v) {\n      nodeValue.set.call(this, v===null ? '' : String(v));\n    },\n  },\n\n  splitText: { value: function splitText(offset) {\n    if (offset > this._data.length || offset < 0) utils.IndexSizeError();\n\n    var newdata = this._data.substring(offset),\n      newnode = this.ownerDocument.createTextNode(newdata);\n    this.data = this.data.substring(0, offset);\n\n    var parent = this.parentNode;\n    if (parent !== null)\n      parent.insertBefore(newnode, this.nextSibling);\n\n    return newnode;\n  }},\n\n  wholeText: { get: function wholeText() {\n    var result = this.textContent;\n    for (var next = this.nextSibling; next; next = next.nextSibling) {\n      if (next.nodeType !== Node.TEXT_NODE) { break; }\n      result += next.textContent;\n    }\n    return result;\n  }},\n  // Obsolete, removed from spec.\n  replaceWholeText: { value: utils.nyi },\n\n  // Utility methods\n  clone: { value: function clone() {\n    return new Text(this.ownerDocument, this._data);\n  }},\n\n});\n","\"use strict\";\nmodule.exports = Comment;\n\nvar Node = require('./Node');\nvar CharacterData = require('./CharacterData');\n\nfunction Comment(doc, data) {\n  CharacterData.call(this);\n  this.nodeType = Node.COMMENT_NODE;\n  this.ownerDocument = doc;\n  this._data = data;\n}\n\nvar nodeValue = {\n  get: function() { return this._data; },\n  set: function(v) {\n    if (v === null || v === undefined) { v = ''; } else { v = String(v); }\n    this._data = v;\n    if (this.rooted)\n      this.ownerDocument.mutateValue(this);\n  }\n};\n\nComment.prototype = Object.create(CharacterData.prototype, {\n  nodeName: { value: '#comment' },\n  nodeValue: nodeValue,\n  textContent: nodeValue,\n  innerText: nodeValue,\n  data: {\n    get: nodeValue.get,\n    set: function(v) {\n      nodeValue.set.call(this, v===null ? '' : String(v));\n    },\n  },\n\n  // Utility methods\n  clone: { value: function clone() {\n    return new Comment(this.ownerDocument, this._data);\n  }},\n});\n","\"use strict\";\nmodule.exports =  DocumentFragment;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\nvar ContainerNode = require('./ContainerNode');\nvar Element = require('./Element');\nvar select = require('./select');\nvar utils = require('./utils');\n\nfunction DocumentFragment(doc) {\n  ContainerNode.call(this);\n  this.nodeType = Node.DOCUMENT_FRAGMENT_NODE;\n  this.ownerDocument = doc;\n}\n\nDocumentFragment.prototype = Object.create(ContainerNode.prototype, {\n  nodeName: { value: '#document-fragment' },\n  nodeValue: {\n    get: function() {\n      return null;\n    },\n    set: function() {}\n  },\n  // Copy the text content getter/setter from Element\n  textContent: Object.getOwnPropertyDescriptor(Element.prototype, 'textContent'),\n\n  // Copy the text content getter/setter from Element\n  innerText: Object.getOwnPropertyDescriptor(Element.prototype, 'innerText'),\n\n  querySelector: { value: function(selector) {\n    // implement in terms of querySelectorAll\n    var nodes = this.querySelectorAll(selector);\n    return nodes.length ? nodes[0] : null;\n  }},\n  querySelectorAll: { value: function(selector) {\n    // create a context\n    var context = Object.create(this);\n    // add some methods to the context for zest implementation, without\n    // adding them to the public DocumentFragment API\n    context.isHTML = true; // in HTML namespace (case-insensitive match)\n    context.getElementsByTagName = Element.prototype.getElementsByTagName;\n    context.nextElement =\n      Object.getOwnPropertyDescriptor(Element.prototype, 'firstElementChild').\n      get;\n    // invoke zest\n    var nodes = select(selector, context);\n    return nodes.item ? nodes : new NodeList(nodes);\n  }},\n\n  // Utility methods\n  clone: { value: function clone() {\n      return new DocumentFragment(this.ownerDocument);\n  }},\n  isEqual: { value: function isEqual(n) {\n      // Any two document fragments are shallowly equal.\n      // Node.isEqualNode() will test their children for equality\n      return true;\n  }},\n\n  // Non-standard, but useful (github issue #73)\n  innerHTML: {\n    get: function() { return this.serialize(); },\n    set: utils.nyi\n  },\n  outerHTML: {\n    get: function() { return this.serialize(); },\n    set: utils.nyi\n  },\n\n});\n","\"use strict\";\nmodule.exports = ProcessingInstruction;\n\nvar Node = require('./Node');\nvar CharacterData = require('./CharacterData');\n\nfunction ProcessingInstruction(doc, target, data) {\n  CharacterData.call(this);\n  this.nodeType = Node.PROCESSING_INSTRUCTION_NODE;\n  this.ownerDocument = doc;\n  this._target = target;\n  this._data = data;\n}\n\nvar nodeValue = {\n  get: function() { return this._data; },\n  set: function(v) {\n    if (v === null || v === undefined) { v = ''; } else { v = String(v); }\n    this._data = v;\n    if (this.rooted) this.ownerDocument.mutateValue(this);\n  }\n};\n\nProcessingInstruction.prototype = Object.create(CharacterData.prototype, {\n  target: {\n    get: function () { return this._target; },\n    set: function () { /* no-op per spec */ }\n  },\n  nodeName: { get: function() { return this.target; }},\n  nodeValue: nodeValue,\n  textContent: nodeValue,\n  innerText: nodeValue,\n  data: {\n    get: nodeValue.get,\n    set: function(v) {\n      nodeValue.set.call(this, v===null ? '' : String(v));\n    },\n  },\n\n  // Utility methods\n  clone: { value: function clone() {\n      return new ProcessingInstruction(this.ownerDocument, this.target, this._data);\n  }},\n  isEqual: { value: function isEqual(n) {\n      return this.target === n.target && this._data === n._data;\n  }}\n\n});\n","\"use strict\";\nvar NodeFilter = {\n  // Constants for acceptNode()\n  FILTER_ACCEPT: 1,\n  FILTER_REJECT: 2,\n  FILTER_SKIP: 3,\n\n  // Constants for whatToShow\n  SHOW_ALL: 0xFFFFFFFF,\n  SHOW_ELEMENT: 0x1,\n  SHOW_ATTRIBUTE: 0x2, // historical\n  SHOW_TEXT: 0x4,\n  SHOW_CDATA_SECTION: 0x8, // historical\n  SHOW_ENTITY_REFERENCE: 0x10, // historical\n  SHOW_ENTITY: 0x20, // historical\n  SHOW_PROCESSING_INSTRUCTION: 0x40,\n  SHOW_COMMENT: 0x80,\n  SHOW_DOCUMENT: 0x100,\n  SHOW_DOCUMENT_TYPE: 0x200,\n  SHOW_DOCUMENT_FRAGMENT: 0x400,\n  SHOW_NOTATION: 0x800 // historical\n};\n\nmodule.exports = (NodeFilter.constructor = NodeFilter.prototype = NodeFilter);\n","\"use strict\";\n/* exported NodeTraversal */\nvar NodeTraversal = module.exports = {\n  nextSkippingChildren: nextSkippingChildren,\n  nextAncestorSibling: nextAncestorSibling,\n  next: next,\n  previous: previous,\n  deepLastChild: deepLastChild\n};\n\n/**\n * @based on WebKit's NodeTraversal::nextSkippingChildren\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L109\n */\nfunction nextSkippingChildren(node, stayWithin) {\n  if (node === stayWithin) {\n    return null;\n  }\n  if (node.nextSibling !== null) {\n    return node.nextSibling;\n  }\n  return nextAncestorSibling(node, stayWithin);\n}\n\n/**\n * @based on WebKit's NodeTraversal::nextAncestorSibling\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L93\n */\nfunction nextAncestorSibling(node, stayWithin) {\n  for (node = node.parentNode; node !== null; node = node.parentNode) {\n    if (node === stayWithin) {\n      return null;\n    }\n    if (node.nextSibling !== null) {\n      return node.nextSibling;\n    }\n  }\n  return null;\n}\n\n/**\n * @based on WebKit's NodeTraversal::next\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L99\n */\nfunction next(node, stayWithin) {\n  var n;\n  n = node.firstChild;\n  if (n !== null) {\n    return n;\n  }\n  if (node === stayWithin) {\n    return null;\n  }\n  n = node.nextSibling;\n  if (n !== null) {\n    return n;\n  }\n  return nextAncestorSibling(node, stayWithin);\n}\n\n/**\n * @based on WebKit's NodeTraversal::deepLastChild\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L116\n */\nfunction deepLastChild(node) {\n  while (node.lastChild) {\n    node = node.lastChild;\n  }\n  return node;\n}\n\n/**\n * @based on WebKit's NodeTraversal::previous\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L121\n */\nfunction previous(node, stayWithin) {\n  var p;\n  p = node.previousSibling;\n  if (p !== null) {\n    return deepLastChild(p);\n  }\n  p = node.parentNode;\n  if (p === stayWithin) {\n    return null;\n  }\n  return p;\n}\n","\"use strict\";\nmodule.exports = TreeWalker;\n\nvar Node = require('./Node');\nvar NodeFilter = require('./NodeFilter');\nvar NodeTraversal = require('./NodeTraversal');\nvar utils = require('./utils');\n\nvar mapChild = {\n  first: 'firstChild',\n  last: 'lastChild',\n  next: 'firstChild',\n  previous: 'lastChild'\n};\n\nvar mapSibling = {\n  first: 'nextSibling',\n  last: 'previousSibling',\n  next: 'nextSibling',\n  previous: 'previousSibling'\n};\n\n/* Private methods and helpers */\n\n/**\n * @spec https://dom.spec.whatwg.org/#concept-traverse-children\n * @method\n * @access private\n * @param {TreeWalker} tw\n * @param {string} type One of 'first' or 'last'.\n * @return {Node|null}\n */\nfunction traverseChildren(tw, type) {\n  var child, node, parent, result, sibling;\n  node = tw._currentNode[mapChild[type]];\n  while (node !== null) {\n    result = tw._internalFilter(node);\n    if (result === NodeFilter.FILTER_ACCEPT) {\n      tw._currentNode = node;\n      return node;\n    }\n    if (result === NodeFilter.FILTER_SKIP) {\n      child = node[mapChild[type]];\n      if (child !== null) {\n        node = child;\n        continue;\n      }\n    }\n    while (node !== null) {\n      sibling = node[mapSibling[type]];\n      if (sibling !== null) {\n        node = sibling;\n        break;\n      }\n      parent = node.parentNode;\n      if (parent === null || parent === tw.root || parent === tw._currentNode) {\n        return null;\n      } else {\n        node = parent;\n      }\n    }\n  }\n  return null;\n}\n\n/**\n * @spec https://dom.spec.whatwg.org/#concept-traverse-siblings\n * @method\n * @access private\n * @param {TreeWalker} tw\n * @param {TreeWalker} type One of 'next' or 'previous'.\n * @return {Node|nul}\n */\nfunction traverseSiblings(tw, type) {\n  var node, result, sibling;\n  node = tw._currentNode;\n  if (node === tw.root) {\n    return null;\n  }\n  while (true) {\n    sibling = node[mapSibling[type]];\n    while (sibling !== null) {\n      node = sibling;\n      result = tw._internalFilter(node);\n      if (result === NodeFilter.FILTER_ACCEPT) {\n        tw._currentNode = node;\n        return node;\n      }\n      sibling = node[mapChild[type]];\n      if (result === NodeFilter.FILTER_REJECT || sibling === null) {\n        sibling = node[mapSibling[type]];\n      }\n    }\n    node = node.parentNode;\n    if (node === null || node === tw.root) {\n      return null;\n    }\n    if (tw._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\n      return null;\n    }\n  }\n}\n\n\n/* Public API */\n\n/**\n * Latest version: https://dom.spec.whatwg.org/#treewalker\n *\n * @constructor\n * @param {Node} root\n * @param {number} whatToShow [optional]\n * @param {Function|NodeFilter} filter [optional]\n * @throws Error\n */\nfunction TreeWalker(root, whatToShow, filter) {\n  if (!root || !root.nodeType) {\n    utils.NotSupportedError();\n  }\n\n  // Read-only properties\n  this._root = root;\n  this._whatToShow = Number(whatToShow) || 0;\n  this._filter = filter || null;\n  this._active = false;\n  // Read-write property\n  this._currentNode = root;\n}\n\nObject.defineProperties(TreeWalker.prototype, {\n  root: { get: function() { return this._root; } },\n  whatToShow: { get: function() { return this._whatToShow; } },\n  filter: { get: function() { return this._filter; } },\n\n  currentNode: {\n    get: function currentNode() {\n      return this._currentNode;\n    },\n    set: function setCurrentNode(v) {\n      if (!(v instanceof Node)) {\n        throw new TypeError(\"Not a Node\"); // `null` is also not a node\n      }\n      this._currentNode = v;\n    },\n  },\n\n  /**\n   * @method\n   * @param {Node} node\n   * @return {Number} Constant NodeFilter.FILTER_ACCEPT,\n   *  NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP.\n   */\n  _internalFilter: { value: function _internalFilter(node) {\n    /* jshint bitwise: false */\n    var result, filter;\n    if (this._active) {\n      utils.InvalidStateError();\n    }\n\n    // Maps nodeType to whatToShow\n    if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) {\n      return NodeFilter.FILTER_SKIP;\n    }\n\n    filter = this._filter;\n    if (filter === null) {\n      result = NodeFilter.FILTER_ACCEPT;\n    } else {\n      this._active = true;\n      try {\n        if (typeof filter === 'function') {\n          result = filter(node);\n        } else {\n          result = filter.acceptNode(node);\n        }\n      } finally {\n        this._active = false;\n      }\n    }\n\n    // Note that coercing to a number means that\n    //  `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT)\n    //  `false` becomes `0` (neither accept, reject, or skip)\n    return (+result);\n  }},\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-parentnode\n   * @based on WebKit's TreeWalker::parentNode\n   * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L50\n   * @method\n   * @return {Node|null}\n   */\n  parentNode: { value: function parentNode() {\n    var node = this._currentNode;\n    while (node !== this.root) {\n      node = node.parentNode;\n      if (node === null) {\n        return null;\n      }\n      if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\n        this._currentNode = node;\n        return node;\n      }\n    }\n    return null;\n  }},\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-firstchild\n   * @method\n   * @return {Node|null}\n   */\n  firstChild: { value: function firstChild() {\n    return traverseChildren(this, 'first');\n  }},\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-lastchild\n   * @method\n   * @return {Node|null}\n   */\n  lastChild: { value: function lastChild() {\n    return traverseChildren(this, 'last');\n  }},\n\n  /**\n   * @spec http://www.w3.org/TR/dom/#dom-treewalker-previoussibling\n   * @method\n   * @return {Node|null}\n   */\n  previousSibling: { value: function previousSibling() {\n    return traverseSiblings(this, 'previous');\n  }},\n\n  /**\n   * @spec http://www.w3.org/TR/dom/#dom-treewalker-nextsibling\n   * @method\n   * @return {Node|null}\n   */\n  nextSibling: { value: function nextSibling() {\n    return traverseSiblings(this, 'next');\n  }},\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-previousnode\n   * @based on WebKit's TreeWalker::previousNode\n   * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L181\n   * @method\n   * @return {Node|null}\n   */\n  previousNode: { value: function previousNode() {\n    var node, result, previousSibling, lastChild;\n    node = this._currentNode;\n    while (node !== this._root) {\n      for (previousSibling = node.previousSibling;\n           previousSibling;\n           previousSibling = node.previousSibling) {\n        node = previousSibling;\n        result = this._internalFilter(node);\n        if (result === NodeFilter.FILTER_REJECT) {\n          continue;\n        }\n        for (lastChild = node.lastChild;\n             lastChild;\n             lastChild = node.lastChild) {\n          node = lastChild;\n          result = this._internalFilter(node);\n          if (result === NodeFilter.FILTER_REJECT) {\n            break;\n          }\n        }\n        if (result === NodeFilter.FILTER_ACCEPT) {\n          this._currentNode = node;\n          return node;\n        }\n      }\n      if (node === this.root || node.parentNode === null) {\n        return null;\n      }\n      node = node.parentNode;\n      if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\n        this._currentNode = node;\n        return node;\n      }\n    }\n    return null;\n  }},\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-nextnode\n   * @based on WebKit's TreeWalker::nextNode\n   * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L228\n   * @method\n   * @return {Node|null}\n   */\n  nextNode: { value: function nextNode() {\n    var node, result, firstChild, nextSibling;\n    node = this._currentNode;\n    result = NodeFilter.FILTER_ACCEPT;\n\n    CHILDREN:\n    while (true) {\n      for (firstChild = node.firstChild;\n           firstChild;\n           firstChild = node.firstChild) {\n        node = firstChild;\n        result = this._internalFilter(node);\n        if (result === NodeFilter.FILTER_ACCEPT) {\n          this._currentNode = node;\n          return node;\n        } else if (result === NodeFilter.FILTER_REJECT) {\n          break;\n        }\n      }\n      for (nextSibling = NodeTraversal.nextSkippingChildren(node, this.root);\n           nextSibling;\n           nextSibling = NodeTraversal.nextSkippingChildren(node, this.root)) {\n        node = nextSibling;\n        result = this._internalFilter(node);\n        if (result === NodeFilter.FILTER_ACCEPT) {\n          this._currentNode = node;\n          return node;\n        } else if (result === NodeFilter.FILTER_SKIP) {\n          continue CHILDREN;\n        }\n      }\n      return null;\n    }\n  }},\n\n  /** For compatibility with web-platform-tests. */\n  toString: { value: function toString() {\n    return \"[object TreeWalker]\";\n  }},\n});\n","\"use strict\";\nmodule.exports = NodeIterator;\n\nvar NodeFilter = require('./NodeFilter');\nvar NodeTraversal = require('./NodeTraversal');\nvar utils = require('./utils');\n\n/* Private methods and helpers */\n\n/**\n * @based on WebKit's NodeIterator::moveToNext and NodeIterator::moveToPrevious\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeIterator.cpp?rev=186279#L51\n */\nfunction move(node, stayWithin, directionIsNext) {\n  if (directionIsNext) {\n    return NodeTraversal.next(node, stayWithin);\n  } else {\n    if (node === stayWithin) {\n      return null;\n    }\n    return NodeTraversal.previous(node, null);\n  }\n}\n\nfunction isInclusiveAncestor(node, possibleChild) {\n  for ( ; possibleChild; possibleChild = possibleChild.parentNode) {\n    if (node === possibleChild) { return true; }\n  }\n  return false;\n}\n\n/**\n * @spec http://www.w3.org/TR/dom/#concept-nodeiterator-traverse\n * @method\n * @access private\n * @param {NodeIterator} ni\n * @param {string} direction One of 'next' or 'previous'.\n * @return {Node|null}\n */\nfunction traverse(ni, directionIsNext) {\n  var node, beforeNode;\n  node = ni._referenceNode;\n  beforeNode = ni._pointerBeforeReferenceNode;\n  while (true) {\n    if (beforeNode === directionIsNext) {\n      beforeNode = !beforeNode;\n    } else {\n      node = move(node, ni._root, directionIsNext);\n      if (node === null) {\n        return null;\n      }\n    }\n    var result = ni._internalFilter(node);\n    if (result === NodeFilter.FILTER_ACCEPT) {\n      break;\n    }\n  }\n  ni._referenceNode = node;\n  ni._pointerBeforeReferenceNode = beforeNode;\n  return node;\n}\n\n/* Public API */\n\n/**\n * Implemented version: http://www.w3.org/TR/2015/WD-dom-20150618/#nodeiterator\n * Latest version: http://www.w3.org/TR/dom/#nodeiterator\n *\n * @constructor\n * @param {Node} root\n * @param {number} whatToShow [optional]\n * @param {Function|NodeFilter} filter [optional]\n * @throws Error\n */\nfunction NodeIterator(root, whatToShow, filter) {\n  if (!root || !root.nodeType) {\n    utils.NotSupportedError();\n  }\n\n  // Read-only properties\n  this._root = root;\n  this._referenceNode = root;\n  this._pointerBeforeReferenceNode = true;\n  this._whatToShow = Number(whatToShow) || 0;\n  this._filter = filter || null;\n  this._active = false;\n  // Record active node iterators in the document, in order to perform\n  // \"node iterator pre-removal steps\".\n  root.doc._attachNodeIterator(this);\n}\n\nObject.defineProperties(NodeIterator.prototype, {\n  root: { get: function root() {\n    return this._root;\n  } },\n  referenceNode: { get: function referenceNode() {\n    return this._referenceNode;\n  } },\n  pointerBeforeReferenceNode: { get: function pointerBeforeReferenceNode() {\n    return this._pointerBeforeReferenceNode;\n  } },\n  whatToShow: { get: function whatToShow() {\n    return this._whatToShow;\n  } },\n  filter: { get: function filter() {\n    return this._filter;\n  } },\n\n  /**\n   * @method\n   * @param {Node} node\n   * @return {Number} Constant NodeFilter.FILTER_ACCEPT,\n   *  NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP.\n   */\n  _internalFilter: { value: function _internalFilter(node) {\n    /* jshint bitwise: false */\n    var result, filter;\n    if (this._active) {\n      utils.InvalidStateError();\n    }\n\n    // Maps nodeType to whatToShow\n    if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) {\n      return NodeFilter.FILTER_SKIP;\n    }\n\n    filter = this._filter;\n    if (filter === null) {\n      result = NodeFilter.FILTER_ACCEPT;\n    } else {\n      this._active = true;\n      try {\n        if (typeof filter === 'function') {\n          result = filter(node);\n        } else {\n          result = filter.acceptNode(node);\n        }\n      } finally {\n        this._active = false;\n      }\n    }\n\n    // Note that coercing to a number means that\n    //  `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT)\n    //  `false` becomes `0` (neither accept, reject, or skip)\n    return (+result);\n  } },\n\n  /**\n   * @spec https://dom.spec.whatwg.org/#nodeiterator-pre-removing-steps\n   * @method\n   * @return void\n   */\n  _preremove: { value: function _preremove(toBeRemovedNode) {\n    if (isInclusiveAncestor(toBeRemovedNode, this._root)) { return; }\n    if (!isInclusiveAncestor(toBeRemovedNode, this._referenceNode)) { return; }\n    if (this._pointerBeforeReferenceNode) {\n      var next = toBeRemovedNode;\n      while (next.lastChild) {\n        next = next.lastChild;\n      }\n      next = NodeTraversal.next(next, this.root);\n      if (next) {\n        this._referenceNode = next;\n        return;\n      }\n      this._pointerBeforeReferenceNode = false;\n      // fall through\n    }\n    if (toBeRemovedNode.previousSibling === null) {\n      this._referenceNode = toBeRemovedNode.parentNode;\n    } else {\n      this._referenceNode = toBeRemovedNode.previousSibling;\n      var lastChild;\n      for (lastChild = this._referenceNode.lastChild;\n           lastChild;\n           lastChild = this._referenceNode.lastChild) {\n        this._referenceNode = lastChild;\n      }\n    }\n  } },\n\n  /**\n   * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-nextnode\n   * @method\n   * @return {Node|null}\n   */\n  nextNode: { value: function nextNode() {\n    return traverse(this, true);\n  } },\n\n  /**\n   * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-previousnode\n   * @method\n   * @return {Node|null}\n   */\n  previousNode: { value: function previousNode() {\n    return traverse(this, false);\n  } },\n\n  /**\n   * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-detach\n   * @method\n   * @return void\n   */\n  detach: { value: function detach() {\n    /* \"The detach() method must do nothing.\n     * Its functionality (disabling a NodeIterator object) was removed,\n     * but the method itself is preserved for compatibility.\n     */\n  } },\n\n  /** For compatibility with web-platform-tests. */\n  toString: { value: function toString() {\n    return \"[object NodeIterator]\";\n  } },\n});\n","\"use strict\";\nmodule.exports = URL;\n\nfunction URL(url) {\n  if (!url) return Object.create(URL.prototype);\n  // Can't use String.trim() since it defines whitespace differently than HTML\n  this.url = url.replace(/^[ \\t\\n\\r\\f]+|[ \\t\\n\\r\\f]+$/g, \"\");\n\n  // See http://tools.ietf.org/html/rfc3986#appendix-B\n  // and https://url.spec.whatwg.org/#parsing\n  var match = URL.pattern.exec(this.url);\n  if (match) {\n    if (match[2]) this.scheme = match[2];\n    if (match[4]) {\n      // parse username/password\n      var userinfo = match[4].match(URL.userinfoPattern);\n      if (userinfo) {\n        this.username = userinfo[1];\n        this.password = userinfo[3];\n        match[4] = match[4].substring(userinfo[0].length);\n      }\n      if (match[4].match(URL.portPattern)) {\n        var pos = match[4].lastIndexOf(':');\n        this.host = match[4].substring(0, pos);\n        this.port = match[4].substring(pos+1);\n      }\n      else {\n        this.host = match[4];\n      }\n    }\n    if (match[5]) this.path = match[5];\n    if (match[6]) this.query = match[7];\n    if (match[8]) this.fragment = match[9];\n  }\n}\n\nURL.pattern = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/;\nURL.userinfoPattern = /^([^@:]*)(:([^@]*))?@/;\nURL.portPattern = /:\\d+$/;\nURL.authorityPattern = /^[^:\\/?#]+:\\/\\//;\nURL.hierarchyPattern = /^[^:\\/?#]+:\\//;\n\n// Return a percentEncoded version of s.\n// S should be a single-character string\n// XXX: needs to do utf-8 encoding?\nURL.percentEncode = function percentEncode(s) {\n  var c = s.charCodeAt(0);\n  if (c < 256) return \"%\" + c.toString(16);\n  else throw Error(\"can't percent-encode codepoints > 255 yet\");\n};\n\nURL.prototype = {\n  constructor: URL,\n\n  // XXX: not sure if this is the precise definition of absolute\n  isAbsolute: function() { return !!this.scheme; },\n  isAuthorityBased: function() {\n    return URL.authorityPattern.test(this.url);\n  },\n  isHierarchical: function() {\n    return URL.hierarchyPattern.test(this.url);\n  },\n\n  toString: function() {\n    var s = \"\";\n    if (this.scheme !== undefined) s += this.scheme + \":\";\n    if (this.isAbsolute()) {\n      s += '//';\n      if (this.username || this.password) {\n        s += this.username || '';\n        if (this.password) {\n          s += ':' + this.password;\n        }\n        s += '@';\n      }\n      if (this.host) {\n        s += this.host;\n      }\n    }\n    if (this.port !== undefined) s += \":\" + this.port;\n    if (this.path !== undefined) s += this.path;\n    if (this.query !== undefined) s += \"?\" + this.query;\n    if (this.fragment !== undefined) s += \"#\" + this.fragment;\n    return s;\n  },\n\n  // See: http://tools.ietf.org/html/rfc3986#section-5.2\n  // and https://url.spec.whatwg.org/#constructors\n  resolve: function(relative) {\n    var base = this;           // The base url we're resolving against\n    var r = new URL(relative); // The relative reference url to resolve\n    var t = new URL();         // The absolute target url we will return\n\n    if (r.scheme !== undefined) {\n      t.scheme = r.scheme;\n      t.username = r.username;\n      t.password = r.password;\n      t.host = r.host;\n      t.port = r.port;\n      t.path = remove_dot_segments(r.path);\n      t.query = r.query;\n    }\n    else {\n      t.scheme = base.scheme;\n      if (r.host !== undefined) {\n        t.username = r.username;\n        t.password = r.password;\n        t.host = r.host;\n        t.port = r.port;\n        t.path = remove_dot_segments(r.path);\n        t.query = r.query;\n      }\n      else {\n        t.username = base.username;\n        t.password = base.password;\n        t.host = base.host;\n        t.port = base.port;\n        if (!r.path) { // undefined or empty\n          t.path = base.path;\n          if (r.query !== undefined)\n            t.query = r.query;\n          else\n            t.query = base.query;\n        }\n        else {\n          if (r.path.charAt(0) === \"/\") {\n            t.path = remove_dot_segments(r.path);\n          }\n          else {\n            t.path = merge(base.path, r.path);\n            t.path = remove_dot_segments(t.path);\n          }\n          t.query = r.query;\n        }\n      }\n    }\n    t.fragment = r.fragment;\n\n    return t.toString();\n\n\n    function merge(basepath, refpath) {\n      if (base.host !== undefined && !base.path)\n        return \"/\" + refpath;\n\n      var lastslash = basepath.lastIndexOf(\"/\");\n      if (lastslash === -1)\n        return refpath;\n      else\n        return basepath.substring(0, lastslash+1) + refpath;\n    }\n\n    function remove_dot_segments(path) {\n      if (!path) return path; // For \"\" or undefined\n\n      var output = \"\";\n      while(path.length > 0) {\n        if (path === \".\" || path === \"..\") {\n          path = \"\";\n          break;\n        }\n\n        var twochars = path.substring(0,2);\n        var threechars = path.substring(0,3);\n        var fourchars = path.substring(0,4);\n        if (threechars === \"../\") {\n          path = path.substring(3);\n        }\n        else if (twochars === \"./\") {\n          path = path.substring(2);\n        }\n        else if (threechars === \"/./\") {\n          path = \"/\" + path.substring(3);\n        }\n        else if (twochars === \"/.\" && path.length === 2) {\n          path = \"/\";\n        }\n        else if (fourchars === \"/../\" ||\n             (threechars === \"/..\" && path.length === 3)) {\n          path = \"/\" + path.substring(4);\n\n          output = output.replace(/\\/?[^\\/]*$/, \"\");\n        }\n        else {\n          var segment = path.match(/(\\/?([^\\/]*))/)[0];\n          output += segment;\n          path = path.substring(segment.length);\n        }\n      }\n\n      return output;\n    }\n  },\n};\n","\"use strict\";\nmodule.exports = CustomEvent;\n\nvar Event = require('./Event');\n\nfunction CustomEvent(type, dictionary) {\n  // Just use the superclass constructor to initialize\n  Event.call(this, type, dictionary);\n}\nCustomEvent.prototype = Object.create(Event.prototype, {\n  constructor: { value: CustomEvent }\n});\n","\"use strict\";\nmodule.exports = {\n  Event: require('./Event'),\n  UIEvent: require('./UIEvent'),\n  MouseEvent: require('./MouseEvent'),\n  CustomEvent: require('./CustomEvent')\n};\n","\"use strict\";\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// The below is a compiled copy of https://github.com/angular/angular/blob/92e41e9cb417223d9888a4c23b4c0e73188f87d0/packages/compiler/src/render3/view/style_parser.ts\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hyphenate = exports.parse = void 0;\n/**\n * Parses string representation of a style and converts it into object literal.\n *\n * @param value string representation of style as used in the `style` attribute in HTML.\n *   Example: `color: red; height: auto`.\n * @returns An array of style property name and value pairs, e.g. `['color', 'red', 'height',\n * 'auto']`\n */\nfunction parse(value) {\n  // we use a string array here instead of a string map\n  // because a string-map is not guaranteed to retain the\n  // order of the entries whereas a string array can be\n  // constructed in a [key, value, key, value] format.\n  const styles = [];\n  let i = 0;\n  let parenDepth = 0;\n  let quote = 0; /* Char.QuoteNone */\n  let valueStart = 0;\n  let propStart = 0;\n  let currentProp = null;\n  while (i < value.length) {\n    const token = value.charCodeAt(i++);\n    switch (token) {\n      case 40 /* Char.OpenParen */:\n        parenDepth++;\n        break;\n      case 41 /* Char.CloseParen */:\n        parenDepth--;\n        break;\n      case 39 /* Char.QuoteSingle */:\n        // valueStart needs to be there since prop values don't\n        // have quotes in CSS\n        if (quote === 0 /* Char.QuoteNone */) {\n          quote = 39 /* Char.QuoteSingle */;\n        } else if (\n          quote === 39 /* Char.QuoteSingle */ &&\n          value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */\n        ) {\n          quote = 0 /* Char.QuoteNone */;\n        }\n        break;\n      case 34 /* Char.QuoteDouble */:\n        // same logic as above\n        if (quote === 0 /* Char.QuoteNone */) {\n          quote = 34 /* Char.QuoteDouble */;\n        } else if (\n          quote === 34 /* Char.QuoteDouble */ &&\n          value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */\n        ) {\n          quote = 0 /* Char.QuoteNone */;\n        }\n        break;\n      case 58 /* Char.Colon */:\n        if (\n          !currentProp &&\n          parenDepth === 0 &&\n          quote === 0 /* Char.QuoteNone */\n        ) {\n          currentProp = hyphenate(value.substring(propStart, i - 1).trim());\n          valueStart = i;\n        }\n        break;\n      case 59 /* Char.Semicolon */:\n        if (\n          currentProp &&\n          valueStart > 0 &&\n          parenDepth === 0 &&\n          quote === 0 /* Char.QuoteNone */\n        ) {\n          const styleVal = value.substring(valueStart, i - 1).trim();\n          styles.push(currentProp, styleVal);\n          propStart = i;\n          valueStart = 0;\n          currentProp = null;\n        }\n        break;\n    }\n  }\n  if (currentProp && valueStart) {\n    const styleVal = value.slice(valueStart).trim();\n    styles.push(currentProp, styleVal);\n  }\n  return styles;\n}\nexports.parse = parse;\nfunction hyphenate(value) {\n  return value\n    .replace(/[a-z][A-Z]/g, (v) => {\n      return v.charAt(0) + \"-\" + v.charAt(1);\n    })\n    .toLowerCase();\n}\nexports.hyphenate = hyphenate;\n","\"use strict\";\n\nconst { parse } = require('./style_parser');\n\nmodule.exports = function (elt) {\n  const style = new CSSStyleDeclaration(elt)\n  const handler = {\n    get: function(target, property) {\n      return property in target ? target[property] : target.getPropertyValue(dasherizeProperty(property));\n    },\n    has: function(target, key) {\n      return true;\n    },\n    set: function(target, property, value) {\n      if (property in target) {\n        target[property] = value;\n      } else {\n        target.setProperty(dasherizeProperty(property), value ?? undefined);\n      }\n\n      return true;\n    }\n  };\n\n  return new Proxy(style, handler);\n};\n\nfunction dasherizeProperty(property) {\n  return property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\n\nfunction CSSStyleDeclaration(elt) {\n  this._element = elt;\n}\n\nconst IMPORTANT_BANG = '!important';\n\n// Utility function for parsing style declarations\n// Pass in a string like \"margin-left: 5px; border-style: solid\"\n// and this function returns an object like\n// {\"margin-left\":\"5px\", \"border-style\":\"solid\"}\nfunction parseStyles(value) {\n  const result = {\n    property: {},\n    priority: {},\n  }\n\n  if (!value) {\n    return result;\n  }\n\n  const styleValues = parse(value);\n  if (styleValues.length < 2) {\n    return result;\n  }\n\n  for (let i = 0; i < styleValues.length; i += 2) {\n    const name = styleValues[i];\n    let value = styleValues[i+1];\n\n    if (value.endsWith(IMPORTANT_BANG)) {\n      result.priority[name] = 'important';\n      value = value.slice(0, -IMPORTANT_BANG.length).trim();\n    }\n\n    result.property[name] = value;\n  }\n\n  return result;\n}\n\nvar NO_CHANGE = {}; // Private marker object\n\nCSSStyleDeclaration.prototype = Object.create(Object.prototype, {\n\n  // Return the parsed form of the element's style attribute.\n  // If the element's style attribute has never been parsed\n  // or if it has changed since the last parse, then reparse it\n  // Note that the styles don't get parsed until they're actually needed\n  _parsed: { get: function() {\n    if (!this._parsedStyles || this.cssText !== this._lastParsedText) {\n      var text = this.cssText;\n      this._parsedStyles = parseStyles(text);\n      this._lastParsedText = text;\n      delete this._names;\n    }\n    return this._parsedStyles;\n  }},\n\n  // Call this method any time the parsed representation of the\n  // style changes.  It converts the style properties to a string and\n  // sets cssText and the element's style attribute\n  _serialize: { value: function() {\n    var styles = this._parsed;\n    var s = \"\";\n\n    for(var name in styles.property) {\n      if (s) s += \" \";\n      s += name + \": \" + styles.property[name];\n      if (styles.priority[name]) {\n        s += \" !\" + styles.priority[name];\n      }\n      s += \";\";\n    }\n\n    this.cssText = s;      // also sets the style attribute\n    this._lastParsedText = s;  // so we don't reparse\n    delete this._names;\n  }},\n\n  cssText: {\n    get: function() {\n      // XXX: this is a CSSStyleDeclaration for an element.\n      // A different impl might be necessary for a set of styles\n      // associated returned by getComputedStyle(), e.g.\n      return this._element.getAttribute(\"style\");\n    },\n    set: function(value) {\n      // XXX: I should parse and serialize the value to\n      // normalize it and remove errors. FF and chrome do that.\n      this._element.setAttribute(\"style\", value);\n    }\n  },\n\n  length: { get: function() {\n    if (!this._names)\n      this._names = Object.getOwnPropertyNames(this._parsed.property);\n    return this._names.length;\n  }},\n\n  item: { value: function(n) {\n    if (!this._names)\n      this._names = Object.getOwnPropertyNames(this._parsed.property);\n    return this._names[n];\n  }},\n\n  getPropertyValue: { value: function(property) {\n    property = property.toLowerCase();\n    return this._parsed.property[property] || \"\";\n  }},\n\n  getPropertyPriority: { value: function(property) {\n    property = property.toLowerCase();\n    return this._parsed.priority[property] || \"\";\n  }},\n\n  setProperty: { value: function(property, value, priority) {\n    property = property.toLowerCase();\n    if (value === null || value === undefined) {\n      value = \"\";\n    }\n    if (priority === null || priority === undefined) {\n      priority = \"\";\n    }\n\n    // String coercion\n    if (value !== NO_CHANGE) {\n      value = \"\" + value;\n    }\n\n    value = value.trim();\n    if (value === \"\") {\n      this.removeProperty(property);\n      return;\n    }\n\n    if (priority !== \"\" && priority !== NO_CHANGE &&\n        !/^important$/i.test(priority)) {\n      return;\n    }\n\n    var styles = this._parsed;\n    if (value === NO_CHANGE) {\n      if (!styles.property[property]) {\n        return; // Not a valid property name.\n      }\n      if (priority !== \"\") {\n        styles.priority[property] = \"important\";\n      } else {\n        delete styles.priority[property];\n      }\n    } else {\n      // We don't just accept the property value.  Instead\n      // we parse it to ensure that it is something valid.\n      // If it contains a semicolon it is invalid, except  base64-encoded\n      // URLs (e.g. `background-image: url(data:image/png;base64,...`)\n      if (value.includes(\";\") && !value.includes(\"data:\")) return;\n\n      var newprops = parseStyles(property + \":\" + value);\n      if (Object.getOwnPropertyNames(newprops.property).length === 0) {\n        return; // no valid property found\n      }\n      if (Object.getOwnPropertyNames(newprops.priority).length !== 0) {\n        return; // if the value included '!important' it wasn't valid.\n      }\n\n      // XXX handle shorthand properties\n\n      for (var p in newprops.property) {\n        styles.property[p] = newprops.property[p];\n        if (priority === NO_CHANGE) {\n          continue;\n        } else if (priority !== \"\") {\n          styles.priority[p] = \"important\";\n        } else if (styles.priority[p]) {\n          delete styles.priority[p];\n        }\n      }\n    }\n\n    // Serialize and update cssText and element.style!\n    this._serialize();\n  }},\n\n  setPropertyValue: { value: function(property, value) {\n    return this.setProperty(property, value, NO_CHANGE);\n  }},\n\n  setPropertyPriority: { value: function(property, priority) {\n    return this.setProperty(property, NO_CHANGE, priority);\n  }},\n\n  removeProperty: { value: function(property) {\n    property = property.toLowerCase();\n    var styles = this._parsed;\n    if (property in styles.property) {\n      delete styles.property[property];\n      delete styles.priority[property];\n\n      // Serialize and update cssText and element.style!\n      this._serialize();\n    }\n  }},\n});\n","\"use strict\";\nvar URL = require('./URL');\n\nmodule.exports = URLUtils;\n\n// Allow the `x == null` pattern.  This is eslint's \"null: 'ignore'\" option,\n// but jshint doesn't support this.\n/* jshint eqeqeq: false */\n\n// This is an abstract superclass for Location, HTMLAnchorElement and\n// other types that have the standard complement of \"URL decomposition\n// IDL attributes\".  This is now standardized as URLUtils, see:\n// https://url.spec.whatwg.org/#urlutils\n// Subclasses must define a getter/setter on href.\n// The getter and setter methods parse and rebuild the URL on each\n// invocation; there is no attempt to cache the value and be more efficient\nfunction URLUtils() {}\nURLUtils.prototype = Object.create(Object.prototype, {\n\n  _url: { get: function() {\n    // XXX: this should do the \"Reinitialize url\" steps, and \"null\" should\n    // be a valid return value.\n    return new URL(this.href);\n  } },\n\n  protocol: {\n    get: function() {\n      var url = this._url;\n      if (url && url.scheme) return url.scheme + \":\";\n      else return \":\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute()) {\n        v = v.replace(/:+$/, \"\");\n        v = v.replace(/[^-+\\.a-zA-Z0-9]/g, URL.percentEncode);\n        if (v.length > 0) {\n          url.scheme = v;\n          output = url.toString();\n        }\n      }\n      this.href = output;\n    },\n  },\n\n  host: {\n    get: function() {\n      var url = this._url;\n      if (url.isAbsolute() && url.isAuthorityBased())\n        return url.host + (url.port ? (\":\" + url.port) : \"\");\n      else\n        return \"\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute() && url.isAuthorityBased()) {\n        v = v.replace(/[^-+\\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode);\n        if (v.length > 0) {\n          url.host = v;\n          delete url.port;\n          output = url.toString();\n        }\n      }\n      this.href = output;\n    },\n  },\n\n  hostname: {\n    get: function() {\n      var url = this._url;\n      if (url.isAbsolute() && url.isAuthorityBased())\n        return url.host;\n      else\n        return \"\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute() && url.isAuthorityBased()) {\n        v = v.replace(/^\\/+/, \"\");\n        v = v.replace(/[^-+\\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode);\n        if (v.length > 0) {\n          url.host = v;\n          output = url.toString();\n        }\n      }\n      this.href = output;\n    },\n  },\n\n  port: {\n    get: function() {\n      var url = this._url;\n      if (url.isAbsolute() && url.isAuthorityBased() && url.port!==undefined)\n        return url.port;\n      else\n        return \"\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute() && url.isAuthorityBased()) {\n        v = '' + v;\n        v = v.replace(/[^0-9].*$/, \"\");\n        v = v.replace(/^0+/, \"\");\n        if (v.length === 0) v = \"0\";\n        if (parseInt(v, 10) <= 65535) {\n          url.port = v;\n          output = url.toString();\n        }\n      }\n      this.href = output;\n    },\n  },\n\n  pathname: {\n    get: function() {\n      var url = this._url;\n      if (url.isAbsolute() && url.isHierarchical())\n        return url.path;\n      else\n        return \"\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute() && url.isHierarchical()) {\n        if (v.charAt(0) !== \"/\")\n          v = \"/\" + v;\n        v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/a-zA-Z0-9]/g, URL.percentEncode);\n        url.path = v;\n        output = url.toString();\n      }\n      this.href = output;\n    },\n  },\n\n  search: {\n    get: function() {\n      var url = this._url;\n      if (url.isAbsolute() && url.isHierarchical() && url.query!==undefined)\n        return \"?\" + url.query;\n      else\n        return \"\";\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute() && url.isHierarchical()) {\n        if (v.charAt(0) === \"?\") v = v.substring(1);\n        v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/?a-zA-Z0-9]/g, URL.percentEncode);\n        url.query = v;\n        output = url.toString();\n      }\n      this.href = output;\n    },\n  },\n\n  hash: {\n    get: function() {\n      var url = this._url;\n      if (url == null || url.fragment == null || url.fragment === '') {\n        return \"\";\n      } else {\n        return \"#\" + url.fragment;\n      }\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n\n      if (v.charAt(0) === \"#\") v = v.substring(1);\n      v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/?a-zA-Z0-9]/g, URL.percentEncode);\n      url.fragment = v;\n      output = url.toString();\n\n      this.href = output;\n    },\n  },\n\n  username: {\n    get: function() {\n      var url = this._url;\n      return url.username || '';\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute()) {\n        v = v.replace(/[\\x00-\\x1F\\x7F-\\uFFFF \"#<>?`\\/@\\\\:]/g, URL.percentEncode);\n        url.username = v;\n        output = url.toString();\n      }\n      this.href = output;\n    },\n  },\n\n  password: {\n    get: function() {\n      var url = this._url;\n      return url.password || '';\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      if (url.isAbsolute()) {\n        if (v==='') {\n          url.password = null;\n        } else {\n          v = v.replace(/[\\x00-\\x1F\\x7F-\\uFFFF \"#<>?`\\/@\\\\]/g, URL.percentEncode);\n          url.password = v;\n        }\n        output = url.toString();\n      }\n      this.href = output;\n    },\n  },\n\n  origin: { get: function() {\n    var url = this._url;\n    if (url == null) { return ''; }\n    var originForPort = function(defaultPort) {\n      var origin = [url.scheme, url.host, +url.port || defaultPort];\n      // XXX should be \"unicode serialization\"\n      return origin[0] + '://' + origin[1] +\n        (origin[2] === defaultPort ? '' : (':' + origin[2]));\n    };\n    switch (url.scheme) {\n    case 'ftp':\n      return originForPort(21);\n    case 'gopher':\n      return originForPort(70);\n    case 'http':\n    case 'ws':\n      return originForPort(80);\n    case 'https':\n    case 'wss':\n      return originForPort(443);\n    default:\n      // this is what chrome does\n      return url.scheme + '://';\n    }\n  } },\n\n  /*\n  searchParams: {\n    get: function() {\n      var url = this._url;\n      // XXX\n    },\n    set: function(v) {\n      var output = this.href;\n      var url = new URL(output);\n      // XXX\n      this.href = output;\n    },\n  },\n  */\n});\n\nURLUtils._inherit = function(proto) {\n  // copy getters/setters from URLUtils to o.\n  Object.getOwnPropertyNames(URLUtils.prototype).forEach(function(p) {\n    if (p==='constructor' || p==='href') { return; }\n    var desc = Object.getOwnPropertyDescriptor(URLUtils.prototype, p);\n    Object.defineProperty(proto, p, desc);\n  });\n};\n","\"use strict\";\n\nvar attributes = require('./attributes');\nvar isApiWritable = require(\"./config\").isApiWritable;\n\nmodule.exports = function(spec, defaultConstructor, tagList, tagNameToImpl) {\n  var c = spec.ctor;\n  if (c) {\n    var props = spec.props || {};\n\n    if (spec.attributes) {\n      for (var n in spec.attributes) {\n        var attr = spec.attributes[n];\n        if (typeof attr !== 'object' || Array.isArray(attr)) attr = {type: attr};\n        if (!attr.name) attr.name = n.toLowerCase();\n        props[n] = attributes.property(attr);\n      }\n    }\n\n    props.constructor = { value : c, writable: isApiWritable };\n    c.prototype = Object.create((spec.superclass || defaultConstructor).prototype, props);\n    if (spec.events) {\n      addEventHandlers(c, spec.events);\n    }\n    tagList[spec.name] = c;\n  }\n  else {\n    c = defaultConstructor;\n  }\n\n  (spec.tags || spec.tag && [spec.tag] || []).forEach(function(tag) {\n    tagNameToImpl[tag] = c;\n  });\n\n  return c;\n};\n\nfunction EventHandlerBuilder(body, document, form, element) {\n  this.body = body;\n  this.document = document;\n  this.form = form;\n  this.element = element;\n}\n\nEventHandlerBuilder.prototype.build = function () {\n  return () => {};\n};\n\nfunction EventHandlerChangeHandler(elt, name, oldval, newval) {\n  var doc = elt.ownerDocument || Object.create(null);\n  var form = elt.form || Object.create(null);\n  elt[name] = new EventHandlerBuilder(newval, doc, form, elt).build();\n}\n\nfunction addEventHandlers(c, eventHandlerTypes) {\n  var p = c.prototype;\n  eventHandlerTypes.forEach(function(type) {\n    // Define the event handler registration IDL attribute for this type\n    Object.defineProperty(p, \"on\" + type, {\n      get: function() {\n        return this._getEventHandler(type);\n      },\n      set: function(v) {\n        this._setEventHandler(type, v);\n      },\n    });\n\n    // Define special behavior for the content attribute as well\n    attributes.registerChangeHandler(c, \"on\" + type, EventHandlerChangeHandler);\n  });\n}\n","\"use strict\";\nvar Node = require('./Node');\nvar Element = require('./Element');\nvar CSSStyleDeclaration = require('./CSSStyleDeclaration');\nvar utils = require('./utils');\nvar URLUtils = require('./URLUtils');\nvar defineElement = require('./defineElement');\n\nvar htmlElements = exports.elements = {};\nvar htmlNameToImpl = Object.create(null);\n\nexports.createElement = function(doc, localName, prefix) {\n  var impl = htmlNameToImpl[localName] || HTMLUnknownElement;\n  return new impl(doc, localName, prefix);\n};\n\nfunction define(spec) {\n  return defineElement(spec, HTMLElement, htmlElements, htmlNameToImpl);\n}\n\nfunction URL(attr) {\n  return {\n    get: function() {\n      var v = this._getattr(attr);\n      if (v === null) { return ''; }\n      var url = this.doc._resolve(v);\n      return (url === null) ? v : url;\n    },\n    set: function(value) {\n      this._setattr(attr, value);\n    }\n  };\n}\n\nfunction CORS(attr) {\n  return {\n    get: function() {\n      var v = this._getattr(attr);\n      if (v === null) { return null; }\n      if (v.toLowerCase() === 'use-credentials') { return 'use-credentials'; }\n      return 'anonymous';\n    },\n    set: function(value) {\n      if (value===null || value===undefined) {\n        this.removeAttribute(attr);\n      } else {\n        this._setattr(attr, value);\n      }\n    }\n  };\n}\n\nconst REFERRER = {\n  type: [\"\", \"no-referrer\", \"no-referrer-when-downgrade\", \"same-origin\", \"origin\", \"strict-origin\", \"origin-when-cross-origin\", \"strict-origin-when-cross-origin\", \"unsafe-url\"],\n  missing: '',\n};\n\n\n// XXX: the default value for tabIndex should be 0 if the element is\n// focusable and -1 if it is not.  But the full definition of focusable\n// is actually hard to compute, so for now, I'll follow Firefox and\n// just base the default value on the type of the element.\nvar focusableElements = {\n  \"A\":true, \"LINK\":true, \"BUTTON\":true, \"INPUT\":true,\n  \"SELECT\":true, \"TEXTAREA\":true, \"COMMAND\":true\n};\n\nvar HTMLFormElement = function(doc, localName, prefix) {\n  HTMLElement.call(this, doc, localName, prefix);\n  this._form = null; // Prevent later deoptimization\n};\n\nvar HTMLElement = exports.HTMLElement = define({\n  superclass: Element,\n  name: 'HTMLElement',\n  ctor: function HTMLElement(doc, localName, prefix) {\n    Element.call(this, doc, localName, utils.NAMESPACE.HTML, prefix);\n  },\n  props: {\n    dangerouslySetInnerHTML: {\n      set: function (v) {\n        this._innerHTML = v;\n      },\n    },\n    innerHTML: {\n      get: function() {\n        return this.serialize();\n      },\n      set: function(v) {\n        var parser = this.ownerDocument.implementation.mozHTMLParser(\n          this.ownerDocument._address,\n          this);\n        parser.parse(v===null ? '' : String(v), true);\n\n        // Remove any existing children of this node\n        var target = (this instanceof htmlNameToImpl.template) ?\n            this.content : this;\n        while(target.hasChildNodes())\n          target.removeChild(target.firstChild);\n\n        // Now copy newly parsed children to this node\n        target.appendChild(parser._asDocumentFragment());\n      }\n    },\n    style: { get: function() {\n      if (!this._style)\n        this._style = new CSSStyleDeclaration(this);\n      return this._style;\n    }, set: function(v) {\n        if (v===null||v===undefined) { v = ''; }\n        this._setattr('style', String(v));\n    }},\n\n    // These can't really be implemented server-side in a reasonable way.\n    blur: { value: function() {}},\n    focus: { value: function() {}},\n    forceSpellCheck: { value: function() {}},\n\n    click: { value: function() {\n      if (this._click_in_progress) return;\n      this._click_in_progress = true;\n      try {\n        if (this._pre_click_activation_steps)\n          this._pre_click_activation_steps();\n\n        var event = this.ownerDocument.createEvent(\"MouseEvent\");\n        event.initMouseEvent(\"click\", true, true,\n          this.ownerDocument.defaultView, 1,\n          0, 0, 0, 0,\n          // These 4 should be initialized with\n          // the actually current keyboard state\n          // somehow...\n          false, false, false, false,\n          0, null\n        );\n\n        // Dispatch this as an untrusted event since it is synthetic\n        var success = this.dispatchEvent(event);\n\n        if (success) {\n          if (this._post_click_activation_steps)\n            this._post_click_activation_steps(event);\n        }\n        else {\n          if (this._cancelled_activation_steps)\n            this._cancelled_activation_steps();\n        }\n      }\n      finally {\n        this._click_in_progress = false;\n      }\n    }},\n    submit: { value: utils.nyi },\n  },\n  attributes: {\n    title: String,\n    lang: String,\n    dir: {type: [\"ltr\", \"rtl\", \"auto\"], missing: ''},\n    draggable: {type: [\"true\", \"false\"], treatNullAsEmptyString: true },\n    spellcheck: {type: [\"true\", \"false\"], missing: ''},\n    enterKeyHint: {type: [\"enter\", \"done\", \"go\", \"next\", \"previous\", \"search\", \"send\"], missing: ''},\n    autoCapitalize: {type: [\"off\", \"on\", \"none\", \"sentences\", \"words\", \"characters\"], missing: '' },\n    autoFocus: Boolean,\n    accessKey: String,\n    nonce: String,\n    hidden: Boolean,\n    translate: {type: [\"no\", \"yes\"], missing: '' },\n    tabIndex: {type: \"long\", default: function() {\n      if (this.tagName in focusableElements ||\n        this.contentEditable)\n        return 0;\n      else\n        return -1;\n    }}\n  },\n  events: [\n    \"abort\", \"canplay\", \"canplaythrough\", \"change\", \"click\", \"contextmenu\",\n    \"cuechange\", \"dblclick\", \"drag\", \"dragend\", \"dragenter\", \"dragleave\",\n    \"dragover\", \"dragstart\", \"drop\", \"durationchange\", \"emptied\", \"ended\",\n    \"input\", \"invalid\", \"keydown\", \"keypress\", \"keyup\", \"loadeddata\",\n    \"loadedmetadata\", \"loadstart\", \"mousedown\", \"mousemove\", \"mouseout\",\n    \"mouseover\", \"mouseup\", \"mousewheel\", \"pause\", \"play\", \"playing\",\n    \"progress\", \"ratechange\", \"readystatechange\", \"reset\", \"seeked\",\n    \"seeking\", \"select\", \"show\", \"stalled\", \"submit\", \"suspend\",\n    \"timeupdate\", \"volumechange\", \"waiting\",\n\n    // These last 5 event types will be overriden by HTMLBodyElement\n    \"blur\", \"error\", \"focus\", \"load\", \"scroll\"\n  ]\n});\n\n\n// XXX: reflect contextmenu as contextMenu, with element type\n\n\n// style: the spec doesn't call this a reflected attribute.\n//   may want to handle it manually.\n\n// contentEditable: enumerated, not clear if it is actually\n// reflected or requires custom getter/setter. Not listed as\n// \"limited to known values\".  Raises syntax_err on bad setting,\n// so I think this is custom.\n\n// contextmenu: content is element id, idl type is an element\n// draggable: boolean, but not a reflected attribute\n// dropzone: reflected SettableTokenList, experimental, so don't\n//   implement it right away.\n\n// data-* attributes: need special handling in setAttribute?\n// Or maybe that isn't necessary. Can I just scan the attribute list\n// when building the dataset?  Liveness and caching issues?\n\n// microdata attributes: many are simple reflected attributes, but\n// I'm not going to implement this now.\n\n\nvar HTMLUnknownElement = define({\n  name: 'HTMLUnknownElement',\n  ctor: function HTMLUnknownElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\n\nvar formAssociatedProps = {\n  // See http://www.w3.org/TR/html5/association-of-controls-and-forms.html#form-owner\n  form: { get: function() {\n    return this._form;\n  }}\n};\n\ndefine({\n  tag: 'a',\n  name: 'HTMLAnchorElement',\n  ctor: function HTMLAnchorElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    _post_click_activation_steps: { value: function(e) {\n      if (this.href) {\n        // Follow the link\n        // XXX: this is just a quick hack\n        // XXX: the HTML spec probably requires more than this\n        this.ownerDocument.defaultView.location = this.href;\n      }\n    }},\n  },\n  attributes: {\n    href: URL,\n    ping: String,\n    download: String,\n    target: String,\n    rel: String,\n    media: String,\n    hreflang: String,\n    type: String,\n    referrerPolicy: REFERRER,\n    // Obsolete\n    coords: String,\n    charset: String,\n    name: String,\n    rev: String,\n    shape: String,\n  }\n});\n// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils\nURLUtils._inherit(htmlNameToImpl.a.prototype);\n\ndefine({\n  tag: 'area',\n  name: 'HTMLAreaElement',\n  ctor: function HTMLAreaElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    alt: String,\n    target: String,\n    download: String,\n    rel: String,\n    media: String,\n    href: URL,\n    hreflang: String,\n    type: String,\n    shape: String,\n    coords: String,\n    ping: String,\n    // XXX: also reflect relList\n    referrerPolicy: REFERRER,\n    // Obsolete\n    noHref: Boolean,\n  }\n});\n// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils\nURLUtils._inherit(htmlNameToImpl.area.prototype);\n\ndefine({\n  tag: 'br',\n  name: 'HTMLBRElement',\n  ctor: function HTMLBRElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    clear: String\n  },\n});\n\ndefine({\n  tag: 'base',\n  name: 'HTMLBaseElement',\n  ctor: function HTMLBaseElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    \"target\": String\n  }\n});\n\n\ndefine({\n  tag: 'body',\n  name: 'HTMLBodyElement',\n  ctor: function HTMLBodyElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  // Certain event handler attributes on a <body> tag actually set\n  // handlers for the window rather than just that element.  Define\n  // getters and setters for those here.  Note that some of these override\n  // properties on HTMLElement.prototype.\n  // XXX: If I add support for <frameset>, these have to go there, too\n  // XXX\n  // When the Window object is implemented, these attribute will have\n  // to work with the same-named attributes on the Window.\n  events: [\n    \"afterprint\", \"beforeprint\", \"beforeunload\", \"blur\", \"error\",\n    \"focus\",\"hashchange\", \"load\", \"message\", \"offline\", \"online\",\n    \"pagehide\", \"pageshow\",\"popstate\",\"resize\",\"scroll\",\"storage\",\"unload\",\n  ],\n  attributes: {\n    // Obsolete\n    text: { type: String, treatNullAsEmptyString: true },\n    link: { type: String, treatNullAsEmptyString: true },\n    vLink: { type: String, treatNullAsEmptyString: true },\n    aLink: { type: String, treatNullAsEmptyString: true },\n    bgColor: { type: String, treatNullAsEmptyString: true },\n    background: String,\n  }\n});\n\ndefine({\n  tag: 'button',\n  name: 'HTMLButtonElement',\n  ctor: function HTMLButtonElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    name: String,\n    value: String,\n    disabled: Boolean,\n    autofocus: Boolean,\n    type: { type:[\"submit\", \"reset\", \"button\", \"menu\"], missing: 'submit' },\n    formTarget: String,\n    formAction: URL,\n    formNoValidate: Boolean,\n    formMethod: { type: [\"get\", \"post\", \"dialog\"], invalid: 'get', missing: '' },\n    formEnctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: '' },\n  }\n});\n\ndefine({\n  tag: 'dl',\n  name: 'HTMLDListElement',\n  ctor: function HTMLDListElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    compact: Boolean,\n  }\n});\n\ndefine({\n  tag: 'data',\n  name: 'HTMLDataElement',\n  ctor: function HTMLDataElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    value: String,\n  }\n});\n\ndefine({\n  tag: 'datalist',\n  name: 'HTMLDataListElement',\n  ctor: function HTMLDataListElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tag: 'details',\n  name: 'HTMLDetailsElement',\n  ctor: function HTMLDetailsElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    \"open\": Boolean\n  }\n});\n\ndefine({\n  tag: 'div',\n  name: 'HTMLDivElement',\n  ctor: function HTMLDivElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String\n  }\n});\n\ndefine({\n  tag: 'embed',\n  name: 'HTMLEmbedElement',\n  ctor: function HTMLEmbedElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    src: URL,\n    type: String,\n    width: String,\n    height: String,\n    // Obsolete\n    align: String,\n    name: String,\n  }\n});\n\ndefine({\n  tag: 'fieldset',\n  name: 'HTMLFieldSetElement',\n  ctor: function HTMLFieldSetElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    disabled: Boolean,\n    name: String\n  }\n});\n\ndefine({\n  tag: 'form',\n  name: 'HTMLFormElement',\n  ctor: function HTMLFormElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    action: String,\n    autocomplete: {type:['on', 'off'], missing: 'on'},\n    name: String,\n    acceptCharset: {name: \"accept-charset\"},\n    target: String,\n    noValidate: Boolean,\n    method: { type: [\"get\", \"post\", \"dialog\"], invalid: 'get', missing: 'get' },\n    // Both enctype and encoding reflect the enctype content attribute\n    enctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: \"application/x-www-form-urlencoded\" },\n    encoding: {name: 'enctype', type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: \"application/x-www-form-urlencoded\" },\n  }\n});\n\ndefine({\n  tag: 'hr',\n  name: 'HTMLHRElement',\n  ctor: function HTMLHRElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n    color: String,\n    noShade: Boolean,\n    size: String,\n    width: String,\n  },\n});\n\ndefine({\n  tag: 'head',\n  name: 'HTMLHeadElement',\n  ctor: function HTMLHeadElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tags: ['h1','h2','h3','h4','h5','h6'],\n  name: 'HTMLHeadingElement',\n  ctor: function HTMLHeadingElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n  },\n});\n\ndefine({\n  tag: 'html',\n  name: 'HTMLHtmlElement',\n  ctor: function HTMLHtmlElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    xmlns: URL,\n    // Obsolete\n    version: String\n  }\n});\n\ndefine({\n  tag: 'iframe',\n  name: 'HTMLIFrameElement',\n  ctor: function HTMLIFrameElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    src: URL,\n    srcdoc: String,\n    name: String,\n    width: String,\n    height: String,\n    // XXX: sandbox is a reflected settable token list\n    seamless: Boolean,\n    allow: Boolean,\n    allowFullscreen: Boolean,\n    allowUserMedia: Boolean,\n    allowPaymentRequest: Boolean,\n    referrerPolicy: REFERRER,\n    loading: { type:['eager','lazy'], treatNullAsEmptyString: true },\n    // Obsolete\n    align: String,\n    scrolling: String,\n    frameBorder: String,\n    longDesc: URL,\n    marginHeight: { type: String, treatNullAsEmptyString: true },\n    marginWidth: { type: String, treatNullAsEmptyString: true },\n  }\n});\n\ndefine({\n  tag: 'img',\n  name: 'HTMLImageElement',\n  ctor: function HTMLImageElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    alt: String,\n    src: URL,\n    srcset: String,\n    crossOrigin: CORS,\n    useMap: String,\n    isMap: Boolean,\n    sizes: String,\n    height: { type: \"unsigned long\", default: 0 },\n    width: { type: \"unsigned long\", default: 0 },\n    referrerPolicy: REFERRER,\n    loading: { type:['eager','lazy'], missing: '' },\n    // Obsolete:\n    name: String,\n    lowsrc: URL,\n    align: String,\n    hspace: { type: \"unsigned long\", default: 0 },\n    vspace: { type: \"unsigned long\", default: 0 },\n    longDesc: URL,\n    border: { type: String, treatNullAsEmptyString: true },\n  }\n});\n\ndefine({\n  tag: 'input',\n  name: 'HTMLInputElement',\n  ctor: function HTMLInputElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    form: formAssociatedProps.form,\n    _post_click_activation_steps: { value: function(e) {\n      if (this.type === 'checkbox') {\n        this.checked = !this.checked;\n      }\n      else if (this.type === 'radio') {\n        var group = this.form.getElementsByName(this.name);\n        for (var i=group.length-1; i >= 0; i--) {\n          var el = group[i];\n          el.checked = (el === this);\n        }\n      }\n    }},\n  },\n  attributes: {\n    name: String,\n    disabled: Boolean,\n    autofocus: Boolean,\n    accept: String,\n    alt: String,\n    max: String,\n    min: String,\n    pattern: String,\n    placeholder: String,\n    step: String,\n    dirName: String,\n    defaultValue: {name: 'value'},\n    multiple: Boolean,\n    required: Boolean,\n    readOnly: Boolean,\n    checked: Boolean,\n    value: String,\n    src: URL,\n    defaultChecked: {name: 'checked', type: Boolean},\n    size: {type: 'unsigned long', default: 20, min: 1, setmin: 1},\n    width: {type: 'unsigned long', min: 0, setmin: 0, default: 0},\n    height: {type: 'unsigned long', min: 0, setmin: 0, default: 0},\n    minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n    maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n    autocomplete: String, // It's complicated\n    type: { type:\n            [\"text\", \"hidden\", \"search\", \"tel\", \"url\", \"email\", \"password\",\n             \"datetime\", \"date\", \"month\", \"week\", \"time\", \"datetime-local\",\n             \"number\", \"range\", \"color\", \"checkbox\", \"radio\", \"file\", \"submit\",\n             \"image\", \"reset\", \"button\"],\n            missing: 'text' },\n    formTarget: String,\n    formNoValidate: Boolean,\n    formMethod: { type: [\"get\", \"post\"], invalid: 'get', missing: '' },\n    formEnctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: '' },\n    inputMode: { type: [ \"verbatim\", \"latin\", \"latin-name\", \"latin-prose\", \"full-width-latin\", \"kana\", \"kana-name\", \"katakana\", \"numeric\", \"tel\", \"email\", \"url\" ], missing: '' },\n    // Obsolete\n    align: String,\n    useMap: String,\n  }\n});\n\ndefine({\n  tag: 'keygen',\n  name: 'HTMLKeygenElement',\n  ctor: function HTMLKeygenElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    name: String,\n    disabled: Boolean,\n    autofocus: Boolean,\n    challenge: String,\n    keytype: { type:[\"rsa\"], missing: '' },\n  }\n});\n\ndefine({\n  tag: 'li',\n  name: 'HTMLLIElement',\n  ctor: function HTMLLIElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    value: {type: \"long\", default: 0},\n    // Obsolete\n    type: String,\n  }\n});\n\ndefine({\n  tag: 'label',\n  name: 'HTMLLabelElement',\n  ctor: function HTMLLabelElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    htmlFor: {name: 'for', type: String}\n  }\n});\n\ndefine({\n  tag: 'legend',\n  name: 'HTMLLegendElement',\n  ctor: function HTMLLegendElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String\n  },\n});\n\ndefine({\n  tag: 'link',\n  name: 'HTMLLinkElement',\n  ctor: function HTMLLinkElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // XXX Reflect DOMSettableTokenList sizes also DOMTokenList relList\n    href: URL,\n    rel: String,\n    media: String,\n    hreflang: String,\n    type: String,\n    crossOrigin: CORS,\n    nonce: String,\n    integrity: String,\n    referrerPolicy: REFERRER,\n    imageSizes: String,\n    imageSrcset: String,\n    // Obsolete\n    charset: String,\n    rev: String,\n    target: String,\n  }\n});\n\ndefine({\n  tag: 'map',\n  name: 'HTMLMapElement',\n  ctor: function HTMLMapElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    name: String\n  }\n});\n\ndefine({\n  tag: 'menu',\n  name: 'HTMLMenuElement',\n  ctor: function HTMLMenuElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // XXX: not quite right, default should be popup if parent element is\n    // popup.\n    type: { type: [ 'context', 'popup', 'toolbar' ], missing: 'toolbar' },\n    label: String,\n    // Obsolete\n    compact: Boolean,\n  }\n});\n\ndefine({\n  tag: 'meta',\n  name: 'HTMLMetaElement',\n  ctor: function HTMLMetaElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    name: String,\n    content: String,\n    httpEquiv: {name: 'http-equiv', type: String},\n    // Obsolete\n    scheme: String,\n  }\n});\n\ndefine({\n  tag: 'meter',\n  name: 'HTMLMeterElement',\n  ctor: function HTMLMeterElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps\n});\n\ndefine({\n  tags: ['ins', 'del'],\n  name: 'HTMLModElement',\n  ctor: function HTMLModElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    cite: URL,\n    dateTime: String\n  }\n});\n\ndefine({\n  tag: 'ol',\n  name: 'HTMLOListElement',\n  ctor: function HTMLOListElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    // Utility function (see the start attribute default value). Returns\n    // the number of <li> children of this element\n    _numitems: { get: function() {\n      var items = 0;\n      this.childNodes.forEach(function(n) {\n        if (n.nodeType === Node.ELEMENT_NODE && n.tagName === \"LI\")\n          items++;\n      });\n      return items;\n    }}\n  },\n  attributes: {\n    type: String,\n    reversed: Boolean,\n    start: {\n      type: \"long\",\n      default: function() {\n       // The default value of the start attribute is 1 unless the list is\n       // reversed. Then it is the # of li children\n       if (this.reversed)\n         return this._numitems;\n       else\n         return 1;\n      }\n    },\n    // Obsolete\n    compact: Boolean,\n  }\n});\n\ndefine({\n  tag: 'object',\n  name: 'HTMLObjectElement',\n  ctor: function HTMLObjectElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    data: URL,\n    type: String,\n    name: String,\n    useMap: String,\n    typeMustMatch: Boolean,\n    width: String,\n    height: String,\n    // Obsolete\n    align: String,\n    archive: String,\n    code: String,\n    declare: Boolean,\n    hspace: { type: \"unsigned long\", default: 0 },\n    standby: String,\n    vspace: { type: \"unsigned long\", default: 0 },\n    codeBase: URL,\n    codeType: String,\n    border: { type: String, treatNullAsEmptyString: true },\n  }\n});\n\ndefine({\n  tag: 'optgroup',\n  name: 'HTMLOptGroupElement',\n  ctor: function HTMLOptGroupElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    disabled: Boolean,\n    label: String\n  }\n});\n\ndefine({\n  tag: 'option',\n  name: 'HTMLOptionElement',\n  ctor: function HTMLOptionElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    form: { get: function() {\n      var p = this.parentNode;\n      while (p && p.nodeType === Node.ELEMENT_NODE) {\n        if (p.localName === 'select') return p.form;\n        p = p.parentNode;\n      }\n    }},\n    value: {\n      get: function() { return this._getattr('value') || this.text; },\n      set: function(v) { this._setattr('value', v); },\n    },\n    text: {\n      get: function() {\n        // Strip and collapse whitespace\n        return this.textContent.replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\n      },\n      set: function(v) { this.textContent = v; },\n    },\n    // missing: index\n  },\n  attributes: {\n    disabled: Boolean,\n    defaultSelected: {name: 'selected', type: Boolean},\n    label: String,\n  }\n});\n\ndefine({\n  tag: 'output',\n  name: 'HTMLOutputElement',\n  ctor: function HTMLOutputElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    // XXX Reflect for/htmlFor as a settable token list\n    name: String\n  }\n});\n\ndefine({\n  tag: 'p',\n  name: 'HTMLParagraphElement',\n  ctor: function HTMLParagraphElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String\n  }\n});\n\ndefine({\n  tag: 'param',\n  name: 'HTMLParamElement',\n  ctor: function HTMLParamElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    name: String,\n    value: String,\n    // Obsolete\n    type: String,\n    valueType: String,\n  }\n});\n\ndefine({\n  tags: ['pre',/*legacy elements:*/'listing','xmp'],\n  name: 'HTMLPreElement',\n  ctor: function HTMLPreElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    width: { type: \"long\", default: 0 },\n  }\n});\n\ndefine({\n  tag: 'progress',\n  name: 'HTMLProgressElement',\n  ctor: function HTMLProgressElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: formAssociatedProps,\n  attributes: {\n    max: {type: Number, float: true, default: 1.0, min: 0}\n  }\n});\n\ndefine({\n  tags: ['q', 'blockquote'],\n  name: 'HTMLQuoteElement',\n  ctor: function HTMLQuoteElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    cite: URL\n  }\n});\n\ndefine({\n  tag: 'script',\n  name: 'HTMLScriptElement',\n  ctor: function HTMLScriptElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    text: {\n      get: function() {\n        var s = \"\";\n        for(var i = 0, n = this.childNodes.length; i < n; i++) {\n          var child = this.childNodes[i];\n          if (child.nodeType === Node.TEXT_NODE)\n            s += child._data;\n        }\n        return s;\n      },\n      set: function(value) {\n        this.removeChildren();\n        if (value !== null && value !== \"\") {\n          this.appendChild(this.ownerDocument.createTextNode(value));\n        }\n      }\n    }\n  },\n  attributes: {\n    src: URL,\n    type: String,\n    charset: String,\n    referrerPolicy: REFERRER,\n    defer: Boolean,\n    async: Boolean,\n    nomodule: Boolean,\n    crossOrigin: CORS,\n    nonce: String,\n    integrity: String,\n  }\n});\n\ndefine({\n  tag: 'select',\n  name: 'HTMLSelectElement',\n  ctor: function HTMLSelectElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    form: formAssociatedProps.form,\n    options: { get: function() {\n      return this.getElementsByTagName('option');\n    }}\n  },\n  attributes: {\n    autocomplete: String, // It's complicated\n    name: String,\n    disabled: Boolean,\n    autofocus: Boolean,\n    multiple: Boolean,\n    required: Boolean,\n    size: {type: \"unsigned long\", default: 0}\n  }\n});\n\ndefine({\n  tag: 'span',\n  name: 'HTMLSpanElement',\n  ctor: function HTMLSpanElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tag: 'style',\n  name: 'HTMLStyleElement',\n  ctor: function HTMLStyleElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    media: String,\n    type: String,\n    scoped: Boolean\n  }\n});\n\ndefine({\n  tag: 'caption',\n  name: 'HTMLTableCaptionElement',\n  ctor: function HTMLTableCaptionElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n  }\n});\n\n\ndefine({\n  name: 'HTMLTableCellElement',\n  ctor: function HTMLTableCellElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    colSpan: {type: \"unsigned long\", default: 1},\n    rowSpan: {type: \"unsigned long\", default: 1},\n    //XXX Also reflect settable token list headers\n    scope: { type: ['row','col','rowgroup','colgroup'], missing: '' },\n    abbr: String,\n    // Obsolete\n    align: String,\n    axis: String,\n    height: String,\n    width: String,\n    ch: { name: 'char', type: String },\n    chOff: { name: 'charoff', type: String },\n    noWrap: Boolean,\n    vAlign: String,\n    bgColor: { type: String, treatNullAsEmptyString: true },\n  }\n});\n\ndefine({\n  tags: ['col', 'colgroup'],\n  name: 'HTMLTableColElement',\n  ctor: function HTMLTableColElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    span: {type: 'limited unsigned long with fallback', default: 1, min: 1},\n    // Obsolete\n    align: String,\n    ch: { name: 'char', type: String },\n    chOff: { name: 'charoff', type: String },\n    vAlign: String,\n    width: String,\n  }\n});\n\ndefine({\n  tag: 'table',\n  name: 'HTMLTableElement',\n  ctor: function HTMLTableElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    rows: { get: function() {\n      return this.getElementsByTagName('tr');\n    }}\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n    border: String,\n    frame: String,\n    rules: String,\n    summary: String,\n    width: String,\n    bgColor: { type: String, treatNullAsEmptyString: true },\n    cellPadding: { type: String, treatNullAsEmptyString: true },\n    cellSpacing: { type: String, treatNullAsEmptyString: true },\n  }\n});\n\ndefine({\n  tag: 'template',\n  name: 'HTMLTemplateElement',\n  ctor: function HTMLTemplateElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n    this._contentFragment = doc._templateDoc.createDocumentFragment();\n  },\n  props: {\n    content: { get: function() { return this._contentFragment; } },\n    serialize: { value: function() { return this.content.serialize(); } }\n  }\n});\n\ndefine({\n  tag: 'tr',\n  name: 'HTMLTableRowElement',\n  ctor: function HTMLTableRowElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    cells: { get: function() {\n      return this.querySelectorAll('td,th');\n    }}\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n    ch: { name: 'char', type: String },\n    chOff: { name: 'charoff', type: String },\n    vAlign: String,\n    bgColor: { type: String, treatNullAsEmptyString: true },\n  },\n});\n\ndefine({\n  tags: ['thead', 'tfoot', 'tbody'],\n  name: 'HTMLTableSectionElement',\n  ctor: function HTMLTableSectionElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    rows: { get: function() {\n      return this.getElementsByTagName('tr');\n    }}\n  },\n  attributes: {\n    // Obsolete\n    align: String,\n    ch: { name: 'char', type: String },\n    chOff: { name: 'charoff', type: String },\n    vAlign: String,\n  }\n});\n\ndefine({\n  tag: 'textarea',\n  name: 'HTMLTextAreaElement',\n  ctor: function HTMLTextAreaElement(doc, localName, prefix) {\n    HTMLFormElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    form: formAssociatedProps.form,\n    type: { get: function() { return 'textarea'; } },\n    defaultValue: {\n      get: function() { return this.textContent; },\n      set: function(v) { this.textContent = v; },\n    },\n    value: {\n      get: function() { return this.defaultValue; /* never dirty */ },\n      set: function(v) {\n        // This isn't completely correct: according to the spec, this\n        // should \"dirty\" the API value, and result in\n        // `this.value !== this.defaultValue`.  But for most of what\n        // folks want to do, this implementation should be fine:\n        this.defaultValue = v;\n      },\n    },\n    textLength: { get: function() { return this.value.length; } },\n  },\n  attributes: {\n    autocomplete: String, // It's complicated\n    name: String,\n    disabled: Boolean,\n    autofocus: Boolean,\n    placeholder: String,\n    wrap: String,\n    dirName: String,\n    required: Boolean,\n    readOnly: Boolean,\n    rows: {type: 'limited unsigned long with fallback', default: 2 },\n    cols: {type: 'limited unsigned long with fallback', default: 20 },\n    maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n    minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\n    inputMode: { type: [ \"verbatim\", \"latin\", \"latin-name\", \"latin-prose\", \"full-width-latin\", \"kana\", \"kana-name\", \"katakana\", \"numeric\", \"tel\", \"email\", \"url\" ], missing: '' },\n  }\n});\n\ndefine({\n  tag: 'time',\n  name: 'HTMLTimeElement',\n  ctor: function HTMLTimeElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    dateTime: String,\n    pubDate: Boolean\n  }\n});\n\ndefine({\n  tag: 'title',\n  name: 'HTMLTitleElement',\n  ctor: function HTMLTitleElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    text: { get: function() {\n      return this.textContent;\n    }}\n  }\n});\n\ndefine({\n  tag: 'ul',\n  name: 'HTMLUListElement',\n  ctor: function HTMLUListElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    type: String,\n    // Obsolete\n    compact: Boolean,\n  }\n});\n\ndefine({\n  name: 'HTMLMediaElement',\n  ctor: function HTMLMediaElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    src: URL,\n    crossOrigin: CORS,\n    preload: { type:[\"metadata\", \"none\", \"auto\", {value: \"\", alias: \"auto\"}], missing: 'auto' },\n    loop: Boolean,\n    autoplay: Boolean,\n    mediaGroup: String,\n    controls: Boolean,\n    defaultMuted: {name: \"muted\", type: Boolean}\n  }\n});\n\ndefine({\n  name: 'HTMLAudioElement',\n  tag: 'audio',\n  superclass: htmlElements.HTMLMediaElement,\n  ctor: function HTMLAudioElement(doc, localName, prefix) {\n    htmlElements.HTMLMediaElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  name: 'HTMLVideoElement',\n  tag: 'video',\n  superclass: htmlElements.HTMLMediaElement,\n  ctor: function HTMLVideoElement(doc, localName, prefix) {\n    htmlElements.HTMLMediaElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    poster: URL,\n    width: {type: \"unsigned long\", min: 0, default: 0 },\n    height: {type: \"unsigned long\", min: 0, default: 0 }\n  }\n});\n\ndefine({\n  tag: 'td',\n  name: 'HTMLTableDataCellElement',\n  superclass: htmlElements.HTMLTableCellElement,\n  ctor: function HTMLTableDataCellElement(doc, localName, prefix) {\n    htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tag: 'th',\n  name: 'HTMLTableHeaderCellElement',\n  superclass: htmlElements.HTMLTableCellElement,\n  ctor: function HTMLTableHeaderCellElement(doc, localName, prefix) {\n    htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix);\n  },\n});\n\ndefine({\n  tag: 'frameset',\n  name: 'HTMLFrameSetElement',\n  ctor: function HTMLFrameSetElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tag: 'frame',\n  name: 'HTMLFrameElement',\n  ctor: function HTMLFrameElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  }\n});\n\ndefine({\n  tag: 'canvas',\n  name: 'HTMLCanvasElement',\n  ctor: function HTMLCanvasElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    getContext: { value: utils.nyi },\n    probablySupportsContext: { value: utils.nyi },\n    setContext: { value: utils.nyi },\n    transferControlToProxy: { value: utils.nyi },\n    toDataURL: { value: utils.nyi },\n    toBlob: { value: utils.nyi }\n  },\n  attributes: {\n    width: { type: \"unsigned long\", default: 300},\n    height: { type: \"unsigned long\", default: 150}\n  }\n});\n\ndefine({\n  tag: 'dialog',\n  name: 'HTMLDialogElement',\n  ctor: function HTMLDialogElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    show: { value: utils.nyi },\n    showModal: { value: utils.nyi },\n    close: { value: utils.nyi }\n  },\n  attributes: {\n    open: Boolean,\n    returnValue: String\n  }\n});\n\ndefine({\n  tag: 'menuitem',\n  name: 'HTMLMenuItemElement',\n  ctor: function HTMLMenuItemElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  props: {\n    // The menuitem's label\n    _label: {\n      get: function() {\n        var val = this._getattr('label');\n        if (val !== null && val !== '') { return val; }\n        val = this.textContent;\n        // Strip and collapse whitespace\n        return val.replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\n      }\n    },\n    // The menuitem label IDL attribute\n    label: {\n      get: function() {\n        var val = this._getattr('label');\n        if (val !== null) { return val; }\n        return this._label;\n      },\n      set: function(v) {\n        this._setattr('label', v);\n      },\n    }\n  },\n  attributes: {\n    type: { type: [\"command\",\"checkbox\",\"radio\"], missing: 'command' },\n    icon: URL,\n    disabled: Boolean,\n    checked: Boolean,\n    radiogroup: String,\n    default: Boolean\n  }\n});\n\ndefine({\n  tag: 'source',\n  name: 'HTMLSourceElement',\n  ctor: function HTMLSourceElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    srcset: String,\n    sizes: String,\n    media: String,\n    src: URL,\n    type: String,\n    width: String,\n    height: String,\n  }\n});\n\ndefine({\n  tag: 'track',\n  name: 'HTMLTrackElement',\n  ctor: function HTMLTrackElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    src: URL,\n    srclang: String,\n    label: String,\n    default: Boolean,\n    kind: { type: [\"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\"], missing: 'subtitles', invalid: 'metadata' },\n  },\n  props: {\n    NONE: { get: function() { return 0; } },\n    LOADING: { get: function() { return 1; } },\n    LOADED: { get: function() { return 2; } },\n    ERROR: { get: function() { return 3; } },\n    readyState: { get: utils.nyi },\n    track: { get: utils.nyi }\n  }\n});\n\ndefine({\n  // obsolete\n  tag: 'font',\n  name: 'HTMLFontElement',\n  ctor: function HTMLFontElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    color: { type: String, treatNullAsEmptyString: true },\n    face: { type: String },\n    size: { type: String },\n  },\n});\n\ndefine({\n  // obsolete\n  tag: 'dir',\n  name: 'HTMLDirectoryElement',\n  ctor: function HTMLDirectoryElement(doc, localName, prefix) {\n    HTMLElement.call(this, doc, localName, prefix);\n  },\n  attributes: {\n    compact: Boolean,\n  },\n});\n\ndefine({\n  tags: [\n    \"abbr\", \"address\", \"article\", \"aside\", \"b\", \"bdi\", \"bdo\", \"cite\", \"content\", \"code\",\n    \"dd\", \"dfn\", \"dt\", \"em\", \"figcaption\", \"figure\", \"footer\", \"header\", \"hgroup\", \"i\", \"kbd\",\n    \"main\", \"mark\", \"nav\", \"noscript\", \"rb\", \"rp\", \"rt\", \"rtc\",\n    \"ruby\", \"s\", \"samp\", \"section\", \"small\", \"strong\", \"sub\", \"summary\", \"sup\", \"u\", \"var\", \"wbr\",\n    // Legacy elements\n    \"acronym\", \"basefont\", \"big\", \"center\", \"nobr\", \"noembed\", \"noframes\",\n    \"plaintext\", \"strike\", \"tt\"\n  ]\n});\n","\"use strict\";\nvar Element = require('./Element');\nvar defineElement = require('./defineElement');\nvar utils = require('./utils');\nvar CSSStyleDeclaration = require('./CSSStyleDeclaration');\n\nvar svgElements = exports.elements = {};\nvar svgNameToImpl = Object.create(null);\n\nexports.createElement = function(doc, localName, prefix) {\n  var impl = svgNameToImpl[localName] || SVGElement;\n  return new impl(doc, localName, prefix);\n};\n\nfunction define(spec) {\n  return defineElement(spec, SVGElement, svgElements, svgNameToImpl);\n}\n\nvar SVGElement = define({\n  superclass: Element,\n  name: 'SVGElement',\n  ctor: function SVGElement(doc, localName, prefix) {\n    Element.call(this, doc, localName, utils.NAMESPACE.SVG, prefix);\n  },\n  props: {\n    style: { get: function() {\n      if (!this._style)\n        this._style = new CSSStyleDeclaration(this);\n      return this._style;\n    }}\n  }\n});\n\ndefine({\n  name: 'SVGSVGElement',\n  ctor: function SVGSVGElement(doc, localName, prefix) {\n    SVGElement.call(this, doc, localName, prefix);\n  },\n  tag: 'svg',\n  props: {\n    createSVGRect: { value: function () {\n      return exports.createElement(this.ownerDocument, 'rect', null);\n    } }\n  }\n});\n\ndefine({\n  tags: [\n    'a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform',\n    'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix',\n    'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight',\n    'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode',\n    'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter',\n    'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignObject', 'g',\n    'glyph', 'glyphRef', 'hkern', 'image', 'line', 'linearGradient', 'marker', 'mask', 'metadata', 'missing-glyph',\n    'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop',  'style',\n    'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'\n  ]\n});\n","\"use strict\";\nmodule.exports = {\n  VALUE: 1, // The value of a Text, Comment or PI node changed\n  ATTR: 2, // A new attribute was added or an attribute value and/or prefix changed\n  REMOVE_ATTR: 3, // An attribute was removed\n  REMOVE: 4, // A node was removed\n  MOVE: 5, // A node was moved\n  INSERT: 6 // A node (or a subtree of nodes) was inserted\n};","\"use strict\";\nmodule.exports = Document;\n\nvar Node = require('./Node');\nvar NodeList = require('./NodeList');\nvar ContainerNode = require('./ContainerNode');\nvar Element = require('./Element');\nvar Text = require('./Text');\nvar Comment = require('./Comment');\nvar Event = require('./Event');\nvar DocumentFragment = require('./DocumentFragment');\nvar ProcessingInstruction = require('./ProcessingInstruction');\nvar DOMImplementation = require('./DOMImplementation');\nvar TreeWalker = require('./TreeWalker');\nvar NodeIterator = require('./NodeIterator');\nvar NodeFilter = require('./NodeFilter');\nvar URL = require('./URL');\nvar select = require('./select');\nvar events = require('./events');\nvar xml = require('./xmlnames');\nvar html = require('./htmlelts');\nvar svg = require('./svg');\nvar utils = require('./utils');\nvar MUTATE = require('./MutationConstants');\nvar NAMESPACE = utils.NAMESPACE;\nvar isApiWritable = require(\"./config\").isApiWritable;\n\nfunction Document(isHTML, address) {\n  ContainerNode.call(this);\n  this.nodeType = Node.DOCUMENT_NODE;\n  this.isHTML = isHTML;\n  this._address = address || 'about:blank';\n  this.readyState = 'loading';\n  this.implementation = new DOMImplementation(this);\n\n  // DOMCore says that documents are always associated with themselves\n  this.ownerDocument = null; // ... but W3C tests expect null\n  this._contentType = isHTML ? 'text/html' : 'application/xml';\n\n  // These will be initialized by our custom versions of\n  // appendChild and insertBefore that override the inherited\n  // Node methods.\n  // XXX: override those methods!\n  this.doctype = null;\n  this.documentElement = null;\n\n  // \"Associated inert template document\"\n  this._templateDocCache = null;\n  // List of active NodeIterators, see NodeIterator#_preremove()\n  this._nodeIterators = null;\n\n  // Documents are always rooted, by definition\n  this._nid = 1;\n  this._nextnid = 2; // For numbering children of the document\n  this._nodes = [null, this];  // nid to node map\n\n  // This maintains the mapping from element ids to element nodes.\n  // We may need to update this mapping every time a node is rooted\n  // or uprooted, and any time an attribute is added, removed or changed\n  // on a rooted element.\n  this.byId = Object.create(null);\n\n  // This property holds a monotonically increasing value akin to\n  // a timestamp used to record the last modification time of nodes\n  // and their subtrees. See the lastModTime attribute and modify()\n  // method of the Node class. And see FilteredElementList for an example\n  // of the use of lastModTime\n  this.modclock = 0;\n}\n\n// Map from lowercase event category names (used as arguments to\n// createEvent()) to the property name in the impl object of the\n// event constructor.\nvar supportedEvents = {\n  event: 'Event',\n  customevent: 'CustomEvent',\n  uievent: 'UIEvent',\n  mouseevent: 'MouseEvent'\n};\n\n// Certain arguments to document.createEvent() must be treated specially\nvar replacementEvent = {\n  events: 'event',\n  htmlevents: 'event',\n  mouseevents: 'mouseevent',\n  mutationevents: 'mutationevent',\n  uievents: 'uievent'\n};\n\nvar mirrorAttr = function(f, name, defaultValue) {\n  return {\n    get: function() {\n      var o = f.call(this);\n      if (o) { return o[name]; }\n      return defaultValue;\n    },\n    set: function(value) {\n      var o = f.call(this);\n      if (o) { o[name] = value; }\n    },\n  };\n};\n\n/** @spec https://dom.spec.whatwg.org/#validate-and-extract */\nfunction validateAndExtract(namespace, qualifiedName) {\n  var prefix, localName, pos;\n  if (namespace==='') { namespace = null; }\n  // See https://github.com/whatwg/dom/issues/671\n  // and https://github.com/whatwg/dom/issues/319\n  if (!xml.isValidQName(qualifiedName)) {\n    utils.InvalidCharacterError();\n  }\n  prefix = null;\n  localName = qualifiedName;\n\n  pos = qualifiedName.indexOf(':');\n  if (pos >= 0) {\n    prefix = qualifiedName.substring(0, pos);\n    localName = qualifiedName.substring(pos+1);\n  }\n  if (prefix !== null && namespace === null) {\n    utils.NamespaceError();\n  }\n  if (prefix === 'xml' && namespace !== NAMESPACE.XML) {\n    utils.NamespaceError();\n  }\n  if ((prefix === 'xmlns' || qualifiedName === 'xmlns') &&\n      namespace !== NAMESPACE.XMLNS) {\n    utils.NamespaceError();\n  }\n  if (namespace === NAMESPACE.XMLNS && !(prefix==='xmlns' || qualifiedName==='xmlns')) {\n    utils.NamespaceError();\n  }\n  return { namespace: namespace, prefix: prefix, localName: localName };\n}\n\nDocument.prototype = Object.create(ContainerNode.prototype, {\n  // This method allows dom.js to communicate with a renderer\n  // that displays the document in some way\n  // XXX: I should probably move this to the window object\n  _setMutationHandler: { value: function(handler) {\n    this.mutationHandler = handler;\n  }},\n\n  // This method allows dom.js to receive event notifications\n  // from the renderer.\n  // XXX: I should probably move this to the window object\n  _dispatchRendererEvent: { value: function(targetNid, type, details) {\n    var target = this._nodes[targetNid];\n    if (!target) return;\n    target._dispatchEvent(new Event(type, details), true);\n  }},\n\n  nodeName: { value: '#document'},\n  nodeValue: {\n    get: function() {\n      return null;\n    },\n    set: function() {}\n  },\n\n  // XXX: DOMCore may remove documentURI, so it is NYI for now\n  documentURI: { get: function() { return this._address; }, set: utils.nyi },\n  compatMode: { get: function() {\n    // The _quirks property is set by the HTML parser\n    return this._quirks ? 'BackCompat' : 'CSS1Compat';\n  }},\n\n  createTextNode: { value: function(data) {\n    return new Text(this, String(data));\n  }},\n  createComment: { value: function(data) {\n    return new Comment(this, data);\n  }},\n  createDocumentFragment: { value: function() {\n    return new DocumentFragment(this);\n  }},\n  createProcessingInstruction: { value: function(target, data) {\n    if (!xml.isValidName(target) || data.indexOf('?>') !== -1)\n      utils.InvalidCharacterError();\n    return new ProcessingInstruction(this, target, data);\n  }},\n\n  createAttribute: { value: function(localName) {\n    localName = String(localName);\n    if (!xml.isValidName(localName)) utils.InvalidCharacterError();\n    if (this.isHTML) {\n      localName = utils.toASCIILowerCase(localName);\n    }\n    return new Element._Attr(null, localName, null, null, '');\n  }},\n  createAttributeNS: { value: function(namespace, qualifiedName) {\n    // Convert parameter types according to WebIDL\n    namespace =\n      (namespace === null || namespace === undefined || namespace === '') ? null :\n      String(namespace);\n    qualifiedName = String(qualifiedName);\n    var ve = validateAndExtract(namespace, qualifiedName);\n    return new Element._Attr(null, ve.localName, ve.prefix, ve.namespace, '');\n  }},\n\n  createElement: { value: function(localName) {\n    localName = String(localName);\n    if (!xml.isValidName(localName)) utils.InvalidCharacterError();\n    // Per spec, namespace should be HTML namespace if \"context object is\n    // an HTML document or context object's content type is\n    // \"application/xhtml+xml\", and null otherwise.\n    if (this.isHTML) {\n      if (/[A-Z]/.test(localName))\n        localName = utils.toASCIILowerCase(localName);\n      return html.createElement(this, localName, null);\n    } else if (this.contentType === 'application/xhtml+xml') {\n      return html.createElement(this, localName, null);\n    } else {\n      return new Element(this, localName, null, null);\n    }\n  }, writable: isApiWritable },\n\n  createElementNS: { value: function(namespace, qualifiedName) {\n    // Convert parameter types according to WebIDL\n    namespace =\n      (namespace === null || namespace === undefined || namespace === '') ? null :\n      String(namespace);\n    qualifiedName = String(qualifiedName);\n    var ve = validateAndExtract(namespace, qualifiedName);\n    return this._createElementNS(ve.localName, ve.namespace, ve.prefix);\n  }, writable: isApiWritable },\n\n  // This is used directly by HTML parser, which allows it to create\n  // elements with localNames containing ':' and non-default namespaces\n  _createElementNS: { value: function(localName, namespace, prefix) {\n    if (namespace === NAMESPACE.HTML) {\n      return html.createElement(this, localName, prefix);\n    }\n    else if (namespace === NAMESPACE.SVG) {\n      return svg.createElement(this, localName, prefix);\n    }\n\n    return new Element(this, localName, namespace, prefix);\n  }},\n\n  createEvent: { value: function createEvent(interfaceName) {\n    interfaceName = interfaceName.toLowerCase();\n    var name = replacementEvent[interfaceName] || interfaceName;\n    var constructor = events[supportedEvents[name]];\n\n    if (constructor) {\n      var e = new constructor();\n      e._initialized = false;\n      return e;\n    }\n    else {\n      utils.NotSupportedError();\n    }\n  }},\n\n  // See: http://www.w3.org/TR/dom/#dom-document-createtreewalker\n  createTreeWalker: {value: function (root, whatToShow, filter) {\n    if (!root) { throw new TypeError(\"root argument is required\"); }\n    if (!(root instanceof Node)) { throw new TypeError(\"root not a node\"); }\n    whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow);\n    filter = filter === undefined ? null : filter;\n\n    return new TreeWalker(root, whatToShow, filter);\n  }},\n\n  // See: http://www.w3.org/TR/dom/#dom-document-createnodeiterator\n  createNodeIterator: {value: function (root, whatToShow, filter) {\n    if (!root) { throw new TypeError(\"root argument is required\"); }\n    if (!(root instanceof Node)) { throw new TypeError(\"root not a node\"); }\n    whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow);\n    filter = filter === undefined ? null : filter;\n\n    return new NodeIterator(root, whatToShow, filter);\n  }},\n\n  _attachNodeIterator: { value: function(ni) {\n    // XXX ideally this should be a weak reference from Document to NodeIterator\n    if (!this._nodeIterators) { this._nodeIterators = []; }\n    this._nodeIterators.push(ni);\n  }},\n\n  _detachNodeIterator: { value: function(ni) {\n    // ni should always be in list of node iterators\n    var idx = this._nodeIterators.indexOf(ni);\n    this._nodeIterators.splice(idx, 1);\n  }},\n\n  _preremoveNodeIterators: { value: function(toBeRemoved) {\n    if (this._nodeIterators) {\n      this._nodeIterators.forEach(function(ni) { ni._preremove(toBeRemoved); });\n    }\n  }},\n\n  // Maintain the documentElement and\n  // doctype properties of the document.  Each of the following\n  // methods chains to the Node implementation of the method\n  // to do the actual inserting, removal or replacement.\n\n  _updateDocTypeElement: { value: function _updateDocTypeElement() {\n    this.doctype = this.documentElement = null;\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n      if (kid.nodeType === Node.DOCUMENT_TYPE_NODE)\n        this.doctype = kid;\n      else if (kid.nodeType === Node.ELEMENT_NODE)\n        this.documentElement = kid;\n    }\n  }},\n\n  insertBefore: { value: function insertBefore(child, refChild) {\n    Node.prototype.insertBefore.call(this, child, refChild);\n    this._updateDocTypeElement();\n    return child;\n  }},\n\n  replaceChild: { value: function replaceChild(node, child) {\n    Node.prototype.replaceChild.call(this, node, child);\n    this._updateDocTypeElement();\n    return child;\n  }},\n\n  removeChild: { value: function removeChild(child) {\n    Node.prototype.removeChild.call(this, child);\n    this._updateDocTypeElement();\n    return child;\n  }},\n\n  getElementById: { value: function(id) {\n    var n = this.byId[id];\n    if (!n) return null;\n    if (n instanceof MultiId) { // there was more than one element with this id\n      return n.getFirst();\n    }\n    return n;\n  }},\n\n  _hasMultipleElementsWithId: { value: function(id) {\n    // Used internally by querySelectorAll optimization\n    return (this.byId[id] instanceof MultiId);\n  }},\n\n  // Just copy this method from the Element prototype\n  getElementsByName: { value: Element.prototype.getElementsByName },\n  getElementsByTagName: { value: Element.prototype.getElementsByTagName },\n  getElementsByTagNameNS: { value: Element.prototype.getElementsByTagNameNS },\n  getElementsByClassName: { value: Element.prototype.getElementsByClassName },\n\n  adoptNode: { value: function adoptNode(node) {\n    if (node.nodeType === Node.DOCUMENT_NODE) utils.NotSupportedError();\n    if (node.nodeType === Node.ATTRIBUTE_NODE) { return node; }\n\n    if (node.parentNode) node.parentNode.removeChild(node);\n\n    if (node.ownerDocument !== this)\n      recursivelySetOwner(node, this);\n\n    return node;\n  }},\n\n  importNode: { value: function importNode(node, deep) {\n    return this.adoptNode(node.cloneNode(deep));\n  }, writable: isApiWritable },\n\n  // The following attributes and methods are from the HTML spec\n  origin: { get: function origin() { return null; } },\n  characterSet: { get: function characterSet() { return \"UTF-8\"; } },\n  contentType: { get: function contentType() { return this._contentType; } },\n  URL: { get: function URL() { return this._address; } },\n  domain: { get: utils.nyi, set: utils.nyi },\n  referrer: { get: utils.nyi },\n  cookie: { get: utils.nyi, set: utils.nyi },\n  lastModified: { get: utils.nyi },\n  location: {\n\tget: function() {\n\t  return this.defaultView ? this.defaultView.location : null; // gh #75\n\t},\n\tset: utils.nyi\n  },\n  _titleElement: {\n    get: function() {\n      // The title element of a document is the first title element in the\n      // document in tree order, if there is one, or null otherwise.\n      return this.getElementsByTagName('title').item(0) || null;\n    }\n  },\n  title: {\n    get: function() {\n      var elt = this._titleElement;\n      // The child text content of the title element, or '' if null.\n      var value = elt ? elt.textContent : '';\n      // Strip and collapse whitespace in value\n      return value.replace(/[ \\t\\n\\r\\f]+/g, ' ').replace(/(^ )|( $)/g, '');\n    },\n    set: function(value) {\n      var elt = this._titleElement;\n      var head = this.head;\n      if (!elt && !head) { return; /* according to spec */ }\n      if (!elt) {\n        elt = this.createElement('title');\n        head.appendChild(elt);\n      }\n      elt.textContent = value;\n    }\n  },\n  dir: mirrorAttr(function() {\n    var htmlElement = this.documentElement;\n    if (htmlElement && htmlElement.tagName === 'HTML') { return htmlElement; }\n  }, 'dir', ''),\n  fgColor: mirrorAttr(function() { return this.body; }, 'text', ''),\n  linkColor: mirrorAttr(function() { return this.body; }, 'link', ''),\n  vlinkColor: mirrorAttr(function() { return this.body; }, 'vLink', ''),\n  alinkColor: mirrorAttr(function() { return this.body; }, 'aLink', ''),\n  bgColor: mirrorAttr(function() { return this.body; }, 'bgColor', ''),\n\n  // Historical aliases of Document#characterSet\n  charset: { get: function() { return this.characterSet; } },\n  inputEncoding: { get: function() { return this.characterSet; } },\n\n  scrollingElement: {\n    get: function() {\n      return this._quirks ? this.body : this.documentElement;\n    }\n  },\n\n  // Return the first <body> child of the document element.\n  // XXX For now, setting this attribute is not implemented.\n  body: {\n    get: function() {\n      return namedHTMLChild(this.documentElement, 'body');\n    },\n    set: utils.nyi\n  },\n  // Return the first <head> child of the document element.\n  head: { get: function() {\n    return namedHTMLChild(this.documentElement, 'head');\n  }},\n  images: { get: utils.nyi },\n  embeds: { get: utils.nyi },\n  plugins: { get: utils.nyi },\n  links: { get: utils.nyi },\n  forms: { get: utils.nyi },\n  scripts: { get: utils.nyi },\n  applets: { get: function() { return []; } },\n  activeElement: { get: function() { return null; } },\n  innerHTML: {\n    get: function() { return this.serialize(); },\n    set: utils.nyi\n  },\n  outerHTML: {\n    get: function() { return this.serialize(); },\n    set: utils.nyi\n  },\n\n  write: { value: function(args) {\n    if (!this.isHTML) utils.InvalidStateError();\n\n    // XXX: still have to implement the ignore part\n    if (!this._parser /* && this._ignore_destructive_writes > 0 */ )\n      return;\n\n    if (!this._parser) {\n      // XXX call document.open, etc.\n    }\n\n    var s = arguments.join('');\n\n    // If the Document object's reload override flag is set, then\n    // append the string consisting of the concatenation of all the\n    // arguments to the method to the Document's reload override\n    // buffer.\n    // XXX: don't know what this is about.  Still have to do it\n\n    // If there is no pending parsing-blocking script, have the\n    // tokenizer process the characters that were inserted, one at a\n    // time, processing resulting tokens as they are emitted, and\n    // stopping when the tokenizer reaches the insertion point or when\n    // the processing of the tokenizer is aborted by the tree\n    // construction stage (this can happen if a script end tag token is\n    // emitted by the tokenizer).\n\n    // XXX: still have to do the above. Sounds as if we don't\n    // always call parse() here.  If we're blocked, then we just\n    // insert the text into the stream but don't parse it reentrantly...\n\n    // Invoke the parser reentrantly\n    this._parser.parse(s);\n  }},\n\n  writeln: { value: function writeln(args) {\n    this.write(Array.prototype.join.call(arguments, '') + '\\n');\n  }},\n\n  open: { value: function() {\n    this.documentElement = null;\n  }},\n\n  close: { value: function() {\n    this.readyState = 'interactive';\n    this._dispatchEvent(new Event('readystatechange'), true);\n    this._dispatchEvent(new Event('DOMContentLoaded'), true);\n    this.readyState = 'complete';\n    this._dispatchEvent(new Event('readystatechange'), true);\n    if (this.defaultView) {\n      this.defaultView._dispatchEvent(new Event('load'), true);\n    }\n  }},\n\n  // Utility methods\n  clone: { value: function clone() {\n    var d = new Document(this.isHTML, this._address);\n    d._quirks = this._quirks;\n    d._contentType = this._contentType;\n    return d;\n  }},\n\n  // We need to adopt the nodes if we do a deep clone\n  cloneNode: { value: function cloneNode(deep) {\n    var clone = Node.prototype.cloneNode.call(this, false);\n    if (deep) {\n      for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\n        clone._appendChild(clone.importNode(kid, true));\n      }\n    }\n    clone._updateDocTypeElement();\n    return clone;\n  }},\n\n  isEqual: { value: function isEqual(n) {\n    // Any two documents are shallowly equal.\n    // Node.isEqualNode will also test the children\n    return true;\n  }},\n\n  // Implementation-specific function.  Called when a text, comment,\n  // or pi value changes.\n  mutateValue: { value: function(node) {\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.VALUE,\n        target: node,\n        data: node.data\n      });\n    }\n  }},\n\n  // Invoked when an attribute's value changes. Attr holds the new\n  // value.  oldval is the old value.  Attribute mutations can also\n  // involve changes to the prefix (and therefore the qualified name)\n  mutateAttr: { value: function(attr, oldval) {\n    // Manage id->element mapping for getElementsById()\n    // XXX: this special case id handling should not go here,\n    // but in the attribute declaration for the id attribute\n    /*\n    if (attr.localName === 'id' && attr.namespaceURI === null) {\n      if (oldval) delId(oldval, attr.ownerElement);\n      addId(attr.value, attr.ownerElement);\n    }\n    */\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.ATTR,\n        target: attr.ownerElement,\n        attr: attr\n      });\n    }\n  }},\n\n  // Used by removeAttribute and removeAttributeNS for attributes.\n  mutateRemoveAttr: { value: function(attr) {\n/*\n* This is now handled in Attributes.js\n    // Manage id to element mapping\n    if (attr.localName === 'id' && attr.namespaceURI === null) {\n      this.delId(attr.value, attr.ownerElement);\n    }\n*/\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.REMOVE_ATTR,\n        target: attr.ownerElement,\n        attr: attr\n      });\n    }\n  }},\n\n  // Called by Node.removeChild, etc. to remove a rooted element from\n  // the tree. Only needs to generate a single mutation event when a\n  // node is removed, but must recursively mark all descendants as not\n  // rooted.\n  mutateRemove: { value: function(node) {\n    // Send a single mutation event\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.REMOVE,\n        target: node.parentNode,\n        node: node\n      });\n    }\n\n    // Mark this and all descendants as not rooted\n    recursivelyUproot(node);\n  }},\n\n  // Called when a new element becomes rooted.  It must recursively\n  // generate mutation events for each of the children, and mark them all\n  // as rooted.\n  mutateInsert: { value: function(node) {\n    // Mark node and its descendants as rooted\n    recursivelyRoot(node);\n\n    // Send a single mutation event\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.INSERT,\n        target: node.parentNode,\n        node: node\n      });\n    }\n  }},\n\n  // Called when a rooted element is moved within the document\n  mutateMove: { value: function(node) {\n    if (this.mutationHandler) {\n      this.mutationHandler({\n        type: MUTATE.MOVE,\n        target: node\n      });\n    }\n  }},\n\n\n  // Add a mapping from  id to n for n.ownerDocument\n  addId: { value: function addId(id, n) {\n    var val = this.byId[id];\n    if (!val) {\n      this.byId[id] = n;\n    }\n    else {\n      // TODO: Add a way to opt-out console warnings\n      //console.warn('Duplicate element id ' + id);\n      if (!(val instanceof MultiId)) {\n        val = new MultiId(val);\n        this.byId[id] = val;\n      }\n      val.add(n);\n    }\n  }},\n\n  // Delete the mapping from id to n for n.ownerDocument\n  delId: { value: function delId(id, n) {\n    var val = this.byId[id];\n    utils.assert(val);\n\n    if (val instanceof MultiId) {\n      val.del(n);\n      if (val.length === 1) { // convert back to a single node\n        this.byId[id] = val.downgrade();\n      }\n    }\n    else {\n      this.byId[id] = undefined;\n    }\n  }},\n\n  _resolve: { value: function(href) {\n    //XXX: Cache the URL\n    return new URL(this._documentBaseURL).resolve(href);\n  }},\n\n  _documentBaseURL: { get: function() {\n    // XXX: This is not implemented correctly yet\n    var url = this._address;\n    if (url === 'about:blank') url = '/';\n\n    var base = this.querySelector('base[href]');\n    if (base) {\n      return new URL(url).resolve(base.getAttribute('href'));\n    }\n    return url;\n\n    // The document base URL of a Document object is the\n    // absolute URL obtained by running these substeps:\n\n    //     Let fallback base url be the document's address.\n\n    //     If fallback base url is about:blank, and the\n    //     Document's browsing context has a creator browsing\n    //     context, then let fallback base url be the document\n    //     base URL of the creator Document instead.\n\n    //     If the Document is an iframe srcdoc document, then\n    //     let fallback base url be the document base URL of\n    //     the Document's browsing context's browsing context\n    //     container's Document instead.\n\n    //     If there is no base element that has an href\n    //     attribute, then the document base URL is fallback\n    //     base url; abort these steps. Otherwise, let url be\n    //     the value of the href attribute of the first such\n    //     element.\n\n    //     Resolve url relative to fallback base url (thus,\n    //     the base href attribute isn't affected by xml:base\n    //     attributes).\n\n    //     The document base URL is the result of the previous\n    //     step if it was successful; otherwise it is fallback\n    //     base url.\n  }},\n\n  _templateDoc: { get: function() {\n    if (!this._templateDocCache) {\n      // \"associated inert template document\"\n      var newDoc = new Document(this.isHTML, this._address);\n      this._templateDocCache = newDoc._templateDocCache = newDoc;\n    }\n    return this._templateDocCache;\n  }},\n\n  querySelector: { value: function(selector) {\n    return select(selector, this)[0];\n  }},\n\n  querySelectorAll: { value: function(selector) {\n    var nodes = select(selector, this);\n    return nodes.item ? nodes : new NodeList(nodes);\n  }}\n\n});\n\n\nvar eventHandlerTypes = [\n  'abort', 'canplay', 'canplaythrough', 'change', 'click', 'contextmenu',\n  'cuechange', 'dblclick', 'drag', 'dragend', 'dragenter', 'dragleave',\n  'dragover', 'dragstart', 'drop', 'durationchange', 'emptied', 'ended',\n  'input', 'invalid', 'keydown', 'keypress', 'keyup', 'loadeddata',\n  'loadedmetadata', 'loadstart', 'mousedown', 'mousemove', 'mouseout',\n  'mouseover', 'mouseup', 'mousewheel', 'pause', 'play', 'playing',\n  'progress', 'ratechange', 'readystatechange', 'reset', 'seeked',\n  'seeking', 'select', 'show', 'stalled', 'submit', 'suspend',\n  'timeupdate', 'volumechange', 'waiting',\n\n  'blur', 'error', 'focus', 'load', 'scroll'\n];\n\n// Add event handler idl attribute getters and setters to Document\neventHandlerTypes.forEach(function(type) {\n  // Define the event handler registration IDL attribute for this type\n  Object.defineProperty(Document.prototype, 'on' + type, {\n    get: function() {\n      return this._getEventHandler(type);\n    },\n    set: function(v) {\n      this._setEventHandler(type, v);\n    }\n  });\n});\n\nfunction namedHTMLChild(parent, name) {\n  if (parent && parent.isHTML) {\n    for (var kid = parent.firstChild; kid !== null; kid = kid.nextSibling) {\n      if (kid.nodeType === Node.ELEMENT_NODE &&\n        kid.localName === name &&\n        kid.namespaceURI === NAMESPACE.HTML) {\n        return kid;\n      }\n    }\n  }\n  return null;\n}\n\nfunction root(n) {\n  n._nid = n.ownerDocument._nextnid++;\n  n.ownerDocument._nodes[n._nid] = n;\n  // Manage id to element mapping\n  if (n.nodeType === Node.ELEMENT_NODE) {\n    var id = n.getAttribute('id');\n    if (id) n.ownerDocument.addId(id, n);\n\n    // Script elements need to know when they're inserted\n    // into the document\n    if (n._roothook) n._roothook();\n  }\n}\n\nfunction uproot(n) {\n  // Manage id to element mapping\n  if (n.nodeType === Node.ELEMENT_NODE) {\n    var id = n.getAttribute('id');\n    if (id) n.ownerDocument.delId(id, n);\n  }\n  n.ownerDocument._nodes[n._nid] = undefined;\n  n._nid = undefined;\n}\n\nfunction recursivelyRoot(node) {\n  root(node);\n  // XXX:\n  // accessing childNodes on a leaf node creates a new array the\n  // first time, so be careful to write this loop so that it\n  // doesn't do that. node is polymorphic, so maybe this is hard to\n  // optimize?  Try switching on nodeType?\n/*\n  if (node.hasChildNodes()) {\n    var kids = node.childNodes;\n    for(var i = 0, n = kids.length;  i < n; i++)\n      recursivelyRoot(kids[i]);\n  }\n*/\n  if (node.nodeType === Node.ELEMENT_NODE) {\n    for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\n      recursivelyRoot(kid);\n  }\n}\n\nfunction recursivelyUproot(node) {\n  uproot(node);\n  for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\n      recursivelyUproot(kid);\n}\n\nfunction recursivelySetOwner(node, owner) {\n  node.ownerDocument = owner;\n  node._lastModTime = undefined; // mod times are document-based\n  if (Object.prototype.hasOwnProperty.call(node, '_tagName')) {\n    node._tagName = undefined; // Element subclasses might need to change case\n  }\n  for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\n    recursivelySetOwner(kid, owner);\n}\n\n// A class for storing multiple nodes with the same ID\nfunction MultiId(node) {\n  this.nodes = Object.create(null);\n  this.nodes[node._nid] = node;\n  this.length = 1;\n  this.firstNode = undefined;\n}\n\n// Add a node to the list, with O(1) time\nMultiId.prototype.add = function(node) {\n  if (!this.nodes[node._nid]) {\n    this.nodes[node._nid] = node;\n    this.length++;\n    this.firstNode = undefined;\n  }\n};\n\n// Remove a node from the list, with O(1) time\nMultiId.prototype.del = function(node) {\n  if (this.nodes[node._nid]) {\n    delete this.nodes[node._nid];\n    this.length--;\n    this.firstNode = undefined;\n  }\n};\n\n// Get the first node from the list, in the document order\n// Takes O(N) time in the size of the list, with a cache that is invalidated\n// when the list is modified.\nMultiId.prototype.getFirst = function() {\n  /* jshint bitwise: false */\n  if (!this.firstNode) {\n    var nid;\n    for (nid in this.nodes) {\n      if (this.firstNode === undefined ||\n        this.firstNode.compareDocumentPosition(this.nodes[nid]) & Node.DOCUMENT_POSITION_PRECEDING) {\n        this.firstNode = this.nodes[nid];\n      }\n    }\n  }\n  return this.firstNode;\n};\n\n// If there is only one node left, return it. Otherwise return \"this\".\nMultiId.prototype.downgrade = function() {\n  if (this.length === 1) {\n    var nid;\n    for (nid in this.nodes) {\n      return this.nodes[nid];\n    }\n  }\n  return this;\n};\n","\"use strict\";\nmodule.exports = DocumentType;\n\nvar Node = require('./Node');\nvar Leaf = require('./Leaf');\nvar ChildNode = require('./ChildNode');\n\nfunction DocumentType(ownerDocument, name, publicId, systemId) {\n  Leaf.call(this);\n  this.nodeType = Node.DOCUMENT_TYPE_NODE;\n  this.ownerDocument = ownerDocument || null;\n  this._name = name;\n  this.publicId = publicId || \"\";\n  this.systemId = systemId || \"\";\n}\n\nDocumentType.prototype = Object.create(Leaf.prototype, {\n  name: {\n    get: function() { return this._name; },\n    set: function() { /* no-op per spec */ }\n  },\n  nodeName: { get: function() { return this.name; }},\n  nodeValue: {\n    get: function() { return null; },\n    set: function() {}\n  },\n\n  // Utility methods\n  clone: { value: function clone() {\n    return new DocumentType(this.ownerDocument, this.name, this.publicId, this.systemId);\n  }},\n\n  isEqual: { value: function isEqual(n) {\n    return this.name === n.name &&\n      this.publicId === n.publicId &&\n      this.systemId === n.systemId;\n  }}\n});\n\nObject.defineProperties(DocumentType.prototype, ChildNode);\n","\"use strict\";\nmodule.exports = HTMLParser;\n\nvar Document = require('./Document');\nvar DocumentType = require('./DocumentType');\nvar Node = require('./Node');\nvar NAMESPACE = require('./utils').NAMESPACE;\nvar html = require('./htmlelts');\nvar impl = html.elements;\n\nvar pushAll = Function.prototype.apply.bind(Array.prototype.push);\n\n/*\n * This file contains an implementation of the HTML parsing algorithm.\n * The algorithm and the implementation are complex because HTML\n * explicitly defines how the parser should behave for all possible\n * valid and invalid inputs.\n *\n * Usage:\n *\n * The file defines a single HTMLParser() function, which dom.js exposes\n * publicly as document.implementation.mozHTMLParser(). This is a\n * factory function, not a constructor.\n *\n * When you call document.implementation.mozHTMLParser(), it returns\n * an object that has parse() and document() methods. To parse HTML text,\n * pass the text (in one or more chunks) to the parse() method.  When\n * you've passed all the text (on the last chunk, or afterward) pass\n * true as the second argument to parse() to tell the parser that there\n * is no more coming. Call document() to get the document object that\n * the parser is parsing into.  You can call this at any time, before\n * or after calling parse().\n *\n * The first argument to mozHTMLParser is the absolute URL of the document.\n *\n * The second argument is optional and is for internal use only.  Pass an\n * element as the fragmentContext to do innerHTML parsing for the\n * element.  To do innerHTML parsing on a document, pass null. Otherwise,\n * omit the 2nd argument. See HTMLElement.innerHTML for an example.  Note\n * that if you pass a context element, the end() method will return an\n * unwrapped document instead of a wrapped one.\n *\n * Implementation details:\n *\n * This is a long file of almost 7000 lines. It is structured as one\n * big function nested within another big function.  The outer\n * function defines a bunch of constant data, utility functions\n * that use that data, and a couple of classes used by the parser.\n * The outer function also defines and returns the\n * inner function. This inner function is the HTMLParser factory\n * function that implements the parser and holds all the parser state\n * as local variables.  The HTMLParser function is quite big because\n * it defines many nested functions that use those local variables.\n *\n * There are three tightly coupled parser stages: a scanner, a\n * tokenizer and a tree builder. In a (possibly misguided) attempt at\n * efficiency, the stages are not implemented as separate classes:\n * everything shares state and is (mostly) implemented in imperative\n * (rather than OO) style.\n *\n * The stages of the parser work like this: When the client code calls\n * the parser's parse() method, the specified string is passed to\n * scanChars(). The scanner loops through that string and passes characters\n * (sometimes one at a time, sometimes in chunks) to the tokenizer stage.\n * The tokenizer groups the characters into tokens: tags, endtags, runs\n * of text, comments, doctype declarations, and the end-of-file (EOF)\n * token.  These tokens are then passed to the tree building stage via\n * the insertToken() function.  The tree building stage builds up the\n * document tree.\n *\n * The tokenizer stage is a finite state machine.  Each state is\n * implemented as a function with a name that ends in \"_state\".  The\n * initial state is data_state(). The current tokenizer state is stored\n * in the variable 'tokenizer'.  Most state functions expect a single\n * integer argument which represents a single UTF-16 codepoint.  Some\n * states want more characters and set a lookahead property on\n * themselves.  The scanChars() function in the scanner checks for this\n * lookahead property.  If it doesn't exist, then scanChars() just passes\n * the next input character to the current tokenizer state function.\n * Otherwise, scanChars() looks ahead (a given # of characters, or for a\n * matching string, or for a matching regexp) and passes a string of\n * characters to the current tokenizer state function.\n *\n * As a shortcut, certain states of the tokenizer use regular expressions\n * to look ahead in the scanner's input buffer for runs of text, simple\n * tags and attributes.  For well-formed input, these shortcuts skip a\n * lot of state transitions and speed things up a bit.\n *\n * When a tokenizer state function has consumed a complete token, it\n * emits that token, by calling insertToken(), or by calling a utility\n * function that itself calls insertToken().  These tokens are passed to\n * the tree building stage, which is also a state machine.  Like the\n * tokenizer, the tree building states are implemented as functions, and\n * these functions have names that end with _mode (because the HTML spec\n * refers to them as insertion modes). The current insertion mode is held\n * by the 'parser' variable.  Each insertion mode function takes up to 4\n * arguments.  The first is a token type, represented by the constants\n * TAG, ENDTAG, TEXT, COMMENT, DOCTYPE and EOF.  The second argument is\n * the value of the token: the text or comment data, or tagname or\n * doctype.  For tags, the 3rd argument is an array of attributes.  For\n * DOCTYPES it is the optional public id.  For tags, the 4th argument is\n * true if the tag is self-closing. For doctypes, the 4th argument is the\n * optional system id.\n *\n * Search for \"***\" to find the major sub-divisions in the code.\n */\n\n\n/***\n * Data prolog.  Lots of constants declared here, including some\n * very large objects.  They're used throughout the code that follows\n */\n// Token types for the tree builder.\nvar EOF = -1;\nvar TEXT = 1;\nvar TAG = 2;\nvar ENDTAG = 3;\nvar COMMENT = 4;\nvar DOCTYPE = 5;\n\n// A re-usable empty array\nvar NOATTRS = [];\n\n// These DTD public ids put the browser in quirks mode\nvar quirkyPublicIds = /^HTML$|^-\\/\\/W3O\\/\\/DTD W3 HTML Strict 3\\.0\\/\\/EN\\/\\/$|^-\\/W3C\\/DTD HTML 4\\.0 Transitional\\/EN$|^\\+\\/\\/Silmaril\\/\\/dtd html Pro v0r11 19970101\\/\\/|^-\\/\\/AdvaSoft Ltd\\/\\/DTD HTML 3\\.0 asWedit \\+ extensions\\/\\/|^-\\/\\/AS\\/\\/DTD HTML 3\\.0 asWedit \\+ extensions\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.1E\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.2 Final\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML\\/\\/|^-\\/\\/Metrius\\/\\/DTD Metrius Presentational\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 HTML Strict\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 HTML\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 Tables\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 HTML Strict\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 HTML\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 Tables\\/\\/|^-\\/\\/Netscape Comm\\. Corp\\.\\/\\/DTD HTML\\/\\/|^-\\/\\/Netscape Comm\\. Corp\\.\\/\\/DTD Strict HTML\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML 2\\.0\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML Extended 1\\.0\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML Extended Relaxed 1\\.0\\/\\/|^-\\/\\/SoftQuad Software\\/\\/DTD HoTMetaL PRO 6\\.0::19990601::extensions to HTML 4\\.0\\/\\/|^-\\/\\/SoftQuad\\/\\/DTD HoTMetaL PRO 4\\.0::19971010::extensions to HTML 4\\.0\\/\\/|^-\\/\\/Spyglass\\/\\/DTD HTML 2\\.0 Extended\\/\\/|^-\\/\\/SQ\\/\\/DTD HTML 2\\.0 HoTMetaL \\+ extensions\\/\\/|^-\\/\\/Sun Microsystems Corp\\.\\/\\/DTD HotJava HTML\\/\\/|^-\\/\\/Sun Microsystems Corp\\.\\/\\/DTD HotJava Strict HTML\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3 1995-03-24\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2 Draft\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2 Final\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2S Draft\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.0 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.0 Transitional\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML Experimental 19960712\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML Experimental 970421\\/\\/|^-\\/\\/W3C\\/\\/DTD W3 HTML\\/\\/|^-\\/\\/W3O\\/\\/DTD W3 HTML 3\\.0\\/\\/|^-\\/\\/WebTechs\\/\\/DTD Mozilla HTML 2\\.0\\/\\/|^-\\/\\/WebTechs\\/\\/DTD Mozilla HTML\\/\\//i;\n\nvar quirkySystemId = \"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd\";\n\nvar conditionallyQuirkyPublicIds = /^-\\/\\/W3C\\/\\/DTD HTML 4\\.01 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.01 Transitional\\/\\//i;\n\n// These DTD public ids put the browser in limited quirks mode\nvar limitedQuirkyPublicIds = /^-\\/\\/W3C\\/\\/DTD XHTML 1\\.0 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD XHTML 1\\.0 Transitional\\/\\//i;\n\n\n// Element sets below. See the isA() function for a way to test\n// whether an element is a member of a set\nvar specialSet = Object.create(null);\nspecialSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"address\":true, \"applet\":true, \"area\":true, \"article\":true,\n  \"aside\":true, \"base\":true, \"basefont\":true, \"bgsound\":true,\n  \"blockquote\":true, \"body\":true, \"br\":true, \"button\":true,\n  \"caption\":true, \"center\":true, \"col\":true, \"colgroup\":true,\n  \"dd\":true, \"details\":true, \"dir\":true,\n  \"div\":true, \"dl\":true, \"dt\":true, \"embed\":true,\n  \"fieldset\":true, \"figcaption\":true, \"figure\":true, \"footer\":true,\n  \"form\":true, \"frame\":true, \"frameset\":true, \"h1\":true,\n  \"h2\":true, \"h3\":true, \"h4\":true, \"h5\":true,\n  \"h6\":true, \"head\":true, \"header\":true, \"hgroup\":true,\n  \"hr\":true, \"html\":true, \"iframe\":true, \"img\":true,\n  \"input\":true, \"li\":true, \"link\":true,\n  \"listing\":true, \"main\":true, \"marquee\":true, \"menu\":true, \"meta\":true,\n  \"nav\":true, \"noembed\":true, \"noframes\":true, \"noscript\":true,\n  \"object\":true, \"ol\":true, \"p\":true, \"param\":true,\n  \"plaintext\":true, \"pre\":true, \"script\":true, \"section\":true,\n  \"select\":true, \"source\":true, \"style\":true, \"summary\":true, \"table\":true,\n  \"tbody\":true, \"td\":true, \"template\":true, \"textarea\":true, \"tfoot\":true,\n  \"th\":true, \"thead\":true, \"title\":true, \"tr\":true, \"track\":true,\n  // Note that \"xmp\" was removed from the \"special\" set in the latest\n  // spec, apparently by accident; see\n  // https://github.com/whatwg/html/pull/1919\n  \"ul\":true, \"wbr\":true, \"xmp\":true\n};\nspecialSet[NAMESPACE.SVG] = {\n  __proto__: null,\n  \"foreignObject\": true, \"desc\": true, \"title\": true\n};\nspecialSet[NAMESPACE.MATHML] = {\n  __proto__: null,\n  \"mi\":true, \"mo\":true, \"mn\":true, \"ms\":true,\n  \"mtext\":true, \"annotation-xml\":true\n};\n\n// The set of address, div, and p HTML tags\nvar addressdivpSet = Object.create(null);\naddressdivpSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"address\":true, \"div\":true, \"p\":true\n};\n\nvar dddtSet = Object.create(null);\ndddtSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"dd\":true, \"dt\":true\n};\n\nvar tablesectionrowSet = Object.create(null);\ntablesectionrowSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"table\":true, \"thead\":true, \"tbody\":true, \"tfoot\":true, \"tr\":true\n};\n\nvar impliedEndTagsSet = Object.create(null);\nimpliedEndTagsSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"dd\": true, \"dt\": true, \"li\": true, \"menuitem\": true, \"optgroup\": true,\n  \"option\": true, \"p\": true, \"rb\": true, \"rp\": true, \"rt\": true, \"rtc\": true\n};\n\nvar thoroughImpliedEndTagsSet = Object.create(null);\nthoroughImpliedEndTagsSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"caption\": true, \"colgroup\": true, \"dd\": true, \"dt\": true, \"li\": true,\n  \"optgroup\": true, \"option\": true, \"p\": true, \"rb\": true, \"rp\": true,\n  \"rt\": true, \"rtc\": true, \"tbody\": true, \"td\": true, \"tfoot\": true,\n  \"th\": true, \"thead\": true, \"tr\": true\n};\n\nvar tableContextSet = Object.create(null);\ntableContextSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"table\": true, \"template\": true, \"html\": true\n};\n\nvar tableBodyContextSet = Object.create(null);\ntableBodyContextSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"tbody\": true, \"tfoot\": true, \"thead\": true, \"template\": true, \"html\": true\n};\n\nvar tableRowContextSet = Object.create(null);\ntableRowContextSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"tr\": true, \"template\": true, \"html\": true\n};\n\n// See http://www.w3.org/TR/html5/forms.html#form-associated-element\nvar formassociatedSet = Object.create(null);\nformassociatedSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"button\": true, \"fieldset\": true, \"input\": true, \"keygen\": true,\n  \"object\": true, \"output\": true, \"select\": true, \"textarea\": true,\n  \"img\": true\n};\n\nvar inScopeSet = Object.create(null);\ninScopeSet[NAMESPACE.HTML]= {\n  __proto__: null,\n  \"applet\":true, \"caption\":true, \"html\":true, \"table\":true,\n  \"td\":true, \"th\":true, \"marquee\":true, \"object\":true,\n  \"template\":true\n};\ninScopeSet[NAMESPACE.MATHML] = {\n  __proto__: null,\n  \"mi\":true, \"mo\":true, \"mn\":true, \"ms\":true,\n  \"mtext\":true, \"annotation-xml\":true\n};\ninScopeSet[NAMESPACE.SVG] = {\n  __proto__: null,\n  \"foreignObject\":true, \"desc\":true, \"title\":true\n};\n\nvar inListItemScopeSet = Object.create(inScopeSet);\ninListItemScopeSet[NAMESPACE.HTML] =\n  Object.create(inScopeSet[NAMESPACE.HTML]);\ninListItemScopeSet[NAMESPACE.HTML].ol = true;\ninListItemScopeSet[NAMESPACE.HTML].ul = true;\n\nvar inButtonScopeSet = Object.create(inScopeSet);\ninButtonScopeSet[NAMESPACE.HTML] =\n  Object.create(inScopeSet[NAMESPACE.HTML]);\ninButtonScopeSet[NAMESPACE.HTML].button = true;\n\nvar inTableScopeSet = Object.create(null);\ninTableScopeSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"html\":true, \"table\":true, \"template\":true\n};\n\n// The set of elements for select scope is the everything *except* these\nvar invertedSelectScopeSet = Object.create(null);\ninvertedSelectScopeSet[NAMESPACE.HTML] = {\n  __proto__: null,\n  \"optgroup\":true, \"option\":true\n};\n\nvar mathmlTextIntegrationPointSet = Object.create(null);\nmathmlTextIntegrationPointSet[NAMESPACE.MATHML] = {\n  __proto__: null,\n  mi: true,\n  mo: true,\n  mn: true,\n  ms: true,\n  mtext: true\n};\n\nvar htmlIntegrationPointSet = Object.create(null);\nhtmlIntegrationPointSet[NAMESPACE.SVG] = {\n  __proto__: null,\n  foreignObject: true,\n  desc: true,\n  title: true\n};\n\nvar foreignAttributes = {\n  __proto__: null,\n  \"xlink:actuate\": NAMESPACE.XLINK, \"xlink:arcrole\": NAMESPACE.XLINK,\n  \"xlink:href\":   NAMESPACE.XLINK,  \"xlink:role\":    NAMESPACE.XLINK,\n  \"xlink:show\":   NAMESPACE.XLINK,  \"xlink:title\":   NAMESPACE.XLINK,\n  \"xlink:type\":   NAMESPACE.XLINK,  \"xml:base\":      NAMESPACE.XML,\n  \"xml:lang\":     NAMESPACE.XML,    \"xml:space\":     NAMESPACE.XML,\n  \"xmlns\":        NAMESPACE.XMLNS,  \"xmlns:xlink\":   NAMESPACE.XMLNS\n};\n\n\n// Lowercase to mixed case mapping for SVG attributes and tagnames\nvar svgAttrAdjustments = {\n  __proto__: null,\n  attributename: \"attributeName\", attributetype: \"attributeType\",\n  basefrequency: \"baseFrequency\", baseprofile: \"baseProfile\",\n  calcmode: \"calcMode\", clippathunits: \"clipPathUnits\",\n  diffuseconstant: \"diffuseConstant\",\n  edgemode: \"edgeMode\",\n  filterunits: \"filterUnits\",\n  glyphref: \"glyphRef\", gradienttransform: \"gradientTransform\",\n  gradientunits: \"gradientUnits\", kernelmatrix: \"kernelMatrix\",\n  kernelunitlength: \"kernelUnitLength\", keypoints: \"keyPoints\",\n  keysplines: \"keySplines\", keytimes: \"keyTimes\",\n  lengthadjust: \"lengthAdjust\", limitingconeangle: \"limitingConeAngle\",\n  markerheight: \"markerHeight\", markerunits: \"markerUnits\",\n  markerwidth: \"markerWidth\", maskcontentunits: \"maskContentUnits\",\n  maskunits: \"maskUnits\", numoctaves: \"numOctaves\",\n  pathlength: \"pathLength\", patterncontentunits: \"patternContentUnits\",\n  patterntransform: \"patternTransform\", patternunits: \"patternUnits\",\n  pointsatx: \"pointsAtX\", pointsaty: \"pointsAtY\",\n  pointsatz: \"pointsAtZ\", preservealpha: \"preserveAlpha\",\n  preserveaspectratio: \"preserveAspectRatio\",\n  primitiveunits: \"primitiveUnits\", refx: \"refX\",\n  refy: \"refY\", repeatcount: \"repeatCount\",\n  repeatdur: \"repeatDur\", requiredextensions: \"requiredExtensions\",\n  requiredfeatures: \"requiredFeatures\",\n  specularconstant: \"specularConstant\",\n  specularexponent: \"specularExponent\", spreadmethod: \"spreadMethod\",\n  startoffset: \"startOffset\", stddeviation: \"stdDeviation\",\n  stitchtiles: \"stitchTiles\", surfacescale: \"surfaceScale\",\n  systemlanguage: \"systemLanguage\", tablevalues: \"tableValues\",\n  targetx: \"targetX\", targety: \"targetY\",\n  textlength: \"textLength\", viewbox: \"viewBox\",\n  viewtarget: \"viewTarget\", xchannelselector: \"xChannelSelector\",\n  ychannelselector: \"yChannelSelector\", zoomandpan: \"zoomAndPan\"\n};\n\nvar svgTagNameAdjustments = {\n  __proto__: null,\n  altglyph: \"altGlyph\", altglyphdef: \"altGlyphDef\",\n  altglyphitem: \"altGlyphItem\", animatecolor: \"animateColor\",\n  animatemotion: \"animateMotion\", animatetransform: \"animateTransform\",\n  clippath: \"clipPath\", feblend: \"feBlend\",\n  fecolormatrix: \"feColorMatrix\",\n  fecomponenttransfer: \"feComponentTransfer\", fecomposite: \"feComposite\",\n  feconvolvematrix: \"feConvolveMatrix\",\n  fediffuselighting: \"feDiffuseLighting\",\n  fedisplacementmap: \"feDisplacementMap\",\n  fedistantlight: \"feDistantLight\", feflood: \"feFlood\",\n  fefunca: \"feFuncA\", fefuncb: \"feFuncB\",\n  fefuncg: \"feFuncG\", fefuncr: \"feFuncR\",\n  fegaussianblur: \"feGaussianBlur\", feimage: \"feImage\",\n  femerge: \"feMerge\", femergenode: \"feMergeNode\",\n  femorphology: \"feMorphology\", feoffset: \"feOffset\",\n  fepointlight: \"fePointLight\", fespecularlighting: \"feSpecularLighting\",\n  fespotlight: \"feSpotLight\", fetile: \"feTile\",\n  feturbulence: \"feTurbulence\", foreignobject: \"foreignObject\",\n  glyphref: \"glyphRef\", lineargradient: \"linearGradient\",\n  radialgradient: \"radialGradient\", textpath: \"textPath\"\n};\n\n\n// Data for parsing numeric and named character references\n// These next 3 objects are direct translations of tables\n// in the HTML spec into JavaScript object format\nvar numericCharRefReplacements = {\n  __proto__: null,\n  0x00:0xFFFD, 0x80:0x20AC, 0x82:0x201A, 0x83:0x0192, 0x84:0x201E,\n  0x85:0x2026, 0x86:0x2020, 0x87:0x2021, 0x88:0x02C6, 0x89:0x2030,\n  0x8A:0x0160, 0x8B:0x2039, 0x8C:0x0152, 0x8E:0x017D, 0x91:0x2018,\n  0x92:0x2019, 0x93:0x201C, 0x94:0x201D, 0x95:0x2022, 0x96:0x2013,\n  0x97:0x2014, 0x98:0x02DC, 0x99:0x2122, 0x9A:0x0161, 0x9B:0x203A,\n  0x9C:0x0153, 0x9E:0x017E, 0x9F:0x0178\n};\n\n/*\n * This table is generated with test/tools/update-entities.js\n */\nvar namedCharRefs = {\n  __proto__: null,\n  \"AElig\":0xc6, \"AElig;\":0xc6,\n  \"AMP\":0x26, \"AMP;\":0x26,\n  \"Aacute\":0xc1, \"Aacute;\":0xc1,\n  \"Abreve;\":0x102, \"Acirc\":0xc2,\n  \"Acirc;\":0xc2, \"Acy;\":0x410,\n  \"Afr;\":[0xd835,0xdd04], \"Agrave\":0xc0,\n  \"Agrave;\":0xc0, \"Alpha;\":0x391,\n  \"Amacr;\":0x100, \"And;\":0x2a53,\n  \"Aogon;\":0x104, \"Aopf;\":[0xd835,0xdd38],\n  \"ApplyFunction;\":0x2061, \"Aring\":0xc5,\n  \"Aring;\":0xc5, \"Ascr;\":[0xd835,0xdc9c],\n  \"Assign;\":0x2254, \"Atilde\":0xc3,\n  \"Atilde;\":0xc3, \"Auml\":0xc4,\n  \"Auml;\":0xc4, \"Backslash;\":0x2216,\n  \"Barv;\":0x2ae7, \"Barwed;\":0x2306,\n  \"Bcy;\":0x411, \"Because;\":0x2235,\n  \"Bernoullis;\":0x212c, \"Beta;\":0x392,\n  \"Bfr;\":[0xd835,0xdd05], \"Bopf;\":[0xd835,0xdd39],\n  \"Breve;\":0x2d8, \"Bscr;\":0x212c,\n  \"Bumpeq;\":0x224e, \"CHcy;\":0x427,\n  \"COPY\":0xa9, \"COPY;\":0xa9,\n  \"Cacute;\":0x106, \"Cap;\":0x22d2,\n  \"CapitalDifferentialD;\":0x2145, \"Cayleys;\":0x212d,\n  \"Ccaron;\":0x10c, \"Ccedil\":0xc7,\n  \"Ccedil;\":0xc7, \"Ccirc;\":0x108,\n  \"Cconint;\":0x2230, \"Cdot;\":0x10a,\n  \"Cedilla;\":0xb8, \"CenterDot;\":0xb7,\n  \"Cfr;\":0x212d, \"Chi;\":0x3a7,\n  \"CircleDot;\":0x2299, \"CircleMinus;\":0x2296,\n  \"CirclePlus;\":0x2295, \"CircleTimes;\":0x2297,\n  \"ClockwiseContourIntegral;\":0x2232, \"CloseCurlyDoubleQuote;\":0x201d,\n  \"CloseCurlyQuote;\":0x2019, \"Colon;\":0x2237,\n  \"Colone;\":0x2a74, \"Congruent;\":0x2261,\n  \"Conint;\":0x222f, \"ContourIntegral;\":0x222e,\n  \"Copf;\":0x2102, \"Coproduct;\":0x2210,\n  \"CounterClockwiseContourIntegral;\":0x2233, \"Cross;\":0x2a2f,\n  \"Cscr;\":[0xd835,0xdc9e], \"Cup;\":0x22d3,\n  \"CupCap;\":0x224d, \"DD;\":0x2145,\n  \"DDotrahd;\":0x2911, \"DJcy;\":0x402,\n  \"DScy;\":0x405, \"DZcy;\":0x40f,\n  \"Dagger;\":0x2021, \"Darr;\":0x21a1,\n  \"Dashv;\":0x2ae4, \"Dcaron;\":0x10e,\n  \"Dcy;\":0x414, \"Del;\":0x2207,\n  \"Delta;\":0x394, \"Dfr;\":[0xd835,0xdd07],\n  \"DiacriticalAcute;\":0xb4, \"DiacriticalDot;\":0x2d9,\n  \"DiacriticalDoubleAcute;\":0x2dd, \"DiacriticalGrave;\":0x60,\n  \"DiacriticalTilde;\":0x2dc, \"Diamond;\":0x22c4,\n  \"DifferentialD;\":0x2146, \"Dopf;\":[0xd835,0xdd3b],\n  \"Dot;\":0xa8, \"DotDot;\":0x20dc,\n  \"DotEqual;\":0x2250, \"DoubleContourIntegral;\":0x222f,\n  \"DoubleDot;\":0xa8, \"DoubleDownArrow;\":0x21d3,\n  \"DoubleLeftArrow;\":0x21d0, \"DoubleLeftRightArrow;\":0x21d4,\n  \"DoubleLeftTee;\":0x2ae4, \"DoubleLongLeftArrow;\":0x27f8,\n  \"DoubleLongLeftRightArrow;\":0x27fa, \"DoubleLongRightArrow;\":0x27f9,\n  \"DoubleRightArrow;\":0x21d2, \"DoubleRightTee;\":0x22a8,\n  \"DoubleUpArrow;\":0x21d1, \"DoubleUpDownArrow;\":0x21d5,\n  \"DoubleVerticalBar;\":0x2225, \"DownArrow;\":0x2193,\n  \"DownArrowBar;\":0x2913, \"DownArrowUpArrow;\":0x21f5,\n  \"DownBreve;\":0x311, \"DownLeftRightVector;\":0x2950,\n  \"DownLeftTeeVector;\":0x295e, \"DownLeftVector;\":0x21bd,\n  \"DownLeftVectorBar;\":0x2956, \"DownRightTeeVector;\":0x295f,\n  \"DownRightVector;\":0x21c1, \"DownRightVectorBar;\":0x2957,\n  \"DownTee;\":0x22a4, \"DownTeeArrow;\":0x21a7,\n  \"Downarrow;\":0x21d3, \"Dscr;\":[0xd835,0xdc9f],\n  \"Dstrok;\":0x110, \"ENG;\":0x14a,\n  \"ETH\":0xd0, \"ETH;\":0xd0,\n  \"Eacute\":0xc9, \"Eacute;\":0xc9,\n  \"Ecaron;\":0x11a, \"Ecirc\":0xca,\n  \"Ecirc;\":0xca, \"Ecy;\":0x42d,\n  \"Edot;\":0x116, \"Efr;\":[0xd835,0xdd08],\n  \"Egrave\":0xc8, \"Egrave;\":0xc8,\n  \"Element;\":0x2208, \"Emacr;\":0x112,\n  \"EmptySmallSquare;\":0x25fb, \"EmptyVerySmallSquare;\":0x25ab,\n  \"Eogon;\":0x118, \"Eopf;\":[0xd835,0xdd3c],\n  \"Epsilon;\":0x395, \"Equal;\":0x2a75,\n  \"EqualTilde;\":0x2242, \"Equilibrium;\":0x21cc,\n  \"Escr;\":0x2130, \"Esim;\":0x2a73,\n  \"Eta;\":0x397, \"Euml\":0xcb,\n  \"Euml;\":0xcb, \"Exists;\":0x2203,\n  \"ExponentialE;\":0x2147, \"Fcy;\":0x424,\n  \"Ffr;\":[0xd835,0xdd09], \"FilledSmallSquare;\":0x25fc,\n  \"FilledVerySmallSquare;\":0x25aa, \"Fopf;\":[0xd835,0xdd3d],\n  \"ForAll;\":0x2200, \"Fouriertrf;\":0x2131,\n  \"Fscr;\":0x2131, \"GJcy;\":0x403,\n  \"GT\":0x3e, \"GT;\":0x3e,\n  \"Gamma;\":0x393, \"Gammad;\":0x3dc,\n  \"Gbreve;\":0x11e, \"Gcedil;\":0x122,\n  \"Gcirc;\":0x11c, \"Gcy;\":0x413,\n  \"Gdot;\":0x120, \"Gfr;\":[0xd835,0xdd0a],\n  \"Gg;\":0x22d9, \"Gopf;\":[0xd835,0xdd3e],\n  \"GreaterEqual;\":0x2265, \"GreaterEqualLess;\":0x22db,\n  \"GreaterFullEqual;\":0x2267, \"GreaterGreater;\":0x2aa2,\n  \"GreaterLess;\":0x2277, \"GreaterSlantEqual;\":0x2a7e,\n  \"GreaterTilde;\":0x2273, \"Gscr;\":[0xd835,0xdca2],\n  \"Gt;\":0x226b, \"HARDcy;\":0x42a,\n  \"Hacek;\":0x2c7, \"Hat;\":0x5e,\n  \"Hcirc;\":0x124, \"Hfr;\":0x210c,\n  \"HilbertSpace;\":0x210b, \"Hopf;\":0x210d,\n  \"HorizontalLine;\":0x2500, \"Hscr;\":0x210b,\n  \"Hstrok;\":0x126, \"HumpDownHump;\":0x224e,\n  \"HumpEqual;\":0x224f, \"IEcy;\":0x415,\n  \"IJlig;\":0x132, \"IOcy;\":0x401,\n  \"Iacute\":0xcd, \"Iacute;\":0xcd,\n  \"Icirc\":0xce, \"Icirc;\":0xce,\n  \"Icy;\":0x418, \"Idot;\":0x130,\n  \"Ifr;\":0x2111, \"Igrave\":0xcc,\n  \"Igrave;\":0xcc, \"Im;\":0x2111,\n  \"Imacr;\":0x12a, \"ImaginaryI;\":0x2148,\n  \"Implies;\":0x21d2, \"Int;\":0x222c,\n  \"Integral;\":0x222b, \"Intersection;\":0x22c2,\n  \"InvisibleComma;\":0x2063, \"InvisibleTimes;\":0x2062,\n  \"Iogon;\":0x12e, \"Iopf;\":[0xd835,0xdd40],\n  \"Iota;\":0x399, \"Iscr;\":0x2110,\n  \"Itilde;\":0x128, \"Iukcy;\":0x406,\n  \"Iuml\":0xcf, \"Iuml;\":0xcf,\n  \"Jcirc;\":0x134, \"Jcy;\":0x419,\n  \"Jfr;\":[0xd835,0xdd0d], \"Jopf;\":[0xd835,0xdd41],\n  \"Jscr;\":[0xd835,0xdca5], \"Jsercy;\":0x408,\n  \"Jukcy;\":0x404, \"KHcy;\":0x425,\n  \"KJcy;\":0x40c, \"Kappa;\":0x39a,\n  \"Kcedil;\":0x136, \"Kcy;\":0x41a,\n  \"Kfr;\":[0xd835,0xdd0e], \"Kopf;\":[0xd835,0xdd42],\n  \"Kscr;\":[0xd835,0xdca6], \"LJcy;\":0x409,\n  \"LT\":0x3c, \"LT;\":0x3c,\n  \"Lacute;\":0x139, \"Lambda;\":0x39b,\n  \"Lang;\":0x27ea, \"Laplacetrf;\":0x2112,\n  \"Larr;\":0x219e, \"Lcaron;\":0x13d,\n  \"Lcedil;\":0x13b, \"Lcy;\":0x41b,\n  \"LeftAngleBracket;\":0x27e8, \"LeftArrow;\":0x2190,\n  \"LeftArrowBar;\":0x21e4, \"LeftArrowRightArrow;\":0x21c6,\n  \"LeftCeiling;\":0x2308, \"LeftDoubleBracket;\":0x27e6,\n  \"LeftDownTeeVector;\":0x2961, \"LeftDownVector;\":0x21c3,\n  \"LeftDownVectorBar;\":0x2959, \"LeftFloor;\":0x230a,\n  \"LeftRightArrow;\":0x2194, \"LeftRightVector;\":0x294e,\n  \"LeftTee;\":0x22a3, \"LeftTeeArrow;\":0x21a4,\n  \"LeftTeeVector;\":0x295a, \"LeftTriangle;\":0x22b2,\n  \"LeftTriangleBar;\":0x29cf, \"LeftTriangleEqual;\":0x22b4,\n  \"LeftUpDownVector;\":0x2951, \"LeftUpTeeVector;\":0x2960,\n  \"LeftUpVector;\":0x21bf, \"LeftUpVectorBar;\":0x2958,\n  \"LeftVector;\":0x21bc, \"LeftVectorBar;\":0x2952,\n  \"Leftarrow;\":0x21d0, \"Leftrightarrow;\":0x21d4,\n  \"LessEqualGreater;\":0x22da, \"LessFullEqual;\":0x2266,\n  \"LessGreater;\":0x2276, \"LessLess;\":0x2aa1,\n  \"LessSlantEqual;\":0x2a7d, \"LessTilde;\":0x2272,\n  \"Lfr;\":[0xd835,0xdd0f], \"Ll;\":0x22d8,\n  \"Lleftarrow;\":0x21da, \"Lmidot;\":0x13f,\n  \"LongLeftArrow;\":0x27f5, \"LongLeftRightArrow;\":0x27f7,\n  \"LongRightArrow;\":0x27f6, \"Longleftarrow;\":0x27f8,\n  \"Longleftrightarrow;\":0x27fa, \"Longrightarrow;\":0x27f9,\n  \"Lopf;\":[0xd835,0xdd43], \"LowerLeftArrow;\":0x2199,\n  \"LowerRightArrow;\":0x2198, \"Lscr;\":0x2112,\n  \"Lsh;\":0x21b0, \"Lstrok;\":0x141,\n  \"Lt;\":0x226a, \"Map;\":0x2905,\n  \"Mcy;\":0x41c, \"MediumSpace;\":0x205f,\n  \"Mellintrf;\":0x2133, \"Mfr;\":[0xd835,0xdd10],\n  \"MinusPlus;\":0x2213, \"Mopf;\":[0xd835,0xdd44],\n  \"Mscr;\":0x2133, \"Mu;\":0x39c,\n  \"NJcy;\":0x40a, \"Nacute;\":0x143,\n  \"Ncaron;\":0x147, \"Ncedil;\":0x145,\n  \"Ncy;\":0x41d, \"NegativeMediumSpace;\":0x200b,\n  \"NegativeThickSpace;\":0x200b, \"NegativeThinSpace;\":0x200b,\n  \"NegativeVeryThinSpace;\":0x200b, \"NestedGreaterGreater;\":0x226b,\n  \"NestedLessLess;\":0x226a, \"NewLine;\":0xa,\n  \"Nfr;\":[0xd835,0xdd11], \"NoBreak;\":0x2060,\n  \"NonBreakingSpace;\":0xa0, \"Nopf;\":0x2115,\n  \"Not;\":0x2aec, \"NotCongruent;\":0x2262,\n  \"NotCupCap;\":0x226d, \"NotDoubleVerticalBar;\":0x2226,\n  \"NotElement;\":0x2209, \"NotEqual;\":0x2260,\n  \"NotEqualTilde;\":[0x2242,0x338], \"NotExists;\":0x2204,\n  \"NotGreater;\":0x226f, \"NotGreaterEqual;\":0x2271,\n  \"NotGreaterFullEqual;\":[0x2267,0x338], \"NotGreaterGreater;\":[0x226b,0x338],\n  \"NotGreaterLess;\":0x2279, \"NotGreaterSlantEqual;\":[0x2a7e,0x338],\n  \"NotGreaterTilde;\":0x2275, \"NotHumpDownHump;\":[0x224e,0x338],\n  \"NotHumpEqual;\":[0x224f,0x338], \"NotLeftTriangle;\":0x22ea,\n  \"NotLeftTriangleBar;\":[0x29cf,0x338], \"NotLeftTriangleEqual;\":0x22ec,\n  \"NotLess;\":0x226e, \"NotLessEqual;\":0x2270,\n  \"NotLessGreater;\":0x2278, \"NotLessLess;\":[0x226a,0x338],\n  \"NotLessSlantEqual;\":[0x2a7d,0x338], \"NotLessTilde;\":0x2274,\n  \"NotNestedGreaterGreater;\":[0x2aa2,0x338], \"NotNestedLessLess;\":[0x2aa1,0x338],\n  \"NotPrecedes;\":0x2280, \"NotPrecedesEqual;\":[0x2aaf,0x338],\n  \"NotPrecedesSlantEqual;\":0x22e0, \"NotReverseElement;\":0x220c,\n  \"NotRightTriangle;\":0x22eb, \"NotRightTriangleBar;\":[0x29d0,0x338],\n  \"NotRightTriangleEqual;\":0x22ed, \"NotSquareSubset;\":[0x228f,0x338],\n  \"NotSquareSubsetEqual;\":0x22e2, \"NotSquareSuperset;\":[0x2290,0x338],\n  \"NotSquareSupersetEqual;\":0x22e3, \"NotSubset;\":[0x2282,0x20d2],\n  \"NotSubsetEqual;\":0x2288, \"NotSucceeds;\":0x2281,\n  \"NotSucceedsEqual;\":[0x2ab0,0x338], \"NotSucceedsSlantEqual;\":0x22e1,\n  \"NotSucceedsTilde;\":[0x227f,0x338], \"NotSuperset;\":[0x2283,0x20d2],\n  \"NotSupersetEqual;\":0x2289, \"NotTilde;\":0x2241,\n  \"NotTildeEqual;\":0x2244, \"NotTildeFullEqual;\":0x2247,\n  \"NotTildeTilde;\":0x2249, \"NotVerticalBar;\":0x2224,\n  \"Nscr;\":[0xd835,0xdca9], \"Ntilde\":0xd1,\n  \"Ntilde;\":0xd1, \"Nu;\":0x39d,\n  \"OElig;\":0x152, \"Oacute\":0xd3,\n  \"Oacute;\":0xd3, \"Ocirc\":0xd4,\n  \"Ocirc;\":0xd4, \"Ocy;\":0x41e,\n  \"Odblac;\":0x150, \"Ofr;\":[0xd835,0xdd12],\n  \"Ograve\":0xd2, \"Ograve;\":0xd2,\n  \"Omacr;\":0x14c, \"Omega;\":0x3a9,\n  \"Omicron;\":0x39f, \"Oopf;\":[0xd835,0xdd46],\n  \"OpenCurlyDoubleQuote;\":0x201c, \"OpenCurlyQuote;\":0x2018,\n  \"Or;\":0x2a54, \"Oscr;\":[0xd835,0xdcaa],\n  \"Oslash\":0xd8, \"Oslash;\":0xd8,\n  \"Otilde\":0xd5, \"Otilde;\":0xd5,\n  \"Otimes;\":0x2a37, \"Ouml\":0xd6,\n  \"Ouml;\":0xd6, \"OverBar;\":0x203e,\n  \"OverBrace;\":0x23de, \"OverBracket;\":0x23b4,\n  \"OverParenthesis;\":0x23dc, \"PartialD;\":0x2202,\n  \"Pcy;\":0x41f, \"Pfr;\":[0xd835,0xdd13],\n  \"Phi;\":0x3a6, \"Pi;\":0x3a0,\n  \"PlusMinus;\":0xb1, \"Poincareplane;\":0x210c,\n  \"Popf;\":0x2119, \"Pr;\":0x2abb,\n  \"Precedes;\":0x227a, \"PrecedesEqual;\":0x2aaf,\n  \"PrecedesSlantEqual;\":0x227c, \"PrecedesTilde;\":0x227e,\n  \"Prime;\":0x2033, \"Product;\":0x220f,\n  \"Proportion;\":0x2237, \"Proportional;\":0x221d,\n  \"Pscr;\":[0xd835,0xdcab], \"Psi;\":0x3a8,\n  \"QUOT\":0x22, \"QUOT;\":0x22,\n  \"Qfr;\":[0xd835,0xdd14], \"Qopf;\":0x211a,\n  \"Qscr;\":[0xd835,0xdcac], \"RBarr;\":0x2910,\n  \"REG\":0xae, \"REG;\":0xae,\n  \"Racute;\":0x154, \"Rang;\":0x27eb,\n  \"Rarr;\":0x21a0, \"Rarrtl;\":0x2916,\n  \"Rcaron;\":0x158, \"Rcedil;\":0x156,\n  \"Rcy;\":0x420, \"Re;\":0x211c,\n  \"ReverseElement;\":0x220b, \"ReverseEquilibrium;\":0x21cb,\n  \"ReverseUpEquilibrium;\":0x296f, \"Rfr;\":0x211c,\n  \"Rho;\":0x3a1, \"RightAngleBracket;\":0x27e9,\n  \"RightArrow;\":0x2192, \"RightArrowBar;\":0x21e5,\n  \"RightArrowLeftArrow;\":0x21c4, \"RightCeiling;\":0x2309,\n  \"RightDoubleBracket;\":0x27e7, \"RightDownTeeVector;\":0x295d,\n  \"RightDownVector;\":0x21c2, \"RightDownVectorBar;\":0x2955,\n  \"RightFloor;\":0x230b, \"RightTee;\":0x22a2,\n  \"RightTeeArrow;\":0x21a6, \"RightTeeVector;\":0x295b,\n  \"RightTriangle;\":0x22b3, \"RightTriangleBar;\":0x29d0,\n  \"RightTriangleEqual;\":0x22b5, \"RightUpDownVector;\":0x294f,\n  \"RightUpTeeVector;\":0x295c, \"RightUpVector;\":0x21be,\n  \"RightUpVectorBar;\":0x2954, \"RightVector;\":0x21c0,\n  \"RightVectorBar;\":0x2953, \"Rightarrow;\":0x21d2,\n  \"Ropf;\":0x211d, \"RoundImplies;\":0x2970,\n  \"Rrightarrow;\":0x21db, \"Rscr;\":0x211b,\n  \"Rsh;\":0x21b1, \"RuleDelayed;\":0x29f4,\n  \"SHCHcy;\":0x429, \"SHcy;\":0x428,\n  \"SOFTcy;\":0x42c, \"Sacute;\":0x15a,\n  \"Sc;\":0x2abc, \"Scaron;\":0x160,\n  \"Scedil;\":0x15e, \"Scirc;\":0x15c,\n  \"Scy;\":0x421, \"Sfr;\":[0xd835,0xdd16],\n  \"ShortDownArrow;\":0x2193, \"ShortLeftArrow;\":0x2190,\n  \"ShortRightArrow;\":0x2192, \"ShortUpArrow;\":0x2191,\n  \"Sigma;\":0x3a3, \"SmallCircle;\":0x2218,\n  \"Sopf;\":[0xd835,0xdd4a], \"Sqrt;\":0x221a,\n  \"Square;\":0x25a1, \"SquareIntersection;\":0x2293,\n  \"SquareSubset;\":0x228f, \"SquareSubsetEqual;\":0x2291,\n  \"SquareSuperset;\":0x2290, \"SquareSupersetEqual;\":0x2292,\n  \"SquareUnion;\":0x2294, \"Sscr;\":[0xd835,0xdcae],\n  \"Star;\":0x22c6, \"Sub;\":0x22d0,\n  \"Subset;\":0x22d0, \"SubsetEqual;\":0x2286,\n  \"Succeeds;\":0x227b, \"SucceedsEqual;\":0x2ab0,\n  \"SucceedsSlantEqual;\":0x227d, \"SucceedsTilde;\":0x227f,\n  \"SuchThat;\":0x220b, \"Sum;\":0x2211,\n  \"Sup;\":0x22d1, \"Superset;\":0x2283,\n  \"SupersetEqual;\":0x2287, \"Supset;\":0x22d1,\n  \"THORN\":0xde, \"THORN;\":0xde,\n  \"TRADE;\":0x2122, \"TSHcy;\":0x40b,\n  \"TScy;\":0x426, \"Tab;\":0x9,\n  \"Tau;\":0x3a4, \"Tcaron;\":0x164,\n  \"Tcedil;\":0x162, \"Tcy;\":0x422,\n  \"Tfr;\":[0xd835,0xdd17], \"Therefore;\":0x2234,\n  \"Theta;\":0x398, \"ThickSpace;\":[0x205f,0x200a],\n  \"ThinSpace;\":0x2009, \"Tilde;\":0x223c,\n  \"TildeEqual;\":0x2243, \"TildeFullEqual;\":0x2245,\n  \"TildeTilde;\":0x2248, \"Topf;\":[0xd835,0xdd4b],\n  \"TripleDot;\":0x20db, \"Tscr;\":[0xd835,0xdcaf],\n  \"Tstrok;\":0x166, \"Uacute\":0xda,\n  \"Uacute;\":0xda, \"Uarr;\":0x219f,\n  \"Uarrocir;\":0x2949, \"Ubrcy;\":0x40e,\n  \"Ubreve;\":0x16c, \"Ucirc\":0xdb,\n  \"Ucirc;\":0xdb, \"Ucy;\":0x423,\n  \"Udblac;\":0x170, \"Ufr;\":[0xd835,0xdd18],\n  \"Ugrave\":0xd9, \"Ugrave;\":0xd9,\n  \"Umacr;\":0x16a, \"UnderBar;\":0x5f,\n  \"UnderBrace;\":0x23df, \"UnderBracket;\":0x23b5,\n  \"UnderParenthesis;\":0x23dd, \"Union;\":0x22c3,\n  \"UnionPlus;\":0x228e, \"Uogon;\":0x172,\n  \"Uopf;\":[0xd835,0xdd4c], \"UpArrow;\":0x2191,\n  \"UpArrowBar;\":0x2912, \"UpArrowDownArrow;\":0x21c5,\n  \"UpDownArrow;\":0x2195, \"UpEquilibrium;\":0x296e,\n  \"UpTee;\":0x22a5, \"UpTeeArrow;\":0x21a5,\n  \"Uparrow;\":0x21d1, \"Updownarrow;\":0x21d5,\n  \"UpperLeftArrow;\":0x2196, \"UpperRightArrow;\":0x2197,\n  \"Upsi;\":0x3d2, \"Upsilon;\":0x3a5,\n  \"Uring;\":0x16e, \"Uscr;\":[0xd835,0xdcb0],\n  \"Utilde;\":0x168, \"Uuml\":0xdc,\n  \"Uuml;\":0xdc, \"VDash;\":0x22ab,\n  \"Vbar;\":0x2aeb, \"Vcy;\":0x412,\n  \"Vdash;\":0x22a9, \"Vdashl;\":0x2ae6,\n  \"Vee;\":0x22c1, \"Verbar;\":0x2016,\n  \"Vert;\":0x2016, \"VerticalBar;\":0x2223,\n  \"VerticalLine;\":0x7c, \"VerticalSeparator;\":0x2758,\n  \"VerticalTilde;\":0x2240, \"VeryThinSpace;\":0x200a,\n  \"Vfr;\":[0xd835,0xdd19], \"Vopf;\":[0xd835,0xdd4d],\n  \"Vscr;\":[0xd835,0xdcb1], \"Vvdash;\":0x22aa,\n  \"Wcirc;\":0x174, \"Wedge;\":0x22c0,\n  \"Wfr;\":[0xd835,0xdd1a], \"Wopf;\":[0xd835,0xdd4e],\n  \"Wscr;\":[0xd835,0xdcb2], \"Xfr;\":[0xd835,0xdd1b],\n  \"Xi;\":0x39e, \"Xopf;\":[0xd835,0xdd4f],\n  \"Xscr;\":[0xd835,0xdcb3], \"YAcy;\":0x42f,\n  \"YIcy;\":0x407, \"YUcy;\":0x42e,\n  \"Yacute\":0xdd, \"Yacute;\":0xdd,\n  \"Ycirc;\":0x176, \"Ycy;\":0x42b,\n  \"Yfr;\":[0xd835,0xdd1c], \"Yopf;\":[0xd835,0xdd50],\n  \"Yscr;\":[0xd835,0xdcb4], \"Yuml;\":0x178,\n  \"ZHcy;\":0x416, \"Zacute;\":0x179,\n  \"Zcaron;\":0x17d, \"Zcy;\":0x417,\n  \"Zdot;\":0x17b, \"ZeroWidthSpace;\":0x200b,\n  \"Zeta;\":0x396, \"Zfr;\":0x2128,\n  \"Zopf;\":0x2124, \"Zscr;\":[0xd835,0xdcb5],\n  \"aacute\":0xe1, \"aacute;\":0xe1,\n  \"abreve;\":0x103, \"ac;\":0x223e,\n  \"acE;\":[0x223e,0x333], \"acd;\":0x223f,\n  \"acirc\":0xe2, \"acirc;\":0xe2,\n  \"acute\":0xb4, \"acute;\":0xb4,\n  \"acy;\":0x430, \"aelig\":0xe6,\n  \"aelig;\":0xe6, \"af;\":0x2061,\n  \"afr;\":[0xd835,0xdd1e], \"agrave\":0xe0,\n  \"agrave;\":0xe0, \"alefsym;\":0x2135,\n  \"aleph;\":0x2135, \"alpha;\":0x3b1,\n  \"amacr;\":0x101, \"amalg;\":0x2a3f,\n  \"amp\":0x26, \"amp;\":0x26,\n  \"and;\":0x2227, \"andand;\":0x2a55,\n  \"andd;\":0x2a5c, \"andslope;\":0x2a58,\n  \"andv;\":0x2a5a, \"ang;\":0x2220,\n  \"ange;\":0x29a4, \"angle;\":0x2220,\n  \"angmsd;\":0x2221, \"angmsdaa;\":0x29a8,\n  \"angmsdab;\":0x29a9, \"angmsdac;\":0x29aa,\n  \"angmsdad;\":0x29ab, \"angmsdae;\":0x29ac,\n  \"angmsdaf;\":0x29ad, \"angmsdag;\":0x29ae,\n  \"angmsdah;\":0x29af, \"angrt;\":0x221f,\n  \"angrtvb;\":0x22be, \"angrtvbd;\":0x299d,\n  \"angsph;\":0x2222, \"angst;\":0xc5,\n  \"angzarr;\":0x237c, \"aogon;\":0x105,\n  \"aopf;\":[0xd835,0xdd52], \"ap;\":0x2248,\n  \"apE;\":0x2a70, \"apacir;\":0x2a6f,\n  \"ape;\":0x224a, \"apid;\":0x224b,\n  \"apos;\":0x27, \"approx;\":0x2248,\n  \"approxeq;\":0x224a, \"aring\":0xe5,\n  \"aring;\":0xe5, \"ascr;\":[0xd835,0xdcb6],\n  \"ast;\":0x2a, \"asymp;\":0x2248,\n  \"asympeq;\":0x224d, \"atilde\":0xe3,\n  \"atilde;\":0xe3, \"auml\":0xe4,\n  \"auml;\":0xe4, \"awconint;\":0x2233,\n  \"awint;\":0x2a11, \"bNot;\":0x2aed,\n  \"backcong;\":0x224c, \"backepsilon;\":0x3f6,\n  \"backprime;\":0x2035, \"backsim;\":0x223d,\n  \"backsimeq;\":0x22cd, \"barvee;\":0x22bd,\n  \"barwed;\":0x2305, \"barwedge;\":0x2305,\n  \"bbrk;\":0x23b5, \"bbrktbrk;\":0x23b6,\n  \"bcong;\":0x224c, \"bcy;\":0x431,\n  \"bdquo;\":0x201e, \"becaus;\":0x2235,\n  \"because;\":0x2235, \"bemptyv;\":0x29b0,\n  \"bepsi;\":0x3f6, \"bernou;\":0x212c,\n  \"beta;\":0x3b2, \"beth;\":0x2136,\n  \"between;\":0x226c, \"bfr;\":[0xd835,0xdd1f],\n  \"bigcap;\":0x22c2, \"bigcirc;\":0x25ef,\n  \"bigcup;\":0x22c3, \"bigodot;\":0x2a00,\n  \"bigoplus;\":0x2a01, \"bigotimes;\":0x2a02,\n  \"bigsqcup;\":0x2a06, \"bigstar;\":0x2605,\n  \"bigtriangledown;\":0x25bd, \"bigtriangleup;\":0x25b3,\n  \"biguplus;\":0x2a04, \"bigvee;\":0x22c1,\n  \"bigwedge;\":0x22c0, \"bkarow;\":0x290d,\n  \"blacklozenge;\":0x29eb, \"blacksquare;\":0x25aa,\n  \"blacktriangle;\":0x25b4, \"blacktriangledown;\":0x25be,\n  \"blacktriangleleft;\":0x25c2, \"blacktriangleright;\":0x25b8,\n  \"blank;\":0x2423, \"blk12;\":0x2592,\n  \"blk14;\":0x2591, \"blk34;\":0x2593,\n  \"block;\":0x2588, \"bne;\":[0x3d,0x20e5],\n  \"bnequiv;\":[0x2261,0x20e5], \"bnot;\":0x2310,\n  \"bopf;\":[0xd835,0xdd53], \"bot;\":0x22a5,\n  \"bottom;\":0x22a5, \"bowtie;\":0x22c8,\n  \"boxDL;\":0x2557, \"boxDR;\":0x2554,\n  \"boxDl;\":0x2556, \"boxDr;\":0x2553,\n  \"boxH;\":0x2550, \"boxHD;\":0x2566,\n  \"boxHU;\":0x2569, \"boxHd;\":0x2564,\n  \"boxHu;\":0x2567, \"boxUL;\":0x255d,\n  \"boxUR;\":0x255a, \"boxUl;\":0x255c,\n  \"boxUr;\":0x2559, \"boxV;\":0x2551,\n  \"boxVH;\":0x256c, \"boxVL;\":0x2563,\n  \"boxVR;\":0x2560, \"boxVh;\":0x256b,\n  \"boxVl;\":0x2562, \"boxVr;\":0x255f,\n  \"boxbox;\":0x29c9, \"boxdL;\":0x2555,\n  \"boxdR;\":0x2552, \"boxdl;\":0x2510,\n  \"boxdr;\":0x250c, \"boxh;\":0x2500,\n  \"boxhD;\":0x2565, \"boxhU;\":0x2568,\n  \"boxhd;\":0x252c, \"boxhu;\":0x2534,\n  \"boxminus;\":0x229f, \"boxplus;\":0x229e,\n  \"boxtimes;\":0x22a0, \"boxuL;\":0x255b,\n  \"boxuR;\":0x2558, \"boxul;\":0x2518,\n  \"boxur;\":0x2514, \"boxv;\":0x2502,\n  \"boxvH;\":0x256a, \"boxvL;\":0x2561,\n  \"boxvR;\":0x255e, \"boxvh;\":0x253c,\n  \"boxvl;\":0x2524, \"boxvr;\":0x251c,\n  \"bprime;\":0x2035, \"breve;\":0x2d8,\n  \"brvbar\":0xa6, \"brvbar;\":0xa6,\n  \"bscr;\":[0xd835,0xdcb7], \"bsemi;\":0x204f,\n  \"bsim;\":0x223d, \"bsime;\":0x22cd,\n  \"bsol;\":0x5c, \"bsolb;\":0x29c5,\n  \"bsolhsub;\":0x27c8, \"bull;\":0x2022,\n  \"bullet;\":0x2022, \"bump;\":0x224e,\n  \"bumpE;\":0x2aae, \"bumpe;\":0x224f,\n  \"bumpeq;\":0x224f, \"cacute;\":0x107,\n  \"cap;\":0x2229, \"capand;\":0x2a44,\n  \"capbrcup;\":0x2a49, \"capcap;\":0x2a4b,\n  \"capcup;\":0x2a47, \"capdot;\":0x2a40,\n  \"caps;\":[0x2229,0xfe00], \"caret;\":0x2041,\n  \"caron;\":0x2c7, \"ccaps;\":0x2a4d,\n  \"ccaron;\":0x10d, \"ccedil\":0xe7,\n  \"ccedil;\":0xe7, \"ccirc;\":0x109,\n  \"ccups;\":0x2a4c, \"ccupssm;\":0x2a50,\n  \"cdot;\":0x10b, \"cedil\":0xb8,\n  \"cedil;\":0xb8, \"cemptyv;\":0x29b2,\n  \"cent\":0xa2, \"cent;\":0xa2,\n  \"centerdot;\":0xb7, \"cfr;\":[0xd835,0xdd20],\n  \"chcy;\":0x447, \"check;\":0x2713,\n  \"checkmark;\":0x2713, \"chi;\":0x3c7,\n  \"cir;\":0x25cb, \"cirE;\":0x29c3,\n  \"circ;\":0x2c6, \"circeq;\":0x2257,\n  \"circlearrowleft;\":0x21ba, \"circlearrowright;\":0x21bb,\n  \"circledR;\":0xae, \"circledS;\":0x24c8,\n  \"circledast;\":0x229b, \"circledcirc;\":0x229a,\n  \"circleddash;\":0x229d, \"cire;\":0x2257,\n  \"cirfnint;\":0x2a10, \"cirmid;\":0x2aef,\n  \"cirscir;\":0x29c2, \"clubs;\":0x2663,\n  \"clubsuit;\":0x2663, \"colon;\":0x3a,\n  \"colone;\":0x2254, \"coloneq;\":0x2254,\n  \"comma;\":0x2c, \"commat;\":0x40,\n  \"comp;\":0x2201, \"compfn;\":0x2218,\n  \"complement;\":0x2201, \"complexes;\":0x2102,\n  \"cong;\":0x2245, \"congdot;\":0x2a6d,\n  \"conint;\":0x222e, \"copf;\":[0xd835,0xdd54],\n  \"coprod;\":0x2210, \"copy\":0xa9,\n  \"copy;\":0xa9, \"copysr;\":0x2117,\n  \"crarr;\":0x21b5, \"cross;\":0x2717,\n  \"cscr;\":[0xd835,0xdcb8], \"csub;\":0x2acf,\n  \"csube;\":0x2ad1, \"csup;\":0x2ad0,\n  \"csupe;\":0x2ad2, \"ctdot;\":0x22ef,\n  \"cudarrl;\":0x2938, \"cudarrr;\":0x2935,\n  \"cuepr;\":0x22de, \"cuesc;\":0x22df,\n  \"cularr;\":0x21b6, \"cularrp;\":0x293d,\n  \"cup;\":0x222a, \"cupbrcap;\":0x2a48,\n  \"cupcap;\":0x2a46, \"cupcup;\":0x2a4a,\n  \"cupdot;\":0x228d, \"cupor;\":0x2a45,\n  \"cups;\":[0x222a,0xfe00], \"curarr;\":0x21b7,\n  \"curarrm;\":0x293c, \"curlyeqprec;\":0x22de,\n  \"curlyeqsucc;\":0x22df, \"curlyvee;\":0x22ce,\n  \"curlywedge;\":0x22cf, \"curren\":0xa4,\n  \"curren;\":0xa4, \"curvearrowleft;\":0x21b6,\n  \"curvearrowright;\":0x21b7, \"cuvee;\":0x22ce,\n  \"cuwed;\":0x22cf, \"cwconint;\":0x2232,\n  \"cwint;\":0x2231, \"cylcty;\":0x232d,\n  \"dArr;\":0x21d3, \"dHar;\":0x2965,\n  \"dagger;\":0x2020, \"daleth;\":0x2138,\n  \"darr;\":0x2193, \"dash;\":0x2010,\n  \"dashv;\":0x22a3, \"dbkarow;\":0x290f,\n  \"dblac;\":0x2dd, \"dcaron;\":0x10f,\n  \"dcy;\":0x434, \"dd;\":0x2146,\n  \"ddagger;\":0x2021, \"ddarr;\":0x21ca,\n  \"ddotseq;\":0x2a77, \"deg\":0xb0,\n  \"deg;\":0xb0, \"delta;\":0x3b4,\n  \"demptyv;\":0x29b1, \"dfisht;\":0x297f,\n  \"dfr;\":[0xd835,0xdd21], \"dharl;\":0x21c3,\n  \"dharr;\":0x21c2, \"diam;\":0x22c4,\n  \"diamond;\":0x22c4, \"diamondsuit;\":0x2666,\n  \"diams;\":0x2666, \"die;\":0xa8,\n  \"digamma;\":0x3dd, \"disin;\":0x22f2,\n  \"div;\":0xf7, \"divide\":0xf7,\n  \"divide;\":0xf7, \"divideontimes;\":0x22c7,\n  \"divonx;\":0x22c7, \"djcy;\":0x452,\n  \"dlcorn;\":0x231e, \"dlcrop;\":0x230d,\n  \"dollar;\":0x24, \"dopf;\":[0xd835,0xdd55],\n  \"dot;\":0x2d9, \"doteq;\":0x2250,\n  \"doteqdot;\":0x2251, \"dotminus;\":0x2238,\n  \"dotplus;\":0x2214, \"dotsquare;\":0x22a1,\n  \"doublebarwedge;\":0x2306, \"downarrow;\":0x2193,\n  \"downdownarrows;\":0x21ca, \"downharpoonleft;\":0x21c3,\n  \"downharpoonright;\":0x21c2, \"drbkarow;\":0x2910,\n  \"drcorn;\":0x231f, \"drcrop;\":0x230c,\n  \"dscr;\":[0xd835,0xdcb9], \"dscy;\":0x455,\n  \"dsol;\":0x29f6, \"dstrok;\":0x111,\n  \"dtdot;\":0x22f1, \"dtri;\":0x25bf,\n  \"dtrif;\":0x25be, \"duarr;\":0x21f5,\n  \"duhar;\":0x296f, \"dwangle;\":0x29a6,\n  \"dzcy;\":0x45f, \"dzigrarr;\":0x27ff,\n  \"eDDot;\":0x2a77, \"eDot;\":0x2251,\n  \"eacute\":0xe9, \"eacute;\":0xe9,\n  \"easter;\":0x2a6e, \"ecaron;\":0x11b,\n  \"ecir;\":0x2256, \"ecirc\":0xea,\n  \"ecirc;\":0xea, \"ecolon;\":0x2255,\n  \"ecy;\":0x44d, \"edot;\":0x117,\n  \"ee;\":0x2147, \"efDot;\":0x2252,\n  \"efr;\":[0xd835,0xdd22], \"eg;\":0x2a9a,\n  \"egrave\":0xe8, \"egrave;\":0xe8,\n  \"egs;\":0x2a96, \"egsdot;\":0x2a98,\n  \"el;\":0x2a99, \"elinters;\":0x23e7,\n  \"ell;\":0x2113, \"els;\":0x2a95,\n  \"elsdot;\":0x2a97, \"emacr;\":0x113,\n  \"empty;\":0x2205, \"emptyset;\":0x2205,\n  \"emptyv;\":0x2205, \"emsp13;\":0x2004,\n  \"emsp14;\":0x2005, \"emsp;\":0x2003,\n  \"eng;\":0x14b, \"ensp;\":0x2002,\n  \"eogon;\":0x119, \"eopf;\":[0xd835,0xdd56],\n  \"epar;\":0x22d5, \"eparsl;\":0x29e3,\n  \"eplus;\":0x2a71, \"epsi;\":0x3b5,\n  \"epsilon;\":0x3b5, \"epsiv;\":0x3f5,\n  \"eqcirc;\":0x2256, \"eqcolon;\":0x2255,\n  \"eqsim;\":0x2242, \"eqslantgtr;\":0x2a96,\n  \"eqslantless;\":0x2a95, \"equals;\":0x3d,\n  \"equest;\":0x225f, \"equiv;\":0x2261,\n  \"equivDD;\":0x2a78, \"eqvparsl;\":0x29e5,\n  \"erDot;\":0x2253, \"erarr;\":0x2971,\n  \"escr;\":0x212f, \"esdot;\":0x2250,\n  \"esim;\":0x2242, \"eta;\":0x3b7,\n  \"eth\":0xf0, \"eth;\":0xf0,\n  \"euml\":0xeb, \"euml;\":0xeb,\n  \"euro;\":0x20ac, \"excl;\":0x21,\n  \"exist;\":0x2203, \"expectation;\":0x2130,\n  \"exponentiale;\":0x2147, \"fallingdotseq;\":0x2252,\n  \"fcy;\":0x444, \"female;\":0x2640,\n  \"ffilig;\":0xfb03, \"fflig;\":0xfb00,\n  \"ffllig;\":0xfb04, \"ffr;\":[0xd835,0xdd23],\n  \"filig;\":0xfb01, \"fjlig;\":[0x66,0x6a],\n  \"flat;\":0x266d, \"fllig;\":0xfb02,\n  \"fltns;\":0x25b1, \"fnof;\":0x192,\n  \"fopf;\":[0xd835,0xdd57], \"forall;\":0x2200,\n  \"fork;\":0x22d4, \"forkv;\":0x2ad9,\n  \"fpartint;\":0x2a0d, \"frac12\":0xbd,\n  \"frac12;\":0xbd, \"frac13;\":0x2153,\n  \"frac14\":0xbc, \"frac14;\":0xbc,\n  \"frac15;\":0x2155, \"frac16;\":0x2159,\n  \"frac18;\":0x215b, \"frac23;\":0x2154,\n  \"frac25;\":0x2156, \"frac34\":0xbe,\n  \"frac34;\":0xbe, \"frac35;\":0x2157,\n  \"frac38;\":0x215c, \"frac45;\":0x2158,\n  \"frac56;\":0x215a, \"frac58;\":0x215d,\n  \"frac78;\":0x215e, \"frasl;\":0x2044,\n  \"frown;\":0x2322, \"fscr;\":[0xd835,0xdcbb],\n  \"gE;\":0x2267, \"gEl;\":0x2a8c,\n  \"gacute;\":0x1f5, \"gamma;\":0x3b3,\n  \"gammad;\":0x3dd, \"gap;\":0x2a86,\n  \"gbreve;\":0x11f, \"gcirc;\":0x11d,\n  \"gcy;\":0x433, \"gdot;\":0x121,\n  \"ge;\":0x2265, \"gel;\":0x22db,\n  \"geq;\":0x2265, \"geqq;\":0x2267,\n  \"geqslant;\":0x2a7e, \"ges;\":0x2a7e,\n  \"gescc;\":0x2aa9, \"gesdot;\":0x2a80,\n  \"gesdoto;\":0x2a82, \"gesdotol;\":0x2a84,\n  \"gesl;\":[0x22db,0xfe00], \"gesles;\":0x2a94,\n  \"gfr;\":[0xd835,0xdd24], \"gg;\":0x226b,\n  \"ggg;\":0x22d9, \"gimel;\":0x2137,\n  \"gjcy;\":0x453, \"gl;\":0x2277,\n  \"glE;\":0x2a92, \"gla;\":0x2aa5,\n  \"glj;\":0x2aa4, \"gnE;\":0x2269,\n  \"gnap;\":0x2a8a, \"gnapprox;\":0x2a8a,\n  \"gne;\":0x2a88, \"gneq;\":0x2a88,\n  \"gneqq;\":0x2269, \"gnsim;\":0x22e7,\n  \"gopf;\":[0xd835,0xdd58], \"grave;\":0x60,\n  \"gscr;\":0x210a, \"gsim;\":0x2273,\n  \"gsime;\":0x2a8e, \"gsiml;\":0x2a90,\n  \"gt\":0x3e, \"gt;\":0x3e,\n  \"gtcc;\":0x2aa7, \"gtcir;\":0x2a7a,\n  \"gtdot;\":0x22d7, \"gtlPar;\":0x2995,\n  \"gtquest;\":0x2a7c, \"gtrapprox;\":0x2a86,\n  \"gtrarr;\":0x2978, \"gtrdot;\":0x22d7,\n  \"gtreqless;\":0x22db, \"gtreqqless;\":0x2a8c,\n  \"gtrless;\":0x2277, \"gtrsim;\":0x2273,\n  \"gvertneqq;\":[0x2269,0xfe00], \"gvnE;\":[0x2269,0xfe00],\n  \"hArr;\":0x21d4, \"hairsp;\":0x200a,\n  \"half;\":0xbd, \"hamilt;\":0x210b,\n  \"hardcy;\":0x44a, \"harr;\":0x2194,\n  \"harrcir;\":0x2948, \"harrw;\":0x21ad,\n  \"hbar;\":0x210f, \"hcirc;\":0x125,\n  \"hearts;\":0x2665, \"heartsuit;\":0x2665,\n  \"hellip;\":0x2026, \"hercon;\":0x22b9,\n  \"hfr;\":[0xd835,0xdd25], \"hksearow;\":0x2925,\n  \"hkswarow;\":0x2926, \"hoarr;\":0x21ff,\n  \"homtht;\":0x223b, \"hookleftarrow;\":0x21a9,\n  \"hookrightarrow;\":0x21aa, \"hopf;\":[0xd835,0xdd59],\n  \"horbar;\":0x2015, \"hscr;\":[0xd835,0xdcbd],\n  \"hslash;\":0x210f, \"hstrok;\":0x127,\n  \"hybull;\":0x2043, \"hyphen;\":0x2010,\n  \"iacute\":0xed, \"iacute;\":0xed,\n  \"ic;\":0x2063, \"icirc\":0xee,\n  \"icirc;\":0xee, \"icy;\":0x438,\n  \"iecy;\":0x435, \"iexcl\":0xa1,\n  \"iexcl;\":0xa1, \"iff;\":0x21d4,\n  \"ifr;\":[0xd835,0xdd26], \"igrave\":0xec,\n  \"igrave;\":0xec, \"ii;\":0x2148,\n  \"iiiint;\":0x2a0c, \"iiint;\":0x222d,\n  \"iinfin;\":0x29dc, \"iiota;\":0x2129,\n  \"ijlig;\":0x133, \"imacr;\":0x12b,\n  \"image;\":0x2111, \"imagline;\":0x2110,\n  \"imagpart;\":0x2111, \"imath;\":0x131,\n  \"imof;\":0x22b7, \"imped;\":0x1b5,\n  \"in;\":0x2208, \"incare;\":0x2105,\n  \"infin;\":0x221e, \"infintie;\":0x29dd,\n  \"inodot;\":0x131, \"int;\":0x222b,\n  \"intcal;\":0x22ba, \"integers;\":0x2124,\n  \"intercal;\":0x22ba, \"intlarhk;\":0x2a17,\n  \"intprod;\":0x2a3c, \"iocy;\":0x451,\n  \"iogon;\":0x12f, \"iopf;\":[0xd835,0xdd5a],\n  \"iota;\":0x3b9, \"iprod;\":0x2a3c,\n  \"iquest\":0xbf, \"iquest;\":0xbf,\n  \"iscr;\":[0xd835,0xdcbe], \"isin;\":0x2208,\n  \"isinE;\":0x22f9, \"isindot;\":0x22f5,\n  \"isins;\":0x22f4, \"isinsv;\":0x22f3,\n  \"isinv;\":0x2208, \"it;\":0x2062,\n  \"itilde;\":0x129, \"iukcy;\":0x456,\n  \"iuml\":0xef, \"iuml;\":0xef,\n  \"jcirc;\":0x135, \"jcy;\":0x439,\n  \"jfr;\":[0xd835,0xdd27], \"jmath;\":0x237,\n  \"jopf;\":[0xd835,0xdd5b], \"jscr;\":[0xd835,0xdcbf],\n  \"jsercy;\":0x458, \"jukcy;\":0x454,\n  \"kappa;\":0x3ba, \"kappav;\":0x3f0,\n  \"kcedil;\":0x137, \"kcy;\":0x43a,\n  \"kfr;\":[0xd835,0xdd28], \"kgreen;\":0x138,\n  \"khcy;\":0x445, \"kjcy;\":0x45c,\n  \"kopf;\":[0xd835,0xdd5c], \"kscr;\":[0xd835,0xdcc0],\n  \"lAarr;\":0x21da, \"lArr;\":0x21d0,\n  \"lAtail;\":0x291b, \"lBarr;\":0x290e,\n  \"lE;\":0x2266, \"lEg;\":0x2a8b,\n  \"lHar;\":0x2962, \"lacute;\":0x13a,\n  \"laemptyv;\":0x29b4, \"lagran;\":0x2112,\n  \"lambda;\":0x3bb, \"lang;\":0x27e8,\n  \"langd;\":0x2991, \"langle;\":0x27e8,\n  \"lap;\":0x2a85, \"laquo\":0xab,\n  \"laquo;\":0xab, \"larr;\":0x2190,\n  \"larrb;\":0x21e4, \"larrbfs;\":0x291f,\n  \"larrfs;\":0x291d, \"larrhk;\":0x21a9,\n  \"larrlp;\":0x21ab, \"larrpl;\":0x2939,\n  \"larrsim;\":0x2973, \"larrtl;\":0x21a2,\n  \"lat;\":0x2aab, \"latail;\":0x2919,\n  \"late;\":0x2aad, \"lates;\":[0x2aad,0xfe00],\n  \"lbarr;\":0x290c, \"lbbrk;\":0x2772,\n  \"lbrace;\":0x7b, \"lbrack;\":0x5b,\n  \"lbrke;\":0x298b, \"lbrksld;\":0x298f,\n  \"lbrkslu;\":0x298d, \"lcaron;\":0x13e,\n  \"lcedil;\":0x13c, \"lceil;\":0x2308,\n  \"lcub;\":0x7b, \"lcy;\":0x43b,\n  \"ldca;\":0x2936, \"ldquo;\":0x201c,\n  \"ldquor;\":0x201e, \"ldrdhar;\":0x2967,\n  \"ldrushar;\":0x294b, \"ldsh;\":0x21b2,\n  \"le;\":0x2264, \"leftarrow;\":0x2190,\n  \"leftarrowtail;\":0x21a2, \"leftharpoondown;\":0x21bd,\n  \"leftharpoonup;\":0x21bc, \"leftleftarrows;\":0x21c7,\n  \"leftrightarrow;\":0x2194, \"leftrightarrows;\":0x21c6,\n  \"leftrightharpoons;\":0x21cb, \"leftrightsquigarrow;\":0x21ad,\n  \"leftthreetimes;\":0x22cb, \"leg;\":0x22da,\n  \"leq;\":0x2264, \"leqq;\":0x2266,\n  \"leqslant;\":0x2a7d, \"les;\":0x2a7d,\n  \"lescc;\":0x2aa8, \"lesdot;\":0x2a7f,\n  \"lesdoto;\":0x2a81, \"lesdotor;\":0x2a83,\n  \"lesg;\":[0x22da,0xfe00], \"lesges;\":0x2a93,\n  \"lessapprox;\":0x2a85, \"lessdot;\":0x22d6,\n  \"lesseqgtr;\":0x22da, \"lesseqqgtr;\":0x2a8b,\n  \"lessgtr;\":0x2276, \"lesssim;\":0x2272,\n  \"lfisht;\":0x297c, \"lfloor;\":0x230a,\n  \"lfr;\":[0xd835,0xdd29], \"lg;\":0x2276,\n  \"lgE;\":0x2a91, \"lhard;\":0x21bd,\n  \"lharu;\":0x21bc, \"lharul;\":0x296a,\n  \"lhblk;\":0x2584, \"ljcy;\":0x459,\n  \"ll;\":0x226a, \"llarr;\":0x21c7,\n  \"llcorner;\":0x231e, \"llhard;\":0x296b,\n  \"lltri;\":0x25fa, \"lmidot;\":0x140,\n  \"lmoust;\":0x23b0, \"lmoustache;\":0x23b0,\n  \"lnE;\":0x2268, \"lnap;\":0x2a89,\n  \"lnapprox;\":0x2a89, \"lne;\":0x2a87,\n  \"lneq;\":0x2a87, \"lneqq;\":0x2268,\n  \"lnsim;\":0x22e6, \"loang;\":0x27ec,\n  \"loarr;\":0x21fd, \"lobrk;\":0x27e6,\n  \"longleftarrow;\":0x27f5, \"longleftrightarrow;\":0x27f7,\n  \"longmapsto;\":0x27fc, \"longrightarrow;\":0x27f6,\n  \"looparrowleft;\":0x21ab, \"looparrowright;\":0x21ac,\n  \"lopar;\":0x2985, \"lopf;\":[0xd835,0xdd5d],\n  \"loplus;\":0x2a2d, \"lotimes;\":0x2a34,\n  \"lowast;\":0x2217, \"lowbar;\":0x5f,\n  \"loz;\":0x25ca, \"lozenge;\":0x25ca,\n  \"lozf;\":0x29eb, \"lpar;\":0x28,\n  \"lparlt;\":0x2993, \"lrarr;\":0x21c6,\n  \"lrcorner;\":0x231f, \"lrhar;\":0x21cb,\n  \"lrhard;\":0x296d, \"lrm;\":0x200e,\n  \"lrtri;\":0x22bf, \"lsaquo;\":0x2039,\n  \"lscr;\":[0xd835,0xdcc1], \"lsh;\":0x21b0,\n  \"lsim;\":0x2272, \"lsime;\":0x2a8d,\n  \"lsimg;\":0x2a8f, \"lsqb;\":0x5b,\n  \"lsquo;\":0x2018, \"lsquor;\":0x201a,\n  \"lstrok;\":0x142, \"lt\":0x3c,\n  \"lt;\":0x3c, \"ltcc;\":0x2aa6,\n  \"ltcir;\":0x2a79, \"ltdot;\":0x22d6,\n  \"lthree;\":0x22cb, \"ltimes;\":0x22c9,\n  \"ltlarr;\":0x2976, \"ltquest;\":0x2a7b,\n  \"ltrPar;\":0x2996, \"ltri;\":0x25c3,\n  \"ltrie;\":0x22b4, \"ltrif;\":0x25c2,\n  \"lurdshar;\":0x294a, \"luruhar;\":0x2966,\n  \"lvertneqq;\":[0x2268,0xfe00], \"lvnE;\":[0x2268,0xfe00],\n  \"mDDot;\":0x223a, \"macr\":0xaf,\n  \"macr;\":0xaf, \"male;\":0x2642,\n  \"malt;\":0x2720, \"maltese;\":0x2720,\n  \"map;\":0x21a6, \"mapsto;\":0x21a6,\n  \"mapstodown;\":0x21a7, \"mapstoleft;\":0x21a4,\n  \"mapstoup;\":0x21a5, \"marker;\":0x25ae,\n  \"mcomma;\":0x2a29, \"mcy;\":0x43c,\n  \"mdash;\":0x2014, \"measuredangle;\":0x2221,\n  \"mfr;\":[0xd835,0xdd2a], \"mho;\":0x2127,\n  \"micro\":0xb5, \"micro;\":0xb5,\n  \"mid;\":0x2223, \"midast;\":0x2a,\n  \"midcir;\":0x2af0, \"middot\":0xb7,\n  \"middot;\":0xb7, \"minus;\":0x2212,\n  \"minusb;\":0x229f, \"minusd;\":0x2238,\n  \"minusdu;\":0x2a2a, \"mlcp;\":0x2adb,\n  \"mldr;\":0x2026, \"mnplus;\":0x2213,\n  \"models;\":0x22a7, \"mopf;\":[0xd835,0xdd5e],\n  \"mp;\":0x2213, \"mscr;\":[0xd835,0xdcc2],\n  \"mstpos;\":0x223e, \"mu;\":0x3bc,\n  \"multimap;\":0x22b8, \"mumap;\":0x22b8,\n  \"nGg;\":[0x22d9,0x338], \"nGt;\":[0x226b,0x20d2],\n  \"nGtv;\":[0x226b,0x338], \"nLeftarrow;\":0x21cd,\n  \"nLeftrightarrow;\":0x21ce, \"nLl;\":[0x22d8,0x338],\n  \"nLt;\":[0x226a,0x20d2], \"nLtv;\":[0x226a,0x338],\n  \"nRightarrow;\":0x21cf, \"nVDash;\":0x22af,\n  \"nVdash;\":0x22ae, \"nabla;\":0x2207,\n  \"nacute;\":0x144, \"nang;\":[0x2220,0x20d2],\n  \"nap;\":0x2249, \"napE;\":[0x2a70,0x338],\n  \"napid;\":[0x224b,0x338], \"napos;\":0x149,\n  \"napprox;\":0x2249, \"natur;\":0x266e,\n  \"natural;\":0x266e, \"naturals;\":0x2115,\n  \"nbsp\":0xa0, \"nbsp;\":0xa0,\n  \"nbump;\":[0x224e,0x338], \"nbumpe;\":[0x224f,0x338],\n  \"ncap;\":0x2a43, \"ncaron;\":0x148,\n  \"ncedil;\":0x146, \"ncong;\":0x2247,\n  \"ncongdot;\":[0x2a6d,0x338], \"ncup;\":0x2a42,\n  \"ncy;\":0x43d, \"ndash;\":0x2013,\n  \"ne;\":0x2260, \"neArr;\":0x21d7,\n  \"nearhk;\":0x2924, \"nearr;\":0x2197,\n  \"nearrow;\":0x2197, \"nedot;\":[0x2250,0x338],\n  \"nequiv;\":0x2262, \"nesear;\":0x2928,\n  \"nesim;\":[0x2242,0x338], \"nexist;\":0x2204,\n  \"nexists;\":0x2204, \"nfr;\":[0xd835,0xdd2b],\n  \"ngE;\":[0x2267,0x338], \"nge;\":0x2271,\n  \"ngeq;\":0x2271, \"ngeqq;\":[0x2267,0x338],\n  \"ngeqslant;\":[0x2a7e,0x338], \"nges;\":[0x2a7e,0x338],\n  \"ngsim;\":0x2275, \"ngt;\":0x226f,\n  \"ngtr;\":0x226f, \"nhArr;\":0x21ce,\n  \"nharr;\":0x21ae, \"nhpar;\":0x2af2,\n  \"ni;\":0x220b, \"nis;\":0x22fc,\n  \"nisd;\":0x22fa, \"niv;\":0x220b,\n  \"njcy;\":0x45a, \"nlArr;\":0x21cd,\n  \"nlE;\":[0x2266,0x338], \"nlarr;\":0x219a,\n  \"nldr;\":0x2025, \"nle;\":0x2270,\n  \"nleftarrow;\":0x219a, \"nleftrightarrow;\":0x21ae,\n  \"nleq;\":0x2270, \"nleqq;\":[0x2266,0x338],\n  \"nleqslant;\":[0x2a7d,0x338], \"nles;\":[0x2a7d,0x338],\n  \"nless;\":0x226e, \"nlsim;\":0x2274,\n  \"nlt;\":0x226e, \"nltri;\":0x22ea,\n  \"nltrie;\":0x22ec, \"nmid;\":0x2224,\n  \"nopf;\":[0xd835,0xdd5f], \"not\":0xac,\n  \"not;\":0xac, \"notin;\":0x2209,\n  \"notinE;\":[0x22f9,0x338], \"notindot;\":[0x22f5,0x338],\n  \"notinva;\":0x2209, \"notinvb;\":0x22f7,\n  \"notinvc;\":0x22f6, \"notni;\":0x220c,\n  \"notniva;\":0x220c, \"notnivb;\":0x22fe,\n  \"notnivc;\":0x22fd, \"npar;\":0x2226,\n  \"nparallel;\":0x2226, \"nparsl;\":[0x2afd,0x20e5],\n  \"npart;\":[0x2202,0x338], \"npolint;\":0x2a14,\n  \"npr;\":0x2280, \"nprcue;\":0x22e0,\n  \"npre;\":[0x2aaf,0x338], \"nprec;\":0x2280,\n  \"npreceq;\":[0x2aaf,0x338], \"nrArr;\":0x21cf,\n  \"nrarr;\":0x219b, \"nrarrc;\":[0x2933,0x338],\n  \"nrarrw;\":[0x219d,0x338], \"nrightarrow;\":0x219b,\n  \"nrtri;\":0x22eb, \"nrtrie;\":0x22ed,\n  \"nsc;\":0x2281, \"nsccue;\":0x22e1,\n  \"nsce;\":[0x2ab0,0x338], \"nscr;\":[0xd835,0xdcc3],\n  \"nshortmid;\":0x2224, \"nshortparallel;\":0x2226,\n  \"nsim;\":0x2241, \"nsime;\":0x2244,\n  \"nsimeq;\":0x2244, \"nsmid;\":0x2224,\n  \"nspar;\":0x2226, \"nsqsube;\":0x22e2,\n  \"nsqsupe;\":0x22e3, \"nsub;\":0x2284,\n  \"nsubE;\":[0x2ac5,0x338], \"nsube;\":0x2288,\n  \"nsubset;\":[0x2282,0x20d2], \"nsubseteq;\":0x2288,\n  \"nsubseteqq;\":[0x2ac5,0x338], \"nsucc;\":0x2281,\n  \"nsucceq;\":[0x2ab0,0x338], \"nsup;\":0x2285,\n  \"nsupE;\":[0x2ac6,0x338], \"nsupe;\":0x2289,\n  \"nsupset;\":[0x2283,0x20d2], \"nsupseteq;\":0x2289,\n  \"nsupseteqq;\":[0x2ac6,0x338], \"ntgl;\":0x2279,\n  \"ntilde\":0xf1, \"ntilde;\":0xf1,\n  \"ntlg;\":0x2278, \"ntriangleleft;\":0x22ea,\n  \"ntrianglelefteq;\":0x22ec, \"ntriangleright;\":0x22eb,\n  \"ntrianglerighteq;\":0x22ed, \"nu;\":0x3bd,\n  \"num;\":0x23, \"numero;\":0x2116,\n  \"numsp;\":0x2007, \"nvDash;\":0x22ad,\n  \"nvHarr;\":0x2904, \"nvap;\":[0x224d,0x20d2],\n  \"nvdash;\":0x22ac, \"nvge;\":[0x2265,0x20d2],\n  \"nvgt;\":[0x3e,0x20d2], \"nvinfin;\":0x29de,\n  \"nvlArr;\":0x2902, \"nvle;\":[0x2264,0x20d2],\n  \"nvlt;\":[0x3c,0x20d2], \"nvltrie;\":[0x22b4,0x20d2],\n  \"nvrArr;\":0x2903, \"nvrtrie;\":[0x22b5,0x20d2],\n  \"nvsim;\":[0x223c,0x20d2], \"nwArr;\":0x21d6,\n  \"nwarhk;\":0x2923, \"nwarr;\":0x2196,\n  \"nwarrow;\":0x2196, \"nwnear;\":0x2927,\n  \"oS;\":0x24c8, \"oacute\":0xf3,\n  \"oacute;\":0xf3, \"oast;\":0x229b,\n  \"ocir;\":0x229a, \"ocirc\":0xf4,\n  \"ocirc;\":0xf4, \"ocy;\":0x43e,\n  \"odash;\":0x229d, \"odblac;\":0x151,\n  \"odiv;\":0x2a38, \"odot;\":0x2299,\n  \"odsold;\":0x29bc, \"oelig;\":0x153,\n  \"ofcir;\":0x29bf, \"ofr;\":[0xd835,0xdd2c],\n  \"ogon;\":0x2db, \"ograve\":0xf2,\n  \"ograve;\":0xf2, \"ogt;\":0x29c1,\n  \"ohbar;\":0x29b5, \"ohm;\":0x3a9,\n  \"oint;\":0x222e, \"olarr;\":0x21ba,\n  \"olcir;\":0x29be, \"olcross;\":0x29bb,\n  \"oline;\":0x203e, \"olt;\":0x29c0,\n  \"omacr;\":0x14d, \"omega;\":0x3c9,\n  \"omicron;\":0x3bf, \"omid;\":0x29b6,\n  \"ominus;\":0x2296, \"oopf;\":[0xd835,0xdd60],\n  \"opar;\":0x29b7, \"operp;\":0x29b9,\n  \"oplus;\":0x2295, \"or;\":0x2228,\n  \"orarr;\":0x21bb, \"ord;\":0x2a5d,\n  \"order;\":0x2134, \"orderof;\":0x2134,\n  \"ordf\":0xaa, \"ordf;\":0xaa,\n  \"ordm\":0xba, \"ordm;\":0xba,\n  \"origof;\":0x22b6, \"oror;\":0x2a56,\n  \"orslope;\":0x2a57, \"orv;\":0x2a5b,\n  \"oscr;\":0x2134, \"oslash\":0xf8,\n  \"oslash;\":0xf8, \"osol;\":0x2298,\n  \"otilde\":0xf5, \"otilde;\":0xf5,\n  \"otimes;\":0x2297, \"otimesas;\":0x2a36,\n  \"ouml\":0xf6, \"ouml;\":0xf6,\n  \"ovbar;\":0x233d, \"par;\":0x2225,\n  \"para\":0xb6, \"para;\":0xb6,\n  \"parallel;\":0x2225, \"parsim;\":0x2af3,\n  \"parsl;\":0x2afd, \"part;\":0x2202,\n  \"pcy;\":0x43f, \"percnt;\":0x25,\n  \"period;\":0x2e, \"permil;\":0x2030,\n  \"perp;\":0x22a5, \"pertenk;\":0x2031,\n  \"pfr;\":[0xd835,0xdd2d], \"phi;\":0x3c6,\n  \"phiv;\":0x3d5, \"phmmat;\":0x2133,\n  \"phone;\":0x260e, \"pi;\":0x3c0,\n  \"pitchfork;\":0x22d4, \"piv;\":0x3d6,\n  \"planck;\":0x210f, \"planckh;\":0x210e,\n  \"plankv;\":0x210f, \"plus;\":0x2b,\n  \"plusacir;\":0x2a23, \"plusb;\":0x229e,\n  \"pluscir;\":0x2a22, \"plusdo;\":0x2214,\n  \"plusdu;\":0x2a25, \"pluse;\":0x2a72,\n  \"plusmn\":0xb1, \"plusmn;\":0xb1,\n  \"plussim;\":0x2a26, \"plustwo;\":0x2a27,\n  \"pm;\":0xb1, \"pointint;\":0x2a15,\n  \"popf;\":[0xd835,0xdd61], \"pound\":0xa3,\n  \"pound;\":0xa3, \"pr;\":0x227a,\n  \"prE;\":0x2ab3, \"prap;\":0x2ab7,\n  \"prcue;\":0x227c, \"pre;\":0x2aaf,\n  \"prec;\":0x227a, \"precapprox;\":0x2ab7,\n  \"preccurlyeq;\":0x227c, \"preceq;\":0x2aaf,\n  \"precnapprox;\":0x2ab9, \"precneqq;\":0x2ab5,\n  \"precnsim;\":0x22e8, \"precsim;\":0x227e,\n  \"prime;\":0x2032, \"primes;\":0x2119,\n  \"prnE;\":0x2ab5, \"prnap;\":0x2ab9,\n  \"prnsim;\":0x22e8, \"prod;\":0x220f,\n  \"profalar;\":0x232e, \"profline;\":0x2312,\n  \"profsurf;\":0x2313, \"prop;\":0x221d,\n  \"propto;\":0x221d, \"prsim;\":0x227e,\n  \"prurel;\":0x22b0, \"pscr;\":[0xd835,0xdcc5],\n  \"psi;\":0x3c8, \"puncsp;\":0x2008,\n  \"qfr;\":[0xd835,0xdd2e], \"qint;\":0x2a0c,\n  \"qopf;\":[0xd835,0xdd62], \"qprime;\":0x2057,\n  \"qscr;\":[0xd835,0xdcc6], \"quaternions;\":0x210d,\n  \"quatint;\":0x2a16, \"quest;\":0x3f,\n  \"questeq;\":0x225f, \"quot\":0x22,\n  \"quot;\":0x22, \"rAarr;\":0x21db,\n  \"rArr;\":0x21d2, \"rAtail;\":0x291c,\n  \"rBarr;\":0x290f, \"rHar;\":0x2964,\n  \"race;\":[0x223d,0x331], \"racute;\":0x155,\n  \"radic;\":0x221a, \"raemptyv;\":0x29b3,\n  \"rang;\":0x27e9, \"rangd;\":0x2992,\n  \"range;\":0x29a5, \"rangle;\":0x27e9,\n  \"raquo\":0xbb, \"raquo;\":0xbb,\n  \"rarr;\":0x2192, \"rarrap;\":0x2975,\n  \"rarrb;\":0x21e5, \"rarrbfs;\":0x2920,\n  \"rarrc;\":0x2933, \"rarrfs;\":0x291e,\n  \"rarrhk;\":0x21aa, \"rarrlp;\":0x21ac,\n  \"rarrpl;\":0x2945, \"rarrsim;\":0x2974,\n  \"rarrtl;\":0x21a3, \"rarrw;\":0x219d,\n  \"ratail;\":0x291a, \"ratio;\":0x2236,\n  \"rationals;\":0x211a, \"rbarr;\":0x290d,\n  \"rbbrk;\":0x2773, \"rbrace;\":0x7d,\n  \"rbrack;\":0x5d, \"rbrke;\":0x298c,\n  \"rbrksld;\":0x298e, \"rbrkslu;\":0x2990,\n  \"rcaron;\":0x159, \"rcedil;\":0x157,\n  \"rceil;\":0x2309, \"rcub;\":0x7d,\n  \"rcy;\":0x440, \"rdca;\":0x2937,\n  \"rdldhar;\":0x2969, \"rdquo;\":0x201d,\n  \"rdquor;\":0x201d, \"rdsh;\":0x21b3,\n  \"real;\":0x211c, \"realine;\":0x211b,\n  \"realpart;\":0x211c, \"reals;\":0x211d,\n  \"rect;\":0x25ad, \"reg\":0xae,\n  \"reg;\":0xae, \"rfisht;\":0x297d,\n  \"rfloor;\":0x230b, \"rfr;\":[0xd835,0xdd2f],\n  \"rhard;\":0x21c1, \"rharu;\":0x21c0,\n  \"rharul;\":0x296c, \"rho;\":0x3c1,\n  \"rhov;\":0x3f1, \"rightarrow;\":0x2192,\n  \"rightarrowtail;\":0x21a3, \"rightharpoondown;\":0x21c1,\n  \"rightharpoonup;\":0x21c0, \"rightleftarrows;\":0x21c4,\n  \"rightleftharpoons;\":0x21cc, \"rightrightarrows;\":0x21c9,\n  \"rightsquigarrow;\":0x219d, \"rightthreetimes;\":0x22cc,\n  \"ring;\":0x2da, \"risingdotseq;\":0x2253,\n  \"rlarr;\":0x21c4, \"rlhar;\":0x21cc,\n  \"rlm;\":0x200f, \"rmoust;\":0x23b1,\n  \"rmoustache;\":0x23b1, \"rnmid;\":0x2aee,\n  \"roang;\":0x27ed, \"roarr;\":0x21fe,\n  \"robrk;\":0x27e7, \"ropar;\":0x2986,\n  \"ropf;\":[0xd835,0xdd63], \"roplus;\":0x2a2e,\n  \"rotimes;\":0x2a35, \"rpar;\":0x29,\n  \"rpargt;\":0x2994, \"rppolint;\":0x2a12,\n  \"rrarr;\":0x21c9, \"rsaquo;\":0x203a,\n  \"rscr;\":[0xd835,0xdcc7], \"rsh;\":0x21b1,\n  \"rsqb;\":0x5d, \"rsquo;\":0x2019,\n  \"rsquor;\":0x2019, \"rthree;\":0x22cc,\n  \"rtimes;\":0x22ca, \"rtri;\":0x25b9,\n  \"rtrie;\":0x22b5, \"rtrif;\":0x25b8,\n  \"rtriltri;\":0x29ce, \"ruluhar;\":0x2968,\n  \"rx;\":0x211e, \"sacute;\":0x15b,\n  \"sbquo;\":0x201a, \"sc;\":0x227b,\n  \"scE;\":0x2ab4, \"scap;\":0x2ab8,\n  \"scaron;\":0x161, \"sccue;\":0x227d,\n  \"sce;\":0x2ab0, \"scedil;\":0x15f,\n  \"scirc;\":0x15d, \"scnE;\":0x2ab6,\n  \"scnap;\":0x2aba, \"scnsim;\":0x22e9,\n  \"scpolint;\":0x2a13, \"scsim;\":0x227f,\n  \"scy;\":0x441, \"sdot;\":0x22c5,\n  \"sdotb;\":0x22a1, \"sdote;\":0x2a66,\n  \"seArr;\":0x21d8, \"searhk;\":0x2925,\n  \"searr;\":0x2198, \"searrow;\":0x2198,\n  \"sect\":0xa7, \"sect;\":0xa7,\n  \"semi;\":0x3b, \"seswar;\":0x2929,\n  \"setminus;\":0x2216, \"setmn;\":0x2216,\n  \"sext;\":0x2736, \"sfr;\":[0xd835,0xdd30],\n  \"sfrown;\":0x2322, \"sharp;\":0x266f,\n  \"shchcy;\":0x449, \"shcy;\":0x448,\n  \"shortmid;\":0x2223, \"shortparallel;\":0x2225,\n  \"shy\":0xad, \"shy;\":0xad,\n  \"sigma;\":0x3c3, \"sigmaf;\":0x3c2,\n  \"sigmav;\":0x3c2, \"sim;\":0x223c,\n  \"simdot;\":0x2a6a, \"sime;\":0x2243,\n  \"simeq;\":0x2243, \"simg;\":0x2a9e,\n  \"simgE;\":0x2aa0, \"siml;\":0x2a9d,\n  \"simlE;\":0x2a9f, \"simne;\":0x2246,\n  \"simplus;\":0x2a24, \"simrarr;\":0x2972,\n  \"slarr;\":0x2190, \"smallsetminus;\":0x2216,\n  \"smashp;\":0x2a33, \"smeparsl;\":0x29e4,\n  \"smid;\":0x2223, \"smile;\":0x2323,\n  \"smt;\":0x2aaa, \"smte;\":0x2aac,\n  \"smtes;\":[0x2aac,0xfe00], \"softcy;\":0x44c,\n  \"sol;\":0x2f, \"solb;\":0x29c4,\n  \"solbar;\":0x233f, \"sopf;\":[0xd835,0xdd64],\n  \"spades;\":0x2660, \"spadesuit;\":0x2660,\n  \"spar;\":0x2225, \"sqcap;\":0x2293,\n  \"sqcaps;\":[0x2293,0xfe00], \"sqcup;\":0x2294,\n  \"sqcups;\":[0x2294,0xfe00], \"sqsub;\":0x228f,\n  \"sqsube;\":0x2291, \"sqsubset;\":0x228f,\n  \"sqsubseteq;\":0x2291, \"sqsup;\":0x2290,\n  \"sqsupe;\":0x2292, \"sqsupset;\":0x2290,\n  \"sqsupseteq;\":0x2292, \"squ;\":0x25a1,\n  \"square;\":0x25a1, \"squarf;\":0x25aa,\n  \"squf;\":0x25aa, \"srarr;\":0x2192,\n  \"sscr;\":[0xd835,0xdcc8], \"ssetmn;\":0x2216,\n  \"ssmile;\":0x2323, \"sstarf;\":0x22c6,\n  \"star;\":0x2606, \"starf;\":0x2605,\n  \"straightepsilon;\":0x3f5, \"straightphi;\":0x3d5,\n  \"strns;\":0xaf, \"sub;\":0x2282,\n  \"subE;\":0x2ac5, \"subdot;\":0x2abd,\n  \"sube;\":0x2286, \"subedot;\":0x2ac3,\n  \"submult;\":0x2ac1, \"subnE;\":0x2acb,\n  \"subne;\":0x228a, \"subplus;\":0x2abf,\n  \"subrarr;\":0x2979, \"subset;\":0x2282,\n  \"subseteq;\":0x2286, \"subseteqq;\":0x2ac5,\n  \"subsetneq;\":0x228a, \"subsetneqq;\":0x2acb,\n  \"subsim;\":0x2ac7, \"subsub;\":0x2ad5,\n  \"subsup;\":0x2ad3, \"succ;\":0x227b,\n  \"succapprox;\":0x2ab8, \"succcurlyeq;\":0x227d,\n  \"succeq;\":0x2ab0, \"succnapprox;\":0x2aba,\n  \"succneqq;\":0x2ab6, \"succnsim;\":0x22e9,\n  \"succsim;\":0x227f, \"sum;\":0x2211,\n  \"sung;\":0x266a, \"sup1\":0xb9,\n  \"sup1;\":0xb9, \"sup2\":0xb2,\n  \"sup2;\":0xb2, \"sup3\":0xb3,\n  \"sup3;\":0xb3, \"sup;\":0x2283,\n  \"supE;\":0x2ac6, \"supdot;\":0x2abe,\n  \"supdsub;\":0x2ad8, \"supe;\":0x2287,\n  \"supedot;\":0x2ac4, \"suphsol;\":0x27c9,\n  \"suphsub;\":0x2ad7, \"suplarr;\":0x297b,\n  \"supmult;\":0x2ac2, \"supnE;\":0x2acc,\n  \"supne;\":0x228b, \"supplus;\":0x2ac0,\n  \"supset;\":0x2283, \"supseteq;\":0x2287,\n  \"supseteqq;\":0x2ac6, \"supsetneq;\":0x228b,\n  \"supsetneqq;\":0x2acc, \"supsim;\":0x2ac8,\n  \"supsub;\":0x2ad4, \"supsup;\":0x2ad6,\n  \"swArr;\":0x21d9, \"swarhk;\":0x2926,\n  \"swarr;\":0x2199, \"swarrow;\":0x2199,\n  \"swnwar;\":0x292a, \"szlig\":0xdf,\n  \"szlig;\":0xdf, \"target;\":0x2316,\n  \"tau;\":0x3c4, \"tbrk;\":0x23b4,\n  \"tcaron;\":0x165, \"tcedil;\":0x163,\n  \"tcy;\":0x442, \"tdot;\":0x20db,\n  \"telrec;\":0x2315, \"tfr;\":[0xd835,0xdd31],\n  \"there4;\":0x2234, \"therefore;\":0x2234,\n  \"theta;\":0x3b8, \"thetasym;\":0x3d1,\n  \"thetav;\":0x3d1, \"thickapprox;\":0x2248,\n  \"thicksim;\":0x223c, \"thinsp;\":0x2009,\n  \"thkap;\":0x2248, \"thksim;\":0x223c,\n  \"thorn\":0xfe, \"thorn;\":0xfe,\n  \"tilde;\":0x2dc, \"times\":0xd7,\n  \"times;\":0xd7, \"timesb;\":0x22a0,\n  \"timesbar;\":0x2a31, \"timesd;\":0x2a30,\n  \"tint;\":0x222d, \"toea;\":0x2928,\n  \"top;\":0x22a4, \"topbot;\":0x2336,\n  \"topcir;\":0x2af1, \"topf;\":[0xd835,0xdd65],\n  \"topfork;\":0x2ada, \"tosa;\":0x2929,\n  \"tprime;\":0x2034, \"trade;\":0x2122,\n  \"triangle;\":0x25b5, \"triangledown;\":0x25bf,\n  \"triangleleft;\":0x25c3, \"trianglelefteq;\":0x22b4,\n  \"triangleq;\":0x225c, \"triangleright;\":0x25b9,\n  \"trianglerighteq;\":0x22b5, \"tridot;\":0x25ec,\n  \"trie;\":0x225c, \"triminus;\":0x2a3a,\n  \"triplus;\":0x2a39, \"trisb;\":0x29cd,\n  \"tritime;\":0x2a3b, \"trpezium;\":0x23e2,\n  \"tscr;\":[0xd835,0xdcc9], \"tscy;\":0x446,\n  \"tshcy;\":0x45b, \"tstrok;\":0x167,\n  \"twixt;\":0x226c, \"twoheadleftarrow;\":0x219e,\n  \"twoheadrightarrow;\":0x21a0, \"uArr;\":0x21d1,\n  \"uHar;\":0x2963, \"uacute\":0xfa,\n  \"uacute;\":0xfa, \"uarr;\":0x2191,\n  \"ubrcy;\":0x45e, \"ubreve;\":0x16d,\n  \"ucirc\":0xfb, \"ucirc;\":0xfb,\n  \"ucy;\":0x443, \"udarr;\":0x21c5,\n  \"udblac;\":0x171, \"udhar;\":0x296e,\n  \"ufisht;\":0x297e, \"ufr;\":[0xd835,0xdd32],\n  \"ugrave\":0xf9, \"ugrave;\":0xf9,\n  \"uharl;\":0x21bf, \"uharr;\":0x21be,\n  \"uhblk;\":0x2580, \"ulcorn;\":0x231c,\n  \"ulcorner;\":0x231c, \"ulcrop;\":0x230f,\n  \"ultri;\":0x25f8, \"umacr;\":0x16b,\n  \"uml\":0xa8, \"uml;\":0xa8,\n  \"uogon;\":0x173, \"uopf;\":[0xd835,0xdd66],\n  \"uparrow;\":0x2191, \"updownarrow;\":0x2195,\n  \"upharpoonleft;\":0x21bf, \"upharpoonright;\":0x21be,\n  \"uplus;\":0x228e, \"upsi;\":0x3c5,\n  \"upsih;\":0x3d2, \"upsilon;\":0x3c5,\n  \"upuparrows;\":0x21c8, \"urcorn;\":0x231d,\n  \"urcorner;\":0x231d, \"urcrop;\":0x230e,\n  \"uring;\":0x16f, \"urtri;\":0x25f9,\n  \"uscr;\":[0xd835,0xdcca], \"utdot;\":0x22f0,\n  \"utilde;\":0x169, \"utri;\":0x25b5,\n  \"utrif;\":0x25b4, \"uuarr;\":0x21c8,\n  \"uuml\":0xfc, \"uuml;\":0xfc,\n  \"uwangle;\":0x29a7, \"vArr;\":0x21d5,\n  \"vBar;\":0x2ae8, \"vBarv;\":0x2ae9,\n  \"vDash;\":0x22a8, \"vangrt;\":0x299c,\n  \"varepsilon;\":0x3f5, \"varkappa;\":0x3f0,\n  \"varnothing;\":0x2205, \"varphi;\":0x3d5,\n  \"varpi;\":0x3d6, \"varpropto;\":0x221d,\n  \"varr;\":0x2195, \"varrho;\":0x3f1,\n  \"varsigma;\":0x3c2, \"varsubsetneq;\":[0x228a,0xfe00],\n  \"varsubsetneqq;\":[0x2acb,0xfe00], \"varsupsetneq;\":[0x228b,0xfe00],\n  \"varsupsetneqq;\":[0x2acc,0xfe00], \"vartheta;\":0x3d1,\n  \"vartriangleleft;\":0x22b2, \"vartriangleright;\":0x22b3,\n  \"vcy;\":0x432, \"vdash;\":0x22a2,\n  \"vee;\":0x2228, \"veebar;\":0x22bb,\n  \"veeeq;\":0x225a, \"vellip;\":0x22ee,\n  \"verbar;\":0x7c, \"vert;\":0x7c,\n  \"vfr;\":[0xd835,0xdd33], \"vltri;\":0x22b2,\n  \"vnsub;\":[0x2282,0x20d2], \"vnsup;\":[0x2283,0x20d2],\n  \"vopf;\":[0xd835,0xdd67], \"vprop;\":0x221d,\n  \"vrtri;\":0x22b3, \"vscr;\":[0xd835,0xdccb],\n  \"vsubnE;\":[0x2acb,0xfe00], \"vsubne;\":[0x228a,0xfe00],\n  \"vsupnE;\":[0x2acc,0xfe00], \"vsupne;\":[0x228b,0xfe00],\n  \"vzigzag;\":0x299a, \"wcirc;\":0x175,\n  \"wedbar;\":0x2a5f, \"wedge;\":0x2227,\n  \"wedgeq;\":0x2259, \"weierp;\":0x2118,\n  \"wfr;\":[0xd835,0xdd34], \"wopf;\":[0xd835,0xdd68],\n  \"wp;\":0x2118, \"wr;\":0x2240,\n  \"wreath;\":0x2240, \"wscr;\":[0xd835,0xdccc],\n  \"xcap;\":0x22c2, \"xcirc;\":0x25ef,\n  \"xcup;\":0x22c3, \"xdtri;\":0x25bd,\n  \"xfr;\":[0xd835,0xdd35], \"xhArr;\":0x27fa,\n  \"xharr;\":0x27f7, \"xi;\":0x3be,\n  \"xlArr;\":0x27f8, \"xlarr;\":0x27f5,\n  \"xmap;\":0x27fc, \"xnis;\":0x22fb,\n  \"xodot;\":0x2a00, \"xopf;\":[0xd835,0xdd69],\n  \"xoplus;\":0x2a01, \"xotime;\":0x2a02,\n  \"xrArr;\":0x27f9, \"xrarr;\":0x27f6,\n  \"xscr;\":[0xd835,0xdccd], \"xsqcup;\":0x2a06,\n  \"xuplus;\":0x2a04, \"xutri;\":0x25b3,\n  \"xvee;\":0x22c1, \"xwedge;\":0x22c0,\n  \"yacute\":0xfd, \"yacute;\":0xfd,\n  \"yacy;\":0x44f, \"ycirc;\":0x177,\n  \"ycy;\":0x44b, \"yen\":0xa5,\n  \"yen;\":0xa5, \"yfr;\":[0xd835,0xdd36],\n  \"yicy;\":0x457, \"yopf;\":[0xd835,0xdd6a],\n  \"yscr;\":[0xd835,0xdcce], \"yucy;\":0x44e,\n  \"yuml\":0xff, \"yuml;\":0xff,\n  \"zacute;\":0x17a, \"zcaron;\":0x17e,\n  \"zcy;\":0x437, \"zdot;\":0x17c,\n  \"zeetrf;\":0x2128, \"zeta;\":0x3b6,\n  \"zfr;\":[0xd835,0xdd37], \"zhcy;\":0x436,\n  \"zigrarr;\":0x21dd, \"zopf;\":[0xd835,0xdd6b],\n  \"zscr;\":[0xd835,0xdccf], \"zwj;\":0x200d,\n  \"zwnj;\":0x200c,\n};\n/*\n * This regexp is generated with test/tools/update-entities.js\n * It will always match at least one character -- but note that there\n * are no entities whose names are a single character long.\n */\nvar NAMEDCHARREF = /(A(?:Elig;?|MP;?|acute;?|breve;|c(?:irc;?|y;)|fr;|grave;?|lpha;|macr;|nd;|o(?:gon;|pf;)|pplyFunction;|ring;?|s(?:cr;|sign;)|tilde;?|uml;?)|B(?:a(?:ckslash;|r(?:v;|wed;))|cy;|e(?:cause;|rnoullis;|ta;)|fr;|opf;|reve;|scr;|umpeq;)|C(?:Hcy;|OPY;?|a(?:cute;|p(?:;|italDifferentialD;)|yleys;)|c(?:aron;|edil;?|irc;|onint;)|dot;|e(?:dilla;|nterDot;)|fr;|hi;|ircle(?:Dot;|Minus;|Plus;|Times;)|lo(?:ckwiseContourIntegral;|seCurly(?:DoubleQuote;|Quote;))|o(?:lon(?:;|e;)|n(?:gruent;|int;|tourIntegral;)|p(?:f;|roduct;)|unterClockwiseContourIntegral;)|ross;|scr;|up(?:;|Cap;))|D(?:D(?:;|otrahd;)|Jcy;|Scy;|Zcy;|a(?:gger;|rr;|shv;)|c(?:aron;|y;)|el(?:;|ta;)|fr;|i(?:a(?:critical(?:Acute;|Do(?:t;|ubleAcute;)|Grave;|Tilde;)|mond;)|fferentialD;)|o(?:pf;|t(?:;|Dot;|Equal;)|uble(?:ContourIntegral;|Do(?:t;|wnArrow;)|L(?:eft(?:Arrow;|RightArrow;|Tee;)|ong(?:Left(?:Arrow;|RightArrow;)|RightArrow;))|Right(?:Arrow;|Tee;)|Up(?:Arrow;|DownArrow;)|VerticalBar;)|wn(?:Arrow(?:;|Bar;|UpArrow;)|Breve;|Left(?:RightVector;|TeeVector;|Vector(?:;|Bar;))|Right(?:TeeVector;|Vector(?:;|Bar;))|Tee(?:;|Arrow;)|arrow;))|s(?:cr;|trok;))|E(?:NG;|TH;?|acute;?|c(?:aron;|irc;?|y;)|dot;|fr;|grave;?|lement;|m(?:acr;|pty(?:SmallSquare;|VerySmallSquare;))|o(?:gon;|pf;)|psilon;|qu(?:al(?:;|Tilde;)|ilibrium;)|s(?:cr;|im;)|ta;|uml;?|x(?:ists;|ponentialE;))|F(?:cy;|fr;|illed(?:SmallSquare;|VerySmallSquare;)|o(?:pf;|rAll;|uriertrf;)|scr;)|G(?:Jcy;|T;?|amma(?:;|d;)|breve;|c(?:edil;|irc;|y;)|dot;|fr;|g;|opf;|reater(?:Equal(?:;|Less;)|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|scr;|t;)|H(?:ARDcy;|a(?:cek;|t;)|circ;|fr;|ilbertSpace;|o(?:pf;|rizontalLine;)|s(?:cr;|trok;)|ump(?:DownHump;|Equal;))|I(?:Ecy;|Jlig;|Ocy;|acute;?|c(?:irc;?|y;)|dot;|fr;|grave;?|m(?:;|a(?:cr;|ginaryI;)|plies;)|n(?:t(?:;|e(?:gral;|rsection;))|visible(?:Comma;|Times;))|o(?:gon;|pf;|ta;)|scr;|tilde;|u(?:kcy;|ml;?))|J(?:c(?:irc;|y;)|fr;|opf;|s(?:cr;|ercy;)|ukcy;)|K(?:Hcy;|Jcy;|appa;|c(?:edil;|y;)|fr;|opf;|scr;)|L(?:Jcy;|T;?|a(?:cute;|mbda;|ng;|placetrf;|rr;)|c(?:aron;|edil;|y;)|e(?:ft(?:A(?:ngleBracket;|rrow(?:;|Bar;|RightArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|Right(?:Arrow;|Vector;)|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;|rightarrow;)|ss(?:EqualGreater;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;))|fr;|l(?:;|eftarrow;)|midot;|o(?:ng(?:Left(?:Arrow;|RightArrow;)|RightArrow;|left(?:arrow;|rightarrow;)|rightarrow;)|pf;|wer(?:LeftArrow;|RightArrow;))|s(?:cr;|h;|trok;)|t;)|M(?:ap;|cy;|e(?:diumSpace;|llintrf;)|fr;|inusPlus;|opf;|scr;|u;)|N(?:Jcy;|acute;|c(?:aron;|edil;|y;)|e(?:gative(?:MediumSpace;|Thi(?:ckSpace;|nSpace;)|VeryThinSpace;)|sted(?:GreaterGreater;|LessLess;)|wLine;)|fr;|o(?:Break;|nBreakingSpace;|pf;|t(?:;|C(?:ongruent;|upCap;)|DoubleVerticalBar;|E(?:lement;|qual(?:;|Tilde;)|xists;)|Greater(?:;|Equal;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|Hump(?:DownHump;|Equal;)|Le(?:ftTriangle(?:;|Bar;|Equal;)|ss(?:;|Equal;|Greater;|Less;|SlantEqual;|Tilde;))|Nested(?:GreaterGreater;|LessLess;)|Precedes(?:;|Equal;|SlantEqual;)|R(?:everseElement;|ightTriangle(?:;|Bar;|Equal;))|S(?:quareSu(?:bset(?:;|Equal;)|perset(?:;|Equal;))|u(?:bset(?:;|Equal;)|cceeds(?:;|Equal;|SlantEqual;|Tilde;)|perset(?:;|Equal;)))|Tilde(?:;|Equal;|FullEqual;|Tilde;)|VerticalBar;))|scr;|tilde;?|u;)|O(?:Elig;|acute;?|c(?:irc;?|y;)|dblac;|fr;|grave;?|m(?:acr;|ega;|icron;)|opf;|penCurly(?:DoubleQuote;|Quote;)|r;|s(?:cr;|lash;?)|ti(?:lde;?|mes;)|uml;?|ver(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;))|P(?:artialD;|cy;|fr;|hi;|i;|lusMinus;|o(?:incareplane;|pf;)|r(?:;|ecedes(?:;|Equal;|SlantEqual;|Tilde;)|ime;|o(?:duct;|portion(?:;|al;)))|s(?:cr;|i;))|Q(?:UOT;?|fr;|opf;|scr;)|R(?:Barr;|EG;?|a(?:cute;|ng;|rr(?:;|tl;))|c(?:aron;|edil;|y;)|e(?:;|verse(?:E(?:lement;|quilibrium;)|UpEquilibrium;))|fr;|ho;|ight(?:A(?:ngleBracket;|rrow(?:;|Bar;|LeftArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;)|o(?:pf;|undImplies;)|rightarrow;|s(?:cr;|h;)|uleDelayed;)|S(?:H(?:CHcy;|cy;)|OFTcy;|acute;|c(?:;|aron;|edil;|irc;|y;)|fr;|hort(?:DownArrow;|LeftArrow;|RightArrow;|UpArrow;)|igma;|mallCircle;|opf;|q(?:rt;|uare(?:;|Intersection;|Su(?:bset(?:;|Equal;)|perset(?:;|Equal;))|Union;))|scr;|tar;|u(?:b(?:;|set(?:;|Equal;))|c(?:ceeds(?:;|Equal;|SlantEqual;|Tilde;)|hThat;)|m;|p(?:;|erset(?:;|Equal;)|set;)))|T(?:HORN;?|RADE;|S(?:Hcy;|cy;)|a(?:b;|u;)|c(?:aron;|edil;|y;)|fr;|h(?:e(?:refore;|ta;)|i(?:ckSpace;|nSpace;))|ilde(?:;|Equal;|FullEqual;|Tilde;)|opf;|ripleDot;|s(?:cr;|trok;))|U(?:a(?:cute;?|rr(?:;|ocir;))|br(?:cy;|eve;)|c(?:irc;?|y;)|dblac;|fr;|grave;?|macr;|n(?:der(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;)|ion(?:;|Plus;))|o(?:gon;|pf;)|p(?:Arrow(?:;|Bar;|DownArrow;)|DownArrow;|Equilibrium;|Tee(?:;|Arrow;)|arrow;|downarrow;|per(?:LeftArrow;|RightArrow;)|si(?:;|lon;))|ring;|scr;|tilde;|uml;?)|V(?:Dash;|bar;|cy;|dash(?:;|l;)|e(?:e;|r(?:bar;|t(?:;|ical(?:Bar;|Line;|Separator;|Tilde;))|yThinSpace;))|fr;|opf;|scr;|vdash;)|W(?:circ;|edge;|fr;|opf;|scr;)|X(?:fr;|i;|opf;|scr;)|Y(?:Acy;|Icy;|Ucy;|acute;?|c(?:irc;|y;)|fr;|opf;|scr;|uml;)|Z(?:Hcy;|acute;|c(?:aron;|y;)|dot;|e(?:roWidthSpace;|ta;)|fr;|opf;|scr;)|a(?:acute;?|breve;|c(?:;|E;|d;|irc;?|ute;?|y;)|elig;?|f(?:;|r;)|grave;?|l(?:e(?:fsym;|ph;)|pha;)|m(?:a(?:cr;|lg;)|p;?)|n(?:d(?:;|and;|d;|slope;|v;)|g(?:;|e;|le;|msd(?:;|a(?:a;|b;|c;|d;|e;|f;|g;|h;))|rt(?:;|vb(?:;|d;))|s(?:ph;|t;)|zarr;))|o(?:gon;|pf;)|p(?:;|E;|acir;|e;|id;|os;|prox(?:;|eq;))|ring;?|s(?:cr;|t;|ymp(?:;|eq;))|tilde;?|uml;?|w(?:conint;|int;))|b(?:Not;|a(?:ck(?:cong;|epsilon;|prime;|sim(?:;|eq;))|r(?:vee;|wed(?:;|ge;)))|brk(?:;|tbrk;)|c(?:ong;|y;)|dquo;|e(?:caus(?:;|e;)|mptyv;|psi;|rnou;|t(?:a;|h;|ween;))|fr;|ig(?:c(?:ap;|irc;|up;)|o(?:dot;|plus;|times;)|s(?:qcup;|tar;)|triangle(?:down;|up;)|uplus;|vee;|wedge;)|karow;|l(?:a(?:ck(?:lozenge;|square;|triangle(?:;|down;|left;|right;))|nk;)|k(?:1(?:2;|4;)|34;)|ock;)|n(?:e(?:;|quiv;)|ot;)|o(?:pf;|t(?:;|tom;)|wtie;|x(?:D(?:L;|R;|l;|r;)|H(?:;|D;|U;|d;|u;)|U(?:L;|R;|l;|r;)|V(?:;|H;|L;|R;|h;|l;|r;)|box;|d(?:L;|R;|l;|r;)|h(?:;|D;|U;|d;|u;)|minus;|plus;|times;|u(?:L;|R;|l;|r;)|v(?:;|H;|L;|R;|h;|l;|r;)))|prime;|r(?:eve;|vbar;?)|s(?:cr;|emi;|im(?:;|e;)|ol(?:;|b;|hsub;))|u(?:ll(?:;|et;)|mp(?:;|E;|e(?:;|q;))))|c(?:a(?:cute;|p(?:;|and;|brcup;|c(?:ap;|up;)|dot;|s;)|r(?:et;|on;))|c(?:a(?:ps;|ron;)|edil;?|irc;|ups(?:;|sm;))|dot;|e(?:dil;?|mptyv;|nt(?:;|erdot;|))|fr;|h(?:cy;|eck(?:;|mark;)|i;)|ir(?:;|E;|c(?:;|eq;|le(?:arrow(?:left;|right;)|d(?:R;|S;|ast;|circ;|dash;)))|e;|fnint;|mid;|scir;)|lubs(?:;|uit;)|o(?:lon(?:;|e(?:;|q;))|m(?:ma(?:;|t;)|p(?:;|fn;|le(?:ment;|xes;)))|n(?:g(?:;|dot;)|int;)|p(?:f;|rod;|y(?:;|sr;|)))|r(?:arr;|oss;)|s(?:cr;|u(?:b(?:;|e;)|p(?:;|e;)))|tdot;|u(?:darr(?:l;|r;)|e(?:pr;|sc;)|larr(?:;|p;)|p(?:;|brcap;|c(?:ap;|up;)|dot;|or;|s;)|r(?:arr(?:;|m;)|ly(?:eq(?:prec;|succ;)|vee;|wedge;)|ren;?|vearrow(?:left;|right;))|vee;|wed;)|w(?:conint;|int;)|ylcty;)|d(?:Arr;|Har;|a(?:gger;|leth;|rr;|sh(?:;|v;))|b(?:karow;|lac;)|c(?:aron;|y;)|d(?:;|a(?:gger;|rr;)|otseq;)|e(?:g;?|lta;|mptyv;)|f(?:isht;|r;)|har(?:l;|r;)|i(?:am(?:;|ond(?:;|suit;)|s;)|e;|gamma;|sin;|v(?:;|ide(?:;|ontimes;|)|onx;))|jcy;|lc(?:orn;|rop;)|o(?:llar;|pf;|t(?:;|eq(?:;|dot;)|minus;|plus;|square;)|ublebarwedge;|wn(?:arrow;|downarrows;|harpoon(?:left;|right;)))|r(?:bkarow;|c(?:orn;|rop;))|s(?:c(?:r;|y;)|ol;|trok;)|t(?:dot;|ri(?:;|f;))|u(?:arr;|har;)|wangle;|z(?:cy;|igrarr;))|e(?:D(?:Dot;|ot;)|a(?:cute;?|ster;)|c(?:aron;|ir(?:;|c;?)|olon;|y;)|dot;|e;|f(?:Dot;|r;)|g(?:;|rave;?|s(?:;|dot;))|l(?:;|inters;|l;|s(?:;|dot;))|m(?:acr;|pty(?:;|set;|v;)|sp(?:1(?:3;|4;)|;))|n(?:g;|sp;)|o(?:gon;|pf;)|p(?:ar(?:;|sl;)|lus;|si(?:;|lon;|v;))|q(?:c(?:irc;|olon;)|s(?:im;|lant(?:gtr;|less;))|u(?:als;|est;|iv(?:;|DD;))|vparsl;)|r(?:Dot;|arr;)|s(?:cr;|dot;|im;)|t(?:a;|h;?)|u(?:ml;?|ro;)|x(?:cl;|ist;|p(?:ectation;|onentiale;)))|f(?:allingdotseq;|cy;|emale;|f(?:ilig;|l(?:ig;|lig;)|r;)|ilig;|jlig;|l(?:at;|lig;|tns;)|nof;|o(?:pf;|r(?:all;|k(?:;|v;)))|partint;|r(?:a(?:c(?:1(?:2;?|3;|4;?|5;|6;|8;)|2(?:3;|5;)|3(?:4;?|5;|8;)|45;|5(?:6;|8;)|78;)|sl;)|own;)|scr;)|g(?:E(?:;|l;)|a(?:cute;|mma(?:;|d;)|p;)|breve;|c(?:irc;|y;)|dot;|e(?:;|l;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|l;))|l(?:;|es;)))|fr;|g(?:;|g;)|imel;|jcy;|l(?:;|E;|a;|j;)|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|opf;|rave;|s(?:cr;|im(?:;|e;|l;))|t(?:;|c(?:c;|ir;)|dot;|lPar;|quest;|r(?:a(?:pprox;|rr;)|dot;|eq(?:less;|qless;)|less;|sim;)|)|v(?:ertneqq;|nE;))|h(?:Arr;|a(?:irsp;|lf;|milt;|r(?:dcy;|r(?:;|cir;|w;)))|bar;|circ;|e(?:arts(?:;|uit;)|llip;|rcon;)|fr;|ks(?:earow;|warow;)|o(?:arr;|mtht;|ok(?:leftarrow;|rightarrow;)|pf;|rbar;)|s(?:cr;|lash;|trok;)|y(?:bull;|phen;))|i(?:acute;?|c(?:;|irc;?|y;)|e(?:cy;|xcl;?)|f(?:f;|r;)|grave;?|i(?:;|i(?:int;|nt;)|nfin;|ota;)|jlig;|m(?:a(?:cr;|g(?:e;|line;|part;)|th;)|of;|ped;)|n(?:;|care;|fin(?:;|tie;)|odot;|t(?:;|cal;|e(?:gers;|rcal;)|larhk;|prod;))|o(?:cy;|gon;|pf;|ta;)|prod;|quest;?|s(?:cr;|in(?:;|E;|dot;|s(?:;|v;)|v;))|t(?:;|ilde;)|u(?:kcy;|ml;?))|j(?:c(?:irc;|y;)|fr;|math;|opf;|s(?:cr;|ercy;)|ukcy;)|k(?:appa(?:;|v;)|c(?:edil;|y;)|fr;|green;|hcy;|jcy;|opf;|scr;)|l(?:A(?:arr;|rr;|tail;)|Barr;|E(?:;|g;)|Har;|a(?:cute;|emptyv;|gran;|mbda;|ng(?:;|d;|le;)|p;|quo;?|rr(?:;|b(?:;|fs;)|fs;|hk;|lp;|pl;|sim;|tl;)|t(?:;|ail;|e(?:;|s;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|quo(?:;|r;)|r(?:dhar;|ushar;)|sh;)|e(?:;|ft(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|leftarrows;|right(?:arrow(?:;|s;)|harpoons;|squigarrow;)|threetimes;)|g;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|r;))|g(?:;|es;)|s(?:approx;|dot;|eq(?:gtr;|qgtr;)|gtr;|sim;)))|f(?:isht;|loor;|r;)|g(?:;|E;)|h(?:ar(?:d;|u(?:;|l;))|blk;)|jcy;|l(?:;|arr;|corner;|hard;|tri;)|m(?:idot;|oust(?:;|ache;))|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|o(?:a(?:ng;|rr;)|brk;|ng(?:left(?:arrow;|rightarrow;)|mapsto;|rightarrow;)|oparrow(?:left;|right;)|p(?:ar;|f;|lus;)|times;|w(?:ast;|bar;)|z(?:;|enge;|f;))|par(?:;|lt;)|r(?:arr;|corner;|har(?:;|d;)|m;|tri;)|s(?:aquo;|cr;|h;|im(?:;|e;|g;)|q(?:b;|uo(?:;|r;))|trok;)|t(?:;|c(?:c;|ir;)|dot;|hree;|imes;|larr;|quest;|r(?:Par;|i(?:;|e;|f;))|)|ur(?:dshar;|uhar;)|v(?:ertneqq;|nE;))|m(?:DDot;|a(?:cr;?|l(?:e;|t(?:;|ese;))|p(?:;|sto(?:;|down;|left;|up;))|rker;)|c(?:omma;|y;)|dash;|easuredangle;|fr;|ho;|i(?:cro;?|d(?:;|ast;|cir;|dot;?)|nus(?:;|b;|d(?:;|u;)))|l(?:cp;|dr;)|nplus;|o(?:dels;|pf;)|p;|s(?:cr;|tpos;)|u(?:;|ltimap;|map;))|n(?:G(?:g;|t(?:;|v;))|L(?:eft(?:arrow;|rightarrow;)|l;|t(?:;|v;))|Rightarrow;|V(?:Dash;|dash;)|a(?:bla;|cute;|ng;|p(?:;|E;|id;|os;|prox;)|tur(?:;|al(?:;|s;)))|b(?:sp;?|ump(?:;|e;))|c(?:a(?:p;|ron;)|edil;|ong(?:;|dot;)|up;|y;)|dash;|e(?:;|Arr;|ar(?:hk;|r(?:;|ow;))|dot;|quiv;|s(?:ear;|im;)|xist(?:;|s;))|fr;|g(?:E;|e(?:;|q(?:;|q;|slant;)|s;)|sim;|t(?:;|r;))|h(?:Arr;|arr;|par;)|i(?:;|s(?:;|d;)|v;)|jcy;|l(?:Arr;|E;|arr;|dr;|e(?:;|ft(?:arrow;|rightarrow;)|q(?:;|q;|slant;)|s(?:;|s;))|sim;|t(?:;|ri(?:;|e;)))|mid;|o(?:pf;|t(?:;|in(?:;|E;|dot;|v(?:a;|b;|c;))|ni(?:;|v(?:a;|b;|c;))|))|p(?:ar(?:;|allel;|sl;|t;)|olint;|r(?:;|cue;|e(?:;|c(?:;|eq;))))|r(?:Arr;|arr(?:;|c;|w;)|ightarrow;|tri(?:;|e;))|s(?:c(?:;|cue;|e;|r;)|hort(?:mid;|parallel;)|im(?:;|e(?:;|q;))|mid;|par;|qsu(?:be;|pe;)|u(?:b(?:;|E;|e;|set(?:;|eq(?:;|q;)))|cc(?:;|eq;)|p(?:;|E;|e;|set(?:;|eq(?:;|q;)))))|t(?:gl;|ilde;?|lg;|riangle(?:left(?:;|eq;)|right(?:;|eq;)))|u(?:;|m(?:;|ero;|sp;))|v(?:Dash;|Harr;|ap;|dash;|g(?:e;|t;)|infin;|l(?:Arr;|e;|t(?:;|rie;))|r(?:Arr;|trie;)|sim;)|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|near;))|o(?:S;|a(?:cute;?|st;)|c(?:ir(?:;|c;?)|y;)|d(?:ash;|blac;|iv;|ot;|sold;)|elig;|f(?:cir;|r;)|g(?:on;|rave;?|t;)|h(?:bar;|m;)|int;|l(?:arr;|c(?:ir;|ross;)|ine;|t;)|m(?:acr;|ega;|i(?:cron;|d;|nus;))|opf;|p(?:ar;|erp;|lus;)|r(?:;|arr;|d(?:;|er(?:;|of;)|f;?|m;?)|igof;|or;|slope;|v;)|s(?:cr;|lash;?|ol;)|ti(?:lde;?|mes(?:;|as;))|uml;?|vbar;)|p(?:ar(?:;|a(?:;|llel;|)|s(?:im;|l;)|t;)|cy;|er(?:cnt;|iod;|mil;|p;|tenk;)|fr;|h(?:i(?:;|v;)|mmat;|one;)|i(?:;|tchfork;|v;)|l(?:an(?:ck(?:;|h;)|kv;)|us(?:;|acir;|b;|cir;|d(?:o;|u;)|e;|mn;?|sim;|two;))|m;|o(?:intint;|pf;|und;?)|r(?:;|E;|ap;|cue;|e(?:;|c(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;))|ime(?:;|s;)|n(?:E;|ap;|sim;)|o(?:d;|f(?:alar;|line;|surf;)|p(?:;|to;))|sim;|urel;)|s(?:cr;|i;)|uncsp;)|q(?:fr;|int;|opf;|prime;|scr;|u(?:at(?:ernions;|int;)|est(?:;|eq;)|ot;?))|r(?:A(?:arr;|rr;|tail;)|Barr;|Har;|a(?:c(?:e;|ute;)|dic;|emptyv;|ng(?:;|d;|e;|le;)|quo;?|rr(?:;|ap;|b(?:;|fs;)|c;|fs;|hk;|lp;|pl;|sim;|tl;|w;)|t(?:ail;|io(?:;|nals;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|ldhar;|quo(?:;|r;)|sh;)|e(?:al(?:;|ine;|part;|s;)|ct;|g;?)|f(?:isht;|loor;|r;)|h(?:ar(?:d;|u(?:;|l;))|o(?:;|v;))|i(?:ght(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|left(?:arrows;|harpoons;)|rightarrows;|squigarrow;|threetimes;)|ng;|singdotseq;)|l(?:arr;|har;|m;)|moust(?:;|ache;)|nmid;|o(?:a(?:ng;|rr;)|brk;|p(?:ar;|f;|lus;)|times;)|p(?:ar(?:;|gt;)|polint;)|rarr;|s(?:aquo;|cr;|h;|q(?:b;|uo(?:;|r;)))|t(?:hree;|imes;|ri(?:;|e;|f;|ltri;))|uluhar;|x;)|s(?:acute;|bquo;|c(?:;|E;|a(?:p;|ron;)|cue;|e(?:;|dil;)|irc;|n(?:E;|ap;|sim;)|polint;|sim;|y;)|dot(?:;|b;|e;)|e(?:Arr;|ar(?:hk;|r(?:;|ow;))|ct;?|mi;|swar;|tm(?:inus;|n;)|xt;)|fr(?:;|own;)|h(?:arp;|c(?:hcy;|y;)|ort(?:mid;|parallel;)|y;?)|i(?:gma(?:;|f;|v;)|m(?:;|dot;|e(?:;|q;)|g(?:;|E;)|l(?:;|E;)|ne;|plus;|rarr;))|larr;|m(?:a(?:llsetminus;|shp;)|eparsl;|i(?:d;|le;)|t(?:;|e(?:;|s;)))|o(?:ftcy;|l(?:;|b(?:;|ar;))|pf;)|pa(?:des(?:;|uit;)|r;)|q(?:c(?:ap(?:;|s;)|up(?:;|s;))|su(?:b(?:;|e;|set(?:;|eq;))|p(?:;|e;|set(?:;|eq;)))|u(?:;|ar(?:e;|f;)|f;))|rarr;|s(?:cr;|etmn;|mile;|tarf;)|t(?:ar(?:;|f;)|r(?:aight(?:epsilon;|phi;)|ns;))|u(?:b(?:;|E;|dot;|e(?:;|dot;)|mult;|n(?:E;|e;)|plus;|rarr;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;)))|cc(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;)|m;|ng;|p(?:1;?|2;?|3;?|;|E;|d(?:ot;|sub;)|e(?:;|dot;)|hs(?:ol;|ub;)|larr;|mult;|n(?:E;|e;)|plus;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;))))|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|nwar;)|zlig;?)|t(?:a(?:rget;|u;)|brk;|c(?:aron;|edil;|y;)|dot;|elrec;|fr;|h(?:e(?:re(?:4;|fore;)|ta(?:;|sym;|v;))|i(?:ck(?:approx;|sim;)|nsp;)|k(?:ap;|sim;)|orn;?)|i(?:lde;|mes(?:;|b(?:;|ar;)|d;|)|nt;)|o(?:ea;|p(?:;|bot;|cir;|f(?:;|ork;))|sa;)|prime;|r(?:ade;|i(?:angle(?:;|down;|left(?:;|eq;)|q;|right(?:;|eq;))|dot;|e;|minus;|plus;|sb;|time;)|pezium;)|s(?:c(?:r;|y;)|hcy;|trok;)|w(?:ixt;|ohead(?:leftarrow;|rightarrow;)))|u(?:Arr;|Har;|a(?:cute;?|rr;)|br(?:cy;|eve;)|c(?:irc;?|y;)|d(?:arr;|blac;|har;)|f(?:isht;|r;)|grave;?|h(?:ar(?:l;|r;)|blk;)|l(?:c(?:orn(?:;|er;)|rop;)|tri;)|m(?:acr;|l;?)|o(?:gon;|pf;)|p(?:arrow;|downarrow;|harpoon(?:left;|right;)|lus;|si(?:;|h;|lon;)|uparrows;)|r(?:c(?:orn(?:;|er;)|rop;)|ing;|tri;)|scr;|t(?:dot;|ilde;|ri(?:;|f;))|u(?:arr;|ml;?)|wangle;)|v(?:Arr;|Bar(?:;|v;)|Dash;|a(?:ngrt;|r(?:epsilon;|kappa;|nothing;|p(?:hi;|i;|ropto;)|r(?:;|ho;)|s(?:igma;|u(?:bsetneq(?:;|q;)|psetneq(?:;|q;)))|t(?:heta;|riangle(?:left;|right;))))|cy;|dash;|e(?:e(?:;|bar;|eq;)|llip;|r(?:bar;|t;))|fr;|ltri;|nsu(?:b;|p;)|opf;|prop;|rtri;|s(?:cr;|u(?:bn(?:E;|e;)|pn(?:E;|e;)))|zigzag;)|w(?:circ;|e(?:d(?:bar;|ge(?:;|q;))|ierp;)|fr;|opf;|p;|r(?:;|eath;)|scr;)|x(?:c(?:ap;|irc;|up;)|dtri;|fr;|h(?:Arr;|arr;)|i;|l(?:Arr;|arr;)|map;|nis;|o(?:dot;|p(?:f;|lus;)|time;)|r(?:Arr;|arr;)|s(?:cr;|qcup;)|u(?:plus;|tri;)|vee;|wedge;)|y(?:ac(?:ute;?|y;)|c(?:irc;|y;)|en;?|fr;|icy;|opf;|scr;|u(?:cy;|ml;?))|z(?:acute;|c(?:aron;|y;)|dot;|e(?:etrf;|ta;)|fr;|hcy;|igrarr;|opf;|scr;|w(?:j;|nj;)))|[\\s\\S]/g;\n\nvar NAMEDCHARREF_MAXLEN = 32;\n\n// Regular expression constants used by the tokenizer and parser\n\n// Note that \\r is included in all of these regexps because it will need\n// to be converted to LF by the scanChars() function.\nvar DBLQUOTEATTRVAL = /[^\\r\"&\\u0000]+/g;\nvar SINGLEQUOTEATTRVAL = /[^\\r'&\\u0000]+/g;\nvar UNQUOTEDATTRVAL = /[^\\r\\t\\n\\f &>\\u0000]+/g;\nvar TAGNAME = /[^\\r\\t\\n\\f \\/>A-Z\\u0000]+/g;\nvar ATTRNAME = /[^\\r\\t\\n\\f \\/=>A-Z\\u0000]+/g;\n\nvar CDATATEXT = /[^\\]\\r\\u0000\\uffff]*/g;\nvar DATATEXT = /[^&<\\r\\u0000\\uffff]*/g;\nvar RAWTEXT = /[^<\\r\\u0000\\uffff]*/g;\nvar PLAINTEXT = /[^\\r\\u0000\\uffff]*/g;\n// Since we don't have the 'sticky tag', add '|.' to the end of SIMPLETAG\n// and SIMPLEATTR so that we are guaranteed to always match.  This prevents\n// us from scanning past the lastIndex set. (Note that the desired matches\n// are always greater than 1 char long, so longest-match will ensure that .\n// is not matched unless the desired match fails.)\nvar SIMPLETAG = /(?:(\\/)?([a-z]+)>)|[\\s\\S]/g;\nvar SIMPLEATTR = /(?:([-a-z]+)[ \\t\\n\\f]*=[ \\t\\n\\f]*('[^'&\\r\\u0000]*'|\"[^\"&\\r\\u0000]*\"|[^\\t\\n\\r\\f \"&'\\u0000>][^&> \\t\\n\\r\\f\\u0000]*[ \\t\\n\\f]))|[\\s\\S]/g;\n\nvar NONWS = /[^\\x09\\x0A\\x0C\\x0D\\x20]/;\nvar ALLNONWS = /[^\\x09\\x0A\\x0C\\x0D\\x20]/g; // like above, with g flag\nvar NONWSNONNUL = /[^\\x00\\x09\\x0A\\x0C\\x0D\\x20]/; // don't allow NUL either\nvar LEADINGWS = /^[\\x09\\x0A\\x0C\\x0D\\x20]+/;\nvar NULCHARS = /\\x00/g;\n\n/***\n * These are utility functions that don't use any of the parser's\n * internal state.\n */\nfunction buf2str(buf) {\n  var CHUNKSIZE=16384;\n  if (buf.length < CHUNKSIZE) {\n    return String.fromCharCode.apply(String, buf);\n  }\n  // special case for large strings, to avoid busting the stack.\n  var result = '';\n  for (var i = 0; i < buf.length; i += CHUNKSIZE) {\n    result += String.fromCharCode.apply(String, buf.slice(i, i+CHUNKSIZE));\n  }\n  return result;\n}\n\nfunction str2buf(s) {\n  var result = [];\n  for (var i=0; i<s.length; i++) {\n    result[i] = s.charCodeAt(i);\n  }\n  return result;\n}\n\n// Determine whether the element is a member of the set.\n// The set is an object that maps namespaces to objects. The objects\n// then map local tagnames to the value true if that tag is part of the set\nfunction isA(elt, set) {\n  if (typeof set === 'string') {\n    // convenience case for testing a particular HTML element\n    return elt.namespaceURI === NAMESPACE.HTML &&\n      elt.localName === set;\n  }\n  var tagnames = set[elt.namespaceURI];\n  return tagnames && tagnames[elt.localName];\n}\n\nfunction isMathmlTextIntegrationPoint(n) {\n  return isA(n, mathmlTextIntegrationPointSet);\n}\n\nfunction isHTMLIntegrationPoint(n) {\n  if (isA(n, htmlIntegrationPointSet)) return true;\n  if (n.namespaceURI === NAMESPACE.MATHML &&\n    n.localName === \"annotation-xml\") {\n    var encoding = n.getAttribute(\"encoding\");\n    if (encoding) encoding = encoding.toLowerCase();\n    if (encoding === \"text/html\" ||\n      encoding === \"application/xhtml+xml\")\n      return true;\n  }\n  return false;\n}\n\nfunction adjustSVGTagName(name) {\n  if (name in svgTagNameAdjustments)\n    return svgTagNameAdjustments[name];\n  else\n    return name;\n}\n\nfunction adjustSVGAttributes(attrs) {\n  for(var i = 0, n = attrs.length; i < n; i++) {\n    if (attrs[i][0] in svgAttrAdjustments) {\n      attrs[i][0] = svgAttrAdjustments[attrs[i][0]];\n    }\n  }\n}\n\nfunction adjustMathMLAttributes(attrs) {\n  for(var i = 0, n = attrs.length; i < n; i++) {\n    if (attrs[i][0] === \"definitionurl\") {\n      attrs[i][0] = \"definitionURL\";\n      break;\n    }\n  }\n}\n\nfunction adjustForeignAttributes(attrs) {\n  for(var i = 0, n = attrs.length; i < n; i++) {\n    if (attrs[i][0] in foreignAttributes) {\n      // Attributes with namespaces get a 3rd element:\n      // [Qname, value, namespace]\n      attrs[i].push(foreignAttributes[attrs[i][0]]);\n    }\n  }\n}\n\n// For each attribute in attrs, if elt doesn't have an attribute\n// by that name, add the attribute to elt\n// XXX: I'm ignoring namespaces for now\nfunction transferAttributes(attrs, elt) {\n  for(var i = 0, n = attrs.length; i < n; i++) {\n    var name = attrs[i][0], value = attrs[i][1];\n    if (elt.hasAttribute(name)) continue;\n    elt._setAttribute(name, value);\n  }\n}\n\n/***\n * The ElementStack class\n */\nHTMLParser.ElementStack = function ElementStack() {\n  this.elements = [];\n  this.top = null; // stack.top is the \"current node\" in the spec\n};\n\n/*\n// This is for debugging only\nHTMLParser.ElementStack.prototype.toString = function(e) {\n  return \"STACK: \" +\n  this.elements.map(function(e) {return e.localName;}).join(\"-\");\n}\n*/\n\nHTMLParser.ElementStack.prototype.push = function(e) {\n  this.elements.push(e);\n  this.top = e;\n};\n\nHTMLParser.ElementStack.prototype.pop = function(e) {\n  this.elements.pop();\n  this.top = this.elements[this.elements.length-1];\n};\n\n// Pop elements off the stack up to and including the first\n// element with the specified (HTML) tagname\nHTMLParser.ElementStack.prototype.popTag = function(tag) {\n  for(var i = this.elements.length-1; i > 0; i--) {\n    var e = this.elements[i];\n    if (isA(e, tag)) break;\n  }\n  this.elements.length = i;\n  this.top = this.elements[i-1];\n};\n\n// Pop elements off the stack up to and including the first\n// element that is an instance of the specified type\nHTMLParser.ElementStack.prototype.popElementType = function(type) {\n  for(var i = this.elements.length-1; i > 0; i--) {\n    if (this.elements[i] instanceof type) break;\n  }\n  this.elements.length = i;\n  this.top = this.elements[i-1];\n};\n\n// Pop elements off the stack up to and including the element e.\n// Note that this is very different from removeElement()\n// This requires that e is on the stack.\nHTMLParser.ElementStack.prototype.popElement = function(e) {\n  for(var i = this.elements.length-1; i > 0; i--) {\n    if (this.elements[i] === e) break;\n  }\n  this.elements.length = i;\n  this.top = this.elements[i-1];\n};\n\n// Remove a specific element from the stack.\n// Do nothing if the element is not on the stack\nHTMLParser.ElementStack.prototype.removeElement = function(e) {\n  if (this.top === e) this.pop();\n  else {\n    var idx = this.elements.lastIndexOf(e);\n    if (idx !== -1)\n      this.elements.splice(idx, 1);\n  }\n};\n\nHTMLParser.ElementStack.prototype.clearToContext = function(set) {\n  // Note that we don't loop to 0. Never pop the <html> elt off.\n  for(var i = this.elements.length-1; i > 0; i--) {\n    if (isA(this.elements[i], set)) break;\n  }\n  this.elements.length = i+1;\n  this.top = this.elements[i];\n};\n\nHTMLParser.ElementStack.prototype.contains = function(tag) {\n  return this.inSpecificScope(tag, Object.create(null));\n};\n\nHTMLParser.ElementStack.prototype.inSpecificScope = function(tag, set) {\n  for(var i = this.elements.length-1; i >= 0; i--) {\n    var elt = this.elements[i];\n    if (isA(elt, tag)) return true;\n    if (isA(elt, set)) return false;\n  }\n  return false;\n};\n\n// Like the above, but for a specific element, not a tagname\nHTMLParser.ElementStack.prototype.elementInSpecificScope = function(target, set) {\n  for(var i = this.elements.length-1; i >= 0; i--) {\n    var elt = this.elements[i];\n    if (elt === target) return true;\n    if (isA(elt, set)) return false;\n  }\n  return false;\n};\n\n// Like the above, but for an element interface, not a tagname\nHTMLParser.ElementStack.prototype.elementTypeInSpecificScope = function(target, set) {\n  for(var i = this.elements.length-1; i >= 0; i--) {\n    var elt = this.elements[i];\n    if (elt instanceof target) return true;\n    if (isA(elt, set)) return false;\n  }\n  return false;\n};\n\nHTMLParser.ElementStack.prototype.inScope = function(tag) {\n  return this.inSpecificScope(tag, inScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.elementInScope = function(e) {\n  return this.elementInSpecificScope(e, inScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.elementTypeInScope = function(type) {\n  return this.elementTypeInSpecificScope(type, inScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inButtonScope = function(tag) {\n  return this.inSpecificScope(tag, inButtonScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inListItemScope = function(tag) {\n  return this.inSpecificScope(tag, inListItemScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inTableScope = function(tag) {\n  return this.inSpecificScope(tag, inTableScopeSet);\n};\n\nHTMLParser.ElementStack.prototype.inSelectScope = function(tag) {\n  // Can't implement this one with inSpecificScope, since it involves\n  // a set defined by inverting another set. So implement manually.\n  for(var i = this.elements.length-1; i >= 0; i--) {\n    var elt = this.elements[i];\n    if (elt.namespaceURI !== NAMESPACE.HTML) return false;\n    var localname = elt.localName;\n    if (localname === tag) return true;\n    if (localname !== \"optgroup\" && localname !== \"option\")\n      return false;\n  }\n  return false;\n};\n\nHTMLParser.ElementStack.prototype.generateImpliedEndTags = function(butnot, thorough) {\n  var endTagSet = thorough ? thoroughImpliedEndTagsSet : impliedEndTagsSet;\n  for(var i = this.elements.length-1; i >= 0; i--) {\n    var e = this.elements[i];\n    if (butnot && isA(e, butnot)) break;\n    if (!isA(this.elements[i], endTagSet)) break;\n  }\n\n  this.elements.length = i+1;\n  this.top = this.elements[i];\n};\n\n/***\n * The ActiveFormattingElements class\n */\nHTMLParser.ActiveFormattingElements = function AFE() {\n  this.list = []; // elements\n  this.attrs = []; // attribute tokens for cloning\n};\n\nHTMLParser.ActiveFormattingElements.prototype.MARKER = { localName: \"|\" };\n\n/*\n// For debugging\nHTMLParser.ActiveFormattingElements.prototype.toString = function() {\n  return \"AFE: \" +\n  this.list.map(function(e) { return e.localName; }).join(\"-\");\n}\n*/\n\nHTMLParser.ActiveFormattingElements.prototype.insertMarker = function() {\n  this.list.push(this.MARKER);\n  this.attrs.push(this.MARKER);\n};\n\nHTMLParser.ActiveFormattingElements.prototype.push = function(elt, attrs) {\n  // Scan backwards: if there are already 3 copies of this element\n  // before we encounter a marker, then drop the last one\n  var count = 0;\n  for(var i = this.list.length-1; i >= 0; i--) {\n    if (this.list[i] === this.MARKER) break;\n    // equal() is defined below\n    if (equal(elt, this.list[i], this.attrs[i])) {\n      count++;\n      if (count === 3) {\n        this.list.splice(i, 1);\n        this.attrs.splice(i, 1);\n        break;\n      }\n    }\n  }\n\n\n  // Now push the element onto the list\n  this.list.push(elt);\n\n  // Copy the attributes and push those on, too\n  var attrcopy = [];\n  for(var ii = 0; ii < attrs.length; ii++) {\n    attrcopy[ii] = attrs[ii];\n  }\n\n  this.attrs.push(attrcopy);\n\n  // This function defines equality of two elements for the purposes\n  // of the AFE list.  Note that it compares the new elements\n  // attributes to the saved array of attributes associated with\n  // the old element because a script could have changed the\n  // old element's set of attributes\n  function equal(newelt, oldelt, oldattrs) {\n    if (newelt.localName !== oldelt.localName) return false;\n    if (newelt._numattrs !== oldattrs.length) return false;\n    for(var i = 0, n = oldattrs.length; i < n; i++) {\n      var oldname = oldattrs[i][0];\n      var oldval = oldattrs[i][1];\n      if (!newelt.hasAttribute(oldname)) return false;\n      if (newelt.getAttribute(oldname) !== oldval) return false;\n    }\n    return true;\n  }\n};\n\nHTMLParser.ActiveFormattingElements.prototype.clearToMarker = function() {\n  for(var i = this.list.length-1; i >= 0; i--) {\n    if (this.list[i] === this.MARKER) break;\n  }\n  if (i < 0) i = 0;\n  this.list.length = i;\n  this.attrs.length = i;\n};\n\n// Find and return the last element with the specified tag between the\n// end of the list and the last marker on the list.\n// Used when parsing <a> in_body_mode()\nHTMLParser.ActiveFormattingElements.prototype.findElementByTag = function(tag) {\n  for(var i = this.list.length-1; i >= 0; i--) {\n    var elt = this.list[i];\n    if (elt === this.MARKER) break;\n    if (elt.localName === tag) return elt;\n  }\n  return null;\n};\n\nHTMLParser.ActiveFormattingElements.prototype.indexOf = function(e) {\n  return this.list.lastIndexOf(e);\n};\n\n// Find the element e in the list and remove it\n// Used when parsing <a> in_body()\nHTMLParser.ActiveFormattingElements.prototype.remove = function(e) {\n  var idx = this.list.lastIndexOf(e);\n  if (idx !== -1) {\n    this.list.splice(idx, 1);\n    this.attrs.splice(idx, 1);\n  }\n};\n\n// Find element a in the list and replace it with element b\n// XXX: Do I need to handle attributes here?\nHTMLParser.ActiveFormattingElements.prototype.replace = function(a, b, attrs) {\n  var idx = this.list.lastIndexOf(a);\n  if (idx !== -1) {\n    this.list[idx] = b;\n    this.attrs[idx] = attrs;\n  }\n};\n\n// Find a in the list and insert b after it\n// This is only used for insert a bookmark object, so the\n// attrs array doesn't really matter\nHTMLParser.ActiveFormattingElements.prototype.insertAfter = function(a,b) {\n  var idx = this.list.lastIndexOf(a);\n  if (idx !== -1) {\n    this.list.splice(idx, 0, b);\n    this.attrs.splice(idx, 0, b);\n  }\n};\n\n\n\n\n/***\n * This is the parser factory function. It is the return value of\n * the outer closure that it is defined within.  Most of the parser\n * implementation details are inside this function.\n */\nfunction HTMLParser(address, fragmentContext, options) {\n  /***\n   * These are the parser's state variables\n   */\n  // Scanner state\n  var chars = null;\n  var numchars = 0; // Length of chars\n  var nextchar = 0; // Index of next char\n  var input_complete = false; // Becomes true when end() called.\n  var scanner_skip_newline = false; // If previous char was CR\n  var reentrant_invocations = 0;\n  var saved_scanner_state = [];\n  var leftovers = \"\";\n  var first_batch = true;\n  var paused = 0; // Becomes non-zero while loading scripts\n\n\n  // Tokenizer state\n  var tokenizer = data_state; // Current tokenizer state\n  var return_state;\n  var character_reference_code;\n  var tagnamebuf = \"\";\n  var lasttagname = \"\"; // holds the target end tag for text states\n  var tempbuf = [];\n  var attrnamebuf = \"\";\n  var attrvaluebuf = \"\";\n  var commentbuf = [];\n  var doctypenamebuf = [];\n  var doctypepublicbuf = [];\n  var doctypesystembuf = [];\n  var attributes = [];\n  var is_end_tag = false;\n\n  // Tree builder state\n  var parser = initial_mode; // Current insertion mode\n  var originalInsertionMode = null; // A saved insertion mode\n  var templateInsertionModes = []; // Stack of template insertion modes.\n  var stack = new HTMLParser.ElementStack(); // Stack of open elements\n  var afe = new HTMLParser.ActiveFormattingElements(); // mis-nested tags\n  var fragment = (fragmentContext!==undefined); // For innerHTML, etc.\n  var head_element_pointer = null;\n  var form_element_pointer = null;\n  var scripting_enabled = true;\n  if (fragmentContext) {\n\tscripting_enabled = fragmentContext.ownerDocument._scripting_enabled;\n  }\n  if (options && options.scripting_enabled === false)\n    scripting_enabled = false;\n  var frameset_ok = true;\n  var force_quirks = false;\n  var pending_table_text;\n  var text_integration_mode; // XXX a spec bug workaround?\n\n  // A single run of characters, buffered up to be sent to\n  // the parser as a single string.\n  var textrun = [];\n  var textIncludesNUL = false;\n  var ignore_linefeed = false;\n\n  /***\n   * This is the parser object that will be the return value of this\n   * factory function, which is some 5000 lines below.\n   * Note that the variable \"parser\" is the current state of the\n   * parser's state machine.  This variable \"htmlparser\" is the\n   * return value and defines the public API of the parser\n   */\n  var htmlparser = {\n    document: function() {\n      return doc;\n    },\n\n    // Convenience function for internal use. Can only be called once,\n    // as it removes the nodes from `doc` to add them to fragment.\n    _asDocumentFragment: function() {\n      var frag = doc.createDocumentFragment();\n      var root = doc.firstChild;\n      while(root.hasChildNodes()) {\n        frag.appendChild(root.firstChild);\n      }\n      return frag;\n    },\n\n    // Internal function used from HTMLScriptElement to pause the\n    // parser while a script is being loaded from the network\n    pause: function() {\n      // print(\"pausing parser\");\n      paused++;\n    },\n\n    // Called when a script finishes loading\n    resume: function() {\n      // print(\"resuming parser\");\n      paused--;\n      // XXX: added this to force a resumption.\n      // Is this the right thing to do?\n      this.parse(\"\");\n    },\n\n    // Parse the HTML text s.\n    // The second argument should be true if there is no more\n    // text to be parsed, and should be false or omitted otherwise.\n    // The second argument must not be set for recursive invocations\n    // from document.write()\n    parse: function(s, end, shouldPauseFunc) {\n      var moreToDo;\n\n      // If we're paused, remember the text to parse, but\n      // don't parse it now.\n      // (Don't invoke shouldPauseFunc because we haven't handled 'end' yet.)\n      if (paused > 0) {\n        leftovers += s;\n        return true; // more to do\n      }\n\n\n      if (reentrant_invocations === 0) {\n        // A normal, top-level invocation\n        if (leftovers) {\n          s = leftovers + s;\n          leftovers = \"\";\n        }\n\n        // Add a special marker character to the end of\n        // the buffer.  If the scanner is at the end of\n        // the buffer and input_complete is set, then this\n        // character will transform into an EOF token.\n        // Having an actual character that represents EOF\n        // in the character buffer makes lookahead regexp\n        // matching work more easily, and this is\n        // important for character references.\n        if (end) {\n          s += \"\\uFFFF\";\n          input_complete = true; // Makes scanChars() send EOF\n        }\n\n        chars = s;\n        numchars = s.length;\n        nextchar = 0;\n\n        if (first_batch) {\n          // We skip a leading Byte Order Mark (\\uFEFF)\n          // on first batch of text we're given\n          first_batch = false;\n          if (chars.charCodeAt(0) === 0xFEFF) nextchar = 1;\n        }\n\n        reentrant_invocations++;\n        moreToDo = scanChars(shouldPauseFunc);\n        leftovers = chars.substring(nextchar, numchars);\n        reentrant_invocations--;\n      }\n      else {\n        // This is the re-entrant case, which we have to\n        // handle a little differently.\n        reentrant_invocations++;\n\n        // Save current scanner state\n        saved_scanner_state.push(chars, numchars, nextchar);\n\n        // Set new scanner state\n        chars = s;\n        numchars = s.length;\n        nextchar = 0;\n\n        // Now scan as many of these new chars as we can\n        scanChars();\n        moreToDo = false;\n\n        leftovers = chars.substring(nextchar, numchars);\n\n        // restore old scanner state\n        nextchar = saved_scanner_state.pop();\n        numchars = saved_scanner_state.pop();\n        chars = saved_scanner_state.pop();\n\n        // If there were leftover chars from this invocation\n        // insert them into the pending invocation's buffer\n        // and trim already processed chars at the same time\n        if (leftovers) {\n          chars = leftovers + chars.substring(nextchar);\n          numchars = chars.length;\n          nextchar = 0;\n          leftovers = \"\";\n        }\n\n        // Decrement the counter\n        reentrant_invocations--;\n      }\n      return moreToDo;\n    }\n  };\n\n\n  // This is the document we'll be building up\n  var doc = new Document(true, address);\n\n  // The document needs to know about the parser, for document.write().\n  // This _parser property will be deleted when we're done parsing.\n  doc._parser = htmlparser;\n\n  // XXX I think that any document we use this parser on should support\n  // scripts. But I may need to configure that through a parser parameter\n  // Only documents with windows (\"browsing contexts\" to be precise)\n  // allow scripting.\n  doc._scripting_enabled = scripting_enabled;\n\n\n  /***\n   * The actual code of the HTMLParser() factory function begins here.\n   */\n\n  if (fragmentContext) { // for innerHTML parsing\n    if (fragmentContext.ownerDocument._quirks)\n      doc._quirks = true;\n    if (fragmentContext.ownerDocument._limitedQuirks)\n      doc._limitedQuirks = true;\n\n    // Set the initial tokenizer state\n    if (fragmentContext.namespaceURI === NAMESPACE.HTML) {\n      switch(fragmentContext.localName) {\n      case \"title\":\n      case \"textarea\":\n        tokenizer = rcdata_state;\n        break;\n      case \"style\":\n      case \"xmp\":\n      case \"iframe\":\n      case \"noembed\":\n      case \"noframes\":\n      case \"script\":\n      case \"plaintext\":\n        tokenizer = plaintext_state;\n        break;\n      }\n    }\n\n    var root = doc.createElement(\"html\");\n    doc._appendChild(root);\n    stack.push(root);\n    if (fragmentContext instanceof impl.HTMLTemplateElement) {\n      templateInsertionModes.push(in_template_mode);\n    }\n    resetInsertionMode();\n\n    for(var e = fragmentContext; e !== null; e = e.parentElement) {\n      if (e instanceof impl.HTMLFormElement) {\n        form_element_pointer = e;\n        break;\n      }\n    }\n  }\n\n  /***\n   * Scanner functions\n   */\n  // Loop through the characters in chars, and pass them one at a time\n  // to the tokenizer FSM. Return when no more characters can be processed\n  // (This may leave 1 or more characters in the buffer: like a CR\n  // waiting to see if the next char is LF, or for states that require\n  // lookahead...)\n  function scanChars(shouldPauseFunc) {\n    var codepoint, s, pattern, eof;\n\n    while(nextchar < numchars) {\n\n      // If we just tokenized a </script> tag, then the paused flag\n      // may have been set to tell us to stop tokenizing while\n      // the script is loading\n      if (paused > 0 || (shouldPauseFunc && shouldPauseFunc())) {\n        return true;\n      }\n\n\n      switch(typeof tokenizer.lookahead) {\n      case 'undefined':\n        codepoint = chars.charCodeAt(nextchar++);\n        if (scanner_skip_newline) {\n          scanner_skip_newline = false;\n          if (codepoint === 0x000A) {\n            nextchar++;\n            continue;\n          }\n        }\n        switch(codepoint) {\n        case 0x000D:\n          // CR always turns into LF, but if the next character\n          // is LF, then that second LF is skipped.\n          if (nextchar < numchars) {\n            if (chars.charCodeAt(nextchar) === 0x000A)\n              nextchar++;\n          }\n          else {\n            // We don't know the next char right now, so we\n            // can't check if it is a LF.  So set a flag\n            scanner_skip_newline = true;\n          }\n\n          // In either case, emit a LF\n          tokenizer(0x000A);\n\n          break;\n        case 0xFFFF:\n          if (input_complete && nextchar === numchars) {\n            tokenizer(EOF); // codepoint will be 0xFFFF here\n            break;\n          }\n          /* falls through */\n        default:\n          tokenizer(codepoint);\n          break;\n        }\n        break;\n\n      case 'number':\n        codepoint = chars.charCodeAt(nextchar);\n\n        // The only tokenizer states that require fixed lookahead\n        // only consume alphanum characters, so we don't have\n        // to worry about CR and LF in this case\n\n        // tokenizer wants n chars of lookahead\n        var n = tokenizer.lookahead;\n        var needsString = true;\n        if (n < 0) {\n          needsString = false;\n          n = -n;\n        }\n\n        if (n < numchars - nextchar) {\n          // If we can look ahead that far\n          s = needsString ? chars.substring(nextchar, nextchar+n) : null;\n          eof = false;\n        }\n        else { // if we don't have that many characters\n          if (input_complete) { // If no more are coming\n            // Just return what we have\n            s = needsString ? chars.substring(nextchar, numchars) : null;\n            eof = true;\n            if (codepoint === 0xFFFF && nextchar === numchars-1)\n              codepoint = EOF;\n          }\n          else {\n            // Return now and wait for more chars later\n            return true;\n          }\n        }\n        tokenizer(codepoint, s, eof);\n        break;\n      case 'string':\n        codepoint = chars.charCodeAt(nextchar);\n\n        // tokenizer wants characters up to a matching string\n        pattern = tokenizer.lookahead;\n        var pos = chars.indexOf(pattern, nextchar);\n        if (pos !== -1) {\n          s = chars.substring(nextchar, pos + pattern.length);\n          eof = false;\n        }\n        else {  // No match\n          // If more characters coming, wait for them\n          if (!input_complete) return true;\n\n          // Otherwise, we've got to return what we've got\n          s = chars.substring(nextchar, numchars);\n          if (codepoint === 0xFFFF && nextchar === numchars-1)\n            codepoint = EOF;\n          eof = true;\n        }\n\n        // The tokenizer states that require this kind of\n        // lookahead have to be careful to handle CR characters\n        // correctly\n        tokenizer(codepoint, s, eof);\n        break;\n      }\n    }\n    return false; // no more characters to scan!\n  }\n\n\n  /***\n   * Tokenizer utility functions\n   */\n  function addAttribute(name,value) {\n    // Make sure there isn't already an attribute with this name\n    // If there is, ignore this one.\n    for(var i = 0; i < attributes.length; i++) {\n      if (attributes[i][0] === name) return;\n    }\n\n    if (value !== undefined) {\n      attributes.push([name, value]);\n    }\n    else {\n      attributes.push([name]);\n    }\n  }\n\n  // Shortcut for simple attributes\n  function handleSimpleAttribute() {\n    SIMPLEATTR.lastIndex = nextchar-1;\n    var matched = SIMPLEATTR.exec(chars);\n    if (!matched) throw new Error(\"should never happen\");\n    var name = matched[1];\n    if (!name) return false;\n    var value = matched[2];\n    var len = value.length;\n    switch(value[0]) {\n    case '\"':\n    case \"'\":\n      value = value.substring(1, len-1);\n      nextchar += (matched[0].length-1);\n      tokenizer = after_attribute_value_quoted_state;\n      break;\n    default:\n      tokenizer = before_attribute_name_state;\n      nextchar += (matched[0].length-1);\n      value = value.substring(0, len-1);\n      break;\n    }\n\n    // Make sure there isn't already an attribute with this name\n    // If there is, ignore this one.\n    for(var i = 0; i < attributes.length; i++) {\n      if (attributes[i][0] === name) return true;\n    }\n\n    attributes.push([name, value]);\n    return true;\n  }\n\n  function beginTagName() {\n    is_end_tag = false;\n    tagnamebuf = \"\";\n    attributes.length = 0;\n  }\n  function beginEndTagName() {\n    is_end_tag = true;\n    tagnamebuf = \"\";\n    attributes.length = 0;\n  }\n\n  function beginTempBuf() { tempbuf.length = 0; }\n  function beginAttrName() { attrnamebuf = \"\"; }\n  function beginAttrValue() { attrvaluebuf = \"\"; }\n  function beginComment() { commentbuf.length = 0; }\n  function beginDoctype() {\n    doctypenamebuf.length = 0;\n    doctypepublicbuf = null;\n    doctypesystembuf = null;\n  }\n  function beginDoctypePublicId() { doctypepublicbuf = []; }\n  function beginDoctypeSystemId() { doctypesystembuf = []; }\n  function forcequirks() { force_quirks = true; }\n  function cdataAllowed() {\n    return stack.top &&\n      stack.top.namespaceURI !== \"http://www.w3.org/1999/xhtml\";\n  }\n\n  // Return true if the codepoints in the specified buffer match the\n  // characters of lasttagname\n  function appropriateEndTag(buf) {\n    return lasttagname === buf;\n  }\n\n  function flushText() {\n    if (textrun.length > 0) {\n      var s = buf2str(textrun);\n      textrun.length = 0;\n\n      if (ignore_linefeed) {\n        ignore_linefeed = false;\n        if (s[0] === \"\\n\") s = s.substring(1);\n        if (s.length === 0) return;\n      }\n\n      insertToken(TEXT, s);\n      textIncludesNUL = false;\n    }\n    ignore_linefeed = false;\n  }\n\n  // Consume chars matched by the pattern and return them as a string. Starts\n  // matching at the current position, so users should drop the current char\n  // otherwise.\n  function getMatchingChars(pattern) {\n    pattern.lastIndex = nextchar - 1;\n    var match = pattern.exec(chars);\n    if (match && match.index === nextchar - 1) {\n      match = match[0];\n      nextchar += match.length - 1;\n      /* Careful!  Make sure we haven't matched the EOF character! */\n      if (input_complete && nextchar === numchars) {\n        // Oops, backup one.\n        match = match.slice(0, -1);\n        nextchar--;\n      }\n      return match;\n    } else {\n      throw new Error(\"should never happen\");\n    }\n  }\n\n  // emit a string of chars that match a regexp\n  // Returns false if no chars matched.\n  function emitCharsWhile(pattern) {\n    pattern.lastIndex = nextchar-1;\n    var match = pattern.exec(chars)[0];\n    if (!match) return false;\n    emitCharString(match);\n    nextchar += match.length - 1;\n    return true;\n  }\n\n  // This is used by CDATA sections\n  function emitCharString(s) {\n    if (textrun.length > 0) flushText();\n\n    if (ignore_linefeed) {\n      ignore_linefeed = false;\n      if (s[0] === \"\\n\") s = s.substring(1);\n      if (s.length === 0) return;\n    }\n\n    insertToken(TEXT, s);\n  }\n\n  function emitTag() {\n    if (is_end_tag) insertToken(ENDTAG, tagnamebuf);\n    else {\n      // Remember the last open tag we emitted\n      var tagname = tagnamebuf;\n      tagnamebuf = \"\";\n      lasttagname = tagname;\n      insertToken(TAG, tagname, attributes);\n    }\n  }\n\n\n  // A shortcut: look ahead and if this is a open or close tag\n  // in lowercase with no spaces and no attributes, just emit it now.\n  function emitSimpleTag() {\n    if (nextchar === numchars) { return false; /* not even 1 char left */ }\n    SIMPLETAG.lastIndex = nextchar;\n    var matched = SIMPLETAG.exec(chars);\n    if (!matched) throw new Error(\"should never happen\");\n    var tagname = matched[2];\n    if (!tagname) return false;\n    var endtag = matched[1];\n    if (endtag) {\n      nextchar += (tagname.length+2);\n      insertToken(ENDTAG, tagname);\n    }\n    else {\n      nextchar += (tagname.length+1);\n      lasttagname = tagname;\n      insertToken(TAG, tagname, NOATTRS);\n    }\n    return true;\n  }\n\n  function emitSelfClosingTag() {\n    if (is_end_tag) insertToken(ENDTAG, tagnamebuf, null, true);\n    else {\n      insertToken(TAG, tagnamebuf, attributes, true);\n    }\n  }\n\n  function emitDoctype() {\n    insertToken(DOCTYPE,\n          buf2str(doctypenamebuf),\n          doctypepublicbuf ? buf2str(doctypepublicbuf) : undefined,\n          doctypesystembuf ? buf2str(doctypesystembuf) : undefined);\n  }\n\n  function emitEOF() {\n    flushText();\n    parser(EOF); // EOF never goes to insertForeignContent()\n    doc.modclock = 1; // Start tracking modifications\n  }\n\n  // Insert a token, either using the current parser insertion mode\n  // (for HTML stuff) or using the insertForeignToken() method.\n  var insertToken = htmlparser.insertToken = function insertToken(t, value, arg3, arg4) {\n    flushText();\n    var current = stack.top;\n\n    if (!current || current.namespaceURI === NAMESPACE.HTML) {\n      // This is the common case\n      parser(t, value, arg3, arg4);\n    }\n    else {\n      // Otherwise we may need to insert this token as foreign content\n      if (t !== TAG && t !== TEXT) {\n        insertForeignToken(t, value, arg3, arg4);\n      }\n      else {\n        // But in some cases we treat it as regular content\n        if ((isMathmlTextIntegrationPoint(current) &&\n           (t === TEXT ||\n            (t === TAG &&\n             value !== \"mglyph\" && value !== \"malignmark\"))) ||\n          (t === TAG &&\n           value === \"svg\" &&\n           current.namespaceURI === NAMESPACE.MATHML &&\n           current.localName === \"annotation-xml\") ||\n          isHTMLIntegrationPoint(current)) {\n\n          // XXX: the text_integration_mode stuff is an\n          // attempted bug workaround of mine\n          text_integration_mode = true;\n          parser(t, value, arg3, arg4);\n          text_integration_mode = false;\n        }\n        // Otherwise it is foreign content\n        else {\n          insertForeignToken(t, value, arg3, arg4);\n        }\n      }\n    }\n  };\n\n\n  /***\n   * Tree building utility functions\n   */\n  function insertComment(data) {\n    var parent = stack.top;\n    if (foster_parent_mode && isA(parent, tablesectionrowSet)) {\n      fosterParent(function(doc) { return doc.createComment(data); });\n    } else {\n      // \"If the adjusted insertion location is inside a template element,\n      // let it instead be inside the template element's template contents\"\n      if (parent instanceof impl.HTMLTemplateElement) {\n        parent = parent.content;\n      }\n      parent._appendChild(parent.ownerDocument.createComment(data));\n    }\n  }\n\n  function insertText(s) {\n    var parent = stack.top;\n    if (foster_parent_mode && isA(parent, tablesectionrowSet)) {\n      fosterParent(function(doc) { return doc.createTextNode(s); });\n    } else {\n      // \"If the adjusted insertion location is inside a template element,\n      // let it instead be inside the template element's template contents\"\n      if (parent instanceof impl.HTMLTemplateElement) {\n        parent = parent.content;\n      }\n      // \"If there is a Text node immediately before the adjusted insertion\n      // location, then append data to that Text node's data.\"\n      var lastChild = parent.lastChild;\n      if (lastChild && lastChild.nodeType === Node.TEXT_NODE) {\n        lastChild.appendData(s);\n      } else {\n        parent._appendChild(parent.ownerDocument.createTextNode(s));\n      }\n    }\n  }\n\n  function createHTMLElt(doc, name, attrs) {\n    // Create the element this way, rather than with\n    // doc.createElement because createElement() does error\n    // checking on the element name that we need to avoid here.\n    var elt = html.createElement(doc, name, null);\n\n    if (attrs) {\n      for(var i = 0, n = attrs.length; i < n; i++) {\n        // Use the _ version to avoid testing the validity\n        // of the attribute name\n        elt._setAttribute(attrs[i][0], attrs[i][1]);\n      }\n    }\n    // XXX\n    // If the element is a resettable form element,\n    // run its reset algorithm now\n    // XXX\n    // handle case where form-element-pointer is not null\n    return elt;\n  }\n\n  // The in_table insertion mode turns on this flag, and that makes\n  // insertHTMLElement use the foster parenting algorithm for elements\n  // tags inside a table\n  var foster_parent_mode = false;\n\n  function insertHTMLElement(name, attrs) {\n    var elt = insertElement(function(doc) {\n      return createHTMLElt(doc, name, attrs);\n    });\n\n    // XXX\n    // If this is a form element, set its form attribute property here\n    if (isA(elt, formassociatedSet)) {\n      elt._form = form_element_pointer;\n    }\n\n    return elt;\n  }\n\n  // Insert the element into the open element or foster parent it\n  function insertElement(eltFunc) {\n    var elt;\n    if (foster_parent_mode && isA(stack.top, tablesectionrowSet)) {\n      elt = fosterParent(eltFunc);\n    }\n    else if (stack.top instanceof impl.HTMLTemplateElement) {\n      // \"If the adjusted insertion location is inside a template element,\n      // let it instead be inside the template element's template contents\"\n      elt = eltFunc(stack.top.content.ownerDocument);\n      stack.top.content._appendChild(elt);\n    } else {\n      elt = eltFunc(stack.top.ownerDocument);\n      stack.top._appendChild(elt);\n    }\n\n    stack.push(elt);\n    return elt;\n  }\n\n  function insertForeignElement(name, attrs, ns) {\n    return insertElement(function(doc) {\n      // We need to prevent createElementNS from trying to parse `name` as a\n      // `qname`, so use an internal Document#_createElementNS() interface.\n      var elt = doc._createElementNS(name, ns, null);\n      if (attrs) {\n        for(var i = 0, n = attrs.length; i < n; i++) {\n          var attr = attrs[i];\n          if (attr.length === 2)\n            elt._setAttribute(attr[0], attr[1]);\n          else {\n            elt._setAttributeNS(attr[2], attr[0], attr[1]);\n          }\n        }\n      }\n      return elt;\n    });\n  }\n\n  function lastElementOfType(type) {\n    for(var i = stack.elements.length-1; i >= 0; i--) {\n      if (stack.elements[i] instanceof type) {\n        return i;\n      }\n    }\n    return -1;\n  }\n\n  function fosterParent(eltFunc) {\n    var parent, before, lastTable = -1, lastTemplate = -1, elt;\n\n    lastTable = lastElementOfType(impl.HTMLTableElement);\n    lastTemplate = lastElementOfType(impl.HTMLTemplateElement);\n\n    if (lastTemplate >= 0 && (lastTable < 0 || lastTemplate > lastTable)) {\n      parent = stack.elements[lastTemplate];\n    } else if (lastTable >= 0) {\n      parent = stack.elements[lastTable].parentNode;\n      if (parent) {\n        before = stack.elements[lastTable];\n      } else {\n        parent = stack.elements[lastTable - 1];\n      }\n    }\n    if (!parent) parent = stack.elements[0]; // the `html` element.\n\n    // \"If the adjusted insertion location is inside a template element,\n    // let it instead be inside the template element's template contents\"\n    if (parent instanceof impl.HTMLTemplateElement) {\n      parent = parent.content;\n    }\n    // Create element in the appropriate document.\n    elt = eltFunc(parent.ownerDocument);\n\n    if (elt.nodeType === Node.TEXT_NODE) {\n      var prev;\n      if (before) prev = before.previousSibling;\n      else prev = parent.lastChild;\n      if (prev && prev.nodeType === Node.TEXT_NODE) {\n        prev.appendData(elt.data);\n        return elt;\n      }\n    }\n    if (before)\n      parent.insertBefore(elt, before);\n    else\n      parent._appendChild(elt);\n    return elt;\n  }\n\n\n  function resetInsertionMode() {\n    var last = false;\n    for(var i = stack.elements.length-1; i >= 0; i--) {\n      var node = stack.elements[i];\n      if (i === 0) {\n        last = true;\n        if (fragment) {\n          node = fragmentContext;\n        }\n      }\n      if (node.namespaceURI === NAMESPACE.HTML) {\n        var tag = node.localName;\n        switch(tag) {\n        case \"select\":\n          for(var j = i; j > 0; ) {\n            var ancestor = stack.elements[--j];\n            if (ancestor instanceof impl.HTMLTemplateElement) {\n              break;\n            } else if (ancestor instanceof impl.HTMLTableElement) {\n              parser = in_select_in_table_mode;\n              return;\n            }\n          }\n          parser = in_select_mode;\n          return;\n        case \"tr\":\n          parser = in_row_mode;\n          return;\n        case \"tbody\":\n        case \"tfoot\":\n        case \"thead\":\n          parser = in_table_body_mode;\n          return;\n        case \"caption\":\n          parser = in_caption_mode;\n          return;\n        case \"colgroup\":\n          parser = in_column_group_mode;\n          return;\n        case \"table\":\n          parser = in_table_mode;\n          return;\n        case \"template\":\n          parser = templateInsertionModes[templateInsertionModes.length-1];\n          return;\n        case \"body\":\n          parser = in_body_mode;\n          return;\n        case \"frameset\":\n          parser = in_frameset_mode;\n          return;\n        case \"html\":\n          if (head_element_pointer === null) {\n            parser = before_head_mode;\n          } else {\n            parser = after_head_mode;\n          }\n          return;\n        default:\n          if (!last) {\n            if (tag === \"head\") {\n              parser = in_head_mode;\n              return;\n            }\n            if (tag === \"td\" || tag === \"th\") {\n              parser = in_cell_mode;\n              return;\n            }\n          }\n        }\n      }\n      if (last) {\n        parser = in_body_mode;\n        return;\n      }\n    }\n  }\n\n\n  function parseRawText(name, attrs) {\n    insertHTMLElement(name, attrs);\n    tokenizer = rawtext_state;\n    originalInsertionMode = parser;\n    parser = text_mode;\n  }\n\n  function parseRCDATA(name, attrs) {\n    insertHTMLElement(name, attrs);\n    tokenizer = rcdata_state;\n    originalInsertionMode = parser;\n    parser = text_mode;\n  }\n\n  // Make a copy of element i on the list of active formatting\n  // elements, using its original attributes, not current\n  // attributes (which may have been modified by a script)\n  function afeclone(doc, i) {\n    return {\n      elt: createHTMLElt(doc, afe.list[i].localName, afe.attrs[i]),\n      attrs: afe.attrs[i],\n    };\n  }\n\n\n  function afereconstruct() {\n    if (afe.list.length === 0) return;\n    var entry = afe.list[afe.list.length-1];\n    // If the last is a marker , do nothing\n    if (entry === afe.MARKER) return;\n    // Or if it is an open element, do nothing\n    if (stack.elements.lastIndexOf(entry) !== -1) return;\n\n    // Loop backward through the list until we find a marker or an\n    // open element, and then move forward one from there.\n    for(var i = afe.list.length-2; i >= 0; i--) {\n      entry = afe.list[i];\n      if (entry === afe.MARKER) break;\n      if (stack.elements.lastIndexOf(entry) !== -1) break;\n    }\n\n    // Now loop forward, starting from the element after the current\n    // one, recreating formatting elements and pushing them back onto\n    // the list of open elements\n    for(i = i+1; i < afe.list.length; i++) {\n      var newelt = insertElement(function(doc) { return afeclone(doc, i).elt; });\n      afe.list[i] = newelt;\n    }\n  }\n\n  // Used by the adoptionAgency() function\n  var BOOKMARK = {localName:\"BM\"};\n\n  function adoptionAgency(tag) {\n    // If the current node is an HTML element whose tag name is subject,\n    // and the current node is not in the list of active formatting\n    // elements, then pop the current node off the stack of open\n    // elements and abort these steps.\n    if (isA(stack.top, tag) && afe.indexOf(stack.top) === -1) {\n      stack.pop();\n      return true; // no more handling required\n    }\n\n    // Let outer loop counter be zero.\n    var outer = 0;\n\n    // Outer loop: If outer loop counter is greater than or\n    // equal to eight, then abort these steps.\n    while(outer < 8) {\n      // Increment outer loop counter by one.\n      outer++;\n\n      // Let the formatting element be the last element in the list\n      // of active formatting elements that: is between the end of\n      // the list and the last scope marker in the list, if any, or\n      // the start of the list otherwise, and has the same tag name\n      // as the token.\n      var fmtelt = afe.findElementByTag(tag);\n\n      // If there is no such node, then abort these steps and instead\n      // act as described in the \"any other end tag\" entry below.\n      if (!fmtelt) {\n        return false; // false means handle by the default case\n      }\n\n      // Otherwise, if there is such a node, but that node is not in\n      // the stack of open elements, then this is a parse error;\n      // remove the element from the list, and abort these steps.\n      var index = stack.elements.lastIndexOf(fmtelt);\n      if (index === -1) {\n        afe.remove(fmtelt);\n        return true;   // true means no more handling required\n      }\n\n      // Otherwise, if there is such a node, and that node is also in\n      // the stack of open elements, but the element is not in scope,\n      // then this is a parse error; ignore the token, and abort\n      // these steps.\n      if (!stack.elementInScope(fmtelt)) {\n        return true;\n      }\n\n      // Let the furthest block be the topmost node in the stack of\n      // open elements that is lower in the stack than the formatting\n      // element, and is an element in the special category. There\n      // might not be one.\n      var furthestblock = null, furthestblockindex;\n      for(var i = index+1; i < stack.elements.length; i++) {\n        if (isA(stack.elements[i], specialSet)) {\n          furthestblock = stack.elements[i];\n          furthestblockindex = i;\n          break;\n        }\n      }\n\n      // If there is no furthest block, then the UA must skip the\n      // subsequent steps and instead just pop all the nodes from the\n      // bottom of the stack of open elements, from the current node\n      // up to and including the formatting element, and remove the\n      // formatting element from the list of active formatting\n      // elements.\n      if (!furthestblock) {\n        stack.popElement(fmtelt);\n        afe.remove(fmtelt);\n        return true;\n      }\n      else {\n        // Let the common ancestor be the element immediately above\n        // the formatting element in the stack of open elements.\n        var ancestor = stack.elements[index-1];\n\n        // Let a bookmark note the position of the formatting\n        // element in the list of active formatting elements\n        // relative to the elements on either side of it in the\n        // list.\n        afe.insertAfter(fmtelt, BOOKMARK);\n\n        // Let node and last node be the furthest block.\n        var node = furthestblock;\n        var lastnode = furthestblock;\n        var nodeindex = furthestblockindex;\n        var nodeafeindex;\n\n        // Let inner loop counter be zero.\n        var inner = 0;\n\n        while (true) {\n\n          // Increment inner loop counter by one.\n          inner++;\n\n          // Let node be the element immediately above node in\n          // the stack of open elements, or if node is no longer\n          // in the stack of open elements (e.g. because it got\n          // removed by this algorithm), the element that was\n          // immediately above node in the stack of open elements\n          // before node was removed.\n          node = stack.elements[--nodeindex];\n\n          // If node is the formatting element, then go\n          // to the next step in the overall algorithm.\n          if (node === fmtelt) break;\n\n          // If the inner loop counter is greater than three and node\n          // is in the list of active formatting elements, then remove\n          // node from the list of active formatting elements.\n          nodeafeindex = afe.indexOf(node);\n          if (inner > 3 && nodeafeindex !== -1) {\n            afe.remove(node);\n            nodeafeindex = -1;\n          }\n\n          // If node is not in the list of active formatting\n          // elements, then remove node from the stack of open\n          // elements and then go back to the step labeled inner\n          // loop.\n          if (nodeafeindex === -1) {\n            stack.removeElement(node);\n            continue;\n          }\n\n          // Create an element for the token for which the\n          // element node was created with common ancestor as\n          // the intended parent, replace the entry for node\n          // in the list of active formatting elements with an\n          // entry for the new element, replace the entry for\n          // node in the stack of open elements with an entry for\n          // the new element, and let node be the new element.\n          var newelt = afeclone(ancestor.ownerDocument, nodeafeindex);\n          afe.replace(node, newelt.elt, newelt.attrs);\n          stack.elements[nodeindex] = newelt.elt;\n          node = newelt.elt;\n\n          // If last node is the furthest block, then move the\n          // aforementioned bookmark to be immediately after the\n          // new node in the list of active formatting elements.\n          if (lastnode === furthestblock) {\n            afe.remove(BOOKMARK);\n            afe.insertAfter(newelt.elt, BOOKMARK);\n          }\n\n          // Insert last node into node, first removing it from\n          // its previous parent node if any.\n          node._appendChild(lastnode);\n\n          // Let last node be node.\n          lastnode = node;\n        }\n\n        // If the common ancestor node is a table, tbody, tfoot,\n        // thead, or tr element, then, foster parent whatever last\n        // node ended up being in the previous step, first removing\n        // it from its previous parent node if any.\n        if (foster_parent_mode && isA(ancestor, tablesectionrowSet)) {\n          fosterParent(function() { return lastnode; });\n        }\n        // Otherwise, append whatever last node ended up being in\n        // the previous step to the common ancestor node, first\n        // removing it from its previous parent node if any.\n        else if (ancestor instanceof impl.HTMLTemplateElement) {\n          ancestor.content._appendChild(lastnode);\n        } else {\n          ancestor._appendChild(lastnode);\n        }\n\n        // Create an element for the token for which the\n        // formatting element was created, with furthest block\n        // as the intended parent.\n        var newelt2 = afeclone(furthestblock.ownerDocument, afe.indexOf(fmtelt));\n\n        // Take all of the child nodes of the furthest block and\n        // append them to the element created in the last step.\n        while(furthestblock.hasChildNodes()) {\n          newelt2.elt._appendChild(furthestblock.firstChild);\n        }\n\n        // Append that new element to the furthest block.\n        furthestblock._appendChild(newelt2.elt);\n\n        // Remove the formatting element from the list of active\n        // formatting elements, and insert the new element into the\n        // list of active formatting elements at the position of\n        // the aforementioned bookmark.\n        afe.remove(fmtelt);\n        afe.replace(BOOKMARK, newelt2.elt, newelt2.attrs);\n\n        // Remove the formatting element from the stack of open\n        // elements, and insert the new element into the stack of\n        // open elements immediately below the position of the\n        // furthest block in that stack.\n        stack.removeElement(fmtelt);\n        var pos = stack.elements.lastIndexOf(furthestblock);\n        stack.elements.splice(pos+1, 0, newelt2.elt);\n      }\n    }\n\n    return true;\n  }\n\n  // We do this when we get /script in in_text_mode\n  function handleScriptEnd() {\n    // XXX:\n    // This is just a stub implementation right now and doesn't run scripts.\n    // Getting this method right involves the event loop, URL resolution\n    // script fetching etc. For now I just want to be able to parse\n    // documents and test the parser.\n\n    //var script = stack.top;\n    stack.pop();\n    parser = originalInsertionMode;\n    //script._prepare();\n    return;\n\n    // XXX: here is what this method is supposed to do\n\n    // Provide a stable state.\n\n    // Let script be the current node (which will be a script\n    // element).\n\n    // Pop the current node off the stack of open elements.\n\n    // Switch the insertion mode to the original insertion mode.\n\n    // Let the old insertion point have the same value as the current\n    // insertion point. Let the insertion point be just before the\n    // next input character.\n\n    // Increment the parser's script nesting level by one.\n\n    // Prepare the script. This might cause some script to execute,\n    // which might cause new characters to be inserted into the\n    // tokenizer, and might cause the tokenizer to output more tokens,\n    // resulting in a reentrant invocation of the parser.\n\n    // Decrement the parser's script nesting level by one. If the\n    // parser's script nesting level is zero, then set the parser\n    // pause flag to false.\n\n    // Let the insertion point have the value of the old insertion\n    // point. (In other words, restore the insertion point to its\n    // previous value. This value might be the \"undefined\" value.)\n\n    // At this stage, if there is a pending parsing-blocking script,\n    // then:\n\n    // If the script nesting level is not zero:\n\n    //   Set the parser pause flag to true, and abort the processing\n    //   of any nested invocations of the tokenizer, yielding\n    //   control back to the caller. (Tokenization will resume when\n    //   the caller returns to the \"outer\" tree construction stage.)\n\n    //   The tree construction stage of this particular parser is\n    //   being called reentrantly, say from a call to\n    //   document.write().\n\n    // Otherwise:\n\n    //     Run these steps:\n\n    //       Let the script be the pending parsing-blocking\n    //       script. There is no longer a pending\n    //       parsing-blocking script.\n\n    //       Block the tokenizer for this instance of the HTML\n    //       parser, such that the event loop will not run tasks\n    //       that invoke the tokenizer.\n\n    //       If the parser's Document has a style sheet that is\n    //       blocking scripts or the script's \"ready to be\n    //       parser-executed\" flag is not set: spin the event\n    //       loop until the parser's Document has no style sheet\n    //       that is blocking scripts and the script's \"ready to\n    //       be parser-executed\" flag is set.\n\n    //       Unblock the tokenizer for this instance of the HTML\n    //       parser, such that tasks that invoke the tokenizer\n    //       can again be run.\n\n    //       Let the insertion point be just before the next\n    //       input character.\n\n    //       Increment the parser's script nesting level by one\n    //       (it should be zero before this step, so this sets\n    //       it to one).\n\n    //       Execute the script.\n\n    //       Decrement the parser's script nesting level by\n    //       one. If the parser's script nesting level is zero\n    //       (which it always should be at this point), then set\n    //       the parser pause flag to false.\n\n    //       Let the insertion point be undefined again.\n\n    //       If there is once again a pending parsing-blocking\n    //       script, then repeat these steps from step 1.\n\n\n  }\n\n  function stopParsing() {\n    // XXX This is just a temporary implementation to get the parser working.\n    // A full implementation involves scripts and events and the event loop.\n\n    // Remove the link from document to parser.\n    // This is instead of \"set the insertion point to undefined\".\n    // It means that document.write() can't write into the doc anymore.\n    delete doc._parser;\n\n    stack.elements.length = 0; // pop everything off\n\n    // If there is a window object associated with the document\n    // then trigger an load event on it\n    if (doc.defaultView) {\n      doc.defaultView.dispatchEvent(new impl.Event(\"load\",{}));\n    }\n\n  }\n\n  /****\n   * Tokenizer states\n   */\n\n  /**\n   * This file was partially mechanically generated from\n   * http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html\n   *\n   * After mechanical conversion, it was further converted from\n   * prose to JS by hand, but the intent is that it is a very\n   * faithful rendering of the HTML tokenization spec in\n   * JavaScript.\n   *\n   * It is not a goal of this tokenizer to detect or report\n   * parse errors.\n   *\n   * XXX The tokenizer is supposed to work with straight UTF32\n   * codepoints. But I don't think it has any dependencies on\n   * any character outside of the BMP so I think it is safe to\n   * pass it UTF16 characters. I don't think it will ever change\n   * state in the middle of a surrogate pair.\n   */\n\n  /*\n   * Each state is represented by a function.  For most states, the\n   * scanner simply passes the next character (as an integer\n   * codepoint) to the current state function and automatically\n   * consumes the character.  If the state function can't process\n   * the character it can call pushback() to push it back to the\n   * scanner.\n   *\n   * Some states require lookahead, though.  If a state function has\n   * a lookahead property, then it is invoked differently.  In this\n   * case, the scanner invokes the function with 3 arguments: 1) the\n   * next codepoint 2) a string of lookahead text 3) a boolean that\n   * is true if the lookahead goes all the way to the EOF. (XXX\n   * actually maybe this third is not necessary... the lookahead\n   * could just include \\uFFFF?)\n   *\n   * If the lookahead property of a state function is an integer, it\n   * specifies the number of characters required. If it is a string,\n   * then the scanner will scan for that string and return all\n   * characters up to and including that sequence, or up to EOF.  If\n   * the lookahead property is a regexp, then the scanner will match\n   * the regexp at the current point and return the matching string.\n   *\n   * States that require lookahead are responsible for explicitly\n   * consuming the characters they process. They do this by\n   * incrementing nextchar by the number of processed characters.\n   */\n  function reconsume(c, new_state) {\n    tokenizer = new_state;\n    nextchar--; // pushback\n  }\n\n  function data_state(c) {\n    switch(c) {\n    case 0x0026: // AMPERSAND\n      return_state = data_state;\n      tokenizer = character_reference_state;\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      if (emitSimpleTag()) // Shortcut for <p>, <dl>, </div> etc.\n        break;\n      tokenizer = tag_open_state;\n      break;\n    case 0x0000: // NULL\n      // Usually null characters emitted by the tokenizer will be\n      // ignored by the tree builder, but sometimes they'll be\n      // converted to \\uFFFD.  I don't want to have the search every\n      // string emitted to replace NULs, so I'll set a flag\n      // if I've emitted a NUL.\n      textrun.push(c);\n      textIncludesNUL = true;\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      // Instead of just pushing a single character and then\n      // coming back to the very same place, lookahead and\n      // emit everything we can at once.\n      /*jshint -W030 */\n      emitCharsWhile(DATATEXT) || textrun.push(c);\n      break;\n    }\n  }\n\n  function rcdata_state(c) {\n    // Save the open tag so we can find a matching close tag\n    switch(c) {\n    case 0x0026: // AMPERSAND\n      return_state = rcdata_state;\n      tokenizer = character_reference_state;\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = rcdata_less_than_sign_state;\n      break;\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      textIncludesNUL = true;\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function rawtext_state(c) {\n    switch(c) {\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = rawtext_less_than_sign_state;\n      break;\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      /*jshint -W030 */\n      emitCharsWhile(RAWTEXT) || textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_state(c) {\n    switch(c) {\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_less_than_sign_state;\n      break;\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      /*jshint -W030 */\n      emitCharsWhile(RAWTEXT) || textrun.push(c);\n      break;\n    }\n  }\n\n  function plaintext_state(c) {\n    switch(c) {\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      /*jshint -W030 */\n      emitCharsWhile(PLAINTEXT) || textrun.push(c);\n      break;\n    }\n  }\n\n  function tag_open_state(c) {\n    switch(c) {\n    case 0x0021: // EXCLAMATION MARK\n      tokenizer = markup_declaration_open_state;\n      break;\n    case 0x002F: // SOLIDUS\n      tokenizer = end_tag_open_state;\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginTagName();\n      reconsume(c, tag_name_state);\n      break;\n    case 0x003F: // QUESTION MARK\n      reconsume(c, bogus_comment_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, data_state);\n      break;\n    }\n  }\n\n  function end_tag_open_state(c) {\n    switch(c) {\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginEndTagName();\n      reconsume(c, tag_name_state);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      break;\n    case -1: // EOF\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x002F); // SOLIDUS\n      emitEOF();\n      break;\n    default:\n      reconsume(c, bogus_comment_state);\n      break;\n    }\n  }\n\n  function tag_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = before_attribute_name_state;\n      break;\n    case 0x002F: // SOLIDUS\n      tokenizer = self_closing_start_tag_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitTag();\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      tagnamebuf += String.fromCharCode(c + 0x0020);\n      break;\n    case 0x0000: // NULL\n      tagnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      tagnamebuf += getMatchingChars(TAGNAME);\n      break;\n    }\n  }\n\n  function rcdata_less_than_sign_state(c) {\n    /* identical to the RAWTEXT less-than sign state, except s/RAWTEXT/RCDATA/g */\n    if (c === 0x002F) {  // SOLIDUS\n      beginTempBuf();\n      tokenizer = rcdata_end_tag_open_state;\n    }\n    else {\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, rcdata_state);\n    }\n  }\n\n  function rcdata_end_tag_open_state(c) {\n    /* identical to the RAWTEXT (and Script data) end tag open state, except s/RAWTEXT/RCDATA/g */\n    switch(c) {\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginEndTagName();\n      reconsume(c, rcdata_end_tag_name_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x002F); // SOLIDUS\n      reconsume(c, rcdata_state);\n      break;\n    }\n  }\n\n  function rcdata_end_tag_name_state(c) {\n    /* identical to the RAWTEXT (and Script data) end tag name state, except s/RAWTEXT/RCDATA/g */\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = before_attribute_name_state;\n        return;\n      }\n      break;\n    case 0x002F: // SOLIDUS\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = self_closing_start_tag_state;\n        return;\n      }\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = data_state;\n        emitTag();\n        return;\n      }\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n\n      tagnamebuf += String.fromCharCode(c + 0x0020);\n      tempbuf.push(c);\n      return;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n\n      tagnamebuf += String.fromCharCode(c);\n      tempbuf.push(c);\n      return;\n    default:\n      break;\n    }\n\n    // If we don't return in one of the cases above, then this was not\n    // an appropriately matching close tag, so back out by emitting all\n    // the characters as text\n    textrun.push(0x003C); // LESS-THAN SIGN\n    textrun.push(0x002F); // SOLIDUS\n    pushAll(textrun, tempbuf);\n    reconsume(c, rcdata_state);\n  }\n\n  function rawtext_less_than_sign_state(c) {\n    /* identical to the RCDATA less-than sign state, except s/RCDATA/RAWTEXT/g\n     */\n    if (c === 0x002F) { // SOLIDUS\n      beginTempBuf();\n      tokenizer = rawtext_end_tag_open_state;\n    }\n    else {\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, rawtext_state);\n    }\n  }\n\n  function rawtext_end_tag_open_state(c) {\n    /* identical to the RCDATA (and Script data) end tag open state, except s/RCDATA/RAWTEXT/g */\n    switch(c) {\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginEndTagName();\n      reconsume(c, rawtext_end_tag_name_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x002F); // SOLIDUS\n      reconsume(c, rawtext_state);\n      break;\n    }\n  }\n\n  function rawtext_end_tag_name_state(c) {\n    /* identical to the RCDATA (and Script data) end tag name state, except s/RCDATA/RAWTEXT/g */\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = before_attribute_name_state;\n        return;\n      }\n      break;\n    case 0x002F: // SOLIDUS\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = self_closing_start_tag_state;\n        return;\n      }\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = data_state;\n        emitTag();\n        return;\n      }\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      tagnamebuf += String.fromCharCode(c + 0x0020);\n      tempbuf.push(c);\n      return;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      tagnamebuf += String.fromCharCode(c);\n      tempbuf.push(c);\n      return;\n    default:\n      break;\n    }\n\n    // If we don't return in one of the cases above, then this was not\n    // an appropriately matching close tag, so back out by emitting all\n    // the characters as text\n    textrun.push(0x003C); // LESS-THAN SIGN\n    textrun.push(0x002F); // SOLIDUS\n    pushAll(textrun,tempbuf);\n    reconsume(c, rawtext_state);\n  }\n\n  function script_data_less_than_sign_state(c) {\n    switch(c) {\n    case 0x002F: // SOLIDUS\n      beginTempBuf();\n      tokenizer = script_data_end_tag_open_state;\n      break;\n    case 0x0021: // EXCLAMATION MARK\n      tokenizer = script_data_escape_start_state;\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x0021); // EXCLAMATION MARK\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, script_data_state);\n      break;\n    }\n  }\n\n  function script_data_end_tag_open_state(c) {\n    /* identical to the RCDATA (and RAWTEXT) end tag open state, except s/RCDATA/Script data/g */\n    switch(c) {\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginEndTagName();\n      reconsume(c, script_data_end_tag_name_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x002F); // SOLIDUS\n      reconsume(c, script_data_state);\n      break;\n    }\n  }\n\n  function script_data_end_tag_name_state(c) {\n    /* identical to the RCDATA (and RAWTEXT) end tag name state, except s/RCDATA/Script data/g */\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = before_attribute_name_state;\n        return;\n      }\n      break;\n    case 0x002F: // SOLIDUS\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = self_closing_start_tag_state;\n        return;\n      }\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = data_state;\n        emitTag();\n        return;\n      }\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n\n      tagnamebuf += String.fromCharCode(c + 0x0020);\n      tempbuf.push(c);\n      return;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n\n      tagnamebuf += String.fromCharCode(c);\n      tempbuf.push(c);\n      return;\n    default:\n      break;\n    }\n\n    // If we don't return in one of the cases above, then this was not\n    // an appropriately matching close tag, so back out by emitting all\n    // the characters as text\n    textrun.push(0x003C); // LESS-THAN SIGN\n    textrun.push(0x002F); // SOLIDUS\n    pushAll(textrun,tempbuf);\n    reconsume(c, script_data_state);\n  }\n\n  function script_data_escape_start_state(c) {\n    if (c === 0x002D) { // HYPHEN-MINUS\n      tokenizer = script_data_escape_start_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n    }\n    else {\n      reconsume(c, script_data_state);\n    }\n  }\n\n  function script_data_escape_start_dash_state(c) {\n    if (c === 0x002D) { // HYPHEN-MINUS\n      tokenizer = script_data_escaped_dash_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n    }\n    else {\n      reconsume(c, script_data_state);\n    }\n  }\n\n  function script_data_escaped_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = script_data_escaped_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_escaped_less_than_sign_state;\n      break;\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_escaped_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = script_data_escaped_dash_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_escaped_less_than_sign_state;\n      break;\n    case 0x0000: // NULL\n      tokenizer = script_data_escaped_state;\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      tokenizer = script_data_escaped_state;\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_escaped_dash_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_escaped_less_than_sign_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = script_data_state;\n      textrun.push(0x003E); // GREATER-THAN SIGN\n      break;\n    case 0x0000: // NULL\n      tokenizer = script_data_escaped_state;\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      tokenizer = script_data_escaped_state;\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_escaped_less_than_sign_state(c) {\n    switch(c) {\n    case 0x002F: // SOLIDUS\n      beginTempBuf();\n      tokenizer = script_data_escaped_end_tag_open_state;\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginTempBuf();\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, script_data_double_escape_start_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      reconsume(c, script_data_escaped_state);\n      break;\n    }\n  }\n\n  function script_data_escaped_end_tag_open_state(c) {\n    switch(c) {\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      beginEndTagName();\n      reconsume(c, script_data_escaped_end_tag_name_state);\n      break;\n    default:\n      textrun.push(0x003C); // LESS-THAN SIGN\n      textrun.push(0x002F); // SOLIDUS\n      reconsume(c, script_data_escaped_state);\n      break;\n    }\n  }\n\n  function script_data_escaped_end_tag_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = before_attribute_name_state;\n        return;\n      }\n      break;\n    case 0x002F: // SOLIDUS\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = self_closing_start_tag_state;\n        return;\n      }\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      if (appropriateEndTag(tagnamebuf)) {\n        tokenizer = data_state;\n        emitTag();\n        return;\n      }\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      tagnamebuf += String.fromCharCode(c + 0x0020);\n      tempbuf.push(c);\n      return;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      tagnamebuf += String.fromCharCode(c);\n      tempbuf.push(c);\n      return;\n    default:\n      break;\n    }\n\n    // We get here in the default case, and if the closing tagname\n    // is not an appropriate tagname.\n    textrun.push(0x003C); // LESS-THAN SIGN\n    textrun.push(0x002F); // SOLIDUS\n    pushAll(textrun,tempbuf);\n    reconsume(c, script_data_escaped_state);\n  }\n\n  function script_data_double_escape_start_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n    case 0x002F: // SOLIDUS\n    case 0x003E: // GREATER-THAN SIGN\n      if (buf2str(tempbuf) === \"script\") {\n        tokenizer = script_data_double_escaped_state;\n      }\n      else {\n        tokenizer = script_data_escaped_state;\n      }\n      textrun.push(c);\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      tempbuf.push(c + 0x0020);\n      textrun.push(c);\n      break;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      tempbuf.push(c);\n      textrun.push(c);\n      break;\n    default:\n      reconsume(c, script_data_escaped_state);\n      break;\n    }\n  }\n\n  function script_data_double_escaped_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = script_data_double_escaped_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_double_escaped_less_than_sign_state;\n      textrun.push(0x003C); // LESS-THAN SIGN\n      break;\n    case 0x0000: // NULL\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_double_escaped_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = script_data_double_escaped_dash_dash_state;\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_double_escaped_less_than_sign_state;\n      textrun.push(0x003C); // LESS-THAN SIGN\n      break;\n    case 0x0000: // NULL\n      tokenizer = script_data_double_escaped_state;\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      tokenizer = script_data_double_escaped_state;\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_double_escaped_dash_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      textrun.push(0x002D); // HYPHEN-MINUS\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      tokenizer = script_data_double_escaped_less_than_sign_state;\n      textrun.push(0x003C); // LESS-THAN SIGN\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = script_data_state;\n      textrun.push(0x003E); // GREATER-THAN SIGN\n      break;\n    case 0x0000: // NULL\n      tokenizer = script_data_double_escaped_state;\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      tokenizer = script_data_double_escaped_state;\n      textrun.push(c);\n      break;\n    }\n  }\n\n  function script_data_double_escaped_less_than_sign_state(c) {\n    if (c === 0x002F) { // SOLIDUS\n      beginTempBuf();\n      tokenizer = script_data_double_escape_end_state;\n      textrun.push(0x002F); // SOLIDUS\n    }\n    else {\n      reconsume(c, script_data_double_escaped_state);\n    }\n  }\n\n  function script_data_double_escape_end_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n    case 0x002F: // SOLIDUS\n    case 0x003E: // GREATER-THAN SIGN\n      if (buf2str(tempbuf) === \"script\") {\n        tokenizer = script_data_escaped_state;\n      }\n      else {\n        tokenizer = script_data_double_escaped_state;\n      }\n      textrun.push(c);\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      tempbuf.push(c + 0x0020);\n      textrun.push(c);\n      break;\n    case 0x0061:  // [a-z]\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\n      tempbuf.push(c);\n      textrun.push(c);\n      break;\n    default:\n      reconsume(c, script_data_double_escaped_state);\n      break;\n    }\n  }\n\n  function before_attribute_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    // For SOLIDUS, GREATER-THAN SIGN, and EOF, spec says \"reconsume in\n    // the after attribute name state\", but in our implementation that\n    // state always has an active attribute in attrnamebuf.  Just clone\n    // the rules here, without the addAttribute business.\n    case 0x002F: // SOLIDUS\n      tokenizer = self_closing_start_tag_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitTag();\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    case 0x003D: // EQUALS SIGN\n      beginAttrName();\n      attrnamebuf += String.fromCharCode(c);\n      tokenizer = attribute_name_state;\n      break;\n    default:\n      if (handleSimpleAttribute()) break;\n      beginAttrName();\n      reconsume(c, attribute_name_state);\n      break;\n    }\n  }\n\n  // beginAttrName() must have been called before this point\n  // There is an active attribute in attrnamebuf (but not attrvaluebuf)\n  function attribute_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n    case 0x002F: // SOLIDUS\n    case 0x003E: // GREATER-THAN SIGN\n    case -1: // EOF\n      reconsume(c, after_attribute_name_state);\n      break;\n    case 0x003D: // EQUALS SIGN\n      tokenizer = before_attribute_value_state;\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      attrnamebuf += String.fromCharCode(c + 0x0020);\n      break;\n    case 0x0000: // NULL\n      attrnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case 0x0022: // QUOTATION MARK\n    case 0x0027: // APOSTROPHE\n    case 0x003C: // LESS-THAN SIGN\n      /* falls through */\n    default:\n      attrnamebuf += getMatchingChars(ATTRNAME);\n      break;\n    }\n  }\n\n  // There is an active attribute in attrnamebuf, but not yet in attrvaluebuf.\n  function after_attribute_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    case 0x002F: // SOLIDUS\n      // Keep in sync with before_attribute_name_state.\n      addAttribute(attrnamebuf);\n      tokenizer = self_closing_start_tag_state;\n      break;\n    case 0x003D: // EQUALS SIGN\n      tokenizer = before_attribute_value_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      // Keep in sync with before_attribute_name_state.\n      tokenizer = data_state;\n      addAttribute(attrnamebuf);\n      emitTag();\n      break;\n    case -1: // EOF\n      // Keep in sync with before_attribute_name_state.\n      addAttribute(attrnamebuf);\n      emitEOF();\n      break;\n    default:\n      addAttribute(attrnamebuf);\n      beginAttrName();\n      reconsume(c, attribute_name_state);\n      break;\n    }\n  }\n\n  function before_attribute_value_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginAttrValue();\n      tokenizer = attribute_value_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginAttrValue();\n      tokenizer = attribute_value_single_quoted_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      /* falls through */\n    default:\n      beginAttrValue();\n      reconsume(c, attribute_value_unquoted_state);\n      break;\n    }\n  }\n\n  function attribute_value_double_quoted_state(c) {\n    switch(c) {\n    case 0x0022: // QUOTATION MARK\n      addAttribute(attrnamebuf, attrvaluebuf);\n      tokenizer = after_attribute_value_quoted_state;\n      break;\n    case 0x0026: // AMPERSAND\n      return_state = attribute_value_double_quoted_state;\n      tokenizer = character_reference_state;\n      break;\n    case 0x0000: // NULL\n      attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    case 0x000A: // LF\n      // this could be a converted \\r, so don't use getMatchingChars\n      attrvaluebuf += String.fromCharCode(c);\n      break;\n    default:\n      attrvaluebuf += getMatchingChars(DBLQUOTEATTRVAL);\n      break;\n    }\n  }\n\n  function attribute_value_single_quoted_state(c) {\n    switch(c) {\n    case 0x0027: // APOSTROPHE\n      addAttribute(attrnamebuf, attrvaluebuf);\n      tokenizer = after_attribute_value_quoted_state;\n      break;\n    case 0x0026: // AMPERSAND\n      return_state = attribute_value_single_quoted_state;\n      tokenizer = character_reference_state;\n      break;\n    case 0x0000: // NULL\n      attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    case 0x000A: // LF\n      // this could be a converted \\r, so don't use getMatchingChars\n      attrvaluebuf += String.fromCharCode(c);\n      break;\n    default:\n      attrvaluebuf += getMatchingChars(SINGLEQUOTEATTRVAL);\n      break;\n    }\n  }\n\n  function attribute_value_unquoted_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      addAttribute(attrnamebuf, attrvaluebuf);\n      tokenizer = before_attribute_name_state;\n      break;\n    case 0x0026: // AMPERSAND\n      return_state = attribute_value_unquoted_state;\n      tokenizer = character_reference_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      addAttribute(attrnamebuf, attrvaluebuf);\n      tokenizer = data_state;\n      emitTag();\n      break;\n    case 0x0000: // NULL\n      attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      nextchar--; // pushback\n      tokenizer = data_state;\n      break;\n    case 0x0022: // QUOTATION MARK\n    case 0x0027: // APOSTROPHE\n    case 0x003C: // LESS-THAN SIGN\n    case 0x003D: // EQUALS SIGN\n    case 0x0060: // GRAVE ACCENT\n      /* falls through */\n    default:\n      attrvaluebuf += getMatchingChars(UNQUOTEDATTRVAL);\n      break;\n    }\n  }\n\n  function after_attribute_value_quoted_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = before_attribute_name_state;\n      break;\n    case 0x002F: // SOLIDUS\n      tokenizer = self_closing_start_tag_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitTag();\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      reconsume(c, before_attribute_name_state);\n      break;\n    }\n  }\n\n  function self_closing_start_tag_state(c) {\n    switch(c) {\n    case 0x003E: // GREATER-THAN SIGN\n      // Set the <i>self-closing flag</i> of the current tag token.\n      tokenizer = data_state;\n      emitSelfClosingTag(true);\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    default:\n      reconsume(c, before_attribute_name_state);\n      break;\n    }\n  }\n\n  function bogus_comment_state(c, lookahead, eof) {\n    var len = lookahead.length;\n\n    if (eof) {\n      nextchar += len-1; // don't consume the eof\n    }\n    else {\n      nextchar += len;\n    }\n\n    var comment = lookahead.substring(0, len-1);\n\n    comment = comment.replace(/\\u0000/g,\"\\uFFFD\");\n    comment = comment.replace(/\\u000D\\u000A/g,\"\\u000A\");\n    comment = comment.replace(/\\u000D/g,\"\\u000A\");\n\n    insertToken(COMMENT, comment);\n    tokenizer = data_state;\n  }\n  bogus_comment_state.lookahead = \">\";\n\n  function markup_declaration_open_state(c, lookahead, eof) {\n    if (lookahead[0] === \"-\" && lookahead[1] === \"-\") {\n      nextchar += 2;\n      beginComment();\n      tokenizer = comment_start_state;\n      return;\n    }\n\n    if (lookahead.toUpperCase() === \"DOCTYPE\") {\n      nextchar += 7;\n      tokenizer = doctype_state;\n    }\n    else if (lookahead === \"[CDATA[\" && cdataAllowed()) {\n      nextchar += 7;\n      tokenizer = cdata_section_state;\n    }\n    else {\n      tokenizer = bogus_comment_state;\n    }\n  }\n  markup_declaration_open_state.lookahead = 7;\n\n  function comment_start_state(c) {\n    beginComment();\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_start_dash_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      insertToken(COMMENT, buf2str(commentbuf));\n      break; /* see comment in comment end state */\n    default:\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_start_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_end_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      insertToken(COMMENT, buf2str(commentbuf));\n      break;\n    case -1: // EOF\n      insertToken(COMMENT, buf2str(commentbuf));\n      emitEOF();\n      break; /* see comment in comment end state */\n    default:\n      commentbuf.push(0x002D /* HYPHEN-MINUS */);\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_state(c) {\n    switch(c) {\n    case 0x003C: // LESS-THAN SIGN\n      commentbuf.push(c);\n      tokenizer = comment_less_than_sign_state;\n      break;\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_end_dash_state;\n      break;\n    case 0x0000: // NULL\n      commentbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      insertToken(COMMENT, buf2str(commentbuf));\n      emitEOF();\n      break; /* see comment in comment end state */\n    default:\n      commentbuf.push(c);\n      break;\n    }\n  }\n\n  function comment_less_than_sign_state(c) {\n    switch(c) {\n    case 0x0021: // EXCLAMATION MARK\n      commentbuf.push(c);\n      tokenizer = comment_less_than_sign_bang_state;\n      break;\n    case 0x003C: // LESS-THAN SIGN\n      commentbuf.push(c);\n      break;\n    default:\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_less_than_sign_bang_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_less_than_sign_bang_dash_state;\n      break;\n    default:\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_less_than_sign_bang_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_less_than_sign_bang_dash_dash_state;\n      break;\n    default:\n      reconsume(c, comment_end_dash_state);\n      break;\n    }\n  }\n\n  function comment_less_than_sign_bang_dash_dash_state(c) {\n    switch(c) {\n    case 0x003E: // GREATER-THAN SIGN\n    case -1: // EOF\n      reconsume(c, comment_end_state);\n      break;\n    default:\n      // parse error\n      reconsume(c, comment_end_state);\n      break;\n    }\n  }\n\n  function comment_end_dash_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      tokenizer = comment_end_state;\n      break;\n    case -1: // EOF\n      insertToken(COMMENT, buf2str(commentbuf));\n      emitEOF();\n      break; /* see comment in comment end state */\n    default:\n      commentbuf.push(0x002D /* HYPHEN-MINUS */);\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_end_state(c) {\n    switch(c) {\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      insertToken(COMMENT, buf2str(commentbuf));\n      break;\n    case 0x0021: // EXCLAMATION MARK\n      tokenizer = comment_end_bang_state;\n      break;\n    case 0x002D: // HYPHEN-MINUS\n      commentbuf.push(0x002D);\n      break;\n    case -1: // EOF\n      insertToken(COMMENT, buf2str(commentbuf));\n      emitEOF();\n      break; /* For security reasons: otherwise, hostile user could put a script in a comment e.g. in a blog comment and then DOS the server so that the end tag isn't read, and then the commented script tag would be treated as live code */\n    default:\n      commentbuf.push(0x002D);\n      commentbuf.push(0x002D);\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function comment_end_bang_state(c) {\n    switch(c) {\n    case 0x002D: // HYPHEN-MINUS\n      commentbuf.push(0x002D);\n      commentbuf.push(0x002D);\n      commentbuf.push(0x0021);\n      tokenizer = comment_end_dash_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      insertToken(COMMENT, buf2str(commentbuf));\n      break;\n    case -1: // EOF\n      insertToken(COMMENT, buf2str(commentbuf));\n      emitEOF();\n      break; /* see comment in comment end state */\n    default:\n      commentbuf.push(0x002D);\n      commentbuf.push(0x002D);\n      commentbuf.push(0x0021);\n      reconsume(c, comment_state);\n      break;\n    }\n  }\n\n  function doctype_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = before_doctype_name_state;\n      break;\n    case -1: // EOF\n      beginDoctype();\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      reconsume(c, before_doctype_name_state);\n      break;\n    }\n  }\n\n  function before_doctype_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      beginDoctype();\n      doctypenamebuf.push(c + 0x0020);\n      tokenizer = doctype_name_state;\n      break;\n    case 0x0000: // NULL\n      beginDoctype();\n      doctypenamebuf.push(0xFFFD);\n      tokenizer = doctype_name_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      beginDoctype();\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      beginDoctype();\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      beginDoctype();\n      doctypenamebuf.push(c);\n      tokenizer = doctype_name_state;\n      break;\n    }\n  }\n\n  function doctype_name_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = after_doctype_name_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case 0x0041:  // [A-Z]\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\n      doctypenamebuf.push(c + 0x0020);\n      break;\n    case 0x0000: // NULL\n      doctypenamebuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      doctypenamebuf.push(c);\n      break;\n    }\n  }\n\n  function after_doctype_name_state(c, lookahead, eof) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      nextchar += 1;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      nextchar += 1;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      lookahead = lookahead.toUpperCase();\n      if (lookahead === \"PUBLIC\") {\n        nextchar += 6;\n        tokenizer = after_doctype_public_keyword_state;\n      }\n      else if (lookahead === \"SYSTEM\") {\n        nextchar += 6;\n        tokenizer = after_doctype_system_keyword_state;\n      }\n      else {\n        forcequirks();\n        tokenizer = bogus_doctype_state;\n      }\n      break;\n    }\n  }\n  after_doctype_name_state.lookahead = 6;\n\n  function after_doctype_public_keyword_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = before_doctype_public_identifier_state;\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypePublicId();\n      tokenizer = doctype_public_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypePublicId();\n      tokenizer = doctype_public_identifier_single_quoted_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function before_doctype_public_identifier_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypePublicId();\n      tokenizer = doctype_public_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypePublicId();\n      tokenizer = doctype_public_identifier_single_quoted_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function doctype_public_identifier_double_quoted_state(c) {\n    switch(c) {\n    case 0x0022: // QUOTATION MARK\n      tokenizer = after_doctype_public_identifier_state;\n      break;\n    case 0x0000: // NULL\n      doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      doctypepublicbuf.push(c);\n      break;\n    }\n  }\n\n  function doctype_public_identifier_single_quoted_state(c) {\n    switch(c) {\n    case 0x0027: // APOSTROPHE\n      tokenizer = after_doctype_public_identifier_state;\n      break;\n    case 0x0000: // NULL\n      doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      doctypepublicbuf.push(c);\n      break;\n    }\n  }\n\n  function after_doctype_public_identifier_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = between_doctype_public_and_system_identifiers_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_single_quoted_state;\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function between_doctype_public_and_system_identifiers_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE Ignore the character.\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_single_quoted_state;\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function after_doctype_system_keyword_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      tokenizer = before_doctype_system_identifier_state;\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_single_quoted_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function before_doctype_system_identifier_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE Ignore the character.\n      break;\n    case 0x0022: // QUOTATION MARK\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_double_quoted_state;\n      break;\n    case 0x0027: // APOSTROPHE\n      beginDoctypeSystemId();\n      tokenizer = doctype_system_identifier_single_quoted_state;\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      forcequirks();\n      tokenizer = bogus_doctype_state;\n      break;\n    }\n  }\n\n  function doctype_system_identifier_double_quoted_state(c) {\n    switch(c) {\n    case 0x0022: // QUOTATION MARK\n      tokenizer = after_doctype_system_identifier_state;\n      break;\n    case 0x0000: // NULL\n      doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      doctypesystembuf.push(c);\n      break;\n    }\n  }\n\n  function doctype_system_identifier_single_quoted_state(c) {\n    switch(c) {\n    case 0x0027: // APOSTROPHE\n      tokenizer = after_doctype_system_identifier_state;\n      break;\n    case 0x0000: // NULL\n      doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      forcequirks();\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      doctypesystembuf.push(c);\n      break;\n    }\n  }\n\n  function after_doctype_system_identifier_state(c) {\n    switch(c) {\n    case 0x0009: // CHARACTER TABULATION (tab)\n    case 0x000A: // LINE FEED (LF)\n    case 0x000C: // FORM FEED (FF)\n    case 0x0020: // SPACE\n      /* Ignore the character. */\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      forcequirks();\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      tokenizer = bogus_doctype_state;\n      /* This does *not* set the DOCTYPE token's force-quirks flag. */\n      break;\n    }\n  }\n\n  function bogus_doctype_state(c) {\n    switch(c) {\n    case 0x003E: // GREATER-THAN SIGN\n      tokenizer = data_state;\n      emitDoctype();\n      break;\n    case -1: // EOF\n      emitDoctype();\n      emitEOF();\n      break;\n    default:\n      /* Ignore the character. */\n      break;\n    }\n  }\n\n  function cdata_section_state(c) {\n    switch(c) {\n    case 0x005D: // RIGHT SQUARE BRACKET\n      tokenizer = cdata_section_bracket_state;\n      break;\n    case -1: // EOF\n      emitEOF();\n      break;\n    case 0x0000: // NULL\n      textIncludesNUL = true;\n      /* fall through */\n    default:\n      // Instead of just pushing a single character and then\n      // coming back to the very same place, lookahead and\n      // emit everything we can at once.\n      /*jshint -W030 */\n      emitCharsWhile(CDATATEXT) || textrun.push(c);\n      break;\n    }\n  }\n\n  function cdata_section_bracket_state(c) {\n    switch(c) {\n    case 0x005D: // RIGHT SQUARE BRACKET\n      tokenizer = cdata_section_end_state;\n      break;\n    default:\n      textrun.push(0x005D);\n      reconsume(c, cdata_section_state);\n      break;\n    }\n  }\n\n  function cdata_section_end_state(c) {\n    switch(c) {\n    case 0x005D: // RIGHT SQUARE BRACKET\n      textrun.push(0x005D);\n      break;\n    case 0x003E: // GREATER-THAN SIGN\n      flushText();\n      tokenizer = data_state;\n      break;\n    default:\n      textrun.push(0x005D);\n      textrun.push(0x005D);\n      reconsume(c, cdata_section_state);\n      break;\n    }\n  }\n\n  function character_reference_state(c) {\n    beginTempBuf();\n    tempbuf.push(0x0026);\n    switch(c) {\n    case 0x0009: // TAB\n    case 0x000A: // LINE FEED\n    case 0x000C: // FORM FEED\n    case 0x0020: // SPACE\n    case 0x003C: // LESS-THAN SIGN\n    case 0x0026: // AMPERSAND\n    case -1: // EOF\n      reconsume(c, character_reference_end_state);\n      break;\n    case 0x0023: // NUMBER SIGN\n      tempbuf.push(c);\n      tokenizer = numeric_character_reference_state;\n      break;\n    default:\n      reconsume(c, named_character_reference_state);\n      break;\n    }\n  }\n\n  function named_character_reference_state(c) {\n    NAMEDCHARREF.lastIndex = nextchar; // w/ lookahead no char has been consumed\n    var matched = NAMEDCHARREF.exec(chars);\n    if (!matched) throw new Error(\"should never happen\");\n    var name = matched[1];\n    if (!name) {\n      // If no match can be made, switch to the character reference end state\n      tokenizer = character_reference_end_state;\n      return;\n    }\n\n    // Consume the matched characters and append them to temporary buffer\n    nextchar += name.length;\n    pushAll(tempbuf, str2buf(name));\n\n    switch(return_state) {\n    case attribute_value_double_quoted_state:\n    case attribute_value_single_quoted_state:\n    case attribute_value_unquoted_state:\n      // If the character reference was consumed as part of an attribute...\n      if (name[name.length-1] !== ';') { // ...and the last char is not ;\n        if (/[=A-Za-z0-9]/.test(chars[nextchar])) {\n          tokenizer = character_reference_end_state;\n          return;\n        }\n      }\n      break;\n    default:\n      break;\n    }\n\n    beginTempBuf();\n    var rv = namedCharRefs[name];\n    if (typeof rv === 'number') {\n      tempbuf.push(rv);\n    } else {\n      pushAll(tempbuf, rv);\n    }\n    tokenizer = character_reference_end_state;\n  }\n  // We might need to pause tokenization until we have enough characters\n  // in the buffer for longest possible character reference.\n  named_character_reference_state.lookahead = -NAMEDCHARREF_MAXLEN;\n\n  function numeric_character_reference_state(c) {\n    character_reference_code = 0;\n    switch(c) {\n    case 0x0078: // x\n    case 0x0058: // X\n      tempbuf.push(c);\n      tokenizer = hexadecimal_character_reference_start_state;\n      break;\n    default:\n      reconsume(c, decimal_character_reference_start_state);\n      break;\n    }\n  }\n\n  function hexadecimal_character_reference_start_state(c) {\n    switch(c) {\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n    case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045:\n    case 0x0046: // [A-F]\n    case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065:\n    case 0x0066: // [a-f]\n      reconsume(c, hexadecimal_character_reference_state);\n      break;\n    default:\n      reconsume(c, character_reference_end_state);\n      break;\n    }\n  }\n\n  function decimal_character_reference_start_state(c) {\n    switch(c) {\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n      reconsume(c, decimal_character_reference_state);\n      break;\n    default:\n      reconsume(c, character_reference_end_state);\n      break;\n    }\n  }\n\n  function hexadecimal_character_reference_state(c) {\n    switch(c) {\n    case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045:\n    case 0x0046: // [A-F]\n      character_reference_code *= 16;\n      character_reference_code += (c - 0x0037);\n      break;\n    case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065:\n    case 0x0066: // [a-f]\n      character_reference_code *= 16;\n      character_reference_code += (c - 0x0057);\n      break;\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n      character_reference_code *= 16;\n      character_reference_code += (c - 0x0030);\n      break;\n    case 0x003B: // SEMICOLON\n      tokenizer = numeric_character_reference_end_state;\n      break;\n    default:\n      reconsume(c, numeric_character_reference_end_state);\n      break;\n    }\n  }\n\n  function decimal_character_reference_state(c) {\n    switch(c) {\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\n      character_reference_code *= 10;\n      character_reference_code += (c - 0x0030);\n      break;\n    case 0x003B: // SEMICOLON\n      tokenizer = numeric_character_reference_end_state;\n      break;\n    default:\n      reconsume(c, numeric_character_reference_end_state);\n      break;\n    }\n  }\n\n  function numeric_character_reference_end_state(c) {\n    if (character_reference_code in numericCharRefReplacements) {\n      character_reference_code = numericCharRefReplacements[character_reference_code];\n    } else if (character_reference_code > 0x10FFFF || (character_reference_code >= 0xD800 && character_reference_code < 0xE000)) {\n      character_reference_code = 0xFFFD;\n    }\n\n    beginTempBuf();\n    if (character_reference_code <= 0xFFFF) {\n      tempbuf.push(character_reference_code);\n    } else {\n      character_reference_code = character_reference_code - 0x10000;\n      /* jshint bitwise: false */\n      tempbuf.push(0xD800 + (character_reference_code >> 10));\n      tempbuf.push(0xDC00 + (character_reference_code & 0x03FF));\n    }\n    reconsume(c, character_reference_end_state);\n  }\n\n  function character_reference_end_state(c) {\n    switch(return_state) {\n    case attribute_value_double_quoted_state:\n    case attribute_value_single_quoted_state:\n    case attribute_value_unquoted_state:\n      // append each character to the current attribute's value\n      attrvaluebuf += buf2str(tempbuf);\n      break;\n    default:\n      pushAll(textrun, tempbuf);\n      break;\n    }\n    reconsume(c, return_state);\n  }\n\n  /***\n   * The tree builder insertion modes\n   */\n\n  // 11.2.5.4.1 The \"initial\" insertion mode\n  function initial_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      value = value.replace(LEADINGWS, \"\"); // Ignore spaces\n      if (value.length === 0) return; // Are we done?\n      break; // Handle anything non-space text below\n    case 4: // COMMENT\n      doc._appendChild(doc.createComment(value));\n      return;\n    case 5: // DOCTYPE\n      var name = value;\n      var publicid = arg3;\n      var systemid = arg4;\n      // Use the constructor directly instead of\n      // implementation.createDocumentType because the create\n      // function throws errors on invalid characters, and\n      // we don't want the parser to throw them.\n      doc.appendChild(new DocumentType(doc, name, publicid, systemid));\n\n      // Note that there is no public API for setting quirks mode We can\n      // do this here because we have access to implementation details\n      if (force_quirks ||\n        name.toLowerCase() !== \"html\" ||\n        quirkyPublicIds.test(publicid) ||\n        (systemid && systemid.toLowerCase() === quirkySystemId) ||\n        (systemid === undefined &&\n         conditionallyQuirkyPublicIds.test(publicid)))\n        doc._quirks = true;\n      else if (limitedQuirkyPublicIds.test(publicid) ||\n           (systemid !== undefined &&\n            conditionallyQuirkyPublicIds.test(publicid)))\n        doc._limitedQuirks = true;\n      parser = before_html_mode;\n      return;\n    }\n\n    // tags or non-whitespace text\n    doc._quirks = true;\n    parser = before_html_mode;\n    parser(t,value,arg3,arg4);\n  }\n\n  // 11.2.5.4.2 The \"before html\" insertion mode\n  function before_html_mode(t,value,arg3,arg4) {\n    var elt;\n    switch(t) {\n    case 1: // TEXT\n      value = value.replace(LEADINGWS, \"\"); // Ignore spaces\n      if (value.length === 0) return; // Are we done?\n      break; // Handle anything non-space text below\n    case 5: // DOCTYPE\n      /* ignore the token */\n      return;\n    case 4: // COMMENT\n      doc._appendChild(doc.createComment(value));\n      return;\n    case 2: // TAG\n      if (value === \"html\") {\n        elt = createHTMLElt(doc, value, arg3);\n        stack.push(elt);\n        doc.appendChild(elt);\n        // XXX: handle application cache here\n        parser = before_head_mode;\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"html\":\n      case \"head\":\n      case \"body\":\n      case \"br\":\n        break;  // fall through on these\n      default:\n        return; // ignore most end tags\n      }\n    }\n\n    // Anything that didn't get handled above is handled like this:\n    elt = createHTMLElt(doc, \"html\", null);\n    stack.push(elt);\n    doc.appendChild(elt);\n    // XXX: handle application cache here\n    parser = before_head_mode;\n    parser(t,value,arg3,arg4);\n  }\n\n  // 11.2.5.4.3 The \"before head\" insertion mode\n  function before_head_mode(t,value,arg3,arg4) {\n    switch(t) {\n    case 1: // TEXT\n      value = value.replace(LEADINGWS, \"\");  // Ignore spaces\n      if (value.length === 0) return; // Are we done?\n      break;  // Handle anything non-space text below\n    case 5: // DOCTYPE\n      /* ignore the token */\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t,value,arg3,arg4);\n        return;\n      case \"head\":\n        var elt = insertHTMLElement(value, arg3);\n        head_element_pointer = elt;\n        parser = in_head_mode;\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"html\":\n      case \"head\":\n      case \"body\":\n      case \"br\":\n        break;\n      default:\n        return; // ignore most end tags\n      }\n    }\n\n    // If not handled explicitly above\n    before_head_mode(TAG, \"head\", null); // create a head tag\n    parser(t, value, arg3, arg4); // then try again with this token\n  }\n\n  function in_head_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      var ws = value.match(LEADINGWS);\n      if (ws) {\n        insertText(ws[0]);\n        value = value.substring(ws[0].length);\n      }\n      if (value.length === 0) return;\n      break; // Handle non-whitespace below\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"meta\":\n        // XXX:\n        // May need to change the encoding based on this tag\n        /* falls through */\n      case \"base\":\n      case \"basefont\":\n      case \"bgsound\":\n      case \"link\":\n        insertHTMLElement(value, arg3);\n        stack.pop();\n        return;\n      case \"title\":\n        parseRCDATA(value, arg3);\n        return;\n      case \"noscript\":\n        if (!scripting_enabled) {\n          insertHTMLElement(value, arg3);\n          parser = in_head_noscript_mode;\n          return;\n        }\n        // Otherwise, if scripting is enabled...\n        /* falls through */\n      case \"noframes\":\n      case \"style\":\n        parseRawText(value,arg3);\n        return;\n      case \"script\":\n        insertElement(function(doc) {\n          var elt = createHTMLElt(doc, value, arg3);\n          elt._parser_inserted = true;\n          elt._force_async = false;\n          if (fragment) elt._already_started = true;\n          flushText();\n          return elt;\n        });\n        tokenizer = script_data_state;\n        originalInsertionMode = parser;\n        parser = text_mode;\n        return;\n      case \"template\":\n        insertHTMLElement(value, arg3);\n        afe.insertMarker();\n        frameset_ok = false;\n        parser = in_template_mode;\n        templateInsertionModes.push(parser);\n        return;\n      case \"head\":\n        return; // ignore it\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"head\":\n        stack.pop();\n        parser = after_head_mode;\n        return;\n      case \"body\":\n      case \"html\":\n      case \"br\":\n        break; // handle these at the bottom of the function\n      case \"template\":\n        if (!stack.contains(\"template\")) {\n          return;\n        }\n        stack.generateImpliedEndTags(null, \"thorough\");\n        stack.popTag(\"template\");\n        afe.clearToMarker();\n        templateInsertionModes.pop();\n        resetInsertionMode();\n        return;\n      default:\n        // ignore any other end tag\n        return;\n      }\n      break;\n    }\n\n    // If not handled above\n    in_head_mode(ENDTAG, \"head\", null);   // synthetic </head>\n    parser(t, value, arg3, arg4);   // Then redo this one\n  }\n\n  // 13.2.5.4.5 The \"in head noscript\" insertion mode\n  function in_head_noscript_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 5: // DOCTYPE\n      return;\n    case 4: // COMMENT\n      in_head_mode(t, value);\n      return;\n    case 1: // TEXT\n      var ws = value.match(LEADINGWS);\n      if (ws) {\n        in_head_mode(t, ws[0]);\n        value = value.substring(ws[0].length);\n      }\n      if (value.length === 0) return; // no more text\n      break; // Handle non-whitespace below\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"basefont\":\n      case \"bgsound\":\n      case \"link\":\n      case \"meta\":\n      case \"noframes\":\n      case \"style\":\n        in_head_mode(t, value, arg3);\n        return;\n      case \"head\":\n      case \"noscript\":\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"noscript\":\n        stack.pop();\n        parser = in_head_mode;\n        return;\n      case \"br\":\n        break;  // goes to the outer default\n      default:\n        return; // ignore other end tags\n      }\n      break;\n    }\n\n    // If not handled above\n    in_head_noscript_mode(ENDTAG, \"noscript\", null);\n    parser(t, value, arg3, arg4);\n  }\n\n  function after_head_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      var ws = value.match(LEADINGWS);\n      if (ws) {\n        insertText(ws[0]);\n        value = value.substring(ws[0].length);\n      }\n      if (value.length === 0) return;\n      break; // Handle non-whitespace below\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"body\":\n        insertHTMLElement(value, arg3);\n        frameset_ok = false;\n        parser = in_body_mode;\n        return;\n      case \"frameset\":\n        insertHTMLElement(value, arg3);\n        parser = in_frameset_mode;\n        return;\n      case \"base\":\n      case \"basefont\":\n      case \"bgsound\":\n      case \"link\":\n      case \"meta\":\n      case \"noframes\":\n      case \"script\":\n      case \"style\":\n      case \"template\":\n      case \"title\":\n        stack.push(head_element_pointer);\n        in_head_mode(TAG, value, arg3);\n        stack.removeElement(head_element_pointer);\n        return;\n      case \"head\":\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"template\":\n        return in_head_mode(t, value, arg3, arg4);\n      case \"body\":\n      case \"html\":\n      case \"br\":\n        break;\n      default:\n        return;  // ignore any other end tag\n      }\n      break;\n    }\n\n    after_head_mode(TAG, \"body\", null);\n    frameset_ok = true;\n    parser(t, value, arg3, arg4);\n  }\n\n  // 13.2.5.4.7 The \"in body\" insertion mode\n  function in_body_mode(t,value,arg3,arg4) {\n    var body, i, node, elt;\n    switch(t) {\n    case 1: // TEXT\n      if (textIncludesNUL) {\n        value = value.replace(NULCHARS, \"\");\n        if (value.length === 0) return;\n      }\n      // If any non-space characters\n      if (frameset_ok && NONWS.test(value))\n        frameset_ok = false;\n      afereconstruct();\n      insertText(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case -1: // EOF\n      if (templateInsertionModes.length) {\n        return in_template_mode(t);\n      }\n      stopParsing();\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        if (stack.contains(\"template\")) {\n          return;\n        }\n        transferAttributes(arg3, stack.elements[0]);\n        return;\n      case \"base\":\n      case \"basefont\":\n      case \"bgsound\":\n      case \"link\":\n      case \"meta\":\n      case \"noframes\":\n      case \"script\":\n      case \"style\":\n      case \"template\":\n      case \"title\":\n        in_head_mode(TAG, value, arg3);\n        return;\n      case \"body\":\n        body = stack.elements[1];\n        if (!body || !(body instanceof impl.HTMLBodyElement) ||\n            stack.contains(\"template\"))\n          return;\n        frameset_ok = false;\n        transferAttributes(arg3, body);\n        return;\n      case \"frameset\":\n        if (!frameset_ok) return;\n        body = stack.elements[1];\n        if (!body || !(body instanceof impl.HTMLBodyElement))\n          return;\n        if (body.parentNode) body.parentNode.removeChild(body);\n        while(!(stack.top instanceof impl.HTMLHtmlElement))\n          stack.pop();\n        insertHTMLElement(value, arg3);\n        parser = in_frameset_mode;\n        return;\n\n      case \"address\":\n      case \"article\":\n      case \"aside\":\n      case \"blockquote\":\n      case \"center\":\n      case \"details\":\n      case \"dialog\":\n      case \"dir\":\n      case \"div\":\n      case \"dl\":\n      case \"fieldset\":\n      case \"figcaption\":\n      case \"figure\":\n      case \"footer\":\n      case \"header\":\n      case \"hgroup\":\n      case \"main\":\n      case \"nav\":\n      case \"ol\":\n      case \"p\":\n      case \"section\":\n      case \"summary\":\n      case \"ul\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"menu\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        if (isA(stack.top, 'menuitem')) {\n          stack.pop();\n        }\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"h1\":\n      case \"h2\":\n      case \"h3\":\n      case \"h4\":\n      case \"h5\":\n      case \"h6\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        if (stack.top instanceof impl.HTMLHeadingElement)\n          stack.pop();\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"pre\":\n      case \"listing\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        insertHTMLElement(value, arg3);\n        ignore_linefeed = true;\n        frameset_ok = false;\n        return;\n\n      case \"form\":\n        if (form_element_pointer && !stack.contains(\"template\")) return;\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        elt = insertHTMLElement(value, arg3);\n        if (!stack.contains(\"template\"))\n          form_element_pointer = elt;\n        return;\n\n      case \"li\":\n        frameset_ok = false;\n        for(i = stack.elements.length-1; i >= 0; i--) {\n          node = stack.elements[i];\n          if (node instanceof impl.HTMLLIElement) {\n            in_body_mode(ENDTAG, \"li\");\n            break;\n          }\n          if (isA(node, specialSet) && !isA(node, addressdivpSet))\n            break;\n        }\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"dd\":\n      case \"dt\":\n        frameset_ok = false;\n        for(i = stack.elements.length-1; i >= 0; i--) {\n          node = stack.elements[i];\n          if (isA(node, dddtSet)) {\n            in_body_mode(ENDTAG, node.localName);\n            break;\n          }\n          if (isA(node, specialSet) && !isA(node, addressdivpSet))\n            break;\n        }\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"plaintext\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        insertHTMLElement(value, arg3);\n        tokenizer = plaintext_state;\n        return;\n\n      case \"button\":\n        if (stack.inScope(\"button\")) {\n          in_body_mode(ENDTAG, \"button\");\n          parser(t, value, arg3, arg4);\n        }\n        else {\n          afereconstruct();\n          insertHTMLElement(value, arg3);\n          frameset_ok = false;\n        }\n        return;\n\n      case \"a\":\n        var activeElement = afe.findElementByTag(\"a\");\n        if (activeElement) {\n          in_body_mode(ENDTAG, value);\n          afe.remove(activeElement);\n          stack.removeElement(activeElement);\n        }\n        /* falls through */\n      case \"b\":\n      case \"big\":\n      case \"code\":\n      case \"em\":\n      case \"font\":\n      case \"i\":\n      case \"s\":\n      case \"small\":\n      case \"strike\":\n      case \"strong\":\n      case \"tt\":\n      case \"u\":\n        afereconstruct();\n        afe.push(insertHTMLElement(value,arg3), arg3);\n        return;\n\n      case \"nobr\":\n        afereconstruct();\n\n        if (stack.inScope(value)) {\n          in_body_mode(ENDTAG, value);\n          afereconstruct();\n        }\n        afe.push(insertHTMLElement(value,arg3), arg3);\n        return;\n\n      case \"applet\":\n      case \"marquee\":\n      case \"object\":\n        afereconstruct();\n        insertHTMLElement(value,arg3);\n        afe.insertMarker();\n        frameset_ok = false;\n        return;\n\n      case \"table\":\n        if (!doc._quirks && stack.inButtonScope(\"p\")) {\n          in_body_mode(ENDTAG, \"p\");\n        }\n        insertHTMLElement(value,arg3);\n        frameset_ok = false;\n        parser = in_table_mode;\n        return;\n\n      case \"area\":\n      case \"br\":\n      case \"embed\":\n      case \"img\":\n      case \"keygen\":\n      case \"wbr\":\n        afereconstruct();\n        insertHTMLElement(value,arg3);\n        stack.pop();\n        frameset_ok = false;\n        return;\n\n      case \"input\":\n        afereconstruct();\n        elt = insertHTMLElement(value,arg3);\n        stack.pop();\n        var type = elt.getAttribute(\"type\");\n        if (!type || type.toLowerCase() !== \"hidden\")\n          frameset_ok = false;\n        return;\n\n      case \"param\":\n      case \"source\":\n      case \"track\":\n        insertHTMLElement(value,arg3);\n        stack.pop();\n        return;\n\n      case \"hr\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        if (isA(stack.top, 'menuitem')) {\n          stack.pop();\n        }\n        insertHTMLElement(value,arg3);\n        stack.pop();\n        frameset_ok = false;\n        return;\n\n      case \"image\":\n        in_body_mode(TAG, \"img\", arg3, arg4);\n        return;\n\n      case \"textarea\":\n        insertHTMLElement(value,arg3);\n        ignore_linefeed = true;\n        frameset_ok = false;\n        tokenizer = rcdata_state;\n        originalInsertionMode = parser;\n        parser = text_mode;\n        return;\n\n      case \"xmp\":\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\n        afereconstruct();\n        frameset_ok = false;\n        parseRawText(value, arg3);\n        return;\n\n      case \"iframe\":\n        frameset_ok = false;\n        parseRawText(value, arg3);\n        return;\n\n      case \"noembed\":\n        parseRawText(value,arg3);\n        return;\n\n      case \"select\":\n        afereconstruct();\n        insertHTMLElement(value,arg3);\n        frameset_ok = false;\n        if (parser === in_table_mode ||\n          parser === in_caption_mode ||\n          parser === in_table_body_mode ||\n          parser === in_row_mode ||\n          parser === in_cell_mode)\n          parser = in_select_in_table_mode;\n        else\n          parser = in_select_mode;\n        return;\n\n      case \"optgroup\":\n      case \"option\":\n        if (stack.top instanceof impl.HTMLOptionElement) {\n          in_body_mode(ENDTAG, \"option\");\n        }\n        afereconstruct();\n        insertHTMLElement(value,arg3);\n        return;\n\n      case \"menuitem\":\n        if (isA(stack.top, 'menuitem')) {\n          stack.pop();\n        }\n        afereconstruct();\n        insertHTMLElement(value, arg3);\n        return;\n\n      case \"rb\":\n      case \"rtc\":\n        if (stack.inScope(\"ruby\")) {\n          stack.generateImpliedEndTags();\n        }\n        insertHTMLElement(value,arg3);\n        return;\n\n      case \"rp\":\n      case \"rt\":\n        if (stack.inScope(\"ruby\")) {\n          stack.generateImpliedEndTags(\"rtc\");\n        }\n        insertHTMLElement(value,arg3);\n        return;\n\n      case \"math\":\n        afereconstruct();\n        adjustMathMLAttributes(arg3);\n        adjustForeignAttributes(arg3);\n        insertForeignElement(value, arg3, NAMESPACE.MATHML);\n        if (arg4) // self-closing flag\n          stack.pop();\n        return;\n\n      case \"svg\":\n        afereconstruct();\n        adjustSVGAttributes(arg3);\n        adjustForeignAttributes(arg3);\n        insertForeignElement(value, arg3, NAMESPACE.SVG);\n        if (arg4) // self-closing flag\n          stack.pop();\n        return;\n\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"frame\":\n      case \"head\":\n      case \"tbody\":\n      case \"td\":\n      case \"tfoot\":\n      case \"th\":\n      case \"thead\":\n      case \"tr\":\n        // Ignore table tags if we're not in_table mode\n        return;\n      }\n\n      // Handle any other start tag here\n      // (and also noscript tags when scripting is disabled)\n      afereconstruct();\n      insertHTMLElement(value,arg3);\n      return;\n\n    case 3: // ENDTAG\n      switch(value) {\n      case \"template\":\n        in_head_mode(ENDTAG, value, arg3);\n        return;\n      case \"body\":\n        if (!stack.inScope(\"body\")) return;\n        parser = after_body_mode;\n        return;\n      case \"html\":\n        if (!stack.inScope(\"body\")) return;\n        parser = after_body_mode;\n        parser(t, value, arg3);\n        return;\n\n      case \"address\":\n      case \"article\":\n      case \"aside\":\n      case \"blockquote\":\n      case \"button\":\n      case \"center\":\n      case \"details\":\n      case \"dialog\":\n      case \"dir\":\n      case \"div\":\n      case \"dl\":\n      case \"fieldset\":\n      case \"figcaption\":\n      case \"figure\":\n      case \"footer\":\n      case \"header\":\n      case \"hgroup\":\n      case \"listing\":\n      case \"main\":\n      case \"menu\":\n      case \"nav\":\n      case \"ol\":\n      case \"pre\":\n      case \"section\":\n      case \"summary\":\n      case \"ul\":\n        // Ignore if there is not a matching open tag\n        if (!stack.inScope(value)) return;\n        stack.generateImpliedEndTags();\n        stack.popTag(value);\n        return;\n\n      case \"form\":\n        if (!stack.contains(\"template\")) {\n          var openform = form_element_pointer;\n          form_element_pointer = null;\n          if (!openform || !stack.elementInScope(openform)) return;\n          stack.generateImpliedEndTags();\n          stack.removeElement(openform);\n        } else {\n          if (!stack.inScope(\"form\")) return;\n          stack.generateImpliedEndTags();\n          stack.popTag(\"form\");\n        }\n        return;\n\n      case \"p\":\n        if (!stack.inButtonScope(value)) {\n          in_body_mode(TAG, value, null);\n          parser(t, value, arg3, arg4);\n        }\n        else {\n          stack.generateImpliedEndTags(value);\n          stack.popTag(value);\n        }\n        return;\n\n      case \"li\":\n        if (!stack.inListItemScope(value)) return;\n        stack.generateImpliedEndTags(value);\n        stack.popTag(value);\n        return;\n\n      case \"dd\":\n      case \"dt\":\n        if (!stack.inScope(value)) return;\n        stack.generateImpliedEndTags(value);\n        stack.popTag(value);\n        return;\n\n      case \"h1\":\n      case \"h2\":\n      case \"h3\":\n      case \"h4\":\n      case \"h5\":\n      case \"h6\":\n        if (!stack.elementTypeInScope(impl.HTMLHeadingElement)) return;\n        stack.generateImpliedEndTags();\n        stack.popElementType(impl.HTMLHeadingElement);\n        return;\n\n      case \"sarcasm\":\n        // Take a deep breath, and then:\n        break;\n\n      case \"a\":\n      case \"b\":\n      case \"big\":\n      case \"code\":\n      case \"em\":\n      case \"font\":\n      case \"i\":\n      case \"nobr\":\n      case \"s\":\n      case \"small\":\n      case \"strike\":\n      case \"strong\":\n      case \"tt\":\n      case \"u\":\n        var result = adoptionAgency(value);\n        if (result) return;  // If we did something we're done\n        break;         // Go to the \"any other end tag\" case\n\n      case \"applet\":\n      case \"marquee\":\n      case \"object\":\n        if (!stack.inScope(value)) return;\n        stack.generateImpliedEndTags();\n        stack.popTag(value);\n        afe.clearToMarker();\n        return;\n\n      case \"br\":\n        in_body_mode(TAG, value, null);  // Turn </br> into <br>\n        return;\n      }\n\n      // Any other end tag goes here\n      for(i = stack.elements.length-1; i >= 0; i--) {\n        node = stack.elements[i];\n        if (isA(node, value)) {\n          stack.generateImpliedEndTags(value);\n          stack.popElement(node);\n          break;\n        }\n        else if (isA(node, specialSet)) {\n          return;\n        }\n      }\n\n      return;\n    }\n  }\n\n  function text_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      insertText(value);\n      return;\n    case -1: // EOF\n      if (stack.top instanceof impl.HTMLScriptElement)\n        stack.top._already_started = true;\n      stack.pop();\n      parser = originalInsertionMode;\n      parser(t);\n      return;\n    case 3: // ENDTAG\n      if (value === \"script\") {\n        handleScriptEnd();\n      }\n      else {\n        stack.pop();\n        parser = originalInsertionMode;\n      }\n      return;\n    default:\n      // We should never get any other token types\n      return;\n    }\n  }\n\n  function in_table_mode(t, value, arg3, arg4) {\n    function getTypeAttr(attrs) {\n      for(var i = 0, n = attrs.length; i < n; i++) {\n        if (attrs[i][0] === \"type\")\n          return attrs[i][1].toLowerCase();\n      }\n      return null;\n    }\n\n    switch(t) {\n    case 1: // TEXT\n      // XXX the text_integration_mode stuff is\n      // just a hack I made up\n      if (text_integration_mode) {\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      }\n      else if (isA(stack.top, tablesectionrowSet)) {\n        pending_table_text = [];\n        originalInsertionMode = parser;\n        parser = in_table_text_mode;\n        parser(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"caption\":\n        stack.clearToContext(tableContextSet);\n        afe.insertMarker();\n        insertHTMLElement(value,arg3);\n        parser = in_caption_mode;\n        return;\n      case \"colgroup\":\n        stack.clearToContext(tableContextSet);\n        insertHTMLElement(value,arg3);\n        parser = in_column_group_mode;\n        return;\n      case \"col\":\n        in_table_mode(TAG, \"colgroup\", null);\n        parser(t, value, arg3, arg4);\n        return;\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n        stack.clearToContext(tableContextSet);\n        insertHTMLElement(value,arg3);\n        parser = in_table_body_mode;\n        return;\n      case \"td\":\n      case \"th\":\n      case \"tr\":\n        in_table_mode(TAG, \"tbody\", null);\n        parser(t, value, arg3, arg4);\n        return;\n\n      case \"table\":\n        if (!stack.inTableScope(value)) {\n          return; // Ignore the token\n        }\n        in_table_mode(ENDTAG, value);\n        parser(t, value, arg3, arg4);\n        return;\n\n      case \"style\":\n      case \"script\":\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n\n      case \"input\":\n        var type = getTypeAttr(arg3);\n        if (type !== \"hidden\") break;  // to the anything else case\n        insertHTMLElement(value,arg3);\n        stack.pop();\n        return;\n\n      case \"form\":\n        if (form_element_pointer || stack.contains(\"template\")) return;\n        form_element_pointer = insertHTMLElement(value, arg3);\n        stack.popElement(form_element_pointer);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"table\":\n        if (!stack.inTableScope(value)) return;\n        stack.popTag(value);\n        resetInsertionMode();\n        return;\n      case \"body\":\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"html\":\n      case \"tbody\":\n      case \"td\":\n      case \"tfoot\":\n      case \"th\":\n      case \"thead\":\n      case \"tr\":\n        return;\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n\n      break;\n    case -1: // EOF\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    }\n\n    // This is the anything else case\n    foster_parent_mode = true;\n    in_body_mode(t, value, arg3, arg4);\n    foster_parent_mode = false;\n  }\n\n  function in_table_text_mode(t, value, arg3, arg4) {\n    if (t === TEXT) {\n      if (textIncludesNUL) {\n        value = value.replace(NULCHARS, \"\");\n        if (value.length === 0) return;\n      }\n      pending_table_text.push(value);\n    }\n    else {\n      var s = pending_table_text.join(\"\");\n      pending_table_text.length = 0;\n      if (NONWS.test(s)) { // If any non-whitespace characters\n        // This must be the same code as the \"anything else\"\n        // case of the in_table mode above.\n        foster_parent_mode = true;\n        in_body_mode(TEXT, s);\n        foster_parent_mode = false;\n      }\n      else {\n        insertText(s);\n      }\n      parser = originalInsertionMode;\n      parser(t, value, arg3, arg4);\n    }\n  }\n\n\n  function in_caption_mode(t, value, arg3, arg4) {\n    function end_caption() {\n      if (!stack.inTableScope(\"caption\")) return false;\n      stack.generateImpliedEndTags();\n      stack.popTag(\"caption\");\n      afe.clearToMarker();\n      parser = in_table_mode;\n      return true;\n    }\n\n    switch(t) {\n    case 2: // TAG\n      switch(value) {\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"tbody\":\n      case \"td\":\n      case \"tfoot\":\n      case \"th\":\n      case \"thead\":\n      case \"tr\":\n        if (end_caption()) parser(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"caption\":\n        end_caption();\n        return;\n      case \"table\":\n        if (end_caption()) parser(t, value, arg3, arg4);\n        return;\n      case \"body\":\n      case \"col\":\n      case \"colgroup\":\n      case \"html\":\n      case \"tbody\":\n      case \"td\":\n      case \"tfoot\":\n      case \"th\":\n      case \"thead\":\n      case \"tr\":\n        return;\n      }\n      break;\n    }\n\n    // The Anything Else case\n    in_body_mode(t, value, arg3, arg4);\n  }\n\n  function in_column_group_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      var ws = value.match(LEADINGWS);\n      if (ws) {\n        insertText(ws[0]);\n        value = value.substring(ws[0].length);\n      }\n      if (value.length === 0) return;\n      break; // Handle non-whitespace below\n\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"col\":\n        insertHTMLElement(value, arg3);\n        stack.pop();\n        return;\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"colgroup\":\n        if (!isA(stack.top, 'colgroup')) {\n          return; // Ignore the token.\n        }\n        stack.pop();\n        parser = in_table_mode;\n        return;\n      case \"col\":\n        return;\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case -1: // EOF\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    }\n\n    // Anything else\n    if (!isA(stack.top, 'colgroup')) {\n      return; // Ignore the token.\n    }\n    in_column_group_mode(ENDTAG, \"colgroup\");\n    parser(t, value, arg3, arg4);\n  }\n\n  function in_table_body_mode(t, value, arg3, arg4) {\n    function endsect() {\n      if (!stack.inTableScope(\"tbody\") &&\n        !stack.inTableScope(\"thead\") &&\n        !stack.inTableScope(\"tfoot\"))\n        return;\n      stack.clearToContext(tableBodyContextSet);\n      in_table_body_mode(ENDTAG, stack.top.localName, null);\n      parser(t, value, arg3, arg4);\n    }\n\n    switch(t) {\n    case 2: // TAG\n      switch(value) {\n      case \"tr\":\n        stack.clearToContext(tableBodyContextSet);\n        insertHTMLElement(value, arg3);\n        parser = in_row_mode;\n        return;\n      case \"th\":\n      case \"td\":\n        in_table_body_mode(TAG, \"tr\", null);\n        parser(t, value, arg3, arg4);\n        return;\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n        endsect();\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"table\":\n        endsect();\n        return;\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n        if (stack.inTableScope(value)) {\n          stack.clearToContext(tableBodyContextSet);\n          stack.pop();\n          parser = in_table_mode;\n        }\n        return;\n      case \"body\":\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"html\":\n      case \"td\":\n      case \"th\":\n      case \"tr\":\n        return;\n      }\n      break;\n    }\n\n    // Anything else:\n    in_table_mode(t, value, arg3, arg4);\n  }\n\n  function in_row_mode(t, value, arg3, arg4) {\n    function endrow() {\n      if (!stack.inTableScope(\"tr\")) return false;\n      stack.clearToContext(tableRowContextSet);\n      stack.pop();\n      parser = in_table_body_mode;\n      return true;\n    }\n\n    switch(t) {\n    case 2: // TAG\n      switch(value) {\n      case \"th\":\n      case \"td\":\n        stack.clearToContext(tableRowContextSet);\n        insertHTMLElement(value, arg3);\n        parser = in_cell_mode;\n        afe.insertMarker();\n        return;\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n      case \"tr\":\n        if (endrow()) parser(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"tr\":\n        endrow();\n        return;\n      case \"table\":\n        if (endrow()) parser(t, value, arg3, arg4);\n        return;\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n        if (stack.inTableScope(value)) {\n          if (endrow()) parser(t, value, arg3, arg4);\n        }\n        return;\n      case \"body\":\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"html\":\n      case \"td\":\n      case \"th\":\n        return;\n      }\n      break;\n    }\n\n    // anything else\n    in_table_mode(t, value, arg3, arg4);\n  }\n\n  function in_cell_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 2: // TAG\n      switch(value) {\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"tbody\":\n      case \"td\":\n      case \"tfoot\":\n      case \"th\":\n      case \"thead\":\n      case \"tr\":\n        if (stack.inTableScope(\"td\")) {\n          in_cell_mode(ENDTAG, \"td\");\n          parser(t, value, arg3, arg4);\n        }\n        else if (stack.inTableScope(\"th\")) {\n          in_cell_mode(ENDTAG, \"th\");\n          parser(t, value, arg3, arg4);\n        }\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"td\":\n      case \"th\":\n        if (!stack.inTableScope(value)) return;\n        stack.generateImpliedEndTags();\n        stack.popTag(value);\n        afe.clearToMarker();\n        parser = in_row_mode;\n        return;\n\n      case \"body\":\n      case \"caption\":\n      case \"col\":\n      case \"colgroup\":\n      case \"html\":\n        return;\n\n      case \"table\":\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n      case \"tr\":\n        if (!stack.inTableScope(value)) return;\n        in_cell_mode(ENDTAG, stack.inTableScope(\"td\") ? \"td\" : \"th\");\n        parser(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    }\n\n    // anything else\n    in_body_mode(t, value, arg3, arg4);\n  }\n\n  function in_select_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      if (textIncludesNUL) {\n        value = value.replace(NULCHARS, \"\");\n        if (value.length === 0) return;\n      }\n      insertText(value);\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case -1: // EOF\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"option\":\n        if (stack.top instanceof impl.HTMLOptionElement)\n          in_select_mode(ENDTAG, value);\n        insertHTMLElement(value, arg3);\n        return;\n      case \"optgroup\":\n        if (stack.top instanceof impl.HTMLOptionElement)\n          in_select_mode(ENDTAG, \"option\");\n        if (stack.top instanceof impl.HTMLOptGroupElement)\n          in_select_mode(ENDTAG, value);\n        insertHTMLElement(value, arg3);\n        return;\n      case \"select\":\n        in_select_mode(ENDTAG, value); // treat it as a close tag\n        return;\n\n      case \"input\":\n      case \"keygen\":\n      case \"textarea\":\n        if (!stack.inSelectScope(\"select\")) return;\n        in_select_mode(ENDTAG, \"select\");\n        parser(t, value, arg3, arg4);\n        return;\n\n      case \"script\":\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"optgroup\":\n        if (stack.top instanceof impl.HTMLOptionElement &&\n          stack.elements[stack.elements.length-2] instanceof\n          impl.HTMLOptGroupElement) {\n          in_select_mode(ENDTAG, \"option\");\n        }\n        if (stack.top instanceof impl.HTMLOptGroupElement)\n          stack.pop();\n\n        return;\n\n      case \"option\":\n        if (stack.top instanceof impl.HTMLOptionElement)\n          stack.pop();\n        return;\n\n      case \"select\":\n        if (!stack.inSelectScope(value)) return;\n        stack.popTag(value);\n        resetInsertionMode();\n        return;\n\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n\n      break;\n    }\n\n    // anything else: just ignore the token\n  }\n\n  function in_select_in_table_mode(t, value, arg3, arg4) {\n    switch(value) {\n    case \"caption\":\n    case \"table\":\n    case \"tbody\":\n    case \"tfoot\":\n    case \"thead\":\n    case \"tr\":\n    case \"td\":\n    case \"th\":\n      switch(t) {\n      case 2: // TAG\n        in_select_in_table_mode(ENDTAG, \"select\");\n        parser(t, value, arg3, arg4);\n        return;\n      case 3: // ENDTAG\n        if (stack.inTableScope(value)) {\n          in_select_in_table_mode(ENDTAG, \"select\");\n          parser(t, value, arg3, arg4);\n        }\n        return;\n      }\n    }\n\n    // anything else\n    in_select_mode(t, value, arg3, arg4);\n  }\n\n  function in_template_mode(t, value, arg3, arg4) {\n    function switchModeAndReprocess(mode) {\n      parser = mode;\n      templateInsertionModes[templateInsertionModes.length-1] = parser;\n      parser(t, value, arg3, arg4);\n    }\n    switch(t) {\n    case 1: // TEXT\n    case 4: // COMMENT\n    case 5: // DOCTYPE\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    case -1: // EOF\n      if (!stack.contains(\"template\")) {\n        stopParsing();\n      } else {\n        stack.popTag(\"template\");\n        afe.clearToMarker();\n        templateInsertionModes.pop();\n        resetInsertionMode();\n        parser(t, value, arg3, arg4);\n      }\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"base\":\n      case \"basefont\":\n      case \"bgsound\":\n      case \"link\":\n      case \"meta\":\n      case \"noframes\":\n      case \"script\":\n      case \"style\":\n      case \"template\":\n      case \"title\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      case \"caption\":\n      case \"colgroup\":\n      case \"tbody\":\n      case \"tfoot\":\n      case \"thead\":\n        switchModeAndReprocess(in_table_mode);\n        return;\n      case \"col\":\n        switchModeAndReprocess(in_column_group_mode);\n        return;\n      case \"tr\":\n        switchModeAndReprocess(in_table_body_mode);\n        return;\n      case \"td\":\n      case \"th\":\n        switchModeAndReprocess(in_row_mode);\n        return;\n      }\n      switchModeAndReprocess(in_body_mode);\n      return;\n    case 3: // ENDTAG\n      switch(value) {\n      case \"template\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      default:\n        return;\n      }\n    }\n  }\n\n  function after_body_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      // If any non-space chars, handle below\n      if (NONWS.test(value)) break;\n      in_body_mode(t, value);\n      return;\n    case 4: // COMMENT\n      // Append it to the <html> element\n      stack.elements[0]._appendChild(doc.createComment(value));\n      return;\n    case 5: // DOCTYPE\n      return;\n    case -1: // EOF\n      stopParsing();\n      return;\n    case 2: // TAG\n      if (value === \"html\") {\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      }\n      break; // for any other tags\n    case 3: // ENDTAG\n      if (value === \"html\") {\n        if (fragment) return;\n        parser = after_after_body_mode;\n        return;\n      }\n      break; // for any other tags\n    }\n\n    // anything else\n    parser = in_body_mode;\n    parser(t, value, arg3, arg4);\n  }\n\n  function in_frameset_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      // Ignore any non-space characters\n      value = value.replace(ALLNONWS, \"\");\n      if (value.length > 0) insertText(value);\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case -1: // EOF\n      stopParsing();\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"frameset\":\n        insertHTMLElement(value, arg3);\n        return;\n      case \"frame\":\n        insertHTMLElement(value, arg3);\n        stack.pop();\n        return;\n      case \"noframes\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      if (value === \"frameset\") {\n        if (fragment && stack.top instanceof impl.HTMLHtmlElement)\n          return;\n        stack.pop();\n        if (!fragment &&\n          !(stack.top instanceof impl.HTMLFrameSetElement))\n          parser = after_frameset_mode;\n        return;\n      }\n      break;\n    }\n\n    // ignore anything else\n  }\n\n  function after_frameset_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      // Ignore any non-space characters\n      value = value.replace(ALLNONWS, \"\");\n      if (value.length > 0) insertText(value);\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      return;\n    case -1: // EOF\n      stopParsing();\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"noframes\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    case 3: // ENDTAG\n      if (value === \"html\") {\n        parser = after_after_frameset_mode;\n        return;\n      }\n      break;\n    }\n\n    // ignore anything else\n  }\n\n  function after_after_body_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      // If any non-space chars, handle below\n      if (NONWS.test(value)) break;\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    case 4: // COMMENT\n      doc._appendChild(doc.createComment(value));\n      return;\n    case 5: // DOCTYPE\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    case -1: // EOF\n      stopParsing();\n      return;\n    case 2: // TAG\n      if (value === \"html\") {\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    }\n\n    // anything else\n    parser = in_body_mode;\n    parser(t, value, arg3, arg4);\n  }\n\n  function after_after_frameset_mode(t, value, arg3, arg4) {\n    switch(t) {\n    case 1: // TEXT\n      // Ignore any non-space characters\n      value = value.replace(ALLNONWS, \"\");\n      if (value.length > 0)\n        in_body_mode(t, value, arg3, arg4);\n      return;\n    case 4: // COMMENT\n      doc._appendChild(doc.createComment(value));\n      return;\n    case 5: // DOCTYPE\n      in_body_mode(t, value, arg3, arg4);\n      return;\n    case -1: // EOF\n      stopParsing();\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"html\":\n        in_body_mode(t, value, arg3, arg4);\n        return;\n      case \"noframes\":\n        in_head_mode(t, value, arg3, arg4);\n        return;\n      }\n      break;\n    }\n\n    // ignore anything else\n  }\n\n\n  // 13.2.5.5 The rules for parsing tokens in foreign content\n  //\n  // This is like one of the insertion modes above, but is\n  // invoked somewhat differently when the current token is not HTML.\n  // See the insertToken() function.\n  function insertForeignToken(t, value, arg3, arg4) {\n    // A <font> tag is an HTML font tag if it has a color, font, or size\n    // attribute.  Otherwise we assume it is foreign content\n    function isHTMLFont(attrs) {\n      for(var i = 0, n = attrs.length; i < n; i++) {\n        switch(attrs[i][0]) {\n        case \"color\":\n        case \"face\":\n        case \"size\":\n          return true;\n        }\n      }\n      return false;\n    }\n\n    var current;\n\n    switch(t) {\n    case 1: // TEXT\n      // If any non-space, non-nul characters\n      if (frameset_ok && NONWSNONNUL.test(value))\n        frameset_ok = false;\n      if (textIncludesNUL) {\n        value = value.replace(NULCHARS, \"\\uFFFD\");\n      }\n      insertText(value);\n      return;\n    case 4: // COMMENT\n      insertComment(value);\n      return;\n    case 5: // DOCTYPE\n      // ignore it\n      return;\n    case 2: // TAG\n      switch(value) {\n      case \"font\":\n        if (!isHTMLFont(arg3)) break;\n        /* falls through */\n      case \"b\":\n      case \"big\":\n      case \"blockquote\":\n      case \"body\":\n      case \"br\":\n      case \"center\":\n      case \"code\":\n      case \"dd\":\n      case \"div\":\n      case \"dl\":\n      case \"dt\":\n      case \"em\":\n      case \"embed\":\n      case \"h1\":\n      case \"h2\":\n      case \"h3\":\n      case \"h4\":\n      case \"h5\":\n      case \"h6\":\n      case \"head\":\n      case \"hr\":\n      case \"i\":\n      case \"img\":\n      case \"li\":\n      case \"listing\":\n      case \"menu\":\n      case \"meta\":\n      case \"nobr\":\n      case \"ol\":\n      case \"p\":\n      case \"pre\":\n      case \"ruby\":\n      case \"s\":\n      case \"small\":\n      case \"span\":\n      case \"strong\":\n      case \"strike\":\n      case \"sub\":\n      case \"sup\":\n      case \"table\":\n      case \"tt\":\n      case \"u\":\n      case \"ul\":\n      case \"var\":\n        if (fragment) {\n          break;\n        }\n        do {\n          stack.pop();\n          current = stack.top;\n        } while(current.namespaceURI !== NAMESPACE.HTML &&\n            !isMathmlTextIntegrationPoint(current) &&\n            !isHTMLIntegrationPoint(current));\n\n        insertToken(t, value, arg3, arg4);  // reprocess\n        return;\n      }\n\n      // Any other start tag case goes here\n      current = (stack.elements.length===1 && fragment) ? fragmentContext :\n        stack.top;\n      if (current.namespaceURI === NAMESPACE.MATHML) {\n        adjustMathMLAttributes(arg3);\n      }\n      else if (current.namespaceURI === NAMESPACE.SVG) {\n        value = adjustSVGTagName(value);\n        adjustSVGAttributes(arg3);\n      }\n      adjustForeignAttributes(arg3);\n\n      insertForeignElement(value, arg3, current.namespaceURI);\n      if (arg4) { // the self-closing flag\n        if (value === 'script' && current.namespaceURI === NAMESPACE.SVG) {\n          // XXX deal with SVG scripts here\n        }\n        stack.pop();\n      }\n      return;\n\n    case 3: // ENDTAG\n      current = stack.top;\n      if (value === \"script\" &&\n        current.namespaceURI === NAMESPACE.SVG &&\n        current.localName === \"script\") {\n\n        stack.pop();\n\n        // XXX\n        // Deal with SVG scripts here\n      }\n      else {\n        // The any other end tag case\n        var i = stack.elements.length-1;\n        var node = stack.elements[i];\n        for(;;) {\n          if (node.localName.toLowerCase() === value) {\n            stack.popElement(node);\n            break;\n          }\n          node = stack.elements[--i];\n          // If non-html, keep looping\n          if (node.namespaceURI !== NAMESPACE.HTML)\n            continue;\n          // Otherwise process the end tag as html\n          parser(t, value, arg3, arg4);\n          break;\n        }\n      }\n      return;\n    }\n  }\n\n  /***\n   * Finally, this is the end of the HTMLParser() factory function.\n   * It returns the htmlparser object with the append() and end() methods.\n   */\n\n  // Sneak another method into the htmlparser object to allow us to run\n  // tokenizer tests.  This can be commented out in production code.\n  // This is a hook for testing the tokenizer. It has to be here\n  // because the tokenizer details are all hidden away within the closure.\n  // It should return an array of tokens generated while parsing the\n  // input string.\n  htmlparser.testTokenizer = function(input, initialState, lastStartTag, charbychar) {\n    var tokens = [];\n\n    switch(initialState) {\n    case \"PCDATA state\":\n      tokenizer = data_state;\n      break;\n    case \"RCDATA state\":\n      tokenizer = rcdata_state;\n      break;\n    case \"RAWTEXT state\":\n      tokenizer = rawtext_state;\n      break;\n    case \"PLAINTEXT state\":\n      tokenizer = plaintext_state;\n      break;\n    }\n\n    if (lastStartTag) {\n      lasttagname = lastStartTag;\n    }\n\n    insertToken = function(t, value, arg3, arg4) {\n      flushText();\n      switch(t) {\n      case 1: // TEXT\n        if (tokens.length > 0 &&\n          tokens[tokens.length-1][0] === \"Character\") {\n          tokens[tokens.length-1][1] += value;\n        }\n        else tokens.push([\"Character\", value]);\n        break;\n      case 4: // COMMENT\n        tokens.push([\"Comment\", value]);\n        break;\n      case 5: // DOCTYPE\n        tokens.push([\"DOCTYPE\", value,\n               arg3 === undefined ? null : arg3,\n               arg4 === undefined ? null : arg4,\n               !force_quirks]);\n        break;\n      case 2: // TAG\n        var attrs = Object.create(null);\n        for(var i = 0; i < arg3.length; i++) {\n          // XXX: does attribute order matter?\n          var a = arg3[i];\n          if (a.length === 1) {\n            attrs[a[0]] = \"\";\n          }\n          else {\n            attrs[a[0]] = a[1];\n          }\n        }\n        var token = [\"StartTag\", value, attrs];\n        if (arg4) token.push(true);\n        tokens.push(token);\n        break;\n      case 3: // ENDTAG\n        tokens.push([\"EndTag\", value]);\n        break;\n      case -1: // EOF\n        break;\n      }\n    };\n\n    if (!charbychar) {\n      this.parse(input, true);\n    }\n    else {\n      for(var i = 0; i < input.length; i++) {\n        this.parse(input[i]);\n      }\n      this.parse(\"\", true);\n    }\n    return tokens;\n  };\n\n  // Return the parser object from the HTMLParser() factory function\n  return htmlparser;\n}\n","\"use strict\";\nmodule.exports = DOMImplementation;\n\nvar Document = require('./Document');\nvar DocumentType = require('./DocumentType');\nvar HTMLParser = require('./HTMLParser');\nvar utils = require('./utils');\nvar xml = require('./xmlnames');\n\n// Each document must have its own instance of the domimplementation object\nfunction DOMImplementation(contextObject) {\n  this.contextObject = contextObject;\n}\n\n\n// Feature/version pairs that DOMImplementation.hasFeature() returns\n// true for.  It returns false for anything else.\nvar supportedFeatures = {\n  'xml': { '': true, '1.0': true, '2.0': true },   // DOM Core\n  'core': { '': true, '2.0': true },               // DOM Core\n  'html': { '': true, '1.0': true, '2.0': true} ,  // HTML\n  'xhtml': { '': true, '1.0': true, '2.0': true} , // HTML\n};\n\nDOMImplementation.prototype = {\n  hasFeature: function hasFeature(feature, version) {\n    var f = supportedFeatures[(feature || '').toLowerCase()];\n    return (f && f[version || '']) || false;\n  },\n\n  createDocumentType: function createDocumentType(qualifiedName, publicId, systemId) {\n    if (!xml.isValidQName(qualifiedName)) utils.InvalidCharacterError();\n\n    return new DocumentType(this.contextObject, qualifiedName, publicId, systemId);\n  },\n\n  createDocument: function createDocument(namespace, qualifiedName, doctype) {\n    //\n    // Note that the current DOMCore spec makes it impossible to\n    // create an HTML document with this function, even if the\n    // namespace and doctype are propertly set.  See this thread:\n    // http://lists.w3.org/Archives/Public/www-dom/2011AprJun/0132.html\n    //\n    var d = new Document(false, null);\n    var e;\n\n    if (qualifiedName)\n      e = d.createElementNS(namespace, qualifiedName);\n    else\n      e = null;\n\n    if (doctype) {\n      d.appendChild(doctype);\n    }\n\n    if (e) d.appendChild(e);\n    if (namespace === utils.NAMESPACE.HTML) {\n      d._contentType = 'application/xhtml+xml';\n    } else if (namespace === utils.NAMESPACE.SVG) {\n      d._contentType = 'image/svg+xml';\n    } else {\n      d._contentType = 'application/xml';\n    }\n\n    return d;\n  },\n\n  createHTMLDocument: function createHTMLDocument(titleText) {\n    var d = new Document(true, null);\n    d.appendChild(new DocumentType(d, 'html'));\n    var html = d.createElement('html');\n    d.appendChild(html);\n    var head = d.createElement('head');\n    html.appendChild(head);\n    if (titleText !== undefined) {\n      var title = d.createElement('title');\n      head.appendChild(title);\n      title.appendChild(d.createTextNode(titleText));\n    }\n    html.appendChild(d.createElement('body'));\n    d.modclock = 1; // Start tracking modifications\n    return d;\n  },\n\n  mozSetOutputMutationHandler: function(doc, handler) {\n    doc.mutationHandler = handler;\n  },\n\n  mozGetInputMutationHandler: function(doc) {\n    utils.nyi();\n  },\n\n  mozHTMLParser: HTMLParser,\n};\n","\"use strict\";\nvar URL = require('./URL');\nvar URLUtils = require('./URLUtils');\n\nmodule.exports = Location;\n\nfunction Location(window, href) {\n  this._window = window;\n  this._href = href;\n}\n\nLocation.prototype = Object.create(URLUtils.prototype, {\n  constructor: { value: Location },\n\n  // Special behavior when href is set\n  href: {\n    get: function() { return this._href; },\n    set: function(v) { this.assign(v); }\n  },\n\n  assign: { value: function(url) {\n    // Resolve the new url against the current one\n    // XXX:\n    // This is not actually correct. It should be resolved against\n    // the URL of the document of the script. For now, though, I only\n    // support a single window and there is only one base url.\n    // So this is good enough for now.\n    var current = new URL(this._href);\n    var newurl = current.resolve(url);\n\n    // Save the new url\n    this._href = newurl;\n\n    // Start loading the new document!\n    // XXX\n    // This is just something hacked together.\n    // The real algorithm is: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#navigate\n  }},\n\n  replace: { value: function(url) {\n    // XXX\n    // Since we aren't tracking history yet, replace is the same as assign\n    this.assign(url);\n  }},\n\n  reload: { value: function() {\n    // XXX:\n    // Actually, the spec is a lot more complicated than this\n    this.assign(this.href);\n  }},\n\n  toString: { value: function() {\n    return this.href;\n  }}\n\n});\n","\"use strict\";\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#navigatorid\nvar NavigatorID = Object.create(null, {\n  appCodeName: { value: \"Mozilla\" },\n  appName: { value: \"Netscape\" },\n  appVersion: { value: \"4.0\" },\n  platform: { value: \"\" },\n  product: { value: \"Gecko\" },\n  productSub: { value: \"20100101\" },\n  userAgent: { value: \"\" },\n  vendor: { value: \"\" },\n  vendorSub: { value: \"\" },\n  taintEnabled: { value: function() { return false; } }\n});\n\nmodule.exports = NavigatorID;\n","\"use strict\";\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#windowtimers\nvar WindowTimers = {\n  setTimeout: setTimeout,\n  clearTimeout: clearTimeout,\n  setInterval: setInterval,\n  clearInterval: clearInterval\n};\n\nmodule.exports = WindowTimers;\n","\"use strict\";\nvar utils = require('./utils');\n\nexports = module.exports = {\n  CSSStyleDeclaration: require('./CSSStyleDeclaration'),\n  CharacterData: require('./CharacterData'),\n  Comment: require('./Comment'),\n  DOMImplementation: require('./DOMImplementation'),\n  DOMTokenList: require('./DOMTokenList'),\n  Document: require('./Document'),\n  DocumentFragment: require('./DocumentFragment'),\n  DocumentType: require('./DocumentType'),\n  Element: require('./Element'),\n  HTMLParser: require('./HTMLParser'),\n  NamedNodeMap: require('./NamedNodeMap'),\n  Node: require('./Node'),\n  NodeList: require('./NodeList'),\n  NodeFilter: require('./NodeFilter'),\n  ProcessingInstruction: require('./ProcessingInstruction'),\n  Text: require('./Text'),\n  Window: require('./Window')\n};\n\nutils.merge(exports, require('./events'));\nutils.merge(exports, require('./htmlelts').elements);\nutils.merge(exports, require('./svg').elements);\n","\"use strict\";\nvar DOMImplementation = require('./DOMImplementation');\nvar EventTarget = require('./EventTarget');\nvar Location = require('./Location');\nvar utils = require('./utils');\n\nmodule.exports = Window;\n\nfunction Window(document) {\n  this.document = document || new DOMImplementation(null).createHTMLDocument(\"\");\n  this.document._scripting_enabled = true;\n  this.document.defaultView = this;\n  this.location = new Location(this, this.document._address || 'about:blank');\n}\n\nWindow.prototype = Object.create(EventTarget.prototype, {\n  console: { value: console },\n  history: { value: {\n    back: utils.nyi,\n    forward: utils.nyi,\n    go: utils.nyi\n  }},\n  navigator: { value: require(\"./NavigatorID\") },\n\n  // Self-referential properties\n  window: { get: function() { return this; }},\n  self: { get: function() { return this; }},\n  frames: { get: function() { return this; }},\n\n  // Self-referential properties for a top-level window\n  parent: { get: function() { return this; }},\n  top: { get: function() { return this; }},\n\n  // We don't support any other windows for now\n  length: { value: 0 },           // no frames\n  frameElement: { value: null },  // not part of a frame\n  opener: { value: null },        // not opened by another window\n\n  // The onload event handler.\n  // XXX: need to support a bunch of other event types, too,\n  // and have them interoperate with document.body.\n\n  onload: {\n    get: function() {\n      return this._getEventHandler(\"load\");\n    },\n    set: function(v) {\n      this._setEventHandler(\"load\", v);\n    }\n  },\n\n  // XXX This is a completely broken implementation\n  getComputedStyle: { value: function getComputedStyle(elt) {\n    return elt.style;\n  }}\n\n});\n\nutils.expose(require('./WindowTimers'), Window);\nutils.expose(require('./impl'), Window);\n","\"use strict\";\nvar DOMImplementation = require('./DOMImplementation');\nvar HTMLParser = require('./HTMLParser');\nvar Window = require('./Window');\nvar impl = require('./impl');\n\nexports.createDOMImplementation = function() {\n  return new DOMImplementation(null);\n};\n\nexports.createDocument = function(html, force) {\n  // Previous API couldn't let you pass '' as a document, and that\n  // yields a slightly different document than createHTMLDocument('')\n  // does.  The new `force` parameter lets you pass '' if you want to.\n  if (html || force) {\n    var parser = new HTMLParser();\n    parser.parse(html || '', true);\n    return parser.document();\n  }\n  return new DOMImplementation(null).createHTMLDocument(\"\");\n};\n\nexports.createIncrementalHTMLParser = function() {\n    var parser = new HTMLParser();\n    /** API for incremental parser. */\n    return {\n        /** Provide an additional chunk of text to be parsed. */\n        write: function(s) {\n          if (s.length > 0) {\n            parser.parse(s, false, function() { return true; });\n          }\n        },\n        /**\n         * Signal that we are done providing input text, optionally\n         * providing one last chunk as a parameter.\n         */\n        end: function(s) {\n          parser.parse(s || '', true, function() { return true; });\n        },\n        /**\n         * Performs a chunk of parsing work, returning at the end of\n         * the next token as soon as shouldPauseFunc() returns true.\n         * Returns true iff there is more work to do.\n         *\n         * For example:\n         * ```\n         *  var incrParser = domino.createIncrementalHTMLParser();\n         *  incrParser.end('...long html document...');\n         *  while (true) {\n         *    // Pause every 10ms\n         *    var start = Date.now();\n         *    var pauseIn10 = function() { return (Date.now() - start) >= 10; };\n         *    if (!incrParser.process(pauseIn10)) {\n         *      break;\n         *    }\n         *    ...yield to other tasks, do other housekeeping, etc...\n         *  }\n         * ```\n         */\n        process: function(shouldPauseFunc) {\n          return parser.parse('', false, shouldPauseFunc);\n        },\n        /**\n         * Returns the result of the incremental parse.  Valid after\n         * `this.end()` has been called and `this.process()` has returned\n         * false.\n         */\n        document: function() {\n          return parser.document();\n        },\n    };  \n};\n\nexports.createWindow = function(html, address) {\n  var document = exports.createDocument(html);\n  if (address !== undefined) { document._address = address; }\n  return new impl.Window(document);\n};\n\nexports.impl = impl;","import { getDefaultExportFromCjs } from \"\u0000commonjsHelpers.js\";\nimport { __require as requireLib } from \"/private/var/tmp/_bazel_kirjs/74c8d4a26a2490f770105c75403cc9a7/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/node_modules/.aspect_rules_js/@angular+domino@https+++codeload.github.com+angular+domino+tar.gz+928dffb9d9431b2cd2a73d7b940d1575f221e072/node_modules/@angular/domino/lib/index.js\";\nvar libExports = requireLib();\nexport { libExports as __moduleExports };\nexport default /*@__PURE__*/getDefaultExportFromCjs(libExports);"],"names":["require$$0","require$$1","require$$2","LinkedList","LinkedListModule","require$$3","exports","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","NodeTraversalModule","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21"],"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,22,23,24,25,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,52]}